{"version":3,"sources":["vendor/ember-cli/vendor-prefix.js","vendor/loader/loader.js","vendor/ember/ember.js","vendor/ember-fetch.js","vendor/fontawesome.js","vendor/free-solid-svg-icons.js","vendor/autoLibrary.js","vendor/configure-fontawesome-styles.js","node_modules/css-element-queries/src/ResizeSensor.js","node_modules/hammerjs/hammer.js","vendor/luckyexel/plugin.js","vendor/luckyexel/luckysheet.umd.js","vendor/luckyexel/luckyexcel.umd.js","node_modules/socketcluster-client/socketcluster-client.min.js","../src/core/Util.js","../src/core/Class.js","../src/core/Events.js","../src/geometry/Point.js","../src/geometry/Bounds.js","../src/geo/LatLngBounds.js","../src/geo/LatLng.js","../src/geo/crs/CRS.js","../src/geo/crs/CRS.Earth.js","../src/geo/projection/Projection.SphericalMercator.js","../src/geometry/Transformation.js","../src/geo/crs/CRS.EPSG3857.js","../src/layer/vector/SVG.Util.js","../src/core/Browser.js","../src/dom/DomEvent.Pointer.js","../src/dom/DomEvent.DoubleTap.js","../src/dom/DomUtil.js","../src/dom/DomEvent.js","../src/dom/PosAnimation.js","../src/map/Map.js","../src/control/Control.js","../src/control/Control.Layers.js","../src/control/Control.Zoom.js","../src/control/Control.Scale.js","../src/control/Control.Attribution.js","../src/core/Handler.js","../src/control/index.js","../src/core/index.js","../src/dom/Draggable.js","../src/geometry/PolyUtil.js","../src/geometry/LineUtil.js","../src/geo/projection/Projection.LonLat.js","../src/geo/projection/Projection.Mercator.js","../src/geo/crs/CRS.EPSG3395.js","../src/geo/crs/CRS.EPSG4326.js","../src/geo/crs/CRS.Simple.js","../src/layer/Layer.js","../src/geo/crs/index.js","../src/layer/LayerGroup.js","../src/layer/FeatureGroup.js","../src/layer/marker/Icon.js","../src/layer/marker/Icon.Default.js","../src/layer/marker/Marker.Drag.js","../src/layer/marker/Marker.js","../src/layer/vector/Path.js","../src/layer/vector/CircleMarker.js","../src/layer/vector/Circle.js","../src/layer/vector/Polyline.js","../src/layer/vector/Polygon.js","../src/layer/GeoJSON.js","../src/layer/ImageOverlay.js","../src/layer/VideoOverlay.js","../src/layer/SVGOverlay.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/DivIcon.js","../src/layer/marker/index.js","../src/layer/tile/GridLayer.js","../src/layer/tile/TileLayer.js","../src/layer/tile/TileLayer.WMS.js","../src/layer/tile/index.js","../src/layer/vector/Renderer.js","../src/layer/vector/Canvas.js","../src/layer/vector/SVG.VML.js","../src/layer/vector/SVG.js","../src/layer/vector/Renderer.getRenderer.js","../src/layer/vector/Rectangle.js","../src/layer/vector/index.js","../src/layer/index.js","../src/map/handler/Map.BoxZoom.js","../src/map/handler/Map.DoubleClickZoom.js","../src/map/handler/Map.Drag.js","../src/map/handler/Map.Keyboard.js","../src/map/handler/Map.ScrollWheelZoom.js","../src/map/handler/Map.TapHold.js","../src/map/handler/Map.TouchZoom.js","../src/map/index.js","node_modules/leaflet-draw/dist/leaflet.draw.js","node_modules/jszip/dist/jszip.js","../node_modules/moment/locale/de.js","../node_modules/moment/moment.js","../node_modules/moment/locale/es.js","../node_modules/moment/locale/fr.js","../node_modules/moment/locale/it.js","../node_modules/moment/locale/ja.js","../node_modules/moment/locale/nl.js","../node_modules/moment/locale/pl.js","../node_modules/moment/locale/ru.js","../node_modules/moment/locale/uk.js","../node_modules/core-js-pure/internals/fails.js","../node_modules/core-js-pure/internals/function-bind-native.js","../node_modules/core-js-pure/internals/function-uncurry-this.js","../node_modules/core-js-pure/internals/math-trunc.js","../node_modules/core-js-pure/internals/to-integer-or-infinity.js","../node_modules/core-js-pure/internals/global.js","../node_modules/core-js-pure/internals/define-global-property.js","../node_modules/core-js-pure/internals/shared-store.js","../node_modules/core-js-pure/internals/shared.js","../node_modules/core-js-pure/internals/engine-v8-version.js","../node_modules/core-js-pure/internals/is-null-or-undefined.js","../node_modules/core-js-pure/internals/require-object-coercible.js","../node_modules/core-js-pure/internals/to-object.js","../node_modules/core-js-pure/internals/has-own-property.js","../node_modules/core-js-pure/internals/uid.js","../node_modules/core-js-pure/internals/engine-user-agent.js","../node_modules/core-js-pure/internals/symbol-constructor-detection.js","../node_modules/core-js-pure/internals/use-symbol-as-uid.js","../node_modules/core-js-pure/internals/well-known-symbol.js","../node_modules/core-js-pure/internals/to-string-tag-support.js","../node_modules/core-js-pure/internals/document-all.js","../node_modules/core-js-pure/internals/is-callable.js","../node_modules/core-js-pure/internals/classof-raw.js","../node_modules/core-js-pure/internals/classof.js","../node_modules/core-js-pure/internals/to-string.js","../node_modules/core-js-pure/internals/string-multibyte.js","../node_modules/core-js-pure/internals/weak-map-basic-detection.js","../node_modules/core-js-pure/internals/is-object.js","../node_modules/core-js-pure/internals/descriptors.js","../node_modules/core-js-pure/internals/document-create-element.js","../node_modules/core-js-pure/internals/ie8-dom-define.js","../node_modules/core-js-pure/internals/v8-prototype-define-bug.js","../node_modules/core-js-pure/internals/an-object.js","../node_modules/core-js-pure/internals/function-call.js","../node_modules/core-js-pure/internals/path.js","../node_modules/core-js-pure/internals/get-built-in.js","../node_modules/core-js-pure/internals/object-is-prototype-of.js","../node_modules/core-js-pure/internals/is-symbol.js","../node_modules/core-js-pure/internals/try-to-string.js","../node_modules/core-js-pure/internals/a-callable.js","../node_modules/core-js-pure/internals/get-method.js","../node_modules/core-js-pure/internals/ordinary-to-primitive.js","../node_modules/core-js-pure/internals/to-primitive.js","../node_modules/core-js-pure/internals/to-property-key.js","../node_modules/core-js-pure/internals/object-define-property.js","../node_modules/core-js-pure/internals/create-property-descriptor.js","../node_modules/core-js-pure/internals/internal-state.js","../node_modules/core-js-pure/internals/create-non-enumerable-property.js","../node_modules/core-js-pure/internals/shared-key.js","../node_modules/core-js-pure/internals/hidden-keys.js","../node_modules/core-js-pure/internals/function-apply.js","../node_modules/core-js-pure/internals/function-uncurry-this-clause.js","../node_modules/core-js-pure/internals/object-property-is-enumerable.js","../node_modules/core-js-pure/internals/indexed-object.js","../node_modules/core-js-pure/internals/to-indexed-object.js","../node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","../node_modules/core-js-pure/internals/is-forced.js","../node_modules/core-js-pure/internals/function-bind-context.js","../node_modules/core-js-pure/internals/export.js","../node_modules/core-js-pure/internals/function-name.js","../node_modules/core-js-pure/internals/to-absolute-index.js","../node_modules/core-js-pure/internals/to-length.js","../node_modules/core-js-pure/internals/length-of-array-like.js","../node_modules/core-js-pure/internals/array-includes.js","../node_modules/core-js-pure/internals/object-keys-internal.js","../node_modules/core-js-pure/internals/enum-bug-keys.js","../node_modules/core-js-pure/internals/object-keys.js","../node_modules/core-js-pure/internals/object-define-properties.js","../node_modules/core-js-pure/internals/html.js","../node_modules/core-js-pure/internals/object-create.js","../node_modules/core-js-pure/internals/iterators-core.js","../node_modules/core-js-pure/internals/correct-prototype-getter.js","../node_modules/core-js-pure/internals/object-get-prototype-of.js","../node_modules/core-js-pure/internals/define-built-in.js","../node_modules/core-js-pure/internals/object-to-string.js","../node_modules/core-js-pure/internals/set-to-string-tag.js","../node_modules/core-js-pure/internals/iterators.js","../node_modules/core-js-pure/internals/iterator-create-constructor.js","../node_modules/core-js-pure/internals/function-uncurry-this-accessor.js","../node_modules/core-js-pure/internals/a-possible-prototype.js","../node_modules/core-js-pure/internals/object-set-prototype-of.js","../node_modules/core-js-pure/internals/iterator-define.js","../node_modules/core-js-pure/internals/create-iter-result-object.js","../node_modules/core-js-pure/modules/es.string.iterator.js","../node_modules/core-js-pure/internals/iterator-close.js","../node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","../node_modules/core-js-pure/internals/is-array-iterator-method.js","../node_modules/core-js-pure/internals/inspect-source.js","../node_modules/core-js-pure/internals/is-constructor.js","../node_modules/core-js-pure/internals/create-property.js","../node_modules/core-js-pure/internals/get-iterator-method.js","../node_modules/core-js-pure/internals/get-iterator.js","../node_modules/core-js-pure/internals/array-from.js","../node_modules/core-js-pure/internals/check-correctness-of-iteration.js","../node_modules/core-js-pure/modules/es.array.from.js","../node_modules/core-js-pure/es/array/from.js","../node_modules/core-js-pure/stable/array/from.js","../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js","../node_modules/core-js-pure/modules/es.array.iterator.js","../node_modules/core-js-pure/es/get-iterator-method.js","../node_modules/core-js-pure/modules/web.dom-collections.iterator.js","../node_modules/core-js-pure/internals/dom-iterables.js","../node_modules/core-js-pure/stable/get-iterator-method.js","../node_modules/core-js-pure/features/get-iterator-method.js","../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js","../node_modules/@babel/runtime-corejs3/helpers/esm/classCallCheck.js","../node_modules/core-js-pure/modules/es.object.define-property.js","../node_modules/core-js-pure/es/object/define-property.js","../node_modules/core-js-pure/stable/object/define-property.js","../node_modules/core-js-pure/features/object/define-property.js","../node_modules/core-js-pure/actual/object/define-property.js","../node_modules/core-js-pure/internals/is-array.js","../node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","../node_modules/core-js-pure/internals/array-species-constructor.js","../node_modules/core-js-pure/internals/array-species-create.js","../node_modules/core-js-pure/internals/array-method-has-species-support.js","../node_modules/core-js-pure/modules/es.array.concat.js","../node_modules/core-js-pure/internals/object-get-own-property-names.js","../node_modules/core-js-pure/internals/array-slice-simple.js","../node_modules/core-js-pure/internals/object-get-own-property-names-external.js","../node_modules/core-js-pure/internals/object-get-own-property-symbols.js","../node_modules/core-js-pure/internals/define-built-in-accessor.js","../node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","../node_modules/core-js-pure/internals/well-known-symbol-define.js","../node_modules/core-js-pure/internals/symbol-define-to-primitive.js","../node_modules/core-js-pure/internals/array-iteration.js","../node_modules/core-js-pure/modules/es.symbol.constructor.js","../node_modules/core-js-pure/internals/symbol-registry-detection.js","../node_modules/core-js-pure/modules/es.symbol.for.js","../node_modules/core-js-pure/modules/es.symbol.key-for.js","../node_modules/core-js-pure/internals/array-slice.js","../node_modules/core-js-pure/internals/get-json-replacer-function.js","../node_modules/core-js-pure/modules/es.json.stringify.js","../node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","../node_modules/core-js-pure/modules/es.symbol.async-iterator.js","../node_modules/core-js-pure/modules/es.symbol.has-instance.js","../node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","../node_modules/core-js-pure/modules/es.symbol.iterator.js","../node_modules/core-js-pure/modules/es.symbol.match.js","../node_modules/core-js-pure/modules/es.symbol.match-all.js","../node_modules/core-js-pure/modules/es.symbol.replace.js","../node_modules/core-js-pure/modules/es.symbol.search.js","../node_modules/core-js-pure/modules/es.symbol.species.js","../node_modules/core-js-pure/modules/es.symbol.split.js","../node_modules/core-js-pure/modules/es.symbol.to-primitive.js","../node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","../node_modules/core-js-pure/modules/es.symbol.unscopables.js","../node_modules/core-js-pure/modules/es.json.to-string-tag.js","../node_modules/core-js-pure/es/symbol/index.js","../node_modules/core-js-pure/stable/symbol/index.js","../node_modules/core-js-pure/modules/esnext.function.metadata.js","../node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","../node_modules/core-js-pure/modules/esnext.symbol.dispose.js","../node_modules/core-js-pure/modules/esnext.symbol.metadata.js","../node_modules/core-js-pure/actual/symbol/index.js","../node_modules/core-js-pure/internals/symbol-is-registered.js","../node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js","../node_modules/core-js-pure/internals/symbol-is-well-known.js","../node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js","../node_modules/core-js-pure/modules/esnext.symbol.matcher.js","../node_modules/core-js-pure/modules/esnext.symbol.observable.js","../node_modules/core-js-pure/modules/esnext.symbol.is-registered.js","../node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js","../node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","../node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","../node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","../node_modules/core-js-pure/full/symbol/index.js","../node_modules/core-js-pure/features/symbol/index.js","../node_modules/core-js-pure/stable/symbol/iterator.js","../node_modules/core-js-pure/es/symbol/iterator.js","../node_modules/core-js-pure/features/symbol/iterator.js","../node_modules/core-js-pure/actual/symbol/iterator.js","../node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js","../node_modules/core-js-pure/es/symbol/to-primitive.js","../node_modules/@babel/runtime-corejs3/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime-corejs3/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime-corejs3/helpers/esm/createClass.js","../node_modules/core-js-pure/modules/es.array.is-array.js","../node_modules/core-js-pure/es/array/is-array.js","../node_modules/core-js-pure/stable/array/is-array.js","../node_modules/core-js-pure/actual/array/is-array.js","../node_modules/core-js-pure/internals/array-set-length.js","../node_modules/core-js-pure/modules/es.array.push.js","../node_modules/core-js-pure/internals/entry-virtual.js","../node_modules/core-js-pure/es/array/virtual/push.js","../node_modules/core-js-pure/es/instance/push.js","../node_modules/core-js-pure/stable/instance/push.js","../node_modules/core-js-pure/features/instance/push.js","../node_modules/core-js-pure/modules/es.array.slice.js","../node_modules/core-js-pure/es/array/virtual/slice.js","../node_modules/core-js-pure/es/instance/slice.js","../node_modules/core-js-pure/stable/instance/slice.js","../node_modules/core-js-pure/features/instance/slice.js","../node_modules/core-js-pure/actual/instance/slice.js","../node_modules/core-js-pure/actual/array/from.js","../node_modules/@babel/runtime-corejs3/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime-corejs3/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js","../node_modules/core-js-pure/es/array/virtual/concat.js","../node_modules/core-js-pure/es/instance/concat.js","../node_modules/core-js-pure/stable/instance/concat.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","../node_modules/core-js-pure/internals/own-keys.js","../node_modules/core-js-pure/modules/es.reflect.own-keys.js","../node_modules/core-js-pure/es/reflect/own-keys.js","../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","../node_modules/core-js-pure/modules/es.array.map.js","../node_modules/core-js-pure/es/array/virtual/map.js","../node_modules/core-js-pure/es/instance/map.js","../node_modules/core-js-pure/stable/instance/map.js","../node_modules/core-js-pure/modules/es.object.keys.js","../node_modules/core-js-pure/es/object/keys.js","../node_modules/core-js-pure/modules/es.date.now.js","../node_modules/core-js-pure/es/date/now.js","../node_modules/core-js-pure/internals/function-bind.js","../node_modules/core-js-pure/modules/es.function.bind.js","../node_modules/core-js-pure/es/function/virtual/bind.js","../node_modules/core-js-pure/es/instance/bind.js","../node_modules/core-js-pure/stable/instance/bind.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","../node_modules/core-js-pure/internals/array-method-is-strict.js","../node_modules/core-js-pure/internals/array-for-each.js","../node_modules/core-js-pure/modules/es.array.for-each.js","../node_modules/core-js-pure/es/array/virtual/for-each.js","../node_modules/core-js-pure/stable/instance/for-each.js","../node_modules/core-js-pure/stable/array/virtual/for-each.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","../node_modules/core-js-pure/modules/es.array.reverse.js","../node_modules/core-js-pure/es/array/virtual/reverse.js","../node_modules/core-js-pure/es/instance/reverse.js","../node_modules/core-js-pure/stable/instance/reverse.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reverse.js","../node_modules/core-js-pure/internals/delete-property-or-throw.js","../node_modules/core-js-pure/modules/es.array.splice.js","../node_modules/core-js-pure/es/array/virtual/splice.js","../node_modules/core-js-pure/es/instance/splice.js","../node_modules/core-js-pure/stable/instance/splice.js","../node_modules/core-js-pure/internals/object-assign.js","../node_modules/core-js-pure/modules/es.object.assign.js","../node_modules/core-js-pure/es/object/assign.js","../node_modules/core-js-pure/modules/es.array.includes.js","../node_modules/core-js-pure/es/array/virtual/includes.js","../node_modules/core-js-pure/internals/is-regexp.js","../node_modules/core-js-pure/internals/not-a-regexp.js","../node_modules/core-js-pure/internals/correct-is-regexp-logic.js","../node_modules/core-js-pure/modules/es.string.includes.js","../node_modules/core-js-pure/es/string/virtual/includes.js","../node_modules/core-js-pure/es/instance/includes.js","../node_modules/core-js-pure/stable/instance/includes.js","../node_modules/core-js-pure/modules/es.object.get-prototype-of.js","../node_modules/core-js-pure/es/object/get-prototype-of.js","../node_modules/core-js-pure/stable/object/get-prototype-of.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js","../node_modules/core-js-pure/modules/es.array.filter.js","../node_modules/core-js-pure/es/array/virtual/filter.js","../node_modules/core-js-pure/es/instance/filter.js","../node_modules/core-js-pure/stable/instance/filter.js","../node_modules/core-js-pure/internals/object-to-array.js","../node_modules/core-js-pure/modules/es.object.values.js","../node_modules/core-js-pure/es/object/values.js","../node_modules/core-js-pure/internals/whitespaces.js","../node_modules/core-js-pure/internals/string-trim.js","../node_modules/core-js-pure/internals/number-parse-int.js","../node_modules/core-js-pure/modules/es.parse-int.js","../node_modules/core-js-pure/es/parse-int.js","../node_modules/core-js-pure/modules/es.array.index-of.js","../node_modules/core-js-pure/es/array/virtual/index-of.js","../node_modules/core-js-pure/es/instance/index-of.js","../node_modules/core-js-pure/stable/instance/index-of.js","../node_modules/core-js-pure/modules/es.object.entries.js","../node_modules/core-js-pure/es/object/entries.js","../node_modules/core-js-pure/modules/es.object.create.js","../node_modules/core-js-pure/es/object/create.js","../node_modules/core-js-pure/stable/object/create.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js","../node_modules/core-js-pure/es/json/stringify.js","../node_modules/core-js-pure/stable/json/stringify.js","../node_modules/core-js-pure/internals/engine-is-bun.js","../node_modules/core-js-pure/internals/validate-arguments-length.js","../node_modules/core-js-pure/internals/schedulers-fix.js","../node_modules/core-js-pure/modules/web.set-interval.js","../node_modules/core-js-pure/modules/web.set-timeout.js","../node_modules/core-js-pure/stable/set-timeout.js","../node_modules/core-js-pure/internals/array-fill.js","../node_modules/core-js-pure/modules/es.array.fill.js","../node_modules/core-js-pure/es/array/virtual/fill.js","../node_modules/core-js-pure/es/instance/fill.js","../node_modules/core-js-pure/stable/instance/fill.js","../node_modules/component-emitter/index.js","../node_modules/@egjs/hammerjs/dist/hammer.esm.js","../node_modules/vis-util/esnext/esm/vis-util.js","../lib/DOMutil.js","../node_modules/@babel/runtime-corejs3/helpers/esm/assertThisInitialized.js","../node_modules/core-js-pure/actual/object/create.js","../node_modules/core-js-pure/features/object/create.js","../node_modules/core-js-pure/modules/es.object.set-prototype-of.js","../node_modules/core-js-pure/es/object/set-prototype-of.js","../node_modules/core-js-pure/features/object/set-prototype-of.js","../node_modules/core-js-pure/actual/instance/bind.js","../node_modules/@babel/runtime-corejs3/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime-corejs3/helpers/esm/inherits.js","../node_modules/@babel/runtime-corejs3/helpers/esm/possibleConstructorReturn.js","../node_modules/core-js-pure/actual/object/get-prototype-of.js","../node_modules/core-js-pure/features/object/get-prototype-of.js","../node_modules/@babel/runtime-corejs3/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime-corejs3/helpers/esm/defineProperty.js","../node_modules/@babel/runtime-corejs3/helpers/typeof.js","../node_modules/core-js-pure/features/instance/for-each.js","../node_modules/core-js-pure/actual/instance/for-each.js","../node_modules/core-js-pure/internals/copy-constructor-properties.js","../node_modules/core-js-pure/internals/install-error-cause.js","../node_modules/core-js-pure/internals/error-stack-clear.js","../node_modules/core-js-pure/internals/error-stack-installable.js","../node_modules/core-js-pure/internals/error-stack-install.js","../node_modules/core-js-pure/internals/iterate.js","../node_modules/core-js-pure/internals/normalize-string-argument.js","../node_modules/core-js-pure/modules/es.aggregate-error.constructor.js","../node_modules/core-js-pure/internals/engine-is-node.js","../node_modules/core-js-pure/internals/task.js","../node_modules/core-js-pure/internals/set-species.js","../node_modules/core-js-pure/internals/an-instance.js","../node_modules/core-js-pure/internals/a-constructor.js","../node_modules/core-js-pure/internals/species-constructor.js","../node_modules/core-js-pure/internals/engine-is-ios.js","../node_modules/core-js-pure/internals/queue.js","../node_modules/core-js-pure/internals/microtask.js","../node_modules/core-js-pure/internals/engine-is-ios-pebble.js","../node_modules/core-js-pure/internals/engine-is-webos-webkit.js","../node_modules/core-js-pure/internals/perform.js","../node_modules/core-js-pure/internals/promise-native-constructor.js","../node_modules/core-js-pure/internals/engine-is-deno.js","../node_modules/core-js-pure/internals/engine-is-browser.js","../node_modules/core-js-pure/internals/promise-constructor-detection.js","../node_modules/core-js-pure/internals/new-promise-capability.js","../node_modules/core-js-pure/modules/es.promise.constructor.js","../node_modules/core-js-pure/internals/host-report-errors.js","../node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js","../node_modules/core-js-pure/modules/es.promise.all.js","../node_modules/core-js-pure/modules/es.promise.catch.js","../node_modules/core-js-pure/modules/es.promise.race.js","../node_modules/core-js-pure/modules/es.promise.reject.js","../node_modules/core-js-pure/internals/promise-resolve.js","../node_modules/core-js-pure/modules/es.promise.resolve.js","../node_modules/core-js-pure/internals/is-pure.js","../node_modules/core-js-pure/modules/es.promise.all-settled.js","../node_modules/core-js-pure/modules/es.promise.any.js","../node_modules/core-js-pure/modules/es.promise.finally.js","../node_modules/core-js-pure/es/promise/index.js","../node_modules/core-js-pure/stable/promise/index.js","../node_modules/core-js-pure/modules/esnext.promise.with-resolvers.js","../node_modules/core-js-pure/actual/promise/index.js","../node_modules/core-js-pure/modules/esnext.promise.try.js","../node_modules/core-js-pure/full/promise/index.js","../node_modules/core-js-pure/features/promise/index.js","../node_modules/core-js-pure/features/instance/reverse.js","../node_modules/core-js-pure/actual/instance/reverse.js","../node_modules/@babel/runtime-corejs3/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime-corejs3/regenerator/index.js","../node_modules/core-js-pure/internals/array-reduce.js","../node_modules/core-js-pure/modules/es.array.reduce.js","../node_modules/core-js-pure/es/array/virtual/reduce.js","../node_modules/core-js-pure/es/instance/reduce.js","../node_modules/core-js-pure/stable/instance/reduce.js","../node_modules/core-js-pure/internals/flatten-into-array.js","../node_modules/core-js-pure/modules/es.array.flat-map.js","../node_modules/core-js-pure/es/array/virtual/flat-map.js","../node_modules/core-js-pure/es/instance/flat-map.js","../node_modules/core-js-pure/stable/instance/flat-map.js","../node_modules/core-js-pure/internals/array-buffer-non-extensible.js","../node_modules/core-js-pure/internals/object-is-extensible.js","../node_modules/core-js-pure/internals/freezing.js","../node_modules/core-js-pure/internals/internal-metadata.js","../node_modules/core-js-pure/internals/collection.js","../node_modules/core-js-pure/internals/define-built-ins.js","../node_modules/core-js-pure/internals/collection-strong.js","../node_modules/core-js-pure/modules/es.map.constructor.js","../node_modules/core-js-pure/es/map/index.js","../node_modules/core-js-pure/modules/es.set.constructor.js","../node_modules/core-js-pure/es/set/index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/symbol/iterator.js","../node_modules/core-js-pure/es/get-iterator.js","../node_modules/core-js-pure/internals/array-sort.js","../node_modules/core-js-pure/internals/engine-ff-version.js","../node_modules/core-js-pure/internals/engine-is-ie-or-edge.js","../node_modules/core-js-pure/internals/engine-webkit-version.js","../node_modules/core-js-pure/modules/es.array.sort.js","../node_modules/core-js-pure/es/array/virtual/sort.js","../node_modules/core-js-pure/es/instance/sort.js","../node_modules/core-js-pure/stable/instance/sort.js","../node_modules/core-js-pure/modules/es.array.some.js","../node_modules/core-js-pure/es/array/virtual/some.js","../node_modules/core-js-pure/es/instance/some.js","../node_modules/core-js-pure/stable/instance/some.js","../node_modules/core-js-pure/es/array/virtual/keys.js","../node_modules/core-js-pure/stable/instance/keys.js","../node_modules/core-js-pure/stable/array/virtual/keys.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js","../node_modules/core-js-pure/es/array/virtual/values.js","../node_modules/core-js-pure/stable/instance/values.js","../node_modules/core-js-pure/stable/array/virtual/values.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/values.js","../node_modules/core-js-pure/es/array/virtual/entries.js","../node_modules/core-js-pure/stable/instance/entries.js","../node_modules/core-js-pure/stable/array/virtual/entries.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","../node_modules/core-js-pure/modules/es.reflect.construct.js","../node_modules/core-js-pure/es/reflect/construct.js","../node_modules/core-js-pure/es/object/get-own-property-symbols.js","../node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","../node_modules/core-js-pure/es/object/get-own-property-descriptor.js","../node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js","../node_modules/core-js-pure/es/object/get-own-property-descriptors.js","../node_modules/core-js-pure/modules/es.object.define-properties.js","../node_modules/core-js-pure/es/object/define-properties.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/vis-data/esnext/esm/vis-data.js","../lib/module/moment.js","../node_modules/cssfilter/lib/default.js","../node_modules/cssfilter/lib/util.js","../node_modules/cssfilter/lib/parser.js","../node_modules/cssfilter/lib/css.js","../node_modules/cssfilter/lib/index.js","../node_modules/xss/lib/util.js","../node_modules/xss/lib/default.js","../node_modules/xss/lib/parser.js","../node_modules/xss/lib/xss.js","../node_modules/xss/lib/index.js","../lib/util.js","../node_modules/core-js-pure/internals/number-parse-float.js","../node_modules/core-js-pure/modules/es.parse-float.js","../node_modules/core-js-pure/es/parse-float.js","../lib/timeline/component/Component.js","../node_modules/core-js-pure/internals/string-repeat.js","../node_modules/core-js-pure/modules/es.string.repeat.js","../node_modules/core-js-pure/es/string/virtual/repeat.js","../node_modules/core-js-pure/es/instance/repeat.js","../node_modules/core-js-pure/stable/instance/repeat.js","../lib/timeline/DateUtil.js","../lib/timeline/Range.js","../node_modules/core-js-pure/stable/set-interval.js","../lib/module/hammer.js","../node_modules/propagating-hammerjs/src/propagating.js","../lib/hammerUtil.js","../lib/timeline/TimeStep.js","../lib/timeline/component/TimeAxis.js","../node_modules/keycharm/src/keycharm.js","../lib/shared/Activator.js","../lib/timeline/locales.js","../lib/timeline/component/CustomTime.js","../lib/timeline/Core.js","../lib/timeline/component/CurrentTime.js","../node_modules/core-js-pure/modules/es.array.find.js","../node_modules/core-js-pure/es/array/virtual/find.js","../node_modules/core-js-pure/es/instance/find.js","../node_modules/core-js-pure/stable/instance/find.js","../node_modules/core-js-pure/modules/es.array.find-index.js","../node_modules/core-js-pure/es/array/virtual/find-index.js","../node_modules/core-js-pure/es/instance/find-index.js","../node_modules/core-js-pure/stable/instance/find-index.js","../lib/timeline/Stack.js","../lib/timeline/component/Group.js","../lib/timeline/component/BackgroundGroup.js","../lib/timeline/component/item/Item.js","../lib/timeline/component/item/BoxItem.js","../lib/timeline/component/item/PointItem.js","../lib/timeline/component/item/RangeItem.js","../lib/timeline/component/item/BackgroundItem.js","../lib/shared/Popup.js","../node_modules/core-js-pure/modules/es.array.every.js","../node_modules/core-js-pure/es/array/virtual/every.js","../node_modules/core-js-pure/es/instance/every.js","../node_modules/core-js-pure/stable/instance/every.js","../lib/timeline/component/item/ClusterItem.js","../lib/timeline/component/ClusterGenerator.js","../lib/timeline/component/ItemSet.js","../lib/shared/Validator.js","../lib/timeline/optionsTimeline.js","../lib/shared/ColorPicker.js","../lib/shared/Configurator.js","../lib/timeline/Timeline.js","../lib/timeline/component/DataScale.js","../lib/timeline/component/DataAxis.js","../lib/timeline/component/graph2d_types/points.js","../lib/timeline/component/graph2d_types/bar.js","../lib/timeline/component/graph2d_types/line.js","../lib/timeline/component/GraphGroup.js","../lib/timeline/component/Legend.js","../lib/timeline/component/LineGraph.js","../lib/timeline/optionsGraph2d.js","../lib/timeline/Graph2d.js","../lib/bundle-legacy.js","addon-tree-output/@ember-decorators/utils/-private/class-field-descriptor.js","addon-tree-output/@ember-decorators/utils/collapse-proto.js","addon-tree-output/@ember-decorators/utils/decorator.js","addon-tree-output/@ember/render-modifiers/modifiers/did-insert.js","addon-tree-output/@ember/render-modifiers/modifiers/did-update.js","addon-tree-output/@ember/render-modifiers/modifiers/will-destroy.js","addon-tree-output/@ember/test-waiters/build-waiter.js","addon-tree-output/@ember/test-waiters/index.js","addon-tree-output/@ember/test-waiters/token.js","addon-tree-output/@ember/test-waiters/types/index.js","addon-tree-output/@ember/test-waiters/wait-for-promise.js","addon-tree-output/@ember/test-waiters/wait-for.js","addon-tree-output/@ember/test-waiters/waiter-manager.js","addon-tree-output/@embroider/macros/es-compat2.js","addon-tree-output/@embroider/macros/runtime.js","addon-tree-output/@embroider/util/ember-private-api.js","addon-tree-output/@embroider/util/index.js","addon-tree-output/@embroider/util/services/ensure-registered.js","addon-tree-output/@fortawesome/ember-fontawesome/components/fa-icon.js","addon-tree-output/@glimmer/component/-private/base-component-manager.js","addon-tree-output/@glimmer/component/-private/component.js","addon-tree-output/@glimmer/component/-private/destroyables.js","addon-tree-output/@glimmer/component/-private/ember-component-manager.js","addon-tree-output/@glimmer/component/-private/owner.js","addon-tree-output/@glimmer/component/index.js","addon-tree-output/@html-next/vertical-collection/-private.js","addon-tree-output/@html-next/vertical-collection/components/vertical-collection/component.js","addon-tree-output/@html-next/vertical-collection/components/vertical-collection/template.js","addon-tree-output/accounting/format-column.js","addon-tree-output/accounting/format-money.js","addon-tree-output/accounting/format-number.js","addon-tree-output/accounting/format.js","addon-tree-output/accounting/helpers/format-money.js","addon-tree-output/accounting/helpers/format-number.js","addon-tree-output/accounting/index.js","addon-tree-output/accounting/parse.js","addon-tree-output/accounting/settings.js","addon-tree-output/accounting/to-fixed.js","addon-tree-output/accounting/unformat.js","addon-tree-output/accounting/utils.js","addon-tree-output/accounting/version.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/alert.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/base.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/check-confirm.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/confirm.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/process.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/progress.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt-confirm.js","addon-tree-output/ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt.js","addon-tree-output/ember-bootstrap-modals-manager/components/modals-container.js","addon-tree-output/ember-bootstrap-modals-manager/services/modals-manager.js","addon-tree-output/ember-bootstrap/components/bs-accordion.js","addon-tree-output/ember-bootstrap/components/bs-accordion/item.js","addon-tree-output/ember-bootstrap/components/bs-accordion/item/body.js","addon-tree-output/ember-bootstrap/components/bs-accordion/item/title.js","addon-tree-output/ember-bootstrap/components/bs-alert.js","addon-tree-output/ember-bootstrap/components/bs-button-group.js","addon-tree-output/ember-bootstrap/components/bs-button-group/button.js","addon-tree-output/ember-bootstrap/components/bs-button.js","addon-tree-output/ember-bootstrap/components/bs-carousel.js","addon-tree-output/ember-bootstrap/components/bs-carousel/slide.js","addon-tree-output/ember-bootstrap/components/bs-collapse.js","addon-tree-output/ember-bootstrap/components/bs-contextual-help.js","addon-tree-output/ember-bootstrap/components/bs-contextual-help/element.js","addon-tree-output/ember-bootstrap/components/bs-dropdown.js","addon-tree-output/ember-bootstrap/components/bs-dropdown/button.js","addon-tree-output/ember-bootstrap/components/bs-dropdown/menu.js","addon-tree-output/ember-bootstrap/components/bs-dropdown/menu/divider.js","addon-tree-output/ember-bootstrap/components/bs-dropdown/menu/item.js","addon-tree-output/ember-bootstrap/components/bs-dropdown/toggle.js","addon-tree-output/ember-bootstrap/components/bs-form.js","addon-tree-output/ember-bootstrap/components/bs-form/element.js","addon-tree-output/ember-bootstrap/components/bs-form/element/control.js","addon-tree-output/ember-bootstrap/components/bs-form/element/control/checkbox.js","addon-tree-output/ember-bootstrap/components/bs-form/element/control/input.js","addon-tree-output/ember-bootstrap/components/bs-form/element/control/radio.js","addon-tree-output/ember-bootstrap/components/bs-form/element/control/switch.js","addon-tree-output/ember-bootstrap/components/bs-form/element/control/textarea.js","addon-tree-output/ember-bootstrap/components/bs-form/element/errors.js","addon-tree-output/ember-bootstrap/components/bs-form/element/feedback-icon.js","addon-tree-output/ember-bootstrap/components/bs-form/element/help-text.js","addon-tree-output/ember-bootstrap/components/bs-form/element/label.js","addon-tree-output/ember-bootstrap/components/bs-form/element/layout/horizontal.js","addon-tree-output/ember-bootstrap/components/bs-form/element/layout/horizontal/checkbox.js","addon-tree-output/ember-bootstrap/components/bs-form/element/layout/inline.js","addon-tree-output/ember-bootstrap/components/bs-form/element/layout/inline/checkbox.js","addon-tree-output/ember-bootstrap/components/bs-form/element/layout/vertical.js","addon-tree-output/ember-bootstrap/components/bs-form/element/layout/vertical/checkbox.js","addon-tree-output/ember-bootstrap/components/bs-form/element/legend.js","addon-tree-output/ember-bootstrap/components/bs-link-to.js","addon-tree-output/ember-bootstrap/components/bs-list-group.js","addon-tree-output/ember-bootstrap/components/bs-list-group/item.js","addon-tree-output/ember-bootstrap/components/bs-modal-simple.js","addon-tree-output/ember-bootstrap/components/bs-modal.js","addon-tree-output/ember-bootstrap/components/bs-modal/body.js","addon-tree-output/ember-bootstrap/components/bs-modal/dialog.js","addon-tree-output/ember-bootstrap/components/bs-modal/footer.js","addon-tree-output/ember-bootstrap/components/bs-modal/header.js","addon-tree-output/ember-bootstrap/components/bs-modal/header/close.js","addon-tree-output/ember-bootstrap/components/bs-modal/header/title.js","addon-tree-output/ember-bootstrap/components/bs-nav.js","addon-tree-output/ember-bootstrap/components/bs-nav/item.js","addon-tree-output/ember-bootstrap/components/bs-navbar.js","addon-tree-output/ember-bootstrap/components/bs-navbar/content.js","addon-tree-output/ember-bootstrap/components/bs-navbar/link-to.js","addon-tree-output/ember-bootstrap/components/bs-navbar/nav.js","addon-tree-output/ember-bootstrap/components/bs-navbar/toggle.js","addon-tree-output/ember-bootstrap/components/bs-popover.js","addon-tree-output/ember-bootstrap/components/bs-popover/element.js","addon-tree-output/ember-bootstrap/components/bs-progress.js","addon-tree-output/ember-bootstrap/components/bs-progress/bar.js","addon-tree-output/ember-bootstrap/components/bs-spinner.js","addon-tree-output/ember-bootstrap/components/bs-tab.js","addon-tree-output/ember-bootstrap/components/bs-tab/pane.js","addon-tree-output/ember-bootstrap/components/bs-tooltip.js","addon-tree-output/ember-bootstrap/components/bs-tooltip/element.js","addon-tree-output/ember-bootstrap/config.js","addon-tree-output/ember-bootstrap/helpers/bs-contains.js","addon-tree-output/ember-bootstrap/helpers/bs-default.js","addon-tree-output/ember-bootstrap/helpers/bs-eq.js","addon-tree-output/ember-bootstrap/helpers/bs-form-horiz-input-class.js","addon-tree-output/ember-bootstrap/helpers/bs-form-horiz-offset-class.js","addon-tree-output/ember-bootstrap/helpers/bs-noop.js","addon-tree-output/ember-bootstrap/helpers/bs-size-class.js","addon-tree-output/ember-bootstrap/helpers/bs-type-class.js","addon-tree-output/ember-bootstrap/modifiers/bs-conditional-attribute.js","addon-tree-output/ember-bootstrap/template-registry.js","addon-tree-output/ember-bootstrap/utils/decorators/arg.js","addon-tree-output/ember-bootstrap/utils/decorators/uses-transition.js","addon-tree-output/ember-bootstrap/utils/dom.js","addon-tree-output/ember-bootstrap/utils/form-validation-class.js","addon-tree-output/ember-bootstrap/utils/is-fastboot.js","addon-tree-output/ember-bootstrap/utils/size-class.js","addon-tree-output/ember-bootstrap/utils/transition-end.js","addon-tree-output/ember-bootstrap/version.js","addon-tree-output/ember-cached-decorator-polyfill/index.js","addon-tree-output/ember-changeset-validations/index.js","addon-tree-output/ember-changeset-validations/utils/get-messages.js","addon-tree-output/ember-changeset-validations/utils/handle-multiple-validations.js","addon-tree-output/ember-changeset-validations/utils/messages.js","addon-tree-output/ember-changeset-validations/utils/to-date.js","addon-tree-output/ember-changeset-validations/utils/validation-errors.js","addon-tree-output/ember-changeset-validations/utils/with-defaults.js","addon-tree-output/ember-changeset-validations/utils/wrap.js","addon-tree-output/ember-changeset-validations/validators/confirmation.js","addon-tree-output/ember-changeset-validations/validators/date.js","addon-tree-output/ember-changeset-validations/validators/exclusion.js","addon-tree-output/ember-changeset-validations/validators/format.js","addon-tree-output/ember-changeset-validations/validators/inclusion.js","addon-tree-output/ember-changeset-validations/validators/index.js","addon-tree-output/ember-changeset-validations/validators/length.js","addon-tree-output/ember-changeset-validations/validators/number.js","addon-tree-output/ember-changeset-validations/validators/presence.js","addon-tree-output/ember-changeset/helpers/changeset-get.js","addon-tree-output/ember-changeset/helpers/changeset-set.js","addon-tree-output/ember-changeset/helpers/changeset.js","addon-tree-output/ember-changeset/index.js","addon-tree-output/ember-changeset/utils/is-object.js","addon-tree-output/ember-changeset/utils/merge-deep.js","addon-tree-output/ember-changeset/validated-changeset.js","addon-tree-output/ember-cli-app-version/initializer-factory.js","addon-tree-output/ember-cli-app-version/utils/regexp.js","addon-tree-output/ember-cli-pagination/components/page-numbers.js","addon-tree-output/ember-cli-pagination/computed/paged-array.js","addon-tree-output/ember-cli-pagination/divide-into-pages.js","addon-tree-output/ember-cli-pagination/factory.js","addon-tree-output/ember-cli-pagination/infinite/paged-infinite-array.js","addon-tree-output/ember-cli-pagination/lib/page-items.js","addon-tree-output/ember-cli-pagination/lib/truncate-pages.js","addon-tree-output/ember-cli-pagination/local/controller-local-mixin.js","addon-tree-output/ember-cli-pagination/local/paged-array.js","addon-tree-output/ember-cli-pagination/local/route-local-mixin.js","addon-tree-output/ember-cli-pagination/page-mixin.js","addon-tree-output/ember-cli-pagination/remote/controller-mixin.js","addon-tree-output/ember-cli-pagination/remote/mapping.js","addon-tree-output/ember-cli-pagination/remote/paged-remote-array.js","addon-tree-output/ember-cli-pagination/remote/route-mixin.js","addon-tree-output/ember-cli-pagination/test-helpers.js","addon-tree-output/ember-cli-pagination/util.js","addon-tree-output/ember-cli-pagination/util/safe-get.js","addon-tree-output/ember-cli-pagination/validate.js","addon-tree-output/ember-cli-pagination/watch/lock-to-range.js","addon-tree-output/ember-cli-string-helpers/-private/create-string-helper.js","addon-tree-output/ember-cli-string-helpers/helpers/camelize.js","addon-tree-output/ember-cli-string-helpers/helpers/capitalize.js","addon-tree-output/ember-cli-string-helpers/helpers/classify.js","addon-tree-output/ember-cli-string-helpers/helpers/dasherize.js","addon-tree-output/ember-cli-string-helpers/helpers/html-safe.js","addon-tree-output/ember-cli-string-helpers/helpers/humanize.js","addon-tree-output/ember-cli-string-helpers/helpers/lowercase.js","addon-tree-output/ember-cli-string-helpers/helpers/titleize.js","addon-tree-output/ember-cli-string-helpers/helpers/trim.js","addon-tree-output/ember-cli-string-helpers/helpers/truncate.js","addon-tree-output/ember-cli-string-helpers/helpers/underscore.js","addon-tree-output/ember-cli-string-helpers/helpers/uppercase.js","addon-tree-output/ember-cli-string-helpers/helpers/w.js","addon-tree-output/ember-cli-string-helpers/utils/lowercase.js","addon-tree-output/ember-cli-string-helpers/utils/titleize.js","addon-tree-output/ember-cli-string-helpers/utils/trim.js","addon-tree-output/ember-cli-string-helpers/utils/uppercase.js","addon-tree-output/ember-collapsible-panel/components/cp-panel-body/component.js","addon-tree-output/ember-collapsible-panel/components/cp-panel-body/template.js","addon-tree-output/ember-collapsible-panel/components/cp-panel-toggle/component.js","addon-tree-output/ember-collapsible-panel/components/cp-panel/component.js","addon-tree-output/ember-collapsible-panel/components/cp-panel/template.js","addon-tree-output/ember-collapsible-panel/components/cp-panels/component.js","addon-tree-output/ember-collapsible-panel/components/cp-panels/template.js","addon-tree-output/ember-collapsible-panel/services/panel-actions.js","addon-tree-output/ember-composable-helpers/-private/closure-action.js","addon-tree-output/ember-composable-helpers/-private/get-value-array-and-use-deep-equal-from-params.js","addon-tree-output/ember-composable-helpers/helpers/append.js","addon-tree-output/ember-composable-helpers/helpers/call.js","addon-tree-output/ember-composable-helpers/helpers/chunk.js","addon-tree-output/ember-composable-helpers/helpers/compact.js","addon-tree-output/ember-composable-helpers/helpers/compute.js","addon-tree-output/ember-composable-helpers/helpers/contains.js","addon-tree-output/ember-composable-helpers/helpers/dec.js","addon-tree-output/ember-composable-helpers/helpers/drop.js","addon-tree-output/ember-composable-helpers/helpers/entries.js","addon-tree-output/ember-composable-helpers/helpers/filter-by.js","addon-tree-output/ember-composable-helpers/helpers/filter.js","addon-tree-output/ember-composable-helpers/helpers/find-by.js","addon-tree-output/ember-composable-helpers/helpers/flatten.js","addon-tree-output/ember-composable-helpers/helpers/from-entries.js","addon-tree-output/ember-composable-helpers/helpers/group-by.js","addon-tree-output/ember-composable-helpers/helpers/has-next.js","addon-tree-output/ember-composable-helpers/helpers/has-previous.js","addon-tree-output/ember-composable-helpers/helpers/inc.js","addon-tree-output/ember-composable-helpers/helpers/includes.js","addon-tree-output/ember-composable-helpers/helpers/intersect.js","addon-tree-output/ember-composable-helpers/helpers/invoke.js","addon-tree-output/ember-composable-helpers/helpers/join.js","addon-tree-output/ember-composable-helpers/helpers/keys.js","addon-tree-output/ember-composable-helpers/helpers/map-by.js","addon-tree-output/ember-composable-helpers/helpers/map.js","addon-tree-output/ember-composable-helpers/helpers/next.js","addon-tree-output/ember-composable-helpers/helpers/noop.js","addon-tree-output/ember-composable-helpers/helpers/object-at.js","addon-tree-output/ember-composable-helpers/helpers/optional.js","addon-tree-output/ember-composable-helpers/helpers/pick.js","addon-tree-output/ember-composable-helpers/helpers/pipe-action.js","addon-tree-output/ember-composable-helpers/helpers/pipe.js","addon-tree-output/ember-composable-helpers/helpers/previous.js","addon-tree-output/ember-composable-helpers/helpers/queue.js","addon-tree-output/ember-composable-helpers/helpers/range.js","addon-tree-output/ember-composable-helpers/helpers/reduce.js","addon-tree-output/ember-composable-helpers/helpers/reject-by.js","addon-tree-output/ember-composable-helpers/helpers/repeat.js","addon-tree-output/ember-composable-helpers/helpers/reverse.js","addon-tree-output/ember-composable-helpers/helpers/shuffle.js","addon-tree-output/ember-composable-helpers/helpers/slice.js","addon-tree-output/ember-composable-helpers/helpers/sort-by.js","addon-tree-output/ember-composable-helpers/helpers/take.js","addon-tree-output/ember-composable-helpers/helpers/toggle-action.js","addon-tree-output/ember-composable-helpers/helpers/toggle.js","addon-tree-output/ember-composable-helpers/helpers/union.js","addon-tree-output/ember-composable-helpers/helpers/values.js","addon-tree-output/ember-composable-helpers/helpers/without.js","addon-tree-output/ember-composable-helpers/index.js","addon-tree-output/ember-composable-helpers/utils/as-array.js","addon-tree-output/ember-composable-helpers/utils/comparison.js","addon-tree-output/ember-composable-helpers/utils/get-index.js","addon-tree-output/ember-composable-helpers/utils/is-equal.js","addon-tree-output/ember-composable-helpers/utils/is-object.js","addon-tree-output/ember-composable-helpers/utils/is-promise.js","addon-tree-output/ember-concurrency-decorators/index.js","addon-tree-output/ember-concurrency-decorators/last-value.js","addon-tree-output/ember-concurrency-ts/async.js","addon-tree-output/ember-concurrency-ts/index.js","addon-tree-output/ember-concurrency/-private/async-arrow-runtime.js","addon-tree-output/ember-concurrency/-private/cancelable-promise-helpers.js","addon-tree-output/ember-concurrency/-private/ember-environment.js","addon-tree-output/ember-concurrency/-private/external/environment.js","addon-tree-output/ember-concurrency/-private/external/generator-state.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/bounded-policy.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/drop-policy.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/enqueued-policy.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/execution-states.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/keep-latest-policy.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/restartable-policy.js","addon-tree-output/ember-concurrency/-private/external/scheduler/policies/unbounded-policy.js","addon-tree-output/ember-concurrency/-private/external/scheduler/refresh.js","addon-tree-output/ember-concurrency/-private/external/scheduler/scheduler.js","addon-tree-output/ember-concurrency/-private/external/scheduler/state-tracker/null-state-tracker.js","addon-tree-output/ember-concurrency/-private/external/scheduler/state-tracker/null-state.js","addon-tree-output/ember-concurrency/-private/external/scheduler/state-tracker/state-tracker.js","addon-tree-output/ember-concurrency/-private/external/scheduler/state-tracker/state.js","addon-tree-output/ember-concurrency/-private/external/task-decorators.js","addon-tree-output/ember-concurrency/-private/external/task-factory.js","addon-tree-output/ember-concurrency/-private/external/task-instance/base.js","addon-tree-output/ember-concurrency/-private/external/task-instance/cancelation.js","addon-tree-output/ember-concurrency/-private/external/task-instance/completion-states.js","addon-tree-output/ember-concurrency/-private/external/task-instance/executor.js","addon-tree-output/ember-concurrency/-private/external/task-instance/initial-state.js","addon-tree-output/ember-concurrency/-private/external/task/default-state.js","addon-tree-output/ember-concurrency/-private/external/task/task-group.js","addon-tree-output/ember-concurrency/-private/external/task/task.js","addon-tree-output/ember-concurrency/-private/external/task/taskable.js","addon-tree-output/ember-concurrency/-private/external/yieldables.js","addon-tree-output/ember-concurrency/-private/helpers.js","addon-tree-output/ember-concurrency/-private/scheduler/ember-scheduler.js","addon-tree-output/ember-concurrency/-private/task-decorators.js","addon-tree-output/ember-concurrency/-private/task-factory.js","addon-tree-output/ember-concurrency/-private/task-group.js","addon-tree-output/ember-concurrency/-private/task-instance.js","addon-tree-output/ember-concurrency/-private/task-properties.js","addon-tree-output/ember-concurrency/-private/task-public-api.js","addon-tree-output/ember-concurrency/-private/task.js","addon-tree-output/ember-concurrency/-private/taskable-mixin.js","addon-tree-output/ember-concurrency/-private/tracked-state.js","addon-tree-output/ember-concurrency/-private/utils.js","addon-tree-output/ember-concurrency/-private/wait-for.js","addon-tree-output/ember-concurrency/-task-instance.js","addon-tree-output/ember-concurrency/-task-property.js","addon-tree-output/ember-concurrency/helpers/cancel-all.js","addon-tree-output/ember-concurrency/helpers/perform.js","addon-tree-output/ember-concurrency/helpers/task.js","addon-tree-output/ember-concurrency/index.js","addon-tree-output/ember-copy/copy.js","addon-tree-output/ember-copy/copyable.js","addon-tree-output/ember-copy/index.js","addon-tree-output/ember-drag-drop/components/draggable-object-target.js","addon-tree-output/ember-drag-drop/components/draggable-object.js","addon-tree-output/ember-drag-drop/components/sortable-objects.js","addon-tree-output/ember-drag-drop/mixins/droppable.js","addon-tree-output/ember-drag-drop/services/drag-coordinator.js","addon-tree-output/ember-drag-drop/utils/proxy-unproxy-objects.js","addon-tree-output/ember-drag-sort/components/drag-sort-item.js","addon-tree-output/ember-drag-sort/components/drag-sort-list.js","addon-tree-output/ember-drag-sort/services/drag-sort.js","addon-tree-output/ember-drag-sort/templates/components/drag-sort-item.js","addon-tree-output/ember-drag-sort/templates/components/drag-sort-list.js","addon-tree-output/ember-drag-sort/utils/trigger.js","addon-tree-output/ember-fetch/errors.js","addon-tree-output/ember-fetch/types.js","addon-tree-output/ember-fetch/utils/determine-body-promise.js","addon-tree-output/ember-fetch/utils/mung-options-for-fetch.js","addon-tree-output/ember-fetch/utils/serialize-query-params.js","addon-tree-output/ember-froala-editor/components/froala-content.js","addon-tree-output/ember-froala-editor/components/froala-editor.js","addon-tree-output/ember-froala-editor/helpers/froala-arg.js","addon-tree-output/ember-froala-editor/helpers/froala-html.js","addon-tree-output/ember-froala-editor/helpers/froala-method.js","addon-tree-output/ember-froala-editor/helpers/html-safe.js","addon-tree-output/ember-froala-editor/helpers/merged-hash.js","addon-tree-output/ember-froala-editor/helpers/to-string.js","addon-tree-output/ember-gesture-modifiers/modifiers/did-pan.js","addon-tree-output/ember-gesture-modifiers/utils/parse-touch-data.js","addon-tree-output/ember-get-config/index.js","addon-tree-output/ember-load-initializers/index.js","addon-tree-output/ember-loading/components/while-loading.js","addon-tree-output/ember-loading/decorator.js","addon-tree-output/ember-loading/index.js","addon-tree-output/ember-loading/services/loading.js","addon-tree-output/ember-loading/templates/components/while-loading.js","addon-tree-output/ember-local-storage/adapters/adapter.js","addon-tree-output/ember-local-storage/adapters/base.js","addon-tree-output/ember-local-storage/adapters/local.js","addon-tree-output/ember-local-storage/adapters/session.js","addon-tree-output/ember-local-storage/helpers/import-export.js","addon-tree-output/ember-local-storage/helpers/storage.js","addon-tree-output/ember-local-storage/helpers/utils.js","addon-tree-output/ember-local-storage/index.js","addon-tree-output/ember-local-storage/local/array.js","addon-tree-output/ember-local-storage/local/object.js","addon-tree-output/ember-local-storage/mixins/adapters/import-export.js","addon-tree-output/ember-local-storage/mixins/array.js","addon-tree-output/ember-local-storage/mixins/object.js","addon-tree-output/ember-local-storage/mixins/storage.js","addon-tree-output/ember-local-storage/serializers/serializer.js","addon-tree-output/ember-local-storage/session/array.js","addon-tree-output/ember-local-storage/session/object.js","addon-tree-output/ember-modifier/-private/class/modifier-manager.js","addon-tree-output/ember-modifier/-private/class/modifier.js","addon-tree-output/ember-modifier/-private/compat.js","addon-tree-output/ember-modifier/-private/function-based/modifier-manager.js","addon-tree-output/ember-modifier/-private/function-based/modifier.js","addon-tree-output/ember-modifier/-private/functional/modifier-manager.js","addon-tree-output/ember-modifier/-private/functional/modifier.js","addon-tree-output/ember-modifier/-private/interfaces.js","addon-tree-output/ember-modifier/-private/opaque.js","addon-tree-output/ember-modifier/-private/signature.js","addon-tree-output/ember-modifier/-private/utils/symbol.js","addon-tree-output/ember-modifier/index.js","addon-tree-output/ember-on-helper/helpers/on-document.js","addon-tree-output/ember-on-helper/helpers/on-window.js","addon-tree-output/ember-on-helper/helpers/on.js","addon-tree-output/ember-on-helper/utils/event-listener.js","addon-tree-output/ember-on-resize-modifier/modifiers/on-resize.js","addon-tree-output/ember-popper-modifier/-base-popper-modifier.js","addon-tree-output/ember-popper-modifier/helpers/popper-modifier.js","addon-tree-output/ember-popper-modifier/in-runloop-modifier.js","addon-tree-output/ember-popper-modifier/index.js","addon-tree-output/ember-popper-modifier/modifiers/popper-tooltip.js","addon-tree-output/ember-popper-modifier/modifiers/popper.js","addon-tree-output/ember-popper-modifier/template-registry.js","addon-tree-output/ember-promise-helpers/helpers/await.js","addon-tree-output/ember-promise-helpers/helpers/is-fulfilled.js","addon-tree-output/ember-promise-helpers/helpers/is-pending.js","addon-tree-output/ember-promise-helpers/helpers/is-rejected.js","addon-tree-output/ember-promise-helpers/helpers/promise-all.js","addon-tree-output/ember-promise-helpers/helpers/promise-hash.js","addon-tree-output/ember-promise-helpers/helpers/promise-rejected-reason.js","addon-tree-output/ember-radio-button/components/radio-button-input.js","addon-tree-output/ember-radio-button/components/radio-button.js","addon-tree-output/ember-raf-scheduler/index.js","addon-tree-output/ember-ref-bucket/helpers/ref-to.js","addon-tree-output/ember-ref-bucket/index.js","addon-tree-output/ember-ref-bucket/instance-initializers/global-ref-cleanup.js","addon-tree-output/ember-ref-bucket/modifiers/create-ref.js","addon-tree-output/ember-ref-bucket/utils/prototype-reference.js","addon-tree-output/ember-ref-bucket/utils/ref.js","addon-tree-output/ember-resize-modifier/modifiers/did-resize.js","addon-tree-output/ember-resize-observer-polyfill/initializers/resize-observer-polyfill.js","addon-tree-output/ember-resize-observer-service/services/resize-observer.js","addon-tree-output/ember-resize-observer-service/utils/ignore-ro-error.js","addon-tree-output/ember-resolver/container-debug-adapter.js","addon-tree-output/ember-resolver/features.js","addon-tree-output/ember-resolver/index.js","addon-tree-output/ember-resolver/string/cache.js","addon-tree-output/ember-resolver/string/index.js","addon-tree-output/ember-resolver/utils/class-factory.js","addon-tree-output/ember-responsive/helpers/media.js","addon-tree-output/ember-responsive/initializers/responsive.js","addon-tree-output/ember-responsive/null-match-media.js","addon-tree-output/ember-responsive/services/media.js","addon-tree-output/ember-steps/-private/state-machine/-base.js","addon-tree-output/ember-steps/-private/state-machine/circular.js","addon-tree-output/ember-steps/-private/state-machine/linear.js","addon-tree-output/ember-steps/-private/step-node.js","addon-tree-output/ember-steps/components/step-manager.js","addon-tree-output/ember-steps/components/step-manager/step.js","addon-tree-output/ember-steps/helpers/validate-transition.js","addon-tree-output/ember-svg-jar/helpers/svg-jar.js","addon-tree-output/ember-svg-jar/inlined/activity.js","addon-tree-output/ember-svg-jar/inlined/airplay.js","addon-tree-output/ember-svg-jar/inlined/alert-circle.js","addon-tree-output/ember-svg-jar/inlined/alert-octagon.js","addon-tree-output/ember-svg-jar/inlined/alert-triangle.js","addon-tree-output/ember-svg-jar/inlined/align-center.js","addon-tree-output/ember-svg-jar/inlined/align-justify.js","addon-tree-output/ember-svg-jar/inlined/align-left.js","addon-tree-output/ember-svg-jar/inlined/align-right.js","addon-tree-output/ember-svg-jar/inlined/anchor.js","addon-tree-output/ember-svg-jar/inlined/aperture.js","addon-tree-output/ember-svg-jar/inlined/app-list.js","addon-tree-output/ember-svg-jar/inlined/archive.js","addon-tree-output/ember-svg-jar/inlined/arrow-down-circle.js","addon-tree-output/ember-svg-jar/inlined/arrow-down-left.js","addon-tree-output/ember-svg-jar/inlined/arrow-down-right.js","addon-tree-output/ember-svg-jar/inlined/arrow-down.js","addon-tree-output/ember-svg-jar/inlined/arrow-left-circle.js","addon-tree-output/ember-svg-jar/inlined/arrow-left.js","addon-tree-output/ember-svg-jar/inlined/arrow-right-circle.js","addon-tree-output/ember-svg-jar/inlined/arrow-right.js","addon-tree-output/ember-svg-jar/inlined/arrow-top.js","addon-tree-output/ember-svg-jar/inlined/arrow-up-circle.js","addon-tree-output/ember-svg-jar/inlined/arrow-up-left.js","addon-tree-output/ember-svg-jar/inlined/arrow-up-right.js","addon-tree-output/ember-svg-jar/inlined/arrow-up.js","addon-tree-output/ember-svg-jar/inlined/at-sign.js","addon-tree-output/ember-svg-jar/inlined/award.js","addon-tree-output/ember-svg-jar/inlined/bar-chart-2.js","addon-tree-output/ember-svg-jar/inlined/bar-chart.js","addon-tree-output/ember-svg-jar/inlined/battery-charging.js","addon-tree-output/ember-svg-jar/inlined/battery.js","addon-tree-output/ember-svg-jar/inlined/bell-off.js","addon-tree-output/ember-svg-jar/inlined/bell.js","addon-tree-output/ember-svg-jar/inlined/bluetooth.js","addon-tree-output/ember-svg-jar/inlined/bold.js","addon-tree-output/ember-svg-jar/inlined/book-open.js","addon-tree-output/ember-svg-jar/inlined/book.js","addon-tree-output/ember-svg-jar/inlined/bookmark.js","addon-tree-output/ember-svg-jar/inlined/box.js","addon-tree-output/ember-svg-jar/inlined/briefcase.js","addon-tree-output/ember-svg-jar/inlined/calendar-16px.js","addon-tree-output/ember-svg-jar/inlined/calendar-plus.js","addon-tree-output/ember-svg-jar/inlined/calendar.js","addon-tree-output/ember-svg-jar/inlined/camera-off.js","addon-tree-output/ember-svg-jar/inlined/camera.js","addon-tree-output/ember-svg-jar/inlined/cancel.js","addon-tree-output/ember-svg-jar/inlined/cargo-ship.js","addon-tree-output/ember-svg-jar/inlined/cast.js","addon-tree-output/ember-svg-jar/inlined/check-circle.js","addon-tree-output/ember-svg-jar/inlined/check-square.js","addon-tree-output/ember-svg-jar/inlined/check.js","addon-tree-output/ember-svg-jar/inlined/chevron-down.js","addon-tree-output/ember-svg-jar/inlined/chevron-left.js","addon-tree-output/ember-svg-jar/inlined/chevron-right.js","addon-tree-output/ember-svg-jar/inlined/chevron-up.js","addon-tree-output/ember-svg-jar/inlined/chevrons-down.js","addon-tree-output/ember-svg-jar/inlined/chevrons-left.js","addon-tree-output/ember-svg-jar/inlined/chevrons-right.js","addon-tree-output/ember-svg-jar/inlined/chevrons-up.js","addon-tree-output/ember-svg-jar/inlined/chrome.js","addon-tree-output/ember-svg-jar/inlined/circle.js","addon-tree-output/ember-svg-jar/inlined/clipboard.js","addon-tree-output/ember-svg-jar/inlined/clock.js","addon-tree-output/ember-svg-jar/inlined/clone.js","addon-tree-output/ember-svg-jar/inlined/close.js","addon-tree-output/ember-svg-jar/inlined/cloud-drizzle.js","addon-tree-output/ember-svg-jar/inlined/cloud-lightning.js","addon-tree-output/ember-svg-jar/inlined/cloud-off.js","addon-tree-output/ember-svg-jar/inlined/cloud-rain.js","addon-tree-output/ember-svg-jar/inlined/cloud-snow.js","addon-tree-output/ember-svg-jar/inlined/cloud.js","addon-tree-output/ember-svg-jar/inlined/code.js","addon-tree-output/ember-svg-jar/inlined/codepen.js","addon-tree-output/ember-svg-jar/inlined/codesandbox.js","addon-tree-output/ember-svg-jar/inlined/coffee.js","addon-tree-output/ember-svg-jar/inlined/columns.js","addon-tree-output/ember-svg-jar/inlined/command.js","addon-tree-output/ember-svg-jar/inlined/compass.js","addon-tree-output/ember-svg-jar/inlined/copy.js","addon-tree-output/ember-svg-jar/inlined/corner-down-left.js","addon-tree-output/ember-svg-jar/inlined/corner-down-right.js","addon-tree-output/ember-svg-jar/inlined/corner-left-down.js","addon-tree-output/ember-svg-jar/inlined/corner-left-up.js","addon-tree-output/ember-svg-jar/inlined/corner-right-down.js","addon-tree-output/ember-svg-jar/inlined/corner-right-up.js","addon-tree-output/ember-svg-jar/inlined/corner-up-left.js","addon-tree-output/ember-svg-jar/inlined/corner-up-right.js","addon-tree-output/ember-svg-jar/inlined/cpu.js","addon-tree-output/ember-svg-jar/inlined/crane-port.js","addon-tree-output/ember-svg-jar/inlined/credit-card.js","addon-tree-output/ember-svg-jar/inlined/crop.js","addon-tree-output/ember-svg-jar/inlined/crosshair.js","addon-tree-output/ember-svg-jar/inlined/dashboard-agents.js","addon-tree-output/ember-svg-jar/inlined/dashboard-brokers.js","addon-tree-output/ember-svg-jar/inlined/dashboard-cargo-grades.js","addon-tree-output/ember-svg-jar/inlined/dashboard-charterer.js","addon-tree-output/ember-svg-jar/inlined/dashboard-charterparty.js","addon-tree-output/ember-svg-jar/inlined/dashboard-claims.js","addon-tree-output/ember-svg-jar/inlined/dashboard-clients.js","addon-tree-output/ember-svg-jar/inlined/dashboard-dashboard.js","addon-tree-output/ember-svg-jar/inlined/dashboard-employees.js","addon-tree-output/ember-svg-jar/inlined/dashboard-finance.js","addon-tree-output/ember-svg-jar/inlined/dashboard-operations.js","addon-tree-output/ember-svg-jar/inlined/dashboard-ports.js","addon-tree-output/ember-svg-jar/inlined/dashboard-regions.js","addon-tree-output/ember-svg-jar/inlined/dashboard-shipowner.js","addon-tree-output/ember-svg-jar/inlined/dashboard-templates.js","addon-tree-output/ember-svg-jar/inlined/dashboard-terminals.js","addon-tree-output/ember-svg-jar/inlined/dashboard-vessel.js","addon-tree-output/ember-svg-jar/inlined/database.js","addon-tree-output/ember-svg-jar/inlined/delete.js","addon-tree-output/ember-svg-jar/inlined/disc.js","addon-tree-output/ember-svg-jar/inlined/divide-circle.js","addon-tree-output/ember-svg-jar/inlined/divide-square.js","addon-tree-output/ember-svg-jar/inlined/divide.js","addon-tree-output/ember-svg-jar/inlined/document.js","addon-tree-output/ember-svg-jar/inlined/dollar-sign.js","addon-tree-output/ember-svg-jar/inlined/down-16px.js","addon-tree-output/ember-svg-jar/inlined/down.js","addon-tree-output/ember-svg-jar/inlined/download-cloud.js","addon-tree-output/ember-svg-jar/inlined/download-v2.js","addon-tree-output/ember-svg-jar/inlined/download.js","addon-tree-output/ember-svg-jar/inlined/dribbble.js","addon-tree-output/ember-svg-jar/inlined/droplet.js","addon-tree-output/ember-svg-jar/inlined/edit-2.js","addon-tree-output/ember-svg-jar/inlined/edit-3.js","addon-tree-output/ember-svg-jar/inlined/edit.js","addon-tree-output/ember-svg-jar/inlined/ellipsis.js","addon-tree-output/ember-svg-jar/inlined/external-link.js","addon-tree-output/ember-svg-jar/inlined/eye-off.js","addon-tree-output/ember-svg-jar/inlined/eye.js","addon-tree-output/ember-svg-jar/inlined/facebook.js","addon-tree-output/ember-svg-jar/inlined/fast-forward.js","addon-tree-output/ember-svg-jar/inlined/feather.js","addon-tree-output/ember-svg-jar/inlined/figma.js","addon-tree-output/ember-svg-jar/inlined/file-minus.js","addon-tree-output/ember-svg-jar/inlined/file-plus.js","addon-tree-output/ember-svg-jar/inlined/file-text.js","addon-tree-output/ember-svg-jar/inlined/file.js","addon-tree-output/ember-svg-jar/inlined/film.js","addon-tree-output/ember-svg-jar/inlined/filter.js","addon-tree-output/ember-svg-jar/inlined/flag.js","addon-tree-output/ember-svg-jar/inlined/folder-minus.js","addon-tree-output/ember-svg-jar/inlined/folder-plus.js","addon-tree-output/ember-svg-jar/inlined/folder.js","addon-tree-output/ember-svg-jar/inlined/framer.js","addon-tree-output/ember-svg-jar/inlined/frown.js","addon-tree-output/ember-svg-jar/inlined/gift.js","addon-tree-output/ember-svg-jar/inlined/git-branch.js","addon-tree-output/ember-svg-jar/inlined/git-commit.js","addon-tree-output/ember-svg-jar/inlined/git-merge.js","addon-tree-output/ember-svg-jar/inlined/git-pull-request.js","addon-tree-output/ember-svg-jar/inlined/github.js","addon-tree-output/ember-svg-jar/inlined/gitlab.js","addon-tree-output/ember-svg-jar/inlined/globe.js","addon-tree-output/ember-svg-jar/inlined/grid.js","addon-tree-output/ember-svg-jar/inlined/hard-drive.js","addon-tree-output/ember-svg-jar/inlined/hash.js","addon-tree-output/ember-svg-jar/inlined/headphones.js","addon-tree-output/ember-svg-jar/inlined/heart.js","addon-tree-output/ember-svg-jar/inlined/help-circle.js","addon-tree-output/ember-svg-jar/inlined/hexagon.js","addon-tree-output/ember-svg-jar/inlined/home.js","addon-tree-output/ember-svg-jar/inlined/image.js","addon-tree-output/ember-svg-jar/inlined/inbox.js","addon-tree-output/ember-svg-jar/inlined/info.js","addon-tree-output/ember-svg-jar/inlined/information.js","addon-tree-output/ember-svg-jar/inlined/instagram.js","addon-tree-output/ember-svg-jar/inlined/italic.js","addon-tree-output/ember-svg-jar/inlined/key.js","addon-tree-output/ember-svg-jar/inlined/layers.js","addon-tree-output/ember-svg-jar/inlined/layout.js","addon-tree-output/ember-svg-jar/inlined/left-16px.js","addon-tree-output/ember-svg-jar/inlined/left.js","addon-tree-output/ember-svg-jar/inlined/life-buoy.js","addon-tree-output/ember-svg-jar/inlined/link-2.js","addon-tree-output/ember-svg-jar/inlined/link.js","addon-tree-output/ember-svg-jar/inlined/linkedin.js","addon-tree-output/ember-svg-jar/inlined/list.js","addon-tree-output/ember-svg-jar/inlined/loader.js","addon-tree-output/ember-svg-jar/inlined/lock.js","addon-tree-output/ember-svg-jar/inlined/log-in.js","addon-tree-output/ember-svg-jar/inlined/log-out.js","addon-tree-output/ember-svg-jar/inlined/logi-none-letter-inverse.js","addon-tree-output/ember-svg-jar/inlined/logo-full-inverse.js","addon-tree-output/ember-svg-jar/inlined/logo-full.js","addon-tree-output/ember-svg-jar/inlined/logo-none-letter.js","addon-tree-output/ember-svg-jar/inlined/mail.js","addon-tree-output/ember-svg-jar/inlined/map-pin.js","addon-tree-output/ember-svg-jar/inlined/map.js","addon-tree-output/ember-svg-jar/inlined/maximize-2.js","addon-tree-output/ember-svg-jar/inlined/maximize.js","addon-tree-output/ember-svg-jar/inlined/meh.js","addon-tree-output/ember-svg-jar/inlined/menu.js","addon-tree-output/ember-svg-jar/inlined/message-circle.js","addon-tree-output/ember-svg-jar/inlined/message-square.js","addon-tree-output/ember-svg-jar/inlined/mic-off.js","addon-tree-output/ember-svg-jar/inlined/mic.js","addon-tree-output/ember-svg-jar/inlined/minimize-2.js","addon-tree-output/ember-svg-jar/inlined/minimize.js","addon-tree-output/ember-svg-jar/inlined/minus-circle.js","addon-tree-output/ember-svg-jar/inlined/minus-square.js","addon-tree-output/ember-svg-jar/inlined/minus.js","addon-tree-output/ember-svg-jar/inlined/monitor.js","addon-tree-output/ember-svg-jar/inlined/moon.js","addon-tree-output/ember-svg-jar/inlined/more-horizontal.js","addon-tree-output/ember-svg-jar/inlined/more-vertical.js","addon-tree-output/ember-svg-jar/inlined/mouse-pointer.js","addon-tree-output/ember-svg-jar/inlined/move.js","addon-tree-output/ember-svg-jar/inlined/music.js","addon-tree-output/ember-svg-jar/inlined/navigation-2.js","addon-tree-output/ember-svg-jar/inlined/navigation.js","addon-tree-output/ember-svg-jar/inlined/notification-bell-custom.js","addon-tree-output/ember-svg-jar/inlined/notification-read.js","addon-tree-output/ember-svg-jar/inlined/notification.js","addon-tree-output/ember-svg-jar/inlined/octagon.js","addon-tree-output/ember-svg-jar/inlined/order.js","addon-tree-output/ember-svg-jar/inlined/package.js","addon-tree-output/ember-svg-jar/inlined/paperclip.js","addon-tree-output/ember-svg-jar/inlined/pause-circle.js","addon-tree-output/ember-svg-jar/inlined/pause.js","addon-tree-output/ember-svg-jar/inlined/pen-tool.js","addon-tree-output/ember-svg-jar/inlined/pencil.js","addon-tree-output/ember-svg-jar/inlined/percent.js","addon-tree-output/ember-svg-jar/inlined/phone-call.js","addon-tree-output/ember-svg-jar/inlined/phone-forwarded.js","addon-tree-output/ember-svg-jar/inlined/phone-incoming.js","addon-tree-output/ember-svg-jar/inlined/phone-missed.js","addon-tree-output/ember-svg-jar/inlined/phone-off.js","addon-tree-output/ember-svg-jar/inlined/phone-outgoing.js","addon-tree-output/ember-svg-jar/inlined/phone.js","addon-tree-output/ember-svg-jar/inlined/pie-chart.js","addon-tree-output/ember-svg-jar/inlined/play-circle.js","addon-tree-output/ember-svg-jar/inlined/play.js","addon-tree-output/ember-svg-jar/inlined/plus-circle.js","addon-tree-output/ember-svg-jar/inlined/plus-square.js","addon-tree-output/ember-svg-jar/inlined/plus.js","addon-tree-output/ember-svg-jar/inlined/pocket.js","addon-tree-output/ember-svg-jar/inlined/power.js","addon-tree-output/ember-svg-jar/inlined/printer.js","addon-tree-output/ember-svg-jar/inlined/radio.js","addon-tree-output/ember-svg-jar/inlined/refresh-ccw.js","addon-tree-output/ember-svg-jar/inlined/refresh-cw.js","addon-tree-output/ember-svg-jar/inlined/repeat.js","addon-tree-output/ember-svg-jar/inlined/rewind.js","addon-tree-output/ember-svg-jar/inlined/right-16px.js","addon-tree-output/ember-svg-jar/inlined/right.js","addon-tree-output/ember-svg-jar/inlined/rotate-ccw.js","addon-tree-output/ember-svg-jar/inlined/rotate-cw.js","addon-tree-output/ember-svg-jar/inlined/rss.js","addon-tree-output/ember-svg-jar/inlined/save.js","addon-tree-output/ember-svg-jar/inlined/scissors.js","addon-tree-output/ember-svg-jar/inlined/search.js","addon-tree-output/ember-svg-jar/inlined/send.js","addon-tree-output/ember-svg-jar/inlined/server.js","addon-tree-output/ember-svg-jar/inlined/settings.js","addon-tree-output/ember-svg-jar/inlined/share-2.js","addon-tree-output/ember-svg-jar/inlined/share.js","addon-tree-output/ember-svg-jar/inlined/shield-off.js","addon-tree-output/ember-svg-jar/inlined/shield.js","addon-tree-output/ember-svg-jar/inlined/shopping-bag.js","addon-tree-output/ember-svg-jar/inlined/shopping-cart.js","addon-tree-output/ember-svg-jar/inlined/shuffle.js","addon-tree-output/ember-svg-jar/inlined/sidebar.js","addon-tree-output/ember-svg-jar/inlined/skip-back.js","addon-tree-output/ember-svg-jar/inlined/skip-forward.js","addon-tree-output/ember-svg-jar/inlined/slack.js","addon-tree-output/ember-svg-jar/inlined/slash.js","addon-tree-output/ember-svg-jar/inlined/sliders.js","addon-tree-output/ember-svg-jar/inlined/smartphone.js","addon-tree-output/ember-svg-jar/inlined/smile.js","addon-tree-output/ember-svg-jar/inlined/speaker.js","addon-tree-output/ember-svg-jar/inlined/square.js","addon-tree-output/ember-svg-jar/inlined/star.js","addon-tree-output/ember-svg-jar/inlined/stop-circle.js","addon-tree-output/ember-svg-jar/inlined/sun.js","addon-tree-output/ember-svg-jar/inlined/sunrise.js","addon-tree-output/ember-svg-jar/inlined/sunset.js","addon-tree-output/ember-svg-jar/inlined/table.js","addon-tree-output/ember-svg-jar/inlined/tablet.js","addon-tree-output/ember-svg-jar/inlined/tag.js","addon-tree-output/ember-svg-jar/inlined/target.js","addon-tree-output/ember-svg-jar/inlined/terminal.js","addon-tree-output/ember-svg-jar/inlined/thermometer.js","addon-tree-output/ember-svg-jar/inlined/thumbs-down.js","addon-tree-output/ember-svg-jar/inlined/thumbs-up.js","addon-tree-output/ember-svg-jar/inlined/toggle-left.js","addon-tree-output/ember-svg-jar/inlined/toggle-right.js","addon-tree-output/ember-svg-jar/inlined/tool.js","addon-tree-output/ember-svg-jar/inlined/trash-2.js","addon-tree-output/ember-svg-jar/inlined/trash.js","addon-tree-output/ember-svg-jar/inlined/trello.js","addon-tree-output/ember-svg-jar/inlined/trending-down.js","addon-tree-output/ember-svg-jar/inlined/trending-up.js","addon-tree-output/ember-svg-jar/inlined/triangle.js","addon-tree-output/ember-svg-jar/inlined/truck.js","addon-tree-output/ember-svg-jar/inlined/tv.js","addon-tree-output/ember-svg-jar/inlined/twitch.js","addon-tree-output/ember-svg-jar/inlined/twitter.js","addon-tree-output/ember-svg-jar/inlined/type.js","addon-tree-output/ember-svg-jar/inlined/umbrella.js","addon-tree-output/ember-svg-jar/inlined/underline.js","addon-tree-output/ember-svg-jar/inlined/unlock.js","addon-tree-output/ember-svg-jar/inlined/unread.js","addon-tree-output/ember-svg-jar/inlined/up-16px.js","addon-tree-output/ember-svg-jar/inlined/up.js","addon-tree-output/ember-svg-jar/inlined/upload-cloud.js","addon-tree-output/ember-svg-jar/inlined/upload.js","addon-tree-output/ember-svg-jar/inlined/user-check.js","addon-tree-output/ember-svg-jar/inlined/user-minus.js","addon-tree-output/ember-svg-jar/inlined/user-plus.js","addon-tree-output/ember-svg-jar/inlined/user-x.js","addon-tree-output/ember-svg-jar/inlined/user.js","addon-tree-output/ember-svg-jar/inlined/users.js","addon-tree-output/ember-svg-jar/inlined/video-off.js","addon-tree-output/ember-svg-jar/inlined/video.js","addon-tree-output/ember-svg-jar/inlined/voicemail.js","addon-tree-output/ember-svg-jar/inlined/volume-1.js","addon-tree-output/ember-svg-jar/inlined/volume-2.js","addon-tree-output/ember-svg-jar/inlined/volume-x.js","addon-tree-output/ember-svg-jar/inlined/volume.js","addon-tree-output/ember-svg-jar/inlined/warning.js","addon-tree-output/ember-svg-jar/inlined/watch.js","addon-tree-output/ember-svg-jar/inlined/wifi-off.js","addon-tree-output/ember-svg-jar/inlined/wifi.js","addon-tree-output/ember-svg-jar/inlined/wind.js","addon-tree-output/ember-svg-jar/inlined/x-circle.js","addon-tree-output/ember-svg-jar/inlined/x-octagon.js","addon-tree-output/ember-svg-jar/inlined/x-square.js","addon-tree-output/ember-svg-jar/inlined/x.js","addon-tree-output/ember-svg-jar/inlined/youtube.js","addon-tree-output/ember-svg-jar/inlined/zap-off.js","addon-tree-output/ember-svg-jar/inlined/zap.js","addon-tree-output/ember-svg-jar/inlined/zoom-in.js","addon-tree-output/ember-svg-jar/inlined/zoom-out.js","addon-tree-output/ember-svg-jar/utils/make-svg.js","addon-tree-output/ember-table/-private/collapse-tree.js","addon-tree-output/ember-table/-private/column-tree.js","addon-tree-output/ember-table/-private/meta-cache.js","addon-tree-output/ember-table/-private/sticky/table-sticky-polyfill.js","addon-tree-output/ember-table/-private/utils/array.js","addon-tree-output/ember-table/-private/utils/default-to.js","addon-tree-output/ember-table/-private/utils/element.js","addon-tree-output/ember-table/-private/utils/ember.js","addon-tree-output/ember-table/-private/utils/observer.js","addon-tree-output/ember-table/-private/utils/reorder-indicators.js","addon-tree-output/ember-table/-private/utils/sort.js","addon-tree-output/ember-table/components/-private/base-table-cell.js","addon-tree-output/ember-table/components/-private/row-wrapper.js","addon-tree-output/ember-table/components/-private/scroll-indicators/component.js","addon-tree-output/ember-table/components/-private/scroll-indicators/template.js","addon-tree-output/ember-table/components/ember-table-loading-more/component.js","addon-tree-output/ember-table/components/ember-table-simple-checkbox.js","addon-tree-output/ember-table/components/ember-table/component.js","addon-tree-output/ember-table/components/ember-table/template.js","addon-tree-output/ember-table/components/ember-tbody/component.js","addon-tree-output/ember-table/components/ember-tbody/template.js","addon-tree-output/ember-table/components/ember-td/component.js","addon-tree-output/ember-table/components/ember-td/template.js","addon-tree-output/ember-table/components/ember-tfoot/component.js","addon-tree-output/ember-table/components/ember-tfoot/template.js","addon-tree-output/ember-table/components/ember-th/component.js","addon-tree-output/ember-table/components/ember-th/resize-handle/component.js","addon-tree-output/ember-table/components/ember-th/resize-handle/template.js","addon-tree-output/ember-table/components/ember-th/sort-indicator/component.js","addon-tree-output/ember-table/components/ember-th/sort-indicator/template.js","addon-tree-output/ember-table/components/ember-th/template.js","addon-tree-output/ember-table/components/ember-thead/component.js","addon-tree-output/ember-table/components/ember-thead/template.js","addon-tree-output/ember-table/components/ember-tr/component.js","addon-tree-output/ember-table/components/ember-tr/template.js","addon-tree-output/ember-test-waiters/index.js","addon-tree-output/ember-toggle/components/x-toggle-label.js","addon-tree-output/ember-toggle/components/x-toggle-switch.js","addon-tree-output/ember-toggle/components/x-toggle.js","addon-tree-output/ember-tracked-storage-polyfill/index.js","addon-tree-output/ember-url-hash-polyfill/index.js","addon-tree-output/ember-uuid/index.js","addon-tree-output/ember-uuid/utils/browser-rng.js","addon-tree-output/ember-uuid/utils/uuid-generator.js","addon-tree-output/ember-validators/collection.js","addon-tree-output/ember-validators/confirmation.js","addon-tree-output/ember-validators/date.js","addon-tree-output/ember-validators/ds-error.js","addon-tree-output/ember-validators/exclusion.js","addon-tree-output/ember-validators/format.js","addon-tree-output/ember-validators/inclusion.js","addon-tree-output/ember-validators/index.js","addon-tree-output/ember-validators/length.js","addon-tree-output/ember-validators/messages.js","addon-tree-output/ember-validators/number.js","addon-tree-output/ember-validators/presence.js","addon-tree-output/ember-validators/utils/is-promise.js","addon-tree-output/ember-validators/utils/unwrap-proxy.js","addon-tree-output/ember-validators/utils/validation-error.js","addon-tree-output/ember-wormhole/components/ember-wormhole.js","addon-tree-output/ember-wormhole/templates/components/ember-wormhole.js","addon-tree-output/ember-wormhole/utils/dom.js","addon-tree-output/tracked-maps-and-sets/-private/map.js","addon-tree-output/tracked-maps-and-sets/-private/set.js","addon-tree-output/tracked-maps-and-sets/-private/util.js","addon-tree-output/tracked-maps-and-sets/index.js","vendor/ember-cli/vendor-suffix.js"],"sourcesContent":["window.EmberENV = (function(EmberENV, extra) {\n  for (var key in extra) {\n    EmberENV[key] = extra[key];\n  }\n\n  return EmberENV;\n})(window.EmberENV || {}, {\"FEATURES\":{},\"EXTEND_PROTOTYPES\":{\"Date\":false},\"_APPLICATION_TEMPLATE_WRAPPER\":false,\"_DEFAULT_ASYNC_OBSERVERS\":true,\"_JQUERY_INTEGRATION\":false,\"_TEMPLATE_ONLY_GLIMMER_COMPONENTS\":true});\n\n// used to determine if the application should be booted immediately when `app-name.js` is evaluated\n// when `runningTests` the `app-name.js` file will **not** import the applications `app/app.js` and\n// call `Application.create(...)` on it. Additionally, applications can opt-out of this behavior by\n// setting `autoRun` to `false` in their `ember-cli-build.js`\n//\n// The default `test-support.js` file will set this to `true` when it runs (so that Application.create()\n// is not ran when running tests).\nvar runningTests = false;\n\n\n","var loader, define, requireModule, require, requirejs;\n\n(function (global) {\n  'use strict';\n\n  function dict() {\n    var obj = Object.create(null);\n    obj['__'] = undefined;\n    delete obj['__'];\n    return obj;\n  }\n\n  // Save off the original values of these globals, so we can restore them if someone asks us to\n  var oldGlobals = {\n    loader: loader,\n    define: define,\n    requireModule: requireModule,\n    require: require,\n    requirejs: requirejs\n  };\n\n  requirejs = require = requireModule = function (id) {\n    var pending = [];\n    var mod = findModule(id, '(require)', pending);\n\n    for (var i = pending.length - 1; i >= 0; i--) {\n      pending[i].exports();\n    }\n\n    return mod.module.exports;\n  };\n\n  loader = {\n    noConflict: function (aliases) {\n      var oldName, newName;\n\n      for (oldName in aliases) {\n        if (aliases.hasOwnProperty(oldName)) {\n          if (oldGlobals.hasOwnProperty(oldName)) {\n            newName = aliases[oldName];\n\n            global[newName] = global[oldName];\n            global[oldName] = oldGlobals[oldName];\n          }\n        }\n      }\n    },\n    // Option to enable or disable the generation of default exports\n    makeDefaultExport: true\n  };\n\n  var registry = dict();\n  var seen = dict();\n\n  var uuid = 0;\n\n  function unsupportedModule(length) {\n    throw new Error('an unsupported module was defined, expected `define(id, deps, module)` instead got: `' + length + '` arguments to define`');\n  }\n\n  var defaultDeps = ['require', 'exports', 'module'];\n\n  function Module(id, deps, callback, alias) {\n    this.uuid = uuid++;\n    this.id = id;\n    this.deps = !deps.length && callback.length ? defaultDeps : deps;\n    this.module = { exports: {} };\n    this.callback = callback;\n    this.hasExportsAsDep = false;\n    this.isAlias = alias;\n    this.reified = new Array(deps.length);\n\n    /*\n       Each module normally passes through these states, in order:\n         new       : initial state\n         pending   : this module is scheduled to be executed\n         reifying  : this module's dependencies are being executed\n         reified   : this module's dependencies finished executing successfully\n         errored   : this module's dependencies failed to execute\n         finalized : this module executed successfully\n     */\n    this.state = 'new';\n  }\n\n  Module.prototype.makeDefaultExport = function () {\n    var exports = this.module.exports;\n    if (exports !== null && (typeof exports === 'object' || typeof exports === 'function') && exports['default'] === undefined && Object.isExtensible(exports)) {\n      exports['default'] = exports;\n    }\n  };\n\n  Module.prototype.exports = function () {\n    // if finalized, there is no work to do. If reifying, there is a\n    // circular dependency so we must return our (partial) exports.\n    if (this.state === 'finalized' || this.state === 'reifying') {\n      return this.module.exports;\n    }\n\n\n    if (loader.wrapModules) {\n      this.callback = loader.wrapModules(this.id, this.callback);\n    }\n\n    this.reify();\n\n    var result = this.callback.apply(this, this.reified);\n    this.reified.length = 0;\n    this.state = 'finalized';\n\n    if (!(this.hasExportsAsDep && result === undefined)) {\n      this.module.exports = result;\n    }\n    if (loader.makeDefaultExport) {\n      this.makeDefaultExport();\n    }\n    return this.module.exports;\n  };\n\n  Module.prototype.unsee = function () {\n    this.state = 'new';\n    this.module = { exports: {} };\n  };\n\n  Module.prototype.reify = function () {\n    if (this.state === 'reified') {\n      return;\n    }\n    this.state = 'reifying';\n    try {\n      this.reified = this._reify();\n      this.state = 'reified';\n    } finally {\n      if (this.state === 'reifying') {\n        this.state = 'errored';\n      }\n    }\n  };\n\n  Module.prototype._reify = function () {\n    var reified = this.reified.slice();\n    for (var i = 0; i < reified.length; i++) {\n      var mod = reified[i];\n      reified[i] = mod.exports ? mod.exports : mod.module.exports();\n    }\n    return reified;\n  };\n\n  Module.prototype.findDeps = function (pending) {\n    if (this.state !== 'new') {\n      return;\n    }\n\n    this.state = 'pending';\n\n    var deps = this.deps;\n\n    for (var i = 0; i < deps.length; i++) {\n      var dep = deps[i];\n      var entry = this.reified[i] = { exports: undefined, module: undefined };\n      if (dep === 'exports') {\n        this.hasExportsAsDep = true;\n        entry.exports = this.module.exports;\n      } else if (dep === 'require') {\n        entry.exports = this.makeRequire();\n      } else if (dep === 'module') {\n        entry.exports = this.module;\n      } else {\n        entry.module = findModule(resolve(dep, this.id), this.id, pending);\n      }\n    }\n  };\n\n  Module.prototype.makeRequire = function () {\n    var id = this.id;\n    var r = function (dep) {\n      return require(resolve(dep, id));\n    };\n    r['default'] = r;\n    r.moduleId = id;\n    r.has = function (dep) {\n      return has(resolve(dep, id));\n    };\n    return r;\n  };\n\n  define = function (id, deps, callback) {\n    var module = registry[id];\n\n    // If a module for this id has already been defined and is in any state\n    // other than `new` (meaning it has been or is currently being required),\n    // then we return early to avoid redefinition.\n    if (module && module.state !== 'new') {\n      return;\n    }\n\n    if (arguments.length < 2) {\n      unsupportedModule(arguments.length);\n    }\n\n    if (!Array.isArray(deps)) {\n      callback = deps;\n      deps = [];\n    }\n\n    if (callback instanceof Alias) {\n      registry[id] = new Module(callback.id, deps, callback, true);\n    } else {\n      registry[id] = new Module(id, deps, callback, false);\n    }\n  };\n\n  define.exports = function (name, defaultExport) {\n    var module = registry[name];\n\n    // If a module for this name has already been defined and is in any state\n    // other than `new` (meaning it has been or is currently being required),\n    // then we return early to avoid redefinition.\n    if (module && module.state !== 'new') {\n      return;\n    }\n\n    module = new Module(name, [], noop, null);\n    module.module.exports = defaultExport;\n    module.state = 'finalized';\n    registry[name] = module;\n\n    return module;\n  };\n\n  function noop() {}\n  // we don't support all of AMD\n  // define.amd = {};\n\n  function Alias(id) {\n    this.id = id;\n  }\n\n  define.alias = function (id, target) {\n    if (arguments.length === 2) {\n      return define(target, new Alias(id));\n    }\n\n    return new Alias(id);\n  };\n\n  function missingModule(id, referrer) {\n    throw new Error('Could not find module `' + id + '` imported from `' + referrer + '`');\n  }\n\n  function findModule(id, referrer, pending) {\n    var mod = registry[id] || registry[id + '/index'];\n\n    while (mod && mod.isAlias) {\n      mod = registry[mod.id] || registry[mod.id + '/index'];\n    }\n\n    if (!mod) {\n      missingModule(id, referrer);\n    }\n\n    if (pending && mod.state !== 'pending' && mod.state !== 'finalized') {\n      mod.findDeps(pending);\n      pending.push(mod);\n    }\n    return mod;\n  }\n\n  function resolve(child, id) {\n    if (child.charAt(0) !== '.') {\n      return child;\n    }\n\n\n    var parts = child.split('/');\n    var nameParts = id.split('/');\n    var parentBase = nameParts.slice(0, -1);\n\n    for (var i = 0, l = parts.length; i < l; i++) {\n      var part = parts[i];\n\n      if (part === '..') {\n        if (parentBase.length === 0) {\n          throw new Error('Cannot access parent module of root');\n        }\n        parentBase.pop();\n      } else if (part === '.') {\n        continue;\n      } else {\n        parentBase.push(part);\n      }\n    }\n\n    return parentBase.join('/');\n  }\n\n  function has(id) {\n    return !!(registry[id] || registry[id + '/index']);\n  }\n\n  requirejs.entries = requirejs._eak_seen = registry;\n  requirejs.has = has;\n  requirejs.unsee = function (id) {\n    findModule(id, '(unsee)', false).unsee();\n  };\n\n  requirejs.clear = function () {\n    requirejs.entries = requirejs._eak_seen = registry = dict();\n    seen = dict();\n  };\n\n  // This code primes the JS engine for good performance by warming the\n  // JIT compiler for these functions.\n  define('foo', function () {});\n  define('foo/bar', [], function () {});\n  define('foo/asdf', ['module', 'exports', 'require'], function (module, exports, require) {\n    if (require.has('foo/bar')) {\n      require('foo/bar');\n    }\n  });\n  define('foo/baz', [], define.alias('foo'));\n  define('foo/quz', define.alias('foo'));\n  define.alias('foo', 'foo/qux');\n  define('foo/bar', ['foo', './quz', './baz', './asdf', './bar', '../foo'], function () {});\n  define('foo/main', ['foo/bar'], function () {});\n  define.exports('foo/exports', {});\n\n  require('foo/exports');\n  require('foo/main');\n  require.unsee('foo/bar');\n\n  requirejs.clear();\n\n  if (typeof exports === 'object' && typeof module === 'object' && module.exports) {\n    module.exports = { require: require, define: define };\n  }\n})(this);","var _templateObject,_templateObject2,_templateObject3,_templateObject4,_templateObject5,_templateObject6,_templateObject7,_templateObject8;var _excluded=[\"once\",\"passive\",\"capture\"],_excluded2=[\"__ARGS__\"];function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a);}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError(\"Cannot initialize the same private elements twice on an object\");}function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)o=s[r],t.includes(o)||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o]);}return i;}function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(e.includes(n))continue;t[n]=r[n];}return t;}function _wrapNativeSuper(t){var r=\"function\"==typeof Map?new Map():void 0;return _wrapNativeSuper=function _wrapNativeSuper(t){if(null===t||!_isNativeFunction(t))return t;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,Wrapper);}function Wrapper(){return _construct(t,arguments,_getPrototypeOf(this).constructor);}return Wrapper.prototype=Object.create(t.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,t);},_wrapNativeSuper(t);}function _construct(t,e,r){if(_isNativeReflectConstruct())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,e);var p=new(t.bind.apply(t,o))();return r&&_setPrototypeOf(p,r.prototype),p;}function _isNativeFunction(t){try{return-1!==Function.toString.call(t).indexOf(\"[native code]\");}catch(n){return\"function\"==typeof t;}}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&(\"object\"==_typeof(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get2(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&\"function\"==typeof p?function(t){return p.apply(e,t);}:p;}function _get2(){return _get2=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get2.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}function _toArray(r){return _arrayWithHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableRest();}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _iterableToArray(r){if(\"undefined\"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r[\"@@iterator\"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _iterableToArrayLimit(r,l){var t=null==r?null:\"undefined\"!=typeof Symbol&&r[Symbol.iterator]||r[\"@@iterator\"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1;}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r;}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return;}finally{if(o)throw n;}}return a;}}function _arrayWithHoles(r){if(Array.isArray(r))return r;}function _createForOfIteratorHelper(r,e){var t=\"undefined\"!=typeof Symbol&&r[Symbol.iterator]||r[\"@@iterator\"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&\"number\"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]};},e:function e(r){throw r;},f:F};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t.return||t.return();}finally{if(u)throw o;}}};}function _unsupportedIterableToArray(r,a){if(r){if(\"string\"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return\"Object\"===t&&r.constructor&&(t=r.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(r):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function _regeneratorRuntime(){\"use strict\";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_regeneratorRuntime=function _regeneratorRuntime(){return e;};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value;},i=\"function\"==typeof Symbol?Symbol:{},a=i.iterator||\"@@iterator\",c=i.asyncIterator||\"@@asyncIterator\",u=i.toStringTag||\"@@toStringTag\";function define(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e];}try{define({},\"\");}catch(t){define=function define(t,e,r){return t[e]=r;};}function wrap(t,e,r,n){var i=e&&e.prototype instanceof Generator?e:Generator,a=Object.create(i.prototype),c=new Context(n||[]);return o(a,\"_invoke\",{value:makeInvokeMethod(t,r,c)}),a;}function tryCatch(t,e,r){try{return{type:\"normal\",arg:t.call(e,r)};}catch(t){return{type:\"throw\",arg:t};}}e.wrap=wrap;var h=\"suspendedStart\",l=\"suspendedYield\",f=\"executing\",s=\"completed\",y={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var p={};define(p,a,function(){return this;});var d=Object.getPrototypeOf,v=d&&d(d(values([])));v&&v!==r&&n.call(v,a)&&(p=v);var g=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(p);function defineIteratorMethods(t){[\"next\",\"throw\",\"return\"].forEach(function(e){define(t,e,function(t){return this._invoke(e,t);});});}function AsyncIterator(t,e){function invoke(r,o,i,a){var c=tryCatch(t[r],t,o);if(\"throw\"!==c.type){var u=c.arg,h=u.value;return h&&\"object\"==_typeof(h)&&n.call(h,\"__await\")?e.resolve(h.__await).then(function(t){invoke(\"next\",t,i,a);},function(t){invoke(\"throw\",t,i,a);}):e.resolve(h).then(function(t){u.value=t,i(u);},function(t){return invoke(\"throw\",t,i,a);});}a(c.arg);}var r;o(this,\"_invoke\",{value:function value(t,n){function callInvokeWithMethodAndArg(){return new e(function(e,r){invoke(t,n,e,r);});}return r=r?r.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg();}});}function makeInvokeMethod(e,r,n){var o=h;return function(i,a){if(o===f)throw Error(\"Generator is already running\");if(o===s){if(\"throw\"===i)throw a;return{value:t,done:!0};}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=maybeInvokeDelegate(c,n);if(u){if(u===y)continue;return u;}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(o===h)throw o=s,n.arg;n.dispatchException(n.arg);}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);o=f;var p=tryCatch(e,r,n);if(\"normal\"===p.type){if(o=n.done?s:l,p.arg===y)continue;return{value:p.arg,done:n.done};}\"throw\"===p.type&&(o=s,n.method=\"throw\",n.arg=p.arg);}};}function maybeInvokeDelegate(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,\"throw\"===n&&e.iterator.return&&(r.method=\"return\",r.arg=t,maybeInvokeDelegate(e,r),\"throw\"===r.method)||\"return\"!==n&&(r.method=\"throw\",r.arg=new TypeError(\"The iterator does not provide a '\"+n+\"' method\")),y;var i=tryCatch(o,e.iterator,r.arg);if(\"throw\"===i.type)return r.method=\"throw\",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,\"return\"!==r.method&&(r.method=\"next\",r.arg=t),r.delegate=null,y):a:(r.method=\"throw\",r.arg=new TypeError(\"iterator result is not an object\"),r.delegate=null,y);}function pushTryEntry(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e);}function resetTryEntry(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e;}function Context(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(pushTryEntry,this),this.reset(!0);}function values(e){if(e||\"\"===e){var r=e[a];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function next(){for(;++o<e.length;)if(n.call(e,o))return next.value=e[o],next.done=!1,next;return next.value=t,next.done=!0,next;};return i.next=i;}}throw new TypeError(_typeof(e)+\" is not iterable\");}return GeneratorFunction.prototype=GeneratorFunctionPrototype,o(g,\"constructor\",{value:GeneratorFunctionPrototype,configurable:!0}),o(GeneratorFunctionPrototype,\"constructor\",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,u,\"GeneratorFunction\"),e.isGeneratorFunction=function(t){var e=\"function\"==typeof t&&t.constructor;return!!e&&(e===GeneratorFunction||\"GeneratorFunction\"===(e.displayName||e.name));},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,define(t,u,\"GeneratorFunction\")),t.prototype=Object.create(g),t;},e.awrap=function(t){return{__await:t};},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,c,function(){return this;}),e.AsyncIterator=AsyncIterator,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then(function(t){return t.done?t.value:a.next();});},defineIteratorMethods(g),define(g,u,\"Generator\"),define(g,a,function(){return this;}),define(g,\"toString\",function(){return\"[object Generator]\";}),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in e)return next.value=t,next.done=!1,next;}return next.done=!0,next;};},e.values=values,Context.prototype={constructor:Context,reset:function reset(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=t,this.tryEntries.forEach(resetTryEntry),!e)for(var r in this)\"t\"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t);},stop:function stop(){this.done=!0;var t=this.tryEntries[0].completion;if(\"throw\"===t.type)throw t.arg;return this.rval;},dispatchException:function dispatchException(e){if(this.done)throw e;var r=this;function handle(n,o){return a.type=\"throw\",a.arg=e,r.next=n,o&&(r.method=\"next\",r.arg=t),!!o;}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return handle(\"end\");if(i.tryLoc<=this.prev){var c=n.call(i,\"catchLoc\"),u=n.call(i,\"finallyLoc\");if(c&&u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc);}else if(c){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);}else{if(!u)throw Error(\"try statement without catch or finally\");if(this.prev<i.finallyLoc)return handle(i.finallyLoc);}}}},abrupt:function abrupt(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break;}}i&&(\"break\"===t||\"continue\"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method=\"next\",this.next=i.finallyLoc,y):this.complete(a);},complete:function complete(t,e){if(\"throw\"===t.type)throw t.arg;return\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=this.arg=t.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===t.type&&e&&(this.next=e),y;},finish:function finish(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y;}},catch:function _catch(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;resetTryEntry(r);}return o;}}throw Error(\"illegal catch attempt\");},delegateYield:function delegateYield(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},\"next\"===this.method&&(this.arg=t),y;}},e;}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,\"prototype\",{writable:!1}),e;}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError(\"Cannot call a class as a function\");}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e;}function _toPropertyKey(t){var i=_toPrimitive(t,\"string\");return\"symbol\"==_typeof(i)?i:i+\"\";}function _toPrimitive(t,r){if(\"object\"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||\"default\");if(\"object\"!=_typeof(i))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\");}return(\"string\"===r?String:Number)(t);}function _typeof(o){\"@babel/helpers - typeof\";return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&\"function\"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?\"symbol\":typeof o;},_typeof(o);}/*!\n * @overview  Ember - JavaScript Application Framework\n * @copyright Copyright 2011 Tilde Inc. and contributors\n *            Portions Copyright 2006-2011 Strobe Inc.\n *            Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license   Licensed under MIT license\n *            See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version   5.12.0\n *//* eslint-disable no-var *//* globals global globalThis self *//* eslint-disable-next-line no-unused-vars */var define,require;(function(){var globalObj=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:typeof window!=='undefined'?window:typeof global!=='undefined'?global:null;if(globalObj===null){throw new Error('unable to locate global object');}if(typeof globalObj.define==='function'&&typeof globalObj.require==='function'){define=globalObj.define;require=globalObj.require;return;}var registry=Object.create(null);var seen=Object.create(null);function missingModule(name,referrerName){if(referrerName){throw new Error('Could not find module '+name+' required by: '+referrerName);}else{throw new Error('Could not find module '+name);}}function internalRequire(_name,referrerName){var name=_name;var mod=registry[name];if(!mod){name=name+'/index';mod=registry[name];}var exports=seen[name];if(exports!==undefined){return exports;}exports=seen[name]={};if(!mod){missingModule(_name,referrerName);}var deps=mod.deps;var callback=mod.callback;var reified=new Array(deps.length);for(var i=0;i<deps.length;i++){if(deps[i]==='exports'){reified[i]=exports;}else if(deps[i]==='require'){reified[i]=require;}else{reified[i]=require(deps[i],name);}}var result=callback.apply(this,reified);if(!deps.includes('exports')||result!==undefined){exports=seen[name]=result;}return exports;}require=function require(name){return internalRequire(name,null);};define=function define(name,deps,callback){registry[name]={deps:deps,callback:callback};};// setup `require` module\nrequire['default']=require;require.has=function registryHas(moduleName){return Boolean(registry[moduleName])||Boolean(registry[moduleName+'/index']);};require._eak_seen=require.entries=registry;})();(function(_ENV$_OVERRIDE_DEPREC,_LocalValue,_AbstractInput,_Input2,_CoreView,_LinkTo2,_Textarea2,_NativeArray,_Route,_RouterService){'use strict';var _marked=/*#__PURE__*/_regeneratorRuntime().mark(reverse),_marked2=/*#__PURE__*/_regeneratorRuntime().mark(enumerate);function d(name,mod){Object.defineProperty(mod,'__esModule',{value:true});define(name,[],function(){return mod;});}// check if window exists and actually is the global\nvar hasDOM=(typeof self===\"undefined\"?\"undefined\":_typeof(self))==='object'&&self!==null&&self.Object===Object&&typeof Window!=='undefined'&&self.constructor===Window&&(typeof document===\"undefined\"?\"undefined\":_typeof(document))==='object'&&document!==null&&self.document===document&&(typeof location===\"undefined\"?\"undefined\":_typeof(location))==='object'&&location!==null&&self.location===location&&(typeof history===\"undefined\"?\"undefined\":_typeof(history))==='object'&&history!==null&&self.history===history&&(typeof navigator===\"undefined\"?\"undefined\":_typeof(navigator))==='object'&&navigator!==null&&self.navigator===navigator&&typeof navigator.userAgent==='string';var window$1=hasDOM?self:null;var location$1=hasDOM?self.location:null;var history$1=hasDOM?self.history:null;var userAgent=hasDOM?self.navigator.userAgent:'Lynx (textmode)';var isChrome=hasDOM?(typeof chrome===\"undefined\"?\"undefined\":_typeof(chrome))==='object'&&!((typeof opera===\"undefined\"?\"undefined\":_typeof(opera))==='object'):false;var isFirefox=hasDOM?/Firefox|FxiOS/.test(userAgent):false;var emberinternalsBrowserEnvironmentIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,hasDOM:hasDOM,history:history$1,isChrome:isChrome,isFirefox:isFirefox,location:location$1,userAgent:userAgent,window:window$1},Symbol.toStringTag,{value:'Module'});/**\n            Strongly hint runtimes to intern the provided string.\n\n            When do I need to use this function?\n\n            For the most part, never. Pre-mature optimization is bad, and often the\n            runtime does exactly what you need it to, and more often the trade-off isn't\n            worth it.\n\n            Why?\n\n            Runtimes store strings in at least 2 different representations:\n            Ropes and Symbols (interned strings). The Rope provides a memory efficient\n            data-structure for strings created from concatenation or some other string\n            manipulation like splitting.\n\n            Unfortunately checking equality of different ropes can be quite costly as\n            runtimes must resort to clever string comparison algorithms. These\n            algorithms typically cost in proportion to the length of the string.\n            Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n            unique by their string content, equality checks can be done by pointer\n            comparison.\n\n            How do I know if my string is a rope or symbol?\n\n            Typically (warning general sweeping statement, but truthy in runtimes at\n            present) static strings created as part of the JS source are interned.\n            Strings often used for comparisons can be interned at runtime if some\n            criteria are met.  One of these criteria can be the size of the entire rope.\n            For example, in chrome 38 a rope longer then 12 characters will not\n            intern, nor will segments of that rope.\n\n            Some numbers: http://jsperf.com/eval-vs-keys/8\n\n            Known Trick™\n\n            @private\n            @return {String} interned version of the provided string\n          */function intern$1(str){var obj=Object.create(null);obj[str]=1;for(var key in obj){if(key===str){return key;}}return str;}/**\n            Returns whether Type(value) is Object.\n\n            Useful for checking whether a value is a valid WeakMap key.\n\n            Refs: https://tc39.github.io/ecma262/#sec-typeof-operator-runtime-semantics-evaluation\n                  https://tc39.github.io/ecma262/#sec-weakmap.prototype.set\n\n            @private\n            @function isObject\n          */function isObject$1(value){return value!==null&&(_typeof(value)==='object'||typeof value==='function');}/**\n           @module @ember/object\n          *//**\n           @private\n           @return {Number} the uuid\n           */var _uuid$1=0;/**\n           Generates a universally unique identifier. This method\n           is used internally by Ember for assisting with\n           the generation of GUID's and other unique identifiers.\n\n           @public\n           @return {Number} [description]\n           */function uuid$1(){return++_uuid$1;}/**\n           Prefix used for guids through out Ember.\n           @private\n           @property GUID_PREFIX\n           @for Ember\n           @type String\n           @final\n           */var GUID_PREFIX='ember';// Used for guid generation...\nvar OBJECT_GUIDS=new WeakMap();var NON_OBJECT_GUIDS=new Map();/**\n            A unique key used to assign guids and other private metadata to objects.\n            If you inspect an object in your browser debugger you will often see these.\n            They can be safely ignored.\n\n            On browsers that support it, these properties are added with enumeration\n            disabled so they won't show up when you iterate over your properties.\n\n            @private\n            @property GUID_KEY\n            @for Ember\n            @type String\n            @final\n          */var GUID_KEY=intern$1(\"__ember\".concat(Date.now()));/**\n            Generates a new guid, optionally saving the guid to the object that you\n            pass in. You will rarely need to use this method. Instead you should\n            call `guidFor(obj)`, which return an existing guid if available.\n\n            @private\n            @method generateGuid\n            @static\n            @for @ember/object/internals\n            @param {Object} [obj] Object the guid will be used for. If passed in, the guid will\n              be saved on the object and reused whenever you pass the same object\n              again.\n\n              If no object is passed, just generate a new guid.\n            @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to\n              separate the guid into separate namespaces.\n            @return {String} the guid\n          */function generateGuid(obj){var prefix=arguments.length>1&&arguments[1]!==undefined?arguments[1]:GUID_PREFIX;var guid=prefix+uuid$1().toString();if(isObject$1(obj)){OBJECT_GUIDS.set(obj,guid);}return guid;}/**\n            Returns a unique id for the object. If the object does not yet have a guid,\n            one will be assigned to it. You can call this on any object,\n            `EmberObject`-based or not.\n\n            You can also use this method on DOM Element objects.\n\n            @public\n            @static\n            @method guidFor\n            @for @ember/object/internals\n            @param {Object} obj any object, string, number, Element, or primitive\n            @return {String} the unique guid for this instance.\n          */function guidFor(value){var guid;if(isObject$1(value)){guid=OBJECT_GUIDS.get(value);if(guid===undefined){guid=\"\".concat(GUID_PREFIX).concat(uuid$1());OBJECT_GUIDS.set(value,guid);}}else{guid=NON_OBJECT_GUIDS.get(value);if(guid===undefined){var type=_typeof(value);if(type==='string'){guid=\"st\".concat(uuid$1());}else if(type==='number'){guid=\"nu\".concat(uuid$1());}else if(type==='symbol'){guid=\"sy\".concat(uuid$1());}else{guid=\"(\".concat(value,\")\");}NON_OBJECT_GUIDS.set(value,guid);}}return guid;}var GENERATED_SYMBOLS=[];function isInternalSymbol(possibleSymbol){return GENERATED_SYMBOLS.indexOf(possibleSymbol)!==-1;}// Some legacy symbols still need to be enumerable for a variety of reasons.\n// This code exists for that, and as a fallback in IE11. In general, prefer\n// `symbol` below when creating a new symbol.\nfunction enumerableSymbol(debugName){// TODO: Investigate using platform symbols, but we do not\n// want to require non-enumerability for this API, which\n// would introduce a large cost.\nvar id=GUID_KEY+Math.floor(Math.random()*Date.now()).toString();var symbol=intern$1(\"__\".concat(debugName).concat(id,\"__\"));{GENERATED_SYMBOLS.push(symbol);}return symbol;}var symbol=Symbol;// the delete is meant to hint at runtimes that this object should remain in\n// dictionary mode. This is clearly a runtime specific hack, but currently it\n// appears worthwhile in some usecases. Please note, these deletes do increase\n// the cost of creation dramatically over a plain Object.create. And as this\n// only makes sense for long-lived dictionaries that aren't instantiated often.\nfunction makeDictionary(parent){var dict=Object.create(parent);dict['_dict']=null;delete dict['_dict'];return dict;}var getDebugName;{var getFunctionName=function getFunctionName(fn){var functionName=fn.name;if(functionName===undefined){var _match2=Function.prototype.toString.call(fn).match(/function (\\w+)\\s*\\(/);functionName=_match2&&_match2[1]||'';}return functionName.replace(/^bound /,'');};var getObjectName=function getObjectName(obj){var name;var className;if(obj.constructor&&obj.constructor!==Object){className=getFunctionName(obj.constructor);}if('toString'in obj&&obj.toString!==Object.prototype.toString&&obj.toString!==Function.prototype.toString){name=obj.toString();}// If the class has a decent looking name, and the `toString` is one of the\n// default Ember toStrings, replace the constructor portion of the toString\n// with the class name. We check the length of the class name to prevent doing\n// this when the value is minified.\nif(name&&name.match(/<.*:ember\\d+>/)&&className&&className[0]!=='_'&&className.length>2&&className!=='Class'){return name.replace(/<.*:/,\"<\".concat(className,\":\"));}return name||className;};var getPrimitiveName=function getPrimitiveName(value){return String(value);};getDebugName=function getDebugName(value){if(typeof value==='function'){return getFunctionName(value)||\"(unknown function)\";}else if(_typeof(value)==='object'&&value!==null){return getObjectName(value)||\"(unknown object)\";}else{return getPrimitiveName(value);}};}var getDebugName$1=getDebugName;var HAS_SUPER_PATTERN=/\\.(_super|call\\(this|apply\\(this)/;var fnToString=Function.prototype.toString;var checkHasSuper=function(){var sourceAvailable=fnToString.call(function(){return this;}).indexOf('return this')>-1;if(sourceAvailable){return function checkHasSuper(func){return HAS_SUPER_PATTERN.test(fnToString.call(func));};}return function checkHasSuper(){return true;};}();var HAS_SUPER_MAP=new WeakMap();var ROOT=Object.freeze(function(){});HAS_SUPER_MAP.set(ROOT,false);function hasSuper(func){var hasSuper=HAS_SUPER_MAP.get(func);if(hasSuper===undefined){hasSuper=checkHasSuper(func);HAS_SUPER_MAP.set(func,hasSuper);}return hasSuper;}var ObserverListenerMeta=/*#__PURE__*/_createClass(function ObserverListenerMeta(){_classCallCheck(this,ObserverListenerMeta);_defineProperty(this,\"listeners\",undefined);_defineProperty(this,\"observers\",undefined);});var OBSERVERS_LISTENERS_MAP=new WeakMap();function createObserverListenerMetaFor(fn){var meta=OBSERVERS_LISTENERS_MAP.get(fn);if(meta===undefined){meta=new ObserverListenerMeta();OBSERVERS_LISTENERS_MAP.set(fn,meta);}return meta;}function observerListenerMetaFor(fn){return OBSERVERS_LISTENERS_MAP.get(fn);}function setObservers(func,observers){var meta=createObserverListenerMetaFor(func);meta.observers=observers;}function setListeners(func,listeners){var meta=createObserverListenerMetaFor(func);meta.listeners=listeners;}var IS_WRAPPED_FUNCTION_SET=new WeakSet();/**\n            Wraps the passed function so that `this._super` will point to the superFunc\n            when the function is invoked. This is the primitive we use to implement\n            calls to super.\n\n            @private\n            @method wrap\n            @for Ember\n            @param {Function} func The function to call\n            @param {Function} superFunc The super function.\n            @return {Function} wrapped function.\n          */function wrap$1(func,superFunc){if(!hasSuper(func)){return func;}// ensure an unwrapped super that calls _super is wrapped with a terminal _super\nif(!IS_WRAPPED_FUNCTION_SET.has(superFunc)&&hasSuper(superFunc)){return _wrap(func,_wrap(superFunc,ROOT));}return _wrap(func,superFunc);}function _wrap(func,superFunc){function superWrapper(){var orig=this._super;this._super=superFunc;var ret=func.apply(this,arguments);this._super=orig;return ret;}IS_WRAPPED_FUNCTION_SET.add(superWrapper);var meta=OBSERVERS_LISTENERS_MAP.get(func);if(meta!==undefined){OBSERVERS_LISTENERS_MAP.set(superWrapper,meta);}return superWrapper;}function lookupDescriptor(obj,keyName){var current=obj;do{var descriptor=Object.getOwnPropertyDescriptor(current,keyName);if(descriptor!==undefined){return descriptor;}current=Object.getPrototypeOf(current);}while(current!==null);return null;}/**\n            Checks to see if the `methodName` exists on the `obj`.\n\n            ```javascript\n            let foo = { bar: function() { return 'bar'; }, baz: null };\n\n            Ember.canInvoke(foo, 'bar'); // true\n            Ember.canInvoke(foo, 'baz'); // false\n            Ember.canInvoke(foo, 'bat'); // false\n            ```\n\n            @method canInvoke\n            @for Ember\n            @param {Object} obj The object to check for the method\n            @param {String} methodName The method name to check for\n            @return {Boolean}\n            @private\n          */function canInvoke(obj,methodName){return obj!=null&&typeof obj[methodName]==='function';}/**\n            @module @ember/utils\n          */var NAMES=new WeakMap();function setName(obj,name){if(isObject$1(obj))NAMES.set(obj,name);}function getName(obj){return NAMES.get(obj);}var objectToString$1=Object.prototype.toString;function isNone$1(obj){return obj===null||obj===undefined;}/*\n           A `toString` util function that supports objects without a `toString`\n           method, e.g. an object created with `Object.create(null)`.\n          */function toString$1(obj){if(typeof obj==='string'){return obj;}if(null===obj)return'null';if(undefined===obj)return'undefined';if(Array.isArray(obj)){// Reimplement Array.prototype.join according to spec (22.1.3.13)\n// Changing ToString(element) with this safe version of ToString.\nvar r='';for(var k=0;k<obj.length;k++){if(k>0){r+=',';}if(!isNone$1(obj[k])){r+=toString$1(obj[k]);}}return r;}if(typeof obj.toString==='function'){return obj.toString();}return objectToString$1.call(obj);}var PROXIES=new WeakSet();function isProxy(value){if(isObject$1(value)){return PROXIES.has(value);}return false;}function setProxy(object){if(isObject$1(object)){PROXIES.add(object);}}var Cache=/*#__PURE__*/function(){function Cache(limit,func){var store=arguments.length>2&&arguments[2]!==undefined?arguments[2]:new Map();_classCallCheck(this,Cache);_defineProperty(this,\"size\",0);_defineProperty(this,\"misses\",0);_defineProperty(this,\"hits\",0);this.limit=limit;this.func=func;this.store=store;}return _createClass(Cache,[{key:\"get\",value:function get(key){if(this.store.has(key)){this.hits++;// SAFETY: we know the value is present because `.has(key)` was `true`.\nreturn this.store.get(key);}else{this.misses++;return this.set(key,this.func(key));}}},{key:\"set\",value:function set(key,value){if(this.limit>this.size){this.size++;this.store.set(key,value);}return value;}},{key:\"purge\",value:function purge(){this.store.clear();this.size=0;this.hits=0;this.misses=0;}}]);}();/* globals window, self */// from lodash to catch fake globals\nfunction checkGlobal(value){return value&&value.Object===Object?value:undefined;}// element ids can ruin global miss checks\nfunction checkElementIdShadowing(value){return value&&value.nodeType===undefined?value:undefined;}// export real global\nvar global$1=checkGlobal(checkElementIdShadowing((typeof global===\"undefined\"?\"undefined\":_typeof(global))==='object'&&global))||checkGlobal((typeof self===\"undefined\"?\"undefined\":_typeof(self))==='object'&&self)||checkGlobal((typeof window===\"undefined\"?\"undefined\":_typeof(window))==='object'&&window)||typeof mainContext!=='undefined'&&mainContext||// set before strict mode in Ember loader/wrapper\nnew Function('return this')();// eval outside of strict mode\n// legacy imports/exports/lookup stuff (should we keep this??)\nvar context$1=function(global,Ember){return Ember===undefined?{imports:global,exports:global,lookup:global}:{// import jQuery\nimports:Ember.imports||global,// export Ember\nexports:Ember.exports||global,// search for Namespaces\nlookup:Ember.lookup||global};}(global$1,global$1.Ember);function getLookup(){return context$1.lookup;}function setLookup(value){context$1.lookup=value;}/**\n            The hash of environment variables used to control various configuration\n            settings. To specify your own or override default settings, add the\n            desired properties to a global hash named `EmberENV` (or `ENV` for\n            backwards compatibility with earlier versions of Ember). The `EmberENV`\n            hash must be created before loading Ember.\n\n            @class EmberENV\n            @type Object\n            @public\n          */var ENV={ENABLE_OPTIONAL_FEATURES:false,/**\n              Determines whether Ember should add to `Array`\n              native object prototypes, a few extra methods in order to provide a more\n              friendly API.\n               We generally recommend leaving this option set to true however, if you need\n              to turn it off, you can add the configuration property\n              `EXTEND_PROTOTYPES` to `EmberENV` and set it to `false`.\n               Note, when disabled (the default configuration for Ember Addons), you will\n              instead have to access all methods and functions from the Ember\n              namespace.\n               @property EXTEND_PROTOTYPES\n              @type Boolean\n              @default true\n              @for EmberENV\n              @public\n            */EXTEND_PROTOTYPES:{Array:true},/**\n              The `LOG_STACKTRACE_ON_DEPRECATION` property, when true, tells Ember to log\n              a full stack trace during deprecation warnings.\n               @property LOG_STACKTRACE_ON_DEPRECATION\n              @type Boolean\n              @default true\n              @for EmberENV\n              @public\n            */LOG_STACKTRACE_ON_DEPRECATION:true,/**\n              The `LOG_VERSION` property, when true, tells Ember to log versions of all\n              dependent libraries in use.\n               @property LOG_VERSION\n              @type Boolean\n              @default true\n              @for EmberENV\n              @public\n            */LOG_VERSION:true,RAISE_ON_DEPRECATION:false,STRUCTURED_PROFILE:false,/**\n              Whether to perform extra bookkeeping needed to make the `captureRenderTree`\n              API work.\n               This has to be set before the ember JavaScript code is evaluated. This is\n              usually done by setting `window.EmberENV = { _DEBUG_RENDER_TREE: true };`\n              before the \"vendor\" `<script>` tag in `index.html`.\n               Setting the flag after Ember is already loaded will not work correctly. It\n              may appear to work somewhat, but fundamentally broken.\n               This is not intended to be set directly. Ember Inspector will enable the\n              flag on behalf of the user as needed.\n               This flag is always on in development mode.\n               The flag is off by default in production mode, due to the cost associated\n              with the the bookkeeping work.\n               The expected flow is that Ember Inspector will ask the user to refresh the\n              page after enabling the feature. It could also offer a feature where the\n              user add some domains to the \"always on\" list. In either case, Ember\n              Inspector will inject the code on the page to set the flag if needed.\n               @property _DEBUG_RENDER_TREE\n              @for EmberENV\n              @type Boolean\n              @default false\n              @private\n            */_DEBUG_RENDER_TREE:true/* DEBUG */,/**\n             Whether to force all deprecations to be enabled. This is used internally by\n             Ember to enable deprecations in tests. It is not intended to be set in\n             projects.\n              @property _ALL_DEPRECATIONS_ENABLED\n             @for EmberENV\n             @type Boolean\n             @default false\n             @private\n             */_ALL_DEPRECATIONS_ENABLED:false,/**\n             Override the version of ember-source used to determine when deprecations \"break\".\n             This is used internally by Ember to test with deprecated features \"removed\".\n             This is never intended to be set by projects.\n             @property _OVERRIDE_DEPRECATION_VERSION\n             @for EmberENV\n             @type string | null\n             @default null\n             @private\n             */_OVERRIDE_DEPRECATION_VERSION:null,/**\n              Whether the app defaults to using async observers.\n               This is not intended to be set directly, as the implementation may change in\n              the future. Use `@ember/optional-features` instead.\n               @property _DEFAULT_ASYNC_OBSERVERS\n              @for EmberENV\n              @type Boolean\n              @default false\n              @private\n            */_DEFAULT_ASYNC_OBSERVERS:false,/**\n             Whether the app still has default record-loading behavior in the model\n             hook from RFC https://rfcs.emberjs.com/id/0774-implicit-record-route-loading\n             This will also remove the default store property from the route.\n              This is not intended to be set directly, as the implementation may change in\n             the future. Use `@ember/optional-features` instead.\n              @property _NO_IMPLICIT_ROUTE_MODEL\n             @for EmberENV\n             @type Boolean\n             @default false\n             @private\n             */_NO_IMPLICIT_ROUTE_MODEL:false,/**\n              Controls the maximum number of scheduled rerenders without \"settling\". In general,\n              applications should not need to modify this environment variable, but please\n              open an issue so that we can determine if a better default value is needed.\n               @property _RERENDER_LOOP_LIMIT\n              @for EmberENV\n              @type number\n              @default 1000\n              @private\n             */_RERENDER_LOOP_LIMIT:1000,EMBER_LOAD_HOOKS:{},FEATURES:{}};(function(EmberENV){if(_typeof(EmberENV)!=='object'||EmberENV===null)return;for(var flag in EmberENV){if(!Object.prototype.hasOwnProperty.call(EmberENV,flag)||flag==='EXTEND_PROTOTYPES'||flag==='EMBER_LOAD_HOOKS')continue;var defaultValue=ENV[flag];if(defaultValue===true){ENV[flag]=EmberENV[flag]!==false;}else if(defaultValue===false){ENV[flag]=EmberENV[flag]===true;}else{ENV[flag]=EmberENV[flag];}}var EXTEND_PROTOTYPES=EmberENV.EXTEND_PROTOTYPES;if(EXTEND_PROTOTYPES!==undefined){if(_typeof(EXTEND_PROTOTYPES)==='object'&&EXTEND_PROTOTYPES!==null){ENV.EXTEND_PROTOTYPES.Array=EXTEND_PROTOTYPES.Array!==false;}else{ENV.EXTEND_PROTOTYPES.Array=EXTEND_PROTOTYPES!==false;}}// TODO this does not seem to be used by anything,\n//      can we remove it? do we need to deprecate it?\nvar EMBER_LOAD_HOOKS=EmberENV.EMBER_LOAD_HOOKS;if(_typeof(EMBER_LOAD_HOOKS)==='object'&&EMBER_LOAD_HOOKS!==null){for(var hookName in EMBER_LOAD_HOOKS){if(!Object.prototype.hasOwnProperty.call(EMBER_LOAD_HOOKS,hookName))continue;var hooks=EMBER_LOAD_HOOKS[hookName];if(Array.isArray(hooks)){ENV.EMBER_LOAD_HOOKS[hookName]=hooks.filter(function(hook){return typeof hook==='function';});}}}var FEATURES=EmberENV.FEATURES;if(_typeof(FEATURES)==='object'&&FEATURES!==null){for(var feature in FEATURES){if(!Object.prototype.hasOwnProperty.call(FEATURES,feature))continue;ENV.FEATURES[feature]=FEATURES[feature]===true;}}{ENV._DEBUG_RENDER_TREE=true;}})(global$1.EmberENV);function getENV(){return ENV;}var emberinternalsEnvironmentIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,ENV:ENV,context:context$1,getENV:getENV,getLookup:getLookup,global:global$1,setLookup:setLookup},Symbol.toStringTag,{value:'Module'});var assert$1=function assert$1(){};function setAssert(implementation){assert$1=implementation;return implementation;}{/**\n               Verify that a certain expectation is met, or throw a exception otherwise.\n               This is useful for communicating assumptions in the code to other human\n               readers as well as catching bugs that accidentally violates these\n               expectations.\n               Assertions are removed from production builds, so they can be freely added\n               for documentation and debugging purposes without worries of incuring any\n               performance penalty. However, because of that, they should not be used for\n               checks that could reasonably fail during normal usage. Furthermore, care\n               should be taken to avoid accidentally relying on side-effects produced from\n               evaluating the condition itself, since the code will not run in production.\n               ```javascript\n               import { assert } from '@ember/debug';\n               // Test for truthiness\n               assert('Must pass a string', typeof str === 'string');\n               // Fail unconditionally\n               assert('This code path should never be run');\n               ```\n               @method assert\n               @static\n               @for @ember/debug\n               @param {String} description Describes the expectation. This will become the\n                 text of the Error thrown if the assertion fails.\n               @param {any} condition Must be truthy for the assertion to pass. If\n                 falsy, an exception will be thrown.\n               @public\n               @since 1.0.0\n             */// eslint-disable-next-line no-inner-declarations\nfunction _assert(desc,test){if(!test){throw new Error(\"Assertion Failed: \".concat(desc));}}setAssert(_assert);}var HANDLERS={};var registerHandler$2=function registerHandler(_type,_callback){};var invoke=function invoke(){};{registerHandler$2=function registerHandler(type,callback){var nextHandler=HANDLERS[type]||function(){};HANDLERS[type]=function(message,options){callback(message,options,nextHandler);};};invoke=function invoke(type,message,test,options){if(test){return;}var handlerForType=HANDLERS[type];if(handlerForType){handlerForType(message,options);}};}var emberDebugLibHandlers=/*#__PURE__*/Object.defineProperty({__proto__:null,HANDLERS:HANDLERS,get invoke(){return invoke;},get registerHandler(){return registerHandler$2;}},Symbol.toStringTag,{value:'Module'});// This is a \"global\", but instead of declaring it as `declare global`, which\n// will expose it to all other modules, declare it *locally* (and don't export\n// it) so that it has the desired \"private global\" semantics -- however odd that\n// particular notion is.\n/**\n           @module @ember/debug\n           @public\n          *//**\n            Allows for runtime registration of handler functions that override the default deprecation behavior.\n            Deprecations are invoked by calls to [@ember/debug/deprecate](/ember/release/classes/@ember%2Fdebug/methods/deprecate?anchor=deprecate).\n            The following example demonstrates its usage by registering a handler that throws an error if the\n            message contains the word \"should\", otherwise defers to the default handler.\n\n            ```javascript\n            import { registerDeprecationHandler } from '@ember/debug';\n\n            registerDeprecationHandler((message, options, next) => {\n              if (message.indexOf('should') !== -1) {\n                throw new Error(`Deprecation message with should: ${message}`);\n              } else {\n                // defer to whatever handler was registered before this one\n                next(message, options);\n              }\n            });\n            ```\n\n            The handler function takes the following arguments:\n\n            <ul>\n              <li> <code>message</code> - The message received from the deprecation call.</li>\n              <li> <code>options</code> - An object passed in with the deprecation call containing additional information including:</li>\n                <ul>\n                  <li> <code>id</code> - An id of the deprecation in the form of <code>package-name.specific-deprecation</code>.</li>\n                  <li> <code>until</code> - The Ember version number the feature and deprecation will be removed in.</li>\n                </ul>\n              <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n            </ul>\n\n            @public\n            @static\n            @method registerDeprecationHandler\n            @for @ember/debug\n            @param handler {Function} A function to handle deprecation calls.\n            @since 2.1.0\n          */var registerHandler$1=function registerHandler$1(){};var missingOptionsDeprecation$1;var missingOptionsIdDeprecation$1;var missingOptionDeprecation=function missingOptionDeprecation(){return'';};var deprecate$3=function deprecate$3(){};{registerHandler$1=function registerHandler(handler){registerHandler$2('deprecate',handler);};var formatMessage=function formatMessage(_message,options){var message=_message;if(options!==null&&options!==void 0&&options.id){message=message+\" [deprecation id: \".concat(options.id,\"]\");}if(options!==null&&options!==void 0&&options.until){message=message+\" This will be removed in \".concat(options.for,\" \").concat(options.until,\".\");}if(options!==null&&options!==void 0&&options.url){message+=\" See \".concat(options.url,\" for more details.\");}return message;};registerHandler$1(function logDeprecationToConsole(message,options){var updatedMessage=formatMessage(message,options);console.warn(\"DEPRECATION: \".concat(updatedMessage));// eslint-disable-line no-console\n});var captureErrorForStack;if(new Error().stack){captureErrorForStack=function captureErrorForStack(){return new Error();};}else{captureErrorForStack=function captureErrorForStack(){try{__fail__.fail();return;}catch(e){return e;}};}registerHandler$1(function logDeprecationStackTrace(message,options,next){if(ENV.LOG_STACKTRACE_ON_DEPRECATION){var stackStr='';var error=captureErrorForStack();var stack;if(error instanceof Error){if(error.stack){if(error['arguments']){// Chrome\nstack=error.stack.replace(/^\\s+at\\s+/gm,'').replace(/^([^(]+?)([\\n$])/gm,'{anonymous}($1)$2').replace(/^Object.<anonymous>\\s*\\(([^)]+)\\)/gm,'{anonymous}($1)').split('\\n');stack.shift();}else{// Firefox\nstack=error.stack.replace(/(?:\\n@:0)?\\s+$/m,'').replace(/^\\(/gm,'{anonymous}(').split('\\n');}stackStr=\"\\n    \".concat(stack.slice(2).join('\\n    '));}}var updatedMessage=formatMessage(message,options);console.warn(\"DEPRECATION: \".concat(updatedMessage).concat(stackStr));// eslint-disable-line no-console\n}else{next(message,options);}});registerHandler$1(function raiseOnDeprecation(message,options,next){if(ENV.RAISE_ON_DEPRECATION){var updatedMessage=formatMessage(message);throw new Error(updatedMessage);}else{next(message,options);}});missingOptionsDeprecation$1='When calling `deprecate` you '+'must provide an `options` hash as the third parameter.  '+'`options` should include `id` and `until` properties.';missingOptionsIdDeprecation$1='When calling `deprecate` you must provide `id` in options.';missingOptionDeprecation=function missingOptionDeprecation(id,missingOption){return\"When calling `deprecate` you must provide `\".concat(missingOption,\"` in options. Missing options.\").concat(missingOption,\" in \\\"\").concat(id,\"\\\" deprecation\");};/**\n             @module @ember/debug\n             @public\n             *//**\n              Display a deprecation warning with the provided message and a stack trace\n              (Chrome and Firefox only).\n               Ember itself leverages [Semantic Versioning](https://semver.org) to aid\n              projects in keeping up with changes to the framework. Before any\n              functionality or API is removed, it first flows linearly through a\n              deprecation staging process. The staging process currently contains two\n              stages: available and enabled.\n               Deprecations are initially released into the 'available' stage.\n              Deprecations will stay in this stage until the replacement API has been\n              marked as a recommended practice via the RFC process and the addon\n              ecosystem has generally adopted the change.\n               Once a deprecation meets the above criteria, it will move into the\n              'enabled' stage where it will remain until the functionality or API is\n              eventually removed.\n               For application and addon developers, \"available\" deprecations are not\n              urgent and \"enabled\" deprecations require action.\n               * In a production build, this method is defined as an empty function (NOP).\n              Uses of this method in Ember itself are stripped from the ember.prod.js build.\n               ```javascript\n              import { deprecate } from '@ember/debug';\n               deprecate(\n                'Use of `assign` has been deprecated. Please use `Object.assign` or the spread operator instead.',\n                false,\n                {\n                  id: 'ember-polyfills.deprecate-assign',\n                  until: '5.0.0',\n                  url: 'https://deprecations.emberjs.com/v4.x/#toc_ember-polyfills-deprecate-assign',\n                  for: 'ember-source',\n                  since: {\n                    available: '4.0.0',\n                    enabled: '4.0.0',\n                  },\n                }\n              );\n              ```\n               @method deprecate\n              @for @ember/debug\n              @param {String} message A description of the deprecation.\n              @param {Boolean} test A boolean. If falsy, the deprecation will be displayed.\n              @param {Object} options\n              @param {String} options.id A unique id for this deprecation. The id can be\n                used by Ember debugging tools to change the behavior (raise, log or silence)\n                for that specific deprecation. The id should be namespaced by dots, e.g.\n                \"view.helper.select\".\n              @param {string} options.until The version of Ember when this deprecation\n                warning will be removed.\n              @param {String} options.for A namespace for the deprecation, usually the package name\n              @param {Object} options.since Describes when the deprecation became available and enabled.\n              @param {String} [options.url] An optional url to the transition guide on the\n                    emberjs.com website.\n              @static\n              @public\n              @since 1.0.0\n            */deprecate$3=function deprecate(message,test,options){assert$1(missingOptionsDeprecation$1,Boolean(options&&(options.id||options.until)));assert$1(missingOptionsIdDeprecation$1,Boolean(options.id));assert$1(missingOptionDeprecation(options.id,'until'),Boolean(options.until));assert$1(missingOptionDeprecation(options.id,'for'),Boolean(options.for));assert$1(missingOptionDeprecation(options.id,'since'),Boolean(options.since));invoke('deprecate',message,test,options);};}var defaultDeprecate=deprecate$3;var emberDebugLibDeprecate=/*#__PURE__*/Object.defineProperty({__proto__:null,default:defaultDeprecate,get missingOptionDeprecation(){return missingOptionDeprecation;},get missingOptionsDeprecation(){return missingOptionsDeprecation$1;},get missingOptionsIdDeprecation(){return missingOptionsIdDeprecation$1;},get registerHandler(){return registerHandler$1;}},Symbol.toStringTag,{value:'Module'});var testing=false;function isTesting(){return testing;}function setTesting(value){testing=Boolean(value);}var emberDebugLibTesting=/*#__PURE__*/Object.defineProperty({__proto__:null,isTesting:isTesting,setTesting:setTesting},Symbol.toStringTag,{value:'Module'});var registerHandler=function registerHandler(){};var warn$1=function warn$1(){};var missingOptionsDeprecation;var missingOptionsIdDeprecation;/**\n          @module @ember/debug\n          */{/**\n              Allows for runtime registration of handler functions that override the default warning behavior.\n              Warnings are invoked by calls made to [@ember/debug/warn](/ember/release/classes/@ember%2Fdebug/methods/warn?anchor=warn).\n              The following example demonstrates its usage by registering a handler that does nothing overriding Ember's\n              default warning behavior.\n               ```javascript\n              import { registerWarnHandler } from '@ember/debug';\n               // next is not called, so no warnings get the default behavior\n              registerWarnHandler(() => {});\n              ```\n               The handler function takes the following arguments:\n               <ul>\n                <li> <code>message</code> - The message received from the warn call. </li>\n                <li> <code>options</code> - An object passed in with the warn call containing additional information including:</li>\n                  <ul>\n                    <li> <code>id</code> - An id of the warning in the form of <code>package-name.specific-warning</code>.</li>\n                  </ul>\n                <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n              </ul>\n               @public\n              @static\n              @method registerWarnHandler\n              @for @ember/debug\n              @param handler {Function} A function to handle warnings.\n              @since 2.1.0\n            */registerHandler=function registerHandler(handler){registerHandler$2('warn',handler);};registerHandler(function logWarning(message){/* eslint-disable no-console */console.warn(\"WARNING: \".concat(message));/* eslint-enable no-console */});missingOptionsDeprecation='When calling `warn` you '+'must provide an `options` hash as the third parameter.  '+'`options` should include an `id` property.';missingOptionsIdDeprecation='When calling `warn` you must provide `id` in options.';/**\n              Display a warning with the provided message.\n               * In a production build, this method is defined as an empty function (NOP).\n              Uses of this method in Ember itself are stripped from the ember.prod.js build.\n               ```javascript\n              import { warn } from '@ember/debug';\n              import tomsterCount from './tomster-counter'; // a module in my project\n               // Log a warning if we have more than 3 tomsters\n              warn('Too many tomsters!', tomsterCount <= 3, {\n                id: 'ember-debug.too-many-tomsters'\n              });\n              ```\n               @method warn\n              @for @ember/debug\n              @static\n              @param {String} message A warning to display.\n              @param {Boolean|Object} test An optional boolean. If falsy, the warning\n                will be displayed. If `test` is an object, the `test` parameter can\n                be used as the `options` parameter and the warning is displayed.\n              @param {Object} options\n              @param {String} options.id The `id` can be used by Ember debugging tools\n                to change the behavior (raise, log, or silence) for that specific warning.\n                The `id` should be namespaced by dots, e.g. \"ember-debug.feature-flag-with-features-stripped\"\n              @public\n              @since 1.0.0\n            */warn$1=function warn(message,test,options){if(arguments.length===2&&_typeof(test)==='object'){options=test;test=false;}assert$1(missingOptionsDeprecation,Boolean(options));assert$1(missingOptionsIdDeprecation,Boolean(options&&options.id));// SAFETY: we have explicitly assigned `false` if the user invoked the\n// arity-2 version of the overload, so we know `test` is always either\n// `undefined` or a `boolean` for type-safe callers.\ninvoke('warn',message,test,options);};}var _warn=warn$1;var emberDebugLibWarn=/*#__PURE__*/Object.defineProperty({__proto__:null,default:_warn,get missingOptionsDeprecation(){return missingOptionsDeprecation;},get missingOptionsIdDeprecation(){return missingOptionsIdDeprecation;},get registerHandler(){return registerHandler;}},Symbol.toStringTag,{value:'Module'});var objectToString=Object.prototype.toString;var functionToString=Function.prototype.toString;var isArray$5=Array.isArray;var objectKeys=Object.keys;var stringify$1=JSON.stringify;var LIST_LIMIT=100;var DEPTH_LIMIT=4;var SAFE_KEY=/^[\\w$]+$/;/**\n           @module @ember/debug\n          *//**\n            Convenience method to inspect an object. This method will attempt to\n            convert the object into a useful string description.\n\n            It is a pretty simple implementation. If you want something more robust,\n            use something like JSDump: https://github.com/NV/jsDump\n\n            @method inspect\n            @static\n            @param {Object} obj The object you want to inspect.\n            @return {String} A description of the object\n            @since 1.4.0\n            @private\n          */function inspect(obj){// detect Node util.inspect call inspect(depth: number, opts: object)\nif(typeof obj==='number'&&arguments.length===2){return this;}return inspectValue(obj,0);}function inspectValue(value,depth,seen){var valueIsArray=false;switch(_typeof(value)){case'undefined':return'undefined';case'object':if(value===null)return'null';if(isArray$5(value)){valueIsArray=true;break;}// is toString Object.prototype.toString or undefined then traverse\nif(value.toString===objectToString||value.toString===undefined){break;}// custom toString\nreturn value.toString();case'function':return value.toString===functionToString?value.name?\"[Function:\".concat(value.name,\"]\"):\"[Function]\":value.toString();case'string':return stringify$1(value);case'symbol':case'boolean':case'number':default:return value.toString();}if(seen===undefined){seen=new WeakSet();}else{if(seen.has(value))return\"[Circular]\";}seen.add(value);return valueIsArray?inspectArray(value,depth+1,seen):inspectObject(value,depth+1,seen);}function inspectKey(key){return SAFE_KEY.test(key)?key:stringify$1(key);}function inspectObject(obj,depth,seen){if(depth>DEPTH_LIMIT){return'[Object]';}var s='{';var keys=objectKeys(obj);for(var i=0;i<keys.length;i++){s+=i===0?' ':', ';if(i>=LIST_LIMIT){s+=\"... \".concat(keys.length-LIST_LIMIT,\" more keys\");break;}var key=keys[i];assert$1('has key',key);// Looping over array\ns+=\"\".concat(inspectKey(String(key)),\": \").concat(inspectValue(obj[key],depth,seen));}s+=' }';return s;}function inspectArray(arr,depth,seen){if(depth>DEPTH_LIMIT){return'[Array]';}var s='[';for(var i=0;i<arr.length;i++){s+=i===0?' ':', ';if(i>=LIST_LIMIT){s+=\"... \".concat(arr.length-LIST_LIMIT,\" more items\");break;}s+=inspectValue(arr[i],depth,seen);}s+=' ]';return s;}var emberDebugLibInspect=/*#__PURE__*/Object.defineProperty({__proto__:null,default:inspect},Symbol.toStringTag,{value:'Module'});var EMPTY_ARRAY$4=Object.freeze([]);function emptyArray(){return EMPTY_ARRAY$4;}var EMPTY_STRING_ARRAY=emptyArray(),EMPTY_NUMBER_ARRAY=emptyArray();/**\n           * This function returns `true` if the input array is the special empty array sentinel,\n           * which is sometimes used for optimizations.\n           */function isEmptyArray(input){return input===EMPTY_ARRAY$4;}function reverse(input){var i;return _regeneratorRuntime().wrap(function reverse$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:i=input.length-1;case 1:if(!(i>=0)){_context2.next=7;break;}_context2.next=4;return input[i];case 4:i--;_context2.next=1;break;case 7:case\"end\":return _context2.stop();}},_marked);}function enumerate(input){var i,_iterator,_step,item;return _regeneratorRuntime().wrap(function enumerate$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:i=0;_iterator=_createForOfIteratorHelper(input);_context3.prev=2;_iterator.s();case 4:if((_step=_iterator.n()).done){_context3.next=10;break;}item=_step.value;_context3.next=8;return[i++,item];case 8:_context3.next=4;break;case 10:_context3.next=15;break;case 12:_context3.prev=12;_context3.t0=_context3[\"catch\"](2);_iterator.e(_context3.t0);case 15:_context3.prev=15;_iterator.f();return _context3.finish(15);case 18:case\"end\":return _context3.stop();}},_marked2,null,[[2,12,15,18]]);}// import Logger from './logger';\n// let alreadyWarned = false;\nfunction debugAssert(test,msg){// if (!alreadyWarned) {\n//   alreadyWarned = true;\n//   Logger.warn(\"Don't leave debug assertions on in public builds\");\n// }\nif(!test)throw new Error(msg||\"assertion failure\");}function deprecate$2(desc){LOCAL_LOGGER.warn(\"DEPRECATION: \".concat(desc));}function keys(obj){return Object.keys(obj);}function unwrap$1(val){if(null==val)throw new Error(\"Expected value to be present\");return val;}function expect(val,message){if(null==val)throw new Error(message);return val;}function unreachable(){var message=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"unreachable\";return new Error(message);}function exhausted(value){throw new Error(\"Exhausted \".concat(String(value)));}var tuple=function tuple(){for(var _len=arguments.length,args=new Array(_len),_key2=0;_key2<_len;_key2++){args[_key2]=arguments[_key2];}return args;};function isPresent$2(value){return null!=value;}function assertPresent(value,message){if(!isPresent$2(value))throw new Error(\"Expected present, got \".concat(\"string\"==typeof value?value:message));}function isPresentArray(list){return list.length>0;}function ifPresent(list,ifPresent,otherwise){return isPresentArray(list)?ifPresent(list):otherwise();}function arrayToOption(list){return isPresentArray(list)?list:null;}function assertPresentArray(list){var message=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"unexpected empty list\";if(!isPresentArray(list))throw new Error(message);}function asPresentArray(list){var message=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"unexpected empty list\";return assertPresentArray(list,message),list;}function getLast(list){return 0===list.length?void 0:list[list.length-1];}function getFirst(list){return 0===list.length?void 0:list[0];}function mapPresentArray(list,mapper){if(null===list)return null;var out=[];var _iterator2=_createForOfIteratorHelper(list),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var item=_step2.value;out.push(mapper(item));}}catch(err){_iterator2.e(err);}finally{_iterator2.f();}return out;}function dict(){return Object.create(null);}function isDict(u){return null!=u;}function isObject(u){return\"function\"==typeof u||\"object\"==_typeof(u)&&null!==u;}var StackImpl=/*#__PURE__*/function(){function StackImpl(){var values=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];_classCallCheck(this,StackImpl);_defineProperty(this,\"stack\",void 0);_defineProperty(this,\"current\",null);this.stack=values;}return _createClass(StackImpl,[{key:\"size\",get:function get(){return this.stack.length;}},{key:\"push\",value:function push(item){this.current=item,this.stack.push(item);}},{key:\"pop\",value:function pop(){var _getLast;var item=this.stack.pop();return this.current=(_getLast=getLast(this.stack))!==null&&_getLast!==void 0?_getLast:null,void 0===item?null:item;}},{key:\"nth\",value:function nth(from){var len=this.stack.length;return len<from?null:unwrap$1(this.stack[len-from]);}},{key:\"isEmpty\",value:function isEmpty(){return 0===this.stack.length;}},{key:\"toArray\",value:function toArray(){return this.stack;}}]);}();/// <reference types=\"qunit\" />\nvar beginTestSteps,endTestSteps,verifySteps,logStep,debugToString;{var _getFunctionName=function _getFunctionName(fn){var functionName=fn.name;if(void 0===functionName){var _match3=/function ([0-9A-Z_a-z]+)[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*\\(/.exec(String(fn));functionName=_match3&&_match3[1]||\"\";}return functionName.replace(/^bound /,\"\");},_getObjectName=function _getObjectName(obj){var name,className;// If the class has a decent looking name, and the `toString` is one of the\n// default Ember toStrings, replace the constructor portion of the toString\n// with the class name. We check the length of the class name to prevent doing\n// this when the value is minified.\nreturn obj.constructor&&\"function\"==typeof obj.constructor&&(className=_getFunctionName(obj.constructor)),\"toString\"in obj&&obj.toString!==Object.prototype.toString&&obj.toString!==Function.prototype.toString&&(name=obj.toString()),name&&/<(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*:ember[0-9]+>/.test(name)&&className&&\"_\"!==className[0]&&className.length>2&&\"Class\"!==className?name.replace(/<(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*:/,\"<\".concat(className,\":\")):name||className;},_getPrimitiveName=function _getPrimitiveName(value){return String(value);};debugToString=function debugToString(value){return\"function\"==typeof value?_getFunctionName(value)||\"(unknown function)\":\"object\"==_typeof(value)&&null!==value?_getObjectName(value)||\"(unknown object)\":_getPrimitiveName(value);};}var debugToString$1=debugToString;function clearElement(parent){var current=parent.firstChild;for(;current;){var _next=current.nextSibling;parent.removeChild(current),current=_next;}}var RAW_NODE=-1,ELEMENT_NODE=1,TEXT_NODE=3,COMMENT_NODE=8,DOCUMENT_NODE=9,DOCUMENT_TYPE_NODE=10,DOCUMENT_FRAGMENT_NODE=11,NS_HTML=\"http://www.w3.org/1999/xhtml\",NS_MATHML=\"http://www.w3.org/1998/Math/MathML\",NS_SVG=\"http://www.w3.org/2000/svg\",NS_XLINK=\"http://www.w3.org/1999/xlink\",NS_XML=\"http://www.w3.org/XML/1998/namespace\",NS_XMLNS=\"http://www.w3.org/2000/xmlns/\",INSERT_BEFORE_BEGIN=\"beforebegin\",INSERT_AFTER_BEGIN=\"afterbegin\",INSERT_BEFORE_END=\"beforeend\",INSERT_AFTER_END=\"afterend\";/*\n            Encoding notes\n\n            We use 30 bit integers for encoding, so that we don't ever encode a non-SMI\n            integer to push on the stack.\n\n            Handles are >= 0\n            Immediates are < 0\n\n            True, False, Undefined and Null are pushed as handles into the symbol table,\n            with well known handles (0, 1, 2, 3)\n\n            The negative space is divided into positives and negatives. Positives are\n            higher numbers (-1, -2, -3, etc), negatives are lower.\n\n            We only encode immediates for two reasons:\n\n            1. To transfer over the wire, so they're smaller in general\n            2. When pushing values onto the stack from the low level/inner VM, which may\n               be converted into WASM one day.\n\n            This allows the low-level VM to always use SMIs, and to minimize using JS\n            values via handles for things like the stack pointer and frame pointer.\n            Externally, most code pushes values as JS values, except when being pulled\n            from the append byte code where it was already encoded.\n\n            Logically, this is because the low level VM doesn't really care about these\n            higher level values. For instance, the result of a userland helper may be a\n            number, or a boolean, or undefined/null, but it's extra work to figure that\n            out and push it correctly, vs. just pushing the value as a JS value with a\n            handle.\n\n            Note: The details could change here in the future, this is just the current\n            strategy.\n          */var ImmediateConstants=function(ImmediateConstants){return ImmediateConstants[ImmediateConstants.MAX_SMI=1073741823]=\"MAX_SMI\",ImmediateConstants[ImmediateConstants.MIN_SMI=-1073741824]=\"MIN_SMI\",ImmediateConstants[ImmediateConstants.SIGN_BIT=-536870913]=\"SIGN_BIT\",ImmediateConstants[ImmediateConstants.MAX_INT=536870911]=\"MAX_INT\",ImmediateConstants[ImmediateConstants.MIN_INT=-536870912]=\"MIN_INT\",ImmediateConstants[ImmediateConstants.FALSE_HANDLE=0]=\"FALSE_HANDLE\",ImmediateConstants[ImmediateConstants.TRUE_HANDLE=1]=\"TRUE_HANDLE\",ImmediateConstants[ImmediateConstants.NULL_HANDLE=2]=\"NULL_HANDLE\",ImmediateConstants[ImmediateConstants.UNDEFINED_HANDLE=3]=\"UNDEFINED_HANDLE\",ImmediateConstants[ImmediateConstants.ENCODED_FALSE_HANDLE=0]=\"ENCODED_FALSE_HANDLE\",ImmediateConstants[ImmediateConstants.ENCODED_TRUE_HANDLE=1]=\"ENCODED_TRUE_HANDLE\",ImmediateConstants[ImmediateConstants.ENCODED_NULL_HANDLE=2]=\"ENCODED_NULL_HANDLE\",ImmediateConstants[ImmediateConstants.ENCODED_UNDEFINED_HANDLE=3]=\"ENCODED_UNDEFINED_HANDLE\",ImmediateConstants;}({});function isHandle(value){return value>=0;}function isNonPrimitiveHandle(value){return value>ImmediateConstants.ENCODED_UNDEFINED_HANDLE;}function constants(){for(var _len2=arguments.length,values=new Array(_len2),_key3=0;_key3<_len2;_key3++){values[_key3]=arguments[_key3];}return[!1,!0,null,void 0].concat(values);}function isSmallInt(value){return value%1==0&&value<=ImmediateConstants.MAX_INT&&value>=ImmediateConstants.MIN_INT;}function encodeNegative(num){return num&ImmediateConstants.SIGN_BIT;}function decodeNegative(num){return num|~ImmediateConstants.SIGN_BIT;}function encodePositive(num){return~num;}function decodePositive(num){return~num;}function encodeHandle(num){return num;}function decodeHandle(num){return num;}function encodeImmediate(num){return(num|=0)<0?encodeNegative(num):encodePositive(num);}function decodeImmediate(num){return(num|=0)>ImmediateConstants.SIGN_BIT?decodePositive(num):decodeNegative(num);}/**\n            Strongly hint runtimes to intern the provided string.\n\n            When do I need to use this function?\n\n            For the most part, never. Pre-mature optimization is bad, and often the\n            runtime does exactly what you need it to, and more often the trade-off isn't\n            worth it.\n\n            Why?\n\n            Runtimes store strings in at least 2 different representations:\n            Ropes and Symbols (interned strings). The Rope provides a memory efficient\n            data-structure for strings created from concatenation or some other string\n            manipulation like splitting.\n\n            Unfortunately checking equality of different ropes can be quite costly as\n            runtimes must resort to clever string comparison algorithms. These\n            algorithms typically cost in proportion to the length of the string.\n            Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n            unique by their string content, equality checks can be done by pointer\n            comparison.\n\n            How do I know if my string is a rope or symbol?\n\n            Typically (warning general sweeping statement, but truthy in runtimes at\n            present) static strings created as part of the JS source are interned.\n            Strings often used for comparisons can be interned at runtime if some\n            criteria are met.  One of these criteria can be the size of the entire rope.\n            For example, in chrome 38 a rope longer then 12 characters will not\n            intern, nor will segments of that rope.\n\n            Some numbers: http://jsperf.com/eval-vs-keys/8\n\n            Known Trick™\n\n            @private\n            @return {String} interned version of the provided string\n          */function intern(str){var obj={};obj[str]=1;for(var key in obj)if(key===str)return key;return str;}[1,-1].forEach(function(x){return decodeImmediate(encodeImmediate(x));});var SERIALIZATION_FIRST_NODE_STRING$1=\"%+b:0%\";function isSerializationFirstNode$1(node){return\"%+b:0%\"===node.nodeValue;}var assign=Object.assign;function values(obj){return Object.values(obj);}function entries(dict){return Object.entries(dict);}function castToSimple(node){return isDocument(node)||isSimpleElement(node),node;}// If passed a document, verify we're in the browser and return it as a Document\n// If we don't know what this is, but the check requires it to be an element,\n// the cast will mandate that it's a browser element\n// Finally, if it's a more generic check, the cast will mandate that it's a\n// browser node and return a BrowserNodeUtils corresponding to the check\nfunction castToBrowser(node,sugaryCheck){if(null==node)return null;if(void 0===(typeof document===\"undefined\"?\"undefined\":_typeof(document)))throw new Error(\"Attempted to cast to a browser node in a non-browser context\");if(isDocument(node))return node;if(node.ownerDocument!==document)throw new Error(\"Attempted to cast to a browser node with a node that was not created from this document\");return checkBrowserNode(node,sugaryCheck);}function isDocument(node){return node.nodeType===DOCUMENT_NODE;}function isSimpleElement(node){return(node===null||node===void 0?void 0:node.nodeType)===ELEMENT_NODE;}function isElement$1(node){return(node===null||node===void 0?void 0:node.nodeType)===ELEMENT_NODE&&node instanceof Element;}function checkBrowserNode(node,check){var _node$constructor$nam,_node$constructor;var isMatch=!1;if(null!==node)if(\"string\"==typeof check)isMatch=stringCheckNode(node,check);else{if(!Array.isArray(check))throw unreachable();isMatch=check.some(function(c){return stringCheckNode(node,c);});}if(isMatch&&node instanceof Node)return node;throw function(from,check){return new Error(\"cannot cast a \".concat(from,\" into \").concat(String(check)));}(\"SimpleElement(\".concat((_node$constructor$nam=node===null||node===void 0||(_node$constructor=node.constructor)===null||_node$constructor===void 0?void 0:_node$constructor.name)!==null&&_node$constructor$nam!==void 0?_node$constructor$nam:\"null\",\")\"),check);}function stringCheckNode(node,check){switch(check){case\"NODE\":return!0;case\"HTML\":return node instanceof HTMLElement;case\"SVG\":return node instanceof SVGElement;case\"ELEMENT\":return node instanceof Element;default:if(check.toUpperCase()===check)throw new Error(\"BUG: this code is missing handling for a generic node type\");return node instanceof Element&&node.tagName.toLowerCase()===check;}}function strip$1(strings){var out=\"\";for(var _len3=arguments.length,args=new Array(_len3>1?_len3-1:0),_key4=1;_key4<_len3;_key4++){args[_key4-1]=arguments[_key4];}var _iterator3=_createForOfIteratorHelper(enumerate(strings)),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var _step3$value=_slicedToArray(_step3.value,2),i=_step3$value[0],string=_step3$value[1];out+=\"\".concat(string).concat(void 0!==args[i]?String(args[i]):\"\");}}catch(err){_iterator3.e(err);}finally{_iterator3.f();}var lines=out.split(\"\\n\");for(;isPresentArray(lines)&&/^[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/.test(getFirst(lines));)lines.shift();for(;isPresentArray(lines)&&/^[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/.test(getLast(lines));)lines.pop();var min=1/0;var _iterator4=_createForOfIteratorHelper(lines),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var line=_step4.value;var leading=/^[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*/.exec(line)[0].length;min=Math.min(min,leading);}}catch(err){_iterator4.e(err);}finally{_iterator4.f();}var stripped=[];var _iterator5=_createForOfIteratorHelper(lines),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var _line=_step5.value;stripped.push(_line.slice(min));}}catch(err){_iterator5.e(err);}finally{_iterator5.f();}return stripped.join(\"\\n\");}function unwrapHandle(handle){if(\"number\"==typeof handle)return handle;{var error=handle.errors[0];throw new Error(\"Compile Error: \".concat(error.problem,\" @ \").concat(error.span.start,\"..\").concat(error.span.end));}}function unwrapTemplate(template){if(\"error\"===template.result)throw new Error(\"Compile Error: \".concat(template.problem,\" @ \").concat(template.span.start,\"..\").concat(template.span.end));return template;}function extractHandle(handle){return\"number\"==typeof handle?handle:handle.handle;}function isOkHandle(handle){return\"number\"==typeof handle;}function isErrHandle(handle){return\"number\"==typeof handle;}function buildUntouchableThis(source){var context=null;{var assertOnProperty=function assertOnProperty(property){var access=\"symbol\"==_typeof(property)||\"number\"==typeof property?\"[\".concat(String(property),\"]\"):\".\".concat(property);throw new Error(\"You accessed `this\".concat(access,\"` from a function passed to the \").concat(source,\", but the function itself was not bound to a valid `this` context. Consider updating to use a bound function (for instance, use an arrow function, `() => {}`).\"));};context=new Proxy({},{get:function get(_target,property){assertOnProperty(property);},set:function set(_target,property){return assertOnProperty(property),!1;},has:function has(_target,property){return assertOnProperty(property),!1;}});}return context;}/**\n           * This constant exists to make it easier to differentiate normal logs from\n           * errant console.logs. LOCAL_LOGGER should only be used inside a\n           * LOCAL_SHOULD_LOG check.\n           *\n           * It does not alleviate the need to check LOCAL_SHOULD_LOG, which is used\n           * for stripping.\n           */var LOCAL_LOGGER=console,LOGGER=console;/**\n           * This constant exists to make it easier to differentiate normal logs from\n           * errant console.logs. LOGGER can be used outside of LOCAL_SHOULD_LOG checks,\n           * and is meant to be used in the rare situation where a console.* call is\n           * actually appropriate.\n           */function assertNever(value){var desc=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"unexpected unreachable branch\";throw LOGGER.log(\"unreachable\",value),LOGGER.log(\"\".concat(desc,\" :: \").concat(JSON.stringify(value),\" (\").concat(value,\")\")),new Error(\"code reached unreachable\");}var glimmerUtil=/*#__PURE__*/Object.defineProperty({__proto__:null,COMMENT_NODE:COMMENT_NODE,DOCUMENT_FRAGMENT_NODE:DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE:DOCUMENT_NODE,DOCUMENT_TYPE_NODE:DOCUMENT_TYPE_NODE,ELEMENT_NODE:ELEMENT_NODE,EMPTY_ARRAY:EMPTY_ARRAY$4,EMPTY_NUMBER_ARRAY:EMPTY_NUMBER_ARRAY,EMPTY_STRING_ARRAY:EMPTY_STRING_ARRAY,INSERT_AFTER_BEGIN:INSERT_AFTER_BEGIN,INSERT_AFTER_END:INSERT_AFTER_END,INSERT_BEFORE_BEGIN:INSERT_BEFORE_BEGIN,INSERT_BEFORE_END:INSERT_BEFORE_END,ImmediateConstants:ImmediateConstants,LOCAL_LOGGER:LOCAL_LOGGER,LOGGER:LOGGER,NS_HTML:NS_HTML,NS_MATHML:NS_MATHML,NS_SVG:NS_SVG,NS_XLINK:NS_XLINK,NS_XML:NS_XML,NS_XMLNS:NS_XMLNS,RAW_NODE:RAW_NODE,SERIALIZATION_FIRST_NODE_STRING:SERIALIZATION_FIRST_NODE_STRING$1,Stack:StackImpl,TEXT_NODE:TEXT_NODE,arrayToOption:arrayToOption,asPresentArray:asPresentArray,assert:debugAssert,assertNever:assertNever,assertPresent:assertPresent,assertPresentArray:assertPresentArray,assign:assign,beginTestSteps:beginTestSteps,buildUntouchableThis:buildUntouchableThis,castToBrowser:castToBrowser,castToSimple:castToSimple,checkNode:checkBrowserNode,clearElement:clearElement,constants:constants,debugToString:debugToString$1,decodeHandle:decodeHandle,decodeImmediate:decodeImmediate,decodeNegative:decodeNegative,decodePositive:decodePositive,deprecate:deprecate$2,dict:dict,emptyArray:emptyArray,encodeHandle:encodeHandle,encodeImmediate:encodeImmediate,encodeNegative:encodeNegative,encodePositive:encodePositive,endTestSteps:endTestSteps,entries:entries,enumerate:enumerate,exhausted:exhausted,expect:expect,extractHandle:extractHandle,getFirst:getFirst,getLast:getLast,ifPresent:ifPresent,intern:intern,isDict:isDict,isElement:isElement$1,isEmptyArray:isEmptyArray,isErrHandle:isErrHandle,isHandle:isHandle,isNonPrimitiveHandle:isNonPrimitiveHandle,isObject:isObject,isOkHandle:isOkHandle,isPresent:isPresent$2,isPresentArray:isPresentArray,isSerializationFirstNode:isSerializationFirstNode$1,isSimpleElement:isSimpleElement,isSmallInt:isSmallInt,keys:keys,logStep:logStep,mapPresentArray:mapPresentArray,reverse:reverse,strip:strip$1,tuple:tuple,unreachable:unreachable,unwrap:unwrap$1,unwrapHandle:unwrapHandle,unwrapTemplate:unwrapTemplate,values:values,verifySteps:verifySteps},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/debug\n          *//**\n            Ember Inspector calls this function to capture the current render tree.\n\n            In production mode, this requires turning on `ENV._DEBUG_RENDER_TREE`\n            before loading Ember.\n\n            @private\n            @static\n            @method captureRenderTree\n            @for @ember/debug\n            @param app {ApplicationInstance} An `ApplicationInstance`.\n            @since 3.14.0\n          */function captureRenderTree(app){// SAFETY: Ideally we'd assert here but that causes awkward circular requires since this is also in @ember/debug.\n// This is only for debug stuff so not very risky.\nvar renderer=expect(app.lookup('renderer:-dom'),\"BUG: owner is missing renderer\");return renderer.debugRenderTree.capture();}var emberDebugLibCaptureRenderTree=/*#__PURE__*/Object.defineProperty({__proto__:null,default:captureRenderTree},Symbol.toStringTag,{value:'Module'});// These are the default production build versions:\nvar noop$3=function noop$3(){};// SAFETY: these casts are just straight-up lies, but the point is that they do\n// not do anything in production builds.\nvar info=noop$3;var warn=noop$3;var debug$2=noop$3;var currentDeprecate;var debugSeal=noop$3;var debugFreeze=noop$3;var runInDebug=noop$3;var setDebugFunction=noop$3;var getDebugFunction=noop$3;var deprecateFunc=function deprecateFunc(){return arguments[arguments.length-1];};function deprecate$1(){return(currentDeprecate!==null&&currentDeprecate!==void 0?currentDeprecate:defaultDeprecate).apply(void 0,arguments);}{setDebugFunction=function setDebugFunction(type,callback){switch(type){case'assert':return setAssert(callback);case'info':return info=callback;case'warn':return warn=callback;case'debug':return debug$2=callback;case'deprecate':return currentDeprecate=callback;case'debugSeal':return debugSeal=callback;case'debugFreeze':return debugFreeze=callback;case'runInDebug':return runInDebug=callback;case'deprecateFunc':return deprecateFunc=callback;}};getDebugFunction=function getDebugFunction(type){switch(type){case'assert':return assert$1;case'info':return info;case'warn':return warn;case'debug':return debug$2;case'deprecate':return deprecate$1;case'debugSeal':return debugSeal;case'debugFreeze':return debugFreeze;case'runInDebug':return runInDebug;case'deprecateFunc':return deprecateFunc;}};}/**\n          @module @ember/debug\n          */{/**\n              Display a debug notice.\n               Calls to this function are not invoked in production builds.\n               ```javascript\n              import { debug } from '@ember/debug';\n               debug('I\\'m a debug notice!');\n              ```\n               @method debug\n              @for @ember/debug\n              @static\n              @param {String} message A debug message to display.\n              @public\n            */setDebugFunction('debug',function debug(message){console.debug(\"DEBUG: \".concat(message));/* eslint-disable-line no-console */});/**\n              Display an info notice.\n               Calls to this function are removed from production builds, so they can be\n              freely added for documentation and debugging purposes without worries of\n              incuring any performance penalty.\n               @method info\n              @private\n            */setDebugFunction('info',function info(){var _console;(_console=console).info.apply(_console,arguments);/* eslint-disable-line no-console */});/**\n             @module @ember/debug\n             @public\n            *//**\n              Alias an old, deprecated method with its new counterpart.\n               Display a deprecation warning with the provided message and a stack trace\n              (Chrome and Firefox only) when the assigned method is called.\n               Calls to this function are removed from production builds, so they can be\n              freely added for documentation and debugging purposes without worries of\n              incuring any performance penalty.\n               ```javascript\n              import { deprecateFunc } from '@ember/debug';\n               Ember.oldMethod = deprecateFunc('Please use the new, updated method', options, Ember.newMethod);\n              ```\n               @method deprecateFunc\n              @static\n              @for @ember/debug\n              @param {String} message A description of the deprecation.\n              @param {Object} [options] The options object for `deprecate`.\n              @param {Function} func The new function called to replace its deprecated counterpart.\n              @return {Function} A new function that wraps the original function with a deprecation warning\n              @private\n            */setDebugFunction('deprecateFunc',function deprecateFunc(){for(var _len4=arguments.length,args=new Array(_len4),_key5=0;_key5<_len4;_key5++){args[_key5]=arguments[_key5];}if(args.length===3){var message=args[0],options=args[1],func=args[2];return function(){deprecate$1(message,false,options);for(var _len5=arguments.length,args=new Array(_len5),_key6=0;_key6<_len5;_key6++){args[_key6]=arguments[_key6];}return func.apply(this,args);};}else{var _message2=args[0],_func=args[1];return function(){deprecate$1(_message2);return _func.apply(this,arguments);};}});/**\n             @module @ember/debug\n             @public\n            *//**\n              Run a function meant for debugging.\n               Calls to this function are removed from production builds, so they can be\n              freely added for documentation and debugging purposes without worries of\n              incuring any performance penalty.\n               ```javascript\n              import Component from '@ember/component';\n              import { runInDebug } from '@ember/debug';\n               runInDebug(() => {\n                Component.reopen({\n                  didInsertElement() {\n                    console.log(\"I'm happy\");\n                  }\n                });\n              });\n              ```\n               @method runInDebug\n              @for @ember/debug\n              @static\n              @param {Function} func The function to be executed.\n              @since 1.5.0\n              @public\n            */setDebugFunction('runInDebug',function runInDebug(func){func();});setDebugFunction('debugSeal',function debugSeal(obj){Object.seal(obj);});setDebugFunction('debugFreeze',function debugFreeze(obj){// re-freezing an already frozen object introduces a significant\n// performance penalty on Chrome (tested through 59).\n//\n// See: https://bugs.chromium.org/p/v8/issues/detail?id=6450\nif(!Object.isFrozen(obj)){Object.freeze(obj);}});setDebugFunction('warn',_warn);}var _warnIfUsingStrippedFeatureFlags;if(!isTesting()){if(typeof window!=='undefined'&&(isFirefox||isChrome)&&window.addEventListener){window.addEventListener('load',function(){if(document.documentElement&&document.documentElement.dataset&&!document.documentElement.dataset['emberExtension']){var downloadURL;if(isChrome){downloadURL='https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi';}else if(isFirefox){downloadURL='https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/';}debug$2(\"For more advanced debugging, install the Ember Inspector from \".concat(downloadURL));}},false);}}var emberDebugIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,_warnIfUsingStrippedFeatureFlags:_warnIfUsingStrippedFeatureFlags,get assert(){return assert$1;},captureRenderTree:captureRenderTree,get debug(){return debug$2;},get debugFreeze(){return debugFreeze;},get debugSeal(){return debugSeal;},deprecate:deprecate$1,get deprecateFunc(){return deprecateFunc;},get getDebugFunction(){return getDebugFunction;},get info(){return info;},inspect:inspect,isTesting:isTesting,get registerDeprecationHandler(){return registerHandler$1;},get registerWarnHandler(){return registerHandler;},get runInDebug(){return runInDebug;},get setDebugFunction(){return setDebugFunction;},setTesting:setTesting,get warn(){return warn;}},Symbol.toStringTag,{value:'Module'});var setupMandatorySetter;var teardownMandatorySetter;var setWithMandatorySetter;function isElementKey(key){return typeof key==='number'?isPositiveInt(key):isStringInt(key);}function isStringInt(str){var num=parseInt(str,10);return isPositiveInt(num)&&str===String(num);}function isPositiveInt(num){return num>=0&&num%1===0;}{var SEEN_TAGS=new WeakSet();var MANDATORY_SETTERS=new WeakMap();var _propertyIsEnumerable=function _propertyIsEnumerable(obj,key){return Object.prototype.propertyIsEnumerable.call(obj,key);};setupMandatorySetter=function setupMandatorySetter(tag,obj,keyName){if(SEEN_TAGS.has(tag)){return;}SEEN_TAGS.add(tag);if(Array.isArray(obj)&&isElementKey(keyName)){return;}var desc=lookupDescriptor(obj,keyName)||{};if(desc.get||desc.set){// if it has a getter or setter, we can't install the mandatory setter.\n// native setters are allowed, we have to assume that they will resolve\n// to tracked properties.\nreturn;}if(desc&&(!desc.configurable||!desc.writable)){// if it isn't writable anyways, so we shouldn't provide the setter.\n// if it isn't configurable, we can't overwrite it anyways.\nreturn;}var setters=MANDATORY_SETTERS.get(obj);if(setters===undefined){setters={};MANDATORY_SETTERS.set(obj,setters);}desc.hadOwnProperty=Object.hasOwnProperty.call(obj,keyName);setters[keyName]=desc;Object.defineProperty(obj,keyName,{configurable:true,enumerable:_propertyIsEnumerable(obj,keyName),get:function get(){if(desc.get){return desc.get.call(this);}else{return desc.value;}},set:function set(value){assert$1(\"You attempted to update \".concat(this,\".\").concat(String(keyName),\" to \\\"\").concat(String(value),\"\\\", but it is being tracked by a tracking context, such as a template, computed property, or observer. In order to make sure the context updates properly, you must invalidate the property when updating it. You can mark the property as `@tracked`, or use `@ember/object#set` to do this.\"));}});};teardownMandatorySetter=function teardownMandatorySetter(obj,keyName){var setters=MANDATORY_SETTERS.get(obj);if(setters!==undefined&&setters[keyName]!==undefined){Object.defineProperty(obj,keyName,setters[keyName]);delete setters[keyName];}};setWithMandatorySetter=function setWithMandatorySetter(obj,keyName,value){var setters=MANDATORY_SETTERS.get(obj);if(setters!==undefined&&setters[keyName]!==undefined){var setter=setters[keyName];if(setter.set){setter.set.call(obj,value);}else{setter.value=value;// If the object didn't have own property before, it would have changed\n// the enumerability after setting the value the first time.\nif(!setter.hadOwnProperty){var desc=lookupDescriptor(obj,keyName);desc.enumerable=true;Object.defineProperty(obj,keyName,desc);}}}else{obj[keyName]=value;}};}/*\n           This package will be eagerly parsed and should have no dependencies on external\n           packages.\n\n           It is intended to be used to share utility methods that will be needed\n           by every Ember application (and is **not** a dumping ground of useful utilities).\n\n           Utility methods that are needed in < 80% of cases should be placed\n           elsewhere (so they can be lazily evaluated / parsed).\n          */var emberinternalsUtilsIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Cache:Cache,GUID_KEY:GUID_KEY,ROOT:ROOT,canInvoke:canInvoke,checkHasSuper:checkHasSuper,dictionary:makeDictionary,enumerableSymbol:enumerableSymbol,generateGuid:generateGuid,getDebugName:getDebugName$1,getName:getName,guidFor:guidFor,intern:intern$1,isInternalSymbol:isInternalSymbol,isObject:isObject$1,isProxy:isProxy,lookupDescriptor:lookupDescriptor,observerListenerMetaFor:observerListenerMetaFor,setListeners:setListeners,setName:setName,setObservers:setObservers,setProxy:setProxy,get setWithMandatorySetter(){return setWithMandatorySetter;},get setupMandatorySetter(){return setupMandatorySetter;},symbol:symbol,get teardownMandatorySetter(){return teardownMandatorySetter;},toString:toString$1,uuid:uuid$1,wrap:wrap$1},Symbol.toStringTag,{value:'Module'});var OWNER$1=Symbol(\"OWNER\");/**\n            Framework objects in a Glimmer application may receive an owner object.\n            Glimmer is unopinionated about this owner, but will forward it through its\n            internal resolution system, and through its managers if it is provided.\n          */function getOwner$3(object){return object[OWNER$1];}/**\n            `setOwner` set's an object's owner\n          */function setOwner$2(object,owner){object[OWNER$1]=owner;}var glimmerOwner=/*#__PURE__*/Object.defineProperty({__proto__:null,OWNER:OWNER$1,getOwner:getOwner$3,setOwner:setOwner$2},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/owner\n           *//**\n            The name for a factory consists of a namespace and the name of a specific type\n            within that namespace, like `'service:session'`.\n\n            **Note:** `FullName` is *not* a class, just a contract for strings used in the\n            DI system. It is currently documented as a class only due to limits in our\n            documentation infrastructure.\n\n            @for @ember/owner\n            @class FullName\n            @public\n           *//**\n            A type registry for the DI system, which other participants in the DI system\n            can register themselves into with declaration merging. The contract for this\n            type is that its keys are the `Type` from a `FullName`, and each value for a\n            `Type` is another registry whose keys are the `Name` from a `FullName`. The\n            mechanic for providing a registry is [declaration merging][handbook].\n\n            [handbook]: https://www.typescriptlang.org/docs/handbook/declaration-merging.html\n\n            For example, Ember's `@ember/service` module includes this set of definitions:\n\n            ```ts\n            export default class Service extends EmberObject {}\n\n            // For concrete singleton classes to be merged into.\n            interface Registry extends Record<string, Service> {}\n\n            declare module '@ember/owner' {\n              service: Registry;\n            }\n            ```\n\n            Declarations of services can then include the registry:\n\n            ```ts\n            import Service from '@ember/service';\n\n            export default class Session extends Service {\n              login(username: string, password: string) {\n                // ...\n              }\n            }\n\n            declare module '@ember/service' {\n              interface Registry {\n                session: Session;\n              }\n            }\n            ```\n\n            Then users of the `Owner` API will be able to do things like this with strong\n            type safety guarantees:\n\n            ```ts\n            getOwner(this)?.lookup('service:session').login(\"hello\", \"1234abcd\");\n            ```\n\n            @for @ember/owner\n            @private\n           */// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// Convenience utility for pulling a specific factory manager off `DIRegistry`\n// if one exists, or falling back to the default definition otherwise.\n/**\n            @private\n           *//**\n            The common interface for the ability to `register()` an item, shared by the\n            `Owner` and `RegistryProxy` interfaces.\n\n            @for @ember/owner\n            @class BasicRegistry\n            @private\n           *//**\n            The common interface for the ability to `lookup()` or get the `factoryFor` an\n            item, shared by the `Owner` and `ContainerProxy` interfaces.\n\n            @for @ember/owner\n            @class BasicContainer\n            @private\n           *//**\n            Framework objects in an Ember application (components, services, routes,\n            etc.) are created via a factory and dependency injection system. Each of\n            these objects is the responsibility of an \"owner\", which handles its\n            instantiation and manages its lifetime.\n\n            An `Owner` is not a class you construct; it is one the framework constructs\n            for you. The normal way to get access to the relevant `Owner` is using the\n            `getOwner` function.\n\n            @for @ember/owner\n            @uses BasicRegistry\n            @uses BasicContainer\n            @class Owner\n            @since 4.10.0\n            @public\n           *//**\n           * Interface representing the options for registering an item as a factory.\n           *\n           * @for @ember/owner\n           * @class RegisterOptions\n           * @public\n           *//**\n            Registered factories are instantiated by having create called on them.\n            Additionally they are singletons by default, so each time they are looked up\n            they return the same instance.\n\n            However, that behavior can be modified with the `instantiate` and `singleton`\n            options to the `Owner.register()` method.\n\n            @for @ember/owner\n            @class Factory\n            @since 4.10.0\n            @public\n           *//**\n            The interface representing a manager which can be used for introspection of\n            the factory's class or for the creation of factory instances with initial\n            properties. The manager is an object with the following properties:\n\n            - `class` - The registered or resolved class.\n            - `create` - A function that will create an instance of the class with any\n            dependencies injected.\n\n            **Note:** `FactoryManager` is *not* user-constructible; the only legal way\n            to get a `FactoryManager` is via `Owner.factoryFor`.\n\n            @for @ember/owner\n            @class FactoryManager\n            @extends Factory\n            @public\n           *//**\n           * A record mapping all known items of a given type: if the item is known it\n           * will be `true`; otherwise it will be `false` or `undefined`.\n           *//**\n            A `Resolver` is the mechanism responsible for looking up code in your\n            application and converting its naming conventions into the actual classes,\n            functions, and templates that Ember needs to resolve its dependencies, for\n            example, what template to render for a given route. It is a system that helps\n            the app resolve the lookup of JavaScript modules agnostic of what kind of\n            module system is used, which can be AMD, CommonJS or just plain globals. It\n            is used to lookup routes, models, components, templates, or anything that is\n            used in your Ember app.\n\n            This interface is not a concrete class; instead, it represents the contract a\n            custom resolver must implement. Most apps never need to think about this: in\n            the default blueprint, this is supplied by the `ember-resolver` package.\n\n            @for @ember/owner\n            @class Resolver\n            @since 4.10.0\n            @public\n           *//**\n            The internal representation of a `Factory`, for the extra detail available for\n            private use internally than we expose to consumers.\n\n            @for @ember/owner\n            @class InternalFactory\n            @private\n           *//**\n            @private\n            @method isFactory\n            @param {Object} obj\n            @return {Boolean}\n            @static\n           */function isFactory(obj){return obj!=null&&typeof obj.create==='function';}// NOTE: For docs, see the definition at the public API site in `@ember/owner`;\n// we document it there for the sake of public API docs and for TS consumption,\n// while having the richer `InternalOwner` representation for Ember itself.\nfunction getOwner$2(object){return getOwner$3(object);}/**\n            `setOwner` forces a new owner on a given object instance. This is primarily\n            useful in some testing cases.\n\n            @method setOwner\n            @static\n            @for @ember/owner\n            @param {Object} object An object instance.\n            @param {Owner} object The new owner object of the object instance.\n            @since 2.3.0\n            @public\n          */function setOwner$1(object,owner){setOwner$2(object,owner);}// Defines the type for the ContainerProxyMixin. When we rationalize our Owner\n// *not* to work via mixins, we will be able to delete this entirely, in favor\n// of just using the Owner class itself.\n/**\n           * The interface for a container proxy, which is itself a private API used\n           * by the private `ContainerProxyMixin` as part of the base definition of\n           * `EngineInstance`.\n           *\n           * @class ContainerProxy\n           * @for @ember/owner\n           * @private\n           * @extends BasicContainer\n           *//**\n           * @class RegistryProxy\n           * @extends BasicRegistry\n           * @private\n           * @for @ember/owner\n           *//**\n           * @internal This is the same basic interface which is implemented (via the\n           *   mixins) by `EngineInstance` and therefore `ApplicationInstance`, which are\n           *   the normal interfaces to an `Owner` for end user applications now. However,\n           *   going forward, we expect to progressively deprecate and remove the \"extra\"\n           *   APIs which are not exposed on `Owner` itself.\n           */var emberinternalsOwnerIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,getOwner:getOwner$2,isFactory:isFactory,setOwner:setOwner$1},Symbol.toStringTag,{value:'Module'});// node exposes this. I'm not pulling in the whole @types/node because it\n// doesn't work with isolatedModules\nvar leakTracking;var containers;{// requires v8\n// chrome --js-flags=\"--allow-natives-syntax --expose-gc\"\n// node --allow-natives-syntax --expose-gc\ntry{if(typeof gc==='function'){leakTracking=function(){// avoid syntax errors when --allow-natives-syntax not present\nvar GetWeakSetValues=new Function('weakSet','return %GetWeakSetValues(weakSet, 0)');containers=new WeakSet();return{hasContainers:function hasContainers(){gc();return GetWeakSetValues(containers).length>0;},reset:function reset(){var values=GetWeakSetValues(containers);for(var i=0;i<values.length;i++){containers.delete(values[i]);}}};}();}}catch(_e){// ignore\n}}/**\n           A container used to instantiate and cache objects.\n\n           Every `Container` must be associated with a `Registry`, which is referenced\n           to determine the factory and options that should be used to instantiate\n           objects.\n\n           The public API for `Container` is still in flux and should not be considered\n           stable.\n\n           @private\n           @class Container\n           */var Container=/*#__PURE__*/function(){function Container(registry){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Container);_defineProperty(this,\"owner\",void 0);_defineProperty(this,\"registry\",void 0);_defineProperty(this,\"cache\",void 0);_defineProperty(this,\"factoryManagerCache\",void 0);_defineProperty(this,\"validationCache\",void 0);_defineProperty(this,\"isDestroyed\",void 0);_defineProperty(this,\"isDestroying\",void 0);this.registry=registry;this.owner=options.owner||null;this.cache=makeDictionary(options.cache||null);this.factoryManagerCache=makeDictionary(options.factoryManagerCache||null);this.isDestroyed=false;this.isDestroying=false;{this.validationCache=makeDictionary(options.validationCache||null);if(containers!==undefined){containers.add(this);}}}/**\n             @private\n             @property registry\n             @type Registry\n             @since 1.11.0\n             *//**\n             @private\n             @property cache\n             @type InheritingDict\n             *//**\n             @private\n             @property validationCache\n             @type InheritingDict\n             *//**\n             Given a fullName return a corresponding instance.\n              The default behavior is for lookup to return a singleton instance.\n             The singleton is scoped to the container, allowing multiple containers\n             to all have their own locally scoped singletons.\n              ```javascript\n             let registry = new Registry();\n             let container = registry.container();\n              registry.register('api:twitter', Twitter);\n              let twitter = container.lookup('api:twitter');\n              twitter instanceof Twitter; // => true\n              // by default the container will return singletons\n             let twitter2 = container.lookup('api:twitter');\n             twitter2 instanceof Twitter; // => true\n              twitter === twitter2; //=> true\n             ```\n              If singletons are not wanted, an optional flag can be provided at lookup.\n              ```javascript\n             let registry = new Registry();\n             let container = registry.container();\n              registry.register('api:twitter', Twitter);\n              let twitter = container.lookup('api:twitter', { singleton: false });\n             let twitter2 = container.lookup('api:twitter', { singleton: false });\n              twitter === twitter2; //=> false\n             ```\n              @private\n             @method lookup\n             @param {String} fullName\n             @param {RegisterOptions} [options]\n             @return {any}\n             */return _createClass(Container,[{key:\"lookup\",value:function lookup(fullName,options){if(this.isDestroyed){throw new Error(\"Cannot call `.lookup('\".concat(fullName,\"')` after the owner has been destroyed\"));}!this.registry.isValidFullName(fullName)&&assert$1('fullName must be a proper full name',this.registry.isValidFullName(fullName));return _lookup(this,this.registry.normalize(fullName),options);}/**\n             A depth first traversal, destroying the container, its descendant containers and all\n             their managed objects.\n              @private\n             @method destroy\n             */},{key:\"destroy\",value:function destroy(){this.isDestroying=true;destroyDestroyables(this);}},{key:\"finalizeDestroy\",value:function finalizeDestroy(){resetCache(this);this.isDestroyed=true;}/**\n             Clear either the entire cache or just the cache for a particular key.\n              @private\n             @method reset\n             @param {String} fullName optional key to reset; if missing, resets everything\n            */},{key:\"reset\",value:function reset(fullName){if(this.isDestroyed)return;if(fullName===undefined){destroyDestroyables(this);resetCache(this);}else{resetMember(this,this.registry.normalize(fullName));}}/**\n             Returns an object that can be used to provide an owner to a\n             manually created instance.\n              @private\n             @method ownerInjection\n             @returns { Object }\n            */},{key:\"ownerInjection\",value:function ownerInjection(){var injection={};setOwner$1(injection,this.owner);return injection;}/**\n             Given a fullName, return the corresponding factory. The consumer of the factory\n             is responsible for the destruction of any factory instances, as there is no\n             way for the container to ensure instances are destroyed when it itself is\n             destroyed.\n              @public\n             @method factoryFor\n             @param {String} fullName\n             @return {any}\n             */},{key:\"factoryFor\",value:function factoryFor(fullName){if(this.isDestroyed){throw new Error(\"Cannot call `.factoryFor('\".concat(fullName,\"')` after the owner has been destroyed\"));}var normalizedName=this.registry.normalize(fullName);!this.registry.isValidFullName(normalizedName)&&assert$1('fullName must be a proper full name',this.registry.isValidFullName(normalizedName));return _factoryFor(this,normalizedName,fullName);}}]);}();_defineProperty(Container,\"_leakTracking\",void 0);{Container._leakTracking=leakTracking;}/*\n           * Wrap a factory manager in a proxy which will not permit properties to be\n           * set on the manager.\n           */function wrapManagerInDeprecationProxy(manager){var validator={set:function set(_obj,prop){throw new Error(\"You attempted to set \\\"\".concat(String(prop),\"\\\" on a factory manager created by container#factoryFor. A factory manager is a read-only construct.\"));}};// Note:\n// We have to proxy access to the manager here so that private property\n// access doesn't cause the above errors to occur.\nvar m=manager;var proxiedManager={class:m.class,create:function create(props){return m.create(props);}};return new Proxy(proxiedManager,validator);}function isSingleton(container,fullName){return container.registry.getOption(fullName,'singleton')!==false;}function isInstantiatable(container,fullName){return container.registry.getOption(fullName,'instantiate')!==false;}function _lookup(container,fullName){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var normalizedName=fullName;if(options.singleton===true||options.singleton===undefined&&isSingleton(container,fullName)){var _cached=container.cache[normalizedName];if(_cached!==undefined){return _cached;}}return instantiateFactory(container,normalizedName,fullName,options);}function _factoryFor(container,normalizedName,fullName){var cached=container.factoryManagerCache[normalizedName];if(cached!==undefined){return cached;}var factory=container.registry.resolve(normalizedName);if(factory===undefined){return;}if(factory&&typeof factory._onLookup==='function'){factory._onLookup(fullName);}var manager=new InternalFactoryManager(container,factory,fullName,normalizedName);{manager=wrapManagerInDeprecationProxy(manager);}container.factoryManagerCache[normalizedName]=manager;return manager;}function isSingletonClass(container,fullName,_ref2){var instantiate=_ref2.instantiate,singleton=_ref2.singleton;return singleton!==false&&!instantiate&&isSingleton(container,fullName)&&!isInstantiatable(container,fullName);}function isSingletonInstance(container,fullName,_ref3){var instantiate=_ref3.instantiate,singleton=_ref3.singleton;return singleton!==false&&instantiate!==false&&(singleton===true||isSingleton(container,fullName))&&isInstantiatable(container,fullName);}function isFactoryClass(container,fullname,_ref4){var instantiate=_ref4.instantiate,singleton=_ref4.singleton;return instantiate===false&&(singleton===false||!isSingleton(container,fullname))&&!isInstantiatable(container,fullname);}function isFactoryInstance(container,fullName,_ref5){var instantiate=_ref5.instantiate,singleton=_ref5.singleton;return instantiate!==false&&(singleton===false||!isSingleton(container,fullName))&&isInstantiatable(container,fullName);}function instantiateFactory(container,normalizedName,fullName,options){var factoryManager=_factoryFor(container,normalizedName,fullName);if(factoryManager===undefined){return;}// SomeClass { singleton: true, instantiate: true } | { singleton: true } | { instantiate: true } | {}\n// By default majority of objects fall into this case\nif(isSingletonInstance(container,fullName,options)){var instance=container.cache[normalizedName]=factoryManager.create();// if this lookup happened _during_ destruction (emits a deprecation, but\n// is still possible) ensure that it gets destroyed\nif(container.isDestroying){if(typeof instance.destroy==='function'){instance.destroy();}}return instance;}// SomeClass { singleton: false, instantiate: true }\nif(isFactoryInstance(container,fullName,options)){return factoryManager.create();}// SomeClass { singleton: true, instantiate: false } | { instantiate: false } | { singleton: false, instantiation: false }\nif(isSingletonClass(container,fullName,options)||isFactoryClass(container,fullName,options)){return factoryManager.class;}throw new Error('Could not create factory');}function destroyDestroyables(container){var cache=container.cache;var keys=Object.keys(cache);for(var _i=0,_keys2=keys;_i<_keys2.length;_i++){var key=_keys2[_i];var value=cache[key];!value&&assert$1('has cached value',value);if(value.destroy){value.destroy();}}}function resetCache(container){container.cache=makeDictionary(null);container.factoryManagerCache=makeDictionary(null);}function resetMember(container,fullName){var member=container.cache[fullName];delete container.factoryManagerCache[fullName];if(member){delete container.cache[fullName];if(member.destroy){member.destroy();}}}var INIT_FACTORY=Symbol('INIT_FACTORY');function getFactoryFor(obj){// SAFETY: since we know `obj` is an `object`, we also know we can safely ask\n// whether a key is set on it.\nreturn obj[INIT_FACTORY];}function setFactoryFor(obj,factory){// SAFETY: since we know `obj` is an `object`, we also know we can safely set\n// a key it safely at this location. (The only way this could be blocked is if\n// someone has gone out of their way to use `Object.defineProperty()` with our\n// internal-only symbol and made it `writable: false`.)\nobj[INIT_FACTORY]=factory;}var InternalFactoryManager=/*#__PURE__*/function(){function InternalFactoryManager(container,factory,fullName,normalizedName){_classCallCheck(this,InternalFactoryManager);_defineProperty(this,\"container\",void 0);_defineProperty(this,\"owner\",void 0);_defineProperty(this,\"class\",void 0);_defineProperty(this,\"fullName\",void 0);_defineProperty(this,\"normalizedName\",void 0);_defineProperty(this,\"madeToString\",void 0);_defineProperty(this,\"injections\",void 0);this.container=container;this.owner=container.owner;this.class=factory;this.fullName=fullName;this.normalizedName=normalizedName;this.madeToString=undefined;this.injections=undefined;}return _createClass(InternalFactoryManager,[{key:\"toString\",value:function toString(){if(this.madeToString===undefined){this.madeToString=this.container.registry.makeToString(this.class,this.fullName);}return this.madeToString;}},{key:\"create\",value:function create(options){var container=this.container;if(container.isDestroyed){throw new Error(\"Cannot create new instances after the owner has been destroyed (you attempted to create \".concat(this.fullName,\")\"));}var props=options?_objectSpread({},options):{};setOwner$1(props,container.owner);setFactoryFor(props,this);{var lazyInjections;var validationCache=this.container.validationCache;// Ensure that all lazy injections are valid at instantiation time\nif(!validationCache[this.fullName]&&this.class&&typeof this.class._lazyInjections==='function'){lazyInjections=this.class._lazyInjections();lazyInjections=this.container.registry.normalizeInjectionsHash(lazyInjections);this.container.registry.validateInjections(lazyInjections);}validationCache[this.fullName]=true;!(typeof this.class.create==='function')&&assert$1(\"Failed to create an instance of '\".concat(this.normalizedName,\"'. Most likely an improperly defined class or an invalid module export.\"),typeof this.class.create==='function');}return this.class.create(props);}}]);}();var VALID_FULL_NAME_REGEXP=/^[^:]+:[^:]+$/;/**\n           A registry used to store factory and option information keyed\n           by type.\n\n           A `Registry` stores the factory and option information needed by a\n           `Container` to instantiate and cache objects.\n\n           The API for `Registry` is still in flux and should not be considered stable.\n\n           @private\n           @class Registry\n           @since 1.11.0\n          */var Registry=/*#__PURE__*/function(){function Registry(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,Registry);_defineProperty(this,\"_failSet\",void 0);_defineProperty(this,\"resolver\",void 0);_defineProperty(this,\"fallback\",void 0);_defineProperty(this,\"registrations\",void 0);_defineProperty(this,\"_normalizeCache\",void 0);_defineProperty(this,\"_options\",void 0);_defineProperty(this,\"_resolveCache\",void 0);_defineProperty(this,\"_typeOptions\",void 0);this.fallback=options.fallback||null;this.resolver=options.resolver||null;this.registrations=makeDictionary(options.registrations||null);this._normalizeCache=makeDictionary(null);this._resolveCache=makeDictionary(null);this._failSet=new Set();this._options=makeDictionary(null);this._typeOptions=makeDictionary(null);}/**\n             A backup registry for resolving registrations when no matches can be found.\n              @private\n             @property fallback\n             @type Registry\n             *//**\n             An object that has a `resolve` method that resolves a name.\n              @private\n             @property resolver\n             @type Resolver\n             *//**\n             @private\n             @property registrations\n             @type InheritingDict\n             *//**\n             @private\n              @property _normalizeCache\n             @type InheritingDict\n             *//**\n             @private\n              @property _resolveCache\n             @type InheritingDict\n             *//**\n             @private\n              @property _options\n             @type InheritingDict\n             *//**\n             @private\n              @property _typeOptions\n             @type InheritingDict\n             *//**\n             Creates a container based on this registry.\n              @private\n             @method container\n             @param {Object} options\n             @return {Container} created container\n             */return _createClass(Registry,[{key:\"container\",value:function container(options){return new Container(this,options);}/**\n             Registers a factory for later injection.\n              Example:\n              ```javascript\n             let registry = new Registry();\n              registry.register('model:user', Person, {singleton: false });\n             registry.register('fruit:favorite', Orange);\n             registry.register('communication:main', Email, {singleton: false});\n             ```\n              @private\n             @method register\n             @param {String} fullName\n             @param {Function} factory\n             @param {Object} options\n             */},{key:\"register\",value:function register(fullName,factory){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};!this.isValidFullName(fullName)&&assert$1('fullName must be a proper full name',this.isValidFullName(fullName));!(factory!==undefined)&&assert$1(\"Attempting to register an unknown factory: '\".concat(fullName,\"'\"),factory!==undefined);var normalizedName=this.normalize(fullName);!!this._resolveCache[normalizedName]&&assert$1(\"Cannot re-register: '\".concat(fullName,\"', as it has already been resolved.\"),!this._resolveCache[normalizedName]);this._failSet.delete(normalizedName);this.registrations[normalizedName]=factory;this._options[normalizedName]=options;}/**\n             Unregister a fullName\n              ```javascript\n             let registry = new Registry();\n             registry.register('model:user', User);\n              registry.resolve('model:user').create() instanceof User //=> true\n              registry.unregister('model:user')\n             registry.resolve('model:user') === undefined //=> true\n             ```\n              @private\n             @method unregister\n             @param {String} fullName\n             */},{key:\"unregister\",value:function unregister(fullName){!this.isValidFullName(fullName)&&assert$1('fullName must be a proper full name',this.isValidFullName(fullName));var normalizedName=this.normalize(fullName);delete this.registrations[normalizedName];delete this._resolveCache[normalizedName];delete this._options[normalizedName];this._failSet.delete(normalizedName);}/**\n             Given a fullName return the corresponding factory.\n              By default `resolve` will retrieve the factory from\n             the registry.\n              ```javascript\n             let registry = new Registry();\n             registry.register('api:twitter', Twitter);\n              registry.resolve('api:twitter') // => Twitter\n             ```\n              Optionally the registry can be provided with a custom resolver.\n             If provided, `resolve` will first provide the custom resolver\n             the opportunity to resolve the fullName, otherwise it will fallback\n             to the registry.\n              ```javascript\n             let registry = new Registry();\n             registry.resolver = function(fullName) {\n                // lookup via the module system of choice\n              };\n              // the twitter factory is added to the module system\n             registry.resolve('api:twitter') // => Twitter\n             ```\n              @private\n             @method resolve\n             @param {String} fullName\n             @return {Function} fullName's factory\n             */},{key:\"resolve\",value:function resolve(fullName){var factory=resolve$5(this,this.normalize(fullName));if(factory===undefined&&this.fallback!==null){factory=this.fallback.resolve(fullName);}return factory;}/**\n             A hook that can be used to describe how the resolver will\n             attempt to find the factory.\n              For example, the default Ember `.describe` returns the full\n             class name (including namespace) where Ember's resolver expects\n             to find the `fullName`.\n              @private\n             @method describe\n             @param {String} fullName\n             @return {string} described fullName\n             */},{key:\"describe\",value:function describe(fullName){if(this.resolver!==null&&this.resolver.lookupDescription){return this.resolver.lookupDescription(fullName);}else if(this.fallback!==null){return this.fallback.describe(fullName);}else{return fullName;}}/**\n             A hook to enable custom fullName normalization behavior\n              @private\n             @method normalizeFullName\n             @param {String} fullName\n             @return {string} normalized fullName\n             */},{key:\"normalizeFullName\",value:function normalizeFullName(fullName){if(this.resolver!==null&&this.resolver.normalize){return this.resolver.normalize(fullName);}else if(this.fallback!==null){return this.fallback.normalizeFullName(fullName);}else{return fullName;}}/**\n             Normalize a fullName based on the application's conventions\n              @private\n             @method normalize\n             @param {String} fullName\n             @return {string} normalized fullName\n             */},{key:\"normalize\",value:function normalize(fullName){return this._normalizeCache[fullName]||(this._normalizeCache[fullName]=this.normalizeFullName(fullName));}/**\n             @method makeToString\n              @private\n             @param {any} factory\n             @param {string} fullName\n             @return {function} toString function\n             */},{key:\"makeToString\",value:function makeToString(factory,fullName){if(this.resolver!==null&&this.resolver.makeToString){return this.resolver.makeToString(factory,fullName);}else if(this.fallback!==null){return this.fallback.makeToString(factory,fullName);}else{var _factory$name;return typeof factory==='string'?factory:(_factory$name=factory.name)!==null&&_factory$name!==void 0?_factory$name:'(unknown class)';}}/**\n             Given a fullName check if the container is aware of its factory\n             or singleton instance.\n              @private\n             @method has\n             @param {String} fullName\n             @param {Object} [options]\n             @param {String} [options.source] the fullname of the request source (used for local lookups)\n             @return {Boolean}\n             */},{key:\"has\",value:function has(fullName){if(!this.isValidFullName(fullName)){return false;}return has$1(this,this.normalize(fullName));}/**\n             Allow registering options for all factories of a type.\n              ```javascript\n             let registry = new Registry();\n             let container = registry.container();\n              // if all of type `connection` must not be singletons\n             registry.optionsForType('connection', { singleton: false });\n              registry.register('connection:twitter', TwitterConnection);\n             registry.register('connection:facebook', FacebookConnection);\n              let twitter = container.lookup('connection:twitter');\n             let twitter2 = container.lookup('connection:twitter');\n              twitter === twitter2; // => false\n              let facebook = container.lookup('connection:facebook');\n             let facebook2 = container.lookup('connection:facebook');\n              facebook === facebook2; // => false\n             ```\n              @private\n             @method optionsForType\n             @param {String} type\n             @param {Object} options\n             */},{key:\"optionsForType\",value:function optionsForType(type,options){this._typeOptions[type]=options;}},{key:\"getOptionsForType\",value:function getOptionsForType(type){var optionsForType=this._typeOptions[type];if(optionsForType===undefined&&this.fallback!==null){optionsForType=this.fallback.getOptionsForType(type);}return optionsForType;}/**\n             @private\n             @method options\n             @param {String} fullName\n             @param {Object} options\n             */},{key:\"options\",value:function options(fullName,_options2){var normalizedName=this.normalize(fullName);this._options[normalizedName]=_options2;}},{key:\"getOptions\",value:function getOptions(fullName){var normalizedName=this.normalize(fullName);var options=this._options[normalizedName];if(options===undefined&&this.fallback!==null){options=this.fallback.getOptions(fullName);}return options;}},{key:\"getOption\",value:function getOption(fullName,optionName){var options=this._options[fullName];if(options!==undefined&&options[optionName]!==undefined){return options[optionName];}var type=fullName.split(':')[0];!type&&assert$1('has type',type);// split always will have at least one value\noptions=this._typeOptions[type];if(options&&options[optionName]!==undefined){return options[optionName];}else if(this.fallback!==null){return this.fallback.getOption(fullName,optionName);}return undefined;}/**\n             @private\n             @method knownForType\n             @param {String} type the type to iterate over\n            */},{key:\"knownForType\",value:function knownForType(type){var localKnown=makeDictionary(null);var registeredNames=Object.keys(this.registrations);for(var _i2=0,_registeredNames=registeredNames;_i2<_registeredNames.length;_i2++){var fullName=_registeredNames[_i2];var itemType=fullName.split(':')[0];if(itemType===type){localKnown[fullName]=true;}}var fallbackKnown,resolverKnown;if(this.fallback!==null){fallbackKnown=this.fallback.knownForType(type);}if(this.resolver!==null&&this.resolver.knownForType){resolverKnown=this.resolver.knownForType(type);}return Object.assign({},fallbackKnown,localKnown,resolverKnown);}},{key:\"isValidFullName\",value:function isValidFullName(fullName){return VALID_FULL_NAME_REGEXP.test(fullName);}}]);}();{var proto=Registry.prototype;proto.normalizeInjectionsHash=function(hash){var injections=[];for(var key in hash){if(Object.prototype.hasOwnProperty.call(hash,key)){var value=hash[key];!value&&assert$1('has value',value);var specifier=value.specifier;!this.isValidFullName(specifier)&&assert$1(\"Expected a proper full name, given '\".concat(specifier,\"'\"),this.isValidFullName(specifier));injections.push({property:key,specifier:specifier});}}return injections;};proto.validateInjections=function(injections){if(!injections){return;}var _iterator6=_createForOfIteratorHelper(injections),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var injection=_step6.value;var specifier=injection.specifier;!this.has(specifier)&&assert$1(\"Attempting to inject an unknown injection: '\".concat(specifier,\"'\"),this.has(specifier));}}catch(err){_iterator6.e(err);}finally{_iterator6.f();}};}function resolve$5(registry,_normalizedName){var normalizedName=_normalizedName;var cached=registry._resolveCache[normalizedName];if(cached!==undefined){return cached;}if(registry._failSet.has(normalizedName)){return;}var resolved;if(registry.resolver){resolved=registry.resolver.resolve(normalizedName);}if(resolved===undefined){resolved=registry.registrations[normalizedName];}if(resolved===undefined){registry._failSet.add(normalizedName);}else{registry._resolveCache[normalizedName]=resolved;}return resolved;}function has$1(registry,fullName){return registry.resolve(fullName)!==undefined;}var privateNames=makeDictionary(null);var privateSuffix=\"\".concat(Math.random()).concat(Date.now()).replace('.','');function privatize(_ref6){var _ref7=_slicedToArray(_ref6,1),fullName=_ref7[0];!(arguments.length===1&&fullName)&&assert$1('has a single string argument',arguments.length===1&&fullName);var name=privateNames[fullName];if(name){return name;}var _fullName$split=fullName.split(':'),_fullName$split2=_slicedToArray(_fullName$split,2),type=_fullName$split2[0],rawName=_fullName$split2[1];return privateNames[fullName]=intern$1(\"\".concat(type,\":\").concat(rawName,\"-\").concat(privateSuffix));}/*\n          Public API for the container is still in flux.\n          The public API, specified on the application namespace should be considered the stable API.\n          // @module container\n            @private\n          */var emberinternalsContainerIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Container:Container,INIT_FACTORY:INIT_FACTORY,Registry:Registry,getFactoryFor:getFactoryFor,privatize:privatize,setFactoryFor:setFactoryFor},Symbol.toStringTag,{value:'Module'});// this file gets replaced with the real value during the build\nvar Version='5.12.0';var emberVersion=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Version},Symbol.toStringTag,{value:'Module'});var emberVersionIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,VERSION:Version},Symbol.toStringTag,{value:'Module'});/*\n            This module exists to separate the @ember/string methods used\n            internally in ember-source, from those public methods that are\n            now deprecated and to be removed.\n          */var STRING_DASHERIZE_REGEXP=/[ _]/g;var STRING_DASHERIZE_CACHE=new Cache(1000,function(key){return decamelize(key).replace(STRING_DASHERIZE_REGEXP,'-');});var STRING_CLASSIFY_REGEXP_1=/^(-|_)+(.)?/;var STRING_CLASSIFY_REGEXP_2=/(.)(-|_|\\.|\\s)+(.)?/g;var STRING_CLASSIFY_REGEXP_3=/(^|\\/|\\.)([a-z])/g;var CLASSIFY_CACHE=new Cache(1000,function(str){var replace1=function replace1(_match,_separator,chr){return chr?\"_\".concat(chr.toUpperCase()):'';};var replace2=function replace2(_match,initialChar,_separator,chr){return initialChar+(chr?chr.toUpperCase():'');};var parts=str.split('/');for(var i=0;i<parts.length;i++){parts[i]=parts[i].replace(STRING_CLASSIFY_REGEXP_1,replace1).replace(STRING_CLASSIFY_REGEXP_2,replace2);}return parts.join('/').replace(STRING_CLASSIFY_REGEXP_3,function(match/*, separator, chr */){return match.toUpperCase();});});var STRING_DECAMELIZE_REGEXP=/([a-z\\d])([A-Z])/g;var DECAMELIZE_CACHE=new Cache(1000,function(str){return str.replace(STRING_DECAMELIZE_REGEXP,'$1_$2').toLowerCase();});/**\n           Defines string helper methods used internally in ember-source.\n\n           @class String\n           @private\n           *//**\n           Replaces underscores, spaces, or camelCase with dashes.\n\n           ```javascript\n           import { dasherize } from '@ember/-internals/string';\n\n           dasherize('innerHTML');                // 'inner-html'\n           dasherize('action_name');              // 'action-name'\n           dasherize('css-class-name');           // 'css-class-name'\n           dasherize('my favorite items');        // 'my-favorite-items'\n           dasherize('privateDocs/ownerInvoice';  // 'private-docs/owner-invoice'\n           ```\n\n           @method dasherize\n           @param {String} str The string to dasherize.\n           @return {String} the dasherized string.\n           @private\n           */function dasherize(str){return STRING_DASHERIZE_CACHE.get(str);}/**\n           Returns the UpperCamelCase form of a string.\n\n           ```javascript\n           import { classify } from '@ember/string';\n\n           classify('innerHTML');                   // 'InnerHTML'\n           classify('action_name');                 // 'ActionName'\n           classify('css-class-name');              // 'CssClassName'\n           classify('my favorite items');           // 'MyFavoriteItems'\n           classify('private-docs/owner-invoice');  // 'PrivateDocs/OwnerInvoice'\n           ```\n\n           @method classify\n           @param {String} str the string to classify\n           @return {String} the classified string\n           @private\n           */function classify(str){return CLASSIFY_CACHE.get(str);}/**\n           Converts a camelized string into all lower case separated by underscores.\n\n           ```javascript\n           decamelize('innerHTML');          // 'inner_html'\n           decamelize('action_name');        // 'action_name'\n           decamelize('css-class-name');     // 'css-class-name'\n           decamelize('my favorite items');  // 'my favorite items'\n           ```\n           */function decamelize(str){return DECAMELIZE_CACHE.get(str);}var emberinternalsStringIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,classify:classify,dasherize:dasherize},Symbol.toStringTag,{value:'Module'});function isEnabled$1(options){return Object.hasOwnProperty.call(options.since,'enabled')||ENV._ALL_DEPRECATIONS_ENABLED;}var numEmberVersion=parseFloat((_ENV$_OVERRIDE_DEPREC=ENV._OVERRIDE_DEPRECATION_VERSION)!==null&&_ENV$_OVERRIDE_DEPREC!==void 0?_ENV$_OVERRIDE_DEPREC:Version);/* until must only be a minor version or major version */function emberVersionGte(until){var emberVersion=arguments.length>1&&arguments[1]!==undefined?arguments[1]:numEmberVersion;var significantUntil=until.replace(/(\\.0+)/g,'');return emberVersion>=parseFloat(significantUntil);}function isRemoved(options){return emberVersionGte(options.until);}function deprecation(options){return{options:options,test:!isEnabled$1(options),isEnabled:isEnabled$1(options)||isRemoved(options),isRemoved:isRemoved(options)};}/*\n            To add a deprecation, you must add a new entry to the `DEPRECATIONS` object.\n            The entry should be an object with the following properties:\n\n            * `id` (required): A string that uniquely identifies the deprecation. This\n              should be a short, descriptive name, typically dasherized.\n            * `for` (required): The string `ember-source` -- every deprecation from this\n              package is for `ember-source`.\n            * `since` (required): An object with `available` and `enabled`. `available` is\n              the first version of Ember that the deprecation is available in. `enabled` is\n              the version of Ember that the deprecation was first enabled. This is used as\n              a feature flag deprecations. For public APIs, the `enabled` value is added\n              only once the deprecation RFC is [Ready for Release](https://github.com/emberjs/rfcs#ready-for-release).\n            * `until` (required): The version of Ember that the deprecation will be removed\n            * `url` (required): A URL to the deprecation guide for the deprecation. This\n              URL can be constructed in advance of the deprecation being added to the\n              [deprecation app](https://github.com/ember-learn/deprecation-app) by\n              following this format: `https://deprecations.emberjs.com/deprecations/{{id}}`.\n\n            For example:\n            `deprecate` should then be called using the entry from the `DEPRECATIONS` object.\n\n            ```ts\n            import { DEPRECATIONS } from '@ember/-internals/deprecations';\n            //...\n\n            deprecateUntil(message, DEPRECATIONS.MY_DEPRECATION);\n            ```\n\n            `expectDeprecation` should also use the DEPRECATIONS object, but it should be noted\n            that it uses `isEnabled` instead of `test` because the expectations of `expectDeprecation`\n            are the opposite of `test`.\n\n            ```ts\n            expectDeprecation(\n              () => {\n                  assert.equal(foo, bar(), 'foo is equal to bar'); // something that triggers the deprecation\n              },\n              /matchesMessage/,\n              DEPRECATIONS.MY_DEPRECATION.isEnabled\n            );\n            ```\n\n            Tests can be conditionally run based on whether a deprecation is enabled or not:\n\n            ```ts\n              [`${testUnless(DEPRECATIONS.MY_DEPRECATION.isRemoved)} specific deprecated feature tested only in this test`]\n            ```\n\n            This test will be skipped when the MY_DEPRECATION is removed.\n            When adding a deprecation, we need to guard all the code that will eventually be removed, including tests.\n            For tests that are not specifically testing the deprecated feature, we need to figure out how to\n            test the behavior without encountering the deprecated feature, just as users would.\n           */var DEPRECATIONS={DEPRECATE_IMPORT_EMBER:function DEPRECATE_IMPORT_EMBER(importName){return deprecation({id:\"deprecate-import-\".concat(dasherize(importName).toLowerCase(),\"-from-ember\"),for:'ember-source',since:{available:'5.10.0'},until:'6.0.0',url:\"https://deprecations.emberjs.com/id/import-\".concat(dasherize(importName).toLowerCase(),\"-from-ember\")});},DEPRECATE_IMPLICIT_ROUTE_MODEL:deprecation({id:'deprecate-implicit-route-model',for:'ember-source',since:{available:'5.3.0',enabled:'5.3.0'},until:'6.0.0',url:'https://deprecations.emberjs.com/v5.x/#toc_deprecate-implicit-route-model'}),DEPRECATE_TEMPLATE_ACTION:deprecation({id:'template-action',url:'https://deprecations.emberjs.com/id/template-action',until:'6.0.0',for:'ember-source',since:{available:'5.9.0',enabled:'5.9.0'}}),DEPRECATE_COMPONENT_TEMPLATE_RESOLVING:deprecation({id:'component-template-resolving',url:'https://deprecations.emberjs.com/id/component-template-resolving',until:'6.0.0',for:'ember-source',since:{available:'5.10.0',enabled:'5.10.0'}}),DEPRECATE_ARRAY_PROTOTYPE_EXTENSIONS:deprecation({id:'deprecate-array-prototype-extensions',url:'https://deprecations.emberjs.com/id/deprecate-array-prototype-extensions',until:'6.0.0',for:'ember-source',since:{available:'5.10.0',enabled:'5.10.0'}})};function deprecateUntil(message,deprecation){var options=deprecation.options;!Boolean(options.for==='ember-source')&&assert$1('deprecateUntil must only be called for ember-source',Boolean(options.for==='ember-source'));if(deprecation.isRemoved){throw new Error(\"The API deprecated by \".concat(options.id,\" was removed in ember-source \").concat(options.until,\". The message was: \").concat(message,\". Please see \").concat(options.url,\" for more details.\"));}!deprecation.test&&deprecate$1(message,deprecation.test,options);}var EXTEND_PROTOTYPES=ENV.EXTEND_PROTOTYPES;if(EXTEND_PROTOTYPES.Array!==false){deprecateUntil('Array prototype extensions are deprecated. Follow the deprecation guide for migration instructions, and set EmberENV.EXTEND_PROTOTYPES to false in your config/environment.js',DEPRECATIONS.DEPRECATE_ARRAY_PROTOTYPE_EXTENSIONS);}var emberinternalsDeprecationsIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,DEPRECATIONS:DEPRECATIONS,deprecateUntil:deprecateUntil,emberVersionGte:emberVersionGte,isRemoved:isRemoved},Symbol.toStringTag,{value:'Module'});var onerror;var onErrorTarget={get onerror(){return onerror;}};// Ember.onerror getter\nfunction getOnerror(){return onerror;}// Ember.onerror setter\nfunction setOnerror(handler){onerror=handler;}var dispatchOverride=null;// allows testing adapter to override dispatch\nfunction getDispatchOverride(){return dispatchOverride;}function setDispatchOverride(handler){dispatchOverride=handler;}var emberinternalsErrorHandlingIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,getDispatchOverride:getDispatchOverride,getOnerror:getOnerror,onErrorTarget:onErrorTarget,setDispatchOverride:setDispatchOverride,setOnerror:setOnerror},Symbol.toStringTag,{value:'Module'});var ContentType={Component:0,Helper:1,String:2,Empty:3,SafeString:4,Fragment:5,Node:6,Other:8},CurriedTypes={Component:0,Helper:1,Modifier:2},InternalComponentCapabilities={Empty:0,dynamicLayout:1,dynamicTag:2,prepareArgs:4,createArgs:8,attributeHook:16,elementHook:32,dynamicScope:64,createCaller:128,updateHook:256,createInstance:512,wrapped:1024,willDestroy:2048,hasSubOwner:4096},ARG_SHIFT=8,MAX_SIZE=2147483647,TYPE_SIZE=255,TYPE_MASK=255,OPERAND_LEN_MASK=768,MACHINE_MASK=1024,MachineOp={PushFrame:0,PopFrame:1,InvokeVirtual:2,InvokeStatic:3,Jump:4,Return:5,ReturnTo:6,Size:7},Op={Helper:16,SetNamedVariables:17,SetBlocks:18,SetVariable:19,SetBlock:20,GetVariable:21,GetProperty:22,GetBlock:23,SpreadBlock:24,HasBlock:25,HasBlockParams:26,Concat:27,Constant:28,ConstantReference:29,Primitive:30,PrimitiveReference:31,ReifyU32:32,Dup:33,Pop:34,Load:35,Fetch:36,RootScope:37,VirtualRootScope:38,ChildScope:39,PopScope:40,Text:41,Comment:42,AppendHTML:43,AppendSafeHTML:44,AppendDocumentFragment:45,AppendNode:46,AppendText:47,OpenElement:48,OpenDynamicElement:49,PushRemoteElement:50,StaticAttr:51,DynamicAttr:52,ComponentAttr:53,FlushElement:54,CloseElement:55,PopRemoteElement:56,Modifier:57,BindDynamicScope:58,PushDynamicScope:59,PopDynamicScope:60,CompileBlock:61,PushBlockScope:62,PushSymbolTable:63,InvokeYield:64,JumpIf:65,JumpUnless:66,JumpEq:67,AssertSame:68,Enter:69,Exit:70,ToBoolean:71,EnterList:72,ExitList:73,Iterate:74,Main:75,ContentType:76,Curry:77,PushComponentDefinition:78,PushDynamicComponentInstance:79,ResolveDynamicComponent:80,ResolveCurriedComponent:81,PushArgs:82,PushEmptyArgs:83,PopArgs:84,PrepareArgs:85,CaptureArgs:86,CreateComponent:87,RegisterComponentDestructor:88,PutComponentOperations:89,GetComponentSelf:90,GetComponentTagName:91,GetComponentLayout:92,BindEvalScope:93,SetupForEval:94,PopulateLayout:95,InvokeComponentLayout:96,BeginComponentTransaction:97,CommitComponentTransaction:98,DidCreateElement:99,DidRenderLayout:100,ResolveMaybeLocal:102,Debugger:103,Size:104,StaticComponentAttr:105,DynamicContentType:106,DynamicHelper:107,DynamicModifier:108,IfInline:109,Not:110,GetDynamicVar:111,Log:112};function isMachineOp(value){return value>=0&&value<=15;}function isOp(value){return value>=16;}/**\n           * Registers\n           *\n           * For the most part, these follows MIPS naming conventions, however the\n           * register numbers are different.\n           */// $0 or $pc (program counter): pointer into `program` for the next insturction; -1 means exit\nvar $pc=0,$ra=1,$fp=2,$sp=3,$s0=4,$s1=5,$t0=6,$t1=7,$v0=8;// $1 or $ra (return address): pointer into `program` for the return\nvar MachineRegister=function(MachineRegister){return MachineRegister[MachineRegister.pc=0]=\"pc\",MachineRegister[MachineRegister.ra=1]=\"ra\",MachineRegister[MachineRegister.fp=2]=\"fp\",MachineRegister[MachineRegister.sp=3]=\"sp\",MachineRegister;}({});function isLowLevelRegister(register){return register<=3;}var SavedRegister=function(SavedRegister){return SavedRegister[SavedRegister.s0=4]=\"s0\",SavedRegister[SavedRegister.s1=5]=\"s1\",SavedRegister;}({}),TemporaryRegister=function(TemporaryRegister){return TemporaryRegister[TemporaryRegister.t0=6]=\"t0\",TemporaryRegister[TemporaryRegister.t1=7]=\"t1\",TemporaryRegister;}({});var glimmerVm=/*#__PURE__*/Object.defineProperty({__proto__:null,$fp:$fp,$pc:$pc,$ra:$ra,$s0:$s0,$s1:$s1,$sp:$sp,$t0:$t0,$t1:$t1,$v0:$v0,ARG_SHIFT:ARG_SHIFT,ContentType:ContentType,CurriedType:CurriedTypes,CurriedTypes:CurriedTypes,InternalComponentCapabilities:InternalComponentCapabilities,InternalComponentCapability:InternalComponentCapabilities,MACHINE_MASK:MACHINE_MASK,MAX_SIZE:MAX_SIZE,MachineOp:MachineOp,MachineRegister:MachineRegister,OPERAND_LEN_MASK:OPERAND_LEN_MASK,Op:Op,SavedRegister:SavedRegister,TYPE_MASK:TYPE_MASK,TYPE_SIZE:TYPE_SIZE,TemporaryRegister:TemporaryRegister,isLowLevelRegister:isLowLevelRegister,isMachineOp:isMachineOp,isOp:isOp},Symbol.toStringTag,{value:'Module'});var InstructionEncoderImpl=/*#__PURE__*/function(){function InstructionEncoderImpl(buffer){_classCallCheck(this,InstructionEncoderImpl);_defineProperty(this,\"size\",0);this.buffer=buffer;}return _createClass(InstructionEncoderImpl,[{key:\"encode\",value:function encode(type,machine){for(var _len6=arguments.length,args=new Array(_len6>2?_len6-2:0),_key7=2;_key7<_len6;_key7++){args[_key7-2]=arguments[_key7];}if(type>TYPE_SIZE)throw new Error(\"Opcode type over 8-bits. Got \".concat(type,\".\"));var first=type|machine|arguments.length-2<<ARG_SHIFT;this.buffer.push(first);for(var _i3=0,_args4=args;_i3<_args4.length;_i3++){var _op=_args4[_i3];if(\"number\"==typeof _op&&_op>MAX_SIZE)throw new Error(\"Operand over 32-bits. Got \".concat(_op,\".\"));this.buffer.push(_op);}this.size=this.buffer.length;}},{key:\"patch\",value:function patch(position,target){if(-1!==this.buffer[position+1])throw new Error(\"Trying to patch operand in populated slot instead of a reserved slot.\");this.buffer[position+1]=target;}}]);}();var glimmerEncoder=/*#__PURE__*/Object.defineProperty({__proto__:null,InstructionEncoderImpl:InstructionEncoderImpl},Symbol.toStringTag,{value:'Module'});var opcodes={Append:1,TrustingAppend:2,Comment:3,Modifier:4,StrictModifier:5,Block:6,StrictBlock:7,Component:8,OpenElement:10,OpenElementWithSplat:11,FlushElement:12,CloseElement:13,StaticAttr:14,DynamicAttr:15,ComponentAttr:16,AttrSplat:17,Yield:18,DynamicArg:20,StaticArg:21,TrustingDynamicAttr:22,TrustingComponentAttr:23,StaticComponentAttr:24,Debugger:26,Undefined:27,Call:28,Concat:29,GetSymbol:30,GetLexicalSymbol:32,GetStrictKeyword:31,GetFreeAsComponentOrHelperHead:35,GetFreeAsHelperHead:37,GetFreeAsModifierHead:38,GetFreeAsComponentHead:39,InElement:40,If:41,Each:42,Let:44,WithDynamicVars:45,InvokeComponent:46,HasBlock:48,HasBlockParams:49,Curry:50,Not:51,IfInline:52,GetDynamicVar:53,Log:54},resolution={Strict:0,ResolveAsComponentOrHelperHead:1,ResolveAsHelperHead:5,ResolveAsModifierHead:6,ResolveAsComponentHead:7},WellKnownAttrNames={class:0,id:1,value:2,name:3,type:4,style:5,href:6},WellKnownTagNames={div:0,span:1,p:2,a:3};// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction is(variant){return function(value){return Array.isArray(value)&&value[0]===variant;};}// Statements\nvar isFlushElement=is(opcodes.FlushElement);function isAttribute(val){return val[0]===opcodes.StaticAttr||val[0]===opcodes.DynamicAttr||val[0]===opcodes.TrustingDynamicAttr||val[0]===opcodes.ComponentAttr||val[0]===opcodes.StaticComponentAttr||val[0]===opcodes.TrustingComponentAttr||val[0]===opcodes.AttrSplat||val[0]===opcodes.Modifier;}function isStringLiteral(expr){return\"string\"==typeof expr;}function getStringFromValue(expr){return expr;}function isArgument(val){return val[0]===opcodes.StaticArg||val[0]===opcodes.DynamicArg;}function isHelper(expr){return Array.isArray(expr)&&expr[0]===opcodes.Call;}// Expressions\nvar isGet=is(opcodes.GetSymbol);var glimmerWireFormat=/*#__PURE__*/Object.defineProperty({__proto__:null,SexpOpcodes:opcodes,VariableResolutionContext:resolution,WellKnownAttrNames:WellKnownAttrNames,WellKnownTagNames:WellKnownTagNames,getStringFromValue:getStringFromValue,is:is,isArgument:isArgument,isAttribute:isAttribute,isFlushElement:isFlushElement,isGet:isGet,isHelper:isHelper,isStringLiteral:isStringLiteral},Symbol.toStringTag,{value:'Module'});/**\n           * This package contains global context functions for Glimmer. These functions\n           * are set by the embedding environment and must be set before initial render.\n           *\n           * These functions should meet the following criteria:\n           *\n           * - Must be provided by the embedder, due to having framework specific\n           *   behaviors (e.g. interop with classic Ember behaviors that should not be\n           *   upstreamed) or to being out of scope for the VM (e.g. scheduling a\n           *   revalidation)\n           * - Never differ between render roots\n           * - Never change over time\n           *\n           *///////////\n/**\n           * Interfaces\n           *\n           * TODO: Move these into @glimmer/interfaces, move @glimmer/interfaces to\n           * @glimmer/internal-interfaces.\n           *///////////\n/**\n           * Schedules a VM revalidation.\n           *\n           * Note: this has a default value so that tags can warm themselves when first loaded.\n           */var scheduleDestroy,scheduleDestroyed,toIterator$1,toBool$1,getProp,setProp,getPath$1,setPath,warnIfStyleNotTrusted,assert,deprecate,assertGlobalContextWasSet,testOverrideGlobalContext,scheduleRevalidate=function scheduleRevalidate(){},globalContextWasSet=!1;/**\n           * Schedules a destructor to run\n           *\n           * @param destroyable The destroyable being destroyed\n           * @param destructor The destructor being scheduled\n           */function setGlobalContext(context){{if(globalContextWasSet)throw new Error(\"Attempted to set the global context twice. This should only be set once.\");globalContextWasSet=!0;}scheduleRevalidate=context.scheduleRevalidate,scheduleDestroy=context.scheduleDestroy,scheduleDestroyed=context.scheduleDestroyed,toIterator$1=context.toIterator,toBool$1=context.toBool,getProp=context.getProp,setProp=context.setProp,getPath$1=context.getPath,setPath=context.setPath,warnIfStyleNotTrusted=context.warnIfStyleNotTrusted,assert=context.assert,deprecate=context.deprecate;}assertGlobalContextWasSet=function assertGlobalContextWasSet(){if(!1===globalContextWasSet)throw new Error(\"The global context for Glimmer VM was not set. You must set these global context functions to let Glimmer VM know how to accomplish certain operations. You can do this by importing `setGlobalContext` from `@glimmer/global-context`\");},testOverrideGlobalContext=function testOverrideGlobalContext(context){var originalGlobalContext=globalContextWasSet?{scheduleRevalidate:scheduleRevalidate,scheduleDestroy:scheduleDestroy,scheduleDestroyed:scheduleDestroyed,toIterator:toIterator$1,toBool:toBool$1,getProp:getProp,setProp:setProp,getPath:getPath$1,setPath:setPath,warnIfStyleNotTrusted:warnIfStyleNotTrusted,assert:assert,deprecate:deprecate}:null;return globalContextWasSet=null!==context,// We use `undefined as any` here to unset the values when resetting the\n// context at the end of a test.\nscheduleRevalidate=(context===null||context===void 0?void 0:context.scheduleRevalidate)||void 0,scheduleDestroy=(context===null||context===void 0?void 0:context.scheduleDestroy)||void 0,scheduleDestroyed=(context===null||context===void 0?void 0:context.scheduleDestroyed)||void 0,toIterator$1=(context===null||context===void 0?void 0:context.toIterator)||void 0,toBool$1=(context===null||context===void 0?void 0:context.toBool)||void 0,getProp=(context===null||context===void 0?void 0:context.getProp)||void 0,setProp=(context===null||context===void 0?void 0:context.setProp)||void 0,getPath$1=(context===null||context===void 0?void 0:context.getPath)||void 0,setPath=(context===null||context===void 0?void 0:context.setPath)||void 0,warnIfStyleNotTrusted=(context===null||context===void 0?void 0:context.warnIfStyleNotTrusted)||void 0,assert=(context===null||context===void 0?void 0:context.assert)||void 0,deprecate=(context===null||context===void 0?void 0:context.deprecate)||void 0,originalGlobalContext;};var glimmerGlobalContext=/*#__PURE__*/Object.defineProperty({__proto__:null,get assert(){return assert;},get assertGlobalContextWasSet(){return assertGlobalContextWasSet;},default:setGlobalContext,get deprecate(){return deprecate;},get getPath(){return getPath$1;},get getProp(){return getProp;},get scheduleDestroy(){return scheduleDestroy;},get scheduleDestroyed(){return scheduleDestroyed;},get scheduleRevalidate(){return scheduleRevalidate;},get setPath(){return setPath;},get setProp(){return setProp;},get testOverrideGlobalContext(){return testOverrideGlobalContext;},get toBool(){return toBool$1;},get toIterator(){return toIterator$1;},get warnIfStyleNotTrusted(){return warnIfStyleNotTrusted;}},Symbol.toStringTag,{value:'Module'});var DestroyingState=function(DestroyingState){return DestroyingState[DestroyingState.Live=0]=\"Live\",DestroyingState[DestroyingState.Destroying=1]=\"Destroying\",DestroyingState[DestroyingState.Destroyed=2]=\"Destroyed\",DestroyingState;}(DestroyingState||{});var enableDestroyableTracking,assertDestroyablesDestroyed,DESTROYABLE_META=new WeakMap();function push(collection,newItem){return null===collection?newItem:Array.isArray(collection)?(collection.push(newItem),collection):[collection,newItem];}function iterate$1(collection,fn){Array.isArray(collection)?collection.forEach(fn):null!==collection&&fn(collection);}function remove(collection,item,message){{var collectionIsItem=collection===item,collectionContainsItem=Array.isArray(collection)&&-1!==collection.indexOf(item);if(!collectionIsItem&&!collectionContainsItem)throw new Error(String(message));}if(Array.isArray(collection)&&collection.length>1){var _index=collection.indexOf(item);return collection.splice(_index,1),collection;}return null;}function getDestroyableMeta(destroyable){var meta=DESTROYABLE_META.get(destroyable);return void 0===meta&&(meta={parents:null,children:null,eagerDestructors:null,destructors:null,state:DestroyingState.Live},meta.source=destroyable,DESTROYABLE_META.set(destroyable,meta)),meta;}function associateDestroyableChild(parent,child){if(isDestroying(parent))throw new Error(\"Attempted to associate a destroyable child with an object that is already destroying or destroyed\");var parentMeta=getDestroyableMeta(parent),childMeta=getDestroyableMeta(child);return parentMeta.children=push(parentMeta.children,child),childMeta.parents=push(childMeta.parents,parent),child;}function registerDestructor$1(destroyable,destructor){var eager=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!1;if(isDestroying(destroyable))throw new Error(\"Attempted to register a destructor with an object that is already destroying or destroyed\");var meta=getDestroyableMeta(destroyable),destructorsKey=!0===eager?\"eagerDestructors\":\"destructors\";return meta[destructorsKey]=push(meta[destructorsKey],destructor),destructor;}function unregisterDestructor$1(destroyable,destructor){var eager=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!1;if(isDestroying(destroyable))throw new Error(\"Attempted to unregister a destructor with an object that is already destroying or destroyed\");var meta=getDestroyableMeta(destroyable),destructorsKey=!0===eager?\"eagerDestructors\":\"destructors\";meta[destructorsKey]=remove(meta[destructorsKey],destructor,\"attempted to remove a destructor that was not registered with the destroyable\");}////////////\nfunction _destroy(destroyable){var meta=getDestroyableMeta(destroyable);if(meta.state>=DestroyingState.Destroying)return;var parents=meta.parents,children=meta.children,eagerDestructors=meta.eagerDestructors,destructors=meta.destructors;meta.state=DestroyingState.Destroying,iterate$1(children,_destroy),iterate$1(eagerDestructors,function(destructor){return destructor(destroyable);}),iterate$1(destructors,function(destructor){return scheduleDestroy(destroyable,destructor);}),scheduleDestroyed(function(){iterate$1(parents,function(parent){return function(child,parent){var parentMeta=getDestroyableMeta(parent);parentMeta.state===DestroyingState.Live&&(parentMeta.children=remove(parentMeta.children,child,\"attempted to remove child from parent, but the parent's children did not contain the child. This is likely a bug with destructors.\"));}(destroyable,parent);}),meta.state=DestroyingState.Destroyed;});}function destroyChildren(destroyable){var _getDestroyableMeta=getDestroyableMeta(destroyable),children=_getDestroyableMeta.children;iterate$1(children,_destroy);}function _hasDestroyableChildren(destroyable){var meta=DESTROYABLE_META.get(destroyable);return void 0!==meta&&null!==meta.children;}function isDestroying(destroyable){var meta=DESTROYABLE_META.get(destroyable);return void 0!==meta&&meta.state>=DestroyingState.Destroying;}function isDestroyed(destroyable){var meta=DESTROYABLE_META.get(destroyable);return void 0!==meta&&meta.state>=DestroyingState.Destroyed;}////////////\n{var _isTesting=!1;enableDestroyableTracking=function enableDestroyableTracking(){if(_isTesting)// Reset destroyable meta just in case, before throwing the error\nthrow DESTROYABLE_META=new WeakMap(),new Error(\"Attempted to start destroyable testing, but you did not end the previous destroyable test. Did you forget to call `assertDestroyablesDestroyed()`\");_isTesting=!0,DESTROYABLE_META=new Map();},assertDestroyablesDestroyed=function assertDestroyablesDestroyed(){if(!_isTesting)throw new Error(\"Attempted to assert destroyables destroyed, but you did not start a destroyable test. Did you forget to call `enableDestroyableTracking()`\");_isTesting=!1;var map=DESTROYABLE_META;DESTROYABLE_META=new WeakMap();var undestroyed=[];if(map.forEach(function(meta){meta.state!==DestroyingState.Destroyed&&undestroyed.push(meta.source);}),undestroyed.length>0){var objectsToString=undestroyed.map(debugToString$1).join(\"\\n    \"),error=new Error(\"Some destroyables were not destroyed during this test:\\n    \".concat(objectsToString));throw error.destroyables=undestroyed,error;}};}var glimmerDestroyable=/*#__PURE__*/Object.defineProperty({__proto__:null,_hasDestroyableChildren:_hasDestroyableChildren,get assertDestroyablesDestroyed(){return assertDestroyablesDestroyed;},associateDestroyableChild:associateDestroyableChild,destroy:_destroy,destroyChildren:destroyChildren,get enableDestroyableTracking(){return enableDestroyableTracking;},isDestroyed:isDestroyed,isDestroying:isDestroying,registerDestructor:registerDestructor$1,unregisterDestructor:unregisterDestructor$1},Symbol.toStringTag,{value:'Module'});function unwrap(val){if(null==val)throw new Error(\"Expected value to be present\");return val;}var debug$1={};{var CONSUMED_TAGS=null;var TRANSACTION_STACK=[],TRANSACTION_ENV={debugMessage:function debugMessage(obj,keyName){var objName;return objName=\"function\"==typeof obj?obj.name:\"object\"==_typeof(obj)&&null!==obj?\"(an instance of \".concat(obj.constructor&&obj.constructor.name||\"(unknown class)\",\")\"):void 0===obj?\"(an unknown tag)\":String(obj),\"You attempted to update \".concat(keyName?\"`\".concat(keyName,\"` on `\").concat(objName,\"`\"):\"`\".concat(objName,\"`\"),\", but it had already been used previously in the same computation.  Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.\");}};/////////\ndebug$1.setTrackingTransactionEnv=function(env){return Object.assign(TRANSACTION_ENV,env);},debug$1.beginTrackingTransaction=function(_debugLabel){var _TRANSACTION_STACK;CONSUMED_TAGS=CONSUMED_TAGS||new WeakMap();var debugLabel=_debugLabel||void 0,parent=(_TRANSACTION_STACK=TRANSACTION_STACK[TRANSACTION_STACK.length-1])!==null&&_TRANSACTION_STACK!==void 0?_TRANSACTION_STACK:null;TRANSACTION_STACK.push({parent:parent,debugLabel:debugLabel});},debug$1.endTrackingTransaction=function(){if(0===TRANSACTION_STACK.length)throw new Error(\"attempted to close a tracking transaction, but one was not open\");TRANSACTION_STACK.pop(),0===TRANSACTION_STACK.length&&(CONSUMED_TAGS=null);},debug$1.resetTrackingTransaction=function(){var stack=\"\";return TRANSACTION_STACK.length>0&&(stack=debug$1.logTrackingStack(TRANSACTION_STACK[TRANSACTION_STACK.length-1])),TRANSACTION_STACK.splice(0,TRANSACTION_STACK.length),CONSUMED_TAGS=null,stack;},/**\n            * Creates a global autotracking transaction. This will prevent any backflow\n            * in any `track` calls within the transaction, even if they are not\n            * externally consumed.\n            *\n            * `runInAutotrackingTransaction` can be called within itself, and it will add\n            * onto the existing transaction if one exists.\n            *\n            * TODO: Only throw an error if the `track` is consumed.\n            */debug$1.runInTrackingTransaction=function(fn,debugLabel){debug$1.beginTrackingTransaction(debugLabel);var didError=!0;try{var value=fn();return didError=!1,value;}finally{!0!==didError&&debug$1.endTrackingTransaction();// if (id !== TRANSACTION_STACK.length) {\n//   throw new Error(\n//     `attempted to close a tracking transaction (${id}), but it was not the last transaction (${TRANSACTION_STACK.length})`\n//   );\n// }\n}};var nthIndex=function nthIndex(str,pattern,n){var startingPos=arguments.length>3&&arguments[3]!==undefined?arguments[3]:-1;var i=startingPos;for(;n-->0&&i++<str.length&&(i=str.indexOf(pattern,i),!(i<0)););return i;},makeTrackingErrorMessage=function makeTrackingErrorMessage(transaction,obj,keyName){var message=[TRANSACTION_ENV.debugMessage(obj,keyName&&String(keyName))];return message.push(\"`\".concat(String(keyName),\"` was first used:\")),message.push(debug$1.logTrackingStack(transaction)),message.push(\"Stack trace for the update:\"),message.join(\"\\n\\n\");};debug$1.logTrackingStack=function(transaction){var trackingStack=[],current=transaction||TRANSACTION_STACK[TRANSACTION_STACK.length-1];if(void 0===current)return\"\";for(;current;)current.debugLabel&&trackingStack.unshift(current.debugLabel),current=current.parent;return trackingStack.map(function(label,index){return\" \".repeat(2*index)+label;}).join(\"\\n\");},debug$1.markTagAsConsumed=function(_tag){if(!CONSUMED_TAGS||CONSUMED_TAGS.has(_tag))return;CONSUMED_TAGS.set(_tag,getLast(asPresentArray(TRANSACTION_STACK)));// We need to mark the tag and all of its subtags as consumed, so we need to\n// cast it and access its internals. In the future this shouldn't be necessary,\n// this is only for computed properties.\nvar subtag=_tag.subtag;subtag&&debug$1.markTagAsConsumed&&(Array.isArray(subtag)?subtag.forEach(debug$1.markTagAsConsumed):debug$1.markTagAsConsumed(subtag));},debug$1.assertTagNotConsumed=function(tag,obj,keyName){if(null===CONSUMED_TAGS)return;var transaction=CONSUMED_TAGS.get(tag);var error;//////////\nif(transaction)// This hack makes the assertion message nicer, we can cut off the first\n// few lines of the stack trace and let users know where the actual error\n// occurred.\ntry{assert(!1,makeTrackingErrorMessage(transaction,obj,keyName));}catch(e){if(\"object\"==_typeof(error=e)&&null!==error&&\"stack\"in error&&\"string\"==typeof error.stack){var updateStackBegin=e.stack.indexOf(\"Stack trace for the update:\");if(-1!==updateStackBegin){var start=nthIndex(e.stack,\"\\n\",1,updateStackBegin),_end=nthIndex(e.stack,\"\\n\",4,updateStackBegin);e.stack=e.stack.substr(0,start)+e.stack.substr(_end);}}throw e;}};}var CONSTANT=0,INITIAL=1,VOLATILE=NaN;var $REVISION=1;function bump(){$REVISION++;}//////////\nvar UPDATABLE_TAG_ID=1,COMPUTE$1=Symbol(\"TAG_COMPUTE\");//////////\n/**\n           * `value` receives a tag and returns an opaque Revision based on that tag. This\n           * snapshot can then later be passed to `validate` with the same tag to\n           * determine if the tag has changed at all since the time that `value` was\n           * called.\n           *\n           * @param tag\n           */function valueForTag(tag){return tag[COMPUTE$1]();}/**\n           * `validate` receives a tag and a snapshot from a previous call to `value` with\n           * the same tag, and determines if the tag is still valid compared to the\n           * snapshot. If the tag's state has changed at all since then, `validate` will\n           * return false, otherwise it will return true. This is used to determine if a\n           * calculation related to the tags should be rerun.\n           *\n           * @param tag\n           * @param snapshot\n           */function validateTag(tag,snapshot){return snapshot>=tag[COMPUTE$1]();}//////////\nvar TYPE$1=Symbol(\"TAG_TYPE\");// this is basically a const\nvar ALLOW_CYCLES;ALLOW_CYCLES=new WeakMap();var MonomorphicTagImpl=/*#__PURE__*/function(){function MonomorphicTagImpl(type){_classCallCheck(this,MonomorphicTagImpl);_defineProperty(this,\"revision\",1);_defineProperty(this,\"lastChecked\",1);_defineProperty(this,\"lastValue\",1);_defineProperty(this,\"isUpdating\",!1);_defineProperty(this,\"subtag\",null);_defineProperty(this,\"subtagBufferCache\",null);_defineProperty(this,TYPE$1,void 0);this[TYPE$1]=type;}return _createClass(MonomorphicTagImpl,[{key:COMPUTE$1,value:function value(){var lastChecked=this.lastChecked;if(!0===this.isUpdating){if(void 0!==ALLOW_CYCLES&&!ALLOW_CYCLES.has(this))throw new Error(\"Cycles in tags are not allowed\");this.lastChecked=++$REVISION;}else if(lastChecked!==$REVISION){this.isUpdating=!0,this.lastChecked=$REVISION;try{var subtag=this.subtag,revision=this.revision;if(null!==subtag)if(Array.isArray(subtag)){var _iterator7=_createForOfIteratorHelper(subtag),_step7;try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var tag=_step7.value;var _value2=tag[COMPUTE$1]();revision=Math.max(_value2,revision);}}catch(err){_iterator7.e(err);}finally{_iterator7.f();}}else{var subtagValue=subtag[COMPUTE$1]();subtagValue===this.subtagBufferCache?revision=Math.max(revision,this.lastValue):(// Clear the temporary buffer cache\nthis.subtagBufferCache=null,revision=Math.max(revision,subtagValue));}this.lastValue=revision;}finally{this.isUpdating=!1;}}return this.lastValue;}}],[{key:\"combine\",value:function combine(tags){switch(tags.length){case 0:return CONSTANT_TAG;case 1:return tags[0];default:{var tag=new MonomorphicTagImpl(2);return tag.subtag=tags,tag;}}}},{key:\"updateTag\",value:function updateTag(_tag,_subtag){if(_tag[TYPE$1]!==UPDATABLE_TAG_ID)throw new Error(\"Attempted to update a tag that was not updatable\");// TODO: TS 3.7 should allow us to do this via assertion\nvar tag=_tag,subtag=_subtag;subtag===CONSTANT_TAG?tag.subtag=null:(// There are two different possibilities when updating a subtag:\n// 1. subtag[COMPUTE]() <= tag[COMPUTE]();\n// 2. subtag[COMPUTE]() > tag[COMPUTE]();\n// The first possibility is completely fine within our caching model, but\n// the second possibility presents a problem. If the parent tag has\n// already been read, then it's value is cached and will not update to\n// reflect the subtag's greater value. Next time the cache is busted, the\n// subtag's value _will_ be read, and it's value will be _greater_ than\n// the saved snapshot of the parent, causing the resulting calculation to\n// be rerun erroneously.\n// In order to prevent this, when we first update to a new subtag we store\n// its computed value, and then check against that computed value on\n// subsequent updates. If its value hasn't changed, then we return the\n// parent's previous value. Once the subtag changes for the first time,\n// we clear the cache and everything is finally in sync with the parent.\ntag.subtagBufferCache=subtag[COMPUTE$1](),tag.subtag=subtag);}},{key:\"dirtyTag\",value:function dirtyTag(tag,disableConsumptionAssertion){if(tag[TYPE$1]!==UPDATABLE_TAG_ID&&0!==tag[TYPE$1])throw new Error(\"Attempted to dirty a tag that was not dirtyable\");!0!==disableConsumptionAssertion&&// Usually by this point, we've already asserted with better error information,\n// but this is our last line of defense.\nunwrap(debug$1.assertTagNotConsumed)(tag),tag.revision=++$REVISION,scheduleRevalidate();}}]);}();var DIRTY_TAG$1=MonomorphicTagImpl.dirtyTag,UPDATE_TAG=MonomorphicTagImpl.updateTag;//////////\nfunction createTag(){return new MonomorphicTagImpl(0);}function createUpdatableTag(){return new MonomorphicTagImpl(UPDATABLE_TAG_ID);}//////////\nvar CONSTANT_TAG=new MonomorphicTagImpl(3);function isConstTag(tag){return tag===CONSTANT_TAG;}//////////\nvar VolatileTag=/*#__PURE__*/function(){function VolatileTag(){_classCallCheck(this,VolatileTag);_defineProperty(this,TYPE$1,100);}return _createClass(VolatileTag,[{key:COMPUTE$1,value:function value(){return NaN;}}]);}();var VOLATILE_TAG=new VolatileTag();//////////\nvar CurrentTag=/*#__PURE__*/function(){function CurrentTag(){_classCallCheck(this,CurrentTag);_defineProperty(this,TYPE$1,101);}return _createClass(CurrentTag,[{key:COMPUTE$1,value:function value(){return $REVISION;}}]);}();var CURRENT_TAG=new CurrentTag(),_combine=MonomorphicTagImpl.combine;//////////\n// Warm\nvar tag1=createUpdatableTag(),tag2=createUpdatableTag(),tag3=createUpdatableTag();valueForTag(tag1),DIRTY_TAG$1(tag1),valueForTag(tag1),UPDATE_TAG(tag1,_combine([tag2,tag3])),valueForTag(tag1),DIRTY_TAG$1(tag2),valueForTag(tag1),DIRTY_TAG$1(tag3),valueForTag(tag1),UPDATE_TAG(tag1,tag3),valueForTag(tag1),DIRTY_TAG$1(tag3),valueForTag(tag1);///////////\nvar TRACKED_TAGS=new WeakMap();function dirtyTagFor(obj,key,meta){if((\"object\"!=_typeof(u=obj)||null===u)&&\"function\"!=typeof u)throw new Error(\"BUG: Can't update a tag for a primitive\");var u;var tags=void 0===meta?TRACKED_TAGS.get(obj):meta;// No tags have been setup for this object yet, return\nif(void 0===tags)return;// Dirty the tag for the specific property if it exists\nvar propertyTag=tags.get(key);void 0!==propertyTag&&(unwrap(debug$1.assertTagNotConsumed)(propertyTag,obj,key),DIRTY_TAG$1(propertyTag,!0));}function tagMetaFor(obj){var tags=TRACKED_TAGS.get(obj);return void 0===tags&&(tags=new Map(),TRACKED_TAGS.set(obj,tags)),tags;}function tagFor(obj,key,meta){var tags=void 0===meta?tagMetaFor(obj):meta,tag=tags.get(key);return void 0===tag&&(tag=createUpdatableTag(),tags.set(key,tag)),tag;}/**\n           * An object that that tracks @tracked properties that were consumed.\n           */var Tracker=/*#__PURE__*/function(){function Tracker(){_classCallCheck(this,Tracker);_defineProperty(this,\"tags\",new Set());_defineProperty(this,\"last\",null);}return _createClass(Tracker,[{key:\"add\",value:function add(tag){tag!==CONSTANT_TAG&&(this.tags.add(tag),unwrap(debug$1.markTagAsConsumed)(tag),this.last=tag);}},{key:\"combine\",value:function combine(){var tags=this.tags;return 0===tags.size?CONSTANT_TAG:1===tags.size?this.last:_combine(Array.from(this.tags));}}]);}();/**\n           * Whenever a tracked computed property is entered, the current tracker is\n           * saved off and a new tracker is replaced.\n           *\n           * Any tracked properties consumed are added to the current tracker.\n           *\n           * When a tracked computed property is exited, the tracker's tags are\n           * combined and added to the parent tracker.\n           *\n           * The consequence is that each tracked computed property has a tag\n           * that corresponds to the tracked properties consumed inside of\n           * itself, including child tracked computed properties.\n           */var CURRENT_TRACKER=null;var OPEN_TRACK_FRAMES=[];function beginTrackFrame(debuggingContext){OPEN_TRACK_FRAMES.push(CURRENT_TRACKER),CURRENT_TRACKER=new Tracker(),unwrap(debug$1.beginTrackingTransaction)(debuggingContext);}function endTrackFrame(){var current=CURRENT_TRACKER;{if(0===OPEN_TRACK_FRAMES.length)throw new Error(\"attempted to close a tracking frame, but one was not open\");unwrap(debug$1.endTrackingTransaction)();}return CURRENT_TRACKER=OPEN_TRACK_FRAMES.pop()||null,unwrap(current).combine();}function beginUntrackFrame(){OPEN_TRACK_FRAMES.push(CURRENT_TRACKER),CURRENT_TRACKER=null;}function endUntrackFrame(){if(0===OPEN_TRACK_FRAMES.length)throw new Error(\"attempted to close a tracking frame, but one was not open\");CURRENT_TRACKER=OPEN_TRACK_FRAMES.pop()||null;}// This function is only for handling errors and resetting to a valid state\nfunction resetTracking(){for(;OPEN_TRACK_FRAMES.length>0;)OPEN_TRACK_FRAMES.pop();if(CURRENT_TRACKER=null,true/* DEBUG */)return unwrap(debug$1.resetTrackingTransaction)();}function isTracking(){return null!==CURRENT_TRACKER;}function consumeTag(tag){null!==CURRENT_TRACKER&&CURRENT_TRACKER.add(tag);}// public interface\nvar FN=Symbol(\"FN\"),LAST_VALUE=Symbol(\"LAST_VALUE\"),TAG=Symbol(\"TAG\"),SNAPSHOT=Symbol(\"SNAPSHOT\"),DEBUG_LABEL=Symbol(\"DEBUG_LABEL\");function createCache(fn,debuggingLabel){if(\"function\"!=typeof fn)throw new Error(\"createCache() must be passed a function as its first parameter. Called with: \".concat(String(fn)));var cache=_defineProperty(_defineProperty(_defineProperty(_defineProperty({},FN,fn),LAST_VALUE,void 0),TAG,void 0),SNAPSHOT,-1);return cache[DEBUG_LABEL]=debuggingLabel,cache;}function getValue(cache){assertCache(cache,\"getValue\");var fn=cache[FN],tag=cache[TAG],snapshot=cache[SNAPSHOT];if(void 0!==tag&&validateTag(tag,snapshot))consumeTag(tag);else{beginTrackFrame();try{cache[LAST_VALUE]=fn();}finally{tag=endTrackFrame(),cache[TAG]=tag,cache[SNAPSHOT]=valueForTag(tag),consumeTag(tag);}}return cache[LAST_VALUE];}function isConst(cache){assertCache(cache,\"isConst\");var tag=cache[TAG];// replace this with `expect` when we can\nreturn function(tag,cache){if(void 0===tag)throw new Error(\"isConst() can only be used on a cache once getValue() has been called at least once. Called with cache function:\\n\\n\".concat(String(cache[FN])));}//////////\n// Legacy tracking APIs\n// track() shouldn't be necessary at all in the VM once the autotracking\n// refactors are merged, and we should generally be moving away from it. It may\n// be necessary in Ember for a while longer, but I think we'll be able to drop\n// it in favor of cache sooner rather than later.\n(tag,cache),isConstTag(tag);}function assertCache(value,fnName){if(\"object\"!=_typeof(value)||null===value||!(FN in value))throw new Error(\"\".concat(fnName,\"() can only be used on an instance of a cache created with createCache(). Called with: \").concat(String(value)));}function track(block,debugLabel){var tag;beginTrackFrame(debugLabel);try{block();}finally{tag=endTrackFrame();}return tag;}// untrack() is currently mainly used to handle places that were previously not\n// tracked, and that tracking now would cause backtracking rerender assertions.\n// I think once we move everyone forward onto modern APIs, we'll probably be\n// able to remove it, but I'm not sure yet.\nfunction untrack(callback){beginUntrackFrame();try{return callback();}finally{endUntrackFrame();}}function trackedData(key,initializer){var values=new WeakMap(),hasInitializer=\"function\"==typeof initializer;return{getter:function getter(self){var value;// If the field has never been initialized, we should initialize it\nreturn consumeTag(tagFor(self,key)),hasInitializer&&!values.has(self)?(value=initializer.call(self),values.set(self,value)):value=values.get(self),value;},setter:function setter(self,value){dirtyTagFor(self,key),values.set(self,value);}};}var GLIMMER_VALIDATOR_REGISTRATION=Symbol(\"GLIMMER_VALIDATOR_REGISTRATION\"),globalObj=function(){if(\"undefined\"!=typeof globalThis)return globalThis;if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw new Error(\"unable to locate global object\");}();if(!0===globalObj[GLIMMER_VALIDATOR_REGISTRATION])throw new Error(\"The `@glimmer/validator` library has been included twice in this application. It could be different versions of the package, or the same version included twice by mistake. `@glimmer/validator` depends on having a single copy of the package in use at any time in an application, even if they are the same version. You must dedupe your build to remove the duplicate packages in order to prevent this error.\");globalObj[GLIMMER_VALIDATOR_REGISTRATION]=!0;var glimmerValidator=/*#__PURE__*/Object.defineProperty({__proto__:null,get ALLOW_CYCLES(){return ALLOW_CYCLES;},COMPUTE:COMPUTE$1,CONSTANT:CONSTANT,CONSTANT_TAG:CONSTANT_TAG,CURRENT_TAG:CURRENT_TAG,CurrentTag:CurrentTag,INITIAL:INITIAL,VOLATILE:VOLATILE,VOLATILE_TAG:VOLATILE_TAG,VolatileTag:VolatileTag,beginTrackFrame:beginTrackFrame,beginUntrackFrame:beginUntrackFrame,bump:bump,combine:_combine,consumeTag:consumeTag,createCache:createCache,createTag:createTag,createUpdatableTag:createUpdatableTag,debug:debug$1,dirtyTag:DIRTY_TAG$1,dirtyTagFor:dirtyTagFor,endTrackFrame:endTrackFrame,endUntrackFrame:endUntrackFrame,getValue:getValue,isConst:isConst,isConstTag:isConstTag,isTracking:isTracking,resetTracking:resetTracking,tagFor:tagFor,tagMetaFor:tagMetaFor,track:track,trackedData:trackedData,untrack:untrack,updateTag:UPDATE_TAG,validateTag:validateTag,valueForTag:valueForTag},Symbol.toStringTag,{value:'Module'});var REFERENCE=Symbol(\"REFERENCE\"),COMPUTE=1,UNBOUND=2;//////////\nvar ReferenceImpl=/*#__PURE__*/_createClass(function ReferenceImpl(type){_classCallCheck(this,ReferenceImpl);_defineProperty(this,REFERENCE,void 0);_defineProperty(this,\"tag\",null);_defineProperty(this,\"lastRevision\",INITIAL);_defineProperty(this,\"lastValue\",void 0);_defineProperty(this,\"children\",null);_defineProperty(this,\"compute\",null);_defineProperty(this,\"update\",null);_defineProperty(this,\"debugLabel\",void 0);this[REFERENCE]=type;});function createPrimitiveRef(value){var ref=new ReferenceImpl(UNBOUND);return ref.tag=CONSTANT_TAG,ref.lastValue=value,ref.debugLabel=String(value),ref;}var UNDEFINED_REFERENCE=createPrimitiveRef(void 0),NULL_REFERENCE=createPrimitiveRef(null),TRUE_REFERENCE=createPrimitiveRef(!0),FALSE_REFERENCE=createPrimitiveRef(!1);function createConstRef(value,debugLabel){var ref=new ReferenceImpl(0);return ref.lastValue=value,ref.tag=CONSTANT_TAG,ref.debugLabel=debugLabel,ref;}function createUnboundRef(value,debugLabel){var ref=new ReferenceImpl(UNBOUND);return ref.lastValue=value,ref.tag=CONSTANT_TAG,ref.debugLabel=debugLabel,ref;}function createComputeRef(compute){var update=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var debugLabel=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"unknown\";var ref=new ReferenceImpl(COMPUTE);return ref.compute=compute,ref.update=update,ref.debugLabel=\"(result of a `\".concat(debugLabel,\"` helper)\"),ref;}function createReadOnlyRef(ref){return isUpdatableRef(ref)?createComputeRef(function(){return valueForRef(ref);},null,ref.debugLabel):ref;}function isInvokableRef(ref){return 3===ref[REFERENCE];}function createInvokableRef(inner){var ref=createComputeRef(function(){return valueForRef(inner);},function(value){return updateRef(inner,value);});return ref.debugLabel=inner.debugLabel,ref[REFERENCE]=3,ref;}function isConstRef(_ref){return _ref.tag===CONSTANT_TAG;}function isUpdatableRef(_ref){return null!==_ref.update;}function valueForRef(_ref){var ref=_ref;var tag=ref.tag;if(tag===CONSTANT_TAG)return ref.lastValue;var lastRevision=ref.lastRevision;var lastValue;if(null!==tag&&validateTag(tag,lastRevision))lastValue=ref.lastValue;else{var compute=ref.compute,newTag=track(function(){lastValue=ref.lastValue=compute();},ref.debugLabel);tag=ref.tag=newTag,ref.lastRevision=valueForTag(newTag);}return consumeTag(tag),lastValue;}function updateRef(_ref,value){expect(_ref.update,\"called update on a non-updatable reference\")(value);}function childRefFor(_parentRef,path){var parentRef=_parentRef,type=parentRef[REFERENCE];var child,children=parentRef.children;if(null===children)children=parentRef.children=new Map();else if(child=children.get(path),void 0!==child)return child;if(type===UNBOUND){var parent=valueForRef(parentRef);child=isDict(parent)?createUnboundRef(parent[path],\"\".concat(parentRef.debugLabel,\".\").concat(path)):UNDEFINED_REFERENCE;}else child=createComputeRef(function(){var parent=valueForRef(parentRef);if(isDict(parent))return getProp(parent,path);},function(val){var parent=valueForRef(parentRef);if(isDict(parent))return setProp(parent,path,val);}),child.debugLabel=\"\".concat(parentRef.debugLabel,\".\").concat(path);return children.set(path,child),child;}function childRefFromParts(root,parts){var reference=root;var _iterator8=_createForOfIteratorHelper(parts),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var part=_step8.value;reference=childRefFor(reference,part);}}catch(err){_iterator8.e(err);}finally{_iterator8.f();}return reference;}var createDebugAliasRef;createDebugAliasRef=function createDebugAliasRef(debugLabel,inner){var ref=createComputeRef(function(){return valueForRef(inner);},isUpdatableRef(inner)?function(value){return updateRef(inner,value);}:null);return ref[REFERENCE]=inner[REFERENCE],ref.debugLabel=debugLabel,ref;};var NULL_IDENTITY={},KEY=function KEY(_,index){return index;},INDEX=function INDEX(_,index){return String(index);},IDENTITY=function IDENTITY(item){return null===item?NULL_IDENTITY:item;};var WeakMapWithPrimitives=/*#__PURE__*/function(){function WeakMapWithPrimitives(){_classCallCheck(this,WeakMapWithPrimitives);_defineProperty(this,\"_weakMap\",void 0);_defineProperty(this,\"_primitiveMap\",void 0);}return _createClass(WeakMapWithPrimitives,[{key:\"weakMap\",get:function get(){return void 0===this._weakMap&&(this._weakMap=new WeakMap()),this._weakMap;}},{key:\"primitiveMap\",get:function get(){return void 0===this._primitiveMap&&(this._primitiveMap=new Map()),this._primitiveMap;}},{key:\"set\",value:function set(key,value){isObject(key)?this.weakMap.set(key,value):this.primitiveMap.set(key,value);}},{key:\"get\",value:function get(key){return isObject(key)?this.weakMap.get(key):this.primitiveMap.get(key);}}]);}();var IDENTITIES=new WeakMapWithPrimitives();/**\n           * When iterating over a list, it's possible that an item with the same unique\n           * key could be encountered twice:\n           *\n           * ```js\n           * let arr = ['same', 'different', 'same', 'same'];\n           * ```\n           *\n           * In general, we want to treat these items as _unique within the list_. To do\n           * this, we track the occurences of every item as we iterate the list, and when\n           * an item occurs more than once, we generate a new unique key just for that\n           * item, and that occurence within the list. The next time we iterate the list,\n           * and encounter an item for the nth time, we can get the _same_ key, and let\n           * Glimmer know that it should reuse the DOM for the previous nth occurence.\n           */function uniqueKeyFor(keyFor){var seen=new WeakMapWithPrimitives();return function(value,memo){var key=keyFor(value,memo),count=seen.get(key)||0;return seen.set(key,count+1),0===count?key:function(value,count){var identities=IDENTITIES.get(value);void 0===identities&&(identities=[],IDENTITIES.set(value,identities));var identity=identities[count];return void 0===identity&&(identity={value:value,count:count},identities[count]=identity),identity;}(key,count);};}function createIteratorRef(listRef,key){return createComputeRef(function(){var iterable=valueForRef(listRef),keyFor=function(key){switch(key){case\"@key\":return uniqueKeyFor(KEY);case\"@index\":return uniqueKeyFor(INDEX);case\"@identity\":return uniqueKeyFor(IDENTITY);default:return function(path){if(\"@\"===path[0])throw new Error(\"invalid keypath: '\".concat(path,\"', valid keys: @index, @identity, or a path\"));return uniqueKeyFor(function(item){return getPath$1(item,path);});}(key);}}(key);if(Array.isArray(iterable))return new ArrayIterator$1(iterable,keyFor);var maybeIterator=toIterator$1(iterable);return null===maybeIterator?new ArrayIterator$1(EMPTY_ARRAY$4,function(){return null;}):new IteratorWrapper(maybeIterator,keyFor);});}function createIteratorItemRef(_value){var value=_value,tag=createTag();return createComputeRef(function(){return consumeTag(tag),value;},function(newValue){value!==newValue&&(value=newValue,DIRTY_TAG$1(tag));});}var IteratorWrapper=/*#__PURE__*/function(){function IteratorWrapper(inner,keyFor){_classCallCheck(this,IteratorWrapper);this.inner=inner,this.keyFor=keyFor;}return _createClass(IteratorWrapper,[{key:\"isEmpty\",value:function isEmpty(){return this.inner.isEmpty();}},{key:\"next\",value:function next(){var nextValue=this.inner.next();return null!==nextValue&&(nextValue.key=this.keyFor(nextValue.value,nextValue.memo)),nextValue;}}]);}();var ArrayIterator$1=/*#__PURE__*/function(){function ArrayIterator(iterator,keyFor){_classCallCheck(this,ArrayIterator);_defineProperty(this,\"current\",void 0);_defineProperty(this,\"pos\",0);this.iterator=iterator,this.keyFor=keyFor,0===iterator.length?this.current={kind:\"empty\"}:this.current={kind:\"first\",value:iterator[this.pos]};}return _createClass(ArrayIterator,[{key:\"isEmpty\",value:function isEmpty(){return\"empty\"===this.current.kind;}},{key:\"next\",value:function next(){var value,current=this.current;if(\"first\"===current.kind)this.current={kind:\"progress\"},value=current.value;else{if(this.pos>=this.iterator.length-1)return null;value=this.iterator[++this.pos];}var keyFor=this.keyFor;return{key:keyFor(value,this.pos),value:value,memo:this.pos};}}]);}();var glimmerReference=/*#__PURE__*/Object.defineProperty({__proto__:null,FALSE_REFERENCE:FALSE_REFERENCE,NULL_REFERENCE:NULL_REFERENCE,REFERENCE:REFERENCE,TRUE_REFERENCE:TRUE_REFERENCE,UNDEFINED_REFERENCE:UNDEFINED_REFERENCE,childRefFor:childRefFor,childRefFromParts:childRefFromParts,createComputeRef:createComputeRef,createConstRef:createConstRef,get createDebugAliasRef(){return createDebugAliasRef;},createInvokableRef:createInvokableRef,createIteratorItemRef:createIteratorItemRef,createIteratorRef:createIteratorRef,createPrimitiveRef:createPrimitiveRef,createReadOnlyRef:createReadOnlyRef,createUnboundRef:createUnboundRef,isConstRef:isConstRef,isInvokableRef:isInvokableRef,isUpdatableRef:isUpdatableRef,updateRef:updateRef,valueForRef:valueForRef},Symbol.toStringTag,{value:'Module'});var CUSTOM_TAG_FOR=new WeakMap();function getCustomTagFor(obj){return CUSTOM_TAG_FOR.get(obj);}function setCustomTagFor(obj,customTagFn){CUSTOM_TAG_FOR.set(obj,customTagFn);}function convertToInt(prop){if(\"symbol\"==_typeof(prop))return null;var num=Number(prop);return isNaN(num)?null:num%1==0?num:null;}var NamedArgsProxy=/*#__PURE__*/function(){function NamedArgsProxy(named){_classCallCheck(this,NamedArgsProxy);this.named=named;}return _createClass(NamedArgsProxy,[{key:\"get\",value:function get(_target,prop){var ref=this.named[prop];if(void 0!==ref)return valueForRef(ref);}},{key:\"has\",value:function has(_target,prop){return prop in this.named;}},{key:\"ownKeys\",value:function ownKeys(){return Object.keys(this.named);}},{key:\"isExtensible\",value:function isExtensible(){return!1;}},{key:\"getOwnPropertyDescriptor\",value:function getOwnPropertyDescriptor(_target,prop){if(!(prop in this.named))throw new Error(\"args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for `\".concat(String(prop),\"`\"));return{enumerable:!0,configurable:!0};}}]);}();var PositionalArgsProxy=/*#__PURE__*/function(){function PositionalArgsProxy(positional){_classCallCheck(this,PositionalArgsProxy);this.positional=positional;}return _createClass(PositionalArgsProxy,[{key:\"get\",value:function get(target,prop){var positional=this.positional;if(\"length\"===prop)return positional.length;var parsed=convertToInt(prop);return null!==parsed&&parsed<positional.length?valueForRef(positional[parsed]):target[prop];}},{key:\"isExtensible\",value:function isExtensible(){return!1;}},{key:\"has\",value:function has(_target,prop){var parsed=convertToInt(prop);return null!==parsed&&parsed<this.positional.length;}}]);}();var argsProxyFor=function argsProxyFor(capturedArgs,type){var named=capturedArgs.named,positional=capturedArgs.positional,namedHandler=new NamedArgsProxy(named),positionalHandler=new PositionalArgsProxy(positional),namedTarget=Object.create(null);{var setHandler=function setHandler(_target,prop){throw new Error(\"You attempted to set \".concat(String(prop),\" on the arguments of a component, helper, or modifier. Arguments are immutable and cannot be updated directly; they always represent the values that are passed down. If you want to set default values, you should use a getter and local tracked state instead.\"));},forInDebugHandler=function forInDebugHandler(){throw new Error(\"Object.keys() was called on the positional arguments array for a \".concat(type,\", which is not supported. This function is a low-level function that should not need to be called for positional argument arrays. You may be attempting to iterate over the array using for...in instead of for...of.\"));};namedHandler.set=setHandler,positionalHandler.set=setHandler,positionalHandler.ownKeys=forInDebugHandler;}var namedProxy=new Proxy(namedTarget,namedHandler),positionalProxy=new Proxy([],positionalHandler);return setCustomTagFor(namedProxy,function(_obj,key){return function(namedArgs,key){return track(function(){key in namedArgs&&valueForRef(namedArgs[key]);});}(named,key);}),setCustomTagFor(positionalProxy,function(_obj,key){return function(positionalArgs,key){return track(function(){\"[]\"===key&&// consume all of the tags in the positional array\npositionalArgs.forEach(valueForRef);var parsed=convertToInt(key);null!==parsed&&parsed<positionalArgs.length&&// consume the tag of the referenced index\nvalueForRef(positionalArgs[parsed]);});}(positional,key);}),{named:namedProxy,positional:positionalProxy};};/* This file is generated by build/debug.js */new Array(Op.Size).fill(null),new Array(Op.Size).fill(null);var FROM_CAPABILITIES=new WeakSet();function buildCapabilities(capabilities){return FROM_CAPABILITIES.add(capabilities),Object.freeze(capabilities),capabilities;}var EMPTY=InternalComponentCapabilities.Empty;/**\n           * Converts a ComponentCapabilities object into a 32-bit integer representation.\n           */function capabilityFlagsFrom(capabilities){return EMPTY|capability(capabilities,\"dynamicLayout\")|capability(capabilities,\"dynamicTag\")|capability(capabilities,\"prepareArgs\")|capability(capabilities,\"createArgs\")|capability(capabilities,\"attributeHook\")|capability(capabilities,\"elementHook\")|capability(capabilities,\"dynamicScope\")|capability(capabilities,\"createCaller\")|capability(capabilities,\"updateHook\")|capability(capabilities,\"createInstance\")|capability(capabilities,\"wrapped\")|capability(capabilities,\"willDestroy\")|capability(capabilities,\"hasSubOwner\");}function capability(capabilities,capability){return capabilities[capability]?InternalComponentCapabilities[capability]:EMPTY;}function managerHasCapability(_manager,capabilities,capability){return!!(capabilities&capability);}function hasCapability(capabilities,capability){return!!(capabilities&capability);}function helperCapabilities(managerAPI){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(\"3.23\"!==managerAPI)throw new Error(\"Invalid helper manager compatibility specified\");if(!options.hasValue&&!options.hasScheduledEffect||options.hasValue&&options.hasScheduledEffect)throw new Error(\"You must pass either the `hasValue` OR the `hasScheduledEffect` capability when defining a helper manager. Passing neither, or both, is not permitted.\");if(options.hasScheduledEffect)throw new Error(\"The `hasScheduledEffect` capability has not yet been implemented for helper managers. Please pass `hasValue` instead\");return buildCapabilities({hasValue:Boolean(options.hasValue),hasDestroyable:Boolean(options.hasDestroyable),hasScheduledEffect:Boolean(options.hasScheduledEffect)});}////////////\nfunction hasValue(manager){return manager.capabilities.hasValue;}function hasDestroyable(manager){return manager.capabilities.hasDestroyable;}////////////\nvar CustomHelperManager=/*#__PURE__*/function(){function CustomHelperManager(factory){_classCallCheck(this,CustomHelperManager);_defineProperty(this,\"helperManagerDelegates\",new WeakMap());_defineProperty(this,\"undefinedDelegate\",null);this.factory=factory;}return _createClass(CustomHelperManager,[{key:\"getDelegateForOwner\",value:function getDelegateForOwner(owner){var delegate=this.helperManagerDelegates.get(owner);if(void 0===delegate){var factory=this.factory;if(delegate=factory(owner),!FROM_CAPABILITIES.has(delegate.capabilities))// TODO: This error message should make sense in both Ember and Glimmer https://github.com/glimmerjs/glimmer-vm/issues/1200\nthrow new Error(\"Custom helper managers must have a `capabilities` property that is the result of calling the `capabilities('3.23')` (imported via `import { capabilities } from '@ember/helper';`). Received: `\".concat(JSON.stringify(delegate.capabilities),\"` for: `\").concat(delegate,\"`\"));this.helperManagerDelegates.set(owner,delegate);}return delegate;}},{key:\"getDelegateFor\",value:function getDelegateFor(owner){if(void 0===owner){var undefinedDelegate=this.undefinedDelegate;if(null===undefinedDelegate){var factory=this.factory;this.undefinedDelegate=undefinedDelegate=factory(void 0);}return undefinedDelegate;}return this.getDelegateForOwner(owner);}},{key:\"getHelper\",value:function getHelper(definition){var _this=this;return function(capturedArgs,owner){var manager=_this.getDelegateFor(owner);var args=argsProxyFor(capturedArgs,\"helper\"),bucket=manager.createHelper(definition,args);if(hasValue(manager)){var _cache3=createComputeRef(function(){return manager.getValue(bucket);},null,manager.getDebugName&&manager.getDebugName(definition));return hasDestroyable(manager)&&associateDestroyableChild(_cache3,manager.getDestroyable(bucket)),_cache3;}if(hasDestroyable(manager)){var _manager$getDebugName,_manager$getDebugName2;var ref=createConstRef(void 0,(_manager$getDebugName=(_manager$getDebugName2=manager.getDebugName)===null||_manager$getDebugName2===void 0?void 0:_manager$getDebugName2.call(manager,definition))!==null&&_manager$getDebugName!==void 0?_manager$getDebugName:\"unknown helper\");return associateDestroyableChild(ref,manager.getDestroyable(bucket)),ref;}return UNDEFINED_REFERENCE;};}}]);}();var FunctionHelperManager=/*#__PURE__*/function(){function FunctionHelperManager(){_classCallCheck(this,FunctionHelperManager);_defineProperty(this,\"capabilities\",buildCapabilities({hasValue:!0,hasDestroyable:!1,hasScheduledEffect:!1}));}return _createClass(FunctionHelperManager,[{key:\"createHelper\",value:function createHelper(fn,args){return{fn:fn,args:args};}},{key:\"getValue\",value:function getValue(_ref8){var fn=_ref8.fn,args=_ref8.args;return Object.keys(args.named).length>0?fn.apply(void 0,_toConsumableArray(args.positional).concat([args.named])):fn.apply(void 0,_toConsumableArray(args.positional));}},{key:\"getDebugName\",value:function getDebugName(fn){return fn.name?\"(helper function \".concat(fn.name,\")\"):\"(anonymous helper function)\";}}]);}();var COMPONENT_MANAGERS=new WeakMap(),MODIFIER_MANAGERS=new WeakMap(),HELPER_MANAGERS=new WeakMap(),getPrototypeOf$1=Object.getPrototypeOf;function setManager(map,manager,obj){if((\"object\"!=_typeof(obj)||null===obj)&&\"function\"!=typeof obj)throw new Error(\"Attempted to set a manager on a non-object value. Managers can only be associated with objects or functions. Value was \".concat(debugToString$1(obj)));if(map.has(obj))throw new Error(\"Attempted to set the same type of manager multiple times on a value. You can only associate one manager of each type with a given value. Value was \".concat(debugToString$1(obj)));return map.set(obj,manager),obj;}function getManager(map,obj){var pointer=obj;for(;null!=pointer;){var manager=map.get(pointer);if(void 0!==manager)return manager;pointer=getPrototypeOf$1(pointer);}}///////////\nfunction setInternalModifierManager(manager,definition){return setManager(MODIFIER_MANAGERS,manager,definition);}function getInternalModifierManager(definition,isOptional){if(\"function\"!=typeof definition&&(\"object\"!=_typeof(definition)||null===definition))throw new Error(\"Attempted to use a value as a modifier, but it was not an object or function. Modifier definitions must be objects or functions with an associated modifier manager. The value was: \".concat(definition));var manager=getManager(MODIFIER_MANAGERS,definition);if(void 0===manager){if(!0===isOptional)return null;throw new Error(\"Attempted to load a modifier, but there wasn't a modifier manager associated with the definition. The definition was: \".concat(debugToString$1(definition)));}return manager;}function setInternalHelperManager(manager,definition){return setManager(HELPER_MANAGERS,manager,definition);}var DEFAULT_MANAGER=new CustomHelperManager(function(){return new FunctionHelperManager();});function getInternalHelperManager(definition,isOptional){if(\"function\"!=typeof definition&&(\"object\"!=_typeof(definition)||null===definition))throw new Error(\"Attempted to use a value as a helper, but it was not an object or function. Helper definitions must be objects or functions with an associated helper manager. The value was: \".concat(definition));var manager=getManager(HELPER_MANAGERS,definition);// Functions are special-cased because functions are defined\n// as the \"default\" helper, per: https://github.com/emberjs/rfcs/pull/756\nif(void 0===manager&&\"function\"==typeof definition&&(manager=DEFAULT_MANAGER),manager)return manager;if(!0===isOptional)return null;throw new Error(\"Attempted to load a helper, but there wasn't a helper manager associated with the definition. The definition was: \".concat(debugToString$1(definition)));}function setInternalComponentManager(factory,obj){return setManager(COMPONENT_MANAGERS,factory,obj);}function getInternalComponentManager(definition,isOptional){if(\"function\"!=typeof definition&&(\"object\"!=_typeof(definition)||null===definition))throw new Error(\"Attempted to use a value as a component, but it was not an object or function. Component definitions must be objects or functions with an associated component manager. The value was: \".concat(definition));var manager=getManager(COMPONENT_MANAGERS,definition);if(void 0===manager){if(!0===isOptional)return null;throw new Error(\"Attempted to load a component, but there wasn't a component manager associated with the definition. The definition was: \".concat(debugToString$1(definition)));}return manager;}///////////\nfunction hasInternalComponentManager(definition){return void 0!==getManager(COMPONENT_MANAGERS,definition);}function hasInternalHelperManager(definition){return function(definition){return\"function\"==typeof definition;}(definition)||void 0!==getManager(HELPER_MANAGERS,definition);}function hasInternalModifierManager(definition){return void 0!==getManager(MODIFIER_MANAGERS,definition);}var CAPABILITIES$4={dynamicLayout:!1,dynamicTag:!1,prepareArgs:!1,createArgs:!0,attributeHook:!1,elementHook:!1,createCaller:!1,dynamicScope:!0,updateHook:!0,createInstance:!0,wrapped:!1,willDestroy:!1,hasSubOwner:!1};function componentCapabilities(managerAPI){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(\"3.13\"!==managerAPI)throw new Error(\"Invalid component manager compatibility specified\");var updateHook=Boolean(options.updateHook);return buildCapabilities({asyncLifeCycleCallbacks:Boolean(options.asyncLifecycleCallbacks),destructor:Boolean(options.destructor),updateHook:updateHook});}function hasAsyncLifeCycleCallbacks(delegate){return delegate.capabilities.asyncLifeCycleCallbacks;}function hasUpdateHook(delegate){return delegate.capabilities.updateHook;}/**\n            The CustomComponentManager allows addons to provide custom component\n            implementations that integrate seamlessly into Ember. This is accomplished\n            through a delegate, registered with the custom component manager, which\n            implements a set of hooks that determine component behavior.\n\n            To create a custom component manager, instantiate a new CustomComponentManager\n            class and pass the delegate as the first argument:\n\n            ```js\n            let manager = new CustomComponentManager({\n              // ...delegate implementation...\n            });\n            ```\n\n            ## Delegate Hooks\n\n            Throughout the lifecycle of a component, the component manager will invoke\n            delegate hooks that are responsible for surfacing those lifecycle changes to\n            the end developer.\n\n            * `create()` - invoked when a new instance of a component should be created\n            * `update()` - invoked when the arguments passed to a component change\n            * `getContext()` - returns the object that should be\n          */var CustomComponentManager=/*#__PURE__*/function(){function CustomComponentManager(factory){_classCallCheck(this,CustomComponentManager);_defineProperty(this,\"componentManagerDelegates\",new WeakMap());this.factory=factory;}return _createClass(CustomComponentManager,[{key:\"getDelegateFor\",value:function getDelegateFor(owner){var componentManagerDelegates=this.componentManagerDelegates,delegate=componentManagerDelegates.get(owner);if(void 0===delegate){var factory=this.factory;if(delegate=factory(owner),!FROM_CAPABILITIES.has(delegate.capabilities))// TODO: This error message should make sense in both Ember and Glimmer https://github.com/glimmerjs/glimmer-vm/issues/1200\nthrow new Error(\"Custom component managers must have a `capabilities` property that is the result of calling the `capabilities('3.13')` (imported via `import { capabilities } from '@ember/component';`). Received: `\".concat(JSON.stringify(delegate.capabilities),\"` for: `\").concat(delegate,\"`\"));componentManagerDelegates.set(owner,delegate);}return delegate;}},{key:\"create\",value:function create(owner,definition,vmArgs){var delegate=this.getDelegateFor(owner),args=argsProxyFor(vmArgs.capture(),\"component\"),component=delegate.createComponent(definition,args);return new CustomComponentState(component,delegate,args);}},{key:\"getDebugName\",value:function getDebugName(definition){return\"function\"==typeof definition?definition.name:definition.toString();}},{key:\"update\",value:function update(bucket){var delegate=bucket.delegate;if(hasUpdateHook(delegate)){var component=bucket.component,args=bucket.args;delegate.updateComponent(component,args);}}},{key:\"didCreate\",value:function didCreate(_ref9){var component=_ref9.component,delegate=_ref9.delegate;hasAsyncLifeCycleCallbacks(delegate)&&delegate.didCreateComponent(component);}},{key:\"didUpdate\",value:function didUpdate(_ref10){var component=_ref10.component,delegate=_ref10.delegate;(function(delegate){return hasAsyncLifeCycleCallbacks(delegate)&&hasUpdateHook(delegate);})(delegate)&&delegate.didUpdateComponent(component);}},{key:\"didRenderLayout\",value:function didRenderLayout(){}},{key:\"didUpdateLayout\",value:function didUpdateLayout(){}},{key:\"getSelf\",value:function getSelf(_ref11){var component=_ref11.component,delegate=_ref11.delegate;return createConstRef(delegate.getContext(component),\"this\");}},{key:\"getDestroyable\",value:function getDestroyable(bucket){var delegate=bucket.delegate;if(function(delegate){return delegate.capabilities.destructor;}(delegate)){var component=bucket.component;return registerDestructor$1(bucket,function(){return delegate.destroyComponent(component);}),bucket;}return null;}},{key:\"getCapabilities\",value:function getCapabilities(){return CAPABILITIES$4;}}]);}();/**\n           * Stores internal state about a component instance after it's been created.\n           */var CustomComponentState=/*#__PURE__*/_createClass(function CustomComponentState(component,delegate,args){_classCallCheck(this,CustomComponentState);this.component=component,this.delegate=delegate,this.args=args;});function modifierCapabilities(managerAPI){var optionalFeatures=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(\"3.22\"!==managerAPI)throw new Error(\"Invalid modifier manager compatibility specified\");return buildCapabilities({disableAutoTracking:Boolean(optionalFeatures.disableAutoTracking)});}/**\n            The CustomModifierManager allows addons to provide custom modifier\n            implementations that integrate seamlessly into Ember. This is accomplished\n            through a delegate, registered with the custom modifier manager, which\n            implements a set of hooks that determine modifier behavior.\n            To create a custom modifier manager, instantiate a new CustomModifierManager\n            class and pass the delegate as the first argument:\n\n            ```js\n            let manager = new CustomModifierManager({\n              // ...delegate implementation...\n            });\n            ```\n\n            ## Delegate Hooks\n\n            Throughout the lifecycle of a modifier, the modifier manager will invoke\n            delegate hooks that are responsible for surfacing those lifecycle changes to\n            the end developer.\n            * `createModifier()` - invoked when a new instance of a modifier should be created\n            * `installModifier()` - invoked when the modifier is installed on the element\n            * `updateModifier()` - invoked when the arguments passed to a modifier change\n            * `destroyModifier()` - invoked when the modifier is about to be destroyed\n          */var CustomModifierManager=/*#__PURE__*/function(){function CustomModifierManager(factory){_classCallCheck(this,CustomModifierManager);_defineProperty(this,\"componentManagerDelegates\",new WeakMap());this.factory=factory;}return _createClass(CustomModifierManager,[{key:\"getDelegateFor\",value:function getDelegateFor(owner){var componentManagerDelegates=this.componentManagerDelegates,delegate=componentManagerDelegates.get(owner);if(void 0===delegate){var factory=this.factory;if(delegate=factory(owner),!FROM_CAPABILITIES.has(delegate.capabilities))// TODO: This error message should make sense in both Ember and Glimmer https://github.com/glimmerjs/glimmer-vm/issues/1200\nthrow new Error(\"Custom modifier managers must have a `capabilities` property that is the result of calling the `capabilities('3.22')` (imported via `import { capabilities } from '@ember/modifier';`). Received: `\".concat(JSON.stringify(delegate.capabilities),\"` for: `\").concat(delegate,\"`\"));componentManagerDelegates.set(owner,delegate);}return delegate;}},{key:\"create\",value:function create(owner,element,definition,capturedArgs){var state,delegate=this.getDelegateFor(owner),args=argsProxyFor(capturedArgs,\"modifier\"),instance=delegate.createModifier(definition,args);return state={tag:createUpdatableTag(),element:element,delegate:delegate,args:args,modifier:instance},registerDestructor$1(state,function(){return delegate.destroyModifier(instance,args);}),state;}},{key:\"getDebugName\",value:function getDebugName(definition){return\"function\"==typeof definition?definition.name||definition.toString():\"<unknown>\";}},{key:\"getDebugInstance\",value:function getDebugInstance(_ref12){var modifier=_ref12.modifier;return modifier;}},{key:\"getTag\",value:function getTag(_ref13){var tag=_ref13.tag;return tag;}},{key:\"install\",value:function install(_ref14){var element=_ref14.element,args=_ref14.args,modifier=_ref14.modifier,delegate=_ref14.delegate;var capabilities=delegate.capabilities;!0===capabilities.disableAutoTracking?untrack(function(){return delegate.installModifier(modifier,castToBrowser(element,\"ELEMENT\"),args);}):delegate.installModifier(modifier,castToBrowser(element,\"ELEMENT\"),args);}},{key:\"update\",value:function update(_ref15){var args=_ref15.args,modifier=_ref15.modifier,delegate=_ref15.delegate;var capabilities=delegate.capabilities;!0===capabilities.disableAutoTracking?untrack(function(){return delegate.updateModifier(modifier,args);}):delegate.updateModifier(modifier,args);}},{key:\"getDestroyable\",value:function getDestroyable(state){return state;}}]);}();function setComponentManager$1(factory,obj){return setInternalComponentManager(new CustomComponentManager(factory),obj);}function setModifierManager$1(factory,obj){return setInternalModifierManager(new CustomModifierManager(factory),obj);}function setHelperManager$1(factory,obj){return setInternalHelperManager(new CustomHelperManager(factory),obj);}var TEMPLATES$1=new WeakMap(),getPrototypeOf$2=Object.getPrototypeOf;function setComponentTemplate(factory,obj){if(null===obj||\"object\"!=_typeof(obj)&&\"function\"!=typeof obj)throw new Error(\"Cannot call `setComponentTemplate` on `\".concat(debugToString$1(obj),\"`\"));if(TEMPLATES$1.has(obj))throw new Error(\"Cannot call `setComponentTemplate` multiple times on the same class (`\".concat(debugToString$1(obj),\"`)\"));return TEMPLATES$1.set(obj,factory),obj;}function getComponentTemplate(obj){var pointer=obj;for(;null!==pointer;){var template=TEMPLATES$1.get(pointer);if(void 0!==template)return template;pointer=getPrototypeOf$2(pointer);}}var glimmerManager=/*#__PURE__*/Object.defineProperty({__proto__:null,CustomComponentManager:CustomComponentManager,CustomHelperManager:CustomHelperManager,CustomModifierManager:CustomModifierManager,capabilityFlagsFrom:capabilityFlagsFrom,componentCapabilities:componentCapabilities,getComponentTemplate:getComponentTemplate,getCustomTagFor:getCustomTagFor,getInternalComponentManager:getInternalComponentManager,getInternalHelperManager:getInternalHelperManager,getInternalModifierManager:getInternalModifierManager,hasCapability:hasCapability,hasDestroyable:hasDestroyable,hasInternalComponentManager:hasInternalComponentManager,hasInternalHelperManager:hasInternalHelperManager,hasInternalModifierManager:hasInternalModifierManager,hasValue:hasValue,helperCapabilities:helperCapabilities,managerHasCapability:managerHasCapability,modifierCapabilities:modifierCapabilities,setComponentManager:setComponentManager$1,setComponentTemplate:setComponentTemplate,setCustomTagFor:setCustomTagFor,setHelperManager:setHelperManager$1,setInternalComponentManager:setInternalComponentManager,setInternalHelperManager:setInternalHelperManager,setInternalModifierManager:setInternalModifierManager,setModifierManager:setModifierManager$1},Symbol.toStringTag,{value:'Module'});/* This file is generated by build/debug.js */var debugCompiler;function makeResolutionTypeVerifier(typeToVerify){return function(opcode){if(!function(opcode){return Array.isArray(opcode)&&2===opcode.length;}(opcode))return!1;var type=opcode[0];return type===opcodes.GetStrictKeyword||type===opcodes.GetLexicalSymbol||type===typeToVerify;};}new Array(Op.Size).fill(null),new Array(Op.Size).fill(null);var isGetFreeComponent=makeResolutionTypeVerifier(opcodes.GetFreeAsComponentHead),isGetFreeModifier=makeResolutionTypeVerifier(opcodes.GetFreeAsModifierHead),isGetFreeHelper=makeResolutionTypeVerifier(opcodes.GetFreeAsHelperHead),isGetFreeComponentOrHelper=makeResolutionTypeVerifier(opcodes.GetFreeAsComponentOrHelperHead);function assertResolverInvariants(meta){{if(!meta.upvars)throw new Error(\"Attempted to resolve a component, helper, or modifier, but no free vars were found\");if(!meta.owner)throw new Error(\"Attempted to resolve a component, helper, or modifier, but no owner was associated with the template it was being resolved from\");}return meta;}/**\n           * <Foo/>\n           * <Foo></Foo>\n           * <Foo @arg={{true}} />\n           */function lookupBuiltInHelper(expr,resolver,meta,constants,type){var _meta$upvars$expr$;var _assertResolverInvari=assertResolverInvariants(meta),upvars=_assertResolverInvari.upvars,name=unwrap$1(upvars[expr[1]]),helper=resolver.lookupBuiltInHelper(name);if(null===helper)// Keyword helper did not exist, which means that we're attempting to use a\n// value of some kind that is not in scope\nthrow debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve a \".concat(type,\" in a strict mode template, but that value was not in scope: \").concat((_meta$upvars$expr$=meta.upvars[expr[1]])!==null&&_meta$upvars$expr$!==void 0?_meta$upvars$expr$:\"{unknown variable}\"));return constants.helper(helper,name);}var HighLevelResolutionOpcodes={Modifier:1003,Component:1004,Helper:1005,ComponentOrHelper:1007,OptionalComponentOrHelper:1008,Local:1010,TemplateLocal:1011},HighLevelBuilderOpcodes={Label:1e3,StartLabels:1001,StopLabels:1002,Start:1e3,End:1002},HighLevelOperands={Label:1,IsStrictMode:2,DebugSymbols:3,Block:4,StdLib:5,NonSmallInt:6,SymbolTable:7,Layout:8};function labelOperand(value){return{type:HighLevelOperands.Label,value:value};}function isStrictMode(){return{type:HighLevelOperands.IsStrictMode,value:void 0};}function stdlibOperand(value){return{type:HighLevelOperands.StdLib,value:value};}function symbolTableOperand(value){return{type:HighLevelOperands.SymbolTable,value:value};}function layoutOperand(value){return{type:HighLevelOperands.Layout,value:value};}var Labels=/*#__PURE__*/function(){function Labels(){_classCallCheck(this,Labels);_defineProperty(this,\"labels\",dict());_defineProperty(this,\"targets\",[]);}return _createClass(Labels,[{key:\"label\",value:function label(name,index){this.labels[name]=index;}},{key:\"target\",value:function target(at,_target2){this.targets.push({at:at,target:_target2});}},{key:\"patch\",value:function patch(heap){var targets=this.targets,labels=this.labels;var _iterator9=_createForOfIteratorHelper(targets),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var _step9$value=_step9.value,at=_step9$value.at,target=_step9$value.target;var address=labels[target]-at;debugAssert(-1===heap.getbyaddr(at),\"Expected heap to contain a placeholder, but it did not\"),heap.setbyaddr(at,address);}}catch(err){_iterator9.e(err);}finally{_iterator9.f();}}}]);}();function encodeOp(encoder,constants,resolver,meta,op){if(function(op){return op<HighLevelBuilderOpcodes.Start;}(op[0])){var _op2=_toArray(op),type=_op2[0],operands=_op2.slice(1);encoder.push.apply(encoder,[constants,type].concat(_toConsumableArray(operands)));}else switch(op[0]){case HighLevelBuilderOpcodes.Label:return encoder.label(op[1]);case HighLevelBuilderOpcodes.StartLabels:return encoder.startLabels();case HighLevelBuilderOpcodes.StopLabels:return encoder.stopLabels();case HighLevelResolutionOpcodes.Component:return function(resolver,constants,meta,_ref16,_meta$upvars$expr$2){var _ref17=_slicedToArray(_ref16,3),expr=_ref17[1],then=_ref17[2];debugAssert(isGetFreeComponent(expr),\"Attempted to resolve a component with incorrect opcode\");var type=expr[0];if(expr[0]===opcodes.GetStrictKeyword)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve a component in a strict mode template, but that value was not in scope: \".concat((_meta$upvars$expr$2=meta.upvars[expr[1]])!==null&&_meta$upvars$expr$2!==void 0?_meta$upvars$expr$2:\"{unknown variable}\"));if(type===opcodes.GetLexicalSymbol){var scopeValues=meta.scopeValues,owner=meta.owner,definition=expect(scopeValues,\"BUG: scopeValues must exist if template symbol is used\")[expr[1]];then(constants.component(definition,expect(owner,\"BUG: expected owner when resolving component definition\")));}else{var _assertResolverInvari2=assertResolverInvariants(meta),upvars=_assertResolverInvari2.upvars,_owner2=_assertResolverInvari2.owner,_name2=unwrap$1(upvars[expr[1]]),_definition=resolver.lookupComponent(_name2,_owner2);if(\"object\"!=_typeof(_definition)||null===_definition)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve `\".concat(_name2,\"`, which was expected to be a component, but nothing was found.\"));then(constants.resolvedComponent(_definition,_name2));}}/**\n                * (helper)\n                * (helper arg)\n                */(resolver,constants,meta,op);case HighLevelResolutionOpcodes.Modifier:/**\n                * <div {{modifier}}/>\n                * <div {{modifier arg}}/>\n                * <Foo {{modifier}}/>\n                */return function(resolver,constants,meta,_ref18){var _ref19=_slicedToArray(_ref18,3),expr=_ref19[1],then=_ref19[2];debugAssert(isGetFreeModifier(expr),\"Attempted to resolve a modifier with incorrect opcode\");var type=expr[0];if(type===opcodes.GetLexicalSymbol){var scopeValues=meta.scopeValues,definition=expect(scopeValues,\"BUG: scopeValues must exist if template symbol is used\")[expr[1]];then(constants.modifier(definition));}else if(type===opcodes.GetStrictKeyword){var _assertResolverInvari3=assertResolverInvariants(meta),upvars=_assertResolverInvari3.upvars,_name3=unwrap$1(upvars[expr[1]]),modifier=resolver.lookupBuiltInModifier(_name3);if(null===modifier)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve a modifier in a strict mode template, but it was not in scope: \".concat(_name3));then(constants.modifier(modifier,_name3));}else{var _assertResolverInvari4=assertResolverInvariants(meta),_upvars=_assertResolverInvari4.upvars,owner=_assertResolverInvari4.owner,_name4=unwrap$1(_upvars[expr[1]]),_modifier=resolver.lookupModifier(_name4,owner);if(null===_modifier)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve `\".concat(_name4,\"`, which was expected to be a modifier, but nothing was found.\"));then(constants.modifier(_modifier,_name4));}}/**\n                * {{component-or-helper arg}}\n                */(resolver,constants,meta,op);case HighLevelResolutionOpcodes.Helper:return function(resolver,constants,meta,_ref20){var _ref21=_slicedToArray(_ref20,3),expr=_ref21[1],then=_ref21[2];debugAssert(isGetFreeHelper(expr),\"Attempted to resolve a helper with incorrect opcode\");var type=expr[0];if(type===opcodes.GetLexicalSymbol){var scopeValues=meta.scopeValues,definition=expect(scopeValues,\"BUG: scopeValues must exist if template symbol is used\")[expr[1]];then(constants.helper(definition));}else if(type===opcodes.GetStrictKeyword)then(lookupBuiltInHelper(expr,resolver,meta,constants,\"helper\"));else{var _assertResolverInvari5=assertResolverInvariants(meta),upvars=_assertResolverInvari5.upvars,owner=_assertResolverInvari5.owner,_name5=unwrap$1(upvars[expr[1]]),_helper=resolver.lookupHelper(_name5,owner);if(null===_helper)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve `\".concat(_name5,\"`, which was expected to be a helper, but nothing was found.\"));then(constants.helper(_helper,_name5));}}(resolver,constants,meta,op);case HighLevelResolutionOpcodes.ComponentOrHelper:return function(resolver,constants,meta,_ref22){var _ref23=_slicedToArray(_ref22,3),expr=_ref23[1],_ref23$=_ref23[2],ifComponent=_ref23$.ifComponent,ifHelper=_ref23$.ifHelper;debugAssert(isGetFreeComponentOrHelper(expr),\"Attempted to resolve a component or helper with incorrect opcode\");var type=expr[0];if(type===opcodes.GetLexicalSymbol){var scopeValues=meta.scopeValues,owner=meta.owner,definition=expect(scopeValues,\"BUG: scopeValues must exist if template symbol is used\")[expr[1]],component=constants.component(definition,expect(owner,\"BUG: expected owner when resolving component definition\"),!0);if(null!==component)return void ifComponent(component);var _helper2=constants.helper(definition,null,!0);if(null===_helper2)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to use a value as either a component or helper, but it did not have a component manager or helper manager associated with it. The value was: \".concat(debugToString$1(definition)));ifHelper(expect(_helper2,\"BUG: helper must exist\"));}else if(type===opcodes.GetStrictKeyword)ifHelper(lookupBuiltInHelper(expr,resolver,meta,constants,\"component or helper\"));else{var _assertResolverInvari6=assertResolverInvariants(meta),upvars=_assertResolverInvari6.upvars,_owner3=_assertResolverInvari6.owner,_name6=unwrap$1(upvars[expr[1]]),_definition2=resolver.lookupComponent(_name6,_owner3);if(null!==_definition2)ifComponent(constants.resolvedComponent(_definition2,_name6));else{var _helper3=resolver.lookupHelper(_name6,_owner3);if(null===_helper3)throw debugAssert(!meta.isStrictMode,\"Strict mode errors should already be handled at compile time\"),new Error(\"Attempted to resolve `\".concat(_name6,\"`, which was expected to be a component or helper, but nothing was found.\"));ifHelper(constants.helper(_helper3,_name6));}}}/**\n                * {{maybeHelperOrComponent}}\n                */(resolver,constants,meta,op);case HighLevelResolutionOpcodes.OptionalComponentOrHelper:return function(resolver,constants,meta,_ref24){var _ref25=_slicedToArray(_ref24,3),expr=_ref25[1],_ref25$=_ref25[2],ifComponent=_ref25$.ifComponent,ifHelper=_ref25$.ifHelper,ifValue=_ref25$.ifValue;debugAssert(isGetFreeComponentOrHelper(expr),\"Attempted to resolve an optional component or helper with incorrect opcode\");var type=expr[0];if(type===opcodes.GetLexicalSymbol){var scopeValues=meta.scopeValues,owner=meta.owner,definition=expect(scopeValues,\"BUG: scopeValues must exist if template symbol is used\")[expr[1]];if(\"function\"!=typeof definition&&(\"object\"!=_typeof(definition)||null===definition))// The value is not an object, so it can't be a component or helper.\nreturn void ifValue(constants.value(definition));var component=constants.component(definition,expect(owner,\"BUG: expected owner when resolving component definition\"),!0);if(null!==component)return void ifComponent(component);var _helper4=constants.helper(definition,null,!0);if(null!==_helper4)return void ifHelper(_helper4);ifValue(constants.value(definition));}else if(type===opcodes.GetStrictKeyword)ifHelper(lookupBuiltInHelper(expr,resolver,meta,constants,\"value\"));else{var _assertResolverInvari7=assertResolverInvariants(meta),upvars=_assertResolverInvari7.upvars,_owner4=_assertResolverInvari7.owner,_name7=unwrap$1(upvars[expr[1]]),_definition3=resolver.lookupComponent(_name7,_owner4);if(null!==_definition3)return void ifComponent(constants.resolvedComponent(_definition3,_name7));var _helper5=resolver.lookupHelper(_name7,_owner4);null!==_helper5&&ifHelper(constants.helper(_helper5,_name7));}}(resolver,constants,meta,op);case HighLevelResolutionOpcodes.Local:{var freeVar=op[1],_name8=expect(meta.upvars,\"BUG: attempted to resolve value but no upvars found\")[freeVar];(0,op[2])(_name8,meta.moduleName);break;}case HighLevelResolutionOpcodes.TemplateLocal:{var _op3=_slicedToArray(op,3),valueIndex=_op3[1],_then=_op3[2],value=expect(meta.scopeValues,\"BUG: Attempted to get a template local, but template does not have any\")[valueIndex];_then(constants.value(value));break;}default:throw new Error(\"Unexpected high level opcode \".concat(op[0]));}}var EncoderImpl=/*#__PURE__*/function(){function EncoderImpl(heap,meta,stdlib){_classCallCheck(this,EncoderImpl);_defineProperty(this,\"labelsStack\",new StackImpl());_defineProperty(this,\"encoder\",new InstructionEncoderImpl([]));_defineProperty(this,\"errors\",[]);_defineProperty(this,\"handle\",void 0);this.heap=heap,this.meta=meta,this.stdlib=stdlib,this.handle=heap.malloc();}return _createClass(EncoderImpl,[{key:\"error\",value:function error(_error2){this.encoder.encode(Op.Primitive,0),this.errors.push(_error2);}},{key:\"commit\",value:function commit(size){var handle=this.handle;return this.heap.pushMachine(MachineOp.Return),this.heap.finishMalloc(handle,size),isPresentArray(this.errors)?{errors:this.errors,handle:handle}:handle;}},{key:\"push\",value:function push(constants,type){var heap=this.heap;if(type>TYPE_SIZE)throw new Error(\"Opcode type over 8-bits. Got \".concat(type,\".\"));var first=type|(isMachineOp(type)?MACHINE_MASK:0)|(arguments.length<=2?0:arguments.length-2)<<ARG_SHIFT;heap.pushRaw(first);for(var i=0;i<(arguments.length<=2?0:arguments.length-2);i++){var _op4=i+2<2||arguments.length<=i+2?undefined:arguments[i+2];heap.pushRaw(this.operand(constants,_op4));}}},{key:\"operand\",value:function operand(constants,_operand){if(\"number\"==typeof _operand)return _operand;if(\"object\"==_typeof(_operand)&&null!==_operand){if(Array.isArray(_operand))return encodeHandle(constants.array(_operand));switch(_operand.type){case HighLevelOperands.Label:return this.currentLabels.target(this.heap.offset,_operand.value),-1;case HighLevelOperands.IsStrictMode:return encodeHandle(constants.value(this.meta.isStrictMode));case HighLevelOperands.DebugSymbols:return encodeHandle(constants.array(this.meta.evalSymbols||EMPTY_STRING_ARRAY));case HighLevelOperands.Block:return encodeHandle(constants.value((block=_operand.value,containing=this.meta,new CompilableTemplateImpl(block[0],containing,{parameters:block[1]||EMPTY_ARRAY$4}))));case HighLevelOperands.StdLib:return expect(this.stdlib,\"attempted to encode a stdlib operand, but the encoder did not have a stdlib. Are you currently building the stdlib?\")[_operand.value];case HighLevelOperands.NonSmallInt:case HighLevelOperands.SymbolTable:case HighLevelOperands.Layout:return constants.value(_operand.value);}}var block,containing;return encodeHandle(constants.value(_operand));}},{key:\"currentLabels\",get:function get(){return expect(this.labelsStack.current,\"bug: not in a label stack\");}},{key:\"label\",value:function label(name){this.currentLabels.label(name,this.heap.offset+1);}},{key:\"startLabels\",value:function startLabels(){this.labelsStack.push(new Labels());}},{key:\"stopLabels\",value:function stopLabels(){expect(this.labelsStack.pop(),\"unbalanced push and pop labels\").patch(this.heap);}}]);}();var StdLib=/*#__PURE__*/function(){function StdLib(main,trustingGuardedAppend,cautiousGuardedAppend,trustingNonDynamicAppend,cautiousNonDynamicAppend){_classCallCheck(this,StdLib);this.main=main,this.trustingGuardedAppend=trustingGuardedAppend,this.cautiousGuardedAppend=cautiousGuardedAppend,this.trustingNonDynamicAppend=trustingNonDynamicAppend,this.cautiousNonDynamicAppend=cautiousNonDynamicAppend;}return _createClass(StdLib,[{key:\"trusting-append\",get:function get(){return this.trustingGuardedAppend;}},{key:\"cautious-append\",get:function get(){return this.cautiousGuardedAppend;}},{key:\"trusting-non-dynamic-append\",get:function get(){return this.trustingNonDynamicAppend;}},{key:\"cautious-non-dynamic-append\",get:function get(){return this.cautiousNonDynamicAppend;}},{key:\"getAppend\",value:function getAppend(trusting){return trusting?this.trustingGuardedAppend:this.cautiousGuardedAppend;}}]);}();var NamedBlocksImpl=/*#__PURE__*/function(){function NamedBlocksImpl(blocks){_classCallCheck(this,NamedBlocksImpl);_defineProperty(this,\"names\",void 0);this.blocks=blocks,this.names=blocks?Object.keys(blocks):[];}return _createClass(NamedBlocksImpl,[{key:\"get\",value:function get(name){return this.blocks&&this.blocks[name]||null;}},{key:\"has\",value:function has(name){var blocks=this.blocks;return null!==blocks&&name in blocks;}},{key:\"with\",value:function _with(name,block){var blocks=this.blocks;return new NamedBlocksImpl(blocks?assign({},blocks,_defineProperty({},name,block)):_defineProperty({},name,block));}},{key:\"hasAny\",get:function get(){return null!==this.blocks;}}]);}();var EMPTY_BLOCKS=new NamedBlocksImpl(null);function namedBlocks(blocks){if(null===blocks)return EMPTY_BLOCKS;var out=dict(),_blocks2=_slicedToArray(blocks,2),keys=_blocks2[0],values=_blocks2[1];var _iterator10=_createForOfIteratorHelper(enumerate(keys)),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var _step10$value=_slicedToArray(_step10.value,2),i=_step10$value[0],key=_step10$value[1];out[key]=unwrap$1(values[i]);}}catch(err){_iterator10.e(err);}finally{_iterator10.f();}return new NamedBlocksImpl(out);}/**\n           * Push a reference onto the stack corresponding to a statically known primitive\n           * @param value A JavaScript primitive (undefined, null, boolean, number or string)\n           */function PushPrimitiveReference(op,value){PushPrimitive(op,value),op(Op.PrimitiveReference);}/**\n           * Push an encoded representation of a JavaScript primitive on the stack\n           *\n           * @param value A JavaScript primitive (undefined, null, boolean, number or string)\n           */function PushPrimitive(op,primitive){var p=primitive;var value;\"number\"==typeof p&&(p=isSmallInt(p)?encodeImmediate(p):(debugAssert(!isSmallInt(value=p),\"Attempted to make a operand for an int that was not a small int, you should encode this as an immediate\"),{type:HighLevelOperands.NonSmallInt,value:value})),op(Op.Primitive,p);}/**\n           * Invoke a foreign function (a \"helper\") based on a statically known handle\n           *\n           * @param op The op creation function\n           * @param handle A handle\n           * @param positional An optional list of expressions to compile\n           * @param named An optional list of named arguments (name + expression) to compile\n           */function Call(op,handle,positional,named){op(MachineOp.PushFrame),SimpleArgs(op,positional,named,!1),op(Op.Helper,handle),op(MachineOp.PopFrame),op(Op.Fetch,$v0);}/**\n           * Invoke a foreign function (a \"helper\") based on a dynamically loaded definition\n           *\n           * @param op The op creation function\n           * @param positional An optional list of expressions to compile\n           * @param named An optional list of named arguments (name + expression) to compile\n           */function CallDynamic(op,positional,named,append){op(MachineOp.PushFrame),SimpleArgs(op,positional,named,!1),op(Op.Dup,$fp,1),op(Op.DynamicHelper),append?(op(Op.Fetch,$v0),append(),op(MachineOp.PopFrame),op(Op.Pop,1)):(op(MachineOp.PopFrame),op(Op.Pop,1),op(Op.Fetch,$v0));}/**\n           * Evaluate statements in the context of new dynamic scope entries. Move entries from the\n           * stack into named entries in the dynamic scope, then evaluate the statements, then pop\n           * the dynamic scope\n           *\n           * @param names a list of dynamic scope names\n           * @param block a function that returns a list of statements to evaluate\n           */function Curry(op,type,definition,positional,named){op(MachineOp.PushFrame),SimpleArgs(op,positional,named,!1),op(Op.CaptureArgs),expr(op,definition),op(Op.Curry,type,isStrictMode()),op(MachineOp.PopFrame),op(Op.Fetch,$v0);}var Compilers=/*#__PURE__*/function(){function Compilers(){_classCallCheck(this,Compilers);_defineProperty(this,\"names\",{});_defineProperty(this,\"funcs\",[]);}return _createClass(Compilers,[{key:\"add\",value:function add(name,func){this.names[name]=this.funcs.push(func)-1;}},{key:\"compile\",value:function compile(op,sexp){var name=sexp[0],index=unwrap$1(this.names[name]),func=this.funcs[index];debugAssert(!!func,\"expected an implementation for \".concat(sexp[0])),func(op,sexp);}}]);}();var EXPRESSIONS=new Compilers();function withPath(op,path){if(void 0!==path&&0!==path.length)for(var i=0;i<path.length;i++)op(Op.GetProperty,path[i]);}function expr(op,expression){Array.isArray(expression)?EXPRESSIONS.compile(op,expression):(PushPrimitive(op,expression),op(Op.PrimitiveReference));}/**\n           * Compile arguments, pushing an Arguments object onto the stack.\n           *\n           * @param args.params\n           * @param args.hash\n           * @param args.blocks\n           * @param args.atNames\n           */function SimpleArgs(op,positional,named,atNames){if(null===positional&&null===named)return void op(Op.PushEmptyArgs);var flags=CompilePositional(op,positional)<<4;atNames&&(flags|=8);var names=EMPTY_STRING_ARRAY;if(named){names=named[0];var val=named[1];for(var i=0;i<val.length;i++)expr(op,val[i]);}op(Op.PushArgs,names,EMPTY_STRING_ARRAY,flags);}/**\n           * Compile an optional list of positional arguments, which pushes each argument\n           * onto the stack and returns the number of parameters compiled\n           *\n           * @param positional an optional list of positional arguments\n           */function CompilePositional(op,positional){if(null===positional)return 0;for(var i=0;i<positional.length;i++)expr(op,positional[i]);return positional.length;}function meta$1(layout){var _layout$scope,_layout$scope2;var _layout$block=_slicedToArray(layout.block,4),symbols=_layout$block[1],upvars=_layout$block[3];return{evalSymbols:evalSymbols(layout),upvars:upvars,scopeValues:(_layout$scope=(_layout$scope2=layout.scope)===null||_layout$scope2===void 0?void 0:_layout$scope2.call(layout))!==null&&_layout$scope!==void 0?_layout$scope:null,isStrictMode:layout.isStrictMode,moduleName:layout.moduleName,owner:layout.owner,size:symbols.length};}function evalSymbols(layout){var block=layout.block,_block2=_slicedToArray(block,3),symbols=_block2[1],hasEval=_block2[2];return hasEval?symbols:null;}/**\n           * Yield to a block located at a particular symbol location.\n           *\n           * @param to the symbol containing the block to yield to\n           * @param params optional block parameters to yield to the block\n           */function YieldBlock(op,to,positional){SimpleArgs(op,positional,null,!0),op(Op.GetBlock,to),op(Op.SpreadBlock),op(Op.CompileBlock),op(Op.InvokeYield),op(Op.PopScope),op(MachineOp.PopFrame);}/**\n           * Push an (optional) yieldable block onto the stack. The yieldable block must be known\n           * statically at compile time.\n           *\n           * @param block An optional Compilable block\n           */function PushYieldableBlock(op,block){!function(op,parameters){null!==parameters?op(Op.PushSymbolTable,symbolTableOperand({parameters:parameters})):PushPrimitive(op,null);}(op,block&&block[1]),op(Op.PushBlockScope),PushCompilable(op,block);}/**\n           * Invoke a block that is known statically at compile time.\n           *\n           * @param block a Compilable block\n           */function InvokeStaticBlock(op,block){op(MachineOp.PushFrame),PushCompilable(op,block),op(Op.CompileBlock),op(MachineOp.InvokeVirtual),op(MachineOp.PopFrame);}/**\n           * Invoke a static block, preserving some number of stack entries for use in\n           * updating.\n           *\n           * @param block A compilable block\n           * @param callerCount A number of stack entries to preserve\n           */function InvokeStaticBlockWithStack(op,block,callerCount){var parameters=block[1],calleeCount=parameters.length,count=Math.min(callerCount,calleeCount);if(0!==count){if(op(MachineOp.PushFrame),count){op(Op.ChildScope);for(var i=0;i<count;i++)op(Op.Dup,$fp,callerCount-i),op(Op.SetVariable,parameters[i]);}PushCompilable(op,block),op(Op.CompileBlock),op(MachineOp.InvokeVirtual),count&&op(Op.PopScope),op(MachineOp.PopFrame);}else InvokeStaticBlock(op,block);}function PushCompilable(op,_block){var value;null===_block?PushPrimitive(op,null):op(Op.Constant,(value=_block,{type:HighLevelOperands.Block,value:value}));}function SwitchCases(op,bootstrap,matcher){// Setup the switch DSL\nvar clauses=[],count=0;// Call the callback\nmatcher(function(match,callback){clauses.push({match:match,callback:callback,label:\"CLAUSE\"+count++});}),// Emit the opcodes for the switch\nop(Op.Enter,1),bootstrap(),op(HighLevelBuilderOpcodes.StartLabels);// First, emit the jump opcodes. We don't need a jump for the last\n// opcode, since it bleeds directly into its clause.\nvar _iterator11=_createForOfIteratorHelper(clauses.slice(0,-1)),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var _clause=_step11.value;op(Op.JumpEq,labelOperand(_clause.label),_clause.match);}// Enumerate the clauses in reverse order. Earlier matches will\n// require fewer checks.\n}catch(err){_iterator11.e(err);}finally{_iterator11.f();}for(var i=clauses.length-1;i>=0;i--){var clause=unwrap$1(clauses[i]);op(HighLevelBuilderOpcodes.Label,clause.label),op(Op.Pop,1),clause.callback(),// The first match is special: it is placed directly before the END\n// label, so no additional jump is needed at the end of it.\n0!==i&&op(MachineOp.Jump,labelOperand(\"END\"));}op(HighLevelBuilderOpcodes.Label,\"END\"),op(HighLevelBuilderOpcodes.StopLabels),op(Op.Exit);}/**\n           * A convenience for pushing some arguments on the stack and\n           * running some code if the code needs to be re-executed during\n           * updating execution if some of the arguments have changed.\n           *\n           * # Initial Execution\n           *\n           * The `args` function should push zero or more arguments onto\n           * the stack and return the number of arguments pushed.\n           *\n           * The `body` function provides the instructions to execute both\n           * during initial execution and during updating execution.\n           *\n           * Internally, this function starts by pushing a new frame, so\n           * that the body can return and sets the return point ($ra) to\n           * the ENDINITIAL label.\n           *\n           * It then executes the `args` function, which adds instructions\n           * responsible for pushing the arguments for the block to the\n           * stack. These arguments will be restored to the stack before\n           * updating execution.\n           *\n           * Next, it adds the Enter opcode, which marks the current position\n           * in the DOM, and remembers the current $pc (the next instruction)\n           * as the first instruction to execute during updating execution.\n           *\n           * Next, it runs `body`, which adds the opcodes that should\n           * execute both during initial execution and during updating execution.\n           * If the `body` wishes to finish early, it should Jump to the\n           * `FINALLY` label.\n           *\n           * Next, it adds the FINALLY label, followed by:\n           *\n           * - the Exit opcode, which finalizes the marked DOM started by the\n           *   Enter opcode.\n           * - the Return opcode, which returns to the current return point\n           *   ($ra).\n           *\n           * Finally, it adds the ENDINITIAL label followed by the PopFrame\n           * instruction, which restores $fp, $sp and $ra.\n           *\n           * # Updating Execution\n           *\n           * Updating execution for this `replayable` occurs if the `body` added an\n           * assertion, via one of the `JumpIf`, `JumpUnless` or `AssertSame` opcodes.\n           *\n           * If, during updating executon, the assertion fails, the initial VM is\n           * restored, and the stored arguments are pushed onto the stack. The DOM\n           * between the starting and ending markers is cleared, and the VM's cursor\n           * is set to the area just cleared.\n           *\n           * The return point ($ra) is set to -1, the exit instruction.\n           *\n           * Finally, the $pc is set to to the instruction saved off by the\n           * Enter opcode during initial execution, and execution proceeds as\n           * usual.\n           *\n           * The only difference is that when a `Return` instruction is\n           * encountered, the program jumps to -1 rather than the END label,\n           * and the PopFrame opcode is not needed.\n           */function Replayable(op,args,body){// Start a new label frame, to give END and RETURN\n// a unique meaning.\nop(HighLevelBuilderOpcodes.StartLabels),op(MachineOp.PushFrame),// If the body invokes a block, its return will return to\n// END. Otherwise, the return in RETURN will return to END.\nop(MachineOp.ReturnTo,labelOperand(\"ENDINITIAL\"));// Push the arguments onto the stack. The args() function\n// tells us how many stack elements to retain for re-execution\n// when updating.\nvar count=args();// Start a new updating closure, remembering `count` elements\n// from the stack. Everything after this point, and before END,\n// will execute both initially and to update the block.\n// The enter and exit opcodes also track the area of the DOM\n// associated with this block. If an assertion inside the block\n// fails (for example, the test value changes from true to false\n// in an #if), the DOM is cleared and the program is re-executed,\n// restoring `count` elements to the stack and executing the\n// instructions between the enter and exit.\nop(Op.Enter,count),// Evaluate the body of the block. The body of the block may\n// return, which will jump execution to END during initial\n// execution, and exit the updating routine.\nbody(),// All execution paths in the body should run the FINALLY once\n// they are done. It is executed both during initial execution\n// and during updating execution.\nop(HighLevelBuilderOpcodes.Label,\"FINALLY\"),// Finalize the DOM.\nop(Op.Exit),// In initial execution, this is a noop: it returns to the\n// immediately following opcode. In updating execution, this\n// exits the updating routine.\nop(MachineOp.Return),// Cleanup code for the block. Runs on initial execution\n// but not on updating.\nop(HighLevelBuilderOpcodes.Label,\"ENDINITIAL\"),op(MachineOp.PopFrame),op(HighLevelBuilderOpcodes.StopLabels);}/**\n           * A specialized version of the `replayable` convenience that allows the\n           * caller to provide different code based upon whether the item at\n           * the top of the stack is true or false.\n           *\n           * As in `replayable`, the `ifTrue` and `ifFalse` code can invoke `return`.\n           *\n           * During the initial execution, a `return` will continue execution\n           * in the cleanup code, which finalizes the current DOM block and pops\n           * the current frame.\n           *\n           * During the updating execution, a `return` will exit the updating\n           * routine, as it can reuse the DOM block and is always only a single\n           * frame deep.\n           */function ReplayableIf(op,args,ifTrue,ifFalse){return Replayable(op,args,function(){// If the conditional is false, jump to the ELSE label.\nop(Op.JumpUnless,labelOperand(\"ELSE\")),// Otherwise, execute the code associated with the true branch.\nifTrue(),// We're done, so return. In the initial execution, this runs\n// the cleanup code. In the updating VM, it exits the updating\n// routine.\nop(MachineOp.Jump,labelOperand(\"FINALLY\")),op(HighLevelBuilderOpcodes.Label,\"ELSE\"),// If the conditional is false, and code associatied ith the\n// false branch was provided, execute it. If there was no code\n// associated with the false branch, jumping to the else statement\n// has no other behavior.\nvoid 0!==ifFalse&&ifFalse();});}// {{component}}\n// <Component>\n// chokepoint\nfunction InvokeComponent(op,component,_elementBlock,positional,named,_blocks){var compilable=component.compilable,capabilities=component.capabilities,handle=component.handle,elementBlock=_elementBlock?[_elementBlock,[]]:null,blocks=Array.isArray(_blocks)||null===_blocks?namedBlocks(_blocks):_blocks;compilable?(op(Op.PushComponentDefinition,handle),function(op,_ref27){var capabilities=_ref27.capabilities,layout=_ref27.layout,elementBlock=_ref27.elementBlock,positional=_ref27.positional,named=_ref27.named,blocks=_ref27.blocks;var symbolTable=layout.symbolTable;if(symbolTable.hasEval||hasCapability(capabilities,InternalComponentCapabilities.prepareArgs))return void InvokeNonStaticComponent(op,{capabilities:capabilities,elementBlock:elementBlock,positional:positional,named:named,atNames:!0,blocks:blocks,layout:layout});op(Op.Fetch,$s0),op(Op.Dup,$sp,1),op(Op.Load,$s0),op(MachineOp.PushFrame);// Setup arguments\nvar symbols=symbolTable.symbols,blockSymbols=[],argSymbols=[],argNames=[],blockNames=blocks.names;// As we push values onto the stack, we store the symbols associated  with them\n// so that we can set them on the scope later on with SetVariable and SetBlock\n// Starting with the attrs block, if it exists and is referenced in the component\nif(null!==elementBlock){var _symbol=symbols.indexOf(\"&attrs\");-1!==_symbol&&(PushYieldableBlock(op,elementBlock),blockSymbols.push(_symbol));}// Followed by the other blocks, if they exist and are referenced in the component.\n// Also store the index of the associated symbol.\nvar _iterator12=_createForOfIteratorHelper(blockNames),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var _name10=_step12.value;var _symbol4=symbols.indexOf(\"&\".concat(_name10));-1!==_symbol4&&(PushYieldableBlock(op,blocks.get(_name10)),blockSymbols.push(_symbol4));}// Next up we have arguments. If the component has the `createArgs` capability,\n// then it wants access to the arguments in JavaScript. We can't know whether\n// or not an argument is used, so we have to give access to all of them.\n}catch(err){_iterator12.e(err);}finally{_iterator12.f();}if(hasCapability(capabilities,InternalComponentCapabilities.createArgs)){// First we push positional arguments\nvar _flags=CompilePositional(op,positional)<<4;// setup the flags with the count of positionals, and to indicate that atNames\n// are used\n_flags|=8;var names=EMPTY_STRING_ARRAY;// Next, if named args exist, push them all. If they have an associated symbol\n// in the invoked component (e.g. they are used within its template), we push\n// that symbol. If not, we still push the expression as it may be used, and\n// we store the symbol as -1 (this is used later).\nif(null!==named){names=named[0];var val=named[1];for(var i=0;i<val.length;i++){var _symbol2=symbols.indexOf(unwrap$1(names[i]));expr(op,val[i]),argSymbols.push(_symbol2);}}// Finally, push the VM arguments themselves. These args won't need access\n// to blocks (they aren't accessible from userland anyways), so we push an\n// empty array instead of the actual block names.\nop(Op.PushArgs,names,EMPTY_STRING_ARRAY,_flags),// And push an extra pop operation to remove the args before we begin setting\n// variables on the local context\nargSymbols.push(-1);}else if(null!==named){// If the component does not have the `createArgs` capability, then the only\n// expressions we need to push onto the stack are those that are actually\n// referenced in the template of the invoked component (e.g. have symbols).\nvar _names2=named[0],_val=named[1];for(var _i4=0;_i4<_val.length;_i4++){var _name9=unwrap$1(_names2[_i4]),_symbol3=symbols.indexOf(_name9);-1!==_symbol3&&(expr(op,_val[_i4]),argSymbols.push(_symbol3),argNames.push(_name9));}}op(Op.BeginComponentTransaction,$s0),hasCapability(capabilities,InternalComponentCapabilities.dynamicScope)&&op(Op.PushDynamicScope),hasCapability(capabilities,InternalComponentCapabilities.createInstance)&&op(Op.CreateComponent,0|blocks.has(\"default\"),$s0),op(Op.RegisterComponentDestructor,$s0),hasCapability(capabilities,InternalComponentCapabilities.createArgs)?op(Op.GetComponentSelf,$s0):op(Op.GetComponentSelf,$s0,argNames),// Setup the new root scope for the component\nop(Op.RootScope,symbols.length+1,Object.keys(blocks).length>0?1:0),// Pop the self reference off the stack and set it to the symbol for `this`\n// in the new scope. This is why all subsequent symbols are increased by one.\nop(Op.SetVariable,0);// Going in reverse, now we pop the args/blocks off the stack, starting with\n// arguments, and assign them to their symbols in the new scope.\nvar _iterator13=_createForOfIteratorHelper(reverse(argSymbols)),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;)// for (let i = argSymbols.length - 1; i >= 0; i--) {\n//   let symbol = argSymbols[i];\n{var _symbol5=_step13.value;-1===_symbol5?// The expression was not bound to a local symbol, it was only pushed to be\n// used with VM args in the javascript side\nop(Op.Pop,1):op(Op.SetVariable,_symbol5+1);}// if any positional params exist, pop them off the stack as well\n}catch(err){_iterator13.e(err);}finally{_iterator13.f();}null!==positional&&op(Op.Pop,positional.length);// Finish up by popping off and assigning blocks\nvar _iterator14=_createForOfIteratorHelper(reverse(blockSymbols)),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var _symbol6=_step14.value;op(Op.SetBlock,_symbol6+1);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}op(Op.Constant,layoutOperand(layout)),op(Op.CompileBlock),op(MachineOp.InvokeVirtual),op(Op.DidRenderLayout,$s0),op(MachineOp.PopFrame),op(Op.PopScope),hasCapability(capabilities,InternalComponentCapabilities.dynamicScope)&&op(Op.PopDynamicScope),op(Op.CommitComponentTransaction),op(Op.Load,$s0);}(op,{capabilities:capabilities,layout:compilable,elementBlock:elementBlock,positional:positional,named:named,blocks:blocks})):(op(Op.PushComponentDefinition,handle),InvokeNonStaticComponent(op,{capabilities:capabilities,elementBlock:elementBlock,positional:positional,named:named,atNames:!0,blocks:blocks}));}function InvokeDynamicComponent(op,definition,_elementBlock,positional,named,_blocks,atNames,curried){var elementBlock=_elementBlock?[_elementBlock,[]]:null,blocks=Array.isArray(_blocks)||null===_blocks?namedBlocks(_blocks):_blocks;Replayable(op,function(){return expr(op,definition),op(Op.Dup,$sp,0),2;},function(){op(Op.JumpUnless,labelOperand(\"ELSE\")),curried?op(Op.ResolveCurriedComponent):op(Op.ResolveDynamicComponent,isStrictMode()),op(Op.PushDynamicComponentInstance),InvokeNonStaticComponent(op,{capabilities:!0,elementBlock:elementBlock,positional:positional,named:named,atNames:atNames,blocks:blocks}),op(HighLevelBuilderOpcodes.Label,\"ELSE\");});}function InvokeNonStaticComponent(op,_ref28){var capabilities=_ref28.capabilities,elementBlock=_ref28.elementBlock,positional=_ref28.positional,named=_ref28.named,atNames=_ref28.atNames,namedBlocks=_ref28.blocks,layout=_ref28.layout;var bindableBlocks=!!namedBlocks,bindableAtNames=!0===capabilities||hasCapability(capabilities,InternalComponentCapabilities.prepareArgs)||!(!named||0===named[0].length),blocks=namedBlocks.with(\"attrs\",elementBlock);op(Op.Fetch,$s0),op(Op.Dup,$sp,1),op(Op.Load,$s0),op(MachineOp.PushFrame),function(op,positional,named,blocks,atNames){var blockNames=blocks.names;var _iterator15=_createForOfIteratorHelper(blockNames),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var _name11=_step15.value;PushYieldableBlock(op,blocks.get(_name11));}}catch(err){_iterator15.e(err);}finally{_iterator15.f();}var flags=CompilePositional(op,positional)<<4;atNames&&(flags|=8),blocks&&(flags|=7);var names=EMPTY_ARRAY$4;if(named){names=named[0];var val=named[1];for(var i=0;i<val.length;i++)expr(op,val[i]);}op(Op.PushArgs,names,blockNames,flags);}(op,positional,named,blocks,atNames),op(Op.PrepareArgs,$s0),invokePreparedComponent(op,blocks.has(\"default\"),bindableBlocks,bindableAtNames,function(){layout?(op(Op.PushSymbolTable,symbolTableOperand(layout.symbolTable)),op(Op.Constant,layoutOperand(layout)),op(Op.CompileBlock)):op(Op.GetComponentLayout,$s0),op(Op.PopulateLayout,$s0);}),op(Op.Load,$s0);}function invokePreparedComponent(op,hasBlock,bindableBlocks,bindableAtNames){var populateLayout=arguments.length>4&&arguments[4]!==undefined?arguments[4]:null;op(Op.BeginComponentTransaction,$s0),op(Op.PushDynamicScope),op(Op.CreateComponent,0|hasBlock,$s0),// this has to run after createComponent to allow\n// for late-bound layouts, but a caller is free\n// to populate the layout earlier if it wants to\n// and do nothing here.\npopulateLayout&&populateLayout(),op(Op.RegisterComponentDestructor,$s0),op(Op.GetComponentSelf,$s0),op(Op.VirtualRootScope,$s0),op(Op.SetVariable,0),op(Op.SetupForEval,$s0),bindableAtNames&&op(Op.SetNamedVariables,$s0),bindableBlocks&&op(Op.SetBlocks,$s0),op(Op.Pop,1),op(Op.InvokeComponentLayout,$s0),op(Op.DidRenderLayout,$s0),op(MachineOp.PopFrame),op(Op.PopScope),op(Op.PopDynamicScope),op(Op.CommitComponentTransaction);}/**\n           * Append content to the DOM. This standard function triages content and does the\n           * right thing based upon whether it's a string, safe string, component, fragment\n           * or node.\n           *\n           * @param trusting whether to interpolate a string as raw HTML (corresponds to\n           * triple curlies)\n           */function StdAppend(op,trusting,nonDynamicAppend){SwitchCases(op,function(){return op(Op.ContentType);},function(when){when(ContentType.String,function(){trusting?(op(Op.AssertSame),op(Op.AppendHTML)):op(Op.AppendText);}),\"number\"==typeof nonDynamicAppend?(when(ContentType.Component,function(){op(Op.ResolveCurriedComponent),op(Op.PushDynamicComponentInstance),function(op){op(Op.Fetch,$s0),op(Op.Dup,$sp,1),op(Op.Load,$s0),op(MachineOp.PushFrame),op(Op.PushEmptyArgs),op(Op.PrepareArgs,$s0),invokePreparedComponent(op,!1,!1,!0,function(){op(Op.GetComponentLayout,$s0),op(Op.PopulateLayout,$s0);}),op(Op.Load,$s0);}(op);}),when(ContentType.Helper,function(){CallDynamic(op,null,null,function(){op(MachineOp.InvokeStatic,nonDynamicAppend);});})):(// when non-dynamic, we can no longer call the value (potentially because we've already called it)\n// this prevents infinite loops. We instead coerce the value, whatever it is, into the DOM.\nwhen(ContentType.Component,function(){op(Op.AppendText);}),when(ContentType.Helper,function(){op(Op.AppendText);})),when(ContentType.SafeString,function(){op(Op.AssertSame),op(Op.AppendSafeHTML);}),when(ContentType.Fragment,function(){op(Op.AssertSame),op(Op.AppendDocumentFragment);}),when(ContentType.Node,function(){op(Op.AssertSame),op(Op.AppendNode);});});}function compileStd(context){var mainHandle=build(context,function(op){return function(op){op(Op.Main,$s0),invokePreparedComponent(op,!1,!1,!0);}(op);}),trustingGuardedNonDynamicAppend=build(context,function(op){return StdAppend(op,!0,null);}),cautiousGuardedNonDynamicAppend=build(context,function(op){return StdAppend(op,!1,null);}),trustingGuardedDynamicAppend=build(context,function(op){return StdAppend(op,!0,trustingGuardedNonDynamicAppend);}),cautiousGuardedDynamicAppend=build(context,function(op){return StdAppend(op,!1,cautiousGuardedNonDynamicAppend);});return new StdLib(mainHandle,trustingGuardedDynamicAppend,cautiousGuardedDynamicAppend,trustingGuardedNonDynamicAppend,cautiousGuardedNonDynamicAppend);}EXPRESSIONS.add(opcodes.Concat,function(op,_ref29){var _ref30=_slicedToArray(_ref29,2),parts=_ref30[1];var _iterator16=_createForOfIteratorHelper(parts),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var part=_step16.value;expr(op,part);}}catch(err){_iterator16.e(err);}finally{_iterator16.f();}op(Op.Concat,parts.length);}),EXPRESSIONS.add(opcodes.Call,function(op,_ref31){var _ref32=_slicedToArray(_ref31,4),expression=_ref32[1],positional=_ref32[2],named=_ref32[3];isGetFreeHelper(expression)?op(HighLevelResolutionOpcodes.Helper,expression,function(handle){Call(op,handle,positional,named);}):(expr(op,expression),CallDynamic(op,positional,named));}),EXPRESSIONS.add(opcodes.Curry,function(op,_ref33){var _ref34=_slicedToArray(_ref33,5),expr=_ref34[1],type=_ref34[2],positional=_ref34[3],named=_ref34[4];Curry(op,type,expr,positional,named);}),EXPRESSIONS.add(opcodes.GetSymbol,function(op,_ref35){var _ref36=_slicedToArray(_ref35,3),sym=_ref36[1],path=_ref36[2];op(Op.GetVariable,sym),withPath(op,path);}),EXPRESSIONS.add(opcodes.GetLexicalSymbol,function(op,_ref37){var _ref38=_slicedToArray(_ref37,3),sym=_ref38[1],path=_ref38[2];op(HighLevelResolutionOpcodes.TemplateLocal,sym,function(handle){op(Op.ConstantReference,handle),withPath(op,path);});}),EXPRESSIONS.add(opcodes.GetStrictKeyword,function(op,expr){op(HighLevelResolutionOpcodes.Local,expr[1],function(_name){op(HighLevelResolutionOpcodes.Helper,expr,function(handle){Call(op,handle,null,null);});});}),EXPRESSIONS.add(opcodes.GetFreeAsHelperHead,function(op,expr){op(HighLevelResolutionOpcodes.Local,expr[1],function(_name){op(HighLevelResolutionOpcodes.Helper,expr,function(handle){Call(op,handle,null,null);});});}),EXPRESSIONS.add(opcodes.Undefined,function(op){return PushPrimitiveReference(op,void 0);}),EXPRESSIONS.add(opcodes.HasBlock,function(op,_ref39){var _ref40=_slicedToArray(_ref39,2),block=_ref40[1];expr(op,block),op(Op.HasBlock);}),EXPRESSIONS.add(opcodes.HasBlockParams,function(op,_ref41){var _ref42=_slicedToArray(_ref41,2),block=_ref42[1];expr(op,block),op(Op.SpreadBlock),op(Op.CompileBlock),op(Op.HasBlockParams);}),EXPRESSIONS.add(opcodes.IfInline,function(op,_ref43){var _ref44=_slicedToArray(_ref43,4),condition=_ref44[1],truthy=_ref44[2],falsy=_ref44[3];// Push in reverse order\nexpr(op,falsy),expr(op,truthy),expr(op,condition),op(Op.IfInline);}),EXPRESSIONS.add(opcodes.Not,function(op,_ref45){var _ref46=_slicedToArray(_ref45,2),value=_ref46[1];expr(op,value),op(Op.Not);}),EXPRESSIONS.add(opcodes.GetDynamicVar,function(op,_ref47){var _ref48=_slicedToArray(_ref47,2),expression=_ref48[1];expr(op,expression),op(Op.GetDynamicVar);}),EXPRESSIONS.add(opcodes.Log,function(op,_ref49){var _ref50=_slicedToArray(_ref49,2),positional=_ref50[1];op(MachineOp.PushFrame),SimpleArgs(op,positional,null,!1),op(Op.Log),op(MachineOp.PopFrame),op(Op.Fetch,$v0);});var STDLIB_META={evalSymbols:null,upvars:null,moduleName:\"stdlib\",// TODO: ??\nscopeValues:null,isStrictMode:!0,owner:null,size:0};function build(program,builder){var constants=program.constants,heap=program.heap,resolver=program.resolver,encoder=new EncoderImpl(heap,STDLIB_META);builder(function(){for(var _len7=arguments.length,op=new Array(_len7),_key8=0;_key8<_len7;_key8++){op[_key8]=arguments[_key8];}encodeOp(encoder,constants,resolver,STDLIB_META,op);});var result=encoder.commit(0);if(\"number\"!=typeof result)// This shouldn't be possible\nthrow new Error(\"Unexpected errors compiling std\");return result;}var CompileTimeCompilationContextImpl=/*#__PURE__*/_createClass(function CompileTimeCompilationContextImpl(_ref51,resolver,createOp){var constants=_ref51.constants,heap=_ref51.heap;_classCallCheck(this,CompileTimeCompilationContextImpl);_defineProperty(this,\"constants\",void 0);_defineProperty(this,\"heap\",void 0);_defineProperty(this,\"stdlib\",void 0);this.resolver=resolver,this.createOp=createOp,this.constants=constants,this.heap=heap,this.stdlib=compileStd(this);});function programCompilationContext(artifacts,resolver,createOp){return new CompileTimeCompilationContextImpl(artifacts,resolver,createOp);}function templateCompilationContext(program,meta){return{program:program,encoder:new EncoderImpl(program.heap,meta,program.stdlib),meta:meta};}var STATEMENTS=new Compilers(),INFLATE_ATTR_TABLE=[\"class\",\"id\",\"value\",\"name\",\"type\",\"style\",\"href\"],INFLATE_TAG_TABLE=[\"div\",\"span\",\"p\",\"a\"];function inflateTagName(tagName){return\"string\"==typeof tagName?tagName:INFLATE_TAG_TABLE[tagName];}function inflateAttrName(attrName){return\"string\"==typeof attrName?attrName:INFLATE_ATTR_TABLE[attrName];}function hashToArgs(hash){return null===hash?null:[hash[0].map(function(key){return\"@\".concat(key);}),hash[1]];}STATEMENTS.add(opcodes.Comment,function(op,sexp){return op(Op.Comment,sexp[1]);}),STATEMENTS.add(opcodes.CloseElement,function(op){return op(Op.CloseElement);}),STATEMENTS.add(opcodes.FlushElement,function(op){return op(Op.FlushElement);}),STATEMENTS.add(opcodes.Modifier,function(op,_ref52){var _ref53=_slicedToArray(_ref52,4),expression=_ref53[1],positional=_ref53[2],named=_ref53[3];isGetFreeModifier(expression)?op(HighLevelResolutionOpcodes.Modifier,expression,function(handle){op(MachineOp.PushFrame),SimpleArgs(op,positional,named,!1),op(Op.Modifier,handle),op(MachineOp.PopFrame);}):(expr(op,expression),op(MachineOp.PushFrame),SimpleArgs(op,positional,named,!1),op(Op.Dup,$fp,1),op(Op.DynamicModifier),op(MachineOp.PopFrame));}),STATEMENTS.add(opcodes.StaticAttr,function(op,_ref54){var _ref55=_slicedToArray(_ref54,4),name=_ref55[1],value=_ref55[2],namespace=_ref55[3];op(Op.StaticAttr,inflateAttrName(name),value,namespace!==null&&namespace!==void 0?namespace:null);}),STATEMENTS.add(opcodes.StaticComponentAttr,function(op,_ref56){var _ref57=_slicedToArray(_ref56,4),name=_ref57[1],value=_ref57[2],namespace=_ref57[3];op(Op.StaticComponentAttr,inflateAttrName(name),value,namespace!==null&&namespace!==void 0?namespace:null);}),STATEMENTS.add(opcodes.DynamicAttr,function(op,_ref58){var _ref59=_slicedToArray(_ref58,4),name=_ref59[1],value=_ref59[2],namespace=_ref59[3];expr(op,value),op(Op.DynamicAttr,inflateAttrName(name),!1,namespace!==null&&namespace!==void 0?namespace:null);}),STATEMENTS.add(opcodes.TrustingDynamicAttr,function(op,_ref60){var _ref61=_slicedToArray(_ref60,4),name=_ref61[1],value=_ref61[2],namespace=_ref61[3];expr(op,value),op(Op.DynamicAttr,inflateAttrName(name),!0,namespace!==null&&namespace!==void 0?namespace:null);}),STATEMENTS.add(opcodes.ComponentAttr,function(op,_ref62){var _ref63=_slicedToArray(_ref62,4),name=_ref63[1],value=_ref63[2],namespace=_ref63[3];expr(op,value),op(Op.ComponentAttr,inflateAttrName(name),!1,namespace!==null&&namespace!==void 0?namespace:null);}),STATEMENTS.add(opcodes.TrustingComponentAttr,function(op,_ref64){var _ref65=_slicedToArray(_ref64,4),name=_ref65[1],value=_ref65[2],namespace=_ref65[3];expr(op,value),op(Op.ComponentAttr,inflateAttrName(name),!0,namespace!==null&&namespace!==void 0?namespace:null);}),STATEMENTS.add(opcodes.OpenElement,function(op,_ref66){var _ref67=_slicedToArray(_ref66,2),tag=_ref67[1];op(Op.OpenElement,inflateTagName(tag));}),STATEMENTS.add(opcodes.OpenElementWithSplat,function(op,_ref68){var _ref69=_slicedToArray(_ref68,2),tag=_ref69[1];op(Op.PutComponentOperations),op(Op.OpenElement,inflateTagName(tag));}),STATEMENTS.add(opcodes.Component,function(op,_ref70){var _ref71=_slicedToArray(_ref70,5),expr=_ref71[1],elementBlock=_ref71[2],named=_ref71[3],blocks=_ref71[4];isGetFreeComponent(expr)?op(HighLevelResolutionOpcodes.Component,expr,function(component){InvokeComponent(op,component,elementBlock,null,named,blocks);}):// otherwise, the component name was an expression, so resolve the expression\n// and invoke it as a dynamic component\nInvokeDynamicComponent(op,expr,elementBlock,null,named,blocks,!0,!0);}),STATEMENTS.add(opcodes.Yield,function(op,_ref72){var _ref73=_slicedToArray(_ref72,3),to=_ref73[1],params=_ref73[2];return YieldBlock(op,to,params);}),STATEMENTS.add(opcodes.AttrSplat,function(op,_ref74){var _ref75=_slicedToArray(_ref74,2),to=_ref75[1];return YieldBlock(op,to,null);}),STATEMENTS.add(opcodes.Debugger,function(op,_ref76){var _ref77=_slicedToArray(_ref76,2),debugInfo=_ref77[1];return op(Op.Debugger,{type:HighLevelOperands.DebugSymbols,value:void 0},debugInfo);}),STATEMENTS.add(opcodes.Append,function(op,_ref78){var _ref79=_slicedToArray(_ref78,2),value=_ref79[1];// Special case for static values\nif(Array.isArray(value)){if(isGetFreeComponentOrHelper(value))op(HighLevelResolutionOpcodes.OptionalComponentOrHelper,value,{ifComponent:function ifComponent(component){InvokeComponent(op,component,null,null,null,null);},ifHelper:function ifHelper(handle){op(MachineOp.PushFrame),Call(op,handle,null,null),op(MachineOp.InvokeStatic,stdlibOperand(\"cautious-non-dynamic-append\")),op(MachineOp.PopFrame);},ifValue:function ifValue(handle){op(MachineOp.PushFrame),op(Op.ConstantReference,handle),op(MachineOp.InvokeStatic,stdlibOperand(\"cautious-non-dynamic-append\")),op(MachineOp.PopFrame);}});else if(value[0]===opcodes.Call){var _value3=_slicedToArray(value,4),expression=_value3[1],positional=_value3[2],named=_value3[3];isGetFreeComponentOrHelper(expression)?op(HighLevelResolutionOpcodes.ComponentOrHelper,expression,{ifComponent:function ifComponent(component){InvokeComponent(op,component,null,positional,hashToArgs(named),null);},ifHelper:function ifHelper(handle){op(MachineOp.PushFrame),Call(op,handle,positional,named),op(MachineOp.InvokeStatic,stdlibOperand(\"cautious-non-dynamic-append\")),op(MachineOp.PopFrame);}}):SwitchCases(op,function(){expr(op,expression),op(Op.DynamicContentType);},function(when){when(ContentType.Component,function(){op(Op.ResolveCurriedComponent),op(Op.PushDynamicComponentInstance),InvokeNonStaticComponent(op,{capabilities:!0,elementBlock:null,positional:positional,named:named,atNames:!1,blocks:namedBlocks(null)});}),when(ContentType.Helper,function(){CallDynamic(op,positional,named,function(){op(MachineOp.InvokeStatic,stdlibOperand(\"cautious-non-dynamic-append\"));});});});}else op(MachineOp.PushFrame),expr(op,value),op(MachineOp.InvokeStatic,stdlibOperand(\"cautious-append\")),op(MachineOp.PopFrame);}else op(Op.Text,null==value?\"\":String(value));}),STATEMENTS.add(opcodes.TrustingAppend,function(op,_ref80){var _ref81=_slicedToArray(_ref80,2),value=_ref81[1];Array.isArray(value)?(op(MachineOp.PushFrame),expr(op,value),op(MachineOp.InvokeStatic,stdlibOperand(\"trusting-append\")),op(MachineOp.PopFrame)):op(Op.Text,null==value?\"\":String(value));}),STATEMENTS.add(opcodes.Block,function(op,_ref82){var _ref83=_slicedToArray(_ref82,5),expr=_ref83[1],positional=_ref83[2],named=_ref83[3],blocks=_ref83[4];isGetFreeComponent(expr)?op(HighLevelResolutionOpcodes.Component,expr,function(component){InvokeComponent(op,component,null,positional,hashToArgs(named),blocks);}):InvokeDynamicComponent(op,expr,null,positional,named,blocks,!1,!1);}),STATEMENTS.add(opcodes.InElement,function(op,_ref84){var _ref85=_slicedToArray(_ref84,5),block=_ref85[1],guid=_ref85[2],destination=_ref85[3],insertBefore=_ref85[4];ReplayableIf(op,function(){return expr(op,guid),void 0===insertBefore?PushPrimitiveReference(op,void 0):expr(op,insertBefore),expr(op,destination),op(Op.Dup,$sp,0),4;},function(){op(Op.PushRemoteElement),InvokeStaticBlock(op,block),op(Op.PopRemoteElement);});}),STATEMENTS.add(opcodes.If,function(op,_ref86){var _ref87=_slicedToArray(_ref86,4),condition=_ref87[1],block=_ref87[2],inverse=_ref87[3];return ReplayableIf(op,function(){return expr(op,condition),op(Op.ToBoolean),1;},function(){InvokeStaticBlock(op,block);},inverse?function(){InvokeStaticBlock(op,inverse);}:void 0);}),STATEMENTS.add(opcodes.Each,function(op,_ref88){var _ref89=_slicedToArray(_ref88,5),value=_ref89[1],key=_ref89[2],block=_ref89[3],inverse=_ref89[4];return Replayable(op,function(){return key?expr(op,key):PushPrimitiveReference(op,null),expr(op,value),2;},function(){op(Op.EnterList,labelOperand(\"BODY\"),labelOperand(\"ELSE\")),op(MachineOp.PushFrame),op(Op.Dup,$fp,1),op(MachineOp.ReturnTo,labelOperand(\"ITER\")),op(HighLevelBuilderOpcodes.Label,\"ITER\"),op(Op.Iterate,labelOperand(\"BREAK\")),op(HighLevelBuilderOpcodes.Label,\"BODY\"),InvokeStaticBlockWithStack(op,block,2),op(Op.Pop,2),op(MachineOp.Jump,labelOperand(\"FINALLY\")),op(HighLevelBuilderOpcodes.Label,\"BREAK\"),op(MachineOp.PopFrame),op(Op.ExitList),op(MachineOp.Jump,labelOperand(\"FINALLY\")),op(HighLevelBuilderOpcodes.Label,\"ELSE\"),inverse&&InvokeStaticBlock(op,inverse);});}),STATEMENTS.add(opcodes.Let,function(op,_ref90){var _ref91=_slicedToArray(_ref90,3),positional=_ref91[1],block=_ref91[2];InvokeStaticBlockWithStack(op,block,CompilePositional(op,positional));}),STATEMENTS.add(opcodes.WithDynamicVars,function(op,_ref92){var _ref93=_slicedToArray(_ref92,3),named=_ref93[1],block=_ref93[2];if(named){var _named=_slicedToArray(named,2),names=_named[0],expressions=_named[1];CompilePositional(op,expressions),function(op,names,block){op(Op.PushDynamicScope),op(Op.BindDynamicScope,names),block(),op(Op.PopDynamicScope);}(op,names,function(){InvokeStaticBlock(op,block);});}else InvokeStaticBlock(op,block);}),STATEMENTS.add(opcodes.InvokeComponent,function(op,_ref94){var _ref95=_slicedToArray(_ref94,5),expr=_ref95[1],positional=_ref95[2],named=_ref95[3],blocks=_ref95[4];isGetFreeComponent(expr)?op(HighLevelResolutionOpcodes.Component,expr,function(component){InvokeComponent(op,component,null,positional,hashToArgs(named),blocks);}):InvokeDynamicComponent(op,expr,null,positional,named,blocks,!1,!1);});var CompilableTemplateImpl=/*#__PURE__*/function(){function CompilableTemplateImpl(statements,meta,// Part of CompilableTemplate\nsymbolTable){var moduleName=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"plain block\";_classCallCheck(this,CompilableTemplateImpl);_defineProperty(this,\"compiled\",null);this.statements=statements,this.meta=meta,this.symbolTable=symbolTable,this.moduleName=moduleName;}// Part of CompilableTemplate\nreturn _createClass(CompilableTemplateImpl,[{key:\"compile\",value:function compile(context){return function(compilable,context){if(null!==compilable.compiled)return compilable.compiled;compilable.compiled=-1;var statements=compilable.statements,meta=compilable.meta,result=compileStatements(statements,meta,context);return compilable.compiled=result,result;}(this,context);}}]);}();function compilable(layout,moduleName){var _layout$block2=_slicedToArray(layout.block,3),statements=_layout$block2[0],symbols=_layout$block2[1],hasEval=_layout$block2[2];return new CompilableTemplateImpl(statements,meta$1(layout),{symbols:symbols,hasEval:hasEval},moduleName);}function compileStatements(statements,meta,syntaxContext){var sCompiler=STATEMENTS,context=templateCompilationContext(syntaxContext,meta),encoder=context.encoder,_context$program=context.program,constants=_context$program.constants,resolver=_context$program.resolver;function pushOp(){for(var _len8=arguments.length,op=new Array(_len8),_key9=0;_key9<_len8;_key9++){op[_key9]=arguments[_key9];}encodeOp(encoder,constants,resolver,meta,op);}var _iterator17=_createForOfIteratorHelper(statements),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var statement=_step17.value;sCompiler.compile(pushOp,statement);}}catch(err){_iterator17.e(err);}finally{_iterator17.f();}return context.encoder.commit(meta.size);}var DEFAULT_CAPABILITIES={dynamicLayout:!0,dynamicTag:!0,prepareArgs:!0,createArgs:!0,attributeHook:!1,elementHook:!1,dynamicScope:!0,createCaller:!1,updateHook:!0,createInstance:!0,wrapped:!1,willDestroy:!1,hasSubOwner:!1},MINIMAL_CAPABILITIES={dynamicLayout:!1,dynamicTag:!1,prepareArgs:!1,createArgs:!1,attributeHook:!1,elementHook:!1,dynamicScope:!1,createCaller:!1,updateHook:!1,createInstance:!1,wrapped:!1,willDestroy:!1,hasSubOwner:!1};var WrappedBuilder=/*#__PURE__*/function(){function WrappedBuilder(layout,moduleName){_classCallCheck(this,WrappedBuilder);_defineProperty(this,\"symbolTable\",void 0);_defineProperty(this,\"compiled\",null);_defineProperty(this,\"attrsBlockNumber\",void 0);this.layout=layout,this.moduleName=moduleName;var block=layout.block,_block3=_slicedToArray(block,3),symbols=_block3[1],hasEval=_block3[2];symbols=symbols.slice();// ensure ATTRS_BLOCK is always included (only once) in the list of symbols\nvar attrsBlockIndex=symbols.indexOf(\"&attrs\");this.attrsBlockNumber=-1===attrsBlockIndex?symbols.push(\"&attrs\"):attrsBlockIndex+1,this.symbolTable={hasEval:hasEval,symbols:symbols};}return _createClass(WrappedBuilder,[{key:\"compile\",value:function compile(syntax){if(null!==this.compiled)return this.compiled;var m=meta$1(this.layout),context=templateCompilationContext(syntax,m),encoder=context.encoder,_context$program2=context.program,constants=_context$program2.constants,resolver=_context$program2.resolver;var op,layout,attrsBlockNumber;op=function op(){for(var _len9=arguments.length,op=new Array(_len9),_key10=0;_key10<_len9;_key10++){op[_key10]=arguments[_key10];}encodeOp(encoder,constants,resolver,m,op);},layout=this.layout,attrsBlockNumber=this.attrsBlockNumber,op(HighLevelBuilderOpcodes.StartLabels),function(op,register,block){op(Op.Fetch,register),block(),op(Op.Load,register);}(op,$s1,function(){op(Op.GetComponentTagName,$s0),op(Op.PrimitiveReference),op(Op.Dup,$sp,0);}),op(Op.JumpUnless,labelOperand(\"BODY\")),op(Op.Fetch,$s1),op(Op.PutComponentOperations),op(Op.OpenDynamicElement),op(Op.DidCreateElement,$s0),YieldBlock(op,attrsBlockNumber,null),op(Op.FlushElement),op(HighLevelBuilderOpcodes.Label,\"BODY\"),InvokeStaticBlock(op,[layout.block[0],[]]),op(Op.Fetch,$s1),op(Op.JumpUnless,labelOperand(\"END\")),op(Op.CloseElement),op(HighLevelBuilderOpcodes.Label,\"END\"),op(Op.Load,$s1),op(HighLevelBuilderOpcodes.StopLabels);var handle=context.encoder.commit(m.size);return\"number\"!=typeof handle||(this.compiled=handle),handle;}}]);}();var clientId=0,templateCacheCounters={cacheHit:0,cacheMiss:0};// These interfaces are for backwards compatibility, some addons use these intimate APIs\n/**\n           * Wraps a template js in a template module to change it into a factory\n           * that handles lazy parsing the template and to create per env singletons\n           * of the template.\n           */function templateFactory(_ref96){var templateId=_ref96.id,moduleName=_ref96.moduleName,block=_ref96.block,scope=_ref96.scope,isStrictMode=_ref96.isStrictMode;// TODO(template-refactors): This should be removed in the near future, as it\n// appears that id is unused. It is currently kept for backwards compat reasons.\nvar parsedBlock,id=templateId||\"client-\"+clientId++,ownerlessTemplate=null,templateCache=new WeakMap(),factory=function factory(owner){if(void 0===parsedBlock&&(parsedBlock=JSON.parse(block)),void 0===owner)return null===ownerlessTemplate?(templateCacheCounters.cacheMiss++,ownerlessTemplate=new TemplateImpl({id:id,block:parsedBlock,moduleName:moduleName,owner:null,scope:scope,isStrictMode:isStrictMode})):templateCacheCounters.cacheHit++,ownerlessTemplate;var result=templateCache.get(owner);return void 0===result?(templateCacheCounters.cacheMiss++,result=new TemplateImpl({id:id,block:parsedBlock,moduleName:moduleName,owner:owner,scope:scope,isStrictMode:isStrictMode}),templateCache.set(owner,result)):templateCacheCounters.cacheHit++,result;};// TODO: This caches JSON serialized output once in case a template is\n// compiled by multiple owners, but we haven't verified if this is actually\n// helpful. We should benchmark this in the future.\nreturn factory.__id=id,factory.__meta={moduleName:moduleName},factory;}var TemplateImpl=/*#__PURE__*/function(){function TemplateImpl(parsedLayout){_classCallCheck(this,TemplateImpl);_defineProperty(this,\"result\",\"ok\");_defineProperty(this,\"layout\",null);_defineProperty(this,\"wrappedLayout\",null);this.parsedLayout=parsedLayout;}return _createClass(TemplateImpl,[{key:\"moduleName\",get:function get(){return this.parsedLayout.moduleName;}},{key:\"id\",get:function get(){return this.parsedLayout.id;}// TODO(template-refactors): This should be removed in the near future, it is\n// only being exposed for backwards compatibility\n},{key:\"referrer\",get:function get(){return{moduleName:this.parsedLayout.moduleName,owner:this.parsedLayout.owner};}},{key:\"asLayout\",value:function asLayout(){return this.layout?this.layout:this.layout=compilable(assign({},this.parsedLayout),this.moduleName);}},{key:\"asWrappedLayout\",value:function asWrappedLayout(){return this.wrappedLayout?this.wrappedLayout:this.wrappedLayout=new WrappedBuilder(assign({},this.parsedLayout),this.moduleName);}}]);}();var glimmerOpcodeCompiler=/*#__PURE__*/Object.defineProperty({__proto__:null,CompileTimeCompilationContextImpl:CompileTimeCompilationContextImpl,DEFAULT_CAPABILITIES:DEFAULT_CAPABILITIES,EMPTY_BLOCKS:EMPTY_BLOCKS,MINIMAL_CAPABILITIES:MINIMAL_CAPABILITIES,StdLib:StdLib,WrappedBuilder:WrappedBuilder,compilable:compilable,compileStatements:compileStatements,compileStd:compileStd,debugCompiler:debugCompiler,invokeStaticBlock:InvokeStaticBlock,invokeStaticBlockWithStack:InvokeStaticBlockWithStack,meta:meta$1,programCompilationContext:programCompilationContext,templateCacheCounters:templateCacheCounters,templateCompilationContext:templateCompilationContext,templateFactory:templateFactory},Symbol.toStringTag,{value:'Module'});var emberTemplateFactoryIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,createTemplateFactory:templateFactory},Symbol.toStringTag,{value:'Module'});var RootTemplate=templateFactory(/*\n            {{component this}}\n          */{\"id\":\"tjANIXCV\",\"block\":\"[[[46,[30,0],null,null,null]],[],false,[\\\"component\\\"]]\",\"moduleName\":\"packages/@ember/-internals/glimmer/lib/templates/root.hbs\",\"isStrictMode\":true});var objectPrototype=Object.prototype;var counters;{counters={peekCalls:0,peekPrototypeWalks:0,setCalls:0,deleteCalls:0,metaCalls:0,metaInstantiated:0,matchingListenersCalls:0,observerEventsCalls:0,addToListenersCalls:0,removeFromListenersCalls:0,removeAllListenersCalls:0,listenersInherited:0,listenersFlattened:0,parentListenersUsed:0,flattenedListenersCalls:0,reopensAfterFlatten:0,readableLazyChainsCalls:0,writableLazyChainsCalls:0};}/**\n          @module ember\n          */var UNDEFINED=symbol('undefined');var ListenerKind=/*#__PURE__*/function(ListenerKind){ListenerKind[ListenerKind[\"ADD\"]=0]=\"ADD\";ListenerKind[ListenerKind[\"ONCE\"]=1]=\"ONCE\";ListenerKind[ListenerKind[\"REMOVE\"]=2]=\"REMOVE\";return ListenerKind;}(ListenerKind||{});var currentListenerVersion=1;var Meta=/*#__PURE__*/function(){// DEBUG\n/** @internal */function Meta(obj){_classCallCheck(this,Meta);/** @internal */_defineProperty(this,\"_descriptors\",void 0);/** @internal */_defineProperty(this,\"_mixins\",void 0);/** @internal */_defineProperty(this,\"_isInit\",void 0);/** @internal */_defineProperty(this,\"_lazyChains\",void 0);/** @internal */_defineProperty(this,\"_values\",void 0);/** @internal */_defineProperty(this,\"_revisions\",void 0);/** @internal */_defineProperty(this,\"source\",void 0);/** @internal */_defineProperty(this,\"proto\",void 0);/** @internal */_defineProperty(this,\"_parent\",void 0);/** @internal */_defineProperty(this,\"_listeners\",void 0);/** @internal */_defineProperty(this,\"_listenersVersion\",1);/** @internal */_defineProperty(this,\"_inheritedEnd\",-1);/** @internal */_defineProperty(this,\"_flattenedVersion\",0);{counters.metaInstantiated++;}this._parent=undefined;this._descriptors=undefined;this._mixins=undefined;this._lazyChains=undefined;this._values=undefined;this._revisions=undefined;// initial value for all flags right now is false\n// see FLAGS const for detailed list of flags used\nthis._isInit=false;// used only internally\nthis.source=obj;this.proto=obj.constructor===undefined?undefined:obj.constructor.prototype;this._listeners=undefined;}/** @internal */return _createClass(Meta,[{key:\"parent\",get:function get(){var parent=this._parent;if(parent===undefined){var _proto=getPrototypeOf(this.source);this._parent=parent=_proto===null||_proto===objectPrototype?null:meta(_proto);}return parent;}},{key:\"setInitializing\",value:function setInitializing(){this._isInit=true;}/** @internal */},{key:\"unsetInitializing\",value:function unsetInitializing(){this._isInit=false;}/** @internal */},{key:\"isInitializing\",value:function isInitializing(){return this._isInit;}/** @internal */},{key:\"isPrototypeMeta\",value:function isPrototypeMeta(obj){return this.proto===this.source&&this.source===obj;}/** @internal */},{key:\"_getOrCreateOwnMap\",value:function _getOrCreateOwnMap(key){return this[key]||(this[key]=Object.create(null));}/** @internal */},{key:\"_getOrCreateOwnSet\",value:function _getOrCreateOwnSet(key){return this[key]||(this[key]=new Set());}/** @internal */},{key:\"_findInheritedMap\",value:function _findInheritedMap(key,subkey){var pointer=this;while(pointer!==null){var _map=pointer[key];if(_map!==undefined){var value=_map.get(subkey);if(value!==undefined){return value;}}pointer=pointer.parent;}}/** @internal */},{key:\"_hasInInheritedSet\",value:function _hasInInheritedSet(key,value){var pointer=this;while(pointer!==null){var _set2=pointer[key];if(_set2!==undefined&&_set2.has(value)){return true;}pointer=pointer.parent;}return false;}/** @internal */},{key:\"valueFor\",value:function valueFor(key){var values=this._values;return values!==undefined?values[key]:undefined;}/** @internal */},{key:\"setValueFor\",value:function setValueFor(key,value){var values=this._getOrCreateOwnMap('_values');values[key]=value;}/** @internal */},{key:\"revisionFor\",value:function revisionFor(key){var revisions=this._revisions;return revisions!==undefined?revisions[key]:undefined;}/** @internal */},{key:\"setRevisionFor\",value:function setRevisionFor(key,revision){var revisions=this._getOrCreateOwnMap('_revisions');revisions[key]=revision;}/** @internal */},{key:\"writableLazyChainsFor\",value:function writableLazyChainsFor(key){{counters.writableLazyChainsCalls++;}var lazyChains=this._getOrCreateOwnMap('_lazyChains');var chains=lazyChains[key];if(chains===undefined){chains=lazyChains[key]=[];}return chains;}/** @internal */},{key:\"readableLazyChainsFor\",value:function readableLazyChainsFor(key){{counters.readableLazyChainsCalls++;}var lazyChains=this._lazyChains;if(lazyChains!==undefined){return lazyChains[key];}return undefined;}/** @internal */},{key:\"addMixin\",value:function addMixin(mixin){!!isDestroyed(this.source)&&assert$1(isDestroyed(this.source)?\"Cannot add mixins of `\".concat(toString$1(mixin),\"` on `\").concat(toString$1(this.source),\"` call addMixin after it has been destroyed.\"):'',!isDestroyed(this.source));var set=this._getOrCreateOwnSet('_mixins');set.add(mixin);}/** @internal */},{key:\"hasMixin\",value:function hasMixin(mixin){return this._hasInInheritedSet('_mixins',mixin);}/** @internal */},{key:\"forEachMixins\",value:function forEachMixins(fn){var pointer=this;var seen;while(pointer!==null){var _set3=pointer._mixins;if(_set3!==undefined){seen=seen===undefined?new Set():seen;// TODO cleanup typing here\n_set3.forEach(function(mixin){if(!seen.has(mixin)){seen.add(mixin);fn(mixin);}});}pointer=pointer.parent;}}/** @internal */},{key:\"writeDescriptors\",value:function writeDescriptors(subkey,value){!!isDestroyed(this.source)&&assert$1(isDestroyed(this.source)?\"Cannot update descriptors for `\".concat(subkey,\"` on `\").concat(toString$1(this.source),\"` after it has been destroyed.\"):'',!isDestroyed(this.source));var map=this._descriptors||(this._descriptors=new Map());map.set(subkey,value);}/** @internal */},{key:\"peekDescriptors\",value:function peekDescriptors(subkey){var possibleDesc=this._findInheritedMap('_descriptors',subkey);return possibleDesc===UNDEFINED?undefined:possibleDesc;}/** @internal */},{key:\"removeDescriptors\",value:function removeDescriptors(subkey){this.writeDescriptors(subkey,UNDEFINED);}/** @internal */},{key:\"forEachDescriptors\",value:function forEachDescriptors(fn){var pointer=this;var seen;while(pointer!==null){var _map2=pointer._descriptors;if(_map2!==undefined){seen=seen===undefined?new Set():seen;_map2.forEach(function(value,key){if(!seen.has(key)){seen.add(key);if(value!==UNDEFINED){fn(key,value);}}});}pointer=pointer.parent;}}/** @internal */},{key:\"addToListeners\",value:function addToListeners(eventName,target,method,once,sync){{counters.addToListenersCalls++;}this.pushListener(eventName,target,method,once?ListenerKind.ONCE:ListenerKind.ADD,sync);}/** @internal */},{key:\"removeFromListeners\",value:function removeFromListeners(eventName,target,method){{counters.removeFromListenersCalls++;}this.pushListener(eventName,target,method,ListenerKind.REMOVE);}},{key:\"pushListener\",value:function pushListener(event,target,method,kind){var sync=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var listeners=this.writableListeners();var i=indexOfListener(listeners,event,target,method);// remove if found listener was inherited\nif(i!==-1&&i<this._inheritedEnd){listeners.splice(i,1);this._inheritedEnd--;i=-1;}// if not found, push. Note that we must always push if a listener is not\n// found, even in the case of a function listener remove, because we may be\n// attempting to add or remove listeners _before_ flattening has occurred.\nif(i===-1){!!(this.isPrototypeMeta(this.source)&&typeof method==='function')&&assert$1('You cannot add function listeners to prototypes. Convert the listener to a string listener, or add it to the instance instead.',!(this.isPrototypeMeta(this.source)&&typeof method==='function'));!!(!this.isPrototypeMeta(this.source)&&typeof method==='function'&&kind===ListenerKind.REMOVE)&&assert$1('You attempted to remove a function listener which did not exist on the instance, which means you may have attempted to remove it before it was added.',!(!this.isPrototypeMeta(this.source)&&typeof method==='function'&&kind===ListenerKind.REMOVE));listeners.push({event:event,target:target,method:method,kind:kind,sync:sync});}else{var listener=listeners[i];!listener&&assert$1('has listener',listener);// If the listener is our own listener and we are trying to remove it, we\n// want to splice it out entirely so we don't hold onto a reference.\nif(kind===ListenerKind.REMOVE&&listener.kind!==ListenerKind.REMOVE){listeners.splice(i,1);}else{!!(listener.kind===ListenerKind.ADD&&kind===ListenerKind.ADD&&listener.sync!==sync)&&assert$1(\"You attempted to add an observer for the same method on '\".concat(event.split(':')[0],\"' twice to \").concat(target,\" as both sync and async. Observers must be either sync or async, they cannot be both. This is likely a mistake, you should either remove the code that added the observer a second time, or update it to always be sync or async. The method was \").concat(String(method),\".\"),!(listener.kind===ListenerKind.ADD&&kind===ListenerKind.ADD&&listener.sync!==sync));// update own listener\nlistener.kind=kind;listener.sync=sync;}}}},{key:\"writableListeners\",value:function writableListeners(){// Check if we need to invalidate and reflatten. We need to do this if we\n// have already flattened (flattened version is the current version) and\n// we are either writing to a prototype meta OR we have never inherited, and\n// may have cached the parent's listeners.\nif(this._flattenedVersion===currentListenerVersion&&(this.source===this.proto||this._inheritedEnd===-1)){{counters.reopensAfterFlatten++;}currentListenerVersion++;}// Inherited end has not been set, then we have never created our own\n// listeners, but may have cached the parent's\nif(this._inheritedEnd===-1){this._inheritedEnd=0;this._listeners=[];}return this._listeners;}/**\n              Flattening is based on a global revision counter. If the revision has\n              bumped it means that somewhere in a class inheritance chain something has\n              changed, so we need to reflatten everything. This can only happen if:\n               1. A meta has been flattened (listener has been called)\n              2. The meta is a prototype meta with children who have inherited its\n                 listeners\n              3. A new listener is subsequently added to the meta (e.g. via `.reopen()`)\n               This is a very rare occurrence, so while the counter is global it shouldn't\n              be updated very often in practice.\n            */},{key:\"flattenedListeners\",value:function flattenedListeners(){{counters.flattenedListenersCalls++;}if(this._flattenedVersion<currentListenerVersion){{counters.listenersFlattened++;}var parent=this.parent;if(parent!==null){// compute\nvar parentListeners=parent.flattenedListeners();if(parentListeners!==undefined){if(this._listeners===undefined){// If this instance doesn't have any of its own listeners (writableListeners\n// has never been called) then we don't need to do any flattening, return\n// the parent's listeners instead.\n{counters.parentListenersUsed++;}this._listeners=parentListeners;}else{var listeners=this._listeners;if(this._inheritedEnd>0){listeners.splice(0,this._inheritedEnd);this._inheritedEnd=0;}var _iterator18=_createForOfIteratorHelper(parentListeners),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var listener=_step18.value;var _index2=indexOfListener(listeners,listener.event,listener.target,listener.method);if(_index2===-1){{counters.listenersInherited++;}listeners.unshift(listener);this._inheritedEnd++;}}}catch(err){_iterator18.e(err);}finally{_iterator18.f();}}}}this._flattenedVersion=currentListenerVersion;}return this._listeners;}/** @internal */},{key:\"matchingListeners\",value:function matchingListeners(eventName){var listeners=this.flattenedListeners();var result;{counters.matchingListenersCalls++;}if(listeners!==undefined){var _iterator19=_createForOfIteratorHelper(listeners),_step19;try{for(_iterator19.s();!(_step19=_iterator19.n()).done;){var listener=_step19.value;// REMOVE listeners are placeholders that tell us not to\n// inherit, so they never match. Only ADD and ONCE can match.\nif(listener.event===eventName&&(listener.kind===ListenerKind.ADD||listener.kind===ListenerKind.ONCE)){if(result===undefined){// we create this array only after we've found a listener that\n// matches to avoid allocations when no matches are found.\nresult=[];}result.push(listener.target,listener.method,listener.kind===ListenerKind.ONCE);}}}catch(err){_iterator19.e(err);}finally{_iterator19.f();}}return result;}/** @internal */},{key:\"observerEvents\",value:function observerEvents(){var listeners=this.flattenedListeners();var result;{counters.observerEventsCalls++;}if(listeners!==undefined){var _iterator20=_createForOfIteratorHelper(listeners),_step20;try{for(_iterator20.s();!(_step20=_iterator20.n()).done;){var listener=_step20.value;// REMOVE listeners are placeholders that tell us not to\n// inherit, so they never match. Only ADD and ONCE can match.\nif((listener.kind===ListenerKind.ADD||listener.kind===ListenerKind.ONCE)&&listener.event.indexOf(':change')!==-1){if(result===undefined){// we create this array only after we've found a listener that\n// matches to avoid allocations when no matches are found.\nresult=[];}result.push(listener);}}}catch(err){_iterator20.e(err);}finally{_iterator20.f();}}return result;}}]);}();var getPrototypeOf=Object.getPrototypeOf;var metaStore=new WeakMap();function setMeta(obj,meta){!(obj!==null)&&assert$1('Cannot call `setMeta` on null',obj!==null);!(obj!==undefined)&&assert$1('Cannot call `setMeta` on undefined',obj!==undefined);!(_typeof(obj)==='object'||typeof obj==='function')&&assert$1(\"Cannot call `setMeta` on \".concat(_typeof(obj)),_typeof(obj)==='object'||typeof obj==='function');{counters.setCalls++;}metaStore.set(obj,meta);}function peekMeta(obj){!(obj!==null)&&assert$1('Cannot call `peekMeta` on null',obj!==null);!(obj!==undefined)&&assert$1('Cannot call `peekMeta` on undefined',obj!==undefined);!(_typeof(obj)==='object'||typeof obj==='function')&&assert$1(\"Cannot call `peekMeta` on \".concat(_typeof(obj)),_typeof(obj)==='object'||typeof obj==='function');{counters.peekCalls++;}var meta=metaStore.get(obj);if(meta!==undefined){return meta;}var pointer=getPrototypeOf(obj);while(pointer!==null){{counters.peekPrototypeWalks++;}meta=metaStore.get(pointer);if(meta!==undefined){if(meta.proto!==pointer){// The meta was a prototype meta which was not marked as initializing.\n// This can happen when a prototype chain was created manually via\n// Object.create() and the source object does not have a constructor.\nmeta.proto=pointer;}return meta;}pointer=getPrototypeOf(pointer);}return null;}/**\n            Retrieves the meta hash for an object. If `writable` is true ensures the\n            hash is writable for this object as well.\n\n            The meta object contains information about computed property descriptors as\n            well as any watched properties and other information. You generally will\n            not access this information directly but instead work with higher level\n            methods that manipulate this hash indirectly.\n\n            @method meta\n            @for Ember\n            @private\n\n            @param {Object} obj The object to retrieve meta for\n            @param {Boolean} [writable=true] Pass `false` if you do not intend to modify\n              the meta hash, allowing the method to avoid making an unnecessary copy.\n            @return {Object} the meta hash for an object\n          */var meta=function meta(obj){!(obj!==null)&&assert$1('Cannot call `meta` on null',obj!==null);!(obj!==undefined)&&assert$1('Cannot call `meta` on undefined',obj!==undefined);!(_typeof(obj)==='object'||typeof obj==='function')&&assert$1(\"Cannot call `meta` on \".concat(_typeof(obj)),_typeof(obj)==='object'||typeof obj==='function');{counters.metaCalls++;}var maybeMeta=peekMeta(obj);// remove this code, in-favor of explicit parent\nif(maybeMeta!==null&&maybeMeta.source===obj){return maybeMeta;}var newMeta=new Meta(obj);setMeta(obj,newMeta);return newMeta;};{meta._counters=counters;}function indexOfListener(listeners,event,target,method){for(var i=listeners.length-1;i>=0;i--){var listener=listeners[i];!listener&&assert$1('has listener',listener);if(listener.event===event&&listener.target===target&&listener.method===method){return i;}}return-1;}var emberinternalsMetaLibMeta=/*#__PURE__*/Object.defineProperty({__proto__:null,Meta:Meta,UNDEFINED:UNDEFINED,get counters(){return counters;},meta:meta,peekMeta:peekMeta,setMeta:setMeta},Symbol.toStringTag,{value:'Module'});var emberinternalsMetaIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Meta:Meta,UNDEFINED:UNDEFINED,get counters(){return counters;},meta:meta,peekMeta:peekMeta,setMeta:setMeta},Symbol.toStringTag,{value:'Module'});function objectAt(array,index){if(Array.isArray(array)){return array[index];}else{return array.objectAt(index);}}/////////\n// This is exported for `@tracked`, but should otherwise be avoided. Use `tagForObject`.\nvar SELF_TAG=symbol('SELF_TAG');function tagForProperty(obj,propertyKey){var addMandatorySetter=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var meta=arguments.length>3?arguments[3]:undefined;var customTagFor=getCustomTagFor(obj);if(customTagFor!==undefined){return customTagFor(obj,propertyKey,addMandatorySetter);}var tag=tagFor(obj,propertyKey,meta);if(addMandatorySetter){setupMandatorySetter(tag,obj,propertyKey);}return tag;}function tagForObject(obj){if(isObject$1(obj)){{!!isDestroyed(obj)&&assert$1(isDestroyed(obj)?\"Cannot create a new tag for `\".concat(toString$1(obj),\"` after it has been destroyed.\"):'',!isDestroyed(obj));}return tagFor(obj,SELF_TAG);}return CONSTANT_TAG;}function markObjectAsDirty(obj,propertyKey){dirtyTagFor(obj,propertyKey);dirtyTagFor(obj,SELF_TAG);}var CHAIN_PASS_THROUGH=new WeakSet();function finishLazyChains(meta,key,value){var lazyTags=meta.readableLazyChainsFor(key);if(lazyTags===undefined){return;}if(isObject$1(value)){var _iterator21=_createForOfIteratorHelper(lazyTags),_step21;try{for(_iterator21.s();!(_step21=_iterator21.n()).done;){var _step21$value=_slicedToArray(_step21.value,2),tag=_step21$value[0],deps=_step21$value[1];UPDATE_TAG(tag,getChainTagsForKey(value,deps,tagMetaFor(value),peekMeta(value)));}}catch(err){_iterator21.e(err);}finally{_iterator21.f();}}lazyTags.length=0;}function getChainTagsForKeys(obj,keys,tagMeta,meta){var tags=[];var _iterator22=_createForOfIteratorHelper(keys),_step22;try{for(_iterator22.s();!(_step22=_iterator22.n()).done;){var key=_step22.value;getChainTags(tags,obj,key,tagMeta,meta);}}catch(err){_iterator22.e(err);}finally{_iterator22.f();}return _combine(tags);}function getChainTagsForKey(obj,key,tagMeta,meta){return _combine(getChainTags([],obj,key,tagMeta,meta));}function getChainTags(chainTags,obj,path,tagMeta,meta$1){var current=obj;var currentTagMeta=tagMeta;var currentMeta=meta$1;var pathLength=path.length;var segmentEnd=-1;// prevent closures\nvar segment,descriptor;// eslint-disable-next-line no-constant-condition\nwhile(true){var lastSegmentEnd=segmentEnd+1;segmentEnd=path.indexOf('.',lastSegmentEnd);if(segmentEnd===-1){segmentEnd=pathLength;}segment=path.slice(lastSegmentEnd,segmentEnd);// If the segment is an @each, we can process it and then break\nif(segment==='@each'&&segmentEnd!==pathLength){lastSegmentEnd=segmentEnd+1;segmentEnd=path.indexOf('.',lastSegmentEnd);var arrLength=current.length;if(typeof arrLength!=='number'||// TODO: should the second test be `isEmberArray` instead?\n!(Array.isArray(current)||'objectAt'in current)){// If the current object isn't an array, there's nothing else to do,\n// we don't watch individual properties. Break out of the loop.\nbreak;}else if(arrLength===0){// Fast path for empty arrays\nchainTags.push(tagForProperty(current,'[]'));break;}if(segmentEnd===-1){segment=path.slice(lastSegmentEnd);}else{// Deprecated, remove once we turn the deprecation into an assertion\nsegment=path.slice(lastSegmentEnd,segmentEnd);}// Push the tags for each item's property\nfor(var i=0;i<arrLength;i++){var item=objectAt(current,i);if(item){!(_typeof(item)==='object')&&assert$1(\"When using @each to observe the array `\".concat(current.toString(),\"`, the items in the array must be objects\"),_typeof(item)==='object');chainTags.push(tagForProperty(item,segment,true));currentMeta=peekMeta(item);descriptor=currentMeta!==null?currentMeta.peekDescriptors(segment):undefined;// If the key is an alias, we need to bootstrap it\nif(descriptor!==undefined&&typeof descriptor.altKey==='string'){item[segment];}}}// Push the tag for the array length itself\nchainTags.push(tagForProperty(current,'[]',true,currentTagMeta));break;}var propertyTag=tagForProperty(current,segment,true,currentTagMeta);descriptor=currentMeta!==null?currentMeta.peekDescriptors(segment):undefined;chainTags.push(propertyTag);// If we're at the end of the path, processing the last segment, and it's\n// not an alias, we should _not_ get the last value, since we already have\n// its tag. There's no reason to access it and do more work.\nif(segmentEnd===pathLength){// If the key was an alias, we should always get the next value in order to\n// bootstrap the alias. This is because aliases, unlike other CPs, should\n// always be in sync with the aliased value.\nif(CHAIN_PASS_THROUGH.has(descriptor)){current[segment];}break;}if(descriptor===undefined){// If the descriptor is undefined, then its a normal property, so we should\n// lookup the value to chain off of like normal.\nif(!(segment in current)&&typeof current.unknownProperty==='function'){current=current.unknownProperty(segment);}else{current=current[segment];}}else if(CHAIN_PASS_THROUGH.has(descriptor)){current=current[segment];}else{// If the descriptor is defined, then its a normal CP (not an alias, which\n// would have been handled earlier). We get the last revision to check if\n// the CP is still valid, and if so we use the cached value. If not, then\n// we create a lazy chain lookup, and the next time the CP is calculated,\n// it will update that lazy chain.\nvar instanceMeta=currentMeta.source===current?currentMeta:meta(current);var lastRevision=instanceMeta.revisionFor(segment);if(lastRevision!==undefined&&validateTag(propertyTag,lastRevision)){current=instanceMeta.valueFor(segment);}else{// use metaFor here to ensure we have the meta for the instance\nvar lazyChains=instanceMeta.writableLazyChainsFor(segment);var rest=path.substring(segmentEnd+1);var placeholderTag=createUpdatableTag();lazyChains.push([placeholderTag,rest]);chainTags.push(placeholderTag);break;}}if(!isObject$1(current)){// we've hit the end of the chain for now, break out\nbreak;}currentTagMeta=tagMetaFor(current);currentMeta=peekMeta(current);}return chainTags;}// Same as built-in MethodDecorator but with more arguments\nfunction isElementDescriptor(args){var _args5=_slicedToArray(args,3),maybeTarget=_args5[0],maybeKey=_args5[1],maybeDesc=_args5[2];return(// Ensure we have the right number of args\nargs.length===3&&(// Make sure the target is a class or object (prototype)\ntypeof maybeTarget==='function'||_typeof(maybeTarget)==='object'&&maybeTarget!==null)&&// Make sure the key is a string\ntypeof maybeKey==='string'&&(// Make sure the descriptor is the right shape\n_typeof(maybeDesc)==='object'&&maybeDesc!==null||maybeDesc===undefined));}function nativeDescDecorator(propertyDesc){var decorator=function decorator(){return propertyDesc;};setClassicDecorator(decorator);return decorator;}/**\n            Objects of this type can implement an interface to respond to requests to\n            get and set. The default implementation handles simple properties.\n\n            @class Descriptor\n            @private\n          */var ComputedDescriptor=/*#__PURE__*/function(){function ComputedDescriptor(){_classCallCheck(this,ComputedDescriptor);_defineProperty(this,\"enumerable\",true);_defineProperty(this,\"configurable\",true);_defineProperty(this,\"_dependentKeys\",undefined);_defineProperty(this,\"_meta\",undefined);}return _createClass(ComputedDescriptor,[{key:\"setup\",value:function setup(_obj,keyName,_propertyDesc,meta){meta.writeDescriptors(keyName,this);}},{key:\"teardown\",value:function teardown(_obj,keyName,meta){meta.removeDescriptors(keyName);}}]);}();var COMPUTED_GETTERS;{COMPUTED_GETTERS=new WeakSet();}function DESCRIPTOR_GETTER_FUNCTION(name,descriptor){function getter(){return descriptor.get(this,name);}{COMPUTED_GETTERS.add(getter);}return getter;}function DESCRIPTOR_SETTER_FUNCTION(name,descriptor){var set=function CPSETTER_FUNCTION(value){return descriptor.set(this,name,value);};COMPUTED_SETTERS.add(set);return set;}var COMPUTED_SETTERS=new WeakSet();function makeComputedDecorator(desc,DecoratorClass){var decorator=function COMPUTED_DECORATOR(target,key,propertyDesc,maybeMeta,isClassicDecorator){!(isClassicDecorator||!propertyDesc||!propertyDesc.get||!COMPUTED_GETTERS.has(propertyDesc.get))&&assert$1(\"Only one computed property decorator can be applied to a class field or accessor, but '\".concat(key,\"' was decorated twice. You may have added the decorator to both a getter and setter, which is unnecessary.\"),isClassicDecorator||!propertyDesc||!propertyDesc.get||!COMPUTED_GETTERS.has(propertyDesc.get));var meta$1=arguments.length===3?meta(target):maybeMeta;desc.setup(target,key,propertyDesc,meta$1);var computedDesc={enumerable:desc.enumerable,configurable:desc.configurable,get:DESCRIPTOR_GETTER_FUNCTION(key,desc),set:DESCRIPTOR_SETTER_FUNCTION(key,desc)};return computedDesc;};setClassicDecorator(decorator,desc);Object.setPrototypeOf(decorator,DecoratorClass.prototype);return decorator;}/////////////\nvar DECORATOR_DESCRIPTOR_MAP=new WeakMap();/**\n            Returns the CP descriptor associated with `obj` and `keyName`, if any.\n\n            @method descriptorForProperty\n            @param {Object} obj the object to check\n            @param {String} keyName the key to check\n            @return {Descriptor}\n            @private\n          */function descriptorForProperty(obj,keyName,_meta){!(obj!==null)&&assert$1('Cannot call `descriptorForProperty` on null',obj!==null);!(obj!==undefined)&&assert$1('Cannot call `descriptorForProperty` on undefined',obj!==undefined);!(_typeof(obj)==='object'||typeof obj==='function')&&assert$1(\"Cannot call `descriptorForProperty` on \".concat(_typeof(obj)),_typeof(obj)==='object'||typeof obj==='function');var meta=_meta===undefined?peekMeta(obj):_meta;if(meta!==null){return meta.peekDescriptors(keyName);}}function descriptorForDecorator(dec){return DECORATOR_DESCRIPTOR_MAP.get(dec);}/**\n            Check whether a value is a decorator\n\n            @method isClassicDecorator\n            @param {any} possibleDesc the value to check\n            @return {boolean}\n            @private\n          */function isClassicDecorator(dec){return typeof dec==='function'&&DECORATOR_DESCRIPTOR_MAP.has(dec);}/**\n            Set a value as a decorator\n\n            @method setClassicDecorator\n            @param {function} decorator the value to mark as a decorator\n            @private\n          */function setClassicDecorator(dec){var value=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;DECORATOR_DESCRIPTOR_MAP.set(dec,value);}/**\n          @module @ember/object\n          */var END_WITH_EACH_REGEX=/\\.@each$/;/**\n            Expands `pattern`, invoking `callback` for each expansion.\n\n            The only pattern supported is brace-expansion, anything else will be passed\n            once to `callback` directly.\n\n            Example\n\n            ```js\n            import { expandProperties } from '@ember/object/computed';\n\n            function echo(arg){ console.log(arg); }\n\n            expandProperties('foo.bar', echo);              //=> 'foo.bar'\n            expandProperties('{foo,bar}', echo);            //=> 'foo', 'bar'\n            expandProperties('foo.{bar,baz}', echo);        //=> 'foo.bar', 'foo.baz'\n            expandProperties('{foo,bar}.baz', echo);        //=> 'foo.baz', 'bar.baz'\n            expandProperties('foo.{bar,baz}.[]', echo)      //=> 'foo.bar.[]', 'foo.baz.[]'\n            expandProperties('{foo,bar}.{spam,eggs}', echo) //=> 'foo.spam', 'foo.eggs', 'bar.spam', 'bar.eggs'\n            expandProperties('{foo}.bar.{baz}')             //=> 'foo.bar.baz'\n            ```\n\n            @method expandProperties\n            @static\n            @for @ember/object/computed\n            @public\n            @param {String} pattern The property pattern to expand.\n            @param {Function} callback The callback to invoke.  It is invoked once per\n            expansion, and is passed the expansion.\n          */function expandProperties(pattern,callback){!(typeof pattern==='string')&&assert$1(\"A computed property key must be a string, you passed \".concat(_typeof(pattern),\" \").concat(pattern),typeof pattern==='string');!(pattern.indexOf(' ')===-1)&&assert$1('Brace expanded properties cannot contain spaces, e.g. \"user.{firstName, lastName}\" should be \"user.{firstName,lastName}\"',pattern.indexOf(' ')===-1);// regex to look for double open, double close, or unclosed braces\n!(pattern.match(/\\{[^}{]*\\{|\\}[^}{]*\\}|\\{[^}]*$/g)===null)&&assert$1(\"Brace expanded properties have to be balanced and cannot be nested, pattern: \".concat(pattern),pattern.match(/\\{[^}{]*\\{|\\}[^}{]*\\}|\\{[^}]*$/g)===null);var start=pattern.indexOf('{');if(start<0){callback(pattern.replace(END_WITH_EACH_REGEX,'.[]'));}else{dive('',pattern,start,callback);}}function dive(prefix,pattern,start,callback){var end=pattern.indexOf('}'),i=0,newStart,arrayLength;var tempArr=pattern.substring(start+1,end).split(',');var after=pattern.substring(end+1);prefix=prefix+pattern.substring(0,start);arrayLength=tempArr.length;while(i<arrayLength){newStart=after.indexOf('{');if(newStart<0){callback((prefix+tempArr[i++]+after).replace(END_WITH_EACH_REGEX,'.[]'));}else{dive(prefix+tempArr[i++],after,newStart,callback);}}}var AFTER_OBSERVERS=':change';function changeEvent(keyName){return keyName+AFTER_OBSERVERS;}/**\n          @module @ember/object\n          *//*\n            The event system uses a series of nested hashes to store listeners on an\n            object. When a listener is registered, or when an event arrives, these\n            hashes are consulted to determine which target and action pair to invoke.\n\n            The hashes are stored in the object's meta hash, and look like this:\n\n                // Object's meta hash\n                {\n                  listeners: {       // variable name: `listenerSet`\n                    \"foo:change\": [ // variable name: `actions`\n                      target, method, once\n                    ]\n                  }\n                }\n\n          *//**\n            Add an event listener\n\n            @method addListener\n            @static\n            @for @ember/object/events\n            @param obj\n            @param {String} eventName\n            @param {Object|Function} target A target object or a function\n            @param {Function|String} method A function or the name of a function to be called on `target`\n            @param {Boolean} once A flag whether a function should only be called once\n            @public\n          */function addListener(obj,eventName,target,method,once){var sync=arguments.length>5&&arguments[5]!==undefined?arguments[5]:true;!(Boolean(obj)&&Boolean(eventName))&&assert$1('You must pass at least an object and event name to addListener',Boolean(obj)&&Boolean(eventName));if(!method&&'function'===typeof target){method=target;target=null;}meta(obj).addToListeners(eventName,target,method,once===true,sync);}/**\n            Remove an event listener\n\n            Arguments should match those passed to `addListener`.\n\n            @method removeListener\n            @static\n            @for @ember/object/events\n            @param obj\n            @param {String} eventName\n            @param {Object|Function} target A target object or a function\n            @param {Function|String} method A function or the name of a function to be called on `target`\n            @public\n          */function removeListener(obj,eventName,targetOrFunction,functionOrName){!(Boolean(obj)&&Boolean(eventName)&&(typeof targetOrFunction==='function'||_typeof(targetOrFunction)==='object'&&Boolean(functionOrName)))&&assert$1('You must pass at least an object, event name, and method or target and method/method name to removeListener',Boolean(obj)&&Boolean(eventName)&&(typeof targetOrFunction==='function'||_typeof(targetOrFunction)==='object'&&Boolean(functionOrName)));var target,method;if(_typeof(targetOrFunction)==='object'){target=targetOrFunction;method=functionOrName;}else{target=null;method=targetOrFunction;}var m=meta(obj);m.removeFromListeners(eventName,target,method);}/**\n            Send an event. The execution of suspended listeners\n            is skipped, and once listeners are removed. A listener without\n            a target is executed on the passed object. If an array of actions\n            is not passed, the actions stored on the passed object are invoked.\n\n            @method sendEvent\n            @static\n            @for @ember/object/events\n            @param obj\n            @param {String} eventName\n            @param {Array} params Optional parameters for each listener.\n            @return {Boolean} if the event was delivered to one or more actions\n            @public\n          */function sendEvent(obj,eventName,params,actions,_meta){if(actions===undefined){var _meta2=_meta===undefined?peekMeta(obj):_meta;actions=_meta2!==null?_meta2.matchingListeners(eventName):undefined;}if(actions===undefined||actions.length===0){return false;}for(var i=actions.length-3;i>=0;i-=3){// looping in reverse for once listeners\nvar target=actions[i];var method=actions[i+1];var _once2=actions[i+2];if(!method){continue;}if(_once2){removeListener(obj,eventName,target,method);}if(!target){target=obj;}var type=_typeof(method);if(type==='string'||type==='symbol'){method=target[method];}method.apply(target,params);}return true;}/**\n            @public\n            @method hasListeners\n            @static\n            @for @ember/object/events\n            @param obj\n            @param {String} eventName\n            @return {Boolean} if `obj` has listeners for event `eventName`\n          */function hasListeners(obj,eventName){var meta=peekMeta(obj);if(meta===null){return false;}var matched=meta.matchingListeners(eventName);return matched!==undefined&&matched.length>0;}/**\n            Define a property as a function that should be executed when\n            a specified event or events are triggered.\n\n            ``` javascript\n            import EmberObject from '@ember/object';\n            import { on } from '@ember/object/evented';\n            import { sendEvent } from '@ember/object/events';\n\n            let Job = EmberObject.extend({\n              logCompleted: on('completed', function() {\n                console.log('Job completed!');\n              })\n            });\n\n            let job = Job.create();\n\n            sendEvent(job, 'completed'); // Logs 'Job completed!'\n           ```\n\n            @method on\n            @static\n            @for @ember/object/evented\n            @param {String} eventNames*\n            @param {Function} func\n            @return {Function} the listener function, passed as last argument to on(...)\n            @public\n          */function on$3(){for(var _len10=arguments.length,args=new Array(_len10),_key11=0;_key11<_len10;_key11++){args[_key11]=arguments[_key11];}var func=args.pop();var events=args;!(typeof func==='function')&&assert$1('on expects function as last argument',typeof func==='function');!(events.length>0&&events.every(function(p){return typeof p==='string'&&p.length>0;}))&&assert$1('on called without valid event names',events.length>0&&events.every(function(p){return typeof p==='string'&&p.length>0;}));setListeners(func,events);return func;}var SYNC_DEFAULT=!ENV._DEFAULT_ASYNC_OBSERVERS;var SYNC_OBSERVERS=new Map();var ASYNC_OBSERVERS=new Map();/**\n          @module @ember/object\n          *//**\n            @method addObserver\n            @static\n            @for @ember/object/observers\n            @param obj\n            @param {String} path\n            @param {Object|Function} target\n            @param {Function|String} [method]\n            @public\n          */function _addObserver(obj,path,target,method){var sync=arguments.length>4&&arguments[4]!==undefined?arguments[4]:SYNC_DEFAULT;var eventName=changeEvent(path);addListener(obj,eventName,target,method,false,sync);var meta=peekMeta(obj);if(meta===null||!(meta.isPrototypeMeta(obj)||meta.isInitializing())){activateObserver(obj,eventName,sync);}}/**\n            @method removeObserver\n            @static\n            @for @ember/object/observers\n            @param obj\n            @param {String} path\n            @param {Object|Function} target\n            @param {Function|String} [method]\n            @public\n          */function _removeObserver(obj,path,target,method){var sync=arguments.length>4&&arguments[4]!==undefined?arguments[4]:SYNC_DEFAULT;var eventName=changeEvent(path);var meta=peekMeta(obj);if(meta===null||!(meta.isPrototypeMeta(obj)||meta.isInitializing())){deactivateObserver(obj,eventName,sync);}removeListener(obj,eventName,target,method);}function getOrCreateActiveObserversFor(target,sync){var observerMap=sync===true?SYNC_OBSERVERS:ASYNC_OBSERVERS;if(!observerMap.has(target)){observerMap.set(target,new Map());registerDestructor$1(target,function(){return destroyObservers(target);},true);}return observerMap.get(target);}function activateObserver(target,eventName){var sync=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var activeObservers=getOrCreateActiveObserversFor(target,sync);if(activeObservers.has(eventName)){activeObservers.get(eventName).count++;}else{var path=eventName.substring(0,eventName.lastIndexOf(':'));var tag=getChainTagsForKey(target,path,tagMetaFor(target),peekMeta(target));activeObservers.set(eventName,{count:1,path:path,tag:tag,lastRevision:valueForTag(tag),suspended:false});}}var DEACTIVATE_SUSPENDED=false;var SCHEDULED_DEACTIVATE=[];function deactivateObserver(target,eventName){var sync=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(DEACTIVATE_SUSPENDED===true){SCHEDULED_DEACTIVATE.push([target,eventName,sync]);return;}var observerMap=sync===true?SYNC_OBSERVERS:ASYNC_OBSERVERS;var activeObservers=observerMap.get(target);if(activeObservers!==undefined){var _observer=activeObservers.get(eventName);_observer.count--;if(_observer.count===0){activeObservers.delete(eventName);if(activeObservers.size===0){observerMap.delete(target);}}}}function suspendedObserverDeactivation(){DEACTIVATE_SUSPENDED=true;}function resumeObserverDeactivation(){DEACTIVATE_SUSPENDED=false;var _iterator23=_createForOfIteratorHelper(SCHEDULED_DEACTIVATE),_step23;try{for(_iterator23.s();!(_step23=_iterator23.n()).done;){var _step23$value=_slicedToArray(_step23.value,3),target=_step23$value[0],eventName=_step23$value[1],sync=_step23$value[2];deactivateObserver(target,eventName,sync);}}catch(err){_iterator23.e(err);}finally{_iterator23.f();}SCHEDULED_DEACTIVATE=[];}/**\n           * Primarily used for cases where we are redefining a class, e.g. mixins/reopen\n           * being applied later. Revalidates all the observers, resetting their tags.\n           *\n           * @private\n           * @param target\n           */function revalidateObservers(target){if(ASYNC_OBSERVERS.has(target)){ASYNC_OBSERVERS.get(target).forEach(function(observer){observer.tag=getChainTagsForKey(target,observer.path,tagMetaFor(target),peekMeta(target));observer.lastRevision=valueForTag(observer.tag);});}if(SYNC_OBSERVERS.has(target)){SYNC_OBSERVERS.get(target).forEach(function(observer){observer.tag=getChainTagsForKey(target,observer.path,tagMetaFor(target),peekMeta(target));observer.lastRevision=valueForTag(observer.tag);});}}var lastKnownRevision=0;function flushAsyncObservers(_schedule){var currentRevision=valueForTag(CURRENT_TAG);if(lastKnownRevision===currentRevision){return;}lastKnownRevision=currentRevision;ASYNC_OBSERVERS.forEach(function(activeObservers,target){var meta=peekMeta(target);activeObservers.forEach(function(observer,eventName){if(!validateTag(observer.tag,observer.lastRevision)){var sendObserver=function sendObserver(){try{sendEvent(target,eventName,[target,observer.path],undefined,meta);}finally{observer.tag=getChainTagsForKey(target,observer.path,tagMetaFor(target),peekMeta(target));observer.lastRevision=valueForTag(observer.tag);}};if(_schedule){_schedule('actions',sendObserver);}else{sendObserver();}}});});}function flushSyncObservers(){// When flushing synchronous observers, we know that something has changed (we\n// only do this during a notifyPropertyChange), so there's no reason to check\n// a global revision.\nSYNC_OBSERVERS.forEach(function(activeObservers,target){var meta=peekMeta(target);activeObservers.forEach(function(observer,eventName){if(!observer.suspended&&!validateTag(observer.tag,observer.lastRevision)){try{observer.suspended=true;sendEvent(target,eventName,[target,observer.path],undefined,meta);}finally{observer.tag=getChainTagsForKey(target,observer.path,tagMetaFor(target),peekMeta(target));observer.lastRevision=valueForTag(observer.tag);observer.suspended=false;}}});});}function setObserverSuspended(target,property,suspended){var activeObservers=SYNC_OBSERVERS.get(target);if(!activeObservers){return;}var observer=activeObservers.get(changeEvent(property));if(observer){observer.suspended=suspended;}}function destroyObservers(target){if(SYNC_OBSERVERS.size>0)SYNC_OBSERVERS.delete(target);if(ASYNC_OBSERVERS.size>0)ASYNC_OBSERVERS.delete(target);}/**\n           @module ember\n           @private\n           */var PROPERTY_DID_CHANGE=Symbol('PROPERTY_DID_CHANGE');function hasPropertyDidChange(obj){return obj!=null&&_typeof(obj)==='object'&&typeof obj[PROPERTY_DID_CHANGE]==='function';}var deferred$1=0;/**\n            This function is called just after an object property has changed.\n            It will notify any observers and clear caches among other things.\n\n            Normally you will not need to call this method directly but if for some\n            reason you can't directly watch a property you can invoke this method\n            manually.\n\n            @method notifyPropertyChange\n            @for @ember/object\n            @param {Object} obj The object with the property that will change\n            @param {String} keyName The property key (or path) that will change.\n            @param {Meta} [_meta] The objects meta.\n            @param {unknown} [value] The new value to set for the property\n            @return {void}\n            @since 3.1.0\n            @public\n          */function _notifyPropertyChange(obj,keyName,_meta,value){var meta=_meta===undefined?peekMeta(obj):_meta;if(meta!==null&&(meta.isInitializing()||meta.isPrototypeMeta(obj))){return;}markObjectAsDirty(obj,keyName);if(deferred$1<=0){flushSyncObservers();}if(PROPERTY_DID_CHANGE in obj){// It's redundant to do this here, but we don't want to check above so we can avoid an extra function call in prod.\n!hasPropertyDidChange(obj)&&assert$1('property did change hook is invalid',hasPropertyDidChange(obj));// we need to check the arguments length here; there's a check in Component's `PROPERTY_DID_CHANGE`\n// that checks its arguments length, so we have to explicitly not call this with `value`\n// if it is not passed to `notifyPropertyChange`\nif(arguments.length===4){obj[PROPERTY_DID_CHANGE](keyName,value);}else{obj[PROPERTY_DID_CHANGE](keyName);}}}/**\n            @method beginPropertyChanges\n            @chainable\n            @private\n          */function _beginPropertyChanges(){deferred$1++;suspendedObserverDeactivation();}/**\n            @method endPropertyChanges\n            @private\n          */function _endPropertyChanges(){deferred$1--;if(deferred$1<=0){flushSyncObservers();resumeObserverDeactivation();}}/**\n            Make a series of property changes together in an\n            exception-safe way.\n\n            ```javascript\n            Ember.changeProperties(function() {\n              obj1.set('foo', mayBlowUpWhenSet);\n              obj2.set('bar', baz);\n            });\n            ```\n\n            @method changeProperties\n            @param {Function} callback\n            @private\n          */function changeProperties(callback){_beginPropertyChanges();try{callback();}finally{_endPropertyChanges();}}/**\n          @module @ember/object\n          */var DEEP_EACH_REGEX=/\\.@each\\.[^.]+\\./;function noop$2(){}/**\n            `@computed` is a decorator that turns a JavaScript getter and setter into a\n            computed property, which is a _cached, trackable value_. By default the getter\n            will only be called once and the result will be cached. You can specify\n            various properties that your computed property depends on. This will force the\n            cached result to be cleared if the dependencies are modified, and lazily recomputed the next time something asks for it.\n\n            In the following example we decorate a getter - `fullName` -  by calling\n            `computed` with the property dependencies (`firstName` and `lastName`) as\n            arguments. The `fullName` getter will be called once (regardless of how many\n            times it is accessed) as long as its dependencies do not change. Once\n            `firstName` or `lastName` are updated any future calls to `fullName` will\n            incorporate the new values, and any watchers of the value such as templates\n            will be updated:\n\n            ```javascript\n            import { computed, set } from '@ember/object';\n\n            class Person {\n              constructor(firstName, lastName) {\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n\n              @computed('firstName', 'lastName')\n              get fullName() {\n                return `${this.firstName} ${this.lastName}`;\n              }\n            });\n\n            let tom = new Person('Tom', 'Dale');\n\n            tom.fullName; // 'Tom Dale'\n            ```\n\n            You can also provide a setter, which will be used when updating the computed\n            property. Ember's `set` function must be used to update the property\n            since it will also notify observers of the property:\n\n            ```javascript\n            import { computed, set } from '@ember/object';\n\n            class Person {\n              constructor(firstName, lastName) {\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n\n              @computed('firstName', 'lastName')\n              get fullName() {\n                return `${this.firstName} ${this.lastName}`;\n              }\n\n              set fullName(value) {\n                let [firstName, lastName] = value.split(' ');\n\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n            });\n\n            let person = new Person();\n\n            set(person, 'fullName', 'Peter Wagenet');\n            person.firstName; // 'Peter'\n            person.lastName;  // 'Wagenet'\n            ```\n\n            You can also pass a getter function or object with `get` and `set` functions\n            as the last argument to the computed decorator. This allows you to define\n            computed property _macros_:\n\n            ```js\n            import { computed } from '@ember/object';\n\n            function join(...keys) {\n              return computed(...keys, function() {\n                return keys.map(key => this[key]).join(' ');\n              });\n            }\n\n            class Person {\n              @join('firstName', 'lastName')\n              fullName;\n            }\n            ```\n\n            Note that when defined this way, getters and setters receive the _key_ of the\n            property they are decorating as the first argument. Setters receive the value\n            they are setting to as the second argument instead. Additionally, setters must\n            _return_ the value that should be cached:\n\n            ```javascript\n            import { computed, set } from '@ember/object';\n\n            function fullNameMacro(firstNameKey, lastNameKey) {\n              return computed(firstNameKey, lastNameKey, {\n                get() {\n                  return `${this[firstNameKey]} ${this[lastNameKey]}`;\n                }\n\n                set(key, value) {\n                  let [firstName, lastName] = value.split(' ');\n\n                  set(this, firstNameKey, firstName);\n                  set(this, lastNameKey, lastName);\n\n                  return value;\n                }\n              });\n            }\n\n            class Person {\n              constructor(firstName, lastName) {\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n\n              @fullNameMacro('firstName', 'lastName') fullName;\n            });\n\n            let person = new Person();\n\n            set(person, 'fullName', 'Peter Wagenet');\n            person.firstName; // 'Peter'\n            person.lastName;  // 'Wagenet'\n            ```\n\n            Computed properties can also be used in classic classes. To do this, we\n            provide the getter and setter as the last argument like we would for a macro,\n            and we assign it to a property on the class definition. This is an _anonymous_\n            computed macro:\n\n            ```javascript\n            import EmberObject, { computed, set } from '@ember/object';\n\n            let Person = EmberObject.extend({\n              // these will be supplied by `create`\n              firstName: null,\n              lastName: null,\n\n              fullName: computed('firstName', 'lastName', {\n                get() {\n                  return `${this.firstName} ${this.lastName}`;\n                }\n\n                set(key, value) {\n                  let [firstName, lastName] = value.split(' ');\n\n                  set(this, 'firstName', firstName);\n                  set(this, 'lastName', lastName);\n\n                  return value;\n                }\n              })\n            });\n\n            let tom = Person.create({\n              firstName: 'Tom',\n              lastName: 'Dale'\n            });\n\n            tom.get('fullName') // 'Tom Dale'\n            ```\n\n            You can overwrite computed property without setters with a normal property (no\n            longer computed) that won't change if dependencies change. You can also mark\n            computed property as `.readOnly()` and block all attempts to set it.\n\n            ```javascript\n            import { computed, set } from '@ember/object';\n\n            class Person {\n              constructor(firstName, lastName) {\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n\n              @computed('firstName', 'lastName').readOnly()\n              get fullName() {\n                return `${this.firstName} ${this.lastName}`;\n              }\n            });\n\n            let person = new Person();\n            person.set('fullName', 'Peter Wagenet'); // Uncaught Error: Cannot set read-only property \"fullName\" on object: <(...):emberXXX>\n            ```\n\n            Additional resources:\n            - [Decorators RFC](https://github.com/emberjs/rfcs/blob/master/text/0408-decorators.md)\n            - [New CP syntax RFC](https://github.com/emberjs/rfcs/blob/master/text/0011-improved-cp-syntax.md)\n            - [New computed syntax explained in \"Ember 1.12 released\" ](https://emberjs.com/blog/2015/05/13/ember-1-12-released.html#toc_new-computed-syntax)\n\n            @class ComputedProperty\n            @public\n          */var ComputedProperty=/*#__PURE__*/function(_ComputedDescriptor2){function ComputedProperty(args){var _this2;_classCallCheck(this,ComputedProperty);_this2=_callSuper(this,ComputedProperty);_defineProperty(_this2,\"_readOnly\",false);_defineProperty(_this2,\"_hasConfig\",false);_defineProperty(_this2,\"_getter\",undefined);_defineProperty(_this2,\"_setter\",undefined);var maybeConfig=args[args.length-1];if(typeof maybeConfig==='function'||maybeConfig!==null&&_typeof(maybeConfig)==='object'){_this2._hasConfig=true;var _config=args.pop();if(typeof _config==='function'){!!isClassicDecorator(_config)&&assert$1(\"You attempted to pass a computed property instance to computed(). Computed property instances are decorator functions, and cannot be passed to computed() because they cannot be turned into decorators twice\",!isClassicDecorator(_config));_this2._getter=_config;}else{var objectConfig=_config;!(_typeof(objectConfig)==='object'&&!Array.isArray(objectConfig))&&assert$1('computed expects a function or an object as last argument.',_typeof(objectConfig)==='object'&&!Array.isArray(objectConfig));!Object.keys(objectConfig).every(function(key){return key==='get'||key==='set';})&&assert$1('Config object passed to computed can only contain `get` and `set` keys.',Object.keys(objectConfig).every(function(key){return key==='get'||key==='set';}));!(Boolean(objectConfig.get)||Boolean(objectConfig.set))&&assert$1('Computed properties must receive a getter or a setter, you passed none.',Boolean(objectConfig.get)||Boolean(objectConfig.set));_this2._getter=objectConfig.get||noop$2;_this2._setter=objectConfig.set;}}if(args.length>0){var _this3;(_this3=_this2)._property.apply(_this3,_toConsumableArray(args));}return _this2;}_inherits(ComputedProperty,_ComputedDescriptor2);return _createClass(ComputedProperty,[{key:\"setup\",value:function setup(obj,keyName,propertyDesc,meta){_superPropGet(ComputedProperty,\"setup\",this,3)([obj,keyName,propertyDesc,meta]);!!(propertyDesc&&typeof propertyDesc.value==='function')&&assert$1(\"@computed can only be used on accessors or fields, attempted to use it with \".concat(keyName,\" but that was a method. Try converting it to a getter (e.g. `get \").concat(keyName,\"() {}`)\"),!(propertyDesc&&typeof propertyDesc.value==='function'));!(!propertyDesc||!propertyDesc.initializer)&&assert$1(\"@computed can only be used on empty fields. \".concat(keyName,\" has an initial value (e.g. `\").concat(keyName,\" = someValue`)\"),!propertyDesc||!propertyDesc.initializer);!!(this._hasConfig&&propertyDesc&&(typeof propertyDesc.get==='function'||typeof propertyDesc.set==='function'))&&assert$1(\"Attempted to apply a computed property that already has a getter/setter to a \".concat(keyName,\", but it is a method or an accessor. If you passed @computed a function or getter/setter (e.g. `@computed({ get() { ... } })`), then it must be applied to a field\"),!(this._hasConfig&&propertyDesc&&(typeof propertyDesc.get==='function'||typeof propertyDesc.set==='function')));if(this._hasConfig===false){!(propertyDesc&&(typeof propertyDesc.get==='function'||typeof propertyDesc.set==='function'))&&assert$1(\"Attempted to use @computed on \".concat(keyName,\", but it did not have a getter or a setter. You must either pass a get a function or getter/setter to @computed directly (e.g. `@computed({ get() { ... } })`) or apply @computed directly to a getter/setter\"),propertyDesc&&(typeof propertyDesc.get==='function'||typeof propertyDesc.set==='function'));var _get3=propertyDesc.get,_set4=propertyDesc.set;if(_get3!==undefined){this._getter=_get3;}if(_set4!==undefined){this._setter=function setterWrapper(_key,value){var ret=_set4.call(this,value);if(_get3!==undefined){return typeof ret==='undefined'?_get3.call(this):ret;}return ret;};}}}},{key:\"_property\",value:function _property(){var args=[];function addArg(property){!(DEEP_EACH_REGEX.test(property)===false)&&assert$1(\"Dependent keys containing @each only work one level deep. \"+\"You used the key \\\"\".concat(property,\"\\\" which is invalid. \")+\"Please create an intermediary computed property or \"+\"switch to using tracked properties.\",DEEP_EACH_REGEX.test(property)===false);args.push(property);}for(var _len11=arguments.length,passedArgs=new Array(_len11),_key12=0;_key12<_len11;_key12++){passedArgs[_key12]=arguments[_key12];}for(var _i5=0,_passedArgs=passedArgs;_i5<_passedArgs.length;_i5++){var arg=_passedArgs[_i5];expandProperties(arg,addArg);}this._dependentKeys=args;}},{key:\"get\",value:function get(obj,keyName){var meta$1=meta(obj);var tagMeta=tagMetaFor(obj);var propertyTag=tagFor(obj,keyName,tagMeta);var ret;var revision=meta$1.revisionFor(keyName);if(revision!==undefined&&validateTag(propertyTag,revision)){ret=meta$1.valueFor(keyName);}else{// For backwards compatibility, we only throw if the CP has any dependencies. CPs without dependencies\n// should be allowed, even after the object has been destroyed, which is why we check _dependentKeys.\n!(this._dependentKeys===undefined||!isDestroyed(obj))&&assert$1(\"Attempted to access the computed \".concat(obj,\".\").concat(keyName,\" on a destroyed object, which is not allowed\"),this._dependentKeys===undefined||!isDestroyed(obj));var _getter=this._getter,_dependentKeys=this._dependentKeys;// Create a tracker that absorbs any trackable actions inside the CP\nuntrack(function(){ret=_getter.call(obj,keyName);});if(_dependentKeys!==undefined){UPDATE_TAG(propertyTag,getChainTagsForKeys(obj,_dependentKeys,tagMeta,meta$1));{ALLOW_CYCLES.set(propertyTag,true);}}meta$1.setValueFor(keyName,ret);meta$1.setRevisionFor(keyName,valueForTag(propertyTag));finishLazyChains(meta$1,keyName,ret);}consumeTag(propertyTag);// Add the tag of the returned value if it is an array, since arrays\n// should always cause updates if they are consumed and then changed\nif(Array.isArray(ret)){consumeTag(tagFor(ret,'[]'));}return ret;}},{key:\"set\",value:function set(obj,keyName,value){if(this._readOnly){this._throwReadOnlyError(obj,keyName);}!(this._setter!==undefined)&&assert$1(\"Cannot override the computed property `\".concat(keyName,\"` on \").concat(toString$1(obj),\".\"),this._setter!==undefined);var meta$1=meta(obj);// ensure two way binding works when the component has defined a computed\n// property with both a setter and dependent keys, in that scenario without\n// the sync observer added below the caller's value will never be updated\n//\n// See GH#18147 / GH#19028 for details.\nif(// ensure that we only run this once, while the component is being instantiated\nmeta$1.isInitializing()&&this._dependentKeys!==undefined&&this._dependentKeys.length>0&&typeof obj[PROPERTY_DID_CHANGE]==='function'&&obj.isComponent){// It's redundant to do this here, but we don't want to check above so we can avoid an extra function call in prod.\n!hasPropertyDidChange(obj)&&assert$1('property did change hook is invalid',hasPropertyDidChange(obj));_addObserver(obj,keyName,function(){obj[PROPERTY_DID_CHANGE](keyName);},undefined,true);}var ret;try{_beginPropertyChanges();ret=this._set(obj,keyName,value,meta$1);finishLazyChains(meta$1,keyName,ret);var tagMeta=tagMetaFor(obj);var propertyTag=tagFor(obj,keyName,tagMeta);var _dependentKeys=this._dependentKeys;if(_dependentKeys!==undefined){UPDATE_TAG(propertyTag,getChainTagsForKeys(obj,_dependentKeys,tagMeta,meta$1));if(true/* DEBUG */){ALLOW_CYCLES.set(propertyTag,true);}}meta$1.setRevisionFor(keyName,valueForTag(propertyTag));}finally{_endPropertyChanges();}return ret;}},{key:\"_throwReadOnlyError\",value:function _throwReadOnlyError(obj,keyName){throw new Error(\"Cannot set read-only property \\\"\".concat(keyName,\"\\\" on object: \").concat(inspect(obj)));}},{key:\"_set\",value:function _set(obj,keyName,value,meta){var hadCachedValue=meta.revisionFor(keyName)!==undefined;var cachedValue=meta.valueFor(keyName);var ret;var _setter=this._setter;setObserverSuspended(obj,keyName,true);try{ret=_setter.call(obj,keyName,value,cachedValue);}finally{setObserverSuspended(obj,keyName,false);}// allows setter to return the same value that is cached already\nif(hadCachedValue&&cachedValue===ret){return ret;}meta.setValueFor(keyName,ret);_notifyPropertyChange(obj,keyName,meta,value);return ret;}/* called before property is overridden */},{key:\"teardown\",value:function teardown(obj,keyName,meta){if(meta.revisionFor(keyName)!==undefined){meta.setRevisionFor(keyName,undefined);meta.setValueFor(keyName,undefined);}_superPropGet(ComputedProperty,\"teardown\",this,3)([obj,keyName,meta]);}}]);}(ComputedDescriptor);var AutoComputedProperty=/*#__PURE__*/function(_ComputedProperty2){function AutoComputedProperty(){_classCallCheck(this,AutoComputedProperty);return _callSuper(this,AutoComputedProperty,arguments);}_inherits(AutoComputedProperty,_ComputedProperty2);return _createClass(AutoComputedProperty,[{key:\"get\",value:function get(obj,keyName){var meta$1=meta(obj);var tagMeta=tagMetaFor(obj);var propertyTag=tagFor(obj,keyName,tagMeta);var ret;var revision=meta$1.revisionFor(keyName);if(revision!==undefined&&validateTag(propertyTag,revision)){ret=meta$1.valueFor(keyName);}else{!!isDestroyed(obj)&&assert$1(\"Attempted to access the computed \".concat(obj,\".\").concat(keyName,\" on a destroyed object, which is not allowed\"),!isDestroyed(obj));var _getter=this._getter;// Create a tracker that absorbs any trackable actions inside the CP\nvar tag=track(function(){ret=_getter.call(obj,keyName);});UPDATE_TAG(propertyTag,tag);meta$1.setValueFor(keyName,ret);meta$1.setRevisionFor(keyName,valueForTag(propertyTag));finishLazyChains(meta$1,keyName,ret);}consumeTag(propertyTag);// Add the tag of the returned value if it is an array, since arrays\n// should always cause updates if they are consumed and then changed\nif(Array.isArray(ret)){consumeTag(tagFor(ret,'[]',tagMeta));}return ret;}}]);}(ComputedProperty);// TODO: This class can be svelted once `meta` has been deprecated\nvar ComputedDecoratorImpl=/*#__PURE__*/function(_Function){function ComputedDecoratorImpl(){_classCallCheck(this,ComputedDecoratorImpl);return _callSuper(this,ComputedDecoratorImpl,arguments);}_inherits(ComputedDecoratorImpl,_Function);return _createClass(ComputedDecoratorImpl,[{key:\"readOnly\",value:/**\n              Call on a computed property to set it into read-only mode. When in this\n              mode the computed property will throw an error when set.\n               Example:\n               ```javascript\n              import { computed, set } from '@ember/object';\n               class Person {\n                @computed().readOnly()\n                get guid() {\n                  return 'guid-guid-guid';\n                }\n              }\n               let person = new Person();\n              set(person, 'guid', 'new-guid'); // will throw an exception\n              ```\n               Classic Class Example:\n               ```javascript\n              import EmberObject, { computed } from '@ember/object';\n               let Person = EmberObject.extend({\n                guid: computed(function() {\n                  return 'guid-guid-guid';\n                }).readOnly()\n              });\n               let person = Person.create();\n              person.set('guid', 'new-guid'); // will throw an exception\n              ```\n               @method readOnly\n              @return {ComputedProperty} this\n              @chainable\n              @public\n            */function readOnly(){var desc=descriptorForDecorator(this);!!(desc._setter&&desc._setter!==desc._getter)&&assert$1('Computed properties that define a setter using the new syntax cannot be read-only',!(desc._setter&&desc._setter!==desc._getter));desc._readOnly=true;return this;}/**\n              In some cases, you may want to annotate computed properties with additional\n              metadata about how they function or what values they operate on. For example,\n              computed property functions may close over variables that are then no longer\n              available for introspection. You can pass a hash of these values to a\n              computed property.\n               Example:\n               ```javascript\n              import { computed } from '@ember/object';\n              import Person from 'my-app/utils/person';\n               class Store {\n                @computed().meta({ type: Person })\n                get person() {\n                  let personId = this.personId;\n                  return Person.create({ id: personId });\n                }\n              }\n              ```\n               Classic Class Example:\n               ```javascript\n              import { computed } from '@ember/object';\n              import Person from 'my-app/utils/person';\n               const Store = EmberObject.extend({\n                person: computed(function() {\n                  let personId = this.get('personId');\n                  return Person.create({ id: personId });\n                }).meta({ type: Person })\n              });\n              ```\n               The hash that you pass to the `meta()` function will be saved on the\n              computed property descriptor under the `_meta` key. Ember runtime\n              exposes a public API for retrieving these values from classes,\n              via the `metaForProperty()` function.\n               @method meta\n              @param {Object} meta\n              @chainable\n              @public\n            */},{key:\"meta\",value:function meta(_meta3){var prop=descriptorForDecorator(this);if(arguments.length===0){return prop._meta||{};}else{prop._meta=_meta3;return this;}}// TODO: Remove this when we can provide alternatives in the ecosystem to\n// addons such as ember-macro-helpers that use it.\n/** @internal */},{key:\"_getter\",get:function get(){return descriptorForDecorator(this)._getter;}// TODO: Refactor this, this is an internal API only\n/** @internal */},{key:\"enumerable\",set:function set(value){descriptorForDecorator(this).enumerable=value;}}]);}(/*#__PURE__*/_wrapNativeSuper(Function));/**\n            This helper returns a new property descriptor that wraps the passed\n            computed property function. You can use this helper to define properties with\n            native decorator syntax, mixins, or via `defineProperty()`.\n\n            Example:\n\n            ```js\n            import { computed, set } from '@ember/object';\n\n            class Person {\n              constructor() {\n                this.firstName = 'Betty';\n                this.lastName = 'Jones';\n              },\n\n              @computed('firstName', 'lastName')\n              get fullName() {\n                return `${this.firstName} ${this.lastName}`;\n              }\n            }\n\n            let client = new Person();\n\n            client.fullName; // 'Betty Jones'\n\n            set(client, 'lastName', 'Fuller');\n            client.fullName; // 'Betty Fuller'\n            ```\n\n            Classic Class Example:\n\n            ```js\n            import EmberObject, { computed } from '@ember/object';\n\n            let Person = EmberObject.extend({\n              init() {\n                this._super(...arguments);\n\n                this.firstName = 'Betty';\n                this.lastName = 'Jones';\n              },\n\n              fullName: computed('firstName', 'lastName', function() {\n                return `${this.get('firstName')} ${this.get('lastName')}`;\n              })\n            });\n\n            let client = Person.create();\n\n            client.get('fullName'); // 'Betty Jones'\n\n            client.set('lastName', 'Fuller');\n            client.get('fullName'); // 'Betty Fuller'\n            ```\n\n            You can also provide a setter, either directly on the class using native class\n            syntax, or by passing a hash with `get` and `set` functions.\n\n            Example:\n\n            ```js\n            import { computed, set } from '@ember/object';\n\n            class Person {\n              constructor() {\n                this.firstName = 'Betty';\n                this.lastName = 'Jones';\n              },\n\n              @computed('firstName', 'lastName')\n              get fullName() {\n                return `${this.firstName} ${this.lastName}`;\n              }\n\n              set fullName(value) {\n                let [firstName, lastName] = value.split(/\\s+/);\n\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n\n                return value;\n              }\n            }\n\n            let client = new Person();\n\n            client.fullName; // 'Betty Jones'\n\n            set(client, 'lastName', 'Fuller');\n            client.fullName; // 'Betty Fuller'\n            ```\n\n            Classic Class Example:\n\n            ```js\n            import EmberObject, { computed } from '@ember/object';\n\n            let Person = EmberObject.extend({\n              init() {\n                this._super(...arguments);\n\n                this.firstName = 'Betty';\n                this.lastName = 'Jones';\n              },\n\n              fullName: computed('firstName', 'lastName', {\n                get(key) {\n                  return `${this.get('firstName')} ${this.get('lastName')}`;\n                },\n                set(key, value) {\n                  let [firstName, lastName] = value.split(/\\s+/);\n                  this.setProperties({ firstName, lastName });\n                  return value;\n                }\n              })\n            });\n\n            let client = Person.create();\n            client.get('firstName'); // 'Betty'\n\n            client.set('fullName', 'Carroll Fuller');\n            client.get('firstName'); // 'Carroll'\n            ```\n\n            When passed as an argument, the `set` function should accept two parameters,\n            `key` and `value`. The value returned from `set` will be the new value of the\n            property.\n\n            _Note: This is the preferred way to define computed properties when writing third-party\n            libraries that depend on or use Ember, since there is no guarantee that the user\n            will have [prototype Extensions](https://guides.emberjs.com/release/configuring-ember/disabling-prototype-extensions/) enabled._\n\n            @method computed\n            @for @ember/object\n            @static\n            @param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.\n            @param {Function} func The computed property function.\n            @return {ComputedDecorator} property decorator instance\n            @public\n          */// @computed without parens or computed with descriptor args\n// @computed with keys only\n// @computed with keys and config\n// @computed with config only\nfunction computed(){for(var _len12=arguments.length,args=new Array(_len12),_key13=0;_key13<_len12;_key13++){args[_key13]=arguments[_key13];}!!(isElementDescriptor(args.slice(0,3))&&args.length===5&&args[4]===true)&&assert$1(\"@computed can only be used directly as a native decorator. If you're using tracked in classic classes, add parenthesis to call it like a function: computed()\",!(isElementDescriptor(args.slice(0,3))&&args.length===5&&args[4]===true));if(isElementDescriptor(args)){// SAFETY: We passed in the impl for this class\nvar decorator=makeComputedDecorator(new ComputedProperty([]),ComputedDecoratorImpl);return decorator(args[0],args[1],args[2]);}// SAFETY: We passed in the impl for this class\nreturn makeComputedDecorator(new ComputedProperty(args),ComputedDecoratorImpl);}function autoComputed(){for(var _len13=arguments.length,config=new Array(_len13),_key14=0;_key14<_len13;_key14++){config[_key14]=arguments[_key14];}// SAFETY: We passed in the impl for this class\nreturn makeComputedDecorator(new AutoComputedProperty(config),ComputedDecoratorImpl);}/**\n            Allows checking if a given property on an object is a computed property. For the most part,\n            this doesn't matter (you would normally just access the property directly and use its value),\n            but for some tooling specific scenarios (e.g. the ember-inspector) it is important to\n            differentiate if a property is a computed property or a \"normal\" property.\n\n            This will work on either a class's prototype or an instance itself.\n\n            @static\n            @method isComputed\n            @for @ember/debug\n            @private\n           */function isComputed(obj,key){return Boolean(descriptorForProperty(obj,key));}function getCachedValueFor(obj,key){var meta=peekMeta(obj);if(meta){return meta.valueFor(key);}else{return undefined;}}/**\n          @module @ember/object\n          *//**\n            NOTE: This is a low-level method used by other parts of the API. You almost\n            never want to call this method directly. Instead you should use\n            `mixin()` to define new properties.\n\n            Defines a property on an object. This method works much like the ES5\n            `Object.defineProperty()` method except that it can also accept computed\n            properties and other special descriptors.\n\n            Normally this method takes only three parameters. However if you pass an\n            instance of `Descriptor` as the third param then you can pass an\n            optional value as the fourth parameter. This is often more efficient than\n            creating new descriptor hashes for each property.\n\n            ## Examples\n\n            ```javascript\n            import { defineProperty, computed } from '@ember/object';\n\n            // ES5 compatible mode\n            defineProperty(contact, 'firstName', {\n              writable: true,\n              configurable: false,\n              enumerable: true,\n              value: 'Charles'\n            });\n\n            // define a simple property\n            defineProperty(contact, 'lastName', undefined, 'Jolley');\n\n            // define a computed property\n            defineProperty(contact, 'fullName', computed('firstName', 'lastName', function() {\n              return this.firstName+' '+this.lastName;\n            }));\n            ```\n\n            @public\n            @method defineProperty\n            @static\n            @for @ember/object\n            @param {Object} obj the object to define this property on. This may be a prototype.\n            @param {String} keyName the name of the property\n            @param {Descriptor} [desc] an instance of `Descriptor` (typically a\n              computed property) or an ES5 descriptor.\n              You must provide this or `data` but not both.\n            @param {*} [data] something other than a descriptor, that will\n              become the explicit value of this property.\n          */function defineProperty(obj,keyName,desc,data,_meta){var meta$1=_meta===undefined?meta(obj):_meta;var previousDesc=descriptorForProperty(obj,keyName,meta$1);var wasDescriptor=previousDesc!==undefined;if(wasDescriptor){previousDesc.teardown(obj,keyName,meta$1);}if(isClassicDecorator(desc)){defineDecorator(obj,keyName,desc,meta$1);}else if(desc===null||desc===undefined){defineValue(obj,keyName,data,wasDescriptor,true);}else{// fallback to ES5\nObject.defineProperty(obj,keyName,desc);}// if key is being watched, override chains that\n// were initialized with the prototype\nif(!meta$1.isPrototypeMeta(obj)){revalidateObservers(obj);}}function defineDecorator(obj,keyName,desc,meta){var propertyDesc;{propertyDesc=desc(obj,keyName,undefined,meta,true);}Object.defineProperty(obj,keyName,propertyDesc);// pass the decorator function forward for backwards compat\nreturn desc;}function defineValue(obj,keyName,value,wasDescriptor){var enumerable=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;if(wasDescriptor===true||enumerable===false){Object.defineProperty(obj,keyName,{configurable:true,enumerable:enumerable,writable:true,value:value});}else{{setWithMandatorySetter(obj,keyName,value);}}return value;}var EMBER_ARRAYS=new WeakSet();function setEmberArray(obj){EMBER_ARRAYS.add(obj);}function isEmberArray(obj){return EMBER_ARRAYS.has(obj);}var emberArrayinternals=/*#__PURE__*/Object.defineProperty({__proto__:null,isEmberArray:isEmberArray,setEmberArray:setEmberArray},Symbol.toStringTag,{value:'Module'});var firstDotIndexCache=new Cache(1000,function(key){return key.indexOf('.');});function isPath(path){return typeof path==='string'&&firstDotIndexCache.get(path)!==-1;}/**\n          @module @ember/object\n          */var PROXY_CONTENT=symbol('PROXY_CONTENT');var getPossibleMandatoryProxyValue;{getPossibleMandatoryProxyValue=function getPossibleMandatoryProxyValue(obj,keyName){var content=obj[PROXY_CONTENT];if(content===undefined){return obj[keyName];}else{/* global Reflect */return Reflect.get(content,keyName,obj);}};}function hasUnknownProperty(val){return _typeof(val)==='object'&&val!==null&&typeof val.unknownProperty==='function';}// ..........................................................\n// GET AND SET\n//\n// If we are on a platform that supports accessors we can use those.\n// Otherwise simulate accessors by looking up the property directly on the\n// object.\n/**\n            Gets the value of a property on an object. If the property is computed,\n            the function will be invoked. If the property is not defined but the\n            object implements the `unknownProperty` method then that will be invoked.\n\n            ```javascript\n            import { get } from '@ember/object';\n            get(obj, \"name\");\n            ```\n\n            If you plan to run on IE8 and older browsers then you should use this\n            method anytime you want to retrieve a property on an object that you don't\n            know for sure is private. (Properties beginning with an underscore '_'\n            are considered private.)\n\n            On all newer browsers, you only need to use this method to retrieve\n            properties if the property might not be defined on the object and you want\n            to respect the `unknownProperty` handler. Otherwise you can ignore this\n            method.\n\n            Note that if the object itself is `undefined`, this method will throw\n            an error.\n\n            @method get\n            @for @ember/object\n            @static\n            @param {Object} obj The object to retrieve from.\n            @param {String} keyName The property key to retrieve\n            @return {Object} the property value or `null`.\n            @public\n          */function get$2(obj,keyName){!(arguments.length===2)&&assert$1(\"Get must be called with two arguments; an object and a property key\",arguments.length===2);!(obj!==undefined&&obj!==null)&&assert$1(\"Cannot call get with '\".concat(keyName,\"' on an undefined object.\"),obj!==undefined&&obj!==null);!(typeof keyName==='string'||typeof keyName==='number'&&!isNaN(keyName))&&assert$1(\"The key provided to get must be a string or number, you passed \".concat(keyName),typeof keyName==='string'||typeof keyName==='number'&&!isNaN(keyName));!(typeof keyName!=='string'||keyName.lastIndexOf('this.',0)!==0)&&assert$1(\"'this' in paths is not supported\",typeof keyName!=='string'||keyName.lastIndexOf('this.',0)!==0);return isPath(keyName)?_getPath(obj,keyName):_getProp(obj,keyName);}function _getProp(obj,keyName){if(obj==null){return;}var value;if(_typeof(obj)==='object'||typeof obj==='function'){{value=getPossibleMandatoryProxyValue(obj,keyName);}if(value===undefined&&_typeof(obj)==='object'&&!(keyName in obj)&&hasUnknownProperty(obj)){value=obj.unknownProperty(keyName);}if(isTracking()){consumeTag(tagFor(obj,keyName));if(Array.isArray(value)||isEmberArray(value)){// Add the tag of the returned value if it is an array, since arrays\n// should always cause updates if they are consumed and then changed\nconsumeTag(tagFor(value,'[]'));}}}else{// SAFETY: It should be ok to access properties on any non-nullish value\nvalue=obj[keyName];}return value;}function _getPath(obj,path,forSet){var parts=typeof path==='string'?path.split('.'):path;var _iterator24=_createForOfIteratorHelper(parts),_step24;try{for(_iterator24.s();!(_step24=_iterator24.n()).done;){var part=_step24.value;if(obj===undefined||obj===null||obj.isDestroyed){return undefined;}if(forSet&&(part==='__proto__'||part==='constructor')){return;}obj=_getProp(obj,part);}}catch(err){_iterator24.e(err);}finally{_iterator24.f();}return obj;}// Warm it up\n_getProp('foo','a');_getProp('foo',1);_getProp({},'a');_getProp({},1);_getProp({unknownProperty:function unknownProperty(){}},'a');_getProp({unknownProperty:function unknownProperty(){}},1);get$2({},'foo');get$2({},'foo.bar');var fakeProxy={};setProxy(fakeProxy);track(function(){return _getProp({},'a');});track(function(){return _getProp({},1);});track(function(){return _getProp({a:[]},'a');});track(function(){return _getProp({a:fakeProxy},'a');});/**\n           @module @ember/object\n          *//**\n            Sets the value of a property on an object, respecting computed properties\n            and notifying observers and other listeners of the change.\n            If the specified property is not defined on the object and the object\n            implements the `setUnknownProperty` method, then instead of setting the\n            value of the property on the object, its `setUnknownProperty` handler\n            will be invoked with the two parameters `keyName` and `value`.\n\n            ```javascript\n            import { set } from '@ember/object';\n            set(obj, \"name\", value);\n            ```\n\n            @method set\n            @static\n            @for @ember/object\n            @param {Object} obj The object to modify.\n            @param {String} keyName The property key to set\n            @param {Object} value The value to set\n            @return {Object} the passed value.\n            @public\n          */function _set5(obj,keyName,value,tolerant){!(arguments.length===3||arguments.length===4)&&assert$1(\"Set must be called with three or four arguments; an object, a property key, a value and tolerant true/false\",arguments.length===3||arguments.length===4);!(obj&&_typeof(obj)==='object'||typeof obj==='function')&&assert$1(\"Cannot call set with '\".concat(keyName,\"' on an undefined object.\"),obj&&_typeof(obj)==='object'||typeof obj==='function');!(typeof keyName==='string'||typeof keyName==='number'&&!isNaN(keyName))&&assert$1(\"The key provided to set must be a string or number, you passed \".concat(keyName),typeof keyName==='string'||typeof keyName==='number'&&!isNaN(keyName));!(typeof keyName!=='string'||keyName.lastIndexOf('this.',0)!==0)&&assert$1(\"'this' in paths is not supported\",typeof keyName!=='string'||keyName.lastIndexOf('this.',0)!==0);if(obj.isDestroyed){!tolerant&&assert$1(\"calling set on destroyed object: \".concat(toString$1(obj),\".\").concat(keyName,\" = \").concat(toString$1(value)),tolerant);return value;}return isPath(keyName)?_setPath(obj,keyName,value,tolerant):_setProp(obj,keyName,value);}function _setProp(obj,keyName,value){var descriptor=lookupDescriptor(obj,keyName);if(descriptor!==null&&COMPUTED_SETTERS.has(descriptor.set)){obj[keyName]=value;return value;}var currentValue;{currentValue=getPossibleMandatoryProxyValue(obj,keyName);}if(currentValue===undefined&&'object'===_typeof(obj)&&!(keyName in obj)&&typeof obj.setUnknownProperty==='function'){/* unknown property */obj.setUnknownProperty(keyName,value);}else{{setWithMandatorySetter(obj,keyName,value);}if(currentValue!==value){_notifyPropertyChange(obj,keyName);}}return value;}function _setPath(root,path,value,tolerant){var parts=path.split('.');var keyName=parts.pop();!(keyName.trim().length>0)&&assert$1('Property set failed: You passed an empty path',keyName.trim().length>0);var newRoot=_getPath(root,parts,true);if(newRoot!==null&&newRoot!==undefined){return _set5(newRoot,keyName,value);}else if(!tolerant){throw new Error(\"Property set failed: object in path \\\"\".concat(parts.join('.'),\"\\\" could not be found.\"));}}/**\n            Error-tolerant form of `set`. Will not blow up if any part of the\n            chain is `undefined`, `null`, or destroyed.\n\n            This is primarily used when syncing bindings, which may try to update after\n            an object has been destroyed.\n\n            ```javascript\n            import { trySet } from '@ember/object';\n\n            let obj = { name: \"Zoey\" };\n            trySet(obj, \"contacts.twitter\", \"@emberjs\");\n            ```\n\n            @method trySet\n            @static\n            @for @ember/object\n            @param {Object} root The object to modify.\n            @param {String} path The property path to set\n            @param {Object} value The value to set\n            @public\n          */function trySet(root,path,value){return _set5(root,path,value,true);}function alias(altKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @alias as a decorator directly, but it requires a `altKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));// SAFETY: We passed in the impl for this class\nreturn makeComputedDecorator(new AliasedProperty(altKey),AliasDecoratorImpl);}// TODO: This class can be svelted once `meta` has been deprecated\nvar AliasDecoratorImpl=/*#__PURE__*/function(_Function2){function AliasDecoratorImpl(){_classCallCheck(this,AliasDecoratorImpl);return _callSuper(this,AliasDecoratorImpl,arguments);}_inherits(AliasDecoratorImpl,_Function2);return _createClass(AliasDecoratorImpl,[{key:\"readOnly\",value:function readOnly(){descriptorForDecorator(this).readOnly();return this;}},{key:\"oneWay\",value:function oneWay(){descriptorForDecorator(this).oneWay();return this;}},{key:\"meta\",value:function meta(_meta4){var prop=descriptorForDecorator(this);if(arguments.length===0){return prop._meta||{};}else{prop._meta=_meta4;}}}]);}(/*#__PURE__*/_wrapNativeSuper(Function));var AliasedProperty=/*#__PURE__*/function(_ComputedDescriptor3){function AliasedProperty(altKey){var _this4;_classCallCheck(this,AliasedProperty);_this4=_callSuper(this,AliasedProperty);_defineProperty(_this4,\"altKey\",void 0);_this4.altKey=altKey;return _this4;}_inherits(AliasedProperty,_ComputedDescriptor3);return _createClass(AliasedProperty,[{key:\"setup\",value:function setup(obj,keyName,propertyDesc,meta){!(this.altKey!==keyName)&&assert$1(\"Setting alias '\".concat(keyName,\"' on self\"),this.altKey!==keyName);_superPropGet(AliasedProperty,\"setup\",this,3)([obj,keyName,propertyDesc,meta]);CHAIN_PASS_THROUGH.add(this);}},{key:\"get\",value:function get(obj,keyName){var _this5=this;var ret;var meta$1=meta(obj);var tagMeta=tagMetaFor(obj);var propertyTag=tagFor(obj,keyName,tagMeta);// We don't use the tag since CPs are not automatic, we just want to avoid\n// anything tracking while we get the altKey\nuntrack(function(){ret=get$2(obj,_this5.altKey);});var lastRevision=meta$1.revisionFor(keyName);if(lastRevision===undefined||!validateTag(propertyTag,lastRevision)){UPDATE_TAG(propertyTag,getChainTagsForKey(obj,this.altKey,tagMeta,meta$1));meta$1.setRevisionFor(keyName,valueForTag(propertyTag));finishLazyChains(meta$1,keyName,ret);}consumeTag(propertyTag);return ret;}},{key:\"set\",value:function set(obj,_keyName,value){return _set5(obj,this.altKey,value);}},{key:\"readOnly\",value:function readOnly(){this.set=AliasedProperty_readOnlySet;}},{key:\"oneWay\",value:function oneWay(){this.set=AliasedProperty_oneWaySet;}}]);}(ComputedDescriptor);function AliasedProperty_readOnlySet(obj,keyName){throw new Error(\"Cannot set read-only property '\".concat(keyName,\"' on object: \").concat(inspect(obj)));}function AliasedProperty_oneWaySet(obj,keyName,value){defineProperty(obj,keyName,null);return _set5(obj,keyName,value);}/**\n          @module ember\n          *//**\n            Used internally to allow changing properties in a backwards compatible way, and print a helpful\n            deprecation warning.\n\n            @method deprecateProperty\n            @param {Object} object The object to add the deprecated property to.\n            @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).\n            @param {String} newKey The property that will be aliased.\n            @private\n            @since 1.7.0\n          */function deprecateProperty(object,deprecatedKey,newKey,options){function _deprecate(){deprecate$1(\"Usage of `\".concat(deprecatedKey,\"` is deprecated, use `\").concat(newKey,\"` instead.\"),false,options);}Object.defineProperty(object,deprecatedKey,{configurable:true,enumerable:false,set:function set(value){_deprecate();_set5(this,newKey,value);},get:function get(){_deprecate();return get$2(this,newKey);}});}function arrayContentWillChange(array,startIdx,removeAmt,addAmt){// if no args are passed assume everything changes\nif(startIdx===undefined){startIdx=0;removeAmt=addAmt=-1;}else{if(removeAmt===undefined){removeAmt=-1;}if(addAmt===undefined){addAmt=-1;}}sendEvent(array,'@array:before',[array,startIdx,removeAmt,addAmt]);return array;}function arrayContentDidChange(array,startIdx,removeAmt,addAmt){var notify=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;// if no args are passed assume everything changes\nif(startIdx===undefined){startIdx=0;removeAmt=addAmt=-1;}else{if(removeAmt===undefined){removeAmt=-1;}if(addAmt===undefined){addAmt=-1;}}var meta=peekMeta(array);if(notify){if(addAmt<0||removeAmt<0||addAmt-removeAmt!==0){_notifyPropertyChange(array,'length',meta);}_notifyPropertyChange(array,'[]',meta);}sendEvent(array,'@array:change',[array,startIdx,removeAmt,addAmt]);if(meta!==null){var _length=array.length;var addedAmount=addAmt===-1?0:addAmt;var removedAmount=removeAmt===-1?0:removeAmt;var delta=addedAmount-removedAmount;var previousLength=_length-delta;var normalStartIdx=startIdx<0?previousLength+startIdx:startIdx;if(meta.revisionFor('firstObject')!==undefined&&normalStartIdx===0){_notifyPropertyChange(array,'firstObject',meta);}if(meta.revisionFor('lastObject')!==undefined){var previousLastIndex=previousLength-1;var lastAffectedIndex=normalStartIdx+removedAmount;if(previousLastIndex<lastAffectedIndex){_notifyPropertyChange(array,'lastObject',meta);}}}return array;}var EMPTY_ARRAY$3=Object.freeze([]);// Ideally, we'd use MutableArray.detect but for unknown reasons this causes\n// the node tests to fail strangely.\nfunction isMutableArray(obj){return obj!=null&&typeof obj.replace==='function';}function replace(array,start,deleteCount){var items=arguments.length>3&&arguments[3]!==undefined?arguments[3]:EMPTY_ARRAY$3;if(isMutableArray(array)){array.replace(start,deleteCount,items);}else{!Array.isArray(array)&&assert$1('Can only replace content of a native array or MutableArray',Array.isArray(array));replaceInNativeArray(array,start,deleteCount,items);}}var CHUNK_SIZE=60000;// To avoid overflowing the stack, we splice up to CHUNK_SIZE items at a time.\n// See https://code.google.com/p/chromium/issues/detail?id=56588 for more details.\nfunction replaceInNativeArray(array,start,deleteCount,items){arrayContentWillChange(array,start,deleteCount,items.length);if(items.length<=CHUNK_SIZE){array.splice.apply(array,[start,deleteCount].concat(_toConsumableArray(items)));}else{array.splice(start,deleteCount);for(var i=0;i<items.length;i+=CHUNK_SIZE){var chunk=items.slice(i,i+CHUNK_SIZE);array.splice.apply(array,[start+i,0].concat(_toConsumableArray(chunk)));}}arrayContentDidChange(array,start,deleteCount,items.length);}function arrayObserversHelper(obj,target,opts,operation){var _obj$_revalidate;var willChange=opts.willChange,didChange=opts.didChange;operation(obj,'@array:before',target,willChange);operation(obj,'@array:change',target,didChange);/*\n             * Array proxies have a `_revalidate` method which must be called to set\n             * up their internal array observation systems.\n             */(_obj$_revalidate=obj._revalidate)===null||_obj$_revalidate===void 0||_obj$_revalidate.call(obj);return obj;}function addArrayObserver(array,target,opts){return arrayObserversHelper(array,target,opts,addListener);}function removeArrayObserver(array,target,opts){return arrayObserversHelper(array,target,opts,removeListener);}var EACH_PROXIES=new WeakMap();function eachProxyArrayWillChange(array,idx,removedCnt,addedCnt){var eachProxy=EACH_PROXIES.get(array);if(eachProxy!==undefined){eachProxy.arrayWillChange(array,idx,removedCnt,addedCnt);}}function eachProxyArrayDidChange(array,idx,removedCnt,addedCnt){var eachProxy=EACH_PROXIES.get(array);if(eachProxy!==undefined){eachProxy.arrayDidChange(array,idx,removedCnt,addedCnt);}}/**\n           @module ember\n          *//**\n            Helper class that allows you to register your library with Ember.\n\n            Singleton created at `Ember.libraries`.\n\n            @class Libraries\n            @constructor\n            @private\n          */var Libraries=/*#__PURE__*/function(){function Libraries(){_classCallCheck(this,Libraries);_defineProperty(this,\"_registry\",void 0);_defineProperty(this,\"_coreLibIndex\",void 0);_defineProperty(this,\"isRegistered\",void 0);_defineProperty(this,\"logVersions\",void 0);this._registry=[];this._coreLibIndex=0;}return _createClass(Libraries,[{key:\"_getLibraryByName\",value:function _getLibraryByName(name){var libs=this._registry;var _iterator25=_createForOfIteratorHelper(libs),_step25;try{for(_iterator25.s();!(_step25=_iterator25.n()).done;){var lib=_step25.value;if(lib.name===name){return lib;}}}catch(err){_iterator25.e(err);}finally{_iterator25.f();}return undefined;}},{key:\"register\",value:function register(name,version,isCoreLibrary){var index=this._registry.length;if(!this._getLibraryByName(name)){if(isCoreLibrary){index=this._coreLibIndex++;}this._registry.splice(index,0,{name:name,version:version});}else{warn(\"Library \\\"\".concat(name,\"\\\" is already registered with Ember.\"),false,{id:'ember-metal.libraries-register'});}}},{key:\"registerCoreLibrary\",value:function registerCoreLibrary(name,version){this.register(name,version,true);}},{key:\"deRegister\",value:function deRegister(name){var lib=this._getLibraryByName(name);var index;if(lib){index=this._registry.indexOf(lib);this._registry.splice(index,1);}}}]);}();{Libraries.prototype.logVersions=function(){var libs=this._registry;var nameLengths=libs.map(function(item){return get$2(item,'name.length');});!(nameLengths instanceof Array&&nameLengths.every(function(n){return typeof n==='number';}))&&assert$1('nameLengths is number array',nameLengths instanceof Array&&nameLengths.every(function(n){return typeof n==='number';}));var maxNameLength=Math.max.apply(null,nameLengths);debug$2('-------------------------------');var _iterator26=_createForOfIteratorHelper(libs),_step26;try{for(_iterator26.s();!(_step26=_iterator26.n()).done;){var lib=_step26.value;var spaces=new Array(maxNameLength-lib.name.length+1).join(' ');debug$2([lib.name,spaces,' : ',lib.version].join(''));}}catch(err){_iterator26.e(err);}finally{_iterator26.f();}debug$2('-------------------------------');};}var LIBRARIES=new Libraries();LIBRARIES.registerCoreLibrary('Ember',Version);/**\n           @module @ember/object\n          *//**\n            To get multiple properties at once, call `getProperties`\n            with an object followed by a list of strings or an array:\n\n            ```javascript\n            import { getProperties } from '@ember/object';\n\n            getProperties(record, 'firstName', 'lastName', 'zipCode');\n            // { firstName: 'John', lastName: 'Doe', zipCode: '10011' }\n            ```\n\n            is equivalent to:\n\n            ```javascript\n            import { getProperties } from '@ember/object';\n\n            getProperties(record, ['firstName', 'lastName', 'zipCode']);\n            // { firstName: 'John', lastName: 'Doe', zipCode: '10011' }\n            ```\n\n            @method getProperties\n            @static\n            @for @ember/object\n            @param {Object} obj\n            @param {String...|Array} list of keys to get\n            @return {Object}\n            @public\n          */function _getProperties(obj,keys){var ret={};var propertyNames;var i=1;if(arguments.length===2&&Array.isArray(keys)){i=0;propertyNames=arguments[1];}else{propertyNames=Array.from(arguments);}for(;i<propertyNames.length;i++){// SAFETY: we are just walking the list of property names, so we know the\n// index access never produces `undefined`.\nvar _name12=propertyNames[i];ret[_name12]=get$2(obj,_name12);}return ret;}/**\n           @module @ember/object\n          *//**\n            Set a list of properties on an object. These properties are set inside\n            a single `beginPropertyChanges` and `endPropertyChanges` batch, so\n            observers will be buffered.\n\n            ```javascript\n            import EmberObject from '@ember/object';\n            let anObject = EmberObject.create();\n\n            anObject.setProperties({\n              firstName: 'Stanley',\n              lastName: 'Stuart',\n              age: 21\n            });\n            ```\n\n            @method setProperties\n            @static\n            @for @ember/object\n            @param obj\n            @param {Object} properties\n            @return properties\n            @public\n          */function _setProperties(obj,properties){if(properties===null||_typeof(properties)!=='object'){return properties;}changeProperties(function(){var props=Object.keys(properties);for(var _i6=0,_props=props;_i6<_props.length;_i6++){var propertyName=_props[_i6];// SAFETY: casting `properties` this way is safe because any object in JS\n// can be indexed this way, and the result will be `unknown`, making it\n// safe for callers.\n_set5(obj,propertyName,properties[propertyName]);}});return properties;}var DEBUG_INJECTION_FUNCTIONS;{DEBUG_INJECTION_FUNCTIONS=new WeakMap();}/**\n           @module ember\n           @private\n           *//**\n            Read-only property that returns the result of a container lookup.\n\n            @class InjectedProperty\n            @namespace Ember\n            @constructor\n            @param {String} type The container type the property will lookup\n            @param {String} nameOrDesc (optional) The name the property will lookup, defaults\n                   to the property's name\n            @private\n          */// Decorator factory (with args)\n// (Also matches non-decorator form, types may be incorrect for this.)\n// Non-decorator\n// Decorator (without args)\n// Catch-all for service and controller injections\nfunction inject$2(type){!(typeof type==='string')&&assert$1('a string type must be provided to inject',typeof type==='string');var elementDescriptor;var name;for(var _len14=arguments.length,args=new Array(_len14>1?_len14-1:0),_key15=1;_key15<_len14;_key15++){args[_key15-1]=arguments[_key15];}if(isElementDescriptor(args)){elementDescriptor=args;}else if(typeof args[0]==='string'){name=args[0];}var getInjection=function getInjection(propertyName){var owner=getOwner$2(this)||this.container;// fallback to `container` for backwards compat\n!Boolean(owner)&&assert$1(\"Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.\",Boolean(owner));return owner.lookup(\"\".concat(type,\":\").concat(name||propertyName));};{DEBUG_INJECTION_FUNCTIONS.set(getInjection,{type:type,name:name});}var decorator=computed({get:getInjection,set:function set(keyName,value){defineProperty(this,keyName,null,value);}});if(elementDescriptor){return decorator(elementDescriptor[0],elementDescriptor[1],elementDescriptor[2]);}else{return decorator;}}/**\n            @decorator\n            @private\n\n            Marks a property as tracked.\n\n            By default, a component's properties are expected to be static,\n            meaning you are not able to update them and have the template update accordingly.\n            Marking a property as tracked means that when that property changes,\n            a rerender of the component is scheduled so the template is kept up to date.\n\n            There are two usages for the `@tracked` decorator, shown below.\n\n            @example No dependencies\n\n            If you don't pass an argument to `@tracked`, only changes to that property\n            will be tracked:\n\n            ```typescript\n            import Component from '@glimmer/component';\n            import { tracked } from '@glimmer/tracking';\n\n            export default class MyComponent extends Component {\n              @tracked\n              remainingApples = 10\n            }\n            ```\n\n            When something changes the component's `remainingApples` property, the rerender\n            will be scheduled.\n\n            @example Dependents\n\n            In the case that you have a computed property that depends other\n            properties, you want to track both so that when one of the\n            dependents change, a rerender is scheduled.\n\n            In the following example we have two properties,\n            `eatenApples`, and `remainingApples`.\n\n            ```typescript\n            import Component from '@glimmer/component';\n            import { tracked } from '@glimmer/tracking';\n\n            const totalApples = 100;\n\n            export default class MyComponent extends Component {\n              @tracked\n              eatenApples = 0\n\n              get remainingApples() {\n                return totalApples - this.eatenApples;\n              }\n\n              increment() {\n                this.eatenApples = this.eatenApples + 1;\n              }\n            }\n            ```\n\n            @param dependencies Optional dependents to be tracked.\n          */function tracked(){for(var _len15=arguments.length,args=new Array(_len15),_key16=0;_key16<_len15;_key16++){args[_key16]=arguments[_key16];}!!(isElementDescriptor(args.slice(0,3))&&args.length===5&&args[4]===true)&&assert$1(\"@tracked can only be used directly as a native decorator. If you're using tracked in classic classes, add parenthesis to call it like a function: tracked()\",!(isElementDescriptor(args.slice(0,3))&&args.length===5&&args[4]===true));if(!isElementDescriptor(args)){var propertyDesc=args[0];!(args.length===0||_typeof(propertyDesc)==='object'&&propertyDesc!==null)&&assert$1(\"tracked() may only receive an options object containing 'value' or 'initializer', received \".concat(propertyDesc),args.length===0||_typeof(propertyDesc)==='object'&&propertyDesc!==null);if(propertyDesc){var _keys3=Object.keys(propertyDesc);!(_keys3.length<=1&&(_keys3[0]===undefined||_keys3[0]==='value'||_keys3[0]==='initializer'))&&assert$1(\"The options object passed to tracked() may only contain a 'value' or 'initializer' property, not both. Received: [\".concat(_keys3,\"]\"),_keys3.length<=1&&(_keys3[0]===undefined||_keys3[0]==='value'||_keys3[0]==='initializer'));!(!('initializer'in propertyDesc)||typeof propertyDesc.initializer==='function')&&assert$1(\"The initializer passed to tracked must be a function. Received \".concat(propertyDesc.initializer),!('initializer'in propertyDesc)||typeof propertyDesc.initializer==='function');}var initializer=propertyDesc?propertyDesc.initializer:undefined;var value=propertyDesc?propertyDesc.value:undefined;var decorator=function decorator(target,key,_desc,_meta,isClassicDecorator){!isClassicDecorator&&assert$1(\"You attempted to set a default value for \".concat(key,\" with the @tracked({ value: 'default' }) syntax. You can only use this syntax with classic classes. For native classes, you can use class initializers: @tracked field = 'default';\"),isClassicDecorator);var fieldDesc={initializer:initializer||function(){return value;}};return descriptorForField([target,key,fieldDesc]);};setClassicDecorator(decorator);return decorator;}return descriptorForField(args);}{// Normally this isn't a classic decorator, but we want to throw a helpful\n// error in development so we need it to treat it like one\nsetClassicDecorator(tracked);}function descriptorForField(_ref97){var _ref98=_slicedToArray(_ref97,3),target=_ref98[0],key=_ref98[1],desc=_ref98[2];!(!desc||!desc.value&&!desc.get&&!desc.set)&&assert$1(\"You attempted to use @tracked on \".concat(key,\", but that element is not a class field. @tracked is only usable on class fields. Native getters and setters will autotrack add any tracked fields they encounter, so there is no need mark getters and setters with @tracked.\"),!desc||!desc.value&&!desc.get&&!desc.set);var _trackedData=trackedData(key,desc?desc.initializer:undefined),getter=_trackedData.getter,setter=_trackedData.setter;function get(){var value=getter(this);// Add the tag of the returned value if it is an array, since arrays\n// should always cause updates if they are consumed and then changed\nif(Array.isArray(value)||isEmberArray(value)){consumeTag(tagFor(value,'[]'));}return value;}function set(newValue){setter(this,newValue);dirtyTagFor(this,SELF_TAG);}var newDesc={enumerable:true,configurable:true,isTracked:true,get:get,set:set};COMPUTED_SETTERS.add(set);meta(target).writeDescriptors(key,new TrackedDescriptor(get,set));return newDesc;}var TrackedDescriptor=/*#__PURE__*/function(){function TrackedDescriptor(_get,_set){_classCallCheck(this,TrackedDescriptor);this._get=_get;this._set=_set;CHAIN_PASS_THROUGH.add(this);}return _createClass(TrackedDescriptor,[{key:\"get\",value:function get(obj){return this._get.call(obj);}},{key:\"set\",value:function set(obj,_key,value){this._set.call(obj,value);}}]);}();// NOTE: copied from: https://github.com/glimmerjs/glimmer.js/pull/358\n// Both glimmerjs/glimmer.js and emberjs/ember.js have the exact same implementation\n// of @cached, so any changes made to one should also be made to the other\n/**\n           * @decorator\n           *\n            Gives the getter a caching behavior. The return value of the getter\n            will be cached until any of the properties it is entangled with\n            are invalidated. This is useful when a getter is expensive and\n            used very often.\n\n            For instance, in this `GuestList` class, we have the `sortedGuests`\n            getter that sorts the guests alphabetically:\n\n            ```javascript\n              import { tracked } from '@glimmer/tracking';\n\n              class GuestList {\n                @tracked guests = ['Zoey', 'Tomster'];\n\n                get sortedGuests() {\n                  return this.guests.slice().sort()\n                }\n              }\n            ```\n\n            Every time `sortedGuests` is accessed, a new array will be created and sorted,\n            because JavaScript getters do not cache by default. When the guest list\n            is small, like the one in the example, this is not a problem. However, if\n            the guest list were to grow very large, it would mean that we would be doing\n            a large amount of work each time we accessed `sortedGuests`. With `@cached`,\n            we can cache the value instead:\n\n            ```javascript\n              import { tracked, cached } from '@glimmer/tracking';\n\n              class GuestList {\n                @tracked guests = ['Zoey', 'Tomster'];\n\n                @cached\n                get sortedGuests() {\n                  return this.guests.slice().sort()\n                }\n              }\n            ```\n\n            Now the `sortedGuests` getter will be cached based on autotracking.\n            It will only rerun and create a new sorted array when the guests tracked\n            property is updated.\n\n\n            ### Tradeoffs\n\n            Overuse is discouraged.\n\n            In general, you should avoid using `@cached` unless you have confirmed that\n            the getter you are decorating is computationally expensive, since `@cached`\n            adds a small amount of overhead to the getter.\n            While the individual costs are small, a systematic use of the `@cached`\n            decorator can add up to a large impact overall in your app.\n            Many getters and tracked properties are only accessed once during rendering,\n            and then never rerendered, so adding `@cached` when unnecessary can\n            negatively impact performance.\n\n            Also, `@cached` may rerun even if the values themselves have not changed,\n            since tracked properties will always invalidate.\n            For example updating an integer value from `5` to an other `5` will trigger\n            a rerun of the cached properties building from this integer.\n\n            Avoiding a cache invalidation in this case is not something that can\n            be achieved on the `@cached` decorator itself, but rather when updating\n            the underlying tracked values, by applying some diff checking mechanisms:\n\n            ```javascript\n            if (nextValue !== this.trackedProp) {\n              this.trackedProp = nextValue;\n            }\n            ```\n\n            Here equal values won't update the property, therefore not triggering\n            the subsequent cache invalidations of the `@cached` properties who were\n            using this `trackedProp`.\n\n            Remember that setting tracked data should only be done during initialization, \n            or as the result of a user action. Setting tracked data during render\n            (such as in a getter), is not supported.\n\n            @method cached\n            @static\n            @for @glimmer/tracking\n            @public\n           */var cached=function cached(){for(var _len16=arguments.length,args=new Array(_len16),_key17=0;_key17<_len16;_key17++){args[_key17]=arguments[_key17];}var target=args[0],key=args[1],descriptor=args[2];// Error on `@cached()`, `@cached(...args)`, and `@cached propName = value;`\nif(target===undefined)throwCachedExtraneousParens();if(_typeof(target)!=='object'||typeof key!=='string'||_typeof(descriptor)!=='object'||args.length!==3){throwCachedInvalidArgsError(args);}if(!('get'in descriptor)||typeof descriptor.get!=='function'){throwCachedGetterOnlyError(key);}var caches=new WeakMap();var getter=descriptor.get;descriptor.get=function(){if(!caches.has(this)){caches.set(this,createCache(getter.bind(this)));}return getValue(caches.get(this));};};function throwCachedExtraneousParens(){throw new Error('You attempted to use @cached(), which is not necessary nor supported. Remove the parentheses and you will be good to go!');}function throwCachedGetterOnlyError(key){throw new Error(\"The @cached decorator must be applied to getters. '\".concat(key,\"' is not a getter.\"));}function throwCachedInvalidArgsError(){var args=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];throw new Error(\"You attempted to use @cached on with \".concat(args.length>1?'arguments':'an argument',\" ( @cached(\").concat(args.map(function(d){return\"'\".concat(d,\"'\");}).join(', '),\"), which is not supported. Dependencies are automatically tracked, so you can just use \",'`@cached`'));}var hasOwnProperty$2=Object.prototype.hasOwnProperty;var searchDisabled=false;var flags={_set:0,_unprocessedNamespaces:false,get unprocessedNamespaces(){return this._unprocessedNamespaces;},set unprocessedNamespaces(v){this._set++;this._unprocessedNamespaces=v;}};var unprocessedMixins=false;var NAMESPACES=[];var NAMESPACES_BY_ID=Object.create(null);function addNamespace(namespace){flags.unprocessedNamespaces=true;NAMESPACES.push(namespace);}function removeNamespace(namespace){var name=getName(namespace);delete NAMESPACES_BY_ID[name];NAMESPACES.splice(NAMESPACES.indexOf(namespace),1);if(name in context$1.lookup&&namespace===context$1.lookup[name]){context$1.lookup[name]=undefined;}}function findNamespaces(){if(!flags.unprocessedNamespaces){return;}var lookup=context$1.lookup;var keys=Object.keys(lookup);for(var _i7=0,_keys4=keys;_i7<_keys4.length;_i7++){var key=_keys4[_i7];// Only process entities that start with uppercase A-Z\nif(!isUppercase(key.charCodeAt(0))){continue;}var obj=tryIsNamespace(lookup,key);if(obj){setName(obj,key);}}}function findNamespace(name){if(!searchDisabled){processAllNamespaces();}return NAMESPACES_BY_ID[name];}function processNamespace(namespace){_processNamespace([namespace.toString()],namespace,new Set());}function processAllNamespaces(){var unprocessedNamespaces=flags.unprocessedNamespaces;if(unprocessedNamespaces){findNamespaces();flags.unprocessedNamespaces=false;}if(unprocessedNamespaces||unprocessedMixins){var namespaces=NAMESPACES;var _iterator27=_createForOfIteratorHelper(namespaces),_step27;try{for(_iterator27.s();!(_step27=_iterator27.n()).done;){var namespace=_step27.value;processNamespace(namespace);}}catch(err){_iterator27.e(err);}finally{_iterator27.f();}unprocessedMixins=false;}}function isSearchDisabled(){return searchDisabled;}function setSearchDisabled(flag){searchDisabled=Boolean(flag);}function setUnprocessedMixins(){unprocessedMixins=true;}function _processNamespace(paths,root,seen){var idx=paths.length;var id=paths.join('.');NAMESPACES_BY_ID[id]=root;setName(root,id);// Loop over all of the keys in the namespace, looking for classes\nfor(var key in root){if(!hasOwnProperty$2.call(root,key)){continue;}var obj=root[key];// If we are processing the `Ember` namespace, for example, the\n// `paths` will start with `[\"Ember\"]`. Every iteration through\n// the loop will update the **second** element of this list with\n// the key, so processing `Ember.View` will make the Array\n// `['Ember', 'View']`.\npaths[idx]=key;// If we have found an unprocessed class\nif(obj&&getName(obj)===void 0){// Replace the class' `toString` with the dot-separated path\nsetName(obj,paths.join('.'));// Support nested namespaces\n}else if(obj&&isNamespace(obj)){// Skip aliased namespaces\nif(seen.has(obj)){continue;}seen.add(obj);// Process the child namespace\n_processNamespace(paths,obj,seen);}}paths.length=idx;// cut out last item\n}function isNamespace(obj){return obj!=null&&_typeof(obj)==='object'&&obj.isNamespace;}function isUppercase(code){return code>=65&&code<=90// A\n;// Z\n}function tryIsNamespace(lookup,prop){try{var obj=lookup[prop];return(obj!==null&&_typeof(obj)==='object'||typeof obj==='function')&&obj.isNamespace&&obj;}catch(_e){// continue\n}}var emberinternalsMetalIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,ASYNC_OBSERVERS:ASYNC_OBSERVERS,ComputedDescriptor:ComputedDescriptor,ComputedProperty:ComputedProperty,get DEBUG_INJECTION_FUNCTIONS(){return DEBUG_INJECTION_FUNCTIONS;},Libraries:Libraries,NAMESPACES:NAMESPACES,NAMESPACES_BY_ID:NAMESPACES_BY_ID,PROPERTY_DID_CHANGE:PROPERTY_DID_CHANGE,PROXY_CONTENT:PROXY_CONTENT,SYNC_OBSERVERS:SYNC_OBSERVERS,TrackedDescriptor:TrackedDescriptor,_getPath:_getPath,_getProp:_getProp,_setProp:_setProp,activateObserver:activateObserver,addArrayObserver:addArrayObserver,addListener:addListener,addNamespace:addNamespace,addObserver:_addObserver,alias:alias,arrayContentDidChange:arrayContentDidChange,arrayContentWillChange:arrayContentWillChange,autoComputed:autoComputed,beginPropertyChanges:_beginPropertyChanges,cached:cached,changeProperties:changeProperties,computed:computed,createCache:createCache,defineDecorator:defineDecorator,defineProperty:defineProperty,defineValue:defineValue,deprecateProperty:deprecateProperty,descriptorForDecorator:descriptorForDecorator,descriptorForProperty:descriptorForProperty,eachProxyArrayDidChange:eachProxyArrayDidChange,eachProxyArrayWillChange:eachProxyArrayWillChange,endPropertyChanges:_endPropertyChanges,expandProperties:expandProperties,findNamespace:findNamespace,findNamespaces:findNamespaces,flushAsyncObservers:flushAsyncObservers,get:get$2,getCachedValueFor:getCachedValueFor,getProperties:_getProperties,getValue:getValue,hasListeners:hasListeners,hasUnknownProperty:hasUnknownProperty,inject:inject$2,isClassicDecorator:isClassicDecorator,isComputed:isComputed,isConst:isConst,isElementDescriptor:isElementDescriptor,isNamespaceSearchDisabled:isSearchDisabled,libraries:LIBRARIES,makeComputedDecorator:makeComputedDecorator,markObjectAsDirty:markObjectAsDirty,nativeDescDecorator:nativeDescDecorator,notifyPropertyChange:_notifyPropertyChange,objectAt:objectAt,on:on$3,processAllNamespaces:processAllNamespaces,processNamespace:processNamespace,removeArrayObserver:removeArrayObserver,removeListener:removeListener,removeNamespace:removeNamespace,removeObserver:_removeObserver,replace:replace,replaceInNativeArray:replaceInNativeArray,revalidateObservers:revalidateObservers,sendEvent:sendEvent,set:_set5,setClassicDecorator:setClassicDecorator,setNamespaceSearchDisabled:setSearchDisabled,setProperties:_setProperties,setUnprocessedMixins:setUnprocessedMixins,tagForObject:tagForObject,tagForProperty:tagForProperty,tracked:tracked,trySet:trySet},Symbol.toStringTag,{value:'Module'});var emberObjectEvents=/*#__PURE__*/Object.defineProperty({__proto__:null,addListener:addListener,removeListener:removeListener,sendEvent:sendEvent},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object/mixin\n          */var a_concat=Array.prototype.concat;var isArray$4=Array.isArray;function extractAccessors(properties){if(properties!==undefined){for(var _i8=0,_Object$keys=Object.keys(properties);_i8<_Object$keys.length;_i8++){var key=_Object$keys[_i8];var desc=Object.getOwnPropertyDescriptor(properties,key);if(desc.get!==undefined||desc.set!==undefined){Object.defineProperty(properties,key,{value:nativeDescDecorator(desc)});}}}return properties;}function concatenatedMixinProperties(concatProp,props,values,base){// reset before adding each new mixin to pickup concats from previous\nvar concats=values[concatProp]||base[concatProp];if(props[concatProp]){concats=concats?a_concat.call(concats,props[concatProp]):props[concatProp];}return concats;}function giveDecoratorSuper(key,decorator,property,descs){if(property===true){return decorator;}var originalGetter=property._getter;if(originalGetter===undefined){return decorator;}var superDesc=descs[key];// Check to see if the super property is a decorator first, if so load its descriptor\nvar superProperty=typeof superDesc==='function'?descriptorForDecorator(superDesc):superDesc;if(superProperty===undefined||superProperty===true){return decorator;}var superGetter=superProperty._getter;if(superGetter===undefined){return decorator;}var get=wrap$1(originalGetter,superGetter);var set;var originalSetter=property._setter;var superSetter=superProperty._setter;if(superSetter!==undefined){if(originalSetter!==undefined){set=wrap$1(originalSetter,superSetter);}else{// If the super property has a setter, we default to using it no matter what.\n// This is clearly very broken and weird, but it's what was here so we have\n// to keep it until the next major at least.\n//\n// TODO: Add a deprecation here.\nset=superSetter;}}else{set=originalSetter;}// only create a new CP if we must\nif(get!==originalGetter||set!==originalSetter){// Since multiple mixins may inherit from the same parent, we need\n// to clone the computed property so that other mixins do not receive\n// the wrapped version.\nvar dependentKeys=property._dependentKeys||[];var newProperty=new ComputedProperty([].concat(_toConsumableArray(dependentKeys),[{get:get,set:set}]));newProperty._readOnly=property._readOnly;newProperty._meta=property._meta;newProperty.enumerable=property.enumerable;// SAFETY: We passed in the impl for this class\nreturn makeComputedDecorator(newProperty,ComputedProperty);}return decorator;}function giveMethodSuper(key,method,values,descs){// Methods overwrite computed properties, and do not call super to them.\nif(descs[key]!==undefined){return method;}// Find the original method in a parent mixin\nvar superMethod=values[key];// Only wrap the new method if the original method was a function\nif(typeof superMethod==='function'){return wrap$1(method,superMethod);}return method;}function simpleMakeArray(value){if(!value){return[];}else if(!Array.isArray(value)){return[value];}else{return value;}}function applyConcatenatedProperties(key,value,values){var baseValue=values[key];var ret=simpleMakeArray(baseValue).concat(simpleMakeArray(value));{// it is possible to use concatenatedProperties with strings (which cannot be frozen)\n// only freeze objects...\nif(_typeof(ret)==='object'&&ret!==null){// prevent mutating `concatenatedProperties` array after it is applied\nObject.freeze(ret);}}return ret;}function applyMergedProperties(key,value,values){var baseValue=values[key];!!isArray$4(value)&&assert$1(\"You passed in `\".concat(JSON.stringify(value),\"` as the value for `\").concat(key,\"` but `\").concat(key,\"` cannot be an Array\"),!isArray$4(value));if(!baseValue){return value;}var newBase=Object.assign({},baseValue);var hasFunction=false;var props=Object.keys(value);for(var _i9=0,_props2=props;_i9<_props2.length;_i9++){var prop=_props2[_i9];var propValue=value[prop];if(typeof propValue==='function'){hasFunction=true;newBase[prop]=giveMethodSuper(prop,propValue,baseValue,{});}else{newBase[prop]=propValue;}}if(hasFunction){newBase._super=ROOT;}return newBase;}function mergeMixins(mixins,meta,descs,values,base,keys,keysWithSuper){var currentMixin;for(var i=0;i<mixins.length;i++){currentMixin=mixins[i];!(_typeof(currentMixin)==='object'&&currentMixin!==null&&Object.prototype.toString.call(currentMixin)!=='[object Array]')&&assert$1(\"Expected hash or Mixin instance, got \".concat(Object.prototype.toString.call(currentMixin)),_typeof(currentMixin)==='object'&&currentMixin!==null&&Object.prototype.toString.call(currentMixin)!=='[object Array]');if(MIXINS.has(currentMixin)){if(meta.hasMixin(currentMixin)){continue;}meta.addMixin(currentMixin);var _currentMixin=currentMixin,properties=_currentMixin.properties,_mixins=_currentMixin.mixins;if(properties!==undefined){mergeProps(meta,properties,descs,values,base,keys,keysWithSuper);}else if(_mixins!==undefined){mergeMixins(_mixins,meta,descs,values,base,keys,keysWithSuper);if(currentMixin instanceof Mixin&&currentMixin._without!==undefined){currentMixin._without.forEach(function(keyName){// deleting the key means we won't process the value\nvar index=keys.indexOf(keyName);if(index!==-1){keys.splice(index,1);}});}}}else{mergeProps(meta,currentMixin,descs,values,base,keys,keysWithSuper);}}}function mergeProps(meta,props,descs,values,base,keys,keysWithSuper){var concats=concatenatedMixinProperties('concatenatedProperties',props,values,base);var mergings=concatenatedMixinProperties('mergedProperties',props,values,base);var propKeys=Object.keys(props);for(var _i10=0,_propKeys=propKeys;_i10<_propKeys.length;_i10++){var key=_propKeys[_i10];var value=props[key];if(value===undefined)continue;if(keys.indexOf(key)===-1){keys.push(key);var desc=meta.peekDescriptors(key);if(desc===undefined){// If the value is a classic decorator, we don't want to actually\n// access it, because that will execute the decorator while we're\n// building the class.\nif(!isClassicDecorator(value)){// The superclass did not have a CP, which means it may have\n// observers or listeners on that property.\nvar prev=values[key]=base[key];if(typeof prev==='function'){updateObserversAndListeners(base,key,prev,false);}}}else{descs[key]=desc;// The super desc will be overwritten on descs, so save off the fact that\n// there was a super so we know to Object.defineProperty when writing\n// the value\nkeysWithSuper.push(key);desc.teardown(base,key,meta);}}var isFunction=typeof value==='function';if(isFunction){var _desc2=descriptorForDecorator(value);if(_desc2!==undefined){// Wrap descriptor function to implement _super() if needed\ndescs[key]=giveDecoratorSuper(key,value,_desc2,descs);values[key]=undefined;continue;}}if(concats&&concats.indexOf(key)>=0||key==='concatenatedProperties'||key==='mergedProperties'){value=applyConcatenatedProperties(key,value,values);}else if(mergings&&mergings.indexOf(key)>-1){value=applyMergedProperties(key,value,values);}else if(isFunction){value=giveMethodSuper(key,value,values,descs);}values[key]=value;descs[key]=undefined;}}function updateObserversAndListeners(obj,key,fn,add){var meta=observerListenerMetaFor(fn);if(meta===undefined)return;var observers=meta.observers,listeners=meta.listeners;if(observers!==undefined){var updateObserver=add?_addObserver:_removeObserver;var _iterator28=_createForOfIteratorHelper(observers.paths),_step28;try{for(_iterator28.s();!(_step28=_iterator28.n()).done;){var path=_step28.value;updateObserver(obj,path,null,key,observers.sync);}}catch(err){_iterator28.e(err);}finally{_iterator28.f();}}if(listeners!==undefined){var updateListener=add?addListener:removeListener;var _iterator29=_createForOfIteratorHelper(listeners),_step29;try{for(_iterator29.s();!(_step29=_iterator29.n()).done;){var listener=_step29.value;updateListener(obj,listener,null,key);}}catch(err){_iterator29.e(err);}finally{_iterator29.f();}}}function applyMixin(obj,mixins){var _hideKeys=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var descs=Object.create(null);var values=Object.create(null);var meta$1=meta(obj);var keys=[];var keysWithSuper=[];obj._super=ROOT;// Go through all mixins and hashes passed in, and:\n//\n// * Handle concatenated properties\n// * Handle merged properties\n// * Set up _super wrapping if necessary\n// * Set up computed property descriptors\n// * Copying `toString` in broken browsers\nmergeMixins(mixins,meta$1,descs,values,obj,keys,keysWithSuper);for(var _i11=0,_keys5=keys;_i11<_keys5.length;_i11++){var key=_keys5[_i11];var value=values[key];var desc=descs[key];if(value!==undefined){if(typeof value==='function'){updateObserversAndListeners(obj,key,value,true);}defineValue(obj,key,value,keysWithSuper.indexOf(key)!==-1,!_hideKeys);}else if(desc!==undefined){defineDecorator(obj,key,desc,meta$1);}}if(!meta$1.isPrototypeMeta(obj)){revalidateObservers(obj);}return obj;}/**\n            @method mixin\n            @param obj\n            @param mixins*\n            @return obj\n            @private\n          */function mixin(obj){for(var _len17=arguments.length,args=new Array(_len17>1?_len17-1:0),_key18=1;_key18<_len17;_key18++){args[_key18-1]=arguments[_key18];}applyMixin(obj,args);return obj;}var MIXINS=new WeakSet();/**\n            The `Mixin` class allows you to create mixins, whose properties can be\n            added to other classes. For instance,\n\n            ```javascript\n            import Mixin from '@ember/object/mixin';\n\n            const EditableMixin = Mixin.create({\n              edit() {\n                console.log('starting to edit');\n                this.set('isEditing', true);\n              },\n              isEditing: false\n            });\n            ```\n\n            ```javascript\n            import EmberObject from '@ember/object';\n            import EditableMixin from '../mixins/editable';\n\n            // Mix mixins into classes by passing them as the first arguments to\n            // `.extend.`\n            const Comment = EmberObject.extend(EditableMixin, {\n              post: null\n            });\n\n            let comment = Comment.create({\n              post: somePost\n            });\n\n            comment.edit(); // outputs 'starting to edit'\n            ```\n\n            Note that Mixins are created with `Mixin.create`, not\n            `Mixin.extend`.\n\n            Note that mixins extend a constructor's prototype so arrays and object literals\n            defined as properties will be shared amongst objects that implement the mixin.\n            If you want to define a property in a mixin that is not shared, you can define\n            it either as a computed property or have it be created on initialization of the object.\n\n            ```javascript\n            // filters array will be shared amongst any object implementing mixin\n            import Mixin from '@ember/object/mixin';\n            import { A } from '@ember/array';\n\n            const FilterableMixin = Mixin.create({\n              filters: A()\n            });\n            ```\n\n            ```javascript\n            import Mixin from '@ember/object/mixin';\n            import { A } from '@ember/array';\n            import { computed } from '@ember/object';\n\n            // filters will be a separate array for every object implementing the mixin\n            const FilterableMixin = Mixin.create({\n              filters: computed(function() {\n                return A();\n              })\n            });\n            ```\n\n            ```javascript\n            import Mixin from '@ember/object/mixin';\n            import { A } from '@ember/array';\n\n            // filters will be created as a separate array during the object's initialization\n            const Filterable = Mixin.create({\n              filters: null,\n\n              init() {\n                this._super(...arguments);\n                this.set(\"filters\", A());\n              }\n            });\n            ```\n\n            @class Mixin\n            @public\n          */var Mixin=/*#__PURE__*/function(){/** @internal */function Mixin(mixins,properties){_classCallCheck(this,Mixin);/** @internal *//** @internal */_defineProperty(this,\"mixins\",void 0);/** @internal */_defineProperty(this,\"properties\",void 0);/** @internal */_defineProperty(this,\"ownerConstructor\",void 0);/** @internal */_defineProperty(this,\"_without\",void 0);MIXINS.add(this);this.properties=extractAccessors(properties);this.mixins=buildMixinsArray(mixins);this.ownerConstructor=undefined;this._without=undefined;{// Eagerly add INIT_FACTORY to avoid issues in DEBUG as a result of Object.seal(mixin)\nthis[INIT_FACTORY]=null;/*\n                  In debug builds, we seal mixins to help avoid performance pitfalls.\n                   In IE11 there is a quirk that prevents sealed objects from being added\n                  to a WeakMap. Unfortunately, the mixin system currently relies on\n                  weak maps in `guidFor`, so we need to prime the guid cache weak map.\n                */guidFor(this);if(Mixin._disableDebugSeal!==true){Object.seal(this);}}}/**\n              @method create\n              @for @ember/object/mixin\n              @static\n              @param arguments*\n              @public\n            */return _createClass(Mixin,[{key:\"reopen\",value:/**\n              @method reopen\n              @param arguments*\n              @private\n              @internal\n            */function reopen(){for(var _len18=arguments.length,args=new Array(_len18),_key19=0;_key19<_len18;_key19++){args[_key19]=arguments[_key19];}if(args.length===0){return this;}if(this.properties){var currentMixin=new Mixin(undefined,this.properties);this.properties=undefined;this.mixins=[currentMixin];}else if(!this.mixins){this.mixins=[];}this.mixins=this.mixins.concat(buildMixinsArray(args));return this;}/**\n              @method apply\n              @param obj\n              @return applied object\n              @private\n              @internal\n            */},{key:\"apply\",value:function apply(obj){var _hideKeys=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;// Ember.NativeArray is a normal Ember.Mixin that we mix into `Array.prototype` when prototype extensions are enabled\n// mutating a native object prototype like this should _not_ result in enumerable properties being added (or we have significant\n// issues with things like deep equality checks from test frameworks, or things like jQuery.extend(true, [], [])).\n//\n// _hideKeys disables enumerablity when applying the mixin. This is a hack, and we should stop mutating the array prototype by default 😫\nreturn applyMixin(obj,[this],_hideKeys);}/** @internal */},{key:\"applyPartial\",value:function applyPartial(obj){return applyMixin(obj,[this]);}/**\n              @method detect\n              @param obj\n              @return {Boolean}\n              @private\n              @internal\n            */},{key:\"detect\",value:function detect(obj){if(_typeof(obj)!=='object'||obj===null){return false;}if(MIXINS.has(obj)){return _detect(obj,this);}var meta=peekMeta(obj);if(meta===null){return false;}return meta.hasMixin(this);}/** @internal */},{key:\"without\",value:function without(){var ret=new Mixin([this]);for(var _len19=arguments.length,args=new Array(_len19),_key20=0;_key20<_len19;_key20++){args[_key20]=arguments[_key20];}ret._without=args;return ret;}/** @internal */},{key:\"keys\",value:function keys(){var keys=_keys(this);!keys&&assert$1('[BUG] Missing keys for mixin!',keys);return keys;}/** @internal */},{key:\"toString\",value:function toString(){return'(unknown mixin)';}}],[{key:\"create\",value:function create(){setUnprocessedMixins();var M=this;for(var _len20=arguments.length,args=new Array(_len20),_key21=0;_key21<_len20;_key21++){args[_key21]=arguments[_key21];}return new M(args,undefined);}// returns the mixins currently applied to the specified object\n// TODO: Make `mixin`\n/** @internal */},{key:\"mixins\",value:function mixins(obj){var meta=peekMeta(obj);var ret=[];if(meta===null){return ret;}meta.forEachMixins(function(currentMixin){// skip primitive mixins since these are always anonymous\nif(!currentMixin.properties){ret.push(currentMixin);}});return ret;}}]);}();{Object.defineProperty(Mixin,'_disableDebugSeal',{configurable:true,enumerable:false,writable:true,value:false});}function buildMixinsArray(mixins){var length=mixins&&mixins.length||0;var m=undefined;if(length>0){m=new Array(length);for(var i=0;i<length;i++){var x=mixins[i];!(_typeof(x)==='object'&&x!==null&&Object.prototype.toString.call(x)!=='[object Array]')&&assert$1(\"Expected hash or Mixin instance, got \".concat(Object.prototype.toString.call(x)),_typeof(x)==='object'&&x!==null&&Object.prototype.toString.call(x)!=='[object Array]');if(MIXINS.has(x)){m[i]=x;}else{m[i]=new Mixin(undefined,x);}}}return m;}{Object.seal(Mixin.prototype);}function _detect(curMixin,targetMixin){var seen=arguments.length>2&&arguments[2]!==undefined?arguments[2]:new Set();if(seen.has(curMixin)){return false;}seen.add(curMixin);if(curMixin===targetMixin){return true;}var mixins=curMixin.mixins;if(mixins){return mixins.some(function(mixin){return _detect(mixin,targetMixin,seen);});}return false;}function _keys(mixin){var ret=arguments.length>1&&arguments[1]!==undefined?arguments[1]:new Set();var seen=arguments.length>2&&arguments[2]!==undefined?arguments[2]:new Set();if(seen.has(mixin)){return;}seen.add(mixin);if(mixin.properties){var _props3=Object.keys(mixin.properties);for(var _i12=0,_props4=_props3;_i12<_props4.length;_i12++){var prop=_props4[_i12];ret.add(prop);}}else if(mixin.mixins){mixin.mixins.forEach(function(x){return _keys(x,ret,seen);});}return ret;}var emberObjectMixin=/*#__PURE__*/Object.defineProperty({__proto__:null,applyMixin:applyMixin,default:Mixin,mixin:mixin},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            RegistryProxyMixin is used to provide public access to specific\n            registry functionality.\n\n            @class RegistryProxyMixin\n            @extends RegistryProxy\n            @private\n          */var RegistryProxyMixin=Mixin.create({__registry__:null,resolveRegistration:function resolveRegistration(fullName){!this.__registry__.isValidFullName(fullName)&&assert$1('fullName must be a proper full name',this.__registry__.isValidFullName(fullName));return this.__registry__.resolve(fullName);},register:registryAlias('register'),unregister:registryAlias('unregister'),hasRegistration:registryAlias('has'),registeredOption:registryAlias('getOption'),registerOptions:registryAlias('options'),registeredOptions:registryAlias('getOptions'),registerOptionsForType:registryAlias('optionsForType'),registeredOptionsForType:registryAlias('getOptionsForType')});function registryAlias(name){return function(){var _this$__registry__;// We need this cast because `Parameters` is deferred so that it is not\n// possible for TS to see it will always produce the right type. However,\n// since `AnyFn` has a rest type, it is allowed. See discussion on [this\n// issue](https://github.com/microsoft/TypeScript/issues/47615).\nreturn(_this$__registry__=this.__registry__)[name].apply(_this$__registry__,arguments);};}var emberinternalsRuntimeLibMixinsRegistryProxy=/*#__PURE__*/Object.defineProperty({__proto__:null,default:RegistryProxyMixin},Symbol.toStringTag,{value:'Module'});var SET_TIMEOUT=setTimeout;var NOOP$4=function NOOP$4(){};function buildNext(flush){// Using \"promises first\" here to:\n//\n// 1) Ensure more consistent experience on browsers that\n//    have differently queued microtasks (separate queues for\n//    MutationObserver vs Promises).\n// 2) Ensure better debugging experiences (it shows up in Chrome\n//    call stack as \"Promise.then (async)\") which is more consistent\n//    with user expectations\n//\n// When Promise is unavailable use MutationObserver (mostly so that we\n// still get microtasks on IE11), and when neither MutationObserver and\n// Promise are present use a plain old setTimeout.\nif(typeof Promise==='function'){var autorunPromise=Promise.resolve();return function(){return autorunPromise.then(flush);};}else if(typeof MutationObserver==='function'){var iterations=0;var _observer2=new MutationObserver(flush);var node=document.createTextNode('');_observer2.observe(node,{characterData:true});return function(){iterations=++iterations%2;node.data=''+iterations;return iterations;};}else{return function(){return SET_TIMEOUT(flush,0);};}}function buildPlatform(flush){var clearNext=NOOP$4;return{setTimeout:function(_setTimeout){function setTimeout(_x,_x2){return _setTimeout.apply(this,arguments);}setTimeout.toString=function(){return _setTimeout.toString();};return setTimeout;}(function(fn,ms){return setTimeout(fn,ms);}),clearTimeout:function(_clearTimeout){function clearTimeout(_x3){return _clearTimeout.apply(this,arguments);}clearTimeout.toString=function(){return _clearTimeout.toString();};return clearTimeout;}(function(timerId){return clearTimeout(timerId);}),now:function now(){return Date.now();},next:buildNext(flush),clearNext:clearNext};}var NUMBER=/\\d+/;var TIMERS_OFFSET=6;function isCoercableNumber(suspect){var type=_typeof(suspect);return type==='number'&&suspect===suspect||type==='string'&&NUMBER.test(suspect);}function getOnError(options){return options.onError||options.onErrorTarget&&options.onErrorTarget[options.onErrorMethod];}function findItem(target,method,collection){var index=-1;for(var i=0,l=collection.length;i<l;i+=4){if(collection[i]===target&&collection[i+1]===method){index=i;break;}}return index;}function findTimerItem(target,method,collection){var index=-1;for(var i=2,l=collection.length;i<l;i+=6){if(collection[i]===target&&collection[i+1]===method){index=i-2;break;}}return index;}function getQueueItems(items,queueItemLength){var queueItemPositionOffset=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var queueItems=[];for(var i=0;i<items.length;i+=queueItemLength){var maybeError=items[i+3/* stack */+queueItemPositionOffset];var queueItem={target:items[i+0/* target */+queueItemPositionOffset],method:items[i+1/* method */+queueItemPositionOffset],args:items[i+2/* args */+queueItemPositionOffset],stack:maybeError!==undefined&&'stack'in maybeError?maybeError.stack:''};queueItems.push(queueItem);}return queueItems;}function binarySearch(time,timers){var start=0;var end=timers.length-TIMERS_OFFSET;var middle;var l;while(start<end){// since timers is an array of pairs 'l' will always\n// be an integer\nl=(end-start)/TIMERS_OFFSET;// compensate for the index in case even number\n// of pairs inside timers\nmiddle=start+l-l%TIMERS_OFFSET;if(time>=timers[middle]){start=middle+TIMERS_OFFSET;}else{end=middle;}}return time>=timers[start]?start+TIMERS_OFFSET:start;}var QUEUE_ITEM_LENGTH=4;var Queue=/*#__PURE__*/function(){function Queue(name){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var globalOptions=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};_classCallCheck(this,Queue);this._queueBeingFlushed=[];this.targetQueues=new Map();this.index=0;this._queue=[];this.name=name;this.options=options;this.globalOptions=globalOptions;}return _createClass(Queue,[{key:\"stackFor\",value:function stackFor(index){if(index<this._queue.length){var entry=this._queue[index*3+QUEUE_ITEM_LENGTH];if(entry){return entry.stack;}else{return null;}}}},{key:\"flush\",value:function flush(sync){var _this$options=this.options,before=_this$options.before,after=_this$options.after;var target;var method;var args;var errorRecordedForStack;this.targetQueues.clear();if(this._queueBeingFlushed.length===0){this._queueBeingFlushed=this._queue;this._queue=[];}if(before!==undefined){before();}var invoke;var queueItems=this._queueBeingFlushed;if(queueItems.length>0){var onError=getOnError(this.globalOptions);invoke=onError?this.invokeWithOnError:this.invoke;for(var i=this.index;i<queueItems.length;i+=QUEUE_ITEM_LENGTH){this.index+=QUEUE_ITEM_LENGTH;method=queueItems[i+1];// method could have been nullified / canceled during flush\nif(method!==null){//\n//    ** Attention intrepid developer **\n//\n//    To find out the stack of this task when it was scheduled onto\n//    the run loop, add the following to your app.js:\n//\n//    Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.\n//\n//    Once that is in place, when you are at a breakpoint and navigate\n//    here in the stack explorer, you can look at `errorRecordedForStack.stack`,\n//    which will be the captured stack when this job was scheduled.\n//\n//    One possible long-term solution is the following Chrome issue:\n//       https://bugs.chromium.org/p/chromium/issues/detail?id=332624\n//\ntarget=queueItems[i];args=queueItems[i+2];errorRecordedForStack=queueItems[i+3];// Debugging assistance\ninvoke(target,method,args,onError,errorRecordedForStack);}if(this.index!==this._queueBeingFlushed.length&&this.globalOptions.mustYield&&this.globalOptions.mustYield()){return 1/* Pause */;}}}if(after!==undefined){after();}this._queueBeingFlushed.length=0;this.index=0;if(sync!==false&&this._queue.length>0){// check if new items have been added\nthis.flush(true);}}},{key:\"hasWork\",value:function hasWork(){return this._queueBeingFlushed.length>0||this._queue.length>0;}},{key:\"cancel\",value:function cancel(_ref99){var target=_ref99.target,method=_ref99.method;var queue=this._queue;var targetQueueMap=this.targetQueues.get(target);if(targetQueueMap!==undefined){targetQueueMap.delete(method);}var index=findItem(target,method,queue);if(index>-1){queue[index+1]=null;return true;}// if not found in current queue\n// could be in the queue that is being flushed\nqueue=this._queueBeingFlushed;index=findItem(target,method,queue);if(index>-1){queue[index+1]=null;return true;}return false;}},{key:\"push\",value:function push(target,method,args,stack){this._queue.push(target,method,args,stack);return{queue:this,target:target,method:method};}},{key:\"pushUnique\",value:function pushUnique(target,method,args,stack){var localQueueMap=this.targetQueues.get(target);if(localQueueMap===undefined){localQueueMap=new Map();this.targetQueues.set(target,localQueueMap);}var index=localQueueMap.get(method);if(index===undefined){var queueIndex=this._queue.push(target,method,args,stack)-QUEUE_ITEM_LENGTH;localQueueMap.set(method,queueIndex);}else{var _queue=this._queue;_queue[index+2]=args;// replace args\n_queue[index+3]=stack;// replace stack\n}return{queue:this,target:target,method:method};}},{key:\"_getDebugInfo\",value:function _getDebugInfo(debugEnabled){if(debugEnabled){var debugInfo=getQueueItems(this._queue,QUEUE_ITEM_LENGTH);return debugInfo;}return undefined;}},{key:\"invoke\",value:function invoke(target,method,args/*, onError, errorRecordedForStack */){if(args===undefined){method.call(target);}else{method.apply(target,args);}}},{key:\"invokeWithOnError\",value:function invokeWithOnError(target,method,args,onError,errorRecordedForStack){try{if(args===undefined){method.call(target);}else{method.apply(target,args);}}catch(error){onError(error,errorRecordedForStack);}}}]);}();var DeferredActionQueues=/*#__PURE__*/function(){function DeferredActionQueues(){var queueNames=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var options=arguments.length>1?arguments[1]:undefined;_classCallCheck(this,DeferredActionQueues);this.queues={};this.queueNameIndex=0;this.queueNames=queueNames;queueNames.reduce(function(queues,queueName){queues[queueName]=new Queue(queueName,options[queueName],options);return queues;},this.queues);}/**\n             * @method schedule\n             * @param {String} queueName\n             * @param {Any} target\n             * @param {Any} method\n             * @param {Any} args\n             * @param {Boolean} onceFlag\n             * @param {Any} stack\n             * @return queue\n             */return _createClass(DeferredActionQueues,[{key:\"schedule\",value:function schedule(queueName,target,method,args,onceFlag,stack){var queues=this.queues;var queue=queues[queueName];if(queue===undefined){throw new Error(\"You attempted to schedule an action in a queue (\".concat(queueName,\") that doesn't exist\"));}if(method===undefined||method===null){throw new Error(\"You attempted to schedule an action in a queue (\".concat(queueName,\") for a method that doesn't exist\"));}this.queueNameIndex=0;if(onceFlag){return queue.pushUnique(target,method,args,stack);}else{return queue.push(target,method,args,stack);}}/**\n             * DeferredActionQueues.flush() calls Queue.flush()\n             *\n             * @method flush\n             * @param {Boolean} fromAutorun\n             */},{key:\"flush\",value:function flush(){var fromAutorun=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var queue;var queueName;var numberOfQueues=this.queueNames.length;while(this.queueNameIndex<numberOfQueues){queueName=this.queueNames[this.queueNameIndex];queue=this.queues[queueName];if(queue.hasWork()===false){this.queueNameIndex++;if(fromAutorun&&this.queueNameIndex<numberOfQueues){return 1/* Pause */;}}else{if(queue.flush(false/* async */)===1/* Pause */){return 1/* Pause */;}}}}/**\n             * Returns debug information for the current queues.\n             *\n             * @method _getDebugInfo\n             * @param {Boolean} debugEnabled\n             * @returns {IDebugInfo | undefined}\n             */},{key:\"_getDebugInfo\",value:function _getDebugInfo(debugEnabled){if(debugEnabled){var debugInfo={};var _queue2;var queueName;var numberOfQueues=this.queueNames.length;var i=0;while(i<numberOfQueues){queueName=this.queueNames[i];_queue2=this.queues[queueName];debugInfo[queueName]=_queue2._getDebugInfo(debugEnabled);i++;}return debugInfo;}return;}}]);}();function iteratorDrain(fn){var iterator=fn();var result=iterator.next();while(result.done===false){result.value();result=iterator.next();}}var noop$1=function noop$1(){};var DISABLE_SCHEDULE=Object.freeze([]);function parseArgs(){var length=arguments.length;var args;var method;var target;if(length===0);else if(length===1){target=null;method=arguments[0];}else{var argsIndex=2;var methodOrTarget=arguments[0];var methodOrArgs=arguments[1];var type=_typeof(methodOrArgs);if(type==='function'){target=methodOrTarget;method=methodOrArgs;}else if(methodOrTarget!==null&&type==='string'&&methodOrArgs in methodOrTarget){target=methodOrTarget;method=target[methodOrArgs];}else if(typeof methodOrTarget==='function'){argsIndex=1;target=null;method=methodOrTarget;}if(length>argsIndex){var _len21=length-argsIndex;args=new Array(_len21);for(var i=0;i<_len21;i++){args[i]=arguments[i+argsIndex];}}}return[target,method,args];}function parseTimerArgs(){var _parseArgs=parseArgs.apply(void 0,arguments),_parseArgs2=_slicedToArray(_parseArgs,3),target=_parseArgs2[0],method=_parseArgs2[1],args=_parseArgs2[2];var wait=0;var length=args!==undefined?args.length:0;if(length>0){var last=args[length-1];if(isCoercableNumber(last)){wait=parseInt(args.pop(),10);}}return[target,method,args,wait];}function parseDebounceArgs(){var target;var method;var isImmediate;var args;var wait;if(arguments.length===2){method=arguments[0];wait=arguments[1];target=null;}else{var _parseArgs3=parseArgs.apply(void 0,arguments);var _parseArgs4=_slicedToArray(_parseArgs3,3);target=_parseArgs4[0];method=_parseArgs4[1];args=_parseArgs4[2];if(args===undefined){wait=0;}else{wait=args.pop();if(!isCoercableNumber(wait)){isImmediate=wait===true;wait=args.pop();}}}wait=parseInt(wait,10);return[target,method,args,wait,isImmediate];}var UUID=0;var beginCount=0;var endCount=0;var beginEventCount=0;var endEventCount=0;var runCount=0;var joinCount=0;var deferCount=0;var scheduleCount=0;var scheduleIterableCount=0;var deferOnceCount=0;var scheduleOnceCount=0;var setTimeoutCount=0;var laterCount=0;var throttleCount=0;var debounceCount=0;var cancelTimersCount=0;var cancelCount=0;var autorunsCreatedCount=0;var autorunsCompletedCount=0;var deferredActionQueuesCreatedCount=0;var nestedDeferredActionQueuesCreated=0;var Backburner=/*#__PURE__*/function(){function Backburner(queueNames,options){var _this6=this;_classCallCheck(this,Backburner);this.DEBUG=false;this.currentInstance=null;this.instanceStack=[];this._eventCallbacks={end:[],begin:[]};this._timerTimeoutId=null;this._timers=[];this._autorun=false;this._autorunStack=null;this.queueNames=queueNames;this.options=options||{};if(typeof this.options.defaultQueue==='string'){this._defaultQueue=this.options.defaultQueue;}else{this._defaultQueue=this.queueNames[0];}this._onBegin=this.options.onBegin||noop$1;this._onEnd=this.options.onEnd||noop$1;this._boundRunExpiredTimers=this._runExpiredTimers.bind(this);this._boundAutorunEnd=function(){autorunsCompletedCount++;// if the autorun was already flushed, do nothing\nif(_this6._autorun===false){return;}_this6._autorun=false;_this6._autorunStack=null;_this6._end(true/* fromAutorun */);};var builder=this.options._buildPlatform||buildPlatform;this._platform=builder(this._boundAutorunEnd);}return _createClass(Backburner,[{key:\"counters\",get:function get(){return{begin:beginCount,end:endCount,events:{begin:beginEventCount,end:endEventCount},autoruns:{created:autorunsCreatedCount,completed:autorunsCompletedCount},run:runCount,join:joinCount,defer:deferCount,schedule:scheduleCount,scheduleIterable:scheduleIterableCount,deferOnce:deferOnceCount,scheduleOnce:scheduleOnceCount,setTimeout:setTimeoutCount,later:laterCount,throttle:throttleCount,debounce:debounceCount,cancelTimers:cancelTimersCount,cancel:cancelCount,loops:{total:deferredActionQueuesCreatedCount,nested:nestedDeferredActionQueuesCreated}};}},{key:\"defaultQueue\",get:function get(){return this._defaultQueue;}/*\n              @method begin\n              @return instantiated class DeferredActionQueues\n            */},{key:\"begin\",value:function begin(){beginCount++;var options=this.options;var previousInstance=this.currentInstance;var current;if(this._autorun!==false){current=previousInstance;this._cancelAutorun();}else{if(previousInstance!==null){nestedDeferredActionQueuesCreated++;this.instanceStack.push(previousInstance);}deferredActionQueuesCreatedCount++;current=this.currentInstance=new DeferredActionQueues(this.queueNames,options);beginEventCount++;this._trigger('begin',current,previousInstance);}this._onBegin(current,previousInstance);return current;}},{key:\"end\",value:function end(){endCount++;this._end(false);}},{key:\"on\",value:function on(eventName,callback){if(typeof callback!=='function'){throw new TypeError(\"Callback must be a function\");}var callbacks=this._eventCallbacks[eventName];if(callbacks!==undefined){callbacks.push(callback);}else{throw new TypeError(\"Cannot on() event \".concat(eventName,\" because it does not exist\"));}}},{key:\"off\",value:function off(eventName,callback){var callbacks=this._eventCallbacks[eventName];if(!eventName||callbacks===undefined){throw new TypeError(\"Cannot off() event \".concat(eventName,\" because it does not exist\"));}var callbackFound=false;if(callback){for(var i=0;i<callbacks.length;i++){if(callbacks[i]===callback){callbackFound=true;callbacks.splice(i,1);i--;}}}if(!callbackFound){throw new TypeError(\"Cannot off() callback that does not exist\");}}},{key:\"run\",value:function run(){runCount++;var _parseArgs5=parseArgs.apply(void 0,arguments),_parseArgs6=_slicedToArray(_parseArgs5,3),target=_parseArgs6[0],method=_parseArgs6[1],args=_parseArgs6[2];return this._run(target,method,args);}},{key:\"join\",value:function join(){joinCount++;var _parseArgs7=parseArgs.apply(void 0,arguments),_parseArgs8=_slicedToArray(_parseArgs7,3),target=_parseArgs8[0],method=_parseArgs8[1],args=_parseArgs8[2];return this._join(target,method,args);}/**\n             * @deprecated please use schedule instead.\n             */},{key:\"defer\",value:function defer(queueName,target,method){deferCount++;for(var _len22=arguments.length,args=new Array(_len22>3?_len22-3:0),_key22=3;_key22<_len22;_key22++){args[_key22-3]=arguments[_key22];}return this.schedule.apply(this,[queueName,target,method].concat(args));}},{key:\"schedule\",value:function schedule(queueName){scheduleCount++;for(var _len23=arguments.length,_args=new Array(_len23>1?_len23-1:0),_key23=1;_key23<_len23;_key23++){_args[_key23-1]=arguments[_key23];}var _parseArgs9=parseArgs.apply(void 0,_args),_parseArgs10=_slicedToArray(_parseArgs9,3),target=_parseArgs10[0],method=_parseArgs10[1],args=_parseArgs10[2];var stack=this.DEBUG?new Error():undefined;return this._ensureInstance().schedule(queueName,target,method,args,false,stack);}/*\n              Defer the passed iterable of functions to run inside the specified queue.\n                 @method scheduleIterable\n              @param {String} queueName\n              @param {Iterable} an iterable of functions to execute\n              @return method result\n            */},{key:\"scheduleIterable\",value:function scheduleIterable(queueName,iterable){scheduleIterableCount++;var stack=this.DEBUG?new Error():undefined;return this._ensureInstance().schedule(queueName,null,iteratorDrain,[iterable],false,stack);}/**\n             * @deprecated please use scheduleOnce instead.\n             */},{key:\"deferOnce\",value:function deferOnce(queueName,target,method){deferOnceCount++;for(var _len24=arguments.length,args=new Array(_len24>3?_len24-3:0),_key24=3;_key24<_len24;_key24++){args[_key24-3]=arguments[_key24];}return this.scheduleOnce.apply(this,[queueName,target,method].concat(args));}},{key:\"scheduleOnce\",value:function scheduleOnce(queueName){scheduleOnceCount++;for(var _len25=arguments.length,_args=new Array(_len25>1?_len25-1:0),_key25=1;_key25<_len25;_key25++){_args[_key25-1]=arguments[_key25];}var _parseArgs11=parseArgs.apply(void 0,_args),_parseArgs12=_slicedToArray(_parseArgs11,3),target=_parseArgs12[0],method=_parseArgs12[1],args=_parseArgs12[2];var stack=this.DEBUG?new Error():undefined;return this._ensureInstance().schedule(queueName,target,method,args,true,stack);}},{key:\"setTimeout\",value:function setTimeout(){setTimeoutCount++;return this.later.apply(this,arguments);}},{key:\"later\",value:function later(){laterCount++;var _parseTimerArgs=parseTimerArgs.apply(void 0,arguments),_parseTimerArgs2=_slicedToArray(_parseTimerArgs,4),target=_parseTimerArgs2[0],method=_parseTimerArgs2[1],args=_parseTimerArgs2[2],wait=_parseTimerArgs2[3];return this._later(target,method,args,wait);}},{key:\"throttle\",value:function throttle(){throttleCount++;var _parseDebounceArgs=parseDebounceArgs.apply(void 0,arguments),_parseDebounceArgs2=_slicedToArray(_parseDebounceArgs,5),target=_parseDebounceArgs2[0],method=_parseDebounceArgs2[1],args=_parseDebounceArgs2[2],wait=_parseDebounceArgs2[3],_parseDebounceArgs2$=_parseDebounceArgs2[4],isImmediate=_parseDebounceArgs2$===void 0?true:_parseDebounceArgs2$;var index=findTimerItem(target,method,this._timers);var timerId;if(index===-1){timerId=this._later(target,method,isImmediate?DISABLE_SCHEDULE:args,wait);if(isImmediate){this._join(target,method,args);}}else{timerId=this._timers[index+1];var argIndex=index+4;if(this._timers[argIndex]!==DISABLE_SCHEDULE){this._timers[argIndex]=args;}}return timerId;}},{key:\"debounce\",value:function debounce(){debounceCount++;var _parseDebounceArgs3=parseDebounceArgs.apply(void 0,arguments),_parseDebounceArgs4=_slicedToArray(_parseDebounceArgs3,5),target=_parseDebounceArgs4[0],method=_parseDebounceArgs4[1],args=_parseDebounceArgs4[2],wait=_parseDebounceArgs4[3],_parseDebounceArgs4$=_parseDebounceArgs4[4],isImmediate=_parseDebounceArgs4$===void 0?false:_parseDebounceArgs4$;var _timers=this._timers;var index=findTimerItem(target,method,_timers);var timerId;if(index===-1){timerId=this._later(target,method,isImmediate?DISABLE_SCHEDULE:args,wait);if(isImmediate){this._join(target,method,args);}}else{var executeAt=this._platform.now()+wait;var argIndex=index+4;if(_timers[argIndex]===DISABLE_SCHEDULE){args=DISABLE_SCHEDULE;}timerId=_timers[index+1];var i=binarySearch(executeAt,_timers);if(index+TIMERS_OFFSET===i){_timers[index]=executeAt;_timers[argIndex]=args;}else{var stack=this._timers[index+5];this._timers.splice(i,0,executeAt,timerId,target,method,args,stack);this._timers.splice(index,TIMERS_OFFSET);}if(index===0){this._reinstallTimerTimeout();}}return timerId;}},{key:\"cancelTimers\",value:function cancelTimers(){cancelTimersCount++;this._clearTimerTimeout();this._timers=[];this._cancelAutorun();}},{key:\"hasTimers\",value:function hasTimers(){return this._timers.length>0||this._autorun;}},{key:\"cancel\",value:function cancel(timer){cancelCount++;if(timer===null||timer===undefined){return false;}var timerType=_typeof(timer);if(timerType==='number'){// we're cancelling a setTimeout or throttle or debounce\nreturn this._cancelLaterTimer(timer);}else if(timerType==='object'&&timer.queue&&timer.method){// we're cancelling a deferOnce\nreturn timer.queue.cancel(timer);}return false;}},{key:\"ensureInstance\",value:function ensureInstance(){this._ensureInstance();}/**\n             * Returns debug information related to the current instance of Backburner\n             *\n             * @method getDebugInfo\n             * @returns {Object | undefined} Will return and Object containing debug information if\n             * the DEBUG flag is set to true on the current instance of Backburner, else undefined.\n             */},{key:\"getDebugInfo\",value:function getDebugInfo(){var _this7=this;if(this.DEBUG){return{autorun:this._autorunStack,counters:this.counters,timers:getQueueItems(this._timers,TIMERS_OFFSET,2),instanceStack:[this.currentInstance].concat(_toConsumableArray(this.instanceStack)).map(function(deferredActionQueue){return deferredActionQueue&&deferredActionQueue._getDebugInfo(_this7.DEBUG);})};}return undefined;}},{key:\"_end\",value:function _end(fromAutorun){var currentInstance=this.currentInstance;var nextInstance=null;if(currentInstance===null){throw new Error(\"end called without begin\");}// Prevent double-finally bug in Safari 6.0.2 and iOS 6\n// This bug appears to be resolved in Safari 6.0.5 and iOS 7\nvar finallyAlreadyCalled=false;var result;try{result=currentInstance.flush(fromAutorun);}finally{if(!finallyAlreadyCalled){finallyAlreadyCalled=true;if(result===1/* Pause */){var plannedNextQueue=this.queueNames[currentInstance.queueNameIndex];this._scheduleAutorun(plannedNextQueue);}else{this.currentInstance=null;if(this.instanceStack.length>0){nextInstance=this.instanceStack.pop();this.currentInstance=nextInstance;}this._trigger('end',currentInstance,nextInstance);this._onEnd(currentInstance,nextInstance);}}}}},{key:\"_join\",value:function _join(target,method,args){if(this.currentInstance===null){return this._run(target,method,args);}if(target===undefined&&args===undefined){return method();}else{return method.apply(target,args);}}},{key:\"_run\",value:function _run(target,method,args){var onError=getOnError(this.options);this.begin();if(onError){try{return method.apply(target,args);}catch(error){onError(error);}finally{this.end();}}else{try{return method.apply(target,args);}finally{this.end();}}}},{key:\"_cancelAutorun\",value:function _cancelAutorun(){if(this._autorun){this._platform.clearNext();this._autorun=false;this._autorunStack=null;}}},{key:\"_later\",value:function _later(target,method,args,wait){var stack=this.DEBUG?new Error():undefined;var executeAt=this._platform.now()+wait;var id=UUID++;if(this._timers.length===0){this._timers.push(executeAt,id,target,method,args,stack);this._installTimerTimeout();}else{// find position to insert\nvar i=binarySearch(executeAt,this._timers);this._timers.splice(i,0,executeAt,id,target,method,args,stack);// always reinstall since it could be out of sync\nthis._reinstallTimerTimeout();}return id;}},{key:\"_cancelLaterTimer\",value:function _cancelLaterTimer(timer){for(var i=1;i<this._timers.length;i+=TIMERS_OFFSET){if(this._timers[i]===timer){this._timers.splice(i-1,TIMERS_OFFSET);if(i===1){this._reinstallTimerTimeout();}return true;}}return false;}/**\n             Trigger an event. Supports up to two arguments. Designed around\n             triggering transition events from one run loop instance to the\n             next, which requires an argument for the  instance and then\n             an argument for the next instance.\n                @private\n             @method _trigger\n             @param {String} eventName\n             @param {any} arg1\n             @param {any} arg2\n             */},{key:\"_trigger\",value:function _trigger(eventName,arg1,arg2){var callbacks=this._eventCallbacks[eventName];if(callbacks!==undefined){for(var i=0;i<callbacks.length;i++){callbacks[i](arg1,arg2);}}}},{key:\"_runExpiredTimers\",value:function _runExpiredTimers(){this._timerTimeoutId=null;if(this._timers.length>0){this.begin();this._scheduleExpiredTimers();this.end();}}},{key:\"_scheduleExpiredTimers\",value:function _scheduleExpiredTimers(){var timers=this._timers;var i=0;var l=timers.length;var defaultQueue=this._defaultQueue;var n=this._platform.now();for(;i<l;i+=TIMERS_OFFSET){var executeAt=timers[i];if(executeAt>n){break;}var args=timers[i+4];if(args!==DISABLE_SCHEDULE){var target=timers[i+2];var method=timers[i+3];var stack=timers[i+5];this.currentInstance.schedule(defaultQueue,target,method,args,false,stack);}}timers.splice(0,i);this._installTimerTimeout();}},{key:\"_reinstallTimerTimeout\",value:function _reinstallTimerTimeout(){this._clearTimerTimeout();this._installTimerTimeout();}},{key:\"_clearTimerTimeout\",value:function _clearTimerTimeout(){if(this._timerTimeoutId===null){return;}this._platform.clearTimeout(this._timerTimeoutId);this._timerTimeoutId=null;}},{key:\"_installTimerTimeout\",value:function _installTimerTimeout(){if(this._timers.length===0){return;}var minExpiresAt=this._timers[0];var n=this._platform.now();var wait=Math.max(0,minExpiresAt-n);this._timerTimeoutId=this._platform.setTimeout(this._boundRunExpiredTimers,wait);}},{key:\"_ensureInstance\",value:function _ensureInstance(){var currentInstance=this.currentInstance;if(currentInstance===null){this._autorunStack=this.DEBUG?new Error():undefined;currentInstance=this.begin();this._scheduleAutorun(this.queueNames[0]);}return currentInstance;}},{key:\"_scheduleAutorun\",value:function _scheduleAutorun(plannedNextQueue){autorunsCreatedCount++;var next=this._platform.next;var flush=this.options.flush;if(flush){flush(plannedNextQueue,next);}else{next();}this._autorun=true;}}]);}();Backburner.Queue=Queue;Backburner.buildPlatform=buildPlatform;Backburner.buildNext=buildNext;var backburnerjs=/*#__PURE__*/Object.defineProperty({__proto__:null,buildPlatform:buildPlatform,default:Backburner},Symbol.toStringTag,{value:'Module'});// Partial types from https://medium.com/codex/currying-in-typescript-ca5226c85b85\nvar currentRunLoop=null;function _getCurrentRunLoop(){return currentRunLoop;}function onBegin(current){currentRunLoop=current;}function onEnd(_current,next){currentRunLoop=next;flushAsyncObservers(schedule);}function flush$1(queueName,next){if(queueName==='render'||queueName===_rsvpErrorQueue){flushAsyncObservers(schedule);}next();}var _rsvpErrorQueue=\"\".concat(Math.random()).concat(Date.now()).replace('.','');/**\n            Array of named queues. This array determines the order in which queues\n            are flushed at the end of the RunLoop. You can define your own queues by\n            simply adding the queue name to this array. Normally you should not need\n            to inspect or modify this property.\n\n            @property queues\n            @type Array\n            @default ['actions', 'destroy']\n            @private\n          */var _queues=['actions',// used in router transitions to prevent unnecessary loading state entry\n// if all context promises resolve on the 'actions' queue first\n'routerTransitions','render','afterRender','destroy',// used to re-throw unhandled RSVP rejection errors specifically in this\n// position to avoid breaking anything rendered in the other sections\n_rsvpErrorQueue];/**\n           * @internal\n           * @private\n           */var _backburner=new Backburner(_queues,{defaultQueue:'actions',onBegin:onBegin,onEnd:onEnd,onErrorTarget:onErrorTarget,onErrorMethod:'onerror',flush:flush$1});/**\n           @module @ember/runloop\n          */// ..........................................................\n// run - this is ideally the only public API the dev sees\n//\n/**\n            Runs the passed target and method inside of a RunLoop, ensuring any\n            deferred actions including bindings and views updates are flushed at the\n            end.\n\n            Normally you should not need to invoke this method yourself. However if\n            you are implementing raw event handlers when interfacing with other\n            libraries or plugins, you should probably wrap all of your code inside this\n            call.\n\n            ```javascript\n            import { run } from '@ember/runloop';\n\n            run(function() {\n              // code to be executed within a RunLoop\n            });\n            ```\n            @method run\n            @for @ember/runloop\n            @static\n            @param {Object} [target] target of method to call\n            @param {Function|String} method Method to invoke.\n              May be a function or a string. If you pass a string\n              then it will be looked up on the passed target.\n            @param {Object} [args*] Any additional arguments you wish to pass to the method.\n            @return {Object} return value from invoking the passed function.\n            @public\n          */function run$1(){// @ts-expect-error TS doesn't like our spread args\nreturn _backburner.run.apply(_backburner,arguments);}/**\n            If no run-loop is present, it creates a new one. If a run loop is\n            present it will queue itself to run on the existing run-loops action\n            queue.\n\n            Please note: This is not for normal usage, and should be used sparingly.\n\n            If invoked when not within a run loop:\n\n            ```javascript\n            import { join } from '@ember/runloop';\n\n            join(function() {\n              // creates a new run-loop\n            });\n            ```\n\n            Alternatively, if called within an existing run loop:\n\n            ```javascript\n            import { run, join } from '@ember/runloop';\n\n            run(function() {\n              // creates a new run-loop\n\n              join(function() {\n                // joins with the existing run-loop, and queues for invocation on\n                // the existing run-loops action queue.\n              });\n            });\n            ```\n\n            @method join\n            @static\n            @for @ember/runloop\n            @param {Object} [target] target of method to call\n            @param {Function|String} method Method to invoke.\n              May be a function or a string. If you pass a string\n              then it will be looked up on the passed target.\n            @param {Object} [args*] Any additional arguments you wish to pass to the method.\n            @return {Object} Return value from invoking the passed function. Please note,\n            when called within an existing loop, no return value is possible.\n            @public\n          */function join(methodOrTarget,methodOrArg){for(var _len26=arguments.length,additionalArgs=new Array(_len26>2?_len26-2:0),_key26=2;_key26<_len26;_key26++){additionalArgs[_key26-2]=arguments[_key26];}return _backburner.join.apply(_backburner,[methodOrTarget,methodOrArg].concat(additionalArgs));}/**\n            Allows you to specify which context to call the specified function in while\n            adding the execution of that function to the Ember run loop. This ability\n            makes this method a great way to asynchronously integrate third-party libraries\n            into your Ember application.\n\n            `bind` takes two main arguments, the desired context and the function to\n            invoke in that context. Any additional arguments will be supplied as arguments\n            to the function that is passed in.\n\n            Let's use the creation of a TinyMCE component as an example. Currently,\n            TinyMCE provides a setup configuration option we can use to do some processing\n            after the TinyMCE instance is initialized but before it is actually rendered.\n            We can use that setup option to do some additional setup for our component.\n            The component itself could look something like the following:\n\n            ```app/components/rich-text-editor.js\n            import Component from '@ember/component';\n            import { on } from '@ember/object/evented';\n            import { bind } from '@ember/runloop';\n\n            export default Component.extend({\n              initializeTinyMCE: on('didInsertElement', function() {\n                tinymce.init({\n                  selector: '#' + this.$().prop('id'),\n                  setup: bind(this, this.setupEditor)\n                });\n              }),\n\n              didInsertElement() {\n                tinymce.init({\n                  selector: '#' + this.$().prop('id'),\n                  setup: bind(this, this.setupEditor)\n                });\n              }\n\n              setupEditor(editor) {\n                this.set('editor', editor);\n\n                editor.on('change', function() {\n                  console.log('content changed!');\n                });\n              }\n            });\n            ```\n\n            In this example, we use `bind` to bind the setupEditor method to the\n            context of the RichTextEditor component and to have the invocation of that\n            method be safely handled and executed by the Ember run loop.\n\n            @method bind\n            @static\n            @for @ember/runloop\n            @param {Object} [target] target of method to call\n            @param {Function|String} method Method to invoke.\n              May be a function or a string. If you pass a string\n              then it will be looked up on the passed target.\n            @param {Object} [args*] Any additional arguments you wish to pass to the method.\n            @return {Function} returns a new function that will always have a particular context\n            @since 1.4.0\n            @public\n          */// This final fallback is the equivalent of the (quite unsafe!) type for `bind`\n// from TS' defs for `Function.prototype.bind`. In general, it means we have a\n// loss of safety if we do not\nfunction bind(){for(var _len27=arguments.length,curried=new Array(_len27),_key27=0;_key27<_len27;_key27++){curried[_key27]=arguments[_key27];}!function(methodOrTarget,methodOrArg){// Applies the same logic as backburner parseArgs for detecting if a method\n// is actually being passed.\nvar length=arguments.length;if(length===0){return false;}else if(length===1){return typeof methodOrTarget==='function';}else{return typeof methodOrArg==='function'||// second argument is a function\nmethodOrTarget!==null&&typeof methodOrArg==='string'&&methodOrArg in methodOrTarget||// second argument is the name of a method in first argument\ntypeof methodOrTarget==='function'//first argument is a function\n;}// @ts-expect-error TS doesn't like our spread args\n}.apply(void 0,curried)&&assert$1('could not find a suitable method to bind',function(methodOrTarget,methodOrArg){var length=arguments.length;if(length===0){return false;}else if(length===1){return typeof methodOrTarget==='function';}else{return typeof methodOrArg==='function'||methodOrTarget!==null&&typeof methodOrArg==='string'&&methodOrArg in methodOrTarget||typeof methodOrTarget==='function';}}.apply(void 0,curried));// @ts-expect-error TS doesn't like our spread args\nreturn function(){for(var _len28=arguments.length,args=new Array(_len28),_key28=0;_key28<_len28;_key28++){args[_key28]=arguments[_key28];}return join.apply(void 0,_toConsumableArray(curried.concat(args)));};}/**\n            Begins a new RunLoop. Any deferred actions invoked after the begin will\n            be buffered until you invoke a matching call to `end()`. This is\n            a lower-level way to use a RunLoop instead of using `run()`.\n\n            ```javascript\n            import { begin, end } from '@ember/runloop';\n\n            begin();\n            // code to be executed within a RunLoop\n            end();\n            ```\n\n            @method begin\n            @static\n            @for @ember/runloop\n            @return {void}\n            @public\n          */function begin(){_backburner.begin();}/**\n            Ends a RunLoop. This must be called sometime after you call\n            `begin()` to flush any deferred actions. This is a lower-level way\n            to use a RunLoop instead of using `run()`.\n\n            ```javascript\n            import { begin, end } from '@ember/runloop';\n\n            begin();\n            // code to be executed within a RunLoop\n            end();\n            ```\n\n            @method end\n            @static\n            @for @ember/runloop\n            @return {void}\n            @public\n          */function end(){_backburner.end();}/**\n            Adds the passed target/method and any optional arguments to the named\n            queue to be executed at the end of the RunLoop. If you have not already\n            started a RunLoop when calling this method one will be started for you\n            automatically.\n\n            At the end of a RunLoop, any methods scheduled in this way will be invoked.\n            Methods will be invoked in an order matching the named queues defined in\n            the `queues` property.\n\n            ```javascript\n            import { schedule } from '@ember/runloop';\n\n            schedule('afterRender', this, function() {\n              // this will be executed in the 'afterRender' queue\n              console.log('scheduled on afterRender queue');\n            });\n\n            schedule('actions', this, function() {\n              // this will be executed in the 'actions' queue\n              console.log('scheduled on actions queue');\n            });\n\n            // Note the functions will be run in order based on the run queues order.\n            // Output would be:\n            //   scheduled on actions queue\n            //   scheduled on afterRender queue\n            ```\n\n            @method schedule\n            @static\n            @for @ember/runloop\n            @param {String} queue The name of the queue to schedule against. Default queues is 'actions'\n            @param {Object} [target] target object to use as the context when invoking a method.\n            @param {String|Function} method The method to invoke. If you pass a string it\n              will be resolved on the target object at the time the scheduled item is\n              invoked allowing you to change the target function.\n            @param {Object} [arguments*] Optional arguments to be passed to the queued method.\n            @return {*} Timer information for use in canceling, see `cancel`.\n            @public\n          */function schedule(){// @ts-expect-error TS doesn't like the rest args here\nreturn _backburner.schedule.apply(_backburner,arguments);}// Used by global test teardown\nfunction _hasScheduledTimers(){return _backburner.hasTimers();}// Used by global test teardown\nfunction _cancelTimers(){_backburner.cancelTimers();}/**\n            Invokes the passed target/method and optional arguments after a specified\n            period of time. The last parameter of this method must always be a number\n            of milliseconds.\n\n            You should use this method whenever you need to run some action after a\n            period of time instead of using `setTimeout()`. This method will ensure that\n            items that expire during the same script execution cycle all execute\n            together, which is often more efficient than using a real setTimeout.\n\n            ```javascript\n            import { later } from '@ember/runloop';\n\n            later(myContext, function() {\n              // code here will execute within a RunLoop in about 500ms with this == myContext\n            }, 500);\n            ```\n\n            @method later\n            @static\n            @for @ember/runloop\n            @param {Object} [target] target of method to invoke\n            @param {Function|String} method The method to invoke.\n              If you pass a string it will be resolved on the\n              target at the time the method is invoked.\n            @param {Object} [args*] Optional arguments to pass to the timeout.\n            @param {Number} wait Number of milliseconds to wait.\n            @return {*} Timer information for use in canceling, see `cancel`.\n            @public\n          */function later(){return _backburner.later.apply(_backburner,arguments);}/**\n           Schedule a function to run one time during the current RunLoop. This is equivalent\n            to calling `scheduleOnce` with the \"actions\" queue.\n\n            @method once\n            @static\n            @for @ember/runloop\n            @param {Object} [target] The target of the method to invoke.\n            @param {Function|String} method The method to invoke.\n              If you pass a string it will be resolved on the\n              target at the time the method is invoked.\n            @param {Object} [args*] Optional arguments to pass to the timeout.\n            @return {Object} Timer information for use in canceling, see `cancel`.\n            @public\n          */function once(){for(var _len29=arguments.length,args=new Array(_len29),_key29=0;_key29<_len29;_key29++){args[_key29]=arguments[_key29];}// @ts-expect-error TS doesn't like the rest args here\nreturn _backburner.scheduleOnce.apply(_backburner,['actions'].concat(args));}/**\n            Schedules a function to run one time in a given queue of the current RunLoop.\n            Calling this method with the same queue/target/method combination will have\n            no effect (past the initial call).\n\n            Note that although you can pass optional arguments these will not be\n            considered when looking for duplicates. New arguments will replace previous\n            calls.\n\n            ```javascript\n            import { run, scheduleOnce } from '@ember/runloop';\n\n            function sayHi() {\n              console.log('hi');\n            }\n\n            run(function() {\n              scheduleOnce('afterRender', myContext, sayHi);\n              scheduleOnce('afterRender', myContext, sayHi);\n              // sayHi will only be executed once, in the afterRender queue of the RunLoop\n            });\n            ```\n\n            Also note that for `scheduleOnce` to prevent additional calls, you need to\n            pass the same function instance. The following case works as expected:\n\n            ```javascript\n            function log() {\n              console.log('Logging only once');\n            }\n\n            function scheduleIt() {\n              scheduleOnce('actions', myContext, log);\n            }\n\n            scheduleIt();\n            scheduleIt();\n            ```\n\n            But this other case will schedule the function multiple times:\n\n            ```javascript\n            import { scheduleOnce } from '@ember/runloop';\n\n            function scheduleIt() {\n              scheduleOnce('actions', myContext, function() {\n                console.log('Closure');\n              });\n            }\n\n            scheduleIt();\n            scheduleIt();\n\n            // \"Closure\" will print twice, even though we're using `scheduleOnce`,\n            // because the function we pass to it won't match the\n            // previously scheduled operation.\n            ```\n\n            Available queues, and their order, can be found at `queues`\n\n            @method scheduleOnce\n            @static\n            @for @ember/runloop\n            @param {String} [queue] The name of the queue to schedule against. Default queues is 'actions'.\n            @param {Object} [target] The target of the method to invoke.\n            @param {Function|String} method The method to invoke.\n              If you pass a string it will be resolved on the\n              target at the time the method is invoked.\n            @param {Object} [args*] Optional arguments to pass to the timeout.\n            @return {Object} Timer information for use in canceling, see `cancel`.\n            @public\n          */function scheduleOnce(){// @ts-expect-error TS doesn't like the rest args here\nreturn _backburner.scheduleOnce.apply(_backburner,arguments);}/**\n            Schedules an item to run from within a separate run loop, after\n            control has been returned to the system. This is equivalent to calling\n            `later` with a wait time of 1ms.\n\n            ```javascript\n            import { next } from '@ember/runloop';\n\n            next(myContext, function() {\n              // code to be executed in the next run loop,\n              // which will be scheduled after the current one\n            });\n            ```\n\n            Multiple operations scheduled with `next` will coalesce\n            into the same later run loop, along with any other operations\n            scheduled by `later` that expire right around the same\n            time that `next` operations will fire.\n\n            Note that there are often alternatives to using `next`.\n            For instance, if you'd like to schedule an operation to happen\n            after all DOM element operations have completed within the current\n            run loop, you can make use of the `afterRender` run loop queue (added\n            by the `ember-views` package, along with the preceding `render` queue\n            where all the DOM element operations happen).\n\n            Example:\n\n            ```app/components/my-component.js\n            import Component from '@ember/component';\n            import { scheduleOnce } from '@ember/runloop';\n\n            export Component.extend({\n              didInsertElement() {\n                this._super(...arguments);\n                scheduleOnce('afterRender', this, 'processChildElements');\n              },\n\n              processChildElements() {\n                // ... do something with component's child component\n                // elements after they've finished rendering, which\n                // can't be done within this component's\n                // `didInsertElement` hook because that gets run\n                // before the child elements have been added to the DOM.\n              }\n            });\n            ```\n\n            One benefit of the above approach compared to using `next` is\n            that you will be able to perform DOM/CSS operations before unprocessed\n            elements are rendered to the screen, which may prevent flickering or\n            other artifacts caused by delaying processing until after rendering.\n\n            The other major benefit to the above approach is that `next`\n            introduces an element of non-determinism, which can make things much\n            harder to test, due to its reliance on `setTimeout`; it's much harder\n            to guarantee the order of scheduled operations when they are scheduled\n            outside of the current run loop, i.e. with `next`.\n\n            @method next\n            @static\n            @for @ember/runloop\n            @param {Object} [target] target of method to invoke\n            @param {Function|String} method The method to invoke.\n              If you pass a string it will be resolved on the\n              target at the time the method is invoked.\n            @param {Object} [args*] Optional arguments to pass to the timeout.\n            @return {Object} Timer information for use in canceling, see `cancel`.\n            @public\n          */function next(){for(var _len30=arguments.length,args=new Array(_len30),_key30=0;_key30<_len30;_key30++){args[_key30]=arguments[_key30];}return _backburner.later.apply(_backburner,args.concat([1]));}/**\n            Cancels a scheduled item. Must be a value returned by `later()`,\n            `once()`, `scheduleOnce()`, `next()`, `debounce()`, or\n            `throttle()`.\n\n            ```javascript\n            import {\n              next,\n              cancel,\n              later,\n              scheduleOnce,\n              once,\n              throttle,\n              debounce\n            } from '@ember/runloop';\n\n            let runNext = next(myContext, function() {\n              // will not be executed\n            });\n\n            cancel(runNext);\n\n            let runLater = later(myContext, function() {\n              // will not be executed\n            }, 500);\n\n            cancel(runLater);\n\n            let runScheduleOnce = scheduleOnce('afterRender', myContext, function() {\n              // will not be executed\n            });\n\n            cancel(runScheduleOnce);\n\n            let runOnce = once(myContext, function() {\n              // will not be executed\n            });\n\n            cancel(runOnce);\n\n            let throttle = throttle(myContext, function() {\n              // will not be executed\n            }, 1, false);\n\n            cancel(throttle);\n\n            let debounce = debounce(myContext, function() {\n              // will not be executed\n            }, 1);\n\n            cancel(debounce);\n\n            let debounceImmediate = debounce(myContext, function() {\n              // will be executed since we passed in true (immediate)\n            }, 100, true);\n\n            // the 100ms delay until this method can be called again will be canceled\n            cancel(debounceImmediate);\n            ```\n\n            @method cancel\n            @static\n            @for @ember/runloop\n            @param {Object} [timer] Timer object to cancel\n            @return {Boolean} true if canceled or false/undefined if it wasn't found\n            @public\n          */function cancel(timer){return _backburner.cancel(timer);}/**\n            Delay calling the target method until the debounce period has elapsed\n            with no additional debounce calls. If `debounce` is called again before\n            the specified time has elapsed, the timer is reset and the entire period\n            must pass again before the target method is called.\n\n            This method should be used when an event may be called multiple times\n            but the action should only be called once when the event is done firing.\n            A common example is for scroll events where you only want updates to\n            happen once scrolling has ceased.\n\n            ```javascript\n            import { debounce } from '@ember/runloop';\n\n            function whoRan() {\n              console.log(this.name + ' ran.');\n            }\n\n            let myContext = { name: 'debounce' };\n\n            debounce(myContext, whoRan, 150);\n\n            // less than 150ms passes\n            debounce(myContext, whoRan, 150);\n\n            // 150ms passes\n            // whoRan is invoked with context myContext\n            // console logs 'debounce ran.' one time.\n            ```\n\n            Immediate allows you to run the function immediately, but debounce\n            other calls for this function until the wait time has elapsed. If\n            `debounce` is called again before the specified time has elapsed,\n            the timer is reset and the entire period must pass again before\n            the method can be called again.\n\n            ```javascript\n            import { debounce } from '@ember/runloop';\n\n            function whoRan() {\n              console.log(this.name + ' ran.');\n            }\n\n            let myContext = { name: 'debounce' };\n\n            debounce(myContext, whoRan, 150, true);\n\n            // console logs 'debounce ran.' one time immediately.\n            // 100ms passes\n            debounce(myContext, whoRan, 150, true);\n\n            // 150ms passes and nothing else is logged to the console and\n            // the debouncee is no longer being watched\n            debounce(myContext, whoRan, 150, true);\n\n            // console logs 'debounce ran.' one time immediately.\n            // 150ms passes and nothing else is logged to the console and\n            // the debouncee is no longer being watched\n            ```\n\n            @method debounce\n            @static\n            @for @ember/runloop\n            @param {Object} [target] target of method to invoke\n            @param {Function|String} method The method to invoke.\n              May be a function or a string. If you pass a string\n              then it will be looked up on the passed target.\n            @param {Object} [args*] Optional arguments to pass to the timeout.\n            @param {Number} wait Number of milliseconds to wait.\n            @param {Boolean} immediate Trigger the function on the leading instead\n              of the trailing edge of the wait interval. Defaults to false.\n            @return {Array} Timer information for use in canceling, see `cancel`.\n            @public\n          */function debounce(){// @ts-expect-error TS doesn't like the rest args here\nreturn _backburner.debounce.apply(_backburner,arguments);}/**\n            Ensure that the target method is never called more frequently than\n            the specified spacing period. The target method is called immediately.\n\n            ```javascript\n            import { throttle } from '@ember/runloop';\n\n            function whoRan() {\n              console.log(this.name + ' ran.');\n            }\n\n            let myContext = { name: 'throttle' };\n\n            throttle(myContext, whoRan, 150);\n            // whoRan is invoked with context myContext\n            // console logs 'throttle ran.'\n\n            // 50ms passes\n            throttle(myContext, whoRan, 150);\n\n            // 50ms passes\n            throttle(myContext, whoRan, 150);\n\n            // 150ms passes\n            throttle(myContext, whoRan, 150);\n            // whoRan is invoked with context myContext\n            // console logs 'throttle ran.'\n            ```\n\n            @method throttle\n            @static\n            @for @ember/runloop\n            @param {Object} [target] target of method to invoke\n            @param {Function|String} method The method to invoke.\n              May be a function or a string. If you pass a string\n              then it will be looked up on the passed target.\n            @param {Object} [args*] Optional arguments to pass to the timeout.\n            @param {Number} spacing Number of milliseconds to space out requests.\n            @param {Boolean} immediate Trigger the function on the leading instead\n              of the trailing edge of the wait interval. Defaults to true.\n            @return {Array} Timer information for use in canceling, see `cancel`.\n            @public\n          */function throttle(){// @ts-expect-error TS doesn't like the rest args here\nreturn _backburner.throttle.apply(_backburner,arguments);}var emberRunloopIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,_backburner:_backburner,_cancelTimers:_cancelTimers,_getCurrentRunLoop:_getCurrentRunLoop,_hasScheduledTimers:_hasScheduledTimers,_queues:_queues,_rsvpErrorQueue:_rsvpErrorQueue,begin:begin,bind:bind,cancel:cancel,debounce:debounce,end:end,join:join,later:later,next:next,once:once,run:run$1,schedule:schedule,scheduleOnce:scheduleOnce,throttle:throttle},Symbol.toStringTag,{value:'Module'});// This is defined as a separate interface so that it can be used in the definition of\n// `Owner` without also including the `__container__` property.\n/**\n            ContainerProxyMixin is used to provide public access to specific\n            container functionality.\n\n            @class ContainerProxyMixin\n            @extends ContainerProxy\n            @private\n          */var ContainerProxyMixin=Mixin.create({/**\n             The container stores state.\n              @private\n             @property {Ember.Container} __container__\n             */__container__:null,ownerInjection:function ownerInjection(){return this.__container__.ownerInjection();},lookup:function lookup(fullName,options){return this.__container__.lookup(fullName,options);},destroy:function destroy(){var container=this.__container__;if(container){join(function(){container.destroy();schedule('destroy',container,'finalizeDestroy');});}this._super();},factoryFor:function factoryFor(fullName){return this.__container__.factoryFor(fullName);}});var emberinternalsRuntimeLibMixinsContainerProxy=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ContainerProxyMixin},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            Implements some standard methods for comparing objects. Add this mixin to\n            any class you create that can compare its instances.\n\n            You should implement the `compare()` method.\n\n            @class Comparable\n            @namespace Ember\n            @since Ember 0.9\n            @private\n          */var Comparable=Mixin.create({/**\n              __Required.__ You must implement this method to apply this mixin.\n               Override to return the result of the comparison of the two parameters. The\n              compare method should return:\n               - `-1` if `a < b`\n              - `0` if `a == b`\n              - `1` if `a > b`\n               Default implementation raises an exception.\n               @method compare\n              @param a {Object} the first object to compare\n              @param b {Object} the second object to compare\n              @return {Number} the result of the comparison\n              @private\n            */compare:null});var emberinternalsRuntimeLibMixinsComparable=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Comparable},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            `Ember.ActionHandler` is available on some familiar classes including\n            `Route`, `Component`, and `Controller`.\n            (Internally the mixin is used by `Ember.CoreView`, `Ember.ControllerMixin`,\n            and `Route` and available to the above classes through\n            inheritance.)\n\n            @class ActionHandler\n            @namespace Ember\n            @private\n          */var ActionHandler=Mixin.create({mergedProperties:['actions'],/**\n              The collection of functions, keyed by name, available on this\n              `ActionHandler` as action targets.\n               These functions will be invoked when a matching `{{action}}` is triggered\n              from within a template and the application's current route is this route.\n               Actions can also be invoked from other parts of your application\n              via `ActionHandler#send`.\n               The `actions` hash will inherit action handlers from\n              the `actions` hash defined on extended parent classes\n              or mixins rather than just replace the entire hash, e.g.:\n               ```app/mixins/can-display-banner.js\n              import Mixin from '@ember/object/mixin';\n               export default Mixin.create({\n                actions: {\n                  displayBanner(msg) {\n                    // ...\n                  }\n                }\n              });\n              ```\n               ```app/routes/welcome.js\n              import Route from '@ember/routing/route';\n              import CanDisplayBanner from '../mixins/can-display-banner';\n               export default Route.extend(CanDisplayBanner, {\n                actions: {\n                  playMusic() {\n                    // ...\n                  }\n                }\n              });\n               // `WelcomeRoute`, when active, will be able to respond\n              // to both actions, since the actions hash is merged rather\n              // then replaced when extending mixins / parent classes.\n              this.send('displayBanner');\n              this.send('playMusic');\n              ```\n               Within a Controller, Route or Component's action handler,\n              the value of the `this` context is the Controller, Route or\n              Component object:\n               ```app/routes/song.js\n              import Route from '@ember/routing/route';\n               export default Route.extend({\n                actions: {\n                  myAction() {\n                    this.controllerFor(\"song\");\n                    this.transitionTo(\"other.route\");\n                    ...\n                  }\n                }\n              });\n              ```\n               It is also possible to call `this._super(...arguments)` from within an\n              action handler if it overrides a handler defined on a parent\n              class or mixin:\n               Take for example the following routes:\n               ```app/mixins/debug-route.js\n              import Mixin from '@ember/object/mixin';\n               export default Mixin.create({\n                actions: {\n                  debugRouteInformation() {\n                    console.debug(\"It's a-me, console.debug!\");\n                  }\n                }\n              });\n              ```\n               ```app/routes/annoying-debug.js\n              import Route from '@ember/routing/route';\n              import DebugRoute from '../mixins/debug-route';\n               export default Route.extend(DebugRoute, {\n                actions: {\n                  debugRouteInformation() {\n                    // also call the debugRouteInformation of mixed in DebugRoute\n                    this._super(...arguments);\n                     // show additional annoyance\n                    window.alert(...);\n                  }\n                }\n              });\n              ```\n               ## Bubbling\n               By default, an action will stop bubbling once a handler defined\n              on the `actions` hash handles it. To continue bubbling the action,\n              you must return `true` from the handler:\n               ```app/router.js\n              Router.map(function() {\n                this.route(\"album\", function() {\n                  this.route(\"song\");\n                });\n              });\n              ```\n               ```app/routes/album.js\n              import Route from '@ember/routing/route';\n               export default Route.extend({\n                actions: {\n                  startPlaying: function() {\n                  }\n                }\n              });\n              ```\n               ```app/routes/album-song.js\n              import Route from '@ember/routing/route';\n               export default Route.extend({\n                actions: {\n                  startPlaying() {\n                    // ...\n                     if (actionShouldAlsoBeTriggeredOnParentRoute) {\n                      return true;\n                    }\n                  }\n                }\n              });\n              ```\n               @property actions\n              @type Object\n              @default null\n              @public\n            *//**\n              Triggers a named action on the `ActionHandler`. Any parameters\n              supplied after the `actionName` string will be passed as arguments\n              to the action target function.\n               If the `ActionHandler` has its `target` property set, actions may\n              bubble to the `target`. Bubbling happens when an `actionName` can\n              not be found in the `ActionHandler`'s `actions` hash or if the\n              action target function returns `true`.\n               Example\n               ```app/routes/welcome.js\n              import Route from '@ember/routing/route';\n               export default Route.extend({\n                actions: {\n                  playTheme() {\n                    this.send('playMusic', 'theme.mp3');\n                  },\n                  playMusic(track) {\n                    // ...\n                  }\n                }\n              });\n              ```\n               @method send\n              @param {String} actionName The action to trigger\n              @param {*} context a context to send with the action\n              @public\n            */send:function send(actionName){for(var _len31=arguments.length,args=new Array(_len31>1?_len31-1:0),_key31=1;_key31<_len31;_key31++){args[_key31-1]=arguments[_key31];}!(!this.isDestroying&&!this.isDestroyed)&&assert$1(\"Attempted to call .send() with the action '\".concat(actionName,\"' on the destroyed object '\").concat(this,\"'.\"),!this.isDestroying&&!this.isDestroyed);if(this.actions&&this.actions[actionName]){var shouldBubble=this.actions[actionName].apply(this,args)===true;if(!shouldBubble){return;}}var target=get$2(this,'target');if(target){!(typeof target.send==='function')&&assert$1(\"The `target` for \".concat(this,\" (\").concat(target,\") does not have a `send` method\"),typeof target.send==='function');target.send.apply(target,arguments);}}});var emberinternalsRuntimeLibMixinsActionHandler=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ActionHandler},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */function contentFor(proxy){var content=get$2(proxy,'content');// SAFETY: Ideally we'd assert instead of casting, but @glimmer/validator doesn't give us\n// sufficient public types for this. Previously this code was .js and worked correctly so\n// hopefully this is sufficiently reliable.\nUPDATE_TAG(tagForObject(proxy),tagForObject(content));return content;}function customTagForProxy(proxy,key,addMandatorySetter){!isProxy(proxy)&&assert$1('Expected a proxy',isProxy(proxy));var meta=tagMetaFor(proxy);var tag=tagFor(proxy,key,meta);{// TODO: Replace this with something more first class for tracking tags in DEBUG\n// SAFETY: This is not an officially supported property but setting shouldn't cause issues.\ntag._propertyKey=key;}if(key in proxy){if(addMandatorySetter){!setupMandatorySetter&&assert$1('[BUG] setupMandatorySetter should be set when debugging',setupMandatorySetter);setupMandatorySetter(tag,proxy,key);}return tag;}else{var tags=[tag,tagFor(proxy,'content',meta)];var content=contentFor(proxy);if(isObject$1(content)){tags.push(tagForProperty(content,key,addMandatorySetter));}return _combine(tags);}}/**\n            `Ember.ProxyMixin` forwards all properties not defined by the proxy itself\n            to a proxied `content` object.  See ObjectProxy for more details.\n\n            @class ProxyMixin\n            @namespace Ember\n            @private\n          */var ProxyMixin=Mixin.create({/**\n              The object whose properties will be forwarded.\n               @property content\n              @type {unknown}\n              @default null\n              @public\n            */content:null,init:function init(){this._super.apply(this,arguments);setProxy(this);tagForObject(this);setCustomTagFor(this,customTagForProxy);},willDestroy:function willDestroy(){this.set('content',null);this._super.apply(this,arguments);},isTruthy:computed('content',function(){return Boolean(get$2(this,'content'));}),unknownProperty:function unknownProperty(key){var content=contentFor(this);return content?get$2(content,key):undefined;},setUnknownProperty:function setUnknownProperty(key,value){var m=meta(this);if(m.isInitializing()||m.isPrototypeMeta(this)){// if marked as prototype or object is initializing then just\n// defineProperty rather than delegate\ndefineProperty(this,key,null,value);return value;}var content=contentFor(this);!content&&assert$1(\"Cannot delegate set('\".concat(key,\"', \").concat(value,\") to the 'content' property of object proxy \").concat(this,\": its 'content' is undefined.\"),content);// SAFETY: We don't actually guarantee that this is an object, so this isn't necessarily safe :(\nreturn _set5(content,key,value);}});var emberinternalsRuntimeLibMixinsproxy=/*#__PURE__*/Object.defineProperty({__proto__:null,contentFor:contentFor,default:ProxyMixin},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/enumerable\n          @private\n          *//**\n            The methods in this mixin have been moved to [MutableArray](/ember/release/classes/MutableArray). This mixin has\n            been intentionally preserved to avoid breaking Enumerable.detect checks\n            until the community migrates away from them.\n\n            @class Enumerable\n            @private\n          */// eslint-disable-next-line @typescript-eslint/no-empty-interface\nvar Enumerable=Mixin.create();var emberEnumerableIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Enumerable},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            The methods in this mixin have been moved to MutableArray. This mixin has\n            been intentionally preserved to avoid breaking MutableEnumerable.detect\n            checks until the community migrates away from them.\n\n            @class MutableEnumerable\n            @namespace Ember\n            @uses Enumerable\n            @private\n          */// eslint-disable-next-line @typescript-eslint/no-empty-interface\nvar MutableEnumerable=Mixin.create(Enumerable);var emberEnumerableMutable=/*#__PURE__*/Object.defineProperty({__proto__:null,default:MutableEnumerable},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n          `Ember.TargetActionSupport` is a mixin that can be included in a class\n          to add a `triggerAction` method with semantics similar to the Handlebars\n          `{{action}}` helper. In normal Ember usage, the `{{action}}` helper is\n          usually the best choice. This mixin is most often useful when you are\n          doing more complex event handling in Components.\n\n          @class TargetActionSupport\n          @namespace Ember\n          @extends Mixin\n          @private\n          */var TargetActionSupport=Mixin.create({target:null,action:null,actionContext:null,actionContextObject:computed('actionContext',function(){var actionContext=get$2(this,'actionContext');if(typeof actionContext==='string'){var value=get$2(this,actionContext);if(value===undefined){value=get$2(context$1.lookup,actionContext);}return value;}else{return actionContext;}}),/**\n            Send an `action` with an `actionContext` to a `target`. The action, actionContext\n            and target will be retrieved from properties of the object. For example:\n             ```javascript\n            import { alias } from '@ember/object/computed';\n             App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {\n              target: alias('controller'),\n              action: 'save',\n              actionContext: alias('context'),\n              click() {\n                this.triggerAction(); // Sends the `save` action, along with the current context\n                                      // to the current controller\n              }\n            });\n            ```\n             The `target`, `action`, and `actionContext` can be provided as properties of\n            an optional object argument to `triggerAction` as well.\n             ```javascript\n            App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {\n              click() {\n                this.triggerAction({\n                  action: 'save',\n                  target: this.get('controller'),\n                  actionContext: this.get('context')\n                }); // Sends the `save` action, along with the current context\n                    // to the current controller\n              }\n            });\n            ```\n             The `actionContext` defaults to the object you are mixing `TargetActionSupport` into.\n            But `target` and `action` must be specified either as properties or with the argument\n            to `triggerAction`, or a combination:\n             ```javascript\n            import { alias } from '@ember/object/computed';\n             App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {\n              target: alias('controller'),\n              click() {\n                this.triggerAction({\n                  action: 'save'\n                }); // Sends the `save` action, along with a reference to `this`,\n                    // to the current controller\n              }\n            });\n            ```\n             @method triggerAction\n            @param opts {Object} (optional, with the optional keys action, target and/or actionContext)\n            @return {Boolean} true if the action was sent successfully and did not return false\n            @private\n            */triggerAction:function triggerAction(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=opts.action,target=opts.target,actionContext=opts.actionContext;action=action||get$2(this,'action');target=target||getTarget(this);if(actionContext===undefined){actionContext=get$2(this,'actionContextObject')||this;}var context=Array.isArray(actionContext)?actionContext:[actionContext];if(target&&action){var ret;if(isSendable(target)){var _target3;ret=(_target3=target).send.apply(_target3,[action].concat(_toConsumableArray(context)));}else{var _target4;!(typeof target[action]==='function')&&assert$1(\"The action '\".concat(action,\"' did not exist on \").concat(target),typeof target[action]==='function');ret=(_target4=target)[action].apply(_target4,_toConsumableArray(context));}if(ret!==false){return true;}}return false;}});function isSendable(obj){return obj!=null&&_typeof(obj)==='object'&&typeof obj.send==='function';}function getTarget(instance){var target=get$2(instance,'target');if(target){if(typeof target==='string'){var value=get$2(instance,target);if(value===undefined){value=get$2(context$1.lookup,target);}return value;}else{return target;}}if(instance._target){return instance._target;}return null;}{Object.seal(TargetActionSupport);}var emberinternalsRuntimeLibMixinsTargetActionSupport=/*#__PURE__*/Object.defineProperty({__proto__:null,default:TargetActionSupport},Symbol.toStringTag,{value:'Module'});function callbacksFor(object){var callbacks=object._promiseCallbacks;if(!callbacks){callbacks=object._promiseCallbacks={};}return callbacks;}/**\n            @class EventTarget\n            @for rsvp\n            @public\n          */var EventTarget={/**\n              `EventTarget.mixin` extends an object with EventTarget methods. For\n              Example:\n               ```javascript\n              import EventTarget from 'rsvp';\n               let object = {};\n               EventTarget.mixin(object);\n               object.on('finished', function(event) {\n                // handle event\n              });\n               object.trigger('finished', { detail: value });\n              ```\n               `EventTarget.mixin` also works with prototypes:\n               ```javascript\n              import EventTarget from 'rsvp';\n               let Person = function() {};\n              EventTarget.mixin(Person.prototype);\n               let yehuda = new Person();\n              let tom = new Person();\n               yehuda.on('poke', function(event) {\n                console.log('Yehuda says OW');\n              });\n               tom.on('poke', function(event) {\n                console.log('Tom says OW');\n              });\n               yehuda.trigger('poke');\n              tom.trigger('poke');\n              ```\n               @method mixin\n              @for rsvp\n              @private\n              @param {Object} object object to extend with EventTarget methods\n            */mixin:function mixin(object){object.on=this.on;object.off=this.off;object.trigger=this.trigger;object._promiseCallbacks=undefined;return object;},/**\n              Registers a callback to be executed when `eventName` is triggered\n               ```javascript\n              object.on('event', function(eventInfo){\n                // handle the event\n              });\n               object.trigger('event');\n              ```\n               @method on\n              @for EventTarget\n              @private\n              @param {String} eventName name of the event to listen for\n              @param {Function} callback function to be called when the event is triggered.\n            */on:function on(eventName,callback){if(typeof callback!=='function'){throw new TypeError('Callback must be a function');}var allCallbacks=callbacksFor(this);var callbacks=allCallbacks[eventName];if(!callbacks){callbacks=allCallbacks[eventName]=[];}if(callbacks.indexOf(callback)===-1){callbacks.push(callback);}},/**\n              You can use `off` to stop firing a particular callback for an event:\n               ```javascript\n              function doStuff() { // do stuff! }\n              object.on('stuff', doStuff);\n               object.trigger('stuff'); // doStuff will be called\n               // Unregister ONLY the doStuff callback\n              object.off('stuff', doStuff);\n              object.trigger('stuff'); // doStuff will NOT be called\n              ```\n               If you don't pass a `callback` argument to `off`, ALL callbacks for the\n              event will not be executed when the event fires. For example:\n               ```javascript\n              let callback1 = function(){};\n              let callback2 = function(){};\n               object.on('stuff', callback1);\n              object.on('stuff', callback2);\n               object.trigger('stuff'); // callback1 and callback2 will be executed.\n               object.off('stuff');\n              object.trigger('stuff'); // callback1 and callback2 will not be executed!\n              ```\n               @method off\n              @for rsvp\n              @private\n              @param {String} eventName event to stop listening to\n              @param {Function} [callback] optional argument. If given, only the function\n              given will be removed from the event's callback queue. If no `callback`\n              argument is given, all callbacks will be removed from the event's callback\n              queue.\n            */off:function off(eventName,callback){var allCallbacks=callbacksFor(this);if(!callback){allCallbacks[eventName]=[];return;}var callbacks=allCallbacks[eventName];var index=callbacks.indexOf(callback);if(index!==-1){callbacks.splice(index,1);}},/**\n              Use `trigger` to fire custom events. For example:\n               ```javascript\n              object.on('foo', function(){\n                console.log('foo event happened!');\n              });\n              object.trigger('foo');\n              // 'foo event happened!' logged to the console\n              ```\n               You can also pass a value as a second argument to `trigger` that will be\n              passed as an argument to all event listeners for the event:\n               ```javascript\n              object.on('foo', function(value){\n                console.log(value.name);\n              });\n               object.trigger('foo', { name: 'bar' });\n              // 'bar' logged to the console\n              ```\n               @method trigger\n              @for rsvp\n              @private\n              @param {String} eventName name of the event to be triggered\n              @param {*} [options] optional value to be passed to any event handlers for\n              the given `eventName`\n            */trigger:function trigger(eventName,options,label){var allCallbacks=callbacksFor(this);var callbacks=allCallbacks[eventName];if(callbacks){// Don't cache the callbacks.length since it may grow\nvar _callback2;for(var i=0;i<callbacks.length;i++){_callback2=callbacks[i];_callback2(options,label);}}}};var config={instrument:false};EventTarget['mixin'](config);function configure(name,value){if(arguments.length===2){config[name]=value;}else{return config[name];}}var queue$1=[];function scheduleFlush$1(){setTimeout(function(){for(var i=0;i<queue$1.length;i++){var entry=queue$1[i];var payload=entry.payload;payload.guid=payload.key+payload.id;payload.childGuid=payload.key+payload.childId;if(payload.error){payload.stack=payload.error.stack;}config['trigger'](entry.name,entry.payload);}queue$1.length=0;},50);}function instrument$1(eventName,promise,child){if(1===queue$1.push({name:eventName,payload:{key:promise._guidKey,id:promise._id,eventName:eventName,detail:promise._result,childId:child&&child._id,label:promise._label,timeStamp:Date.now(),error:config[\"instrument-with-stack\"]?new Error(promise._label):null}})){scheduleFlush$1();}}/**\n            `Promise.resolve` returns a promise that will become resolved with the\n            passed `value`. It is shorthand for the following:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            let promise = new Promise(function(resolve, reject){\n              resolve(1);\n            });\n\n            promise.then(function(value){\n              // value === 1\n            });\n            ```\n\n            Instead of writing the above, your code now simply becomes the following:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            let promise = RSVP.Promise.resolve(1);\n\n            promise.then(function(value){\n              // value === 1\n            });\n            ```\n\n            @method resolve\n            @for Promise\n            @static\n            @param {*} object value that the returned promise will be resolved with\n            @param {String} [label] optional string for identifying the returned promise.\n            Useful for tooling.\n            @return {Promise} a promise that will become fulfilled with the given\n            `value`\n          */function resolve$4(object,label){/*jshint validthis:true */var Constructor=this;if(object&&_typeof(object)==='object'&&object.constructor===Constructor){return object;}var promise=new Constructor(noop,label);resolve$3(promise,object);return promise;}function withOwnPromise(){return new TypeError('A promises callback cannot return that same promise.');}function objectOrFunction(x){var type=_typeof(x);return x!==null&&(type==='object'||type==='function');}function noop(){}var PENDING=void 0;var FULFILLED=1;var REJECTED=2;function tryThen(then,value,fulfillmentHandler,rejectionHandler){try{then.call(value,fulfillmentHandler,rejectionHandler);}catch(e){return e;}}function handleForeignThenable(promise,thenable,then){config.async(function(promise){var sealed=false;var error=tryThen(then,thenable,function(value){if(sealed){return;}sealed=true;if(thenable===value){fulfill(promise,value);}else{resolve$3(promise,value);}},function(reason){if(sealed){return;}sealed=true;reject$2(promise,reason);},'Settle: '+(promise._label||' unknown promise'));if(!sealed&&error){sealed=true;reject$2(promise,error);}},promise);}function handleOwnThenable(promise,thenable){if(thenable._state===FULFILLED){fulfill(promise,thenable._result);}else if(thenable._state===REJECTED){thenable._onError=null;reject$2(promise,thenable._result);}else{subscribe$1(thenable,undefined,function(value){if(thenable===value){fulfill(promise,value);}else{resolve$3(promise,value);}},function(reason){return reject$2(promise,reason);});}}function handleMaybeThenable(promise,maybeThenable,then$1){var isOwnThenable=maybeThenable.constructor===promise.constructor&&then$1===then&&promise.constructor.resolve===resolve$4;if(isOwnThenable){handleOwnThenable(promise,maybeThenable);}else if(typeof then$1==='function'){handleForeignThenable(promise,maybeThenable,then$1);}else{fulfill(promise,maybeThenable);}}function resolve$3(promise,value){if(promise===value){fulfill(promise,value);}else if(objectOrFunction(value)){var _then2;try{_then2=value.then;}catch(error){reject$2(promise,error);return;}handleMaybeThenable(promise,value,_then2);}else{fulfill(promise,value);}}function publishRejection(promise){if(promise._onError){promise._onError(promise._result);}publish(promise);}function fulfill(promise,value){if(promise._state!==PENDING){return;}promise._result=value;promise._state=FULFILLED;if(promise._subscribers.length===0){if(config.instrument){instrument$1('fulfilled',promise);}}else{config.async(publish,promise);}}function reject$2(promise,reason){if(promise._state!==PENDING){return;}promise._state=REJECTED;promise._result=reason;config.async(publishRejection,promise);}function subscribe$1(parent,child,onFulfillment,onRejection){var subscribers=parent._subscribers;var length=subscribers.length;parent._onError=null;subscribers[length]=child;subscribers[length+FULFILLED]=onFulfillment;subscribers[length+REJECTED]=onRejection;if(length===0&&parent._state){config.async(publish,parent);}}function publish(promise){var subscribers=promise._subscribers;var settled=promise._state;if(config.instrument){instrument$1(settled===FULFILLED?'fulfilled':'rejected',promise);}if(subscribers.length===0){return;}var child,callback,result=promise._result;for(var i=0;i<subscribers.length;i+=3){child=subscribers[i];callback=subscribers[i+settled];if(child){invokeCallback(settled,child,callback,result);}else{callback(result);}}promise._subscribers.length=0;}function invokeCallback(state,promise,callback,result){var hasCallback=typeof callback==='function';var value,succeeded=true,error;if(hasCallback){try{value=callback(result);}catch(e){succeeded=false;error=e;}}else{value=result;}if(promise._state!==PENDING);else if(value===promise){reject$2(promise,withOwnPromise());}else if(succeeded===false){reject$2(promise,error);}else if(hasCallback){resolve$3(promise,value);}else if(state===FULFILLED){fulfill(promise,value);}else if(state===REJECTED){reject$2(promise,value);}}function initializePromise(promise,resolver){var resolved=false;try{resolver(function(value){if(resolved){return;}resolved=true;resolve$3(promise,value);},function(reason){if(resolved){return;}resolved=true;reject$2(promise,reason);});}catch(e){reject$2(promise,e);}}function then(onFulfillment,onRejection,label){var parent=this;var state=parent._state;if(state===FULFILLED&&!onFulfillment||state===REJECTED&&!onRejection){config.instrument&&instrument$1('chained',parent,parent);return parent;}parent._onError=null;var child=new parent.constructor(noop,label);var result=parent._result;config.instrument&&instrument$1('chained',parent,child);if(state===PENDING){subscribe$1(parent,child,onFulfillment,onRejection);}else{var _callback3=state===FULFILLED?onFulfillment:onRejection;config.async(function(){return invokeCallback(state,child,_callback3,result);});}return child;}var Enumerator=/*#__PURE__*/function(){function Enumerator(Constructor,input,abortOnReject,label){_classCallCheck(this,Enumerator);this._instanceConstructor=Constructor;this.promise=new Constructor(noop,label);this._abortOnReject=abortOnReject;this._isUsingOwnPromise=Constructor===Promise$2;this._isUsingOwnResolve=Constructor.resolve===resolve$4;this._init.apply(this,arguments);}return _createClass(Enumerator,[{key:\"_init\",value:function _init(Constructor,input){var len=input.length||0;this.length=len;this._remaining=len;this._result=new Array(len);this._enumerate(input);}},{key:\"_enumerate\",value:function _enumerate(input){var length=this.length;var promise=this.promise;for(var i=0;promise._state===PENDING&&i<length;i++){this._eachEntry(input[i],i,true);}this._checkFullfillment();}},{key:\"_checkFullfillment\",value:function _checkFullfillment(){if(this._remaining===0){var result=this._result;fulfill(this.promise,result);this._result=null;}}},{key:\"_settleMaybeThenable\",value:function _settleMaybeThenable(entry,i,firstPass){var c=this._instanceConstructor;if(this._isUsingOwnResolve){var then$1,error,succeeded=true;try{then$1=entry.then;}catch(e){succeeded=false;error=e;}if(then$1===then&&entry._state!==PENDING){entry._onError=null;this._settledAt(entry._state,i,entry._result,firstPass);}else if(typeof then$1!=='function'){this._settledAt(FULFILLED,i,entry,firstPass);}else if(this._isUsingOwnPromise){var _promise=new c(noop);if(succeeded===false){reject$2(_promise,error);}else{handleMaybeThenable(_promise,entry,then$1);this._willSettleAt(_promise,i,firstPass);}}else{this._willSettleAt(new c(function(resolve){return resolve(entry);}),i,firstPass);}}else{this._willSettleAt(c.resolve(entry),i,firstPass);}}},{key:\"_eachEntry\",value:function _eachEntry(entry,i,firstPass){if(entry!==null&&_typeof(entry)==='object'){this._settleMaybeThenable(entry,i,firstPass);}else{this._setResultAt(FULFILLED,i,entry,firstPass);}}},{key:\"_settledAt\",value:function _settledAt(state,i,value,firstPass){var promise=this.promise;if(promise._state===PENDING){if(this._abortOnReject&&state===REJECTED){reject$2(promise,value);}else{this._setResultAt(state,i,value,firstPass);this._checkFullfillment();}}}},{key:\"_setResultAt\",value:function _setResultAt(state,i,value,firstPass){this._remaining--;this._result[i]=value;}},{key:\"_willSettleAt\",value:function _willSettleAt(promise,i,firstPass){var _this8=this;subscribe$1(promise,undefined,function(value){return _this8._settledAt(FULFILLED,i,value,firstPass);},function(reason){return _this8._settledAt(REJECTED,i,reason,firstPass);});}}]);}();function setSettledResult(state,i,value){this._remaining--;if(state===FULFILLED){this._result[i]={state:'fulfilled',value:value};}else{this._result[i]={state:'rejected',reason:value};}}/**\n            `Promise.all` accepts an array of promises, and returns a new promise which\n            is fulfilled with an array of fulfillment values for the passed promises, or\n            rejected with the reason of the first passed promise to be rejected. It casts all\n            elements of the passed iterable to promises as it runs this algorithm.\n\n            Example:\n\n            ```javascript\n            import Promise, { resolve } from 'rsvp';\n\n            let promise1 = resolve(1);\n            let promise2 = resolve(2);\n            let promise3 = resolve(3);\n            let promises = [ promise1, promise2, promise3 ];\n\n            Promise.all(promises).then(function(array){\n              // The array here would be [ 1, 2, 3 ];\n            });\n            ```\n\n            If any of the `promises` given to `RSVP.all` are rejected, the first promise\n            that is rejected will be given as an argument to the returned promises's\n            rejection handler. For example:\n\n            Example:\n\n            ```javascript\n            import Promise, { resolve, reject } from 'rsvp';\n\n            let promise1 = resolve(1);\n            let promise2 = reject(new Error(\"2\"));\n            let promise3 = reject(new Error(\"3\"));\n            let promises = [ promise1, promise2, promise3 ];\n\n            Promise.all(promises).then(function(array){\n              // Code here never runs because there are rejected promises!\n            }, function(error) {\n              // error.message === \"2\"\n            });\n            ```\n\n            @method all\n            @for Promise\n            @param {Array} entries array of promises\n            @param {String} [label] optional string for labeling the promise.\n            Useful for tooling.\n            @return {Promise} promise that is fulfilled when all `promises` have been\n            fulfilled, or rejected if any of them become rejected.\n            @static\n          */function all$1(entries,label){if(!Array.isArray(entries)){return this.reject(new TypeError(\"Promise.all must be called with an array\"),label);}return new Enumerator(this,entries,true/* abort on reject */,label).promise;}/**\n            `Promise.race` returns a new promise which is settled in the same way as the\n            first passed promise to settle.\n\n            Example:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            let promise1 = new Promise(function(resolve, reject){\n              setTimeout(function(){\n                resolve('promise 1');\n              }, 200);\n            });\n\n            let promise2 = new Promise(function(resolve, reject){\n              setTimeout(function(){\n                resolve('promise 2');\n              }, 100);\n            });\n\n            Promise.race([promise1, promise2]).then(function(result){\n              // result === 'promise 2' because it was resolved before promise1\n              // was resolved.\n            });\n            ```\n\n            `Promise.race` is deterministic in that only the state of the first\n            settled promise matters. For example, even if other promises given to the\n            `promises` array argument are resolved, but the first settled promise has\n            become rejected before the other promises became fulfilled, the returned\n            promise will become rejected:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            let promise1 = new Promise(function(resolve, reject){\n              setTimeout(function(){\n                resolve('promise 1');\n              }, 200);\n            });\n\n            let promise2 = new Promise(function(resolve, reject){\n              setTimeout(function(){\n                reject(new Error('promise 2'));\n              }, 100);\n            });\n\n            Promise.race([promise1, promise2]).then(function(result){\n              // Code here never runs\n            }, function(reason){\n              // reason.message === 'promise 2' because promise 2 became rejected before\n              // promise 1 became fulfilled\n            });\n            ```\n\n            An example real-world use case is implementing timeouts:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            Promise.race([ajax('foo.json'), timeout(5000)])\n            ```\n\n            @method race\n            @for Promise\n            @static\n            @param {Array} entries array of promises to observe\n            @param {String} [label] optional string for describing the promise returned.\n            Useful for tooling.\n            @return {Promise} a promise which settles in the same way as the first passed\n            promise to settle.\n          */function race$1(entries,label){/*jshint validthis:true */var Constructor=this;var promise=new Constructor(noop,label);if(!Array.isArray(entries)){reject$2(promise,new TypeError('Promise.race must be called with an array'));return promise;}for(var i=0;promise._state===PENDING&&i<entries.length;i++){subscribe$1(Constructor.resolve(entries[i]),undefined,function(value){return resolve$3(promise,value);},function(reason){return reject$2(promise,reason);});}return promise;}/**\n            `Promise.reject` returns a promise rejected with the passed `reason`.\n            It is shorthand for the following:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            let promise = new Promise(function(resolve, reject){\n              reject(new Error('WHOOPS'));\n            });\n\n            promise.then(function(value){\n              // Code here doesn't run because the promise is rejected!\n            }, function(reason){\n              // reason.message === 'WHOOPS'\n            });\n            ```\n\n            Instead of writing the above, your code now simply becomes the following:\n\n            ```javascript\n            import Promise from 'rsvp';\n\n            let promise = Promise.reject(new Error('WHOOPS'));\n\n            promise.then(function(value){\n              // Code here doesn't run because the promise is rejected!\n            }, function(reason){\n              // reason.message === 'WHOOPS'\n            });\n            ```\n\n            @method reject\n            @for Promise\n            @static\n            @param {*} reason value that the returned promise will be rejected with.\n            @param {String} [label] optional string for identifying the returned promise.\n            Useful for tooling.\n            @return {Promise} a promise rejected with the given `reason`.\n          */function reject$1(reason,label){/*jshint validthis:true */var Constructor=this;var promise=new Constructor(noop,label);reject$2(promise,reason);return promise;}var guidKey='rsvp_'+Date.now()+'-';var counter=0;function needsResolver(){throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');}function needsNew(){throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");}/**\n            Promise objects represent the eventual result of an asynchronous operation. The\n            primary way of interacting with a promise is through its `then` method, which\n            registers callbacks to receive either a promise’s eventual value or the reason\n            why the promise cannot be fulfilled.\n\n            Terminology\n            -----------\n\n            - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n            - `thenable` is an object or function that defines a `then` method.\n            - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n            - `exception` is a value that is thrown using the throw statement.\n            - `reason` is a value that indicates why a promise was rejected.\n            - `settled` the final resting state of a promise, fulfilled or rejected.\n\n            A promise can be in one of three states: pending, fulfilled, or rejected.\n\n            Promises that are fulfilled have a fulfillment value and are in the fulfilled\n            state.  Promises that are rejected have a rejection reason and are in the\n            rejected state.  A fulfillment value is never a thenable.\n\n            Promises can also be said to *resolve* a value.  If this value is also a\n            promise, then the original promise's settled state will match the value's\n            settled state.  So a promise that *resolves* a promise that rejects will\n            itself reject, and a promise that *resolves* a promise that fulfills will\n            itself fulfill.\n\n\n            Basic Usage:\n            ------------\n\n            ```js\n            let promise = new Promise(function(resolve, reject) {\n              // on success\n              resolve(value);\n\n              // on failure\n              reject(reason);\n            });\n\n            promise.then(function(value) {\n              // on fulfillment\n            }, function(reason) {\n              // on rejection\n            });\n            ```\n\n            Advanced Usage:\n            ---------------\n\n            Promises shine when abstracting away asynchronous interactions such as\n            `XMLHttpRequest`s.\n\n            ```js\n            function getJSON(url) {\n              return new Promise(function(resolve, reject){\n                let xhr = new XMLHttpRequest();\n\n                xhr.open('GET', url);\n                xhr.onreadystatechange = handler;\n                xhr.responseType = 'json';\n                xhr.setRequestHeader('Accept', 'application/json');\n                xhr.send();\n\n                function handler() {\n                  if (this.readyState === this.DONE) {\n                    if (this.status === 200) {\n                      resolve(this.response);\n                    } else {\n                      reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n                    }\n                  }\n                };\n              });\n            }\n\n            getJSON('/posts.json').then(function(json) {\n              // on fulfillment\n            }, function(reason) {\n              // on rejection\n            });\n            ```\n\n            Unlike callbacks, promises are great composable primitives.\n\n            ```js\n            Promise.all([\n              getJSON('/posts'),\n              getJSON('/comments')\n            ]).then(function(values){\n              values[0] // => postsJSON\n              values[1] // => commentsJSON\n\n              return values;\n            });\n            ```\n\n            @class Promise\n            @public\n            @param {function} resolver\n            @param {String} [label] optional string for labeling the promise.\n            Useful for tooling.\n            @constructor\n          */var Promise$1=/*#__PURE__*/function(){function Promise(resolver,label){_classCallCheck(this,Promise);this._id=counter++;this._label=label;this._state=undefined;this._result=undefined;this._subscribers=[];config.instrument&&instrument$1('created',this);if(noop!==resolver){typeof resolver!=='function'&&needsResolver();this instanceof Promise?initializePromise(this,resolver):needsNew();}}return _createClass(Promise,[{key:\"_onError\",value:function _onError(reason){var _this9=this;config.after(function(){if(_this9._onError){config.trigger('error',reason,_this9._label);}});}/**\n              `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n              as the catch block of a try/catch statement.\n            \n              ```js\n              function findAuthor(){\n                throw new Error('couldn\\'t find that author');\n              }\n            \n              // synchronous\n              try {\n                findAuthor();\n              } catch(reason) {\n                // something went wrong\n              }\n            \n              // async with promises\n              findAuthor().catch(function(reason){\n                // something went wrong\n              });\n              ```\n            \n              @method catch\n              @param {Function} onRejection\n              @param {String} [label] optional string for labeling the promise.\n              Useful for tooling.\n              @return {Promise}\n            */},{key:\"catch\",value:function _catch(onRejection,label){return this.then(undefined,onRejection,label);}/**\n              `finally` will be invoked regardless of the promise's fate just as native\n              try/catch/finally behaves\n            \n              Synchronous example:\n            \n              ```js\n              findAuthor() {\n                if (Math.random() > 0.5) {\n                  throw new Error();\n                }\n                return new Author();\n              }\n            \n              try {\n                return findAuthor(); // succeed or fail\n              } catch(error) {\n                return findOtherAuthor();\n              } finally {\n                // always runs\n                // doesn't affect the return value\n              }\n              ```\n            \n              Asynchronous example:\n            \n              ```js\n              findAuthor().catch(function(reason){\n                return findOtherAuthor();\n              }).finally(function(){\n                // author was either found, or not\n              });\n              ```\n            \n              @method finally\n              @param {Function} callback\n              @param {String} [label] optional string for labeling the promise.\n              Useful for tooling.\n              @return {Promise}\n            */},{key:\"finally\",value:function _finally(callback,label){var promise=this;var constructor=promise.constructor;if(typeof callback==='function'){return promise.then(function(value){return constructor.resolve(callback()).then(function(){return value;});},function(reason){return constructor.resolve(callback()).then(function(){throw reason;});});}return promise.then(callback,callback);}}]);}();Promise$1.cast=resolve$4;// deprecated\nPromise$1.all=all$1;Promise$1.race=race$1;Promise$1.resolve=resolve$4;Promise$1.reject=reject$1;Promise$1.prototype._guidKey=guidKey;/**\n            The primary way of interacting with a promise is through its `then` method,\n            which registers callbacks to receive either a promise's eventual value or the\n            reason why the promise cannot be fulfilled.\n\n            ```js\n            findUser().then(function(user){\n              // user is available\n            }, function(reason){\n              // user is unavailable, and you are given the reason why\n            });\n            ```\n\n            Chaining\n            --------\n\n            The return value of `then` is itself a promise.  This second, 'downstream'\n            promise is resolved with the return value of the first promise's fulfillment\n            or rejection handler, or rejected if the handler throws an exception.\n\n            ```js\n            findUser().then(function (user) {\n              return user.name;\n            }, function (reason) {\n              return 'default name';\n            }).then(function (userName) {\n              // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n              // will be `'default name'`\n            });\n\n            findUser().then(function (user) {\n              throw new Error('Found user, but still unhappy');\n            }, function (reason) {\n              throw new Error('`findUser` rejected and we\\'re unhappy');\n            }).then(function (value) {\n              // never reached\n            }, function (reason) {\n              // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n              // If `findUser` rejected, `reason` will be '`findUser` rejected and we\\'re unhappy'.\n            });\n            ```\n            If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n            ```js\n            findUser().then(function (user) {\n              throw new PedagogicalException('Upstream error');\n            }).then(function (value) {\n              // never reached\n            }).then(function (value) {\n              // never reached\n            }, function (reason) {\n              // The `PedgagocialException` is propagated all the way down to here\n            });\n            ```\n\n            Assimilation\n            ------------\n\n            Sometimes the value you want to propagate to a downstream promise can only be\n            retrieved asynchronously. This can be achieved by returning a promise in the\n            fulfillment or rejection handler. The downstream promise will then be pending\n            until the returned promise is settled. This is called *assimilation*.\n\n            ```js\n            findUser().then(function (user) {\n              return findCommentsByAuthor(user);\n            }).then(function (comments) {\n              // The user's comments are now available\n            });\n            ```\n\n            If the assimliated promise rejects, then the downstream promise will also reject.\n\n            ```js\n            findUser().then(function (user) {\n              return findCommentsByAuthor(user);\n            }).then(function (comments) {\n              // If `findCommentsByAuthor` fulfills, we'll have the value here\n            }, function (reason) {\n              // If `findCommentsByAuthor` rejects, we'll have the reason here\n            });\n            ```\n\n            Simple Example\n            --------------\n\n            Synchronous Example\n\n            ```javascript\n            let result;\n\n            try {\n              result = findResult();\n              // success\n            } catch(reason) {\n              // failure\n            }\n            ```\n\n            Errback Example\n\n            ```js\n            findResult(function(result, err){\n              if (err) {\n                // failure\n              } else {\n                // success\n              }\n            });\n            ```\n\n            Promise Example;\n\n            ```javascript\n            findResult().then(function(result){\n              // success\n            }, function(reason){\n              // failure\n            });\n            ```\n\n            Advanced Example\n            --------------\n\n            Synchronous Example\n\n            ```javascript\n            let author, books;\n\n            try {\n              author = findAuthor();\n              books  = findBooksByAuthor(author);\n              // success\n            } catch(reason) {\n              // failure\n            }\n            ```\n\n            Errback Example\n\n            ```js\n\n            function foundBooks(books) {\n\n            }\n\n            function failure(reason) {\n\n            }\n\n            findAuthor(function(author, err){\n              if (err) {\n                failure(err);\n                // failure\n              } else {\n                try {\n                  findBoooksByAuthor(author, function(books, err) {\n                    if (err) {\n                      failure(err);\n                    } else {\n                      try {\n                        foundBooks(books);\n                      } catch(reason) {\n                        failure(reason);\n                      }\n                    }\n                  });\n                } catch(error) {\n                  failure(err);\n                }\n                // success\n              }\n            });\n            ```\n\n            Promise Example;\n\n            ```javascript\n            findAuthor().\n              then(findBooksByAuthor).\n              then(function(books){\n                // found books\n            }).catch(function(reason){\n              // something went wrong\n            });\n            ```\n\n            @method then\n            @param {Function} onFulfillment\n            @param {Function} onRejection\n            @param {String} [label] optional string for labeling the promise.\n            Useful for tooling.\n            @return {Promise}\n          */Promise$1.prototype.then=then;var Promise$2=Promise$1;function makeObject(_,argumentNames){var obj={};var length=_.length;var args=new Array(length);for(var x=0;x<length;x++){args[x]=_[x];}for(var i=0;i<argumentNames.length;i++){var _name13=argumentNames[i];obj[_name13]=args[i+1];}return obj;}function arrayResult(_){var length=_.length;var args=new Array(length-1);for(var i=1;i<length;i++){args[i-1]=_[i];}return args;}function wrapThenable(_then3,promise){return{then:function then(onFulFillment,onRejection){return _then3.call(promise,onFulFillment,onRejection);}};}/**\n            `denodeify` takes a 'node-style' function and returns a function that\n            will return an `Promise`. You can use `denodeify` in Node.js or the\n            browser when you'd prefer to use promises over using callbacks. For example,\n            `denodeify` transforms the following:\n\n            ```javascript\n            let fs = require('fs');\n\n            fs.readFile('myfile.txt', function(err, data){\n              if (err) return handleError(err);\n              handleData(data);\n            });\n            ```\n\n            into:\n\n            ```javascript\n            let fs = require('fs');\n            let readFile = denodeify(fs.readFile);\n\n            readFile('myfile.txt').then(handleData, handleError);\n            ```\n\n            If the node function has multiple success parameters, then `denodeify`\n            just returns the first one:\n\n            ```javascript\n            let request = denodeify(require('request'));\n\n            request('http://example.com').then(function(res) {\n              // ...\n            });\n            ```\n\n            However, if you need all success parameters, setting `denodeify`'s\n            second parameter to `true` causes it to return all success parameters\n            as an array:\n\n            ```javascript\n            let request = denodeify(require('request'), true);\n\n            request('http://example.com').then(function(result) {\n              // result[0] -> res\n              // result[1] -> body\n            });\n            ```\n\n            Or if you pass it an array with names it returns the parameters as a hash:\n\n            ```javascript\n            let request = denodeify(require('request'), ['res', 'body']);\n\n            request('http://example.com').then(function(result) {\n              // result.res\n              // result.body\n            });\n            ```\n\n            Sometimes you need to retain the `this`:\n\n            ```javascript\n            let app = require('express')();\n            let render = denodeify(app.render.bind(app));\n            ```\n\n            The denodified function inherits from the original function. It works in all\n            environments, except IE 10 and below. Consequently all properties of the original\n            function are available to you. However, any properties you change on the\n            denodeified function won't be changed on the original function. Example:\n\n            ```javascript\n            let request = denodeify(require('request')),\n                cookieJar = request.jar(); // <- Inheritance is used here\n\n            request('http://example.com', {jar: cookieJar}).then(function(res) {\n              // cookieJar.cookies holds now the cookies returned by example.com\n            });\n            ```\n\n            Using `denodeify` makes it easier to compose asynchronous operations instead\n            of using callbacks. For example, instead of:\n\n            ```javascript\n            let fs = require('fs');\n\n            fs.readFile('myfile.txt', function(err, data){\n              if (err) { ... } // Handle error\n              fs.writeFile('myfile2.txt', data, function(err){\n                if (err) { ... } // Handle error\n                console.log('done')\n              });\n            });\n            ```\n\n            you can chain the operations together using `then` from the returned promise:\n\n            ```javascript\n            let fs = require('fs');\n            let readFile = denodeify(fs.readFile);\n            let writeFile = denodeify(fs.writeFile);\n\n            readFile('myfile.txt').then(function(data){\n              return writeFile('myfile2.txt', data);\n            }).then(function(){\n              console.log('done')\n            }).catch(function(error){\n              // Handle error\n            });\n            ```\n\n            @method denodeify\n            @public\n            @static\n            @for rsvp\n            @param {Function} nodeFunc a 'node-style' function that takes a callback as\n            its last argument. The callback expects an error to be passed as its first\n            argument (if an error occurred, otherwise null), and the value from the\n            operation as its second argument ('function(err, value){ }').\n            @param {Boolean|Array} [options] An optional paramter that if set\n            to `true` causes the promise to fulfill with the callback's success arguments\n            as an array. This is useful if the node function has multiple success\n            paramters. If you set this paramter to an array with names, the promise will\n            fulfill with a hash with these names as keys and the success parameters as\n            values.\n            @return {Function} a function that wraps `nodeFunc` to return a `Promise`\n          */function denodeify(nodeFunc,options){var fn=function fn(){var l=arguments.length;var args=new Array(l+1);var promiseInput=false;for(var i=0;i<l;++i){var arg=arguments[i];// TODO: this code really needs to be cleaned up\nif(!promiseInput){if(arg!==null&&_typeof(arg)==='object'){if(arg.constructor===Promise$2){promiseInput=true;}else{try{promiseInput=arg.then;}catch(error){var p=new Promise$2(noop);reject$2(p,error);return p;}}}else{promiseInput=false;}if(promiseInput&&promiseInput!==true){arg=wrapThenable(promiseInput,arg);}}args[i]=arg;}var promise=new Promise$2(noop);args[l]=function(err,val){if(err){reject$2(promise,err);}else if(options===undefined){resolve$3(promise,val);}else if(options===true){resolve$3(promise,arrayResult(arguments));}else if(Array.isArray(options)){resolve$3(promise,makeObject(arguments,options));}else{resolve$3(promise,val);}};if(promiseInput){return handlePromiseInput(promise,args,nodeFunc,this);}else{return handleValueInput(promise,args,nodeFunc,this);}};fn.__proto__=nodeFunc;return fn;}function handleValueInput(promise,args,nodeFunc,self){try{nodeFunc.apply(self,args);}catch(error){reject$2(promise,error);}return promise;}function handlePromiseInput(promise,args,nodeFunc,self){return Promise$2.all(args).then(function(args){return handleValueInput(promise,args,nodeFunc,self);});}/**\n            This is a convenient alias for `Promise.all`.\n\n            @method all\n            @public\n            @static\n            @for rsvp\n            @param {Array} array Array of promises.\n            @param {String} [label] An optional label. This is useful\n            for tooling.\n          */function all(array,label){return Promise$2.all(array,label);}/**\n          @module rsvp\n          @public\n          **/var AllSettled=/*#__PURE__*/function(_Enumerator){function AllSettled(Constructor,entries,label){_classCallCheck(this,AllSettled);return _callSuper(this,AllSettled,[Constructor,entries,false/* don't abort on reject */,label]);}_inherits(AllSettled,_Enumerator);return _createClass(AllSettled);}(Enumerator);AllSettled.prototype._setResultAt=setSettledResult;/**\n          `RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing\n          a fail-fast method, it waits until all the promises have returned and\n          shows you all the results. This is useful if you want to handle multiple\n          promises' failure states together as a set.\n           Returns a promise that is fulfilled when all the given promises have been\n          settled. The return promise is fulfilled with an array of the states of\n          the promises passed into the `promises` array argument.\n           Each state object will either indicate fulfillment or rejection, and\n          provide the corresponding value or reason. The states will take one of\n          the following formats:\n           ```javascript\n          { state: 'fulfilled', value: value }\n            or\n          { state: 'rejected', reason: reason }\n          ```\n           Example:\n           ```javascript\n          let promise1 = RSVP.Promise.resolve(1);\n          let promise2 = RSVP.Promise.reject(new Error('2'));\n          let promise3 = RSVP.Promise.reject(new Error('3'));\n          let promises = [ promise1, promise2, promise3 ];\n           RSVP.allSettled(promises).then(function(array){\n            // array == [\n            //   { state: 'fulfilled', value: 1 },\n            //   { state: 'rejected', reason: Error },\n            //   { state: 'rejected', reason: Error }\n            // ]\n            // Note that for the second item, reason.message will be '2', and for the\n            // third item, reason.message will be '3'.\n          }, function(error) {\n            // Not run. (This block would only be called if allSettled had failed,\n            // for instance if passed an incorrect argument type.)\n          });\n          ```\n           @method allSettled\n          @public\n          @static\n          @for rsvp\n          @param {Array} entries\n          @param {String} [label] - optional string that describes the promise.\n          Useful for tooling.\n          @return {Promise} promise that is fulfilled with an array of the settled\n          states of the constituent promises.\n          */function allSettled(entries,label){if(!Array.isArray(entries)){return Promise$2.reject(new TypeError(\"Promise.allSettled must be called with an array\"),label);}return new AllSettled(Promise$2,entries,label).promise;}/**\n            This is a convenient alias for `Promise.race`.\n\n            @method race\n            @public\n            @static\n            @for rsvp\n            @param {Array} array Array of promises.\n            @param {String} [label] An optional label. This is useful\n            for tooling.\n           */function race(array,label){return Promise$2.race(array,label);}var PromiseHash=/*#__PURE__*/function(_Enumerator2){function PromiseHash(Constructor,object){var abortOnReject=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var label=arguments.length>3?arguments[3]:undefined;_classCallCheck(this,PromiseHash);return _callSuper(this,PromiseHash,[Constructor,object,abortOnReject,label]);}_inherits(PromiseHash,_Enumerator2);return _createClass(PromiseHash,[{key:\"_init\",value:function _init(Constructor,object){this._result={};this._enumerate(object);}},{key:\"_enumerate\",value:function _enumerate(input){var keys=Object.keys(input);var length=keys.length;var promise=this.promise;this._remaining=length;var key,val;for(var i=0;promise._state===PENDING&&i<length;i++){key=keys[i];val=input[key];this._eachEntry(val,key,true);}this._checkFullfillment();}}]);}(Enumerator);/**\n            `hash` is similar to `all`, but takes an object instead of an array\n            for its `promises` argument.\n\n            Returns a promise that is fulfilled when all the given promises have been\n            fulfilled, or rejected if any of them become rejected. The returned promise\n            is fulfilled with a hash that has the same key names as the `promises` object\n            argument. If any of the values in the object are not promises, they will\n            simply be copied over to the fulfilled object.\n\n            Example:\n\n            ```javascript\n            let promises = {\n              myPromise: resolve(1),\n              yourPromise: resolve(2),\n              theirPromise: resolve(3),\n              notAPromise: 4\n            };\n\n            hash(promises).then(function(hash){\n              // hash here is an object that looks like:\n              // {\n              //   myPromise: 1,\n              //   yourPromise: 2,\n              //   theirPromise: 3,\n              //   notAPromise: 4\n              // }\n            });\n            ```\n\n            If any of the `promises` given to `hash` are rejected, the first promise\n            that is rejected will be given as the reason to the rejection handler.\n\n            Example:\n\n            ```javascript\n            let promises = {\n              myPromise: resolve(1),\n              rejectedPromise: reject(new Error('rejectedPromise')),\n              anotherRejectedPromise: reject(new Error('anotherRejectedPromise')),\n            };\n\n            hash(promises).then(function(hash){\n              // Code here never runs because there are rejected promises!\n            }, function(reason) {\n              // reason.message === 'rejectedPromise'\n            });\n            ```\n\n            An important note: `hash` is intended for plain JavaScript objects that\n            are just a set of keys and values. `hash` will NOT preserve prototype\n            chains.\n\n            Example:\n\n            ```javascript\n            import { hash, resolve } from 'rsvp';\n            function MyConstructor(){\n              this.example = resolve('Example');\n            }\n\n            MyConstructor.prototype = {\n              protoProperty: resolve('Proto Property')\n            };\n\n            let myObject = new MyConstructor();\n\n            hash(myObject).then(function(hash){\n              // protoProperty will not be present, instead you will just have an\n              // object that looks like:\n              // {\n              //   example: 'Example'\n              // }\n              //\n              // hash.hasOwnProperty('protoProperty'); // false\n              // 'undefined' === typeof hash.protoProperty\n            });\n            ```\n\n            @method hash\n            @public\n            @static\n            @for rsvp\n            @param {Object} object\n            @param {String} [label] optional string that describes the promise.\n            Useful for tooling.\n            @return {Promise} promise that is fulfilled when all properties of `promises`\n            have been fulfilled, or rejected if any of them become rejected.\n          */function hash$2(object,label){return Promise$2.resolve(object,label).then(function(object){if(object===null||_typeof(object)!=='object'){throw new TypeError(\"Promise.hash must be called with an object\");}return new PromiseHash(Promise$2,object,label).promise;});}var HashSettled=/*#__PURE__*/function(_PromiseHash){function HashSettled(Constructor,object,label){_classCallCheck(this,HashSettled);return _callSuper(this,HashSettled,[Constructor,object,false,label]);}_inherits(HashSettled,_PromiseHash);return _createClass(HashSettled);}(PromiseHash);HashSettled.prototype._setResultAt=setSettledResult;/**\n            `hashSettled` is similar to `allSettled`, but takes an object\n            instead of an array for its `promises` argument.\n\n            Unlike `all` or `hash`, which implement a fail-fast method,\n            but like `allSettled`, `hashSettled` waits until all the\n            constituent promises have returned and then shows you all the results\n            with their states and values/reasons. This is useful if you want to\n            handle multiple promises' failure states together as a set.\n\n            Returns a promise that is fulfilled when all the given promises have been\n            settled, or rejected if the passed parameters are invalid.\n\n            The returned promise is fulfilled with a hash that has the same key names as\n            the `promises` object argument. If any of the values in the object are not\n            promises, they will be copied over to the fulfilled object and marked with state\n            'fulfilled'.\n\n            Example:\n\n            ```javascript\n            import { hashSettled, resolve } from 'rsvp';\n\n            let promises = {\n              myPromise: resolve(1),\n              yourPromise: resolve(2),\n              theirPromise: resolve(3),\n              notAPromise: 4\n            };\n\n            hashSettled(promises).then(function(hash){\n              // hash here is an object that looks like:\n              // {\n              //   myPromise: { state: 'fulfilled', value: 1 },\n              //   yourPromise: { state: 'fulfilled', value: 2 },\n              //   theirPromise: { state: 'fulfilled', value: 3 },\n              //   notAPromise: { state: 'fulfilled', value: 4 }\n              // }\n            });\n            ```\n\n            If any of the `promises` given to `hash` are rejected, the state will\n            be set to 'rejected' and the reason for rejection provided.\n\n            Example:\n\n            ```javascript\n            import { hashSettled, reject, resolve } from 'rsvp';\n\n            let promises = {\n              myPromise: resolve(1),\n              rejectedPromise: reject(new Error('rejection')),\n              anotherRejectedPromise: reject(new Error('more rejection')),\n            };\n\n            hashSettled(promises).then(function(hash){\n              // hash here is an object that looks like:\n              // {\n              //   myPromise:              { state: 'fulfilled', value: 1 },\n              //   rejectedPromise:        { state: 'rejected', reason: Error },\n              //   anotherRejectedPromise: { state: 'rejected', reason: Error },\n              // }\n              // Note that for rejectedPromise, reason.message == 'rejection',\n              // and for anotherRejectedPromise, reason.message == 'more rejection'.\n            });\n            ```\n\n            An important note: `hashSettled` is intended for plain JavaScript objects that\n            are just a set of keys and values. `hashSettled` will NOT preserve prototype\n            chains.\n\n            Example:\n\n            ```javascript\n            import Promise, { hashSettled, resolve } from 'rsvp';\n\n            function MyConstructor(){\n              this.example = resolve('Example');\n            }\n\n            MyConstructor.prototype = {\n              protoProperty: Promise.resolve('Proto Property')\n            };\n\n            let myObject = new MyConstructor();\n\n            hashSettled(myObject).then(function(hash){\n              // protoProperty will not be present, instead you will just have an\n              // object that looks like:\n              // {\n              //   example: { state: 'fulfilled', value: 'Example' }\n              // }\n              //\n              // hash.hasOwnProperty('protoProperty'); // false\n              // 'undefined' === typeof hash.protoProperty\n            });\n            ```\n\n            @method hashSettled\n            @public\n            @for rsvp\n            @param {Object} object\n            @param {String} [label] optional string that describes the promise.\n            Useful for tooling.\n            @return {Promise} promise that is fulfilled when when all properties of `promises`\n            have been settled.\n            @static\n          */function hashSettled(object,label){return Promise$2.resolve(object,label).then(function(object){if(object===null||_typeof(object)!=='object'){throw new TypeError(\"hashSettled must be called with an object\");}return new HashSettled(Promise$2,object,false,label).promise;});}/**\n            `rethrow` will rethrow an error on the next turn of the JavaScript event\n            loop in order to aid debugging.\n\n            Promises A+ specifies that any exceptions that occur with a promise must be\n            caught by the promises implementation and bubbled to the last handler. For\n            this reason, it is recommended that you always specify a second rejection\n            handler function to `then`. However, `rethrow` will throw the exception\n            outside of the promise, so it bubbles up to your console if in the browser,\n            or domain/cause uncaught exception in Node. `rethrow` will also throw the\n            error again so the error can be handled by the promise per the spec.\n\n            ```javascript\n            import { rethrow } from 'rsvp';\n\n            function throws(){\n              throw new Error('Whoops!');\n            }\n\n            let promise = new Promise(function(resolve, reject){\n              throws();\n            });\n\n            promise.catch(rethrow).then(function(){\n              // Code here doesn't run because the promise became rejected due to an\n              // error!\n            }, function (err){\n              // handle the error here\n            });\n            ```\n\n            The 'Whoops' error will be thrown on the next turn of the event loop\n            and you can watch for it in your console. You can also handle it using a\n            rejection handler given to `.then` or `.catch` on the returned promise.\n\n            @method rethrow\n            @public\n            @static\n            @for rsvp\n            @param {Error} reason reason the promise became rejected.\n            @throws Error\n            @static\n          */function rethrow(reason){setTimeout(function(){throw reason;});throw reason;}/**\n            `defer` returns an object similar to jQuery's `$.Deferred`.\n            `defer` should be used when porting over code reliant on `$.Deferred`'s\n            interface. New code should use the `Promise` constructor instead.\n\n            The object returned from `defer` is a plain object with three properties:\n\n            * promise - an `Promise`.\n            * reject - a function that causes the `promise` property on this object to\n              become rejected\n            * resolve - a function that causes the `promise` property on this object to\n              become fulfilled.\n\n            Example:\n\n             ```javascript\n             let deferred = defer();\n\n             deferred.resolve(\"Success!\");\n\n             deferred.promise.then(function(value){\n               // value here is \"Success!\"\n             });\n             ```\n\n            @method defer\n            @public\n            @static\n            @for rsvp\n            @param {String} [label] optional string for labeling the promise.\n            Useful for tooling.\n            @return {Object}\n           */function defer(label){var deferred={resolve:undefined,reject:undefined};deferred.promise=new Promise$2(function(resolve,reject){deferred.resolve=resolve;deferred.reject=reject;},label);return deferred;}var MapEnumerator=/*#__PURE__*/function(_Enumerator3){function MapEnumerator(Constructor,entries,mapFn,label){_classCallCheck(this,MapEnumerator);return _callSuper(this,MapEnumerator,[Constructor,entries,true,label,mapFn]);}_inherits(MapEnumerator,_Enumerator3);return _createClass(MapEnumerator,[{key:\"_init\",value:function _init(Constructor,input,bool,label,mapFn){var len=input.length||0;this.length=len;this._remaining=len;this._result=new Array(len);this._mapFn=mapFn;this._enumerate(input);}},{key:\"_setResultAt\",value:function _setResultAt(state,i,value,firstPass){if(firstPass){try{this._eachEntry(this._mapFn(value,i),i,false);}catch(error){this._settledAt(REJECTED,i,error,false);}}else{this._remaining--;this._result[i]=value;}}}]);}(Enumerator);/**\n           `map` is similar to JavaScript's native `map` method. `mapFn` is eagerly called\n            meaning that as soon as any promise resolves its value will be passed to `mapFn`.\n            `map` returns a promise that will become fulfilled with the result of running\n            `mapFn` on the values the promises become fulfilled with.\n\n            For example:\n\n            ```javascript\n            import { map, resolve } from 'rsvp';\n\n            let promise1 = resolve(1);\n            let promise2 = resolve(2);\n            let promise3 = resolve(3);\n            let promises = [ promise1, promise2, promise3 ];\n\n            let mapFn = function(item){\n              return item + 1;\n            };\n\n            map(promises, mapFn).then(function(result){\n              // result is [ 2, 3, 4 ]\n            });\n            ```\n\n            If any of the `promises` given to `map` are rejected, the first promise\n            that is rejected will be given as an argument to the returned promise's\n            rejection handler. For example:\n\n            ```javascript\n            import { map, reject, resolve } from 'rsvp';\n\n            let promise1 = resolve(1);\n            let promise2 = reject(new Error('2'));\n            let promise3 = reject(new Error('3'));\n            let promises = [ promise1, promise2, promise3 ];\n\n            let mapFn = function(item){\n              return item + 1;\n            };\n\n            map(promises, mapFn).then(function(array){\n              // Code here never runs because there are rejected promises!\n            }, function(reason) {\n              // reason.message === '2'\n            });\n            ```\n\n            `map` will also wait if a promise is returned from `mapFn`. For example,\n            say you want to get all comments from a set of blog posts, but you need\n            the blog posts first because they contain a url to those comments.\n\n            ```javscript\n            import { map } from 'rsvp';\n\n            let mapFn = function(blogPost){\n              // getComments does some ajax and returns an Promise that is fulfilled\n              // with some comments data\n              return getComments(blogPost.comments_url);\n            };\n\n            // getBlogPosts does some ajax and returns an Promise that is fulfilled\n            // with some blog post data\n            map(getBlogPosts(), mapFn).then(function(comments){\n              // comments is the result of asking the server for the comments\n              // of all blog posts returned from getBlogPosts()\n            });\n            ```\n\n            @method map\n            @public\n            @static\n            @for rsvp\n            @param {Array} promises\n            @param {Function} mapFn function to be called on each fulfilled promise.\n            @param {String} [label] optional string for labeling the promise.\n            Useful for tooling.\n            @return {Promise} promise that is fulfilled with the result of calling\n            `mapFn` on each fulfilled promise or value when they become fulfilled.\n             The promise will be rejected if any of the given `promises` become rejected.\n          */function map$2(promises,mapFn,label){if(typeof mapFn!=='function'){return Promise$2.reject(new TypeError(\"map expects a function as a second argument\"),label);}return Promise$2.resolve(promises,label).then(function(promises){if(!Array.isArray(promises)){throw new TypeError(\"map must be called with an array\");}return new MapEnumerator(Promise$2,promises,mapFn,label).promise;});}/**\n            This is a convenient alias for `Promise.resolve`.\n\n            @method resolve\n            @public\n            @static\n            @for rsvp\n            @param {*} value value that the returned promise will be resolved with\n            @param {String} [label] optional string for identifying the returned promise.\n            Useful for tooling.\n            @return {Promise} a promise that will become fulfilled with the given\n            `value`\n          */function resolve$2(value,label){return Promise$2.resolve(value,label);}/**\n            This is a convenient alias for `Promise.reject`.\n\n            @method reject\n            @public\n            @static\n            @for rsvp\n            @param {*} reason value that the returned promise will be rejected with.\n            @param {String} [label] optional string for identifying the returned promise.\n            Useful for tooling.\n            @return {Promise} a promise rejected with the given `reason`.\n          */function reject(reason,label){return Promise$2.reject(reason,label);}var EMPTY_OBJECT={};var FilterEnumerator=/*#__PURE__*/function(_MapEnumerator){function FilterEnumerator(){_classCallCheck(this,FilterEnumerator);return _callSuper(this,FilterEnumerator,arguments);}_inherits(FilterEnumerator,_MapEnumerator);return _createClass(FilterEnumerator,[{key:\"_checkFullfillment\",value:function _checkFullfillment(){if(this._remaining===0&&this._result!==null){var result=this._result.filter(function(val){return val!==EMPTY_OBJECT;});fulfill(this.promise,result);this._result=null;}}},{key:\"_setResultAt\",value:function _setResultAt(state,i,value,firstPass){if(firstPass){this._result[i]=value;var val,succeeded=true;try{val=this._mapFn(value,i);}catch(error){succeeded=false;this._settledAt(REJECTED,i,error,false);}if(succeeded){this._eachEntry(val,i,false);}}else{this._remaining--;if(!value){this._result[i]=EMPTY_OBJECT;}}}}]);}(MapEnumerator);/**\n           `filter` is similar to JavaScript's native `filter` method.\n           `filterFn` is eagerly called meaning that as soon as any promise\n            resolves its value will be passed to `filterFn`. `filter` returns\n            a promise that will become fulfilled with the result of running\n            `filterFn` on the values the promises become fulfilled with.\n\n            For example:\n\n            ```javascript\n            import { filter, resolve } from 'rsvp';\n\n            let promise1 = resolve(1);\n            let promise2 = resolve(2);\n            let promise3 = resolve(3);\n\n            let promises = [promise1, promise2, promise3];\n\n            let filterFn = function(item){\n              return item > 1;\n            };\n\n            filter(promises, filterFn).then(function(result){\n              // result is [ 2, 3 ]\n            });\n            ```\n\n            If any of the `promises` given to `filter` are rejected, the first promise\n            that is rejected will be given as an argument to the returned promise's\n            rejection handler. For example:\n\n            ```javascript\n            import { filter, reject, resolve } from 'rsvp';\n\n            let promise1 = resolve(1);\n            let promise2 = reject(new Error('2'));\n            let promise3 = reject(new Error('3'));\n            let promises = [ promise1, promise2, promise3 ];\n\n            let filterFn = function(item){\n              return item > 1;\n            };\n\n            filter(promises, filterFn).then(function(array){\n              // Code here never runs because there are rejected promises!\n            }, function(reason) {\n              // reason.message === '2'\n            });\n            ```\n\n            `filter` will also wait for any promises returned from `filterFn`.\n            For instance, you may want to fetch a list of users then return a subset\n            of those users based on some asynchronous operation:\n\n            ```javascript\n            import { filter, resolve } from 'rsvp';\n\n            let alice = { name: 'alice' };\n            let bob   = { name: 'bob' };\n            let users = [ alice, bob ];\n\n            let promises = users.map(function(user){\n              return resolve(user);\n            });\n\n            let filterFn = function(user){\n              // Here, Alice has permissions to create a blog post, but Bob does not.\n              return getPrivilegesForUser(user).then(function(privs){\n                return privs.can_create_blog_post === true;\n              });\n            };\n            filter(promises, filterFn).then(function(users){\n              // true, because the server told us only Alice can create a blog post.\n              users.length === 1;\n              // false, because Alice is the only user present in `users`\n              users[0] === bob;\n            });\n            ```\n\n            @method filter\n            @public\n            @static\n            @for rsvp\n            @param {Array} promises\n            @param {Function} filterFn - function to be called on each resolved value to\n            filter the final results.\n            @param {String} [label] optional string describing the promise. Useful for\n            tooling.\n            @return {Promise}\n          */function filter$1(promises,filterFn,label){if(typeof filterFn!=='function'){return Promise$2.reject(new TypeError(\"filter expects function as a second argument\"),label);}return Promise$2.resolve(promises,label).then(function(promises){if(!Array.isArray(promises)){throw new TypeError(\"filter must be called with an array\");}return new FilterEnumerator(Promise$2,promises,filterFn,label).promise;});}var len=0;var vertxNext;function asap(callback,arg){queue[len]=callback;queue[len+1]=arg;len+=2;if(len===2){// If len is 1, that means that we need to schedule an async flush.\n// If additional callbacks are queued before the queue is flushed, they\n// will be processed by this flush that we are scheduling.\nscheduleFlush();}}var browserWindow=typeof window!=='undefined'?window:undefined;var browserGlobal=browserWindow||{};var BrowserMutationObserver=browserGlobal.MutationObserver||browserGlobal.WebKitMutationObserver;var isNode$1=typeof self==='undefined'&&typeof process!=='undefined'&&{}.toString.call(process)==='[object process]';// test for web worker but not in IE10\nvar isWorker=typeof Uint8ClampedArray!=='undefined'&&typeof importScripts!=='undefined'&&typeof MessageChannel!=='undefined';// node\nfunction useNextTick(){var nextTick=process.nextTick;// node version 0.10.x displays a deprecation warning when nextTick is used recursively\n// setImmediate should be used instead instead\nvar version=process.versions.node.match(/^(?:(\\d+)\\.)?(?:(\\d+)\\.)?(\\*|\\d+)$/);if(Array.isArray(version)&&version[1]==='0'&&version[2]==='10'){nextTick=setImmediate;}return function(){return nextTick(flush);};}// vertx\nfunction useVertxTimer(){if(typeof vertxNext!=='undefined'){return function(){vertxNext(flush);};}return useSetTimeout();}function useMutationObserver(){var iterations=0;var observer=new BrowserMutationObserver(flush);var node=document.createTextNode('');observer.observe(node,{characterData:true});return function(){return node.data=iterations=++iterations%2;};}// web worker\nfunction useMessageChannel(){var channel=new MessageChannel();channel.port1.onmessage=flush;return function(){return channel.port2.postMessage(0);};}function useSetTimeout(){return function(){return setTimeout(flush,1);};}var queue=new Array(1000);function flush(){for(var i=0;i<len;i+=2){var _callback4=queue[i];var arg=queue[i+1];_callback4(arg);queue[i]=undefined;queue[i+1]=undefined;}len=0;}function attemptVertex(){try{var vertx=Function('return this')().require('vertx');vertxNext=vertx.runOnLoop||vertx.runOnContext;return useVertxTimer();}catch(e){return useSetTimeout();}}var scheduleFlush;// Decide what async method to use to triggering processing of queued callbacks:\nif(isNode$1){scheduleFlush=useNextTick();}else if(BrowserMutationObserver){scheduleFlush=useMutationObserver();}else if(isWorker){scheduleFlush=useMessageChannel();}else if(browserWindow===undefined&&typeof require==='function'){scheduleFlush=attemptVertex();}else{scheduleFlush=useSetTimeout();}// defaults\nconfig.async=asap;config.after=function(cb){return setTimeout(cb,0);};var cast=resolve$2;var async=function async(callback,arg){return config.async(callback,arg);};function on$2(){config.on.apply(config,arguments);}function off(){config.off.apply(config,arguments);}// Set up instrumentation through `window.__PROMISE_INTRUMENTATION__`\nif(typeof window!=='undefined'&&_typeof(window['__PROMISE_INSTRUMENTATION__'])==='object'){var _callbacks=window['__PROMISE_INSTRUMENTATION__'];configure('instrument',true);for(var eventName in _callbacks){if(_callbacks.hasOwnProperty(eventName)){on$2(eventName,_callbacks[eventName]);}}}// the default export here is for backwards compat:\n//   https://github.com/tildeio/rsvp.js/issues/434\nvar RSVP={asap:asap,cast:cast,Promise:Promise$2,EventTarget:EventTarget,all:all,allSettled:allSettled,race:race,hash:hash$2,hashSettled:hashSettled,rethrow:rethrow,defer:defer,denodeify:denodeify,configure:configure,on:on$2,off:off,resolve:resolve$2,reject:reject,map:map$2,async:async,filter:filter$1};var rsvp=/*#__PURE__*/Object.defineProperty({__proto__:null,EventTarget:EventTarget,Promise:Promise$2,all:all,allSettled:allSettled,asap:asap,async:async,cast:cast,configure:configure,default:RSVP,defer:defer,denodeify:denodeify,filter:filter$1,hash:hash$2,hashSettled:hashSettled,map:map$2,off:off,on:on$2,race:race,reject:reject,resolve:resolve$2,rethrow:rethrow},Symbol.toStringTag,{value:'Module'});configure('async',function(callback,promise){_backburner.schedule('actions',null,callback,promise);});configure('after',function(cb){_backburner.schedule(_rsvpErrorQueue,null,cb);});on$2('error',onerrorDefault);function onerrorDefault(reason){var error=errorFor(reason);if(error){var overrideDispatch=getDispatchOverride();if(overrideDispatch){overrideDispatch(error);}else{throw error;}}}function errorFor(reason){if(!reason)return;var withErrorThrown=reason;if(withErrorThrown.errorThrown){return unwrapErrorThrown(withErrorThrown);}var withName=reason;if(withName.name==='UnrecognizedURLError'){assert$1(\"The URL '\".concat(withName.message,\"' did not match any routes in your application\"),false);// @ts-expect-error We'll hit this if the assert is stripped\nreturn;}if(reason.name==='TransitionAborted'){return;}return reason;}function unwrapErrorThrown(reason){var error=reason.errorThrown;if(typeof error==='string'){error=new Error(error);}Object.defineProperty(error,'__reason_with_error_thrown__',{value:reason,enumerable:false});return error;}var emberinternalsRuntimeLibExtRsvp=/*#__PURE__*/Object.defineProperty({__proto__:null,default:rsvp,onerrorDefault:onerrorDefault},Symbol.toStringTag,{value:'Module'});// just for side effect of extending Ember.RSVP\nvar emberinternalsRuntimeIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,ActionHandler:ActionHandler,Comparable:Comparable,ContainerProxyMixin:ContainerProxyMixin,MutableEnumerable:MutableEnumerable,RSVP:rsvp,RegistryProxyMixin:RegistryProxyMixin,TargetActionSupport:TargetActionSupport,_ProxyMixin:ProxyMixin,_contentFor:contentFor,onerrorDefault:onerrorDefault},Symbol.toStringTag,{value:'Module'});var isArray$3=Array.isArray;/**\n           @module @ember/array\n          *//**\n           Forces the passed object to be part of an array. If the object is already\n           an array, it will return the object. Otherwise, it will add the object to\n           an array. If object is `null` or `undefined`, it will return an empty array.\n\n           ```javascript\n           import { makeArray } from '@ember/array';\n           import ArrayProxy from '@ember/array/proxy';\n\n           makeArray();            // []\n           makeArray(null);        // []\n           makeArray(undefined);   // []\n           makeArray('lindsay');   // ['lindsay']\n           makeArray([1, 2, 42]);  // [1, 2, 42]\n\n           let proxy = ArrayProxy.create({ content: [] });\n\n           makeArray(proxy) === proxy;  // false\n           ```\n\n           @method makeArray\n           @static\n           @for @ember/array\n           @param {Object} obj the object\n           @return {Array}\n           @private\n           */function makeArray(obj){if(obj===null||obj===undefined){return[];}return isArray$3(obj)?obj:[obj];}var emberArrayLibMakeArray=/*#__PURE__*/Object.defineProperty({__proto__:null,default:makeArray},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/object/core\n          */// TODO: Is this correct?\nfunction hasSetUnknownProperty(val){return _typeof(val)==='object'&&val!==null&&typeof val.setUnknownProperty==='function';}function hasToStringExtension(val){return _typeof(val)==='object'&&val!==null&&typeof val.toStringExtension==='function';}var _reopen=Mixin.prototype.reopen;var wasApplied=new WeakSet();var prototypeMixinMap=new WeakMap();var initCalled=new WeakSet();// only used in debug builds to enable the proxy trap\nvar destroyCalled=new Set();function ensureDestroyCalled(instance){if(!destroyCalled.has(instance)){instance.destroy();}}function initialize(obj,properties){var m=meta(obj);if(properties!==undefined){!(_typeof(properties)==='object'&&properties!==null)&&assert$1('EmberObject.create only accepts objects.',_typeof(properties)==='object'&&properties!==null);!!(properties instanceof Mixin)&&assert$1('EmberObject.create no longer supports mixing in other '+'definitions, use .extend & .create separately instead.',!(properties instanceof Mixin));var concatenatedProperties=obj.concatenatedProperties;var mergedProperties=obj.mergedProperties;var keyNames=Object.keys(properties);for(var _i13=0,_keyNames=keyNames;_i13<_keyNames.length;_i13++){var keyName=_keyNames[_i13];// SAFETY: this cast as a Record is safe because all object types can be\n// indexed in JS, and we explicitly type it as returning `unknown`, so the\n// result *must* be checked below.\nvar value=properties[keyName];!!isClassicDecorator(value)&&assert$1('EmberObject.create no longer supports defining computed '+'properties. Define computed properties using extend() or reopen() '+'before calling create().',!isClassicDecorator(value));!!(typeof value==='function'&&value.toString().indexOf('._super')!==-1)&&assert$1('EmberObject.create no longer supports defining methods that call _super.',!(typeof value==='function'&&value.toString().indexOf('._super')!==-1));!!(keyName==='actions'&&ActionHandler.detect(obj))&&assert$1('`actions` must be provided at extend time, not at create time, '+'when Ember.ActionHandler is used (i.e. views, controllers & routes).',!(keyName==='actions'&&ActionHandler.detect(obj)));var possibleDesc=descriptorForProperty(obj,keyName,m);var isDescriptor=possibleDesc!==undefined;if(!isDescriptor){if(concatenatedProperties!==undefined&&concatenatedProperties.length>0&&concatenatedProperties.includes(keyName)){var baseValue=obj[keyName];if(baseValue){value=makeArray(baseValue).concat(value);}else{value=makeArray(value);}}if(mergedProperties!==undefined&&mergedProperties.length>0&&mergedProperties.includes(keyName)){var _baseValue=obj[keyName];value=Object.assign({},_baseValue,value);}}if(isDescriptor){possibleDesc.set(obj,keyName,value);}else if(hasSetUnknownProperty(obj)&&!(keyName in obj)){obj.setUnknownProperty(keyName,value);}else{{defineProperty(obj,keyName,null,value,m);// setup mandatory setter\n}}}}// using DEBUG here to avoid the extraneous variable when not needed\n{initCalled.add(obj);}obj.init(properties);m.unsetInitializing();var observerEvents=m.observerEvents();if(observerEvents!==undefined){for(var i=0;i<observerEvents.length;i++){activateObserver(obj,observerEvents[i].event,observerEvents[i].sync);}}sendEvent(obj,'init',undefined,undefined,m);}/**\n            `CoreObject` is the base class for all Ember constructs. It establishes a\n            class system based on Ember's Mixin system, and provides the basis for the\n            Ember Object Model. `CoreObject` should generally not be used directly,\n            instead you should use `EmberObject`.\n\n            ## Usage\n\n            You can define a class by extending from `CoreObject` using the `extend`\n            method:\n\n            ```js\n            const Person = CoreObject.extend({\n              name: 'Tomster',\n            });\n            ```\n\n            For detailed usage, see the [Object Model](https://guides.emberjs.com/release/object-model/)\n            section of the guides.\n\n            ## Usage with Native Classes\n\n            Native JavaScript `class` syntax can be used to extend from any `CoreObject`\n            based class:\n\n            ```js\n            class Person extends CoreObject {\n              init() {\n                super.init(...arguments);\n                this.name = 'Tomster';\n              }\n            }\n            ```\n\n            Some notes about `class` usage:\n\n            * `new` syntax is not currently supported with classes that extend from\n              `EmberObject` or `CoreObject`. You must continue to use the `create` method\n              when making new instances of classes, even if they are defined using native\n              class syntax. If you want to use `new` syntax, consider creating classes\n              which do _not_ extend from `EmberObject` or `CoreObject`. Ember features,\n              such as computed properties and decorators, will still work with base-less\n              classes.\n            * Instead of using `this._super()`, you must use standard `super` syntax in\n              native classes. See the [MDN docs on classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Super_class_calls_with_super)\n              for more details.\n            * Native classes support using [constructors](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Constructor)\n              to set up newly-created instances. Ember uses these to, among other things,\n              support features that need to retrieve other entities by name, like Service\n              injection and `getOwner`. To ensure your custom instance setup logic takes\n              place after this important work is done, avoid using the `constructor` in\n              favor of `init`.\n            * Properties passed to `create` will be available on the instance by the time\n              `init` runs, so any code that requires these values should work at that\n              time.\n            * Using native classes, and switching back to the old Ember Object model is\n              fully supported.\n\n            @class CoreObject\n            @public\n          */var CoreObject=/*#__PURE__*/function(){function CoreObject(owner){_classCallCheck(this,CoreObject);/** @internal */_defineProperty(this,OWNER$1,void 0);this[OWNER$1]=owner;// prepare prototype...\nthis.constructor.proto();var self;if(hasUnknownProperty(this)){var messageFor=function messageFor(obj,property){return\"You attempted to access the `\".concat(String(property),\"` property (of \").concat(obj,\").\\n\")+\"Since Ember 3.1, this is usually fine as you no longer need to use `.get()`\\n\"+\"to access computed properties. However, in this case, the object in question\\n\"+\"is a special kind of Ember object (a proxy). Therefore, it is still necessary\\n\"+\"to use `.get('\".concat(String(property),\"')` in this case.\\n\\n\")+\"If you encountered this error because of third-party code that you don't control,\\n\"+\"there is more information at https://github.com/emberjs/ember.js/issues/16148, and\\n\"+\"you can help us improve this error message by telling us more about what happened in\\n\"+\"this situation.\";};/* globals Proxy Reflect */self=new Proxy(this,{get:function get(target,property,receiver){if(property===PROXY_CONTENT){return target;}else if(// init called will be set on the proxy, not the target, so get with the receiver\n!initCalled.has(receiver)||_typeof(property)==='symbol'||isInternalSymbol(property)||property==='toJSON'||property==='toString'||property==='toStringExtension'||property==='didDefineProperty'||property==='willWatchProperty'||property==='didUnwatchProperty'||property==='didAddListener'||property==='didRemoveListener'||property==='isDescriptor'||property==='_onLookup'||property in target){return Reflect.get(target,property,receiver);}var value=target.unknownProperty.call(receiver,property);if(typeof value!=='function'){!(value===undefined||value===null)&&assert$1(messageFor(receiver,property),value===undefined||value===null);}}});}else{self=this;}var destroyable=self;registerDestructor$1(self,ensureDestroyCalled,true);registerDestructor$1(self,function(){return destroyable.willDestroy();});// disable chains\nvar m=meta(self);m.setInitializing();// only return when in debug builds and `self` is the proxy created above\nif(self!==this){return self;}}return _createClass(CoreObject,[{key:\"reopen\",value:function reopen(){for(var _len32=arguments.length,args=new Array(_len32),_key32=0;_key32<_len32;_key32++){args[_key32]=arguments[_key32];}applyMixin(this,args);return this;}/**\n              An overridable method called when objects are instantiated. By default,\n              does nothing unless it is overridden during class definition.\n               Example:\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Person = EmberObject.extend({\n                init() {\n                  alert(`Name is ${this.get('name')}`);\n                }\n              });\n               let steve = Person.create({\n                name: 'Steve'\n              });\n               // alerts 'Name is Steve'.\n              ```\n               NOTE: If you do override `init` for a framework class like `Component`\n              from `@ember/component`, be sure to call `this._super(...arguments)`\n              in your `init` declaration!\n              If you don't, Ember may not have an opportunity to\n              do important setup work, and you'll see strange behavior in your\n              application.\n               @method init\n              @public\n            */},{key:\"init\",value:function init(_properties){}/**\n              Defines the properties that will be concatenated from the superclass\n              (instead of overridden).\n               By default, when you extend an Ember class a property defined in\n              the subclass overrides a property with the same name that is defined\n              in the superclass. However, there are some cases where it is preferable\n              to build up a property's value by combining the superclass' property\n              value with the subclass' value. An example of this in use within Ember\n              is the `classNames` property of `Component` from `@ember/component`.\n               Here is some sample code showing the difference between a concatenated\n              property and a normal one:\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Bar = EmberObject.extend({\n                // Configure which properties to concatenate\n                concatenatedProperties: ['concatenatedProperty'],\n                 someNonConcatenatedProperty: ['bar'],\n                concatenatedProperty: ['bar']\n              });\n               const FooBar = Bar.extend({\n                someNonConcatenatedProperty: ['foo'],\n                concatenatedProperty: ['foo']\n              });\n               let fooBar = FooBar.create();\n              fooBar.get('someNonConcatenatedProperty'); // ['foo']\n              fooBar.get('concatenatedProperty'); // ['bar', 'foo']\n              ```\n               This behavior extends to object creation as well. Continuing the\n              above example:\n               ```javascript\n              let fooBar = FooBar.create({\n                someNonConcatenatedProperty: ['baz'],\n                concatenatedProperty: ['baz']\n              })\n              fooBar.get('someNonConcatenatedProperty'); // ['baz']\n              fooBar.get('concatenatedProperty'); // ['bar', 'foo', 'baz']\n              ```\n               Adding a single property that is not an array will just add it in the array:\n               ```javascript\n              let fooBar = FooBar.create({\n                concatenatedProperty: 'baz'\n              })\n              view.get('concatenatedProperty'); // ['bar', 'foo', 'baz']\n              ```\n               Using the `concatenatedProperties` property, we can tell Ember to mix the\n              content of the properties.\n               In `Component` the `classNames`, `classNameBindings` and\n              `attributeBindings` properties are concatenated.\n               This feature is available for you to use throughout the Ember object model,\n              although typical app developers are likely to use it infrequently. Since\n              it changes expectations about behavior of properties, you should properly\n              document its usage in each individual concatenated property (to not\n              mislead your users to think they can override the property in a subclass).\n               @property concatenatedProperties\n              @type Array\n              @default null\n              @public\n            *//**\n              Defines the properties that will be merged from the superclass\n              (instead of overridden).\n               By default, when you extend an Ember class a property defined in\n              the subclass overrides a property with the same name that is defined\n              in the superclass. However, there are some cases where it is preferable\n              to build up a property's value by merging the superclass property value\n              with the subclass property's value. An example of this in use within Ember\n              is the `queryParams` property of routes.\n               Here is some sample code showing the difference between a merged\n              property and a normal one:\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Bar = EmberObject.extend({\n                // Configure which properties are to be merged\n                mergedProperties: ['mergedProperty'],\n                 someNonMergedProperty: {\n                  nonMerged: 'superclass value of nonMerged'\n                },\n                mergedProperty: {\n                  page: { replace: false },\n                  limit: { replace: true }\n                }\n              });\n               const FooBar = Bar.extend({\n                someNonMergedProperty: {\n                  completelyNonMerged: 'subclass value of nonMerged'\n                },\n                mergedProperty: {\n                  limit: { replace: false }\n                }\n              });\n               let fooBar = FooBar.create();\n               fooBar.get('someNonMergedProperty');\n              // => { completelyNonMerged: 'subclass value of nonMerged' }\n              //\n              // Note the entire object, including the nonMerged property of\n              // the superclass object, has been replaced\n               fooBar.get('mergedProperty');\n              // => {\n              //   page: {replace: false},\n              //   limit: {replace: false}\n              // }\n              //\n              // Note the page remains from the superclass, and the\n              // `limit` property's value of `false` has been merged from\n              // the subclass.\n              ```\n               This behavior is not available during object `create` calls. It is only\n              available at `extend` time.\n               In `Route` the `queryParams` property is merged.\n               This feature is available for you to use throughout the Ember object model,\n              although typical app developers are likely to use it infrequently. Since\n              it changes expectations about behavior of properties, you should properly\n              document its usage in each individual merged property (to not\n              mislead your users to think they can override the property in a subclass).\n               @property mergedProperties\n              @type Array\n              @default null\n              @public\n            *//**\n              Destroyed object property flag.\n               if this property is `true` the observers and bindings were already\n              removed by the effect of calling the `destroy()` method.\n               @property isDestroyed\n              @default false\n              @public\n            */},{key:\"isDestroyed\",get:function get(){return isDestroyed(this);},set:function set(_value){assert$1(\"You cannot set `\".concat(this,\".isDestroyed` directly, please use `.destroy()`.\"),false);}/**\n              Destruction scheduled flag. The `destroy()` method has been called.\n               The object stays intact until the end of the run loop at which point\n              the `isDestroyed` flag is set.\n               @property isDestroying\n              @default false\n              @public\n            */},{key:\"isDestroying\",get:function get(){return isDestroying(this);},set:function set(_value){assert$1(\"You cannot set `\".concat(this,\".isDestroying` directly, please use `.destroy()`.\"),false);}/**\n              Destroys an object by setting the `isDestroyed` flag and removing its\n              metadata, which effectively destroys observers and bindings.\n               If you try to set a property on a destroyed object, an exception will be\n              raised.\n               Note that destruction is scheduled for the end of the run loop and does not\n              happen immediately.  It will set an isDestroying flag immediately.\n               @method destroy\n              @return {EmberObject} receiver\n              @public\n            */},{key:\"destroy\",value:function destroy(){// Used to ensure that manually calling `.destroy()` does not immediately call destroy again\ndestroyCalled.add(this);try{_destroy(this);}finally{destroyCalled.delete(this);}return this;}/**\n              Override to implement teardown.\n               @method willDestroy\n              @public\n            */},{key:\"willDestroy\",value:function willDestroy(){}/**\n              Returns a string representation which attempts to provide more information\n              than Javascript's `toString` typically does, in a generic way for all Ember\n              objects.\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Person = EmberObject.extend();\n              person = Person.create();\n              person.toString(); //=> \"<Person:ember1024>\"\n              ```\n               If the object's class is not defined on an Ember namespace, it will\n              indicate it is a subclass of the registered superclass:\n               ```javascript\n              const Student = Person.extend();\n              let student = Student.create();\n              student.toString(); //=> \"<(subclass of Person):ember1025>\"\n              ```\n               If the method `toStringExtension` is defined, its return value will be\n              included in the output.\n               ```javascript\n              const Teacher = Person.extend({\n                toStringExtension() {\n                  return this.get('fullName');\n                }\n              });\n              teacher = Teacher.create();\n              teacher.toString(); //=> \"<Teacher:ember1026:Tom Dale>\"\n              ```\n               @method toString\n              @return {String} string representation\n              @public\n            */},{key:\"toString\",value:function toString(){var extension=hasToStringExtension(this)?\":\".concat(this.toStringExtension()):'';return\"<\".concat(getFactoryFor(this)||'(unknown)',\":\").concat(guidFor(this)).concat(extension,\">\");}/**\n              Creates a new subclass.\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Person = EmberObject.extend({\n                say(thing) {\n                  alert(thing);\n                 }\n              });\n              ```\n               This defines a new subclass of EmberObject: `Person`. It contains one method: `say()`.\n               You can also create a subclass from any existing class by calling its `extend()` method.\n              For example, you might want to create a subclass of Ember's built-in `Component` class:\n               ```javascript\n              import Component from '@ember/component';\n               const PersonComponent = Component.extend({\n                tagName: 'li',\n                classNameBindings: ['isAdministrator']\n              });\n              ```\n               When defining a subclass, you can override methods but still access the\n              implementation of your parent class by calling the special `_super()` method:\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Person = EmberObject.extend({\n                say(thing) {\n                  let name = this.get('name');\n                  alert(`${name} says: ${thing}`);\n                }\n              });\n               const Soldier = Person.extend({\n                say(thing) {\n                  this._super(`${thing}, sir!`);\n                },\n                march(numberOfHours) {\n                  alert(`${this.get('name')} marches for ${numberOfHours} hours.`);\n                }\n              });\n               let yehuda = Soldier.create({\n                name: 'Yehuda Katz'\n              });\n               yehuda.say('Yes');  // alerts \"Yehuda Katz says: Yes, sir!\"\n              ```\n               The `create()` on line #17 creates an *instance* of the `Soldier` class.\n              The `extend()` on line #8 creates a *subclass* of `Person`. Any instance\n              of the `Person` class will *not* have the `march()` method.\n               You can also pass `Mixin` classes to add additional properties to the subclass.\n               ```javascript\n              import EmberObject from '@ember/object';\n              import Mixin from '@ember/object/mixin';\n               const Person = EmberObject.extend({\n                say(thing) {\n                  alert(`${this.get('name')} says: ${thing}`);\n                }\n              });\n               const SingingMixin = Mixin.create({\n                sing(thing) {\n                  alert(`${this.get('name')} sings: la la la ${thing}`);\n                }\n              });\n               const BroadwayStar = Person.extend(SingingMixin, {\n                dance() {\n                  alert(`${this.get('name')} dances: tap tap tap tap `);\n                }\n              });\n              ```\n               The `BroadwayStar` class contains three methods: `say()`, `sing()`, and `dance()`.\n               @method extend\n              @static\n              @for @ember/object\n              @param {Mixin} [mixins]* One or more Mixin classes\n              @param {Object} [arguments]* Object containing values to use within the new class\n              @public\n            */}],[{key:\"extend\",value:function extend(){var Class=/*#__PURE__*/function(_this10){function Class(){_classCallCheck(this,Class);return _callSuper(this,Class,arguments);}_inherits(Class,_this10);return _createClass(Class);}(this);for(var _len33=arguments.length,mixins=new Array(_len33),_key33=0;_key33<_len33;_key33++){mixins[_key33]=arguments[_key33];}_reopen.apply(Class.PrototypeMixin,mixins);return Class;}/**\n              Creates an instance of a class. Accepts either no arguments, or an object\n              containing values to initialize the newly instantiated object with.\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Person = EmberObject.extend({\n                helloWorld() {\n                  alert(`Hi, my name is ${this.get('name')}`);\n                }\n              });\n               let tom = Person.create({\n                name: 'Tom Dale'\n              });\n               tom.helloWorld(); // alerts \"Hi, my name is Tom Dale\".\n              ```\n               `create` will call the `init` function if defined during\n              `AnyObject.extend`\n               If no arguments are passed to `create`, it will not set values to the new\n              instance during initialization:\n               ```javascript\n              let noName = Person.create();\n              noName.helloWorld(); // alerts undefined\n              ```\n               NOTE: For performance reasons, you cannot declare methods or computed\n              properties during `create`. You should instead declare methods and computed\n              properties when using `extend`.\n               @method create\n              @for @ember/object\n              @static\n              @param [arguments]*\n              @public\n            */},{key:\"create\",value:function create(){for(var _len34=arguments.length,args=new Array(_len34),_key34=0;_key34<_len34;_key34++){args[_key34]=arguments[_key34];}var props=args[0];var instance;if(props!==undefined){instance=new this(getOwner$2(props));// TODO(SAFETY): at present, we cannot actually rely on this being set,\n// because a number of acceptance tests are (incorrectly? Unclear!)\n// relying on the ability to run through this path with `factory` being\n// `undefined`. It's *possible* that actually means that the type for\n// `setFactoryFor()` should allow `undefined`, but we typed it the other\n// way for good reason! Accordingly, this *casts* `factory`, and the\n// commented-out `assert()` is here in the hope that we can enable it\n// after addressing tests *or* updating the call signature here.\nvar factory=getFactoryFor(props);// assert(`missing factory when creating object ${instance}`, factory !== undefined);\nsetFactoryFor(instance,factory);}else{instance=new this();}if(args.length<=1){initialize(instance,props);}else{initialize(instance,flattenProps.apply(this,args));}// SAFETY: The `initialize` call is responsible to merge the prototype chain\n// so that this holds.\nreturn instance;}/**\n              Augments a constructor's prototype with additional\n              properties and functions:\n               ```javascript\n              import EmberObject from '@ember/object';\n               const MyObject = EmberObject.extend({\n                name: 'an object'\n              });\n               o = MyObject.create();\n              o.get('name'); // 'an object'\n               MyObject.reopen({\n                say(msg) {\n                  console.log(msg);\n                }\n              });\n               o2 = MyObject.create();\n              o2.say('hello'); // logs \"hello\"\n               o.say('goodbye'); // logs \"goodbye\"\n              ```\n               To add functions and properties to the constructor itself,\n              see `reopenClass`\n               @method reopen\n              @for @ember/object\n              @static\n              @public\n            */},{key:\"reopen\",value:function reopen(){this.willReopen();for(var _len35=arguments.length,args=new Array(_len35),_key35=0;_key35<_len35;_key35++){args[_key35]=arguments[_key35];}_reopen.apply(this.PrototypeMixin,args);return this;}},{key:\"willReopen\",value:function willReopen(){var p=this.prototype;if(wasApplied.has(p)){wasApplied.delete(p);// If the base mixin already exists and was applied, create a new mixin to\n// make sure that it gets properly applied. Reusing the same mixin after\n// the first `proto` call will cause it to get skipped.\nif(prototypeMixinMap.has(this)){prototypeMixinMap.set(this,Mixin.create(this.PrototypeMixin));}}}/**\n              Augments a constructor's own properties and functions:\n               ```javascript\n              import EmberObject from '@ember/object';\n               const MyObject = EmberObject.extend({\n                name: 'an object'\n              });\n               MyObject.reopenClass({\n                canBuild: false\n              });\n               MyObject.canBuild; // false\n              o = MyObject.create();\n              ```\n               In other words, this creates static properties and functions for the class.\n              These are only available on the class and not on any instance of that class.\n               ```javascript\n              import EmberObject from '@ember/object';\n               const Person = EmberObject.extend({\n                name: '',\n                sayHello() {\n                  alert(`Hello. My name is ${this.get('name')}`);\n                }\n              });\n               Person.reopenClass({\n                species: 'Homo sapiens',\n                 createPerson(name) {\n                  return Person.create({ name });\n                }\n              });\n               let tom = Person.create({\n                name: 'Tom Dale'\n              });\n              let yehuda = Person.createPerson('Yehuda Katz');\n               tom.sayHello(); // \"Hello. My name is Tom Dale\"\n              yehuda.sayHello(); // \"Hello. My name is Yehuda Katz\"\n              alert(Person.species); // \"Homo sapiens\"\n              ```\n               Note that `species` and `createPerson` are *not* valid on the `tom` and `yehuda`\n              variables. They are only valid on `Person`.\n               To add functions and properties to instances of\n              a constructor by extending the constructor's prototype\n              see `reopen`\n               @method reopenClass\n              @for @ember/object\n              @static\n              @public\n            */},{key:\"reopenClass\",value:function reopenClass(){for(var _len36=arguments.length,mixins=new Array(_len36),_key36=0;_key36<_len36;_key36++){mixins[_key36]=arguments[_key36];}applyMixin(this,mixins);return this;}},{key:\"detect\",value:function detect(obj){if('function'!==typeof obj){return false;}while(obj){if(obj===this){return true;}obj=obj.superclass;}return false;}},{key:\"detectInstance\",value:function detectInstance(obj){return obj instanceof this;}/**\n              In some cases, you may want to annotate computed properties with additional\n              metadata about how they function or what values they operate on. For\n              example, computed property functions may close over variables that are then\n              no longer available for introspection.\n               You can pass a hash of these values to a computed property like this:\n               ```javascript\n              import { computed } from '@ember/object';\n               person: computed(function() {\n                let personId = this.get('personId');\n                return Person.create({ id: personId });\n              }).meta({ type: Person })\n              ```\n               Once you've done this, you can retrieve the values saved to the computed\n              property from your class like this:\n               ```javascript\n              MyClass.metaForProperty('person');\n              ```\n               This will return the original hash that was passed to `meta()`.\n               @static\n              @method metaForProperty\n              @param key {String} property name\n              @private\n            */},{key:\"metaForProperty\",value:function metaForProperty(key){var proto=this.proto();// ensure prototype is initialized\nvar possibleDesc=descriptorForProperty(proto,key);!(possibleDesc!==undefined)&&assert$1(\"metaForProperty() could not find a computed property with key '\".concat(key,\"'.\"),possibleDesc!==undefined);return possibleDesc._meta||{};}/**\n              Iterate over each computed property for the class, passing its name\n              and any associated metadata (see `metaForProperty`) to the callback.\n               @static\n              @method eachComputedProperty\n              @param {Function} callback\n              @param {Object} binding\n              @private\n            */},{key:\"eachComputedProperty\",value:function eachComputedProperty(callback){var binding=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this;this.proto();// ensure prototype is initialized\nvar empty={};meta(this.prototype).forEachDescriptors(function(name,descriptor){if(descriptor.enumerable){var _meta5=descriptor._meta||empty;callback.call(binding,name,_meta5);}});}},{key:\"PrototypeMixin\",get:function get(){var prototypeMixin=prototypeMixinMap.get(this);if(prototypeMixin===undefined){prototypeMixin=Mixin.create();prototypeMixin.ownerConstructor=this;prototypeMixinMap.set(this,prototypeMixin);}return prototypeMixin;}},{key:\"superclass\",get:function get(){var c=Object.getPrototypeOf(this);return c!==Function.prototype?c:undefined;}},{key:\"proto\",value:function proto(){var p=this.prototype;if(!wasApplied.has(p)){wasApplied.add(p);var parent=this.superclass;if(parent){parent.proto();}// If the prototype mixin exists, apply it. In the case of native classes,\n// it will not exist (unless the class has been reopened).\nif(prototypeMixinMap.has(this)){this.PrototypeMixin.apply(p);}}return p;}},{key:\"toString\",value:function toString(){return\"<\".concat(getFactoryFor(this)||'(unknown)',\":constructor>\");}}]);}();_defineProperty(CoreObject,\"isClass\",true);_defineProperty(CoreObject,\"isMethod\",false);_defineProperty(CoreObject,\"_onLookup\",void 0);_defineProperty(CoreObject,\"_lazyInjections\",void 0);function flattenProps(){var initProperties={};for(var _len37=arguments.length,props=new Array(_len37),_key37=0;_key37<_len37;_key37++){props[_key37]=arguments[_key37];}for(var _i14=0,_props5=props;_i14<_props5.length;_i14++){var properties=_props5[_i14];!!(properties instanceof Mixin)&&assert$1('EmberObject.create no longer supports mixing in other '+'definitions, use .extend & .create separately instead.',!(properties instanceof Mixin));var keyNames=Object.keys(properties);for(var j=0,k=keyNames.length;j<k;j++){var keyName=keyNames[j];var value=properties[keyName];initProperties[keyName]=value;}}return initProperties;}{/**\n              Provides lookup-time type validation for injected properties.\n               @private\n              @method _onLookup\n            */CoreObject._onLookup=function injectedPropertyAssertion(debugContainerKey){var _debugContainerKey$sp=debugContainerKey.split(':'),_debugContainerKey$sp2=_slicedToArray(_debugContainerKey$sp,1),type=_debugContainerKey$sp2[0];var proto=this.proto();for(var key in proto){var desc=descriptorForProperty(proto,key);if(desc&&DEBUG_INJECTION_FUNCTIONS.has(desc._getter)){!(type==='controller'||DEBUG_INJECTION_FUNCTIONS.get(desc._getter).type!=='controller')&&assert$1(\"Defining `\".concat(key,\"` as an injected controller property on a non-controller (`\").concat(debugContainerKey,\"`) is not allowed.\"),type==='controller'||DEBUG_INJECTION_FUNCTIONS.get(desc._getter).type!=='controller');}}};/**\n              Returns a hash of property names and container names that injected\n              properties will lookup on the container lazily.\n               @method _lazyInjections\n              @return {Object} Hash of all lazy injected property keys to container names\n              @private\n            */CoreObject._lazyInjections=function(){var injections={};var proto=this.proto();var key;var desc;for(key in proto){desc=descriptorForProperty(proto,key);if(desc&&DEBUG_INJECTION_FUNCTIONS.has(desc._getter)){var _DEBUG_INJECTION_FUNC=DEBUG_INJECTION_FUNCTIONS.get(desc._getter),namespace=_DEBUG_INJECTION_FUNC.namespace,source=_DEBUG_INJECTION_FUNC.source,type=_DEBUG_INJECTION_FUNC.type,_name14=_DEBUG_INJECTION_FUNC.name;injections[key]={namespace:namespace,source:source,specifier:\"\".concat(type,\":\").concat(_name14||key)};}}return injections;};}var emberObjectCore=/*#__PURE__*/Object.defineProperty({__proto__:null,default:CoreObject},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object/observable\n          *//**\n            ## Overview\n\n            This mixin provides properties and property observing functionality, core\n            features of the Ember object model.\n\n            Properties and observers allow one object to observe changes to a\n            property on another object. This is one of the fundamental ways that\n            models, controllers and views communicate with each other in an Ember\n            application.\n\n            Any object that has this mixin applied can be used in observer\n            operations. That includes `EmberObject` and most objects you will\n            interact with as you write your Ember application.\n\n            Note that you will not generally apply this mixin to classes yourself,\n            but you will use the features provided by this module frequently, so it\n            is important to understand how to use it.\n\n            ## Using `get()` and `set()`\n\n            Because of Ember's support for bindings and observers, you will always\n            access properties using the get method, and set properties using the\n            set method. This allows the observing objects to be notified and\n            computed properties to be handled properly.\n\n            More documentation about `get` and `set` are below.\n\n            ## Observing Property Changes\n\n            You typically observe property changes simply by using the `observer`\n            function in classes that you write.\n\n            For example:\n\n            ```javascript\n            import { observer } from '@ember/object';\n            import EmberObject from '@ember/object';\n\n            EmberObject.extend({\n              valueObserver: observer('value', function(sender, key, value, rev) {\n                // Executes whenever the \"value\" property changes\n                // See the addObserver method for more information about the callback arguments\n              })\n            });\n            ```\n\n            Although this is the most common way to add an observer, this capability\n            is actually built into the `EmberObject` class on top of two methods\n            defined in this mixin: `addObserver` and `removeObserver`. You can use\n            these two methods to add and remove observers yourself if you need to\n            do so at runtime.\n\n            To add an observer for a property, call:\n\n            ```javascript\n            object.addObserver('propertyKey', targetObject, targetAction)\n            ```\n\n            This will call the `targetAction` method on the `targetObject` whenever\n            the value of the `propertyKey` changes.\n\n            Note that if `propertyKey` is a computed property, the observer will be\n            called when any of the property dependencies are changed, even if the\n            resulting value of the computed property is unchanged. This is necessary\n            because computed properties are not computed until `get` is called.\n\n            @class Observable\n            @public\n          */var Observable=Mixin.create({get:function get(keyName){return get$2(this,keyName);},getProperties:function getProperties(){for(var _len38=arguments.length,args=new Array(_len38),_key38=0;_key38<_len38;_key38++){args[_key38]=arguments[_key38];}return _getProperties.apply(void 0,[this].concat(args));},set:function set(keyName,value){return _set5(this,keyName,value);},setProperties:function setProperties(hash){return _setProperties(this,hash);},/**\n              Begins a grouping of property changes.\n               You can use this method to group property changes so that notifications\n              will not be sent until the changes are finished. If you plan to make a\n              large number of changes to an object at one time, you should call this\n              method at the beginning of the changes to begin deferring change\n              notifications. When you are done making changes, call\n              `endPropertyChanges()` to deliver the deferred change notifications and end\n              deferring.\n               @method beginPropertyChanges\n              @return {Observable}\n              @private\n            */beginPropertyChanges:function beginPropertyChanges(){_beginPropertyChanges();return this;},/**\n              Ends a grouping of property changes.\n               You can use this method to group property changes so that notifications\n              will not be sent until the changes are finished. If you plan to make a\n              large number of changes to an object at one time, you should call\n              `beginPropertyChanges()` at the beginning of the changes to defer change\n              notifications. When you are done making changes, call this method to\n              deliver the deferred change notifications and end deferring.\n               @method endPropertyChanges\n              @return {Observable}\n              @private\n            */endPropertyChanges:function endPropertyChanges(){_endPropertyChanges();return this;},notifyPropertyChange:function notifyPropertyChange(keyName){_notifyPropertyChange(this,keyName);return this;},addObserver:function addObserver(key,target,method,sync){_addObserver(this,key,target,method,sync);return this;},removeObserver:function removeObserver(key,target,method,sync){_removeObserver(this,key,target,method,sync);return this;},/**\n              Returns `true` if the object currently has observers registered for a\n              particular key. You can use this method to potentially defer performing\n              an expensive action until someone begins observing a particular property\n              on the object.\n               @method hasObserverFor\n              @param {String} key Key to check\n              @return {Boolean}\n              @private\n            */hasObserverFor:function hasObserverFor(key){return hasListeners(this,\"\".concat(key,\":change\"));},incrementProperty:function incrementProperty(keyName){var increment=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;!(!isNaN(parseFloat(String(increment)))&&isFinite(increment))&&assert$1('Must pass a numeric value to incrementProperty',!isNaN(parseFloat(String(increment)))&&isFinite(increment));return _set5(this,keyName,(parseFloat(get$2(this,keyName))||0)+increment);},decrementProperty:function decrementProperty(keyName){var decrement=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;!((typeof decrement==='number'||!isNaN(parseFloat(decrement)))&&isFinite(decrement))&&assert$1('Must pass a numeric value to decrementProperty',(typeof decrement==='number'||!isNaN(parseFloat(decrement)))&&isFinite(decrement));return _set5(this,keyName,(get$2(this,keyName)||0)-decrement);},toggleProperty:function toggleProperty(keyName){return _set5(this,keyName,!get$2(this,keyName));},cacheFor:function cacheFor(keyName){var meta=peekMeta(this);return meta!==null?meta.valueFor(keyName):undefined;}});var emberObjectObservable=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Observable},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object\n          *//**\n            `EmberObject` is the main base class for all Ember objects. It is a subclass\n            of `CoreObject` with the `Observable` mixin applied. For details,\n            see the documentation for each of these.\n\n            @class EmberObject\n            @extends CoreObject\n            @uses Observable\n            @public\n          */// eslint-disable-next-line @typescript-eslint/no-empty-interface\nvar EmberObject=/*#__PURE__*/function(_CoreObject$extend){function EmberObject(){_classCallCheck(this,EmberObject);return _callSuper(this,EmberObject,arguments);}_inherits(EmberObject,_CoreObject$extend);return _createClass(EmberObject,[{key:\"_debugContainerKey\",get:function get(){var factory=getFactoryFor(this);return factory!==undefined&&factory.fullName;}}]);}(CoreObject.extend(Observable));/**\n            Decorator that turns the target function into an Action which can be accessed\n            directly by reference.\n\n            ```js\n            import Component from '@ember/component';\n            import { tracked } from '@glimmer/tracking';\n            import { action } from '@ember/object';\n\n            export default class Tooltip extends Component {\n              @tracked isShowing = false;\n\n              @action\n              toggleShowing() {\n                this.isShowing = !this.isShowing;\n              }\n            }\n            ```\n            ```hbs\n            <!-- template.hbs -->\n            <button {{on \"click\" this.toggleShowing}}>Show tooltip</button>\n\n            {{#if isShowing}}\n              <div class=\"tooltip\">\n                I'm a tooltip!\n              </div>\n            {{/if}}\n            ```\n\n            It also binds the function directly to the instance, so it can be used in any\n            context and will correctly refer to the class it came from:\n\n            ```js\n            import Component from '@ember/component';\n            import { tracked } from '@glimmer/tracking';\n            import { action } from '@ember/object';\n\n            export default class Tooltip extends Component {\n              constructor() {\n                super(...arguments);\n\n                // this.toggleShowing is still bound correctly when added to\n                // the event listener\n                document.addEventListener('click', this.toggleShowing);\n              }\n\n              @tracked isShowing = false;\n\n              @action\n              toggleShowing() {\n                this.isShowing = !this.isShowing;\n              }\n            }\n            ```\n\n            @public\n            @method action\n            @for @ember/object\n            @static\n            @param {Function|undefined} callback The function to turn into an action,\n                                                 when used in classic classes\n            @return {PropertyDecorator} property decorator instance\n          */var BINDINGS_MAP=new WeakMap();function hasProto(obj){return obj!=null&&obj.constructor!==undefined&&typeof obj.constructor.proto==='function';}function setupAction(target,key,actionFn){if(hasProto(target)){target.constructor.proto();}if(!Object.prototype.hasOwnProperty.call(target,'actions')){var parentActions=target.actions;// we need to assign because of the way mixins copy actions down when inheriting\ntarget.actions=parentActions?Object.assign({},parentActions):{};}!(target.actions!=null)&&assert$1(\"[BUG] Somehow the target doesn't have actions!\",target.actions!=null);target.actions[key]=actionFn;return{get:function get(){var bindings=BINDINGS_MAP.get(this);if(bindings===undefined){bindings=new Map();BINDINGS_MAP.set(this,bindings);}var fn=bindings.get(actionFn);if(fn===undefined){fn=actionFn.bind(this);bindings.set(actionFn,fn);}return fn;}};}function action$1(){var actionFn;for(var _len39=arguments.length,args=new Array(_len39),_key39=0;_key39<_len39;_key39++){args[_key39]=arguments[_key39];}if(!isElementDescriptor(args)){actionFn=args[0];var decorator=function decorator(target,key,_desc,_meta,isClassicDecorator){!isClassicDecorator&&assert$1('The @action decorator may only be passed a method when used in classic classes. You should decorate methods directly in native classes',isClassicDecorator);!(typeof actionFn==='function')&&assert$1('The action() decorator must be passed a method when used in classic classes',typeof actionFn==='function');return setupAction(target,key,actionFn);};setClassicDecorator(decorator);return decorator;}var target=args[0],key=args[1],desc=args[2];actionFn=desc===null||desc===void 0?void 0:desc.value;!(typeof actionFn==='function')&&assert$1('The @action decorator must be applied to methods when used in native classes',typeof actionFn==='function');// SAFETY: TS types are weird with decorators. This should work.\nreturn setupAction(target,key,actionFn);}// SAFETY: TS types are weird with decorators. This should work.\nsetClassicDecorator(action$1);// ..........................................................\n// OBSERVER HELPER\n//\n/**\n            Specify a method that observes property changes.\n\n            ```javascript\n            import EmberObject from '@ember/object';\n            import { observer } from '@ember/object';\n\n            export default EmberObject.extend({\n              valueObserver: observer('value', function() {\n                // Executes whenever the \"value\" property changes\n              })\n            });\n            ```\n\n            Also available as `Function.prototype.observes` if prototype extensions are\n            enabled.\n\n            @method observer\n            @for @ember/object\n            @param {String} propertyNames*\n            @param {Function} func\n            @return func\n            @public\n            @static\n          */function observer(){for(var _len40=arguments.length,args=new Array(_len40),_key40=0;_key40<_len40;_key40++){args[_key40]=arguments[_key40];}var funcOrDef=args.pop();!(typeof funcOrDef==='function'||_typeof(funcOrDef)==='object'&&funcOrDef!==null)&&assert$1('observer must be provided a function or an observer definition',typeof funcOrDef==='function'||_typeof(funcOrDef)==='object'&&funcOrDef!==null);var func;var dependentKeys;var sync;if(typeof funcOrDef==='function'){func=funcOrDef;dependentKeys=args;sync=!ENV._DEFAULT_ASYNC_OBSERVERS;}else{func=funcOrDef.fn;dependentKeys=funcOrDef.dependentKeys;sync=funcOrDef.sync;}!(typeof func==='function')&&assert$1('observer called without a function',typeof func==='function');!(Array.isArray(dependentKeys)&&dependentKeys.length>0&&dependentKeys.every(function(p){return typeof p==='string'&&Boolean(p.length);}))&&assert$1('observer called without valid path',Array.isArray(dependentKeys)&&dependentKeys.length>0&&dependentKeys.every(function(p){return typeof p==='string'&&Boolean(p.length);}));!(typeof sync==='boolean')&&assert$1('observer called without sync',typeof sync==='boolean');var paths=[];var _iterator30=_createForOfIteratorHelper(dependentKeys),_step30;try{for(_iterator30.s();!(_step30=_iterator30.n()).done;){var dependentKey=_step30.value;expandProperties(dependentKey,function(path){return paths.push(path);});}}catch(err){_iterator30.e(err);}finally{_iterator30.f();}setObservers(func,{paths:paths,sync:sync});return func;}var emberObjectIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,action:action$1,computed:computed,default:EmberObject,defineProperty:defineProperty,get:get$2,getProperties:_getProperties,notifyPropertyChange:_notifyPropertyChange,observer:observer,set:_set5,setProperties:_setProperties,trySet:trySet},Symbol.toStringTag,{value:'Module'});/**\n           * Default component template, which is a plain yield\n           */var DEFAULT_TEMPLATE_BLOCK=[[[opcodes.Yield,1,null]],[\"&default\"],!1,[]],DEFAULT_TEMPLATE={// random uuid\nid:\"1b32f5c2-7623-43d6-a0ad-9672898920a1\",moduleName:\"__default__.hbs\",block:JSON.stringify(DEFAULT_TEMPLATE_BLOCK),scope:null,isStrictMode:!0},WELL_KNOWN_EMPTY_ARRAY=Object.freeze([]),STARTER_CONSTANTS=constants(WELL_KNOWN_EMPTY_ARRAY),WELL_KNOWN_EMPTY_ARRAY_POSITION=STARTER_CONSTANTS.indexOf(WELL_KNOWN_EMPTY_ARRAY);var CompileTimeConstantImpl=/*#__PURE__*/function(){function CompileTimeConstantImpl(){_classCallCheck(this,CompileTimeConstantImpl);// `0` means NULL\n_defineProperty(this,\"values\",STARTER_CONSTANTS.slice());_defineProperty(this,\"indexMap\",new Map(this.values.map(function(value,index){return[value,index];})));}return _createClass(CompileTimeConstantImpl,[{key:\"value\",value:function value(_value4){var indexMap=this.indexMap,index=indexMap.get(_value4);return void 0===index&&(index=this.values.push(_value4)-1,indexMap.set(_value4,index)),index;}},{key:\"array\",value:function array(values){if(0===values.length)return WELL_KNOWN_EMPTY_ARRAY_POSITION;var handles=new Array(values.length);for(var i=0;i<values.length;i++)handles[i]=this.value(values[i]);return this.value(handles);}},{key:\"toPool\",value:function toPool(){return this.values;}}]);}();var RuntimeConstantsImpl=/*#__PURE__*/function(){function RuntimeConstantsImpl(pool){_classCallCheck(this,RuntimeConstantsImpl);_defineProperty(this,\"values\",void 0);this.values=pool;}return _createClass(RuntimeConstantsImpl,[{key:\"getValue\",value:function getValue(handle){return this.values[handle];}},{key:\"getArray\",value:function getArray(value){var handles=this.getValue(value),reified=new Array(handles.length);var _iterator31=_createForOfIteratorHelper(enumerate(handles)),_step31;try{for(_iterator31.s();!(_step31=_iterator31.n()).done;){var _step31$value=_slicedToArray(_step31.value,2),i=_step31$value[0],n=_step31$value[1];reified[i]=this.getValue(n);}}catch(err){_iterator31.e(err);}finally{_iterator31.f();}return reified;}}]);}();var ConstantsImpl=/*#__PURE__*/function(_CompileTimeConstantI){function ConstantsImpl(){var _this11;_classCallCheck(this,ConstantsImpl);for(var _len41=arguments.length,args=new Array(_len41),_key41=0;_key41<_len41;_key41++){args[_key41]=arguments[_key41];}_this11=_callSuper(this,ConstantsImpl,[].concat(args));_defineProperty(_this11,\"reifiedArrs\",_defineProperty({},WELL_KNOWN_EMPTY_ARRAY_POSITION,WELL_KNOWN_EMPTY_ARRAY));_defineProperty(_this11,\"defaultTemplate\",templateFactory(DEFAULT_TEMPLATE)());// Used for tests and debugging purposes, and to be able to analyze large apps\n// This is why it's enabled even in production\n_defineProperty(_this11,\"helperDefinitionCount\",0);_defineProperty(_this11,\"modifierDefinitionCount\",0);_defineProperty(_this11,\"componentDefinitionCount\",0);_defineProperty(_this11,\"helperDefinitionCache\",new WeakMap());_defineProperty(_this11,\"modifierDefinitionCache\",new WeakMap());_defineProperty(_this11,\"componentDefinitionCache\",new WeakMap());return _this11;}_inherits(ConstantsImpl,_CompileTimeConstantI);return _createClass(ConstantsImpl,[{key:\"helper\",value:function helper(definitionState){var _resolvedName=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var isOptional=arguments.length>2?arguments[2]:undefined;var handle=this.helperDefinitionCache.get(definitionState);if(void 0===handle){var managerOrHelper=getInternalHelperManager(definitionState,isOptional);if(null===managerOrHelper)return this.helperDefinitionCache.set(definitionState,null),null;debugAssert(managerOrHelper,\"BUG: expected manager or helper\");var _helper6=\"function\"==typeof managerOrHelper?managerOrHelper:managerOrHelper.getHelper(definitionState);handle=this.value(_helper6),this.helperDefinitionCache.set(definitionState,handle),this.helperDefinitionCount++;}return handle;}},{key:\"modifier\",value:function modifier(definitionState){var resolvedName=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var isOptional=arguments.length>2?arguments[2]:undefined;var handle=this.modifierDefinitionCache.get(definitionState);if(void 0===handle){var manager=getInternalModifierManager(definitionState,isOptional);if(null===manager)return this.modifierDefinitionCache.set(definitionState,null),null;var definition={resolvedName:resolvedName,manager:manager,state:definitionState};handle=this.value(definition),this.modifierDefinitionCache.set(definitionState,handle),this.modifierDefinitionCount++;}return handle;}},{key:\"component\",value:function component(definitionState,owner,isOptional){var definition=this.componentDefinitionCache.get(definitionState);if(void 0===definition){var _templateFactory2;var manager=getInternalComponentManager(definitionState,isOptional);if(null===manager)return this.componentDefinitionCache.set(definitionState,null),null;debugAssert(manager,\"BUG: expected manager\");var template,_capabilities=capabilityFlagsFrom(manager.getCapabilities(definitionState)),_templateFactory=getComponentTemplate(definitionState),_compilable=null;template=managerHasCapability(manager,_capabilities,InternalComponentCapabilities.dynamicLayout)?_templateFactory===null||_templateFactory===void 0?void 0:_templateFactory(owner):(_templateFactory2=_templateFactory===null||_templateFactory===void 0?void 0:_templateFactory(owner))!==null&&_templateFactory2!==void 0?_templateFactory2:this.defaultTemplate,void 0!==template&&(template=unwrapTemplate(template),_compilable=managerHasCapability(manager,_capabilities,InternalComponentCapabilities.wrapped)?template.asWrappedLayout():template.asLayout()),definition={resolvedName:null,handle:-1,// replaced momentarily\nmanager:manager,capabilities:_capabilities,state:definitionState,compilable:_compilable},definition.handle=this.value(definition),this.componentDefinitionCache.set(definitionState,definition),this.componentDefinitionCount++;}return definition;}},{key:\"resolvedComponent\",value:function resolvedComponent(resolvedDefinition,resolvedName){var definition=this.componentDefinitionCache.get(resolvedDefinition);if(void 0===definition){var manager=resolvedDefinition.manager,state=resolvedDefinition.state,template=resolvedDefinition.template,_capabilities2=capabilityFlagsFrom(manager.getCapabilities(resolvedDefinition)),_compilable2=null;managerHasCapability(manager,_capabilities2,InternalComponentCapabilities.dynamicLayout)||(template=template!==null&&template!==void 0?template:this.defaultTemplate),null!==template&&(template=unwrapTemplate(template),_compilable2=managerHasCapability(manager,_capabilities2,InternalComponentCapabilities.wrapped)?template.asWrappedLayout():template.asLayout()),definition={resolvedName:resolvedName,handle:-1,// replaced momentarily\nmanager:manager,capabilities:_capabilities2,state:state,compilable:_compilable2},definition.handle=this.value(definition),this.componentDefinitionCache.set(resolvedDefinition,definition),this.componentDefinitionCount++;}return expect(definition,\"BUG: resolved component definitions cannot be null\");}},{key:\"getValue\",value:function getValue(index){return debugAssert(index>=0,\"cannot get value for handle: \".concat(index)),this.values[index];}},{key:\"getArray\",value:function getArray(index){var reifiedArrs=this.reifiedArrs,reified=reifiedArrs[index];if(void 0===reified){var names=this.getValue(index);reified=new Array(names.length);var _iterator32=_createForOfIteratorHelper(enumerate(names)),_step32;try{for(_iterator32.s();!(_step32=_iterator32.n()).done;){var _step32$value=_slicedToArray(_step32.value,2),i=_step32$value[0],_name15=_step32$value[1];reified[i]=this.getValue(_name15);}}catch(err){_iterator32.e(err);}finally{_iterator32.f();}reifiedArrs[index]=reified;}return reified;}}]);}(CompileTimeConstantImpl);var RuntimeOpImpl=/*#__PURE__*/function(){function RuntimeOpImpl(heap){_classCallCheck(this,RuntimeOpImpl);_defineProperty(this,\"offset\",0);this.heap=heap;}return _createClass(RuntimeOpImpl,[{key:\"size\",get:function get(){return 1+((this.heap.getbyaddr(this.offset)&OPERAND_LEN_MASK)>>ARG_SHIFT);}},{key:\"isMachine\",get:function get(){return this.heap.getbyaddr(this.offset)&MACHINE_MASK?1:0;}},{key:\"type\",get:function get(){return this.heap.getbyaddr(this.offset)&TYPE_MASK;}},{key:\"op1\",get:function get(){return this.heap.getbyaddr(this.offset+1);}},{key:\"op2\",get:function get(){return this.heap.getbyaddr(this.offset+2);}},{key:\"op3\",get:function get(){return this.heap.getbyaddr(this.offset+3);}}]);}();var TableSlotState=function(TableSlotState){return TableSlotState[TableSlotState.Allocated=0]=\"Allocated\",TableSlotState[TableSlotState.Freed=1]=\"Freed\",TableSlotState[TableSlotState.Purged=2]=\"Purged\",TableSlotState[TableSlotState.Pointer=3]=\"Pointer\",TableSlotState;}(TableSlotState||{});var RuntimeHeapImpl=/*#__PURE__*/function(){function RuntimeHeapImpl(serializedHeap){_classCallCheck(this,RuntimeHeapImpl);_defineProperty(this,\"heap\",void 0);_defineProperty(this,\"table\",void 0);var buffer=serializedHeap.buffer,table=serializedHeap.table;this.heap=new Int32Array(buffer),this.table=table;}// It is illegal to close over this address, as compaction\n// may move it. However, it is legal to use this address\n// multiple times between compactions.\nreturn _createClass(RuntimeHeapImpl,[{key:\"getaddr\",value:function getaddr(handle){return unwrap$1(this.table[handle]);}},{key:\"getbyaddr\",value:function getbyaddr(address){return expect(this.heap[address],\"Access memory out of bounds of the heap\");}},{key:\"sizeof\",value:function sizeof(handle){return this.table,-1;}}]);}();function hydrateHeap(serializedHeap){return new RuntimeHeapImpl(serializedHeap);}/**\n           * The Heap is responsible for dynamically allocating\n           * memory in which we read/write the VM's instructions\n           * from/to. When we malloc we pass out a VMHandle, which\n           * is used as an indirect way of accessing the memory during\n           * execution of the VM. Internally we track the different\n           * regions of the memory in an int array known as the table.\n           *\n           * The table 32-bit aligned and has the following layout:\n           *\n           * | ... | hp (u32) |       info (u32)   | size (u32) |\n           * | ... |  Handle  | Scope Size | State | Size       |\n           * | ... | 32bits   | 30bits     | 2bits | 32bit      |\n           *\n           * With this information we effectively have the ability to\n           * control when we want to free memory. That being said you\n           * can not free during execution as raw address are only\n           * valid during the execution. This means you cannot close\n           * over them as you will have a bad memory access exception.\n           */var HeapImpl=/*#__PURE__*/function(){function HeapImpl(){_classCallCheck(this,HeapImpl);_defineProperty(this,\"offset\",0);_defineProperty(this,\"heap\",void 0);_defineProperty(this,\"handleTable\",void 0);_defineProperty(this,\"handleState\",void 0);_defineProperty(this,\"handle\",0);this.heap=new Int32Array(1048576),this.handleTable=[],this.handleState=[];}return _createClass(HeapImpl,[{key:\"pushRaw\",value:function pushRaw(value){this.sizeCheck(),this.heap[this.offset++]=value;}},{key:\"pushOp\",value:function pushOp(item){this.pushRaw(item);}},{key:\"pushMachine\",value:function pushMachine(item){this.pushRaw(item|MACHINE_MASK);}},{key:\"sizeCheck\",value:function sizeCheck(){var heap=this.heap;if(this.offset===this.heap.length){var newHeap=new Int32Array(heap.length+1048576);newHeap.set(heap,0),this.heap=newHeap;}}},{key:\"getbyaddr\",value:function getbyaddr(address){return unwrap$1(this.heap[address]);}},{key:\"setbyaddr\",value:function setbyaddr(address,value){this.heap[address]=value;}},{key:\"malloc\",value:function malloc(){// push offset, info, size\nreturn this.handleTable.push(this.offset),this.handleTable.length-1;}},{key:\"finishMalloc\",value:function finishMalloc(handle){}},{key:\"size\",value:function size(){return this.offset;}// It is illegal to close over this address, as compaction\n// may move it. However, it is legal to use this address\n// multiple times between compactions.\n},{key:\"getaddr\",value:function getaddr(handle){return unwrap$1(this.handleTable[handle]);}},{key:\"sizeof\",value:function sizeof(handle){return this.handleTable,-1;}},{key:\"free\",value:function free(handle){this.handleState[handle]=TableSlotState.Freed;}/**\n            * The heap uses the [Mark-Compact Algorithm](https://en.wikipedia.org/wiki/Mark-compact_algorithm) to shift\n            * reachable memory to the bottom of the heap and freeable\n            * memory to the top of the heap. When we have shifted all\n            * the reachable memory to the top of the heap, we move the\n            * offset to the next free position.\n            */},{key:\"compact\",value:function compact(){var compactedSize=0,handleTable=this.handleTable,handleState=this.handleState,heap=this.heap;for(var i=0;i<length;i++){var offset=unwrap$1(handleTable[i]),size=unwrap$1(handleTable[i+1])-unwrap$1(offset),state=handleState[i];if(state!==TableSlotState.Purged)if(state===TableSlotState.Freed)// transition to \"already freed\" aka \"purged\"\n// a good improvement would be to reuse\n// these slots\nhandleState[i]=TableSlotState.Purged,compactedSize+=size;else if(state===TableSlotState.Allocated){for(var j=offset;j<=i+size;j++)heap[j-compactedSize]=unwrap$1(heap[j]);handleTable[i]=offset-compactedSize;}else state===TableSlotState.Pointer&&(handleTable[i]=offset-compactedSize);}this.offset=this.offset-compactedSize;}},{key:\"capture\",value:function capture(){var offset=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.offset;// Only called in eager mode\nvar buffer=function(arr,start,end){if(void 0!==arr.slice)return arr.slice(start,end);var ret=new Int32Array(end);for(;start<end;start++)ret[start]=unwrap$1(arr[start]);return ret;}(this.heap,0,offset).buffer;return{handle:this.handle,table:this.handleTable,buffer:buffer};}}]);}();var RuntimeProgramImpl=/*#__PURE__*/function(){function RuntimeProgramImpl(constants,heap){_classCallCheck(this,RuntimeProgramImpl);_defineProperty(this,\"_opcode\",void 0);this.constants=constants,this.heap=heap,this._opcode=new RuntimeOpImpl(this.heap);}return _createClass(RuntimeProgramImpl,[{key:\"opcode\",value:function opcode(offset){return this._opcode.offset=offset,this._opcode;}}]);}();function artifacts(){return{constants:new ConstantsImpl(),heap:new HeapImpl()};}var glimmerProgram=/*#__PURE__*/Object.defineProperty({__proto__:null,CompileTimeConstantImpl:CompileTimeConstantImpl,ConstantsImpl:ConstantsImpl,HeapImpl:HeapImpl,RuntimeConstantsImpl:RuntimeConstantsImpl,RuntimeHeapImpl:RuntimeHeapImpl,RuntimeOpImpl:RuntimeOpImpl,RuntimeProgramImpl:RuntimeProgramImpl,artifacts:artifacts,hydrateHeap:hydrateHeap},Symbol.toStringTag,{value:'Module'});/* This file is generated by build/debug.js */new Array(Op.Size).fill(null),new Array(Op.Size).fill(null);var DynamicScopeImpl=/*#__PURE__*/function(){function DynamicScopeImpl(bucket){_classCallCheck(this,DynamicScopeImpl);_defineProperty(this,\"bucket\",void 0);this.bucket=bucket?assign({},bucket):{};}return _createClass(DynamicScopeImpl,[{key:\"get\",value:function get(key){return unwrap$1(this.bucket[key]);}},{key:\"set\",value:function set(key,reference){return this.bucket[key]=reference;}},{key:\"child\",value:function child(){return new DynamicScopeImpl(this.bucket);}}]);}();var PartialScopeImpl=/*#__PURE__*/function(){function PartialScopeImpl(// the 0th slot is `self`\nslots,owner,callerScope,// named arguments and blocks passed to a layout that uses eval\nevalScope,// locals in scope when the partial was invoked\npartialMap){_classCallCheck(this,PartialScopeImpl);this.slots=slots,this.owner=owner,this.callerScope=callerScope,this.evalScope=evalScope,this.partialMap=partialMap;}return _createClass(PartialScopeImpl,[{key:\"init\",value:function init(_ref100){var self=_ref100.self;return this.slots[0]=self,this;}},{key:\"getSelf\",value:function getSelf(){return this.get(0);}},{key:\"getSymbol\",value:function getSymbol(symbol){return this.get(symbol);}},{key:\"getBlock\",value:function getBlock(symbol){var block=this.get(symbol);return block===UNDEFINED_REFERENCE?null:block;}},{key:\"getEvalScope\",value:function getEvalScope(){return this.evalScope;}},{key:\"getPartialMap\",value:function getPartialMap(){return this.partialMap;}},{key:\"bind\",value:function bind(symbol,value){this.set(symbol,value);}},{key:\"bindSelf\",value:function bindSelf(self){this.set(0,self);}},{key:\"bindSymbol\",value:function bindSymbol(symbol,value){this.set(symbol,value);}},{key:\"bindBlock\",value:function bindBlock(symbol,value){this.set(symbol,value);}},{key:\"bindEvalScope\",value:function bindEvalScope(map){this.evalScope=map;}},{key:\"bindPartialMap\",value:function bindPartialMap(map){this.partialMap=map;}},{key:\"bindCallerScope\",value:function bindCallerScope(scope){this.callerScope=scope;}},{key:\"getCallerScope\",value:function getCallerScope(){return this.callerScope;}},{key:\"child\",value:function child(){return new PartialScopeImpl(this.slots.slice(),this.owner,this.callerScope,this.evalScope,this.partialMap);}},{key:\"get\",value:function get(index){if(index>=this.slots.length)throw new RangeError(\"BUG: cannot get $\".concat(index,\" from scope; length=\").concat(this.slots.length));return this.slots[index];}},{key:\"set\",value:function set(index,value){if(index>=this.slots.length)throw new RangeError(\"BUG: cannot get $\".concat(index,\" from scope; length=\").concat(this.slots.length));this.slots[index]=value;}}],[{key:\"root\",value:function root(self){var size=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var owner=arguments.length>2?arguments[2]:undefined;var refs=new Array(size+1).fill(UNDEFINED_REFERENCE);return new PartialScopeImpl(refs,owner,null,null,null).init({self:self});}},{key:\"sized\",value:function sized(){var size=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var owner=arguments.length>1?arguments[1]:undefined;var refs=new Array(size+1).fill(UNDEFINED_REFERENCE);return new PartialScopeImpl(refs,owner,null,null,null);}}]);}();// These symbols represent \"friend\" properties that are used inside of\n// the VM in other classes, but are not intended to be a part of\n// Glimmer's API.\nvar INNER_VM=Symbol(\"INNER_VM\"),DESTROYABLE_STACK=Symbol(\"DESTROYABLE_STACK\"),STACKS=Symbol(\"STACKS\"),REGISTERS=Symbol(\"REGISTERS\"),HEAP=Symbol(\"HEAP\"),CONSTANTS=Symbol(\"CONSTANTS\"),ARGS$1=Symbol(\"ARGS\");var CursorImpl=/*#__PURE__*/_createClass(function CursorImpl(element,nextSibling){_classCallCheck(this,CursorImpl);this.element=element,this.nextSibling=nextSibling;});var ConcreteBounds=/*#__PURE__*/function(){function ConcreteBounds(parentNode,first,last){_classCallCheck(this,ConcreteBounds);this.parentNode=parentNode,this.first=first,this.last=last;}return _createClass(ConcreteBounds,[{key:\"parentElement\",value:function parentElement(){return this.parentNode;}},{key:\"firstNode\",value:function firstNode(){return this.first;}},{key:\"lastNode\",value:function lastNode(){return this.last;}}]);}();function move(bounds,reference){var parent=bounds.parentElement(),first=bounds.firstNode(),last=bounds.lastNode(),current=first;// eslint-disable-next-line no-constant-condition\nfor(;;){var _next2=current.nextSibling;if(parent.insertBefore(current,reference),current===last)return _next2;current=expect(_next2,\"invalid bounds\");}}function clear(bounds){var parent=bounds.parentElement(),first=bounds.firstNode(),last=bounds.lastNode(),current=first;// eslint-disable-next-line no-constant-condition\nfor(;;){var _next3=current.nextSibling;if(parent.removeChild(current),current===last)return _next3;current=expect(_next3,\"invalid bounds\");}}function normalizeStringValue(value){return isEmpty$2(value)?\"\":String(value);}function isEmpty$2(value){return null==value||\"function\"!=typeof value.toString;}function isSafeString(value){return\"object\"==_typeof(value)&&null!==value&&\"function\"==typeof value.toHTML;}function isNode(value){return\"object\"==_typeof(value)&&null!==value&&\"number\"==typeof value.nodeType;}function isString(value){return\"string\"==typeof value;}/*\n           * @method normalizeProperty\n           * @param element {HTMLElement}\n           * @param slotName {String}\n           * @returns {Object} { name, type }\n           */function normalizeProperty(element,slotName){var type,normalized;if(slotName in element)normalized=slotName,type=\"prop\";else{var lower=slotName.toLowerCase();lower in element?(type=\"prop\",normalized=lower):(type=\"attr\",normalized=slotName);}return\"prop\"!==type||\"style\"!==normalized.toLowerCase()&&!function(tagName,propName){var tag=ATTR_OVERRIDES[tagName.toUpperCase()];return tag&&tag[propName.toLowerCase()]||!1;}(element.tagName,normalized)||(type=\"attr\"),{normalized:normalized,type:type};}// properties that MUST be set as attributes, due to:\n// * browser bug\n// * strange spec outlier\nvar ATTR_OVERRIDES={INPUT:{form:!0,// Chrome 46.0.2464.0: 'autocorrect' in document.createElement('input') === false\n// Safari 8.0.7: 'autocorrect' in document.createElement('input') === false\n// Mobile Safari (iOS 8.4 simulator): 'autocorrect' in document.createElement('input') === true\nautocorrect:!0,// Chrome 54.0.2840.98: 'list' in document.createElement('input') === true\n// Safari 9.1.3: 'list' in document.createElement('input') === false\nlist:!0},// element.form is actually a legitimate readOnly property, that is to be\n// mutated, but must be mutated by setAttribute...\nSELECT:{form:!0},OPTION:{form:!0},TEXTAREA:{form:!0},LABEL:{form:!0},FIELDSET:{form:!0},LEGEND:{form:!0},OBJECT:{form:!0},OUTPUT:{form:!0},BUTTON:{form:!0}},badProtocols=[\"javascript:\",\"vbscript:\"],badTags=[\"A\",\"BODY\",\"LINK\",\"IMG\",\"IFRAME\",\"BASE\",\"FORM\"],badTagsForDataURI=[\"EMBED\"],badAttributes=[\"href\",\"src\",\"background\",\"action\"],badAttributesForDataURI=[\"src\"];function has(array,item){return-1!==array.indexOf(item);}function checkURI(tagName,attribute){return(null===tagName||has(badTags,tagName))&&has(badAttributes,attribute);}function checkDataURI(tagName,attribute){return null!==tagName&&has(badTagsForDataURI,tagName)&&has(badAttributesForDataURI,attribute);}function requiresSanitization(tagName,attribute){return checkURI(tagName,attribute)||checkDataURI(tagName,attribute);}var _protocolForUrlImplementation,DebugStyleAttributeManager;function sanitizeAttributeValue(element,attribute,value){var tagName=null;if(null==value)return value;if(isSafeString(value))return value.toHTML();tagName=element?element.tagName.toUpperCase():null;var str=normalizeStringValue(value);if(checkURI(tagName,attribute)){var protocol=(url=str,_protocolForUrlImplementation||(_protocolForUrlImplementation=function(){if(\"object\"==(typeof URL===\"undefined\"?\"undefined\":_typeof(URL))&&null!==URL&&// this is super annoying, TS thinks that URL **must** be a function so `URL.parse` check\n// thinks it is `never` without this `as unknown as any`\n\"function\"==typeof URL.parse){// In Ember-land the `fastboot` package sets the `URL` global to `require('url')`\n// ultimately, this should be changed (so that we can either rely on the natural `URL` global\n// that exists) but for now we have to detect the specific `FastBoot` case first\n// a future version of `fastboot` will detect if this legacy URL setup is required (by\n// inspecting Ember version) and if new enough, it will avoid shadowing the `URL` global\n// constructor with `require('url')`.\nvar nodeURL=URL;return function(url){var protocol=null;return\"string\"==typeof url&&(protocol=nodeURL.parse(url).protocol),null===protocol?\":\":protocol;};}if(\"function\"==typeof URL)return function(_url){try{return new URL(_url).protocol;}catch(error){// any non-fully qualified url string will trigger an error (because there is no\n// baseURI that we can provide; in that case we **know** that the protocol is\n// \"safe\" because it isn't specifically one of the `badProtocols` listed above\n// (and those protocols can never be the default baseURI)\nreturn\":\";}};throw new Error('@glimmer/runtime needs a valid \"globalThis.URL\"');}()),_protocolForUrlImplementation(url));if(has(badProtocols,protocol))return\"unsafe:\".concat(str);}var url;return checkDataURI(tagName,attribute)?\"unsafe:\".concat(str):str;}function dynamicAttribute(element,attr,namespace){var isTrusting=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!1;var tagName=element.tagName,namespaceURI=element.namespaceURI,attribute={element:element,name:attr,namespace:namespace};if(\"style\"===attr&&!isTrusting)return new DebugStyleAttributeManager(attribute);if(namespaceURI===NS_SVG)return buildDynamicAttribute(tagName,attr,attribute);var _normalizeProperty=normalizeProperty(element,attr),type=_normalizeProperty.type,normalized=_normalizeProperty.normalized;return\"attr\"===type?buildDynamicAttribute(tagName,normalized,attribute):function(tagName,name,attribute){return requiresSanitization(tagName,name)?new SafeDynamicProperty(name,attribute):function(tagName,attribute){return(\"INPUT\"===tagName||\"TEXTAREA\"===tagName)&&\"value\"===attribute;}(tagName,name)?new InputValueDynamicAttribute(name,attribute):function(tagName,attribute){return\"OPTION\"===tagName&&\"selected\"===attribute;}(tagName,name)?new OptionSelectedDynamicAttribute(name,attribute):new DefaultDynamicProperty(name,attribute);}(tagName,normalized,attribute);}function buildDynamicAttribute(tagName,name,attribute){return requiresSanitization(tagName,name)?new SafeDynamicAttribute(attribute):new SimpleDynamicAttribute(attribute);}var DynamicAttribute=/*#__PURE__*/_createClass(function DynamicAttribute(attribute){_classCallCheck(this,DynamicAttribute);this.attribute=attribute;});var SimpleDynamicAttribute=/*#__PURE__*/function(_DynamicAttribute){function SimpleDynamicAttribute(){_classCallCheck(this,SimpleDynamicAttribute);return _callSuper(this,SimpleDynamicAttribute,arguments);}_inherits(SimpleDynamicAttribute,_DynamicAttribute);return _createClass(SimpleDynamicAttribute,[{key:\"set\",value:function set(dom,value,_env){var normalizedValue=normalizeValue(value);if(null!==normalizedValue){var _this$attribute=this.attribute,_name16=_this$attribute.name,namespace=_this$attribute.namespace;dom.__setAttribute(_name16,normalizedValue,namespace);}}},{key:\"update\",value:function update(value,_env){var normalizedValue=normalizeValue(value),_this$attribute2=this.attribute,element=_this$attribute2.element,name=_this$attribute2.name;null===normalizedValue?element.removeAttribute(name):element.setAttribute(name,normalizedValue);}}]);}(DynamicAttribute);var DefaultDynamicProperty=/*#__PURE__*/function(_DynamicAttribute2){function DefaultDynamicProperty(normalizedName,attribute){var _this12;_classCallCheck(this,DefaultDynamicProperty);_this12=_callSuper(this,DefaultDynamicProperty,[attribute]),_defineProperty(_assertThisInitialized(_this12),\"value\",void 0),_this12.normalizedName=normalizedName;return _this12;}_inherits(DefaultDynamicProperty,_DynamicAttribute2);return _createClass(DefaultDynamicProperty,[{key:\"set\",value:function set(dom,value,_env){null!=value&&(this.value=value,dom.__setProperty(this.normalizedName,value));}},{key:\"update\",value:function update(value,_env){var element=this.attribute.element;this.value!==value&&(element[this.normalizedName]=this.value=value,null==value&&this.removeAttribute());}},{key:\"removeAttribute\",value:function removeAttribute(){// TODO this sucks but to preserve properties first and to meet current\n// semantics we must do this.\nvar _this$attribute3=this.attribute,element=_this$attribute3.element,namespace=_this$attribute3.namespace;namespace?element.removeAttributeNS(namespace,this.normalizedName):element.removeAttribute(this.normalizedName);}}]);}(DynamicAttribute);var SafeDynamicProperty=/*#__PURE__*/function(_DefaultDynamicProper){function SafeDynamicProperty(){_classCallCheck(this,SafeDynamicProperty);return _callSuper(this,SafeDynamicProperty,arguments);}_inherits(SafeDynamicProperty,_DefaultDynamicProper);return _createClass(SafeDynamicProperty,[{key:\"set\",value:function set(dom,value,env){var _this$attribute4=this.attribute,element=_this$attribute4.element,name=_this$attribute4.name,sanitized=sanitizeAttributeValue(element,name,value);_superPropGet(SafeDynamicProperty,\"set\",this,3)([dom,sanitized,env]);}},{key:\"update\",value:function update(value,env){var _this$attribute5=this.attribute,element=_this$attribute5.element,name=_this$attribute5.name,sanitized=sanitizeAttributeValue(element,name,value);_superPropGet(SafeDynamicProperty,\"update\",this,3)([sanitized,env]);}}]);}(DefaultDynamicProperty);var SafeDynamicAttribute=/*#__PURE__*/function(_SimpleDynamicAttribu){function SafeDynamicAttribute(){_classCallCheck(this,SafeDynamicAttribute);return _callSuper(this,SafeDynamicAttribute,arguments);}_inherits(SafeDynamicAttribute,_SimpleDynamicAttribu);return _createClass(SafeDynamicAttribute,[{key:\"set\",value:function set(dom,value,env){var _this$attribute6=this.attribute,element=_this$attribute6.element,name=_this$attribute6.name,sanitized=sanitizeAttributeValue(element,name,value);_superPropGet(SafeDynamicAttribute,\"set\",this,3)([dom,sanitized,env]);}},{key:\"update\",value:function update(value,env){var _this$attribute7=this.attribute,element=_this$attribute7.element,name=_this$attribute7.name,sanitized=sanitizeAttributeValue(element,name,value);_superPropGet(SafeDynamicAttribute,\"update\",this,3)([sanitized,env]);}}]);}(SimpleDynamicAttribute);var InputValueDynamicAttribute=/*#__PURE__*/function(_DefaultDynamicProper2){function InputValueDynamicAttribute(){_classCallCheck(this,InputValueDynamicAttribute);return _callSuper(this,InputValueDynamicAttribute,arguments);}_inherits(InputValueDynamicAttribute,_DefaultDynamicProper2);return _createClass(InputValueDynamicAttribute,[{key:\"set\",value:function set(dom,value){dom.__setProperty(\"value\",normalizeStringValue(value));}},{key:\"update\",value:function update(value){var input=castToBrowser(this.attribute.element,[\"input\",\"textarea\"]),currentValue=input.value,normalizedValue=normalizeStringValue(value);currentValue!==normalizedValue&&(input.value=normalizedValue);}}]);}(DefaultDynamicProperty);var OptionSelectedDynamicAttribute=/*#__PURE__*/function(_DefaultDynamicProper3){function OptionSelectedDynamicAttribute(){_classCallCheck(this,OptionSelectedDynamicAttribute);return _callSuper(this,OptionSelectedDynamicAttribute,arguments);}_inherits(OptionSelectedDynamicAttribute,_DefaultDynamicProper3);return _createClass(OptionSelectedDynamicAttribute,[{key:\"set\",value:function set(dom,value){null!=value&&!1!==value&&dom.__setProperty(\"selected\",!0);}},{key:\"update\",value:function update(value){castToBrowser(this.attribute.element,\"option\").selected=!!value;}}]);}(DefaultDynamicProperty);function normalizeValue(value){return!1===value||null==value||void 0===value.toString?null:!0===value?\"\":// onclick function etc in SSR\n\"function\"==typeof value?null:String(value);}DebugStyleAttributeManager=/*#__PURE__*/function(_SimpleDynamicAttribu2){function DebugStyleAttributeManager(){_classCallCheck(this,DebugStyleAttributeManager);return _callSuper(this,DebugStyleAttributeManager,arguments);}_inherits(DebugStyleAttributeManager,_SimpleDynamicAttribu2);return _createClass(DebugStyleAttributeManager,[{key:\"set\",value:function set(dom,value,env){warnIfStyleNotTrusted(value),_superPropGet(DebugStyleAttributeManager,\"set\",this,3)([dom,value,env]);}},{key:\"update\",value:function update(value,env){warnIfStyleNotTrusted(value),_superPropGet(DebugStyleAttributeManager,\"update\",this,3)([value,env]);}}]);}(SimpleDynamicAttribute);var First=/*#__PURE__*/function(){function First(node){_classCallCheck(this,First);this.node=node;}return _createClass(First,[{key:\"firstNode\",value:function firstNode(){return this.node;}}]);}();var Last=/*#__PURE__*/function(){function Last(node){_classCallCheck(this,Last);this.node=node;}return _createClass(Last,[{key:\"lastNode\",value:function lastNode(){return this.node;}}]);}();var CURSOR_STACK=Symbol(\"CURSOR_STACK\");var NewElementBuilder=/*#__PURE__*/function(){function NewElementBuilder(env,parentNode,nextSibling){_classCallCheck(this,NewElementBuilder);_defineProperty(this,\"dom\",void 0);_defineProperty(this,\"updateOperations\",void 0);_defineProperty(this,\"constructing\",null);_defineProperty(this,\"operations\",null);_defineProperty(this,\"env\",void 0);_defineProperty(this,CURSOR_STACK,new StackImpl());_defineProperty(this,\"modifierStack\",new StackImpl());_defineProperty(this,\"blockStack\",new StackImpl());this.pushElement(parentNode,nextSibling),this.env=env,this.dom=env.getAppendOperations(),this.updateOperations=env.getDOM();}return _createClass(NewElementBuilder,[{key:\"initialize\",value:function initialize(){return this.pushSimpleBlock(),this;}},{key:\"debugBlocks\",value:function debugBlocks(){return this.blockStack.toArray();}},{key:\"element\",get:function get(){return this[CURSOR_STACK].current.element;}},{key:\"nextSibling\",get:function get(){return this[CURSOR_STACK].current.nextSibling;}},{key:\"hasBlocks\",get:function get(){return this.blockStack.size>0;}},{key:\"block\",value:function block(){return expect(this.blockStack.current,\"Expected a current live block\");}},{key:\"popElement\",value:function popElement(){this[CURSOR_STACK].pop(),expect(this[CURSOR_STACK].current,\"can't pop past the last element\");}},{key:\"pushSimpleBlock\",value:function pushSimpleBlock(){return this.pushLiveBlock(new SimpleLiveBlock(this.element));}},{key:\"pushUpdatableBlock\",value:function pushUpdatableBlock(){return this.pushLiveBlock(new UpdatableBlockImpl(this.element));}},{key:\"pushBlockList\",value:function pushBlockList(list){return this.pushLiveBlock(new LiveBlockList(this.element,list));}},{key:\"pushLiveBlock\",value:function pushLiveBlock(block){var isRemote=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var current=this.blockStack.current;return null!==current&&(isRemote||current.didAppendBounds(block)),this.__openBlock(),this.blockStack.push(block),block;}},{key:\"popBlock\",value:function popBlock(){return this.block().finalize(this),this.__closeBlock(),expect(this.blockStack.pop(),\"Expected popBlock to return a block\");}},{key:\"__openBlock\",value:function __openBlock(){}},{key:\"__closeBlock\",value:function __closeBlock(){}// todo return seems unused\n},{key:\"openElement\",value:function openElement(tag){var element=this.__openElement(tag);return this.constructing=element,element;}},{key:\"__openElement\",value:function __openElement(tag){return this.dom.createElement(tag,this.element);}},{key:\"flushElement\",value:function flushElement(modifiers){var parent=this.element,element=expect(this.constructing,\"flushElement should only be called when constructing an element\");this.__flushElement(parent,element),this.constructing=null,this.operations=null,this.pushModifiers(modifiers),this.pushElement(element,null),this.didOpenElement(element);}},{key:\"__flushElement\",value:function __flushElement(parent,constructing){this.dom.insertBefore(parent,constructing,this.nextSibling);}},{key:\"closeElement\",value:function closeElement(){return this.willCloseElement(),this.popElement(),this.popModifiers();}},{key:\"pushRemoteElement\",value:function pushRemoteElement(element,guid,insertBefore){return this.__pushRemoteElement(element,guid,insertBefore);}},{key:\"__pushRemoteElement\",value:function __pushRemoteElement(element,_guid,insertBefore){if(this.pushElement(element,insertBefore),void 0===insertBefore)for(;element.lastChild;)element.removeChild(element.lastChild);var block=new RemoteLiveBlock(element);return this.pushLiveBlock(block,!0);}},{key:\"popRemoteElement\",value:function popRemoteElement(){var block=this.popBlock();return debugAssert(block instanceof RemoteLiveBlock,\"[BUG] expecting a RemoteLiveBlock\"),this.popElement(),block;}},{key:\"pushElement\",value:function pushElement(element){var nextSibling=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;this[CURSOR_STACK].push(new CursorImpl(element,nextSibling));}},{key:\"pushModifiers\",value:function pushModifiers(modifiers){this.modifierStack.push(modifiers);}},{key:\"popModifiers\",value:function popModifiers(){return this.modifierStack.pop();}},{key:\"didAppendBounds\",value:function didAppendBounds(bounds){return this.block().didAppendBounds(bounds),bounds;}},{key:\"didAppendNode\",value:function didAppendNode(node){return this.block().didAppendNode(node),node;}},{key:\"didOpenElement\",value:function didOpenElement(element){return this.block().openElement(element),element;}},{key:\"willCloseElement\",value:function willCloseElement(){this.block().closeElement();}},{key:\"appendText\",value:function appendText(string){return this.didAppendNode(this.__appendText(string));}},{key:\"__appendText\",value:function __appendText(text){var dom=this.dom,element=this.element,nextSibling=this.nextSibling,node=dom.createTextNode(text);return dom.insertBefore(element,node,nextSibling),node;}},{key:\"__appendNode\",value:function __appendNode(node){return this.dom.insertBefore(this.element,node,this.nextSibling),node;}},{key:\"__appendFragment\",value:function __appendFragment(fragment){var first=fragment.firstChild;if(first){var ret=new ConcreteBounds(this.element,first,fragment.lastChild);return this.dom.insertBefore(this.element,fragment,this.nextSibling),ret;}{var comment=this.__appendComment(\"\");return new ConcreteBounds(this.element,comment,comment);}}},{key:\"__appendHTML\",value:function __appendHTML(html){return this.dom.insertHTMLBefore(this.element,this.nextSibling,html);}},{key:\"appendDynamicHTML\",value:function appendDynamicHTML(value){var bounds=this.trustedContent(value);this.didAppendBounds(bounds);}},{key:\"appendDynamicText\",value:function appendDynamicText(value){var node=this.untrustedContent(value);return this.didAppendNode(node),node;}},{key:\"appendDynamicFragment\",value:function appendDynamicFragment(value){var bounds=this.__appendFragment(value);this.didAppendBounds(bounds);}},{key:\"appendDynamicNode\",value:function appendDynamicNode(value){var node=this.__appendNode(value),bounds=new ConcreteBounds(this.element,node,node);this.didAppendBounds(bounds);}},{key:\"trustedContent\",value:function trustedContent(value){return this.__appendHTML(value);}},{key:\"untrustedContent\",value:function untrustedContent(value){return this.__appendText(value);}},{key:\"appendComment\",value:function appendComment(string){return this.didAppendNode(this.__appendComment(string));}},{key:\"__appendComment\",value:function __appendComment(string){var dom=this.dom,element=this.element,nextSibling=this.nextSibling,node=dom.createComment(string);return dom.insertBefore(element,node,nextSibling),node;}},{key:\"__setAttribute\",value:function __setAttribute(name,value,namespace){this.dom.setAttribute(this.constructing,name,value,namespace);}},{key:\"__setProperty\",value:function __setProperty(name,value){this.constructing[name]=value;}},{key:\"setStaticAttribute\",value:function setStaticAttribute(name,value,namespace){this.__setAttribute(name,value,namespace);}},{key:\"setDynamicAttribute\",value:function setDynamicAttribute(name,value,trusting,namespace){var attribute=dynamicAttribute(this.constructing,name,namespace,trusting);return attribute.set(this,value,this.env),attribute;}}],[{key:\"forInitialRender\",value:function forInitialRender(env,cursor){return new this(env,cursor.element,cursor.nextSibling).initialize();}},{key:\"resume\",value:function resume(env,block){var stack=new this(env,block.parentElement(),block.reset(env)).initialize();return stack.pushLiveBlock(block),stack;}}]);}();var SimpleLiveBlock=/*#__PURE__*/function(){function SimpleLiveBlock(parent){_classCallCheck(this,SimpleLiveBlock);_defineProperty(this,\"first\",null);_defineProperty(this,\"last\",null);_defineProperty(this,\"nesting\",0);this.parent=parent;}return _createClass(SimpleLiveBlock,[{key:\"parentElement\",value:function parentElement(){return this.parent;}},{key:\"firstNode\",value:function firstNode(){return expect(this.first,\"cannot call `firstNode()` while `SimpleLiveBlock` is still initializing\").firstNode();}},{key:\"lastNode\",value:function lastNode(){return expect(this.last,\"cannot call `lastNode()` while `SimpleLiveBlock` is still initializing\").lastNode();}},{key:\"openElement\",value:function openElement(element){this.didAppendNode(element),this.nesting++;}},{key:\"closeElement\",value:function closeElement(){this.nesting--;}},{key:\"didAppendNode\",value:function didAppendNode(node){0===this.nesting&&(this.first||(this.first=new First(node)),this.last=new Last(node));}},{key:\"didAppendBounds\",value:function didAppendBounds(bounds){0===this.nesting&&(this.first||(this.first=bounds),this.last=bounds);}},{key:\"finalize\",value:function finalize(stack){null===this.first&&stack.appendComment(\"\");}}]);}();var RemoteLiveBlock=/*#__PURE__*/function(_SimpleLiveBlock2){function RemoteLiveBlock(parent){var _this13;_classCallCheck(this,RemoteLiveBlock);_this13=_callSuper(this,RemoteLiveBlock,[parent]),registerDestructor$1(_assertThisInitialized(_this13),function(){// In general, you only need to clear the root of a hierarchy, and should never\n// need to clear any child nodes. This is an important constraint that gives us\n// a strong guarantee that clearing a subtree is a single DOM operation.\n// Because remote blocks are not normally physically nested inside of the tree\n// that they are logically nested inside, we manually clear remote blocks when\n// a logical parent is cleared.\n// HOWEVER, it is currently possible for a remote block to be physically nested\n// inside of the block it is logically contained inside of. This happens when\n// the remote block is appended to the end of the application's entire element.\n// The problem with that scenario is that Glimmer believes that it owns more of\n// the DOM than it actually does. The code is attempting to write past the end\n// of the Glimmer-managed root, but Glimmer isn't aware of that.\n// The correct solution to that problem is for Glimmer to be aware of the end\n// of the bounds that it owns, and once we make that change, this check could\n// be removed.\n// For now, a more targeted fix is to check whether the node was already removed\n// and avoid clearing the node if it was. In most cases this shouldn't happen,\n// so this might hide bugs where the code clears nested nodes unnecessarily,\n// so we should eventually try to do the correct fix.\n_this13.parentElement()===_this13.firstNode().parentNode&&clear(_assertThisInitialized(_this13));});return _this13;}_inherits(RemoteLiveBlock,_SimpleLiveBlock2);return _createClass(RemoteLiveBlock);}(SimpleLiveBlock);var UpdatableBlockImpl=/*#__PURE__*/function(_SimpleLiveBlock3){function UpdatableBlockImpl(){_classCallCheck(this,UpdatableBlockImpl);return _callSuper(this,UpdatableBlockImpl,arguments);}_inherits(UpdatableBlockImpl,_SimpleLiveBlock3);return _createClass(UpdatableBlockImpl,[{key:\"reset\",value:function reset(){_destroy(this);var nextSibling=clear(this);return this.first=null,this.last=null,this.nesting=0,nextSibling;}}]);}(SimpleLiveBlock);// FIXME: All the noops in here indicate a modelling problem\nvar LiveBlockList=/*#__PURE__*/function(){function LiveBlockList(parent,boundList){_classCallCheck(this,LiveBlockList);this.parent=parent,this.boundList=boundList,this.parent=parent,this.boundList=boundList;}return _createClass(LiveBlockList,[{key:\"parentElement\",value:function parentElement(){return this.parent;}},{key:\"firstNode\",value:function firstNode(){return expect(this.boundList[0],\"cannot call `firstNode()` while `LiveBlockList` is still initializing\").firstNode();}},{key:\"lastNode\",value:function lastNode(){var boundList=this.boundList;return expect(boundList[boundList.length-1],\"cannot call `lastNode()` while `LiveBlockList` is still initializing\").lastNode();}},{key:\"openElement\",value:function openElement(_element){debugAssert(!1,\"Cannot openElement directly inside a block list\");}},{key:\"closeElement\",value:function closeElement(){debugAssert(!1,\"Cannot closeElement directly inside a block list\");}},{key:\"didAppendNode\",value:function didAppendNode(_node){debugAssert(!1,\"Cannot create a new node directly inside a block list\");}},{key:\"didAppendBounds\",value:function didAppendBounds(_bounds){}},{key:\"finalize\",value:function finalize(_stack){debugAssert(this.boundList.length>0,\"boundsList cannot be empty\");}}]);}();function clientBuilder(env,cursor){return NewElementBuilder.forInitialRender(env,cursor);}var APPEND_OPCODES=new(/*#__PURE__*/function(){function _class(){_classCallCheck(this,_class);_defineProperty(this,\"evaluateOpcode\",new Array(Op.Size).fill(null));}return _createClass(_class,[{key:\"add\",value:function add(name,evaluate){var kind=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"syscall\";this.evaluateOpcode[name]={syscall:\"machine\"!==kind,evaluate:evaluate};}},{key:\"debugBefore\",value:function debugBefore(vm,opcode){return{sp:void 0,pc:vm.fetchValue($pc),name:void 0,params:void 0,type:opcode.type,isMachine:opcode.isMachine,size:opcode.size,state:void 0};}},{key:\"debugAfter\",value:function debugAfter(vm,pre){}},{key:\"evaluate\",value:function evaluate(vm,opcode,type){var operation=unwrap$1(this.evaluateOpcode[type]);operation.syscall?(debugAssert(!opcode.isMachine,\"BUG: Mismatch between operation.syscall (\".concat(operation.syscall,\") and opcode.isMachine (\").concat(opcode.isMachine,\") for \").concat(opcode.type)),operation.evaluate(vm,opcode)):(debugAssert(opcode.isMachine,\"BUG: Mismatch between operation.syscall (\".concat(operation.syscall,\") and opcode.isMachine (\").concat(opcode.isMachine,\") for \").concat(opcode.type)),operation.evaluate(vm[INNER_VM],opcode));}}]);}())(),TYPE=Symbol(\"TYPE\"),INNER=Symbol(\"INNER\"),OWNER=Symbol(\"OWNER\"),ARGS$2=Symbol(\"ARGS\"),RESOLVED=Symbol(\"RESOLVED\"),CURRIED_VALUES=new WeakSet();function isCurriedValue(value){return CURRIED_VALUES.has(value);}function isCurriedType(value,type){return isCurriedValue(value)&&value[TYPE]===type;}var CurriedValue=/*#__PURE__*/_createClass(/** @internal */function CurriedValue(type,inner,owner,args){var resolved=arguments.length>4&&arguments[4]!==undefined?arguments[4]:!1;_classCallCheck(this,CurriedValue);_defineProperty(this,TYPE,void 0);_defineProperty(this,INNER,void 0);_defineProperty(this,OWNER,void 0);_defineProperty(this,ARGS$2,void 0);_defineProperty(this,RESOLVED,void 0);CURRIED_VALUES.add(this),this[TYPE]=type,this[INNER]=inner,this[OWNER]=owner,this[ARGS$2]=args,this[RESOLVED]=resolved;});function resolveCurriedValue(curriedValue){var positional,named,definition,owner,resolved,currentWrapper=curriedValue;// eslint-disable-next-line no-constant-condition\nfor(;;){var _currentWrapper=currentWrapper,curriedArgs=_currentWrapper[ARGS$2],inner=_currentWrapper[INNER];if(null!==curriedArgs){var curriedNamed=curriedArgs.named,curriedPositional=curriedArgs.positional;curriedPositional.length>0&&(positional=void 0===positional?curriedPositional:curriedPositional.concat(positional)),void 0===named&&(named=[]),named.unshift(curriedNamed);}if(!isCurriedValue(inner)){// Save off the owner that this helper was curried with. Later on,\n// we'll fetch the value of this register and set it as the owner on the\n// new root scope.\ndefinition=inner,owner=currentWrapper[OWNER],resolved=currentWrapper[RESOLVED];break;}currentWrapper=inner;}return{definition:definition,owner:owner,resolved:resolved,positional:positional,named:named};}function curry(type,spec,owner,args){var resolved=arguments.length>4&&arguments[4]!==undefined?arguments[4]:!1;return new CurriedValue(type,spec,owner,args,resolved);}/** @internal */function hasCustomDebugRenderTreeLifecycle(manager){return\"getDebugCustomRenderTree\"in manager;}APPEND_OPCODES.add(Op.ChildScope,function(vm){return vm.pushChildScope();}),APPEND_OPCODES.add(Op.PopScope,function(vm){return vm.popScope();}),APPEND_OPCODES.add(Op.PushDynamicScope,function(vm){return vm.pushDynamicScope();}),APPEND_OPCODES.add(Op.PopDynamicScope,function(vm){return vm.popDynamicScope();}),APPEND_OPCODES.add(Op.Constant,function(vm,_ref101){var other=_ref101.op1;vm.stack.push(vm[CONSTANTS].getValue(decodeHandle(other)));}),APPEND_OPCODES.add(Op.ConstantReference,function(vm,_ref102){var other=_ref102.op1;vm.stack.push(createConstRef(vm[CONSTANTS].getValue(decodeHandle(other)),!1));}),APPEND_OPCODES.add(Op.Primitive,function(vm,_ref103){var primitive=_ref103.op1;var stack=vm.stack;if(isHandle(primitive)){// it is a handle which does not already exist on the stack\nvar value=vm[CONSTANTS].getValue(decodeHandle(primitive));stack.push(value);}else// is already an encoded immediate or primitive handle\nstack.push(decodeImmediate(primitive));}),APPEND_OPCODES.add(Op.PrimitiveReference,function(vm){var ref,stack=vm.stack,value=stack.pop();ref=void 0===value?UNDEFINED_REFERENCE:null===value?NULL_REFERENCE:!0===value?TRUE_REFERENCE:!1===value?FALSE_REFERENCE:createPrimitiveRef(value),stack.push(ref);}),APPEND_OPCODES.add(Op.Dup,function(vm,_ref104){var register=_ref104.op1,offset=_ref104.op2;var position=vm.fetchValue(register)-offset;vm.stack.dup(position);}),APPEND_OPCODES.add(Op.Pop,function(vm,_ref105){var count=_ref105.op1;vm.stack.pop(count);}),APPEND_OPCODES.add(Op.Load,function(vm,_ref106){var register=_ref106.op1;vm.load(register);}),APPEND_OPCODES.add(Op.Fetch,function(vm,_ref107){var register=_ref107.op1;vm.fetch(register);}),APPEND_OPCODES.add(Op.BindDynamicScope,function(vm,_ref108){var _names=_ref108.op1;var names=vm[CONSTANTS].getArray(_names);vm.bindDynamicScope(names);}),APPEND_OPCODES.add(Op.Enter,function(vm,_ref109){var args=_ref109.op1;vm.enter(args);}),APPEND_OPCODES.add(Op.Exit,function(vm){vm.exit();}),APPEND_OPCODES.add(Op.PushSymbolTable,function(vm,_ref110){var _table=_ref110.op1;vm.stack.push(vm[CONSTANTS].getValue(_table));}),APPEND_OPCODES.add(Op.PushBlockScope,function(vm){vm.stack.push(vm.scope());}),APPEND_OPCODES.add(Op.CompileBlock,function(vm){var stack=vm.stack,block=stack.pop();block?stack.push(vm.compile(block)):stack.push(null);}),APPEND_OPCODES.add(Op.InvokeYield,function(vm){var stack=vm.stack,handle=stack.pop(),scope=stack.pop(),table=stack.pop();debugAssert(null===table||table&&\"object\"==_typeof(table)&&Array.isArray(table.parameters),\"Expected top of stack to be Option<BlockSymbolTable>, was \".concat(String(table)));var args=stack.pop();if(null===table)// To balance the pop{Frame,Scope}\nreturn vm.pushFrame(),void vm.pushScope(scope!==null&&scope!==void 0?scope:vm.scope());var invokingScope=expect(scope,\"BUG: expected scope\");// If necessary, create a child scope\n{var locals=table.parameters,localsCount=locals.length;if(localsCount>0){invokingScope=invokingScope.child();for(var i=0;i<localsCount;i++)invokingScope.bindSymbol(unwrap$1(locals[i]),args.at(i));}}vm.pushFrame(),vm.pushScope(invokingScope),vm.call(handle);}),APPEND_OPCODES.add(Op.JumpIf,function(vm,_ref111){var target=_ref111.op1;var reference=vm.stack.pop(),value=Boolean(valueForRef(reference));isConstRef(reference)?!0===value&&vm.goto(target):(!0===value&&vm.goto(target),vm.updateWith(new Assert(reference)));}),APPEND_OPCODES.add(Op.JumpUnless,function(vm,_ref112){var target=_ref112.op1;var reference=vm.stack.pop(),value=Boolean(valueForRef(reference));isConstRef(reference)?!1===value&&vm.goto(target):(!1===value&&vm.goto(target),vm.updateWith(new Assert(reference)));}),APPEND_OPCODES.add(Op.JumpEq,function(vm,_ref113){var target=_ref113.op1,comparison=_ref113.op2;vm.stack.peek()===comparison&&vm.goto(target);}),APPEND_OPCODES.add(Op.AssertSame,function(vm){var reference=vm.stack.peek();!1===isConstRef(reference)&&vm.updateWith(new Assert(reference));}),APPEND_OPCODES.add(Op.ToBoolean,function(vm){var stack=vm.stack,valueRef=stack.pop();stack.push(createComputeRef(function(){return toBool$1(valueForRef(valueRef));}));});var Assert=/*#__PURE__*/function(){function Assert(ref){_classCallCheck(this,Assert);_defineProperty(this,\"last\",void 0);this.ref=ref,this.last=valueForRef(ref);}return _createClass(Assert,[{key:\"evaluate\",value:function evaluate(vm){var last=this.last,ref=this.ref;last!==valueForRef(ref)&&vm.throw();}}]);}();var AssertFilter=/*#__PURE__*/function(){function AssertFilter(ref,filter){_classCallCheck(this,AssertFilter);_defineProperty(this,\"last\",void 0);this.ref=ref,this.filter=filter,this.last=filter(valueForRef(ref));}return _createClass(AssertFilter,[{key:\"evaluate\",value:function evaluate(vm){var last=this.last,ref=this.ref,filter=this.filter;last!==filter(valueForRef(ref))&&vm.throw();}}]);}();var JumpIfNotModifiedOpcode=/*#__PURE__*/function(){function JumpIfNotModifiedOpcode(){_classCallCheck(this,JumpIfNotModifiedOpcode);_defineProperty(this,\"tag\",CONSTANT_TAG);_defineProperty(this,\"lastRevision\",INITIAL);_defineProperty(this,\"target\",void 0);}return _createClass(JumpIfNotModifiedOpcode,[{key:\"finalize\",value:function finalize(tag,target){this.target=target,this.didModify(tag);}},{key:\"evaluate\",value:function evaluate(vm){var tag=this.tag,target=this.target,lastRevision=this.lastRevision;!vm.alwaysRevalidate&&validateTag(tag,lastRevision)&&(consumeTag(tag),vm.goto(expect(target,\"VM BUG: Target must be set before attempting to jump\")));}},{key:\"didModify\",value:function didModify(tag){this.tag=tag,this.lastRevision=valueForTag(this.tag),consumeTag(tag);}}]);}();var BeginTrackFrameOpcode=/*#__PURE__*/function(){function BeginTrackFrameOpcode(debugLabel){_classCallCheck(this,BeginTrackFrameOpcode);this.debugLabel=debugLabel;}return _createClass(BeginTrackFrameOpcode,[{key:\"evaluate\",value:function evaluate(){beginTrackFrame(this.debugLabel);}}]);}();var EndTrackFrameOpcode=/*#__PURE__*/function(){function EndTrackFrameOpcode(target){_classCallCheck(this,EndTrackFrameOpcode);this.target=target;}return _createClass(EndTrackFrameOpcode,[{key:\"evaluate\",value:function evaluate(){var tag=endTrackFrame();this.target.didModify(tag);}}]);}();APPEND_OPCODES.add(Op.Text,function(vm,_ref114){var text=_ref114.op1;vm.elements().appendText(vm[CONSTANTS].getValue(text));}),APPEND_OPCODES.add(Op.Comment,function(vm,_ref115){var text=_ref115.op1;vm.elements().appendComment(vm[CONSTANTS].getValue(text));}),APPEND_OPCODES.add(Op.OpenElement,function(vm,_ref116){var tag=_ref116.op1;vm.elements().openElement(vm[CONSTANTS].getValue(tag));}),APPEND_OPCODES.add(Op.OpenDynamicElement,function(vm){var tagName=valueForRef(vm.stack.pop());vm.elements().openElement(tagName);}),APPEND_OPCODES.add(Op.PushRemoteElement,function(vm){var elementRef=vm.stack.pop(),insertBeforeRef=vm.stack.pop(),guidRef=vm.stack.pop(),element=valueForRef(elementRef),insertBefore=valueForRef(insertBeforeRef),guid=valueForRef(guidRef);isConstRef(elementRef)||vm.updateWith(new Assert(elementRef)),void 0===insertBefore||isConstRef(insertBeforeRef)||vm.updateWith(new Assert(insertBeforeRef));var block=vm.elements().pushRemoteElement(element,guid,insertBefore);if(block&&vm.associateDestroyable(block),void 0!==vm.env.debugRenderTree){// Note that there is nothing to update – when the args for an\n// {{#in-element}} changes it gets torn down and a new one is\n// re-created/rendered in its place (see the `Assert`s above)\nvar args=createCapturedArgs(void 0===insertBefore?{}:{insertBefore:insertBeforeRef},[elementRef]);vm.env.debugRenderTree.create(block,{type:\"keyword\",name:\"in-element\",args:args,instance:null}),registerDestructor$1(block,function(){var _vm$env$debugRenderTr;(_vm$env$debugRenderTr=vm.env.debugRenderTree)===null||_vm$env$debugRenderTr===void 0||_vm$env$debugRenderTr.willDestroy(block);});}}),APPEND_OPCODES.add(Op.PopRemoteElement,function(vm){var bounds=vm.elements().popRemoteElement();void 0!==vm.env.debugRenderTree&&// The RemoteLiveBlock is also its bounds\nvm.env.debugRenderTree.didRender(bounds,bounds);}),APPEND_OPCODES.add(Op.FlushElement,function(vm){var operations=vm.fetchValue($t0),modifiers=null;operations&&(modifiers=operations.flush(vm),vm.loadValue($t0,null)),vm.elements().flushElement(modifiers);}),APPEND_OPCODES.add(Op.CloseElement,function(vm){var modifiers=vm.elements().closeElement();null!==modifiers&&modifiers.forEach(function(modifier){vm.env.scheduleInstallModifier(modifier);var d=modifier.manager.getDestroyable(modifier.state);null!==d&&vm.associateDestroyable(d);});}),APPEND_OPCODES.add(Op.Modifier,function(vm,_ref117){var handle=_ref117.op1;if(!1===vm.env.isInteractive)return;var owner=vm.getOwner(),args=vm.stack.pop(),definition=vm[CONSTANTS].getValue(handle),manager=definition.manager,_vm$elements=vm.elements(),constructing=_vm$elements.constructing,capturedArgs=args.capture(),state=manager.create(owner,expect(constructing,\"BUG: ElementModifier could not find the element it applies to\"),definition.state,capturedArgs),instance={manager:manager,state:state,definition:definition};expect(vm.fetchValue($t0),\"BUG: ElementModifier could not find operations to append to\").addModifier(vm,instance,capturedArgs);var tag=manager.getTag(state);return null!==tag?(consumeTag(tag),vm.updateWith(new UpdateModifierOpcode(tag,instance))):void 0;}),APPEND_OPCODES.add(Op.DynamicModifier,function(vm){if(!1===vm.env.isInteractive)return;var stack=vm.stack,ref=stack.pop(),args=stack.pop().capture(),outerPositional=args.positional,outerNamed=args.named,_vm$elements2=vm.elements(),constructing=_vm$elements2.constructing,initialOwner=vm.getOwner(),instanceRef=createComputeRef(function(){var owner,hostDefinition,value=valueForRef(ref);if(!isObject(value))return;if(isCurriedType(value,CurriedTypes.Modifier)){var _resolveCurriedValue=resolveCurriedValue(value),resolvedDefinition=_resolveCurriedValue.definition,curriedOwner=_resolveCurriedValue.owner,positional=_resolveCurriedValue.positional,named=_resolveCurriedValue.named;hostDefinition=resolvedDefinition,owner=curriedOwner,void 0!==positional&&(args.positional=positional.concat(outerPositional)),void 0!==named&&(args.named=Object.assign.apply(Object,[{}].concat(_toConsumableArray(named),[outerNamed])));}else hostDefinition=value,owner=initialOwner;var manager=getInternalModifierManager(hostDefinition,!0);if(null===manager)throw new Error(\"Expected a dynamic modifier definition, but received an object or function that did not have a modifier manager associated with it. The dynamic invocation was `{{\".concat(ref.debugLabel,\"}}`, and the incorrect definition is the value at the path `\").concat(ref.debugLabel,\"`, which was: \").concat(debugToString$1(hostDefinition)));var definition={resolvedName:null,manager:manager,state:hostDefinition},state=manager.create(owner,expect(constructing,\"BUG: ElementModifier could not find the element it applies to\"),definition.state,args);return{manager:manager,state:state,definition:definition};}),instance=valueForRef(instanceRef),tag=null;return void 0!==instance&&(expect(vm.fetchValue($t0),\"BUG: ElementModifier could not find operations to append to\").addModifier(vm,instance,args),tag=instance.manager.getTag(instance.state),null!==tag&&consumeTag(tag)),!isConstRef(ref)||tag?vm.updateWith(new UpdateDynamicModifierOpcode(tag,instance,instanceRef)):void 0;});var UpdateModifierOpcode=/*#__PURE__*/function(){function UpdateModifierOpcode(tag,modifier){_classCallCheck(this,UpdateModifierOpcode);_defineProperty(this,\"lastUpdated\",void 0);this.tag=tag,this.modifier=modifier,this.lastUpdated=valueForTag(tag);}return _createClass(UpdateModifierOpcode,[{key:\"evaluate\",value:function evaluate(vm){var modifier=this.modifier,tag=this.tag,lastUpdated=this.lastUpdated;consumeTag(tag),validateTag(tag,lastUpdated)||(vm.env.scheduleUpdateModifier(modifier),this.lastUpdated=valueForTag(tag));}}]);}();var UpdateDynamicModifierOpcode=/*#__PURE__*/function(){function UpdateDynamicModifierOpcode(tag,instance,instanceRef){_classCallCheck(this,UpdateDynamicModifierOpcode);_defineProperty(this,\"lastUpdated\",void 0);this.tag=tag,this.instance=instance,this.instanceRef=instanceRef,this.lastUpdated=valueForTag(tag!==null&&tag!==void 0?tag:CURRENT_TAG);}return _createClass(UpdateDynamicModifierOpcode,[{key:\"evaluate\",value:function evaluate(vm){var tag=this.tag,lastUpdated=this.lastUpdated,instance=this.instance,instanceRef=this.instanceRef,newInstance=valueForRef(instanceRef);if(newInstance!==instance){if(void 0!==instance){var destroyable=instance.manager.getDestroyable(instance.state);null!==destroyable&&_destroy(destroyable);}if(void 0!==newInstance){var manager=newInstance.manager,state=newInstance.state,_destroyable=manager.getDestroyable(state);null!==_destroyable&&associateDestroyableChild(this,_destroyable),tag=manager.getTag(state),null!==tag&&(this.lastUpdated=valueForTag(tag)),this.tag=tag,vm.env.scheduleInstallModifier(newInstance);}this.instance=newInstance;}else null===tag||validateTag(tag,lastUpdated)||(vm.env.scheduleUpdateModifier(instance),this.lastUpdated=valueForTag(tag));null!==tag&&consumeTag(tag);}}]);}();APPEND_OPCODES.add(Op.StaticAttr,function(vm,_ref118){var _name=_ref118.op1,_value=_ref118.op2,_namespace=_ref118.op3;var name=vm[CONSTANTS].getValue(_name),value=vm[CONSTANTS].getValue(_value),namespace=_namespace?vm[CONSTANTS].getValue(_namespace):null;vm.elements().setStaticAttribute(name,value,namespace);}),APPEND_OPCODES.add(Op.DynamicAttr,function(vm,_ref119){var _name=_ref119.op1,_trusting=_ref119.op2,_namespace=_ref119.op3;var name=vm[CONSTANTS].getValue(_name),trusting=vm[CONSTANTS].getValue(_trusting),reference=vm.stack.pop(),value=valueForRef(reference),namespace=_namespace?vm[CONSTANTS].getValue(_namespace):null,attribute=vm.elements().setDynamicAttribute(name,value,trusting,namespace);isConstRef(reference)||vm.updateWith(new UpdateDynamicAttributeOpcode(reference,attribute,vm.env));});var UpdateDynamicAttributeOpcode=/*#__PURE__*/function(){function UpdateDynamicAttributeOpcode(reference,attribute,env){_classCallCheck(this,UpdateDynamicAttributeOpcode);_defineProperty(this,\"updateRef\",void 0);var initialized=!1;this.updateRef=createComputeRef(function(){var value=valueForRef(reference);!0===initialized?attribute.update(value,env):initialized=!0;}),valueForRef(this.updateRef);}return _createClass(UpdateDynamicAttributeOpcode,[{key:\"evaluate\",value:function evaluate(){valueForRef(this.updateRef);}}]);}();/**\n           * The VM creates a new ComponentInstance data structure for every component\n           * invocation it encounters.\n           *\n           * Similar to how a ComponentDefinition contains state about all components of a\n           * particular type, a ComponentInstance contains state specific to a particular\n           * instance of a component type. It also contains a pointer back to its\n           * component type's ComponentDefinition.\n           */APPEND_OPCODES.add(Op.PushComponentDefinition,function(vm,_ref120){var handle=_ref120.op1;var definition=vm[CONSTANTS].getValue(handle);debugAssert(!!definition,\"Missing component for \".concat(handle));var manager=definition.manager,capabilities=definition.capabilities,instance={definition:definition,manager:manager,capabilities:capabilities,state:null,handle:null,table:null,lookup:null};vm.stack.push(instance);}),APPEND_OPCODES.add(Op.ResolveDynamicComponent,function(vm,_ref121){var _isStrict=_ref121.op1;var definition,stack=vm.stack,component=valueForRef(stack.pop()),constants=vm[CONSTANTS],owner=vm.getOwner(),isStrict=constants.getValue(_isStrict);if(vm.loadValue($t1,null),\"string\"==typeof component){if(isStrict)throw new Error(\"Attempted to resolve a dynamic component with a string definition, `\".concat(component,\"` in a strict mode template. In strict mode, using strings to resolve component definitions is prohibited. You can instead import the component definition and use it directly.\"));var resolvedDefinition=function(resolver,constants,name,owner){var definition=resolver.lookupComponent(name,expect(owner,\"BUG: expected owner when looking up component\"));if(!definition)throw new Error(\"Attempted to resolve `\".concat(name,\"`, which was expected to be a component, but nothing was found.\"));return constants.resolvedComponent(definition,name);}(vm.runtime.resolver,constants,component,owner);definition=expect(resolvedDefinition,\"Could not find a component named \\\"\".concat(component,\"\\\"\"));}else definition=isCurriedValue(component)?component:constants.component(component,owner);stack.push(definition);}),APPEND_OPCODES.add(Op.ResolveCurriedComponent,function(vm){var definition,stack=vm.stack,ref=stack.pop(),value=valueForRef(ref),constants=vm[CONSTANTS];if(\"function\"!=typeof value&&(\"object\"!=_typeof(value)||null===value))throw new Error(\"Expected a component definition, but received \".concat(value,\". You may have accidentally done <\").concat(ref.debugLabel,\">, where \\\"\").concat(ref.debugLabel,\"\\\" was a string instead of a curried component definition. You must either use the component definition directly, or use the {{component}} helper to create a curried component definition when invoking dynamically.\"));if(isCurriedValue(value))definition=value;else if(definition=constants.component(value,vm.getOwner(),!0),null===definition)throw new Error(\"Expected a dynamic component definition, but received an object or function that did not have a component manager associated with it. The dynamic invocation was `<\".concat(ref.debugLabel,\">` or `{{\").concat(ref.debugLabel,\"}}`, and the incorrect definition is the value at the path `\").concat(ref.debugLabel,\"`, which was: \").concat(debugToString$1(value)));stack.push(definition);}),APPEND_OPCODES.add(Op.PushDynamicComponentInstance,function(vm){var capabilities,manager,stack=vm.stack,definition=stack.pop();isCurriedValue(definition)?manager=capabilities=null:(manager=definition.manager,capabilities=definition.capabilities),stack.push({definition:definition,capabilities:capabilities,manager:manager,state:null,handle:null,table:null});}),APPEND_OPCODES.add(Op.PushArgs,function(vm,_ref122){var _names=_ref122.op1,_blockNames=_ref122.op2,flags=_ref122.op3;var stack=vm.stack,names=vm[CONSTANTS].getArray(_names),positionalCount=flags>>4,atNames=8&flags,blockNames=7&flags?vm[CONSTANTS].getArray(_blockNames):EMPTY_STRING_ARRAY;vm[ARGS$1].setup(stack,names,blockNames,positionalCount,!!atNames),stack.push(vm[ARGS$1]);}),APPEND_OPCODES.add(Op.PushEmptyArgs,function(vm){var stack=vm.stack;stack.push(vm[ARGS$1].empty(stack));}),APPEND_OPCODES.add(Op.CaptureArgs,function(vm){var stack=vm.stack,capturedArgs=stack.pop().capture();stack.push(capturedArgs);}),APPEND_OPCODES.add(Op.PrepareArgs,function(vm,_ref123){var _state=_ref123.op1;var stack=vm.stack,instance=vm.fetchValue(_state),args=stack.pop(),definition=instance.definition;if(isCurriedType(definition,CurriedTypes.Component)){debugAssert(!definition.manager,\"If the component definition was curried, we don't yet have a manager\");var _constants=vm[CONSTANTS],_resolveCurriedValue2=resolveCurriedValue(definition),resolvedDefinition=_resolveCurriedValue2.definition,owner=_resolveCurriedValue2.owner,resolved=_resolveCurriedValue2.resolved,positional=_resolveCurriedValue2.positional,named=_resolveCurriedValue2.named;if(!0===resolved)definition=resolvedDefinition;else if(\"string\"==typeof resolvedDefinition){var resolvedValue=vm.runtime.resolver.lookupComponent(resolvedDefinition,owner);definition=_constants.resolvedComponent(expect(resolvedValue,\"BUG: expected resolved component\"),resolvedDefinition);}else definition=_constants.component(resolvedDefinition,owner);void 0!==named&&args.named.merge(assign.apply(void 0,[{}].concat(_toConsumableArray(named)))),void 0!==positional&&(args.realloc(positional.length),args.positional.prepend(positional));var _definition4=definition,_manager2=_definition4.manager;debugAssert(null===instance.manager,\"component instance manager should not be populated yet\"),debugAssert(null===instance.capabilities,\"component instance manager should not be populated yet\"),instance.definition=definition,instance.manager=_manager2,instance.capabilities=definition.capabilities,// Save off the owner that this component was curried with. Later on,\n// we'll fetch the value of this register and set it as the owner on the\n// new root scope.\nvm.loadValue($t1,owner);}var _definition5=definition,manager=_definition5.manager,state=_definition5.state,capabilities=instance.capabilities;if(!managerHasCapability(manager,capabilities,InternalComponentCapabilities.prepareArgs))return void stack.push(args);var blocks=args.blocks.values,blockNames=args.blocks.names,preparedArgs=manager.prepareArgs(state,args);if(preparedArgs){args.clear();for(var i=0;i<blocks.length;i++)stack.push(blocks[i]);var _positional=preparedArgs.positional,_named2=preparedArgs.named,positionalCount=_positional.length;for(var _i15=0;_i15<positionalCount;_i15++)stack.push(_positional[_i15]);var names=Object.keys(_named2);for(var _i16=0;_i16<names.length;_i16++)stack.push(_named2[unwrap$1(names[_i16])]);args.setup(stack,names,blockNames,positionalCount,!1);}stack.push(args);}),APPEND_OPCODES.add(Op.CreateComponent,function(vm,_ref124){var flags=_ref124.op1,_state=_ref124.op2;var instance=vm.fetchValue(_state),definition=instance.definition,manager=instance.manager,capabilities=instance.capabilities;if(!managerHasCapability(manager,capabilities,InternalComponentCapabilities.createInstance))// TODO: Closure and Main components are always invoked dynamically, so this\n// opcode may run even if this capability is not enabled. In the future we\n// should handle this in a better way.\nreturn;var dynamicScope=null;managerHasCapability(manager,capabilities,InternalComponentCapabilities.dynamicScope)&&(dynamicScope=vm.dynamicScope());var hasDefaultBlock=1&flags,args=null;managerHasCapability(manager,capabilities,InternalComponentCapabilities.createArgs)&&(args=vm.stack.peek());var self=null;managerHasCapability(manager,capabilities,InternalComponentCapabilities.createCaller)&&(self=vm.getSelf());var state=manager.create(vm.getOwner(),definition.state,args,vm.env,dynamicScope,self,!!hasDefaultBlock);// We want to reuse the `state` POJO here, because we know that the opcodes\n// only transition at exactly one place.\ninstance.state=state,managerHasCapability(manager,capabilities,InternalComponentCapabilities.updateHook)&&vm.updateWith(new UpdateComponentOpcode(state,manager,dynamicScope));}),APPEND_OPCODES.add(Op.RegisterComponentDestructor,function(vm,_ref125){var _state=_ref125.op1;var _vm$fetchValue=vm.fetchValue(_state),manager=_vm$fetchValue.manager,state=_vm$fetchValue.state,capabilities=_vm$fetchValue.capabilities,d=manager.getDestroyable(state);if(!managerHasCapability(manager,capabilities,InternalComponentCapabilities.willDestroy)&&null!==d&&\"string\"in d)throw new Error(\"BUG: Destructor has willDestroy, but the willDestroy capability was not enabled for this component. Pre-destruction hooks must be explicitly opted into\");d&&vm.associateDestroyable(d);}),APPEND_OPCODES.add(Op.BeginComponentTransaction,function(vm,_ref126){var _state=_ref126.op1;var name;{var _definition$resolvedN;var _vm$fetchValue2=vm.fetchValue(_state),definition=_vm$fetchValue2.definition,manager=_vm$fetchValue2.manager;name=(_definition$resolvedN=definition.resolvedName)!==null&&_definition$resolvedN!==void 0?_definition$resolvedN:manager.getDebugName(definition.state);}vm.beginCacheGroup(name),vm.elements().pushSimpleBlock();}),APPEND_OPCODES.add(Op.PutComponentOperations,function(vm){vm.loadValue($t0,new ComponentElementOperations());}),APPEND_OPCODES.add(Op.ComponentAttr,function(vm,_ref127){var _name=_ref127.op1,_trusting=_ref127.op2,_namespace=_ref127.op3;var name=vm[CONSTANTS].getValue(_name),trusting=vm[CONSTANTS].getValue(_trusting),reference=vm.stack.pop(),namespace=_namespace?vm[CONSTANTS].getValue(_namespace):null;vm.fetchValue($t0).setAttribute(name,reference,trusting,namespace);}),APPEND_OPCODES.add(Op.StaticComponentAttr,function(vm,_ref128){var _name=_ref128.op1,_value=_ref128.op2,_namespace=_ref128.op3;var name=vm[CONSTANTS].getValue(_name),value=vm[CONSTANTS].getValue(_value),namespace=_namespace?vm[CONSTANTS].getValue(_namespace):null;vm.fetchValue($t0).setStaticAttribute(name,value,namespace);});var ComponentElementOperations=/*#__PURE__*/function(){function ComponentElementOperations(){_classCallCheck(this,ComponentElementOperations);_defineProperty(this,\"attributes\",dict());_defineProperty(this,\"classes\",[]);_defineProperty(this,\"modifiers\",[]);}return _createClass(ComponentElementOperations,[{key:\"setAttribute\",value:function setAttribute(name,value,trusting,namespace){var deferred={value:value,namespace:namespace,trusting:trusting};\"class\"===name&&this.classes.push(value),this.attributes[name]=deferred;}},{key:\"setStaticAttribute\",value:function setStaticAttribute(name,value,namespace){var deferred={value:value,namespace:namespace};\"class\"===name&&this.classes.push(value),this.attributes[name]=deferred;}},{key:\"addModifier\",value:function addModifier(vm,modifier,capturedArgs){if(this.modifiers.push(modifier),void 0!==vm.env.debugRenderTree){var manager=modifier.manager,definition=modifier.definition,state=modifier.state;// TODO: we need a stable object for the debugRenderTree as the key, add support for\n// the case where the state is a primitive, or if in practice we always have/require\n// an object, then change the internal types to reflect that\nif(null===state||\"object\"!=_typeof(state)&&\"function\"!=typeof state)return;var _vm$elements3=vm.elements(),element=_vm$elements3.element,constructing=_vm$elements3.constructing,_name17=manager.getDebugName(definition.state),instance=manager.getDebugInstance(state);debugAssert(constructing,\"Expected a constructing element in addModifier\");var bounds=new ConcreteBounds(element,constructing,constructing);vm.env.debugRenderTree.create(state,{type:\"modifier\",name:_name17,args:capturedArgs,instance:instance}),vm.env.debugRenderTree.didRender(state,bounds),// For tearing down the debugRenderTree\nvm.associateDestroyable(state),vm.updateWith(new DebugRenderTreeUpdateOpcode(state)),vm.updateWith(new DebugRenderTreeDidRenderOpcode(state,bounds)),registerDestructor$1(state,function(){var _vm$env$debugRenderTr2;(_vm$env$debugRenderTr2=vm.env.debugRenderTree)===null||_vm$env$debugRenderTr2===void 0||_vm$env$debugRenderTr2.willDestroy(state);});}}},{key:\"flush\",value:function flush(vm){var type,attributes=this.attributes;for(var _name18 in this.attributes){if(\"type\"===_name18){type=attributes[_name18];continue;}var attr=unwrap$1(this.attributes[_name18]);\"class\"===_name18?setDeferredAttr(vm,\"class\",mergeClasses(this.classes),attr.namespace,attr.trusting):setDeferredAttr(vm,_name18,attr.value,attr.namespace,attr.trusting);}return void 0!==type&&setDeferredAttr(vm,\"type\",type.value,type.namespace,type.trusting),this.modifiers;}}]);}();function mergeClasses(classes){return 0===classes.length?\"\":1===classes.length?unwrap$1(classes[0]):function(classes){return classes.every(function(c){return\"string\"==typeof c;});}(classes)?classes.join(\" \"):(list=classes,createComputeRef(function(){var ret=[];var _iterator33=_createForOfIteratorHelper(list),_step33;try{for(_iterator33.s();!(_step33=_iterator33.n()).done;){var ref=_step33.value;var value=normalizeStringValue(\"string\"==typeof ref?ref:valueForRef(ref));value&&ret.push(value);}}catch(err){_iterator33.e(err);}finally{_iterator33.f();}return 0===ret.length?null:ret.join(\" \");}));var list;}function setDeferredAttr(vm,name,value,namespace){var trusting=arguments.length>4&&arguments[4]!==undefined?arguments[4]:!1;if(\"string\"==typeof value)vm.elements().setStaticAttribute(name,value,namespace);else{var attribute=vm.elements().setDynamicAttribute(name,valueForRef(value),trusting,namespace);isConstRef(value)||vm.updateWith(new UpdateDynamicAttributeOpcode(value,attribute,vm.env));}}function bindBlock(symbolName,blockName,state,blocks,vm){var symbol=state.table.symbols.indexOf(symbolName),block=blocks.get(blockName);-1!==symbol&&vm.scope().bindBlock(symbol+1,block),state.lookup&&(state.lookup[symbolName]=block);}APPEND_OPCODES.add(Op.DidCreateElement,function(vm,_ref129){var _state=_ref129.op1;var _vm$fetchValue3=vm.fetchValue(_state),definition=_vm$fetchValue3.definition,state=_vm$fetchValue3.state,manager=definition.manager,operations=vm.fetchValue($t0);manager.didCreateElement(state,expect(vm.elements().constructing,\"Expected a constructing element in DidCreateOpcode\"),operations);}),APPEND_OPCODES.add(Op.GetComponentSelf,function(vm,_ref130){var _state=_ref130.op1,_names=_ref130.op2;var instance=vm.fetchValue(_state),definition=instance.definition,state=instance.state,manager=definition.manager,selfRef=manager.getSelf(state);if(void 0!==vm.env.debugRenderTree){var args,moduleName,_instance=vm.fetchValue(_state),_definition6=_instance.definition,_manager3=_instance.manager;if(vm.stack.peek()===vm[ARGS$1])args=vm[ARGS$1].capture();else{var names=vm[CONSTANTS].getArray(_names);vm[ARGS$1].setup(vm.stack,names,[],0,!0),args=vm[ARGS$1].capture();}var _compilable3=_definition6.compilable;if(null===_compilable3?(debugAssert(managerHasCapability(_manager3,_instance.capabilities,InternalComponentCapabilities.dynamicLayout),\"BUG: No template was found for this component, and the component did not have the dynamic layout capability\"),_compilable3=_manager3.getDynamicLayout(state,vm.runtime.resolver),moduleName=null!==_compilable3?_compilable3.moduleName:\"__default__.hbs\"):moduleName=_compilable3.moduleName,// For tearing down the debugRenderTree\nvm.associateDestroyable(_instance),hasCustomDebugRenderTreeLifecycle(_manager3))_manager3.getDebugCustomRenderTree(_instance.definition.state,_instance.state,args,moduleName).forEach(function(node){var bucket=node.bucket;vm.env.debugRenderTree.create(bucket,node),registerDestructor$1(_instance,function(){var _vm$env$debugRenderTr3;(_vm$env$debugRenderTr3=vm.env.debugRenderTree)===null||_vm$env$debugRenderTr3===void 0||_vm$env$debugRenderTr3.willDestroy(bucket);}),vm.updateWith(new DebugRenderTreeUpdateOpcode(bucket));});else{var _definition6$resolved;var _name19=(_definition6$resolved=_definition6.resolvedName)!==null&&_definition6$resolved!==void 0?_definition6$resolved:_manager3.getDebugName(_definition6.state);vm.env.debugRenderTree.create(_instance,{type:\"component\",name:_name19,args:args,template:moduleName,instance:valueForRef(selfRef)}),registerDestructor$1(_instance,function(){var _vm$env$debugRenderTr4;(_vm$env$debugRenderTr4=vm.env.debugRenderTree)===null||_vm$env$debugRenderTr4===void 0||_vm$env$debugRenderTr4.willDestroy(_instance);}),vm.updateWith(new DebugRenderTreeUpdateOpcode(_instance));}}vm.stack.push(selfRef);}),APPEND_OPCODES.add(Op.GetComponentTagName,function(vm,_ref131){var _state=_ref131.op1;var _vm$fetchValue4=vm.fetchValue(_state),definition=_vm$fetchValue4.definition,state=_vm$fetchValue4.state,manager=definition.manager,tagName=manager.getTagName(state);// User provided value from JS, so we don't bother to encode\nvm.stack.push(tagName);}),// Dynamic Invocation Only\nAPPEND_OPCODES.add(Op.GetComponentLayout,function(vm,_ref132){var _state=_ref132.op1;var instance=vm.fetchValue(_state),manager=instance.manager,definition=instance.definition,stack=vm.stack,compilable=definition.compilable;if(null===compilable){var _capabilities3=instance.capabilities;debugAssert(managerHasCapability(manager,_capabilities3,InternalComponentCapabilities.dynamicLayout),\"BUG: No template was found for this component, and the component did not have the dynamic layout capability\"),compilable=manager.getDynamicLayout(instance.state,vm.runtime.resolver),null===compilable&&(compilable=managerHasCapability(manager,_capabilities3,InternalComponentCapabilities.wrapped)?unwrapTemplate(vm[CONSTANTS].defaultTemplate).asWrappedLayout():unwrapTemplate(vm[CONSTANTS].defaultTemplate).asLayout());}var handle=compilable.compile(vm.context);stack.push(compilable.symbolTable),stack.push(handle);}),APPEND_OPCODES.add(Op.Main,function(vm,_ref133){var register=_ref133.op1;var definition=vm.stack.pop(),invocation=vm.stack.pop(),manager=definition.manager,capabilities=definition.capabilities,state={definition:definition,manager:manager,capabilities:capabilities,state:null,handle:invocation.handle,table:invocation.symbolTable,lookup:null};vm.loadValue(register,state);}),APPEND_OPCODES.add(Op.PopulateLayout,function(vm,_ref134){var _state=_ref134.op1;var stack=vm.stack,handle=stack.pop(),table=stack.pop(),state=vm.fetchValue(_state);// In DEBUG handles could be ErrHandle objects\nstate.handle=handle,state.table=table;}),APPEND_OPCODES.add(Op.VirtualRootScope,function(vm,_ref135){var _state=_ref135.op1;var owner,_vm$fetchValue5=vm.fetchValue(_state),table=_vm$fetchValue5.table,manager=_vm$fetchValue5.manager,capabilities=_vm$fetchValue5.capabilities,state=_vm$fetchValue5.state;managerHasCapability(manager,capabilities,InternalComponentCapabilities.hasSubOwner)?(owner=manager.getOwner(state),vm.loadValue($t1,null)):(// Check the temp register to see if an owner was resolved from currying\nowner=vm.fetchValue($t1),null===owner?// If an owner wasn't found, default to using the current owner. This\n// will happen for normal dynamic component invocation,\n// e.g. <SomeClassicEmberComponent/>\nowner=vm.getOwner():// Else the owner was found, so clear the temp register. This will happen\n// if we are loading a curried component, e.g. <@someCurriedComponent/>\nvm.loadValue($t1,null)),vm.pushRootScope(table.symbols.length+1,owner);}),APPEND_OPCODES.add(Op.SetupForEval,function(vm,_ref136){var _state=_ref136.op1;var state=vm.fetchValue(_state);if(state.table.hasEval){var lookup=state.lookup=dict();vm.scope().bindEvalScope(lookup);}}),APPEND_OPCODES.add(Op.SetNamedVariables,function(vm,_ref137){var _state=_ref137.op1;var state=vm.fetchValue(_state),scope=vm.scope(),args=vm.stack.peek(),callerNames=args.named.atNames;for(var i=callerNames.length-1;i>=0;i--){var atName=unwrap$1(callerNames[i]),_symbol7=state.table.symbols.indexOf(atName),value=args.named.get(atName,!0);-1!==_symbol7&&scope.bindSymbol(_symbol7+1,value),state.lookup&&(state.lookup[atName]=value);}}),APPEND_OPCODES.add(Op.SetBlocks,function(vm,_ref138){var _state=_ref138.op1;var state=vm.fetchValue(_state),_vm$stack$peek=vm.stack.peek(),blocks=_vm$stack$peek.blocks;var _iterator34=_createForOfIteratorHelper(enumerate(blocks.names)),_step34;try{for(_iterator34.s();!(_step34=_iterator34.n()).done;){var _step34$value=_slicedToArray(_step34.value,1),i=_step34$value[0];bindBlock(unwrap$1(blocks.symbolNames[i]),unwrap$1(blocks.names[i]),state,blocks,vm);}}catch(err){_iterator34.e(err);}finally{_iterator34.f();}}),// Dynamic Invocation Only\nAPPEND_OPCODES.add(Op.InvokeComponentLayout,function(vm,_ref139){var _state=_ref139.op1;var state=vm.fetchValue(_state);vm.call(state.handle);}),APPEND_OPCODES.add(Op.DidRenderLayout,function(vm,_ref140){var _state=_ref140.op1;var instance=vm.fetchValue(_state),manager=instance.manager,state=instance.state,capabilities=instance.capabilities,bounds=vm.elements().popBlock();void 0!==vm.env.debugRenderTree&&(hasCustomDebugRenderTreeLifecycle(manager)?manager.getDebugCustomRenderTree(instance.definition.state,state,EMPTY_ARGS).reverse().forEach(function(node){var bucket=node.bucket;vm.env.debugRenderTree.didRender(bucket,bounds),vm.updateWith(new DebugRenderTreeDidRenderOpcode(bucket,bounds));}):(vm.env.debugRenderTree.didRender(instance,bounds),vm.updateWith(new DebugRenderTreeDidRenderOpcode(instance,bounds)))),managerHasCapability(manager,capabilities,InternalComponentCapabilities.createInstance)&&(manager.didRenderLayout(state,bounds),vm.env.didCreate(instance),vm.updateWith(new DidUpdateLayoutOpcode(instance,bounds)));}),APPEND_OPCODES.add(Op.CommitComponentTransaction,function(vm){vm.commitCacheGroup();});var UpdateComponentOpcode=/*#__PURE__*/function(){function UpdateComponentOpcode(component,manager,dynamicScope){_classCallCheck(this,UpdateComponentOpcode);this.component=component,this.manager=manager,this.dynamicScope=dynamicScope;}return _createClass(UpdateComponentOpcode,[{key:\"evaluate\",value:function evaluate(_vm){var component=this.component,manager=this.manager,dynamicScope=this.dynamicScope;manager.update(component,dynamicScope);}}]);}();var DidUpdateLayoutOpcode=/*#__PURE__*/function(){function DidUpdateLayoutOpcode(component,bounds){_classCallCheck(this,DidUpdateLayoutOpcode);this.component=component,this.bounds=bounds;}return _createClass(DidUpdateLayoutOpcode,[{key:\"evaluate\",value:function evaluate(vm){var component=this.component,bounds=this.bounds,manager=component.manager,state=component.state;manager.didUpdateLayout(state,bounds),vm.env.didUpdate(component);}}]);}();var DebugRenderTreeUpdateOpcode=/*#__PURE__*/function(){function DebugRenderTreeUpdateOpcode(bucket){_classCallCheck(this,DebugRenderTreeUpdateOpcode);this.bucket=bucket;}return _createClass(DebugRenderTreeUpdateOpcode,[{key:\"evaluate\",value:function evaluate(vm){var _vm$env$debugRenderTr5;(_vm$env$debugRenderTr5=vm.env.debugRenderTree)===null||_vm$env$debugRenderTr5===void 0||_vm$env$debugRenderTr5.update(this.bucket);}}]);}();var DebugRenderTreeDidRenderOpcode=/*#__PURE__*/function(){function DebugRenderTreeDidRenderOpcode(bucket,bounds){_classCallCheck(this,DebugRenderTreeDidRenderOpcode);this.bucket=bucket,this.bounds=bounds;}return _createClass(DebugRenderTreeDidRenderOpcode,[{key:\"evaluate\",value:function evaluate(vm){var _vm$env$debugRenderTr6;(_vm$env$debugRenderTr6=vm.env.debugRenderTree)===null||_vm$env$debugRenderTr6===void 0||_vm$env$debugRenderTr6.didRender(this.bucket,this.bounds);}}]);}();/*\n            The calling convention is:\n\n            * 0-N block arguments at the bottom\n            * 0-N positional arguments next (left-to-right)\n            * 0-N named arguments next\n          */var VMArgumentsImpl=/*#__PURE__*/function(){function VMArgumentsImpl(){_classCallCheck(this,VMArgumentsImpl);_defineProperty(this,\"stack\",null);_defineProperty(this,\"positional\",new PositionalArgumentsImpl());_defineProperty(this,\"named\",new NamedArgumentsImpl());_defineProperty(this,\"blocks\",new BlockArgumentsImpl());}return _createClass(VMArgumentsImpl,[{key:\"empty\",value:function empty(stack){var base=stack[REGISTERS][$sp]+1;return this.named.empty(stack,base),this.positional.empty(stack,base),this.blocks.empty(stack,base),this;}},{key:\"setup\",value:function setup(stack,names,blockNames,positionalCount,atNames){this.stack=stack;/*\n                 | ... | blocks      | positional  | named |\n                 | ... | b0    b1    | p0 p1 p2 p3 | n0 n1 |\n              index | ... | 4/5/6 7/8/9 | 10 11 12 13 | 14 15 |\n                         ^             ^             ^  ^\n                       bbase         pbase       nbase  sp\n              */var named=this.named,namedCount=names.length,namedBase=stack[REGISTERS][$sp]-namedCount+1;named.setup(stack,namedBase,namedCount,names,atNames);var positionalBase=namedBase-positionalCount;this.positional.setup(stack,positionalBase,positionalCount);var blocks=this.blocks,blocksCount=blockNames.length,blocksBase=positionalBase-3*blocksCount;blocks.setup(stack,blocksBase,blocksCount,blockNames);}},{key:\"base\",get:function get(){return this.blocks.base;}},{key:\"length\",get:function get(){return this.positional.length+this.named.length+3*this.blocks.length;}},{key:\"at\",value:function at(pos){return this.positional.at(pos);}},{key:\"realloc\",value:function realloc(offset){var stack=this.stack;if(offset>0&&null!==stack){var positional=this.positional,named=this.named,newBase=positional.base+offset;for(var i=positional.length+named.length-1;i>=0;i--)stack.copy(i+positional.base,i+newBase);positional.base+=offset,named.base+=offset,stack[REGISTERS][$sp]+=offset;}}},{key:\"capture\",value:function capture(){var positional=0===this.positional.length?EMPTY_POSITIONAL:this.positional.capture();return{named:0===this.named.length?EMPTY_NAMED:this.named.capture(),positional:positional};}},{key:\"clear\",value:function clear(){var stack=this.stack,length=this.length;length>0&&null!==stack&&stack.pop(length);}}]);}();var EMPTY_REFERENCES=emptyArray();var PositionalArgumentsImpl=/*#__PURE__*/function(){function PositionalArgumentsImpl(){_classCallCheck(this,PositionalArgumentsImpl);_defineProperty(this,\"base\",0);_defineProperty(this,\"length\",0);_defineProperty(this,\"stack\",null);_defineProperty(this,\"_references\",null);}return _createClass(PositionalArgumentsImpl,[{key:\"empty\",value:function empty(stack,base){this.stack=stack,this.base=base,this.length=0,this._references=EMPTY_REFERENCES;}},{key:\"setup\",value:function setup(stack,base,length){this.stack=stack,this.base=base,this.length=length,this._references=0===length?EMPTY_REFERENCES:null;}},{key:\"at\",value:function at(position){var base=this.base,length=this.length,stack=this.stack;return position<0||position>=length?UNDEFINED_REFERENCE:stack.get(position,base);}},{key:\"capture\",value:function capture(){return this.references;}},{key:\"prepend\",value:function prepend(other){var additions=other.length;if(additions>0){var base=this.base,_length2=this.length,stack=this.stack;this.base=base-=additions,this.length=_length2+additions;for(var i=0;i<additions;i++)stack.set(other[i],i,base);this._references=null;}}},{key:\"references\",get:function get(){var references=this._references;if(!references){var stack=this.stack,base=this.base,_length3=this.length;references=this._references=stack.slice(base,base+_length3);}return references;}}]);}();var NamedArgumentsImpl=/*#__PURE__*/function(){function NamedArgumentsImpl(){_classCallCheck(this,NamedArgumentsImpl);_defineProperty(this,\"base\",0);_defineProperty(this,\"length\",0);_defineProperty(this,\"_references\",null);_defineProperty(this,\"_names\",EMPTY_STRING_ARRAY);_defineProperty(this,\"_atNames\",EMPTY_STRING_ARRAY);}return _createClass(NamedArgumentsImpl,[{key:\"empty\",value:function empty(stack,base){this.stack=stack,this.base=base,this.length=0,this._references=EMPTY_REFERENCES,this._names=EMPTY_STRING_ARRAY,this._atNames=EMPTY_STRING_ARRAY;}},{key:\"setup\",value:function setup(stack,base,length,names,atNames){this.stack=stack,this.base=base,this.length=length,0===length?(this._references=EMPTY_REFERENCES,this._names=EMPTY_STRING_ARRAY,this._atNames=EMPTY_STRING_ARRAY):(this._references=null,atNames?(this._names=null,this._atNames=names):(this._names=names,this._atNames=null));}},{key:\"names\",get:function get(){var names=this._names;return names||(names=this._names=this._atNames.map(this.toSyntheticName)),names;}},{key:\"atNames\",get:function get(){var atNames=this._atNames;return atNames||(atNames=this._atNames=this._names.map(this.toAtName)),atNames;}},{key:\"has\",value:function has(name){return-1!==this.names.indexOf(name);}},{key:\"get\",value:function get(name){var atNames=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var base=this.base,stack=this.stack,idx=(atNames?this.atNames:this.names).indexOf(name);if(-1===idx)return UNDEFINED_REFERENCE;var ref=stack.get(idx,base);return createDebugAliasRef(atNames?name:\"@\".concat(name),ref);}},{key:\"capture\",value:function capture(){var names=this.names,references=this.references,map=dict();var _iterator35=_createForOfIteratorHelper(enumerate(names)),_step35;try{for(_iterator35.s();!(_step35=_iterator35.n()).done;){var _step35$value=_slicedToArray(_step35.value,2),i=_step35$value[0],_name20=_step35$value[1];map[_name20]=createDebugAliasRef(\"@\".concat(_name20),unwrap$1(references[i]));}}catch(err){_iterator35.e(err);}finally{_iterator35.f();}return map;}},{key:\"merge\",value:function merge(other){var keys=Object.keys(other);if(keys.length>0){var names=this.names,_length4=this.length,stack=this.stack,newNames=names.slice();var _iterator36=_createForOfIteratorHelper(keys),_step36;try{for(_iterator36.s();!(_step36=_iterator36.n()).done;){var _name21=_step36.value;-1===newNames.indexOf(_name21)&&(_length4=newNames.push(_name21),stack.push(other[_name21]));}}catch(err){_iterator36.e(err);}finally{_iterator36.f();}this.length=_length4,this._references=null,this._names=newNames,this._atNames=null;}}},{key:\"references\",get:function get(){var references=this._references;if(!references){var base=this.base,_length5=this.length,stack=this.stack;references=this._references=stack.slice(base,base+_length5);}return references;}},{key:\"toSyntheticName\",value:function toSyntheticName(name){return name.slice(1);}},{key:\"toAtName\",value:function toAtName(name){return\"@\".concat(name);}}]);}();function toSymbolName(name){return\"&\".concat(name);}var EMPTY_BLOCK_VALUES=emptyArray();var BlockArgumentsImpl=/*#__PURE__*/function(){function BlockArgumentsImpl(){_classCallCheck(this,BlockArgumentsImpl);_defineProperty(this,\"internalValues\",null);_defineProperty(this,\"_symbolNames\",null);_defineProperty(this,\"internalTag\",null);_defineProperty(this,\"names\",EMPTY_STRING_ARRAY);_defineProperty(this,\"length\",0);_defineProperty(this,\"base\",0);}return _createClass(BlockArgumentsImpl,[{key:\"empty\",value:function empty(stack,base){this.stack=stack,this.names=EMPTY_STRING_ARRAY,this.base=base,this.length=0,this._symbolNames=null,this.internalTag=CONSTANT_TAG,this.internalValues=EMPTY_BLOCK_VALUES;}},{key:\"setup\",value:function setup(stack,base,length,names){this.stack=stack,this.names=names,this.base=base,this.length=length,this._symbolNames=null,0===length?(this.internalTag=CONSTANT_TAG,this.internalValues=EMPTY_BLOCK_VALUES):(this.internalTag=null,this.internalValues=null);}},{key:\"values\",get:function get(){var values=this.internalValues;if(!values){var base=this.base,_length6=this.length,stack=this.stack;values=this.internalValues=stack.slice(base,base+3*_length6);}return values;}},{key:\"has\",value:function has(name){return-1!==this.names.indexOf(name);}},{key:\"get\",value:function get(name){var idx=this.names.indexOf(name);if(-1===idx)return null;var base=this.base,stack=this.stack,table=stack.get(3*idx,base),scope=stack.get(3*idx+1,base),handle=stack.get(3*idx+2,base);return null===handle?null:[handle,scope,table];}},{key:\"capture\",value:function capture(){return new CapturedBlockArgumentsImpl(this.names,this.values);}},{key:\"symbolNames\",get:function get(){var symbolNames=this._symbolNames;return null===symbolNames&&(symbolNames=this._symbolNames=this.names.map(toSymbolName)),symbolNames;}}]);}();var CapturedBlockArgumentsImpl=/*#__PURE__*/function(){function CapturedBlockArgumentsImpl(names,values){_classCallCheck(this,CapturedBlockArgumentsImpl);_defineProperty(this,\"length\",void 0);this.names=names,this.values=values,this.length=names.length;}return _createClass(CapturedBlockArgumentsImpl,[{key:\"has\",value:function has(name){return-1!==this.names.indexOf(name);}},{key:\"get\",value:function get(name){var idx=this.names.indexOf(name);return-1===idx?null:[this.values[3*idx+2],this.values[3*idx+1],this.values[3*idx]];}}]);}();function createCapturedArgs(named,positional){return{named:named,positional:positional};}function reifyNamed(named){var reified=dict();for(var _i17=0,_Object$entries=Object.entries(named);_i17<_Object$entries.length;_i17++){var _Object$entries$_i=_slicedToArray(_Object$entries[_i17],2),key=_Object$entries$_i[0],value=_Object$entries$_i[1];reified[key]=valueForRef(value);}return reified;}function reifyPositional(positional){return positional.map(valueForRef);}function reifyArgs(args){return{named:reifyNamed(args.named),positional:reifyPositional(args.positional)};}var ARGUMENT_ERROR=Symbol(\"ARGUMENT_ERROR\");function isArgumentError(arg){return null!==arg&&\"object\"==_typeof(arg)&&arg[ARGUMENT_ERROR];}function ArgumentErrorImpl(error){return _defineProperty(_defineProperty({},ARGUMENT_ERROR,!0),\"error\",error);}function reifyArgsDebug(args){return{named:function(named){var reified=dict();for(var _i18=0,_Object$entries2=Object.entries(named);_i18<_Object$entries2.length;_i18++){var _Object$entries2$_i=_slicedToArray(_Object$entries2[_i18],2),key=_Object$entries2$_i[0],value=_Object$entries2$_i[1];try{reified[key]=valueForRef(value);}catch(e){reified[key]=ArgumentErrorImpl(e);}}return reified;}(args.named),positional:(positional=args.positional,positional.map(function(p){try{return valueForRef(p);}catch(e){return ArgumentErrorImpl(e);}}))};var positional;}var EMPTY_NAMED=Object.freeze(Object.create(null)),EMPTY_POSITIONAL=EMPTY_REFERENCES,EMPTY_ARGS=createCapturedArgs(EMPTY_NAMED,EMPTY_POSITIONAL);function castToString(value){return\"string\"==typeof value?value:\"function\"!=typeof value.toString?\"\":String(value);}function resolveHelper(definition,ref){var helper,managerOrHelper=getInternalHelperManager(definition,!0);if(null===managerOrHelper?helper=null:(helper=\"function\"==typeof managerOrHelper?managerOrHelper:managerOrHelper.getHelper(definition),debugAssert(managerOrHelper,\"BUG: expected manager or helper\")),null===helper)throw new Error(\"Expected a dynamic helper definition, but received an object or function that did not have a helper manager associated with it. The dynamic invocation was `{{\".concat(ref.debugLabel,\"}}` or `(\").concat(ref.debugLabel,\")`, and the incorrect definition is the value at the path `\").concat(ref.debugLabel,\"`, which was: \").concat(debugToString$1(definition)));return helper;}function isUndefinedReference(input){return debugAssert(Array.isArray(input)||input===UNDEFINED_REFERENCE,\"a reference other than UNDEFINED_REFERENCE is illegal here\"),input===UNDEFINED_REFERENCE;}APPEND_OPCODES.add(Op.Curry,function(vm,_ref142){var type=_ref142.op1,_isStrict=_ref142.op2;var stack=vm.stack,definition=stack.pop(),capturedArgs=stack.pop(),owner=vm.getOwner(),resolver=vm.runtime.resolver,isStrict=!1;// strict check only happens in DEBUG builds, no reason to load it otherwise\nisStrict=vm[CONSTANTS].getValue(decodeHandle(_isStrict)),vm.loadValue($v0,function(type,inner,owner,args,resolver,isStrict){var lastValue,curriedDefinition;return createComputeRef(function(){var value=valueForRef(inner);if(value===lastValue)return curriedDefinition;if(isCurriedType(value,type))curriedDefinition=args?curry(type,value,owner,args):args;else if(type===CurriedTypes.Component&&\"string\"==typeof value&&value){// Only components should enter this path, as helpers and modifiers do not\n// support string based resolution\n{if(isStrict)throw new Error(\"Attempted to resolve a dynamic component with a string definition, `\".concat(value,\"` in a strict mode template. In strict mode, using strings to resolve component definitions is prohibited. You can instead import the component definition and use it directly.\"));if(!expect(resolver,\"BUG: expected resolver for curried component definitions\").lookupComponent(value,owner))throw new Error(\"Attempted to resolve `\".concat(value,\"`, which was expected to be a component, but nothing was found.\"));}curriedDefinition=curry(type,value,owner,args);}else curriedDefinition=isObject(value)?curry(type,value,owner,args):null;return lastValue=value,curriedDefinition;});}(type,definition,owner,capturedArgs,resolver,isStrict));}),APPEND_OPCODES.add(Op.DynamicHelper,function(vm){var helperRef,stack=vm.stack,ref=stack.pop(),args=stack.pop().capture(),initialOwner=vm.getOwner(),helperInstanceRef=createComputeRef(function(){void 0!==helperRef&&_destroy(helperRef);var definition=valueForRef(ref);if(isCurriedType(definition,CurriedTypes.Helper)){var _resolveCurriedValue3=resolveCurriedValue(definition),resolvedDef=_resolveCurriedValue3.definition,owner=_resolveCurriedValue3.owner,positional=_resolveCurriedValue3.positional,named=_resolveCurriedValue3.named,_helper7=resolveHelper(resolvedDef,ref);void 0!==named&&(args.named=assign.apply(void 0,[{}].concat(_toConsumableArray(named),[args.named]))),void 0!==positional&&(args.positional=positional.concat(args.positional)),helperRef=_helper7(args,owner),associateDestroyableChild(helperInstanceRef,helperRef);}else if(isObject(definition)){var _helper8=resolveHelper(definition,ref);helperRef=_helper8(args,initialOwner),_hasDestroyableChildren(helperRef)&&associateDestroyableChild(helperInstanceRef,helperRef);}else helperRef=UNDEFINED_REFERENCE;}),helperValueRef=createComputeRef(function(){return valueForRef(helperInstanceRef),valueForRef(helperRef);});vm.associateDestroyable(helperInstanceRef),vm.loadValue($v0,helperValueRef);}),APPEND_OPCODES.add(Op.Helper,function(vm,_ref143){var handle=_ref143.op1;var stack=vm.stack,value=vm[CONSTANTS].getValue(handle)(stack.pop().capture(),vm.getOwner(),vm.dynamicScope());_hasDestroyableChildren(value)&&vm.associateDestroyable(value),vm.loadValue($v0,value);}),APPEND_OPCODES.add(Op.GetVariable,function(vm,_ref144){var symbol=_ref144.op1;var expr=vm.referenceForSymbol(symbol);vm.stack.push(expr);}),APPEND_OPCODES.add(Op.SetVariable,function(vm,_ref145){var symbol=_ref145.op1;var expr=vm.stack.pop();vm.scope().bindSymbol(symbol,expr);}),APPEND_OPCODES.add(Op.SetBlock,function(vm,_ref146){var symbol=_ref146.op1;var handle=vm.stack.pop(),scope=vm.stack.pop(),table=vm.stack.pop();vm.scope().bindBlock(symbol,[handle,scope,table]);}),APPEND_OPCODES.add(Op.ResolveMaybeLocal,function(vm,_ref147){var _name=_ref147.op1;var name=vm[CONSTANTS].getValue(_name),ref=vm.scope().getPartialMap()[name];void 0===ref&&(ref=childRefFor(vm.getSelf(),name)),vm.stack.push(ref);}),APPEND_OPCODES.add(Op.RootScope,function(vm,_ref148){var symbols=_ref148.op1;vm.pushRootScope(symbols,vm.getOwner());}),APPEND_OPCODES.add(Op.GetProperty,function(vm,_ref149){var _key=_ref149.op1;var key=vm[CONSTANTS].getValue(_key),expr=vm.stack.pop();vm.stack.push(childRefFor(expr,key));}),APPEND_OPCODES.add(Op.GetBlock,function(vm,_ref150){var _block=_ref150.op1;var stack=vm.stack,block=vm.scope().getBlock(_block);stack.push(block);}),APPEND_OPCODES.add(Op.SpreadBlock,function(vm){var stack=vm.stack,block=stack.pop();if(block&&!isUndefinedReference(block)){var _block4=_slicedToArray(block,3),handleOrCompilable=_block4[0],scope=_block4[1],table=_block4[2];stack.push(table),stack.push(scope),stack.push(handleOrCompilable);}else stack.push(null),stack.push(null),stack.push(null);}),APPEND_OPCODES.add(Op.HasBlock,function(vm){var stack=vm.stack,block=stack.pop();block&&!isUndefinedReference(block)?stack.push(TRUE_REFERENCE):stack.push(FALSE_REFERENCE);}),APPEND_OPCODES.add(Op.HasBlockParams,function(vm){// FIXME(mmun): should only need to push the symbol table\nvm.stack.pop(),vm.stack.pop();var table=vm.stack.pop(),hasBlockParams=table&&table.parameters.length;vm.stack.push(hasBlockParams?TRUE_REFERENCE:FALSE_REFERENCE);}),APPEND_OPCODES.add(Op.Concat,function(vm,_ref151){var count=_ref151.op1;var out=new Array(count);for(var i=count;i>0;i--)out[i-1]=vm.stack.pop();var partsRefs;vm.stack.push((partsRefs=out,createComputeRef(function(){var parts=[];var _iterator37=_createForOfIteratorHelper(partsRefs),_step37;try{for(_iterator37.s();!(_step37=_iterator37.n()).done;){var ref=_step37.value;var value=valueForRef(ref);null!=value&&parts.push(castToString(value));}}catch(err){_iterator37.e(err);}finally{_iterator37.f();}return parts.length>0?parts.join(\"\"):null;})));}),APPEND_OPCODES.add(Op.IfInline,function(vm){var condition=vm.stack.pop(),truthy=vm.stack.pop(),falsy=vm.stack.pop();vm.stack.push(createComputeRef(function(){return!0===toBool$1(valueForRef(condition))?valueForRef(truthy):valueForRef(falsy);}));}),APPEND_OPCODES.add(Op.Not,function(vm){var ref=vm.stack.pop();vm.stack.push(createComputeRef(function(){return!toBool$1(valueForRef(ref));}));}),APPEND_OPCODES.add(Op.GetDynamicVar,function(vm){var scope=vm.dynamicScope(),stack=vm.stack,nameRef=stack.pop();stack.push(createComputeRef(function(){var name=String(valueForRef(nameRef));return valueForRef(scope.get(name));}));}),APPEND_OPCODES.add(Op.Log,function(vm){var _vm$stack$pop$capture=vm.stack.pop().capture(),positional=_vm$stack$pop$capture.positional;vm.loadValue($v0,createComputeRef(function(){var _console2;// eslint-disable-next-line no-console\n(_console2=console).log.apply(_console2,_toConsumableArray(reifyPositional(positional)));}));});var DynamicTextContent=/*#__PURE__*/function(){function DynamicTextContent(node,reference,lastValue){_classCallCheck(this,DynamicTextContent);this.node=node,this.reference=reference,this.lastValue=lastValue;}return _createClass(DynamicTextContent,[{key:\"evaluate\",value:function evaluate(){var normalized,value=valueForRef(this.reference),lastValue=this.lastValue;value!==lastValue&&(normalized=isEmpty$2(value)?\"\":isString(value)?value:String(value),normalized!==lastValue)&&(this.node.nodeValue=this.lastValue=normalized);}}]);}();function toContentType(value){return function(value){return isString(value)||isEmpty$2(value)||\"boolean\"==typeof value||\"number\"==typeof value;}(value)?ContentType.String:isCurriedType(value,CurriedTypes.Component)||hasInternalComponentManager(value)?ContentType.Component:isCurriedType(value,CurriedTypes.Helper)||hasInternalHelperManager(value)?ContentType.Helper:isSafeString(value)?ContentType.SafeString:function(value){return isNode(value)&&11===value.nodeType;}(value)?ContentType.Fragment:isNode(value)?ContentType.Node:ContentType.String;}function toDynamicContentType(value){if(!isObject(value))return ContentType.String;if(isCurriedType(value,CurriedTypes.Component)||hasInternalComponentManager(value))return ContentType.Component;if(!isCurriedType(value,CurriedTypes.Helper)&&!hasInternalHelperManager(value))throw new Error(\"Attempted use a dynamic value as a component or helper, but that value did not have an associated component or helper manager. The value was: \".concat(value));return ContentType.Helper;}function debugCallback(context,get){// eslint-disable-next-line no-console\nconsole.info(\"Use `context`, and `get(<path>)` to debug this template.\"),get(\"this\");}APPEND_OPCODES.add(Op.ContentType,function(vm){var reference=vm.stack.peek();vm.stack.push(toContentType(valueForRef(reference))),isConstRef(reference)||vm.updateWith(new AssertFilter(reference,toContentType));}),APPEND_OPCODES.add(Op.DynamicContentType,function(vm){var reference=vm.stack.peek();vm.stack.push(toDynamicContentType(valueForRef(reference))),isConstRef(reference)||vm.updateWith(new AssertFilter(reference,toDynamicContentType));}),APPEND_OPCODES.add(Op.AppendHTML,function(vm){var reference=vm.stack.pop(),rawValue=valueForRef(reference),value=isEmpty$2(rawValue)?\"\":String(rawValue);vm.elements().appendDynamicHTML(value);}),APPEND_OPCODES.add(Op.AppendSafeHTML,function(vm){var reference=vm.stack.pop(),rawValue=valueForRef(reference).toHTML(),value=isEmpty$2(rawValue)?\"\":rawValue;vm.elements().appendDynamicHTML(value);}),APPEND_OPCODES.add(Op.AppendText,function(vm){var reference=vm.stack.pop(),rawValue=valueForRef(reference),value=isEmpty$2(rawValue)?\"\":String(rawValue),node=vm.elements().appendDynamicText(value);isConstRef(reference)||vm.updateWith(new DynamicTextContent(node,reference,value));}),APPEND_OPCODES.add(Op.AppendDocumentFragment,function(vm){var reference=vm.stack.pop(),value=valueForRef(reference);vm.elements().appendDynamicFragment(value);}),APPEND_OPCODES.add(Op.AppendNode,function(vm){var reference=vm.stack.pop(),value=valueForRef(reference);vm.elements().appendDynamicNode(value);});var callback=debugCallback;// For testing purposes\nfunction setDebuggerCallback(cb){callback=cb;}function resetDebuggerCallback(){callback=debugCallback;}var ScopeInspector=/*#__PURE__*/function(){function ScopeInspector(scope,symbols,debugInfo){_classCallCheck(this,ScopeInspector);_defineProperty(this,\"locals\",dict());this.scope=scope;var _iterator38=_createForOfIteratorHelper(debugInfo),_step38;try{for(_iterator38.s();!(_step38=_iterator38.n()).done;){var slot=_step38.value;var _name22=unwrap$1(symbols[slot-1]),ref=scope.getSymbol(slot);this.locals[_name22]=ref;}}catch(err){_iterator38.e(err);}finally{_iterator38.f();}}return _createClass(ScopeInspector,[{key:\"get\",value:function get(path){var ref,scope=this.scope,locals=this.locals,parts=path.split(\".\"),_path$split=path.split(\".\"),_path$split2=_toArray(_path$split),head=_path$split2[0],tail=_path$split2.slice(1),evalScope=scope.getEvalScope();return\"this\"===head?ref=scope.getSelf():locals[head]?ref=unwrap$1(locals[head]):0===head.indexOf(\"@\")&&evalScope[head]?ref=evalScope[head]:(ref=this.scope.getSelf(),tail=parts),tail.reduce(function(r,part){return childRefFor(r,part);},ref);}}]);}();APPEND_OPCODES.add(Op.Debugger,function(vm,_ref152){var _symbols=_ref152.op1,_debugInfo=_ref152.op2;var symbols=vm[CONSTANTS].getArray(_symbols),debugInfo=vm[CONSTANTS].getArray(decodeHandle(_debugInfo)),inspector=new ScopeInspector(vm.scope(),symbols,debugInfo);callback(valueForRef(vm.getSelf()),function(path){return valueForRef(inspector.get(path));});}),APPEND_OPCODES.add(Op.EnterList,function(vm,_ref153){var relativeStart=_ref153.op1,elseTarget=_ref153.op2;var stack=vm.stack,listRef=stack.pop(),keyRef=stack.pop(),keyValue=valueForRef(keyRef),key=null===keyValue?\"@identity\":String(keyValue),iteratorRef=createIteratorRef(listRef,key),iterator=valueForRef(iteratorRef);vm.updateWith(new AssertFilter(iteratorRef,function(iterator){return iterator.isEmpty();})),!0===iterator.isEmpty()?// TODO: Fix this offset, should be accurate\nvm.goto(elseTarget+1):(vm.enterList(iteratorRef,relativeStart),vm.stack.push(iterator));}),APPEND_OPCODES.add(Op.ExitList,function(vm){vm.exitList();}),APPEND_OPCODES.add(Op.Iterate,function(vm,_ref154){var breaks=_ref154.op1;var item=vm.stack.peek().next();null!==item?vm.registerItem(vm.enterItem(item)):vm.goto(breaks);});var CAPABILITIES$3={dynamicLayout:!1,dynamicTag:!1,prepareArgs:!1,createArgs:!1,attributeHook:!1,elementHook:!1,createCaller:!1,dynamicScope:!1,updateHook:!1,createInstance:!1,wrapped:!1,willDestroy:!1,hasSubOwner:!1};var TemplateOnlyComponentManager=/*#__PURE__*/function(){function TemplateOnlyComponentManager(){_classCallCheck(this,TemplateOnlyComponentManager);}return _createClass(TemplateOnlyComponentManager,[{key:\"getCapabilities\",value:function getCapabilities(){return CAPABILITIES$3;}},{key:\"getDebugName\",value:function getDebugName(_ref155){var name=_ref155.name;return name;}},{key:\"getSelf\",value:function getSelf(){return NULL_REFERENCE;}},{key:\"getDestroyable\",value:function getDestroyable(){return null;}}]);}();var TEMPLATE_ONLY_COMPONENT_MANAGER=new TemplateOnlyComponentManager();// This is only exported for types, don't use this class directly\nvar TemplateOnlyComponentDefinition=/*#__PURE__*/function(){function TemplateOnlyComponentDefinition(){var moduleName=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"@glimmer/component/template-only\";var name=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"(unknown template-only component)\";_classCallCheck(this,TemplateOnlyComponentDefinition);this.moduleName=moduleName,this.name=name;}return _createClass(TemplateOnlyComponentDefinition,[{key:\"toString\",value:function toString(){return this.moduleName;}}]);}();/**\n            This utility function is used to declare a given component has no backing class. When the rendering engine detects this it\n            is able to perform a number of optimizations. Templates that are associated with `templateOnly()` will be rendered _as is_\n            without adding a wrapping `<div>` (or any of the other element customization behaviors of [@ember/component](/ember/release/classes/Component)).\n            Specifically, this means that the template will be rendered as \"outer HTML\".\n\n            In general, this method will be used by build time tooling and would not be directly written in an application. However,\n            at times it may be useful to use directly to leverage the \"outer HTML\" semantics mentioned above. For example, if an addon would like\n            to use these semantics for its templates but cannot be certain it will only be consumed by applications that have enabled the\n            `template-only-glimmer-components` optional feature.\n\n            @example\n\n            ```js\n            import { templateOnlyComponent } from '@glimmer/runtime';\n\n            export default templateOnlyComponent();\n            ```\n\n            @public\n            @method templateOnly\n            @param {String} moduleName the module name that the template only component represents, this will be used for debugging purposes\n            @category EMBER_GLIMMER_SET_COMPONENT_TEMPLATE\n          */function templateOnlyComponent(moduleName,name){return new TemplateOnlyComponentDefinition(moduleName,name);}// http://www.w3.org/TR/html/syntax.html#html-integration-point\nsetInternalComponentManager(TEMPLATE_ONLY_COMPONENT_MANAGER,TemplateOnlyComponentDefinition.prototype);var SVG_INTEGRATION_POINTS={foreignObject:1,desc:1,title:1},BLACKLIST_TABLE=Object.create(null);// http://www.w3.org/TR/html/syntax.html#adjust-svg-attributes\n// TODO: Adjust SVG attributes\n// http://www.w3.org/TR/html/syntax.html#parsing-main-inforeign\n// TODO: Adjust SVG elements\n// http://www.w3.org/TR/html/syntax.html#parsing-main-inforeign\nvar DOMOperations=/*#__PURE__*/function(){// Set by this.setupUselessElement() in constructor\nfunction DOMOperations(document){_classCallCheck(this,DOMOperations);this.document=document,this.setupUselessElement();}// split into separate method so that NodeDOMTreeConstruction\n// can override it.\nreturn _createClass(DOMOperations,[{key:\"setupUselessElement\",value:function setupUselessElement(){this.uselessElement=this.document.createElement(\"div\");}},{key:\"createElement\",value:function createElement(tag,context){var isElementInSVGNamespace,isHTMLIntegrationPoint;if(context?(isElementInSVGNamespace=context.namespaceURI===NS_SVG||\"svg\"===tag,isHTMLIntegrationPoint=!!SVG_INTEGRATION_POINTS[context.tagName]):(isElementInSVGNamespace=\"svg\"===tag,isHTMLIntegrationPoint=!1),isElementInSVGNamespace&&!isHTMLIntegrationPoint){// FIXME: This does not properly handle <font> with color, face, or\n// size attributes, which is also disallowed by the spec. We should fix\n// this.\nif(BLACKLIST_TABLE[tag])throw new Error(\"Cannot create a \".concat(tag,\" inside an SVG context\"));return this.document.createElementNS(NS_SVG,tag);}return this.document.createElement(tag);}},{key:\"insertBefore\",value:function insertBefore(parent,node,reference){parent.insertBefore(node,reference);}},{key:\"insertHTMLBefore\",value:function insertHTMLBefore(parent,nextSibling,html){if(\"\"===html){var comment=this.createComment(\"\");return parent.insertBefore(comment,nextSibling),new ConcreteBounds(parent,comment,comment);}var prev=nextSibling?nextSibling.previousSibling:parent.lastChild;var last;if(null===nextSibling)parent.insertAdjacentHTML(INSERT_BEFORE_END,html),last=expect(parent.lastChild,\"bug in insertAdjacentHTML?\");else if(nextSibling instanceof HTMLElement)nextSibling.insertAdjacentHTML(\"beforebegin\",html),last=expect(nextSibling.previousSibling,\"bug in insertAdjacentHTML?\");else{// Non-element nodes do not support insertAdjacentHTML, so add an\n// element and call it on that element. Then remove the element.\n// This also protects Edge, IE and Firefox w/o the inspector open\n// from merging adjacent text nodes. See ./compat/text-node-merging-fix.ts\nvar uselessElement=this.uselessElement;parent.insertBefore(uselessElement,nextSibling),uselessElement.insertAdjacentHTML(INSERT_BEFORE_BEGIN,html),last=expect(uselessElement.previousSibling,\"bug in insertAdjacentHTML?\"),parent.removeChild(uselessElement);}var first=expect(prev?prev.nextSibling:parent.firstChild,\"bug in insertAdjacentHTML?\");return new ConcreteBounds(parent,first,last);}},{key:\"createTextNode\",value:function createTextNode(text){return this.document.createTextNode(text);}},{key:\"createComment\",value:function createComment(data){return this.document.createComment(data);}}]);}();// Patch:    insertAdjacentHTML on SVG Fix\n// Browsers: Safari, IE, Edge, Firefox ~33-34\n// Reason:   insertAdjacentHTML does not exist on SVG elements in Safari. It is\n//           present but throws an exception on IE and Edge. Old versions of\n//           Firefox create nodes in the incorrect namespace.\n// Fix:      Since IE and Edge silently fail to create SVG nodes using\n//           innerHTML, and because Firefox may create nodes in the incorrect\n//           namespace using innerHTML on SVG elements, an HTML-string wrapping\n//           approach is used. A pre/post SVG tag is added to the string, then\n//           that whole string is added to a div. The created nodes are plucked\n//           out and applied to the target location on DOM.\nfunction applySVGInnerHTMLFix(document,DOMClass,svgNamespace){if(!document)return DOMClass;if(!function(document,svgNamespace){var svg=document.createElementNS(svgNamespace,\"svg\");try{svg.insertAdjacentHTML(INSERT_BEFORE_END,\"<circle></circle>\");}catch(e){// IE, Edge: Will throw, insertAdjacentHTML is unsupported on SVG\n// Safari: Will throw, insertAdjacentHTML is not present on SVG\n}finally{// FF: Old versions will create a node in the wrong namespace\nreturn 1!==svg.childNodes.length||castToBrowser(unwrap$1(svg.firstChild),\"SVG\").namespaceURI!==NS_SVG;// eslint-disable-next-line no-unsafe-finally\n}}// Patch:    Adjacent text node merging fix\n// Browsers: IE, Edge, Firefox w/o inspector open\n// Reason:   These browsers will merge adjacent text nodes. For example given\n//           <div>Hello</div> with div.insertAdjacentHTML(' world') browsers\n//           with proper behavior will populate div.childNodes with two items.\n//           These browsers will populate it with one merged node instead.\n// Fix:      Add these nodes to a wrapper element, then iterate the childNodes\n//           of that wrapper and move the nodes to their target location. Note\n//           that potential SVG bugs will have been handled before this fix.\n//           Note that this fix must only apply to the previous text node, as\n//           the base implementation of `insertHTMLBefore` already handles\n//           following text nodes correctly.\n(document,svgNamespace))return DOMClass;var div=document.createElement(\"div\");return/*#__PURE__*/function(_DOMClass){function _class2(){_classCallCheck(this,_class2);return _callSuper(this,_class2,arguments);}_inherits(_class2,_DOMClass);return _createClass(_class2,[{key:\"insertHTMLBefore\",value:function insertHTMLBefore(parent,nextSibling,html){return\"\"===html||parent.namespaceURI!==svgNamespace?_superPropGet(_class2,\"insertHTMLBefore\",this,3)([parent,nextSibling,html]):function(parent,div,html,reference){var source;// This is important, because descendants of the <foreignObject> integration\n// point are parsed in the HTML namespace\nif(debugAssert(\"\"!==html,\"html cannot be empty\"),\"FOREIGNOBJECT\"===parent.tagName.toUpperCase()){// IE, Edge: also do not correctly support using `innerHTML` on SVG\n// namespaced elements. So here a wrapper is used.\nvar wrappedHtml=\"<svg><foreignObject>\"+html+\"</foreignObject></svg>\";clearElement(div),div.insertAdjacentHTML(INSERT_AFTER_BEGIN,wrappedHtml),source=div.firstChild.firstChild;}else{// IE, Edge: also do not correctly support using `innerHTML` on SVG\n// namespaced elements. So here a wrapper is used.\nvar _wrappedHtml=\"<svg>\"+html+\"</svg>\";clearElement(div),div.insertAdjacentHTML(INSERT_AFTER_BEGIN,_wrappedHtml),source=div.firstChild;}return function(source,target,nextSibling){var first=expect(source.firstChild,\"source is empty\");var last=first,current=first;for(;current;){var _next4=current.nextSibling;target.insertBefore(current,nextSibling),last=current,current=_next4;}return new ConcreteBounds(target,first,last);}(source,parent,reference);}(parent,div,html,nextSibling);}}]);}(DOMClass);}function applyTextNodeMergingFix(document,DOMClass){return document&&function(document){var mergingTextDiv=document.createElement(\"div\");return mergingTextDiv.appendChild(document.createTextNode(\"first\")),mergingTextDiv.insertAdjacentHTML(INSERT_BEFORE_END,\"second\"),2!==mergingTextDiv.childNodes.length;}(document)?/*#__PURE__*/function(_DOMClass2){function _class3(document){var _this14;_classCallCheck(this,_class3);_this14=_callSuper(this,_class3,[document]),_defineProperty(_assertThisInitialized(_this14),\"uselessComment\",void 0),_this14.uselessComment=document.createComment(\"\");return _this14;}_inherits(_class3,_DOMClass2);return _createClass(_class3,[{key:\"insertHTMLBefore\",value:function insertHTMLBefore(parent,nextSibling,html){if(\"\"===html)return _superPropGet(_class3,\"insertHTMLBefore\",this,3)([parent,nextSibling,html]);var didSetUselessComment=!1;var nextPrevious=nextSibling?nextSibling.previousSibling:parent.lastChild;nextPrevious&&nextPrevious instanceof Text&&(didSetUselessComment=!0,parent.insertBefore(this.uselessComment,nextSibling));var bounds=_superPropGet(_class3,\"insertHTMLBefore\",this,3)([parent,nextSibling,html]);return didSetUselessComment&&parent.removeChild(this.uselessComment),bounds;}}]);}(DOMClass):DOMClass;}var doc$1=\"undefined\"==typeof document?null:castToSimple(document);var appliedTreeConstruction=/*#__PURE__*/function(_DOMOperations){function appliedTreeConstruction(){_classCallCheck(this,appliedTreeConstruction);return _callSuper(this,appliedTreeConstruction,arguments);}_inherits(appliedTreeConstruction,_DOMOperations);return _createClass(appliedTreeConstruction,[{key:\"createElementNS\",value:function createElementNS(namespace,tag){return this.document.createElementNS(namespace,tag);}},{key:\"setAttribute\",value:function setAttribute(element,name,value){var namespace=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;namespace?element.setAttributeNS(namespace,name,value):element.setAttribute(name,value);}}]);}(DOMOperations);appliedTreeConstruction=applyTextNodeMergingFix(doc$1,appliedTreeConstruction),appliedTreeConstruction=applySVGInnerHTMLFix(doc$1,appliedTreeConstruction,NS_SVG);var DOMTreeConstruction=appliedTreeConstruction;[\"b\",\"big\",\"blockquote\",\"body\",\"br\",\"center\",\"code\",\"dd\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"hr\",\"i\",\"img\",\"li\",\"listing\",\"main\",\"meta\",\"nobr\",\"ol\",\"p\",\"pre\",\"ruby\",\"s\",\"small\",\"span\",\"strong\",\"strike\",\"sub\",\"sup\",\"table\",\"tt\",\"u\",\"ul\",\"var\"].forEach(function(tag){return BLACKLIST_TABLE[tag]=1;});var WHITESPACE=/[\\t-\\r \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]/,doc=\"undefined\"==typeof document?null:castToSimple(document);function isWhitespace(string){return WHITESPACE.test(string);}var DOMChangesImpl=/*#__PURE__*/function(_DOMOperations2){function DOMChangesImpl(document){var _this15;_classCallCheck(this,DOMChangesImpl);_this15=_callSuper(this,DOMChangesImpl,[document]),_defineProperty(_assertThisInitialized(_this15),\"namespace\",void 0),_this15.document=document,_this15.namespace=null;return _this15;}_inherits(DOMChangesImpl,_DOMOperations2);return _createClass(DOMChangesImpl,[{key:\"setAttribute\",value:function setAttribute(element,name,value){element.setAttribute(name,value);}},{key:\"removeAttribute\",value:function removeAttribute(element,name){element.removeAttribute(name);}},{key:\"insertAfter\",value:function insertAfter(element,node,reference){this.insertBefore(element,node,reference.nextSibling);}}]);}(DOMOperations);var helper$3=DOMChangesImpl;helper$3=applyTextNodeMergingFix(doc,helper$3),helper$3=applySVGInnerHTMLFix(doc,helper$3,NS_SVG);var DOMChanges=helper$3;var GUID=0;var Ref=/*#__PURE__*/function(){function Ref(value){_classCallCheck(this,Ref);_defineProperty(this,\"id\",GUID++);_defineProperty(this,\"value\",void 0);this.value=value;}return _createClass(Ref,[{key:\"get\",value:function get(){return this.value;}},{key:\"release\",value:function release(){if(null===this.value)throw new Error(\"BUG: double release?\");this.value=null;}},{key:\"toString\",value:function toString(){var label=\"Ref \".concat(this.id);if(null===this.value)return\"\".concat(label,\" (released)\");try{return\"\".concat(label,\": \").concat(this.value);}catch(_unused){return label;}}}]);}();var DebugRenderTreeImpl=/*#__PURE__*/function(){function DebugRenderTreeImpl(){_classCallCheck(this,DebugRenderTreeImpl);_defineProperty(this,\"stack\",new StackImpl());_defineProperty(this,\"refs\",new WeakMap());_defineProperty(this,\"roots\",new Set());_defineProperty(this,\"nodes\",new WeakMap());}return _createClass(DebugRenderTreeImpl,[{key:\"begin\",value:function begin(){this.reset();}},{key:\"create\",value:function create(state,node){var internalNode=assign({},node,{bounds:null,refs:new Set()});this.nodes.set(state,internalNode),this.appendChild(internalNode,state),this.enter(state);}},{key:\"update\",value:function update(state){this.enter(state);}},{key:\"didRender\",value:function didRender(state,bounds){if(this.stack.current!==state)throw new Error(\"BUG: expecting \".concat(this.stack.current,\", got \").concat(state));this.nodeFor(state).bounds=bounds,this.exit();}},{key:\"willDestroy\",value:function willDestroy(state){expect(this.refs.get(state),\"BUG: missing ref\").release();}},{key:\"commit\",value:function commit(){this.reset();}},{key:\"capture\",value:function capture(){return this.captureRefs(this.roots);}},{key:\"reset\",value:function reset(){if(0!==this.stack.size){// We probably encountered an error during the rendering loop. This will\n// likely trigger undefined behavior and memory leaks as the error left\n// things in an inconsistent state. It is recommended that the user\n// refresh the page.\n// TODO: We could warn here? But this happens all the time in our tests?\n// Clean up the root reference to prevent errors from happening if we\n// attempt to capture the render tree (Ember Inspector may do this)\nvar root=expect(this.stack.toArray()[0],\"expected root state when resetting render tree\"),ref=this.refs.get(root);for(void 0!==ref&&this.roots.delete(ref);!this.stack.isEmpty();)this.stack.pop();}}},{key:\"enter\",value:function enter(state){this.stack.push(state);}},{key:\"exit\",value:function exit(){if(0===this.stack.size)throw new Error(\"BUG: unbalanced pop\");this.stack.pop();}},{key:\"nodeFor\",value:function nodeFor(state){return expect(this.nodes.get(state),\"BUG: missing node\");}},{key:\"appendChild\",value:function appendChild(node,state){if(this.refs.has(state))throw new Error(\"BUG: child already appended\");var parent=this.stack.current,ref=new Ref(state);if(this.refs.set(state,ref),parent){var parentNode=this.nodeFor(parent);parentNode.refs.add(ref),node.parent=parentNode;}else this.roots.add(ref);}},{key:\"captureRefs\",value:function captureRefs(refs){var _this16=this;var captured=[];return refs.forEach(function(ref){var state=ref.get();state?captured.push(_this16.captureNode(\"render-node:\".concat(ref.id),state)):refs.delete(ref);}),captured;}},{key:\"captureNode\",value:function captureNode(id,state){var node=this.nodeFor(state),type=node.type,name=node.name,args=node.args,instance=node.instance,refs=node.refs,template=this.captureTemplate(node),bounds=this.captureBounds(node),children=this.captureRefs(refs);return{id:id,type:type,name:name,args:reifyArgsDebug(args),instance:instance,template:template,bounds:bounds,children:children};}},{key:\"captureTemplate\",value:function captureTemplate(_ref156){var template=_ref156.template;return template||null;}},{key:\"captureBounds\",value:function captureBounds(node){var bounds=expect(node.bounds,\"BUG: missing bounds\");return{parentElement:bounds.parentElement(),firstNode:bounds.firstNode(),lastNode:bounds.lastNode()};}}]);}();var TRANSACTION=Symbol(\"TRANSACTION\");var TransactionImpl=/*#__PURE__*/function(){function TransactionImpl(){_classCallCheck(this,TransactionImpl);_defineProperty(this,\"scheduledInstallModifiers\",[]);_defineProperty(this,\"scheduledUpdateModifiers\",[]);_defineProperty(this,\"createdComponents\",[]);_defineProperty(this,\"updatedComponents\",[]);}return _createClass(TransactionImpl,[{key:\"didCreate\",value:function didCreate(component){this.createdComponents.push(component);}},{key:\"didUpdate\",value:function didUpdate(component){this.updatedComponents.push(component);}},{key:\"scheduleInstallModifier\",value:function scheduleInstallModifier(modifier){this.scheduledInstallModifiers.push(modifier);}},{key:\"scheduleUpdateModifier\",value:function scheduleUpdateModifier(modifier){this.scheduledUpdateModifiers.push(modifier);}},{key:\"commit\",value:function commit(){var createdComponents=this.createdComponents,updatedComponents=this.updatedComponents;var _iterator39=_createForOfIteratorHelper(createdComponents),_step39;try{for(_iterator39.s();!(_step39=_iterator39.n()).done;){var _step39$value=_step39.value,manager=_step39$value.manager,state=_step39$value.state;manager.didCreate(state);}}catch(err){_iterator39.e(err);}finally{_iterator39.f();}var _iterator40=_createForOfIteratorHelper(updatedComponents),_step40;try{for(_iterator40.s();!(_step40=_iterator40.n()).done;){var _step40$value=_step40.value,_manager4=_step40$value.manager,_state2=_step40$value.state;_manager4.didUpdate(_state2);}}catch(err){_iterator40.e(err);}finally{_iterator40.f();}var scheduledInstallModifiers=this.scheduledInstallModifiers,scheduledUpdateModifiers=this.scheduledUpdateModifiers;var _iterator41=_createForOfIteratorHelper(scheduledInstallModifiers),_step41;try{var _loop=function _loop(){var _step41$value=_step41.value,manager=_step41$value.manager,state=_step41$value.state,definition=_step41$value.definition;var modifierTag=manager.getTag(state);if(null!==modifierTag){var tag=track(function(){return manager.install(state);},\"- While rendering:\\n  (instance of a `\".concat(definition.resolvedName||manager.getDebugName(definition.state),\"` modifier)\"));UPDATE_TAG(modifierTag,tag);}else manager.install(state);};for(_iterator41.s();!(_step41=_iterator41.n()).done;){_loop();}}catch(err){_iterator41.e(err);}finally{_iterator41.f();}var _iterator42=_createForOfIteratorHelper(scheduledUpdateModifiers),_step42;try{var _loop2=function _loop2(){var _step42$value=_step42.value,manager=_step42$value.manager,state=_step42$value.state,definition=_step42$value.definition;var modifierTag=manager.getTag(state);if(null!==modifierTag){var tag=track(function(){return manager.update(state);},\"- While rendering:\\n  (instance of a `\".concat(definition.resolvedName||manager.getDebugName(definition.state),\"` modifier)\"));UPDATE_TAG(modifierTag,tag);}else manager.update(state);};for(_iterator42.s();!(_step42=_iterator42.n()).done;){_loop2();}}catch(err){_iterator42.e(err);}finally{_iterator42.f();}}}]);}();var EnvironmentImpl=/*#__PURE__*/function(){function EnvironmentImpl(options,delegate){_classCallCheck(this,EnvironmentImpl);_defineProperty(this,TRANSACTION,null);_defineProperty(this,\"updateOperations\",void 0);// Delegate methods and values\n_defineProperty(this,\"isInteractive\",void 0);_defineProperty(this,\"isArgumentCaptureError\",void 0);_defineProperty(this,\"debugRenderTree\",void 0);if(this.delegate=delegate,this.isInteractive=delegate.isInteractive,this.debugRenderTree=this.delegate.enableDebugTooling?new DebugRenderTreeImpl():void 0,this.isArgumentCaptureError=this.delegate.enableDebugTooling?isArgumentError:void 0,options.appendOperations)this.appendOperations=options.appendOperations,this.updateOperations=options.updateOperations;else if(options.document)this.appendOperations=new DOMTreeConstruction(options.document),this.updateOperations=new DOMChangesImpl(options.document);else throw new Error(\"you must pass document or appendOperations to a new runtime\");}return _createClass(EnvironmentImpl,[{key:\"getAppendOperations\",value:function getAppendOperations(){return this.appendOperations;}},{key:\"getDOM\",value:function getDOM(){return expect(this.updateOperations,\"Attempted to get DOM updateOperations, but they were not provided by the environment. You may be attempting to rerender in an environment which does not support rerendering, such as SSR.\");}},{key:\"begin\",value:function begin(){var _this$debugRenderTree;debugAssert(!this[TRANSACTION],\"A glimmer transaction was begun, but one already exists. You may have a nested transaction, possibly caused by an earlier runtime exception while rendering. Please check your console for the stack trace of any prior exceptions.\"),(_this$debugRenderTree=this.debugRenderTree)!==null&&_this$debugRenderTree!==void 0&&_this$debugRenderTree.begin(),this[TRANSACTION]=new TransactionImpl();}},{key:\"transaction\",get:function get(){return expect(this[TRANSACTION],\"must be in a transaction\");}},{key:\"didCreate\",value:function didCreate(component){this.transaction.didCreate(component);}},{key:\"didUpdate\",value:function didUpdate(component){this.transaction.didUpdate(component);}},{key:\"scheduleInstallModifier\",value:function scheduleInstallModifier(modifier){this.isInteractive&&this.transaction.scheduleInstallModifier(modifier);}},{key:\"scheduleUpdateModifier\",value:function scheduleUpdateModifier(modifier){this.isInteractive&&this.transaction.scheduleUpdateModifier(modifier);}},{key:\"commit\",value:function commit(){var _this$debugRenderTree2;var transaction=this.transaction;this[TRANSACTION]=null,transaction.commit(),(_this$debugRenderTree2=this.debugRenderTree)!==null&&_this$debugRenderTree2!==void 0&&_this$debugRenderTree2.commit(),this.delegate.onTransactionCommit();}}]);}();function runtimeContext(options,delegate,artifacts,resolver){return{env:new EnvironmentImpl(options,delegate),program:new RuntimeProgramImpl(artifacts.constants,artifacts.heap),resolver:resolver};}function inTransaction(env,block){if(env[TRANSACTION])block();else{env.begin();try{block();}finally{env.commit();}}}function internalHelper$1(helper){return setInternalHelperManager(helper,{});}/**\n             Use the `{{array}}` helper to create an array to pass as an option to your\n             components.\n\n             ```handlebars\n             <MyComponent @people={{array\n               'Tom Dale'\n               'Yehuda Katz'\n               this.myOtherPerson}}\n             />\n             ```\n              or\n             ```handlebars\n             {{my-component people=(array\n               'Tom Dale'\n               'Yehuda Katz'\n               this.myOtherPerson)\n             }}\n             ```\n\n             Would result in an object such as:\n\n             ```js\n             ['Tom Dale', 'Yehuda Katz', this.get('myOtherPerson')]\n             ```\n\n             Where the 3rd item in the array is bound to updates of the `myOtherPerson` property.\n\n             @method array\n             @param {Array} options\n             @return {Array} Array\n             @public\n           */var array$1=internalHelper$1(function(_ref157){var positional=_ref157.positional;return createComputeRef(function(){return reifyPositional(positional);},null,\"array\");}),normalizeTextValue=function normalizeTextValue(value){return function(value){return null==value||\"function\"!=typeof value.toString;}(value)?\"\":String(value);},concat$1=internalHelper$1(function(_ref158){var positional=_ref158.positional;return createComputeRef(function(){return reifyPositional(positional).map(normalizeTextValue).join(\"\");},null,\"concat\");}),context=buildUntouchableThis(\"`fn` helper\"),fn$1=internalHelper$1(function(_ref159){var positional=_ref159.positional;var callbackRef=positional[0];return createComputeRef(function(){return function(){var _reifyPositional=reifyPositional(positional),_reifyPositional2=_toArray(_reifyPositional),fn=_reifyPositional2[0],args=_reifyPositional2.slice(1);for(var _len42=arguments.length,invocationArgs=new Array(_len42),_key42=0;_key42<_len42;_key42++){invocationArgs[_key42]=arguments[_key42];}if(function(callbackRef){if(!callbackRef||!isInvokableRef(callbackRef)&&\"function\"!=typeof valueForRef(callbackRef))throw new Error(\"You must pass a function as the `fn` helper's first argument, you passed \".concat(callbackRef?valueForRef(callbackRef):callbackRef,\". While rendering:\\n\\n\").concat(callbackRef===null||callbackRef===void 0?void 0:callbackRef.debugLabel));}/**\n                Dynamically look up a property on an object. The second argument to `{{get}}`\n                should have a string value, although it can be bound.\n                For example, these two usages are equivalent:\n                ```app/components/developer-detail.js\n                import Component from '@glimmer/component';\n                import { tracked } from '@glimmer/tracking';\n                export default class extends Component {\n                @tracked developer = {\n                name: \"Sandi Metz\",\n                language: \"Ruby\"\n                }\n                }\n                ```\n                ```handlebars\n                {{this.developer.name}}\n                {{get this.developer \"name\"}}\n                ```\n                If there were several facts about a person, the `{{get}}` helper can dynamically\n                pick one:\n                ```app/templates/application.hbs\n                <DeveloperDetail @factName=\"language\" />\n                ```\n                ```handlebars\n                {{get this.developer @factName}}\n                ```\n                For a more complex example, this template would allow the user to switch\n                between showing the user's height and weight with a click:\n                ```app/components/developer-detail.js\n                import Component from '@glimmer/component';\n                import { tracked } from '@glimmer/tracking';\n                export default class extends Component {\n                @tracked developer = {\n                name: \"Sandi Metz\",\n                language: \"Ruby\"\n                }\n                @tracked currentFact = 'name'\n                showFact = (fact) => {\n                this.currentFact = fact;\n                }\n                }\n                ```\n                ```app/components/developer-detail.js\n                {{get this.developer this.currentFact}}\n                <button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n                <button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n                ```\n                The `{{get}}` helper can also respect mutable values itself. For example:\n                ```app/components/developer-detail.js\n                <Input @value={{mut (get this.person this.currentFact)}} />\n                <button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n                <button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n                ```\n                Would allow the user to swap what fact is being displayed, and also edit\n                that fact via a two-way mutable binding.\n                @public\n                @method get\n                */(callbackRef),isInvokableRef(callbackRef)){var value=args.length>0?args[0]:invocationArgs[0];return updateRef(callbackRef,value);}return fn.call.apply(fn,[context].concat(_toConsumableArray(args),invocationArgs));};},null,\"fn\");}),get$1=internalHelper$1(function(_ref160){var _positional$,_positional$2;var positional=_ref160.positional;var sourceRef=(_positional$=positional[0])!==null&&_positional$!==void 0?_positional$:UNDEFINED_REFERENCE,pathRef=(_positional$2=positional[1])!==null&&_positional$2!==void 0?_positional$2:UNDEFINED_REFERENCE;return createComputeRef(function(){var source=valueForRef(sourceRef);if(isDict(source))return getPath$1(source,String(valueForRef(pathRef)));},function(value){var source=valueForRef(sourceRef);if(isDict(source))return setPath(source,String(valueForRef(pathRef)),value);},\"get\");}),hash$1=internalHelper$1(function(_ref161){var named=_ref161.named;var ref=createComputeRef(function(){return reifyNamed(named);},null,\"hash\"),children=new Map();// Setup the children so that templates can bypass getting the value of\n// the reference and treat children lazily\nfor(var _name23 in named)children.set(_name23,named[_name23]);return ref.children=children,ref;});var ARGS_CACHES=new WeakMap();function getArgs(proxy){return getValue(ARGS_CACHES.get(proxy));}var SimpleArgsProxy=/*#__PURE__*/function(){function SimpleArgsProxy(context){var computeArgs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){return EMPTY_ARGS;};_classCallCheck(this,SimpleArgsProxy);_defineProperty(this,\"argsCache\",void 0);var argsCache=createCache(function(){return computeArgs(context);});ARGS_CACHES.set(this,argsCache),Object.freeze(this);}return _createClass(SimpleArgsProxy,[{key:\"named\",get:function get(){return getArgs(this).named||EMPTY_NAMED;}},{key:\"positional\",get:function get(){return getArgs(this).positional||EMPTY_POSITIONAL;}}]);}();////////////\nfunction invokeHelper$1(context,definition,computeArgs){if(\"object\"!=_typeof(context)||null===context)throw new Error(\"Expected a context object to be passed as the first parameter to invokeHelper, got \".concat(context));var owner=getOwner$3(context),internalManager=getInternalHelperManager(definition);// TODO: figure out why assert isn't using the TS assert thing\nif(!internalManager)throw new Error(\"Expected a helper definition to be passed as the second parameter to invokeHelper, but no helper manager was found. The definition value that was passed was `\".concat(debugToString$1(definition),\"`. Did you use setHelperManager to associate a helper manager with this value?\"));if(\"function\"==typeof internalManager)throw new Error(\"Found a helper manager, but it was an internal built-in helper manager. `invokeHelper` does not support internal helpers yet.\");var manager=internalManager.getDelegateFor(owner);var cache,args=new SimpleArgsProxy(context,computeArgs),bucket=manager.createHelper(definition,args);if(!hasValue(manager))throw new Error(\"TODO: unreachable, to be implemented with hasScheduledEffect\");if(cache=createCache(function(){if(isDestroying(cache)||isDestroyed(cache))throw new Error(\"You attempted to get the value of a helper after the helper was destroyed, which is not allowed\");return manager.getValue(bucket);}),associateDestroyableChild(context,cache),hasDestroyable(manager)){var destroyable=manager.getDestroyable(bucket);associateDestroyableChild(cache,destroyable);}return cache;}var untouchableContext=buildUntouchableThis(\"`on` modifier\");var OnModifierState=/*#__PURE__*/function(){function OnModifierState(element,args){var _this17=this;_classCallCheck(this,OnModifierState);_defineProperty(this,\"tag\",createUpdatableTag());_defineProperty(this,\"element\",void 0);_defineProperty(this,\"args\",void 0);_defineProperty(this,\"listener\",null);this.element=element,this.args=args,registerDestructor$1(this,function(){var element=_this17.element,listener=_this17.listener;if(listener){var _eventName=listener.eventName,_callback5=listener.callback,options=listener.options;removeEventListener(element,_eventName,_callback5,options);}});}// Update this.listener if needed\nreturn _createClass(OnModifierState,[{key:\"updateListener\",value:function updateListener(){var element=this.element,args=this.args,listener=this.listener;debugAssert(args.positional[0],\"You must pass a valid DOM event name as the first argument to the `on` modifier\");var eventName=valueForRef(args.positional[0]);debugAssert(args.positional[1],\"You must pass a function as the second argument to the `on` modifier\");var once,passive,capture,userProvidedCallback=valueForRef(args.positional[1]);if(2!==args.positional.length)throw new Error(\"You can only pass two positional arguments (event name and callback) to the `on` modifier, but you provided \".concat(args.positional.length,\". Consider using the `fn` helper to provide additional arguments to the `on` callback.\"));{var _reifyNamed=reifyNamed(args.named),_once=_reifyNamed.once,_passive=_reifyNamed.passive,_capture=_reifyNamed.capture,extra=_objectWithoutProperties(_reifyNamed,_excluded);if(once=_once,passive=_passive,capture=_capture,Object.keys(extra).length>0)throw new Error(\"You can only `once`, `passive` or `capture` named arguments to the `on` modifier, but you provided \".concat(Object.keys(extra).join(\", \"),\".\"));}var options,shouldUpdate=!1;if(shouldUpdate=null===listener||eventName!==listener.eventName||userProvidedCallback!==listener.userProvidedCallback||once!==listener.once||passive!==listener.passive||capture!==listener.capture,// we want to handle both `true` and `false` because both have a meaning:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=770208\nshouldUpdate&&(void 0===once&&void 0===passive&&void 0===capture||(options={once:once,passive:passive,capture:capture})),shouldUpdate){var _callback6=userProvidedCallback;if(_callback6=userProvidedCallback.bind(untouchableContext),passive){var _callback=_callback6;_callback6=function _callback6(event){return event.preventDefault=function(){var _userProvidedCallback;throw new Error(\"You marked this listener as 'passive', meaning that you must not call 'event.preventDefault()': \\n\\n\".concat((_userProvidedCallback=userProvidedCallback.name)!==null&&_userProvidedCallback!==void 0?_userProvidedCallback:\"{anonymous function}\"));},_callback(event);};}this.listener={eventName:eventName,callback:_callback6,userProvidedCallback:userProvidedCallback,once:once,passive:passive,capture:capture,options:options},listener&&removeEventListener(element,listener.eventName,listener.callback,listener.options),function(element,eventName,callback,options){adds++,element.addEventListener(eventName,callback,options);}/**\n                The `{{on}}` modifier lets you easily add event listeners (it uses\n                [EventTarget.addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\n                internally).\n                For example, if you'd like to run a function on your component when a `<button>`\n                in the components template is clicked you might do something like:\n                ```app/components/like-post.hbs\n                <button {{on 'click' this.saveLike}}>Like this post!</button>\n                ```\n                ```app/components/like-post.js\n                import Component from '@glimmer/component';\n                import { action } from '@ember/object';\n                export default class LikePostComponent extends Component {\n                saveLike = () => {\n                // someone likes your post!\n                // better send a request off to your server...\n                }\n                }\n                ```\n                ### Arguments\n                `{{on}}` accepts two positional arguments, and a few named arguments.\n                The positional arguments are:\n                - `event` -- the name to use when calling `addEventListener`\n                - `callback` -- the function to be passed to `addEventListener`\n                The named arguments are:\n                - capture -- a `true` value indicates that events of this type will be dispatched\n                to the registered listener before being dispatched to any EventTarget beneath it\n                in the DOM tree.\n                - once -- indicates that the listener should be invoked at most once after being\n                added. If true, the listener would be automatically removed when invoked.\n                - passive -- if `true`, indicates that the function specified by listener will never\n                call preventDefault(). If a passive listener does call preventDefault(), the user\n                agent will do nothing other than generate a console warning. See\n                [Improving scrolling performance with passive listeners](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Improving_scrolling_performance_with_passive_listeners)\n                to learn more.\n                The callback function passed to `{{on}}` will receive any arguments that are passed\n                to the event handler. Most commonly this would be the `event` itself.\n                If you would like to pass additional arguments to the function you should use\n                the `{{fn}}` helper.\n                For example, in our example case above if you'd like to pass in the post that\n                was being liked when the button is clicked you could do something like:\n                ```app/components/like-post.hbs\n                <button {{on 'click' (fn this.saveLike @post)}}>Like this post!</button>\n                ```\n                In this case, the `saveLike` function will receive two arguments: the click event\n                and the value of `@post`.\n                ### Function Context\n                In the example above, we used an arrow function to ensure that `likePost` is\n                properly bound to the `items-list`, but let's explore what happens if we\n                left out the arrow function:\n                ```app/components/like-post.js\n                import Component from '@glimmer/component';\n                export default class LikePostComponent extends Component {\n                saveLike() {\n                // ...snip...\n                }\n                }\n                ```\n                In this example, when the button is clicked `saveLike` will be invoked,\n                it will **not** have access to the component instance. In other\n                words, it will have no `this` context, so please make sure your functions\n                are bound (via an arrow function or other means) before passing into `on`!\n                @method on\n                @public\n                */(element,eventName,_callback6,options);}}}]);}();var adds=0,removes=0;function removeEventListener(element,eventName,callback,options){removes++,element.removeEventListener(eventName,callback,options);}var on$1=setInternalModifierManager(new(/*#__PURE__*/function(){function _class4(){_classCallCheck(this,_class4);}return _createClass(_class4,[{key:\"getDebugName\",value:function getDebugName(){return\"on\";}},{key:\"getDebugInstance\",value:function getDebugInstance(){return null;}},{key:\"counters\",get:function get(){return{adds:adds,removes:removes};}},{key:\"create\",value:function create(_owner,element,_state,args){return new OnModifierState(element,args);}},{key:\"getTag\",value:function getTag(_ref162){var tag=_ref162.tag;return tag;}},{key:\"install\",value:function install(state){state.updateListener();}},{key:\"update\",value:function update(state){state.updateListener();}},{key:\"getDestroyable\",value:function getDestroyable(state){return state;}}]);}())(),{});var LowLevelVM=/*#__PURE__*/function(){function LowLevelVM(stack,heap,program,externs,registers){_classCallCheck(this,LowLevelVM);_defineProperty(this,\"currentOpSize\",0);this.stack=stack,this.heap=heap,this.program=program,this.externs=externs,this.registers=registers;}return _createClass(LowLevelVM,[{key:\"fetchRegister\",value:function fetchRegister(register){return this.registers[register];}},{key:\"loadRegister\",value:function loadRegister(register,value){this.registers[register]=value;}},{key:\"setPc\",value:function setPc(pc){debugAssert(\"number\"==typeof pc&&!isNaN(pc),\"pc is set to a number\"),this.registers[$pc]=pc;}// Start a new frame and save $ra and $fp on the stack\n},{key:\"pushFrame\",value:function pushFrame(){this.stack.push(this.registers[$ra]),this.stack.push(this.registers[$fp]),this.registers[$fp]=this.registers[$sp]-1;}// Restore $ra, $sp and $fp\n},{key:\"popFrame\",value:function popFrame(){this.registers[$sp]=this.registers[$fp]-1,this.registers[$ra]=this.stack.get(0),this.registers[$fp]=this.stack.get(1);}},{key:\"pushSmallFrame\",value:function pushSmallFrame(){this.stack.push(this.registers[$ra]);}},{key:\"popSmallFrame\",value:function popSmallFrame(){this.registers[$ra]=this.stack.pop();}// Jump to an address in `program`\n},{key:\"goto\",value:function goto(offset){this.setPc(this.target(offset));}},{key:\"target\",value:function target(offset){return this.registers[$pc]+offset-this.currentOpSize;}// Save $pc into $ra, then jump to a new address in `program` (jal in MIPS)\n},{key:\"call\",value:function call(handle){debugAssert(handle<4294967295,\"Jumping to placeholder address\"),this.registers[$ra]=this.registers[$pc],this.setPc(this.heap.getaddr(handle));}// Put a specific `program` address in $ra\n},{key:\"returnTo\",value:function returnTo(offset){this.registers[$ra]=this.target(offset);}// Return to the `program` address stored in $ra\n},{key:\"return\",value:function _return(){this.setPc(this.registers[$ra]);}},{key:\"nextStatement\",value:function nextStatement(){var registers=this.registers,program=this.program,pc=registers[$pc];if(debugAssert(\"number\"==typeof pc,\"pc is a number\"),-1===pc)return null;// We have to save off the current operations size so that\n// when we do a jump we can calculate the correct offset\n// to where we are going. We can't simply ask for the size\n// in a jump because we have have already incremented the\n// program counter to the next instruction prior to executing.\nvar opcode=program.opcode(pc),operationSize=this.currentOpSize=opcode.size;return this.registers[$pc]+=operationSize,opcode;}},{key:\"evaluateOuter\",value:function evaluateOuter(opcode,vm){this.evaluateInner(opcode,vm);}},{key:\"evaluateInner\",value:function evaluateInner(opcode,vm){opcode.isMachine?this.evaluateMachine(opcode):this.evaluateSyscall(opcode,vm);}},{key:\"evaluateMachine\",value:function evaluateMachine(opcode){switch(opcode.type){case MachineOp.PushFrame:return this.pushFrame();case MachineOp.PopFrame:return this.popFrame();case MachineOp.InvokeStatic:return this.call(opcode.op1);case MachineOp.InvokeVirtual:return this.call(this.stack.pop());case MachineOp.Jump:return this.goto(opcode.op1);case MachineOp.Return:return this.return();case MachineOp.ReturnTo:return this.returnTo(opcode.op1);}}},{key:\"evaluateSyscall\",value:function evaluateSyscall(opcode,vm){APPEND_OPCODES.evaluate(vm,opcode,opcode.type);}}]);}();var UpdatingVM=/*#__PURE__*/function(){function UpdatingVM(env,_ref163){var _ref163$alwaysRevalid=_ref163.alwaysRevalidate,alwaysRevalidate=_ref163$alwaysRevalid===void 0?!1:_ref163$alwaysRevalid;_classCallCheck(this,UpdatingVM);_defineProperty(this,\"env\",void 0);_defineProperty(this,\"dom\",void 0);_defineProperty(this,\"alwaysRevalidate\",void 0);_defineProperty(this,\"frameStack\",new StackImpl());this.env=env,this.dom=env.getDOM(),this.alwaysRevalidate=alwaysRevalidate;}return _createClass(UpdatingVM,[{key:\"execute\",value:function execute(opcodes,handler){var _this18=this;{var hasErrored=!0;try{debug$1.runInTrackingTransaction(function(){return _this18._execute(opcodes,handler);},\"- While rendering:\"),// using a boolean here to avoid breaking ergonomics of \"pause on uncaught exceptions\"\n// which would happen with a `catch` + `throw`\nhasErrored=!1;}finally{hasErrored&&// eslint-disable-next-line no-console\nconsole.error(\"\\n\\nError occurred:\\n\\n\".concat(resetTracking(),\"\\n\\n\"));}}}},{key:\"_execute\",value:function _execute(opcodes,handler){var frameStack=this.frameStack;for(this.try(opcodes,handler);!frameStack.isEmpty();){var opcode=this.frame.nextStatement();void 0!==opcode?opcode.evaluate(this):frameStack.pop();}}},{key:\"frame\",get:function get(){return expect(this.frameStack.current,\"bug: expected a frame\");}},{key:\"goto\",value:function goto(index){this.frame.goto(index);}},{key:\"try\",value:function _try(ops,handler){this.frameStack.push(new UpdatingVMFrame(ops,handler));}},{key:\"throw\",value:function _throw(){this.frame.handleException(),this.frameStack.pop();}}]);}();var ResumableVMStateImpl=/*#__PURE__*/function(){function ResumableVMStateImpl(state,resumeCallback){_classCallCheck(this,ResumableVMStateImpl);this.state=state,this.resumeCallback=resumeCallback;}return _createClass(ResumableVMStateImpl,[{key:\"resume\",value:function resume(runtime,builder){return this.resumeCallback(runtime,this.state,builder);}}]);}();var BlockOpcode=/*#__PURE__*/function(){function BlockOpcode(state,runtime,bounds,children){_classCallCheck(this,BlockOpcode);_defineProperty(this,\"children\",void 0);_defineProperty(this,\"bounds\",void 0);this.state=state,this.runtime=runtime,this.children=children,this.bounds=bounds;}return _createClass(BlockOpcode,[{key:\"parentElement\",value:function parentElement(){return this.bounds.parentElement();}},{key:\"firstNode\",value:function firstNode(){return this.bounds.firstNode();}},{key:\"lastNode\",value:function lastNode(){return this.bounds.lastNode();}},{key:\"evaluate\",value:function evaluate(vm){vm.try(this.children,null);}}]);}();var TryOpcode=/*#__PURE__*/function(_BlockOpcode2){function TryOpcode(){var _this19;_classCallCheck(this,TryOpcode);for(var _len43=arguments.length,args=new Array(_len43),_key43=0;_key43<_len43;_key43++){args[_key43]=arguments[_key43];}_this19=_callSuper(this,TryOpcode,[].concat(args));_defineProperty(_this19,\"type\",\"try\");return _this19;}_inherits(TryOpcode,_BlockOpcode2);return _createClass(TryOpcode,[{key:\"evaluate\",value:// Hides property on base class\nfunction evaluate(vm){vm.try(this.children,this);}},{key:\"handleException\",value:function handleException(){var _this20=this;var state=this.state,bounds=this.bounds,runtime=this.runtime;destroyChildren(this);var elementStack=NewElementBuilder.resume(runtime.env,bounds),vm=state.resume(runtime,elementStack),updating=[],children=this.children=[],result=vm.execute(function(vm){vm.pushUpdating(updating),vm.updateWith(_this20),vm.pushUpdating(children);});associateDestroyableChild(this,result.drop);}}]);}(BlockOpcode);var ListItemOpcode=/*#__PURE__*/function(_TryOpcode2){function ListItemOpcode(state,runtime,bounds,key,memo,value){var _this21;_classCallCheck(this,ListItemOpcode);_this21=_callSuper(this,ListItemOpcode,[state,runtime,bounds,[]]),_defineProperty(_assertThisInitialized(_this21),\"retained\",!1),_defineProperty(_assertThisInitialized(_this21),\"index\",-1),_this21.key=key,_this21.memo=memo,_this21.value=value;return _this21;}_inherits(ListItemOpcode,_TryOpcode2);return _createClass(ListItemOpcode,[{key:\"updateReferences\",value:function updateReferences(item){this.retained=!0,updateRef(this.value,item.value),updateRef(this.memo,item.memo);}},{key:\"shouldRemove\",value:function shouldRemove(){return!this.retained;}},{key:\"reset\",value:function reset(){this.retained=!1;}}]);}(TryOpcode);var ListBlockOpcode=/*#__PURE__*/function(_BlockOpcode3){function ListBlockOpcode(state,runtime,bounds,children,iterableRef){var _this22;_classCallCheck(this,ListBlockOpcode);_this22=_callSuper(this,ListBlockOpcode,[state,runtime,bounds,children]),_defineProperty(_assertThisInitialized(_this22),\"type\",\"list-block\"),_defineProperty(_assertThisInitialized(_this22),\"opcodeMap\",new Map()),_defineProperty(_assertThisInitialized(_this22),\"marker\",null),_defineProperty(_assertThisInitialized(_this22),\"lastIterator\",void 0),_this22.iterableRef=iterableRef,_this22.lastIterator=valueForRef(iterableRef);return _this22;}_inherits(ListBlockOpcode,_BlockOpcode3);return _createClass(ListBlockOpcode,[{key:\"initializeChild\",value:function initializeChild(opcode){opcode.index=this.children.length-1,this.opcodeMap.set(opcode.key,opcode);}},{key:\"evaluate\",value:function evaluate(vm){var iterator=valueForRef(this.iterableRef);if(this.lastIterator!==iterator){var bounds=this.bounds,dom=vm.dom,marker=this.marker=dom.createComment(\"\");dom.insertAfter(bounds.parentElement(),marker,expect(bounds.lastNode(),\"can't insert after an empty bounds\")),this.sync(iterator),this.parentElement().removeChild(marker),this.marker=null,this.lastIterator=iterator;}// Run now-updated updating opcodes\n_superPropGet(ListBlockOpcode,\"evaluate\",this,3)([vm]);}},{key:\"sync\",value:function sync(iterator){var itemMap=this.opcodeMap,children=this.children,currentOpcodeIndex=0,seenIndex=0;// eslint-disable-next-line no-constant-condition\nfor(this.children=this.bounds.boundList=[];;){var item=iterator.next();if(null===item)break;var opcode=children[currentOpcodeIndex],key=item.key;// Items that have already been found and moved will already be retained,\n// we can continue until we find the next unretained item\nfor(;void 0!==opcode&&!0===opcode.retained;)opcode=children[++currentOpcodeIndex];if(void 0!==opcode&&opcode.key===key)this.retainItem(opcode,item),currentOpcodeIndex++;else if(itemMap.has(key)){var itemOpcode=itemMap.get(key);// The item opcode was seen already, so we should move it.\nif(itemOpcode.index<seenIndex)this.moveItem(itemOpcode,item,opcode);else{// Update the seen index, we are going to be moving this item around\n// so any other items that come before it will likely need to move as\n// well.\nseenIndex=itemOpcode.index;var seenUnretained=!1;// iterate through all of the opcodes between the current position and\n// the position of the item's opcode, and determine if they are all\n// retained.\nfor(var i=currentOpcodeIndex+1;i<seenIndex;i++)if(!1===unwrap$1(children[i]).retained){seenUnretained=!0;break;}// If we have seen only retained opcodes between this and the matching\n// opcode, it means that all the opcodes in between have been moved\n// already, and we can safely retain this item's opcode.\n!1===seenUnretained?(this.retainItem(itemOpcode,item),currentOpcodeIndex=seenIndex+1):(this.moveItem(itemOpcode,item,opcode),currentOpcodeIndex++);}}else this.insertItem(item,opcode);}var _iterator43=_createForOfIteratorHelper(children),_step43;try{for(_iterator43.s();!(_step43=_iterator43.n()).done;){var _opcode=_step43.value;!1===_opcode.retained?this.deleteItem(_opcode):_opcode.reset();}}catch(err){_iterator43.e(err);}finally{_iterator43.f();}}},{key:\"retainItem\",value:function retainItem(opcode,item){var children=this.children;updateRef(opcode.memo,item.memo),updateRef(opcode.value,item.value),opcode.retained=!0,opcode.index=children.length,children.push(opcode);}},{key:\"insertItem\",value:function insertItem(item,before){var _this23=this;var opcodeMap=this.opcodeMap,bounds=this.bounds,state=this.state,runtime=this.runtime,children=this.children,key=item.key,nextSibling=void 0===before?this.marker:before.firstNode(),elementStack=NewElementBuilder.forInitialRender(runtime.env,{element:bounds.parentElement(),nextSibling:nextSibling});state.resume(runtime,elementStack).execute(function(vm){vm.pushUpdating();var opcode=vm.enterItem(item);opcode.index=children.length,children.push(opcode),opcodeMap.set(key,opcode),associateDestroyableChild(_this23,opcode);});}},{key:\"moveItem\",value:function moveItem(opcode,item,before){var currentSibling,nextSibling,children=this.children;updateRef(opcode.memo,item.memo),updateRef(opcode.value,item.value),opcode.retained=!0,void 0===before?move(opcode,this.marker):(currentSibling=opcode.lastNode().nextSibling,nextSibling=before.firstNode(),// Items are moved throughout the algorithm, so there are cases where the\n// the items already happen to be siblings (e.g. an item in between was\n// moved before this move happened). Check to see if they are siblings\n// first before doing the move.\ncurrentSibling!==nextSibling&&move(opcode,nextSibling)),opcode.index=children.length,children.push(opcode);}},{key:\"deleteItem\",value:function deleteItem(opcode){_destroy(opcode),clear(opcode),this.opcodeMap.delete(opcode.key);}}]);}(BlockOpcode);var UpdatingVMFrame=/*#__PURE__*/function(){function UpdatingVMFrame(ops,exceptionHandler){_classCallCheck(this,UpdatingVMFrame);_defineProperty(this,\"current\",0);this.ops=ops,this.exceptionHandler=exceptionHandler;}return _createClass(UpdatingVMFrame,[{key:\"goto\",value:function goto(index){this.current=index;}},{key:\"nextStatement\",value:function nextStatement(){return this.ops[this.current++];}},{key:\"handleException\",value:function handleException(){this.exceptionHandler&&this.exceptionHandler.handleException();}}]);}();var RenderResultImpl=/*#__PURE__*/function(){function RenderResultImpl(env,updating,bounds,drop){var _this24=this;_classCallCheck(this,RenderResultImpl);this.env=env,this.updating=updating,this.bounds=bounds,this.drop=drop,associateDestroyableChild(this,drop),registerDestructor$1(this,function(){return clear(_this24.bounds);});}return _createClass(RenderResultImpl,[{key:\"rerender\",value:function rerender(){var _ref164=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{alwaysRevalidate:!1},_ref164$alwaysRevalid=_ref164.alwaysRevalidate,alwaysRevalidate=_ref164$alwaysRevalid===void 0?!1:_ref164$alwaysRevalid;var env=this.env,updating=this.updating;new UpdatingVM(env,{alwaysRevalidate:alwaysRevalidate}).execute(updating,this);}},{key:\"parentElement\",value:function parentElement(){return this.bounds.parentElement();}},{key:\"firstNode\",value:function firstNode(){return this.bounds.firstNode();}},{key:\"lastNode\",value:function lastNode(){return this.bounds.lastNode();}},{key:\"handleException\",value:function handleException(){throw\"this should never happen\";}}]);}();var EvaluationStackImpl=/*#__PURE__*/function(){// fp -> sp\nfunction EvaluationStackImpl(){var stack=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var registers=arguments.length>1?arguments[1]:undefined;_classCallCheck(this,EvaluationStackImpl);_defineProperty(this,REGISTERS,void 0);this.stack=stack,this[REGISTERS]=registers;}return _createClass(EvaluationStackImpl,[{key:\"push\",value:function push(value){this.stack[++this[REGISTERS][$sp]]=value;}},{key:\"dup\",value:function dup(){var position=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this[REGISTERS][$sp];this.stack[++this[REGISTERS][$sp]]=this.stack[position];}},{key:\"copy\",value:function copy(from,to){this.stack[to]=this.stack[from];}},{key:\"pop\",value:function pop(){var n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;var top=this.stack[this[REGISTERS][$sp]];return this[REGISTERS][$sp]-=n,top;}},{key:\"peek\",value:function peek(){var offset=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this.stack[this[REGISTERS][$sp]-offset];}},{key:\"get\",value:function get(offset){var base=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this[REGISTERS][$fp];return this.stack[base+offset];}},{key:\"set\",value:function set(value,offset){var base=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this[REGISTERS][$fp];this.stack[base+offset]=value;}},{key:\"slice\",value:function slice(start,end){return this.stack.slice(start,end);}},{key:\"capture\",value:function capture(items){var end=this[REGISTERS][$sp]+1,start=end-items;return this.stack.slice(start,end);}},{key:\"reset\",value:function reset(){this.stack.length=0;}},{key:\"toArray\",value:function toArray(){return this.stack.slice(this[REGISTERS][$fp],this[REGISTERS][$sp]+1);}}],[{key:\"restore\",value:function restore(snapshot){return new this(snapshot.slice(),[0,-1,snapshot.length-1,0]);}}]);}();/**\n           * This interface is used by internal opcodes, and is more stable than\n           * the implementation of the Append VM itself.\n           */var Stacks=/*#__PURE__*/_createClass(function Stacks(){_classCallCheck(this,Stacks);_defineProperty(this,\"scope\",new StackImpl());_defineProperty(this,\"dynamicScope\",new StackImpl());_defineProperty(this,\"updating\",new StackImpl());_defineProperty(this,\"cache\",new StackImpl());_defineProperty(this,\"list\",new StackImpl());});var VM=/*#__PURE__*/function(){/**\n            * End of migrated.\n            */function VM(runtime,_ref165,elementStack,context){var _this25=this;var pc=_ref165.pc,scope=_ref165.scope,dynamicScope=_ref165.dynamicScope,stack=_ref165.stack;_classCallCheck(this,VM);_defineProperty(this,STACKS,new Stacks());_defineProperty(this,HEAP,void 0);_defineProperty(this,\"destructor\",void 0);_defineProperty(this,DESTROYABLE_STACK,new StackImpl());_defineProperty(this,CONSTANTS,void 0);_defineProperty(this,ARGS$1,void 0);_defineProperty(this,INNER_VM,void 0);_defineProperty(this,\"s0\",null);_defineProperty(this,\"s1\",null);_defineProperty(this,\"t0\",null);_defineProperty(this,\"t1\",null);_defineProperty(this,\"v0\",null);_defineProperty(this,\"resume\",void 0);this.runtime=runtime,this.elementStack=elementStack,this.context=context,assertGlobalContextWasSet(),this.resume=initVM(context);var evalStack=EvaluationStackImpl.restore(stack);debugAssert(\"number\"==typeof pc,\"pc is a number\"),evalStack[REGISTERS][$pc]=pc,evalStack[REGISTERS][$sp]=stack.length-1,evalStack[REGISTERS][$fp]=-1,this[HEAP]=this.program.heap,this[CONSTANTS]=this.program.constants,this.elementStack=elementStack,this[STACKS].scope.push(scope),this[STACKS].dynamicScope.push(dynamicScope),this[ARGS$1]=new VMArgumentsImpl(),this[INNER_VM]=new LowLevelVM(evalStack,this[HEAP],runtime.program,{debugBefore:function debugBefore(opcode){return APPEND_OPCODES.debugBefore(_this25,opcode);},debugAfter:function debugAfter(state){APPEND_OPCODES.debugAfter(_this25,state);}},evalStack[REGISTERS]),this.destructor={},this[DESTROYABLE_STACK].push(this.destructor);}return _createClass(VM,[{key:\"stack\",get:function get(){return this[INNER_VM].stack;}/* Registers */},{key:\"pc\",get:function get(){return this[INNER_VM].fetchRegister($pc);}},{key:\"fetch\",value:// Fetch a value from a register onto the stack\nfunction fetch(register){var value=this.fetchValue(register);this.stack.push(value);}// Load a value from the stack into a register\n},{key:\"load\",value:function load(register){var value=this.stack.pop();this.loadValue(register,value);}// Fetch a value from a register\n},{key:\"fetchValue\",value:function fetchValue(register){if(isLowLevelRegister(register))return this[INNER_VM].fetchRegister(register);switch(register){case $s0:return this.s0;case $s1:return this.s1;case $t0:return this.t0;case $t1:return this.t1;case $v0:return this.v0;}}// Load a value into a register\n},{key:\"loadValue\",value:function loadValue(register,value){switch(isLowLevelRegister(register)&&this[INNER_VM].loadRegister(register,value),register){case $s0:this.s0=value;break;case $s1:this.s1=value;break;case $t0:this.t0=value;break;case $t1:this.t1=value;break;case $v0:this.v0=value;}}/**\n            * Migrated to Inner\n            */// Start a new frame and save $ra and $fp on the stack\n},{key:\"pushFrame\",value:function pushFrame(){this[INNER_VM].pushFrame();}// Restore $ra, $sp and $fp\n},{key:\"popFrame\",value:function popFrame(){this[INNER_VM].popFrame();}// Jump to an address in `program`\n},{key:\"goto\",value:function goto(offset){this[INNER_VM].goto(offset);}// Save $pc into $ra, then jump to a new address in `program` (jal in MIPS)\n},{key:\"call\",value:function call(handle){this[INNER_VM].call(handle);}// Put a specific `program` address in $ra\n},{key:\"returnTo\",value:function returnTo(offset){this[INNER_VM].returnTo(offset);}// Return to the `program` address stored in $ra\n},{key:\"return\",value:function _return(){this[INNER_VM].return();}},{key:\"compile\",value:function compile(block){return unwrapHandle(block.compile(this.context));}},{key:\"program\",get:function get(){return this.runtime.program;}},{key:\"env\",get:function get(){return this.runtime.env;}},{key:\"captureState\",value:function captureState(args){var pc=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this[INNER_VM].fetchRegister($pc);return{pc:pc,scope:this.scope(),dynamicScope:this.dynamicScope(),stack:this.stack.capture(args)};}},{key:\"capture\",value:function capture(args){var pc=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this[INNER_VM].fetchRegister($pc);return new ResumableVMStateImpl(this.captureState(args,pc),this.resume);}},{key:\"beginCacheGroup\",value:function beginCacheGroup(name){var opcodes=this.updating(),guard=new JumpIfNotModifiedOpcode();opcodes.push(guard),opcodes.push(new BeginTrackFrameOpcode(name)),this[STACKS].cache.push(guard),beginTrackFrame(name);}},{key:\"commitCacheGroup\",value:function commitCacheGroup(){var opcodes=this.updating(),guard=expect(this[STACKS].cache.pop(),\"VM BUG: Expected a cache group\"),tag=endTrackFrame();opcodes.push(new EndTrackFrameOpcode(guard)),guard.finalize(tag,opcodes.length);}},{key:\"enter\",value:function enter(args){var state=this.capture(args),block=this.elements().pushUpdatableBlock(),tryOpcode=new TryOpcode(state,this.runtime,block,[]);this.didEnter(tryOpcode);}},{key:\"enterItem\",value:function enterItem(_ref166){var key=_ref166.key,value=_ref166.value,memo=_ref166.memo;var stack=this.stack,valueRef=createIteratorItemRef(value),memoRef=createIteratorItemRef(memo);stack.push(valueRef),stack.push(memoRef);var state=this.capture(2),block=this.elements().pushUpdatableBlock(),opcode=new ListItemOpcode(state,this.runtime,block,key,memoRef,valueRef);return this.didEnter(opcode),opcode;}},{key:\"registerItem\",value:function registerItem(opcode){this.listBlock().initializeChild(opcode);}},{key:\"enterList\",value:function enterList(iterableRef,offset){var updating=[],addr=this[INNER_VM].target(offset),state=this.capture(0,addr),list=this.elements().pushBlockList(updating),opcode=new ListBlockOpcode(state,this.runtime,list,updating,iterableRef);this[STACKS].list.push(opcode),this.didEnter(opcode);}},{key:\"didEnter\",value:function didEnter(opcode){this.associateDestroyable(opcode),this[DESTROYABLE_STACK].push(opcode),this.updateWith(opcode),this.pushUpdating(opcode.children);}},{key:\"exit\",value:function exit(){this[DESTROYABLE_STACK].pop(),this.elements().popBlock(),this.popUpdating();}},{key:\"exitList\",value:function exitList(){this.exit(),this[STACKS].list.pop();}},{key:\"pushUpdating\",value:function pushUpdating(){var list=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];this[STACKS].updating.push(list);}},{key:\"popUpdating\",value:function popUpdating(){return expect(this[STACKS].updating.pop(),\"can't pop an empty stack\");}},{key:\"updateWith\",value:function updateWith(opcode){this.updating().push(opcode);}},{key:\"listBlock\",value:function listBlock(){return expect(this[STACKS].list.current,\"expected a list block\");}},{key:\"associateDestroyable\",value:function associateDestroyable(child){var parent=expect(this[DESTROYABLE_STACK].current,\"Expected destructor parent\");associateDestroyableChild(parent,child);}},{key:\"tryUpdating\",value:function tryUpdating(){return this[STACKS].updating.current;}},{key:\"updating\",value:function updating(){return expect(this[STACKS].updating.current,\"expected updating opcode on the updating opcode stack\");}},{key:\"elements\",value:function elements(){return this.elementStack;}},{key:\"scope\",value:function scope(){return expect(this[STACKS].scope.current,\"expected scope on the scope stack\");}},{key:\"dynamicScope\",value:function dynamicScope(){return expect(this[STACKS].dynamicScope.current,\"expected dynamic scope on the dynamic scope stack\");}},{key:\"pushChildScope\",value:function pushChildScope(){this[STACKS].scope.push(this.scope().child());}},{key:\"pushDynamicScope\",value:function pushDynamicScope(){var child=this.dynamicScope().child();return this[STACKS].dynamicScope.push(child),child;}},{key:\"pushRootScope\",value:function pushRootScope(size,owner){var scope=PartialScopeImpl.sized(size,owner);return this[STACKS].scope.push(scope),scope;}},{key:\"pushScope\",value:function pushScope(scope){this[STACKS].scope.push(scope);}},{key:\"popScope\",value:function popScope(){this[STACKS].scope.pop();}},{key:\"popDynamicScope\",value:function popDynamicScope(){this[STACKS].dynamicScope.pop();}/// SCOPE HELPERS\n},{key:\"getOwner\",value:function getOwner(){return this.scope().owner;}},{key:\"getSelf\",value:function getSelf(){return this.scope().getSelf();}},{key:\"referenceForSymbol\",value:function referenceForSymbol(symbol){return this.scope().getSymbol(symbol);}/// EXECUTION\n},{key:\"execute\",value:function execute(initialize){{var hasErrored=!0;try{var value=this._execute(initialize);// using a boolean here to avoid breaking ergonomics of \"pause on uncaught exceptions\"\n// which would happen with a `catch` + `throw`\nreturn hasErrored=!1,value;}finally{if(hasErrored){// If any existing blocks are open, due to an error or something like\n// that, we need to close them all and clean things up properly.\nvar elements=this.elements();for(;elements.hasBlocks;)elements.popBlock();// eslint-disable-next-line no-console\nconsole.error(\"\\n\\nError occurred:\\n\\n\".concat(resetTracking(),\"\\n\\n\"));}}}}},{key:\"_execute\",value:function _execute(initialize){var result;initialize&&initialize(this);do{result=this.next();}while(!result.done);return result.value;}},{key:\"next\",value:function next(){var result,env=this.env,elementStack=this.elementStack,opcode=this[INNER_VM].nextStatement();return null!==opcode?(this[INNER_VM].evaluateOuter(opcode,this),result={done:!1,value:null}):(// Unload the stack\nthis.stack.reset(),result={done:!0,value:new RenderResultImpl(env,this.popUpdating(),elementStack.popBlock(),this.destructor)}),result;}},{key:\"bindDynamicScope\",value:function bindDynamicScope(names){var scope=this.dynamicScope();var _iterator44=_createForOfIteratorHelper(reverse(names)),_step44;try{for(_iterator44.s();!(_step44=_iterator44.n()).done;){var _name24=_step44.value;scope.set(_name24,this.stack.pop());}}catch(err){_iterator44.e(err);}finally{_iterator44.f();}}}],[{key:\"initial\",value:function initial(runtime,context,_ref167){var handle=_ref167.handle,self=_ref167.self,dynamicScope=_ref167.dynamicScope,treeBuilder=_ref167.treeBuilder,numSymbols=_ref167.numSymbols,owner=_ref167.owner;var scope=PartialScopeImpl.root(self,numSymbols,owner),state=vmState(runtime.program.heap.getaddr(handle),scope,dynamicScope),vm=initVM(context)(runtime,state,treeBuilder);return vm.pushUpdating(),vm;}},{key:\"empty\",value:function empty(runtime,_ref168,context){var handle=_ref168.handle,treeBuilder=_ref168.treeBuilder,dynamicScope=_ref168.dynamicScope,owner=_ref168.owner;var vm=initVM(context)(runtime,vmState(runtime.program.heap.getaddr(handle),PartialScopeImpl.root(UNDEFINED_REFERENCE,0,owner),dynamicScope),treeBuilder);return vm.pushUpdating(),vm;}}]);}();function vmState(pc,scope,dynamicScope){return{pc:pc,scope:scope,dynamicScope:dynamicScope,stack:[]};}function initVM(context){return function(runtime,state,builder){return new VM(runtime,state,builder,context);};}var TemplateIteratorImpl=/*#__PURE__*/function(){function TemplateIteratorImpl(vm){_classCallCheck(this,TemplateIteratorImpl);this.vm=vm;}return _createClass(TemplateIteratorImpl,[{key:\"next\",value:function next(){return this.vm.next();}},{key:\"sync\",value:function sync(){var _this26=this;return debug$1.runInTrackingTransaction(function(){return _this26.vm.execute();},\"- While rendering:\");}}]);}();function renderSync(env,iterator){var result;return inTransaction(env,function(){return result=iterator.sync();}),result;}function renderMain(runtime,context,owner,self,treeBuilder,layout){var dynamicScope=arguments.length>6&&arguments[6]!==undefined?arguments[6]:new DynamicScopeImpl();var handle=unwrapHandle(layout.compile(context)),numSymbols=layout.symbolTable.symbols.length,vm=VM.initial(runtime,context,{self:self,dynamicScope:dynamicScope,treeBuilder:treeBuilder,handle:handle,numSymbols:numSymbols,owner:owner});return new TemplateIteratorImpl(vm);}function renderComponent(runtime,treeBuilder,context,owner,definition){var args=arguments.length>5&&arguments[5]!==undefined?arguments[5]:{};var dynamicScope=arguments.length>6&&arguments[6]!==undefined?arguments[6]:new DynamicScopeImpl();return function(vm,context,owner,definition,args){// Get a list of tuples of argument names and references, like\n// [['title', reference], ['name', reference]]\nvar argList=Object.keys(args).map(function(key){return[key,args[key]];}),blockNames=[\"main\",\"else\",\"attrs\"],argNames=argList.map(function(_ref169){var _ref170=_slicedToArray(_ref169,1),name=_ref170[0];return\"@\".concat(name);});var reified=vm[CONSTANTS].component(definition,owner);vm.pushFrame();// Push blocks on to the stack, three stack values per block\nfor(var i=0;i<3*blockNames.length;i++)vm.stack.push(null);vm.stack.push(null),// For each argument, push its backing reference on to the stack\nargList.forEach(function(_ref171){var _ref172=_slicedToArray(_ref171,2),reference=_ref172[1];vm.stack.push(reference);}),// Configure VM based on blocks and args just pushed on to the stack.\nvm[ARGS$1].setup(vm.stack,argNames,blockNames,0,!0);var compilable=expect(reified.compilable,\"BUG: Expected the root component rendered with renderComponent to have an associated template, set with setComponentTemplate\"),invocation={handle:unwrapHandle(compilable.compile(context)),symbolTable:compilable.symbolTable};// Needed for the Op.Main opcode: arguments, component invocation object, and\n// component definition.\nreturn vm.stack.push(vm[ARGS$1]),vm.stack.push(invocation),vm.stack.push(reified),new TemplateIteratorImpl(vm);}(VM.empty(runtime,{treeBuilder:treeBuilder,handle:context.stdlib.main,dynamicScope:dynamicScope,owner:owner},context),context,owner,definition,function(record){var root=createConstRef(record,\"args\");return Object.keys(record).reduce(function(acc,key){return acc[key]=childRefFor(root,key),acc;},{});}(args));}var SERIALIZATION_FIRST_NODE_STRING=\"%+b:0%\";function isSerializationFirstNode(node){return\"%+b:0%\"===node.nodeValue;}var RehydratingCursor=/*#__PURE__*/function(_CursorImpl){function RehydratingCursor(element,nextSibling,startingBlockDepth){var _this27;_classCallCheck(this,RehydratingCursor);_this27=_callSuper(this,RehydratingCursor,[element,nextSibling]),_defineProperty(_assertThisInitialized(_this27),\"candidate\",null),_defineProperty(_assertThisInitialized(_this27),\"openBlockDepth\",void 0),_defineProperty(_assertThisInitialized(_this27),\"injectedOmittedNode\",!1),_this27.startingBlockDepth=startingBlockDepth,_this27.openBlockDepth=startingBlockDepth-1;return _this27;}_inherits(RehydratingCursor,_CursorImpl);return _createClass(RehydratingCursor);}(CursorImpl);var RehydrateBuilder=/*#__PURE__*/function(_NewElementBuilder2){function RehydrateBuilder(env,parentNode,nextSibling){var _this28;_classCallCheck(this,RehydrateBuilder);if(_this28=_callSuper(this,RehydrateBuilder,[env,parentNode,nextSibling]),_defineProperty(_assertThisInitialized(_this28),\"unmatchedAttributes\",null),_defineProperty(_assertThisInitialized(_this28),\"blockDepth\",0),_defineProperty(_assertThisInitialized(_this28),\"startingBlockOffset\",void 0),nextSibling)throw new Error(\"Rehydration with nextSibling not supported\");var node=_this28.currentCursor.element.firstChild;for(;null!==node&&!isOpenBlock(node);)node=node.nextSibling;debugAssert(node,\"Must have opening comment for rehydration.\"),_this28.candidate=node;var startingBlockOffset=getBlockDepth(node);if(0!==startingBlockOffset){// We are rehydrating from a partial tree and not the root component\n// We need to add an extra block before the first block to rehydrate correctly\n// The extra block is needed since the renderComponent API creates a synthetic component invocation which generates the extra block\nvar newBlockDepth=startingBlockOffset-1,newCandidate=_this28.dom.createComment(\"%+b:\".concat(newBlockDepth,\"%\"));node.parentNode.insertBefore(newCandidate,_this28.candidate);var closingNode=node.nextSibling;for(;null!==closingNode&&(!isCloseBlock(closingNode)||getBlockDepth(closingNode)!==startingBlockOffset);)closingNode=closingNode.nextSibling;debugAssert(closingNode,\"Must have closing comment for starting block comment\");var newClosingBlock=_this28.dom.createComment(\"%-b:\".concat(newBlockDepth,\"%\"));node.parentNode.insertBefore(newClosingBlock,closingNode.nextSibling),_this28.candidate=newCandidate,_this28.startingBlockOffset=newBlockDepth;}else _this28.startingBlockOffset=0;return _this28;}_inherits(RehydrateBuilder,_NewElementBuilder2);return _createClass(RehydrateBuilder,[{key:\"currentCursor\",get:function get(){return this[CURSOR_STACK].current;}},{key:\"candidate\",get:function get(){return this.currentCursor?this.currentCursor.candidate:null;},set:function set(node){this.currentCursor.candidate=node;}},{key:\"disableRehydration\",value:function disableRehydration(nextSibling){var currentCursor=this.currentCursor;// rehydration will be disabled until we either:\n// * hit popElement (and return to using the parent elements cursor)\n// * hit closeBlock and the next sibling is a close block comment\n//   matching the expected openBlockDepth\ncurrentCursor.candidate=null,currentCursor.nextSibling=nextSibling;}},{key:\"enableRehydration\",value:function enableRehydration(candidate){var currentCursor=this.currentCursor;currentCursor.candidate=candidate,currentCursor.nextSibling=null;}},{key:\"pushElement\",value:function pushElement(element){var nextSibling=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var cursor=new RehydratingCursor(element,nextSibling,this.blockDepth||0);/**\n              * <div>   <---------------  currentCursor.element\n              *   <!--%+b:1%--> <-------  would have been removed during openBlock\n              *   <div> <---------------  currentCursor.candidate -> cursor.element\n              *     <!--%+b:2%--> <-----  currentCursor.candidate.firstChild -> cursor.candidate\n              *     Foo\n              *     <!--%-b:2%-->\n              *   </div>\n              *   <!--%-b:1%-->  <------  becomes currentCursor.candidate\n              */null!==this.candidate&&(cursor.candidate=element.firstChild,this.candidate=element.nextSibling),this[CURSOR_STACK].push(cursor);}// clears until the end of the current container\n// either the current open block or higher\n},{key:\"clearMismatch\",value:function clearMismatch(candidate){var current=candidate;var currentCursor=this.currentCursor;if(null!==currentCursor){var openBlockDepth=currentCursor.openBlockDepth;if(openBlockDepth>=currentCursor.startingBlockDepth)for(;current&&!(isCloseBlock(current)&&openBlockDepth>=getBlockDepthWithOffset(current,this.startingBlockOffset));)current=this.remove(current);else for(;null!==current;)current=this.remove(current);// current cursor parentNode should be openCandidate if element\n// or openCandidate.parentNode if comment\nthis.disableRehydration(current);}}},{key:\"__openBlock\",value:function __openBlock(){var currentCursor=this.currentCursor;if(null===currentCursor)return;var blockDepth=this.blockDepth;this.blockDepth++;var candidate=currentCursor.candidate;if(null===candidate)return;var tagName=currentCursor.element.tagName;isOpenBlock(candidate)&&getBlockDepthWithOffset(candidate,this.startingBlockOffset)===blockDepth?(this.candidate=this.remove(candidate),currentCursor.openBlockDepth=blockDepth):\"TITLE\"!==tagName&&\"SCRIPT\"!==tagName&&\"STYLE\"!==tagName&&this.clearMismatch(candidate);}},{key:\"__closeBlock\",value:function __closeBlock(){var currentCursor=this.currentCursor;if(null===currentCursor)return;// openBlock is the last rehydrated open block\nvar openBlockDepth=currentCursor.openBlockDepth;// this currently is the expected next open block depth\nthis.blockDepth--;var candidate=currentCursor.candidate;var isRehydrating=!1;if(null!==candidate)//assert(\n//  openBlockDepth === this.blockDepth,\n//  'when rehydrating, openBlockDepth should match this.blockDepth here'\n//);\nif(isRehydrating=!0,isCloseBlock(candidate)&&getBlockDepthWithOffset(candidate,this.startingBlockOffset)===openBlockDepth){var nextSibling=this.remove(candidate);this.candidate=nextSibling,currentCursor.openBlockDepth--;}else// close the block and clear mismatch in parent container\n// we will be either at the end of the element\n// or at the end of our containing block\nthis.clearMismatch(candidate),isRehydrating=!1;if(!1===isRehydrating){// check if nextSibling matches our expected close block\n// if so, we remove the close block comment and\n// restore rehydration after clearMismatch disabled\nvar _nextSibling=currentCursor.nextSibling;if(null!==_nextSibling&&isCloseBlock(_nextSibling)&&getBlockDepthWithOffset(_nextSibling,this.startingBlockOffset)===this.blockDepth){// restore rehydration state\nvar _candidate2=this.remove(_nextSibling);this.enableRehydration(_candidate2),currentCursor.openBlockDepth--;}}}},{key:\"__appendNode\",value:function __appendNode(node){var candidate=this.candidate;// This code path is only used when inserting precisely one node. It needs more\n// comparison logic, but we can probably lean on the cases where this code path\n// is actually used.\nreturn candidate||_superPropGet(RehydrateBuilder,\"__appendNode\",this,3)([node]);}},{key:\"__appendHTML\",value:function __appendHTML(html){var candidateBounds=this.markerBounds();if(candidateBounds){var first=candidateBounds.firstNode(),last=candidateBounds.lastNode(),newBounds=new ConcreteBounds(this.element,first.nextSibling,last.previousSibling),possibleEmptyMarker=this.remove(first);return this.remove(last),null!==possibleEmptyMarker&&isEmpty$1(possibleEmptyMarker)&&(this.candidate=this.remove(possibleEmptyMarker),null!==this.candidate&&this.clearMismatch(this.candidate)),newBounds;}return _superPropGet(RehydrateBuilder,\"__appendHTML\",this,3)([html]);}},{key:\"remove\",value:function remove(node){var element=expect(node.parentNode,\"cannot remove a detached node\"),next=node.nextSibling;return element.removeChild(node),next;}},{key:\"markerBounds\",value:function markerBounds(){var _candidate=this.candidate;if(_candidate&&isMarker(_candidate)){var first=_candidate;var last=expect(first.nextSibling,\"BUG: serialization markers must be paired\");for(;last&&!isMarker(last);)last=expect(last.nextSibling,\"BUG: serialization markers must be paired\");return new ConcreteBounds(this.element,first,last);}return null;}},{key:\"__appendText\",value:function __appendText(string){var candidate=this.candidate;return candidate?3===candidate.nodeType?(candidate.nodeValue!==string&&(candidate.nodeValue=string),this.candidate=candidate.nextSibling,candidate):8===(node=candidate).nodeType&&\"%|%\"===node.nodeValue||isEmpty$1(candidate)&&\"\"===string?(this.candidate=this.remove(candidate),this.__appendText(string)):(this.clearMismatch(candidate),_superPropGet(RehydrateBuilder,\"__appendText\",this,3)([string])):_superPropGet(RehydrateBuilder,\"__appendText\",this,3)([string]);var node;}},{key:\"__appendComment\",value:function __appendComment(string){var _candidate=this.candidate;return _candidate&&8===_candidate.nodeType?(_candidate.nodeValue!==string&&(_candidate.nodeValue=string),this.candidate=_candidate.nextSibling,_candidate):(_candidate&&this.clearMismatch(_candidate),_superPropGet(RehydrateBuilder,\"__appendComment\",this,3)([string]));}},{key:\"__openElement\",value:function __openElement(tag){var _candidate=this.candidate;if(_candidate&&isElement(_candidate)&&function(candidate,tag){return candidate.namespaceURI===NS_SVG?candidate.tagName===tag:candidate.tagName===tag.toUpperCase();}(_candidate,tag))return this.unmatchedAttributes=[].slice.call(_candidate.attributes),_candidate;if(_candidate){if(isElement(_candidate)&&\"TBODY\"===_candidate.tagName)return this.pushElement(_candidate,null),this.currentCursor.injectedOmittedNode=!0,this.__openElement(tag);this.clearMismatch(_candidate);}return _superPropGet(RehydrateBuilder,\"__openElement\",this,3)([tag]);}},{key:\"__setAttribute\",value:function __setAttribute(name,value,namespace){var unmatched=this.unmatchedAttributes;if(unmatched){var attr=findByName(unmatched,name);if(attr)return attr.value!==value&&(attr.value=value),void unmatched.splice(unmatched.indexOf(attr),1);}return _superPropGet(RehydrateBuilder,\"__setAttribute\",this,3)([name,value,namespace]);}},{key:\"__setProperty\",value:function __setProperty(name,value){var unmatched=this.unmatchedAttributes;if(unmatched){var attr=findByName(unmatched,name);if(attr)return attr.value!==value&&(attr.value=value),void unmatched.splice(unmatched.indexOf(attr),1);}return _superPropGet(RehydrateBuilder,\"__setProperty\",this,3)([name,value]);}},{key:\"__flushElement\",value:function __flushElement(parent,constructing){var unmatched=this.unmatchedAttributes;if(unmatched){var _iterator45=_createForOfIteratorHelper(unmatched),_step45;try{for(_iterator45.s();!(_step45=_iterator45.n()).done;){var attr=_step45.value;this.constructing.removeAttribute(attr.name);}}catch(err){_iterator45.e(err);}finally{_iterator45.f();}this.unmatchedAttributes=null;}else _superPropGet(RehydrateBuilder,\"__flushElement\",this,3)([parent,constructing]);}},{key:\"willCloseElement\",value:function willCloseElement(){var candidate=this.candidate,currentCursor=this.currentCursor;null!==candidate&&this.clearMismatch(candidate),currentCursor&&currentCursor.injectedOmittedNode&&this.popElement(),_superPropGet(RehydrateBuilder,\"willCloseElement\",this,3)([]);}},{key:\"getMarker\",value:function getMarker(element,guid){var marker=element.querySelector(\"script[glmr=\\\"\".concat(guid,\"\\\"]\"));return marker?castToSimple(marker):null;}},{key:\"__pushRemoteElement\",value:function __pushRemoteElement(element,cursorId,insertBefore){var marker=this.getMarker(castToBrowser(element,\"HTML\"),cursorId);// when insertBefore is not present, we clear the element\nif(debugAssert(!marker||marker.parentNode===element,\"expected remote element marker's parent node to match remote element\"),void 0===insertBefore){for(;null!==element.firstChild&&element.firstChild!==marker;)this.remove(element.firstChild);insertBefore=null;}var cursor=new RehydratingCursor(element,null,this.blockDepth);this[CURSOR_STACK].push(cursor),null===marker?this.disableRehydration(insertBefore):this.candidate=this.remove(marker);var block=new RemoteLiveBlock(element);return this.pushLiveBlock(block,!0);}},{key:\"didAppendBounds\",value:function didAppendBounds(bounds){if(_superPropGet(RehydrateBuilder,\"didAppendBounds\",this,3)([bounds]),this.candidate){var last=bounds.lastNode();this.candidate=last&&last.nextSibling;}return bounds;}}]);}(NewElementBuilder);function isOpenBlock(node){return node.nodeType===COMMENT_NODE&&0===node.nodeValue.lastIndexOf(\"%+b:\",0);}function isCloseBlock(node){return node.nodeType===COMMENT_NODE&&0===node.nodeValue.lastIndexOf(\"%-b:\",0);}function getBlockDepth(node){return parseInt(node.nodeValue.slice(4),10);}function getBlockDepthWithOffset(node,offset){return getBlockDepth(node)-offset;}function isElement(node){return 1===node.nodeType;}function isMarker(node){return 8===node.nodeType&&\"%glmr%\"===node.nodeValue;}function isEmpty$1(node){return 8===node.nodeType&&\"% %\"===node.nodeValue;}function findByName(array,name){var _iterator46=_createForOfIteratorHelper(array),_step46;try{for(_iterator46.s();!(_step46=_iterator46.n()).done;){var attr=_step46.value;if(attr.name===name)return attr;}}catch(err){_iterator46.e(err);}finally{_iterator46.f();}}function rehydrationBuilder(env,cursor){return RehydrateBuilder.forInitialRender(env,cursor);}var glimmerRuntime=/*#__PURE__*/Object.defineProperty({__proto__:null,ConcreteBounds:ConcreteBounds,CurriedValue:CurriedValue,CursorImpl:CursorImpl,DOMChanges:DOMChanges,DOMTreeConstruction:DOMTreeConstruction,DynamicAttribute:DynamicAttribute,DynamicScopeImpl:DynamicScopeImpl,EMPTY_ARGS:EMPTY_ARGS,EMPTY_NAMED:EMPTY_NAMED,EMPTY_POSITIONAL:EMPTY_POSITIONAL,EnvironmentImpl:EnvironmentImpl,IDOMChanges:DOMChangesImpl,LowLevelVM:VM,NewElementBuilder:NewElementBuilder,PartialScopeImpl:PartialScopeImpl,RehydrateBuilder:RehydrateBuilder,RemoteLiveBlock:RemoteLiveBlock,SERIALIZATION_FIRST_NODE_STRING:SERIALIZATION_FIRST_NODE_STRING,SimpleDynamicAttribute:SimpleDynamicAttribute,TEMPLATE_ONLY_COMPONENT_MANAGER:TEMPLATE_ONLY_COMPONENT_MANAGER,TemplateOnlyComponent:TemplateOnlyComponentDefinition,TemplateOnlyComponentManager:TemplateOnlyComponentManager,UpdatableBlockImpl:UpdatableBlockImpl,UpdatingVM:UpdatingVM,array:array$1,clear:clear,clientBuilder:clientBuilder,concat:concat$1,createCapturedArgs:createCapturedArgs,curry:curry,destroy:_destroy,dynamicAttribute:dynamicAttribute,fn:fn$1,get:get$1,hash:hash$1,inTransaction:inTransaction,invokeHelper:invokeHelper$1,isDestroyed:isDestroyed,isDestroying:isDestroying,isSerializationFirstNode:isSerializationFirstNode,isWhitespace:isWhitespace,normalizeProperty:normalizeProperty,on:on$1,registerDestructor:registerDestructor$1,rehydrationBuilder:rehydrationBuilder,reifyArgs:reifyArgs,reifyNamed:reifyNamed,reifyPositional:reifyPositional,renderComponent:renderComponent,renderMain:renderMain,renderSync:renderSync,resetDebuggerCallback:resetDebuggerCallback,runtimeContext:runtimeContext,setDebuggerCallback:setDebuggerCallback,templateOnlyComponent:templateOnlyComponent},Symbol.toStringTag,{value:'Module'});// In normal TypeScript, this modifier is essentially an opaque token that just\n// needs to be importable. Declaring it with a unique interface like this,\n// however, gives tools like Glint (that *do* have a richer notion of what it\n// is) a place to install more detailed type information.\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// SAFETY: at the time of writing, the cast here is from `{}` to `OnModifier`,\n// which makes it strictly safer to use outside this module because it is not\n// usable as \"any non-null item\", which is what `{}` means, without loss of any\n// information from the type itself.\nvar on=on$1;var InputTemplate=templateFactory(/*\n            <input\n            {{!-- for compatibility --}}\n            id={{this.id}}\n            class={{this.class}}\n\n            ...attributes\n\n            type={{this.type}}\n            checked={{this.checked}}\n            value={{this.value}}\n\n            {{on \"change\" this.change}}\n            {{on \"input\" this.input}}\n            {{on \"keyup\" this.keyUp}}\n            {{on \"paste\" this.valueDidChange}}\n            {{on \"cut\" this.valueDidChange}}\n          />\n          */{\"id\":\"4z3DuGQ3\",\"block\":\"[[[11,\\\"input\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,0,[30,0,[\\\"class\\\"]]],[17,1],[16,4,[30,0,[\\\"type\\\"]]],[16,\\\"checked\\\",[30,0,[\\\"checked\\\"]]],[16,2,[30,0,[\\\"value\\\"]]],[4,[32,0],[\\\"change\\\",[30,0,[\\\"change\\\"]]],null],[4,[32,0],[\\\"input\\\",[30,0,[\\\"input\\\"]]],null],[4,[32,0],[\\\"keyup\\\",[30,0,[\\\"keyUp\\\"]]],null],[4,[32,0],[\\\"paste\\\",[30,0,[\\\"valueDidChange\\\"]]],null],[4,[32,0],[\\\"cut\\\",[30,0,[\\\"valueDidChange\\\"]]],null],[12],[13]],[\\\"&attrs\\\"],false,[]]\",\"moduleName\":\"packages/@ember/-internals/glimmer/lib/templates/input.hbs\",\"scope\":function scope(){return[on];},\"isStrictMode\":true});function NOOP$3(){}var InternalComponent=/*#__PURE__*/function(){function InternalComponent(owner,args,caller){_classCallCheck(this,InternalComponent);this.owner=owner;this.args=args;this.caller=caller;setOwner$1(this,owner);}/**\n             * The default HTML id attribute. We don't really _need_ one, this is just\n             * added for compatibility as it's hard to tell if people rely on it being\n             * present, and it doens't really hurt.\n             *\n             * However, don't rely on this internally, like passing it to `getElementId`.\n             * This can be (and often is) overriden by passing an `id` attribute on the\n             * invocation, which shadows this default id via `...attributes`.\n             */return _createClass(InternalComponent,[{key:\"id\",get:function get(){return guidFor(this);}/**\n             * The default HTML class attribute. Similar to the above, we don't _need_\n             * them, they are just added for compatibility as it's similarly hard to tell\n             * if people rely on it in their CSS etc, and it doens't really hurt.\n             */},{key:\"class\",get:function get(){return'ember-view';}},{key:\"validateArguments\",value:function validateArguments(){for(var _i19=0,_Object$keys2=Object.keys(this.args.named);_i19<_Object$keys2.length;_i19++){var _name25=_Object$keys2[_i19];if(!this.isSupportedArgument(_name25)){this.onUnsupportedArgument(_name25);}}}},{key:\"named\",value:function named(name){var ref=this.args.named[name];return ref?valueForRef(ref):undefined;}},{key:\"positional\",value:function positional(index){var ref=this.args.positional[index];return ref?valueForRef(ref):undefined;}},{key:\"listenerFor\",value:function listenerFor(name){var listener=this.named(name);if(listener){!(typeof listener==='function')&&assert$1(\"The `@\".concat(name,\"` argument to the <\").concat(this.constructor,\"> component must be a function\"),typeof listener==='function');return listener;}else{return NOOP$3;}}},{key:\"isSupportedArgument\",value:function isSupportedArgument(_name){return false;}},{key:\"onUnsupportedArgument\",value:function onUnsupportedArgument(_name){}},{key:\"toString\",value:function toString(){return\"<\".concat(this.constructor,\":\").concat(guidFor(this),\">\");}}],[{key:\"toString\",value:// Override this\nfunction toString(){return'internal component';}}]);}();var OPAQUE_CONSTRUCTOR_MAP=new WeakMap();function opaquify(constructor,template){var _opaque={// Factory interface\ncreate:function create(){throw assert$1('Use constructor instead of create');},toString:function toString(){return constructor.toString();}};var opaque=_opaque;OPAQUE_CONSTRUCTOR_MAP.set(opaque,constructor);setInternalComponentManager(INTERNAL_COMPONENT_MANAGER,opaque);setComponentTemplate(template,opaque);return opaque;}function deopaquify(opaque){var constructor=OPAQUE_CONSTRUCTOR_MAP.get(opaque);!constructor&&assert$1(\"[BUG] Invalid internal component constructor: \".concat(opaque),constructor);return constructor;}var CAPABILITIES$2={dynamicLayout:false,dynamicTag:false,prepareArgs:false,createArgs:true,attributeHook:false,elementHook:false,createCaller:true,dynamicScope:false,updateHook:false,createInstance:true,wrapped:false,willDestroy:false,hasSubOwner:false};var InternalManager=/*#__PURE__*/function(){function InternalManager(){_classCallCheck(this,InternalManager);}return _createClass(InternalManager,[{key:\"getCapabilities\",value:function getCapabilities(){return CAPABILITIES$2;}},{key:\"create\",value:function create(owner,definition,args,_env,_dynamicScope,caller){!isConstRef(caller)&&assert$1('caller must be const',isConstRef(caller));var ComponentClass=deopaquify(definition);var instance=new ComponentClass(owner,args.capture(),valueForRef(caller));untrack(instance['validateArguments'].bind(instance));return instance;}},{key:\"didCreate\",value:function didCreate(){}},{key:\"didUpdate\",value:function didUpdate(){}},{key:\"didRenderLayout\",value:function didRenderLayout(){}},{key:\"didUpdateLayout\",value:function didUpdateLayout(){}},{key:\"getDebugName\",value:function getDebugName(definition){return definition.toString();}},{key:\"getSelf\",value:function getSelf(instance){return createConstRef(instance,'this');}},{key:\"getDestroyable\",value:function getDestroyable(instance){return instance;}}]);}();var INTERNAL_COMPONENT_MANAGER=new InternalManager();var __defProp=Object.defineProperty;var __export=function __export(target,all){for(var name in all)__defProp(target,name,{get:all[name],enumerable:true});};// src/runtime.ts\nvar runtime_exports={};__export(runtime_exports,{c:function c(){return decorateClass;},f:function f(){return decorateFieldV1;},g:function g(){return decorateFieldV2;},i:function i(){return initializeDeferredDecorator;},m:function m(){return decorateMethodV1;},n:function n(){return decorateMethodV2;},p:function p(){return decoratePOJO;}});var deferred=/* @__PURE__ */new WeakMap();function deferDecorator(proto,prop,desc){var map=deferred.get(proto);if(!map){map=/* @__PURE__ */new Map();deferred.set(proto,map);}map.set(prop,desc);}function findDeferredDecorator(target,prop){var cursor=target.prototype;while(cursor){var _deferred$get;var desc=(_deferred$get=deferred.get(cursor))===null||_deferred$get===void 0?void 0:_deferred$get.get(prop);if(desc){return desc;}cursor=cursor.prototype;}}function decorateFieldV1(target,prop,decorators,initializer){return decorateFieldV2(target.prototype,prop,decorators,initializer);}function decorateFieldV2(prototype,prop,decorators,initializer){var desc={configurable:true,enumerable:true,writable:true,initializer:null};if(initializer){desc.initializer=initializer;}var _iterator47=_createForOfIteratorHelper(decorators),_step47;try{for(_iterator47.s();!(_step47=_iterator47.n()).done;){var decorator=_step47.value;desc=decorator(prototype,prop,desc)||desc;}}catch(err){_iterator47.e(err);}finally{_iterator47.f();}if(desc.initializer===void 0){Object.defineProperty(prototype,prop,desc);}else{deferDecorator(prototype,prop,desc);}}function decorateMethodV1(_ref173,prop,decorators){var prototype=_ref173.prototype;return decorateMethodV2(prototype,prop,decorators);}function decorateMethodV2(prototype,prop,decorators){var origDesc=Object.getOwnPropertyDescriptor(prototype,prop);var desc=_objectSpread({},origDesc);var _iterator48=_createForOfIteratorHelper(decorators),_step48;try{for(_iterator48.s();!(_step48=_iterator48.n()).done;){var decorator=_step48.value;desc=decorator(prototype,prop,desc)||desc;}}catch(err){_iterator48.e(err);}finally{_iterator48.f();}if(desc.initializer!==void 0){desc.value=desc.initializer?desc.initializer.call(prototype):void 0;desc.initializer=void 0;}Object.defineProperty(prototype,prop,desc);}function initializeDeferredDecorator(target,prop){var desc=findDeferredDecorator(target.constructor,prop);if(desc){Object.defineProperty(target,prop,{enumerable:desc.enumerable,configurable:desc.configurable,writable:desc.writable,value:desc.initializer?desc.initializer.call(target):void 0});}}function decorateClass(target,decorators){return decorators.reduce(function(accum,decorator){return decorator(accum)||accum;},target);}function decoratePOJO(pojo,decorated){var _iterator49=_createForOfIteratorHelper(decorated),_step49;try{for(_iterator49.s();!(_step49=_iterator49.n()).done;){var _step49$value=_slicedToArray(_step49.value,3),type=_step49$value[0],prop=_step49$value[1],decorators=_step49$value[2];if(type===\"field\"){decoratePojoField(pojo,prop,decorators);}else{decorateMethodV2(pojo,prop,decorators);}}}catch(err){_iterator49.e(err);}finally{_iterator49.f();}return pojo;}function decoratePojoField(pojo,prop,decorators){var desc={configurable:true,enumerable:true,writable:true,initializer:function initializer(){var _Object$getOwnPropert;return(_Object$getOwnPropert=Object.getOwnPropertyDescriptor(pojo,prop))===null||_Object$getOwnPropert===void 0?void 0:_Object$getOwnPropert.value;}};var _iterator50=_createForOfIteratorHelper(decorators),_step50;try{for(_iterator50.s();!(_step50=_iterator50.n()).done;){var decorator=_step50.value;desc=decorator(pojo,prop,desc)||desc;}}catch(err){_iterator50.e(err);}finally{_iterator50.f();}if(desc.initializer){desc.value=desc.initializer.call(pojo);delete desc.initializer;}Object.defineProperty(pojo,prop,desc);}var UNINITIALIZED=Object.freeze({});function elementForEvent(event){!(event.target instanceof HTMLInputElement||event.target instanceof HTMLTextAreaElement)&&assert$1('[BUG] event target must be an <input> or <textarea> element',event.target instanceof HTMLInputElement||event.target instanceof HTMLTextAreaElement);return event.target;}function valueForEvent(event){return elementForEvent(event).value;}function devirtualize(callback){return function(event){return callback(valueForEvent(event),event);};}function valueFrom(reference){if(reference===undefined){return new LocalValue(undefined);}else if(isConstRef(reference)){return new LocalValue(valueForRef(reference));}else if(isUpdatableRef(reference)){return new UpstreamValue(reference);}else{return new ForkedValue(reference);}}var _value5=/*#__PURE__*/new WeakMap();var LocalValue=/*#__PURE__*/function(){function LocalValue(value){_classCallCheck(this,LocalValue);_classPrivateFieldInitSpec(this,_value5,(initializeDeferredDecorator(this,\"value\"),void 0));this.value=value;}return _createClass(LocalValue,[{key:\"get\",value:function get(){return this.value;}},{key:\"set\",value:function set(value){this.value=value;}}]);}();_LocalValue=LocalValue;decorateFieldV2(_LocalValue.prototype,\"value\",[tracked]);var UpstreamValue=/*#__PURE__*/function(){function UpstreamValue(reference){_classCallCheck(this,UpstreamValue);this.reference=reference;}return _createClass(UpstreamValue,[{key:\"get\",value:function get(){return valueForRef(this.reference);}},{key:\"set\",value:function set(value){updateRef(this.reference,value);}}]);}();var ForkedValue=/*#__PURE__*/function(){function ForkedValue(reference){_classCallCheck(this,ForkedValue);_defineProperty(this,\"local\",void 0);_defineProperty(this,\"upstream\",void 0);_defineProperty(this,\"lastUpstreamValue\",UNINITIALIZED);this.upstream=new UpstreamValue(reference);}return _createClass(ForkedValue,[{key:\"get\",value:function get(){var upstreamValue=this.upstream.get();if(upstreamValue!==this.lastUpstreamValue){this.lastUpstreamValue=upstreamValue;this.local=new LocalValue(upstreamValue);}!this.local&&assert$1('[BUG] this.local must have been initialized at this point',this.local);return this.local.get();}},{key:\"set\",value:function set(value){!this.local&&assert$1('[BUG] this.local must have been initialized at this point',this.local);this.local.set(value);}}]);}();var AbstractInput=/*#__PURE__*/function(_InternalComponent){function AbstractInput(){var _this29;_classCallCheck(this,AbstractInput);for(var _len44=arguments.length,args=new Array(_len44),_key44=0;_key44<_len44;_key44++){args[_key44]=arguments[_key44];}_this29=_callSuper(this,AbstractInput,[].concat(args));_defineProperty(_this29,\"_value\",valueFrom(_this29.args.named['value']));return _this29;}_inherits(AbstractInput,_InternalComponent);return _createClass(AbstractInput,[{key:\"validateArguments\",value:function validateArguments(){!(this.args.positional.length===0)&&assert$1(\"The \".concat(this.constructor,\" component does not take any positional arguments\"),this.args.positional.length===0);_superPropGet(AbstractInput,\"validateArguments\",this,3)([]);}},{key:\"value\",get:function get(){return this._value.get();},set:function set(value){this._value.set(value);}},{key:\"valueDidChange\",value:function valueDidChange(event){this.value=valueForEvent(event);}/**\n             * The `change` and `input` actions need to be overridden in the `Input`\n             * subclass. Unfortunately, some ember-source builds currently uses babel\n             * loose mode to transpile its classes. Having the `@action` decorator on the\n             * super class creates a getter on the prototype, and when the subclass\n             * overrides the method, the loose mode transpilation would emit something\n             * like `Subclass.prototype['change'] = function change() { ... }`, which\n             * fails because `prototype['change']` is getter-only/readonly. The correct\n             * solution is to use `Object.defineProperty(prototype, 'change', ...)` but\n             * that requires disabling loose mode. For now, the workaround is to add the\n             * decorator only on the subclass. This is more of a configuration issue on\n             * our own builds and doesn't really affect apps.\n             *//* @action */},{key:\"change\",value:function change(event){this.valueDidChange(event);}/* @action */},{key:\"input\",value:function input(event){this.valueDidChange(event);}},{key:\"keyUp\",value:function keyUp(event){switch(event.key){case'Enter':this.listenerFor('enter')(event);this.listenerFor('insert-newline')(event);break;case'Escape':this.listenerFor('escape-press')(event);break;}}},{key:\"listenerFor\",value:function listenerFor(name){var listener=_superPropGet(AbstractInput,\"listenerFor\",this,3)([name]);if(this.isVirtualEventListener(name,listener)){return devirtualize(listener);}else{return listener;}}},{key:\"isVirtualEventListener\",value:function isVirtualEventListener(name,_listener){var virtualEvents=['enter','insert-newline','escape-press'];return virtualEvents.indexOf(name)!==-1;}}]);}(InternalComponent);/**\n          @module @ember/component\n          */_AbstractInput=AbstractInput;decorateMethodV2(_AbstractInput.prototype,\"valueDidChange\",[action$1]);decorateMethodV2(_AbstractInput.prototype,\"keyUp\",[action$1]);var isValidInputType;if(hasDOM){var INPUT_TYPES=Object.create(null);var INPUT_ELEMENT=document.createElement('input');INPUT_TYPES['']=false;INPUT_TYPES['text']=true;INPUT_TYPES['checkbox']=true;isValidInputType=function isValidInputType(type){var isValid=INPUT_TYPES[type];if(isValid===undefined){try{INPUT_ELEMENT.type=type;isValid=INPUT_ELEMENT.type===type;}catch(_e){isValid=false;}finally{INPUT_ELEMENT.type='text';}INPUT_TYPES[type]=isValid;}return isValid;};}else{isValidInputType=function isValidInputType(type){return type!=='';};}/**\n            See [Ember.Templates.components.Input](/ember/release/classes/Ember.Templates.components/methods/Input?anchor=Input).\n\n            @method input\n            @for Ember.Templates.helpers\n            @param {Hash} options\n            @public\n            *//**\n            An opaque interface which can be imported and used in strict-mode\n            templates to call <Input>.\n\n            See [Ember.Templates.components.Input](/ember/release/classes/Ember.Templates.components/methods/Input?anchor=Input).\n\n            @for @ember/component\n            @method Input\n            @see {Ember.Templates.components.Input}\n            @public\n          **//**\n            The `Input` component lets you create an HTML `<input>` element.\n\n            ```handlebars\n            <Input @value=\"987\" />\n            ```\n\n            creates an `<input>` element with `type=\"text\"` and value set to 987.\n\n            ### Text field\n\n            If no `type` argument is specified, a default of type 'text' is used.\n\n            ```handlebars\n            Search:\n            <Input @value={{this.searchWord}} />\n            ```\n\n            In this example, the initial value in the `<input>` will be set to the value of\n            `this.searchWord`. If the user changes the text, the value of `this.searchWord` will also be\n            updated.\n\n            ### Actions\n\n            The `Input` component takes a number of arguments with callbacks that are invoked in response to\n            user events.\n\n            * `enter`\n            * `insert-newline`\n            * `escape-press`\n            * `focus-in`\n            * `focus-out`\n            * `key-down`\n            * `key-press`\n            * `key-up`\n\n            These callbacks are passed to `Input` like this:\n\n            ```handlebars\n            <Input @value={{this.searchWord}} @enter={{this.query}} />\n            ```\n\n            Starting with Ember Octane, we recommend using the `{{on}}` modifier to call actions\n            on specific events, such as the input event.\n\n            ```handlebars\n            <label for=\"input-name\">Name:</label>\n            <Input\n              @id=\"input-name\"\n              @value={{this.name}}\n              {{on \"input\" this.validateName}}\n            />\n            ```\n\n            The event name (e.g. `focusout`, `input`, `keydown`) always follows the casing\n            that the HTML standard uses.\n\n            ### `<input>` HTML Attributes to Avoid\n\n            In most cases, if you want to pass an attribute to the underlying HTML `<input>` element, you\n            can pass the attribute directly, just like any other Ember component.\n\n            ```handlebars\n            <Input @type=\"text\" size=\"10\" />\n            ```\n\n            In this example, the `size` attribute will be applied to the underlying `<input>` element in the\n            outputted HTML.\n\n            However, there are a few attributes where you **must** use the `@` version.\n\n            * `@type`: This argument is used to control which Ember component is used under the hood\n            * `@value`: The `@value` argument installs a two-way binding onto the element. If you wanted a\n              one-way binding, use `<input>` with the `value` property and the `input` event instead.\n            * `@checked` (for checkboxes): like `@value`, the `@checked` argument installs a two-way binding\n              onto the element. If you wanted a one-way binding, use `<input type=\"checkbox\">` with\n              `checked` and the `input` event instead.\n\n            ### Checkbox\n\n            To create an `<input type=\"checkbox\">`:\n\n            ```handlebars\n            Emberize Everything:\n            <Input @type=\"checkbox\" @checked={{this.isEmberized}} name=\"isEmberized\" />\n            ```\n\n            This will bind the checked state of this checkbox to the value of `isEmberized` -- if either one\n            changes, it will be reflected in the other.\n\n            @method Input\n            @for Ember.Templates.components\n            @param {Hash} options\n            @public\n          */var _Input=/*#__PURE__*/function(_AbstractInput2){function _Input(){var _this30;_classCallCheck(this,_Input);for(var _len45=arguments.length,args=new Array(_len45),_key45=0;_key45<_len45;_key45++){args[_key45]=arguments[_key45];}_this30=_callSuper(this,_Input,[].concat(args));_defineProperty(_this30,\"_checked\",valueFrom(_this30.args.named['checked']));return _this30;}_inherits(_Input,_AbstractInput2);return _createClass(_Input,[{key:\"class\",get:/**\n             * The HTML class attribute.\n             */function get(){if(this.isCheckbox){return'ember-checkbox ember-view';}else{return'ember-text-field ember-view';}}/**\n             * The HTML type attribute.\n             */},{key:\"type\",get:function get(){var type=this.named('type');if(type===null||type===undefined){return'text';}!(typeof type==='string')&&assert$1('The `@type` argument to the <Input> component must be a string',typeof type==='string');return isValidInputType(type)?type:'text';}},{key:\"isCheckbox\",get:function get(){return this.named('type')==='checkbox';}},{key:\"checked\",get:function get(){var _this31=this;if(this.isCheckbox){warn('`<Input @type=\"checkbox\" />` reflects its checked state via the `@checked` argument. '+'You wrote `<Input @type=\"checkbox\" @value={{...}} />` which is likely not what you intended. '+'Did you mean `<Input @type=\"checkbox\" @checked={{...}} />`?',untrack(function(){return _this31.args.named['checked']!==undefined||_this31.args.named['value']===undefined||typeof valueForRef(_this31.args.named['value'])==='string';}),{id:'ember.built-in-components.input-checkbox-value'});return this._checked.get();}else{return undefined;}},set:function set(checked){var _this32=this;warn('`<Input @type=\"checkbox\" />` reflects its checked state via the `@checked` argument. '+'You wrote `<Input @type=\"checkbox\" @value={{...}} />` which is likely not what you intended. '+'Did you mean `<Input @type=\"checkbox\" @checked={{...}} />`?',untrack(function(){return _this32.args.named['checked']!==undefined||_this32.args.named['value']===undefined||typeof valueForRef(_this32.args.named['value'])==='string';}),{id:'ember.built-in-components.input-checkbox-value'});this._checked.set(checked);}},{key:\"change\",value:function change(event){if(this.isCheckbox){this.checkedDidChange(event);}else{_superPropGet(_Input,\"change\",this,3)([event]);}}},{key:\"input\",value:function input(event){if(!this.isCheckbox){_superPropGet(_Input,\"input\",this,3)([event]);}}},{key:\"checkedDidChange\",value:function checkedDidChange(event){var element=event.target;!(element instanceof HTMLInputElement)&&assert$1('[BUG] element must be an <input>',element instanceof HTMLInputElement);this.checked=element.checked;}},{key:\"isSupportedArgument\",value:function isSupportedArgument(name){var supportedArguments=['type','value','checked','enter','insert-newline','escape-press'];return supportedArguments.indexOf(name)!==-1||_superPropGet(_Input,\"isSupportedArgument\",this,3)([name]);}}],[{key:\"toString\",value:function toString(){return'Input';}}]);}(AbstractInput);_Input2=_Input;decorateMethodV2(_Input2.prototype,\"change\",[action$1]);decorateMethodV2(_Input2.prototype,\"input\",[action$1]);decorateMethodV2(_Input2.prototype,\"checkedDidChange\",[action$1]);var Input=opaquify(_Input,InputTemplate);/**\n          @module ember\n          */function isSimpleClick(event){if(!(event instanceof MouseEvent)){return false;}var modifier=event.shiftKey||event.metaKey||event.altKey||event.ctrlKey;var secondaryClick=event.which>1;// IE9 may return undefined\nreturn!modifier&&!secondaryClick;}function constructStyleDeprecationMessage(affectedStyle){return''+'Binding style attributes may introduce cross-site scripting vulnerabilities; '+'please ensure that values being bound are properly escaped. For more information, '+'including how to disable this warning, see '+'https://deprecations.emberjs.com/v1.x/#toc_binding-style-attributes. '+'Style affected: \"'+affectedStyle+'\"';}/**\n            @private\n            @method getRootViews\n            @param {Object} owner\n          */function getRootViews(owner){var registry=owner.lookup('-view-registry:main');var rootViews=[];Object.keys(registry).forEach(function(id){var view=registry[id];!view&&assert$1('expected view',view);if(view.parentView===null){rootViews.push(view);}});return rootViews;}/**\n            @private\n            @method getViewId\n            @param {Ember.View} view\n           */function getViewId(view){if(view.tagName!==''&&view.elementId){return view.elementId;}else{return guidFor(view);}}var ELEMENT_VIEW=new WeakMap();var VIEW_ELEMENT=new WeakMap();function getElementView(element){return ELEMENT_VIEW.get(element)||null;}/**\n            @private\n            @method getViewElement\n            @param {Ember.View} view\n           */function getViewElement(view){return VIEW_ELEMENT.get(view)||null;}function setElementView(element,view){ELEMENT_VIEW.set(element,view);}function setViewElement(view,element){VIEW_ELEMENT.set(view,element);}// These are not needed for GC, but for correctness. We want to be able to\n// null-out these links while the objects are still live. Specifically, in\n// this case, we want to prevent access to the element (and vice verse) during\n// destruction.\nfunction clearElementView(element){ELEMENT_VIEW.delete(element);}function clearViewElement(view){VIEW_ELEMENT.delete(view);}var CHILD_VIEW_IDS=new WeakMap();/**\n            @private\n            @method getChildViews\n            @param {Ember.View} view\n          */function getChildViews(view){var owner=getOwner$2(view);!owner&&assert$1('View is unexpectedly missing an owner',owner);var registry=owner.lookup('-view-registry:main');return collectChildViews(view,registry);}function initChildViews(view){var childViews=new Set();CHILD_VIEW_IDS.set(view,childViews);return childViews;}function addChildView(parent,child){var childViews=CHILD_VIEW_IDS.get(parent);if(childViews===undefined){childViews=initChildViews(parent);}childViews.add(getViewId(child));}function collectChildViews(view,registry){var views=[];var childViews=CHILD_VIEW_IDS.get(view);if(childViews!==undefined){childViews.forEach(function(id){var view=registry[id];if(view&&!view.isDestroying&&!view.isDestroyed){views.push(view);}});}return views;}/**\n            @private\n            @method getViewBounds\n            @param {Ember.View} view\n          */function getViewBounds(view){return view.renderer.getBounds(view);}/**\n            @private\n            @method getViewRange\n            @param {Ember.View} view\n          */function getViewRange(view){var bounds=getViewBounds(view);var range=document.createRange();range.setStartBefore(bounds.firstNode);range.setEndAfter(bounds.lastNode);return range;}/**\n            `getViewClientRects` provides information about the position of the border\n            box edges of a view relative to the viewport.\n\n            It is only intended to be used by development tools like the Ember Inspector\n            and may not work on older browsers.\n\n            @private\n            @method getViewClientRects\n            @param {Ember.View} view\n          */function getViewClientRects(view){var range=getViewRange(view);return range.getClientRects();}/**\n            `getViewBoundingClientRect` provides information about the position of the\n            bounding border box edges of a view relative to the viewport.\n\n            It is only intended to be used by development tools like the Ember Inspector\n            and may not work on older browsers.\n\n            @private\n            @method getViewBoundingClientRect\n            @param {Ember.View} view\n          */function getViewBoundingClientRect(view){var range=getViewRange(view);return range.getBoundingClientRect();}/**\n            Determines if the element matches the specified selector.\n\n            @private\n            @method matches\n            @param {DOMElement} el\n            @param {String} selector\n          */var elMatches=typeof Element!=='undefined'?Element.prototype.matches:undefined;function matches(el,selector){!(elMatches!==undefined)&&assert$1('cannot call `matches` in fastboot mode',elMatches!==undefined);return elMatches.call(el,selector);}function contains(a,b){if(a.contains!==undefined){return a.contains(b);}var current=b.parentNode;while(current&&(current=current.parentNode)){if(current===a){return true;}}return false;}var emberinternalsViewsLibSystemUtils=/*#__PURE__*/Object.defineProperty({__proto__:null,addChildView:addChildView,clearElementView:clearElementView,clearViewElement:clearViewElement,collectChildViews:collectChildViews,constructStyleDeprecationMessage:constructStyleDeprecationMessage,contains:contains,elMatches:elMatches,getChildViews:getChildViews,getElementView:getElementView,getRootViews:getRootViews,getViewBoundingClientRect:getViewBoundingClientRect,getViewBounds:getViewBounds,getViewClientRects:getViewClientRects,getViewElement:getViewElement,getViewId:getViewId,getViewRange:getViewRange,initChildViews:initChildViews,isSimpleClick:isSimpleClick,matches:matches,setElementView:setElementView,setViewElement:setViewElement},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */function ActionManager(){}/**\n            Global action id hash.\n\n            @private\n            @property registeredActions\n            @type Object\n          */ActionManager.registeredActions={};var emberinternalsViewsLibSystemActionManager=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ActionManager},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */var ROOT_ELEMENT_CLASS='ember-application';var ROOT_ELEMENT_SELECTOR=\".\".concat(ROOT_ELEMENT_CLASS);/**\n            `Ember.EventDispatcher` handles delegating browser events to their\n            corresponding `Ember.Views.` For example, when you click on a view,\n            `Ember.EventDispatcher` ensures that that view's `mouseDown` method gets\n            called.\n\n            @class EventDispatcher\n            @namespace Ember\n            @private\n            @extends EmberObject\n          */var EventDispatcher=/*#__PURE__*/function(_EmberObject){function EventDispatcher(){var _this33;_classCallCheck(this,EventDispatcher);for(var _len46=arguments.length,args=new Array(_len46),_key46=0;_key46<_len46;_key46++){args[_key46]=arguments[_key46];}_this33=_callSuper(this,EventDispatcher,[].concat(args));/**\n              The set of events names (and associated handler function names) to be setup\n              and dispatched by the `EventDispatcher`. Modifications to this list can be done\n              at setup time, generally via the `Application.customEvents` hash.\n               To add new events to be listened to:\n               ```javascript\n              import Application from '@ember/application';\n               let App = Application.create({\n                customEvents: {\n                  paste: 'paste'\n                }\n              });\n              ```\n               To prevent default events from being listened to:\n               ```javascript\n              import Application from '@ember/application';\n               let App = Application.create({\n                customEvents: {\n                  mouseenter: null,\n                  mouseleave: null\n                }\n              });\n              ```\n              @property events\n              @type Object\n              @private\n            */_defineProperty(_this33,\"events\",{touchstart:'touchStart',touchmove:'touchMove',touchend:'touchEnd',touchcancel:'touchCancel',keydown:'keyDown',keyup:'keyUp',keypress:'keyPress',mousedown:'mouseDown',mouseup:'mouseUp',contextmenu:'contextMenu',click:'click',dblclick:'doubleClick',focusin:'focusIn',focusout:'focusOut',submit:'submit',input:'input',change:'change',dragstart:'dragStart',drag:'drag',dragenter:'dragEnter',dragleave:'dragLeave',dragover:'dragOver',drop:'drop',dragend:'dragEnd'});/**\n              The root DOM element to which event listeners should be attached. Event\n              listeners will be attached to the document unless this is overridden.\n               Can be specified as a DOMElement or a selector string.\n               The default body is a string since this may be evaluated before document.body\n              exists in the DOM.\n               @private\n              @property rootElement\n              @type DOMElement\n              @default 'body'\n            */_defineProperty(_this33,\"rootElement\",'body');_defineProperty(_this33,\"_eventHandlers\",Object.create(null));_defineProperty(_this33,\"_didSetup\",false);_defineProperty(_this33,\"finalEventNameMapping\",null);_defineProperty(_this33,\"_sanitizedRootElement\",null);_defineProperty(_this33,\"lazyEvents\",new Map());_defineProperty(_this33,\"_reverseEventNameMapping\",null);return _this33;}_inherits(EventDispatcher,_EmberObject);return _createClass(EventDispatcher,[{key:\"setup\",value:/**\n              Sets up event listeners for standard browser events.\n               This will be called after the browser sends a `DOMContentReady` event. By\n              default, it will set up all of the listeners on the document body. If you\n              would like to register the listeners on a different element, set the event\n              dispatcher's `root` property.\n               @private\n              @method setup\n              @param addedEvents {Object}\n            */function setup(addedEvents,_rootElement){var _this34=this;!function(){var owner=getOwner$2(_this34);!owner&&assert$1('[BUG] Missing owner',owner);// SAFETY: This is not guaranteed to be safe, but this is what we expect to be returned.\nvar environment=owner.lookup('-environment:main');return environment.isInteractive;}()&&assert$1('EventDispatcher should never be setup in fastboot mode. Please report this as an Ember bug.',function(){var owner=getOwner$2(_this34);!owner&&assert$1('[BUG] Missing owner',owner);var environment=owner.lookup('-environment:main');return environment.isInteractive;}());var events=this.finalEventNameMapping=_objectSpread(_objectSpread({},get$2(this,'events')),addedEvents);this._reverseEventNameMapping=Object.keys(events).reduce(function(result,key){var eventName=events[key];return eventName?_objectSpread(_objectSpread({},result),{},_defineProperty({},eventName,key)):result;},{});var lazyEvents=this.lazyEvents;if(_rootElement!==undefined&&_rootElement!==null){_set5(this,'rootElement',_rootElement);}var specifiedRootElement=get$2(this,'rootElement');var rootElement=typeof specifiedRootElement!=='string'?specifiedRootElement:document.querySelector(specifiedRootElement);!rootElement&&assert$1(\"Could not find rootElement (\".concat(specifiedRootElement,\")\"),rootElement);!!rootElement.classList.contains(ROOT_ELEMENT_CLASS)&&assert$1(\"You cannot use the same root element (\".concat(specifiedRootElement,\") multiple times in an Ember.Application\"),!rootElement.classList.contains(ROOT_ELEMENT_CLASS));!function(){var target=rootElement.parentNode;while(target instanceof Element){if(target.classList.contains(ROOT_ELEMENT_CLASS)){return false;}target=target.parentNode;}return true;}()&&assert$1('You cannot make a new Ember.Application using a root element that is a descendent of an existing Ember.Application',function(){var target=rootElement.parentNode;while(target instanceof Element){if(target.classList.contains(ROOT_ELEMENT_CLASS)){return false;}target=target.parentNode;}return true;}());!!rootElement.querySelector(ROOT_ELEMENT_SELECTOR)&&assert$1('You cannot make a new Ember.Application using a root element that is an ancestor of an existing Ember.Application',!rootElement.querySelector(ROOT_ELEMENT_SELECTOR));rootElement.classList.add(ROOT_ELEMENT_CLASS);!rootElement.classList.contains(ROOT_ELEMENT_CLASS)&&assert$1(\"Unable to add '\".concat(ROOT_ELEMENT_CLASS,\"' class to root element (\").concat(get$2(this,'rootElement')||rootElement.tagName,\"). Make sure you set rootElement to the body or an element in the body.\"),rootElement.classList.contains(ROOT_ELEMENT_CLASS));// save off the final sanitized root element (for usage in setupHandler)\nthis._sanitizedRootElement=rootElement;// setup event listeners for the non-lazily setup events\nfor(var event in events){if(Object.prototype.hasOwnProperty.call(events,event)){var _events$event;lazyEvents.set(event,(_events$event=events[event])!==null&&_events$event!==void 0?_events$event:null);}}this._didSetup=true;}/**\n              Setup event listeners for the given browser event name\n               @private\n              @method setupHandlerForBrowserEvent\n              @param event the name of the event in the browser\n            */},{key:\"setupHandlerForBrowserEvent\",value:function setupHandlerForBrowserEvent(event){var _this$finalEventNameM;!this.finalEventNameMapping&&assert$1('[BUG] Expected finalEventNameMapping to be set',this.finalEventNameMapping);!this._sanitizedRootElement&&assert$1('[BUG] Expected _santizedRootElement to be set',this._sanitizedRootElement);this.setupHandler(this._sanitizedRootElement,event,(_this$finalEventNameM=this.finalEventNameMapping[event])!==null&&_this$finalEventNameM!==void 0?_this$finalEventNameM:null);}/**\n              Setup event listeners for the given Ember event name (camel case)\n               @private\n              @method setupHandlerForEmberEvent\n              @param eventName\n            */},{key:\"setupHandlerForEmberEvent\",value:function setupHandlerForEmberEvent(eventName){var _this$_reverseEventNa;!this._sanitizedRootElement&&assert$1('[BUG] Expected _sanitizedRootElement to be set',this._sanitizedRootElement);var event=(_this$_reverseEventNa=this._reverseEventNameMapping)===null||_this$_reverseEventNa===void 0?void 0:_this$_reverseEventNa[eventName];if(event){this.setupHandler(this._sanitizedRootElement,event,eventName);}}/**\n              Registers an event listener on the rootElement. If the given event is\n              triggered, the provided event handler will be triggered on the target view.\n               If the target view does not implement the event handler, or if the handler\n              returns `false`, the parent view will be called. The event will continue to\n              bubble to each successive parent view until it reaches the top.\n               @private\n              @method setupHandler\n              @param {Element} rootElement\n              @param {String} event the name of the event in the browser\n              @param {String} eventName the name of the method to call on the view\n            */},{key:\"setupHandler\",value:function setupHandler(rootElement,event,eventName){if(eventName===null||!this.lazyEvents.has(event)){return;// nothing to do\n}var viewHandler=function viewHandler(target,event){var view=getElementView(target);var result=true;if(view){// SAFETY: As currently written, this is not safe. Though it seems to always be true.\nresult=view.handleEvent(eventName,event);}return result;};var actionHandler=function actionHandler(target,event){var actionId=target.getAttribute('data-ember-action');var actions;// In Glimmer2 this attribute is set to an empty string and an additional\n// attribute it set for each action on a given element. In this case, the\n// attributes need to be read so that a proper set of action handlers can\n// be coalesced.\nif(actionId===''){actions=[];var _iterator51=_createForOfIteratorHelper(target.attributes),_step51;try{for(_iterator51.s();!(_step51=_iterator51.n()).done;){var attr=_step51.value;var attrName=attr.name;if(attrName.indexOf('data-ember-action-')===0){var _action=ActionManager.registeredActions[attr.value];!_action&&assert$1('[BUG] Missing action',_action);actions.push(_action);}}}catch(err){_iterator51.e(err);}finally{_iterator51.f();}}else if(actionId){// FIXME: This branch is never called in tests. Improve tests or remove\nvar actionState=ActionManager.registeredActions[actionId];if(actionState){actions=[actionState];}}// We have to check for actions here since in some cases, jQuery will trigger\n// an event on `removeChild` (i.e. focusout) after we've already torn down the\n// action handlers for the view.\nif(!actions){// FIXME: This branch is never called in tests. Improve tests or remove\nreturn;}var result=true;for(var _index3=0;_index3<actions.length;_index3++){var _action2=actions[_index3];if(_action2&&_action2.eventName===eventName){// return false if any of the action handlers returns false\nresult=_action2.handler(event)&&result;}}return result;};var handleEvent=this._eventHandlers[event]=function(event){var target=event.target;!(target instanceof Element)&&assert$1(\"[BUG] Received event without an Element target: \".concat(event.type,\", \").concat(target),target instanceof Element);do{if(getElementView(target)){if(viewHandler(target,event)===false){event.preventDefault();event.stopPropagation();break;}else if(event.cancelBubble===true){break;}}else if(typeof target.hasAttribute==='function'&&target.hasAttribute('data-ember-action')){if(actionHandler(target,event)===false){break;}}target=target.parentNode;}while(target instanceof Element);};rootElement.addEventListener(event,handleEvent);this.lazyEvents.delete(event);}},{key:\"destroy\",value:function destroy(){if(this._didSetup===false){return;}var rootElement=this._sanitizedRootElement;if(!rootElement){return;}for(var event in this._eventHandlers){rootElement.removeEventListener(event,this._eventHandlers[event]);}rootElement.classList.remove(ROOT_ELEMENT_CLASS);return this._super.apply(this,arguments);}},{key:\"toString\",value:function toString(){return'(EventDispatcher)';}}]);}(EmberObject);var emberinternalsViewsLibSystemEventDispatcher=/*#__PURE__*/Object.defineProperty({__proto__:null,default:EventDispatcher},Symbol.toStringTag,{value:'Module'});var ComponentLookup=EmberObject.extend({componentFor:function componentFor(name,owner){var fullName=\"component:\".concat(name);return owner.factoryFor(fullName);},layoutFor:function layoutFor(name,owner,options){var templateFullName=\"template:components/\".concat(name);return owner.lookup(templateFullName,options);}});var emberinternalsViewsLibComponentLookup=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ComponentLookup},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object/evented\n          *//**\n            This mixin allows for Ember objects to subscribe to and emit events.\n\n            ```app/utils/person.js\n            import EmberObject from '@ember/object';\n            import Evented from '@ember/object/evented';\n\n            export default EmberObject.extend(Evented, {\n              greet() {\n                // ...\n                this.trigger('greet');\n              }\n            });\n            ```\n\n            ```javascript\n            var person = Person.create();\n\n            person.on('greet', function() {\n              console.log('Our person has greeted');\n            });\n\n            person.greet();\n\n            // outputs: 'Our person has greeted'\n            ```\n\n            You can also chain multiple event subscriptions:\n\n            ```javascript\n            person.on('greet', function() {\n              console.log('Our person has greeted');\n            }).one('greet', function() {\n              console.log('Offer one-time special');\n            }).off('event', this, forgetThis);\n            ```\n\n            @class Evented\n            @public\n           */var Evented=Mixin.create({on:function on(name,target,method){addListener(this,name,target,method);return this;},one:function one(name,target,method){addListener(this,name,target,method,true);return this;},trigger:function trigger(name){for(var _len47=arguments.length,args=new Array(_len47>1?_len47-1:0),_key47=1;_key47<_len47;_key47++){args[_key47-1]=arguments[_key47];}sendEvent(this,name,args);},off:function off(name,target,method){removeListener(this,name,target,method);return this;},has:function has(name){return hasListeners(this,name);}});var emberObjectEvented=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Evented,on:on$3},Symbol.toStringTag,{value:'Module'});// Here we have runtime shenanigans to add debug-only errors to the class in dev\n// builds. Those runtime shenanigans produce the need for type-level shenanigans\n// to match: if we just assign without an explicit type annotation on the `let`\n// binding below for `FrameworkObject`, TS gets stuck because this creates\n// `FrameworkObject` with a class expression (rather than the usual class\n// declaration form). That in turn means TS needs to be able to fully name the\n// type produced by the class expression, which includes the `OWNER` symbol from\n// `@glimmer/owner`.\n//\n// By explicitly giving the declaration a type when assigning it the class\n// expression, instead of relying on inference, TS no longer needs to name the\n// `OWNER` property key from the super class, eliminating the private name\n// shenanigans.\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nvar FrameworkObject=/*#__PURE__*/function(_EmberObject2){function FrameworkObject(){_classCallCheck(this,FrameworkObject);return _callSuper(this,FrameworkObject,arguments);}_inherits(FrameworkObject,_EmberObject2);return _createClass(FrameworkObject);}(EmberObject);{var INIT_WAS_CALLED=Symbol('INIT_WAS_CALLED');var ASSERT_INIT_WAS_CALLED=symbol('ASSERT_INIT_WAS_CALLED');FrameworkObject=/*#__PURE__*/function(_EmberObject3){function DebugFrameworkObject(){var _this35;_classCallCheck(this,DebugFrameworkObject);for(var _len48=arguments.length,args=new Array(_len48),_key48=0;_key48<_len48;_key48++){args[_key48]=arguments[_key48];}_this35=_callSuper(this,DebugFrameworkObject,[].concat(args));_defineProperty(_this35,INIT_WAS_CALLED,false);return _this35;}_inherits(DebugFrameworkObject,_EmberObject3);return _createClass(DebugFrameworkObject,[{key:\"init\",value:function init(properties){_superPropGet(DebugFrameworkObject,\"init\",this,3)([properties]);this[INIT_WAS_CALLED]=true;}},{key:ASSERT_INIT_WAS_CALLED,value:function value(){!this[INIT_WAS_CALLED]&&assert$1(\"You must call `super.init(...arguments);` or `this._super(...arguments)` when overriding `init` on a framework object. Please update \".concat(this,\" to call `super.init(...arguments);` from `init` when using native classes or `this._super(...arguments)` when using `EmberObject.extend()`.\"),this[INIT_WAS_CALLED]);}}]);}(EmberObject);addListener(FrameworkObject.prototype,'init',null,ASSERT_INIT_WAS_CALLED);}var emberObjectinternals=/*#__PURE__*/Object.defineProperty({__proto__:null,get FrameworkObject(){return FrameworkObject;},cacheFor:getCachedValueFor,guidFor:guidFor},Symbol.toStringTag,{value:'Module'});/* eslint no-console:off *//* global console *//**\n          @module @ember/instrumentation\n          @private\n          *//**\n            The purpose of the Ember Instrumentation module is\n            to provide efficient, general-purpose instrumentation\n            for Ember.\n\n            Subscribe to a listener by using `subscribe`:\n\n            ```javascript\n            import { subscribe } from '@ember/instrumentation';\n\n            subscribe(\"render\", {\n              before(name, timestamp, payload) {\n\n              },\n\n              after(name, timestamp, payload) {\n\n              }\n            });\n            ```\n\n            If you return a value from the `before` callback, that same\n            value will be passed as a fourth parameter to the `after`\n            callback.\n\n            Instrument a block of code by using `instrument`:\n\n            ```javascript\n            import { instrument } from '@ember/instrumentation';\n\n            instrument(\"render.handlebars\", payload, function() {\n              // rendering logic\n            }, binding);\n            ```\n\n            Event names passed to `instrument` are namespaced\n            by periods, from more general to more specific. Subscribers\n            can listen for events by whatever level of granularity they\n            are interested in.\n\n            In the above example, the event is `render.handlebars`,\n            and the subscriber listened for all events beginning with\n            `render`. It would receive callbacks for events named\n            `render`, `render.handlebars`, `render.container`, or\n            even `render.handlebars.layout`.\n\n            @class Instrumentation\n            @static\n            @private\n          */var subscribers=[];var cache={};function populateListeners(name){var listeners=[];var _iterator52=_createForOfIteratorHelper(subscribers),_step52;try{for(_iterator52.s();!(_step52=_iterator52.n()).done;){var subscriber=_step52.value;if(subscriber.regex.test(name)){listeners.push(subscriber.object);}}}catch(err){_iterator52.e(err);}finally{_iterator52.f();}cache[name]=listeners;return listeners;}var time=function(){var perf='undefined'!==typeof window?window.performance||{}:{};var fn=perf.now||perf.mozNow||perf.webkitNow||perf.msNow||perf.oNow;return fn?fn.bind(perf):Date.now;}();function isCallback$1(value){return typeof value==='function';}/**\n            Notifies event's subscribers, calls `before` and `after` hooks.\n\n            @method instrument\n            @for @ember/instrumentation\n            @static\n            @param {String} [name] Namespaced event name.\n            @param {Object} payload\n            @param {Function} callback Function that you're instrumenting.\n            @param {Object} binding Context that instrument function is called with.\n            @private\n          */function instrument(name,p1,p2,p3){var _payload;var callback;var binding;if(arguments.length<=3&&isCallback$1(p1)){callback=p1;binding=p2;}else{_payload=p1;callback=p2;binding=p3;}// fast path\nif(subscribers.length===0){return callback.call(binding);}// avoid allocating the payload in fast path\nvar payload=_payload||{};var finalizer=_instrumentStart(name,function(){return payload;});if(finalizer===NOOP$2){return callback.call(binding);}else{return withFinalizer(callback,finalizer,payload,binding);}}function flaggedInstrument(_name,_payload,callback){return callback();}function withFinalizer(callback,finalizer,payload,binding){try{return callback.call(binding);}catch(e){payload.exception=e;throw e;}finally{finalizer();}}function NOOP$2(){}// private for now\nfunction _instrumentStart(name,payloadFunc,payloadArg){if(subscribers.length===0){return NOOP$2;}var listeners=cache[name];if(!listeners){listeners=populateListeners(name);}if(listeners.length===0){return NOOP$2;}var payload=payloadFunc(payloadArg);var STRUCTURED_PROFILE=ENV.STRUCTURED_PROFILE;var timeName;if(STRUCTURED_PROFILE){timeName=\"\".concat(name,\": \").concat(payload.object);console.time(timeName);}var beforeValues=[];var timestamp=time();var _iterator53=_createForOfIteratorHelper(listeners),_step53;try{for(_iterator53.s();!(_step53=_iterator53.n()).done;){var listener=_step53.value;beforeValues.push(listener.before(name,timestamp,payload));}}catch(err){_iterator53.e(err);}finally{_iterator53.f();}var constListeners=listeners;return function _instrumentEnd(){var timestamp=time();for(var i=0;i<constListeners.length;i++){var listener=constListeners[i];!listener&&assert$1('has listener',listener);// Iterating over values\nif(typeof listener.after==='function'){listener.after(name,timestamp,payload,beforeValues[i]);}}if(STRUCTURED_PROFILE){console.timeEnd(timeName);}};}/**\n            Subscribes to a particular event or instrumented block of code.\n\n            @method subscribe\n            @for @ember/instrumentation\n            @static\n\n            @param {String} [pattern] Namespaced event name.\n            @param {Object} [object] Before and After hooks.\n\n            @return {Subscriber}\n            @private\n          */function subscribe(pattern,object){var paths=pattern.split('.');var regexes=[];var _iterator54=_createForOfIteratorHelper(paths),_step54;try{for(_iterator54.s();!(_step54=_iterator54.n()).done;){var path=_step54.value;if(path==='*'){regexes.push('[^\\\\.]*');}else{regexes.push(path);}}}catch(err){_iterator54.e(err);}finally{_iterator54.f();}var regex=regexes.join('\\\\.');regex=\"\".concat(regex,\"(\\\\..*)?\");var subscriber={pattern:pattern,regex:new RegExp(\"^\".concat(regex,\"$\")),object:object};subscribers.push(subscriber);cache={};return subscriber;}/**\n            Unsubscribes from a particular event or instrumented block of code.\n\n            @method unsubscribe\n            @for @ember/instrumentation\n            @static\n\n            @param {Object} [subscriber]\n            @private\n          */function unsubscribe(subscriber){var index=0;for(var i=0;i<subscribers.length;i++){if(subscribers[i]===subscriber){index=i;}}subscribers.splice(index,1);cache={};}/**\n            Resets `Instrumentation` by flushing list of subscribers.\n\n            @method reset\n            @for @ember/instrumentation\n            @static\n            @private\n          */function reset(){subscribers.length=0;cache={};}var emberInstrumentationIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,_instrumentStart:_instrumentStart,flaggedInstrument:flaggedInstrument,instrument:instrument,reset:reset,subscribe:subscribe,subscribers:subscribers,unsubscribe:unsubscribe},Symbol.toStringTag,{value:'Module'});var DEFAULT=Object.freeze({// appendChild is only legal while rendering the buffer.\nappendChild:function appendChild(){throw new Error(\"You can't use appendChild outside of the rendering process\");},// Handle events from `Ember.EventDispatcher`\nhandleEvent:function handleEvent(){return true;// continue event propagation\n},rerender:function rerender(){},destroy:function destroy(){}});var PRE_RENDER=Object.freeze(_objectSpread({},DEFAULT));var HAS_ELEMENT=Object.freeze(_objectSpread(_objectSpread({},DEFAULT),{},{rerender:function rerender(view){view.renderer.rerender();},destroy:function destroy(view){view.renderer.remove(view);},// Handle events from `Ember.EventDispatcher`\nhandleEvent:function handleEvent(view,eventName,event){if(view.has(eventName)){// Handler should be able to re-dispatch events, so we don't\n// preventDefault or stopPropagation.\nreturn flaggedInstrument(\"interaction.\".concat(eventName),{event:event,view:view},function(){return join(view,view.trigger,eventName,event);});}else{return true;// continue event propagation\n}}}));var IN_DOM=Object.freeze(_objectSpread(_objectSpread({},HAS_ELEMENT),{},{enter:function enter(view){// Register the view for event handling. This hash is used by\n// Ember.EventDispatcher to dispatch incoming events.\nview.renderer.register(view);{var elementId=view.elementId;!teardownMandatorySetter&&assert$1('[BUG] Expected teardownMandatorySetter to be set in DEBUG mode',teardownMandatorySetter);teardownMandatorySetter(view,'elementId');Object.defineProperty(view,'elementId',{configurable:true,enumerable:true,get:function get(){return elementId;},set:function set(value){if(value!==elementId){throw new Error(\"Changing a view's elementId after creation is not allowed\");}}});}}}));var DESTROYING=Object.freeze(_objectSpread(_objectSpread({},DEFAULT),{},{appendChild:function appendChild(){throw new Error(\"You can't call appendChild on a view being destroyed\");},rerender:function rerender(){throw new Error(\"You can't call rerender on a view being destroyed\");}}));/*\n            Describe how the specified actions should behave in the various\n            states that a view can exist in. Possible states:\n\n            * preRender: when a view is first instantiated, and after its\n              element was destroyed, it is in the preRender state\n            * hasElement: the DOM representation of the view is created,\n              and is ready to be inserted\n            * inDOM: once a view has been inserted into the DOM it is in\n              the inDOM state. A view spends the vast majority of its\n              existence in this state.\n            * destroyed: once a view has been destroyed (using the destroy\n              method), it is in this state. No further actions can be invoked\n              on a destroyed view.\n          */var states=Object.freeze({preRender:PRE_RENDER,inDOM:IN_DOM,hasElement:HAS_ELEMENT,destroying:DESTROYING});var emberinternalsViewsLibViewsStates=/*#__PURE__*/Object.defineProperty({__proto__:null,default:states},Symbol.toStringTag,{value:'Module'});var _renderer=/*#__PURE__*/new WeakMap();var CoreView=/*#__PURE__*/function(_FrameworkObject$exte){function CoreView(){var _this36;_classCallCheck(this,CoreView);for(var _len49=arguments.length,args=new Array(_len49),_key49=0;_key49<_len49;_key49++){args[_key49]=arguments[_key49];}_this36=_callSuper(this,CoreView,[].concat(args));_defineProperty(_this36,\"isView\",true);_defineProperty(_this36,\"_superTrigger\",void 0);_defineProperty(_this36,\"_superHas\",void 0);_classPrivateFieldInitSpec(_this36,_renderer,(initializeDeferredDecorator(_this36,\"renderer\"),void 0));return _this36;}_inherits(CoreView,_FrameworkObject$exte);return _createClass(CoreView,[{key:\"init\",value:/**\n              If the view is currently inserted into the DOM of a parent view, this\n              property will point to the parent of the view.\n               @property parentView\n              @type Ember.View\n              @default null\n              @private\n            */function init(properties){var _this$parentView;_superPropGet(CoreView,\"init\",this,3)([properties]);// Handle methods from Evented\n// The native class inheritance will not work for mixins. To work around this,\n// we copy the existing trigger and has methods provided by the mixin and swap in the\n// new ones from our class.\nthis._superTrigger=this.trigger;this.trigger=this._trigger;this._superHas=this.has;this.has=this._has;(_this$parentView=this.parentView)!==null&&_this$parentView!==void 0?_this$parentView:this.parentView=null;this._state='preRender';this._currentState=this._states.preRender;}},{key:\"instrumentDetails\",value:function instrumentDetails(hash){hash['object']=this.toString();hash['containerKey']=this._debugContainerKey;hash['view']=this;return hash;}/**\n              Override the default event firing from `Evented` to\n              also call methods with the given name.\n               @method trigger\n              @param name {String}\n              @private\n            */// Changed to `trigger` on init\n},{key:\"_trigger\",value:function _trigger(name){for(var _len50=arguments.length,args=new Array(_len50>1?_len50-1:0),_key50=1;_key50<_len50;_key50++){args[_key50-1]=arguments[_key50];}this._superTrigger.apply(this,[name].concat(args));var method=this[name];if(typeof method==='function'){return method.apply(this,args);}}// Changed to `has` on init\n},{key:\"_has\",value:function _has(name){return typeof this[name]==='function'||this._superHas(name);}}]);}(FrameworkObject.extend(Evented,ActionHandler));// Declare on the prototype to have a single shared value.\n_CoreView=CoreView;decorateFieldV2(_CoreView.prototype,\"renderer\",[inject$2('renderer','-dom')]);_defineProperty(CoreView,\"isViewFactory\",true);CoreView.prototype._states=states;var emberinternalsViewsLibViewsCoreView=/*#__PURE__*/Object.defineProperty({__proto__:null,default:CoreView},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */var EMPTY_ARRAY$2=Object.freeze([]);/**\n            @class ClassNamesSupport\n            @namespace Ember\n            @private\n          */var ClassNamesSupport=Mixin.create({concatenatedProperties:['classNames','classNameBindings'],init:function init(){this._super.apply(this,arguments);!(descriptorForProperty(this,'classNameBindings')===undefined&&Array.isArray(this.classNameBindings))&&assert$1(\"Only arrays are allowed for 'classNameBindings'\",descriptorForProperty(this,'classNameBindings')===undefined&&Array.isArray(this.classNameBindings));!(descriptorForProperty(this,'classNames')===undefined&&Array.isArray(this.classNames))&&assert$1(\"Only arrays of static class strings are allowed for 'classNames'. For dynamic classes, use 'classNameBindings'.\",descriptorForProperty(this,'classNames')===undefined&&Array.isArray(this.classNames));},/**\n              Standard CSS class names to apply to the view's outer element. This\n              property automatically inherits any class names defined by the view's\n              superclasses as well.\n               @property classNames\n              @type Array\n              @default ['ember-view']\n              @public\n            */classNames:EMPTY_ARRAY$2,/**\n              A list of properties of the view to apply as class names. If the property\n              is a string value, the value of that string will be applied as a class\n              name.\n               ```javascript\n              // Applies the 'high' class to the view element\n              import Component from '@ember/component';\n              Component.extend({\n                classNameBindings: ['priority'],\n                priority: 'high'\n              });\n              ```\n               If the value of the property is a Boolean, the name of that property is\n              added as a dasherized class name.\n               ```javascript\n              // Applies the 'is-urgent' class to the view element\n              import Component from '@ember/component';\n              Component.extend({\n                classNameBindings: ['isUrgent'],\n                isUrgent: true\n              });\n              ```\n               If you would prefer to use a custom value instead of the dasherized\n              property name, you can pass a binding like this:\n               ```javascript\n              // Applies the 'urgent' class to the view element\n              import Component from '@ember/component';\n              Component.extend({\n                classNameBindings: ['isUrgent:urgent'],\n                isUrgent: true\n              });\n              ```\n               If you would like to specify a class that should only be added when the\n              property is false, you can declare a binding like this:\n               ```javascript\n              // Applies the 'disabled' class to the view element\n              import Component from '@ember/component';\n              Component.extend({\n                classNameBindings: ['isEnabled::disabled'],\n                isEnabled: false\n              });\n              ```\n               This list of properties is inherited from the component's superclasses as well.\n               @property classNameBindings\n              @type Array\n              @default []\n              @public\n            */classNameBindings:EMPTY_ARRAY$2});var emberinternalsViewsLibMixinsClassNamesSupport=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ClassNamesSupport},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */var ChildViewsSupport=Mixin.create({/**\n              Array of child views. You should never edit this array directly.\n               @property childViews\n              @type Array\n              @default []\n              @private\n            */childViews:nativeDescDecorator({configurable:false,enumerable:false,get:function get(){return getChildViews(this);}}),appendChild:function appendChild(view){addChildView(this,view);}});var emberinternalsViewsLibMixinsChildViewsSupport=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ChildViewsSupport},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */var ViewStateSupport=Mixin.create({_transitionTo:function _transitionTo(state){var priorState=this._currentState;var currentState=this._currentState=this._states[state];this._state=state;if(priorState&&priorState.exit){priorState.exit(this);}if(currentState.enter){currentState.enter(this);}}});var emberinternalsViewsLibMixinsViewStateSupport=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ViewStateSupport},Symbol.toStringTag,{value:'Module'});function K$1(){return this;}/**\n           @class ViewMixin\n           @namespace Ember\n           @private\n          */var ViewMixin=Mixin.create({/**\n             A list of properties of the view to apply as attributes. If the property\n             is a string value, the value of that string will be applied as the value\n             for an attribute of the property's name.\n              The following example creates a tag like `<div priority=\"high\" />`.\n              ```app/components/my-component.js\n             import Component from '@ember/component';\n              export default Component.extend({\n                attributeBindings: ['priority'],\n                priority: 'high'\n              });\n             ```\n              If the value of the property is a Boolean, the attribute is treated as\n             an HTML Boolean attribute. It will be present if the property is `true`\n             and omitted if the property is `false`.\n              The following example creates markup like `<div visible />`.\n              ```app/components/my-component.js\n             import Component from '@ember/component';\n              export default Component.extend({\n                attributeBindings: ['visible'],\n                visible: true\n              });\n             ```\n              If you would prefer to use a custom value instead of the property name,\n             you can create the same markup as the last example with a binding like\n             this:\n              ```app/components/my-component.js\n             import Component from '@ember/component';\n              export default Component.extend({\n                attributeBindings: ['isVisible:visible'],\n                isVisible: true\n              });\n             ```\n              This list of attributes is inherited from the component's superclasses,\n             as well.\n              @property attributeBindings\n             @type Array\n             @default []\n             @public\n             */concatenatedProperties:['attributeBindings'],// ..........................................................\n// TEMPLATE SUPPORT\n//\n/**\n             Return the nearest ancestor that is an instance of the provided\n             class or mixin.\n              @method nearestOfType\n             @param {Class,Mixin} klass Subclass of Ember.View (or Ember.View itself),\n             or an instance of Mixin.\n             @return Ember.View\n             @deprecated use `yield` and contextual components for composition instead.\n             @private\n             */nearestOfType:function nearestOfType(klass){var view=this.parentView;var isOfType=klass instanceof Mixin?function(view){return klass.detect(view);}:function(view){return klass.detect(view.constructor);};while(view){if(isOfType(view)){return view;}view=view.parentView;}return;},/**\n             Return the nearest ancestor that has a given property.\n              @method nearestWithProperty\n             @param {String} property A property name\n             @return Ember.View\n             @deprecated use `yield` and contextual components for composition instead.\n             @private\n             */nearestWithProperty:function nearestWithProperty(property){var view=this.parentView;while(view){if(property in view){return view;}view=view.parentView;}},/**\n             Renders the view again. This will work regardless of whether the\n             view is already in the DOM or not. If the view is in the DOM, the\n             rendering process will be deferred to give bindings a chance\n             to synchronize.\n              If children were added during the rendering process using `appendChild`,\n             `rerender` will remove them, because they will be added again\n             if needed by the next `render`.\n              In general, if the display of your view changes, you should modify\n             the DOM element directly instead of manually calling `rerender`, which can\n             be slow.\n              @method rerender\n             @public\n             */rerender:function rerender(){return this._currentState.rerender(this);},// ..........................................................\n// ELEMENT SUPPORT\n//\n/**\n             Returns the current DOM element for the view.\n               @property element\n              @type DOMElement\n              @public\n            */element:nativeDescDecorator({configurable:false,enumerable:false,get:function get(){return this.renderer.getElement(this);}}),/**\n             Appends the view's element to the specified parent element.\n              Note that this method just schedules the view to be appended; the DOM\n             element will not be appended to the given element until all bindings have\n             finished synchronizing.\n              This is not typically a function that you will need to call directly when\n             building your application. If you do need to use `appendTo`, be sure that\n             the target element you are providing is associated with an `Application`\n             and does not have an ancestor element that is associated with an Ember view.\n              @method appendTo\n             @param {String|DOMElement} A selector, element, HTML string\n             @return {Ember.View} receiver\n             @private\n             */appendTo:function appendTo(selector){var target;if(hasDOM){!(typeof selector==='string'||selector instanceof Element)&&assert$1(\"Expected a selector or instance of Element\",typeof selector==='string'||selector instanceof Element);target=typeof selector==='string'?document.querySelector(selector):selector;!target&&assert$1(\"You tried to append to (\".concat(selector,\") but that isn't in the DOM\"),target);!!matches(target,'.ember-view')&&assert$1('You cannot append to an existing Ember.View.',!matches(target,'.ember-view'));!function(){var node=target.parentNode;while(node instanceof Element){if(matches(node,'.ember-view')){return false;}node=node.parentNode;}return true;}()&&assert$1('You cannot append to an existing Ember.View.',function(){var node=target.parentNode;while(node instanceof Element){if(matches(node,'.ember-view')){return false;}node=node.parentNode;}return true;}());}else{target=selector;!(typeof target!=='string')&&assert$1(\"You tried to append to a selector string (\".concat(selector,\") in an environment without a DOM\"),typeof target!=='string');!(typeof target.appendChild==='function')&&assert$1(\"You tried to append to a non-Element (\".concat(selector,\") in an environment without a DOM\"),typeof target.appendChild==='function');}// SAFETY: SimpleElement is supposed to be a subset of Element so this _should_ be safe.\n// However, the types are more specific in some places which necessitates the `as`.\nthis.renderer.appendTo(this,target);return this;},/**\n             Appends the view's element to the document body. If the view does\n             not have an HTML representation yet\n             the element will be generated automatically.\n              If your application uses the `rootElement` property, you must append\n             the view within that element. Rendering views outside of the `rootElement`\n             is not supported.\n              Note that this method just schedules the view to be appended; the DOM\n             element will not be appended to the document body until all bindings have\n             finished synchronizing.\n              @method append\n             @return {Ember.View} receiver\n             @private\n             */append:function append(){return this.appendTo(document.body);},/**\n             The HTML `id` of the view's element in the DOM. You can provide this\n             value yourself but it must be unique (just as in HTML):\n              ```handlebars\n             {{my-component elementId=\"a-really-cool-id\"}}\n             ```\n              If not manually set a default value will be provided by the framework.\n              Once rendered an element's `elementId` is considered immutable and you\n             should never change it. If you need to compute a dynamic value for the\n             `elementId`, you should do this when the component or element is being\n             instantiated:\n              ```app/components/my-component.js\n             import Component from '@ember/component';\n              export default Component.extend({\n                init() {\n                  this._super(...arguments);\n                  let index = this.get('index');\n                  this.set('elementId', 'component-id' + index);\n                }\n              });\n             ```\n              @property elementId\n             @type String\n             @public\n             */elementId:null,/**\n             Called when a view is going to insert an element into the DOM.\n              @event willInsertElement\n             @public\n             */willInsertElement:K$1,/**\n             Called when the element of the view has been inserted into the DOM.\n             Override this function to do any set up that requires an element\n             in the document body.\n              When a view has children, didInsertElement will be called on the\n             child view(s) first and on itself afterwards.\n              @event didInsertElement\n             @public\n             */didInsertElement:K$1,/**\n             Called when the view is about to rerender, but before anything has\n             been torn down. This is a good opportunity to tear down any manual\n             observers you have installed based on the DOM state\n              @event willClearRender\n             @public\n             */willClearRender:K$1,/**\n             You must call `destroy` on a view to destroy the view (and all of its\n             child views). This will remove the view from any parent node, then make\n             sure that the DOM element managed by the view can be released by the\n             memory manager.\n              @method destroy\n             @private\n             */destroy:function destroy(){this._super.apply(this,arguments);this._currentState.destroy(this);},/**\n             Called when the element of the view is going to be destroyed. Override\n             this function to do any teardown that requires an element, like removing\n             event listeners.\n              Please note: any property changes made during this event will have no\n             effect on object observers.\n              @event willDestroyElement\n             @public\n             */willDestroyElement:K$1,/**\n             Called after the element of the view is destroyed.\n              @event willDestroyElement\n             @public\n             */didDestroyElement:K$1,/**\n             Called when the parentView property has changed.\n              @event parentViewDidChange\n             @private\n             */parentViewDidChange:K$1,// ..........................................................\n// STANDARD RENDER PROPERTIES\n//\n/**\n             Tag name for the view's outer element. The tag name is only used when an\n             element is first created. If you change the `tagName` for an element, you\n             must destroy and recreate the view element.\n              By default, the render buffer will use a `<div>` tag for views.\n              If the tagName is `''`, the view will be tagless, with no outer element.\n             Component properties that depend on the presence of an outer element, such\n             as `classNameBindings` and `attributeBindings`, do not work with tagless\n             components. Tagless components cannot implement methods to handle events,\n             and their `element` property has a `null` value.\n              @property tagName\n             @type String\n             @default null\n             @public\n             */// We leave this null by default so we can tell the difference between\n// the default case and a user-specified tag.\ntagName:null,// .......................................................\n// CORE DISPLAY METHODS\n//\n/**\n             Setup a view, but do not finish waking it up.\n              * configure `childViews`\n             * register the view with the global views hash, which is used for event\n             dispatch\n              @method init\n             @private\n             */init:function init(){this._super.apply(this,arguments);!(descriptorForProperty(this,'elementId')===undefined)&&assert$1(\"You cannot use a computed property for the component's `elementId` (\".concat(this,\").\"),descriptorForProperty(this,'elementId')===undefined);!(descriptorForProperty(this,'tagName')===undefined)&&assert$1(\"You cannot use a computed property for the component's `tagName` (\".concat(this,\").\"),descriptorForProperty(this,'tagName')===undefined);if(!this.elementId&&this.tagName!==''){this.elementId=guidFor(this);}!!this.render&&assert$1('Using a custom `.render` function is no longer supported.',!this.render);},// .......................................................\n// EVENT HANDLING\n//\n/**\n             Handle events from `EventDispatcher`\n              @method handleEvent\n             @param eventName {String}\n             @param evt {Event}\n             @private\n             */handleEvent:function handleEvent(eventName,evt){return this._currentState.handleEvent(this,eventName,evt);}});var emberinternalsViewsLibMixinsViewSupport=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ViewMixin},Symbol.toStringTag,{value:'Module'});/**\n           @module ember\n          *//**\n           @class ActionSupport\n           @namespace Ember\n           @private\n          */var ActionSupport=Mixin.create({send:function send(actionName){for(var _len51=arguments.length,args=new Array(_len51>1?_len51-1:0),_key51=1;_key51<_len51;_key51++){args[_key51-1]=arguments[_key51];}!(!this.isDestroying&&!this.isDestroyed)&&assert$1(\"Attempted to call .send() with the action '\".concat(actionName,\"' on the destroyed object '\").concat(this,\"'.\"),!this.isDestroying&&!this.isDestroyed);var action=this.actions&&this.actions[actionName];if(action){var shouldBubble=action.apply(this,args)===true;if(!shouldBubble){return;}}var target=get$2(this,'target');if(target){!(typeof target.send==='function')&&assert$1(\"The `target` for \".concat(this,\" (\").concat(target,\") does not have a `send` method\"),typeof target.send==='function');target.send.apply(target,arguments);}else{!action&&assert$1(\"\".concat(inspect(this),\" had no action handler for: \").concat(actionName),action);}}});var emberinternalsViewsLibMixinsActionSupport=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ActionSupport},Symbol.toStringTag,{value:'Module'});var MUTABLE_CELL=Symbol('MUTABLE_CELL');var emberinternalsViewsLibCompatAttrs=/*#__PURE__*/Object.defineProperty({__proto__:null,MUTABLE_CELL:MUTABLE_CELL},Symbol.toStringTag,{value:'Module'});var emberinternalsViewsIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,ActionManager:ActionManager,ActionSupport:ActionSupport,ChildViewsSupport:ChildViewsSupport,ClassNamesSupport:ClassNamesSupport,ComponentLookup:ComponentLookup,CoreView:CoreView,EventDispatcher:EventDispatcher,MUTABLE_CELL:MUTABLE_CELL,ViewMixin:ViewMixin,ViewStateSupport:ViewStateSupport,addChildView:addChildView,clearElementView:clearElementView,clearViewElement:clearViewElement,constructStyleDeprecationMessage:constructStyleDeprecationMessage,getChildViews:getChildViews,getElementView:getElementView,getRootViews:getRootViews,getViewBoundingClientRect:getViewBoundingClientRect,getViewBounds:getViewBounds,getViewClientRects:getViewClientRects,getViewElement:getViewElement,getViewId:getViewId,isSimpleClick:isSimpleClick,setElementView:setElementView,setViewElement:setViewElement},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/engine\n          */var ENGINE_PARENT=Symbol('ENGINE_PARENT');/**\n            `getEngineParent` retrieves an engine instance's parent instance.\n\n            @method getEngineParent\n            @param {EngineInstance} engine An engine instance.\n            @return {EngineInstance} The parent engine instance.\n            @for @ember/engine\n            @static\n            @private\n          */function getEngineParent(engine){return engine[ENGINE_PARENT];}/**\n            `setEngineParent` sets an engine instance's parent instance.\n\n            @method setEngineParent\n            @param {EngineInstance} engine An engine instance.\n            @param {EngineInstance} parent The parent engine instance.\n            @private\n          */function setEngineParent(engine,parent){engine[ENGINE_PARENT]=parent;}var emberEngineLibEngineParent=/*#__PURE__*/Object.defineProperty({__proto__:null,ENGINE_PARENT:ENGINE_PARENT,getEngineParent:getEngineParent,setEngineParent:setEngineParent},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/service\n           @public\n           *//**\n            @method inject\n            @static\n            @since 1.10.0\n            @for @ember/service\n            @param {String} name (optional) name of the service to inject, defaults to\n                   the property's name\n            @return {ComputedDecorator} injection decorator instance\n            @public\n          */function inject$1(){for(var _len52=arguments.length,args=new Array(_len52),_key52=0;_key52<_len52;_key52++){args[_key52]=arguments[_key52];}return inject$2.apply(void 0,['service'].concat(args));}/**\n            Creates a property that lazily looks up a service in the container. There are\n            no restrictions as to what objects a service can be injected into.\n\n            Example:\n\n            ```app/routes/application.js\n            import Route from '@ember/routing/route';\n            import { service } from '@ember/service';\n\n            export default class ApplicationRoute extends Route {\n              @service('auth') authManager;\n\n              model() {\n                return this.authManager.findCurrentUser();\n              }\n            }\n            ```\n\n            Classic Class Example:\n\n            ```app/routes/application.js\n            import Route from '@ember/routing/route';\n            import { service } from '@ember/service';\n\n            export default Route.extend({\n              authManager: service('auth'),\n\n              model() {\n                return this.get('authManager').findCurrentUser();\n              }\n            });\n            ```\n\n            This example will create an `authManager` property on the application route\n            that looks up the `auth` service in the container, making it easily accessible\n            in the `model` hook.\n\n            @method service\n            @static\n            @since 4.1.0\n            @for @ember/service\n            @param {String} name (optional) name of the service to inject, defaults to\n                   the property's name\n            @return {ComputedDecorator} injection decorator instance\n            @public\n          */function service(){for(var _len53=arguments.length,args=new Array(_len53),_key53=0;_key53<_len53;_key53++){args[_key53]=arguments[_key53];}return inject$2.apply(void 0,['service'].concat(args));}/**\n            @class Service\n            @extends EmberObject\n            @since 1.10.0\n            @public\n          */var Service=/*#__PURE__*/function(_FrameworkObject){function Service(){_classCallCheck(this,Service);return _callSuper(this,Service,arguments);}_inherits(Service,_FrameworkObject);return _createClass(Service);}(FrameworkObject);/**\n            A type registry for Ember `Service`s. Meant to be declaration-merged so string\n            lookups resolve to the correct type.\n\n            Blueprints should include such a declaration merge for TypeScript:\n\n            ```ts\n            import Service from '@ember/service';\n\n            export default class ExampleService extends Service {\n              // ...\n            }\n\n            declare module '@ember/service' {\n              export interface Registry {\n                example: ExampleService;\n              }\n            }\n            ```\n\n            Then `@service` can check that the service is registered correctly, and APIs\n            like `owner.lookup('service:example')` can return `ExampleService`.\n           */// NOTE: this cannot be `Record<string, Service | undefined>`, convenient as\n// that would be for end users, because there is no actual contract to that\n// effect with Ember -- and in the future this choice would allow us to have\n// registered services which have no base class.\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n_defineProperty(Service,\"isServiceFactory\",true);var emberServiceIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Service,inject:inject$1,service:service},Symbol.toStringTag,{value:'Module'});var LinkToTemplate=templateFactory(/*\n            <a\n            {{!-- for compatibility --}}\n            id={{this.id}}\n            class={{this.class}}\n\n            {{!-- deprecated attribute bindings --}}\n            role={{this.role}}\n            title={{this.title}}\n            rel={{this.rel}}\n            tabindex={{this.tabindex}}\n            target={{this.target}}\n\n            ...attributes\n\n            href={{this.href}}\n\n            {{on 'click' this.click}}\n          >{{yield}}</a>\n          */{\"id\":\"Ub0nir+H\",\"block\":\"[[[11,3],[16,1,[30,0,[\\\"id\\\"]]],[16,0,[30,0,[\\\"class\\\"]]],[16,\\\"role\\\",[30,0,[\\\"role\\\"]]],[16,\\\"title\\\",[30,0,[\\\"title\\\"]]],[16,\\\"rel\\\",[30,0,[\\\"rel\\\"]]],[16,\\\"tabindex\\\",[30,0,[\\\"tabindex\\\"]]],[16,\\\"target\\\",[30,0,[\\\"target\\\"]]],[17,1],[16,6,[30,0,[\\\"href\\\"]]],[4,[32,0],[\\\"click\\\",[30,0,[\\\"click\\\"]]],null],[12],[18,2,null],[13]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"yield\\\"]]\",\"moduleName\":\"packages/@ember/-internals/glimmer/lib/templates/link-to.hbs\",\"scope\":function scope(){return[on];},\"isStrictMode\":true});var EMPTY_ARRAY$1=[];var EMPTY_QUERY_PARAMS={};debugFreeze(EMPTY_ARRAY$1);debugFreeze(EMPTY_QUERY_PARAMS);function isMissing(value){return value===null||value===undefined;}function isPresent$1(value){return!isMissing(value);}function isQueryParams(value){return _typeof(value)==='object'&&value!==null&&value['isQueryParams']===true;}/**\n            The `LinkTo` component renders a link to the supplied `routeName` passing an optionally\n            supplied model to the route as its `model` context of the route. The block for `LinkTo`\n            becomes the contents of the rendered element:\n\n            ```handlebars\n            <LinkTo @route='photoGallery'>\n              Great Hamster Photos\n            </LinkTo>\n            ```\n\n            This will result in:\n\n            ```html\n            <a href=\"/hamster-photos\">\n              Great Hamster Photos\n            </a>\n            ```\n\n            ### Disabling the `LinkTo` component\n\n            The `LinkTo` component can be disabled by using the `disabled` argument. A disabled link\n            doesn't result in a transition when activated, and adds the `disabled` class to the `<a>`\n            element.\n\n            (The class name to apply to the element can be overridden by using the `disabledClass`\n            argument)\n\n            ```handlebars\n            <LinkTo @route='photoGallery' @disabled={{true}}>\n              Great Hamster Photos\n            </LinkTo>\n            ```\n\n            ### Handling `href`\n\n            `<LinkTo>` will use your application's Router to fill the element's `href` property with a URL\n            that matches the path to the supplied `routeName`.\n\n            ### Handling current route\n\n            The `LinkTo` component will apply a CSS class name of 'active' when the application's current\n            route matches the supplied routeName. For example, if the application's current route is\n            'photoGallery.recent', then the following invocation of `LinkTo`:\n\n            ```handlebars\n            <LinkTo @route='photoGallery.recent'>\n              Great Hamster Photos\n            </LinkTo>\n            ```\n\n            will result in\n\n            ```html\n            <a href=\"/hamster-photos/this-week\" class=\"active\">\n              Great Hamster Photos\n            </a>\n            ```\n\n            The CSS class used for active classes can be customized by passing an `activeClass` argument:\n\n            ```handlebars\n            <LinkTo @route='photoGallery.recent' @activeClass=\"current-url\">\n              Great Hamster Photos\n            </LinkTo>\n            ```\n\n            ```html\n            <a href=\"/hamster-photos/this-week\" class=\"current-url\">\n              Great Hamster Photos\n            </a>\n            ```\n\n            ### Keeping a link active for other routes\n\n            If you need a link to be 'active' even when it doesn't match the current route, you can use the\n            `current-when` argument.\n\n            ```handlebars\n            <LinkTo @route='photoGallery' @current-when='photos'>\n              Photo Gallery\n            </LinkTo>\n            ```\n\n            This may be helpful for keeping links active for:\n\n            * non-nested routes that are logically related\n            * some secondary menu approaches\n            * 'top navigation' with 'sub navigation' scenarios\n\n            A link will be active if `current-when` is `true` or the current\n            route is the route this link would transition to.\n\n            To match multiple routes 'space-separate' the routes:\n\n            ```handlebars\n            <LinkTo @route='gallery' @current-when='photos drawings paintings'>\n              Art Gallery\n            </LinkTo>\n            ```\n\n            ### Supplying a model\n\n            An optional `model` argument can be used for routes whose\n            paths contain dynamic segments. This argument will become\n            the model context of the linked route:\n\n            ```javascript\n            Router.map(function() {\n              this.route(\"photoGallery\", {path: \"hamster-photos/:photo_id\"});\n            });\n            ```\n\n            ```handlebars\n            <LinkTo @route='photoGallery' @model={{this.aPhoto}}>\n              {{aPhoto.title}}\n            </LinkTo>\n            ```\n\n            ```html\n            <a href=\"/hamster-photos/42\">\n              Tomster\n            </a>\n            ```\n\n            ### Supplying multiple models\n\n            For deep-linking to route paths that contain multiple\n            dynamic segments, the `models` argument can be used.\n\n            As the router transitions through the route path, each\n            supplied model argument will become the context for the\n            route with the dynamic segments:\n\n            ```javascript\n            Router.map(function() {\n              this.route(\"photoGallery\", { path: \"hamster-photos/:photo_id\" }, function() {\n                this.route(\"comment\", {path: \"comments/:comment_id\"});\n              });\n            });\n            ```\n\n            This argument will become the model context of the linked route:\n\n            ```handlebars\n            <LinkTo @route='photoGallery.comment' @models={{array this.aPhoto this.comment}}>\n              {{comment.body}}\n            </LinkTo>\n            ```\n\n            ```html\n            <a href=\"/hamster-photos/42/comments/718\">\n              A+++ would snuggle again.\n            </a>\n            ```\n\n            ### Supplying an explicit dynamic segment value\n\n            If you don't have a model object available to pass to `LinkTo`,\n            an optional string or integer argument can be passed for routes whose\n            paths contain dynamic segments. This argument will become the value\n            of the dynamic segment:\n\n            ```javascript\n            Router.map(function() {\n              this.route(\"photoGallery\", { path: \"hamster-photos/:photo_id\" });\n            });\n            ```\n\n            ```handlebars\n            <LinkTo @route='photoGallery' @model={{aPhotoId}}>\n              {{this.aPhoto.title}}\n            </LinkTo>\n            ```\n\n            ```html\n            <a href=\"/hamster-photos/42\">\n              Tomster\n            </a>\n            ```\n\n            When transitioning into the linked route, the `model` hook will\n            be triggered with parameters including this passed identifier.\n\n            ### Supplying query parameters\n\n            If you need to add optional key-value pairs that appear to the right of the ? in a URL,\n            you can use the `query` argument.\n\n            ```handlebars\n            <LinkTo @route='photoGallery' @query={{hash page=1 per_page=20}}>\n              Great Hamster Photos\n            </LinkTo>\n            ```\n\n            This will result in:\n\n            ```html\n            <a href=\"/hamster-photos?page=1&per_page=20\">\n              Great Hamster Photos\n            </a>\n            ```\n\n            @for Ember.Templates.components\n            @method LinkTo\n            @public\n          *//**\n            @module @ember/routing\n          *//**\n            See [Ember.Templates.components.LinkTo](/ember/release/classes/Ember.Templates.components/methods/input?anchor=LinkTo).\n\n            @for Ember.Templates.helpers\n            @method link-to\n            @see {Ember.Templates.components.LinkTo}\n            @public\n          **//**\n            An opaque interface which can be imported and used in strict-mode\n            templates to call <LinkTo>.\n\n            See [Ember.Templates.components.LinkTo](/ember/release/classes/Ember.Templates.components/methods/input?anchor=LinkTo).\n\n            @for @ember/routing\n            @method LinkTo\n            @see {Ember.Templates.components.LinkTo}\n            @public\n          **/var _routing=/*#__PURE__*/new WeakMap();var _LinkTo=/*#__PURE__*/function(_InternalComponent2){function _LinkTo(){var _this37;_classCallCheck(this,_LinkTo);for(var _len54=arguments.length,args=new Array(_len54),_key54=0;_key54<_len54;_key54++){args[_key54]=arguments[_key54];}_this37=_callSuper(this,_LinkTo,[].concat(args));_classPrivateFieldInitSpec(_this37,_routing,(initializeDeferredDecorator(_this37,\"routing\"),void 0));// GH #17963\n_defineProperty(_this37,\"currentRouteCache\",createCache(function(){consumeTag(tagFor(_this37.routing,'currentState'));return untrack(function(){return _this37.routing.currentRouteName;});}));return _this37;}_inherits(_LinkTo,_InternalComponent2);return _createClass(_LinkTo,[{key:\"validateArguments\",value:function validateArguments(){!(!this.isEngine||this.engineMountPoint!==undefined)&&assert$1('You attempted to use the <LinkTo> component within a routeless engine, this is not supported. '+'If you are using the ember-engines addon, use the <LinkToExternal> component instead. '+'See https://ember-engines.com/docs/links for more info.',!this.isEngine||this.engineMountPoint!==undefined);!('route'in this.args.named||'model'in this.args.named||'models'in this.args.named||'query'in this.args.named)&&assert$1('You must provide at least one of the `@route`, `@model`, `@models` or `@query` arguments to `<LinkTo>`.','route'in this.args.named||'model'in this.args.named||'models'in this.args.named||'query'in this.args.named);!!('model'in this.args.named&&'models'in this.args.named)&&assert$1('You cannot provide both the `@model` and `@models` arguments to the <LinkTo> component.',!('model'in this.args.named&&'models'in this.args.named));_superPropGet(_LinkTo,\"validateArguments\",this,3)([]);}},{key:\"class\",get:function get(){var classes='ember-view';if(this.isActive){classes+=this.classFor('active');if(this.willBeActive===false){classes+=' ember-transitioning-out';}}else if(this.willBeActive){classes+=' ember-transitioning-in';}if(this.isLoading){classes+=this.classFor('loading');}if(this.isDisabled){classes+=this.classFor('disabled');}return classes;}},{key:\"href\",get:function get(){if(this.isLoading){return'#';}var routing=this.routing,route=this.route,models=this.models,query=this.query;!isPresent$1(route)&&assert$1('[BUG] route can only be missing if isLoading is true',isPresent$1(route));// consume the current router state so we invalidate when QP changes\n// TODO: can we narrow this down to QP changes only?\nconsumeTag(tagFor(routing,'currentState'));{try{return routing.generateURL(route,models,query);}catch(e){var details=e instanceof Error?e.message:inspect(e);var message=\"While generating link to route \\\"\".concat(route,\"\\\": \").concat(details);if(e instanceof Error){e.message=message;throw e;}else{throw message;}}}}},{key:\"click\",value:function click(event){if(!isSimpleClick(event)){return;}var element=event.currentTarget;!(element instanceof HTMLAnchorElement)&&assert$1('[BUG] must be an <a> element',element instanceof HTMLAnchorElement);var isSelf=element.target===''||element.target==='_self';if(isSelf){this.preventDefault(event);}else{return;}if(this.isDisabled){return;}if(this.isLoading){warn('This link is in an inactive loading state because at least one of its models '+'currently has a null/undefined value, or the provided route name is invalid.',false,{id:'ember-glimmer.link-to.inactive-loading-state'});return;}var routing=this.routing,route=this.route,models=this.models,query=this.query,replace=this.replace;var payload={routeName:route,queryParams:query,transition:undefined};flaggedInstrument('interaction.link-to',payload,function(){!isPresent$1(route)&&assert$1('[BUG] route can only be missing if isLoading is true',isPresent$1(route));payload.transition=routing.transitionTo(route,models,query,replace);});}},{key:\"route\",get:function get(){if('route'in this.args.named){var route=this.named('route');!(isMissing(route)||typeof route==='string')&&assert$1('The `@route` argument to the <LinkTo> component must be a string',isMissing(route)||typeof route==='string');return route&&this.namespaceRoute(route);}else{return this.currentRoute;}}},{key:\"currentRoute\",get:function get(){return getValue(this.currentRouteCache);}// TODO: not sure why generateURL takes {}[] instead of unknown[]\n},{key:\"models\",get:function get(){if('models'in this.args.named){var models=this.named('models');!Array.isArray(models)&&assert$1('The `@models` argument to the <LinkTo> component must be an array.',Array.isArray(models));return models;}else if('model'in this.args.named){return[this.named('model')];}else{return EMPTY_ARRAY$1;}}},{key:\"query\",get:function get(){if('query'in this.args.named){var query=this.named('query');!(query!==null&&_typeof(query)==='object')&&assert$1('The `@query` argument to the <LinkTo> component must be an object.',query!==null&&_typeof(query)==='object');return _objectSpread({},query);}else{return EMPTY_QUERY_PARAMS;}}},{key:\"replace\",get:function get(){return this.named('replace')===true;}},{key:\"isActive\",get:function get(){return this.isActiveForState(this.routing.currentState);}},{key:\"willBeActive\",get:function get(){var current=this.routing.currentState;var target=this.routing.targetState;if(current===target){return null;}else{return this.isActiveForState(target);}}},{key:\"isLoading\",get:function get(){return isMissing(this.route)||this.models.some(function(model){return isMissing(model);});}},{key:\"isDisabled\",get:function get(){return Boolean(this.named('disabled'));}},{key:\"isEngine\",get:function get(){var owner=this.owner;return getEngineParent(owner)!==undefined;}},{key:\"engineMountPoint\",get:function get(){var owner=this.owner;return owner.mountPoint;}},{key:\"classFor\",value:function classFor(state){var className=this.named(\"\".concat(state,\"Class\"));!(isMissing(className)||typeof className==='string'||typeof className==='boolean')&&assert$1(\"The `@\".concat(state,\"Class` argument to the <LinkTo> component must be a string or boolean\"),isMissing(className)||typeof className==='string'||typeof className==='boolean');if(className===true||isMissing(className)){return\" \".concat(state);}else if(className){return\" \".concat(className);}else{return'';}}},{key:\"namespaceRoute\",value:function namespaceRoute(route){var engineMountPoint=this.engineMountPoint;if(engineMountPoint===undefined){return route;}else if(route==='application'){return engineMountPoint;}else{return\"\".concat(engineMountPoint,\".\").concat(route);}}},{key:\"isActiveForState\",value:function isActiveForState(state){var _this38=this;if(!isPresent$1(state)){return false;}if(this.isLoading){return false;}var currentWhen=this.named('current-when');if(typeof currentWhen==='boolean'){return currentWhen;}else if(typeof currentWhen==='string'){var models=this.models,routing=this.routing;return currentWhen.split(' ').some(function(route){return routing.isActiveForRoute(models,undefined,_this38.namespaceRoute(route),state);});}else{var route=this.route,_models=this.models,query=this.query,_routing2=this.routing;!isPresent$1(route)&&assert$1('[BUG] route can only be missing if isLoading is true',isPresent$1(route));return _routing2.isActiveForRoute(_models,query,route,state);}}},{key:\"preventDefault\",value:function preventDefault(event){event.preventDefault();}},{key:\"isSupportedArgument\",value:function isSupportedArgument(name){var supportedArguments=['route','model','models','query','replace','disabled','current-when','activeClass','loadingClass','disabledClass'];return supportedArguments.indexOf(name)!==-1||_superPropGet(_LinkTo,\"isSupportedArgument\",this,3)([name]);}}],[{key:\"toString\",value:function toString(){return'LinkTo';}}]);}(InternalComponent);_LinkTo2=_LinkTo;decorateFieldV2(_LinkTo2.prototype,\"routing\",[service('-routing')]);decorateMethodV2(_LinkTo2.prototype,\"click\",[action$1]);var prototype=_LinkTo.prototype;var _descriptorFor=function descriptorFor(target,property){if(target){return Object.getOwnPropertyDescriptor(target,property)||_descriptorFor(Object.getPrototypeOf(target),property);}else{return null;}};// @href\n{var superOnUnsupportedArgument=prototype['onUnsupportedArgument'];Object.defineProperty(prototype,'onUnsupportedArgument',{configurable:true,enumerable:false,value:function onUnsupportedArgument(name){if(name==='href'){assert$1(\"Passing the `@href` argument to <LinkTo> is not supported.\");}else{superOnUnsupportedArgument.call(this,name);}}});}// QP\n{var superModelsDescriptor=_descriptorFor(prototype,'models');!(superModelsDescriptor&&typeof superModelsDescriptor.get==='function')&&assert$1(\"[BUG] expecting models to be a getter on <LinkTo>\",superModelsDescriptor&&typeof superModelsDescriptor.get==='function');var superModelsGetter=superModelsDescriptor.get;Object.defineProperty(prototype,'models',{configurable:true,enumerable:false,get:function models(){var models=superModelsGetter.call(this);if(models.length>0&&!('query'in this.args.named)){if(isQueryParams(models[models.length-1])){models=models.slice(0,-1);}}return models;}});var superQueryDescriptor=_descriptorFor(prototype,'query');!(superQueryDescriptor&&typeof superQueryDescriptor.get==='function')&&assert$1(\"[BUG] expecting query to be a getter on <LinkTo>\",superQueryDescriptor&&typeof superQueryDescriptor.get==='function');var superQueryGetter=superQueryDescriptor.get;Object.defineProperty(prototype,'query',{configurable:true,enumerable:false,get:function query(){if('query'in this.args.named){var qp=superQueryGetter.call(this);if(isQueryParams(qp)){var _qp$values;return(_qp$values=qp.values)!==null&&_qp$values!==void 0?_qp$values:EMPTY_QUERY_PARAMS;}else{return qp;}}else{var models=superModelsGetter.call(this);if(models.length>0){var _qp=models[models.length-1];if(isQueryParams(_qp)&&_qp.values!==null){return _qp.values;}}return EMPTY_QUERY_PARAMS;}}});}// Positional Arguments\n{var _superOnUnsupportedArgument=prototype['onUnsupportedArgument'];Object.defineProperty(prototype,'onUnsupportedArgument',{configurable:true,enumerable:false,value:function onUnsupportedArgument(name){if(name!=='params'){_superOnUnsupportedArgument.call(this,name);}}});}var LinkTo=opaquify(_LinkTo,LinkToTemplate);var TextareaTemplate=templateFactory(/*\n            <textarea\n            {{!-- for compatibility --}}\n            id={{this.id}}\n            class={{this.class}}\n\n            ...attributes\n\n            value={{this.value}}\n\n            {{on \"change\" this.change}}\n            {{on \"input\" this.input}}\n            {{on \"keyup\" this.keyUp}}\n            {{on \"paste\" this.valueDidChange}}\n            {{on \"cut\" this.valueDidChange}}\n          />\n          */{\"id\":\"112WKCh2\",\"block\":\"[[[11,\\\"textarea\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,0,[30,0,[\\\"class\\\"]]],[17,1],[16,2,[30,0,[\\\"value\\\"]]],[4,[32,0],[\\\"change\\\",[30,0,[\\\"change\\\"]]],null],[4,[32,0],[\\\"input\\\",[30,0,[\\\"input\\\"]]],null],[4,[32,0],[\\\"keyup\\\",[30,0,[\\\"keyUp\\\"]]],null],[4,[32,0],[\\\"paste\\\",[30,0,[\\\"valueDidChange\\\"]]],null],[4,[32,0],[\\\"cut\\\",[30,0,[\\\"valueDidChange\\\"]]],null],[12],[13]],[\\\"&attrs\\\"],false,[]]\",\"moduleName\":\"packages/@ember/-internals/glimmer/lib/templates/textarea.hbs\",\"scope\":function scope(){return[on];},\"isStrictMode\":true});/**\n          @module @ember/component\n          */var _Textarea=/*#__PURE__*/function(_AbstractInput3){function _Textarea(){_classCallCheck(this,_Textarea);return _callSuper(this,_Textarea,arguments);}_inherits(_Textarea,_AbstractInput3);return _createClass(_Textarea,[{key:\"class\",get:function get(){return'ember-text-area ember-view';}// See abstract-input.ts for why these are needed\n},{key:\"change\",value:function change(event){_superPropGet(_Textarea,\"change\",this,3)([event]);}},{key:\"input\",value:function input(event){_superPropGet(_Textarea,\"input\",this,3)([event]);}},{key:\"isSupportedArgument\",value:function isSupportedArgument(name){var supportedArguments=['type','value','enter','insert-newline','escape-press'];return supportedArguments.indexOf(name)!==-1||_superPropGet(_Textarea,\"isSupportedArgument\",this,3)([name]);}}],[{key:\"toString\",value:function toString(){return'Textarea';}}]);}(AbstractInput);_Textarea2=_Textarea;decorateMethodV2(_Textarea2.prototype,\"change\",[action$1]);decorateMethodV2(_Textarea2.prototype,\"input\",[action$1]);var Textarea=opaquify(_Textarea,TextareaTemplate);function isTemplateFactory(template){return typeof template==='function';}function referenceForParts(rootRef,parts){var isAttrs=parts[0]==='attrs';// TODO deprecate this\nif(isAttrs){parts.shift();if(parts.length===1){return childRefFor(rootRef,parts[0]);}}return childRefFromParts(rootRef,parts);}function parseAttributeBinding(microsyntax){var colonIndex=microsyntax.indexOf(':');if(colonIndex===-1){!(microsyntax!=='class')&&assert$1('You cannot use class as an attributeBinding, use classNameBindings instead.',microsyntax!=='class');return[microsyntax,microsyntax,true];}else{var prop=microsyntax.substring(0,colonIndex);var attribute=microsyntax.substring(colonIndex+1);!(attribute!=='class')&&assert$1('You cannot use class as an attributeBinding, use classNameBindings instead.',attribute!=='class');return[prop,attribute,false];}}function installAttributeBinding(component,rootRef,parsed,operations){var _parsed=_slicedToArray(parsed,3),prop=_parsed[0],attribute=_parsed[1],isSimple=_parsed[2];if(attribute==='id'){// SAFETY: `get` could not infer the type of `prop` and just gave us `unknown`.\n//         we may want to throw an error in the future if the value isn't string or null/undefined.\nvar elementId=get$2(component,prop);if(elementId===undefined||elementId===null){elementId=component.elementId;}var elementIdRef=createPrimitiveRef(elementId);operations.setAttribute('id',elementIdRef,true,null);return;}var isPath=prop.indexOf('.')>-1;var reference=isPath?referenceForParts(rootRef,prop.split('.')):childRefFor(rootRef,prop);!!(isSimple&&isPath)&&assert$1(\"Illegal attributeBinding: '\".concat(prop,\"' is not a valid attribute name.\"),!(isSimple&&isPath));operations.setAttribute(attribute,reference,false,null);}function createClassNameBindingRef(rootRef,microsyntax,operations){var parts=microsyntax.split(':');var _parts=_slicedToArray(parts,3),prop=_parts[0],truthy=_parts[1],falsy=_parts[2];// NOTE: This could be an empty string\n!(prop!==undefined)&&assert$1('has prop',prop!==undefined);// Will always have at least one part\nvar isStatic=prop==='';if(isStatic){operations.setAttribute('class',createPrimitiveRef(truthy),true,null);}else{var _isPath=prop.indexOf('.')>-1;var _parts2=_isPath?prop.split('.'):[];var value=_isPath?referenceForParts(rootRef,_parts2):childRefFor(rootRef,prop);var ref;if(truthy===undefined){ref=createSimpleClassNameBindingRef(value,_isPath?_parts2[_parts2.length-1]:prop);}else{ref=createColonClassNameBindingRef(value,truthy,falsy);}operations.setAttribute('class',ref,false,null);}}function createSimpleClassNameBindingRef(inner,path){var dasherizedPath;return createComputeRef(function(){var value=valueForRef(inner);if(value===true){!(path!==undefined)&&assert$1('You must pass a path when binding a to a class name using classNameBindings',path!==undefined);return dasherizedPath||(dasherizedPath=dasherize(path));}else if(value||value===0){return String(value);}else{return null;}});}function createColonClassNameBindingRef(inner,truthy,falsy){return createComputeRef(function(){return valueForRef(inner)?truthy:falsy;});}function NOOP$1(){}/**\n            @module ember\n          *//**\n            Represents the internal state of the component.\n\n            @class ComponentStateBucket\n            @private\n          */var ComponentStateBucket=/*#__PURE__*/function(){function ComponentStateBucket(component,args,argsTag,finalizer,hasWrappedElement,isInteractive){var _this39=this;_classCallCheck(this,ComponentStateBucket);_defineProperty(this,\"classRef\",null);_defineProperty(this,\"rootRef\",void 0);_defineProperty(this,\"argsRevision\",void 0);this.component=component;this.args=args;this.argsTag=argsTag;this.finalizer=finalizer;this.hasWrappedElement=hasWrappedElement;this.isInteractive=isInteractive;this.classRef=null;this.argsRevision=args===null?0:valueForTag(argsTag);this.rootRef=createConstRef(component,'this');registerDestructor$1(this,function(){return _this39.willDestroy();},true);registerDestructor$1(this,function(){return _this39.component.destroy();});}return _createClass(ComponentStateBucket,[{key:\"willDestroy\",value:function willDestroy(){var component=this.component,isInteractive=this.isInteractive;if(isInteractive){beginUntrackFrame();component.trigger('willDestroyElement');component.trigger('willClearRender');endUntrackFrame();var element=getViewElement(component);if(element){clearElementView(element);clearViewElement(component);}}component.renderer.unregister(component);}},{key:\"finalize\",value:function finalize(){var finalizer=this.finalizer;finalizer();this.finalizer=NOOP$1;}}]);}();function internalHelper(helper){return setInternalHelperManager(helper,{});}/**\n          @module ember\n          */var ACTIONS=new WeakSet();/**\n            The `{{action}}` helper provides a way to pass triggers for behavior (usually\n            just a function) between components, and into components from controllers.\n\n            ### Passing functions with the action helper\n\n            There are three contexts an action helper can be used in. The first two\n            contexts to discuss are attribute context, and Handlebars value context.\n\n            ```handlebars\n            {{! An example of attribute context }}\n            <div onclick={{action \"save\"}}></div>\n            {{! Examples of Handlebars value context }}\n            {{input on-input=(action \"save\")}}\n            {{yield (action \"refreshData\") andAnotherParam}}\n            ```\n\n            In these contexts,\n            the helper is called a \"closure action\" helper. Its behavior is simple:\n            If passed a function name, read that function off the `actions` property\n            of the current context. Once that function is read, or immediately if a function was\n            passed, create a closure over that function and any arguments.\n            The resulting value of an action helper used this way is simply a function.\n\n            For example, in the attribute context:\n\n            ```handlebars\n            {{! An example of attribute context }}\n            <div onclick={{action \"save\"}}></div>\n            ```\n\n            The resulting template render logic would be:\n\n            ```js\n            var div = document.createElement('div');\n            var actionFunction = (function(context){\n              return function() {\n                return context.actions.save.apply(context, arguments);\n              };\n            })(context);\n            div.onclick = actionFunction;\n            ```\n\n            Thus when the div is clicked, the action on that context is called.\n            Because the `actionFunction` is just a function, closure actions can be\n            passed between components and still execute in the correct context.\n\n            Here is an example action handler on a component:\n\n            ```app/components/my-component.js\n            import Component from '@glimmer/component';\n            import { action } from '@ember/object';\n\n            export default class extends Component {\n              @action\n              save() {\n                this.model.save();\n              }\n            }\n            ```\n\n            Actions are always looked up on the `actions` property of the current context.\n            This avoids collisions in the naming of common actions, such as `destroy`.\n            Two options can be passed to the `action` helper when it is used in this way.\n\n            * `target=someProperty` will look to `someProperty` instead of the current\n              context for the `actions` hash. This can be useful when targeting a\n              service for actions.\n            * `value=\"target.value\"` will read the path `target.value` off the first\n              argument to the action when it is called and rewrite the first argument\n              to be that value. This is useful when attaching actions to event listeners.\n\n            ### Invoking an action\n\n            Closure actions curry both their scope and any arguments. When invoked, any\n            additional arguments are added to the already curried list.\n            Actions are presented in JavaScript as callbacks, and are\n            invoked like any other JavaScript function.\n\n            For example\n\n            ```app/components/update-name.js\n            import Component from '@glimmer/component';\n            import { action } from '@ember/object';\n\n            export default class extends Component {\n              @action\n              setName(model, name) {\n                model.set('name', name);\n              }\n            }\n            ```\n\n            ```app/components/update-name.hbs\n            {{input on-input=(action (action 'setName' @model) value=\"target.value\")}}\n            ```\n\n            The first argument (`@model`) was curried over, and the run-time argument (`event`)\n            becomes a second argument. Action calls can be nested this way because each simply\n            returns a function. Any function can be passed to the `{{action}}` helper, including\n            other actions.\n\n            Actions invoked with `sendAction` have the same currying behavior as demonstrated\n            with `on-input` above. For example:\n\n            ```app/components/my-input.js\n            import Component from '@glimmer/component';\n            import { action } from '@ember/object';\n\n            export default class extends Component {\n              @action\n              setName(model, name) {\n                model.set('name', name);\n              }\n            }\n            ```\n\n            ```handlebars\n            <MyInput @submit={{action 'setName' @model}} />\n            ```\n\n            or\n\n            ```handlebars\n            {{my-input submit=(action 'setName' @model)}}\n            ```\n\n            ```app/components/my-component.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              click() {\n                // Note that model is not passed, it was curried in the template\n                this.submit('bob');\n              }\n            });\n            ```\n\n            ### Attaching actions to DOM elements\n\n            The third context of the `{{action}}` helper can be called \"element space\".\n            For example:\n\n            ```handlebars\n            {{! An example of element space }}\n            <div {{action \"save\"}}></div>\n            ```\n\n            Used this way, the `{{action}}` helper provides a useful shortcut for\n            registering an HTML element in a template for a single DOM event and\n            forwarding that interaction to the template's context (controller or component).\n            If the context of a template is a controller, actions used this way will\n            bubble to routes when the controller does not implement the specified action.\n            Once an action hits a route, it will bubble through the route hierarchy.\n\n            ### Event Propagation\n\n            `{{action}}` helpers called in element space can control event bubbling. Note\n            that the closure style actions cannot.\n\n            Events triggered through the action helper will automatically have\n            `.preventDefault()` called on them. You do not need to do so in your event\n            handlers. If you need to allow event propagation (to handle file inputs for\n            example) you can supply the `preventDefault=false` option to the `{{action}}` helper:\n\n            ```handlebars\n            <div {{action \"sayHello\" preventDefault=false}}>\n              <input type=\"file\" />\n              <input type=\"checkbox\" />\n            </div>\n            ```\n\n            To disable bubbling, pass `bubbles=false` to the helper:\n\n            ```handlebars\n            <button {{action 'edit' post bubbles=false}}>Edit</button>\n            ```\n\n            To disable bubbling with closure style actions you must create your own\n            wrapper helper that makes use of `event.stopPropagation()`:\n\n            ```handlebars\n            <div onclick={{disable-bubbling (action \"sayHello\")}}>Hello</div>\n            ```\n\n            ```app/helpers/disable-bubbling.js\n            import { helper } from '@ember/component/helper';\n\n            export function disableBubbling([action]) {\n              return function(event) {\n                event.stopPropagation();\n                return action(event);\n              };\n            }\n            export default helper(disableBubbling);\n            ```\n\n            If you need the default handler to trigger you should either register your\n            own event handler, or use event methods on your view class. See\n            [\"Responding to Browser Events\"](/ember/release/classes/Component)\n            in the documentation for `Component` for more information.\n\n            ### Specifying DOM event type\n\n            `{{action}}` helpers called in element space can specify an event type.\n            By default the `{{action}}` helper registers for DOM `click` events. You can\n            supply an `on` option to the helper to specify a different DOM event name:\n\n            ```handlebars\n            <div {{action \"anActionName\" on=\"doubleClick\"}}>\n              click me\n            </div>\n            ```\n\n            See [\"Event Names\"](/ember/release/classes/Component) for a list of\n            acceptable DOM event names.\n\n            ### Specifying whitelisted modifier keys\n\n            `{{action}}` helpers called in element space can specify modifier keys.\n            By default the `{{action}}` helper will ignore click events with pressed modifier\n            keys. You can supply an `allowedKeys` option to specify which keys should not be ignored.\n\n            ```handlebars\n            <div {{action \"anActionName\" allowedKeys=\"alt\"}}>\n              click me\n            </div>\n            ```\n\n            This way the action will fire when clicking with the alt key pressed down.\n            Alternatively, supply \"any\" to the `allowedKeys` option to accept any combination of modifier keys.\n\n            ```handlebars\n            <div {{action \"anActionName\" allowedKeys=\"any\"}}>\n              click me with any key pressed\n            </div>\n            ```\n\n            ### Specifying a Target\n\n            A `target` option can be provided to the helper to change\n            which object will receive the method call. This option must be a path\n            to an object, accessible in the current context:\n\n            ```app/templates/application.hbs\n            <div {{action \"anActionName\" target=someService}}>\n              click me\n            </div>\n            ```\n\n            ```app/controllers/application.js\n            import Controller from '@ember/controller';\n            import { service } from '@ember/service';\n\n            export default class extends Controller {\n              @service someService;\n            }\n            ```\n\n            @method action\n            @deprecated\n            @for Ember.Templates.helpers\n            @public\n          */var action=internalHelper(function(args){deprecateUntil(\"Usage of the `(action)` helper is deprecated. Migrate to native functions and function invocation.\",DEPRECATIONS.DEPRECATE_TEMPLATE_ACTION);var named=args.named,positional=args.positional;// The first two argument slots are reserved.\n// pos[0] is the context (or `this`)\n// pos[1] is the action name or function\n// Anything else is an action argument.\nvar _positional2=_toArray(positional),context=_positional2[0],action=_positional2[1],restArgs=_positional2.slice(2);!(context&&action)&&assert$1('hash position arguments',context&&action);var debugKey=action.debugLabel;var target='target'in named?named['target']:context;var processArgs=makeArgsProcessor('value'in named&&named['value']||false,restArgs);var fn;if(isInvokableRef(action)){fn=makeClosureAction(action,action,invokeRef,processArgs,debugKey);}else{fn=makeDynamicClosureAction(valueForRef(context),// SAFETY: glimmer-vm should expose narrowing utilities for references\n//         as is, `target` is still `Reference<unknown>`.\n//         however, we never even tried to narrow `target`, so this is potentially risky code.\ntarget,// SAFETY: glimmer-vm should expose narrowing utilities for references\n//         as is, `action` is still `Reference<unknown>`\naction,processArgs,debugKey);}ACTIONS.add(fn);return createUnboundRef(fn,'(result of an `action` helper)');});function NOOP(args){return args;}function makeArgsProcessor(valuePathRef,actionArgsRef){var mergeArgs;if(actionArgsRef.length>0){mergeArgs=function mergeArgs(args){return actionArgsRef.map(valueForRef).concat(args);};}var readValue;if(valuePathRef){readValue=function readValue(args){var valuePath=valueForRef(valuePathRef);if(valuePath&&args.length>0){args[0]=get$2(args[0],valuePath);}return args;};}if(mergeArgs&&readValue){return function(args){return readValue(mergeArgs(args));};}else{return mergeArgs||readValue||NOOP;}}function makeDynamicClosureAction(context,targetRef,actionRef,processArgs,debugKey){var action=valueForRef(actionRef);// We don't allow undefined/null values, so this creates a throw-away action to trigger the assertions\n{makeClosureAction(context,valueForRef(targetRef),action,processArgs,debugKey);}return function(){return makeClosureAction(context,valueForRef(targetRef),action,processArgs,debugKey).apply(void 0,arguments);};}function makeClosureAction(context,target,action,processArgs,debugKey){var self;var fn;!(action!==undefined&&action!==null)&&assert$1(\"Action passed is null or undefined in (action) from \".concat(target,\".\"),action!==undefined&&action!==null);if(typeof action==='string'){var _target$actions;!(target!==null&&_typeof(target)==='object')&&assert$1('target must be an object',target!==null&&_typeof(target)==='object');self=target;var value=(_target$actions=target.actions)===null||_target$actions===void 0?void 0:_target$actions[action];!Boolean(value)&&assert$1(\"An action named '\".concat(action,\"' was not found in \").concat(target),Boolean(value));!(typeof value==='function')&&assert$1(\"An action named '\".concat(action,\"' was found in \").concat(target,\", but is not a function\"),typeof value==='function');fn=value;}else if(typeof action==='function'){self=context;fn=action;}else{assert$1(\"An action could not be made for `\".concat(debugKey||action,\"` in \").concat(target,\". Please confirm that you are using either a quoted action name (i.e. `(action '\").concat(debugKey||'myAction',\"')`) or a function available in \").concat(target,\".\"),false);}return function(){for(var _len55=arguments.length,args=new Array(_len55),_key55=0;_key55<_len55;_key55++){args[_key55]=arguments[_key55];}var payload={target:self,args:args,label:'@glimmer/closure-action'};return flaggedInstrument('interaction.ember-action',payload,function(){return join.apply(void 0,[self,fn].concat(_toConsumableArray(processArgs(args))));});};}// The code above:\n// 1. Finds an action function, usually on the `actions` hash\n// 2. Calls it with the target as the correct `this` context\n// Previously, `UPDATE_REFERENCED_VALUE` was a method on the reference itself,\n// so this made a bit more sense. Now, it isn't, and so we need to create a\n// function that can have `this` bound to it when called. This allows us to use\n// the same codepath to call `updateRef` on the reference.\nfunction invokeRef(value){updateRef(this,value);}// ComponentArgs takes EvaluatedNamedArgs and converts them into the\n// inputs needed by CurlyComponents (attrs and props, with mutable\n// cells, etc).\nfunction processComponentArgs(namedArgs){var attrs=Object.create(null);var props=Object.create(null);for(var _name26 in namedArgs){var ref=namedArgs[_name26];!ref&&assert$1('expected ref',ref);var value=valueForRef(ref);var isAction=typeof value==='function'&&ACTIONS.has(value);if(isUpdatableRef(ref)&&!isAction){attrs[_name26]=new MutableCell(ref,value);}else{attrs[_name26]=value;}props[_name26]=value;}props.attrs=attrs;return props;}var REF=Symbol('REF');var MutableCell=/*#__PURE__*/function(){function MutableCell(ref,value){_classCallCheck(this,MutableCell);_defineProperty(this,\"value\",void 0);_defineProperty(this,MUTABLE_CELL,void 0);_defineProperty(this,REF,void 0);this[MUTABLE_CELL]=true;this[REF]=ref;this.value=value;}return _createClass(MutableCell,[{key:\"update\",value:function update(val){updateRef(this[REF],val);}}]);}();var ARGS=enumerableSymbol('ARGS');var HAS_BLOCK=enumerableSymbol('HAS_BLOCK');var DIRTY_TAG=Symbol('DIRTY_TAG');var IS_DISPATCHING_ATTRS=Symbol('IS_DISPATCHING_ATTRS');var BOUNDS=Symbol('BOUNDS');var EMBER_VIEW_REF=createPrimitiveRef('ember-view');function aliasIdToElementId(args,props){if(args.named.has('id')){!!args.named.has('elementId')&&assert$1(\"You cannot invoke a component with both 'id' and 'elementId' at the same time.\",!args.named.has('elementId'));props.elementId=props.id;}}// We must traverse the attributeBindings in reverse keeping track of\n// what has already been applied. This is essentially refining the concatenated\n// properties applying right to left.\nfunction applyAttributeBindings(attributeBindings,component,rootRef,operations){var seen=[];var i=attributeBindings.length-1;while(i!==-1){var binding=attributeBindings[i];!binding&&assert$1('has binding',binding);var parsed=parseAttributeBinding(binding);var attribute=parsed[1];if(seen.indexOf(attribute)===-1){seen.push(attribute);installAttributeBinding(component,rootRef,parsed,operations);}i--;}if(seen.indexOf('id')===-1){var id=component.elementId?component.elementId:guidFor(component);operations.setAttribute('id',createPrimitiveRef(id),false,null);}}var EMPTY_POSITIONAL_ARGS=[];debugFreeze(EMPTY_POSITIONAL_ARGS);var CurlyComponentManager=/*#__PURE__*/function(){function CurlyComponentManager(){_classCallCheck(this,CurlyComponentManager);}return _createClass(CurlyComponentManager,[{key:\"templateFor\",value:function templateFor(component){var layout=component.layout,layoutName=component.layoutName;var owner=getOwner$2(component);!owner&&assert$1('Component is unexpectedly missing an owner',owner);var factory;if(layout===undefined){if(layoutName!==undefined){var _factory=owner.lookup(\"template:\".concat(layoutName));!(_factory!==undefined)&&assert$1(\"Layout `\".concat(layoutName,\"` not found!\"),_factory!==undefined);factory=_factory;}else{return null;}}else if(isTemplateFactory(layout)){factory=layout;}else{// no layout was found, use the default layout\nreturn null;}return unwrapTemplate(factory(owner)).asWrappedLayout();}},{key:\"getDynamicLayout\",value:function getDynamicLayout(bucket){return this.templateFor(bucket.component);}},{key:\"getTagName\",value:function getTagName(state){var component=state.component,hasWrappedElement=state.hasWrappedElement;if(!hasWrappedElement){return null;}return component&&component.tagName||'div';}},{key:\"getCapabilities\",value:function getCapabilities(){return CURLY_CAPABILITIES;}},{key:\"prepareArgs\",value:function prepareArgs(ComponentClass,args){var _ComponentClass$class;if(args.named.has('__ARGS__')){!(args.positional.length===0)&&assert$1('[BUG] cannot pass both __ARGS__ and positional arguments',args.positional.length===0);var _args$named$capture=args.named.capture(),__ARGS__=_args$named$capture.__ARGS__,rest=_objectWithoutProperties(_args$named$capture,_excluded2);!__ARGS__&&assert$1('[BUG] unexpectedly missing __ARGS__ after check',__ARGS__);// does this need to be untracked?\nvar __args__=valueForRef(__ARGS__);var prepared={positional:__args__.positional,named:_objectSpread(_objectSpread({},rest),__args__.named)};return prepared;}var _ref174=(_ComponentClass$class=ComponentClass.class)!==null&&_ComponentClass$class!==void 0?_ComponentClass$class:ComponentClass,positionalParams=_ref174.positionalParams;// early exits\nif(positionalParams===undefined||positionalParams===null||args.positional.length===0){return null;}var named;if(typeof positionalParams==='string'){!!args.named.has(positionalParams)&&assert$1(\"You cannot specify positional parameters and the hash argument `\".concat(positionalParams,\"`.\"),!args.named.has(positionalParams));var captured=args.positional.capture();named=_defineProperty({},positionalParams,createComputeRef(function(){return reifyPositional(captured);}));Object.assign(named,args.named.capture());}else if(Array.isArray(positionalParams)&&positionalParams.length>0){var count=Math.min(positionalParams.length,args.positional.length);named={};Object.assign(named,args.named.capture());for(var i=0;i<count;i++){var _name27=positionalParams[i];!_name27&&assert$1('Expected at least one positional param',_name27);!!args.named.has(_name27)&&assert$1(\"You cannot specify both a positional param (at position \".concat(i,\") and the hash argument `\").concat(_name27,\"`.\"),!args.named.has(_name27));named[_name27]=args.positional.at(i);}}else{return null;}return{positional:EMPTY_ARRAY$4,named:named};}/*\n             * This hook is responsible for actually instantiating the component instance.\n             * It also is where we perform additional bookkeeping to support legacy\n             * features like exposed by view mixins like ChildViewSupport, ActionSupport,\n             * etc.\n             */},{key:\"create\",value:function create(owner,ComponentClass,args,_ref175,dynamicScope,callerSelfRef,hasBlock){var isInteractive=_ref175.isInteractive;// Get the nearest concrete component instance from the scope. \"Virtual\"\n// components will be skipped.\nvar parentView=dynamicScope.view;// Capture the arguments, which tells Glimmer to give us our own, stable\n// copy of the Arguments object that is safe to hold on to between renders.\nvar capturedArgs=args.named.capture();beginTrackFrame();var props=processComponentArgs(capturedArgs);props[ARGS]=capturedArgs;var argsTag=endTrackFrame();// Alias `id` argument to `elementId` property on the component instance.\naliasIdToElementId(args,props);// Set component instance's parentView property to point to nearest concrete\n// component.\nprops.parentView=parentView;// Set whether this component was invoked with a block\n// (`{{#my-component}}{{/my-component}}`) or without one\n// (`{{my-component}}`).\nprops[HAS_BLOCK]=hasBlock;// Save the current `this` context of the template as the component's\n// `_target`, so bubbled actions are routed to the right place.\nprops._target=valueForRef(callerSelfRef);setOwner$1(props,owner);// caller:\n// <FaIcon @name=\"bug\" />\n//\n// callee:\n// <i class=\"fa-{{@name}}\"></i>\n// Now that we've built up all of the properties to set on the component instance,\n// actually create it.\nbeginUntrackFrame();var component=ComponentClass.create(props);var finalizer=_instrumentStart('render.component',initialRenderInstrumentDetails,component);// We become the new parentView for downstream components, so save our\n// component off on the dynamic scope.\ndynamicScope.view=component;// Unless we're the root component, we need to add ourselves to our parent\n// component's childViews array.\nif(parentView!==null&&parentView!==undefined){addChildView(parentView,component);}component.trigger('didReceiveAttrs');var hasWrappedElement=component.tagName!=='';// We usually do this in the `didCreateElement`, but that hook doesn't fire for tagless components\nif(!hasWrappedElement){if(isInteractive){component.trigger('willRender');}component._transitionTo('hasElement');if(isInteractive){component.trigger('willInsertElement');}}// Track additional lifecycle metadata about this component in a state bucket.\n// Essentially we're saving off all the state we'll need in the future.\nvar bucket=new ComponentStateBucket(component,capturedArgs,argsTag,finalizer,hasWrappedElement,isInteractive);if(args.named.has('class')){bucket.classRef=args.named.get('class');}{processComponentInitializationAssertions(component,props);}if(isInteractive&&hasWrappedElement){component.trigger('willRender');}endUntrackFrame();// consume every argument so we always run again\nconsumeTag(bucket.argsTag);consumeTag(component[DIRTY_TAG]);return bucket;}},{key:\"getDebugName\",value:function getDebugName(definition){var _definition$class;return definition.fullName||definition.normalizedName||((_definition$class=definition.class)===null||_definition$class===void 0?void 0:_definition$class.name)||definition.name;}},{key:\"getSelf\",value:function getSelf(_ref176){var rootRef=_ref176.rootRef;return rootRef;}},{key:\"didCreateElement\",value:function didCreateElement(_ref177,element,operations){var component=_ref177.component,classRef=_ref177.classRef,isInteractive=_ref177.isInteractive,rootRef=_ref177.rootRef;setViewElement(component,element);setElementView(element,component);var attributeBindings=component.attributeBindings,classNames=component.classNames,classNameBindings=component.classNameBindings;if(attributeBindings&&attributeBindings.length){applyAttributeBindings(attributeBindings,component,rootRef,operations);}else{var id=component.elementId?component.elementId:guidFor(component);operations.setAttribute('id',createPrimitiveRef(id),false,null);}if(classRef){var ref=createSimpleClassNameBindingRef(classRef);operations.setAttribute('class',ref,false,null);}if(classNames&&classNames.length){classNames.forEach(function(name){operations.setAttribute('class',createPrimitiveRef(name),false,null);});}if(classNameBindings&&classNameBindings.length){classNameBindings.forEach(function(binding){createClassNameBindingRef(rootRef,binding,operations);});}operations.setAttribute('class',EMBER_VIEW_REF,false,null);if('ariaRole'in component){operations.setAttribute('role',childRefFor(rootRef,'ariaRole'),false,null);}component._transitionTo('hasElement');if(isInteractive){beginUntrackFrame();component.trigger('willInsertElement');endUntrackFrame();}}},{key:\"didRenderLayout\",value:function didRenderLayout(bucket,bounds){bucket.component[BOUNDS]=bounds;bucket.finalize();}},{key:\"didCreate\",value:function didCreate(_ref178){var component=_ref178.component,isInteractive=_ref178.isInteractive;if(isInteractive){component._transitionTo('inDOM');component.trigger('didInsertElement');component.trigger('didRender');}}},{key:\"update\",value:function update(bucket){var component=bucket.component,args=bucket.args,argsTag=bucket.argsTag,argsRevision=bucket.argsRevision,isInteractive=bucket.isInteractive;bucket.finalizer=_instrumentStart('render.component',rerenderInstrumentDetails,component);beginUntrackFrame();if(args!==null&&!validateTag(argsTag,argsRevision)){beginTrackFrame();var _props6=processComponentArgs(args);argsTag=bucket.argsTag=endTrackFrame();bucket.argsRevision=valueForTag(argsTag);component[IS_DISPATCHING_ATTRS]=true;component.setProperties(_props6);component[IS_DISPATCHING_ATTRS]=false;component.trigger('didUpdateAttrs');component.trigger('didReceiveAttrs');}if(isInteractive){component.trigger('willUpdate');component.trigger('willRender');}endUntrackFrame();consumeTag(argsTag);consumeTag(component[DIRTY_TAG]);}},{key:\"didUpdateLayout\",value:function didUpdateLayout(bucket){bucket.finalize();}},{key:\"didUpdate\",value:function didUpdate(_ref179){var component=_ref179.component,isInteractive=_ref179.isInteractive;if(isInteractive){component.trigger('didUpdate');component.trigger('didRender');}}},{key:\"getDestroyable\",value:function getDestroyable(bucket){return bucket;}}]);}();function processComponentInitializationAssertions(component,props){!function(){var classNameBindings=component.classNameBindings;for(var i=0;i<classNameBindings.length;i++){var binding=classNameBindings[i];if(typeof binding!=='string'||binding.length===0){return false;}}return true;}()&&assert$1(\"classNameBindings must be non-empty strings: \".concat(component),function(){var classNameBindings=component.classNameBindings;for(var i=0;i<classNameBindings.length;i++){var binding=classNameBindings[i];if(typeof binding!=='string'||binding.length===0){return false;}}return true;}());!function(){var classNameBindings=component.classNameBindings;var _iterator55=_createForOfIteratorHelper(classNameBindings),_step55;try{for(_iterator55.s();!(_step55=_iterator55.n()).done;){var binding=_step55.value;if(binding.split(' ').length>1){return false;}}}catch(err){_iterator55.e(err);}finally{_iterator55.f();}return true;}()&&assert$1(\"classNameBindings must not have spaces in them: \".concat(component),function(){var classNameBindings=component.classNameBindings;var _iterator56=_createForOfIteratorHelper(classNameBindings),_step56;try{for(_iterator56.s();!(_step56=_iterator56.n()).done;){var binding=_step56.value;if(binding.split(' ').length>1){return false;}}}catch(err){_iterator56.e(err);}finally{_iterator56.f();}return true;}());!(component.tagName!==''||!component.classNameBindings||component.classNameBindings.length===0)&&assert$1(\"You cannot use `classNameBindings` on a tag-less component: \".concat(component),component.tagName!==''||!component.classNameBindings||component.classNameBindings.length===0);!(component.tagName!==''||props.id===component.elementId||!component.elementId&&component.elementId!=='')&&assert$1(\"You cannot use `elementId` on a tag-less component: \".concat(component),component.tagName!==''||props.id===component.elementId||!component.elementId&&component.elementId!=='');!(component.tagName!==''||!component.attributeBindings||component.attributeBindings.length===0)&&assert$1(\"You cannot use `attributeBindings` on a tag-less component: \".concat(component),component.tagName!==''||!component.attributeBindings||component.attributeBindings.length===0);}function initialRenderInstrumentDetails(component){return component.instrumentDetails({initialRender:true});}function rerenderInstrumentDetails(component){return component.instrumentDetails({initialRender:false});}var CURLY_CAPABILITIES={dynamicLayout:true,dynamicTag:true,prepareArgs:true,createArgs:true,attributeHook:true,elementHook:true,createCaller:true,dynamicScope:true,updateHook:true,createInstance:true,wrapped:true,willDestroy:true,hasSubOwner:false};var CURLY_COMPONENT_MANAGER=new CurlyComponentManager();function isCurlyManager(manager){return manager===CURLY_COMPONENT_MANAGER;}// Keep track of which component classes have already been processed for lazy event setup.\nvar lazyEventsProcessed=new WeakMap();/**\n          @module @ember/component\n          */// A zero-runtime-overhead private symbol to use in branding the component to\n// preserve its type parameter.\n/**\n            A component is a reusable UI element that consists of a `.hbs` template and an\n            optional JavaScript class that defines its behavior. For example, someone\n            might make a `button` in the template and handle the click behavior in the\n            JavaScript file that shares the same name as the template.\n\n            Components are broken down into two categories:\n\n            - Components _without_ JavaScript, that are based only on a template. These\n              are called Template-only or TO components.\n            - Components _with_ JavaScript, which consist of a template and a backing\n              class.\n\n            Ember ships with two types of JavaScript classes for components:\n\n            1. Glimmer components, imported from `@glimmer/component`, which are the\n               default component's for Ember Octane (3.15) and more recent editions.\n            2. Classic components, imported from `@ember/component`, which were the\n               default for older editions of Ember (pre 3.15).\n\n            Below is the documentation for Classic components. If you are looking for the\n            API documentation for Template-only or Glimmer components, it is [available\n            here](/ember/release/modules/@glimmer%2Fcomponent).\n\n            ## Defining a Classic Component\n\n            If you want to customize the component in order to handle events, transform\n            arguments or maintain internal state, you implement a subclass of `Component`.\n\n            One example is to add computed properties to your component:\n\n            ```app/components/person-profile.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              displayName: computed('person.title', 'person.firstName', 'person.lastName', function() {\n                let { title, firstName, lastName } = this.person;\n\n                if (title) {\n                  return `${title} ${lastName}`;\n                } else {\n                  return `${firstName} ${lastName}`;\n                }\n              })\n            });\n            ```\n\n            And then use it in the component's template:\n\n            ```app/templates/components/person-profile.hbs\n            <h1>{{this.displayName}}</h1>\n            {{yield}}\n            ```\n\n            ## Customizing a Classic Component's HTML Element in JavaScript\n\n            ### HTML Tag\n\n            The default HTML tag name used for a component's HTML representation is `div`.\n            This can be customized by setting the `tagName` property.\n\n            Consider the following component class:\n\n            ```app/components/emphasized-paragraph.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              tagName: 'em'\n            });\n            ```\n\n            When invoked, this component would produce output that looks something like\n            this:\n\n            ```html\n            <em id=\"ember1\" class=\"ember-view\"></em>\n            ```\n\n            ### HTML `class` Attribute\n\n            The HTML `class` attribute of a component's tag can be set by providing a\n            `classNames` property that is set to an array of strings:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              classNames: ['my-class', 'my-other-class']\n            });\n            ```\n\n            Invoking this component will produce output that looks like this:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view my-class my-other-class\"></div>\n            ```\n\n            `class` attribute values can also be set by providing a `classNameBindings`\n            property set to an array of properties names for the component. The return\n            value of these properties will be added as part of the value for the\n            components's `class` attribute. These properties can be computed properties:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n            import { computed } from '@ember/object';\n\n            export default Component.extend({\n              classNames: ['my-class', 'my-other-class'],\n              classNameBindings: ['propertyA', 'propertyB'],\n\n              propertyA: 'from-a',\n              propertyB: computed(function() {\n                if (someLogic) { return 'from-b'; }\n              })\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view my-class my-other-class from-a from-b\"></div>\n            ```\n\n            Note that `classNames` and `classNameBindings` is in addition to the `class`\n            attribute passed with the angle bracket invocation syntax. Therefore, if this\n            component was invoked like so:\n\n            ```handlebars\n            <MyWidget class=\"from-invocation\" />\n            ```\n\n            The resulting HTML will look similar to this:\n\n            ```html\n            <div id=\"ember1\" class=\"from-invocation ember-view my-class my-other-class from-a from-b\"></div>\n            ```\n\n            If the value of a class name binding returns a boolean the property name\n            itself will be used as the class name if the property is true. The class name\n            will not be added if the value is `false` or `undefined`.\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              classNameBindings: ['hovered'],\n\n              hovered: true\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view hovered\"></div>\n            ```\n\n            ### Custom Class Names for Boolean Values\n\n            When using boolean class name bindings you can supply a string value other\n            than the property name for use as the `class` HTML attribute by appending the\n            preferred value after a \":\" character when defining the binding:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              classNameBindings: ['awesome:so-very-cool'],\n\n              awesome: true\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view so-very-cool\"></div>\n            ```\n\n            Boolean value class name bindings whose property names are in a\n            camelCase-style format will be converted to a dasherized format:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              classNameBindings: ['isUrgent'],\n\n              isUrgent: true\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view is-urgent\"></div>\n            ```\n\n            Class name bindings can also refer to object values that are found by\n            traversing a path relative to the component itself:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n            import EmberObject from '@ember/object';\n\n            export default Component.extend({\n              classNameBindings: ['messages.empty'],\n\n              messages: EmberObject.create({\n                empty: true\n              })\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view empty\"></div>\n            ```\n\n            If you want to add a class name for a property which evaluates to true and and\n            a different class name if it evaluates to false, you can pass a binding like\n            this:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              classNameBindings: ['isEnabled:enabled:disabled'],\n              isEnabled: true\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view enabled\"></div>\n            ```\n\n            When isEnabled is `false`, the resulting HTML representation looks like this:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view disabled\"></div>\n            ```\n\n            This syntax offers the convenience to add a class if a property is `false`:\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            // Applies no class when isEnabled is true and class 'disabled' when isEnabled is false\n            export default Component.extend({\n              classNameBindings: ['isEnabled::disabled'],\n              isEnabled: true\n            });\n            ```\n\n            Invoking this component when the `isEnabled` property is true will produce\n            HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view\"></div>\n            ```\n\n            Invoking it when the `isEnabled` property on the component is `false` will\n            produce HTML that looks like:\n\n            ```html\n            <div id=\"ember1\" class=\"ember-view disabled\"></div>\n            ```\n\n            Updates to the value of a class name binding will result in automatic update\n            of the  HTML `class` attribute in the component's rendered HTML\n            representation. If the value becomes `false` or `undefined` the class name\n            will be removed.\n\n            Both `classNames` and `classNameBindings` are concatenated properties. See\n            [EmberObject](/ember/release/classes/EmberObject) documentation for more\n            information about concatenated properties.\n\n            ### Other HTML Attributes\n\n            The HTML attribute section of a component's tag can be set by providing an\n            `attributeBindings` property set to an array of property names on the\n            component. The return value of these properties will be used as the value of\n            the component's HTML associated attribute:\n\n            ```app/components/my-anchor.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              tagName: 'a',\n              attributeBindings: ['href'],\n\n              href: 'http://google.com'\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n            ```\n\n            One property can be mapped on to another by placing a \":\" between the source\n            property and the destination property:\n\n            ```app/components/my-anchor.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              tagName: 'a',\n              attributeBindings: ['url:href'],\n\n              url: 'http://google.com'\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n            ```\n\n            HTML attributes passed with angle bracket invocations will take precedence\n            over those specified in `attributeBindings`. Therefore, if this component was\n            invoked like so:\n\n            ```handlebars\n            <MyAnchor href=\"http://bing.com\" @url=\"http://google.com\" />\n            ```\n\n            The resulting HTML will looks like this:\n\n            ```html\n            <a id=\"ember1\" class=\"ember-view\" href=\"http://bing.com\"></a>\n            ```\n\n            Note that the `href` attribute is ultimately set to `http://bing.com`, despite\n            it having attribute binidng to the `url` property, which was set to\n            `http://google.com`.\n\n            Namespaced attributes (e.g. `xlink:href`) are supported, but have to be\n            mapped, since `:` is not a valid character for properties in Javascript:\n\n            ```app/components/my-use.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              tagName: 'use',\n              attributeBindings: ['xlinkHref:xlink:href'],\n\n              xlinkHref: '#triangle'\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <use xlink:href=\"#triangle\"></use>\n            ```\n\n            If the value of a property monitored by `attributeBindings` is a boolean, the\n            attribute will be present or absent depending on the value:\n\n            ```app/components/my-text-input.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              tagName: 'input',\n              attributeBindings: ['disabled'],\n\n              disabled: false\n            });\n            ```\n\n            Invoking this component will produce HTML that looks like:\n\n            ```html\n            <input id=\"ember1\" class=\"ember-view\" />\n            ```\n\n            `attributeBindings` can refer to computed properties:\n\n            ```app/components/my-text-input.js\n            import Component from '@ember/component';\n            import { computed } from '@ember/object';\n\n            export default Component.extend({\n              tagName: 'input',\n              attributeBindings: ['disabled'],\n\n              disabled: computed(function() {\n                if (someLogic) {\n                  return true;\n                } else {\n                  return false;\n                }\n              })\n            });\n            ```\n\n            To prevent setting an attribute altogether, use `null` or `undefined` as the\n            value of the property used in `attributeBindings`:\n\n            ```app/components/my-text-input.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              tagName: 'form',\n              attributeBindings: ['novalidate'],\n              novalidate: null\n            });\n            ```\n\n            Updates to the property of an attribute binding will result in automatic\n            update of the  HTML attribute in the component's HTML output.\n\n            `attributeBindings` is a concatenated property. See\n            [EmberObject](/ember/release/classes/EmberObject) documentation for more\n            information about concatenated properties.\n\n            ## Layouts\n\n            The `layout` property can be used to dynamically specify a template associated\n            with a component class, instead of relying on Ember to link together a\n            component class and a template based on file names.\n\n            In general, applications should not use this feature, but it's commonly used\n            in addons for historical reasons.\n\n            The `layout` property should be set to the default export of a template\n            module, which is the name of a template file without the `.hbs` extension.\n\n            ```app/templates/components/person-profile.hbs\n            <h1>Person's Title</h1>\n            <div class='details'>{{yield}}</div>\n            ```\n\n            ```app/components/person-profile.js\n              import Component from '@ember/component';\n              import layout from '../templates/components/person-profile';\n\n              export default Component.extend({\n                layout\n              });\n            ```\n\n            If you invoke the component:\n\n            ```handlebars\n            <PersonProfile>\n              <h2>Chief Basket Weaver</h2>\n              <h3>Fisherman Industries</h3>\n            </PersonProfile>\n            ```\n\n            or\n\n            ```handlebars\n            {{#person-profile}}\n              <h2>Chief Basket Weaver</h2>\n              <h3>Fisherman Industries</h3>\n            {{/person-profile}}\n            ```\n\n            It will result in the following HTML output:\n\n            ```html\n            <h1>Person's Title</h1>\n              <div class=\"details\">\n              <h2>Chief Basket Weaver</h2>\n              <h3>Fisherman Industries</h3>\n            </div>\n            ```\n\n            ## Handling Browser Events\n\n            There are two ways to handle user-initiated events:\n\n            ### Using the `on` modifier to capture browser events\n\n            In a component's template, you can attach an event handler to any element with the `on` modifier:\n\n            ```handlebars\n            <button {{on 'click' this.doSomething}} />\n            ```\n\n            This will call the function on your component:\n\n            ```js\n            import Component from '@ember/component';\n\n            export default class ExampleComponent extends Component {\n              doSomething = (event) => {\n                // `event` is the native click Event\n                console.log('clicked on the button');\n              };\n            });\n            ```\n\n            See the [Guide on Component event\n            handlers](https://guides.emberjs.com/release/components/component-state-and-actions/#toc_html-modifiers-and-actions)\n            and the [API docs for `on`](../Ember.Templates.helpers/methods/on?anchor=on)\n            for more details.\n\n            ### Event Handler Methods\n\n            Components can also respond to user-initiated events by implementing a method\n            that matches the event name. This approach is appropriate when the same event\n            should be handled by all instances of the same component.\n\n            An event object will be passed as the argument to the event handler method.\n\n            ```app/components/my-widget.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              click(event) {\n                // `event.target` is either the component's element or one of its children\n                let tag = event.target.tagName.toLowerCase();\n                console.log('clicked on a `<${tag}>` HTML element!');\n              }\n            });\n            ```\n\n            In this example, whenever the user clicked anywhere inside the component, it\n            will log a message to the console.\n\n            It is possible to handle event types other than `click` by implementing the\n            following event handler methods. In addition, custom events can be registered\n            by using `Application.customEvents`.\n\n            Touch events:\n\n            * `touchStart`\n            * `touchMove`\n            * `touchEnd`\n            * `touchCancel`\n\n            Keyboard events:\n\n            * `keyDown`\n            * `keyUp`\n            * `keyPress`\n\n            Mouse events:\n\n            * `mouseDown`\n            * `mouseUp`\n            * `contextMenu`\n            * `click`\n            * `doubleClick`\n            * `focusIn`\n            * `focusOut`\n\n            Form events:\n\n            * `submit`\n            * `change`\n            * `focusIn`\n            * `focusOut`\n            * `input`\n\n            Drag and drop events:\n\n            * `dragStart`\n            * `drag`\n            * `dragEnter`\n            * `dragLeave`\n            * `dragOver`\n            * `dragEnd`\n            * `drop`\n\n            @class Component\n            @extends Ember.CoreView\n            @uses Ember.TargetActionSupport\n            @uses Ember.ClassNamesSupport\n            @uses Ember.ActionSupport\n            @uses Ember.ViewMixin\n            @uses Ember.ViewStateSupport\n            @public\n          */// This type param is used in the class, so must appear here.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar Component=/*#__PURE__*/function(_CoreView$extend){function Component(){var _this40;_classCallCheck(this,Component);for(var _len56=arguments.length,args=new Array(_len56),_key56=0;_key56<_len56;_key56++){args[_key56]=arguments[_key56];}_this40=_callSuper(this,Component,[].concat(args));_defineProperty(_this40,\"isComponent\",true);_defineProperty(_this40,\"__dispatcher\",void 0);return _this40;}_inherits(Component,_CoreView$extend);return _createClass(Component,[{key:\"init\",value:// SAFETY: this has no runtime existence whatsoever; it is a \"phantom type\"\n// here to preserve the type param.\n// SAFTEY: This is set in `init`.\nfunction init(properties){var _this41=this;_superPropGet(Component,\"init\",this,3)([properties]);// Handle methods from ViewMixin.\n// The native class inheritance will not work for mixins. To work around this,\n// we copy the existing rerender method provided by the mixin and swap in the\n// new rerender method from our class.\nthis._superRerender=this.rerender;this.rerender=this._rerender;this[IS_DISPATCHING_ATTRS]=false;this[DIRTY_TAG]=createTag();this[BOUNDS]=null;var eventDispatcher=this._dispatcher;if(eventDispatcher){var lazyEventsProcessedForComponentClass=lazyEventsProcessed.get(eventDispatcher);if(!lazyEventsProcessedForComponentClass){lazyEventsProcessedForComponentClass=new WeakSet();lazyEventsProcessed.set(eventDispatcher,lazyEventsProcessedForComponentClass);}var _proto2=Object.getPrototypeOf(this);if(!lazyEventsProcessedForComponentClass.has(_proto2)){var lazyEvents=eventDispatcher.lazyEvents;lazyEvents.forEach(function(mappedEventName,event){if(mappedEventName!==null&&typeof _this41[mappedEventName]==='function'){eventDispatcher.setupHandlerForBrowserEvent(event);}});lazyEventsProcessedForComponentClass.add(_proto2);}}if(eventDispatcher&&this.renderer._isInteractive&&this.tagName===''){var eventNames=[];var events=eventDispatcher.finalEventNameMapping;for(var key in events){var methodName=events[key];if(methodName&&typeof this[methodName]==='function'){eventNames.push(methodName);}}// If in a tagless component, assert that no event handlers are defined\n!!eventNames.length&&assert$1(\"You can not define `\".concat(eventNames,\"` function(s) to handle DOM event in the `\").concat(this,\"` tagless component since it doesn't have any DOM element.\"),!eventNames.length);}}},{key:\"_dispatcher\",get:function get(){if(this.__dispatcher===undefined){var owner=getOwner$2(this);!owner&&assert$1('Component is unexpectedly missing an owner',owner);if(owner.lookup('-environment:main').isInteractive){var dispatcher=owner.lookup('event_dispatcher:main');!(dispatcher instanceof EventDispatcher)&&assert$1('Expected dispatcher to be an EventDispatcher',dispatcher instanceof EventDispatcher);this.__dispatcher=dispatcher;}else{// In FastBoot we have no EventDispatcher. Set to null to not try again to look it up.\nthis.__dispatcher=null;}}return this.__dispatcher;}},{key:\"on\",value:function on(name,target,method){var _this$_dispatcher;(_this$_dispatcher=this._dispatcher)===null||_this$_dispatcher===void 0||_this$_dispatcher.setupHandlerForEmberEvent(name);// The `on` method here comes from the Evented mixin. Since this mixin\n// is applied to the parent of this class, however, we are still able\n// to use `super`.\nreturn _superPropGet(Component,\"on\",this,3)([name,target,method]);}// Changed to `rerender` on init\n},{key:\"_rerender\",value:function _rerender(){DIRTY_TAG$1(this[DIRTY_TAG]);this._superRerender();}},{key:PROPERTY_DID_CHANGE,value:function value(key,_value6){if(this[IS_DISPATCHING_ATTRS]){return;}var args=this[ARGS];var reference=args!==undefined?args[key]:undefined;if(reference!==undefined&&isUpdatableRef(reference)){updateRef(reference,arguments.length===2?_value6:get$2(this,key));}}},{key:\"getAttr\",value:function getAttr(key){// TODO Intimate API should be deprecated\nreturn this.get(key);}/**\n              Normally, Ember's component model is \"write-only\". The component takes a\n              bunch of attributes that it got passed in, and uses them to render its\n              template.\n               One nice thing about this model is that if you try to set a value to the\n              same thing as last time, Ember (through HTMLBars) will avoid doing any\n              work on the DOM.\n               This is not just a performance optimization. If an attribute has not\n              changed, it is important not to clobber the element's \"hidden state\".\n              For example, if you set an input's `value` to the same value as before,\n              it will clobber selection state and cursor position. In other words,\n              setting an attribute is not **always** idempotent.\n               This method provides a way to read an element's attribute and also\n              update the last value Ember knows about at the same time. This makes\n              setting an attribute idempotent.\n               In particular, what this means is that if you get an `<input>` element's\n              `value` attribute and then re-render the template with the same value,\n              it will avoid clobbering the cursor and selection position.\n              Since most attribute sets are idempotent in the browser, you typically\n              can get away with reading attributes using jQuery, but the most reliable\n              way to do so is through this method.\n              @method readDOMAttr\n               @param {String} name the name of the attribute\n              @return String\n              @public\n              */},{key:\"readDOMAttr\",value:function readDOMAttr(name){// TODO revisit this\nvar _element=getViewElement(this);!(_element!==null)&&assert$1(\"Cannot call `readDOMAttr` on \".concat(this,\" which does not have an element\"),_element!==null);var element=_element;var isSVG=element.namespaceURI==='http://www.w3.org/2000/svg';var _normalizeProperty2=normalizeProperty(element,name),type=_normalizeProperty2.type,normalized=_normalizeProperty2.normalized;if(isSVG||type==='attr'){return element.getAttribute(normalized);}return element[normalized];}// --- Declarations which support mixins ---\n// We use `declare` on these properties, even though they are optional, so\n// that they do not get created on the class *at all* when emitting the\n// transpiled code. Otherwise, since declared class properties are equivalent\n// to calling `defineProperty` in the class constructor, they would \"stomp\"\n// the properties supplied by mixins.\n/**\n             Enables components to take a list of parameters as arguments.\n              For example, a component that takes two parameters with the names\n              `name` and `age`:\n               ```app/components/my-component.js\n              import Component from '@ember/component';\n               let MyComponent = Component.extend();\n               MyComponent.reopenClass({\n                positionalParams: ['name', 'age']\n              });\n               export default MyComponent;\n              ```\n               It can then be invoked like this:\n               ```hbs\n              {{my-component \"John\" 38}}\n              ```\n               The parameters can be referred to just like named parameters:\n               ```hbs\n              Name: {{name}}, Age: {{age}}.\n              ```\n               Using a string instead of an array allows for an arbitrary number of\n              parameters:\n               ```app/components/my-component.js\n              import Component from '@ember/component';\n               let MyComponent = Component.extend();\n               MyComponent.reopenClass({\n                positionalParams: 'names'\n              });\n               export default MyComponent;\n              ```\n               It can then be invoked like this:\n               ```hbs\n              {{my-component \"John\" \"Michael\" \"Scott\"}}\n              ```\n              The parameters can then be referred to by enumerating over the list:\n               ```hbs\n              {{#each names as |name|}}{{name}}{{/each}}\n              ```\n               @static\n              @public\n              @property positionalParams\n              @since 1.13.0\n              *//**\n                 Enables components to take a list of parameters as arguments.\n                 For example, a component that takes two parameters with the names\n                 `name` and `age`:\n                 ```app/components/my-component.js\n                 import Component from '@ember/component';\n                 let MyComponent = Component.extend();\n                 MyComponent.reopenClass({\n                 positionalParams: ['name', 'age']\n                 });\n                 export default MyComponent;\n                 ```\n                 It can then be invoked like this:\n                 ```hbs\n                 {{my-component \"John\" 38}}\n                 ```\n                 The parameters can be referred to just like named parameters:\n                 ```hbs\n                 Name: {{name}}, Age: {{age}}.\n                 ```\n                 Using a string instead of an array allows for an arbitrary number of\n                 parameters:\n                 ```app/components/my-component.js\n                 import Component from '@ember/component';\n                 let MyComponent = Component.extend();\n                 MyComponent.reopenClass({\n                 positionalParams: 'names'\n                 });\n                 export default MyComponent;\n                 ```\n                 It can then be invoked like this:\n                 ```hbs\n                 {{my-component \"John\" \"Michael\" \"Scott\"}}\n                 ```\n                 The parameters can then be referred to by enumerating over the list:\n                 ```hbs\n                 {{#each names as |name|}}{{name}}{{/each}}\n                 ```\n                 @static\n                 @public\n                 @property positionalParams\n                 @since 1.13.0\n                 *//**\n              Layout can be used to wrap content in a component.\n              @property layout\n              @type Function\n              @public\n            *//**\n              The name of the layout to lookup if no layout is provided.\n              By default `Component` will lookup a template with this name in\n              `Ember.TEMPLATES` (a shared global object).\n              @property layoutName\n              @type String\n              @default undefined\n              @private\n            *//**\n             The WAI-ARIA role of the control represented by this view. For example, a\n              button may have a role of type 'button', or a pane may have a role of\n              type 'alertdialog'. This property is used by assistive software to help\n              visually challenged users navigate rich web applications.\n               The full list of valid WAI-ARIA roles is available at:\n              [https://www.w3.org/TR/wai-aria/#roles_categorization](https://www.w3.org/TR/wai-aria/#roles_categorization)\n               @property ariaRole\n              @type String\n              @default undefined\n              @public\n              */}],[{key:\"toString\",value:function toString(){return'@ember/component';}}]);}(CoreView.extend(ChildViewsSupport,ViewStateSupport,ClassNamesSupport,TargetActionSupport,ActionSupport,ViewMixin,{// These need to be overridable via extend/create but should still\n// have a default. Defining them here is the best way to achieve that.\ndidReceiveAttrs:function didReceiveAttrs(){},didRender:function didRender(){},didUpdate:function didUpdate(){},didUpdateAttrs:function didUpdateAttrs(){},willRender:function willRender(){},willUpdate:function willUpdate(){}}));// We continue to use reopenClass here so that positionalParams can be overridden with reopenClass in subclasses.\n_defineProperty(Component,\"isComponentFactory\",true);Component.reopenClass({positionalParams:[]});setInternalComponentManager(CURLY_COMPONENT_MANAGER,Component);/**\n          @module @ember/component\n          */var RECOMPUTE_TAG=Symbol('RECOMPUTE_TAG');// Signature type utilities\n// Implements Ember's `Factory` interface and tags it for narrowing/checking.\nvar IS_CLASSIC_HELPER=Symbol('IS_CLASSIC_HELPER');// A zero-runtime-overhead private symbol to use in branding the component to\n// preserve its type parameter.\n/**\n            Ember Helpers are functions that can compute values, and are used in templates.\n            For example, this code calls a helper named `format-currency`:\n\n            ```app/templates/application.hbs\n            <Cost @cents={{230}} />\n            ```\n\n            ```app/components/cost.hbs\n            <div>{{format-currency @cents currency=\"$\"}}</div>\n            ```\n\n            Additionally a helper can be called as a nested helper.\n            In this example, we show the formatted currency value if the `showMoney`\n            named argument is truthy.\n\n            ```handlebars\n            {{if @showMoney (format-currency @cents currency=\"$\")}}\n            ```\n\n            Helpers defined using a class must provide a `compute` function. For example:\n\n            ```app/helpers/format-currency.js\n            import Helper from '@ember/component/helper';\n\n            export default class extends Helper {\n              compute([cents], { currency }) {\n                return `${currency}${cents * 0.01}`;\n              }\n            }\n            ```\n\n            Each time the input to a helper changes, the `compute` function will be\n            called again.\n\n            As instances, these helpers also have access to the container and will accept\n            injected dependencies.\n\n            Additionally, class helpers can call `recompute` to force a new computation.\n\n            @class Helper\n            @extends CoreObject\n            @public\n            @since 1.13.0\n          */// ESLint doesn't understand declaration merging.\n/* eslint-disable import/export */var Helper=/*#__PURE__*/function(_FrameworkObject2){function Helper(){_classCallCheck(this,Helper);return _callSuper(this,Helper,arguments);}_inherits(Helper,_FrameworkObject2);return _createClass(Helper,[{key:\"init\",value:// SAFETY: this is initialized in `init`, rather than `constructor`. It is\n// safe to `declare` like this *if and only if* nothing uses the constructor\n// directly in this class, since nothing else can run before `init`.\n// SAFETY: this has no runtime existence whatsoever; it is a \"phantom type\"\n// here to preserve the type param.\nfunction init(properties){_superPropGet(Helper,\"init\",this,3)([properties]);this[RECOMPUTE_TAG]=createTag();!this.compute&&assert$1('expected compute to be defined',this.compute);}/**\n              On a class-based helper, it may be useful to force a recomputation of that\n              helpers value. This is akin to `rerender` on a component.\n               For example, this component will rerender when the `currentUser` on a\n              session service changes:\n               ```app/helpers/current-user-email.js\n              import Helper from '@ember/component/helper'\n              import { service } from '@ember/service'\n              import { observer } from '@ember/object'\n               export default Helper.extend({\n                session: service(),\n                 onNewUser: observer('session.currentUser', function() {\n                  this.recompute();\n                }),\n                 compute() {\n                  return this.get('session.currentUser.email');\n                }\n              });\n              ```\n               @method recompute\n              @public\n              @since 1.13.0\n            */},{key:\"recompute\",value:function recompute(){var _this42=this;join(function(){return DIRTY_TAG$1(_this42[RECOMPUTE_TAG]);});}}]);}(FrameworkObject);/* eslint-enable import/export */_defineProperty(Helper,\"isHelperFactory\",true);_defineProperty(Helper,IS_CLASSIC_HELPER,true);// `packages/ember/index.js` was setting `Helper.helper`. This seems like\n// a bad idea and probably not something we want. We've moved that definition\n// here, but it should definitely be reviewed and probably removed.\n/** @deprecated */_defineProperty(Helper,\"helper\",helper$2);function isClassicHelper(obj){return obj[IS_CLASSIC_HELPER]===true;}var ClassicHelperManager=/*#__PURE__*/function(){function ClassicHelperManager(owner){_classCallCheck(this,ClassicHelperManager);_defineProperty(this,\"capabilities\",helperCapabilities('3.23',{hasValue:true,hasDestroyable:true}));_defineProperty(this,\"ownerInjection\",void 0);var ownerInjection={};setOwner$1(ownerInjection,owner);this.ownerInjection=ownerInjection;}return _createClass(ClassicHelperManager,[{key:\"createHelper\",value:function createHelper(definition,args){var instance=isFactoryManager(definition)?definition.create():definition.create(this.ownerInjection);!function(instance){if(instance!==null&&_typeof(instance)==='object'){var _cast=instance;return typeof _cast.compute==='function'&&typeof _cast.destroy==='function';}return false;}(instance)&&assert$1('expected HelperInstance',function(instance){if(instance!==null&&_typeof(instance)==='object'){var _cast2=instance;return typeof _cast2.compute==='function'&&typeof _cast2.destroy==='function';}return false;}(instance));return{instance:instance,args:args};}},{key:\"getDestroyable\",value:function getDestroyable(_ref180){var instance=_ref180.instance;return instance;}},{key:\"getValue\",value:function getValue(_ref181){var instance=_ref181.instance,args=_ref181.args;var positional=args.positional,named=args.named;var ret=instance.compute(positional,named);consumeTag(instance[RECOMPUTE_TAG]);return ret;}},{key:\"getDebugName\",value:function getDebugName(definition){return getDebugName$1((definition.class||definition)['prototype']);}}]);}();function isFactoryManager(obj){return obj!=null&&'class'in obj;}setHelperManager$1(function(owner){return new ClassicHelperManager(owner);},Helper);var CLASSIC_HELPER_MANAGER=getInternalHelperManager(Helper);///////////\nvar Wrapper=/*#__PURE__*/function(){function Wrapper(compute){_classCallCheck(this,Wrapper);_defineProperty(this,\"isHelperFactory\",true);this.compute=compute;}return _createClass(Wrapper,[{key:\"create\",value:function create(){// needs new instance or will leak containers\nreturn{compute:this.compute};}}]);}();var SimpleClassicHelperManager=/*#__PURE__*/function(){function SimpleClassicHelperManager(){_classCallCheck(this,SimpleClassicHelperManager);_defineProperty(this,\"capabilities\",helperCapabilities('3.23',{hasValue:true}));}return _createClass(SimpleClassicHelperManager,[{key:\"createHelper\",value:function createHelper(definition,args){return function(){return definition.compute.call(null,args.positional,args.named);};}},{key:\"getValue\",value:function getValue(fn){return fn();}},{key:\"getDebugName\",value:function getDebugName(definition){return getDebugName$1(definition.compute);}}]);}();var SIMPLE_CLASSIC_HELPER_MANAGER=new SimpleClassicHelperManager();setHelperManager$1(function(){return SIMPLE_CLASSIC_HELPER_MANAGER;},Wrapper.prototype);/*\n            Function-based helpers need to present with a constructor signature so that\n            type parameters can be preserved when `helper()` is passed a generic function\n            (this is particularly key for checking helper invocations with Glint).\n            Accordingly, we define an abstract class and declaration merge it with the\n            interface; this inherently provides an `abstract` constructor. Since it is\n            `abstract`, it is not callable, which is important since end users should not\n            be able to do `let myHelper = helper(someFn); new myHelper()`.\n           *//**\n           * The type of a function-based helper.\n           *\n           * @note This is *not* user-constructible: it is exported only so that the type\n           *   returned by the `helper` function can be named (and indeed can be exported\n           *   like `export default helper(...)` safely).\n           */// Making `FunctionBasedHelper` an alias this way allows callers to name it in\n// terms meaningful to *them*, while preserving the type behavior described on\n// the `abstract class FunctionBasedHelperInstance` below.\n// This abstract class -- specifically, its `protected abstract __concrete__`\n// member -- prevents subclasses from doing `class X extends helper(..)`, since\n// that is an error at runtime. While it is rare that people would type that, it\n// is not impossible and we use this to give them early signal via the types for\n// a behavior which will break (and in a somewhat inscrutable way!) at runtime.\n//\n// This is needful because we lie about what this actually is for Glint's sake:\n// a function-based helper returns a `Factory<SimpleHelper>`, which is designed\n// to be \"opaque\" from a consumer's POV, i.e. not user-callable or constructible\n// but only useable in a template (or via `invokeHelper()` which also treats it\n// as a fully opaque `object` from a type POV). But Glint needs a `Helper<S>` to\n// make it work the same way as class-based helpers. (Note that this does not\n// hold for plain functions as helpers, which it can handle distinctly.) This\n// signature thus makes it so that the item is usable *as* a `Helper` in Glint,\n// but without letting end users treat it as a helper class instance.\n/**\n            In many cases it is not necessary to use the full `Helper` class.\n            The `helper` method create pure-function helpers without instances.\n            For example:\n\n            ```app/helpers/format-currency.js\n            import { helper } from '@ember/component/helper';\n\n            export default helper(function([cents], {currency}) {\n              return `${currency}${cents * 0.01}`;\n            });\n            ```\n\n            @static\n            @param {Function} helper The helper function\n            @method helper\n            @for @ember/component/helper\n            @public\n            @since 1.13.0\n          */// This overload allows users to write types directly on the callback passed to\n// the `helper` function and infer the resulting type correctly.\n// This overload allows users to provide a `Signature` type explicitly at the\n// helper definition site, e.g. `helper<Sig>((pos, named) => {...})`. **Note:**\n// this overload must appear second, since TS' inference engine will not\n// correctly infer the type of `S` here from the types on the supplied callback.\nfunction helper$2(helperFn){// SAFETY: this is completely lies, in two ways:\n//\n// 1. `Wrapper` is a `Factory<SimpleHelper<S>>`, but from the perspective of\n//    any external callers (i.e. Ember *users*), it is quite important that\n//    the `Factory` relationship be hidden, because it is not public API for\n//    an end user to call `.create()` on a helper created this way. Instead,\n//    we provide them an `abstract new` signature (which means it cannot be\n//    directly constructed by calling `new` on it) and which does not have the\n//    `.create()` signature on it anymore.\n//\n// 2. The produced type here ends up being a subtype of `Helper`, which is not\n//    strictly true. This is necessary for the sake of Glint, which provides\n//    its information by way of a \"declaration merge\" with `Helper<S>` in the\n//    case of items produced by `helper()`.\n//\n// Long-term, this entire construct can go away in favor of deprecating the\n// `helper()` invocation in favor of using plain functions.\nreturn new Wrapper(helperFn);}/**\n          @module @ember/template\n          *//**\n            A wrapper around a string that has been marked as safe (\"trusted\"). **When\n            rendered in HTML, Ember will not perform any escaping.**\n\n            Note:\n\n            1. This does not *make* the string safe; it means that some code in your\n               application has *marked* it as safe using the `htmlSafe()` function.\n\n            2. The only public API for getting a `SafeString` is calling `htmlSafe()`. It\n               is *not* user-constructible.\n\n            If a string contains user inputs or other untrusted data, you must sanitize\n            the string before using the `htmlSafe` method. Otherwise your code is\n            vulnerable to [Cross-Site Scripting][xss]. There are many open source\n            sanitization libraries to choose from, both for front end and server-side\n            sanitization.\n\n            [xss]: https://owasp.org/www-community/attacks/DOM_Based_XSS\n\n            ```javascript\n            import { htmlSafe } from '@ember/template';\n\n            let someTrustedOrSanitizedString = \"<div>Hello!</div>\"\n\n            htmlSafe(someTrustedorSanitizedString);\n            ```\n\n            @for @ember/template\n            @class SafeString\n            @since 4.12.0\n            @public\n           */var SafeString=/*#__PURE__*/function(){function SafeString(string){_classCallCheck(this,SafeString);_defineProperty(this,\"__string\",void 0);this.__string=string;}/**\n              Get the string back to use as a string.\n               @public\n              @method toString\n              @returns {String} The string marked as trusted\n             */return _createClass(SafeString,[{key:\"toString\",value:function toString(){return\"\".concat(this.__string);}/**\n              Get the wrapped string as HTML to use without escaping.\n               @public\n              @method toHTML\n              @returns {String} the trusted string, without any escaping applied\n             */},{key:\"toHTML\",value:function toHTML(){return this.toString();}}]);}();var escape={'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#x27;','`':'&#x60;','=':'&#x3D;'};var possible=/[&<>\"'`=]/;var badChars=/[&<>\"'`=]/g;function escapeChar(chr){return escape[chr];}function escapeExpression(string){var s;if(typeof string!=='string'){// don't escape SafeStrings, since they're already safe\nif(isHTMLSafe(string)){return string.toHTML();}else if(string===null||string===undefined){return'';}else if(!string){return String(string);}// Force a string conversion as this will be done by the append regardless and\n// the regex test will do this transparently behind the scenes, causing issues if\n// an object's to string has escaped characters in it.\ns=String(string);}else{s=string;}if(!possible.test(s)){return s;}// SAFETY: this is technically a lie, but it's a true lie as long as the\n// invariant it depends on is upheld: `escapeChar` will always return a string\n// as long as its input is one of the characters in `escape`, and it will only\n// be called if it matches one of the characters in the `badChar` regex, which\n// is hand-maintained to match the set escaped. (It would be nice if TS could\n// \"see\" into the regex to see how this works, but that'd be quite a lot of\n// extra fanciness.)\nreturn s.replace(badChars,escapeChar);}/**\n            Use this method to indicate that a string should be rendered as HTML\n            when the string is used in a template. To say this another way,\n            strings marked with `htmlSafe` will not be HTML escaped.\n\n            A word of warning -   The `htmlSafe` method does not make the string safe;\n            it only tells the framework to treat the string as if it is safe to render\n            as HTML. If a string contains user inputs or other untrusted\n            data, you must sanitize the string before using the `htmlSafe` method.\n            Otherwise your code is vulnerable to\n            [Cross-Site Scripting](https://owasp.org/www-community/attacks/DOM_Based_XSS).\n            There are many open source sanitization libraries to choose from,\n            both for front end and server-side sanitization.\n\n            ```javascript\n            import { htmlSafe } from '@ember/template';\n\n            const someTrustedOrSanitizedString = \"<div>Hello!</div>\"\n\n            htmlSafe(someTrustedorSanitizedString)\n            ```\n\n            @method htmlSafe\n            @for @ember/template\n            @param str {String} The string to treat as trusted.\n            @static\n            @return {SafeString} A string that will not be HTML escaped by Handlebars.\n            @public\n          */function htmlSafe(str){if(str===null||str===undefined){str='';}else if(typeof str!=='string'){str=String(str);}return new SafeString(str);}/**\n            Detects if a string was decorated using `htmlSafe`.\n\n            ```javascript\n            import { htmlSafe, isHTMLSafe } from '@ember/template';\n\n            let plainString = 'plain string';\n            let safeString = htmlSafe('<div>someValue</div>');\n\n            isHTMLSafe(plainString); // false\n            isHTMLSafe(safeString);  // true\n            ```\n\n            @method isHTMLSafe\n            @for @ember/template\n            @static\n            @return {Boolean} `true` if the string was decorated with `htmlSafe`, `false` otherwise.\n            @public\n          */function isHTMLSafe(str){return str!==null&&_typeof(str)==='object'&&'toHTML'in str&&typeof str.toHTML==='function';}/**\n          @module @ember/engine\n          *//**\n            The `EngineInstance` encapsulates all of the stateful aspects of a\n            running `Engine`.\n\n            @public\n            @class EngineInstance\n            @extends EmberObject\n            @uses RegistryProxyMixin\n            @uses ContainerProxyMixin\n          */// Note on types: since `EngineInstance` uses `RegistryProxyMixin` and\n// `ContainerProxyMixin`, which respectively implement the same `RegistryMixin`\n// and `ContainerMixin` types used to define `InternalOwner`, this is the same\n// type as `InternalOwner` from TS's POV. The point of the explicit `extends`\n// clauses for `InternalOwner` and `Owner` is to keep us honest: if this stops\n// type checking, we have broken part of our public API contract. Medium-term,\n// the goal here is to `EngineInstance` simple be `Owner`.\nvar EngineInstance=/*#__PURE__*/function(_EmberObject$extend){function EngineInstance(){var _this43;_classCallCheck(this,EngineInstance);for(var _len57=arguments.length,args=new Array(_len57),_key57=0;_key57<_len57;_key57++){args[_key57]=arguments[_key57];}_this43=_callSuper(this,EngineInstance,[].concat(args));/**\n              The base `Engine` for which this is an instance.\n               @property {Engine} engine\n              @private\n            */_defineProperty(_this43,ENGINE_PARENT,void 0);_defineProperty(_this43,\"_booted\",false);_defineProperty(_this43,\"_bootPromise\",null);return _this43;}_inherits(EngineInstance,_EmberObject$extend);return _createClass(EngineInstance,[{key:\"init\",value:function init(properties){var _this$base;_superPropGet(EngineInstance,\"init\",this,3)([properties]);// Ensure the guid gets setup for this instance\nguidFor(this);(_this$base=this.base)!==null&&_this$base!==void 0?_this$base:this.base=this.application;// Create a per-instance registry that will use the application's registry\n// as a fallback for resolving registrations.\nvar registry=this.__registry__=new Registry({fallback:this.base.__registry__});// Create a per-instance container from the instance's registry\nthis.__container__=registry.container({owner:this});this._booted=false;}},{key:\"boot\",value:/**\n              Initialize the `EngineInstance` and return a promise that resolves\n              with the instance itself when the boot process is complete.\n               The primary task here is to run any registered instance initializers.\n               See the documentation on `BootOptions` for the options it takes.\n               @public\n              @method boot\n              @param options {Object}\n              @return {Promise<EngineInstance,Error>}\n            */function boot(options){var _this44=this;if(this._bootPromise){return this._bootPromise;}this._bootPromise=new rsvp.Promise(function(resolve){resolve(_this44._bootSync(options));});return this._bootPromise;}/**\n              Unfortunately, a lot of existing code assumes booting an instance is\n              synchronous – specifically, a lot of tests assume the last call to\n              `app.advanceReadiness()` or `app.reset()` will result in a new instance\n              being fully-booted when the current runloop completes.\n               We would like new code (like the `visit` API) to stop making this\n              assumption, so we created the asynchronous version above that returns a\n              promise. But until we have migrated all the code, we would have to expose\n              this method for use *internally* in places where we need to boot an instance\n              synchronously.\n               @private\n            */},{key:\"_bootSync\",value:function _bootSync(options){if(this._booted){return this;}!getEngineParent(this)&&assert$1(\"An engine instance's parent must be set via `setEngineParent(engine, parent)` prior to calling `engine.boot()`.\",getEngineParent(this));this.cloneParentDependencies();this.setupRegistry(options);this.base.runInstanceInitializers(this);this._booted=true;return this;}},{key:\"setupRegistry\",value:function setupRegistry(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.__container__.lookup('-environment:main');this.constructor.setupRegistry(this.__registry__,options);}/**\n             Unregister a factory.\n              Overrides `RegistryProxy#unregister` in order to clear any cached instances\n             of the unregistered factory.\n              @public\n             @method unregister\n             @param {String} fullName\n             */},{key:\"unregister\",value:function unregister(fullName){this.__container__.reset(fullName);// We overwrote this method from RegistryProxyMixin.\nthis.__registry__.unregister(fullName);}/**\n              Build a new `EngineInstance` that's a child of this instance.\n               Engines must be registered by name with their parent engine\n              (or application).\n               @private\n              @method buildChildEngineInstance\n              @param name {String} the registered name of the engine.\n              @param options {Object} options provided to the engine instance.\n              @return {EngineInstance,Error}\n            */},{key:\"buildChildEngineInstance\",value:function buildChildEngineInstance(name){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var ChildEngine=this.lookup(\"engine:\".concat(name));if(!ChildEngine){throw new Error(\"You attempted to mount the engine '\".concat(name,\"', but it is not registered with its parent.\"));}var engineInstance=ChildEngine.buildInstance(options);setEngineParent(engineInstance,this);return engineInstance;}/**\n              Clone dependencies shared between an engine instance and its parent.\n               @private\n              @method cloneParentDependencies\n            */},{key:\"cloneParentDependencies\",value:function cloneParentDependencies(){var _this45=this;var parent=getEngineParent(this);!parent&&assert$1('expected parent',parent);var registrations=['route:basic','service:-routing'];registrations.forEach(function(key){var registration=parent.resolveRegistration(key);!isFactory(registration)&&assert$1('expected registration to be a factory',isFactory(registration));_this45.register(key,registration);});var env=parent.lookup('-environment:main');this.register('-environment:main',env,{instantiate:false});// The type annotation forces TS to (a) validate that these match and (b)\n// *notice* that they match, e.g. below on the `singletons.push()`.\nvar singletons=['router:main',privatize(_templateObject||(_templateObject=_taggedTemplateLiteral([\"-bucket-cache:main\"]))),'-view-registry:main',\"renderer:-dom\",'service:-document'];if(env['isInteractive']){singletons.push('event_dispatcher:main');}singletons.forEach(function(key){// SAFETY: We already expect this to be a singleton\nvar singleton=parent.lookup(key);_this45.register(key,singleton,{instantiate:false});});}}],[{key:\"setupRegistry\",value:/**\n             @private\n             @method setupRegistry\n             @param {Registry} registry\n             @param {BootOptions} options\n             */// This is effectively an \"abstract\" method: it defines the contract a\n// subclass (e.g. `ApplicationInstance`) must follow to implement this\n// behavior, but an `EngineInstance` has no behavior of its own here.\nfunction setupRegistry(_registry,_options){}}]);}(EmberObject.extend(RegistryProxyMixin,ContainerProxyMixin));var emberEngineInstance=/*#__PURE__*/Object.defineProperty({__proto__:null,default:EngineInstance},Symbol.toStringTag,{value:'Module'});function instrumentationPayload$1(def){// \"main\" used to be the outlet name, keeping it around for compatibility\nreturn{object:\"\".concat(def.name,\":main\")};}var CAPABILITIES$1={dynamicLayout:false,dynamicTag:false,prepareArgs:false,createArgs:false,attributeHook:false,elementHook:false,createCaller:false,dynamicScope:true,updateHook:false,createInstance:true,wrapped:false,willDestroy:false,hasSubOwner:false};var OutletComponentManager=/*#__PURE__*/function(){function OutletComponentManager(){_classCallCheck(this,OutletComponentManager);}return _createClass(OutletComponentManager,[{key:\"create\",value:function create(_owner,definition,_args,env,dynamicScope){var parentStateRef=dynamicScope.get('outletState');var currentStateRef=definition.ref;dynamicScope.set('outletState',currentStateRef);var state={self:createConstRef(definition.controller,'this'),finalize:_instrumentStart('render.outlet',instrumentationPayload$1,definition)};if(env.debugRenderTree!==undefined){state.outletBucket={};var parentState=valueForRef(parentStateRef);var parentOwner=parentState&&parentState.render&&parentState.render.owner;var currentOwner=valueForRef(currentStateRef).render.owner;if(parentOwner&&parentOwner!==currentOwner){!(currentOwner instanceof EngineInstance)&&assert$1('Expected currentOwner to be an EngineInstance',currentOwner instanceof EngineInstance);var mountPoint=currentOwner.mountPoint;state.engine=currentOwner;if(mountPoint){state.engineBucket={mountPoint:mountPoint};}}}return state;}},{key:\"getDebugName\",value:function getDebugName(_ref182){var name=_ref182.name;return name;}},{key:\"getDebugCustomRenderTree\",value:function getDebugCustomRenderTree(definition,state,args){var nodes=[];!state.outletBucket&&assert$1('[BUG] outletBucket must be set',state.outletBucket);nodes.push({bucket:state.outletBucket,type:'outlet',// \"main\" used to be the outlet name, keeping it around for compatibility\nname:'main',args:EMPTY_ARGS,instance:undefined,template:undefined});if(state.engineBucket){nodes.push({bucket:state.engineBucket,type:'engine',name:state.engineBucket.mountPoint,args:EMPTY_ARGS,instance:state.engine,template:undefined});}nodes.push({bucket:state,type:'route-template',name:definition.name,args:args,instance:definition.controller,template:unwrapTemplate(definition.template).moduleName});return nodes;}},{key:\"getCapabilities\",value:function getCapabilities(){return CAPABILITIES$1;}},{key:\"getSelf\",value:function getSelf(_ref183){var self=_ref183.self;return self;}},{key:\"didCreate\",value:function didCreate(){}},{key:\"didUpdate\",value:function didUpdate(){}},{key:\"didRenderLayout\",value:function didRenderLayout(state){state.finalize();}},{key:\"didUpdateLayout\",value:function didUpdateLayout(){}},{key:\"getDestroyable\",value:function getDestroyable(){return null;}}]);}();var OUTLET_MANAGER=new OutletComponentManager();var OutletComponentDefinition=/*#__PURE__*/_createClass(function OutletComponentDefinition(state){var manager=arguments.length>1&&arguments[1]!==undefined?arguments[1]:OUTLET_MANAGER;_classCallCheck(this,OutletComponentDefinition);// handle is not used by this custom definition\n_defineProperty(this,\"handle\",-1);_defineProperty(this,\"resolvedName\",void 0);_defineProperty(this,\"compilable\",void 0);_defineProperty(this,\"capabilities\",void 0);this.state=state;this.manager=manager;var capabilities=manager.getCapabilities();this.capabilities=capabilityFlagsFrom(capabilities);this.compilable=capabilities.wrapped?unwrapTemplate(state.template).asWrappedLayout():unwrapTemplate(state.template).asLayout();this.resolvedName=state.name;});function createRootOutlet(outletView){return new OutletComponentDefinition(outletView.state);}var RootComponentManager=/*#__PURE__*/function(_CurlyComponentManage){function RootComponentManager(component){var _this46;_classCallCheck(this,RootComponentManager);_this46=_callSuper(this,RootComponentManager);_defineProperty(_this46,\"component\",void 0);_this46.component=component;return _this46;}_inherits(RootComponentManager,_CurlyComponentManage);return _createClass(RootComponentManager,[{key:\"create\",value:function create(_owner,_state,_args,_ref184,dynamicScope){var isInteractive=_ref184.isInteractive;var component=this.component;var finalizer=_instrumentStart('render.component',initialRenderInstrumentDetails,component);dynamicScope.view=component;var hasWrappedElement=component.tagName!=='';// We usually do this in the `didCreateElement`, but that hook doesn't fire for tagless components\nif(!hasWrappedElement){if(isInteractive){component.trigger('willRender');}component._transitionTo('hasElement');if(isInteractive){component.trigger('willInsertElement');}}{processComponentInitializationAssertions(component,{});}var bucket=new ComponentStateBucket(component,null,CONSTANT_TAG,finalizer,hasWrappedElement,isInteractive);consumeTag(component[DIRTY_TAG]);return bucket;}}]);}(CurlyComponentManager);// ROOT is the top-level template it has nothing but one yield.\n// it is supposed to have a dummy element\nvar ROOT_CAPABILITIES={dynamicLayout:true,dynamicTag:true,prepareArgs:false,createArgs:false,attributeHook:true,elementHook:true,createCaller:true,dynamicScope:true,updateHook:true,createInstance:true,wrapped:true,willDestroy:false,hasSubOwner:false};var RootComponentDefinition=/*#__PURE__*/_createClass(function RootComponentDefinition(component){_classCallCheck(this,RootComponentDefinition);// handle is not used by this custom definition\n_defineProperty(this,\"handle\",-1);_defineProperty(this,\"resolvedName\",'-top-level');_defineProperty(this,\"state\",void 0);_defineProperty(this,\"manager\",void 0);_defineProperty(this,\"capabilities\",capabilityFlagsFrom(ROOT_CAPABILITIES));_defineProperty(this,\"compilable\",null);this.manager=new RootComponentManager(component);var factory=getFactoryFor(component);!(factory!==undefined)&&assert$1('missing factory for component',factory!==undefined);this.state=factory;});var EMPTY_ATTRS=[];function indexOfAttribute(attributes,namespaceURI,localName){for(var i=0;i<attributes.length;i++){var attr=attributes[i];if(attr.namespaceURI===namespaceURI&&attr.localName===localName){return i;}}return-1;}function adjustAttrName(namespaceURI,localName){return namespaceURI===\"http://www.w3.org/1999/xhtml\"/* HTML */?localName.toLowerCase():localName;}function _getAttribute(attributes,namespaceURI,localName){var index=indexOfAttribute(attributes,namespaceURI,localName);return index===-1?null:attributes[index].value;}function _removeAttribute(attributes,namespaceURI,localName){var index=indexOfAttribute(attributes,namespaceURI,localName);if(index!==-1){attributes.splice(index,1);}}// https://dom.spec.whatwg.org/#dom-element-setattributens\nfunction _setAttribute(element,namespaceURI,prefix,localName,value){if(typeof value!=='string'){value=''+value;}var attributes=element.attributes;if(attributes===EMPTY_ATTRS){attributes=element.attributes=[];}else{var _index4=indexOfAttribute(attributes,namespaceURI,localName);if(_index4!==-1){attributes[_index4].value=value;return;}}attributes.push({localName:localName,name:prefix===null?localName:prefix+':'+localName,namespaceURI:namespaceURI,prefix:prefix,specified:true,value:value});}var ChildNodes=/*#__PURE__*/function(){function ChildNodes(node){_classCallCheck(this,ChildNodes);this.node=node;this.stale=true;this._length=0;}return _createClass(ChildNodes,[{key:\"length\",get:function get(){if(this.stale){this.stale=false;var _len58=0;var child=this.node.firstChild;for(;child!==null;_len58++){this[_len58]=child;child=child.nextSibling;}var oldLen=this._length;this._length=_len58;for(;_len58<oldLen;_len58++){delete this[_len58];}}return this._length;}},{key:\"item\",value:function item(index){return index<this.length?this[index]:null;}}]);}();function _cloneNode(node,deep){var clone=nodeFrom(node);if(deep){var child=node.firstChild;var nextChild=child;while(child!==null){nextChild=child.nextSibling;clone.appendChild(child.cloneNode(true));child=nextChild;}}return clone;}function nodeFrom(node){var namespaceURI;if(node.nodeType===1/* ELEMENT_NODE */){namespaceURI=node.namespaceURI;}var clone=new SimpleNodeImpl(node.ownerDocument,node.nodeType,node.nodeName,node.nodeValue,namespaceURI);if(node.nodeType===1/* ELEMENT_NODE */){clone.attributes=copyAttrs(node.attributes);}return clone;}function copyAttrs(attrs){if(attrs===EMPTY_ATTRS){return EMPTY_ATTRS;}var copy=[];for(var i=0;i<attrs.length;i++){var attr=attrs[i];copy.push({localName:attr.localName,name:attr.name,namespaceURI:attr.namespaceURI,prefix:attr.prefix,specified:true,value:attr.value});}return copy;}function _insertBefore(parentNode,newChild,refChild){invalidate(parentNode);insertBetween(parentNode,newChild,refChild===null?parentNode.lastChild:refChild.previousSibling,refChild);}function _removeChild(parentNode,oldChild){invalidate(parentNode);removeBetween(parentNode,oldChild,oldChild.previousSibling,oldChild.nextSibling);}function invalidate(parentNode){var childNodes=parentNode._childNodes;if(childNodes!==undefined){childNodes.stale=true;}}function insertBetween(parentNode,newChild,previousSibling,nextSibling){if(newChild.nodeType===11/* DOCUMENT_FRAGMENT_NODE */){insertFragment(newChild,parentNode,previousSibling,nextSibling);return;}if(newChild.parentNode!==null){_removeChild(newChild.parentNode,newChild);}newChild.parentNode=parentNode;newChild.previousSibling=previousSibling;newChild.nextSibling=nextSibling;if(previousSibling===null){parentNode.firstChild=newChild;}else{previousSibling.nextSibling=newChild;}if(nextSibling===null){parentNode.lastChild=newChild;}else{nextSibling.previousSibling=newChild;}}function removeBetween(parentNode,oldChild,previousSibling,nextSibling){oldChild.parentNode=null;oldChild.previousSibling=null;oldChild.nextSibling=null;if(previousSibling===null){parentNode.firstChild=nextSibling;}else{previousSibling.nextSibling=nextSibling;}if(nextSibling===null){parentNode.lastChild=previousSibling;}else{nextSibling.previousSibling=previousSibling;}}function insertFragment(fragment,parentNode,previousSibling,nextSibling){var firstChild=fragment.firstChild;if(firstChild===null){return;}fragment.firstChild=null;fragment.lastChild=null;var lastChild=firstChild;var newChild=firstChild;firstChild.previousSibling=previousSibling;if(previousSibling===null){parentNode.firstChild=firstChild;}else{previousSibling.nextSibling=firstChild;}while(newChild!==null){newChild.parentNode=parentNode;lastChild=newChild;newChild=newChild.nextSibling;}lastChild.nextSibling=nextSibling;if(nextSibling===null){parentNode.lastChild=lastChild;}else{nextSibling.previousSibling=lastChild;}}function parseQualifiedName(qualifiedName){var localName=qualifiedName;var prefix=null;var i=qualifiedName.indexOf(':');if(i!==-1){prefix=qualifiedName.slice(0,i);localName=qualifiedName.slice(i+1);}return[prefix,localName];}var SimpleNodeImpl=/*#__PURE__*/function(){function SimpleNodeImpl(ownerDocument,nodeType,nodeName,nodeValue,namespaceURI){_classCallCheck(this,SimpleNodeImpl);this.ownerDocument=ownerDocument;this.nodeType=nodeType;this.nodeName=nodeName;this.nodeValue=nodeValue;this.namespaceURI=namespaceURI;this.parentNode=null;this.previousSibling=null;this.nextSibling=null;this.firstChild=null;this.lastChild=null;this.attributes=EMPTY_ATTRS;/**\n               * @internal\n               */this._childNodes=undefined;}return _createClass(SimpleNodeImpl,[{key:\"tagName\",get:function get(){return this.nodeName;}},{key:\"childNodes\",get:function get(){var children=this._childNodes;if(children===undefined){children=this._childNodes=new ChildNodes(this);}return children;}},{key:\"cloneNode\",value:function cloneNode(deep){return _cloneNode(this,deep===true);}},{key:\"appendChild\",value:function appendChild(newChild){_insertBefore(this,newChild,null);return newChild;}},{key:\"insertBefore\",value:function insertBefore(newChild,refChild){_insertBefore(this,newChild,refChild);return newChild;}},{key:\"removeChild\",value:function removeChild(oldChild){_removeChild(this,oldChild);return oldChild;}},{key:\"insertAdjacentHTML\",value:function insertAdjacentHTML(position,html){var raw=new SimpleNodeImpl(this.ownerDocument,-1/* RAW_NODE */,'#raw',html,void 0);var parentNode;var nextSibling;switch(position){case'beforebegin':parentNode=this.parentNode;nextSibling=this;break;case'afterbegin':parentNode=this;nextSibling=this.firstChild;break;case'beforeend':parentNode=this;nextSibling=null;break;case'afterend':parentNode=this.parentNode;nextSibling=this.nextSibling;break;default:throw new Error('invalid position');}if(parentNode===null){throw new Error(\"\".concat(position,\" requires a parentNode\"));}_insertBefore(parentNode,raw,nextSibling);}},{key:\"getAttribute\",value:function getAttribute(name){var localName=adjustAttrName(this.namespaceURI,name);return _getAttribute(this.attributes,null,localName);}},{key:\"getAttributeNS\",value:function getAttributeNS(namespaceURI,localName){return _getAttribute(this.attributes,namespaceURI,localName);}},{key:\"setAttribute\",value:function setAttribute(name,value){var localName=adjustAttrName(this.namespaceURI,name);_setAttribute(this,null,null,localName,value);}},{key:\"setAttributeNS\",value:function setAttributeNS(namespaceURI,qualifiedName,value){var _parseQualifiedName=parseQualifiedName(qualifiedName),_parseQualifiedName2=_slicedToArray(_parseQualifiedName,2),prefix=_parseQualifiedName2[0],localName=_parseQualifiedName2[1];_setAttribute(this,namespaceURI,prefix,localName,value);}},{key:\"removeAttribute\",value:function removeAttribute(name){var localName=adjustAttrName(this.namespaceURI,name);_removeAttribute(this.attributes,null,localName);}},{key:\"removeAttributeNS\",value:function removeAttributeNS(namespaceURI,localName){_removeAttribute(this.attributes,namespaceURI,localName);}},{key:\"doctype\",get:function get(){return this.firstChild;}},{key:\"documentElement\",get:function get(){return this.lastChild;}},{key:\"head\",get:function get(){return this.documentElement.firstChild;}},{key:\"body\",get:function get(){return this.documentElement.lastChild;}},{key:\"createElement\",value:function createElement(name){return new SimpleNodeImpl(this,1/* ELEMENT_NODE */,name.toUpperCase(),null,\"http://www.w3.org/1999/xhtml\"/* HTML */);}},{key:\"createElementNS\",value:function createElementNS(namespace,qualifiedName){// Node name is case-preserving in XML contexts, but returns canonical uppercase form in HTML contexts\n// https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-104682815\nvar nodeName=namespace===\"http://www.w3.org/1999/xhtml\"/* HTML */?qualifiedName.toUpperCase():qualifiedName;// we don't care to parse the qualified name because we only support HTML documents\n// which don't support prefixed elements\nreturn new SimpleNodeImpl(this,1/* ELEMENT_NODE */,nodeName,null,namespace);}},{key:\"createTextNode\",value:function createTextNode(text){return new SimpleNodeImpl(this,3/* TEXT_NODE */,'#text',text,void 0);}},{key:\"createComment\",value:function createComment(text){return new SimpleNodeImpl(this,8/* COMMENT_NODE */,'#comment',text,void 0);}/**\n             * Backwards compat\n             * @deprecated\n             */},{key:\"createRawHTMLSection\",value:function createRawHTMLSection(text){return new SimpleNodeImpl(this,-1/* RAW_NODE */,'#raw',text,void 0);}},{key:\"createDocumentFragment\",value:function createDocumentFragment(){return new SimpleNodeImpl(this,11/* DOCUMENT_FRAGMENT_NODE */,'#document-fragment',null,void 0);}}]);}();function createHTMLDocument(){// dom.d.ts types ownerDocument as Document but for a document ownerDocument is null\nvar document=new SimpleNodeImpl(null,9/* DOCUMENT_NODE */,'#document',null,\"http://www.w3.org/1999/xhtml\"/* HTML */);var doctype=new SimpleNodeImpl(document,10/* DOCUMENT_TYPE_NODE */,'html',null,\"http://www.w3.org/1999/xhtml\"/* HTML */);var html=new SimpleNodeImpl(document,1/* ELEMENT_NODE */,'HTML',null,\"http://www.w3.org/1999/xhtml\"/* HTML */);var head=new SimpleNodeImpl(document,1/* ELEMENT_NODE */,'HEAD',null,\"http://www.w3.org/1999/xhtml\"/* HTML */);var body=new SimpleNodeImpl(document,1/* ELEMENT_NODE */,'BODY',null,\"http://www.w3.org/1999/xhtml\"/* HTML */);html.appendChild(head);html.appendChild(body);document.appendChild(doctype);document.appendChild(html);return document;}var simpleDomDocument=/*#__PURE__*/Object.defineProperty({__proto__:null,default:createHTMLDocument},Symbol.toStringTag,{value:'Module'});var NodeDOMTreeConstruction=/*#__PURE__*/function(_DOMTreeConstruction){// Hides property on base class\nfunction NodeDOMTreeConstruction(doc){_classCallCheck(this,NodeDOMTreeConstruction);return _callSuper(this,NodeDOMTreeConstruction,[doc||createHTMLDocument()]);}// override to prevent usage of `this.document` until after the constructor\n_inherits(NodeDOMTreeConstruction,_DOMTreeConstruction);return _createClass(NodeDOMTreeConstruction,[{key:\"setupUselessElement\",value:function setupUselessElement(){}},{key:\"insertHTMLBefore\",value:function insertHTMLBefore(parent,reference,html){var raw=this.document.createRawHTMLSection(html);return parent.insertBefore(raw,reference),new ConcreteBounds(parent,raw,raw);}// override to avoid SVG detection/work when in node (this is not needed in SSR)\n},{key:\"createElement\",value:function createElement(tag){return this.document.createElement(tag);}// override to avoid namespace shenanigans when in node (this is not needed in SSR)\n},{key:\"setAttribute\",value:function setAttribute(element,name,value){element.setAttribute(name,value);}}]);}(DOMTreeConstruction);var NEEDS_EXTRA_CLOSE=new WeakMap();var SerializeBuilder=/*#__PURE__*/function(_NewElementBuilder3){function SerializeBuilder(){var _this47;_classCallCheck(this,SerializeBuilder);for(var _len59=arguments.length,args=new Array(_len59),_key58=0;_key58<_len59;_key58++){args[_key58]=arguments[_key58];}_this47=_callSuper(this,SerializeBuilder,[].concat(args));_defineProperty(_this47,\"serializeBlockDepth\",0);return _this47;}_inherits(SerializeBuilder,_NewElementBuilder3);return _createClass(SerializeBuilder,[{key:\"__openBlock\",value:function __openBlock(){var tagName=this.element.tagName;if(\"TITLE\"!==tagName&&\"SCRIPT\"!==tagName&&\"STYLE\"!==tagName){var depth=this.serializeBlockDepth++;this.__appendComment(\"%+b:\".concat(depth,\"%\"));}_superPropGet(SerializeBuilder,\"__openBlock\",this,3)([]);}},{key:\"__closeBlock\",value:function __closeBlock(){var tagName=this.element.tagName;if(_superPropGet(SerializeBuilder,\"__closeBlock\",this,3)([]),\"TITLE\"!==tagName&&\"SCRIPT\"!==tagName&&\"STYLE\"!==tagName){var depth=--this.serializeBlockDepth;this.__appendComment(\"%-b:\".concat(depth,\"%\"));}}},{key:\"__appendHTML\",value:function __appendHTML(html){var tagName=this.element.tagName;if(\"TITLE\"===tagName||\"SCRIPT\"===tagName||\"STYLE\"===tagName)return _superPropGet(SerializeBuilder,\"__appendHTML\",this,3)([html]);// Do we need to run the html tokenizer here?\nvar first=this.__appendComment(\"%glmr%\");if(\"TABLE\"===tagName){var openIndex=html.indexOf(\"<\");openIndex>-1&&\"tr\"===html.slice(openIndex+1,openIndex+3)&&(html=\"<tbody>\".concat(html,\"</tbody>\"));}\"\"===html?this.__appendComment(\"% %\"):_superPropGet(SerializeBuilder,\"__appendHTML\",this,3)([html]);var last=this.__appendComment(\"%glmr%\");return new ConcreteBounds(this.element,first,last);}},{key:\"__appendText\",value:function __appendText(string){var tagName=this.element.tagName,current=function(cursor){var element=cursor.element,nextSibling=cursor.nextSibling;return null===nextSibling?element.lastChild:nextSibling.previousSibling;}(this);return\"TITLE\"===tagName||\"SCRIPT\"===tagName||\"STYLE\"===tagName?_superPropGet(SerializeBuilder,\"__appendText\",this,3)([string]):\"\"===string?this.__appendComment(\"% %\"):(current&&3===current.nodeType&&this.__appendComment(\"%|%\"),_superPropGet(SerializeBuilder,\"__appendText\",this,3)([string]));}},{key:\"closeElement\",value:function closeElement(){return NEEDS_EXTRA_CLOSE.has(this.element)&&(NEEDS_EXTRA_CLOSE.delete(this.element),_superPropGet(SerializeBuilder,\"closeElement\",this,3)([])),_superPropGet(SerializeBuilder,\"closeElement\",this,3)([]);}},{key:\"openElement\",value:function openElement(tag){return\"tr\"===tag&&\"TBODY\"!==this.element.tagName&&\"THEAD\"!==this.element.tagName&&\"TFOOT\"!==this.element.tagName&&(this.openElement(\"tbody\"),// This prevents the closeBlock comment from being re-parented\n// under the auto inserted tbody. Rehydration builder needs to\n// account for the insertion since it is injected here and not\n// really in the template.\nNEEDS_EXTRA_CLOSE.set(this.constructing,!0),this.flushElement(null)),_superPropGet(SerializeBuilder,\"openElement\",this,3)([tag]);}},{key:\"pushRemoteElement\",value:function pushRemoteElement(element,cursorId){var insertBefore=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var dom=this.dom,script=dom.createElement(\"script\");return script.setAttribute(\"glmr\",cursorId),dom.insertBefore(element,script,insertBefore),_superPropGet(SerializeBuilder,\"pushRemoteElement\",this,3)([element,cursorId,insertBefore]);}}]);}(NewElementBuilder);function serializeBuilder(env,cursor){return SerializeBuilder.forInitialRender(env,cursor);}var glimmerNode=/*#__PURE__*/Object.defineProperty({__proto__:null,NodeDOMTreeConstruction:NodeDOMTreeConstruction,serializeBuilder:serializeBuilder},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            The `{{#each}}` helper loops over elements in a collection. It is an extension\n            of the base Handlebars `{{#each}}` helper.\n\n            The default behavior of `{{#each}}` is to yield its inner block once for every\n            item in an array passing the item as the first block parameter.\n\n            Assuming the `@developers` argument contains this array:\n\n            ```javascript\n            [{ name: 'Yehuda' },{ name: 'Tom' }, { name: 'Paul' }];\n            ```\n\n            ```handlebars\n            <ul>\n              {{#each @developers as |person|}}\n                <li>Hello, {{person.name}}!</li>\n              {{/each}}\n            </ul>\n            ```\n\n            The same rules apply to arrays of primitives.\n\n            ```javascript\n            ['Yehuda', 'Tom', 'Paul']\n            ```\n\n            ```handlebars\n            <ul>\n              {{#each @developerNames as |name|}}\n                <li>Hello, {{name}}!</li>\n              {{/each}}\n            </ul>\n            ```\n\n            During iteration, the index of each item in the array is provided as a second block\n            parameter.\n\n            ```handlebars\n            <ul>\n              {{#each @developers as |person index|}}\n                <li>Hello, {{person.name}}! You're number {{index}} in line</li>\n              {{/each}}\n            </ul>\n            ```\n\n            ### Specifying Keys\n\n            In order to improve rendering speed, Ember will try to reuse the DOM elements\n            where possible. Specifically, if the same item is present in the array both\n            before and after the change, its DOM output will be reused.\n\n            The `key` option is used to tell Ember how to determine if the items in the\n            array being iterated over with `{{#each}}` has changed between renders. By\n            default the item's object identity is used.\n\n            This is usually sufficient, so in most cases, the `key` option is simply not\n            needed. However, in some rare cases, the objects' identities may change even\n            though they represent the same underlying data.\n\n            For example:\n\n            ```javascript\n            people.map(person => {\n              return { ...person, type: 'developer' };\n            });\n            ```\n\n            In this case, each time the `people` array is `map`-ed over, it will produce\n            an new array with completely different objects between renders. In these cases,\n            you can help Ember determine how these objects related to each other with the\n            `key` option:\n\n            ```handlebars\n            <ul>\n              {{#each @developers key=\"name\" as |person|}}\n                <li>Hello, {{person.name}}!</li>\n              {{/each}}\n            </ul>\n            ```\n\n            By doing so, Ember will use the value of the property specified (`person.name`\n            in the example) to find a \"match\" from the previous render. That is, if Ember\n            has previously seen an object from the `@developers` array with a matching\n            name, its DOM elements will be re-used.\n\n            There are two special values for `key`:\n\n              * `@index` - The index of the item in the array.\n              * `@identity` - The item in the array itself.\n\n            ### {{else}} condition\n\n            `{{#each}}` can have a matching `{{else}}`. The contents of this block will render\n            if the collection is empty.\n\n            ```handlebars\n            <ul>\n              {{#each @developers as |person|}}\n                <li>{{person.name}} is available!</li>\n              {{else}}\n                <li>Sorry, nobody is available for this task.</li>\n              {{/each}}\n            </ul>\n            ```\n\n            @method each\n            @for Ember.Templates.helpers\n            @public\n           *//**\n            The `{{each-in}}` helper loops over properties on an object.\n\n            For example, given this component definition:\n\n            ```app/components/developer-details.js\n            import Component from '@glimmer/component';\n            import { tracked } from '@glimmer/tracking';\n\n            export default class extends Component {\n              @tracked developer = {\n                \"name\": \"Shelly Sails\",\n                \"age\": 42\n              };\n            }\n            ```\n\n            This template would display all properties on the `developer`\n            object in a list:\n\n            ```app/components/developer-details.hbs\n            <ul>\n              {{#each-in this.developer as |key value|}}\n                <li>{{key}}: {{value}}</li>\n              {{/each-in}}\n            </ul>\n            ```\n\n            Outputting their name and age:\n\n            ```html\n            <ul>\n              <li>name: Shelly Sails</li>\n              <li>age: 42</li>\n            </ul>\n            ```\n\n            @method each-in\n            @for Ember.Templates.helpers\n            @public\n            @since 2.1.0\n          */var EachInWrapper=/*#__PURE__*/_createClass(function EachInWrapper(inner){_classCallCheck(this,EachInWrapper);this.inner=inner;});var eachIn=internalHelper(function(_ref185){var positional=_ref185.positional;var inner=positional[0];!inner&&assert$1('expected at least one positional arg',inner);return createComputeRef(function(){var iterable=valueForRef(inner);consumeTag(tagForObject(iterable));if(isProxy(iterable)){// this is because the each-in doesn't actually get(proxy, 'key') but bypasses it\n// and the proxy's tag is lazy updated on access\niterable=contentFor(iterable);}return new EachInWrapper(iterable);});});function toIterator(iterable){if(iterable instanceof EachInWrapper){return toEachInIterator(iterable.inner);}else{return toEachIterator(iterable);}}function toEachInIterator(iterable){if(!isIndexable(iterable)){return null;}if(Array.isArray(iterable)||isEmberArray(iterable)){return ObjectIterator.fromIndexable(iterable);}else if(isNativeIterable(iterable)){return MapLikeNativeIterator.from(iterable);}else if(hasForEach(iterable)){return ObjectIterator.fromForEachable(iterable);}else{return ObjectIterator.fromIndexable(iterable);}}function toEachIterator(iterable){if(!isObject$1(iterable)){return null;}if(Array.isArray(iterable)){return ArrayIterator.from(iterable);}else if(isEmberArray(iterable)){return EmberArrayIterator.from(iterable);}else if(isNativeIterable(iterable)){return ArrayLikeNativeIterator.from(iterable);}else if(hasForEach(iterable)){return ArrayIterator.fromForEachable(iterable);}else{return null;}}var BoundedIterator=/*#__PURE__*/function(){function BoundedIterator(length){_classCallCheck(this,BoundedIterator);_defineProperty(this,\"position\",0);this.length=length;}return _createClass(BoundedIterator,[{key:\"isEmpty\",value:function isEmpty(){return false;}},{key:\"memoFor\",value:function memoFor(position){return position;}},{key:\"next\",value:function next(){var length=this.length,position=this.position;if(position>=length){return null;}var value=this.valueFor(position);var memo=this.memoFor(position);this.position++;return{value:value,memo:memo};}}]);}();var ArrayIterator=/*#__PURE__*/function(_BoundedIterator2){function ArrayIterator(array){var _this48;_classCallCheck(this,ArrayIterator);_this48=_callSuper(this,ArrayIterator,[array.length]);_this48.array=array;return _this48;}_inherits(ArrayIterator,_BoundedIterator2);return _createClass(ArrayIterator,[{key:\"valueFor\",value:function valueFor(position){return this.array[position];}}],[{key:\"from\",value:function from(iterable){return iterable.length>0?new this(iterable):null;}},{key:\"fromForEachable\",value:function fromForEachable(object){var array=[];object.forEach(function(item){return array.push(item);});return this.from(array);}}]);}(BoundedIterator);var EmberArrayIterator=/*#__PURE__*/function(_BoundedIterator3){function EmberArrayIterator(array){var _this49;_classCallCheck(this,EmberArrayIterator);_this49=_callSuper(this,EmberArrayIterator,[array.length]);_this49.array=array;return _this49;}_inherits(EmberArrayIterator,_BoundedIterator3);return _createClass(EmberArrayIterator,[{key:\"valueFor\",value:function valueFor(position){return objectAt(this.array,position);}}],[{key:\"from\",value:function from(iterable){return iterable.length>0?new this(iterable):null;}}]);}(BoundedIterator);var ObjectIterator=/*#__PURE__*/function(_BoundedIterator4){function ObjectIterator(keys,values){var _this50;_classCallCheck(this,ObjectIterator);_this50=_callSuper(this,ObjectIterator,[values.length]);_this50.keys=keys;_this50.values=values;return _this50;}_inherits(ObjectIterator,_BoundedIterator4);return _createClass(ObjectIterator,[{key:\"valueFor\",value:function valueFor(position){return this.values[position];}},{key:\"memoFor\",value:function memoFor(position){return this.keys[position];}}],[{key:\"fromIndexable\",value:function fromIndexable(obj){var keys=Object.keys(obj);if(keys.length===0){return null;}else{var _values=[];var _iterator57=_createForOfIteratorHelper(keys),_step57;try{for(_iterator57.s();!(_step57=_iterator57.n()).done;){var key=_step57.value;var value=void 0;value=obj[key];// Add the tag of the returned value if it is an array, since arrays\n// should always cause updates if they are consumed and then changed\nif(isTracking()){consumeTag(tagFor(obj,key));if(Array.isArray(value)){consumeTag(tagFor(value,'[]'));}}_values.push(value);}}catch(err){_iterator57.e(err);}finally{_iterator57.f();}return new this(keys,_values);}}},{key:\"fromForEachable\",value:function fromForEachable(obj){var keys=[];var values=[];var length=0;var isMapLike=false;// Not using an arrow function here so we can get an accurate `arguments`\nobj.forEach(function(value,key){isMapLike=isMapLike||arguments.length>=2;if(isMapLike){keys.push(key);}values.push(value);length++;});if(length===0){return null;}else if(isMapLike){return new this(keys,values);}else{return new ArrayIterator(values);}}}]);}(BoundedIterator);var NativeIterator=/*#__PURE__*/function(){function NativeIterator(iterable,result){_classCallCheck(this,NativeIterator);_defineProperty(this,\"position\",0);this.iterable=iterable;this.result=result;}return _createClass(NativeIterator,[{key:\"isEmpty\",value:function isEmpty(){return false;}},{key:\"next\",value:function next(){var iterable=this.iterable,result=this.result,position=this.position;if(result.done){return null;}var value=this.valueFor(result,position);var memo=this.memoFor(result,position);this.position++;this.result=iterable.next();return{value:value,memo:memo};}}],[{key:\"from\",value:function from(iterable){var iterator=iterable[Symbol.iterator]();var result=iterator.next();var done=result.done;if(done){return null;}else{return new this(iterator,result);}}}]);}();var ArrayLikeNativeIterator=/*#__PURE__*/function(_NativeIterator2){function ArrayLikeNativeIterator(){_classCallCheck(this,ArrayLikeNativeIterator);return _callSuper(this,ArrayLikeNativeIterator,arguments);}_inherits(ArrayLikeNativeIterator,_NativeIterator2);return _createClass(ArrayLikeNativeIterator,[{key:\"valueFor\",value:function valueFor(result){return result.value;}},{key:\"memoFor\",value:function memoFor(_result,position){return position;}}]);}(NativeIterator);var MapLikeNativeIterator=/*#__PURE__*/function(_NativeIterator3){function MapLikeNativeIterator(){_classCallCheck(this,MapLikeNativeIterator);return _callSuper(this,MapLikeNativeIterator,arguments);}_inherits(MapLikeNativeIterator,_NativeIterator3);return _createClass(MapLikeNativeIterator,[{key:\"valueFor\",value:function valueFor(result){return result.value[1];}},{key:\"memoFor\",value:function memoFor(result){return result.value[0];}}]);}(NativeIterator);function hasForEach(value){return value!=null&&typeof value['forEach']==='function';}function isNativeIterable(value){return value!=null&&typeof value[Symbol.iterator]==='function';}function isIndexable(value){return value!==null&&(_typeof(value)==='object'||typeof value==='function');}/**\n           @module @ember/utils\n          *//**\n            Returns true if the passed value is null or undefined. This avoids errors\n            from JSLint complaining about use of ==, which can be technically\n            confusing.\n\n            ```javascript\n            isNone(null);          // true\n            isNone(undefined);     // true\n            isNone('');            // false\n            isNone([]);            // false\n            isNone(function() {}); // false\n            ```\n\n            @method isNone\n            @static\n            @for @ember/utils\n            @param {Object} obj Value to test\n            @return {Boolean}\n            @public\n          */function isNone(obj){return obj===null||obj===undefined;}var emberUtilsLibIsNone=/*#__PURE__*/Object.defineProperty({__proto__:null,default:isNone},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/utils\n          *//**\n            Verifies that a value is `null` or `undefined`, an empty string, or an empty\n            array.\n\n            Constrains the rules on `isNone` by returning true for empty strings and\n            empty arrays.\n\n            If the value is an object with a `size` property of type number, it is used\n            to check emptiness.\n\n            ```javascript\n            isEmpty(null);             // true\n            isEmpty(undefined);        // true\n            isEmpty('');               // true\n            isEmpty([]);               // true\n            isEmpty({ size: 0});       // true\n            isEmpty({});               // false\n            isEmpty('Adam Hawkins');   // false\n            isEmpty([0,1,2]);          // false\n            isEmpty('\\n\\t');           // false\n            isEmpty('  ');             // false\n            isEmpty({ size: 1 })       // false\n            isEmpty({ size: () => 0 }) // false\n            ```\n\n            @method isEmpty\n            @static\n            @for @ember/utils\n            @param {Object} obj Value to test\n            @return {Boolean}\n            @public\n          */function isEmpty(obj){if(obj===null||obj===undefined){return true;}if(!hasUnknownProperty(obj)&&typeof obj.size==='number'){return!obj.size;}if(_typeof(obj)==='object'){var size=get$2(obj,'size');if(typeof size==='number'){return!size;}var _length7=get$2(obj,'length');if(typeof _length7==='number'){return!_length7;}}if(typeof obj.length==='number'&&typeof obj!=='function'){return!obj.length;}return false;}var emberUtilsLibIsEmpty=/*#__PURE__*/Object.defineProperty({__proto__:null,default:isEmpty},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/utils\n          *//**\n            A value is blank if it is empty or a whitespace string.\n\n            ```javascript\n            import { isBlank } from '@ember/utils';\n\n            isBlank(null);            // true\n            isBlank(undefined);       // true\n            isBlank('');              // true\n            isBlank([]);              // true\n            isBlank('\\n\\t');          // true\n            isBlank('  ');            // true\n            isBlank({});              // false\n            isBlank('\\n\\t Hello');    // false\n            isBlank('Hello world');   // false\n            isBlank([1,2,3]);         // false\n            ```\n\n            @method isBlank\n            @static\n            @for @ember/utils\n            @param {Object} obj Value to test\n            @return {Boolean}\n            @since 1.5.0\n            @public\n          */function isBlank(obj){return isEmpty(obj)||typeof obj==='string'&&/\\S/.test(obj)===false;}var emberUtilsLibIsBlank=/*#__PURE__*/Object.defineProperty({__proto__:null,default:isBlank},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/utils\n          *//**\n            A value is present if it not `isBlank`.\n\n            ```javascript\n            isPresent(null);            // false\n            isPresent(undefined);       // false\n            isPresent('');              // false\n            isPresent('  ');            // false\n            isPresent('\\n\\t');          // false\n            isPresent([]);              // false\n            isPresent({ length: 0 });   // false\n            isPresent(false);           // true\n            isPresent(true);            // true\n            isPresent('string');        // true\n            isPresent(0);               // true\n            isPresent(function() {});   // true\n            isPresent({});              // true\n            isPresent('\\n\\t Hello');    // true\n            isPresent([1, 2, 3]);       // true\n            ```\n\n            @method isPresent\n            @static\n            @for @ember/utils\n            @param {Object} obj Value to test\n            @return {Boolean}\n            @since 1.8.0\n            @public\n          */function isPresent(obj){return!isBlank(obj);}var emberUtilsLibIsPresent=/*#__PURE__*/Object.defineProperty({__proto__:null,default:isPresent},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/utils\n          *//**\n            Compares two objects, returning true if they are equal.\n\n            ```javascript\n            import { isEqual } from '@ember/utils';\n\n            isEqual('hello', 'hello');                   // true\n            isEqual(1, 2);                               // false\n            ```\n\n            `isEqual` is a more specific comparison than a triple equal comparison.\n            It will call the `isEqual` instance method on the objects being\n            compared, allowing finer control over when objects should be considered\n            equal to each other.\n\n            ```javascript\n            import { isEqual } from '@ember/utils';\n            import EmberObject from '@ember/object';\n\n            let Person = EmberObject.extend({\n              isEqual(other) { return this.ssn == other.ssn; }\n            });\n\n            let personA = Person.create({name: 'Muhammad Ali', ssn: '123-45-6789'});\n            let personB = Person.create({name: 'Cassius Clay', ssn: '123-45-6789'});\n\n            isEqual(personA, personB); // true\n            ```\n\n            Due to the expense of array comparisons, collections will never be equal to\n            each other even if each of their items are equal to each other.\n\n            ```javascript\n            import { isEqual } from '@ember/utils';\n\n            isEqual([4, 2], [4, 2]);                     // false\n            ```\n\n            @method isEqual\n            @for @ember/utils\n            @static\n            @param {Object} a first object to compare\n            @param {Object} b second object to compare\n            @return {Boolean}\n            @public\n          */function isEqual(a,b){if(a&&typeof a.isEqual==='function'){return a.isEqual(b);}if(a instanceof Date&&b instanceof Date){return a.getTime()===b.getTime();}return a===b;}var emberUtilsLibIsEqual=/*#__PURE__*/Object.defineProperty({__proto__:null,default:isEqual},Symbol.toStringTag,{value:'Module'});// ........................................\n// TYPING & ARRAY MESSAGING\n//\nvar TYPE_MAP={'[object Boolean]':'boolean','[object Number]':'number','[object String]':'string','[object Function]':'function','[object AsyncFunction]':'function','[object Array]':'array','[object Date]':'date','[object RegExp]':'regexp','[object Object]':'object','[object FileList]':'filelist'};var toString=Object.prototype.toString;/**\n           @module @ember/utils\n          *//**\n            Returns a consistent type for the passed object.\n\n            Use this instead of the built-in `typeof` to get the type of an item.\n            It will return the same result across all browsers and includes a bit\n            more detail. Here is what will be returned:\n\n                | Return Value  | Meaning                                              |\n                |---------------|------------------------------------------------------|\n                | 'string'      | String primitive or String object.                   |\n                | 'number'      | Number primitive or Number object.                   |\n                | 'boolean'     | Boolean primitive or Boolean object.                 |\n                | 'null'        | Null value                                           |\n                | 'undefined'   | Undefined value                                      |\n                | 'function'    | A function                                           |\n                | 'array'       | An instance of Array                                 |\n                | 'regexp'      | An instance of RegExp                                |\n                | 'date'        | An instance of Date                                  |\n                | 'filelist'    | An instance of FileList                              |\n                | 'class'       | An Ember class (created using EmberObject.extend())  |\n                | 'instance'    | An Ember object instance                             |\n                | 'error'       | An instance of the Error object                      |\n                | 'object'      | A JavaScript object not inheriting from EmberObject  |\n\n            Examples:\n\n            ```javascript\n            import { A } from '@ember/array';\n            import { typeOf } from '@ember/utils';\n            import EmberObject from '@ember/object';\n\n            typeOf();                       // 'undefined'\n            typeOf(null);                   // 'null'\n            typeOf(undefined);              // 'undefined'\n            typeOf('michael');              // 'string'\n            typeOf(new String('michael'));  // 'string'\n            typeOf(101);                    // 'number'\n            typeOf(new Number(101));        // 'number'\n            typeOf(true);                   // 'boolean'\n            typeOf(new Boolean(true));      // 'boolean'\n            typeOf(A);                      // 'function'\n            typeOf(A());                    // 'array'\n            typeOf([1, 2, 90]);             // 'array'\n            typeOf(/abc/);                  // 'regexp'\n            typeOf(new Date());             // 'date'\n            typeOf(event.target.files);     // 'filelist'\n            typeOf(EmberObject.extend());   // 'class'\n            typeOf(EmberObject.create());   // 'instance'\n            typeOf(new Error('teamocil'));  // 'error'\n\n            // 'normal' JavaScript object\n            typeOf({ a: 'b' });             // 'object'\n            ```\n\n            @method typeOf\n            @for @ember/utils\n            @param item the item to check\n            @return {String} the type\n            @public\n            @static\n          */function typeOf(item){if(item===null){return'null';}if(item===undefined){return'undefined';}var ret=TYPE_MAP[toString.call(item)]||'object';if(ret==='function'){if(CoreObject.detect(item)){ret='class';}}else if(ret==='object'){if(item instanceof Error){ret='error';}else if(item instanceof CoreObject){ret='instance';}else if(item instanceof Date){ret='date';}}return ret;}var emberUtilsLibTypeOf=/*#__PURE__*/Object.defineProperty({__proto__:null,default:typeOf},Symbol.toStringTag,{value:'Module'});var TYPE_ORDER={undefined:0,null:1,boolean:2,number:3,string:4,array:5,object:6,instance:7,function:8,class:9,date:10,regexp:11,filelist:12,error:13};//\n// the spaceship operator\n//\n//                      `. ___\n//                     __,' __`.                _..----....____\n//         __...--.'``;.   ,.   ;``--..__     .'    ,-._    _.-'\n//   _..-''-------'   `'   `'   `'     O ``-''._   (,;') _,'\n// ,'________________                          \\`-._`-','\n//  `._              ```````````------...___   '-.._'-:\n//     ```--.._      ,.                     ````--...__\\-.\n//             `.--. `-` \"INFINITY IS LESS     ____    |  |`\n//               `. `.   THAN BEYOND\"        ,'`````.  ;  ;`\n//                 `._`.        __________   `.      \\'__/`\n//                    `-:._____/______/___/____`.     \\  `\n//                                |       `._    `.    \\\n//                                `._________`-.   `.   `.___\n//                                              SSt  `------'`\nfunction spaceship(a,b){// SAFETY: `Math.sign` always returns `-1` for negative, `0` for zero, and `1`\n// for positive numbers. (The extra precision is useful for the way we use\n// this in the context of `compare`.)\nreturn Math.sign(a-b);}/**\n           @module @ember/utils\n          *//**\n           Compares two javascript values and returns:\n\n            - -1 if the first is smaller than the second,\n            - 0 if both are equal,\n            - 1 if the first is greater than the second.\n\n            ```javascript\n            import { compare } from '@ember/utils';\n\n            compare('hello', 'hello');  // 0\n            compare('abc', 'dfg');      // -1\n            compare(2, 1);              // 1\n            ```\n\n           If the types of the two objects are different precedence occurs in the\n           following order, with types earlier in the list considered `<` types\n           later in the list:\n\n            - undefined\n            - null\n            - boolean\n            - number\n            - string\n            - array\n            - object\n            - instance\n            - function\n            - class\n            - date\n\n            ```javascript\n            import { compare } from '@ember/utils';\n\n            compare('hello', 50);       // 1\n            compare(50, 'hello');       // -1\n            ```\n\n           @method compare\n           @for @ember/utils\n           @static\n           @param {Object} v First value to compare\n           @param {Object} w Second value to compare\n           @return {Number} -1 if v < w, 0 if v = w and 1 if v > w.\n           @public\n          */function compare(v,w){if(v===w){return 0;}var type1=typeOf(v);var type2=typeOf(w);if(type1==='instance'&&isComparable(v)&&v.constructor.compare){return v.constructor.compare(v,w);}if(type2==='instance'&&isComparable(w)&&w.constructor.compare){// SAFETY: Multiplying by a negative just changes the sign\nreturn w.constructor.compare(w,v)*-1;}var res=spaceship(TYPE_ORDER[type1],TYPE_ORDER[type2]);if(res!==0){return res;}// types are equal - so we have to check values now\nswitch(type1){case'boolean':!(typeof v==='boolean'&&typeof w==='boolean')&&assert$1('both are boolean',typeof v==='boolean'&&typeof w==='boolean');return spaceship(Number(v),Number(w));case'number':!(typeof v==='number'&&typeof w==='number')&&assert$1('both are numbers',typeof v==='number'&&typeof w==='number');return spaceship(v,w);case'string':!(typeof v==='string'&&typeof w==='string')&&assert$1('both are strings',typeof v==='string'&&typeof w==='string');return spaceship(v.localeCompare(w),0);case'array':{!(Array.isArray(v)&&Array.isArray(w))&&assert$1('both are arrays',Array.isArray(v)&&Array.isArray(w));var vLen=v.length;var wLen=w.length;var _len60=Math.min(vLen,wLen);for(var i=0;i<_len60;i++){var r=compare(v[i],w[i]);if(r!==0){return r;}}// all elements are equal now\n// shorter array should be ordered first\nreturn spaceship(vLen,wLen);}case'instance':if(isComparable(v)&&v.compare){return v.compare(v,w);}return 0;case'date':!(v instanceof Date&&w instanceof Date)&&assert$1('both are dates',v instanceof Date&&w instanceof Date);return spaceship(v.getTime(),w.getTime());default:return 0;}}function isComparable(value){return Comparable.detect(value);}var emberUtilsLibCompare=/*#__PURE__*/Object.defineProperty({__proto__:null,default:compare},Symbol.toStringTag,{value:'Module'});var emberUtilsIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,compare:compare,isBlank:isBlank,isEmpty:isEmpty,isEqual:isEqual,isNone:isNone,isPresent:isPresent,typeOf:typeOf},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/array\n          */var EMPTY_ARRAY=Object.freeze([]);var identityFunction=function identityFunction(item){return item;};function uniqBy$1(array){var keyOrFunc=arguments.length>1&&arguments[1]!==undefined?arguments[1]:identityFunction;!isArray$2(array)&&assert$1(\"first argument passed to `uniqBy` should be array\",isArray$2(array));var ret=_A2();var seen=new Set();var getter=typeof keyOrFunc==='function'?keyOrFunc:function(item){return get$2(item,keyOrFunc);};array.forEach(function(item){var val=getter(item);if(!seen.has(val)){seen.add(val);ret.push(item);}});return ret;}function iter(){for(var _len61=arguments.length,args=new Array(_len61),_key59=0;_key59<_len61;_key59++){args[_key59]=arguments[_key59];}var valueProvided=args.length===2;var key=args[0],value=args[1];return valueProvided?function(item){return value===get$2(item,key);}:function(item){return Boolean(get$2(item,key));};}function findIndex(array,predicate,startAt){var len=array.length;for(var _index5=startAt;_index5<len;_index5++){// SAFETY: Because we're checking the index this value should always be set.\nvar item=objectAt(array,_index5);if(predicate(item,_index5,array)){return _index5;}}return-1;}function _find(array,callback){var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var predicate=callback.bind(target);var index=findIndex(array,predicate,0);return index===-1?undefined:objectAt(array,index);}function _any(array,callback){var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var predicate=callback.bind(target);return findIndex(array,predicate,0)!==-1;}function _every(array,callback){var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var cb=callback.bind(target);var predicate=function predicate(item,index,array){return!cb(item,index,array);};return findIndex(array,predicate,0)===-1;}function indexOf$1(array,val){var startAt=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var withNaNCheck=arguments.length>3?arguments[3]:undefined;var len=array.length;if(startAt<0){startAt+=len;}// SameValueZero comparison (NaN !== NaN)\nvar predicate=withNaNCheck&&val!==val?function(item){return item!==item;}:function(item){return item===val;};return findIndex(array,predicate,startAt);}function _removeAt(array,index,len){!(index>-1&&index<array.length)&&assert$1(\"`removeAt` index provided is out of range\",index>-1&&index<array.length);replace(array,index,len!==null&&len!==void 0?len:1,EMPTY_ARRAY);return array;}function _insertAt(array,index,item){!(index>-1&&index<=array.length)&&assert$1(\"`insertAt` index provided is out of range\",index>-1&&index<=array.length);replace(array,index,0,[item]);return item;}/**\n            Returns true if the passed object is an array or Array-like.\n\n            Objects are considered Array-like if any of the following are true:\n\n              - the object is a native Array\n              - the object has an objectAt property\n              - the object is an Object, and has a length property\n\n            Unlike `typeOf` this method returns true even if the passed object is\n            not formally an array but appears to be array-like (i.e. implements `Array`)\n\n            ```javascript\n            import { isArray } from '@ember/array';\n            import ArrayProxy from '@ember/array/proxy';\n\n            isArray();                                      // false\n            isArray([]);                                    // true\n            isArray(ArrayProxy.create({ content: [] }));    // true\n            ```\n\n            @method isArray\n            @static\n            @for @ember/array\n            @param {Object} obj The object to test\n            @return {Boolean} true if the passed object is an array or Array-like\n            @public\n          */function isArray$2(obj){if(_typeof(obj)==='object'&&obj!==null){// SAFETY: Property read checks are safe if it's an object\nvar possibleProxyContent=obj[PROXY_CONTENT];if(possibleProxyContent!==undefined){obj=possibleProxyContent;}}// SAFETY: Property read checks are safe if it's an object\nif(!obj||obj.setInterval){return false;}if(Array.isArray(obj)||EmberArray.detect(obj)){return true;}var type=typeOf(obj);if('array'===type){return true;}// SAFETY: Property read checks are safe if it's an object\nvar length=obj.length;if(typeof length==='number'&&length===length&&'object'===type){return true;}return false;}/*\n            This allows us to define computed properties that are not enumerable.\n            The primary reason this is important is that when `NativeArray` is\n            applied to `Array.prototype` we need to ensure that we do not add _any_\n            new enumerable properties.\n          */function nonEnumerableComputed(callback){var property=computed(callback);property.enumerable=false;return property;}function mapBy$1(key){return this.map(function(next){return get$2(next,key);});}// ..........................................................\n// ARRAY\n//\n/**\n            This mixin implements Observer-friendly Array-like behavior. It is not a\n            concrete implementation, but it can be used up by other classes that want\n            to appear like arrays.\n\n            For example, ArrayProxy is a concrete class that can be instantiated to\n            implement array-like behavior. This class uses the Array Mixin by way of\n            the MutableArray mixin, which allows observable changes to be made to the\n            underlying array.\n\n            This mixin defines methods specifically for collections that provide\n            index-ordered access to their contents. When you are designing code that\n            needs to accept any kind of Array-like object, you should use these methods\n            instead of Array primitives because these will properly notify observers of\n            changes to the array.\n\n            Although these methods are efficient, they do add a layer of indirection to\n            your application so it is a good idea to use them only when you need the\n            flexibility of using both true JavaScript arrays and \"virtual\" arrays such\n            as controllers and collections.\n\n            You can use the methods defined in this module to access and modify array\n            contents in an observable-friendly way. You can also be notified whenever\n            the membership of an array changes by using `.observes('myArray.[]')`.\n\n            To support `EmberArray` in your own class, you must override two\n            primitives to use it: `length()` and `objectAt()`.\n\n            @class EmberArray\n            @uses Enumerable\n            @since Ember 0.9.0\n            @public\n          */var EmberArray=Mixin.create(Enumerable,{init:function init(){this._super.apply(this,arguments);setEmberArray(this);},objectsAt:function objectsAt(indexes){var _this51=this;return indexes.map(function(idx){return objectAt(_this51,idx);});},'[]':nonEnumerableComputed({get:function get(){return this;},set:function set(_key,value){this.replace(0,this.length,value);return this;}}),firstObject:nonEnumerableComputed(function(){return objectAt(this,0);}).readOnly(),lastObject:nonEnumerableComputed(function(){return objectAt(this,this.length-1);}).readOnly(),// Add any extra methods to EmberArray that are native to the built-in Array.\nslice:function slice(){var beginIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var endIndex=arguments.length>1?arguments[1]:undefined;var ret=_A2();var length=this.length;if(beginIndex<0){beginIndex=length+beginIndex;}var validatedEndIndex;if(endIndex===undefined||endIndex>length){validatedEndIndex=length;}else if(endIndex<0){validatedEndIndex=length+endIndex;}else{validatedEndIndex=endIndex;}while(beginIndex<validatedEndIndex){ret[ret.length]=objectAt(this,beginIndex++);}return ret;},indexOf:function indexOf(object,startAt){return indexOf$1(this,object,startAt,false);},lastIndexOf:function lastIndexOf(object,startAt){var len=this.length;if(startAt===undefined||startAt>=len){startAt=len-1;}if(startAt<0){startAt+=len;}for(var idx=startAt;idx>=0;idx--){if(objectAt(this,idx)===object){return idx;}}return-1;},forEach:function forEach(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`forEach` expects a function as first argument.',typeof callback==='function');var length=this.length;for(var _index6=0;_index6<length;_index6++){var item=this.objectAt(_index6);callback.call(target,item,_index6,this);}return this;},getEach:mapBy$1,setEach:function setEach(key,value){return this.forEach(function(item){return _set5(item,key,value);});},map:function map(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`map` expects a function as first argument.',typeof callback==='function');var ret=_A2();this.forEach(function(x,idx,i){return ret[idx]=callback.call(target,x,idx,i);});return ret;},mapBy:mapBy$1,filter:function filter(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`filter` expects a function as first argument.',typeof callback==='function');var ret=_A2();this.forEach(function(x,idx,i){if(callback.call(target,x,idx,i)){ret.push(x);}});return ret;},reject:function reject(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`reject` expects a function as first argument.',typeof callback==='function');return this.filter(function(){// @ts-expect-error TS doesn't like us using arguments like this\nreturn!callback.apply(target,arguments);});},filterBy:function filterBy(){// @ts-expect-error TS doesn't like the ...arguments spread here.\nreturn this.filter(iter.apply(void 0,arguments));},rejectBy:function rejectBy(){// @ts-expect-error TS doesn't like the ...arguments spread here.\nreturn this.reject(iter.apply(void 0,arguments));},find:function find(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`find` expects a function as first argument.',typeof callback==='function');return _find(this,callback,target);},findBy:function findBy(){// @ts-expect-error TS doesn't like the ...arguments spread here.\nvar callback=iter.apply(void 0,arguments);return _find(this,callback);},every:function every(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`every` expects a function as first argument.',typeof callback==='function');return _every(this,callback,target);},isEvery:function isEvery(){// @ts-expect-error TS doesn't like the ...arguments spread here.\nvar callback=iter.apply(void 0,arguments);return _every(this,callback);},any:function any(callback){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;!(typeof callback==='function')&&assert$1('`any` expects a function as first argument.',typeof callback==='function');return _any(this,callback,target);},isAny:function isAny(){// @ts-expect-error TS doesn't like us using arguments like this\nvar callback=iter.apply(void 0,arguments);return _any(this,callback);},// FIXME: When called without initialValue, behavior does not match native behavior\nreduce:function reduce(callback,initialValue){!(typeof callback==='function')&&assert$1('`reduce` expects a function as first argument.',typeof callback==='function');var ret=initialValue;this.forEach(function(item,i){ret=callback(ret,item,i,this);},this);return ret;},invoke:function invoke(methodName){for(var _len62=arguments.length,args=new Array(_len62>1?_len62-1:0),_key60=1;_key60<_len62;_key60++){args[_key60-1]=arguments[_key60];}var ret=_A2();// SAFETY: This is not entirely safe and the code will not work with Ember proxies\nthis.forEach(function(item){var _item$methodName;return ret.push((_item$methodName=item[methodName])===null||_item$methodName===void 0?void 0:_item$methodName.call.apply(_item$methodName,[item].concat(args)));});return ret;},toArray:function toArray(){return this.map(function(item){return item;});},compact:function compact(){return this.filter(function(value){return value!=null;});},includes:function includes(object,startAt){return indexOf$1(this,object,startAt,true)!==-1;},sortBy:function sortBy(){var sortKeys=arguments;return this.toArray().sort(function(a,b){for(var i=0;i<sortKeys.length;i++){var key=sortKeys[i];var propA=get$2(a,key);var propB=get$2(b,key);// return 1 or -1 else continue to the next sortKey\nvar compareValue=compare(propA,propB);if(compareValue){return compareValue;}}return 0;});},uniq:function uniq(){return uniqBy$1(this);},uniqBy:function uniqBy(key){return uniqBy$1(this,key);},without:function without(value){if(!this.includes(value)){return this;// nothing to do\n}// SameValueZero comparison (NaN !== NaN)\nvar predicate=value===value?function(item){return item!==value;}:function(item){return item===item;};return this.filter(predicate);}});/**\n            This mixin defines the API for modifying array-like objects. These methods\n            can be applied only to a collection that keeps its items in an ordered set.\n            It builds upon the Array mixin and adds methods to modify the array.\n            One concrete implementations of this class include ArrayProxy.\n\n            It is important to use the methods in this class to modify arrays so that\n            changes are observable. This allows the binding system in Ember to function\n            correctly.\n\n\n            Note that an Array can change even if it does not implement this mixin.\n            For example, one might implement a SparseArray that cannot be directly\n            modified, but if its underlying enumerable changes, it will change also.\n\n            @class MutableArray\n            @uses EmberArray\n            @uses MutableEnumerable\n            @public\n          */var MutableArray=Mixin.create(EmberArray,MutableEnumerable,{clear:function clear(){var len=this.length;if(len===0){return this;}this.replace(0,len,EMPTY_ARRAY);return this;},insertAt:function insertAt(idx,object){_insertAt(this,idx,object);return this;},removeAt:function removeAt(start,len){return _removeAt(this,start,len);},pushObject:function pushObject(obj){return _insertAt(this,this.length,obj);},pushObjects:function pushObjects(objects){this.replace(this.length,0,objects);return this;},popObject:function popObject(){var len=this.length;if(len===0){return null;}var ret=objectAt(this,len-1);this.removeAt(len-1,1);return ret;},shiftObject:function shiftObject(){if(this.length===0){return null;}var ret=objectAt(this,0);this.removeAt(0);return ret;},unshiftObject:function unshiftObject(obj){return _insertAt(this,0,obj);},unshiftObjects:function unshiftObjects(objects){this.replace(0,0,objects);return this;},reverseObjects:function reverseObjects(){var len=this.length;if(len===0){return this;}var objects=this.toArray().reverse();this.replace(0,len,objects);return this;},setObjects:function setObjects(objects){if(objects.length===0){return this.clear();}var len=this.length;this.replace(0,len,objects);return this;},removeObject:function removeObject(obj){var loc=this.length||0;while(--loc>=0){var curObject=objectAt(this,loc);if(curObject===obj){this.removeAt(loc);}}return this;},removeObjects:function removeObjects(objects){_beginPropertyChanges();for(var i=objects.length-1;i>=0;i--){// SAFETY: Due to the loop structure we know this will always exist.\nthis.removeObject(objects[i]);}_endPropertyChanges();return this;},addObject:function addObject(obj){var included=this.includes(obj);if(!included){this.pushObject(obj);}return this;},addObjects:function addObjects(objects){var _this52=this;_beginPropertyChanges();objects.forEach(function(obj){return _this52.addObject(obj);});_endPropertyChanges();return this;}});/**\n            Creates an `Ember.NativeArray` from an Array-like object.\n            Does not modify the original object's contents. `A()` is not needed if\n            `EmberENV.EXTEND_PROTOTYPES` is `true` (the default value). However,\n            it is recommended that you use `A()` when creating addons for\n            ember or when you can not guarantee that `EmberENV.EXTEND_PROTOTYPES`\n            will be `true`.\n\n            Example\n\n            ```app/components/my-component.js\n            import Component from '@ember/component';\n            import { A } from '@ember/array';\n\n            export default Component.extend({\n              tagName: 'ul',\n              classNames: ['pagination'],\n\n              init() {\n                this._super(...arguments);\n\n                if (!this.get('content')) {\n                  this.set('content', A());\n                  this.set('otherContent', A([1,2,3]));\n                }\n              }\n            });\n            ```\n\n            @method A\n            @static\n            @for @ember/array\n            @return {Ember.NativeArray}\n            @public\n          */// Add Ember.Array to Array.prototype. Remove methods with native\n// implementations and supply some more optimized versions of generic methods\n// because they are so common.\n/**\n          @module ember\n          *//**\n           * The final definition of NativeArray removes all native methods. This is the list of removed methods\n           * when run in Chrome 106.\n           *//**\n           * These additional items must be redefined since `Omit` causes methods that return `this` to return the\n           * type at the time of the Omit.\n           */// This is the same as MutableArray, but removes the actual native methods that exist on Array.prototype.\n/**\n            The NativeArray mixin contains the properties needed to make the native\n            Array support MutableArray and all of its dependent APIs. Unless you\n            have `EmberENV.EXTEND_PROTOTYPES` or `EmberENV.EXTEND_PROTOTYPES.Array` set to\n            false, this will be applied automatically. Otherwise you can apply the mixin\n            at anytime by calling `Ember.NativeArray.apply(Array.prototype)`.\n\n            @class Ember.NativeArray\n            @uses MutableArray\n            @uses Observable\n            @public\n          */var NativeArray=Mixin.create(MutableArray,Observable,{objectAt:function objectAt(idx){return this[idx];},// primitive for array support.\nreplace:function replace(start,deleteCount){var items=arguments.length>2&&arguments[2]!==undefined?arguments[2]:EMPTY_ARRAY;!Array.isArray(items)&&assert$1('The third argument to replace needs to be an array.',Array.isArray(items));replaceInNativeArray(this,start,deleteCount,items);return this;}});// Remove any methods implemented natively so we don't override them\nvar ignore=['length'];NativeArray.keys().forEach(function(methodName){// SAFETY: It's safe to read unknown properties from an object\nif(Array.prototype[methodName]){ignore.push(methodName);}});NativeArray=(_NativeArray=NativeArray).without.apply(_NativeArray,ignore);var _A2;if(ENV.EXTEND_PROTOTYPES.Array){NativeArray.apply(Array.prototype,true);_A2=function A(arr){!!(this instanceof _A2)&&assert$1('You cannot create an Ember Array with `new A()`, please update to calling A as a function: `A()`',!(this instanceof _A2));// SAFTEY: Since we are extending prototypes all true native arrays are Ember NativeArrays\nreturn arr||[];};}else{_A2=function _A(arr){!!(this instanceof _A2)&&assert$1('You cannot create an Ember Array with `new A()`, please update to calling A as a function: `A()`',!(this instanceof _A2));if(isEmberArray(arr)){// SAFETY: If it's a true native array and it is also an EmberArray then it should be an Ember NativeArray\nreturn arr;}else{// SAFETY: This will return an NativeArray but TS can't infer that.\nreturn NativeArray.apply(arr!==null&&arr!==void 0?arr:[]);}};}var emberArrayIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,get A(){return _A2;},MutableArray:MutableArray,get NativeArray(){return NativeArray;},default:EmberArray,isArray:isArray$2,makeArray:makeArray,removeAt:_removeAt,uniqBy:uniqBy$1},Symbol.toStringTag,{value:'Module'});function toBool(predicate){if(isProxy(predicate)){consumeTag(tagForProperty(predicate,'content'));return Boolean(get$2(predicate,'isTruthy'));}else if(isArray$2(predicate)){consumeTag(tagForProperty(predicate,'[]'));return predicate.length!==0;}else if(isHTMLSafe(predicate)){return Boolean(predicate.toString());}else{return Boolean(predicate);}}///////////\n// Setup global context\nsetGlobalContext({FEATURES:{DEFAULT_HELPER_MANAGER:true},scheduleRevalidate:function scheduleRevalidate(){_backburner.ensureInstance();},toBool:toBool,toIterator:toIterator,getProp:_getProp,setProp:_setProp,getPath:get$2,setPath:_set5,scheduleDestroy:function scheduleDestroy(destroyable,destructor){schedule('actions',null,destructor,destroyable);},scheduleDestroyed:function scheduleDestroyed(finalizeDestructor){schedule('destroy',null,finalizeDestructor);},warnIfStyleNotTrusted:function warnIfStyleNotTrusted(value){warn(constructStyleDeprecationMessage(String(value)),function(){if(value===null||value===undefined||isHTMLSafe(value)){return true;}return false;}(),{id:'ember-htmlbars.style-xss-warning'});},assert:function assert(test,msg,options){{var _override$message;var id=options===null||options===void 0?void 0:options.id;var override=VM_ASSERTION_OVERRIDES.filter(function(o){return o.id===id;})[0];!test&&assert$1((_override$message=override===null||override===void 0?void 0:override.message)!==null&&_override$message!==void 0?_override$message:msg,test);}},deprecate:function deprecate(msg,test,options){{var id=options.id;if(id==='argument-less-helper-paren-less-invocation'){throw new Error(\"A resolved helper cannot be passed as a named argument as the syntax is \"+\"ambiguously a pass-by-reference or invocation. Use the \"+\"`{{helper 'foo-helper}}` helper to pass by reference or explicitly \"+\"invoke the helper with parens: `{{(fooHelper)}}`.\");}var override=VM_DEPRECATION_OVERRIDES.filter(function(o){return o.id===id;})[0];if(!override)throw new Error(\"deprecation override for \".concat(id,\" not found\"));// allow deprecations to be disabled in the VM_DEPRECATION_OVERRIDES array below\nif(!override.disabled){var _override$message2;!Boolean(test)&&deprecate$1((_override$message2=override.message)!==null&&_override$message2!==void 0?_override$message2:msg,Boolean(test),override);}}}});{var _debug$1$setTrackingT;debug$1===null||debug$1===void 0||(_debug$1$setTrackingT=debug$1.setTrackingTransactionEnv)===null||_debug$1$setTrackingT===void 0||_debug$1$setTrackingT.call(debug$1,{debugMessage:function debugMessage(obj,keyName){var dirtyString=keyName?\"`\".concat(keyName,\"` on `\").concat(getDebugName$1===null||getDebugName$1===void 0?void 0:getDebugName$1(obj),\"`\"):\"`\".concat(getDebugName$1===null||getDebugName$1===void 0?void 0:getDebugName$1(obj),\"`\");return\"You attempted to update \".concat(dirtyString,\", but it had already been used previously in the same computation.  Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.\");}});}///////////\n// VM Assertion/Deprecation overrides\nvar VM_DEPRECATION_OVERRIDES=[{id:'setting-on-hash',until:'4.4.0',for:'ember-source',since:{available:'3.28.0',enabled:'3.28.0'}}];var VM_ASSERTION_OVERRIDES=[];///////////\n// Define environment delegate\nvar EmberEnvironmentDelegate=/*#__PURE__*/function(){function EmberEnvironmentDelegate(owner,isInteractive){_classCallCheck(this,EmberEnvironmentDelegate);_defineProperty(this,\"enableDebugTooling\",ENV._DEBUG_RENDER_TREE);this.owner=owner;this.isInteractive=isInteractive;}return _createClass(EmberEnvironmentDelegate,[{key:\"onTransactionCommit\",value:function onTransactionCommit(){}}]);}();/**\n          @module ember\n          */var disallowDynamicResolution=internalHelper(function(_ref186){var positional=_ref186.positional,named=_ref186.named;var nameOrValueRef=positional[0];!(positional.length===1&&nameOrValueRef)&&assert$1(\"[BUG] wrong number of positional arguments, expecting 1, got \".concat(positional.length),positional.length===1&&nameOrValueRef);var typeRef=named['type'];var locRef=named['loc'];var originalRef=named['original'];!typeRef&&assert$1(\"[BUG] expecting `type` named argument\",typeRef);!locRef&&assert$1(\"[BUG] expecting `loc` named argument\",locRef);!originalRef&&assert$1(\"[BUG] expecting `original` named argument\",originalRef);// Bug: why do these fail?\n// assert('[BUG] expecting a string literal for the `type` argument', isConstRef(typeRef));\n// assert('[BUG] expecting a string literal for the `loc` argument', isConstRef(locRef));\n// assert('[BUG] expecting a string literal for the `original` argument', isConstRef(originalRef));\nvar type=valueForRef(typeRef);var loc=valueForRef(locRef);var original=valueForRef(originalRef);!(typeof type==='string')&&assert$1('[BUG] expecting a string literal for the `type` argument',typeof type==='string');!(typeof loc==='string')&&assert$1('[BUG] expecting a string literal for the `loc` argument',typeof loc==='string');!(typeof original==='string')&&assert$1('[BUG] expecting a string literal for the `original` argument',typeof original==='string');return createComputeRef(function(){var nameOrValue=valueForRef(nameOrValueRef);!(typeof nameOrValue!=='string')&&assert$1(\"Passing a dynamic string to the `(\".concat(type,\")` keyword is disallowed. \")+\"(You specified `(\".concat(type,\" \").concat(original,\")` and `\").concat(original,\"` evaluated into \\\"\").concat(nameOrValue,\"\\\".) \")+\"This ensures we can statically analyze the template and determine which \".concat(type,\"s are used. \")+\"If the \".concat(type,\" name is always the same, use a string literal instead, i.e. `(\").concat(type,\" \\\"\").concat(nameOrValue,\"\\\")`. \")+\"Otherwise, import the \".concat(type,\"s into JavaScript and pass them directly. \")+'See https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md#4-no-dynamic-resolution for details. '+loc,typeof nameOrValue!=='string');return nameOrValue;});});var helper$1;{helper$1=function helper$1(args){var inner=args.positional[0];!inner&&assert$1('expected at least one positional arg',inner);return createComputeRef(function(){var value=valueForRef(inner);!(value!==null&&value!==undefined)&&assert$1('You cannot pass a null or undefined destination element to in-element',value!==null&&value!==undefined);return value;});};}var inElementNullCheckHelper=internalHelper(helper$1);var normalizeClassHelper=internalHelper(function(_ref187){var positional=_ref187.positional;return createComputeRef(function(){var classNameArg=positional[0];var valueArg=positional[1];!(classNameArg&&valueArg)&&assert$1('expected at least two positional args',classNameArg&&valueArg);var classNameParts=valueForRef(classNameArg).split('.');var className=classNameParts[classNameParts.length-1];!className&&assert$1('has className',className);// Always at least one split result\nvar value=valueForRef(valueArg);if(value===true){return dasherize(className);}else if(!value&&value!==0){return'';}else{return String(value);}});});/**\n            @module ember\n          */var resolve$1=internalHelper(function(_ref188,owner){var _owner$factoryFor;var positional=_ref188.positional;// why is this allowed to be undefined in the first place?\n!owner&&assert$1('[BUG] missing owner',owner);!(positional.length===1)&&assert$1(\"[BUG] wrong number of positional arguments, expecting 1, got \".concat(positional.length),positional.length===1);var fullNameRef=positional[0];!(fullNameRef&&isConstRef(fullNameRef))&&assert$1('[BUG] expecting a string literal as argument',fullNameRef&&isConstRef(fullNameRef));var fullName=valueForRef(fullNameRef);!(typeof fullName==='string')&&assert$1('[BUG] expecting a string literal as argument',typeof fullName==='string');!function(s){return s.split(':').length===2;}(fullName)&&assert$1('[BUG] expecting a valid full name',function(s){return s.split(':').length===2;}(fullName));{var _fullName$split3=fullName.split(':'),_fullName$split4=_slicedToArray(_fullName$split3,2),type=_fullName$split4[0],_name28=_fullName$split4[1];!owner.hasRegistration(fullName)&&assert$1(\"Attempted to invoke `(-resolve \\\"\".concat(fullName,\"\\\")`, but \").concat(_name28,\" was not a valid \").concat(type,\" name.\"),owner.hasRegistration(fullName));}return createConstRef((_owner$factoryFor=owner.factoryFor(fullName))===null||_owner$factoryFor===void 0?void 0:_owner$factoryFor.class,\"(-resolve \\\"\".concat(fullName,\"\\\")\"));});/**\n          @module ember\n          *//**\n            This reference is used to get the `[]` tag of iterables, so we can trigger\n            updates to `{{each}}` when it changes. It is put into place by a template\n            transform at build time, similar to the (-each-in) helper\n          */var trackArray=internalHelper(function(_ref189){var positional=_ref189.positional;var inner=positional[0];!inner&&assert$1('expected at least one positional arg',inner);return createComputeRef(function(){var iterable=valueForRef(inner);if(isObject$1(iterable)){consumeTag(tagForProperty(iterable,'[]'));}return iterable;});});/**\n          @module ember\n          *//**\n            The `mut` helper lets you __clearly specify__ that a child `Component` can update the\n            (mutable) value passed to it, which will __change the value of the parent component__.\n\n            To specify that a parameter is mutable, when invoking the child `Component`:\n\n            ```handlebars\n            <MyChild @childClickCount={{fn (mut totalClicks)}} />\n            ```\n\n             or\n\n            ```handlebars\n            {{my-child childClickCount=(mut totalClicks)}}\n            ```\n\n            The child `Component` can then modify the parent's value just by modifying its own\n            property:\n\n            ```javascript\n            // my-child.js\n            export default Component.extend({\n              click() {\n                this.incrementProperty('childClickCount');\n              }\n            });\n            ```\n\n            Note that for curly components (`{{my-component}}`) the bindings are already mutable,\n            making the `mut` unnecessary.\n\n            Additionally, the `mut` helper can be combined with the `fn` helper to\n            mutate a value. For example:\n\n            ```handlebars\n            <MyChild @childClickCount={{this.totalClicks}} @click-count-change={{fn (mut totalClicks))}} />\n            ```\n\n            or\n\n            ```handlebars\n            {{my-child childClickCount=totalClicks click-count-change=(fn (mut totalClicks))}}\n            ```\n\n            The child `Component` would invoke the function with the new click value:\n\n            ```javascript\n            // my-child.js\n            export default Component.extend({\n              click() {\n                this.get('click-count-change')(this.get('childClickCount') + 1);\n              }\n            });\n            ```\n\n            The `mut` helper changes the `totalClicks` value to what was provided as the `fn` argument.\n\n            The `mut` helper, when used with `fn`, will return a function that\n            sets the value passed to `mut` to its first argument. As an example, we can create a\n            button that increments a value passing the value directly to the `fn`:\n\n            ```handlebars\n            {{! inc helper is not provided by Ember }}\n            <button onclick={{fn (mut count) (inc count)}}>\n              Increment count\n            </button>\n            ```\n\n            @method mut\n            @param {Object} [attr] the \"two-way\" attribute that can be modified.\n            @for Ember.Templates.helpers\n            @public\n          */var mut=internalHelper(function(_ref190){var positional=_ref190.positional;var ref=positional[0];!ref&&assert$1('expected at least one positional arg',ref);// TODO: Improve this error message. This covers at least two distinct\n// cases:\n//\n// 1. (mut \"not a path\") – passing a literal, result from a helper\n//    invocation, etc\n//\n// 2. (mut receivedValue) – passing a value received from the caller\n//    that was originally derived from a literal, result from a helper\n//    invocation, etc\n//\n// This message is alright for the first case, but could be quite\n// confusing for the second case.\n!isUpdatableRef(ref)&&assert$1('You can only pass a path to mut',isUpdatableRef(ref));return createInvokableRef(ref);});/**\n          @module ember\n          *//**\n            The `readonly` helper let's you specify that a binding is one-way only,\n            instead of two-way.\n            When you pass a `readonly` binding from an outer context (e.g. parent component),\n            to to an inner context (e.g. child component), you are saying that changing that\n            property in the inner context does not change the value in the outer context.\n\n            To specify that a binding is read-only, when invoking the child `Component`:\n\n            ```app/components/my-parent.js\n            export default Component.extend({\n              totalClicks: 3\n            });\n            ```\n\n            ```app/templates/components/my-parent.hbs\n            {{log totalClicks}} // -> 3\n            <MyChild @childClickCount={{readonly totalClicks}} />\n            ```\n            ```\n            {{my-child childClickCount=(readonly totalClicks)}}\n            ```\n\n            Now, when you update `childClickCount`:\n\n            ```app/components/my-child.js\n            export default Component.extend({\n              click() {\n                this.incrementProperty('childClickCount');\n              }\n            });\n            ```\n\n            The value updates in the child component, but not the parent component:\n\n            ```app/templates/components/my-child.hbs\n            {{log childClickCount}} //-> 4\n            ```\n\n            ```app/templates/components/my-parent.hbs\n            {{log totalClicks}} //-> 3\n            <MyChild @childClickCount={{readonly totalClicks}} />\n            ```\n            or\n            ```app/templates/components/my-parent.hbs\n            {{log totalClicks}} //-> 3\n            {{my-child childClickCount=(readonly totalClicks)}}\n            ```\n\n            ### Objects and Arrays\n\n            When passing a property that is a complex object (e.g. object, array) instead of a primitive object (e.g. number, string),\n            only the reference to the object is protected using the readonly helper.\n            This means that you can change properties of the object both on the parent component, as well as the child component.\n            The `readonly` binding behaves similar to the `const` keyword in JavaScript.\n\n            Let's look at an example:\n\n            First let's set up the parent component:\n\n            ```app/components/my-parent.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              clicks: null,\n\n              init() {\n                this._super(...arguments);\n                this.set('clicks', { total: 3 });\n              }\n            });\n            ```\n\n            ```app/templates/components/my-parent.hbs\n            {{log clicks.total}} //-> 3\n            <MyChild @childClicks={{readonly clicks}} />\n            ```\n            ```app/templates/components/my-parent.hbs\n            {{log clicks.total}} //-> 3\n            {{my-child childClicks=(readonly clicks)}}\n            ```\n\n            Now, if you update the `total` property of `childClicks`:\n\n            ```app/components/my-child.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              click() {\n                this.get('clicks').incrementProperty('total');\n              }\n            });\n            ```\n\n            You will see the following happen:\n\n            ```app/templates/components/my-parent.hbs\n            {{log clicks.total}} //-> 4\n            <MyChild @childClicks={{readonly clicks}} />\n            ```\n            or\n            ```app/templates/components/my-parent.hbs\n            {{log clicks.total}} //-> 4\n            {{my-child childClicks=(readonly clicks)}}\n            ```\n\n            ```app/templates/components/my-child.hbs\n            {{log childClicks.total}} //-> 4\n            ```\n\n            @method readonly\n            @param {Object} [attr] the read-only attribute.\n            @for Ember.Templates.helpers\n            @private\n          */var readonly=internalHelper(function(_ref191){var positional=_ref191.positional;var firstArg=positional[0];!firstArg&&assert$1('has first arg',firstArg);return createReadOnlyRef(firstArg);});/**\n          @module ember\n          *//**\n            The `{{unbound}}` helper disconnects the one-way binding of a property,\n            essentially freezing its value at the moment of rendering. For example,\n            in this example the display of the variable `name` will not change even\n            if it is set with a new value:\n\n            ```handlebars\n            {{unbound this.name}}\n            ```\n\n            Like any helper, the `unbound` helper can accept a nested helper expression.\n            This allows for custom helpers to be rendered unbound:\n\n            ```handlebars\n            {{unbound (some-custom-helper)}}\n            {{unbound (capitalize this.name)}}\n            {{! You can use any helper, including unbound, in a nested expression }}\n            {{capitalize (unbound this.name)}}\n            ```\n\n            The `unbound` helper only accepts a single argument, and it return an\n            unbound value.\n\n            @method unbound\n            @for Ember.Templates.helpers\n            @public\n          */var unbound=internalHelper(function(_ref192){var positional=_ref192.positional,named=_ref192.named;!(positional.length===1&&Object.keys(named).length===0)&&assert$1('unbound helper cannot be called with multiple params or hash params',positional.length===1&&Object.keys(named).length===0);return createUnboundRef(valueForRef(positional[0]),'(result of an `unbound` helper)');});/**\n          @module ember\n          */var uniqueId$1=internalHelper(function(){// SAFETY: glimmer-vm should change the signature of createUnboundRef to use a generic\n//         so that the type param to `Reference<?>` can infer from the first argument.\n//\n// NOTE: constRef is an optimization so we don't let the VM create extra wrappers,\n//       tracking frames, etc.\nreturn createConstRef(uniqueId$2(),'unique-id');});// From https://gist.github.com/selfish/fef2c0ba6cdfe07af76e64cecd74888b\n//\n// This code should be reasonably fast, and provide a unique value every time\n// it's called, which is what we need here. It produces a string formatted as a\n// standard UUID, which avoids accidentally turning Ember-specific\n// implementation details into an intimate API. It also ensures that the UUID\n// always starts with a letter, to avoid creating invalid IDs with a numeric\n// digit at the start.\nfunction uniqueId$2(){// @ts-expect-error this one-liner abuses weird JavaScript semantics that\n// TypeScript (legitimately) doesn't like, but they're nonetheless valid and\n// specced.\nreturn([3e7]+-1e3+-4e3+-2e3+-1e11).replace(/[0-3]/g,function(a){return(a*4^Math.random()*16>>(a&2)).toString(16);});}var MODIFIERS=['alt','shift','meta','ctrl'];var POINTER_EVENT_TYPE_REGEX=/^click|mouse|touch/;function isAllowedEvent(event,allowedKeys){if(allowedKeys===null||allowedKeys===undefined){if(POINTER_EVENT_TYPE_REGEX.test(event.type)){return isSimpleClick(event);}else{allowedKeys='';}}if(allowedKeys.indexOf('any')>=0){return true;}for(var i=0;i<MODIFIERS.length;i++){if(event[MODIFIERS[i]+'Key']&&allowedKeys.indexOf(MODIFIERS[i])===-1){return false;}}return true;}var ActionHelper={// registeredActions is re-exported for compatibility with older plugins\n// that were using this undocumented API.\nregisteredActions:ActionManager.registeredActions,registerAction:function registerAction(actionState){var actionId=actionState.actionId;ActionManager.registeredActions[actionId]=actionState;return actionId;},unregisterAction:function unregisterAction(actionState){var actionId=actionState.actionId;delete ActionManager.registeredActions[actionId];}};var ActionState=/*#__PURE__*/function(){function ActionState(element,owner,actionId,actionArgs,namedArgs,positionalArgs){var _this53=this;_classCallCheck(this,ActionState);_defineProperty(this,\"element\",void 0);_defineProperty(this,\"owner\",void 0);_defineProperty(this,\"actionId\",void 0);_defineProperty(this,\"actionName\",void 0);_defineProperty(this,\"actionArgs\",void 0);_defineProperty(this,\"namedArgs\",void 0);_defineProperty(this,\"positional\",void 0);_defineProperty(this,\"implicitTarget\",void 0);_defineProperty(this,\"eventName\",void 0);_defineProperty(this,\"tag\",createUpdatableTag());this.element=element;this.owner=owner;this.actionId=actionId;this.actionArgs=actionArgs;this.namedArgs=namedArgs;this.positional=positionalArgs;this.eventName=this.getEventName();registerDestructor$1(this,function(){return ActionHelper.unregisterAction(_this53);});}return _createClass(ActionState,[{key:\"getEventName\",value:function getEventName(){var on=this.namedArgs.on;return on!==undefined?valueForRef(on):'click';}},{key:\"getActionArgs\",value:function getActionArgs(){var result=new Array(this.actionArgs.length);for(var i=0;i<this.actionArgs.length;i++){result[i]=valueForRef(this.actionArgs[i]);}return result;}},{key:\"getTarget\",value:function getTarget(){var implicitTarget=this.implicitTarget,namedArgs=this.namedArgs;var target=namedArgs.target;return target!==undefined?valueForRef(target):valueForRef(implicitTarget);}},{key:\"handler\",value:function handler(event){var _this54=this;var actionName=this.actionName,namedArgs=this.namedArgs;var bubbles=namedArgs.bubbles,preventDefault=namedArgs.preventDefault,allowedKeys=namedArgs.allowedKeys;var bubblesVal=bubbles!==undefined?valueForRef(bubbles):undefined;var preventDefaultVal=preventDefault!==undefined?valueForRef(preventDefault):undefined;var allowedKeysVal=allowedKeys!==undefined?valueForRef(allowedKeys):undefined;var target=this.getTarget();var shouldBubble=bubblesVal!==false;if(!isAllowedEvent(event,allowedKeysVal)){return true;}if(preventDefaultVal!==false){event.preventDefault();}if(!shouldBubble){event.stopPropagation();}join(function(){var args=_this54.getActionArgs();var payload={args:args,target:target,name:null};if(isInvokableRef(actionName)){flaggedInstrument('interaction.ember-action',payload,function(){updateRef(actionName,args[0]);});return;}if(typeof actionName==='function'){flaggedInstrument('interaction.ember-action',payload,function(){actionName.apply(target,args);});return;}payload.name=actionName;if(target.send){flaggedInstrument('interaction.ember-action',payload,function(){target.send.apply(target,[actionName].concat(_toConsumableArray(args)));});}else{!(typeof target[actionName]==='function')&&assert$1(\"The action '\".concat(actionName,\"' did not exist on \").concat(target),typeof target[actionName]==='function');flaggedInstrument('interaction.ember-action',payload,function(){target[actionName].apply(target,args);});}});return shouldBubble;}}]);}();var ActionModifierManager=/*#__PURE__*/function(){function ActionModifierManager(){_classCallCheck(this,ActionModifierManager);}return _createClass(ActionModifierManager,[{key:\"create\",value:function create(owner,element,_state,_ref193){var named=_ref193.named,positional=_ref193.positional;var actionArgs=[];// The first two arguments are (1) `this` and (2) the action name.\n// Everything else is a param.\nfor(var i=2;i<positional.length;i++){actionArgs.push(positional[i]);}var actionId=uuid$1();return new ActionState(element,owner,actionId,actionArgs,named,positional);}},{key:\"getDebugInstance\",value:function getDebugInstance(){return null;}},{key:\"getDebugName\",value:function getDebugName(){return'action';}},{key:\"install\",value:function install(actionState){deprecateUntil(\"Usage of the `{{action}}` modifier is deprecated. Migrate to native functions and function invocation.\",DEPRECATIONS.DEPRECATE_TEMPLATE_ACTION);var element=actionState.element,actionId=actionState.actionId,positional=actionState.positional;var actionName;var actionNameRef;var implicitTarget;if(positional.length>1){implicitTarget=positional[0];actionNameRef=positional[1];if(isInvokableRef(actionNameRef)){actionName=actionNameRef;}else{actionName=valueForRef(actionNameRef);{var actionPath=actionNameRef.debugLabel;var actionPathParts=actionPath.split('.');var actionLabel=actionPathParts[actionPathParts.length-1];!(typeof actionName==='string'||typeof actionName==='function')&&assert$1('You specified a quoteless path, `'+actionPath+'`, to the '+'{{action}} helper which did not resolve to an action name (a '+'string). Perhaps you meant to use a quoted actionName? (e.g. '+'{{action \"'+actionLabel+'\"}}).',typeof actionName==='string'||typeof actionName==='function');}}}actionState.actionName=actionName;actionState.implicitTarget=implicitTarget;this.ensureEventSetup(actionState);ActionHelper.registerAction(actionState);element.setAttribute('data-ember-action','');element.setAttribute(\"data-ember-action-\".concat(actionId),String(actionId));}},{key:\"update\",value:function update(actionState){var positional=actionState.positional;var actionNameRef=positional[1];!actionNameRef&&assert$1('Expected at least one positional arg',actionNameRef);if(!isInvokableRef(actionNameRef)){actionState.actionName=valueForRef(actionNameRef);}var newEventName=actionState.getEventName();if(newEventName!==actionState.eventName){this.ensureEventSetup(actionState);actionState.eventName=actionState.getEventName();}}},{key:\"ensureEventSetup\",value:function ensureEventSetup(actionState){var dispatcher=actionState.owner.lookup('event_dispatcher:main');!(dispatcher instanceof EventDispatcher)&&assert$1('Expected dispatcher to be an EventDispatcher',dispatcher instanceof EventDispatcher);dispatcher===null||dispatcher===void 0||dispatcher.setupHandlerForEmberEvent(actionState.eventName);}},{key:\"getTag\",value:function getTag(actionState){return actionState.tag;}},{key:\"getDestroyable\",value:function getDestroyable(actionState){return actionState;}}]);}();var ACTION_MODIFIER_MANAGER=new ActionModifierManager();var actionModifier=setInternalModifierManager(ACTION_MODIFIER_MANAGER,{});var createObject=Object.create;function createMap(){var map=createObject(null);map[\"__\"]=undefined;delete map[\"__\"];return map;}var Target=function Target(path,matcher,delegate){this.path=path;this.matcher=matcher;this.delegate=delegate;};Target.prototype.to=function to(target,callback){var delegate=this.delegate;if(delegate&&delegate.willAddRoute){target=delegate.willAddRoute(this.matcher.target,target);}this.matcher.add(this.path,target);if(callback){if(callback.length===0){throw new Error(\"You must have an argument in the function passed to `to`\");}this.matcher.addChild(this.path,target,callback,this.delegate);}};var Matcher=function Matcher(target){this.routes=createMap();this.children=createMap();this.target=target;};Matcher.prototype.add=function add(path,target){this.routes[path]=target;};Matcher.prototype.addChild=function addChild(path,target,callback,delegate){var matcher=new Matcher(target);this.children[path]=matcher;var match=generateMatch(path,matcher,delegate);if(delegate&&delegate.contextEntered){delegate.contextEntered(target,match);}callback(match);};function generateMatch(startingPath,matcher,delegate){function match(path,callback){var fullPath=startingPath+path;if(callback){callback(generateMatch(fullPath,matcher,delegate));}else{return new Target(fullPath,matcher,delegate);}}return match;}function addRoute(routeArray,path,handler){var len=0;for(var i=0;i<routeArray.length;i++){len+=routeArray[i].path.length;}path=path.substr(len);var route={path:path,handler:handler};routeArray.push(route);}function eachRoute(baseRoute,matcher,callback,binding){var routes=matcher.routes;var paths=Object.keys(routes);for(var i=0;i<paths.length;i++){var path=paths[i];var routeArray=baseRoute.slice();addRoute(routeArray,path,routes[path]);var nested=matcher.children[path];if(nested){eachRoute(routeArray,nested,callback,binding);}else{callback.call(binding,routeArray);}}}var map$1=function map$1(callback,addRouteCallback){var matcher=new Matcher();callback(generateMatch(\"\",matcher,this.delegate));eachRoute([],matcher,function(routes){if(addRouteCallback){addRouteCallback(this,routes);}else{this.add(routes);}},this);};// Normalizes percent-encoded values in `path` to upper-case and decodes percent-encoded\n// values that are not reserved (i.e., unicode characters, emoji, etc). The reserved\n// chars are \"/\" and \"%\".\n// Safe to call multiple times on the same path.\n// Normalizes percent-encoded values in `path` to upper-case and decodes percent-encoded\nfunction normalizePath(path){return path.split(\"/\").map(normalizeSegment).join(\"/\");}// We want to ensure the characters \"%\" and \"/\" remain in percent-encoded\n// form when normalizing paths, so replace them with their encoded form after\n// decoding the rest of the path\nvar SEGMENT_RESERVED_CHARS=/%|\\//g;function normalizeSegment(segment){if(segment.length<3||segment.indexOf(\"%\")===-1){return segment;}return decodeURIComponent(segment).replace(SEGMENT_RESERVED_CHARS,encodeURIComponent);}// We do not want to encode these characters when generating dynamic path segments\n// See https://tools.ietf.org/html/rfc3986#section-3.3\n// sub-delims: \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\"\n// others allowed by RFC 3986: \":\", \"@\"\n//\n// First encode the entire path segment, then decode any of the encoded special chars.\n//\n// The chars \"!\", \"'\", \"(\", \")\", \"*\" do not get changed by `encodeURIComponent`,\n// so the possible encoded chars are:\n// ['%24', '%26', '%2B', '%2C', '%3B', '%3D', '%3A', '%40'].\nvar PATH_SEGMENT_ENCODINGS=/%(?:2(?:4|6|B|C)|3(?:B|D|A)|40)/g;function encodePathSegment(str){return encodeURIComponent(str).replace(PATH_SEGMENT_ENCODINGS,decodeURIComponent);}var escapeRegex=/(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)/g;var isArray$1=Array.isArray;var hasOwnProperty$1=Object.prototype.hasOwnProperty;function getParam(params,key){if(_typeof(params)!==\"object\"||params===null){throw new Error(\"You must pass an object as the second argument to `generate`.\");}if(!hasOwnProperty$1.call(params,key)){throw new Error(\"You must provide param `\"+key+\"` to `generate`.\");}var value=params[key];var str=typeof value===\"string\"?value:\"\"+value;if(str.length===0){throw new Error(\"You must provide a param `\"+key+\"`.\");}return str;}var eachChar=[];eachChar[0/* Static */]=function(segment,currentState){var state=currentState;var value=segment.value;for(var i=0;i<value.length;i++){var ch=value.charCodeAt(i);state=state.put(ch,false,false);}return state;};eachChar[1/* Dynamic */]=function(_,currentState){return currentState.put(47/* SLASH */,true,true);};eachChar[2/* Star */]=function(_,currentState){return currentState.put(-1/* ANY */,false,true);};eachChar[4/* Epsilon */]=function(_,currentState){return currentState;};var regex=[];regex[0/* Static */]=function(segment){return segment.value.replace(escapeRegex,\"\\\\$1\");};regex[1/* Dynamic */]=function(){return\"([^/]+)\";};regex[2/* Star */]=function(){return\"(.+)\";};regex[4/* Epsilon */]=function(){return\"\";};var generate=[];generate[0/* Static */]=function(segment){return segment.value;};generate[1/* Dynamic */]=function(segment,params){var value=getParam(params,segment.value);if(RouteRecognizer.ENCODE_AND_DECODE_PATH_SEGMENTS){return encodePathSegment(value);}else{return value;}};generate[2/* Star */]=function(segment,params){return getParam(params,segment.value);};generate[4/* Epsilon */]=function(){return\"\";};var EmptyObject=Object.freeze({});var EmptyArray=Object.freeze([]);// The `names` will be populated with the paramter name for each dynamic/star\n// segment. `shouldDecodes` will be populated with a boolean for each dyanamic/star\n// segment, indicating whether it should be decoded during recognition.\nfunction parse(segments,route,types){// normalize route as not starting with a \"/\". Recognition will\n// also normalize.\nif(route.length>0&&route.charCodeAt(0)===47/* SLASH */){route=route.substr(1);}var parts=route.split(\"/\");var names=undefined;var shouldDecodes=undefined;for(var i=0;i<parts.length;i++){var part=parts[i];var flags=0;var type=0;if(part===\"\"){type=4/* Epsilon */;}else if(part.charCodeAt(0)===58/* COLON */){type=1/* Dynamic */;}else if(part.charCodeAt(0)===42/* STAR */){type=2/* Star */;}else{type=0/* Static */;}flags=2<<type;if(flags&12/* Named */){part=part.slice(1);names=names||[];names.push(part);shouldDecodes=shouldDecodes||[];shouldDecodes.push((flags&4/* Decoded */)!==0);}if(flags&14/* Counted */){types[type]++;}segments.push({type:type,value:normalizeSegment(part)});}return{names:names||EmptyArray,shouldDecodes:shouldDecodes||EmptyArray};}function isEqualCharSpec(spec,char,negate){return spec.char===char&&spec.negate===negate;}// A State has a character specification and (`charSpec`) and a list of possible\n// subsequent states (`nextStates`).\n//\n// If a State is an accepting state, it will also have several additional\n// properties:\n//\n// * `regex`: A regular expression that is used to extract parameters from paths\n//   that reached this accepting state.\n// * `handlers`: Information on how to convert the list of captures into calls\n//   to registered handlers with the specified parameters\n// * `types`: How many static, dynamic or star segments in this route. Used to\n//   decide which route to use if multiple registered routes match a path.\n//\n// Currently, State is implemented naively by looping over `nextStates` and\n// comparing a character specification against a character. A more efficient\n// implementation would use a hash of keys pointing at one or more next states.\nvar State=function State(states,id,char,negate,repeat){this.states=states;this.id=id;this.char=char;this.negate=negate;this.nextStates=repeat?id:null;this.pattern=\"\";this._regex=undefined;this.handlers=undefined;this.types=undefined;};State.prototype.regex=function regex$1(){if(!this._regex){this._regex=new RegExp(this.pattern);}return this._regex;};State.prototype.get=function get(char,negate){var this$1$1=this;var nextStates=this.nextStates;if(nextStates===null){return;}if(isArray$1(nextStates)){for(var i=0;i<nextStates.length;i++){var child=this$1$1.states[nextStates[i]];if(isEqualCharSpec(child,char,negate)){return child;}}}else{var child$1=this.states[nextStates];if(isEqualCharSpec(child$1,char,negate)){return child$1;}}};State.prototype.put=function put(char,negate,repeat){var state;// If the character specification already exists in a child of the current\n// state, just return that state.\nif(state=this.get(char,negate)){return state;}// Make a new state for the character spec\nvar states=this.states;state=new State(states,states.length,char,negate,repeat);states[states.length]=state;// Insert the new state as a child of the current state\nif(this.nextStates==null){this.nextStates=state.id;}else if(isArray$1(this.nextStates)){this.nextStates.push(state.id);}else{this.nextStates=[this.nextStates,state.id];}// Return the new state\nreturn state;};// Find a list of child states matching the next character\nState.prototype.match=function match(ch){var this$1$1=this;var nextStates=this.nextStates;if(!nextStates){return[];}var returned=[];if(isArray$1(nextStates)){for(var i=0;i<nextStates.length;i++){var child=this$1$1.states[nextStates[i]];if(isMatch(child,ch)){returned.push(child);}}}else{var child$1=this.states[nextStates];if(isMatch(child$1,ch)){returned.push(child$1);}}return returned;};function isMatch(spec,char){return spec.negate?spec.char!==char&&spec.char!==-1/* ANY */:spec.char===char||spec.char===-1/* ANY */;}// This is a somewhat naive strategy, but should work in a lot of cases\n// A better strategy would properly resolve /posts/:id/new and /posts/edit/:id.\n//\n// This strategy generally prefers more static and less dynamic matching.\n// Specifically, it\n//\n//  * prefers fewer stars to more, then\n//  * prefers using stars for less of the match to more, then\n//  * prefers fewer dynamic segments to more, then\n//  * prefers more static segments to more\nfunction sortSolutions(states){return states.sort(function(a,b){var ref=a.types||[0,0,0];var astatics=ref[0];var adynamics=ref[1];var astars=ref[2];var ref$1=b.types||[0,0,0];var bstatics=ref$1[0];var bdynamics=ref$1[1];var bstars=ref$1[2];if(astars!==bstars){return astars-bstars;}if(astars){if(astatics!==bstatics){return bstatics-astatics;}if(adynamics!==bdynamics){return bdynamics-adynamics;}}if(adynamics!==bdynamics){return adynamics-bdynamics;}if(astatics!==bstatics){return bstatics-astatics;}return 0;});}function recognizeChar(states,ch){var nextStates=[];for(var i=0,l=states.length;i<l;i++){var state=states[i];nextStates=nextStates.concat(state.match(ch));}return nextStates;}var RecognizeResults=function RecognizeResults(queryParams){this.length=0;this.queryParams=queryParams||{};};RecognizeResults.prototype.splice=Array.prototype.splice;RecognizeResults.prototype.slice=Array.prototype.slice;RecognizeResults.prototype.push=Array.prototype.push;function findHandler(state,originalPath,queryParams){var handlers=state.handlers;var regex=state.regex();if(!regex||!handlers){throw new Error(\"state not initialized\");}var captures=originalPath.match(regex);var currentCapture=1;var result=new RecognizeResults(queryParams);result.length=handlers.length;for(var i=0;i<handlers.length;i++){var handler=handlers[i];var names=handler.names;var shouldDecodes=handler.shouldDecodes;var params=EmptyObject;var isDynamic=false;if(names!==EmptyArray&&shouldDecodes!==EmptyArray){for(var j=0;j<names.length;j++){isDynamic=true;var name=names[j];var capture=captures&&captures[currentCapture++];if(params===EmptyObject){params={};}if(RouteRecognizer.ENCODE_AND_DECODE_PATH_SEGMENTS&&shouldDecodes[j]){params[name]=capture&&decodeURIComponent(capture);}else{params[name]=capture;}}}result[i]={handler:handler.handler,params:params,isDynamic:isDynamic};}return result;}function decodeQueryParamPart(part){// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1\npart=part.replace(/\\+/gm,\"%20\");var result;try{result=decodeURIComponent(part);}catch(error){result=\"\";}return result;}var RouteRecognizer=function RouteRecognizer(){this.names=createMap();var states=[];var state=new State(states,0,-1/* ANY */,true,false);states[0]=state;this.states=states;this.rootState=state;};RouteRecognizer.prototype.add=function add(routes,options){var currentState=this.rootState;var pattern=\"^\";var types=[0,0,0];var handlers=new Array(routes.length);var allSegments=[];var isEmpty=true;var j=0;for(var i=0;i<routes.length;i++){var route=routes[i];var ref=parse(allSegments,route.path,types);var names=ref.names;var shouldDecodes=ref.shouldDecodes;// preserve j so it points to the start of newly added segments\nfor(;j<allSegments.length;j++){var segment=allSegments[j];if(segment.type===4/* Epsilon */){continue;}isEmpty=false;// Add a \"/\" for the new segment\ncurrentState=currentState.put(47/* SLASH */,false,false);pattern+=\"/\";// Add a representation of the segment to the NFA and regex\ncurrentState=eachChar[segment.type](segment,currentState);pattern+=regex[segment.type](segment);}handlers[i]={handler:route.handler,names:names,shouldDecodes:shouldDecodes};}if(isEmpty){currentState=currentState.put(47/* SLASH */,false,false);pattern+=\"/\";}currentState.handlers=handlers;currentState.pattern=pattern+\"$\";currentState.types=types;var name;if(_typeof(options)===\"object\"&&options!==null&&options.as){name=options.as;}if(name){// if (this.names[name]) {\n//   throw new Error(\"You may not add a duplicate route named `\" + name + \"`.\");\n// }\nthis.names[name]={segments:allSegments,handlers:handlers};}};RouteRecognizer.prototype.handlersFor=function handlersFor(name){var route=this.names[name];if(!route){throw new Error(\"There is no route named \"+name);}var result=new Array(route.handlers.length);for(var i=0;i<route.handlers.length;i++){var handler=route.handlers[i];result[i]=handler;}return result;};RouteRecognizer.prototype.hasRoute=function hasRoute(name){return!!this.names[name];};RouteRecognizer.prototype.generate=function generate$1(name,params){var route=this.names[name];var output=\"\";if(!route){throw new Error(\"There is no route named \"+name);}var segments=route.segments;for(var i=0;i<segments.length;i++){var segment=segments[i];if(segment.type===4/* Epsilon */){continue;}output+=\"/\";output+=generate[segment.type](segment,params);}if(output.charAt(0)!==\"/\"){output=\"/\"+output;}if(params&&params.queryParams){output+=this.generateQueryString(params.queryParams);}return output;};RouteRecognizer.prototype.generateQueryString=function generateQueryString(params){var pairs=[];var keys=Object.keys(params);keys.sort();for(var i=0;i<keys.length;i++){var key=keys[i];var value=params[key];if(value==null){continue;}var pair=encodeURIComponent(key);if(isArray$1(value)){for(var j=0;j<value.length;j++){var arrayPair=key+\"[]\"+\"=\"+encodeURIComponent(value[j]);pairs.push(arrayPair);}}else{pair+=\"=\"+encodeURIComponent(value);pairs.push(pair);}}if(pairs.length===0){return\"\";}return\"?\"+pairs.join(\"&\");};RouteRecognizer.prototype.parseQueryString=function parseQueryString(queryString){var pairs=queryString.split(\"&\");var queryParams={};for(var i=0;i<pairs.length;i++){var pair=pairs[i].split(\"=\"),key=decodeQueryParamPart(pair[0]),keyLength=key.length,isArray=false,value=void 0;if(pair.length===1){value=\"true\";}else{// Handle arrays\nif(keyLength>2&&key.slice(keyLength-2)===\"[]\"){isArray=true;key=key.slice(0,keyLength-2);if(!queryParams[key]){queryParams[key]=[];}}value=pair[1]?decodeQueryParamPart(pair[1]):\"\";}if(isArray){queryParams[key].push(value);}else{queryParams[key]=value;}}return queryParams;};RouteRecognizer.prototype.recognize=function recognize(path){var results;var states=[this.rootState];var queryParams={};var isSlashDropped=false;var hashStart=path.indexOf(\"#\");if(hashStart!==-1){path=path.substr(0,hashStart);}var queryStart=path.indexOf(\"?\");if(queryStart!==-1){var queryString=path.substr(queryStart+1,path.length);path=path.substr(0,queryStart);queryParams=this.parseQueryString(queryString);}if(path.charAt(0)!==\"/\"){path=\"/\"+path;}var originalPath=path;if(RouteRecognizer.ENCODE_AND_DECODE_PATH_SEGMENTS){path=normalizePath(path);}else{path=decodeURI(path);originalPath=decodeURI(originalPath);}var pathLen=path.length;if(pathLen>1&&path.charAt(pathLen-1)===\"/\"){path=path.substr(0,pathLen-1);originalPath=originalPath.substr(0,originalPath.length-1);isSlashDropped=true;}for(var i=0;i<path.length;i++){states=recognizeChar(states,path.charCodeAt(i));if(!states.length){break;}}var solutions=[];for(var i$1=0;i$1<states.length;i$1++){if(states[i$1].handlers){solutions.push(states[i$1]);}}states=sortSolutions(solutions);var state=solutions[0];if(state&&state.handlers){// if a trailing slash was dropped and a star segment is the last segment\n// specified, put the trailing slash back\nif(isSlashDropped&&state.pattern&&state.pattern.slice(-5)===\"(.+)$\"){originalPath=originalPath+\"/\";}results=findHandler(state,originalPath,queryParams);}return results;};RouteRecognizer.VERSION=\"0.3.4\";// Set to false to opt-out of encoding and decoding path segments.\n// See https://github.com/tildeio/route-recognizer/pull/55\nRouteRecognizer.ENCODE_AND_DECODE_PATH_SEGMENTS=true;RouteRecognizer.Normalizer={normalizeSegment:normalizeSegment,normalizePath:normalizePath,encodePathSegment:encodePathSegment};RouteRecognizer.prototype.map=map$1;var routeRecognizer=/*#__PURE__*/Object.defineProperty({__proto__:null,default:RouteRecognizer},Symbol.toStringTag,{value:'Module'});function buildTransitionAborted(){var error=new Error('TransitionAborted');error.name='TransitionAborted';error.code='TRANSITION_ABORTED';return error;}function isTransitionAborted(maybeError){return _typeof(maybeError)==='object'&&maybeError!==null&&maybeError.code==='TRANSITION_ABORTED';}function isAbortable(maybeAbortable){return _typeof(maybeAbortable)==='object'&&maybeAbortable!==null&&typeof maybeAbortable.isAborted==='boolean';}function throwIfAborted(maybe){if(isAbortable(maybe)&&maybe.isAborted){throw buildTransitionAborted();}}var slice$1=Array.prototype.slice;var hasOwnProperty=Object.prototype.hasOwnProperty;/**\n            Determines if an object is Promise by checking if it is \"thenable\".\n          **/function isPromise(p){return p!==null&&_typeof(p)==='object'&&typeof p.then==='function';}function merge(hash,other){for(var prop in other){if(hasOwnProperty.call(other,prop)){hash[prop]=other[prop];}}}/**\n            @private\n\n            Extracts query params from the end of an array\n          **/function extractQueryParams(array){var len=array&&array.length,head,queryParams;if(len&&len>0){var obj=array[len-1];if(isQueryParamsContainer(obj)){queryParams=obj.queryParams;head=slice$1.call(array,0,len-1);return[head,queryParams];}}// SAFETY: We confirmed that the last item isn't a QP container\nreturn[array,null];}// TODO: Actually check that Dict is QueryParams\nfunction isQueryParamsContainer(obj){if(obj&&_typeof(obj)==='object'){var _cast3=obj;return'queryParams'in _cast3&&Object.keys(_cast3.queryParams).every(function(k){return typeof k==='string';});}return false;}/**\n            @private\n\n            Coerces query param properties and array elements into strings.\n          **/function coerceQueryParamsToString(queryParams){for(var key in queryParams){var val=queryParams[key];if(typeof val==='number'){queryParams[key]=''+val;}else if(Array.isArray(val)){for(var i=0,l=val.length;i<l;i++){val[i]=''+val[i];}}}}/**\n            @private\n           */function _log(router){if(!router.log){return;}for(var _len63=arguments.length,args=new Array(_len63>1?_len63-1:0),_key61=1;_key61<_len63;_key61++){args[_key61-1]=arguments[_key61];}if(args.length===2){var sequence=args[0],msg=args[1];router.log('Transition #'+sequence+': '+msg);}else{var _msg=args[0];router.log(_msg);}}function isParam(object){return typeof object==='string'||object instanceof String||typeof object==='number'||object instanceof Number;}function forEach(array,callback){for(var i=0,l=array.length;i<l&&callback(array[i])!==false;i++){// empty intentionally\n}}function getChangelist(oldObject,newObject){var key;var results={all:{},changed:{},removed:{}};merge(results.all,newObject);var didChange=false;coerceQueryParamsToString(oldObject);coerceQueryParamsToString(newObject);// Calculate removals\nfor(key in oldObject){if(hasOwnProperty.call(oldObject,key)){if(!hasOwnProperty.call(newObject,key)){didChange=true;results.removed[key]=oldObject[key];}}}// Calculate changes\nfor(key in newObject){if(hasOwnProperty.call(newObject,key)){var oldElement=oldObject[key];var newElement=newObject[key];if(isArray(oldElement)&&isArray(newElement)){if(oldElement.length!==newElement.length){results.changed[key]=newObject[key];didChange=true;}else{for(var i=0,l=oldElement.length;i<l;i++){if(oldElement[i]!==newElement[i]){results.changed[key]=newObject[key];didChange=true;}}}}else if(oldObject[key]!==newObject[key]){results.changed[key]=newObject[key];didChange=true;}}}return didChange?results:undefined;}function isArray(obj){return Array.isArray(obj);}function _promiseLabel(label){return'Router: '+label;}var STATE_SYMBOL=\"__STATE__-2619860001345920-3322w3\";var PARAMS_SYMBOL=\"__PARAMS__-261986232992830203-23323\";var QUERY_PARAMS_SYMBOL=\"__QPS__-2619863929824844-32323\";/**\n            A Transition is a thenable (a promise-like object) that represents\n            an attempt to transition to another route. It can be aborted, either\n            explicitly via `abort` or by attempting another transition while a\n            previous one is still underway. An aborted transition can also\n            be `retry()`d later.\n\n            @class Transition\n            @constructor\n            @param {Object} router\n            @param {Object} intent\n            @param {Object} state\n            @param {Object} error\n            @private\n           */var Transition=/*#__PURE__*/function(){function Transition(router,intent,state){var _this55=this;var error=arguments.length>3&&arguments[3]!==undefined?arguments[3]:undefined;var previousTransition=arguments.length>4&&arguments[4]!==undefined?arguments[4]:undefined;_classCallCheck(this,Transition);this.from=null;this.to=undefined;this.isAborted=false;this.isActive=true;this.urlMethod='update';this.resolveIndex=0;this.queryParamsOnly=false;this.isTransition=true;this.isCausedByAbortingTransition=false;this.isCausedByInitialTransition=false;this.isCausedByAbortingReplaceTransition=false;this._visibleQueryParams={};this.isIntermediate=false;this[STATE_SYMBOL]=state||router.state;this.intent=intent;this.router=router;this.data=intent&&intent.data||{};this.resolvedModels={};this[QUERY_PARAMS_SYMBOL]={};this.promise=undefined;this.error=undefined;this[PARAMS_SYMBOL]={};this.routeInfos=[];this.targetName=undefined;this.pivotHandler=undefined;this.sequence=-1;{var _error3=new Error(\"Transition creation stack\");this.debugCreationStack=function(){return _error3.stack;};// not aborted yet, will be replaced when `this.isAborted` is set\nthis.debugAbortStack=function(){return undefined;};this.debugPreviousTransition=previousTransition;}if(error){this.promise=Promise$2.reject(error);this.error=error;return;}// if you're doing multiple redirects, need the new transition to know if it\n// is actually part of the first transition or not. Any further redirects\n// in the initial transition also need to know if they are part of the\n// initial transition\nthis.isCausedByAbortingTransition=!!previousTransition;this.isCausedByInitialTransition=!!previousTransition&&(previousTransition.isCausedByInitialTransition||previousTransition.sequence===0);// Every transition in the chain is a replace\nthis.isCausedByAbortingReplaceTransition=!!previousTransition&&previousTransition.urlMethod==='replace'&&(!previousTransition.isCausedByAbortingTransition||previousTransition.isCausedByAbortingReplaceTransition);if(state){this[PARAMS_SYMBOL]=state.params;this[QUERY_PARAMS_SYMBOL]=state.queryParams;this.routeInfos=state.routeInfos;var _len64=state.routeInfos.length;if(_len64){this.targetName=state.routeInfos[_len64-1].name;}for(var i=0;i<_len64;++i){var handlerInfo=state.routeInfos[i];// TODO: this all seems hacky\nif(!handlerInfo.isResolved){break;}this.pivotHandler=handlerInfo.route;}this.sequence=router.currentSequence++;this.promise=state.resolve(this).catch(function(result){var error=_this55.router.transitionDidError(result,_this55);throw error;},_promiseLabel('Handle Abort'));}else{this.promise=Promise$2.resolve(this[STATE_SYMBOL]);this[PARAMS_SYMBOL]={};}}/**\n              The Transition's internal promise. Calling `.then` on this property\n              is that same as calling `.then` on the Transition object itself, but\n              this property is exposed for when you want to pass around a\n              Transition's promise, but not the Transition object itself, since\n              Transition object can be externally `abort`ed, while the promise\n              cannot.\n                 @property promise\n              @type {Object}\n              @public\n             *//**\n              Custom state can be stored on a Transition's `data` object.\n              This can be useful for decorating a Transition within an earlier\n              hook and shared with a later hook. Properties set on `data` will\n              be copied to new transitions generated by calling `retry` on this\n              transition.\n                 @property data\n              @type {Object}\n              @public\n             *//**\n              A standard promise hook that resolves if the transition\n              succeeds and rejects if it fails/redirects/aborts.\n                 Forwards to the internal `promise` property which you can\n              use in situations where you want to pass around a thenable,\n              but not the Transition itself.\n                 @method then\n              @param {Function} onFulfilled\n              @param {Function} onRejected\n              @param {String} label optional string for labeling the promise.\n              Useful for tooling.\n              @return {Promise}\n              @public\n             */return _createClass(Transition,[{key:\"then\",value:function then(onFulfilled,onRejected,label){return this.promise.then(onFulfilled,onRejected,label);}/**\n                 Forwards to the internal `promise` property which you can\n              use in situations where you want to pass around a thennable,\n              but not the Transition itself.\n                 @method catch\n              @param {Function} onRejection\n              @param {String} label optional string for labeling the promise.\n              Useful for tooling.\n              @return {Promise}\n              @public\n             */},{key:\"catch\",value:function _catch(onRejection,label){return this.promise.catch(onRejection,label);}/**\n                 Forwards to the internal `promise` property which you can\n              use in situations where you want to pass around a thenable,\n              but not the Transition itself.\n                 @method finally\n              @param {Function} callback\n              @param {String} label optional string for labeling the promise.\n              Useful for tooling.\n              @return {Promise}\n              @public\n             */},{key:\"finally\",value:function _finally(callback,label){return this.promise.finally(callback,label);}/**\n              Aborts the Transition. Note you can also implicitly abort a transition\n              by initiating another transition while a previous one is underway.\n                 @method abort\n              @return {Transition} this transition\n              @public\n             */},{key:\"abort\",value:function abort(){this.rollback();var transition=new Transition(this.router,undefined,undefined,undefined);transition.to=this.from;transition.from=this.from;transition.isAborted=true;this.router.routeWillChange(transition);this.router.routeDidChange(transition);return this;}},{key:\"rollback\",value:function rollback(){if(!this.isAborted){_log(this.router,this.sequence,this.targetName+': transition was aborted');{var error=new Error(\"Transition aborted stack\");this.debugAbortStack=function(){return error.stack;};}if(this.intent!==undefined&&this.intent!==null){this.intent.preTransitionState=this.router.state;}this.isAborted=true;this.isActive=false;this.router.activeTransition=undefined;}}},{key:\"redirect\",value:function redirect(newTransition){this.rollback();this.router.routeWillChange(newTransition);}/**\n                 Retries a previously-aborted transition (making sure to abort the\n              transition if it's still active). Returns a new transition that\n              represents the new attempt to transition.\n                 @method retry\n              @return {Transition} new transition\n              @public\n             */},{key:\"retry\",value:function retry(){// TODO: add tests for merged state retry()s\nthis.abort();var newTransition=this.router.transitionByIntent(this.intent,false);// inheriting a `null` urlMethod is not valid\n// the urlMethod is only set to `null` when\n// the transition is initiated *after* the url\n// has been updated (i.e. `router.handleURL`)\n//\n// in that scenario, the url method cannot be\n// inherited for a new transition because then\n// the url would not update even though it should\nif(this.urlMethod!==null){newTransition.method(this.urlMethod);}return newTransition;}/**\n                 Sets the URL-changing method to be employed at the end of a\n              successful transition. By default, a new Transition will just\n              use `updateURL`, but passing 'replace' to this method will\n              cause the URL to update using 'replaceWith' instead. Omitting\n              a parameter will disable the URL change, allowing for transitions\n              that don't update the URL at completion (this is also used for\n              handleURL, since the URL has already changed before the\n              transition took place).\n                 @method method\n              @param {String} method the type of URL-changing method to use\n                at the end of a transition. Accepted values are 'replace',\n                falsy values, or any other non-falsy value (which is\n                interpreted as an updateURL transition).\n                 @return {Transition} this transition\n              @public\n             */},{key:\"method\",value:function method(_method){this.urlMethod=_method;return this;}// Alias 'trigger' as 'send'\n},{key:\"send\",value:function send(){var ignoreFailure=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var _name=arguments.length>1?arguments[1]:undefined;var err=arguments.length>2?arguments[2]:undefined;var transition=arguments.length>3?arguments[3]:undefined;var handler=arguments.length>4?arguments[4]:undefined;this.trigger(ignoreFailure,_name,err,transition,handler);}/**\n                 Fires an event on the current list of resolved/resolving\n              handlers within this transition. Useful for firing events\n              on route hierarchies that haven't fully been entered yet.\n                 Note: This method is also aliased as `send`\n                 @method trigger\n              @param {Boolean} [ignoreFailure=false] a boolean specifying whether unhandled events throw an error\n              @param {String} name the name of the event to fire\n              @public\n             */},{key:\"trigger\",value:function trigger(){var ignoreFailure=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var name=arguments.length>1?arguments[1]:undefined;// TODO: Deprecate the current signature\nif(typeof ignoreFailure==='string'){name=ignoreFailure;ignoreFailure=false;}for(var _len65=arguments.length,args=new Array(_len65>2?_len65-2:0),_key62=2;_key62<_len65;_key62++){args[_key62-2]=arguments[_key62];}this.router.triggerEvent(this[STATE_SYMBOL].routeInfos.slice(0,this.resolveIndex+1),ignoreFailure,name,args);}/**\n              Transitions are aborted and their promises rejected\n              when redirects occur; this method returns a promise\n              that will follow any redirects that occur and fulfill\n              with the value fulfilled by any redirecting transitions\n              that occur.\n                 @method followRedirects\n              @return {Promise} a promise that fulfills with the same\n                value that the final redirecting transition fulfills with\n              @public\n             */},{key:\"followRedirects\",value:function followRedirects(){var router=this.router;return this.promise.catch(function(reason){if(router.activeTransition){return router.activeTransition.followRedirects();}return Promise$2.reject(reason);});}},{key:\"toString\",value:function toString(){return'Transition (sequence '+this.sequence+')';}/**\n              @private\n             */},{key:\"log\",value:function log(message){_log(this.router,this.sequence,message);}}]);}();/**\n            @private\n\n            Logs and returns an instance of TransitionAborted.\n           */function logAbort(transition){_log(transition.router,transition.sequence,'detected abort.');return buildTransitionAborted();}function isTransition(obj){return _typeof(obj)==='object'&&obj instanceof Transition&&obj.isTransition;}function prepareResult(obj){if(isTransition(obj)){return null;}return obj;}var ROUTE_INFOS=new WeakMap();function toReadOnlyRouteInfo(routeInfos){var queryParams=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{includeAttributes:false,localizeMapUpdates:false};var LOCAL_ROUTE_INFOS=new WeakMap();return routeInfos.map(function(info,i){var name=info.name,params=info.params,paramNames=info.paramNames,context=info.context,route=info.route;// SAFETY: This should be safe since it is just for use as a key\nvar key=info;if(ROUTE_INFOS.has(key)&&options.includeAttributes){var _routeInfo=ROUTE_INFOS.get(key);_routeInfo=attachMetadata(route,_routeInfo);var routeInfoWithAttribute=createRouteInfoWithAttributes(_routeInfo,context);LOCAL_ROUTE_INFOS.set(key,_routeInfo);if(!options.localizeMapUpdates){ROUTE_INFOS.set(key,routeInfoWithAttribute);}return routeInfoWithAttribute;}var routeInfosRef=options.localizeMapUpdates?LOCAL_ROUTE_INFOS:ROUTE_INFOS;var routeInfo={find:function find(predicate,thisArg){var publicInfo;var arr=[];if(predicate.length===3){arr=routeInfos.map(// SAFETY: This should be safe since it is just for use as a key\nfunction(info){return routeInfosRef.get(info);});}for(var _i20=0;routeInfos.length>_i20;_i20++){// SAFETY: This should be safe since it is just for use as a key\npublicInfo=routeInfosRef.get(routeInfos[_i20]);if(predicate.call(thisArg,publicInfo,_i20,arr)){return publicInfo;}}return undefined;},get name(){return name;},get paramNames(){return paramNames;},get metadata(){return buildRouteInfoMetadata(info.route);},get parent(){var parent=routeInfos[i-1];if(parent===undefined){return null;}// SAFETY: This should be safe since it is just for use as a key\nreturn routeInfosRef.get(parent);},get child(){var child=routeInfos[i+1];if(child===undefined){return null;}// SAFETY: This should be safe since it is just for use as a key\nreturn routeInfosRef.get(child);},get localName(){var parts=this.name.split('.');return parts[parts.length-1];},get params(){return params;},get queryParams(){return queryParams;}};if(options.includeAttributes){routeInfo=createRouteInfoWithAttributes(routeInfo,context);}// SAFETY: This should be safe since it is just for use as a key\nLOCAL_ROUTE_INFOS.set(info,routeInfo);if(!options.localizeMapUpdates){// SAFETY: This should be safe since it is just for use as a key\nROUTE_INFOS.set(info,routeInfo);}return routeInfo;});}function createRouteInfoWithAttributes(routeInfo,context){var attributes={get attributes(){return context;}};if(!Object.isExtensible(routeInfo)||routeInfo.hasOwnProperty('attributes')){return Object.freeze(Object.assign({},routeInfo,attributes));}return Object.assign(routeInfo,attributes);}function buildRouteInfoMetadata(route){if(route!==undefined&&route!==null&&route.buildRouteInfoMetadata!==undefined){return route.buildRouteInfoMetadata();}return null;}function attachMetadata(route,routeInfo){var metadata={get metadata(){return buildRouteInfoMetadata(route);}};if(!Object.isExtensible(routeInfo)||routeInfo.hasOwnProperty('metadata')){return Object.freeze(Object.assign({},routeInfo,metadata));}return Object.assign(routeInfo,metadata);}var InternalRouteInfo=/*#__PURE__*/function(){function InternalRouteInfo(router,name,paramNames,route){_classCallCheck(this,InternalRouteInfo);this._routePromise=undefined;this._route=null;this.params={};this.isResolved=false;this.name=name;this.paramNames=paramNames;this.router=router;if(route){this._processRoute(route);}}return _createClass(InternalRouteInfo,[{key:\"getModel\",value:function getModel(_transition){return Promise$2.resolve(this.context);}},{key:\"serialize\",value:function serialize(_context){return this.params||{};}},{key:\"resolve\",value:function resolve(transition){var _this56=this;return Promise$2.resolve(this.routePromise).then(function(route){throwIfAborted(transition);return route;}).then(function(){return _this56.runBeforeModelHook(transition);}).then(function(){return throwIfAborted(transition);}).then(function(){return _this56.getModel(transition);}).then(function(resolvedModel){throwIfAborted(transition);return resolvedModel;}).then(function(resolvedModel){return _this56.runAfterModelHook(transition,resolvedModel);}).then(function(resolvedModel){return _this56.becomeResolved(transition,resolvedModel);});}},{key:\"becomeResolved\",value:function becomeResolved(transition,resolvedContext){var params=this.serialize(resolvedContext);if(transition){this.stashResolvedModel(transition,resolvedContext);transition[PARAMS_SYMBOL]=transition[PARAMS_SYMBOL]||{};transition[PARAMS_SYMBOL][this.name]=params;}var context;var contextsMatch=resolvedContext===this.context;if('context'in this||!contextsMatch){context=resolvedContext;}// SAFETY: Since this is just for lookup, it should be safe\nvar cached=ROUTE_INFOS.get(this);var resolved=new ResolvedRouteInfo(this.router,this.name,this.paramNames,params,this.route,context);if(cached!==undefined){// SAFETY: This is potentially a bit risker, but for what we're doing, it should be ok.\nROUTE_INFOS.set(resolved,cached);}return resolved;}},{key:\"shouldSupersede\",value:function shouldSupersede(routeInfo){// Prefer this newer routeInfo over `other` if:\n// 1) The other one doesn't exist\n// 2) The names don't match\n// 3) This route has a context that doesn't match\n//    the other one (or the other one doesn't have one).\n// 4) This route has parameters that don't match the other.\nif(!routeInfo){return true;}var contextsMatch=routeInfo.context===this.context;return routeInfo.name!==this.name||'context'in this&&!contextsMatch||this.hasOwnProperty('params')&&!paramsMatch(this.params,routeInfo.params);}},{key:\"route\",get:function get(){// _route could be set to either a route object or undefined, so we\n// compare against null to know when it's been set\nif(this._route!==null){return this._route;}return this.fetchRoute();},set:function set(route){this._route=route;}},{key:\"routePromise\",get:function get(){if(this._routePromise){return this._routePromise;}this.fetchRoute();return this._routePromise;},set:function set(routePromise){this._routePromise=routePromise;}},{key:\"log\",value:function log(transition,message){if(transition.log){transition.log(this.name+': '+message);}}},{key:\"updateRoute\",value:function updateRoute(route){route._internalName=this.name;return this.route=route;}},{key:\"runBeforeModelHook\",value:function runBeforeModelHook(transition){if(transition.trigger){transition.trigger(true,'willResolveModel',transition,this.route);}var result;if(this.route){if(this.route.beforeModel!==undefined){result=this.route.beforeModel(transition);}}if(isTransition(result)){result=null;}return Promise$2.resolve(result);}},{key:\"runAfterModelHook\",value:function runAfterModelHook(transition,resolvedModel){// Stash the resolved model on the payload.\n// This makes it possible for users to swap out\n// the resolved model in afterModel.\nvar name=this.name;this.stashResolvedModel(transition,resolvedModel);var result;if(this.route!==undefined){if(this.route.afterModel!==undefined){result=this.route.afterModel(resolvedModel,transition);}}result=prepareResult(result);return Promise$2.resolve(result).then(function(){// Ignore the fulfilled value returned from afterModel.\n// Return the value stashed in resolvedModels, which\n// might have been swapped out in afterModel.\n// SAFTEY: We expect this to be of type T, though typing it as such is challenging.\nreturn transition.resolvedModels[name];});}},{key:\"stashResolvedModel\",value:function stashResolvedModel(transition,resolvedModel){transition.resolvedModels=transition.resolvedModels||{};// SAFETY: It's unfortunate that we have to do this cast. It should be safe though.\ntransition.resolvedModels[this.name]=resolvedModel;}},{key:\"fetchRoute\",value:function fetchRoute(){var route=this.router.getRoute(this.name);return this._processRoute(route);}},{key:\"_processRoute\",value:function _processRoute(route){var _this57=this;// Setup a routePromise so that we can wait for asynchronously loaded routes\nthis.routePromise=Promise$2.resolve(route);// Wait until the 'route' property has been updated when chaining to a route\n// that is a promise\nif(isPromise(route)){this.routePromise=this.routePromise.then(function(r){return _this57.updateRoute(r);});// set to undefined to avoid recursive loop in the route getter\nreturn this.route=undefined;}else if(route){return this.updateRoute(route);}return undefined;}}]);}();var ResolvedRouteInfo=/*#__PURE__*/function(_InternalRouteInfo){function ResolvedRouteInfo(router,name,paramNames,params,route,context){var _this58;_classCallCheck(this,ResolvedRouteInfo);_this58=_callSuper(this,ResolvedRouteInfo,[router,name,paramNames,route]);_this58.params=params;_this58.isResolved=true;_this58.context=context;return _this58;}_inherits(ResolvedRouteInfo,_InternalRouteInfo);return _createClass(ResolvedRouteInfo,[{key:\"resolve\",value:function resolve(transition){// A ResolvedRouteInfo just resolved with itself.\nif(transition&&transition.resolvedModels){transition.resolvedModels[this.name]=this.context;}return Promise$2.resolve(this);}}]);}(InternalRouteInfo);var UnresolvedRouteInfoByParam=/*#__PURE__*/function(_InternalRouteInfo2){function UnresolvedRouteInfoByParam(router,name,paramNames,params,route){var _this59;_classCallCheck(this,UnresolvedRouteInfoByParam);_this59=_callSuper(this,UnresolvedRouteInfoByParam,[router,name,paramNames,route]);_this59.params={};if(params){_this59.params=params;}return _this59;}_inherits(UnresolvedRouteInfoByParam,_InternalRouteInfo2);return _createClass(UnresolvedRouteInfoByParam,[{key:\"getModel\",value:function getModel(transition){var fullParams=this.params;if(transition&&transition[QUERY_PARAMS_SYMBOL]){fullParams={};merge(fullParams,this.params);fullParams.queryParams=transition[QUERY_PARAMS_SYMBOL];}var route=this.route;var result;// FIXME: Review these casts\nif(route.deserialize){result=route.deserialize(fullParams,transition);}else if(route.model){result=route.model(fullParams,transition);}if(result&&isTransition(result)){result=undefined;}return Promise$2.resolve(result);}}]);}(InternalRouteInfo);var UnresolvedRouteInfoByObject=/*#__PURE__*/function(_InternalRouteInfo3){function UnresolvedRouteInfoByObject(router,name,paramNames,context){var _this60;_classCallCheck(this,UnresolvedRouteInfoByObject);_this60=_callSuper(this,UnresolvedRouteInfoByObject,[router,name,paramNames]);_this60.context=context;_this60.serializer=_this60.router.getSerializer(name);return _this60;}_inherits(UnresolvedRouteInfoByObject,_InternalRouteInfo3);return _createClass(UnresolvedRouteInfoByObject,[{key:\"getModel\",value:function getModel(transition){if(this.router.log!==undefined){this.router.log(this.name+': resolving provided model');}return _superPropGet(UnresolvedRouteInfoByObject,\"getModel\",this,3)([transition]);}/**\n              @private\n                 Serializes a route using its custom `serialize` method or\n              by a default that looks up the expected property name from\n              the dynamic segment.\n                 @param {Object} model the model to be serialized for this route\n            */},{key:\"serialize\",value:function serialize(model){var paramNames=this.paramNames,context=this.context;if(!model){// SAFETY: By the time we serialize, we expect to be resolved.\n// This may not be an entirely safe assumption though no tests fail.\nmodel=context;}var object={};if(isParam(model)){object[paramNames[0]]=model;return object;}// Use custom serialize if it exists.\nif(this.serializer){// invoke this.serializer unbound (getSerializer returns a stateless function)\nreturn this.serializer.call(null,model,paramNames);}else if(this.route!==undefined){if(this.route.serialize){return this.route.serialize(model,paramNames);}}if(paramNames.length!==1){return;}var name=paramNames[0];if(/_id$/.test(name)){// SAFETY: Model is supposed to extend IModel already\nobject[name]=model.id;}else{object[name]=model;}return object;}}]);}(InternalRouteInfo);function paramsMatch(a,b){if(a===b){// Both are identical, may both be undefined\nreturn true;}if(!a||!b){// Only one is undefined, already checked they aren't identical\nreturn false;}// Note: this assumes that both params have the same\n// number of keys, but since we're comparing the\n// same routes, they should.\nfor(var k in a){if(a.hasOwnProperty(k)&&a[k]!==b[k]){return false;}}return true;}var TransitionIntent=/*#__PURE__*/_createClass(function TransitionIntent(router){var data=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,TransitionIntent);this.router=router;this.data=data;});function handleError(currentState,transition,error){// This is the only possible\n// reject value of TransitionState#resolve\nvar routeInfos=currentState.routeInfos;var errorHandlerIndex=transition.resolveIndex>=routeInfos.length?routeInfos.length-1:transition.resolveIndex;var wasAborted=transition.isAborted;throw new TransitionError(error,currentState.routeInfos[errorHandlerIndex].route,wasAborted,currentState);}function resolveOneRouteInfo(currentState,transition){if(transition.resolveIndex===currentState.routeInfos.length){// This is is the only possible\n// fulfill value of TransitionState#resolve\nreturn;}var routeInfo=currentState.routeInfos[transition.resolveIndex];var callback=proceed.bind(null,currentState,transition);return routeInfo.resolve(transition).then(callback,null,currentState.promiseLabel('Proceed'));}function proceed(currentState,transition,resolvedRouteInfo){var wasAlreadyResolved=currentState.routeInfos[transition.resolveIndex].isResolved;// Swap the previously unresolved routeInfo with\n// the resolved routeInfo\ncurrentState.routeInfos[transition.resolveIndex++]=resolvedRouteInfo;if(!wasAlreadyResolved){// Call the redirect hook. The reason we call it here\n// vs. afterModel is so that redirects into child\n// routes don't re-run the model hooks for this\n// already-resolved route.\nvar route=resolvedRouteInfo.route;if(route!==undefined){if(route.redirect){route.redirect(resolvedRouteInfo.context,transition);}}}// Proceed after ensuring that the redirect hook\n// didn't abort this transition by transitioning elsewhere.\nthrowIfAborted(transition);return resolveOneRouteInfo(currentState,transition);}var TransitionState=/*#__PURE__*/function(){function TransitionState(){_classCallCheck(this,TransitionState);this.routeInfos=[];this.queryParams={};this.params={};}return _createClass(TransitionState,[{key:\"promiseLabel\",value:function promiseLabel(label){var targetName='';forEach(this.routeInfos,function(routeInfo){if(targetName!==''){targetName+='.';}targetName+=routeInfo.name;return true;});return _promiseLabel(\"'\"+targetName+\"': \"+label);}},{key:\"resolve\",value:function resolve(transition){var _this61=this;// First, calculate params for this state. This is useful\n// information to provide to the various route hooks.\nvar params=this.params;forEach(this.routeInfos,function(routeInfo){params[routeInfo.name]=routeInfo.params||{};return true;});transition.resolveIndex=0;var callback=resolveOneRouteInfo.bind(null,this,transition);var errorHandler=handleError.bind(null,this,transition);// The prelude RSVP.resolve() async moves us into the promise land.\nreturn Promise$2.resolve(null,this.promiseLabel('Start transition')).then(callback,null,this.promiseLabel('Resolve route')).catch(errorHandler,this.promiseLabel('Handle error')).then(function(){return _this61;});}}]);}();var TransitionError=/*#__PURE__*/_createClass(function TransitionError(error,route,wasAborted,state){_classCallCheck(this,TransitionError);this.error=error;this.route=route;this.wasAborted=wasAborted;this.state=state;});var NamedTransitionIntent=/*#__PURE__*/function(_TransitionIntent){function NamedTransitionIntent(router,name,pivotHandler){var _this62;var contexts=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];var queryParams=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var data=arguments.length>5?arguments[5]:undefined;_classCallCheck(this,NamedTransitionIntent);_this62=_callSuper(this,NamedTransitionIntent,[router,data]);_this62.preTransitionState=undefined;_this62.name=name;_this62.pivotHandler=pivotHandler;_this62.contexts=contexts;_this62.queryParams=queryParams;return _this62;}_inherits(NamedTransitionIntent,_TransitionIntent);return _createClass(NamedTransitionIntent,[{key:\"applyToState\",value:function applyToState(oldState,isIntermediate){var handlers=this.router.recognizer.handlersFor(this.name);var targetRouteName=handlers[handlers.length-1].handler;return this.applyToHandlers(oldState,handlers,targetRouteName,isIntermediate,false);}},{key:\"applyToHandlers\",value:function applyToHandlers(oldState,parsedHandlers,targetRouteName,isIntermediate,checkingIfActive){var i,len;var newState=new TransitionState();var objects=this.contexts.slice(0);var invalidateIndex=parsedHandlers.length;// Pivot handlers are provided for refresh transitions\nif(this.pivotHandler){for(i=0,len=parsedHandlers.length;i<len;++i){if(parsedHandlers[i].handler===this.pivotHandler._internalName){invalidateIndex=i;break;}}}for(i=parsedHandlers.length-1;i>=0;--i){var result=parsedHandlers[i];var _name29=result.handler;var oldHandlerInfo=oldState.routeInfos[i];var newHandlerInfo=null;if(result.names.length>0){if(i>=invalidateIndex){newHandlerInfo=this.createParamHandlerInfo(_name29,result.names,objects,oldHandlerInfo);}else{newHandlerInfo=this.getHandlerInfoForDynamicSegment(_name29,result.names,objects,oldHandlerInfo,targetRouteName,i);}}else{// This route has no dynamic segment.\n// Therefore treat as a param-based handlerInfo\n// with empty params. This will cause the `model`\n// hook to be called with empty params, which is desirable.\nnewHandlerInfo=this.createParamHandlerInfo(_name29,result.names,objects,oldHandlerInfo);}if(checkingIfActive){// If we're performing an isActive check, we want to\n// serialize URL params with the provided context, but\n// ignore mismatches between old and new context.\nnewHandlerInfo=newHandlerInfo.becomeResolved(null,// SAFETY: This seems to imply that it would be resolved, but it's unclear if that's actually the case.\nnewHandlerInfo.context);var oldContext=oldHandlerInfo&&oldHandlerInfo.context;if(result.names.length>0&&oldHandlerInfo.context!==undefined&&newHandlerInfo.context===oldContext){// If contexts match in isActive test, assume params also match.\n// This allows for flexibility in not requiring that every last\n// handler provide a `serialize` method\nnewHandlerInfo.params=oldHandlerInfo&&oldHandlerInfo.params;}newHandlerInfo.context=oldContext;}var handlerToUse=oldHandlerInfo;if(i>=invalidateIndex||newHandlerInfo.shouldSupersede(oldHandlerInfo)){invalidateIndex=Math.min(i,invalidateIndex);handlerToUse=newHandlerInfo;}if(isIntermediate&&!checkingIfActive){handlerToUse=handlerToUse.becomeResolved(null,// SAFETY: This seems to imply that it would be resolved, but it's unclear if that's actually the case.\nhandlerToUse.context);}newState.routeInfos.unshift(handlerToUse);}if(objects.length>0){throw new Error('More context objects were passed than there are dynamic segments for the route: '+targetRouteName);}if(!isIntermediate){this.invalidateChildren(newState.routeInfos,invalidateIndex);}merge(newState.queryParams,this.queryParams||{});if(isIntermediate&&oldState.queryParams){merge(newState.queryParams,oldState.queryParams);}return newState;}},{key:\"invalidateChildren\",value:function invalidateChildren(handlerInfos,invalidateIndex){for(var i=invalidateIndex,l=handlerInfos.length;i<l;++i){var handlerInfo=handlerInfos[i];if(handlerInfo.isResolved){var _handlerInfos$i=handlerInfos[i],_name30=_handlerInfos$i.name,params=_handlerInfos$i.params,route=_handlerInfos$i.route,paramNames=_handlerInfos$i.paramNames;handlerInfos[i]=new UnresolvedRouteInfoByParam(this.router,_name30,paramNames,params,route);}}}},{key:\"getHandlerInfoForDynamicSegment\",value:function getHandlerInfoForDynamicSegment(name,names,objects,oldHandlerInfo,_targetRouteName,i){var objectToUse;if(objects.length>0){// Use the objects provided for this transition.\nobjectToUse=objects[objects.length-1];if(isParam(objectToUse)){return this.createParamHandlerInfo(name,names,objects,oldHandlerInfo);}else{objects.pop();}}else if(oldHandlerInfo&&oldHandlerInfo.name===name){// Reuse the matching oldHandlerInfo\nreturn oldHandlerInfo;}else{if(this.preTransitionState){var preTransitionHandlerInfo=this.preTransitionState.routeInfos[i];objectToUse=preTransitionHandlerInfo===null||preTransitionHandlerInfo===void 0?void 0:preTransitionHandlerInfo.context;}else{// Ideally we should throw this error to provide maximal\n// information to the user that not enough context objects\n// were provided, but this proves too cumbersome in Ember\n// in cases where inner template helpers are evaluated\n// before parent helpers un-render, in which cases this\n// error somewhat prematurely fires.\n//throw new Error(\"Not enough context objects were provided to complete a transition to \" + targetRouteName + \". Specifically, the \" + name + \" route needs an object that can be serialized into its dynamic URL segments [\" + names.join(', ') + \"]\");\nreturn oldHandlerInfo;}}return new UnresolvedRouteInfoByObject(this.router,name,names,objectToUse);}},{key:\"createParamHandlerInfo\",value:function createParamHandlerInfo(name,names,objects,oldHandlerInfo){var params={};// Soak up all the provided string/numbers\nvar numNames=names.length;var missingParams=[];while(numNames--){// Only use old params if the names match with the new handler\nvar oldParams=oldHandlerInfo&&name===oldHandlerInfo.name&&oldHandlerInfo.params||{};var peek=objects[objects.length-1];var paramName=names[numNames];if(isParam(peek)){params[paramName]=''+objects.pop();}else{// If we're here, this means only some of the params\n// were string/number params, so try and use a param\n// value from a previous handler.\nif(oldParams.hasOwnProperty(paramName)){params[paramName]=oldParams[paramName];}else{missingParams.push(paramName);}}}if(missingParams.length>0){throw new Error(\"You didn't provide enough string/numeric parameters to satisfy all of the dynamic segments for route \".concat(name,\".\")+\" Missing params: \".concat(missingParams));}return new UnresolvedRouteInfoByParam(this.router,name,names,params);}}]);}(TransitionIntent);var UnrecognizedURLError=function(){UnrecognizedURLError.prototype=Object.create(Error.prototype);UnrecognizedURLError.prototype.constructor=UnrecognizedURLError;function UnrecognizedURLError(message){var error=Error.call(this,message);this.name='UnrecognizedURLError';this.message=message||'UnrecognizedURL';if(Error.captureStackTrace){Error.captureStackTrace(this,UnrecognizedURLError);}else{this.stack=error.stack;}}return UnrecognizedURLError;}();var URLTransitionIntent=/*#__PURE__*/function(_TransitionIntent2){function URLTransitionIntent(router,url,data){var _this63;_classCallCheck(this,URLTransitionIntent);_this63=_callSuper(this,URLTransitionIntent,[router,data]);_this63.url=url;_this63.preTransitionState=undefined;return _this63;}_inherits(URLTransitionIntent,_TransitionIntent2);return _createClass(URLTransitionIntent,[{key:\"applyToState\",value:function applyToState(oldState){var newState=new TransitionState();var results=this.router.recognizer.recognize(this.url),i,len;if(!results){throw new UnrecognizedURLError(this.url);}var statesDiffer=false;var _url=this.url;// Checks if a handler is accessible by URL. If it is not, an error is thrown.\n// For the case where the handler is loaded asynchronously, the error will be\n// thrown once it is loaded.\nfunction checkHandlerAccessibility(handler){if(handler&&handler.inaccessibleByURL){throw new UnrecognizedURLError(_url);}return handler;}for(i=0,len=results.length;i<len;++i){var result=results[i];var _name31=result.handler;var paramNames=[];if(this.router.recognizer.hasRoute(_name31)){paramNames=this.router.recognizer.handlersFor(_name31)[i].names;}var newRouteInfo=new UnresolvedRouteInfoByParam(this.router,_name31,paramNames,result.params);var route=newRouteInfo.route;if(route){checkHandlerAccessibility(route);}else{// If the handler is being loaded asynchronously, check if we can\n// access it after it has resolved\nnewRouteInfo.routePromise=newRouteInfo.routePromise.then(checkHandlerAccessibility);}var oldRouteInfo=oldState.routeInfos[i];if(statesDiffer||newRouteInfo.shouldSupersede(oldRouteInfo)){statesDiffer=true;newState.routeInfos[i]=newRouteInfo;}else{newState.routeInfos[i]=oldRouteInfo;}}merge(newState.queryParams,results.queryParams);return newState;}}]);}(TransitionIntent);var Router=/*#__PURE__*/function(){function Router(logger){_classCallCheck(this,Router);this._lastQueryParams={};this.state=undefined;this.oldState=undefined;this.activeTransition=undefined;this.currentRouteInfos=undefined;this._changedQueryParams=undefined;this.currentSequence=0;this.log=logger;this.recognizer=new RouteRecognizer();this.reset();}/**\n              The main entry point into the router. The API is essentially\n              the same as the `map` method in `route-recognizer`.\n                 This method extracts the String handler at the last `.to()`\n              call and uses it as the name of the whole route.\n                 @param {Function} callback\n            */return _createClass(Router,[{key:\"map\",value:function map(callback){this.recognizer.map(callback,function(recognizer,routes){for(var i=routes.length-1,_proceed=true;i>=0&&_proceed;--i){var route=routes[i];var handler=route.handler;recognizer.add(routes,{as:handler});_proceed=route.path==='/'||route.path===''||handler.slice(-6)==='.index';}});}},{key:\"hasRoute\",value:function hasRoute(route){return this.recognizer.hasRoute(route);}},{key:\"queryParamsTransition\",value:function queryParamsTransition(changelist,wasTransitioning,oldState,newState){var _this64=this;this.fireQueryParamDidChange(newState,changelist);if(!wasTransitioning&&this.activeTransition){// One of the routes in queryParamsDidChange\n// caused a transition. Just return that transition.\nreturn this.activeTransition;}else{// Running queryParamsDidChange didn't change anything.\n// Just update query params and be on our way.\n// We have to return a noop transition that will\n// perform a URL update at the end. This gives\n// the user the ability to set the url update\n// method (default is replaceState).\nvar newTransition=new Transition(this,undefined,undefined);newTransition.queryParamsOnly=true;oldState.queryParams=this.finalizeQueryParamChange(newState.routeInfos,newState.queryParams,newTransition);newTransition[QUERY_PARAMS_SYMBOL]=newState.queryParams;this.toReadOnlyInfos(newTransition,newState);this.routeWillChange(newTransition);newTransition.promise=newTransition.promise.then(function(result){if(!newTransition.isAborted){_this64._updateURL(newTransition,oldState);_this64.didTransition(_this64.currentRouteInfos);_this64.toInfos(newTransition,newState.routeInfos,true);_this64.routeDidChange(newTransition);}return result;},null,_promiseLabel('Transition complete'));return newTransition;}}},{key:\"transitionByIntent\",value:function transitionByIntent(intent,isIntermediate){try{return this.getTransitionByIntent(intent,isIntermediate);}catch(e){return new Transition(this,intent,undefined,e,undefined);}}},{key:\"recognize\",value:function recognize(url){var intent=new URLTransitionIntent(this,url);var newState=this.generateNewState(intent);if(newState===null){return newState;}var readonlyInfos=toReadOnlyRouteInfo(newState.routeInfos,newState.queryParams,{includeAttributes:false,localizeMapUpdates:true});return readonlyInfos[readonlyInfos.length-1];}},{key:\"recognizeAndLoad\",value:function recognizeAndLoad(url){var intent=new URLTransitionIntent(this,url);var newState=this.generateNewState(intent);if(newState===null){return Promise$2.reject(\"URL \".concat(url,\" was not recognized\"));}var newTransition=new Transition(this,intent,newState,undefined);return newTransition.then(function(){var routeInfosWithAttributes=toReadOnlyRouteInfo(newState.routeInfos,newTransition[QUERY_PARAMS_SYMBOL],{includeAttributes:true,localizeMapUpdates:false});return routeInfosWithAttributes[routeInfosWithAttributes.length-1];});}},{key:\"generateNewState\",value:function generateNewState(intent){try{return intent.applyToState(this.state,false);}catch(e){return null;}}},{key:\"getTransitionByIntent\",value:function getTransitionByIntent(intent,isIntermediate){var _this65=this;var wasTransitioning=!!this.activeTransition;var oldState=wasTransitioning?this.activeTransition[STATE_SYMBOL]:this.state;var newTransition;var newState=intent.applyToState(oldState,isIntermediate);var queryParamChangelist=getChangelist(oldState.queryParams,newState.queryParams);if(routeInfosEqual(newState.routeInfos,oldState.routeInfos)){// This is a no-op transition. See if query params changed.\nif(queryParamChangelist){var _newTransition=this.queryParamsTransition(queryParamChangelist,wasTransitioning,oldState,newState);_newTransition.queryParamsOnly=true;// SAFETY: The returned OpaqueTransition should actually be this.\nreturn _newTransition;}// No-op. No need to create a new transition.\nreturn this.activeTransition||new Transition(this,undefined,undefined);}if(isIntermediate){var transition=new Transition(this,undefined,newState);transition.isIntermediate=true;this.toReadOnlyInfos(transition,newState);this.setupContexts(newState,transition);this.routeWillChange(transition);return this.activeTransition;}// Create a new transition to the destination route.\nnewTransition=new Transition(this,intent,newState,undefined,this.activeTransition);// transition is to same route with same params, only query params differ.\n// not caught above probably because refresh() has been used\nif(routeInfosSameExceptQueryParams(newState.routeInfos,oldState.routeInfos)){newTransition.queryParamsOnly=true;}this.toReadOnlyInfos(newTransition,newState);// Abort and usurp any previously active transition.\nif(this.activeTransition){this.activeTransition.redirect(newTransition);}this.activeTransition=newTransition;// Transition promises by default resolve with resolved state.\n// For our purposes, swap out the promise to resolve\n// after the transition has been finalized.\nnewTransition.promise=newTransition.promise.then(function(result){return _this65.finalizeTransition(newTransition,result);},null,_promiseLabel('Settle transition promise when transition is finalized'));if(!wasTransitioning){this.notifyExistingHandlers(newState,newTransition);}this.fireQueryParamDidChange(newState,queryParamChangelist);return newTransition;}/**\n            @private\n               Begins and returns a Transition based on the provided\n            arguments. Accepts arguments in the form of both URL\n            transitions and named transitions.\n               @param {Router} router\n            @param {Array[Object]} args arguments passed to transitionTo,\n              replaceWith, or handleURL\n            */},{key:\"doTransition\",value:function doTransition(name){var modelsArray=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var isIntermediate=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var lastArg=modelsArray[modelsArray.length-1];var queryParams={};if(lastArg&&Object.prototype.hasOwnProperty.call(lastArg,'queryParams')){// We just checked this.\n// TODO: Use an assertion?\nqueryParams=modelsArray.pop().queryParams;}var intent;if(name===undefined){_log(this,'Updating query params');// A query param update is really just a transition\n// into the route you're already on.\nvar routeInfos=this.state.routeInfos;intent=new NamedTransitionIntent(this,routeInfos[routeInfos.length-1].name,undefined,[],queryParams);}else if(name.charAt(0)==='/'){_log(this,'Attempting URL transition to '+name);intent=new URLTransitionIntent(this,name);}else{_log(this,'Attempting transition to '+name);intent=new NamedTransitionIntent(this,name,undefined,// SAFETY: We know this to be the case since we removed the last item if it was QPs\nmodelsArray,queryParams);}return this.transitionByIntent(intent,isIntermediate);}/**\n            @private\n               Updates the URL (if necessary) and calls `setupContexts`\n            to update the router's array of `currentRouteInfos`.\n            */},{key:\"finalizeTransition\",value:function finalizeTransition(transition,newState){try{_log(transition.router,transition.sequence,'Resolved all models on destination route; finalizing transition.');var routeInfos=newState.routeInfos;// Run all the necessary enter/setup/exit hooks\nthis.setupContexts(newState,transition);// Check if a redirect occurred in enter/setup\nif(transition.isAborted){// TODO: cleaner way? distinguish b/w targetRouteInfos?\nthis.state.routeInfos=this.currentRouteInfos;return Promise$2.reject(logAbort(transition));}this._updateURL(transition,newState);transition.isActive=false;this.activeTransition=undefined;this.triggerEvent(this.currentRouteInfos,true,'didTransition',[]);this.didTransition(this.currentRouteInfos);this.toInfos(transition,newState.routeInfos,true);this.routeDidChange(transition);_log(this,transition.sequence,'TRANSITION COMPLETE.');// Resolve with the final route.\nreturn routeInfos[routeInfos.length-1].route;}catch(e){if(!isTransitionAborted(e)){var infos=transition[STATE_SYMBOL].routeInfos;transition.trigger(true,'error',e,transition,infos[infos.length-1].route);transition.abort();}throw e;}}/**\n            @private\n               Takes an Array of `RouteInfo`s, figures out which ones are\n            exiting, entering, or changing contexts, and calls the\n            proper route hooks.\n               For example, consider the following tree of routes. Each route is\n            followed by the URL segment it handles.\n               ```\n            |~index (\"/\")\n            | |~posts (\"/posts\")\n            | | |-showPost (\"/:id\")\n            | | |-newPost (\"/new\")\n            | | |-editPost (\"/edit\")\n            | |~about (\"/about/:id\")\n            ```\n               Consider the following transitions:\n               1. A URL transition to `/posts/1`.\n               1. Triggers the `*model` callbacks on the\n                  `index`, `posts`, and `showPost` routes\n               2. Triggers the `enter` callback on the same\n               3. Triggers the `setup` callback on the same\n            2. A direct transition to `newPost`\n               1. Triggers the `exit` callback on `showPost`\n               2. Triggers the `enter` callback on `newPost`\n               3. Triggers the `setup` callback on `newPost`\n            3. A direct transition to `about` with a specified\n               context object\n               1. Triggers the `exit` callback on `newPost`\n                  and `posts`\n               2. Triggers the `serialize` callback on `about`\n               3. Triggers the `enter` callback on `about`\n               4. Triggers the `setup` callback on `about`\n               @param {Router} transition\n            @param {TransitionState} newState\n            */},{key:\"setupContexts\",value:function setupContexts(newState,transition){var partition=this.partitionRoutes(this.state,newState);var i,l,route;for(i=0,l=partition.exited.length;i<l;i++){route=partition.exited[i].route;delete route.context;if(route!==undefined){if(route._internalReset!==undefined){route._internalReset(true,transition);}if(route.exit!==undefined){route.exit(transition);}}}var oldState=this.oldState=this.state;this.state=newState;var currentRouteInfos=this.currentRouteInfos=partition.unchanged.slice();try{for(i=0,l=partition.reset.length;i<l;i++){route=partition.reset[i].route;if(route!==undefined){if(route._internalReset!==undefined){route._internalReset(false,transition);}}}for(i=0,l=partition.updatedContext.length;i<l;i++){this.routeEnteredOrUpdated(currentRouteInfos,partition.updatedContext[i],false,transition);}for(i=0,l=partition.entered.length;i<l;i++){this.routeEnteredOrUpdated(currentRouteInfos,partition.entered[i],true,transition);}}catch(e){this.state=oldState;this.currentRouteInfos=oldState.routeInfos;throw e;}this.state.queryParams=this.finalizeQueryParamChange(currentRouteInfos,newState.queryParams,transition);}/**\n            @private\n               Fires queryParamsDidChange event\n            */},{key:\"fireQueryParamDidChange\",value:function fireQueryParamDidChange(newState,queryParamChangelist){// If queryParams changed trigger event\nif(queryParamChangelist){// This is a little hacky but we need some way of storing\n// changed query params given that no activeTransition\n// is guaranteed to have occurred.\nthis._changedQueryParams=queryParamChangelist.all;this.triggerEvent(newState.routeInfos,true,'queryParamsDidChange',[queryParamChangelist.changed,queryParamChangelist.all,queryParamChangelist.removed]);this._changedQueryParams=undefined;}}/**\n            @private\n               Helper method used by setupContexts. Handles errors or redirects\n            that may happen in enter/setup.\n            */},{key:\"routeEnteredOrUpdated\",value:function routeEnteredOrUpdated(currentRouteInfos,routeInfo,enter,transition){var route=routeInfo.route,context=routeInfo.context;function _routeEnteredOrUpdated(route){if(enter){if(route.enter!==undefined){route.enter(transition);}}throwIfAborted(transition);route.context=context;if(route.contextDidChange!==undefined){route.contextDidChange();}if(route.setup!==undefined){route.setup(context,transition);}throwIfAborted(transition);currentRouteInfos.push(routeInfo);return route;}// If the route doesn't exist, it means we haven't resolved the route promise yet\nif(route===undefined){routeInfo.routePromise=routeInfo.routePromise.then(_routeEnteredOrUpdated);}else{_routeEnteredOrUpdated(route);}return true;}/**\n            @private\n               This function is called when transitioning from one URL to\n            another to determine which routes are no longer active,\n            which routes are newly active, and which routes remain\n            active but have their context changed.\n               Take a list of old routes and new routes and partition\n            them into four buckets:\n               * unchanged: the route was active in both the old and\n              new URL, and its context remains the same\n            * updated context: the route was active in both the\n              old and new URL, but its context changed. The route's\n              `setup` method, if any, will be called with the new\n              context.\n            * exited: the route was active in the old URL, but is\n              no longer active.\n            * entered: the route was not active in the old URL, but\n              is now active.\n               The PartitionedRoutes structure has four fields:\n               * `updatedContext`: a list of `RouteInfo` objects that\n              represent routes that remain active but have a changed\n              context\n            * `entered`: a list of `RouteInfo` objects that represent\n              routes that are newly active\n            * `exited`: a list of `RouteInfo` objects that are no\n              longer active.\n            * `unchanged`: a list of `RouteInfo` objects that remain active.\n               @param {Array[InternalRouteInfo]} oldRoutes a list of the route\n              information for the previous URL (or `[]` if this is the\n              first handled transition)\n            @param {Array[InternalRouteInfo]} newRoutes a list of the route\n              information for the new URL\n               @return {Partition}\n            */},{key:\"partitionRoutes\",value:function partitionRoutes(oldState,newState){var oldRouteInfos=oldState.routeInfos;var newRouteInfos=newState.routeInfos;var routes={updatedContext:[],exited:[],entered:[],unchanged:[],reset:[]};var routeChanged,contextChanged=false,i,l;for(i=0,l=newRouteInfos.length;i<l;i++){var oldRouteInfo=oldRouteInfos[i],newRouteInfo=newRouteInfos[i];if(!oldRouteInfo||oldRouteInfo.route!==newRouteInfo.route){routeChanged=true;}if(routeChanged){routes.entered.push(newRouteInfo);if(oldRouteInfo){routes.exited.unshift(oldRouteInfo);}}else if(contextChanged||oldRouteInfo.context!==newRouteInfo.context){contextChanged=true;routes.updatedContext.push(newRouteInfo);}else{routes.unchanged.push(oldRouteInfo);}}for(i=newRouteInfos.length,l=oldRouteInfos.length;i<l;i++){routes.exited.unshift(oldRouteInfos[i]);}routes.reset=routes.updatedContext.slice();routes.reset.reverse();return routes;}},{key:\"_updateURL\",value:function _updateURL(transition,state){var urlMethod=transition.urlMethod;if(!urlMethod){return;}var routeInfos=state.routeInfos;var routeName=routeInfos[routeInfos.length-1].name;var params={};for(var i=routeInfos.length-1;i>=0;--i){var routeInfo=routeInfos[i];merge(params,routeInfo.params);if(routeInfo.route.inaccessibleByURL){urlMethod=null;}}if(urlMethod){params.queryParams=transition._visibleQueryParams||state.queryParams;var url=this.recognizer.generate(routeName,params);// transitions during the initial transition must always use replaceURL.\n// When the app boots, you are at a url, e.g. /foo. If some route\n// redirects to bar as part of the initial transition, you don't want to\n// add a history entry for /foo. If you do, pressing back will immediately\n// hit the redirect again and take you back to /bar, thus killing the back\n// button\nvar initial=transition.isCausedByInitialTransition;// say you are at / and you click a link to route /foo. In /foo's\n// route, the transition is aborted using replaceWith('/bar').\n// Because the current url is still /, the history entry for / is\n// removed from the history. Clicking back will take you to the page\n// you were on before /, which is often not even the app, thus killing\n// the back button. That's why updateURL is always correct for an\n// aborting transition that's not the initial transition\nvar replaceAndNotAborting=urlMethod==='replace'&&!transition.isCausedByAbortingTransition;// because calling refresh causes an aborted transition, this needs to be\n// special cased - if the initial transition is a replace transition, the\n// urlMethod should be honored here.\nvar isQueryParamsRefreshTransition=transition.queryParamsOnly&&urlMethod==='replace';// say you are at / and you a `replaceWith(/foo)` is called. Then, that\n// transition is aborted with `replaceWith(/bar)`. At the end, we should\n// end up with /bar replacing /. We are replacing the replace. We only\n// will replace the initial route if all subsequent aborts are also\n// replaces. However, there is some ambiguity around the correct behavior\n// here.\nvar replacingReplace=urlMethod==='replace'&&transition.isCausedByAbortingReplaceTransition;if(initial||replaceAndNotAborting||isQueryParamsRefreshTransition||replacingReplace){this.replaceURL(url);}else{this.updateURL(url);}}}},{key:\"finalizeQueryParamChange\",value:function finalizeQueryParamChange(resolvedHandlers,newQueryParams,transition){// We fire a finalizeQueryParamChange event which\n// gives the new route hierarchy a chance to tell\n// us which query params it's consuming and what\n// their final values are. If a query param is\n// no longer consumed in the final route hierarchy,\n// its serialized segment will be removed\n// from the URL.\nfor(var k in newQueryParams){if(newQueryParams.hasOwnProperty(k)&&newQueryParams[k]===null){delete newQueryParams[k];}}var finalQueryParamsArray=[];this.triggerEvent(resolvedHandlers,true,'finalizeQueryParamChange',[newQueryParams,finalQueryParamsArray,transition]);if(transition){transition._visibleQueryParams={};}var finalQueryParams={};for(var i=0,_len66=finalQueryParamsArray.length;i<_len66;++i){var qp=finalQueryParamsArray[i];finalQueryParams[qp.key]=qp.value;if(transition&&qp.visible!==false){transition._visibleQueryParams[qp.key]=qp.value;}}return finalQueryParams;}},{key:\"toReadOnlyInfos\",value:function toReadOnlyInfos(newTransition,newState){var oldRouteInfos=this.state.routeInfos;this.fromInfos(newTransition,oldRouteInfos);this.toInfos(newTransition,newState.routeInfos);this._lastQueryParams=newState.queryParams;}},{key:\"fromInfos\",value:function fromInfos(newTransition,oldRouteInfos){if(newTransition!==undefined&&oldRouteInfos.length>0){var _fromInfos=toReadOnlyRouteInfo(oldRouteInfos,Object.assign({},this._lastQueryParams),{includeAttributes:true,localizeMapUpdates:false});newTransition.from=_fromInfos[_fromInfos.length-1]||null;}}},{key:\"toInfos\",value:function toInfos(newTransition,newRouteInfos){var includeAttributes=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(newTransition!==undefined&&newRouteInfos.length>0){var _toInfos=toReadOnlyRouteInfo(newRouteInfos,Object.assign({},newTransition[QUERY_PARAMS_SYMBOL]),{includeAttributes:includeAttributes,localizeMapUpdates:false});newTransition.to=_toInfos[_toInfos.length-1]||null;}}},{key:\"notifyExistingHandlers\",value:function notifyExistingHandlers(newState,newTransition){var oldRouteInfos=this.state.routeInfos,i,oldRouteInfoLen,oldHandler,newRouteInfo;oldRouteInfoLen=oldRouteInfos.length;for(i=0;i<oldRouteInfoLen;i++){oldHandler=oldRouteInfos[i];newRouteInfo=newState.routeInfos[i];if(!newRouteInfo||oldHandler.name!==newRouteInfo.name){break;}if(!newRouteInfo.isResolved);}this.triggerEvent(oldRouteInfos,true,'willTransition',[newTransition]);this.routeWillChange(newTransition);this.willTransition(oldRouteInfos,newState.routeInfos,newTransition);}/**\n              Clears the current and target route routes and triggers exit\n              on each of them starting at the leaf and traversing up through\n              its ancestors.\n            */},{key:\"reset\",value:function reset(){if(this.state){forEach(this.state.routeInfos.slice().reverse(),function(routeInfo){var route=routeInfo.route;if(route!==undefined){if(route.exit!==undefined){route.exit();}}return true;});}this.oldState=undefined;this.state=new TransitionState();this.currentRouteInfos=undefined;}/**\n              let handler = routeInfo.handler;\n              The entry point for handling a change to the URL (usually\n              via the back and forward button).\n                 Returns an Array of handlers and the parameters associated\n              with those parameters.\n                 @param {String} url a URL to process\n                 @return {Array} an Array of `[handler, parameter]` tuples\n            */},{key:\"handleURL\",value:function handleURL(url){// Perform a URL-based transition, but don't change\n// the URL afterward, since it already happened.\nif(url.charAt(0)!=='/'){url='/'+url;}return this.doTransition(url).method(null);}/**\n              Transition into the specified named route.\n                 If necessary, trigger the exit callback on any routes\n              that are no longer represented by the target route.\n                 @param {String} name the name of the route\n            */},{key:\"transitionTo\",value:function transitionTo(name){for(var _len67=arguments.length,contexts=new Array(_len67>1?_len67-1:0),_key63=1;_key63<_len67;_key63++){contexts[_key63-1]=arguments[_key63];}if(_typeof(name)==='object'){contexts.push(name);return this.doTransition(undefined,contexts,false);}return this.doTransition(name,contexts);}},{key:\"intermediateTransitionTo\",value:function intermediateTransitionTo(name){for(var _len68=arguments.length,args=new Array(_len68>1?_len68-1:0),_key64=1;_key64<_len68;_key64++){args[_key64-1]=arguments[_key64];}return this.doTransition(name,args,true);}},{key:\"refresh\",value:function refresh(pivotRoute){var previousTransition=this.activeTransition;var state=previousTransition?previousTransition[STATE_SYMBOL]:this.state;var routeInfos=state.routeInfos;if(pivotRoute===undefined){pivotRoute=routeInfos[0].route;}_log(this,'Starting a refresh transition');var name=routeInfos[routeInfos.length-1].name;var intent=new NamedTransitionIntent(this,name,pivotRoute,[],this._changedQueryParams||state.queryParams);var newTransition=this.transitionByIntent(intent,false);// if the previous transition is a replace transition, that needs to be preserved\nif(previousTransition&&previousTransition.urlMethod==='replace'){newTransition.method(previousTransition.urlMethod);}return newTransition;}/**\n              Identical to `transitionTo` except that the current URL will be replaced\n              if possible.\n                 This method is intended primarily for use with `replaceState`.\n                 @param {String} name the name of the route\n            */},{key:\"replaceWith\",value:function replaceWith(name){return this.doTransition(name).method('replace');}/**\n              Take a named route and context objects and generate a\n              URL.\n                 @param {String} name the name of the route to generate\n                a URL for\n              @param {...Object} objects a list of objects to serialize\n                 @return {String} a URL\n            */},{key:\"generate\",value:function generate(routeName){for(var _len69=arguments.length,args=new Array(_len69>1?_len69-1:0),_key65=1;_key65<_len69;_key65++){args[_key65-1]=arguments[_key65];}var partitionedArgs=extractQueryParams(args),suppliedParams=partitionedArgs[0],queryParams=partitionedArgs[1];// Construct a TransitionIntent with the provided params\n// and apply it to the present state of the router.\nvar intent=new NamedTransitionIntent(this,routeName,undefined,suppliedParams);var state=intent.applyToState(this.state,false);var params={};for(var i=0,_len70=state.routeInfos.length;i<_len70;++i){var routeInfo=state.routeInfos[i];var routeParams=routeInfo.serialize();merge(params,routeParams);}params.queryParams=queryParams;return this.recognizer.generate(routeName,params);}},{key:\"applyIntent\",value:function applyIntent(routeName,contexts){var intent=new NamedTransitionIntent(this,routeName,undefined,contexts);var state=this.activeTransition&&this.activeTransition[STATE_SYMBOL]||this.state;return intent.applyToState(state,false);}},{key:\"isActiveIntent\",value:function isActiveIntent(routeName,contexts,queryParams,_state){var state=_state||this.state,targetRouteInfos=state.routeInfos,routeInfo,len;if(!targetRouteInfos.length){return false;}var targetHandler=targetRouteInfos[targetRouteInfos.length-1].name;var recognizerHandlers=this.recognizer.handlersFor(targetHandler);var index=0;for(len=recognizerHandlers.length;index<len;++index){routeInfo=targetRouteInfos[index];if(routeInfo.name===routeName){break;}}if(index===recognizerHandlers.length){// The provided route name isn't even in the route hierarchy.\nreturn false;}var testState=new TransitionState();testState.routeInfos=targetRouteInfos.slice(0,index+1);recognizerHandlers=recognizerHandlers.slice(0,index+1);var intent=new NamedTransitionIntent(this,targetHandler,undefined,contexts);var newState=intent.applyToHandlers(testState,recognizerHandlers,targetHandler,true,true);var routesEqual=routeInfosEqual(newState.routeInfos,testState.routeInfos);if(!queryParams||!routesEqual){return routesEqual;}// Get a hash of QPs that will still be active on new route\nvar activeQPsOnNewHandler={};merge(activeQPsOnNewHandler,queryParams);var activeQueryParams=state.queryParams;for(var key in activeQueryParams){if(activeQueryParams.hasOwnProperty(key)&&activeQPsOnNewHandler.hasOwnProperty(key)){activeQPsOnNewHandler[key]=activeQueryParams[key];}}return routesEqual&&!getChangelist(activeQPsOnNewHandler,queryParams);}},{key:\"isActive\",value:function isActive(routeName){for(var _len71=arguments.length,args=new Array(_len71>1?_len71-1:0),_key66=1;_key66<_len71;_key66++){args[_key66-1]=arguments[_key66];}var _extractQueryParams=extractQueryParams(args),_extractQueryParams2=_slicedToArray(_extractQueryParams,2),contexts=_extractQueryParams2[0],queryParams=_extractQueryParams2[1];return this.isActiveIntent(routeName,contexts,queryParams);}},{key:\"trigger\",value:function trigger(name){for(var _len72=arguments.length,args=new Array(_len72>1?_len72-1:0),_key67=1;_key67<_len72;_key67++){args[_key67-1]=arguments[_key67];}this.triggerEvent(this.currentRouteInfos,false,name,args);}}]);}();function routeInfosEqual(routeInfos,otherRouteInfos){if(routeInfos.length!==otherRouteInfos.length){return false;}for(var i=0,_len73=routeInfos.length;i<_len73;++i){// SAFETY: Just casting for comparison\nif(routeInfos[i]!==otherRouteInfos[i]){return false;}}return true;}function routeInfosSameExceptQueryParams(routeInfos,otherRouteInfos){if(routeInfos.length!==otherRouteInfos.length){return false;}for(var i=0,_len74=routeInfos.length;i<_len74;++i){if(routeInfos[i].name!==otherRouteInfos[i].name){return false;}if(!paramsEqual(routeInfos[i].params,otherRouteInfos[i].params)){return false;}}return true;}function paramsEqual(params,otherParams){if(params===otherParams){// Both identical or both undefined\nreturn true;}if(!params||!otherParams){// One is falsy but other is not\nreturn false;}var keys=Object.keys(params);var otherKeys=Object.keys(otherParams);if(keys.length!==otherKeys.length){return false;}for(var i=0,_len75=keys.length;i<_len75;++i){var key=keys[i];if(params[key]!==otherParams[key]){return false;}}return true;}var routerJs=/*#__PURE__*/Object.defineProperty({__proto__:null,InternalRouteInfo:InternalRouteInfo,InternalTransition:Transition,PARAMS_SYMBOL:PARAMS_SYMBOL,QUERY_PARAMS_SYMBOL:QUERY_PARAMS_SYMBOL,STATE_SYMBOL:STATE_SYMBOL,TransitionError:TransitionError,TransitionState:TransitionState,default:Router,logAbort:logAbort},Symbol.toStringTag,{value:'Module'});var ALL_PERIODS_REGEX=/\\./g;function extractRouteArgs(args){// SAFETY: This should just be the same thing\nargs=args.slice();var possibleOptions=args[args.length-1];var queryParams;if(isRouteOptions(possibleOptions)){args.pop();// Remove options\nqueryParams=possibleOptions.queryParams;}else{queryParams={};}var routeName;if(typeof args[0]==='string'){routeName=args.shift();// We just checked this!\n!(typeof routeName==='string')&&assert$1('routeName is a string',typeof routeName==='string');}// SAFTEY: We removed the name and options if they existed, only models left.\nvar models=args;return{routeName:routeName,models:models,queryParams:queryParams};}function getActiveTargetName(router){var routeInfos=router.activeTransition?router.activeTransition[STATE_SYMBOL].routeInfos:router.state.routeInfos;var lastRouteInfo=routeInfos[routeInfos.length-1];!lastRouteInfo&&assert$1('has last route info',lastRouteInfo);return lastRouteInfo.name;}function stashParamNames(router,routeInfos){if(routeInfos['_namesStashed']){return;}// This helper exists because router.js/route-recognizer.js awkwardly\n// keeps separate a routeInfo's list of parameter names depending\n// on whether a URL transition or named transition is happening.\n// Hopefully we can remove this in the future.\nvar routeInfo=routeInfos[routeInfos.length-1];!routeInfo&&assert$1('has route info',routeInfo);var targetRouteName=routeInfo.name;var recogHandlers=router._routerMicrolib.recognizer.handlersFor(targetRouteName);var dynamicParent;for(var i=0;i<routeInfos.length;++i){var _routeInfo2=routeInfos[i];!_routeInfo2&&assert$1('has route info',_routeInfo2);var names=recogHandlers[i].names;if(names.length){dynamicParent=_routeInfo2;}_routeInfo2['_names']=names;var route=_routeInfo2.route;route._stashNames(_routeInfo2,dynamicParent);}routeInfos['_namesStashed']=true;}function _calculateCacheValuePrefix(prefix,part){// calculates the dot separated sections from prefix that are also\n// at the start of part - which gives us the route name\n// given : prefix = site.article.comments, part = site.article.id\n//      - returns: site.article (use get(values[site.article], 'id') to get the dynamic part - used below)\n// given : prefix = site.article, part = site.article.id\n//      - returns: site.article. (use get(values[site.article], 'id') to get the dynamic part - used below)\nvar prefixParts=prefix.split('.');var currPrefix='';for(var i=0;i<prefixParts.length;i++){var currPart=prefixParts.slice(0,i+1).join('.');if(part.indexOf(currPart)!==0){break;}currPrefix=currPart;}return currPrefix;}/*\n            Stolen from Controller\n          */function calculateCacheKey(prefix){var parts=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var values=arguments.length>2?arguments[2]:undefined;var suffixes='';var _iterator58=_createForOfIteratorHelper(parts),_step58;try{for(_iterator58.s();!(_step58=_iterator58.n()).done;){var part=_step58.value;var cacheValuePrefix=_calculateCacheValuePrefix(prefix,part);var value=void 0;if(values){if(cacheValuePrefix&&cacheValuePrefix in values){var partRemovedPrefix=part.indexOf(cacheValuePrefix)===0?part.substring(cacheValuePrefix.length+1):part;value=get$2(values[cacheValuePrefix],partRemovedPrefix);}else{value=get$2(values,part);}}suffixes+=\"::\".concat(part,\":\").concat(value);}}catch(err){_iterator58.e(err);}finally{_iterator58.f();}return prefix+suffixes.replace(ALL_PERIODS_REGEX,'-');}/*\n            Controller-defined query parameters can come in three shapes:\n\n            Array\n              queryParams: ['foo', 'bar']\n            Array of simple objects where value is an alias\n              queryParams: [\n                {\n                  'foo': 'rename_foo_to_this'\n                },\n                {\n                  'bar': 'call_bar_this_instead'\n                }\n              ]\n            Array of fully defined objects\n              queryParams: [\n                {\n                  'foo': {\n                    as: 'rename_foo_to_this'\n                  },\n                }\n                {\n                  'bar': {\n                    as: 'call_bar_this_instead',\n                    scope: 'controller'\n                  }\n                }\n              ]\n\n            This helper normalizes all three possible styles into the\n            'Array of fully defined objects' style.\n          */function normalizeControllerQueryParams(queryParams){var qpMap={};var _iterator59=_createForOfIteratorHelper(queryParams),_step59;try{for(_iterator59.s();!(_step59=_iterator59.n()).done;){var queryParam=_step59.value;accumulateQueryParamDescriptors(queryParam,qpMap);}}catch(err){_iterator59.e(err);}finally{_iterator59.f();}return qpMap;}function accumulateQueryParamDescriptors(_desc,accum){var desc=typeof _desc==='string'?_defineProperty({},_desc,{as:null}):_desc;for(var key in desc){if(!Object.prototype.hasOwnProperty.call(desc,key)){return;}var _singleDesc=desc[key];var singleDesc=typeof _singleDesc==='string'?{as:_singleDesc}:_singleDesc;var partialVal=accum[key]||{as:null,scope:'model'};var val=_objectSpread(_objectSpread({},partialVal),singleDesc);accum[key]=val;}}/*\n            Check if a routeName resembles a url instead\n\n            @private\n          */function resemblesURL(str){return typeof str==='string'&&(str===''||str[0]==='/');}/*\n            Returns an arguments array where the route name arg is prefixed based on the mount point\n\n            @private\n          */function prefixRouteNameArg(route,args){var routeName;var owner=getOwner$2(route);!(owner instanceof EngineInstance)&&assert$1('Expected route to have EngineInstance as owner',owner instanceof EngineInstance);var prefix=owner.mountPoint;// only alter the routeName if it's actually referencing a route.\nif(owner.routable&&typeof args[0]==='string'){routeName=args[0];if(resemblesURL(routeName)){throw new Error('Programmatic transitions by URL cannot be used within an Engine. Please use the route name instead.');}else{routeName=\"\".concat(prefix,\".\").concat(routeName);args[0]=routeName;}}return args;}function shallowEqual(a,b){var aCount=0;var bCount=0;for(var kA in a){if(Object.prototype.hasOwnProperty.call(a,kA)){if(a[kA]!==b[kA]){return false;}aCount++;}}for(var kB in b){if(Object.prototype.hasOwnProperty.call(b,kB)){bCount++;}}return aCount===bCount;}function isRouteOptions(value){if(value&&_typeof(value)==='object'){var qps=value.queryParams;if(qps&&_typeof(qps)==='object'){return Object.keys(qps).every(function(k){return typeof k==='string';});}}return false;}var emberRoutingLibUtils=/*#__PURE__*/Object.defineProperty({__proto__:null,calculateCacheKey:calculateCacheKey,extractRouteArgs:extractRouteArgs,getActiveTargetName:getActiveTargetName,normalizeControllerQueryParams:normalizeControllerQueryParams,prefixRouteNameArg:prefixRouteNameArg,resemblesURL:resemblesURL,shallowEqual:shallowEqual,stashParamNames:stashParamNames},Symbol.toStringTag,{value:'Module'});var RouterState=/*#__PURE__*/function(){function RouterState(emberRouter,router,routerJsState){_classCallCheck(this,RouterState);_defineProperty(this,\"router\",void 0);_defineProperty(this,\"emberRouter\",void 0);_defineProperty(this,\"routerJsState\",void 0);this.emberRouter=emberRouter;this.router=router;this.routerJsState=routerJsState;}return _createClass(RouterState,[{key:\"isActiveIntent\",value:function isActiveIntent(routeName,models,queryParams){var state=this.routerJsState;if(!this.router.isActiveIntent(routeName,models,undefined,state)){return false;}if(queryParams!==undefined&&Object.keys(queryParams).length>0){var visibleQueryParams=Object.assign({},queryParams);this.emberRouter._prepareQueryParams(routeName,models,visibleQueryParams);return shallowEqual(visibleQueryParams,state.queryParams);}return true;}}]);}();var emberRoutingLibRouterState=/*#__PURE__*/Object.defineProperty({__proto__:null,default:RouterState},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object\n          */function expandPropertiesToArray(predicateName,properties){var expandedProperties=[];function extractProperty(entry){expandedProperties.push(entry);}var _iterator60=_createForOfIteratorHelper(properties),_step60;try{for(_iterator60.s();!(_step60=_iterator60.n()).done;){var property=_step60.value;!(property.indexOf(' ')<0)&&assert$1(\"Dependent keys passed to `\".concat(predicateName,\"` computed macro can't have spaces.\"),property.indexOf(' ')<0);expandProperties(property,extractProperty);}}catch(err){_iterator60.e(err);}finally{_iterator60.f();}return expandedProperties;}function generateComputedWithPredicate(name,predicate){return function(dependentKey){for(var _len76=arguments.length,additionalDependentKeys=new Array(_len76>1?_len76-1:0),_key68=1;_key68<_len76;_key68++){additionalDependentKeys[_key68-1]=arguments[_key68];}var properties=[dependentKey].concat(additionalDependentKeys);!!isElementDescriptor(properties)&&assert$1(\"You attempted to use @\".concat(name,\" as a decorator directly, but it requires at least one dependent key parameter\"),!isElementDescriptor(properties));var dependentKeys=expandPropertiesToArray(name,properties);var computedFunc=computed.apply(void 0,_toConsumableArray(dependentKeys).concat([function(){var lastIdx=dependentKeys.length-1;for(var i=0;i<lastIdx;i++){// SAFETY: `i` is derived from the length of `dependentKeys`\nvar value=get$2(this,dependentKeys[i]);if(!predicate(value)){return value;}}// SAFETY: `lastIdx` is derived from the length of `dependentKeys`\nreturn get$2(this,dependentKeys[lastIdx]);}]));return computedFunc;};}/**\n            A computed property macro that returns true if the value of the dependent\n            property is null, an empty string, empty array, or empty function.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { empty } from '@ember/object/computed';\n\n            class ToDoList {\n              constructor(todos) {\n                set(this, 'todos', todos);\n              }\n\n              @empty('todos') isDone;\n            }\n\n            let todoList = new ToDoList(\n              ['Unit Test', 'Documentation', 'Release']\n            );\n\n            todoList.isDone; // false\n            set(todoList, 'todos', []);\n            todoList.isDone; // true\n            ```\n\n            @since 1.6.0\n            @method empty\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which returns true if the value\n            of the dependent property is null, an empty string, empty array, or empty\n            function and false if the underlying value is not empty.\n\n            @public\n          */function empty(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @empty as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(\"\".concat(dependentKey,\".length\"),function(){return isEmpty(get$2(this,dependentKey));});}/**\n            A computed property that returns true if the value of the dependent property\n            is NOT null, an empty string, empty array, or empty function.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { notEmpty } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(backpack) {\n                set(this, 'backpack', backpack);\n              }\n\n              @notEmpty('backpack') hasStuff\n            }\n\n            let hamster = new Hamster(\n              ['Food', 'Sleeping Bag', 'Tent']\n            );\n\n            hamster.hasStuff; // true\n            set(hamster, 'backpack', []);\n            hamster.hasStuff; // false\n            ```\n\n            @method notEmpty\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which returns true if original\n            value for property is not empty.\n            @public\n          */function notEmpty(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @notEmpty as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(\"\".concat(dependentKey,\".length\"),function(){return!isEmpty(get$2(this,dependentKey));});}/**\n            A computed property that returns true if the value of the dependent property\n            is null or undefined. This avoids errors from JSLint complaining about use of\n            ==, which can be technically confusing.\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { none } from '@ember/object/computed';\n\n            class Hamster {\n              @none('food') isHungry;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.isHungry; // true\n\n            set(hamster, 'food', 'Banana');\n            hamster.isHungry; // false\n\n            set(hamster, 'food', null);\n            hamster.isHungry; // true\n            ```\n\n            @method none\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which returns true if original\n            value for property is null or undefined.\n            @public\n          */function none(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @none as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return isNone(get$2(this,dependentKey));});}/**\n            A computed property that returns the inverse boolean value of the original\n            value for the dependent property.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { not } from '@ember/object/computed';\n\n            class User {\n              loggedIn = false;\n\n              @not('loggedIn') isAnonymous;\n            }\n\n            let user = new User();\n\n            user.isAnonymous; // true\n            set(user, 'loggedIn', true);\n            user.isAnonymous; // false\n            ```\n\n            @method not\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which returns inverse of the\n            original value for property\n            @public\n          */function not(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @not as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return!get$2(this,dependentKey);});}/**\n            A computed property that converts the provided dependent property into a\n            boolean value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { bool } from '@ember/object/computed';\n\n\n            class Hamster {\n              @bool('numBananas') hasBananas\n            }\n\n            let hamster = new Hamster();\n\n            hamster.hasBananas; // false\n\n            set(hamster, 'numBananas', 0);\n            hamster.hasBananas; // false\n\n            set(hamster, 'numBananas', 1);\n            hamster.hasBananas; // true\n\n            set(hamster, 'numBananas', null);\n            hamster.hasBananas; // false\n            ```\n\n            @method bool\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which converts to boolean the\n            original value for property\n            @public\n          */function bool(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @bool as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return Boolean(get$2(this,dependentKey));});}/**\n            A computed property which matches the original value for the dependent\n            property against a given RegExp, returning `true` if the value matches the\n            RegExp and `false` if it does not.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { match } from '@ember/object/computed';\n\n            class User {\n              @match('email', /^.+@.+\\..+$/) hasValidEmail;\n            }\n\n            let user = new User();\n\n            user.hasValidEmail; // false\n\n            set(user, 'email', '');\n            user.hasValidEmail; // false\n\n            set(user, 'email', 'ember_hamster@example.com');\n            user.hasValidEmail; // true\n            ```\n\n            @method match\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {RegExp} regexp\n            @return {ComputedProperty} computed property which match the original value\n            for property against a given RegExp\n            @public\n          */function match(dependentKey,regexp){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @match as a decorator directly, but it requires `dependentKey` and `regexp` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){var value=get$2(this,dependentKey);return regexp.test(value);});}/**\n            A computed property that returns true if the provided dependent property is\n            equal to the given value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { equal } from '@ember/object/computed';\n\n            class Hamster {\n              @equal('percentCarrotsEaten', 100) satisfied;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.satisfied; // false\n\n            set(hamster, 'percentCarrotsEaten', 100);\n            hamster.satisfied; // true\n\n            set(hamster, 'percentCarrotsEaten', 50);\n            hamster.satisfied; // false\n            ```\n\n            @method equal\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {String|Number|Object} value\n            @return {ComputedProperty} computed property which returns true if the\n            original value for property is equal to the given value.\n            @public\n          */function equal(dependentKey,value){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @equal as a decorator directly, but it requires `dependentKey` and `value` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return get$2(this,dependentKey)===value;});}/**\n            A computed property that returns true if the provided dependent property is\n            greater than the provided value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { gt } from '@ember/object/computed';\n\n            class Hamster {\n              @gt('numBananas', 10) hasTooManyBananas;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.hasTooManyBananas; // false\n\n            set(hamster, 'numBananas', 3);\n            hamster.hasTooManyBananas; // false\n\n            set(hamster, 'numBananas', 11);\n            hamster.hasTooManyBananas; // true\n            ```\n\n            @method gt\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {Number} value\n            @return {ComputedProperty} computed property which returns true if the\n            original value for property is greater than given value.\n            @public\n          */function gt(dependentKey,value){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @gt as a decorator directly, but it requires `dependentKey` and `value` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return get$2(this,dependentKey)>value;});}/**\n            A computed property that returns true if the provided dependent property is\n            greater than or equal to the provided value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { gte } from '@ember/object/computed';\n\n            class Hamster {\n              @gte('numBananas', 10) hasTooManyBananas;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.hasTooManyBananas; // false\n\n            set(hamster, 'numBananas', 3);\n            hamster.hasTooManyBananas; // false\n\n            set(hamster, 'numBananas', 10);\n            hamster.hasTooManyBananas; // true\n            ```\n\n            @method gte\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {Number} value\n            @return {ComputedProperty} computed property which returns true if the\n            original value for property is greater or equal then given value.\n            @public\n          */function gte(dependentKey,value){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @gte as a decorator directly, but it requires `dependentKey` and `value` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return get$2(this,dependentKey)>=value;});}/**\n            A computed property that returns true if the provided dependent property is\n            less than the provided value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { lt } from '@ember/object/computed';\n\n            class Hamster {\n              @lt('numBananas', 3) needsMoreBananas;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.needsMoreBananas; // true\n\n            set(hamster, 'numBananas', 3);\n            hamster.needsMoreBananas; // false\n\n            set(hamster, 'numBananas', 2);\n            hamster.needsMoreBananas; // true\n            ```\n\n            @method lt\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {Number} value\n            @return {ComputedProperty} computed property which returns true if the\n            original value for property is less then given value.\n            @public\n          */function lt(dependentKey,value){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @lt as a decorator directly, but it requires `dependentKey` and `value` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return get$2(this,dependentKey)<value;});}/**\n            A computed property that returns true if the provided dependent property is\n            less than or equal to the provided value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { lte } from '@ember/object/computed';\n\n            class Hamster {\n              @lte('numBananas', 3) needsMoreBananas;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.needsMoreBananas; // true\n\n            set(hamster, 'numBananas', 5);\n            hamster.needsMoreBananas; // false\n\n            set(hamster, 'numBananas', 3);\n            hamster.needsMoreBananas; // true\n            ```\n\n            @method lte\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {Number} value\n            @return {ComputedProperty} computed property which returns true if the\n            original value for property is less or equal than given value.\n            @public\n          */function lte(dependentKey,value){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @lte as a decorator directly, but it requires `dependentKey` and `value` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,function(){return get$2(this,dependentKey)<=value;});}/**\n            A computed property that performs a logical `and` on the original values for\n            the provided dependent properties.\n\n            You may pass in more than two properties and even use property brace\n            expansion.  The computed property will return the first falsy value or last\n            truthy value just like JavaScript's `&&` operator.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { and } from '@ember/object/computed';\n\n            class Hamster {\n              @and('hasTent', 'hasBackpack') readyForCamp;\n              @and('hasWalkingStick', 'hasBackpack') readyForHike;\n            }\n\n            let tomster = new Hamster();\n\n            tomster.readyForCamp; // false\n\n            set(tomster, 'hasTent', true);\n            tomster.readyForCamp; // false\n\n            set(tomster, 'hasBackpack', true);\n            tomster.readyForCamp; // true\n\n            set(tomster, 'hasBackpack', 'Yes');\n            tomster.readyForCamp; // 'Yes'\n\n            set(tomster, 'hasWalkingStick', null);\n            tomster.readyForHike; // null\n            ```\n\n            @method and\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey*\n            @return {ComputedProperty} computed property which performs a logical `and` on\n            the values of all the original values for properties.\n            @public\n          */var and=generateComputedWithPredicate('and',function(value){return value;});/**\n            A computed property which performs a logical `or` on the original values for\n            the provided dependent properties.\n\n            You may pass in more than two properties and even use property brace\n            expansion.  The computed property will return the first truthy value or last\n            falsy value just like JavaScript's `||` operator.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { or } from '@ember/object/computed';\n\n            class Hamster {\n              @or('hasJacket', 'hasUmbrella') readyForRain;\n              @or('hasSunscreen', 'hasUmbrella') readyForBeach;\n            }\n\n            let tomster = new Hamster();\n\n            tomster.readyForRain; // undefined\n\n            set(tomster, 'hasUmbrella', true);\n            tomster.readyForRain; // true\n\n            set(tomster, 'hasJacket', 'Yes');\n            tomster.readyForRain; // 'Yes'\n\n            set(tomster, 'hasSunscreen', 'Check');\n            tomster.readyForBeach; // 'Check'\n            ```\n\n            @method or\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey*\n            @return {ComputedProperty} computed property which performs a logical `or` on\n            the values of all the original values for properties.\n            @public\n          */var or=generateComputedWithPredicate('or',function(value){return!value;});/**\n            Creates a new property that is an alias for another property on an object.\n            Calls to `get` or `set` this property behave as though they were called on the\n            original property.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { alias } from '@ember/object/computed';\n\n            class Person {\n              name = 'Alex Matchneer';\n\n              @alias('name') nomen;\n            }\n\n            let alex = new Person();\n\n            alex.nomen; // 'Alex Matchneer'\n            alex.name;  // 'Alex Matchneer'\n\n            set(alex, 'nomen', '@machty');\n            alex.name;  // '@machty'\n            ```\n\n            @method alias\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which creates an alias to the\n            original value for property.\n            @public\n          *//**\n            Where the `alias` computed macro aliases `get` and `set`, and allows for\n            bidirectional data flow, the `oneWay` computed macro only provides an aliased\n            `get`. The `set` will not mutate the upstream property, rather causes the\n            current property to become the value set. This causes the downstream property\n            to permanently diverge from the upstream property.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { oneWay }from '@ember/object/computed';\n\n            class User {\n              constructor(firstName, lastName) {\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n\n              @oneWay('firstName') nickName;\n            }\n\n            let teddy = new User('Teddy', 'Zeenny');\n\n            teddy.nickName; // 'Teddy'\n\n            set(teddy, 'nickName', 'TeddyBear');\n            teddy.firstName; // 'Teddy'\n            teddy.nickName; // 'TeddyBear'\n            ```\n\n            @method oneWay\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which creates a one way computed\n            property to the original value for property.\n            @public\n          */function oneWay(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @oneWay as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return alias(dependentKey).oneWay();}/**\n            This is a more semantically meaningful alias of the `oneWay` computed macro,\n            whose name is somewhat ambiguous as to which direction the data flows.\n\n            @method reads\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which creates a one way computed\n              property to the original value for property.\n            @public\n           *//**\n            Where `oneWay` computed macro provides oneWay bindings, the `readOnly`\n            computed macro provides a readOnly one way binding. Very often when using\n            the `oneWay` macro one does not also want changes to propagate back up, as\n            they will replace the value.\n\n            This prevents the reverse flow, and also throws an exception when it occurs.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { readOnly } from '@ember/object/computed';\n\n            class User {\n              constructor(firstName, lastName) {\n                set(this, 'firstName', firstName);\n                set(this, 'lastName', lastName);\n              }\n\n              @readOnly('firstName') nickName;\n            });\n\n            let teddy = new User('Teddy', 'Zeenny');\n\n            teddy.nickName; // 'Teddy'\n\n            set(teddy, 'nickName', 'TeddyBear'); // throws Exception\n            // throw new EmberError('Cannot Set: nickName on: <User:ember27288>' );`\n\n            teddy.firstName; // 'Teddy'\n            ```\n\n            @method readOnly\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @return {ComputedProperty} computed property which creates a one way computed\n            property to the original value for property.\n            @since 1.5.0\n            @public\n          */function readOnly(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @readOnly as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return alias(dependentKey).readOnly();}/**\n            Creates a new property that is an alias for another property on an object.\n            Calls to `get` or `set` this property behave as though they were called on the\n            original property, but also print a deprecation warning.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { deprecatingAlias } from '@ember/object/computed';\n\n            class Hamster {\n              @deprecatingAlias('cavendishCount', {\n                id: 'hamster.deprecate-banana',\n                until: '3.0.0'\n              })\n              bananaCount;\n            }\n\n            let hamster = new Hamster();\n\n            set(hamster, 'bananaCount', 5); // Prints a deprecation warning.\n            hamster.cavendishCount; // 5\n            ```\n\n            @method deprecatingAlias\n            @static\n            @for @ember/object/computed\n            @param {String} dependentKey\n            @param {Object} options Options for `deprecate`.\n            @return {ComputedProperty} computed property which creates an alias with a\n            deprecation to the original value for property.\n            @since 1.7.0\n            @public\n          */function deprecatingAlias(dependentKey,options){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @deprecatingAlias as a decorator directly, but it requires `dependentKey` and `options` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));return computed(dependentKey,{get:function get(key){deprecate$1(\"Usage of `\".concat(key,\"` is deprecated, use `\").concat(dependentKey,\"` instead.\"),false,options);return get$2(this,dependentKey);},set:function set(key,value){deprecate$1(\"Usage of `\".concat(key,\"` is deprecated, use `\").concat(dependentKey,\"` instead.\"),false,options);_set5(this,dependentKey,value);return value;}});}var emberObjectLibComputedComputedMacros=/*#__PURE__*/Object.defineProperty({__proto__:null,and:and,bool:bool,deprecatingAlias:deprecatingAlias,empty:empty,equal:equal,gt:gt,gte:gte,lt:lt,lte:lte,match:match,none:none,not:not,notEmpty:notEmpty,oneWay:oneWay,or:or,readOnly:readOnly},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object\n          */function isNativeOrEmberArray(obj){return Array.isArray(obj)||EmberArray.detect(obj);}function reduceMacro(dependentKey,callback,initialValue,name){!!/[[\\]{}]/g.test(dependentKey)&&assert$1(\"Dependent key passed to `\".concat(name,\"` computed macro shouldn't contain brace expanding pattern.\"),!/[[\\]{}]/g.test(dependentKey));return computed(\"\".concat(dependentKey,\".[]\"),function(){var arr=get$2(this,dependentKey);if(arr===null||_typeof(arr)!=='object'){return initialValue;}return arr.reduce(callback,initialValue,this);}).readOnly();}function arrayMacro(dependentKey,additionalDependentKeys,callback){// This is a bit ugly\nvar propertyName;if(/@each/.test(dependentKey)){propertyName=dependentKey.replace(/\\.@each.*$/,'');}else{propertyName=dependentKey;dependentKey+='.[]';}return computed.apply(void 0,[dependentKey].concat(_toConsumableArray(additionalDependentKeys),[function(){var value=get$2(this,propertyName);if(isNativeOrEmberArray(value)){return _A2(callback.call(this,value));}else{return _A2();}}])).readOnly();}function multiArrayMacro(_dependentKeys,callback,name){!_dependentKeys.every(function(dependentKey){return!/[[\\]{}]/g.test(dependentKey);})&&assert$1(\"Dependent keys passed to `\".concat(name,\"` computed macro shouldn't contain brace expanding pattern.\"),_dependentKeys.every(function(dependentKey){return!/[[\\]{}]/g.test(dependentKey);}));var dependentKeys=_dependentKeys.map(function(key){return\"\".concat(key,\".[]\");});return computed.apply(void 0,_toConsumableArray(dependentKeys).concat([function(){return _A2(callback.call(this,_dependentKeys));}])).readOnly();}/**\n            A computed property that returns the sum of the values in the dependent array.\n\n            Example:\n\n            ```javascript\n            import { sum } from '@ember/object/computed';\n\n            class Invoice {\n              lineItems = [1.00, 2.50, 9.99];\n\n              @sum('lineItems') total;\n            }\n\n            let invoice = new Invoice();\n\n            invoice.total; // 13.49\n            ```\n\n            @method sum\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @return {ComputedProperty} computes the sum of all values in the\n            dependentKey's array\n            @since 1.4.0\n            @public\n          */function sum(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @sum as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return reduceMacro(dependentKey,function(sum,item){return sum+item;},0,'sum');}/**\n            A computed property that calculates the maximum value in the dependent array.\n            This will return `-Infinity` when the dependent array is empty.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { mapBy, max } from '@ember/object/computed';\n\n            class Person {\n              children = [];\n\n              @mapBy('children', 'age') childAges;\n              @max('childAges') maxChildAge;\n            }\n\n            let lordByron = new Person();\n\n            lordByron.maxChildAge; // -Infinity\n\n            set(lordByron, 'children', [\n              {\n                name: 'Augusta Ada Byron',\n                age: 7\n              }\n            ]);\n            lordByron.maxChildAge; // 7\n\n            set(lordByron, 'children', [\n              ...lordByron.children,\n              {\n                name: 'Allegra Byron',\n                age: 5\n              }, {\n                name: 'Elizabeth Medora Leigh',\n                age: 8\n              }\n            ]);\n            lordByron.maxChildAge; // 8\n            ```\n\n            If the types of the arguments are not numbers, they will be converted to\n            numbers and the type of the return value will always be `Number`. For example,\n            the max of a list of Date objects will be the highest timestamp as a `Number`.\n            This behavior is consistent with `Math.max`.\n\n            @method max\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @return {ComputedProperty} computes the largest value in the dependentKey's\n            array\n            @public\n          */function max(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @max as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return reduceMacro(dependentKey,function(max,item){return Math.max(max,item);},-Infinity,'max');}/**\n            A computed property that calculates the minimum value in the dependent array.\n            This will return `Infinity` when the dependent array is empty.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { mapBy, min } from '@ember/object/computed';\n\n            class Person {\n              children = [];\n\n              @mapBy('children', 'age') childAges;\n              @min('childAges') minChildAge;\n            }\n\n            let lordByron = Person.create({ children: [] });\n\n            lordByron.minChildAge; // Infinity\n\n            set(lordByron, 'children', [\n              {\n                name: 'Augusta Ada Byron',\n                age: 7\n              }\n            ]);\n            lordByron.minChildAge; // 7\n\n            set(lordByron, 'children', [\n              ...lordByron.children,\n              {\n                name: 'Allegra Byron',\n                age: 5\n              }, {\n                name: 'Elizabeth Medora Leigh',\n                age: 8\n              }\n            ]);\n            lordByron.minChildAge; // 5\n            ```\n\n            If the types of the arguments are not numbers, they will be converted to\n            numbers and the type of the return value will always be `Number`. For example,\n            the min of a list of Date objects will be the lowest timestamp as a `Number`.\n            This behavior is consistent with `Math.min`.\n\n            @method min\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @return {ComputedProperty} computes the smallest value in the dependentKey's array\n            @public\n          */function min(dependentKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @min as a decorator directly, but it requires a `dependentKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));return reduceMacro(dependentKey,function(min,item){return Math.min(min,item);},Infinity,'min');}/**\n            Returns an array mapped via the callback\n\n            The callback method you provide should have the following signature:\n            - `item` is the current item in the iteration.\n            - `index` is the integer index of the current item in the iteration.\n\n            ```javascript\n            function mapCallback(item, index);\n            ```\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { map } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(chores) {\n                set(this, 'chores', chores);\n              }\n\n              @map('chores', function(chore, index) {\n                return `${chore.toUpperCase()}!`;\n              })\n              excitingChores;\n            });\n\n            let hamster = new Hamster(['clean', 'write more unit tests']);\n\n            hamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n            ```\n\n            You can optionally pass an array of additional dependent keys as the second\n            parameter to the macro, if your map function relies on any external values:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { map } from '@ember/object/computed';\n\n            class Hamster {\n              shouldUpperCase = false;\n\n              constructor(chores) {\n                set(this, 'chores', chores);\n              }\n\n              @map('chores', ['shouldUpperCase'], function(chore, index) {\n                if (this.shouldUpperCase) {\n                  return `${chore.toUpperCase()}!`;\n                } else {\n                  return `${chore}!`;\n                }\n              })\n              excitingChores;\n            }\n\n            let hamster = new Hamster(['clean', 'write more unit tests']);\n\n            hamster.excitingChores; // ['clean!', 'write more unit tests!']\n\n            set(hamster, 'shouldUpperCase', true);\n            hamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n            ```\n\n            @method map\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @param {Array} [additionalDependentKeys] optional array of additional\n            dependent keys\n            @param {Function} callback\n            @return {ComputedProperty} an array mapped via the callback\n            @public\n          */function map(dependentKey,additionalDependentKeysOrCallback,callback){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @map as a decorator directly, but it requires atleast `dependentKey` and `callback` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));!(typeof callback==='function'||callback===undefined&&typeof additionalDependentKeysOrCallback==='function')&&assert$1('The final parameter provided to map must be a callback function',typeof callback==='function'||callback===undefined&&typeof additionalDependentKeysOrCallback==='function');!(Array.isArray(additionalDependentKeysOrCallback)||typeof additionalDependentKeysOrCallback==='function')&&assert$1('The second parameter provided to map must either be the callback or an array of additional dependent keys',Array.isArray(additionalDependentKeysOrCallback)||typeof additionalDependentKeysOrCallback==='function');var additionalDependentKeys;if(typeof additionalDependentKeysOrCallback==='function'){callback=additionalDependentKeysOrCallback;additionalDependentKeys=[];}else{additionalDependentKeys=additionalDependentKeysOrCallback;}var cCallback=callback;!cCallback&&assert$1('[BUG] Missing callback',cCallback);return arrayMacro(dependentKey,additionalDependentKeys,function(value){// This is so dumb...\nreturn Array.isArray(value)?value.map(cCallback,this):value.map(cCallback,this);});}/**\n            Returns an array mapped to the specified key.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { mapBy } from '@ember/object/computed';\n\n            class Person {\n              children = [];\n\n              @mapBy('children', 'age') childAges;\n            }\n\n            let lordByron = new Person();\n\n            lordByron.childAges; // []\n\n            set(lordByron, 'children', [\n              {\n                name: 'Augusta Ada Byron',\n                age: 7\n              }\n            ]);\n            lordByron.childAges; // [7]\n\n            set(lordByron, 'children', [\n              ...lordByron.children,\n              {\n                name: 'Allegra Byron',\n                age: 5\n              }, {\n                name: 'Elizabeth Medora Leigh',\n                age: 8\n              }\n            ]);\n            lordByron.childAges; // [7, 5, 8]\n            ```\n\n            @method mapBy\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @param {String} propertyKey\n            @return {ComputedProperty} an array mapped to the specified key\n            @public\n          */function mapBy(dependentKey,propertyKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @mapBy as a decorator directly, but it requires `dependentKey` and `propertyKey` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));!(typeof propertyKey==='string')&&assert$1('`mapBy` computed macro expects a property string for its second argument, '+'perhaps you meant to use \"map\"',typeof propertyKey==='string');!!/[[\\]{}]/g.test(dependentKey)&&assert$1(\"Dependent key passed to `mapBy` computed macro shouldn't contain brace expanding pattern.\",!/[[\\]{}]/g.test(dependentKey));return map(\"\".concat(dependentKey,\".@each.\").concat(propertyKey),function(item){return get$2(item,propertyKey);});}/**\n            Filters the array by the callback, like the `Array.prototype.filter` method.\n\n            The callback method you provide should have the following signature:\n            - `item` is the current item in the iteration.\n            - `index` is the integer index of the current item in the iteration.\n            - `array` is the dependant array itself.\n\n            ```javascript\n            function filterCallback(item, index, array);\n            ```\n\n            In the callback, return a truthy value that coerces to true to keep the\n            element, or a falsy to reject it.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { filter } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(chores) {\n                set(this, 'chores', chores);\n              }\n\n              @filter('chores', function(chore, index, array) {\n                return !chore.done;\n              })\n              remainingChores;\n            }\n\n            let hamster = Hamster.create([\n              { name: 'cook', done: true },\n              { name: 'clean', done: true },\n              { name: 'write more unit tests', done: false }\n            ]);\n\n            hamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n            ```\n\n            You can also use `@each.property` in your dependent key, the callback will\n            still use the underlying array:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { filter } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(chores) {\n                set(this, 'chores', chores);\n              }\n\n              @filter('chores.@each.done', function(chore, index, array) {\n                return !chore.done;\n              })\n              remainingChores;\n            }\n\n            let hamster = new Hamster([\n              { name: 'cook', done: true },\n              { name: 'clean', done: true },\n              { name: 'write more unit tests', done: false }\n            ]);\n            hamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n\n            set(hamster.chores[2], 'done', true);\n            hamster.remainingChores; // []\n            ```\n\n            Finally, you can optionally pass an array of additional dependent keys as the\n            second parameter to the macro, if your filter function relies on any external\n            values:\n\n            ```javascript\n            import { filter } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(chores) {\n                set(this, 'chores', chores);\n              }\n\n              doneKey = 'finished';\n\n              @filter('chores', ['doneKey'], function(chore, index, array) {\n                return !chore[this.doneKey];\n              })\n              remainingChores;\n            }\n\n            let hamster = new Hamster([\n              { name: 'cook', finished: true },\n              { name: 'clean', finished: true },\n              { name: 'write more unit tests', finished: false }\n            ]);\n\n            hamster.remainingChores; // [{name: 'write more unit tests', finished: false}]\n            ```\n\n            @method filter\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @param {Array} [additionalDependentKeys] optional array of additional dependent keys\n            @param {Function} callback\n            @return {ComputedProperty} the filtered array\n            @public\n          */function filter(dependentKey,additionalDependentKeysOrCallback,callback){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @filter as a decorator directly, but it requires atleast `dependentKey` and `callback` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));!(typeof callback==='function'||callback===undefined&&typeof additionalDependentKeysOrCallback==='function')&&assert$1('The final parameter provided to filter must be a callback function',typeof callback==='function'||callback===undefined&&typeof additionalDependentKeysOrCallback==='function');!(Array.isArray(additionalDependentKeysOrCallback)||typeof additionalDependentKeysOrCallback==='function')&&assert$1('The second parameter provided to filter must either be the callback or an array of additional dependent keys',Array.isArray(additionalDependentKeysOrCallback)||typeof additionalDependentKeysOrCallback==='function');var additionalDependentKeys;if(typeof additionalDependentKeysOrCallback==='function'){callback=additionalDependentKeysOrCallback;additionalDependentKeys=[];}else{additionalDependentKeys=additionalDependentKeysOrCallback;}var cCallback=callback;return arrayMacro(dependentKey,additionalDependentKeys,function(value){// This is a really silly way to keep TS happy\nreturn Array.isArray(value)?value.filter(cCallback,this):value.filter(cCallback,this);});}/**\n            Filters the array by the property and value.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { filterBy } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(chores) {\n                set(this, 'chores', chores);\n              }\n\n              @filterBy('chores', 'done', false) remainingChores;\n            }\n\n            let hamster = new Hamster([\n              { name: 'cook', done: true },\n              { name: 'clean', done: true },\n              { name: 'write more unit tests', done: false }\n            ]);\n\n            hamster.remainingChores; // [{ name: 'write more unit tests', done: false }]\n            ```\n\n            @method filterBy\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @param {String} propertyKey\n            @param {*} value\n            @return {ComputedProperty} the filtered array\n            @public\n          */function filterBy(dependentKey,propertyKey,value){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @filterBy as a decorator directly, but it requires atleast `dependentKey` and `propertyKey` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));!!/[[\\]{}]/g.test(dependentKey)&&assert$1(\"Dependent key passed to `filterBy` computed macro shouldn't contain brace expanding pattern.\",!/[[\\]{}]/g.test(dependentKey));var callback;if(arguments.length===2){callback=function callback(item){return get$2(item,propertyKey);};}else{callback=function callback(item){return get$2(item,propertyKey)===value;};}return filter(\"\".concat(dependentKey,\".@each.\").concat(propertyKey),callback);}/**\n            A computed property which returns a new array with all the unique elements\n            from one or more dependent arrays.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { uniq } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(fruits) {\n                set(this, 'fruits', fruits);\n              }\n\n              @uniq('fruits') uniqueFruits;\n            }\n\n            let hamster = new Hamster([\n              'banana',\n              'grape',\n              'kale',\n              'banana'\n            ]);\n\n            hamster.uniqueFruits; // ['banana', 'grape', 'kale']\n            ```\n\n            @method uniq\n            @for @ember/object/computed\n            @static\n            @param {String} propertyKey*\n            @return {ComputedProperty} computes a new array with all the\n            unique elements from the dependent array\n            @public\n          */function uniq(dependentKey){for(var _len77=arguments.length,additionalDependentKeys=new Array(_len77>1?_len77-1:0),_key69=1;_key69<_len77;_key69++){additionalDependentKeys[_key69-1]=arguments[_key69];}!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @uniq/@union as a decorator directly, but it requires atleast one dependent key parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));var args=[dependentKey].concat(additionalDependentKeys);return multiArrayMacro(args,function(dependentKeys){var _this66=this;var uniq=_A2();var seen=new Set();dependentKeys.forEach(function(dependentKey){var value=get$2(_this66,dependentKey);if(isNativeOrEmberArray(value)){value.forEach(function(item){if(!seen.has(item)){seen.add(item);uniq.push(item);}});}});return uniq;},'uniq');}/**\n            A computed property which returns a new array with all the unique elements\n            from an array, with uniqueness determined by specific key.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { uniqBy } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(fruits) {\n                set(this, 'fruits', fruits);\n              }\n\n              @uniqBy('fruits', 'id') uniqueFruits;\n            }\n\n            let hamster = new Hamster([\n              { id: 1, 'banana' },\n              { id: 2, 'grape' },\n              { id: 3, 'peach' },\n              { id: 1, 'banana' }\n            ]);\n\n            hamster.uniqueFruits; // [ { id: 1, 'banana' }, { id: 2, 'grape' }, { id: 3, 'peach' }]\n            ```\n\n            @method uniqBy\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey\n            @param {String} propertyKey\n            @return {ComputedProperty} computes a new array with all the\n            unique elements from the dependent array\n            @public\n          */function uniqBy(dependentKey,propertyKey){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @uniqBy as a decorator directly, but it requires `dependentKey` and `propertyKey` parameters',!isElementDescriptor(Array.prototype.slice.call(arguments)));!!/[[\\]{}]/g.test(dependentKey)&&assert$1(\"Dependent key passed to `uniqBy` computed macro shouldn't contain brace expanding pattern.\",!/[[\\]{}]/g.test(dependentKey));return computed(\"\".concat(dependentKey,\".[]\"),function(){var list=get$2(this,dependentKey);return isNativeOrEmberArray(list)?uniqBy$1(list,propertyKey):_A2();}).readOnly();}/**\n            A computed property which returns a new array with all the unique elements\n            from one or more dependent arrays.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { union } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(fruits, vegetables) {\n                set(this, 'fruits', fruits);\n                set(this, 'vegetables', vegetables);\n              }\n\n              @union('fruits', 'vegetables') uniqueFruits;\n            });\n\n            let hamster = new, Hamster(\n              [\n                'banana',\n                'grape',\n                'kale',\n                'banana',\n                'tomato'\n              ],\n              [\n                'tomato',\n                'carrot',\n                'lettuce'\n              ]\n            );\n\n            hamster.uniqueFruits; // ['banana', 'grape', 'kale', 'tomato', 'carrot', 'lettuce']\n            ```\n\n            @method union\n            @for @ember/object/computed\n            @static\n            @param {String} propertyKey*\n            @return {ComputedProperty} computes a new array with all the unique elements\n            from one or more dependent arrays.\n            @public\n          */var union=uniq;/**\n            A computed property which returns a new array with all the elements\n            two or more dependent arrays have in common.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { intersect } from '@ember/object/computed';\n\n            class FriendGroups {\n              constructor(adaFriends, charlesFriends) {\n                set(this, 'adaFriends', adaFriends);\n                set(this, 'charlesFriends', charlesFriends);\n              }\n\n              @intersect('adaFriends', 'charlesFriends') friendsInCommon;\n            }\n\n            let groups = new FriendGroups(\n              ['Charles Babbage', 'John Hobhouse', 'William King', 'Mary Somerville'],\n              ['William King', 'Mary Somerville', 'Ada Lovelace', 'George Peacock']\n            );\n\n            groups.friendsInCommon; // ['William King', 'Mary Somerville']\n            ```\n\n            @method intersect\n            @for @ember/object/computed\n            @static\n            @param {String} propertyKey*\n            @return {ComputedProperty} computes a new array with all the duplicated\n            elements from the dependent arrays\n            @public\n          */function intersect(dependentKey){for(var _len78=arguments.length,additionalDependentKeys=new Array(_len78>1?_len78-1:0),_key70=1;_key70<_len78;_key70++){additionalDependentKeys[_key70-1]=arguments[_key70];}!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @intersect as a decorator directly, but it requires atleast one dependent key parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));var args=[dependentKey].concat(additionalDependentKeys);return multiArrayMacro(args,function(dependentKeys){var _this67=this;var arrays=dependentKeys.map(function(dependentKey){var array=get$2(_this67,dependentKey);return Array.isArray(array)?array:[];});var firstArray=arrays.pop();!firstArray&&assert$1('Attempted to apply multiArrayMacro for intersect without any dependentKeys',firstArray);var results=firstArray.filter(function(candidate){var _iterator61=_createForOfIteratorHelper(arrays),_step61;try{for(_iterator61.s();!(_step61=_iterator61.n()).done;){var _array=_step61.value;var found=false;var _iterator62=_createForOfIteratorHelper(_array),_step62;try{for(_iterator62.s();!(_step62=_iterator62.n()).done;){var item=_step62.value;if(item===candidate){found=true;break;}}}catch(err){_iterator62.e(err);}finally{_iterator62.f();}if(found===false){return false;}}}catch(err){_iterator61.e(err);}finally{_iterator61.f();}return true;});return _A2(results);},'intersect');}/**\n            A computed property which returns a new array with all the properties from the\n            first dependent array that are not in the second dependent array.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { setDiff } from '@ember/object/computed';\n\n            class Hamster {\n              constructor(likes, fruits) {\n                set(this, 'likes', likes);\n                set(this, 'fruits', fruits);\n              }\n\n              @setDiff('likes', 'fruits') wants;\n            }\n\n            let hamster = new Hamster(\n              [\n                'banana',\n                'grape',\n                'kale'\n              ],\n              [\n                'grape',\n                'kale',\n              ]\n            );\n\n            hamster.wants; // ['banana']\n            ```\n\n            @method setDiff\n            @for @ember/object/computed\n            @static\n            @param {String} setAProperty\n            @param {String} setBProperty\n            @return {ComputedProperty} computes a new array with all the items from the\n            first dependent array that are not in the second dependent array\n            @public\n          */function setDiff(setAProperty,setBProperty){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @setDiff as a decorator directly, but it requires atleast one dependent key parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));!(arguments.length===2)&&assert$1('`setDiff` computed macro requires exactly two dependent arrays.',arguments.length===2);!(!/[[\\]{}]/g.test(setAProperty)&&!/[[\\]{}]/g.test(setBProperty))&&assert$1(\"Dependent keys passed to `setDiff` computed macro shouldn't contain brace expanding pattern.\",!/[[\\]{}]/g.test(setAProperty)&&!/[[\\]{}]/g.test(setBProperty));return computed(\"\".concat(setAProperty,\".[]\"),\"\".concat(setBProperty,\".[]\"),function(){var setA=get$2(this,setAProperty);var setB=get$2(this,setBProperty);if(!isNativeOrEmberArray(setA)){return _A2();}if(!isNativeOrEmberArray(setB)){return setA;}return setA.filter(function(x){return setB.indexOf(x)===-1;});}).readOnly();}/**\n            A computed property that returns the array of values for the provided\n            dependent properties.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { collect } from '@ember/object/computed';\n\n            class Hamster {\n              @collect('hat', 'shirt') clothes;\n            }\n\n            let hamster = new Hamster();\n\n            hamster.clothes; // [null, null]\n\n            set(hamster, 'hat', 'Camp Hat');\n            set(hamster, 'shirt', 'Camp Shirt');\n            hamster.clothes; // ['Camp Hat', 'Camp Shirt']\n            ```\n\n            @method collect\n            @for @ember/object/computed\n            @static\n            @param {String} dependentKey*\n            @return {ComputedProperty} computed property which maps values of all passed\n            in properties to an array.\n            @public\n          */function collect(dependentKey){for(var _len79=arguments.length,additionalDependentKeys=new Array(_len79>1?_len79-1:0),_key71=1;_key71<_len79;_key71++){additionalDependentKeys[_key71-1]=arguments[_key71];}!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @collect as a decorator directly, but it requires atleast one dependent key parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));var dependentKeys=[dependentKey].concat(additionalDependentKeys);return multiArrayMacro(dependentKeys,function(){var _this68=this;var res=dependentKeys.map(function(key){var val=get$2(_this68,key);return val===undefined?null:val;});return _A2(res);},'collect');}// (UN)SAFETY: we use `any` here to match how TS defines the sorting for arrays.\n// Additionally, since we're using it with *decorators*, we don't have any way\n// to plumb through the relationship between the types in a way that would be\n// variance-safe.\n/**\n            A computed property which returns a new array with all the properties from the\n            first dependent array sorted based on a property or sort function. The sort\n            macro can be used in two different ways:\n\n            1. By providing a sort callback function\n            2. By providing an array of keys to sort the array\n\n            In the first form, the callback method you provide should have the following\n            signature:\n\n            ```javascript\n            function sortCallback(itemA, itemB);\n            ```\n\n            - `itemA` the first item to compare.\n            - `itemB` the second item to compare.\n\n            This function should return negative number (e.g. `-1`) when `itemA` should\n            come before `itemB`. It should return positive number (e.g. `1`) when `itemA`\n            should come after `itemB`. If the `itemA` and `itemB` are equal this function\n            should return `0`.\n\n            Therefore, if this function is comparing some numeric values, simple `itemA -\n            itemB` or `itemA.get( 'foo' ) - itemB.get( 'foo' )` can be used instead of\n            series of `if`.\n\n            Example:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { sort } from '@ember/object/computed';\n\n            class ToDoList {\n              constructor(todos) {\n                set(this, 'todos', todos);\n              }\n\n              // using a custom sort function\n              @sort('todos', function(a, b){\n                if (a.priority > b.priority) {\n                  return 1;\n                } else if (a.priority < b.priority) {\n                  return -1;\n                }\n\n                return 0;\n              })\n              priorityTodos;\n            }\n\n            let todoList = new ToDoList([\n              { name: 'Unit Test', priority: 2 },\n              { name: 'Documentation', priority: 3 },\n              { name: 'Release', priority: 1 }\n            ]);\n\n            todoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n            ```\n\n            You can also optionally pass an array of additional dependent keys as the\n            second parameter, if your sort function is dependent on additional values that\n            could changes:\n\n            ```js\n            import EmberObject, { set } from '@ember/object';\n            import { sort } from '@ember/object/computed';\n\n            class ToDoList {\n              sortKey = 'priority';\n\n              constructor(todos) {\n                set(this, 'todos', todos);\n              }\n\n              // using a custom sort function\n              @sort('todos', ['sortKey'], function(a, b){\n                if (a[this.sortKey] > b[this.sortKey]) {\n                  return 1;\n                } else if (a[this.sortKey] < b[this.sortKey]) {\n                  return -1;\n                }\n\n                return 0;\n              })\n              sortedTodos;\n            });\n\n            let todoList = new ToDoList([\n              { name: 'Unit Test', priority: 2 },\n              { name: 'Documentation', priority: 3 },\n              { name: 'Release', priority: 1 }\n            ]);\n\n            todoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n            ```\n\n            In the second form, you should provide the key of the array of sort values as\n            the second parameter:\n\n            ```javascript\n            import { set } from '@ember/object';\n            import { sort } from '@ember/object/computed';\n\n            class ToDoList {\n              constructor(todos) {\n                set(this, 'todos', todos);\n              }\n\n              // using standard ascending sort\n              todosSorting = ['name'];\n              @sort('todos', 'todosSorting') sortedTodos;\n\n              // using descending sort\n              todosSortingDesc = ['name:desc'];\n              @sort('todos', 'todosSortingDesc') sortedTodosDesc;\n            }\n\n            let todoList = new ToDoList([\n              { name: 'Unit Test', priority: 2 },\n              { name: 'Documentation', priority: 3 },\n              { name: 'Release', priority: 1 }\n            ]);\n\n            todoList.sortedTodos; // [{ name:'Documentation', priority:3 }, { name:'Release', priority:1 }, { name:'Unit Test', priority:2 }]\n            todoList.sortedTodosDesc; // [{ name:'Unit Test', priority:2 }, { name:'Release', priority:1 }, { name:'Documentation', priority:3 }]\n            ```\n\n            @method sort\n            @for @ember/object/computed\n            @static\n            @param {String} itemsKey\n            @param {String|Function|Array} sortDefinitionOrDependentKeys The key of the sort definition (an array of sort properties),\n            the sort function, or an array of additional dependent keys\n            @param {Function?} sortDefinition the sort function (when used with additional dependent keys)\n            @return {ComputedProperty} computes a new sorted array based on the sort\n            property array or callback function\n            @public\n          */function sort(itemsKey,additionalDependentKeysOrDefinition,sortDefinition){!!isElementDescriptor(Array.prototype.slice.call(arguments))&&assert$1('You attempted to use @sort as a decorator directly, but it requires atleast an `itemsKey` parameter',!isElementDescriptor(Array.prototype.slice.call(arguments)));{var argumentsValid=false;if(arguments.length===2){argumentsValid=typeof itemsKey==='string'&&(typeof additionalDependentKeysOrDefinition==='string'||typeof additionalDependentKeysOrDefinition==='function');}if(arguments.length===3){argumentsValid=typeof itemsKey==='string'&&Array.isArray(additionalDependentKeysOrDefinition)&&typeof sortDefinition==='function';}!argumentsValid&&assert$1('The `sort` computed macro can either be used with an array of sort properties or with a sort function. If used with an array of sort properties, it must receive exactly two arguments: the key of the array to sort, and the key of the array of sort properties. If used with a sort function, it may receive up to three arguments: the key of the array to sort, an optional additional array of dependent keys for the computed property, and the sort function.',argumentsValid);}var additionalDependentKeys;var sortDefinitionOrString;if(Array.isArray(additionalDependentKeysOrDefinition)){additionalDependentKeys=additionalDependentKeysOrDefinition;sortDefinitionOrString=sortDefinition;}else{additionalDependentKeys=[];sortDefinitionOrString=additionalDependentKeysOrDefinition;}if(typeof sortDefinitionOrString==='function'){return customSort(itemsKey,additionalDependentKeys,sortDefinitionOrString);}else{return propertySort(itemsKey,sortDefinitionOrString);}}function customSort(itemsKey,additionalDependentKeys,comparator){return arrayMacro(itemsKey,additionalDependentKeys,function(value){var _this69=this;return value.slice().sort(function(x,y){return comparator.call(_this69,x,y);});});}// This one needs to dynamically set up and tear down observers on the itemsKey\n// depending on the sortProperties\nfunction propertySort(itemsKey,sortPropertiesKey){var cp=autoComputed(function(key){var sortProperties=get$2(this,sortPropertiesKey);!function(arr){return isNativeOrEmberArray(arr)&&arr.every(function(s){return typeof s==='string';});}(sortProperties)&&assert$1(\"The sort definition for '\".concat(key,\"' on \").concat(this,\" must be a function or an array of strings\"),function(arr){return isNativeOrEmberArray(arr)&&arr.every(function(s){return typeof s==='string';});}(sortProperties));var itemsKeyIsAtThis=itemsKey==='@this';var normalizedSortProperties=normalizeSortProperties(sortProperties);var items=itemsKeyIsAtThis?this:get$2(this,itemsKey);if(!isNativeOrEmberArray(items)){return _A2();}if(normalizedSortProperties.length===0){return _A2(items.slice());}else{return sortByNormalizedSortProperties(items,normalizedSortProperties);}}).readOnly();return cp;}function normalizeSortProperties(sortProperties){var callback=function callback(p){var _p$split=p.split(':'),_p$split2=_slicedToArray(_p$split,2),prop=_p$split2[0],direction=_p$split2[1];direction=direction||'asc';// SAFETY: There will always be at least one value returned by split\nreturn[prop,direction];};// This nonsense is necessary since technically the two map implementations diverge.\nreturn Array.isArray(sortProperties)?sortProperties.map(callback):sortProperties.map(callback);}function sortByNormalizedSortProperties(items,normalizedSortProperties){return _A2(items.slice().sort(function(itemA,itemB){var _iterator63=_createForOfIteratorHelper(normalizedSortProperties),_step63;try{for(_iterator63.s();!(_step63=_iterator63.n()).done;){var _step63$value=_slicedToArray(_step63.value,2),prop=_step63$value[0],direction=_step63$value[1];var result=compare(get$2(itemA,prop),get$2(itemB,prop));if(result!==0){return direction==='desc'?-1*result:result;}}}catch(err){_iterator63.e(err);}finally{_iterator63.f();}return 0;}));}var emberObjectLibComputedReduceComputedMacros=/*#__PURE__*/Object.defineProperty({__proto__:null,collect:collect,filter:filter,filterBy:filterBy,intersect:intersect,map:map,mapBy:mapBy,max:max,min:min,setDiff:setDiff,sort:sort,sum:sum,union:union,uniq:uniq,uniqBy:uniqBy},Symbol.toStringTag,{value:'Module'});var emberObjectComputed=/*#__PURE__*/Object.defineProperty({__proto__:null,alias:alias,and:and,bool:bool,collect:collect,default:ComputedProperty,deprecatingAlias:deprecatingAlias,empty:empty,equal:equal,expandProperties:expandProperties,filter:filter,filterBy:filterBy,gt:gt,gte:gte,intersect:intersect,lt:lt,lte:lte,map:map,mapBy:mapBy,match:match,max:max,min:min,none:none,not:not,notEmpty:notEmpty,oneWay:oneWay,or:or,readOnly:readOnly,reads:oneWay,setDiff:setDiff,sort:sort,sum:sum,union:union,uniq:uniq,uniqBy:uniqBy},Symbol.toStringTag,{value:'Module'});/**\n            Ember’s dependency injection system is built on the idea of an \"owner\": an\n            object responsible for managing items which can be registered and looked up\n            with the system.\n\n            This module does not provide any concrete instances of owners. Instead, it\n            defines the core type, `Owner`, which specifies the public API contract for an\n            owner. The primary concrete implementations of `Owner` are `EngineInstance`,\n            from `@ember/engine/instance`, and its `ApplicationInstance` subclass, from\n            `@ember/application/instance`.\n\n            Along with `Owner` itself, this module provides a number of supporting types\n            related to Ember's DI system:\n\n            - `Factory`, Ember's primary interface for something which can create class\n              instances registered with the DI system.\n\n            - `FactoryManager`, an interface for inspecting a `Factory`'s class.\n\n            - `Resolver`, an interface defining the contract for the object responsible\n              for mapping string names to the corresponding classes. For example, when you\n              write `@service('session')`, a resolver is responsible to map that back to\n              the `Session` service class in your codebase. Normally, this is handled for\n              you automatically with `ember-resolver`, which is the main implementor of\n              this interface.\n\n            For more details on each, see their per-item docs.\n\n            @module @ember/owner\n            @public\n          */// NOTE: this documentation appears here instead of at the definition site so\n// it can appear correctly in both API docs and for TS, while providing a richer\n// internal representation for Ember's own usage.\n/**\n            Framework objects in an Ember application (components, services, routes, etc.)\n            are created via a factory and dependency injection system. Each of these\n            objects is the responsibility of an \"owner\", which handled its\n            instantiation and manages its lifetime.\n\n            `getOwner` fetches the owner object responsible for an instance. This can\n            be used to lookup or resolve other class instances, or register new factories\n            into the owner.\n\n            For example, this component dynamically looks up a service based on the\n            `audioType` passed as an argument:\n\n            ```app/components/play-audio.js\n            import Component from '@glimmer/component';\n            import { action } from '@ember/object';\n            import { getOwner } from '@ember/owner';\n\n            // Usage:\n            //\n            //   <PlayAudio @audioType={{@model.audioType}} @audioFile={{@model.file}}/>\n            //\n            export default class extends Component {\n              get audioService() {\n                return getOwner(this)?.lookup(`service:${this.args.audioType}`);\n              }\n\n              @action\n              onPlay() {\n                this.audioService?.play(this.args.audioFile);\n              }\n            }\n            ```\n\n            @method getOwner\n            @static\n            @for @ember/owner\n            @param {Object} object An object with an owner.\n            @return {Object} An owner object.\n            @since 2.3.0\n            @public\n          */// SAFETY: the cast here is necessary, instead of using an assignment, because\n// TS (not incorrectly! Nothing expressly relates them) does not see that the\n// `InternalOwner` and `Owner` do actually have identical constraints on their\n// relations to the `DIRegistry`.\nvar getOwner$1=getOwner$2;var emberOwnerIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,getOwner:getOwner$1,setOwner:setOwner$1},Symbol.toStringTag,{value:'Module'});/**\n            A two-tiered cache with support for fallback values when doing lookups.\n            Uses \"buckets\" and then \"keys\" to cache values.\n\n            @private\n            @class BucketCache\n          */var BucketCache=/*#__PURE__*/function(){function BucketCache(){_classCallCheck(this,BucketCache);_defineProperty(this,\"cache\",void 0);this.cache=new Map();}return _createClass(BucketCache,[{key:\"has\",value:function has(bucketKey){return this.cache.has(bucketKey);}},{key:\"stash\",value:function stash(bucketKey,key,value){var bucket=this.cache.get(bucketKey);if(bucket===undefined){bucket=new Map();this.cache.set(bucketKey,bucket);}bucket.set(key,value);}},{key:\"lookup\",value:function lookup(bucketKey,prop,defaultValue){if(!this.has(bucketKey)){return defaultValue;}var bucket=this.cache.get(bucketKey);if(bucket.has(prop)){return bucket.get(prop);}else{return defaultValue;}}}]);}();var emberRoutingLibCache=/*#__PURE__*/Object.defineProperty({__proto__:null,default:BucketCache},Symbol.toStringTag,{value:'Module'});var uuid=0;function isCallback(value){return typeof value==='function';}function isOptions(value){return value!==null&&_typeof(value)==='object';}var DSLImpl=/*#__PURE__*/function(){function DSLImpl(){var name=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;var options=arguments.length>1?arguments[1]:undefined;_classCallCheck(this,DSLImpl);_defineProperty(this,\"parent\",void 0);_defineProperty(this,\"matches\",void 0);_defineProperty(this,\"enableLoadingSubstates\",void 0);_defineProperty(this,\"explicitIndex\",false);_defineProperty(this,\"options\",void 0);this.parent=name;this.enableLoadingSubstates=Boolean(options&&options.enableLoadingSubstates);this.matches=[];this.options=options;}return _createClass(DSLImpl,[{key:\"route\",value:function route(name,_options,_callback){var options;var callback=null;var dummyErrorRoute=\"/_unused_dummy_error_path_route_\".concat(name,\"/:error\");if(isCallback(_options)){!(arguments.length===2)&&assert$1('Unexpected arguments',arguments.length===2);options={};callback=_options;}else if(isCallback(_callback)){!(arguments.length===3)&&assert$1('Unexpected arguments',arguments.length===3);!isOptions(_options)&&assert$1('Unexpected arguments',isOptions(_options));options=_options;callback=_callback;}else{options=_options||{};}!function(){if(options.overrideNameAssertion===true){return true;}return['basic','application'].indexOf(name)===-1;}()&&assert$1(\"'\".concat(name,\"' cannot be used as a route name.\"),function(){if(options.overrideNameAssertion===true){return true;}return['basic','application'].indexOf(name)===-1;}());!(name.indexOf(':')===-1)&&assert$1(\"'\".concat(name,\"' is not a valid route name. It cannot contain a ':'. You may want to use the 'path' option instead.\"),name.indexOf(':')===-1);if(this.enableLoadingSubstates){createRoute(this,\"\".concat(name,\"_loading\"),{resetNamespace:options.resetNamespace});createRoute(this,\"\".concat(name,\"_error\"),{resetNamespace:options.resetNamespace,path:dummyErrorRoute});}if(callback){var fullName=getFullName(this,name,options.resetNamespace);var dsl=new DSLImpl(fullName,this.options);createRoute(dsl,'loading');createRoute(dsl,'error',{path:dummyErrorRoute});callback.call(dsl);createRoute(this,name,options,dsl.generate());}else{createRoute(this,name,options);}}},{key:\"push\",value:function push(url,name,callback,serialize){var parts=name.split('.');if(this.options.engineInfo){var localFullName=name.slice(this.options.engineInfo.fullName.length+1);var routeInfo=Object.assign({localFullName:localFullName},this.options.engineInfo);if(serialize){routeInfo.serializeMethod=serialize;}this.options.addRouteForEngine(name,routeInfo);}else if(serialize){throw new Error(\"Defining a route serializer on route '\".concat(name,\"' outside an Engine is not allowed.\"));}if(url===''||url==='/'||parts[parts.length-1]==='index'){this.explicitIndex=true;}this.matches.push(url,name,callback);}},{key:\"generate\",value:function generate(){var dslMatches=this.matches;if(!this.explicitIndex){this.route('index',{path:'/'});}return function(match){for(var i=0;i<dslMatches.length;i+=3){match(dslMatches[i]).to(dslMatches[i+1],dslMatches[i+2]);}};}},{key:\"mount\",value:function mount(_name){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var engineRouteMap=this.options.resolveRouteMap(_name);var name=_name;if(options.as){name=options.as;}var fullName=getFullName(this,name,options.resetNamespace);var engineInfo={name:_name,instanceId:uuid++,mountPoint:fullName,fullName:fullName};var path=options.path;if(typeof path!=='string'){path=\"/\".concat(name);}var callback;var dummyErrorRoute=\"/_unused_dummy_error_path_route_\".concat(name,\"/:error\");if(engineRouteMap){var shouldResetEngineInfo=false;var oldEngineInfo=this.options.engineInfo;if(oldEngineInfo){shouldResetEngineInfo=true;this.options.engineInfo=engineInfo;}var optionsForChild=Object.assign({engineInfo:engineInfo},this.options);var childDSL=new DSLImpl(fullName,optionsForChild);createRoute(childDSL,'loading');createRoute(childDSL,'error',{path:dummyErrorRoute});engineRouteMap.class.call(childDSL);callback=childDSL.generate();if(shouldResetEngineInfo){this.options.engineInfo=oldEngineInfo;}}var localFullName='application';var routeInfo=Object.assign({localFullName:localFullName},engineInfo);if(this.enableLoadingSubstates){// These values are important to register the loading routes under their\n// proper names for the Router and within the Engine's registry.\nvar substateName=\"\".concat(name,\"_loading\");var _localFullName=\"application_loading\";var _routeInfo3=Object.assign({localFullName:_localFullName},engineInfo);createRoute(this,substateName,{resetNamespace:options.resetNamespace});this.options.addRouteForEngine(substateName,_routeInfo3);substateName=\"\".concat(name,\"_error\");_localFullName=\"application_error\";_routeInfo3=Object.assign({localFullName:_localFullName},engineInfo);createRoute(this,substateName,{resetNamespace:options.resetNamespace,path:dummyErrorRoute});this.options.addRouteForEngine(substateName,_routeInfo3);}this.options.addRouteForEngine(fullName,routeInfo);this.push(path,fullName,callback);}}]);}();function canNest(dsl){return dsl.parent!=='application';}function getFullName(dsl,name,resetNamespace){if(canNest(dsl)&&resetNamespace!==true){return\"\".concat(dsl.parent,\".\").concat(name);}else{return name;}}function createRoute(dsl,name){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var callback=arguments.length>3?arguments[3]:undefined;var fullName=getFullName(dsl,name,options.resetNamespace);if(typeof options.path!=='string'){options.path=\"/\".concat(name);}dsl.push(options.path,fullName,callback,options.serialize);}var emberRoutingLibDsl=/*#__PURE__*/Object.defineProperty({__proto__:null,default:DSLImpl},Symbol.toStringTag,{value:'Module'});var MODEL=symbol('MODEL');/**\n          @module @ember/controller\n          *//**\n            @class ControllerMixin\n            @namespace Ember\n            @uses Ember.ActionHandler\n            @private\n          */var ControllerMixin=Mixin.create(ActionHandler,{/* ducktype as a controller */isController:true,concatenatedProperties:['queryParams'],target:null,store:null,init:function init(){this._super.apply(this,arguments);var owner=getOwner$2(this);if(owner){this.namespace=owner.lookup('application:main');this.target=owner.lookup('router:main');}},model:computed({get:function get(){return this[MODEL];},set:function set(_key,value){return this[MODEL]=value;}}),queryParams:null,/**\n             This property is updated to various different callback functions depending on\n             the current \"state\" of the backing route. It is used by\n             `Controller.prototype._qpChanged`.\n              The methods backing each state can be found in the `Route.prototype._qp` computed\n             property return value (the `.states` property). The current values are listed here for\n             the sanity of future travelers:\n              * `inactive` - This state is used when this controller instance is not part of the active\n               route hierarchy. Set in `Route.prototype._reset` (a `router.js` microlib hook) and\n               `Route.prototype.actions.finalizeQueryParamChange`.\n             * `active` - This state is used when this controller instance is part of the active\n               route hierarchy. Set in `Route.prototype.actions.finalizeQueryParamChange`.\n             * `allowOverrides` - This state is used in `Route.prototype.setup` (`route.js` microlib hook).\n               @method _qpDelegate\n              @private\n            */_qpDelegate:null,// set by route\n/**\n             During `Route#setup` observers are created to invoke this method\n             when any of the query params declared in `Controller#queryParams` property\n             are changed.\n              When invoked this method uses the currently active query param update delegate\n             (see `Controller.prototype._qpDelegate` for details) and invokes it with\n             the QP key/value being changed.\n               @method _qpChanged\n              @private\n            */_qpChanged:function _qpChanged(controller,_prop){var dotIndex=_prop.indexOf('.[]');var prop=dotIndex===-1?_prop:_prop.slice(0,dotIndex);var delegate=controller._qpDelegate;var value=get$2(controller,prop);delegate(prop,value);}});// NOTE: This doesn't actually extend EmberObject.\n/**\n            @class Controller\n            @extends EmberObject\n            @uses Ember.ControllerMixin\n            @public\n          */var Controller=/*#__PURE__*/function(_FrameworkObject$exte2){function Controller(){_classCallCheck(this,Controller);return _callSuper(this,Controller,arguments);}_inherits(Controller,_FrameworkObject$exte2);return _createClass(Controller);}(FrameworkObject.extend(ControllerMixin));/**\n            Creates a property that lazily looks up another controller in the container.\n            Can only be used when defining another controller.\n\n            Example:\n\n            ```app/controllers/post.js\n            import Controller, {\n              inject as controller\n            } from '@ember/controller';\n\n            export default class PostController extends Controller {\n              @controller posts;\n            }\n            ```\n\n            Classic Class Example:\n\n            ```app/controllers/post.js\n            import Controller, {\n              inject as controller\n            } from '@ember/controller';\n\n            export default Controller.extend({\n              posts: controller()\n            });\n            ```\n\n            This example will create a `posts` property on the `post` controller that\n            looks up the `posts` controller in the container, making it easy to reference\n            other controllers.\n\n            @method inject\n            @static\n            @for @ember/controller\n            @since 1.10.0\n            @param {String} name (optional) name of the controller to inject, defaults to\n                   the property's name\n            @return {ComputedDecorator} injection decorator instance\n            @public\n          */function inject(){for(var _len80=arguments.length,args=new Array(_len80),_key72=0;_key72<_len80;_key72++){args[_key72]=arguments[_key72];}return inject$2.apply(void 0,['controller'].concat(args));}/**\n            A type registry for Ember `Controller`s. Meant to be declaration-merged so string\n            lookups resolve to the correct type.\n\n            Blueprints should include such a declaration merge for TypeScript:\n\n            ```ts\n            import Controller from '@ember/controller';\n\n            export default class ExampleController extends Controller {\n            // ...\n            }\n\n            declare module '@ember/controller' {\n              export interface Registry {\n                example: ExampleController;\n              }\n            }\n            ```\n\n            Then `@inject` can check that the service is registered correctly, and APIs\n            like `owner.lookup('controller:example')` can return `ExampleController`.\n          */// eslint-disable-next-line @typescript-eslint/no-empty-interface\nvar emberControllerIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,ControllerMixin:ControllerMixin,default:Controller,inject:inject},Symbol.toStringTag,{value:'Module'});var wrapGetterSetter=function wrapGetterSetter(target,key,desc){var originalGet=desc.get;!(descriptorForProperty(target,key)===undefined)&&assert$1('You attempted to use @dependentKeyCompat on a property that already has been decorated with either @computed or @tracked. @dependentKeyCompat is only necessary for native getters that are not decorated with @computed.',descriptorForProperty(target,key)===undefined);if(originalGet!==undefined){desc.get=function(){var _this70=this;var propertyTag=tagFor(this,key);var ret;var tag=track(function(){ret=originalGet.call(_this70);});UPDATE_TAG(propertyTag,tag);consumeTag(tag);return ret;};}return desc;};/**\n            `@dependentKeyCompat` is decorator that can be used on _native getters_ that\n            use tracked properties. It exposes the getter to Ember's classic computed\n            property and observer systems, so they can watch it for changes. It can be\n            used in both native and classic classes.\n\n            Native Example:\n\n            ```js\n            import { tracked } from '@glimmer/tracking';\n            import { dependentKeyCompat } from '@ember/object/compat';\n            import { computed, set } from '@ember/object';\n\n            class Person {\n              @tracked firstName;\n              @tracked lastName;\n\n              @dependentKeyCompat\n              get fullName() {\n                return `${this.firstName} ${this.lastName}`;\n              }\n            }\n\n            class Profile {\n              constructor(person) {\n                set(this, 'person', person);\n              }\n\n              @computed('person.fullName')\n              get helloMessage() {\n                return `Hello, ${this.person.fullName}!`;\n              }\n            }\n            ```\n\n            Classic Example:\n\n            ```js\n            import { tracked } from '@glimmer/tracking';\n            import { dependentKeyCompat } from '@ember/object/compat';\n            import EmberObject, { computed, observer, set } from '@ember/object';\n\n            const Person = EmberObject.extend({\n              firstName: tracked(),\n              lastName: tracked(),\n\n              fullName: dependentKeyCompat(function() {\n                return `${this.firstName} ${this.lastName}`;\n              }),\n            });\n\n            const Profile = EmberObject.extend({\n              person: null,\n\n              helloMessage: computed('person.fullName', function() {\n                return `Hello, ${this.person.fullName}!`;\n              }),\n\n              onNameUpdated: observer('person.fullName', function() {\n                console.log('person name updated!');\n              }),\n            });\n            ```\n\n            `dependentKeyCompat()` can receive a getter function or an object containing\n            `get`/`set` methods when used in classic classes, like computed properties.\n\n            In general, only properties which you _expect_ to be watched by older,\n            untracked clases should be marked as dependency compatible. The decorator is\n            meant as an interop layer for parts of Ember's older classic APIs, and should\n            not be applied to every possible getter/setter in classes. The number of\n            dependency compatible getters should be _minimized_ wherever possible. New\n            application code should not need to use `@dependentKeyCompat`, since it is\n            only for interoperation with older code.\n\n            @public\n            @method dependentKeyCompat\n            @for @ember/object/compat\n            @static\n            @param {PropertyDescriptor|undefined} desc A property descriptor containing\n                                                       the getter and setter (when used in\n                                                       classic classes)\n            @return {PropertyDecorator} property decorator instance\n           */function dependentKeyCompat(){for(var _len81=arguments.length,args=new Array(_len81),_key73=0;_key73<_len81;_key73++){args[_key73]=arguments[_key73];}if(isElementDescriptor(args)){var target=args[0],key=args[1],desc=args[2];!(desc!=null&&(typeof desc.get==='function'||typeof desc.set==='function'))&&assert$1('The @dependentKeyCompat decorator must be applied to getters/setters when used in native classes',desc!=null&&(typeof desc.get==='function'||typeof desc.set==='function'));return wrapGetterSetter(target,key,desc);}else{var _desc3=args[0];!function(value){if(value&&_typeof(value)==='object'){var _cast4=value;return(_cast4.configurable===undefined||_cast4.configurable===false||_cast4.configurable===true)&&(_cast4.enumerable===undefined||_cast4.enumerable===false||_cast4.enumerable===true)&&(_cast4.writable===undefined||_cast4.writable===false||_cast4.writable===true)&&(_cast4.get===undefined||typeof _cast4.get==='function')&&(_cast4.set===undefined||typeof _cast4.set==='function');}return false;}(_desc3)&&assert$1('expected valid PropertyDescriptor',function(value){if(value&&_typeof(value)==='object'){var _cast5=value;return(_cast5.configurable===undefined||_cast5.configurable===false||_cast5.configurable===true)&&(_cast5.enumerable===undefined||_cast5.enumerable===false||_cast5.enumerable===true)&&(_cast5.writable===undefined||_cast5.writable===false||_cast5.writable===true)&&(_cast5.get===undefined||typeof _cast5.get==='function')&&(_cast5.set===undefined||typeof _cast5.set==='function');}return false;}(_desc3));var decorator=function decorator(target,key,_desc,_meta,isClassicDecorator){!isClassicDecorator&&assert$1('The @dependentKeyCompat decorator may only be passed a method when used in classic classes. You should decorate getters/setters directly in native classes',isClassicDecorator);!(typeof _desc3.get==='function'||typeof _desc3.set==='function')&&assert$1('The dependentKeyCompat() decorator must be passed a getter or setter when used in classic classes',typeof _desc3.get==='function'||typeof _desc3.set==='function');return wrapGetterSetter(target,key,_desc3);};setClassicDecorator(decorator);return decorator;}}setClassicDecorator(dependentKeyCompat);var emberObjectCompat=/*#__PURE__*/Object.defineProperty({__proto__:null,dependentKeyCompat:dependentKeyCompat},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/routing\n          *//**\n            Generates a controller factory\n\n            @for Ember\n            @method generateControllerFactory\n            @private\n          */function generateControllerFactory(owner,controllerName){var factoryManager=owner.factoryFor('controller:basic');!(factoryManager!==undefined)&&assert$1('[BUG] unexpectedly missing a factoryManager for `controller:basic`',factoryManager!==undefined);// SAFETY: This is *not* safe, and the cast should be removed in favor of the\n// `assert()` below after altering *tests*. It is left in this state for the\n// moment in the interest of keeping type-only changes separate from changes\n// to the runtime behavior of the system, even for tests.\nvar Factory=factoryManager.class;// assert(\n//   '[BUG] factory for `controller:main` is unexpectedly not a Controller',\n//   ((factory): factory is typeof Controller => factory === Controller)(Factory)\n// );\nFactory=Factory.extend({toString:function toString(){return\"(generated \".concat(controllerName,\" controller)\");}});var fullName=\"controller:\".concat(controllerName);owner.register(fullName,Factory);return owner.factoryFor(fullName);}/**\n            Generates and instantiates a controller extending from `controller:basic`\n            if present, or `Controller` if not.\n\n            @for Ember\n            @method generateController\n            @private\n            @since 1.3.0\n          */function _generateController(owner,controllerName){generateControllerFactory(owner,controllerName);var fullName=\"controller:\".concat(controllerName);var instance=owner.lookup(fullName);!(instance instanceof Controller)&&assert$1('Expected an instance of controller',instance instanceof Controller);{if(get$2(instance,'namespace.LOG_ACTIVE_GENERATION')){info(\"generated -> \".concat(fullName),{fullName:fullName});}}return instance;}var emberRoutingLibGenerateController=/*#__PURE__*/Object.defineProperty({__proto__:null,default:_generateController,generateControllerFactory:generateControllerFactory},Symbol.toStringTag,{value:'Module'});function isStoreLike(store){return _typeof(store)==='object'&&store!==null&&typeof store.find==='function';}var RENDER=Symbol('render');var RENDER_STATE=Symbol('render-state');/**\n          @module @ember/routing/route\n          *//**\n            The `Route` class is used to define individual routes. Refer to\n            the [routing guide](https://guides.emberjs.com/release/routing/) for documentation.\n\n            @class Route\n            @extends EmberObject\n            @uses ActionHandler\n            @uses Evented\n            @since 1.0.0\n            @public\n          */var Route=/*#__PURE__*/function(_EmberObject$extend2){function Route(owner){var _this71;_classCallCheck(this,Route);_this71=_callSuper(this,Route,[owner]);// These properties will end up appearing in the public interface because we\n// `implements IRoute` from `router.js`, which has them as part of *its*\n// public contract. We mark them as `@internal` so they at least signal to\n// people subclassing `Route` that they should not use them.\n/** @internal */_defineProperty(_this71,\"context\",{});/** @internal *//** @internal */_defineProperty(_this71,\"_bucketCache\",void 0);/** @internal */_defineProperty(_this71,\"_internalName\",void 0);_defineProperty(_this71,\"_names\",void 0);_defineProperty(_this71,\"_router\",void 0);_defineProperty(_this71,RENDER_STATE,undefined);if(owner){var router=owner.lookup('router:main');var bucketCache=owner.lookup(privatize(_templateObject2||(_templateObject2=_taggedTemplateLiteral([\"-bucket-cache:main\"]))));_this71._router=router;_this71._bucketCache=bucketCache;_this71._topLevelViewTemplate=owner.lookup('template:-outlet');_this71._environment=owner.lookup('-environment:main');}return _this71;}/**\n              A hook you can implement to convert the route's model into parameters\n              for the URL.\n               ```app/router.js\n              // ...\n               Router.map(function() {\n                this.route('post', { path: '/posts/:post_id' });\n              });\n               ```\n               ```app/routes/post.js\n              import Route from '@ember/routing/route';\n               export default class PostRoute extends Route {\n                model({ post_id }) {\n                  // the server returns `{ id: 12 }`\n                  return fetch(`/posts/${post_id}`;\n                }\n                 serialize(model) {\n                  // this will make the URL `/posts/12`\n                  return { post_id: model.id };\n                }\n              }\n              ```\n               The default `serialize` method will insert the model's `id` into the\n              route's dynamic segment (in this case, `:post_id`) if the segment contains '_id'.\n              If the route has multiple dynamic segments or does not contain '_id', `serialize`\n              will return `getProperties(model, params)`\n               This method is called when `transitionTo` is called with a context\n              in order to populate the URL.\n               @method serialize\n              @param {Object} model the routes model\n              @param {Array} params an Array of parameter names for the current\n                route (in the example, `['post_id']`.\n              @return {Object} the serialized parameters\n              @since 1.0.0\n              @public\n            */_inherits(Route,_EmberObject$extend2);return _createClass(Route,[{key:\"serialize\",value:function serialize(model,params){if(params.length<1||!model){return;}var object={};if(params.length===1){var _params2=_slicedToArray(params,1),_name32=_params2[0];!_name32&&assert$1('has name',_name32);if(_typeof(model)==='object'&&_name32 in model){object[_name32]=get$2(model,_name32);}else if(/_id$/.test(_name32)){object[_name32]=get$2(model,'id');}else if(isProxy(model)){object[_name32]=get$2(model,_name32);}}else{object=_getProperties(model,params);}return object;}/**\n              Configuration hash for this route's queryParams. The possible\n              configuration options and their defaults are as follows\n              (assuming a query param whose controller property is `page`):\n               ```javascript\n              queryParams = {\n                page: {\n                  // By default, controller query param properties don't\n                  // cause a full transition when they are changed, but\n                  // rather only cause the URL to update. Setting\n                  // `refreshModel` to true will cause an \"in-place\"\n                  // transition to occur, whereby the model hooks for\n                  // this route (and any child routes) will re-fire, allowing\n                  // you to reload models (e.g., from the server) using the\n                  // updated query param values.\n                  refreshModel: false,\n                   // By default, changes to controller query param properties\n                  // cause the URL to update via `pushState`, which means an\n                  // item will be added to the browser's history, allowing\n                  // you to use the back button to restore the app to the\n                  // previous state before the query param property was changed.\n                  // Setting `replace` to true will use `replaceState` (or its\n                  // hash location equivalent), which causes no browser history\n                  // item to be added. This options name and default value are\n                  // the same as the `link-to` helper's `replace` option.\n                  replace: false,\n                   // By default, the query param URL key is the same name as\n                  // the controller property name. Use `as` to specify a\n                  // different URL key.\n                  as: 'page'\n                }\n              };\n              ```\n               @property queryParams\n              @for Route\n              @type Object\n              @since 1.6.0\n              @public\n            */// Set in reopen so it can be overriden with extend\n/**\n              The name of the template to use by default when rendering this route's\n              template.\n               ```app/routes/posts/list.js\n              import Route from '@ember/routing/route';\n               export default class PostsListRoute extends Route {\n                templateName = 'posts/list';\n              }\n              ```\n               ```app/routes/posts/index.js\n              import PostsListRoute from '../posts/list';\n               export default class PostsIndexRoute extends PostsListRoute {};\n              ```\n               ```app/routes/posts/archived.js\n              import PostsListRoute from '../posts/list';\n               export default class PostsArchivedRoute extends PostsListRoute {};\n              ```\n               @property templateName\n              @type String\n              @default null\n              @since 1.4.0\n              @public\n            */// Set in reopen so it can be overriden with extend\n/**\n              The name of the controller to associate with this route.\n               By default, Ember will lookup a route's controller that matches the name\n              of the route (i.e. `posts.new`). However,\n              if you would like to define a specific controller to use, you can do so\n              using this property.\n               This is useful in many ways, as the controller specified will be:\n               * passed to the `setupController` method.\n              * used as the controller for the template being rendered by the route.\n              * returned from a call to `controllerFor` for the route.\n               @property controllerName\n              @type String\n              @default null\n              @since 1.4.0\n              @public\n            */// Set in reopen so it can be overriden with extend\n/**\n              The controller associated with this route.\n               Example\n               ```app/routes/form.js\n              import Route from '@ember/routing/route';\n              import { action } from '@ember/object';\n               export default class FormRoute extends Route {\n                @action\n                willTransition(transition) {\n                  if (this.controller.get('userHasEnteredData') &&\n                      !confirm('Are you sure you want to abandon progress?')) {\n                    transition.abort();\n                  } else {\n                    // Bubble the `willTransition` action so that\n                    // parent routes can decide whether or not to abort.\n                    return true;\n                  }\n                }\n              }\n              ```\n               @property controller\n              @type Controller\n              @since 1.6.0\n              @public\n            *//**\n              The name of the route, dot-delimited.\n               For example, a route found at `app/routes/posts/post.js` will have\n              a `routeName` of `posts.post`.\n               @property routeName\n              @for Route\n              @type String\n              @since 1.0.0\n              @public\n            *//**\n              The name of the route, dot-delimited, including the engine prefix\n              if applicable.\n               For example, a route found at `addon/routes/posts/post.js` within an\n              engine named `admin` will have a `fullRouteName` of `admin.posts.post`.\n               @property fullRouteName\n              @for Route\n              @type String\n              @since 2.10.0\n              @public\n            *//**\n              Sets the name for this route, including a fully resolved name for routes\n              inside engines.\n               @private\n              @method _setRouteName\n              @param {String} name\n            */},{key:\"_setRouteName\",value:function _setRouteName(name){this.routeName=name;var owner=getOwner$2(this);!(owner instanceof EngineInstance)&&assert$1('Expected route to have EngineInstance as owner',owner instanceof EngineInstance);this.fullRouteName=getEngineRouteName(owner,name);}/**\n              @private\n               @method _stashNames\n            */},{key:\"_stashNames\",value:function _stashNames(routeInfo,dynamicParent){if(this._names){return;}var names=this._names=routeInfo['_names'];if(!names.length){routeInfo=dynamicParent;names=routeInfo&&routeInfo['_names']||[];}// SAFETY: Since `_qp` is protected we can't infer the type\nvar qps=get$2(this,'_qp').qps;var namePaths=new Array(names.length);for(var a=0;a<names.length;++a){namePaths[a]=\"\".concat(routeInfo.name,\".\").concat(names[a]);}var _iterator64=_createForOfIteratorHelper(qps),_step64;try{for(_iterator64.s();!(_step64=_iterator64.n()).done;){var qp=_step64.value;if(qp.scope==='model'){qp.parts=namePaths;}}}catch(err){_iterator64.e(err);}finally{_iterator64.f();}}/**\n              @private\n               @property _activeQPChanged\n            */},{key:\"_activeQPChanged\",value:function _activeQPChanged(qp,value){this._router._activeQPChanged(qp.scopedPropertyName,value);}/**\n              @private\n              @method _updatingQPChanged\n            */},{key:\"_updatingQPChanged\",value:function _updatingQPChanged(qp){this._router._updatingQPChanged(qp.urlKey);}/**\n              Returns a hash containing the parameters of an ancestor route.\n               You may notice that `this.paramsFor` sometimes works when referring to a\n              child route, but this behavior should not be relied upon as only ancestor\n              routes are certain to be loaded in time.\n               Example\n               ```app/router.js\n              // ...\n               Router.map(function() {\n                this.route('member', { path: ':name' }, function() {\n                  this.route('interest', { path: ':interest' });\n                });\n              });\n              ```\n               ```app/routes/member.js\n              import Route from '@ember/routing/route';\n               export default class MemberRoute extends Route {\n                queryParams = {\n                  memberQp: { refreshModel: true }\n                }\n              }\n              ```\n               ```app/routes/member/interest.js\n              import Route from '@ember/routing/route';\n               export default class MemberInterestRoute extends Route {\n                queryParams = {\n                  interestQp: { refreshModel: true }\n                }\n                 model() {\n                  return this.paramsFor('member');\n                }\n              }\n              ```\n               If we visit `/turing/maths?memberQp=member&interestQp=interest` the model for\n              the `member.interest` route is a hash with:\n               * `name`: `turing`\n              * `memberQp`: `member`\n               @method paramsFor\n              @param {String} name\n              @return {Object} hash containing the parameters of the route `name`\n              @since 1.4.0\n              @public\n            */},{key:\"paramsFor\",value:function paramsFor(name){var _this72=this;var owner=getOwner$2(this);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var route=owner.lookup(\"route:\".concat(name));if(route===undefined){return{};}var transition=this._router._routerMicrolib.activeTransition;var state=transition?transition[STATE_SYMBOL]:this._router._routerMicrolib.state;var fullName=route.fullRouteName;var params=_objectSpread({},state.params[fullName]);var queryParams=getQueryParamsFor(route,state);return Object.entries(queryParams).reduce(function(params,_ref195){var _ref196=_slicedToArray(_ref195,2),key=_ref196[0],value=_ref196[1];!!params[key]&&assert$1(\"The route '\".concat(_this72.routeName,\"' has both a dynamic segment and query param with name '\").concat(key,\"'. Please rename one to avoid collisions.\"),!params[key]);params[key]=value;return params;},params);}/**\n              Serializes the query parameter key\n               @method serializeQueryParamKey\n              @param {String} controllerPropertyName\n              @private\n            */},{key:\"serializeQueryParamKey\",value:function serializeQueryParamKey(controllerPropertyName){return controllerPropertyName;}/**\n              Serializes value of the query parameter based on defaultValueType\n               @method serializeQueryParam\n              @param {Object} value\n              @param {String} urlKey\n              @param {String} defaultValueType\n              @private\n            */},{key:\"serializeQueryParam\",value:function serializeQueryParam(value,_urlKey,defaultValueType){// urlKey isn't used here, but anyone overriding\n// can use it to provide serialization specific\n// to a certain query param.\nreturn this._router._serializeQueryParam(value,defaultValueType);}/**\n              Deserializes value of the query parameter based on defaultValueType\n               @method deserializeQueryParam\n              @param {Object} value\n              @param {String} urlKey\n              @param {String} defaultValueType\n              @private\n            */},{key:\"deserializeQueryParam\",value:function deserializeQueryParam(value,_urlKey,defaultValueType){// urlKey isn't used here, but anyone overriding\n// can use it to provide deserialization specific\n// to a certain query param.\nreturn this._router._deserializeQueryParam(value,defaultValueType);}/**\n              @private\n               @property _optionsForQueryParam\n            */},{key:\"_optionsForQueryParam\",value:function _optionsForQueryParam(qp){var queryParams=get$2(this,'queryParams');return get$2(queryParams,qp.urlKey)||get$2(queryParams,qp.prop)||queryParams[qp.urlKey]||queryParams[qp.prop]||{};}/**\n              A hook you can use to reset controller values either when the model\n              changes or the route is exiting.\n               ```app/routes/articles.js\n              import Route from '@ember/routing/route';\n               export default class ArticlesRoute extends Route {\n                resetController(controller, isExiting, transition) {\n                  if (isExiting && transition.targetName !== 'error') {\n                    controller.set('page', 1);\n                  }\n                }\n              }\n              ```\n               @method resetController\n              @param {Controller} controller instance\n              @param {Boolean} isExiting\n              @param {Object} transition\n              @since 1.7.0\n              @public\n            */},{key:\"resetController\",value:function resetController(_controller,_isExiting,_transition){// We document that subclasses do not have to return *anything* and in fact\n// do not even have to call super, so whiel we *do* return `this`, we need\n// to be explicit in the types that our return type is *effectively* `void`.\nreturn this;}/**\n              @private\n               @method exit\n            */},{key:\"exit\",value:function exit(transition){this.deactivate(transition);this.trigger('deactivate',transition);this.teardownViews();}/**\n              @private\n               @method _internalReset\n              @since 3.6.0\n            */},{key:\"_internalReset\",value:function _internalReset(isExiting,transition){var controller=this.controller;// SAFETY: Since `_qp` is protected we can't infer the type\ncontroller['_qpDelegate']=get$2(this,'_qp').states.inactive;this.resetController(controller,isExiting,transition);}/**\n              @private\n               @method enter\n            */},{key:\"enter\",value:function enter(transition){this[RENDER_STATE]=undefined;this.activate(transition);this.trigger('activate',transition);}/**\n              This event is triggered when the router enters the route. It is\n              not executed when the model for the route changes.\n               ```app/routes/application.js\n              import { on } from '@ember/object/evented';\n              import Route from '@ember/routing/route';\n               export default Route.extend({\n                collectAnalytics: on('activate', function(){\n                  collectAnalytics();\n                })\n              });\n              ```\n               @event activate\n              @since 1.9.0\n              @public\n            *//**\n              This event is triggered when the router completely exits this\n              route. It is not executed when the model for the route changes.\n               ```app/routes/index.js\n              import { on } from '@ember/object/evented';\n              import Route from '@ember/routing/route';\n               export default Route.extend({\n                trackPageLeaveAnalytics: on('deactivate', function(){\n                  trackPageLeaveAnalytics();\n                })\n              });\n              ```\n               @event deactivate\n              @since 1.9.0\n              @public\n            *//**\n              This hook is executed when the router completely exits this route. It is\n              not executed when the model for the route changes.\n               @method deactivate\n              @param {Transition} transition\n              @since 1.0.0\n              @public\n            */},{key:\"deactivate\",value:function deactivate(_transition){}/**\n              This hook is executed when the router enters the route. It is not executed\n              when the model for the route changes.\n               @method activate\n              @param {Transition} transition\n              @since 1.0.0\n              @public\n            */},{key:\"activate\",value:function activate(_transition){}/**\n              Perform a synchronous transition into another route without attempting\n              to resolve promises, update the URL, or abort any currently active\n              asynchronous transitions (i.e. regular transitions caused by\n              `transitionTo` or URL changes).\n               This method is handy for performing intermediate transitions on the\n              way to a final destination route, and is called internally by the\n              default implementations of the `error` and `loading` handlers.\n               @method intermediateTransitionTo\n              @param {String} name the name of the route\n              @param {...Object} models the model(s) to be used while transitioning\n              to the route.\n              @since 1.2.0\n              @public\n             */},{key:\"intermediateTransitionTo\",value:function intermediateTransitionTo(){var _this$_router;for(var _len82=arguments.length,args=new Array(_len82),_key74=0;_key74<_len82;_key74++){args[_key74]=arguments[_key74];}var _prefixRouteNameArg=prefixRouteNameArg(this,args),_prefixRouteNameArg2=_toArray(_prefixRouteNameArg),name=_prefixRouteNameArg2[0],preparedArgs=_prefixRouteNameArg2.slice(1);(_this$_router=this._router).intermediateTransitionTo.apply(_this$_router,[name].concat(_toConsumableArray(preparedArgs)));}/**\n              Refresh the model on this route and any child routes, firing the\n              `beforeModel`, `model`, and `afterModel` hooks in a similar fashion\n              to how routes are entered when transitioning in from other route.\n              The current route params (e.g. `article_id`) will be passed in\n              to the respective model hooks, and if a different model is returned,\n              `setupController` and associated route hooks will re-fire as well.\n               An example usage of this method is re-querying the server for the\n              latest information using the same parameters as when the route\n              was first entered.\n               Note that this will cause `model` hooks to fire even on routes\n              that were provided a model object when the route was initially\n              entered.\n               @method refresh\n              @return {Transition} the transition object associated with this\n                attempted transition\n              @since 1.4.0\n              @public\n             */},{key:\"refresh\",value:function refresh(){return this._router._routerMicrolib.refresh(this);}/**\n              This hook is the entry point for router.js\n               @private\n              @method setup\n            */},{key:\"setup\",value:function setup(context,transition){var controllerName=this.controllerName||this.routeName;var definedController=this.controllerFor(controllerName,true);var controller=definedController!==null&&definedController!==void 0?definedController:this.generateController(controllerName);// SAFETY: Since `_qp` is protected we can't infer the type\nvar queryParams=get$2(this,'_qp');// Assign the route's controller so that it can more easily be\n// referenced in action handlers. Side effects. Side effects everywhere.\nif(!this.controller){var propNames=queryParams.propertyNames;addQueryParamsObservers(controller,propNames);this.controller=controller;}var states=queryParams.states;controller._qpDelegate=states.allowOverrides;if(transition){// Update the model dep values used to calculate cache keys.\nstashParamNames(this._router,transition[STATE_SYMBOL].routeInfos);var _cache4=this._bucketCache;var params=transition[PARAMS_SYMBOL];var allParams=queryParams.propertyNames;allParams.forEach(function(prop){var aQp=queryParams.map[prop];!aQp&&assert$1('expected aQp',aQp);aQp.values=params;var cacheKey=calculateCacheKey(aQp.route.fullRouteName,aQp.parts,aQp.values);var value=_cache4.lookup(cacheKey,prop,aQp.undecoratedDefaultValue);_set5(controller,prop,value);});var qpValues=getQueryParamsFor(this,transition[STATE_SYMBOL]);_setProperties(controller,qpValues);}this.setupController(controller,context,transition);if(this._environment.options.shouldRender){this[RENDER]();}// Setup can cause changes to QPs which need to be propogated immediately in\n// some situations. Eventually, we should work on making these async somehow.\nflushAsyncObservers(false);}/*\n              Called when a query parameter for this route changes, regardless of whether the route\n              is currently part of the active route hierarchy. This will update the query parameter's\n              value in the cache so if this route becomes active, the cache value has been updated.\n            */},{key:\"_qpChanged\",value:function _qpChanged(prop,value,qp){if(!qp){return;}// Update model-dep cache\nvar cache=this._bucketCache;var cacheKey=calculateCacheKey(qp.route.fullRouteName,qp.parts,qp.values);cache.stash(cacheKey,prop,value);}/**\n              This hook is the first of the route entry validation hooks\n              called when an attempt is made to transition into a route\n              or one of its children. It is called before `model` and\n              `afterModel`, and is appropriate for cases when:\n               1) A decision can be made to redirect elsewhere without\n                 needing to resolve the model first.\n              2) Any async operations need to occur first before the\n                 model is attempted to be resolved.\n               This hook is provided the current `transition` attempt\n              as a parameter, which can be used to `.abort()` the transition,\n              save it for a later `.retry()`, or retrieve values set\n              on it from a previous hook. You can also just call\n              `router.transitionTo` to another route to implicitly\n              abort the `transition`.\n               You can return a promise from this hook to pause the\n              transition until the promise resolves (or rejects). This could\n              be useful, for instance, for retrieving async code from\n              the server that is required to enter a route.\n               @method beforeModel\n              @param {Transition} transition\n              @return {any | Promise<any>} if the value returned from this hook is\n                a promise, the transition will pause until the transition\n                resolves. Otherwise, non-promise return values are not\n                utilized in any way.\n              @since 1.0.0\n              @public\n            */},{key:\"beforeModel\",value:function beforeModel(_transition){}/**\n              This hook is called after this route's model has resolved.\n              It follows identical async/promise semantics to `beforeModel`\n              but is provided the route's resolved model in addition to\n              the `transition`, and is therefore suited to performing\n              logic that can only take place after the model has already\n              resolved.\n               ```app/routes/posts.js\n              import Route from '@ember/routing/route';\n              import { service } from '@ember/service';\n               export default class PostsRoute extends Route {\n                @service router;\n                 afterModel(posts, transition) {\n                  if (posts.get('length') === 1) {\n                    this.router.transitionTo('post.show', posts.get('firstObject'));\n                  }\n                }\n              }\n              ```\n               Refer to documentation for `beforeModel` for a description\n              of transition-pausing semantics when a promise is returned\n              from this hook.\n               @method afterModel\n              @param {Object} resolvedModel the value returned from `model`,\n                or its resolved value if it was a promise\n              @param {Transition} transition\n              @return {any | Promise<any>} if the value returned from this hook is\n                a promise, the transition will pause until the transition\n                resolves. Otherwise, non-promise return values are not\n                utilized in any way.\n              @since 1.0.0\n              @public\n             */},{key:\"afterModel\",value:function afterModel(_resolvedModel,_transition){}/**\n              A hook you can implement to optionally redirect to another route.\n               Calling `this.router.transitionTo` from inside of the `redirect` hook will\n              abort the current transition (into the route that has implemented `redirect`).\n               `redirect` and `afterModel` behave very similarly and are\n              called almost at the same time, but they have an important\n              distinction when calling `this.router.transitionTo` to a child route\n              of the current route. From `afterModel`, this new transition\n              invalidates the current transition, causing `beforeModel`,\n              `model`, and `afterModel` hooks to be called again. But the\n              same transition started from `redirect` does _not_ invalidate\n              the current transition. In other words, by the time the `redirect`\n              hook has been called, both the resolved model and the attempted\n              entry into this route are considered fully validated.\n               @method redirect\n              @param {Object} model the model for this route\n              @param {Transition} transition the transition object associated with the current transition\n              @since 1.0.0\n              @public\n            */},{key:\"redirect\",value:function redirect(_model,_transition){}/**\n              Called when the context is changed by router.js.\n               @private\n              @method contextDidChange\n            */},{key:\"contextDidChange\",value:function contextDidChange(){this.currentModel=this.context;}/**\n              A hook you can implement to convert the URL into the model for\n              this route.\n               ```app/router.js\n              // ...\n               Router.map(function() {\n                this.route('post', { path: '/posts/:post_id' });\n              });\n               export default Router;\n              ```\n               Note that for routes with dynamic segments, this hook is not always\n              executed. If the route is entered through a transition (e.g. when\n              using the `link-to` Handlebars helper or the `transitionTo` method\n              of routes), and a model context is already provided this hook\n              is not called.\n               A model context does not include a primitive string or number,\n              which does cause the model hook to be called.\n               Routes without dynamic segments will always execute the model hook.\n               ```javascript\n              // no dynamic segment, model hook always called\n              this.router.transitionTo('posts');\n               // model passed in, so model hook not called\n              thePost = store.findRecord('post', 1);\n              this.router.transitionTo('post', thePost);\n               // integer passed in, model hook is called\n              this.router.transitionTo('post', 1);\n               // model id passed in, model hook is called\n              // useful for forcing the hook to execute\n              thePost = store.findRecord('post', 1);\n              this.router.transitionTo('post', thePost.id);\n              ```\n               This hook follows the asynchronous/promise semantics\n              described in the documentation for `beforeModel`. In particular,\n              if a promise returned from `model` fails, the error will be\n              handled by the `error` hook on `Route`.\n               Note that the legacy behavior of automatically defining a model\n              hook when a dynamic segment ending in `_id` is present is\n              [deprecated](https://deprecations.emberjs.com/v5.x#toc_deprecate-implicit-route-model).\n              You should explicitly define a model hook whenever any segments are\n              present.\n               Example\n               ```app/routes/post.js\n              import Route from '@ember/routing/route';\n              import { service } from '@ember/service';\n               export default class PostRoute extends Route {\n                @service store;\n                 model(params) {\n                  return this.store.findRecord('post', params.post_id);\n                }\n              }\n              ```\n               @method model\n              @param {Object} params the parameters extracted from the URL\n              @param {Transition} transition\n              @return {any | Promise<any>} the model for this route. If\n                a promise is returned, the transition will pause until\n                the promise resolves, and the resolved value of the promise\n                will be used as the model for this route.\n              @since 1.0.0\n              @public\n            */},{key:\"model\",value:function model(params,transition){var name,sawParams,value;// SAFETY: Since `_qp` is protected we can't infer the type\nvar queryParams=get$2(this,'_qp').map;for(var prop in params){if(prop==='queryParams'||queryParams&&prop in queryParams){continue;}var _match4=prop.match(/^(.*)_id$/);if(_match4!==null){name=_match4[1];value=params[prop];}sawParams=true;}if(!name){if(sawParams){// SAFETY: This should be equivalent\nreturn Object.assign({},params);}else{if(transition.resolveIndex<1){return;}// SAFETY: This should be correct, but TS is unable to infer this.\nreturn transition[STATE_SYMBOL].routeInfos[transition.resolveIndex-1].context;}}return this.findModel(name,value);}/**\n              @private\n              @method deserialize\n              @param {Object} params the parameters extracted from the URL\n              @param {Transition} transition\n              @return {any | Promise<any>} the model for this route.\n               Router.js hook.\n             */},{key:\"deserialize\",value:function deserialize(_params,transition){return this.model(this._paramsFor(this.routeName,_params),transition);}/**\n               @method findModel\n              @param {String} type the model type\n              @param {Object} value the value passed to find\n              @private\n            */},{key:\"findModel\",value:function findModel(type,value){if(ENV._NO_IMPLICIT_ROUTE_MODEL){return;}deprecateUntil(\"The implicit model loading behavior for routes is deprecated. \"+\"Please define an explicit model hook for \".concat(this.fullRouteName,\".\"),DEPRECATIONS.DEPRECATE_IMPLICIT_ROUTE_MODEL);var store='store'in this?this.store:get$2(this,'_store');!isStoreLike(store)&&assert$1('Expected route to have a store with a find method',isStoreLike(store));// SAFETY: We don't actually know it will return this, but this code path is also deprecated.\nreturn store.find(type,value);}/**\n              A hook you can use to setup the controller for the current route.\n               This method is called with the controller for the current route and the\n              model supplied by the `model` hook.\n               By default, the `setupController` hook sets the `model` property of\n              the controller to the specified `model` when it is not `undefined`.\n               If you implement the `setupController` hook in your Route, it will\n              prevent this default behavior. If you want to preserve that behavior\n              when implementing your `setupController` function, make sure to call\n              `super`:\n               ```app/routes/photos.js\n              import Route from '@ember/routing/route';\n              import { service } from '@ember/service';\n               export default class PhotosRoute extends Route {\n                @service store;\n                 model() {\n                  return this.store.findAll('photo');\n                }\n                 setupController(controller, model) {\n                  super.setupController(controller, model);\n                   this.controllerFor('application').set('showingPhotos', true);\n                }\n              }\n              ```\n               The provided controller will be one resolved based on the name\n              of this route.\n               If no explicit controller is defined, Ember will automatically create one.\n               As an example, consider the router:\n               ```app/router.js\n              // ...\n               Router.map(function() {\n                this.route('post', { path: '/posts/:post_id' });\n              });\n               export default Router;\n              ```\n               If you have defined a file for the post controller,\n              the framework will use it.\n              If it is not defined, a basic `Controller` instance would be used.\n               @example Behavior of a basic Controller\n               ```app/routes/post.js\n              import Route from '@ember/routing/route';\n               export default class PostRoute extends Route {\n                setupController(controller, model) {\n                  controller.set('model', model);\n                }\n              });\n              ```\n               @method setupController\n              @param {Controller} controller instance\n              @param {Object} model\n              @param {Transition} [transition]\n              @since 1.0.0\n              @public\n            */},{key:\"setupController\",value:function setupController(controller,context,_transition){if(controller&&context!==undefined){_set5(controller,'model',context);}}/**\n              Returns the controller of the current route, or a parent (or any ancestor)\n              route in a route hierarchy.\n               The controller instance must already have been created, either through entering the\n              associated route or using `generateController`.\n               ```app/routes/post.js\n              import Route from '@ember/routing/route';\n               export default class PostRoute extends Route {\n                setupController(controller, post) {\n                  super.setupController(controller, post);\n                   this.controllerFor('posts').set('currentPost', post);\n                }\n              }\n              ```\n               @method controllerFor\n              @param {String} name the name of the route or controller\n              @return {Controller | undefined}\n              @since 1.0.0\n              @public\n            */},{key:\"controllerFor\",value:function controllerFor(name){var _skipAssert=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var owner=getOwner$2(this);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var route=owner.lookup(\"route:\".concat(name));if(route&&route.controllerName){name=route.controllerName;}var controller=owner.lookup(\"controller:\".concat(name));// NOTE: We're specifically checking that skipAssert is true, because according\n//   to the old API the second parameter was model. We do not want people who\n//   passed a model to skip the assertion.\n!(controller!==undefined||_skipAssert===true)&&assert$1(\"The controller named '\".concat(name,\"' could not be found. Make sure that this route exists and has already been entered at least once. If you are accessing a controller not associated with a route, make sure the controller class is explicitly defined.\"),controller!==undefined||_skipAssert===true);!(controller===undefined||controller instanceof Controller)&&assert$1(\"Expected controller:\".concat(name,\" to be an instance of Controller\"),controller===undefined||controller instanceof Controller);return controller;}/**\n              Generates a controller for a route.\n               Example\n               ```app/routes/post.js\n              import Route from '@ember/routing/route';\n               export default class Post extends Route {\n                setupController(controller, post) {\n                  super.setupController(controller, post);\n                   this.generateController('posts');\n                }\n              }\n              ```\n               @method generateController\n              @param {String} name the name of the controller\n              @private\n            */},{key:\"generateController\",value:function generateController(name){var owner=getOwner$2(this);!owner&&assert$1('Route is unexpectedly missing an owner',owner);return _generateController(owner,name);}/**\n              Returns the resolved model of a parent (or any ancestor) route\n              in a route hierarchy.  During a transition, all routes\n              must resolve a model object, and if a route\n              needs access to a parent route's model in order to\n              resolve a model (or just reuse the model from a parent),\n              it can call `this.modelFor(theNameOfParentRoute)` to\n              retrieve it. If the ancestor route's model was a promise,\n              its resolved result is returned.\n               Example\n               ```app/router.js\n              // ...\n               Router.map(function() {\n                this.route('post', { path: '/posts/:post_id' }, function() {\n                  this.route('comments');\n                });\n              });\n               export default Router;\n              ```\n               ```app/routes/post/comments.js\n              import Route from '@ember/routing/route';\n               export default class PostCommentsRoute extends Route {\n                model() {\n                  let post = this.modelFor('post');\n                   return post.comments;\n                }\n              }\n              ```\n               @method modelFor\n              @param {String} name the name of the route\n              @return {Object} the model object\n              @since 1.0.0\n              @public\n            */},{key:\"modelFor\",value:function modelFor(_name){var name;var owner=getOwner$2(this);!(owner instanceof EngineInstance)&&assert$1('Expected router owner to be an EngineInstance',owner instanceof EngineInstance);var transition=this._router&&this._router._routerMicrolib?this._router._routerMicrolib.activeTransition:undefined;// Only change the route name when there is an active transition.\n// Otherwise, use the passed in route name.\nif(owner.routable&&transition!==undefined){name=getEngineRouteName(owner,_name);}else{name=_name;}var route=owner.lookup(\"route:\".concat(name));// If we are mid-transition, we want to try and look up\n// resolved parent contexts on the current transitionEvent.\nif(transition!==undefined&&transition!==null){var modelLookupName=route&&route.routeName||name;if(Object.prototype.hasOwnProperty.call(transition.resolvedModels,modelLookupName)){return transition.resolvedModels[modelLookupName];}}return route===null||route===void 0?void 0:route.currentModel;}},{key:RENDER,value:/**\n              `this[RENDER]` is used to set up the rendering option for the outlet state.\n              @method this[RENDER]\n              @private\n             */function value(){this[RENDER_STATE]=buildRenderState(this);once(this._router,'_setOutlets');}},{key:\"willDestroy\",value:function willDestroy(){this.teardownViews();}/**\n              @private\n               @method teardownViews\n            */},{key:\"teardownViews\",value:function teardownViews(){if(this[RENDER_STATE]){this[RENDER_STATE]=undefined;once(this._router,'_setOutlets');}}/**\n              Allows you to produce custom metadata for the route.\n              The return value of this method will be attached to\n              its corresponding RouteInfoWithAttributes object.\n               Example\n               ```app/routes/posts/index.js\n              import Route from '@ember/routing/route';\n               export default class PostsIndexRoute extends Route {\n                buildRouteInfoMetadata() {\n                  return { title: 'Posts Page' }\n                }\n              }\n              ```\n               ```app/routes/application.js\n              import Route from '@ember/routing/route';\n              import { service } from '@ember/service';\n               export default class ApplicationRoute extends Route {\n                @service router\n                 constructor() {\n                  super(...arguments);\n                   this.router.on('routeDidChange', transition => {\n                    document.title = transition.to.metadata.title;\n                    // would update document's title to \"Posts Page\"\n                  });\n                }\n              }\n              ```\n              @method buildRouteInfoMetadata\n              @return any\n              @since 3.10.0\n              @public\n             */},{key:\"buildRouteInfoMetadata\",value:function buildRouteInfoMetadata(){}},{key:\"_paramsFor\",value:function _paramsFor(routeName,params){var transition=this._router._routerMicrolib.activeTransition;if(transition!==undefined){return this.paramsFor(routeName);}return params;}/** @deprecated Manually define your own store, such as with `@service store` */},{key:\"_store\",get:function get(){var owner=getOwner$2(this);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var routeName=this.routeName;return{find:function find(name,value){var modelClass=owner.factoryFor(\"model:\".concat(name));!Boolean(modelClass)&&assert$1(\"You used the dynamic segment `\".concat(name,\"_id` in your route \")+\"`\".concat(routeName,\"` for which Ember requires you provide a \")+\"data-loading implementation. Commonly, that is done by \"+\"adding a model hook implementation on the route \"+\"(`model({\".concat(name,\"_id}) {`) or by injecting an implemention of \")+\"a data store: `@service store;`.\",Boolean(modelClass));if(!modelClass){return;}modelClass=modelClass.class;!(typeof modelClass.find==='function')&&assert$1(\"You used the dynamic segment `\".concat(name,\"_id` in your route \")+\"`\".concat(routeName,\"` for which Ember requires you provide a \")+\"data-loading implementation. Commonly, that is done by \"+\"adding a model hook implementation on the route \"+\"(`model({\".concat(name,\"_id}) {`) or by injecting an implemention of \")+\"a data store: `@service store;`.\\n\\n\"+\"Rarely, applications may attempt to use a legacy behavior where \"+\"the model class (in this case `\".concat(name,\"`) is resolved and the \")+\"`find` method on that class is invoked to load data. In this \"+\"application, a model of `\".concat(name,\"` was found but it did not \")+\"provide a `find` method. You should not add a `find` \"+\"method to your model. Instead, please implement an appropriate \"+\"`model` hook on the `\".concat(routeName,\"` route.\"),typeof modelClass.find==='function');return modelClass.find(value);}};}/**\n              @private\n              @property _qp\n              */},{key:\"_qp\",get:function get(){var _this73=this;var combinedQueryParameterConfiguration={};var controllerName=this.controllerName||this.routeName;var owner=getOwner$2(this);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var controller=owner.lookup(\"controller:\".concat(controllerName));var queryParameterConfiguraton=get$2(this,'queryParams');var hasRouterDefinedQueryParams=Object.keys(queryParameterConfiguraton).length>0;if(controller){!(controller instanceof Controller)&&assert$1('Expected an instance of controller',controller instanceof Controller);// the developer has authored a controller class in their application for\n// this route find its query params and normalize their object shape them\n// merge in the query params for the route. As a mergedProperty,\n// Route#queryParams is always at least `{}`\nvar controllerDefinedQueryParameterConfiguration=get$2(controller,'queryParams')||[];var normalizedControllerQueryParameterConfiguration=normalizeControllerQueryParams(controllerDefinedQueryParameterConfiguration);combinedQueryParameterConfiguration=mergeEachQueryParams(normalizedControllerQueryParameterConfiguration,queryParameterConfiguraton);}else if(hasRouterDefinedQueryParams){// the developer has not defined a controller but *has* supplied route query params.\n// Generate a class for them so we can later insert default values\ncontroller=_generateController(owner,controllerName);combinedQueryParameterConfiguration=queryParameterConfiguraton;}var qps=[];var map={};var propertyNames=[];for(var propName in combinedQueryParameterConfiguration){if(!Object.prototype.hasOwnProperty.call(combinedQueryParameterConfiguration,propName)){continue;}// to support the dubious feature of using unknownProperty\n// on queryParams configuration\nif(propName==='unknownProperty'||propName==='_super'){// possible todo: issue deprecation warning?\ncontinue;}var desc=combinedQueryParameterConfiguration[propName];!desc&&assert$1(\"[BUG] missing query parameter configuration for \".concat(propName),desc);var scope=desc.scope||'model';var parts=undefined;if(scope==='controller'){parts=[];}var urlKey=desc.as||this.serializeQueryParamKey(propName);var defaultValue=get$2(controller,propName);defaultValue=copyDefaultValue(defaultValue);var type=desc.type||typeOf(defaultValue);var defaultValueSerialized=this.serializeQueryParam(defaultValue,urlKey,type);var scopedPropertyName=\"\".concat(controllerName,\":\").concat(propName);var qp={undecoratedDefaultValue:get$2(controller,propName),defaultValue:defaultValue,serializedDefaultValue:defaultValueSerialized,serializedValue:defaultValueSerialized,type:type,urlKey:urlKey,prop:propName,scopedPropertyName:scopedPropertyName,controllerName:controllerName,route:this,parts:parts,// provided later when stashNames is called if 'model' scope\nvalues:null,// provided later when setup is called. no idea why.\nscope:scope};map[propName]=map[urlKey]=map[scopedPropertyName]=qp;qps.push(qp);propertyNames.push(propName);}return{qps:qps,map:map,propertyNames:propertyNames,states:{/*\n                    Called when a query parameter changes in the URL, this route cares\n                    about that query parameter, but the route is not currently\n                    in the active route hierarchy.\n                  */inactive:function inactive(prop,value){var qp=map[prop];!qp&&assert$1('expected inactive callback to only be called for registered qps',qp);_this73._qpChanged(prop,value,qp);},/*\n                    Called when a query parameter changes in the URL, this route cares\n                    about that query parameter, and the route is currently\n                    in the active route hierarchy.\n                  */active:function active(prop,value){var qp=map[prop];!qp&&assert$1('expected active callback to only be called for registered qps',qp);_this73._qpChanged(prop,value,qp);return _this73._activeQPChanged(qp,value);},/*\n                    Called when a value of a query parameter this route handles changes in a controller\n                    and the route is currently in the active route hierarchy.\n                  */allowOverrides:function allowOverrides(prop,value){var qp=map[prop];!qp&&assert$1('expected allowOverrides callback to only be called for registered qps',qp);_this73._qpChanged(prop,value,qp);return _this73._updatingQPChanged(qp);}}};}// Set in reopen\n/**\n              Sends an action to the router, which will delegate it to the currently\n              active route hierarchy per the bubbling rules explained under `actions`.\n               Example\n               ```app/router.js\n              // ...\n               Router.map(function() {\n                this.route('index');\n              });\n               export default Router;\n              ```\n               ```app/routes/application.js\n              import Route from '@ember/routing/route';\n              import { action } from '@ember/object';\n               export default class ApplicationRoute extends Route {\n                @action\n                track(arg) {\n                  console.log(arg, 'was clicked');\n                }\n              }\n              ```\n               ```app/routes/index.js\n              import Route from '@ember/routing/route';\n              import { action } from '@ember/object';\n               export default class IndexRoute extends Route {\n                @action\n                trackIfDebug(arg) {\n                  if (debug) {\n                    this.send('track', arg);\n                  }\n                }\n              }\n              ```\n               @method send\n              @param {String} name the name of the action to trigger\n              @param {...*} args\n              @since 1.0.0\n              @public\n            */// Set with reopen to override parent behavior\n}]);}(EmberObject.extend(ActionHandler,Evented));_Route=Route;_defineProperty(Route,\"isRouteFactory\",true);decorateMethodV2(_Route.prototype,\"_store\",[computed]);decorateMethodV2(_Route.prototype,\"_qp\",[computed]);function getRenderState(route){return route[RENDER_STATE];}function buildRenderState(route){var _template;var owner=getOwner$2(route);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var name=route.routeName;var controller=owner.lookup(\"controller:\".concat(route.controllerName||name));!(controller instanceof Controller)&&assert$1('Expected an instance of controller',controller instanceof Controller);var model=route.currentModel;var template=owner.lookup(\"template:\".concat(route.templateName||name));var render={owner:owner,into:undefined,outlet:'main',name:name,controller:controller,model:model,template:(_template=template===null||template===void 0?void 0:template(owner))!==null&&_template!==void 0?_template:route._topLevelViewTemplate(owner)};{var LOG_VIEW_LOOKUPS=get$2(route._router,'namespace.LOG_VIEW_LOOKUPS');if(LOG_VIEW_LOOKUPS&&!template){info(\"Could not find \\\"\".concat(name,\"\\\" template. Nothing will be rendered\"),{fullName:\"template:\".concat(name)});}}return render;}function getFullQueryParams(router,state){if(state.fullQueryParams){return state.fullQueryParams;}var haveAllRouteInfosResolved=state.routeInfos.every(function(routeInfo){return routeInfo.route;});var fullQueryParamsState=_objectSpread({},state.queryParams);router._deserializeQueryParams(state.routeInfos,fullQueryParamsState);// only cache query params state if all routeinfos have resolved; it's possible\n// for lazy routes to not have resolved when `getFullQueryParams` is called, so\n// we wait until all routes have resolved prior to caching query params state\nif(haveAllRouteInfosResolved){state.fullQueryParams=fullQueryParamsState;}return fullQueryParamsState;}function getQueryParamsFor(route,state){state.queryParamsFor=state.queryParamsFor||{};var name=route.fullRouteName;var existing=state.queryParamsFor[name];if(existing){return existing;}var fullQueryParams=getFullQueryParams(route._router,state);var params=state.queryParamsFor[name]={};// Copy over all the query params for this route/controller into params hash.\n// SAFETY: Since `_qp` is protected we can't infer the type\nvar qps=get$2(route,'_qp').qps;var _iterator65=_createForOfIteratorHelper(qps),_step65;try{for(_iterator65.s();!(_step65=_iterator65.n()).done;){var qp=_step65.value;// Put deserialized qp on params hash.\nvar qpValueWasPassedIn=qp.prop in fullQueryParams;params[qp.prop]=qpValueWasPassedIn?fullQueryParams[qp.prop]:copyDefaultValue(qp.defaultValue);}}catch(err){_iterator65.e(err);}finally{_iterator65.f();}return params;}// FIXME: This should probably actually return a `NativeArray` if the passed in value is an Array.\nfunction copyDefaultValue(value){if(Array.isArray(value)){// SAFETY: We lost the type data about the array if we don't cast.\nreturn _A2(value.slice());}return value;}/*\n            Merges all query parameters from a controller with those from\n            a route, returning a new object and avoiding any mutations to\n            the existing objects.\n          */function mergeEachQueryParams(controllerQP,routeQP){var qps={};var keysAlreadyMergedOrSkippable={defaultValue:true,type:true,scope:true,as:true};// first loop over all controller qps, merging them with any matching route qps\n// into a new empty object to avoid mutating.\nfor(var cqpName in controllerQP){if(!Object.prototype.hasOwnProperty.call(controllerQP,cqpName)){continue;}qps[cqpName]=_objectSpread(_objectSpread({},controllerQP[cqpName]),routeQP[cqpName]);// allows us to skip this QP when we check route QPs.\nkeysAlreadyMergedOrSkippable[cqpName]=true;}// loop over all route qps, skipping those that were merged in the first pass\n// because they also appear in controller qps\nfor(var rqpName in routeQP){if(!Object.prototype.hasOwnProperty.call(routeQP,rqpName)||keysAlreadyMergedOrSkippable[rqpName]){continue;}qps[rqpName]=_objectSpread(_objectSpread({},routeQP[rqpName]),controllerQP[rqpName]);}return qps;}function addQueryParamsObservers(controller,propNames){propNames.forEach(function(prop){if(descriptorForProperty(controller,prop)===undefined){var desc=lookupDescriptor(controller,prop);if(desc!==null&&(typeof desc.get==='function'||typeof desc.set==='function')){defineProperty(controller,prop,dependentKeyCompat({get:desc.get,set:desc.set}));}}_addObserver(controller,\"\".concat(prop,\".[]\"),controller,controller._qpChanged,false);});}function getEngineRouteName(engine,routeName){if(engine.routable){var prefix=engine.mountPoint;if(routeName==='application'){return prefix;}else{return\"\".concat(prefix,\".\").concat(routeName);}}return routeName;}var defaultSerialize=Route.prototype.serialize;function hasDefaultSerialize(route){return route.serialize===defaultSerialize;}// Set these here so they can be overridden with extend\nRoute.reopen({mergedProperties:['queryParams'],queryParams:{},templateName:null,controllerName:null,send:function send(){for(var _len83=arguments.length,args=new Array(_len83),_key75=0;_key75<_len83;_key75++){args[_key75]=arguments[_key75];}!(!this.isDestroying&&!this.isDestroyed)&&assert$1(\"Attempted to call .send() with the action '\".concat(args[0],\"' on the destroyed route '\").concat(this.routeName,\"'.\"),!this.isDestroying&&!this.isDestroyed);if(this._router&&this._router._routerMicrolib||!isTesting()){var _this$_router2;(_this$_router2=this._router).send.apply(_this$_router2,args);}else{var _name33=args.shift();var _action3=this.actions[_name33];if(_action3){return _action3.apply(this,args);}}},/**\n              The controller associated with this route.\n               Example\n               ```app/routes/form.js\n              import Route from '@ember/routing/route';\n              import { action } from '@ember/object';\n               export default class FormRoute extends Route {\n                @action\n                willTransition(transition) {\n                  if (this.controller.get('userHasEnteredData') &&\n                      !confirm('Are you sure you want to abandon progress?')) {\n                    transition.abort();\n                  } else {\n                    // Bubble the `willTransition` action so that\n                    // parent routes can decide whether or not to abort.\n                    return true;\n                  }\n                }\n              }\n              ```\n               @property controller\n              @type Controller\n              @since 1.6.0\n              @public\n            */actions:{/**\n              This action is called when one or more query params have changed. Bubbles.\n               @method queryParamsDidChange\n              @param changed {Object} Keys are names of query params that have changed.\n              @param totalPresent {Object} Keys are names of query params that are currently set.\n              @param removed {Object} Keys are names of query params that have been removed.\n              @returns {boolean}\n              @private\n              */queryParamsDidChange:function queryParamsDidChange(changed,_totalPresent,removed){// SAFETY: Since `_qp` is protected we can't infer the type\nvar qpMap=get$2(this,'_qp').map;var totalChanged=Object.keys(changed).concat(Object.keys(removed));var _iterator66=_createForOfIteratorHelper(totalChanged),_step66;try{for(_iterator66.s();!(_step66=_iterator66.n()).done;){var change=_step66.value;var qp=qpMap[change];if(qp){var options=this._optionsForQueryParam(qp);!(options&&_typeof(options)==='object')&&assert$1('options exists',options&&_typeof(options)==='object');if(get$2(options,'refreshModel')&&this._router.currentState){this.refresh();break;}}}}catch(err){_iterator66.e(err);}finally{_iterator66.f();}return true;},finalizeQueryParamChange:function finalizeQueryParamChange(params,finalParams,transition){if(this.fullRouteName!=='application'){return true;}// Transition object is absent for intermediate transitions.\nif(!transition){return;}var routeInfos=transition[STATE_SYMBOL].routeInfos;var router=this._router;var qpMeta=router._queryParamsFor(routeInfos);var changes=router._qpUpdates;var qpUpdated=false;var replaceUrl;stashParamNames(router,routeInfos);var _iterator67=_createForOfIteratorHelper(qpMeta.qps),_step67;try{for(_iterator67.s();!(_step67=_iterator67.n()).done;){var qp=_step67.value;var route=qp.route;var controller=route.controller;var presentKey=qp.urlKey in params&&qp.urlKey;// Do a reverse lookup to see if the changed query\n// param URL key corresponds to a QP property on\n// this controller.\nvar value=void 0;var svalue=void 0;if(changes.has(qp.urlKey)){// Value updated in/before setupController\nvalue=get$2(controller,qp.prop);svalue=route.serializeQueryParam(value,qp.urlKey,qp.type);}else{if(presentKey){svalue=params[presentKey];if(svalue!==undefined){value=route.deserializeQueryParam(svalue,qp.urlKey,qp.type);}}else{// No QP provided; use default value.\nsvalue=qp.serializedDefaultValue;value=copyDefaultValue(qp.defaultValue);}}// SAFETY: Since `_qp` is protected we can't infer the type\ncontroller._qpDelegate=get$2(route,'_qp').states.inactive;var thisQueryParamChanged=svalue!==qp.serializedValue;if(thisQueryParamChanged){if(transition.queryParamsOnly&&replaceUrl!==false){var options=route._optionsForQueryParam(qp);var replaceConfigValue=get$2(options,'replace');if(replaceConfigValue){replaceUrl=true;}else if(replaceConfigValue===false){// Explicit pushState wins over any other replaceStates.\nreplaceUrl=false;}}_set5(controller,qp.prop,value);qpUpdated=true;}// Stash current serialized value of controller.\nqp.serializedValue=svalue;var thisQueryParamHasDefaultValue=qp.serializedDefaultValue===svalue;if(!thisQueryParamHasDefaultValue){finalParams.push({value:svalue,visible:true,key:presentKey||qp.urlKey});}}// Some QPs have been updated, and those changes need to be propogated\n// immediately. Eventually, we should work on making this async somehow.\n}catch(err){_iterator67.e(err);}finally{_iterator67.f();}if(qpUpdated===true){flushAsyncObservers(false);}if(replaceUrl){transition.method('replace');}qpMeta.qps.forEach(function(qp){// SAFETY: Since `_qp` is protected we can't infer the type\nvar routeQpMeta=get$2(qp.route,'_qp');var finalizedController=qp.route.controller;finalizedController['_qpDelegate']=get$2(routeQpMeta,'states.active');});router._qpUpdates.clear();return;}}});var emberRoutingRoute=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Route,defaultSerialize:defaultSerialize,getFullQueryParams:getFullQueryParams,getRenderState:getRenderState,hasDefaultSerialize:hasDefaultSerialize},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/routing/router\n          */function defaultDidTransition(infos){updatePaths(this);this._cancelSlowTransitionTimer();this.notifyPropertyChange('url');this.set('currentState',this.targetState);{// @ts-expect-error namespace isn't public\nif(this.namespace.LOG_TRANSITIONS){// eslint-disable-next-line no-console\nconsole.log(\"Transitioned into '\".concat(EmberRouter._routePath(infos),\"'\"));}}}function defaultWillTransition(oldInfos,newInfos){{// @ts-expect-error namespace isn't public\nif(this.namespace.LOG_TRANSITIONS){// eslint-disable-next-line no-console\nconsole.log(\"Preparing to transition from '\".concat(EmberRouter._routePath(oldInfos),\"' to '\").concat(EmberRouter._routePath(newInfos),\"'\"));}}}var freezeRouteInfo;{freezeRouteInfo=function freezeRouteInfo(transition){if(transition.from!==null&&!Object.isFrozen(transition.from)){Object.freeze(transition.from);}if(transition.to!==null&&!Object.isFrozen(transition.to)){Object.freeze(transition.to);}};}function K(){return this;}var slice=Array.prototype.slice;/**\n            The `EmberRouter` class manages the application state and URLs. Refer to\n            the [routing guide](https://guides.emberjs.com/release/routing/) for documentation.\n\n            @class EmberRouter\n            @extends EmberObject\n            @uses Evented\n            @public\n          */var EmberRouter=/*#__PURE__*/function(_EmberObject$extend3){// Note that owner is actually required in this scenario, but since it is strictly\n// optional in other contexts trying to make it required here confuses TS.\nfunction EmberRouter(owner){var _this74;_classCallCheck(this,EmberRouter);_this74=_callSuper(this,EmberRouter,[owner]);/**\n             Represents the URL of the root of the application, often '/'. This prefix is\n              assumed on all routes defined on this router.\n               @property rootURL\n              @default '/'\n              @public\n            */// Set with reopen to allow overriding via extend\n/**\n             The `location` property determines the type of URL's that your\n              application will use.\n               The following location types are currently available:\n               * `history` - use the browser's history API to make the URLs look just like any standard URL\n              * `hash` - use `#` to separate the server part of the URL from the Ember part: `/blog/#/posts/new`\n              * `none` - do not store the Ember URL in the actual browser URL (mainly used for testing)\n              * `auto` - use the best option based on browser capabilities: `history` if possible, then `hash` if possible, otherwise `none`\n               This value is defaulted to `history` by the `locationType` setting of `/config/environment.js`\n               @property location\n              @default 'hash'\n              @see {Location}\n              @public\n            */// Set with reopen to allow overriding via extend\n_defineProperty(_this74,\"_routerMicrolib\",void 0);_defineProperty(_this74,\"_didSetupRouter\",false);_defineProperty(_this74,\"_initialTransitionStarted\",false);_defineProperty(_this74,\"currentURL\",null);_defineProperty(_this74,\"currentRouteName\",null);_defineProperty(_this74,\"currentPath\",null);_defineProperty(_this74,\"currentRoute\",null);_defineProperty(_this74,\"_qpCache\",Object.create(null));// Set of QueryParam['urlKey']\n_defineProperty(_this74,\"_qpUpdates\",new Set());_defineProperty(_this74,\"_queuedQPChanges\",{});_defineProperty(_this74,\"_bucketCache\",void 0);_defineProperty(_this74,\"_toplevelView\",null);_defineProperty(_this74,\"_handledErrors\",new Set());_defineProperty(_this74,\"_engineInstances\",Object.create(null));_defineProperty(_this74,\"_engineInfoByRoute\",Object.create(null));_defineProperty(_this74,\"_routerService\",void 0);_defineProperty(_this74,\"_slowTransitionTimer\",null);_defineProperty(_this74,\"namespace\",void 0);_defineProperty(_this74,\"currentState\",null);_defineProperty(_this74,\"targetState\",null);!owner&&assert$1('BUG: Missing owner',owner);_this74._resetQueuedQueryParameterChanges();_this74.namespace=owner.lookup('application:main');var bucketCache=owner.lookup(privatize(_templateObject3||(_templateObject3=_taggedTemplateLiteral([\"-bucket-cache:main\"]))));!(bucketCache instanceof BucketCache)&&assert$1('BUG: BucketCache should always be present',bucketCache instanceof BucketCache);_this74._bucketCache=bucketCache;var routerService=owner.lookup('service:router');!(routerService!==undefined)&&assert$1('BUG: RouterService should always be present',routerService!==undefined);_this74._routerService=routerService;return _this74;}_inherits(EmberRouter,_EmberObject$extend3);return _createClass(EmberRouter,[{key:\"_initRouterJs\",value:function _initRouterJs(){var location=get$2(this,'location');var router=this;var owner=getOwner$1(this);!owner&&assert$1('Router is unexpectedly missing an owner',owner);var seen=Object.create(null);var PrivateRouter=/*#__PURE__*/function(_Router){function PrivateRouter(){_classCallCheck(this,PrivateRouter);return _callSuper(this,PrivateRouter,arguments);}_inherits(PrivateRouter,_Router);return _createClass(PrivateRouter,[{key:\"getRoute\",value:function getRoute(name){var routeName=name;var routeOwner=owner;var engineInfo=router._engineInfoByRoute[routeName];if(engineInfo){var engineInstance=router._getEngineInstance(engineInfo);routeOwner=engineInstance;routeName=engineInfo.localFullName;}var fullRouteName=\"route:\".concat(routeName);!routeOwner&&assert$1('Route is unexpectedly missing an owner',routeOwner);var route=routeOwner.lookup(fullRouteName);if(seen[name]){!route&&assert$1('seen routes should exist',route);return route;}seen[name]=true;if(!route){// SAFETY: this is configured in `commonSetupRegistry` in the\n// `@ember/application/lib` package.\nvar DefaultRoute=routeOwner.factoryFor('route:basic').class;routeOwner.register(fullRouteName,DefaultRoute.extend());route=routeOwner.lookup(fullRouteName);{if(router.namespace.LOG_ACTIVE_GENERATION){info(\"generated -> \".concat(fullRouteName),{fullName:fullRouteName});}}}route._setRouteName(routeName);if(engineInfo&&!hasDefaultSerialize(route)){throw new Error('Defining a custom serialize method on an Engine route is not supported.');}return route;}},{key:\"getSerializer\",value:function getSerializer(name){var engineInfo=router._engineInfoByRoute[name];// If this is not an Engine route, we fall back to the handler for serialization\nif(!engineInfo){return;}return engineInfo.serializeMethod||defaultSerialize;}},{key:\"updateURL\",value:function updateURL(path){once(function(){location.setURL(path);_set5(router,'currentURL',path);});}// TODO: merge into routeDidChange\n},{key:\"didTransition\",value:function didTransition(infos){!(router.didTransition===defaultDidTransition)&&assert$1('You attempted to override the \"didTransition\" method which has been deprecated. Please inject the router service and listen to the \"routeDidChange\" event.',router.didTransition===defaultDidTransition);router.didTransition(infos);}// TODO: merge into routeWillChange\n},{key:\"willTransition\",value:function willTransition(oldInfos,newInfos){!(router.willTransition===defaultWillTransition)&&assert$1('You attempted to override the \"willTransition\" method which has been deprecated. Please inject the router service and listen to the \"routeWillChange\" event.',router.willTransition===defaultWillTransition);router.willTransition(oldInfos,newInfos);}},{key:\"triggerEvent\",value:function triggerEvent(routeInfos,ignoreFailure,name,args){return _triggerEvent.bind(router)(routeInfos,ignoreFailure,name,args);}},{key:\"routeWillChange\",value:function routeWillChange(transition){router.trigger('routeWillChange',transition);{freezeRouteInfo(transition);}router._routerService.trigger('routeWillChange',transition);// in case of intermediate transition we update the current route\n// to make router.currentRoute.name consistent with router.currentRouteName\n// see https://github.com/emberjs/ember.js/issues/19449\nif(transition.isIntermediate){router.set('currentRoute',transition.to);}}},{key:\"routeDidChange\",value:function routeDidChange(transition){router.set('currentRoute',transition.to);once(function(){router.trigger('routeDidChange',transition);{freezeRouteInfo(transition);}router._routerService.trigger('routeDidChange',transition);});}},{key:\"transitionDidError\",value:function transitionDidError(error,transition){if(error.wasAborted||transition.isAborted){// If the error was a transition erorr or the transition aborted\n// log the abort.\nreturn logAbort(transition);}else{// Otherwise trigger the \"error\" event to attempt an intermediate\n// transition into an error substate\ntransition.trigger(false,'error',error.error,transition,error.route);if(router._isErrorHandled(error.error)){// If we handled the error with a substate just roll the state back on\n// the transition and send the \"routeDidChange\" event for landing on\n// the error substate and return the error.\ntransition.rollback();this.routeDidChange(transition);return error.error;}else{// If it was not handled, abort the transition completely and return\n// the error.\ntransition.abort();return error.error;}}}},{key:\"replaceURL\",value:function replaceURL(url){if(location.replaceURL){var doReplaceURL=function doReplaceURL(){location.replaceURL(url);_set5(router,'currentURL',url);};once(doReplaceURL);}else{this.updateURL(url);}}}]);}(Router);var routerMicrolib=this._routerMicrolib=new PrivateRouter();var dslCallbacks=this.constructor.dslCallbacks||[K];var dsl=this._buildDSL();dsl.route('application',{path:'/',resetNamespace:true,overrideNameAssertion:true},function(){for(var i=0;i<dslCallbacks.length;i++){dslCallbacks[i].call(this);}});{if(this.namespace.LOG_TRANSITIONS_INTERNAL){routerMicrolib.log=console.log.bind(console);// eslint-disable-line no-console\n}}routerMicrolib.map(dsl.generate());}},{key:\"_buildDSL\",value:function _buildDSL(){var enableLoadingSubstates=this._hasModuleBasedResolver();var router=this;var owner=getOwner$1(this);!owner&&assert$1('Router is unexpectedly missing an owner',owner);var options={enableLoadingSubstates:enableLoadingSubstates,resolveRouteMap:function resolveRouteMap(name){return owner.factoryFor(\"route-map:\".concat(name));},addRouteForEngine:function addRouteForEngine(name,engineInfo){if(!router._engineInfoByRoute[name]){router._engineInfoByRoute[name]=engineInfo;}}};return new DSLImpl(null,options);}/*\n              Resets all pending query parameter changes.\n              Called after transitioning to a new route\n              based on query parameter changes.\n            */},{key:\"_resetQueuedQueryParameterChanges\",value:function _resetQueuedQueryParameterChanges(){this._queuedQPChanges={};}},{key:\"_hasModuleBasedResolver\",value:function _hasModuleBasedResolver(){var owner=getOwner$1(this);!owner&&assert$1('Router is unexpectedly missing an owner',owner);var resolver=get$2(owner,'application.__registry__.resolver.moduleBasedResolver');return Boolean(resolver);}/**\n              Initializes the current router instance and sets up the change handling\n              event listeners used by the instances `location` implementation.\n               A property named `initialURL` will be used to determine the initial URL.\n              If no value is found `/` will be used.\n               @method startRouting\n              @private\n            */},{key:\"startRouting\",value:function startRouting(){if(this.setupRouter()){var initialURL=get$2(this,'initialURL');if(initialURL===undefined){initialURL=get$2(this,'location').getURL();}var initialTransition=this.handleURL(initialURL);if(initialTransition&&initialTransition.error){throw initialTransition.error;}}}},{key:\"setupRouter\",value:function setupRouter(){var _this75=this;if(this._didSetupRouter){return false;}this._didSetupRouter=true;this._setupLocation();var location=get$2(this,'location');// Allow the Location class to cancel the router setup while it refreshes\n// the page\nif(get$2(location,'cancelRouterSetup')){return false;}this._initRouterJs();location.onUpdateURL(function(url){_this75.handleURL(url);});return true;}},{key:\"_setOutlets\",value:function _setOutlets(){// This is triggered async during Route#willDestroy.\n// If the router is also being destroyed we do not want to\n// to create another this._toplevelView (and leak the renderer)\nif(this.isDestroying||this.isDestroyed){return;}var routeInfos=this._routerMicrolib.currentRouteInfos;if(!routeInfos){return;}var root=null;var parent=null;var _iterator68=_createForOfIteratorHelper(routeInfos),_step68;try{for(_iterator68.s();!(_step68=_iterator68.n()).done;){var routeInfo=_step68.value;var route=routeInfo.route;var render=getRenderState(route);if(render){var state={render:render,outlets:{main:undefined}};if(parent){parent.outlets.main=state;}else{root=state;}parent=state;}else{// It used to be that we would create a stub entry and keep traversing,\n// but I don't think that is necessary anymore – if a parent route did\n// not render, then the child routes have nowhere to render into these\n// days. That wasn't always the case since in the past any route can\n// render into any other route's outlets.\nbreak;}}// when a transitionTo happens after the validation phase\n// during the initial transition _setOutlets is called\n// when no routes are active. However, it will get called\n// again with the correct values during the next turn of\n// the runloop\n}catch(err){_iterator68.e(err);}finally{_iterator68.f();}if(root===null){return;}if(!this._toplevelView){var owner=getOwner$1(this);!owner&&assert$1('Router is unexpectedly missing an owner',owner);// SAFETY: we don't presently have any type registries internally to make\n// this safe, so in each of these cases we assume that nothing *else* is\n// registered at this `FullName`, and simply check to make sure that\n// *something* is.\nvar _OutletView=owner.factoryFor('view:-outlet');!(_OutletView!==undefined)&&assert$1('[BUG] unexpectedly missing `view:-outlet`',_OutletView!==undefined);var application=owner.lookup('application:main');!(application!==undefined)&&assert$1('[BUG] unexpectedly missing `application:-main`',application!==undefined);var environment=owner.lookup('-environment:main');!(environment!==undefined)&&assert$1('[BUG] unexpectedly missing `-environment:main`',environment!==undefined);var template=owner.lookup('template:-outlet');!(template!==undefined)&&assert$1('[BUG] unexpectedly missing `template:-outlet`',template!==undefined);this._toplevelView=_OutletView.create({environment:environment,template:template,application:application});this._toplevelView.setOutletState(root);// TODO(SAFETY): At least one test runs without this set correctly. At a\n// later time, update the test to configure this correctly. The test ID:\n// `Router Service - non application test:  RouterService#transitionTo with basic route`\nvar instance=owner.lookup('-application-instance:main');// let instance = owner.lookup('-application-instance:main') as ApplicationInstance | undefined;\n// assert('[BUG] unexpectedly missing `-application-instance:main`', instance !== undefined);\nif(instance){// SAFETY: LOL. This is calling a deprecated API with a type that we\n// cannot actually confirm at a type level *is* a `ViewMixin`. Seems:\n// not great on multiple fronts!\ninstance.didCreateRootView(this._toplevelView);}}else{this._toplevelView.setOutletState(root);}}},{key:\"handleURL\",value:function handleURL(url){// Until we have an ember-idiomatic way of accessing #hashes, we need to\n// remove it because router.js doesn't know how to handle it.\nvar _url=url.split(/#(.+)?/)[0];return this._doURLTransition('handleURL',_url);}},{key:\"_doURLTransition\",value:function _doURLTransition(routerJsMethod,url){this._initialTransitionStarted=true;var transition=this._routerMicrolib[routerJsMethod](url||'/');didBeginTransition(transition,this);return transition;}/**\n              Transition the application into another route. The route may\n              be either a single route or route path:\n               @method transitionTo\n              @param {String} [name] the name of the route or a URL\n              @param {...Object} models the model(s) or identifier(s) to be used while\n                transitioning to the route.\n              @param {Object} [options] optional hash with a queryParams property\n                containing a mapping of query parameters\n              @return {Transition} the transition object associated with this\n                attempted transition\n              @public\n            */},{key:\"transitionTo\",value:function transitionTo(){for(var _len84=arguments.length,args=new Array(_len84),_key76=0;_key76<_len84;_key76++){args[_key76]=arguments[_key76];}if(resemblesURL(args[0])){!(!this.isDestroying&&!this.isDestroyed)&&assert$1(\"A transition was attempted from '\".concat(this.currentRouteName,\"' to '\").concat(args[0],\"' but the application instance has already been destroyed.\"),!this.isDestroying&&!this.isDestroyed);return this._doURLTransition('transitionTo',args[0]);}var _extractRouteArgs=extractRouteArgs(args),routeName=_extractRouteArgs.routeName,models=_extractRouteArgs.models,queryParams=_extractRouteArgs.queryParams;!(!this.isDestroying&&!this.isDestroyed)&&assert$1(\"A transition was attempted from '\".concat(this.currentRouteName,\"' to '\").concat(routeName,\"' but the application instance has already been destroyed.\"),!this.isDestroying&&!this.isDestroyed);return this._doTransition(routeName,models,queryParams);}},{key:\"intermediateTransitionTo\",value:function intermediateTransitionTo(name){var _this$_routerMicrolib;for(var _len85=arguments.length,args=new Array(_len85>1?_len85-1:0),_key77=1;_key77<_len85;_key77++){args[_key77-1]=arguments[_key77];}(_this$_routerMicrolib=this._routerMicrolib).intermediateTransitionTo.apply(_this$_routerMicrolib,[name].concat(args));updatePaths(this);{var infos=this._routerMicrolib.currentRouteInfos;if(this.namespace.LOG_TRANSITIONS){!infos&&assert$1('expected infos to be set',infos);// eslint-disable-next-line no-console\nconsole.log(\"Intermediate-transitioned into '\".concat(EmberRouter._routePath(infos),\"'\"));}}}/**\n              Similar to `transitionTo`, but instead of adding the destination to the browser's URL history,\n              it replaces the entry for the current route.\n              When the user clicks the \"back\" button in the browser, there will be fewer steps.\n              This is most commonly used to manage redirects in a way that does not cause confusing additions\n              to the user's browsing history.\n               @method replaceWith\n              @param {String} [name] the name of the route or a URL\n              @param {...Object} models the model(s) or identifier(s) to be used while\n                transitioning to the route.\n              @param {Object} [options] optional hash with a queryParams property\n                containing a mapping of query parameters\n              @return {Transition} the transition object associated with this\n                attempted transition\n              @public\n            */},{key:\"replaceWith\",value:function replaceWith(){return this.transitionTo.apply(this,arguments).method('replace');}},{key:\"generate\",value:function generate(name){var _this$_routerMicrolib2;for(var _len86=arguments.length,args=new Array(_len86>1?_len86-1:0),_key78=1;_key78<_len86;_key78++){args[_key78-1]=arguments[_key78];}var url=(_this$_routerMicrolib2=this._routerMicrolib).generate.apply(_this$_routerMicrolib2,[name].concat(args));!(typeof this.location!=='string')&&assert$1('expected non-string location',typeof this.location!=='string');return this.location.formatURL(url);}/**\n              Determines if the supplied route is currently active.\n               @method isActive\n              @param routeName\n              @return {Boolean}\n              @private\n            */},{key:\"isActive\",value:function isActive(routeName){return this._routerMicrolib.isActive(routeName);}/**\n              An alternative form of `isActive` that doesn't require\n              manual concatenation of the arguments into a single\n              array.\n               @method isActiveIntent\n              @param routeName\n              @param models\n              @param queryParams\n              @return {Boolean}\n              @private\n              @since 1.7.0\n            */},{key:\"isActiveIntent\",value:function isActiveIntent(routeName,models,queryParams){return this.currentState.isActiveIntent(routeName,models,queryParams);}},{key:\"send\",value:function send(name){var _this$_routerMicrolib3;for(var _len87=arguments.length,args=new Array(_len87>1?_len87-1:0),_key79=1;_key79<_len87;_key79++){args[_key79-1]=arguments[_key79];}/*name, context*/(_this$_routerMicrolib3=this._routerMicrolib).trigger.apply(_this$_routerMicrolib3,[name].concat(args));}/**\n              Does this router instance have the given route.\n               @method hasRoute\n              @return {Boolean}\n              @private\n            */},{key:\"hasRoute\",value:function hasRoute(route){return this._routerMicrolib.hasRoute(route);}/**\n              Resets the state of the router by clearing the current route\n              handlers and deactivating them.\n               @private\n              @method reset\n             */},{key:\"reset\",value:function reset(){this._didSetupRouter=false;this._initialTransitionStarted=false;if(this._routerMicrolib){this._routerMicrolib.reset();}}},{key:\"willDestroy\",value:function willDestroy(){if(this._toplevelView){this._toplevelView.destroy();this._toplevelView=null;}_superPropGet(EmberRouter,\"willDestroy\",this,3)([]);this.reset();var instances=this._engineInstances;for(var _name34 in instances){var instanceMap=instances[_name34];!instanceMap&&assert$1('has instanceMap',instanceMap);for(var id in instanceMap){var instance=instanceMap[id];!instance&&assert$1('has instance',instance);run$1(instance,'destroy');}}}/*\n              Called when an active route's query parameter has changed.\n              These changes are batched into a runloop run and trigger\n              a single transition.\n            */},{key:\"_activeQPChanged\",value:function _activeQPChanged(queryParameterName,newValue){this._queuedQPChanges[queryParameterName]=newValue;once(this,this._fireQueryParamTransition);}// The queryParameterName is QueryParam['urlKey']\n},{key:\"_updatingQPChanged\",value:function _updatingQPChanged(queryParameterName){this._qpUpdates.add(queryParameterName);}/*\n              Triggers a transition to a route based on query parameter changes.\n              This is called once per runloop, to batch changes.\n               e.g.\n               if these methods are called in succession:\n              this._activeQPChanged('foo', '10');\n                // results in _queuedQPChanges = { foo: '10' }\n              this._activeQPChanged('bar', false);\n                // results in _queuedQPChanges = { foo: '10', bar: false }\n               _queuedQPChanges will represent both of these changes\n              and the transition using `transitionTo` will be triggered\n              once.\n            */},{key:\"_fireQueryParamTransition\",value:function _fireQueryParamTransition(){this.transitionTo({queryParams:this._queuedQPChanges});this._resetQueuedQueryParameterChanges();}},{key:\"_setupLocation\",value:function _setupLocation(){var location=this.location;var rootURL=this.rootURL;var owner=getOwner$1(this);!owner&&assert$1('Router is unexpectedly missing an owner',owner);if('string'===typeof location){var resolvedLocation=owner.lookup(\"location:\".concat(location));!resolvedLocation&&assert$1(\"Could not resolve a location class at 'location:\".concat(location,\"'\"),resolvedLocation);location=_set5(this,'location',resolvedLocation);}if(location!==null&&_typeof(location)==='object'){if(rootURL){_set5(location,'rootURL',rootURL);}// ensure that initState is called AFTER the rootURL is set on\n// the location instance\nif(typeof location.initState==='function'){location.initState();}}}/**\n              Serializes the given query params according to their QP meta information.\n               @private\n              @method _serializeQueryParams\n              @param {Arrray<RouteInfo>} routeInfos\n              @param {Object} queryParams\n              @return {Void}\n            */},{key:\"_serializeQueryParams\",value:function _serializeQueryParams(routeInfos,queryParams){var _this76=this;forEachQueryParam(this,routeInfos,queryParams,function(key,value,qp){if(qp){delete queryParams[key];queryParams[qp.urlKey]=qp.route.serializeQueryParam(value,qp.urlKey,qp.type);}else if(value===undefined){return;// We don't serialize undefined values\n}else{queryParams[key]=_this76._serializeQueryParam(value,typeOf(value));}});}/**\n              Serializes the value of a query parameter based on a type\n               @private\n              @method _serializeQueryParam\n              @param {Object} value\n              @param {String} type\n            */},{key:\"_serializeQueryParam\",value:function _serializeQueryParam(value,type){if(value===null||value===undefined){return value;}else if(type==='array'){return JSON.stringify(value);}return\"\".concat(value);}/**\n              Deserializes the given query params according to their QP meta information.\n               @private\n              @method _deserializeQueryParams\n              @param {Array<RouteInfo>} routeInfos\n              @param {Object} queryParams\n              @return {Void}\n            */},{key:\"_deserializeQueryParams\",value:function _deserializeQueryParams(routeInfos,queryParams){forEachQueryParam(this,routeInfos,queryParams,function(key,value,qp){// If we don't have QP meta info for a given key, then we do nothing\n// because all values will be treated as strings\nif(qp){delete queryParams[key];queryParams[qp.prop]=qp.route.deserializeQueryParam(value,qp.urlKey,qp.type);}});}/**\n              Deserializes the value of a query parameter based on a default type\n               @private\n              @method _deserializeQueryParam\n              @param {Object} value\n              @param {String} defaultType\n            */},{key:\"_deserializeQueryParam\",value:function _deserializeQueryParam(value,defaultType){if(value===null||value===undefined){return value;}else if(defaultType==='boolean'){return value==='true';}else if(defaultType==='number'){return Number(value).valueOf();}else if(defaultType==='array'){return _A2(JSON.parse(value));}return value;}/**\n              Removes (prunes) any query params with default values from the given QP\n              object. Default values are determined from the QP meta information per key.\n               @private\n              @method _pruneDefaultQueryParamValues\n              @param {Array<RouteInfo>} routeInfos\n              @param {Object} queryParams\n              @return {Void}\n            */},{key:\"_pruneDefaultQueryParamValues\",value:function _pruneDefaultQueryParamValues(routeInfos,queryParams){var qps=this._queryParamsFor(routeInfos);for(var key in queryParams){var qp=qps.map[key];if(qp&&qp.serializedDefaultValue===queryParams[key]){delete queryParams[key];}}}},{key:\"_doTransition\",value:function _doTransition(_targetRouteName,models,_queryParams,_fromRouterService){var _this$_routerMicrolib4;var targetRouteName=_targetRouteName||getActiveTargetName(this._routerMicrolib);!(Boolean(targetRouteName)&&this._routerMicrolib.hasRoute(targetRouteName))&&assert$1(\"The route \".concat(targetRouteName,\" was not found\"),Boolean(targetRouteName)&&this._routerMicrolib.hasRoute(targetRouteName));this._initialTransitionStarted=true;var queryParams={};this._processActiveTransitionQueryParams(targetRouteName,models,queryParams,_queryParams);Object.assign(queryParams,_queryParams);this._prepareQueryParams(targetRouteName,models,queryParams,Boolean(_fromRouterService));var transition=(_this$_routerMicrolib4=this._routerMicrolib).transitionTo.apply(_this$_routerMicrolib4,[targetRouteName].concat(_toConsumableArray(models),[{queryParams:queryParams}]));didBeginTransition(transition,this);return transition;}},{key:\"_processActiveTransitionQueryParams\",value:function _processActiveTransitionQueryParams(targetRouteName,models,queryParams,_queryParams){// merge in any queryParams from the active transition which could include\n// queryParams from the url on initial load.\nif(!this._routerMicrolib.activeTransition){return;}var unchangedQPs={};var qpUpdates=this._qpUpdates;var params=getFullQueryParams(this,this._routerMicrolib.activeTransition[STATE_SYMBOL]);for(var key in params){if(!qpUpdates.has(key)){unchangedQPs[key]=params[key];}}// We need to fully scope queryParams so that we can create one object\n// that represents both passed-in queryParams and ones that aren't changed\n// from the active transition.\nthis._fullyScopeQueryParams(targetRouteName,models,_queryParams);this._fullyScopeQueryParams(targetRouteName,models,unchangedQPs);Object.assign(queryParams,unchangedQPs);}/**\n              Prepares the query params for a URL or Transition. Restores any undefined QP\n              keys/values, serializes all values, and then prunes any default values.\n               @private\n              @method _prepareQueryParams\n              @param {String} targetRouteName\n              @param {Array<Object>} models\n              @param {Object} queryParams\n              @param {boolean} keepDefaultQueryParamValues\n              @return {Void}\n            */},{key:\"_prepareQueryParams\",value:function _prepareQueryParams(targetRouteName,models,queryParams,_fromRouterService){var state=calculatePostTransitionState(this,targetRouteName,models);this._hydrateUnsuppliedQueryParams(state,queryParams,Boolean(_fromRouterService));this._serializeQueryParams(state.routeInfos,queryParams);if(!_fromRouterService){this._pruneDefaultQueryParamValues(state.routeInfos,queryParams);}}/**\n              Returns the meta information for the query params of a given route. This\n              will be overridden to allow support for lazy routes.\n               @private\n              @method _getQPMeta\n              @param {RouteInfo} routeInfo\n              @return {Object}\n            */},{key:\"_getQPMeta\",value:function _getQPMeta(routeInfo){var route=routeInfo.route;return route&&get$2(route,'_qp');}/**\n              Returns a merged query params meta object for a given set of routeInfos.\n              Useful for knowing what query params are available for a given route hierarchy.\n               @private\n              @method _queryParamsFor\n              @param {Array<RouteInfo>} routeInfos\n              @return {Object}\n             */},{key:\"_queryParamsFor\",value:function _queryParamsFor(routeInfos){var routeInfoLength=routeInfos.length;var leafRouteName=routeInfos[routeInfoLength-1].name;var cached=this._qpCache[leafRouteName];if(cached!==undefined){return cached;}var shouldCache=true;var map={};var qps=[];var qpsByUrlKey={};var qpMeta;var urlKey;var qpOther;var _iterator69=_createForOfIteratorHelper(routeInfos),_step69;try{for(_iterator69.s();!(_step69=_iterator69.n()).done;){var routeInfo=_step69.value;qpMeta=this._getQPMeta(routeInfo);if(!qpMeta){shouldCache=false;continue;}// Loop over each QP to make sure we don't have any collisions by urlKey\nvar _iterator70=_createForOfIteratorHelper(qpMeta.qps),_step70;try{for(_iterator70.s();!(_step70=_iterator70.n()).done;){var qp=_step70.value;{urlKey=qp.urlKey;qpOther=qpsByUrlKey[urlKey];if(qpOther&&qpOther.controllerName!==qp.controllerName){assert$1(\"You're not allowed to have more than one controller property map to the same query param key, but both `\".concat(qpOther.scopedPropertyName,\"` and `\").concat(qp.scopedPropertyName,\"` map to `\").concat(urlKey,\"`. You can fix this by mapping one of the controller properties to a different query param key via the `as` config option, e.g. `\").concat(qpOther.prop,\": { as: 'other-\").concat(qpOther.prop,\"' }`\"),false);}qpsByUrlKey[urlKey]=qp;}qps.push(qp);}}catch(err){_iterator70.e(err);}finally{_iterator70.f();}Object.assign(map,qpMeta.map);}}catch(err){_iterator69.e(err);}finally{_iterator69.f();}var finalQPMeta={qps:qps,map:map};if(shouldCache){this._qpCache[leafRouteName]=finalQPMeta;}return finalQPMeta;}/**\n              Maps all query param keys to their fully scoped property name of the form\n              `controllerName:propName`.\n               @private\n              @method _fullyScopeQueryParams\n              @param {String} leafRouteName\n              @param {Array<Object>} contexts\n              @param {Object} queryParams\n              @return {Void}\n            */},{key:\"_fullyScopeQueryParams\",value:function _fullyScopeQueryParams(leafRouteName,contexts,queryParams){var state=calculatePostTransitionState(this,leafRouteName,contexts);var routeInfos=state.routeInfos;var qpMeta;var _iterator71=_createForOfIteratorHelper(routeInfos),_step71;try{for(_iterator71.s();!(_step71=_iterator71.n()).done;){var routeInfo=_step71.value;qpMeta=this._getQPMeta(routeInfo);if(!qpMeta){continue;}var _iterator72=_createForOfIteratorHelper(qpMeta.qps),_step72;try{for(_iterator72.s();!(_step72=_iterator72.n()).done;){var qp=_step72.value;var presentProp=qp.prop in queryParams&&qp.prop||qp.scopedPropertyName in queryParams&&qp.scopedPropertyName||qp.urlKey in queryParams&&qp.urlKey;if(presentProp){if(presentProp!==qp.scopedPropertyName){queryParams[qp.scopedPropertyName]=queryParams[presentProp];delete queryParams[presentProp];}}}}catch(err){_iterator72.e(err);}finally{_iterator72.f();}}}catch(err){_iterator71.e(err);}finally{_iterator71.f();}}/**\n              Hydrates (adds/restores) any query params that have pre-existing values into\n              the given queryParams hash. This is what allows query params to be \"sticky\"\n              and restore their last known values for their scope.\n               @private\n              @method _hydrateUnsuppliedQueryParams\n              @param {TransitionState} state\n              @param {Object} queryParams\n              @return {Void}\n            */},{key:\"_hydrateUnsuppliedQueryParams\",value:function _hydrateUnsuppliedQueryParams(state,queryParams,_fromRouterService){var routeInfos=state.routeInfos;var appCache=this._bucketCache;var qpMeta;var qp;var presentProp;var _iterator73=_createForOfIteratorHelper(routeInfos),_step73;try{for(_iterator73.s();!(_step73=_iterator73.n()).done;){var routeInfo=_step73.value;qpMeta=this._getQPMeta(routeInfo);if(!qpMeta){continue;}// Needs to stay for index loop to avoid throwIfClosureRequired\nfor(var j=0,qpLen=qpMeta.qps.length;j<qpLen;++j){qp=qpMeta.qps[j];!qp&&assert$1('expected qp',qp);presentProp=qp.prop in queryParams&&qp.prop||qp.scopedPropertyName in queryParams&&qp.scopedPropertyName||qp.urlKey in queryParams&&qp.urlKey;!function(){if(qp.urlKey===presentProp||qp.scopedPropertyName===presentProp){return true;}if(_fromRouterService&&presentProp!==false&&qp.urlKey!==qp.prop){// assumptions (mainly from current transitionTo_test):\n// - this is only supposed to be run when there is an alias to a query param and the alias is used to set the param\n// - when there is no alias: qp.urlKey == qp.prop\nreturn false;}return true;}()&&assert$1(\"You passed the `\".concat(presentProp,\"` query parameter during a transition into \").concat(qp.route.routeName,\", please update to \").concat(qp.urlKey),function(){if(qp.urlKey===presentProp||qp.scopedPropertyName===presentProp){return true;}if(_fromRouterService&&presentProp!==false&&qp.urlKey!==qp.prop){return false;}return true;}());if(presentProp){if(presentProp!==qp.scopedPropertyName){queryParams[qp.scopedPropertyName]=queryParams[presentProp];delete queryParams[presentProp];}}else{var cacheKey=calculateCacheKey(qp.route.fullRouteName,qp.parts,state.params);!appCache&&assert$1('ROUTER BUG: expected appCache to be defined. This is an internal bug, please open an issue on Github if you see this message!',appCache);queryParams[qp.scopedPropertyName]=appCache.lookup(cacheKey,qp.prop,qp.defaultValue);}}}}catch(err){_iterator73.e(err);}finally{_iterator73.f();}}},{key:\"_scheduleLoadingEvent\",value:function _scheduleLoadingEvent(transition,originRoute){this._cancelSlowTransitionTimer();this._slowTransitionTimer=scheduleOnce('routerTransitions',this,this._handleSlowTransition,transition,originRoute);}},{key:\"_handleSlowTransition\",value:function _handleSlowTransition(transition,originRoute){if(!this._routerMicrolib.activeTransition){// Don't fire an event if we've since moved on from\n// the transition that put us in a loading state.\nreturn;}var targetState=new RouterState(this,this._routerMicrolib,this._routerMicrolib.activeTransition[STATE_SYMBOL]);this.set('targetState',targetState);transition.trigger(true,'loading',transition,originRoute);}},{key:\"_cancelSlowTransitionTimer\",value:function _cancelSlowTransitionTimer(){if(this._slowTransitionTimer){cancel(this._slowTransitionTimer);}this._slowTransitionTimer=null;}// These three helper functions are used to ensure errors aren't\n// re-raised if they're handled in a route's error action.\n},{key:\"_markErrorAsHandled\",value:function _markErrorAsHandled(error){this._handledErrors.add(error);}},{key:\"_isErrorHandled\",value:function _isErrorHandled(error){return this._handledErrors.has(error);}},{key:\"_clearHandledError\",value:function _clearHandledError(error){this._handledErrors.delete(error);}},{key:\"_getEngineInstance\",value:function _getEngineInstance(_ref197){var name=_ref197.name,instanceId=_ref197.instanceId,mountPoint=_ref197.mountPoint;var engineInstances=this._engineInstances;var namedInstances=engineInstances[name];if(!namedInstances){namedInstances=Object.create(null);engineInstances[name]=namedInstances;}// We just set these!\n!namedInstances&&assert$1('has namedInstances',namedInstances);var engineInstance=namedInstances[instanceId];if(!engineInstance){var owner=getOwner$1(this);!(owner instanceof EngineInstance)&&assert$1('Expected router to have EngineInstance as owner',owner instanceof EngineInstance);!owner.hasRegistration(\"engine:\".concat(name))&&assert$1(\"You attempted to mount the engine '\".concat(name,\"' in your router map, but the engine can not be found.\"),owner.hasRegistration(\"engine:\".concat(name)));engineInstance=owner.buildChildEngineInstance(name,{routable:true,mountPoint:mountPoint});engineInstance.boot();namedInstances[instanceId]=engineInstance;}return engineInstance;}/**\n              Handles updating the paths and notifying any listeners of the URL\n              change.\n               Triggers the router level `didTransition` hook.\n               For example, to notify google analytics when the route changes,\n              you could use this hook.  (Note: requires also including GA scripts, etc.)\n               ```javascript\n              import config from './config/environment';\n              import EmberRouter from '@ember/routing/router';\n              import { service } from '@ember/service';\n               let Router = EmberRouter.extend({\n                location: config.locationType,\n                 router: service(),\n                 didTransition: function() {\n                  this._super(...arguments);\n                   ga('send', 'pageview', {\n                    page: this.router.currentURL,\n                    title: this.router.currentRouteName,\n                  });\n                }\n              });\n              ```\n               @method didTransition\n              @private\n              @since 1.2.0\n            */// Set with reopen to allow overriding via extend\n/**\n              Handles notifying any listeners of an impending URL\n              change.\n               Triggers the router level `willTransition` hook.\n               @method willTransition\n              @private\n              @since 1.11.0\n            */// Set with reopen to allow overriding via extend\n/**\n             Represents the current URL.\n               @property url\n              @type {String}\n              @private\n            */// Set with reopen to allow overriding via extend\n}],[{key:\"map\",value:/**\n              The `Router.map` function allows you to define mappings from URLs to routes\n              in your application. These mappings are defined within the\n              supplied callback function using `this.route`.\n               The first parameter is the name of the route which is used by default as the\n              path name as well.\n               The second parameter is the optional options hash. Available options are:\n                 * `path`: allows you to provide your own path as well as mark dynamic\n                  segments.\n                * `resetNamespace`: false by default; when nesting routes, ember will\n                  combine the route names to form the fully-qualified route name, which is\n                  used with `{{link-to}}` or manually transitioning to routes. Setting\n                  `resetNamespace: true` will cause the route not to inherit from its\n                  parent route's names. This is handy for preventing extremely long route names.\n                  Keep in mind that the actual URL path behavior is still retained.\n               The third parameter is a function, which can be used to nest routes.\n              Nested routes, by default, will have the parent route tree's route name and\n              path prepended to it's own.\n               ```app/router.js\n              Router.map(function(){\n                this.route('post', { path: '/post/:post_id' }, function() {\n                  this.route('edit');\n                  this.route('comments', { resetNamespace: true }, function() {\n                    this.route('new');\n                  });\n                });\n              });\n              ```\n               @method map\n              @param callback\n              @public\n            */function map(callback){if(!this.dslCallbacks){this.dslCallbacks=[];// FIXME: Can we remove this?\nthis.reopenClass({dslCallbacks:this.dslCallbacks});}this.dslCallbacks.push(callback);return this;}},{key:\"_routePath\",value:function _routePath(routeInfos){var path=[];// We have to handle coalescing resource names that\n// are prefixed with their parent's names, e.g.\n// ['foo', 'foo.bar.baz'] => 'foo.bar.baz', not 'foo.foo.bar.baz'\nfunction intersectionMatches(a1,a2){for(var i=0;i<a1.length;++i){if(a1[i]!==a2[i]){return false;}}return true;}var name,nameParts,oldNameParts;for(var i=1;i<routeInfos.length;i++){var routeInfo=routeInfos[i];!routeInfo&&assert$1('has routeInfo',routeInfo);name=routeInfo.name;nameParts=name.split('.');oldNameParts=slice.call(path);while(oldNameParts.length){if(intersectionMatches(oldNameParts,nameParts)){break;}oldNameParts.shift();}path.push.apply(path,_toConsumableArray(nameParts.slice(oldNameParts.length)));}return path.join('.');}}]);}(EmberObject.extend(Evented));/*\n            Helper function for iterating over routes in a set of routeInfos that are\n            at or above the given origin route. Example: if `originRoute` === 'foo.bar'\n            and the routeInfos given were for 'foo.bar.baz', then the given callback\n            will be invoked with the routes for 'foo.bar', 'foo', and 'application'\n            individually.\n\n            If the callback returns anything other than `true`, then iteration will stop.\n\n            @private\n            @param {Route} originRoute\n            @param {Array<RouteInfo>} routeInfos\n            @param {Function} callback\n            @return {Void}\n           */// Begin Evented\n// End Evented\n// Set with reopenClass\n_defineProperty(EmberRouter,\"dslCallbacks\",void 0);function forEachRouteAbove(routeInfos,callback){for(var i=routeInfos.length-1;i>=0;--i){var routeInfo=routeInfos[i];!routeInfo&&assert$1('has routeInfo',routeInfo);var route=routeInfo.route;// routeInfo.handler being `undefined` generally means either:\n//\n// 1. an error occurred during creation of the route in question\n// 2. the route is across an async boundary (e.g. within an engine)\n//\n// In both of these cases, we cannot invoke the callback on that specific\n// route, because it just doesn't exist...\nif(route===undefined){continue;}if(callback(route,routeInfo)!==true){return;}}}// These get invoked when an action bubbles above ApplicationRoute\n// and are not meant to be overridable.\nvar defaultActionHandlers={willResolveModel:function willResolveModel(_routeInfos,transition,originRoute){this._scheduleLoadingEvent(transition,originRoute);},// Attempt to find an appropriate error route or substate to enter.\nerror:function error(routeInfos,_error4,transition){var router=this;var routeInfoWithError=routeInfos[routeInfos.length-1];forEachRouteAbove(routeInfos,function(route,routeInfo){// We don't check the leaf most routeInfo since that would\n// technically be below where we're at in the route hierarchy.\nif(routeInfo!==routeInfoWithError){// Check for the existence of an 'error' route.\nvar errorRouteName=findRouteStateName(route,'error');if(errorRouteName){router._markErrorAsHandled(_error4);router.intermediateTransitionTo(errorRouteName,_error4);return false;}}// Check for an 'error' substate route\nvar errorSubstateName=findRouteSubstateName(route,'error');if(errorSubstateName){router._markErrorAsHandled(_error4);router.intermediateTransitionTo(errorSubstateName,_error4);return false;}return true;});logError(_error4,\"Error while processing route: \".concat(transition.targetName));},// Attempt to find an appropriate loading route or substate to enter.\nloading:function loading(routeInfos,transition){var router=this;var routeInfoWithSlowLoading=routeInfos[routeInfos.length-1];forEachRouteAbove(routeInfos,function(route,routeInfo){// We don't check the leaf most routeInfos since that would\n// technically be below where we're at in the route hierarchy.\nif(routeInfo!==routeInfoWithSlowLoading){// Check for the existence of a 'loading' route.\nvar loadingRouteName=findRouteStateName(route,'loading');if(loadingRouteName){router.intermediateTransitionTo(loadingRouteName);return false;}}// Check for loading substate\nvar loadingSubstateName=findRouteSubstateName(route,'loading');if(loadingSubstateName){router.intermediateTransitionTo(loadingSubstateName);return false;}// Don't bubble above pivot route.\nreturn transition.pivotHandler!==route;});}};function logError(_error,initialMessage){var _console3;var errorArgs=[];var error;if(_error&&_typeof(_error)==='object'&&_typeof(_error.errorThrown)==='object'){error=_error.errorThrown;}else{error=_error;}if(initialMessage){errorArgs.push(initialMessage);}if(error){if(error.message){errorArgs.push(error.message);}if(error.stack){errorArgs.push(error.stack);}if(typeof error==='string'){errorArgs.push(error);}}(_console3=console).error.apply(_console3,errorArgs);//eslint-disable-line no-console\n}/**\n            Finds the name of the substate route if it exists for the given route. A\n            substate route is of the form `route_state`, such as `foo_loading`.\n\n            @private\n            @param {Route} route\n            @param {String} state\n            @return {String}\n          */function findRouteSubstateName(route,state){var owner=getOwner$1(route);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var routeName=route.routeName,fullRouteName=route.fullRouteName,router=route._router;var substateName=\"\".concat(routeName,\"_\").concat(state);var substateNameFull=\"\".concat(fullRouteName,\"_\").concat(state);return routeHasBeenDefined(owner,router,substateName,substateNameFull)?substateNameFull:'';}/**\n            Finds the name of the state route if it exists for the given route. A state\n            route is of the form `route.state`, such as `foo.loading`. Properly Handles\n            `application` named routes.\n\n            @private\n            @param {Route} route\n            @param {String} state\n            @return {String}\n          */function findRouteStateName(route,state){var owner=getOwner$1(route);!owner&&assert$1('Route is unexpectedly missing an owner',owner);var routeName=route.routeName,fullRouteName=route.fullRouteName,router=route._router;var stateName=routeName==='application'?state:\"\".concat(routeName,\".\").concat(state);var stateNameFull=fullRouteName==='application'?state:\"\".concat(fullRouteName,\".\").concat(state);return routeHasBeenDefined(owner,router,stateName,stateNameFull)?stateNameFull:'';}/**\n            Determines whether or not a route has been defined by checking that the route\n            is in the Router's map and the owner has a registration for that route.\n\n            @private\n            @param {Owner} owner\n            @param {Router} router\n            @param {String} localName\n            @param {String} fullName\n            @return {Boolean}\n          */function routeHasBeenDefined(owner,router,localName,fullName){var routerHasRoute=router.hasRoute(fullName);var ownerHasRoute=owner.factoryFor(\"template:\".concat(localName))||owner.factoryFor(\"route:\".concat(localName));return routerHasRoute&&ownerHasRoute;}function _triggerEvent(routeInfos,ignoreFailure,name,args){if(!routeInfos){if(ignoreFailure){return;}// TODO: update?\nthrow new Error(\"Can't trigger action '\".concat(name,\"' because your app hasn't finished transitioning into its first route. To trigger an action on destination routes during a transition, you can call `.send()` on the `Transition` object passed to the `model/beforeModel/afterModel` hooks.\"));}var eventWasHandled=false;var routeInfo,handler,actionHandler;for(var i=routeInfos.length-1;i>=0;i--){routeInfo=routeInfos[i];!routeInfo&&assert$1('[BUG] Missing routeInfo',routeInfo);handler=routeInfo.route;actionHandler=handler&&handler.actions&&handler.actions[name];if(actionHandler){if(actionHandler.apply(handler,args)===true){eventWasHandled=true;}else{// Should only hit here if a non-bubbling error action is triggered on a route.\nif(name==='error'){!handler&&assert$1('[BUG] Missing handler',handler);handler._router._markErrorAsHandled(args[0]);}return;}}}var defaultHandler=defaultActionHandlers[name];if(defaultHandler){defaultHandler.call.apply(defaultHandler,[this,routeInfos].concat(_toConsumableArray(args)));return;}if(!eventWasHandled&&!ignoreFailure){throw new Error(\"Nothing handled the action '\".concat(name,\"'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble.\"));}}function calculatePostTransitionState(emberRouter,leafRouteName,contexts){var state=emberRouter._routerMicrolib.applyIntent(leafRouteName,contexts);var routeInfos=state.routeInfos,params=state.params;var _iterator74=_createForOfIteratorHelper(routeInfos),_step74;try{for(_iterator74.s();!(_step74=_iterator74.n()).done;){var routeInfo=_step74.value;// If the routeInfo is not resolved, we serialize the context into params\nif(!routeInfo.isResolved){params[routeInfo.name]=routeInfo.serialize(routeInfo.context);}else{params[routeInfo.name]=routeInfo.params;}}}catch(err){_iterator74.e(err);}finally{_iterator74.f();}return state;}function updatePaths(router){var infos=router._routerMicrolib.currentRouteInfos;if(infos.length===0){return;}var path=EmberRouter._routePath(infos);var info=infos[infos.length-1];!info&&assert$1('expected info',info);var currentRouteName=info.name;var location=router.location;!(typeof location!=='string')&&assert$1('expected location to not be a string',typeof location!=='string');var currentURL=location.getURL();_set5(router,'currentPath',path);_set5(router,'currentRouteName',currentRouteName);_set5(router,'currentURL',currentURL);}function didBeginTransition(transition,router){var routerState=new RouterState(router,router._routerMicrolib,transition[STATE_SYMBOL]);if(!router.currentState){router.set('currentState',routerState);}router.set('targetState',routerState);transition.promise=transition.catch(function(error){if(router._isErrorHandled(error)){router._clearHandledError(error);}else{throw error;}},'Transition Error');}function forEachQueryParam(router,routeInfos,queryParams,callback){var qpCache=router._queryParamsFor(routeInfos);for(var key in queryParams){if(!Object.prototype.hasOwnProperty.call(queryParams,key)){continue;}var value=queryParams[key];var qp=qpCache.map[key];callback(key,value,qp);}}EmberRouter.reopen({didTransition:defaultDidTransition,willTransition:defaultWillTransition,rootURL:'/',location:'hash',// FIXME: Does this need to be overrideable via extend?\nurl:computed(function(){var location=get$2(this,'location');if(typeof location==='string'){return undefined;}return location.getURL();})});var emberRoutingRouter=/*#__PURE__*/Object.defineProperty({__proto__:null,default:EmberRouter,triggerEvent:_triggerEvent},Symbol.toStringTag,{value:'Module'});/**\n           * @module @ember/routing/router-service\n           */var ROUTER=Symbol('ROUTER');function cleanURL(url,rootURL){if(rootURL==='/'){return url;}return url.substring(rootURL.length);}/**\n             The Router service is the public API that provides access to the router.\n\n             The immediate benefit of the Router service is that you can inject it into components,\n             giving them a friendly way to initiate transitions and ask questions about the current\n             global router state.\n\n             In this example, the Router service is injected into a component to initiate a transition\n             to a dedicated route:\n\n             ```app/components/example.js\n             import Component from '@glimmer/component';\n             import { action } from '@ember/object';\n             import { service } from '@ember/service';\n\n             export default class ExampleComponent extends Component {\n               @service router;\n\n               @action\n               next() {\n                 this.router.transitionTo('other.route');\n               }\n             }\n             ```\n\n             Like any service, it can also be injected into helpers, routes, etc.\n\n             @public\n             @extends Service\n             @class RouterService\n           */var _currentRouteName=/*#__PURE__*/new WeakMap();var _currentURL=/*#__PURE__*/new WeakMap();var _location=/*#__PURE__*/new WeakMap();var _rootURL=/*#__PURE__*/new WeakMap();var _currentRoute=/*#__PURE__*/new WeakMap();var RouterService=/*#__PURE__*/function(_Service$extend){function RouterService(){var _this77;_classCallCheck(this,RouterService);for(var _len88=arguments.length,args=new Array(_len88),_key80=0;_key80<_len88;_key80++){args[_key80]=arguments[_key80];}_this77=_callSuper(this,RouterService,[].concat(args));_defineProperty(_this77,ROUTER,void 0);_classPrivateFieldInitSpec(_this77,_currentRouteName,(initializeDeferredDecorator(_this77,\"currentRouteName\"),void 0));_classPrivateFieldInitSpec(_this77,_currentURL,(initializeDeferredDecorator(_this77,\"currentURL\"),void 0));_classPrivateFieldInitSpec(_this77,_location,(initializeDeferredDecorator(_this77,\"location\"),void 0));_classPrivateFieldInitSpec(_this77,_rootURL,(initializeDeferredDecorator(_this77,\"rootURL\"),void 0));_classPrivateFieldInitSpec(_this77,_currentRoute,(initializeDeferredDecorator(_this77,\"currentRoute\"),void 0));return _this77;}_inherits(RouterService,_Service$extend);return _createClass(RouterService,[{key:\"_router\",get:function get(){var router=this[ROUTER];if(router!==undefined){return router;}var owner=getOwner$2(this);!owner&&assert$1('RouterService is unexpectedly missing an owner',owner);var _router=owner.lookup('router:main');!(_router instanceof EmberRouter)&&assert$1('ROUTER SERVICE BUG: Expected router to be an instance of EmberRouter',_router instanceof EmberRouter);return this[ROUTER]=_router;}},{key:\"willDestroy\",value:function willDestroy(){_superPropGet(RouterService,\"willDestroy\",this,3)([]);this[ROUTER]=undefined;}/**\n               Transition the application into another route. The route may\n               be either a single route or route path:\n                Calling `transitionTo` from the Router service will cause default query parameter values to be included in the URL.\n               This behavior is different from calling `transitionTo` on a route or `transitionToRoute` on a controller.\n               See the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n                In the following example we use the Router service to navigate to a route with a\n               specific model from a Component in the first action, and in the second we trigger\n               a query-params only transition.\n                ```app/components/example.js\n               import Component from '@glimmer/component';\n               import { action } from '@ember/object';\n               import { service } from '@ember/service';\n                export default class extends Component {\n                 @service router;\n                  @action\n                 goToComments(post) {\n                   this.router.transitionTo('comments', post);\n                 }\n                  @action\n                 fetchMoreComments(latestComment) {\n                   this.router.transitionTo({\n                     queryParams: { commentsAfter: latestComment }\n                   });\n                 }\n               }\n               ```\n                @method transitionTo\n               @param {String} [routeNameOrUrl] the name of the route or a URL\n               @param {...Object} [models] the model(s) or identifier(s) to be used while\n                 transitioning to the route.\n               @param {Object} [options] optional hash with a queryParams property\n                 containing a mapping of query parameters. May be supplied as the only\n                parameter to trigger a query-parameter-only transition.\n               @return {Transition} the transition object associated with this\n                 attempted transition\n               @public\n             */},{key:\"transitionTo\",value:function transitionTo(){for(var _len89=arguments.length,args=new Array(_len89),_key81=0;_key81<_len89;_key81++){args[_key81]=arguments[_key81];}if(resemblesURL(args[0])){// NOTE: this `args[0] as string` cast is safe and TS correctly infers it\n// in 3.6+, so it can be removed when TS is upgraded.\nreturn this._router._doURLTransition('transitionTo',args[0]);}var _extractRouteArgs2=extractRouteArgs(args),routeName=_extractRouteArgs2.routeName,models=_extractRouteArgs2.models,queryParams=_extractRouteArgs2.queryParams;var transition=this._router._doTransition(routeName,models,queryParams,true);return transition;}/**\n               Similar to `transitionTo`, but instead of adding the destination to the browser's URL history,\n               it replaces the entry for the current route.\n               When the user clicks the \"back\" button in the browser, there will be fewer steps.\n               This is most commonly used to manage redirects in a way that does not cause confusing additions\n               to the user's browsing history.\n                Calling `replaceWith` from the Router service will cause default query parameter values to be included in the URL.\n               This behavior is different from calling `replaceWith` on a route.\n               See the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n                Usage example:\n                ```app/routes/application.js\n               import Route from '@ember/routing/route';\n               import { service } from '@ember/service';\n                export default class extends Route {\n                 @service router;\n                 beforeModel() {\n                   if (!authorized()){\n                     this.router.replaceWith('unauthorized');\n                   }\n                 }\n               });\n               ```\n                @method replaceWith\n               @param {String} routeNameOrUrl the name of the route or a URL of the desired destination\n               @param {...Object} models the model(s) or identifier(s) to be used while\n                 transitioning to the route i.e. an object of params to pass to the destination route\n               @param {Object} [options] optional hash with a queryParams property\n                 containing a mapping of query parameters\n               @return {Transition} the transition object associated with this\n                 attempted transition\n               @public\n             */},{key:\"replaceWith\",value:function replaceWith(){return this.transitionTo.apply(this,arguments).method('replace');}/**\n              Generate a URL based on the supplied route name and optionally a model. The\n              URL is returned as a string that can be used for any purpose.\n               In this example, the URL for the `author.books` route for a given author\n              is copied to the clipboard.\n               ```app/templates/application.hbs\n              <CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n              ```\n               ```app/components/copy-link.js\n              import Component from '@glimmer/component';\n              import { service } from '@ember/service';\n              import { action } from '@ember/object';\n               export default class CopyLinkComponent extends Component {\n                @service router;\n                @service clipboard;\n                 @action\n                copyBooksURL() {\n                  if (this.author) {\n                    const url = this.router.urlFor('author.books', this.args.author);\n                    this.clipboard.set(url);\n                    // Clipboard now has /author/tomster/books\n                  }\n                }\n              }\n              ```\n               Just like with `transitionTo` and `replaceWith`, `urlFor` can also handle\n              query parameters.\n               ```app/templates/application.hbs\n              <CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n              ```\n               ```app/components/copy-link.js\n              import Component from '@glimmer/component';\n              import { service } from '@ember/service';\n              import { action } from '@ember/object';\n               export default class CopyLinkComponent extends Component {\n                @service router;\n                @service clipboard;\n                 @action\n                copyOnlyEmberBooksURL() {\n                  if (this.author) {\n                    const url = this.router.urlFor('author.books', this.author, {\n                      queryParams: { filter: 'emberjs' }\n                    });\n                    this.clipboard.set(url);\n                    // Clipboard now has /author/tomster/books?filter=emberjs\n                  }\n                }\n              }\n              ```\n                @method urlFor\n               @param {String} routeName the name of the route\n               @param {...Object} models the model(s) for the route.\n               @param {Object} [options] optional hash with a queryParams property\n                 containing a mapping of query parameters\n               @return {String} the string representing the generated URL\n               @public\n             */},{key:\"urlFor\",value:function urlFor(routeName){var _this$_router3;this._router.setupRouter();for(var _len90=arguments.length,args=new Array(_len90>1?_len90-1:0),_key82=1;_key82<_len90;_key82++){args[_key82-1]=arguments[_key82];}return(_this$_router3=this._router).generate.apply(_this$_router3,[routeName].concat(args));}/**\n               Returns `true` if `routeName/models/queryParams` is the active route, where `models` and `queryParams` are optional.\n               See [model](api/ember/release/classes/Route/methods/model?anchor=model) and\n               [queryParams](/api/ember/3.7/classes/Route/properties/queryParams?anchor=queryParams) for more information about these arguments.\n                In the following example, `isActive` will return `true` if the current route is `/posts`.\n                ```app/components/posts.js\n               import Component from '@glimmer/component';\n               import { service } from '@ember/service';\n                export default class extends Component {\n                 @service router;\n                  displayComments() {\n                   return this.router.isActive('posts');\n                 }\n               });\n               ```\n                The next example includes a dynamic segment, and will return `true` if the current route is `/posts/1`,\n               assuming the post has an id of 1:\n                ```app/components/posts.js\n               import Component from '@glimmer/component';\n               import { service } from '@ember/service';\n                export default class extends Component {\n                 @service router;\n                  displayComments(post) {\n                   return this.router.isActive('posts', post.id);\n                 }\n               });\n               ```\n                Where `post.id` is the id of a specific post, which is represented in the route as /posts/[post.id].\n               If `post.id` is equal to 1, then isActive will return true if the current route is /posts/1, and false if the route is anything else.\n                @method isActive\n               @param {String} routeName the name of the route\n               @param {...Object} models the model(s) or identifier(s) to be used when determining the active route.\n               @param {Object} [options] optional hash with a queryParams property\n                 containing a mapping of query parameters\n               @return {boolean} true if the provided routeName/models/queryParams are active\n               @public\n             */},{key:\"isActive\",value:function isActive(){for(var _len91=arguments.length,args=new Array(_len91),_key83=0;_key83<_len91;_key83++){args[_key83]=arguments[_key83];}var _extractRouteArgs3=extractRouteArgs(args),routeName=_extractRouteArgs3.routeName,models=_extractRouteArgs3.models,queryParams=_extractRouteArgs3.queryParams;var routerMicrolib=this._router._routerMicrolib;// When using isActive() in a getter, we want to entagle with the auto-tracking system\n// for example,\n// in\n// get isBarActive() {\n//   return isActive('foo.bar');\n// }\n//\n// you'd expect isBarActive to be dirtied when the route changes.\n//\n// https://github.com/emberjs/ember.js/issues/19004\nconsumeTag(tagFor(this._router,'currentURL'));// UNSAFE: casting `routeName as string` here encodes the existing\n// assumption but may be wrong: `extractRouteArgs` correctly returns it as\n// `string | undefined`. There may be bugs if `isActiveIntent` does\n// not correctly account for `undefined` values for `routeName`. Spoilers:\n// it *does not* account for this being `undefined`.\nif(!routerMicrolib.isActiveIntent(routeName,models)){return false;}var hasQueryParams=Object.keys(queryParams).length>0;if(hasQueryParams){// UNSAFE: casting `routeName as string` here encodes the existing\n// assumption but may be wrong: `extractRouteArgs` correctly returns it\n// as `string | undefined`. There may be bugs if `_prepareQueryParams`\n// does not correctly account for `undefined` values for `routeName`.\n//  Spoilers: under the hood this currently uses router.js APIs which\n// *do not* account for this being `undefined`.\nvar targetRouteName=routeName;queryParams=Object.assign({},queryParams);this._router._prepareQueryParams(targetRouteName,models,queryParams,true/* fromRouterService */);var currentQueryParams=Object.assign({},routerMicrolib.state.queryParams);this._router._prepareQueryParams(targetRouteName,models,currentQueryParams,true/* fromRouterService */);return shallowEqual(queryParams,currentQueryParams);}return true;}/**\n               Takes a string URL and returns a `RouteInfo` for the leafmost route represented\n               by the URL. Returns `null` if the URL is not recognized. This method expects to\n               receive the actual URL as seen by the browser including the app's `rootURL`.\n                See [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n                In the following example `recognize` is used to verify if a path belongs to our\n               application before transitioning to it.\n                ```\n               import Component from '@ember/component';\n               import { service } from '@ember/service';\n                export default class extends Component {\n                 @service router;\n                 path = '/';\n                  click() {\n                   if (this.router.recognize(this.path)) {\n                     this.router.transitionTo(this.path);\n                   }\n                 }\n               }\n               ```\n                 @method recognize\n                @param {String} url\n                @return {RouteInfo | null}\n                @public\n              */},{key:\"recognize\",value:function recognize(url){!(url.indexOf(this.rootURL)===0)&&assert$1(\"You must pass a url that begins with the application's rootURL \\\"\".concat(this.rootURL,\"\\\"\"),url.indexOf(this.rootURL)===0);this._router.setupRouter();var internalURL=cleanURL(url,this.rootURL);return this._router._routerMicrolib.recognize(internalURL);}/**\n              Takes a string URL and returns a promise that resolves to a\n              `RouteInfoWithAttributes` for the leafmost route represented by the URL.\n              The promise rejects if the URL is not recognized or an unhandled exception\n              is encountered. This method expects to receive the actual URL as seen by\n              the browser including the app's `rootURL`.\n                 @method recognizeAndLoad\n                @param {String} url\n                @return {RouteInfo}\n                @public\n             */},{key:\"recognizeAndLoad\",value:function recognizeAndLoad(url){!(url.indexOf(this.rootURL)===0)&&assert$1(\"You must pass a url that begins with the application's rootURL \\\"\".concat(this.rootURL,\"\\\"\"),url.indexOf(this.rootURL)===0);this._router.setupRouter();var internalURL=cleanURL(url,this.rootURL);return this._router._routerMicrolib.recognizeAndLoad(internalURL);}/**\n              You can register a listener for events emitted by this service with `.on()`:\n               ```app/routes/contact-form.js\n              import Route from '@ember/routing';\n              import { service } from '@ember/service';\n               export default class extends Route {\n                @service router;\n                 activate() {\n                  this.router.on('routeWillChange', (transition) => {\n                    if (!transition.to.find(route => route.name === this.routeName)) {\n                      alert(\"Please save or cancel your changes.\");\n                      transition.abort();\n                    }\n                  })\n                }\n              }\n              ```\n               @method on\n              @param {String} eventName\n              @param {Function} callback\n              @public\n            *//**\n              You can unregister a listener for events emitted by this service with `.off()`:\n               ```app/routes/contact-form.js\n              import Route from '@ember/routing';\n              import { service } from '@ember/service';\n               export default class ContactFormRoute extends Route {\n                @service router;\n                 callback = (transition) => {\n                  if (!transition.to.find(route => route.name === this.routeName)) {\n                    alert('Please save or cancel your changes.');\n                    transition.abort();\n                  }\n                };\n                 activate() {\n                  this.router.on('routeWillChange', this.callback);\n                }\n                 deactivate() {\n                  this.router.off('routeWillChange', this.callback);\n                }\n              }\n              ```\n               @method off\n              @param {String} eventName\n              @param {Function} callback\n              @public\n            *//**\n              The `routeWillChange` event is fired at the beginning of any\n              attempted transition with a `Transition` object as the sole\n              argument. This action can be used for aborting, redirecting,\n              or decorating the transition from the currently active routes.\n               A good example is preventing navigation when a form is\n              half-filled out:\n               ```app/routes/contact-form.js\n              import Route from '@ember/routing';\n              import { service } from '@ember/service';\n               export default class extends Route {\n                @service router;\n                 activate() {\n                  this.router.on('routeWillChange', (transition) => {\n                    if (!transition.to.find(route => route.name === this.routeName)) {\n                      alert(\"Please save or cancel your changes.\");\n                      transition.abort();\n                    }\n                  })\n                }\n              }\n              ```\n               The `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.\n               @event routeWillChange\n              @param {Transition} transition\n              @public\n            *//**\n              The `routeDidChange` event only fires once a transition has settled.\n              This includes aborts and error substates. Like the `routeWillChange` event\n              it receives a Transition as the sole argument.\n               A good example is sending some analytics when the route has transitioned:\n               ```app/routes/contact-form.js\n              import Route from '@ember/routing';\n              import { service } from '@ember/service';\n               export default class extends Route {\n                @service router;\n                 activate() {\n                  this.router.on('routeDidChange', (transition) => {\n                    ga.send('pageView', {\n                      current: transition.to.name,\n                      from: transition.from.name\n                    });\n                  })\n                }\n              }\n              ```\n               `routeDidChange` will be called after any `Route`'s\n              [didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)\n              action has been fired.\n              The updates of properties\n              [currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),\n              [currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)\n              and\n              [currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)\n              are completed at the time `routeDidChange` is called.\n               @event routeDidChange\n              @param {Transition} transition\n              @public\n            *//**\n             * Refreshes all currently active routes, doing a full transition.\n             * If a route name is provided and refers to a currently active route,\n             * it will refresh only that route and its descendents.\n             * Returns a promise that will be resolved once the refresh is complete.\n             * All resetController, beforeModel, model, afterModel, redirect, and setupController\n             * hooks will be called again. You will get new data from the model hook.\n             *\n             * @method refresh\n             * @param {String} [routeName] the route to refresh (along with all child routes)\n             * @return Transition\n             * @public\n             */},{key:\"refresh\",value:function refresh(pivotRouteName){if(!pivotRouteName){return this._router._routerMicrolib.refresh();}!this._router.hasRoute(pivotRouteName)&&assert$1(\"The route \\\"\".concat(pivotRouteName,\"\\\" was not found\"),this._router.hasRoute(pivotRouteName));!this.isActive(pivotRouteName)&&assert$1(\"The route \\\"\".concat(pivotRouteName,\"\\\" is currently not active\"),this.isActive(pivotRouteName));var owner=getOwner$2(this);!owner&&assert$1('RouterService is unexpectedly missing an owner',owner);var pivotRoute=owner.lookup(\"route:\".concat(pivotRouteName));return this._router._routerMicrolib.refresh(pivotRoute);}/**\n             Name of the current route.\n               This property represents the logical name of the route,\n              which is dot separated.\n              For the following router:\n               ```app/router.js\n              Router.map(function() {\n                this.route('about');\n                this.route('blog', function () {\n                  this.route('post', { path: ':post_id' });\n                });\n              });\n              ```\n               It will return:\n               * `index` when you visit `/`\n              * `about` when you visit `/about`\n              * `blog.index` when you visit `/blog`\n              * `blog.post` when you visit `/blog/some-post-id`\n               @property currentRouteName\n              @type {String | null}\n              @public\n            *//**\n              The `currentRoute` property contains metadata about the current leaf route.\n              It returns a `RouteInfo` object that has information like the route name,\n              params, query params and more.\n               See [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n               This property is guaranteed to change whenever a route transition\n              happens (even when that transition only changes parameters\n              and doesn't change the active route).\n               Usage example:\n              ```app/components/header.js\n                import Component from '@glimmer/component';\n                import { service } from '@ember/service';\n                import { notEmpty } from '@ember/object/computed';\n                 export default class extends Component {\n                  @service router;\n                   @notEmpty('router.currentRoute.child') isChildRoute;\n                });\n              ```\n               @property currentRoute\n              @type RouteInfo\n              @public\n            */}]);}(Service.extend(Evented));_RouterService=RouterService;decorateFieldV2(_RouterService.prototype,\"currentRouteName\",[readOnly('_router.currentRouteName')]);decorateFieldV2(_RouterService.prototype,\"currentURL\",[readOnly('_router.currentURL')]);/**\n             Current URL for the application.\n             This property represents the URL path for this route.\n            For the following router:\n               ```app/router.js\n              Router.map(function() {\n                this.route('about');\n                this.route('blog', function () {\n                  this.route('post', { path: ':post_id' });\n                });\n              });\n              ```\n               It will return:\n               * `/` when you visit `/`\n              * `/about` when you visit `/about`\n              * `/blog` when you visit `/blog`\n              * `/blog/some-post-id` when you visit `/blog/some-post-id`\n               @property currentURL\n              @type String\n              @public\n            */decorateFieldV2(_RouterService.prototype,\"location\",[readOnly('_router.location')]);/**\n              The `location` property returns what implementation of the `location` API\n              your application is using, which determines what type of URL is being used.\n               See [Location](/ember/release/classes/Location) for more information.\n               To force a particular `location` API implementation to be used in your\n              application you can set a location type on your `config/environment`.\n              For example, to set the `history` type:\n               ```config/environment.js\n              'use strict';\n               module.exports = function(environment) {\n                let ENV = {\n                  modulePrefix: 'router-service',\n                  environment,\n                  rootURL: '/',\n                  locationType: 'history',\n                  ...\n                }\n              }\n              ```\n               The following location types are available by default:\n              `hash`, `history`, `none`.\n               See [HashLocation](/ember/release/classes/HashLocation).\n              See [HistoryLocation](/ember/release/classes/HistoryLocation).\n              See [NoneLocation](/ember/release/classes/NoneLocation).\n               @property location\n              @default 'hash'\n              @see {Location}\n              @public\n            */decorateFieldV2(_RouterService.prototype,\"rootURL\",[readOnly('_router.rootURL')]);/**\n              The `rootURL` property represents the URL of the root of\n              the application, '/' by default.\n              This prefix is assumed on all routes defined on this app.\n               If you change the `rootURL` in your environment configuration\n              like so:\n               ```config/environment.js\n              'use strict';\n               module.exports = function(environment) {\n                let ENV = {\n                  modulePrefix: 'router-service',\n                  environment,\n                  rootURL: '/my-root',\n                …\n                }\n              ]\n              ```\n               This property will return `/my-root`.\n               @property rootURL\n              @default '/'\n              @public\n            */decorateFieldV2(_RouterService.prototype,\"currentRoute\",[readOnly('_router.currentRoute')]);var emberRoutingRouterService=/*#__PURE__*/Object.defineProperty({__proto__:null,ROUTER:ROUTER,default:RouterService},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            The Routing service is used by LinkTo, and provides facilities for\n            the component/view layer to interact with the router.\n\n            This is a private service for internal usage only. For public usage,\n            refer to the `Router` service.\n\n            @private\n            @class RoutingService\n          */var RoutingService=/*#__PURE__*/function(_Service2){function RoutingService(){var _this78;_classCallCheck(this,RoutingService);for(var _len92=arguments.length,args=new Array(_len92),_key84=0;_key84<_len92;_key84++){args[_key84]=arguments[_key84];}_this78=_callSuper(this,RoutingService,[].concat(args));_defineProperty(_this78,ROUTER,void 0);return _this78;}_inherits(RoutingService,_Service2);return _createClass(RoutingService,[{key:\"router\",get:function get(){var router=this[ROUTER];if(router!==undefined){return router;}var owner=getOwner$2(this);!owner&&assert$1('RoutingService is unexpectedly missing an owner',owner);var _router=owner.lookup('router:main');!(_router instanceof EmberRouter)&&assert$1('ROUTING SERVICE BUG: Expected router to be an instance of EmberRouter',_router instanceof EmberRouter);_router.setupRouter();return this[ROUTER]=_router;}},{key:\"hasRoute\",value:function hasRoute(routeName){return this.router.hasRoute(routeName);}},{key:\"transitionTo\",value:function transitionTo(routeName,models,queryParams,shouldReplace){var transition=this.router._doTransition(routeName,models,queryParams);if(shouldReplace){transition.method('replace');}return transition;}},{key:\"normalizeQueryParams\",value:function normalizeQueryParams(routeName,models,queryParams){this.router._prepareQueryParams(routeName,models,queryParams);}},{key:\"_generateURL\",value:function _generateURL(routeName,models,queryParams){var _this$router;var visibleQueryParams={};if(queryParams){Object.assign(visibleQueryParams,queryParams);this.normalizeQueryParams(routeName,models,visibleQueryParams);}return(_this$router=this.router).generate.apply(_this$router,[routeName].concat(_toConsumableArray(models),[{queryParams:visibleQueryParams}]));}},{key:\"generateURL\",value:function generateURL(routeName,models,queryParams){if(this.router._initialTransitionStarted){return this._generateURL(routeName,models,queryParams);}else{// Swallow error when transition has not started.\n// When rendering in tests without visit(), we cannot infer the route context which <LinkTo/> needs be aware of\ntry{return this._generateURL(routeName,models,queryParams);}catch(_e){return;}}}},{key:\"isActiveForRoute\",value:function isActiveForRoute(contexts,queryParams,routeName,routerState){var handlers=this.router._routerMicrolib.recognizer.handlersFor(routeName);var leafName=handlers[handlers.length-1].handler;var maximumContexts=numberOfContextsAcceptedByHandler(routeName,handlers);// NOTE: any ugliness in the calculation of activeness is largely\n// due to the fact that we support automatic normalizing of\n// `resource` -> `resource.index`, even though there might be\n// dynamic segments / query params defined on `resource.index`\n// which complicates (and makes somewhat ambiguous) the calculation\n// of activeness for links that link to `resource` instead of\n// directly to `resource.index`.\n// if we don't have enough contexts revert back to full route name\n// this is because the leaf route will use one of the contexts\nif(contexts.length>maximumContexts){routeName=leafName;}return routerState.isActiveIntent(routeName,contexts,queryParams);}}]);}(Service);RoutingService.reopen({targetState:readOnly('router.targetState'),currentState:readOnly('router.currentState'),currentRouteName:readOnly('router.currentRouteName'),currentPath:readOnly('router.currentPath')});function numberOfContextsAcceptedByHandler(handlerName,handlerInfos){var req=0;for(var i=0;i<handlerInfos.length;i++){req+=handlerInfos[i].names.length;if(handlerInfos[i].handler===handlerName){break;}}return req;}var emberRoutingLibRoutingService=/*#__PURE__*/Object.defineProperty({__proto__:null,default:RoutingService},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/routing\n          *//**\n            Finds a controller instance.\n\n            @for Ember\n            @method controllerFor\n            @private\n          */function controllerFor(container,controllerName,lookupOptions){return container.lookup(\"controller:\".concat(controllerName),lookupOptions);}var emberRoutingLibControllerFor=/*#__PURE__*/Object.defineProperty({__proto__:null,default:controllerFor},Symbol.toStringTag,{value:'Module'});var emberRoutinginternals=/*#__PURE__*/Object.defineProperty({__proto__:null,BucketCache:BucketCache,DSL:DSLImpl,RouterState:RouterState,RoutingService:RoutingService,controllerFor:controllerFor,generateController:_generateController,generateControllerFactory:generateControllerFactory,prefixRouteNameArg:prefixRouteNameArg},Symbol.toStringTag,{value:'Module'});var CAPABILITIES={dynamicLayout:true,dynamicTag:false,prepareArgs:false,createArgs:true,attributeHook:false,elementHook:false,createCaller:true,dynamicScope:true,updateHook:true,createInstance:true,wrapped:false,willDestroy:false,hasSubOwner:true};var MountManager=/*#__PURE__*/function(){function MountManager(){_classCallCheck(this,MountManager);}return _createClass(MountManager,[{key:\"getDynamicLayout\",value:function getDynamicLayout(state){var templateFactory=state.engine.lookup('template:application');return unwrapTemplate(templateFactory(state.engine)).asLayout();}},{key:\"getCapabilities\",value:function getCapabilities(){return CAPABILITIES;}},{key:\"getOwner\",value:function getOwner(state){return state.engine;}},{key:\"create\",value:function create(owner,_ref198,args,env){var name=_ref198.name;// TODO\n// mount is a runtime helper, this shouldn't use dynamic layout\n// we should resolve the engine app template in the helper\n// it also should use the owner that looked up the mount helper.\n!(owner instanceof EngineInstance)&&assert$1('Expected owner to be an EngineInstance',owner instanceof EngineInstance);var engine=owner.buildChildEngineInstance(name);engine.boot();var applicationFactory=engine.factoryFor(\"controller:application\");var controllerFactory=applicationFactory||generateControllerFactory(engine,'application');var controller;var self;var bucket;var modelRef;if(args.named.has('model')){modelRef=args.named.get('model');}if(modelRef===undefined){controller=controllerFactory.create();self=createConstRef(controller,'this');bucket={engine:engine,controller:controller,self:self,modelRef:modelRef};}else{var model=valueForRef(modelRef);controller=controllerFactory.create({model:model});self=createConstRef(controller,'this');bucket={engine:engine,controller:controller,self:self,modelRef:modelRef};}if(env.debugRenderTree){associateDestroyableChild(engine,controller);}return bucket;}},{key:\"getDebugName\",value:function getDebugName(_ref199){var name=_ref199.name;return name;}},{key:\"getDebugCustomRenderTree\",value:function getDebugCustomRenderTree(definition,state,args,templateModuleName){return[{bucket:state.engine,instance:state.engine,type:'engine',name:definition.name,args:args},{bucket:state.controller,instance:state.controller,type:'route-template',name:'application',args:args,template:templateModuleName}];}},{key:\"getSelf\",value:function getSelf(_ref200){var self=_ref200.self;return self;}},{key:\"getDestroyable\",value:function getDestroyable(bucket){return bucket.engine;}},{key:\"didCreate\",value:function didCreate(){}},{key:\"didUpdate\",value:function didUpdate(){}},{key:\"didRenderLayout\",value:function didRenderLayout(){}},{key:\"didUpdateLayout\",value:function didUpdateLayout(){}},{key:\"update\",value:function update(bucket){var controller=bucket.controller,modelRef=bucket.modelRef;if(modelRef!==undefined){controller.set('model',valueForRef(modelRef));}}}]);}();var MOUNT_MANAGER=new MountManager();var MountDefinition=/*#__PURE__*/_createClass(function MountDefinition(resolvedName){_classCallCheck(this,MountDefinition);// handle is not used by this custom definition\n_defineProperty(this,\"handle\",-1);_defineProperty(this,\"state\",void 0);_defineProperty(this,\"manager\",MOUNT_MANAGER);_defineProperty(this,\"compilable\",null);_defineProperty(this,\"capabilities\",capabilityFlagsFrom(CAPABILITIES));this.resolvedName=resolvedName;this.state={name:resolvedName};});/**\n          @module ember\n          *//**\n            The `{{mount}}` helper lets you embed a routeless engine in a template.\n            Mounting an engine will cause an instance to be booted and its `application`\n            template to be rendered.\n\n            For example, the following template mounts the `ember-chat` engine:\n\n            ```handlebars\n            {{! application.hbs }}\n            {{mount \"ember-chat\"}}\n            ```\n\n            Additionally, you can also pass in a `model` argument that will be\n            set as the engines model. This can be an existing object:\n\n            ```\n            <div>\n              {{mount 'admin' model=userSettings}}\n            </div>\n            ```\n\n            Or an inline `hash`, and you can even pass components:\n\n            ```\n            <div>\n              <h1>Application template!</h1>\n              {{mount 'admin' model=(hash\n                  title='Secret Admin'\n                  signInButton=(component 'sign-in-button')\n              )}}\n            </div>\n            ```\n\n            @method mount\n            @param {String} name Name of the engine to mount.\n            @param {Object} [model] Object that will be set as\n                                    the model of the engine.\n            @for Ember.Templates.helpers\n            @public\n          */var mountHelper=internalHelper(function(args,owner){!owner&&assert$1('{{mount}} must be used within a component that has an owner',owner);var nameRef=args.positional[0];var captured;!(args.positional.length===1)&&assert$1('You can only pass a single positional argument to the {{mount}} helper, e.g. {{mount \"chat-engine\"}}.',args.positional.length===1);if(args.named){var _keys6=Object.keys(args.named);var extra=_keys6.filter(function(k){return k!=='model';});!(extra.length===0)&&assert$1('You can only pass a `model` argument to the {{mount}} helper, '+'e.g. {{mount \"profile-engine\" model=this.profile}}. '+\"You passed \".concat(extra.join(','),\".\"),extra.length===0);}captured=createCapturedArgs(args.named,EMPTY_POSITIONAL);var lastName,lastDef;return createComputeRef(function(){var name=valueForRef(nameRef);if(typeof name==='string'){if(lastName===name){return lastDef;}!owner.hasRegistration(\"engine:\".concat(name))&&assert$1(\"You used `{{mount '\".concat(name,\"'}}`, but the engine '\").concat(name,\"' can not be found.\"),owner.hasRegistration(\"engine:\".concat(name)));lastName=name;lastDef=curry(CurriedTypes.Component,new MountDefinition(name),owner,captured,true);return lastDef;}else{!(name===null||name===undefined)&&assert$1(\"Invalid engine name '\".concat(name,\"' specified, engine name must be either a string, null or undefined.\"),name===null||name===undefined);lastDef=null;lastName=null;return null;}});});/**\n            The `{{outlet}}` helper lets you specify where a child route will render in\n            your template. An important use of the `{{outlet}}` helper is in your\n            application's `application.hbs` file:\n\n            ```app/templates/application.hbs\n            <MyHeader />\n\n            <div class=\"my-dynamic-content\">\n              <!-- this content will change based on the current route, which depends on the current URL -->\n              {{outlet}}\n            </div>\n\n            <MyFooter />\n            ```\n\n            See the [routing guide](https://guides.emberjs.com/release/routing/rendering-a-template/) for more\n            information on how your `route` interacts with the `{{outlet}}` helper.\n            Note: Your content __will not render__ if there isn't an `{{outlet}}` for it.\n\n            @method outlet\n            @for Ember.Templates.helpers\n            @public\n          */var outletHelper=internalHelper(function(_args,owner,scope){!owner&&assert$1('Expected owner to be present, {{outlet}} requires an owner',owner);!scope&&assert$1('Expected dynamic scope to be present. You may have attempted to use the {{outlet}} keyword dynamically. This keyword cannot be used dynamically.',scope);var outletRef=createComputeRef(function(){var _state$outlets;var state=valueForRef(scope.get('outletState'));return state===null||state===void 0||(_state$outlets=state.outlets)===null||_state$outlets===void 0?void 0:_state$outlets.main;});var lastState=null;var definition=null;return createComputeRef(function(){var outletState=valueForRef(outletRef);var state=stateFor(outletRef,outletState);if(!validate(state,lastState)){lastState=state;if(state!==null){var _outletState$render$o,_outletState$render;var named=dict();// Create a ref for the model\nvar modelRef=childRefFromParts(outletRef,['render','model']);// Store the value of the model\nvar model=valueForRef(modelRef);// Create a compute ref which we pass in as the `{{@model}}` reference\n// for the outlet. This ref will update and return the value of the\n// model _until_ the outlet itself changes. Once the outlet changes,\n// dynamic scope also changes, and so the original model ref would not\n// provide the correct updated value. So we stop updating and return\n// the _last_ model value for that outlet.\nnamed['model']=createComputeRef(function(){if(lastState===state){model=valueForRef(modelRef);}return model;});{named['model']=createDebugAliasRef('@model',named['model']);}var args=createCapturedArgs(named,EMPTY_POSITIONAL);definition=curry(CurriedTypes.Component,new OutletComponentDefinition(state),(_outletState$render$o=outletState===null||outletState===void 0||(_outletState$render=outletState.render)===null||_outletState$render===void 0?void 0:_outletState$render.owner)!==null&&_outletState$render$o!==void 0?_outletState$render$o:owner,args,true);}else{definition=null;}}return definition;});});function stateFor(ref,outlet){if(outlet===undefined)return null;var render=outlet.render;if(render===undefined)return null;var template=render.template;if(template===undefined)return null;if(isTemplateFactory(template)){template=template(render.owner);{var message='The `template` property of `OutletState` should be a '+'`Template` rather than a `TemplateFactory`. This is known to be a '+\"problem in older versions of `@ember/test-helpers`. If you haven't \"+'done so already, try upgrading to the latest version.\\n\\n';if(template.result==='ok'&&typeof template.moduleName==='string'){message+='The offending template has a moduleName `'+template.moduleName+'`, which might be helpful for identifying '+'source of this issue.\\n\\n';}message+='Please note that `OutletState` is a private API in Ember.js '+\"and not meant to be used outside of the framework's internal code.\";deprecate$1(message,false,{id:'outlet-state-template-factory',until:'5.9.0',for:'ember-source',since:{available:'5.6.0',enabled:'5.6.0'}});}}return{ref:ref,name:render.name,template:template,controller:render.controller,model:render.model};}function validate(state,lastState){if(state===null){return lastState===null;}if(lastState===null){return false;}return state.template===lastState.template&&state.controller===lastState.controller;}function instrumentationPayload(name){return{object:\"component:\".concat(name)};}function componentFor(name,owner){var fullName=\"component:\".concat(name);return owner.factoryFor(fullName)||null;}function layoutFor(name,owner,options){if(DEPRECATIONS.DEPRECATE_COMPONENT_TEMPLATE_RESOLVING.isRemoved){return null;}var templateFullName=\"template:components/\".concat(name);var result=owner.lookup(templateFullName,options)||null;if(result){deprecateUntil(\"Components with separately resolved templates are deprecated. Migrate to either co-located js/ts + hbs files or to gjs/gts. Tried to lookup '\".concat(templateFullName,\"'.\"),DEPRECATIONS.DEPRECATE_COMPONENT_TEMPLATE_RESOLVING);}return result;}function lookupComponentPair(owner,name,options){var component=componentFor(name,owner);if(isFactory(component)&&component.class){var _layout=getComponentTemplate(component.class);if(_layout!==undefined){return{component:component,layout:_layout};}}var layout=layoutFor(name,owner,options);if(component===null&&layout===null){return null;}else{return{component:component,layout:layout};}}var BUILTIN_KEYWORD_HELPERS={action:action,mut:mut,readonly:readonly,unbound:unbound,'-hash':hash$1,'-each-in':eachIn,'-normalize-class':normalizeClassHelper,'-resolve':resolve$1,'-track-array':trackArray,'-mount':mountHelper,'-outlet':outletHelper,'-in-el-null':inElementNullCheckHelper};var BUILTIN_HELPERS=_objectSpread(_objectSpread({},BUILTIN_KEYWORD_HELPERS),{},{array:array$1,concat:concat$1,fn:fn$1,get:get$1,hash:hash$1,'unique-id':uniqueId$1});{BUILTIN_HELPERS['-disallow-dynamic-resolution']=disallowDynamicResolution;}var BUILTIN_KEYWORD_MODIFIERS={action:actionModifier};var BUILTIN_MODIFIERS=_objectSpread(_objectSpread({},BUILTIN_KEYWORD_MODIFIERS),{},{on:on$1});var CLASSIC_HELPER_MANAGER_ASSOCIATED=new WeakSet();var ResolverImpl=/*#__PURE__*/function(){function ResolverImpl(){_classCallCheck(this,ResolverImpl);_defineProperty(this,\"componentDefinitionCache\",new Map());}return _createClass(ResolverImpl,[{key:\"lookupPartial\",value:function lookupPartial(){return null;}},{key:\"lookupHelper\",value:function lookupHelper(name,owner){!!(BUILTIN_HELPERS[name]&&owner.hasRegistration(\"helper:\".concat(name)))&&assert$1(\"You attempted to overwrite the built-in helper \\\"\".concat(name,\"\\\" which is not allowed. Please rename the helper.\"),!(BUILTIN_HELPERS[name]&&owner.hasRegistration(\"helper:\".concat(name))));var helper=BUILTIN_HELPERS[name];if(helper!==undefined){return helper;}var factory=owner.factoryFor(\"helper:\".concat(name));if(factory===undefined){return null;}var definition=factory.class;if(definition===undefined){return null;}if(typeof definition==='function'&&isClassicHelper(definition)){// For classic class based helpers, we need to pass the factoryFor result itself rather\n// than the raw value (`factoryFor(...).class`). This is because injections are already\n// bound in the factoryFor result, including type-based injections\n{// In DEBUG we need to only set the associated value once, otherwise\n// we'll trigger an assertion\nif(!CLASSIC_HELPER_MANAGER_ASSOCIATED.has(factory)){CLASSIC_HELPER_MANAGER_ASSOCIATED.add(factory);setInternalHelperManager(CLASSIC_HELPER_MANAGER,factory);}}return factory;}return definition;}},{key:\"lookupBuiltInHelper\",value:function lookupBuiltInHelper(name){var _BUILTIN_KEYWORD_HELP;return(_BUILTIN_KEYWORD_HELP=BUILTIN_KEYWORD_HELPERS[name])!==null&&_BUILTIN_KEYWORD_HELP!==void 0?_BUILTIN_KEYWORD_HELP:null;}},{key:\"lookupModifier\",value:function lookupModifier(name,owner){var builtin=BUILTIN_MODIFIERS[name];if(builtin!==undefined){return builtin;}var modifier=owner.factoryFor(\"modifier:\".concat(name));if(modifier===undefined){return null;}return modifier.class||null;}},{key:\"lookupBuiltInModifier\",value:function lookupBuiltInModifier(name){var _BUILTIN_KEYWORD_MODI;return(_BUILTIN_KEYWORD_MODI=BUILTIN_KEYWORD_MODIFIERS[name])!==null&&_BUILTIN_KEYWORD_MODI!==void 0?_BUILTIN_KEYWORD_MODI:null;}},{key:\"lookupComponent\",value:function lookupComponent(name,owner){var pair=lookupComponentPair(owner,name);if(pair===null){!(name!=='text-area')&&assert$1('Could not find component `<TextArea />` (did you mean `<Textarea />`?)',name!=='text-area');return null;}var template=null;var key;if(pair.component===null){key=template=pair.layout(owner);}else{key=pair.component;}var cachedComponentDefinition=this.componentDefinitionCache.get(key);if(cachedComponentDefinition!==undefined){return cachedComponentDefinition;}if(template===null&&pair.layout!==null){template=pair.layout(owner);}var finalizer=_instrumentStart('render.getComponentDefinition',instrumentationPayload,name);var definition=null;if(pair.component===null){definition={state:templateOnlyComponent(undefined,name),manager:TEMPLATE_ONLY_COMPONENT_MANAGER,template:template};}else{var factory=pair.component;!(factory.class!==undefined)&&assert$1(\"missing component class \".concat(name),factory.class!==undefined);var ComponentClass=factory.class;var manager=getInternalComponentManager(ComponentClass);definition={state:isCurlyManager(manager)?factory:ComponentClass,manager:manager,template:template};}finalizer();this.componentDefinitionCache.set(key,definition);!!(definition===null&&name==='text-area')&&assert$1('Could not find component `<TextArea />` (did you mean `<Textarea />`?)',!(definition===null&&name==='text-area'));return definition;}}]);}();// We use the `InternalOwner` notion here because we actually need all of its\n// API for using with renderers (normally, it will be `EngineInstance`).\n// We use `getOwner` from our internal home for it rather than the narrower\n// public API for the same reason.\nvar TOP_LEVEL_NAME='-top-level';var OutletView=/*#__PURE__*/function(){function OutletView(_environment,owner,template,namespace){_classCallCheck(this,OutletView);_defineProperty(this,\"ref\",void 0);_defineProperty(this,\"state\",void 0);this._environment=_environment;this.owner=owner;this.template=template;this.namespace=namespace;var outletStateTag=createTag();var outletState={outlets:{main:undefined},render:{owner:owner,into:undefined,outlet:'main',name:TOP_LEVEL_NAME,controller:undefined,model:undefined,template:template}};var ref=this.ref=createComputeRef(function(){consumeTag(outletStateTag);return outletState;},function(state){DIRTY_TAG$1(outletStateTag);outletState.outlets['main']=state;});this.state={ref:ref,name:TOP_LEVEL_NAME,template:template,controller:undefined,model:undefined};}return _createClass(OutletView,[{key:\"appendTo\",value:function appendTo(selector){var target;if(this._environment.hasDOM){target=typeof selector==='string'?document.querySelector(selector):selector;}else{target=selector;}var renderer=this.owner.lookup('renderer:-dom');// SAFETY: It's not clear that this cast is safe.\n// The types for appendOutletView may be incorrect or this is a potential bug.\nschedule('render',renderer,'appendOutletView',this,target);}},{key:\"rerender\",value:function rerender(){/**/}},{key:\"setOutletState\",value:function setOutletState(state){updateRef(this.ref,state);}},{key:\"destroy\",value:function destroy(){/**/}}],[{key:\"extend\",value:function extend(injections){return/*#__PURE__*/function(_OutletView3){function _class5(){_classCallCheck(this,_class5);return _callSuper(this,_class5,arguments);}_inherits(_class5,_OutletView3);return _createClass(_class5,null,[{key:\"create\",value:function create(options){if(options){return _superPropGet(_class5,\"create\",this,2)([Object.assign({},injections,options)]);}else{return _superPropGet(_class5,\"create\",this,2)([injections]);}}}]);}(OutletView);}},{key:\"reopenClass\",value:function reopenClass(injections){Object.assign(this,injections);}},{key:\"create\",value:function create(options){var _environment=options.environment,namespace=options.application,templateFactory=options.template;var owner=getOwner$2(options);!owner&&assert$1('OutletView is unexpectedly missing an owner',owner);var template=templateFactory(owner);return new OutletView(_environment,owner,template,namespace);}}]);}();var DynamicScope=/*#__PURE__*/function(){function DynamicScope(view,outletState){_classCallCheck(this,DynamicScope);this.view=view;this.outletState=outletState;}return _createClass(DynamicScope,[{key:\"child\",value:function child(){return new DynamicScope(this.view,this.outletState);}},{key:\"get\",value:function get(key){!(key==='outletState')&&assert$1(\"Using `-get-dynamic-scope` is only supported for `outletState` (you used `\".concat(key,\"`).\"),key==='outletState');return this.outletState;}},{key:\"set\",value:function set(key,value){!(key==='outletState')&&assert$1(\"Using `-with-dynamic-scope` is only supported for `outletState` (you used `\".concat(key,\"`).\"),key==='outletState');this.outletState=value;return value;}}]);}();var NO_OP=function NO_OP(){};// This wrapper logic prevents us from rerendering in case of a hard failure\n// during render. This prevents infinite revalidation type loops from occuring,\n// and ensures that errors are not swallowed by subsequent follow on failures.\nfunction errorLoopTransaction(fn){{return function(){var didError=true;try{fn();didError=false;}finally{if(didError){// Noop the function so that we won't keep calling it and causing\n// infinite looping failures;\nfn=function fn(){// eslint-disable-next-line no-console\nconsole.warn('Attempted to rerender, but the Ember application has had an unrecoverable error occur during render. You should reload the application after fixing the cause of the error.');};}}};}}var RootState=/*#__PURE__*/function(){function RootState(root,runtime,context,owner,template,self,parentElement,dynamicScope,builder){var _this79=this;_classCallCheck(this,RootState);_defineProperty(this,\"id\",void 0);_defineProperty(this,\"result\",void 0);_defineProperty(this,\"destroyed\",void 0);_defineProperty(this,\"render\",void 0);this.root=root;this.runtime=runtime;!(template!==undefined)&&assert$1(\"You cannot render `\".concat(valueForRef(self),\"` without a template.\"),template!==undefined);this.id=root instanceof OutletView?guidFor(root):getViewId(root);this.result=undefined;this.destroyed=false;this.render=errorLoopTransaction(function(){var layout=unwrapTemplate(template).asLayout();var iterator=renderMain(runtime,context,owner,self,builder(runtime.env,{element:parentElement,nextSibling:null}),layout,dynamicScope);var result=_this79.result=iterator.sync();// override .render function after initial render\n_this79.render=errorLoopTransaction(function(){return result.rerender({alwaysRevalidate:false});});});}return _createClass(RootState,[{key:\"isFor\",value:function isFor(possibleRoot){return this.root===possibleRoot;}},{key:\"destroy\",value:function destroy(){var result=this.result,env=this.runtime.env;this.destroyed=true;this.runtime=undefined;this.root=null;this.result=undefined;this.render=undefined;if(result!==undefined){/*\n                 Handles these scenarios:\n                  * When roots are removed during standard rendering process, a transaction exists already\n                   `.begin()` / `.commit()` are not needed.\n                 * When roots are being destroyed manually (`component.append(); component.destroy() case), no\n                   transaction exists already.\n                 * When roots are being destroyed during `Renderer#destroy`, no transaction exists\n                  */inTransaction(env,function(){return _destroy(result);});}}}]);}();var renderers=[];function _resetRenderers(){renderers.length=0;}function register(renderer){!(renderers.indexOf(renderer)===-1)&&assert$1('Cannot register the same renderer twice',renderers.indexOf(renderer)===-1);renderers.push(renderer);}function deregister(renderer){var index=renderers.indexOf(renderer);!(index!==-1)&&assert$1('Cannot deregister unknown unregistered renderer',index!==-1);renderers.splice(index,1);}function loopBegin(){var _iterator75=_createForOfIteratorHelper(renderers),_step75;try{for(_iterator75.s();!(_step75=_iterator75.n()).done;){var renderer=_step75.value;renderer._scheduleRevalidate();}}catch(err){_iterator75.e(err);}finally{_iterator75.f();}}var renderSettledDeferred=null;/*\n            Returns a promise which will resolve when rendering has settled. Settled in\n            this context is defined as when all of the tags in use are \"current\" (e.g.\n            `renderers.every(r => r._isValid())`). When this is checked at the _end_ of\n            the run loop, this essentially guarantees that all rendering is completed.\n\n            @method renderSettled\n            @returns {Promise<void>} a promise which fulfills when rendering has settled\n          */function renderSettled(){if(renderSettledDeferred===null){renderSettledDeferred=RSVP.defer();// if there is no current runloop, the promise created above will not have\n// a chance to resolve (because its resolved in backburner's \"end\" event)\nif(!_getCurrentRunLoop()){// ensure a runloop has been kicked off\n_backburner.schedule('actions',null,NO_OP);}}return renderSettledDeferred.promise;}function resolveRenderPromise(){if(renderSettledDeferred!==null){var _resolve=renderSettledDeferred.resolve;renderSettledDeferred=null;_backburner.join(null,_resolve);}}var loops=0;function loopEnd(){var _iterator76=_createForOfIteratorHelper(renderers),_step76;try{for(_iterator76.s();!(_step76=_iterator76.n()).done;){var renderer=_step76.value;if(!renderer._isValid()){if(loops>ENV._RERENDER_LOOP_LIMIT){loops=0;// TODO: do something better\nrenderer.destroy();throw new Error('infinite rendering invalidation detected');}loops++;return _backburner.join(null,NO_OP);}}}catch(err){_iterator76.e(err);}finally{_iterator76.f();}loops=0;resolveRenderPromise();}_backburner.on('begin',loopBegin);_backburner.on('end',loopEnd);var Renderer=/*#__PURE__*/function(){function Renderer(owner,document,env,rootTemplate,viewRegistry){var builder=arguments.length>5&&arguments[5]!==undefined?arguments[5]:clientBuilder;_classCallCheck(this,Renderer);_defineProperty(this,\"_rootTemplate\",void 0);_defineProperty(this,\"_viewRegistry\",void 0);_defineProperty(this,\"_roots\",void 0);_defineProperty(this,\"_removedRoots\",void 0);_defineProperty(this,\"_builder\",void 0);_defineProperty(this,\"_inRenderTransaction\",false);_defineProperty(this,\"_owner\",void 0);_defineProperty(this,\"_context\",void 0);_defineProperty(this,\"_runtime\",void 0);_defineProperty(this,\"_lastRevision\",-1);_defineProperty(this,\"_destroyed\",false);/** @internal */_defineProperty(this,\"_isInteractive\",void 0);_defineProperty(this,\"_runtimeResolver\",void 0);this._owner=owner;this._rootTemplate=rootTemplate(owner);this._viewRegistry=viewRegistry||owner.lookup('-view-registry:main');this._roots=[];this._removedRoots=[];this._builder=builder;this._isInteractive=env.isInteractive;// resolver is exposed for tests\nvar resolver=this._runtimeResolver=new ResolverImpl();var sharedArtifacts=artifacts();this._context=programCompilationContext(sharedArtifacts,resolver,function(heap){return new RuntimeOpImpl(heap);});var runtimeEnvironmentDelegate=new EmberEnvironmentDelegate(owner,env.isInteractive);this._runtime=runtimeContext({appendOperations:env.hasDOM?new DOMTreeConstruction(document):new NodeDOMTreeConstruction(document),updateOperations:new DOMChanges(document)},runtimeEnvironmentDelegate,sharedArtifacts,resolver);}return _createClass(Renderer,[{key:\"debugRenderTree\",get:function get(){var debugRenderTree=this._runtime.env.debugRenderTree;!debugRenderTree&&assert$1('Attempted to access the DebugRenderTree, but it did not exist. Is the Ember Inspector open?',debugRenderTree);return debugRenderTree;}// renderer HOOKS\n},{key:\"appendOutletView\",value:function appendOutletView(view,target){var definition=createRootOutlet(view);this._appendDefinition(view,curry(CurriedTypes.Component,definition,view.owner,null,true),target);}},{key:\"appendTo\",value:function appendTo(view,target){var definition=new RootComponentDefinition(view);this._appendDefinition(view,curry(CurriedTypes.Component,definition,this._owner,null,true),target);}},{key:\"_appendDefinition\",value:function _appendDefinition(root,definition,target){var self=createConstRef(definition,'this');var dynamicScope=new DynamicScope(null,UNDEFINED_REFERENCE);var rootState=new RootState(root,this._runtime,this._context,this._owner,this._rootTemplate,self,target,dynamicScope,this._builder);this._renderRoot(rootState);}},{key:\"rerender\",value:function rerender(){this._scheduleRevalidate();}},{key:\"register\",value:function register(view){var id=getViewId(view);!!this._viewRegistry[id]&&assert$1('Attempted to register a view with an id already in use: '+id,!this._viewRegistry[id]);this._viewRegistry[id]=view;}},{key:\"unregister\",value:function unregister(view){delete this._viewRegistry[getViewId(view)];}},{key:\"remove\",value:function remove(view){view._transitionTo('destroying');this.cleanupRootFor(view);if(this._isInteractive){view.trigger('didDestroyElement');}}},{key:\"cleanupRootFor\",value:function cleanupRootFor(view){// no need to cleanup roots if we have already been destroyed\nif(this._destroyed){return;}var roots=this._roots;// traverse in reverse so we can remove items\n// without mucking up the index\nvar i=this._roots.length;while(i--){var root=roots[i];!root&&assert$1('has root',root);if(root.isFor(view)){root.destroy();roots.splice(i,1);}}}},{key:\"destroy\",value:function destroy(){if(this._destroyed){return;}this._destroyed=true;this._clearAllRoots();}},{key:\"getElement\",value:function getElement(view){if(this._isInteractive){return getViewElement(view);}else{throw new Error('Accessing `this.element` is not allowed in non-interactive environments (such as FastBoot).');}}},{key:\"getBounds\",value:function getBounds(view){var bounds=view[BOUNDS];!bounds&&assert$1('object passed to getBounds must have the BOUNDS symbol as a property',bounds);var parentElement=bounds.parentElement();var firstNode=bounds.firstNode();var lastNode=bounds.lastNode();return{parentElement:parentElement,firstNode:firstNode,lastNode:lastNode};}},{key:\"createElement\",value:function createElement(tagName){return this._runtime.env.getAppendOperations().createElement(tagName);}},{key:\"_renderRoot\",value:function _renderRoot(root){var roots=this._roots;roots.push(root);if(roots.length===1){register(this);}this._renderRootsTransaction();}},{key:\"_renderRoots\",value:function _renderRoots(){var _this80=this;var roots=this._roots,runtime=this._runtime,removedRoots=this._removedRoots;var initialRootsLength;do{initialRootsLength=roots.length;inTransaction(runtime.env,function(){// ensure that for the first iteration of the loop\n// each root is processed\nfor(var i=0;i<roots.length;i++){var root=roots[i];true&&!root&&assert$1('has root',root);if(root.destroyed){// add to the list of roots to be removed\n// they will be removed from `this._roots` later\nremovedRoots.push(root);// skip over roots that have been marked as destroyed\ncontinue;}// when processing non-initial reflush loops,\n// do not process more roots than needed\nif(i>=initialRootsLength){continue;}root.render();}_this80._lastRevision=valueForTag(CURRENT_TAG);});}while(roots.length>initialRootsLength);// remove any roots that were destroyed during this transaction\nwhile(removedRoots.length){var root=removedRoots.pop();var rootIndex=roots.indexOf(root);roots.splice(rootIndex,1);}if(this._roots.length===0){deregister(this);}}},{key:\"_renderRootsTransaction\",value:function _renderRootsTransaction(){if(this._inRenderTransaction){// currently rendering roots, a new root was added and will\n// be processed by the existing _renderRoots invocation\nreturn;}// used to prevent calling _renderRoots again (see above)\n// while we are actively rendering roots\nthis._inRenderTransaction=true;var completedWithoutError=false;try{this._renderRoots();completedWithoutError=true;}finally{if(!completedWithoutError){this._lastRevision=valueForTag(CURRENT_TAG);}this._inRenderTransaction=false;}}},{key:\"_clearAllRoots\",value:function _clearAllRoots(){var roots=this._roots;var _iterator77=_createForOfIteratorHelper(roots),_step77;try{for(_iterator77.s();!(_step77=_iterator77.n()).done;){var root=_step77.value;root.destroy();}}catch(err){_iterator77.e(err);}finally{_iterator77.f();}this._removedRoots.length=0;this._roots=[];// if roots were present before destroying\n// deregister this renderer instance\nif(roots.length){deregister(this);}}},{key:\"_scheduleRevalidate\",value:function _scheduleRevalidate(){_backburner.scheduleOnce('render',this,this._revalidate);}},{key:\"_isValid\",value:function _isValid(){return this._destroyed||this._roots.length===0||validateTag(CURRENT_TAG,this._lastRevision);}},{key:\"_revalidate\",value:function _revalidate(){if(this._isValid()){return;}this._renderRootsTransaction();}}],[{key:\"create\",value:function create(props){var _viewRegistry=props._viewRegistry;var owner=getOwner$2(props);!owner&&assert$1('Renderer is unexpectedly missing an owner',owner);var document=owner.lookup('service:-document');var env=owner.lookup('-environment:main');var rootTemplate=owner.lookup(privatize(_templateObject4||(_templateObject4=_taggedTemplateLiteral([\"template:-root\"]))));var builder=owner.lookup('service:-dom-builder');return new this(owner,document,env,rootTemplate,_viewRegistry,builder);}}]);}();// STATE within a module is frowned upon, this exists\n// to support Ember.TEMPLATES but shield ember internals from this legacy\n// global API.\nvar TEMPLATES={};function setTemplates(templates){TEMPLATES=templates;}function getTemplates(){return TEMPLATES;}function getTemplate(name){if(Object.prototype.hasOwnProperty.call(TEMPLATES,name)){return TEMPLATES[name];}}function hasTemplate(name){return Object.prototype.hasOwnProperty.call(TEMPLATES,name);}function setTemplate(name,template){return TEMPLATES[name]=template;}var OutletTemplate=templateFactory(/*\n            {{component (outletHelper)}}\n          */{\"id\":\"2c6+lAmT\",\"block\":\"[[[46,[28,[32,0],null,null],null,null,null]],[],false,[\\\"component\\\"]]\",\"moduleName\":\"packages/@ember/-internals/glimmer/lib/templates/outlet.hbs\",\"scope\":function scope(){return[outletHelper];},\"isStrictMode\":true});function setupApplicationRegistry(registry){// because we are using injections we can't use instantiate false\n// we need to use bind() to copy the function so factory for\n// association won't leak\nregistry.register('service:-dom-builder',{// Additionally, we *must* constrain this to require `props` on create, else\n// we *know* it cannot have an owner.\ncreate:function create(props){var owner=getOwner$2(props);!owner&&assert$1('DomBuilderService is unexpectedly missing an owner',owner);var env=owner.lookup('-environment:main');switch(env._renderMode){case'serialize':return serializeBuilder.bind(null);case'rehydrate':return rehydrationBuilder.bind(null);default:return clientBuilder.bind(null);}}});registry.register(privatize(_templateObject5||(_templateObject5=_taggedTemplateLiteral([\"template:-root\"]))),RootTemplate);registry.register('renderer:-dom',Renderer);}function setupEngineRegistry(registry){registry.optionsForType('template',{instantiate:false});registry.register('view:-outlet',OutletView);registry.register('template:-outlet',OutletTemplate);registry.optionsForType('helper',{instantiate:false});registry.register('component:input',Input);registry.register('component:link-to',LinkTo);registry.register('component:textarea',Textarea);}/**\n             Associate a class with a component manager (an object that is responsible for\n             coordinating the lifecycle events that occurs when invoking, rendering and\n             re-rendering a component).\n\n             @method setComponentManager\n             @param {Function} factory a function to create the owner for an object\n             @param {Object} obj the object to associate with the componetn manager\n             @return {Object} the same object passed in\n             @public\n            */function setComponentManager(manager,obj){return setComponentManager$1(manager,obj);}/**\n            [Glimmer](https://github.com/tildeio/glimmer) is a templating engine used by Ember.js that is compatible with a subset of the [Handlebars](http://handlebarsjs.com/) syntax.\n\n            ### Showing a property\n\n            Templates manage the flow of an application's UI, and display state (through\n            the DOM) to a user. For example, given a component with the property \"name\",\n            that component's template can use the name in several ways:\n\n            ```app/components/person-profile.js\n            import Component from '@ember/component';\n\n            export default Component.extend({\n              name: 'Jill'\n            });\n            ```\n\n            ```app/components/person-profile.hbs\n            {{this.name}}\n            <div>{{this.name}}</div>\n            <span data-name={{this.name}}></span>\n            ```\n\n            Any time the \"name\" property on the component changes, the DOM will be\n            updated.\n\n            Properties can be chained as well:\n\n            ```handlebars\n            {{@aUserModel.name}}\n            <div>{{@listOfUsers.firstObject.name}}</div>\n            ```\n\n            ### Using Ember helpers\n\n            When content is passed in mustaches `{{}}`, Ember will first try to find a helper\n            or component with that name. For example, the `if` helper:\n\n            ```app/components/person-profile.hbs\n            {{if this.name \"I have a name\" \"I have no name\"}}\n            <span data-has-name={{if this.name true}}></span>\n            ```\n\n            The returned value is placed where the `{{}}` is called. The above style is\n            called \"inline\". A second style of helper usage is called \"block\". For example:\n\n            ```handlebars\n            {{#if this.name}}\n              I have a name\n            {{else}}\n              I have no name\n            {{/if}}\n            ```\n\n            The block form of helpers allows you to control how the UI is created based\n            on the values of properties.\n            A third form of helper is called \"nested\". For example here the concat\n            helper will add \" Doe\" to a displayed name if the person has no last name:\n\n            ```handlebars\n            <span data-name={{concat this.firstName (\n              if this.lastName (concat \" \" this.lastName) \"Doe\"\n            )}}></span>\n            ```\n\n            Ember's built-in helpers are described under the [Ember.Templates.helpers](/ember/release/classes/Ember.Templates.helpers)\n            namespace. Documentation on creating custom helpers can be found under\n            [helper](/ember/release/functions/@ember%2Fcomponent%2Fhelper/helper) (or\n            under [Helper](/ember/release/classes/Helper) if a helper requires access to\n            dependency injection).\n\n            ### Invoking a Component\n\n            Ember components represent state to the UI of an application. Further\n            reading on components can be found under [Component](/ember/release/classes/Component).\n\n            @module @ember/component\n            @main @ember/component\n            @public\n           */var emberinternalsGlimmerIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Component:Component,DOMChanges:DOMChanges,DOMTreeConstruction:DOMTreeConstruction,Helper:Helper,Input:Input,LinkTo:LinkTo,NodeDOMTreeConstruction:NodeDOMTreeConstruction,OutletView:OutletView,Renderer:Renderer,RootTemplate:RootTemplate,SafeString:SafeString,Textarea:Textarea,_resetRenderers:_resetRenderers,componentCapabilities:componentCapabilities,escapeExpression:escapeExpression,getTemplate:getTemplate,getTemplates:getTemplates,hasTemplate:hasTemplate,helper:helper$2,htmlSafe:htmlSafe,isHTMLSafe:isHTMLSafe,isSerializationFirstNode:isSerializationFirstNode,modifierCapabilities:modifierCapabilities,renderSettled:renderSettled,setComponentManager:setComponentManager,setTemplate:setTemplate,setTemplates:setTemplates,setupApplicationRegistry:setupApplicationRegistry,setupEngineRegistry:setupEngineRegistry,template:templateFactory,templateCacheCounters:templateCacheCounters,uniqueId:uniqueId$2},Symbol.toStringTag,{value:'Module'});var emberinternalsRoutingIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,RouterDSL:DSLImpl,controllerFor:controllerFor,generateController:_generateController,generateControllerFactory:generateControllerFactory},Symbol.toStringTag,{value:'Module'});// The formatting here is designed to help make this type actually be\n// comprehensible to mortals, including the mortals who came up with it.\n// prettier-ignore\n// A way of representing non-user-constructible types. You can conveniently use\n// this by doing `interface Type extends Opaque<'some-type-name'> { ... }` for\n// simple types, and/or you can type-parameterize it as makes sense for your use\n// case (see e.g. `@ember/component/helper`'s use with functional helpers).\nvar Opaque=/*#__PURE__*/_createClass(function Opaque(){_classCallCheck(this,Opaque);});var emberinternalsUtilityTypesIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Opaque:Opaque},Symbol.toStringTag,{value:'Module'});var fallbackViewRegistry=makeDictionary(null);var emberinternalsViewsLibCompatFallbackViewRegistry=/*#__PURE__*/Object.defineProperty({__proto__:null,default:fallbackViewRegistry},Symbol.toStringTag,{value:'Module'});/*globals CustomEvent *//**\n            @module @ember/application\n          */var loadHooks=ENV.EMBER_LOAD_HOOKS||{};var loaded={};var _loaded=loaded;/**\n            Detects when a specific package of Ember (e.g. 'Application')\n            has fully loaded and is available for extension.\n\n            The provided `callback` will be called with the `name` passed\n            resolved from a string into the object:\n\n            ``` javascript\n            import { onLoad } from '@ember/application';\n\n            onLoad('Ember.Application' function(hbars) {\n              hbars.registerHelper(...);\n            });\n            ```\n\n            @method onLoad\n            @static\n            @for @ember/application\n            @param name {String} name of hook\n            @param callback {Function} callback to be called\n            @private\n          */function onLoad(name,callback){var _loadHooks$name;var object=loaded[name];var hooks=(_loadHooks$name=loadHooks[name])!==null&&_loadHooks$name!==void 0?_loadHooks$name:loadHooks[name]=[];hooks.push(callback);if(object){callback(object);}}/**\n            Called when an Ember.js package (e.g Application) has finished\n            loading. Triggers any callbacks registered for this event.\n\n            @method runLoadHooks\n            @static\n            @for @ember/application\n            @param name {String} name of hook\n            @param object {Object} object to pass to callbacks\n            @private\n          */function runLoadHooks(name,object){var _loadHooks$name2;loaded[name]=object;if(window$1&&typeof CustomEvent==='function'){var event=new CustomEvent(name,{detail:object});window$1.dispatchEvent(event);}(_loadHooks$name2=loadHooks[name])===null||_loadHooks$name2===void 0||_loadHooks$name2.forEach(function(callback){return callback(object);});}var emberApplicationLibLazyLoad=/*#__PURE__*/Object.defineProperty({__proto__:null,_loaded:_loaded,onLoad:onLoad,runLoadHooks:runLoadHooks},Symbol.toStringTag,{value:'Module'});/**\n            @private\n\n            Returns the current `location.pathname`, normalized for IE inconsistencies.\n          */function getPath(location){var pathname=location.pathname;// Various versions of IE/Opera don't always return a leading slash\nif(pathname[0]!=='/'){pathname=\"/\".concat(pathname);}return pathname;}/**\n            @private\n\n            Returns the current `location.search`.\n          */function getQuery(location){return location.search;}/**\n            @private\n\n            Returns the hash or empty string\n          */function _getHash(location){if(location.hash!==undefined){return location.hash.substring(0);}return'';}function getFullPath(location){return getPath(location)+getQuery(location)+_getHash(location);}function getOrigin(location){var origin=location.origin;// Older browsers, especially IE, don't have origin\nif(!origin){origin=\"\".concat(location.protocol,\"//\").concat(location.hostname);if(location.port){origin+=\":\".concat(location.port);}}return origin;}/**\n            Replaces the current location, making sure we explicitly include the origin\n            to prevent redirecting to a different origin.\n\n            @private\n          */function replacePath(location,path){location.replace(getOrigin(location)+path);}var emberRoutingLibLocationUtils=/*#__PURE__*/Object.defineProperty({__proto__:null,getFullPath:getFullPath,getHash:_getHash,getOrigin:getOrigin,getPath:getPath,getQuery:getQuery,replacePath:replacePath},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/routing/hash-location\n          *//**\n            `HashLocation` implements the location API using the browser's\n            hash. At present, it relies on a `hashchange` event existing in the\n            browser.\n\n            Using `HashLocation` results in URLs with a `#` (hash sign) separating the\n            server side URL portion of the URL from the portion that is used by Ember.\n\n            Example:\n\n            ```app/router.js\n            Router.map(function() {\n              this.route('posts', function() {\n                this.route('new');\n              });\n            });\n\n            Router.reopen({\n              location: 'hash'\n            });\n            ```\n\n            This will result in a posts.new url of `/#/posts/new`.\n\n            @class HashLocation\n            @extends EmberObject\n            @protected\n          */var HashLocation=/*#__PURE__*/function(_EmberObject4){function HashLocation(){var _this81;_classCallCheck(this,HashLocation);for(var _len93=arguments.length,args=new Array(_len93),_key85=0;_key85<_len93;_key85++){args[_key85]=arguments[_key85];}_this81=_callSuper(this,HashLocation,[].concat(args));_defineProperty(_this81,\"_hashchangeHandler\",void 0);_defineProperty(_this81,\"_location\",void 0);_defineProperty(_this81,\"lastSetURL\",null);return _this81;}_inherits(HashLocation,_EmberObject4);return _createClass(HashLocation,[{key:\"init\",value:function init(){var _this$_location;this.location=(_this$_location=this._location)!==null&&_this$_location!==void 0?_this$_location:window.location;this._hashchangeHandler=undefined;}/**\n              @private\n               Returns normalized location.hash\n               @since 1.5.1\n              @method getHash\n            */},{key:\"getHash\",value:function getHash(){return _getHash(this.location);}/**\n              Returns the normalized URL, constructed from `location.hash`.\n               e.g. `#/foo` => `/foo` as well as `#/foo#bar` => `/foo#bar`.\n               By convention, hashed paths must begin with a forward slash, otherwise they\n              are not treated as a path so we can distinguish intent.\n               @private\n              @method getURL\n            */},{key:\"getURL\",value:function getURL(){var originalPath=this.getHash().substring(1);var outPath=originalPath;if(outPath[0]!=='/'){outPath='/';// Only add the # if the path isn't empty.\n// We do NOT want `/#` since the ampersand\n// is only included (conventionally) when\n// the location.hash has a value\nif(originalPath){outPath+=\"#\".concat(originalPath);}}return outPath;}/**\n              Set the `location.hash` and remembers what was set. This prevents\n              `onUpdateURL` callbacks from triggering when the hash was set by\n              `HashLocation`.\n               @private\n              @method setURL\n              @param path {String}\n            */},{key:\"setURL\",value:function setURL(path){this.location.hash=path;this.lastSetURL=path;}/**\n              Uses location.replace to update the url without a page reload\n              or history modification.\n               @private\n              @method replaceURL\n              @param path {String}\n            */},{key:\"replaceURL\",value:function replaceURL(path){this.location.replace(\"#\".concat(path));this.lastSetURL=path;}},{key:\"onUpdateURL\",value:/**\n              Register a callback to be invoked when the hash changes. These\n              callbacks will execute when the user presses the back or forward\n              button, but not after `setURL` is invoked.\n               @private\n              @method onUpdateURL\n              @param callback {Function}\n            */function onUpdateURL(callback){this._removeEventListener();this._hashchangeHandler=bind(this,function(_event){var path=this.getURL();if(this.lastSetURL===path){return;}this.lastSetURL=null;callback(path);});window.addEventListener('hashchange',this._hashchangeHandler);}/**\n              Given a URL, formats it to be placed into the page as part\n              of an element's `href` attribute.\n               @private\n              @method formatURL\n              @param url {String}\n            */},{key:\"formatURL\",value:function formatURL(url){return\"#\".concat(url);}/**\n              Cleans up the HashLocation event listener.\n               @private\n              @method willDestroy\n            */},{key:\"willDestroy\",value:function willDestroy(){this._removeEventListener();}},{key:\"_removeEventListener\",value:function _removeEventListener(){if(this._hashchangeHandler){window.removeEventListener('hashchange',this._hashchangeHandler);}}}]);}(EmberObject);var emberRoutingHashLocation=/*#__PURE__*/Object.defineProperty({__proto__:null,default:HashLocation},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/routing/history-location\n          */var popstateFired=false;function _uuid(){return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){var r,v;r=Math.random()*16|0;v=c==='x'?r:r&3|8;return v.toString(16);});}/**\n            HistoryLocation implements the location API using the browser's\n            history.pushState API.\n\n            Using `HistoryLocation` results in URLs that are indistinguishable from a\n            standard URL. This relies upon the browser's `history` API.\n\n            Example:\n\n            ```app/router.js\n            Router.map(function() {\n              this.route('posts', function() {\n                this.route('new');\n              });\n            });\n\n            Router.reopen({\n              location: 'history'\n            });\n            ```\n\n            This will result in a posts.new url of `/posts/new`.\n\n            Keep in mind that your server must serve the Ember app at all the routes you\n            define.\n\n            Using `HistoryLocation` will also result in location states being recorded by\n            the browser `history` API with the following schema:\n\n            ```\n            window.history.state -> { path: '/', uuid: '3552e730-b4a6-46bd-b8bf-d8c3c1a97e0a' }\n            ```\n\n            This allows each in-app location state to be tracked uniquely across history\n            state changes via the `uuid` field.\n\n            @class HistoryLocation\n            @extends EmberObject\n            @protected\n          */var HistoryLocation=/*#__PURE__*/function(_EmberObject5){function HistoryLocation(){var _this82;_classCallCheck(this,HistoryLocation);for(var _len94=arguments.length,args=new Array(_len94),_key86=0;_key86<_len94;_key86++){args[_key86]=arguments[_key86];}_this82=_callSuper(this,HistoryLocation,[].concat(args));// SAFETY: both of these properties initialized via `init`.\n_defineProperty(_this82,\"history\",void 0);_defineProperty(_this82,\"_previousURL\",void 0);_defineProperty(_this82,\"_popstateHandler\",void 0);/**\n              Will be pre-pended to path upon state change\n               @property rootURL\n              @default '/'\n              @private\n            */_defineProperty(_this82,\"rootURL\",'/');return _this82;}_inherits(HistoryLocation,_EmberObject5);return _createClass(HistoryLocation,[{key:\"getHash\",value:/**\n              @private\n               Returns normalized location.hash\n               @method getHash\n            */function getHash(){return _getHash(this.location);}},{key:\"init\",value:function init(){var _this$location;this._super.apply(this,arguments);var base=document.querySelector('base');var baseURL='';if(base!==null&&base.hasAttribute('href')){var _base$getAttribute;baseURL=(_base$getAttribute=base.getAttribute('href'))!==null&&_base$getAttribute!==void 0?_base$getAttribute:'';}this.baseURL=baseURL;this.location=(_this$location=this.location)!==null&&_this$location!==void 0?_this$location:window.location;this._popstateHandler=undefined;}/**\n              Used to set state on first call to setURL\n               @private\n              @method initState\n            */},{key:\"initState\",value:function initState(){var _this$history;var history=(_this$history=this.history)!==null&&_this$history!==void 0?_this$history:window.history;this.history=history;var state=history.state;var path=this.formatURL(this.getURL());if(state&&state.path===path){// preserve existing state\n// used for webkit workaround, since there will be no initial popstate event\nthis._previousURL=this.getURL();}else{this.replaceState(path);}}/**\n              Returns the current `location.pathname` without `rootURL` or `baseURL`\n               @private\n              @method getURL\n              @return url {String}\n            */},{key:\"getURL\",value:function getURL(){var location=this.location,rootURL=this.rootURL,baseURL=this.baseURL;var path=location.pathname;// remove trailing slashes if they exists\nrootURL=rootURL.replace(/\\/$/,'');baseURL=baseURL.replace(/\\/$/,'');// remove baseURL and rootURL from start of path\nvar url=path.replace(new RegExp(\"^\".concat(baseURL,\"(?=/|$)\")),'').replace(new RegExp(\"^\".concat(rootURL,\"(?=/|$)\")),'').replace(/\\/\\//g,'/');// remove extra slashes\nvar search=location.search||'';url+=search+this.getHash();return url;}/**\n              Uses `history.pushState` to update the url without a page reload.\n               @private\n              @method setURL\n              @param path {String}\n            */},{key:\"setURL\",value:function setURL(path){!this.history&&assert$1('HistoryLocation.history is unexpectedly missing',this.history);var state=this.history.state;path=this.formatURL(path);if(!state||state.path!==path){this.pushState(path);}}/**\n              Uses `history.replaceState` to update the url without a page reload\n              or history modification.\n               @private\n              @method replaceURL\n              @param path {String}\n            */},{key:\"replaceURL\",value:function replaceURL(path){!this.history&&assert$1('HistoryLocation.history is unexpectedly missing',this.history);var state=this.history.state;path=this.formatURL(path);if(!state||state.path!==path){this.replaceState(path);}}/**\n             Pushes a new state.\n              @private\n             @method pushState\n             @param path {String}\n            */},{key:\"pushState\",value:function pushState(path){var state={path:path,uuid:_uuid()};!this.history&&assert$1('HistoryLocation.history is unexpectedly missing',this.history);this.history.pushState(state,'',path);// used for webkit workaround\nthis._previousURL=this.getURL();}/**\n             Replaces the current state.\n              @private\n             @method replaceState\n             @param path {String}\n            */},{key:\"replaceState\",value:function replaceState(path){var state={path:path,uuid:_uuid()};!this.history&&assert$1('HistoryLocation.history is unexpectedly missing',this.history);this.history.replaceState(state,'',path);// used for webkit workaround\nthis._previousURL=this.getURL();}/**\n              Register a callback to be invoked whenever the browser\n              history changes, including using forward and back buttons.\n               @private\n              @method onUpdateURL\n              @param callback {Function}\n            */},{key:\"onUpdateURL\",value:function onUpdateURL(callback){var _this83=this;this._removeEventListener();this._popstateHandler=function(){// Ignore initial page load popstate event in Chrome\nif(!popstateFired){popstateFired=true;if(_this83.getURL()===_this83._previousURL){return;}}callback(_this83.getURL());};window.addEventListener('popstate',this._popstateHandler);}/**\n              Formats url to be placed into href attribute.\n               @private\n              @method formatURL\n              @param url {String}\n              @return formatted url {String}\n            */},{key:\"formatURL\",value:function formatURL(url){var rootURL=this.rootURL,baseURL=this.baseURL;if(url!==''){// remove trailing slashes if they exists\nrootURL=rootURL.replace(/\\/$/,'');baseURL=baseURL.replace(/\\/$/,'');}else if(baseURL[0]==='/'&&rootURL[0]==='/'){// if baseURL and rootURL both start with a slash\n// ... remove trailing slash from baseURL if it exists\nbaseURL=baseURL.replace(/\\/$/,'');}return baseURL+rootURL+url;}/**\n              Cleans up the HistoryLocation event listener.\n               @private\n              @method willDestroy\n            */},{key:\"willDestroy\",value:function willDestroy(){this._removeEventListener();}},{key:\"_removeEventListener\",value:function _removeEventListener(){if(this._popstateHandler){window.removeEventListener('popstate',this._popstateHandler);}}}]);}(EmberObject);var emberRoutingHistoryLocation=/*#__PURE__*/Object.defineProperty({__proto__:null,default:HistoryLocation},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/routing/none-location\n          *//**\n            NoneLocation does not interact with the browser. It is useful for\n            testing, or when you need to manage state with your Router, but temporarily\n            don't want it to muck with the URL (for example when you embed your\n            application in a larger page).\n\n            Using `NoneLocation` causes Ember to not store the applications URL state\n            in the actual URL. This is generally used for testing purposes, and is one\n            of the changes made when calling `App.setupForTesting()`.\n\n            @class NoneLocation\n            @extends EmberObject\n            @protected\n          */var NoneLocation=/*#__PURE__*/function(_EmberObject6){function NoneLocation(){var _this84;_classCallCheck(this,NoneLocation);for(var _len95=arguments.length,args=new Array(_len95),_key87=0;_key87<_len95;_key87++){args[_key87]=arguments[_key87];}_this84=_callSuper(this,NoneLocation,[].concat(args));_defineProperty(_this84,\"updateCallback\",void 0);return _this84;}_inherits(NoneLocation,_EmberObject6);return _createClass(NoneLocation,[{key:\"initState\",value:// Set in reopen so it can be overwritten with extend\n/**\n              Will be pre-pended to path.\n               @private\n              @property rootURL\n              @default '/'\n            */// Set in reopen so it can be overwritten with extend\nfunction initState(){this._super.apply(this,arguments);var rootURL=this.rootURL;// This assert doesn't have anything to do with state initialization,\n// but we're hijacking this method since it's called after the route has\n// set the rootURL property on its Location instance.\n!(rootURL.charAt(rootURL.length-1)==='/')&&assert$1('rootURL must end with a trailing forward slash e.g. \"/app/\"',rootURL.charAt(rootURL.length-1)==='/');}/**\n              Returns the current path without `rootURL`.\n               @private\n              @method getURL\n              @return {String} path\n            */},{key:\"getURL\",value:function getURL(){var path=this.path,rootURL=this.rootURL;// remove trailing slashes if they exists\nrootURL=rootURL.replace(/\\/$/,'');// remove rootURL from url\nreturn path.replace(new RegExp(\"^\".concat(rootURL,\"(?=/|$)\")),'');}/**\n              Set the path and remembers what was set. Using this method\n              to change the path will not invoke the `updateURL` callback.\n               @private\n              @method setURL\n              @param path {String}\n            */},{key:\"setURL\",value:function setURL(path){this.path=path;}/**\n              Register a callback to be invoked when the path changes. These\n              callbacks will execute when the user presses the back or forward\n              button, but not after `setURL` is invoked.\n               @private\n              @method onUpdateURL\n              @param callback {Function}\n            */},{key:\"onUpdateURL\",value:function onUpdateURL(callback){this.updateCallback=callback;}/**\n              Sets the path and calls the `updateURL` callback.\n               @private\n              @method handleURL\n              @param url {String}\n            */},{key:\"handleURL\",value:function handleURL(url){this.path=url;if(this.updateCallback){this.updateCallback(url);}}/**\n              Given a URL, formats it to be placed into the page as part\n              of an element's `href` attribute.\n               @private\n              @method formatURL\n              @param {String} url\n              @return {String} url\n            */},{key:\"formatURL\",value:function formatURL(url){var rootURL=this.rootURL;if(url!==''){// remove trailing slashes if they exists\nrootURL=rootURL.replace(/\\/$/,'');}return rootURL+url;}}]);}(EmberObject);NoneLocation.reopen({path:'',rootURL:'/'});var emberRoutingNoneLocation=/*#__PURE__*/Object.defineProperty({__proto__:null,default:NoneLocation},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/application\n          *//**\n            The `ApplicationInstance` encapsulates all of the stateful aspects of a\n            running `Application`.\n\n            At a high-level, we break application boot into two distinct phases:\n\n            * Definition time, where all of the classes, templates, and other\n              dependencies are loaded (typically in the browser).\n            * Run time, where we begin executing the application once everything\n              has loaded.\n\n            Definition time can be expensive and only needs to happen once since it is\n            an idempotent operation. For example, between test runs and FastBoot\n            requests, the application stays the same. It is only the state that we want\n            to reset.\n\n            That state is what the `ApplicationInstance` manages: it is responsible for\n            creating the container that contains all application state, and disposing of\n            it once the particular test run or FastBoot request has finished.\n\n            @public\n            @class ApplicationInstance\n            @extends EngineInstance\n          */var ApplicationInstance=/*#__PURE__*/function(_EngineInstance2){function ApplicationInstance(){var _this85;_classCallCheck(this,ApplicationInstance);for(var _len96=arguments.length,args=new Array(_len96),_key88=0;_key88<_len96;_key88++){args[_key88]=arguments[_key88];}_this85=_callSuper(this,ApplicationInstance,[].concat(args));/**\n              The `Application` for which this is an instance.\n               @property {Application} application\n              @private\n            *//**\n              The root DOM element of the Application as an element or a\n              CSS selector.\n               @private\n              @property {String|DOMElement} rootElement\n            */_defineProperty(_this85,\"rootElement\",null);_defineProperty(_this85,\"_router\",void 0);return _this85;}_inherits(ApplicationInstance,_EngineInstance2);return _createClass(ApplicationInstance,[{key:\"init\",value:function init(properties){_superPropGet(ApplicationInstance,\"init\",this,3)([properties]);this.application._watchInstance(this);// Register this instance in the per-instance registry.\n//\n// Why do we need to register the instance in the first place?\n// Because we need a good way for the root route (a.k.a ApplicationRoute)\n// to notify us when it has created the root-most view. That view is then\n// appended to the rootElement, in the case of apps, to the fixture harness\n// in tests, or rendered to a string in the case of FastBoot.\nthis.register('-application-instance:main',this,{instantiate:false});}/**\n              Overrides the base `EngineInstance._bootSync` method with concerns relevant\n              to booting application (instead of engine) instances.\n               This method should only contain synchronous boot concerns. Asynchronous\n              boot concerns should eventually be moved to the `boot` method, which\n              returns a promise.\n               Until all boot code has been made asynchronous, we need to continue to\n              expose this method for use *internally* in places where we need to boot an\n              instance synchronously.\n               @private\n            */},{key:\"_bootSync\",value:function _bootSync(options){if(this._booted){return this;}options=new _BootOptions(options);this.setupRegistry(options);if(options.rootElement){this.rootElement=options.rootElement;}else{this.rootElement=this.application.rootElement;}if(options.location){_set5(this.router,'location',options.location);}this.application.runInstanceInitializers(this);if(options.isInteractive){this.setupEventDispatcher();}this._booted=true;return this;}},{key:\"setupRegistry\",value:function setupRegistry(options){this.constructor.setupRegistry(this.__registry__,options);}},{key:\"router\",get:function get(){if(!this._router){var router=this.lookup('router:main');!(router instanceof EmberRouter)&&assert$1('expected an instance of Router',router instanceof EmberRouter);this._router=router;}return this._router;}/**\n              This hook is called by the root-most Route (a.k.a. the ApplicationRoute)\n              when it has finished creating the root View. By default, we simply take the\n              view and append it to the `rootElement` specified on the Application.\n               In cases like FastBoot and testing, we can override this hook and implement\n              custom behavior, such as serializing to a string and sending over an HTTP\n              socket rather than appending to DOM.\n               @param view {Ember.View} the root-most view\n              @deprecated\n              @private\n            */},{key:\"didCreateRootView\",value:function didCreateRootView(view){view.appendTo(this.rootElement);}/**\n              Tells the router to start routing. The router will ask the location for the\n              current URL of the page to determine the initial URL to start routing to.\n              To start the app at a specific URL, call `handleURL` instead.\n               @private\n            */},{key:\"startRouting\",value:function startRouting(){this.router.startRouting();}/**\n              Sets up the router, initializing the child router and configuring the\n              location before routing begins.\n               Because setup should only occur once, multiple calls to `setupRouter`\n              beyond the first call have no effect.\n               This is commonly used in order to confirm things that rely on the router\n              are functioning properly from tests that are primarily rendering related.\n               For example, from within [ember-qunit](https://github.com/emberjs/ember-qunit)'s\n              `setupRenderingTest` calling `this.owner.setupRouter()` would allow that\n              rendering test to confirm that any `<LinkTo></LinkTo>`'s that are rendered\n              have the correct URL.\n               @public\n            */},{key:\"setupRouter\",value:function setupRouter(){this.router.setupRouter();}/**\n              Directs the router to route to a particular URL. This is useful in tests,\n              for example, to tell the app to start at a particular URL.\n               @param url {String} the URL the router should route to\n              @private\n            */},{key:\"handleURL\",value:function handleURL(url){this.setupRouter();return this.router.handleURL(url);}/**\n              @private\n            */},{key:\"setupEventDispatcher\",value:function setupEventDispatcher(){var dispatcher=this.lookup('event_dispatcher:main');!(dispatcher instanceof EventDispatcher)&&assert$1('expected EventDispatcher',dispatcher instanceof EventDispatcher);var applicationCustomEvents=get$2(this.application,'customEvents');var instanceCustomEvents=get$2(this,'customEvents');var customEvents=Object.assign({},applicationCustomEvents,instanceCustomEvents);!(this.rootElement===null||typeof this.rootElement==='string'||this.rootElement instanceof Element)&&assert$1('[BUG] Tried to set up dispatcher with an invalid root element',this.rootElement===null||typeof this.rootElement==='string'||this.rootElement instanceof Element);dispatcher.setup(customEvents,this.rootElement);return dispatcher;}/**\n              Returns the current URL of the app instance. This is useful when your\n              app does not update the browsers URL bar (i.e. it uses the `'none'`\n              location adapter).\n               @public\n              @return {String} the current URL\n            */},{key:\"getURL\",value:function getURL(){return this.router.url;}// `instance.visit(url)` should eventually replace `instance.handleURL()`;\n// the test helpers can probably be switched to use this implementation too\n/**\n              Navigate the instance to a particular URL. This is useful in tests, for\n              example, or to tell the app to start at a particular URL. This method\n              returns a promise that resolves with the app instance when the transition\n              is complete, or rejects if the transition was aborted due to an error.\n               @public\n              @param url {String} the destination URL\n              @return {Promise<ApplicationInstance>}\n            */},{key:\"visit\",value:function visit(url){var _this86=this;this.setupRouter();var bootOptions=this.__container__.lookup('-environment:main');var router=this.router;var handleTransitionResolve=function handleTransitionResolve(){if(!bootOptions.options.shouldRender){// No rendering is needed, and routing has completed, simply return.\nreturn _this86;}else{// Ensure that the visit promise resolves when all rendering has completed\nreturn renderSettled().then(function(){return _this86;});}};var _handleTransitionReject=function handleTransitionReject(error){if(error.error&&error.error instanceof Error){throw error.error;}else if(error.name==='TransitionAborted'&&router._routerMicrolib.activeTransition){return router._routerMicrolib.activeTransition.then(handleTransitionResolve,_handleTransitionReject);}else if(error.name==='TransitionAborted'){throw new Error(error.message);}else{throw error;}};var location=get$2(router,'location');!(typeof location!=='string')&&assert$1('location has been initialized',typeof location!=='string');// Keeps the location adapter's internal URL in-sync\nlocation.setURL(url);// getURL returns the set url with the rootURL stripped off\nreturn router.handleURL(location.getURL()).then(handleTransitionResolve,_handleTransitionReject);}},{key:\"willDestroy\",value:function willDestroy(){_superPropGet(ApplicationInstance,\"willDestroy\",this,3)([]);this.application._unwatchInstance(this);}/**\n             @private\n             @method setupRegistry\n             @param {Registry} registry\n             @param {BootOptions} options\n            */}],[{key:\"setupRegistry\",value:function setupRegistry(registry){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var coptions=options instanceof _BootOptions?options:new _BootOptions(options);registry.register('-environment:main',coptions.toEnvironment(),{instantiate:false});registry.register('service:-document',coptions.document,{instantiate:false});_superPropGet(ApplicationInstance,\"setupRegistry\",this,2)([registry,coptions]);}}]);}(EngineInstance);/**\n            A list of boot-time configuration options for customizing the behavior of\n            an `ApplicationInstance`.\n\n            This is an interface class that exists purely to document the available\n            options; you do not need to construct it manually. Simply pass a regular\n            JavaScript object containing the desired options into methods that require\n            one of these options object:\n\n            ```javascript\n            MyApp.visit(\"/\", { location: \"none\", rootElement: \"#container\" });\n            ```\n\n            Not all combinations of the supported options are valid. See the documentation\n            on `Application#visit` for the supported configurations.\n\n            Internal, experimental or otherwise unstable flags are marked as private.\n\n            @class BootOptions\n            @namespace ApplicationInstance\n            @public\n          */var _BootOptions=/*#__PURE__*/function(){function _BootOptions(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,_BootOptions);/**\n              Interactive mode: whether we need to set up event delegation and invoke\n              lifecycle callbacks on Components.\n               @property isInteractive\n              @type boolean\n              @default auto-detected\n              @private\n            */_defineProperty(this,\"isInteractive\",void 0);/**\n              @property _renderMode\n              @type string\n              @default undefined\n              @private\n            */_defineProperty(this,\"_renderMode\",void 0);/**\n              Run in a full browser environment.\n               When this flag is set to `false`, it will disable most browser-specific\n              and interactive features. Specifically:\n               * It does not use `jQuery` to append the root view; the `rootElement`\n                (either specified as a subsequent option or on the application itself)\n                must already be an `Element` in the given `document` (as opposed to a\n                string selector).\n               * It does not set up an `EventDispatcher`.\n               * It does not run any `Component` lifecycle hooks (such as `didInsertElement`).\n               * It sets the `location` option to `\"none\"`. (If you would like to use\n                the location adapter specified in the app's router instead, you can also\n                specify `{ location: null }` to specifically opt-out.)\n               @property isBrowser\n              @type boolean\n              @default auto-detected\n              @public\n            */_defineProperty(this,\"isBrowser\",void 0);/**\n              If present, overrides the router's `location` property with this\n              value. This is useful for environments where trying to modify the\n              URL would be inappropriate.\n               @property location\n              @type string\n              @default null\n              @public\n            */_defineProperty(this,\"location\",null);/**\n              Disable rendering completely.\n               When this flag is set to `false`, it will disable the entire rendering\n              pipeline. Essentially, this puts the app into \"routing-only\" mode. No\n              templates will be rendered, and no Components will be created.\n               @property shouldRender\n              @type boolean\n              @default true\n              @public\n            */_defineProperty(this,\"shouldRender\",void 0);/**\n              If present, render into the given `Document` object instead of the\n              global `window.document` object.\n               In practice, this is only useful in non-browser environment or in\n              non-interactive mode, because Ember's `jQuery` dependency is\n              implicitly bound to the current document, causing event delegation\n              to not work properly when the app is rendered into a foreign\n              document object (such as an iframe's `contentDocument`).\n               In non-browser mode, this could be a \"`Document`-like\" object as\n              Ember only interact with a small subset of the DOM API in non-\n              interactive mode. While the exact requirements have not yet been\n              formalized, the `SimpleDOM` library's implementation is known to\n              work.\n               @property document\n              @type Document\n              @default the global `document` object\n              @public\n            */_defineProperty(this,\"document\",void 0);/**\n              If present, overrides the application's `rootElement` property on\n              the instance. This is useful for testing environment, where you\n              might want to append the root view to a fixture area.\n               In non-browser mode, because Ember does not have access to jQuery,\n              this options must be specified as a DOM `Element` object instead of\n              a selector string.\n               See the documentation on `Application`'s `rootElement` for\n              details.\n               @property rootElement\n              @type String|Element\n              @default null\n              @public\n            */_defineProperty(this,\"rootElement\",void 0);this.isInteractive=Boolean(hasDOM);// This default is overridable below\nthis._renderMode=options._renderMode;if(options.isBrowser!==undefined){this.isBrowser=Boolean(options.isBrowser);}else{this.isBrowser=Boolean(hasDOM);}if(!this.isBrowser){this.isInteractive=false;this.location='none';}if(options.shouldRender!==undefined){this.shouldRender=Boolean(options.shouldRender);}else{this.shouldRender=true;}if(!this.shouldRender){this.isInteractive=false;}if(options.document){this.document=options.document;}else{this.document=typeof document!=='undefined'?document:null;}if(options.rootElement){this.rootElement=options.rootElement;}// Set these options last to give the user a chance to override the\n// defaults from the \"combo\" options like `isBrowser` (although in\n// practice, the resulting combination is probably invalid)\nif(options.location!==undefined){this.location=options.location;}if(options.isInteractive!==undefined){this.isInteractive=Boolean(options.isInteractive);}}return _createClass(_BootOptions,[{key:\"toEnvironment\",value:function toEnvironment(){// Do we really want to assign all of this!?\nreturn _objectSpread(_objectSpread({},emberinternalsBrowserEnvironmentIndex),{},{// For compatibility with existing code\nhasDOM:this.isBrowser,isInteractive:this.isInteractive,_renderMode:this._renderMode,options:this});}}]);}();var emberApplicationInstance=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ApplicationInstance},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/application/namespace\n          *//**\n            A Namespace is an object usually used to contain other objects or methods\n            such as an application or framework. Create a namespace anytime you want\n            to define one of these new containers.\n\n            # Example Usage\n\n            ```javascript\n            MyFramework = Ember.Namespace.create({\n              VERSION: '1.0.0'\n            });\n            ```\n\n            @class Namespace\n            @extends EmberObject\n            @public\n          */var Namespace=/*#__PURE__*/function(_EmberObject7){function Namespace(){_classCallCheck(this,Namespace);return _callSuper(this,Namespace,arguments);}_inherits(Namespace,_EmberObject7);return _createClass(Namespace,[{key:\"init\",value:function init(properties){_superPropGet(Namespace,\"init\",this,3)([properties]);addNamespace(this);}},{key:\"toString\",value:function toString(){var existing_name=get$2(this,'name')||get$2(this,'modulePrefix');if(existing_name){!(typeof existing_name==='string')&&assert$1(\"name wasn't a string\",typeof existing_name==='string');return existing_name;}findNamespaces();var name=getName(this);if(name===undefined){name=guidFor(this);setName(this,name);}return name;}},{key:\"nameClasses\",value:function nameClasses(){processNamespace(this);}},{key:\"destroy\",value:function destroy(){removeNamespace(this);return _superPropGet(Namespace,\"destroy\",this,3)([]);}}]);}(EmberObject);// Declare on the prototype to have a single shared value.\n_defineProperty(Namespace,\"NAMESPACES\",NAMESPACES);_defineProperty(Namespace,\"NAMESPACES_BY_ID\",NAMESPACES_BY_ID);_defineProperty(Namespace,\"processAll\",processAllNamespaces);_defineProperty(Namespace,\"byName\",findNamespace);Namespace.prototype.isNamespace=true;var emberApplicationNamespace=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Namespace},Symbol.toStringTag,{value:'Module'});/**\n           * A topologically ordered map of key/value pairs with a simple API for adding constraints.\n           *\n           * Edges can forward reference keys that have not been added yet (the forward reference will\n           * map the key to undefined).\n           */var DAG=function(){function DAG(){this._vertices=new Vertices();}/**\n             * Adds a key/value pair with dependencies on other key/value pairs.\n             *\n             * @public\n             * @param key    The key of the vertex to be added.\n             * @param value  The value of that vertex.\n             * @param before A key or array of keys of the vertices that must\n             *               be visited before this vertex.\n             * @param after  An string or array of strings with the keys of the\n             *               vertices that must be after this vertex is visited.\n             */DAG.prototype.add=function(key,value,before,after){if(!key)throw new Error('argument `key` is required');var vertices=this._vertices;var v=vertices.add(key);v.val=value;if(before){if(typeof before===\"string\"){vertices.addEdge(v,vertices.add(before));}else{for(var i=0;i<before.length;i++){vertices.addEdge(v,vertices.add(before[i]));}}}if(after){if(typeof after===\"string\"){vertices.addEdge(vertices.add(after),v);}else{for(var i=0;i<after.length;i++){vertices.addEdge(vertices.add(after[i]),v);}}}};/**\n             * @deprecated please use add.\n             */DAG.prototype.addEdges=function(key,value,before,after){this.add(key,value,before,after);};/**\n             * Visits key/value pairs in topological order.\n             *\n             * @public\n             * @param callback The function to be invoked with each key/value.\n             */DAG.prototype.each=function(callback){this._vertices.walk(callback);};/**\n             * @deprecated please use each.\n             */DAG.prototype.topsort=function(callback){this.each(callback);};return DAG;}();/** @private */var Vertices=function(){function Vertices(){this.length=0;this.stack=new IntStack();this.path=new IntStack();this.result=new IntStack();}Vertices.prototype.add=function(key){if(!key)throw new Error(\"missing key\");var l=this.length|0;var vertex;for(var i=0;i<l;i++){vertex=this[i];if(vertex.key===key)return vertex;}this.length=l+1;return this[l]={idx:l,key:key,val:undefined,out:false,flag:false,length:0};};Vertices.prototype.addEdge=function(v,w){this.check(v,w.key);var l=w.length|0;for(var i=0;i<l;i++){if(w[i]===v.idx)return;}w.length=l+1;w[l]=v.idx;v.out=true;};Vertices.prototype.walk=function(cb){this.reset();for(var i=0;i<this.length;i++){var vertex=this[i];if(vertex.out)continue;this.visit(vertex,\"\");}this.each(this.result,cb);};Vertices.prototype.check=function(v,w){if(v.key===w){throw new Error(\"cycle detected: \"+w+\" <- \"+w);}// quick check\nif(v.length===0)return;// shallow check\nfor(var i=0;i<v.length;i++){var key=this[v[i]].key;if(key===w){throw new Error(\"cycle detected: \"+w+\" <- \"+v.key+\" <- \"+w);}}// deep check\nthis.reset();this.visit(v,w);if(this.path.length>0){var msg_1=\"cycle detected: \"+w;this.each(this.path,function(key){msg_1+=\" <- \"+key;});throw new Error(msg_1);}};Vertices.prototype.reset=function(){this.stack.length=0;this.path.length=0;this.result.length=0;for(var i=0,l=this.length;i<l;i++){this[i].flag=false;}};Vertices.prototype.visit=function(start,search){var _a=this,stack=_a.stack,path=_a.path,result=_a.result;stack.push(start.idx);while(stack.length){var index=stack.pop()|0;if(index>=0){// enter\nvar vertex=this[index];if(vertex.flag)continue;vertex.flag=true;path.push(index);if(search===vertex.key)break;// push exit\nstack.push(~index);this.pushIncoming(vertex);}else{// exit\npath.pop();result.push(~index);}}};Vertices.prototype.pushIncoming=function(incomming){var stack=this.stack;for(var i=incomming.length-1;i>=0;i--){var index=incomming[i];if(!this[index].flag){stack.push(index);}}};Vertices.prototype.each=function(indices,cb){for(var i=0,l=indices.length;i<l;i++){var vertex=this[indices[i]];cb(vertex.key,vertex.val);}};return Vertices;}();/** @private */var IntStack=function(){function IntStack(){this.length=0;}IntStack.prototype.push=function(n){this[this.length++]=n|0;};IntStack.prototype.pop=function(){return this[--this.length]|0;};return IntStack;}();var dagMap=/*#__PURE__*/Object.defineProperty({__proto__:null,default:DAG},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/debug/container-debug-adapter\n          *//**\n            The `ContainerDebugAdapter` helps the container and resolver interface\n            with tools that debug Ember such as the\n            [Ember Inspector](https://github.com/emberjs/ember-inspector)\n            for Chrome and Firefox.\n\n            This class can be extended by a custom resolver implementer\n            to override some of the methods with library-specific code.\n\n            The methods likely to be overridden are:\n\n            * `canCatalogEntriesByType`\n            * `catalogEntriesByType`\n\n            The adapter will need to be registered\n            in the application's container as `container-debug-adapter:main`.\n\n            Example:\n\n            ```javascript\n            Application.initializer({\n              name: \"containerDebugAdapter\",\n\n              initialize(application) {\n                application.register('container-debug-adapter:main', require('app/container-debug-adapter'));\n              }\n            });\n            ```\n\n            @class ContainerDebugAdapter\n            @extends EmberObject\n            @since 1.5.0\n            @public\n          */var ContainerDebugAdapter=/*#__PURE__*/function(_EmberObject8){function ContainerDebugAdapter(owner){var _this87;_classCallCheck(this,ContainerDebugAdapter);_this87=_callSuper(this,ContainerDebugAdapter,[owner]);/**\n              The resolver instance of the application\n              being debugged. This property will be injected\n              on creation.\n               @property resolver\n              @public\n            */_defineProperty(_this87,\"resolver\",void 0);_this87.resolver=getOwner$2(_this87).lookup('resolver-for-debugging:main');return _this87;}_inherits(ContainerDebugAdapter,_EmberObject8);return _createClass(ContainerDebugAdapter,[{key:\"canCatalogEntriesByType\",value:/**\n              Returns true if it is possible to catalog a list of available\n              classes in the resolver for a given type.\n               @method canCatalogEntriesByType\n              @param {String} type The type. e.g. \"model\", \"controller\", \"route\".\n              @return {boolean} whether a list is available for this type.\n              @public\n            */function canCatalogEntriesByType(type){if(type==='model'||type==='template'){return false;}return true;}/**\n              Returns the available classes a given type.\n               @method catalogEntriesByType\n              @param {String} type The type. e.g. \"model\", \"controller\", \"route\".\n              @return {Array} An array of strings.\n              @public\n            */},{key:\"catalogEntriesByType\",value:function catalogEntriesByType(type){var namespaces=Namespace.NAMESPACES;var types=[];var typeSuffixRegex=new RegExp(\"\".concat(classify(type),\"$\"));namespaces.forEach(function(namespace){for(var key in namespace){if(!Object.prototype.hasOwnProperty.call(namespace,key)){continue;}if(typeSuffixRegex.test(key)){var klass=namespace[key];if(typeOf(klass)==='class'){types.push(dasherize(key.replace(typeSuffixRegex,'')));}}}});return types;}}]);}(EmberObject);var emberDebugContainerDebugAdapter=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ContainerDebugAdapter},Symbol.toStringTag,{value:'Module'});function props(obj){var properties=[];for(var key in obj){properties.push(key);}return properties;}/**\n          @module @ember/engine\n          *//**\n            The `Engine` class contains core functionality for both applications and\n            engines.\n\n            Each engine manages a registry that's used for dependency injection and\n            exposed through `RegistryProxy`.\n\n            Engines also manage initializers and instance initializers.\n\n            Engines can spawn `EngineInstance` instances via `buildInstance()`.\n\n            @class Engine\n            @extends Ember.Namespace\n            @uses RegistryProxyMixin\n            @public\n          */// eslint-disable-next-line @typescript-eslint/no-empty-interface\nvar Engine=/*#__PURE__*/function(_Namespace$extend){function Engine(){var _this88;_classCallCheck(this,Engine);for(var _len97=arguments.length,args=new Array(_len97),_key89=0;_key89<_len97;_key89++){args[_key89]=arguments[_key89];}_this88=_callSuper(this,Engine,[].concat(args));/**\n              A private flag indicating whether an engine's initializers have run yet.\n               @private\n              @property _initializersRan\n            */_defineProperty(_this88,\"_initializersRan\",false);return _this88;}_inherits(Engine,_Namespace$extend);return _createClass(Engine,[{key:\"init\",value:/**\n              Set this to provide an alternate class to `DefaultResolver`\n               @property resolver\n              @public\n            */function init(properties){_superPropGet(Engine,\"init\",this,3)([properties]);this.buildRegistry();}},{key:\"ensureInitializers\",value:/**\n              Ensure that initializers are run once, and only once, per engine.\n               @private\n              @method ensureInitializers\n            */function ensureInitializers(){if(!this._initializersRan){this.runInitializers();this._initializersRan=true;}}/**\n              Create an EngineInstance for this engine.\n               @public\n              @method buildInstance\n              @return {EngineInstance} the engine instance\n            */},{key:\"buildInstance\",value:function buildInstance(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};this.ensureInitializers();return EngineInstance.create(_objectSpread(_objectSpread({},options),{},{base:this}));}/**\n              Build and configure the registry for the current engine.\n               @private\n              @method buildRegistry\n              @return {Ember.Registry} the configured registry\n            */},{key:\"buildRegistry\",value:function buildRegistry(){var registry=this.__registry__=this.constructor.buildRegistry(this);return registry;}/**\n              @private\n              @method initializer\n            */},{key:\"initializer\",value:function initializer(_initializer){this.constructor.initializer(_initializer);}/**\n              @private\n              @method instanceInitializer\n            */},{key:\"instanceInitializer\",value:function instanceInitializer(initializer){this.constructor.instanceInitializer(initializer);}/**\n              @private\n              @method runInitializers\n            */},{key:\"runInitializers\",value:function runInitializers(){var _this89=this;this._runInitializer('initializers',function(name,initializer){!initializer&&assert$1(\"No application initializer named '\".concat(name,\"'\"),initializer);initializer.initialize(_this89);});}/**\n              @private\n              @since 1.12.0\n              @method runInstanceInitializers\n            */},{key:\"runInstanceInitializers\",value:function runInstanceInitializers(instance){this._runInitializer('instanceInitializers',function(name,initializer){!initializer&&assert$1(\"No instance initializer named '\".concat(name,\"'\"),initializer);initializer.initialize(instance);});}},{key:\"_runInitializer\",value:function _runInitializer(bucketName,cb){var initializersByName=get$2(this.constructor,bucketName);var initializers=props(initializersByName);var graph=new DAG();var initializer;var _iterator78=_createForOfIteratorHelper(initializers),_step78;try{for(_iterator78.s();!(_step78=_iterator78.n()).done;){var _name35=_step78.value;initializer=initializersByName[_name35];!initializer&&assert$1(\"missing \".concat(bucketName,\": \").concat(_name35),initializer);graph.add(initializer.name,initializer,initializer.before,initializer.after);}}catch(err){_iterator78.e(err);}finally{_iterator78.f();}graph.topsort(cb);}}],[{key:\"buildRegistry\",value:/**\n              This creates a registry with the default Ember naming conventions.\n               It also configures the registry:\n               * registered views are created every time they are looked up (they are\n                not singletons)\n              * registered templates are not factories; the registered value is\n                returned directly.\n              * the router receives the application as its `namespace` property\n              * all controllers receive the router as their `target` and `controllers`\n                properties\n              * all controllers receive the application as their `namespace` property\n              * the application view receives the application controller as its\n                `controller` property\n              * the application view receives the application template as its\n                `defaultTemplate` property\n               @method buildRegistry\n              @static\n              @param {Application} namespace the application for which to\n                build the registry\n              @return {Ember.Registry} the built registry\n              @private\n            */function buildRegistry(namespace){var registry=new Registry({resolver:resolverFor(namespace)});registry.set=_set5;registry.register('application:main',namespace,{instantiate:false});commonSetupRegistry$1(registry);setupEngineRegistry(registry);return registry;}}]);}(Namespace.extend(RegistryProxyMixin));/**\n            This function defines the default lookup rules for container lookups:\n\n            * templates are looked up on `Ember.TEMPLATES`\n            * other names are looked up on the application after classifying the name.\n              For example, `controller:post` looks up `App.PostController` by default.\n            * if the default lookup fails, look for registered classes on the container\n\n            This allows the application to register default injections in the container\n            that could be overridden by the normal naming convention.\n\n            @private\n            @method resolverFor\n            @param {Ember.Enginer} namespace the namespace to look for classes\n            @return {*} the resolved value for a given lookup\n          */_defineProperty(Engine,\"initializers\",Object.create(null));_defineProperty(Engine,\"instanceInitializers\",Object.create(null));/**\n              The goal of initializers should be to register dependencies and injections.\n              This phase runs once. Because these initializers may load code, they are\n              allowed to defer application readiness and advance it. If you need to access\n              the container or store you should use an InstanceInitializer that will be run\n              after all initializers and therefore after all code is loaded and the app is\n              ready.\n               Initializer receives an object which has the following attributes:\n              `name`, `before`, `after`, `initialize`. The only required attribute is\n              `initialize`, all others are optional.\n               * `name` allows you to specify under which name the initializer is registered.\n              This must be a unique name, as trying to register two initializers with the\n              same name will result in an error.\n               ```app/initializer/named-initializer.js\n              import { debug } from '@ember/debug';\n               export function initialize() {\n                debug('Running namedInitializer!');\n              }\n               export default {\n                name: 'named-initializer',\n                initialize\n              };\n              ```\n               * `before` and `after` are used to ensure that this initializer is ran prior\n              or after the one identified by the value. This value can be a single string\n              or an array of strings, referencing the `name` of other initializers.\n               An example of ordering initializers, we create an initializer named `first`:\n               ```app/initializer/first.js\n              import { debug } from '@ember/debug';\n               export function initialize() {\n                debug('First initializer!');\n              }\n               export default {\n                name: 'first',\n                initialize\n              };\n              ```\n               ```bash\n              // DEBUG: First initializer!\n              ```\n               We add another initializer named `second`, specifying that it should run\n              after the initializer named `first`:\n               ```app/initializer/second.js\n              import { debug } from '@ember/debug';\n               export function initialize() {\n                debug('Second initializer!');\n              }\n               export default {\n                name: 'second',\n                after: 'first',\n                initialize\n              };\n              ```\n               ```\n              // DEBUG: First initializer!\n              // DEBUG: Second initializer!\n              ```\n               Afterwards we add a further initializer named `pre`, this time specifying\n              that it should run before the initializer named `first`:\n               ```app/initializer/pre.js\n              import { debug } from '@ember/debug';\n               export function initialize() {\n                debug('Pre initializer!');\n              }\n               export default {\n                name: 'pre',\n                before: 'first',\n                initialize\n              };\n              ```\n               ```bash\n              // DEBUG: Pre initializer!\n              // DEBUG: First initializer!\n              // DEBUG: Second initializer!\n              ```\n               Finally we add an initializer named `post`, specifying it should run after\n              both the `first` and the `second` initializers:\n               ```app/initializer/post.js\n              import { debug } from '@ember/debug';\n               export function initialize() {\n                debug('Post initializer!');\n              }\n               export default {\n                name: 'post',\n                after: ['first', 'second'],\n                initialize\n              };\n              ```\n               ```bash\n              // DEBUG: Pre initializer!\n              // DEBUG: First initializer!\n              // DEBUG: Second initializer!\n              // DEBUG: Post initializer!\n              ```\n               * `initialize` is a callback function that receives one argument,\n                `application`, on which you can operate.\n               Example of using `application` to register an adapter:\n               ```app/initializer/api-adapter.js\n              import ApiAdapter from '../utils/api-adapter';\n               export function initialize(application) {\n                application.register('api-adapter:main', ApiAdapter);\n              }\n               export default {\n                name: 'post',\n                after: ['first', 'second'],\n                initialize\n              };\n              ```\n               @method initializer\n              @param initializer {Object}\n              @public\n            */_defineProperty(Engine,\"initializer\",buildInitializerMethod('initializers','initializer'));/**\n              Instance initializers run after all initializers have run. Because\n              instance initializers run after the app is fully set up. We have access\n              to the store, container, and other items. However, these initializers run\n              after code has loaded and are not allowed to defer readiness.\n               Instance initializer receives an object which has the following attributes:\n              `name`, `before`, `after`, `initialize`. The only required attribute is\n              `initialize`, all others are optional.\n               * `name` allows you to specify under which name the instanceInitializer is\n              registered. This must be a unique name, as trying to register two\n              instanceInitializer with the same name will result in an error.\n               ```app/initializer/named-instance-initializer.js\n              import { debug } from '@ember/debug';\n               export function initialize() {\n                debug('Running named-instance-initializer!');\n              }\n               export default {\n                name: 'named-instance-initializer',\n                initialize\n              };\n              ```\n               * `before` and `after` are used to ensure that this initializer is ran prior\n              or after the one identified by the value. This value can be a single string\n              or an array of strings, referencing the `name` of other initializers.\n               * See Application.initializer for discussion on the usage of before\n              and after.\n               Example instanceInitializer to preload data into the store.\n               ```app/initializer/preload-data.js\n               export function initialize(application) {\n                  var userConfig, userConfigEncoded, store;\n                  // We have a HTML escaped JSON representation of the user's basic\n                  // configuration generated server side and stored in the DOM of the main\n                  // index.html file. This allows the app to have access to a set of data\n                  // without making any additional remote calls. Good for basic data that is\n                  // needed for immediate rendering of the page. Keep in mind, this data,\n                  // like all local models and data can be manipulated by the user, so it\n                  // should not be relied upon for security or authorization.\n                   // Grab the encoded data from the meta tag\n                  userConfigEncoded = document.querySelector('head meta[name=app-user-config]').attr('content');\n                   // Unescape the text, then parse the resulting JSON into a real object\n                  userConfig = JSON.parse(unescape(userConfigEncoded));\n                   // Lookup the store\n                  store = application.lookup('service:store');\n                   // Push the encoded JSON into the store\n                  store.pushPayload(userConfig);\n              }\n               export default {\n                name: 'named-instance-initializer',\n                initialize\n              };\n              ```\n               @method instanceInitializer\n              @param instanceInitializer\n              @public\n            */_defineProperty(Engine,\"instanceInitializer\",buildInitializerMethod('instanceInitializers','instance initializer'));function resolverFor(namespace){var ResolverClass=namespace.Resolver;var props={namespace:namespace};return ResolverClass.create(props);}/** @internal */function buildInitializerMethod(bucketName,humanName){return function(initializer){// If this is the first initializer being added to a subclass, we are going to reopen the class\n// to make sure we have a new `initializers` object, which extends from the parent class' using\n// prototypal inheritance. Without this, attempting to add initializers to the subclass would\n// pollute the parent class as well as other subclasses.\n// SAFETY: The superclass may be an Engine, we don't call unless we confirmed it was ok.\nvar superclass=this.superclass;if(superclass[bucketName]!==undefined&&superclass[bucketName]===this[bucketName]){var attrs=_defineProperty({},bucketName,Object.create(this[bucketName]));this.reopenClass(attrs);}!!this[bucketName][initializer.name]&&assert$1(\"The \".concat(humanName,\" '\").concat(initializer.name,\"' has already been registered\"),!this[bucketName][initializer.name]);!canInvoke(initializer,'initialize')&&assert$1(\"An \".concat(humanName,\" cannot be registered without an initialize function\"),canInvoke(initializer,'initialize'));!(initializer.name!==undefined)&&assert$1(\"An \".concat(humanName,\" cannot be registered without a name property\"),initializer.name!==undefined);var initializers=this[bucketName];initializers[initializer.name]=initializer;};}function commonSetupRegistry$1(registry){registry.optionsForType('component',{singleton:false});registry.optionsForType('view',{singleton:false});registry.register('controller:basic',Controller,{instantiate:false});// Register the routing service...\nregistry.register('service:-routing',RoutingService);// DEBUGGING\nregistry.register('resolver-for-debugging:main',registry.resolver,{instantiate:false});registry.register('container-debug-adapter:main',ContainerDebugAdapter);registry.register('component-lookup:main',ComponentLookup);}var emberEngineIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,buildInitializerMethod:buildInitializerMethod,default:Engine,getEngineParent:getEngineParent,setEngineParent:setEngineParent},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/application\n          *//**\n           * @deprecated Use `import { getOwner } from '@ember/owner';` instead.\n           */var getOwner=getOwner$1;/**\n           * @deprecated Use `import { setOwner } from '@ember/owner';` instead.\n           */var setOwner=setOwner$1;/**\n            An instance of `Application` is the starting point for every Ember\n            application. It instantiates, initializes and coordinates the\n            objects that make up your app.\n\n            Each Ember app has one and only one `Application` object. Although\n            Ember CLI creates this object implicitly, the `Application` class\n            is defined in the `app/app.js`. You can define a `ready` method on the\n            `Application` class, which will be run by Ember when the application is\n            initialized.\n\n            ```app/app.js\n            export default class App extends Application {\n              ready() {\n                // your code here\n              }\n            }\n            ```\n\n            Because `Application` ultimately inherits from `Ember.Namespace`, any classes\n            you create will have useful string representations when calling `toString()`.\n            See the `Ember.Namespace` documentation for more information.\n\n            While you can think of your `Application` as a container that holds the\n            other classes in your application, there are several other responsibilities\n            going on under-the-hood that you may want to understand. It is also important\n            to understand that an `Application` is different from an `ApplicationInstance`.\n            Refer to the Guides to understand the difference between these.\n\n            ### Event Delegation\n\n            Ember uses a technique called _event delegation_. This allows the framework\n            to set up a global, shared event listener instead of requiring each view to\n            do it manually. For example, instead of each view registering its own\n            `mousedown` listener on its associated element, Ember sets up a `mousedown`\n            listener on the `body`.\n\n            If a `mousedown` event occurs, Ember will look at the target of the event and\n            start walking up the DOM node tree, finding corresponding views and invoking\n            their `mouseDown` method as it goes.\n\n            `Application` has a number of default events that it listens for, as\n            well as a mapping from lowercase events to camel-cased view method names. For\n            example, the `keypress` event causes the `keyPress` method on the view to be\n            called, the `dblclick` event causes `doubleClick` to be called, and so on.\n\n            If there is a bubbling browser event that Ember does not listen for by\n            default, you can specify custom events and their corresponding view method\n            names by setting the application's `customEvents` property:\n\n            ```app/app.js\n            import Application from '@ember/application';\n\n            export default class App extends Application {\n              customEvents = {\n                // add support for the paste event\n                paste: 'paste'\n              }\n            }\n            ```\n\n            To prevent Ember from setting up a listener for a default event,\n            specify the event name with a `null` value in the `customEvents`\n            property:\n\n            ```app/app.js\n            import Application from '@ember/application';\n\n            export default class App extends Application {\n              customEvents = {\n                // prevent listeners for mouseenter/mouseleave events\n                mouseenter: null,\n                mouseleave: null\n              }\n            }\n            ```\n\n            By default, the application sets up these event listeners on the document\n            body. However, in cases where you are embedding an Ember application inside\n            an existing page, you may want it to set up the listeners on an element\n            inside the body.\n\n            For example, if only events inside a DOM element with the ID of `ember-app`\n            should be delegated, set your application's `rootElement` property:\n\n            ```app/app.js\n            import Application from '@ember/application';\n\n            export default class App extends Application {\n              rootElement = '#ember-app'\n            }\n            ```\n\n            The `rootElement` can be either a DOM element or a CSS selector\n            string. Note that *views appended to the DOM outside the root element will\n            not receive events.* If you specify a custom root element, make sure you only\n            append views inside it!\n\n            To learn more about the events Ember components use, see\n\n            [components/handling-events](https://guides.emberjs.com/release/components/handling-events/#toc_event-names).\n\n            ### Initializers\n\n            To add behavior to the Application's boot process, you can define initializers in\n            the `app/initializers` directory, or with `ember generate initializer` using Ember CLI.\n            These files should export a named `initialize` function which will receive the created `application`\n            object as its first argument.\n\n            ```javascript\n            export function initialize(application) {\n              // application.inject('route', 'foo', 'service:foo');\n            }\n            ```\n\n            Application initializers can be used for a variety of reasons including:\n\n            - setting up external libraries\n            - injecting dependencies\n            - setting up event listeners in embedded apps\n            - deferring the boot process using the `deferReadiness` and `advanceReadiness` APIs.\n\n            ### Routing\n\n            In addition to creating your application's router, `Application` is\n            also responsible for telling the router when to start routing. Transitions\n            between routes can be logged with the `LOG_TRANSITIONS` flag, and more\n            detailed intra-transition logging can be logged with\n            the `LOG_TRANSITIONS_INTERNAL` flag:\n\n            ```javascript\n            import Application from '@ember/application';\n\n            let App = Application.create({\n              LOG_TRANSITIONS: true, // basic logging of successful transitions\n              LOG_TRANSITIONS_INTERNAL: true // detailed logging of all routing steps\n            });\n            ```\n\n            By default, the router will begin trying to translate the current URL into\n            application state once the browser emits the `DOMContentReady` event. If you\n            need to defer routing, you can call the application's `deferReadiness()`\n            method. Once routing can begin, call the `advanceReadiness()` method.\n\n            If there is any setup required before routing begins, you can implement a\n            `ready()` method on your app that will be invoked immediately before routing\n            begins.\n\n            @class Application\n            @extends Engine\n            @public\n          */var Application=/*#__PURE__*/function(_Engine2){function Application(){var _this90;_classCallCheck(this,Application);for(var _len98=arguments.length,args=new Array(_len98),_key90=0;_key90<_len98;_key90++){args[_key90]=arguments[_key90];}_this90=_callSuper(this,Application,[].concat(args));_defineProperty(_this90,\"Router\",void 0);_defineProperty(_this90,\"__deprecatedInstance__\",void 0);_defineProperty(_this90,\"__container__\",void 0);_defineProperty(_this90,\"_bootPromise\",null);_defineProperty(_this90,\"_bootResolver\",null);return _this90;}_inherits(Application,_Engine2);return _createClass(Application,[{key:\"init\",value:/**\n              The root DOM element of the Application. This can be specified as an\n              element or a [selector string](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors#reference_table_of_selectors).\n               This is the element that will be passed to the Application's,\n              `eventDispatcher`, which sets up the listeners for event delegation. Every\n              view in your application should be a child of the element you specify here.\n               @property rootElement\n              @type DOMElement\n              @default 'body'\n              @public\n            *//**\n               @property _document\n              @type Document | null\n              @default 'window.document'\n              @private\n            *//**\n              The `Ember.EventDispatcher` responsible for delegating events to this\n              application's views.\n               The event dispatcher is created by the application at initialization time\n              and sets up event listeners on the DOM element described by the\n              application's `rootElement` property.\n               See the documentation for `Ember.EventDispatcher` for more information.\n               @property eventDispatcher\n              @type Ember.EventDispatcher\n              @default null\n              @public\n            *//**\n              The DOM events for which the event dispatcher should listen.\n               By default, the application's `Ember.EventDispatcher` listens\n              for a set of standard DOM events, such as `mousedown` and\n              `keyup`, and delegates them to your application's `Ember.View`\n              instances.\n               If you would like additional bubbling events to be delegated to your\n              views, set your `Application`'s `customEvents` property\n              to a hash containing the DOM event name as the key and the\n              corresponding view method name as the value. Setting an event to\n              a value of `null` will prevent a default event listener from being\n              added for that event.\n               To add new events to be listened to:\n               ```app/app.js\n              import Application from '@ember/application';\n               let App = Application.extend({\n                customEvents: {\n                  // add support for the paste event\n                  paste: 'paste'\n                }\n              });\n              ```\n               To prevent default events from being listened to:\n               ```app/app.js\n              import Application from '@ember/application';\n               let App = Application.extend({\n                customEvents: {\n                  // remove support for mouseenter / mouseleave events\n                  mouseenter: null,\n                  mouseleave: null\n                }\n              });\n              ```\n              @property customEvents\n              @type Object\n              @default null\n              @public\n            *//**\n              Whether the application should automatically start routing and render\n              templates to the `rootElement` on DOM ready. While default by true,\n              other environments such as FastBoot or a testing harness can set this\n              property to `false` and control the precise timing and behavior of the boot\n              process.\n               @property autoboot\n              @type Boolean\n              @default true\n              @private\n            *//**\n              Whether the application should be configured for the legacy \"globals mode\".\n              Under this mode, the Application object serves as a global namespace for all\n              classes.\n               ```javascript\n              import Application from '@ember/application';\n              import Component from '@ember/component';\n               let App = Application.create({\n                ...\n              });\n               App.Router.reopen({\n                location: 'none'\n              });\n               App.Router.map({\n                ...\n              });\n               App.MyComponent = Component.extend({\n                ...\n              });\n              ```\n               This flag also exposes other internal APIs that assumes the existence of\n              a special \"default instance\", like `App.__container__.lookup(...)`.\n               This option is currently not configurable, its value is derived from\n              the `autoboot` flag – disabling `autoboot` also implies opting-out of\n              globals mode support, although they are ultimately orthogonal concerns.\n               Some of the global modes features are already deprecated in 1.x. The\n              existence of this flag is to untangle the globals mode code paths from\n              the autoboot code paths, so that these legacy features can be reviewed\n              for deprecation/removal separately.\n               Forcing the (autoboot=true, _globalsMode=false) here and running the tests\n              would reveal all the places where we are still relying on these legacy\n              behavior internally (mostly just tests).\n               @property _globalsMode\n              @type Boolean\n              @default true\n              @private\n            *//**\n              An array of application instances created by `buildInstance()`. Used\n              internally to ensure that all instances get destroyed.\n               @property _applicationInstances\n              @type Array\n              @private\n            */function init(properties){var _this$rootElement,_this$_document,_this$eventDispatcher,_this$customEvents,_this$autoboot,_this$_document2,_this$_globalsMode;_superPropGet(Application,\"init\",this,3)([properties]);(_this$rootElement=this.rootElement)!==null&&_this$rootElement!==void 0?_this$rootElement:this.rootElement='body';(_this$_document=this._document)!==null&&_this$_document!==void 0?_this$_document:this._document=null;(_this$eventDispatcher=this.eventDispatcher)!==null&&_this$eventDispatcher!==void 0?_this$eventDispatcher:this.eventDispatcher=null;(_this$customEvents=this.customEvents)!==null&&_this$customEvents!==void 0?_this$customEvents:this.customEvents=null;(_this$autoboot=this.autoboot)!==null&&_this$autoboot!==void 0?_this$autoboot:this.autoboot=true;(_this$_document2=this._document)!==null&&_this$_document2!==void 0?_this$_document2:this._document=hasDOM?window.document:null;(_this$_globalsMode=this._globalsMode)!==null&&_this$_globalsMode!==void 0?_this$_globalsMode:this._globalsMode=true;{if(ENV.LOG_VERSION){var _LIBRARIES$logVersion;// we only need to see this once per Application#init\nENV.LOG_VERSION=false;(_LIBRARIES$logVersion=LIBRARIES.logVersions)===null||_LIBRARIES$logVersion===void 0||_LIBRARIES$logVersion.call(LIBRARIES);}}// Start off the number of deferrals at 1. This will be decremented by\n// the Application's own `boot` method.\nthis._readinessDeferrals=1;this._booted=false;this._applicationInstances=new Set();this.autoboot=this._globalsMode=Boolean(this.autoboot);if(this._globalsMode){this._prepareForGlobalsMode();}if(this.autoboot){this.waitForDOMReady();}}/**\n              Create an ApplicationInstance for this application.\n               @public\n              @method buildInstance\n              @return {ApplicationInstance} the application instance\n            */},{key:\"buildInstance\",value:function buildInstance(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};!!this.isDestroyed&&assert$1('You cannot build new instances of this application since it has already been destroyed',!this.isDestroyed);!!this.isDestroying&&assert$1('You cannot build new instances of this application since it is being destroyed',!this.isDestroying);return ApplicationInstance.create(_objectSpread(_objectSpread({},options),{},{base:this,application:this}));}/**\n              Start tracking an ApplicationInstance for this application.\n              Used when the ApplicationInstance is created.\n               @private\n              @method _watchInstance\n            */},{key:\"_watchInstance\",value:function _watchInstance(instance){this._applicationInstances.add(instance);}/**\n              Stop tracking an ApplicationInstance for this application.\n              Used when the ApplicationInstance is about to be destroyed.\n               @private\n              @method _unwatchInstance\n            */},{key:\"_unwatchInstance\",value:function _unwatchInstance(instance){return this._applicationInstances.delete(instance);}},{key:\"_prepareForGlobalsMode\",value:/**\n              Enable the legacy globals mode by allowing this application to act\n              as a global namespace. See the docs on the `_globalsMode` property\n              for details.\n               Most of these features are already deprecated in 1.x, so we can\n              stop using them internally and try to remove them.\n               @private\n              @method _prepareForGlobalsMode\n            */function _prepareForGlobalsMode(){// Create subclass of Router for this Application instance.\n// This is to ensure that someone reopening `App.Router` does not\n// tamper with the default `Router`.\nthis.Router=(this.Router||EmberRouter).extend();this._buildDeprecatedInstance();}},{key:\"_buildDeprecatedInstance\",value:/*\n              Build the deprecated instance for legacy globals mode support.\n              Called when creating and resetting the application.\n               This is orthogonal to autoboot: the deprecated instance needs to\n              be created at Application construction (not boot) time to expose\n              App.__container__. If autoboot sees that this instance exists,\n              it will continue booting it to avoid doing unncessary work (as\n              opposed to building a new instance at boot time), but they are\n              otherwise unrelated.\n               @private\n              @method _buildDeprecatedInstance\n            */function _buildDeprecatedInstance(){// Build a default instance\nvar instance=this.buildInstance();// Legacy support for App.__container__ and other global methods\n// on App that rely on a single, default instance.\nthis.__deprecatedInstance__=instance;this.__container__=instance.__container__;}/**\n              Automatically kick-off the boot process for the application once the\n              DOM has become ready.\n               The initialization itself is scheduled on the actions queue which\n              ensures that code-loading finishes before booting.\n               If you are asynchronously loading code, you should call `deferReadiness()`\n              to defer booting, and then call `advanceReadiness()` once all of your code\n              has finished loading.\n               @private\n              @method waitForDOMReady\n            */},{key:\"waitForDOMReady\",value:function waitForDOMReady(){var _this91=this;var document=this._document;// SAFETY: Casting as Document should be safe since we're just reading a property.\n// If it's not actually a Document then it will evaluate false which is fine for our\n// purposes.\nif(document===null||document.readyState!=='loading'){schedule('actions',this,this.domReady);}else{// Ideally we'd just check `document instanceof Document` but currently some tests pass a fake document.\n!function(d){return typeof d.removeEventListener==='function';}(document)&&assert$1('[BUG] Called waitForDOMReady with an invalid document',function(d){return typeof d.removeEventListener==='function';}(document));var _callback8=function _callback7(){document.removeEventListener('DOMContentLoaded',_callback8);run$1(_this91,_this91.domReady);};document.addEventListener('DOMContentLoaded',_callback8);}}/**\n              This is the autoboot flow:\n               1. Boot the app by calling `this.boot()`\n              2. Create an instance (or use the `__deprecatedInstance__` in globals mode)\n              3. Boot the instance by calling `instance.boot()`\n              4. Invoke the `App.ready()` callback\n              5. Kick-off routing on the instance\n               Ideally, this is all we would need to do:\n               ```javascript\n              _autoBoot() {\n                this.boot().then(() => {\n                  let instance = (this._globalsMode) ? this.__deprecatedInstance__ : this.buildInstance();\n                  return instance.boot();\n                }).then((instance) => {\n                  App.ready();\n                  instance.startRouting();\n                });\n              }\n              ```\n               Unfortunately, we cannot actually write this because we need to participate\n              in the \"synchronous\" boot process. While the code above would work fine on\n              the initial boot (i.e. DOM ready), when `App.reset()` is called, we need to\n              boot a new instance synchronously (see the documentation on `_bootSync()`\n              for details).\n               Because of this restriction, the actual logic of this method is located\n              inside `didBecomeReady()`.\n               @private\n              @method domReady\n            */},{key:\"domReady\",value:function domReady(){if(this.isDestroying||this.isDestroyed){return;}this._bootSync();// Continues to `didBecomeReady`\n}/**\n              Use this to defer readiness until some condition is true.\n               Example:\n               ```javascript\n              import Application from '@ember/application';\n               let App = Application.create();\n               App.deferReadiness();\n               fetch('/auth-token')\n              .then(response => response.json())\n              .then(data => {\n                App.token = data.token;\n                App.advanceReadiness();\n              });\n              ```\n               This allows you to perform asynchronous setup logic and defer\n              booting your application until the setup has finished.\n               However, if the setup requires a loading UI, it might be better\n              to use the router for this purpose.\n               @method deferReadiness\n              @public\n            */},{key:\"deferReadiness\",value:function deferReadiness(){!(this instanceof Application)&&assert$1('You must call deferReadiness on an instance of Application',this instanceof Application);!!this.isDestroyed&&assert$1('You cannot defer readiness since application has already destroyed',!this.isDestroyed);!!this.isDestroying&&assert$1('You cannot defer readiness since the application is being destroyed',!this.isDestroying);!(this._readinessDeferrals>0)&&assert$1('You cannot defer readiness since the `ready()` hook has already been called',this._readinessDeferrals>0);this._readinessDeferrals++;}/**\n              Call `advanceReadiness` after any asynchronous setup logic has completed.\n              Each call to `deferReadiness` must be matched by a call to `advanceReadiness`\n              or the application will never become ready and routing will not begin.\n               @method advanceReadiness\n              @see {Application#deferReadiness}\n              @public\n            */},{key:\"advanceReadiness\",value:function advanceReadiness(){!(this instanceof Application)&&assert$1('You must call advanceReadiness on an instance of Application',this instanceof Application);!!this.isDestroyed&&assert$1('You cannot advance readiness since application has already destroyed',!this.isDestroyed);!!this.isDestroying&&assert$1('You cannot advance readiness since the application is being destroyed',!this.isDestroying);!(this._readinessDeferrals>0)&&assert$1('You cannot advance readiness since the `ready()` hook has already been called',this._readinessDeferrals>0);this._readinessDeferrals--;if(this._readinessDeferrals===0){once(this,this.didBecomeReady);}}},{key:\"boot\",value:/**\n              Initialize the application and return a promise that resolves with the `Application`\n              object when the boot process is complete.\n               Run any application initializers and run the application load hook. These hooks may\n              choose to defer readiness. For example, an authentication hook might want to defer\n              readiness until the auth token has been retrieved.\n               By default, this method is called automatically on \"DOM ready\"; however, if autoboot\n              is disabled, this is automatically called when the first application instance is\n              created via `visit`.\n               @public\n              @method boot\n              @return {Promise<Application,Error>}\n            */function boot(){!!this.isDestroyed&&assert$1('You cannot boot this application since it has already been destroyed',!this.isDestroyed);!!this.isDestroying&&assert$1('You cannot boot this application since it is being destroyed',!this.isDestroying);if(this._bootPromise){return this._bootPromise;}try{this._bootSync();}catch(_){// Ignore the error: in the asynchronous boot path, the error is already reflected\n// in the promise rejection\n}!this._bootPromise&&assert$1('has boot promise',this._bootPromise);return this._bootPromise;}},{key:\"_bootSync\",value:/**\n              Unfortunately, a lot of existing code assumes the booting process is\n              \"synchronous\". Specifically, a lot of tests assumes the last call to\n              `app.advanceReadiness()` or `app.reset()` will result in the app being\n              fully-booted when the current runloop completes.\n               We would like new code (like the `visit` API) to stop making this assumption,\n              so we created the asynchronous version above that returns a promise. But until\n              we have migrated all the code, we would have to expose this method for use\n              *internally* in places where we need to boot an app \"synchronously\".\n               @private\n            */function _bootSync(){if(this._booted||this.isDestroying||this.isDestroyed){return;}// Even though this returns synchronously, we still need to make sure the\n// boot promise exists for book-keeping purposes: if anything went wrong in\n// the boot process, we need to store the error as a rejection on the boot\n// promise so that a future caller of `boot()` can tell what failed.\nvar defer=this._bootResolver=rsvp.defer();this._bootPromise=defer.promise;try{this.runInitializers();runLoadHooks('application',this);this.advanceReadiness();// Continues to `didBecomeReady`\n}catch(error){// For the asynchronous boot path\ndefer.reject(error);// For the synchronous boot path\nthrow error;}}/**\n              Reset the application. This is typically used only in tests. It cleans up\n              the application in the following order:\n               1. Deactivate existing routes\n              2. Destroy all objects in the container\n              3. Create a new application container\n              4. Re-route to the existing url\n               Typical Example:\n               ```javascript\n              import Application from '@ember/application';\n              let App;\n               run(function() {\n                App = Application.create();\n              });\n               module('acceptance test', {\n                setup: function() {\n                  App.reset();\n                }\n              });\n               test('first test', function() {\n                // App is freshly reset\n              });\n               test('second test', function() {\n                // App is again freshly reset\n              });\n              ```\n               Advanced Example:\n               Occasionally you may want to prevent the app from initializing during\n              setup. This could enable extra configuration, or enable asserting prior\n              to the app becoming ready.\n               ```javascript\n              import Application from '@ember/application';\n              let App;\n               run(function() {\n                App = Application.create();\n              });\n               module('acceptance test', {\n                setup: function() {\n                  run(function() {\n                    App.reset();\n                    App.deferReadiness();\n                  });\n                }\n              });\n               test('first test', function() {\n                ok(true, 'something before app is initialized');\n                 run(function() {\n                  App.advanceReadiness();\n                });\n                 ok(true, 'something after app is initialized');\n              });\n              ```\n               @method reset\n              @public\n            */},{key:\"reset\",value:function reset(){!!this.isDestroyed&&assert$1('You cannot reset this application since it has already been destroyed',!this.isDestroyed);!!this.isDestroying&&assert$1('You cannot reset this application since it is being destroyed',!this.isDestroying);!(this._globalsMode&&this.autoboot)&&assert$1(\"Calling reset() on instances of `Application` is not\\n            supported when globals mode is disabled; call `visit()` to\\n            create new `ApplicationInstance`s and dispose them\\n            via their `destroy()` method instead.\",this._globalsMode&&this.autoboot);var instance=this.__deprecatedInstance__;this._readinessDeferrals=1;this._bootPromise=null;this._bootResolver=null;this._booted=false;function handleReset(){!instance&&assert$1('expected instance',instance);run$1(instance,'destroy');this._buildDeprecatedInstance();schedule('actions',this,'_bootSync');}join(this,handleReset);}/**\n              @private\n              @method didBecomeReady\n            */},{key:\"didBecomeReady\",value:function didBecomeReady(){if(this.isDestroying||this.isDestroyed){return;}!this._bootResolver&&assert$1('expected _bootResolver',this._bootResolver);try{// TODO: Is this still needed for _globalsMode = false?\n// See documentation on `_autoboot()` for details\nif(this.autoboot){var instance;if(this._globalsMode){// If we already have the __deprecatedInstance__ lying around, boot it to\n// avoid unnecessary work\ninstance=this.__deprecatedInstance__;true&&!instance&&assert$1('expected instance',instance);}else{// Otherwise, build an instance and boot it. This is currently unreachable,\n// because we forced _globalsMode to === autoboot; but having this branch\n// allows us to locally toggle that flag for weeding out legacy globals mode\n// dependencies independently\ninstance=this.buildInstance();}instance._bootSync();// TODO: App.ready() is not called when autoboot is disabled, is this correct?\nthis.ready();instance.startRouting();}// For the asynchronous boot path\nthis._bootResolver.resolve(this);// For the synchronous boot path\nthis._booted=true;}catch(error){// For the asynchronous boot path\nthis._bootResolver.reject(error);// For the synchronous boot path\nthrow error;}}/**\n              Called when the Application has become ready, immediately before routing\n              begins. The call will be delayed until the DOM has become ready.\n               @event ready\n              @public\n            */},{key:\"ready\",value:function ready(){return this;}// This method must be moved to the application instance object\n},{key:\"willDestroy\",value:function willDestroy(){_superPropGet(Application,\"willDestroy\",this,3)([]);if(_loaded['application']===this){_loaded['application']=undefined;}if(this._applicationInstances.size){this._applicationInstances.forEach(function(i){return i.destroy();});this._applicationInstances.clear();}}/**\n              Boot a new instance of `ApplicationInstance` for the current\n              application and navigate it to the given `url`. Returns a `Promise` that\n              resolves with the instance when the initial routing and rendering is\n              complete, or rejects with any error that occurred during the boot process.\n               When `autoboot` is disabled, calling `visit` would first cause the\n              application to boot, which runs the application initializers.\n               This method also takes a hash of boot-time configuration options for\n              customizing the instance's behavior. See the documentation on\n              `ApplicationInstance.BootOptions` for details.\n               `ApplicationInstance.BootOptions` is an interface class that exists\n              purely to document the available options; you do not need to construct it\n              manually. Simply pass a regular JavaScript object containing of the\n              desired options:\n               ```javascript\n              MyApp.visit(\"/\", { location: \"none\", rootElement: \"#container\" });\n              ```\n               ### Supported Scenarios\n               While the `BootOptions` class exposes a large number of knobs, not all\n              combinations of them are valid; certain incompatible combinations might\n              result in unexpected behavior.\n               For example, booting the instance in the full browser environment\n              while specifying a foreign `document` object (e.g. `{ isBrowser: true,\n              document: iframe.contentDocument }`) does not work correctly today,\n              largely due to Ember's jQuery dependency.\n               Currently, there are three officially supported scenarios/configurations.\n              Usages outside of these scenarios are not guaranteed to work, but please\n              feel free to file bug reports documenting your experience and any issues\n              you encountered to help expand support.\n               #### Browser Applications (Manual Boot)\n               The setup is largely similar to how Ember works out-of-the-box. Normally,\n              Ember will boot a default instance for your Application on \"DOM ready\".\n              However, you can customize this behavior by disabling `autoboot`.\n               For example, this allows you to render a miniture demo of your application\n              into a specific area on your marketing website:\n               ```javascript\n              import MyApp from 'my-app';\n               $(function() {\n                let App = MyApp.create({ autoboot: false });\n                 let options = {\n                  // Override the router's location adapter to prevent it from updating\n                  // the URL in the address bar\n                  location: 'none',\n                   // Override the default `rootElement` on the app to render into a\n                  // specific `div` on the page\n                  rootElement: '#demo'\n                };\n                 // Start the app at the special demo URL\n                App.visit('/demo', options);\n              });\n              ```\n               Or perhaps you might want to boot two instances of your app on the same\n              page for a split-screen multiplayer experience:\n               ```javascript\n              import MyApp from 'my-app';\n               $(function() {\n                let App = MyApp.create({ autoboot: false });\n                 let sessionId = MyApp.generateSessionID();\n                 let player1 = App.visit(`/matches/join?name=Player+1&session=${sessionId}`, { rootElement: '#left', location: 'none' });\n                let player2 = App.visit(`/matches/join?name=Player+2&session=${sessionId}`, { rootElement: '#right', location: 'none' });\n                 Promise.all([player1, player2]).then(() => {\n                  // Both apps have completed the initial render\n                  $('#loading').fadeOut();\n                });\n              });\n              ```\n               Do note that each app instance maintains their own registry/container, so\n              they will run in complete isolation by default.\n               #### Server-Side Rendering (also known as FastBoot)\n               This setup allows you to run your Ember app in a server environment using\n              Node.js and render its content into static HTML for SEO purposes.\n               ```javascript\n              const HTMLSerializer = new SimpleDOM.HTMLSerializer(SimpleDOM.voidMap);\n               function renderURL(url) {\n                let dom = new SimpleDOM.Document();\n                let rootElement = dom.body;\n                let options = { isBrowser: false, document: dom, rootElement: rootElement };\n                 return MyApp.visit(options).then(instance => {\n                  try {\n                    return HTMLSerializer.serialize(rootElement.firstChild);\n                  } finally {\n                    instance.destroy();\n                  }\n                });\n              }\n              ```\n               In this scenario, because Ember does not have access to a global `document`\n              object in the Node.js environment, you must provide one explicitly. In practice,\n              in the non-browser environment, the stand-in `document` object only needs to\n              implement a limited subset of the full DOM API. The `SimpleDOM` library is known\n              to work.\n               Since there is no DOM access in the non-browser environment, you must also\n              specify a DOM `Element` object in the same `document` for the `rootElement` option\n              (as opposed to a selector string like `\"body\"`).\n               See the documentation on the `isBrowser`, `document` and `rootElement` properties\n              on `ApplicationInstance.BootOptions` for details.\n               #### Server-Side Resource Discovery\n               This setup allows you to run the routing layer of your Ember app in a server\n              environment using Node.js and completely disable rendering. This allows you\n              to simulate and discover the resources (i.e. AJAX requests) needed to fulfill\n              a given request and eagerly \"push\" these resources to the client.\n               ```app/initializers/network-service.js\n              import BrowserNetworkService from 'app/services/network/browser';\n              import NodeNetworkService from 'app/services/network/node';\n               // Inject a (hypothetical) service for abstracting all AJAX calls and use\n              // the appropriate implementation on the client/server. This also allows the\n              // server to log all the AJAX calls made during a particular request and use\n              // that for resource-discovery purpose.\n               export function initialize(application) {\n                if (window) { // browser\n                  application.register('service:network', BrowserNetworkService);\n                } else { // node\n                  application.register('service:network', NodeNetworkService);\n                }\n              };\n               export default {\n                name: 'network-service',\n                initialize: initialize\n              };\n              ```\n               ```app/routes/post.js\n              import Route from '@ember/routing/route';\n              import { service } from '@ember/service';\n               // An example of how the (hypothetical) service is used in routes.\n               export default class IndexRoute extends Route {\n                @service network;\n                 model(params) {\n                  return this.network.fetch(`/api/posts/${params.post_id}.json`);\n                }\n                 afterModel(post) {\n                  if (post.isExternalContent) {\n                    return this.network.fetch(`/api/external/?url=${post.externalURL}`);\n                  } else {\n                    return post;\n                  }\n                }\n              }\n              ```\n               ```javascript\n              // Finally, put all the pieces together\n               function discoverResourcesFor(url) {\n                return MyApp.visit(url, { isBrowser: false, shouldRender: false }).then(instance => {\n                  let networkService = instance.lookup('service:network');\n                  return networkService.requests; // => { \"/api/posts/123.json\": \"...\" }\n                });\n              }\n              ```\n               @public\n              @method visit\n              @param url {String} The initial URL to navigate to\n              @param options {ApplicationInstance.BootOptions}\n              @return {Promise<ApplicationInstance, Error>}\n            */},{key:\"visit\",value:function visit(url,options){var _this92=this;!!this.isDestroyed&&assert$1('You cannot visit this application since it has already been destroyed',!this.isDestroyed);!!this.isDestroying&&assert$1('You cannot visit this application since it is being destroyed',!this.isDestroying);return this.boot().then(function(){var instance=_this92.buildInstance();return instance.boot(options).then(function(){return instance.visit(url);}).catch(function(error){run$1(instance,'destroy');throw error;});});}}],[{key:\"buildRegistry\",value:/**\n              This creates a registry with the default Ember naming conventions.\n               It also configures the registry:\n               * registered views are created every time they are looked up (they are\n                not singletons)\n              * registered templates are not factories; the registered value is\n                returned directly.\n              * the router receives the application as its `namespace` property\n              * all controllers receive the router as their `target` and `controllers`\n                properties\n              * all controllers receive the application as their `namespace` property\n              * the application view receives the application controller as its\n                `controller` property\n              * the application view receives the application template as its\n                `defaultTemplate` property\n               @method buildRegistry\n              @static\n              @param {Application} namespace the application for which to\n                build the registry\n              @return {Ember.Registry} the built registry\n              @private\n            */function buildRegistry(namespace){var registry=_superPropGet(Application,\"buildRegistry\",this,2)([namespace]);commonSetupRegistry(registry);setupApplicationRegistry(registry);return registry;}}]);}(Engine);_defineProperty(Application,\"initializer\",buildInitializerMethod('initializers','initializer'));_defineProperty(Application,\"instanceInitializer\",buildInitializerMethod('instanceInitializers','instance initializer'));function commonSetupRegistry(registry){registry.register('router:main',EmberRouter);registry.register('-view-registry:main',{create:function create(){return makeDictionary(null);}});registry.register('route:basic',Route);registry.register('event_dispatcher:main',EventDispatcher);registry.register('location:hash',HashLocation);registry.register('location:history',HistoryLocation);registry.register('location:none',NoneLocation);registry.register(privatize(_templateObject6||(_templateObject6=_taggedTemplateLiteral([\"-bucket-cache:main\"]))),{create:function create(){return new BucketCache();}});registry.register('service:router',RouterService);}var emberApplicationIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,_loaded:_loaded,default:Application,getOwner:getOwner,onLoad:onLoad,runLoadHooks:runLoadHooks,setOwner:setOwner},Symbol.toStringTag,{value:'Module'});var emberArrayMutable=/*#__PURE__*/Object.defineProperty({__proto__:null,default:MutableArray},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/array/proxy\n          */function isMutable(obj){return Array.isArray(obj)||typeof obj.replace==='function';}var ARRAY_OBSERVER_MAPPING={willChange:'_arrangedContentArrayWillChange',didChange:'_arrangedContentArrayDidChange'};function customTagForArrayProxy(proxy,key){!(proxy instanceof ArrayProxy)&&assert$1('[BUG] Expected a proxy',proxy instanceof ArrayProxy);if(key==='[]'){proxy._revalidate();return proxy._arrTag;}else if(key==='length'){proxy._revalidate();return proxy._lengthTag;}return tagFor(proxy,key);}/**\n            An ArrayProxy wraps any other object that implements `Array` and/or\n            `MutableArray,` forwarding all requests. This makes it very useful for\n            a number of binding use cases or other cases where being able to swap\n            out the underlying array is useful.\n\n            A simple example of usage:\n\n            ```javascript\n            import { A } from '@ember/array';\n            import ArrayProxy from '@ember/array/proxy';\n\n            let pets = ['dog', 'cat', 'fish'];\n            let ap = ArrayProxy.create({ content: A(pets) });\n\n            ap.get('firstObject');                        // 'dog'\n            ap.set('content', ['amoeba', 'paramecium']);\n            ap.get('firstObject');                        // 'amoeba'\n            ```\n\n            This class can also be useful as a layer to transform the contents of\n            an array, as they are accessed. This can be done by overriding\n            `objectAtContent`:\n\n            ```javascript\n            import { A } from '@ember/array';\n            import ArrayProxy from '@ember/array/proxy';\n\n            let pets = ['dog', 'cat', 'fish'];\n            let ap = ArrayProxy.create({\n                content: A(pets),\n                objectAtContent: function(idx) {\n                    return this.get('content').objectAt(idx).toUpperCase();\n                }\n            });\n\n            ap.get('firstObject'); // . 'DOG'\n            ```\n\n            When overriding this class, it is important to place the call to\n            `_super` *after* setting `content` so the internal observers have\n            a chance to fire properly:\n\n            ```javascript\n            import { A } from '@ember/array';\n            import ArrayProxy from '@ember/array/proxy';\n\n            export default ArrayProxy.extend({\n              init() {\n                this.set('content', A(['dog', 'cat', 'fish']));\n                this._super(...arguments);\n              }\n            });\n            ```\n\n            @class ArrayProxy\n            @extends EmberObject\n            @uses MutableArray\n            @public\n          */var ArrayProxy=/*#__PURE__*/function(_EmberObject9){function ArrayProxy(){var _this93;_classCallCheck(this,ArrayProxy);for(var _len99=arguments.length,args=new Array(_len99),_key91=0;_key91<_len99;_key91++){args[_key91]=arguments[_key91];}_this93=_callSuper(this,ArrayProxy,[].concat(args));/*\n              `this._objectsDirtyIndex` determines which indexes in the `this._objects`\n              cache are dirty.\n               If `this._objectsDirtyIndex === -1` then no indexes are dirty.\n              Otherwise, an index `i` is dirty if `i >= this._objectsDirtyIndex`.\n               Calling `objectAt` with a dirty index will cause the `this._objects`\n              cache to be recomputed.\n            *//** @internal */_defineProperty(_this93,\"_objectsDirtyIndex\",0);/** @internal */_defineProperty(_this93,\"_objects\",null);/** @internal */_defineProperty(_this93,\"_lengthDirty\",true);/** @internal */_defineProperty(_this93,\"_length\",0);/** @internal */_defineProperty(_this93,\"_arrangedContent\",null);/** @internal */_defineProperty(_this93,\"_arrangedContentIsUpdating\",false);/** @internal */_defineProperty(_this93,\"_arrangedContentTag\",null);/** @internal */_defineProperty(_this93,\"_arrangedContentRevision\",null);/** @internal */_defineProperty(_this93,\"_lengthTag\",null);/** @internal */_defineProperty(_this93,\"_arrTag\",null);return _this93;}_inherits(ArrayProxy,_EmberObject9);return _createClass(ArrayProxy,[{key:\"init\",value:function init(props){_superPropGet(ArrayProxy,\"init\",this,3)([props]);setCustomTagFor(this,customTagForArrayProxy);}},{key:PROPERTY_DID_CHANGE,value:function value(){this._revalidate();}},{key:\"willDestroy\",value:function willDestroy(){this._removeArrangedContentArrayObserver();}},{key:\"objectAtContent\",value:function objectAtContent(idx){var arrangedContent=get$2(this,'arrangedContent');!arrangedContent&&assert$1('[BUG] Called objectAtContent without content',arrangedContent);return objectAt(arrangedContent,idx);}// See additional docs for `replace` from `MutableArray`:\n// https://api.emberjs.com/ember/release/classes/MutableArray/methods/replace?anchor=replace\n},{key:\"replace\",value:function replace(idx,amt,objects){!(get$2(this,'arrangedContent')===get$2(this,'content'))&&assert$1('Mutating an arranged ArrayProxy is not allowed',get$2(this,'arrangedContent')===get$2(this,'content'));this.replaceContent(idx,amt,objects);}},{key:\"replaceContent\",value:function replaceContent(idx,amt,objects){var content=get$2(this,'content');!content&&assert$1('[BUG] Called replaceContent without content',content);!isMutable(content)&&assert$1('Mutating a non-mutable array is not allowed',isMutable(content));replace(content,idx,amt,objects);}// Overriding objectAt is not supported.\n},{key:\"objectAt\",value:function objectAt(idx){this._revalidate();if(this._objects===null){this._objects=[];}if(this._objectsDirtyIndex!==-1&&idx>=this._objectsDirtyIndex){var arrangedContent=get$2(this,'arrangedContent');if(arrangedContent){var _length8=this._objects.length=get$2(arrangedContent,'length');for(var i=this._objectsDirtyIndex;i<_length8;i++){// SAFETY: This is expected to only ever return an instance of T. In other words, there should\n// be no gaps in the array. Unfortunately, we can't actually assert for it since T could include\n// any types, including null or undefined.\nthis._objects[i]=this.objectAtContent(i);}}else{this._objects.length=0;}this._objectsDirtyIndex=-1;}return this._objects[idx];}// Overriding length is not supported.\n},{key:\"length\",get:function get(){this._revalidate();if(this._lengthDirty){var arrangedContent=get$2(this,'arrangedContent');this._length=arrangedContent?get$2(arrangedContent,'length'):0;this._lengthDirty=false;}!this._lengthTag&&assert$1('[BUG] _lengthTag is not set',this._lengthTag);consumeTag(this._lengthTag);return this._length;},set:function set(value){var length=this.length;var removedCount=length-value;var added;if(removedCount===0){return;}else if(removedCount<0){added=new Array(-removedCount);removedCount=0;}var content=get$2(this,'content');if(content){!isMutable(content)&&assert$1('Mutating a non-mutable array is not allowed',isMutable(content));replace(content,value,removedCount,added);this._invalidate();}}},{key:\"_updateArrangedContentArray\",value:function _updateArrangedContentArray(arrangedContent){var oldLength=this._objects===null?0:this._objects.length;var newLength=arrangedContent?get$2(arrangedContent,'length'):0;this._removeArrangedContentArrayObserver();arrayContentWillChange(this,0,oldLength,newLength);this._invalidate();arrayContentDidChange(this,0,oldLength,newLength,false);this._addArrangedContentArrayObserver(arrangedContent);}},{key:\"_addArrangedContentArrayObserver\",value:function _addArrangedContentArrayObserver(arrangedContent){if(arrangedContent&&!arrangedContent.isDestroyed){!(arrangedContent!==this)&&assert$1(\"Can't set ArrayProxy's content to itself\",arrangedContent!==this);!function(arr){return Array.isArray(arr)||EmberArray.detect(arr);}(arrangedContent)&&assert$1(\"ArrayProxy expects a native Array, EmberArray, or ArrayProxy, but you passed \".concat(_typeof(arrangedContent)),function(arr){return Array.isArray(arr)||EmberArray.detect(arr);}(arrangedContent));!!arrangedContent.isDestroyed&&assert$1('ArrayProxy expected its contents to not be destroyed',!arrangedContent.isDestroyed);addArrayObserver(arrangedContent,this,ARRAY_OBSERVER_MAPPING);this._arrangedContent=arrangedContent;}}},{key:\"_removeArrangedContentArrayObserver\",value:function _removeArrangedContentArrayObserver(){if(this._arrangedContent){removeArrayObserver(this._arrangedContent,this,ARRAY_OBSERVER_MAPPING);}}},{key:\"_arrangedContentArrayWillChange\",value:function _arrangedContentArrayWillChange(){}},{key:\"_arrangedContentArrayDidChange\",value:function _arrangedContentArrayDidChange(_proxy,idx,removedCnt,addedCnt){arrayContentWillChange(this,idx,removedCnt,addedCnt);var dirtyIndex=idx;if(dirtyIndex<0){var _length9=get$2(this._arrangedContent,'length');dirtyIndex+=_length9+removedCnt-addedCnt;}if(this._objectsDirtyIndex===-1||this._objectsDirtyIndex>dirtyIndex){this._objectsDirtyIndex=dirtyIndex;}this._lengthDirty=true;arrayContentDidChange(this,idx,removedCnt,addedCnt,false);}},{key:\"_invalidate\",value:function _invalidate(){this._objectsDirtyIndex=0;this._lengthDirty=true;}},{key:\"_revalidate\",value:function _revalidate(){if(this._arrangedContentIsUpdating===true)return;if(this._arrangedContentTag===null||!validateTag(this._arrangedContentTag,this._arrangedContentRevision)){var arrangedContent=this.get('arrangedContent');if(this._arrangedContentTag===null){// This is the first time the proxy has been setup, only add the observer\n// don't trigger any events\nthis._addArrangedContentArrayObserver(arrangedContent);}else{this._arrangedContentIsUpdating=true;this._updateArrangedContentArray(arrangedContent);this._arrangedContentIsUpdating=false;}var arrangedContentTag=this._arrangedContentTag=tagFor(this,'arrangedContent');this._arrangedContentRevision=valueForTag(this._arrangedContentTag);if(isObject$1(arrangedContent)){this._lengthTag=_combine([arrangedContentTag,tagForProperty(arrangedContent,'length')]);this._arrTag=_combine([arrangedContentTag,tagForProperty(arrangedContent,'[]')]);}else{this._lengthTag=this._arrTag=arrangedContentTag;}}}}]);}(EmberObject);ArrayProxy.reopen(MutableArray,{arrangedContent:alias('content')});var emberArrayProxy=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ArrayProxy},Symbol.toStringTag,{value:'Module'});/**\n            Set `EmberENV.FEATURES` in your application's `config/environment.js` file\n            to enable canary features in your application.\n\n            See the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\n            for more details.\n\n            @module @ember/canary-features\n            @public\n          */var DEFAULT_FEATURES={// FLAG_NAME: true/false\n};/**\n            The hash of enabled Canary features. Add to this, any canary features\n            before creating your application.\n\n            @class FEATURES\n            @static\n            @since 1.1.0\n            @public\n          */var FEATURES=Object.assign(DEFAULT_FEATURES,ENV.FEATURES);/**\n            Determine whether the specified `feature` is enabled. Used by Ember's\n            build tools to exclude experimental features from beta/stable builds.\n\n            You can define the following configuration options:\n\n            * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n              enabled/disabled.\n\n            @method isEnabled\n            @param {String} feature The feature to check\n            @return {Boolean}\n            @since 1.1.0\n            @public\n          */function isEnabled(feature){var value=FEATURES[feature];if(value===true||value===false){return value;}else if(ENV.ENABLE_OPTIONAL_FEATURES){return true;}else{return false;}}// Uncomment the below when features are present:\n// function featureValue(value: null | boolean) {\n//   if (ENV.ENABLE_OPTIONAL_FEATURES && value === null) {\n//     return true;\n//   }\n//   return value;\n// }\n//\n// export const FLAG_NAME = featureValue(FEATURES.FLAG_NAME);\nvar emberCanaryFeaturesIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,DEFAULT_FEATURES:DEFAULT_FEATURES,FEATURES:FEATURES,isEnabled:isEnabled},Symbol.toStringTag,{value:'Module'});var emberComponentHelper=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Helper,helper:helper$2},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/component\n            @public\n           *//**\n           * Assigns a TemplateFactory to a component class.\n           *\n           * @method setComponentTemplate\n           * @static\n           * @for @ember/component\n           * @public\n           *\n           * ```js\n           * import Component from '@glimmer/component';\n           * import { hbs } from 'ember-cli-htmlbars';\n           * import { setComponentTemplate } from '@ember/component';\n           *\n           * export default class Demo extends Component {\n           *   // ...\n           * }\n           *\n           * setComponentTemplate(hbs`\n           *  <div>my template</div>\n           * `, Demo);\n           * ```\n           *\n           * @param {TemplateFactory} templateFactory\n           * @param {object} componentDefinition\n           *//**\n           * Returns the TemplateFactory associated with a component\n           *\n           * @method getComponentTemplate\n           * @static\n           * @for @ember/component\n           * @public\n           *\n           * ```js\n           * import Component from '@glimmer/component';\n           * import { hbs } from 'ember-cli-htmlbars';\n           * import { getComponentTemplate } from '@ember/component';\n           *\n           * export default class Demo extends Component {\n           *   // ...\n           * }\n           *\n           * let theTemplateFactory = getTemplateFactory(Demo)\n           * ```\n           *\n           * @param {object} componentDefinition\n           * @returns {TemplateFactory}\n           *//**\n           * Tell the VM how manage a type of object / class when encountered\n           * via component-invocation.\n           *\n           * A Component Manager, must implement this interface:\n           * - static create()\n           * - createComponent()\n           * - updateComponent()\n           * - destroyComponent()\n           * - getContext()\n           *\n           * @method setComponentManager\n           * @static\n           * @for @ember/component\n           * @public\n           *\n           *\n           * After a component manager is registered via `setComponentManager`,\n           *\n           * ```js\n           * import { StateNode } from 'xstate';\n           * import ComponentManager from './-private/statechart-manager';\n           *\n           * setComponentManager((owner) => ComponentManager.create(owner), StateNode.prototype);\n           * ```\n           *\n           * Instances of the class can be used as component.\n           * No need to extend from `@glimmer/component`.\n           *\n           * ```js\n           * // app/components/my-component.js\n           * import { createMachine } from 'xstate';\n           *\n           * export default createMachine({ ... });\n           * ```\n           * ```hbs\n           * {{!-- app/templates/application.hbs}}\n           * <MyComponent />\n           * ```\n           *\n           * @param {(owner: Owner) => import('@glimmer/interfaces').ComponentManager} managerFactory\n           * @param {object} object that will be managed by the return value of `managerFactory`\n           *\n           *//**\n           * Tells Glimmer what capabilities a Component Manager will have\n           *\n           * ```js\n           * import { capabilities } from '@ember/component';\n           *\n           * export class MyComponentManager {\n           *   capabilities = capabilities('3.13', {\n           *     // capabilities listed here\n           *   })\n           * }\n           * ```\n           *\n           *\n           * For a full list of capabilities, their defaults, and how they are used, see [@glimmer/manager](https://github.com/glimmerjs/glimmer-vm/blob/4f1bef0d9a8a3c3ebd934c5b6e09de4c5f6e4468/packages/%40glimmer/manager/lib/public/component.ts#L26)\n           *\n           *\n           * @method capabilities\n           * @static\n           * @for @ember/component\n           * @public\n           * @param {'3.13'} managerApiVersion\n           * @param {Parameters<import('@ember/-internals/glimmer').componentCapabilities>[1]} options\n           *\n           */var emberComponentIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Input:Input,Textarea:Textarea,capabilities:componentCapabilities,default:Component,getComponentTemplate:getComponentTemplate,setComponentManager:setComponentManager,setComponentTemplate:setComponentTemplate},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/component/template-only\n            @public\n          *//**\n           * Template-only components have no backing class instance, so `this` in their\n           * templates is null. This means that you can only reference passed in arguments\n           * (e.g. `{{@arg}}`).\n           */// eslint-disable-next-line @typescript-eslint/no-empty-interface\n/**\n           * A convenience alias for {@link TemplateOnlyComponent}\n           */// NOTES:\n//\n// 1. The generic here is for a *signature: a way to hang information for tools\n//    like Glint which can provide typey checking for component templates using\n//    information supplied via this generic. While it may appear useless on this\n//    class definition and extension, it is used by external tools and should\n//    not be removed.\n// 2. SAFETY: this cast is *throwing away* information that is not part of the\n//    public API and replacing it with something which has the same calling\n//    contract, but much less information (since we do not want to expose the\n//    internal APIs like `moduleName` etc.).\n// prettier-ignore\nvar templateOnly=templateOnlyComponent;var emberComponentTemplateOnly=/*#__PURE__*/Object.defineProperty({__proto__:null,default:templateOnly},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/debug/data-adapter\n          */// Represents the base contract for iterables as understood in the GLimmer VM\n// historically. This is *not* the public API for it, because there *is* no\n// public API for it. Recent versions of Glimmer simply use `Symbol.iterator`,\n// but some older consumers still use this basic shape.\nfunction iterate(arr,fn){if(Symbol.iterator in arr){var _iterator79=_createForOfIteratorHelper(arr),_step79;try{for(_iterator79.s();!(_step79=_iterator79.n()).done;){var item=_step79.value;fn(item);}}catch(err){_iterator79.e(err);}finally{_iterator79.f();}}else{// SAFETY: this cast required to work this way to interop between TS 4.8\n// and 4.9. When we drop support for 4.8, it will narrow correctly via the\n// use of the `in` operator above. (Preferably we will solve this by just\n// switching to require `Symbol.iterator` instead.)\nassert$1('',typeof arr.forEach==='function');arr.forEach(fn);}}var RecordsWatcher=/*#__PURE__*/function(){function RecordsWatcher(records,recordsAdded,recordsUpdated,recordsRemoved,wrapRecord,release){var _this94=this;_classCallCheck(this,RecordsWatcher);_defineProperty(this,\"recordCaches\",new Map());_defineProperty(this,\"added\",[]);_defineProperty(this,\"updated\",[]);_defineProperty(this,\"removed\",[]);this.wrapRecord=wrapRecord;this.release=release;this.recordArrayCache=createCache(function(){var seen=new Set();// Track `[]` for legacy support\nconsumeTag(tagFor(records,'[]'));iterate(records,function(record){getValue(_this94.getCacheForItem(record));seen.add(record);});// Untrack this operation because these records are being removed, they\n// should not be polled again in the future\nuntrack(function(){_this94.recordCaches.forEach(function(_cache,record){if(!seen.has(record)){_this94.removed.push(wrapRecord(record));_this94.recordCaches.delete(record);}});});if(_this94.added.length>0){recordsAdded(_this94.added);_this94.added=[];}if(_this94.updated.length>0){recordsUpdated(_this94.updated);_this94.updated=[];}if(_this94.removed.length>0){recordsRemoved(_this94.removed);_this94.removed=[];}});}return _createClass(RecordsWatcher,[{key:\"getCacheForItem\",value:function getCacheForItem(record){var _this95=this;var recordCache=this.recordCaches.get(record);if(!recordCache){var hasBeenAdded=false;recordCache=createCache(function(){if(!hasBeenAdded){_this95.added.push(_this95.wrapRecord(record));hasBeenAdded=true;}else{_this95.updated.push(_this95.wrapRecord(record));}});this.recordCaches.set(record,recordCache);}return recordCache;}},{key:\"revalidate\",value:function revalidate(){getValue(this.recordArrayCache);}}]);}();var TypeWatcher=/*#__PURE__*/function(){function TypeWatcher(records,onChange,release){_classCallCheck(this,TypeWatcher);this.release=release;var hasBeenAccessed=false;this.cache=createCache(function(){// Empty iteration, we're doing this just\n// to track changes to the records array\niterate(records,function(){});// Also track `[]` for legacy support\nconsumeTag(tagFor(records,'[]'));if(hasBeenAccessed===true){next(onChange);}else{hasBeenAccessed=true;}});this.release=release;}return _createClass(TypeWatcher,[{key:\"revalidate\",value:function revalidate(){getValue(this.cache);}}]);}();/**\n            The `DataAdapter` helps a data persistence library\n            interface with tools that debug Ember such\n            as the [Ember Inspector](https://github.com/emberjs/ember-inspector)\n            for Chrome and Firefox.\n\n            This class will be extended by a persistence library\n            which will override some of the methods with\n            library-specific code.\n\n            The methods likely to be overridden are:\n\n            * `getFilters`\n            * `detect`\n            * `columnsForType`\n            * `getRecords`\n            * `getRecordColumnValues`\n            * `getRecordKeywords`\n            * `getRecordFilterValues`\n            * `getRecordColor`\n\n            The adapter will need to be registered\n            in the application's container as `dataAdapter:main`.\n\n            Example:\n\n            ```javascript\n            Application.initializer({\n              name: \"data-adapter\",\n\n              initialize: function(application) {\n                application.register('data-adapter:main', DS.DataAdapter);\n              }\n            });\n            ```\n\n            @class DataAdapter\n            @extends EmberObject\n            @public\n          */var DataAdapter=/*#__PURE__*/function(_EmberObject10){// TODO: Revisit this\nfunction DataAdapter(owner){var _this96;_classCallCheck(this,DataAdapter);_this96=_callSuper(this,DataAdapter,[owner]);_defineProperty(_this96,\"releaseMethods\",_A2());_defineProperty(_this96,\"recordsWatchers\",new Map());_defineProperty(_this96,\"typeWatchers\",new Map());_defineProperty(_this96,\"flushWatchers\",null);/**\n              The container-debug-adapter which is used\n              to list all models.\n               @property containerDebugAdapter\n              @default undefined\n              @since 1.5.0\n              @public\n            **//**\n              The number of attributes to send\n              as columns. (Enough to make the record\n              identifiable).\n               @private\n              @property attributeLimit\n              @default 3\n              @since 1.3.0\n            */_defineProperty(_this96,\"attributeLimit\",3);/**\n               Ember Data > v1.0.0-beta.18\n               requires string model names to be passed\n               around instead of the actual factories.\n                This is a stamp for the Ember Inspector\n               to differentiate between the versions\n               to be able to support older versions too.\n                @public\n               @property acceptsModelName\n             */_defineProperty(_this96,\"acceptsModelName\",true);_this96.containerDebugAdapter=getOwner$2(_this96).lookup('container-debug-adapter:main');return _this96;}_inherits(DataAdapter,_EmberObject10);return _createClass(DataAdapter,[{key:\"getFilters\",value:/**\n               Map from records arrays to RecordsWatcher instances\n                @private\n               @property recordsWatchers\n               @since 3.26.0\n             *//**\n              Map from records arrays to TypeWatcher instances\n               @private\n              @property typeWatchers\n              @since 3.26.0\n             *//**\n              Callback that is currently scheduled on backburner end to flush and check\n              all active watchers.\n               @private\n              @property flushWatchers\n              @since 3.26.0\n              *//**\n              Stores all methods that clear observers.\n              These methods will be called on destruction.\n               @private\n              @property releaseMethods\n              @since 1.3.0\n            *//**\n              Specifies how records can be filtered.\n              Records returned will need to have a `filterValues`\n              property with a key for every name in the returned array.\n               @public\n              @method getFilters\n              @return {Array} List of objects defining filters.\n               The object should have a `name` and `desc` property.\n            */function getFilters(){return _A2();}/**\n              Fetch the model types and observe them for changes.\n               @public\n              @method watchModelTypes\n               @param {Function} typesAdded Callback to call to add types.\n              Takes an array of objects containing wrapped types (returned from `wrapModelType`).\n               @param {Function} typesUpdated Callback to call when a type has changed.\n              Takes an array of objects containing wrapped types.\n               @return {Function} Method to call to remove all observers\n            */},{key:\"watchModelTypes\",value:function watchModelTypes(typesAdded,typesUpdated){var _this97=this;var modelTypes=this.getModelTypes();var releaseMethods=_A2();var typesToSend;typesToSend=modelTypes.map(function(type){var klass=type.klass;var wrapped=_this97.wrapModelType(klass,type.name);releaseMethods.push(_this97.observeModelType(type.name,typesUpdated));return wrapped;});typesAdded(typesToSend);var _release=function release(){releaseMethods.forEach(function(fn){return fn();});_this97.releaseMethods.removeObject(_release);};this.releaseMethods.pushObject(_release);return _release;}},{key:\"_nameToClass\",value:function _nameToClass(type){if(typeof type==='string'){var owner=getOwner$2(this);var Factory=owner.factoryFor(\"model:\".concat(type));type=Factory&&Factory.class;}return type;}/**\n              Fetch the records of a given type and observe them for changes.\n               @public\n              @method watchRecords\n               @param {String} modelName The model name.\n               @param {Function} recordsAdded Callback to call to add records.\n              Takes an array of objects containing wrapped records.\n              The object should have the following properties:\n                columnValues: {Object} The key and value of a table cell.\n                object: {Object} The actual record object.\n               @param {Function} recordsUpdated Callback to call when a record has changed.\n              Takes an array of objects containing wrapped records.\n               @param {Function} recordsRemoved Callback to call when a record has removed.\n              Takes an array of objects containing wrapped records.\n               @return {Function} Method to call to remove all observers.\n            */},{key:\"watchRecords\",value:function watchRecords(modelName,recordsAdded,recordsUpdated,recordsRemoved){var _this98=this;var klass=this._nameToClass(modelName);var records=this.getRecords(klass,modelName);var recordsWatchers=this.recordsWatchers;var recordsWatcher=recordsWatchers.get(records);if(!recordsWatcher){recordsWatcher=new RecordsWatcher(records,recordsAdded,recordsUpdated,recordsRemoved,function(record){return _this98.wrapRecord(record);},function(){recordsWatchers.delete(records);_this98.updateFlushWatchers();});recordsWatchers.set(records,recordsWatcher);this.updateFlushWatchers();recordsWatcher.revalidate();}return recordsWatcher.release;}},{key:\"updateFlushWatchers\",value:function updateFlushWatchers(){var _this99=this;if(this.flushWatchers===null){if(this.typeWatchers.size>0||this.recordsWatchers.size>0){this.flushWatchers=function(){_this99.typeWatchers.forEach(function(watcher){return watcher.revalidate();});_this99.recordsWatchers.forEach(function(watcher){return watcher.revalidate();});};_backburner.on('end',this.flushWatchers);}}else if(this.typeWatchers.size===0&&this.recordsWatchers.size===0){_backburner.off('end',this.flushWatchers);this.flushWatchers=null;}}/**\n              Clear all observers before destruction\n              @private\n              @method willDestroy\n            */},{key:\"willDestroy\",value:function willDestroy(){this._super.apply(this,arguments);this.typeWatchers.forEach(function(watcher){return watcher.release();});this.recordsWatchers.forEach(function(watcher){return watcher.release();});this.releaseMethods.forEach(function(fn){return fn();});if(this.flushWatchers){_backburner.off('end',this.flushWatchers);}}/**\n              Detect whether a class is a model.\n               Test that against the model class\n              of your persistence library.\n               @public\n              @method detect\n              @return boolean Whether the class is a model class or not.\n            */},{key:\"detect\",value:function detect(_klass){return false;}/**\n              Get the columns for a given model type.\n               @public\n              @method columnsForType\n              @return {Array} An array of columns of the following format:\n               name: {String} The name of the column.\n               desc: {String} Humanized description (what would show in a table column name).\n            */},{key:\"columnsForType\",value:function columnsForType(_klass){return _A2();}/**\n              Adds observers to a model type class.\n               @private\n              @method observeModelType\n              @param {String} modelName The model type name.\n              @param {Function} typesUpdated Called when a type is modified.\n              @return {Function} The function to call to remove observers.\n            */},{key:\"observeModelType\",value:function observeModelType(modelName,typesUpdated){var _this100=this;var klass=this._nameToClass(modelName);var records=this.getRecords(klass,modelName);var onChange=function onChange(){typesUpdated([_this100.wrapModelType(klass,modelName)]);};var typeWatchers=this.typeWatchers;var typeWatcher=typeWatchers.get(records);if(!typeWatcher){typeWatcher=new TypeWatcher(records,onChange,function(){typeWatchers.delete(records);_this100.updateFlushWatchers();});typeWatchers.set(records,typeWatcher);this.updateFlushWatchers();typeWatcher.revalidate();}return typeWatcher.release;}/**\n              Wraps a given model type and observes changes to it.\n               @private\n              @method wrapModelType\n              @param {Class} klass A model class.\n              @param {String} modelName Name of the class.\n              @return {Object} The wrapped type has the following format:\n                name: {String} The name of the type.\n                count: {Integer} The number of records available.\n                columns: {Columns} An array of columns to describe the record.\n                object: {Class} The actual Model type class.\n            */},{key:\"wrapModelType\",value:function wrapModelType(klass,name){var records=this.getRecords(klass,name);return{name:name,count:get$2(records,'length'),columns:this.columnsForType(klass),object:klass};}/**\n              Fetches all models defined in the application.\n               @private\n              @method getModelTypes\n              @return {Array} Array of model types.\n            */},{key:\"getModelTypes\",value:function getModelTypes(){var _this101=this;var containerDebugAdapter=this.containerDebugAdapter;var stringTypes=containerDebugAdapter.canCatalogEntriesByType('model')?containerDebugAdapter.catalogEntriesByType('model'):this._getObjectsOnNamespaces();// New adapters return strings instead of classes.\nvar klassTypes=stringTypes.map(function(name){return{klass:_this101._nameToClass(name),name:name};});return klassTypes.filter(function(type){return _this101.detect(type.klass);});}/**\n              Loops over all namespaces and all objects\n              attached to them.\n               @private\n              @method _getObjectsOnNamespaces\n              @return {Array} Array of model type strings.\n            */},{key:\"_getObjectsOnNamespaces\",value:function _getObjectsOnNamespaces(){var _this102=this;var namespaces=Namespace.NAMESPACES;var types=[];namespaces.forEach(function(namespace){for(var key in namespace){if(!Object.prototype.hasOwnProperty.call(namespace,key)){continue;}// Even though we will filter again in `getModelTypes`,\n// we should not call `lookupFactory` on non-models\nif(!_this102.detect(namespace[key])){continue;}var _name36=dasherize(key);types.push(_name36);}});return types;}/**\n              Fetches all loaded records for a given type.\n               @public\n              @method getRecords\n              @return {Array} An array of records.\n               This array will be observed for changes,\n               so it should update when new records are added/removed.\n            */},{key:\"getRecords\",value:function getRecords(_klass,_name){return _A2();}/**\n              Wraps a record and observers changes to it.\n               @private\n              @method wrapRecord\n              @param {Object} record The record instance.\n              @return {Object} The wrapped record. Format:\n              columnValues: {Array}\n              searchKeywords: {Array}\n            */},{key:\"wrapRecord\",value:function wrapRecord(record){return{object:record,columnValues:this.getRecordColumnValues(record),searchKeywords:this.getRecordKeywords(record),filterValues:this.getRecordFilterValues(record),color:this.getRecordColor(record)};}/**\n              Gets the values for each column.\n               @public\n              @method getRecordColumnValues\n              @return {Object} Keys should match column names defined\n              by the model type.\n            */},{key:\"getRecordColumnValues\",value:function getRecordColumnValues(_record){return{};}/**\n              Returns keywords to match when searching records.\n               @public\n              @method getRecordKeywords\n              @return {Array} Relevant keywords for search.\n            */},{key:\"getRecordKeywords\",value:function getRecordKeywords(_record){return _A2();}/**\n              Returns the values of filters defined by `getFilters`.\n               @public\n              @method getRecordFilterValues\n              @param {Object} record The record instance.\n              @return {Object} The filter values.\n            */},{key:\"getRecordFilterValues\",value:function getRecordFilterValues(_record){return{};}/**\n              Each record can have a color that represents its state.\n               @public\n              @method getRecordColor\n              @param {Object} record The record instance\n              @return {String} The records color.\n                Possible options: black, red, blue, green.\n            */},{key:\"getRecordColor\",value:function getRecordColor(_record){return null;}}]);}(EmberObject);var emberDebugDataAdapter=/*#__PURE__*/Object.defineProperty({__proto__:null,default:DataAdapter},Symbol.toStringTag,{value:'Module'});/* eslint-disable no-implicit-coercion */// These versions should be the version that the deprecation was _introduced_,\n// not the version that the feature will be removed.\nvar ASSIGN=!!'4.0.0-beta.1';var emberDeprecatedFeaturesIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,ASSIGN:ASSIGN},Symbol.toStringTag,{value:'Module'});/**\n            Ember manages the lifecycles and lifetimes of many built in constructs, such\n            as components, and does so in a hierarchical way - when a parent component is\n            destroyed, all of its children are destroyed as well.\n\n            This destroyables API exposes the basic building blocks for destruction:\n\n            * registering a function to be ran when an object is destroyed\n            * checking if an object is in a destroying state\n            * associate an object as a child of another so that the child object will be destroyed\n              when the associated parent object is destroyed.\n\n            @module @ember/destroyable\n            @public\n          *//**\n            This function is used to associate a destroyable object with a parent. When the parent\n            is destroyed, all registered children will also be destroyed.\n\n            ```js\n            class CustomSelect extends Component {\n              constructor(...args) {\n                super(...args);\n\n                // obj is now a child of the component. When the component is destroyed,\n                // obj will also be destroyed, and have all of its destructors triggered.\n                this.obj = associateDestroyableChild(this, {});\n              }\n            }\n            ```\n\n            Returns the associated child for convenience.\n\n            @method associateDestroyableChild\n            @for @ember/destroyable\n            @param {Object|Function} parent the destroyable to entangle the child destroyables lifetime with\n            @param {Object|Function} child the destroyable to be entangled with the parents lifetime\n            @returns {Object|Function} the child argument\n            @static\n            @public\n          *//**\n           Receives a destroyable, and returns true if the destroyable has begun destroying. Otherwise returns\n           false.\n\n            ```js\n            let obj = {};\n            isDestroying(obj); // false\n            destroy(obj);\n            isDestroying(obj); // true\n            // ...sometime later, after scheduled destruction\n            isDestroyed(obj); // true\n            isDestroying(obj); // true\n            ```\n\n            @method isDestroying\n            @for @ember/destroyable\n            @param {Object|Function} destroyable the object to check\n            @returns {Boolean}\n            @static\n            @public\n          *//**\n            Receives a destroyable, and returns true if the destroyable has finished destroying. Otherwise\n            returns false.\n\n            ```js\n            let obj = {};\n\n            isDestroyed(obj); // false\n            destroy(obj);\n\n            // ...sometime later, after scheduled destruction\n\n            isDestroyed(obj); // true\n            ```\n\n            @method isDestroyed\n            @for @ember/destroyable\n            @param {Object|Function} destroyable the object to check\n            @returns {Boolean}\n            @static\n            @public\n          *//**\n            Initiates the destruction of a destroyable object. It runs all associated destructors, and then\n            destroys all children recursively.\n\n            ```js\n            let obj = {};\n\n            registerDestructor(obj, () => console.log('destroyed!'));\n\n            destroy(obj); // this will schedule the destructor to be called\n\n            // ...some time later, during scheduled destruction\n\n            // destroyed!\n            ```\n\n            Destruction via `destroy()` follows these steps:\n\n            1, Mark the destroyable such that `isDestroying(destroyable)` returns `true`\n            2, Call `destroy()` on each of the destroyable's associated children\n            3, Schedule calling the destroyable's destructors\n            4, Schedule setting destroyable such that `isDestroyed(destroyable)` returns `true`\n\n            This results in the entire tree of destroyables being first marked as destroying,\n            then having all of their destructors called, and finally all being marked as isDestroyed.\n            There won't be any in between states where some items are marked as `isDestroying` while\n            destroying, while others are not.\n\n            @method destroy\n            @for @ember/destroyable\n            @param {Object|Function} destroyable the object to destroy\n            @static\n            @public\n          *//**\n            This function asserts that all objects which have associated destructors or associated children\n            have been destroyed at the time it is called. It is meant to be a low level hook that testing\n            frameworks can use to hook into and validate that all destroyables have in fact been destroyed.\n\n            This function requires that `enableDestroyableTracking` was called previously, and is only\n            available in non-production builds.\n\n            @method assertDestroyablesDestroyed\n            @for @ember/destroyable\n            @static\n            @public\n          *//**\n            This function instructs the destroyable system to keep track of all destroyables (their\n            children, destructors, etc). This enables a future usage of `assertDestroyablesDestroyed`\n            to be used to ensure that all destroyable tasks (registered destructors and associated children)\n            have completed when `assertDestroyablesDestroyed` is called.\n\n            @method enableDestroyableTracking\n            @for @ember/destroyable\n            @static\n            @public\n          *//**\n            Receives a destroyable object and a destructor function, and associates the\n            function with it. When the destroyable is destroyed with destroy, or when its\n            parent is destroyed, the destructor function will be called.\n\n            ```js\n            import Component from '@glimmer/component';\n            import { registerDestructor } from '@ember/destroyable';\n\n            class Modal extends Component {\n              @service resize;\n\n              constructor(...args) {\n                super(...args);\n\n                this.resize.register(this, this.layout);\n\n                registerDestructor(this, () => this.resize.unregister(this));\n              }\n            }\n            ```\n\n            Multiple destructors can be associated with a given destroyable, and they can be\n            associated over time, allowing libraries to dynamically add destructors as needed.\n            `registerDestructor` also returns the associated destructor function, for convenience.\n\n            The destructor function is passed a single argument, which is the destroyable itself.\n            This allows the function to be reused multiple times for many destroyables, rather\n            than creating a closure function per destroyable.\n\n            ```js\n            import Component from '@glimmer/component';\n            import { registerDestructor } from '@ember/destroyable';\n\n            function unregisterResize(instance) {\n              instance.resize.unregister(instance);\n            }\n\n            class Modal extends Component {\n              @service resize;\n\n              constructor(...args) {\n                super(...args);\n\n                this.resize.register(this, this.layout);\n\n                registerDestructor(this, unregisterResize);\n              }\n            }\n            ```\n\n            @method registerDestructor\n            @for @ember/destroyable\n            @param {Object|Function} destroyable the destroyable to register the destructor function with\n            @param {Function} destructor the destructor to run when the destroyable object is destroyed\n            @static\n            @public\n          */function registerDestructor(destroyable,destructor){return registerDestructor$1(destroyable,destructor);}/**\n            Receives a destroyable and a destructor function, and de-associates the destructor\n            from the destroyable.\n\n            ```js\n            import Component from '@glimmer/component';\n            import { registerDestructor, unregisterDestructor } from '@ember/destroyable';\n\n            class Modal extends Component {\n              @service modals;\n\n              constructor(...args) {\n                super(...args);\n\n                this.modals.add(this);\n\n                this.modalDestructor = registerDestructor(this, () => this.modals.remove(this));\n              }\n\n              @action pinModal() {\n                unregisterDestructor(this, this.modalDestructor);\n              }\n            }\n            ```\n\n            @method unregisterDestructor\n            @for @ember/destroyable\n            @param {Object|Function} destroyable the destroyable to unregister the destructor function from\n            @param {Function} destructor the destructor to remove from the destroyable\n            @static\n            @public\n          */function unregisterDestructor(destroyable,destructor){return unregisterDestructor$1(destroyable,destructor);}var emberDestroyableIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,get assertDestroyablesDestroyed(){return assertDestroyablesDestroyed;},associateDestroyableChild:associateDestroyableChild,destroy:_destroy,get enableDestroyableTracking(){return enableDestroyableTracking;},isDestroyed:isDestroyed,isDestroying:isDestroying,registerDestructor:registerDestructor,unregisterDestructor:unregisterDestructor},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/helper\n          *//**\n            `capabilities` returns a capabilities configuration which can be used to modify\n            the behavior of the manager. Manager capabilities _must_ be provided using the\n            `capabilities` function, as the underlying implementation can change over time.\n\n            The first argument to capabilities is a version string, which is the version of\n            Ember that the capabilities were defined in. Ember can add new versions at any\n            time, and these may have entirely different behaviors, but it will not remove\n            old versions until the next major version.\n\n            ```js\n            capabilities('3.23');\n            ```\n\n            The second argument is an object of capabilities and boolean values indicating\n            whether they are enabled or disabled.\n\n            ```js\n            capabilities('3.23', {\n              hasValue: true,\n              hasDestructor: true,\n            });\n            ```\n\n            If no value is specified, then the default value will be used.\n\n            ### `3.23` capabilities\n\n            #### `hasDestroyable`\n\n            - Default value: false\n\n            Determines if the helper has a destroyable to include in the destructor\n            hierarchy. If enabled, the `getDestroyable` hook will be called, and its result\n            will be associated with the destroyable parent block.\n\n            #### `hasValue`\n\n            - Default value: false\n\n            Determines if the helper has a value which can be used externally. The helper's\n            `getValue` hook will be run whenever the value of the helper is accessed if this\n            capability is enabled.\n\n            @method capabilities\n            @for @ember/helper\n            @static\n            @param {String} managerApiVersion The version of capabilities that are being used\n            @param options The capabilities values\n            @return {Capabilities} The capabilities object instance\n            @public\n          */var capabilities=helperCapabilities;/**\n            Sets the helper manager for an object or function.\n\n            ```js\n            setHelperManager((owner) => new ClassHelperManager(owner), Helper)\n            ```\n\n            When a value is used as a helper in a template, the helper manager is looked up\n            on the object by walking up its prototype chain and finding the first helper\n            manager. This manager then receives the value and can create and manage an\n            instance of a helper from it. This provides a layer of indirection that allows\n            users to design high-level helper APIs, without Ember needing to worry about the\n            details. High-level APIs can be experimented with and iterated on while the\n            core of Ember helpers remains stable, and new APIs can be introduced gradually\n            over time to existing code bases.\n\n            `setHelperManager` receives two arguments:\n\n            1. A factory function, which receives the `owner` and returns an instance of a\n              helper manager.\n            2. A helper definition, which is the object or function to associate the factory function with.\n\n            The first time the object is looked up, the factory function will be called to\n            create the helper manager. It will be cached, and in subsequent lookups the\n            cached helper manager will be used instead.\n\n            Only one helper manager is guaranteed to exist per `owner` and per usage of\n            `setHelperManager`, so many helpers will end up using the same instance of the\n            helper manager. As such, you should only store state that is related to the\n            manager itself. If you want to store state specific to a particular helper\n            definition, you should assign a unique helper manager to that helper. In\n            general, most managers should either be stateless, or only have the `owner` they\n            were created with as state.\n\n            Helper managers must fulfill the following interface (This example uses\n            [TypeScript interfaces](https://www.typescriptlang.org/docs/handbook/interfaces.html)\n            for precision, you do not need to write helper managers using TypeScript):\n\n            ```ts\n            interface HelperManager<HelperStateBucket> {\n              capabilities: HelperCapabilities;\n\n              createHelper(definition: HelperDefinition, args: TemplateArgs): HelperStateBucket;\n\n              getValue?(bucket: HelperStateBucket): unknown;\n\n              runEffect?(bucket: HelperStateBucket): void;\n\n              getDestroyable?(bucket: HelperStateBucket): object;\n            }\n            ```\n\n            The capabilities property _must_ be provided using the `capabilities()` function\n            imported from the same module as `setHelperManager`:\n\n            ```js\n            import { capabilities } from '@ember/helper';\n\n            class MyHelperManager {\n              capabilities = capabilities('3.21.0', { hasValue: true });\n\n              // ...snip...\n            }\n            ```\n\n            Below is a description of each of the methods on the interface and their\n            functions.\n\n            #### `createHelper`\n\n            `createHelper` is a required hook on the HelperManager interface. The hook is\n            passed the definition of the helper that is currently being created, and is\n            expected to return a _state bucket_. This state bucket is what represents the\n            current state of the helper, and will be passed to the other lifecycle hooks at\n            appropriate times. It is not necessarily related to the definition of the\n            helper itself - for instance, you could return an object _containing_ an\n            instance of the helper:\n\n            ```js\n            class MyManager {\n              createHelper(Definition, args) {\n                return {\n                  instance: new Definition(args);\n                };\n              }\n            }\n            ```\n\n            This allows the manager to store metadata that it doesn't want to expose to the\n            user.\n\n            This hook is _not_ autotracked - changes to tracked values used within this hook\n            will _not_ result in a call to any of the other lifecycle hooks. This is because\n            it is unclear what should happen if it invalidates, and rather than make a\n            decision at this point, the initial API is aiming to allow as much expressivity\n            as possible. This could change in the future with changes to capabilities and\n            their behaviors.\n\n            If users do want to autotrack some values used during construction, they can\n            either create the instance of the helper in `runEffect` or `getValue`, or they\n            can use the `cache` API to autotrack the `createHelper` hook themselves. This\n            provides maximum flexibility and expressiveness to manager authors.\n\n            This hook has the following timing semantics:\n\n            **Always**\n            - called as discovered during DOM construction\n            - called in definition order in the template\n\n            #### `getValue`\n\n            `getValue` is an optional hook that should return the value of the helper. This\n            is the value that is returned from the helper and passed into the template.\n\n            This hook is called when the value is requested from the helper (e.g. when the\n            template is rendering and the helper value is needed). The hook is autotracked,\n            and will rerun whenever any tracked values used inside of it are updated.\n            Otherwise it does not rerun.\n\n            > Note: This means that arguments which are not _consumed_ within the hook will\n            > not trigger updates.\n\n            This hook is only called for helpers with the `hasValue` capability enabled.\n            This hook has the following timing semantics:\n\n            **Always**\n            - called the first time the helper value is requested\n            - called after autotracked state has changed\n\n            **Never**\n            - called if the `hasValue` capability is disabled\n\n            #### `runEffect`\n\n            `runEffect` is an optional hook that should run the effect that the helper is\n            applying, setting it up or updating it.\n\n            This hook is scheduled to be called some time after render and prior to paint.\n            There is not a guaranteed, 1-to-1 relationship between a render pass and this\n            hook firing. For instance, multiple render passes could occur, and the hook may\n            only trigger once. It may also never trigger if it was dirtied in one render\n            pass and then destroyed in the next.\n\n            The hook is autotracked, and will rerun whenever any tracked values used inside\n            of it are updated. Otherwise it does not rerun.\n\n            The hook is also run during a time period where state mutations are _disabled_\n            in Ember. Any tracked state mutation will throw an error during this time,\n            including changes to tracked properties, changes made using `Ember.set`, updates\n            to computed properties, etc. This is meant to prevent infinite rerenders and\n            other antipatterns.\n\n            This hook is only called for helpers with the `hasScheduledEffect` capability\n            enabled. This hook is also not called in SSR currently, though this could be\n            added as a capability in the future. It has the following timing semantics:\n\n            **Always**\n            - called after the helper was first created, if the helper has not been\n              destroyed since creation\n            - called after autotracked state has changed, if the helper has not been\n              destroyed during render\n\n            **Never**\n            - called if the `hasScheduledEffect` capability is disabled\n            - called in SSR\n\n            #### `getDestroyable`\n\n            `getDestroyable` is an optional hook that users can use to register a\n            destroyable object for the helper. This destroyable will be registered to the\n            containing block or template parent, and will be destroyed when it is destroyed.\n            See the [Destroyables RFC](https://github.com/emberjs/rfcs/blob/master/text/0580-destroyables.md)\n            for more details.\n\n            `getDestroyable` is only called if the `hasDestroyable` capability is enabled.\n\n            This hook has the following timing semantics:\n\n            **Always**\n            - called immediately after the `createHelper` hook is called\n\n            **Never**\n            - called if the `hasDestroyable` capability is disabled\n\n            @method setHelperManager\n            @for @ember/helper\n            @static\n            @param {Function} factory A factory function which receives an optional owner, and returns a helper manager\n            @param {object} definition The definition to associate the manager factory with\n            @return {object} The definition passed into setHelperManager\n            @public\n          */var setHelperManager=setHelperManager$1;/**\n            The `invokeHelper` function can be used to create a helper instance in\n            JavaScript.\n\n            To access a helper's value you have to use `getValue` from\n            `@glimmer/tracking/primitives/cache`.\n\n            ```js\n            // app/components/data-loader.js\n            import Component from '@glimmer/component';\n            import { getValue } from '@glimmer/tracking/primitives/cache';\n            import Helper from '@ember/component/helper';\n            import { invokeHelper } from '@ember/helper';\n\n            class PlusOne extends Helper {\n              compute([number]) {\n                return number + 1;\n              }\n            }\n\n            export default class PlusOneComponent extends Component {\n              plusOne = invokeHelper(this, PlusOne, () => {\n                return {\n                  positional: [this.args.number],\n                };\n              });\n\n              get value() {\n                return getValue(this.plusOne);\n              }\n            }\n            ```\n            ```js\n            {{this.value}}\n            ```\n\n            It receives three arguments:\n\n            * `context`: The parent context of the helper. When the parent is torn down and\n              removed, the helper will be as well.\n            * `definition`: The definition of the helper.\n            * `computeArgs`: An optional function that produces the arguments to the helper.\n              The function receives the parent context as an argument, and must return an\n              object with a `positional` property that is an array and/or a `named`\n              property that is an object.\n\n            And it returns a Cache instance that contains the most recent value of the\n            helper. You can access the helper using `getValue()` like any other cache. The\n            cache is also destroyable, and using the `destroy()` function on it will cause\n            the helper to be torn down.\n\n            Note that using `getValue()` on helpers that have scheduled effects will not\n            trigger the effect early. Effects will continue to run at their scheduled time.\n\n            @method invokeHelper\n            @for @ember/helper\n            @static\n            @param {object} context The parent context of the helper\n            @param {object} definition The helper definition\n            @param {Function} computeArgs An optional function that produces args\n            @returns\n            @public\n          */var invokeHelper=invokeHelper$1;// SAFETY: we need to provide interfaces that Glint can declaration-merge with\n// to provide appropriate completions. In each case, the imported item is\n// currently typed only as `object`, and we are replacing it with a similarly\n// low-information interface type: these are empty objects which are simply able\n// to be distinguished so that Glint can provide the relevant extensions.\n/* eslint-disable @typescript-eslint/no-empty-interface *//**\n           * Using the `{{hash}}` helper, you can pass objects directly from the template\n           * as an argument to your components.\n           *\n           * ```\n           * import { hash } from '@ember/helper';\n           *\n           * <template>\n           *   {{#each-in (hash givenName='Jen' familyName='Weber') as |key value|}}\n           *     <p>{{key}}: {{value}}</p>\n           *   {{/each-in}}\n           * </template>\n           * ```\n           *\n           * **NOTE:** this example uses the experimental `<template>` feature, which is\n           * the only place you need to import `hash` to use it (it is a built-in when\n           * writing standalone `.hbs` files).\n           */var hash=hash$1;/**\n           * Using the `{{array}}` helper, you can pass arrays directly from the template\n           * as an argument to your components.\n           *\n           * ```js\n           * import { array } from '@ember/helper';\n           *\n           * <template>\n           *   <ul>\n           *   {{#each (array 'Tom Dale' 'Yehuda Katz' @anotherPerson) as |person|}}\n           *     <li>{{person}}</li>\n           *   {{/each}}\n           *   </ul>\n           * </template>\n           *\n           * **NOTE:** this example uses the experimental `<template>` feature, which is\n           * the only place you need to import `array` to use it (it is a built-in when\n           * writing standalone `.hbs` files).\n           * ```\n           */var array=array$1;/**\n           * The `{{concat}}` helper makes it easy to dynamically send a number of\n           * parameters to a component or helper as a single parameter in the format of a\n           * concatenated string.\n           *\n           * For example:\n           *\n           * ```js\n           * import { concat } from '@ember/helper';\n           *\n           * <template>\n           *   {{get @foo (concat \"item\" @index)}}\n           * </template>\n           * ```\n           *\n           * This will display the result of `@foo.item1` when `index` is `1`, and\n           * `this.foo.item2` when `index` is `2`, etc.\n           *\n           * **NOTE:** this example uses the experimental `<template>` feature, which is\n           * the only place you need to import `concat` to use it (it is a built-in when\n           * writing standalone `.hbs` files).\n           */var concat=concat$1;/**\n           * The `{{get}}` helper makes it easy to dynamically look up a property on an\n           * object or an element in an array. The second argument to `{{get}}` can be a\n           * string or a number, depending on the object being accessed.\n           *\n           * To access a property on an object with a string key:\n           *\n           * ```js\n           * import { get } from '@ember/helper';\n           *\n           * <template>\n           *   {{get @someObject \"objectKey\"}}\n           * </template>\n           * ```\n           *\n           * To access the first element in an array:\n           *\n           * ```js\n           * import { get } from '@ember/helper';\n           *\n           * <template>\n           *   {{get @someArray 0}}\n           * </template>\n           * ```\n           *\n           * To access a property on an object with a dynamic key:\n           *\n           * ```js\n           * import { get } from '@ember/helper';\n           *\n           * <template>\n           *   {{get @address @field}}\n           * </template>\n           * ```\n           *\n           * This will display the result of `@foo.item1` when `index` is `1`, and\n           * `this.foo.item2` when `index` is `2`, etc.\n           *\n           * **NOTE:** this example uses the experimental `<template>` feature, which is\n           * the only place you need to import `concat` to use it (it is a built-in when\n           * writing standalone `.hbs` files).\n           */var get=get$1;/**\n           * `{{fn}}` is a helper that receives a function and some arguments, and returns\n           * a new function that combines. This allows you to pass parameters along to\n           * functions in your templates:\n           *\n           * ```js\n           * import { fn } from '@ember/helper';\n           *\n           * function showAlert(message) {\n           *   alert(`The message is: '${message}'`);\n           * }\n           *\n           * <template>\n           *   <button type=\"button\" {{on \"click\" (fn showAlert \"Hello!\")}}>\n           *     Click me!\n           *   </button>\n           * </template>\n           * ```\n           */var fn=fn$1;/**\n           * Use the {{uniqueId}} helper to generate a unique ID string suitable for use as\n           * an ID attribute in the DOM.\n           *\n           * Each invocation of {{uniqueId}} will return a new, unique ID string.\n           * You can use the `let` helper to create an ID that can be reused within a template.\n           *\n           * ```js\n           * import { uniqueId } from '@ember/helper';\n           *\n           * <template>\n           *   {{#let (uniqueId) as |emailId|}}\n           *     <label for={{emailId}}>Email address</label>\n           *     <input id={{emailId}} type=\"email\" />\n           *   {{/let}}\n           * </template>\n           * ```\n           */var uniqueId=uniqueId$2;/* eslint-enable @typescript-eslint/no-empty-interface */var emberHelperIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,array:array,capabilities:capabilities,concat:concat,fn:fn,get:get,hash:hash,invokeHelper:invokeHelper,setHelperManager:setHelperManager,uniqueId:uniqueId},Symbol.toStringTag,{value:'Module'});// NOTE: this uses assignment to *require* that the `glimmerSetModifierManager`\n// is legally assignable to this type, i.e. that variance is properly upheld.\nvar setModifierManager=setModifierManager$1;var emberModifierIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,capabilities:modifierCapabilities,on:on,setModifierManager:setModifierManager},Symbol.toStringTag,{value:'Module'});// This is a legacy location to keep the reexports test happy.\n// Don't add anything new here.\nvar emberObjectInternals=/*#__PURE__*/Object.defineProperty({__proto__:null,cacheFor:getCachedValueFor,guidFor:guidFor},Symbol.toStringTag,{value:'Module'});var emberObjectObservers=/*#__PURE__*/Object.defineProperty({__proto__:null,addObserver:_addObserver,removeObserver:_removeObserver},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/object/promise-proxy-mixin\n          */function tap(proxy,promise){_setProperties(proxy,{isFulfilled:false,isRejected:false});return promise.then(function(value){if(!proxy.isDestroyed&&!proxy.isDestroying){_setProperties(proxy,{content:value,isFulfilled:true});}return value;},function(reason){if(!proxy.isDestroyed&&!proxy.isDestroying){_setProperties(proxy,{reason:reason,isRejected:true});}throw reason;},'Ember: PromiseProxy');}/**\n            A low level mixin making ObjectProxy promise-aware.\n\n            ```javascript\n            import { resolve } from 'rsvp';\n            import $ from 'jquery';\n            import ObjectProxy from '@ember/object/proxy';\n            import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\n\n            let ObjectPromiseProxy = ObjectProxy.extend(PromiseProxyMixin);\n\n            let proxy = ObjectPromiseProxy.create({\n              promise: resolve($.getJSON('/some/remote/data.json'))\n            });\n\n            proxy.then(function(json){\n               // the json\n            }, function(reason) {\n               // the reason why you have no json\n            });\n            ```\n\n            the proxy has bindable attributes which\n            track the promises life cycle\n\n            ```javascript\n            proxy.get('isPending')   //=> true\n            proxy.get('isSettled')  //=> false\n            proxy.get('isRejected')  //=> false\n            proxy.get('isFulfilled') //=> false\n            ```\n\n            When the $.getJSON completes, and the promise is fulfilled\n            with json, the life cycle attributes will update accordingly.\n            Note that $.getJSON doesn't return an ECMA specified promise,\n            it is useful to wrap this with an `RSVP.resolve` so that it behaves\n            as a spec compliant promise.\n\n            ```javascript\n            proxy.get('isPending')   //=> false\n            proxy.get('isSettled')   //=> true\n            proxy.get('isRejected')  //=> false\n            proxy.get('isFulfilled') //=> true\n            ```\n\n            As the proxy is an ObjectProxy, and the json now its content,\n            all the json properties will be available directly from the proxy.\n\n            ```javascript\n            // Assuming the following json:\n            {\n              firstName: 'Stefan',\n              lastName: 'Penner'\n            }\n\n            // both properties will accessible on the proxy\n            proxy.get('firstName') //=> 'Stefan'\n            proxy.get('lastName')  //=> 'Penner'\n            ```\n\n            @class PromiseProxyMixin\n            @public\n          */var PromiseProxyMixin=Mixin.create({reason:null,isPending:computed('isSettled',function(){return!get$2(this,'isSettled');}).readOnly(),isSettled:computed('isRejected','isFulfilled',function(){return get$2(this,'isRejected')||get$2(this,'isFulfilled');}).readOnly(),isRejected:false,isFulfilled:false,promise:computed({get:function get(){throw new Error(\"PromiseProxy's promise must be set\");},set:function set(_key,promise){return tap(this,promise);}}),then:promiseAlias('then'),catch:promiseAlias('catch'),finally:promiseAlias('finally')});function promiseAlias(name){return function(){var promise=get$2(this,'promise');// We need this cast because `Parameters` is deferred so that it is not\n// possible for TS to see it will always produce the right type. However,\n// since `AnyFn` has a rest type, it is allowed. See discussion on [this\n// issue](https://github.com/microsoft/TypeScript/issues/47615).\nreturn promise[name].apply(promise,arguments);};}var emberObjectPromiseProxyMixin=/*#__PURE__*/Object.defineProperty({__proto__:null,default:PromiseProxyMixin},Symbol.toStringTag,{value:'Module'});/**\n          @module @ember/object/proxy\n          *//**\n            `ObjectProxy` forwards all properties not defined by the proxy itself\n            to a proxied `content` object.\n\n            ```javascript\n            import EmberObject from '@ember/object';\n            import ObjectProxy from '@ember/object/proxy';\n\n            let exampleObject = EmberObject.create({\n              name: 'Foo'\n            });\n\n            let exampleProxy = ObjectProxy.create({\n              content: exampleObject\n            });\n\n            // Access and change existing properties\n            exampleProxy.get('name');          // 'Foo'\n            exampleProxy.set('name', 'Bar');\n            exampleObject.get('name');         // 'Bar'\n\n            // Create new 'description' property on `exampleObject`\n            exampleProxy.set('description', 'Foo is a whizboo baz');\n            exampleObject.get('description');  // 'Foo is a whizboo baz'\n            ```\n\n            While `content` is unset, setting a property to be delegated will throw an\n            Error.\n\n            ```javascript\n            import ObjectProxy from '@ember/object/proxy';\n\n            let exampleProxy = ObjectProxy.create({\n              content: null,\n              flag: null\n            });\n            exampleProxy.set('flag', true);\n            exampleProxy.get('flag');         // true\n            exampleProxy.get('foo');          // undefined\n            exampleProxy.set('foo', 'data');  // throws Error\n            ```\n\n            Delegated properties can be bound to and will change when content is updated.\n\n            Computed properties on the proxy itself can depend on delegated properties.\n\n            ```javascript\n            import { computed } from '@ember/object';\n            import ObjectProxy from '@ember/object/proxy';\n\n            ProxyWithComputedProperty = ObjectProxy.extend({\n              fullName: computed('firstName', 'lastName', function() {\n                var firstName = this.get('firstName'),\n                    lastName = this.get('lastName');\n                if (firstName && lastName) {\n                  return firstName + ' ' + lastName;\n                }\n                return firstName || lastName;\n              })\n            });\n\n            let exampleProxy = ProxyWithComputedProperty.create();\n\n            exampleProxy.get('fullName');  // undefined\n            exampleProxy.set('content', {\n              firstName: 'Tom', lastName: 'Dale'\n            }); // triggers property change for fullName on proxy\n\n            exampleProxy.get('fullName');  // 'Tom Dale'\n            ```\n\n            @class ObjectProxy\n            @extends EmberObject\n            @uses Ember.ProxyMixin\n            @public\n          */// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar ObjectProxy=/*#__PURE__*/function(_FrameworkObject3){function ObjectProxy(){_classCallCheck(this,ObjectProxy);return _callSuper(this,ObjectProxy,arguments);}_inherits(ObjectProxy,_FrameworkObject3);return _createClass(ObjectProxy);}(FrameworkObject);ObjectProxy.PrototypeMixin.reopen(ProxyMixin);var emberObjectProxy=/*#__PURE__*/Object.defineProperty({__proto__:null,default:ObjectProxy},Symbol.toStringTag,{value:'Module'});/**\n            @module @ember/renderer\n            @public\n          */var emberRendererIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,renderSettled:renderSettled},Symbol.toStringTag,{value:'Module'});var emberRoutingIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,LinkTo:LinkTo},Symbol.toStringTag,{value:'Module'});var emberRoutingLibEngines=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});var QueryParams=/*#__PURE__*/_createClass(function QueryParams(){var values=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;_classCallCheck(this,QueryParams);_defineProperty(this,\"values\",void 0);_defineProperty(this,\"isQueryParams\",true);this.values=values;});var emberRoutingLibQueryParams=/*#__PURE__*/Object.defineProperty({__proto__:null,default:QueryParams},Symbol.toStringTag,{value:'Module'});var emberRoutingLibRouteInfo=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});var emberRoutingLocation=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});var emberRoutingRouteInfo=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});var emberRoutingTransition=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});var emberRunloopprivateBackburner=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});// (UN)SAFETY: the public API is that people can import and use this (and indeed\n// it is emitted as part of Ember's build!), so we define it as having the type\n// which makes that work. However, in practice it is supplied by the build,\n// *for* the build, and will *not* be present at runtime, so the actual value\n// here is `undefined` in prod; in dev it is a function which throws a somewhat\n// nicer error. This is janky, but... here we are.\nvar __emberTemplateCompiler;var compileTemplate=function compileTemplate(){var _emberTemplateCompil;if(!__emberTemplateCompiler){throw new Error('Attempted to call `compileTemplate` without first loading the runtime template compiler.');}return(_emberTemplateCompil=__emberTemplateCompiler).compile.apply(_emberTemplateCompil,arguments);};var precompileTemplate;{precompileTemplate=function precompileTemplate(){throw new Error('Attempted to call `precompileTemplate` at runtime, but this API is meant to be used at compile time. You should use `compileTemplate` instead.');};}function __registerTemplateCompiler(c){__emberTemplateCompiler=c;}var emberTemplateCompilationIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,get __emberTemplateCompiler(){return __emberTemplateCompiler;},__registerTemplateCompiler:__registerTemplateCompiler,compileTemplate:compileTemplate,get precompileTemplate(){return precompileTemplate;}},Symbol.toStringTag,{value:'Module'});// NOTE: this intentionally *only* exports the *type* `SafeString`, not its\n// value, since it should not be constructed by users.\nvar emberTemplateIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,htmlSafe:htmlSafe,isHTMLSafe:isHTMLSafe},Symbol.toStringTag,{value:'Module'});function run(fn){if(!_getCurrentRunLoop()){return run$1(fn);}else{return fn();}}var emberTestingLibTestRun=/*#__PURE__*/Object.defineProperty({__proto__:null,default:run},Symbol.toStringTag,{value:'Module'});var lastPromise=null;var TestPromise=/*#__PURE__*/function(_rsvp$Promise){function TestPromise(executor,label){var _this103;_classCallCheck(this,TestPromise);_this103=_callSuper(this,TestPromise,[executor,label]);lastPromise=_this103;return _this103;}_inherits(TestPromise,_rsvp$Promise);return _createClass(TestPromise,[{key:\"then\",value:function then(onFulfilled,onRejected,label){var normalizedOnFulfilled=typeof onFulfilled==='function'?function(result){return isolate(onFulfilled,result);}:undefined;return _superPropGet(TestPromise,\"then\",this,3)([normalizedOnFulfilled,onRejected,label]);}}]);}(rsvp.Promise);/**\n            This returns a thenable tailored for testing.  It catches failed\n            `onSuccess` callbacks and invokes the `Ember.Test.adapter.exception`\n            callback in the last chained then.\n\n            This method should be returned by async helpers such as `wait`.\n\n            @public\n            @for Ember.Test\n            @method promise\n            @param {Function} resolver The function used to resolve the promise.\n            @param {String} label An optional string for identifying the promise.\n          */function promise(resolver,label){var fullLabel=\"Ember.Test.promise: \".concat(label||'<Unknown Promise>');return new TestPromise(resolver,fullLabel);}/**\n            Replacement for `Ember.RSVP.resolve`\n            The only difference is this uses\n            an instance of `Ember.Test.Promise`\n\n            @public\n            @for Ember.Test\n            @method resolve\n            @param {Mixed} The value to resolve\n            @since 1.2.0\n          */function resolve(result,label){return TestPromise.resolve(result,label);}function getLastPromise(){return lastPromise;}// This method isolates nested async methods\n// so that they don't conflict with other last promises.\n//\n// 1. Set `Ember.Test.lastPromise` to null\n// 2. Invoke method\n// 3. Return the last promise created during method\nfunction isolate(onFulfilled,result){// Reset lastPromise for nested helpers\nlastPromise=null;var value=onFulfilled(result);var promise=lastPromise;lastPromise=null;// If the method returned a promise\n// return that promise. If not,\n// return the last async helper's promise\nif(value&&value instanceof TestPromise||!promise){return value;}else{return run(function(){return resolve(promise).then(function(){return value;});});}}var emberTestingLibTestPromise=/*#__PURE__*/Object.defineProperty({__proto__:null,default:TestPromise,getLastPromise:getLastPromise,promise:promise,resolve:resolve},Symbol.toStringTag,{value:'Module'});var helpers={};/**\n           @module @ember/test\n          *//**\n            `registerHelper` is used to register a test helper that will be injected\n            when `App.injectTestHelpers` is called.\n\n            The helper method will always be called with the current Application as\n            the first parameter.\n\n            For example:\n\n            ```javascript\n            import { registerHelper } from '@ember/test';\n            import { run } from '@ember/runloop';\n\n            registerHelper('boot', function(app) {\n              run(app, app.advanceReadiness);\n            });\n            ```\n\n            This helper can later be called without arguments because it will be\n            called with `app` as the first parameter.\n\n            ```javascript\n            import Application from '@ember/application';\n\n            App = Application.create();\n            App.injectTestHelpers();\n            boot();\n            ```\n\n            @public\n            @for @ember/test\n            @static\n            @method registerHelper\n            @param {String} name The name of the helper method to add.\n            @param {Function} helperMethod\n            @param options {Object}\n          */function registerHelper$1(name,helperMethod){helpers[name]={method:helperMethod,meta:{wait:false}};}/**\n            `registerAsyncHelper` is used to register an async test helper that will be injected\n            when `App.injectTestHelpers` is called.\n\n            The helper method will always be called with the current Application as\n            the first parameter.\n\n            For example:\n\n            ```javascript\n            import { registerAsyncHelper } from '@ember/test';\n            import { run } from '@ember/runloop';\n\n            registerAsyncHelper('boot', function(app) {\n              run(app, app.advanceReadiness);\n            });\n            ```\n\n            The advantage of an async helper is that it will not run\n            until the last async helper has completed.  All async helpers\n            after it will wait for it complete before running.\n\n\n            For example:\n\n            ```javascript\n            import { registerAsyncHelper } from '@ember/test';\n\n            registerAsyncHelper('deletePost', function(app, postId) {\n              click('.delete-' + postId);\n            });\n\n            // ... in your test\n            visit('/post/2');\n            deletePost(2);\n            visit('/post/3');\n            deletePost(3);\n            ```\n\n            @public\n            @for @ember/test\n            @method registerAsyncHelper\n            @param {String} name The name of the helper method to add.\n            @param {Function} helperMethod\n            @since 1.2.0\n          */function registerAsyncHelper$1(name,helperMethod){helpers[name]={method:helperMethod,meta:{wait:true}};}/**\n            Remove a previously added helper method.\n\n            Example:\n\n            ```javascript\n            import { unregisterHelper } from '@ember/test';\n\n            unregisterHelper('wait');\n            ```\n\n            @public\n            @method unregisterHelper\n            @static\n            @for @ember/test\n            @param {String} name The helper to remove.\n          */function unregisterHelper$1(name){delete helpers[name];// SAFETY: This isn't necessarily a safe thing to do, but in terms of the immediate types here\n// it won't error.\ndelete TestPromise.prototype[name];}var emberTestingLibTestHelpers=/*#__PURE__*/Object.defineProperty({__proto__:null,helpers:helpers,registerAsyncHelper:registerAsyncHelper$1,registerHelper:registerHelper$1,unregisterHelper:unregisterHelper$1},Symbol.toStringTag,{value:'Module'});var callbacks$1=[];/**\n            Used to register callbacks to be fired whenever `App.injectTestHelpers`\n            is called.\n\n            The callback will receive the current application as an argument.\n\n            Example:\n\n            ```javascript\n            import $ from 'jquery';\n\n            Ember.Test.onInjectHelpers(function() {\n              $(document).ajaxSend(function() {\n                Test.pendingRequests++;\n              });\n\n              $(document).ajaxComplete(function() {\n                Test.pendingRequests--;\n              });\n            });\n            ```\n\n            @public\n            @for Ember.Test\n            @method onInjectHelpers\n            @param {Function} callback The function to be called.\n          */function onInjectHelpers(callback){callbacks$1.push(callback);}function invokeInjectHelpersCallbacks(app){var _iterator80=_createForOfIteratorHelper(callbacks$1),_step80;try{for(_iterator80.s();!(_step80=_iterator80.n()).done;){var _callback9=_step80.value;_callback9(app);}}catch(err){_iterator80.e(err);}finally{_iterator80.f();}}var emberTestingLibTestOnInjectHelpers=/*#__PURE__*/Object.defineProperty({__proto__:null,callbacks:callbacks$1,invokeInjectHelpersCallbacks:invokeInjectHelpersCallbacks,onInjectHelpers:onInjectHelpers},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/test\n          */var contexts=[];var callbacks=[];/**\n             This allows ember-testing to play nicely with other asynchronous\n             events, such as an application that is waiting for a CSS3\n             transition or an IndexDB transaction. The waiter runs periodically\n             after each async helper (i.e. `click`, `andThen`, `visit`, etc) has executed,\n             until the returning result is truthy. After the waiters finish, the next async helper\n             is executed and the process repeats.\n\n             For example:\n\n             ```javascript\n             import { registerWaiter } from '@ember/test';\n\n             registerWaiter(function() {\n               return myPendingTransactions() === 0;\n             });\n             ```\n             The `context` argument allows you to optionally specify the `this`\n             with which your callback will be invoked.\n\n             For example:\n\n             ```javascript\n             import { registerWaiter } from '@ember/test';\n\n             registerWaiter(MyDB, MyDB.hasPendingTransactions);\n             ```\n\n             @public\n             @for @ember/test\n             @static\n             @method registerWaiter\n             @param {Object} context (optional)\n             @param {Function} callback\n             @since 1.2.0\n          */function registerWaiter$1(){var checkedCallback;var checkedContext;if(arguments.length===1){checkedContext=null;checkedCallback=arguments.length<=0?undefined:arguments[0];}else{checkedContext=arguments.length<=0?undefined:arguments[0];checkedCallback=arguments.length<=1?undefined:arguments[1];}if(indexOf(checkedContext,checkedCallback)>-1){return;}contexts.push(checkedContext);callbacks.push(checkedCallback);}/**\n             `unregisterWaiter` is used to unregister a callback that was\n             registered with `registerWaiter`.\n\n             @public\n             @for @ember/test\n             @static\n             @method unregisterWaiter\n             @param {Object} context (optional)\n             @param {Function} callback\n             @since 1.2.0\n          */function unregisterWaiter$1(context,callback){if(!callbacks.length){return;}if(arguments.length===1){callback=context;context=null;}var i=indexOf(context,callback);if(i===-1){return;}contexts.splice(i,1);callbacks.splice(i,1);}/**\n            Iterates through each registered test waiter, and invokes\n            its callback. If any waiter returns false, this method will return\n            true indicating that the waiters have not settled yet.\n\n            This is generally used internally from the acceptance/integration test\n            infrastructure.\n\n            @public\n            @for @ember/test\n            @static\n            @method checkWaiters\n          */function checkWaiters(){if(!callbacks.length){return false;}for(var i=0;i<callbacks.length;i++){var _context4=contexts[i];var _callback10=callbacks[i];// SAFETY: The loop ensures that this exists\nif(!_callback10.call(_context4)){return true;}}return false;}function indexOf(context,callback){for(var i=0;i<callbacks.length;i++){if(callbacks[i]===callback&&contexts[i]===context){return i;}}return-1;}var emberTestingLibTestWaiters=/*#__PURE__*/Object.defineProperty({__proto__:null,checkWaiters:checkWaiters,registerWaiter:registerWaiter$1,unregisterWaiter:unregisterWaiter$1},Symbol.toStringTag,{value:'Module'});var adapter;function getAdapter(){return adapter;}function setAdapter(value){adapter=value;if(value&&typeof value.exception==='function'){setDispatchOverride(adapterDispatch);}else{setDispatchOverride(null);}}function asyncStart(){if(adapter){adapter.asyncStart();}}function asyncEnd(){if(adapter){adapter.asyncEnd();}}function adapterDispatch(error){adapter.exception(error);// @ts-expect-error Normally unreachable\nconsole.error(error.stack);// eslint-disable-line no-console\n}var emberTestingLibTestAdapter=/*#__PURE__*/Object.defineProperty({__proto__:null,asyncEnd:asyncEnd,asyncStart:asyncStart,getAdapter:getAdapter,setAdapter:setAdapter},Symbol.toStringTag,{value:'Module'});/**\n            @module ember\n          *//**\n            This is a container for an assortment of testing related functionality:\n\n            * Choose your default test adapter (for your framework of choice).\n            * Register/Unregister additional test helpers.\n            * Setup callbacks to be fired when the test helpers are injected into\n              your application.\n\n            @class Test\n            @namespace Ember\n            @public\n          */var Test={/**\n              Hash containing all known test helpers.\n               @property _helpers\n              @private\n              @since 1.7.0\n            */_helpers:helpers,registerHelper:registerHelper$1,registerAsyncHelper:registerAsyncHelper$1,unregisterHelper:unregisterHelper$1,onInjectHelpers:onInjectHelpers,Promise:TestPromise,promise:promise,resolve:resolve,registerWaiter:registerWaiter$1,unregisterWaiter:unregisterWaiter$1,checkWaiters:checkWaiters};/**\n           Used to allow ember-testing to communicate with a specific testing\n           framework.\n\n           You can manually set it before calling `App.setupForTesting()`.\n\n           Example:\n\n           ```javascript\n           Ember.Test.adapter = MyCustomAdapter.create()\n           ```\n\n           If you do not set it, ember-testing will default to `Ember.Test.QUnitAdapter`.\n\n           @public\n           @for Ember.Test\n           @property adapter\n           @type {Class} The adapter to be used.\n           @default Ember.Test.QUnitAdapter\n          */Object.defineProperty(Test,'adapter',{get:getAdapter,set:setAdapter});var emberTestingLibTest=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Test},Symbol.toStringTag,{value:'Module'});/**\n           @module @ember/test\n          *//**\n            The primary purpose of this class is to create hooks that can be implemented\n            by an adapter for various test frameworks.\n\n            @class TestAdapter\n            @public\n          */var Adapter=EmberObject.extend({/**\n              This callback will be called whenever an async operation is about to start.\n               Override this to call your framework's methods that handle async\n              operations.\n               @public\n              @method asyncStart\n            */asyncStart:function asyncStart(){},/**\n              This callback will be called whenever an async operation has completed.\n               @public\n              @method asyncEnd\n            */asyncEnd:function asyncEnd(){},/**\n              Override this method with your testing framework's false assertion.\n              This function is called whenever an exception occurs causing the testing\n              promise to fail.\n               QUnit example:\n               ```javascript\n                exception: function(error) {\n                  ok(false, error);\n                };\n              ```\n               @public\n              @method exception\n              @param {String} error The exception to be raised.\n            */exception:function exception(error){throw error;}});var emberTestingLibAdaptersAdapter=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Adapter},Symbol.toStringTag,{value:'Module'});/* globals QUnit */function isVeryOldQunit(obj){return obj!=null&&typeof obj.stop==='function';}/**\n             @module ember\n          *//**\n            This class implements the methods defined by TestAdapter for the\n            QUnit testing framework.\n\n            @class QUnitAdapter\n            @namespace Ember.Test\n            @extends TestAdapter\n            @public\n          */var QUnitAdapter=Adapter.extend({init:function init(){this.doneCallbacks=[];},asyncStart:function asyncStart(){if(isVeryOldQunit(QUnit)){// very old QUnit version\n// eslint-disable-next-line qunit/no-qunit-stop\nQUnit.stop();}else{this.doneCallbacks.push(QUnit.config.current?QUnit.config.current.assert.async():null);}},asyncEnd:function asyncEnd(){// checking for QUnit.stop here (even though we _need_ QUnit.start) because\n// QUnit.start() still exists in QUnit 2.x (it just throws an error when calling\n// inside a test context)\nif(isVeryOldQunit(QUnit)){QUnit.start();}else{var done=this.doneCallbacks.pop();// This can be null if asyncStart() was called outside of a test\nif(done){done();}}},exception:function exception(error){QUnit.config.current.assert.ok(false,inspect(error));}});var emberTestingLibAdaptersQunit=/*#__PURE__*/Object.defineProperty({__proto__:null,default:QUnitAdapter},Symbol.toStringTag,{value:'Module'});/* global self *//**\n            Sets Ember up for testing. This is useful to perform\n            basic setup steps in order to unit test.\n\n            Use `App.setupForTesting` to perform integration tests (full\n            application testing).\n\n            @method setupForTesting\n            @namespace Ember\n            @since 1.5.0\n            @private\n          */function _setupForTesting(){setTesting(true);var adapter=getAdapter();// if adapter is not manually set default to QUnit\nif(!adapter){setAdapter(typeof self.QUnit==='undefined'?Adapter.create():QUnitAdapter.create());}}var emberTestingLibSetupForTesting=/*#__PURE__*/Object.defineProperty({__proto__:null,default:_setupForTesting},Symbol.toStringTag,{value:'Module'});Application.reopen({/**\n             This property contains the testing helpers for the current application. These\n             are created once you call `injectTestHelpers` on your `Application`\n             instance. The included helpers are also available on the `window` object by\n             default, but can be used from this object on the individual application also.\n               @property testHelpers\n              @type {Object}\n              @default {}\n              @public\n            */testHelpers:{},/**\n             This property will contain the original methods that were registered\n             on the `helperContainer` before `injectTestHelpers` is called.\n              When `removeTestHelpers` is called, these methods are restored to the\n             `helperContainer`.\n               @property originalMethods\n              @type {Object}\n              @default {}\n              @private\n              @since 1.3.0\n            */originalMethods:{},/**\n            This property indicates whether or not this application is currently in\n            testing mode. This is set when `setupForTesting` is called on the current\n            application.\n             @property testing\n            @type {Boolean}\n            @default false\n            @since 1.3.0\n            @public\n            */testing:false,/**\n              This hook defers the readiness of the application, so that you can start\n              the app when your tests are ready to run. It also sets the router's\n              location to 'none', so that the window's location will not be modified\n              (preventing both accidental leaking of state between tests and interference\n              with your testing framework). `setupForTesting` should only be called after\n              setting a custom `router` class (for example `App.Router = Router.extend(`).\n               Example:\n               ```\n              App.setupForTesting();\n              ```\n               @method setupForTesting\n              @public\n            */setupForTesting:function setupForTesting(){_setupForTesting();this.testing=true;this.resolveRegistration('router:main').reopen({location:'none'});},/**\n              This will be used as the container to inject the test helpers into. By\n              default the helpers are injected into `window`.\n               @property helperContainer\n              @type {Object} The object to be used for test helpers.\n              @default window\n              @since 1.2.0\n              @private\n            */helperContainer:null,/**\n              This injects the test helpers into the `helperContainer` object. If an object is provided\n              it will be used as the helperContainer. If `helperContainer` is not set it will default\n              to `window`. If a function of the same name has already been defined it will be cached\n              (so that it can be reset if the helper is removed with `unregisterHelper` or\n              `removeTestHelpers`).\n               Any callbacks registered with `onInjectHelpers` will be called once the\n              helpers have been injected.\n               Example:\n              ```\n              App.injectTestHelpers();\n              ```\n               @method injectTestHelpers\n              @public\n            */injectTestHelpers:function injectTestHelpers(helperContainer){if(helperContainer){this.helperContainer=helperContainer;}else{this.helperContainer=window;}this.reopen({willDestroy:function willDestroy(){this._super.apply(this,arguments);this.removeTestHelpers();}});this.testHelpers={};for(var _name37 in helpers){// SAFETY: It is safe to access a property on an object\nthis.originalMethods[_name37]=this.helperContainer[_name37];// SAFETY: It is not quite as safe to do this, but it _seems_ to be ok.\nthis.testHelpers[_name37]=this.helperContainer[_name37]=helper(this,_name37);// SAFETY: We checked that it exists\nprotoWrap(TestPromise.prototype,_name37,helper(this,_name37),helpers[_name37].meta.wait);}invokeInjectHelpersCallbacks(this);},/**\n              This removes all helpers that have been registered, and resets and functions\n              that were overridden by the helpers.\n               Example:\n               ```javascript\n              App.removeTestHelpers();\n              ```\n               @public\n              @method removeTestHelpers\n            */removeTestHelpers:function removeTestHelpers(){if(!this.helperContainer){return;}for(var _name38 in helpers){this.helperContainer[_name38]=this.originalMethods[_name38];// SAFETY: This is a weird thing, but it's not technically unsafe here.\ndelete TestPromise.prototype[_name38];delete this.testHelpers[_name38];delete this.originalMethods[_name38];}}});// This method is no longer needed\n// But still here for backwards compatibility\n// of helper chaining\nfunction protoWrap(proto,name,callback,isAsync){// SAFETY: This isn't entirely safe, but it _seems_ to be ok.\nproto[name]=function(){for(var _len100=arguments.length,args=new Array(_len100),_key92=0;_key92<_len100;_key92++){args[_key92]=arguments[_key92];}if(isAsync){return callback.apply(this,args);}else{// SAFETY: This is not actually safe.\nreturn this.then(function(){return callback.apply(this,args);});}};}function helper(app,name){var helper=helpers[name];!helper&&assert$1(\"[BUG] Missing helper: \".concat(name),helper);var fn=helper.method;var meta=helper.meta;if(!meta.wait){return function(){for(var _len101=arguments.length,args=new Array(_len101),_key93=0;_key93<_len101;_key93++){args[_key93]=arguments[_key93];}return fn.apply(app,[app].concat(args));};}return function(){for(var _len102=arguments.length,args=new Array(_len102),_key94=0;_key94<_len102;_key94++){args[_key94]=arguments[_key94];}var lastPromise=run(function(){return resolve(getLastPromise());});// wait for last helper's promise to resolve and then\n// execute. To be safe, we need to tell the adapter we're going\n// asynchronous here, because fn may not be invoked before we\n// return.\nasyncStart();return lastPromise.then(function(){return fn.apply(app,[app].concat(args));}).finally(asyncEnd);};}var emberTestingLibExtApplication=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});rsvp.configure('async',function(callback,promise){// if schedule will cause autorun, we need to inform adapter\n_backburner.schedule('actions',function(){return callback(promise);});});var emberTestingLibExtRsvp=/*#__PURE__*/Object.defineProperty({__proto__:null,default:rsvp},Symbol.toStringTag,{value:'Module'});function andThen(app,callback){var wait=app.testHelpers['wait'];!wait&&assert$1('[BUG] Missing wait helper',wait);return wait(callback(app));}var emberTestingLibHelpersAndThen=/*#__PURE__*/Object.defineProperty({__proto__:null,default:andThen},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            Returns the current path.\n\n          Example:\n\n          ```javascript\n          function validateURL() {\n            equal(currentPath(), 'some.path.index', \"correct path was transitioned into.\");\n          }\n\n          click('#some-link-id').then(validateURL);\n          ```\n\n          @method currentPath\n          @return {Object} The currently active path.\n          @since 1.5.0\n          @public\n          */function currentPath(app){!app.__container__&&assert$1('[BUG] app.__container__ is not set',app.__container__);var routingService=app.__container__.lookup('service:-routing');!(routingService instanceof RoutingService)&&assert$1('[BUG] service:-routing is not a RoutingService',routingService instanceof RoutingService);return get$2(routingService,'currentPath');}var emberTestingLibHelpersCurrentPath=/*#__PURE__*/Object.defineProperty({__proto__:null,default:currentPath},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            Returns the currently active route name.\n\n          Example:\n\n          ```javascript\n          function validateRouteName() {\n            equal(currentRouteName(), 'some.path', \"correct route was transitioned into.\");\n          }\n          visit('/some/path').then(validateRouteName)\n          ```\n\n          @method currentRouteName\n          @return {Object} The name of the currently active route.\n          @since 1.5.0\n          @public\n          */function currentRouteName(app){!app.__container__&&assert$1('[BUG] app.__container__ is not set',app.__container__);var routingService=app.__container__.lookup('service:-routing');!(routingService instanceof RoutingService)&&assert$1('[BUG] service:-routing is not a RoutingService',routingService instanceof RoutingService);return get$2(routingService,'currentRouteName');}var emberTestingLibHelpersCurrentRouteName=/*#__PURE__*/Object.defineProperty({__proto__:null,default:currentRouteName},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            Returns the current URL.\n\n          Example:\n\n          ```javascript\n          function validateURL() {\n            equal(currentURL(), '/some/path', \"correct URL was transitioned into.\");\n          }\n\n          click('#some-link-id').then(validateURL);\n          ```\n\n          @method currentURL\n          @return {Object} The currently active URL.\n          @since 1.5.0\n          @public\n          */function currentURL(app){!app.__container__&&assert$1('[BUG] app.__container__ is not set',app.__container__);var router=app.__container__.lookup('router:main');!(router instanceof EmberRouter)&&assert$1('[BUG] router:main is not a Router',router instanceof EmberRouter);var location=get$2(router,'location');!(typeof location!=='string')&&assert$1('[BUG] location is still a string',typeof location!=='string');return location.getURL();}var emberTestingLibHelpersCurrentUrl=/*#__PURE__*/Object.defineProperty({__proto__:null,default:currentURL},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */var resume;/**\n           Resumes a test paused by `pauseTest`.\n\n           @method resumeTest\n           @return {void}\n           @public\n          */function resumeTest(){!resume&&assert$1('Testing has not been paused. There is nothing to resume.',resume);resume();resume=undefined;}/**\n           Pauses the current test - this is useful for debugging while testing or for test-driving.\n           It allows you to inspect the state of your application at any point.\n           Example (The test will pause before clicking the button):\n\n           ```javascript\n           visit('/')\n           return pauseTest();\n           click('.btn');\n           ```\n\n           You may want to turn off the timeout before pausing.\n\n           qunit (timeout available to use as of 2.4.0):\n\n           ```\n           visit('/');\n           assert.timeout(0);\n           return pauseTest();\n           click('.btn');\n           ```\n\n           mocha (timeout happens automatically as of ember-mocha v0.14.0):\n\n           ```\n           visit('/');\n           this.timeout(0);\n           return pauseTest();\n           click('.btn');\n           ```\n\n\n           @since 1.9.0\n           @method pauseTest\n           @return {Object} A promise that will never resolve\n           @public\n          */function pauseTest(){info('Testing paused. Use `resumeTest()` to continue.');return new rsvp.Promise(function(resolve){resume=resolve;},'TestAdapter paused promise');}var emberTestingLibHelpersPauseTest=/*#__PURE__*/Object.defineProperty({__proto__:null,pauseTest:pauseTest,resumeTest:resumeTest},Symbol.toStringTag,{value:'Module'});/**\n            Loads a route, sets up any controllers, and renders any templates associated\n            with the route as though a real user had triggered the route change while\n            using your app.\n\n            Example:\n\n            ```javascript\n            visit('posts/index').then(function() {\n              // assert something\n            });\n            ```\n\n            @method visit\n            @param {String} url the name of the route\n            @return {RSVP.Promise<undefined>}\n            @public\n          */function visit(app,url){!app.__container__&&assert$1('[BUG] Missing container',app.__container__);var router=app.__container__.lookup('router:main');!(router instanceof EmberRouter)&&assert$1('[BUG] router:main is not a Router',router instanceof EmberRouter);var shouldHandleURL=false;app.boot().then(function(){!(typeof router.location!=='string')&&assert$1('[BUG] router.location is still a string',typeof router.location!=='string');router.location.setURL(url);if(shouldHandleURL){!app.__deprecatedInstance__&&assert$1(\"[BUG] __deprecatedInstance__ isn't set\",app.__deprecatedInstance__);run$1(app.__deprecatedInstance__,'handleURL',url);}});if(app._readinessDeferrals>0){// SAFETY: This should be safe, though it is odd.\nrouter.initialURL=url;run$1(app,'advanceReadiness');delete router.initialURL;}else{shouldHandleURL=true;}var wait=app.testHelpers['wait'];!wait&&assert$1('[BUG] missing wait helper',wait);return wait();}var emberTestingLibHelpersVisit=/*#__PURE__*/Object.defineProperty({__proto__:null,default:visit},Symbol.toStringTag,{value:'Module'});var requests=[];function pendingRequests(){return requests.length;}function clearPendingRequests(){requests.length=0;}function incrementPendingRequests(_,xhr){requests.push(xhr);}function decrementPendingRequests(_,xhr){setTimeout(function(){for(var i=0;i<requests.length;i++){if(xhr===requests[i]){requests.splice(i,1);break;}}},0);}var emberTestingLibTestPendingRequests=/*#__PURE__*/Object.defineProperty({__proto__:null,clearPendingRequests:clearPendingRequests,decrementPendingRequests:decrementPendingRequests,incrementPendingRequests:incrementPendingRequests,pendingRequests:pendingRequests},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          *//**\n            Causes the run loop to process any pending events. This is used to ensure that\n            any async operations from other helpers (or your assertions) have been processed.\n\n            This is most often used as the return value for the helper functions (see 'click',\n            'fillIn','visit',etc). However, there is a method to register a test helper which\n            utilizes this method without the need to actually call `wait()` in your helpers.\n\n            The `wait` helper is built into `registerAsyncHelper` by default. You will not need\n            to `return app.testHelpers.wait();` - the wait behavior is provided for you.\n\n            Example:\n\n            ```javascript\n            import { registerAsyncHelper } from '@ember/test';\n\n            registerAsyncHelper('loginUser', function(app, username, password) {\n              visit('secured/path/here')\n                .fillIn('#username', username)\n                .fillIn('#password', password)\n                .click('.submit');\n            });\n            ```\n\n            @method wait\n            @param {Object} value The value to be returned.\n            @return {RSVP.Promise<any>} Promise that resolves to the passed value.\n            @public\n            @since 1.0.0\n          */function wait(app,value){return new rsvp.Promise(function(resolve){!app.__container__&&assert$1('[BUG] Missing container',app.__container__);var router=app.__container__.lookup('router:main');!(router instanceof EmberRouter)&&assert$1('[BUG] Expected router:main to be a subclass of Ember Router',router instanceof EmberRouter);// Every 10ms, poll for the async thing to have finished\nvar watcher=setInterval(function(){// 1. If the router is loading, keep polling\nvar routerIsLoading=router._routerMicrolib&&Boolean(router._routerMicrolib.activeTransition);if(routerIsLoading){return;}// 2. If there are pending Ajax requests, keep polling\nif(pendingRequests()){return;}// 3. If there are scheduled timers or we are inside of a run loop, keep polling\nif(_hasScheduledTimers()||_getCurrentRunLoop()){return;}if(checkWaiters()){return;}// Stop polling\nclearInterval(watcher);// Synchronously resolve the promise\nrun$1(null,resolve,value);},10);});}var emberTestingLibHelpersWait=/*#__PURE__*/Object.defineProperty({__proto__:null,default:wait},Symbol.toStringTag,{value:'Module'});registerAsyncHelper$1('visit',visit);registerAsyncHelper$1('wait',wait);registerAsyncHelper$1('andThen',andThen);registerAsyncHelper$1('pauseTest',pauseTest);registerHelper$1('currentRouteName',currentRouteName);registerHelper$1('currentPath',currentPath);registerHelper$1('currentURL',currentURL);registerHelper$1('resumeTest',resumeTest);var emberTestingLibHelpers=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});var name='deferReadiness in `testing` mode';onLoad('Ember.Application',function(ApplicationClass){if(!ApplicationClass.initializers[name]){ApplicationClass.initializer({name:name,initialize:function initialize(application){if(application.testing){application.deferReadiness();}}});}});var emberTestingLibInitializers=/*#__PURE__*/Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:'Module'});// to setup initializer\nvar emberTestingLibPublicApi=/*#__PURE__*/Object.defineProperty({__proto__:null,Adapter:Adapter,QUnitAdapter:QUnitAdapter,Test:Test,setupForTesting:_setupForTesting},Symbol.toStringTag,{value:'Module'});var registerAsyncHelper;var registerHelper;var registerWaiter;var unregisterHelper;var unregisterWaiter;var _impl;var testingNotAvailableMessage=function testingNotAvailableMessage(){throw new Error('Attempted to use test utilities, but `ember-testing` was not included');};registerAsyncHelper=testingNotAvailableMessage;registerHelper=testingNotAvailableMessage;registerWaiter=testingNotAvailableMessage;unregisterHelper=testingNotAvailableMessage;unregisterWaiter=testingNotAvailableMessage;function registerTestImplementation(impl){var Test=impl.Test;registerAsyncHelper=Test.registerAsyncHelper;registerHelper=Test.registerHelper;registerWaiter=Test.registerWaiter;unregisterHelper=Test.unregisterHelper;unregisterWaiter=Test.unregisterWaiter;_impl=impl;}var emberTestIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,get _impl(){return _impl;},get registerAsyncHelper(){return registerAsyncHelper;},get registerHelper(){return registerHelper;},registerTestImplementation:registerTestImplementation,get registerWaiter(){return registerWaiter;},get unregisterHelper(){return unregisterHelper;},get unregisterWaiter(){return unregisterWaiter;}},Symbol.toStringTag,{value:'Module'});registerTestImplementation(emberTestingLibPublicApi);var emberTestingIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,Adapter:Adapter,QUnitAdapter:QUnitAdapter,Test:Test,setupForTesting:_setupForTesting},Symbol.toStringTag,{value:'Module'});var emberTestAdapter=/*#__PURE__*/Object.defineProperty({__proto__:null,default:Adapter},Symbol.toStringTag,{value:'Module'});/* This file is generated by build/debug.js */function opcodeMetadata(op,isMachine){return null;}function debugSlice(context,start,end){}function logOpcode(type,params){}function debug(c,op,isMachine){}// TODO: How do these map onto constant and machine types?\nnew Array(Op.Size).fill(null),new Array(Op.Size).fill(null);var OPERAND_TYPES=[\"u32\",\"i32\",\"owner\",\"handle\",\"str\",\"option-str\",\"array\",\"str-array\",\"bool\",\"primitive\",\"register\",\"unknown\",\"symbol-table\",\"scope\"];function normalize(key,input){var name;if(void 0===input.format)throw new Error(\"Missing format in \".concat(JSON.stringify(input)));name=Array.isArray(input.format)?input.format[0]:input.format;var ops=Array.isArray(input.format)?function(input){if(!Array.isArray(input))throw new Error(\"Expected operands array, got \".concat(JSON.stringify(input)));return input.map(op);}(input.format.slice(1)):[];return{name:name,mnemonic:key,before:null,stackChange:stackChange(input[\"operand-stack\"]),ops:ops,operands:ops.length,check:!0!==input.skip};}function stackChange(stack){if(void 0===stack)return 0;var before=stack[0],after=stack[1];return hasRest(before)||hasRest(after)?null:after.length-before.length;}function hasRest(input){if(!Array.isArray(input))throw new Error(\"Unexpected stack entry: \".concat(JSON.stringify(input)));return input.some(function(s){return\"...\"===s.slice(-3);});}function op(input){var _input$split=input.split(\":\"),_input$split2=_slicedToArray(_input$split,2),name=_input$split2[0],type=_input$split2[1];if(s=type,-1!==OPERAND_TYPES.indexOf(s))return{name:name,type:type};throw new Error(\"Expected operand, found \".concat(JSON.stringify(input)));var s;}function normalizeAll(parsed){return{machine:normalizeParsed(parsed.machine),syscall:normalizeParsed(parsed.syscall)};}function normalizeParsed(parsed){var out=Object.create(null);for(var _i21=0,_Object$entries3=Object.entries(parsed);_i21<_Object$entries3.length;_i21++){var _Object$entries3$_i=_slicedToArray(_Object$entries3[_i21],2),key=_Object$entries3$_i[0],value=_Object$entries3$_i[1];out[key]=normalize(key,value);}return out;}function buildEnum(name,parsed,offset,max){var last,e=[\"export enum \".concat(name,\" {\")];Object.values(parsed).forEach(function(value,i){e.push(\"  \".concat(value.name,\" = \").concat(offset+i,\",\")),last=i;}),e.push(\"  Size = \".concat(last+offset+1,\",\")),e.push(\"}\");var predicate,enumString=e.join(\"\\n\");return predicate=max?strip(_templateObject7||(_templateObject7=_taggedTemplateLiteral([\"\\n      export function is\",\"(value: number): value is \",\" {\\n        return value >= \",\" && value <= \",\";\\n      }\\n    \"])),name,name,offset,max):strip(_templateObject8||(_templateObject8=_taggedTemplateLiteral([\"\\n      export function is\",\"(value: number): value is \",\" {\\n        return value >= \",\";\\n      }\\n    \"])),name,name,offset),{enumString:enumString,predicate:predicate};}function strip(strings){var out=\"\";for(var _len103=arguments.length,args=new Array(_len103>1?_len103-1:0),_key95=1;_key95<_len103;_key95++){args[_key95-1]=arguments[_key95];}for(var i=0;i<strings.length;i++)out+=\"\".concat(strings[i]).concat(void 0!==args[i]?String(args[i]):\"\");// eslint-disable-next-line regexp/no-super-linear-backtracking\nout=/^[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*?\\n?((?:[\\0-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*?)[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/.exec(out)[1];var min=Number.MAX_SAFE_INTEGER;var _iterator81=_createForOfIteratorHelper(out.split(\"\\n\")),_step81;try{for(_iterator81.s();!(_step81=_iterator81.n()).done;){var line=_step81.value;var leading=/^[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*/.exec(line)[0].length;min=Math.min(min,leading);}}catch(err){_iterator81.e(err);}finally{_iterator81.f();}var stripped=\"\";var _iterator82=_createForOfIteratorHelper(out.split(\"\\n\")),_step82;try{for(_iterator82.s();!(_step82=_iterator82.n()).done;){var _line2=_step82.value;stripped+=_line2.slice(min)+\"\\n\";}}catch(err){_iterator82.e(err);}finally{_iterator82.f();}return stripped;}var META_KIND=[\"METADATA\",\"MACHINE_METADATA\"];function buildSingleMeta(kind,all,key){return\"\".concat(kind,\"[\").concat(\"MACHINE_METADATA\"===kind?\"MachineOp\":\"Op\",\".\").concat(all[key].name,\"] = \").concat(stringify(all[key],0),\";\");}function stringify(o,pad){if(\"object\"!=_typeof(o)||null===o)return\"string\"==typeof o?\"'\".concat(o,\"'\"):JSON.stringify(o);if(Array.isArray(o))return\"[\".concat(o.map(function(v){return stringify(v,pad);}).join(\", \"),\"]\");var out=[\"{\"];for(var _i22=0,_Object$keys3=Object.keys(o);_i22<_Object$keys3.length;_i22++){var key=_Object$keys3[_i22];out.push(\"\".concat(\" \".repeat(pad+2)).concat(key,\": \").concat(stringify(o[key],pad+2),\",\"));}return out.push(\"\".concat(\" \".repeat(pad),\"}\")),out.join(\"\\n\");}function buildMetas(kind,all){var out=[];for(var _i23=0,_Object$keys4=Object.keys(all);_i23<_Object$keys4.length;_i23++){var key=_Object$keys4[_i23];out.push(buildSingleMeta(kind,all,key));}return out.join(\"\\n\\n\");}var NoopChecker=/*#__PURE__*/function(){function NoopChecker(){_classCallCheck(this,NoopChecker);}return _createClass(NoopChecker,[{key:\"validate\",value:function validate(value){return!0;}},{key:\"expected\",value:function expected(){return\"<noop>\";}}]);}();function wrap(checker){return new NoopChecker();}function CheckInstanceof(Class){return new NoopChecker();}function CheckOption(checker){return new NoopChecker();}function CheckMaybe(checker){return new NoopChecker();}function CheckInterface(obj){return new NoopChecker();}function CheckArray(obj){return new NoopChecker();}function CheckDict(obj){return new NoopChecker();}function defaultMessage(value,expected){return\"Got \".concat(value,\", expected:\\n\").concat(expected);}function check(value,checker){var message=arguments.length>2&&arguments[2]!==undefined?arguments[2]:defaultMessage;return value;}function recordStackSize(sp){}var CheckPrimitive=new NoopChecker(),CheckFunction=new NoopChecker(),CheckNumber=new NoopChecker(),CheckBoolean=new NoopChecker(),CheckHandle=new NoopChecker(),CheckString=new NoopChecker(),CheckUndefined=new NoopChecker(),CheckUnknown=new NoopChecker(),CheckSafeString=new NoopChecker(),CheckObject=new NoopChecker();function CheckOr(left,right){return new NoopChecker();}var CheckBlockSymbolTable=new NoopChecker(),CheckProgramSymbolTable=new NoopChecker(),CheckElement=new NoopChecker(),CheckDocumentFragment=new NoopChecker(),CheckNode=new NoopChecker();var glimmerDebug=/*#__PURE__*/Object.defineProperty({__proto__:null,CheckArray:CheckArray,CheckBlockSymbolTable:CheckBlockSymbolTable,CheckBoolean:CheckBoolean,CheckDict:CheckDict,CheckDocumentFragment:CheckDocumentFragment,CheckElement:CheckElement,CheckFunction:CheckFunction,CheckHandle:CheckHandle,CheckInstanceof:CheckInstanceof,CheckInterface:CheckInterface,CheckMaybe:CheckMaybe,CheckNode:CheckNode,CheckNumber:CheckNumber,CheckObject:CheckObject,CheckOption:CheckOption,CheckOr:CheckOr,CheckPrimitive:CheckPrimitive,CheckProgramSymbolTable:CheckProgramSymbolTable,CheckSafeString:CheckSafeString,CheckString:CheckString,CheckUndefined:CheckUndefined,CheckUnknown:CheckUnknown,META_KIND:META_KIND,OPERAND_TYPES:OPERAND_TYPES,buildEnum:buildEnum,buildMetas:buildMetas,buildSingleMeta:buildSingleMeta,check:check,debug:debug,debugSlice:debugSlice,logOpcode:logOpcode,normalize:normalize,normalizeAll:normalizeAll,normalizeParsed:normalizeParsed,opcodeMetadata:opcodeMetadata,recordStackSize:recordStackSize,strip:strip,wrap:wrap},Symbol.toStringTag,{value:'Module'});var DEBUG=false;var CI=false;var glimmerEnv=/*#__PURE__*/Object.defineProperty({__proto__:null,CI:CI,DEBUG:DEBUG},Symbol.toStringTag,{value:'Module'});/**\n            In order to tell Ember a value might change, we need to mark it as trackable.\n            Trackable values are values that:\n\n            - Can change over their component’s lifetime and\n            - Should cause Ember to rerender if and when they change\n\n            We can do this by marking the field with the `@tracked` decorator.\n\n            @module @glimmer/tracking\n            @public\n          *//**\n            Marks a property as tracked. By default, values that are rendered in Ember app\n            templates are _static_, meaning that updates to them won't cause the\n            application to rerender. Marking a property as tracked means that when that\n            property changes, any templates that used that property, directly or\n            indirectly, will rerender. For instance, consider this component:\n\n            ```handlebars\n            <div>Count: {{this.count}}</div>\n            <div>Times Ten: {{this.timesTen}}</div>\n            <div>\n              <button {{on \"click\" this.plusOne}}>\n                Plus One\n              </button>\n            </div>\n            ```\n\n            ```javascript\n            import Component from '@glimmer/component';\n            import { tracked } from '@glimmer/tracking';\n            import { action } from '@ember/object';\n\n            export default class CounterComponent extends Component {\n              @tracked count = 0;\n\n              get timesTen() {\n                return this.count * 10;\n              }\n\n              @action\n              plusOne() {\n                this.count += 1;\n              }\n            }\n            ```\n\n            Both the `{{this.count}}` and the `{{this.timesTen}}` properties in the\n            template will update whenever the button is clicked. Any tracked properties\n            that are used in any way to calculate a value that is used in the template\n            will cause a rerender when updated - this includes through method calls and\n            other means:\n\n            ```javascript\n            import Component from '@glimmer/component';\n            import { tracked } from '@glimmer/tracking';\n\n            class Entry {\n              @tracked name;\n              @tracked phoneNumber;\n\n              constructor(name, phoneNumber) {\n                this.name = name;\n                this.phoneNumber = phoneNumber;\n              }\n            }\n\n            export default class PhoneBookComponent extends Component {\n              entries = [\n                new Entry('Pizza Palace', 5551234),\n                new Entry('1st Street Cleaners', 5554321),\n                new Entry('Plants R Us', 5552468),\n              ];\n\n              // Any usage of this property will update whenever any of the names in the\n              // entries arrays are updated\n              get names() {\n                return this.entries.map(e => e.name);\n              }\n\n              // Any usage of this property will update whenever any of the numbers in the\n              // entries arrays are updated\n              get numbers() {\n                return this.getFormattedNumbers();\n              }\n\n              getFormattedNumbers() {\n                return this.entries\n                  .map(e => e.phoneNumber)\n                  .map(number => {\n                    let numberString = '' + number;\n\n                    return numberString.slice(0, 3) + '-' + numberString.slice(3);\n                  });\n              }\n            }\n            ```\n\n            It's important to note that setting tracked properties will always trigger an\n            update, even if the property is set to the same value as it was before.\n\n            ```js\n            let entry = new Entry('Pizza Palace', 5551234);\n            // if entry was used when rendering, this would cause a rerender, even though\n            // the name is being set to the same value as it was before\n            entry.name = entry.name;\n            ```\n\n            `tracked` can also be used with the classic Ember object model in a similar\n            manner to classic computed properties:\n\n            ```javascript\n            import EmberObject from '@ember/object';\n            import { tracked } from '@glimmer/tracking';\n\n            const Entry = EmberObject.extend({\n              name: tracked(),\n              phoneNumber: tracked()\n            });\n            ```\n\n            Often this is unnecessary, but to ensure robust auto-tracking behavior it is\n            advisable to mark tracked state appropriately wherever possible.\n            This form of `tracked` also accepts an optional configuration object\n            containing either an initial `value` or an `initializer` function (but not\n            both).\n\n            ```javascript\n            import EmberObject from '@ember/object';\n            import { tracked } from '@glimmer/tracking';\n\n            const Entry = EmberObject.extend({\n              name: tracked({ value: 'Zoey' }),\n              favoriteSongs: tracked({\n                initializer: () => ['Raspberry Beret', 'Time After Time']\n              })\n            });\n            ```\n\n            @method tracked\n            @static\n            @for @glimmer/tracking\n            @public\n          *//**\n            The `@cached` decorator can be used on getters in order to cache the return\n            value of the getter. This is useful when a getter is expensive and used very\n            often. For instance, in this guest list class, we have the `sortedGuests`\n            getter that sorts the guests alphabetically:\n\n            ```js\n            import { tracked } from '@glimmer/tracking';\n\n            class GuestList {\n              @tracked guests = ['Zoey', 'Tomster'];\n\n              get sortedGuests() {\n                return this.guests.slice().sort()\n              }\n            }\n            ```\n\n            Every time `sortedGuests` is accessed, a new array will be created and sorted,\n            because JavaScript getters do not cache by default. When the guest list is\n            small, like the one in the example, this is not a problem. However, if the guest\n            list were to grow very large, it would mean that we would be doing a large\n            amount of work each time we accessed `sortedGetters`. With `@cached`, we can\n            cache the value instead:\n\n            ```js\n            import { tracked, cached } from '@glimmer/tracking';\n\n            class GuestList {\n              @tracked guests = ['Zoey', 'Tomster'];\n\n              @cached\n              get sortedGuests() {\n                return this.guests.slice().sort()\n              }\n            }\n            ```\n\n            Now the `sortedGuests` getter will be cached based on _autotracking_. It will\n            only rerun and create a new sorted array when the `guests` tracked property is\n            updated.\n\n            In general, you should avoid using `@cached` unless you have confirmed that the\n            getter you are decorating is computationally expensive. `@cached` adds a small\n            amount of overhead to the getter, making it more expensive. While this overhead\n            is small, if `@cached` is overused it can add up to a large impact overall in\n            your app. Many getters and tracked properties are only accessed once, rendered,\n            and then never rerendered, so adding `@cached` when it is unnecessary can\n            negatively impact performance.\n\n            @method cached\n            @static\n            @for @glimmer/tracking\n            @public\n           */var glimmerTrackingIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,cached:cached,tracked:tracked},Symbol.toStringTag,{value:'Module'});var glimmerTrackingPrimitivesCache=/*#__PURE__*/Object.defineProperty({__proto__:null,createCache:createCache,getValue:getValue,isConst:isConst},Symbol.toStringTag,{value:'Module'});/**\n          @module ember\n          */// eslint-disable-next-line @typescript-eslint/no-namespace\nvar Ember;(function(_Ember){_Ember.isNamespace=true;function toString(){return'Ember';}_Ember.toString=toString;_Ember.Container=Container;_Ember.Registry=Registry;// ****@ember/-internals/glimmer****\n// Partially re-exported from @glimmer/manager\n_Ember._setComponentManager=setComponentManager;_Ember._componentManagerCapabilities=componentCapabilities;_Ember._modifierManagerCapabilities=modifierCapabilities;_Ember.meta=meta;_Ember._createCache=createCache;_Ember._cacheGetValue=getValue;_Ember._cacheIsConst=isConst;_Ember._descriptor=nativeDescDecorator;_Ember._getPath=_getPath;_Ember._setClassicDecorator=setClassicDecorator;_Ember._tracked=tracked;_Ember.beginPropertyChanges=_beginPropertyChanges;_Ember.changeProperties=changeProperties;_Ember.endPropertyChanges=_endPropertyChanges;_Ember.hasListeners=hasListeners;_Ember.libraries=LIBRARIES;_Ember._ContainerProxyMixin=ContainerProxyMixin;_Ember._ProxyMixin=ProxyMixin;_Ember._RegistryProxyMixin=RegistryProxyMixin;_Ember.ActionHandler=ActionHandler;_Ember.Comparable=Comparable;_Ember.ComponentLookup=ComponentLookup;_Ember.EventDispatcher=EventDispatcher;_Ember._Cache=Cache;_Ember.GUID_KEY=GUID_KEY;_Ember.canInvoke=canInvoke;_Ember.generateGuid=generateGuid;_Ember.guidFor=guidFor;_Ember.uuid=uuid$1;_Ember.wrap=wrap$1;_Ember.getOwner=getOwner;_Ember.onLoad=onLoad;_Ember.runLoadHooks=runLoadHooks;_Ember.setOwner=setOwner;_Ember.Application=Application;// ****@ember/application/instance****\n_Ember.ApplicationInstance=ApplicationInstance;// // ****@ember/application/namespace****\n_Ember.Namespace=Namespace;// ****@ember/array****\n_Ember.A=_A2;_Ember.Array=EmberArray;_Ember.NativeArray=NativeArray;_Ember.isArray=isArray$2;_Ember.makeArray=makeArray;_Ember.MutableArray=MutableArray;// ****@ember/array/proxy****\n_Ember.ArrayProxy=ArrayProxy;// ****@ember/canary-features****\n_Ember.FEATURES=_objectSpread({isEnabled:isEnabled},FEATURES);_Ember._Input=Input;_Ember.Component=Component;// // ****@ember/component/helper****\n_Ember.Helper=Helper;// ****@ember/controller****\n_Ember.Controller=Controller;_Ember.ControllerMixin=ControllerMixin;// ****@ember/debug****\n_Ember._captureRenderTree=captureRenderTree;_Ember.assert=assert$1;_Ember.warn=warn;_Ember.debug=debug$2;_Ember.deprecate=deprecate$1;_Ember.deprecateFunc=deprecateFunc;_Ember.runInDebug=runInDebug;_Ember.inspect=inspect;_Ember.Debug={registerDeprecationHandler:registerHandler$1,registerWarnHandler:registerHandler,// ****@ember/-internals/metal****\nisComputed:isComputed};_Ember.ContainerDebugAdapter=ContainerDebugAdapter;// ****@ember/debug/data-adapter****\n_Ember.DataAdapter=DataAdapter;// ****@ember/destroyable****\n_Ember._assertDestroyablesDestroyed=assertDestroyablesDestroyed;_Ember._associateDestroyableChild=associateDestroyableChild;_Ember._enableDestroyableTracking=enableDestroyableTracking;_Ember._isDestroying=isDestroying;_Ember._isDestroyed=isDestroyed;_Ember._registerDestructor=registerDestructor;_Ember._unregisterDestructor=unregisterDestructor;_Ember.destroy=_destroy;_Ember.Engine=Engine;// ****@ember/engine/instance****\n_Ember.EngineInstance=EngineInstance;// ****@ember/enumerable****\n_Ember.Enumerable=Enumerable;// ****@ember/enumerable/mutable****\n_Ember.MutableEnumerable=MutableEnumerable;// ****@ember/instrumentation****\n/** @private */_Ember.instrument=instrument;_Ember.subscribe=subscribe;_Ember.Instrumentation={instrument:instrument,subscribe:subscribe,unsubscribe:unsubscribe,reset:reset};_Ember.Object=EmberObject;_Ember._action=action$1;_Ember.computed=computed;_Ember.defineProperty=defineProperty;_Ember.get=get$2;_Ember.getProperties=_getProperties;_Ember.notifyPropertyChange=_notifyPropertyChange;_Ember.observer=observer;_Ember.set=_set5;_Ember.trySet=trySet;_Ember.setProperties=_setProperties;_Ember.cacheFor=getCachedValueFor;_Ember._dependentKeyCompat=dependentKeyCompat;_Ember.ComputedProperty=ComputedProperty;_Ember.expandProperties=expandProperties;_Ember.CoreObject=CoreObject;// ****@ember/object/evented****\n_Ember.Evented=Evented;_Ember.on=on$3;_Ember.addListener=addListener;_Ember.removeListener=removeListener;_Ember.sendEvent=sendEvent;_Ember.Mixin=Mixin;_Ember.mixin=mixin;_Ember.Observable=Observable;// ****@ember/object/observers****\n_Ember.addObserver=_addObserver;_Ember.removeObserver=_removeObserver;_Ember.PromiseProxyMixin=PromiseProxyMixin;// ****@ember/object/proxy****\n_Ember.ObjectProxy=ObjectProxy;// ****@ember/routing/-internals****\n_Ember.RouterDSL=DSLImpl;_Ember.controllerFor=controllerFor;_Ember.generateController=_generateController;_Ember.generateControllerFactory=generateControllerFactory;_Ember.HashLocation=HashLocation;// ****@ember/routing/history-location****\n_Ember.HistoryLocation=HistoryLocation;// ****@ember/routing/none-location****\n_Ember.NoneLocation=NoneLocation;// ****@ember/routing/route****\n_Ember.Route=Route;// ****@ember/routing/router****\n_Ember.Router=EmberRouter;// // ****@ember/runloop****\n_Ember.run=run$1;_Ember.Service=Service;// ****@ember/utils****\n_Ember.compare=compare;_Ember.isBlank=isBlank;_Ember.isEmpty=isEmpty;_Ember.isEqual=isEqual;_Ember.isNone=isNone;_Ember.isPresent=isPresent;_Ember.typeOf=typeOf;_Ember.VERSION=Version;_Ember.ViewUtils={// ****@ember/-internals/views****\ngetChildViews:getChildViews,getElementView:getElementView,getRootViews:getRootViews,getViewBounds:getViewBounds,getViewBoundingClientRect:getViewBoundingClientRect,getViewClientRects:getViewClientRects,getViewElement:getViewElement,isSimpleClick:isSimpleClick,// ****@ember/-internals/glimmer****\nisSerializationFirstNode:isSerializationFirstNode};_Ember._getComponentTemplate=getComponentTemplate;_Ember._helperManagerCapabilities=helperCapabilities;_Ember._setComponentTemplate=setComponentTemplate;_Ember._setHelperManager=setHelperManager$1;_Ember._setModifierManager=setModifierManager$1;_Ember._templateOnlyComponent=templateOnlyComponent;_Ember._invokeHelper=invokeHelper$1;_Ember._hash=hash$1;_Ember._array=array$1;_Ember._concat=concat$1;_Ember._get=get$1;_Ember._on=on$1;_Ember._fn=fn$1;_Ember._Backburner=Backburner;// // ****@ember/controller, @ember/service****\n/**\n              Namespace for injection helper methods.\n               @class inject\n              @namespace Ember\n              @static\n              @public\n            */function inject$1(){// uses `globalThis` to avoid clobbering with `Ember.Object` in TS namespace\nassert$1(\"Injected properties must be created through helpers, see '\".concat(globalThis.Object.keys(inject$1).map(function(k){return\"'inject.\".concat(k,\"'\");}).join(' or '),\"'\"));}_Ember.inject=inject$1;// ****@ember/controller****\ninject$1.controller=inject;// ****@ember/service****\ninject$1.service=service;_Ember.__loader={get require(){return globalThis.require;},get define(){return globalThis.define;},get registry(){var _g$requirejs$entries,_g$requirejs;var g=globalThis;return(_g$requirejs$entries=(_g$requirejs=g.requirejs)===null||_g$requirejs===void 0?void 0:_g$requirejs.entries)!==null&&_g$requirejs$entries!==void 0?_g$requirejs$entries:g.require.entries;}};// ------------------------------------------------------------------------ //\n// These properties are assigned to the namespace with getters (and, in some\n// cases setters) with `Object.defineProperty` below.\n// ------------------------------------------------------------------------ //\n// ****@ember/-internals/environment****\n/**\n              A function may be assigned to `Ember.onerror` to be called when Ember\n              internals encounter an error. This is useful for specialized error handling\n              and reporting code.\n               ```javascript\n               Ember.onerror = function(error) {\n                const payload = {\n                  stack: error.stack,\n                  otherInformation: 'whatever app state you want to provide'\n                };\n                 fetch('/report-error', {\n                  method: 'POST',\n                  body: JSON.stringify(payload)\n                });\n              };\n              ```\n               Internally, `Ember.onerror` is used as Backburner's error handler.\n               @event onerror\n              @for Ember\n              @param {Error} error the error object\n              @public\n            */// ****@ember/-internals/error-handling****\n/**\n              Whether searching on the global for new Namespace instances is enabled.\n               This is only exported here as to not break any addons.  Given the new\n              visit API, you will have issues if you treat this as a indicator of\n              booted.\n               Internally this is only exposing a flag in Namespace.\n               @property BOOTED\n              @for Ember\n              @type Boolean\n              @private\n            *//**\n              Global hash of shared templates. This will automatically be populated\n              by the build tools so that you can store your Handlebars templates in\n              separate files that get loaded into JavaScript at buildtime.\n               @property TEMPLATES\n              @for Ember\n              @type Object\n              @private\n            */})(Ember||(Ember={}));Object.defineProperty(Ember,'ENV',{get:getENV,enumerable:false});Object.defineProperty(Ember,'lookup',{get:getLookup,set:setLookup,enumerable:false});Object.defineProperty(Ember,'onerror',{get:getOnerror,set:setOnerror,enumerable:false});Object.defineProperty(Ember,'testing',{get:isTesting,set:setTesting,enumerable:false});Object.defineProperty(Ember,'BOOTED',{configurable:false,enumerable:false,get:isSearchDisabled,set:setSearchDisabled});Object.defineProperty(Ember,'TEMPLATES',{get:getTemplates,set:setTemplates,configurable:false,enumerable:false});Object.defineProperty(Ember,'TEMPLATES',{get:getTemplates,set:setTemplates,configurable:false,enumerable:false});// ****@ember/debug****\nObject.defineProperty(Ember,'testing',{get:isTesting,set:setTesting,enumerable:false});runLoadHooks('Ember.Application',Application);var EmberHandlebars={template:templateFactory,Utils:{escapeExpression:escapeExpression}};var EmberHTMLBars={template:templateFactory};function defineEmberTemplateCompilerLazyLoad(key){Object.defineProperty(Ember,key,{configurable:true,enumerable:true,get:function get(){if(__emberTemplateCompiler){EmberHTMLBars.precompile=EmberHandlebars.precompile=__emberTemplateCompiler.precompile;EmberHTMLBars.compile=EmberHandlebars.compile=compileTemplate;Object.defineProperty(Ember,'HTMLBars',{configurable:true,writable:true,enumerable:true,value:EmberHTMLBars});Object.defineProperty(Ember,'Handlebars',{configurable:true,writable:true,enumerable:true,value:EmberHandlebars});}return key==='Handlebars'?EmberHandlebars:EmberHTMLBars;}});}defineEmberTemplateCompilerLazyLoad('HTMLBars');defineEmberTemplateCompilerLazyLoad('Handlebars');// do this to ensure that Ember.Test is defined properly on the global\n// if it is present.\nfunction defineEmberTestingLazyLoad(key){Object.defineProperty(Ember,key,{configurable:true,enumerable:true,get:function get(){if(_impl){var _impl2=_impl,_Test=_impl2.Test,_Adapter=_impl2.Adapter,_QUnitAdapter=_impl2.QUnitAdapter,setupForTesting=_impl2.setupForTesting;// @ts-expect-error We should not do this\n_Test.Adapter=_Adapter;// @ts-expect-error We should not do this\n_Test.QUnitAdapter=_QUnitAdapter;Object.defineProperty(Ember,'Test',{configurable:true,writable:true,enumerable:true,value:_Test});Object.defineProperty(Ember,'setupForTesting',{configurable:true,writable:true,enumerable:true,value:setupForTesting});return key==='Test'?_Test:setupForTesting;}return undefined;}});}defineEmberTestingLazyLoad('Test');defineEmberTestingLazyLoad('setupForTesting');// @ts-expect-error Per types, runLoadHooks requires a second parameter. Should we loosen types?\nrunLoadHooks('Ember');// the special \"export import\" syntax above doesn't actually transpile correctly\n// under all build configurations. It seems to work if you're simultaneously\n// transpiling ESM to AMD but breaks when keeping ESM output.\n//\n// This is a workaround to ensure that the runtime is actually included.\nEmber.RSVP=rsvp;var doNotUseThis=Ember;var index=new Proxy(doNotUseThis,{get:function get(target,key,receiver){// We don't have symbol exports, so this is probably fine.\nif(typeof key==='string'){deprecateUntil(\"importing \".concat(key,\" from the 'ember' barrel file is deprecated.\"),DEPRECATIONS.DEPRECATE_IMPORT_EMBER(key));}return Reflect.get(target,key,receiver);},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(target,key){if(typeof key==='string'){deprecateUntil(\"importing \".concat(key,\" from the 'ember' barrel file is deprecated.\"),DEPRECATIONS.DEPRECATE_IMPORT_EMBER(key));}return Object.getOwnPropertyDescriptor(target,key);}});var emberIndex=/*#__PURE__*/Object.defineProperty({__proto__:null,default:index},Symbol.toStringTag,{value:'Module'});/* eslint-disable */d('ember-testing/index',emberTestingIndex);d('ember-testing/lib/adapters/adapter',emberTestingLibAdaptersAdapter);d('ember-testing/lib/adapters/qunit',emberTestingLibAdaptersQunit);d('ember-testing/lib/ext/application',emberTestingLibExtApplication);d('ember-testing/lib/ext/rsvp',emberTestingLibExtRsvp);d('ember-testing/lib/helpers',emberTestingLibHelpers);d('ember-testing/lib/helpers/and_then',emberTestingLibHelpersAndThen);d('ember-testing/lib/helpers/current_path',emberTestingLibHelpersCurrentPath);d('ember-testing/lib/helpers/current_route_name',function(){return emberTestingLibHelpersCurrentRouteName;});d('ember-testing/lib/helpers/current_url',emberTestingLibHelpersCurrentUrl);d('ember-testing/lib/helpers/pause_test',emberTestingLibHelpersPauseTest);d('ember-testing/lib/helpers/visit',emberTestingLibHelpersVisit);d('ember-testing/lib/helpers/wait',emberTestingLibHelpersWait);d('ember-testing/lib/initializers',emberTestingLibInitializers);d('ember-testing/lib/public-api',emberTestingLibPublicApi);d('ember-testing/lib/setup_for_testing',emberTestingLibSetupForTesting);d('ember-testing/lib/test',emberTestingLibTest);d('ember-testing/lib/test/adapter',emberTestingLibTestAdapter);d('ember-testing/lib/test/helpers',emberTestingLibTestHelpers);d('ember-testing/lib/test/on_inject_helpers',emberTestingLibTestOnInjectHelpers);d('ember-testing/lib/test/pending_requests',emberTestingLibTestPendingRequests);d('ember-testing/lib/test/promise',emberTestingLibTestPromise);d('ember-testing/lib/test/run',emberTestingLibTestRun);d('ember-testing/lib/test/waiters',emberTestingLibTestWaiters);/* eslint-disable */d('@ember/-internals/browser-environment/index',emberinternalsBrowserEnvironmentIndex);d('@ember/-internals/container/index',emberinternalsContainerIndex);d('@ember/-internals/deprecations/index',emberinternalsDeprecationsIndex);d('@ember/-internals/environment/index',emberinternalsEnvironmentIndex);d('@ember/-internals/error-handling/index',emberinternalsErrorHandlingIndex);d('@ember/-internals/glimmer/index',emberinternalsGlimmerIndex);d('@ember/-internals/meta/index',emberinternalsMetaIndex);d('@ember/-internals/meta/lib/meta',emberinternalsMetaLibMeta);d('@ember/-internals/metal/index',emberinternalsMetalIndex);d('@ember/-internals/owner/index',emberinternalsOwnerIndex);d('@ember/-internals/routing/index',emberinternalsRoutingIndex);d('@ember/-internals/runtime/index',emberinternalsRuntimeIndex);d('@ember/-internals/runtime/lib/ext/rsvp',emberinternalsRuntimeLibExtRsvp);d('@ember/-internals/runtime/lib/mixins/-proxy',emberinternalsRuntimeLibMixinsproxy);d('@ember/-internals/runtime/lib/mixins/action_handler',emberinternalsRuntimeLibMixinsActionHandler);d('@ember/-internals/runtime/lib/mixins/comparable',emberinternalsRuntimeLibMixinsComparable);d('@ember/-internals/runtime/lib/mixins/container_proxy',emberinternalsRuntimeLibMixinsContainerProxy);d('@ember/-internals/runtime/lib/mixins/registry_proxy',emberinternalsRuntimeLibMixinsRegistryProxy);d('@ember/-internals/runtime/lib/mixins/target_action_support',emberinternalsRuntimeLibMixinsTargetActionSupport);d('@ember/-internals/string/index',emberinternalsStringIndex);d('@ember/-internals/utility-types/index',emberinternalsUtilityTypesIndex);d('@ember/-internals/utils/index',emberinternalsUtilsIndex);d('@ember/-internals/views/index',emberinternalsViewsIndex);d('@ember/-internals/views/lib/compat/attrs',emberinternalsViewsLibCompatAttrs);d('@ember/-internals/views/lib/compat/fallback-view-registry',emberinternalsViewsLibCompatFallbackViewRegistry);d('@ember/-internals/views/lib/component_lookup',emberinternalsViewsLibComponentLookup);d('@ember/-internals/views/lib/mixins/action_support',emberinternalsViewsLibMixinsActionSupport);d('@ember/-internals/views/lib/mixins/child_views_support',emberinternalsViewsLibMixinsChildViewsSupport);d('@ember/-internals/views/lib/mixins/class_names_support',emberinternalsViewsLibMixinsClassNamesSupport);d('@ember/-internals/views/lib/mixins/view_state_support',emberinternalsViewsLibMixinsViewStateSupport);d('@ember/-internals/views/lib/mixins/view_support',emberinternalsViewsLibMixinsViewSupport);d('@ember/-internals/views/lib/system/action_manager',emberinternalsViewsLibSystemActionManager);d('@ember/-internals/views/lib/system/event_dispatcher',emberinternalsViewsLibSystemEventDispatcher);d('@ember/-internals/views/lib/system/utils',emberinternalsViewsLibSystemUtils);d('@ember/-internals/views/lib/views/core_view',emberinternalsViewsLibViewsCoreView);d('@ember/-internals/views/lib/views/states',emberinternalsViewsLibViewsStates);d('@ember/application/index',emberApplicationIndex);d('@ember/application/instance',emberApplicationInstance);d('@ember/application/lib/lazy_load',emberApplicationLibLazyLoad);d('@ember/application/namespace',emberApplicationNamespace);d('@ember/array/-internals',emberArrayinternals);d('@ember/array/index',emberArrayIndex);d('@ember/array/lib/make-array',emberArrayLibMakeArray);d('@ember/array/mutable',emberArrayMutable);d('@ember/array/proxy',emberArrayProxy);d('@ember/canary-features/index',emberCanaryFeaturesIndex);d('@ember/component/helper',emberComponentHelper);d('@ember/component/index',emberComponentIndex);d('@ember/component/template-only',emberComponentTemplateOnly);d('@ember/controller/index',emberControllerIndex);d('@ember/debug/index',emberDebugIndex);d('@ember/debug/lib/capture-render-tree',emberDebugLibCaptureRenderTree);d('@ember/debug/lib/deprecate',emberDebugLibDeprecate);d('@ember/debug/lib/handlers',emberDebugLibHandlers);d('@ember/debug/lib/inspect',emberDebugLibInspect);d('@ember/debug/lib/testing',emberDebugLibTesting);d('@ember/debug/lib/warn',emberDebugLibWarn);d('@ember/debug/container-debug-adapter',emberDebugContainerDebugAdapter);d('@ember/debug/data-adapter',emberDebugDataAdapter);d('@ember/deprecated-features/index',emberDeprecatedFeaturesIndex);d('@ember/destroyable/index',emberDestroyableIndex);d('@ember/engine/index',emberEngineIndex);d('@ember/engine/instance',emberEngineInstance);d('@ember/engine/lib/engine-parent',emberEngineLibEngineParent);d('@ember/enumerable/index',emberEnumerableIndex);d('@ember/enumerable/mutable',emberEnumerableMutable);d('@ember/helper/index',emberHelperIndex);d('@ember/instrumentation/index',emberInstrumentationIndex);d('@ember/modifier/index',emberModifierIndex);d('@ember/object/-internals',emberObjectinternals);d('@ember/object/compat',emberObjectCompat);d('@ember/object/computed',emberObjectComputed);d('@ember/object/core',emberObjectCore);d('@ember/object/evented',emberObjectEvented);d('@ember/object/events',emberObjectEvents);d('@ember/object/index',emberObjectIndex);d('@ember/object/internals',emberObjectInternals);d('@ember/object/lib/computed/computed_macros',emberObjectLibComputedComputedMacros);d('@ember/object/lib/computed/reduce_computed_macros',emberObjectLibComputedReduceComputedMacros);d('@ember/object/mixin',emberObjectMixin);d('@ember/object/observable',emberObjectObservable);d('@ember/object/observers',emberObjectObservers);d('@ember/object/promise-proxy-mixin',emberObjectPromiseProxyMixin);d('@ember/object/proxy',emberObjectProxy);d('@ember/owner/index',emberOwnerIndex);d('@ember/renderer/index',emberRendererIndex);d('@ember/routing/-internals',emberRoutinginternals);d('@ember/routing/hash-location',emberRoutingHashLocation);d('@ember/routing/history-location',emberRoutingHistoryLocation);d('@ember/routing/index',emberRoutingIndex);d('@ember/routing/lib/cache',emberRoutingLibCache);d('@ember/routing/lib/controller_for',emberRoutingLibControllerFor);d('@ember/routing/lib/dsl',emberRoutingLibDsl);d('@ember/routing/lib/engines',emberRoutingLibEngines);d('@ember/routing/lib/generate_controller',emberRoutingLibGenerateController);d('@ember/routing/lib/location-utils',emberRoutingLibLocationUtils);d('@ember/routing/lib/query_params',emberRoutingLibQueryParams);d('@ember/routing/lib/route-info',emberRoutingLibRouteInfo);d('@ember/routing/lib/router_state',emberRoutingLibRouterState);d('@ember/routing/lib/routing-service',emberRoutingLibRoutingService);d('@ember/routing/lib/utils',emberRoutingLibUtils);d('@ember/routing/location',emberRoutingLocation);d('@ember/routing/none-location',emberRoutingNoneLocation);d('@ember/routing/route-info',emberRoutingRouteInfo);d('@ember/routing/route',emberRoutingRoute);d('@ember/routing/router-service',emberRoutingRouterService);d('@ember/routing/router',emberRoutingRouter);d('@ember/routing/transition',emberRoutingTransition);d('@ember/runloop/-private/backburner',emberRunloopprivateBackburner);d('@ember/runloop/index',emberRunloopIndex);d('@ember/service/index',emberServiceIndex);d('@ember/template-compilation/index',emberTemplateCompilationIndex);d('@ember/template-factory/index',emberTemplateFactoryIndex);d('@ember/template/index',emberTemplateIndex);d('@ember/test/adapter',emberTestAdapter);d('@ember/test/index',emberTestIndex);d('@ember/utils/index',emberUtilsIndex);d('@ember/utils/lib/compare',emberUtilsLibCompare);d('@ember/utils/lib/is-equal',emberUtilsLibIsEqual);d('@ember/utils/lib/is_blank',emberUtilsLibIsBlank);d('@ember/utils/lib/is_empty',emberUtilsLibIsEmpty);d('@ember/utils/lib/is_none',emberUtilsLibIsNone);d('@ember/utils/lib/is_present',emberUtilsLibIsPresent);d('@ember/utils/lib/type-of',emberUtilsLibTypeOf);d('@ember/version/index',emberVersionIndex);d('@glimmer/debug',glimmerDebug);d('@glimmer/destroyable',glimmerDestroyable);d('@glimmer/encoder',glimmerEncoder);d('@glimmer/env',glimmerEnv);d('@glimmer/global-context',glimmerGlobalContext);d('@glimmer/manager',glimmerManager);d('@glimmer/node',glimmerNode);d('@glimmer/opcode-compiler',glimmerOpcodeCompiler);d('@glimmer/owner',glimmerOwner);d('@glimmer/program',glimmerProgram);d('@glimmer/reference',glimmerReference);d('@glimmer/runtime',glimmerRuntime);d('@glimmer/tracking/index',glimmerTrackingIndex);d('@glimmer/tracking/primitives/cache',glimmerTrackingPrimitivesCache);d('@glimmer/util',glimmerUtil);d('@glimmer/validator',glimmerValidator);d('@glimmer/vm',glimmerVm);d('@glimmer/wire-format',glimmerWireFormat);d('@simple-dom/document',simpleDomDocument);d('backburner.js',backburnerjs);d('dag-map',dagMap);d('ember/index',emberIndex);d('ember/version',emberVersion);d('route-recognizer',routeRecognizer);d('router_js',routerJs);d('rsvp',rsvp);if((typeof module===\"undefined\"?\"undefined\":_typeof(module))==='object'&&typeof module.require==='function'){module.exports=index;}})();","if (typeof FastBoot === 'undefined') {\n      var preferNative = true;\n      function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\nfunction _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\nfunction _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n(function (originalGlobal) {\n  define('fetch', ['exports', 'ember', 'rsvp'], function (exports, Ember__module, RSVP__module) {\n    'use strict';\n\n    var Ember = 'default' in Ember__module ? Ember__module['default'] : Ember__module;\n    var RSVP = 'default' in RSVP__module ? RSVP__module['default'] : RSVP__module;\n    var Promise = RSVP.Promise;\n    var supportProps = ['FormData', 'FileReader', 'Blob', 'URLSearchParams', 'Symbol', 'ArrayBuffer'];\n    var polyfillProps = ['fetch', 'Headers', 'Request', 'Response', 'AbortController'];\n    var combinedProps = supportProps;\n    if (preferNative) {\n      combinedProps = supportProps.concat(polyfillProps);\n    }\n    combinedProps.forEach(function (prop) {\n      if (originalGlobal[prop]) {\n        Object.defineProperty(exports, prop, {\n          configurable: true,\n          get: function get() {\n            return originalGlobal[prop];\n          },\n          set: function set(v) {\n            originalGlobal[prop] = v;\n          }\n        });\n      }\n    });\n\n    // shadow github/fetch global object\n    // https://github.com/github/fetch/blob/v3.4.0/fetch.js\n    var globalThis = exports;\n    // shadow mo/abortcontroller-polyfill global object\n    // https://github.com/mo/abortcontroller-polyfill/blob/v1.4.0/src/abortcontroller-polyfill.js\n    var self = exports;\n    (function () {\n      'use strict';\n\n      var _ref = function (self) {\n          return {\n            NativeAbortSignal: self.AbortSignal,\n            NativeAbortController: self.AbortController\n          };\n        }(typeof self !== 'undefined' ? self : global),\n        NativeAbortSignal = _ref.NativeAbortSignal,\n        NativeAbortController = _ref.NativeAbortController;\n\n      /**\n       * @param {any} reason abort reason\n       */\n      function createAbortEvent(reason) {\n        var event;\n        try {\n          event = new Event('abort');\n        } catch (e) {\n          if (typeof document !== 'undefined') {\n            if (!document.createEvent) {\n              // For Internet Explorer 8:\n              event = document.createEventObject();\n              event.type = 'abort';\n            } else {\n              // For Internet Explorer 11:\n              event = document.createEvent('Event');\n              event.initEvent('abort', false, false);\n            }\n          } else {\n            // Fallback where document isn't available:\n            event = {\n              type: 'abort',\n              bubbles: false,\n              cancelable: false\n            };\n          }\n        }\n        event.reason = reason;\n        return event;\n      }\n\n      /**\n       * @param {any} reason abort reason\n       */\n      function normalizeAbortReason(reason) {\n        if (reason === undefined) {\n          if (typeof document === 'undefined') {\n            reason = new Error('This operation was aborted');\n            reason.name = 'AbortError';\n          } else {\n            try {\n              reason = new DOMException('signal is aborted without reason');\n              // The DOMException does not support setting the name property directly.\n              Object.defineProperty(reason, 'name', {\n                value: 'AbortError'\n              });\n            } catch (err) {\n              // IE 11 does not support calling the DOMException constructor, use a\n              // regular error object on it instead.\n              reason = new Error('This operation was aborted');\n              reason.name = 'AbortError';\n            }\n          }\n        }\n        return reason;\n      }\n      var Emitter = /*#__PURE__*/function () {\n        function Emitter() {\n          _classCallCheck(this, Emitter);\n          Object.defineProperty(this, 'listeners', {\n            value: {},\n            writable: true,\n            configurable: true\n          });\n        }\n        return _createClass(Emitter, [{\n          key: \"addEventListener\",\n          value: function addEventListener(type, callback, options) {\n            if (!(type in this.listeners)) {\n              this.listeners[type] = [];\n            }\n            this.listeners[type].push({\n              callback: callback,\n              options: options\n            });\n          }\n        }, {\n          key: \"removeEventListener\",\n          value: function removeEventListener(type, callback) {\n            if (!(type in this.listeners)) {\n              return;\n            }\n            var stack = this.listeners[type];\n            for (var i = 0, l = stack.length; i < l; i++) {\n              if (stack[i].callback === callback) {\n                stack.splice(i, 1);\n                return;\n              }\n            }\n          }\n        }, {\n          key: \"dispatchEvent\",\n          value: function dispatchEvent(event) {\n            var _this = this;\n            if (!(event.type in this.listeners)) {\n              return;\n            }\n            var stack = this.listeners[event.type];\n            var stackToCall = stack.slice();\n            var _loop = function _loop() {\n              var listener = stackToCall[i];\n              try {\n                listener.callback.call(_this, event);\n              } catch (e) {\n                Promise.resolve().then(function () {\n                  throw e;\n                });\n              }\n              if (listener.options && listener.options.once) {\n                _this.removeEventListener(event.type, listener.callback);\n              }\n            };\n            for (var i = 0, l = stackToCall.length; i < l; i++) {\n              _loop();\n            }\n            return !event.defaultPrevented;\n          }\n        }]);\n      }();\n      var AbortSignal$1 = /*#__PURE__*/function (_Emitter) {\n        function AbortSignal$1() {\n          var _this2;\n          _classCallCheck(this, AbortSignal$1);\n          _this2 = _callSuper(this, AbortSignal$1);\n          // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n          // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n          // the parent constructor directly instead as a workaround. For general details, see babel bug:\n          // https://github.com/babel/babel/issues/3041\n          // This hack was added as a fix for the issue described here:\n          // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n          if (!_this2.listeners) {\n            Emitter.call(_this2);\n          }\n\n          // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n          // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n          Object.defineProperty(_this2, 'aborted', {\n            value: false,\n            writable: true,\n            configurable: true\n          });\n          Object.defineProperty(_this2, 'onabort', {\n            value: null,\n            writable: true,\n            configurable: true\n          });\n          Object.defineProperty(_this2, 'reason', {\n            value: undefined,\n            writable: true,\n            configurable: true\n          });\n          return _this2;\n        }\n        _inherits(AbortSignal$1, _Emitter);\n        return _createClass(AbortSignal$1, [{\n          key: \"toString\",\n          value: function toString() {\n            return '[object AbortSignal]';\n          }\n        }, {\n          key: \"dispatchEvent\",\n          value: function dispatchEvent(event) {\n            if (event.type === 'abort') {\n              this.aborted = true;\n              if (typeof this.onabort === 'function') {\n                this.onabort.call(this, event);\n              }\n            }\n            _superPropGet(AbortSignal$1, \"dispatchEvent\", this, 3)([event]);\n          }\n\n          /**\n           * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/AbortSignal/throwIfAborted}\n           */\n        }, {\n          key: \"throwIfAborted\",\n          value: function throwIfAborted() {\n            var aborted = this.aborted,\n              _this$reason = this.reason,\n              reason = _this$reason === void 0 ? 'Aborted' : _this$reason;\n            if (!aborted) return;\n            throw reason;\n          }\n\n          /**\n           * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/AbortSignal/timeout_static}\n           * @param {number} time The \"active\" time in milliseconds before the returned {@link AbortSignal} will abort.\n           *                      The value must be within range of 0 and {@link Number.MAX_SAFE_INTEGER}.\n           * @returns {AbortSignal} The signal will abort with its {@link AbortSignal.reason} property set to a `TimeoutError` {@link DOMException} on timeout,\n           *                        or an `AbortError` {@link DOMException} if the operation was user-triggered.\n           */\n        }], [{\n          key: \"timeout\",\n          value: function timeout(time) {\n            var controller = new AbortController$1();\n            setTimeout(function () {\n              return controller.abort(new DOMException(\"This signal is timeout in \".concat(time, \"ms\"), 'TimeoutError'));\n            }, time);\n            return controller.signal;\n          }\n\n          /**\n           * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/any_static}\n           * @param {Iterable<AbortSignal>} iterable An {@link Iterable} (such as an {@link Array}) of abort signals.\n           * @returns {AbortSignal} - **Already aborted**, if any of the abort signals given is already aborted.\n           *                          The returned {@link AbortSignal}'s reason will be already set to the `reason` of the first abort signal that was already aborted.\n           *                        - **Asynchronously aborted**, when any abort signal in `iterable` aborts.\n           *                          The `reason` will be set to the reason of the first abort signal that is aborted.\n           */\n        }, {\n          key: \"any\",\n          value: function any(iterable) {\n            var controller = new AbortController$1();\n            /**\n             * @this AbortSignal\n             */\n            function abort() {\n              controller.abort(this.reason);\n              clean();\n            }\n            function clean() {\n              var _iterator = _createForOfIteratorHelper(iterable),\n                _step;\n              try {\n                for (_iterator.s(); !(_step = _iterator.n()).done;) {\n                  var signal = _step.value;\n                  signal.removeEventListener('abort', abort);\n                }\n              } catch (err) {\n                _iterator.e(err);\n              } finally {\n                _iterator.f();\n              }\n            }\n            var _iterator2 = _createForOfIteratorHelper(iterable),\n              _step2;\n            try {\n              for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n                var signal = _step2.value;\n                if (signal.aborted) {\n                  controller.abort(signal.reason);\n                  break;\n                } else signal.addEventListener('abort', abort);\n              }\n            } catch (err) {\n              _iterator2.e(err);\n            } finally {\n              _iterator2.f();\n            }\n            return controller.signal;\n          }\n        }]);\n      }(Emitter);\n      var AbortController$1 = /*#__PURE__*/function () {\n        function AbortController$1() {\n          _classCallCheck(this, AbortController$1);\n          // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n          // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n          Object.defineProperty(this, 'signal', {\n            value: new AbortSignal$1(),\n            writable: true,\n            configurable: true\n          });\n        }\n        return _createClass(AbortController$1, [{\n          key: \"abort\",\n          value: function abort(reason) {\n            var signalReason = normalizeAbortReason(reason);\n            var event = createAbortEvent(signalReason);\n            this.signal.reason = signalReason;\n            this.signal.dispatchEvent(event);\n          }\n        }, {\n          key: \"toString\",\n          value: function toString() {\n            return '[object AbortController]';\n          }\n        }]);\n      }();\n      if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n        // These are necessary to make sure that we get correct output for:\n        // Object.prototype.toString.call(new AbortController())\n        AbortController$1.prototype[Symbol.toStringTag] = 'AbortController';\n        AbortSignal$1.prototype[Symbol.toStringTag] = 'AbortSignal';\n      }\n      function polyfillNeeded(self) {\n        if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n          console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n          return true;\n        }\n\n        // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n        // defining window.Request, and this polyfill need to work on top of unfetch\n        // so the below feature detection needs the !self.AbortController part.\n        // The Request.prototype check is also needed because Safari versions 11.1.2\n        // up to and including 12.1.x has a window.AbortController present but still\n        // does NOT correctly implement abortable fetch:\n        // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n        return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n      }\n      (function (self) {\n        if (!polyfillNeeded(self)) {\n          return;\n        }\n        self.AbortController = AbortController$1;\n        self.AbortSignal = AbortSignal$1;\n      })(typeof self !== 'undefined' ? self : global);\n    })();\n    var WHATWGFetch = function (exports) {\n      'use strict';\n\n      /* eslint-disable no-prototype-builtins */\n      var g = typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self ||\n      // eslint-disable-next-line no-undef\n      typeof global !== 'undefined' && global || {};\n      var support = {\n        searchParams: 'URLSearchParams' in g,\n        iterable: 'Symbol' in g && 'iterator' in Symbol,\n        blob: 'FileReader' in g && 'Blob' in g && function () {\n          try {\n            new Blob();\n            return true;\n          } catch (e) {\n            return false;\n          }\n        }(),\n        formData: 'FormData' in g,\n        arrayBuffer: 'ArrayBuffer' in g\n      };\n      function isDataView(obj) {\n        return obj && DataView.prototype.isPrototypeOf(obj);\n      }\n      if (support.arrayBuffer) {\n        var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]'];\n        var isArrayBufferView = ArrayBuffer.isView || function (obj) {\n          return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n        };\n      }\n      function normalizeName(name) {\n        if (typeof name !== 'string') {\n          name = String(name);\n        }\n        if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n          throw new TypeError('Invalid character in header field name: \"' + name + '\"');\n        }\n        return name.toLowerCase();\n      }\n      function normalizeValue(value) {\n        if (typeof value !== 'string') {\n          value = String(value);\n        }\n        return value;\n      }\n\n      // Build a destructive iterator for the value list\n      function iteratorFor(items) {\n        var iterator = {\n          next: function next() {\n            var value = items.shift();\n            return {\n              done: value === undefined,\n              value: value\n            };\n          }\n        };\n        if (support.iterable) {\n          iterator[Symbol.iterator] = function () {\n            return iterator;\n          };\n        }\n        return iterator;\n      }\n      function Headers(headers) {\n        this.map = {};\n        if (headers instanceof Headers) {\n          headers.forEach(function (value, name) {\n            this.append(name, value);\n          }, this);\n        } else if (Array.isArray(headers)) {\n          headers.forEach(function (header) {\n            if (header.length != 2) {\n              throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length);\n            }\n            this.append(header[0], header[1]);\n          }, this);\n        } else if (headers) {\n          Object.getOwnPropertyNames(headers).forEach(function (name) {\n            this.append(name, headers[name]);\n          }, this);\n        }\n      }\n      Headers.prototype.append = function (name, value) {\n        name = normalizeName(name);\n        value = normalizeValue(value);\n        var oldValue = this.map[name];\n        this.map[name] = oldValue ? oldValue + ', ' + value : value;\n      };\n      Headers.prototype['delete'] = function (name) {\n        delete this.map[normalizeName(name)];\n      };\n      Headers.prototype.get = function (name) {\n        name = normalizeName(name);\n        return this.has(name) ? this.map[name] : null;\n      };\n      Headers.prototype.has = function (name) {\n        return this.map.hasOwnProperty(normalizeName(name));\n      };\n      Headers.prototype.set = function (name, value) {\n        this.map[normalizeName(name)] = normalizeValue(value);\n      };\n      Headers.prototype.forEach = function (callback, thisArg) {\n        for (var name in this.map) {\n          if (this.map.hasOwnProperty(name)) {\n            callback.call(thisArg, this.map[name], name, this);\n          }\n        }\n      };\n      Headers.prototype.keys = function () {\n        var items = [];\n        this.forEach(function (value, name) {\n          items.push(name);\n        });\n        return iteratorFor(items);\n      };\n      Headers.prototype.values = function () {\n        var items = [];\n        this.forEach(function (value) {\n          items.push(value);\n        });\n        return iteratorFor(items);\n      };\n      Headers.prototype.entries = function () {\n        var items = [];\n        this.forEach(function (value, name) {\n          items.push([name, value]);\n        });\n        return iteratorFor(items);\n      };\n      if (support.iterable) {\n        Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n      }\n      function consumed(body) {\n        if (body._noBody) return;\n        if (body.bodyUsed) {\n          return Promise.reject(new TypeError('Already read'));\n        }\n        body.bodyUsed = true;\n      }\n      function fileReaderReady(reader) {\n        return new Promise(function (resolve, reject) {\n          reader.onload = function () {\n            resolve(reader.result);\n          };\n          reader.onerror = function () {\n            reject(reader.error);\n          };\n        });\n      }\n      function readBlobAsArrayBuffer(blob) {\n        var reader = new FileReader();\n        var promise = fileReaderReady(reader);\n        reader.readAsArrayBuffer(blob);\n        return promise;\n      }\n      function readBlobAsText(blob) {\n        var reader = new FileReader();\n        var promise = fileReaderReady(reader);\n        var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n        var encoding = match ? match[1] : 'utf-8';\n        reader.readAsText(blob, encoding);\n        return promise;\n      }\n      function readArrayBufferAsText(buf) {\n        var view = new Uint8Array(buf);\n        var chars = new Array(view.length);\n        for (var i = 0; i < view.length; i++) {\n          chars[i] = String.fromCharCode(view[i]);\n        }\n        return chars.join('');\n      }\n      function bufferClone(buf) {\n        if (buf.slice) {\n          return buf.slice(0);\n        } else {\n          var view = new Uint8Array(buf.byteLength);\n          view.set(new Uint8Array(buf));\n          return view.buffer;\n        }\n      }\n      function Body() {\n        this.bodyUsed = false;\n        this._initBody = function (body) {\n          /*\n            fetch-mock wraps the Response object in an ES6 Proxy to\n            provide useful test harness features such as flush. However, on\n            ES5 browsers without fetch or Proxy support pollyfills must be used;\n            the proxy-pollyfill is unable to proxy an attribute unless it exists\n            on the object before the Proxy is created. This change ensures\n            Response.bodyUsed exists on the instance, while maintaining the\n            semantic of setting Request.bodyUsed in the constructor before\n            _initBody is called.\n          */\n          // eslint-disable-next-line no-self-assign\n          this.bodyUsed = this.bodyUsed;\n          this._bodyInit = body;\n          if (!body) {\n            this._noBody = true;\n            this._bodyText = '';\n          } else if (typeof body === 'string') {\n            this._bodyText = body;\n          } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n            this._bodyBlob = body;\n          } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n            this._bodyFormData = body;\n          } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n            this._bodyText = body.toString();\n          } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n            this._bodyArrayBuffer = bufferClone(body.buffer);\n            // IE 10-11 can't handle a DataView body.\n            this._bodyInit = new Blob([this._bodyArrayBuffer]);\n          } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n            this._bodyArrayBuffer = bufferClone(body);\n          } else {\n            this._bodyText = body = Object.prototype.toString.call(body);\n          }\n          if (!this.headers.get('content-type')) {\n            if (typeof body === 'string') {\n              this.headers.set('content-type', 'text/plain;charset=UTF-8');\n            } else if (this._bodyBlob && this._bodyBlob.type) {\n              this.headers.set('content-type', this._bodyBlob.type);\n            } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n              this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n            }\n          }\n        };\n        if (support.blob) {\n          this.blob = function () {\n            var rejected = consumed(this);\n            if (rejected) {\n              return rejected;\n            }\n            if (this._bodyBlob) {\n              return Promise.resolve(this._bodyBlob);\n            } else if (this._bodyArrayBuffer) {\n              return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n            } else if (this._bodyFormData) {\n              throw new Error('could not read FormData body as blob');\n            } else {\n              return Promise.resolve(new Blob([this._bodyText]));\n            }\n          };\n        }\n        this.arrayBuffer = function () {\n          if (this._bodyArrayBuffer) {\n            var isConsumed = consumed(this);\n            if (isConsumed) {\n              return isConsumed;\n            } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n              return Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength));\n            } else {\n              return Promise.resolve(this._bodyArrayBuffer);\n            }\n          } else if (support.blob) {\n            return this.blob().then(readBlobAsArrayBuffer);\n          } else {\n            throw new Error('could not read as ArrayBuffer');\n          }\n        };\n        this.text = function () {\n          var rejected = consumed(this);\n          if (rejected) {\n            return rejected;\n          }\n          if (this._bodyBlob) {\n            return readBlobAsText(this._bodyBlob);\n          } else if (this._bodyArrayBuffer) {\n            return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n          } else if (this._bodyFormData) {\n            throw new Error('could not read FormData body as text');\n          } else {\n            return Promise.resolve(this._bodyText);\n          }\n        };\n        if (support.formData) {\n          this.formData = function () {\n            return this.text().then(decode);\n          };\n        }\n        this.json = function () {\n          return this.text().then(JSON.parse);\n        };\n        return this;\n      }\n\n      // HTTP methods whose capitalization should be normalized\n      var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n      function normalizeMethod(method) {\n        var upcased = method.toUpperCase();\n        return methods.indexOf(upcased) > -1 ? upcased : method;\n      }\n      function Request(input, options) {\n        if (!(this instanceof Request)) {\n          throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');\n        }\n        options = options || {};\n        var body = options.body;\n        if (input instanceof Request) {\n          if (input.bodyUsed) {\n            throw new TypeError('Already read');\n          }\n          this.url = input.url;\n          this.credentials = input.credentials;\n          if (!options.headers) {\n            this.headers = new Headers(input.headers);\n          }\n          this.method = input.method;\n          this.mode = input.mode;\n          this.signal = input.signal;\n          if (!body && input._bodyInit != null) {\n            body = input._bodyInit;\n            input.bodyUsed = true;\n          }\n        } else {\n          this.url = String(input);\n        }\n        this.credentials = options.credentials || this.credentials || 'same-origin';\n        if (options.headers || !this.headers) {\n          this.headers = new Headers(options.headers);\n        }\n        this.method = normalizeMethod(options.method || this.method || 'GET');\n        this.mode = options.mode || this.mode || null;\n        this.signal = options.signal || this.signal || function () {\n          if ('AbortController' in g) {\n            var ctrl = new AbortController();\n            return ctrl.signal;\n          }\n        }();\n        this.referrer = null;\n        if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n          throw new TypeError('Body not allowed for GET or HEAD requests');\n        }\n        this._initBody(body);\n        if (this.method === 'GET' || this.method === 'HEAD') {\n          if (options.cache === 'no-store' || options.cache === 'no-cache') {\n            // Search for a '_' parameter in the query string\n            var reParamSearch = /([?&])_=[^&]*/;\n            if (reParamSearch.test(this.url)) {\n              // If it already exists then set the value with the current time\n              this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n            } else {\n              // Otherwise add a new '_' parameter to the end with the current time\n              var reQueryString = /\\?/;\n              this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n            }\n          }\n        }\n      }\n      Request.prototype.clone = function () {\n        return new Request(this, {\n          body: this._bodyInit\n        });\n      };\n      function decode(body) {\n        var form = new FormData();\n        body.trim().split('&').forEach(function (bytes) {\n          if (bytes) {\n            var split = bytes.split('=');\n            var name = split.shift().replace(/\\+/g, ' ');\n            var value = split.join('=').replace(/\\+/g, ' ');\n            form.append(decodeURIComponent(name), decodeURIComponent(value));\n          }\n        });\n        return form;\n      }\n      function parseHeaders(rawHeaders) {\n        var headers = new Headers();\n        // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n        // https://tools.ietf.org/html/rfc7230#section-3.2\n        var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n        // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n        // https://github.com/github/fetch/issues/748\n        // https://github.com/zloirock/core-js/issues/751\n        preProcessedHeaders.split('\\r').map(function (header) {\n          return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header;\n        }).forEach(function (line) {\n          var parts = line.split(':');\n          var key = parts.shift().trim();\n          if (key) {\n            var value = parts.join(':').trim();\n            try {\n              headers.append(key, value);\n            } catch (error) {\n              console.warn('Response ' + error.message);\n            }\n          }\n        });\n        return headers;\n      }\n      Body.call(Request.prototype);\n      function Response(bodyInit, options) {\n        if (!(this instanceof Response)) {\n          throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');\n        }\n        if (!options) {\n          options = {};\n        }\n        this.type = 'default';\n        this.status = options.status === undefined ? 200 : options.status;\n        if (this.status < 200 || this.status > 599) {\n          throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\");\n        }\n        this.ok = this.status >= 200 && this.status < 300;\n        this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n        this.headers = new Headers(options.headers);\n        this.url = options.url || '';\n        this._initBody(bodyInit);\n      }\n      Body.call(Response.prototype);\n      Response.prototype.clone = function () {\n        return new Response(this._bodyInit, {\n          status: this.status,\n          statusText: this.statusText,\n          headers: new Headers(this.headers),\n          url: this.url\n        });\n      };\n      Response.error = function () {\n        var response = new Response(null, {\n          status: 200,\n          statusText: ''\n        });\n        response.ok = false;\n        response.status = 0;\n        response.type = 'error';\n        return response;\n      };\n      var redirectStatuses = [301, 302, 303, 307, 308];\n      Response.redirect = function (url, status) {\n        if (redirectStatuses.indexOf(status) === -1) {\n          throw new RangeError('Invalid status code');\n        }\n        return new Response(null, {\n          status: status,\n          headers: {\n            location: url\n          }\n        });\n      };\n      exports.DOMException = g.DOMException;\n      try {\n        new exports.DOMException();\n      } catch (err) {\n        exports.DOMException = function (message, name) {\n          this.message = message;\n          this.name = name;\n          var error = Error(message);\n          this.stack = error.stack;\n        };\n        exports.DOMException.prototype = Object.create(Error.prototype);\n        exports.DOMException.prototype.constructor = exports.DOMException;\n      }\n      function fetch(input, init) {\n        return new Promise(function (resolve, reject) {\n          var request = new Request(input, init);\n          if (request.signal && request.signal.aborted) {\n            return reject(new exports.DOMException('Aborted', 'AbortError'));\n          }\n          var xhr = new XMLHttpRequest();\n          function abortXhr() {\n            xhr.abort();\n          }\n          xhr.onload = function () {\n            var options = {\n              statusText: xhr.statusText,\n              headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n            };\n            // This check if specifically for when a user fetches a file locally from the file system\n            // Only if the status is out of a normal range\n            if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n              options.status = 200;\n            } else {\n              options.status = xhr.status;\n            }\n            options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n            var body = 'response' in xhr ? xhr.response : xhr.responseText;\n            setTimeout(function () {\n              resolve(new Response(body, options));\n            }, 0);\n          };\n          xhr.onerror = function () {\n            setTimeout(function () {\n              reject(new TypeError('Network request failed'));\n            }, 0);\n          };\n          xhr.ontimeout = function () {\n            setTimeout(function () {\n              reject(new TypeError('Network request timed out'));\n            }, 0);\n          };\n          xhr.onabort = function () {\n            setTimeout(function () {\n              reject(new exports.DOMException('Aborted', 'AbortError'));\n            }, 0);\n          };\n          function fixUrl(url) {\n            try {\n              return url === '' && g.location.href ? g.location.href : url;\n            } catch (e) {\n              return url;\n            }\n          }\n          xhr.open(request.method, fixUrl(request.url), true);\n          if (request.credentials === 'include') {\n            xhr.withCredentials = true;\n          } else if (request.credentials === 'omit') {\n            xhr.withCredentials = false;\n          }\n          if ('responseType' in xhr) {\n            if (support.blob) {\n              xhr.responseType = 'blob';\n            } else if (support.arrayBuffer) {\n              xhr.responseType = 'arraybuffer';\n            }\n          }\n          if (init && _typeof(init.headers) === 'object' && !(init.headers instanceof Headers || g.Headers && init.headers instanceof g.Headers)) {\n            var names = [];\n            Object.getOwnPropertyNames(init.headers).forEach(function (name) {\n              names.push(normalizeName(name));\n              xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n            });\n            request.headers.forEach(function (value, name) {\n              if (names.indexOf(name) === -1) {\n                xhr.setRequestHeader(name, value);\n              }\n            });\n          } else {\n            request.headers.forEach(function (value, name) {\n              xhr.setRequestHeader(name, value);\n            });\n          }\n          if (request.signal) {\n            request.signal.addEventListener('abort', abortXhr);\n            xhr.onreadystatechange = function () {\n              // DONE (success or failure)\n              if (xhr.readyState === 4) {\n                request.signal.removeEventListener('abort', abortXhr);\n              }\n            };\n          }\n          xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n        });\n      }\n      fetch.polyfill = true;\n      if (!g.fetch) {\n        g.fetch = fetch;\n        g.Headers = Headers;\n        g.Request = Request;\n        g.Response = Response;\n      }\n      exports.Headers = Headers;\n      exports.Request = Request;\n      exports.Response = Response;\n      exports.fetch = fetch;\n      return exports;\n    }({});\n    if (!globalThis.fetch) {\n      throw new Error('fetch is not defined - maybe your browser targets are not covering everything you need?');\n    }\n    var pending = 0;\n    function decrement(result) {\n      pending--;\n      return result;\n    }\n    if (Ember.Test) {\n      Ember.Test.registerWaiter(function () {\n        return pending === 0;\n      });\n      exports['default'] = function () {\n        pending++;\n        return exports.fetch.apply(originalGlobal, arguments).then(function (response) {\n          response.clone().blob().then(decrement, decrement);\n          return response;\n        }, function (reason) {\n          decrement(reason);\n          throw reason;\n        });\n      };\n    } else {\n      exports['default'] = exports.fetch;\n    }\n    supportProps.forEach(function (prop) {\n      delete exports[prop];\n    });\n  });\n})(typeof window !== 'undefined' && window || typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self || typeof global !== 'undefined' && global);\n    }","define('@fortawesome/fontawesome-svg-core', ['exports'], (function (exports) { 'use strict';\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      enumerableOnly && (symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      })), keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = null != arguments[i] ? arguments[i] : {};\n      i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n\n    return target;\n  }\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n      return typeof obj;\n    } : function (obj) {\n      return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    }, _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n    if (_i == null) return;\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n\n    var _s, _e;\n\n    try {\n      for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var noop = function noop() {};\n\n  var _WINDOW = {};\n  var _DOCUMENT = {};\n  var _MUTATION_OBSERVER = null;\n  var _PERFORMANCE = {\n    mark: noop,\n    measure: noop\n  };\n\n  try {\n    if (typeof window !== 'undefined') _WINDOW = window;\n    if (typeof document !== 'undefined') _DOCUMENT = document;\n    if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n    if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n  } catch (e) {}\n\n  var _ref = _WINDOW.navigator || {},\n      _ref$userAgent = _ref.userAgent,\n      userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n  var WINDOW = _WINDOW;\n  var DOCUMENT = _DOCUMENT;\n  var MUTATION_OBSERVER = _MUTATION_OBSERVER;\n  var PERFORMANCE = _PERFORMANCE;\n  !!WINDOW.document;\n  var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\n  var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\n  var _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\n  var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\n  var UNITS_IN_GRID = 16;\n  var DEFAULT_CSS_PREFIX = 'fa';\n  var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\n  var DATA_FA_I2SVG = 'data-fa-i2svg';\n  var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\n  var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\n  var DATA_PREFIX = 'data-prefix';\n  var DATA_ICON = 'data-icon';\n  var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\n  var MUTATION_APPROACH_ASYNC = 'async';\n  var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\n  var PRODUCTION = function () {\n    try {\n      return process.env.NODE_ENV === 'production';\n    } catch (e) {\n      return false;\n    }\n  }();\n  var FAMILY_CLASSIC = 'classic';\n  var FAMILY_SHARP = 'sharp';\n  var FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\n  function familyProxy(obj) {\n    // Defaults to the classic family if family is not available\n    return new Proxy(obj, {\n      get: function get(target, prop) {\n        return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n      }\n    });\n  }\n  var PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n    'fa': 'solid',\n    'fas': 'solid',\n    'fa-solid': 'solid',\n    'far': 'regular',\n    'fa-regular': 'regular',\n    'fal': 'light',\n    'fa-light': 'light',\n    'fat': 'thin',\n    'fa-thin': 'thin',\n    'fad': 'duotone',\n    'fa-duotone': 'duotone',\n    'fab': 'brands',\n    'fa-brands': 'brands',\n    'fak': 'kit',\n    'fa-kit': 'kit'\n  }), _defineProperty(_familyProxy, FAMILY_SHARP, {\n    'fa': 'solid',\n    'fass': 'solid',\n    'fa-solid': 'solid',\n    'fasr': 'regular',\n    'fa-regular': 'regular',\n    'fasl': 'light',\n    'fa-light': 'light'\n  }), _familyProxy));\n  var STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n    'solid': 'fas',\n    'regular': 'far',\n    'light': 'fal',\n    'thin': 'fat',\n    'duotone': 'fad',\n    'brands': 'fab',\n    'kit': 'fak'\n  }), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n    'solid': 'fass',\n    'regular': 'fasr',\n    'light': 'fasl'\n  }), _familyProxy2));\n  var PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n    'fab': 'fa-brands',\n    'fad': 'fa-duotone',\n    'fak': 'fa-kit',\n    'fal': 'fa-light',\n    'far': 'fa-regular',\n    'fas': 'fa-solid',\n    'fat': 'fa-thin'\n  }), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n    'fass': 'fa-solid',\n    'fasr': 'fa-regular',\n    'fasl': 'fa-light'\n  }), _familyProxy3));\n  var LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n    'fa-brands': 'fab',\n    'fa-duotone': 'fad',\n    'fa-kit': 'fak',\n    'fa-light': 'fal',\n    'fa-regular': 'far',\n    'fa-solid': 'fas',\n    'fa-thin': 'fat'\n  }), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n    'fa-solid': 'fass',\n    'fa-regular': 'fasr',\n    'fa-light': 'fasl'\n  }), _familyProxy4));\n  var ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\n  var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\n  var FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i;\n  var FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n    '900': 'fas',\n    '400': 'far',\n    'normal': 'far',\n    '300': 'fal',\n    '100': 'fat'\n  }), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n    '900': 'fass',\n    '400': 'fasr',\n    '300': 'fasl'\n  }), _familyProxy5));\n  var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n  var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\n  var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\n  var DUOTONE_CLASSES = {\n    GROUP: 'duotone-group',\n    SWAP_OPACITY: 'swap-opacity',\n    PRIMARY: 'primary',\n    SECONDARY: 'secondary'\n  };\n  var prefixes = new Set();\n  Object.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\n  Object.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\n  var RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n    return \"\".concat(n, \"x\");\n  })).concat(oneToTwenty.map(function (n) {\n    return \"w-\".concat(n);\n  }));\n\n  var initial = WINDOW.FontAwesomeConfig || {};\n\n  function getAttrConfig(attr) {\n    var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n    if (element) {\n      return element.getAttribute(attr);\n    }\n  }\n\n  function coerce(val) {\n    // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n    // We'll assume that this is an indication that it should be toggled to true\n    if (val === '') return true;\n    if (val === 'false') return false;\n    if (val === 'true') return true;\n    return val;\n  }\n\n  if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n    var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n    attrs.forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          attr = _ref2[0],\n          key = _ref2[1];\n\n      var val = coerce(getAttrConfig(attr));\n\n      if (val !== undefined && val !== null) {\n        initial[key] = val;\n      }\n    });\n  }\n\n  var _default = {\n    styleDefault: 'solid',\n    familyDefault: 'classic',\n    cssPrefix: DEFAULT_CSS_PREFIX,\n    replacementClass: DEFAULT_REPLACEMENT_CLASS,\n    autoReplaceSvg: true,\n    autoAddCss: true,\n    autoA11y: true,\n    searchPseudoElements: false,\n    observeMutations: true,\n    mutateApproach: 'async',\n    keepOriginalSource: true,\n    measurePerformance: false,\n    showMissingIcons: true\n  }; // familyPrefix is deprecated but we must still support it if present\n\n  if (initial.familyPrefix) {\n    initial.cssPrefix = initial.familyPrefix;\n  }\n\n  var _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\n  if (!_config.autoReplaceSvg) _config.observeMutations = false;\n  var config = {};\n  Object.keys(_default).forEach(function (key) {\n    Object.defineProperty(config, key, {\n      enumerable: true,\n      set: function set(val) {\n        _config[key] = val;\n\n        _onChangeCb.forEach(function (cb) {\n          return cb(config);\n        });\n      },\n      get: function get() {\n        return _config[key];\n      }\n    });\n  }); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\n  Object.defineProperty(config, 'familyPrefix', {\n    enumerable: true,\n    set: function set(val) {\n      _config.cssPrefix = val;\n\n      _onChangeCb.forEach(function (cb) {\n        return cb(config);\n      });\n    },\n    get: function get() {\n      return _config.cssPrefix;\n    }\n  });\n  WINDOW.FontAwesomeConfig = config;\n  var _onChangeCb = [];\n  function onChange(cb) {\n    _onChangeCb.push(cb);\n\n    return function () {\n      _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n    };\n  }\n\n  var d = UNITS_IN_GRID;\n  var meaninglessTransform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    rotate: 0,\n    flipX: false,\n    flipY: false\n  };\n  function insertCss(css) {\n    if (!css || !IS_DOM) {\n      return;\n    }\n\n    var style = DOCUMENT.createElement('style');\n    style.setAttribute('type', 'text/css');\n    style.innerHTML = css;\n    var headChildren = DOCUMENT.head.childNodes;\n    var beforeChild = null;\n\n    for (var i = headChildren.length - 1; i > -1; i--) {\n      var child = headChildren[i];\n      var tagName = (child.tagName || '').toUpperCase();\n\n      if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n        beforeChild = child;\n      }\n    }\n\n    DOCUMENT.head.insertBefore(style, beforeChild);\n    return css;\n  }\n  var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n  function nextUniqueId() {\n    var size = 12;\n    var id = '';\n\n    while (size-- > 0) {\n      id += idPool[Math.random() * 62 | 0];\n    }\n\n    return id;\n  }\n  function toArray(obj) {\n    var array = [];\n\n    for (var i = (obj || []).length >>> 0; i--;) {\n      array[i] = obj[i];\n    }\n\n    return array;\n  }\n  function classArray(node) {\n    if (node.classList) {\n      return toArray(node.classList);\n    } else {\n      return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n        return i;\n      });\n    }\n  }\n  function htmlEscape(str) {\n    return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n  }\n  function joinAttributes(attributes) {\n    return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n      return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n    }, '').trim();\n  }\n  function joinStyles(styles) {\n    return Object.keys(styles || {}).reduce(function (acc, styleName) {\n      return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n    }, '');\n  }\n  function transformIsMeaningful(transform) {\n    return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n  }\n  function transformForSvg(_ref) {\n    var transform = _ref.transform,\n        containerWidth = _ref.containerWidth,\n        iconWidth = _ref.iconWidth;\n    var outer = {\n      transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n    };\n    var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n    var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n    var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n    var inner = {\n      transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n    };\n    var path = {\n      transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n    };\n    return {\n      outer: outer,\n      inner: inner,\n      path: path\n    };\n  }\n  function transformForCss(_ref2) {\n    var transform = _ref2.transform,\n        _ref2$width = _ref2.width,\n        width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n        _ref2$height = _ref2.height,\n        height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n        _ref2$startCentered = _ref2.startCentered,\n        startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n    var val = '';\n\n    if (startCentered && IS_IE) {\n      val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n    } else if (startCentered) {\n      val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n    } else {\n      val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n    }\n\n    val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n    val += \"rotate(\".concat(transform.rotate, \"deg) \");\n    return val;\n  }\n\n  var baseStyles = \":root, :host {\\n  --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n  --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n  --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n  --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n  --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n  overflow: visible;\\n  box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n  display: var(--fa-display, inline-block);\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n  vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n  vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n  vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n  vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n  vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n  width: var(--fa-li-width, 2em);\\n  top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n  width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  -webkit-transform: translate(-50%, -50%);\\n          transform: translate(-50%, -50%);\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: var(--fa-counter-background-color, #ff253a);\\n  border-radius: var(--fa-counter-border-radius, 1em);\\n  box-sizing: border-box;\\n  color: var(--fa-inverse, #fff);\\n  line-height: var(--fa-counter-line-height, 1);\\n  max-width: var(--fa-counter-max-width, 5em);\\n  min-width: var(--fa-counter-min-width, 1.5em);\\n  overflow: hidden;\\n  padding: var(--fa-counter-padding, 0.25em 0.5em);\\n  right: var(--fa-right, 0);\\n  text-overflow: ellipsis;\\n  top: var(--fa-top, 0);\\n  -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n          transform: scale(var(--fa-counter-scale, 0.25));\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: var(--fa-bottom, 0);\\n  right: var(--fa-right, 0);\\n  top: auto;\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: bottom right;\\n          transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: var(--fa-bottom, 0);\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: auto;\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: bottom left;\\n          transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  top: var(--fa-top, 0);\\n  right: var(--fa-right, 0);\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: var(--fa-top, 0);\\n  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: top left;\\n          transform-origin: top left;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-2xs {\\n  font-size: 0.625em;\\n  line-height: 0.1em;\\n  vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n  font-size: 0.75em;\\n  line-height: 0.0833333337em;\\n  vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n  font-size: 0.875em;\\n  line-height: 0.0714285718em;\\n  vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n  font-size: 1.25em;\\n  line-height: 0.05em;\\n  vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n  font-size: 1.5em;\\n  line-height: 0.0416666682em;\\n  vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n  font-size: 2em;\\n  line-height: 0.03125em;\\n  vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: var(--fa-li-margin, 2.5em);\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  left: calc(var(--fa-li-width, 2em) * -1);\\n  position: absolute;\\n  text-align: center;\\n  width: var(--fa-li-width, 2em);\\n  line-height: inherit;\\n}\\n\\n.fa-border {\\n  border-color: var(--fa-border-color, #eee);\\n  border-radius: var(--fa-border-radius, 0.1em);\\n  border-style: var(--fa-border-style, solid);\\n  border-width: var(--fa-border-width, 0.08em);\\n  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n  float: left;\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n  float: right;\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n  -webkit-animation-name: fa-beat;\\n          animation-name: fa-beat;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n          animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n  -webkit-animation-name: fa-bounce;\\n          animation-name: fa-bounce;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n  -webkit-animation-name: fa-fade;\\n          animation-name: fa-fade;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n  -webkit-animation-name: fa-beat-fade;\\n          animation-name: fa-beat-fade;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n  -webkit-animation-name: fa-flip;\\n          animation-name: fa-flip;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n          animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n  -webkit-animation-name: fa-shake;\\n          animation-name: fa-shake;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n          animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n  -webkit-animation-name: fa-spin;\\n          animation-name: fa-spin;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n          animation-delay: var(--fa-animation-delay, 0s);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n          animation-duration: var(--fa-animation-duration, 2s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n          animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n  --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n  -webkit-animation-name: fa-spin;\\n          animation-name: fa-spin;\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n          animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n  .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n    -webkit-animation-delay: -1ms;\\n            animation-delay: -1ms;\\n    -webkit-animation-duration: 1ms;\\n            animation-duration: 1ms;\\n    -webkit-animation-iteration-count: 1;\\n            animation-iteration-count: 1;\\n    -webkit-transition-delay: 0s;\\n            transition-delay: 0s;\\n    -webkit-transition-duration: 0s;\\n            transition-duration: 0s;\\n  }\\n}\\n@-webkit-keyframes fa-beat {\\n  0%, 90% {\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  45% {\\n    -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n            transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@keyframes fa-beat {\\n  0%, 90% {\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  45% {\\n    -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n            transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@-webkit-keyframes fa-bounce {\\n  0% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@keyframes fa-bounce {\\n  0% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@-webkit-keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n            transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n            transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@-webkit-keyframes fa-flip {\\n  50% {\\n    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@keyframes fa-flip {\\n  50% {\\n    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@-webkit-keyframes fa-shake {\\n  0% {\\n    -webkit-transform: rotate(-15deg);\\n            transform: rotate(-15deg);\\n  }\\n  4% {\\n    -webkit-transform: rotate(15deg);\\n            transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    -webkit-transform: rotate(-18deg);\\n            transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    -webkit-transform: rotate(18deg);\\n            transform: rotate(18deg);\\n  }\\n  16% {\\n    -webkit-transform: rotate(-22deg);\\n            transform: rotate(-22deg);\\n  }\\n  20% {\\n    -webkit-transform: rotate(22deg);\\n            transform: rotate(22deg);\\n  }\\n  32% {\\n    -webkit-transform: rotate(-12deg);\\n            transform: rotate(-12deg);\\n  }\\n  36% {\\n    -webkit-transform: rotate(12deg);\\n            transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n}\\n@keyframes fa-shake {\\n  0% {\\n    -webkit-transform: rotate(-15deg);\\n            transform: rotate(-15deg);\\n  }\\n  4% {\\n    -webkit-transform: rotate(15deg);\\n            transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    -webkit-transform: rotate(-18deg);\\n            transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    -webkit-transform: rotate(18deg);\\n            transform: rotate(18deg);\\n  }\\n  16% {\\n    -webkit-transform: rotate(-22deg);\\n            transform: rotate(-22deg);\\n  }\\n  20% {\\n    -webkit-transform: rotate(22deg);\\n            transform: rotate(22deg);\\n  }\\n  32% {\\n    -webkit-transform: rotate(-12deg);\\n            transform: rotate(-12deg);\\n  }\\n  36% {\\n    -webkit-transform: rotate(12deg);\\n            transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n}\\n@-webkit-keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  -webkit-transform: rotate(90deg);\\n          transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  -webkit-transform: rotate(180deg);\\n          transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  -webkit-transform: rotate(270deg);\\n          transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  -webkit-transform: scale(-1, 1);\\n          transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  -webkit-transform: scale(1, -1);\\n          transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n  -webkit-transform: scale(-1, -1);\\n          transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n  -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n          transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  vertical-align: middle;\\n  height: 2em;\\n  position: relative;\\n  width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n  z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  height: 1em;\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  height: 2em;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\";\n\n  function css() {\n    var dcp = DEFAULT_CSS_PREFIX;\n    var drc = DEFAULT_REPLACEMENT_CLASS;\n    var fp = config.cssPrefix;\n    var rc = config.replacementClass;\n    var s = baseStyles;\n\n    if (fp !== dcp || rc !== drc) {\n      var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n      var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n      var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n      s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n    }\n\n    return s;\n  }\n\n  var _cssInserted = false;\n\n  function ensureCss() {\n    if (config.autoAddCss && !_cssInserted) {\n      insertCss(css());\n      _cssInserted = true;\n    }\n  }\n\n  var InjectCSS = {\n    mixout: function mixout() {\n      return {\n        dom: {\n          css: css,\n          insertCss: ensureCss\n        }\n      };\n    },\n    hooks: function hooks() {\n      return {\n        beforeDOMElementCreation: function beforeDOMElementCreation() {\n          ensureCss();\n        },\n        beforeI2svg: function beforeI2svg() {\n          ensureCss();\n        }\n      };\n    }\n  };\n\n  var w = WINDOW || {};\n  if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\n  if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\n  if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\n  if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\n  var namespace = w[NAMESPACE_IDENTIFIER];\n\n  var functions = [];\n\n  var listener = function listener() {\n    DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n    loaded = 1;\n    functions.map(function (fn) {\n      return fn();\n    });\n  };\n\n  var loaded = false;\n\n  if (IS_DOM) {\n    loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n    if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n  }\n\n  function domready (fn) {\n    if (!IS_DOM) return;\n    loaded ? setTimeout(fn, 0) : functions.push(fn);\n  }\n\n  function toHtml(abstractNodes) {\n    var tag = abstractNodes.tag,\n        _abstractNodes$attrib = abstractNodes.attributes,\n        attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n        _abstractNodes$childr = abstractNodes.children,\n        children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n    if (typeof abstractNodes === 'string') {\n      return htmlEscape(abstractNodes);\n    } else {\n      return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n    }\n  }\n\n  function iconFromMapping(mapping, prefix, iconName) {\n    if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n      return {\n        prefix: prefix,\n        iconName: iconName,\n        icon: mapping[prefix][iconName]\n      };\n    }\n  }\n\n  /**\n   * Internal helper to bind a function known to have 4 arguments\n   * to a given context.\n   */\n\n  var bindInternal4 = function bindInternal4(func, thisContext) {\n    return function (a, b, c, d) {\n      return func.call(thisContext, a, b, c, d);\n    };\n  };\n\n  /**\n   * # Reduce\n   *\n   * A fast object `.reduce()` implementation.\n   *\n   * @param  {Object}   subject      The object to reduce over.\n   * @param  {Function} fn           The reducer function.\n   * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n   * @param  {Object}   thisContext  The context for the reducer.\n   * @return {mixed}                 The final result.\n   */\n\n\n  var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n    var keys = Object.keys(subject),\n        length = keys.length,\n        iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n        i,\n        key,\n        result;\n\n    if (initialValue === undefined) {\n      i = 1;\n      result = subject[keys[0]];\n    } else {\n      i = 0;\n      result = initialValue;\n    }\n\n    for (; i < length; i++) {\n      key = keys[i];\n      result = iterator(result, subject[key], key, subject);\n    }\n\n    return result;\n  };\n\n  /**\n   * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n   *\n   * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n   * Permission is hereby granted, free of charge, to any person obtaining\n   * a 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\n   * permit persons to whom the Software is furnished to do so, subject to\n   * the following conditions:\n\n   * The above copyright notice and this permission notice shall be\n   * included in all copies or substantial portions of the Software.\n\n   * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n   * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n   * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n   * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n   */\n  function ucs2decode(string) {\n    var output = [];\n    var counter = 0;\n    var length = string.length;\n\n    while (counter < length) {\n      var value = string.charCodeAt(counter++);\n\n      if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n        var extra = string.charCodeAt(counter++);\n\n        if ((extra & 0xFC00) == 0xDC00) {\n          // eslint-disable-line eqeqeq\n          output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n        } else {\n          output.push(value);\n          counter--;\n        }\n      } else {\n        output.push(value);\n      }\n    }\n\n    return output;\n  }\n\n  function toHex(unicode) {\n    var decoded = ucs2decode(unicode);\n    return decoded.length === 1 ? decoded[0].toString(16) : null;\n  }\n  function codePointAt(string, index) {\n    var size = string.length;\n    var first = string.charCodeAt(index);\n    var second;\n\n    if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n      second = string.charCodeAt(index + 1);\n\n      if (second >= 0xDC00 && second <= 0xDFFF) {\n        return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n      }\n    }\n\n    return first;\n  }\n\n  function normalizeIcons(icons) {\n    return Object.keys(icons).reduce(function (acc, iconName) {\n      var icon = icons[iconName];\n      var expanded = !!icon.icon;\n\n      if (expanded) {\n        acc[icon.iconName] = icon.icon;\n      } else {\n        acc[iconName] = icon;\n      }\n\n      return acc;\n    }, {});\n  }\n\n  function defineIcons(prefix, icons) {\n    var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var _params$skipHooks = params.skipHooks,\n        skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n    var normalized = normalizeIcons(icons);\n\n    if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n      namespace.hooks.addPack(prefix, normalizeIcons(icons));\n    } else {\n      namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n    }\n    /**\n     * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n     * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n     * for `fas` so we'll ease the upgrade process for our users by automatically defining\n     * this as well.\n     */\n\n\n    if (prefix === 'fas') {\n      defineIcons('fa', icons);\n    }\n  }\n\n  var _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\n  var styles = namespace.styles,\n      shims = namespace.shims;\n  var LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\n  var _defaultUsablePrefix = null;\n  var _byUnicode = {};\n  var _byLigature = {};\n  var _byOldName = {};\n  var _byOldUnicode = {};\n  var _byAlias = {};\n  var PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\n  function isReserved(name) {\n    return ~RESERVED_CLASSES.indexOf(name);\n  }\n\n  function getIconName(cssPrefix, cls) {\n    var parts = cls.split('-');\n    var prefix = parts[0];\n    var iconName = parts.slice(1).join('-');\n\n    if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n      return iconName;\n    } else {\n      return null;\n    }\n  }\n  var build = function build() {\n    var lookup = function lookup(reducer) {\n      return reduce(styles, function (o, style, prefix) {\n        o[prefix] = reduce(style, reducer, {});\n        return o;\n      }, {});\n    };\n\n    _byUnicode = lookup(function (acc, icon, iconName) {\n      if (icon[3]) {\n        acc[icon[3]] = iconName;\n      }\n\n      if (icon[2]) {\n        var aliases = icon[2].filter(function (a) {\n          return typeof a === 'number';\n        });\n        aliases.forEach(function (alias) {\n          acc[alias.toString(16)] = iconName;\n        });\n      }\n\n      return acc;\n    });\n    _byLigature = lookup(function (acc, icon, iconName) {\n      acc[iconName] = iconName;\n\n      if (icon[2]) {\n        var aliases = icon[2].filter(function (a) {\n          return typeof a === 'string';\n        });\n        aliases.forEach(function (alias) {\n          acc[alias] = iconName;\n        });\n      }\n\n      return acc;\n    });\n    _byAlias = lookup(function (acc, icon, iconName) {\n      var aliases = icon[2];\n      acc[iconName] = iconName;\n      aliases.forEach(function (alias) {\n        acc[alias] = iconName;\n      });\n      return acc;\n    }); // If we have a Kit, we can't determine if regular is available since we\n    // could be auto-fetching it. We'll have to assume that it is available.\n\n    var hasRegular = 'far' in styles || config.autoFetchSvg;\n    var shimLookups = reduce(shims, function (acc, shim) {\n      var maybeNameMaybeUnicode = shim[0];\n      var prefix = shim[1];\n      var iconName = shim[2];\n\n      if (prefix === 'far' && !hasRegular) {\n        prefix = 'fas';\n      }\n\n      if (typeof maybeNameMaybeUnicode === 'string') {\n        acc.names[maybeNameMaybeUnicode] = {\n          prefix: prefix,\n          iconName: iconName\n        };\n      }\n\n      if (typeof maybeNameMaybeUnicode === 'number') {\n        acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n          prefix: prefix,\n          iconName: iconName\n        };\n      }\n\n      return acc;\n    }, {\n      names: {},\n      unicodes: {}\n    });\n    _byOldName = shimLookups.names;\n    _byOldUnicode = shimLookups.unicodes;\n    _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n      family: config.familyDefault\n    });\n  };\n  onChange(function (c) {\n    _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n      family: config.familyDefault\n    });\n  });\n  build();\n  function byUnicode(prefix, unicode) {\n    return (_byUnicode[prefix] || {})[unicode];\n  }\n  function byLigature(prefix, ligature) {\n    return (_byLigature[prefix] || {})[ligature];\n  }\n  function byAlias(prefix, alias) {\n    return (_byAlias[prefix] || {})[alias];\n  }\n  function byOldName(name) {\n    return _byOldName[name] || {\n      prefix: null,\n      iconName: null\n    };\n  }\n  function byOldUnicode(unicode) {\n    var oldUnicode = _byOldUnicode[unicode];\n    var newUnicode = byUnicode('fas', unicode);\n    return oldUnicode || (newUnicode ? {\n      prefix: 'fas',\n      iconName: newUnicode\n    } : null) || {\n      prefix: null,\n      iconName: null\n    };\n  }\n  function getDefaultUsablePrefix() {\n    return _defaultUsablePrefix;\n  }\n  var emptyCanonicalIcon = function emptyCanonicalIcon() {\n    return {\n      prefix: null,\n      iconName: null,\n      rest: []\n    };\n  };\n  function getCanonicalPrefix(styleOrPrefix) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var _params$family = params.family,\n        family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n    var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n    var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n    var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n    return prefix || defined || null;\n  }\n  var PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\n  function getCanonicalIcon(values) {\n    var _famProps;\n\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var _params$skipLookups = params.skipLookups,\n        skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n    var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n    var givenPrefix = null;\n    var family = FAMILY_CLASSIC;\n\n    if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n      return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n    })) {\n      family = FAMILY_CLASSIC;\n    }\n\n    if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n      return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n    })) {\n      family = FAMILY_SHARP;\n    }\n\n    var canonical = values.reduce(function (acc, cls) {\n      var iconName = getIconName(config.cssPrefix, cls);\n\n      if (styles[cls]) {\n        cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n        givenPrefix = cls;\n        acc.prefix = cls;\n      } else if (PREFIXES[family].indexOf(cls) > -1) {\n        givenPrefix = cls;\n        acc.prefix = getCanonicalPrefix(cls, {\n          family: family\n        });\n      } else if (iconName) {\n        acc.iconName = iconName;\n      } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n        acc.rest.push(cls);\n      }\n\n      if (!skipLookups && acc.prefix && acc.iconName) {\n        var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n        var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n        if (shim.prefix) {\n          givenPrefix = null;\n        }\n\n        acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n        acc.prefix = shim.prefix || acc.prefix;\n\n        if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n          // Allow a fallback from the regular style to solid if regular is not available\n          // but only if we aren't auto-fetching SVGs\n          acc.prefix = 'fas';\n        }\n      }\n\n      return acc;\n    }, emptyCanonicalIcon());\n\n    if (values.includes('fa-brands') || values.includes('fab')) {\n      canonical.prefix = 'fab';\n    }\n\n    if (values.includes('fa-duotone') || values.includes('fad')) {\n      canonical.prefix = 'fad';\n    }\n\n    if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n      canonical.prefix = 'fass';\n      canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n    }\n\n    if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n      // The fa prefix is not canonical. So if it has made it through until this point\n      // we will shift it to the correct prefix.\n      canonical.prefix = getDefaultUsablePrefix() || 'fas';\n    }\n\n    return canonical;\n  }\n\n  var Library = /*#__PURE__*/function () {\n    function Library() {\n      _classCallCheck(this, Library);\n\n      this.definitions = {};\n    }\n\n    _createClass(Library, [{\n      key: \"add\",\n      value: function add() {\n        var _this = this;\n\n        for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n          definitions[_key] = arguments[_key];\n        }\n\n        var additions = definitions.reduce(this._pullDefinitions, {});\n        Object.keys(additions).forEach(function (key) {\n          _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n          defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n          var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n          if (longPrefix) defineIcons(longPrefix, additions[key]);\n          build();\n        });\n      }\n    }, {\n      key: \"reset\",\n      value: function reset() {\n        this.definitions = {};\n      }\n    }, {\n      key: \"_pullDefinitions\",\n      value: function _pullDefinitions(additions, definition) {\n        var normalized = definition.prefix && definition.iconName && definition.icon ? {\n          0: definition\n        } : definition;\n        Object.keys(normalized).map(function (key) {\n          var _normalized$key = normalized[key],\n              prefix = _normalized$key.prefix,\n              iconName = _normalized$key.iconName,\n              icon = _normalized$key.icon;\n          var aliases = icon[2];\n          if (!additions[prefix]) additions[prefix] = {};\n\n          if (aliases.length > 0) {\n            aliases.forEach(function (alias) {\n              if (typeof alias === 'string') {\n                additions[prefix][alias] = icon;\n              }\n            });\n          }\n\n          additions[prefix][iconName] = icon;\n        });\n        return additions;\n      }\n    }]);\n\n    return Library;\n  }();\n\n  var _plugins = [];\n  var _hooks = {};\n  var providers = {};\n  var defaultProviderKeys = Object.keys(providers);\n  function registerPlugins(nextPlugins, _ref) {\n    var obj = _ref.mixoutsTo;\n    _plugins = nextPlugins;\n    _hooks = {};\n    Object.keys(providers).forEach(function (k) {\n      if (defaultProviderKeys.indexOf(k) === -1) {\n        delete providers[k];\n      }\n    });\n\n    _plugins.forEach(function (plugin) {\n      var mixout = plugin.mixout ? plugin.mixout() : {};\n      Object.keys(mixout).forEach(function (tk) {\n        if (typeof mixout[tk] === 'function') {\n          obj[tk] = mixout[tk];\n        }\n\n        if (_typeof(mixout[tk]) === 'object') {\n          Object.keys(mixout[tk]).forEach(function (sk) {\n            if (!obj[tk]) {\n              obj[tk] = {};\n            }\n\n            obj[tk][sk] = mixout[tk][sk];\n          });\n        }\n      });\n\n      if (plugin.hooks) {\n        var hooks = plugin.hooks();\n        Object.keys(hooks).forEach(function (hook) {\n          if (!_hooks[hook]) {\n            _hooks[hook] = [];\n          }\n\n          _hooks[hook].push(hooks[hook]);\n        });\n      }\n\n      if (plugin.provides) {\n        plugin.provides(providers);\n      }\n    });\n\n    return obj;\n  }\n  function chainHooks(hook, accumulator) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    var hookFns = _hooks[hook] || [];\n    hookFns.forEach(function (hookFn) {\n      accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n    });\n    return accumulator;\n  }\n  function callHooks(hook) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    var hookFns = _hooks[hook] || [];\n    hookFns.forEach(function (hookFn) {\n      hookFn.apply(null, args);\n    });\n    return undefined;\n  }\n  function callProvided() {\n    var hook = arguments[0];\n    var args = Array.prototype.slice.call(arguments, 1);\n    return providers[hook] ? providers[hook].apply(null, args) : undefined;\n  }\n\n  function findIconDefinition(iconLookup) {\n    if (iconLookup.prefix === 'fa') {\n      iconLookup.prefix = 'fas';\n    }\n\n    var iconName = iconLookup.iconName;\n    var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n    if (!iconName) return;\n    iconName = byAlias(prefix, iconName) || iconName;\n    return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n  }\n  var library = new Library();\n  var noAuto = function noAuto() {\n    config.autoReplaceSvg = false;\n    config.observeMutations = false;\n    callHooks('noAuto');\n  };\n  var dom = {\n    i2svg: function i2svg() {\n      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      if (IS_DOM) {\n        callHooks('beforeI2svg', params);\n        callProvided('pseudoElements2svg', params);\n        return callProvided('i2svg', params);\n      } else {\n        return Promise.reject('Operation requires a DOM of some kind.');\n      }\n    },\n    watch: function watch() {\n      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n      if (config.autoReplaceSvg === false) {\n        config.autoReplaceSvg = true;\n      }\n\n      config.observeMutations = true;\n      domready(function () {\n        autoReplace({\n          autoReplaceSvgRoot: autoReplaceSvgRoot\n        });\n        callHooks('watch', params);\n      });\n    }\n  };\n  var parse = {\n    icon: function icon(_icon) {\n      if (_icon === null) {\n        return null;\n      }\n\n      if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n        return {\n          prefix: _icon.prefix,\n          iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n        };\n      }\n\n      if (Array.isArray(_icon) && _icon.length === 2) {\n        var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n        var prefix = getCanonicalPrefix(_icon[0]);\n        return {\n          prefix: prefix,\n          iconName: byAlias(prefix, iconName) || iconName\n        };\n      }\n\n      if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n        var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n          skipLookups: true\n        });\n        return {\n          prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n          iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n        };\n      }\n\n      if (typeof _icon === 'string') {\n        var _prefix = getDefaultUsablePrefix();\n\n        return {\n          prefix: _prefix,\n          iconName: byAlias(_prefix, _icon) || _icon\n        };\n      }\n    }\n  };\n  var api = {\n    noAuto: noAuto,\n    config: config,\n    dom: dom,\n    parse: parse,\n    library: library,\n    findIconDefinition: findIconDefinition,\n    toHtml: toHtml\n  };\n\n  var autoReplace = function autoReplace() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n        autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n    if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n      node: autoReplaceSvgRoot\n    });\n  };\n\n  function domVariants(val, abstractCreator) {\n    Object.defineProperty(val, 'abstract', {\n      get: abstractCreator\n    });\n    Object.defineProperty(val, 'html', {\n      get: function get() {\n        return val.abstract.map(function (a) {\n          return toHtml(a);\n        });\n      }\n    });\n    Object.defineProperty(val, 'node', {\n      get: function get() {\n        if (!IS_DOM) return;\n        var container = DOCUMENT.createElement('div');\n        container.innerHTML = val.html;\n        return container.children;\n      }\n    });\n    return val;\n  }\n\n  function asIcon (_ref) {\n    var children = _ref.children,\n        main = _ref.main,\n        mask = _ref.mask,\n        attributes = _ref.attributes,\n        styles = _ref.styles,\n        transform = _ref.transform;\n\n    if (transformIsMeaningful(transform) && main.found && !mask.found) {\n      var width = main.width,\n          height = main.height;\n      var offset = {\n        x: width / height / 2,\n        y: 0.5\n      };\n      attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n        'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n      }));\n    }\n\n    return [{\n      tag: 'svg',\n      attributes: attributes,\n      children: children\n    }];\n  }\n\n  function asSymbol (_ref) {\n    var prefix = _ref.prefix,\n        iconName = _ref.iconName,\n        children = _ref.children,\n        attributes = _ref.attributes,\n        symbol = _ref.symbol;\n    var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n    return [{\n      tag: 'svg',\n      attributes: {\n        style: 'display: none;'\n      },\n      children: [{\n        tag: 'symbol',\n        attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n          id: id\n        }),\n        children: children\n      }]\n    }];\n  }\n\n  function makeInlineSvgAbstract(params) {\n    var _params$icons = params.icons,\n        main = _params$icons.main,\n        mask = _params$icons.mask,\n        prefix = params.prefix,\n        iconName = params.iconName,\n        transform = params.transform,\n        symbol = params.symbol,\n        title = params.title,\n        maskId = params.maskId,\n        titleId = params.titleId,\n        extra = params.extra,\n        _params$watchable = params.watchable,\n        watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n    var _ref = mask.found ? mask : main,\n        width = _ref.width,\n        height = _ref.height;\n\n    var isUploadedIcon = prefix === 'fak';\n    var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n      return extra.classes.indexOf(c) === -1;\n    }).filter(function (c) {\n      return c !== '' || !!c;\n    }).concat(extra.classes).join(' ');\n    var content = {\n      children: [],\n      attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n        'data-prefix': prefix,\n        'data-icon': iconName,\n        'class': attrClass,\n        'role': extra.attributes.role || 'img',\n        'xmlns': 'http://www.w3.org/2000/svg',\n        'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n      })\n    };\n    var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n      width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n    } : {};\n\n    if (watchable) {\n      content.attributes[DATA_FA_I2SVG] = '';\n    }\n\n    if (title) {\n      content.children.push({\n        tag: 'title',\n        attributes: {\n          id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n        },\n        children: [title]\n      });\n      delete content.attributes.title;\n    }\n\n    var args = _objectSpread2(_objectSpread2({}, content), {}, {\n      prefix: prefix,\n      iconName: iconName,\n      main: main,\n      mask: mask,\n      maskId: maskId,\n      transform: transform,\n      symbol: symbol,\n      styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n    });\n\n    var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n      children: [],\n      attributes: {}\n    } : callProvided('generateAbstractIcon', args) || {\n      children: [],\n      attributes: {}\n    },\n        children = _ref2.children,\n        attributes = _ref2.attributes;\n\n    args.children = children;\n    args.attributes = attributes;\n\n    if (symbol) {\n      return asSymbol(args);\n    } else {\n      return asIcon(args);\n    }\n  }\n  function makeLayersTextAbstract(params) {\n    var content = params.content,\n        width = params.width,\n        height = params.height,\n        transform = params.transform,\n        title = params.title,\n        extra = params.extra,\n        _params$watchable2 = params.watchable,\n        watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n    var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n      'title': title\n    } : {}), {}, {\n      'class': extra.classes.join(' ')\n    });\n\n    if (watchable) {\n      attributes[DATA_FA_I2SVG] = '';\n    }\n\n    var styles = _objectSpread2({}, extra.styles);\n\n    if (transformIsMeaningful(transform)) {\n      styles['transform'] = transformForCss({\n        transform: transform,\n        startCentered: true,\n        width: width,\n        height: height\n      });\n      styles['-webkit-transform'] = styles['transform'];\n    }\n\n    var styleString = joinStyles(styles);\n\n    if (styleString.length > 0) {\n      attributes['style'] = styleString;\n    }\n\n    var val = [];\n    val.push({\n      tag: 'span',\n      attributes: attributes,\n      children: [content]\n    });\n\n    if (title) {\n      val.push({\n        tag: 'span',\n        attributes: {\n          class: 'sr-only'\n        },\n        children: [title]\n      });\n    }\n\n    return val;\n  }\n  function makeLayersCounterAbstract(params) {\n    var content = params.content,\n        title = params.title,\n        extra = params.extra;\n\n    var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n      'title': title\n    } : {}), {}, {\n      'class': extra.classes.join(' ')\n    });\n\n    var styleString = joinStyles(extra.styles);\n\n    if (styleString.length > 0) {\n      attributes['style'] = styleString;\n    }\n\n    var val = [];\n    val.push({\n      tag: 'span',\n      attributes: attributes,\n      children: [content]\n    });\n\n    if (title) {\n      val.push({\n        tag: 'span',\n        attributes: {\n          class: 'sr-only'\n        },\n        children: [title]\n      });\n    }\n\n    return val;\n  }\n\n  var styles$1 = namespace.styles;\n  function asFoundIcon(icon) {\n    var width = icon[0];\n    var height = icon[1];\n\n    var _icon$slice = icon.slice(4),\n        _icon$slice2 = _slicedToArray(_icon$slice, 1),\n        vectorData = _icon$slice2[0];\n\n    var element = null;\n\n    if (Array.isArray(vectorData)) {\n      element = {\n        tag: 'g',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n        },\n        children: [{\n          tag: 'path',\n          attributes: {\n            class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n            fill: 'currentColor',\n            d: vectorData[0]\n          }\n        }, {\n          tag: 'path',\n          attributes: {\n            class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n            fill: 'currentColor',\n            d: vectorData[1]\n          }\n        }]\n      };\n    } else {\n      element = {\n        tag: 'path',\n        attributes: {\n          fill: 'currentColor',\n          d: vectorData\n        }\n      };\n    }\n\n    return {\n      found: true,\n      width: width,\n      height: height,\n      icon: element\n    };\n  }\n  var missingIconResolutionMixin = {\n    found: false,\n    width: 512,\n    height: 512\n  };\n\n  function maybeNotifyMissing(iconName, prefix) {\n    if (!PRODUCTION && !config.showMissingIcons && iconName) {\n      console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n    }\n  }\n\n  function findIcon(iconName, prefix) {\n    var givenPrefix = prefix;\n\n    if (prefix === 'fa' && config.styleDefault !== null) {\n      prefix = getDefaultUsablePrefix();\n    }\n\n    return new Promise(function (resolve, reject) {\n      ({\n        found: false,\n        width: 512,\n        height: 512,\n        icon: callProvided('missingIconAbstract') || {}\n      });\n\n      if (givenPrefix === 'fa') {\n        var shim = byOldName(iconName) || {};\n        iconName = shim.iconName || iconName;\n        prefix = shim.prefix || prefix;\n      }\n\n      if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n        var icon = styles$1[prefix][iconName];\n        return resolve(asFoundIcon(icon));\n      }\n\n      maybeNotifyMissing(iconName, prefix);\n      resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n        icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n      }));\n    });\n  }\n\n  var noop$1 = function noop() {};\n\n  var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n    mark: noop$1,\n    measure: noop$1\n  };\n  var preamble = \"FA \\\"6.4.0\\\"\";\n\n  var begin = function begin(name) {\n    p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n    return function () {\n      return end(name);\n    };\n  };\n\n  var end = function end(name) {\n    p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n    p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n  };\n\n  var perf = {\n    begin: begin,\n    end: end\n  };\n\n  var noop$2 = function noop() {};\n\n  function isWatched(node) {\n    var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n    return typeof i2svg === 'string';\n  }\n\n  function hasPrefixAndIcon(node) {\n    var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n    var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n    return prefix && icon;\n  }\n\n  function hasBeenReplaced(node) {\n    return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n  }\n\n  function getMutator() {\n    if (config.autoReplaceSvg === true) {\n      return mutators.replace;\n    }\n\n    var mutator = mutators[config.autoReplaceSvg];\n    return mutator || mutators.replace;\n  }\n\n  function createElementNS(tag) {\n    return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n  }\n\n  function createElement(tag) {\n    return DOCUMENT.createElement(tag);\n  }\n\n  function convertSVG(abstractObj) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var _params$ceFn = params.ceFn,\n        ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n    if (typeof abstractObj === 'string') {\n      return DOCUMENT.createTextNode(abstractObj);\n    }\n\n    var tag = ceFn(abstractObj.tag);\n    Object.keys(abstractObj.attributes || []).forEach(function (key) {\n      tag.setAttribute(key, abstractObj.attributes[key]);\n    });\n    var children = abstractObj.children || [];\n    children.forEach(function (child) {\n      tag.appendChild(convertSVG(child, {\n        ceFn: ceFn\n      }));\n    });\n    return tag;\n  }\n\n  function nodeAsComment(node) {\n    var comment = \" \".concat(node.outerHTML, \" \");\n    /* BEGIN.ATTRIBUTION */\n\n    comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n    /* END.ATTRIBUTION */\n\n    return comment;\n  }\n\n  var mutators = {\n    replace: function replace(mutation) {\n      var node = mutation[0];\n\n      if (node.parentNode) {\n        mutation[1].forEach(function (_abstract) {\n          node.parentNode.insertBefore(convertSVG(_abstract), node);\n        });\n\n        if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n          var comment = DOCUMENT.createComment(nodeAsComment(node));\n          node.parentNode.replaceChild(comment, node);\n        } else {\n          node.remove();\n        }\n      }\n    },\n    nest: function nest(mutation) {\n      var node = mutation[0];\n      var _abstract2 = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n      // Short-circuit to the standard replacement\n\n      if (~classArray(node).indexOf(config.replacementClass)) {\n        return mutators.replace(mutation);\n      }\n\n      var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n      delete _abstract2[0].attributes.id;\n\n      if (_abstract2[0].attributes.class) {\n        var splitClasses = _abstract2[0].attributes.class.split(' ').reduce(function (acc, cls) {\n          if (cls === config.replacementClass || cls.match(forSvg)) {\n            acc.toSvg.push(cls);\n          } else {\n            acc.toNode.push(cls);\n          }\n\n          return acc;\n        }, {\n          toNode: [],\n          toSvg: []\n        });\n\n        _abstract2[0].attributes.class = splitClasses.toSvg.join(' ');\n\n        if (splitClasses.toNode.length === 0) {\n          node.removeAttribute('class');\n        } else {\n          node.setAttribute('class', splitClasses.toNode.join(' '));\n        }\n      }\n\n      var newInnerHTML = _abstract2.map(function (a) {\n        return toHtml(a);\n      }).join('\\n');\n\n      node.setAttribute(DATA_FA_I2SVG, '');\n      node.innerHTML = newInnerHTML;\n    }\n  };\n\n  function performOperationSync(op) {\n    op();\n  }\n\n  function perform(mutations, callback) {\n    var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n    if (mutations.length === 0) {\n      callbackFunction();\n    } else {\n      var frame = performOperationSync;\n\n      if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n        frame = WINDOW.requestAnimationFrame || performOperationSync;\n      }\n\n      frame(function () {\n        var mutator = getMutator();\n        var mark = perf.begin('mutate');\n        mutations.map(mutator);\n        mark();\n        callbackFunction();\n      });\n    }\n  }\n  var disabled = false;\n  function disableObservation() {\n    disabled = true;\n  }\n  function enableObservation() {\n    disabled = false;\n  }\n  var mo = null;\n  function observe(options) {\n    if (!MUTATION_OBSERVER) {\n      return;\n    }\n\n    if (!config.observeMutations) {\n      return;\n    }\n\n    var _options$treeCallback = options.treeCallback,\n        treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n        _options$nodeCallback = options.nodeCallback,\n        nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n        _options$pseudoElemen = options.pseudoElementsCallback,\n        pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n        _options$observeMutat = options.observeMutationsRoot,\n        observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n    mo = new MUTATION_OBSERVER(function (objects) {\n      if (disabled) return;\n      var defaultPrefix = getDefaultUsablePrefix();\n      toArray(objects).forEach(function (mutationRecord) {\n        if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n          if (config.searchPseudoElements) {\n            pseudoElementsCallback(mutationRecord.target);\n          }\n\n          treeCallback(mutationRecord.target);\n        }\n\n        if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target.parentNode);\n        }\n\n        if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n          if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n            var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n                prefix = _getCanonicalIcon.prefix,\n                iconName = _getCanonicalIcon.iconName;\n\n            mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n            if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n          } else if (hasBeenReplaced(mutationRecord.target)) {\n            nodeCallback(mutationRecord.target);\n          }\n        }\n      });\n    });\n    if (!IS_DOM) return;\n    mo.observe(observeMutationsRoot, {\n      childList: true,\n      attributes: true,\n      characterData: true,\n      subtree: true\n    });\n  }\n  function disconnect() {\n    if (!mo) return;\n    mo.disconnect();\n  }\n\n  function styleParser (node) {\n    var style = node.getAttribute('style');\n    var val = [];\n\n    if (style) {\n      val = style.split(';').reduce(function (acc, style) {\n        var styles = style.split(':');\n        var prop = styles[0];\n        var value = styles.slice(1);\n\n        if (prop && value.length > 0) {\n          acc[prop] = value.join(':').trim();\n        }\n\n        return acc;\n      }, {});\n    }\n\n    return val;\n  }\n\n  function classParser (node) {\n    var existingPrefix = node.getAttribute('data-prefix');\n    var existingIconName = node.getAttribute('data-icon');\n    var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n    var val = getCanonicalIcon(classArray(node));\n\n    if (!val.prefix) {\n      val.prefix = getDefaultUsablePrefix();\n    }\n\n    if (existingPrefix && existingIconName) {\n      val.prefix = existingPrefix;\n      val.iconName = existingIconName;\n    }\n\n    if (val.iconName && val.prefix) {\n      return val;\n    }\n\n    if (val.prefix && innerText.length > 0) {\n      val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n    }\n\n    if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n      val.iconName = node.firstChild.data;\n    }\n\n    return val;\n  }\n\n  function attributesParser (node) {\n    var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n      if (acc.name !== 'class' && acc.name !== 'style') {\n        acc[attr.name] = attr.value;\n      }\n\n      return acc;\n    }, {});\n    var title = node.getAttribute('title');\n    var titleId = node.getAttribute('data-fa-title-id');\n\n    if (config.autoA11y) {\n      if (title) {\n        extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n      } else {\n        extraAttributes['aria-hidden'] = 'true';\n        extraAttributes['focusable'] = 'false';\n      }\n    }\n\n    return extraAttributes;\n  }\n\n  function blankMeta() {\n    return {\n      iconName: null,\n      title: null,\n      titleId: null,\n      prefix: null,\n      transform: meaninglessTransform,\n      symbol: false,\n      mask: {\n        iconName: null,\n        prefix: null,\n        rest: []\n      },\n      maskId: null,\n      extra: {\n        classes: [],\n        styles: {},\n        attributes: {}\n      }\n    };\n  }\n  function parseMeta(node) {\n    var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      styleParser: true\n    };\n\n    var _classParser = classParser(node),\n        iconName = _classParser.iconName,\n        prefix = _classParser.prefix,\n        extraClasses = _classParser.rest;\n\n    var extraAttributes = attributesParser(node);\n    var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n    var extraStyles = parser.styleParser ? styleParser(node) : [];\n    return _objectSpread2({\n      iconName: iconName,\n      title: node.getAttribute('title'),\n      titleId: node.getAttribute('data-fa-title-id'),\n      prefix: prefix,\n      transform: meaninglessTransform,\n      mask: {\n        iconName: null,\n        prefix: null,\n        rest: []\n      },\n      maskId: null,\n      symbol: false,\n      extra: {\n        classes: extraClasses,\n        styles: extraStyles,\n        attributes: extraAttributes\n      }\n    }, pluginMeta);\n  }\n\n  var styles$2 = namespace.styles;\n\n  function generateMutation(node) {\n    var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n      styleParser: false\n    }) : parseMeta(node);\n\n    if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n      return callProvided('generateLayersText', node, nodeMeta);\n    } else {\n      return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n    }\n  }\n\n  var knownPrefixes = new Set();\n  FAMILIES.map(function (family) {\n    knownPrefixes.add(\"fa-\".concat(family));\n  });\n  Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\n  Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\n  knownPrefixes = _toConsumableArray(knownPrefixes);\n\n  function onTree(root) {\n    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    if (!IS_DOM) return Promise.resolve();\n    var htmlClassList = DOCUMENT.documentElement.classList;\n\n    var hclAdd = function hclAdd(suffix) {\n      return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n    };\n\n    var hclRemove = function hclRemove(suffix) {\n      return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n    };\n\n    var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n      return \"fa-\".concat(f);\n    }).concat(Object.keys(styles$2));\n\n    if (!prefixes.includes('fa')) {\n      prefixes.push('fa');\n    }\n\n    var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n      return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n    })).join(', ');\n\n    if (prefixesDomQuery.length === 0) {\n      return Promise.resolve();\n    }\n\n    var candidates = [];\n\n    try {\n      candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n    } catch (e) {// noop\n    }\n\n    if (candidates.length > 0) {\n      hclAdd('pending');\n      hclRemove('complete');\n    } else {\n      return Promise.resolve();\n    }\n\n    var mark = perf.begin('onTree');\n    var mutations = candidates.reduce(function (acc, node) {\n      try {\n        var mutation = generateMutation(node);\n\n        if (mutation) {\n          acc.push(mutation);\n        }\n      } catch (e) {\n        if (!PRODUCTION) {\n          if (e.name === 'MissingIcon') {\n            console.error(e);\n          }\n        }\n      }\n\n      return acc;\n    }, []);\n    return new Promise(function (resolve, reject) {\n      Promise.all(mutations).then(function (resolvedMutations) {\n        perform(resolvedMutations, function () {\n          hclAdd('active');\n          hclAdd('complete');\n          hclRemove('pending');\n          if (typeof callback === 'function') callback();\n          mark();\n          resolve();\n        });\n      }).catch(function (e) {\n        mark();\n        reject(e);\n      });\n    });\n  }\n\n  function onNode(node) {\n    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    generateMutation(node).then(function (mutation) {\n      if (mutation) {\n        perform([mutation], callback);\n      }\n    });\n  }\n\n  function resolveIcons(next) {\n    return function (maybeIconDefinition) {\n      var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n      var mask = params.mask;\n\n      if (mask) {\n        mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n      }\n\n      return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n        mask: mask\n      }));\n    };\n  }\n\n  var render = function render(iconDefinition) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var _params$transform = params.transform,\n        transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n        _params$symbol = params.symbol,\n        symbol = _params$symbol === void 0 ? false : _params$symbol,\n        _params$mask = params.mask,\n        mask = _params$mask === void 0 ? null : _params$mask,\n        _params$maskId = params.maskId,\n        maskId = _params$maskId === void 0 ? null : _params$maskId,\n        _params$title = params.title,\n        title = _params$title === void 0 ? null : _params$title,\n        _params$titleId = params.titleId,\n        titleId = _params$titleId === void 0 ? null : _params$titleId,\n        _params$classes = params.classes,\n        classes = _params$classes === void 0 ? [] : _params$classes,\n        _params$attributes = params.attributes,\n        attributes = _params$attributes === void 0 ? {} : _params$attributes,\n        _params$styles = params.styles,\n        styles = _params$styles === void 0 ? {} : _params$styles;\n    if (!iconDefinition) return;\n    var prefix = iconDefinition.prefix,\n        iconName = iconDefinition.iconName,\n        icon = iconDefinition.icon;\n    return domVariants(_objectSpread2({\n      type: 'icon'\n    }, iconDefinition), function () {\n      callHooks('beforeDOMElementCreation', {\n        iconDefinition: iconDefinition,\n        params: params\n      });\n\n      if (config.autoA11y) {\n        if (title) {\n          attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n        } else {\n          attributes['aria-hidden'] = 'true';\n          attributes['focusable'] = 'false';\n        }\n      }\n\n      return makeInlineSvgAbstract({\n        icons: {\n          main: asFoundIcon(icon),\n          mask: mask ? asFoundIcon(mask.icon) : {\n            found: false,\n            width: null,\n            height: null,\n            icon: {}\n          }\n        },\n        prefix: prefix,\n        iconName: iconName,\n        transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n        symbol: symbol,\n        title: title,\n        maskId: maskId,\n        titleId: titleId,\n        extra: {\n          attributes: attributes,\n          styles: styles,\n          classes: classes\n        }\n      });\n    });\n  };\n  var ReplaceElements = {\n    mixout: function mixout() {\n      return {\n        icon: resolveIcons(render)\n      };\n    },\n    hooks: function hooks() {\n      return {\n        mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n          accumulator.treeCallback = onTree;\n          accumulator.nodeCallback = onNode;\n          return accumulator;\n        }\n      };\n    },\n    provides: function provides(providers$$1) {\n      providers$$1.i2svg = function (params) {\n        var _params$node = params.node,\n            node = _params$node === void 0 ? DOCUMENT : _params$node,\n            _params$callback = params.callback,\n            callback = _params$callback === void 0 ? function () {} : _params$callback;\n        return onTree(node, callback);\n      };\n\n      providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n        var iconName = nodeMeta.iconName,\n            title = nodeMeta.title,\n            titleId = nodeMeta.titleId,\n            prefix = nodeMeta.prefix,\n            transform = nodeMeta.transform,\n            symbol = nodeMeta.symbol,\n            mask = nodeMeta.mask,\n            maskId = nodeMeta.maskId,\n            extra = nodeMeta.extra;\n        return new Promise(function (resolve, reject) {\n          Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n            found: false,\n            width: 512,\n            height: 512,\n            icon: {}\n          })]).then(function (_ref) {\n            var _ref2 = _slicedToArray(_ref, 2),\n                main = _ref2[0],\n                mask = _ref2[1];\n\n            resolve([node, makeInlineSvgAbstract({\n              icons: {\n                main: main,\n                mask: mask\n              },\n              prefix: prefix,\n              iconName: iconName,\n              transform: transform,\n              symbol: symbol,\n              maskId: maskId,\n              title: title,\n              titleId: titleId,\n              extra: extra,\n              watchable: true\n            })]);\n          }).catch(reject);\n        });\n      };\n\n      providers$$1.generateAbstractIcon = function (_ref3) {\n        var children = _ref3.children,\n            attributes = _ref3.attributes,\n            main = _ref3.main,\n            transform = _ref3.transform,\n            styles = _ref3.styles;\n        var styleString = joinStyles(styles);\n\n        if (styleString.length > 0) {\n          attributes['style'] = styleString;\n        }\n\n        var nextChild;\n\n        if (transformIsMeaningful(transform)) {\n          nextChild = callProvided('generateAbstractTransformGrouping', {\n            main: main,\n            transform: transform,\n            containerWidth: main.width,\n            iconWidth: main.width\n          });\n        }\n\n        children.push(nextChild || main.icon);\n        return {\n          children: children,\n          attributes: attributes\n        };\n      };\n    }\n  };\n\n  var Layers = {\n    mixout: function mixout() {\n      return {\n        layer: function layer(assembler) {\n          var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n          var _params$classes = params.classes,\n              classes = _params$classes === void 0 ? [] : _params$classes;\n          return domVariants({\n            type: 'layer'\n          }, function () {\n            callHooks('beforeDOMElementCreation', {\n              assembler: assembler,\n              params: params\n            });\n            var children = [];\n            assembler(function (args) {\n              Array.isArray(args) ? args.map(function (a) {\n                children = children.concat(a.abstract);\n              }) : children = children.concat(args.abstract);\n            });\n            return [{\n              tag: 'span',\n              attributes: {\n                class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n              },\n              children: children\n            }];\n          });\n        }\n      };\n    }\n  };\n\n  var LayersCounter = {\n    mixout: function mixout() {\n      return {\n        counter: function counter(content) {\n          var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n          var _params$title = params.title,\n              title = _params$title === void 0 ? null : _params$title,\n              _params$classes = params.classes,\n              classes = _params$classes === void 0 ? [] : _params$classes,\n              _params$attributes = params.attributes,\n              attributes = _params$attributes === void 0 ? {} : _params$attributes,\n              _params$styles = params.styles,\n              styles = _params$styles === void 0 ? {} : _params$styles;\n          return domVariants({\n            type: 'counter',\n            content: content\n          }, function () {\n            callHooks('beforeDOMElementCreation', {\n              content: content,\n              params: params\n            });\n            return makeLayersCounterAbstract({\n              content: content.toString(),\n              title: title,\n              extra: {\n                attributes: attributes,\n                styles: styles,\n                classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n              }\n            });\n          });\n        }\n      };\n    }\n  };\n\n  var LayersText = {\n    mixout: function mixout() {\n      return {\n        text: function text(content) {\n          var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n          var _params$transform = params.transform,\n              transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n              _params$title = params.title,\n              title = _params$title === void 0 ? null : _params$title,\n              _params$classes = params.classes,\n              classes = _params$classes === void 0 ? [] : _params$classes,\n              _params$attributes = params.attributes,\n              attributes = _params$attributes === void 0 ? {} : _params$attributes,\n              _params$styles = params.styles,\n              styles = _params$styles === void 0 ? {} : _params$styles;\n          return domVariants({\n            type: 'text',\n            content: content\n          }, function () {\n            callHooks('beforeDOMElementCreation', {\n              content: content,\n              params: params\n            });\n            return makeLayersTextAbstract({\n              content: content,\n              transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n              title: title,\n              extra: {\n                attributes: attributes,\n                styles: styles,\n                classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n              }\n            });\n          });\n        }\n      };\n    },\n    provides: function provides(providers$$1) {\n      providers$$1.generateLayersText = function (node, nodeMeta) {\n        var title = nodeMeta.title,\n            transform = nodeMeta.transform,\n            extra = nodeMeta.extra;\n        var width = null;\n        var height = null;\n\n        if (IS_IE) {\n          var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n          var boundingClientRect = node.getBoundingClientRect();\n          width = boundingClientRect.width / computedFontSize;\n          height = boundingClientRect.height / computedFontSize;\n        }\n\n        if (config.autoA11y && !title) {\n          extra.attributes['aria-hidden'] = 'true';\n        }\n\n        return Promise.resolve([node, makeLayersTextAbstract({\n          content: node.innerHTML,\n          width: width,\n          height: height,\n          transform: transform,\n          title: title,\n          extra: extra,\n          watchable: true\n        })]);\n      };\n    }\n  };\n\n  var CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\n  var SECONDARY_UNICODE_RANGE = [1105920, 1112319];\n  function hexValueFromContent(content) {\n    var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n    var codePoint = codePointAt(cleaned, 0);\n    var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n    var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n    return {\n      value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n      isSecondary: isPrependTen || isDoubled\n    };\n  }\n\n  function replaceForPosition(node, position) {\n    var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n    return new Promise(function (resolve, reject) {\n      if (node.getAttribute(pendingAttribute) !== null) {\n        // This node is already being processed\n        return resolve();\n      }\n\n      var children = toArray(node.children);\n      var alreadyProcessedPseudoElement = children.filter(function (c) {\n        return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n      })[0];\n      var styles = WINDOW.getComputedStyle(node, position);\n      var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n      var fontWeight = styles.getPropertyValue('font-weight');\n      var content = styles.getPropertyValue('content');\n\n      if (alreadyProcessedPseudoElement && !fontFamily) {\n        // If we've already processed it but the current computed style does not result in a font-family,\n        // that probably means that a class name that was previously present to make the icon has been\n        // removed. So we now should delete the icon.\n        node.removeChild(alreadyProcessedPseudoElement);\n        return resolve();\n      } else if (fontFamily && content !== 'none' && content !== '') {\n        var _content = styles.getPropertyValue('content');\n\n        var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n        var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n        var _hexValueFromContent = hexValueFromContent(_content),\n            hexValue = _hexValueFromContent.value,\n            isSecondary = _hexValueFromContent.isSecondary;\n\n        var isV4 = fontFamily[0].startsWith('FontAwesome');\n        var iconName = byUnicode(prefix, hexValue);\n        var iconIdentifier = iconName;\n\n        if (isV4) {\n          var iconName4 = byOldUnicode(hexValue);\n\n          if (iconName4.iconName && iconName4.prefix) {\n            iconName = iconName4.iconName;\n            prefix = iconName4.prefix;\n          }\n        } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n        // already done so with the same prefix and iconName\n\n\n        if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n          node.setAttribute(pendingAttribute, iconIdentifier);\n\n          if (alreadyProcessedPseudoElement) {\n            // Delete the old one, since we're replacing it with a new one\n            node.removeChild(alreadyProcessedPseudoElement);\n          }\n\n          var meta = blankMeta();\n          var extra = meta.extra;\n          extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n          findIcon(iconName, prefix).then(function (main) {\n            var _abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n              icons: {\n                main: main,\n                mask: emptyCanonicalIcon()\n              },\n              prefix: prefix,\n              iconName: iconIdentifier,\n              extra: extra,\n              watchable: true\n            }));\n\n            var element = DOCUMENT.createElement('svg');\n\n            if (position === '::before') {\n              node.insertBefore(element, node.firstChild);\n            } else {\n              node.appendChild(element);\n            }\n\n            element.outerHTML = _abstract.map(function (a) {\n              return toHtml(a);\n            }).join('\\n');\n            node.removeAttribute(pendingAttribute);\n            resolve();\n          }).catch(reject);\n        } else {\n          resolve();\n        }\n      } else {\n        resolve();\n      }\n    });\n  }\n\n  function replace(node) {\n    return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n  }\n\n  function processable(node) {\n    return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n  }\n\n  function searchPseudoElements(root) {\n    if (!IS_DOM) return;\n    return new Promise(function (resolve, reject) {\n      var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n      var end = perf.begin('searchPseudoElements');\n      disableObservation();\n      Promise.all(operations).then(function () {\n        end();\n        enableObservation();\n        resolve();\n      }).catch(function () {\n        end();\n        enableObservation();\n        reject();\n      });\n    });\n  }\n\n  var PseudoElements = {\n    hooks: function hooks() {\n      return {\n        mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n          accumulator.pseudoElementsCallback = searchPseudoElements;\n          return accumulator;\n        }\n      };\n    },\n    provides: function provides(providers$$1) {\n      providers$$1.pseudoElements2svg = function (params) {\n        var _params$node = params.node,\n            node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n        if (config.searchPseudoElements) {\n          searchPseudoElements(node);\n        }\n      };\n    }\n  };\n\n  var _unwatched = false;\n  var MutationObserver$1 = {\n    mixout: function mixout() {\n      return {\n        dom: {\n          unwatch: function unwatch() {\n            disableObservation();\n            _unwatched = true;\n          }\n        }\n      };\n    },\n    hooks: function hooks() {\n      return {\n        bootstrap: function bootstrap() {\n          observe(chainHooks('mutationObserverCallbacks', {}));\n        },\n        noAuto: function noAuto() {\n          disconnect();\n        },\n        watch: function watch(params) {\n          var observeMutationsRoot = params.observeMutationsRoot;\n\n          if (_unwatched) {\n            enableObservation();\n          } else {\n            observe(chainHooks('mutationObserverCallbacks', {\n              observeMutationsRoot: observeMutationsRoot\n            }));\n          }\n        }\n      };\n    }\n  };\n\n  var parseTransformString = function parseTransformString(transformString) {\n    var transform = {\n      size: 16,\n      x: 0,\n      y: 0,\n      flipX: false,\n      flipY: false,\n      rotate: 0\n    };\n    return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n      var parts = n.toLowerCase().split('-');\n      var first = parts[0];\n      var rest = parts.slice(1).join('-');\n\n      if (first && rest === 'h') {\n        acc.flipX = true;\n        return acc;\n      }\n\n      if (first && rest === 'v') {\n        acc.flipY = true;\n        return acc;\n      }\n\n      rest = parseFloat(rest);\n\n      if (isNaN(rest)) {\n        return acc;\n      }\n\n      switch (first) {\n        case 'grow':\n          acc.size = acc.size + rest;\n          break;\n\n        case 'shrink':\n          acc.size = acc.size - rest;\n          break;\n\n        case 'left':\n          acc.x = acc.x - rest;\n          break;\n\n        case 'right':\n          acc.x = acc.x + rest;\n          break;\n\n        case 'up':\n          acc.y = acc.y - rest;\n          break;\n\n        case 'down':\n          acc.y = acc.y + rest;\n          break;\n\n        case 'rotate':\n          acc.rotate = acc.rotate + rest;\n          break;\n      }\n\n      return acc;\n    }, transform);\n  };\n  var PowerTransforms = {\n    mixout: function mixout() {\n      return {\n        parse: {\n          transform: function transform(transformString) {\n            return parseTransformString(transformString);\n          }\n        }\n      };\n    },\n    hooks: function hooks() {\n      return {\n        parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n          var transformString = node.getAttribute('data-fa-transform');\n\n          if (transformString) {\n            accumulator.transform = parseTransformString(transformString);\n          }\n\n          return accumulator;\n        }\n      };\n    },\n    provides: function provides(providers) {\n      providers.generateAbstractTransformGrouping = function (_ref) {\n        var main = _ref.main,\n            transform = _ref.transform,\n            containerWidth = _ref.containerWidth,\n            iconWidth = _ref.iconWidth;\n        var outer = {\n          transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n        };\n        var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n        var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n        var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n        var inner = {\n          transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n        };\n        var path = {\n          transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n        };\n        var operations = {\n          outer: outer,\n          inner: inner,\n          path: path\n        };\n        return {\n          tag: 'g',\n          attributes: _objectSpread2({}, operations.outer),\n          children: [{\n            tag: 'g',\n            attributes: _objectSpread2({}, operations.inner),\n            children: [{\n              tag: main.icon.tag,\n              children: main.icon.children,\n              attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n            }]\n          }]\n        };\n      };\n    }\n  };\n\n  var ALL_SPACE = {\n    x: 0,\n    y: 0,\n    width: '100%',\n    height: '100%'\n  };\n\n  function fillBlack(_abstract) {\n    var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    if (_abstract.attributes && (_abstract.attributes.fill || force)) {\n      _abstract.attributes.fill = 'black';\n    }\n\n    return _abstract;\n  }\n\n  function deGroup(_abstract2) {\n    if (_abstract2.tag === 'g') {\n      return _abstract2.children;\n    } else {\n      return [_abstract2];\n    }\n  }\n\n  var Masks = {\n    hooks: function hooks() {\n      return {\n        parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n          var maskData = node.getAttribute('data-fa-mask');\n          var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n            return i.trim();\n          }));\n\n          if (!mask.prefix) {\n            mask.prefix = getDefaultUsablePrefix();\n          }\n\n          accumulator.mask = mask;\n          accumulator.maskId = node.getAttribute('data-fa-mask-id');\n          return accumulator;\n        }\n      };\n    },\n    provides: function provides(providers) {\n      providers.generateAbstractMask = function (_ref) {\n        var children = _ref.children,\n            attributes = _ref.attributes,\n            main = _ref.main,\n            mask = _ref.mask,\n            explicitMaskId = _ref.maskId,\n            transform = _ref.transform;\n        var mainWidth = main.width,\n            mainPath = main.icon;\n        var maskWidth = mask.width,\n            maskPath = mask.icon;\n        var trans = transformForSvg({\n          transform: transform,\n          containerWidth: maskWidth,\n          iconWidth: mainWidth\n        });\n        var maskRect = {\n          tag: 'rect',\n          attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n            fill: 'white'\n          })\n        };\n        var maskInnerGroupChildrenMixin = mainPath.children ? {\n          children: mainPath.children.map(fillBlack)\n        } : {};\n        var maskInnerGroup = {\n          tag: 'g',\n          attributes: _objectSpread2({}, trans.inner),\n          children: [fillBlack(_objectSpread2({\n            tag: mainPath.tag,\n            attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n          }, maskInnerGroupChildrenMixin))]\n        };\n        var maskOuterGroup = {\n          tag: 'g',\n          attributes: _objectSpread2({}, trans.outer),\n          children: [maskInnerGroup]\n        };\n        var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n        var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n        var maskTag = {\n          tag: 'mask',\n          attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n            id: maskId,\n            maskUnits: 'userSpaceOnUse',\n            maskContentUnits: 'userSpaceOnUse'\n          }),\n          children: [maskRect, maskOuterGroup]\n        };\n        var defs = {\n          tag: 'defs',\n          children: [{\n            tag: 'clipPath',\n            attributes: {\n              id: clipId\n            },\n            children: deGroup(maskPath)\n          }, maskTag]\n        };\n        children.push(defs, {\n          tag: 'rect',\n          attributes: _objectSpread2({\n            fill: 'currentColor',\n            'clip-path': \"url(#\".concat(clipId, \")\"),\n            mask: \"url(#\".concat(maskId, \")\")\n          }, ALL_SPACE)\n        });\n        return {\n          children: children,\n          attributes: attributes\n        };\n      };\n    }\n  };\n\n  var MissingIconIndicator = {\n    provides: function provides(providers) {\n      var reduceMotion = false;\n\n      if (WINDOW.matchMedia) {\n        reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n      }\n\n      providers.missingIconAbstract = function () {\n        var gChildren = [];\n        var FILL = {\n          fill: 'currentColor'\n        };\n        var ANIMATION_BASE = {\n          attributeType: 'XML',\n          repeatCount: 'indefinite',\n          dur: '2s'\n        }; // Ring\n\n        gChildren.push({\n          tag: 'path',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n          })\n        });\n\n        var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n          attributeName: 'opacity'\n        });\n\n        var dot = {\n          tag: 'circle',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            cx: '256',\n            cy: '364',\n            r: '28'\n          }),\n          children: []\n        };\n\n        if (!reduceMotion) {\n          dot.children.push({\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n              attributeName: 'r',\n              values: '28;14;28;28;14;28;'\n            })\n          }, {\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n              values: '1;0;1;1;0;1;'\n            })\n          });\n        }\n\n        gChildren.push(dot);\n        gChildren.push({\n          tag: 'path',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            opacity: '1',\n            d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n          }),\n          children: reduceMotion ? [] : [{\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n              values: '1;0;0;0;0;1;'\n            })\n          }]\n        });\n\n        if (!reduceMotion) {\n          // Exclamation\n          gChildren.push({\n            tag: 'path',\n            attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n              opacity: '0',\n              d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n            }),\n            children: [{\n              tag: 'animate',\n              attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n                values: '0;0;1;1;0;0;'\n              })\n            }]\n          });\n        }\n\n        return {\n          tag: 'g',\n          attributes: {\n            'class': 'missing'\n          },\n          children: gChildren\n        };\n      };\n    }\n  };\n\n  var SvgSymbols = {\n    hooks: function hooks() {\n      return {\n        parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n          var symbolData = node.getAttribute('data-fa-symbol');\n          var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n          accumulator['symbol'] = symbol;\n          return accumulator;\n        }\n      };\n    }\n  };\n\n  var plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\n  registerPlugins(plugins, {\n    mixoutsTo: api\n  });\n  var noAuto$1 = api.noAuto;\n  var config$1 = api.config;\n  var library$1 = api.library;\n  var dom$1 = api.dom;\n  var parse$1 = api.parse;\n  var findIconDefinition$1 = api.findIconDefinition;\n  var toHtml$1 = api.toHtml;\n  var icon = api.icon;\n  var layer = api.layer;\n  var text = api.text;\n  var counter = api.counter;\n\n  exports.api = api;\n  exports.config = config$1;\n  exports.counter = counter;\n  exports.dom = dom$1;\n  exports.findIconDefinition = findIconDefinition$1;\n  exports.icon = icon;\n  exports.layer = layer;\n  exports.library = library$1;\n  exports.noAuto = noAuto$1;\n  exports.parse = parse$1;\n  exports.text = text;\n  exports.toHtml = toHtml$1;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","define('@fortawesome/free-solid-svg-icons', ['exports'], (function (exports) { 'use strict';\n\n  /*!\n   * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com\n   * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n   * Copyright 2025 Fonticons, Inc.\n   */\n  var fa0 = {\n    prefix: 'fas',\n    iconName: '0',\n    icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160l0 128c0 88.4-71.6 160-160 160S0 408.4 0 320L0 192zM160 96c-53 0-96 43-96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96z\"]\n  };\n  var fa1 = {\n    prefix: 'fas',\n    iconName: '1',\n    icon: [256, 512, [], \"31\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l64 0 0 320-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-352c0-17.7-14.3-32-32-32L32 32z\"]\n  };\n  var fa2 = {\n    prefix: 'fas',\n    iconName: '2',\n    icon: [384, 512, [], \"32\", \"M48 64c0-17.7 14.3-32 32-32l171 0c60.2 0 109 48.8 109 109 0 43.8-26.2 83.3-66.4 100.4l-139.1 59C119 315.4 96 350.2 96 388.7l0 27.3 224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32l0-59.3c0-64.2 38.4-122.2 97.5-147.3l139.1-59c16.6-7.1 27.4-23.4 27.4-41.4 0-24.9-20.2-45-45-45L80 96C62.3 96 48 81.7 48 64z\"]\n  };\n  var fa3 = {\n    prefix: 'fas',\n    iconName: '3',\n    icon: [320, 512, [], \"33\", \"M80 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l112 0c35.3 0 64-28.7 64-64s-28.7-64-64-64L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l160 0c70.7 0 128 57.3 128 128 0 38.2-16.8 72.5-43.3 96 26.6 23.5 43.3 57.8 43.3 96 0 70.7-57.3 128-128 128L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c35.3 0 64-28.7 64-64s-28.7-64-64-64L80 288z\"]\n  };\n  var fa4 = {\n    prefix: 'fas',\n    iconName: '4',\n    icon: [384, 512, [], \"34\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 288c0 35.3 28.7 64 64 64l192 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224-192 0 0-224z\"]\n  };\n  var fa5 = {\n    prefix: 'fas',\n    iconName: '5',\n    icon: [320, 512, [], \"35\", \"M0 64C0 46.3 14.3 32 32 32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0 0 112 120 0c75.1 0 136 60.9 136 136S259.1 480 184 480L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l152 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L32 272c-17.7 0-32-14.3-32-32L0 64z\"]\n  };\n  var fa6 = {\n    prefix: 'fas',\n    iconName: '6',\n    icon: [384, 512, [], \"36\", \"M256 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-88 0c-48.6 0-88 39.4-88 88l0 32.2c22.9-15.3 50.4-24.2 80-24.2l48 0c79.5 0 144 64.5 144 144S287.5 480 208 480l-48 0C80.5 480 16 415.5 16 336l0-152C16 100.1 84.1 32 168 32l88 0zM80 336c0 44.2 35.8 80 80 80l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0c-44.2 0-80 35.8-80 80z\"]\n  };\n  var fa7 = {\n    prefix: 'fas',\n    iconName: '7',\n    icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32l256 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96 32 96C14.3 96 0 81.7 0 64z\"]\n  };\n  var fa8 = {\n    prefix: 'fas',\n    iconName: '8',\n    icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128l-32 0c-70.7 0-128 57.3-128 128 0 34.6 13.7 66 36 89-31.5 23.3-52 60.8-52 103 0 70.7 57.3 128 128 128l64 0c70.7 0 128-57.3 128-128 0-42.2-20.5-79.7-52-103 22.3-23 36-54.4 36-89zM176.1 288l15.9 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64s28.7-64 64-64l48.1 0zm0-64L144 224c-35.3 0-64-28.7-64-64 0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64 0 35.3-28.6 64-64 64z\"]\n  };\n  var fa9 = {\n    prefix: 'fas',\n    iconName: '9',\n    icon: [384, 512, [], \"39\", \"M208 320c29.6 0 57.1-8.9 80-24.2l0 32.2c0 48.6-39.4 88-88 88L96 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l104 0c83.9 0 152-68.1 152-152l0-152.1C351.9 96.4 287.5 32 208 32l-48 0C80.5 32 16 96.5 16 176S80.5 320 160 320l48 0zm80-144c0 44.2-35.8 80-80 80l-48 0c-44.2 0-80-35.8-80-80s35.8-80 80-80l48 0c44.2 0 80 35.8 80 80z\"]\n  };\n  var faDollarSign = {\n    prefix: 'fas',\n    iconName: 'dollar-sign',\n    icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M136 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-114.9 0c-24.9 0-45.1 20.2-45.1 45.1 0 22.5 16.5 41.5 38.7 44.7l91.6 13.1c53.8 7.7 93.7 53.7 93.7 108 0 60.3-48.9 109.1-109.1 109.1l-10.9 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-72 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l130.9 0c24.9 0 45.1-20.2 45.1-45.1 0-22.5-16.5-41.5-38.7-44.7l-91.6-13.1C55.9 273.5 16 227.4 16 173.1 16 112.9 64.9 64 125.1 64l10.9 0 0-40z\"]\n  };\n  var faDollar = faDollarSign;\n  var faUsd = faDollarSign;\n  var faDog = {\n    prefix: 'fas',\n    iconName: 'dog',\n    icon: [576, 512, [128021], \"f6d3\", \"M32 112c16.6 0 30.2 12.6 31.8 28.7l.3 6.6C65.8 163.4 79.4 176 96 176l179.1 0 140.9 60.4 0 243.6c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-131.3C296 361 268.8 368 240 368s-56-7-80-19.3L160 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-245.6c-37.3-13.2-64-48.6-64-90.4 0-17.7 14.3-32 32-32zM355.8-32c7.7 0 14.9 3.6 19.6 9.8L392 0 444.1 0c12.7 0 24.9 5.1 33.9 14.1L496 32 552 32c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-64 0-7 28-124.7-53.4 31.6-147.2C334.3-23.9 344.2-32 355.8-32zM448 44a20 20 0 1 0 0 40 20 20 0 1 0 0-40z\"]\n  };\n  var faTruckMoving = {\n    prefix: 'fas',\n    iconName: 'truck-moving',\n    icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96L0 424c0 48.6 39.4 88 88 88 25.2 0 48-10.6 64-27.6 16 17 38.8 27.6 64 27.6 40.3 0 74.2-27.1 84.7-64l134.6 0c10.4 36.9 44.4 64 84.7 64 43 0 78.9-30.9 86.5-71.7 20-10.8 33.5-32 33.5-56.3l0-146.7c0-17-6.7-33.3-18.7-45.3L576 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM480 192l50.7 0 45.3 45.3 0 50.7-96 0 0-96zM88 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm392 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM216 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n  };\n  var faRotate = {\n    prefix: 'fas',\n    iconName: 'rotate',\n    icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M480.1 192l7.9 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2S477.9 .2 471 7L419.3 58.8C375 22.1 318 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1C79.2 135.5 159.3 64 256 64 300.4 64 341.2 79 373.7 104.3L327 151c-6.9 6.9-8.9 17.2-5.2 26.2S334.3 192 344 192l136.1 0zm29.4 100.5c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-44.4 0-85.2-15-117.7-40.3L185 361c6.9-6.9 8.9-17.2 5.2-26.2S177.7 320 168 320L24 320c-13.3 0-24 10.7-24 24L0 488c0 9.7 5.8 18.5 14.8 22.2S34.1 511.8 41 505l51.8-51.8C137 489.9 194 512 256 512 385 512 491.7 416.6 509.4 292.5z\"]\n  };\n  var faSyncAlt = faRotate;\n  var faSquareMinus = {\n    prefix: 'fas',\n    iconName: 'square-minus',\n    icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm72 200l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faMinusSquare = faSquareMinus;\n  var faAlignJustify = {\n    prefix: 'fas',\n    iconName: 'align-justify',\n    icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"]\n  };\n  var faCalendarCheck = {\n    prefix: 'fas',\n    iconName: 'calendar-check',\n    icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zM308.4 228.7c7-11.2 3.6-26-7.6-33.1s-26-3.6-33.1 7.6l-61.4 98.3-27-36c-8-10.6-23-12.8-33.6-4.8s-12.8 23-4.8 33.6l48 64c4.7 6.3 12.3 9.9 20.2 9.6s15.1-4.5 19.3-11.3l80-128z\"]\n  };\n  var faFaceKiss = {\n    prefix: 'fas',\n    iconName: 'face-kiss',\n    icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM240 288l32 0c26.5 0 48 21.5 48 48 0 12.3-4.6 23.5-12.2 32 7.6 8.5 12.2 19.7 12.2 32 0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faKiss = faFaceKiss;\n  var faKitchenSet = {\n    prefix: 'fas',\n    iconName: 'kitchen-set',\n    icon: [576, 512, [], \"e51a\", \"M240 144a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288 64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112l71.8 0c8.8-9.8 21.6-16 35.8-16l104 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-104 0c-14.2 0-27-6.2-35.8-16l-71.8 0zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24l0 8 96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0 0-8c0-13.3 10.7-24 24-24zM288 464l0-112 224 0 0 112c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48zM48 320l128 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-80c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0 32 16 0zM24 464l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faDna = {\n    prefix: 'fas',\n    iconName: 'dna',\n    icon: [384, 512, [129516], \"f471\", \"M352 0c17.7 0 32 14.3 32 32 0 57.8-24.4 104.8-57.4 144.5-24.1 28.9-53.8 55.1-83.6 79.5 29.8 24.5 59.5 50.6 83.6 79.5 33 39.6 57.4 86.7 57.4 144.5 0 17.7-14.3 32-32 32s-32-14.3-32-32L64 480c0 17.7-14.3 32-32 32S0 497.7 0 480C0 422.2 24.4 375.2 57.4 335.5 81.5 306.6 111.2 280.5 141 256 111.2 231.5 81.5 205.4 57.4 176.5 24.4 136.8 0 89.8 0 32 0 14.3 14.3 0 32 0S64 14.3 64 32l256 0c0-17.7 14.3-32 32-32zM283.5 384l-182.9 0c-8.2 10.5-15.1 21.1-20.6 32l224.2 0c-5.6-10.9-12.5-21.5-20.6-32zM238 336c-14.3-13-29.8-25.8-46-39-16.2 13.1-31.7 26-46 39l92 0zM100.5 128l182.9 0c8.2-10.5 15.1-21.1 20.6-32L79.9 96c5.6 10.9 12.5 21.5 20.6 32zM146 176c14.3 13 29.8 25.8 46 39 16.2-13.1 31.7-26 46-39l-92 0z\"]\n  };\n  var faChildReaching = {\n    prefix: 'fas',\n    iconName: 'child-reaching',\n    icon: [384, 512, [], \"e59d\", \"M256 64a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.3 85.4S11.6 115 21.4 129.8L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6-12.6 0-24.9-2-36.6-5.8-.9-.3-1.8-.7-2.7-.9z\"]\n  };\n  var faPaste = {\n    prefix: 'fas',\n    iconName: 'paste',\n    icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M64 0C28.7 0 0 28.7 0 64L0 384c0 35.3 28.7 64 64 64l112 0 0-224c0-61.9 50.1-112 112-112l64 0 0-48c0-35.3-28.7-64-64-64L64 0zM248 112l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24zm40 48c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-165.5c0-17-6.7-33.3-18.7-45.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7L288 160z\"]\n  };\n  var faFileClipboard = faPaste;\n  var faMeteor = {\n    prefix: 'fas',\n    iconName: 'meteor',\n    icon: [512, 512, [9732], \"f753\", \"M493.7 .9l-194.2 74.7 2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309 0 421.1 90.9 512 203 512 275.4 512 342.3 473.4 378.6 410.7L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3 74.7-194.2c.6-1.5 .9-3.2 .9-4.8 0-7.5-6-13.5-13.5-13.5-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n  };\n  var faGears = {\n    prefix: 'fas',\n    iconName: 'gears',\n    icon: [640, 512, [\"cogs\"], \"f085\", \"M415.9 210.5c12.2-3.3 25 2.5 30.5 13.8L465 261.9c10.3 1.4 20.4 4.2 29.9 8.1l35-23.3c10.5-7 24.4-5.6 33.3 3.3l19.2 19.2c8.9 8.9 10.3 22.9 3.3 33.3l-23.3 34.9c1.9 4.7 3.6 9.6 5 14.7 1.4 5.1 2.3 10.1 3 15.2l37.7 18.6c11.3 5.6 17.1 18.4 13.8 30.5l-7 26.2c-3.3 12.1-14.6 20.3-27.2 19.5l-42-2.7c-6.3 8.1-13.6 15.6-21.9 22l2.7 41.9c.8 12.6-7.4 24-19.5 27.2l-26.2 7c-12.2 3.3-24.9-2.5-30.5-13.8l-18.6-37.6c-10.3-1.4-20.4-4.2-29.9-8.1l-35 23.3c-10.5 7-24.4 5.6-33.3-3.3l-19.2-19.2c-8.9-8.9-10.3-22.8-3.3-33.3l23.3-35c-1.9-4.7-3.6-9.6-5-14.7s-2.3-10.2-3-15.2l-37.7-18.6c-11.3-5.6-17-18.4-13.8-30.5l7-26.2c3.3-12.1 14.6-20.3 27.2-19.5l41.9 2.7c6.3-8.1 13.6-15.6 21.9-22l-2.7-41.8c-.8-12.6 7.4-24 19.5-27.2l26.2-7zM448.4 340a44 44 0 1 0 .1 88 44 44 0 1 0 -.1-88zM224.9-45.5l26.2 7c12.1 3.3 20.3 14.7 19.5 27.2l-2.7 41.8c8.3 6.4 15.6 13.8 21.9 22l42-2.7c12.5-.8 23.9 7.4 27.2 19.5l7 26.2c3.2 12.1-2.5 24.9-13.8 30.5l-37.7 18.6c-.7 5.1-1.7 10.2-3 15.2s-3.1 10-5 14.7l23.3 35c7 10.5 5.6 24.4-3.3 33.3L307.3 262c-8.9 8.9-22.8 10.3-33.3 3.3L239 242c-9.5 3.9-19.6 6.7-29.9 8.1l-18.6 37.6c-5.6 11.3-18.4 17-30.5 13.8l-26.2-7c-12.2-3.3-20.3-14.7-19.5-27.2l2.7-41.9c-8.3-6.4-15.6-13.8-21.9-22l-42 2.7c-12.5 .8-23.9-7.4-27.2-19.5l-7-26.2c-3.2-12.1 2.5-24.9 13.8-30.5l37.7-18.6c.7-5.1 1.7-10.1 3-15.2 1.4-5.1 3-10 5-14.7L55.1 46.5c-7-10.5-5.6-24.4 3.3-33.3L77.6-6c8.9-8.9 22.8-10.3 33.3-3.3l35 23.3c9.5-3.9 19.6-6.7 29.9-8.1l18.6-37.6c5.6-11.3 18.3-17 30.5-13.8zM192.4 84a44 44 0 1 0 0 88 44 44 0 1 0 0-88z\"]\n  };\n  var faCogs = faGears;\n  var faFileCirclePlus = {\n    prefix: 'fas',\n    iconName: 'file-circle-plus',\n    icon: [576, 512, [58606], \"e494\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n  };\n  var faIcicles = {\n    prefix: 'fas',\n    iconName: 'icicles',\n    icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7C.3 33.2 0 30.7 0 28.2 0 12.6 12.6 0 28.2 0L482.4 0c16.3 0 29.6 13.2 29.6 29.6 0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7-9.3 0-17.5-6.2-20-15.2z\"]\n  };\n  var faArrowTrendUp = {\n    prefix: 'fas',\n    iconName: 'arrow-trend-up',\n    icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7-169.4 169.4c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160 384 160z\"]\n  };\n  var faHexagonNodesBolt = {\n    prefix: 'fas',\n    iconName: 'hexagon-nodes-bolt',\n    icon: [576, 512, [], \"e69a\", \"M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56c30.7 0 55.6-24.7 56-55.2c-7.5-12.9-13.5-26.8-17.6-41.5c-4.2-4-9.1-7.3-14.4-9.9l0-98.8c2.8-1.3 5.5-2.9 8-4.7l10.5 6c5.5-15.3 13.1-29.5 22.4-42.5l-9.1-5.2c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8zM440.5 132C425 105.2 390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c.4 .3 .8 .6 1.3 .9c21.7-9.5 45.6-14.8 70.8-14.8c2 0 4 0 5.9 .1c12.1-17.3 13.8-40.6 2.6-60.1zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n  };\n  var faQuestion = {\n    prefix: 'fas',\n    iconName: 'question',\n    icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M64 160c0-53 43-96 96-96s96 43 96 96c0 42.7-27.9 78.9-66.5 91.4-28.4 9.2-61.5 35.3-61.5 76.6l0 24c0 17.7 14.3 32 32 32s32-14.3 32-32l0-24c0-1.7 .6-4.1 3.5-7.3 3-3.3 7.9-6.5 13.7-8.4 64.3-20.7 110.8-81 110.8-152.3 0-88.4-71.6-160-160-160S0 71.6 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm96 352c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40z\"]\n  };\n  var faHandsBound = {\n    prefix: 'fas',\n    iconName: 'hands-bound',\n    icon: [576, 512, [], \"e4f9\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 213.9c0 14.2 5.1 27.9 14.3 38.7L99.6 352 96 352c-13.3 0-24 10.7-24 24s10.7 24 24 24l384 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-3.6 0 85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7L576 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112.8-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8-9.7-5.7-12.1-18.7-5.1-27.5L441 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C329 209.7 320 233.4 320 258.1l0 93.9-64 0 0-93.9c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2S124.2 166.4 135 180l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5-8.1 4.8-18.6 2.7-24.2-4.8L64 144.8 64 32zm64 448l0 32 128 0 0-32 64 0 0 32 128 0 0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L96 432c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0z\"]\n  };\n  var faPersonWalkingLuggage = {\n    prefix: 'fas',\n    iconName: 'person-walking-luggage',\n    icon: [512, 512, [], \"e554\", \"M264.3 24a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm-8 181.3l-22.6 22.6c-6 6-9.4 14.1-9.4 22.6l0 37.5c0 12.3-7 23-17.2 28.4-.9 4.2-2.4 8.4-4.3 12.3l-69 138.1-.8-.4-27.7 55.3c-9.9 19.8-33.9 27.8-53.7 17.9L14.6 521c-19.8-9.9-27.8-33.9-17.9-53.7L47.3 366.3c9.9-19.8 33.9-27.8 53.7-17.9l30.7 15.3 28.3-56.6c.3-.6 .4-1.2 .4-1.8l0-16.9c0-.2 0-.3 0-.5l0-37.5c0-25.5 10.1-49.9 28.1-67.9l35.1-35.1c22.8-22.8 53.6-35.6 85.8-35.6 36.9 0 71.8 16.8 94.8 45.6L422.1 180c6.1 7.6 15.3 12 25 12l33.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-33.2 0c-29.2 0-56.7-13.3-75-36l-3.8-4.7 0 115.2 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3L448 507.5c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2L372 428.4c-1.1-7.7-5-14.7-10.9-19.8l-71.4-61.2c-21.3-18.2-33.5-44.9-33.5-72.9l0-69.3zm.1 165.8c2.4 2.3 4.8 4.6 7.4 6.8l46 39.4-2.2 7.6c-4.5 15.7-12.9 30-24.4 41.5l-68.3 68.3c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L238 421.1c3.8-3.8 6.6-8.6 8.1-13.8L256.4 371z\"]\n  };\n  var faFileArrowDown = {\n    prefix: 'fas',\n    iconName: 'file-arrow-down',\n    icon: [384, 512, [\"file-download\"], \"f56d\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM175 441c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23 0-86.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 86.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64z\"]\n  };\n  var faFileDownload = faFileArrowDown;\n  var faPersonBooth = {\n    prefix: 'fas',\n    iconName: 'person-booth',\n    icon: [576, 512, [], \"f756\", \"M40 24A56 56 0 1 1 152 24 56 56 0 1 1 40 24zm51.1 88c23.5 0 45.5 11.3 59.1 30.4l48.7 68.2c6 8.4 15.7 13.4 26 13.4l31.1 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-31.1 0c-31 0-60.1-15-78.1-40.2l-2.8-3.9 0 80.1 41.6 31.2C209.8 373.3 224 401.8 224 432l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80c0-10.1-4.7-19.6-12.8-25.6L70.4 348.8C46.2 330.7 32 302.2 32 272l0-100.9C32 138.5 58.5 112 91.1 112zM32 512l0-132.7c3.1 2.7 6.3 5.4 9.6 7.9L96 428 96 512c0 17.7-14.3 32-32 32s-32-14.3-32-32zm544-88l0 96c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-168 0c-7.1 0-13.8-3.1-18.4-8.6s-6.5-12.6-5.3-19.6l30.7-176.7-63.1-137.6 0 72c-5.2-1-10.5-1.6-16-1.6l-32 0 0-120c0-30.9 25.1-56 56-56L520 0c30.9 0 56 25.1 56 56l0 368zM288 336c5.5 0 10.8-.6 16-1.6L304 520c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-184 32 0z\"]\n  };\n  var faLocust = {\n    prefix: 'fas',\n    iconName: 'locust',\n    icon: [576, 512, [], \"e520\", \"M328 32c137 0 248 111 248 248l0 40-.4 8.2C571.5 368.5 537.4 400 496 400l-12.3 0 25.2 44.1c6.6 11.5 2.6 26.2-8.9 32.8s-26.2 2.6-32.7-8.9l-38.8-67.9-80.4 0-48.2 69.7c-7.5 10.9-22.5 13.6-33.4 6.1s-13.6-22.5-6.1-33.4l29.3-42.3-74.5 0-51.7 70.2c-7.9 10.7-22.9 12.9-33.6 5.1s-12.9-22.9-5.1-33.6l40.5-55-43-16.4-79.3 100.5c-8.2 10.4-23.3 12.2-33.7 4s-12.2-23.3-4-33.7l240-304 2.1-2.3c5.2-5.1 12.5-7.5 19.9-6.6 8.4 1.1 15.6 6.5 18.9 14.3l21.7 50.7 40.9-55.5 2.1-2.4c5.1-5.3 12.5-8 20-7.2 8.5 1 15.9 6.5 19.3 14.4l41.8 97.5 64.2 0c10.2 0 20 2 29 5.5-16.4-94-98.3-165.5-197-165.5l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0zM488 296a24 24 0 1 0 0 48 24 24 0 1 0 0-48zM43.5 331.1C36.2 321.4 32 309.5 32 296.8 32 265.5 57.5 240 88.9 240l27.6 0-72.9 91.1zM225.1 240l48.2 0 1.4-1.9-16.9-39.5-32.7 41.5zm107.8 0l46.7 0-17.2-40-29.5 40z\"]\n  };\n  var faRightLong = {\n    prefix: 'fas',\n    iconName: 'right-long',\n    icon: [576, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M566.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-128 128c-9.2 9.2-22.9 11.9-34.9 6.9S384 396.9 384 384l0-64-336 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48l336 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l128 128z\"]\n  };\n  var faLongArrowAltRight = faRightLong;\n  var faTruckDroplet = {\n    prefix: 'fas',\n    iconName: 'truck-droplet',\n    icon: [576, 512, [], \"e58c\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l3.3 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l102.6 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l3.3 0c35.3 0 64-28.7 64-64l0-146.7c0-17-6.7-33.3-18.7-45.3L512 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM512 237.3l0 50.7-96 0 0-96 50.7 0 45.3 45.3zM152 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm232 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM208 304c-39.8 0-72-32.2-72-72 0-33.2 34.5-78 55.8-102.4 8.7-10 23.8-10 32.5 0 21.2 24.4 55.8 69.1 55.8 102.4 0 48-32.2 72-72 72z\"]\n  };\n  var faHandHoldingMedical = {\n    prefix: 'fas',\n    iconName: 'hand-holding-medical',\n    icon: [576, 512, [], \"e05c\", \"M240 24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 56 56 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-56 0 0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56-56 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24l56 0 0-56zM66.7 384l42.5-42.5c24-24 56.6-37.5 90.5-37.5L352 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5s9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l34.7 0z\"]\n  };\n  var faHandPointLeft = {\n    prefix: 'fas',\n    iconName: 'hand-point-left',\n    icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64-208 0zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32 0 13.2-4 25.4-10.8 35.6 24.9 8.7 42.8 32.5 42.8 60.4 0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"]\n  };\n  var faCalculator = {\n    prefix: 'fas',\n    iconName: 'calculator',\n    icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm16 168a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM88 352a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM64 424c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 448c-13.3 0-24-10.7-24-24zm232-24c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n  };\n  var faMinus = {\n    prefix: 'fas',\n    iconName: 'minus',\n    icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faSubtract = faMinus;\n  var faArrowUpZA = {\n    prefix: 'fas',\n    iconName: 'arrow-up-z-a',\n    icon: [512, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80zM288 64c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9S307.1 224 320 224l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9S461 32 448 32L320 32c-17.7 0-32 14.3-32 32zM412.6 273.7C407.2 262.8 396.1 256 384 256s-23.2 6.8-28.6 17.7l-80 160c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-80-160zM384 359.6l20.2 40.4-40.4 0 20.2-40.4z\"]\n  };\n  var faSortAlphaUpAlt = faArrowUpZA;\n  var faMicrophoneSlash = {\n    prefix: 'fas',\n    iconName: 'microphone-slash',\n    icon: [576, 512, [], \"f131\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L424.7 358.8C458.9 324.2 480 276.6 480 224l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 39.3-15.7 74.9-41.3 100.9L356.8 291C373.6 273.7 384 250 384 224l0-128c0-53-43-96-96-96s-96 43-96 96l0 30.2-151-151zm298.3 434l-41.4-41.4c-3.3 .2-6.5 .3-9.8 .3-79.5 0-144-64.5-144-144l0-10.2-43.6-43.6c-2.8 3.9-4.4 8.7-4.4 13.8l0 40c0 97.9 73.3 178.7 168 190.5l0 49.5-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-49.5c9.3-1.2 18.4-3 27.3-5.4z\"]\n  };\n  var faSquarePen = {\n    prefix: 'fas',\n    iconName: 'square-pen',\n    icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-23.8 23.8-71-71 23.8-23.8c15.6-15.6 40.9-15.6 56.6 0zM119.9 289l91.5-91.6 71 71-91.6 91.5c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n  };\n  var faPenSquare = faSquarePen;\n  var faPencilSquare = faSquarePen;\n  var faHandFist = {\n    prefix: 'fas',\n    iconName: 'hand-fist',\n    icon: [384, 512, [9994, \"fist-raised\"], \"f6de\", \"M160 0c17.7 0 32 14.3 32 32l0 112-64 0 0-112c0-17.7 14.3-32 32-32zM32 64c0-17.7 14.3-32 32-32S96 46.3 96 64l0 80-64 0 0-80zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6l0 8.6c0 52.3-25.1 98.8-64 128l0 96c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L37.5 357.5C13.5 333.5 0 300.9 0 267l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n  };\n  var faFistRaised = faHandFist;\n  var faCommentSms = {\n    prefix: 'fas',\n    iconName: 'comment-sms',\n    icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zM140.8 172.8l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-5.3 0-9.6 4.3-9.6 9.6s4.3 9.6 9.6 9.6c23 0 41.6 18.6 41.6 41.6s-18.6 41.6-41.6 41.6l-25.6 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l25.6 0c5.3 0 9.6-4.3 9.6-9.6s-4.3-9.6-9.6-9.6c-23 0-41.6-18.6-41.6-41.6s18.6-41.6 41.6-41.6zm188.8 41.6c0-23 18.6-41.6 41.6-41.6l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-5.3 0-9.6 4.3-9.6 9.6s4.3 9.6 9.6 9.6c23 0 41.6 18.6 41.6 41.6s-18.6 41.6-41.6 41.6l-25.6 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l25.6 0c5.3 0 9.6-4.3 9.6-9.6s-4.3-9.6-9.6-9.6c-23 0-41.6-18.6-41.6-41.6zm-98.3-33.8l24.7 41.1 24.7-41.1c3.7-6.2 11.1-9.1 18-7.2s11.7 8.2 11.7 15.4l0 102.4c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-44.6-8.7 14.5c-2.9 4.8-8.1 7.8-13.7 7.8s-10.8-3-13.7-7.8l-8.7-14.5 0 44.6c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-102.4c0-7.2 4.8-13.5 11.7-15.4s14.3 1 18 7.2z\"]\n  };\n  var faSms = faCommentSms;\n  var faSimCard = {\n    prefix: 'fas',\n    iconName: 'sim-card',\n    icon: [384, 512, [], \"f7c4\", \"M0 64C0 28.7 28.7 0 64 0L258.7 0c17 0 33.3 6.7 45.3 18.7L365.3 80c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM96 256c-17.7 0-32 14.3-32 32l0 40 128 0 0-72-96 0zM64 416c0 17.7 14.3 32 32 32l48 0 0-72-80 0 0 40zm256 0l0-40-128 0 0 72 96 0c17.7 0 32-14.3 32-32zm0-128c0-17.7-14.3-32-32-32l-48 0 0 72 80 0 0-40z\"]\n  };\n  var faScaleBalanced = {\n    prefix: 'fas',\n    iconName: 'scale-balanced',\n    icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3l0 294.7 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288L584.4 320 512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1-10.8 44.8-63.1 78.9-126 78.9zM126.8 195.8L54.4 320 199.3 320 126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1-10.8 44.8-63.1 78.9-126 78.9S11.7 382 .9 337.1z\"]\n  };\n  var faBalanceScale = faScaleBalanced;\n  var faCar = {\n    prefix: 'fas',\n    iconName: 'car',\n    icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4l-26.1 74.6 293.8 0-26.1-74.6C372.3 104.6 360.2 96 346.6 96L165.4 96c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32l181.2 0c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2l0 192c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-320 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L0 256c0-26.7 16.4-49.6 39.6-59.2zM128 304a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faAutomobile = faCar;\n  var faCropSimple = {\n    prefix: 'fas',\n    iconName: 'crop-simple',\n    icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32-32 0C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l208 0 0-64-208 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64l-208 0 0 64 208 0 0 352z\"]\n  };\n  var faCropAlt = faCropSimple;\n  var faMedal = {\n    prefix: 'fas',\n    iconName: 'medal',\n    icon: [448, 512, [127941], \"f5a2\", \"M224.3 128L139.7-12.9c-6.5-10.8-20.1-14.7-31.3-9.1L21.8 21.3C9.9 27.2 5.1 41.6 11 53.5L80.6 192.6c-30.1 33.9-48.3 78.5-48.3 127.4 0 106 86 192 192 192s192-86 192-192c0-48.9-18.3-93.5-48.3-127.4L437.6 53.5c5.9-11.9 1.1-26.3-10.7-32.2L340.2-22.1c-11.2-5.6-24.9-1.6-31.3 9.1L224.3 128zm30.8 142.5c1.4 2.8 4 4.7 7 5.1l50.1 7.3c7.7 1.1 10.7 10.5 5.2 16l-36.3 35.4c-2.2 2.2-3.2 5.2-2.7 8.3l8.6 49.9c1.3 7.6-6.7 13.5-13.6 9.9l-44.8-23.6c-2.7-1.4-6-1.4-8.7 0l-44.8 23.6c-6.9 3.6-14.9-2.2-13.6-9.9l8.6-49.9c.5-3-.5-6.1-2.7-8.3l-36.3-35.4c-5.6-5.4-2.5-14.8 5.2-16l50.1-7.3c3-.4 5.7-2.4 7-5.1l22.4-45.4c3.4-7 13.3-7 16.8 0l22.4 45.4z\"]\n  };\n  var faScroll = {\n    prefix: 'fas',\n    iconName: 'scroll',\n    icon: [576, 512, [128220], \"f70e\", \"M0 112C0 70.5 31.6 36.4 72 32.4l0-.4 280 0c53 0 96 43 96 96l0 176-176 0c-39.8 0-72 32.2-72 72l0 60c0 24.3-19.7 44-44 44s-44-19.7-44-44l0-228-64 0c-26.5 0-48-21.5-48-48l0-48zM236.8 480c7.1-13.1 11.2-28.1 11.2-44l0-60c0-13.3 10.7-24 24-24l248 0c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-227.2 0zM80 80c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32z\"]\n  };\n  var faFileExcel = {\n    prefix: 'fas',\n    iconName: 'file-excel',\n    icon: [384, 512, [], \"f1c3\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM164 266.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3L163.2 352 124 410.7c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l28-42 28 42c7.4 11 22.3 14 33.3 6.7s14-22.3 6.7-33.3L220.8 352 260 293.3c7.4-11 4.4-25.9-6.7-33.3s-25.9-4.4-33.3 6.7l-28 42-28-42z\"]\n  };\n  var faFilter = {\n    prefix: 'fas',\n    iconName: 'filter',\n    icon: [512, 512, [], \"f0b0\", \"M32 64C19.1 64 7.4 71.8 2.4 83.8S.2 109.5 9.4 118.6L192 301.3 192 416c0 8.5 3.4 16.6 9.4 22.6l64 64c9.2 9.2 22.9 11.9 34.9 6.9S320 492.9 320 480l0-178.7 182.6-182.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64z\"]\n  };\n  var faDrum = {\n    prefix: 'fas',\n    iconName: 'drum',\n    icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96 114.6 96 0 128 0 208L0 368c0 31.3 27.4 58.8 72 78.7L72 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 119.4c33 8.9 71.1 14.5 112 16.1L232 376c0-13.3 10.7-24 24-24s24 10.7 24 24l0 103.5c40.9-1.6 79-7.2 112-16.1L392 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 102.7c44.6-19.9 72-47.4 72-78.7l0-160c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5 38.8 15.1 44.4 30.6 44.4 41.3 0 .8-2.7 17.2-46 35.9-38.9 16.8-96 28.1-162 28.1S132.9 260.7 94 243.9c-43.3-18.7-46-35.1-46-35.9 0-10.6 5.6-26.2 44.4-41.3 38.3-14.9 95.4-22.7 163.6-22.7 18 0 35.1 .5 51.4 1.6z\"]\n  };\n  var faMapPin = {\n    prefix: 'fas',\n    iconName: 'map-pin',\n    icon: [320, 512, [128205], \"f276\", \"M192 284.4C256.1 269.9 304 212.5 304 144 304 64.5 239.5 0 160 0S16 64.5 16 144c0 68.5 47.9 125.9 112 140.4L128 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-195.6zM168 96c-30.9 0-56 25.1-56 56 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4 46.6-104 104-104 13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n  };\n  var faScaleUnbalancedFlip = {\n    prefix: 'fas',\n    iconName: 'scale-unbalanced-flip',\n    icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M118.2 62.4C101.5 56.8 92.4 38.6 98 21.9S121.7-3.9 138.5 1.6l113 37.7c13.9-23.5 39.6-39.3 68.9-39.3 44.2 0 80 35.8 80 80 0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.7 145.2c-4.5 3.2-9.3 5.9-14.4 8.2l0 326.7c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.8 288L128.3 163.8 55.9 288 200.8 288zm-72.4 96c-62.9 0-115.2-34-126-78.9-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1-10.8 44.8-63.1 78.9-126 78.9zm382.8-92.2l-72.4 124.2 144.9 0-72.4-124.2zm126 141.3C626.4 478 574.1 512 511.2 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n  };\n  var faBalanceScaleRight = faScaleUnbalancedFlip;\n  var faArrowsToCircle = {\n    prefix: 'fas',\n    iconName: 'arrows-to-circle',\n    icon: [512, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L128 82.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.7 0-73.4-73.4C-3.1 42.1-3.1 21.9 9.4 9.4zM200 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM502.6 54.6L429.3 128 448 128c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 18.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-45.3 448L384 429.3 384 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0 73.4 73.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM9.4 457.4L82.7 384 64 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3z\"]\n  };\n  var faEnvelope = {\n    prefix: 'fas',\n    iconName: 'envelope',\n    icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64c-26.5 0-48 21.5-48 48 0 15.1 7.1 29.3 19.2 38.4l208 156c17.1 12.8 40.5 12.8 57.6 0l208-156c12.1-9.1 19.2-23.3 19.2-38.4 0-26.5-21.5-48-48-48L48 64zM0 196L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-188-198.4 148.8c-34.1 25.6-81.1 25.6-115.2 0L0 196z\"]\n  };\n  var faBaby = {\n    prefix: 'fas',\n    iconName: 'baby',\n    icon: [384, 512, [], \"f77c\", \"M120 88a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zM7.7 144.5c13-17.9 38-21.8 55.9-8.8L99.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25l0 36.3-192 0 0-36.3c-15.2-6.7-29.7-15.1-43.3-25L16.5 200.3c-17.9-13-21.8-38-8.8-55.9zM97.5 329.3l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C38 438.6 36.1 417 47.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6l24.3-24.3-26-37.2z\"]\n  };\n  var faSquareCaretDown = {\n    prefix: 'fas',\n    iconName: 'square-caret-down',\n    icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9S110.5 192 120 192l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n  };\n  var faCaretSquareDown = faSquareCaretDown;\n  var faTent = {\n    prefix: 'fas',\n    iconName: 'tent',\n    icon: [512, 512, [], \"e57d\", \"M26.9 206.9L3.7 444.9C1.8 463.7 16.6 480 35.5 480l172.7 0c26.5 0 48-21.5 48-48l0-129c0-8.3 6.7-15 15-15 5.5 0 10.6 3 13.2 7.9l86.1 159c8.4 15.5 24.6 25.1 42.2 25.1l64.1 0c18.9 0 33.7-16.3 31.8-35.1L485.6 207.1c-1.9-19.6-12.8-37.3-29.5-47.8L280.9 48.3c-15.7-10-35.8-9.9-51.5 .1L56.1 159.2c-16.5 10.6-27.3 28.2-29.2 47.7z\"]\n  };\n  var faA = {\n    prefix: 'fas',\n    iconName: 'a',\n    icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7c-93.3 224-146.7 352-160 384-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2l31.8-76.3 197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8c-13.3-32-66.7-160-160-384zM264 320l-144 0 72-172.8 72 172.8z\"]\n  };\n  var faParachuteBox = {\n    prefix: 'fas',\n    iconName: 'parachute-box',\n    icon: [512, 512, [], \"f4cd\", \"M128 224C128 152.2 144.3 88.4 169.5 43.4 195.1-2.4 226.6-24 256-24s60.9 21.6 86.5 67.4C367.7 88.4 384 152.2 384 224l-104 0 0 96 8 0c9.3 0 18.1 2 26 5.5l118.4-101.5-.5 0c0-78.4-17.7-150.6-47.6-204-6.1-11-12.9-21.3-20.3-30.9 86.5 35.9 147.8 115.1 147.8 218.9 0 7-3.1 13.7-8.4 18.2L347.4 360.1c3 7.4 4.6 15.4 4.6 23.9l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-64c0-8.4 1.6-16.5 4.6-23.9L8.4 226.2C3.1 221.7 0 215 0 208 0 104.2 61.3 24.9 147.8-10.9 140.5-1.4 133.7 9 127.6 20 97.7 73.4 80 145.6 80 224l-.5 0 118.4 101.5c8-3.5 16.8-5.5 26-5.5l8 0 0-96-104 0z\"]\n  };\n  var faCartArrowDown = {\n    prefix: 'fas',\n    iconName: 'cart-arrow-down',\n    icon: [640, 512, [], \"f218\", \"M0 8C0-5.3 10.7-16 24-16l45.3 0c27.1 0 50.3 19.4 55.1 46l.4 2 187.2 0 0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1 177.4 0c20 0 35.1 18.2 31.4 37.9L537.8 235.8c-5.7 30.3-32.1 52.2-62.9 52.2l-303.6 0 5.1 28.3c2.1 11.4 12 19.7 23.6 19.7L456 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-255.9 0c-34.8 0-64.6-24.9-70.8-59.1L77.2 38.6c-.7-3.8-4-6.6-7.9-6.6L24 32C10.7 32 0 21.3 0 8zM160 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm224 0a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n  };\n  var faBridgeCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'bridge-circle-exclamation',\n    icon: [576, 512, [], \"e4ca\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96 6.4 0 12.7 .6 18.7 1.8 34.7-49.5 92.2-81.8 157.3-81.8 28.6 0 55.6 6.2 80 17.4l0-65.4-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faCloudArrowUp = {\n    prefix: 'fas',\n    iconName: 'cloud-arrow-up',\n    icon: [576, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480c-79.5 0-144-64.5-144-144 0-63.4 41-117.2 97.9-136.5-1.3-7.7-1.9-15.5-1.9-23.5 0-79.5 64.5-144 144-144 55.4 0 103.5 31.3 127.6 77.1 14.2-8.3 30.8-13.1 48.4-13.1 53 0 96 43 96 96 0 15.7-3.8 30.6-10.5 43.7 44 20.3 74.5 64.7 74.5 116.3 0 70.7-57.3 128-128 128l-304 0zM305 191c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 102.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-102.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72z\"]\n  };\n  var faCloudUpload = faCloudArrowUp;\n  var faCloudUploadAlt = faCloudArrowUp;\n  var faAt = {\n    prefix: 'fas',\n    iconName: 'at',\n    icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0 512 114.6 512 256l0 32c0 53-43 96-96 96-29.3 0-55.6-13.2-73.2-33.9-22.8 21-53.3 33.9-86.8 33.9-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1 5.7-5 13.1-8.1 21.3-8.1 17.7 0 32 14.3 32 32l0 112c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n  };\n  var faIndianRupeeSign = {\n    prefix: 'fas',\n    iconName: 'indian-rupee-sign',\n    icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32l264 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-76.7 0c17.7 19.8 30.1 44.6 34.7 72l42 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-42 0c-10.4 62.2-60.8 110.9-123.8 118.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256l80 0c35.8 0 66.1-23.5 76.3-56L24 200c-13.3 0-24-10.7-24-24s10.7-24 24-24l164.3 0c-10.2-32.5-40.5-56-76.3-56L32 96C14.3 96 0 81.7 0 64z\"]\n  };\n  var faIndianRupee = faIndianRupeeSign;\n  var faInr = faIndianRupeeSign;\n  var faTruck = {\n    prefix: 'fas',\n    iconName: 'truck',\n    icon: [576, 512, [128666, 9951], \"f0d1\", \"M0 96C0 60.7 28.7 32 64 32l288 0c35.3 0 64 28.7 64 64l0 32 50.7 0c17 0 33.3 6.7 45.3 18.7L557.3 192c12 12 18.7 28.3 18.7 45.3L576 384c0 35.3-28.7 64-64 64l-3.3 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64l-102.6 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64L64 448c-35.3 0-64-28.7-64-64L0 96zM512 288l0-50.7-45.3-45.3-50.7 0 0 96 96 0zM192 424a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm232 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n  };\n  var faChalkboardUser = {\n    prefix: 'fas',\n    iconName: 'chalkboard-user',\n    icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M128 96c0-35.3 28.7-64 64-64l352 0c35.3 0 64 28.7 64 64l0 240-96 0 0-16c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 16-129.1 0c10.9-18.8 17.1-40.7 17.1-64 0-70.7-57.3-128-128-128-5.4 0-10.8 .3-16 1l0-49zM333 448c-5.1-24.2-16.3-46.1-32.1-64L608 384c0 35.3-28.7 64-64 64l-211 0zM64 272a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM0 480c0-53 43-96 96-96l96 0c53 0 96 43 96 96 0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faChalkboardTeacher = faChalkboardUser;\n  var faUserCheck = {\n    prefix: 'fas',\n    iconName: 'user-check',\n    icon: [640, 512, [], \"f4fc\", \"M136 128a120 120 0 1 1 240 0 120 120 0 1 1 -240 0zM48 482.3C48 383.8 127.8 304 226.3 304l59.4 0c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L77.7 512C61.3 512 48 498.7 48 482.3zM612.4 132.7l-80 128c-4.2 6.7-11.4 10.9-19.3 11.3s-15.5-3.2-20.2-9.6l-48-64c-8-10.6-5.8-25.6 4.8-33.6s25.6-5.8 33.6 4.8l27 36 61.4-98.3c7-11.2 21.8-14.7 33.1-7.6s14.7 21.8 7.6 33.1z\"]\n  };\n  var faUserNinja = {\n    prefix: 'fas',\n    iconName: 'user-ninja',\n    icon: [448, 512, [129399], \"f504\", \"M352 128c0 70.7-57.3 128-128 128-57.2 0-105.6-37.5-122-89.3-1.1 1.3-2.2 2.6-3.5 3.8-15.8 15.8-38.8 20.7-53.6 22.1-8.1 .8-14.6-5.7-13.8-13.8 1.4-14.7 6.3-37.8 22.1-53.6 5.8-5.8 12.6-10.1 19.6-13.4-7-3.2-13.8-7.6-19.6-13.4-15.8-15.8-20.7-38.8-22.1-53.6-.8-8.1 5.7-14.6 13.8-13.8 14.7 1.4 37.8 6.3 53.6 22.1 4.8 4.8 8.7 10.4 11.7 16.1 21.3-41.2 64.3-69.4 113.8-69.4 70.7 0 128 57.3 128 128zM144 112c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L160 96c-8.8 0-16 7.2-16 16zm-1.4 211l67 50.2c8.5 6.4 20.3 6.4 28.8 0l67-50.2c6.5-4.9 15.2-6.2 22.6-2.8 61.4 28.2 104.1 90.2 104.1 162.1 0 16.4-13.3 29.7-29.7 29.7L45.7 512c-16.4 0-29.7-13.3-29.7-29.7 0-72 42.7-134 104.1-162.1 7.4-3.4 16.1-2.1 22.6 2.8z\"]\n  };\n  var faPlantWilt = {\n    prefix: 'fas',\n    iconName: 'plant-wilt',\n    icon: [512, 512, [], \"e5aa\", \"M344-32c66.3 0 120 53.7 120 120l0 6.2c29.3 12.2 48 41.3 48 76.9 0 27.9-25.3 74.8-66 111.7-3.8 3.5-8.8 5.3-14 5.3s-10.2-1.8-14-5.3c-40.7-36.8-66-83.7-66-111.7 0-35.6 18.7-64.7 48-76.9l0-6.2c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 424c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-296c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 38.2c29.3 12.2 48 41.3 48 76.9 0 27.9-25.3 74.8-66 111.7-3.8 3.5-8.8 5.3-14 5.3s-10.2-1.8-14-5.3C25.3 405.9 0 359 0 331.1 0 295.4 18.7 266.4 48 254.2L48 216c0-66.3 53.7-120 120-120 20.2 0 39.3 5 56 13.8L224 88c0-66.3 53.7-120 120-120z\"]\n  };\n  var faWeightScale = {\n    prefix: 'fas',\n    iconName: 'weight-scale',\n    icon: [448, 512, [\"weight\"], \"f496\", \"M116.6 192c-3-10.1-4.6-20.9-4.6-32 0-61.9 50.1-112 112-112S336 98.1 336 160c0 11.1-1.6 21.9-4.6 32l-71 0 24.6-44.3c6.4-11.6 2.3-26.2-9.3-32.6s-26.2-2.3-32.6 9.3l-37.6 67.7-88.8 0zM128 32L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-64 0C293.3 11.9 260 0 224 0s-69.3 11.9-96 32z\"]\n  };\n  var faWeight = faWeightScale;\n  var faCaretRight = {\n    prefix: 'fas',\n    iconName: 'caret-right',\n    icon: [256, 512, [], \"f0da\", \"M32.5 96c0-12.9 7.8-24.6 19.8-29.6S78 64.2 87.1 73.4l160 160c12.5 12.5 12.5 32.8 0 45.3l-160 160c-9.2 9.2-22.9 11.9-34.9 6.9S32.5 428.9 32.5 416l0-320z\"]\n  };\n  var faFlorinSign = {\n    prefix: 'fas',\n    iconName: 'florin-sign',\n    icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0-45.1 108.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z\"]\n  };\n  var faBell = {\n    prefix: 'fas',\n    iconName: 'bell',\n    icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 3.2C119 50 64 114.6 64 192l0 21.7c0 48.1-16.4 94.8-46.4 132.4L7.8 358.3C2.7 364.6 0 372.4 0 380.5 0 400.1 15.9 416 35.5 416l376.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2l-9.8-12.2C400.4 308.5 384 261.8 384 213.7l0-21.7c0-77.4-55-142-128-156.8l0-3.2c0-17.7-14.3-32-32-32zM162 464c7.1 27.6 32.2 48 62 48s54.9-20.4 62-48l-124 0z\"]\n  };\n  var faLariSign = {\n    prefix: 'fas',\n    iconName: 'lari-sign',\n    icon: [384, 512, [], \"e1c8\", \"M144 0c13.3 0 24 10.7 24 24l0 41.5c7.9-1 15.9-1.5 24-1.5s16.1 .5 24 1.5L216 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 54c58.9 23.8 103.2 76 116.2 139.7 3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.7-33.2-26.4-61.8-53.4-80.2l0 81.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-101.8c-7.8-1.5-15.8-2.2-24-2.2s-16.2 .8-24 2.2L168 232c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-81.8c-33.8 23-56 61.9-56 105.8 0 70.7 57.3 128 128 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l16.9 0C18.5 350 0 305.2 0 256 0 175.4 49.6 106.4 120 78l0-54c0-13.3 10.7-24 24-24z\"]\n  };\n  var faMillSign = {\n    prefix: 'fas',\n    iconName: 'mill-sign',\n    icon: [384, 512, [], \"e1ed\", \"M297-22.2c12.3 5 18.2 19 13.2 31.3l-29 71.3C338.8 85.1 384 133.3 384 192l0 208c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-208c0-26.5-21.5-48-48-48-6.4 0-12.5 1.2-18 3.5l-30 73.8 0 178.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-21.2-57.8 142.2c-5 12.3-19 18.2-31.3 13.2s-18.2-19-13.2-31.3L160 251.3 160 192c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 208c0 17.7-14.3 32-32 32S0 417.7 0 400L0 112c0-17.7 14.3-32 32-32 10.9 0 20.5 5.4 26.3 13.7 16-8.7 34.3-13.7 53.7-13.7 31.3 0 59.7 12.9 80 33.6 9.6-9.8 20.9-17.8 33.5-23.5L265.8-9c5-12.3 19-18.2 31.3-13.2z\"]\n  };\n  var faPersonSnowboarding = {\n    prefix: 'fas',\n    iconName: 'person-snowboarding',\n    icon: [576, 512, [127938, \"snowboarding\"], \"f7ce\", \"M424.5 16a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM166.4 45.5c10.2-14.4 30.2-17.9 44.6-7.7l272 192c14.4 10.2 17.9 30.2 7.7 44.6s-30.2 17.9-44.6 7.7l-92.2-65.1-62.2 53.3 32.1 26.7c18.2 15.2 28.8 37.7 28.8 61.5l0 87.8 77.5 15.2c6.2 1.2 12.6 .9 18.7-.8l41.2-11.8c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-41.2 11.8c-13.4 3.8-27.4 4.4-41.1 1.8L87.1 443.3c-17.2-3.4-33-11.8-45.3-24.1L15.5 393c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l26.2 26.2c5.6 5.6 12.8 9.4 20.6 11l64.2 12.6 0-123.7c0-27.7 12-54 32.8-72.2l69-60.4-88.2-62.3C159.6 80 156.2 60 166.4 45.5zm58.1 375.7l64 12.5 0-75.3c0-4.7-2.1-9.3-5.8-12.3l-58.2-48.5 0 123.6z\"]\n  };\n  var faSnowboarding = faPersonSnowboarding;\n  var faTty = {\n    prefix: 'fas',\n    iconName: 'tty',\n    icon: [512, 512, [\"teletype\"], \"f1e4\", \"M450.2 266.8c15.8 6.5 34.1 .3 42.6-14.6l2.4-4.2c27.9-48.9 23.6-118.8-31.3-154.5-126-82-289.6-82-415.6 0-54.9 35.7-59.3 105.7-31.3 154.5l2.4 4.2c8.5 14.9 26.7 21.1 42.6 14.6l81.9-33.7c13.9-5.7 22.4-19.9 20.9-34.9l-5.1-51c62.5-21 130.8-19.9 192.6 3.3l-4.8 47.7c-1.5 15 7 29.2 20.9 34.9l81.9 33.7zM32 352a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm96 0a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM64 416a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm352 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM256 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm128-32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM128 448c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32z\"]\n  };\n  var faTeletype = faTty;\n  var faUsersRectangle = {\n    prefix: 'fas',\n    iconName: 'users-rectangle',\n    icon: [576, 512, [], \"e594\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm224 72a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm0 152c53 0 96 43 96 96l0 24c0 13.3-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24l0-24c0-53 43-96 96-96zm96-64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM168 272.3c-15.2 22.8-24 50.2-24 79.7l0 24c0 8.4 1.4 16.5 4.1 24l-46.8 0C89.6 400 80 390.4 80 378.7L80 368c0-50.3 38.7-91.6 88-95.7zM427.9 400c2.7-7.5 4.1-15.6 4.1-24l0-24c0-29.5-8.8-56.9-24-79.7 49.3 4.1 88 45.3 88 95.7l0 10.7c0 11.8-9.6 21.3-21.3 21.3l-46.8 0zM96 192a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n  };\n  var faMobile = {\n    prefix: 'fas',\n    iconName: 'mobile',\n    icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zm72 416l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faMobileAndroid = faMobile;\n  var faMobilePhone = faMobile;\n  var faArrowsTurnToDots = {\n    prefix: 'fas',\n    iconName: 'arrows-turn-to-dots',\n    icon: [448, 512, [], \"e4c1\", \"M265.4-6.6c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L285.3 64 352 64c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7-14.3-32-32-32l-66.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm-82.7 272l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L162.7 400 96 400c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32S0 481.7 0 464l0-32c0-53 43-96 96-96l66.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM320 368a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 160a64 64 0 1 1 0-128 64 64 0 1 1 0 128z\"]\n  };\n  var faExclamation = {\n    prefix: 'fas',\n    iconName: 'exclamation',\n    icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32l0 320c0 17.7 14.3 32 32 32s32-14.3 32-32L96 32zM64 512c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40z\"]\n  };\n  var faChurch = {\n    prefix: 'fas',\n    iconName: 'church',\n    icon: [512, 512, [9962], \"f51d\", \"M280-8c0-13.3-10.7-24-24-24S232-21.3 232-8l0 24-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 48-98.6 65.8C120 186.7 112 201.6 112 217.7l0 38.3-79.8 45.6C12.3 313 0 334.2 0 357.1L0 448c0 35.3 28.7 64 64 64 74.7 0 85.4 0 320 0l64 0c35.3 0 64-28.7 64-64l0-90.9c0-23-12.3-44.2-32.2-55.6L400 256 400 217.7c0-16-8-31-21.4-39.9l-98.6-65.8 0-48 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-24zM256 320c35.3 0 64 28.7 64 64l0 80-128 0 0-80c0-35.3 28.7-64 64-64z\"]\n  };\n  var faToggleOff = {\n    prefix: 'fas',\n    iconName: 'toggle-off',\n    icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128S454.7 384 384 384l-192 0c-70.7 0-128-57.3-128-128s57.3-128 128-128l192 0zM576 256c0-106-86-192-192-192L192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192zM192 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n  };\n  var faShoePrints = {\n    prefix: 'fas',\n    iconName: 'shoe-prints',\n    icon: [576, 512, [], \"f54b\", \"M296 192c-21.1-12.1-42.3-24.2-72-29.3l0-140.3C257.7 13 311.4 0 352 0 448 0 576 48 576 128s-119.6 96-176 96c-48 0-76-16-104-32zM128 32l48 0 0 128-48 0c-35.3 0-64-28.7-64-64s28.7-64 64-64zM232 320c28-16 56-32 104-32 56.4 0 176 16 176 96S384 512 288 512c-40.5 0-94.3-13-128-22.4l0-140.3c29.7-5.2 50.9-17.3 72-29.4zM64 480c-35.3 0-64-28.7-64-64s28.7-64 64-64l48 0 0 128-48 0z\"]\n  };\n  var faFileCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'file-circle-exclamation',\n    icon: [576, 512, [], \"e4eb\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faWallet = {\n    prefix: 'fas',\n    iconName: 'wallet',\n    icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64L72 128c-13.3 0-24-10.7-24-24S58.7 80 72 80l384 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 32zM416 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faMessage = {\n    prefix: 'fas',\n    iconName: 'message',\n    icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M0 352L0 128C0 75 43 32 96 32l320 0c53 0 96 43 96 96l0 224c0 53-43 96-96 96l-120 0c-5.2 0-10.2 1.7-14.4 4.8L166.4 539.2c-4.2 3.1-9.2 4.8-14.4 4.8-13.3 0-24-10.7-24-24l0-72-32 0c-53 0-96-43-96-96z\"]\n  };\n  var faCommentAlt = faMessage;\n  var faTrophy = {\n    prefix: 'fas',\n    iconName: 'trophy',\n    icon: [512, 512, [127942], \"f091\", \"M144.3 0l224 0c26.5 0 48.1 21.8 47.1 48.2-.2 5.3-.4 10.6-.7 15.8l49.6 0c26.1 0 49.1 21.6 47.1 49.8-7.5 103.7-60.5 160.7-118 190.5-15.8 8.2-31.9 14.3-47.2 18.8-20.2 28.6-41.2 43.7-57.9 51.8l0 73.1 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-73.1c-16-7.7-35.9-22-55.3-48.3-18.4-4.8-38.4-12.1-57.9-23.1-54.1-30.3-102.9-87.4-109.9-189.9-1.9-28.1 21-49.7 47.1-49.7l49.6 0c-.3-5.2-.5-10.4-.7-15.8-1-26.5 20.6-48.2 47.1-48.2zM101.5 112l-52.4 0c6.2 84.7 45.1 127.1 85.2 149.6-14.4-37.3-26.3-86-32.8-149.6zM380 256.8c40.5-23.8 77.1-66.1 83.3-144.8L411 112c-6.2 60.9-17.4 108.2-31 144.8z\"]\n  };\n  var faFaceDizzy = {\n    prefix: 'fas',\n    iconName: 'face-dizzy',\n    icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM134.1 153.9l25.9 25.9 25.9-25.9c7.8-7.8 20.5-7.8 28.3 0s7.8 20.5 0 28.3l-25.9 25.9 25.9 25.9c7.8 7.8 7.8 20.5 0 28.3s-20.5 7.8-28.3 0l-25.9-25.9-25.9 25.9c-7.8 7.8-20.5 7.8-28.3 0s-7.8-20.5 0-28.3l25.9-25.9-25.9-25.9c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0zm192 0l25.9 25.9 25.9-25.9c7.8-7.8 20.5-7.8 28.3 0s7.8 20.5 0 28.3l-25.9 25.9 25.9 25.9c7.8 7.8 7.8 20.5 0 28.3s-20.5 7.8-28.3 0l-25.9-25.9-25.9 25.9c-7.8 7.8-20.5 7.8-28.3 0s-7.8-20.5 0-28.3l25.9-25.9-25.9-25.9c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0zM256 304a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n  };\n  var faDizzy = faFaceDizzy;\n  var faBacteria = {\n    prefix: 'fas',\n    iconName: 'bacteria',\n    icon: [640, 512, [], \"e059\", \"M256-32c13.3 0 24 10.7 24 24l0 11c8.6 2.2 16.9 5.6 24.8 10.3L311 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-6.3 6.3c4.6 7.8 8 16.2 10.3 24.8l11 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-11 0c-2.2 8.6-5.6 16.9-10.3 24.8L345 151c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1-30.1 30.1 4.1 4.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1c-10 10-20 20-30.1 30.1L217 279c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-6.3-6.3c-7.8 4.6-16.2 8-24.8 10.3l0 11c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11c-8.6-2.2-16.9-5.6-24.8-10.3L73 313c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l6.3-6.3c-4.6-7.8-8-16.2-10.3-24.8l-11 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l11 0c2.2-8.6 5.6-16.9 10.3-24.8L39 169c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1c10-10 20-20 30.1-30.1L103 105c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1 30.1-30.1-4.1-4.1c-9.4-9.4-9.4-24.6 0-33.9S191.6-2.3 201 7l6.3 6.3c7.8-4.6 16.2-8 24.8-10.3l0-11c0-13.3 10.7-24 24-24zM128 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM240 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm296 40l0 11c8.6 2.2 16.9 5.6 24.8 10.3L567 199c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-6.3 6.3c4.6 7.8 8 16.2 10.3 24.8l11 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-11 0c-2.2 8.6-5.6 16.9-10.3 24.8L601 343c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1-30.1 30.1 4.1 4.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1c-10 10-20 20-30.1 30.1L473 471c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-6.3-6.3c-7.8 4.6-16.2 8-24.8 10.3l0 11c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11c-8.6-2.2-16.9-5.6-24.8-10.3L329 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l6.3-6.3c-4.6-7.8-8-16.2-10.3-24.8l-11 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l11 0c2.2-8.6 5.6-16.9 10.3-24.8L295 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1c10-10 20-20 30.1-30.1L359 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1 30.1-30.1-4.1-4.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l6.3 6.3c7.8-4.6 16.2-8 24.8-10.3l0-11c0-13.3 10.7-24 24-24s24 10.7 24 24zM448 384a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faEarDeaf = {\n    prefix: 'fas',\n    iconName: 'ear-deaf',\n    icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3c9.7-88 84.3-156.5 174.9-156.5 97.2 0 176 78.8 176 176 0 46-17.7 87.9-46.6 119.3-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78 18.4-20 29.6-46.6 29.6-75.9 0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n  };\n  var faDeaf = faEarDeaf;\n  var faDeafness = faEarDeaf;\n  var faHardOfHearing = faEarDeaf;\n  var faPeopleArrows = {\n    prefix: 'fas',\n    iconName: 'people-arrows',\n    icon: [512, 512, [\"people-arrows-left-right\"], \"e068\", \"M32 64A64 64 0 1 1 160 64 64 64 0 1 1 32 64zM0 224c0-35.3 28.7-64 64-64l64 0c3.2 0 6.4 .2 9.5 .7L93.1 205.1C65 233.2 65 278.8 93.1 306.9l56 56c3.4 3.4 7 6.4 10.9 9l0 92.1c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-120.6C12.9 332.4 0 311.7 0 288l0-64zM352 64a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm66.9 141.1l-44.4-44.4c3.1-.5 6.3-.7 9.5-.7l64 0c35.3 0 64 28.7 64 64l0 64c0 23.7-12.9 44.4-32 55.4L480 464c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-92.1c3.9-2.6 7.5-5.6 10.9-9l56-56c28.1-28.1 28.1-73.7 0-101.8zM302.8 177.8c9-3.7 19.3-1.7 26.2 5.2l56 56c9.4 9.4 9.4 24.6 0 33.9l-56 56c-6.9 6.9-17.2 8.9-26.2 5.2S288 321.7 288 312l0-24-64 0 0 24c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-56-56c-9.4-9.4-9.4-24.6 0-33.9l56-56c6.9-6.9 17.2-8.9 26.2-5.2S224 190.3 224 200l0 24 64 0 0-24c0-9.7 5.8-18.5 14.8-22.2z\"]\n  };\n  var faPeopleArrowsLeftRight = faPeopleArrows;\n  var faHandsClapping = {\n    prefix: 'fas',\n    iconName: 'hands-clapping',\n    icon: [512, 512, [], \"e1a8\", \"M344 8l0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64c0-13.3 10.7-24 24-24S344-5.3 344 8zM220 10.7l32 48c7.4 11 4.4 25.9-6.7 33.3s-25.9 4.4-33.3-6.7l-32-48c-7.4-11-4.4-25.9 6.7-33.3S212.6-.3 220 10.7zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1 48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4zM453.3 4c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7z\"]\n  };\n  var faVirusCovidSlash = {\n    prefix: 'fas',\n    iconName: 'virus-covid-slash',\n    icon: [576, 512, [], \"e4a9\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-83-83 11.4-11.4c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-11.3 11.3-23.8-23.8c17.9-23.5 29.9-51.7 34.1-82.3l33.6 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-33.6 0c-4.2-30.7-16.3-58.8-34.1-82.3l23.8-23.8 11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L440.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l11.3 11.3-23.8 23.8C370.8 97.9 342.7 85.8 312 81.6l0-33.6 16 0c13.3 0 24-10.7 24-24S341.3 0 328 0L248 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.6c-30.7 4.2-58.8 16.3-82.3 34.1L157.9 92 169.2 80.6c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L123.9 58.1 41-24.9zM113.6 232l-33.6 0 0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 33.6 0c4.2 30.7 16.3 58.8 34.1 82.3l-23.8 23.8-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.3-11.3 23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1l0 33.6-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0-33.6c13.4-1.8 26.4-5.2 38.7-9.9L123.5 193.3c-4.7 12.3-8 25.2-9.9 38.7z\"]\n  };\n  var faCalendarDays = {\n    prefix: 'fas',\n    iconName: 'calendar-days',\n    icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zM64 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm128 0l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faCalendarAlt = faCalendarDays;\n  var faDiamondTurnRight = {\n    prefix: 'fas',\n    iconName: 'diamond-turn-right',\n    icon: [512, 512, [\"directions\"], \"f5eb\", \"M215 17L17 215C6.1 225.9 0 240.6 0 256s6.1 30.1 17 41L215 495c10.9 10.9 25.6 17 41 17s30.1-6.1 41-17L495 297c10.9-10.9 17-25.6 17-41s-6.1-30.1-17-41L297 17C286.1 6.1 271.4 0 256 0s-30.1 6.1-41 17zM385 257l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-78.1 0c-13.3 0-24 10.7-24 24l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40c0-39.8 32.2-72 72-72l78.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9z\"]\n  };\n  var faDirections = faDiamondTurnRight;\n  var faHandPointUp = {\n    prefix: 'fas',\n    iconName: 'hand-point-up',\n    icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32l0 208-64 0 0-208zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-64-64c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n  };\n  var faBezierCurve = {\n    prefix: 'fas',\n    iconName: 'bezier-curve',\n    icon: [640, 512, [], \"f55b\", \"M296 136l0-48 48 0 0 48-48 0zM288 32c-26.5 0-48 21.5-48 48l0 4-118.4 0C111.2 62.7 89.3 48 64 48 28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36l66.9 0c-58.9 39.6-98.9 105-104 180L80 320c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-3.3 0c5.9-67 48.5-123.4 107.5-149.1 8.6 12.7 23.2 21.1 39.8 21.1l64 0c16.6 0 31.1-8.4 39.8-21.1 59 25.7 101.6 82.1 107.5 149.1l-3.3 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-4.5 0c-5-75-45.1-140.4-104-180l66.9 0c10.4 21.3 32.3 36 57.6 36 35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36l-118.4 0 0-4c0-26.5-21.5-48-48-48l-64 0zM88 376l48 0 0 48-48 0 0-48zm416 48l0-48 48 0 0 48-48 0z\"]\n  };\n  var faPersonHalfDress = {\n    prefix: 'fas',\n    iconName: 'person-half-dress',\n    icon: [384, 512, [], \"e548\", \"M143.4-3.9c9.7-16.8 27.8-28.1 48.6-28.1 30.9 0 56 25.1 56 56 0 25.4-16.9 46.8-40 53.7l0 0c-5.1 1.5-10.4 2.3-16 2.3-30.9 0-56-25.1-56-56l0 0c0-10.1 2.7-19.7 7.4-27.9zM318.3 299.1L272 236.7 272 512c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160 0-.4 0-238.6c36.2 4.4 69.2 23.4 91.2 53l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6zM176 113l0 399c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-25.8 0c-10.9 0-18.6-10.7-15.2-21.1l43-129-48.3 65.1c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95c22-29.6 55.1-48.6 91.2-53z\"]\n  };\n  var faSquarePollHorizontal = {\n    prefix: 'fas',\n    iconName: 'square-poll-horizontal',\n    icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 152c0 13.3-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0c13.3 0 24 10.7 24 24zm72 80c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l208 0zM192 360c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24z\"]\n  };\n  var faPollH = faSquarePollHorizontal;\n  var faSchoolCircleXmark = {\n    prefix: 'fas',\n    iconName: 'school-circle-xmark',\n    icon: [640, 512, [], \"e56d\", \"M64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l276 0c-10.5-14.6-19-30.7-25.1-48l-90.9 0 0-88c0-22.1 17.9-40 40-40l48 0c1 0 1.9 0 2.9 .1 26.3-74.6 97.5-128.1 181.1-128.1 28.6 0 55.6 6.2 80 17.4l0-33.4c0-35.3-28.7-64-64-64l-64 0-127.9-115.1c-18.3-16.4-46-16.4-64.2 0L128 128 64 128zm64 240c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 256l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM288 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faHandLizard = {\n    prefix: 'fas',\n    iconName: 'hand-lizard',\n    icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64l238.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 76c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8-78.1-50.2-161.9 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l128 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L48 160c-26.5 0-48-21.5-48-48z\"]\n  };\n  var faChalkboard = {\n    prefix: 'fas',\n    iconName: 'chalkboard',\n    icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 64c-35.3 0-64 28.7-64 64l0 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-256c0-35.3-28.7-64-64-64L96 64zM480 384l-64 0 0-32c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32l0 32-160 0 0-256 384 0 0 256z\"]\n  };\n  var faBlackboard = faChalkboard;\n  var faUpRightFromSquare = {\n    prefix: 'fas',\n    iconName: 'up-right-from-square',\n    icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M290.4 19.8C295.4 7.8 307.1 0 320 0L480 0c17.7 0 32 14.3 32 32l0 160c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9L400 157.3 246.6 310.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L354.7 112 297.4 54.6c-9.2-9.2-11.9-22.9-6.9-34.9zM0 176c0-44.2 35.8-80 80-80l80 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-80 0c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-80c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80c0 44.2-35.8 80-80 80L80 512c-44.2 0-80-35.8-80-80L0 176z\"]\n  };\n  var faExternalLinkAlt = faUpRightFromSquare;\n  var faSquareFull = {\n    prefix: 'fas',\n    iconName: 'square-full',\n    icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 64C0 28.7 28.7 0 64 0L448 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z\"]\n  };\n  var faClover = {\n    prefix: 'fas',\n    iconName: 'clover',\n    icon: [512, 512, [], \"e139\", \"M310.4 16C346.6 16 376 45.4 376 81.7l0 5.2c0 11.2-2.7 22.3-7.8 32.2l-2.3 4.2-20.1 33.5c-1.1 1.9-1.2 3.4-1.1 4.5 .2 1.3 .9 2.7 2.1 3.9s2.6 1.9 3.9 2.1c1.1 .2 2.6 .1 4.5-1.1l33.5-20.1 4.2-2.3c10-5.1 21-7.8 32.2-7.8l5.2 0c36.2 0 65.6 29.4 65.6 65.7 0 17.4-6.9 34.1-19.2 46.4l-1.3 1.3c-3.7 3.7-3.7 9.6 0 13.3l1.3 1.3c12.3 12.3 19.2 29 19.2 46.4 0 36.2-29.4 65.6-65.6 65.6l-5.2 0c-12.8 0-25.5-3.5-36.5-10.1l-33.5-20.1c-1.9-1.1-3.4-1.2-4.5-1.1-1.3 .2-2.7 .9-3.9 2.1s-1.9 2.6-2.1 3.9c-.2 1.1-.1 2.6 1.1 4.5l20.1 33.5c6.6 11 10.1 23.6 10.1 36.5l0 5.2c0 36.2-29.4 65.6-65.6 65.6-17.4 0-34.1-6.9-46.4-19.2l-1.3-1.3c-3.7-3.7-9.6-3.7-13.3 0l-1.3 1.3c-12.3 12.3-29 19.2-46.4 19.2-36.2 0-65.6-29.4-65.7-65.6l0-5.2c0-12.8 3.5-25.5 10.1-36.5l20.1-33.5c1.1-1.9 1.2-3.4 1.1-4.5-.2-1.3-.9-2.7-2.1-3.9s-2.6-1.9-3.9-2.1c-.5-.1-1.2-.1-1.9 0l-2.5 1-33.5 20.1c-11 6.6-23.6 10.1-36.5 10.1l-5.2 0C45.4 376 16 346.6 16 310.4 16 293 22.9 276.3 35.2 264l1.3-1.3 1.2-1.5c2.1-3.1 2.1-7.2 0-10.3l-1.2-1.5-1.3-1.3C22.9 235.8 16 219.1 16 201.7 16 165.4 45.4 136 81.7 136l5.2 0c12.8 0 25.5 3.5 36.5 10.1l33.5 20.1 2.5 1c.7 .1 1.4 .1 1.9 .1 1.3-.2 2.7-.9 3.9-2.1s1.9-2.6 2.1-3.9c.1-.5 .1-1.2-.1-1.9l-1-2.5-20.1-33.5c-6.6-11-10.1-23.6-10.1-36.5l0-5.2c0-36.2 29.4-65.7 65.7-65.7 17.4 0 34.1 6.9 46.4 19.2l1.3 1.3c3.7 3.6 9.6 3.7 13.3 0l1.3-1.3 4.8-4.4C280.5 21.3 295.1 16 310.4 16z\"]\n  };\n  var faTeethOpen = {\n    prefix: 'fas',\n    iconName: 'teeth-open',\n    icon: [512, 512, [], \"f62f\", \"M64 32C28.7 32 0 60.7 0 96l0 80c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-80c0-35.3-28.7-64-64-64L64 32zm0 272c-35.3 0-64 28.7-64 64l0 48c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-48c0-35.3-28.7-64-64-64L64 304zm80-160c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zm128 0c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zM80 112c17.7 0 32 14.3 32 32l0 24c0 13.3-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24l0-24c0-17.7 14.3-32 32-32zm320 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 24c0 13.3-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24l0-24zM48 384l0-16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32zm144 48c-26.5 0-48-21.5-48-48l0-16c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 16c0 26.5-21.5 48-48 48zm128 0c-26.5 0-48-21.5-48-48l0-16c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 16c0 26.5-21.5 48-48 48zm112-16c-17.7 0-32-14.3-32-32l0-16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 16c0 17.7-14.3 32-32 32z\"]\n  };\n  var faBarsStaggered = {\n    prefix: 'fas',\n    iconName: 'bars-staggered',\n    icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n  };\n  var faReorder = faBarsStaggered;\n  var faStream = faBarsStaggered;\n  var faWarehouse = {\n    prefix: 'fas',\n    iconName: 'warehouse',\n    icon: [576, 512, [], \"f494\", \"M0 142.1L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-240c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32l0 240c0 17.7 14.3 32 32 32s32-14.3 32-32l0-337.9c0-27.5-17.6-52-43.8-60.7L303.2 5.1c-9.9-3.3-20.5-3.3-30.4 0L43.8 81.4C17.6 90.1 0 114.6 0 142.1zM464 256l-352 0 0 64 352 0 0-64zM112 416l352 0 0-64-352 0 0 64zm352 32l-352 0 0 64 352 0 0-64z\"]\n  };\n  var faSwatchbook = {\n    prefix: 'fas',\n    iconName: 'swatchbook',\n    icon: [512, 512, [], \"f5c3\", \"M0 48C0 21.5 21.5 0 48 0l96 0c26.5 0 48 21.5 48 48l0 368c0 53-43 96-96 96S0 469 0 416L0 48zM240 409.6l0-271.5 48.1-48.1c18.7-18.7 49.1-18.7 67.9 0l67.9 67.9c18.7 18.7 18.7 49.1 0 67.9L240 409.6zM205.5 512l192-192 66.6 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-258.5 0zM80 64c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 64zM64 208l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faCampground = {\n    prefix: 'fas',\n    iconName: 'campground',\n    icon: [512, 512, [9978], \"f6bb\", \"M344.8 52.3c11.2-13.7 9.2-33.8-4.5-45s-33.8-9.2-45 4.5l-39.2 48-39.2-48C205.6-1.9 185.4-4 171.7 7.2s-15.7 31.4-4.5 45l47.4 58-202 246.9C4.5 367.1 0 379.6 0 392.6L0 432c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-39.4c0-12.9-4.5-25.5-12.7-35.5l-202-246.9 47.4-58zM256 288l112 128-224 0 112-128z\"]\n  };\n  var faPersonWalkingArrowRight = {\n    prefix: 'fas',\n    iconName: 'person-walking-arrow-right',\n    icon: [576, 512, [], \"e552\", \"M104.5 24a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm-8 181.3L73.9 227.9c-6 6-9.4 14.1-9.4 22.6l0 37.5c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-37.5c0-25.5 10.1-49.9 28.1-67.9l35.1-35.1c22.8-22.8 53.6-35.6 85.8-35.6 36.9 0 71.8 16.8 94.8 45.6L262.3 180c6.1 7.6 15.3 12 25 12l33.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-33.2 0c-29.2 0-56.7-13.3-75-36l-3.8-4.7 0 115.2 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3l12.6 88.1c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2l-12.6-88.1c-1.1-7.7-5-14.7-10.9-19.8L130 347.5c-21.3-18.2-33.5-44.9-33.5-72.9l0-69.3zM96.6 371c2.4 2.3 4.8 4.6 7.4 6.8l46 39.4-2.2 7.6c-4.5 15.7-12.9 30-24.4 41.5L55.1 534.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l68.3-68.3c3.8-3.8 6.6-8.6 8.1-13.8L96.6 371zM505.5 345c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l102.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72z\"]\n  };\n  var faGlasses = {\n    prefix: 'fas',\n    iconName: 'glasses',\n    icon: [576, 512, [], \"f530\", \"M143.3 96c-14 0-26.5 9.2-30.6 22.6L70.4 256 224 256c17.7 0 32 14.3 32 32l64 0c0-17.7 14.3-32 32-32l153.6 0-42.3-137.4C459.2 105.2 446.8 96 432.7 96L400 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l32.7 0c42.1 0 79.4 27.5 91.8 67.8l45.4 147.5c4.1 13.2 6.1 26.9 6.1 40.7l0 96c0 53-43 96-96 96l-64 0c-53 0-96-43-96-96l0-32-64 0 0 32c0 53-43 96-96 96l-64 0c-53 0-96-43-96-96l0-96c0-13.8 2.1-27.5 6.1-40.7L51.5 99.8C63.9 59.5 101.1 32 143.3 32L176 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.7 0zM64 320l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64-128 0zm416 96c17.7 0 32-14.3 32-32l0-64-128 0 0 64c0 17.7 14.3 32 32 32l64 0z\"]\n  };\n  var faCirclePause = {\n    prefix: 'fas',\n    iconName: 'circle-pause',\n    icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n  };\n  var faPauseCircle = faCirclePause;\n  var faMemory = {\n    prefix: 'fas',\n    iconName: 'memory',\n    icon: [512, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128l0 7.4C0 142.2 4.4 148 10.1 151.7 23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6l0 55.4 512 0 0-55.4c0-6.8-4.4-12.6-10.1-16.3-13.2-8.6-21.9-23.4-21.9-40.3s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3l0-7.4c0-35.3-28.7-64-64-64L64 64zM512 416l0-64-512 0 0 64c0 17.7 14.3 32 32 32l64 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 24 88 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 24 88 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 24 64 0c17.7 0 32-14.3 32-32zM160 160l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n  };\n  var faGift = {\n    prefix: 'fas',\n    iconName: 'gift',\n    icon: [512, 512, [127873], \"f06b\", \"M321.5 68.8C329.1 55.9 342.9 48 357.8 48l2.2 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-73.3 0 34.8-59.2zm-131 0l34.8 59.2-73.3 0c-22.1 0-40-17.9-40-40s17.9-40 40-40l2.2 0c14.9 0 28.8 7.9 36.3 20.8zm89.6-24.3l-24.1 41-24.1-41C215.7 16.9 186.1 0 154.2 0L152 0c-48.6 0-88 39.4-88 88 0 14.4 3.5 28 9.6 40L32 128c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-41.6 0c6.1-12 9.6-25.6 9.6-40 0-48.6-39.4-88-88-88l-2.2 0c-31.9 0-61.5 16.9-77.7 44.4zM480 272l-200 0 0 208 136 0c35.3 0 64-28.7 64-64l0-144zm-248 0l-200 0 0 144c0 35.3 28.7 64 64 64l136 0 0-208z\"]\n  };\n  var faMoneyBillWheat = {\n    prefix: 'fas',\n    iconName: 'money-bill-wheat',\n    icon: [512, 512, [], \"e52a\", \"M176-16c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80 0-8.8 7.2-16 16-16zM56 0l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 48C42.7 48 32 37.3 32 24S42.7 0 56 0zM24 72l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 120C10.7 120 0 109.3 0 96S10.7 72 24 72zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 0c0-8.8 7.2-16 16-16 44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80zM400-16c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80 0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM352 112c8.8 0 16 7.2 16 16 0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n  };\n  var faDungeon = {\n    prefix: 'fas',\n    iconName: 'dungeon',\n    icon: [512, 512, [], \"f6d9\", \"M347.5 144.8c6.5 5.4 12.5 11.3 18 17.7 8.7 10.2 23.7 14 35.1 6.9l54.1-33.8c11.2-7 14.7-21.7 6.9-32.2-15.3-20.5-33.5-38.6-54.1-53.8-10.4-7.6-24.7-4.3-31.8 6.4l-35.1 52.6c-7.8 11.6-3.8 27.3 7 36.2zM327.8 41.1c8.6-12.9 2.9-30.5-12.2-34.1-19.1-4.6-39.1-7-59.6-7s-40.4 2.4-59.6 7c-15.1 3.6-20.8 21.2-12.2 34.1l40 60c5.2 7.8 14.5 11.7 23.9 11.2 5.2-.3 10.6-.3 15.8 0 9.4 .5 18.7-3.4 23.9-11.2l40-60zM50.5 103.3c-7.9 10.5-4.3 25.3 6.9 32.2l54.1 33.8c11.4 7.1 26.3 3.3 35.1-6.9 5.5-6.4 11.5-12.3 18-17.7 10.8-8.9 14.8-24.6 7-36.2L136.4 55.9c-7.1-10.7-21.5-14-31.8-6.4-20.6 15.1-38.8 33.3-54.1 53.8zm62 141.1c.8-9.9-3.3-19.9-11.8-25.1L41 182c-12.9-8-29.9-2.3-33.6 12.5-4.9 19.7-7.5 40.3-7.5 61.6l0 24c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-24c0-3.9 .2-7.8 .5-11.6zm287.1 0c.3 3.8 .5 7.7 .5 11.6l0 24c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-24c0-21.2-2.6-41.8-7.5-61.6-3.6-14.7-20.7-20.5-33.6-12.5l-59.7 37.3c-8.4 5.3-12.6 15.2-11.8 25.1zM88 352l-64 0c-13.3 0-24 10.7-24 24L0 488c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm400 0l-64 0c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zM280 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304zm-80 32c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272zm160 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272z\"]\n  };\n  var faSuitcaseMedical = {\n    prefix: 'fas',\n    iconName: 'suitcase-medical',\n    icon: [512, 512, [\"medkit\"], \"f0fa\", \"M192 56l0 40 128 0 0-40c0-4.4-3.6-8-8-8L200 48c-4.4 0-8 3.6-8 8zm-48 8l0-8c0-30.9 25.1-56 56-56L312 0c30.9 0 56 25.1 56 56l0 424-224 0 0-416zM96 176l0 304-32 0c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l32 0 0 80zM416 480l0-384 32 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-32 0zM244 208c-8.8 0-16 7.2-16 16l0 36-36 0c-8.8 0-16 7.2-16 16l0 24c0 8.8 7.2 16 16 16l36 0 0 36c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-36 36 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-36 0 0-36c0-8.8-7.2-16-16-16l-24 0z\"]\n  };\n  var faMedkit = faSuitcaseMedical;\n  var faPersonCane = {\n    prefix: 'fas',\n    iconName: 'person-cane',\n    icon: [448, 512, [], \"e53c\", \"M232-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM144 236.7L97.7 299.1c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C142 132 181.7 112 224 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6L304 236.7 304 512c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-275.3zM392 384c-4.4 0-8 3.6-8 8 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-128c0-4.4-3.6-8-8-8z\"]\n  };\n  var faGauge = {\n    prefix: 'fas',\n    iconName: 'gauge',\n    icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm320 96c0-26.9-16.5-49.9-40-59.3L280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 172.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faDashboard = faGauge;\n  var faGaugeMed = faGauge;\n  var faTachometerAltAverage = faGauge;\n  var faEnvelopeOpenText = {\n    prefix: 'fas',\n    iconName: 'envelope-open-text',\n    icon: [576, 512, [], \"f658\", \"M288 33.9L96.4 175.8 254.5 293c5.3 3.9 11.2 6.9 17.5 8.7L272 464c0 5.5 .5 10.8 1.3 16L96 480c-35.3 0-64-28.7-64-64l0-239.9c0-20.3 9.6-39.4 25.9-51.4L254.5-21c9.7-7.2 21.4-11 33.5-11s23.8 3.9 33.5 11L518.1 124.7c7.2 5.3 13.1 12 17.4 19.6-2.5-.2-5-.3-7.5-.3L436.6 144 288 33.9zM320 240c0-26.5 21.5-48 48-48l160 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-224zm80 16c-13.3 0-24 10.7-24 24s10.7 24 24 24l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-96 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0z\"]\n  };\n  var faToolbox = {\n    prefix: 'fas',\n    iconName: 'toolbox',\n    icon: [512, 512, [129520], \"f552\", \"M176 56l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 48c-4.4 0-8 3.6-8 8zM128 96l0-40c0-30.9 25.1-56 56-56L328 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 76.1-136 0 0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-144 0 0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-136 0 0-76.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1L128 96zM0 416l0-96 136 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 144 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 136 0 0 96c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"]\n  };\n  var faPowerOff = {\n    prefix: 'fas',\n    iconName: 'power-off',\n    icon: [512, 512, [9211], \"f011\", \"M288 0c0-17.7-14.3-32-32-32S224-17.7 224 0l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32L288 0zM146.3 98.4c14.5-10.1 18-30.1 7.9-44.6s-30.1-18-44.6-7.9C43.4 92.1 0 169 0 256 0 397.4 114.6 512 256 512S512 397.4 512 256c0-87-43.4-163.9-109.7-210.1-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6c49.8 34.8 82.3 92.4 82.3 157.6 0 106-86 192-192 192S64 362 64 256c0-65.2 32.5-122.9 82.3-157.6z\"]\n  };\n  var faSignal = {\n    prefix: 'fas',\n    iconName: 'signal',\n    icon: [512, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M488 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400zM360 128c-13.3 0-24 10.7-24 24l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-13.3-10.7-24-24-24zM280 248c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208zM152 320c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zM48 384c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24z\"]\n  };\n  var faSignal5 = faSignal;\n  var faSignalPerfect = faSignal;\n  var faArrowsSpin = {\n    prefix: 'fas',\n    iconName: 'arrows-spin',\n    icon: [512, 512, [], \"e4bb\", \"M481.7 240.1c-17.6-1.2-32.9 12-34.2 29.7-3.3 47-23.6 89.4-54.8 121L361 359c-6.9-6.9-17.2-8.9-26.2-5.2S320 366.3 320 376l0 112c0 13.3 10.7 24 24 24l112 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-35-35c41.7-42.2 68.9-98.8 73.4-161.8 1.2-17.6-12-32.9-29.7-34.2zM39 41L74 76c-41.7 42.2-68.9 98.8-73.4 161.8-1.2 17.6 12 32.9 29.7 34.2s32.9-12 34.2-29.7c3.3-47 23.6-89.4 54.8-121L151 153c6.9 6.9 17.2 8.9 26.2 5.2S192 145.7 192 136l0-112c0-13.3-10.7-24-24-24L56 0C46.3 0 37.5 5.8 33.8 14.8S32.2 34.1 39 41zm201-10.7c-1.2 17.6 12 32.9 29.7 34.2 47 3.3 89.4 23.6 121 54.8L359 151c-6.9 6.9-8.9 17.2-5.2 26.2S366.3 192 376 192l112 0c13.3 0 24-10.7 24-24l0-112c0-9.7-5.8-18.5-14.8-22.2S477.9 32.2 471 39L436 74c-42.2-41.7-98.8-68.9-161.8-73.4-17.6-1.2-32.9 12-34.2 29.7zM41 473l35-35c42.2 41.7 98.8 68.9 161.8 73.4 17.6 1.2 32.9-12 34.2-29.7s-12-32.9-29.7-34.2c-47-3.3-89.4-23.6-121-54.8L153 361c6.9-6.9 8.9-17.2 5.2-26.2S145.7 320 136 320L24 320c-13.3 0-24 10.7-24 24L0 456c0 9.7 5.8 18.5 14.8 22.2S34.1 479.8 41 473z\"]\n  };\n  var faJoint = {\n    prefix: 'fas',\n    iconName: 'joint',\n    icon: [576, 512, [], \"f595\", \"M360 0c13.3 0 24 10.7 24 24l0 19c0 40.3 16 79 44.5 107.5l21 21C469 191 480 217.4 480 245l0 19c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-19c0-14.9-5.9-29.1-16.4-39.6l-21-21C357.1 146.9 336 96 336 43l0-19c0-13.3 10.7-24 24-24zM552 288c-13.3 0-24-10.7-24-24l0-19c0-40.3-16-79-44.5-107.5l-21-21C443 97 432 70.6 432 43l0-19c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19c0 14.9 5.9 29.1 16.4 39.6l21 21C554.9 141.1 576 192 576 245l0 19c0 13.3-10.7 24-24 24zM292.7 320c5.6 0 10.7 2.9 13.6 7.6L394.6 471c1.3 2.1 0 4.9-2.4 5.2-16.1 2.5-32.4 3.7-48.7 3.7l-38.1 0c-5.6 0-10.7-2.9-13.6-7.6l-79-128.4c-6-9.8 0-22.6 11.5-23.3 6.7-.4 13.4-.6 20.2-.6l48.3 0zM459.3 465.9c-6.4 1-12.7-1.9-16.1-7.4L374.1 346.1c-6.7-10.9 1.5-24.7 14.2-22.9 1.3 .2 2.6 .4 3.8 .6l136.4 21c27.3 4.2 47.4 27.7 47.4 55.3s-20.1 51.1-47.4 55.3l-69.2 10.6zM138.7 336c6.7-1.5 13.6 1.4 17.2 7.2l68.9 112c6.6 10.7-1.2 24.4-13.8 23.1-13-1.4-25.9-3.5-38.6-6.5L31.2 439.2C12.9 435 0 418.7 0 400s12.9-35 31.2-39.2L138.7 336z\"]\n  };\n  var faBraille = {\n    prefix: 'fas',\n    iconName: 'braille',\n    icon: [384, 512, [], \"f2a1\", \"M80 144a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0 136c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0 56c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm248-80c0 13.3-10.7 24-24 24s-24-10.7-24-24 10.7-24 24-24 24 10.7 24 24zm56 0c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zM304 232a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 104a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-192a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n  };\n  var faBasketShopping = {\n    prefix: 'fas',\n    iconName: 'basket-shopping',\n    icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M288 0c6.6 0 12.9 2.7 17.4 7.5l144 152 .5 .5 78.1 0c17.7 0 32 14.3 32 32 0 14.5-9.6 26.7-22.8 30.7L491.1 429.9c-6.5 29.3-32.5 50.1-62.5 50.1l-281.3 0c-30 0-56-20.8-62.5-50.1l-46-207.2c-13.2-3.9-22.8-16.2-22.8-30.7 0-17.7 14.3-32 32-32l78.1 0 .5-.5 144-152C275.1 2.7 281.4 0 288 0zm0 58.9L192.2 160 383.8 160 288 58.9zM208 264c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112zm80-24c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm128 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112z\"]\n  };\n  var faShoppingBasket = faBasketShopping;\n  var faBridge = {\n    prefix: 'fas',\n    iconName: 'bridge',\n    icon: [512, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-94c0-38.8 26.4-72.6 64-82l0-112-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64z\"]\n  };\n  var faPlaneArrival = {\n    prefix: 'fas',\n    iconName: 'plane-arrival',\n    icon: [576, 512, [128748], \"f5af\", \"M386.6 193.1L265.9 3.7c-4.8-7.6-12.6-12.8-21.4-14.3l-43.1-7.6c-10.8-1.9-20.2 7.3-18.6 18.1l24 161.6-105-18.5-33.8-61.8C64.5 74.7 58.2 70.2 51.1 69L34 66c-9.8-1.7-18.8 5.9-18.8 15.8l.6 106.3c.2 30.9 22.4 57.3 52.9 62.7l13.5 2.4 0 0 417.6 73.6c30.5 5.4 59.5-15 64.9-45.4s-15-59.5-45.4-64.9L386.6 193.1zM224 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm131.2-15.3a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448z\"]\n  };\n  var faCashRegister = {\n    prefix: 'fas',\n    iconName: 'cash-register',\n    icon: [512, 512, [], \"f788\", \"M96 0C60.7 0 32 28.7 32 64s28.7 64 64 64l48 0 0 32-57 0c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-69.6c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160l-217 0 0-32 48 0c35.3 0 64-28.7 64-64S291.3 0 256 0L96 0zm0 48l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 424c0-13.3 10.7-24 24-24l336 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 448c-13.3 0-24-10.7-24-24zm48-160a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n  };\n  var faRing = {\n    prefix: 'fas',\n    iconName: 'ring',\n    icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3 45.4-24.2 107.7-38.3 174.9-38.3s129.5 14.1 174.9 38.3c12.8-11.6 17.1-22.5 17.1-30.3 0-12.3-10.8-32-47.9-50.6-35.2-17.6-86.1-29.4-144.1-29.4s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7 33.2 12.4 75.7 20.3 122.9 20.3s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208C0 158.4 39.4 122.2 83.3 100.2 129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8l0 96c0 49.6-39.4 85.8-83.3 107.8-45.9 22.9-107 36.2-172.7 36.2S129.1 434.7 83.3 411.8C39.4 389.8 0 353.6 0 304l0-96z\"]\n  };\n  var faShareNodes = {\n    prefix: 'fas',\n    iconName: 'share-nodes',\n    icon: [512, 512, [\"share-alt\"], \"f1e0\", \"M384 192c53 0 96-43 96-96s-43-96-96-96-96 43-96 96c0 5.4 .5 10.8 1.3 16L159.6 184.1c-16.9-15-39.2-24.1-63.6-24.1-53 0-96 43-96 96s43 96 96 96c24.4 0 46.6-9.1 63.6-24.1L289.3 400c-.9 5.2-1.3 10.5-1.3 16 0 53 43 96 96 96s96-43 96-96-43-96-96-96c-24.4 0-46.6 9.1-63.6 24.1L190.7 272c.9-5.2 1.3-10.5 1.3-16s-.5-10.8-1.3-16l129.7-72.1c16.9 15 39.2 24.1 63.6 24.1z\"]\n  };\n  var faShareAlt = faShareNodes;\n  var faPersonCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'person-circle-exclamation',\n    icon: [640, 512, [], \"e53f\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faBinoculars = {\n    prefix: 'fas',\n    iconName: 'binoculars',\n    icon: [512, 512, [], \"f1e5\", \"M128 32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32c0-17.7 14.3-32 32-32zm64 96l0 320c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32l0-59.1c0-34.6 9.4-68.6 27.2-98.3 13.7-22.8 22.5-48.2 25.8-74.6L60.5 156c2-16 15.6-28 31.8-28l99.8 0zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6 17.8 29.7 27.2 63.7 27.2 98.3l0 59.1c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-320 99.8 0zM320 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32zm-32 64l0 160-64 0 0-160 64 0z\"]\n  };\n  var faKipSign = {\n    prefix: 'fas',\n    iconName: 'kip-sign',\n    icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4 128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 168-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 168c0 17.7 14.3 32 32 32s32-14.3 32-32l0-122.4 171.2 146.7c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L173.2 280 352 280c13.3 0 24-10.7 24-24s-10.7-24-24-24L173.2 232 340.8 88.3z\"]\n  };\n  var faHardDrive = {\n    prefix: 'fas',\n    iconName: 'hard-drive',\n    icon: [448, 512, [128436, \"hdd\"], \"f0a0\", \"M64 32C28.7 32 0 60.7 0 96L0 260.1C18.1 247.4 40.2 240 64 240l320 0c23.8 0 45.9 7.4 64 20.1L448 96c0-35.3-28.7-64-64-64L64 32zM448 352c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64zM224 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faHdd = faHardDrive;\n  var faRankingStar = {\n    prefix: 'fas',\n    iconName: 'ranking-star',\n    icon: [576, 512, [], \"e561\", \"M321.8 54.1L298.2 6.3c-3.9-8.3-16.1-8.6-20.4 0l-23.6 47.8-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-26.5 0-48 21.5-48 48l0 160c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0zM48 320c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-64 0zM416 432l0 32c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-64 0c-26.5 0-48 21.5-48 48z\"]\n  };\n  var faUserTie = {\n    prefix: 'fas',\n    iconName: 'user-tie',\n    icon: [448, 512, [], \"f508\", \"M224 248a120 120 0 1 1 0-240 120 120 0 1 1 0 240zm-30.5 56l61 0c9.7 0 17.5 7.8 17.5 17.5 0 4.2-1.5 8.2-4.2 11.4l-27.4 32 31 115.1 .6 0 34.6-138.5c2.2-8.7 11.1-14 19.5-10.8 61.9 23.6 105.9 83.6 105.9 153.8 0 15.1-12.3 27.4-27.4 27.4L43.4 512c-15.1 0-27.4-12.3-27.4-27.4 0-70.2 44-130.2 105.9-153.8 8.4-3.2 17.3 2.1 19.5 10.8l34.6 138.5 .6 0 31-115.1-27.4-32c-2.7-3.2-4.2-7.2-4.2-11.4 0-9.7 7.8-17.5 17.5-17.5z\"]\n  };\n  var faEllipsis = {\n    prefix: 'fas',\n    iconName: 'ellipsis',\n    icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M0 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm168 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm224-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n  };\n  var faEllipsisH = faEllipsis;\n  var faStoreSlash = {\n    prefix: 'fas',\n    iconName: 'store-slash',\n    icon: [576, 512, [], \"e071\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-58.6-58.6c1.1-4 1.6-8.2 1.6-12.5l0-151.2c-12.5 4.6-26.1 7.2-40.5 7.2-8.1 0-15.9-.8-23.5-2.4l0 66.4-30.2 0-137.5-137.5c2.9-3.6 5.5-7.4 7.6-11.5 11.6 22 34.7 37 61.3 37 26.8 0 49.8-15.1 61.4-37.1 11.4 22.1 34.5 37.1 60.8 37.1 45.6 0 78.4-43.7 65.6-87.5L513.8 72.3C506.8 48.4 484.9 32 460 32L116 32c-5.5 0-10.8 .8-15.9 2.3L41-24.9zM151.5 221.3L48.7 118.6 38.9 152.5c-12.8 43.7 20 87.5 65.6 87.5 18.1 0 34.7-7.1 47-18.7zM410.2 480l-128-128-154.2 0 0-66.4c-7.6 1.6-15.5 2.4-23.5 2.4-14.4 0-28-2.6-40.5-7.2L64 432c0 26.5 21.5 48 48 48l298.2 0z\"]\n  };\n  var faPercent = {\n    prefix: 'fas',\n    iconName: 'percent',\n    icon: [448, 512, [62101, 62785, \"percentage\"], \"25\", \"M192 128a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM448 384a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM438.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-384 384c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l384-384z\"]\n  };\n  var faPercentage = faPercent;\n  var faFileZipper = {\n    prefix: 'fas',\n    iconName: 'file-zipper',\n    icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM64 72c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 48C74.7 48 64 58.7 64 72zm0 96c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm64 72l-32 0c-17.7 0-32 14.3-32 32l0 48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-48c0-17.7-14.3-32-32-32zm-16 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n  };\n  var faFileArchive = faFileZipper;\n  var faDisplay = {\n    prefix: 'fas',\n    iconName: 'display',\n    icon: [512, 512, [], \"e163\", \"M448 96l0 256-384 0 0-256 384 0zM64 32C28.7 32 0 60.7 0 96L0 352c0 35.3 28.7 64 64 64l144 0-16 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0-16-48 144 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 32z\"]\n  };\n  var faIcons = {\n    prefix: 'fas',\n    iconName: 'icons',\n    icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M174.9 272c10.7 0 20.7 5.3 26.6 14.2l11.8 17.8 26.7 0c26.5 0 48 21.5 48 48l0 112c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 352c0-26.5 21.5-48 48-48l26.7 0 11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2l61.7 0zm278.6-12c5.6-4.9 13.9-5.3 19.9-.9s8.3 12.4 5.3 19.3L440.3 368 496 368c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.3-12.4-5.3-19.3l38.5-89.7-55.8 0c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112zM144 360a48 48 0 1 0 0 96 48 48 0 1 0 0-96zM483.8 .4c6.5-1.1 13.1 .4 18.5 4.4 6.1 4.5 9.7 11.7 9.7 19.2l0 152-.3 4.9c-3.3 24.2-30.5 43.1-63.7 43.1-35.3 0-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .6 16 1.6l0-49.3-112 33.6 0 110.2-.3 4.9c-3.3 24.2-30.5 43.1-63.7 43.1-35.3 0-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .6 16 1.6L304 72c0-10.6 7-20 17.1-23l160-48 2.7-.6zM188.9 0C226 0 256 30 256 67.1l0 6.1c0 56.1-75.2 112.1-110.3 135.3-10.8 7.1-24.6 7.1-35.4 0-35.1-23.1-110.3-79.2-110.3-135.3l0-6.1C0 30 30 0 67.1 0 88.2 0 108 9.9 120.7 26.8l7.3 9.8 7.3-9.8C148 9.9 167.8 0 188.9 0z\"]\n  };\n  var faHeartMusicCameraBolt = faIcons;\n  var faRulerVertical = {\n    prefix: 'fas',\n    iconName: 'ruler-vertical',\n    icon: [256, 512, [], \"f548\", \"M0 16C0-10.5 21.5-32 48-32l160 0c26.5 0 48 21.5 48 48l0 24-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 48-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 48-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 24c0 26.5-21.5 48-48 48L48 544c-26.5 0-48-21.5-48-48L0 16z\"]\n  };\n  var faMapLocationDot = {\n    prefix: 'fas',\n    iconName: 'map-location-dot',\n    icon: [640, 512, [\"map-marked-alt\"], \"f5a0\", \"M576 48c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4L413.5 77.5 234.1 17.6c-8.1-2.7-16.8-2.1-24.4 1.7l-128 64C70.8 88.8 64 99.9 64 112l0 352c0 11.1 5.7 21.4 15.2 27.2s21.2 6.4 31.1 1.4l116.1-58.1 173.3 57.8c-4.3-6.4-8.5-13.1-12.6-19.9-11-18.3-21.9-39.3-30-61.8l-101.2-33.7 0-284.5 128 42.7 0 99.3c31-35.8 77-58.4 128-58.4 22.6 0 44.2 4.4 64 12.5L576 48zM512 224c-66.3 0-120 52.8-120 117.9 0 68.9 64.1 150.4 98.6 189.3 11.6 13 31.3 13 42.9 0 34.5-38.9 98.6-120.4 98.6-189.3 0-65.1-53.7-117.9-120-117.9zM472 344a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n  };\n  var faMapMarkedAlt = faMapLocationDot;\n  var faHeartCrack = {\n    prefix: 'fas',\n    iconName: 'heart-crack',\n    icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M133.1 32c17.3 0 34.2 3.4 49.9 9.7l54.8 85.2-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.4 60.6C319.6 42.3 348.6 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 112.2-139.9 242.5-212.9 298.2-12.4 9.4-27.6 14.1-43.1 14.1s-30.8-4.6-43.1-14.1C139.9 410.2 0 279.9 0 167.7l0-2.6C0 91.6 59.6 32 133.1 32z\"]\n  };\n  var faHeartBroken = faHeartCrack;\n  var faCow = {\n    prefix: 'fas',\n    iconName: 'cow',\n    icon: [640, 512, [128004], \"f6c8\", \"M96 224l0 192c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-88.2c9.9 6.6 20.6 12 32 16.1l0 24.2c0 8.8 7.2 16 16 16s16-7.2 16-16l0-16.9c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9l0 16.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-24.2c11.4-4 22.1-9.4 32-16.1l0 88.2c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-160 32 32 0 49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21 22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5 0-81.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 14.4-52.9-74.1C496 86.5 452.4 64 405.9 64L144 64C77.7 64 24 117.7 24 184l0 54C9.4 249.8 0 267.8 0 288l0 17.6c0 8 6.4 14.4 14.4 14.4 31.8 0 57.6-25.8 57.6-57.6L72 184c0-24.3 12.1-45.8 30.5-58.9-4.2 10.8-6.5 22.6-6.5 34.9l0 64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16 0-12.5 10.1-22.6 22.6-22.6l178.7 0c12.5 0 22.6 10.1 22.6 22.6 0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n  };\n  var faRss = {\n    prefix: 'fas',\n    iconName: 'rss',\n    icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 160c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faFeed = faRss;\n  var faMagnifyingGlass = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass',\n    icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n  };\n  var faSearch = faMagnifyingGlass;\n  var faCloudMoon = {\n    prefix: 'fas',\n    iconName: 'cloud-moon',\n    icon: [640, 512, [], \"f6c3\", \"M480 0c14.6 0 28.8 1.6 42.5 4.7 7.4 1.7 13 7.8 13.9 15.4s-3 14.9-9.8 18.3c-45.4 22.6-76.6 69.5-76.6 123.6 0 76.2 61.8 138 138 138 3.7 0 7.4-.1 11.1-.4 7.6-.6 14.7 3.6 17.8 10.6s1.5 15.1-3.9 20.4c-26 25-59.1 42.7-95.9 49.9-11.1-25.3-30.2-46.3-54.1-59.8-7.6-63.4-61.6-112.6-127.1-112.6-11.2 0-22.1 1.5-32.5 4.2-4.8-4.2-9.9-8.2-15.2-11.8-.1-2.8-.2-5.6-.2-8.4 0-106 86-192 192-192zm-.1 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96 0-47.6 34.6-87 80-94.6-.4-52.8 42.9-97.3 96-97.3 34.9 0 65.4 18.6 82.2 46.4 13-9.1 28.8-14.4 45.8-14.4 44.2 0 80 35.8 80 80 0 5.9-.6 11.7-1.9 17.2 37.4 6.7 65.8 39.4 65.8 78.7z\"]\n  };\n  var faBoxesStacked = {\n    prefix: 'fas',\n    iconName: 'boxes-stacked',\n    icon: [512, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M224 0l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64 32 0c35.3 0 64 28.7 64 64l0 128c0 5.5-.7 10.9-2 16l-252 0c-1.3-5.1-2-10.5-2-16l0-128c0-35.3 28.7-64 64-64l32 0zm96 512c-11.2 0-21.8-2.9-31-8 9.5-16.5 15-35.6 15-56l0-128c0-20.4-5.5-39.5-15-56 9.2-5.1 19.7-8 31-8l32 0 0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64 32 0c35.3 0 64 28.7 64 64l0 128c0 35.3-28.7 64-64 64l-128 0zM0 320c0-35.3 28.7-64 64-64l32 0 0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64 32 0c35.3 0 64 28.7 64 64l0 128c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 320z\"]\n  };\n  var faBoxes = faBoxesStacked;\n  var faBoxesAlt = faBoxesStacked;\n  var faCodeBranch = {\n    prefix: 'fas',\n    iconName: 'code-branch',\n    icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 70.7 176 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-176 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80S0 476.2 0 432c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faBan = {\n    prefix: 'fas',\n    iconName: 'ban',\n    icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8c-22.4 31.4-35.5 69.8-35.5 111.2 0 106 86 192 192 192 41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3c22.4-31.4 35.5-69.8 35.5-111.2 0-106-86-192-192-192-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n  };\n  var faCancel = faBan;\n  var faJugDetergent = {\n    prefix: 'fas',\n    iconName: 'jug-detergent',\n    icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24l0 24 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 96C74.7 96 64 85.3 64 72S74.7 48 88 48l8 0 0-24zM0 256c0-70.7 57.3-128 128-128l128 0c70.7 0 128 57.3 128 128l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256zm256 0l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n  };\n  var faReply = {\n    prefix: 'fas',\n    iconName: 'reply',\n    icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M204.2 18.4c12 5 19.8 16.6 19.8 29.6l0 80 112 0c97.2 0 176 78.8 176 176 0 113.3-81.5 163.9-100.2 174.1-2.5 1.4-5.3 1.9-8.1 1.9-10.9 0-19.7-8.9-19.7-19.7 0-7.5 4.3-14.4 9.8-19.5 9.4-8.8 22.2-26.4 22.2-56.7 0-53-43-96-96-96l-96 0 0 80c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-160-160c-12.5-12.5-12.5-32.8 0-45.3l160-160c9.2-9.2 22.9-11.9 34.9-6.9z\"]\n  };\n  var faMailReply = faReply;\n  var faSunPlantWilt = {\n    prefix: 'fas',\n    iconName: 'sun-plant-wilt',\n    icon: [640, 512, [], \"e57a\", \"M160 0c-5.5 0-10.6 2.8-13.5 7.4l-1.1 2.1-24.8 55.4-56.7-21.7c-5.9-2.2-12.5-.8-17 3.7S41 58 43.2 63.9l21.7 56.7-55.4 24.8C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8-21.7 56.7c-2.2 5.9-.8 12.5 3.7 17s11.1 5.9 17 3.7l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.8 21.7c5.9 2.2 12.5 .8 17-3.7s5.9-11.1 3.7-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7 .7-2.2c1.2-5.3-.4-10.9-4.3-14.8s-9.5-5.5-14.8-4.3l-2.2 .7-56.8 21.7-24.8-55.4C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm376 16l0 53.4c-14.8 7.7-24 23.1-24 44.6 0 16.8 16 44 37.4 67.2 5.8 6.2 15.5 6.2 21.2 0 21.4-23.3 37.4-50.6 37.4-67.2 0-21.5-9.2-37-24-44.6l0-53.4c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 22.7c-9.8-4.3-20.6-6.7-32-6.7-44.2 0-80 35.8-80 80l0 21.4c-14.8 7.6-24 23.1-24 44.6 0 16.8 16 44 37.4 67.2 5.8 6.2 15.5 6.2 21.2 0 21.4-23.3 37.4-50.6 37.4-67.2 0-21.5-9.2-37-24-44.6l0-21.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176-424 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-104 0 0-272c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n  };\n  var faBacterium = {\n    prefix: 'fas',\n    iconName: 'bacterium',\n    icon: [576, 512, [], \"e05a\", \"M408 16c0-13.3-10.7-24-24-24S360 2.7 360 16l0 23.4c-13.9 5.3-26.9 13.5-38.2 24.5L305 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8-30.1 30.1-16.8-16.8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8c-10 10-20 20-30.1 30.1L177 175c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8-30.1 30.1-16.8-16.8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8c-11 11.3-19.2 24.3-24.5 38.2L48 328c-13.3 0-24 10.7-24 24s10.7 24 24 24l16.3 0c1.3 18.3 7.1 36.4 17.4 52.4L71 439c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l10.6-10.6c16 10.3 34.1 16.1 52.4 17.4l0 16.3c0 13.3 10.7 24 24 24s24-10.7 24-24l0-23.4c13.9-5.3 26.9-13.5 38.2-24.5L271 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8 30.1-30.1 16.8 16.8c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8c10-10 20-20 30.1-30.1L399 337c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8 30.1-30.1 16.8 16.8c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8c11-11.3 19.2-24.3 24.5-38.2l23.4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16.3 0c-1.3-18.3-7.1-36.4-17.4-52.4L505 73c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L460.4 49.7c-16-10.3-34.1-16.1-52.4-17.4L408 16zM160 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM272 240a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faRecordVinyl = {\n    prefix: 'fas',\n    iconName: 'record-vinyl',\n    icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 240a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-112a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faFloppyDisk = {\n    prefix: 'fas',\n    iconName: 'floppy-disk',\n    icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm32 96c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n  };\n  var faSave = faFloppyDisk;\n  var faToiletsPortable = {\n    prefix: 'fas',\n    iconName: 'toilets-portable',\n    icon: [512, 512, [], \"e584\", \"M64 0l96 0c35.3 0 64 28.7 64 64l0 16-224 0 0-16C0 28.7 28.7 0 64 0zM0 128l224 0 0 360c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-128 0 0 8c0 13.3-10.7 24-24 24S0 501.3 0 488L0 128zM128 248l0 48c0 13.3 10.7 24 24 24l24 0 0-96-24 0c-13.3 0-24 10.7-24 24zM352 0l96 0c35.3 0 64 28.7 64 64l0 16-224 0 0-16c0-35.3 28.7-64 64-64zM288 128l224 0 0 360c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-128 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-360zM416 248l0 48c0 13.3 10.7 24 24 24l24 0 0-96-24 0c-13.3 0-24 10.7-24 24z\"]\n  };\n  var faO = {\n    prefix: 'fas',\n    iconName: 'o',\n    icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256a224 224 0 1 1 -448 0 224 224 0 1 1 448 0z\"]\n  };\n  var faPalette = {\n    prefix: 'fas',\n    iconName: 'palette',\n    icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7-.4 36.5-33.6 61.3-70.1 61.3L344 320c-26.5 0-48 21.5-48 48 0 3.4 .4 6.7 1 9.9 2.1 10.2 6.5 20 10.8 29.9 6.1 13.8 12.1 27.5 12.1 42 0 31.8-21.6 60.7-53.4 62-3.5 .1-7 .2-10.6 .2-141.4 0-256-114.6-256-256S114.6 0 256 0 512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faUnlock = {\n    prefix: 'fas',\n    iconName: 'unlock',\n    icon: [384, 512, [128275], \"f09c\", \"M128 96c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96l0 64c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64l-192 0 0-64z\"]\n  };\n  var faEarListen = {\n    prefix: 'fas',\n    iconName: 'ear-listen',\n    icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M379.6 .3c-8.9 1.2-17.2 6.2-22.4 14.1-6.8 10.4-7 24.1-.4 34.6 5.6 8.9 15.5 12.7 23.8 18.5 7.5 5.2 17.6 13.2 27.7 24.2 20 21.7 39.5 54.3 39.5 100.3 0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7-13.9-15.1-27.8-26.1-38.3-33.3-11-7.6-23.5-16.6-37.6-14.7zM240 128c-57.6 0-105.1 43.6-111.3 99.5-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3c9.7-88 84.3-156.5 174.9-156.5 97.2 0 176 78.8 176 176 0 46-17.7 87.9-46.6 119.3-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78 18.4-20 29.6-46.6 29.6-75.9 0-61.9-50.1-112-112-112zM0 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64zM240 208c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n  };\n  var faAssistiveListeningSystems = faEarListen;\n  var faCodePullRequest = {\n    prefix: 'fas',\n    iconName: 'code-pull-request',\n    icon: [512, 512, [], \"e13c\", \"M328 24c0-9.7-5.8-18.5-14.8-22.2S293.9 .2 287 7L231 63c-9.4 9.4-9.4 24.6 0 33.9l56 56c6.9 6.9 17.2 8.9 26.2 5.2S328 145.7 328 136l0-24 24 0c17.7 0 32 14.3 32 32l0 214.7c-28.3 12.3-48 40.5-48 73.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3L448 144c0-53-43-96-96-96l-24 0 0-24zM72 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm56 73.3c28.3-12.3 48-40.5 48-73.3 0-44.2-35.8-80-80-80S16 35.8 16 80c0 32.8 19.7 61 48 73.3l0 205.3c-28.3 12.3-48 40.5-48 73.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-205.3zM72 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm344-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faKey = {\n    prefix: 'fas',\n    iconName: 'key',\n    icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0 160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n  };\n  var faSkull = {\n    prefix: 'fas',\n    iconName: 'skull',\n    icon: [512, 512, [128128], \"f54c\", \"M416 427.4c58.5-44 96-111.6 96-187.4 0-132.5-114.6-240-256-240S0 107.5 0 240c0 75.8 37.5 143.4 96 187.4L96 464c0 26.5 21.5 48 48 48l32 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 64 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 32 0c26.5 0 48-21.5 48-48l0-36.6zM96 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n  };\n  var faMarsStrokeUp = {\n    prefix: 'fas',\n    iconName: 'mars-stroke-up',\n    icon: [384, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M192 256a112 112 0 1 0 0 224 112 112 0 1 0 0-224zM16 368c0-86.3 62.1-158.1 144.1-173.1-.1-.9-.1-1.9-.1-2.9l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-61.4-28 22.4c-13.8 11-33.9 8.8-45-5s-8.8-33.9 5-45l80-64c11.7-9.3 28.3-9.3 40 0l80 64c13.8 11 16 31.2 5 45s-31.2 16-45 5l-28-22.4 0 61.4 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 16c0 1 0 1.9-.1 2.9 82 15 144.1 86.8 144.1 173.1 0 97.2-78.8 176-176 176S16 465.2 16 368z\"]\n  };\n  var faMarsStrokeV = faMarsStrokeUp;\n  var faFireFlameSimple = {\n    prefix: 'fas',\n    iconName: 'fire-flame-simple',\n    icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6 0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5 0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n  };\n  var faBurn = faFireFlameSimple;\n  var faTree = {\n    prefix: 'fas',\n    iconName: 'tree',\n    icon: [448, 512, [127794], \"f1bb\", \"M224-32c7 0 13.7 3.1 18.3 8.5l136 160c6.1 7.1 7.4 17.1 3.5 25.6S369.4 176 360 176l-24.9 0 75.2 88.5c6.1 7.1 7.4 17.1 3.5 25.6S401.4 304 392 304l-38.5 0 88.8 104.5c6.1 7.1 7.4 17.1 3.5 25.6S433.4 448 424 448l-168 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64-168 0c-9.4 0-17.9-5.4-21.8-13.9s-2.6-18.5 3.5-25.6L94.5 304 56 304c-9.4 0-17.9-5.4-21.8-13.9s-2.6-18.5 3.5-25.6L112.9 176 88 176c-9.4 0-17.9-5.4-21.8-13.9s-2.6-18.5 3.5-25.6l136-160C210.3-28.9 217-32 224-32z\"]\n  };\n  var faSmog = {\n    prefix: 'fas',\n    iconName: 'smog',\n    icon: [576, 512, [], \"f75f\", \"M176 288C96.5 288 32 223.5 32 144S96.5 0 176 0c27.2 0 52.6 7.5 74.3 20.6 20.1-13 44-20.6 69.7-20.6 47.4 0 88.7 25.7 110.9 64l1.1 0c61.9 0 112 50.1 112 112 0 60.3-47.6 109.4-107.2 111.9-22.6 20-52.3 32.1-84.8 32.1-32.5 0-62.1-12.1-84.7-32L176 288zM512 392c0 13.3-10.7 24-24 24L24 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l464 0c13.3 0 24 10.7 24 24zM88 464l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm176 0l288 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faS = {\n    prefix: 'fas',\n    iconName: 's',\n    icon: [320, 512, [115], \"53\", \"M0 157.5C0 88.2 56.2 32 125.5 32L272 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L125.5 96c-34 0-61.5 27.5-61.5 61.5 0 31 23.1 57.2 53.9 61L210.1 230C272.9 237.9 320 291.2 320 354.5 320 423.8 263.8 480 194.5 480L48 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l146.5 0c34 0 61.5-27.5 61.5-61.5 0-31-23.1-57.2-53.9-61L109.9 282C47.1 274.1 0 220.8 0 157.5z\"]\n  };\n  var faJedi = {\n    prefix: 'fas',\n    iconName: 'jedi',\n    icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9-.1 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5c59.8-10.8 105.1-63.1 105.1-126 0-37-15.7-70.4-40.8-93.7-7-6.5-6.5-18.6 1-24.4 34-26.3 55.8-67.5 55.8-113.9 0-16.8-2.9-33-8.2-48-4.6-13 10.2-30 21.4-22 53.5 38 92.7 94.8 107.8 160.7 .5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9l26 0c3.4 0 6.2 2.6 6.3 6 .1 3.3 .2 6.6 .2 10 0 17.5-1.7 34.7-4.8 51.3-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9l14.6 0c4.6 0 7.7 4.8 5.7 9-44.5 89.5-136.9 151-243.7 151S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9l14.6 0c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3-3.2-16.6-4.8-33.8-4.8-51.3 0-3.3 .1-6.7 .2-10 .1-3.4 2.9-6 6.3-6l26 0c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9 15.2-66 54.3-122.8 107.8-160.7 11.3-8 26 8.9 21.4 22-5.3 15-8.2 31.2-8.2 48 0 46.3 21.9 87.5 55.8 113.9 7.5 5.8 8 17.9 1 24.4-25.1 23.4-40.8 56.7-40.8 93.7 0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n  };\n  var faPersonHiking = {\n    prefix: 'fas',\n    iconName: 'person-hiking',\n    icon: [448, 512, [\"hiking\"], \"f6ec\", \"M192-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM128 173.6c0-34 27.6-61.6 61.6-61.6 20.3 0 39.7 8.1 54 22.4l48.2 48.2c6 6 14.1 9.4 22.6 9.4l37.5 0c5.8 0 11.3 1.6 16 4.3l0-76.3c0-13.3 10.7-24 24-24s24 10.7 24 24l0 400c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-268.3c-4.7 2.7-10.2 4.3-16 4.3l-37.5 0c-25.5 0-49.9-10.1-67.9-28.1l-6.6-6.6 0 109.2 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3l12.6 88.1c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2l-12.6-88.1c-1.1-7.7-5-14.7-10.9-19.8l-71.4-61.2c-21.3-18.2-33.5-44.9-33.5-72.9l0-101zm-4.8 203.7c2.3 2.3 4.7 4.4 7.1 6.5l44.9 38.5c-3.6 8.4-8.5 16.3-14.4 23.4L88.6 532.5c-11.3 13.6-31.5 15.4-45.1 4.1s-15.4-31.5-4.1-45.1l72.3-86.7c2.6-3.1 4.5-6.6 5.8-10.4l5.7-17.1zM0 160c0-35.3 28.7-64 64-64 17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96z\"]\n  };\n  var faHiking = faPersonHiking;\n  var faArrowsUpToLine = {\n    prefix: 'fas',\n    iconName: 'arrows-up-to-line',\n    icon: [448, 512, [], \"e4c2\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l384 0c17.7 0 32-14.3 32-32S433.7 0 416 0L32 0zm86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L64 237.3 64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64zm256 0c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4 0 242.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n  };\n  var faMarsDouble = {\n    prefix: 'fas',\n    iconName: 'mars-double',\n    icon: [640, 512, [9891], \"f227\", \"M288 32c0-17.7 14.3-32 32-32L448 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-95 95c19.5 28.4 31 62.7 31 99.8 0 97.2-78.8 176-176 176S0 401.2 0 304 78.8 128 176 128c37 0 71.4 11.4 99.8 31l95-95-50.7 0c-17.7 0-32-14.3-32-32zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm160 64c-6.8 0-13.4-.4-20-1.1 23.6-18.9 43.3-42.5 57.6-69.4 43.3-15.5 74.4-56.9 74.4-105.5 0-25.2-8.3-48.5-22.4-67.2 7.1 2.1 14.6 3.2 22.4 3.2 17 0 32.7-5.3 45.7-14.3 11.7 23.6 18.3 50.2 18.3 78.3 0 97.2-78.8 176-176 176zM528 157.3L528 32c0-11.4-2.4-22.2-6.7-32L608 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-48 48z\"]\n  };\n  var faThermometer = {\n    prefix: 'fas',\n    iconName: 'thermometer',\n    icon: [512, 512, [], \"f491\", \"M96 382.1l0-88.8c0-14.9 5.9-29.1 16.4-39.6l21.7-21.7 41 41c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41 46.1-46.1 41 41c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41 46.1-46.1 41 41c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41 7.8-7.8c19.4-19.4 45.6-30.2 73-30.2 57 0 103.2 46.2 103.2 103.2 0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0-89 89c-9.4 9.4-24.6 9.4-33.9 0S-2.3 480.4 7 471l89-89z\"]\n  };\n  var faPaintbrush = {\n    prefix: 'fas',\n    iconName: 'paintbrush',\n    icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M480.5 10.3L259.1 158c-29.1 19.4-47.6 50.9-50.6 85.3 62.3 12.8 111.4 61.9 124.3 124.3 34.5-3 65.9-21.5 85.3-50.6L565.7 95.5c6.7-10.1 10.3-21.9 10.3-34.1 0-33.9-27.5-61.4-61.4-61.4-12.1 0-24 3.6-34.1 10.3zM288 400c0-61.9-50.1-112-112-112S64 338.1 64 400c0 3.9 .2 7.8 .6 11.6 1.8 17.5-10.2 36.4-27.8 36.4L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112z\"]\n  };\n  var faPaintBrush = faPaintbrush;\n  var faNeuter = {\n    prefix: 'fas',\n    iconName: 'neuter',\n    icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zM223.9 349.1C305.9 334.1 368 262.3 368 176 368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144.1 173.1-.1 1-.1 1.9-.1 2.9l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-1 0-1.9-.1-2.9z\"]\n  };\n  var faSquarePhoneFlip = {\n    prefix: 'fas',\n    iconName: 'square-phone-flip',\n    icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm232 96.7l2.8 .8c32.3 8.8 59.9 40.1 51.8 78.2-18.5 87.5-87.4 156.3-174.9 174.9-38.1 8.1-69.4-19.5-78.2-51.8l-.8-2.8c-2.7-9.8 2.4-20.1 11.8-24l48.7-20.3c8.3-3.4 17.8-1.1 23.5 5.9l19.3 23.6c35.1-17.4 63.4-46.6 79.6-82.4l-22.1-18c-6.9-5.7-9.3-15.2-5.9-23.5l20.3-48.7c3.9-9.4 14.2-14.4 24-11.8z\"]\n  };\n  var faPhoneSquareAlt = faSquarePhoneFlip;\n  var faFaceGrinTongueSquint = {\n    prefix: 'fas',\n    iconName: 'face-grin-tongue-squint',\n    icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256c0 104.4 62.5 194.2 152.2 234.1-5.3-13-8.2-27.2-8.2-42.1l0-61.7c-16.9-16.5-30.1-36.7-38.3-59.3-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1c11.9-3.7 23.9 6.3 19.6 18.1-8.3 22.6-21.5 42.8-38.3 59.3l0 61.7c0 14.9-2.9 29.1-8.2 42.1 89.7-39.8 152.2-129.6 152.2-234.1 0-141.4-114.6-256-256-256S0 114.6 0 256zm125.8-91.7c-6.2-5.2-7.6-14.3-3.1-21.1s13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 192 125.8 164.3zm263.6-21.1c4.5 6.8 3.1 15.9-3.1 21.1L353 192 386.2 219.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9-2.8 12.6-20.8 12.6-23.6 0-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n  };\n  var faGrinTongueSquint = faFaceGrinTongueSquint;\n  var faCommentDollar = {\n    prefix: 'fas',\n    iconName: 'comment-dollar',\n    icon: [512, 512, [], \"f651\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zm4-352c11 0 20 9 20 20l0 4 8 0c11 0 20 9 20 20s-9 20-20 20l-47.5 0c-6.9 0-12.5 5.6-12.5 12.5 0 6.1 4.4 11.3 10.4 12.3l41.7 7c25.3 4.2 43.9 26.1 43.9 51.8 0 26.1-19 47.7-44 51.8l0 4.7c0 11-9 20-20 20s-20-9-20-20l0-4-24 0c-11 0-20-9-20-20s9-20 20-20l55.5 0c6.9 0 12.5-5.6 12.5-12.5 0-6.1-4.4-11.3-10.4-12.3l-41.7-7c-25.3-4.2-43.9-26.1-43.9-51.8 0-28.8 23.2-52.2 52-52.5l0-4c0-11 9-20 20-20z\"]\n  };\n  var faHippo = {\n    prefix: 'fas',\n    iconName: 'hippo',\n    icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2l32 0c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1 0 10.2 7.4 18.8 16.7 23 27.9 12.5 47.3 40.5 47.3 73 0 26.2-12.6 49.4-32 64l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-16-64 0 0 16c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-17.6c-11.8-2.4-22.7-7.4-32-14.4-1.5-1.1-2.9-2.3-4.3-3.5-17-14.7-27.7-36.4-27.7-60.5 0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2l0 10.8c0 17.7 14.3 32 32 32l32 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-76c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12l0 76c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-118.9-18.1 40.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7 0-107.5 85.2-195.2 191.8-199.1l.2-.1 64 0c41.7 0 83.4 12.1 117.2 25.7 1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n  };\n  var faBowlFood = {\n    prefix: 'fas',\n    iconName: 'bowl-food',\n    icon: [512, 512, [], \"e4c6\", \"M0 176c0-35.3 28.7-64 64-64 .5 0 1.1 0 1.6 0 7.4-36.5 39.7-64 78.4-64 15 0 29 4.1 40.9 11.2 13.3-25.7 40.1-43.2 71.1-43.2s57.8 17.6 71.1 43.2c12-7.1 26-11.2 40.9-11.2 38.7 0 71 27.5 78.4 64 .5 0 1.1 0 1.6 0 35.3 0 64 28.7 64 64 0 11.7-3.1 22.6-8.6 32L8.6 208C3.1 198.6 0 187.7 0 176zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4 0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n  };\n  var faSquareVirus = {\n    prefix: 'fas',\n    iconName: 'square-virus',\n    icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm160 80c13.3 0 24 10.7 24 24 0 22.9 27.7 34.4 43.9 18.2 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-16.2 16.2-4.7 43.9 18.2 43.9 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.9 0-34.4 27.7-18.2 43.9 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-16.2-16.2-43.9-4.7-43.9 18.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-22.9-27.7-34.4-43.9-18.2-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c16.2-16.2 4.7-43.9-18.2-43.9-13.3 0-24-10.7-24-24s10.7-24 24-24c22.9 0 34.4-27.7 18.2-43.9-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16.2 16.2 43.9 4.7 43.9-18.2 0-13.3 10.7-24 24-24zM192 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faCloudSunRain = {\n    prefix: 'fas',\n    iconName: 'cloud-sun-rain',\n    icon: [576, 512, [127782], \"f743\", \"M303.2-3.2c-1.1-5.2-4.6-9.5-9.5-11.6s-10.5-1.5-14.9 1.4L208 33.6 137.3-13.3c-4.4-2.9-10-3.5-14.9-1.4s-8.5 6.4-9.5 11.6L96 80 12.8 96.8c-5.2 1.1-9.5 4.6-11.6 9.5s-1.5 10.5 1.4 14.9L49.6 192 2.7 262.7c-2.9 4.4-3.5 10-1.4 14.9s6.4 8.5 11.6 9.5L96 304 112.8 387.2c1.1 5.2 4.6 9.5 9.5 11.6s10.5 1.5 14.9-1.4l67.3-44.6c-15.8-19.4-26-43.5-28.2-69.9-37.5-13.1-64.4-48.7-64.4-90.7 0-53 43-96 96-96 21.7 0 41.8 7.2 57.8 19.4 15.5-17.6 36.9-30 61.1-34L320 80 303.2-3.2zM243 159.1c-8.8-9.3-21.2-15.1-35-15.1-26.5 0-48 21.5-48 48 0 17 8.9 32 22.2 40.5 10.2-31.4 32.1-57.4 60.7-73l.1-.4zM304 352l192 0c44.2 0 80-35.8 80-80 0-33.9-21.1-62.9-50.9-74.5 1.9-6.8 2.9-14 2.9-21.5 0-44.2-35.8-80-80-80-30.8 0-57.5 17.4-70.9 42.8-9.3-6.8-20.7-10.8-33.1-10.8-30.9 0-56 25.1-56 56 0 3.2 .3 6.4 .8 9.4-36.9 7.1-64.8 39.6-64.8 78.6 0 44.2 35.8 80 80 80zm-19 49.1c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4zm120 0c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4zm120 0c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4z\"]\n  };\n  var faArrowRightLong = {\n    prefix: 'fas',\n    iconName: 'arrow-right-long',\n    icon: [576, 512, [\"long-arrow-right\"], \"f178\", \"M566.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L466.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l434.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n  };\n  var faLongArrowRight = faArrowRightLong;\n  var faBuildingUn = {\n    prefix: 'fas',\n    iconName: 'building-un',\n    icon: [512, 512, [], \"e4d9\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 272-112 0c-20.9 0-39.5 10.1-51.2 25.6-8-6-18-9.6-28.8-9.6-26.5 0-48 21.5-48 48l0 64 64 0 0 48-144 0c-35.3 0-64-28.7-64-64L32 64zM144 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM144 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM427.4 380.5c9-2.1 18.3 2.2 22.5 10.5l26.1 52.2 0-43.3c0-11 9-20 20-20s20 9 20 20l0 128c0 9.3-6.4 17.3-15.4 19.5s-18.3-2.2-22.5-10.5L452 484.7 452 528c0 11-9 20-20 20s-20-9-20-20l0-128c0-9.3 6.4-17.3 15.4-19.5zM324 400l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-11 9-20 20-20s20 9 20 20l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-11 9-20 20-20s20 9 20 20z\"]\n  };\n  var faTemperatureLow = {\n    prefix: 'fas',\n    iconName: 'temperature-low',\n    icon: [512, 512, [], \"f76b\", \"M96 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144S48 447.5 48 368c0-42.6 18.5-81 48-107.3L96 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3l0-28.7c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 28.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM464 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM352 80a80 80 0 1 1 160 0 80 80 0 1 1 -160 0z\"]\n  };\n  var faDoorOpen = {\n    prefix: 'fas',\n    iconName: 'door-open',\n    icon: [448, 512, [], \"f52b\", \"M288 64l64 0 0 416c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-384c0-35.3-28.7-64-64-64l-96 0 0 0-160 0C60.7 0 32 28.7 32 64l0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-416zM160 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faAlignLeft = {\n    prefix: 'fas',\n    iconName: 'align-left',\n    icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n  };\n  var faCamera = {\n    prefix: 'fas',\n    iconName: 'camera',\n    icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0-10.4-31.2C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n  };\n  var faCameraAlt = faCamera;\n  var faUsersRays = {\n    prefix: 'fas',\n    iconName: 'users-rays',\n    icon: [640, 512, [], \"e593\", \"M31-33C21.7-23.6 21.7-8.4 31 1L87 57c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L65-33c-9.4-9.4-24.6-9.4-33.9 0zM609-33c-9.4-9.4-24.6-9.4-33.9 0L519 23c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L609 1c9.4-9.4 9.4-24.6 0-33.9zM65 545l56-56c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L31 511c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zm544 0c9.4-9.4 9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56 56c9.4 9.4 24.6 9.4 33.9 0zM320 208a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm0 32c-61.9 0-112 50.1-112 112l0 8c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24l0-8c0-61.9-50.1-112-112-112zm216-80a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM451.2 260.4C469.4 286.3 480 317.9 480 352l0 8c0 8.4-1.4 16.5-4.1 24l78.8 0c11.8 0 21.3-9.6 21.3-21.3l0-10.7c0-53-43-96-96-96-10 0-19.7 1.5-28.8 4.4zm-262.4 0c-9.1-2.9-18.8-4.4-28.8-4.4-53 0-96 43-96 96l0 10.7c0 11.8 9.6 21.3 21.3 21.3l78.8 0c-2.7-7.5-4.1-15.6-4.1-24l0-8c0-34.1 10.6-65.7 28.8-91.6zM216 160a56 56 0 1 0 -112 0 56 56 0 1 0 112 0z\"]\n  };\n  var faRainbow = {\n    prefix: 'fas',\n    iconName: 'rainbow',\n    icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352l0 64c0 17.7-14.3 32-32 32S0 433.7 0 416l0-64C0 175.3 143.3 32 320 32S640 175.3 640 352l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64C576 210.6 461.4 96 320 96zm0 112c-79.5 0-144 64.5-144 144l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-114.9 93.1-208 208-208s208 93.1 208 208l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-79.5-64.5-144-144-144zM288 352l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n  };\n  var faSitemap = {\n    prefix: 'fas',\n    iconName: 'sitemap',\n    icon: [512, 512, [], \"f0e8\", \"M192 64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-8 0 0 64 120 0c39.8 0 72 32.2 72 72l0 56 8 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l8 0 0-56c0-13.3-10.7-24-24-24l-120 0 0 80 8 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l8 0 0-80-120 0c-13.3 0-24 10.7-24 24l0 56 8 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l8 0 0-56c0-39.8 32.2-72 72-72l120 0 0-64-8 0c-17.7 0-32-14.3-32-32l0-64z\"]\n  };\n  var faFaceGrinStars = {\n    prefix: 'fas',\n    iconName: 'face-grin-stars',\n    icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M256 512c141.4 0 256-114.6 256-256 0-24.4-3.4-48.1-9.8-70.5 18.6-36.1-2.7-83.6-46.7-90-46.9-58.3-118.9-95.5-199.5-95.5S103.4 37.3 56.5 95.5c-44 6.4-65.3 53.9-46.7 90-6.4 22.4-9.8 46-9.8 70.5 0 141.4 114.6 256 256 256zM386.7 324.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 404.2 105.7 342.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zm-31.6-231c5.3-10.7 20.5-10.7 25.8 0l20.9 42.4 46.7 6.8c11.8 1.7 16.5 16.2 8 24.5l-33.8 33 8 46.6c2 11.7-10.3 20.7-20.9 15.2l-41.8-22-41.8 22c-10.5 5.5-22.9-3.4-20.9-15.2l8-46.6-33.8-33c-8.5-8.3-3.8-22.8 8-24.5l46.7-6.8 20.9-42.4zm-198.2 0l20.9 42.4 46.7 6.8c11.8 1.7 16.5 16.2 8 24.5l-33.8 33 8 46.6c2 11.7-10.3 20.7-20.9 15.2l-41.8-22-41.8 22c-10.5 5.5-22.9-3.4-20.9-15.2l8-46.6-33.8-33c-8.5-8.3-3.8-22.8 8-24.5l46.7-6.8 20.9-42.4c5.3-10.7 20.5-10.7 25.8 0z\"]\n  };\n  var faGrinStars = faFaceGrinStars;\n  var faSortUp = {\n    prefix: 'fas',\n    iconName: 'sort-up',\n    icon: [384, 512, [\"sort-asc\"], \"f0de\", \"M32 224c-12.9 0-24.6-7.8-29.6-19.8S.2 178.5 9.4 169.4l160-160c12.5-12.5 32.8-12.5 45.3 0l160 160c9.2 9.2 11.9 22.9 6.9 34.9S364.9 224 352 224L32 224z\"]\n  };\n  var faSortAsc = faSortUp;\n  var faEye = {\n    prefix: 'fas',\n    iconName: 'eye',\n    icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6-46.8 43.5-78.1 95.4-93 131.1-3.3 7.9-3.3 16.7 0 24.6 14.9 35.7 46.2 87.7 93 131.1 47.1 43.7 111.8 80.6 192.6 80.6s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64-11.5 0-22.3-3-31.7-8.4-1 10.9-.1 22.1 2.9 33.2 13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-12.2-45.7-55.5-74.8-101.1-70.8 5.3 9.3 8.4 20.1 8.4 31.7z\"]\n  };\n  var faCaretLeft = {\n    prefix: 'fas',\n    iconName: 'caret-left',\n    icon: [256, 512, [], \"f0d9\", \"M224 96c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c9.2 9.2 22.9 11.9 34.9 6.9S224 428.9 224 416l0-320z\"]\n  };\n  var faAppleWhole = {\n    prefix: 'fas',\n    iconName: 'apple-whole',\n    icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80l16 0c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80l-16 0zM0 288c0-76.3 35.7-160 112-160 27.3 0 59.7 10.3 82.7 19.3 18.8 7.3 39.9 7.3 58.7 0 22.9-8.9 55.4-19.3 82.7-19.3 76.3 0 112 83.7 112 160 0 128-80 224-160 224-16.5 0-38.1-6.6-51.5-11.3-8.1-2.8-16.9-2.8-25 0-13.4 4.7-35 11.3-51.5 11.3-80 0-160-96-160-224z\"]\n  };\n  var faAppleAlt = faAppleWhole;\n  var faScrollTorah = {\n    prefix: 'fas',\n    iconName: 'scroll-torah',\n    icon: [576, 512, [\"torah\"], \"f6a0\", \"M0 48C0 21.5 21.5 0 48 0 68.9 0 86.7 13.4 93.3 32l389.5 0c6.6-18.6 24.4-32 45.3-32 26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48-20.9 0-38.7-13.4-45.3-32L93.3 480c-6.6 18.6-24.4 32-45.3 32-26.5 0-48-21.5-48-48L0 48zM177.9 301c-1.2 2-1.9 4.2-1.9 6.6 0 6.9 5.6 12.5 12.5 12.5l56.9 0 30.5 49.2c2.6 4.2 7.2 6.8 12.2 6.8s9.6-2.6 12.2-6.8l30.5-49.2 56.9 0c6.9 0 12.5-5.6 12.5-12.5 0-2.3-.6-4.6-1.9-6.6l-27.8-45 27.8-45c1.2-2 1.9-4.2 1.9-6.6 0-6.9-5.6-12.5-12.5-12.5l-56.9 0-30.5-49.2c-2.6-4.2-7.2-6.8-12.2-6.8s-9.6 2.6-12.2 6.8l-30.5 49.2-56.9 0c-6.9 0-12.5 5.6-12.5 12.5 0 2.3 .6 4.6 1.9 6.6l27.8 45-27.8 45z\"]\n  };\n  var faTorah = faScrollTorah;\n  var faHouseLock = {\n    prefix: 'fas',\n    iconName: 'house-lock',\n    icon: [640, 512, [], \"e510\", \"M528 224.1c44.2 0 80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l185 171.8C440.2 195 400 244.8 400 304l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM272 320c-26.5 0-48 21.5-48 48l0 96 96 0 0-87.3c0-16.5 7-31.5 18.4-42.1-8.7-9-20.9-14.6-34.4-14.6l-32 0zm256-47.9c-17.7 0-32 14.3-32 32l0 47.9 64 0 0-47.9c0-17.7-14.3-32-32-32z\"]\n  };\n  var faArrowsLeftRightToLine = {\n    prefix: 'fas',\n    iconName: 'arrows-left-right-to-line',\n    icon: [576, 512, [], \"e4ba\", \"M32 96C14.3 96 0 110.3 0 128L0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-17.7-14.3-32-32-32zM390.6 342.6l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4-133.5 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 133.5 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0zM576 128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256z\"]\n  };\n  var faTrash = {\n    prefix: 'fas',\n    iconName: 'trash',\n    icon: [448, 512, [], \"f1f8\", \"M136.7 5.9L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-8.7-26.1C306.9-7.2 294.7-16 280.9-16L167.1-16c-13.8 0-26 8.8-30.4 21.9zM416 144L32 144 53.1 467.1C54.7 492.4 75.7 512 101 512L347 512c25.3 0 46.3-19.6 47.9-44.9L416 144z\"]\n  };\n  var faFaceSadTear = {\n    prefix: 'fas',\n    iconName: 'face-sad-tear',\n    icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm271 98c5.5-1.3 11.1-2 17-2 24.1 0 45.4 11.8 58.5 30 7.7 10.8 22.7 13.2 33.5 5.5s13.2-22.7 5.5-33.5c-21.7-30.2-57.3-50-97.5-50-12.5 0-24.6 1.9-35.9 5.5 9.8 12.7 16.5 27.9 18.9 44.6zM176 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM185.4 292.8c-2.4-2.9-5.7-4.8-9.4-4.8s-7 1.9-9.4 4.8c-6.5 7.8-12.6 16.1-18.3 24.6-9 13.4-20.3 30.2-20.3 47.4 0 28.3 21.5 51.2 48 51.2s48-22.9 48-51.2c0-17.2-11.2-34-20.3-47.4-5.7-8.5-11.9-16.7-18.3-24.6z\"]\n  };\n  var faSadTear = faFaceSadTear;\n  var faFax = {\n    prefix: 'fas',\n    iconName: 'fax',\n    icon: [512, 512, [128224, 128439], \"f1ac\", \"M160 64l0 80 64 0 0-80 146.7 0 45.3 45.3 0 34.7 64 0 0-34.7c0-17-6.7-33.3-18.7-45.3L416 18.7C404 6.7 387.7 0 370.7 0L224 0c-35.3 0-64 28.7-64 64zM32 128c-17.7 0-32 14.3-32 32L0 448c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-288c0-17.7-14.3-32-32-32l-48 0zm448 64l-320 0 0 256c0 17.7 14.3 32 32 32l288 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32zM224 288a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm0 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM336 264a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM312 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM424 264a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM400 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faPersonCirclePlus = {\n    prefix: 'fas',\n    iconName: 'person-circle-plus',\n    icon: [640, 512, [], \"e541\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n  };\n  var faHamsa = {\n    prefix: 'fas',\n    iconName: 'hamsa',\n    icon: [512, 512, [], \"f665\", \"M34.6 288L80 288c8.8 0 16-7.2 16-16L96 72c0-22.1 17.9-40 40-40s40 17.9 40 40l0 132c0 11 9 20 20 20s20-9 20-20l0-164c0-22.1 17.9-40 40-40s40 17.9 40 40l0 164c0 11 9 20 20 20s20-9 20-20l0-132c0-22.1 17.9-40 40-40s40 17.9 40 40l0 200c0 8.8 7.2 16 16 16l45.4 0c19.1 0 34.6 15.5 34.6 34.6 0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71S136.6 486.2 95.4 441L9 345.9c-5.8-6.4-9-14.7-9-23.3 0-19.1 15.5-34.6 34.6-34.6zM256 288c-38.4 0-76.8 35.8-90.6 50.2-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faPersonCircleQuestion = {\n    prefix: 'fas',\n    iconName: 'person-circle-question',\n    icon: [640, 512, [], \"e542\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-100c-11.6 0-21.3 8.2-23.5 19.2-1.8 8.7-10.2 14.3-18.9 12.5s-14.3-10.2-12.5-18.9c5.2-25.6 27.8-44.8 54.9-44.8 30.9 0 56 25.1 56 56 0 19.8-11.7 37.8-29.8 45.9l-10.4 4.6c-1.2 7.7-7.8 13.5-15.8 13.5-8.8 0-16-7.2-16-16 0-11.2 6.6-21.3 16.8-25.9l12.4-5.5c6.6-2.9 10.8-9.4 10.8-16.6 0-13.3-10.7-24-24-24z\"]\n  };\n  var faClipboardCheck = {\n    prefix: 'fas',\n    iconName: 'clipboard-check',\n    icon: [384, 512, [], \"f46c\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zm28.4 148.7c7-11.2 3.6-26-7.6-33.1s-26-3.6-33.1 7.6l-61.4 98.3-27-36c-8-10.6-23-12.8-33.6-4.8s-12.8 23-4.8 33.6l48 64c4.7 6.3 12.3 9.9 20.2 9.6s15.1-4.5 19.3-11.3l80-128z\"]\n  };\n  var faShareFromSquare = {\n    prefix: 'fas',\n    iconName: 'share-from-square',\n    icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M384.5 24l0 72-64 0c-79.5 0-144 64.5-144 144 0 93.4 82.8 134.8 100.6 142.6 2.2 1 4.6 1.4 7.1 1.4l2.5 0c9.8 0 17.8-8 17.8-17.8 0-8.3-5.9-15.5-12.8-20.3-8.9-6.2-19.2-18.2-19.2-40.5 0-45 36.5-81.5 81.5-81.5l30.5 0 0 72c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l136-136c9.4-9.4 9.4-24.6 0-33.9L425.5 7c-6.9-6.9-17.2-8.9-26.2-5.2S384.5 14.3 384.5 24zm-272 72c-44.2 0-80 35.8-80 80l0 256c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32c0 8.8-7.2 16-16 16l-256 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0z\"]\n  };\n  var faShareSquare = faShareFromSquare;\n  var faReceipt = {\n    prefix: 'fas',\n    iconName: 'receipt',\n    icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.2-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6S384 14.6 384 24l0 464c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6l-40.4-34.6-40.4 34.6c-9 7.7-22.2 7.7-31.2 0l-40.4-34.6-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488L0 24C0 14.6 5.5 6.1 14 2.2zM104 136c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0zM80 352c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24zm24-120c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z\"]\n  };\n  var faEquals = {\n    prefix: 'fas',\n    iconName: 'equals',\n    icon: [448, 512, [62764], \"3d\", \"M32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 128zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320z\"]\n  };\n  var faChevronUp = {\n    prefix: 'fas',\n    iconName: 'chevron-up',\n    icon: [448, 512, [], \"f077\", \"M201.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 173.3 54.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n  };\n  var faVirusSlash = {\n    prefix: 'fas',\n    iconName: 'virus-slash',\n    icon: [576, 512, [], \"e075\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-88.6-88.6c1.7-12.1-2-24.8-11.3-34-31.2-31.2-9.1-84.5 35-84.5 22.1 0 40-17.9 40-40s-17.9-40-40-40c-44.1 0-66.1-53.3-35-84.5 15.6-15.6 15.6-40.9 0-56.6s-40.9-15.6-56.6 0c-31.2 31.2-84.5 9.1-84.5-35 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 44.1-53.3 66.1-84.5 35-9.3-9.3-22-13-34-11.3L41-24.9zM72 216c-22.1 0-40 17.9-40 40s17.9 40 40 40c44.1 0 66.1 53.3 35 84.5-15.6 15.6-15.6 40.9 0 56.6s40.9 15.6 56.6 0c31.2-31.2 84.5-9.1 84.5 35 0 22.1 17.9 40 40 40s40-17.9 40-40c0-21.4 12.6-37.6 29.1-45.1l-240-240C109.6 203.4 93.4 216 72 216z\"]\n  };\n  var faSlash = {\n    prefix: 'fas',\n    iconName: 'slash',\n    icon: [576, 512, [], \"f715\", \"M7-25c9.4-9.4 24.6-9.4 33.9 0L569 503c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9C-2.3-.4-2.3-15.6 7-25z\"]\n  };\n  var faExpand = {\n    prefix: 'fas',\n    iconName: 'expand',\n    icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32S0 334.3 0 352l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z\"]\n  };\n  var faNoteSticky = {\n    prefix: 'fas',\n    iconName: 'note-sticky',\n    icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 213.5c0 17-6.7 33.3-18.7 45.3L322.7 461.3c-12 12-28.3 18.7-45.3 18.7L64 480zM389.5 304L296 304c-13.3 0-24 10.7-24 24l0 93.5 117.5-117.5z\"]\n  };\n  var faStickyNote = faNoteSticky;\n  var faTableColumns = {\n    prefix: 'fas',\n    iconName: 'table-columns',\n    icon: [448, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 128 0 0-256-128 0zm320 0l-128 0 0 256 128 0 0-256z\"]\n  };\n  var faColumns = faTableColumns;\n  var faPersonShelter = {\n    prefix: 'fas',\n    iconName: 'person-shelter',\n    icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32L64 178.6 256 68.9 448 178.6 448 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 192l16 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-174.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-33.2-61.7C329.7 245.1 294.4 224 256 224s-73.7 21.1-91.9 54.9l-33.2 61.7c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5 200 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-88z\"]\n  };\n  var faCircleNotch = {\n    prefix: 'fas',\n    iconName: 'circle-notch',\n    icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8-79.3 23.6-137.1 97.1-137.1 184.1 0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256 512 397.4 397.4 512 256 512S0 397.4 0 256c0-116 77.1-213.9 182.9-245.4 16.9-5 34.8 4.6 39.8 21.5z\"]\n  };\n  var faWater = {\n    prefix: 'fas',\n    iconName: 'water',\n    icon: [512, 512, [], \"f773\", \"M410.6 124.1c20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.8-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm0 144c20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.7-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm-71.2 144c21.3-16.1 49.9-16.1 71.2 0 20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.8-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n  };\n  var faDeleteLeft = {\n    prefix: 'fas',\n    iconName: 'delete-left',\n    icon: [640, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM284.1 188.1c9.4-9.4 24.6-9.4 33.9 0l33.9 33.9 33.9-33.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-33.9 33.9 33.9 33.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-33.9-33.9-33.9 33.9c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l33.9-33.9-33.9-33.9c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faBackspace = faDeleteLeft;\n  var faBroomBall = {\n    prefix: 'fas',\n    iconName: 'broom-ball',\n    icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M496 544a80 80 0 1 1 0-160 80 80 0 1 1 0 160zM106.8 277.2c30.6-30.6 73.1-45.9 115.8-42.2L341 353.3c3.7 42.8-11.6 85.2-42.2 115.9-27.4 27.4-64.6 42.8-103.3 42.8L22.1 512c-12.2 0-22.1-9.9-22.1-22.1 0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2 0-31.5 12.5-61.8 34.8-84l8-8zm417-270c12.6-10.3 31.1-9.5 42.8 2.2s12.4 30.2 2.2 42.8l-2.2 2.4-192 192 34.8 34.7c4.2 4.2 6.6 10 6.6 16 0 12.5-10.1 22.6-22.6 22.6l-29.1 0-108.3-108.3 0-29.1c0-12.5 10.1-22.6 22.6-22.6 6 0 11.8 2.4 16 6.6l34.8 34.7 192-192 2.4-2.2z\"]\n  };\n  var faQuidditch = faBroomBall;\n  var faQuidditchBroomBall = faBroomBall;\n  var faJ = {\n    prefix: 'fas',\n    iconName: 'j',\n    icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32l0 256c0 88.4-71.6 160-160 160S0 408.4 0 320l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 53 43 96 96 96s96-43 96-96l0-256c0-17.7 14.3-32 32-32z\"]\n  };\n  var faShuttleSpace = {\n    prefix: 'fas',\n    iconName: 'shuttle-space',\n    icon: [576, 512, [\"space-shuttle\"], \"f197\", \"M0 368l0 64c0 26.5 21.5 48 48 48l50 0c40.6 0 80.4-11 115.2-31.9l133.5-80.1-93.3 0-64.9 38.9c-14 8.4-28.9 14.7-44.5 19l0-66.4c9.7-5.6 17.8-13.7 23.4-23.4l198.8 0c67.1 0 127.8-20.6 170.3-70.6 4.6-5.4 4.6-13.3 0-18.8-42.5-50.1-103.2-70.6-170.3-70.6l-198.8 0c-5.6-9.7-13.7-17.8-23.4-23.4l0-66.4c15.6 4.2 30.6 10.6 44.5 19l64.9 38.9 93.3 0-133.5-80.1C178.4 43 138.6 32 98 32L48 32C21.5 32 0 53.5 0 80L0 368zm96 0l0 64-48 0 0-64 48 0zM96 80l0 64-48 0 0-64 48 0zM416 224c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n  };\n  var faSpaceShuttle = faShuttleSpace;\n  var faYinYang = {\n    prefix: 'fas',\n    iconName: 'yin-yang',\n    icon: [512, 512, [9775], \"f6ad\", \"M224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 352a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-448c53 0 96 43 96 96s-43 96-96 96-96 43-96 96 43 96 96 96C150 448 64 362 64 256S150 64 256 64zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faStop = {\n    prefix: 'fas',\n    iconName: 'stop',\n    icon: [448, 512, [9209], \"f04d\", \"M64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32z\"]\n  };\n  var faTrowel = {\n    prefix: 'fas',\n    iconName: 'trowel',\n    icon: [576, 512, [], \"e589\", \"M407.9 181.4L277.3 312 342.6 377.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9s-11.5-20.8-7.9-32.2l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L232 266.7 362.6 136.1c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n  };\n  var faHandBackFist = {\n    prefix: 'fas',\n    iconName: 'hand-back-fist',\n    icon: [384, 512, [\"hand-rock\"], \"f255\", \"M7.4 253.6C2.6 245.9 0 237.1 0 228l0-36c0-26.5 21.5-48 48-48l16 0 0-80c0-26.5 21.5-48 48-48 17.3 0 32.4 9.1 40.9 22.8 4.3-22.1 23.8-38.8 47.1-38.8 23.4 0 42.9 16.8 47.1 38.9 7.3-4.4 15.8-6.9 24.9-6.9 22.1 0 40.8 15 46.3 35.4 5.5-2.2 11.4-3.4 17.7-3.4 26.5 0 48 21.5 48 48l0 96.9c0 9.9-2.3 19.7-6.8 28.6l-39.6 79.1c-10.8 21.7-33 35.4-57.2 35.4L96 352c-16.5 0-31.8-8.4-40.6-22.4l-48-76zM32 480l0-48c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faHandRock = faHandBackFist;\n  var faTemperatureHigh = {\n    prefix: 'fas',\n    iconName: 'temperature-high',\n    icon: [512, 512, [], \"f769\", \"M96 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144S48 447.5 48 368c0-42.6 18.5-81 48-107.3L96 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3L216 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 212.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM464 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM352 80a80 80 0 1 1 160 0 80 80 0 1 1 -160 0z\"]\n  };\n  var faGreaterThan = {\n    prefix: 'fas',\n    iconName: 'greater-than',\n    icon: [512, 512, [62769], \"3e\", \"M34.9 50.6c-7.4 16-.4 35.1 15.6 42.5L403.6 256 50.6 419c-16 7.4-23.1 26.4-15.6 42.5s26.4 23 42.5 15.6l416-192c11.3-5.2 18.6-16.6 18.6-29.1s-7.3-23.8-18.6-29.1L77.4 35c-16-7.4-35.1-.4-42.5 15.6z\"]\n  };\n  var faCrutch = {\n    prefix: 'fas',\n    iconName: 'crutch',\n    icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-1.4-1.4-158.6 158.6c-18 18-42.4 28.1-67.9 28.1l-59 0c-8.5 0-16.6 3.4-22.6 9.4-61.7 61.7-92.8 92.8-93.3 93.3-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l16-16 0 0 77.3-77.3c6-6 9.4-14.1 9.4-22.6l0-59c0-25.5 10.1-49.9 28.1-67.9L298.7 56 297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zM344 101.3L261.3 184 328 250.7 410.7 168 344 101.3zm-128 128l-30.6 30.6c-6 6-9.4 14.1-9.4 22.6l0 53.5 53.5 0c8.5 0 16.6-3.4 22.6-9.4L282.7 296 216 229.3z\"]\n  };\n  var faSeptagon = {\n    prefix: 'fas',\n    iconName: 'septagon',\n    icon: [576, 512, [\"heptagon\"], \"e820\", \"M267.4-31.5c15.9-5.5 33.5-4.6 48.8 2.7l172.4 83 6.3 3.5c14.2 9 24.5 23.3 28.3 39.9l42.6 186.5 1.2 7.2c1.6 14.3-1.7 28.8-9.4 41.1l-4.2 5.9-119.3 149.6c-12.1 15.2-30.6 24.1-50 24.1l-191.3 0c-19.5 0-37.9-8.9-50-24.1L23.5 338.4c-12.1-15.2-16.7-35.2-12.3-54.2l42.6-186.5 2-7c5.6-15.9 17.2-29 32.6-36.4l172.4-83 6.7-2.7z\"]\n  };\n  var faHeptagon = faSeptagon;\n  var faStreetView = {\n    prefix: 'fas',\n    iconName: 'street-view',\n    icon: [512, 512, [], \"f21d\", \"M256 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 160l64 0c35.3 0 64 28.7 64 64l0 48c0 17.7-14.3 32-32 32l-1.8 0-11.1 99.5c-1.8 16.2-15.5 28.5-31.8 28.5l-38.7 0c-16.3 0-30-12.3-31.8-28.5l-11.1-99.5-1.8 0c-17.7 0-32-14.3-32-32l0-48c0-35.3 28.7-64 64-64zM412.4 400.2c-16.1-4.2-34.8-7.6-55.4-10.2l5.3-47.7c22.7 2.9 43.7 6.7 62.1 11.5 22.4 5.8 42.6 13.3 57.8 23.3 14.7 9.6 29.8 24.9 29.8 47s-15.1 37.4-29.8 47c-15.2 9.9-35.5 17.5-57.8 23.3-45.1 11.7-105.3 17.8-168.4 17.8s-123.3-6.1-168.4-17.8C65.2 488.4 45 480.9 29.8 471 15.1 461.4 0 446.1 0 424s15.1-37.4 29.8-47c15.2-9.9 35.5-17.5 57.8-23.3 18.5-4.8 39.5-8.6 62.1-11.5L155 390c-20.6 2.6-39.3 6.1-55.4 10.2-56.6 14.6-56.6 32.9 0 47.5 39.9 10.3 95.8 16.2 156.4 16.2s116.5-5.9 156.4-16.2c56.6-14.6 56.6-32.9 0-47.5z\"]\n  };\n  var faWaveSquare = {\n    prefix: 'fas',\n    iconName: 'wave-square',\n    icon: [512, 512, [], \"f83e\", \"M64 96c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 288 96 0 0-128c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-288-96 0 0 128c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-128z\"]\n  };\n  var faAngleLeft = {\n    prefix: 'fas',\n    iconName: 'angle-left',\n    icon: [256, 512, [8249], \"f104\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n  };\n  var faScrewdriver = {\n    prefix: 'fas',\n    iconName: 'screwdriver',\n    icon: [576, 512, [129691], \"f54a\", \"M352.1 146.7l0-49.6c0-10.7 5.3-20.7 14.2-26.6L485.2-8.7c6.3-4.2 14.8-3.4 20.2 2l45.4 45.5c5.4 5.4 6.2 13.8 2 20.2L473.6 177.8c-5.9 8.9-15.9 14.2-26.6 14.2l-49.6 0-90.7 90.7c15 33.3 8.9 73.9-18.5 101.3L162.1 510.1c-18.7 18.7-49.1 18.7-67.9 0L34.1 449.9c-18.7-18.7-18.7-49.1 0-67.9L160.1 256c27.4-27.4 67.9-33.6 101.3-18.5l90.7-90.7z\"]\n  };\n  var faTractor = {\n    prefix: 'fas',\n    iconName: 'tractor',\n    icon: [576, 512, [128668], \"f722\", \"M160 96l0 96 133.4 0-57.6-96-75.8 0zM96 223L96 64c0-17.7 14.3-32 32-32l107.8 0c22.5 0 43.3 11.8 54.9 31.1l77.4 128.9 64 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 48 0c26.5 0 48 21.5 48 48l0 41.5c0 14.2-6.3 27.8-17.3 36.9l-35 29.2c26.5 15.2 44.3 43.7 44.3 76.4 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-14.4 3.5-28 9.6-40l-101.2 0c-3 13.4-7.9 26-14.4 37.7 7.7 9.4 7.2 23.4-1.6 32.2l-22.6 22.6c-8.8 8.8-22.7 9.3-32.2 1.6-9.3 5.2-19.3 9.3-29.8 12.3-1.2 12.1-11.4 21.6-23.9 21.6l-32 0c-12.4 0-22.7-9.5-23.9-21.6-10.5-3-20.4-7.2-29.8-12.3-9.4 7.7-23.4 7.2-32.2-1.6L35.5 453.8c-8.8-8.8-9.3-22.7-1.6-32.2-5.2-9.3-9.3-19.3-12.3-29.8-12.1-1.2-21.6-11.4-21.6-23.9l0-32c0-12.4 9.5-22.7 21.6-23.9 3-10.5 7.2-20.4 12.3-29.8-7.7-9.4-7.2-23.4 1.6-32.2l22.6-22.6c8.8-8.8 22.7-9.3 32.2-1.6 1.9-1 3.7-2 5.7-3zm64 65a64 64 0 1 0 0 128 64 64 0 1 0 0-128zM440 424a40 40 0 1 0 80 0 40 40 0 1 0 -80 0z\"]\n  };\n  var faBridgeCircleXmark = {\n    prefix: 'fas',\n    iconName: 'bridge-circle-xmark',\n    icon: [576, 512, [], \"e4cb\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96 6.4 0 12.7 .6 18.7 1.8 34.7-49.5 92.2-81.8 157.3-81.8 28.6 0 55.6 6.2 80 17.4l0-65.4-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faVials = {\n    prefix: 'fas',\n    iconName: 'vials',\n    icon: [512, 512, [], \"f493\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 352c0 53 43 96 96 96s96-43 96-96l0-352 64 0 0 352c0 53 43 96 96 96s96-43 96-96l0-352c17.7 0 32-14.3 32-32S497.7 0 480 0L32 0zM160 64l0 128-64 0 0-128 64 0zm256 0l0 128-64 0 0-128 64 0z\"]\n  };\n  var faStethoscope = {\n    prefix: 'fas',\n    iconName: 'stethoscope',\n    icon: [576, 512, [129658], \"f0f1\", \"M32 48C32 21.5 53.5 0 80 0l48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 128c0 53 43 96 96 96s96-43 96-96l0-128-32 0c-17.7 0-32-14.3-32-32S238.3 0 256 0l48 0c26.5 0 48 21.5 48 48l0 144c0 77.4-55 142-128 156.8l0 19.2c0 61.9 50.1 112 112 112s112-50.1 112-112l0-85.5c-37.3-13.2-64-48.7-64-90.5 0-53 43-96 96-96s96 43 96 96c0 41.8-26.7 77.4-64 90.5l0 85.5c0 97.2-78.8 176-176 176S160 465.2 160 368l0-19.2C87 334 32 269.4 32 192L32 48zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faPodcast = {\n    prefix: 'fas',\n    iconName: 'podcast',\n    icon: [448, 512, [], \"f2ce\", \"M336 359.8c39.1-32.3 64-81.1 64-135.8 0-97.2-78.8-176-176-176S48 126.8 48 224C48 278.7 72.9 327.5 112 359.8 112.4 377.4 115.2 400.2 118.4 421.6 48 383.9 0 309.5 0 224 0 100.3 100.3 0 224 0S448 100.3 448 224c0 85.6-48 159.9-118.5 197.6 3.3-21.4 6-44.2 6.4-61.8zm-14-53.4c-8.3-12.6-19.2-21.6-30.4-27.8-2.1-1.1-4.2-2.2-6.3-3.2 11.7-13.9 18.8-31.9 18.8-51.5 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 19.6 7.1 37.6 18.8 51.5-2.1 1-4.2 2-6.3 3.2-11.2 6.2-22.1 15.2-30.4 27.8-18.8-22.3-30.1-51-30.1-82.4 0-70.7 57.3-128 128-128s128 57.3 128 128c0 31.4-11.3 60.2-30.1 82.4zM224 312c32.9 0 64 8.6 64 43.8 0 33-12.9 104.1-20.6 132.9-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8 0-35.1 31.1-43.8 64-43.8zm0-128a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n  };\n  var faArrowUpRightDots = {\n    prefix: 'fas',\n    iconName: 'arrow-up-right-dots',\n    icon: [512, 512, [], \"e4b7\", \"M96 32C78.3 32 64 46.3 64 64S78.3 96 96 96L114.7 96 9.4 201.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.3 160 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 32zM403.8 70.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zM279.7 194.2a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zm162.2-38.1a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zM156.2 317.8a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zm161.6-38.1a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zm86.1 38.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zM70.1 403.8a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zm86.1 38.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zm161.6-38.1a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zm86.1 38.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0z\"]\n  };\n  var faChessQueen = {\n    prefix: 'fas',\n    iconName: 'chess-queen',\n    icon: [512, 512, [9819], \"f445\", \"M256 80a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM5.5 185L128 384 71.8 454.3c-5 6.3-7.8 14.1-7.8 22.2 0 19.6 15.9 35.5 35.5 35.5l312.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2L384 384 506.5 185c3.6-5.9 5.5-12.7 5.5-19.6l0-.6c0-20.3-16.5-36.8-36.8-36.8-7.3 0-14.4 2.2-20.4 6.2l-16.9 11.3c-12.7 8.5-29.6 6.8-40.4-4l-34.1-34.1C356.1 100.1 346.2 96 336 96s-20.1 4.1-27.3 11.3l-30.1 30.1c-12.5 12.5-32.8 12.5-45.3 0l-30.1-30.1C196.1 100.1 186.2 96 176 96s-20.1 4.1-27.3 11.3l-34.1 34.1c-10.8 10.8-27.7 12.5-40.4 4L57.3 134.2c-6.1-4-13.2-6.2-20.4-6.2-20.3 0-36.8 16.5-36.8 36.8l0 .6c0 6.9 1.9 13.7 5.5 19.6z\"]\n  };\n  var faAnchorCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'anchor-circle-exclamation',\n    icon: [640, 512, [], \"e4ab\", \"M320.5 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3l16.2-14.2c2.1 113.1 94.4 204.1 208 204.1 16.6 0 32.7-1.9 48.2-5.6-20.3-30.5-32.2-67-32.2-106.4 0-27.3 5.7-53.3 16-76.9l0-136.6c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zm208 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faEllipsisVertical = {\n    prefix: 'fas',\n    iconName: 'ellipsis-vertical',\n    icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 144a56 56 0 1 1 0-112 56 56 0 1 1 0 112zm0 224c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56zm56-112c0 30.9-25.1 56-56 56s-56-25.1-56-56 25.1-56 56-56 56 25.1 56 56z\"]\n  };\n  var faEllipsisV = faEllipsisVertical;\n  var faHeartCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'heart-circle-exclamation',\n    icon: [576, 512, [], \"e4fe\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM432 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 228a20 20 0 1 0 0-40 20 20 0 1 0 0 40zm0-180c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n  };\n  var faBuildingCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'building-circle-exclamation',\n    icon: [576, 512, [], \"e4d3\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-10.5-14.6-19-30.7-25.1-48l-74.9 0 0-80c0-17.7 14.3-32 32-32l32 0c2 0 4 .2 5.9 .5 6-23.6 16.3-45.4 30.1-64.5l-4 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 4c27.5-19.8 60.3-32.4 96-35.4L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faPersonArrowUpFromLine = {\n    prefix: 'fas',\n    iconName: 'person-arrow-up-from-line',\n    icon: [576, 512, [], \"e539\", \"M192-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM318.3 299.1l-46.3-62.4 0 243.3 272 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 544c-17.7 0-32-14.3-32-32s14.3-32 32-32l80 0 0-243.3-46.3 62.4c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C110 132 149.7 112 192 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6zM208 480l0-128c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 128 32 0zM566.6 102.6c-12.5 12.5-32.8 12.5-45.3 0L496 77.3 496 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-146.7-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l80-80c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3z\"]\n  };\n  var faNotEqual = {\n    prefix: 'fas',\n    iconName: 'not-equal',\n    icon: [448, 512, [], \"f53e\", \"M378.6 81.8c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L270.9 128 32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l196.2 0-85.3 128-110.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l68.2 0-30.8 46.2c-9.8 14.7-5.8 34.6 8.9 44.4s34.6 5.8 44.4-8.9L177.1 384 416 384c17.7 0 32-14.3 32-32s-14.3-32-32-32l-196.2 0 85.3-128 110.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-68.2 0 30.8-46.2z\"]\n  };\n  var faTrainTram = {\n    prefix: 'fas',\n    iconName: 'train-tram',\n    icon: [384, 512, [128650], \"e5b4\", \"M0 8C0-5.3 10.7-16 24-16l336 0c13.3 0 24 10.7 24 24l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-120 0 0 64 40 0c53 0 96 43 96 96l0 160c0 31.2-14.9 59-38 76.5l64.3 76c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8l-74.6-88.1c-3.6 .4-7.3 .6-11.1 .6l-128 0c-3.8 0-7.5-.2-11.1-.6L42.3 535.5c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8l64.3-76C46.9 411 32 383.2 32 352l0-160c0-53 43-96 96-96l40 0 0-64-120 0 0 8c0 13.3-10.7 24-24 24S0 53.3 0 40L0 8zM128 160c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-128 0zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faPlaneDeparture = {\n    prefix: 'fas',\n    iconName: 'plane-departure',\n    icon: [576, 512, [128747], \"f5b0\", \"M372 143.9L172.7 40.2c-8-4.1-17.3-4.8-25.7-1.7l-41.1 15c-10.3 3.7-13.8 16.4-7.1 25L200.3 206.4 100.1 242.8 40 206.2c-6.2-3.8-13.8-4.5-20.7-2.1L3 210.1c-9.4 3.4-13.4 14.5-8.3 23.1l53.6 91.8c15.6 26.7 48.1 38.4 77.1 27.8l12.9-4.7 0 0 398.4-145c29.1-10.6 44-42.7 33.5-71.8s-42.7-44-71.8-33.5L372 143.9zM32.2 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-512 0z\"]\n  };\n  var faRightToBracket = {\n    prefix: 'fas',\n    iconName: 'right-to-bracket',\n    icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M345 273c9.4-9.4 9.4-24.6 0-33.9L201 95c-6.9-6.9-17.2-8.9-26.2-5.2S160 102.3 160 112l0 80-112 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l112 0 0 80c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2L345 273zm7 143c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0z\"]\n  };\n  var faSignInAlt = faRightToBracket;\n  var faSdCard = {\n    prefix: 'fas',\n    iconName: 'sd-card',\n    icon: [384, 512, [], \"f7c2\", \"M384 64c0-35.3-28.7-64-64-64L125.3 0C108.3 0 92 6.7 80 18.7L18.7 80C6.7 92 0 108.3 0 125.3L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384zM160 88l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm88 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm88 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faHouseCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'house-circle-exclamation',\n    icon: [640, 512, [], \"e50a\", \"M496 544a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l217.6 202c-10.2-1.7-20.7-2.6-31.3-2.6-78.6 0-146.1 47.2-175.8 114.8-5.1-1.8-10.5-2.8-16.2-2.8l-32 0c-26.5 0-48 21.5-48 48l0 96 91 0c6.1 17.3 14.6 33.4 25.1 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM496 444a20 20 0 1 0 0 40 20 20 0 1 0 0-40zm0-140c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16 8.8 0 16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n  };\n  var faShekelSign = {\n    prefix: 'fas',\n    iconName: 'shekel-sign',\n    icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c35.3 0 64 28.7 64 64l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-70.7-57.3-128-128-128L32 32zM320 480c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288c0 35.3-28.7 64-64 64l-128 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l160 0z\"]\n  };\n  var faIls = faShekelSign;\n  var faShekel = faShekelSign;\n  var faSheqel = faShekelSign;\n  var faSheqelSign = faShekelSign;\n  var faRadio = {\n    prefix: 'fas',\n    iconName: 'radio',\n    icon: [512, 512, [128251], \"f8d7\", \"M494.8 15c12.7-3.7 20-17.1 16.3-29.8S494-34.8 481.3-31L51.8 94.9C42.4 97.6 33.9 102.1 26.6 108 10.5 119.7 0 138.6 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L218.5 96 494.8 15zM368 208a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM64 248c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 272c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 368c-13.3 0-24-10.7-24-24z\"]\n  };\n  var faHandDots = {\n    prefix: 'fas',\n    iconName: 'hand-dots',\n    icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4S-3.6 325.7 12.4 341L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208zM200 352a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm-88 24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faAllergies = faHandDots;\n  var faBookSkull = {\n    prefix: 'fas',\n    iconName: 'book-skull',\n    icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM272 163.2l0 12.8c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16l0-12.8c-19.4-11.7-32-30.3-32-51.2 0-35.3 35.8-64 80-64s80 28.7 80 64c0 20.9-12.6 39.5-32 51.2zM208 112a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm74.2 95.7c4.6 10.1 .1 21.9-9.9 26.5l-47.9 21.8 47.9 21.8c10.1 4.6 14.5 16.4 9.9 26.5s-16.4 14.5-26.5 9.9L224 294 144.3 330.2c-10.1 4.6-21.9 .1-26.5-9.9s-.1-21.9 9.9-26.5l47.9-21.8-47.9-21.8c-10.1-4.6-14.5-16.4-9.9-26.5s16.4-14.5 26.5-9.9L224 250 303.7 213.8c10.1-4.6 21.9-.1 26.5 9.9z\"]\n  };\n  var faBookDead = faBookSkull;\n  var faUnlockKeyhole = {\n    prefix: 'fas',\n    iconName: 'unlock-keyhole',\n    icon: [384, 512, [\"unlock-alt\"], \"f13e\", \"M192 32c-35.3 0-64 28.7-64 64l0 64 192 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l0-64c0-70.7 57.3-128 128-128 63.5 0 116.1 46.1 126.2 106.7 2.9 17.4-8.8 33.9-26.3 36.9s-33.9-8.8-36.9-26.3C250 55.1 223.7 32 192 32zm40 328c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0z\"]\n  };\n  var faUnlockAlt = faUnlockKeyhole;\n  var faFileArrowUp = {\n    prefix: 'fas',\n    iconName: 'file-arrow-up',\n    icon: [384, 512, [\"file-upload\"], \"f574\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM209 263c-9.4-9.4-24.6-9.4-33.9 0l-64 64c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l23-23 0 86.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-86.1 23 23c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-64-64z\"]\n  };\n  var faFileUpload = faFileArrowUp;\n  var faFaceGrinTears = {\n    prefix: 'fas',\n    iconName: 'face-grin-tears',\n    icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M554.8 203.4l16.3 2.3C547.7 88.4 444.2 0 320 0S92.3 88.4 68.9 205.7l16.3-2.3c37-5.3 68.6 26.4 63.4 63.4l-6.7 46.7c-4.1 29-21.6 53.2-45.8 66.8 43.7 78.5 127.6 131.7 223.8 131.7s180.1-53.1 223.8-131.7c-24.1-13.5-41.6-37.8-45.8-66.8l-6.7-46.7c-5.3-37 26.4-68.6 63.4-63.4zM470.3 326.9C447.9 388.2 389.1 432 320 432S192.1 388.2 169.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1c11.9-3.7 23.9 6.3 19.6 18.1zM212 208l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28zm188-28c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zM640 300.6c0-25.6-18.8-47.3-44.1-50.9L549.1 243c-10.6-1.5-19.6 7.5-18.1 18.1l6.7 46.7c3.6 25.3 25.3 44.1 50.9 44.1 28.4 0 51.4-23 51.4-51.4zm-640 0C0 329 23 352 51.4 352 77 352 98.7 333.2 102.3 307.9l6.7-46.7c1.5-10.6-7.5-19.6-18.1-18.1l-46.7 6.7C18.8 253.3 0 275 0 300.6z\"]\n  };\n  var faGrinTears = faFaceGrinTears;\n  var faPenToSquare = {\n    prefix: 'fas',\n    iconName: 'pen-to-square',\n    icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L368 46.1 465.9 144 490.3 119.6c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L432 177.9 334.1 80 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"]\n  };\n  var faEdit = faPenToSquare;\n  var faEarthEurope = {\n    prefix: 'fas',\n    iconName: 'earth-europe',\n    icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M256.2 48c114.8 .1 207.8 93.2 207.8 208 0 22.1-3.4 43.4-9.8 63.4-2 .4-4.1 .6-6.2 .6l-2.7 0c-8.5 0-16.6-3.4-22.6-9.4l-29.3-29.3c-6-6-9.4-14.1-9.4-22.6l0-50.7c0-8.8 7.2-16 16-16s16-7.2 16-16-7.2-16-16-16l-24 0c-13.3 0-24 10.7-24 24s-10.7 24-24 24l-56 0c-8.8 0-16 7.2-16 16s-7.2 16-16 16l-25.4 0c-12.5 0-22.6-10.1-22.6-22.6 0-6 2.4-11.8 6.6-16l70.1-70.1c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3l-14.1 0c-12.5 0-22.6-10.1-22.6-22.6 0-6 2.4-11.8 6.6-16l23.1-23.1c.8-.8 1.6-1.5 2.5-2.2zM438.4 356.1c-32.8 59.6-93.9 101.4-165.2 107.2-.7-2.3-1.1-4.8-1.1-7.3 0-13.3-10.7-24-24-24l-26.7 0c-8.5 0-16.6-3.4-22.6-9.4l-29.3-29.3c-6-6-9.4-14.1-9.4-22.6l0-66.7c0-17.7 14.3-32 32-32l98.7 0c8.5 0 16.6 3.4 22.6 9.4l29.3 29.3c6 6 14.1 9.4 22.6 9.4l5.5 0c8.5 0 16.6 3.4 22.6 9.4l16 16c4.2 4.2 10 6.6 16 6.6 4.8 0 9.3 1.5 13 4.1zM256 512l26.2-1.3c-8.6 .9-17.3 1.3-26.2 1.3zm26.2-1.3C411.3 497.6 512 388.6 512 256 512 114.6 397.4 0 256 0l0 0C114.6 0 0 114.6 0 256 0 383.5 93.2 489.3 215.3 508.8 228.5 510.9 242.1 512 256 512zM187.3 123.3l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faGlobeEurope = faEarthEurope;\n  var faFaceGrinBeamSweat = {\n    prefix: 'fas',\n    iconName: 'face-grin-beam-sweat',\n    icon: [576, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M546.2-.1c14.7 17.8 29.8 40.1 29.8 64.1 0 36.4-27.6 64-64 64s-64-27.6-64-64c0-24 15.2-46.3 29.8-64.1 8.8-10.7 18.5-20.8 29-30 3-2.6 7.4-2.6 10.4 0 10.5 9.1 20.1 19.3 29 30zM288 0c42.5 0 82.6 10.4 117.8 28.7-3.6 10.9-5.8 22.7-5.8 35.3 0 62.9 49.1 112 112 112 6.4 0 12.7-.5 18.8-1.5 8.6 25.6 13.2 53 13.2 81.5 0 141.4-114.6 256-256 256S32 397.4 32 256 146.6 0 288 0zM418.7 308.9C379.5 321.1 335.1 328 288 328s-91.5-6.9-130.7-19.1c-11.9-3.7-23.9 6.3-19.6 18.1 22.4 61.3 81.3 105.1 150.3 105.1s127.9-43.8 150.3-105.1c4.3-11.8-7.7-21.8-19.6-18.1zM208 180c15.5 0 28 12.5 28 28l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-37.6-30.4-68-68-68s-68 30.4-68 68l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-15.5 12.5-28 28-28zm132 28c0-15.5 12.5-28 28-28s28 12.5 28 28l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-37.6-30.4-68-68-68s-68 30.4-68 68l0 8c0 11 9 20 20 20s20-9 20-20l0-8z\"]\n  };\n  var faGrinBeamSweat = faFaceGrinBeamSweat;\n  var faCircleHalfStroke = {\n    prefix: 'fas',\n    iconName: 'circle-half-stroke',\n    icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n  };\n  var faAdjust = faCircleHalfStroke;\n  var faPersonMilitaryToPerson = {\n    prefix: 'fas',\n    iconName: 'person-military-to-person',\n    icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8 0 9.3 7.5 16.8 16.7 16.9l111.4 0c8.8-.1 15.9-7.2 15.9-16L200 16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1l-122.9 0c-1.6 5.7-2.5 11.7-2.5 17.9 0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256l0 32c0 17.7 14.3 32 32 32l128 0c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5l0-32c0-35.3-28.7-64-64-64l-64 0c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-35.3-28.7-64-64-64l-64 0zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376l0 32-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0 0 32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 3 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9S400 497.8 400 488.4l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n  };\n  var faTableCellsColumnLock = {\n    prefix: 'fas',\n    iconName: 'table-cells-column-lock',\n    icon: [640, 512, [], \"e678\", \"M256 224l0 192 64 0 0-192-64 0zm256-79c-46.7 5.8-85.6 36.8-102.7 79l-25.3 0 0 90.8c-10.1 15.2-16 33.4-16 53.1l0 96c0 5.5 .5 10.9 1.3 16.1L128 480c-35.3 0-64-28.7-64-64L64 96c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 49zM128 224l0 192 64 0 0-192-64 0zm432 48.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM416 368c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faTruckFieldUn = {\n    prefix: 'fas',\n    iconName: 'truck-field-un',\n    icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96l0 32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l0 48c0 21.1 13.7 39.1 32.6 45.5-.4 3.4-.6 7-.6 10.5 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l144.7 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l.4 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-24.7 0-1.7-4.2-43.8-106.3c-12.3-30-41.6-49.5-74-49.5l-40.4 0C364.4 44.9 343.7 32 320 32L96 32zM384 224l0-96 31.9 0c6.5 0 12.3 3.9 14.8 9.9l35.4 86.1-82.1 0zM152 352a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm280 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM256.6 132.9l27.4 41 0-29.9c0-11 9-20 20-20s20 9 20 20l0 96c0 8.8-5.8 16.6-14.2 19.1s-17.5-.7-22.4-8l-27.4-41 0 29.9c0 11-9 20-20 20s-20-9-20-20l0-96c0-8.8 5.8-16.6 14.2-19.1s17.5 .7 22.4 8zM132 144l0 64c0 6.6 5.4 12 12 12s12-5.4 12-12l0-64c0-11 9-20 20-20s20 9 20 20l0 64c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-64c0-11 9-20 20-20s20 9 20 20z\"]\n  };\n  var faClock = {\n    prefix: 'fas',\n    iconName: 'clock',\n    icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512 256 256 0 1 1 0-512zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n  };\n  var faClockFour = faClock;\n  var faBook = {\n    prefix: 'fas',\n    iconName: 'book',\n    icon: [448, 512, [128212], \"f02d\", \"M384 512L96 512c-53 0-96-43-96-96L0 96C0 43 43 0 96 0L400 0c26.5 0 48 21.5 48 48l0 288c0 20.9-13.4 38.7-32 45.3l0 66.7c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zM96 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0-64-256 0zm32-232c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24zm24 72c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z\"]\n  };\n  var faFaceLaughWink = {\n    prefix: 'fas',\n    iconName: 'face-laugh-wink',\n    icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26l265.4 0c14.2 0 25.4 12.3 21.7 26-18.5 68-80.6 118-154.4 118S120 382 101.6 314zM144 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm164 8c0 11-9 20-20 20s-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n  };\n  var faLaughWink = faFaceLaughWink;\n  var faCloudMeatball = {\n    prefix: 'fas',\n    iconName: 'cloud-meatball',\n    icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96l26.9 0c3.5-12.1 10.1-23.3 19.2-32.4l1.4-1.4c15-15 35.3-22.9 56.1-22.2 14.2-15.1 34.2-23.9 55.4-23.9l2 0c21.1 0 41.1 8.8 55.4 23.9 20.8-.6 41.1 7.3 56.1 22.2l1.4 1.4c9.2 9.2 15.7 20.4 19.2 32.4l26.9 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0 1.1-5.2 1.6-10.5 1.6-16 0-44.2-35.8-80-80-80-24.3 0-46.1 10.9-60.8 28-18.7-35.7-56.1-60-99.2-60-61.9 0-112 50.1-112 112 0 7.1 .7 14.1 1.9 20.8-38.3 12.6-65.9 48.7-65.9 91.2zM156.5 424.3c9.5 6.3 14.2 17.7 11.9 28.8-1.8 9.2 1 18.7 7.7 25.3l1.4 1.4c6.6 6.6 16.1 9.5 25.3 7.7 11.1-2.2 22.5 2.5 28.8 11.9 5.2 7.8 14 12.5 23.3 12.5l2 0c9.4 0 18.1-4.7 23.3-12.5 6.3-9.5 17.7-14.2 28.8-11.9 9.2 1.8 18.7-1 25.3-7.7l1.4-1.4c6.6-6.6 9.5-16.1 7.7-25.3-2.2-11.1 2.5-22.5 11.9-28.8 7.8-5.2 12.5-14 12.5-23.3l0-2c0-9.4-4.7-18.1-12.5-23.3-9.5-6.3-14.2-17.7-11.9-28.8 1.8-9.2-1-18.7-7.7-25.3l-1.4-1.4c-6.6-6.6-16.1-9.5-25.3-7.7-11.1 2.2-22.5-2.5-28.8-11.9-5.2-7.8-14-12.5-23.3-12.5l-2 0c-9.4 0-18.1 4.7-23.3 12.5-6.3 9.5-17.7 14.2-28.8 11.9-9.2-1.8-18.7 1-25.3 7.7l-1.4 1.4c-6.6 6.6-9.5 16.1-7.7 25.3 2.2 11.1-2.5 22.5-11.9 28.8-7.8 5.2-12.5 14-12.5 23.3l0 2c0 9.4 4.7 18.1 12.5 23.3zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n  };\n  var faChartArea = {\n    prefix: 'fas',\n    iconName: 'chart-area',\n    icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM240 96c6.7 0 13.1 2.8 17.7 7.8L328.8 181.3 375 135c9.4-9.4 24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17l0 112c0 13.3-10.7 24-24 24l-304 0c-13.3 0-24-10.7-24-24l0-112c0-6 2.3-11.8 6.3-16.2l88-96c4.5-5 11-7.8 17.7-7.8z\"]\n  };\n  var faAreaChart = faChartArea;\n  var faRupiahSign = {\n    prefix: 'fas',\n    iconName: 'rupiah-sign',\n    icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144 0 54.3-30 101.5-74.4 126.1l41 136.7c5.1 16.9-4.5 34.8-21.5 39.8s-34.8-4.5-39.8-21.5L120.1 319.8c-2.7 .1-5.4 .2-8.1 .2l-48 0 0 128c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0 0 160zm256-32l80 0c61.9 0 112 50.1 112 112S461.9 448 400 448l-48 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48l-48 0 0 96 48 0z\"]\n  };\n  var faTextWidth = {\n    prefix: 'fas',\n    iconName: 'text-width',\n    icon: [448, 512, [], \"f035\", \"M40 0C17.9 0 0 17.9 0 40L0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 128 0 0 160-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-160 128 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-56c0-22.1-17.9-40-40-40L40 0zm78.6 406.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 229.5 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4-229.5 0 9.4-9.4z\"]\n  };\n  var faSatellite = {\n    prefix: 'fas',\n    iconName: 'satellite',\n    icon: [512, 512, [128752], \"f7bf\", \"M199 7c9.4-9.4 24.6-9.4 33.9 0l89.4 89.4 55-55c12.5-12.5 32.8-12.5 45.3 0l48 48c12.5 12.5 12.5 32.8 0 45.3l-55 55 89.4 89.4c9.4 9.4 9.4 24.6 0 33.9l-96 96c-9.4 9.4-24.6 9.4-33.9 0l-89.4-89.4-15.5 15.5c11.4 24.6 17.8 52 17.8 80.9 0 31.7-7.7 61.5-21.2 87.8-4.7 9-16.7 10.3-23.8 3.1l-96.3-96.3-60 60c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l60-60-96.3-96.3c-7.2-7.2-5.9-19.2 3.1-23.8 26.3-13.6 56.2-21.2 87.8-21.2 28.9 0 56.3 6.4 80.9 17.8L192.4 226.3 103 137c-9.4-9.4-9.4-24.6 0-33.9L199 7zm17 50.9l-62.1 62.1 72.4 72.4 62.1-62.1-72.4-72.4zM392 358.1l62.1-62.1-72.4-72.4-62.1 62.1 72.4 72.4z\"]\n  };\n  var faMagnifyingGlassMinus = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass-minus',\n    icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faSearchMinus = faMagnifyingGlassMinus;\n  var faPeopleGroup = {\n    prefix: 'fas',\n    iconName: 'people-group',\n    icon: [512, 512, [], \"e533\", \"M256 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm96 312c0 25-12.7 47-32 59.9l0 92.1c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-92.1C172.7 359 160 337 160 312l0-40c0-53 43-96 96-96s96 43 96 96l0 40zM96 32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm16 240l0 32c0 32.5 12.1 62.1 32 84.7l0 75.3c0 1.2 0 2.5 .1 3.7-8.5 7.6-19.7 12.3-32.1 12.3l-32 0c-26.5 0-48-21.5-48-48l0-56.6C12.9 364.4 0 343.7 0 320l0-32c0-53 43-96 96-96 12.7 0 24.8 2.5 35.9 6.9-12.6 21.4-19.9 46.4-19.9 73.1zM368 464l0-75.3c19.9-22.5 32-52.2 32-84.7l0-32c0-26.7-7.3-51.6-19.9-73.1 11.1-4.5 23.2-6.9 35.9-6.9 53 0 96 43 96 96l0 32c0 23.7-12.9 44.4-32 55.4l0 56.6c0 26.5-21.5 48-48 48l-32 0c-12.3 0-23.6-4.6-32.1-12.3 0-1.2 .1-2.5 .1-3.7zM416 32a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n  };\n  var faSquareBinary = {\n    prefix: 'fas',\n    iconName: 'square-binary',\n    icon: [448, 512, [], \"e69b\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm144 4c-24.3 0-44 19.7-44 44l0 48c0 24.3 19.7 44 44 44l32 0c24.3 0 44-19.7 44-44l0-48c0-24.3-19.7-44-44-44l-32 0zm-4 44c0-2.2 1.8-4 4-4l32 0c2.2 0 4 1.8 4 4l0 48c0 2.2-1.8 4-4 4l-32 0c-2.2 0-4-1.8-4-4l0-48zm140-44c-11 0-20 9-20 20 0 9.7 6.9 17.7 16 19.6l0 76.4c0 11 9 20 20 20s20-9 20-20l0-96c0-11-9-20-20-20l-16 0zM132 296c0 9.7 6.9 17.7 16 19.6l0 76.4c0 11 9 20 20 20s20-9 20-20l0-96c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20zm96 24l0 48c0 24.3 19.7 44 44 44l32 0c24.3 0 44-19.7 44-44l0-48c0-24.3-19.7-44-44-44l-32 0c-24.3 0-44 19.7-44 44zm44-4l32 0c2.2 0 4 1.8 4 4l0 48c0 2.2-1.8 4-4 4l-32 0c-2.2 0-4-1.8-4-4l0-48c0-2.2 1.8-4 4-4z\"]\n  };\n  var faMasksTheater = {\n    prefix: 'fas',\n    iconName: 'masks-theater',\n    icon: [576, 512, [127917, \"theater-masks\"], \"f630\", \"M-5 118L23.5 279.7c14 79.5 76.3 141.8 155.8 155.8l12.7 2.2c-16.5-28.6-27.1-60.7-30.6-94.5l-24.1 4.3c-9.7 1.7-18.8-5.8-16.9-15.5 4.8-24.7 19.1-46.6 39.7-60.9l0-74.6c-1.4 .8-3 1.3-4.7 1.6l-63 11.1c-8.7 1.5-17.3-4.4-15.9-13.1 3.1-19.6 18.4-36 39.1-39.7 17.2-3 33.9 3.5 44.6 15.8l0-22.7c0-22.5 6.9-52.4 32.3-73.4 26-21.5 67.7-43.9 124.9-54.2-30.5-16.3-86.3-32-163.8-18.4-80.3 14.2-128 50.1-150.1 76.1-9 10.5-10.8 24.9-8.4 38.5zM208 138.7l0 174.8c0 80.7 50.5 152.9 126.4 180.4L362.1 504c14.1 5.1 29.6 5.1 43.7 0L433.6 494C509.5 466.4 560 394.3 560 313.5l0-174.8c0-6.9-2.1-13.8-7-18.6-22.6-22.5-78.2-56-169-56s-146.4 33.6-169 56c-4.9 4.9-7 11.7-7 18.6zm66.1 187.1c-1.4-7 7-11 12.7-6.6 26.9 20.6 60.6 32.9 97.2 32.9s70.2-12.3 97.2-32.9c5.7-4.4 14.1-.4 12.7 6.6-10.1 51.4-55.5 90.3-109.9 90.3s-99.8-38.8-109.9-90.3zm.5-101.5C281.2 205.5 299 192 320 192s38.9 13.5 45.4 32.3c2.9 8.4-4.5 15.7-13.4 15.7l-64 0c-8.8 0-16.3-7.4-13.4-15.7zM480 240l-64 0c-8.8 0-16.3-7.4-13.4-15.7 6.5-18.8 24.4-32.3 45.4-32.3s38.9 13.5 45.4 32.3c2.9 8.4-4.5 15.7-13.4 15.7z\"]\n  };\n  var faTheaterMasks = faMasksTheater;\n  var faCartPlus = {\n    prefix: 'fas',\n    iconName: 'cart-plus',\n    icon: [640, 512, [], \"f217\", \"M0 8C0-5.3 10.7-16 24-16l45.3 0c27.1 0 50.3 19.4 55.1 46l.4 2 412.7 0c20 0 35.1 18.2 31.4 37.9L537.8 235.8c-5.7 30.3-32.1 52.2-62.9 52.2l-303.6 0 5.1 28.3c2.1 11.4 12 19.7 23.6 19.7L456 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-255.9 0c-34.8 0-64.6-24.9-70.8-59.1L77.2 38.6c-.7-3.8-4-6.6-7.9-6.6L24 32C10.7 32 0 21.3 0 8zM160 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm224 0a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM336 78.4c-13.3 0-24 10.7-24 24l0 33.6-33.6 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l33.6 0 0 33.6c0 13.3 10.7 24 24 24s24-10.7 24-24l0-33.6 33.6 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-33.6 0 0-33.6c0-13.3-10.7-24-24-24z\"]\n  };\n  var faHandsAslInterpreting = {\n    prefix: 'fas',\n    iconName: 'hands-asl-interpreting',\n    icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l80 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7 8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20 8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5l-100.7 27.5 81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4l-101.9 84.9 23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-80 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20 22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.6-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n  };\n  var faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\n  var faAslInterpreting = faHandsAslInterpreting;\n  var faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\n  var faTableCellsRowUnlock = {\n    prefix: 'fas',\n    iconName: 'table-cells-row-unlock',\n    icon: [640, 512, [], \"e691\", \"M256 224l0 192 64 0 0-192-64 0zm256-79c-46.7 5.8-85.6 36.8-102.7 79l-25.3 0 0 90.8c-10.1 15.2-16 33.4-16 53.1l0 96c0 5.5 .5 10.9 1.3 16.1L128 480c-35.3 0-64-28.7-64-64L64 96c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 49zM128 224l0 192 64 0 0-192-64 0zm432 48c-.1-17.6-14.4-31.9-32-31.9-17.7 0-32 14.3-32 32l0 47.9 96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80 44.2 0 79.9 35.8 80 79.9l-48 0z\"]\n  };\n  var faRocket = {\n    prefix: 'fas',\n    iconName: 'rocket',\n    icon: [512, 512, [], \"f135\", \"M128 320L24.5 320c-24.9 0-40.2-27.1-27.4-48.5L50 183.3C58.7 168.8 74.3 160 91.2 160l95 0c76.1-128.9 189.6-135.4 265.5-124.3 12.8 1.9 22.8 11.9 24.6 24.6 11.1 75.9 4.6 189.4-124.3 265.5l0 95c0 16.9-8.8 32.5-23.3 41.2l-88.2 52.9c-21.3 12.8-48.5-2.6-48.5-27.4L192 384c0-35.3-28.7-64-64-64l-.1 0zM400 160a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faShrimp = {\n    prefix: 'fas',\n    iconName: 'shrimp',\n    icon: [512, 512, [129424], \"e448\", \"M72 32C32.2 32 0 64.2 0 104 0 141.9 29.3 172.9 66.4 175.8 77.6 257.2 147.4 320 232 320l56 0 0-192-216 0c-13.3 0-24-10.7-24-24S58.7 80 72 80l384 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L72 32zM224 456c0 13.3 10.7 24 24 24l72 0 0-72.2-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3l0 69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111 0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6 0 4.6-.7 9-1.9 13.1L472.6 415zM336 128l-16 0 0 192 18.3 0c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faTengeSign = {\n    prefix: 'fas',\n    iconName: 'tenge-sign',\n    icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 56C0 42.7 10.7 32 24 32l336 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 80C10.7 80 0 69.3 0 56zM0 160c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0 0 256c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256-128 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faTenge = faTengeSign;\n  var faHouseChimneyMedical = {\n    prefix: 'fas',\n    iconName: 'house-chimney-medical',\n    icon: [512, 512, [\"clinic-medical\"], \"f7f2\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM224 248l0 40-40 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l40 0 0 40c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-40 40 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-40 0 0-40c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faClinicMedical = faHouseChimneyMedical;\n  var faUsersSlash = {\n    prefix: 'fas',\n    iconName: 'users-slash',\n    icon: [640, 512, [], \"e073\", \"M73-24.9c-9.4-9.4-24.6-9.4-33.9 0S29.7-.3 39 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L321.8 224c56.6-1 102.2-47.2 102.2-104 0-57.4-46.6-104-104-104-56.8 0-103 45.6-104 102.2L73-24.9zM512 288c-17.2 0-33.7 3.4-48.7 9.6l170 170c4.2-5.4 6.7-12.2 6.7-19.6l0-32c0-70.7-57.3-128-128-128zM59.9 97.7c-21.5 12.5-35.9 35.7-35.9 62.3 0 39.8 32.2 72 72 72 26.6 0 49.8-14.4 62.3-35.9L59.9 97.7zM250.2 288C196.8 313.9 160 368.7 160 432l0 16c0 17.7 14.3 32 32 32l250.2 0-192-192zM128 288C57.3 288 0 345.3 0 416l0 32c0 17.7 14.3 32 32 32l86.7 0c-4.3-9.8-6.7-20.6-6.7-32l0-16c0-53.2 20-101.8 52.9-138.6-11.7-3.5-24.1-5.4-36.9-5.4zM616 160a72 72 0 1 0 -144 0 72 72 0 1 0 144 0z\"]\n  };\n  var faPaperPlane = {\n    prefix: 'fas',\n    iconName: 'paper-plane',\n    icon: [576, 512, [61913], \"f1d8\", \"M536.4-26.3c9.8-3.5 20.6-1 28 6.3s9.8 18.2 6.3 28l-178 496.9c-5 13.9-18.1 23.1-32.8 23.1-14.2 0-27-8.6-32.3-21.7l-64.2-158c-4.5-11-2.5-23.6 5.2-32.6l94.5-112.4c5.1-6.1 4.7-15-.9-20.6s-14.6-6-20.6-.9L229.2 276.1c-9.1 7.6-21.6 9.6-32.6 5.2L38.1 216.8c-13.1-5.3-21.7-18.1-21.7-32.3 0-14.7 9.2-27.8 23.1-32.8l496.9-178z\"]\n  };\n  var faBookAtlas = {\n    prefix: 'fas',\n    iconName: 'book-atlas',\n    icon: [448, 512, [\"atlas\"], \"f558\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM310.6 208L279 208c-1.4 23.1-6 44.2-12.6 61.2 22.7-12.5 39.4-34.8 44.2-61.2zm-173.1 0c4.8 26.4 21.5 48.7 44.2 61.2-6.7-17-11.2-38-12.6-61.2l-31.6 0zm76.4 55c4.5 9.6 8.2 13.8 10.2 15.5 2-1.7 5.7-5.8 10.2-15.5 6.2-13.4 11.1-32.5 12.7-55l-45.8 0c1.6 22.5 6.5 41.6 12.7 55zm-12.7-87l45.8 0c-1.6-22.5-6.5-41.6-12.7-55-4.5-9.6-8.2-13.8-10.2-15.5-2 1.7-5.7 5.8-10.2 15.5-6.2 13.4-11.1 32.5-12.7 55zm109.5 0c-4.8-26.4-21.5-48.7-44.2-61.2 6.7 17 11.2 38 12.6 61.2l31.6 0zM169 176c1.4-23.1 6-44.2 12.6-61.2-22.7 12.5-39.4 34.8-44.2 61.2l31.6 0zM96 192a128 128 0 1 1 256 0 128 128 0 1 1 -256 0z\"]\n  };\n  var faAtlas = faBookAtlas;\n  var faTable = {\n    prefix: 'fas',\n    iconName: 'table',\n    icon: [448, 512, [], \"f0ce\", \"M256 160l0 96 128 0 0-96-128 0zm-64 0l-128 0 0 96 128 0 0-96zM0 320L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-96zm384 0l-128 0 0 96 128 0 0-96zM192 416l0-96-128 0 0 96 128 0z\"]\n  };\n  var faHeart = {\n    prefix: 'fas',\n    iconName: 'heart',\n    icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 112.2-139.9 242.5-212.9 298.2-12.4 9.4-27.6 14.1-43.1 14.1s-30.8-4.6-43.1-14.1C139.9 410.2 0 279.9 0 167.7l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1z\"]\n  };\n  var faCircleChevronUp = {\n    prefix: 'fas',\n    iconName: 'circle-chevron-up',\n    icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n  };\n  var faChevronCircleUp = faCircleChevronUp;\n  var faBatteryHalf = {\n    prefix: 'fas',\n    iconName: 'battery-half',\n    icon: [640, 512, [\"battery-3\"], \"f242\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-144 0z\"]\n  };\n  var faBattery3 = faBatteryHalf;\n  var faFontAwesome = {\n    prefix: 'fas',\n    iconName: 'font-awesome',\n    icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52 116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 419 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4 0-3.7-.8-7.3-2.3-10.7L432 272 493.7 133.1c1.5-3.4 2.3-7 2.3-10.7 0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"]\n  };\n  var faFontAwesomeFlag = faFontAwesome;\n  var faFontAwesomeLogoFull = faFontAwesome;\n  var faHandcuffs = {\n    prefix: 'fas',\n    iconName: 'handcuffs',\n    icon: [576, 512, [], \"e4f8\", \"M320-32c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zM192 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM152 96c-13.3 0-24 10.7-24 24l0 16c0 1 .1 1.9 .2 2.9-74.7 26.3-128.2 97.5-128.2 181.1 0 106 86 192 192 192s192-86 192-192c0-83.7-53.5-154.8-128.2-181.1 .1-.9 .2-1.9 .2-2.9l0-16c0-13.3-10.7-24-24-24l-80 0zM64 320a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zm448 0c0 66.9-51.3 121.8-116.6 127.5-14.3 22.8-32.4 43.1-53.4 59.9 13.5 3 27.6 4.6 42 4.6 106 0 192-86 192-192 0-83.7-53.5-154.8-128.2-181.1 .1-.9 .2-1.9 .2-2.9l0-16c0-13.3-10.7-24-24-24l-80 0c-12.3 0-22.4 9.2-23.8 21.1 30.3 19.2 56.1 45 75.2 75.4 65.4 5.8 116.6 60.6 116.6 127.5zM384 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faHatCowboySide = {\n    prefix: 'fas',\n    iconName: 'hat-cowboy-side',\n    icon: [640, 512, [], \"f8c1\", \"M640 388.3c0 16.9-7.1 32.2-18.4 43.1l-35-23.3-292.7-195.1c-36.1-24.1-78.6-36.9-122-36.9l-3.9 0c-2.7 0-5.4 0-8 .1l22.2-100c5.7-25.8 28.6-44.1 55-44.1 12.2 0 24.1 4 33.8 11.3l4.7 3.5c26.3 19.7 62.4 19.7 88.6 0l4.7-3.5c9.8-7.3 21.6-11.3 33.8-11.3 26.4 0 49.3 18.3 55 44.1l33 148.5C574.5 232.3 640 302.6 640 388.3zM171.9 224c33.9 0 67.1 10 95.4 28.9L560 448 56 448c-30.9 0-56-25.1-56-56 0-92.8 75.2-168 168-168l3.9 0z\"]\n  };\n  var faIndustry = {\n    prefix: 'fas',\n    iconName: 'industry',\n    icon: [512, 512, [], \"f275\", \"M32 32C14.3 32 0 46.3 0 64L0 432c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-279.8c0-18.2-19.4-29.7-35.4-21.1l-156.6 84.3 0-63.2c0-18.2-19.4-29.7-35.4-21.1L128 215.4 128 64c0-17.7-14.3-32-32-32L32 32z\"]\n  };\n  var faLinesLeaning = {\n    prefix: 'fas',\n    iconName: 'lines-leaning',\n    icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32z\"]\n  };\n  var faPassport = {\n    prefix: 'fas',\n    iconName: 'passport',\n    icon: [384, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM96 408c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0c-13.3 0-24 10.7-24 24zM278.6 208c-4.8 26.4-21.5 48.7-44.2 61.2 6.7-17 11.2-38 12.6-61.2l31.6 0zm-173.1 0l31.6 0c1.4 23.1 6 44.2 12.6 61.2-22.7-12.5-39.4-34.8-44.2-61.2zm76.4 55c-6.2-13.4-11.1-32.5-12.7-55l45.8 0c-1.6 22.5-6.5 41.6-12.7 55-4.5 9.6-8.2 13.8-10.2 15.5-2-1.7-5.7-5.8-10.2-15.5zm0-142c4.5-9.6 8.2-13.8 10.2-15.5 2 1.7 5.7 5.8 10.2 15.5 6.2 13.4 11.1 32.5 12.7 55l-45.8 0c1.6-22.5 6.5-41.6 12.7-55zm96.7 55L247 176c-1.4-23.1-6-44.2-12.6-61.2 22.7 12.5 39.4 34.8 44.2 61.2zM137 176l-31.6 0c4.8-26.4 21.5-48.7 44.2-61.2-6.7 17-11.2 38-12.6 61.2zm183 16a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n  };\n  var faInfinity = {\n    prefix: 'fas',\n    iconName: 'infinity',\n    icon: [640, 512, [8734, 9854], \"f534\", \"M0 256c0-88.4 71.6-160 160-160 50.4 0 97.8 23.7 128 64l32 42.7 32-42.7c30.2-40.3 77.6-64 128-64 88.4 0 160 71.6 160 160S568.4 416 480 416c-50.4 0-97.8-23.7-128-64l-32-42.7-32 42.7c-30.2 40.3-77.6 64-128 64-88.4 0-160-71.6-160-160zm280 0l-43.2-57.6c-18.1-24.2-46.6-38.4-76.8-38.4-53 0-96 43-96 96s43 96 96 96c30.2 0 58.7-14.2 76.8-38.4L280 256zm80 0l43.2 57.6c18.1 24.2 46.6 38.4 76.8 38.4 53 0 96-43 96-96s-43-96-96-96c-30.2 0-58.7 14.2-76.8 38.4L360 256z\"]\n  };\n  var faClone = {\n    prefix: 'fas',\n    iconName: 'clone',\n    icon: [512, 512, [], \"f24d\", \"M288 448l-224 0 0-224 48 0 0-64-48 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-48-64 0 0 48zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z\"]\n  };\n  var faForward = {\n    prefix: 'fas',\n    iconName: 'forward',\n    icon: [576, 512, [9193], \"f04e\", \"M371.7 43.1C360.1 32 343 28.9 328.3 35.2S304 56 304 72l0 136.3-172.3-165.1C120.1 32 103 28.9 88.3 35.2S64 56 64 72l0 368c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9L304 303.7 304 440c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9l192-184c7.9-7.5 12.3-18 12.3-28.9s-4.5-21.3-12.3-28.9l-192-184z\"]\n  };\n  var faM = {\n    prefix: 'fas',\n    iconName: 'm',\n    icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.3c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-278.3-133.4 200.1c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7 64 448c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 49.9 9.2 37.5 22.7 33.4z\"]\n  };\n  var faRoadSpikes = {\n    prefix: 'fas',\n    iconName: 'road-spikes',\n    icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9l98.7 148 0-139.2c0-15.8 20.5-22 29.3-8.9l98.7 148 0-139.2c0-15.8 20.5-22 29.3-8.9l98.7 148 0-139.2c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.8-26.6 49.8L64 352 64 116.8zM32 384l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faMountain = {\n    prefix: 'fas',\n    iconName: 'mountain',\n    icon: [512, 512, [127956], \"f6fc\", \"M256.5 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5-7.2 12.1-20.3 19.5-34.3 19.5l-432 0c-14.1 0-27.1-7.4-34.3-19.5s-7.5-27.1-.8-39.5l216-400 2.9-4.6C231.7 6.2 243.6 0 256.5 0zM170.4 249.9l26.8 26.8c6.2 6.2 16.4 6.2 22.6 0l43.3-43.3c6-6 14.1-9.4 22.6-9.4l42.8 0-72.1-133.5-86.1 159.4z\"]\n  };\n  var faChess = {\n    prefix: 'fas',\n    iconName: 'chess',\n    icon: [512, 512, [], \"f439\", \"M168 56l0 40-78.1 0c-14.3 0-25.9 11.6-25.9 25.9 0 4 .9 8 2.7 11.6l33.4 66.8c-11.4 1.8-20.2 11.7-20.2 23.7 0 13.3 10.7 24 24 24l5.6 0-13.6 136-56.2 70.3c-5 6.3-7.8 14.1-7.8 22.2 0 19.6 15.9 35.5 35.5 35.5l248.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2L288 384 274.4 248 280 248c13.3 0 24-10.7 24-24 0-11.9-8.7-21.9-20.2-23.7l33.4-66.8c1.8-3.6 2.7-7.6 2.7-11.6 0-14.3-11.6-25.9-25.9-25.9l-78.1 0 0-40 16 0c13.3 0 24-10.7 24-24S245.3 8 232 8l-16 0 0-16c0-13.3-10.7-24-24-24S168-21.3 168-8l0 16-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0zM325.8 279.6l8.5 85.5 47.4 59.2 4.2 5.7c9.2 13.7 14.1 29.9 14.1 46.5 0 12.7-2.8 24.8-7.9 35.5l83.1 0c20.3 0 36.8-16.5 36.8-36.8 0-7.3-2.2-14.4-6.2-20.4l-25.8-38.7 0-64 13.3-13.3c12-12 18.7-28.3 18.7-45.3L512 192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 16-32 0 0-16c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32c0 22.4-10.2 42.4-26.2 55.6z\"]\n  };\n  var faTemperatureThreeQuarters = {\n    prefix: 'fas',\n    iconName: 'temperature-three-quarters',\n    icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3L136 152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 156.7c23.5 9.5 40 32.5 40 59.3z\"]\n  };\n  var faTemperature3 = faTemperatureThreeQuarters;\n  var faThermometer3 = faTemperatureThreeQuarters;\n  var faThermometerThreeQuarters = faTemperatureThreeQuarters;\n  var faB = {\n    prefix: 'fas',\n    iconName: 'b',\n    icon: [320, 512, [98], \"42\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32l160 0c70.7 0 128-57.3 128-128 0-46.5-24.8-87.3-62-109.7 18.7-22.3 30-51 30-82.3 0-70.7-57.3-128-128-128L32 32zM160 224l-96 0 0-128 96 0c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288l128 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-128 0 0-128z\"]\n  };\n  var faShieldVirus = {\n    prefix: 'fas',\n    iconName: 'shield-virus',\n    icon: [512, 512, [], \"e06c\", \"M253.4 2.9C249.2 1 244.7 0 240 0s-9.2 1-13.4 2.9L38.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L253.4 2.9zM240 128c13.3 0 24 10.7 24 24 0 22.9 27.7 34.4 43.9 18.2 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-16.2 16.2-4.7 43.9 18.2 43.9 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.9 0-34.4 27.7-18.2 43.9 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-16.2-16.2-43.9-4.7-43.9 18.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-22.9-27.7-34.4-43.9-18.2-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c16.2-16.2 4.7-43.9-18.2-43.9-13.3 0-24-10.7-24-24s10.7-24 24-24c22.9 0 34.4-27.7 18.2-43.9-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16.2 16.2 43.9 4.7 43.9-18.2 0-13.3 10.7-24 24-24zM208 264a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faLitecoinSign = {\n    prefix: 'fas',\n    iconName: 'litecoin-sign',\n    icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 157.9-38.6 11c-12.7 3.6-20.1 16.9-16.5 29.7s16.9 20.1 29.7 16.5L64 271.8 64 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-162.5 134.6-38.5c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5L128 203.6 128 64z\"]\n  };\n  var faDiceD6 = {\n    prefix: 'fas',\n    iconName: 'dice-d6',\n    icon: [512, 512, [], \"f6d1\", \"M224.4 8.3C244-2.8 268-2.8 287.6 8.3l176 99.7c20 11.4 32.4 32.6 32.4 55.7l0 197.4c0 23-12.4 44.3-32.4 55.7l-176 99.7c-19.6 11.1-43.6 11.1-63.1 0l-176-99.7C28.4 405.5 16 384.2 16 361.2l0-197.4c0-23 12.4-44.3 32.4-55.7l176-99.7zM102.6 155.6c-8.8-3.1-18.8 .3-23.8 8.6s-3.2 18.7 3.6 25l3.2 2.4 150.2 90.2 0 148.7c0 11 9 20 20 20 11 0 20-9 20-20l0-148.7 150.3-90.2c9.5-5.7 12.6-18 6.9-27.4s-18-12.5-27.4-6.9l-149.7 89.8-149.7-89.8-3.7-1.7z\"]\n  };\n  var faGripLinesVertical = {\n    prefix: 'fas',\n    iconName: 'grip-lines-vertical',\n    icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384z\"]\n  };\n  var faGolfBallTee = {\n    prefix: 'fas',\n    iconName: 'golf-ball-tee',\n    icon: [384, 512, [\"golf-ball\"], \"f450\", \"M298.5 384.1c12.1 1.2 21.5 11.5 21.5 23.9s-9.4 22.6-21.5 23.9l-2.5 .1-80 0 0 88c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-88-80 0c-13.3 0-24-10.7-24-24 0-12.4 9.4-22.6 21.5-23.9l2.5-.1 208 0 2.5 .1zM192 0c106 0 192 86 192 192 0 57.4-25.2 108.8-65.1 144L65.1 336C25.2 300.8 0 249.4 0 192 0 86 86 0 192 0zm32 240c-7.7 0-14.2 5.5-15.7 12.8l-.6 6.4c-1.3 6.3-6.2 11.2-12.5 12.5l-6.4 .6c-7.3 1.5-12.8 8-12.8 15.7 0 8.8 7.2 16 16 16 26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm64-64c-7.7 0-14.2 5.5-15.7 12.8l-.6 6.4c-1.3 6.3-6.2 11.2-12.5 12.5l-6.4 .6c-7.3 1.5-12.8 8-12.8 15.7 0 8.8 7.2 16 16 16 26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-80-16c-7.7 0-14.2 5.5-15.7 12.8l-.6 6.4c-1.3 6.3-6.2 11.2-12.5 12.5l-6.4 .6c-7.3 1.5-12.8 8-12.8 15.7 0 8.8 7.2 16 16 16 26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16z\"]\n  };\n  var faGolfBall = faGolfBallTee;\n  var faHexagon = {\n    prefix: 'fas',\n    iconName: 'hexagon',\n    icon: [576, 512, [11043], \"f312\", \"M33.5 220.3c-12.7 22.2-12.7 49.4 0 71.5l96.2 168.1c12.8 22.4 36.7 36.2 62.5 36.2l191.6 0c25.8 0 49.7-13.8 62.5-36.2l96.2-168.1c12.7-22.2 12.7-49.4 0-71.5L446.3 52.2C433.5 29.8 409.6 16 383.8 16L192.2 16c-25.8 0-49.7 13.8-62.5 36.2L33.5 220.3z\"]\n  };\n  var faFolderOpen = {\n    prefix: 'fas',\n    iconName: 'folder-open',\n    icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M56 225.6L32.4 296.2 32.4 96c0-35.3 28.7-64 64-64l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4l117.3 0c35.3 0 64 28.7 64 64l0 16-365.4 0c-41.3 0-78 26.4-91.1 65.6zM477.8 448L99 448c-32.8 0-55.9-32.1-45.5-63.2l48-144C108 221.2 126.4 208 147 208l378.8 0c32.8 0 55.9 32.1 45.5 63.2l-48 144c-6.5 19.6-24.9 32.8-45.5 32.8z\"]\n  };\n  var faKaaba = {\n    prefix: 'fas',\n    iconName: 'kaaba',\n    icon: [512, 512, [128331], \"f66b\", \"M256 51.3L92.8 112.4 247.5 171.1c5.5 2.1 11.5 2.1 17 0L419.2 112.4 256 51.3zM0 129.3c0-20 12.4-37.9 31.1-44.9l208-78c10.9-4.1 22.8-4.1 33.7 0l208 78c18.7 7 31.1 24.9 31.1 44.9l0 36-253.2 96c-1.8 .7-3.8 .7-5.7 0l-253.2-96 0-36zm0 140l0-52.7 236.1 89.6c12.8 4.9 26.9 4.9 39.7 0l236.1-89.6 0 52.7-128 48.6 0 51.3 128-48.6 0 62.2c0 20-12.4 37.9-31.1 44.9l-208 78c-10.9 4.1-22.8 4.1-33.7 0l-208-78C12.4 420.7 0 402.7 0 382.7l0-62.2 128 48.6 0-51.3-128-48.6zM236.1 410.1c12.8 4.9 26.9 4.9 39.7 0l60.1-22.8 0-51.3-77.2 29.3c-1.8 .7-3.8 .7-5.7 0l-77.2-29.3 0 51.3 60.1 22.8z\"]\n  };\n  var faHandHolding = {\n    prefix: 'fas',\n    iconName: 'hand-holding',\n    icon: [576, 512, [], \"f4bd\", \"M66.7 384l42.5-42.5c24-24 56.6-37.5 90.5-37.5L352 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5s9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l34.7 0z\"]\n  };\n  var faSingleQuoteRight = {\n    prefix: 'fas',\n    iconName: 'single-quote-right',\n    icon: [192, 512, [], \"e81c\", \"M64 416c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 136c0 66.3-53.7 120-120 120l-8 0z\"]\n  };\n  var faBottleDroplet = {\n    prefix: 'fas',\n    iconName: 'bottle-droplet',\n    icon: [320, 512, [], \"e4c4\", \"M80 0c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 103.3c64.9 20.4 112 81 112 152.7l0 192c0 35.3-28.7 64-64 64L64 544c-35.3 0-64-28.7-64-64L0 288c0-71.6 47.1-132.3 112-152.7L112 32C94.3 32 80 17.7 80 0zm80 416c35.3 0 64-32.4 64-64 0-21.2-28.9-64.5-47.9-90.6-8.1-11.1-24.2-11.1-32.3 0-19 26.1-47.9 69.4-47.9 90.6 0 31.6 28.7 64 64 64z\"]\n  };\n  var faWindowMinimize = {\n    prefix: 'fas',\n    iconName: 'window-minimize',\n    icon: [512, 512, [128469], \"f2d1\", \"M0 416c0-17.7 14.3-32 32-32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faChevronRight = {\n    prefix: 'fas',\n    iconName: 'chevron-right',\n    icon: [320, 512, [9002], \"f054\", \"M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n  };\n  var faEgg = {\n    prefix: 'fas',\n    iconName: 'egg',\n    icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288 0 176 64 16 192 16S384 176 384 288c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2-11.2 31.6-16.9 65.1-16.9 93.5 0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8 10.1-28.5 25-54.1 43.7-71.2z\"]\n  };\n  var faLandmarkDome = {\n    prefix: 'fas',\n    iconName: 'landmark-dome',\n    icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M256 0c-17.7 0-32 14.3-32 32 0 .9 0 1.8 .1 2.6-80.5 13.4-144 76.9-157.5 157.4L64 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 160-51.2 38.4C4.7 460.4 0 469.9 0 480 0 497.7 14.3 512 32 512l448 0c17.7 0 32-14.3 32-32 0-10.1-4.7-19.6-12.8-25.6L448 416 448 256c17.7 0 32-14.3 32-32s-14.3-32-32-32l-2.7 0c-13.5-80.4-77-143.9-157.5-157.4 .1-.9 .1-1.7 .1-2.6 0-17.7-14.3-32-32-32zm80 256l64 0 0 160-64 0 0-160zM224 416l0-160 64 0 0 160-64 0zM112 256l64 0 0 160-64 0 0-160z\"]\n  };\n  var faLandmarkAlt = faLandmarkDome;\n  var faWorm = {\n    prefix: 'fas',\n    iconName: 'worm',\n    icon: [448, 512, [], \"e599\", \"M224 96c0-53 43-96 96-96l38.4 0C407.9 0 448 40.1 448 89.6L448 376c0 75.1-60.9 136-136 136S176 451.1 176 376l0-80c0-22.1-17.9-40-40-40s-40 17.9-40 40l0 168c0 26.5-21.5 48-48 48S0 490.5 0 464L0 296c0-75.1 60.9-136 136-136s136 60.9 136 136l0 80c0 22.1 17.9 40 40 40s40-17.9 40-40l0-184-32 0c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faUserInjured = {\n    prefix: 'fas',\n    iconName: 'user-injured',\n    icon: [448, 512, [], \"f728\", \"M242.7 80L334 80c-10.7-24.6-29.5-44.9-52.9-57.6L242.7 80zm-.9-70.7C236 8.4 230 8 224 8 174.8 8 132.5 37.6 114 80l80.6 0 47.1-70.7zM224 248c66.3 0 120-53.7 120-120l-240 0c0 66.3 53.7 120 120 120zM98.7 341.8C49.3 370.2 16 423.5 16 484.6 16 499.7 28.3 512 43.4 512l151 0-95.8-170.2zm45.1-17.7l42.7 75.9 85.5 0c44.2 0 80 35.8 80 80 0 11.4-2.4 22.2-6.7 32l59.2 0c15.1 0 27.4-12.3 27.4-27.4 0-90.9-73.7-164.6-164.6-164.6l-86.9 0c-12.6 0-24.9 1.4-36.7 4.1zM213.5 448l36 64 22.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-58.5 0z\"]\n  };\n  var faStrikethrough = {\n    prefix: 'fas',\n    iconName: 'strikethrough',\n    icon: [512, 512, [], \"f0cc\", \"M96 157.5C96 88.2 152.2 32 221.5 32L368 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L221.5 96c-34 0-61.5 27.5-61.5 61.5 0 31 23.1 57.2 53.9 61l44.1 5.5 222 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l83.1 0C103 204.6 96 181.8 96 157.5zM349.2 336l65.5 0c.9 6.1 1.4 12.2 1.4 18.5 0 69.3-56.2 125.5-125.5 125.5L144 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l146.5 0c34 0 61.5-27.5 61.5-61.5 0-6.4-1-12.7-2.8-18.5z\"]\n  };\n  var faBlog = {\n    prefix: 'fas',\n    iconName: 'blog',\n    icon: [512, 512, [], \"f781\", \"M224 24c0-13.3 10.7-24 24-24 145.8 0 264 118.2 264 264 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-119.3-96.7-216-216-216-13.3 0-24-10.7-24-24zM80 96c26.5 0 48 21.5 48 48l0 224c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16 79.5 0 144 64.5 144 144S255.5 512 176 512 32 447.5 32 368l0-224c0-26.5 21.5-48 48-48zm168 0c92.8 0 168 75.2 168 168 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-66.3-53.7-120-120-120-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faStopwatch20 = {\n    prefix: 'fas',\n    iconName: 'stopwatch-20',\n    icon: [448, 512, [], \"e06f\", \"M168.5 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 25.3c-108 11.9-192 103.5-192 214.7 0 119.3 96.7 216 216 216s216-96.7 216-216c0-39.8-10.8-77.1-29.6-109.2l28.2-28.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-23.4 23.4c-32.9-30.2-75.2-50.3-122-55.5l0-25.3 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0zm-60 240c0-28.7 23.3-52 52-52s52 23.3 52 52l0 3.8c0 11.7-3.2 23.1-9.3 33l-43.8 71.2 33.1 0c11 0 20 9 20 20s-9 20-20 20l-57.8 0c-14.5 0-26.2-11.7-26.2-26.2 0-4.9 1.3-9.6 3.9-13.8l56.7-92.1c2.2-3.6 3.4-7.8 3.4-12.1l0-3.8c0-6.6-5.4-12-12-12s-12 5.4-12 12c0 11-9 20-20 20s-20-9-20-20zm180-52c28.7 0 52 23.3 52 52l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-28.7 23.3-52 52-52zm-12 52l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-6.6-5.4-12-12-12s-12 5.4-12 12z\"]\n  };\n  var faTruckPickup = {\n    prefix: 'fas',\n    iconName: 'truck-pickup',\n    icon: [640, 512, [128763], \"f63c\", \"M363.8 96l57.6 96-133.4 0 0-96 75.8 0zM496 192L418.6 63.1C407.1 43.8 386.2 32 363.8 32L256 32c-17.7 0-32 14.3-32 32l0 128-144 0c-26.5 0-48 21.5-48 48l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32.4 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l160.7 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l32.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-80c0-26.5-21.5-48-48-48l-64 0zM112 392a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zm376-40a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n  };\n  var faSeedling = {\n    prefix: 'fas',\n    iconName: 'seedling',\n    icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32C512 140.1 435.4 230.3 333.6 251.4 325.7 193.3 299.6 141 261.1 100.5 301.2 40 369.9 0 448 0l32 0c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64l32 0c123.7 0 224 100.3 224 224l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160C100.3 320 0 219.7 0 96z\"]\n  };\n  var faSprout = faSeedling;\n  var faTransgender = {\n    prefix: 'fas',\n    iconName: 'transgender',\n    icon: [576, 512, [9895, \"transgender-alt\"], \"f225\", \"M128-32c17.7 0 32 14.3 32 32s-14.3 32-32 32L97.9 32 136 70.1 151 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-15 15 14.2 14.2c27.9-23.8 64.2-38.2 103.8-38.2 36.7 0 70.6 12.4 97.6 33.2L466.7 32 448 32c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7-84.4 84.4c13 23.1 20.4 49.9 20.4 78.3 0 77.4-55 142-128 156.8l0 35.2 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-35.2c-73-14.8-128-79.4-128-156.8 0-31.4 9-60.7 24.7-85.4l-16.7-16.7-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l15-15-38.1-38.1 0 30.1c0 17.7-14.3 32-32 32S0 113.7 0 96L0 0C0-17.7 14.3-32 32-32l96 0zM288 336a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n  };\n  var faTransgenderAlt = faTransgender;\n  var faStarHalf = {\n    prefix: 'fas',\n    iconName: 'star-half',\n    icon: [576, 512, [61731], \"f089\", \"M304.1 7.6c0-11.1-7.6-20.7-18.4-23.3s-21.9 2.5-27 12.4L193.1 125.3 33.2 150.7c-8.9 1.4-16.3 7.7-19.1 16.3s-.5 18 5.8 24.4l114.4 114.5-25.2 159.9c-1.4 8.9 2.3 17.9 9.6 23.2s16.9 6.1 25 2L291 416.1c8-4.1 13.1-12.4 13.1-21.4l0-387.1z\"]\n  };\n  var faPhotoFilm = {\n    prefix: 'fas',\n    iconName: 'photo-film',\n    icon: [640, 512, [\"photo-video\"], \"f87c\", \"M192 64c0-35.3 28.7-64 64-64L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224zM320 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm156.5 11.5C472.1 100.4 464.4 96 456 96s-16.1 4.4-20.5 11.5l-54 88.3-17.9-25.6c-4.5-6.4-11.8-10.2-19.7-10.2s-15.2 3.8-19.7 10.2l-56 80c-5.1 7.3-5.8 16.9-1.6 24.8S279.1 288 288 288l256 0c8.7 0 16.7-4.7 20.9-12.3s4.1-16.8-.5-24.3l-88-144zM144 128l0 160c0 61.9 50.1 112 112 112l192 0 0 16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64l80 0zM52 196l0 24c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-24 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 24c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-24 0zm0 96c-8.8 0-16 7.2-16 16l0 24c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-24 0z\"]\n  };\n  var faPhotoVideo = faPhotoFilm;\n  var faPumpMedical = {\n    prefix: 'fas',\n    iconName: 'pump-medical',\n    icon: [320, 512, [], \"e06a\", \"M96 0l0 80 128 0 0-24 72 0c13.3 0 24-10.7 24-24S309.3 8 296 8l-72 0 0-8c0-17.7-14.3-32-32-32l-64 0C110.3-32 96-17.7 96 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm64 120c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faFire = {\n    prefix: 'fas',\n    iconName: 'fire',\n    icon: [448, 512, [128293], \"f06d\", \"M160.5-26.4c9.3-7.8 23-7.5 31.9 .9 12.3 11.6 23.3 24.4 33.9 37.4 13.5 16.5 29.7 38.3 45.3 64.2 5.2-6.8 10-12.8 14.2-17.9 1.1-1.3 2.2-2.7 3.3-4.1 7.9-9.8 17.7-22.1 30.8-22.1 13.4 0 22.8 11.9 30.8 22.1 1.3 1.7 2.6 3.3 3.9 4.8 10.3 12.4 24 30.3 37.7 52.4 27.2 43.9 55.6 106.4 55.6 176.6 0 123.7-100.3 224-224 224S0 411.7 0 288c0-91.1 41.1-170 80.5-225 19.9-27.7 39.7-49.9 54.6-65.1 8.2-8.4 16.5-16.7 25.5-24.2zM225.7 416c25.3 0 47.7-7 68.8-21 42.1-29.4 53.4-88.2 28.1-134.4-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5-17.3-22.1-49.1-62.4-65.3-83-5.4-6.9-15.2-8-21.5-1.9-18.3 17.8-51.5 56.8-51.5 104.3 0 68.6 50.6 109.2 113.7 109.2z\"]\n  };\n  var faMagnifyingGlassPlus = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass-plus',\n    icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 112c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n  };\n  var faSearchPlus = faMagnifyingGlassPlus;\n  var faFlask = {\n    prefix: 'fas',\n    iconName: 'flask',\n    icon: [448, 512, [], \"f0c3\", \"M288 0L128 0C110.3 0 96 14.3 96 32s14.3 32 32 32L128 215.5 7.5 426.3C2.6 435 0 444.7 0 454.7 0 486.4 25.6 512 57.3 512l333.4 0c31.6 0 57.3-25.6 57.3-57.3 0-10-2.6-19.8-7.5-28.4L320 215.5 320 64c17.7 0 32-14.3 32-32S337.7 0 320 0L288 0zM192 215.5l0-151.5 64 0 0 151.5c0 11.1 2.9 22.1 8.4 31.8l41.6 72.7-164 0 41.6-72.7c5.5-9.7 8.4-20.6 8.4-31.8z\"]\n  };\n  var faAlignRight = {\n    prefix: 'fas',\n    iconName: 'align-right',\n    icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n  };\n  var faCableCar = {\n    prefix: 'fas',\n    iconName: 'cable-car',\n    icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 24a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64l136 0 0-96.2-193.4 55.3c-12.7 3.6-26-3.7-29.7-16.5s3.7-26 16.5-29.7l224-64 0 0 224-64c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-206.6 59 0 109.9 136 0c35.3 0 64 28.7 64 64l0 160c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-160zm80 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l56 0 0-96-56 0zm184 96l0-96-80 0 0 96 80 0zm48 0l56 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-56 0 0 96z\"]\n  };\n  var faTram = faCableCar;\n  var faKitMedical = {\n    prefix: 'fas',\n    iconName: 'kit-medical',\n    icon: [512, 512, [\"first-aid\"], \"f479\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l16 0 0-384-16 0zm64 0l0 384 256 0 0-384-256 0zM448 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-16 0 0 384 16 0zM224 184c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faFirstAid = faKitMedical;\n  var faGripLines = {\n    prefix: 'fas',\n    iconName: 'grip-lines',\n    icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n  };\n  var faBurger = {\n    prefix: 'fas',\n    iconName: 'burger',\n    icon: [512, 512, [\"hamburger\"], \"f805\", \"M48 384c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l288 0c44.2 0 80-35.8 80-80 0-8.8-7.2-16-16-16L48 384zM32 202c0 12.2 9.9 22 22 22L458 224c12.2 0 22-9.9 22-22 0-17.2-2.6-34.4-10.8-49.5-22.2-40.8-82.3-120.5-213.2-120.5S65 111.6 42.8 152.5C34.6 167.6 32 184.8 32 202zM0 304c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 272c-17.7 0-32 14.3-32 32zM256 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM120 128a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm248-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faHamburger = faBurger;\n  var faSnowman = {\n    prefix: 'fas',\n    iconName: 'snowman',\n    icon: [640, 512, [9731, 9924], \"f7d0\", \"M403 211.7c32.2-24.9 53-63.9 53-107.7 0-75.1-60.9-136-136-136S184 28.9 184 104c0 43.9 20.8 82.9 53 107.7-32.2 16.3-59 41.8-76.8 73.1L112 264.2 112 224c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 19.6-22.5-9.7c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5c36.1 15.5 75.9 32.5 119.4 51.2-3.9 14.9-6 30.6-6 46.7 0 70 39.1 130.8 96.6 161.9 7.9 4.3 16.9 6.1 25.9 6.1l123 0c9 0 18-1.8 25.9-6.1 57.5-31.1 96.6-92 96.6-161.9 0-16.2-2.1-31.8-6-46.7 43.5-18.7 83.4-35.7 119.4-51.2 12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6l-22.5 9.7 0-19.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40.2-48.2 20.6c-17.9-31.3-44.6-56.8-76.8-73.1zM296 416a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm24-120a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM292.2 159.3c-2.7-4.8-4.2-10.2-4.2-15.7 0-17.5 14.2-31.6 31.6-31.6l.8 0c17.5 0 31.6 14.2 31.6 31.6 0 5.5-1.4 10.9-4.2 15.7L327 195.8c-3.1 5.4-10.8 5.4-13.9 0l-20.9-36.6z\"]\n  };\n  var faHotel = {\n    prefix: 'fas',\n    iconName: 'hotel',\n    icon: [512, 512, [127976], \"f594\", \"M16 24C16 10.7 26.7 0 40 0L472 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 416 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L40 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-416-8 0C26.7 48 16 37.3 16 24zm208 88l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM128 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm96 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM352 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM112 208l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm240-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM288 384l43.8 0c9.9 0 17.5-9 14-18.2-13.8-36.1-48.8-61.8-89.7-61.8s-75.9 25.7-89.7 61.8c-3.5 9.2 4.1 18.2 14 18.2l43.8 0 0 80 64 0 0-80z\"]\n  };\n  var faPrint = {\n    prefix: 'fas',\n    iconName: 'print',\n    icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M64 64C64 28.7 92.7 0 128 0L341.5 0c17 0 33.3 6.7 45.3 18.7l42.5 42.5c12 12 18.7 28.3 18.7 45.3l0 37.5-384 0 0-80zM0 256c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 96c0 17.7-14.3 32-32 32l-32 0 0 64c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-64-32 0c-17.7 0-32-14.3-32-32l0-96zM128 416l0 32 256 0 0-96-256 0 0 64zM456 272a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faVolleyball = {\n    prefix: 'fas',\n    iconName: 'volleyball',\n    icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M512 258.9c-23.4 8-47.8 13.1-72.6 15.1 5.9-98.6-30.7-191.1-94.9-258.3 97.8 36 167.5 130 167.5 240.3 0 1 0 1.9 0 2.9zm-5.9 52c-5.2 23.7-13.6 46.2-24.9 66.9-94.7 52.2-214 50-308.4-13.6 21.7-31.3 49.8-58.9 83.8-80.5 79.5 41.6 168.5 49.1 249.5 27.1zM279.7 241.6c-3.7-89.7-41.7-170.5-101.3-229.7 22.3-7.1 46-11.2 70.5-11.9 92.5 55.9 150.3 160.3 142.4 273.8-38-3.2-75.9-13.7-111.6-32.3zM130.5 32.8C149.1 49.1 165.8 67.7 179.9 88.2 91.5 132.3 29.7 210.3 3.7 299.5 1.3 285.3 0 270.8 0 256 0 160.2 52.6 76.7 130.5 32.8zm73.4 97c16.3 34.5 26.1 72.6 27.9 112.8-75.8 48-126.8 121.3-148.3 202.5-17.6-16.1-33-34.6-45.5-55 2.1-108.1 63.7-210.4 165.9-260.3zM256 512c-47.7 0-92.3-13-130.5-35.7 4.8-24.3 12.6-48 23.2-70.4 82.4 54.4 180.8 68.9 271 47-44.4 37-101.5 59.2-163.7 59.2z\"]\n  };\n  var faVolleyballBall = faVolleyball;\n  var faTrafficLight = {\n    prefix: 'fas',\n    iconName: 'traffic-light',\n    icon: [320, 512, [128678], \"f637\", \"M64-32C28.7-32 0-3.3 0 32L0 384c0 88.4 71.6 160 160 160s160-71.6 160-160l0-352c0-35.3-28.7-64-64-64L64-32zm96 392c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56zm56-104a56 56 0 1 1 -112 0 56 56 0 1 1 112 0zM160 152a56 56 0 1 1 0-112 56 56 0 1 1 0 112z\"]\n  };\n  var faPlaneCircleCheck = {\n    prefix: 'fas',\n    iconName: 'plane-circle-check',\n    icon: [640, 512, [], \"e555\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 78 71.5c-69.3 29-118 97.4-118 177.2 0 49.3 18.6 94.3 49.1 128.3L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n  };\n  var faUsers = {\n    prefix: 'fas',\n    iconName: 'users',\n    icon: [640, 512, [], \"f0c0\", \"M320 16a104 104 0 1 1 0 208 104 104 0 1 1 0-208zM96 88a72 72 0 1 1 0 144 72 72 0 1 1 0-144zM0 416c0-70.7 57.3-128 128-128 12.8 0 25.2 1.9 36.9 5.4-32.9 36.8-52.9 85.4-52.9 138.6l0 16c0 11.4 2.4 22.2 6.7 32L32 480c-17.7 0-32-14.3-32-32l0-32zm521.3 64c4.3-9.8 6.7-20.6 6.7-32l0-16c0-53.2-20-101.8-52.9-138.6 11.7-3.5 24.1-5.4 36.9-5.4 70.7 0 128 57.3 128 128l0 32c0 17.7-14.3 32-32 32l-86.7 0zM472 160a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zM160 432c0-88.4 71.6-160 160-160s160 71.6 160 160l0 16c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-16z\"]\n  };\n  var faCertificate = {\n    prefix: 'fas',\n    iconName: 'certificate',\n    icon: [576, 512, [], \"f0a3\", \"M239.2-8c-6.1-6.2-15-8.7-23.4-6.4S200.9-5.6 198.8 2.8L183.5 63c-1.1 4.4-5.6 7-9.9 5.7L113.8 51.9c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l16.9 59.8c1.2 4.3-1.4 8.8-5.7 9.9L35.1 166.5c-8.4 2.1-15 8.7-17.3 17.1s.2 17.3 6.4 23.4l44.5 43.3c3.2 3.1 3.2 8.3 0 11.5L24.3 305.1c-6.2 6.1-8.7 15-6.4 23.4s8.9 14.9 17.3 17.1l60.2 15.3c4.4 1.1 7 5.6 5.7 9.9L84.2 430.5c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l59.8-16.9c4.3-1.2 8.8 1.4 9.9 5.7l15.3 60.2c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l43.3-44.5c3.1-3.2 8.3-3.2 11.5 0L337.3 520c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3L393.1 449c1.1-4.4 5.6-7 9.9-5.7l59.8 16.9c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-16.9-59.8c-1.2-4.3 1.4-8.8 5.7-9.9l60.2-15.3c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-44.5-43.3c-3.2-3.1-3.2-8.3 0-11.5l44.5-43.3c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-60.2-15.3c-4.4-1.1-7-5.6-5.7-9.9l16.9-59.8c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1L403 68.8c-4.3 1.2-8.8-1.4-9.9-5.7L377.8 2.8c-2.1-8.4-8.7-15-17.1-17.3s-17.3 .2-23.4 6.4L294 36.5c-3.1 3.2-8.3 3.2-11.5 0L239.2-8z\"]\n  };\n  var faAlarmClock = {\n    prefix: 'fas',\n    iconName: 'alarm-clock',\n    icon: [512, 512, [9200], \"f34e\", \"M504.4 132.5c-4.5 10.5-18.4 9.8-24.9 .4-27.8-40-66.1-72.2-111-92.6-10.4-4.7-13.7-18.3-4.1-24.6 15-9.9 33-15.7 52.3-15.7 52.6 0 95.2 42.6 95.2 95.2 0 13.2-2.7 25.8-7.6 37.3zm-471.9 .4c-6.5 9.4-20.5 10.1-24.9-.4-4.9-11.5-7.6-24.1-7.6-37.3 0-52.6 42.6-95.2 95.2-95.2 19.3 0 37.3 5.8 52.3 15.7 9.6 6.3 6.3 19.9-4.1 24.6-44.8 20.4-83.1 52.6-111 92.6zM390.2 467.4C352.8 495.4 306.3 512 256 512s-96.8-16.6-134.1-44.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l35.2-35.2C48.6 384.8 32 338.3 32 288 32 164.3 132.3 64 256 64S480 164.3 480 288c0 50.3-16.6 96.8-44.6 134.2l35.2 35.2c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-35.2-35.2zM280 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l56 56c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-49-49 0-94.1z\"]\n  };\n  var faHelicopterSymbol = {\n    prefix: 'fas',\n    iconName: 'helicopter-symbol',\n    icon: [512, 512, [], \"e502\", \"M445.4 224l64.7 0C495.6 108.2 403.8 16.4 288 2l0 64.7C368.4 80.1 431.9 143.6 445.4 224zM510 288l-64.7 0C431.9 368.4 368.4 431.9 288 445.3l0 64.7c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510l0-64.7C143.6 431.9 80.2 368.4 66.7 288L2 288zm0-64l64.7 0C80.2 143.6 143.6 80.1 224 66.7L224 2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 96 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-96 0 0-64z\"]\n  };\n  var faHouseChimneyCrack = {\n    prefix: 'fas',\n    iconName: 'house-chimney-crack',\n    icon: [512, 512, [\"house-damage\"], \"f6f1\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-105.6 0-38.4-64 80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L218.6 263.2c-14.6-11.5-33.8 7-22.8 22L256 368 170.5 439.2c-6.1 5-7.5 13.8-3.5 20.5l31.3 52.2-86.4 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208z\"]\n  };\n  var faHouseDamage = faHouseChimneyCrack;\n  var faPersonMilitaryPointing = {\n    prefix: 'fas',\n    iconName: 'person-military-pointing',\n    icon: [512, 512, [], \"e54a\", \"M214.9 14.1C202 15.2 192 26 192 39 192 52.8 203.2 64 217 64l151 0c8.8 0 16-7.2 16-16l0-30.6C384 8 376 .7 366.7 1.4L214.9 14.1zM208 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16L209.6 96c-1 5.2-1.6 10.5-1.6 16zM40 224c-22.1 0-40 17.9-40 40s17.9 40 40 40l152 0 0 89.4 162.8-162.8c-13.3-4.3-27.3-6.5-41.6-6.5L40 224zm345.7 20.9l-171.1 171.1 169.4 0 0-46.3 53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L430.3 290.8c-11.2-19-26.6-34.5-44.6-45.9zM192 448l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32-192 0z\"]\n  };\n  var faDatabase = {\n    prefix: 'fas',\n    iconName: 'database',\n    icon: [448, 512, [], \"f1c0\", \"M448 205.8c-14.8 9.8-31.8 17.7-49.5 24-47 16.8-108.7 26.2-174.5 26.2S96.4 246.5 49.5 229.8c-17.6-6.3-34.7-14.2-49.5-24L0 288c0 44.2 100.3 80 224 80s224-35.8 224-80l0-82.2zm0-77.8l0-48C448 35.8 347.7 0 224 0S0 35.8 0 80l0 48c0 44.2 100.3 80 224 80s224-35.8 224-80zM398.5 389.8C351.6 406.5 289.9 416 224 416S96.4 406.5 49.5 389.8c-17.6-6.3-34.7-14.2-49.5-24L0 432c0 44.2 100.3 80 224 80s224-35.8 224-80l0-66.2c-14.8 9.8-31.8 17.7-49.5 24z\"]\n  };\n  var faNewspaper = {\n    prefix: 'fas',\n    iconName: 'newspaper',\n    icon: [512, 512, [128240], \"f1ea\", \"M0 416L0 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 288c0 13.3 10.7 24 24 24s24-10.7 24-24L96 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64zM160 128l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zm24 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l240 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-240 0zm-24-72c0 13.3 10.7 24 24 24l240 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-240 0c-13.3 0-24 10.7-24 24zM360 176c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0z\"]\n  };\n  var faCloudRain = {\n    prefix: 'fas',\n    iconName: 'cloud-rain',\n    icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96 0-42.5 27.6-78.6 65.9-91.2-1.3-6.7-1.9-13.7-1.9-20.8 0-61.9 50.1-112 112-112 43.1 0 80.5 24.3 99.2 60 14.7-17.1 36.5-28 60.8-28 44.2 0 80 35.8 80 80 0 5.5-.6 10.8-1.6 16 .5 0 1.1 0 1.6 0 53 0 96 43 96 96s-43 96-96 96L96 320zm1.6 68.2c1.1-2.5 3.6-4.2 6.4-4.2s5.3 1.6 6.4 4.2l30.2 68.2c2.2 5.1 3.4 10.5 3.4 16 0 21.9-18.1 39.6-40 39.6s-40-17.7-40-39.6c0-5.5 1.2-11 3.4-16l30.2-68.2zm152 0c1.1-2.5 3.6-4.2 6.4-4.2s5.3 1.6 6.4 4.2l30.2 68.2c2.2 5.1 3.4 10.5 3.4 16 0 21.9-18.1 39.6-40 39.6s-40-17.7-40-39.6c0-5.5 1.2-11 3.4-16l30.2-68.2zm121.8 68.2l30.2-68.2c1.1-2.5 3.6-4.2 6.4-4.2s5.3 1.6 6.4 4.2l30.2 68.2c2.2 5.1 3.4 10.5 3.4 16 0 21.9-18.1 39.6-40 39.6s-40-17.7-40-39.6c0-5.5 1.2-11 3.4-16z\"]\n  };\n  var faMaximize = {\n    prefix: 'fas',\n    iconName: 'maximize',\n    icon: [448, 512, [\"expand-arrows-alt\"], \"f31e\", \"M168 32L24 32C10.7 32 0 42.7 0 56L0 200c0 9.7 5.8 18.5 14.8 22.2S34.1 223.8 41 217l40-40 79 79-79 79-40-40c-6.9-6.9-17.2-8.9-26.2-5.2S0 302.3 0 312L0 456c0 13.3 10.7 24 24 24l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2S270.3 480 280 480l144 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2S448 209.7 448 200l0-144c0-13.3-10.7-24-24-24L280 32c-9.7 0-18.5 5.8-22.2 14.8S256.2 66.1 263 73l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S177.7 32 168 32z\"]\n  };\n  var faExpandArrowsAlt = faMaximize;\n  var faLocationArrow = {\n    prefix: 'fas',\n    iconName: 'location-arrow',\n    icon: [512, 512, [], \"f124\", \"M477.9 75.5c4.5-11.8 1.7-25.2-7.2-34.1s-22.3-11.8-34.1-7.2l-416 160C7.9 199-.3 211.2 0 224.7s9.1 25.4 21.9 29.6l176.8 58.9 58.9 176.8c4.3 12.8 16.1 21.6 29.6 21.9s25.7-7.9 30.6-20.5l160-416z\"]\n  };\n  var faCity = {\n    prefix: 'fas',\n    iconName: 'city',\n    icon: [576, 512, [127961], \"f64f\", \"M320 0c-35.3 0-64 28.7-64 64l0 32-48 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-72C96 10.7 85.3 0 72 0S48 10.7 48 24l0 74c-27.6 7.1-48 32.2-48 62L0 448c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-64 0 0-128c0-35.3-28.7-64-64-64L320 0zm64 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zm-16 80c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zm16 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zm112-16c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 304l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM240 192c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM128 304l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM112 192c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0z\"]\n  };\n  var faXRay = {\n    prefix: 'fas',\n    iconName: 'x-ray',\n    icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 320c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 96C14.3 96 0 81.7 0 64zm280 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 48-80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0 0 48-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-48 80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0 0-48 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-16z\"]\n  };\n  var faUmbrellaBeach = {\n    prefix: 'fas',\n    iconName: 'umbrella-beach',\n    icon: [512, 512, [127958], \"f5ca\", \"M497.5 341.1c-5.9 16.7-25.3 23-41.1 15.1l-178.2-89.1-1.6 3.2-88.8 177.7 292.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l84.2 0 103.2-206.3 1.6-3.2-165.4-82.7c-15.8-7.9-22.4-27.3-12.5-42 45.9-68.6 124.1-113.8 212.9-113.8 141.4 0 256 114.6 256 256 0 29.8-5.1 58.5-14.5 85.1z\"]\n  };\n  var faArrowRightToBracket = {\n    prefix: 'fas',\n    iconName: 'arrow-right-to-bracket',\n    icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n  };\n  var faSignIn = faArrowRightToBracket;\n  var faHeadset = {\n    prefix: 'fas',\n    iconName: 'headset',\n    icon: [448, 512, [], \"f590\", \"M224 64c-79 0-144.7 57.3-157.7 132.7 9.3-3 19.3-4.7 29.7-4.7l16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0c-53 0-96-43-96-96l0-64C0 100.3 100.3 0 224 0S448 100.3 448 224l0 168.1c0 66.3-53.8 120-120.1 120l-87.9-.1-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 0 40 0c39.8 0 72-32.2 72-72l0-20.9c-14.1 8.2-30.5 12.8-48 12.8l-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48l16 0c10.4 0 20.3 1.6 29.7 4.7-13-75.3-78.6-132.7-157.7-132.7z\"]\n  };\n  var faSplotch = {\n    prefix: 'fas',\n    iconName: 'splotch',\n    icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0 316.5 0 341.6 18.7 349.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2 0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6-14.8 0-29.3-5.1-40.9-14.3l-55.3-44.3c-4.5-3.6-9.3-6.7-14.5-9.2-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9c-34.6 6.3-66.4-20.3-66.4-55.4 0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1 0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9 0 110.5 30.1 85.1 63 90.7l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n  };\n  var faUpLong = {\n    prefix: 'fas',\n    iconName: 'up-long',\n    icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M137.4-22.6c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9S300.9 160 288 160l-64 0 0 336c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-336-64 0c-12.9 0-24.6-7.8-29.6-19.8S.2 114.5 9.4 105.4l128-128z\"]\n  };\n  var faLongArrowAltUp = faUpLong;\n  var faHexagonNodes = {\n    prefix: 'fas',\n    iconName: 'hexagon-nodes',\n    icon: [448, 512, [], \"e699\", \"M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56s56-25.1 56-56c0-22.3-13.1-41.6-32-50.6l0-98.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-1.6 20.8 8.6 41.6 27.8 52.8c26.8 15.5 61 6.3 76.5-20.5s6.3-61-20.5-76.5c-1.3-.8-2.7-1.5-4-2.1l0-90.8c1.4-.6 2.7-1.3 4-2.1c26.8-15.5 36-49.7 20.5-76.5S390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c2.6 1.8 5.2 3.3 8 4.7l0 90.8c-2.8 1.3-5.5 2.9-8 4.6l-80.1-45.8c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8z\"]\n  };\n  var faHospital = {\n    prefix: 'fas',\n    iconName: 'hospital',\n    icon: [576, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M128 64c0-35.3 28.7-64 64-64L384 0c35.3 0 64 28.7 64 64l0 64 64 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64l64 0 0-64zM272 352c-17.7 0-32 14.3-32 32l0 80 96 0 0-80c0-17.7-14.3-32-32-32l-32 0zM128 368l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM112 256c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zM512 368l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 256c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zM264 104l0 32-32 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-32 0 0-32c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faHospitalAlt = faHospital;\n  var faHospitalWide = faHospital;\n  var faPersonHarassing = {\n    prefix: 'fas',\n    iconName: 'person-harassing',\n    icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9 88 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7 47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344l0 58.7-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l28.1-56.3 54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3 36.4 0 65.9-29.5 65.9-65.9L576 344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16l56 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-56 0c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n  };\n  var faMoneyBillTrendUp = {\n    prefix: 'fas',\n    iconName: 'money-bill-trend-up',\n    icon: [512, 512, [], \"e529\", \"M480 8c0-13.3-10.7-24-24-24L354.2-16c-13.3 0-24 10.7-24 24s10.7 24 24 24l43.9 0-111.3 111.3-95.1-81.5c-9-7.7-22.2-7.7-31.2 0l-112 96c-10.1 8.6-11.2 23.8-2.6 33.8s23.8 11.2 33.8 2.6l96.4-82.6 96.4 82.6c9.5 8.2 23.7 7.6 32.6-1.3l127-127 0 43.9c0 13.3 10.7 24 24 24s24-10.7 24-24L480 8zM48 256c-26.5 0-48 21.5-48 48L0 464c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48L48 256zm47.3 56c-3.4 20.1-19.2 36-39.4 39.4-4.4 .7-8-2.9-8-7.3l0-32c0-4.4 3.6-8 8-8l32 0c4.4 0 8.1 3.6 7.3 8zm0 144.1c.7 4.4-2.9 8-7.3 8l-32 0c-4.4 0-8-3.6-8-8l0-32c0-4.4 3.6-8.1 8-7.3 20.1 3.4 36 19.2 39.4 39.4zM456 416.7c4.4-.7 8 2.9 8 7.3l0 32c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8.1-3.6-7.3-8 3.4-20.1 19.2-36 39.4-39.4zM416.7 312c-.7-4.4 2.9-8 7.3-8l32 0c4.4 0 8 3.6 8 8l0 32c0 4.4-3.6 8.1-8 7.3-20.1-3.4-36-19.2-39.4-39.4zM192 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n  };\n  var faPenRuler = {\n    prefix: 'fas',\n    iconName: 'pen-ruler',\n    icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M404 0c19.2 0 37.6 7.6 51.1 21.2l35.7 35.7C504.4 70.4 512 88.8 512 108s-7.6 37.6-21.2 51.1L445.9 204 308 66.1 352.9 21.2C366.4 7.6 384.8 0 404 0zM58.9 315.1L274.1 100 412 237.9 196.9 453.1c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 511.1c-8.3 2.3-17.3 0-23.4-6.2s-8.5-15.1-6.2-23.4L36.4 353.8c4.1-14.6 11.8-27.9 22.6-38.7zM225.4 80.8L80.8 225.4 11.7 156.3c-15.6-15.6-15.6-40.9 0-56.6l88-88c15.6-15.6 40.9-15.6 56.6 0l5.9 5.9-56.3 56.3c-7.8 7.8-7.8 20.5 0 28.3s20.5 7.8 28.3 0l56.3-56.3 34.9 34.9zM431.2 286.6l34.9 34.9-56.3 56.3c-7.8 7.8-7.8 20.5 0 28.3s20.5 7.8 28.3 0l56.3-56.3 5.9 5.9c15.6 15.6 15.6 40.9 0 56.6l-88 88c-15.6 15.6-40.9 15.6-56.6 0l-69.1-69.1 144.6-144.6z\"]\n  };\n  var faPencilRuler = faPenRuler;\n  var faRepeat = {\n    prefix: 'fas',\n    iconName: 'repeat',\n    icon: [512, 512, [128257], \"f363\", \"M470.6 118.6c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S352 19.1 352 32l0 32-160 0C86 64 0 150 0 256 0 273.7 14.3 288 32 288s32-14.3 32-32c0-70.7 57.3-128 128-128l160 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64zM41.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9S160 492.9 160 480l0-32 160 0c106 0 192-86 192-192 0-17.7-14.3-32-32-32s-32 14.3-32 32c0 70.7-57.3 128-128 128l-160 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n  };\n  var faBone = {\n    prefix: 'fas',\n    iconName: 'bone',\n    icon: [640, 512, [129460], \"f5d7\", \"M197.4 160c-3.9 0-7.2-2.8-8.1-6.6-10.2-42.1-48.1-73.4-93.3-73.4-53 0-96 43-96 96 0 29.1 12.9 55.1 33.3 72.7 4.3 3.7 4.3 10.8 0 14.5-20.4 17.6-33.3 43.7-33.3 72.7 0 53 43 96 96 96 45.2 0 83.1-31.3 93.3-73.4 .9-3.8 4.2-6.6 8.1-6.6l245.1 0c3.9 0 7.2 2.8 8.1 6.6 10.2 42.1 48.1 73.4 93.3 73.4 53 0 96-43 96-96 0-29.1-12.9-55.1-33.3-72.7-4.3-3.7-4.3-10.8 0-14.5 20.4-17.6 33.3-43.7 33.3-72.7 0-53-43-96-96-96-45.2 0-83.1 31.3-93.3 73.4-.9 3.8-4.2 6.6-8.1 6.6l-245.1 0z\"]\n  };\n  var faFireFlameCurved = {\n    prefix: 'fas',\n    iconName: 'fire-flame-curved',\n    icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0 198.4 0 208 9.6 208 21.3l0 22.1c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7 384 434 306 512 209.7 512L192 512C86 512 0 426 0 320l0-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6 12.5 0 22.6 10.1 22.6 22.6L96 288c0 35.3 28.7 64 64 64s64-28.7 64-64l0-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7 0-27.7 9-54.8 25.6-76.9z\"]\n  };\n  var faFireAlt = faFireFlameCurved;\n  var faBusSimple = {\n    prefix: 'fas',\n    iconName: 'bus-simple',\n    icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M96 0C43 0 0 43 0 96L0 384c0 29.8 20.4 54.9 48 62l0 34c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 192 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-34c27.6-7.1 48-32.2 48-62l0-288c0-53-43-96-96-96L96 0zM64 128c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L96 256c-17.7 0-32-14.3-32-32l0-96zM96 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm256 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faBusAlt = faBusSimple;\n  var faVenusMars = {\n    prefix: 'fas',\n    iconName: 'venus-mars',\n    icon: [640, 512, [9892], \"f228\", \"M480-64c-17.7 0-32 14.3-32 32S462.3 0 480 0L530.7 0 474 56.7c-26.3-15.7-57.1-24.7-90-24.7-35.4 0-68.4 10.5-96 28.5-27.6-18-60.6-28.5-96-28.5-97.2 0-176 78.8-176 176 0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9c23.3-4.3 44.9-13.1 64-25.6 27.6 18 60.6 28.5 96 28.5 97.2 0 176-78.8 176-176 0-41.1-14.1-79-37.8-109L576 45.3 576 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L480-64zM336 309.2c20.2-28.6 32-63.5 32-101.2s-11.8-72.6-32-101.2c14.6-6.9 30.8-10.8 48-10.8 61.9 0 112 50.1 112 112S445.9 320 384 320c-17.2 0-33.5-3.9-48-10.8zM288 150.3c10.2 16.9 16 36.6 16 57.7s-5.8 40.9-16 57.7c-10.2-16.9-16-36.6-16-57.7s5.8-40.9 16-57.7zm-48-43.5c-20.2 28.6-32 63.5-32 101.2s11.8 72.6 32 101.2c-14.5 6.9-30.8 10.8-48 10.8-61.9 0-112-50.1-112-112S130.1 96 192 96c17.2 0 33.5 3.9 48 10.8z\"]\n  };\n  var faBlender = {\n    prefix: 'fas',\n    iconName: 'blender',\n    icon: [512, 512, [], \"f517\", \"M0 56C0 25.1 25.1 0 56 0L437.6 0c21.3 0 36.6 20.3 30.8 40.8L457.1 80 344 80c-13.3 0-24 10.7-24 24s10.7 24 24 24l99.4 0-18.3 64-81.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l67.4 0-27.4 96-256 0-9.1-96-62.9 0c-30.9 0-56-25.1-56-56L0 56zM114.3 192L100.6 48 56 48c-4.4 0-8 3.6-8 8l0 128c0 4.4 3.6 8 8 8l58.3 0zM136 384l240 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-240 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm120 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faU = {\n    prefix: 'fas',\n    iconName: 'u',\n    icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32l0 224c0 70.7 57.3 128 128 128s128-57.3 128-128l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 224c0 106-86 192-192 192S0 394 0 288L0 64C0 46.3 14.3 32 32 32z\"]\n  };\n  var faShare = {\n    prefix: 'fas',\n    iconName: 'share',\n    icon: [512, 512, [\"mail-forward\"], \"f064\", \"M307.8 18.4c-12 5-19.8 16.6-19.8 29.6l0 80-112 0c-97.2 0-176 78.8-176 176 0 113.3 81.5 163.9 100.2 174.1 2.5 1.4 5.3 1.9 8.1 1.9 10.9 0 19.7-8.9 19.7-19.7 0-7.5-4.3-14.4-9.8-19.5-9.4-8.8-22.2-26.4-22.2-56.7 0-53 43-96 96-96l96 0 0 80c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-9.2-9.2-22.9-11.9-34.9-6.9z\"]\n  };\n  var faMailForward = faShare;\n  var faPhoneFlip = {\n    prefix: 'fas',\n    iconName: 'phone-flip',\n    icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M351.8 25c7.8-18.8 28.4-28.9 48.1-23.5l5.5 1.5c64.6 17.6 119.8 80.2 103.7 156.4-37.1 175-174.8 312.7-349.8 349.8-76.3 16.2-138.8-39.1-156.4-103.7l-1.5-5.5c-5.4-19.7 4.7-40.3 23.5-48.1l97.3-40.5c16.5-6.9 35.6-2.1 47 11.8l38.6 47.2c70.3-34.9 126.8-93.3 159.3-164.9l-44.1-36.1c-13.9-11.3-18.6-30.4-11.8-47L351.8 25z\"]\n  };\n  var faPhoneAlt = faPhoneFlip;\n  var faToiletPortable = {\n    prefix: 'fas',\n    iconName: 'toilet-portable',\n    icon: [320, 512, [], \"e583\", \"M0 64l0 16 320 0 0-16c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64zm24 64L0 128 0 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 224 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-360-296 0zm224 96l24 0 0 96-24 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n  };\n  var faPersonPregnant = {\n    prefix: 'fas',\n    iconName: 'person-pregnant',\n    icon: [384, 512, [], \"e31e\", \"M192 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm80 321.2c8.6-4.5 16.8-10 24.3-16.5l4-3.4c22.6-19.4 35.7-47.7 35.7-77.6 0-35.9-18.8-69.1-49.6-87.6l-30.4-18.2 0-1.8c0-46.5-37.7-84.1-84.1-84.1-28.1 0-54.4 14.1-70 37.5L21.4 270.2c-9.8 14.7-5.8 34.6 8.9 44.4s34.6 5.8 44.4-8.9l29-43.5-30.5 113.5c-2.6 9.6-.6 19.9 5.5 27.8S94 416 104 416l8 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-110.8z\"]\n  };\n  var faLessThan = {\n    prefix: 'fas',\n    iconName: 'less-than',\n    icon: [512, 512, [62774], \"3c\", \"M477.1 50.6c7.4 16 .4 35.1-15.6 42.5L108.4 256 461.4 419c16 7.4 23 26.4 15.6 42.5s-26.4 23-42.5 15.6l-416-192C7.3 279.8 0 268.5 0 256S7.3 232.2 18.6 227l416-192c16-7.4 35.1-.4 42.5 15.6z\"]\n  };\n  var faSuperscript = {\n    prefix: 'fas',\n    iconName: 'superscript',\n    icon: [576, 512, [], \"f12b\", \"M544 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16C449.9 27.3 443.5 46.5 451.4 62.3 457 73.5 468.3 80 480 80l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128zM96 64C78.3 64 64 78.3 64 96s14.3 32 32 32l15.3 0 89.6 128-89.6 128-15.3 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L240 311.8 325.8 434.4c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0-89.6-128 89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L240 200.2 154.2 77.6C148.2 69.1 138.4 64 128 64L96 64z\"]\n  };\n  var faCircleStop = {\n    prefix: 'fas',\n    iconName: 'circle-stop',\n    icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n  };\n  var faStopCircle = faCircleStop;\n  var faArrowsUpDown = {\n    prefix: 'fas',\n    iconName: 'arrows-up-down',\n    icon: [256, 512, [\"arrows-v\"], \"f07d\", \"M150.6-22.6c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 77.3 96 434.7 54.6 393.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-41.4 41.4 0-357.5 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n  };\n  var faArrowsV = faArrowsUpDown;\n  var faPooStorm = {\n    prefix: 'fas',\n    iconName: 'poo-storm',\n    icon: [512, 512, [\"poo-bolt\"], \"f75a\", \"M268.9-31.8c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1 0 21.7-8.5 37.2-21.9 47.6-13.9 10.8-34.1 17-58.1 17l-24 0c-48.6 0-88 39.4-88 88 0 14.8 3.7 28.8 10.2 41.1-42 6.6-74.2 43-74.2 86.9 0 46.6 36.2 84.7 81.9 87.8 3.1-12.4 9.9-23.8 19.6-32.5L242.7 225c12.2-10.9 28-17 44.4-17 44.6 0 76.5 43 63.7 85.7l-12.7 42.4c28.8 1.2 52.7 21.1 59.8 47.9l26.2 0c48.6 0 88-39.4 88-88 0-43.9-32.1-80.3-74.2-86.9 6.5-12.3 10.2-26.2 10.2-41.1 0-48.6-39.4-88-88-88l-9.4 0c.9-5.4 1.4-10.9 1.4-16.6 0-48.7-36.1-88.9-83.1-95.2zM144.6 416l61.8 0-31.2 104.1c-3.6 11.9 5.3 23.9 17.8 23.9 4.6 0 9-1.7 12.4-4.7L346.5 412.9c3.5-3.1 5.5-7.6 5.5-12.4 0-9.2-7.4-16.6-16.6-16.6l-61.8 0 31.2-104.1c3.6-11.9-5.3-23.9-17.8-23.9-4.6 0-9 1.7-12.4 4.7L133.5 387.1c-3.5 3.1-5.5 7.6-5.5 12.4 0 9.2 7.4 16.6 16.6 16.6z\"]\n  };\n  var faPooBolt = faPooStorm;\n  var faVideoSlash = {\n    prefix: 'fas',\n    iconName: 'video-slash',\n    icon: [576, 512, [], \"f4e2\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-153-153 0-222.2c0-35.3-28.7-64-64-64L129.8 64 41-24.9zM32 128l0 256c0 35.3 28.7 64 64 64l256 0c7.8 0 15.3-1.4 22.2-4L36 105.8c-2.6 6.9-4 14.4-4 22.2zM464 336l73.5 58.8c4.2 3.4 9.4 5.2 14.8 5.2 13.1 0 23.7-10.6 23.7-23.7l0-240.6c0-13.1-10.6-23.7-23.7-23.7-5.4 0-10.6 1.8-14.8 5.2L464 176 464 336z\"]\n  };\n  var faSquareXmark = {\n    prefix: 'fas',\n    iconName: 'square-xmark',\n    icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm71 135c9.4-9.4 24.6-9.4 33.9 0l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faTimesSquare = faSquareXmark;\n  var faXmarkSquare = faSquareXmark;\n  var faHandHoldingDroplet = {\n    prefix: 'fas',\n    iconName: 'hand-holding-droplet',\n    icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6L209.2 103C198 119.3 192 138.6 192 158.3l0 1.7c0 53 43 96 96 96s96-43 96-96l0-1.7c0-19.8-6-39-17.2-55.3L300.5 6.6C297.7 2.5 293 0 288 0s-9.7 2.5-12.5 6.6zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n  };\n  var faHandHoldingWater = faHandHoldingDroplet;\n  var faWonSign = {\n    prefix: 'fas',\n    iconName: 'won-sign',\n    icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.7 28.1 21.9 33.6S-3.9 57.4 1.7 74.1L56.9 240 32 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l40.9 0 56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288 279 288 321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288 480 288c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24.9 0 55.3-165.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-62 186.1-54.6 0-45.9-183.8C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L179 240 124.4 240 62.4 53.9zm78 234.1l26.6 0-11.4 45.6-15.2-45.6zM245 240l11-44.1 11 44.1-22 0zm100 48l26.6 0-15.2 45.6-11.4-45.6z\"]\n  };\n  var faKrw = faWonSign;\n  var faWon = faWonSign;\n  var faObjectUngroup = {\n    prefix: 'fas',\n    iconName: 'object-ungroup',\n    icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64 0 28.7 28.7 0 64 0 87.7 0 108.4 12.9 119.4 32l209.1 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-113.1zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 113.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96zM544 279.4c-9.7-5.6-17.8-13.7-23.4-23.4l-29.2 0c-5.3-17.7-14.8-33.5-27.4-46.4l0-17.6 56.6 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-24.6 64 0 0 24.6c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1z\"]\n  };\n  var faComment = {\n    prefix: 'fas',\n    iconName: 'comment',\n    icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 132.5-114.6 240-256 240-37.1 0-72.3-7.4-104.1-20.7L33.5 510.1c-9.4 4-20.2 1.7-27.1-5.8S-2 485.8 2.8 476.8l48.8-92.2C19.2 344.3 0 294.3 0 240 0 107.5 114.6 0 256 0S512 107.5 512 240z\"]\n  };\n  var faHillAvalanche = {\n    prefix: 'fas',\n    iconName: 'hill-avalanche',\n    icon: [576, 512, [], \"e507\", \"M440.1 401.9c34.2 23.1 81.1 19.5 111.4-10.8 34.4-34.4 34.4-90.1 0-124.5-27.8-27.8-69.5-33.1-102.6-16-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3 15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7c22.3-14.2 37.1-39.1 37.1-67.5 0-33.9-21.1-62.9-50.9-74.5 1.9-6.8 2.9-14 2.9-21.5 0-44.2-35.8-80-80-80-27.3 0-51.5 13.7-65.9 34.6-5.8-20-24.2-34.6-46.1-34.6-26.5 0-48 21.5-48 48 0 4 .5 7.9 1.4 11.6L440.1 401.9zM480.4 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.7 87C43.5 61.8 .4 79.7 .4 115.3L.4 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.7 87z\"]\n  };\n  var faArrowsToEye = {\n    prefix: 'fas',\n    iconName: 'arrows-to-eye',\n    icon: [640, 512, [], \"e4bf\", \"M176 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 38.1-63-63c-9.4-9.4-24.6-9.4-33.9 0S21.7 55.6 31 65l63 63-38.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l96 0c13.3 0 24-10.7 24-24l0-96zm0 400l0-96c0-13.3-10.7-24-24-24l-96 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l38.1 0-63 63c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l63-63 0 38.1c0 13.3 10.7 24 24 24s24-10.7 24-24zm312 24c13.3 0 24-10.7 24-24l0-38.1 63 63c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-63-63 38.1 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-96 0c-13.3 0-24 10.7-24 24l0 96c0 13.3 10.7 24 24 24zM464 56l0 96c0 13.3 10.7 24 24 24l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-38.1 0 63-63c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-63 63 0-38.1c0-13.3-10.7-24-24-24s-24 10.7-24 24zM320 120c-57.3 0-99.4 34-125.6 64.3-20 23.1-32.4 45.8-37.6 56.1-2.5 5-4.9 9.7-4.9 15.6s2.3 10.6 4.9 15.6c5.2 10.3 17.6 33 37.6 56.1 26.2 30.3 68.2 64.3 125.6 64.3s99.4-34 125.6-64.3c20-23.1 32.4-45.8 37.6-56.1 2.5-5 4.9-9.7 4.9-15.6s-2.3-10.6-4.9-15.6c-5.2-10.3-17.6-33-37.6-56.1-26.2-30.3-68.2-64.3-125.6-64.3zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n  };\n  var faSnowplow = {\n    prefix: 'fas',\n    iconName: 'snowplow',\n    icon: [640, 512, [], \"f7d2\", \"M128 160l0-96c0-35.3 28.7-64 64-64L296.4 0c24.2 0 46.4 13.7 57.2 35.4l87.6 175.1c4.4 8.9 6.8 18.7 6.8 28.6l0 56.9 80 0 0-80c0-48.6 39.4-88 88-88 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.1 0-40 17.9-40 40l0 208c0 22.1 17.9 40 40 40 13.3 0 24 10.7 24 24s-10.7 24-24 24c-48.6 0-88-39.4-88-88l0-80-63 0c9.5 16.5 15 35.6 15 56 0 61.9-50.1 112-112 112l-224 0c-61.9 0-112-50.1-112-112 0-30.5 12.2-58.2 32-78.4L64 224c0-35.3 28.7-64 64-64zm91.7 34.9l43.6 29.1 113.2 0-80-160-104.4 0 0 108.8 27.7 22.1zM416 400c0-26.5-21.5-48-48-48l-224 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l224 0c26.5 0 48-21.5 48-48zm-280 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm216-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM232 400a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faChartGantt = {\n    prefix: 'fas',\n    iconName: 'chart-gantt',\n    icon: [512, 512, [], \"e0e4\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm64 112c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0zM384 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0z\"]\n  };\n  var faVideo = {\n    prefix: 'fas',\n    iconName: 'video',\n    icon: [576, 512, [\"video-camera\"], \"f03d\", \"M96 64c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L96 64zM464 336l73.5 58.8c4.2 3.4 9.4 5.2 14.8 5.2 13.1 0 23.7-10.6 23.7-23.7l0-240.6c0-13.1-10.6-23.7-23.7-23.7-5.4 0-10.6 1.8-14.8 5.2L464 176 464 336z\"]\n  };\n  var faVideoCamera = faVideo;\n  var faChessPawn = {\n    prefix: 'fas',\n    iconName: 'chess-pawn',\n    icon: [384, 512, [9823], \"f443\", \"M192-32c66.3 0 120 53.7 120 120 0 27-8.9 51.9-24 72 17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.7 0 26.7 160 56.2 70.3c5 6.3 7.8 14.1 7.8 22.2 0 19.6-15.9 35.5-35.5 35.5L51.5 512c-19.6 0-35.5-15.9-35.5-35.5 0-8.1 2.7-15.9 7.8-22.2L80 384 106.7 224 96 224c-17.7 0-32-14.3-32-32s14.3-32 32-32c-15.1-20.1-24-45-24-72 0-66.3 53.7-120 120-120z\"]\n  };\n  var faSynagogue = {\n    prefix: 'fas',\n    iconName: 'synagogue',\n    icon: [576, 512, [128333], \"f69b\", \"M16 80c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32-128 0 0-32zm0 368l0-288 128 0 126.2-84.2c10.7-7.2 24.8-7.2 35.5 0l126.2 84.2 128 0 0 288c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64zM560 112l-128 0 0-32c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32zM224 384l0 80 128 0 0-80c0-35.3-28.7-64-64-64s-64 28.7-64 64zm64-152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n  };\n  var faBuildingCircleCheck = {\n    prefix: 'fas',\n    iconName: 'building-circle-check',\n    icon: [576, 512, [], \"e4d2\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-10.5-14.6-19-30.7-25.1-48l-74.9 0 0-80c0-17.7 14.3-32 32-32l32 0c2 0 4 .2 5.9 .5 6-23.6 16.3-45.4 30.1-64.5l-4 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 4c27.5-19.8 60.3-32.4 96-35.4L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faCalendarPlus = {\n    prefix: 'fas',\n    iconName: 'calendar-plus',\n    icon: [448, 512, [], \"f271\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm96 192c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n  };\n  var faWheelchairMove = {\n    prefix: 'fas',\n    iconName: 'wheelchair-move',\n    icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M312 56a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM205.4 124.1c-6.4-5.2-15.6-4.7-21.4 1.1l-33.4 33.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L138.8 80c29-29 75.2-31.4 107-5.5l81.3 66c21.4 17.4 23.8 49.2 5.2 69.5l-41.8 46 98 0c30.3 0 53 27.7 47.1 57.4L407.4 454.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L369 320 316.8 320c2.1 10.3 3.2 21 3.2 32 0 88.4-71.6 160-160 160S0 440.4 0 352 71.6 192 160 192c6 0 11.9 .3 17.8 1l50.4-50.4-22.7-18.5zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n  };\n  var faWheelchairAlt = faWheelchairMove;\n  var faUserShield = {\n    prefix: 'fas',\n    iconName: 'user-shield',\n    icon: [576, 512, [], \"f505\", \"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l251.5 0C261 469.4 240 414.5 240 356.4l0-31.1c0-7.3 1-14.5 2.9-21.3l-48.6 0zm251 184.5l-13.3 6.3 0-188.1 96 32 0 19.6c0 55.8-32.2 106.5-82.7 130.3zM421.9 259.5l-112 37.3c-13.1 4.4-21.9 16.6-21.9 30.4l0 31.1c0 74.4 43 142.1 110.2 173.7l18.5 8.7c4.8 2.2 10 3.4 15.2 3.4s10.5-1.2 15.2-3.4l18.5-8.7C533 500.3 576 432.6 576 358.2l0-31.1c0-13.8-8.8-26-21.9-30.4l-112-37.3c-6.6-2.2-13.7-2.2-20.2 0z\"]\n  };\n  var faBold = {\n    prefix: 'fas',\n    iconName: 'bold',\n    icon: [384, 512, [], \"f032\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l32 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c70.7 0 128-57.3 128-128 0-46.5-24.8-87.3-62-109.7 18.7-22.3 30-51 30-82.3 0-70.7-57.3-128-128-128L32 32zM288 160c0 35.3-28.7 64-64 64l-96 0 0-128 96 0c35.3 0 64 28.7 64 64zM128 416l0-128 128 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-128 0z\"]\n  };\n  var faHeartPulse = {\n    prefix: 'fas',\n    iconName: 'heart-pulse',\n    icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M256 107.9L241 87.1C216 52.5 175.9 32 133.1 32 59.6 32 0 91.6 0 165.1l0 2.6c0 23.6 6.2 48 16.6 72.3l106 0c3.2 0 6.1-1.9 7.4-4.9l31.8-76.3c3.7-8.8 12.3-14.6 21.8-14.8s18.3 5.4 22.2 14.1l51.3 113.9 41.4-82.8c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3l23.2 46.3c1.4 2.7 4.1 4.4 7.2 4.4l123.6 0c10.5-24.3 16.6-48.7 16.6-72.3l0-2.6C512 91.6 452.4 32 378.9 32 336.2 32 296 52.5 271 87.1l-15 20.7zM469.6 288l-97.8 0c-21.2 0-40.6-12-50.1-31l-1.7-3.4-42.5 85.1c-4.1 8.3-12.7 13.5-22 13.3s-17.6-5.7-21.4-14.1l-49.3-109.5-10.5 25.2c-8.7 20.9-29.1 34.5-51.7 34.5l-80.2 0c47.2 73.8 123 141.7 170.4 177.9 12.4 9.4 27.6 14.1 43.1 14.1s30.8-4.6 43.1-14.1C346.6 429.7 422.4 361.8 469.6 288z\"]\n  };\n  var faHeartbeat = faHeartPulse;\n  var faSquareRootVariable = {\n    prefix: 'fas',\n    iconName: 'square-root-variable',\n    icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1l200 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L344 96 238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l45.6 0c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8 84.4-289.5zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0l41.4 41.4 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-41.4 41.4 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-41.4-41.4-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l41.4-41.4-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n  };\n  var faSquareRootAlt = faSquareRootVariable;\n  var faHandsBubbles = {\n    prefix: 'fas',\n    iconName: 'hands-bubbles',\n    icon: [512, 512, [\"hands-wash\"], \"e05e\", \"M384 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM128 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM0 160l.1 72.6c0 44.8 17.6 87.1 47.9 118.4 .3-77 40.1-148.4 105.4-189.3l1.9-1.2c-2.5-3.7-2.8-8.6-.4-12.7l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S182 5 175.4 16.5l-68 117.8 0 0 0 0-43.3 75 0-49.3c0-17.7-14.4-32-32-32S0 142.4 0 160zm213.6-35.9c14.1-8.8 29.8-12.7 45.2-12.1l36.5-63.3c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-67.1 116.2 27-16.9zm86.5-35.7l-16.4 28.4c15.1 5.5 28.6 15.6 38.3 29.7l19.7-34.2c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-12.5 21.7c2 8.6 2.5 17.5 1.7 26.1l4.3 0 0 0 34.4 0 13.7-23.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM283.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C127.3 234.7 96 291.2 96 352l0 8c0 8.9 .8 17.6 2.2 26.1 35.4 8.2 61.8 40 61.8 77.9 0 6.3-.7 12.5-2.1 18.4 25.2 18.6 56.4 29.6 90.1 29.6l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-92 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-124 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l156 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-156 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-136 0 0 0 0 0-93.2 0 46.2-28.9c15-9.4 19.5-29.1 10.2-44.1z\"]\n  };\n  var faHandsWash = faHandsBubbles;\n  var faMarker = {\n    prefix: 'fas',\n    iconName: 'marker',\n    icon: [512, 512, [], \"f5a1\", \"M408.8 0c-27.4 0-53.6 10.9-73 30.2L318.1 48 305 34.9c-28.1-28.1-73.7-28.1-101.8 0L103 135c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L237.1 68.9c9.4-9.4 24.6-9.4 33.9 0L284.1 81.9 184 182.1 329.9 328 481.8 176.2c19.4-19.4 30.2-45.6 30.2-73 0-57-46.2-103.2-103.2-103.2zM102.4 263.7c-49.9 49.9-83.3 114-95.5 183.5L.4 483.8C-1 491.6 1.5 499.4 7 505s13.4 8 21.1 6.7l36.7-6.5c69.5-12.3 133.6-45.6 183.5-95.5L296 361.9 150.1 216 102.4 263.7z\"]\n  };\n  var faClipboard = {\n    prefix: 'fas',\n    iconName: 'clipboard',\n    icon: [384, 512, [128203], \"f328\", \"M320 32l-8.6 0C300.4 12.9 279.7 0 256 0L128 0C104.3 0 83.6 12.9 72.6 32L64 32C28.7 32 0 60.7 0 96L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-352c0-35.3-28.7-64-64-64zM136 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0z\"]\n  };\n  var faPlaceOfWorship = {\n    prefix: 'fas',\n    iconName: 'place-of-worship',\n    icon: [512, 512, [], \"f67f\", \"M160 79l0 81-44.8 33.6C103.1 202.7 96 216.9 96 232l0 40-60.6 30.3C13.7 313.2 0 335.3 0 359.6L0 448c0 35.3 28.7 64 64 64 74.7 0 85.4 0 320 0l64 0c35.3 0 64-28.7 64-64l0-88.4c0-24.2-13.7-46.4-35.4-57.2L416 272 416 232c0-15.1-7.1-29.3-19.2-38.4L352 160 352 79c0-9.5-4.2-18.5-11.5-24.6L271.4-3.2c-8.9-7.4-21.8-7.4-30.7 0L171.5 54.4C164.2 60.5 160 69.5 160 79zm96 241c35.3 0 64 28.7 64 64l0 80-128 0 0-80c0-35.3 28.7-64 64-64z\"]\n  };\n  var faCannabis = {\n    prefix: 'fas',\n    iconName: 'cannabis',\n    icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1 15.8 23.5 36.7 63.7 49.2 109 7.3 26.4 11.8 55.3 10.3 84 11.6-8.9 23.7-16.7 35.9-23.7 41-23.3 84.4-36.9 112.2-42.5 5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7-9.1 15.9-19.9 31.7-32.5 46.3 27.9 6.6 52.5 17.2 67.3 25.4 5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.2c1.5 6.1-.6 12.5-5.5 16.4s-11.6 4.6-17.2 1.8L280 417.2 280 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-70.8-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.8s-7-10.3-5.5-16.4l8.3-33.2c-22.2 2.6-45 0-65.2-4.6-28.9-6.6-54.5-17.6-69.8-26.1-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14l6.2-3.3c15-7.6 36.8-16.4 61.1-22.2-12.5-14.5-23.3-30.4-32.4-46.2-23.4-40.8-37.1-84-42.7-111.7-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5 12.2 6.9 24.3 14.8 35.8 23.7-1.4-28.7 3.1-57.6 10.3-84 12.5-45.3 33.4-85.5 49.2-109l1.2-1.6C246.9 2 251.3 0 256 0z\"]\n  };\n  var faPeopleRoof = {\n    prefix: 'fas',\n    iconName: 'people-roof',\n    icon: [576, 512, [], \"e537\", \"M302.3-12.6c-9-4.5-19.6-4.5-28.6 0l-256 128C1.9 123.3-4.5 142.5 3.4 158.3s27.1 22.2 42.9 14.3L288 51.8 529.7 172.6c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9l-256-128zM288 272a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm0 48c-53 0-96 43-96 96l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-53-43-96-96-96zM160 256a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm352 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM112 336c-44.2 0-80 35.8-80 80l0 33.1c0 17 13.8 30.9 30.9 30.9l87.8 0c-4.3-9.8-6.7-20.6-6.7-32l0-48c0-18.4 3.5-36 9.8-52.2-12.2-7.5-26.5-11.8-41.8-11.8zM425.4 480l87.8 0c17 0 30.9-13.8 30.9-30.9l0-33.1c0-44.2-35.8-80-80-80-15.3 0-29.6 4.3-41.8 11.8 6.3 16.2 9.8 33.8 9.8 52.2l0 48c0 11.4-2.4 22.2-6.7 32z\"]\n  };\n  var faDisease = {\n    prefix: 'fas',\n    iconName: 'disease',\n    icon: [512, 512, [], \"f7fa\", \"M236.5 29.4L224 48c-20 30-53.6 48-89.7 48L68 96c-37.5 0-67.9 30.4-67.9 67.9 0 18 7.2 35.2 19.9 47.9l27 27c11 11 17.2 25.9 17.2 41.5 0 15.8-6.4 30.9-17.7 42L33.4 335.1c-11.1 10.8-17.3 25.7-17.3 41.2 0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6 32.8 0 64.2 14.6 85.2 39.8l30.5 36.6c10.4 12.4 25.7 19.6 41.9 19.6 30.1 0 54.5-24.4 54.5-54.5l0-51.2c0-41.4 25.4-78.5 64-93.5l22.2-8.6c25.2-9.8 41.8-34.1 41.8-61.1 0-26.4-15.9-50.3-40.3-60.5L429 164.8c-33.2-13.9-57.6-43-65.5-78.1l-7.9-35.2c-6.8-30.1-33.5-51.5-64.3-51.5-22 0-42.6 11-54.8 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faBookBible = {\n    prefix: 'fas',\n    iconName: 'book-bible',\n    icon: [448, 512, [\"bible\"], \"f647\", \"M96 512c-53 0-96-43-96-96L0 96C0 43 43 0 96 0L400 0c26.5 0 48 21.5 48 48l0 288c0 20.9-13.4 38.7-32 45.3l0 66.7c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 512zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0-64-256 0zM192 80l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-112 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faBible = faBookBible;\n  var faChessBoard = {\n    prefix: 'fas',\n    iconName: 'chess-board',\n    icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 64l0 64 64 0 0-64 64 0 0 64 64 0 0-64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64 64 0 0-64-64 0 0-64 64 0 0-64-64 0 0-64 64 0zm64 128l64 0 0-64-64 0 0 64zm0 64l0-64-64 0 0 64 64 0zm64 0l-64 0 0 64 64 0 0-64zm0 0l64 0 0-64-64 0 0 64z\"]\n  };\n  var faMars = {\n    prefix: 'fas',\n    iconName: 'mars',\n    icon: [512, 512, [9794], \"f222\", \"M320 32c0-17.7 14.3-32 32-32L480 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-95 95c19.5 28.4 31 62.7 31 99.8 0 97.2-78.8 176-176 176S32 401.2 32 304 110.8 128 208 128c37 0 71.4 11.4 99.8 31l95-95-50.7 0c-17.7 0-32-14.3-32-32zM208 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n  };\n  var faLaptop = {\n    prefix: 'fas',\n    iconName: 'laptop',\n    icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96l0 240 64 0 0-240 384 0 0 240 64 0 0-240c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2 0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8 0-10.6-8.6-19.2-19.2-19.2L19.2 384z\"]\n  };\n  var faUserXmark = {\n    prefix: 'fas',\n    iconName: 'user-xmark',\n    icon: [640, 512, [\"user-times\"], \"f235\", \"M136.4 128a120 120 0 1 1 240 0 120 120 0 1 1 -240 0zm-88 354.3c0-98.5 79.8-178.3 178.3-178.3l59.4 0c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L78.1 512c-16.4 0-29.7-13.3-29.7-29.7zM612.3 124.1c9.4 9.4 9.4 24.6 0 33.9l-33.9 33.9 33.9 33.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-33.9-33.9-33.9 33.9c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l33.9-33.9-33.9-33.9c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l33.9 33.9 33.9-33.9c9.4-9.4 24.6-9.4 33.9 0z\"]\n  };\n  var faUserTimes = faUserXmark;\n  var faFlagUsa = {\n    prefix: 'fas',\n    iconName: 'flag-usa',\n    icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 36.1-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9l0 32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4l33.7-12.3 0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3l-63.5 13.6 0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4l33.7-12.3 0 61.9-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3l-63.5 13.6 0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4l33.7-12.3 0 33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 400 64 480c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0zm80 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n  };\n  var faHandMiddleFinger = {\n    prefix: 'fas',\n    iconName: 'hand-middle-finger',\n    icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40l0 164.2c-8.5-7.6-19.7-12.2-32-12.2-26.5 0-48 21.5-48 48l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-55.7c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334L32 372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1L304 512c70.7 0 128-57.3 128-128l0-96c0-26.5-21.5-48-48-48-12.4 0-23.6 4.7-32.1 12.3-1.9-24.8-22.6-44.3-47.9-44.3-12.3 0-23.5 4.6-32 12.2L272 40c0-22.1-17.9-40-40-40z\"]\n  };\n  var faMortarPestle = {\n    prefix: 'fas',\n    iconName: 'mortar-pestle',\n    icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160 397.3 160 502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2-11.1 13.9-19.4 30.3-23.9 48.1-4.4 17.1 10.4 31.7 28.1 31.7l192 0c17.7 0 32.4-14.6 28.1-31.7-4.5-17.8-12.8-34.1-23.9-48.1 80.5-28.6 123.9-93.7 123.9-176.2 17.7 0 32-14.3 32-32s-14.3-32-32-32L32 192z\"]\n  };\n  var faHeadSideCough = {\n    prefix: 'fas',\n    iconName: 'head-side-cough',\n    icon: [512, 512, [], \"e061\", \"M96 512l64 0c53 0 96-43 96-96l0-80c0-8.8 7.2-16 16-16l1 0c26 0 47-21 47-47 0-11-3.9-21.6-10.9-30.1L273.3 200C271.4 197.6 270.1 194.7 269.7 191.7 254 83.3 160.7 0 48 0 40.4 0 32.9 .4 25.4 1.1 10.5 2.6 0 15.9 0 30.9L0 480c0 17.7 14.3 32 32 32l64 0zm16-320a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm63.1 237.2l-41.5-3.5c-12.2-1-21.6-11.2-21.6-23.4 0-10.8 7.3-20.2 17.8-22.8l40.4-10.1c19.2-4.8 37.8 9.7 37.8 29.5 0 17.8-15.2 31.8-32.9 30.3zM480 312a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-40 24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-64 48a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm128 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM480 504a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-40-72a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faPlaneLock = {\n    prefix: 'fas',\n    iconName: 'plane-lock',\n    icon: [640, 512, [], \"e558\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 82.1 75.2C409.7 248.1 400 274.9 400 304l0 24.4c-7.3 6.6-13.6 14.2-18.7 22.7l-37.3-12.4 0 99.7 24 19.2 0 38.3c0 13.5 2.8 26.4 7.8 38.1L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM560 304.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM416 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faBatteryThreeQuarters = {\n    prefix: 'fas',\n    iconName: 'battery-three-quarters',\n    icon: [640, 512, [\"battery-4\"], \"f241\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l224 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-224 0z\"]\n  };\n  var faBattery4 = faBatteryThreeQuarters;\n  var faFrancSign = {\n    prefix: 'fas',\n    iconName: 'franc-sign',\n    icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64l0 256-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-64 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-96 176 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n  };\n  var faFilterCircleDollar = {\n    prefix: 'fas',\n    iconName: 'filter-circle-dollar',\n    icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M32 64C19.1 64 7.4 71.8 2.4 83.8L273.6 508.6c8.2 4.1 17.9 4.6 26.6 1 9.1-3.8 15.8-11.5 18.5-20.6 26.4 33.5 67.3 55.1 113.3 55.1 79.5 0 144-64.5 144-144S511.5 256 432 256c-45.2 0-85.6 20.9-112 53.5l0-8.2 182.6-182.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64zM416 320c0-8.8 7.2-16 16-16s16 7.2 16 16l0 8 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-45.8 0c-5.6 0-10.2 4.6-10.2 10.2 0 4.9 3.5 9.1 8.3 10l45 8.2c20 3.6 34.6 21.1 34.6 41.5 0 23.3-18.9 42.2-42.2 42.2l-5.8 0 0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l53.8 0c5.6 0 10.2-4.6 10.2-10.2 0-4.9-3.5-9.1-8.3-10l-45-8.2c-20-3.6-34.6-21.1-34.6-41.5 0-22.6 17.7-41 40-42.1l0-8.1z\"]\n  };\n  var faFunnelDollar = faFilterCircleDollar;\n  var faCheese = {\n    prefix: 'fas',\n    iconName: 'cheese',\n    icon: [512, 512, [], \"f7ef\", \"M512 240.2l0 15.8-512 0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7 115 0 208.2 93.2 208.2 208.2zm0 63.8l0 112c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-112 512 0z\"]\n  };\n  var faCircleH = {\n    prefix: 'fas',\n    iconName: 'circle-h',\n    icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm96-344l0 176c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64-96 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-176c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 96 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faHospitalSymbol = faCircleH;\n  var faSchool = {\n    prefix: 'fas',\n    iconName: 'school',\n    icon: [576, 512, [127979], \"f549\", \"M0 192c0-35.3 28.7-64 64-64l64 0 127.9-115.1c18.3-16.4 46-16.4 64.2 0L448 128 512 128c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192zM224 376l0 88 128 0 0-88c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zm-112 8c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 384c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM288 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n  };\n  var faDiceFive = {\n    prefix: 'fas',\n    iconName: 'dice-five',\n    icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faTornado = {\n    prefix: 'fas',\n    iconName: 'tornado',\n    icon: [448, 512, [127786], \"f76f\", \"M0 32L0 45.6C0 62.7 1.7 79.6 5 96l352.8 0c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16 0-12.5-10.1-22.6-22.6-22.6L32 0C14.3 0 0 14.3 0 32zM355.7 144l-336 0c12.4 29.7 30.2 56.8 52.7 80l339.6 0-47.2-62.9c-3.9-5.2-7-11-9.2-17.1zM242.6 334.7c8.2 4.8 15.8 10.7 22.5 17.3L445 352c2-9.8 3-19.9 3-30.1 0-17.1-2.9-34-8.6-49.9L136 272 242.6 334.7zM294.3 400c5.3 17 6.5 35.2 3.6 53l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4 5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c8.5-8.5 15.8-17.8 21.9-27.9l-131.8 0z\"]\n  };\n  var faJetFighter = {\n    prefix: 'fas',\n    iconName: 'jet-fighter',\n    icon: [576, 512, [\"fighter-jet\"], \"f0fb\", \"M496.2 206.8c-10.7-4.5-22.2-6.8-33.8-6.8L362 200 248 48 296 48c13.3 0 24-10.7 24-24S309.3 0 296 0L152 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l8 0 0 152-54.4 0-52.8-66c-3-3.8-7.6-6-12.5-6L16 128c-8.8 0-16 7.2-16 16l0 88 40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0 0 88c0 8.8 7.2 16 16 16l24.3 0c4.9 0 9.5-2.2 12.5-6l52.8-66 54.4 0 0 152-8 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 114-152 100.4 0c11.6 0 23.1-2.3 33.8-6.8l65-27.1c8.9-3.7 14.8-12.5 14.8-22.2s-5.8-18.4-14.8-22.2l-65-27.1z\"]\n  };\n  var faFighterJet = faJetFighter;\n  var faThumbsDown = {\n    prefix: 'fas',\n    iconName: 'thumbs-down',\n    icon: [512, 512, [128078, 61576], \"f165\", \"M384 32c26.5 0 48 21.5 48 48 0 6.3-1.3 12.2-3.4 17.7 20.4 5.5 35.4 24.1 35.4 46.3 0 9.1-2.6 17.6-7 24.9 22.2 4.2 39 23.7 39 47.1 0 19.7-11.9 36.6-28.9 44 17 7.4 28.9 24.3 28.9 44 0 26.5-21.5 48-48 48l-160 0 28.2 70.4c2.5 6.3 3.8 13.1 3.8 19.9l0 4.2c0 27.3-22.1 49.4-49.4 49.4-18.7 0-35.8-10.6-44.2-27.3L170.1 356.3c-6.7-13.3-10.1-28-10.1-42.9l0-186.6c0-19.4 8.9-37.8 24-50l12.2-9.7C224.6 44.4 259.8 32 296.1 32L384 32zM80 96c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32L0 128c0-17.7 14.3-32 32-32l48 0z\"]\n  };\n  var faBroom = {\n    prefix: 'fas',\n    iconName: 'broom',\n    icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6-12.5 0-22.6 10.1-22.6 22.6l0 29.1 108.3 108.3 29.1 0c12.5 0 22.6-10.1 22.6-22.6 0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8c-22.3 22.3-34.8 52.5-34.8 84 0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9 0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8 30.6-30.6 45.9-73.1 42.3-115.8z\"]\n  };\n  var faFileImport = {\n    prefix: 'fas',\n    iconName: 'file-import',\n    icon: [384, 512, [\"arrow-right-to-file\"], \"f56f\", \"M64 0C28.7 0 0 28.7 0 64l0 240 182.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-182.1 0 0 96c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176z\"]\n  };\n  var faArrowRightToFile = faFileImport;\n  var faUtensils = {\n    prefix: 'fas',\n    iconName: 'utensils',\n    icon: [512, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M63.9 14.4C63.1 6.2 56.2 0 48 0s-15.1 6.2-16 14.3L17.9 149.7c-1.3 6-1.9 12.1-1.9 18.2 0 45.9 35.1 83.6 80 87.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224.4c44.9-4.1 80-41.8 80-87.7 0-6.1-.6-12.2-1.9-18.2L223.9 14.3C223.1 6.2 216.2 0 208 0s-15.1 6.2-15.9 14.4L178.5 149.9c-.6 5.7-5.4 10.1-11.1 10.1-5.8 0-10.6-4.4-11.2-10.2L143.9 14.6C143.2 6.3 136.3 0 128 0s-15.2 6.3-15.9 14.6L99.8 149.8c-.5 5.8-5.4 10.2-11.2 10.2-5.8 0-10.6-4.4-11.1-10.1L63.9 14.4zM448 0C432 0 320 32 320 176l0 112c0 35.3 28.7 64 64 64l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448c0-17.7-14.3-32-32-32z\"]\n  };\n  var faCutlery = faUtensils;\n  var faIdBadge = {\n    prefix: 'fas',\n    iconName: 'id-badge',\n    icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zm96 352l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16L96 448c-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-24-96a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM152 64l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faSpider = {\n    prefix: 'fas',\n    iconName: 'spider',\n    icon: [512, 512, [128375], \"f717\", \"M369.3-31c11.9-3.5 24.4 2.7 29 13.9l.8 2.3 40 136c2.5 8.4 .1 17.5-6.1 23.7l-64.1 64.1 76.4-20.8 19.9-59.8 .9-2.3c5-11.1 17.7-16.8 29.5-12.9 11.8 3.9 18.5 16.1 15.8 28l-.7 2.4-24 72c-2.5 7.6-8.7 13.4-16.5 15.6l-91.1 24.8 91.1 24.8c7.7 2.1 13.9 8 16.5 15.6l24 72 .7 2.4c2.7 11.9-4.1 24.1-15.8 28-11.8 3.9-24.5-1.8-29.5-12.9l-.9-2.3-19.9-59.8-76.4-20.8 64.1 64.1c6.1 6.1 8.5 15.1 6.2 23.4l-40 144-.8 2.3c-4.4 11.3-16.8 17.7-28.8 14.4-12-3.3-19.3-15.2-17.2-27.2l.5-2.4 36.2-130.5-37.2-37.2C351 406 308.4 448 256 448s-95-42-96-94.1l-37 37 36 122.3 .6 2.4c2.2 11.9-4.9 23.9-16.8 27.4-11.9 3.5-24.4-2.7-29-13.9l-.8-2.3-40-136c-2.5-8.4-.1-17.5 6.1-23.8l64.1-64.1-76.4 20.8-19.9 59.8-.9 2.3c-5 11.1-17.7 16.8-29.5 12.9s-18.5-16.1-15.8-28l.7-2.4 24-72c2.5-7.6 8.7-13.4 16.5-15.6l91.1-24.8-91.1-24.8c-7.7-2.1-13.9-8-16.5-15.6l-24-72-.7-2.4c-2.7-11.9 4.1-24.1 15.8-28s24.5 1.8 29.5 12.9l.9 2.3 19.9 59.8 76.4 20.8-64.1-64.1c-6.2-6.2-8.5-15.3-6.1-23.7l40-136 .8-2.3c4.6-11.3 17.1-17.4 29-13.9 11.9 3.5 19 15.5 16.8 27.4l-.6 2.4-36 122.3 53 53c1-43.3 36.4-78.1 79.9-78.1s78.9 34.8 79.9 78.2l53.1-53.1-36-122.3-.6-2.4c-2.2-12 4.9-23.9 16.8-27.4z\"]\n  };\n  var faMobileRetro = {\n    prefix: 'fas',\n    iconName: 'mobile-retro',\n    icon: [384, 512, [], \"e527\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zm80 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32zm8 192a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 72c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24zm64-72a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 72c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24zm64-72a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 72c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24zM168 40c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n  };\n  var faSignsPost = {\n    prefix: 'fas',\n    iconName: 'signs-post',\n    icon: [512, 512, [\"map-signs\"], \"f277\", \"M256.4 0c-17.7 0-32 14.3-32 32l0 32-160 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 0 64-153.4 0c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7l153.4 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 160 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-160 0 0-64 153.4 0c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7l-153.4 0 0-32c0-17.7-14.3-32-32-32z\"]\n  };\n  var faMapSigns = faSignsPost;\n  var faGroupArrowsRotate = {\n    prefix: 'fas',\n    iconName: 'group-arrows-rotate',\n    icon: [512, 512, [], \"e4f6\", \"M37.6 122.3c-11.5 18.7-20.6 39-27 60.5-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c18.4-61.9 67.3-110.8 129.2-129.2 16.9-5 26.6-22.9 21.5-39.8S199.8 5.6 182.9 10.6C161.4 17 141.1 26.1 122.3 37.6 112.3 15.4 89.9 0 64 0 28.7 0 0 28.7 0 64 0 89.9 15.4 112.3 37.6 122.3zm436.7 0c22.2-10 37.6-32.4 37.6-58.3 0-35.3-28.7-64-64-64-25.9 0-48.3 15.4-58.3 37.6-18.7-11.5-39-20.6-60.5-27-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c61.9 18.4 110.8 67.3 129.2 129.2 5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.5zM512 448c0-25.9-15.4-48.3-37.6-58.3 11.5-18.7 20.6-39 27-60.5 5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-18.4 61.9-67.3 110.8-129.2 129.2-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.5-27 10 22.2 32.4 37.6 58.3 37.6 35.3 0 64-28.7 64-64zM37.6 389.7c-22.2 10-37.6 32.4-37.6 58.3 0 35.3 28.7 64 64 64 25.9 0 48.3-15.4 58.3-37.6 18.7 11.5 39 20.6 60.5 27 16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-61.9-18.4-110.8-67.3-129.2-129.2-5-16.9-22.9-26.6-39.8-21.5S5.6 312.2 10.6 329.1c6.4 21.5 15.5 41.8 27 60.5zM256 192c15.6 0 30 5.6 41.1 14.9l-15.3 15.3c-6.6 6.6-1.9 17.8 7.4 17.8l60.5 0c5.7 0 10.4-4.7 10.4-10.4l0-60.5c0-9.3-11.2-13.9-17.8-7.4l-11.2 11.2c-19.8-17.9-46.2-28.9-75.1-28.9-43.6 0-81.3 24.9-99.8 61.1-6 11.8-1.4 26.3 10.4 32.3s26.3 1.4 32.3-10.4c10.6-20.8 32.2-34.9 57-34.9zm58.6 93.1c-10.6 20.8-32.2 34.9-57 34.9-15.7 0-30-5.6-41.1-14.9l15.3-15.3c6.6-6.6 1.9-17.8-7.4-17.8L164 272c-5.7 0-10.4 4.7-10.4 10.4l0 60.5c0 9.3 11.2 13.9 17.8 7.4l11.2-11.2c19.8 17.9 46.2 28.9 75.1 28.9 43.6 0 81.3-24.9 99.8-61.1 6-11.8 1.4-26.3-10.4-32.3s-26.3-1.4-32.3 10.4z\"]\n  };\n  var faArrowsSplitUpAndLeft = {\n    prefix: 'fas',\n    iconName: 'arrows-split-up-and-left',\n    icon: [512, 512, [], \"e4bc\", \"M342.6-22.6c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l41.4-41.4 0 195.9c-18.8-10.9-40.7-17.1-64-17.1l-114.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 320 224 320c35.3 0 64 28.7 64 64 0 70.7 57.3 128 128 128l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-35.3 0-64-28.7-64-64l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n  };\n  var faFillDrip = {\n    prefix: 'fas',\n    iconName: 'fill-drip',\n    icon: [576, 512, [], \"f576\", \"M309.7 71.6l-64.4 64.4 33.4 33.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-33.4-33.4-96.4 96.4c-2.9 2.9-5.1 6.5-6.3 10.3l321.5 0 53.7-53.7c4.9-4.9 7.6-11.5 7.6-18.3s-2.7-13.5-7.6-18.3L346.3 71.6C341.5 66.7 334.9 64 328 64s-13.5 2.7-18.3 7.6zM58.3 232.4l96.4-96.4-49.4-49.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L200 90.7 264.4 26.3C281.3 9.5 304.1 0 328 0s46.7 9.5 63.6 26.3L517.7 152.4C534.5 169.3 544 192.1 544 216s-9.5 46.7-26.3 63.6L311.6 485.7C294.7 502.5 271.9 512 248 512s-46.7-9.5-63.6-26.3L58.3 359.6C41.5 342.7 32 319.9 32 296s9.5-46.7 26.3-63.6zM512 544c-35.3 0-64-28.7-64-64 0-25.2 32.6-79.6 51.2-108.7 6-9.4 19.5-9.4 25.5 0 18.7 29.1 51.2 83.5 51.2 108.7 0 35.3-28.7 64-64 64z\"]\n  };\n  var faShieldHeart = {\n    prefix: 'fas',\n    iconName: 'shield-heart',\n    icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM249.6 183.5l6.4 8.5 6.4-8.5c11.1-14.8 28.5-23.5 46.9-23.5 32.4 0 58.7 26.3 58.7 58.7l0 5.3c0 49.1-65.8 98.1-96.5 118.3-9.5 6.2-21.5 6.2-30.9 0-30.7-20.2-96.5-69.3-96.5-118.3l0-5.3c0-32.4 26.3-58.7 58.7-58.7 18.5 0 35.9 8.7 46.9 23.5z\"]\n  };\n  var faPersonSkiingNordic = {\n    prefix: 'fas',\n    iconName: 'person-skiing-nordic',\n    icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M424.8 16a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm99.8 193.7c7.6 15.2 1.9 33.6-12.6 42l0 180.3-32 0 0-164.2-10.1 5c-27.4 13.7-60.7 6.1-79.4-18.2l-19.6-25.5-39.5 68.8 24.8 12.4c29.5 14.7 42.9 49.5 31.1 80.2l-28.2 73.4 149.4 0c7.9 0 15.6-2.3 22.2-6.7l7.9-5.3c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3l-7.9 5.3C543 506.9 526 512 508.6 512l-189.1 0c-.5 0-1 0-1.5 0L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l88 0c0-8.2 3.1-16.4 9.4-22.6l74.1-74.1 10.2-35.9c11.3 18.3 27.7 33.8 48.4 44.2l4.8 2.4-1.9 6.8c-3 10.5-8.6 20-16.3 27.7l-51.5 51.5 101.3 0 37.1-96.4-55.6-27.8C230.4 319 215.3 267 239.3 227.1l37.7-62.7-27.7-7.7c-9-2.5-18.1 3.2-20 12.3l-5.9 29.3c-3.1 15.6-17.1 26.3-32.5 25.7l-130 208-37.7 0 140.6-225c-3.4-6.3-4.6-13.8-3.1-21.3l5.9-29.3c9.1-45.6 55.1-73.8 99.9-61.4l32.5 9c46.7 13 88 40.8 117.6 79.3l24.9 32.3 40.4-20.2c15.8-7.9 35-1.5 42.9 14.3z\"]\n  };\n  var faSkiingNordic = faPersonSkiingNordic;\n  var faSquareCheck = {\n    prefix: 'fas',\n    iconName: 'square-check',\n    icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM308.4 212.7l-80 128c-4.2 6.7-11.4 10.9-19.3 11.3s-15.5-3.2-20.2-9.6l-48-64c-8-10.6-5.8-25.6 4.8-33.6s25.6-5.8 33.6 4.8l27 36 61.4-98.3c7-11.2 21.8-14.7 33.1-7.6s14.7 21.8 7.6 33.1z\"]\n  };\n  var faCheckSquare = faSquareCheck;\n  var faBath = {\n    prefix: 'fas',\n    iconName: 'bath',\n    icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3 3.5 0 6.9 1.4 9.4 3.9l14.9 14.9c-3.6 9.1-5.5 18.9-5.5 29.2 0 19.9 7.2 38 19.2 52-5.3 9.2-4 21.1 3.8 29 9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9-7.8-7.9-19.8-9.1-29-3.8-14-12-32.1-19.2-52-19.2-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0 66.6 0 32 34.6 32 77.3L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 48c0 28.4 12.4 54 32 71.6L64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16 256 0 0 16c0 17.7 14.3 32 32 32s32-14.3 32-32l0-40.4c19.6-17.6 32-43.1 32-71.6l0-48c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 256 96 77.3z\"]\n  };\n  var faBathtub = faBath;\n  var faChessBishop = {\n    prefix: 'fas',\n    iconName: 'chess-bishop',\n    icon: [320, 512, [9821], \"f43a\", \"M64 384L48.3 368.3C17.4 337.4 0 295.4 0 251.7 0 213.1 13.5 175.8 38.2 146.1L106.7 64 96 64C78.3 64 64 49.7 64 32S78.3 0 96 0L224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.7 0 47.6 57.1-85.9 85.9c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l82.3-82.3c18.7 27.3 28.7 59.7 28.7 93 0 43.7-17.4 85.7-48.3 116.6L256 384 312.2 454.3c5 6.3 7.8 14.1 7.8 22.2 0 19.6-15.9 35.5-35.5 35.5L35.5 512c-19.6 0-35.5-15.9-35.5-35.5 0-8.1 2.7-15.9 7.8-22.2L64 384z\"]\n  };\n  var faPrescriptionBottleMedical = {\n    prefix: 'fas',\n    iconName: 'prescription-bottle-medical',\n    icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zM32 144l320 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zM160 248l0 40-40 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l40 0 0 40c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-40 40 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-40 0 0-40c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faPrescriptionBottleAlt = faPrescriptionBottleMedical;\n  var faDrawPolygon = {\n    prefix: 'fas',\n    iconName: 'draw-polygon',\n    icon: [512, 512, [58055, \"vector-polygon\"], \"f5ee\", \"M64 0c23.7 0 44.4 12.9 55.4 32l273.1 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 34-26.5 61.8-60 63.9l-2.1 2.9-71.5 99.1c3.6 8 5.6 16.9 5.6 26.2s-2 18.2-5.6 26.2l2.2 3.1 69.3 96 2.1 2.9c33.5 2.1 60 29.9 60 63.9 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-273.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-273.1C12.9 108.4 0 87.7 0 64 0 28.7 28.7 0 64 0zM394.2 413.4l-65.5-90.6-2.2-3.1c-2.1 .2-4.3 .3-6.5 .3-35.3 0-64-28.7-64-64s28.7-64 64-64c2.2 0 4.4 .1 6.5 .3l67.7-93.7c-.6-.9-1.1-1.7-1.6-2.6L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l273.1 0c.5-.9 1.1-1.8 1.6-2.6z\"]\n  };\n  var faVectorPolygon = faDrawPolygon;\n  var faICursor = {\n    prefix: 'fas',\n    iconName: 'i-cursor',\n    icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3l0 95.7-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7S17 513.4 34.7 511.9l8-.7c34.1-2.8 64.2-18.9 85.4-42.9 21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7c-34.1 2.8-64.2 18.9-85.4 42.9-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n  };\n  var faHeartCirclePlus = {\n    prefix: 'fas',\n    iconName: 'heart-circle-plus',\n    icon: [576, 512, [], \"e500\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM432 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n  };\n  var faShieldDog = {\n    prefix: 'fas',\n    iconName: 'shield-dog',\n    icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8 35.3 0 64-28.7 64-64l0-64 44.2 0c12.1 0 23.2 6.8 28.6 17.7l7.2 14.3 64 0c8.8 0 16 7.2 16 16l0 32c0 44.2-35.8 80-80 80l-48 0 0 50.7c0 7.3-5.9 13.3-13.3 13.3-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4 0-2.8 .6-5.5 1.9-8l15-30zM160 160l48 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n  };\n  var faGreaterThanEqual = {\n    prefix: 'fas',\n    iconName: 'greater-than-equal',\n    icon: [448, 512, [], \"f532\", \"M21.9 94.4C5.1 88.8-3.9 70.6 1.7 53.9S25.4 28.1 42.1 33.6l384 128C439.2 166 448 178.2 448 192s-8.8 26-21.9 30.4l-384 128c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5L314.8 192 21.9 94.4zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0z\"]\n  };\n  var faEnvelopeOpen = {\n    prefix: 'fas',\n    iconName: 'envelope-open',\n    icon: [512, 512, [62135], \"f2b6\", \"M64.4 175.8L256 33.9 447.6 175.8 289.5 293c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64.4 175.8zM256-32c-12.1 0-23.8 3.9-33.5 11L25.9 124.7C9.6 136.8 0 155.8 0 176.1L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5-21c-9.7-7.2-21.4-11-33.5-11z\"]\n  };\n  var faMound = {\n    prefix: 'fas',\n    iconName: 'mound',\n    icon: [512, 512, [], \"e52d\", \"M112.4 179.2C142 127.7 196.8 96 256.2 96s114.2 31.7 143.9 83.2L508.7 368c12.3 21.3-3.1 48-27.7 48L31.5 416c-24.6 0-40-26.6-27.7-48L112.4 179.2z\"]\n  };\n  var faVoicemail = {\n    prefix: 'fas',\n    iconName: 'voicemail',\n    icon: [640, 512, [], \"f897\", \"M144 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM263.8 320c15.3-22.9 24.2-50.4 24.2-80 0-79.5-64.5-144-144-144S0 160.5 0 240 64.5 384 144 384l352 0c79.5 0 144-64.5 144-144S575.5 96 496 96 352 160.5 352 240c0 29.6 8.9 57.1 24.2 80l-112.5 0zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n  };\n  var faVest = {\n    prefix: 'fas',\n    iconName: 'vest',\n    icon: [448, 512, [], \"e085\", \"M200 464l0-170.1c0-3.9-.5-7.8-1.4-11.6L144.4 65.4C162.1 77.2 188.2 88 224 88s61.9-10.8 79.6-22.6L249.4 282.3c-1 3.8-1.4 7.7-1.4 11.6L248 464c0 26.5 21.5 48 48 48l104 0c26.5 0 48-21.5 48-48l0-193.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6L384 48c0-26.5-21.5-48-48-48l-3.5 0c-.3 0-.6 0-1 0-.6 0-1.2 0-1.8 0-18.8 0-34.1 9.7-44.1 18.8-9.3 8.4-28.5 21.2-61.7 21.2s-52.4-12.8-61.7-21.2c-10-9.1-25.3-18.8-44.1-18.8-.6 0-1.2 0-1.8 0-.3 0-.6 0-1 0L112 0C85.5 0 64 21.5 64 48l0 97.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5L0 464c0 26.5 21.5 48 48 48l104 0c26.5 0 48-21.5 48-48z\"]\n  };\n  var faAudioDescription = {\n    prefix: 'fas',\n    iconName: 'audio-description',\n    icon: [512, 512, [], \"f29e\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm96 96l0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 48 0 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-35.3-28.7-64-64-64l-16 0c-35.3 0-64 28.7-64 64zm48 32l0-32c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 32-48 0zm152-96c-13.3 0-24 10.7-24 24l0 144c0 13.3 10.7 24 24 24l48 0c39.8 0 72-32.2 72-72l0-48c0-39.8-32.2-72-72-72l-48 0zm48 144l-24 0 0-96 24 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24z\"]\n  };\n  var faW = {\n    prefix: 'fas',\n    iconName: 'w',\n    icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7L172.2 346.7 257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23L403.8 346.7 514 52.8c6.2-16.5 24.6-24.9 41.2-18.7S580.2 58.7 574 75.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n  };\n  var faEyeDropper = {\n    prefix: 'fas',\n    iconName: 'eye-dropper',\n    icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2l-101.6 101.6-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 101.6-101.6c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4-26.6 39.9c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4l39.9-26.6 42.4 0c21.2 0 41.6-8.4 56.6-23.4l109.4-109.4-45.3-45.3-109.4 109.4c-3 3-7.1 4.7-11.3 4.7l-36.1 0 0-36.1c0-4.2 1.7-8.3 4.7-11.3l109.4-109.4-45.3-45.3-109.4 109.4z\"]\n  };\n  var faEyeDropperEmpty = faEyeDropper;\n  var faEyedropper = faEyeDropper;\n  var faCircleXmark = {\n    prefix: 'fas',\n    iconName: 'circle-xmark',\n    icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM167 167c9.4-9.4 24.6-9.4 33.9 0l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faTimesCircle = faCircleXmark;\n  var faXmarkCircle = faCircleXmark;\n  var faTrailer = {\n    prefix: 'fas',\n    iconName: 'trailer',\n    icon: [640, 512, [], \"e041\", \"M32 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-296.4 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-2.7 .1-5.4 .4-8L96 416c-35.3 0-64-28.7-64-64L32 96zm408 16c-13.3 0-24 10.7-24 24l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24zM112 136l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm176-24c-13.3 0-24 10.7-24 24l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24zM264 424a40 40 0 1 0 -80 0 40 40 0 1 0 80 0z\"]\n  };\n  var faTurkishLiraSign = {\n    prefix: 'fas',\n    iconName: 'turkish-lira-sign',\n    icon: [448, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M160 32c17.7 0 32 14.3 32 32l0 43.6 121.4-34.7c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-134.6 38.5 0 46.1 121.4-34.7c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-134.6 38.5 0 162.5 72 0c53 0 96-43 96-96 0-17.7 14.3-32 32-32s32 14.3 32 32c0 88.4-71.6 160-160 160l-104 0c-17.7 0-32-14.3-32-32l0-176.2-25.4 7.3c-12.7 3.6-26-3.7-29.7-16.5s3.7-26 16.5-29.7l38.6-11 0-46.1-25.4 7.3c-12.7 3.6-26-3.7-29.7-16.5s3.7-26 16.5-29.7l38.6-11 0-61.9c0-17.7 14.3-32 32-32z\"]\n  };\n  var faTry = faTurkishLiraSign;\n  var faTurkishLira = faTurkishLiraSign;\n  var faVolcano = {\n    prefix: 'fas',\n    iconName: 'volcano',\n    icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15 11.2-18.6 31.6-31 54.8-31s43.6 12.4 54.8 31c11.1-9.4 25.5-15 41.2-15 35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8 19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9 11.3 0 21.8-5.6 28-15l9.7-14.6-59-66.3c-9.1-10.2-22.2-16.1-35.9-16.1l-41.8 0c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4 4.7-3.5zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2l41.8 0c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7 0 28.8-23.4 52.2-52.2 52.2L52.2 512C23.4 512 0 488.6 0 459.8 0 447.1 4.7 434.7 13.2 425.2l150.2-169z\"]\n  };\n  var faWandSparkles = {\n    prefix: 'fas',\n    iconName: 'wand-sparkles',\n    icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9c-6.3 7.1-15.3 11.1-24.8 11.1-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7c-6.2-6.2-9.7-14.7-9.7-23.5 0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n  };\n  var faMicrophone = {\n    prefix: 'fas',\n    iconName: 'microphone',\n    icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96zM48 184c0-13.3-10.7-24-24-24S0 170.7 0 184l0 40c0 97.9 73.3 178.7 168 190.5l0 49.5-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-49.5c94.7-11.8 168-92.6 168-190.5l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 79.5-64.5 144-144 144S48 303.5 48 224l0-40z\"]\n  };\n  var faCrown = {\n    prefix: 'fas',\n    iconName: 'crown',\n    icon: [576, 512, [128081], \"f521\", \"M313 87.2c9.2-7.3 15-18.6 15-31.2 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 12.6 5.9 23.9 15 31.2L194.6 194.8c-10 15.7-31.3 19.6-46.2 8.4L88.9 158.7c4.5-6.4 7.1-14.3 7.1-22.7 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 21.8 17.5 39.6 39.2 40L87.8 393.5c4.7 31.3 31.6 54.5 63.3 54.5l273.8 0c31.7 0 58.6-23.2 63.3-54.5L520.8 176c21.7-.4 39.2-18.2 39.2-40 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 8.4 2.6 16.3 7.1 22.7l-59.4 44.6c-14.9 11.2-36.2 7.3-46.2-8.4L313 87.2z\"]\n  };\n  var faTentArrowTurnLeft = {\n    prefix: 'fas',\n    iconName: 'tent-arrow-turn-left',\n    icon: [512, 512, [], \"e580\", \"M-.5 113l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 350.1 0c22.1 0 40 17.9 40 40l0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24c0-48.6-39.4-88-88-88l-350.1 0 31-31c9.4-9.4 9.4-24.6 0-33.9S80.9-2.3 71.5 7L-.5 79c-9.4 9.4-9.4 24.6 0 33.9zM60.3 292.6L37.1 476c-2.4 19.1 12.5 36 31.7 36l154.5 0c17.7 0 32-14.3 32-32l0-117.4c0-5.9 4.7-10.6 10.6-10.6 4 0 7.7 2.3 9.5 5.9l68.2 136.5c5.4 10.8 16.5 17.7 28.6 17.7l71.9 0c19.3 0 34.2-16.9 31.7-36L452.7 292.7c-1.2-9.7-6.9-18.4-15.3-23.4L271.9 169.9c-10.2-6.1-22.9-6.1-33.1 .1L75.4 269.3c-8.3 5.1-13.9 13.7-15.1 23.3z\"]\n  };\n  var faTruckFast = {\n    prefix: 'fas',\n    iconName: 'truck-fast',\n    icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M64 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 32 50.7 0c17 0 33.3 6.7 45.3 18.7L621.3 192c12 12 18.7 28.3 18.7 45.3L640 384c0 35.3-28.7 64-64 64l-3.3 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64l-102.6 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64l-3.3 0c-35.3 0-64-28.7-64-64l0-48-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 240c-13.3 0-24-10.7-24-24s10.7-24 24-24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 144c-13.3 0-24-10.7-24-24S10.7 96 24 96l40 0zM576 288l0-50.7-45.3-45.3-50.7 0 0 96 96 0zM256 424a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm232 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n  };\n  var faShippingFast = faTruckFast;\n  var faUserPen = {\n    prefix: 'fas',\n    iconName: 'user-pen',\n    icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M256.1 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56c-98.5 0-178.3 79.8-178.3 178.3 0 16.4 13.3 29.7 29.7 29.7l196.5 0 10.9-54.5c4.3-21.7 15-41.6 30.6-57.2l67.3-67.3c-28-18.3-61.4-28.9-97.4-28.9l-59.4 0zM332.3 466.9l-11.9 59.6c-.2 .9-.3 1.9-.3 2.9 0 8 6.5 14.6 14.6 14.6 1 0 1.9-.1 2.9-.3l59.6-11.9c12.4-2.5 23.8-8.6 32.7-17.5l118.9-118.9-80-80-118.9 118.9c-8.9 8.9-15 20.3-17.5 32.7zm267.8-123c22.1-22.1 22.1-57.9 0-80s-57.9-22.1-80 0l-28.8 28.8 80 80 28.8-28.8z\"]\n  };\n  var faUserEdit = faUserPen;\n  var faUserClock = {\n    prefix: 'fas',\n    iconName: 'user-clock',\n    icon: [576, 512, [], \"f4fd\", \"M224 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM194.3 304l59.4 0c3.9 0 7.9 .1 11.8 .4-16.2 28.2-25.5 60.8-25.5 95.6 0 41.8 13.4 80.5 36 112L45.7 512C29.3 512 16 498.7 16 482.3 16 383.8 95.8 304 194.3 304zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-48c0-8.8-7.2-16-16-16z\"]\n  };\n  var faShower = {\n    prefix: 'fas',\n    iconName: 'shower',\n    icon: [512, 512, [128703], \"f2cc\", \"M64 131.9c0-19.8 16.1-35.9 35.9-35.9 9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.1-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32 44.7 32 0 76.7 0 131.9L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-316.1zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faSquareCaretUp = {\n    prefix: 'fas',\n    iconName: 'square-caret-up',\n    icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9S337.5 320 328 320l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n  };\n  var faCaretSquareUp = faSquareCaretUp;\n  var faMapLocation = {\n    prefix: 'fas',\n    iconName: 'map-location',\n    icon: [640, 512, [\"map-marked\"], \"f59f\", \"M576 48c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4L413.5 77.5 234.1 17.6c-8.1-2.7-16.8-2.1-24.4 1.7l-128 64C70.8 88.8 64 99.9 64 112l0 352c0 11.1 5.7 21.4 15.2 27.2s21.2 6.4 31.1 1.4l116.1-58.1 173.3 57.8c-4.3-6.4-8.5-13.1-12.6-19.9-11-18.3-21.9-39.3-30-61.8l-101.2-33.7 0-284.5 128 42.7 0 99.3c31-35.8 77-58.4 128-58.4 22.6 0 44.2 4.4 64 12.5L576 48zM392 341.9c0 68.9 64.1 150.4 98.6 189.3 11.6 13 31.3 13 42.9 0 34.5-38.9 98.6-120.4 98.6-189.3 0-65.1-53.7-117.9-120-117.9S392 276.8 392 341.9z\"]\n  };\n  var faMapMarked = faMapLocation;\n  var faPenFancy = {\n    prefix: 'fas',\n    iconName: 'pen-fancy',\n    icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1c15-17.2 36.7-27.1 59.6-27.1 43.6 0 79 35.4 79 79 0 22.8-9.9 44.6-27.1 59.6L283.7 313.8 273 303 209 239 198.2 228.3 373.5 27.1zM161.1 259C162 260 188 286 239 337l13.9 13.9-17.1 74.2c-3.9 17.1-16.9 30.7-33.8 35.4l-169.8 47.5 92.3-92.3c1.2 .1 2.3 .2 3.5 .2 17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32c0 1.2 .1 2.4 .2 3.5L3.9 479.8 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8L161.1 259z\"]\n  };\n  var faEuroSign = {\n    prefix: 'fas',\n    iconName: 'euro-sign',\n    icon: [448, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M73.3 192C100.8 99.5 186.5 32 288 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-65.6 0-122 39.5-146.7 96L272 192c13.3 0 24 10.7 24 24s-10.7 24-24 24l-143.2 0c-.5 5.3-.8 10.6-.8 16s.3 10.7 .8 16L272 272c13.3 0 24 10.7 24 24s-10.7 24-24 24l-130.7 0c24.7 56.5 81.1 96 146.7 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-101.5 0-187.2-67.5-214.7-160L40 320c-13.3 0-24-10.7-24-24s10.7-24 24-24l24.6 0c-.7-10.5-.7-21.5 0-32L40 240c-13.3 0-24-10.7-24-24s10.7-24 24-24l33.3 0z\"]\n  };\n  var faEur = faEuroSign;\n  var faEuro = faEuroSign;\n  var faHouseCircleXmark = {\n    prefix: 'fas',\n    iconName: 'house-circle-xmark',\n    icon: [640, 512, [], \"e50b\", \"M496 544a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l217.6 202c-10.2-1.7-20.7-2.6-31.3-2.6-78.6 0-146.2 47.2-175.9 114.8-5-1.8-10.5-2.8-16.1-2.8l-32 0c-26.5 0-48 21.5-48 48l0 96 90.9 0c6.1 17.3 14.6 33.4 25.2 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM555.3 340.7c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7c6.2-6.2 6.2-16.4 0-22.6z\"]\n  };\n  var faLiraSign = {\n    prefix: 'fas',\n    iconName: 'lira-sign',\n    icon: [384, 512, [8356], \"f195\", \"M84.9 256l-28.4 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l11.6 0C53.2 124.7 116.8 42 207.6 42l8.2 0c33.6 0 66.2 11.3 92.5 32.2l16.1 12.7c13.9 11 16.2 31.1 5.2 45s-31.1 16.2-45 5.2l-16.1-12.7c-15-11.9-33.6-18.4-52.8-18.4l-8.2 0c-53.8 0-90.1 52.9-73.5 102l162.4 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-145.1 0c2.3 10.6 3.6 21.3 3.9 32l141.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L150 336c-4.8 18.6-12.6 36.5-23.6 52.9l-18.1 27.1 212.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-272 0c-11.8 0-22.6-6.5-28.2-16.9s-5-23 1.6-32.9l51.2-76.8c3.7-5.6 6.9-11.4 9.4-17.4l-26 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l34.8 0c-.5-10.8-2.6-21.6-6.4-32z\"]\n  };\n  var faYenSign = {\n    prefix: 'fas',\n    iconName: 'yen-sign',\n    icon: [384, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M74.9 46.7c-9.6-14.9-29.4-19.2-44.2-9.6S11.5 66.4 21.1 81.3L143.7 272 88 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 32-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-32 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-55.7 0 122.6-190.7c9.6-14.9 5.3-34.7-9.6-44.2s-34.7-5.3-44.2 9.6L192 228.8 74.9 46.7z\"]\n  };\n  var faCny = faYenSign;\n  var faJpy = faYenSign;\n  var faRmb = faYenSign;\n  var faYen = faYenSign;\n  var faBoxOpen = {\n    prefix: 'fas',\n    iconName: 'box-open',\n    icon: [640, 512, [], \"f49e\", \"M560.3 237.2c10.4 11.8 28.3 14.4 41.8 5.5 14.7-9.8 18.7-29.7 8.9-44.4l-48-72c-2.8-4.2-6.6-7.7-11.1-10.2L351.4 4.7c-19.3-10.7-42.8-10.7-62.2 0L88.8 116c-5.4 3-9.7 7.4-12.6 12.8L27.7 218.7c-12.6 23.4-3.8 52.5 19.6 65.1l33 17.7 0 53.3c0 23 12.4 44.3 32.4 55.7l176 99.7c19.6 11.1 43.5 11.1 63.1 0l176-99.7c20.1-11.4 32.4-32.6 32.4-55.7l0-117.5zm-240-9.8L170.2 144 320.3 60.6 470.4 144 320.3 227.4zm-41.5 50.2l-21.3 46.2-165.8-88.8 25.4-47.2 161.7 89.8z\"]\n  };\n  var faTruckField = {\n    prefix: 'fas',\n    iconName: 'truck-field',\n    icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64l224 0c23.7 0 44.4 12.9 55.4 32l40.4 0c32.4 0 61.6 19.6 74 49.5l43.8 106.3 1.7 4.2 24.7 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-.4 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-2.7 .1-5.4 .4-8l-144.7 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-3.6 .2-7.1 .6-10.5-19-6.4-32.6-24.4-32.6-45.5l0-48c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-32zm352 32l0 96 82.1 0-35.4-86.1c-2.5-6-8.3-9.9-14.8-9.9L384 128zM192 392a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm280 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n  };\n  var faLocationPinLock = {\n    prefix: 'fas',\n    iconName: 'location-pin-lock',\n    icon: [512, 512, [], \"e51f\", \"M0 188.6C0 84.4 86 0 192 0 294.1 0 377.6 78.3 383.6 177 320.7 185.1 272 238.8 272 304l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 75.7c-9.9 11.6-18.9 21.7-26.4 29.8-11.8 12.8-31.5 12.8-43.3 0-50.2-54.5-170.4-197.5-170.4-316.8zM192 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm240 48.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM288 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faPersonPraying = {\n    prefix: 'fas',\n    iconName: 'person-praying',\n    icon: [384, 512, [128720, \"pray\"], \"f683\", \"M320 64a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM200.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36c-15.6-21.5-40.6-34.2-67.2-34.2-30.9 0-59.2 17.1-73.6 44.4L47.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L126.6 432 40 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7l-116.1-85.8 45-90z\"]\n  };\n  var faPray = faPersonPraying;\n  var faClipboardList = {\n    prefix: 'fas',\n    iconName: 'clipboard-list',\n    icon: [384, 512, [], \"f46d\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zM128 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32 0c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0c-13.3 0-24 10.7-24 24zm0 128c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0c-13.3 0-24 10.7-24 24zM96 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faSackDollar = {\n    prefix: 'fas',\n    iconName: 'sack-dollar',\n    icon: [512, 512, [128176], \"f81d\", \"M328 112l-144 0-37.3-74.5c-1.8-3.6-2.7-7.6-2.7-11.6 0-14.3 11.6-25.9 25.9-25.9L342.1 0c14.3 0 25.9 11.6 25.9 25.9 0 4-.9 8-2.7 11.6L328 112zM169.6 160l172.8 0 48.7 40.6C457.6 256 496 338 496 424.5 496 472.8 456.8 512 408.5 512l-305.1 0C55.2 512 16 472.8 16 424.5 16 338 54.4 256 120.9 200.6L169.6 160zM260 224c-11 0-20 9-20 20l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L216 384c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20z\"]\n  };\n  var faMountainSun = {\n    prefix: 'fas',\n    iconName: 'mountain-sun',\n    icon: [576, 512, [], \"e52f\", \"M256.5 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5-7.2 12.1-20.3 19.5-34.3 19.5l-432 0c-14.1 0-27.1-7.4-34.3-19.5s-7.5-27.1-.8-39.5l216-400 2.9-4.6C231.7 6.2 243.6 0 256.5 0zM170.4 249.9l26.8 26.8c6.2 6.2 16.4 6.2 22.6 0l43.3-43.3c6-6 14.1-9.4 22.6-9.4l42.8 0-72.1-133.5-86.1 159.4zM496.5 160a80 80 0 1 1 0-160 80 80 0 1 1 0 160z\"]\n  };\n  var faArrowUpWideShort = {\n    prefix: 'fas',\n    iconName: 'arrow-up-wide-short',\n    icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM320 480l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n  };\n  var faSortAmountUp = faArrowUpWideShort;\n  var faUsersLine = {\n    prefix: 'fas',\n    iconName: 'users-line',\n    icon: [576, 512, [], \"e592\", \"M224 128a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM176 336c0-61.9 50.1-112 112-112s112 50.1 112 112l0 8c0 13.3-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24l0-8zM392 144a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm27.2 100.4c9.1-2.9 18.8-4.4 28.8-4.4 53 0 96 43 96 96l0 10.7c0 11.8-9.6 21.3-21.3 21.3l-78.8 0c2.7-7.5 4.1-15.6 4.1-24l0-8c0-34.1-10.6-65.7-28.8-91.6zm-262.4 0c-18.2 26-28.8 57.5-28.8 91.6l0 8c0 8.4 1.4 16.5 4.1 24l-78.8 0C41.6 368 32 358.4 32 346.7L32 336c0-53 43-96 96-96 10 0 19.7 1.5 28.8 4.4zM72 144a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM0 440c0-13.3 10.7-24 24-24l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 464c-13.3 0-24-10.7-24-24z\"]\n  };\n  var faStarOfDavid = {\n    prefix: 'fas',\n    iconName: 'star-of-david',\n    icon: [512, 512, [10017], \"f69a\", \"M415.9 311.9l-27.8 48.1 55.7 0-27.8-48.1zM383.6 256l-60.2-104-134.8 0-60.2 104 60.2 104 134.8 0 60.2-104zm64.7 0l58.4 100.9c3.5 6 5.3 12.8 5.3 19.7 0 21.7-17.6 39.4-39.4 39.4l-117 0-61.3 105.8C286.5 535.6 271.8 544 256 544s-30.5-8.4-38.4-22.2l-61.3-105.8-117 0c-21.7 0-39.4-17.6-39.4-39.4 0-6.9 1.8-13.7 5.3-19.7L63.7 256 5.3 155.1C1.8 149.1 0 142.3 0 135.4 0 113.6 17.6 96 39.4 96l117 0 61.3-105.8C225.5-23.6 240.2-32 256-32s30.5 8.4 38.4 22.2l61.3 105.8 117 0c21.7 0 39.4 17.6 39.4 39.4 0 6.9-1.8 13.7-5.3 19.7L448.3 256zM388.1 152l27.8 48.1 27.8-48.1-55.7 0zM291 96l-35-60.4-35 60.4 70 0zM123.9 152l-55.7 0 27.8 48.1 27.8-48.1zM96.1 311.9l-27.8 48.1 55.7 0-27.8-48.1zM221 416l35 60.4 35-60.4-70 0z\"]\n  };\n  var faNotesMedical = {\n    prefix: 'fas',\n    iconName: 'notes-medical',\n    icon: [512, 512, [], \"f481\", \"M96 352c0 35.3 28.7 64 64 64l181.5 0c17 0 33.3-6.7 45.3-18.7L493.3 290.7c12-12 18.7-28.3 18.7-45.3L512 64c0-35.3-28.7-64-64-64L160 0C124.7 0 96 28.7 96 64l0 288zM288 112l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 448c0 35.3 28.7 64 64 64l264 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 464c-8.8 0-16-7.2-16-16l0-328z\"]\n  };\n  var faAustralSign = {\n    prefix: 'fas',\n    iconName: 'austral-sign',\n    icon: [448, 512, [], \"e0a9\", \"M266.5 240l-85 0 42.5-106.4 42.5 106.4zm68.9 0L262.9 58.3C256.5 42.4 241.1 32 224 32s-32.5 10.4-38.9 26.3L112.6 240 32 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l61.4 0-19.2 48-42.3 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l23.1 0-20.8 52.1c-6.6 16.4 1.4 35 17.9 41.6s35-1.4 41.6-17.9l30.3-75.9 200 0 30.3 75.9c6.6 16.4 25.2 24.4 41.6 17.9s24.4-25.2 17.9-41.6L392.9 384 416 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-42.3 0-19.2-48 61.4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80.6 0zm-49.7 48l19.2 48-161.6 0 19.2-48 123.3 0z\"]\n  };\n  var faClipboardUser = {\n    prefix: 'fas',\n    iconName: 'clipboard-user',\n    icon: [384, 512, [], \"f7f3\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zM192 344a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM98.3 413c-12.9 15.6 2.2 35 22.4 35l142.5 0c20.2 0 35.3-19.4 22.4-35-14.7-17.7-36.9-29-61.7-29l-64 0c-24.8 0-47 11.3-61.7 29z\"]\n  };\n  var faFileImage = {\n    prefix: 'fas',\n    iconName: 'file-image',\n    icon: [384, 512, [128443], \"f1c5\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM128 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM92.6 448l198.8 0c15.8 0 28.6-12.8 28.6-28.6 0-7.3-2.8-14.4-7.9-19.7L215.3 297.9c-6-6.3-14.4-9.9-23.2-9.9l-.3 0c-8.8 0-17.1 3.6-23.2 9.9L71.9 399.7C66.8 405 64 412.1 64 419.4 64 435.2 76.8 448 92.6 448z\"]\n  };\n  var faSquareCaretRight = {\n    prefix: 'fas',\n    iconName: 'square-caret-right',\n    icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4S160 369.5 160 360l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n  };\n  var faCaretSquareRight = faSquareCaretRight;\n  var faVial = {\n    prefix: 'fas',\n    iconName: 'vial',\n    icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L306.7 64 28.1 342.6C10.1 360.6 0 385 0 410.5L0 416c0 53 43 96 96 96l5.5 0c25.5 0 49.9-10.1 67.9-28.1l278.6-278.6 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zM205.3 256l146.7-146.7 50.7 50.7-96 96-101.5 0z\"]\n  };\n  var faHelicopter = {\n    prefix: 'fas',\n    iconName: 'helicopter',\n    icon: [576, 512, [128641], \"f533\", \"M176 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l152 0 0 48-220.8 0-32.8-39.4C69.9 83.2 63.1 80 56 80L24 80C15.7 80 8 84.3 3.6 91.4s-4.8 15.9-1.1 23.4l48 96C54.6 218.9 62.9 224 72 224l107.8 0 104 143.1c15.1 20.7 39.1 32.9 64.7 32.9l75.5 0c75.1 0 136-60.9 136-136S499.1 128 424 128l-48 0 0-48 152 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L176 32zM376 192l48 0c39.8 0 72 32.2 72 72s-32.2 72-72 72l-48 0 0-144zM552 416c-13.3 0-24 10.7-24 24 0 4.4-3.6 8-8 8l-272 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24z\"]\n  };\n  var faMitten = {\n    prefix: 'fas',\n    iconName: 'mitten',\n    icon: [448, 512, [], \"f7b5\", \"M352 384L64 384 5.4 178.9C1.8 166.4 0 153.4 0 140.3 0 62.8 62.8 0 140.3 0l3.4 0c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192l2.8 0c34.9 0 63.3 28.3 63.3 63.3 0 15.9-6 31.2-16.8 42.9L352 384zM32 464c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 16c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-16z\"]\n  };\n  var faGasPump = {\n    prefix: 'fas',\n    iconName: 'gas-pump',\n    icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0L256 0c35.3 0 64 28.7 64 64l0 192 8 0c48.6 0 88 39.4 88 88l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-154c-27.6-7.1-48-32.2-48-62l0-59.5-25.8-28.3c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l71.7 78.8c9.4 10.3 14.6 23.7 14.6 37.7L512 376c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-32c0-22.1-17.9-40-40-40l-8 0 0 161.4c9.3 3.3 16 12.2 16 22.6 0 13.3-10.7 24-24 24L40 512c-13.3 0-24-10.7-24-24 0-10.5 6.7-19.3 16-22.6L32 64zM96 80l0 96c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L112 64c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faEnvelopeCircleCheck = {\n    prefix: 'fas',\n    iconName: 'envelope-circle-check',\n    icon: [640, 512, [], \"e4e8\", \"M64 112c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 81.4c-24.4-11.2-51.4-17.4-80-17.4-87.7 0-161.7 58.8-184.7 139.2-7.1-1.3-14.1-4.2-20.1-8.8l-208-156C71.1 141.3 64 127.1 64 112zM304 368c0 28.6 6.2 55.6 17.4 80L128 448c-35.3 0-64-28.7-64-64l0-188 198.4 148.8c12.6 9.4 26.9 15.4 41.7 17.9 0 1.8-.1 3.5-.1 5.3zm48 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n  };\n  var faPersonSkating = {\n    prefix: 'fas',\n    iconName: 'person-skating',\n    icon: [512, 512, [\"skating\"], \"f7c5\", \"M368 56a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM128 128c0-17.7 14.3-32 32-32l150.1 0c49.9 0 74.9 60.3 39.6 95.6l-63.9 63.9 69.8 31c17.3 7.7 28.5 24.9 28.5 43.9l0 85.6c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-75.2-82.4-36.6c-41-18.2-51-72-19.3-103.7l40.4-40.4-98.7 0c-17.7 0-32-14.3-32-32zM89.4 361.4l75.9-75.9c7.7 19.7 21.6 37.3 41 49.6l-71.6 71.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm346.5 87.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4L304 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l88.8 0c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM143.2 486.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L12.7 419.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n  };\n  var faSkating = faPersonSkating;\n  var faSun = {\n    prefix: 'fas',\n    iconName: 'sun',\n    icon: [576, 512, [9728], \"f185\", \"M178.2-10.1c7.4-3.1 15.8-2.2 22.5 2.2l87.8 58.2 87.8-58.2c6.7-4.4 15.1-5.2 22.5-2.2S411.4-.5 413 7.3l20.9 103.2 103.2 20.9c7.8 1.6 14.4 7 17.4 14.3s2.2 15.8-2.2 22.5l-58.2 87.8 58.2 87.8c4.4 6.7 5.2 15.1 2.2 22.5s-9.6 12.8-17.4 14.3L433.8 401.4 413 504.7c-1.6 7.8-7 14.4-14.3 17.4s-15.8 2.2-22.5-2.2l-87.8-58.2-87.8 58.2c-6.7 4.4-15.1 5.2-22.5 2.2s-12.8-9.6-14.3-17.4L143 401.4 39.7 380.5c-7.8-1.6-14.4-7-17.4-14.3s-2.2-15.8 2.2-22.5L82.7 256 24.5 168.2c-4.4-6.7-5.2-15.1-2.2-22.5s9.6-12.8 17.4-14.3L143 110.6 163.9 7.3c1.6-7.8 7-14.4 14.3-17.4zM207.6 256a80.4 80.4 0 1 1 160.8 0 80.4 80.4 0 1 1 -160.8 0zm208.8 0a128.4 128.4 0 1 0 -256.8 0 128.4 128.4 0 1 0 256.8 0z\"]\n  };\n  var faBaseball = {\n    prefix: 'fas',\n    iconName: 'baseball',\n    icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M232.4 1.1c-122.2 11.4-219.5 108.7-230.9 230.9 16.2-.1 32-1.8 47.2-5 13-2.7 25.7 5.5 28.4 18.5s-5.5 25.7-18.5 28.4c-18.4 3.9-37.6 6-57.1 6.1 11.4 122.2 108.7 219.5 230.9 230.9 .1-19.5 2.2-38.7 6.1-57.1 2.7-13 15.5-21.3 28.4-18.5s21.3 15.5 18.5 28.4c-3.2 15.2-4.9 31-5 47.2 122.2-11.4 219.5-108.7 230.9-230.9-16.2 .1-32 1.8-47.2 5-13 2.7-25.7-5.5-28.4-18.5s5.5-25.7 18.5-28.4c18.4-3.9 37.6-6 57.1-6.1-11.4-122.2-108.7-219.5-230.9-230.9-.1 19.5-2.2 38.7-6.1 57.1-2.7 13-15.5 21.3-28.4 18.5s-21.3-15.5-18.5-28.4c3.2-15.2 4.9-31 5-47.2zm2.8 151.4c-21.4 32.9-49.5 60.9-82.3 82.3-11.1 7.2-26 4.1-33.2-7s-4.1-26 7-33.2c27.2-17.7 50.5-41 68.3-68.3 7.2-11.1 22.1-14.3 33.2-7s14.3 22.1 7 33.2zM393.1 284.2c7.2 11.1 4.1 26-7 33.2-27.2 17.7-50.5 41-68.3 68.3-7.2 11.1-22.1 14.3-33.2 7s-14.3-22.1-7-33.2c21.4-32.9 49.5-60.9 82.3-82.3 11.1-7.2 26-4.1 33.2 7z\"]\n  };\n  var faBaseballBall = faBaseball;\n  var faImage = {\n    prefix: 'fas',\n    iconName: 'image',\n    icon: [448, 512, [], \"f03e\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 80a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM272 224c8.4 0 16.1 4.4 20.5 11.5l88 144c4.5 7.4 4.7 16.7 .5 24.3S368.7 416 360 416L88 416c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l26.4 37.8 61.4-100.5c4.4-7.1 12.1-11.5 20.5-11.5z\"]\n  };\n  var faNotdef = {\n    prefix: 'fas',\n    iconName: 'notdef',\n    icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7 64 390.3zM102.5 448L281.5 448 192 313.7 102.5 448zm128-192L320 390.3 320 121.7 230.5 256zM281.5 64L102.5 64 192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n  };\n  var faBasketball = {\n    prefix: 'fas',\n    iconName: 'basketball',\n    icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M92.7 58.8l78.4 78.4c18.2-25 28.9-55.9 28.9-89.2 0-14.1-1.9-27.7-5.5-40.6-38 9.4-72.6 27.2-101.8 51.4zM58.8 92.7c-24.2 29.2-42 63.8-51.4 101.8 12.9 3.6 26.5 5.5 40.6 5.5 33.3 0 64.1-10.7 89.2-28.9L58.8 92.7zM256 0c-4.6 0-9.2 .1-13.7 .4 3.7 15.3 5.7 31.2 5.7 47.6 0 46.6-15.9 89.4-42.6 123.4L256 222.1 419.3 58.8C374.9 22.1 318.1 0 256 0zM48 248c-16.4 0-32.4-2-47.6-5.7-.2 4.5-.4 9.1-.4 13.7 0 62.1 22.1 118.9 58.8 163.3L222.1 256 171.4 205.4C137.4 232.1 94.6 248 48 248zm463.6 21.7c.2-4.5 .4-9.1 .4-13.7 0-62.1-22.1-118.9-58.8-163.3L289.9 256 340.6 306.6c34-26.7 76.9-42.6 123.4-42.6 16.4 0 32.4 2 47.6 5.7zm-7.1 47.8c-12.9-3.6-26.5-5.5-40.6-5.5-33.3 0-64.1 10.7-89.2 28.9l78.4 78.4c24.2-29.2 42-63.8 51.4-101.8zM340.9 374.8c-18.2 25-28.9 55.9-28.9 89.2 0 14.1 1.9 27.7 5.5 40.6 38-9.4 72.6-27.2 101.8-51.4l-78.4-78.4zm-34.3-34.3L256 289.9 92.7 453.2c44.3 36.7 101.2 58.8 163.3 58.8 4.6 0 9.2-.1 13.7-.4-3.7-15.3-5.7-31.2-5.7-47.6 0-46.6 15.9-89.4 42.6-123.4z\"]\n  };\n  var faBasketballBall = faBasketball;\n  var faPencil = {\n    prefix: 'fas',\n    iconName: 'pencil',\n    icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M36.4 353.2c4.1-14.6 11.8-27.9 22.6-38.7l181.2-181.2 33.9-33.9c16.6 16.6 51.3 51.3 104 104l33.9 33.9-33.9 33.9-181.2 181.2c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 510.6c-8.3 2.3-17.3 0-23.4-6.2S-1.4 489.3 .9 481L36.4 353.2zm55.6-3.7c-4.4 4.7-7.6 10.4-9.3 16.6l-24.1 86.9 86.9-24.1c6.4-1.8 12.2-5.1 17-9.7L91.9 349.5zm354-146.1c-16.6-16.6-51.3-51.3-104-104L308 65.5C334.5 39 349.4 24.1 352.9 20.6 366.4 7 384.8-.6 404-.6S441.6 7 455.1 20.6l35.7 35.7C504.4 69.9 512 88.3 512 107.4s-7.6 37.6-21.2 51.1c-3.5 3.5-18.4 18.4-44.9 44.9z\"]\n  };\n  var faPencilAlt = faPencil;\n  var faPersonWalkingArrowLoopLeft = {\n    prefix: 'fas',\n    iconName: 'person-walking-arrow-loop-left',\n    icon: [640, 512, [], \"e551\", \"M160 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM73.4 227.9l22.6-22.6 0 69.3c0 28 12.2 54.7 33.5 72.9l71.4 61.2c5.9 5.1 9.8 12.1 10.9 19.8l12.6 88.1c2.5 17.5 18.7 29.7 36.2 27.2s29.7-18.7 27.2-36.2l-12.6-88.1c-3.3-23.1-14.9-44.1-32.6-59.3l-34.5-29.6 0-115.2 3.8 4.7c18.2 22.8 45.8 36 75 36l33.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-33.2 0c-9.7 0-18.9-4.4-25-12l-17.9-22.4c-23-28.8-57.9-45.6-94.8-45.6-32.2 0-63.1 12.8-85.8 35.6L28.1 182.6C10.1 200.6 0 225 0 250.5L0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-37.5c0-8.5 3.4-16.6 9.4-22.6zM85.8 407.3c-1.5 5.2-4.3 10-8.1 13.8L9.4 489.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.3-68.3c11.5-11.5 19.9-25.8 24.4-41.5l2.2-7.6-46-39.4c-2.5-2.2-5-4.4-7.4-6.8L85.8 407.3zM359 335c-9.4 9.4-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 102.1 0c1.2 0 2.4-.1 3.5-.3 56.1-3.9 100.5-50.6 100.5-107.7 0-59.6-48.4-108-108-108l-92 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l92 0c33.1 0 60 26.9 60 60s-26.9 60-60 60l-98.1 0 31-31c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-72 72z\"]\n  };\n  var faDiceSix = {\n    prefix: 'fas',\n    iconName: 'dice-six',\n    icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faAnglesDown = {\n    prefix: 'fas',\n    iconName: 'angles-down',\n    icon: [384, 512, [\"angle-double-down\"], \"f103\", \"M214.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 402.7 329.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 210.7 329.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n  };\n  var faAngleDoubleDown = faAnglesDown;\n  var faSyringe = {\n    prefix: 'fas',\n    iconName: 'syringe',\n    icon: [576, 512, [128137], \"f48e\", \"M497.5-17c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l15 15-46.1 46.1-63-63c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l7 7-78.1 78.1 41 41c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-41-41-46.1 46.1 41 41c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-41-41-37.7 37.7c-10.5 10.5-16.4 24.7-16.4 39.6l0 88.8-57 57c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57 88.8 0c14.9 0 29.1-5.9 39.6-16.4l229.7-229.7 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-63-63 46.1-46.1 15 15c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-64-64z\"]\n  };\n  var faWheatAwn = {\n    prefix: 'fas',\n    iconName: 'wheat-awn',\n    icon: [576, 512, [\"wheat-alt\"], \"e2cd\", \"M79.7 234.6c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.2 83.9 31.7-7.7 66.2 1 90.6 25.3l46.1 46.1c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-37.5 37.5-98.3 37.5-135.8 0L134.1 444.3 49.4 529c-9.4 9.4-24.5 9.4-33.9 0-9.4-9.4-9.4-24.6 0-33.9l84.7-84.7-30.5-30.5c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zm104-104c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.2 83.9 31.7-7.7 66.2 1 90.6 25.3l46.1 46.1c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-37.5 37.5-98.3 37.5-135.8 0l-94.9-94.9c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zM495.2 15c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.2L529.2 49 414.7 163.4c7.7 1 15.2 3 22.5 5.9L495.5 111c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1l-1.7 1.8-52.7 52.7 39 39c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-37.5 37.5-98.3 37.5-135.8 0l-94.9-94.9c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1c6.2-4.1 14.7-3.4 20.1 2.1l39 39 52.7-52.7c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1l-1.7 1.8-58.3 58.3c2.8 7.1 4.7 14.5 5.7 22.1L495.2 15z\"]\n  };\n  var faWheatAlt = faWheatAwn;\n  var faPlaneUp = {\n    prefix: 'fas',\n    iconName: 'plane-up',\n    icon: [512, 512, [], \"e22d\", \"M200 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 173.6 159.2c6.6 6.1 10.4 14.6 10.4 23.6l0 43.7c0 10.9-10.7 18.6-21.1 15.2l-162.9-54.3 0 99.7 66 52.8c3.8 3 6 7.6 6 12.5l0 19.8c0 10.4-9.8 18-19.9 15.5L256 512 147.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C26.7 396.4 16 388.7 16 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L200 151.3 200 24z\"]\n  };\n  var faAlignCenter = {\n    prefix: 'fas',\n    iconName: 'align-center',\n    icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z\"]\n  };\n  var faHockeyPuck = {\n    prefix: 'fas',\n    iconName: 'hockey-puck',\n    icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96 256 43 256 96-114.6 96-256 96zM0 352L0 242.7c16.9 12.3 37 22.2 58.1 30.1 53 19.9 123 31.2 197.9 31.2s144.9-11.3 197.9-31.2c21.2-7.9 41.2-17.8 58.1-30.1L512 352c0 53-114.6 96-256 96S0 405 0 352z\"]\n  };\n  var faCircleArrowLeft = {\n    prefix: 'fas',\n    iconName: 'circle-arrow-left',\n    icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM135 239l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-39 39 150.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-150.1 0 39 39c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faArrowCircleLeft = faCircleArrowLeft;\n  var faPlugCircleBolt = {\n    prefix: 'fas',\n    iconName: 'plug-circle-bolt',\n    icon: [640, 512, [], \"e55b\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm177.4-77c-5.8-4.2-13.8-4-19.4 .5l-80 64c-5.3 4.2-7.4 11.4-5.1 17.8S433.2 416 440 416l32.9 0-15.9 42.4c-2.5 6.7-.2 14.3 5.6 18.6s13.8 4 19.4-.5l80-64c5.3-4.2 7.4-11.4 5.1-17.8S558.8 384 552 384l-32.9 0 15.9-42.4c2.5-6.7 .2-14.3-5.6-18.6z\"]\n  };\n  var faRestroom = {\n    prefix: 'fas',\n    iconName: 'restroom',\n    icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-154.8c-8.1 9.2-21.1 13.2-33.5 9.4-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C44.4 156.9 83.6 128 128 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1-12.4 3.9-25.4-.2-33.5-9.4L200 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM320 0c13.3 0 24 10.7 24 24l0 464c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-464c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1l-17.8 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n  };\n  var faAnchorLock = {\n    prefix: 'fas',\n    iconName: 'anchor-lock',\n    icon: [640, 512, [], \"e4ad\", \"M320.5 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3l16.2-14.2c2.1 113.1 94.4 204.1 208 204.1 28.3 0 55.4-5.7 80-15.9l0-.2 0-72.2c-14.4 9.6-30.6 16.7-48 20.7l0-257.9c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zm272 304.1l0 47.9-64 0 0-47.9c0-17.7 14.3-32 32-32s32 14.3 32 32zM416.5 400l0 96c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-96c0-20.9-13.4-38.7-32-45.3l0-50.6c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 50.6c-18.6 6.6-32 24.4-32 45.3z\"]\n  };\n  var faTimeline = {\n    prefix: 'fas',\n    iconName: 'timeline',\n    icon: [576, 512, [], \"e29c\", \"M160 169.3c28.3-12.3 48-40.5 48-73.3 0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3l0 54.7-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0 0 54.7c-28.3 12.3-48 40.5-48 73.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-54.7 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-54.7c28.3-12.3 48-40.5 48-73.3 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3l0 54.7-256 0 0-54.7z\"]\n  };\n  var faLightbulb = {\n    prefix: 'fas',\n    iconName: 'lightbulb',\n    icon: [384, 512, [128161], \"f0eb\", \"M292.9 384c7.3-22.3 21.9-42.5 38.4-59.9 32.7-34.4 52.7-80.9 52.7-132.1 0-106-86-192-192-192S0 86 0 192c0 51.2 20 97.7 52.7 132.1 16.5 17.4 31.2 37.6 38.4 59.9l201.7 0zM288 432l-192 0 0 16c0 44.2 35.8 80 80 80l32 0c44.2 0 80-35.8 80-80l0-16zM184 112c-39.8 0-72 32.2-72 72 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-66.3 53.7-120 120-120 13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n  };\n  var faCircleArrowRight = {\n    prefix: 'fas',\n    iconName: 'circle-arrow-right',\n    icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm41-159c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39-150.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l150.1 0-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80z\"]\n  };\n  var faArrowCircleRight = faCircleArrowRight;\n  var faMarsAndVenus = {\n    prefix: 'fas',\n    iconName: 'mars-and-venus',\n    icon: [512, 512, [9893], \"f224\", \"M368 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l112 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7-63 63c19.5 28.4 31 62.7 31 99.8 0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9c-81.9-15-144-86.8-144-173.1 0-97.2 78.8-176 176-176 37 0 71.4 11.4 99.8 31l63-63-34.7 0zM352 208a112 112 0 1 0 -224 0 112 112 0 1 0 224 0z\"]\n  };\n  var faNetworkWired = {\n    prefix: 'fas',\n    iconName: 'network-wired',\n    icon: [576, 512, [], \"f6ff\", \"M248 88l80 0 0 48-80 0 0-48zm-8-56c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l16 0 0 32-224 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-16 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-16 0 0-32 192 0 0 32-16 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-16 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-32 16 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-96 0zM448 376l8 0 0 48-80 0 0-48 72 0zm-256 0l8 0 0 48-80 0 0-48 72 0z\"]\n  };\n  var faBuildingShield = {\n    prefix: 'fas',\n    iconName: 'building-shield',\n    icon: [576, 512, [], \"e4d8\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l201.2 0c-12.5-14.7-23.2-30.8-31.8-48l-89.5 0 0-80c0-17.7 14.3-32 32-32l32 0 0-26.7c0-18.1 6.1-35.2 16.6-48.8-.4-1.4-.6-2.9-.6-4.5l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 1 86.7-28.9c3.1-1 6.2-1.8 9.3-2.5L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM445.3 488.5l-13.3 6.3 0-188.1 96 32 0 19.6c0 55.8-32.2 106.5-82.7 130.3zM421.9 259.5l-112 37.3c-13.1 4.4-21.9 16.6-21.9 30.4l0 31.1c0 74.4 43 142.1 110.2 173.7l18.5 8.7c4.8 2.2 10 3.4 15.2 3.4s10.5-1.2 15.2-3.4l18.5-8.7C533 500.3 576 432.6 576 358.2l0-31.1c0-13.8-8.8-26-21.9-30.4l-112-37.3c-6.6-2.2-13.7-2.2-20.2 0z\"]\n  };\n  var faCode = {\n    prefix: 'fas',\n    iconName: 'code',\n    icon: [576, 512, [], \"f121\", \"M360.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm64.6 136.1c-12.5 12.5-12.5 32.8 0 45.3l73.4 73.4-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0zm-274.7 0c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 150.6 182.6c12.5-12.5 12.5-32.8 0-45.3z\"]\n  };\n  var faFeatherPointed = {\n    prefix: 'fas',\n    iconName: 'feather-pointed',\n    icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M475.3 .1c9.9-.8 19.6 3 26.6 10s10.8 16.7 10 26.6c-4 49.3-17.4 126.2-46.3 199.7-1.8 4.5-5.5 7.9-10.2 9.3L374.5 270c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l38.6 0c12 0 19.7 12.8 13.5 23.1-4 6.7-8.3 13.2-12.7 19.6-2 2.9-5 5-8.4 6.1L310.5 366c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l16 0c14.6 0 21 17.4 8.8 25.4-68 45-137.7 43.3-182.4 31.3-12.7-3.4-24-9.9-34.4-17.9L48 496c-8.8 8.8-23.2 8.8-32 0s-8.8-23.2 0-32l80-80 .5 .5c.7-1.3 1.6-2.5 2.7-3.6L256 224c8.8-8.8 8.8-23.2 0-32s-23.2-8.8-32 0L89.7 326.2c-8.9 8.9-24 4.4-25-8.2-4.3-53.2 9.3-123.1 72.6-186.4 91.1-91.1 254.2-124.7 337.9-131.5z\"]\n  };\n  var faFeatherAlt = faFeatherPointed;\n  var faFileCircleQuestion = {\n    prefix: 'fas',\n    iconName: 'file-circle-question',\n    icon: [576, 512, [], \"e4ef\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-100c-11.6 0-21.3 8.2-23.5 19.2-1.8 8.7-10.2 14.3-18.9 12.5s-14.3-10.2-12.5-18.9c5.2-25.6 27.8-44.8 54.9-44.8 30.9 0 56 25.1 56 56 0 19.8-11.7 37.8-29.8 45.9l-10.4 4.6c-1.2 7.7-7.8 13.5-15.8 13.5-8.8 0-16-7.2-16-16 0-11.2 6.6-21.3 16.8-25.9l12.4-5.5c6.6-2.9 10.8-9.4 10.8-16.6 0-13.3-10.7-24-24-24z\"]\n  };\n  var faSignature = {\n    prefix: 'fas',\n    iconName: 'signature',\n    icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92l0 32.4-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72.5 0c4.2 36 34.8 64 72 64 26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8S405.7 320 416 320l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-83.6 0 18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3l0-7.8c0-53-43-96-96-96s-96 43-96 96l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3-4.7 0-8.5-3.8-8.5-8.5l0-71.9c0-14.1 9.3-26.6 22.8-30.7zM616 416c13.3 0 24-10.7 24-24s-10.7-24-24-24l-292.9 0c-6.5 16.3-13.7 32.3-21.6 48L616 416z\"]\n  };\n  var faEarthAmericas = {\n    prefix: 'fas',\n    iconName: 'earth-americas',\n    icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M55.7 199.7l30.9 30.9c6 6 14.1 9.4 22.6 9.4l21.5 0c8.5 0 16.6 3.4 22.6 9.4l29.3 29.3c6 6 9.4 14.1 9.4 22.6l0 37.5c0 8.5 3.4 16.6 9.4 22.6l13.3 13.3c6 6 9.4 14.1 9.4 22.6l0 18.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-2.7c0-8.5 3.4-16.6 9.4-22.6l45.3-45.3c6-6 9.4-14.1 9.4-22.6l0-34.7c0-17.7-14.3-32-32-32l-82.7 0c-8.5 0-16.6-3.4-22.6-9.4l-16-16c-4.2-4.2-6.6-10-6.6-16 0-12.5 10.1-22.6 22.6-22.6l34.7 0c12.5 0 22.6-10.1 22.6-22.6 0-6-2.4-11.8-6.6-16l-19.7-19.7C242 130 240 125.1 240 120s2-10 5.7-13.7l17.3-17.3c5.8-5.8 9.1-13.7 9.1-21.9 0-7.2-2.4-13.7-6.4-18.9-3.2-.1-6.4-.2-9.6-.2-95.4 0-175.7 64.2-200.3 151.7zM464 256c0-34.6-8.4-67.2-23.4-95.8-6.4 .9-12.7 3.9-17.9 9.1l-13.4 13.4c-6 6-9.4 14.1-9.4 22.6l0 34.7c0 17.7 14.3 32 32 32l24.1 0c2.5 0 5-.3 7.3-.8 .4-5 .5-10.1 .5-15.2zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n  };\n  var faEarth = faEarthAmericas;\n  var faEarthAmerica = faEarthAmericas;\n  var faGlobeAmericas = faEarthAmericas;\n  var faCarrot = {\n    prefix: 'fas',\n    iconName: 'carrot',\n    icon: [640, 512, [129365], \"f787\", \"M453.1-36.7L440.9-24.6c-31.2 31.2-31.2 81.9 0 113.1 15.6 15.6 31.2 31.2 46.9 46.9 31.2 31.2 81.9 31.2 113.1 0l12.1-12.1c6.2-6.2 6.2-16.4 0-22.6L600.9 88.6c-31.2-31.2-81.9-31.2-113.1 0 31.2-31.2 31.2-81.9 0-113.1L475.7-36.7c-6.2-6.2-16.4-6.2-22.6 0zM331.6 96c-45.2 0-87.1 20.4-115 54.3L273.3 207c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L191.6 193.2 67.2 466.8c-5.5 12.1-2.9 26.4 6.5 35.9s23.7 12 35.9 6.5l141.6-64.4-43.8-43.8c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.5 56.5 95.3-43.3c53.1-24.1 87.2-77.1 87.2-135.5 0-82.2-66.6-148.8-148.8-148.8z\"]\n  };\n  var faTemperatureFull = {\n    prefix: 'fas',\n    iconName: 'temperature-full',\n    icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3L136 96c0-13.3 10.7-24 24-24s24 10.7 24 24l0 212.7c23.5 9.5 40 32.5 40 59.3z\"]\n  };\n  var faTemperature4 = faTemperatureFull;\n  var faThermometer4 = faTemperatureFull;\n  var faThermometerFull = faTemperatureFull;\n  var faTableCellsRowLock = {\n    prefix: 'fas',\n    iconName: 'table-cells-row-lock',\n    icon: [640, 512, [], \"e67a\", \"M256 288l0-64 153.3 0c17.1-42.2 56-73.2 102.7-79l0-49c0-35.3-28.7-64-64-64L128 32C92.7 32 64 60.7 64 96l0 320c0 35.3 28.7 64 64 64l241.3 0c-.9-5.2-1.3-10.6-1.3-16.1l0-47.9-112 0 0-64 113.3 0c3.7-22 14.8-41.4 30.7-55.6l0-8.4-144 0zm0-192l192 0 0 64-192 0 0-64zM560 272.1l0 47.9-64 0 0-47.9c0-17.7 14.3-32 32-32s32 14.3 32 32zM416 368l0 96c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-96c0-20.9-13.4-38.7-32-45.3l0-50.6c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 50.6c-18.6 6.6-32 24.4-32 45.3z\"]\n  };\n  var faBoltLightning = {\n    prefix: 'fas',\n    iconName: 'bolt-lightning',\n    icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28L228.9 0c15 0 27.1 12.1 27.1 27.1 0 3.2-.6 6.5-1.7 9.5L208 160 347.3 160c20.2 0 36.7 16.4 36.7 36.7 0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7l-2.9 0c-15.7 0-28.5-12.8-28.5-28.5 0-2.3 .3-4.6 .9-6.9L176 288 32 288c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faCloudShowersWater = {\n    prefix: 'fas',\n    iconName: 'cloud-showers-water',\n    icon: [512, 512, [], \"e4e4\", \"M279.2 55.7C263.9 22.8 230.6 0 192 0 139 0 96 43 96 96 60.7 96 32 124.7 32 160s28.7 64 64 64l320 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-1.6 0c-7.4-36.5-39.7-64-78.4-64-22.2 0-42.3 9.1-56.8 23.7zM410.6 476.1c20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.8-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zM100.1 303.6c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64C29 365 35.8 378.6 48.4 382.8s26.2-2.6 30.4-15.2l21.3-64zm120 0c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.3-64zm112 0c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.3-64zm120 0c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.3-64z\"]\n  };\n  var faArrowUpLong = {\n    prefix: 'fas',\n    iconName: 'arrow-up-long',\n    icon: [320, 512, [\"long-arrow-up\"], \"f176\", \"M182.6-22.6c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 77.3 128 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-434.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n  };\n  var faLongArrowUp = faArrowUpLong;\n  var faAddressCard = {\n    prefix: 'fas',\n    iconName: 'address-card',\n    icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-24-96a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm240-48l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faContactCard = faAddressCard;\n  var faVcard = faAddressCard;\n  var faAngleRight = {\n    prefix: 'fas',\n    iconName: 'angle-right',\n    icon: [256, 512, [8250], \"f105\", \"M247.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L179.2 256 41.9 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n  };\n  var faFaceMeh = {\n    prefix: 'fas',\n    iconName: 'face-meh',\n    icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM176 320l160 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faMeh = faFaceMeh;\n  var faArrowUpFromGroundWater = {\n    prefix: 'fas',\n    iconName: 'arrow-up-from-ground-water',\n    icon: [640, 512, [], \"e4b5\", \"M303 7c9.4-9.4 24.6-9.4 33.9 0l88 88c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47 0 278.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-278.1-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L303 7zM240 192l0 163.1c-10.6-2.2-21.3-3.2-32-3.1-32.5 .2-64.9 10.7-92.3 31.4-8.8 6.6-15.9 10.9-21.7 13.5l-.8 .4c-3.7 1.7-6.4 2.9-9.8 .3-6-4.5-12.6-8-19.3-10.4L64 240c0-26.5 21.5-48 48-48l128 0zm336 48l0 155.2c-1.1 .8-2.2 1.5-3.3 2.4-4.1 3.1-8.3 .8-12.6-1.5-.6-.3-1.2-.6-1.8-1-5.2-2.7-11.1-6.6-18-11.7-28.1-21.1-61.3-31.6-94.4-31.4-15.5 .1-31 2.5-46 7.3l0-167.3 128 0c26.5 0 48 21.5 48 48zM403.4 476.1C379.1 494.3 351.1 512 320 512s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n  };\n  var faMap = {\n    prefix: 'fas',\n    iconName: 'map',\n    icon: [512, 512, [128506, 62072], \"f279\", \"M512 48c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4L349.5 77.5 170.1 17.6c-8.1-2.7-16.8-2.1-24.4 1.7l-128 64C6.8 88.8 0 99.9 0 112L0 464c0 11.1 5.7 21.4 15.2 27.2s21.2 6.4 31.1 1.4l116.1-58.1 179.4 59.8c8.1 2.7 16.8 2.1 24.4-1.7l128-64c10.8-5.4 17.7-16.5 17.7-28.6l0-352zM192 376.9l0-284.5 128 42.7 0 284.5-128-42.7z\"]\n  };\n  var faUserPlus = {\n    prefix: 'fas',\n    iconName: 'user-plus',\n    icon: [640, 512, [], \"f234\", \"M136 128a120 120 0 1 1 240 0 120 120 0 1 1 -240 0zM48 482.3C48 383.8 127.8 304 226.3 304l59.4 0c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L77.7 512C61.3 512 48 498.7 48 482.3zM544 96c13.3 0 24 10.7 24 24l0 48 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0 0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-48c0-13.3 10.7-24 24-24z\"]\n  };\n  var faVenus = {\n    prefix: 'fas',\n    iconName: 'venus',\n    icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zM223.9 349.1C305.9 334.1 368 262.3 368 176 368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144.1 173.1-.1 1-.1 1.9-.1 2.9l0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64c0-1 0-1.9-.1-2.9z\"]\n  };\n  var faDiagramSuccessor = {\n    prefix: 'fas',\n    iconName: 'diagram-successor',\n    icon: [448, 512, [], \"e47a\", \"M289.2 137.9c2.5-6 8.3-9.9 14.8-9.9l40 0 0-24c0-13.3-10.7-24-24-24l-98 0c1.3 5.1 2 10.5 2 16l0 64c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l256 0c39.8 0 72 32.2 72 72l0 24 40 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-64 64c-6.2 6.2-16.4 6.2-22.6 0l-64-64c-4.6-4.6-5.9-11.5-3.5-17.4zM384 480L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM160 160l0-64-96 0 0 64 96 0z\"]\n  };\n  var faHeadSideCoughSlash = {\n    prefix: 'fas',\n    iconName: 'head-side-cough-slash',\n    icon: [576, 512, [], \"e062\", \"M535-24.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 537.1c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l25-25 0-447.2c0-15 10.5-28.3 25.4-29.8 7.4-.7 14.9-1.1 22.6-1.1 112.7 0 206 83.3 221.7 191.7 .4 3 1.7 5.9 3.6 8.3l2.2 2.6 227.5-227.5zM133.8 512L288 357.8 288 416c0 53-43 96-96 96l-58.2 0zM176 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm336 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-88 72a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm-64 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm128 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm24 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-88-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faDiagramProject = {\n    prefix: 'fas',\n    iconName: 'diagram-project',\n    icon: [512, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 128 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-128 0 0 16c0 7.3-1.7 14.3-4.6 20.5l68.6 91.5 80 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-7.3 1.7-14.3 4.6-20.5L128 224 48 224c-26.5 0-48-21.5-48-48L0 80z\"]\n  };\n  var faProjectDiagram = faDiagramProject;\n  var faTerminal = {\n    prefix: 'fas',\n    iconName: 'terminal',\n    icon: [512, 512, [], \"f120\", \"M9.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 256 9.4 118.6zM224 384l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faHouseFire = {\n    prefix: 'fas',\n    iconName: 'house-fire',\n    icon: [640, 512, [], \"e50c\", \"M448 192c14.1 .4 23.8 11.4 32.7 21.7 2 2.3 4 4.6 6 6.7l19 19.9 12.2-13.8c5.4-6.1 13.3-8.9 20.9-8.9 7.2 0 14.3 2.6 19.9 7.8 19.7 18.3 39.8 43.2 55 70.6 15.1 27.2 26.2 58.2 26.2 88.2 0 88.7-71.3 159.8-160 159.8-89.6 0-160-71.3-160-159.8 0-37.3 16-73.4 36.8-104.5 20.9-31.3 47.5-59 70.9-80.1 5.7-5.2 13.1-7.7 20.3-7.5zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l147.5 137c-19.2-4.3-40 .5-55.5 14.4-36.4 32.6-67.7 69.8-90.3 106.4-10.3 16.6-19.7 34.9-26.8 53.7L272 320c-26.5 0-48 21.5-48 48l0 96 64.6 0c7.3 17.2 16.8 33.4 28.2 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM489.3 343.7c-5.4-4.7-13.1-4.7-18.5 0-17.7 15.4-54.7 51.9-54.7 88.4 0 35.3 28.7 64 64 64s64-28.7 64-64c0-36.5-37-73-54.7-88.4z\"]\n  };\n  var faMask = {\n    prefix: 'fas',\n    iconName: 'mask',\n    icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448l8.4 0c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4l8.4 0c96 0 176-64 176-176S512 64 288 64zM96 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n  };\n  var faHurricane = {\n    prefix: 'fas',\n    iconName: 'hurricane',\n    icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6 184 1.2 192 8.6 192 17.9l0 63.3c0 8.4 6.5 15.3 14.7 16.5 100.3 14.9 177.3 101.3 177.3 205.7 0 103.6-75.7 189.5-174.9 205.4-9.2 1.5-17.1-5.9-17.1-15.2l0-63.3C192 421.9 185.5 415 177.3 413.7 77 398.9 0 312.4 0 208zm288 48a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faEarthAfrica = {\n    prefix: 'fas',\n    iconName: 'earth-africa',\n    icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M447.6 175c-31.6-74.6-105.5-127-191.6-127-22.1 0-43.4 3.5-63.4 9.8-.4 2-.6 4.1-.6 6.2l0 73.4c0 12.5 10.1 22.6 22.6 22.6 6 0 11.8-2.4 16-6.6l16-16c6-6 14.1-9.4 22.6-9.4l5.5 0c28.5 0 42.8 34.5 22.6 54.6-6 6-14.1 9.4-22.6 9.4l-61.5 0c-8.5 0-16.6 3.4-22.6 9.4l-21.3 21.3c-6 6-9.4 14.1-9.4 22.6l0 42.7c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32l0 32c0 17.7 14.3 32 32 32l2.7 0c8.5 0 16.6-3.4 22.6-9.4l29.3-29.3c6-6 9.4-14.1 9.4-22.6l0-18.7c0-8.8 7.2-16 16-16s16-7.2 16-16l0-34.7c0-8.5-3.4-16.6-9.4-22.6l-16-16c-4.2-4.2-6.6-10-6.6-16 0-12.5 10.1-22.6 22.6-22.6l45 0c12.4 0 22.7-7.1 28-17zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n  };\n  var faGlobeAfrica = faEarthAfrica;\n  var faThumbtack = {\n    prefix: 'fas',\n    iconName: 'thumbtack',\n    icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-29.5 0 10.3 134.1c37.1 21.2 65.8 56.4 78.2 99.7l3.8 13.4c2.8 9.7 .8 20-5.2 28.1S362 352 352 352L32 352c-10 0-19.5-4.7-25.5-12.7s-8-18.4-5.2-28.1L5 297.8c12.4-43.3 41-78.5 78.2-99.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 400l64 0 0 112c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-112z\"]\n  };\n  var faThumbTack = faThumbtack;\n  var faHandPointDown = {\n    prefix: 'fas',\n    iconName: 'hand-point-down',\n    icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208-64 0 0 208zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-64 64c17.7 0 32-14.3 32-32l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6 13.2 0 25.4 4 35.6 10.8 8.7-24.9 32.5-42.8 60.4-42.8 11.7 0 22.6 3.1 32 8.6l0-8.6C384 71.6 312.4 0 224 0L162.3 0C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149l0 27c0 35.3 28.7 64 64 64l88 0c22.1 0 40-17.9 40-40s-17.9-40-40-40l-56 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l56 0c39.8 0 72 32.2 72 72z\"]\n  };\n  var faFaceMehBlank = {\n    prefix: 'fas',\n    iconName: 'face-meh-blank',\n    icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm208-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faMehBlank = faFaceMehBlank;\n  var faTemperatureEmpty = {\n    prefix: 'fas',\n    iconName: 'temperature-empty',\n    icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M64 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144S16 447.5 16 368c0-42.6 18.5-81 48-107.3L64 96zm96 336c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n  };\n  var faTemperature0 = faTemperatureEmpty;\n  var faThermometer0 = faTemperatureEmpty;\n  var faThermometerEmpty = faTemperatureEmpty;\n  var faBorderNone = {\n    prefix: 'fas',\n    iconName: 'border-none',\n    icon: [448, 512, [], \"f850\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM160 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM288 416c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM160 480c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM288 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM416 480c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm0-384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM416 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 160a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM416 160a32 32 0 1 0 0 64 32 32 0 1 0 0-64z\"]\n  };\n  var faHighlighter = {\n    prefix: 'fas',\n    iconName: 'highlighter',\n    icon: [576, 512, [], \"f591\", \"M315 315L473.4 99.9 444.1 70.6 229 229 315 315zm-187 5l0 0 0-71.7c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0 457.6 0 468.5 4.5 476.6 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5 0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5l-71.7 0-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l51.7-51.7 70.6 70.6-19.7 19.7c-4.5 4.5-10.6 7-17 7L24 512c-13.3 0-24-10.7-24-24l0-4.7c0-6.4 2.5-12.5 7-17z\"]\n  };\n  var faMoneyBillWave = {\n    prefix: 'fas',\n    iconName: 'money-bill-wave',\n    icon: [512, 512, [], \"f53a\", \"M0 419.6L0 109.5c0-23.2 24.1-38.6 46.3-32 87.7 26.2 149.7 5.5 212.1-15.3 64.5-21.5 129.4-43.1 223.3-13.1 18.5 5.9 30.3 23.8 30.3 43.3l0 310.1c0 23.2-24.1 38.6-46.2 32-87.7-26.2-149.8-5.5-212.1 15.3-64.5 21.5-129.4 43.1-223.3 13.1-18.5-5.9-30.3-23.8-30.3-43.3zM336 256c0-53-35.8-96-80-96s-80 43-80 96 35.8 96 80 96 80-43 80-96zM120 413.6c4.4 0 7.9-3.8 7.2-8.1-4.6-27.8-27-49.5-55.2-53-4.4-.5-8 3.1-8 7.5l0 39.9c0 3.6 2.4 6.8 6 7.7 17.9 4.2 34.3 6.1 50 6.1zm318.5-51.1c5 .8 9.5-3 9.5-8l0-42.6c0-4.4-3.6-8.1-8-7.5-25.2 3.1-45.9 20.9-53.2 44.6-1.4 4.7 2.3 9.1 7.2 9.2 14.2 .4 29 1.7 44.4 4.3zM448 152l0-39.9c0-3.6-2.5-6.8-6-7.7-17.9-4.2-34.3-6.1-50-6.1-4.4 0-7.9 3.8-7.2 8.1 4.6 27.8 27 49.5 55.2 53 4.4 .5 8-3.1 8-7.5zM125.2 162.9c1.4-4.7-2.3-9.1-7.2-9.2-14.2-.4-29-1.7-44.4-4.3-5-.8-9.5 3-9.5 8L64 200c0 4.4 3.6 8.1 8 7.5 25.2-3.1 45.9-20.9 53.2-44.6z\"]\n  };\n  var faToiletPaperSlash = {\n    prefix: 'fas',\n    iconName: 'toilet-paper-slash',\n    icon: [576, 512, [], \"e072\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-94.5-94.5c40.2-23 69.5-96.9 69.5-184.6 0-106-43-192-96-192s-96 86-96 192c0 24.1 2.2 47.2 6.3 68.4L304 238.2 304 224c0-58.9 11.8-114.5 33.2-157.2 5.9-11.7 13.1-23.7 21.9-34.8L128 32c-8.3 0-16.4 2.1-24.1 6.1l-63-63zM32 224l0 264c0 30.9 25.1 56 56 56l160 0c30.9 0 56-25.1 56-56l0-114.2-256-256C37.9 148.2 32 184.7 32 224zm416 64c-17.7 0-32-28.7-32-64s14.3-64 32-64 32 28.7 32 64-14.3 64-32 64z\"]\n  };\n  var faFileShield = {\n    prefix: 'fas',\n    iconName: 'file-shield',\n    icon: [576, 512, [], \"e4f0\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l201.2 0C261 469.4 240 414.5 240 356.4l0-31.1c0-34.4 22-65 54.7-75.9l112-37.3c3.1-1 6.2-1.8 9.3-2.5l0-39.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zm87.8 312.5l-13.3 6.3 0-188.1 96 32 0 19.6c0 55.8-32.2 106.5-82.7 130.3zM421.9 259.5l-112 37.3c-13.1 4.4-21.9 16.6-21.9 30.4l0 31.1c0 74.4 43 142.1 110.2 173.7l18.5 8.7c4.8 2.2 10 3.4 15.2 3.4s10.5-1.2 15.2-3.4l18.5-8.7C533 500.3 576 432.6 576 358.2l0-31.1c0-13.8-8.8-26-21.9-30.4l-112-37.3c-6.6-2.2-13.7-2.2-20.2 0z\"]\n  };\n  var faTextHeight = {\n    prefix: 'fas',\n    iconName: 'text-height',\n    icon: [576, 512, [], \"f034\", \"M40 32C17.9 32 0 49.9 0 72l0 56c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 64 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320 64 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-56c0-22.1-17.9-40-40-40L40 32zM438.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4 0-229.5 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4 0 229.5-9.4-9.4z\"]\n  };\n  var faFaceGrinTongue = {\n    prefix: 'fas',\n    iconName: 'face-grin-tongue',\n    icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256c0 104.4 62.5 194.2 152.2 234.1-5.3-13-8.2-27.2-8.2-42.1l0-61.7c-16.9-16.5-30.1-36.7-38.3-59.3-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1c11.9-3.7 23.9 6.3 19.6 18.1-8.3 22.6-21.5 42.8-38.3 59.3l0 61.7c0 14.9-2.9 29.1-8.2 42.1 89.7-39.8 152.2-129.6 152.2-234.1 0-141.4-114.6-256-256-256S0 114.6 0 256zm176-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm16 240l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9-2.8 12.6-20.8 12.6-23.6 0-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n  };\n  var faGrinTongue = faFaceGrinTongue;\n  var faFileSignature = {\n    prefix: 'fas',\n    iconName: 'file-signature',\n    icon: [640, 512, [], \"f573\", \"M64.1 64c0-35.3 28.7-64 64-64L277.6 0c17 0 33.3 6.7 45.3 18.7L429.3 125.3c12 12 18.7 28.3 18.7 45.3l0 97.5-132 132-42.1 0-16.1-53.6c-4.7-15.7-19.1-26.4-35.5-26.4-11.3 0-21.9 5.1-28.9 13.9L133.3 409c-8.3 10.3-6.6 25.5 3.7 33.7s25.5 6.6 33.7-3.8l47.1-58.8 15.2 50.7c3 10.2 12.4 17.1 23 17.1l31.5 0c-.9 3.1-1.7 6.3-2.3 9.5l-10.9 54.5-146.2 0c-35.3 0-64-28.7-64-64l0-384zm208-5.5l0 93.5c0 13.3 10.7 24 24 24l93.5 0-117.5-117.5zm60.2 408.4c2.5-12.4 8.6-23.8 17.5-32.7l118.9-118.9 80 80-118.9 118.9c-8.9 8.9-20.3 15-32.7 17.5l-59.6 11.9c-.9 .2-1.9 .3-2.9 .3-8 0-14.6-6.5-14.6-14.6 0-1 .1-1.9 .3-2.9l11.9-59.6zm267.8-123l-28.8 28.8-80-80 28.8-28.8c22.1-22.1 57.9-22.1 80 0s22.1 57.9 0 80z\"]\n  };\n  var faBuildingWheat = {\n    prefix: 'fas',\n    iconName: 'building-wheat',\n    icon: [640, 512, [], \"e4db\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l249.3 0c-6-14.8-9.3-31-9.3-48 0-17.7 7.2-33.7 18.8-45.3-11.9-19.4-18.8-42.3-18.8-66.7 0-17.7 7.2-33.7 18.8-45.3-11.9-19.4-18.8-42.3-18.8-66.7 0-25.2 14.5-46.9 35.6-57.4-2.4-7.1-3.6-14.7-3.6-22.6l0-32C368 96.7 388 70.1 415.9 60.1 413.9 26.6 386 0 352 0L96 0zM208 352l32 0c17.7 0 32 14.3 32 32l0 80-96 0 0-80c0-17.7 14.3-32 32-32zM128 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm352 0l-16 0c-44.2 0-80 35.8-80 80 0 8.8 7.2 16 16 16l16 0c44.2 0 80-35.8 80-80 0-8.8-7.2-16-16-16zm16 128c0-8.8-7.2-16-16-16l-16 0c-44.2 0-80 35.8-80 80 0 8.8 7.2 16 16 16l16 0c44.2 0 80-35.8 80-80zm0 112c0-8.8-7.2-16-16-16l-16 0c-44.2 0-80 35.8-80 80 0 8.8 7.2 16 16 16l16 0c44.2 0 80-35.8 80-80zM496 528c0-44.2-35.8-80-80-80l-16 0c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l16 0c8.8 0 16-7.2 16-16zm-16-96c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-16 0c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l16 0zm16-128c0-44.2-35.8-80-80-80l-16 0c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l16 0c8.8 0 16-7.2 16-16zM512 64c-13.3 0-24 10.7-24 24l0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-13.3-10.7-24-24-24zm96 64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zM440 104c-13.3 0-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32c0-13.3-10.7-24-24-24z\"]\n  };\n  var faPlugCircleMinus = {\n    prefix: 'fas',\n    iconName: 'plug-circle-minus',\n    icon: [640, 512, [], \"e55e\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n  };\n  var faFutbol = {\n    prefix: 'fas',\n    iconName: 'futbol',\n    icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n  };\n  var faFutbolBall = faFutbol;\n  var faSoccerBall = faFutbol;\n  var faCirclePlus = {\n    prefix: 'fas',\n    iconName: 'circle-plus',\n    icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n  };\n  var faPlusCircle = faCirclePlus;\n  var faBrazilianRealSign = {\n    prefix: 'fas',\n    iconName: 'brazilian-real-sign',\n    icon: [512, 512, [], \"e46c\", \"M400 16c17.7 0 32 14.3 32 32l0 16 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48.9 0c-26 0-47.1 21.1-47.1 47.1 0 22.5 15.9 41.8 37.9 46.2l32.8 6.6c51.9 10.4 89.3 56 89.3 109 0 50.6-33.8 93.3-80 106.7l0 20.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.9 0c26 0 47.1-21.1 47.1-47.1 0-22.5-15.9-41.8-37.9-46.2l-32.8-6.6c-51.9-10.4-89.3-56-89.3-109 0-50.6 33.8-93.2 80-106.7L368 48c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144 0 54.3-30 101.5-74.4 126.1l41 136.7c5.1 16.9-4.5 34.8-21.5 39.8s-34.8-4.5-39.8-21.5L120.1 319.8c-2.7 .1-5.4 .2-8.1 .2l-48 0 0 128c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0 0 160z\"]\n  };\n  var faStarAndCrescent = {\n    prefix: 'fas',\n    iconName: 'star-and-crescent',\n    icon: [512, 512, [9770], \"f699\", \"M0 256c0-141.4 114.6-256 256-256 33 0 64.6 6.3 93.6 17.7 7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5 7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512 114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n  };\n  var faFaceSurprise = {\n    prefix: 'fas',\n    iconName: 'face-surprise',\n    icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-48 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n  };\n  var faSurprise = faFaceSurprise;\n  var faHospitalUser = {\n    prefix: 'fas',\n    iconName: 'hospital-user',\n    icon: [640, 512, [], \"f80d\", \"M64 64C64 28.7 92.7 0 128 0L384 0c35.3 0 64 28.7 64 64l0 121.3c-46.9 19-80 65-80 118.7 0 27.7 8.8 53.4 23.8 74.4-51.5 21-87.8 71.6-87.8 130.7 0 1 0 1.9 0 2.9l-176 0c-35.3 0-64-28.7-64-64L64 64zM208 400l0 64 53.4 0c7.2-29.4 21.3-56.1 40.4-78.3-6.1-19.5-24.3-33.7-45.8-33.7-26.5 0-48 21.5-48 48zM248 88c-8.8 0-16 7.2-16 16l0 32-32 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-32 0 0-32c0-8.8-7.2-16-16-16l-16 0zM416 304a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM352 512c0-53 43-96 96-96l96 0c53 0 96 43 96 96 0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faArrowDownUpLock = {\n    prefix: 'fas',\n    iconName: 'arrow-down-up-lock',\n    icon: [576, 512, [], \"e4b0\", \"M262.6 422.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l25.4 25.4 0-114.7-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l256 0 0-114.7-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l80-80c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-25.4-25.4 0 94.8c-25.3 20.3-42.8 50.1-47 83.9l-145 0 0 114.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM192 32l0 144-64 0 0-144c0-17.7 14.3-32 32-32s32 14.3 32 32zM496 304.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faFolder = {\n    prefix: 'fas',\n    iconName: 'folder',\n    icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 448l384 0c35.3 0 64-28.7 64-64l0-240c0-35.3-28.7-64-64-64L298.7 80c-6.9 0-13.7-2.2-19.2-6.4L241.1 44.8C230 36.5 216.5 32 202.7 32L64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64z\"]\n  };\n  var faFolderBlank = faFolder;\n  var faHollyBerry = {\n    prefix: 'fas',\n    iconName: 'holly-berry',\n    icon: [512, 512, [], \"f7aa\", \"M256.2 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM277 383.8c1 .1 2.1 .2 3.2 .2 39.8 0 72 32.2 72 72l0 22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.9 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6-34.6 0-62.7-28.1-62.7-62.7l0-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7 4.2 9.7 5.8 20.8 3.7 32.3l-6.3 34.8c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.8 234.5c-15.5-5.2-31.6 6.4-31.6 22.8l0 32c0 34.6-28.1 62.7-62.7 62.7-16.4 0-27.9 16-22.8 31.6L15 396.4c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.4 489.4 22.8 505.8 40.7 501l19.4-5.3c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8l0-32c0-34.6 28.1-62.7 62.7-62.7 16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5l-19.4 5.3c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384.2 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faVenusDouble = {\n    prefix: 'fas',\n    iconName: 'venus-double',\n    icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144.1 173.1 .1 1 .1 1.9 .1 2.9l0 64 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-64c0-1 0-1.9 .1-2.9-82-15-144.1-86.8-144.1-173.1 0-97.2 78.8-176 176-176S368 78.8 368 176zM357.5 327c14.4-15.8 26.6-33.7 36.1-53.1 16.1 9 34.7 14.1 54.5 14.1 61.9 0 112-50.1 112-112S509.9 64 448 64c-19.8 0-38.3 5.1-54.5 14.1-9.5-19.4-21.6-37.3-36.1-53.1 26.4-15.9 57.4-25 90.5-25 97.2 0 176 78.8 176 176 0 86.3-62.1 158.1-144.1 173.1 .1 .9 .1 1.9 .1 2.9l0 64 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-64c0-1 0-1.9 .1-2.9-21.1-3.9-40.9-11.5-58.6-22.2z\"]\n  };\n  var faClipboardQuestion = {\n    prefix: 'fas',\n    iconName: 'clipboard-question',\n    icon: [384, 512, [], \"e4e3\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zM192 248c16.1 0 29.2 13.1 29.2 29.2 0 8.7-3.1 13.9-6.9 17.7-4.5 4.4-10.7 7.5-16.8 9.5-14.9 5-29.5 19.3-29.5 39.5 0 13.3 10.7 24 24 24 11.5 0 21.2-8.1 23.5-19 19.2-7.1 53.7-26.3 53.7-71.8 0-42.6-34.6-77.2-77.2-77.2s-77.2 34.6-77.2 77.2c0 13.3 10.7 24 24 24s24-10.7 24-24c0-16.1 13.1-29.2 29.2-29.2zm28 168c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28z\"]\n  };\n  var faHotdog = {\n    prefix: 'fas',\n    iconName: 'hotdog',\n    icon: [512, 512, [127789], \"f80f\", \"M288 0c-20.5 0-40.1 8.1-54.6 22.6L22.6 233.4C8.1 247.9 0 267.5 0 288 0 300.2 2.9 312.1 8.2 322.7L322.7 8.2C312.1 2.9 300.2 0 288 0zM224 512c20.5 0 40.1-8.1 54.6-22.6L489.4 278.6c14.5-14.5 22.6-34.1 22.6-54.6 0-12.2-2.9-24.1-8.2-34.7L189.3 503.8c10.7 5.4 22.6 8.2 34.7 8.2zM456.6 168.6c31.2-31.2 31.2-81.9 0-113.1s-81.9-31.2-113.1 0l-288 288c-31.2 31.2-31.2 81.9 0 113.1s81.9 31.2 113.1 0l288-288z\"]\n  };\n  var faArrowUpFromBracket = {\n    prefix: 'fas',\n    iconName: 'arrow-up-from-bracket',\n    icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32S0 334.3 0 352l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"]\n  };\n  var faMicroscope = {\n    prefix: 'fas',\n    iconName: 'microscope',\n    icon: [512, 512, [128300], \"f610\", \"M176 0c-26.5 0-48 21.5-48 48l0 208c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64 32 0c70.7 0 128 57.3 128 128S390.7 448 320 448L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16.9 0c30.4-34 48.9-78.8 48.9-128 0-106-86-192-192-192l-32 0 0-80c0-26.5-21.5-48-48-48L176 0zM120 352c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z\"]\n  };\n  var faCloud = {\n    prefix: 'fas',\n    iconName: 'cloud',\n    icon: [576, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-51.6-30.5-96.1-74.5-116.3 6.7-13.1 10.5-28 10.5-43.7 0-53-43-96-96-96-17.7 0-34.2 4.8-48.4 13.1-24.1-45.8-72.2-77.1-127.6-77.1-79.5 0-144 64.5-144 144 0 8 .7 15.9 1.9 23.5-56.9 19.2-97.9 73.1-97.9 136.5z\"]\n  };\n  var faBaseballBatBall = {\n    prefix: 'fas',\n    iconName: 'baseball-bat-ball',\n    icon: [576, 512, [], \"f432\", \"M464.1 544a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm8.4-576c15.1 0 29.7 5.8 40.7 16.2l47.2 44.8c12.6 12 19.1 29 17.5 46.3-1.2 13.3-7 25.8-16.5 35.2L363.1 309c-7.3 7.3-15.7 13.4-25 18L206 393c-9.2 4.6-17.7 10.7-25 18l-92 92 1.7 1.8c7.7 9.4 7.1 23.3-1.7 32.1s-22.7 9.3-32.1 1.7l-1.8-1.7-48-48-1.7-1.8c-7.7-9.4-7.1-23.3 1.7-32.1s22.7-9.3 32.1-1.7l1.8 1.7 92-92c7.3-7.3 13.4-15.7 18-25l66.1-132.1c4.6-9.2 10.7-17.7 18-25L430.8-14.7C441.9-25.8 456.9-32 472.5-32z\"]\n  };\n  var faCarRear = {\n    prefix: 'fas',\n    iconName: 'car-rear',\n    icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96l181.2 0c13.6 0 25.7 8.6 30.2 21.4l26.1 74.6-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256l0 96c0 23.7 12.9 44.4 32 55.4L32 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-32 256 0 0 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-40.6c19.1-11.1 32-31.7 32-55.4l0-96c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32L165.4 32c-40.8 0-77.1 25.8-90.6 64.3zM208 288l96 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm360-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faCarAlt = faCarRear;\n  var faThumbtackSlash = {\n    prefix: 'fas',\n    iconName: 'thumbtack-slash',\n    icon: [576, 512, [\"thumb-tack-slash\"], \"e68f\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L417.8 352 448 352c10 0 19.5-4.7 25.5-12.7s8-18.4 5.2-28.1L475 297.8c-12.4-43.3-41-78.5-78.2-99.7L386.5 64 416 64c17.7 0 32-14.3 32-32S433.7 0 416 0L160 0c-7.4 0-14.1 2.5-19.5 6.6L190.1 56.3 185.3 119.4 41-24.9zM282.2 352L149.7 219.6c-22.7 20.5-39.8 47.4-48.7 78.3l-3.8 13.4c-2.8 9.7-.8 20 5.2 28.1S118 352 128 352l154.2 0zM256 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112-64 0 0 112z\"]\n  };\n  var faThumbTackSlash = faThumbtackSlash;\n  var faPlusMinus = {\n    prefix: 'fas',\n    iconName: 'plus-minus',\n    icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-128zM0 480c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n  };\n  var faHouseCircleCheck = {\n    prefix: 'fas',\n    iconName: 'house-circle-check',\n    icon: [640, 512, [], \"e509\", \"M496 544a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l217.6 202c-10.2-1.7-20.7-2.6-31.3-2.6-78.6 0-146.1 47.2-175.8 114.8-5.1-1.8-10.5-2.8-16.2-2.8l-32 0c-26.5 0-48 21.5-48 48l0 96 91 0c6.1 17.3 14.6 33.4 25.1 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM553.4 339.1c-7.1-5.2-17.1-3.6-22.3 3.5l-53 72.8-26.7-26.8c-6.2-6.2-16.4-6.2-22.6 0-6.2 6.2-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.7s8.9-2.8 11.7-6.6l64-88c5.2-7.1 3.6-17.1-3.5-22.3z\"]\n  };\n  var faCalendarDay = {\n    prefix: 'fas',\n    iconName: 'calendar-day',\n    icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm0 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0z\"]\n  };\n  var faCircle = {\n    prefix: 'fas',\n    iconName: 'circle',\n    icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n  };\n  var faMobileVibrate = {\n    prefix: 'fas',\n    iconName: 'mobile-vibrate',\n    icon: [576, 512, [], \"e816\", \"M384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-384c0-35.3 28.7-64 64-64L384 0zM248 416c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM48.8 133.4c9.4-7.7 23.3-7.1 32.1 1.7 9.4 9.4 9.4 24.6 0 33.9l-31 31 25.4 25.4 2.9 3.2c6.3 7.7 9.8 17.4 9.8 27.4 0 11.5-4.6 22.5-12.7 30.6l-25.4 25.4 31 31 1.7 1.8c7.7 9.4 7.1 23.3-1.7 32.1s-22.7 9.3-32.1 1.7L47 377 12.7 342.6C5.6 335.5 1.2 326.2 .2 316.3L0 312 .2 307.7c1-9.9 5.4-19.2 12.5-26.3L38.1 256 12.7 230.6C5.6 223.5 1.2 214.2 .2 204.3L0 200 .2 195.7c1-9.9 5.4-19.2 12.5-26.3L47 135 48.8 133.4zM495 135c8.8-8.8 22.7-9.3 32.1-1.7l1.8 1.7 34.3 34.3c7.1 7.1 11.5 16.4 12.5 26.3l.2 4.3-.2 4.3c-1 9.9-5.4 19.2-12.5 26.3l-25.4 25.4 25.4 25.4c7.1 7.1 11.5 16.4 12.5 26.3l.2 4.3-.2 4.3c-1 9.9-5.4 19.2-12.5 26.3l-34.3 34.3-1.8 1.7c-9.4 7.7-23.3 7.1-32.1-1.7s-9.3-22.7-1.7-32.1l1.7-1.8 31-31-25.4-25.4c-8.1-8.1-12.7-19.1-12.7-30.6 0-10 3.5-19.7 9.8-27.4l2.9-3.2 25.4-25.4-31-31c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faFaceGrinSquint = {\n    prefix: 'fas',\n    iconName: 'face-grin-squint',\n    icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM122.6 143.2c4.5-6.8 13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 192 125.8 164.3c-6.2-5.2-7.6-14.3-3.1-21.1zm263.6 21.1L353 192 386.2 219.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5s3.1 15.9-3.1 21.1z\"]\n  };\n  var faGrinSquint = faFaceGrinSquint;\n  var faUsersBetweenLines = {\n    prefix: 'fas',\n    iconName: 'users-between-lines',\n    icon: [576, 512, [], \"e591\", \"M24 16l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 64C10.7 64 0 53.3 0 40S10.7 16 24 16zm0 448l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24zM392 192a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm27.2 100.4c9.1-2.9 18.8-4.4 28.8-4.4 53 0 96 43 96 96l0 10.7c0 11.8-9.6 21.3-21.3 21.3l-78.8 0c2.7-7.5 4.1-15.6 4.1-24l0-8c0-34.1-10.6-65.7-28.8-91.6zm-262.4 0C138.6 318.3 128 349.9 128 384l0 8c0 8.4 1.4 16.5 4.1 24l-78.8 0C41.6 416 32 406.4 32 394.7L32 384c0-53 43-96 96-96 10 0 19.7 1.5 28.8 4.4zM72 192a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm152-16a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM176 384c0-61.9 50.1-112 112-112s112 50.1 112 112l0 8c0 13.3-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24l0-8z\"]\n  };\n  var faHouseMedicalCircleXmark = {\n    prefix: 'fas',\n    iconName: 'house-medical-circle-xmark',\n    icon: [640, 512, [], \"e513\", \"M309.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S50.8 272 64 272l16 0 0 176c0 35.3 28.7 64 64 64l196 0c-21.2-29.5-34.3-65.3-35.9-104L272 408c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 20 0c34.9-48.5 91.7-80 156-80 10.7 0 21.1 .9 31.3 2.5L309.8 8.6zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 400z\"]\n  };\n  var faTableList = {\n    prefix: 'fas',\n    iconName: 'table-list',\n    icon: [448, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 0l0 64 64 0 0-64-64 0zm320 0l-192 0 0 64 192 0 0-64zM64 224l0 64 64 0 0-64-64 0zm320 0l-192 0 0 64 192 0 0-64zM64 352l0 64 64 0 0-64-64 0zm320 0l-192 0 0 64 192 0 0-64z\"]\n  };\n  var faThList = faTableList;\n  var faFlaskVial = {\n    prefix: 'fas',\n    iconName: 'flask-vial',\n    icon: [640, 512, [], \"e4f3\", \"M184.6 411.5c-3.1 7.3-5.4 14.9-6.8 22.6-14.5 8.8-31.5 13.9-49.8 13.9-53 0-96-43-96-96L32 64C14.3 64 0 49.7 0 32S14.3 0 32 0L224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 255.6-39.4 91.9zM96 64l0 128 64 0 0-128-64 0zM352 0L512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 153.4 91.3 213c2.3 5.4 3.8 11.1 4.4 17l.3 .6-.3 0c.2 1.8 .3 3.6 .3 5.4 0 32.3-26.2 58.6-58.6 58.6l-266.9 0c-32.3 0-58.6-26.2-58.6-58.6 0-1.8 .1-3.6 .3-5.4l-.3 0 .3-.6c.6-5.8 2.1-11.6 4.4-17L320 217.4 320 64c-17.7 0-32-14.3-32-32S302.3 0 320 0l32 0zM453.2 242.6c-3.4-8-5.2-16.5-5.2-25.2l0-153.4-64 0 0 153.4c0 8.7-1.8 17.2-5.2 25.2l-33.2 77.4 140.7 0-33.2-77.4z\"]\n  };\n  var faCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'circle-exclamation',\n    icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-376c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM229.3 352a26.7 26.7 0 1 1 53.3 0 26.7 26.7 0 1 1 -53.3 0z\"]\n  };\n  var faExclamationCircle = faCircleExclamation;\n  var faTaxi = {\n    prefix: 'fas',\n    iconName: 'taxi',\n    icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32l0 32-8.9 0c-42 0-79.1 27.3-91.6 67.4l-23 73.5C14.5 219.1 0 243.9 0 272L0 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-32 320 0 0 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-176c0-28.1-14.5-52.9-36.4-67.1l-23-73.5C440.1 91.3 402.9 64 360.9 64l-8.9 0 0-32c0-17.7-14.3-32-32-32L192 0zM151.1 128l209.9 0c14 0 26.4 9.1 30.5 22.5l13 41.5-296.9 0 13-41.5c4.2-13.4 16.5-22.5 30.5-22.5zM96 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faCab = faTaxi;\n  var faTextSlash = {\n    prefix: 'fas',\n    iconName: 'text-slash',\n    icon: [576, 512, [\"remove-format\"], \"f87d\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L322.7 256.9 368.2 96 471 96 465 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C545.6 61.3 522.7 32 491.5 32l-319 0c-19.8 0-37.3 12.1-44.5 30.1l-87-87zM180.4 114.5l4.6-18.5 116.7 0-30.8 109-90.5-90.5zM241 310.8L211.3 416 160 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-42.2 0 15.1-53.3-51.9-51.9z\"]\n  };\n  var faRemoveFormat = faTextSlash;\n  var faPeoplePulling = {\n    prefix: 'fas',\n    iconName: 'people-pulling',\n    icon: [576, 512, [], \"e535\", \"M80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64L0 320c0 17.7 14.3 32 32 32 9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8l-20.5-122.7 15.7 0 30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7 8.6 3.6 18 3.1 25.9-.7 3.4-1.6 6.6-3.9 9.3-6.7 3.1-3.2 5.5-7 7.1-11.4 .1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9l-21.4-10.7-15.3-36.8c-17.1-41.1-57.3-67.9-101.9-67.9-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128l-53 0zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n  };\n  var faBackward = {\n    prefix: 'fas',\n    iconName: 'backward',\n    icon: [576, 512, [9194], \"f04a\", \"M204.3 43.1C215.9 32 233 28.9 247.7 35.2S272 56 272 72l0 136.3 172.3-165.1C455.9 32 473 28.9 487.7 35.2S512 56 512 72l0 368c0 16-9.6 30.5-24.3 36.8s-31.8 3.2-43.4-7.9L272 303.7 272 440c0 16-9.6 30.5-24.3 36.8s-31.8 3.2-43.4-7.9l-192-184C4.5 277.3 0 266.9 0 256s4.5-21.3 12.3-28.9l192-184z\"]\n  };\n  var faCarBurst = {\n    prefix: 'fas',\n    iconName: 'car-burst',\n    icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M232 16.1l0-48c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24zM32 168.1l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24zM281.5 70.6c9.4 9.4 24.6 9.4 33.9 0l33.9-33.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L281.5 36.6c-9.4 9.4-9.4 24.6 0 33.9zm-181 215l33.9-33.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L66.6 251.6c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zM66.6 2.7c-9.4 9.4-9.4 24.6 0 33.9l33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L100.5 2.7C91.1-6.7 76-6.7 66.6 2.7zM352.9 175.4L505 216.2c6.4 1.7 11.1 7.3 11.8 13.9l7.2 74-231.5-62 43.2-60.5c3.9-5.4 10.7-7.9 17.2-6.2zM223.6 228.5l-2.1 2.9c-21.7 5.5-39.9 22.3-46.1 45.5-4.1 15.5-12.4 46.4-24.8 92.7l-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 278.2 74.5-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6 4.1-15.5 12.4-46.4 24.8-92.7l8.3-30.9c6.2-23.2-1.1-46.8-17.2-62.5l-.3-3.6-10-103c-3.2-33.2-26.7-60.9-58.9-69.5L369.5 113.6c-32.2-8.6-66.4 3.6-85.8 30.8l-60.2 84.2zm48.7 57.8a32 32 0 1 1 -16.6 61.8 32 32 0 1 1 16.6-61.8zm208.1 88.9a32 32 0 1 1 61.8 16.6 32 32 0 1 1 -61.8-16.6z\"]\n  };\n  var faCarCrash = faCarBurst;\n  var faLink = {\n    prefix: 'fas',\n    iconName: 'link',\n    icon: [576, 512, [128279, \"chain\"], \"f0c1\", \"M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z\"]\n  };\n  var faChain = faLink;\n  var faBackwardStep = {\n    prefix: 'fas',\n    iconName: 'backward-step',\n    icon: [384, 512, [\"step-backward\"], \"f048\", \"M363 36.8c-12.9-7-28.7-6.3-41 1.8L64 208.1 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144.1 258 169.6c12.3 8.1 28 8.8 41 1.8s21-20.5 21-35.2l0-368c0-14.7-8.1-28.2-21-35.2z\"]\n  };\n  var faStepBackward = faBackwardStep;\n  var faX = {\n    prefix: 'fas',\n    iconName: 'x',\n    icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n  };\n  var faCircleUser = {\n    prefix: 'fas',\n    iconName: 'circle-user',\n    icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2 35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n  };\n  var faUserCircle = faCircleUser;\n  var faRectangleList = {\n    prefix: 'fas',\n    iconName: 'rectangle-list',\n    icon: [512, 512, [\"list-alt\"], \"f022\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm96 256a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm120-56l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 128l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faListAlt = faRectangleList;\n  var faHand = {\n    prefix: 'fas',\n    iconName: 'hand',\n    icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4S-3.6 325.7 12.4 341L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z\"]\n  };\n  var faHandPaper = faHand;\n  var faVanShuttle = {\n    prefix: 'fas',\n    iconName: 'van-shuttle',\n    icon: [576, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 64C28.7 64 0 92.7 0 128L0 336c0 35.3 28.7 64 64 64l.4 0c4 44.9 41.7 80 87.6 80s83.6-35.1 87.6-80l104.7 0c4 44.9 41.7 80 87.6 80 46.1 0 83.9-35.4 87.7-80.5 31.7-3.8 56.3-30.8 56.3-63.5l0-101.3c0-13.8-4.5-27.3-12.8-38.4l-80-106.7C471.1 73.5 452.1 64 432 64L64 64zM504 224l-120 0 0-96 48 0 72 96zM64 224l0-96 96 0 0 96-96 0zm160 0l0-96 96 0 0 96-96 0zM392 392a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM152 352a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n  };\n  var faShuttleVan = faVanShuttle;\n  var faStairs = {\n    prefix: 'fas',\n    iconName: 'stairs',\n    icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96z\"]\n  };\n  var faHorseHead = {\n    prefix: 'fas',\n    iconName: 'horse-head',\n    icon: [512, 512, [], \"f7ab\", \"M0 464L0 316.9C0 208.5 68.3 111.8 170.5 75.6L340.2 15.5c21.4-7.6 43.8 8.3 43.8 30.9 0 11-5.5 21.2-14.6 27.3L336 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5-16 16-37.8 25.1-60.5 25.1l-3.4 0c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0c-6.3 0-12.5-.5-18.6-1.5-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2-4.4-7.7-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4 0 20.3-16.5 36.8-36.8 36.8L48 512c-26.5 0-48-21.5-48-48zM328 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faVault = {\n    prefix: 'fas',\n    iconName: 'vault',\n    icon: [512, 512, [], \"e2c5\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64 0 17.7 14.3 32 32 32s32-14.3 32-32l256 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM256 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM64 256a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zm384-48c0 17.8-9.7 33.3-24 41.6l0 78.4c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-78.4c-14.3-8.3-24-23.8-24-41.6 0-26.5 21.5-48 48-48s48 21.5 48 48z\"]\n  };\n  var faDrumSteelpan = {\n    prefix: 'fas',\n    iconName: 'drum-steelpan',\n    icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128l0 192c0 80-128.9 128-288 128S0 432 0 352L0 160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4 0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5 47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4-47.1 19.9-55 39.9-55 49.8s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5 0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8c-.9 4.3-1.4 8.7-1.4 13.2 0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2-19.8-1.8-40.8-2.8-62.6-2.8s-42.8 1-62.6 2.8z\"]\n  };\n  var faThumbsUp = {\n    prefix: 'fas',\n    iconName: 'thumbs-up',\n    icon: [512, 512, [128077, 61575], \"f164\", \"M80 160c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32L0 192c0-17.7 14.3-32 32-32l48 0zM270.6 16C297.9 16 320 38.1 320 65.4l0 4.2c0 6.8-1.3 13.6-3.8 19.9L288 160 448 160c26.5 0 48 21.5 48 48 0 19.7-11.9 36.6-28.9 44 17 7.4 28.9 24.3 28.9 44 0 23.4-16.8 42.9-39 47.1 4.4 7.3 7 15.8 7 24.9 0 22.2-15 40.8-35.4 46.3 2.2 5.5 3.4 11.5 3.4 17.7 0 26.5-21.5 48-48 48l-87.9 0c-36.3 0-71.6-12.4-99.9-35.1L184 435.2c-15.2-12.1-24-30.5-24-50l0-186.6c0-14.9 3.5-29.6 10.1-42.9L226.3 43.3C234.7 26.6 251.8 16 270.6 16z\"]\n  };\n  var faStamp = {\n    prefix: 'fas',\n    iconName: 'stamp',\n    icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47 12.6-16.2 20.1-36.6 20.1-58.8 0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8 10.7 13.8 19.9 29.6 19.9 47 0 29.9-24.3 54.2-54.2 54.2L112 256c-61.9 0-112 50.1-112 112 0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112l-33.8 0c-29.9 0-54.2-24.3-54.2-54.2zM56 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l400 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L56 464z\"]\n  };\n  var faMenorah = {\n    prefix: 'fas',\n    iconName: 'menorah',\n    icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1L64 64c0 17.7-14.3 32-32 32S0 81.7 0 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32S96 81.7 96 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32l0 128c0 17.7 14.3 32 32 32l192 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 192 0c17.7 0 32-14.3 32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 53-43 96-96 96l-192 0 0 64 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0 0-64-192 0c-53 0-96-43-96-96L0 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32z\"]\n  };\n  var faChildren = {\n    prefix: 'fas',\n    iconName: 'children',\n    icon: [640, 512, [], \"e4e1\", \"M160.5 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm-72 480l0-80-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L86.7 285.5 58 323.3c-10.7 14.1-30.8 16.8-44.8 6.2S-3.7 298.7 7 284.7L65.9 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47L314 284.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.7-37.8 31.1 93.4c3.5 10.4-4.3 21.1-15.2 21.1l-17.8 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80-16 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480.5 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm-8 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-179.5-12.9 20.5c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9l12.3 0c33 0 63.7 16.9 81.2 44.9L619.6 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10l-12.9-20.5 0 179.5c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0z\"]\n  };\n  var faChartLine = {\n    prefix: 'fas',\n    iconName: 'chart-line',\n    icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7 262.6 153.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l73.4-73.4 57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n  };\n  var faLineChart = faChartLine;\n  var faSquareEnvelope = {\n    prefix: 'fas',\n    iconName: 'square-envelope',\n    icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM209.1 267.9L108.4 207.4c-7.7-4.6-12.4-12.9-12.4-21.9 0-14.1 11.4-25.5 25.5-25.5l204.9 0c14.1 0 25.5 11.4 25.5 25.5 0 9-4.7 17.3-12.4 21.9L238.9 267.9c-4.5 2.7-9.6 4.1-14.9 4.1s-10.4-1.4-14.9-4.1zM352 237.3l0 82.7c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-82.7 96.7 58C202.1 301 213 304 224 304s21.9-3 31.3-8.7l96.7-58z\"]\n  };\n  var faEnvelopeSquare = faSquareEnvelope;\n  var faBanSmoking = {\n    prefix: 'fas',\n    iconName: 'ban-smoking',\n    icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8l79.2 79.2-50.7 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l146.7 0 92.5 92.5c-31.4 22.4-69.8 35.5-111.2 35.5-106 0-192-86-192-192 0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32 82.7 0 0 32-50.7 0zm32 32l18.7 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32L269.3 224 144.8 99.5c31.4-22.4 69.8-35.5 111.2-35.5 106 0 192 86 192 192 0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16 0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16s7.2 16 16 16 16-7.2 16-16c0-26.5-21.5-48-48-48l-32 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16z\"]\n  };\n  var faSmokingBan = faBanSmoking;\n  var faTruckFront = {\n    prefix: 'fas',\n    iconName: 'truck-front',\n    icon: [448, 512, [], \"e2b7\", \"M0 112C0 67.8 35.8 32 80 32l288 0c44.2 0 80 35.8 80 80l0 256c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48C12.6 417.4 0 394.2 0 368L0 112zm96 80l0 64 256 0 0-64c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32zm32 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm224 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faBuilding = {\n    prefix: 'fas',\n    iconName: 'building',\n    icon: [384, 512, [127970, 61687], \"f1ad\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 352l32 0c17.7 0 32 14.3 32 32l0 80-96 0 0-80c0-17.7 14.3-32 32-32zM96 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM240 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM96 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n  };\n  var faBullseye = {\n    prefix: 'fas',\n    iconName: 'bullseye',\n    icon: [512, 512, [], \"f140\", \"M448 256a192 192 0 1 0 -384 0 192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faArrowLeftLong = {\n    prefix: 'fas',\n    iconName: 'arrow-left-long',\n    icon: [576, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 544 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-434.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n  };\n  var faLongArrowLeft = faArrowLeftLong;\n  var faChessRook = {\n    prefix: 'fas',\n    iconName: 'chess-rook',\n    icon: [384, 512, [9820], \"f447\", \"M0 32L0 133.5c0 17 6.7 33.3 18.7 45.3L64 224 64 384 7.8 454.3C2.7 460.6 0 468.4 0 476.5 0 496.1 15.9 512 35.5 512l312.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2l-56.2-70.3 0-160 45.3-45.3c12-12 18.7-28.3 18.7-45.3L384 32c0-17.7-14.3-32-32-32L320 0c-17.7 0-32 14.3-32 32l0 32-48 0 0-32c0-17.7-14.3-32-32-32L176 0c-17.7 0-32 14.3-32 32l0 32-48 0 0-32C96 14.3 81.7 0 64 0L32 0C14.3 0 0 14.3 0 32z\"]\n  };\n  var faBlenderPhone = {\n    prefix: 'fas',\n    iconName: 'blender-phone',\n    icon: [576, 512, [], \"f6b6\", \"M151.4 13.2c10.2 5.8 14.5 18.4 10 29.3L138.2 98.8c-3.9 9.6-13.7 15.4-24 14.4l-20.2-2C78.7 152.9 78 198.9 91.9 241.1l22.4-2.2c10.3-1 20 4.8 24 14.4l23.2 56.3c4.5 10.9 .2 23.4-10 29.3l-2.9 1.6c-33.6 19.2-81.7 16.2-106.2-21.6-56.3-86.6-56.3-199.1 0-285.7 24.6-37.7 72.7-40.7 106.2-21.6l2.9 1.6zM224 336L193.7 17.5C192.8 8.1 200.2 0 209.6 0l324 0c21.3 0 36.6 20.3 30.8 40.8L553.1 80 440 80c-13.3 0-24 10.7-24 24s10.7 24 24 24l99.4 0-18.3 64-81.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l67.4 0-27.4 96-256 0zm8 48l240 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-240 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm120 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faArrowTurnUp = {\n    prefix: 'fas',\n    iconName: 'arrow-turn-up',\n    icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n  };\n  var faLevelUp = faArrowTurnUp;\n  var faBicycle = {\n    prefix: 'fas',\n    iconName: 'bicycle',\n    icon: [640, 512, [128690], \"f206\", \"M331.7 43.3C336 36.3 343.7 32 352 32l104 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-65.6 0 72.2 148.4c10.7-2.9 21.9-4.4 33.4-4.4 70.7 0 128 57.3 128 128s-57.3 128-128 128-128-57.3-128-128c0-42 20.2-79.2 51.4-102.6l-20.4-41.9-73.5 147c-2.3 4.8-6.3 8.8-11.4 11.2-.6 .3-1.2 .5-1.8 .7-2.9 1.1-5.9 1.6-8.9 1.5L271 368c-7.9 63.1-61.7 112-127 112-70.7 0-128-57.3-128-128S73.3 224 144 224c10.8 0 21.2 1.3 31.2 3.8l28.5-56.9-11.5-26.9-40.2 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0c9.6 0 18.3 5.7 22.1 14.5l14.3 33.5 123.7 0-37.7-77.5c-3.6-7.4-3.2-16.2 1.2-23.2zM228.5 228.7l-45.6 91.3 84.8 0-39.1-91.3zM305.7 287l47.5-95-88.2 0 40.7 95zm168.7 75.5l-29.7-61c-12.8 13-20.7 30.8-20.7 50.5 0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72c-2.7 0-5.5 .2-8.1 .5l29.7 61c5.8 11.9 .8 26.3-11.1 32.1s-26.3 .8-32.1-11.1zM149.2 368c-20.2 0-33.4-21.3-24.3-39.4l24.2-48.5c-1.7-.1-3.4-.2-5.1-.2-39.8 0-72 32.2-72 72s32.2 72 72 72c34.3 0 62.9-23.9 70.2-56l-65 0z\"]\n  };\n  var faCircleArrowDown = {\n    prefix: 'fas',\n    iconName: 'circle-arrow-down',\n    icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM239 377l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l39 39 0-150.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 150.1 39-39c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0z\"]\n  };\n  var faArrowCircleDown = faCircleArrowDown;\n  var faGear = {\n    prefix: 'fas',\n    iconName: 'gear',\n    icon: [512, 512, [9881, \"cog\"], \"f013\", \"M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 336a80 80 0 1 0 -.6-160 80 80 0 1 0 .6 160z\"]\n  };\n  var faCog = faGear;\n  var faMarsAndVenusBurst = {\n    prefix: 'fas',\n    iconName: 'mars-and-venus-burst',\n    icon: [640, 512, [], \"e523\", \"M464-32c0 17.7 14.3 32 32 32l34.7 0-63 63c-28.4-19.5-62.7-31-99.8-31-97.2 0-176 78.8-176 176 0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9c81.9-15 144-86.8 144-173.1 0-37-11.4-71.4-31-99.8l63-63 0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112c0-17.7-14.3-32-32-32L496-64c-17.7 0-32 14.3-32 32zM368 96a112 112 0 1 1 0 224 112 112 0 1 1 0-224zM190.9-21.9C188.4-28 182.6-32 176-32s-12.4 4-14.9 10.1l-29.4 74-76.2-23.1c-6.3-1.9-13.1 .2-17.2 5.3S33.8 46.5 37 52.2l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2-5.6 79.4c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L152.1 268c-5.3-19.1-8.1-39.2-8.1-60 0-65.4 28-124.2 72.6-165.1L190.9-21.9z\"]\n  };\n  var faOtter = {\n    prefix: 'fas',\n    iconName: 'otter',\n    icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5 23.5 0 42.6-19.1 42.6-42.6l0-21.4c0-35.3-28.7-64-64-64l-64 0c-35.3 0-64 28.7-64 64l0 21.4c0 23.5 19.1 42.6 42.6 42.6 6.6 0 13.1-1.5 19.1-4.5 9.3-4.7 16.4-8.2 21.2-10.6L135.1 185c-4.5-3-7.1-8-7.1-13.3l0-3.7c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4l-12.9-6.4-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6-3.6 0-7.1-.2-10.6-.6l0 .6c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l160 0 0-64c0-23.7 12.9-44.4 32-55.4 9.4-5.4 20.3-8.6 32-8.6l0-16c0-26.5 21.5-48 48-48 8.8 0 16 7.2 16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1 0 0c0 123.7-100.3 224-224 224l-160.6 0C132 480 32 380 32 256.6l0-39.8c-10.1-14.6-16-32.3-16-51.4l0-21.4 0-1.4C6.7 139.3 0 130.5 0 120 0 106.7 10.7 96 24 96l2.8 0C44.8 58.2 83.3 32 128 32l64 0c44.7 0 83.2 26.2 101.2 64l2.8 0c13.3 0 24 10.7 24 24 0 10.5-6.7 19.3-16 22.6l0 1.4 0 21.4c0 1.4 0 2.8-.1 4.3 12-6.2 25.7-9.6 40.1-9.6l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-13.3 0-24 10.7-24 24l0 8 56.4 0c-15.2 17-24.4 39.4-24.4 64l-32 0c-42.3 0-78.2-27.4-91-65.3-5.1 .9-10.3 1.3-15.6 1.3-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n  };\n  var faCircleChevronLeft = {\n    prefix: 'fas',\n    iconName: 'circle-chevron-left',\n    icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256a256 256 0 1 0 -512 0 256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n  };\n  var faChevronCircleLeft = faCircleChevronLeft;\n  var faCircleQuestion = {\n    prefix: 'fas',\n    iconName: 'circle-question',\n    icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-336c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 47.2-36 67.2-56 74.5l0 3.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8.1c0-20.5 14.8-35.2 30.1-40.2 6.4-2.1 13.2-5.5 18.2-10.3 4.3-4.2 7.7-10 7.7-19.6 0-17.7-14.3-32-32-32zM224 368a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faQuestionCircle = faCircleQuestion;\n  var faWalkieTalkie = {\n    prefix: 'fas',\n    iconName: 'walkie-talkie',\n    icon: [384, 512, [], \"f8ef\", \"M88-32c13.3 0 24 10.7 24 24l0 72 48 0c0-17.7 14.3-32 32-32s32 14.3 32 32l32 0c0-17.7 14.3-32 32-32s32 14.3 32 32l16 0c26.5 0 48 21.5 48 48l0 160.9c0 9.9-2.3 19.7-6.8 28.6l-20.2 40.4c-3.3 6.7-5.1 14-5.1 21.5l0 84.7c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-84.7c0-7.5-1.7-14.8-5.1-21.5L6.8 301.5C2.3 292.6 0 282.8 0 272.9L0 112C0 85.5 21.5 64 48 64l16 0 0-72c0-13.3 10.7-24 24-24zm32 176c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faUserGroup = {\n    prefix: 'fas',\n    iconName: 'user-group',\n    icon: [576, 512, [128101, \"user-friends\"], \"f500\", \"M64 128a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zM0 464c0-97.2 78.8-176 176-176s176 78.8 176 176l0 6c0 23.2-18.8 42-42 42L42 512c-23.2 0-42-18.8-42-42l0-6zM432 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 240c79.5 0 144 64.5 144 144l0 22.4c0 23-18.6 41.6-41.6 41.6l-144.8 0c6.6-12.5 10.4-26.8 10.4-42l0-6c0-51.5-17.4-98.9-46.5-136.7 22.6-14.7 49.6-23.3 78.5-23.3z\"]\n  };\n  var faUserFriends = faUserGroup;\n  var faHouseChimney = {\n    prefix: 'fas',\n    iconName: 'house-chimney',\n    icon: [512, 512, [63499, \"home-lg\"], \"e3af\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM240 320c-26.5 0-48 21.5-48 48l0 96 128 0 0-96c0-26.5-21.5-48-48-48l-32 0z\"]\n  };\n  var faHomeLg = faHouseChimney;\n  var faRightFromBracket = {\n    prefix: 'fas',\n    iconName: 'right-from-bracket',\n    icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M505 273c9.4-9.4 9.4-24.6 0-33.9L361 95c-6.9-6.9-17.2-8.9-26.2-5.2S320 102.3 320 112l0 80-112 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l112 0 0 80c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2L505 273zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n  };\n  var faSignOutAlt = faRightFromBracket;\n  var faFile = {\n    prefix: 'fas',\n    iconName: 'file',\n    icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176z\"]\n  };\n  var faPlaneSlash = {\n    prefix: 'fas',\n    iconName: 'plane-slash',\n    icon: [576, 512, [], \"e069\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-183.4-183.4 7.1-7.7 127.3 0c30.9 0 56-25.1 56-56s-25.1-56-56-56L392.7 200 233.5 26.4C227.5 19.8 218.9 16 209.9 16l-43.7 0c-10.9 0-18.6 10.7-15.2 21.1L175.1 109.2 41-24.9zM130.2 200l-24.6 0-52.8-66c-3-3.8-7.6-6-12.5-6l-19.8 0c-10.4 0-18 9.8-15.5 19.9L32 256 5 364.1C2.4 374.2 10.1 384 20.5 384l19.8 0c4.9 0 9.5-2.2 12.5-6l52.8-66 99.7 0-54.3 162.9c-3.5 10.4 4.3 21.1 15.2 21.1l43.7 0c9 0 17.5-3.8 23.6-10.4L320.7 390.5 130.2 200z\"]\n  };\n  var faCloudShowersHeavy = {\n    prefix: 'fas',\n    iconName: 'cloud-showers-heavy',\n    icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96 0-42.5 27.6-78.6 65.9-91.2-1.3-6.7-1.9-13.7-1.9-20.8 0-61.9 50.1-112 112-112 43.1 0 80.5 24.3 99.2 60 14.7-17.1 36.5-28 60.8-28 44.2 0 80 35.8 80 80 0 5.5-.6 10.8-1.6 16 .5 0 1.1 0 1.6 0 53 0 96 43 96 96s-43 96-96 96L96 320zm6.8 79.6l-32 96C66.6 508.2 53 515 40.4 510.8S21 493 25.2 480.4l32-96C61.4 371.8 75 365 87.6 369.2S107 387 102.8 399.6zm120 0l-32 96c-4.2 12.6-17.8 19.4-30.4 15.2S141 493 145.2 480.4l32-96c4.2-12.6 17.8-19.4 30.4-15.2S227 387 222.8 399.6zm112 0l-32 96c-4.2 12.6-17.8 19.4-30.4 15.2S253 493 257.2 480.4l32-96c4.2-12.6 17.8-19.4 30.4-15.2S339 387 334.8 399.6zm120 0l-32 96c-4.2 12.6-17.8 19.4-30.4 15.2S373 493 377.2 480.4l32-96c4.2-12.6 17.8-19.4 30.4-15.2S459 387 454.8 399.6z\"]\n  };\n  var faPersonFalling = {\n    prefix: 'fas',\n    iconName: 'person-falling',\n    icon: [512, 512, [], \"e546\", \"M320 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 5.4c0 45-23.6 86.6-62.1 109.8l-4.6 2.8C131.4 184.7 96 247.1 96 314.6L96 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-69.4c0-16.7 3.3-33 9.4-48L359.2 500.2c11.1 13.7 31.3 15.8 45 4.7s15.8-31.3 4.7-45L295.2 320 400 320 438.4 371.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C437.3 263.1 423.1 256 408 256l-89 0-62.9-75.5c40.3-36 63.9-87.9 63.9-143.1l0-5.4zM104 144a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n  };\n  var faTurnDown = {\n    prefix: 'fas',\n    iconName: 'turn-down',\n    icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S332.9 320 320 320l-64 0 0-160C256 71.6 184.4 0 96 0L32 0C14.3 0 0 14.3 0 32L0 96c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32l0 160-64 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n  };\n  var faLevelDownAlt = faTurnDown;\n  var faUpRightAndDownLeftFromCenter = {\n    prefix: 'fas',\n    iconName: 'up-right-and-down-left-from-center',\n    icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0L488 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87-39-39c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512L24 512c-13.3 0-24-10.7-24-24L0 344c0-9.7 5.8-18.5 14.8-22.2S34.1 320.2 41 327l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2S177.7 512 168 512z\"]\n  };\n  var faExpandAlt = faUpRightAndDownLeftFromCenter;\n  var faUserTag = {\n    prefix: 'fas',\n    iconName: 'user-tag',\n    icon: [640, 512, [], \"f507\", \"M256.1 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM226.4 304l59.4 0c6.7 0 13.2 .4 19.7 1.1-.9 4.9-1.4 9.9-1.4 15l0 92.1c0 25.5 10.1 49.9 28.1 67.9l31.9 31.9-286.3 0c-16.4 0-29.7-13.3-29.7-29.7 0-98.5 79.8-178.3 178.3-178.3zM352.1 412.2l0-92.1c0-17.7 14.3-32 32-32l92.1 0c12.7 0 24.9 5.1 33.9 14.1l96 96c18.7 18.7 18.7 49.1 0 67.9l-76.1 76.1c-18.7 18.7-49.1 18.7-67.9 0l-96-96c-9-9-14.1-21.2-14.1-33.9zm104-44.2a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faHandSparkles = {\n    prefix: 'fas',\n    iconName: 'hand-sparkles',\n    icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32l0 208c0 8.8 7.2 16 16 16s16-7.2 16-16l0-176c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-112c0-17.7 14.3-32 32-32s32 14.3 32 32l0 178.2c-19.2 5.4-34.7 20.4-40.4 40.3l-6.5 22.7-22.7 6.5c-25.2 7.2-42.5 30.2-42.5 56.4 0 22.1 12.4 42 31.4 51.9-27.5 17.8-60.2 28.1-95.4 28.1l-19.2 0c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6l0-272c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-208c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6l-7.3 25.4-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7l25.4 7.3 7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6l7.3-25.4 25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7l-25.4-7.3-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456 570.2 504.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456 487.7 442.2c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408 549.8 359.7c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n  };\n  var faArrowsToDot = {\n    prefix: 'fas',\n    iconName: 'arrows-to-dot',\n    icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32l0 32 32 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9S179.1 64 192 64l32 0 0-32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9S332.9 448 320 448l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9S64 332.9 64 320l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9S448 179.1 448 192l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faFaceSadCry = {\n    prefix: 'fas',\n    iconName: 'face-sad-cry',\n    icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6L160 296c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 171.7C44.4 421.6 0 344 0 256 0 114.6 114.6 0 256 0S512 114.6 512 256c0 88-44.4 165.6-112 211.7L400 296c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 197.4zM152 196l16 0c11 0 20 9 20 20s9 20 20 20 20-9 20-20c0-33.1-26.9-60-60-60l-16 0c-33.1 0-60 26.9-60 60 0 11 9 20 20 20s20-9 20-20 9-20 20-20zm172 20c0-11 9-20 20-20l16 0c11 0 20 9 20 20s9 20 20 20 20-9 20-20c0-33.1-26.9-60-60-60l-16 0c-33.1 0-60 26.9-60 60 0 11 9 20 20 20s20-9 20-20zM208 336l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n  };\n  var faSadCry = faFaceSadCry;\n  var faDongSign = {\n    prefix: 'fas',\n    iconName: 'dong-sign',\n    icon: [384, 512, [], \"e169\", \"M288-16c-17.7 0-32 14.3-32 32l0 32-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 72.2c-22.9-15.3-50.4-24.2-80-24.2-79.5 0-144 64.5-144 144S96.5 432 176 432c30 0 57.8-9.1 80.8-24.8 3.3 14.2 16 24.8 31.2 24.8 17.7 0 32-14.3 32-32l0-304 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-32c0-17.7-14.3-32-32-32zM96 288a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464z\"]\n  };\n  var faPeopleLine = {\n    prefix: 'fas',\n    iconName: 'people-line',\n    icon: [576, 512, [], \"e534\", \"M288 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm96 312c0 25-12.7 47-32 59.9l0 44.1-128 0 0-44.1C204.7 359 192 337 192 312l0-40c0-53 43-96 96-96s96 43 96 96l0 40zm16 104l0-27.3c19.9-22.5 32-52.2 32-84.7l0-32c0-26.7-7.3-51.6-19.9-73.1 11.1-4.5 23.2-6.9 35.9-6.9 53 0 96 43 96 96l0 32c0 23.7-12.9 44.4-32 55.4l0 40.6-112 0zM64 375.4C44.9 364.4 32 343.7 32 320l0-32c0-53 43-96 96-96 12.7 0 24.8 2.5 35.9 6.9-12.6 21.4-19.9 46.4-19.9 73.1l0 32c0 32.5 12.1 62.1 32 84.7l0 27.3-112 0 0-40.6zM128 32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm320 0a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM24 464l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faSquareRss = {\n    prefix: 'fas',\n    iconName: 'square-rss',\n    icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24 137 0 248 111 248 248 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24 83.9 0 152 68.1 152 152 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faRssSquare = faSquareRss;\n  var faCalendarMinus = {\n    prefix: 'fas',\n    iconName: 'calendar-minus',\n    icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm24 264c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faChartDiagram = {\n    prefix: 'fas',\n    iconName: 'chart-diagram',\n    icon: [512, 512, [], \"e695\", \"M80 32C53.5 32 32 53.5 32 80s21.5 48 48 48l152 0 0 40-48 48-72 0c-39.8 0-72 32.2-72 72l0 64-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-64c0-13.3 10.7-24 24-24l72 0 48 48 0 40-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-40 48-48 72 0c13.3 0 24 10.7 24 24l0 64-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-64c0-39.8-32.2-72-72-72l-72 0-48-48 0-40 152 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L80 32z\"]\n  };\n  var faFaceTired = {\n    prefix: 'fas',\n    iconName: 'face-tired',\n    icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4 6.2 11.7 10.3 24.4 10.3 35.9 0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3l-3.2 0c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8S128 405.2 128 400c0-11.6 4.2-24.2 10.3-35.9 6.3-12 15.3-24.3 26.4-35.4zM122.6 159.2c4.5-6.8 13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 208 125.8 180.3c-6.2-5.2-7.6-14.3-3.1-21.1zm263.6 21.1L353 208 386.2 235.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5s3.1 15.9-3.1 21.1z\"]\n  };\n  var faTired = faFaceTired;\n  var faHandPointRight = {\n    prefix: 'fas',\n    iconName: 'hand-point-right',\n    icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32 0 13.2 4 25.4 10.8 35.6-24.9 8.7-42.8 32.5-42.8 60.4 0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"]\n  };\n  var faArrowUp = {\n    prefix: 'fas',\n    iconName: 'arrow-up',\n    icon: [384, 512, [8593], \"f062\", \"M214.6 17.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 117.3 160 488c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 105.4 105.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n  };\n  var faCubesStacked = {\n    prefix: 'fas',\n    iconName: 'cubes-stacked',\n    icon: [512, 512, [], \"e4e6\", \"M192 32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64zm32 352l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm192 0l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM320 192l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm-182.6-3.9c12.5-12.5 32.8-12.5 45.3 0l45.3 45.3c12.5 12.5 12.5 32.8 0 45.3l-45.3 45.3c-12.5 12.5-32.8 12.5-45.3 0L92.1 278.6c-12.5-12.5-12.5-32.8 0-45.3l45.3-45.3zM32 384l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n  };\n  var faChildCombatant = {\n    prefix: 'fas',\n    iconName: 'child-combatant',\n    icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176.5 128a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-16 352l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192.2 20.9 33.2c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-39.9-63.3C266.8 184 223.3 160 176.5 160S86.2 184 61.3 223.6L21.4 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10l20.9-33.2 0 192.2c0 17.7 14.3 32 32 32s32-14.3 32-32zM448.5 0l-32 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9l-23-92.1 44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3 0-109.3c0-11.8-6.4-22.2-16-27.7l0-116.3c0-8.8-7.2-16-16-16z\"]\n  };\n  var faChildRifle = faChildCombatant;\n  var faVestPatches = {\n    prefix: 'fas',\n    iconName: 'vest-patches',\n    icon: [448, 512, [], \"e086\", \"M200 293.9L200 464c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6L64 48C64 21.5 85.5 0 112 0l3.5 0c.3 0 .6 0 1 0 .6 0 1.2 0 1.8 0 18.8 0 34.1 9.7 44.1 18.8 9.3 8.4 28.5 21.2 61.7 21.2s52.4-12.8 61.7-21.2c10-9.1 25.3-18.8 44.1-18.8 .6 0 1.2 0 1.8 0 .3 0 .6 0 1 0L336 0c26.5 0 48 21.5 48 48l0 97.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6L448 464c0 26.5-21.5 48-48 48l-104 0c-26.5 0-48-21.5-48-48l0-170.1c0-3.9 .5-7.8 1.4-11.6L303.6 65.4C285.9 77.2 259.8 88 224 88s-61.9-10.8-79.6-22.6l54.2 216.8c1 3.8 1.4 7.7 1.4 11.6zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305 111.5 320.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288 128.5 272.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280l0 40c0 8.8 7.2 16 16 16l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n  };\n  var faMartiniGlassEmpty = {\n    prefix: 'fas',\n    iconName: 'martini-glass-empty',\n    icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 32C19.1 32 7.4 39.8 2.4 51.8S.2 77.5 9.4 86.6l214.6 214.6 0 146.7-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-146.7 214.6-214.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 32 480 32L32 32zM256 242.7L109.3 96 402.7 96 256 242.7z\"]\n  };\n  var faGlassMartini = faMartiniGlassEmpty;\n  var faMagnet = {\n    prefix: 'fas',\n    iconName: 'magnet',\n    icon: [448, 512, [129522], \"f076\", \"M0 176L0 288C0 411.7 100.3 512 224 512S448 411.7 448 288l0-112-128 0 0 112c0 53-43 96-96 96s-96-43-96-96l0-112-128 0zm0-48l128 0 0-64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64zm320 0l128 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64z\"]\n  };\n  var faRoadBarrier = {\n    prefix: 'fas',\n    iconName: 'road-barrier',\n    icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 266.3 149.2 96 64 96 64 64c0-17.7-14.3-32-32-32zM405.2 96l-74.3 0-5.4 10.7-90.6 181.3 74.3 0 5.4-10.7 90.6-181.3zM362.8 288l74.3 0 5.4-10.7 90.6-181.3-74.3 0-5.4 10.7-90.6 181.3zM202.8 96l-5.4 10.7-90.6 181.3 74.3 0 5.4-10.7 90.6-181.3-74.3 0zm288 192l85.2 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.7-85.2 170.3z\"]\n  };\n  var faCompassDrafting = {\n    prefix: 'fas',\n    iconName: 'compass-drafting',\n    icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M99.3 256.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2 0-53 43-96 96-96s96 43 96 96c0 14.3-3.1 27.9-8.8 40.2l44.4 76.7c-23.1 26-53.7 45.1-88.4 53.8L256 191.9 187.9 309.5c21.5 6.8 44.3 10.5 68.1 10.5 70.7 0 133.8-32.7 174.9-84 11.1-13.8 31.2-16 45-5s16 31.2 5 45c-52.7 65.8-133.9 108-224.8 108-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496l0-55.4c0-8.4 2.2-16.7 6.5-24.1l60-103.7c-12.8-11.2-24.6-23.5-35.3-36.8-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1zM381.1 407.9c32.5-13 62.4-31 88.9-52.9l35.6 61.5c4.2 7.3 6.5 15.6 6.5 24.1l0 55.4c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9l-32.3-55.8zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faDraftingCompass = faCompassDrafting;\n  var faSquarePersonConfined = {\n    prefix: 'fas',\n    iconName: 'square-person-confined',\n    icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56l0 102.1c0 36.4-29.5 65.9-65.9 65.9-17.5 0-34.3-6.9-46.6-19.3l-54.7-54.7-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9l41.4 41.4 0-58.7z\"]\n  };\n  var faPlateWheat = {\n    prefix: 'fas',\n    iconName: 'plate-wheat',\n    icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zM56 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24S42.7 64 56 64zM24 136l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16 44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80l0-16zM400 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zm80 160l0 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80zm-96 16l0 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320l456.4 0c14.8 0 26.2 12.9 24.4 27.6-6.3 50.2-44.4 89.4-92.6 98.4l0 2c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n  };\n  var faSignHanging = {\n    prefix: 'fas',\n    iconName: 'sign-hanging',\n    icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32l0 32 352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0C14.3 128 0 113.7 0 96S14.3 64 32 64l32 0 0-32C64 14.3 78.3 0 96 0zM208 176l240 0c17.7 0 32 14.3 32 32l0 144c0 17.7-14.3 32-32 32l-240 0c-17.7 0-32-14.3-32-32l0-144c0-17.7 14.3-32 32-32z\"]\n  };\n  var faSign = faSignHanging;\n  var faCarBattery = {\n    prefix: 'fas',\n    iconName: 'car-battery',\n    icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l16 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l16 0zM392 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-32zM64 240c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 216c-13.3 0-24 10.7-24 24z\"]\n  };\n  var faBatteryCar = faCarBattery;\n  var faShirt = {\n    prefix: 'fas',\n    iconName: 'shirt',\n    icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M320.2 112c44.2 0 80-35.8 80-80l53.5 0c17 0 33.3 6.7 45.3 18.7L617.6 169.4c12.5 12.5 12.5 32.8 0 45.3l-50.7 50.7c-12.5 12.5-32.8 12.5-45.3 0l-41.4-41.4 0 224c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-224-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0L22.9 214.6c-12.5-12.5-12.5-32.8 0-45.3L141.5 50.7c12-12 28.3-18.7 45.3-18.7l53.5 0c0 44.2 35.8 80 80 80z\"]\n  };\n  var faTShirt = faShirt;\n  var faTshirt = faShirt;\n  var faParagraph = {\n    prefix: 'fas',\n    iconName: 'paragraph',\n    icon: [448, 512, [182], \"f1dd\", \"M160 0L416 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 416c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-416-48 0 0 416c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160-48 0C71.6 320 0 248.4 0 160S71.6 0 160 0z\"]\n  };\n  var faEnvelopesBulk = {\n    prefix: 'fas',\n    iconName: 'envelopes-bulk',\n    icon: [576, 512, [\"mail-bulk\"], \"f674\", \"M112 0C85.5 0 64 21.5 64 48l0 160 80 0 0-32c0-53 43-96 96-96l208 0 0-32c0-26.5-21.5-48-48-48L112 0zM240 128c-26.5 0-48 21.5-48 48l0 32 80 0c53 0 96 43 96 96l0 112 160 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-288 0zm200 64l48 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24zM48 256c-26.5 0-48 21.5-48 48l0 10.4 156.6 86.2c1.1 .6 2.2 .9 3.4 .9s2.4-.3 3.4-.9L320 314.4 320 304c0-26.5-21.5-48-48-48L48 256zM320 369.2L186.6 442.6c-8.1 4.5-17.3 6.8-26.6 6.8s-18.4-2.4-26.6-6.8L0 369.2 0 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-94.8z\"]\n  };\n  var faMailBulk = faEnvelopesBulk;\n  var faGuitar = {\n    prefix: 'fas',\n    iconName: 'guitar',\n    icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6-11 11-18 24.6-21.4 39.6-3.7 16.6-19.1 30.7-36.1 31.6-25.6 1.3-49.3 10.7-67.3 28.6-44.8 44.8-36.4 125.8 18.7 180.9S183.6 528 228.4 483.2c17.9-17.9 27.4-41.7 28.6-67.3 .9-17 15-32.3 31.6-36.1 15-3.4 28.6-10.5 39.6-21.4 31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n  };\n  var faSuitcase = {\n    prefix: 'fas',\n    iconName: 'suitcase',\n    icon: [512, 512, [129523], \"f0f2\", \"M200 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 424 224 0 0-424c0-30.9-25.1-56-56-56L200 0c-30.9 0-56 25.1-56 56zM416 96l0 384 32 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-32 0zM96 480l0-384-32 0C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l32 0z\"]\n  };\n  var faCircleUp = {\n    prefix: 'fas',\n    iconName: 'circle-up',\n    icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm11.3-387.3l104 104c4.6 4.6 5.9 11.5 3.5 17.4S366.5 256 360 256l-56 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-56 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l104-104c6.2-6.2 16.4-6.2 22.6 0z\"]\n  };\n  var faArrowAltCircleUp = faCircleUp;\n  var faF = {\n    prefix: 'fas',\n    iconName: 'f',\n    icon: [320, 512, [102], \"46\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-128 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n  };\n  var faXmarksLines = {\n    prefix: 'fas',\n    iconName: 'xmarks-lines',\n    icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n  };\n  var faEarthOceania = {\n    prefix: 'fas',\n    iconName: 'earth-oceania',\n    icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM192 150.6c0-12.5 10.1-22.6 22.6-22.6l41.4 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0c-8.5 0-16.6-3.4-22.6-9.4l-16-16c-4.2-4.2-6.6-10-6.6-16zM432 256c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM411.3 379.3l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM224 432c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm-96-80c-17.7 0-32-14.3-32-32l0-18.7c0-8.5 3.4-16.6 9.4-22.6l48-48c4.2-4.2 10-6.6 16-6.6l6.6 0c8.8 0 16 7.2 16 16s7.2 16 16 16 16-7.2 16-16 7.2-16 16-16l6.6 0c6 0 11.8 2.4 16 6.6l48 48c6 6 9.4 14.1 9.4 22.6l0 50.7c0 17.7-14.3 32-32 32l-50.7 0c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4L128 352z\"]\n  };\n  var faGlobeOceania = faEarthOceania;\n  var faCommentSlash = {\n    prefix: 'fas',\n    iconName: 'comment-slash',\n    icon: [576, 512, [], \"f4b3\", \"M41-25C31.6-34.3 16.4-34.3 7-25S-2.3-.4 7 9L535 537c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.6-96.6c44.4-43.2 71.6-101.8 71.6-166.5 0-132.5-114.6-240-256-240-63 0-120.8 21.4-165.4 56.8L41-25zm19.4 155C42.2 163 32 200.3 32 239.9 32 294.2 51.2 344.2 83.6 384.4L34.8 476.7c-4.8 9-3.3 20 3.6 27.5S56.1 514 65.5 510l118.4-50.7c31.8 13.3 67.1 20.7 104.1 20.7 36.4 0 70.9-7.1 102.3-19.9L60.3 130.1z\"]\n  };\n  var faPlay = {\n    prefix: 'fas',\n    iconName: 'play',\n    icon: [448, 512, [9654], \"f04b\", \"M91.2 36.9c-12.4-6.8-27.4-6.5-39.6 .7S32 57.9 32 72l0 368c0 14.1 7.5 27.2 19.6 34.4s27.2 7.5 39.6 .7l336-184c12.8-7 20.8-20.5 20.8-35.1s-8-28.1-20.8-35.1l-336-184z\"]\n  };\n  var faVialCircleCheck = {\n    prefix: 'fas',\n    iconName: 'vial-circle-check',\n    icon: [512, 512, [], \"e596\", \"M32 32C32 14.3 46.3 0 64 0L288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 161.4c-66.1 30.3-112 97.1-112 174.6 0 39.7 12 76.6 32.7 107.2-10.3 3.1-21.3 4.8-32.7 4.8-61.9 0-112-50.1-112-112L64 64C46.3 64 32 49.7 32 32zm96 32l0 128 96 0 0-128-96 0zm96 336a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n  };\n  var faBridgeCircleCheck = {\n    prefix: 'fas',\n    iconName: 'bridge-circle-check',\n    icon: [576, 512, [], \"e4c9\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96 6.4 0 12.7 .6 18.7 1.8 34.7-49.5 92.2-81.8 157.3-81.8 28.6 0 55.6 6.2 80 17.4l0-65.4-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faCediSign = {\n    prefix: 'fas',\n    iconName: 'cedi-sign',\n    icon: [384, 512, [], \"e0df\", \"M232 32c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 26.5C88.8 73.9 16 156.4 16 256S88.8 438.1 184 453.5l0 26.5c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24.6c46.8-3.7 89.1-23.6 121.3-53.9 12.9-12.1 13.4-32.4 1.3-45.2s-32.4-13.4-45.2-1.3c-20.7 19.6-47.6 32.7-77.3 36.2l0-270.1c29.8 3.5 56.6 16.6 77.3 36.2 12.9 12.1 33.1 11.5 45.2-1.3s11.5-33.1-1.3-45.2C321.1 80.2 278.8 60.3 232 56.6L232 32zm-48 91.8l0 264.4C124.3 373.8 80 320.1 80 256s44.3-117.8 104-132.2z\"]\n  };\n  var faPuzzlePiece = {\n    prefix: 'fas',\n    iconName: 'puzzle-piece',\n    icon: [512, 512, [129513], \"f12e\", \"M224 0c35.3 0 64 21.5 64 48 0 10.4-4.4 20-12 27.9-6.6 6.9-12 15.3-12 24.9 0 15 12.2 27.2 27.2 27.2l44.8 0c26.5 0 48 21.5 48 48l0 44.8c0 15 12.2 27.2 27.2 27.2 9.5 0 18-5.4 24.9-12 7.9-7.5 17.5-12 27.9-12 26.5 0 48 28.7 48 64s-21.5 64-48 64c-10.4 0-20.1-4.4-27.9-12-6.9-6.6-15.3-12-24.9-12-15 0-27.2 12.2-27.2 27.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2 0-9.2 5.8-17.3 13.2-22.8 11.6-8.7 18.8-20.7 18.8-34 0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34 7.4 5.5 13.2 13.5 13.2 22.8 0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2c0-12.8 10.4-23.2 23.2-23.2 9.2 0 17.3 5.8 22.8 13.2 8.7 11.6 20.7 18.8 34 18.8 26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8-5.5 7.4-13.5 13.2-22.8 13.2-12.8 0-23.2-10.4-23.2-23.2L0 176c0-26.5 21.5-48 48-48l108.8 0c15 0 27.2-12.2 27.2-27.2 0-9.5-5.4-18-12-24.9-7.5-7.9-12-17.5-12-27.9 0-26.5 28.7-48 64-48z\"]\n  };\n  var faHelmetUn = {\n    prefix: 'fas',\n    iconName: 'helmet-un',\n    icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0 107.5 0 0 107.5 0 240l0 56.3C0 344.8 39.2 384 87.7 384l127.3 0 128.6 121.4c4.5 4.2 10.4 6.6 16.5 6.6l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.5 0-1.5-1.5 0-174.5 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.5 0zM320 417.2l-78-73.7 32.4-55.5 45.6 0 0 129.2zM285.3 103.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n  };\n  var faGlassWater = {\n    prefix: 'fas',\n    iconName: 'glass-water',\n    icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM73 156.5l-6.6-92.5 251.3 0-6.6 92.5-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0-20.9-10.4-45.5-10.4-66.4 0-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n  };\n  var faHeartCircleBolt = {\n    prefix: 'fas',\n    iconName: 'heart-circle-bolt',\n    icon: [576, 512, [], \"e4fc\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm177.4-77c-5.8-4.2-13.8-4-19.4 .5l-80 64c-5.3 4.2-7.4 11.4-5.1 17.8S369.2 416 376 416l32.9 0-15.9 42.4c-2.5 6.7-.2 14.3 5.6 18.6s13.8 4 19.4-.5l80-64c5.3-4.2 7.4-11.4 5.1-17.8S494.8 384 488 384l-32.9 0 15.9-42.4c2.5-6.7 .2-14.3-5.6-18.6z\"]\n  };\n  var faPumpSoap = {\n    prefix: 'fas',\n    iconName: 'pump-soap',\n    icon: [320, 512, [], \"e06b\", \"M96 0l0 80 128 0 0-24 72 0c13.3 0 24-10.7 24-24S309.3 8 296 8l-72 0 0-8c0-17.7-14.3-32-32-32l-64 0C110.3-32 96-17.7 96 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zM224 344c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9 3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C187 263.1 224 311.5 224 344z\"]\n  };\n  var faHandScissors = {\n    prefix: 'fas',\n    iconName: 'hand-scissors',\n    icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32 0 25.3 19.5 46 44.3 47.9-7.7 8.5-12.3 19.8-12.3 32.1 0 26.5 21.5 48 48 48l96 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3-22.8-22.8-53.6-35.6-85.8-35.6L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4l-67.1-21.4 0 .1-204-64.1C62.9 59.2 40.5 70.9 33.9 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n  };\n  var faDolly = {\n    prefix: 'fas',\n    iconName: 'dolly',\n    icon: [576, 512, [\"dolly-box\"], \"f472\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l72.9 0 92.1 276.2c-22.5 17.6-37 45-37 75.8 0 53 43 96 96 96 52.4 0 95.1-42 96-94.3l202.1-67.4c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2L331.8 357c-17.2-22.1-43.9-36.5-74-37L165.7 43.8C156.9 17.6 132.5 0 104.9 0L32 0zM208 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM280.5 89.3c-25.2 8.2-39 35.3-30.8 60.5l39.6 121.7c8.2 25.2 35.3 39 60.5 30.8l121.7-39.6c25.2-8.2 39-35.3 30.8-60.5L462.8 80.5c-8.2-25.2-35.3-39-60.5-30.8L280.5 89.3z\"]\n  };\n  var faDollyBox = faDolly;\n  var faPaperclip = {\n    prefix: 'fas',\n    iconName: 'paperclip',\n    icon: [512, 512, [128206], \"f0c6\", \"M224.6 12.8c56.2-56.2 147.4-56.2 203.6 0s56.2 147.4 0 203.6l-164 164c-34.4 34.4-90.1 34.4-124.5 0s-34.4-90.1 0-124.5L292.5 103.3c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L185 301.3c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l164-164c31.2-31.2 31.2-81.9 0-113.1s-81.9-31.2-113.1 0l-164 164c-53.1 53.1-53.1 139.2 0 192.3s139.2 53.1 192.3 0L428.3 284.3c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L343.4 459.6c-78.1 78.1-204.7 78.1-282.8 0s-78.1-204.7 0-282.8l164-164z\"]\n  };\n  var faDemocrat = {\n    prefix: 'fas',\n    iconName: 'democrat',\n    icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3 1-2.8 3.8-4.7 6.8-4.7 1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1c1.4-1.3 3.2-2.1 5.2-2.1 3 0 5.8 1.8 6.8 4.7 2.4 6.5 6.2 18.4 6.2 27.3 0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8l219.2 0 32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17l0 87.4-352 0-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3l-2 0C23.9 256 0 232.1 0 202.7 0 190.6 4.1 178.9 11.7 169.4L87.6 74.6C78.1 67.4 64 53.2 64 32zM544 352l0 128c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-160 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-128 352 0zM256 280a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm248-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM368 280a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faSquareArrowUpRight = {\n    prefix: 'fas',\n    iconName: 'square-arrow-up-right',\n    icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM272 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-112 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l54.1 0-103 103c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l103-103 0 54.1z\"]\n  };\n  var faExternalLinkSquare = faSquareArrowUpRight;\n  var faFerry = {\n    prefix: 'fas',\n    iconName: 'ferry',\n    icon: [640, 512, [], \"e4ea\", \"M224 32c0-17.7 14.3-32 32-32L384 0c17.7 0 32 14.3 32 32l0 32 48 0c44.2 0 80 35.8 80 80l0 128-.1 0c.1 .7 .1 1.3 .1 2 0 30.2-7.6 59.8-22 86.3l-12.7 23.3-.6 1c-22.3-11.3-46.5-16.8-70.8-16.7-32.5 .2-64.9 10.7-92.4 31.4-22.1 16.6-29.1 16.6-51.2 0-28.1-21.1-61.3-31.6-94.4-31.4-23.6 .2-47.1 5.7-68.7 16.7l-.6-1-12.7-23.3c-14.4-26.5-22-56.2-22-86.3 0-.7 0-1.4 .1-2l-.1 0 0-128c0-44.2 35.8-80 80-80l48 0 0-32zM160 256l320 0 0-112c0-8.8-7.2-16-16-16l-288 0c-8.8 0-16 7.2-16 16l0 112zM403.4 476.1C379.1 494.3 351.1 512 320 512s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n  };\n  var faMosquito = {\n    prefix: 'fas',\n    iconName: 'mosquito',\n    icon: [576, 512, [], \"e52b\", \"M178.5 495.2c-7.5 9.6-21 12.1-31.3 5.3S133.5 480 138.9 469l1.2-2.2 36.2-58 0-41 .3-4c.6-3.9 2.2-7.7 4.6-10.9l39.3-52.2-66.2 59.5c-17 15.3-39 23.7-61.9 23.8l-8.1 0c-46.6 0-84.4-37.8-84.4-84.4 0-43 32.4-79.2 75.1-83.9l130.5-14.5-44.8-38.3-2.4-2.4c-5.3-6-7.3-14.4-5.3-22.3l13.3-53.4-25.9-38.9-1.3-2.1c-5.8-10.8-2.7-24.6 7.4-31.7 10.1-7.1 23.7-5.1 31.4 4.3l1.5 2 32 48 1.4 2.2c2.8 5.3 3.5 11.6 2.1 17.6l-12.3 49.2 53.3 45.7 0-28.8c0-11.8 6.5-22.1 16-27.7l0-60.5 .3-3.3c1.5-7.3 8-12.7 15.7-12.7s14.2 5.5 15.7 12.7l.3 3.2 0 60.5c9.6 5.5 16 15.8 16 27.7l0 28.9 53.4-45.8-12.3-49.2c-1.5-5.9-.7-12.2 2.1-17.6l1.4-2.2 32-48 1.5-2c7.7-9.4 21.3-11.5 31.4-4.3 10.1 7.1 13.1 20.9 7.4 31.7l-1.3 2.1-25.9 38.9 13.3 53.4c2 8-.1 16.3-5.3 22.3l-2.4 2.4-44.7 38.3 130.5 14.5c42.8 4.8 75.1 40.9 75.1 83.9 0 46.6-37.8 84.4-84.4 84.4l-8.1 0c-22.8 0-44.9-8.5-61.9-23.8l-66.1-59.5 39.2 52.2c2.4 3.2 4 7 4.6 10.9l.3 4 0 41 36.2 58 1.2 2.1c5.4 11 2 24.7-8.3 31.5s-23.8 4.4-31.3-5.3l-1.4-2-40-64-1.6-3.1c-1.4-3.1-2.1-6.6-2.1-10.1l0-39.8-32.4-43.1 0 74.7c0 17.7-14.3 32-32 32-17.7 0-32-14.3-32-32l0-74.6-32.3 43 0 39.8c0 3.5-.7 6.9-2.1 10.1l-1.6 3.1-40 64-1.4 2z\"]\n  };\n  var faBuildingCircleArrowRight = {\n    prefix: 'fas',\n    iconName: 'building-circle-arrow-right',\n    icon: [576, 512, [], \"e4d1\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 144.7c-35.7 2.9-68.5 15.6-96 35.4l0-4c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l4 0c-13.8 19.2-24.1 41-30.1 64.5-1.9-.4-3.9-.5-5.9-.5l-32 0c-17.7 0-32 14.3-32 32l0 80 74.9 0c6.1 17.3 14.6 33.4 25.1 48L96 512c-35.3 0-64-28.7-64-64L32 64zM144 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM144 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6l28.7 28.7-89.4 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l89.4 0-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n  };\n  var faLeftRight = {\n    prefix: 'fas',\n    iconName: 'left-right',\n    icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M502.6 406.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9S352 492.9 352 480l0-64-320 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c12.5 12.5 12.5 32.8 0 45.3zM9.4 150.6c-12.5-12.5-12.5-32.8 0-45.3l96-96c9.2-9.2 22.9-11.9 34.9-6.9S160 19.1 160 32l0 64 320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96z\"]\n  };\n  var faArrowsAltH = faLeftRight;\n  var faVirus = {\n    prefix: 'fas',\n    iconName: 'virus',\n    icon: [512, 512, [], \"e074\", \"M296 40c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 44.1-53.3 66.1-84.5 35-15.6-15.6-40.9-15.6-56.6 0s-15.6 40.9 0 56.6c31.2 31.2 9.1 84.5-35 84.5-22.1 0-40 17.9-40 40s17.9 40 40 40c44.1 0 66.1 53.3 35 84.5-15.6 15.6-15.6 40.9 0 56.6s40.9 15.6 56.6 0c31.2-31.2 84.5-9.1 84.5 35 0 22.1 17.9 40 40 40s40-17.9 40-40c0-44.1 53.3-66.1 84.5-35 15.6 15.6 40.9 15.6 56.6 0s15.6-40.9 0-56.6c-31.2-31.2-9.1-84.5 35-84.5 22.1 0 40-17.9 40-40s-17.9-40-40-40c-44.1 0-66.1-53.3-35-84.5 15.6-15.6 15.6-40.9 0-56.6s-40.9-15.6-56.6 0C349.3 106.1 296 84.1 296 40zM160 224a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faGem = {\n    prefix: 'fas',\n    iconName: 'gem',\n    icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5L210.5 179.8 63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8l-147.2-12.3 57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n  };\n  var faToilet = {\n    prefix: 'fas',\n    iconName: 'toilet',\n    icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 148.9c-1.9 1.4-3.8 2.9-5.6 4.4-15.5 13.2-26.4 31.6-26.4 54.6 0 46.9 14.3 84.1 37 112.5 14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8S85.7 512 96 512l256 0c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8 22.7-28.4 37-65.5 37-112.5 0-23.1-10.9-41.5-26.4-54.6-1.8-1.5-3.7-3-5.6-4.4l0-148.9 8 0c13.3 0 24-10.7 24-24S437.3 0 424 0L24 0zM96 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zM224 288c-88.4 0-160-14.3-160-32s71.6-32 160-32 160 14.3 160 32-71.6 32-160 32z\"]\n  };\n  var faSingleQuoteLeft = {\n    prefix: 'fas',\n    iconName: 'single-quote-left',\n    icon: [192, 512, [], \"e81b\", \"M128 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64L0 216C0 149.7 53.7 96 120 96l8 0z\"]\n  };\n  var faMoneyBills = {\n    prefix: 'fas',\n    iconName: 'money-bills',\n    icon: [576, 512, [], \"e1f3\", \"M160 32c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32zm176 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM160 152l0-48c0-4.4 3.6-8 8-8l48 0c4.4 0 8.1 3.6 7.5 8-3.6 29-26.6 51.9-55.5 55.5-4.4 .5-8-3.1-8-7.5zm0 112c0-4.4 3.6-8.1 8-7.5 29 3.6 51.9 26.6 55.5 55.5 .5 4.4-3.1 8-7.5 8l-48 0c-4.4 0-8-3.6-8-8l0-48zM504 159.5c-29-3.6-51.9-26.6-55.5-55.5-.5-4.4 3.1-8 7.5-8l48 0c4.4 0 8 3.6 8 8l0 48c0 4.4-3.6 8.1-8 7.5zM512 264l0 48c0 4.4-3.6 8-8 8l-48 0c-4.4 0-8.1-3.6-7.5-8 3.6-29 26.6-51.9 55.5-55.5 4.4-.5 8 3.1 8 7.5zM48 152c0-13.3-10.7-24-24-24S0 138.7 0 152L0 416c0 35.3 28.7 64 64 64l392 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 432c-8.8 0-16-7.2-16-16l0-264z\"]\n  };\n  var faTabletButton = {\n    prefix: 'fas',\n    iconName: 'tablet-button',\n    icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faRectangleXmark = {\n    prefix: 'fas',\n    iconName: 'rectangle-xmark',\n    icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM167 167c9.4-9.4 24.6-9.4 33.9 0l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faRectangleTimes = faRectangleXmark;\n  var faTimesRectangle = faRectangleXmark;\n  var faWindowClose = faRectangleXmark;\n  var faWrench = {\n    prefix: 'fas',\n    iconName: 'wrench',\n    icon: [576, 512, [128295], \"f0ad\", \"M509.4 98.6c7.6-7.6 20.3-5.7 24.1 4.3 6.8 17.7 10.5 37 10.5 57.1 0 88.4-71.6 160-160 160-17.5 0-34.4-2.8-50.2-8L146.9 498.9c-28.1 28.1-73.7 28.1-101.8 0s-28.1-73.7 0-101.8L232 210.2c-5.2-15.8-8-32.6-8-50.2 0-88.4 71.6-160 160-160 20.1 0 39.4 3.7 57.1 10.5 10 3.8 11.8 16.5 4.3 24.1l-88.7 88.7c-3 3-4.7 7.1-4.7 11.3l0 41.4c0 8.8 7.2 16 16 16l41.4 0c4.2 0 8.3-1.7 11.3-4.7l88.7-88.7z\"]\n  };\n  var faTrashCan = {\n    prefix: 'fas',\n    iconName: 'trash-can',\n    icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M136.7 5.9C141.1-7.2 153.3-16 167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1zM32 144l384 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zm88 64c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24z\"]\n  };\n  var faTrashAlt = faTrashCan;\n  var faTableCells = {\n    prefix: 'fas',\n    iconName: 'table-cells',\n    icon: [448, 512, [\"th\"], \"f00a\", \"M384 96l0 64-64 0 0-64 64 0zm0 128l0 64-64 0 0-64 64 0zm0 128l0 64-64 0 0-64 64 0zM256 288l-64 0 0-64 64 0 0 64zm-64 64l64 0 0 64-64 0 0-64zm-64-64l-64 0 0-64 64 0 0 64zM64 352l64 0 0 64-64 0 0-64zm0-192l0-64 64 0 0 64-64 0zm128 0l0-64 64 0 0 64-64 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n  };\n  var faTh = faTableCells;\n  var faRibbon = {\n    prefix: 'fas',\n    iconName: 'ribbon',\n    icon: [384, 512, [127895], \"f4d6\", \"M235.1 0c33.4 0 64.5 17.4 81.9 45.9 1.2 2 13 21.3 35.3 57.8 21.1 34.5 18.3 78.5-7 110L278.3 297.7 364.5 406c5.5 6.9 4.4 16.9-2.5 22.5l-80 64c-6.9 5.5-17 4.4-22.5-2.5L38.6 213.8C13.3 182.3 10.5 138.3 31.6 103.8 54 67.2 65.7 47.9 67 45.9 84.4 17.4 115.4 0 148.9 0l86.3 0zM192 189.2l48.6-61.2-97.3 0 48.6 61.2zM75 336.2l86.2 107.8-36.8 46c-5.5 6.9-15.6 8-22.5 2.5l-80-64c-6.9-5.5-8-15.6-2.5-22.5L75 336.2z\"]\n  };\n  var faLandmarkFlag = {\n    prefix: 'fas',\n    iconName: 'landmark-flag',\n    icon: [512, 512, [], \"e51c\", \"M352-32L240-32c-8.8 0-16 7.2-16 16l0 144-176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 224-51.2 38.4C4.7 460.4 0 469.9 0 480 0 497.7 14.3 512 32 512l448 0c17.7 0 32-14.3 32-32 0-10.1-4.7-19.6-12.8-25.6l-51.2-38.4 0-224 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-192 0 0-64 80 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm48 224l0 224-64 0 0-224 64 0zm-112 0l0 224-64 0 0-224 64 0zm-112 0l0 224-64 0 0-224 64 0z\"]\n  };\n  var faUpDownLeftRight = {\n    prefix: 'fas',\n    iconName: 'up-down-left-right',\n    icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9S179.1 128 192 128l32 0 0 96-96 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9S128 332.9 128 320l0-32 96 0 0 96-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9S332.9 384 320 384l-32 0 0-96 96 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S384 179.1 384 192l0 32-96 0 0-96 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n  };\n  var faArrowsAlt = faUpDownLeftRight;\n  var faCarSide = {\n    prefix: 'fas',\n    iconName: 'car-side',\n    icon: [640, 512, [128663], \"f5e4\", \"M147 106.7l-29.8 85.3 122.9 0 0-96-77.9 0c-6.8 0-12.9 4.3-15.1 10.7zM48.6 193.9L86.5 85.6C97.8 53.5 128.1 32 162.1 32L360 32c25.2 0 48.9 11.9 64 32l96.2 128.3C587.1 196.5 640 252.1 640 320l0 16c0 35.3-28.7 64-64 64l-16.4 0c-4 44.9-41.7 80-87.6 80s-83.6-35.1-87.6-80l-144.7 0c-4 44.9-41.7 80-87.6 80s-83.6-35.1-87.6-80l-.4 0c-35.3 0-64-28.7-64-64l0-80c0-30.1 20.7-55.3 48.6-62.1zM440 192l-67.2-89.6c-3-4-7.8-6.4-12.8-6.4l-72 0 0 96 152 0zM152 432a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm360-40a40 40 0 1 0 -80 0 40 40 0 1 0 80 0z\"]\n  };\n  var faTrashArrowUp = {\n    prefix: 'fas',\n    iconName: 'trash-arrow-up',\n    icon: [448, 512, [\"trash-restore\"], \"f829\", \"M167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1C141.1-7.2 153.3-16 167.1-16zM32 144l384 0-21.1 323.1C393.3 492.4 372.3 512 347 512L101 512c-25.3 0-46.3-19.6-47.9-44.9L32 144zm209 79c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 102.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-102.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72z\"]\n  };\n  var faTrashRestore = faTrashArrowUp;\n  var faLifeRing = {\n    prefix: 'fas',\n    iconName: 'life-ring',\n    icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3S491.8 142.1 458 98.7c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256S20.2 369.9 54 413.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n  };\n  var faCopyright = {\n    prefix: 'fas',\n    iconName: 'copyright',\n    icon: [512, 512, [169], \"f1f9\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM205.1 306.9c28.1 28.1 73.7 28.1 101.8 0 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-46.9 46.9-122.8 46.9-169.7 0s-46.9-122.8 0-169.7 122.8-46.9 169.7 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-28.1-28.1-73.7-28.1-101.8 0s-28.1 73.7 0 101.8z\"]\n  };\n  var faFilePrescription = {\n    prefix: 'fas',\n    iconName: 'file-prescription',\n    icon: [384, 512, [], \"f572\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM88 192c-13.3 0-24 10.7-24 24l0 144c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 22.5 0 58.4 55-33.4 31.6c-9.6 9.1-10.1 24.3-.9 33.9s24.3 10.1 33.9 .9l35.4-33.5 35.6 33.5c9.7 9.1 24.8 8.6 33.9-1s8.6-24.8-1-33.9l-33.6-31.6 33.6-31.8c9.6-9.1 10.1-24.3 .9-33.9s-24.3-10.1-33.9-.9l-35.7 33.7-40.9-38.5c12.9-11.7 21.1-28.6 21.1-47.5 0-35.3-28.7-64-64-64l-56 0zm32 80l-8 0 0-32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-24 0z\"]\n  };\n  var faEraser = {\n    prefix: 'fas',\n    iconName: 'eraser',\n    icon: [576, 512, [], \"f12d\", \"M178.5 416l123 0 65.3-65.3-173.5-173.5-126.7 126.7 112 112zM224 480l-45.5 0c-17 0-33.3-6.7-45.3-18.7L17 345C6.1 334.1 0 319.4 0 304s6.1-30.1 17-41L263 17C273.9 6.1 288.6 0 304 0s30.1 6.1 41 17L527 199c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41l-135 135 120 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0z\"]\n  };\n  var faHourglassStart = {\n    prefix: 'fas',\n    iconName: 'hourglass-start',\n    icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1l67.9 67.9-67.9 67.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1l-67.9-67.9 67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32S369.7 0 352 0L32 0zM288 437l0 11-192 0 0-11c0-25.5 10.1-49.9 28.1-67.9l67.9-67.9 67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n  };\n  var faHourglass1 = faHourglassStart;\n  var faCircleLeft = {\n    prefix: 'fas',\n    iconName: 'circle-left',\n    icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256a256 256 0 1 0 -512 0 256 256 0 1 0 512 0zM124.7 244.7l104-104c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 56 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 56c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-104-104c-6.2-6.2-6.2-16.4 0-22.6z\"]\n  };\n  var faArrowAltCircleLeft = faCircleLeft;\n  var faCruzeiroSign = {\n    prefix: 'fas',\n    iconName: 'cruzeiro-sign',\n    icon: [448, 512, [], \"e152\", \"M240 96c-88.4 0-160 71.6-160 160 0 71.6 47.1 132.3 112 152.7L192 256c0-13.3 10.7-24 24-24 12.8 0 23.3 10.1 24 22.7 15.5-9.5 33.5-14.7 52.3-14.7l11.8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-11.8 0c-18.8 0-36.1 10-45.4 26.3-4.5 7.9-6.9 16.8-6.9 25.9l0 75.8c42.5 0 81.1-16.6 109.8-43.6 12.9-12.1 33.1-11.5 45.2 1.3s11.5 33.1-1.3 45.2C353.7 456.8 299.5 480 240 480 116.3 480 16 379.7 16 256S116.3 32 240 32c59.5 0 113.7 23.2 153.7 61.1 12.9 12.1 13.4 32.4 1.3 45.2s-32.4 13.4-45.2 1.3C321.1 112.6 282.5 96 240 96z\"]\n  };\n  var faSmoking = {\n    prefix: 'fas',\n    iconName: 'smoking',\n    icon: [576, 512, [128684], \"f48d\", \"M360 0c13.3 0 24 10.7 24 24l0 19c0 40.3 16 79 44.5 107.5l21 21C469 191 480 217.4 480 245l0 19c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-19c0-14.9-5.9-29.1-16.4-39.6l-21-21C357.1 146.9 336 96 336 43l0-19c0-13.3 10.7-24 24-24zM552 288c-13.3 0-24-10.7-24-24l0-19c0-40.3-16-79-44.5-107.5l-21-21C443 97 432 70.6 432 43l0-19c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19c0 14.9 5.9 29.1 16.4 39.6l21 21C554.9 141.1 576 192 576 245l0 19c0 13.3-10.7 24-24 24zM320 448l96 0 0-32-96 0 0 32zM0 416c0-35.3 28.7-64 64-64l384 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L64 512c-35.3 0-64-28.7-64-64l0-32zm576-40l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faSquarePollVertical = {\n    prefix: 'fas',\n    iconName: 'square-poll-vertical',\n    icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 192c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zm184 88c0-13.3 10.7-24 24-24s24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48zM224 128c13.3 0 24 10.7 24 24l0 208c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24z\"]\n  };\n  var faPoll = faSquarePollVertical;\n  var faPersonCircleMinus = {\n    prefix: 'fas',\n    iconName: 'person-circle-minus',\n    icon: [640, 512, [], \"e540\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n  };\n  var faBiohazard = {\n    prefix: 'fas',\n    iconName: 'biohazard',\n    icon: [576, 512, [9763], \"f780\", \"M260 12.6c0-8.3-7.6-14.5-15.5-12.1-60.9 18.8-105.1 75.8-105.1 143.1 0 25.1 6.1 48.7 17 69.5-21 1.8-42 8.2-61.5 19.5-57.9 33.6-84.8 100.2-70.9 162.5 1.9 8.4 11.4 12 18.9 7.6 5-2.9 7.6-8.6 7.1-14.4-.3-3.3-.4-6.6-.4-10.1 0-123.5 184.4-123.5 184.4 0 0 88.4-94.5 113.6-148.2 75.4-4.5-3.2-10.5-3.9-15.3-1.1-7 4.1-8.6 13.6-2.7 19.1 46.6 43.8 118 53.9 176.1 20.2 17.9-10.4 32.8-23.9 44.5-39.4 11.7 15.6 26.6 29.1 44.5 39.4 58.1 33.7 129.5 23.6 176.1-20.2 5.9-5.5 4.3-15.1-2.7-19.1-4.8-2.8-10.8-2.1-15.3 1.1-53.7 38.2-148.2 13-148.2-75.4 0-123.5 184.4-123.5 184.4 0 0 3.4-.1 6.8-.4 10.1-.5 5.8 2.1 11.5 7.1 14.4 7.4 4.3 17 .8 18.9-7.6 13.9-62.2-13-128.9-70.9-162.5-19.5-11.3-40.4-17.7-61.5-19.5 10.9-20.8 17-44.4 17-69.5 0-67.3-44.2-124.3-105.1-143.1-7.9-2.4-15.5 3.8-15.5 12.1 0 5.9 4 11 9.5 13.2 83.4 33.6 70.8 178.4-37.8 178.4S167.1 59.4 250.5 25.8c5.5-2.2 9.5-7.3 9.5-13.2zM248.4 288a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM435 317.7c-16.2 0-31.4 5.5-42.1 15-10.1 9.1-18.1 23.4-18.1 45.6 0 21.1 7.2 35 16.5 44.1 32.2-24.6 55.5-60.5 63.9-101.8-6.3-1.9-13.2-3-20.2-3zM202 378.3c0-22.3-8-36.6-18.1-45.6-10.7-9.6-25.9-15-42.1-15-7 0-13.9 1-20.2 3 8.4 41.3 31.6 77.2 63.9 101.8 9.4-9.1 16.5-23.1 16.5-44.2zm41.2-224.3c9 10.2 23.2 18.2 45.2 18.2s36.2-8 45.2-18.2c6.7-7.6 11.5-17.5 13.6-28.4-18.3-6.8-38.2-10.5-58.8-10.5s-40.5 3.7-58.8 10.5c2.2 10.9 6.9 20.8 13.6 28.5z\"]\n  };\n  var faBellConcierge = {\n    prefix: 'fas',\n    iconName: 'bell-concierge',\n    icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.3C124.8 156.7 40.2 243.7 32.6 352l446.9 0C471.8 243.7 387.2 156.7 280 145.3l0-33.3 16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 400z\"]\n  };\n  var faConciergeBell = faBellConcierge;\n  var faRulerHorizontal = {\n    prefix: 'fas',\n    iconName: 'ruler-horizontal',\n    icon: [576, 512, [], \"f547\", \"M48 384c-26.5 0-48-21.5-48-48L0 176c0-26.5 21.5-48 48-48l24 0 0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104 48 0 0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 48 0 0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104 48 0 0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 48 0 0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104 24 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 384z\"]\n  };\n  var faHorse = {\n    prefix: 'fas',\n    iconName: 'horse',\n    icon: [576, 512, [128014], \"f6f0\", \"M448 238.1l0-78.1 16 0 9.8 19.6c12.5 25.1 42.2 36.4 68.3 26 20.5-8.2 33.9-28 33.9-50.1L576 80c0-19.1-8.4-36.3-21.7-48l5.7 0c8.8 0 16-7.2 16-16S568.8 0 560 0L448 0C377.3 0 320 57.3 320 128l-171.2 0C118.1 128 91.2 144.3 76.3 168.8 33.2 174.5 0 211.4 0 256l0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-56c0-13.4 6.6-25.2 16.7-32.5 1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9l33.7 0c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7 0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8L320 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-164.3c19.2-19.2 31.5-45.7 32-75.7l0 0 0-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n  };\n  var faCalendar = {\n    prefix: 'fas',\n    iconName: 'calendar',\n    icon: [448, 512, [128197, 128198], \"f133\", \"M128 0C110.3 0 96 14.3 96 32l0 32-32 0C28.7 64 0 92.7 0 128l0 48 448 0 0-48c0-35.3-28.7-64-64-64l-32 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32zM0 224L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192-448 0z\"]\n  };\n  var faHandsHoldingChild = {\n    prefix: 'fas',\n    iconName: 'hands-holding-child',\n    icon: [640, 512, [], \"e4fa\", \"M320-32a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM40 64c22.1 0 40 17.9 40 40l0 160.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1 12.9-8.6 14.7-26.9 3.7-37.8-7.3-7.3-23.1-23.1-47.2-47.2-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c24.1 24.1 39.9 39.9 47.2 47.2l0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 221.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0c7.3-7.3 23.1-23.1 47.2-47.2 12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-24.1 24.1-39.9 39.9-47.2 47.2-11 11-9.2 29.2 3.7 37.8 9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3L560 104c0-22.1 17.9-40 40-40zM384.5 149l-19.8-16.7 11.1 88.8c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35-7.6 0-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8-19.8 16.7c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 72.8 295.3 64 320 64s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8z\"]\n  };\n  var faItalic = {\n    prefix: 'fas',\n    iconName: 'italic',\n    icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0-133.3 320 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0 133.3-320-64 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faKhanda = {\n    prefix: 'fas',\n    iconName: 'khanda',\n    icon: [512, 512, [9772], \"f66d\", \"M240.7 8c8.9-7.4 21.8-7.4 30.7 0l37.8 31.5c8.7 7.3 11.1 19.6 6 29.6-1.2 2.4-2.8 5.5-4.6 9.2 34.2 19.2 57.3 55.8 57.3 97.8s-23.1 78.6-57.3 97.8c1.8 3.7 3.3 6.8 4.6 9.2 5.1 10 2.7 22.3-6 29.6l-37.2 31 0 19.8c22.9-15.7 48.4-33.3 76.7-52.7 42.8-29.4 68.4-78 68.4-130l0-11.1c0-23.9-7.1-47.3-20.4-67.2-5.1-7.7-4.6-17.8 1.7-24.6 6.6-7.1 17.2-8.1 25.2-2.8 27.5 18.1 89.4 67.5 89.4 149.1 0 46.5-20.2 88.6-41.8 120.4-21.6 32-45.6 55-55.3 63.8-7.8 7.1-19 7.9-27.6 3l-70.8-40.3-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7 13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21l-40.2-27.6 0 28.9c9.6 5.5 16 15.9 16 27.7 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7l0-28.1-40.3 27.7c-1.8 11.4-11.8 20.1-23.7 20.1-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-70.8 40.3c-8.7 4.9-19.8 4.1-27.6-3-9.7-8.8-33.7-31.9-55.3-63.8-21.5-31.8-41.8-73.9-41.8-120.4 0-81.7 61.9-131.1 89.4-149.1 8.1-5.3 18.6-4.3 25.2 2.8 6.4 6.9 6.8 17 1.7 24.6-13.3 19.9-20.4 43.3-20.4 67.2l0 11.1c0 51.9 25.6 100.6 68.4 130 28.4 19.6 53.7 36.9 75.6 52l0-19.1-37.2-31c-8.7-7.3-11.1-19.6-6-29.6 1.2-2.4 2.8-5.5 4.6-9.2-34.2-19.2-57.3-55.8-57.3-97.8s23.1-78.6 57.3-97.8c-1.8-3.7-3.3-6.8-4.6-9.2-5.1-10-2.7-22.3 6-29.6L240.7 8zM220.3 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1c6.8-19.2 11.8-38.4 11.8-53.1s-4.9-33.9-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1c-6.8 19.2-11.8 38.4-11.8 53.1s4.9 33.9 11.8 53.1z\"]\n  };\n  var faFaceFrownOpen = {\n    prefix: 'fas',\n    iconName: 'face-frown-open',\n    icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4 16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n  };\n  var faFrownOpen = faFaceFrownOpen;\n  var faCheck = {\n    prefix: 'fas',\n    iconName: 'check',\n    icon: [448, 512, [10003, 10004], \"f00c\", \"M434.8 70.1c14.3 10.4 17.5 30.4 7.1 44.7l-256 352c-5.5 7.6-14 12.3-23.4 13.1s-18.5-2.7-25.1-9.3l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l101.5 101.5 234-321.7c10.4-14.3 30.4-17.5 44.7-7.1z\"]\n  };\n  var faFingerprint = {\n    prefix: 'fas',\n    iconName: 'fingerprint',\n    icon: [512, 512, [], \"f577\", \"M48 256c0-114.9 93.1-208 208-208 63.1 0 119.6 28.1 157.8 72.5 8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0 114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6-15.2 5-18.7 23.7-8.3 35.9 7.1 8.3 18.8 10.8 29.4 7.9 10.6-2.9 21.8-4.4 33.4-4.4 70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3-1.7 14.6 9.4 27.8 24.2 27.8 11.8 0 21.9-8.6 23.3-20.3 3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4-23.1 29.8-36.8 67.1-36.8 107.7l0 24.9c0 24.2-2.6 48.4-7.8 71.9-3.4 15.6 7.9 31.1 23.9 31.1 10.5 0 19.9-7 22.2-17.3 6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1 7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1-3.8 14.3 6.7 29 21.5 29 9.5 0 17.9-6.2 20.4-15.4 10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9-2.7 13.9 7.7 27.2 21.8 27.2 10.2 0 19-7 21-17 7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z\"]\n  };\n  var faChargingStation = {\n    prefix: 'fas',\n    iconName: 'charging-station',\n    icon: [576, 512, [], \"f5e7\", \"M64 64C64 28.7 92.7 0 128 0L288 0c35.3 0 64 28.7 64 64l0 224c44.2 0 80 35.8 80 80l0 12c0 11 9 20 20 20s20-9 20-20l0-127.7c-32.5-10.2-56-40.5-56-76.3l0-32c0-8.8 7.2-16 16-16l16 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 32 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 16 0c8.8 0 16 7.2 16 16l0 32c0 35.8-23.5 66.1-56 76.3L520 380c0 37.6-30.4 68-68 68s-68-30.4-68-68l0-12c0-17.7-14.3-32-32-32l0 129.4c9.3 3.3 16 12.2 16 22.6 0 13.3-10.7 24-24 24L72 512c-13.3 0-24-10.7-24-24 0-10.5 6.7-19.3 16-22.6L64 64zm82.7 125.7l39 0-20.9 66.9c-2.4 7.6 3.3 15.4 11.3 15.4 2.9 0 5.6-1 7.8-2.9l94.6-82c3.1-2.7 4.9-6.6 4.9-10.7 0-7.8-6.3-14.1-14.1-14.1l-39 0 20.9-66.9c2.4-7.6-3.3-15.4-11.3-15.4-2.9 0-5.6 1-7.8 2.9l-94.6 82c-3.1 2.7-4.9 6.6-4.9 10.7 0 7.8 6.3 14.1 14.1 14.1z\"]\n  };\n  var faUserLock = {\n    prefix: 'fas',\n    iconName: 'user-lock',\n    icon: [576, 512, [], \"f502\", \"M224 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM194.3 304l59.4 0c29.7 0 57.7 7.3 82.3 20.1l0 4.3c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L45.7 512C29.3 512 16 498.7 16 482.3 16 383.8 95.8 304 194.3 304zm301.7 .1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faMobileScreenButton = {\n    prefix: 'fas',\n    iconName: 'mobile-screen-button',\n    icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zm64 0l0 304 224 0 0-304-224 0zM192 472c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n  };\n  var faMobileAlt = faMobileScreenButton;\n  var faAnchorCircleCheck = {\n    prefix: 'fas',\n    iconName: 'anchor-circle-check',\n    icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 0c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3L80 307.9c2.1 113.1 94.4 204.1 208 204.1 16.6 0 32.7-1.9 48.2-5.6-20.3-30.5-32.2-67-32.2-106.4 0-27.3 5.7-53.3 16-76.9l0-136.6c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faPersonWalkingWithCane = {\n    prefix: 'fas',\n    iconName: 'person-walking-with-cane',\n    icon: [576, 512, [\"blind\"], \"f29d\", \"M224-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM160 205.3l-22.6 22.6c-6 6-9.4 14.1-9.4 22.6l0 37.5c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-37.5c0-25.5 10.1-49.9 28.1-67.9l34.4-34.4c23.2-23.2 54.6-36.2 87.3-36.2 36.1 0 70.3 15.8 93.8 43.1l68.6 80c11.5 13.4 9.9 33.6-3.5 45.1s-33.6 9.9-45.1-3.5l-55.7-65 0 118.6 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3l12.6 88.1c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2l-12.6-88.1c-1.1-7.7-5-14.7-10.9-19.8l-71.4-61.2c-21.3-18.2-33.5-44.9-33.5-72.9l0-69.3zm.1 165.8c2.4 2.3 4.8 4.6 7.4 6.8l46 39.4-2.2 7.6c-4.5 15.7-12.9 30-24.4 41.5l-68.3 68.3c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l68.3-68.3c3.8-3.8 6.6-8.6 8.1-13.8L160.1 371zm233.5-62.2c10.6-8 25.6-5.8 33.6 4.8l144 192c8 10.6 5.8 25.6-4.8 33.6s-25.6 5.8-33.6-4.8l-144-192c-8-10.6-5.8-25.6 4.8-33.6z\"]\n  };\n  var faBlind = faPersonWalkingWithCane;\n  var faFileWaveform = {\n    prefix: 'fas',\n    iconName: 'file-waveform',\n    icon: [384, 512, [\"file-medical-alt\"], \"f478\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-96 60.3 0 48.8 62.7c5.1 6.6 13.3 10 21.6 9.1s15.5-6.1 19.1-13.6l42.9-91.2 9.9 19.8c4.1 8.1 12.4 13.3 21.5 13.3l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-57.2 0-25.4-50.7c-4.1-8.2-12.6-13.4-21.8-13.3s-17.5 5.5-21.4 13.8l-47.3 100.6-32-41.1C86.4 307.4 79.4 304 72 304L0 304 0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5z\"]\n  };\n  var faFileMedicalAlt = faFileWaveform;\n  var faHouseCrack = {\n    prefix: 'fas',\n    iconName: 'house-crack',\n    icon: [512, 512, [], \"e3b1\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l86.4 0-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L256 368 195.8 285.2c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L256 448 294.4 512 400 512c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208z\"]\n  };\n  var faHatWizard = {\n    prefix: 'fas',\n    iconName: 'hat-wizard',\n    icon: [512, 512, [], \"f6e8\", \"M64 400l85.7-208.2c17-41.3 47.8-75.3 87.2-96.3L383.8 17.2c12.3-6.6 26.5 4.7 23 18.2L369.6 177.8c-1.1 4.1-1.6 8.3-1.6 12.6 0 6.3 1.2 12.6 3.6 18.5l76.4 191.1-207.1 0 11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 260.4 230.9 256 224 256s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 323 144 329.1 144 336s4.4 13 10.9 15.2l40.4 13.5 11.8 35.4-143.1 0zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faUserDoctor = {\n    prefix: 'fas',\n    iconName: 'user-doctor',\n    icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 8a120 120 0 1 0 0 240 120 120 0 1 0 0-240zm60 312.8c-5.4-.5-11-.8-16.6-.8l-86.9 0c-5.6 0-11.1 .3-16.6 .8l0 67.5c16.5 7.6 28 24.3 28 43.6 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-19.4 11.5-36.1 28-43.6l0-58.4C61 353 16 413.6 16 484.6 16 499.7 28.3 512 43.4 512l361.1 0c15.1 0 27.4-12.3 27.4-27.4 0-71-45-131.5-108-154.6l0 37.4c23.3 8.2 40 30.5 40 56.6l0 32c0 11-9 20-20 20s-20-9-20-20l0-32c0-11-9-20-20-20s-20 9-20 20l0 32c0 11-9 20-20 20s-20-9-20-20l0-32c0-26.1 16.7-48.3 40-56.6l0-46.6z\"]\n  };\n  var faUserMd = faUserDoctor;\n  var faChartBar = {\n    prefix: 'fas',\n    iconName: 'chart-bar',\n    icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 80l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 112l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faBarChart = faChartBar;\n  var faSprayCanSparkles = {\n    prefix: 'fas',\n    iconName: 'spray-can-sparkles',\n    icon: [576, 512, [\"air-freshener\"], \"f5d0\", \"M160 32l0 80 128 0 0-80c0-17.7-14.3-32-32-32L192 0c-17.7 0-32 14.3-32 32zm0 128c-53 0-96 43-96 96l0 208c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-208c0-53-43-96-96-96l-128 0zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM448 48c0-1.4-1-3-2.2-3.6L416 32 403.6 2.2C403 1 401.4 0 400 0s-3 1-3.6 2.2L384 32 354.2 44.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L384 64 396.4 93.8C397 95 398.6 96 400 96s3-1 3.6-2.2L416 64 445.8 51.6C447 51 448 49.4 448 48zm76.4 45.8C525 95 526.6 96 528 96s3-1 3.6-2.2L544 64 573.8 51.6c1.2-.6 2.2-2.2 2.2-3.6 0-1.4-1-3-2.2-3.6L544 32 531.6 2.2C531 1 529.4 0 528 0s-3 1-3.6 2.2L512 32 482.2 44.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L512 64 524.4 93.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L512 224 482.2 236.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L512 256 524.4 285.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L544 256 573.8 243.6c1.2-.6 2.2-2.2 2.2-3.6 0-1.4-1-3-2.2-3.6L544 224 531.6 194.2zM512 144c0-1.4-1-3-2.2-3.6L480 128 467.6 98.2C467 97 465.4 96 464 96s-3 1-3.6 2.2L448 128 418.2 140.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L448 160 460.4 189.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 160 509.8 147.6c1.2-.6 2.2-2.2 2.2-3.6z\"]\n  };\n  var faAirFreshener = faSprayCanSparkles;\n  var faBahtSign = {\n    prefix: 'fas',\n    iconName: 'baht-sign',\n    icon: [320, 512, [], \"e0ac\", \"M136 0c-13.3 0-24 10.7-24 24l0 40-74.4 0C16.8 64 0 80.8 0 101.6L0 406.3c0 23 18.7 41.7 41.7 41.7l70.3 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 48 0c61.9 0 112-50.1 112-112 0-40.1-21.1-75.3-52.7-95.1 13.1-18.3 20.7-40.7 20.7-64.9 0-61.9-50.1-112-112-112l-16 0 0-40c0-13.3-10.7-24-24-24zM112 128l0 96-48 0 0-96 48 0zm48 96l0-96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0zm-48 64l0 96-48 0 0-96 48 0zm48 96l0-96 48 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-48 0z\"]\n  };\n  var faTemperatureArrowUp = {\n    prefix: 'fas',\n    iconName: 'temperature-arrow-up',\n    icon: [512, 512, [\"temperature-up\"], \"e040\", \"M64.5 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144s-144-64.5-144-144c0-42.6 18.5-81 48-107.3L64.5 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3l0-212.7c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 212.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM439.1 9.4l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-9.4-9.4 0 178.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-178.7-9.4 9.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c6-6 14.1-9.4 22.6-9.4s16.6 3.4 22.6 9.4z\"]\n  };\n  var faTemperatureUp = faTemperatureArrowUp;\n  var faWebAwesome = {\n    prefix: 'fas',\n    iconName: 'web-awesome',\n    icon: [640, 512, [], \"e682\", \"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192 552.4 171.1c-5.3-7.7-8.4-17.1-8.4-27.1 0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144 0 117.5 21.5 96 48 96s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1 0-28.7 23.3-52 52-52s52 23.3 52 52z\"]\n  };\n  var faNonBinary = {\n    prefix: 'fas',\n    iconName: 'non-binary',\n    icon: [384, 512, [], \"e807\", \"M192 544c-97.2 0-176-78.8-176-176 0-86.3 62.1-158 144-173l0-47.2-49.7 24.8-3 1.3c-15.2 5.7-32.5-.8-39.9-15.7-7.4-14.8-2.2-32.6 11.5-41.3l2.8-1.6 38.8-19.4-38.8-19.4c-15.8-7.9-22.2-27.1-14.3-42.9 7.4-14.8 24.8-21.4 40-15.6l3 1.3 49.7 24.8 0-44.2c0-17.7 14.3-32 32-32s32 14.3 32 32l0 44.2 49.7-24.8 3-1.3c15.2-5.8 32.5 .8 39.9 15.6s2.2 32.7-11.5 41.3l-2.8 1.6-38.7 19.4 38.7 19.3c15.8 7.9 22.2 27.1 14.3 42.9-7.4 14.8-24.7 21.4-39.9 15.6l-3-1.3-49.7-24.8 0 47.2c81.9 15.1 144 86.8 144 173 0 97.2-78.8 176-176 176zm0-64a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n  };\n  var faN = {\n    prefix: 'fas',\n    iconName: 'n',\n    icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4 64 448c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 50.5 8.4 38.5 21.1 33.9z\"]\n  };\n  var faArrowsUpDownLeftRight = {\n    prefix: 'fas',\n    iconName: 'arrows-up-down-left-right',\n    icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4 0 114.7-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 114.7 0 0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4 0-114.7 114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4-114.7 0 0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n  };\n  var faArrows = faArrowsUpDownLeftRight;\n  var faHouse = {\n    prefix: 'fas',\n    iconName: 'house',\n    icon: [512, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM240 320l32 0c26.5 0 48 21.5 48 48l0 96-128 0 0-96c0-26.5 21.5-48 48-48z\"]\n  };\n  var faHome = faHouse;\n  var faHomeAlt = faHouse;\n  var faHomeLgAlt = faHouse;\n  var faSpinner = {\n    prefix: 'fas',\n    iconName: 'spinner',\n    icon: [512, 512, [], \"f110\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm0 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM48 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm368 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM75 369.1A48 48 0 1 1 142.9 437 48 48 0 1 1 75 369.1zM75 75A48 48 0 1 1 142.9 142.9 48 48 0 1 1 75 75zM437 369.1A48 48 0 1 1 369.1 437 48 48 0 1 1 437 369.1z\"]\n  };\n  var faGavel = {\n    prefix: 'fas',\n    iconName: 'gavel',\n    icon: [576, 512, [\"legal\"], \"f0e3\", \"M169.6 153.4l-18.7-18.7c-12.5-12.5-12.5-32.8 0-45.3L265.6-25.4c12.5-12.5 32.8-12.5 45.3 0L329.6-6.6c12.5 12.5 12.5 32.8 0 45.3L214.9 153.4c-12.5 12.5-32.8 12.5-45.3 0zM276 211.7l-31.4-31.4 112-112 119.4 119.4-112 112-31.4-31.4-232 232c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6l232-232zM390.9 374.6c-12.5-12.5-12.5-32.8 0-45.3L505.6 214.6c12.5-12.5 32.8-12.5 45.3 0l18.7 18.7c12.5 12.5 12.5 32.8 0 45.3L454.9 393.4c-12.5 12.5-32.8 12.5-45.3 0l-18.7-18.7z\"]\n  };\n  var faLegal = faGavel;\n  var faTicketSimple = {\n    prefix: 'fas',\n    iconName: 'ticket-simple',\n    icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 64c0 8.8-7.4 15.7-15.7 18.6-18.8 6.5-32.3 24.4-32.3 45.4s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6l0 64c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64l0-64C0 311.2 7.4 304.3 15.7 301.4 34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192l0-64z\"]\n  };\n  var faTicketAlt = faTicketSimple;\n  var faDove = {\n    prefix: 'fas',\n    iconName: 'dove',\n    icon: [512, 512, [128330], \"f4ba\", \"M496 64c13.2 0 20.7 15.1 12.8 25.6L480 128 480 304c0 79.5-64.5 144-144 144l-112 0-46.3 46.3c-10.4 10.4-26.5 12.4-39.1 4.8L41.5 440.9c-17-10.2-15-35.5 3.4-42.9L160 352C23.8 311.1 7.5 169.8 22 95.7 25.6 77.9 45.3 71.4 61.3 80.2L320 224 320 144c0-44.2 35.8-80 80-80l96 0zm-96 56a24 24 0 1 0 0 48 24 24 0 1 0 0-48zM182.5-9.6c12.4-13.7 33.3-8.9 42.5 7.1l56.4 98.3c-5.8 14.4-9.2 30.1-9.4 46.5L138.1 68c10.1-31.6 27-58.4 44.4-77.6z\"]\n  };\n  var faTarpDroplet = {\n    prefix: 'fas',\n    iconName: 'tarp-droplet',\n    icon: [512, 512, [], \"e57c\", \"M256 160c35.3 0 64-26.9 64-60 0-24-33.7-70.1-52.2-93.5-6.1-7.7-17.5-7.7-23.6 0-18.5 23.4-52.2 69.5-52.2 93.5 0 33.1 28.7 60 64 60zM368 96c0 61.9-50.1 112-112 112S144 157.9 144 96c0-11.1 1.6-21.9 4.6-32L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l277.5 0c17 0 33.3-6.7 45.3-18.7L493.3 322.7c12-12 18.7-28.3 18.7-45.3L512 128c0-35.3-28.7-64-64-64l-84.6 0c3 10.1 4.6 20.9 4.6 32zm85.5 176L336 389.5 336 296c0-13.3 10.7-24 24-24l93.5 0zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faTreeCity = {\n    prefix: 'fas',\n    iconName: 'tree-city',\n    icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 48 48 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 16 0c26.5 0 48 21.5 48 48l0 320c0 26.5-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48l0-416zm64 64l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM528 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM96 480l0-160-16 0c-44.2 0-80-35.8-80-80 0-26.7 13.1-50.3 33.2-64.9-.8-4.9-1.2-10-1.2-15.1 0-53 43-96 96-96s96 43 96 96l0 96c0 35.3-28.7 64-64 64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n  };\n  var faTurnUp = {\n    prefix: 'fas',\n    iconName: 'turn-up',\n    icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M169.4 9.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9S332.9 192 320 192l-64 0 0 160c0 88.4-71.6 160-160 160l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l64 0c17.7 0 32-14.3 32-32l0-160-64 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128z\"]\n  };\n  var faLevelUpAlt = faTurnUp;\n  var faTemperatureQuarter = {\n    prefix: 'fas',\n    iconName: 'temperature-quarter',\n    icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3l0-28.7c0-13.3 10.7-24 24-24s24 10.7 24 24l0 28.7c23.5 9.5 40 32.5 40 59.3z\"]\n  };\n  var faTemperature1 = faTemperatureQuarter;\n  var faThermometer1 = faTemperatureQuarter;\n  var faThermometerQuarter = faTemperatureQuarter;\n  var faSliders = {\n    prefix: 'fas',\n    iconName: 'sliders',\n    icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 224zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384z\"]\n  };\n  var faSlidersH = faSliders;\n  var faMosque = {\n    prefix: 'fas',\n    iconName: 'mosque',\n    icon: [576, 512, [128332], \"f678\", \"M174.8 224l226.4 0c43.5 0 78.8-35.3 78.8-78.8 0-25.5-12.3-49.4-33.1-64.2L297.3-25.4c-5.6-3.9-13-3.9-18.5 0L129.1 81C108.3 95.8 96 119.7 96 145.2 96 188.7 131.3 224 174.8 224zM512 512c35.3 0 64-28.7 64-64l0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-448 0 0-48c0-17.7-14.3-32-32-32S0 206.3 0 224L0 448c0 35.3 28.7 64 64 64l448 0zM240 384c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80-96 0 0-80z\"]\n  };\n  var faH = {\n    prefix: 'fas',\n    iconName: 'h',\n    icon: [384, 512, [104], \"48\", \"M320 288l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-256 0 0-160c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 256 0z\"]\n  };\n  var faInfo = {\n    prefix: 'fas',\n    iconName: 'info',\n    icon: [192, 512, [], \"f129\", \"M48 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM0 192c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 256 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-224-32 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faPersonWalking = {\n    prefix: 'fas',\n    iconName: 'person-walking',\n    icon: [384, 512, [128694, \"walking\"], \"f554\", \"M192 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM105.4 227.9l22.6-22.6 0 69.3c0 28 12.2 54.7 33.5 72.9l71.4 61.2c5.9 5.1 9.8 12.1 10.9 19.8l12.6 88.1c2.5 17.5 18.7 29.7 36.2 27.2s29.7-18.7 27.2-36.2l-12.6-88.1c-3.3-23.1-14.9-44.1-32.6-59.3l-34.5-29.6 0-115.2 3.8 4.7c18.2 22.8 45.8 36 75 36l33.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-33.2 0c-9.7 0-18.9-4.4-25-12l-17.9-22.4c-23-28.8-57.9-45.6-94.8-45.6-32.2 0-63.1 12.8-85.8 35.6L60.1 182.6C42.1 200.6 32 225 32 250.5L32 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-37.5c0-8.5 3.4-16.6 9.4-22.6zm12.4 179.4c-1.5 5.2-4.3 10-8.1 13.8L41.4 489.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.3-68.3c11.5-11.5 19.9-25.8 24.4-41.5l2.2-7.6-46-39.4c-2.5-2.2-5-4.4-7.4-6.8l-10.4 36.2z\"]\n  };\n  var faWalking = faPersonWalking;\n  var faArrowTurnDown = {\n    prefix: 'fas',\n    iconName: 'arrow-turn-down',\n    icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n  };\n  var faLevelDown = faArrowTurnDown;\n  var faRoad = {\n    prefix: 'fas',\n    iconName: 'road',\n    icon: [512, 512, [128739], \"f018\", \"M223.9 32l-76.2 0c-29.4 0-55.1 20.1-62.1 48.6L1.4 420.5C-6.1 450.7 16.8 480 48 480l175.9 0 0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 176.1 0c31.2 0 54.1-29.3 46.6-59.5L426.5 80.6C419.4 52.1 393.8 32 364.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n  };\n  var faSpiral = {\n    prefix: 'fas',\n    iconName: 'spiral',\n    icon: [512, 512, [], \"e80a\", \"M115.5 7.4c13.6-11.3 33.8-9.5 45.1 4.1s9.5 33.8-4.1 45.1C100.2 103.5 64 175.2 64 256 64 362 150 448 256 448s192-86 192-192c0-75.1-60.9-136-136-136S176 180.9 176 256c0 44.2 35.8 80 80 80s80-35.8 80-80c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-48.6 39.4-88 88-88s88 39.4 88 88c0 79.5-64.5 144-144 144S112 335.5 112 256c0-110.5 89.5-200 200-200s200 89.5 200 200c0 141.4-114.6 256-256 256S0 397.4 0 256C0 155.8 45 66.1 115.5 7.4z\"]\n  };\n  var faFaceFrown = {\n    prefix: 'fas',\n    iconName: 'face-frown',\n    icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm90.6-113.9c-20.4-28-53.4-46.1-90.6-46.1s-70.2 18.1-90.6 46.1c-7.8 10.7-22.8 13.1-33.5 5.3s-13.1-22.8-5.3-33.5C155.7 330 202.8 304 256 304s100.3 26 129.4 65.9c7.8 10.7 5.4 25.7-5.3 33.5s-25.7 5.4-33.5-5.3zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faFrown = faFaceFrown;\n  var faWineGlassEmpty = {\n    prefix: 'fas',\n    iconName: 'wine-glass-empty',\n    icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C48.7 0 35.6 10.8 32.6 25.7L3.2 173C1.1 183.5 0 194.2 0 205l0 3c0 77.4 55 142 128 156.8l0 115.2-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-115.2C265 350 320 285.4 320 208l0-3c0-10.7-1.1-21.4-3.2-32L287.4 25.7C284.4 10.8 271.3 0 256 0L64 0zm1.9 185.6L90.2 64 229.8 64 254.1 185.6c1.3 6.4 1.9 12.9 1.9 19.4l0 3c0 53-43 96-96 96s-96-43-96-96l0-3c0-6.5 .6-13 1.9-19.4z\"]\n  };\n  var faWineGlassAlt = faWineGlassEmpty;\n  var faClapperboard = {\n    prefix: 'fas',\n    iconName: 'clapperboard',\n    icon: [512, 512, [], \"e131\", \"M448 64c2 0 3.9 .1 5.8 .3l-95.7 95.7 67.9 0 72-72c8.8 11 14 24.9 14 40l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l70.1 0-96 96 67.9 0 95-95 1-1 92.1 0-96 96 67.9 0 95-95 1-1 86.1 0z\"]\n  };\n  var faForwardStep = {\n    prefix: 'fas',\n    iconName: 'forward-step',\n    icon: [384, 512, [\"step-forward\"], \"f051\", \"M21 36.8c12.9-7 28.7-6.3 41 1.8L320 208.1 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-144.1-258 169.6c-12.3 8.1-28 8.8-41 1.8S0 454.7 0 440L0 72C0 57.3 8.1 43.8 21 36.8z\"]\n  };\n  var faStepForward = faForwardStep;\n  var faSquareUpRight = {\n    prefix: 'fas',\n    iconName: 'square-up-right',\n    icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM168 160c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l35 35-67 67c-9.4 9.4-9.4 24.6 0 33.9l24 24c9.4 9.4 24.6 9.4 33.9 0l67-67 35 35c6.9 6.9 17.2 8.9 26.2 5.2S320 321.7 320 312l0-128c0-13.3-10.7-24-24-24l-128 0z\"]\n  };\n  var faExternalLinkSquareAlt = faSquareUpRight;\n  var faBookJournalWhills = {\n    prefix: 'fas',\n    iconName: 'book-journal-whills',\n    icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM274.1 99.2c2.6-2.6 6.7-3.1 9.9-1.1 32.1 20 53.4 55.6 53.4 96.2 0 62.6-50.7 113.3-113.3 113.3S110.7 256.9 110.7 194.3c0-40.6 21.4-76.2 53.4-96.2 3.1-2 7.2-1.5 9.9 1.1s3.1 6.7 1.2 9.8c-5.2 8.6-8.2 18.7-8.2 29.5 0 15.1 5.9 28.8 15.5 39.1 2.5 2.7 2.9 6.7 .9 9.7-4.7 7.4-7.4 16.1-7.4 25.5 0 21.6 14.3 39.9 34 45.9l1-24.8c-7.1-4.4-11.8-12.2-11.8-21.1 0-9.6 5.5-18 13.5-22.1l3.3-81.8c.2-4.3 3.7-7.7 8-7.7s7.8 3.4 8 7.7l3.3 81.8c8 4.1 13.5 12.4 13.5 22.1 0 8.9-4.7 16.7-11.8 21.1l1 24.8c19.6-6 33.9-24.1 34-45.6l0-.6c-.1-9.3-2.7-17.9-7.4-25.2-1.9-3.1-1.6-7.1 .9-9.7 9.6-10.2 15.5-23.9 15.5-39.1 0-10.8-3-20.9-8.2-29.5-1.9-3.2-1.4-7.2 1.2-9.8z\"]\n  };\n  var faJournalWhills = faBookJournalWhills;\n  var faChampagneGlasses = {\n    prefix: 'fas',\n    iconName: 'champagne-glasses',\n    icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9l125 45.6 125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6l31.3 86.2 41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41c-47.4 17.3-94.8 34.5-142.2 51.8-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-33.9-130-95.2l-14.6-64.7-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6.1 25.2 24.4 19.1 41s-24.4 25.2-41 19.1c-47.4-17.3-94.8-34.6-142.2-51.8-16.6-6.1-25.2-24.4-19.1-41S26.3 392 42.9 398l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8 89.2 32.5 13.1-57.9-75.1-27.4zm240.9 0l-75.1 27.4 13.1 57.9 89.2-32.5-27.2-52.8z\"]\n  };\n  var faGlassCheers = faChampagneGlasses;\n  var faDumpster = {\n    prefix: 'fas',\n    iconName: 'dumpster',\n    icon: [576, 512, [], \"f793\", \"M132.3 64L106.7 192 24 192c-13.3 0-24-10.7-24-24l0-4.1c0-2.6 .4-5.1 1.2-7.6L26.5 80.4C29.8 70.6 39 64 49.3 64l83 0zm23.4 128l25.6-128 82.7 0 0 128-108.3 0zM312 64l82.7 0 25.6 128-108.3 0 0-128zm131.7 0l83 0c10.3 0 19.5 6.6 22.8 16.4l25.3 75.9c.8 2.4 1.2 5 1.2 7.6l0 4.1c0 13.3-10.7 24-24 24l-82.7 0-25.6-128zM25.7 240l524.7 0c-.4 2.1-13.3 73.4-38.9 213.7-3 16.3-17.9 27.6-34.4 26.1S448 464.6 448 448l0-16-320 0 0 16c0 16.6-12.6 30.4-29.1 31.9S67.5 470 64.5 453.7C39 313.3 26 242.1 25.7 240z\"]\n  };\n  var faHeartCircleXmark = {\n    prefix: 'fas',\n    iconName: 'heart-circle-xmark',\n    icon: [576, 512, [], \"e501\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM432 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7z\"]\n  };\n  var faComputer = {\n    prefix: 'fas',\n    iconName: 'computer',\n    icon: [576, 512, [], \"e4e5\", \"M348.8 32C340.7 46.1 336 62.5 336 80l0 16-272 0 0 224 272 0 0 64-272 0c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l284.8 0zM336 432c0 17.5 4.7 33.9 12.8 48L120 480c-13.3 0-24-10.7-24-24s10.7-24 24-24l216 0zM432 32l96 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-352c0-26.5 21.5-48 48-48zm24 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm56 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faWandMagic = {\n    prefix: 'fas',\n    iconName: 'wand-magic',\n    icon: [512, 512, [\"magic\"], \"f0d0\", \"M398.5 12.2l-88.2 88.2 101.3 101.3 88.2-88.2C507.6 105.6 512 95 512 84s-4.4-21.6-12.2-29.5L457.5 12.2C449.6 4.4 439 0 428 0s-21.6 4.4-29.5 12.2zM276.4 134.3L12.2 398.5C4.4 406.4 0 417 0 428s4.4 21.6 12.2 29.5l42.3 42.3C62.4 507.6 73 512 84 512s21.6-4.4 29.5-12.2L377.7 235.6 276.4 134.3z\"]\n  };\n  var faMagic = faWandMagic;\n  var faBrain = {\n    prefix: 'fas',\n    iconName: 'brain',\n    icon: [512, 512, [129504], \"f5dc\", \"M120 56c0-30.9 25.1-56 56-56l24 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32l-32 0c-29.8 0-54.9-20.4-62-48-.7 0-1.3 0-2 0-44.2 0-80-35.8-80-80 0-18 6-34.6 16-48-19.4-14.6-32-37.8-32-64 0-30.9 17.6-57.8 43.2-71.1-7.1-12-11.2-26-11.2-40.9 0-44.2 35.8-80 80-80l0-24zm272 0l0 24c44.2 0 80 35.8 80 80 0 15-4.1 29-11.2 40.9 25.7 13.3 43.2 40.1 43.2 71.1 0 26.2-12.6 49.4-32 64 10 13.4 16 30 16 48 0 44.2-35.8 80-80 80-.7 0-1.3 0-2 0-7.1 27.6-32.2 48-62 48l-32 0c-17.7 0-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32l24 0c30.9 0 56 25.1 56 56z\"]\n  };\n  var faBriefcaseMedical = {\n    prefix: 'fas',\n    iconName: 'briefcase-medical',\n    icon: [512, 512, [], \"f469\", \"M200 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 40-80 0C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-80 0 0-40c0-30.9-25.1-56-56-56L200 0c-30.9 0-56 25.1-56 56zm80 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faHouseMedicalCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'house-medical-circle-exclamation',\n    icon: [640, 512, [], \"e512\", \"M309.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S50.8 272 64 272l16 0 0 176c0 35.3 28.7 64 64 64l196 0c-21.2-29.5-34.3-65.3-35.9-104L272 408c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 20 0c34.9-48.5 91.7-80 156-80 10.7 0 21.1 .9 31.3 2.5L309.8 8.6zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faCodeCommit = {\n    prefix: 'fas',\n    iconName: 'code-commit',\n    icon: [576, 512, [], \"f386\", \"M288 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C430 361 365.4 416 288 416S146 361 131.2 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l99.2 0C146 151 210.6 96 288 96s142 55 156.8 128l99.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-99.2 0z\"]\n  };\n  var faPersonBreastfeeding = {\n    prefix: 'fas',\n    iconName: 'person-breastfeeding',\n    icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5-17.6-14.1-22.7-38.1-13.5-57.7l-.7-.1c-38.9-5.6-74.3-25.1-99.7-54.8l0-36.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7-4.9-2.8-9.2-6.4-12.6-10.6-4.6-5.4-7.8-11.7-9.6-18.4-3.3-12-1.9-25.2 4.8-36.6 .6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1l75.2 0c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4 2.9 6.7 4.3 13.8 4 20.8-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n  };\n  var faPersonRays = {\n    prefix: 'fas',\n    iconName: 'person-rays',\n    icon: [512, 512, [], \"e54d\", \"M312.5 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7l46.3 62.4c10.5 14.2 30.6 17.2 44.8 6.6s17.2-30.6 6.6-44.8l-70.5-95C338.5 132 298.8 112 256.5 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6l46.3-62.4 0 275.3c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM7.5 7c-9.4 9.4-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41.5 7C32.1-2.3 16.9-2.3 7.5 7zm464 0l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7.5 505c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-80 80c-9.4 9.4-9.4 24.6 0 33.9zm464 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80z\"]\n  };\n  var faManatSign = {\n    prefix: 'fas',\n    iconName: 'manat-sign',\n    icon: [384, 512, [], \"e1d5\", \"M192 32c-13.3 0-24 10.7-24 24l0 41.5C73.3 109.3 0 190.1 0 288L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-62.5 44.8-114.5 104-125.8L168 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-293.8c59.2 11.2 104 63.3 104 125.8l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-97.9-73.3-178.7-168-190.5L216 56c0-13.3-10.7-24-24-24z\"]\n  };\n  var faSort = {\n    prefix: 'fas',\n    iconName: 'sort',\n    icon: [384, 512, [\"unsorted\"], \"f0dc\", \"M2.4 204.2c5 12 16.6 19.8 29.6 19.8l320 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-9.2 9.2-11.9 22.9-6.9 34.9zm0 103.5c-5 12-2.2 25.7 6.9 34.9l160 160c12.5 12.5 32.8 12.5 45.3 0l160-160c9.2-9.2 11.9-22.9 6.9-34.9S364.9 288 352 288L32 288c-12.9 0-24.6 7.8-29.6 19.8z\"]\n  };\n  var faUnsorted = faSort;\n  var faCircleRadiation = {\n    prefix: 'fas',\n    iconName: 'circle-radiation',\n    icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm80 0l64.3 0c8.7 0 15.7-7.1 17.3-15.6 4.4-24.4 18.1-45.5 37.2-59.7 7.4-5.5 10.6-15.6 6-23.6l-32.5-56.3c-4.3-7.5-13.9-10.3-21.2-5.5-48.2 31.5-81.3 84.2-86.3 144.8-.7 8.8 6.5 16 15.3 16zm137.9 89.8c-8.5-3.7-18.8-1.4-23.5 6.6l-31 53.8c-4.3 7.5-1.9 17.2 5.8 21.1 26.1 13.2 55.5 20.7 86.8 20.7s60.7-7.5 86.8-20.7c7.7-3.9 10.1-13.6 5.8-21.1l-31-53.8c-4.6-8-15-10.3-23.5-6.6-11.7 5-24.5 7.8-38.1 7.8s-26.4-2.8-38.1-7.8zM350.4 240.4c1.6 8.6 8.5 15.6 17.3 15.6l64.3 0c8.8 0 16.1-7.2 15.3-16-5-60.6-38.1-113.2-86.3-144.8-7.3-4.8-16.8-2-21.2 5.5L307.3 157c-4.6 8-1.4 18.1 6 23.6 19.1 14.2 32.7 35.4 37.2 59.7zM256 305.7a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n  };\n  var faRadiationAlt = faCircleRadiation;\n  var faLaptopCode = {\n    prefix: 'fas',\n    iconName: 'laptop-code',\n    icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 240-64 0 0-240-384 0 0 240-64 0 0-240zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2 0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n  };\n  var faSink = {\n    prefix: 'fas',\n    iconName: 'sink',\n    icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32 14.3 32 32 32 32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96l0 192-64 0 0-40c0-30.9-25.1-56-56-56l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c4.4 0 8 3.6 8 8l0 40-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-40c0-4.4 3.6-8 8-8l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0c-30.9 0-56 25.1-56 56l0 40-64 0 0-192z\"]\n  };\n  var faArrowUpFromWaterPump = {\n    prefix: 'fas',\n    iconName: 'arrow-up-from-water-pump',\n    icon: [640, 512, [], \"e4b6\", \"M144 32c-26.5 0-48 21.5-48 48l0 176-16 0c-26.5 0-48 21.5-48 48l0 79.6c17.6-2 36 2.5 51.3 14 3.4 2.6 6.1 1.4 9.8-.3l.8-.4c5.7-2.6 12.9-6.9 21.7-13.5 27.5-20.7 59.9-31.2 92.3-31.4 33.1-.2 66.3 10.2 94.4 31.4 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 33.1-.2 66.3 10.2 94.4 31.4 6.9 5.2 12.8 9 18 11.7 .6 .3 1.2 .6 1.8 1 4.2 2.3 8.5 4.6 12.6 1.5 10.7-8.1 22.9-12.7 35.3-14.1l0-79.5c0-26.5-21.5-48-48-48l-56 0 0-142.1 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L497 39c-9.4-9.4-24.6-9.4-33.9 0l-88 88c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 0 142.1-136 0 0-176c0-26.5-21.5-48-48-48L144 32zM474.6 476.1c19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 482.3 17.6 490.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0z\"]\n  };\n  var faMicrophoneLinesSlash = {\n    prefix: 'fas',\n    iconName: 'microphone-lines-slash',\n    icon: [576, 512, [\"microphone-alt-slash\"], \"f539\", \"M7-24.9c9.4-9.4 24.6-9.4 33.9 0l151 151 0-30.2c0-53 43-96 96-96 50.3 0 91.6 38.7 95.7 88L328 88c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0 0 48-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l55.7 0c-1.9 22.9-11.8 43.4-26.9 59l33.9 33.9c25.5-26 41.3-61.6 41.3-100.9l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 52.6-21.1 100.2-55.3 134.8L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9zM297.8 367.7l41.4 41.4c-8.8 2.4-17.9 4.3-27.3 5.4l0 49.5 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-49.5C169.3 402.7 96 321.9 96 224l0-40c0-5.1 1.6-9.9 4.4-13.8l43.6 43.6 0 10.2c0 79.5 64.5 144 144 144 3.3 0 6.6-.1 9.8-.3z\"]\n  };\n  var faMicrophoneAltSlash = faMicrophoneLinesSlash;\n  var faServer = {\n    prefix: 'fas',\n    iconName: 'server',\n    icon: [448, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faUser = {\n    prefix: 'fas',\n    iconName: 'user',\n    icon: [448, 512, [128100, 62144, 62470, \"user-alt\", \"user-large\"], \"f007\", \"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\"]\n  };\n  var faUserAlt = faUser;\n  var faUserLarge = faUser;\n  var faSnowflake = {\n    prefix: 'fas',\n    iconName: 'snowflake',\n    icon: [512, 512, [10052, 10054], \"f2dc\", \"M288.2 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 62.1-15-15c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l49 49 0 70.6-61.2-35.3-17.9-66.9c-3.4-12.8-16.6-20.4-29.4-17S95.3 98 98.7 110.8l5.5 20.5-53.7-31C35.2 91.5 15.6 96.7 6.8 112s-3.6 34.9 11.7 43.7l53.7 31-20.5 5.5c-12.8 3.4-20.4 16.6-17 29.4s16.6 20.4 29.4 17l66.9-17.9 61.2 35.3-61.2 35.3-66.9-17.9c-12.8-3.4-26 4.2-29.4 17s4.2 26 17 29.4l20.5 5.5-53.7 31C3.2 365.1-2 384.7 6.8 400s28.4 20.6 43.7 11.7l53.7-31-5.5 20.5c-3.4 12.8 4.2 26 17 29.4s26-4.2 29.4-17l17.9-66.9 61.2-35.3 0 70.6-49 49c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l15-15 0 62.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-62.1 15 15c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-49-49 0-70.6 61.2 35.3 17.9 66.9c3.4 12.8 16.6 20.4 29.4 17s20.4-16.6 17-29.4l-5.5-20.5 53.7 31c15.3 8.8 34.9 3.6 43.7-11.7s3.6-34.9-11.7-43.7l-53.7-31 20.5-5.5c12.8-3.4 20.4-16.6 17-29.4s-16.6-20.4-29.4-17l-66.9 17.9-61.2-35.3 61.2-35.3 66.9 17.9c12.8 3.4 26-4.2 29.4-17s-4.2-26-17-29.4l-20.5-5.5 53.7-31c15.3-8.8 20.6-28.4 11.7-43.7s-28.4-20.5-43.7-11.7l-53.7 31 5.5-20.5c3.4-12.8-4.2-26-17-29.4s-26 4.2-29.4 17l-17.9 66.9-61.2 35.3 0-70.6 49-49c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-15 15 0-62.1z\"]\n  };\n  var faSkullCrossbones = {\n    prefix: 'fas',\n    iconName: 'skull-crossbones',\n    icon: [448, 512, [128369, 9760], \"f714\", \"M384 144C384 64.5 312.4 0 224 0S64 64.5 64 144c0 47.1 25.1 88.9 64 115.2l0 28.8c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-28.8c38.9-26.3 64-68.1 64-115.2zM160 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM445.5 339.7c-6.8-16.3-25.5-24-41.8-17.2L224 397.3 44.3 322.5c-16.3-6.8-35 .9-41.8 17.2s.9 35 17.2 41.8L140.8 432 19.7 482.5C3.4 489.3-4.3 508 2.5 524.3s25.5 24 41.8 17.2L224 466.7 403.7 541.5c16.3 6.8 35-.9 41.8-17.2s-.9-35-17.2-41.8L307.2 432 428.3 381.5c16.3-6.8 24-25.5 17.2-41.8z\"]\n  };\n  var faPesoSign = {\n    prefix: 'fas',\n    iconName: 'peso-sign',\n    icon: [448, 512, [], \"e222\", \"M112 32C94.3 32 80 46.3 80 64l0 64-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 32-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c65.6 0 122-39.5 146.7-96l37.3 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24.8 0c.5-5.3 .8-10.6 .8-16s-.3-10.7-.8-16l24.8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-37.3 0C362 71.5 305.6 32 240 32L112 32zm199.6 96l-167.6 0 0-32 96 0c28.4 0 54 12.4 71.6 32zM144 176l190.7 0c.9 5.2 1.3 10.5 1.3 16s-.5 10.8-1.3 16l-190.7 0 0-32zm167.6 80c-17.6 19.6-43.1 32-71.6 32l-96 0 0-32 167.6 0z\"]\n  };\n  var faWineGlass = {\n    prefix: 'fas',\n    iconName: 'wine-glass',\n    icon: [320, 512, [127863], \"f4e3\", \"M32.6 25.7C35.6 10.8 48.7 0 64 0L256 0c15.3 0 28.4 10.8 31.4 25.7L316.8 173c2.1 10.5 3.2 21.2 3.2 32l0 3c0 77.4-55 142-128 156.8l0 115.2 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 544c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-115.2C55 350 0 285.4 0 208l0-3c0-10.7 1.1-21.4 3.2-32L32.6 25.7zM77.4 128l165.1 0-12.8-64-139.5 0-12.8 64z\"]\n  };\n  var faTemperatureHalf = {\n    prefix: 'fas',\n    iconName: 'temperature-half',\n    icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3l0-92.7c0-13.3 10.7-24 24-24s24 10.7 24 24l0 92.7c23.5 9.5 40 32.5 40 59.3z\"]\n  };\n  var faTemperature2 = faTemperatureHalf;\n  var faThermometer2 = faTemperatureHalf;\n  var faThermometerHalf = faTemperatureHalf;\n  var faTicket = {\n    prefix: 'fas',\n    iconName: 'ticket',\n    icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128l0 64C0 200.8 7.4 207.7 15.7 210.6 34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6-18.8-6.5-32.3-24.4-32.3-45.4s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zM416 336l0-160-256 0 0 160 256 0zM112 160c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32l0-192z\"]\n  };\n  var faWheatAwnCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'wheat-awn-circle-exclamation',\n    icon: [640, 512, [], \"e598\", \"M496 576a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM81 529c-9.4 9.3-24.5 9.3-33.9 0-9.4-9.4-9.4-24.6 0-33.9L81 529zm30.2-294.4c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.3 83.9 31.7-7.7 66.2 1 90.6 25.3l12 12c-.8 7-1.2 14.2-1.2 21.4 0 20 3 39.3 8.7 57.4-36.8 21.8-85 17-116.6-14.7L165.6 444.3 81 529C69.7 517.7 58.4 506.3 47 495l84.7-84.7-30.5-30.5c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zM496 476a20 20 0 1 0 0 40 20 20 0 1 0 0-40zm0-140c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16 8.8 0 16-7.2 16-16l0-80c0-8.8-7.2-16-16-16zM215.2 130.6c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.3 83.9 24.2-5.9 50.1-2.1 71.9 10.8-32.2 24.9-56.2 59.8-67.4 100.1-3.8-2.8-7.5-6-11-9.5l-94.9-94.9c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zM526.7 15c9.4-9.4 24.6-9.4 33.9 0 8.8 8.8 9.3 22.7 1.7 32.1L560.6 49 446.2 163.4c7.7 1 15.3 3 22.5 5.9L527 111c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1l-1.7 1.8-52.7 52.7 39 39c3.2 3.2 4.7 7.4 4.7 11.6-17.7-5.4-36.5-8.3-55.9-8.3-34.2 0-66.3 8.9-94.1 24.6l-92.7-92.7c-37.5-37.5-37.5-98.3 0-135.8l7.4-7.4 2.5-2.1c6.2-4.1 14.7-3.4 20.1 2.1l39 39 52.7-52.7c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1L465 49 406.7 107.3c2.8 7.1 4.7 14.5 5.8 22.1L526.7 15z\"]\n  };\n  var faArrowsTurnRight = {\n    prefix: 'fas',\n    iconName: 'arrows-turn-right',\n    icon: [448, 512, [], \"e4c0\", \"M313.4-6.6c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 128 128 128c-35.3 0-64 28.7-64 64l0 32c0 17.7-14.3 32-32 32S0 241.7 0 224l0-32C0 121.3 57.3 64 128 64l210.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 384 96 384c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32S0 465.7 0 448l0-32c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n  };\n  var faCandyCane = {\n    prefix: 'fas',\n    iconName: 'candy-cane',\n    icon: [448, 512, [], \"f786\", \"M421.8 39.6C452 85.2 456.5 142.9 435.1 192l-165.4 0 41.4-41.4c.8-.8 1.5-1.6 2.2-2.4L421.8 39.6zM268 102.9c-.8 .7-1.6 1.4-2.4 2.2l-28.1 28.1c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5L175 14.6C229.9-40.2 314.5-46.7 376.5-5.6L268 102.9zM125.7 336l80-80 181 0-82.5 82.5 0-2.5-178.5 0zm117 64L141.4 501.3c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5l10.7-10.7 181 0z\"]\n  };\n  var faWheelchair = {\n    prefix: 'fas',\n    iconName: 'wheelchair',\n    icon: [512, 512, [], \"f193\", \"M136 40a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM117.9 197.6l12.6 63c-38.6 12.4-66.5 48.7-66.5 91.4 0 53 43 96 96 96 35.6 0 66.7-19.4 83.3-48.2 2.3 .1 4.6 .2 7 .2l4.1 0c1 0 2.1 0 3.1 0l55.2 0c-20.4 64.9-81 112-152.7 112-88.4 0-160-71.6-160-160 0-73.8 50-135.9 117.9-154.4zm148.6-28.1l23.7 118.5 60.5 0c33.3 0 63.2 20.7 74.9 51.9l25.5 68 18.7-6.2c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5l-48 16c-16.3 5.4-34-3-40.1-19.1l-36.3-96.9c-2.3-6.2-8.3-10.4-15-10.4l-86.1 0c-.4 0-.8 0-1.3 0l-13.1 0c-30.5 0-56.8-21.5-62.8-51.4L165.3 189.7c-6.4-31.9 18-61.7 50.6-61.7 24.6 0 45.8 17.4 50.6 41.5z\"]\n  };\n  var faSpellCheck = {\n    prefix: 'fas',\n    iconName: 'spell-check',\n    icon: [576, 512, [], \"f891\", \"M120 32c-48.6 0-88 39.4-88 88l0 168c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-168c0-48.6-39.4-88-88-88l-16 0zm40 128l-64 0 0-40c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 40zM304 32c-17.7 0-32 14.3-32 32l0 224c0 17.7 14.3 32 32 32l72 0c48.6 0 88-39.4 88-88 0-23.6-9.3-45-24.4-60.8 10.3-14.4 16.4-32.1 16.4-51.2 0-48.6-39.4-88-88-88l-64 0zm64 112l-32 0 0-48 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24zM336 256l0-48 40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0zm233 84c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-105.7 132.1-38.7-38.7c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c6.4 6.4 15.3 9.8 24.4 9.3s17.5-4.9 23.2-12L569 340z\"]\n  };\n  var faVolumeOff = {\n    prefix: 'fas',\n    iconName: 'volume-off',\n    icon: [320, 512, [], \"f026\", \"M96 352l-48 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48l48 0 134.1-119.2c6.4-5.7 14.6-8.8 23.1-8.8 19.2 0 34.8 15.6 34.8 34.8l0 378.4c0 19.2-15.6 34.8-34.8 34.8-8.5 0-16.7-3.1-23.1-8.8L96 352z\"]\n  };\n  var faLungs = {\n    prefix: 'fas',\n    iconName: 'lungs',\n    icon: [576, 512, [129729], \"f604\", \"M320 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 141.9-32 19.2 0-116.7c0-24.5-19.9-44.4-44.4-44.4-12.5 0-24.4 5.3-32.8 14.5l-26.4 29C42.9 160.8 0 271.8 0 387l0 30.5c0 52.2 42.3 94.5 94.5 94.5 22 0 43.7-5.1 63.4-15l5-2.5c37.4-18.7 61-56.9 61-98.8l0-128 64-38.4 64 38.4 0 128c0 41.8 23.6 80.1 61 98.8l5 2.5c19.7 9.8 41.4 15 63.4 15 52.2 0 94.5-42.3 94.5-94.5l0-6.2c0-111.1-36.7-219-104.4-307L428.9 48.7c-8.1-10.6-20.7-16.7-34-16.7-23.7 0-42.9 19.2-42.9 42.9l0 118.2-32-19.2 0-141.9z\"]\n  };\n  var faBookmark = {\n    prefix: 'fas',\n    iconName: 'bookmark',\n    icon: [384, 512, [128278, 61591], \"f02e\", \"M64 0C28.7 0 0 28.7 0 64L0 480c0 11.5 6.2 22.2 16.2 27.8s22.3 5.5 32.2-.4L192 421.3 335.5 507.4c9.9 5.9 22.2 6.1 32.2 .4S384 491.5 384 480l0-416c0-35.3-28.7-64-64-64L64 0z\"]\n  };\n  var faBarcode = {\n    prefix: 'fas',\n    iconName: 'barcode',\n    icon: [448, 512, [], \"f02a\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64c0-17.7-14.3-32-32-32zm88 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400c0-13.3-10.7-24-24-24zm72 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32zm208-8l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400c0-13.3-10.7-24-24-24s-24 10.7-24 24zm-96 0l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n  };\n  var faListOl = {\n    prefix: 'fas',\n    iconName: 'list-ol',\n    icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M0 72C0 58.8 10.7 48 24 48l48 0c13.3 0 24 10.7 24 24l0 104 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-80-24 0C10.7 96 0 85.3 0 72zM30.4 301.2C41.8 292.6 55.7 288 70 288l4.9 0c33.7 0 61.1 27.4 61.1 61.1 0 19.6-9.4 37.9-25.2 49.4l-24 17.5 33.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-90.7 0C13.1 464 0 450.9 0 434.7 0 425.3 4.5 416.5 12.1 411l70.5-51.3c3.4-2.5 5.4-6.4 5.4-10.6 0-7.2-5.9-13.1-13.1-13.1L70 336c-3.9 0-7.7 1.3-10.8 3.6L38.4 355.2c-10.6 8-25.6 5.8-33.6-4.8S-1 324.8 9.6 316.8l20.8-15.6zM224 64l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faList12 = faListOl;\n  var faListNumeric = faListOl;\n  var faFileCircleXmark = {\n    prefix: 'fas',\n    iconName: 'file-circle-xmark',\n    icon: [576, 512, [], \"e5a1\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faCube = {\n    prefix: 'fas',\n    iconName: 'cube',\n    icon: [512, 512, [], \"f1b2\", \"M224.3-2.5c19.8-11.4 44.2-11.4 64 0L464.2 99c19.8 11.4 32 32.6 32 55.4l0 203c0 22.9-12.2 44-32 55.4L288.3 514.5c-19.8 11.4-44.2 11.4-64 0L48.5 413c-19.8-11.4-32-32.6-32-55.4l0-203c0-22.9 12.2-44 32-55.4L224.3-2.5zm207.8 360l0-166.1-143.8 83 0 166.1 143.8-83z\"]\n  };\n  var faTape = {\n    prefix: 'fas',\n    iconName: 'tape',\n    icon: [576, 512, [], \"f4db\", \"M412.8 416c41.5-40.7 67.2-97.3 67.2-160 0-123.7-100.3-224-224-224S32 132.3 32 256 132.3 480 256 480l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-131.2 0zM256 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm48 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faBomb = {\n    prefix: 'fas',\n    iconName: 'bomb',\n    icon: [576, 512, [128163], \"f1e2\", \"M480-16c6.9 0 13 4.4 15.2 10.9l13.5 40.4 40.4 13.5C555.6 51 560 57.1 560 64s-4.4 13-10.9 15.2l-40.4 13.5-13.5 40.4C493 139.6 486.9 144 480 144s-13-4.4-15.2-10.9l-13.5-40.4-40.4-13.5C404.4 77 400 70.9 400 64s4.4-13 10.9-15.2l40.4-13.5 13.5-40.4C467-11.6 473.1-16 480-16zM321.4 97.4c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3l-10.9 10.9c7.9 22 12.2 45.7 12.2 70.5 0 114.9-93.1 208-208 208S32 418.9 32 304 125.1 96 240 96c24.7 0 48.5 4.3 70.5 12.3l10.9-10.9zM144 304c0-53 43-96 96-96 13.3 0 24-10.7 24-24s-10.7-24-24-24c-79.5 0-144 64.5-144 144 0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n  };\n  var faScaleUnbalanced = {\n    prefix: 'fas',\n    iconName: 'scale-unbalanced',\n    icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M519.8 62.4c16.8-5.6 25.8-23.7 20.2-40.5S516.3-3.9 499.6 1.6l-113 37.7c-13.9-23.5-39.6-39.3-68.9-39.3-44.2 0-80 35.8-80 80 0 3 .2 5.9 .5 8.8L115.6 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2l0 326.7c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-294.7c21-9.2 37.2-27 44.2-49l125.9-42zM437.3 288l72.4-124.2 72.4 124.2-144.9 0zm72.4 96c62.9 0 115.2-34 126-78.9 2.6-11-1-22.3-6.7-32.1L533.8 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L390.4 273.1c-5.7 9.8-9.3 21.1-6.7 32.1 10.8 44.8 63.1 78.9 126 78.9zM126.8 291.8l72.4 124.2-144.9 0 72.4-124.2zM.9 433.1C11.7 478 64 512 126.8 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L150.9 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L7.6 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n  };\n  var faBalanceScaleLeft = faScaleUnbalanced;\n  var faSquareCaretLeft = {\n    prefix: 'fas',\n    iconName: 'square-caret-left',\n    icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4S288 142.5 288 152l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n  };\n  var faCaretSquareLeft = faSquareCaretLeft;\n  var faRuler = {\n    prefix: 'fas',\n    iconName: 'ruler',\n    icon: [576, 512, [128207], \"f545\", \"M209.1 516.2c-18.7 18.7-49.1 18.7-67.9 0L28.1 403.1c-18.7-18.7-18.7-49.1 0-67.9l17-17 73.5 73.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-73.5-73.5 33.9-33.9 50.9 50.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-50.9-50.9 33.9-33.9 73.5 73.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-73.5-73.5 33.9-33.9 50.9 50.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-50.9-50.9 33.9-33.9 73.5 73.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-73.5-73.5 17-17c18.7-18.7 49.1-18.7 67.9 0L548.5 108.9c18.7 18.7 18.7 49.1 0 67.9L209.1 516.2z\"]\n  };\n  var faI = {\n    prefix: 'fas',\n    iconName: 'i',\n    icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l96 0 0 320-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-320 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n  };\n  var faVolumeXmark = {\n    prefix: 'fas',\n    iconName: 'volume-xmark',\n    icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM367 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n  };\n  var faVolumeMute = faVolumeXmark;\n  var faVolumeTimes = faVolumeXmark;\n  var faArchway = {\n    prefix: 'fas',\n    iconName: 'archway',\n    icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0 0-128c0-53 43-96 96-96s96 43 96 96l0 128 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-272-448 0 0 272z\"]\n  };\n  var faPersonDigging = {\n    prefix: 'fas',\n    iconName: 'person-digging',\n    icon: [576, 512, [\"digging\"], \"f85e\", \"M208 40a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM10.5 181.3c5.9-11.9 20.3-16.7 32.2-10.7l24.6 12.3 12.2-20.4c18.9-31.5 53.2-50.5 89.6-50.5 46.2 0 87.7 30.5 100.5 75.4l32.2 112.7 92.9 46.4 25.8-43c5.8-9.6 16.2-15.5 27.4-15.5s21.7 5.9 27.4 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2S555.5 512 544 512l-192 0c-11.5 0-22.2-6.2-27.8-16.2s-5.5-22.3 .4-32.2L370 387.8 21.3 213.5c-11.9-5.9-16.7-20.3-10.7-32.2zM94.3 307.4l112 56c10.8 5.4 17.7 16.5 17.7 28.6l0 88c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-68.2-61.3-30.7-36.3 109c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.7 469.9l48-144c2.9-8.8 9.5-15.9 18.1-19.4s18.3-3.2 26.6 .9z\"]\n  };\n  var faDigging = faPersonDigging;\n  var faGaugeHigh = {\n    prefix: 'fas',\n    iconName: 'gauge-high',\n    icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64 0-16.2-6-31.1-16-42.3l69.5-138.9c5.9-11.9 1.1-26.3-10.7-32.2s-26.3-1.1-32.2 10.7L261.1 288.2c-1.7-.1-3.4-.2-5.1-.2-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faTachometerAlt = faGaugeHigh;\n  var faTachometerAltFast = faGaugeHigh;\n  var faGenderless = {\n    prefix: 'fas',\n    iconName: 'genderless',\n    icon: [384, 512, [], \"f22d\", \"M192 128a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 320a192 192 0 1 0 0-384 192 192 0 1 0 0 384z\"]\n  };\n  var faCloudSun = {\n    prefix: 'fas',\n    iconName: 'cloud-sun',\n    icon: [576, 512, [9925], \"f6c4\", \"M453.6-14.8c4.9 2 8.5 6.4 9.5 11.6L480 80 563.2 96.8c5.2 1.1 9.5 4.6 11.6 9.5s1.5 10.5-1.4 14.9l-46.9 70.7 46.9 70.7c2.9 4.4 3.5 10 1.4 14.9s-6.4 8.5-11.6 9.5L501 299.7c-11.9-8.7-25.1-15.6-39.4-20.4-2.5-12.7-6.8-24.7-12.7-35.7 9.5-14.9 15.1-32.6 15.1-51.7 0-53-43-96-96-96-47.9 0-87.6 35.1-94.8 80.9-26.5-20.3-59.5-32.5-95.4-32.9l-15.1-22.7c-2.9-4.4-3.5-10-1.4-14.9s6.4-8.5 11.6-9.5L256 80 272.8-3.2c1.1-5.2 4.6-9.5 9.5-11.6s10.5-1.5 14.9 1.4L368 33.6 438.7-13.3c4.4-2.9 10-3.5 14.9-1.4zM416 192c0 3.8-.4 7.5-1.3 11.1-21.7-17-49-27.1-78.7-27.1-4.6 0-9.1 .2-13.5 .7 6.4-19 24.4-32.7 45.5-32.7 26.5 0 48 21.5 48 48zM96 512c-53 0-96-43-96-96 0-42.5 27.6-78.6 65.9-91.2-1.3-6.7-1.9-13.7-1.9-20.8 0-61.9 50.1-112 112-112 43.1 0 80.5 24.3 99.2 60 14.7-17.1 36.5-28 60.8-28 44.2 0 80 35.8 80 80 0 5.5-.6 10.8-1.6 16 .5 0 1.1 0 1.6 0 53 0 96 43 96 96s-43 96-96 96L96 512z\"]\n  };\n  var faArrowRight = {\n    prefix: 'fas',\n    iconName: 'arrow-right',\n    icon: [512, 512, [8594], \"f061\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-105.4 105.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n  };\n  var faHandshake = {\n    prefix: 'fas',\n    iconName: 'handshake',\n    icon: [576, 512, [129309, 62662, \"handshake-alt\", \"handshake-simple\"], \"f2b5\", \"M268.9 85.2L152.3 214.8c-4.6 5.1-4.4 13 .5 17.9 30.5 30.5 80 30.5 110.5 0l31.8-31.8c4.2-4.2 9.5-6.5 14.9-6.9 6.8-.6 13.8 1.7 19 6.9L505.6 376 576 320 576 32 464 96 440.2 80.1C424.4 69.6 405.9 64 386.9 64l-70.4 0c-1.1 0-2.3 0-3.4 .1-16.9 .9-32.8 8.5-44.2 21.1zM116.6 182.7L223.4 64 183.8 64c-25.5 0-49.9 10.1-67.9 28.1L112 96 0 32 0 320 156.4 450.3c23 19.2 52 29.7 81.9 29.7l15.7 0-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l41 41 9 0c19.1 0 37.8-4.3 54.8-12.3L359 441c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l32 32 17.5-17.5c8.9-8.9 11.5-21.8 7.6-33.1l-137.9-136.8-14.9 14.9c-49.3 49.3-129.1 49.3-178.4 0-23-23-23.9-59.9-2.2-84z\"]\n  };\n  var faHandshakeAlt = faHandshake;\n  var faHandshakeSimple = faHandshake;\n  var faPersonSkiing = {\n    prefix: 'fas',\n    iconName: 'person-skiing',\n    icon: [576, 512, [9975, \"skiing\"], \"f7c9\", \"M416 56a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM2.7 300.9c6.1-11.8 20.6-16.3 32.4-10.2l197.8 102.7 62.3-87.2-82-92.2c-11-12.4-16.2-27.5-16.2-42.4l111.6 53.4 42.9 48.2c14.9 16.7 16.2 41.6 3.2 59.8l-64.4 90.2 128.3 66.6c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 333.3C1.2 327.2-3.4 312.7 2.7 300.9zM103 49.6l18 8.7 8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 17 84.8 41 .4-.2 76.1-33.8c31.3-13.9 67.9-.7 83.2 29.9l28.9 57.8 68.7 27.5c16.4 6.6 24.4 25.2 17.8 41.6s-25.2 24.4-41.6 17.8L393.8 224c-10.9-4.4-19.8-12.6-25.1-23.1l-11.5-23.1c-16.4 9.4-25.9 14.8-28.5 16.3l-7.6-3.7-185.6-89.6-9.2 18.3c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-17.9-17.6-8.5C81.1 74.6 77.8 65 81.6 57S95 45.7 103 49.6z\"]\n  };\n  var faSkiing = faPersonSkiing;\n  var faBridgeWater = {\n    prefix: 'fas',\n    iconName: 'bridge-water',\n    icon: [640, 512, [], \"e4ce\", \"M64 64l512 0 0 112c-37.6 9.4-64 43.2-64 82l0 76.4c-21-9.7-43.5-14.5-66-14.4-10 .1-20.1 1.1-30 3.1l0-35.1c0-53-43-96-96-96s-96 43-96 96l0 32.7c-5.3-.5-10.7-.8-16-.7-27.7 .2-55.4 7.8-80 23l0-85c0-38.8-26.4-72.6-64-82L64 64zM403.4 444.1C379.1 462.3 351.1 480 320 480s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n  };\n  var faBuildingNgo = {\n    prefix: 'fas',\n    iconName: 'building-ngo',\n    icon: [576, 512, [], \"e4d7\", \"M128 0C92.7 0 64 28.7 64 64l0 384c0 35.3 28.7 64 64 64l48 0 0-112c0-35.3 28.7-64 64-64l208 0 0-272c0-35.3-28.7-64-64-64L128 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM304 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM520 380c-24.3 0-44 19.7-44 44l0 80c0 24.3 19.7 44 44 44l16 0c24.3 0 44-19.7 44-44l0-80c0-24.3-19.7-44-44-44l-16 0zm-4 44c0-2.2 1.8-4 4-4l16 0c2.2 0 4 1.8 4 4l0 80c0 2.2-1.8 4-4 4l-16 0c-2.2 0-4-1.8-4-4l0-80zm-168 0l0 80c0 24.3 19.7 44 44 44l16 0c24.3 0 44-19.7 44-44l0-24c0-11-9-20-20-20l-8 0c-11 0-20 9-20 20 0 6.5 3.1 12.4 8 16l0 8c0 2.2-1.8 4-4 4l-16 0c-2.2 0-4-1.8-4-4l0-80c0-2.2 1.8-4 4-4l20.4 0c1.9 9.1 9.9 16 19.6 16 11 0 20-9 20-20 0-19.9-16.1-36-36-36l-24 0c-24.3 0-44 19.7-44 44zm-90.1-32.9c-4.1-8.3-13.5-12.7-22.5-10.5S220 390.7 220 400l0 128c0 11 9 20 20 20s20-9 20-20l0-43.3 26.1 52.2c4.1 8.3 13.5 12.7 22.5 10.5S324 537.3 324 528l0-128c0-11-9-20-20-20s-20 9-20 20l0 43.3-26.1-52.2z\"]\n  };\n  var faIgloo = {\n    prefix: 'fas',\n    iconName: 'igloo',\n    icon: [576, 512, [], \"f7ae\", \"M320 33.8l0 126.2-271.5 0c51.7-77.2 139.6-128 239.5-128 10.8 0 21.5 .6 32 1.8zM368 160l0-116.7c66 19 122.2 61 159.5 116.7L368 160zM22.6 208l73.4 0 0 112-96 0c0-39.7 8-77.6 22.6-112zM176 320l-32 0 0-112 288 0 0 112-32 0 0 48 176 0 0 64c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-64 176 0 0-48zm304 0l0-112 73.4 0C568 242.4 576 280.3 576 320l-96 0zM288 288c-35.3 0-64 28.7-64 64l0 80 128 0 0-80c0-35.3-28.7-64-64-64z\"]\n  };\n  var faCircleDollarToSlot = {\n    prefix: 'fas',\n    iconName: 'circle-dollar-to-slot',\n    icon: [576, 512, [\"donate\"], \"f4b9\", \"M96 224a192 192 0 1 1 384 0 192 192 0 1 1 -384 0zm176-92l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L248 272c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20s-20 9-20 20zM48 344l0 104c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 344c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faDonate = faCircleDollarToSlot;\n  var faY = {\n    prefix: 'fas',\n    iconName: 'y',\n    icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-149.7 154-215.7c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n  };\n  var faFaceSmileWink = {\n    prefix: 'fas',\n    iconName: 'face-smile-wink',\n    icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM165.4 321.9c20.4 28 53.4 46.1 90.6 46.1s70.2-18.1 90.6-46.1c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5C356.3 390 309.2 416 256 416s-100.3-26-129.4-65.9c-7.8-10.7-5.4-25.7 5.3-33.5s25.7-5.4 33.5 5.3zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm164 8c0 11-9 20-20 20s-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n  };\n  var faSmileWink = faFaceSmileWink;\n  var faDiceFour = {\n    prefix: 'fas',\n    iconName: 'dice-four',\n    icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faFaceGrinSquintTears = {\n    prefix: 'fas',\n    iconName: 'face-grin-squint-tears',\n    icon: [576, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M560 35.4c0 25.6-18.8 47.3-44.1 50.9L469.1 93c-10.6 1.5-19.6-7.5-18.1-18.1l6.7-46.7C461.3 2.8 483-16 508.6-16 537-16 560 7 560 35.4zM403.5 68.1c-6 42.2 30.2 78.4 72.4 72.4l37.8-5.4C565.7 232 550.8 355.3 469 437s-205 96.6-301.9 44.7l5.4-37.8c6-42.2-30.2-78.4-72.4-72.4l-37.8 5.4C10.3 280 25.2 156.7 107 75S312-21.7 408.9 30.3l-5.4 37.8zM417.8 201c-19.1 36.4-45.6 72.7-78.9 106s-69.6 59.8-106 78.9c-11.1 5.8-12.4 21.4-1.1 26.6 59.2 27.5 131.8 16.8 180.6-32s59.5-121.4 32-180.6c-5.3-11.3-20.8-10-26.6 1.1zM113.9 270.6c1.7 8 9 13.4 17.1 12.7l43.1-3.9-3.9 43.1c-.7 8.1 4.7 15.5 12.7 17.1s15.9-2.9 18.4-10.6l28-84.6c1.9-5.7 .4-12.1-3.9-16.3s-10.6-5.8-16.3-3.9l-84.6 28c-7.7 2.6-12.3 10.5-10.6 18.5zM315.2 99.1c.7-8.1-4.7-15.5-12.7-17.1s-15.9 2.9-18.5 10.6l-28 84.6c-1.9 5.7-.4 12.1 3.9 16.3s10.6 5.8 16.3 3.9l84.6-28c7.7-2.6 12.3-10.5 10.6-18.4s-9-13.4-17.1-12.7l-43.1 3.9 3.9-43.1zM60.1 425.7l46.7-6.7c10.6-1.5 19.6 7.5 18.1 18.1l-6.7 46.7C114.7 509.2 93 528 67.4 528 39 528 16 505 16 476.6 16 451 34.8 429.3 60.1 425.7z\"]\n  };\n  var faGrinSquintTears = faFaceGrinSquintTears;\n  var faFileAudio = {\n    prefix: 'fas',\n    iconName: 'file-audio',\n    icon: [384, 512, [], \"f1c7\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zm53.8 185.2c-9.1-6.3-21.5-4.1-27.8 5s-4.1 21.5 5 27.8c23.9 16.7 39.4 44.3 39.4 75.5s-15.6 58.9-39.4 75.5c-9.1 6.3-11.3 18.8-5 27.8s18.8 11.3 27.8 5c34.1-23.8 56.6-63.5 56.6-108.3S296 267.5 261.8 243.7zM80 312c-8.8 0-16 7.2-16 16l0 48c0 8.8 7.2 16 16 16l24 0 27.2 34c3 3.8 7.6 6 12.5 6l.3 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16l-.3 0c-4.9 0-9.5 2.2-12.5 6l-27.2 34-24 0zm128 72.2c0 10.7 10.5 18.2 18.9 11.6 12.9-10.3 21.1-26.1 21.1-43.8s-8.2-33.5-21.1-43.8c-8.4-6.7-18.9 .9-18.9 11.6l0 64.5z\"]\n  };\n  var faArrowsDownToLine = {\n    prefix: 'fas',\n    iconName: 'arrows-down-to-line',\n    icon: [512, 512, [], \"e4b8\", \"M214.6 310.6l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 274.7 96 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 242.7 9.4-9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm256 0l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l9.4 9.4 0-242.7c0-17.7 14.3-32 32-32s32 14.3 32 32l0 242.7 9.4-9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512z\"]\n  };\n  var faG = {\n    prefix: 'fas',\n    iconName: 'g',\n    icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128L256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l144 0c25.8 0 49.6 21.4 47.2 50.6-9.5 115-105.8 205.4-223.2 205.4-123.7 0-224-100.3-224-224S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57 13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n  };\n  var faVihara = {\n    prefix: 'fas',\n    iconName: 'vihara',\n    icon: [576, 512, [], \"f6a7\", \"M273.6-3.2c8.5-6.4 20.3-6.4 28.8 0L443.2 102.4c8.3 6.2 18.4 9.6 28.8 9.6 13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 48 58.7 64 13.3 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 48 24.4 32 15.6 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l22.1 0 17.9-32 0-48-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l13.3 0 58.7-64 0-48-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24c10.4 0 20.5-3.4 28.8-9.6L273.6-3.2zM128 368l320 0 0-48-320 0 0 48zM384 160l-192 0 0 48 192 0 0-48z\"]\n  };\n  var faFlagCheckered = {\n    prefix: 'fas',\n    iconName: 'flag-checkered',\n    icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 279.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 384 64 480c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9 0 65.5-64 13.9 0 65.5 48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3l0-63.9 38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9 0 66.7-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8l0 71.4c21.8 1.9 43.3 6.7 64 14.4l0-69.8 22.7 6.7c13.5 4 27.3 6.4 41.3 7.4l0-64.2c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12 0-62c-13-3.8-25.8-8.8-38.2-15-8.2-4.1-16.9-7-25.8-8.8l0 72.4c-13-.4-26 .8-38.7 3.6l-25.3 5.5 0-75.2-64 16 0 73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2 0-71.7-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5l0 77.4zm64-149.4l0-70.8c-20.9 6.1-42.4 9.1-64 9.1l0 69.4c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n  };\n  var faGaugeSimple = {\n    prefix: 'fas',\n    iconName: 'gauge-simple',\n    icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm320 96c0-26.9-16.5-49.9-40-59.3L280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 172.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n  };\n  var faGaugeSimpleMed = faGaugeSimple;\n  var faTachometerAverage = faGaugeSimple;\n  var faRightLeft = {\n    prefix: 'fas',\n    iconName: 'right-left',\n    icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M502.6 150.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9S352 236.9 352 224l0-64-320 0c-17.7 0-32-14.3-32-32S14.3 96 32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c12.5 12.5 12.5 32.8 0 45.3zm-397.3 352l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c9.2-9.2 22.9-11.9 34.9-6.9S160 275.1 160 288l0 64 320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9z\"]\n  };\n  var faExchangeAlt = faRightLeft;\n  var faPills = {\n    prefix: 'fas',\n    iconName: 'pills',\n    icon: [512, 512, [], \"f484\", \"M64 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zM176 368c0-48.7 18.1-93.2 48-127l0-129C224 50.1 173.9 0 112 0S0 50.1 0 112L0 400c0 61.9 50.1 112 112 112 37.3 0 70.3-18.2 90.7-46.3-17-28.6-26.7-62-26.7-97.7zm64.7 67.4c4.6 8.7 16.3 9.7 23.3 2.7L438.1 264c7-7 6-18.7-2.7-23.3-20.1-10.7-43-16.7-67.4-16.7-79.5 0-144 64.5-144 144 0 24.3 6 47.3 16.7 67.4zM297.9 472c-7 7-6 18.7 2.7 23.3 20.1 10.7 43 16.7 67.4 16.7 79.5 0 144-64.5 144-144 0-24.3-6-47.3-16.7-67.4-4.6-8.7-16.3-9.7-23.3-2.7L297.9 472z\"]\n  };\n  var faExplosion = {\n    prefix: 'fas',\n    iconName: 'explosion',\n    icon: [512, 512, [], \"e4e9\", \"M256-32c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24zm0 160c12.4 0 22.7 9.4 23.9 21.7L293.4 291.6 467.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L372.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87-71.4 0c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64l-79.6 0-75.5-52.3C.6 357-2.8 344.1 2.4 333.5s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.6 9.4-11.3L75.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L214 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7zM32 464l456 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0z\"]\n  };\n  var faArrowsDownToPeople = {\n    prefix: 'fas',\n    iconName: 'arrows-down-to-people',\n    icon: [512, 512, [], \"e4b9\", \"M113 153c-9.4 9.4-24.6 9.4-33.9 0L15 89C5.7 79.6 5.7 64.4 15 55S39.6 45.7 49 55L72 78.1 72-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 86.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64zm320 0c-9.4 9.4-24.6 9.4-33.9 0L335 89c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23 0-86.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 86.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64zM256 192a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm0 160c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32c0-53 43-96 96-96zM32 288a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm352 0a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM80 368c15.3 0 29.6 4.3 41.8 11.8-6.3 16.2-9.8 33.8-9.8 52.2l0 48c0 11.4 2.4 22.2 6.7 32l-87.8 0C13.8 512 0 498.2 0 481.1L0 448c0-44.2 35.8-80 80-80zM393.3 512c4.3-9.8 6.7-20.6 6.7-32l0-48c0-18.4-3.5-36-9.8-52.2 12.2-7.5 26.5-11.8 41.8-11.8 44.2 0 80 35.8 80 80l0 33.1c0 17-13.8 30.9-30.9 30.9l-87.8 0z\"]\n  };\n  var faUsersViewfinder = {\n    prefix: 'fas',\n    iconName: 'users-viewfinder',\n    icon: [576, 512, [], \"e595\", \"M64 0C28.7 0 0 28.7 0 64l0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72c0-8.8 7.2-16 16-16l72 0c13.3 0 24-10.7 24-24S149.3 0 136 0L64 0zM440 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0c8.8 0 16 7.2 16 16l0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72c0-35.3-28.7-64-64-64L440 0zM48 376c0-13.3-10.7-24-24-24S0 362.7 0 376l0 72c0 35.3 28.7 64 64 64l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0c-8.8 0-16-7.2-16-16l0-72zm528 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72c0 8.8-7.2 16-16 16l-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0c35.3 0 64-28.7 64-64l0-72zM288 216a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm0 40c-53 0-96 43-96 96l0 24c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24l0-24c0-53-43-96-96-96zm192-64a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM168 272.3c-49.3 4.1-88 45.3-88 95.7l0 10.7c0 11.8 9.6 21.3 21.3 21.3l46.8 0c-2.7-7.5-4.1-15.6-4.1-24l0-24c0-29.5 8.8-56.9 24-79.7zM427.9 400l46.8 0c11.8 0 21.3-9.6 21.3-21.3l0-10.7c0-50.3-38.7-91.6-88-95.7 15.2 22.8 24 50.2 24 79.7l0 24c0 8.4-1.4 16.5-4.1 24zM192 192a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faCarOn = {\n    prefix: 'fas',\n    iconName: 'car-on',\n    icon: [448, 512, [], \"e4dd\", \"M248-8c0-13.3-10.7-24-24-24S200-21.3 200-8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64zM145.3 208l157.5 0c6.7 0 12.6 4.1 15 10.4l26.1 69.6-239.6 0 26.1-69.6c2.3-6.2 8.3-10.4 15-10.4zM34 292.8l-1.3 3.4C13.2 307.1 0 328 0 352L0 480c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 288 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-128c0-24-13.2-44.9-32.8-55.9l-1.3-3.4-36.3-96.9c-11.7-31.2-41.6-51.9-74.9-51.9l-157.5 0c-33.3 0-63.2 20.7-74.9 51.9L34 292.8zM96 336a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm224 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM7 7C-2.3 16.4-2.3 31.6 7 41L55 89c9.4 9.4 24.6 9.4 33.9 0S98.3 64.4 89 55L41 7C31.6-2.3 16.4-2.3 7 7zM407 7L359 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9S416.4-2.3 407 7z\"]\n  };\n  var faSleigh = {\n    prefix: 'fas',\n    iconName: 'sleigh',\n    icon: [640, 512, [], \"f7cc\", \"M64 32C46.3 32 32 46.3 32 64S46.3 96 64 96l0 160c0 41.8 26.7 77.4 64 90.5l0 69.5-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l504 0c44.2 0 80-35.8 80-80l0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8c0 17.7-14.3 32-32 32l-80 0 0-64c53 0 96-43 96-96l0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 32c0 35.3-28.7 64-64 64l-48.9 0c-48.5 0-92.8-27.4-114.5-70.8l-25.2-50.5C237.7 59.4 193.4 32 144.9 32L64 32zM432 416l-256 0 0-64 256 0 0 64z\"]\n  };\n  var faDumbbell = {\n    prefix: 'fas',\n    iconName: 'dumbbell',\n    icon: [640, 512, [], \"f44b\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112 256 0 0-112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 16 16 0c26.5 0 48 21.5 48 48l0 48c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48c0 26.5-21.5 48-48 48l-16 0 0 16c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-112-256 0 0 112c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-16-16 0c-26.5 0-48-21.5-48-48l0-48c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-48c0-26.5 21.5-48 48-48l16 0 0-16z\"]\n  };\n  var faBabyCarriage = {\n    prefix: 'fas',\n    iconName: 'baby-carriage',\n    icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M64 208l0 80c0 53 43 96 96 96l192 0c53 0 96-43 96-96l0-112 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0c-13.3 0-24 10.7-24 24l0 56-336 0zm.2-48l223.8 0 0-128c0-17.7-14.3-32-32-32L232 0C141.9 0 68.4 70.9 64.2 160zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm288 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faCarriageBaby = faBabyCarriage;\n  var faKiwiBird = {\n    prefix: 'fas',\n    iconName: 'kiwi-bird',\n    icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4l55.7 0c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1S576 471 576 464l0-240c0-70.7-57.3-128-128-128l-55.7 0C355.9 96 322.4 78.4 291.2 59.6 262.3 42.1 228.3 32 192 32 86 32 0 118 0 224 0 295.1 38.6 357.1 96 390.3L96 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-46c15.3 3.9 31.4 6 48 6 5.4 0 10.7-.2 16-.7l0 40.7c0 13.3 10.7 24 24 24s24-10.7 24-24l0-50.9c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faCalendarXmark = {\n    prefix: 'fas',\n    iconName: 'calendar-xmark',\n    icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zM291.9 220.1c-9.4-9.4-24.6-9.4-33.9 0l-33.9 33.9-33.9-33.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l33.9 33.9-33.9 33.9c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l33.9-33.9 33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-33.9-33.9 33.9-33.9c9.4-9.4 9.4-24.6 0-33.9z\"]\n  };\n  var faCalendarTimes = faCalendarXmark;\n  var faCircleDown = {\n    prefix: 'fas',\n    iconName: 'circle-down',\n    icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512 256 256 0 1 0 0-512zM244.7 387.3l-104-104c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l56 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 56 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-104 104c-6.2 6.2-16.4 6.2-22.6 0z\"]\n  };\n  var faArrowAltCircleDown = faCircleDown;\n  var faFileMedical = {\n    prefix: 'fas',\n    iconName: 'file-medical',\n    icon: [384, 512, [], \"f477\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM160 280l0 40-40 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l40 0 0 40c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-40 40 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-40 0 0-40c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n  };\n  var faXmark = {\n    prefix: 'fas',\n    iconName: 'xmark',\n    icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M55.1 73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L147.2 256 9.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192.5 301.3 329.9 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.8 256 375.1 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192.5 210.7 55.1 73.4z\"]\n  };\n  var faClose = faXmark;\n  var faMultiply = faXmark;\n  var faRemove = faXmark;\n  var faTimes = faXmark;\n  var faShapes = {\n    prefix: 'fas',\n    iconName: 'shapes',\n    icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M256 0c11.2 0 21.7 5.9 27.4 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2S363.5 224 352 224l-192 0c-11.5 0-22.2-6.2-27.8-16.2s-5.5-22.3 .4-32.2l96-160C234.3 5.9 244.8 0 256 0zM128 272a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm200 16l112 0c22.1 0 40 17.9 40 40l0 112c0 22.1-17.9 40-40 40l-112 0c-22.1 0-40-17.9-40-40l0-112c0-22.1 17.9-40 40-40z\"]\n  };\n  var faTriangleCircleSquare = faShapes;\n  var faDiceOne = {\n    prefix: 'fas',\n    iconName: 'dice-one',\n    icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faLockOpen = {\n    prefix: 'fas',\n    iconName: 'lock-open',\n    icon: [576, 512, [], \"f3c1\", \"M384 96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-70.7-57.3-128-128-128S320 25.3 320 96l0 64-160 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64l-32 0 0-64z\"]\n  };\n  var faPepperHot = {\n    prefix: 'fas',\n    iconName: 'pepper-hot',\n    icon: [576, 512, [127798], \"f816\", \"M545 65c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L478.9 63.2C452.3 43.6 419.5 32 384 32 348.9 32 316.5 43.3 290.1 62.4 274.1 74.1 284.2 96 304 96l24 0c13.3 0 24 10.7 24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24 10.7 24 24l0 24c0 19.8 21.9 29.9 33.6 13.9 19.1-26.4 30.4-58.8 30.4-93.9 0-35.5-11.6-68.3-31.2-94.9L545 65zM270 135.5l-159.6 228C101.3 376.4 86.7 384 71 384l-7 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l27.1 0c65.7 0 129.7-20.2 183.5-57.8L440.5 306.1C435 295.9 432 284.2 432 272l-56 0c-39.8 0-72-32.2-72-72l0-56c-12.2 0-23.9-3-34-8.5z\"]\n  };\n  var faDropletSlash = {\n    prefix: 'fas',\n    iconName: 'droplet-slash',\n    icon: [576, 512, [\"tint-slash\"], \"f5c7\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L463.6 397.8c10.5-23.8 16.4-50.1 16.4-77.8 0-91.2-130.2-274.1-166.6-323.5-5.9-8-15.2-12.5-25.2-12.5l-.4 0c-10 0-19.3 4.5-25.2 12.5-15.6 21.2-48.5 66.9-80.9 119.4L41-24.9zm92 227.7c-21.6 43.8-37 85.9-37 117.2 0 106 86 192 192 192 43.4 0 83.4-14.4 115.5-38.6L133 202.8z\"]\n  };\n  var faTintSlash = faDropletSlash;\n  var faDroplet = {\n    prefix: 'fas',\n    iconName: 'droplet',\n    icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320 0 228.8 130.2 45.9 166.6-3.5 172.5-11.5 181.8-16 191.8-16l.4 0c10 0 19.3 4.5 25.2 12.5 36.4 49.4 166.6 232.3 166.6 323.5 0 106-86 192-192 192zM112 312c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 75.1 60.9 136 136 136 13.3 0 24-10.7 24-24s-10.7-24-24-24c-48.6 0-88-39.4-88-88z\"]\n  };\n  var faTint = faDroplet;\n  var faFileLines = {\n    prefix: 'fas',\n    iconName: 'file-lines',\n    icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM120 256c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faFileAlt = faFileLines;\n  var faFileText = faFileLines;\n  var faCommentsDollar = {\n    prefix: 'fas',\n    iconName: 'comments-dollar',\n    icon: [576, 512, [], \"f653\", \"M192 320c106 0 192-78.8 192-176S298-32 192-32 0 46.8 0 144c0 39.6 14.3 76.2 38.4 105.6L2.8 316.8C-2.1 326.1-.4 337.5 7 345s18.9 9.2 28.2 4.2L116.8 306c23.1 9 48.5 14 75.2 14zm3.2 48c16.4 81.9 94.7 144 188.8 144 26.7 0 52.1-5 75.2-14l81.6 43.2c9.3 4.9 20.7 3.2 28.2-4.2s9.2-18.9 4.2-28.2l-35.6-67.2c24.1-29.4 38.4-66 38.4-105.6 0-82.4-61.7-151.5-145-170.7-11.5 115.8-115.8 201.2-235.8 202.7zM196 32c11 0 20 9 20 20l0 4 8 0c11 0 20 9 20 20s-9 20-20 20l-47.5 0c-6.9 0-12.5 5.6-12.5 12.5 0 6.1 4.4 11.3 10.4 12.3l41.7 7c25.3 4.2 43.9 26.1 43.9 51.8 0 26.1-19 47.7-44 51.8l0 4.7c0 11-9 20-20 20s-20-9-20-20l0-4-24 0c-11 0-20-9-20-20s9-20 20-20l55.5 0c6.9 0 12.5-5.6 12.5-12.5 0-6.1-4.4-11.3-10.4-12.3l-41.7-7c-25.3-4.2-43.9-26.1-43.9-51.8 0-28.8 23.2-52.2 52-52.5l0-4c0-11 9-20 20-20z\"]\n  };\n  var faMagnifyingGlassLocation = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass-location',\n    icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6 6 7.3 16.8 7.3 22.7 0 22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faSearchLocation = faMagnifyingGlassLocation;\n  var faFileInvoice = {\n    prefix: 'fas',\n    iconName: 'file-invoice',\n    icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176zM64 384l0-64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 416c-17.7 0-32-14.3-32-32zM88 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24S74.7 64 88 64zm0 96l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faPentagon = {\n    prefix: 'fas',\n    iconName: 'pentagon',\n    icon: [576, 512, [], \"e790\", \"M316.4-3.1c-16.8-12.2-39.6-12.2-56.4 0L35.3 160.2c-16.8 12.2-23.9 33.9-17.4 53.7l85.8 264.1c6.4 19.8 24.9 33.2 45.7 33.2l277.7 0c20.8 0 39.2-13.4 45.7-33.2l85.8-264.1c6.4-19.8-.6-41.4-17.4-53.7L316.4-3.1z\"]\n  };\n  var faRepublican = {\n    prefix: 'fas',\n    iconName: 'republican',\n    icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32l224 0c88.4 0 160 71.6 160 160l0 64-544 0 0-64zm152-32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm232 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM280 160a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 288l416 0 0 112c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-48-32 0 0 96c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64-192 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-160 128 0z\"]\n  };\n  var faShop = {\n    prefix: 'fas',\n    iconName: 'shop',\n    icon: [576, 512, [\"store-alt\"], \"f54f\", \"M21.5 181.1L78.3 67.4C89.2 45.7 111.3 32 135.6 32l304.9 0c24.2 0 46.4 13.7 57.2 35.4l56.8 113.7c3.6 7.2 5.5 15.1 5.5 23.2 0 27.3-21.2 49.7-48 51.6L512 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192-96 0 0 176c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-176.1c-26.8-1.9-48-24.3-48-51.6 0-8 1.9-16 5.5-23.2zM128 256l0 112c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-112-160 0z\"]\n  };\n  var faStoreAlt = faShop;\n  var faFilm = {\n    prefix: 'fas',\n    iconName: 'film',\n    icon: [448, 512, [127902, 62368, \"film-alt\", \"film-simple\"], \"f008\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm304-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm304-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM352 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0z\"]\n  };\n  var faFilmAlt = faFilm;\n  var faFilmSimple = faFilm;\n  var faBuildingCircleXmark = {\n    prefix: 'fas',\n    iconName: 'building-circle-xmark',\n    icon: [576, 512, [], \"e4d4\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-10.5-14.6-19-30.7-25.1-48l-74.9 0 0-80c0-17.7 14.3-32 32-32l32 0c2 0 4 .2 5.9 .5 6-23.6 16.3-45.4 30.1-64.5l-4 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 4c27.5-19.8 60.3-32.4 96-35.4L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L454.6 400z\"]\n  };\n  var faComments = {\n    prefix: 'fas',\n    iconName: 'comments',\n    icon: [576, 512, [128490, 61670], \"f086\", \"M384 144c0 97.2-86 176-192 176-26.7 0-52.1-5-75.2-14L35.2 349.2c-9.3 4.9-20.7 3.2-28.2-4.2s-9.2-18.9-4.2-28.2l35.6-67.2C14.3 220.2 0 183.6 0 144 0 46.8 86-32 192-32S384 46.8 384 144zm0 368c-94.1 0-172.4-62.1-188.8-144 120-1.5 224.3-86.9 235.8-202.7 83.3 19.2 145 88.3 145 170.7 0 39.6-14.3 76.2-38.4 105.6l35.6 67.2c4.9 9.3 3.2 20.7-4.2 28.2s-18.9 9.2-28.2 4.2L459.2 498c-23.1 9-48.5 14-75.2 14z\"]\n  };\n  var faTags = {\n    prefix: 'fas',\n    iconName: 'tags',\n    icon: [576, 512, [], \"f02c\", \"M401.2 39.1L549.4 189.4c27.7 28.1 27.7 73.1 0 101.2L393 448.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L515.3 256.8c9.2-9.3 9.2-24.4 0-33.7L367 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM32.1 229.5L32.1 96c0-35.3 28.7-64 64-64l133.5 0c17 0 33.3 6.7 45.3 18.7l144 144c25 25 25 65.5 0 90.5L285.4 418.7c-25 25-65.5 25-90.5 0l-144-144c-12-12-18.7-28.3-18.7-45.3zm144-85.5a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faGun = {\n    prefix: 'fas',\n    iconName: 'gun',\n    icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8-448 0C14.3 64 0 78.3 0 96L0 208c0 17.7 14.3 32 32 32l10 0c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480l96 0c14.7 0 27.5-10 31-24.2L217 352 321.4 352c23.7 0 44.8-14.9 52.7-37.2l26.7-74.8 31.1 0c8.5 0 16.6-3.4 22.6-9.4l22.6-22.6 66.7 0c17.7 0 32-14.3 32-32l0-80c0-17.7-14.3-32-32-32l-16 0 0-8zM321.4 304l-92.5 0 16-64 105 0-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128l384 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n  };\n  var faCircleCheck = {\n    prefix: 'fas',\n    iconName: 'circle-check',\n    icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm84.4-299.3l-80 128c-4.2 6.7-11.4 10.9-19.3 11.3s-15.5-3.2-20.2-9.6l-48-64c-8-10.6-5.8-25.6 4.8-33.6s25.6-5.8 33.6 4.8l27 36 61.4-98.3c7-11.2 21.8-14.7 33.1-7.6s14.7 21.8 7.6 33.1z\"]\n  };\n  var faCheckCircle = faCircleCheck;\n  var faIdCardClip = {\n    prefix: 'fas',\n    iconName: 'id-card-clip',\n    icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256-32l64 0c17.7 0 32 14.3 32 32l0 64-128 0 0-64c0-17.7 14.3-32 32-32zM64 32l112 0 0 32c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-32 112 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32zM176 400c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80zM288 280a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n  };\n  var faIdCardAlt = faIdCardClip;\n  var faMoon = {\n    prefix: 'fas',\n    iconName: 'moon',\n    icon: [512, 512, [127769, 9214], \"f186\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z\"]\n  };\n  var faOilWell = {\n    prefix: 'fas',\n    iconName: 'oil-well',\n    icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4-108.2 28.1-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39-132.2 34.3 0-38.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 264-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-137.3 0-61.4-175.4-62.2 16.1 22.1 63.2-66.6 0 19.9-56.9-74.6 19.3-46.7 133.5-41.3 0 0-159.2 337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l16.8-48 100.2 0 16.8 48-133.8 0z\"]\n  };\n  var faTachographDigital = {\n    prefix: 'fas',\n    iconName: 'tachograph-digital',\n    icon: [576, 512, [\"digital-tachograph\"], \"f566\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 32c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 352c-13.3 0-24 10.7-24 24s10.7 24 24 24l136 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 352zm256 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zM496 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM88 312a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm104-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faDigitalTachograph = faTachographDigital;\n  var faTablet = {\n    prefix: 'fas',\n    iconName: 'tablet',\n    icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM184 400l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faTabletAndroid = faTablet;\n  var faRubleSign = {\n    prefix: 'fas',\n    iconName: 'ruble-sign',\n    icon: [448, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M112 32C94.3 32 80 46.3 80 64l0 208-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 48-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 152 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-152 0 0-48 112 0c79.5 0 144-64.5 144-144S335.5 32 256 32L112 32zM256 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n  };\n  var faRouble = faRubleSign;\n  var faRub = faRubleSign;\n  var faRuble = faRubleSign;\n  var faClosedCaptioning = {\n    prefix: 'fas',\n    iconName: 'closed-captioning',\n    icon: [512, 512, [], \"f20a\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm152 80l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80c0-4.4 3.6-8 8-8zm168 8c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80z\"]\n  };\n  var faPen = {\n    prefix: 'fas',\n    iconName: 'pen',\n    icon: [512, 512, [128394], \"f304\", \"M352.9 21.2L308 66.1 445.9 204 490.8 159.1C504.4 145.6 512 127.2 512 108s-7.6-37.6-21.2-51.1L455.1 21.2C441.6 7.6 423.2 0 404 0s-37.6 7.6-51.1 21.2zM274.1 100L58.9 315.1c-10.7 10.7-18.5 24.1-22.6 38.7L.9 481.6c-2.3 8.3 0 17.3 6.2 23.4s15.1 8.5 23.4 6.2l127.8-35.5c14.6-4.1 27.9-11.8 38.7-22.6L412 237.9 274.1 100z\"]\n  };\n  var faPlane = {\n    prefix: 'fas',\n    iconName: 'plane',\n    icon: [576, 512, [], \"f072\", \"M520 200c30.9 0 56 25.1 56 56s-25.1 56-56 56l-127.3 0-159.2 173.6c-6.1 6.6-14.6 10.4-23.6 10.4l-43.7 0c-10.9 0-18.6-10.7-15.2-21.1l54.3-162.9-99.7 0-52.8 66c-3 3.8-7.6 6-12.5 6l-19.8 0c-10.4 0-18-9.8-15.5-19.9L32 256 5 147.9C2.4 137.8 10.1 128 20.5 128l19.8 0c4.9 0 9.5 2.2 12.5 6l52.8 66 99.7 0-54.3-162.9C147.6 26.7 155.3 16 166.2 16l43.7 0c9 0 17.5 3.8 23.6 10.4L392.7 200 520 200z\"]\n  };\n  var faImages = {\n    prefix: 'fas',\n    iconName: 'images',\n    icon: [576, 512, [], \"f302\", \"M96 96c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64L96 96zM24 128c13.3 0 24 10.7 24 24l0 296c0 8.8 7.2 16 16 16l360 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L64 512c-35.3 0-64-28.7-64-64L0 152c0-13.3 10.7-24 24-24zm168 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm196.5 11.5c-4.4-7.1-12.1-11.5-20.5-11.5s-16.1 4.4-20.5 11.5l-56.3 92.1-24.5-30.6c-4.6-5.7-11.4-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S174.8 352 184 352l272 0c8.7 0 16.7-4.7 20.9-12.3s4.1-16.8-.5-24.3l-88-144z\"]\n  };\n  var faMobileScreen = {\n    prefix: 'fas',\n    iconName: 'mobile-screen',\n    icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM128 440c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0c-13.3 0-24 10.7-24 24zM304 64l-224 0 0 304 224 0 0-304z\"]\n  };\n  var faMobileAndroidAlt = faMobileScreen;\n  var faGuaraniSign = {\n    prefix: 'fas',\n    iconName: 'guarani-sign',\n    icon: [384, 512, [], \"e19a\", \"M192 0c-13.3 0-24 10.7-24 24l0 41.5C73.3 77.3 0 158.1 0 256S73.3 434.7 168 446.5l0 41.5c0 13.3 10.7 24 24 24s24-10.7 24-24l0-41.5c94.7-11.8 168-92.6 168-190.5 0-17.7-14.3-32-32-32l-136 0 0-93.8c25.3 4.8 47.9 17 65.6 34.3 12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C297.2 90.2 258.8 70.8 216 65.5L216 24c0-13.3-10.7-24-24-24zM168 130.2l0 251.5C108.8 370.5 64 318.5 64 256s44.8-114.5 104-125.8zm48 251.5l0-93.8 100 0c-12.3 47.6-51.2 84.5-100 93.8z\"]\n  };\n  var faBagShopping = {\n    prefix: 'fas',\n    iconName: 'bag-shopping',\n    icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 80c0-35.3 28.7-64 64-64s64 28.7 64 64l0 48-128 0 0-48zm-48 48l-64 0c-26.5 0-48 21.5-48 48L0 384c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-208c0-26.5-21.5-48-48-48l-64 0 0-48c0-61.9-50.1-112-112-112S112 18.1 112 80l0 48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faShoppingBag = faBagShopping;\n  var faCircleRight = {\n    prefix: 'fas',\n    iconName: 'circle-right',\n    icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0 256 256 0 1 0 -512 0zm387.3 11.3l-104 104c-4.6 4.6-11.5 5.9-17.4 3.5S256 366.5 256 360l0-56-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-56c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l104 104c6.2 6.2 6.2 16.4 0 22.6z\"]\n  };\n  var faArrowAltCircleRight = faCircleRight;\n  var faPhoneVolume = {\n    prefix: 'fas',\n    iconName: 'phone-volume',\n    icon: [576, 512, [\"volume-control-phone\"], \"f2a0\", \"M344-32c128.1 0 232 103.9 232 232 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM320 88c0-13.3 10.7-24 24-24 75.1 0 136 60.9 136 136 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88-13.3 0-24-10.7-24-24zM144.1 1.4c19.7-5.4 40.3 4.7 48.1 23.5l40.5 97.3c6.9 16.5 2.1 35.6-11.8 47l-44.1 36.1c32.5 71.6 89 130 159.3 164.9L374.7 323c11.3-13.9 30.4-18.6 47-11.8L519 351.8c18.8 7.8 28.9 28.4 23.5 48.1l-1.5 5.5C523.4 470.1 460.9 525.3 384.6 509.2 209.6 472.1 71.9 334.4 34.8 159.4 18.7 83.1 73.9 20.6 138.5 2.9l5.5-1.5z\"]\n  };\n  var faVolumeControlPhone = faPhoneVolume;\n  var faCubes = {\n    prefix: 'fas',\n    iconName: 'cubes',\n    icon: [512, 512, [], \"f1b3\", \"M284-1.3c-17.3-10-38.7-10-56 0L143.8 47.3c-17.3 10-28 28.5-28 48.5l0 101.9-88.3 51c-17.3 10-28 28.5-28 48.5l0 97.3c0 20 10.7 38.5 28 48.5l84.3 48.6c17.3 10 38.7 10 56 0l88.3-51 88.3 51c17.3 10 38.7 10 56 0L484.5 443c17.3-10 28-28.5 28-48.5l0-97.3c0-20-10.7-38.5-28-48.5l-88.3-51 0-101.9c0-20-10.7-38.5-28-48.5L284-1.3zM232 292.6l0 106.5-88.3 51c-1.2 .7-2.6 1.1-4 1.1l0-105.3 92.3-53.3zm231.4 .6c.7 1.2 1.1 2.6 1.1 4l0 97.3c0 2.9-1.5 5.5-4 6.9l-84.3 48.6c-1.2 .7-2.6 1.1-4 1.1l0-105.3 91.2-52.6zM348.3 95.8l0 101.9-92.3 53.3 0-106.5 91.2-52.6c.7 1.2 1.1 2.6 1.1 4z\"]\n  };\n  var faPhone = {\n    prefix: 'fas',\n    iconName: 'phone',\n    icon: [512, 512, [128222, 128379], \"f095\", \"M160.2 25C152.3 6.1 131.7-3.9 112.1 1.4l-5.5 1.5c-64.6 17.6-119.8 80.2-103.7 156.4 37.1 175 174.8 312.7 349.8 349.8 76.3 16.2 138.8-39.1 156.4-103.7l1.5-5.5c5.4-19.7-4.7-40.3-23.5-48.1l-97.3-40.5c-16.5-6.9-35.6-2.1-47 11.8l-38.6 47.2C233.9 335.4 177.3 277 144.8 205.3L189 169.3c13.9-11.3 18.6-30.4 11.8-47L160.2 25z\"]\n  };\n  var faToriiGate = {\n    prefix: 'fas',\n    iconName: 'torii-gate',\n    icon: [448, 512, [9961], \"f6a1\", \"M0 96L0 28.5C0 21.6 5.6 16 12.5 16 14.8 16 17 16.6 19 17.8L58 41.2C82.9 56.1 111.3 64 140.3 64l167.4 0c29 0 57.5-7.9 82.3-22.8l39-23.4c1.9-1.2 4.2-1.8 6.4-1.8 6.9 0 12.5 5.6 12.5 12.5L448 96c0 35.3-28.7 64-64 64l0 64 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192-192 0 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-64C28.7 160 0 131.3 0 96zM128 224l64 0 0-64-64 0 0 64zm128 0l64 0 0-64-64 0 0 64z\"]\n  };\n  var faBacon = {\n    prefix: 'fas',\n    iconName: 'bacon',\n    icon: [576, 512, [129363], \"f7e5\", \"M557 96.7c14.4 14.4 12.4 38.4-4.3 50.2l-64.6 45.7c-43.7 30.9-79.2 71.9-103.4 119.6l-25.3 49.8c-25.1 49.3-62.1 91.5-107.8 122.6l-74.1 50.6c-13.1 8.9-30.7 7.3-41.8-3.9l-44.9-44.9 86.5-66.5c42.3-32.5 76.7-74.3 100.6-122l24.5-49.1c24.5-49 61.8-90.6 107.9-120.2l108.7-69.9 38 38zM484.2 23.9L384.3 88.2c-53.4 34.3-96.5 82.4-124.9 139.1l-24.5 49.1c-20.6 41.3-50.3 77.3-86.9 105.4l-91.4 70.3-36.9-36.9c-14.4-14.4-12.4-38.4 4.3-50.2l64.6-45.7c43.7-30.9 79.2-71.9 103.4-119.6l25.3-49.8C242.3 100.8 279.3 58.6 325 27.4l74.1-50.6c13.1-8.9 30.6-7.3 41.8 3.9l43.3 43.3z\"]\n  };\n  var faPersonFallingBurst = {\n    prefix: 'fas',\n    iconName: 'person-falling-burst',\n    icon: [576, 512, [], \"e547\", \"M256 0c17.7 0 32 14.3 32 32l0 5.4c0 55.2-23.7 107-63.9 143.1l62.9 75.5 89 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L368 320 263.2 320 376.8 459.8c11.1 13.7 9.1 33.9-4.7 45s-33.9 9.1-45-4.7L137.4 266.6c-6.1 15-9.4 31.3-9.4 48l0 69.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-69.4c0-67.4 35.4-129.9 93.2-164.6l4.6-2.8C200.4 124 224 82.4 224 37.4l0-5.4c0-17.7 14.3-32 32-32zM16 88A56 56 0 1 1 128 88 56 56 0 1 1 16 88zm376-7.9c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24l0 48zm104 152c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0zm-54.5-97.5c-9.4-9.4-9.4-24.6 0-33.9l33.9-33.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-33.9 33.9c-9.4 9.4-24.6 9.4-33.9 0z\"]\n  };\n  var faQuoteRight = {\n    prefix: 'fas',\n    iconName: 'quote-right',\n    icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 136zm-256 0c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 136z\"]\n  };\n  var faQuoteRightAlt = faQuoteRight;\n  var faHouseMedicalFlag = {\n    prefix: 'fas',\n    iconName: 'house-medical-flag',\n    icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0 0 288c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM267.5 59.1L400 186.9 400 503.4c-9.4 5.4-20.3 8.6-32 8.6l-256 0c-35.3 0-64-28.7-64-64l0-144-19.9 0C12.6 304 0 291.4 0 275.9 0 268.3 3.1 261 8.6 255.7L212.5 59.1C219.9 52 229.7 48 240 48s20.1 4 27.5 11.1zM204.8 256.8l0 44-44 0c-9.7 0-17.6 7.9-17.6 17.6l0 35.2c0 9.7 7.9 17.6 17.6 17.6l44 0 0 44c0 9.7 7.9 17.6 17.6 17.6l35.2 0c9.7 0 17.6-7.9 17.6-17.6l0-44 44 0c9.7 0 17.6-7.9 17.6-17.6l0-35.2c0-9.7-7.9-17.6-17.6-17.6l-44 0 0-44c0-9.7-7.9-17.6-17.6-17.6l-35.2 0c-9.7 0-17.6 7.9-17.6 17.6z\"]\n  };\n  var faPrescription = {\n    prefix: 'fas',\n    iconName: 'prescription',\n    icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32L0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 50.7 0 128 128-105.4 105.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7 202.2 220.9C251.4 209.1 288 164.8 288 112 288 50.1 237.9 0 176 0L32 0zM176 160l-112 0 0-96 112 0c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n  };\n  var faDiceThree = {\n    prefix: 'fas',\n    iconName: 'dice-three',\n    icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faBuildingLock = {\n    prefix: 'fas',\n    iconName: 'building-lock',\n    icon: [576, 512, [], \"e4d6\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 121.3c-46.9 19-80 65-80 118.7l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L96 512c-35.3 0-64-28.7-64-64L32 64zM176 384l0 80 80 0 0-64.1c0-13.7 1.9-27 5.5-39.6-5.7-5.2-13.2-8.3-21.5-8.3l-32 0c-17.7 0-32 14.3-32 32zM307 224.3c-1-.2-2-.3-3-.3l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l16.7 0c2.1-22.8 8.4-44.3 18.3-63.7zM144 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM144 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm352 80.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faIdCard = {\n    prefix: 'fas',\n    iconName: 'id-card',\n    icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64L0 96zm0 48l576 0 0 272c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 144zM247.3 416c20.2 0 35.3-19.4 22.4-35-14.7-17.7-36.9-29-61.7-29l-64 0c-24.8 0-47 11.3-61.7 29-12.9 15.6 2.2 35 22.4 35l142.5 0zM176 312a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM360 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z\"]\n  };\n  var faDriversLicense = faIdCard;\n  var faCirclePlay = {\n    prefix: 'fas',\n    iconName: 'circle-play',\n    icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n  };\n  var faPlayCircle = faCirclePlay;\n  var faFaceLaughBeam = {\n    prefix: 'fas',\n    iconName: 'face-laugh-beam',\n    icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26l265.4 0c14.2 0 25.4 12.3 21.7 26-18.5 68-80.6 118-154.4 118S120 382 101.6 314zM176 164c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n  };\n  var faLaughBeam = faFaceLaughBeam;\n  var faLeaf = {\n    prefix: 'fas',\n    iconName: 'leaf',\n    icon: [512, 512, [], \"f06c\", \"M471.3 6.7C477.7 .6 487-1.6 495.6 1.2 505.4 4.5 512 13.7 512 24l0 186.9c0 131.2-108.1 237.1-238.8 237.1-77 0-143.4-49.5-167.5-118.7-35.4 30.8-57.7 76.1-57.7 126.7 0 13.3-10.7 24-24 24S0 469.3 0 456C0 381.1 38.2 315.1 96.1 276.3 131.4 252.7 173.5 240 216 240l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0c-39.7 0-77.3 8.8-111 24.5 23.3-70 89.2-120.5 167-120.5 66.4 0 115.8-22.1 148.7-44 19.2-12.8 35.5-28.1 50.7-45.3z\"]\n  };\n  var faHouseChimneyUser = {\n    prefix: 'fas',\n    iconName: 'house-chimney-user',\n    icon: [512, 512, [], \"e065\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM312 256a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM144 432c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80z\"]\n  };\n  var faRotateRight = {\n    prefix: 'fas',\n    iconName: 'rotate-right',\n    icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M488 192l-144 0c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l46.7-46.7c-75.3-58.6-184.3-53.3-253.5 15.9-75 75-75 196.5 0 271.5s196.5 75 271.5 0c8.2-8.2 15.5-16.9 21.9-26.1 10.1-14.5 30.1-18 44.6-7.9s18 30.1 7.9 44.6c-8.5 12.2-18.2 23.8-29.1 34.7-100 100-262.1 100-362 0S-25 175 75 75c94.3-94.3 243.7-99.6 344.3-16.2L471 7c6.9-6.9 17.2-8.9 26.2-5.2S512 14.3 512 24l0 144c0 13.3-10.7 24-24 24z\"]\n  };\n  var faRedoAlt = faRotateRight;\n  var faRotateForward = faRotateRight;\n  var faTooth = {\n    prefix: 'fas',\n    iconName: 'tooth',\n    icon: [448, 512, [129463], \"f5c9\", \"M145 5.7L224 32 303 5.7C314.3 1.9 326 0 337.9 0 398.7 0 448 49.3 448 110.1l0 68.5c0 29.4-9.5 58.1-27.2 81.6l-1.1 1.5c-12.9 17.2-21.3 37.4-24.3 58.7L373.7 471.9c-3.3 23-23 40.1-46.2 40.1-22.8 0-42.3-16.5-46-39L261.3 351.6c-3-18.2-18.8-31.6-37.3-31.6s-34.2 13.4-37.3 31.6L166.5 473c-3.8 22.5-23.2 39-46 39-23.2 0-42.9-17.1-46.2-40.1L52.6 320.5c-3-21.3-11.4-41.5-24.3-58.7l-1.1-1.5C9.5 236.7 0 208.1 0 178.7l0-68.5C0 49.3 49.3 0 110.1 0 122 0 133.7 1.9 145 5.7z\"]\n  };\n  var faHouseChimneyWindow = {\n    prefix: 'fas',\n    iconName: 'house-chimney-window',\n    icon: [512, 512, [], \"e00d\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM216 224c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-80 0z\"]\n  };\n  var faMotorcycle = {\n    prefix: 'fas',\n    iconName: 'motorcycle',\n    icon: [640, 512, [127949], \"f21c\", \"M280 16c-13.3 0-24 10.7-24 24s10.7 24 24 24l56.6 0 22.5 48.7-95.1 71.3c-33.4-25.1-75-40-120-40l-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c78.5 0 143.2 59.6 151.2 136l-25.4 0c-11.2-59.2-63.3-104-125.8-104-70.7 0-128 57.3-128 128S73.3 480 144 480c62.5 0 114.5-44.8 125.8-104l50.2 0c13.3 0 24-10.7 24-24l0-22.5c0-45.1 25.7-85.4 65.5-107.7l12.1 26.1c-32.4 23.2-53.5 61.2-53.5 104.1 0 70.7 57.3 128 128 128s128-57.3 128-128-57.3-128-128-128c-10.7 0-21 1.3-30.9 3.8L433.8 160 488 160c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-53.3 0c-6.9 0-13.7 2.2-19.2 6.4l-17.1 12.8-24.6-53.3C369.9 21.4 361.4 16 352 16l-72 0zM445.8 300.4l28.4 61.6c5.6 12 19.8 17.3 31.8 11.7s17.3-19.8 11.7-31.8l-28.5-61.6c2.2-.2 4.4-.3 6.7-.3 39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72c0-20.2 8.3-38.5 21.8-51.6zM144 424c-39.8 0-72-32.2-72-72s32.2-72 72-72c31.3 0 58 20 67.9 48L144 328c-13.3 0-24 10.7-24 24s10.7 24 24 24l67.9 0c-9.9 28-36.6 48-67.9 48z\"]\n  };\n  var faBackwardFast = {\n    prefix: 'fas',\n    iconName: 'backward-fast',\n    icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M492.2 477.6c-12 5-25.7 2.2-34.9-6.9L288 301.3 288 448c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9L64 301.3 64 448c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 46.3 14.3 32 32 32S64 46.3 64 64L64 210.7 233.4 41.4c9.2-9.2 22.9-11.9 34.9-6.9S288 51.1 288 64l0 146.7 169.4-169.4c9.2-9.2 22.9-11.9 34.9-6.9S512 51.1 512 64l0 384c0 12.9-7.8 24.6-19.8 29.6z\"]\n  };\n  var faFastBackward = faBackwardFast;\n  var faAddressBook = {\n    prefix: 'fas',\n    iconName: 'address-book',\n    icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM208 288l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-24-96a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zm0 128c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 320c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16z\"]\n  };\n  var faContactBook = faAddressBook;\n  var faSailboat = {\n    prefix: 'fas',\n    iconName: 'sailboat',\n    icon: [512, 512, [], \"e445\", \"M240 35.9l0 348.1-224 0c-8.8 0-16 7.2-16 16 0 61.9 50.1 112 112 112l288 0c61.9 0 112-50.1 112-112 0-8.8-7.2-16-16-16l-208 0 0-48 161.7 0c12.9 0 20.5-14.4 13.2-25L269.2 26.9c-8.9-13-29.2-6.7-29.2 9zM192 320l0-184.2c0-16.1-21-22.1-29.6-8.5L47.3 311.5c-6.7 10.7 1 24.5 13.6 24.5L176 336c8.8 0 16-7.2 16-16z\"]\n  };\n  var faBookBookmark = {\n    prefix: 'fas',\n    iconName: 'book-bookmark',\n    icon: [448, 512, [], \"e0bb\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48l-48 0 0 169.4c0 12.5-10.1 22.6-22.6 22.6-6 0-11.8-2.4-16-6.6L272 144 230.6 185.4c-4.2 4.2-10 6.6-16 6.6-12.5 0-22.6-10.1-22.6-22.6L192 0 96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faMagnifyingGlassArrowRight = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass-arrow-right',\n    icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM305 225c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-102.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l102.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72z\"]\n  };\n  var faMicrophoneLines = {\n    prefix: 'fas',\n    iconName: 'microphone-lines',\n    icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96c0-53 43-96 96-96 50.3 0 91.6 38.7 95.7 88L232 88c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0 0 48-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l55.7 0c-4.1 49.3-45.3 88-95.7 88-53 0-96-43-96-96L96 96zM24 160c13.3 0 24 10.7 24 24l0 40c0 79.5 64.5 144 144 144s144-64.5 144-144l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 97.9-73.3 178.7-168 190.5l0 49.5 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-49.5C73.3 402.7 0 321.9 0 224l0-40c0-13.3 10.7-24 24-24z\"]\n  };\n  var faMicrophoneAlt = faMicrophoneLines;\n  var faReplyAll = {\n    prefix: 'fas',\n    iconName: 'reply-all',\n    icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M332.2 18.4c12 5 19.8 16.6 19.8 29.6l0 80 48 0c97.2 0 176 78.8 176 176 0 113.3-81.5 163.9-100.2 174.1-2.5 1.4-5.3 1.9-8.1 1.9-10.9 0-19.7-8.9-19.7-19.7 0-7.5 4.3-14.4 9.8-19.5 9.4-8.8 22.2-26.4 22.2-56.7 0-53-43-96-96-96l-32 0 0 80c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-160-160c-12.5-12.5-12.5-32.8 0-45.3l160-160c9.2-9.2 22.9-11.9 34.9-6.9zM205.6 23.1c9.4 9.4 9.4 24.6 0 33.9L54.6 208 205.6 358.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L10 231.2c-6.4-6-10-14.4-10-23.2s3.6-17.2 10-23.2L171.6 23.1c9.4-9.4 24.6-9.4 33.9 0z\"]\n  };\n  var faMailReplyAll = faReplyAll;\n  var faUniversalAccess = {\n    prefix: 'fas',\n    iconName: 'universal-access',\n    icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2S339 397 334.8 384.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n  };\n  var faToiletPaper = {\n    prefix: 'fas',\n    iconName: 'toilet-paper',\n    icon: [512, 512, [129531, 63263, \"toilet-paper-alt\", \"toilet-paper-blank\"], \"f71e\", \"M327.1 32c-8.8 11.1-16 23.1-21.9 34.8-21.4 42.7-33.2 98.4-33.2 157.2l0 264c0 30.9-25.1 56-56 56L56 544c-30.9 0-56-25.1-56-56L0 224C0 118 43 32 96 32l231.1 0zM416 416c-53 0-96-86-96-192s43-192 96-192 96 86 96 192-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64-32 28.7-32 64 14.3 64 32 64z\"]\n  };\n  var faToiletPaperAlt = faToiletPaper;\n  var faToiletPaperBlank = faToiletPaper;\n  var faVrCardboard = {\n    prefix: 'fas',\n    iconName: 'vr-cardboard',\n    icon: [576, 512, [], \"f729\", \"M512 96L64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l117.5 0c17 0 33.3-6.7 45.3-18.7l33.9-33.9c7.2-7.2 17.1-11.3 27.3-11.3s20.1 4.1 27.3 11.3l33.9 33.9c12 12 28.3 18.7 45.3 18.7L512 416c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64zM80 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm352-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n  };\n  var faPizzaSlice = {\n    prefix: 'fas',\n    iconName: 'pizza-slice',\n    icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L112.5 72C293.3 72.3 439.7 218.7 440 399.5l36.4-9.7c20.8-5.5 36.3-24.7 34.7-47.5-12.6-182.8-158.6-328.8-341.4-341.4zm222 411.5c.2-4.1 .3-8.2 .3-12.4 0-154.6-125.4-280-280-280-4.1 0-8.3 .1-12.4 .3L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1l371.6-99.1zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faSprayCan = {\n    prefix: 'fas',\n    iconName: 'spray-can',\n    icon: [576, 512, [], \"f5bd\", \"M192 0l64 0c17.7 0 32 14.3 32 32l0 80-128 0 0-80c0-17.7 14.3-32 32-32zM64 256c0-53 43-96 96-96l128 0c53 0 96 43 96 96l0 208c0 26.5-21.5 48-48 48l-224 0c-26.5 0-48-21.5-48-48l0-208zm240 80a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM320 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM448 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM512 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM448 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faVolumeLow = {\n    prefix: 'fas',\n    iconName: 'volume-low',\n    icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM380.6 181.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C361.1 227.6 368 241 368 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C402.1 312.9 416 286.1 416 256s-13.9-56.9-35.5-74.5z\"]\n  };\n  var faVolumeDown = faVolumeLow;\n  var faCross = {\n    prefix: 'fas',\n    iconName: 'cross',\n    icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48l0 80-80 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l80 0 0 208c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-208 80 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-80 0 0-80c0-26.5-21.5-48-48-48L176 0z\"]\n  };\n  var faPerson = {\n    prefix: 'fas',\n    iconName: 'person',\n    icon: [384, 512, [129485, \"male\"], \"f183\", \"M248 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7l46.3 62.4c10.5 14.2 30.6 17.2 44.8 6.6s17.2-30.6 6.6-44.8l-70.5-95C274 132 234.3 112 192 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L112 236.7 112 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3z\"]\n  };\n  var faMale = faPerson;\n  var faHourglass = {\n    prefix: 'fas',\n    iconName: 'hourglass',\n    icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 11c0 42.4-16.9 83.1-46.9 113.1l-67.9 67.9 67.9 67.9c30 30 46.9 70.7 46.9 113.1l0 11c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-11c0-42.4 16.9-83.1 46.9-113.1l67.9-67.9-67.9-67.9C48.9 158.1 32 117.4 32 75l0-11C14.3 64 0 49.7 0 32zM96 64l0 11c0 25.5 10.1 49.9 28.1 67.9l67.9 67.9 67.9-67.9c18-18 28.1-42.4 28.1-67.9l0-11-192 0zm0 384l192 0 0-11c0-25.5-10.1-49.9-28.1-67.9l-67.9-67.9-67.9 67.9c-18 18-28.1 42.4-28.1 67.9l0 11z\"]\n  };\n  var faHourglassEmpty = faHourglass;\n  var faFish = {\n    prefix: 'fas',\n    iconName: 'fish',\n    icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8 4.7 9.2 4.7 20.1 0 29.3-14.1 27.4-41.9 66.8-81 99.8-39.2 33.1-92 61.5-155.5 61.5s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9s-12.4-26-5.3-38.6L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faDrumstickBite = {\n    prefix: 'fas',\n    iconName: 'drumstick-bite',\n    icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2-4.6-1.1-9.5-1.8-14.5-1.8-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12 0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4l89.2 0c6.3 0 12.4-.3 18.5-1 11.9-1.2 16.4-15.5 10.8-26-8.5-15.8-13.3-33.8-13.3-53 0-61.9 50.1-112 112-112 8 0 15.7 .8 23.2 2.4 11.7 2.5 24.1-5.9 22-17.6-14.7-82.3-86.7-144.8-173.2-144.8-97.2 0-176 78.8-176 176l0 89.2z\"]\n  };\n  var faChartSimple = {\n    prefix: 'fas',\n    iconName: 'chart-simple',\n    icon: [512, 512, [], \"e473\", \"M192 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM432 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z\"]\n  };\n  var faAtom = {\n    prefix: 'fas',\n    iconName: 'atom',\n    icon: [448, 512, [9883], \"f5d2\", \"M224 398.8c-11.8 5.1-23.4 9.7-34.9 13.5 16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM414 256c33 45.2 44.3 90.9 23.6 128-20.2 36.3-62.5 49.3-115.2 43.2-22 52.1-55.7 84.8-98.4 84.8s-76.4-32.7-98.4-84.8C72.9 433.3 30.6 420.3 10.4 384-10.3 346.9 1 301.2 34 256 1 210.8-10.3 165.1 10.4 128 30.6 91.7 72.9 78.7 125.6 84.8 147.6 32.7 181.2 0 224 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2 20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2 31.8 1.4 38.6-8.7 40.2-11.7 2.3-4.2 7-17.9-11.9-48.1-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2 7.6 6.1 14.8 12.3 21.6 18.6 18.9-30.2 14.2-44 11.9-48.1-1.6-2.9-8.4-13-40.2-11.7zM258.9 99.7C242.1 65.9 227.9 64 224 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5 11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2-31.8-1.4-38.6 8.7-40.2 11.7-2.3 4.2-7 17.9 11.9 48.1 6.8-6.3 14-12.5 21.6-18.6zM78.2 304.8c-18.9 30.2-14.2 44-11.9 48.1 1.6 2.9 8.4 13 40.2 11.7-2.8-13.1-5-26.9-6.7-41.2-7.6-6.1-14.8-12.3-21.6-18.6zM304 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faP = {\n    prefix: 'fas',\n    iconName: 'p',\n    icon: [320, 512, [112], \"50\", \"M0 64C0 46.3 14.3 32 32 32l128 0c88.4 0 160 71.6 160 160S248.4 352 160 352l-96 0 0 96c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96l-96 0 0 192z\"]\n  };\n  var faJetFighterUp = {\n    prefix: 'fas',\n    iconName: 'jet-fighter-up',\n    icon: [512, 512, [], \"e518\", \"M206.8 47.8C202.3 58.5 200 70 200 81.6l0 100.4-152 114 0-48c0-13.3-10.7-24-24-24S0 234.7 0 248L0 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 152 0 0 54.4-66 52.8c-3.8 3-6 7.6-6 12.5l0 24.3c0 8.8 7.2 16 16 16l88 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 88 0c8.8 0 16-7.2 16-16l0-24.3c0-4.9-2.2-9.5-6-12.5l-66-52.8 0-54.4 152 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-144c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48-152-114 0-100.4c0-11.6-2.3-23.1-6.8-33.8l-27.1-65C274.4-26.2 265.7-32 256-32s-18.4 5.8-22.2 14.8l-27.1 65z\"]\n  };\n  var faPlugCircleXmark = {\n    prefix: 'fas',\n    iconName: 'plug-circle-xmark',\n    icon: [640, 512, [], \"e560\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7z\"]\n  };\n  var faSheetPlastic = {\n    prefix: 'fas',\n    iconName: 'sheet-plastic',\n    icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64l149.5 0c17 0 33.3-6.7 45.3-18.7L365.3 386.7c12-12 18.7-28.3 18.7-45.3L384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448zm208 5.5l0-93.5c0-13.3 10.7-24 24-24l93.5 0-117.5 117.5zM153 105l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zm96 32L137 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L215 103c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n  };\n  var faV = {\n    prefix: 'fas',\n    iconName: 'v',\n    icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n  };\n  var faList = {\n    prefix: 'fas',\n    iconName: 'list',\n    icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24L40 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM16 232l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n  };\n  var faListSquares = faList;\n  var faSolarPanel = {\n    prefix: 'fas',\n    iconName: 'solar-panel',\n    icon: [576, 512, [], \"f5ba\", \"M121.8 32c-30 0-56 20.8-62.5 50.1L9.6 306.1C.7 346.1 31.1 384 72 384l184.1 0 0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64 184.1 0c40.9 0 71.4-37.9 62.5-77.9l-49.8-224C510.4 52.8 484.5 32 454.5 32L121.8 32zM245.6 96l85.2 0 7.3 88-99.8 0 7.3-88zm-55.5 88l-87.8 0 19.6-88 75.6 0-7.3 88zM91.6 232l94.5 0-7.3 88-106.7 0 19.6-88zm142.6 0l107.8 0 7.3 88-122.5 0 7.3-88zm156 0l94.5 0 19.6 88-106.7 0-7.3-88zM474 184l-87.8 0-7.3-88 75.6 0 19.6 88z\"]\n  };\n  var faLandMineOn = {\n    prefix: 'fas',\n    iconName: 'land-mine-on',\n    icon: [576, 512, [], \"e51b\", \"M312 0l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24L264 0c0-13.3 10.7-24 24-24s24 10.7 24 24zM160 288c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 32 80 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L80 512c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48l80 0 0-32zM12 114.7c7.4-11 22.3-14 33.3-6.7l96 64c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-96-64c-11-7.4-14-22.3-6.7-33.3zM530.7 108c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3l-96 64c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l96-64z\"]\n  };\n  var faHeadphones = {\n    prefix: 'fas',\n    iconName: 'headphones',\n    icon: [448, 512, [127911, 62863, \"headphones-alt\", \"headphones-simple\"], \"f025\", \"M64 224c0-88.4 71.6-160 160-160s160 71.6 160 160l0 37.5c-10-3.5-20.8-5.5-32-5.5l-16 0c-26.5 0-48 21.5-48 48l0 128c0 26.5 21.5 48 48 48l16 0c53 0 96-43 96-96l0-160C448 100.3 347.7 0 224 0S0 100.3 0 224L0 384c0 53 43 96 96 96l16 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-16 0c-11.2 0-22 1.9-32 5.5L64 224z\"]\n  };\n  var faHeadphonesAlt = faHeadphones;\n  var faHeadphonesSimple = faHeadphones;\n  var faBus = {\n    prefix: 'fas',\n    iconName: 'bus',\n    icon: [448, 512, [128653], \"f207\", \"M96 0C43 0 0 43 0 96L0 384c0 29.8 20.4 54.9 48 62l0 34c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 192 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-34c27.6-7.1 48-32.2 48-62l0-288c0-53-43-96-96-96L96 0zM64 176c0-17.7 14.3-32 32-32l104 0 0 112-104 0c-17.7 0-32-14.3-32-32l0-48zm184 80l0-112 104 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-104 0zM96 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm256 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM152 72c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24z\"]\n  };\n  var faFilePowerpoint = {\n    prefix: 'fas',\n    iconName: 'file-powerpoint',\n    icon: [384, 512, [], \"f1c4\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM152 256c-13.3 0-24 10.7-24 24l0 144c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 24 0c39.8 0 72-32.2 72-72s-32.2-72-72-72l-48 0zm48 96l-24 0 0-48 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n  };\n  var faQuoteLeft = {\n    prefix: 'fas',\n    iconName: 'quote-left',\n    icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64L0 216zm256 0c0-66.3 53.7-120 120-120l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-136z\"]\n  };\n  var faQuoteLeftAlt = faQuoteLeft;\n  var faChevronDown = {\n    prefix: 'fas',\n    iconName: 'chevron-down',\n    icon: [448, 512, [], \"f078\", \"M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n  };\n  var faEarthAsia = {\n    prefix: 'fas',\n    iconName: 'earth-asia',\n    icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M50 284.8c4.2 2.1 9 3.2 14 3.2l50.7 0c8.5 0 16.6 3.4 22.6 9.4l13.3 13.3c6 6 14.1 9.4 22.6 9.4l18.7 0c17.7 0 32-14.3 32-32l0-40c0-13.3 10.7-24 24-24s24-10.7 24-24l0-42.7c0-8.5 3.4-16.6 9.4-22.6l13.3-13.3c6-6 9.4-14.1 9.4-22.6L304 57c0-1.2-.1-2.3-.2-3.5-15.4-3.6-31.4-5.5-47.8-5.5-114.9 0-208 93.1-208 208 0 9.8 .7 19.4 2 28.8zm403.3 37.3c-3.2-1.4-6.7-2.1-10.5-2.1L432 320c-8.8 0-16-7.2-16-16s-7.2-16-16-16l-34.7 0c-8.5 0-16.6 3.4-22.6 9.4l-45.3 45.3c-6 6-9.4 14.1-9.4 22.6l0 18.7c0 17.7 14.3 32 32 32l18.7 0c8.5 0 16.6 3.4 22.6 9.4 2.2 2.2 4.7 4.1 7.3 5.5 39.3-25.4 69.5-63.6 84.6-108.8zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM128 368c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM272 256c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16zm48-112l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n  };\n  var faGlobeAsia = faEarthAsia;\n  var faCentSign = {\n    prefix: 'fas',\n    iconName: 'cent-sign',\n    icon: [384, 512, [], \"e3f5\", \"M208 0c17.7 0 32 14.3 32 32l0 25.4c43.6 5.2 83 24.5 113.3 53.1 12.9 12.1 13.4 32.4 1.3 45.2s-32.4 13.4-45.2 1.3c-24.4-23-57.2-37.1-93.3-37.1-75.1 0-136 60.9-136 136s60.9 136 136 136c36.2 0 69-14.1 93.3-37.1 12.9-12.1 33.1-11.5 45.2 1.3s11.5 33.1-1.3 45.2C323 430.1 283.6 449.4 240 454.6l0 25.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-28C84.7 433.5 16 352.8 16 256S84.7 78.5 176 60l0-28c0-17.7 14.3-32 32-32z\"]\n  };\n  var faShieldCat = {\n    prefix: 'fas',\n    iconName: 'shield-cat',\n    icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4l.2 0c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4l48 0c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3l.2 0c5.8 0 10.4 4.7 10.4 10.4L352 272c0 53-43 96-96 96s-96-43-96-96l0-117.6zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n  };\n  var faSchoolCircleCheck = {\n    prefix: 'fas',\n    iconName: 'school-circle-check',\n    icon: [640, 512, [], \"e56b\", \"M64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l276 0c-10.5-14.6-19-30.7-25.1-48l-90.9 0 0-88c0-22.1 17.9-40 40-40l48 0c1 0 1.9 0 2.9 .1 26.3-74.6 97.5-128.1 181.1-128.1 28.6 0 55.6 6.2 80 17.4l0-33.4c0-35.3-28.7-64-64-64l-64 0-127.9-115.1c-18.3-16.4-46-16.4-64.2 0L128 128 64 128zm64 240c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 256l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM288 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faMartiniGlass = {\n    prefix: 'fas',\n    iconName: 'martini-glass',\n    icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M2.4 51.8C7.4 39.8 19.1 32 32 32l448 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L288 301.3 288 448 352 448c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-146.7-214.6-214.6C.2 77.5-2.5 63.7 2.4 51.8zM354.7 144l48-48-293.5 0 48 48 197.5 0z\"]\n  };\n  var faGlassMartiniAlt = faMartiniGlass;\n  var faPlug = {\n    prefix: 'fas',\n    iconName: 'plug',\n    icon: [448, 512, [128268], \"f1e6\", \"M128-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64c0 95.1-69.2 174.1-160 189.3l0 66.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C101.2 398.1 32 319.1 32 224l0-64c-17.7 0-32-14.3-32-32S14.3 96 32 96l64 0 0-96c0-17.7 14.3-32 32-32z\"]\n  };\n  var faPanorama = {\n    prefix: 'fas',\n    iconName: 'panorama',\n    icon: [576, 512, [], \"e209\", \"M43.9 48C19.7 48 0 67.7 0 91.9L0 420.1c0 24.3 19.7 43.9 43.9 43.9 5.5 0 10.7-1 15.7-2.9 12.9-4.9 103.4-37.1 228.4-37.1s215.5 32.3 228.4 37.1c5 1.9 10.2 2.9 15.7 2.9 24.3 0 43.9-19.7 43.9-43.9l0-328.2c0-24.3-19.7-43.9-43.9-43.9-5.5 0-10.7 1-15.7 2.9-12.9 4.9-103.4 37.1-228.4 37.1S72.5 55.7 59.6 50.9C54.6 49 49.4 48 43.9 48zM72 176a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zm264.1-16c7.5 0 14.6 3.6 19.1 9.6L479.7 336.2c5.9 7.9 6.4 18.5 1.3 26.9s-14.8 12.8-24.5 11.1c-45.8-7.8-103.3-14.2-168.4-14.2-65.6 0-123.4 6.5-169.3 14.4-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L165.3 249c4.6-5.7 11.5-9 18.7-9s14.2 3.3 18.7 9l27.5 34.4 86.7-113.9c4.6-6 11.7-9.5 19.2-9.5z\"]\n  };\n  var faClockRotateLeft = {\n    prefix: 'fas',\n    iconName: 'clock-rotate-left',\n    icon: [576, 512, [\"history\"], \"f1da\", \"M288 64c106 0 192 86 192 192S394 448 288 448c-65.2 0-122.9-32.5-157.6-82.3-10.1-14.5-30.1-18-44.6-7.9s-18 30.1-7.9 44.6C124.1 468.6 201 512 288 512 429.4 512 544 397.4 544 256S429.4 0 288 0C202.3 0 126.5 42.1 80 106.7L80 80c0-17.7-14.3-32-32-32S16 62.3 16 80l0 112c0 17.7 14.3 32 32 32l24.6 0c.5 0 1 0 1.5 0l86 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-38.3 0C154.9 102.6 217 64 288 64zm24 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1z\"]\n  };\n  var faHistory = faClockRotateLeft;\n  var faJarWheat = {\n    prefix: 'fas',\n    iconName: 'jar-wheat',\n    icon: [320, 512, [], \"e517\", \"M32-8c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 16C42.7 16 32 5.3 32-8zM0 128C0 92.7 28.7 64 64 64l192 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128zm112 32l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8 0 32.1 26 58.2 58.2 58.2l75.6 0c32.1 0 58.2-26 58.2-58.2 0-3.2-2.6-5.8-5.8-5.8L208 160c-19.1 0-36.3 8.4-48 21.7-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8 0 32.1 26 58.2 58.2 58.2l75.6 0c32.1 0 58.2-26 58.2-58.2 0-3.2-2.6-5.8-5.8-5.8L208 256c-19.1 0-36.3 8.4-48 21.7zM112 352l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8 0 32.1 26 58.2 58.2 58.2l21.8 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 21.8 0c32.1 0 58.2-26 58.2-58.2 0-3.2-2.6-5.8-5.8-5.8L208 352c-19.1 0-36.3 8.4-48 21.7-11.7-13.3-28.9-21.7-48-21.7z\"]\n  };\n  var faCloudArrowDown = {\n    prefix: 'fas',\n    iconName: 'cloud-arrow-down',\n    icon: [576, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480c-79.5 0-144-64.5-144-144 0-63.4 41-117.2 97.9-136.5-1.3-7.7-1.9-15.5-1.9-23.5 0-79.5 64.5-144 144-144 55.4 0 103.5 31.3 127.6 77.1 14.2-8.3 30.8-13.1 48.4-13.1 53 0 96 43 96 96 0 15.7-3.8 30.6-10.5 43.7 44 20.3 74.5 64.7 74.5 116.3 0 70.7-57.3 128-128 128l-304 0zM377 313c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72z\"]\n  };\n  var faCloudDownload = faCloudArrowDown;\n  var faCloudDownloadAlt = faCloudArrowDown;\n  var faTruckRampBox = {\n    prefix: 'fas',\n    iconName: 'truck-ramp-box',\n    icon: [576, 512, [\"truck-loading\"], \"f4de\", \"M400 32c-44.2 0-80 35.8-80 80l0 248.2-297.2 89.2C5.9 454.4-3.7 472.3 1.4 489.2s22.9 26.5 39.8 21.5l315.5-94.6 43.7 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88l0-392-176 0zM528 424c0 22.1-17.9 40-40 40s-40-17.9-40-40 17.9-40 40-40c22.1 0 39.9 17.9 40 39.9l0 .1zM51.9 149.5C18.1 159.8-.9 195.6 9.4 229.4l28.1 91.8C47.8 355 83.6 374 117.4 363.7l91.8-28.1c33.8-10.3 52.8-46.1 42.5-79.9l-28.1-91.8c-10.3-33.8-46.1-52.8-79.9-42.5L51.9 149.5z\"]\n  };\n  var faTruckLoading = faTruckRampBox;\n  var faAngleDown = {\n    prefix: 'fas',\n    iconName: 'angle-down',\n    icon: [384, 512, [8964], \"f107\", \"M169.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 306.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n  };\n  var faPlugCircleCheck = {\n    prefix: 'fas',\n    iconName: 'plug-circle-check',\n    icon: [640, 512, [], \"e55c\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n  };\n  var faWindowMaximize = {\n    prefix: 'fas',\n    iconName: 'window-maximize',\n    icon: [512, 512, [128470], \"f2d0\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm24 64l336 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 176c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faHandsHoldingCircle = {\n    prefix: 'fas',\n    iconName: 'hands-holding-circle',\n    icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256 128 128 0 1 1 0-256zM40 64c22.1 0 40 17.9 40 40l0 160.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1 12.9-8.6 14.7-26.9 3.7-37.8-7.3-7.3-23.1-23.1-47.2-47.2-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c24.1 24.1 39.9 39.9 47.2 47.2l0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 221.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0c7.3-7.3 23.1-23.1 47.2-47.2 12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-24.1 24.1-39.9 39.9-47.2 47.2-11 11-9.2 29.2 3.7 37.8 9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3L560 104c0-22.1 17.9-40 40-40z\"]\n  };\n  var faLocationPin = {\n    prefix: 'fas',\n    iconName: 'location-pin',\n    icon: [384, 512, [\"map-marker\"], \"f041\", \"M192 0C86 0 0 84.4 0 188.6 0 307.9 120.2 450.9 170.4 505.4 182.2 518.2 201.8 518.2 213.6 505.4 263.8 450.9 384 307.9 384 188.6 384 84.4 298 0 192 0z\"]\n  };\n  var faMapMarker = faLocationPin;\n  var faBowlingBall = {\n    prefix: 'fas',\n    iconName: 'bowling-ball',\n    icon: [512, 512, [], \"f436\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faCartFlatbed = {\n    prefix: 'fas',\n    iconName: 'cart-flatbed',\n    icon: [576, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l16 0c8.8 0 16 7.2 16 16l0 288c0 39.8 29.1 72.8 67.1 79-2 5.3-3.1 11-3.1 17 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l197.5 0c-1.8 5-2.7 10.4-2.7 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l34.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-400 0c-8.8 0-16-7.2-16-16l0-288C128 35.8 92.2 0 48 0L32 0zM224 64c-26.5 0-48 21.5-48 48l0 176c0 26.5 21.5 48 48 48l240 0c26.5 0 48-21.5 48-48l0-176c0-26.5-21.5-48-48-48L224 64z\"]\n  };\n  var faDollyFlatbed = faCartFlatbed;\n  var faHouseUser = {\n    prefix: 'fas',\n    iconName: 'house-user',\n    icon: [512, 512, [\"home-user\"], \"e1b0\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM200 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM144 432c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16z\"]\n  };\n  var faHomeUser = faHouseUser;\n  var faGhost = {\n    prefix: 'fas',\n    iconName: 'ghost',\n    icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9C25.7 478.6 21.8 480 17.8 480 8 480 0 472 0 462.2L0 192C0 86 86 0 192 0S384 86 384 192l0 270.2c0 9.8-8 17.8-17.8 17.8-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faCommentNodes = {\n    prefix: 'fas',\n    iconName: 'comment-nodes',\n    icon: [640, 512, [], \"e696\", \"M480 208C503.7 208 525.6 215.3 543.7 227.9 536.9 100.9 425 0 288 0 146.6 0 32 107.5 32 240 32 294.3 51.2 344.3 83.6 384.5L34.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7c27.2 11.4 56.9 18.4 88.1 20.2 .1-18.9 4.9-38 15-55.5 17.1-29.7 45.8-48.5 77-54.2l9.2-16c-3.4-10.7-5.2-22-5.2-33.8 0-61.9 50.1-112 112-112zM328.6 448c-17.7 30.6-7.2 69.7 23.4 87.4s69.7 7.2 87.4-23.4c1.5-2.6 2.8-5.3 3.9-8l73.3 0c1.1 2.7 2.4 5.4 3.9 8 17.7 30.6 56.8 41.1 87.4 23.4s41.1-56.8 23.4-87.4c-13.4-23.2-39.1-34.8-64-31.4l-17.6-30.7c-11 11.7-25 20.6-40.6 25.6l16.5 28.9c-3.8 4.8-6.8 10-9 15.6l-73.4 0c-2.2-5.6-5.3-10.8-9-15.6l33-57.7c4.1 .8 8.4 1.3 12.8 1.3 35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64c0 13.4 4.1 25.8 11.2 36.1l-34.6 60.5c-25-3.4-50.6 8.3-64 31.4z\"]\n  };\n  var faPersonArrowDownToLine = {\n    prefix: 'fas',\n    iconName: 'person-arrow-down-to-line',\n    icon: [576, 512, [], \"e538\", \"M192-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM318.3 299.1l-46.3-62.4 0 243.3 272 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 544c-17.7 0-32-14.3-32-32s14.3-32 32-32l80 0 0-243.3-46.3 62.4c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C110 132 149.7 112 192 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6zM176 480l32 0 0-128c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 128zM566.6 166.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L432 146.7 432 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 146.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n  };\n  var faPlugCirclePlus = {\n    prefix: 'fas',\n    iconName: 'plug-circle-plus',\n    icon: [640, 512, [], \"e55f\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n  };\n  var faPersonSwimming = {\n    prefix: 'fas',\n    iconName: 'person-swimming',\n    icon: [640, 512, [127946, \"swimmer\"], \"f5c4\", \"M552 152a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM293.4 198.2l-88.6 73.9c1.1 0 2.2-.1 3.3-.1 33.1-.2 66.3 10.2 94.4 31.4 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 4.8 0 9.7 .2 14.5 .6-8.3-30-24.3-57.7-46.8-80.2-18.4-18.4-40.6-32.7-65-41.8l-68.6-25.7c-27.4-10.3-58-7.5-83.1 7.6l-53.5 32.1c-15.2 9.1-20.1 28.7-11 43.9s28.7 20.1 43.9 11L230 187.3c8.4-5 18.6-5.9 27.7-2.5l35.7 13.4zm110 181.9c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 386.3 17.6 394.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n  };\n  var faSwimmer = faPersonSwimming;\n  var faCommentDots = {\n    prefix: 'fas',\n    iconName: 'comment-dots',\n    icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faCommenting = faCommentDots;\n  var faChartPie = {\n    prefix: 'fas',\n    iconName: 'chart-pie',\n    icon: [576, 512, [\"pie-chart\"], \"f200\", \"M512.4 240l-176 0c-17.7 0-32-14.3-32-32l0-176c0-17.7 14.4-32.2 31.9-29.9 107 14.2 191.8 99 206 206 2.3 17.5-12.2 31.9-29.9 31.9zM222.6 37.2c18.1-3.8 33.8 11 33.8 29.5l0 197.3c0 5.6 2 11 5.5 15.3L394 438.7c11.7 14.1 9.2 35.4-6.9 44.1-34.1 18.6-73.2 29.2-114.7 29.2-132.5 0-240-107.5-240-240 0-115.5 81.5-211.9 190.2-234.8zM477.8 288l64 0c18.5 0 33.3 15.7 29.5 33.8-10.2 48.4-35 91.4-69.6 124.2-12.3 11.7-31.6 9.2-42.4-3.9L374.9 340.4c-17.3-20.9-2.4-52.4 24.6-52.4l78.2 0z\"]\n  };\n  var faPieChart = faChartPie;\n  var faFrog = {\n    prefix: 'fas',\n    iconName: 'frog',\n    icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9 0 21.8-11.7 41.9-30.7 52.7l-144.5 82.1 92.5 92.5 50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2 27.9-18.5 65.9-15.4 90.5 9.2 24.7 24.7 27.7 62.9 9 90.9-2.6 3.8-5.6 7.5-9 10.9L261.8 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480C28.7 480 0 451.3 0 416 0 249.6 127 112.9 289.3 97.5 296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faWineBottle = {\n    prefix: 'fas',\n    iconName: 'wine-bottle',\n    icon: [320, 512, [], \"f72f\", \"M80-32c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32 0 11.8-6.4 22.2-16 27.7l0 145.6c56.5 24.7 96 81.1 96 146.7l0 224c0 35.3-28.7 64-64 64L64 576c-35.3 0-64-28.7-64-64L0 288c0-65.6 39.5-122 96-146.7L96-4.3C86.4-9.8 80-20.2 80-32zM96 288c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 288z\"]\n  };\n  var faInbox = {\n    prefix: 'fas',\n    iconName: 'inbox',\n    icon: [512, 512, [], \"f01c\", \"M91.8 32C59.9 32 32.9 55.4 28.4 86.9L.6 281.2c-.4 3-.6 6-.6 9.1L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-125.7c0-3-.2-6.1-.6-9.1L483.6 86.9C479.1 55.4 452.1 32 420.2 32L91.8 32zm0 64l328.5 0 27.4 192-59.9 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L64.3 288 91.8 96z\"]\n  };\n  var faSquareH = {\n    prefix: 'fas',\n    iconName: 'square-h',\n    icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM320 168l0 176c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64-96 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-176c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 96 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faHSquare = faSquareH;\n  var faHouseMedical = {\n    prefix: 'fas',\n    iconName: 'house-medical',\n    icon: [512, 512, [], \"e3b2\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM224 248c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faCircleChevronRight = {\n    prefix: 'fas',\n    iconName: 'circle-chevron-right',\n    icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0 256 256 0 1 0 -512 0zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n  };\n  var faChevronCircleRight = faCircleChevronRight;\n  var faFileCsv = {\n    prefix: 'fas',\n    iconName: 'file-csv',\n    icon: [576, 512, [], \"f6dd\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l80 0 0-112c0-35.3 28.7-64 64-64l176 0 0-165.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM264 380c-24.3 0-44 19.7-44 44l0 80c0 24.3 19.7 44 44 44l16 0c24.3 0 44-19.7 44-44l0-8c0-11-9-20-20-20s-20 9-20 20l0 8c0 2.2-1.8 4-4 4l-16 0c-2.2 0-4-1.8-4-4l0-80c0-2.2 1.8-4 4-4l16 0c2.2 0 4 1.8 4 4l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-24.3-19.7-44-44-44l-16 0zm136 0c-28.7 0-52 23.3-52 52s23.3 52 52 52c6.6 0 12 5.4 12 12s-5.4 12-12 12l-32 0c-11 0-20 9-20 20s9 20 20 20l32 0c28.7 0 52-23.3 52-52s-23.3-52-52-52c-6.6 0-12-5.4-12-12s5.4-12 12-12l24 0c11 0 20-9 20-20s-9-20-20-20l-24 0zm96 0c-11 0-20 9-20 20l0 31.6c0 35.5 10.5 70.3 30.2 99.8l5.1 7.7c3.7 5.6 10 8.9 16.6 8.9s12.9-3.3 16.6-8.9l5.1-7.7c19.7-29.6 30.2-64.3 30.2-99.8l0-31.6c0-11-9-20-20-20s-20 9-20 20l0 31.6c0 19.6-4.1 38.9-12 56.7-7.9-17.8-12-37.1-12-56.7l0-31.6c0-11-9-20-20-20z\"]\n  };\n  var faHatCowboy = {\n    prefix: 'fas',\n    iconName: 'hat-cowboy',\n    icon: [640, 512, [], \"f8c0\", \"M182.2 76.1L130.8 307.5C145.5 324.9 167.4 336 192 336l256 0c24.6 0 46.5-11.1 61.2-28.5L457.8 76.1c-5.7-25.8-28.6-44.1-55-44.1-12.2 0-24.1 4-33.8 11.3l-4.7 3.5c-26.3 19.7-62.4 19.7-88.6 0L271 43.3c-9.8-7.3-21.6-11.3-33.8-11.3-26.4 0-49.3 18.3-55 44.1zM64 256c0-17.7-14.3-32-32-32S0 238.3 0 256C0 362 86 448 192 448l256 0c106 0 192-86 192-192 0-17.7-14.3-32-32-32s-32 14.3-32 32c0 70.7-57.3 128-128 128l-256 0c-70.7 0-128-57.3-128-128z\"]\n  };\n  var faFaceGrinTongueWink = {\n    prefix: 'fas',\n    iconName: 'face-grin-tongue-wink',\n    icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M152.2 490.1C62.5 450.2 0 360.4 0 256 0 114.6 114.6 0 256 0S512 114.6 512 256c0 104.4-62.5 194.2-152.2 234.1 5.3-13 8.2-27.2 8.2-42.1l0-61.7c16.9-16.5 30.1-36.7 38.3-59.3 4.3-11.8-7.7-21.8-19.6-18.1-39.2 12.2-83.7 19.1-130.7 19.1s-91.5-6.9-130.7-19.1c-11.9-3.7-23.9 6.3-19.6 18.1 8.3 22.6 21.5 42.8 38.3 59.3l0 61.7c0 14.9 2.9 29.1 8.2 42.1zM152 212l16 0c11 0 20 9 20 20s9 20 20 20 20-9 20-20c0-33.1-26.9-60-60-60l-16 0c-33.1 0-60 26.9-60 60 0 11 9 20 20 20s20-9 20-20 9-20 20-20zm184 60a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6l0 45.4c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-45.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9 2.8 12.6 20.8 12.6 23.6 0 2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faGrinTongueWink = faFaceGrinTongueWink;\n  var faL = {\n    prefix: 'fas',\n    iconName: 'l',\n    icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32l0 352 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32z\"]\n  };\n  var faArrowDownShortWide = {\n    prefix: 'fas',\n    iconName: 'arrow-down-short-wide',\n    icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M246.6 374.6l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM320 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faSortAmountDesc = faArrowDownShortWide;\n  var faSortAmountDownAlt = faArrowDownShortWide;\n  var faHourglassHalf = {\n    prefix: 'fas',\n    iconName: 'hourglass-half',\n    icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1l67.9 67.9-67.9 67.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1l-67.9-67.9 67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32S369.7 0 352 0L32 0zM96 75l0-11 192 0 0 11c0 19-5.6 37.4-16 53L112 128c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9l67.9-67.9 67.9 67.9c4.6 4.6 8.6 9.6 12.2 14.9L112 384z\"]\n  };\n  var faHourglass2 = faHourglassHalf;\n  var faSpoon = {\n    prefix: 'fas',\n    iconName: 'spoon',\n    icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8 0-80.2 96-160.2 192-160.2 53 0 96 43 96 96 0 96-80 192-160.2 192-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n  };\n  var faUtensilSpoon = faSpoon;\n  var faCreditCard = {\n    prefix: 'fas',\n    iconName: 'credit-card',\n    icon: [512, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M0 128l0 32 512 0 0-32c0-35.3-28.7-64-64-64L64 64C28.7 64 0 92.7 0 128zm0 80L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-176-512 0zM64 360c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zm144 0c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24z\"]\n  };\n  var faCreditCardAlt = faCreditCard;\n  var faFileInvoiceDollar = {\n    prefix: 'fas',\n    iconName: 'file-invoice-dollar',\n    icon: [384, 512, [], \"f571\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM64 88c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64C74.7 64 64 74.7 64 88zm0 96c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm112 76l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L152 400c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20s-20 9-20 20z\"]\n  };\n  var faSpaghettiMonsterFlying = {\n    prefix: 'fas',\n    iconName: 'spaghetti-monster-flying',\n    icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3c-10-11.3-16-26.1-16-42.3 0-35.3 28.7-64 64-64s64 28.7 64 64-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4 7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4 10.7 11.7 16.1 13.4 19.4 13.4 2.5 0 4.3-.6 7.1-3.3 3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7 9.7-9.3 22.9-16.7 40.4-16.7 13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7-9.7 9.3-22.9 16.7-40.4 16.7-18.5 0-32.9-8.5-44.3-18.6-3.1 4-6.6 8.3-10.5 12.7 1.4 4.3 2.8 8.5 4 12.5 .9 3 1.8 5.8 2.6 8.6 3 9.8 5.5 18.2 8.6 25.9 3.9 9.8 7.4 15.4 10.8 18.5 2.6 2.4 5.9 4.3 12.8 4.3 8.7 0 16.9-4.2 33.7-13.2 15-8 35.7-18.8 62.3-18.8 13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2-1 .6-2.1 1.1-3.2 1.7-13.1 7.1-31.6 17.1-53.1 17.1-18.4 0-33.6-6.1-45.5-17.2-11.1-10.3-17.9-23.7-22.7-36-3.6-9-6.7-19.1-9.5-28.5-16.4 12.3-36.1 23.6-58.9 31.3 3.6 10.8 8.4 23.5 14.4 36.2 7.5 15.9 16.2 30.4 25.8 40.5 9.6 10.2 17.7 13.7 24.5 13.7 13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8-14.5-15.4-25.7-34.9-34.2-53-8-17-14.1-33.8-18.3-46.9-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9-8.5 18.1-19.8 37.6-34.2 53-14.4 15.3-34.3 28.8-59.5 28.8-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7 9.5-10.1 18.3-24.6 25.8-40.5 5.9-12.6 10.7-25.4 14.4-36.2-22.8-7.7-42.5-19-58.9-31.3-2.9 9.4-6 19.5-9.5 28.5-4.8 12.2-11.6 25.6-22.7 36-11.9 11.1-27.1 17.2-45.5 17.2-13.1 0-24.5-4.1-33.8-8.9-7.9-4-15.7-9.2-22.1-13.5l0 0-2.4-1.6c-15.3-10.2-25.8-16-37.7-16-13.3 0-24-10.7-24-24s10.7-24 24-24c28.1 0 49.6 14.2 64.3 24l2.4 1.6c6.9 4.6 12.1 8.1 17.2 10.7 5.5 2.8 9.1 3.6 12 3.6 6.8 0 10.2-1.9 12.8-4.3 3.4-3.2 7-8.8 10.8-18.5 3-7.7 5.6-16.1 8.6-25.9 .8-2.7 1.7-5.6 2.6-8.6 1.2-4 2.6-8.2 4-12.5-3.9-4.5-7.4-8.8-10.5-12.7-11.4 10.1-25.9 18.6-44.3 18.6-17.5 0-30.7-7.4-40.4-16.7-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4-2.8-2.7-4.6-3.3-7.1-3.3-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7 8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4 2.8 2.7 4.6 3.3 7.1 3.3 3.3 0 8.7-1.7 19.4-13.4 5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24 13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n  };\n  var faPastafarianism = faSpaghettiMonsterFlying;\n  var faMartiniGlassCitrus = {\n    prefix: 'fas',\n    iconName: 'martini-glass-citrus',\n    icon: [640, 512, [\"cocktail\"], \"f561\", \"M576 80c0-44.2-35.8-80-80-80-18 0-34.6 6-48 16l-81 0c23.6-47.4 72.5-80 129-80 79.5 0 144 64.5 144 144S575.5 224 496 224c-6.5 0-13-.4-19.3-1.3l64-74.7c1.1-1.3 2.2-2.7 3.3-4.1 19.4-14.6 32-37.8 32-64zM66.9 82.6C72.2 71.3 83.5 64 96 64l384 0c12.5 0 23.8 7.3 29.1 18.6s3.4 24.7-4.8 34.2l-184.3 215 0 116.2 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-116.2-184.3-215c-8.1-9.5-10-22.8-4.8-34.2zM165.6 128L288 270.8 410.4 128 165.6 128z\"]\n  };\n  var faCocktail = faMartiniGlassCitrus;\n  var faBullhorn = {\n    prefix: 'fas',\n    iconName: 'bullhorn',\n    icon: [512, 512, [128226, 128363], \"f0a1\", \"M461.2 18.9C472.7 24 480 35.4 480 48l0 416c0 12.6-7.3 24-18.8 29.1s-24.8 3.2-34.3-5.1l-46.6-40.7c-43.6-38.1-98.7-60.3-156.4-63l0 95.7c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96C57.3 384 0 326.7 0 256S57.3 128 128 128l84.5 0c61.8-.2 121.4-22.7 167.9-63.3l46.6-40.7c9.4-8.3 22.9-10.2 34.3-5.1zM224 320l0 .2c70.3 2.7 137.8 28.5 192 73.4l0-275.3c-54.2 44.9-121.7 70.7-192 73.4L224 320z\"]\n  };\n  var faBoxTissue = {\n    prefix: 'fas',\n    iconName: 'box-tissue',\n    icon: [512, 512, [], \"e05b\", \"M103.9 32l161 0c13.8 0 26 8.8 30.4 21.9l17.4 52.2c4.4 13.1 16.6 21.9 30.4 21.9l60.5 0c21.8 0 37.3 21.4 30.4 42.1L384 320 128 320 72.7 70.9C68.2 51 83.4 32 103.9 32zM48 256l16.6 0 16.5 74.4C86 352.4 105.5 368 128 368l256 0c20.7 0 39-13.2 45.5-32.8l26.4-79.2 8.1 0c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48L0 304c0-26.5 21.5-48 48-48z\"]\n  };\n  var faMattressPillow = {\n    prefix: 'fas',\n    iconName: 'mattress-pillow',\n    icon: [576, 512, [], \"e525\", \"M256 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l192 0 0-384zm48 384l208 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-208 0 0 384zM64 160c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-192z\"]\n  };\n  var faChevronLeft = {\n    prefix: 'fas',\n    iconName: 'chevron-left',\n    icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n  };\n  var faCloudMoonRain = {\n    prefix: 'fas',\n    iconName: 'cloud-moon-rain',\n    icon: [576, 512, [], \"f73c\", \"M448 0c-68.6 0-127.1 43.1-149.8 103.8 17.1 14.1 29.6 33.5 34.9 55.8 39.9 21.7 66.9 63.9 66.9 112.5 0 13.5-2.1 26.5-5.9 38.7 16.9 6 35 9.3 53.9 9.3 43 0 82.1-17 110.8-44.6 4.6-4.4 5.9-11.2 3.3-17s-8.6-9.3-14.9-8.8c-3 .2-6.1 .4-9.2 .4-63.5 0-115-51.5-115-115 0-45.1 26-84.2 63.8-103 5.7-2.8 9-8.9 8.2-15.2S489.6 5.3 483.4 3.9C472 1.4 460.2 0 448 0zM272 352c44.2 0 80-35.8 80-80 0-39-27.9-71.5-64.8-78.6 .5-3.1 .8-6.2 .8-9.4 0-30.9-25.1-56-56-56-12.4 0-23.9 4-33.1 10.8-13.4-25.5-40.1-42.8-70.9-42.8-44.2 0-80 35.8-80 80 0 7.4 1 14.6 2.9 21.5-29.8 11.6-50.9 40.6-50.9 74.5 0 44.2 35.8 80 80 80l192 0zM69 401.1c-12.6-4.2-26.2 2.6-30.4 15.2L17.2 480.4C13 493 19.8 506.6 32.4 510.8s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4zm120 0c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4zm120 0c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4z\"]\n  };\n  var faArrowDown19 = {\n    prefix: 'fas',\n    iconName: 'arrow-down-1-9',\n    icon: [512, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M418.7 38c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM365.1 430.6l11.7-18c-32.9-9.9-56.8-40.5-56.8-76.6 0-44.2 35.8-80 80-80s80 35.8 80 80c0 22.9-6.6 45.3-19.1 64.5l-42.1 64.9c-9.6 14.8-29.4 19.1-44.3 9.4s-19.1-29.4-9.4-44.3zM424 336a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM150.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-96 96z\"]\n  };\n  var faSortNumericAsc = faArrowDown19;\n  var faSortNumericDown = faArrowDown19;\n  var faHandSpock = {\n    prefix: 'fas',\n    iconName: 'hand-spock',\n    icon: [512, 512, [128406], \"f259\", \"M214.9 23.7C210.3 6.6 192.8-3.5 175.7 1.1s-27.2 22.1-22.6 39.2L206 237.8c2.5 9.2-4.5 18.2-14 18.2-6.4 0-12-4.2-13.9-10.3L134.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L67.6 283c-16-15.2-41.3-14.6-56.6 1.4S-3.6 325.7 12.4 341L124.8 448c43.1 41.1 100.4 64 160 64l19.1 0c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L411.5 247.1c-1.6 5.3-6.4 8.9-12 8.9-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L323.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n  };\n  var faWandMagicSparkles = {\n    prefix: 'fas',\n    iconName: 'wand-magic-sparkles',\n    icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M263.4-27L278.2 9.8 315 24.6c3 1.2 5 4.2 5 7.4s-2 6.2-5 7.4L278.2 54.2 263.4 91c-1.2 3-4.2 5-7.4 5s-6.2-2-7.4-5L233.8 54.2 197 39.4c-3-1.2-5-4.2-5-7.4s2-6.2 5-7.4L233.8 9.8 248.6-27c1.2-3 4.2-5 7.4-5s6.2 2 7.4 5zM110.7 41.7l21.5 50.1 50.1 21.5c5.9 2.5 9.7 8.3 9.7 14.7s-3.8 12.2-9.7 14.7l-50.1 21.5-21.5 50.1c-2.5 5.9-8.3 9.7-14.7 9.7s-12.2-3.8-14.7-9.7L59.8 164.2 9.7 142.7C3.8 140.2 0 134.4 0 128s3.8-12.2 9.7-14.7L59.8 91.8 81.3 41.7C83.8 35.8 89.6 32 96 32s12.2 3.8 14.7 9.7zM464 304c6.4 0 12.2 3.8 14.7 9.7l21.5 50.1 50.1 21.5c5.9 2.5 9.7 8.3 9.7 14.7s-3.8 12.2-9.7 14.7l-50.1 21.5-21.5 50.1c-2.5 5.9-8.3 9.7-14.7 9.7s-12.2-3.8-14.7-9.7l-21.5-50.1-50.1-21.5c-5.9-2.5-9.7-8.3-9.7-14.7s3.8-12.2 9.7-14.7l50.1-21.5 21.5-50.1c2.5-5.9 8.3-9.7 14.7-9.7zM460 0c11 0 21.6 4.4 29.5 12.2l42.3 42.3C539.6 62.4 544 73 544 84s-4.4 21.6-12.2 29.5l-88.2 88.2-101.3-101.3 88.2-88.2C438.4 4.4 449 0 460 0zM44.2 398.5L308.4 134.3 409.7 235.6 145.5 499.8C137.6 507.6 127 512 116 512s-21.6-4.4-29.5-12.2L44.2 457.5C36.4 449.6 32 439 32 428s4.4-21.6 12.2-29.5z\"]\n  };\n  var faMagicWandSparkles = faWandMagicSparkles;\n  var faCommentMedical = {\n    prefix: 'fas',\n    iconName: 'comment-medical',\n    icon: [512, 512, [], \"f7f5\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zM217.6 153.6c0-10.6 8.6-19.2 19.2-19.2l38.4 0c10.6 0 19.2 8.6 19.2 19.2l0 48 48 0c10.6 0 19.2 8.6 19.2 19.2l0 38.4c0 10.6-8.6 19.2-19.2 19.2l-48 0 0 48c0 10.6-8.6 19.2-19.2 19.2l-38.4 0c-10.6 0-19.2-8.6-19.2-19.2l0-48-48 0c-10.6 0-19.2-8.6-19.2-19.2l0-38.4c0-10.6 8.6-19.2 19.2-19.2l48 0 0-48z\"]\n  };\n  var faBellSlash = {\n    prefix: 'fas',\n    iconName: 'bell-slash',\n    icon: [576, 512, [128277, 61943], \"f1f6\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-87.5-87.5c17.2-2.4 30.5-17.3 30.5-35.2 0-8.1-2.7-15.9-7.8-22.2l-9.8-12.2C464.4 308.5 448 261.8 448 213.7l0-21.7c0-77.4-55-142-128-156.8l0-3.2c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 3.2c-38.6 7.8-72.2 29.6-95.2 59.7L41-24.9zm87 238.5c0 48.1-16.4 94.8-46.4 132.4l-9.8 12.2c-5 6.3-7.8 14.1-7.8 22.2 0 19.6 15.9 35.5 35.5 35.5l235.3 0-206.9-206.9 0 4.5zM288 512c29.8 0 54.9-20.4 62-48l-124 0c7.1 27.6 32.2 48 62 48z\"]\n  };\n  var faHandshakeSlash = {\n    prefix: 'fas',\n    iconName: 'handshake-slash',\n    icon: [576, 512, [57439, \"handshake-alt-slash\", \"handshake-simple-slash\"], \"e060\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-288-288 14.2-14.2c4.2-4.2 9.5-6.5 14.9-6.9 6.8-.6 13.8 1.7 19 6.9L505.6 376 576 320 576 32 464 96 440.2 80.1C424.4 69.6 405.9 64 386.9 64l-70.4 0c-1.1 0-2.3 0-3.4 .1-16.9 .9-32.8 8.5-44.2 21.1l-55.8 62.1-34-34 44.3-49.2-39.7 0c-15.3 0-30.1 3.6-43.5 10.4L41-24.9zM0 69.8L0 320 156.4 450.3c23 19.2 52 29.7 81.9 29.7l15.7 0-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l41 41 9 0c22.2 0 43.8-5.8 62.8-16.4L0 69.8z\"]\n  };\n  var faHandshakeAltSlash = faHandshakeSlash;\n  var faHandshakeSimpleSlash = faHandshakeSlash;\n  var faBottleWater = {\n    prefix: 'fas',\n    iconName: 'bottle-water',\n    icon: [320, 512, [], \"e4c5\", \"M112-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0C94.3 32 80 17.7 80 0s14.3-32 32-32zM16 144c0-35.3 28.7-64 64-64l160 0c35.3 0 64 28.7 64 64 0 24.1-13.3 45.1-33 56 19.7 10.9 33 31.9 33 56s-13.3 45.1-33 56c19.7 10.9 33 31.9 33 56s-13.3 45.1-33 56c19.7 10.9 33 31.9 33 56 0 35.3-28.7 64-64 64L80 544c-35.3 0-64-28.7-64-64 0-24.1 13.3-45.1 33-56-19.7-10.9-33-31.9-33-56s13.3-45.1 33-56c-19.7-10.9-33-31.9-33-56s13.3-45.1 33-56c-19.7-10.9-33-31.9-33-56z\"]\n  };\n  var faDiceD20 = {\n    prefix: 'fas',\n    iconName: 'dice-d20',\n    icon: [512, 512, [], \"f6cf\", \"M224.4-8.2c19.6-11.1 43.6-11.1 63.1 0l192 108.8c20 11.4 32.4 32.6 32.4 55.7l0 215.6c0 23-12.4 44.3-32.4 55.7l-192 108.8c-19.6 11.1-43.6 11.1-63.1 0L32.4 427.5C12.4 416.1 0 394.8 0 371.8L0 156.2c0-23 12.4-44.3 32.4-55.7L224.4-8.2zm52 73.2C267 49.8 245 49.8 235.6 65l-76.6 123.7-85.4-46.3-3.8-1.6c-8.9-2.7-18.8 1.1-23.4 9.6s-2.4 18.9 4.7 24.8l3.3 2.3 83.4 45.2-74.6 120.6C55.3 356.2 61 373 75 378.4l161 61.9 0 39.7c0 11 9 20 20 20s20-9 20-20l0-39.7 161-61.9c14-5.4 19.7-22.2 11.8-35l-74.7-120.6 83.4-45.2c9.7-5.3 13.3-17.4 8.1-27.1s-17.4-13.3-27.1-8.1L353 188.7 276.4 65zm-47 329.9l-122-46.9 54.5-88.1 67.5 135zM404.6 348l-122 46.9 67.5-135 54.5 88.1zM319.3 232L256 358.6 192.7 232 319.3 232zM308 192l-104.1 0 52-84 52 84z\"]\n  };\n  var faArrowDownZA = {\n    prefix: 'fas',\n    iconName: 'arrow-down-z-a',\n    icon: [512, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M230.6 390.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM288 64c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L397.3 160 448 160c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L370.8 96 320 96c-17.7 0-32-14.3-32-32zM412.6 273.7l80 160c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3l-7.2-14.3-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l80-160c5.4-10.8 16.5-17.7 28.6-17.7s23.2 6.8 28.6 17.7zM384 359.6l-20.2 40.4 40.4 0-20.2-40.4z\"]\n  };\n  var faSortAlphaDesc = faArrowDownZA;\n  var faSortAlphaDownAlt = faArrowDownZA;\n  var faBrush = {\n    prefix: 'fas',\n    iconName: 'brush',\n    icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6l-19 0c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6L48 0C21.5 0 0 21.5 0 48l0 208 384 0 0-208c0-26.5-21.5-48-48-48L230.5 0c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 304l0 16c0 35.3 28.7 64 64 64l64 0 0 64c0 35.3 28.7 64 64 64s64-28.7 64-64l0-64 64 0c35.3 0 64-28.7 64-64l0-16-384 0zM192 464c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n  };\n  var faPersonWalkingDashedLineArrowRight = {\n    prefix: 'fas',\n    iconName: 'person-walking-dashed-line-arrow-right',\n    icon: [640, 512, [], \"e553\", \"M160 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM73.4 227.9l22.6-22.6 0 69.3c0 28 12.2 54.7 33.5 72.9l71.4 61.2c5.9 5.1 9.8 12.1 10.9 19.8l12.6 88.1c2.5 17.5 18.7 29.7 36.2 27.2s29.7-18.7 27.2-36.2l-12.6-88.1c-3.3-23.1-14.9-44.1-32.6-59.3l-34.5-29.6 0-115.2 3.8 4.7c18.2 22.8 45.8 36 75 36l33.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-33.2 0c-9.7 0-18.9-4.4-25-12l-17.9-22.4c-23-28.8-57.9-45.6-94.8-45.6-32.2 0-63.1 12.8-85.8 35.6L28.1 182.6C10.1 200.6 0 225 0 250.5L0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-37.5c0-8.5 3.4-16.6 9.4-22.6zM85.8 407.3c-1.5 5.2-4.3 10-8.1 13.8L9.4 489.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.3-68.3c11.5-11.5 19.9-25.8 24.4-41.5l2.2-7.6-46-39.4c-2.5-2.2-5-4.4-7.4-6.8L85.8 407.3zM432 8c0-13.3-10.7-24-24-24S384-5.3 384 8l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zm0 128c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zM408 320c-13.3 0-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zM609 273c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-102.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l102.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72z\"]\n  };\n  var faArrowUpShortWide = {\n    prefix: 'fas',\n    iconName: 'arrow-up-short-wide',\n    icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0zM150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n  };\n  var faSortAmountUpAlt = faArrowUpShortWide;\n  var faGripVertical = {\n    prefix: 'fas',\n    iconName: 'grip-vertical',\n    icon: [320, 512, [\"grid-vertical\"], \"f58e\", \"M128 40c0-22.1-17.9-40-40-40L40 0C17.9 0 0 17.9 0 40L0 88c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zM0 424l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM320 40c0-22.1-17.9-40-40-40L232 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zM192 232l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM320 424c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48z\"]\n  };\n  var faGridVertical = faGripVertical;\n  var faCarTunnel = {\n    prefix: 'fas',\n    iconName: 'car-tunnel',\n    icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256L0 448c0 35.3 28.7 64 64 64l42.8 0c-6.6-5.9-10.8-14.4-10.8-24l0-113.1c0-13.5 3.1-26.8 9-38.9l39.7-80.8c9.4-19.1 28.9-31.3 50.2-31.3L317 224c21.3 0 40.8 12.1 50.2 31.3L407 336c5.9 12.1 9 25.4 9 38.9L416 488c0 9.6-4.2 18.1-10.8 24l42.8 0c35.3 0 64-28.7 64-64l0-192C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24l0-24-192 0 0 24c0 9.6-4.2 18.1-10.8 24l213.7 0zm-175-235.5l-29.3 59.5 194.9 0-29.3-59.5c-1.3-2.7-4.1-4.5-7.2-4.5L195 272c-3 0-5.8 1.7-7.2 4.5zM176 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm184-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faChartColumn = {\n    prefix: 'fas',\n    iconName: 'chart-column',\n    icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM144 224c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm144-64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32s32 14.3 32 32zm80 32c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM512 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n  };\n  var faTruckArrowRight = {\n    prefix: 'fas',\n    iconName: 'truck-arrow-right',\n    icon: [576, 512, [], \"e58b\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l3.3 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l102.6 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l3.3 0c35.3 0 64-28.7 64-64l0-146.7c0-17-6.7-33.3-18.7-45.3L512 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM512 237.3l0 50.7-96 0 0-96 50.7 0 45.3 45.3zM152 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm232 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM305 225l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l102.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9z\"]\n  };\n  var faTv = {\n    prefix: 'fas',\n    iconName: 'tv',\n    icon: [576, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 96l0 240 448 0 0-240-448 0zM0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 240c0 35.3-28.7 64-64 64L64 400c-35.3 0-64-28.7-64-64L0 96zM160 448l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faTelevision = faTv;\n  var faTvAlt = faTv;\n  var faSection = {\n    prefix: 'fas',\n    iconName: 'section',\n    icon: [256, 512, [], \"e447\", \"M110 0C49.2 0 0 49.2 0 110 0 133.7 7.6 155.8 20.5 174 7.6 192 0 214.1 0 238 0 291.7 38.9 337.6 91.9 346.4l61.7 10.3c22.2 3.7 38.4 22.9 38.4 45.3 0 25.4-20.6 46-46 46l-98 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l98 0c60.7 0 110-49.2 110-110 0-23.7-7.6-45.9-20.5-64 12.9-18 20.5-40.1 20.5-64 0-53.8-38.9-99.6-91.9-108.5l-61.7-10.3C80.2 151.6 64 132.4 64 110 64 84.6 84.6 64 110 64l98 0c17.7 0 32-14.3 32-32S225.7 0 208 0L110 0zm74.7 299.1c-6.5-2.4-13.4-4.3-20.5-5.5l-61.7-10.3c-22.2-3.7-38.4-22.9-38.4-45.3 0-9.2 2.7-17.8 7.4-25 6.5 2.4 13.4 4.3 20.5 5.5l61.7 10.3c22.2 3.7 38.4 22.9 38.4 45.3 0 9.2-2.7 17.8-7.4 25z\"]\n  };\n  var faPeace = {\n    prefix: 'fas',\n    iconName: 'peace',\n    icon: [512, 512, [9774], \"f67c\", \"M224 445.3l0-121.8-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8 224 66.7c-90.8 15.2-160 94.2-160 189.3 0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5l-94.3-77.1 0 121.8c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1 0-95.1-69.2-174.1-160-189.3l0 174.2 134.8 110.3zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n  };\n  var faStar = {\n    prefix: 'fas',\n    iconName: 'star',\n    icon: [576, 512, [11088, 61446], \"f005\", \"M309.5-18.9c-4.1-8-12.4-13.1-21.4-13.1s-17.3 5.1-21.4 13.1L193.1 125.3 33.2 150.7c-8.9 1.4-16.3 7.7-19.1 16.3s-.5 18 5.8 24.4l114.4 114.5-25.2 159.9c-1.4 8.9 2.3 17.9 9.6 23.2s16.9 6.1 25 2L288.1 417.6 432.4 491c8 4.1 17.7 3.3 25-2s11-14.2 9.6-23.2L441.7 305.9 556.1 191.4c6.4-6.4 8.6-15.8 5.8-24.4s-10.1-14.9-19.1-16.3L383 125.3 309.5-18.9z\"]\n  };\n  var faFlag = {\n    prefix: 'fas',\n    iconName: 'flag',\n    icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-121.6 62.7-18.8c41.9-12.6 87.1-8.7 126.2 10.9 42.7 21.4 92.5 24 137.2 7.2l37.1-13.9c12.5-4.7 20.8-16.6 20.8-30l0-247.7c0-23-24.2-38-44.8-27.7l-11.8 5.9c-44.9 22.5-97.8 22.5-142.8 0-36.4-18.2-78.3-21.8-117.2-10.1L64 54.4 64 32z\"]\n  };\n  var faTriangleExclamation = {\n    prefix: 'fas',\n    iconName: 'triangle-exclamation',\n    icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5S486.1 480 472 480L40 480c-14.1 0-27.1-7.4-34.4-19.5s-7.5-27.1-.8-39.5l216-400c7-12.9 20.5-21 35.2-21zm0 168c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm26.7 216a26.7 26.7 0 1 0 -53.3 0 26.7 26.7 0 1 0 53.3 0z\"]\n  };\n  var faExclamationTriangle = faTriangleExclamation;\n  var faWarning = faTriangleExclamation;\n  var faSchoolCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'school-circle-exclamation',\n    icon: [640, 512, [], \"e56c\", \"M64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l276 0c-10.5-14.6-19-30.7-25.1-48l-90.9 0 0-88c0-22.1 17.9-40 40-40l48 0c1 0 1.9 0 2.9 .1 26.3-74.6 97.5-128.1 181.1-128.1 28.6 0 55.6 6.2 80 17.4l0-33.4c0-35.3-28.7-64-64-64l-64 0-127.9-115.1c-18.3-16.4-46-16.4-64.2 0L128 128 64 128zm64 240c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 256l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM288 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faGraduationCap = {\n    prefix: 'fas',\n    iconName: 'graduation-cap',\n    icon: [576, 512, [127891, \"mortar-board\"], \"f19d\", \"M48 195.8l209.2 86.1c9.8 4 20.2 6.1 30.8 6.1s21-2.1 30.8-6.1l242.4-99.8c9-3.7 14.8-12.4 14.8-22.1s-5.8-18.4-14.8-22.1L318.8 38.1C309 34.1 298.6 32 288 32s-21 2.1-30.8 6.1L14.8 137.9C5.8 141.6 0 150.3 0 160L0 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-260.2zm48 71.7L96 384c0 53 86 96 192 96s192-43 192-96l0-116.6-142.9 58.9c-15.6 6.4-32.2 9.7-49.1 9.7s-33.5-3.3-49.1-9.7L96 267.4z\"]\n  };\n  var faMortarBoard = faGraduationCap;\n  var faStore = {\n    prefix: 'fas',\n    iconName: 'store',\n    icon: [512, 512, [], \"f54e\", \"M30.7 72.3C37.6 48.4 59.5 32 84.4 32l344 0c24.9 0 46.8 16.4 53.8 40.3l23.4 80.2c12.8 43.7-20.1 87.5-65.6 87.5-26.3 0-49.4-14.9-60.8-37.1-11.6 21.9-34.6 37.1-61.4 37.1-26.6 0-49.7-15-61.3-37-11.6 22-34.7 37-61.3 37-26.8 0-49.8-15.1-61.4-37.1-11.4 22.1-34.5 37.1-60.8 37.1-45.6 0-78.4-43.7-65.6-87.5L30.7 72.3zM96.4 352l320 0 0-66.4c7.6 1.6 15.5 2.4 23.5 2.4 14.3 0 28-2.6 40.5-7.2l0 151.2c0 26.5-21.5 48-48 48l-352 0c-26.5 0-48-21.5-48-48l0-151.2c12.5 4.6 26.1 7.2 40.5 7.2 8.1 0 15.9-.8 23.5-2.4l0 66.4z\"]\n  };\n  var faUserAstronaut = {\n    prefix: 'fas',\n    iconName: 'user-astronaut',\n    icon: [448, 512, [], \"f4fb\", \"M224 336c74.6 0 138.4-46.4 164-112l4 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-4 0C362.4 30.4 298.6-16 224-16S85.6 30.4 60 96l-4 0c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l4 0c25.6 65.6 89.4 112 164 112zM208 80l32 0c53 0 96 43 96 96s-43 96-96 96l-32 0c-53 0-96-43-96-96s43-96 96-96zM16 484.6C16 499.7 28.3 512 43.4 512l52.6 0 0-48c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 48 52.6 0c15.1 0 27.4-12.3 27.4-27.4 0-59.8-31.9-112.2-79.6-141-36.4 25.5-80.6 40.4-128.4 40.4s-92-14.9-128.4-40.4C47.9 372.4 16 424.8 16 484.6zM183.3 141.5c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6-6-21.2zM152 488l0 24 48 0 0-24c0-13.3-10.7-24-24-24s-24 10.7-24 24zm120-24c-13.3 0-24 10.7-24 24l0 24 48 0 0-24c0-13.3-10.7-24-24-24z\"]\n  };\n  var faBuildingFlag = {\n    prefix: 'fas',\n    iconName: 'building-flag',\n    icon: [640, 512, [], \"e4d5\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 352l32 0c17.7 0 32 14.3 32 32l0 80-96 0 0-80c0-17.7 14.3-32 32-32zM96 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM240 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM96 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM464 0c-17.7 0-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288 112 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L496 32c0-17.7-14.3-32-32-32z\"]\n  };\n  var faMugSaucer = {\n    prefix: 'fas',\n    iconName: 'mug-saucer',\n    icon: [576, 512, [\"coffee\"], \"f0f4\", \"M64 64c0-17.7 14.3-32 32-32l352 0c70.7 0 128 57.3 128 128S518.7 288 448 288c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L64 64zm448 96c0-35.3-28.7-64-64-64l0 128c35.3 0 64-28.7 64-64zM64 448l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n  };\n  var faCoffee = faMugSaucer;\n  var faLemon = {\n    prefix: 'fas',\n    iconName: 'lemon',\n    icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64-6.6 0-13 1-19 2.9-22.5 7-48.1 14.9-71 9-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71-1.9 6-2.9 12.4-2.9 19 0 35.3 28.7 64 64 64 6.6 0 13-1 19.1-2.9 22.5-7 48.1-14.9 71-9 75.2 19.1 156.4-11 213.7-68.3S455.2 261.2 436.1 186c-5.8-22.9 2-48.4 9-71 1.9-6 2.9-12.4 2.9-19.1zM222.7 143c-52 15.2-96.5 59.7-111.7 111.7-3.7 12.7-17.1 20-29.8 16.3S61.2 254 65 241.3c19.8-67.7 76.6-124.5 144.3-144.3 12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"]\n  };\n  var faCaravan = {\n    prefix: 'fas',\n    iconName: 'caravan',\n    icon: [640, 512, [], \"f8ff\", \"M32 96c0-35.3 28.7-64 64-64l320 0c70.7 0 128 57.3 128 128l0 192 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-296.4 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-2.7 .1-5.4 .4-8L96 416c-35.3 0-64-28.7-64-64L32 96zM352 352l64 0c17.7 0 32-14.3 32-32l0-48-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 160c0 17.7 14.3 32 32 32zM160 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zm64 336a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n  };\n  var faQ = {\n    prefix: 'fas',\n    iconName: 'q',\n    icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160 28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1c20.4-26.8 32.5-60.3 32.5-96.6 0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480 100.3 480 0 379.7 0 256S100.3 32 224 32 448 132.3 448 256c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n  };\n  var faLock = {\n    prefix: 'fas',\n    iconName: 'lock',\n    icon: [384, 512, [128274], \"f023\", \"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\"]\n  };\n  var faPaintRoller = {\n    prefix: 'fas',\n    iconName: 'paint-roller',\n    icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0L352 0c35.3 0 64 28.7 64 64l16 0c44.2 0 80 35.8 80 80l0 96c0 44.2-35.8 80-80 80l-160 0c-8.8 0-16 7.2-16 16l0 18.7c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3l0-18.7c0-44.2 35.8-80 80-80l160 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-16 0c0 35.3-28.7 64-64 64L64 192c-35.3 0-64-28.7-64-64L0 64z\"]\n  };\n  var faVolumeHigh = {\n    prefix: 'fas',\n    iconName: 'volume-high',\n    icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C557.5 113.8 592 180.8 592 256s-34.5 142.2-88.7 186.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C598.5 426.7 640 346.2 640 256S598.5 85.2 533.6 32.5zM473.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C475.3 170.7 496 210.9 496 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C393.1 227.6 400 241 400 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C434.1 312.9 448 286.1 448 256s-13.9-56.9-35.4-74.5zM80 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L128 160 80 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48z\"]\n  };\n  var faVolumeUp = faVolumeHigh;\n  var faFolderPlus = {\n    prefix: 'fas',\n    iconName: 'folder-plus',\n    icon: [512, 512, [], \"f65e\", \"M512 384c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 240zM256 160c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n  };\n  var faMercury = {\n    prefix: 'fas',\n    iconName: 'mercury',\n    icon: [384, 512, [9791], \"f223\", \"M117-4C106-17.8 85.8-20 72.1-9s-16 31.2-5 45C74.9 45.7 83.7 54.5 93.5 62.1 46.7 93.7 16 147.3 16 208 16 294.3 78.1 366.1 160 381.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9c81.9-15 144-86.8 144-173.1 0-60.7-30.7-114.3-77.5-145.9 9.8-7.7 18.7-16.4 26.4-26.1 11.1-13.8 8.8-33.9-5-45S278-17.8 267-4c-17.6 22-44.7 36-75 36S134.7 18 117-4zm75 324c-61.9 0-112-50.1-112-112S130.1 96 192 96 304 146.1 304 208c0 61.8-50.1 112-111.9 112l-.1 0z\"]\n  };\n  var faAnchor = {\n    prefix: 'fas',\n    iconName: 'anchor',\n    icon: [576, 512, [9875], \"f13d\", \"M288 64a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM192 96c0-53 43-96 96-96s96 43 96 96c0 41.8-26.7 77.4-64 90.5l0 257.9c62.9-14.3 110.2-69.7 111.9-136.5l-16.1 14.1c-10 8.7-25.1 7.7-33.9-2.3s-7.7-25.1 2.3-33.9l64-56c9-7.9 22.6-7.9 31.6 0l64 56c10 8.7 11 23.9 2.3 33.9s-23.9 11-33.9 2.3L496 307.9C493.9 421 401.6 512 288 512S82.1 421 80 307.9L63.8 322.1c-10 8.7-25.1 7.7-33.9-2.3s-7.7-25.1 2.3-33.9l64-56c9-7.9 22.6-7.9 31.6 0l64 56c10 8.7 11 23.9 2.3 33.9s-23.9 11-33.9 2.3l-16.1-14.1c1.8 66.8 49.1 122.2 111.9 136.5l0-257.9c-37.3-13.2-64-48.7-64-90.5z\"]\n  };\n  var faSquareParking = {\n    prefix: 'fas',\n    iconName: 'square-parking',\n    icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-184c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z\"]\n  };\n  var faParking = faSquareParking;\n  var faHanukiah = {\n    prefix: 'fas',\n    iconName: 'hanukiah',\n    icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104 8 117.3 18.7 128 32 128s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176-192 0c-17.7 0-32-14.3-32-32l0-96c0-17.7-14.3-32-32-32S0 174.3 0 192l0 96c0 53 43 96 96 96l192 0 0 64-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-64 192 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32l-192 0 0-176z\"]\n  };\n  var faRotateLeft = {\n    prefix: 'fas',\n    iconName: 'rotate-left',\n    icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M24 192l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-46.7-46.7c75.3-58.6 184.3-53.3 253.5 15.9 75 75 75 196.5 0 271.5s-196.5 75-271.5 0c-10.2-10.2-19-21.3-26.4-33-9.5-14.9-29.3-19.3-44.2-9.8s-19.3 29.3-9.8 44.2C49.7 408.7 61.4 423.5 75 437 175 537 337 537 437 437S537 175 437 75C342.8-19.3 193.3-24.7 92.7 58.8L41 7C34.1 .2 23.8-1.9 14.8 1.8S0 14.3 0 24L0 168c0 13.3 10.7 24 24 24z\"]\n  };\n  var faRotateBack = faRotateLeft;\n  var faRotateBackward = faRotateLeft;\n  var faUndoAlt = faRotateLeft;\n  var faHeading = {\n    prefix: 'fas',\n    iconName: 'heading',\n    icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 320 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-320-16 0C14.3 96 0 81.7 0 64z\"]\n  };\n  var faHeader = faHeading;\n  var faCrosshairs = {\n    prefix: 'fas',\n    iconName: 'crosshairs',\n    icon: [576, 512, [], \"f05b\", \"M288-16c17.7 0 32 14.3 32 32l0 18.3c98.1 14 175.7 91.6 189.7 189.7l18.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.3 0c-14 98.1-91.6 175.7-189.7 189.7l0 18.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.3C157.9 463.7 80.3 386.1 66.3 288L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.3 0C80.3 125.9 157.9 48.3 256 34.3L256 16c0-17.7 14.3-32 32-32zM131.2 288c12.7 62.7 62.1 112.1 124.8 124.8l0-12.8c0-17.7 14.3-32 32-32s32 14.3 32 32l0 12.8c62.7-12.7 112.1-62.1 124.8-124.8L432 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l12.8 0C432.1 161.3 382.7 111.9 320 99.2l0 12.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-12.8C193.3 111.9 143.9 161.3 131.2 224l12.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-12.8 0zM288 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n  };\n  var faCircleNodes = {\n    prefix: 'fas',\n    iconName: 'circle-nodes',\n    icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9 0-44.2-35.8-80-80-80-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128 35.8 128 0 163.8 0 208s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n  };\n  var faWindowRestore = {\n    prefix: 'fas',\n    iconName: 'window-restore',\n    icon: [576, 512, [], \"f2d2\", \"M512 96L160 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64l-48 0 0-64 48 0 0-192zM0 224c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 224zm64 40c0 13.3 10.7 24 24 24l240 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 240c-13.3 0-24 10.7-24 24z\"]\n  };\n  var faR = {\n    prefix: 'fas',\n    iconName: 'r',\n    icon: [320, 512, [114], \"52\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 95.3 0 102.4 146.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176 320 96.5 255.5 32 176 32L32 32zM176 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n  };\n  var faFilterCircleXmark = {\n    prefix: 'fas',\n    iconName: 'filter-circle-xmark',\n    icon: [576, 512, [], \"e17b\", \"M32 64C19.1 64 7.4 71.8 2.4 83.8L273.6 508.6c8.2 4.1 17.9 4.6 26.6 1 9.1-3.8 15.8-11.5 18.5-20.6 26.4 33.5 67.3 55.1 113.3 55.1 79.5 0 144-64.5 144-144S511.5 256 432 256c-45.2 0-85.6 20.9-112 53.5l0-8.2 182.6-182.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64zM491.3 363.3l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faGopuram = {\n    prefix: 'fas',\n    iconName: 'gopuram',\n    icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 48 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 136c26.5 0 48 21.5 48 48l0 80c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-48 0 0-224-32 0 0-128-48 0 0 128 32 0 0 224-224 0 0-224 32 0 0-128-48 0 0 128-32 0 0 224-48 0c-26.5 0-48-21.5-48-48L0 336c0-26.5 21.5-48 48-48l0-80c0-26.5 21.5-48 48-48L96 24c0-13.3 10.7-24 24-24zM256 208c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zM208 400l0 64 96 0 0-64c0-26.5-21.5-48-48-48s-48 21.5-48 48zM256 96c-17.7 0-32 14.3-32 32l0 32 64 0 0-32c0-17.7-14.3-32-32-32z\"]\n  };\n  var faHeartCircleMinus = {\n    prefix: 'fas',\n    iconName: 'heart-circle-minus',\n    icon: [576, 512, [], \"e4ff\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n  };\n  var faStarOfLife = {\n    prefix: 'fas',\n    iconName: 'star-of-life',\n    icon: [512, 512, [], \"f621\", \"M208.5 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 140.9 122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7l-122 70.4 122 70.4c15.3 8.8 20.6 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7l-122-70.4 0 140.9c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-140.9-122 70.4c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7l122-70.4-122-70.4c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7c8.8-15.3 28.4-20.5 43.7-11.7l122 70.4 0-140.9z\"]\n  };\n  var faBusinessTime = {\n    prefix: 'fas',\n    iconName: 'business-time',\n    icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M264 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 40-80 0c-35.3 0-64 28.7-64 64l0 96 305 0c33.8-29.9 78.3-48 127-48 28.6 0 55.6 6.2 80 17.4l0-65.4c0-35.3-28.7-64-64-64l-80 0 0-40c0-30.9-25.1-56-56-56L264 0c-30.9 0-56 25.1-56 56zm80 296c-17.7 0-32-14.3-32-32l0-16-192 0 0 112c0 35.3 28.7 64 64 64l193.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-16.6 2.1-32.7 6-48l-22 0zm352 48a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 320c8.8 0 16 7.2 16 16l0 48 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16z\"]\n  };\n  var faBriefcaseClock = faBusinessTime;\n  var faFireExtinguisher = {\n    prefix: 'fas',\n    iconName: 'fire-extinguisher',\n    icon: [512, 512, [129519], \"f134\", \"M512 32c0-9.6-4.3-18.7-11.7-24.7S483.1-1.3 473.7 .6l-160 32C301.5 35.1 292 44.3 289 56l-65 0 0-24c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32l0 28.4c-55.3 12.3-101.3 49.5-125.5 99.1-5.8 11.9-.9 26.3 11.1 32.1s26.3 .9 32.1-11.1C62 146.9 91.8 121.1 128 110l0 28.8c-37.8 18-64 56.5-64 101.2l0 128 224 0 0-128c0-44.7-26.2-83.2-64-101.2l0-34.8 65 0c3 11.7 12.5 20.9 24.7 23.4l160 32c9.4 1.9 19.1-.6 26.6-6.6S512 137.6 512 128l0-96zM288 448l0-32-224 0 0 32c0 35.3 28.7 64 64 64l96 0c35.3 0 64-28.7 64-64z\"]\n  };\n  var faArrowDownLong = {\n    prefix: 'fas',\n    iconName: 'arrow-down-long',\n    icon: [320, 512, [\"long-arrow-down\"], \"f175\", \"M137.4 534.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 434.7 192 0c0-17.7-14.3-32-32-32S128-17.7 128 0l0 434.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n  };\n  var faLongArrowDown = faArrowDownLong;\n  var faUserMinus = {\n    prefix: 'fas',\n    iconName: 'user-minus',\n    icon: [640, 512, [], \"f503\", \"M136 128a120 120 0 1 1 240 0 120 120 0 1 1 -240 0zM48 482.3C48 383.8 127.8 304 226.3 304l59.4 0c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L77.7 512C61.3 512 48 498.7 48 482.3zM472 168l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faMoneyCheck = {\n    prefix: 'fas',\n    iconName: 'money-check',\n    icon: [512, 512, [], \"f53c\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM96 312c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0c-13.3 0-24 10.7-24 24zm24-136c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-272 0z\"]\n  };\n  var faHouseLaptop = {\n    prefix: 'fas',\n    iconName: 'house-laptop',\n    icon: [640, 512, [\"laptop-house\"], \"e066\", \"M448 240l19.9 0c15.5 0 28.1-12.6 28.1-28.1 0-7.6-3.1-14.9-8.6-20.2L283.5-4.9C276.1-12 266.3-16 256-16s-20.1 4-27.5 11.1L24.6 191.7C19.1 197 16 204.3 16 211.9 16 227.4 28.6 240 44.1 240l19.9 0 0 144c0 35.3 28.7 64 64 64l85.7 0c7.4-6.6 16.4-11.4 26.3-14l0-130c0-5.5 .7-10.9 2-16l-10 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24 144 0zM352 352l160 0 0 128-160 0 0-128zm-64-32l0 160-32 0c-8.8 0-16 7.2-16 16 0 26.5 21.5 48 48 48l288 0c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16l-32 0 0-160c0-17.7-14.3-32-32-32l-224 0c-17.7 0-32 14.3-32 32z\"]\n  };\n  var faLaptopHouse = faHouseLaptop;\n  var faDownload = {\n    prefix: 'fas',\n    iconName: 'download',\n    icon: [448, 512, [], \"f019\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 242.7 256 32zM64 320c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-46.9 0-56.6 56.6c-31.2 31.2-81.9 31.2-113.1 0L110.9 320 64 320zm304 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faCouch = {\n    prefix: 'fas',\n    iconName: 'couch',\n    icon: [640, 512, [], \"f4b8\", \"M144 272C144 224.7 109.8 185.4 64.8 177.5 72 113.6 126.2 64 192 64l256 0c65.8 0 120 49.6 127.2 113.5-45 8-79.2 47.2-79.2 94.5l0 32-352 0 0-32zM0 384L0 272c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 448 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64z\"]\n  };\n  var faRoadLock = {\n    prefix: 'fas',\n    iconName: 'road-lock',\n    icon: [576, 512, [], \"e567\", \"M256 32l-76.3 0c-29.4 0-55.1 20.1-62.1 48.6L33.4 420.5C25.9 450.7 48.8 480 80 480l175.9 0 0-64c0-17.7 14.3-32 32-32 6.1 0 11.8 1.7 16.7 4.7 2.8-23.9 14.3-45.1 31.4-60.3l0-24.4c0-70.7 57.3-128 128-128 6.2 0 12.4 .4 18.4 1.3L458.5 80.6C451.4 52.1 425.8 32 396.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 80.1l0 47.9-64 0 0-47.9c0-17.7 14.3-32 32-32s32 14.3 32 32zM352 400l0 96c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-96c0-20.9-13.4-38.7-32-45.3l0-50.6c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 50.6c-18.6 6.6-32 24.4-32 45.3z\"]\n  };\n  var faScissors = {\n    prefix: 'fas',\n    iconName: 'scissors',\n    icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6-28.3-28.3-74.1-28.3-102.4 0L256 192 216.5 152.5c4.9-12.6 7.5-26.2 7.5-40.5 0-61.9-50.1-112-112-112S0 50.1 0 112 50.1 224 112 224c14.3 0 27.9-2.7 40.5-7.5L192 256zm97.9 97.9L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0 7.1-7.1 7.1-18.5 0-25.6l-145.3-145.3-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n  };\n  var faCut = faScissors;\n  var faBug = {\n    prefix: 'fas',\n    iconName: 'bug',\n    icon: [576, 512, [], \"f188\", \"M192 96c0-53 43-96 96-96s96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6zm345.6 12.8c10.6 14.1 7.7 34.2-6.4 44.8l-97.8 73.3c5.3 8.9 9.3 18.7 11.8 29.1l98.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 32c0 2.6-.1 5.3-.2 7.9l83.4 62.5c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4l-63.1-47.3c-23.2 44.2-66.5 76.2-117.7 83.9L312 280c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 230.2c-51.2-7.7-94.5-39.7-117.7-83.9L83.2 473.6c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l83.4-62.5c-.1-2.6-.2-5.2-.2-7.9l0-32-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l98.8 0c2.5-10.4 6.5-20.2 11.8-29.1L44.8 153.6c-14.1-10.6-17-30.7-6.4-44.8s30.7-17 44.8-6.4L192 184c12.3-5.1 25.8-8 40-8l112 0c14.2 0 27.7 2.8 40 8l108.8-81.6c14.1-10.6 34.2-7.7 44.8 6.4z\"]\n  };\n  var faArrowRightFromBracket = {\n    prefix: 'fas',\n    iconName: 'arrow-right-from-bracket',\n    icon: [512, 512, [\"sign-out\"], \"f08b\", \"M160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0zM502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n  };\n  var faSignOut = faArrowRightFromBracket;\n  var faHandHoldingHand = {\n    prefix: 'fas',\n    iconName: 'hand-holding-hand',\n    icon: [576, 512, [], \"e4f7\", \"M466.8 186.5l42.5-42.5 34.7 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L223.6 16c-29 0-57.3 9.3-80.7 26.5L16.3 135.8c-17.8 13.1-21.6 38.1-8.5 55.9s38.1 21.6 55.9 8.5L183.4 112 296 112c13.3 0 24 10.7 24 24s-10.7 24-24 24l-72 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l152.2 0c33.9 0 66.5-13.5 90.5-37.5zm-357.5 139L66.7 368 32 368c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 400 280 400c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n  };\n  var faStroopwafel = {\n    prefix: 'fas',\n    iconName: 'stroopwafel',\n    icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3-33.9-33.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3 45.3 45.3-45.3 45.3-45.3-45.3zm67.9 67.9l45.3-45.3 45.3 45.3-45.3 45.3-45.3-45.3zM278.6 256l45.3-45.3 45.3 45.3-45.3 45.3-45.3-45.3zm22.6-67.9l-45.3 45.3-45.3-45.3 45.3-45.3 45.3 45.3z\"]\n  };\n  var faChild = {\n    prefix: 'fas',\n    iconName: 'child',\n    icon: [320, 512, [], \"f1ae\", \"M96 64A64 64 0 1 1 224 64 64 64 0 1 1 96 64zm48 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32L80 287.8 59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8 240 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0z\"]\n  };\n  var faIceCream = {\n    prefix: 'fas',\n    iconName: 'ice-cream',\n    icon: [384, 512, [127848], \"f810\", \"M335.1 160c.6-5.3 .9-10.6 .9-16 0-79.5-64.5-144-144-144S48 64.5 48 144c0 5.4 .3 10.7 .9 16l-.9 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l288 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-.9 0zM64 304L169.2 529.5c4.1 8.8 13 14.5 22.8 14.5s18.6-5.7 22.8-14.5L320 304 64 304z\"]\n  };\n  var faComputerMouse = {\n    prefix: 'fas',\n    iconName: 'computer-mouse',\n    icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192l168 0 0-192-8 0C71.6 0 0 71.6 0 160l0 32zm0 48L0 352c0 88.4 71.6 160 160 160l64 0c88.4 0 160-71.6 160-160l0-112-384 0zm384-48l0-32C384 71.6 312.4 0 224 0l-8 0 0 192 168 0z\"]\n  };\n  var faMouse = faComputerMouse;\n  var faFaucet = {\n    prefix: 'fas',\n    iconName: 'faucet',\n    icon: [512, 512, [], \"e005\", \"M192 64c0-17.7 14.3-32 32-32s32 14.3 32 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 64 18.7 0c8.5 0 16.6 3.4 22.6 9.4l22.6 22.6 32 0c88.4 0 160 71.6 160 160 0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 352c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-64-96 0c-17.7 0-32-14.3-32-32S78.3 64 96 64l96 0z\"]\n  };\n  var faAward = {\n    prefix: 'fas',\n    iconName: 'award',\n    icon: [448, 512, [], \"f559\", \"M245.9-25.9c-13.4-8.2-30.3-8.2-43.7 0-24.4 14.9-39.5 18.9-68.1 18.3-15.7-.4-30.3 8.1-37.9 21.9-13.7 25.1-24.8 36.2-49.9 49.9-13.8 7.5-22.2 22.2-21.9 37.9 .7 28.6-3.4 43.7-18.3 68.1-8.2 13.4-8.2 30.3 0 43.7 14.9 24.4 18.9 39.5 18.3 68.1-.4 15.7 8.1 30.3 21.9 37.9 22.1 12.1 33.3 22.1 45.1 41.5L42.7 458.5c-5.9 11.9-1.1 26.3 10.7 32.2l86 43c11.5 5.7 25.5 1.4 31.7-9.8l52.8-95.1 52.8 95.1c6.2 11.2 20.2 15.6 31.7 9.8l86-43c11.9-5.9 16.7-20.3 10.7-32.2l-48.6-97.2c11.7-19.4 23-29.4 45.1-41.5 13.8-7.5 22.2-22.2 21.9-37.9-.7-28.6 3.4-43.7 18.3-68.1 8.2-13.4 8.2-30.3 0-43.7-14.9-24.4-18.9-39.5-18.3-68.1 .4-15.7-8.1-30.3-21.9-37.9-25.1-13.7-36.2-24.8-49.9-49.9-7.5-13.8-22.2-22.2-37.9-21.9-28.6 .7-43.7-3.4-68.1-18.3zM224 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n  };\n  var faPersonDrowning = {\n    prefix: 'fas',\n    iconName: 'person-drowning',\n    icon: [640, 512, [], \"e545\", \"M264 88a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM133.9 65.6c16.8-5.6 34.9 3.5 40.5 20.2l10.9 32.8c9.4 28.3 33.2 49.5 62.5 55.6 5.6 1.2 11.3 1.8 17.1 1.8l88 0c17.2 0 34.3-2.8 50.6-8.2l114.4-38.1c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L423.7 228.5c-8.4 2.8-17 5.1-25.7 6.9l-26.5 88.3c-6.1 3.4-12.1 7.3-17.9 11.7-22.1 16.6-29.1 16.6-51.2 0-26.2-19.7-56.9-30.2-87.8-31.3l20.2-67.2c-51.5-10.7-93.5-48.1-110.2-98l-10.9-32.8c-5.6-16.8 3.5-34.9 20.2-40.5zM403.4 412.1C379.1 430.3 351.1 448 320 448s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n  };\n  var faCameraRotate = {\n    prefix: 'fas',\n    iconName: 'camera-rotate',\n    icon: [512, 512, [], \"e0d8\", \"M138.7 96l10.4-31.2C155.6 45.2 173.9 32 194.6 32l122.8 0c20.7 0 39 13.2 45.5 32.8L373.3 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l74.7 0zM96 305.9c0 3.9 1.4 7.7 4 10.6l48 54c6.4 7.2 17.6 7.2 23.9 0l48-54c2.6-2.9 4-6.7 4-10.6l0-1.9c0-8.8-7.2-16-16-16l-24 0c0-39.8 32.2-72 72-72 4.4 0 8.7 .4 12.9 1.2l34.9-39.3c-14.6-6.4-30.8-9.9-47.8-9.9-66.3 0-120 53.7-120 120l-24 0c-8.8 0-16 7.2-16 16l0 1.9zm196-46.5c-2.6 2.9-4 6.7-4 10.6l0 1.9c0 8.8 7.2 16 16 16l24 0c0 39.8-32.2 72-72 72-4.4 0-8.7-.4-12.9-1.2l-34.9 39.3c14.7 6.4 30.8 9.9 47.8 9.9 66.3 0 120-53.7 120-120l24 0c8.8 0 16-7.2 16-16l0-1.9c0-3.9-1.4-7.7-4-10.6l-48-54c-6.4-7.2-17.6-7.2-23.9 0l-48 54z\"]\n  };\n  var faFaceGrinHearts = {\n    prefix: 'fas',\n    iconName: 'face-grin-hearts',\n    icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512c141.4 0 256-114.6 256-256 0-23.3-3.1-45.9-8.9-67.3 5.5-13.5 8.9-28.4 8.9-44.7 0-53-43-96-96-96l-2.9 0c-2.5 0-5 .1-7.4 .3-42.1-30.4-93.8-48.3-149.7-48.3S148.4 17.9 106.3 48.3c-2.5-.2-4.9-.3-7.4-.3L96 48c-53 0-96 43-96 96 0 16.3 3.5 31.2 8.9 44.7-5.8 21.4-8.9 44-8.9 67.3 0 141.4 114.6 256 256 256zM386.7 324.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 404.2 105.7 342.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM322.9 96c13.5 0 26.5 5.4 36 14.9l9.1 9.1 9.1-9.1c9.5-9.5 22.5-14.9 36-14.9l2.9 0c26.5 0 48 21.5 48 48 0 53.4-66.9 95.7-89 108.2-4.4 2.5-9.6 2.5-14 0-22.1-12.5-89-54.8-89-108.2 0-26.5 21.5-48 48-48l2.9 0zm-188 14.9l9.1 9.1 9.1-9.1c9.5-9.5 22.5-14.9 36-14.9l2.9 0c26.5 0 48 21.5 48 48 0 53.4-66.9 95.7-89 108.2-4.4 2.5-9.6 2.5-14 0-22.1-12.5-89-54.8-89-108.2 0-26.5 21.5-48 48-48l2.9 0c13.5 0 26.5 5.4 36 14.9z\"]\n  };\n  var faGrinHearts = faFaceGrinHearts;\n  var faFileFragment = {\n    prefix: 'fas',\n    iconName: 'file-fragment',\n    icon: [384, 512, [], \"e697\", \"M64 0C28.7 0 0 28.7 0 64l0 240 128 0c44.2 0 80 35.8 80 80l0 128 112 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176zM32 352c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0z\"]\n  };\n  var faPersonMilitaryRifle = {\n    prefix: 'fas',\n    iconName: 'person-military-rifle',\n    icon: [448, 512, [], \"e54b\", \"M128 39c0-13 10-23.8 22.9-24.9L302.7 1.4C312 .7 320 8 320 17.4L320 48c0 8.8-7.2 16-16 16L153 64c-13.8 0-25-11.2-25-25zm17.6 57l156.8 0c1 5.2 1.6 10.5 1.6 16 0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L320 369.7 320 480c0 1.3-.1 2.5-.2 3.8L145.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9l50.4 0c15.9 0 31.3 2.8 45.8 7.9L389.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l27.7 16c7.7 4.4 10.3 14.2 5.9 21.9l-55.5 96.1 1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L360.7 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM288 512l-128 0c-17.7 0-32-14.3-32-32l0-110.3-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1S-5.7 438.7 5.6 419.7L81.7 290.8c9.4-15.8 21.7-29.3 36-40L299.1 510c-3.5 1.3-7.2 2-11.1 2zM264 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faToggleOn = {\n    prefix: 'fas',\n    iconName: 'toggle-on',\n    icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192S490 64 384 64L192 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n  };\n  var faLungsVirus = {\n    prefix: 'fas',\n    iconName: 'lungs-virus',\n    icon: [576, 512, [], \"e067\", \"M288 0c-17.7 0-32 14.3-32 32l0 151.3c9.6-4.8 20.5-7.5 32-7.5s22.4 2.7 32 7.5L320 32c0-17.7-14.3-32-32-32zM450.1 451c8 18.3 8.1 39.2 .2 57.5 10.2 2.3 20.6 3.5 31.2 3.5 52.2 0 94.5-42.3 94.5-94.5l0-6.2c0-111.1-36.7-219-104.4-307L428.9 48.7c-8.1-10.6-20.7-16.7-34-16.7-23.7 0-42.9 19.2-42.9 42.9l0 139.9c1.2 2.2 2.2 4.6 3.1 6.9 26.4-11.6 58.3-6.6 79.9 15s26.6 53.6 15 79.9C477 327.2 496 353.3 496 383.8s-19 56.7-45.9 67.1zM220.9 221.8c.9-2.4 2-4.7 3.1-6.9l0-138.5c0-24.5-19.9-44.4-44.4-44.4-12.5 0-24.4 5.3-32.8 14.5l-26.4 29C42.9 160.8 0 271.8 0 387l0 30.5c0 52.2 42.3 94.5 94.5 94.5 10.5 0 21-1.2 31.2-3.5-7.9-18.3-7.8-39.3 .2-57.5-26.9-10.4-45.9-36.6-45.9-67.1s19-56.7 45.9-67.1c-11.6-26.4-6.6-58.3 15-79.9s53.6-26.6 79.9-15zM152 408c28.8 0 43.2 34.8 22.9 55.2-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9 0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9 9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-20.4-20.4-5.9-55.2 22.9-55.2 13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2 9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-20.4 20.4-55.2 5.9-55.2-22.9 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-80a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faTableTennisPaddleBall = {\n    prefix: 'fas',\n    iconName: 'table-tennis-paddle-ball',\n    icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M97 127l67.4-67.4c38.2-38.2 90-59.6 144-59.6 112.5 0 203.7 91.2 203.7 203.6 0 46.4-15.8 91.1-44.5 127-23.6-16.8-52.4-26.7-83.5-26.7-31.1 0-59.9 9.9-83.4 26.6L97 127zM240 448c0 9.7 1 19.1 2.8 28.2-19.8-5.2-38-15.5-52.7-30.2-12.2-12.2-31.9-12.2-44.1 0L96.6 495.4c-10.6 10.6-25 16.6-40 16.6-31.2 0-56.6-25.3-56.6-56.6 0-15 6-29.4 16.6-40l49.4-49.4c12.2-12.2 12.2-31.9 0-44.1-21.7-21.7-33.9-51.2-33.9-81.9 0-29.4 11.1-57.6 31.1-79L266.6 364.6C249.9 388.1 240 416.9 240 448zm144-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n  };\n  var faPingPongPaddleBall = faTableTennisPaddleBall;\n  var faTableTennis = faTableTennisPaddleBall;\n  var faBoxesPacking = {\n    prefix: 'fas',\n    iconName: 'boxes-packing',\n    icon: [576, 512, [], \"e4c7\", \"M208 0l80 0 0 56c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-56 80 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-108.8 0c8.2-14.1 12.8-30.5 12.8-48l0-160c10-13.4 16-30 16-48l0-32c0-44.2-35.8-80-80-80l-176 0 0-96c0-26.5 21.5-48 48-48zM32 336l320 0 0 128c0 26.5-21.5 48-48 48L80 512c-26.5 0-48-21.5-48-48l0-128zM48 192l288 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32z\"]\n  };\n  var faPersonChalkboard = {\n    prefix: 'fas',\n    iconName: 'person-chalkboard',\n    icon: [640, 512, [], \"e53d\", \"M192 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM176 512l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-48 192 0 0 192-192 0 0-32-64 0 0 48c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 64-122.7 0c-45.6 0-88.5 21.6-115.6 58.2L14.3 260.9c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L112 236.7 112 512c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n  };\n  var faDiceTwo = {\n    prefix: 'fas',\n    iconName: 'dice-two',\n    icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faArrowRightArrowLeft = {\n    prefix: 'fas',\n    iconName: 'arrow-right-arrow-left',\n    icon: [512, 512, [8644, \"exchange\"], \"f0ec\", \"M502.6 150.6l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L402.7 160 32 160c-17.7 0-32-14.3-32-32S14.3 96 32 96l370.7 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3zm-397.3 352l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 352 480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32l-370.7 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n  };\n  var faExchange = faArrowRightArrowLeft;\n  var faFootball = {\n    prefix: 'fas',\n    iconName: 'football',\n    icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M261.1 22.6c-89 18-150.5 63.4-190 123.9-23.3 35.6-38.1 75.3-46.7 115.5L251.9 489.4c89-18 150.5-63.4 190.1-123.9 23.3-35.6 38.1-75.3 46.7-115.5L261.1 22.6zm236 168.1c3.2-42.3 .7-83.3-4.8-118.7-4.4-27.8-26.8-48-53.1-51.6-43-5.9-82.2-7.5-117.8-5.4L497.1 190.6zM191.7 497.1L15.9 321.4c-3.2 42.3-.7 83.3 4.8 118.7 4.4 27.8 26.8 48 53.1 51.6 43 5.9 82.2 7.5 117.8 5.4zM271.5 143c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9zm-64 64c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9zm-64 64c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9z\"]\n  };\n  var faFootballBall = faFootball;\n  var faTruckMonster = {\n    prefix: 'fas',\n    iconName: 'truck-monster',\n    icon: [576, 512, [], \"f63b\", \"M336 96l48 64-128 0 0-64 80 0zm128 64L387.2 57.6C375.1 41.5 356.1 32 336 32L224 32c-17.7 0-32 14.3-32 32l0 96-144 0c-26.5 0-48 21.5-48 48l0 64c0 18.1 10.1 33.9 24.9 42.1-.5 5.7 1.1 11.6 4.7 16.4-3.7 6.9-6.8 14.1-9 21.8-11.6 1.7-20.6 11.7-20.6 23.8l0 16c0 12.1 8.9 22.1 20.6 23.8 2.2 7.6 5.3 14.9 9 21.8-7 9.4-6.3 22.8 2.3 31.3l11.3 11.3c8.6 8.6 21.9 9.3 31.3 2.2 6.8 3.7 14.1 6.8 21.7 9 1.7 11.6 11.7 20.6 23.8 20.6l16 0c12.1 0 22.1-8.9 23.8-20.6 7.6-2.2 14.9-5.3 21.7-9 9.4 7 22.8 6.3 31.3-2.2l11.3-11.3c8.6-8.6 9.3-21.9 2.3-31.3 3.7-6.8 6.8-14.1 9-21.7 11.6-1.7 20.6-11.7 20.6-23.8l0-16c0-12.1-8.9-22.1-20.6-23.8-2.2-7.6-5.3-14.9-9-21.7 2.4-3.2 3.9-6.8 4.5-10.5l114.2 0c.6 3.7 2.1 7.3 4.5 10.5-3.7 6.9-6.8 14.1-9 21.8-11.6 1.7-20.6 11.7-20.6 23.8l0 16c0 12.1 8.9 22.1 20.6 23.8 2.2 7.6 5.3 14.9 9 21.8-7 9.4-6.3 22.8 2.2 31.3l11.3 11.3c8.5 8.6 21.9 9.3 31.3 2.2 6.8 3.7 14.1 6.8 21.7 9 1.7 11.6 11.7 20.6 23.8 20.6l16 0c12.1 0 22.1-8.9 23.8-20.6 7.6-2.2 14.9-5.3 21.8-9 9.4 7 22.8 6.3 31.3-2.2l11.3-11.3c8.6-8.6 9.3-21.9 2.2-31.3 3.7-6.8 6.8-14.1 9-21.7 11.6-1.7 20.6-11.7 20.6-23.8l0-16c0-12.1-8.9-22.1-20.6-23.8-2.2-7.6-5.3-14.9-9-21.7 3.6-4.8 5.2-10.7 4.7-16.4 14.8-8.2 24.9-23.9 24.9-42.1l0-64c0-26.5-21.5-48-48-48l-64 0zM128 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n  };\n  var faAsterisk = {\n    prefix: 'fas',\n    iconName: 'asterisk',\n    icon: [448, 512, [10033, 61545], \"2a\", \"M224 0c17.7 0 32 14.3 32 32l0 168.6 144-83.1c15.3-8.8 34.9-3.6 43.7 11.7s3.6 34.9-11.7 43.7L288 256 432 339.1c15.3 8.8 20.6 28.4 11.7 43.7s-28.4 20.6-43.7 11.7L256 311.4 256 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-168.6-144 83.1c-15.3 8.8-34.9 3.6-43.7-11.7S.7 348 16 339.1L160 256 16 172.9C.7 164-4.5 144.5 4.3 129.1S32.7 108.6 48 117.4L192 200.6 192 32c0-17.7 14.3-32 32-32z\"]\n  };\n  var faBatteryFull = {\n    prefix: 'fas',\n    iconName: 'battery-full',\n    icon: [640, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l304 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-304 0z\"]\n  };\n  var faBattery = faBatteryFull;\n  var faBattery5 = faBatteryFull;\n  var faChildDress = {\n    prefix: 'fas',\n    iconName: 'child-dress',\n    icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64 64 64 0 1 0 224 64zM88 400l0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 16 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 17.8 0c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.7 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2L86.2 285.5 55 378.9C51.6 389.3 59.3 400 70.2 400L88 400z\"]\n  };\n  var faFaceKissBeam = {\n    prefix: 'fas',\n    iconName: 'face-kiss-beam',\n    icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM240 288l32 0c26.5 0 48 21.5 48 48 0 12.3-4.6 23.5-12.2 32 7.6 8.5 12.2 19.7 12.2 32 0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM176 180c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n  };\n  var faKissBeam = faFaceKissBeam;\n  var faTrashCanArrowUp = {\n    prefix: 'fas',\n    iconName: 'trash-can-arrow-up',\n    icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1C141.1-7.2 153.3-16 167.1-16zM32 144l384 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zm209 79c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 102.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-102.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72z\"]\n  };\n  var faTrashRestoreAlt = faTrashCanArrowUp;\n  var faFont = {\n    prefix: 'fas',\n    iconName: 'font',\n    icon: [512, 512, [], \"f031\", \"M285.1 50.7C279.9 39.3 268.5 32 256 32s-23.9 7.3-29.1 18.7L59.5 416 48 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l88 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-6.1 0 22-48 208.3 0 22 48-6.1 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l88 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0-167.4-365.3zM330.8 304L181.2 304 256 140.8 330.8 304z\"]\n  };\n  var faBoreHole = {\n    prefix: 'fas',\n    iconName: 'bore-hole',\n    icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32l0 232.6c-19.1 11.1-32 31.7-32 55.4 0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4L288 32c0-17.7-14.3-32-32-32zM0 384l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-272c0-26.5-21.5-48-48-48l-48 0c-26.5 0-48 21.5-48 48l0 144c0 61.9-50.1 112-112 112S144 381.9 144 320l0-144c0-26.5-21.5-48-48-48l-48 0c-26.5 0-48 21.5-48 48L0 384z\"]\n  };\n  var faVirusCovid = {\n    prefix: 'fas',\n    iconName: 'virus-covid',\n    icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 33.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-11.3-11.3-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3l33.6 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-33.6 0c-4.2 30.7-16.3 58.8-34.1 82.3l23.8 23.8 11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l11.3-11.3-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1l0 33.6 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-33.6c-30.7-4.2-58.8-16.3-82.3-34.1l-23.8 23.8 11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l11.3 11.3 23.8-23.8C97.9 338.8 85.8 310.7 81.6 280l-33.6 0 0 16c0 13.3-10.7 24-24 24S0 309.3 0 296l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 33.6 0c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92 149.7 115.7c23.5-17.9 51.7-29.9 82.3-34.1l0-33.6-16 0c-13.3 0-24-10.7-24-24zm32 200a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faFilePdf = {\n    prefix: 'fas',\n    iconName: 'file-pdf',\n    icon: [576, 512, [], \"f1c1\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l80 0 0-112c0-35.3 28.7-64 64-64l176 0 0-165.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM240 380c-11 0-20 9-20 20l0 128c0 11 9 20 20 20s20-9 20-20l0-28 12 0c33.1 0 60-26.9 60-60s-26.9-60-60-60l-32 0zm32 80l-12 0 0-40 12 0c11 0 20 9 20 20s-9 20-20 20zm96-80c-11 0-20 9-20 20l0 128c0 11 9 20 20 20l32 0c28.7 0 52-23.3 52-52l0-64c0-28.7-23.3-52-52-52l-32 0zm20 128l0-88 12 0c6.6 0 12 5.4 12 12l0 64c0 6.6-5.4 12-12 12l-12 0zm88-108l0 128c0 11 9 20 20 20s20-9 20-20l0-44 28 0c11 0 20-9 20-20s-9-20-20-20l-28 0 0-24 28 0c11 0 20-9 20-20s-9-20-20-20l-48 0c-11 0-20 9-20 20z\"]\n  };\n  var faLanguage = {\n    prefix: 'fas',\n    iconName: 'language',\n    icon: [576, 512, [], \"f1ab\", \"M160 0c17.7 0 32 14.3 32 32l0 32 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-9.6 0-8.4 23.1c-16.4 45.2-41.1 86.5-72.2 122 14.2 8.8 29 16.6 44.4 23.5l50.4 22.4 62.2-140c5.1-11.6 16.6-19 29.2-19s24.1 7.4 29.2 19l128 288c7.2 16.2-.1 35.1-16.2 42.2s-35.1-.1-42.2-16.2l-20-45-157.5 0-20 45c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2l39.8-89.5-50.4-22.4c-23-10.2-45-22.4-65.8-36.4-21.3 17.2-44.6 32.2-69.5 44.7L78.3 380.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l34.5-17.3c16.3-8.2 31.8-17.7 46.4-28.3-13.8-12.7-26.8-26.4-38.9-40.9L81.6 224.7c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l10.2 12.2c11.5 13.9 24.1 26.8 37.4 38.7 27.5-30.4 49.2-66.1 63.5-105.4l.5-1.2-210.3 0C14.3 128 0 113.7 0 96S14.3 64 32 64l96 0 0-32c0-17.7 14.3-32 32-32zM416 270.8L365.7 384 466.3 384 416 270.8z\"]\n  };\n  var faShieldHalved = {\n    prefix: 'fas',\n    iconName: 'shield-halved',\n    icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0zm0 66.8l0 378.1c138-66.8 175.1-214.8 176-303.4l-176-74.6 0 0z\"]\n  };\n  var faShieldAlt = faShieldHalved;\n  var faCaretUp = {\n    prefix: 'fas',\n    iconName: 'caret-up',\n    icon: [384, 512, [], \"f0d8\", \"M32 352c-12.9 0-24.6-7.8-29.6-19.8S.2 306.5 9.4 297.4l160-160c12.5-12.5 32.8-12.5 45.3 0l160 160c9.2 9.2 11.9 22.9 6.9 34.9S364.9 352 352 352L32 352z\"]\n  };\n  var faFilePen = {\n    prefix: 'fas',\n    iconName: 'file-pen',\n    icon: [640, 512, [128221, \"file-edit\"], \"f31c\", \"M128.1 0c-35.3 0-64 28.7-64 64l0 384c0 35.3 28.7 64 64 64l146.2 0 10.9-54.5c4.3-21.7 15-41.6 30.6-57.2l132.2-132.2 0-97.5c0-17-6.7-33.3-18.7-45.3L322.8 18.7C310.8 6.7 294.5 0 277.6 0L128.1 0zM389.6 176l-93.5 0c-13.3 0-24-10.7-24-24l0-93.5 117.5 117.5zM332.3 466.9l-11.9 59.6c-.2 .9-.3 1.9-.3 2.9 0 8 6.5 14.6 14.6 14.6 1 0 1.9-.1 2.9-.3l59.6-11.9c12.4-2.5 23.8-8.6 32.7-17.5l118.9-118.9-80-80-118.9 118.9c-8.9 8.9-15 20.3-17.5 32.7zm267.8-123c22.1-22.1 22.1-57.9 0-80s-57.9-22.1-80 0l-28.8 28.8 80 80 28.8-28.8z\"]\n  };\n  var faFileEdit = faFilePen;\n  var faPersonBiking = {\n    prefix: 'fas',\n    iconName: 'person-biking',\n    icon: [576, 512, [128692, \"biking\"], \"f84a\", \"M368 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L256 305.1 256 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-10.7-5.3-20.7-14.2-26.6L263 232.9 323.3 184.4 364 217c5.7 4.5 12.7 7 20 7l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.8 0zM112 512a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm352 0a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n  };\n  var faBiking = faPersonBiking;\n  var faBookOpenReader = {\n    prefix: 'fas',\n    iconName: 'book-open-reader',\n    icon: [512, 512, [\"book-reader\"], \"f5da\", \"M256 152a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm0 298.7l0-149.3c16.3-6.8 32.9-13.7 49.7-20.7 39-16.2 80.8-24.6 123.1-24.6l19.2 0 0 160-19.2 0c-59.1 0-117.7 11.7-172.3 34.5l-.5 .2zM256 232l-25.1-10.5C184.1 202 133.9 192 83.2 192L48 192c-26.5 0-48 21.5-48 48L0 432c0 26.5 21.5 48 48 48l35.2 0c50.7 0 100.9 10 147.7 29.5l12.8 5.3c7.9 3.3 16.7 3.3 24.6 0l12.8-5.3c46.8-19.5 97-29.5 147.7-29.5l35.2 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-35.2 0c-50.7 0-100.9 10-147.7 29.5L256 232z\"]\n  };\n  var faBookReader = faBookOpenReader;\n  var faGlassWaterDroplet = {\n    prefix: 'fas',\n    iconName: 'glass-water-droplet',\n    icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM83 297.5L66.4 64 317.6 64 301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5-6.1-7.7-17.5-7.7-23.6 0-18.5 23.4-52.2 69.5-52.2 93.5 0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n  };\n  var faTowerBroadcast = {\n    prefix: 'fas',\n    iconName: 'tower-broadcast',\n    icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M87.9 11.5c-11.3-6.9-26.1-3.2-33 8.1-24.8 41-39 89.1-39 140.4s14.2 99.4 39 140.4c6.9 11.3 21.6 15 33 8.1s15-21.6 8.1-33C75.7 241.9 64 202.3 64 160S75.7 78.1 96.1 44.4c6.9-11.3 3.2-26.1-8.1-33zm400.1 0c-11.3 6.9-15 21.6-8.1 33 20.4 33.7 32.1 73.3 32.1 115.6s-11.7 81.9-32.1 115.6c-6.9 11.3-3.2 26.1 8.1 33s26.1 3.2 33-8.1c24.8-41 39-89.1 39-140.4S545.8 60.6 521 19.6c-6.9-11.3-21.6-15-33-8.1zM320 215.4c19.1-11.1 32-31.7 32-55.4 0-35.3-28.7-64-64-64s-64 28.7-64 64c0 23.7 12.9 44.4 32 55.4L256 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-264.6zM180.2 91c7.2-11.2 3.9-26-7.2-33.2s-26-3.9-33.2 7.2c-17.6 27.4-27.8 60-27.8 95s10.2 67.6 27.8 95c7.2 11.2 22 14.4 33.2 7.2s14.4-22 7.2-33.2c-12.8-19.9-20.2-43.6-20.2-69s7.4-49.1 20.2-69zM436.2 65c-7.2-11.2-22-14.4-33.2-7.2s-14.4 22-7.2 33.2c12.8 19.9 20.2 43.6 20.2 69s-7.4 49.1-20.2 69c-7.2 11.2-3.9 26 7.2 33.2s26 3.9 33.2-7.2c17.6-27.4 27.8-60 27.8-95s-10.2-67.6-27.8-95z\"]\n  };\n  var faBroadcastTower = faTowerBroadcast;\n  var faMinimize = {\n    prefix: 'fas',\n    iconName: 'minimize',\n    icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2S322.1 32.2 329 39l40 40 73.4-73.4C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143 473 183c6.9 6.9 8.9 17.2 5.2 26.2S465.7 224 456 224zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433 329 473c-6.9 6.9-17.2 8.9-26.2 5.2S288 465.7 288 456l0-144c0-13.3 10.7-24 24-24l144 0zm-256 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40-73.4 73.4C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2S46.3 288 56 288l144 0zM56 224c-9.7 0-18.5-5.8-22.2-14.8S32.2 189.9 39 183L79 143 5.7 69.7C2 66 0 61.1 0 56S2 46 5.7 42.3L42.3 5.7C46 2 50.9 0 56 0S66 2 69.7 5.7L143 79 183 39c6.9-6.9 17.2-8.9 26.2-5.2S224 46.3 224 56l0 144c0 13.3-10.7 24-24 24L56 224z\"]\n  };\n  var faCompressArrowsAlt = faMinimize;\n  var faArrowRightToCity = {\n    prefix: 'fas',\n    iconName: 'arrow-right-to-city',\n    icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 80 48 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 16 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48l0-416zm64 64l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 336l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM153 167l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l102.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n  };\n  var faLaptopMedical = {\n    prefix: 'fas',\n    iconName: 'laptop-medical',\n    icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 240-64 0 0-240-384 0 0 240-64 0 0-240zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2 0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faBreadSlice = {\n    prefix: 'fas',\n    iconName: 'bread-slice',\n    icon: [512, 512, [], \"f7ec\", \"M64 432l0-176c-35.3 0-64-28.7-64-64 0-216.5 512-216.5 512 0 0 35.3-28.7 64-64 64l0 176c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48z\"]\n  };\n  var faGlobe = {\n    prefix: 'fas',\n    iconName: 'globe',\n    icon: [512, 512, [127760], \"f0ac\", \"M351.9 280l-190.9 0c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zM160.9 232l190.9 0C349 167.5 334.7 108.1 314.4 64.6 303 40.2 290.7 22.8 279.3 12.2 268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4zm-48 0C116.4 146.4 138.5 66.9 170.8 14.7 78.7 47.3 10.9 131.2 1.5 232l111.4 0zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3L1.5 280zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3l-111.4 0zm111.4-48C501.9 131.2 434.1 47.3 342 14.7 374.3 66.9 396.4 146.4 399.9 232l111.4 0z\"]\n  };\n  var faFolderMinus = {\n    prefix: 'fas',\n    iconName: 'folder-minus',\n    icon: [512, 512, [], \"f65d\", \"M448 448L64 448c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 240c0 35.3-28.7 64-64 64zM184 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faMaskFace = {\n    prefix: 'fas',\n    iconName: 'mask-face',\n    icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1L64 128c-35.3 0-64 28.7-64 64l0 78.7c0 62.6 45.2 116 107 126.3l97.9 16.3c33 22 72.6 34.7 115.1 34.7s82.2-12.8 115.1-34.7L533 396.9c61.7-10.3 107-63.7 107-126.3l0-78.7c0-35.3-28.7-64-64-64l-89.2 0c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM135.9 336.9l-18.4-3.1C86.6 328.7 64 302 64 270.7l0-78.7 48 0 0 48c0 35 8.6 67.9 23.9 96.9zm386.6-3.1l-18.4 3.1C519.4 307.9 528 275 528 240l0-48 48 0 0 78.7c0 31.3-22.6 58-53.5 63.1zM192 232c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm56 56l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faBong = {\n    prefix: 'fas',\n    iconName: 'bong',\n    icon: [512, 512, [], \"f55c\", \"M448.5 384c0 41.5-13.1 79.9-35.5 111.3-7.9 11.1-21.2 16.7-34.8 16.7l-243.3 0c-13.7 0-26.9-5.6-34.8-16.7-22.4-31.4-35.5-69.8-35.5-111.3 0-71.1 38.6-133.1 96-166.3l0-153.7c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 153.7c14.2 8.2 27.2 18.2 38.8 29.6l39.3-39.3-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16 16 32 32 48 48 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3c17.3 28.9 27.3 62.6 27.3 98.8zM288.5 64l-64 0 0 190.6-32 18.5c-19.5 11.3-35.7 27.5-46.9 46.9l221.8 0c-11.2-19.4-27.4-35.6-46.9-46.9l-32-18.5 0-190.6z\"]\n  };\n  var faRoadBridge = {\n    prefix: 'fas',\n    iconName: 'road-bridge',\n    icon: [576, 512, [], \"e563\", \"M32 32l208 0 0 64-24 0 0 64 24 0 0 129.3c-45.4 7.6-80 47.1-80 94.7l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-94c0-38.8-26.4-72.6-64-82l0-112 40 0 0-64-8 0C14.3 96 0 81.7 0 64S14.3 32 32 32zM88 96l0 64 80 0 0-64-80 0zM336 32l72 0 0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 72 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-72 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-72 0c-26.5 0-48-21.5-48-48l0-352c0-26.5 21.5-48 48-48zm96 160c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24z\"]\n  };\n  var faArrowUp91 = {\n    prefix: 'fas',\n    iconName: 'arrow-up-9-1',\n    icon: [512, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM365.1 206.6c-9.6 14.8-5.4 34.6 9.4 44.3s34.6 5.4 44.3-9.4l42.1-64.9c12.4-19.2 19.1-41.6 19.1-64.5 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.1 23.9 66.7 56.8 76.6l-11.7 18zM376 112a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm42.7 182c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26z\"]\n  };\n  var faSortNumericUpAlt = faArrowUp91;\n  var faMountainCity = {\n    prefix: 'fas',\n    iconName: 'mountain-city',\n    icon: [640, 512, [], \"e52e\", \"M256.3 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 48 48 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 16 0c26.5 0 48 21.5 48 48l0 320c0 26.5-21.5 48-48 48l-77.8 0c4-15.4 2.4-32.6-6.7-48.2L354.6 256 368.3 256c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-6.1 0-11.4 3.4-14.1 8.5l-42.6-73c-6-10.2-14.1-18-23.3-23.3l0-56.2zm64 64l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm160 96l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm-272-64.7l-65.1 111.6 33.1 33.1 48-48 40.4 0-56.4-96.7zm-27.6-47.9c12.3-21.2 42.9-21.2 55.3 0L420.3 463.9c12.4 21.3-2.9 48.1-27.6 48.1L56 512c-24.7 0-40.1-26.8-27.6-48.1L196.7 175.4z\"]\n  };\n  var faArrowDown91 = {\n    prefix: 'fas',\n    iconName: 'arrow-down-9-1',\n    icon: [512, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M230.6 390.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm134.5-184l11.7-18c-32.9-9.9-56.8-40.5-56.8-76.6 0-44.2 35.8-80 80-80s80 35.8 80 80c0 22.9-6.6 45.3-19.1 64.5l-42.1 64.9c-9.6 14.8-29.4 19.1-44.3 9.4s-19.1-29.4-9.4-44.3zM424 112a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-5.3 182c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4z\"]\n  };\n  var faSortNumericDesc = faArrowDown91;\n  var faSortNumericDownAlt = faArrowDown91;\n  var faFaceGrinWide = {\n    prefix: 'fas',\n    iconName: 'face-grin-wide',\n    icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64 14.3-64 32-64 32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64 32 28.7 32 64-14.3 64-32 64z\"]\n  };\n  var faGrinAlt = faFaceGrinWide;\n  var faPoop = {\n    prefix: 'fas',\n    iconName: 'poop',\n    icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7 46.9 6.3 83.1 46.5 83.1 95.1 0 11.2-1.9 22-5.5 32l5.5 0c35.3 0 64 28.7 64 64 0 19.1-8.4 36.3-21.7 48l13.7 0c39.8 0 72 32.2 72 72 0 23.2-11 43.8-28 57 34.1 5.7 60 35.3 60 71 0 39.8-32.2 72-72 72L72 512c-39.8 0-72-32.2-72-72 0-35.7 25.9-65.3 60-71-17-13.2-28-33.8-28-57 0-39.8 32.2-72 72-72l13.7 0c-13.3-11.7-21.7-28.9-21.7-48 0-35.3 28.7-64 64-64l16.2 0c44.1-.1 79.8-35.9 79.8-80 0-9.2-1.5-17.9-4.3-26.1-1.8-5.2-.8-11.1 2.8-15.4z\"]\n  };\n  var faDharmachakra = {\n    prefix: 'fas',\n    iconName: 'dharmachakra',\n    icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10.1 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.6 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.6-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faBatteryQuarter = {\n    prefix: 'fas',\n    iconName: 'battery-quarter',\n    icon: [640, 512, [\"battery-2\"], \"f243\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-64 0z\"]\n  };\n  var faBattery2 = faBatteryQuarter;\n  var faAnkh = {\n    prefix: 'fas',\n    iconName: 'ankh',\n    icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1-5.9 6.2-11.8 11.8-17.4 16.7-5.6-4.9-11.5-10.5-17.4-16.7-25.9-27.5-46.6-62.6-46.6-104.1zM160 0C89.3 0 32 57.3 32 128 32 180.4 53.5 223.5 78.8 256L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-46.8 0C266.5 223.5 288 180.4 288 128 288 57.3 230.7 0 160 0z\"]\n  };\n  var faDiamond = {\n    prefix: 'fas',\n    iconName: 'diamond',\n    icon: [512, 512, [9830], \"f219\", \"M17 215L215 17C225.9 6.1 240.6 0 256 0s30.1 6.1 41 17L495 215c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L297 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17L17 297C6.1 286.1 0 271.4 0 256s6.1-30.1 17-41z\"]\n  };\n  var faSubscript = {\n    prefix: 'fas',\n    iconName: 'subscript',\n    icon: [576, 512, [], \"f12c\", \"M96 64C78.3 64 64 78.3 64 96s14.3 32 32 32l15.3 0 89.6 128-89.6 128-15.3 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L240 311.8 325.8 434.4c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0-89.6-128 89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L240 200.2 154.2 77.6C148.2 69.1 138.4 64 128 64L96 64zM544 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9 5.6 11.2 16.9 17.7 28.6 17.7l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128z\"]\n  };\n  var faRupeeSign = {\n    prefix: 'fas',\n    iconName: 'rupee-sign',\n    icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144 0 54.3-30 101.5-74.4 126.1l41 136.7c5.1 16.9-4.5 34.8-21.5 39.8s-34.8-4.5-39.8-21.5L120.1 319.8c-2.7 .1-5.4 .2-8.1 .2l-48 0 0 128c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0 0 160zm285.1-32l34.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.9 0c-7.2 0-13.1 5.9-13.1 13.1 0 5.7 3.7 10.7 9.1 12.5l49.4 15.9c31.9 10.3 53.5 39.9 53.5 73.4 0 42.6-34.5 77.1-77.1 77.1L320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l50.9 0c7.2 0 13.1-5.9 13.1-13.1 0-5.7-3.7-10.7-9.1-12.5l-49.4-15.9c-31.9-10.3-53.5-39.9-53.5-73.4 0-42.6 34.5-77.1 77.1-77.1z\"]\n  };\n  var faRupee = faRupeeSign;\n  var faPersonRifle = {\n    prefix: 'fas',\n    iconName: 'person-rifle',\n    icon: [512, 512, [], \"e54e\", \"M416 0L384 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9l-23-92.1 44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3 0-109.3c0-11.8-6.4-22.2-16-27.7L432 16c0-8.8-7.2-16-16-16zM224 208C118 208 32 294 32 400l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-32.5 12.1-62.1 32-84.7l0 196.7 160 0 0-293.1c-20-7.1-41.6-10.9-64-10.9zM280 88a72 72 0 1 0 -144 0 72 72 0 1 0 144 0z\"]\n  };\n  var faD = {\n    prefix: 'fas',\n    iconName: 'd',\n    icon: [384, 512, [100], \"44\", \"M0 64C0 46.3 14.3 32 32 32l128 0c123.7 0 224 100.3 224 224S283.7 480 160 480L32 480c-17.7 0-32-14.3-32-32L0 64zM64 96l0 320 96 0c88.4 0 160-71.6 160-160S248.4 96 160 96L64 96z\"]\n  };\n  var faSquareNfi = {\n    prefix: 'fas',\n    iconName: 'square-nfi',\n    icon: [448, 512, [], \"e576\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM93 172.3l35 63 0-51.4c0-13.3 10.7-24 24-24s24 10.7 24 24l0 144c0 10.9-7.4 20.5-18 23.2s-21.7-2-27-11.6l-35-63 0 51.4c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-10.9 7.4-20.5 18-23.2s21.7 2 27 11.6zM208 184c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0 32 40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144zm192 0l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faTeeth = {\n    prefix: 'fas',\n    iconName: 'teeth',\n    icon: [512, 512, [], \"f62e\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM144 208l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zm128 0l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zM80 176c-17.7 0-32 14.3-32 32l0 24c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-24c0-17.7-14.3-32-32-32zm320 32l0 24c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-24c0-17.7-14.3-32-32-32s-32 14.3-32 32zM48 336c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 16zm144 48c26.5 0 48-21.5 48-48l0-16c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 16c0 26.5 21.5 48 48 48zm128 0c26.5 0 48-21.5 48-48l0-16c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 16c0 26.5 21.5 48 48 48zm112-16c17.7 0 32-14.3 32-32l0-16c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 16c0 17.7 14.3 32 32 32z\"]\n  };\n  var faMagnifyingGlassDollar = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass-dollar',\n    icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM212 96c-11 0-20 9-20 20l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L168 256c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20z\"]\n  };\n  var faSearchDollar = faMagnifyingGlassDollar;\n  var faDumpsterFire = {\n    prefix: 'fas',\n    iconName: 'dumpster-fire',\n    icon: [640, 512, [], \"f794\", \"M164.3 64L138.7 192 56 192c-13.3 0-24-10.7-24-24l0-4.1c0-2.6 .4-5.1 1.2-7.6L58.5 80.4C61.8 70.6 71 64 81.3 64l83 0zm23.4 128l25.6-128 82.7 0 0 128-108.3 0zM344 64l82.7 0 16 80c-14.7 .2-29.3 5.5-40.9 15.9-11.5 10.3-22.5 21-32.8 32.1l-24.9 0 0-128zM96 240l233.2 0c-6.4 8.8-12.3 17.6-17.7 26.3-21.4 34.7-39.5 76.1-39.5 115.8 0 17.1 2.1 33.8 6 49.9l-120.4 0 1.9 10.3c3.2 17.4-8.4 34-25.8 37.2s-34-8.4-37.2-25.8C71 313.3 58 242.1 57.7 240L96 240zm512-72c0 11-7.4 20.3-17.5 23.1-.9-.8-1.7-1.6-2.6-2.4-21.8-20-54.3-21.8-78-5.5-4.2-4.3-8.5-8.5-12.9-12.6l-21.3-106.6 83 0c10.3 0 19.5 6.6 22.8 16.4l25.3 75.9c.8 2.4 1.2 5 1.2 7.6l0 4.1zM505.7 240.3L518 226.5c5.4-6.1 13.3-8.8 20.9-8.9 7.2 0 14.3 2.6 19.9 7.8 19.7 18.3 39.8 43.2 55 70.6 15.1 27.2 26.2 58.1 26.2 88.1 0 88.7-71.3 159.8-160 159.8-89.6 0-160-71.3-160-159.8 0-37.3 16-73.4 36.8-104.5 20.9-31.3 47.5-59 70.9-80.2 5.7-5.2 13.1-7.7 20.3-7.5s13.4 3.2 18.8 7.5c14.4 11.4 38.9 40.7 38.9 40.7zM544 432.2c0-36.5-37-73-54.8-88.4-5.4-4.7-13.1-4.7-18.5 0-17.7 15.4-54.8 51.9-54.8 88.4 0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n  };\n  var faUpload = {\n    prefix: 'fas',\n    iconName: 'upload',\n    icon: [448, 512, [], \"f093\", \"M256 109.3L256 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-210.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 109.3zM224 400c44.2 0 80-35.8 80-80l80 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64l80 0c0 44.2 35.8 80 80 80zm144 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faUserSlash = {\n    prefix: 'fas',\n    iconName: 'user-slash',\n    icon: [576, 512, [62714, \"user-alt-slash\", \"user-large-slash\"], \"f506\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L311.5 245.7c55-10.9 96.5-59.5 96.5-117.7 0-66.3-53.7-120-120-120-58.2 0-106.8 41.5-117.7 96.5L41-24.9zM235.6 305.4C147.9 316.6 80 391.5 80 482.3 80 498.7 93.3 512 109.7 512l332.5 0-206.6-206.6z\"]\n  };\n  var faUserAltSlash = faUserSlash;\n  var faUserLargeSlash = faUserSlash;\n  var faArrowLeft = {\n    prefix: 'fas',\n    iconName: 'arrow-left',\n    icon: [512, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n  };\n  var faVialVirus = {\n    prefix: 'fas',\n    iconName: 'vial-virus',\n    icon: [576, 512, [], \"e597\", \"M64 32C64 14.3 78.3 0 96 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 151.7c-18.5 0-37 7-51.1 21.1-21.6 21.6-26.6 53.6-15 79.9-26.9 10.4-45.9 36.6-45.9 67.1s19 56.7 45.9 67.1c-7.3 16.5-8 35.2-2.3 52.2-13.4 5.7-28.2 8.8-43.6 8.8-61.9 0-112-50.1-112-112L96 64C78.3 64 64 49.7 64 32zm96 32l0 128 96 0 0-128-96 0zM280 408c-13.3 0-24-10.7-24-24s10.7-24 24-24c28.8 0 43.2-34.8 22.9-55.2-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.4 20.4 55.2 5.9 55.2-22.9 0-13.3 10.7-24 24-24s24 10.7 24 24c0 28.8 34.8 43.2 55.2 22.9 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.4 20.4-5.9 55.2 22.9 55.2 13.3 0 24 10.7 24 24s-10.7 24-24 24c-28.8 0-43.2 34.8-22.9 55.2 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.4-20.4-55.2-5.9-55.2 22.9 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-28.8-34.8-43.2-55.2-22.9-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.4-20.4 5.9-55.2-22.9-55.2zm104-32a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faCheckDouble = {\n    prefix: 'fas',\n    iconName: 'check-double',\n    icon: [384, 512, [], \"f560\", \"M249.9 66.8c10.4-14.3 7.2-34.3-7.1-44.7s-34.3-7.2-44.7 7.1l-106 145.7-37.5-37.5c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c6.6 6.6 15.8 10 25.1 9.3s17.9-5.5 23.4-13.1l128-176zm128 136c10.4-14.3 7.2-34.3-7.1-44.7s-34.3-7.2-44.7 7.1l-170 233.7-69.5-69.5c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c6.6 6.6 15.8 10 25.1 9.3s17.9-5.5 23.4-13.1l192-264z\"]\n  };\n  var faPaw = {\n    prefix: 'fas',\n    iconName: 'paw',\n    icon: [512, 512, [], \"f1b0\", \"M234.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5 .3-86.2 32.6-96.8 70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3-14.3-70.1 10.2-84.1 59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5l0 1.6c0 25.8-20.9 46.7-46.7 46.7-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2-25.8 0-46.7-20.9-46.7-46.7l0-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3 29.1 51.7 10.2 84.1-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5 46.9 53.9 32.6 96.8-52.1 69.1-84.4 58.5z\"]\n  };\n  var faHelmetSafety = {\n    prefix: 'fas',\n    iconName: 'helmet-safety',\n    icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M352 264l0-200c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 200c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-185.9C90 109.8 32 191.8 32 288l0 64 512 0 0-64c-1-95.2-58.4-177.7-144-209.8L400 264c0 13.3-10.7 24-24 24s-24-10.7-24-24zM40 400c-22.1 0-40 17.9-40 40s17.9 40 40 40l496 0c22.1 0 40-17.9 40-40s-17.9-40-40-40L40 400z\"]\n  };\n  var faHardHat = faHelmetSafety;\n  var faHatHard = faHelmetSafety;\n  var faE = {\n    prefix: 'fas',\n    iconName: 'e',\n    icon: [320, 512, [101], \"45\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-128 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-128 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n  };\n  var faFaceLaughSquint = {\n    prefix: 'fas',\n    iconName: 'face-laugh-squint',\n    icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM107.7 332.1C102 318 113.4 304 128.6 304l254.9 0c15.2 0 26.6 14 20.9 28.1-23.8 58.6-81.2 99.9-148.3 99.9s-124.6-41.3-148.3-99.9zm15-188.8c4.5-6.8 13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 192 125.8 164.3c-6.2-5.2-7.6-14.3-3.1-21.1zm263.6 21.1L353 192 386.2 219.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5s3.1 15.9-3.1 21.1z\"]\n  };\n  var faLaughSquint = faFaceLaughSquint;\n  var faDownLeftAndUpRightToCenter = {\n    prefix: 'fas',\n    iconName: 'down-left-and-up-right-to-center',\n    icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439.5 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2S450.2 240 440.5 240l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87zM72.5 272l144 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87-39-39c-6.9-6.9-8.9-17.2-5.2-26.2S62.8 272 72.5 272z\"]\n  };\n  var faCompressAlt = faDownLeftAndUpRightToCenter;\n  var faGifts = {\n    prefix: 'fas',\n    iconName: 'gifts',\n    icon: [576, 512, [], \"f79c\", \"M202-30.6c12.5 4.4 19 18.1 14.6 30.6l-8.2 23.1 25.4-18.5c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5L233.8 64 272 64c26.5 0 48 21.5 48 48l0 2.1c-54.7 10.4-96 58.4-96 116l0 1.9c0 8.9 1 17.5 2.8 25.9-11.9 17.8-18.8 39.1-18.8 62.1l0 128c0 23.8 7.4 45.9 20.1 64L48 512c-26.5 0-48-21.5-48-48L0 112C0 85.5 21.5 64 48 64l38.2 0-28.3-20.6C47.2 35.6 44.8 20.6 52.6 9.9S75.4-3.2 86.1 4.6l27.4 20-8.3-25C101-13 107.8-26.6 120.4-30.8s26.2 2.6 30.4 15.2l9.9 29.8 10.7-30.2c4.4-12.5 18.1-19 30.6-14.6zM489.9 208c-7.5 0-14.5 3.8-18.6 10.1L446.9 256 488 256c13.3 0 24-10.7 24-24l0-1.9c0-12.2-9.9-22.1-22.1-22.1zM385.1 256l-24.4-37.9c-4.1-6.3-11.1-10.1-18.6-10.1-12.2 0-22.1 9.9-22.1 22.1l0 1.9c0 13.3 10.7 24 24 24l41.1 0zM281.9 268.5c-6.3-10.7-9.9-23.2-9.9-36.5l0-1.9c0-38.7 31.4-70.1 70.1-70.1 23.8 0 46 12.1 58.9 32.1l15 23.2 15-23.2c12.9-20 35.1-32.1 58.9-32.1 38.7 0 70.1 31.4 70.1 70.1l0 1.9c0 13.3-3.6 25.8-9.9 36.5 15.7 11.7 25.9 30.4 25.9 51.5l0 128c0 35.3-28.7 64-64 64l-72 0 0-208-48 0 0 208-72 0c-35.3 0-64-28.7-64-64l0-128c0-21.1 10.2-39.8 25.9-51.5z\"]\n  };\n  var faBed = {\n    prefix: 'fas',\n    iconName: 'bed',\n    icon: [576, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32l0 224 224 0 0-128c0-17.7 14.3-32 32-32l160 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64-448 0 0 64c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 46.3 14.3 32 32 32zm80 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n  };\n  var faMoneyBillTransfer = {\n    prefix: 'fas',\n    iconName: 'money-bill-transfer',\n    icon: [640, 512, [], \"e528\", \"M31 105c-9.4-9.4-9.4-24.6 0-33.9L103-1c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-31 31 67.7 0 0 0 338.3 0c35.3 0 64 28.7 64 64l0 178.2-5.1-5.1c-28.1-28.1-73.7-28.1-101.8 0-27.2 27.2-28.1 70.6-2.8 98.9l67.7 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-406.1 0c-35.3 0-64-28.7-64-64l0-178.2 5.1 5.1c28.1 28.1 73.7 28.1 101.8 0 27.2-27.2 28.1-70.6 2.8-98.9l-67.7 0 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L31 105zM416 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm88-64.5c4.4 .5 8-3.1 8-7.5l0-48c0-4.4-3.6-8-8-8l-48 0c-4.4 0-8.1 3.6-7.5 8 3.6 29 26.6 51.9 55.5 55.5zm-368 129c-4.4-.5-8 3.1-8 7.5l0 48c0 4.4 3.6 8 8 8l48 0c4.4 0 8.1-3.6 7.5-8-3.6-29-26.6-51.9-55.5-55.5z\"]\n  };\n  var faPersonRunning = {\n    prefix: 'fas',\n    iconName: 'person-running',\n    icon: [448, 512, [127939, \"running\"], \"f70c\", \"M256.5-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM123.6 176c-3.3 0-6.2 2-7.4 5L94.2 235.9c-6.6 16.4-25.2 24.4-41.6 17.8s-24.4-25.2-17.8-41.6l21.9-54.9C67.7 129.9 94.1 112 123.6 112l97.3 0c28.5 0 54.8 15.1 69.1 39.7l32.8 56.3 61.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-61.6 0c-22.8 0-43.8-12.1-55.3-31.8l-10-17.1-20.7 70.4 75.4 22.6c27.7 8.3 41.8 39 30.1 65.5L285.7 509c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2l49.2-110.8-95.9-28.8c-32.7-9.8-52-43.7-43.7-76.8l22.7-90.6-35.9 0zm-8 181c13.3 14.9 30.7 26.3 51.2 32.4l4.7 1.4-6.9 19.3c-5.8 16.3-16 30.8-29.3 41.8L52.9 519.8c-13.6 11.2-33.8 9.3-45-4.3s-9.3-33.8 4.3-45l82.4-67.9c4.5-3.7 7.8-8.5 9.8-13.9L115.6 357z\"]\n  };\n  var faRunning = faPersonRunning;\n  var faCircleChevronDown = {\n    prefix: 'fas',\n    iconName: 'circle-chevron-down',\n    icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512 256 256 0 1 0 0-512zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n  };\n  var faChevronCircleDown = faCircleChevronDown;\n  var faUserNurse = {\n    prefix: 'fas',\n    iconName: 'user-nurse',\n    icon: [448, 512, [], \"f82f\", \"M96 44.9c0-12.7 7.5-24.2 19.2-29.3l96-42c8.2-3.6 17.5-3.6 25.7 0l96 42C344.5 20.7 352 32.2 352 44.9l0 99.1c0 70.7-57.3 128-128 128S96 214.7 96 144l0-99.1zM304 128l-111.6 0-.4 0-48 0 0 16c0 44.2 35.8 80 80 80s80-35.8 80-80l0-16zM208 16l0 16-16 0c-4.4 0-8 3.6-8 8l0 16c0 4.4 3.6 8 8 8l16 0 0 16c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-16 16 0c4.4 0 8-3.6 8-8l0-16c0-4.4-3.6-8-8-8l-16 0 0-16c0-4.4-3.6-8-8-8L216 8c-4.4 0-8 3.6-8 8zM142.6 323c-6.5-4.9-15.2-6.2-22.6-2.8-61.4 28.2-104.1 90.2-104.1 162.1 0 16.4 13.3 29.7 29.7 29.7l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-72-42.7-134-104.1-162.1-7.4-3.4-16.1-2.1-22.6 2.8l-67 50.2c-8.5 6.4-20.3 6.4-28.8 0l-67-50.2z\"]\n  };\n  var faFaceKissWinkHeart = {\n    prefix: 'fas',\n    iconName: 'face-kiss-wink-heart',\n    icon: [640, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M543.7 268.3c.2-4.1 .3-8.2 .3-12.3 0-141.4-114.6-256-256-256S32 114.6 32 256 146.6 512 288 512c41.4 0 80.5-9.8 115.1-27.3-7.6-17.1-16.1-38.8-21.8-61.7-7.7-30.5-14.1-76.2 8.2-114.7l2.7-4.6c29.5-51 94.7-68.5 145.7-39 2 1.2 4 2.4 5.9 3.7zM240 304c0-8.8 7.2-16 16-16l32 0c26.5 0 48 21.5 48 48 0 12.3-4.6 23.5-12.2 32 7.6 8.5 12.2 19.7 12.2 32 0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16zM208 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm152 20c-11 0-20 9-20 20s-9 20-20 20-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0zM542.8 350c-2.2-18.3-12.9-34.6-28.9-43.8-28.1-16.2-63.9-6.6-80.1 21.5l-2.7 4.6c-24.5 42.5 7.9 117.9 24.4 150.8 5.1 10.1 15.5 16.1 26.8 15.5 36.7-2.2 118.2-11.7 142.8-54.2l2.7-4.6c16.2-28.1 6.6-63.9-21.5-80.1-16-9.2-35.4-10.4-52.4-3.1l-9.8 4.2-1.3-10.6z\"]\n  };\n  var faKissWinkHeart = faFaceKissWinkHeart;\n  var faFill = {\n    prefix: 'fas',\n    iconName: 'fill',\n    icon: [512, 512, [], \"f575\", \"M296 64c6.9 0 13.5 2.7 18.3 7.6L440.4 197.7c4.9 4.9 7.6 11.5 7.6 18.3s-2.7 13.5-7.6 18.3L386.7 288 65.3 288c1.3-3.9 3.4-7.4 6.3-10.3l96.4-96.4 33.4 33.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136 277.7 71.6c4.9-4.9 11.5-7.6 18.3-7.6zM122.7 136L26.3 232.4C9.5 249.3 0 272.1 0 296s9.5 46.7 26.3 63.6L152.4 485.7C169.3 502.5 192.1 512 216 512s46.7-9.5 63.6-26.3L485.7 279.6C502.5 262.7 512 239.9 512 216s-9.5-46.7-26.3-63.6L359.6 26.3C342.7 9.5 319.9 0 296 0s-46.7 9.5-63.6 26.3L168 90.7 118.6 41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L122.7 136z\"]\n  };\n  var faMoneyBill1Wave = {\n    prefix: 'fas',\n    iconName: 'money-bill-1-wave',\n    icon: [512, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 109.5L0 419.6c0 19.4 11.8 37.3 30.3 43.3 94 30 158.8 8.4 223.3-13.1 62.4-20.8 124.4-41.5 212.1-15.3 22.2 6.6 46.2-8.8 46.2-32l0-310.1c0-19.4-11.8-37.3-30.3-43.3-94-30-158.8-8.4-223.3 13.1-62.4 20.8-124.4 41.5-212.1 15.3-22.2-6.6-46.3 8.8-46.3 32zM256 368c-53 0-96-50.1-96-112s43-112 96-112 96 50.1 96 112-43 112-96 112zM127.1 405.5c.7 4.4-2.8 8.1-7.2 8.1-15.7 0-32.1-1.8-50-6.1-3.5-.8-6-4-6-7.7L64 360c0-4.4 3.6-8.1 8-7.5 28.1 3.5 50.6 25.2 55.2 53zM448 354.6c0 5-4.6 8.8-9.5 8-15.4-2.5-30.2-3.9-44.4-4.3-4.9-.1-8.7-4.5-7.2-9.2 7.3-23.7 28-41.4 53.2-44.6 4.4-.5 8 3.1 8 7.5l0 42.6zm-8-195.1c-28.1-3.5-50.6-25.2-55.2-53-.7-4.4 2.8-8.1 7.2-8.1 15.7 0 32.1 1.8 50 6.1 3.5 .8 6 4 6 7.7l0 39.9c0 4.4-3.6 8.1-8 7.5zm-322.1-5.8c4.9 .1 8.7 4.5 7.2 9.2-7.3 23.7-28 41.4-53.2 44.6-4.4 .5-8-3.1-8-7.5l0-42.6c0-5 4.6-8.8 9.5-8 15.4 2.5 30.2 3.9 44.4 4.3zM240 188c-11 0-20 9-20 20 0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l48 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0z\"]\n  };\n  var faMoneyBillWaveAlt = faMoneyBill1Wave;\n  var faLandmark = {\n    prefix: 'fas',\n    iconName: 'landmark',\n    icon: [512, 512, [127963], \"f66f\", \"M238.7 5.1c10.5-6.8 24.1-6.8 34.6 0l224 144c11.9 7.7 17.4 22.3 13.4 35.9s-16.5 23-30.7 23l-32 0 0 208 51.2 38.4c8.1 6 12.8 15.5 12.8 25.6 0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32 0-10.1 4.7-19.6 12.8-25.6l51.2-38.4 0 0 0-208-32 0c-14.2 0-26.7-9.4-30.7-23s1.5-28.3 13.4-35.9l224-144zM336 208l0 208 64 0 0-208-64 0zM224 416l64 0 0-208-64 0 0 208zM112 208l0 208 64 0 0-208-64 0z\"]\n  };\n  var faMusic = {\n    prefix: 'fas',\n    iconName: 'music',\n    icon: [512, 512, [127925], \"f001\", \"M468 7c7.6 6.1 12 15.3 12 25l0 304c0 44.2-43 80-96 80s-96-35.8-96-80 43-80 96-80c11.2 0 22 1.6 32 4.6l0-116.7-224 49.8 0 206.3c0 44.2-43 80-96 80s-96-35.8-96-80 43-80 96-80c11.2 0 22 1.6 32 4.6L128 96c0-15 10.4-28 25.1-31.2l288-64c9.5-2.1 19.4 .2 27 6.3z\"]\n  };\n  var faBookMedical = {\n    prefix: 'fas',\n    iconName: 'book-medical',\n    icon: [448, 512, [], \"f7e6\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM192 120c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faShuffle = {\n    prefix: 'fas',\n    iconName: 'shuffle',\n    icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9S384 204.9 384 192l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8l-32.4 43.2-40-53.3 21.2-28.3C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM154 296l40 53.3-21.2 28.3C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L154 296zM438.6 470.6c-9.2 9.2-22.9 11.9-34.9 6.9S384 460.9 384 448l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32S14.3 96 32 96l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n  };\n  var faRandom = faShuffle;\n  var faUnderline = {\n    prefix: 'fas',\n    iconName: 'underline',\n    icon: [384, 512, [], \"f0cd\", \"M0 32C0 14.3 14.3 0 32 0L96 0c17.7 0 32 14.3 32 32S113.7 64 96 64l0 160c0 53 43 96 96 96s96-43 96-96l0-160c-17.7 0-32-14.3-32-32S270.3 0 288 0l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 160c0 88.4-71.6 160-160 160S32 312.4 32 224L32 64C14.3 64 0 49.7 0 32zM0 480c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faBuildingUser = {\n    prefix: 'fas',\n    iconName: 'building-user',\n    icon: [640, 512, [], \"e4da\", \"M64 64C64 28.7 92.7 0 128 0L384 0c35.3 0 64 28.7 64 64l0 121.3c-46.9 19-80 65-80 118.7 0 27.7 8.8 53.4 23.8 74.4-51.5 21-87.8 71.6-87.8 130.7 0 1 0 1.9 0 2.9l-176 0c-35.3 0-64-28.7-64-64L64 64zM208 400l0 64 53.4 0c7.2-29.4 21.3-56.1 40.4-78.3-6.1-19.5-24.3-33.7-45.8-33.7-26.5 0-48 21.5-48 48zM339 224.3c-1-.2-2-.3-3-.3l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l16.7 0c2.1-22.8 8.4-44.3 18.3-63.7zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM176 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm240 80a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM352 512c0-53 43-96 96-96l96 0c53 0 96 43 96 96 0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faRobot = {\n    prefix: 'fas',\n    iconName: 'robot',\n    icon: [640, 512, [129302], \"f544\", \"M352 0c0-17.7-14.3-32-32-32S288-17.7 288 0l0 64-96 0c-53 0-96 43-96 96l0 224c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-224c0-53-43-96-96-96l-96 0 0-64zM160 368c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zM224 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm144 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM64 224c0-17.7-14.3-32-32-32S0 206.3 0 224l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96zm544-32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32z\"]\n  };\n  var faPlus = {\n    prefix: 'fas',\n    iconName: 'plus',\n    icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z\"]\n  };\n  var faAdd = faPlus;\n  var faCopy = {\n    prefix: 'fas',\n    iconName: 'copy',\n    icon: [448, 512, [], \"f0c5\", \"M192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-200.6c0-17.4-7.1-34.1-19.7-46.2L370.6 17.8C358.7 6.4 342.8 0 326.3 0L192 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-16-64 0 0 16-192 0 0-256 16 0 0-64-16 0z\"]\n  };\n  var faChessKing = {\n    prefix: 'fas',\n    iconName: 'chess-king',\n    icon: [448, 512, [9818], \"f43f\", \"M224-32c17.7 0 32 14.3 32 32l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 64 153.8 0c21.1 0 38.2 17.1 38.2 38.2 0 6.4-1.6 12.7-4.7 18.3L352 384 408.2 454.3c5 6.3 7.8 14.1 7.8 22.2 0 19.6-15.9 35.5-35.5 35.5L67.5 512c-19.6 0-35.5-15.9-35.5-35.5 0-8.1 2.7-15.9 7.8-22.2L96 384 4.7 216.6C1.6 210.9 0 204.6 0 198.2 0 177.1 17.1 160 38.2 160l153.8 0 0-64-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-32c0-17.7 14.3-32 32-32z\"]\n  };\n  var faHouseFloodWater = {\n    prefix: 'fas',\n    iconName: 'house-flood-water',\n    icon: [640, 512, [], \"e50e\", \"M496 208l4.5 0c15.2 0 27.5-12.3 27.5-27.5 0-7.9-3.4-15.5-9.4-20.7L348 10.5C340.3 3.7 330.3 0 320 0s-20.3 3.7-28 10.5L121.4 159.8c-6 5.2-9.4 12.8-9.4 20.7 0 15.2 12.3 27.5 27.5 27.5l4.5 0 0 94.4c20.3-9.4 42.1-14.2 64-14.4 33.1-.2 66.3 10.2 94.4 31.4 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 16.9-.1 33.8 2.6 50 8l0-88zm-224-8c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-48zM474.6 412.1c19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 418.3 17.6 426.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm-71.2 96c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 514.3 17.6 522.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n  };\n  var faBitcoinSign = {\n    prefix: 'fas',\n    iconName: 'bitcoin-sign',\n    icon: [320, 512, [], \"e0b4\", \"M64 24C64 10.7 74.7 0 88 0s24 10.7 24 24l0 40 32 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 41.1c54.3 7.8 96 54.4 96 110.9 0 24.2-7.7 46.6-20.7 64.9 31.7 19.8 52.7 55 52.7 95.1 0 61.9-50.1 112-112 112l-16 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-32 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-22.3 0C18.7 448 0 429.3 0 406.3L0 101.6C0 80.8 16.8 64 37.6 64L64 64 64 24zm0 200l112 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-112 0 0 96zm112 64l-112 0 0 96 144 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n  };\n  var faBox = {\n    prefix: 'fas',\n    iconName: 'box',\n    icon: [448, 512, [128230], \"f466\", \"M369.4 128l-34.3-48-222.1 0-34.3 48 290.7 0zM0 148.5c0-13.3 4.2-26.3 11.9-37.2L60.9 42.8C72.9 26 92.3 16 112.9 16l222.1 0c20.7 0 40.1 10 52.1 26.8l48.9 68.5c7.8 10.9 11.9 23.9 11.9 37.2L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 148.5z\"]\n  };\n  var faSquarePlus = {\n    prefix: 'fas',\n    iconName: 'square-plus',\n    icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n  };\n  var faPlusSquare = faSquarePlus;\n  var faArrowsLeftRight = {\n    prefix: 'fas',\n    iconName: 'arrows-left-right',\n    icon: [576, 512, [\"arrows-h\"], \"f07e\", \"M470.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l41.4 41.4-357.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-41.4-41.4 357.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n  };\n  var faArrowsH = faArrowsLeftRight;\n  var faFan = {\n    prefix: 'fas',\n    iconName: 'fan',\n    icon: [512, 512, [], \"f863\", \"M160 144c0-79.5 64.5-144 144-144 8.8 0 16 7.2 16 16l0 152.2c15-5.3 31.2-8.2 48-8.2 79.5 0 144 64.5 144 144 0 8.8-7.2 16-16 16l-152.2 0c5.3 15 8.2 31.2 8.2 48 0 79.5-64.5 144-144 144-8.8 0-16-7.2-16-16l0-152.2c-15 5.3-31.2 8.2-48 8.2-79.5 0-144-64.5-144-144 0-8.8 7.2-16 16-16l152.2 0c-5.3-15-8.2-31.2-8.2-48zm96 144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faCrow = {\n    prefix: 'fas',\n    iconName: 'crow',\n    icon: [640, 512, [], \"f520\", \"M456.5 0c-48.6 0-88 39.4-88 88l0 36-355.2 266.4C-.8 401-3.7 421 6.9 435.2s30.6 17 44.8 6.4l76.8-57.6 131.3 0 46.6 113.1 1 2.2c5.7 10.7 18.8 15.5 30.3 10.8s17.3-17.3 13.9-29l-.8-2.3-39.1-94.9 40.9 0c1.1 0 2.2 0 3.2 0l46.6 113.2 1 2.2c5.7 10.7 18.8 15.5 30.3 10.8s17.3-17.3 13.9-29l-.8-2.3-42-102C485.3 354.1 544.5 280 544.5 192l0-72 80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4-7.1-28.5-32.7-48.5-62.1-48.5l-50.1 0C508.2 12.5 483.8 0 456.5 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faFileCircleCheck = {\n    prefix: 'fas',\n    iconName: 'file-circle-check',\n    icon: [576, 512, [], \"e5a0\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faLinkSlash = {\n    prefix: 'fas',\n    iconName: 'link-slash',\n    icon: [576, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-122-122c4.2-3.4 8.3-7.1 12.1-10.9l71.1-71.1c29.3-29.3 45.8-69.1 45.8-110.6 0-86.4-70-156.5-156.5-156.5-37.3 0-73.1 13.3-101.3 37.2 20.3 10.1 38.7 23.5 54.5 39.5 14.1-8.3 30.2-12.7 46.8-12.7 51.1 0 92.5 41.4 92.5 92.5 0 24.5-9.7 48-27.1 65.4l-71.1 71.1c-3.9 3.9-8.1 7.4-12.6 10.5l-47.5-47.5c16.5-.9 29.7-14.4 30.2-31.1 0-1.3 0-2.6 0-3.9 0-86.3-69.9-156.9-156.5-156.9-19.2 0-37.9 3.5-55.5 10.2L41-24.9zM225.9 160c.6 0 1.1 0 1.7 0 15.1 0 29.5 3.7 42.1 10.2 1.8 1.2 3.6 2.3 5.5 3.1 26.8 16.3 44.8 45.9 44.8 79.6 0 .4 0 .8 0 1.2L225.9 160zM346.2 416L192 261.8c1.2 84.6 69.6 152.9 154.1 154.1zM139.7 209.5l-45.3-45.3-48.6 48.6c-29.3 29.3-45.8 69.1-45.8 110.6 0 86.4 70 156.5 156.5 156.5 37.2 0 73.1-13.3 101.3-37.2-20.3-10.1-38.8-23.5-54.6-39.5-14 8.2-30.1 12.6-46.7 12.6-51.1 0-92.5-41.4-92.5-92.5 0-24.5 9.7-48 27.1-65.4l48.6-48.6z\"]\n  };\n  var faChainBroken = faLinkSlash;\n  var faChainSlash = faLinkSlash;\n  var faUnlink = faLinkSlash;\n  var faArrowRotateRight = {\n    prefix: 'fas',\n    iconName: 'arrow-rotate-right',\n    icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M436.7 74.7L448 85.4 448 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l47.9 0-7.6-7.2c-.2-.2-.4-.4-.6-.6-75-75-196.5-75-271.5 0s-75 196.5 0 271.5 196.5 75 271.5 0c8.2-8.2 15.5-16.9 21.9-26.1 10.1-14.5 30.1-18 44.6-7.9s18 30.1 7.9 44.6c-8.5 12.2-18.2 23.8-29.1 34.7-100 100-262.1 100-362 0S-25 175 75 75c99.9-99.9 261.7-100 361.7-.3z\"]\n  };\n  var faArrowRightRotate = faArrowRotateRight;\n  var faArrowRotateForward = faArrowRotateRight;\n  var faRedo = faArrowRotateRight;\n  var faPenClip = {\n    prefix: 'fas',\n    iconName: 'pen-clip',\n    icon: [512, 512, [\"pen-alt\"], \"f305\", \"M404 0c19.2 0 37.6 7.6 51.1 21.2l35.7 35.7C504.4 70.4 512 88.8 512 108s-7.6 37.6-21.2 51.1L445.9 204 308 66.1 352.9 21.2C366.4 7.6 384.8 0 404 0zM274.1 100l0 0 137.9 137.9-215.1 215.1c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 511.1c-8.3 2.3-17.3 0-23.4-6.2s-8.5-15.1-6.2-23.4L36.4 353.8c4.1-14.6 11.8-27.9 22.6-38.7L240.1 133.9 223 116.9c-9.4-9.4-24.6-9.4-33.9 0L89 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L155.1 82.9c28.1-28.1 73.7-28.1 101.8 0L274.1 100z\"]\n  };\n  var faPenAlt = faPenClip;\n  var faDoorClosed = {\n    prefix: 'fas',\n    iconName: 'door-closed',\n    icon: [448, 512, [128682], \"f52a\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 384c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64zM320 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faArrowDownWideShort = {\n    prefix: 'fas',\n    iconName: 'arrow-down-wide-short',\n    icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M246.6 374.6l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L320 96z\"]\n  };\n  var faSortAmountAsc = faArrowDownWideShort;\n  var faSortAmountDown = faArrowDownWideShort;\n  var faCaretDown = {\n    prefix: 'fas',\n    iconName: 'caret-down',\n    icon: [384, 512, [], \"f0d7\", \"M352 160c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-9.2-9.2-11.9-22.9-6.9-34.9S19.1 160 32 160l320 0z\"]\n  };\n  var faK = {\n    prefix: 'fas',\n    iconName: 'k',\n    icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7C143.4 167.2 76.4 236.3 64 249L64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-107 64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n  };\n  var faCheckToSlot = {\n    prefix: 'fas',\n    iconName: 'check-to-slot',\n    icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 96c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64L96 96zm268.7 19.6c-11.2-7-26-3.6-33.1 7.6l-61.4 98.3-27-36c-8-10.6-23-12.8-33.6-4.8s-12.8 23-4.8 33.6l48 64c4.7 6.3 12.3 9.9 20.2 9.6s15.1-4.5 19.3-11.3l80-128c7-11.2 3.6-26-7.6-33.1zM48 312l0 104c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 312c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faVoteYea = faCheckToSlot;\n  var faFishFins = {\n    prefix: 'fas',\n    iconName: 'fish-fins',\n    icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9s-12.4 26-5.3 38.6L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3 15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8 39.2-29.4 67.2-64.7 81.6-89.5 5.8-9.9 5.8-22.2 0-32.1-14.4-24.8-42.5-60.1-81.6-89.5-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faCompress = {\n    prefix: 'fas',\n    iconName: 'compress',\n    icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32S96 46.3 96 64l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z\"]\n  };\n  var faArrowUpAZ = {\n    prefix: 'fas',\n    iconName: 'arrow-up-a-z',\n    icon: [512, 512, [\"sort-alpha-up\"], \"f15e\", \"M412.6 49.7C407.2 38.8 396.1 32 384 32s-23.2 6.8-28.6 17.7c-50.7 101.3-77.3 154.7-80 160-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9c-2.7-5.3-29.3-58.7-80-160zM384 135.6l20.2 40.4-40.4 0 20.2-40.4zM288 320c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9S307.1 480 320 480l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9S460.9 288 448 288l-128 0c-17.7 0-32 14.3-32 32zM150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80z\"]\n  };\n  var faSortAlphaUp = faArrowUpAZ;\n  var faUserGraduate = {\n    prefix: 'fas',\n    iconName: 'user-graduate',\n    icon: [448, 512, [], \"f501\", \"M241.3-13c-11.4-2.3-23.1-2.3-34.5 0L19.3 24.5C8.1 26.7 0 36.6 0 48 0 58.3 6.5 67.3 16 70.6L16 144 .3 222.6c-.2 .9-.3 1.9-.3 2.9 0 8 6.5 14.6 14.6 14.6l34.9 0c8 0 14.6-6.5 14.6-14.6 0-1-.1-1.9-.3-2.9L48 144 48 77.3 96 86.9 96 144c0 70.7 57.3 128 128 128s128-57.3 128-128l0-57.1 76.7-15.3C439.9 69.3 448 59.4 448 48s-8.1-21.3-19.3-23.5L241.3-13zM224 224c-44.2 0-80-35.8-80-80l160 0c0 44.2-35.8 80-80 80zM120.1 320.1C58.7 348.3 16 410.3 16 482.3 16 498.7 29.3 512 45.7 512l154.3 0 0-146-57.4-43c-6.5-4.9-15.2-6.2-22.6-2.8zM248 512l154.3 0c16.4 0 29.7-13.3 29.7-29.7 0-72-42.7-134-104.1-162.1-7.4-3.4-16.1-2.1-22.6 2.8l-57.4 43 0 146z\"]\n  };\n  var faFileCode = {\n    prefix: 'fas',\n    iconName: 'file-code',\n    icon: [384, 512, [], \"f1c9\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM154.2 295.6c8.6-10.1 7.5-25.2-2.6-33.8s-25.2-7.5-33.8 2.6l-48 56c-7.7 9-7.7 22.2 0 31.2l48 56c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8l-34.6-40.4 34.6-40.4zm112-31.2c-8.6-10.1-23.8-11.2-33.8-2.6s-11.2 23.8-2.6 33.8l34.6 40.4-34.6 40.4c-8.6 10.1-7.5 25.2 2.6 33.8s25.2 7.5 33.8-2.6l48-56c7.7-9 7.7-22.2 0-31.2l-48-56z\"]\n  };\n  var faSoap = {\n    prefix: 'fas',\n    iconName: 'soap',\n    icon: [512, 512, [129532], \"e06e\", \"M208-32a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM320 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 160l112 0c0 23.8 7.4 45.9 20.1 64L160 224c-53 0-96 43-96 96s43 96 96 96l192 0c53 0 96-43 96-96 0-35.1-18.9-65.9-47-82.6 19-19.8 30.7-46.6 31-76.1 45.4 7.6 80 47.1 80 94.7l0 128c0 53-43 96-96 96L96 480c-53 0-96-43-96-96L0 256c0-53 43-96 96-96zm64 112l192 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48s21.5-48 48-48z\"]\n  };\n  var faRecycle = {\n    prefix: 'fas',\n    iconName: 'recycle',\n    icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M152.3 60C198.5-20 314-20 360.2 60l37.3 64.6 27.7-16c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3L436.9 223c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l27.7-16-37.3-64.6c-21.6-37.3-75.4-37.3-97 0l-5.3 9.1c-8.8 15.3-28.4 20.5-43.7 11.7S138.2 84.5 147 69.1l5.3-9.1zM449.7 279.1c15.3-8.8 34.9-3.6 43.7 11.7l5.3 9.1c46.2 80-11.5 180-103.9 180l-74.6 0 0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 32 74.6 0c43.1 0 70.1-46.7 48.5-84l-5.3-9.1c-8.8-15.3-3.6-34.9 11.7-43.7zM51 235.4l-27.7-16c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20L116.5 152c12.8-3.4 26 4.2 29.4 17l23.4 87.4c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-27.7-16-37.3 64.6c-21.6 37.3 5.4 84 48.5 84l10.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.6 0C25.3 480-32.4 380 13.8 300L51 235.4z\"]\n  };\n  var faFaceGrinWink = {\n    prefix: 'fas',\n    iconName: 'face-grin-wink',\n    icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM328 196c-11 0-20 9-20 20s-9 20-20 20-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faGrinWink = faFaceGrinWink;\n  var faWaterLadder = {\n    prefix: 'fas',\n    iconName: 'water-ladder',\n    icon: [640, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M374.5 405.7c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.8 25.7-4.8 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0-24.2 18.3-52.3 35.9-83.4 35.9s-59.1-17.7-83.3-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.6-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3zM511.8 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8-17.5 0-31.8 14.2-31.8 31.8l0 211.8c-23.1-5.1-44.9-4.4-64-.4l0-51.2-192 0 0 48.7c-5.3-.5-10.7-.8-16-.7-16.2 .1-32.4 2.7-48 8l0-216.2c0-52.9 42.9-95.8 95.7-95.8 48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8-17.5 0-31.7 14.2-31.7 31.8l0 96.2 192 0 0-96.2C416 74.9 458.9 32 511.8 32z\"]\n  };\n  var faLadderWater = faWaterLadder;\n  var faSwimmingPool = faWaterLadder;\n  var faTowerCell = {\n    prefix: 'fas',\n    iconName: 'tower-cell',\n    icon: [576, 512, [], \"e585\", \"M59.6 9.8C47.3 4.8 33.3 10.7 28.4 23 15.2 55.5 8 90.9 8 128s7.2 72.5 20.4 105c5 12.3 19 18.2 31.3 13.2s18.2-19 13.2-31.3C62 188.2 56 158.8 56 128s6-60.2 16.9-87c5-12.3-1-26.3-13.2-31.3zm456.8 0c-12.3 5-18.2 19-13.2 31.3 10.9 26.8 16.9 56.2 16.9 87s-6 60.2-16.9 87c-5 12.3 1 26.3 13.2 31.3s26.3-1 31.3-13.2c13.1-32.5 20.4-67.9 20.4-105s-7.2-72.5-20.4-105c-5-12.3-19-18.2-31.3-13.2zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2 0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9l20.6-45.2 220.6 0 20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM376.5 400l-177 0 21.8-48 133.3 0 21.8 48zM288 205.3l44.8 98.7-89.7 0 44.8-98.7zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n  };\n  var faColonSign = {\n    prefix: 'fas',\n    iconName: 'colon-sign',\n    icon: [384, 512, [], \"e140\", \"M213.8 8.7c12.9 3.2 20.7 16.2 17.5 29.1l-4.6 18.5c15.4 .8 30.4 3.4 44.7 7.5l9.4-37.6C283.9 13.3 297 5.5 309.8 8.7S330.5 25 327.3 37.8L316 82.8c13.5 7.8 26 17.1 37.2 27.8 12.9 12.1 13.4 32.4 1.3 45.2s-32.4 13.4-45.2 1.3c-3.1-2.9-6.4-5.8-9.8-8.4L239.2 390c26.9-4.6 51.1-17.1 70.1-35.1 12.9-12.1 33.1-11.5 45.2 1.3s11.5 33.1-1.3 45.2c-34.3 32.3-80 52.8-130.5 54.4l-7.5 29.9c-3.2 12.9-16.2 20.7-29.1 17.5s-20.7-16.2-17.5-29.1l5.6-22.5c-15-3.2-29.4-8-42.9-14.4l-12.1 48.5c-3.2 12.9-16.2 20.7-29.1 17.5S69.5 487 72.7 474.2l16-63.9C44.3 373.6 16 318.1 16 256 16 159.2 84.8 78.4 176.3 60l8.4-33.8C187.9 13.3 201 5.5 213.8 8.7zM158 132.9c-46.1 21.8-78 68.7-78 123.1 0 30.5 10 58.6 26.9 81.3L158 132.9zM147.4 373.4c13 7.6 27.3 13.1 42.5 16.1l65.9-263.6c-12.6-3.8-25.9-5.9-39.8-5.9-1.8 0-3.5 0-5.3 .1L147.4 373.4z\"]\n  };\n  var faLaptopFile = {\n    prefix: 'fas',\n    iconName: 'laptop-file',\n    icon: [576, 512, [], \"e51d\", \"M64 64C64 28.7 92.7 0 128 0L416 0c35.3 0 64 28.7 64 64l0 48-64 0 0-48-288 0 0 192 112 0 0 96-163.2 0C34.4 352 0 317.6 0 275.2 0 264.6 8.6 256 19.2 256L64 256 64 64zM529.9 257.9c9 9 14.1 21.2 14.1 33.9L544 464c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-256c0-26.5 21.5-48 48-48l76.1 0c12.7 0 24.9 5.1 33.9 14.1 20 20 47.9 47.9 83.9 83.9zM416 272c0 8.8 7.2 16 16 16l60.1 0-76.1-76.1 0 60.1z\"]\n  };\n  var faBahai = {\n    prefix: 'fas',\n    iconName: 'bahai',\n    icon: [576, 512, [\"haykal\"], \"f666\", \"M288.4-8c13.2 0 25 8.1 29.8 20.4l31.9 82 77.2-42.3c11.6-6.3 25.8-4.9 35.9 3.5s14 22.3 9.7 34.8l-28.2 83.3 86.3 17.2c12.9 2.6 23 12.8 25.3 25.8s-3.6 26.1-14.9 32.9l-75.2 45.7 55 68.6c8.3 10.3 9.3 24.6 2.7 36s-19.5 17.6-32.6 15.6l-87-13.3-2 88c-.3 13.2-8.6 24.8-21 29.4s-26.3 1-35-9l-58-66.1-58 66.1c-8.7 9.9-22.6 13.5-35 9s-20.8-16.2-21-29.4l-2-88-87 13.3c-13 2-26-4.2-32.6-15.6s-5.5-25.7 2.7-36l55-68.6-75.2-45.7c-11.3-6.8-17.2-19.9-14.9-32.9s12.3-23.2 25.3-25.8l86.3-17.2-28.2-83.3c-4.2-12.5-.4-26.3 9.7-34.8s24.4-9.9 35.9-3.5l77.1 42.3 31.9-82C263.3 .1 275.2-8 288.4-8zm0 120.2L273 151.6c-3.3 8.6-10.2 15.3-18.9 18.5s-18.2 2.4-26.3-2l-37-20.3 13.6 40c3 8.7 2 18.3-2.6 26.3s-12.4 13.6-21.5 15.4l-41.4 8.3 36.1 21.9c7.9 4.8 13.3 12.7 14.9 21.8s-.8 18.4-6.5 25.6l-26.4 33 41.8-6.4c9.1-1.4 18.4 1.2 25.4 7.1s11.2 14.6 11.4 23.8l.9 42.2 27.9-31.8c6.1-6.9 14.8-10.9 24.1-10.9s18 4 24.1 10.9l27.9 31.8 .9-42.2c.2-9.2 4.4-17.9 11.4-23.8s16.3-8.5 25.4-7.1l41.8 6.4-26.4-33c-5.8-7.2-8.2-16.5-6.6-25.6s7-17 14.9-21.8l36.1-21.9-41.4-8.3c-9-1.8-16.9-7.4-21.5-15.4s-5.5-17.6-2.6-26.3l13.6-40-37 20.3c-8.1 4.4-17.7 5.2-26.3 2s-15.5-9.9-18.9-18.5l-15.3-39.4z\"]\n  };\n  var faHaykal = faBahai;\n  var faMoneyBill1 = {\n    prefix: 'fas',\n    iconName: 'money-bill-1',\n    icon: [512, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm192 80a112 112 0 1 1 0 224 112 112 0 1 1 0-224zM64 184l0-48c0-4.4 3.6-8 8-8l48 0c4.4 0 8.1 3.6 7.5 8-3.6 29-26.6 51.9-55.5 55.5-4.4 .5-8-3.1-8-7.5zm0 144c0-4.4 3.6-8.1 8-7.5 29 3.6 51.9 26.6 55.5 55.5 .5 4.4-3.1 8-7.5 8l-48 0c-4.4 0-8-3.6-8-8l0-48zM440 191.5c-29-3.6-51.9-26.6-55.5-55.5-.5-4.4 3.1-8 7.5-8l48 0c4.4 0 8 3.6 8 8l0 48c0 4.4-3.6 8.1-8 7.5zM448 328l0 48c0 4.4-3.6 8-8 8l-48 0c-4.4 0-8.1-3.6-7.5-8 3.6-29 26.6-51.9 55.5-55.5 4.4-.5 8 3.1 8 7.5zM240 188c-11 0-20 9-20 20 0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l48 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0z\"]\n  };\n  var faMoneyBillAlt = faMoneyBill1;\n  var faCloudBolt = {\n    prefix: 'fas',\n    iconName: 'cloud-bolt',\n    icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96l38.6 0 124.1-111c12.2-10.9 28-17 44.4-17 44.6 0 76.5 43 63.7 85.7L354.1 320 416 320c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0 1.1-5.2 1.6-10.5 1.6-16 0-44.2-35.8-80-80-80-24.3 0-46.1 10.9-60.8 28-18.7-35.7-56.1-60-99.2-60-61.9 0-112 50.1-112 112 0 7.1 .7 14.1 1.9 20.8-38.3 12.6-65.9 48.7-65.9 91.2zM160.6 400l61.8 0-31.2 104.1c-3.6 11.9 5.3 23.9 17.8 23.9 4.6 0 9-1.7 12.4-4.7L362.5 396.9c3.5-3.1 5.5-7.6 5.5-12.4 0-9.2-7.4-16.6-16.6-16.6l-61.8 0 31.2-104.1c3.6-11.9-5.3-23.9-17.8-23.9-4.6 0-9 1.7-12.4 4.7L149.5 371.1c-3.5 3.1-5.5 7.6-5.5 12.4 0 9.2 7.4 16.6 16.6 16.6z\"]\n  };\n  var faThunderstorm = faCloudBolt;\n  var faEthernet = {\n    prefix: 'fas',\n    iconName: 'ethernet',\n    icon: [512, 512, [], \"f796\", \"M0 224L0 416c0 17.7 14.3 32 32 32l32 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 64 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 64 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 64 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 32 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32L160 64c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32z\"]\n  };\n  var faHryvniaSign = {\n    prefix: 'fas',\n    iconName: 'hryvnia-sign',\n    icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M336 149.4C336 77 268.5 23.5 198 40.1L93.2 64.9C76 68.9 65.4 86.2 69.4 103.4s21.3 27.9 38.5 23.8l104.8-24.7c30.3-7.1 59.3 15.8 59.3 46.9 0 17.6-9.6 33.8-25 42.3l-.7 .4-222.3 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32.4 0c5.5-13.3 8.4-27.8 8.4-42.6zM360 272L24 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l33.3 0c-6.1 13.4-9.3 28.1-9.3 43.3 0 64.1 56.9 113.4 120.4 104.2l137.9-19.9c17.5-2.5 29.6-18.7 27.1-36.2s-18.8-29.6-36.2-27.1L159.2 404.2c-24.9 3.6-47.2-15.7-47.2-40.9 0-15.1 8.2-28.9 21.4-36.2l13-7.1 213.6 0c13.3 0 24-10.7 24-24s-10.7-24-24-24z\"]\n  };\n  var faHryvnia = faHryvniaSign;\n  var faEyeSlash = {\n    prefix: 'fas',\n    iconName: 'eye-slash',\n    icon: [576, 512, [], \"f070\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.4-96.4c2.7-2.4 5.4-4.8 8-7.2 46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6-56.8 0-105.6 18.2-146 44.2L41-24.9zM204.5 138.7c23.5-16.8 52.4-26.7 83.5-26.7 79.5 0 144 64.5 144 144 0 31.1-9.9 59.9-26.7 83.5l-34.7-34.7c12.7-21.4 17-47.7 10.1-73.7-13.7-51.2-66.4-81.6-117.6-67.9-8.6 2.3-16.7 5.7-24 10l-34.7-34.7zM325.3 395.1c-11.9 3.2-24.4 4.9-37.3 4.9-79.5 0-144-64.5-144-144 0-12.9 1.7-25.4 4.9-37.3L69.4 139.2c-32.6 36.8-55 75.8-66.9 104.5-3.3 7.9-3.3 16.7 0 24.6 14.9 35.7 46.2 87.7 93 131.1 47.1 43.7 111.8 80.6 192.6 80.6 37.3 0 71.2-7.9 101.5-20.6l-64.2-64.2z\"]\n  };\n  var faCartFlatbedSuitcase = {\n    prefix: 'fas',\n    iconName: 'cart-flatbed-suitcase',\n    icon: [576, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0L48 0c44.2 0 80 35.8 80 80l0 288c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.7 0c1.8 5 2.7 10.4 2.7 16 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16l-197.5 0c1.8 5 2.7 10.4 2.7 16 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-6 1.1-11.7 3.1-17-38.1-6.2-67.1-39.2-67.1-79L64 80c0-8.8-7.2-16-16-16L32 64C14.3 64 0 49.7 0 32zM176 144c0-26.5 21.5-48 48-48l32 0 0-24c0-30.9 25.1-56 56-56l64 0c30.9 0 56 25.1 56 56l0 24 32 0c26.5 0 48 21.5 48 48l0 144c0 26.5-21.5 48-48 48l-240 0c-26.5 0-48-21.5-48-48l0-144zM384 96l0-24c0-4.4-3.6-8-8-8l-64 0c-4.4 0-8 3.6-8 8l0 24 80 0z\"]\n  };\n  var faLuggageCart = faCartFlatbedSuitcase;\n  var faRadiation = {\n    prefix: 'fas',\n    iconName: 'radiation',\n    icon: [576, 512, [], \"f7b9\", \"M446.2 34.5c-14.2-10.1-33.5-4.6-42.2 10.5L331.6 170.3c31.3 15.8 52.8 48.3 52.8 85.7l144 0c17.7 0 32.2-14.4 30.1-31.9-9.1-78.1-51.4-146.1-112.3-189.6zM172.7 44.9C164 29.8 144.7 24.3 130.5 34.5 69.6 77.9 27.3 145.9 18.2 224.1 16.1 241.6 30.7 256 48.3 256l144 0c0-37.5 21.5-69.9 52.8-85.7L172.7 44.9zm-9.4 416.8c-8.7 15.1-3.8 34.5 12 41.8 34.4 15.7 72.7 24.5 113 24.5s78.6-8.8 113-24.5c15.8-7.2 20.7-26.7 12-41.8L341 336.3c-15.1 9.9-33.2 15.7-52.6 15.7s-37.5-5.8-52.6-15.7L163.3 461.7zM288.3 304a48 48 0 1 0 -.7-96 48 48 0 1 0 .7 96z\"]\n  };\n  var faFileWord = {\n    prefix: 'fas',\n    iconName: 'file-word',\n    icon: [384, 512, [], \"f1c2\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM135.4 274.8c-2.9-12.9-15.7-21.1-28.6-18.2s-21.1 15.7-18.2 28.6l32 144c2.3 10.5 11.4 18.2 22.2 18.8s20.6-6.1 24-16.4l25.2-75.7 25.2 75.7c3.4 10.2 13.2 16.9 24 16.4s19.9-8.2 22.2-18.8l32-144c2.9-12.9-5.3-25.8-18.2-28.6s-25.8 5.3-28.6 18.2l-13.2 59.4-20.6-61.8c-3.3-9.8-12.4-16.4-22.8-16.4s-19.5 6.6-22.8 16.4l-20.6 61.8-13.2-59.4z\"]\n  };\n  var faBedPulse = {\n    prefix: 'fas',\n    iconName: 'bed-pulse',\n    icon: [640, 512, [\"procedures\"], \"f487\", \"M531.2-22.4L572 32 616 32c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-7.6 0-14.7-3.6-19.2-9.6l-24.1-32.1-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L387.2 80 344 80c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5c3.6-7.6 10.9-12.8 19.3-13.7s16.6 2.7 21.6 9.5zM320 160c0-17.7 14.3-32 32-32l9.5 0 26.6 39.9c14.4 21.6 39.3 33.8 65.2 31.9s48.8-17.6 59.8-41.1L527 129.2c45.9 7.2 81 46.9 81 94.8l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64-448 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32S96 46.3 96 64l0 224 224 0 0-128zM144 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n  };\n  var faProcedures = faBedPulse;\n  var faTents = {\n    prefix: 'fas',\n    iconName: 'tents',\n    icon: [576, 512, [], \"e582\", \"M539.9 352l-95.6 0-8.4-66.1c-2.9-23.2-15.9-43.9-35.4-56.8L252.2 131.5c-18-11.9-39.7-15.7-60.1-11.5 2.5-4.3 5.9-7.9 10.1-10.7L350.6 11.6c10.7-7 24.5-7 35.2 0l148.4 97.7c7.8 5.1 13 13.4 14.2 22.7l23.3 184c2.4 19.1-12.5 36-31.7 36zM4.8 476l23.3-184c1.2-9.3 6.3-17.6 14.2-22.7l148.4-97.7c10.7-7 24.5-7 35.2 0l148.4 97.7c7.8 5.1 13 13.4 14.2 22.7l23.3 184c2.4 19.1-12.5 36-31.7 36l-49.7 0c-11.2 0-21.5-5.8-27.3-15.4l-77-126.7c-1.7-2.8-4.8-4.6-8.1-4.6-5.3 0-9.5 4.3-9.5 9.5l0 105.2c0 17.7-14.3 32-32 32L36.5 512c-19.3 0-34.2-16.9-31.7-36z\"]\n  };\n  var faMugHot = {\n    prefix: 'fas',\n    iconName: 'mug-hot',\n    icon: [576, 512, [9749], \"f7b6\", \"M152-16c-13.3 0-24 10.7-24 24 0 38.9 23.4 59.4 39.1 73.1l1.1 1c16.3 14.3 23.8 21.8 23.8 37.9 0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C183.5 31.7 176 24.1 176 8 176-5.3 165.3-16 152-16zM96 192c-17.7 0-32 14.3-32 32l0 192c0 53 43 96 96 96l192 0c41.8 0 77.4-26.7 90.5-64l5.5 0c70.7 0 128-57.3 128-128S518.7 192 448 192L96 192zM448 384l0-128c35.3 0 64 28.7 64 64s-28.7 64-64 64zM288 8c0-13.3-10.7-24-24-24S240-5.3 240 8c0 38.9 23.4 59.4 39.1 73.1l1.1 1c16.3 14.3 23.8 21.8 23.8 37.9 0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C295.5 31.7 288 24.1 288 8z\"]\n  };\n  var faBolt = {\n    prefix: 'fas',\n    iconName: 'bolt',\n    icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M338.8-9.9c11.9 8.6 16.3 24.2 10.9 37.8L271.3 224 416 224c13.5 0 25.5 8.4 30.1 21.1s.7 26.9-9.6 35.5l-288 240c-11.3 9.4-27.4 9.9-39.3 1.3s-16.3-24.2-10.9-37.8L176.7 288 32 288c-13.5 0-25.5-8.4-30.1-21.1s-.7-26.9 9.6-35.5l288-240c11.3-9.4 27.4-9.9 39.3-1.3z\"]\n  };\n  var faZap = faBolt;\n  var faJar = {\n    prefix: 'fas',\n    iconName: 'jar',\n    icon: [320, 512, [], \"e516\", \"M32-8c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 16C42.7 16 32 5.3 32-8zM0 128C0 92.7 28.7 64 64 64l192 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128zm96 64c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 192z\"]\n  };\n  var faTruckPlane = {\n    prefix: 'fas',\n    iconName: 'truck-plane',\n    icon: [640, 512, [], \"e58f\", \"M144 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 320c0 32.5 12.1 62.1 32 84.7l0 27.3c0 7.1 .9 14.1 2.7 20.7L192 480 83.9 507C73.8 509.6 64 501.9 64 491.5l0-19.8c0-4.9 2.2-9.5 6-12.5l74-59.2 0-57.6-122.1 48.8C11.4 395.4 0 387.7 0 376.4l0-44c0-8 3-15.6 8.3-21.5L144 161.6 144 48zm224 80l192 0c44.2 0 80 35.8 80 80l0 160c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c-19.4-14.6-32-37.8-32-64l0-160c0-44.2 35.8-80 80-80zm0 176l192 0 0-32c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32l0 32zm0 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faHandHoldingHeart = {\n    prefix: 'fas',\n    iconName: 'hand-holding-heart',\n    icon: [576, 512, [], \"f4be\", \"M279.6 31C265.5 11.5 242.9 0 218.9 0 177.5 0 144 33.5 144 74.9l0 2.4c0 64.4 82 133.4 122.2 163.3 13 9.7 30.5 9.7 43.5 0 40.2-30 122.2-98.9 122.2-163.3l0-2.4c0-41.4-33.5-74.9-74.9-74.9-24 0-46.6 11.5-60.7 31L288 42.7 279.6 31zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n  };\n  var faArrowRotateLeft = {\n    prefix: 'fas',\n    iconName: 'arrow-rotate-left',\n    icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M256 64c-56.8 0-107.9 24.7-143.1 64l47.1 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 192c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0S64 14.3 64 32l0 54.7C110.9 33.6 179.5 0 256 0 397.4 0 512 114.6 512 256S397.4 512 256 512c-87 0-163.9-43.4-210.1-109.7-10.1-14.5-6.6-34.4 7.9-44.6s34.4-6.6 44.6 7.9c34.8 49.8 92.4 82.3 157.6 82.3 106 0 192-86 192-192S362 64 256 64z\"]\n  };\n  var faArrowLeftRotate = faArrowRotateLeft;\n  var faArrowRotateBack = faArrowRotateLeft;\n  var faArrowRotateBackward = faArrowRotateLeft;\n  var faUndo = faArrowRotateLeft;\n  var faFaceAngry = {\n    prefix: 'fas',\n    iconName: 'face-angry',\n    icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM256 368c24.1 0 45.4 11.8 58.5 30 7.7 10.8 22.7 13.2 33.5 5.5s13.2-22.7 5.5-33.5c-21.7-30.2-57.3-50-97.5-50s-75.7 19.8-97.5 50c-7.7 10.8-5.3 25.8 5.5 33.5s25.8 5.3 33.5-5.5c13.1-18.2 34.4-30 58.5-30zm-80-96c17.7 0 32-14.3 32-32l0-.3 9.7 3.2c10.5 3.5 21.8-2.2 25.3-12.6s-2.2-21.8-12.6-25.3l-96-32c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3l28.9 9.6c-4.1 5.4-6.6 12.1-6.6 19.4 0 17.7 14.3 32 32 32zm192-32c0-7.3-2.4-14-6.6-19.4l28.9-9.6c10.5-3.5 16.1-14.8 12.6-25.3s-14.8-16.1-25.3-12.6l-96 32c-10.5 3.5-16.1 14.8-12.6 25.3s14.8 16.1 25.3 12.6l9.7-3.2 0 .3c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n  };\n  var faAngry = faFaceAngry;\n  var faBurst = {\n    prefix: 'fas',\n    iconName: 'burst',\n    icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7S-2.3 28 4.2 37.6l112 163.3-99.6 32.3C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4-52.9 100.6c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1l-52.9-100.6 103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8l-106.5-34.5 25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7-34.5-106.5C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6L200.9 116.2 37.6 4.2z\"]\n  };\n  var faZ = {\n    prefix: 'fas',\n    iconName: 'z',\n    icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n  };\n  var faBandage = {\n    prefix: 'fas',\n    iconName: 'bandage',\n    icon: [576, 512, [129657, \"band-aid\"], \"f462\", \"M464 416l48 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-48 0 0 320zM416 96l-256 0 0 320 256 0 0-320zM64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l48 0 0-320-48 0zM216 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM216 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faBandAid = faBandage;\n  var faPlaneCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'plane-circle-exclamation',\n    icon: [640, 512, [], \"e556\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 78 71.5c-69.3 29-118 97.4-118 177.2 0 49.3 18.6 94.3 49.1 128.3L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 228a20 20 0 1 0 0-40 20 20 0 1 0 0 40zm0-180c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n  };\n  var faBusSide = {\n    prefix: 'fas',\n    iconName: 'bus-side',\n    icon: [640, 512, [], \"e81d\", \"M480 0c88.4 0 160 71.6 160 160l0 224c0 35.3-28.7 64-64 64l-5.6 0c-13.2 37.3-48.6 64-90.4 64s-77.3-26.7-90.4-64l-139.1 0c-13.2 37.3-48.7 64-90.4 64s-77.2-26.7-90.4-64L64 448c-35.3 0-64-28.7-64-64L0 96C0 43 43 0 96 0L480 0zM160 368a48 48 0 1 0 0 96 48 48 0 1 0 0-96zm320 0a48 48 0 1 0 0 96 48 48 0 1 0 0-96zm0-304c-17.7 0-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128c0-53-43-96-96-96zM248 224l104 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-104 0 0 160zM96 64C78.3 64 64 78.3 64 96l0 96c0 17.7 14.3 32 32 32l104 0 0-160-104 0z\"]\n  };\n  var faBugs = {\n    prefix: 'fas',\n    iconName: 'bugs',\n    icon: [576, 512, [], \"e4d0\", \"M447.5 174.6c8.8-8.4 22.7-8.9 32.2-.8s11 21.9 4.1 31.9l-1.5 1.9-23 26.7c26.7 13.5 46.3 39.1 51.4 69.6l25.3 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-25.3 0c-7.6 45.4-47.1 80-94.7 80s-87-34.6-94.7-80L296 432c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l25.3 0c5.1-30.5 24.7-56.1 51.4-69.6l-22.9-26.7c-8.6-10.1-7.5-25.2 2.6-33.8s25.2-7.5 33.8 2.6l29.8 34.8 29.8-34.8 1.7-1.8zm-256-192c8.8-8.4 22.7-8.9 32.2-.8s11 21.9 4.1 31.9l-1.5 1.9-23 26.7C230 55.9 249.5 81.5 254.7 112l25.3 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-25.3 0c-7.6 45.4-47.1 80-94.7 80s-87-34.6-94.7-80L40 240c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l25.3 0C70.5 81.5 90 55.9 116.7 42.4L93.8 15.6C85.2 5.6 86.3-9.6 96.4-18.2s25.2-7.5 33.8 2.6l29.8 34.8 29.8-34.8 1.7-1.8z\"]\n  };\n  var faBeerMugEmpty = {\n    prefix: 'fas',\n    iconName: 'beer-mug-empty',\n    icon: [576, 512, [\"beer\"], \"f0fc\", \"M64 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 16 64 0c35.3 0 64 28.7 64 64l0 108.2c0 24.2-13.7 46.4-35.4 57.2L448 371.8 448 384c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L64 80zM448 300.2l64-32 0-108.2-64 0 0 140.2zM192 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208zm88 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208zm88 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208z\"]\n  };\n  var faBeer = faBeerMugEmpty;\n  var faPersonCircleCheck = {\n    prefix: 'fas',\n    iconName: 'person-circle-check',\n    icon: [640, 512, [], \"e53e\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faStapler = {\n    prefix: 'fas',\n    iconName: 'stapler',\n    icon: [640, 512, [], \"e5af\", \"M640 299.3L640 432c0 26.5-21.5 48-48 48L64 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0 0-48-352 0c-17.7 0-32-14.3-32-32l0-116.6-30.2-5.4c-19.6-3.5-33.8-20.5-33.8-40.4 0-8.9 2.9-17.5 8.2-24.6l35.6-47.5c32.8-43.8 84.4-69.6 139.1-69.6 27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304l0-16-320-57.1 0 73.1 320 0z\"]\n  };\n  var faHouseMedicalCircleCheck = {\n    prefix: 'fas',\n    iconName: 'house-medical-circle-check',\n    icon: [640, 512, [], \"e511\", \"M309.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S50.8 272 64 272l16 0 0 176c0 35.3 28.7 64 64 64l196 0c-21.2-29.5-34.3-65.3-35.9-104L272 408c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 20 0c34.9-48.5 91.7-80 156-80 10.7 0 21.1 .9 31.3 2.5L309.8 8.6zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faNairaSign = {\n    prefix: 'fas',\n    iconName: 'naira-sign',\n    icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64l0 192-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 89.5 0 107.8 161.8c7.8 11.7 22.4 17 35.9 12.9S384 462.1 384 448l0-144 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192-57.5 0-139.8-209.7zM294.5 304l25.5 0 0 38.3-25.5-38.3zM185.5 256l-57.5 0 0-86.3 57.5 86.3z\"]\n  };\n  var faWifi = {\n    prefix: 'fas',\n    iconName: 'wifi',\n    icon: [576, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M288 96c-90.9 0-173.2 36-233.7 94.6-12.7 12.3-33 12-45.2-.7s-12-33 .7-45.2C81.7 74.9 179.9 32 288 32S494.3 74.9 566.3 144.7c12.7 12.3 13 32.6 .7 45.2s-32.6 13-45.2 .7C461.2 132 378.9 96 288 96zM240 432a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM168 326.2c-11.7 13.3-31.9 14.5-45.2 2.8s-14.5-31.9-2.8-45.2C161 237.4 221.1 208 288 208s127 29.4 168 75.8c11.7 13.3 10.4 33.5-2.8 45.2s-33.5 10.4-45.2-2.8C378.6 292.9 335.8 272 288 272s-90.6 20.9-120 54.2z\"]\n  };\n  var faWifi3 = faWifi;\n  var faWifiStrong = faWifi;\n  var faMoneyCheckDollar = {\n    prefix: 'fas',\n    iconName: 'money-check-dollar',\n    icon: [512, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM296 288l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm-24-88c0-13.3 10.7-24 24-24l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24-10.7-24-24zM148 144c11 0 20 9 20 20l0 4 8 0c11 0 20 9 20 20s-9 20-20 20l-47.5 0c-6.9 0-12.5 5.6-12.5 12.5 0 6.1 4.4 11.3 10.4 12.3l41.7 7c25.3 4.2 43.9 26.1 43.9 51.8 0 26.1-19 47.7-44 51.8l0 4.7c0 11-9 20-20 20s-20-9-20-20l0-4-24 0c-11 0-20-9-20-20s9-20 20-20l55.5 0c6.9 0 12.5-5.6 12.5-12.5 0-6.1-4.4-11.3-10.4-12.3l-41.7-7C94.5 268 76 246.1 76 220.5 76 191.7 99.2 168.3 128 168l0-4c0-11 9-20 20-20z\"]\n  };\n  var faMoneyCheckAlt = faMoneyCheckDollar;\n  var faEyeLowVision = {\n    prefix: 'fas',\n    iconName: 'eye-low-vision',\n    icon: [576, 512, [\"low-vision\"], \"f2a8\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.4-96.4c2.7-2.4 5.4-4.8 8-7.2 46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6-56.8 0-105.6 18.2-146 44.2L41-24.9zM204.5 138.7c23.5-16.8 52.4-26.7 83.5-26.7 79.5 0 144 64.5 144 144 0 31.1-9.9 59.9-26.7 83.5l-34.7-34.7c12.7-21.4 17-47.7 10.1-73.7-13.7-51.2-66.4-81.6-117.6-67.9-8.6 2.3-16.7 5.7-24 10l-34.7-34.7zM88 157.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L328.2 466c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L88 157.9zM45.7 251.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L181.9 455.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L45.7 251.3z\"]\n  };\n  var faLowVision = faEyeLowVision;\n  var faCircleArrowUp = {\n    prefix: 'fas',\n    iconName: 'circle-arrow-up',\n    icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm17-377l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-39-39 0 150.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-150.1-39 39c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0z\"]\n  };\n  var faArrowCircleUp = faCircleArrowUp;\n  var faCameraRetro = {\n    prefix: 'fas',\n    iconName: 'camera-retro',\n    icon: [512, 512, [128247], \"f083\", \"M0 416l0-208 136.2 0c13.5-20.2 32-36.8 53.7-48L0 160 0 125.7c0-35.3 28.7-64 64-64l.1 0C65.3 45.1 79.1 32 96 32l32 0c16.9 0 30.7 13.1 31.9 29.7l32.1 0 51.2-23.8c8.4-3.9 17.6-6 26.9-6L448 32c35.3 0 64 28.7 64 64l0 64-190 0c21.7 11.2 40.2 27.8 53.7 48l136.2 0 0 208c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64zM256 192a96.1 96.1 0 1 0 0 192.1 96.1 96.1 0 1 0 0-192.1z\"]\n  };\n  var faCapsules = {\n    prefix: 'fas',\n    iconName: 'capsules',\n    icon: [576, 512, [], \"f46b\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zm-64 0l0 288c0 61.9 50.1 112 112 112s112-50.1 112-112l0-105.8 116.3 169.5c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 145.3c-35.5-51.7-105.3-64.3-156-28.1-5.6 4-10.7 8.4-15.3 13.1l0-18.3C256 50.1 205.9 0 144 0S32 50.1 32 112zM296.6 240.2c-16-23.3-10-55.3 11.9-71 21.2-15.1 50.5-10.3 66 12.2l67 97.6-79.9 55.9-65-94.8z\"]\n  };\n  var faPoo = {\n    prefix: 'fas',\n    iconName: 'poo',\n    icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1 0 44.1-35.7 79.9-79.8 80L160 128c-35.3 0-64 28.7-64 64 0 19.1 8.4 36.3 21.7 48L104 240c-39.8 0-72 32.2-72 72 0 23.2 11 43.8 28 57-34.1 5.7-60 35.3-60 71 0 39.8 32.2 72 72 72l368 0c39.8 0 72-32.2 72-72 0-35.7-25.9-65.3-60-71 17-13.2 28-33.8 28-57 0-39.8-32.2-72-72-72l-13.7 0c13.3-11.7 21.7-28.9 21.7-48 0-35.3-28.7-64-64-64l-5.5 0c3.5-10 5.5-20.8 5.5-32 0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7 0-6.8 5.5-12.3 12.3-12.3l167.4 0c6.8 0 12.3 5.5 12.3 12.3z\"]\n  };\n  var faElevator = {\n    prefix: 'fas',\n    iconName: 'elevator',\n    icon: [512, 512, [], \"e16d\", \"M292.7-4.7l64 64c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5-32 432-32L304-32c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4zm-160-22.6l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4S73.5 64 80 64l128 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm192 0c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n  };\n  var faTag = {\n    prefix: 'fas',\n    iconName: 'tag',\n    icon: [512, 512, [127991], \"f02b\", \"M32.5 96l0 149.5c0 17 6.7 33.3 18.7 45.3l192 192c25 25 65.5 25 90.5 0L483.2 333.3c25-25 25-65.5 0-90.5l-192-192C279.2 38.7 263 32 246 32L96.5 32c-35.3 0-64 28.7-64 64zm112 16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faFileCircleMinus = {\n    prefix: 'fas',\n    iconName: 'file-circle-minus',\n    icon: [576, 512, [], \"e4ed\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n  };\n  var faDownLong = {\n    prefix: 'fas',\n    iconName: 'down-long',\n    icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M137.4 534.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S300.9 352 288 352l-64 0 0-336c0-26.5-21.5-48-48-48l-32 0c-26.5 0-48 21.5-48 48l0 336-64 0c-12.9 0-24.6 7.8-29.6 19.8S.2 397.5 9.4 406.6l128 128z\"]\n  };\n  var faLongArrowAltDown = faDownLong;\n  var faCompactDisc = {\n    prefix: 'fas',\n    iconName: 'compact-disc',\n    icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zm-56-16c0-32.4 16.3-66.6 42.8-93.2S207.6 104 240 104c13.3 0 24-10.7 24-24s-10.7-24-24-24c-47.9 0-93.7 23.5-127.1 56.9S56 192.1 56 240c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n  };\n  var faSuitcaseRolling = {\n    prefix: 'fas',\n    iconName: 'suitcase-rolling',\n    icon: [384, 512, [], \"f5c1\", \"M144 24c0-4.4 3.6-8 8-8l80 0c4.4 0 8 3.6 8 8l0 72-96 0 0-72zM320 96l-32 0 0-72c0-30.9-25.1-56-56-56l-80 0C121.1-32 96-6.9 96 24l0 72-32 0C28.7 96 0 124.7 0 160L0 448c0 35.3 28.7 64 64 64 0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64zM120 208l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 128l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faBookQuran = {\n    prefix: 'fas',\n    iconName: 'book-quran',\n    icon: [448, 512, [\"quran\"], \"f687\", \"M64 512l288 0c53 0 96-43 96-96l0-320c0-53-43-96-96-96L48 0C21.5 0 0 21.5 0 48L0 336c0 20.9 13.4 38.7 32 45.3L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0zM352 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0 0-64 256 0zM273.1 144.4c2.5-6.1 11.2-6.1 13.7 0l10.3 24.8 26.8 2.1c6.6 .5 9.2 8.7 4.2 13L307.8 201.9 314 228c1.5 6.4-5.5 11.5-11.1 8.1l-22.9-14-22.9 14c-5.6 3.4-12.6-1.6-11.1-8.1l6.2-26.1-20.4-17.5c-5-4.3-2.3-12.5 4.2-13l26.8-2.1 10.3-24.8zM100 192c0-68.5 55.5-124 124-124 23.8 0 46.1 6.7 65 18.4 4.8 2.9 6.9 8.8 5 14.1s-7.1 8.6-12.7 8c-3.1-.3-6.2-.5-9.4-.5-46.4 0-84 37.6-84 84s37.6 84 84 84c3.2 0 6.3-.2 9.4-.5 5.6-.6 10.8 2.7 12.7 8s-.3 11.2-5 14.1c-18.9 11.7-41.2 18.4-65 18.4-68.5 0-124-55.5-124-124z\"]\n  };\n  var faQuran = faBookQuran;\n  var faPhoneSlash = {\n    prefix: 'fas',\n    iconName: 'phone-slash',\n    icon: [576, 512, [], \"f3dd\", \"M535-24.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 537.1c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L141.5 368.6C89.2 310.5 51.6 238.8 34.8 159.4 18.7 83.1 73.9 20.6 138.5 2.9l5.5-1.5c19.7-5.4 40.3 4.7 48.1 23.5l40.5 97.3c6.9 16.5 2.1 35.6-11.8 47l-44.1 36.1c12.9 28.5 29.6 54.8 49.5 78.5L535-24.9zm-150.4 534c-63-13.4-121.3-39.8-171.7-76.3L297.8 348c12.2 8.2 25 15.6 38.3 22.2L374.7 323c11.3-13.9 30.4-18.6 47-11.8L519 351.8c18.8 7.8 28.9 28.4 23.5 48.1l-1.5 5.5c-17.6 64.6-80.2 119.8-156.4 103.7z\"]\n  };\n  var faRoadCircleCheck = {\n    prefix: 'fas',\n    iconName: 'road-circle-check',\n    icon: [640, 512, [], \"e564\", \"M288 32l-76.3 0c-29.4 0-55.1 20.1-62.1 48.6L65.4 420.5C57.9 450.7 80.8 480 112 480l209.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-28.6 6.2-55.7 17.4-80-.5 0-1 0-1.5 0-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49c35.2-39.9 86.7-65 144-65 9 0 17.8 .6 26.5 1.8l-32-129.2C483.4 52.1 457.8 32 428.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n  };\n  var faShopLock = {\n    prefix: 'fas',\n    iconName: 'shop-lock',\n    icon: [640, 512, [], \"e4a5\", \"M21.5 181.1L78.3 67.4C89.2 45.7 111.3 32 135.6 32l304.9 0c24.2 0 46.4 13.7 57.2 35.4l55.6 111.1c-8.2-1.6-16.6-2.5-25.2-2.5-53.7 0-99.7 33.1-118.7 80l-57.3 0 0 176c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-176.1c-26.8-1.9-48-24.3-48-51.6 0-8 1.9-16 5.5-23.2zM128 256l0 112c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-112-160 0zm432 48.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM416 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faImagePortrait = {\n    prefix: 'fas',\n    iconName: 'image-portrait',\n    icon: [384, 512, [\"portrait\"], \"f3e0\", \"M0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM80 368c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80zM192 248a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n  };\n  var faPortrait = faImagePortrait;\n  var faBridgeLock = {\n    prefix: 'fas',\n    iconName: 'bridge-lock',\n    icon: [576, 512, [], \"e4cc\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0 0 32.2c13.8 .6 27.2 2.8 40 6.4l0 50.7c-14.8-6-31-9.3-48-9.3-70.7 0-128 57.3-128 128l0 24.4c-.4 .3-.7 .6-1.1 1-17.3-25-46.2-41.3-78.9-41.3-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-94c0-38.8-26.4-72.6-64-82l0-112 40 0 0-64-8 0C14.3 96 0 81.7 0 64zm424 68.6l0-36.6-80 0 0 64 18.8 0c18.2-12.8 38.9-22.2 61.2-27.4zM216 96l0 64 80 0 0-64-80 0zm-48 0l-80 0 0 64 80 0 0-64zM496 304.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n  };\n  var faHammer = {\n    prefix: 'fas',\n    iconName: 'hammer',\n    icon: [640, 512, [128296], \"f6e3\", \"M246.9 18.3L271 3.8c21.6-13 46.3-19.8 71.5-19.8 36.8 0 72.2 14.6 98.2 40.7l63.9 63.9c15 15 23.4 35.4 23.4 56.6l0 30.9 19.7 19.7 0 0c15.6-15.6 40.9-15.6 56.6 0s15.6 40.9 0 56.6l-64 64c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L464 240 433.1 240c-21.2 0-41.6-8.4-56.6-23.4l-49.1-49.1c-15-15-23.4-35.4-23.4-56.6l0-12.7c0-11.2-5.9-21.7-15.5-27.4l-41.6-25c-10.4-6.2-10.4-21.2 0-27.4zM50.7 402.7l222.1-222.1 90.5 90.5-222.1 222.1c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5z\"]\n  };\n  var faArrowUp19 = {\n    prefix: 'fas',\n    iconName: 'arrow-up-1-9',\n    icon: [512, 512, [\"sort-numeric-up\"], \"f163\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM418.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM365.1 430.6c-9.6 14.8-5.4 34.6 9.4 44.3s34.6 5.4 44.3-9.4l42.1-64.9c12.4-19.2 19.1-41.6 19.1-64.5 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.1 23.9 66.7 56.8 76.6l-11.7 18zM376 336a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faSortNumericUp = faArrowUp19;\n  var faChessKnight = {\n    prefix: 'fas',\n    iconName: 'chess-knight',\n    icon: [384, 512, [9822], \"f441\", \"M192-32c106 0 192 86 192 192l0 133.5c0 17-6.8 33.2-18.7 45.2L320 384 370.8 434.7c8.5 8.5 13.2 20 13.2 32 0 25-20.3 45.2-45.2 45.3L45.3 512c-25 0-45.2-20.3-45.2-45.3 0-12 4.8-23.5 13.2-32L64 384 64 349.4c0-18.7 8.2-36.4 22.3-48.6l89.7-76.8-48 0-12.1 12.1c-12.7 12.7-30 19.9-48 19.9-37.5 0-67.9-30.4-67.9-67.9l0-8.7c0-22.8 8.2-44.9 23.1-62.3L96 32 96 0c0-17.7 14.3-32 32-32l64 0zM160 72a24 24 0 1 0 0 48 24 24 0 1 0 0-48z\"]\n  };\n  var faHouseFloodWaterCircleArrowRight = {\n    prefix: 'fas',\n    iconName: 'house-flood-water-circle-arrow-right',\n    icon: [640, 512, [], \"e50f\", \"M288.5 112a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM141.2 44.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l28.7-28.7-89.4 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l89.4 0-28.7-28.7c-6.2-6.2-6.2-16.4 0-22.6zM336.5 112c0 71.1-38.6 133.1-96 166.3l0 12.8c22.1 4.5 43.4 13.9 62.4 28.2 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 33.1-.2 66.3 10.2 94.4 31.4 6.9 5.2 12.8 9 18 11.7 .6 .3 1.2 .6 1.8 1 4.2 2.3 8.5 4.6 12.6 1.5 6-4.5 12.6-8 19.3-10.4l0-115.2 4.5 0c15.2 0 27.5-12.3 27.5-27.5 0-7.9-3.4-15.5-9.4-20.7L444.5 10.5C436.8 3.7 426.8 0 416.5 0s-20.3 3.7-28 10.5L329.9 61.8c4.3 16 6.6 32.8 6.6 50.2zm32 88c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-48zM475.1 412.1c19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3S290 391.8 266 373.7c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7s-5.9 25.6 4.7 33.6c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm-71.2 96c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3S290 487.8 266 469.7c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7s-5.9 25.6 4.7 33.6c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n  };\n  var faArrowUpRightFromSquare = {\n    prefix: 'fas',\n    iconName: 'arrow-up-right-from-square',\n    icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0-201.4 201.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 96C35.8 96 0 131.8 0 176L0 432c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 80c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 96z\"]\n  };\n  var faExternalLink = faArrowUpRightFromSquare;\n  var faArrowDownUpAcrossLine = {\n    prefix: 'fas',\n    iconName: 'arrow-down-up-across-line',\n    icon: [512, 512, [], \"e4af\", \"M265.4 105.4l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-41.4-41.4 0 114.7 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 114.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 402.7 96 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l320 0 0-114.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zM416 336l0 144c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-144 64 0zM96 176L96 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 144-64 0z\"]\n  };\n  var faFaceGrinBeam = {\n    prefix: 'fas',\n    iconName: 'face-grin-beam',\n    icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM176 180c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n  };\n  var faGrinBeam = faFaceGrinBeam;\n  var faRectangleAd = {\n    prefix: 'fas',\n    iconName: 'rectangle-ad',\n    icon: [512, 512, [\"ad\"], \"f641\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM416 184l0 144c0 13.3-10.7 24-24 24-7.1 0-13.5-3.1-17.9-8-10.2 5.1-21.8 8-34.1 8-42 0-76-34-76-76s34-76 76-76c9.9 0 19.3 1.9 28 5.3l0-21.3c0-13.3 10.7-24 24-24s24 10.7 24 24zm-48 92a28 28 0 1 0 -56 0 28 28 0 1 0 56 0zM160 208c-8.8 0-16 7.2-16 16l0 32 48 0 0-32c0-8.8-7.2-16-16-16l-16 0zm32 96l-48 0 0 24c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-35.3 28.7-64 64-64l16 0c35.3 0 64 28.7 64 64l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-24z\"]\n  };\n  var faAd = faRectangleAd;\n  var faBookTanakh = {\n    prefix: 'fas',\n    iconName: 'book-tanakh',\n    icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 512L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-66.7C13.4 374.7 0 356.9 0 336L0 48C0 21.5 21.5 0 48 0L352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96zm32-96c0-17.7-14.3-32-32-32l-256 0 0 64 256 0c17.7 0 32-14.3 32-32zM113.9 229c-1.2 2-1.9 4.2-1.9 6.6 0 6.9 5.6 12.5 12.5 12.5l56.9 0 30.5 49.2c2.6 4.2 7.2 6.8 12.2 6.8s9.6-2.6 12.2-6.8l30.5-49.2 56.9 0c6.9 0 12.5-5.6 12.5-12.5 0-2.3-.6-4.6-1.9-6.6l-27.8-45 27.8-45c1.2-2 1.9-4.2 1.9-6.6 0-6.9-5.6-12.5-12.5-12.5l-56.9 0-30.5-49.2C233.6 66.6 229 64 224 64s-9.6 2.6-12.2 6.8l-30.5 49.2-56.9 0c-6.9 0-12.5 5.6-12.5 12.5 0 2.3 .6 4.6 1.9 6.6l27.8 45-27.8 45z\"]\n  };\n  var faTanakh = faBookTanakh;\n  var faHotTubPerson = {\n    prefix: 'fas',\n    iconName: 'hot-tub-person',\n    icon: [448, 512, [\"hot-tub\"], \"f593\", \"M240 40c0 13.6 5.8 26.5 15.8 35.6l26.5 23.8c24 21.6 37.7 52.3 37.7 84.6 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-18.7-7.9-36.4-21.8-48.9l-26.5-23.8C203.5 93.1 192 67.2 192 40 192 26.7 202.7 16 216 16s24 10.7 24 24zM0 336l0-80c0-35.3 28.7-64 64-64l19.7 0c8.1 0 16.2 1.6 23.8 4.6l137.1 54.8c7.6 3 15.6 4.6 23.8 4.6L384 256c35.3 0 64 28.7 64 64l0 128c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 336zm96-16c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24zm152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80zm104-24c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24zM328 16c13.3 0 24 10.7 24 24 0 13.6 5.8 26.5 15.8 35.6l26.5 23.8c24 21.6 37.7 52.3 37.7 84.6 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-18.7-7.9-36.4-21.8-48.9l-26.5-23.8C315.5 93.1 304 67.2 304 40 304 26.7 314.7 16 328 16zM64 40a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n  };\n  var faHotTub = faHotTubPerson;\n  var faFileHalfDashed = {\n    prefix: 'fas',\n    iconName: 'file-half-dashed',\n    icon: [384, 512, [], \"e698\", \"M64 0C28.7 0 0 28.7 0 64l0 256 384 0 0-149.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176zM0 352l0 64 64 0 0-64-64 0zM64 512l0-64-64 0c0 35.3 28.7 64 64 64zm32 0l80 0 0-64-80 0 0 64zm112 0l80 0 0-64-80 0 0 64zm112 0c35.3 0 64-28.7 64-64l-64 0 0 64zm64-160l-64 0 0 64 64 0 0-64z\"]\n  };\n  var faOutdent = {\n    prefix: 'fas',\n    iconName: 'outdent',\n    icon: [448, 512, [\"dedent\"], \"f03b\", \"M.4 64c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0C14.8 96 .4 81.7 .4 64zm192 128c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM.4 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32zM.7 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6l0 158.6c0 13.3-15.3 20.8-25.8 12.6L.7 268.6z\"]\n  };\n  var faDedent = faOutdent;\n  var faHandPeace = {\n    prefix: 'fas',\n    iconName: 'hand-peace',\n    icon: [448, 512, [9996], \"f25b\", \"M192 0c17.7 0 32 14.3 32 32l0 208-64 0 0-208c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM61.3 51.2L143.9 240 74.1 240 2.7 76.8C-4.4 60.6 3 41.8 19.2 34.7S54.2 35 61.3 51.2zm27 221.3l-.2-.5 95.9 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L69.5 453.5C45.5 429.5 32 396.9 32 363l0-27c0-32.7 24.6-59.7 56.3-63.5z\"]\n  };\n  var faHeadSideVirus = {\n    prefix: 'fas',\n    iconName: 'head-side-virus',\n    icon: [512, 512, [], \"e064\", \"M329.7 448c-5.1 0-9.7 3.7-9.7 8.8l0 7.2c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-63.6c0-12.6-5.1-24.5-13.1-34.2-31.8-38.7-50.9-88.2-50.9-142.2 0-123.7 100.3-224 224-224 112.7 0 206 83.3 221.7 191.7 .4 3 1.7 5.9 3.6 8.3l35.8 42.9c7 8.4 10.9 19.1 10.9 30.1 0 25.9-21 47-47 47l-1 0c-8.8 0-16 7.2-16 16l0 48c0 35.3-28.7 64-64 64l-38.3 0zM224 64c-13.3 0-24 10.7-24 24 0 22.9-27.7 34.4-43.9 18.2-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c16.2 16.2 4.7 43.9-18.2 43.9-13.3 0-24 10.7-24 24s10.7 24 24 24c22.9 0 34.4 27.7 18.2 43.9-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c16.2-16.2 43.9-4.7 43.9 18.2 0 13.3 10.7 24 24 24s24-10.7 24-24c0-22.9 27.7-34.4 43.9-18.2 9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-16.2-16.2-4.7-43.9 18.2-43.9 13.3 0 24-10.7 24-24s-10.7-24-24-24c-22.9 0-34.4-27.7-18.2-43.9 9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-16.2 16.2-43.9 4.7-43.9-18.2 0-13.3-10.7-24-24-24zm-32 88a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faCompass = {\n    prefix: 'fas',\n    iconName: 'compass',\n    icon: [512, 512, [129517], \"f14e\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faPenNib = {\n    prefix: 'fas',\n    iconName: 'pen-nib',\n    icon: [512, 512, [10001], \"f5ad\", \"M368.5 18.3l-50.1 50.1 125.3 125.3 50.1-50.1c21.9-21.9 21.9-57.3 0-79.2L447.7 18.3c-21.9-21.9-57.3-21.9-79.2 0zM279.3 97.2l-.5 .1-144.1 43.2c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-2.9 8.7-1.9 18.2 2.5 26L161.7 316.4c-1.1-4-1.6-8.1-1.6-12.4 0-26.5 21.5-48 48-48s48 21.5 48 48-21.5 48-48 48c-4.3 0-8.5-.6-12.4-1.6L40.3 505.7c7.8 4.4 17.2 5.4 26 2.5l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 .1-.5-135.5-135.5z\"]\n  };\n  var faTentArrowsDown = {\n    prefix: 'fas',\n    iconName: 'tent-arrows-down',\n    icon: [512, 512, [], \"e581\", \"M185.5 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72zm248 72l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0zM60.3 292.6L37.1 476c-2.4 19.1 12.5 36 31.7 36l154.5 0c17.7 0 32-14.3 32-32l0-117.4c0-5.9 4.7-10.6 10.6-10.6 4 0 7.7 2.3 9.5 5.9l68.2 136.5c5.4 10.8 16.5 17.7 28.6 17.7l71.9 0c19.3 0 34.2-16.9 31.7-36L452.7 292.7c-1.2-9.7-6.9-18.4-15.3-23.4L271.9 169.9c-10.2-6.1-22.9-6.1-33.1 .1L75.4 269.3c-8.3 5.1-13.9 13.7-15.1 23.3z\"]\n  };\n  var faForwardFast = {\n    prefix: 'fas',\n    iconName: 'forward-fast',\n    icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M19.8 477.6c12 5 25.7 2.2 34.9-6.9L224 301.3 224 448c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9L448 301.3 448 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 146.7-169.4-169.4c-9.2-9.2-22.9-11.9-34.9-6.9S224 51.1 224 64L224 210.7 54.6 41.4c-9.2-9.2-22.9-11.9-34.9-6.9S0 51.1 0 64L0 448c0 12.9 7.8 24.6 19.8 29.6z\"]\n  };\n  var faFastForward = faForwardFast;\n  var faCrop = {\n    prefix: 'fas',\n    iconName: 'crop',\n    icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 176 64 176 128 338.7 128 128 338.7 128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32-32 0C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l208 0 0-64-162.7 0 210.7-210.7 0 306.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-274.7z\"]\n  };\n  var faWhiskeyGlass = {\n    prefix: 'fas',\n    iconName: 'whiskey-glass',\n    icon: [448, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32C14.3 32 0 46.3 0 64L0 352c0 70.7 57.3 128 128 128l192 0c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32L32 32zM64 256l0-160 320 0 0 160-320 0z\"]\n  };\n  var faGlassWhiskey = faWhiskeyGlass;\n  var faSquare = {\n    prefix: 'fas',\n    iconName: 'square',\n    icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32z\"]\n  };\n  var faFaceGrin = {\n    prefix: 'fas',\n    iconName: 'face-grin',\n    icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faGrin = faFaceGrin;\n  var faFileContract = {\n    prefix: 'fas',\n    iconName: 'file-contract',\n    icon: [384, 512, [], \"f56c\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM88 64C74.7 64 64 74.7 64 88s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm70.3 160c-11.3 0-21.9 5.1-28.9 13.9L69.3 409c-8.3 10.3-6.6 25.5 3.7 33.7s25.5 6.6 33.7-3.8l47.1-58.8 15.2 50.7c3 10.2 12.4 17.1 23 17.1l104 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.1 0-16.1-53.6c-4.7-15.7-19.1-26.4-35.5-26.4z\"]\n  };\n  var faAngleUp = {\n    prefix: 'fas',\n    iconName: 'angle-up',\n    icon: [384, 512, [8963], \"f106\", \"M169.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L192 205.3 54.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n  };\n  var faFaceSmile = {\n    prefix: 'fas',\n    iconName: 'face-smile',\n    icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM165.4 321.9c20.4 28 53.4 46.1 90.6 46.1s70.2-18.1 90.6-46.1c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5C356.3 390 309.2 416 256 416s-100.3-26-129.4-65.9c-7.8-10.7-5.4-25.7 5.3-33.5s25.7-5.4 33.5 5.3zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faSmile = faFaceSmile;\n  var faPersonDressBurst = {\n    prefix: 'fas',\n    iconName: 'person-dress-burst',\n    icon: [640, 512, [], \"e544\", \"M208 40.1c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24zM8 144.1c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm92.5 141.4l33.9-33.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L66.6 251.6c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zM66.6 2.7c-9.4 9.4-9.4 24.6 0 33.9l33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L100.5 2.7C91.1-6.7 76-6.7 66.6 2.7zM352 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM246.2 384l25.8 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 25.8 0c10.9 0 18.6-10.7 15.2-21.1l-43-129 48.3 65.1c10.5 14.2 30.6 17.2 44.8 6.6s17.2-30.6 6.6-44.8l-70.5-95C434 132 394.3 112 352 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6l48.3-65.1-43 129c-3.5 10.4 4.3 21.1 15.2 21.1z\"]\n  };\n  var faDivide = {\n    prefix: 'fas',\n    iconName: 'divide',\n    icon: [448, 512, [10135, 247], \"f529\", \"M224 48a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM168 408a56 56 0 1 1 112 0 56 56 0 1 1 -112 0z\"]\n  };\n  var faCodeFork = {\n    prefix: 'fas',\n    iconName: 'code-fork',\n    icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 22.7c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-32 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-70.7-32 0C98.1 288 48 237.9 48 176l0-22.7C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faHouseFlag = {\n    prefix: 'fas',\n    iconName: 'house-flag',\n    icon: [640, 512, [], \"e50d\", \"M472 0c17.7 0 32 14.3 32 32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0 0 288c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM283.5 59.1l100.5 96.9 0 356-256 0c-35.3 0-64-28.7-64-64l0-144-19.9 0c-15.5 0-28.1-12.6-28.1-28.1 0-7.6 3.1-14.9 8.6-20.2L228.5 59.1C235.9 52 245.7 48 256 48s20.1 4 27.5 11.1zM232 256c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n  };\n  var faBuildingColumns = {\n    prefix: 'fas',\n    iconName: 'building-columns',\n    icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M271.9 20.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128c-12.6 7.2-18.8 22-15.1 36S17.5 208 32 208l32 0 0 208 0 0-51.2 38.4C4.7 460.4 0 469.9 0 480 0 497.7 14.3 512 32 512l448 0c17.7 0 32-14.3 32-32 0-10.1-4.7-19.6-12.8-25.6l-51.2-38.4 0-208 32 0c14.5 0 27.2-9.8 30.9-23.8s-2.5-28.8-15.1-36l-224-128zM400 208l0 208-64 0 0-208 64 0zm-112 0l0 208-64 0 0-208 64 0zm-112 0l0 208-64 0 0-208 64 0zM256 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faBank = faBuildingColumns;\n  var faInstitution = faBuildingColumns;\n  var faMuseum = faBuildingColumns;\n  var faUniversity = faBuildingColumns;\n  var faRug = {\n    prefix: 'fas',\n    iconName: 'rug',\n    icon: [576, 512, [], \"e569\", \"M24 64l56 0 0 384-56 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0C10.7 112 0 101.3 0 88S10.7 64 24 64zm104 0l320 0 0 384-320 0 0-384zM576 88c0 13.3-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0-384 56 0c13.3 0 24 10.7 24 24z\"]\n  };\n  var faCodeMerge = {\n    prefix: 'fas',\n    iconName: 'code-merge',\n    icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2 0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3l0 205.3C19.7 371 0 399.2 0 432 0 476.2 35.8 512 80 512s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-86.6c26.7 20.1 60 32 96 32l86.7 0c12.3 28.3 40.5 48 73.3 48 44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48L208 240c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faHouseTsunami = {\n    prefix: 'fas',\n    iconName: 'house-tsunami',\n    icon: [640, 512, [], \"e515\", \"M288 16C155.5 16 48 123.5 48 256S155.5 496 288 496c7.4 0 19.7-2.3 33.7-7.3 13.8-4.9 27.1-11.7 36.7-18.9 38.4-29 90.5-29 129 0 15.4 11.6 35.3 21.1 55 24.4 19.5 3.3 37 .4 51.1-10.2 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-27.3 20.5-59.2 24-87.9 19.2-28.5-4.8-55.4-18-75.9-33.4-21.3-16.1-49.9-16.1-71.2 0-14.5 10.9-32.4 19.7-49.5 25.8-16.8 6-34.9 10.1-49.9 10.1l-.1 0C128.9 543.9 0 415 0 256 0 96.9 128.9-32 288-32 301.3-32 312-21.3 312-8s-10.7 24-24 24zm44.8 166.4l96-72c11.4-8.5 27.1-8.5 38.5 0l95.5 72c8 6 12.7 15.5 12.7 25.5l.3 121.5c-2.2 1.3-4.3 2.6-6.4 4.2-4.3 3.1-8.7 .8-13.2-1.5l-1.2-.6-.7-.3c-5.4-2.7-11.7-6.6-18.9-11.7-29.5-21.1-64.3-31.6-99.1-31.4-34.1 .2-68.1 10.7-97 31.4-7.8 5.6-13.8 9.3-19.3 11.2L320 208c0-10.1 4.7-19.6 12.8-25.6zm54.6 229.7c-14.5 10.9-32.4 19.7-49.5 25.8-16.8 6-34.9 10.1-49.9 10.1-106 0-192-86-192-192S182 64 288 64c13.3 0 24 10.7 24 24s-10.7 24-24 24c-79.5 0-144 64.5-144 144s64.5 144 144 144c7.4 0 19.7-2.3 33.7-7.3 13.8-4.9 27.1-11.7 36.7-18.9 38.4-29 90.5-29 129 0 15.4 11.6 35.3 21.1 55 24.4 19.5 3.3 37 .4 51.1-10.2 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-27.3 20.5-59.2 24-87.9 19.2-28.5-4.8-55.4-18-75.9-33.4-21.3-16.1-49.9-16.1-71.2 0z\"]\n  };\n  var faMagnifyingGlassChart = {\n    prefix: 'fas',\n    iconName: 'magnifying-glass-chart',\n    icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zm-312 8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64l0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n  };\n  var faUmbrella = {\n    prefix: 'fas',\n    iconName: 'umbrella',\n    icon: [512, 512, [], \"f0e9\", \"M256-32c17.7 0 32 14.3 32 32l0 2c126.3 15.7 224 123.5 224 254 0 3.8-.1 7.5-.2 11.3-.3 6.9-5 12.8-11.7 14.7s-13.8-.7-17.6-6.5c-14.4-21.4-38.8-35.5-66.5-35.5-29.3 0-54.9 15.7-68.9 39.3-2.7 4.6-7.6 7.6-13 7.8s-10.5-2.2-13.7-6.5c-14.6-19.8-38-32.6-64.5-32.6s-49.9 12.8-64.5 32.6c-3.2 4.3-8.3 6.8-13.7 6.5s-10.2-3.2-13-7.8c-14-23.6-39.6-39.3-68.9-39.3-27.7 0-52.1 14.1-66.5 35.5-3.9 5.7-11 8.4-17.6 6.5S.5 274.2 .2 267.3C.1 263.5 0 259.8 0 256 0 125.5 97.7 17.7 224 2l0-2c0-17.7 14.3-32 32-32zm32 360l0 102.6c0 45-36.5 81.4-81.4 81.4-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6 9.6 0 17.4-7.8 17.4-17.4L224 328c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n  };\n  var faHillRockslide = {\n    prefix: 'fas',\n    iconName: 'hill-rockslide',\n    icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2l-53.3 0c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9l0-53.3c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9l0 53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faUserSecret = {\n    prefix: 'fas',\n    iconName: 'user-secret',\n    icon: [448, 512, [128373], \"f21b\", \"M171-16c-36.4 0-57.8 58.3-68.3 112L72 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 32c0 17 3.3 33.2 9.3 48l-9.3 0 0 0-20.5 0c-15.2 0-27.5 12.3-27.5 27.5 0 3 .5 5.9 1.4 8.7l28.9 86.6C40.2 379.6 16 428.1 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-54.2-24.2-102.7-62.3-135.4l28.9-86.6c.9-2.8 1.4-5.7 1.4-8.7 0-15.2-12.3-27.5-27.5-27.5l-20.5 0 0 0-9.3 0c6-14.8 9.3-31 9.3-48l0-32 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-30.7 0c-10.4-53.7-31.9-112-68.3-112-9.6 0-19 3.9-27.5 8.2-8.2 4.1-18.4 7.8-25.5 7.8s-17.3-3.7-25.5-7.8C190-12.1 180.6-16 171-16zm93.7 484.4l-24.8-70.9 27.9-32.5c2.7-3.2 4.2-7.2 4.2-11.4 0-9.7-7.8-17.5-17.5-17.5l-61 0c-9.7 0-17.5 7.8-17.5 17.5 0 4.2 1.5 8.2 4.2 11.4l27.9 32.5-24.8 70.9-57-180.4 35.7 0c18.4 10.2 39.5 16 62 16s43.6-5.8 62-16l35.7 0-57 180.4zM224 256c-34.7 0-64.2-22.1-75.3-53 5.7 3.2 12.3 5 19.3 5l12.4 0c16.5 0 31.1-10.6 36.3-26.2 2.3-7 12.2-7 14.5 0 5.2 15.6 19.9 26.2 36.3 26.2l12.4 0c7 0 13.6-1.8 19.3-5-11.1 30.9-40.6 53-75.3 53z\"]\n  };\n  var faPager = {\n    prefix: 'fas',\n    iconName: 'pager',\n    icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n  };\n  var faBriefcase = {\n    prefix: 'fas',\n    iconName: 'briefcase',\n    icon: [512, 512, [128188], \"f0b1\", \"M200 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 40-80 0C28.7 96 0 124.7 0 160l0 96 512 0 0-96c0-35.3-28.7-64-64-64l-80 0 0-40c0-30.9-25.1-56-56-56L200 0c-30.9 0-56 25.1-56 56zM512 304l-192 0 0 16c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-16-192 0 0 112c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-112z\"]\n  };\n  var faTrowelBricks = {\n    prefix: 'fas',\n    iconName: 'trowel-bricks',\n    icon: [512, 512, [], \"e58a\", \"M224 32c0-11.5-6.2-22.2-16.2-27.8s-22.3-5.5-32.2 .4l-160 96C5.9 106.3 0 116.8 0 128s5.9 21.7 15.5 27.4l160 96c9.9 5.9 22.2 6.1 32.2 .4S224 235.5 224 224l0-64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-64zm96 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-160 0zM0 416l0 64c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32zm224-32c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-256 0z\"]\n  };\n  var faSocks = {\n    prefix: 'fas',\n    iconName: 'socks',\n    icon: [512, 512, [129510], \"f696\", \"M252.8 0L176 0c-26.5 0-48 21.5-48 48l0 16 112 0 0-16c0-17.5 4.7-33.9 12.8-48zM128 112l0 128c0 20.1-9.5 39.1-25.6 51.2l-64 48c-24.2 18.1-38.4 46.6-38.4 76.8 0 53 43 96 96 96 15.4 0 30.5-3.7 44-10.7-17.6-23.9-28-53.4-28-85.3 0-45.3 21.3-88 57.6-115.2l64-48c4-3 6.4-7.8 6.4-12.8l0-128-112 0zm160 0l0 128c0 20.1-9.5 39.1-25.6 51.2l-64 48c-24.2 18.1-38.4 46.6-38.4 76.8 0 53 43 96 96 96 20.8 0 41-6.7 57.6-19.2l115.2-86.4C461 382.2 480 344.3 480 304l0-192-192 0zM480 64l0-16c0-26.5-21.5-48-48-48L336 0c-26.5 0-48 21.5-48 48l0 16 192 0z\"]\n  };\n  var faT = {\n    prefix: 'fas',\n    iconName: 't',\n    icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l128 0 0 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n  };\n  var faMicrochip = {\n    prefix: 'fas',\n    iconName: 'microchip',\n    icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c-35.3 0-64 28.7-64 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c0 35.3 28.7 64 64 64l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c35.3 0 64-28.7 64-64l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c0-35.3-28.7-64-64-64l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40zM160 128l192 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32zm16 48l0 160 160 0 0-160-160 0z\"]\n  };\n  var faTruckMedical = {\n    prefix: 'fas',\n    iconName: 'truck-medical',\n    icon: [576, 512, [128657, \"ambulance\"], \"f0f9\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l3.3 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l102.6 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l3.3 0c35.3 0 64-28.7 64-64l0-146.7c0-17-6.7-33.3-18.7-45.3L512 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM512 237.3l0 50.7-96 0 0-96 50.7 0 45.3 45.3zM152 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm232 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM176 136c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n  };\n  var faAmbulance = faTruckMedical;\n  var faOm = {\n    prefix: 'fas',\n    iconName: 'om',\n    icon: [576, 512, [128329], \"f679\", \"M388.7 4.7c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6l-16 16c-6.2 6.2-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6l16-16zM176 160c-10.8 0-20.8 3.6-28.8 9.6-14.1 10.6-34.2 7.8-44.8-6.4s-7.8-34.2 6.4-44.8c18.7-14.1 42-22.4 67.2-22.4 61.9 0 112 50.1 112 112 0 17.2-3.9 33.5-10.8 48l49.7 0c12.7 0 24.9-5 33.9-14.1l20.7-20.7c18.7-18.7 44.1-29.3 70.6-29.3 55.2 0 99.9 44.7 99.9 99.9l0 96.1c0 55.2-44.8 100-100 100S352 443.2 352 388l0-4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 4c0 19.9 16.1 36 36 36s36-16.1 36-36l0-96.1c0-19.8-16.1-35.9-35.9-35.9-9.5 0-18.6 3.8-25.4 10.5l-20.7 20.7c-21 21-49.4 32.8-79.1 32.8l-26.8 0c12.6 19.6 19.9 42.8 19.9 68 0 75.2-65 132-140 132S40 463.2 40 388c0-17.7 14.3-32 32-32s32 14.3 32 32c0 35.3 31.7 68 76 68s76-32.7 76-68-31.7-68-76-68l-20 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0c26.5 0 48-21.5 48-48s-21.5-48-48-48zM337.1 60.1c-11-13.8-31.1-16.2-45-5.2s-16.2 31.1-5.2 45C312.6 132.2 354.4 152 400 152s87.4-19.8 113.1-52.1c11-13.8 8.7-34-5.2-45s-34-8.7-45 5.2C450.3 76 427.5 88 400 88s-50.3-12-62.9-27.9z\"]\n  };\n  var faMosquitoNet = {\n    prefix: 'fas',\n    iconName: 'mosquito-net',\n    icon: [640, 512, [], \"e52c\", \"M576 352c13.3 0 24 10.7 24 24l0 16 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 48 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 16-.1 2.5C598.6 566.6 588.4 576 576 576s-22.6-9.4-23.9-21.5l-.1-2.5 0-16-48 0 0 16-.1 2.5C502.6 566.6 492.4 576 480 576s-22.6-9.4-23.9-21.5l-.1-2.5 0-16-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-48-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 48 0 0-16c0-13.3 10.7-24 24-24zM429.9 16.3c7.7-9.4 21.3-11.5 31.4-4.3 10.1 7.1 13.1 20.9 7.4 31.7l-1.3 2.1-25.9 38.9 13.3 53.4c2 8-.1 16.3-5.3 22.3l-2.4 2.4-44.7 38.3 130.5 14.5c42.8 4.8 75.1 40.9 75.1 83.9 0 3.9-.4 7.7-.9 11.5-7.3-3.5-15.3-5.8-23.8-6.7L576 304c-18.5 0-35.3 7-48 18.4-11-9.9-25.1-16.5-40.6-18.1L480 304c-30.3 0-56.1 18.7-66.8 45.2-12.5 5-23.2 13.4-31.1 24l-30.2-40.1 0 74.7c0 17.7-14.3 32-32 32-16.6 0-30.2-12.6-31.8-28.7l-.2-3.3 0-74.6-32.3 43 0 39.8c0 3.5-.7 6.9-2.1 10.1l-1.6 3.1-40 64-1.4 2c-7.5 9.6-21 12.1-31.3 5.3-10.3-6.8-13.7-20.5-8.3-31.5l1.2-2.2 36.2-58 0-41 .3-4c.6-3.9 2.2-7.7 4.6-10.9l39.3-52.2-66.2 59.5c-17 15.3-39 23.7-61.9 23.8l-8.1 0c-46.6 0-84.4-37.8-84.4-84.4 0-43 32.4-79.2 75.1-83.9l130.5-14.5-44.7-38.3-2.4-2.4c-5.2-6-7.3-14.4-5.3-22.3l13.3-53.4-25.9-38.9-1.2-2.1c-5.7-10.8-2.7-24.6 7.4-31.7 10.1-7.1 23.7-5.1 31.4 4.3l1.5 2 32 48 1.4 2.2c2.8 5.3 3.5 11.6 2.1 17.6l-12.3 49.2 53.3 45.7 0-28.8 .2-3.2c1.1-10.4 7.2-19.4 15.8-24.4l0-60.5 .3-3.2c1.5-7.3 8-12.7 15.7-12.8 7.7 0 14.2 5.5 15.7 12.8l.3 3.2 0 60.5c8.7 5 14.8 14 15.8 24.4l.2 3.2 0 28.9 53.4-45.7-12.3-49.2c-1.5-5.9-.7-12.2 2.1-17.6l1.4-2.2 32-48 1.5-2zM504 488l48 0 0-48-48 0 0 48z\"]\n  };\n  var faPrescriptionBottle = {\n    prefix: 'fas',\n    iconName: 'prescription-bottle',\n    icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zM32 144l320 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-48 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-48 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-64z\"]\n  };\n  var faUsersGear = {\n    prefix: 'fas',\n    iconName: 'users-gear',\n    icon: [640, 512, [\"users-cog\"], \"f509\", \"M320 224a104 104 0 1 0 0-208 104 104 0 1 0 0 208zM96 232a72 72 0 1 0 0-144 72 72 0 1 0 0 144zM0 416l0 32c0 17.7 14.3 32 32 32l86.7 0c-4.3-9.8-6.7-20.6-6.7-32l0-16c0-53.2 20-101.8 52.9-138.6-11.7-3.5-24.1-5.4-36.9-5.4-70.7 0-128 57.3-128 128zM616 160a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zM160 432l0 16c0 17.7 14.3 32 32 32l156.8 0c-7.1-21.6-6.3-44.4 10.7-64-14-16.2-20.5-39.7-11.4-63.3 6.6-17.1 15.9-33.1 27.4-47.3 5.4-6.6 11.6-11.7 18.3-15.4-22.1-11.5-47.2-18-73.8-18-88.4 0-160 71.6-160 160zm464.6-44.1c6.3-3.6 9.5-11.1 6.8-18-4.8-12.4-11.5-24.1-19.9-34.4-4.6-5.7-12.7-6.7-19-3-21.8 12.6-48.6-2.8-48.6-28.1 0-7.3-4.9-13.8-12.1-14.9-12.9-2-26.8-2-39.7 0-7.2 1.1-12.1 7.6-12.1 14.9 0 25.2-26.8 40.7-48.6 28.1-6.3-3.6-14.4-2.6-19 3-8.4 10.3-15.1 22-19.9 34.4-2.6 6.8 .5 14.3 6.8 17.9 21.9 12.6 21.9 43.5 0 56.2-6.3 3.6-9.5 11.1-6.8 17.9 4.8 12.4 11.5 24.1 19.9 34.4 4.6 5.7 12.7 6.7 19 3 21.8-12.6 48.6 2.9 48.6 28.1 0 7.3 4.9 13.8 12.1 14.9 12.9 2 26.8 2 39.7 0 7.2-1.1 12.1-7.6 12.1-14.9 0-25.2 26.8-40.7 48.6-28.1 6.3 3.6 14.4 2.6 19-3 8.4-10.3 15.1-22 19.9-34.4 2.6-6.8-.5-14.3-6.8-17.9-21.9-12.6-21.9-43.5 0-56.2zM472 416a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n  };\n  var faUsersCog = faUsersGear;\n  var faRoadCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'road-circle-exclamation',\n    icon: [640, 512, [], \"e565\", \"M288 32l-76.3 0c-29.4 0-55.1 20.1-62.1 48.6L65.4 420.5C57.9 450.7 80.8 480 112 480l209.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-28.6 6.2-55.7 17.4-80-.5 0-1 0-1.5 0-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49c35.2-39.9 86.7-65 144-65 9 0 17.8 .6 26.5 1.8l-32-129.2C483.4 52.1 457.8 32 428.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n  };\n  var faPause = {\n    prefix: 'fas',\n    iconName: 'pause',\n    icon: [384, 512, [9208], \"f04c\", \"M48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 32zm224 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0z\"]\n  };\n  var faStaffSnake = {\n    prefix: 'fas',\n    iconName: 'staff-snake',\n    icon: [448, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M192 32l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 64 0c53 0 96 43 96 96s-43 96-96 96l-16 0 0-64 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0 192 32 0c53 0 96 43 96 96 0 47.6-34.6 87.1-80 94.7l0-67c9.6-5.5 16-15.9 16-27.7 0-17.7-14.3-32-32-32l-32 0 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-64-32 0c-53 0-96-43-96-96 0-47.6 34.6-87.1 80-94.7l0 67c-9.6 5.5-16 15.9-16 27.7 0 17.7 14.3 32 32 32l32 0 0-192-72.6 0c-11.1 19.1-31.7 32-55.4 32l-16 0C21.5 128 0 106.5 0 80S21.5 32 48 32l144 0z\"]\n  };\n  var faRodAsclepius = faStaffSnake;\n  var faRodSnake = faStaffSnake;\n  var faStaffAesculapius = faStaffSnake;\n  var faPiggyBank = {\n    prefix: 'fas',\n    iconName: 'piggy-bank',\n    icon: [576, 512, [], \"f4d3\", \"M288-32a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM48 304c0-70.1 47-131.4 117.1-164.9 25.3 41.3 70.9 68.9 122.9 68.9 55.7 0 104.1-31.7 128-78 15.8-11.3 35.1-18 56-18l19.5 0c10.4 0 18 9.8 15.5 19.9l-17.1 68.3c9.9 12.4 18.2 25.7 24.4 39.8l21.7 0c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24l-40 0c-16.5 22-38.5 39.6-64 50.7l0 29.3c0 17.7-14.3 32-32 32l-33 0c-14.3 0-26.8-9.5-30.8-23.2l-7.1-24.8-82.3 0-7.1 24.8C235.8 502.5 223.3 512 209 512l-33 0c-17.7 0-32-14.3-32-32l0-29.3C87.5 426 48 369.6 48 304zm376 16a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n  };\n  var faMonument = {\n    prefix: 'fas',\n    iconName: 'monument',\n    icon: [384, 512, [], \"f5a6\", \"M209-33c-9.4-9.4-24.6-9.4-33.9 0L95 47c-4.1 4.1-6.5 9.4-7 15.1L58.4 448 48 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.4 0-29.7-385.8c-.4-5.7-2.9-11.1-7-15.1L209-33zM128 296c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24z\"]\n  };\n  var faAnglesRight = {\n    prefix: 'fas',\n    iconName: 'angles-right',\n    icon: [448, 512, [187, \"angle-double-right\"], \"f101\", \"M439.1 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L371.2 256 233.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L179.2 256 41.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n  };\n  var faAngleDoubleRight = faAnglesRight;\n  var faDesktop = {\n    prefix: 'fas',\n    iconName: 'desktop',\n    icon: [512, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 32C28.7 32 0 60.7 0 96L0 352c0 35.3 28.7 64 64 64l144 0-16 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0-16-48 144 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 32zM96 96l320 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32L96 320c-17.7 0-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32z\"]\n  };\n  var faDesktopAlt = faDesktop;\n  var faPlaneCircleXmark = {\n    prefix: 'fas',\n    iconName: 'plane-circle-xmark',\n    icon: [640, 512, [], \"e557\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 78 71.5c-69.3 29-118 97.4-118 177.2 0 49.3 18.6 94.3 49.1 128.3L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7z\"]\n  };\n  var faRetweet = {\n    prefix: 'fas',\n    iconName: 'retweet',\n    icon: [576, 512, [], \"f079\", \"M118.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9S19.1 160 32 160l32 0 0 224c0 53 43 96 96 96l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0c-17.7 0-32-14.3-32-32l0-224 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64zM457.4 470.6c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9S556.9 352 544 352l-32 0 0-224c0-53-43-96-96-96L288 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32l0 224-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64z\"]\n  };\n  var faUserGear = {\n    prefix: 'fas',\n    iconName: 'user-gear',\n    icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M256.5 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM226.7 304l59.4 0 1.5 0c-12.9 26.8-7.8 58.2 11.5 79.5-20.2 22.3-24.8 55.8-9.4 83.4l22.5 40.4c.9 1.6 1.9 3.2 2.9 4.7l-237 0c-16.4 0-29.7-13.3-29.7-29.7 0-98.5 79.8-178.3 178.3-178.3zm205.9-56.4c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 6.1c0 18.9 24.1 32.8 40.5 23.4l5-2.9c11.6-6.7 26.5-2.6 33 9.1l22.4 40.2c6.2 11.2 2.6 25.2-8.2 32l-4.7 2.9c-16.2 10.1-16.2 39.9 0 50.1l4.6 2.9c10.8 6.8 14.5 20.8 8.3 32L607 483.8c-6.5 11.7-21.4 15.9-33 9.1l-4.9-2.9c-16.4-9.5-40.5 4.5-40.5 23.4l0 6.1c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-5.9c0-19-24.2-33-40.7-23.5l-4.8 2.8c-11.6 6.7-26.4 2.6-33-9.1l-22.6-40.4c-6.2-11.2-2.6-25.3 8.3-32.1l4.4-2.7c16.3-10.1 16.3-40.1 0-50.2l-4.5-2.8c-10.9-6.8-14.5-20.9-8.3-32.1l22.5-40.3c6.5-11.7 21.4-15.8 32.9-9.1l4.8 2.8c16.5 9.5 40.7-4.5 40.7-23.5l0-5.9zm99.9 136.2a52 52 0 1 0 -104 0 52 52 0 1 0 104 0z\"]\n  };\n  var faUserCog = faUserGear;\n  var faBorderAll = {\n    prefix: 'fas',\n    iconName: 'border-all',\n    icon: [448, 512, [], \"f84c\", \"M384 96l0 128-128 0 0-128 128 0zm0 192l0 128-128 0 0-128 128 0zM192 224l-128 0 0-128 128 0 0 128zM64 288l128 0 0 128-128 0 0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n  };\n  var faCoins = {\n    prefix: 'fas',\n    iconName: 'coins',\n    icon: [512, 512, [], \"f51e\", \"M128 96l0-16c0-44.2 86-80 192-80S512 35.8 512 80l0 16c0 30.6-41.3 57.2-102 70.7-2.4-2.8-4.9-5.5-7.4-8-15.5-15.3-35.5-26.9-56.4-35.5-41.9-17.5-96.5-27.1-154.2-27.1-21.9 0-43.3 1.4-63.8 4.1-.2-1.3-.2-2.7-.2-4.1zM432 353l0-46.2c15.1-3.9 29.3-8.5 42.2-13.9 13.2-5.5 26.1-12.2 37.8-20.3l0 15.4c0 26.8-31.5 50.5-80 65zm0-96l0-33c0-4.5-.4-8.8-1-13 15.5-3.9 30-8.6 43.2-14.2s26.1-12.2 37.8-20.3l0 15.4c0 26.8-31.5 50.5-80 65zM0 240l0-16c0-44.2 86-80 192-80s192 35.8 192 80l0 16c0 44.2-86 80-192 80S0 284.2 0 240zm384 96c0 44.2-86 80-192 80S0 380.2 0 336l0-15.4c11.6 8.1 24.5 14.7 37.8 20.3 41.9 17.5 96.5 27.1 154.2 27.1s112.3-9.7 154.2-27.1c13.2-5.5 26.1-12.2 37.8-20.3l0 15.4zm0 80.6l0 15.4c0 44.2-86 80-192 80S0 476.2 0 432l0-15.4c11.6 8.1 24.5 14.7 37.8 20.3 41.9 17.5 96.5 27.1 154.2 27.1s112.3-9.7 154.2-27.1c13.2-5.5 26.1-12.2 37.8-20.3z\"]\n  };\n  var faMarsStroke = {\n    prefix: 'fas',\n    iconName: 'mars-stroke',\n    icon: [576, 512, [9894], \"f229\", \"M416-32c-17.7 0-32 14.3-32 32s14.3 32 32 32l50.7 0-58.7 58.7-17.4-17.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l17.4 17.4-23 23c-28.4-19.5-62.7-31-99.8-31-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176c0-37-11.4-71.4-31-99.8l23-23 17.4 17.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L453.3 136 512 77.3 512 128c0 17.7 14.3 32 32 32s32-14.3 32-32L576 0c0-17.7-14.3-32-32-32L416-32zM128 304a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z\"]\n  };\n  var faHandshakeAngle = {\n    prefix: 'fas',\n    iconName: 'handshake-angle',\n    icon: [576, 512, [\"hands-helping\"], \"f4c4\", \"M268.9 53.2L152.3 182.8c-4.6 5.1-4.4 13 .5 17.9 30.5 30.5 80 30.5 110.5 0l31.8-31.8c4.2-4.2 9.5-6.5 14.9-6.9 6.8-.6 13.8 1.7 19 6.9L505.6 344 576 288 576 0 464 64 440.2 48.1C424.4 37.6 405.9 32 386.9 32l-70.4 0c-1.1 0-2.3 0-3.4 .1-16.9 .9-32.8 8.5-44.2 21.1zM116.6 150.7L223.4 32 183.8 32c-25.5 0-49.9 10.1-67.9 28.1L0 192 0 544 144 408 156.4 418.3c23 19.2 52 29.7 81.9 29.7l15.7 0-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l41 41 9 0c19.1 0 37.8-4.3 54.8-12.3L359 409c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l32 32 17.5-17.5c8.9-8.9 11.5-21.8 7.6-33.1l-137.9-136.8-14.9 14.9c-49.3 49.3-129.1 49.3-178.4 0-23-23-23.9-59.9-2.2-84z\"]\n  };\n  var faHandsHelping = faHandshakeAngle;\n  var faArrowDown = {\n    prefix: 'fas',\n    iconName: 'arrow-down',\n    icon: [384, 512, [8595], \"f063\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7-105.4-105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n  };\n  var faLocationDot = {\n    prefix: 'fas',\n    iconName: 'location-dot',\n    icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M0 188.6C0 84.4 86 0 192 0S384 84.4 384 188.6c0 119.3-120.2 262.3-170.4 316.8-11.8 12.8-31.5 12.8-43.3 0-50.2-54.5-170.4-197.5-170.4-316.8zM192 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n  };\n  var faMapMarkerAlt = faLocationDot;\n  var faPlugCircleExclamation = {\n    prefix: 'fas',\n    iconName: 'plug-circle-exclamation',\n    icon: [640, 512, [], \"e55d\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 228a20 20 0 1 0 0-40 20 20 0 1 0 0 40zm0-180c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n  };\n  var faCookieBite = {\n    prefix: 'fas',\n    iconName: 'cookie-bite',\n    icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9-.9-5.3-5.3-9.3-10.6-10.1-51.5-8.2-92.8-47.1-104.5-97.4-1.8-7.6-8-13.4-15.7-14.6-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faScrewdriverWrench = {\n    prefix: 'fas',\n    iconName: 'screwdriver-wrench',\n    icon: [576, 512, [\"tools\"], \"f7d9\", \"M224.1 97.1l0 49.6 .5 .5c6.5-82.4 75.4-147.2 159.5-147.2 20.1 0 39.4 3.7 57.1 10.5 10 3.8 11.8 16.5 4.3 24.1l-88.7 88.7c-3 3-4.7 7.1-4.7 11.3l0 41.4c0 8.8 7.2 16 16 16l41.4 0c4.2 0 8.3-1.7 11.3-4.7l88.7-88.7c7.6-7.6 20.3-5.7 24.1 4.3 6.8 17.7 10.5 37 10.5 57.1 0 60.6-33.7 113.4-83.5 140.5l81.5 81.5c18.7 18.7 18.7 49.1 0 67.9l-60.1 60.1c-18.7 18.7-49.1 18.7-67.9 0L288.1 384c-27.4-27.4-33.6-67.9-18.5-101.3l-90.7-90.7-49.6 0c-10.7 0-20.7-5.3-26.6-14.2L23.4 58.9c-4.2-6.3-3.4-14.8 2-20.2L70.8-6.7c5.4-5.4 13.8-6.2 20.2-2L209.9 70.5c8.9 5.9 14.2 15.9 14.2 26.6zm-8.5 199.5c-6.3 37 2.4 76.1 26.4 107.4L147 498.9c-28.1 28.1-73.7 28.1-101.8 0s-28.1-73.7 0-101.8l135.4-135.4 35 35z\"]\n  };\n  var faTools = faScrewdriverWrench;\n  var faIndent = {\n    prefix: 'fas',\n    iconName: 'indent',\n    icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n  };\n  var faBars = {\n    prefix: 'fas',\n    iconName: 'bars',\n    icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n  };\n  var faNavicon = faBars;\n  var faHandsPraying = {\n    prefix: 'fas',\n    iconName: 'hands-praying',\n    icon: [640, 512, [\"praying-hands\"], \"f684\", \"M224 296c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112.6 88.2-119.7c13.1-17.8 9.3-42.8-8.5-55.9s-42.8-9.3-55.9 8.5L106.5 142.9C89.3 166.2 80 194.5 80 223.6l0 110.7-58.1 19.4C8.8 358 0 370.2 0 384l0 96c0 10 4.7 19.5 12.7 25.5s18.4 8 28.1 5.2l154.4-44.1c55-15.7 92.8-65.9 92.8-123.1L288 224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 72zm192 0l0-72c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 119.6c0 57.2 37.9 107.4 92.8 123.1l154.4 44.1c9.7 2.8 20 .8 28.1-5.2S640 490 640 480l0-96c0-13.8-8.8-26-21.9-30.4l-58.1-19.4 0-110.7c0-29-9.3-57.3-26.5-80.7L440.2 16.3C427.1-1.5 402.1-5.3 384.3 7.8s-21.6 38.1-8.5 55.9L464 183.4 464 296c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n  };\n  var faPrayingHands = faHandsPraying;\n  var faViruses = {\n    prefix: 'fas',\n    iconName: 'viruses',\n    icon: [640, 512, [], \"e076\", \"M192 0c17.7 0 32 14.3 32 32 0 30.5 36.9 45.8 58.5 24.2 12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-21.6 21.6-6.3 58.5 24.2 58.5 17.7 0 32 14.3 32 32s-14.3 32-32 32c-30.5 0-45.8 36.9-24.2 58.5 12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0c-21.6-21.6-58.5-6.3-58.5 24.2 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-30.5-36.9-45.8-58.5-24.2-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3C77.8 260.9 62.5 224 32 224 14.3 224 0 209.7 0 192s14.3-32 32-32c30.5 0 45.8-36.9 24.2-58.5-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0C123.1 77.8 160 62.5 160 32 160 14.3 174.3 0 192 0zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm248 40c0 22.9 27.7 34.4 43.9 18.2 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-16.2 16.2-4.7 43.9 18.2 43.9 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.9 0-34.4 27.7-18.2 43.9 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-16.2-16.2-43.9-4.7-43.9 18.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-22.9-27.7-34.4-43.9-18.2-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c16.2-16.2 4.7-43.9-18.2-43.9-13.3 0-24-10.7-24-24s10.7-24 24-24c22.9 0 34.4-27.7 18.2-43.9-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16.2 16.2 43.9 4.7 43.9-18.2 0-13.3 10.7-24 24-24s24 10.7 24 24zM504 384a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faSchoolFlag = {\n    prefix: 'fas',\n    iconName: 'school-flag',\n    icon: [576, 512, [], \"e56e\", \"M256-8c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-72 0 0 19.2 128 76.8 64 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 128-76.8 0-91.2zM240 384l0 80 96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48zM112 416c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 416c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm-224 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n  };\n  var faTrademark = {\n    prefix: 'fas',\n    iconName: 'trademark',\n    icon: [640, 512, [8482], \"f25c\", \"M346.6 110.2c-7.8-11.7-22.4-17-35.9-12.9S288 113.9 288 128l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-150.3 69.4 104.1c5.9 8.9 15.9 14.2 26.6 14.2s20.7-5.3 26.6-14.2L544 233.7 544 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-14.1-9.2-26.5-22.7-30.6s-28.1 1.1-35.9 12.9L448 262.3 346.6 110.2zM32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l64 0 0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 96z\"]\n  };\n  var faFireBurner = {\n    prefix: 'fas',\n    iconName: 'fire-burner',\n    icon: [512, 512, [], \"e4f1\", \"M281.7 48.3L294 34.5c5.4-6.1 13.3-8.8 20.9-8.9 7.2 0 14.3 2.6 19.9 7.8 19.7 18.3 39.8 43.2 55 70.6 15.1 27.2 26.2 58.1 26.2 88.1 0 88.7-71.3 159.8-160 159.8-89.6 0-160-71.3-160-159.8 0-37.3 16-73.4 36.8-104.5 20.9-31.3 47.5-59 70.9-80.2 5.7-5.2 13.1-7.7 20.3-7.5s13.4 3.2 18.8 7.5c14.4 11.4 38.9 40.7 38.9 40.7zM320 240.2c0-36.5-37-73-54.8-88.4-5.4-4.7-13.1-4.7-18.5 0-17.7 15.4-54.8 51.9-54.8 88.4 0 35.3 28.7 64 64 64s64-28.7 64-64zM92.8 320c37.7 48.3 96.1 80 163.2 80 66.5 0 125.1-31.7 163-80l45 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l44.8 0zM456 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n  };\n  var faFaceSmileBeam = {\n    prefix: 'fas',\n    iconName: 'face-smile-beam',\n    icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM165.4 321.9c20.4 28 53.4 46.1 90.6 46.1s70.2-18.1 90.6-46.1c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5C356.3 390 309.2 416 256 416s-100.3-26-129.4-65.9c-7.8-10.7-5.4-25.7 5.3-33.5s25.7-5.4 33.5 5.3zM176 180c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n  };\n  var faSmileBeam = faFaceSmileBeam;\n  var faTentArrowLeftRight = {\n    prefix: 'fas',\n    iconName: 'tent-arrow-left-right',\n    icon: [512, 512, [], \"e57f\", \"M-.5 113c-9.4-9.4-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-31 31 310.1 0 54.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0-.1 0-262 0 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72zM37.1 476L60.3 292.6c1.2-9.7 6.8-18.3 15.1-23.3L238.8 170c10.2-6.2 22.9-6.2 33.1-.1l165.5 99.4c8.4 5 14 13.7 15.3 23.4L475.9 476c2.4 19.1-12.5 36-31.7 36l-71.9 0c-12.1 0-23.2-6.8-28.6-17.7L275.4 357.9c-1.8-3.6-5.5-5.9-9.5-5.9-5.9 0-10.6 4.7-10.6 10.6l0 117.4c0 17.7-14.3 32-32 32L68.8 512c-19.3 0-34.2-16.9-31.7-36z\"]\n  };\n  var faRoute = {\n    prefix: 'fas',\n    iconName: 'route',\n    icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155-3.8 4.4-9.4 6.1-14.5 5L320 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96 43 96 96s-43 96-96 96l-276.4 0c8.7-9.9 19.3-22.6 30-36.8 6.3-8.4 12.8-17.6 19-27.2L416 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-53 0-96-43-96-96s43-96 96-96l39.8 0c-21-31.5-39.8-67.7-39.8-96 0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8-25.2-27.4-85-97.9-85-148.4 0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faAnglesUp = {\n    prefix: 'fas',\n    iconName: 'angles-up',\n    icon: [384, 512, [\"angle-double-up\"], \"f102\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 329.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n  };\n  var faAngleDoubleUp = faAnglesUp;\n  var faBucket = {\n    prefix: 'fas',\n    iconName: 'bucket',\n    icon: [448, 512, [], \"e4cf\", \"M443.7 208c2.7 4.7 4.3 10.2 4.3 16 0 17.7-14.3 32-32 32l-5.1 0-22.4 213c-2.6 24.4-23.2 43-47.8 43l-233.6 0c-24.6 0-45.2-18.5-47.8-43L37.1 256 32 256c-17.7 0-32-14.3-32-32 0-5.8 1.6-11.3 4.3-16l439.4 0zM224-16c79.5 0 144 64.5 144 144l0 32-48 0 0-32c0-53-43-96-96-96s-96 43-96 96l0 32-48 0 0-32C80 48.5 144.5-16 224-16z\"]\n  };\n  var faLessThanEqual = {\n    prefix: 'fas',\n    iconName: 'less-than-equal',\n    icon: [448, 512, [], \"f537\", \"M426.1 94.4c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-384 128C8.8 166 0 178.2 0 192s8.8 26 21.9 30.4l384 128c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L133.2 192 426.1 94.4zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n  };\n  var faFolderClosed = {\n    prefix: 'fas',\n    iconName: 'folder-closed',\n    icon: [512, 512, [], \"e185\", \"M448 448L64 448c-35.3 0-64-28.7-64-64l0-176 512 0 0 176c0 35.3-28.7 64-64 64zm64-288L0 160 0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 16z\"]\n  };\n  var faPersonThroughWindow = {\n    prefix: 'fas',\n    iconName: 'person-through-window',\n    icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4-60.5 24.2-100.1 82.7-100.1 147.9l0 73.8-64 0 0-320zm288 0l224 0 0 320-67.7 0-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4 44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320l-26.6 0 42.7 64 150.9 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 400c0 26.5 21.5 48 48 48l260.2 0 33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4l-84.2-126.2 74.6 0 40 48zm-159.5 0l-73.5 0 0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faSchoolLock = {\n    prefix: 'fas',\n    iconName: 'school-lock',\n    icon: [640, 512, [], \"e56f\", \"M0 192c0-35.3 28.7-64 64-64l64 0 127.9-115.1c18.3-16.4 46-16.4 64.2 0L448 128 512 128c33 0 60.2 25 63.6 57.2-14.7-5.9-30.8-9.2-47.6-9.2-70.7 0-128 57.3-128 128l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L64 512c-35.3 0-64-28.7-64-64L0 192zM332.3 341.5c-6-3.5-12.9-5.5-20.3-5.5l-48 0c-22.1 0-40 17.9-40 40l0 88 96 0 0-64.1c0-20.8 4.4-40.5 12.3-58.4zM112 384c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm224-48a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM560 352l0-47.9c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0zm-112 2.7l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3z\"]\n  };\n  var faPersonBurst = {\n    prefix: 'fas',\n    iconName: 'person-burst',\n    icon: [640, 512, [], \"e53b\", \"M204 40.1c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24l0 48c0 13.3-10.7 24-24 24zM4 144.1c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM96.5 285.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l33.9-33.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L96.5 285.5zM62.6 2.7c9.4-9.4 24.6-9.4 33.9 0l33.9 33.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L62.6 36.6c-9.4-9.4-9.4-24.6 0-33.9zM352.4-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM478.7 299.1l-46.3-62.4 0 275.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-275.3-46.3 62.4c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95c25.2-33.9 65-53.9 107.2-53.9s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6z\"]\n  };\n  var faLeftLong = {\n    prefix: 'fas',\n    iconName: 'left-long',\n    icon: [576, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9S192 115.1 192 128l0 64 336 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-336 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n  };\n  var faLongArrowAltLeft = faLeftLong;\n  var faLocationCrosshairs = {\n    prefix: 'fas',\n    iconName: 'location-crosshairs',\n    icon: [576, 512, [\"location\"], \"f601\", \"M288-16c17.7 0 32 14.3 32 32l0 18.3c98.1 14 175.7 91.6 189.7 189.7l18.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.3 0c-14 98.1-91.6 175.7-189.7 189.7l0 18.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.3C157.9 463.7 80.3 386.1 66.3 288L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.3 0C80.3 125.9 157.9 48.3 256 34.3L256 16c0-17.7 14.3-32 32-32zM128 256a160 160 0 1 0 320 0 160 160 0 1 0 -320 0zm160-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n  };\n  var faLocation = faLocationCrosshairs;\n  var faPersonDotsFromLine = {\n    prefix: 'fas',\n    iconName: 'person-dots-from-line',\n    icon: [512, 512, [\"diagnoses\"], \"f470\", \"M184 72a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zM160 299.3c-19.9 22.6-32 52.2-32 84.7l0 32-64 0 0-32c0-106 86-192 192-192s192 86 192 192l0 32-64 0 0-32c0-32.5-12.1-62.1-32-84.7l0 116.7-192 0 0-116.7zM232 384a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88-104a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM24 464l464 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24zM64 184a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm424 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n  };\n  var faDiagnoses = faPersonDotsFromLine;\n  var faGaugeSimpleHigh = {\n    prefix: 'fas',\n    iconName: 'gauge-simple-high',\n    icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm320 96c0-16.2-6-31.1-16-42.3l69.5-138.9c5.9-11.9 1.1-26.3-10.7-32.2s-26.3-1.1-32.2 10.7L261.1 288.2c-1.7-.1-3.4-.2-5.1-.2-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64z\"]\n  };\n  var faTachometer = faGaugeSimpleHigh;\n  var faTachometerFast = faGaugeSimpleHigh;\n  var faAnglesLeft = {\n    prefix: 'fas',\n    iconName: 'angles-left',\n    icon: [448, 512, [171, \"angle-double-left\"], \"f100\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L269.3 256 406.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n  };\n  var faAngleDoubleLeft = faAnglesLeft;\n  var faUpDown = {\n    prefix: 'fas',\n    iconName: 'up-down',\n    icon: [512, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M406.6 502.6l96-96c9.2-9.2 11.9-22.9 6.9-34.9S492.9 352 480 352l-64 0 0-320c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 320-64 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l96 96c12.5 12.5 32.8 12.5 45.3 0zM150.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-9.2 9.2-11.9 22.9-6.9 34.9S19.1 160 32 160l64 0 0 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320 64 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-96-96z\"]\n  };\n  var faArrowsAltV = faUpDown;\n  var faBatteryEmpty = {\n    prefix: 'fas',\n    iconName: 'battery-empty',\n    icon: [640, 512, [\"battery-0\"], \"f244\", \"M112 160c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16l416 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16l-416 0zM32 176c0-44.2 35.8-80 80-80l416 0c44.2 0 80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 48c0 44.2-35.8 80-80 80l-416 0c-44.2 0-80-35.8-80-80l0-224z\"]\n  };\n  var faBattery0 = faBatteryEmpty;\n  var faKeyboard = {\n    prefix: 'fas',\n    iconName: 'keyboard',\n    icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm16 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM176 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n  };\n  var faCookie = {\n    prefix: 'fas',\n    iconName: 'cookie',\n    icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faStopwatch = {\n    prefix: 'fas',\n    iconName: 'stopwatch',\n    icon: [448, 512, [9201], \"f2f2\", \"M168.5 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 25.3c-108 11.9-192 103.5-192 214.7 0 119.3 96.7 216 216 216s216-96.7 216-216c0-39.8-10.8-77.1-29.6-109.2l28.2-28.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-23.4 23.4c-32.9-30.2-75.2-50.3-122-55.5l0-25.3 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0zm80 184l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n  };\n  var faEject = {\n    prefix: 'fas',\n    iconName: 'eject',\n    icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320L48 320c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48z\"]\n  };\n  var faSatelliteDish = {\n    prefix: 'fas',\n    iconName: 'satellite-dish',\n    icon: [512, 512, [128225], \"f7c0\", \"M232 0c154.6 0 280 125.4 280 280 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-128.1-103.9-232-232-232-13.3 0-24-10.7-24-24S218.7 0 232 0zM208 120c0-13.3 10.7-24 24-24 101.6 0 184 82.4 184 184 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-75.1-60.9-136-136-136-13.3 0-24-10.7-24-24zM26.4 142.7c8.8-17.9 32.4-19.9 46.5-5.8l128.5 128.5 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32 128.5 128.5c14.1 14.1 12 37.6-5.8 46.5-34.2 16.9-72.6 26.4-113.3 26.4-141.4 0-256-114.6-256-256 0-40.7 9.5-79.2 26.4-113.3z\"]\n  };\n  var faFaceRollingEyes = {\n    prefix: 'fas',\n    iconName: 'face-rolling-eyes',\n    icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM192 352l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm32-128c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4-3.7 5.2-5.8 11.6-5.8 18.4 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4 22.3 10 37.8 32.4 37.8 58.4zm128 64c-35.3 0-64-28.7-64-64 0-26 15.5-48.4 37.8-58.4-3.7 5.2-5.8 11.6-5.8 18.4 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4 22.3 10 37.8 32.4 37.8 58.4 0 35.3-28.7 64-64 64z\"]\n  };\n  var faMehRollingEyes = faFaceRollingEyes;\n  var faListCheck = {\n    prefix: 'fas',\n    iconName: 'list-check',\n    icon: [512, 512, [\"tasks\"], \"f0ae\", \"M133.8 36.3c10.9 7.6 13.5 22.6 5.9 33.4l-56 80c-4.1 5.8-10.5 9.5-17.6 10.1S52 158 47 153L7 113C-2.3 103.6-2.3 88.4 7 79S31.6 69.7 41 79l19.8 19.8 39.6-56.6c7.6-10.9 22.6-13.5 33.4-5.9zm0 160c10.9 7.6 13.5 22.6 5.9 33.4l-56 80c-4.1 5.8-10.5 9.5-17.6 10.1S52 318 47 313L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l19.8 19.8 39.6-56.6c7.6-10.9 22.6-13.5 33.4-5.9zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM64 376a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n  };\n  var faTasks = faListCheck;\n  var faSackXmark = {\n    prefix: 'fas',\n    iconName: 'sack-xmark',\n    icon: [512, 512, [], \"e56a\", \"M328 112l-144 0-37.3-74.5c-1.8-3.6-2.7-7.6-2.7-11.6 0-14.3 11.6-25.9 25.9-25.9L342.1 0c14.3 0 25.9 11.6 25.9 25.9 0 4-.9 8-2.7 11.6L328 112zM169.6 160l172.8 0 48.7 40.6C457.6 256 496 338 496 424.5 496 472.8 456.8 512 408.5 512l-305.1 0C55.2 512 16 472.8 16 424.5 16 338 54.4 256 120.9 200.6L169.6 160zM323.9 284.1c-9.4-9.4-24.6-9.4-33.9 0l-33.9 33.9-33.9-33.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l33.9 33.9-33.9 33.9c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l33.9-33.9 33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-33.9-33.9 33.9-33.9c9.4-9.4 9.4-24.6 0-33.9z\"]\n  };\n  var faHashtag = {\n    prefix: 'fas',\n    iconName: 'hashtag',\n    icon: [512, 512, [62098], \"23\", \"M214.7 .7c17.3 3.7 28.3 20.7 24.6 38l-19.1 89.3 126.5 0 22-102.7C372.4 8 389.4-3 406.7 .7s28.3 20.7 24.6 38L412.2 128 480 128c17.7 0 32 14.3 32 32s-14.3 32-32 32l-81.6 0-27.4 128 67.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-81.6 0-22 102.7c-3.7 17.3-20.7 28.3-38 24.6s-28.3-20.7-24.6-38l19.1-89.3-126.5 0-22 102.7c-3.7 17.3-20.7 28.3-38 24.6s-28.3-20.7-24.6-38L99.8 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l81.6 0 27.4-128-67.8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l81.6 0 22-102.7C180.4 8 197.4-3 214.7 .7zM206.4 192l-27.4 128 126.5 0 27.4-128-126.5 0z\"]\n  };\n  var faTrain = {\n    prefix: 'fas',\n    iconName: 'train',\n    icon: [384, 512, [128646], \"f238\", \"M0 96C0 43 43 0 96 0L288 0c53 0 96 43 96 96l0 256c0 40.1-24.6 74.5-59.5 88.8l53.9 63.7c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8l-74-87.5-151.3 0-74 87.5c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8l53.9-63.7C24.6 426.5 0 392.1 0 352L0 96zm64 32l0 96c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32zM192 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faGamepad = {\n    prefix: 'fas',\n    iconName: 'gamepad',\n    icon: [640, 512, [], \"f11b\", \"M448 64c106 0 192 86 192 192S554 448 448 448l-256 0C86 448 0 362 0 256S86 64 192 64l256 0zM192 176c-13.3 0-24 10.7-24 24l0 32-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-32c0-13.3-10.7-24-24-24zm240 96a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64-96a32 32 0 1 0 0 64 32 32 0 1 0 0-64z\"]\n  };\n  var faFileExport = {\n    prefix: 'fas',\n    iconName: 'file-export',\n    icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M96.5 0c-35.3 0-64 28.7-64 64l0 384c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-96 78.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-78.1 0 0-133.5c0-17-6.7-33.3-18.7-45.3L291.2 18.7C279.2 6.7 263 0 246 0L96.5 0zM358 176l-93.5 0c-13.3 0-24-10.7-24-24L240.5 58.5 358 176zM224.5 328c0-13.3 10.7-24 24-24l104 0 0 48-104 0c-13.3 0-24-10.7-24-24z\"]\n  };\n  var faArrowRightFromFile = faFileExport;\n  var faFaceGrimace = {\n    prefix: 'fas',\n    iconName: 'face-grimace',\n    icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM400 352c0 25.2-19.4 45.8-44 47.8l0-95.7c24.6 2 44 22.7 44 47.8zM276 304l40 0 0 96-40 0 0-96zm-80 96l0-96 40 0 0 96-40 0zm-40-95.8l0 95.7c-24.6-2-44-22.7-44-47.8s19.4-45.8 44-47.8zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faGrimace = faFaceGrimace;\n  var faTrainSubway = {\n    prefix: 'fas',\n    iconName: 'train-subway',\n    icon: [384, 512, [\"subway\"], \"f239\", \"M0 96C0 43 43 0 96 0L288 0c53 0 96 43 96 96l0 256c0 40.1-24.6 74.5-59.5 88.8l53.9 63.7c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8l-74-87.5-151.3 0-74 87.5c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8l53.9-63.7C24.6 426.5 0 392.1 0 352L0 96zm64 32l0 96c0 17.7 14.3 32 32 32l72 0 0-160-72 0c-17.7 0-32 14.3-32 32zM216 256l72 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-72 0 0 160zM96 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm224-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n  };\n  var faSubway = faTrainSubway;\n  var faCircleDot = {\n    prefix: 'fas',\n    iconName: 'circle-dot',\n    icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n  };\n  var faDotCircle = faCircleDot;\n  var faObjectGroup = {\n    prefix: 'fas',\n    iconName: 'object-group',\n    icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64 0 28.7 28.7 0 64 0 87.7 0 108.4 12.9 119.4 32l337.1 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 23.7-12.9 44.4-32 55.4l0 273.1c19.1 11.1 32 31.7 32 55.4 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-337.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-273.1zm448 0c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l337.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-273.1zM144 176c0-17.7 14.3-32 32-32l112 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-112 0c-17.7 0-32-14.3-32-32l0-64zM256 320l32 0c44.2 0 80-35.8 80-80l32 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-112 0c-17.7 0-32-14.3-32-32l0-16z\"]\n  };\n  var faShip = {\n    prefix: 'fas',\n    iconName: 'ship',\n    icon: [640, 512, [128674], \"f21a\", \"M272 0c-26.5 0-48 21.5-48 48l0 16-16 0c-44.2 0-80 35.8-80 80l0 108.8-21.6 8.6c-14.8 5.9-22.5 22.4-17.4 37.5 10.4 31.3 26.8 59.3 47.7 83.1 20.1-9.2 41.7-13.9 63.3-14 33.1-.2 66.3 10.2 94.4 31.4l1.6 1.2 0-215-104 41.6 0-83.2c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 83.2-104-41.6 0 215 1.6-1.2c27.5-20.7 59.9-31.2 92.4-31.4 22.3-.1 44.6 4.5 65.3 14 20.9-23.7 37.3-51.8 47.7-83.1 5-15.2-2.6-31.6-17.4-37.5L512 252.8 512 144c0-44.2-35.8-80-80-80l-16 0 0-16c0-26.5-21.5-48-48-48L272 0zM403.4 476.1c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 482.3 17.6 490.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n  };\n  var faC = {\n    prefix: 'fas',\n    iconName: 'c',\n    icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3 155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8 221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n  };\n  var faSquarePhone = {\n    prefix: 'fas',\n    iconName: 'square-phone',\n    icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 96.7c9.8-2.7 20.1 2.4 24 11.8l20.3 48.7c3.4 8.3 1.1 17.8-5.9 23.5l-22.1 18c16.2 35.8 44.5 65 79.6 82.4l19.3-23.6c5.7-6.9 15.2-9.3 23.5-5.9l48.7 20.3c9.4 3.9 14.4 14.2 11.8 24l-.8 2.8c-8.8 32.3-40.1 59.9-78.2 51.8-87.5-18.5-156.3-87.4-174.9-174.9-8.1-38.1 19.5-69.4 51.8-78.2l2.8-.8z\"]\n  };\n  var faPhoneSquare = faSquarePhone;\n  var faRulerCombined = {\n    prefix: 'fas',\n    iconName: 'ruler-combined',\n    icon: [448, 512, [], \"f546\", \"M1 441.7C5.5 463.5 24.8 480 48 480l352 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-64 0 0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0 0-64-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0 0-48c0-26.5-21.5-48-48-48L48 32C21.5 32 0 53.5 0 80L0 432c0 3.3 .3 6.6 1 9.7z\"]\n  };\n  var faArrowsRotate = {\n    prefix: 'fas',\n    iconName: 'arrows-rotate',\n    icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M65.9 228.5c13.3-93 93.4-164.5 190.1-164.5 53 0 101 21.5 135.8 56.2 .2 .2 .4 .4 .6 .6l7.6 7.2-47.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.4-11.3-10.7C390.5 28.6 326.5 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1zm443.5 64c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-53 0-101-21.5-135.8-56.2-.2-.2-.4-.4-.6-.6l-7.6-7.2 47.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320c-8.5 0-16.7 3.4-22.7 9.5S-.1 343.7 0 352.3l1 127c.1 17.7 14.6 31.9 32.3 31.7S65.2 496.4 65 478.7l-.4-51.5 10.7 10.1c46.3 46.1 110.2 74.7 180.7 74.7 129 0 235.7-95.4 253.4-219.5z\"]\n  };\n  var faRefresh = faArrowsRotate;\n  var faSync = faArrowsRotate;\n  var faPersonDress = {\n    prefix: 'fas',\n    iconName: 'person-dress',\n    icon: [384, 512, [\"female\"], \"f182\", \"M136 24a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM112 384l-25.8 0c-10.9 0-18.6-10.7-15.2-21.1l43-129-48.3 65.1c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C110 132 149.7 112 192 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6L270 234 313 362.9c3.5 10.4-4.3 21.1-15.2 21.1l-25.8 0 0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-32 0 0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128z\"]\n  };\n  var faFemale = faPersonDress;\n  var faBookOpen = {\n    prefix: 'fas',\n    iconName: 'book-open',\n    icon: [512, 512, [128214, 128366], \"f518\", \"M256 141.3l0 309.3 .5-.2C311.1 427.7 369.7 416 428.8 416l19.2 0 0-320-19.2 0c-42.2 0-84.1 8.4-123.1 24.6-16.8 7-33.4 13.9-49.7 20.7zM230.9 61.5L256 72 281.1 61.5C327.9 42 378.1 32 428.8 32L464 32c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-35.2 0c-50.7 0-100.9 10-147.7 29.5l-12.8 5.3c-7.9 3.3-16.7 3.3-24.6 0l-12.8-5.3C184.1 490 133.9 480 83.2 480L48 480c-26.5 0-48-21.5-48-48L0 80C0 53.5 21.5 32 48 32l35.2 0c50.7 0 100.9 10 147.7 29.5z\"]\n  };\n  var faFolderTree = {\n    prefix: 'fas',\n    iconName: 'folder-tree',\n    icon: [576, 512, [], \"f802\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24L0 392c0 30.9 25.1 56 56 56l184 0 0-48-184 0c-4.4 0-8-3.6-8-8l0-232 192 0 0-48-192 0 0-88zM336 224l192 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-82.7 0c-8.5 0-16.6-3.4-22.6-9.4l-8.6-8.6c-9-9-21.2-14.1-33.9-14.1L336 0c-26.5 0-48 21.5-48 48l0 128c0 26.5 21.5 48 48 48zm0 288l192 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-82.7 0c-8.5 0-16.6-3.4-22.6-9.4l-8.6-8.6c-9-9-21.2-14.1-33.9-14.1L336 288c-26.5 0-48 21.5-48 48l0 128c0 26.5 21.5 48 48 48z\"]\n  };\n  var faBoxArchive = {\n    prefix: 'fas',\n    iconName: 'box-archive',\n    icon: [512, 512, [\"archive\"], \"f187\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96L0 64zM32 176l448 0 0 240c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-240zm152 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faArchive = faBoxArchive;\n  var faTentArrowDownToLine = {\n    prefix: 'fas',\n    iconName: 'tent-arrow-down-to-line',\n    icon: [576, 512, [], \"e57e\", \"M185 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1C120 2.7 109.3-8 96-8S72 2.7 72 16l0 102.1-31-31C31.6 77.7 16.4 77.7 7 87S-2.3 111.6 7 121l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72zM155.8 260.6L132.1 448 32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32 0-2.8-.4-5.5-1-8L548.2 260.7c-1.2-9.7-6.9-18.4-15.3-23.4L367.4 137.9c-10.2-6.1-22.9-6.1-33.1 .1L170.9 237.3c-8.3 5.1-13.9 13.7-15.1 23.3zM448 448l-97.1 0 0-149.4c0-5.9 4.7-10.6 10.6-10.6 4 0 7.7 2.3 9.5 5.9L448 448z\"]\n  };\n  var faQrcode = {\n    prefix: 'fas',\n    iconName: 'qrcode',\n    icon: [448, 512, [], \"f029\", \"M64 160l64 0 0-64-64 0 0 64zM0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48L0 80zM64 416l64 0 0-64-64 0 0 64zM0 336c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96zM320 96l0 64 64 0 0-64-64 0zM304 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zM288 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm96 32c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm32-96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-32 32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n  };\n  var faDragon = {\n    prefix: 'fas',\n    iconName: 'dragon',\n    icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4-43.3-32.5c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0L464 0c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8 0 26.5-21.5 48-48 48l-21.5 0c-17 0-33.3-6.7-45.3-18.7l-13.3-13.3-32 0 0 21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1 0 60.6-49.1 109.8-109.8 109.8L32.3 512c-3.3 0-6.6-.4-9.6-1.4-9.2-2.8-16.7-9.6-20.4-18.6-1.3-3.3-2.2-6.9-2.3-10.7-.2-3.7 .3-7.3 1.3-10.7 2.8-9.2 9.6-16.7 18.6-20.4 3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1 0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1l0-102.5zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3l0 .6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9 0 13.3 10.7 24 24 24 10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87 0 27.5c0 32.8 8.4 64.8 24 93l-232 0c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9S.1 232.8 5.4 228L130.9 116.5z\"]\n  };\n  var faHourglassEnd = {\n    prefix: 'fas',\n    iconName: 'hourglass-end',\n    icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1l67.9 67.9-67.9 67.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1l-67.9-67.9 67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32S369.7 0 352 0L32 0zM96 75l0-11 192 0 0 11c0 25.5-10.1 49.9-28.1 67.9l-67.9 67.9-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n  };\n  var faHourglass3 = faHourglassEnd;\n  var faGrip = {\n    prefix: 'fas',\n    iconName: 'grip',\n    icon: [512, 512, [58119, \"grid-horizontal\", \"grip-horizontal\"], \"f58d\", \"M88 96c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0zM280 224l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40zm192 0l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40zm0 192l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40zM280 288c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0zM88 416l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40z\"]\n  };\n  var faGridHorizontal = faGrip;\n  var faGripHorizontal = faGrip;\n  var faBorderTopLeft = {\n    prefix: 'fas',\n    iconName: 'border-top-left',\n    icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32C28.7 32 0 60.7 0 96L0 448zm128 0c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm128 0c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm160 32c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM384 192a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm32 160a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faBorderStyle = faBorderTopLeft;\n  var faListUl = {\n    prefix: 'fas',\n    iconName: 'list-ul',\n    icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M48 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM48 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM96 256a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n  };\n  var faListDots = faListUl;\n  var faPeopleRobbery = {\n    prefix: 'fas',\n    iconName: 'people-robbery',\n    icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6L328 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-305.7c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64l0 96 0 .6 0 191.4c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-227.3 13 20.5c5.9 9.2 16.1 14.9 27 14.9l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-30.4 0-37.4-58.9C157.6 142 132.1 128 104.7 128L72 128z\"]\n  };\n  var faMobileButton = {\n    prefix: 'fas',\n    iconName: 'mobile-button',\n    icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zM192 464c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n  };\n  var faArrowDownAZ = {\n    prefix: 'fas',\n    iconName: 'arrow-down-a-z',\n    icon: [512, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M230.6 390.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm182-340.9c50.7 101.3 77.3 154.7 80 160 7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3l-7.2-14.3-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9c2.7-5.3 29.3-58.7 80-160 5.4-10.8 16.5-17.7 28.6-17.7s23.2 6.8 28.6 17.7zM384 135.6l-20.2 40.4 40.4 0-20.2-40.4zM288 320c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L397.3 416 448 416c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l73.4-73.4-50.7 0c-17.7 0-32-14.3-32-32z\"]\n  };\n  var faSortAlphaAsc = faArrowDownAZ;\n  var faSortAlphaDown = faArrowDownAZ;\n  var faMoneyBill = {\n    prefix: 'fas',\n    iconName: 'money-bill',\n    icon: [512, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm192 24c0 4.4-3.6 8.1-8 7.5-29-3.6-51.9-26.6-55.5-55.5-.5-4.4 3.1-8 7.5-8l48 0c4.4 0 8 3.6 8 8l0 48zM64 328c0-4.4 3.6-8.1 8-7.5 29 3.6 51.9 26.6 55.5 55.5 .5 4.4-3.1 8-7.5 8l-48 0c-4.4 0-8-3.6-8-8l0-48zm8-136.5c-4.4 .5-8-3.1-8-7.5l0-48c0-4.4 3.6-8 8-8l48 0c4.4 0 8.1 3.6 7.5 8-3.6 29-26.6 51.9-55.5 55.5zm368 129c4.4-.5 8 3.1 8 7.5l0 48c0 4.4-3.6 8-8 8l-48 0c-4.4 0-8.1-3.6-7.5-8 3.6-29 26.6-51.9 55.5-55.5z\"]\n  };\n  var faCircleMinus = {\n    prefix: 'fas',\n    iconName: 'circle-minus',\n    icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM168 232l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faMinusCircle = faCircleMinus;\n  var faArrowPointer = {\n    prefix: 'fas',\n    iconName: 'arrow-pointer',\n    icon: [448, 512, [\"mouse-pointer\"], \"f245\", \"M77.3 2.5c8.1-4.1 17.9-3.2 25.1 2.3l320 239.9c8.3 6.2 11.6 17 8.4 26.8s-12.4 16.4-22.8 16.4l-152.3 0 88.9 177.7c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3l-88.9-177.7-91.3 121.8c-6.2 8.3-17 11.6-26.8 8.4S64 434.3 64 424L64 24c0-9.1 5.1-17.4 13.3-21.5z\"]\n  };\n  var faMousePointer = faArrowPointer;\n  var faSquareShareNodes = {\n    prefix: 'fas',\n    iconName: 'square-share-nodes',\n    icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM368 160c0 35.3-28.7 64-64 64-15.4 0-29.5-5.4-40.6-14.5l-85.3 46.5 85.3 46.5c11-9.1 25.2-14.5 40.6-14.5 35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L158.5 300c-11.7 12.3-28.2 20-46.5 20-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3 0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n  };\n  var faShareAltSquare = faSquareShareNodes;\n  var faTableCellsLarge = {\n    prefix: 'fas',\n    iconName: 'table-cells-large',\n    icon: [448, 512, [\"th-large\"], \"f009\", \"M384 96l-128 0 0 128 128 0 0-128zm64 128l0 192c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 128zM64 288l0 128 128 0 0-128-128 0zm128-64l0-128-128 0 0 128 128 0zm64 64l0 128 128 0 0-128-128 0z\"]\n  };\n  var faThLarge = faTableCellsLarge;\n  var faCat = {\n    prefix: 'fas',\n    iconName: 'cat',\n    icon: [576, 512, [128008], \"f6be\", \"M64 96c53 0 96 43 96 96l0 85.8c29.7-44.7 77.8-76.2 133.4-84 25.6 60 85.2 102.1 154.6 102.1 10.9 0 21.6-1.1 32-3.1L480 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-140.8-136 108.8 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-144 0c-53 0-96-43-96-96l0-224c0-16.6-12.6-30.2-28.7-31.8l-6.6-.3C44.6 158.2 32 144.6 32 128 32 110.3 46.3 96 64 96zM533.8 3.2C544.2-5.5 560 1.9 560 15.5L560 128c0 61.9-50.1 112-112 112S336 189.9 336 128l0-112.5c0-13.6 15.8-21 26.2-12.3L416 48 480 48 533.8 3.2zM400 108a20 20 0 1 0 0 40 20 20 0 1 0 0-40zm96 0a20 20 0 1 0 0 40 20 20 0 1 0 0-40z\"]\n  };\n  var faCalendarWeek = {\n    prefix: 'fas',\n    iconName: 'calendar-week',\n    icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm0 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-192 0z\"]\n  };\n  var faCodeCompare = {\n    prefix: 'fas',\n    iconName: 'code-compare',\n    icon: [512, 512, [], \"e13a\", \"M198.8 1.8c9-3.7 19.3-1.7 26.2 5.2l56 56c9.4 9.4 9.4 24.6 0 33.9l-56 56c-6.9 6.9-17.2 8.9-26.2 5.2S184 145.7 184 136l0-24-24 0c-17.7 0-32 14.3-32 32l0 214.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L64 144c0-53 43-96 96-96l24 0 0-24c0-9.7 5.8-18.5 14.8-22.2zM392 80a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm-8 73.3c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3L448 368c0 53-43 96-96 96l-24 0 0 24c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-56-56c-9.4-9.4-9.4-24.6 0-33.9l56-56c6.9-6.9 17.2-8.9 26.2-5.2S328 366.3 328 376l0 24 24 0c17.7 0 32-14.3 32-32l0-214.7zM72 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n  };\n  var faRoadCircleXmark = {\n    prefix: 'fas',\n    iconName: 'road-circle-xmark',\n    icon: [640, 512, [], \"e566\", \"M287.9 32l-76.2 0c-29.4 0-55.1 20.1-62.1 48.6L65.4 420.5C57.9 450.7 80.8 480 112 480l209.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-28.6 6.2-55.7 17.4-80-.5 0-1 0-1.6 0-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49.2c35.2-40 86.7-65.2 144.2-65.2 9 0 17.8 .6 26.4 1.8l-32-129.2C483.4 52.1 457.8 32 428.3 32l-76.5 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faPallet = {\n    prefix: 'fas',\n    iconName: 'pallet',\n    icon: [576, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320zm96 64l128 0 0 64-128 0 0-64zm192 0l128 0 0 64-128 0 0-64z\"]\n  };\n  var faCakeCandles = {\n    prefix: 'fas',\n    iconName: 'cake-candles',\n    icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4-10.5L61.8 31.6C58 38.1 56 45.6 56 53.2L56 56c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L105.6-10.5c-2-3.4-5.7-5.5-9.6-5.5s-7.6 2.1-9.6 5.5zm128 0L189.8 31.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L233.6-10.5c-2-3.4-5.7-5.5-9.6-5.5s-7.6 2.1-9.6 5.5zM317.8 31.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L361.6-10.5c-2-3.4-5.7-5.5-9.6-5.5s-7.6 2.1-9.6 5.5L317.8 31.6zM128 160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.5C26.7 226.6 0 262.2 0 304l0 20.8c20.9 1.3 41.6 7.3 60.3 18l7.1 4.1c26.3 15 58.9 13.4 83.6-4.2 43.7-31.2 102.3-31.2 146 0 24.6 17.6 57.3 19.3 83.6 4.2l7.1-4.1c18.7-10.7 39.3-16.7 60.3-18l0-20.8c0-41.8-26.7-77.4-64-90.5l0-53.5c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48zM448 373c-12.7 1.2-25.1 5-36.5 11.5l-7.1 4.1c-42.6 24.3-95.4 21.7-135.3-6.8-27-19.3-63.2-19.3-90.2 0-39.9 28.5-92.7 31.2-135.3 6.8l-7.1-4.1C25.1 378 12.7 374.1 0 373l0 75c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-75z\"]\n  };\n  var faBirthdayCake = faCakeCandles;\n  var faCake = faCakeCandles;\n  var faBugSlash = {\n    prefix: 'fas',\n    iconName: 'bug-slash',\n    icon: [576, 512, [], \"e490\", \"M7-24.9c9.4-9.4 24.6-9.4 33.9 0L241.8 176 344 176c14.2 0 27.7 2.8 40 8l108.8-81.6c14.1-10.6 34.2-7.7 44.8 6.4s7.7 34.2-6.4 44.8l-97.8 73.3c5.3 8.9 9.3 18.7 11.8 29.1l98.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 32c0 9.5-.8 18.7-2.4 27.8L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9zM398.2 468c-23.2 22.1-53 37.2-86.2 42.2l0-128.4 86.2 86.2zM264 333.8l0 176.4c-51.2-7.7-94.5-39.7-117.7-83.9L83.2 473.6c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l83.4-62.5c-.1-2.6-.2-5.2-.2-7.9l0-32-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l98.8 0c3.3-13.9 9.3-26.7 17.6-37.8L264 333.8zM355.6 128l-82.4 0-72.3-72.3C216.1 22.8 249.4 0 288 0 341 0 384 43 384 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4z\"]\n  };\n  var faTarp = {\n    prefix: 'fas',\n    iconName: 'tarp',\n    icon: [512, 512, [], \"e57b\", \"M448 64c35.3 0 64 28.7 64 64l0 149.5c0 17-6.7 33.3-18.7 45.3L386.7 429.3c-12 12-28.3 18.7-45.3 18.7L64 448c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l384 0zm5.5 208L360 272c-13.3 0-24 10.7-24 24l0 93.5 117.5-117.5zM96 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n  };\n  var faDiagramPredecessor = {\n    prefix: 'fas',\n    iconName: 'diagram-predecessor',\n    icon: [448, 512, [], \"e477\", \"M289.2 137.9c2.5-6 8.3-9.9 14.8-9.9l40 0 0-24c0-13.3-10.7-24-24-24l-98 0c1.3 5.1 2 10.5 2 16l0 64c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l256 0c39.8 0 72 32.2 72 72l0 24 40 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-64 64c-6.2 6.2-16.4 6.2-22.6 0l-64-64c-4.6-4.6-5.9-11.5-3.5-17.4zM384 352l-320 0 0 64 320 0 0-64zm64 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 64z\"]\n  };\n  var faFaceFlushed = {\n    prefix: 'fas',\n    iconName: 'face-flushed',\n    icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM168 392c0 13.3 10.7 24 24 24l128 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-128 0c-13.3 0-24 10.7-24 24zm-8-96a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n  };\n  var faFlushed = faFaceFlushed;\n  var faDiagramNext = {\n    prefix: 'fas',\n    iconName: 'diagram-next',\n    icon: [448, 512, [], \"e476\", \"M384 224c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l128 0 0 64-32 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S294.5 288 288 288l-32 0 0-64 128 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64l-34 0c5.6 21.7-.5 45.1-16.7 61.3l-64 64c-25 25-65.5 25-90.5 0l-64-64C98.6 333.1 92.4 309.7 98 288l-34 0z\"]\n  };\n  var faAnchorCircleXmark = {\n    prefix: 'fas',\n    iconName: 'anchor-circle-xmark',\n    icon: [640, 512, [], \"e4ac\", \"M320.5 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3l16.2-14.2c2.1 113.1 94.4 204.1 208 204.1 16.6 0 32.7-1.9 48.2-5.6-20.3-30.5-32.2-67-32.2-106.4 0-27.3 5.7-53.3 16-76.9l0-136.6c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zm208 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n  };\n  var faPersonCircleXmark = {\n    prefix: 'fas',\n    iconName: 'person-circle-xmark',\n    icon: [640, 512, [], \"e543\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 400z\"]\n  };\n  var faSpa = {\n    prefix: 'fas',\n    iconName: 'spa',\n    icon: [576, 512, [], \"f5bb\", \"M169.7 227.5c34.3 18.7 64.5 44.1 88.8 74.5 11.1 13.9 21 28.9 29.4 44.8 8.5-15.9 18.3-30.8 29.4-44.8 24.3-30.5 54.5-55.9 88.8-74.5 41.7-22.7 89.4-35.5 139.7-35.5l9.9 0c11.1 0 20.1 9 20.1 20.1 0 148-119.9 267.9-267.9 267.9l-40.2 0C119.9 480 0 360.1 0 212.1 0 201 9 192 20.1 192l9.9 0c50.4 0 98.1 12.8 139.7 35.5zM303.9 38c16.9 15.9 61.4 63.4 89 142.3-40.1 20.2-75.8 48.2-104.9 82.1-29.2-33.9-64.8-61.8-104.9-82.1 27.6-78.9 72.2-126.4 89-142.3 4.3-4.1 10-6 15.9-6s11.6 2 15.9 6z\"]\n  };\n  var faBarsProgress = {\n    prefix: 'fas',\n    iconName: 'bars-progress',\n    icon: [448, 512, [\"tasks-alt\"], \"f828\", \"M288 160l96 0 0-64-96 0 0 64zM0 160L0 80C0 53.5 21.5 32 48 32l352 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 224c-26.5 0-48-21.5-48-48l0-16zM160 416l224 0 0-64-224 0 0 64zM0 416l0-80c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-16z\"]\n  };\n  var faTasksAlt = faBarsProgress;\n  var faHeartCircleCheck = {\n    prefix: 'fas',\n    iconName: 'heart-circle-check',\n    icon: [576, 512, [], \"e4fd\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n  };\n  var faMarsStrokeRight = {\n    prefix: 'fas',\n    iconName: 'mars-stroke-right',\n    icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M320.5 256a112 112 0 1 0 -224 0 112 112 0 1 0 224 0zM208.5 80c86.3 0 158.1 62.1 173.1 144.1 1-.1 1.9-.1 2.9-.1l16 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 61.4 0-22.4-28c-11-13.8-8.8-33.9 5-45s33.9-8.8 45 5l64 80c9.3 11.7 9.3 28.3 0 40l-64 80c-11 13.8-31.2 16-45 5s-16-31.2-5-45l22.4-28-61.4 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-16 0c-1 0-1.9 0-2.9-.1-15 82-86.8 144.1-173.1 144.1-97.2 0-176-78.8-176-176s78.8-176 176-176z\"]\n  };\n  var faMarsStrokeH = faMarsStrokeRight;\n  var faTowerObservation = {\n    prefix: 'fas',\n    iconName: 'tower-observation',\n    icon: [448, 512, [], \"e586\", \"M209.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9-5.6 11.2-16.9 17.7-28.6 17.7l0 80c0 17.7-14.3 32-32 32l-13 0 32 192 45 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l45 0 32-192-13 0c-17.7 0-32-14.3-32-32l0-80c-11.7 0-23-6.5-28.6-17.7-7.9-15.8-1.5-35 14.3-42.9l160-80zM310.7 448l-86.7-61.9-86.7 61.9 173.4 0zm-153-192l-3.5 21.2 69.9 49.9 69.9-49.9-3.5-21.2-132.7 0zm-12.3 73.9l-10.1 60.6 47.5-33.9-37.4-26.7zm119.9 26.7l47.5 33.9-10.1-60.6-37.4 26.7zM152 128c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n  };\n  var faSterlingSign = {\n    prefix: 'fas',\n    iconName: 'sterling-sign',\n    icon: [384, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M91.3 288l-34.8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l21.4 0C37.3 147.3 105.1 42 207.6 42l8.2 0c33.6 0 66.2 11.3 92.5 32.2l16.1 12.7c13.9 11 16.2 31.1 5.2 45s-31.1 16.2-45 5.2l-16.1-12.7c-15-11.9-33.6-18.4-52.8-18.4l-8.2 0c-57.3 0-94.7 59.9-69.7 111.4 3.6 7.4 6.6 14.9 9.1 22.6l149.5 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-141.2 0c1 35.3-8.7 70.6-28.9 100.9l-18.1 27.1 212.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-272 0c-11.8 0-22.6-6.5-28.2-16.9s-5-23 1.6-32.9l51.2-76.8c13.1-19.6 19.2-42.6 18.2-65.4z\"]\n  };\n  var faGbp = faSterlingSign;\n  var faPoundSign = faSterlingSign;\n  var faFaucetDrip = {\n    prefix: 'fas',\n    iconName: 'faucet-drip',\n    icon: [512, 512, [128688], \"e006\", \"M224 32c-17.7 0-32 14.3-32 32L96 64C78.3 64 64 78.3 64 96s14.3 32 32 32l96 0 0 64-18.7 0c-8.5 0-16.6 3.4-22.6 9.4L128 224 32 224c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l100.1 0c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48l36.1 0c17.7 0 32 14.3 32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32 0-88.4-71.6-160-160-160l-32 0-22.6-22.6c-6-6-14.1-9.4-22.6-9.4l-18.7 0 0-64 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c0-17.7-14.3-32-32-32zM436.8 455.4l-18.2 42.4c-1.8 4.1-2.7 8.6-2.7 13.1l0 1.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-1.2c0-4.5-.9-8.9-2.7-13.1l-18.2-42.4c-1.9-4.5-6.3-7.4-11.2-7.4s-9.2 2.9-11.2 7.4z\"]\n  };\n  var faCircleInfo = {\n    prefix: 'fas',\n    iconName: 'circle-info',\n    icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faInfoCircle = faCircleInfo;\n  var faFeather = {\n    prefix: 'fas',\n    iconName: 'feather',\n    icon: [512, 512, [129718], \"f52d\", \"M352 0c41 0 80.3 16.3 109.2 45.2l5.5 5.5c29 29 45.3 68.3 45.3 109.2 0 24.1-5.7 47.6-16.2 68.8-1.9 3.7-5.3 6.5-9.3 7.7L374.5 270c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l32.2 0c14.3 0 21.4 17.2 11.3 27.3l-22.4 22.4c-1.9 1.9-4.2 3.2-6.7 4l-81 24.3c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2 13.2 0 18.9 15.7 7.8 22.9-41.1 26.6-89.3 41.1-139 41.1l-86 0-48 48c-8.8 8.8-23.2 8.8-32 0s-8.8-23.2 0-32L256 224c8.8-8.8 8.8-23.2 0-32s-23.2-8.8-32 0L79.5 336.5c-5.7 5.7-15.5 1.7-15.5-6.4 0-67.9 27-133 75-181L242.8 45.2C271.7 16.3 311 0 352 0z\"]\n  };\n  var faBowlRice = {\n    prefix: 'fas',\n    iconName: 'bowl-rice',\n    icon: [512, 512, [], \"e2eb\", \"M176 40c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm24 48l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 160l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4 0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 184c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zM104 88l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zM296 88l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zM392 88l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 16l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n  };\n  var faStarHalfStroke = {\n    prefix: 'fas',\n    iconName: 'star-half-stroke',\n    icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288.1 353.6c10 0 19.9 2.3 29 7l74.4 37.9-13-82.5c-3.2-20.2 3.5-40.7 17.9-55.2l59-59.1-82.5-13.1c-20.2-3.2-37.7-15.9-47-34.1l-38-74.4 0 273.6zM457.4 489c-7.3 5.3-17 6.1-25 2L288.1 417.6 143.8 491c-8 4.1-17.7 3.3-25-2s-11-14.2-9.6-23.2L134.4 305.9 20 191.4c-6.4-6.4-8.6-15.8-5.8-24.4s10.1-14.9 19.1-16.3l159.9-25.4 73.6-144.2c4.1-8 12.4-13.1 21.4-13.1s17.3 5.1 21.4 13.1L383 125.3 542.9 150.7c8.9 1.4 16.3 7.7 19.1 16.3s.5 18-5.8 24.4L441.7 305.9 467 465.8c1.4 8.9-2.3 17.9-9.6 23.2z\"]\n  };\n  var faStarHalfAlt = faStarHalfStroke;\n  var faTemperatureArrowDown = {\n    prefix: 'fas',\n    iconName: 'temperature-arrow-down',\n    icon: [512, 512, [\"temperature-down\"], \"e03f\", \"M64.5 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144s-144-64.5-144-144c0-42.6 18.5-81 48-107.3L64.5 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3l0-28.7c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 28.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM439.1 310.6c-6 6-14.1 9.4-22.6 9.4s-16.6-3.4-22.6-9.4l-64-64c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l9.4 9.4 0-178.7c0-17.7 14.3-32 32-32s32 14.3 32 32l0 178.7 9.4-9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64z\"]\n  };\n  var faTemperatureDown = faTemperatureArrowDown;\n  var faMaskVentilator = {\n    prefix: 'fas',\n    iconName: 'mask-ventilator',\n    icon: [640, 512, [], \"e524\", \"M152.2 192c-15.4 38.3-24.2 77.2-24.2 108.8 0 13.3 1.5 26.2 4.4 38.7l-17-3.4c-29.9-6-51.4-32.2-51.4-62.8l0-81.3 88.2 0zm32.9-64L64 128c-35.3 0-64 28.7-64 64l0 81.3c0 61 43.1 113.5 102.9 125.5l66.3 13.3c18.7 22.1 42.9 40 70.8 51.8l0-87.8c-10.1-14.2-16-31.3-16-49.7 0-49.5 43-134.4 96-134.4 52.5 0 96 84.9 96 134.4 0 18.4-5.9 35.4-16 49.6l0 87.7c27.6-11.8 51.7-29.6 70.4-51.6l66.7-13.3c59.8-12 102.9-64.5 102.9-125.5l0-81.3c0-35.3-28.7-64-64-64l-121.5 0c-34.8-54.2-82.5-96-134.5-96-52.6 0-100.2 41.8-134.9 96zm302.5 64l88.4 0 0 81.3c0 30.5-21.5 56.8-51.4 62.8l-17 3.4c2.9-12.4 4.5-25.4 4.5-38.7 0-31.6-8.9-70.5-24.4-108.8zM288 320l0 192 64 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n  };\n  var faFileVideo = {\n    prefix: 'fas',\n    iconName: 'file-video',\n    icon: [384, 512, [], \"f1c8\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM80 304l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-24 35 35c3.2 3.2 7.5 5 12 5 9.4 0 17-7.6 17-17l0-94.1c0-9.4-7.6-17-17-17-4.5 0-8.8 1.8-12 5l-35 35 0-24c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32z\"]\n  };\n  var faArrowTrendDown = {\n    prefix: 'fas',\n    iconName: 'arrow-trend-down',\n    icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 82.7-169.4-169.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352 384 352z\"]\n  };\n  var faOilCan = {\n    prefix: 'fas',\n    iconName: 'oil-can',\n    icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-176 0c-26.5 0-48 21.5-48 48l0 64.8c0 19 11.2 36.2 28.5 43.9l67.5 30 0 21.3c0 26.5 21.5 48 48 48l259.1 0c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192 397.5 166.8c-8.9-4.4-18.7-6.8-28.6-6.8l-80.9 0 0-32 32 0zM96 208l0 86.1-48-21.3 0-64.8 48 0z\"]\n  };\n  var faPeopleCarryBox = {\n    prefix: 'fas',\n    iconName: 'people-carry-box',\n    icon: [576, 512, [\"people-carry\"], \"f4ce\", \"M64-32A56 56 0 1 1 64 80 56 56 0 1 1 64-32zM0 171.1c0-32.6 26.5-59.1 59.1-59.1 23.5 0 45.5 11.3 59.1 30.4l48.7 68.2c5.8 8.2 15.1 13.1 25.1 13.4l0-96c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c10-.3 19.3-5.2 25.1-13.4l48.7-68.2c13.6-19.1 35.6-30.4 59.1-30.4 32.6 0 59.1 26.5 59.1 59.1L576 272c0 30.2-14.2 58.7-38.4 76.8l-76.8 57.6c-8.1 6-12.8 15.5-12.8 25.6l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80c0-30.2 14.2-58.7 38.4-76.8l41.6-31.2 0-80.1-2.8 3.9c-18 25.2-47.1 40.2-78.1 40.2L352 288c-.6 0-1.3 0-1.9-.1-.6 0-1.3 .1-1.9 .1l-120.4 0c-.6 0-1.3 0-1.9-.1-.6 0-1.3 .1-1.9 .1l-31.1 0c-31 0-60.1-15-78.1-40.2l-2.8-3.9 0 80.1 41.6 31.2C177.8 373.3 192 401.8 192 432l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80c0-10.1-4.7-19.6-12.8-25.6L38.4 348.8C14.2 330.7 0 302.2 0 272L0 171.1zM0 379.3c3.1 2.7 6.3 5.4 9.6 7.9L64 428 64 512c0 17.7-14.3 32-32 32S0 529.7 0 512L0 379.3zM568 24a56 56 0 1 1 -112 0 56 56 0 1 1 112 0zm8 488c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-84 54.4-40.8c3.3-2.5 6.5-5.1 9.6-7.9L576 512z\"]\n  };\n  var faPeopleCarry = faPeopleCarryBox;\n  var faChair = {\n    prefix: 'fas',\n    iconName: 'chair',\n    icon: [448, 512, [129681], \"f6c0\", \"M152 256l0-181.8c-24.5 20.5-40 51.4-40 85.8l0 96 40 0zm48 0l48 0 0-205.4c-7.7-1.7-15.8-2.6-24-2.6s-16.3 .9-24 2.6L200 256zM296 74.2l0 181.8 40 0 0-96c0-34.4-15.5-65.2-40-85.8zM32 256l32 0 0-96C64 71.6 135.6 0 224 0S384 71.6 384 160l0 96 32 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-256 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n  };\n  var faWind = {\n    prefix: 'fas',\n    iconName: 'wind',\n    icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32l40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L32 112c-17.7 0-32 14.3-32 32s14.3 32 32 32l328 0c48.6 0 88-39.4 88-88S408.6 0 360 0L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l40 0c48.6 0 88-39.4 88-88s-39.4-88-88-88L32 336c-17.7 0-32 14.3-32 32s14.3 32 32 32l136 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n  };\n  var faLayerGroup = {\n    prefix: 'fas',\n    iconName: 'layer-group',\n    icon: [512, 512, [], \"f5fd\", \"M232.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 149.8C5.4 145.8 0 137.3 0 128s5.4-17.9 13.9-21.8L232.5 5.2zM48.1 218.4l164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 277.8C5.4 273.8 0 265.3 0 256s5.4-17.9 13.9-21.8l34.1-15.8zM13.9 362.2l34.1-15.8 164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 405.8C5.4 401.8 0 393.3 0 384s5.4-17.9 13.9-21.8z\"]\n  };\n  var faHeadSideMask = {\n    prefix: 'fas',\n    iconName: 'head-side-mask',\n    icon: [512, 512, [], \"e063\", \"M445.9 193c-.1-.4-.2-.9-.2-1.3-15.7-108.4-108.9-191.7-221.7-191.7-85 0-159 47.4-196.9 117.2L283.3 288 456 288 442.9 336 336 336c-8.8 0-16 7.2-16 16s7.2 16 16 16l98.2 0-8.7 32-89.5 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80.6 0c-6.7 19.1-24.8 32-45.3 32L288 464c-17.7 0-32-14.3-32-32l0-104.5-247.5-165C3 182.1 0 202.7 0 224 0 278 19.1 327.5 50.9 366.2 58.9 375.9 64 387.8 64 400.4L64 464c0 26.5 21.5 48 48 48l127.3 0 .7 0 131.3 0c44.9 0 83.8-31.1 93.6-74.9l33.9-150.3c3.3-14.4-.3-29.5-9.7-41L445.9 193zM288 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n  };\n  var faHands = {\n    prefix: 'fas',\n    iconName: 'hands',\n    icon: [512, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M512 160l-.1 72.6c0 44.8-17.6 87.1-47.9 118.4-.3-77-40.1-148.4-105.4-189.3l-1.9-1.2c2.5-3.7 2.8-8.6 .4-12.7l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S330 5 336.6 16.5l68 117.8 0 0 0 0 43.3 75 .1-49.3c0-17.7 14.4-32 32-32s32 14.4 32 32zM298.4 124.2c-14.1-8.8-29.8-12.7-45.2-12.1L216.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l67.1 116.2-27-16.9zM211.9 88.5l16.4 28.4c-15.1 5.5-28.6 15.6-38.3 29.7l-19.7-34.2c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l12.5 21.7c-2 8.6-2.5 17.5-1.7 26.1l-4.3 0 0 0-34.4 0-13.7-23.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM228.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C384.7 234.7 416 291.2 416 352l0 8c0 83.9-68.1 152-152 152L88 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l92 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 440c-13.3 0-24-10.7-24-24s10.7-24 24-24l124 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L24 368c-13.3 0-24-10.7-24-24s10.7-24 24-24l156 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 296c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0 0 0 0 0 93.2 0-46.2-28.9c-15-9.4-19.5-29.1-10.2-44.1z\"]\n  };\n  var faSignLanguage = faHands;\n  var faSigning = faHands;\n  var faTablets = {\n    prefix: 'fas',\n    iconName: 'tablets',\n    icon: [512, 512, [], \"f490\", \"M495.3 76.6c-4.6-8.7-16.3-9.7-23.3-2.7L297.9 248c-7 7-6 18.7 2.7 23.3 20.1 10.7 43 16.7 67.4 16.7 79.5 0 144-64.5 144-144 0-24.3-6-47.3-16.7-67.4zM240.7 211.4c4.6 8.7 16.3 9.7 23.3 2.7L438.1 40c7-7 6-18.7-2.7-23.3-20.1-10.7-43-16.7-67.4-16.7-79.5 0-144 64.5-144 144 0 24.3 6 47.3 16.7 67.4zM144 224C79.2 224 24.4 266.8 6.3 325.6 3.4 335.1 11 344 20.9 344l246.2 0c9.9 0 17.5-8.9 14.6-18.4-.9-3-1.9-5.9-3-8.7-37.4-18.1-68-48-87-84.8-14.9-5.2-30.9-8.1-47.6-8.1zM281.7 410.4c2.9-9.5-4.7-18.4-14.6-18.4L20.9 392C11 392 3.4 400.9 6.3 410.4 24.4 469.2 79.2 512 144 512s119.6-42.8 137.7-101.6z\"]\n  };\n  var faWeightHanging = {\n    prefix: 'fas',\n    iconName: 'weight-hanging',\n    icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32 0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32l-21.8 0c-28.3 0-53.2 18.5-61.3 45.6L2.4 440.2C.8 445.4 0 450.8 0 456.2 0 487 25 512 55.8 512l400.4 0c30.8 0 55.8-25 55.8-55.8 0-5.4-.8-10.8-2.4-16l-80-266.5c-8.1-27.1-33-45.6-61.3-45.6l-21.8 0z\"]\n  };\n  var faDice = {\n    prefix: 'fas',\n    iconName: 'dice',\n    icon: [512, 512, [127922], \"f522\", \"M141.4 2.3C103-8 63.5 14.8 53.3 53.2L2.5 242.7C-7.8 281.1 15 320.6 53.4 330.9l189.5 50.8c38.4 10.3 77.9-12.5 88.2-50.9l50.8-189.5c10.3-38.4-12.5-77.9-50.9-88.2L141.4 2.3zm23 205.7a32 32 0 1 1 55.4-32 32 32 0 1 1 -55.4 32zM79.2 220.3a32 32 0 1 1 32 55.4 32 32 0 1 1 -32-55.4zm185 96.4a32 32 0 1 1 -32-55.4 32 32 0 1 1 32 55.4zm9-208.4a32 32 0 1 1 32 55.4 32 32 0 1 1 -32-55.4zm-121 14.4a32 32 0 1 1 -32-55.4 32 32 0 1 1 32 55.4zM418 192L377.4 343.2c-17.2 64-83 102-147 84.9l-38.3-10.3 0 30.2c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64L418 192z\"]\n  };\n  var faShopSlash = {\n    prefix: 'fas',\n    iconName: 'shop-slash',\n    icon: [576, 512, [\"store-alt-slash\"], \"e070\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-57-57 0-190.3c26.8-1.9 48-24.3 48-51.6 0-8-1.9-16-5.5-23.2L497.7 67.4C486.8 45.7 464.7 32 440.4 32L135.6 32c-10.7 0-21 2.7-30.2 7.6L41-24.9zM321.8 256L448 256 448 382.2 321.8 256zM352 421.8l-64-64 0 10.2c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16l0-112 58.2 0-134.8-134.8-29.9 59.9c-3.6 7.2-5.5 15.1-5.5 23.2 0 27.3 21.2 49.7 48 51.6L64 432c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-10.2z\"]\n  };\n  var faStoreAltSlash = faShopSlash;\n  var faSortDown = {\n    prefix: 'fas',\n    iconName: 'sort-down',\n    icon: [384, 512, [\"sort-desc\"], \"f0dd\", \"M32 288c-12.9 0-24.6 7.8-29.6 19.8S.2 333.5 9.4 342.6l160 160c12.5 12.5 32.8 12.5 45.3 0l160-160c9.2-9.2 11.9-22.9 6.9-34.9S364.9 288 352 288L32 288z\"]\n  };\n  var faSortDesc = faSortDown;\n  var faPesetaSign = {\n    prefix: 'fas',\n    iconName: 'peseta-sign',\n    icon: [448, 512, [], \"e221\", \"M112 32C94.3 32 80 46.3 80 64l0 104-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 232c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c80.2 0 146.6-59 158.2-136l25.8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-25.8 0C386.6 91 320.2 32 240 32L112 32zM333 168l-189 0 0-72 96 0c44.7 0 82.3 30.6 93 72zM144 216l189 0c-10.7 41.4-48.2 72-93 72l-96 0 0-72z\"]\n  };\n  var faTabletScreenButton = {\n    prefix: 'fas',\n    iconName: 'tablet-screen-button',\n    icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM256 432a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64l-320 0 0 288 320 0 0-288z\"]\n  };\n  var faTabletAlt = faTabletScreenButton;\n  var faHandHoldingDollar = {\n    prefix: 'fas',\n    iconName: 'hand-holding-dollar',\n    icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M288-16c-13.3 0-24 10.7-24 24l0 12-1.8 0c-36.6 0-66.2 29.7-66.2 66.2 0 33.4 24.9 61.6 58 65.7l61 7.6c5.1 .6 9 5 9 10.2 0 5.7-4.6 10.2-10.2 10.2L240 180c-15.5 0-28 12.5-28 28s12.5 28 28 28l24 0 0 12c0 13.3 10.7 24 24 24s24-10.7 24-24l0-12 1.8 0c36.6 0 66.2-29.7 66.2-66.2 0-33.4-24.9-61.6-58-65.7l-61-7.6c-5.1-.6-9-5-9-10.2 0-5.7 4.6-10.2 10.2-10.2L328 76c15.5 0 28-12.5 28-28s-12.5-28-28-28l-16 0 0-12c0-13.3-10.7-24-24-24zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n  };\n  var faHandHoldingUsd = faHandHoldingDollar;\n  var faShield = {\n    prefix: 'fas',\n    iconName: 'shield',\n    icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z\"]\n  };\n  var faShieldBlank = faShield;\n  var faFaceLaugh = {\n    prefix: 'fas',\n    iconName: 'face-laugh',\n    icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26l265.4 0c14.2 0 25.4 12.3 21.7 26-18.5 68-80.6 118-154.4 118S120 382 101.6 314zM144 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n  };\n  var faLaugh = faFaceLaugh;\n  var faHandsHolding = {\n    prefix: 'fas',\n    iconName: 'hands-holding',\n    icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104L0 325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7l66.7 0c26.5 0 48-21.5 48-48l0-78.9c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0c-7.3-7.3-23.1-23.1-47.2-47.2-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c24.1 24.1 39.9 39.9 47.2 47.2 11 11 9.2 29.2-3.7 37.8-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3L80 104zm480 0l0 160.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1-12.9-8.6-14.7-26.9-3.7-37.8 7.3-7.3 23.1-23.1 47.2-47.2 12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-24.1 24.1-39.9 39.9-47.2 47.2l0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2l0 78.9c0 26.5 21.5 48 48 48l66.7 0c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9L640 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n  };\n  var faCartShopping = {\n    prefix: 'fas',\n    iconName: 'cart-shopping',\n    icon: [640, 512, [128722, \"shopping-cart\"], \"f07a\", \"M24-16C10.7-16 0-5.3 0 8S10.7 32 24 32l45.3 0c3.9 0 7.2 2.8 7.9 6.6l52.1 286.3c6.2 34.2 36 59.1 70.8 59.1L456 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-255.9 0c-11.6 0-21.5-8.3-23.6-19.7l-5.1-28.3 303.6 0c30.8 0 57.2-21.9 62.9-52.2L568.9 69.9C572.6 50.2 557.5 32 537.4 32l-412.7 0-.4-2c-4.8-26.6-28-46-55.1-46L24-16zM208 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm224 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n  };\n  var faShoppingCart = faCartShopping;\n  var faOctagon = {\n    prefix: 'fas',\n    iconName: 'octagon',\n    icon: [512, 512, [128721], \"f306\", \"M188.6 .1c-17 0-33.3 6.7-45.3 18.7L19.2 143C7.2 155 .5 171.2 .5 188.2l0 135.6c0 17 6.7 33.3 18.7 45.3L143.4 493.2c12 12 28.3 18.7 45.3 18.7l135.6 0c17 0 33.3-6.7 45.3-18.7L493.6 369c12-12 18.7-28.3 18.7-45.3l0-135.6c0-17-6.7-33.3-18.7-45.3L369.5 18.8c-12-12-28.3-18.7-45.3-18.7L188.6 .1z\"]\n  };\n  var faHandPointer = {\n    prefix: 'fas',\n    iconName: 'hand-pointer',\n    icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40l0 148.2c8.5-7.6 19.7-12.2 32-12.2 20.6 0 38.2 13 45 31.2 8.8-9.3 21.2-15.2 35-15.2 25.3 0 46 19.5 47.9 44.3 8.5-7.7 19.8-12.3 32.1-12.3 26.5 0 48 21.5 48 48l0 112c0 70.7-57.3 128-128 128l-85.3 0c-5 0-9.9-.3-14.7-1-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7 0-322.7zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n  };\n  var faRegistered = {\n    prefix: 'fas',\n    iconName: 'registered',\n    icon: [512, 512, [174], \"f25d\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM200 144l80 0c39.8 0 72 32.2 72 72 0 28.9-17 53.8-41.6 65.3l30.2 50.3c6.8 11.4 3.1 26.1-8.2 32.9s-26.1 3.1-32.9-8.2l-41-68.3-34.4 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-176c0-13.3 10.7-24 24-24zm72 96l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0 0 48 48 0z\"]\n  };\n  var faHouseSignal = {\n    prefix: 'fas',\n    iconName: 'house-signal',\n    icon: [576, 512, [], \"e012\", \"M515.9 240l-19.9 0 0 144c0 35.3-28.7 64-64 64l-137 0c-24-91.7-93.5-165-183-194.3l0-13.7-19.9 0c-15.5 0-28.1-12.6-28.1-28.1 0-7.6 3.1-14.9 8.6-20.2L276.5-4.9C283.9-12 293.7-16 304-16s20.1 4 27.5 11.1L535.4 191.7c5.5 5.3 8.6 12.6 8.6 20.2 0 15.5-12.6 28.1-28.1 28.1zM280 192c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0zM24 288c128.1 0 232 103.9 232 232 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 408c0-13.3 10.7-24 24-24 75.1 0 136 60.9 136 136 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88-13.3 0-24-10.7-24-24z\"]\n  };\n  var faBangladeshiTakaSign = {\n    prefix: 'fas',\n    iconName: 'bangladeshi-taka-sign',\n    icon: [384, 512, [], \"e2e6\", \"M36 32.3C18.4 30.1 2.4 42.5 .3 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8l0 31.5-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 176c0 53 43 96 96 96l32 0c106 0 192-86 192-192l0-32c0-53-43-96-96-96l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0c17.7 0 32 14.3 32 32l0 32c0 70.7-57.3 128-128 128l-32 0c-17.7 0-32-14.3-32-32l0-176 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-31.5C128 80.1 92 39.2 43.9 33.2l-7.9-1z\"]\n  };\n\n  exports.fa0 = fa0;\n  exports.fa1 = fa1;\n  exports.fa2 = fa2;\n  exports.fa3 = fa3;\n  exports.fa4 = fa4;\n  exports.fa5 = fa5;\n  exports.fa6 = fa6;\n  exports.fa7 = fa7;\n  exports.fa8 = fa8;\n  exports.fa9 = fa9;\n  exports.faA = faA;\n  exports.faAd = faAd;\n  exports.faAdd = faAdd;\n  exports.faAddressBook = faAddressBook;\n  exports.faAddressCard = faAddressCard;\n  exports.faAdjust = faAdjust;\n  exports.faAirFreshener = faAirFreshener;\n  exports.faAlarmClock = faAlarmClock;\n  exports.faAlignCenter = faAlignCenter;\n  exports.faAlignJustify = faAlignJustify;\n  exports.faAlignLeft = faAlignLeft;\n  exports.faAlignRight = faAlignRight;\n  exports.faAllergies = faAllergies;\n  exports.faAmbulance = faAmbulance;\n  exports.faAmericanSignLanguageInterpreting = faAmericanSignLanguageInterpreting;\n  exports.faAnchor = faAnchor;\n  exports.faAnchorCircleCheck = faAnchorCircleCheck;\n  exports.faAnchorCircleExclamation = faAnchorCircleExclamation;\n  exports.faAnchorCircleXmark = faAnchorCircleXmark;\n  exports.faAnchorLock = faAnchorLock;\n  exports.faAngleDoubleDown = faAngleDoubleDown;\n  exports.faAngleDoubleLeft = faAngleDoubleLeft;\n  exports.faAngleDoubleRight = faAngleDoubleRight;\n  exports.faAngleDoubleUp = faAngleDoubleUp;\n  exports.faAngleDown = faAngleDown;\n  exports.faAngleLeft = faAngleLeft;\n  exports.faAngleRight = faAngleRight;\n  exports.faAngleUp = faAngleUp;\n  exports.faAnglesDown = faAnglesDown;\n  exports.faAnglesLeft = faAnglesLeft;\n  exports.faAnglesRight = faAnglesRight;\n  exports.faAnglesUp = faAnglesUp;\n  exports.faAngry = faAngry;\n  exports.faAnkh = faAnkh;\n  exports.faAppleAlt = faAppleAlt;\n  exports.faAppleWhole = faAppleWhole;\n  exports.faArchive = faArchive;\n  exports.faArchway = faArchway;\n  exports.faAreaChart = faAreaChart;\n  exports.faArrowAltCircleDown = faArrowAltCircleDown;\n  exports.faArrowAltCircleLeft = faArrowAltCircleLeft;\n  exports.faArrowAltCircleRight = faArrowAltCircleRight;\n  exports.faArrowAltCircleUp = faArrowAltCircleUp;\n  exports.faArrowCircleDown = faArrowCircleDown;\n  exports.faArrowCircleLeft = faArrowCircleLeft;\n  exports.faArrowCircleRight = faArrowCircleRight;\n  exports.faArrowCircleUp = faArrowCircleUp;\n  exports.faArrowDown = faArrowDown;\n  exports.faArrowDown19 = faArrowDown19;\n  exports.faArrowDown91 = faArrowDown91;\n  exports.faArrowDownAZ = faArrowDownAZ;\n  exports.faArrowDownLong = faArrowDownLong;\n  exports.faArrowDownShortWide = faArrowDownShortWide;\n  exports.faArrowDownUpAcrossLine = faArrowDownUpAcrossLine;\n  exports.faArrowDownUpLock = faArrowDownUpLock;\n  exports.faArrowDownWideShort = faArrowDownWideShort;\n  exports.faArrowDownZA = faArrowDownZA;\n  exports.faArrowLeft = faArrowLeft;\n  exports.faArrowLeftLong = faArrowLeftLong;\n  exports.faArrowLeftRotate = faArrowLeftRotate;\n  exports.faArrowPointer = faArrowPointer;\n  exports.faArrowRight = faArrowRight;\n  exports.faArrowRightArrowLeft = faArrowRightArrowLeft;\n  exports.faArrowRightFromBracket = faArrowRightFromBracket;\n  exports.faArrowRightFromFile = faArrowRightFromFile;\n  exports.faArrowRightLong = faArrowRightLong;\n  exports.faArrowRightRotate = faArrowRightRotate;\n  exports.faArrowRightToBracket = faArrowRightToBracket;\n  exports.faArrowRightToCity = faArrowRightToCity;\n  exports.faArrowRightToFile = faArrowRightToFile;\n  exports.faArrowRotateBack = faArrowRotateBack;\n  exports.faArrowRotateBackward = faArrowRotateBackward;\n  exports.faArrowRotateForward = faArrowRotateForward;\n  exports.faArrowRotateLeft = faArrowRotateLeft;\n  exports.faArrowRotateRight = faArrowRotateRight;\n  exports.faArrowTrendDown = faArrowTrendDown;\n  exports.faArrowTrendUp = faArrowTrendUp;\n  exports.faArrowTurnDown = faArrowTurnDown;\n  exports.faArrowTurnUp = faArrowTurnUp;\n  exports.faArrowUp = faArrowUp;\n  exports.faArrowUp19 = faArrowUp19;\n  exports.faArrowUp91 = faArrowUp91;\n  exports.faArrowUpAZ = faArrowUpAZ;\n  exports.faArrowUpFromBracket = faArrowUpFromBracket;\n  exports.faArrowUpFromGroundWater = faArrowUpFromGroundWater;\n  exports.faArrowUpFromWaterPump = faArrowUpFromWaterPump;\n  exports.faArrowUpLong = faArrowUpLong;\n  exports.faArrowUpRightDots = faArrowUpRightDots;\n  exports.faArrowUpRightFromSquare = faArrowUpRightFromSquare;\n  exports.faArrowUpShortWide = faArrowUpShortWide;\n  exports.faArrowUpWideShort = faArrowUpWideShort;\n  exports.faArrowUpZA = faArrowUpZA;\n  exports.faArrows = faArrows;\n  exports.faArrowsAlt = faArrowsAlt;\n  exports.faArrowsAltH = faArrowsAltH;\n  exports.faArrowsAltV = faArrowsAltV;\n  exports.faArrowsDownToLine = faArrowsDownToLine;\n  exports.faArrowsDownToPeople = faArrowsDownToPeople;\n  exports.faArrowsH = faArrowsH;\n  exports.faArrowsLeftRight = faArrowsLeftRight;\n  exports.faArrowsLeftRightToLine = faArrowsLeftRightToLine;\n  exports.faArrowsRotate = faArrowsRotate;\n  exports.faArrowsSpin = faArrowsSpin;\n  exports.faArrowsSplitUpAndLeft = faArrowsSplitUpAndLeft;\n  exports.faArrowsToCircle = faArrowsToCircle;\n  exports.faArrowsToDot = faArrowsToDot;\n  exports.faArrowsToEye = faArrowsToEye;\n  exports.faArrowsTurnRight = faArrowsTurnRight;\n  exports.faArrowsTurnToDots = faArrowsTurnToDots;\n  exports.faArrowsUpDown = faArrowsUpDown;\n  exports.faArrowsUpDownLeftRight = faArrowsUpDownLeftRight;\n  exports.faArrowsUpToLine = faArrowsUpToLine;\n  exports.faArrowsV = faArrowsV;\n  exports.faAslInterpreting = faAslInterpreting;\n  exports.faAssistiveListeningSystems = faAssistiveListeningSystems;\n  exports.faAsterisk = faAsterisk;\n  exports.faAt = faAt;\n  exports.faAtlas = faAtlas;\n  exports.faAtom = faAtom;\n  exports.faAudioDescription = faAudioDescription;\n  exports.faAustralSign = faAustralSign;\n  exports.faAutomobile = faAutomobile;\n  exports.faAward = faAward;\n  exports.faB = faB;\n  exports.faBaby = faBaby;\n  exports.faBabyCarriage = faBabyCarriage;\n  exports.faBackspace = faBackspace;\n  exports.faBackward = faBackward;\n  exports.faBackwardFast = faBackwardFast;\n  exports.faBackwardStep = faBackwardStep;\n  exports.faBacon = faBacon;\n  exports.faBacteria = faBacteria;\n  exports.faBacterium = faBacterium;\n  exports.faBagShopping = faBagShopping;\n  exports.faBahai = faBahai;\n  exports.faBahtSign = faBahtSign;\n  exports.faBalanceScale = faBalanceScale;\n  exports.faBalanceScaleLeft = faBalanceScaleLeft;\n  exports.faBalanceScaleRight = faBalanceScaleRight;\n  exports.faBan = faBan;\n  exports.faBanSmoking = faBanSmoking;\n  exports.faBandAid = faBandAid;\n  exports.faBandage = faBandage;\n  exports.faBangladeshiTakaSign = faBangladeshiTakaSign;\n  exports.faBank = faBank;\n  exports.faBarChart = faBarChart;\n  exports.faBarcode = faBarcode;\n  exports.faBars = faBars;\n  exports.faBarsProgress = faBarsProgress;\n  exports.faBarsStaggered = faBarsStaggered;\n  exports.faBaseball = faBaseball;\n  exports.faBaseballBall = faBaseballBall;\n  exports.faBaseballBatBall = faBaseballBatBall;\n  exports.faBasketShopping = faBasketShopping;\n  exports.faBasketball = faBasketball;\n  exports.faBasketballBall = faBasketballBall;\n  exports.faBath = faBath;\n  exports.faBathtub = faBathtub;\n  exports.faBattery = faBattery;\n  exports.faBattery0 = faBattery0;\n  exports.faBattery2 = faBattery2;\n  exports.faBattery3 = faBattery3;\n  exports.faBattery4 = faBattery4;\n  exports.faBattery5 = faBattery5;\n  exports.faBatteryCar = faBatteryCar;\n  exports.faBatteryEmpty = faBatteryEmpty;\n  exports.faBatteryFull = faBatteryFull;\n  exports.faBatteryHalf = faBatteryHalf;\n  exports.faBatteryQuarter = faBatteryQuarter;\n  exports.faBatteryThreeQuarters = faBatteryThreeQuarters;\n  exports.faBed = faBed;\n  exports.faBedPulse = faBedPulse;\n  exports.faBeer = faBeer;\n  exports.faBeerMugEmpty = faBeerMugEmpty;\n  exports.faBell = faBell;\n  exports.faBellConcierge = faBellConcierge;\n  exports.faBellSlash = faBellSlash;\n  exports.faBezierCurve = faBezierCurve;\n  exports.faBible = faBible;\n  exports.faBicycle = faBicycle;\n  exports.faBiking = faBiking;\n  exports.faBinoculars = faBinoculars;\n  exports.faBiohazard = faBiohazard;\n  exports.faBirthdayCake = faBirthdayCake;\n  exports.faBitcoinSign = faBitcoinSign;\n  exports.faBlackboard = faBlackboard;\n  exports.faBlender = faBlender;\n  exports.faBlenderPhone = faBlenderPhone;\n  exports.faBlind = faBlind;\n  exports.faBlog = faBlog;\n  exports.faBold = faBold;\n  exports.faBolt = faBolt;\n  exports.faBoltLightning = faBoltLightning;\n  exports.faBomb = faBomb;\n  exports.faBone = faBone;\n  exports.faBong = faBong;\n  exports.faBook = faBook;\n  exports.faBookAtlas = faBookAtlas;\n  exports.faBookBible = faBookBible;\n  exports.faBookBookmark = faBookBookmark;\n  exports.faBookDead = faBookDead;\n  exports.faBookJournalWhills = faBookJournalWhills;\n  exports.faBookMedical = faBookMedical;\n  exports.faBookOpen = faBookOpen;\n  exports.faBookOpenReader = faBookOpenReader;\n  exports.faBookQuran = faBookQuran;\n  exports.faBookReader = faBookReader;\n  exports.faBookSkull = faBookSkull;\n  exports.faBookTanakh = faBookTanakh;\n  exports.faBookmark = faBookmark;\n  exports.faBorderAll = faBorderAll;\n  exports.faBorderNone = faBorderNone;\n  exports.faBorderStyle = faBorderStyle;\n  exports.faBorderTopLeft = faBorderTopLeft;\n  exports.faBoreHole = faBoreHole;\n  exports.faBottleDroplet = faBottleDroplet;\n  exports.faBottleWater = faBottleWater;\n  exports.faBowlFood = faBowlFood;\n  exports.faBowlRice = faBowlRice;\n  exports.faBowlingBall = faBowlingBall;\n  exports.faBox = faBox;\n  exports.faBoxArchive = faBoxArchive;\n  exports.faBoxOpen = faBoxOpen;\n  exports.faBoxTissue = faBoxTissue;\n  exports.faBoxes = faBoxes;\n  exports.faBoxesAlt = faBoxesAlt;\n  exports.faBoxesPacking = faBoxesPacking;\n  exports.faBoxesStacked = faBoxesStacked;\n  exports.faBraille = faBraille;\n  exports.faBrain = faBrain;\n  exports.faBrazilianRealSign = faBrazilianRealSign;\n  exports.faBreadSlice = faBreadSlice;\n  exports.faBridge = faBridge;\n  exports.faBridgeCircleCheck = faBridgeCircleCheck;\n  exports.faBridgeCircleExclamation = faBridgeCircleExclamation;\n  exports.faBridgeCircleXmark = faBridgeCircleXmark;\n  exports.faBridgeLock = faBridgeLock;\n  exports.faBridgeWater = faBridgeWater;\n  exports.faBriefcase = faBriefcase;\n  exports.faBriefcaseClock = faBriefcaseClock;\n  exports.faBriefcaseMedical = faBriefcaseMedical;\n  exports.faBroadcastTower = faBroadcastTower;\n  exports.faBroom = faBroom;\n  exports.faBroomBall = faBroomBall;\n  exports.faBrush = faBrush;\n  exports.faBucket = faBucket;\n  exports.faBug = faBug;\n  exports.faBugSlash = faBugSlash;\n  exports.faBugs = faBugs;\n  exports.faBuilding = faBuilding;\n  exports.faBuildingCircleArrowRight = faBuildingCircleArrowRight;\n  exports.faBuildingCircleCheck = faBuildingCircleCheck;\n  exports.faBuildingCircleExclamation = faBuildingCircleExclamation;\n  exports.faBuildingCircleXmark = faBuildingCircleXmark;\n  exports.faBuildingColumns = faBuildingColumns;\n  exports.faBuildingFlag = faBuildingFlag;\n  exports.faBuildingLock = faBuildingLock;\n  exports.faBuildingNgo = faBuildingNgo;\n  exports.faBuildingShield = faBuildingShield;\n  exports.faBuildingUn = faBuildingUn;\n  exports.faBuildingUser = faBuildingUser;\n  exports.faBuildingWheat = faBuildingWheat;\n  exports.faBullhorn = faBullhorn;\n  exports.faBullseye = faBullseye;\n  exports.faBurger = faBurger;\n  exports.faBurn = faBurn;\n  exports.faBurst = faBurst;\n  exports.faBus = faBus;\n  exports.faBusAlt = faBusAlt;\n  exports.faBusSide = faBusSide;\n  exports.faBusSimple = faBusSimple;\n  exports.faBusinessTime = faBusinessTime;\n  exports.faC = faC;\n  exports.faCab = faCab;\n  exports.faCableCar = faCableCar;\n  exports.faCake = faCake;\n  exports.faCakeCandles = faCakeCandles;\n  exports.faCalculator = faCalculator;\n  exports.faCalendar = faCalendar;\n  exports.faCalendarAlt = faCalendarAlt;\n  exports.faCalendarCheck = faCalendarCheck;\n  exports.faCalendarDay = faCalendarDay;\n  exports.faCalendarDays = faCalendarDays;\n  exports.faCalendarMinus = faCalendarMinus;\n  exports.faCalendarPlus = faCalendarPlus;\n  exports.faCalendarTimes = faCalendarTimes;\n  exports.faCalendarWeek = faCalendarWeek;\n  exports.faCalendarXmark = faCalendarXmark;\n  exports.faCamera = faCamera;\n  exports.faCameraAlt = faCameraAlt;\n  exports.faCameraRetro = faCameraRetro;\n  exports.faCameraRotate = faCameraRotate;\n  exports.faCampground = faCampground;\n  exports.faCancel = faCancel;\n  exports.faCandyCane = faCandyCane;\n  exports.faCannabis = faCannabis;\n  exports.faCapsules = faCapsules;\n  exports.faCar = faCar;\n  exports.faCarAlt = faCarAlt;\n  exports.faCarBattery = faCarBattery;\n  exports.faCarBurst = faCarBurst;\n  exports.faCarCrash = faCarCrash;\n  exports.faCarOn = faCarOn;\n  exports.faCarRear = faCarRear;\n  exports.faCarSide = faCarSide;\n  exports.faCarTunnel = faCarTunnel;\n  exports.faCaravan = faCaravan;\n  exports.faCaretDown = faCaretDown;\n  exports.faCaretLeft = faCaretLeft;\n  exports.faCaretRight = faCaretRight;\n  exports.faCaretSquareDown = faCaretSquareDown;\n  exports.faCaretSquareLeft = faCaretSquareLeft;\n  exports.faCaretSquareRight = faCaretSquareRight;\n  exports.faCaretSquareUp = faCaretSquareUp;\n  exports.faCaretUp = faCaretUp;\n  exports.faCarriageBaby = faCarriageBaby;\n  exports.faCarrot = faCarrot;\n  exports.faCartArrowDown = faCartArrowDown;\n  exports.faCartFlatbed = faCartFlatbed;\n  exports.faCartFlatbedSuitcase = faCartFlatbedSuitcase;\n  exports.faCartPlus = faCartPlus;\n  exports.faCartShopping = faCartShopping;\n  exports.faCashRegister = faCashRegister;\n  exports.faCat = faCat;\n  exports.faCediSign = faCediSign;\n  exports.faCentSign = faCentSign;\n  exports.faCertificate = faCertificate;\n  exports.faChain = faChain;\n  exports.faChainBroken = faChainBroken;\n  exports.faChainSlash = faChainSlash;\n  exports.faChair = faChair;\n  exports.faChalkboard = faChalkboard;\n  exports.faChalkboardTeacher = faChalkboardTeacher;\n  exports.faChalkboardUser = faChalkboardUser;\n  exports.faChampagneGlasses = faChampagneGlasses;\n  exports.faChargingStation = faChargingStation;\n  exports.faChartArea = faChartArea;\n  exports.faChartBar = faChartBar;\n  exports.faChartColumn = faChartColumn;\n  exports.faChartDiagram = faChartDiagram;\n  exports.faChartGantt = faChartGantt;\n  exports.faChartLine = faChartLine;\n  exports.faChartPie = faChartPie;\n  exports.faChartSimple = faChartSimple;\n  exports.faCheck = faCheck;\n  exports.faCheckCircle = faCheckCircle;\n  exports.faCheckDouble = faCheckDouble;\n  exports.faCheckSquare = faCheckSquare;\n  exports.faCheckToSlot = faCheckToSlot;\n  exports.faCheese = faCheese;\n  exports.faChess = faChess;\n  exports.faChessBishop = faChessBishop;\n  exports.faChessBoard = faChessBoard;\n  exports.faChessKing = faChessKing;\n  exports.faChessKnight = faChessKnight;\n  exports.faChessPawn = faChessPawn;\n  exports.faChessQueen = faChessQueen;\n  exports.faChessRook = faChessRook;\n  exports.faChevronCircleDown = faChevronCircleDown;\n  exports.faChevronCircleLeft = faChevronCircleLeft;\n  exports.faChevronCircleRight = faChevronCircleRight;\n  exports.faChevronCircleUp = faChevronCircleUp;\n  exports.faChevronDown = faChevronDown;\n  exports.faChevronLeft = faChevronLeft;\n  exports.faChevronRight = faChevronRight;\n  exports.faChevronUp = faChevronUp;\n  exports.faChild = faChild;\n  exports.faChildCombatant = faChildCombatant;\n  exports.faChildDress = faChildDress;\n  exports.faChildReaching = faChildReaching;\n  exports.faChildRifle = faChildRifle;\n  exports.faChildren = faChildren;\n  exports.faChurch = faChurch;\n  exports.faCircle = faCircle;\n  exports.faCircleArrowDown = faCircleArrowDown;\n  exports.faCircleArrowLeft = faCircleArrowLeft;\n  exports.faCircleArrowRight = faCircleArrowRight;\n  exports.faCircleArrowUp = faCircleArrowUp;\n  exports.faCircleCheck = faCircleCheck;\n  exports.faCircleChevronDown = faCircleChevronDown;\n  exports.faCircleChevronLeft = faCircleChevronLeft;\n  exports.faCircleChevronRight = faCircleChevronRight;\n  exports.faCircleChevronUp = faCircleChevronUp;\n  exports.faCircleDollarToSlot = faCircleDollarToSlot;\n  exports.faCircleDot = faCircleDot;\n  exports.faCircleDown = faCircleDown;\n  exports.faCircleExclamation = faCircleExclamation;\n  exports.faCircleH = faCircleH;\n  exports.faCircleHalfStroke = faCircleHalfStroke;\n  exports.faCircleInfo = faCircleInfo;\n  exports.faCircleLeft = faCircleLeft;\n  exports.faCircleMinus = faCircleMinus;\n  exports.faCircleNodes = faCircleNodes;\n  exports.faCircleNotch = faCircleNotch;\n  exports.faCirclePause = faCirclePause;\n  exports.faCirclePlay = faCirclePlay;\n  exports.faCirclePlus = faCirclePlus;\n  exports.faCircleQuestion = faCircleQuestion;\n  exports.faCircleRadiation = faCircleRadiation;\n  exports.faCircleRight = faCircleRight;\n  exports.faCircleStop = faCircleStop;\n  exports.faCircleUp = faCircleUp;\n  exports.faCircleUser = faCircleUser;\n  exports.faCircleXmark = faCircleXmark;\n  exports.faCity = faCity;\n  exports.faClapperboard = faClapperboard;\n  exports.faClinicMedical = faClinicMedical;\n  exports.faClipboard = faClipboard;\n  exports.faClipboardCheck = faClipboardCheck;\n  exports.faClipboardList = faClipboardList;\n  exports.faClipboardQuestion = faClipboardQuestion;\n  exports.faClipboardUser = faClipboardUser;\n  exports.faClock = faClock;\n  exports.faClockFour = faClockFour;\n  exports.faClockRotateLeft = faClockRotateLeft;\n  exports.faClone = faClone;\n  exports.faClose = faClose;\n  exports.faClosedCaptioning = faClosedCaptioning;\n  exports.faCloud = faCloud;\n  exports.faCloudArrowDown = faCloudArrowDown;\n  exports.faCloudArrowUp = faCloudArrowUp;\n  exports.faCloudBolt = faCloudBolt;\n  exports.faCloudDownload = faCloudDownload;\n  exports.faCloudDownloadAlt = faCloudDownloadAlt;\n  exports.faCloudMeatball = faCloudMeatball;\n  exports.faCloudMoon = faCloudMoon;\n  exports.faCloudMoonRain = faCloudMoonRain;\n  exports.faCloudRain = faCloudRain;\n  exports.faCloudShowersHeavy = faCloudShowersHeavy;\n  exports.faCloudShowersWater = faCloudShowersWater;\n  exports.faCloudSun = faCloudSun;\n  exports.faCloudSunRain = faCloudSunRain;\n  exports.faCloudUpload = faCloudUpload;\n  exports.faCloudUploadAlt = faCloudUploadAlt;\n  exports.faClover = faClover;\n  exports.faCny = faCny;\n  exports.faCocktail = faCocktail;\n  exports.faCode = faCode;\n  exports.faCodeBranch = faCodeBranch;\n  exports.faCodeCommit = faCodeCommit;\n  exports.faCodeCompare = faCodeCompare;\n  exports.faCodeFork = faCodeFork;\n  exports.faCodeMerge = faCodeMerge;\n  exports.faCodePullRequest = faCodePullRequest;\n  exports.faCoffee = faCoffee;\n  exports.faCog = faCog;\n  exports.faCogs = faCogs;\n  exports.faCoins = faCoins;\n  exports.faColonSign = faColonSign;\n  exports.faColumns = faColumns;\n  exports.faComment = faComment;\n  exports.faCommentAlt = faCommentAlt;\n  exports.faCommentDollar = faCommentDollar;\n  exports.faCommentDots = faCommentDots;\n  exports.faCommentMedical = faCommentMedical;\n  exports.faCommentNodes = faCommentNodes;\n  exports.faCommentSlash = faCommentSlash;\n  exports.faCommentSms = faCommentSms;\n  exports.faCommenting = faCommenting;\n  exports.faComments = faComments;\n  exports.faCommentsDollar = faCommentsDollar;\n  exports.faCompactDisc = faCompactDisc;\n  exports.faCompass = faCompass;\n  exports.faCompassDrafting = faCompassDrafting;\n  exports.faCompress = faCompress;\n  exports.faCompressAlt = faCompressAlt;\n  exports.faCompressArrowsAlt = faCompressArrowsAlt;\n  exports.faComputer = faComputer;\n  exports.faComputerMouse = faComputerMouse;\n  exports.faConciergeBell = faConciergeBell;\n  exports.faContactBook = faContactBook;\n  exports.faContactCard = faContactCard;\n  exports.faCookie = faCookie;\n  exports.faCookieBite = faCookieBite;\n  exports.faCopy = faCopy;\n  exports.faCopyright = faCopyright;\n  exports.faCouch = faCouch;\n  exports.faCow = faCow;\n  exports.faCreditCard = faCreditCard;\n  exports.faCreditCardAlt = faCreditCardAlt;\n  exports.faCrop = faCrop;\n  exports.faCropAlt = faCropAlt;\n  exports.faCropSimple = faCropSimple;\n  exports.faCross = faCross;\n  exports.faCrosshairs = faCrosshairs;\n  exports.faCrow = faCrow;\n  exports.faCrown = faCrown;\n  exports.faCrutch = faCrutch;\n  exports.faCruzeiroSign = faCruzeiroSign;\n  exports.faCube = faCube;\n  exports.faCubes = faCubes;\n  exports.faCubesStacked = faCubesStacked;\n  exports.faCut = faCut;\n  exports.faCutlery = faCutlery;\n  exports.faD = faD;\n  exports.faDashboard = faDashboard;\n  exports.faDatabase = faDatabase;\n  exports.faDeaf = faDeaf;\n  exports.faDeafness = faDeafness;\n  exports.faDedent = faDedent;\n  exports.faDeleteLeft = faDeleteLeft;\n  exports.faDemocrat = faDemocrat;\n  exports.faDesktop = faDesktop;\n  exports.faDesktopAlt = faDesktopAlt;\n  exports.faDharmachakra = faDharmachakra;\n  exports.faDiagnoses = faDiagnoses;\n  exports.faDiagramNext = faDiagramNext;\n  exports.faDiagramPredecessor = faDiagramPredecessor;\n  exports.faDiagramProject = faDiagramProject;\n  exports.faDiagramSuccessor = faDiagramSuccessor;\n  exports.faDiamond = faDiamond;\n  exports.faDiamondTurnRight = faDiamondTurnRight;\n  exports.faDice = faDice;\n  exports.faDiceD20 = faDiceD20;\n  exports.faDiceD6 = faDiceD6;\n  exports.faDiceFive = faDiceFive;\n  exports.faDiceFour = faDiceFour;\n  exports.faDiceOne = faDiceOne;\n  exports.faDiceSix = faDiceSix;\n  exports.faDiceThree = faDiceThree;\n  exports.faDiceTwo = faDiceTwo;\n  exports.faDigging = faDigging;\n  exports.faDigitalTachograph = faDigitalTachograph;\n  exports.faDirections = faDirections;\n  exports.faDisease = faDisease;\n  exports.faDisplay = faDisplay;\n  exports.faDivide = faDivide;\n  exports.faDizzy = faDizzy;\n  exports.faDna = faDna;\n  exports.faDog = faDog;\n  exports.faDollar = faDollar;\n  exports.faDollarSign = faDollarSign;\n  exports.faDolly = faDolly;\n  exports.faDollyBox = faDollyBox;\n  exports.faDollyFlatbed = faDollyFlatbed;\n  exports.faDonate = faDonate;\n  exports.faDongSign = faDongSign;\n  exports.faDoorClosed = faDoorClosed;\n  exports.faDoorOpen = faDoorOpen;\n  exports.faDotCircle = faDotCircle;\n  exports.faDove = faDove;\n  exports.faDownLeftAndUpRightToCenter = faDownLeftAndUpRightToCenter;\n  exports.faDownLong = faDownLong;\n  exports.faDownload = faDownload;\n  exports.faDraftingCompass = faDraftingCompass;\n  exports.faDragon = faDragon;\n  exports.faDrawPolygon = faDrawPolygon;\n  exports.faDriversLicense = faDriversLicense;\n  exports.faDroplet = faDroplet;\n  exports.faDropletSlash = faDropletSlash;\n  exports.faDrum = faDrum;\n  exports.faDrumSteelpan = faDrumSteelpan;\n  exports.faDrumstickBite = faDrumstickBite;\n  exports.faDumbbell = faDumbbell;\n  exports.faDumpster = faDumpster;\n  exports.faDumpsterFire = faDumpsterFire;\n  exports.faDungeon = faDungeon;\n  exports.faE = faE;\n  exports.faEarDeaf = faEarDeaf;\n  exports.faEarListen = faEarListen;\n  exports.faEarth = faEarth;\n  exports.faEarthAfrica = faEarthAfrica;\n  exports.faEarthAmerica = faEarthAmerica;\n  exports.faEarthAmericas = faEarthAmericas;\n  exports.faEarthAsia = faEarthAsia;\n  exports.faEarthEurope = faEarthEurope;\n  exports.faEarthOceania = faEarthOceania;\n  exports.faEdit = faEdit;\n  exports.faEgg = faEgg;\n  exports.faEject = faEject;\n  exports.faElevator = faElevator;\n  exports.faEllipsis = faEllipsis;\n  exports.faEllipsisH = faEllipsisH;\n  exports.faEllipsisV = faEllipsisV;\n  exports.faEllipsisVertical = faEllipsisVertical;\n  exports.faEnvelope = faEnvelope;\n  exports.faEnvelopeCircleCheck = faEnvelopeCircleCheck;\n  exports.faEnvelopeOpen = faEnvelopeOpen;\n  exports.faEnvelopeOpenText = faEnvelopeOpenText;\n  exports.faEnvelopeSquare = faEnvelopeSquare;\n  exports.faEnvelopesBulk = faEnvelopesBulk;\n  exports.faEquals = faEquals;\n  exports.faEraser = faEraser;\n  exports.faEthernet = faEthernet;\n  exports.faEur = faEur;\n  exports.faEuro = faEuro;\n  exports.faEuroSign = faEuroSign;\n  exports.faExchange = faExchange;\n  exports.faExchangeAlt = faExchangeAlt;\n  exports.faExclamation = faExclamation;\n  exports.faExclamationCircle = faExclamationCircle;\n  exports.faExclamationTriangle = faExclamationTriangle;\n  exports.faExpand = faExpand;\n  exports.faExpandAlt = faExpandAlt;\n  exports.faExpandArrowsAlt = faExpandArrowsAlt;\n  exports.faExplosion = faExplosion;\n  exports.faExternalLink = faExternalLink;\n  exports.faExternalLinkAlt = faExternalLinkAlt;\n  exports.faExternalLinkSquare = faExternalLinkSquare;\n  exports.faExternalLinkSquareAlt = faExternalLinkSquareAlt;\n  exports.faEye = faEye;\n  exports.faEyeDropper = faEyeDropper;\n  exports.faEyeDropperEmpty = faEyeDropperEmpty;\n  exports.faEyeLowVision = faEyeLowVision;\n  exports.faEyeSlash = faEyeSlash;\n  exports.faEyedropper = faEyedropper;\n  exports.faF = faF;\n  exports.faFaceAngry = faFaceAngry;\n  exports.faFaceDizzy = faFaceDizzy;\n  exports.faFaceFlushed = faFaceFlushed;\n  exports.faFaceFrown = faFaceFrown;\n  exports.faFaceFrownOpen = faFaceFrownOpen;\n  exports.faFaceGrimace = faFaceGrimace;\n  exports.faFaceGrin = faFaceGrin;\n  exports.faFaceGrinBeam = faFaceGrinBeam;\n  exports.faFaceGrinBeamSweat = faFaceGrinBeamSweat;\n  exports.faFaceGrinHearts = faFaceGrinHearts;\n  exports.faFaceGrinSquint = faFaceGrinSquint;\n  exports.faFaceGrinSquintTears = faFaceGrinSquintTears;\n  exports.faFaceGrinStars = faFaceGrinStars;\n  exports.faFaceGrinTears = faFaceGrinTears;\n  exports.faFaceGrinTongue = faFaceGrinTongue;\n  exports.faFaceGrinTongueSquint = faFaceGrinTongueSquint;\n  exports.faFaceGrinTongueWink = faFaceGrinTongueWink;\n  exports.faFaceGrinWide = faFaceGrinWide;\n  exports.faFaceGrinWink = faFaceGrinWink;\n  exports.faFaceKiss = faFaceKiss;\n  exports.faFaceKissBeam = faFaceKissBeam;\n  exports.faFaceKissWinkHeart = faFaceKissWinkHeart;\n  exports.faFaceLaugh = faFaceLaugh;\n  exports.faFaceLaughBeam = faFaceLaughBeam;\n  exports.faFaceLaughSquint = faFaceLaughSquint;\n  exports.faFaceLaughWink = faFaceLaughWink;\n  exports.faFaceMeh = faFaceMeh;\n  exports.faFaceMehBlank = faFaceMehBlank;\n  exports.faFaceRollingEyes = faFaceRollingEyes;\n  exports.faFaceSadCry = faFaceSadCry;\n  exports.faFaceSadTear = faFaceSadTear;\n  exports.faFaceSmile = faFaceSmile;\n  exports.faFaceSmileBeam = faFaceSmileBeam;\n  exports.faFaceSmileWink = faFaceSmileWink;\n  exports.faFaceSurprise = faFaceSurprise;\n  exports.faFaceTired = faFaceTired;\n  exports.faFan = faFan;\n  exports.faFastBackward = faFastBackward;\n  exports.faFastForward = faFastForward;\n  exports.faFaucet = faFaucet;\n  exports.faFaucetDrip = faFaucetDrip;\n  exports.faFax = faFax;\n  exports.faFeather = faFeather;\n  exports.faFeatherAlt = faFeatherAlt;\n  exports.faFeatherPointed = faFeatherPointed;\n  exports.faFeed = faFeed;\n  exports.faFemale = faFemale;\n  exports.faFerry = faFerry;\n  exports.faFighterJet = faFighterJet;\n  exports.faFile = faFile;\n  exports.faFileAlt = faFileAlt;\n  exports.faFileArchive = faFileArchive;\n  exports.faFileArrowDown = faFileArrowDown;\n  exports.faFileArrowUp = faFileArrowUp;\n  exports.faFileAudio = faFileAudio;\n  exports.faFileCircleCheck = faFileCircleCheck;\n  exports.faFileCircleExclamation = faFileCircleExclamation;\n  exports.faFileCircleMinus = faFileCircleMinus;\n  exports.faFileCirclePlus = faFileCirclePlus;\n  exports.faFileCircleQuestion = faFileCircleQuestion;\n  exports.faFileCircleXmark = faFileCircleXmark;\n  exports.faFileClipboard = faFileClipboard;\n  exports.faFileCode = faFileCode;\n  exports.faFileContract = faFileContract;\n  exports.faFileCsv = faFileCsv;\n  exports.faFileDownload = faFileDownload;\n  exports.faFileEdit = faFileEdit;\n  exports.faFileExcel = faFileExcel;\n  exports.faFileExport = faFileExport;\n  exports.faFileFragment = faFileFragment;\n  exports.faFileHalfDashed = faFileHalfDashed;\n  exports.faFileImage = faFileImage;\n  exports.faFileImport = faFileImport;\n  exports.faFileInvoice = faFileInvoice;\n  exports.faFileInvoiceDollar = faFileInvoiceDollar;\n  exports.faFileLines = faFileLines;\n  exports.faFileMedical = faFileMedical;\n  exports.faFileMedicalAlt = faFileMedicalAlt;\n  exports.faFilePdf = faFilePdf;\n  exports.faFilePen = faFilePen;\n  exports.faFilePowerpoint = faFilePowerpoint;\n  exports.faFilePrescription = faFilePrescription;\n  exports.faFileShield = faFileShield;\n  exports.faFileSignature = faFileSignature;\n  exports.faFileText = faFileText;\n  exports.faFileUpload = faFileUpload;\n  exports.faFileVideo = faFileVideo;\n  exports.faFileWaveform = faFileWaveform;\n  exports.faFileWord = faFileWord;\n  exports.faFileZipper = faFileZipper;\n  exports.faFill = faFill;\n  exports.faFillDrip = faFillDrip;\n  exports.faFilm = faFilm;\n  exports.faFilmAlt = faFilmAlt;\n  exports.faFilmSimple = faFilmSimple;\n  exports.faFilter = faFilter;\n  exports.faFilterCircleDollar = faFilterCircleDollar;\n  exports.faFilterCircleXmark = faFilterCircleXmark;\n  exports.faFingerprint = faFingerprint;\n  exports.faFire = faFire;\n  exports.faFireAlt = faFireAlt;\n  exports.faFireBurner = faFireBurner;\n  exports.faFireExtinguisher = faFireExtinguisher;\n  exports.faFireFlameCurved = faFireFlameCurved;\n  exports.faFireFlameSimple = faFireFlameSimple;\n  exports.faFirstAid = faFirstAid;\n  exports.faFish = faFish;\n  exports.faFishFins = faFishFins;\n  exports.faFistRaised = faFistRaised;\n  exports.faFlag = faFlag;\n  exports.faFlagCheckered = faFlagCheckered;\n  exports.faFlagUsa = faFlagUsa;\n  exports.faFlask = faFlask;\n  exports.faFlaskVial = faFlaskVial;\n  exports.faFloppyDisk = faFloppyDisk;\n  exports.faFlorinSign = faFlorinSign;\n  exports.faFlushed = faFlushed;\n  exports.faFolder = faFolder;\n  exports.faFolderBlank = faFolderBlank;\n  exports.faFolderClosed = faFolderClosed;\n  exports.faFolderMinus = faFolderMinus;\n  exports.faFolderOpen = faFolderOpen;\n  exports.faFolderPlus = faFolderPlus;\n  exports.faFolderTree = faFolderTree;\n  exports.faFont = faFont;\n  exports.faFontAwesome = faFontAwesome;\n  exports.faFontAwesomeFlag = faFontAwesomeFlag;\n  exports.faFontAwesomeLogoFull = faFontAwesomeLogoFull;\n  exports.faFootball = faFootball;\n  exports.faFootballBall = faFootballBall;\n  exports.faForward = faForward;\n  exports.faForwardFast = faForwardFast;\n  exports.faForwardStep = faForwardStep;\n  exports.faFrancSign = faFrancSign;\n  exports.faFrog = faFrog;\n  exports.faFrown = faFrown;\n  exports.faFrownOpen = faFrownOpen;\n  exports.faFunnelDollar = faFunnelDollar;\n  exports.faFutbol = faFutbol;\n  exports.faFutbolBall = faFutbolBall;\n  exports.faG = faG;\n  exports.faGamepad = faGamepad;\n  exports.faGasPump = faGasPump;\n  exports.faGauge = faGauge;\n  exports.faGaugeHigh = faGaugeHigh;\n  exports.faGaugeMed = faGaugeMed;\n  exports.faGaugeSimple = faGaugeSimple;\n  exports.faGaugeSimpleHigh = faGaugeSimpleHigh;\n  exports.faGaugeSimpleMed = faGaugeSimpleMed;\n  exports.faGavel = faGavel;\n  exports.faGbp = faGbp;\n  exports.faGear = faGear;\n  exports.faGears = faGears;\n  exports.faGem = faGem;\n  exports.faGenderless = faGenderless;\n  exports.faGhost = faGhost;\n  exports.faGift = faGift;\n  exports.faGifts = faGifts;\n  exports.faGlassCheers = faGlassCheers;\n  exports.faGlassMartini = faGlassMartini;\n  exports.faGlassMartiniAlt = faGlassMartiniAlt;\n  exports.faGlassWater = faGlassWater;\n  exports.faGlassWaterDroplet = faGlassWaterDroplet;\n  exports.faGlassWhiskey = faGlassWhiskey;\n  exports.faGlasses = faGlasses;\n  exports.faGlobe = faGlobe;\n  exports.faGlobeAfrica = faGlobeAfrica;\n  exports.faGlobeAmericas = faGlobeAmericas;\n  exports.faGlobeAsia = faGlobeAsia;\n  exports.faGlobeEurope = faGlobeEurope;\n  exports.faGlobeOceania = faGlobeOceania;\n  exports.faGolfBall = faGolfBall;\n  exports.faGolfBallTee = faGolfBallTee;\n  exports.faGopuram = faGopuram;\n  exports.faGraduationCap = faGraduationCap;\n  exports.faGreaterThan = faGreaterThan;\n  exports.faGreaterThanEqual = faGreaterThanEqual;\n  exports.faGridHorizontal = faGridHorizontal;\n  exports.faGridVertical = faGridVertical;\n  exports.faGrimace = faGrimace;\n  exports.faGrin = faGrin;\n  exports.faGrinAlt = faGrinAlt;\n  exports.faGrinBeam = faGrinBeam;\n  exports.faGrinBeamSweat = faGrinBeamSweat;\n  exports.faGrinHearts = faGrinHearts;\n  exports.faGrinSquint = faGrinSquint;\n  exports.faGrinSquintTears = faGrinSquintTears;\n  exports.faGrinStars = faGrinStars;\n  exports.faGrinTears = faGrinTears;\n  exports.faGrinTongue = faGrinTongue;\n  exports.faGrinTongueSquint = faGrinTongueSquint;\n  exports.faGrinTongueWink = faGrinTongueWink;\n  exports.faGrinWink = faGrinWink;\n  exports.faGrip = faGrip;\n  exports.faGripHorizontal = faGripHorizontal;\n  exports.faGripLines = faGripLines;\n  exports.faGripLinesVertical = faGripLinesVertical;\n  exports.faGripVertical = faGripVertical;\n  exports.faGroupArrowsRotate = faGroupArrowsRotate;\n  exports.faGuaraniSign = faGuaraniSign;\n  exports.faGuitar = faGuitar;\n  exports.faGun = faGun;\n  exports.faH = faH;\n  exports.faHSquare = faHSquare;\n  exports.faHamburger = faHamburger;\n  exports.faHammer = faHammer;\n  exports.faHamsa = faHamsa;\n  exports.faHand = faHand;\n  exports.faHandBackFist = faHandBackFist;\n  exports.faHandDots = faHandDots;\n  exports.faHandFist = faHandFist;\n  exports.faHandHolding = faHandHolding;\n  exports.faHandHoldingDollar = faHandHoldingDollar;\n  exports.faHandHoldingDroplet = faHandHoldingDroplet;\n  exports.faHandHoldingHand = faHandHoldingHand;\n  exports.faHandHoldingHeart = faHandHoldingHeart;\n  exports.faHandHoldingMedical = faHandHoldingMedical;\n  exports.faHandHoldingUsd = faHandHoldingUsd;\n  exports.faHandHoldingWater = faHandHoldingWater;\n  exports.faHandLizard = faHandLizard;\n  exports.faHandMiddleFinger = faHandMiddleFinger;\n  exports.faHandPaper = faHandPaper;\n  exports.faHandPeace = faHandPeace;\n  exports.faHandPointDown = faHandPointDown;\n  exports.faHandPointLeft = faHandPointLeft;\n  exports.faHandPointRight = faHandPointRight;\n  exports.faHandPointUp = faHandPointUp;\n  exports.faHandPointer = faHandPointer;\n  exports.faHandRock = faHandRock;\n  exports.faHandScissors = faHandScissors;\n  exports.faHandSparkles = faHandSparkles;\n  exports.faHandSpock = faHandSpock;\n  exports.faHandcuffs = faHandcuffs;\n  exports.faHands = faHands;\n  exports.faHandsAmericanSignLanguageInterpreting = faHandsAmericanSignLanguageInterpreting;\n  exports.faHandsAslInterpreting = faHandsAslInterpreting;\n  exports.faHandsBound = faHandsBound;\n  exports.faHandsBubbles = faHandsBubbles;\n  exports.faHandsClapping = faHandsClapping;\n  exports.faHandsHelping = faHandsHelping;\n  exports.faHandsHolding = faHandsHolding;\n  exports.faHandsHoldingChild = faHandsHoldingChild;\n  exports.faHandsHoldingCircle = faHandsHoldingCircle;\n  exports.faHandsPraying = faHandsPraying;\n  exports.faHandsWash = faHandsWash;\n  exports.faHandshake = faHandshake;\n  exports.faHandshakeAlt = faHandshakeAlt;\n  exports.faHandshakeAltSlash = faHandshakeAltSlash;\n  exports.faHandshakeAngle = faHandshakeAngle;\n  exports.faHandshakeSimple = faHandshakeSimple;\n  exports.faHandshakeSimpleSlash = faHandshakeSimpleSlash;\n  exports.faHandshakeSlash = faHandshakeSlash;\n  exports.faHanukiah = faHanukiah;\n  exports.faHardDrive = faHardDrive;\n  exports.faHardHat = faHardHat;\n  exports.faHardOfHearing = faHardOfHearing;\n  exports.faHashtag = faHashtag;\n  exports.faHatCowboy = faHatCowboy;\n  exports.faHatCowboySide = faHatCowboySide;\n  exports.faHatHard = faHatHard;\n  exports.faHatWizard = faHatWizard;\n  exports.faHaykal = faHaykal;\n  exports.faHdd = faHdd;\n  exports.faHeadSideCough = faHeadSideCough;\n  exports.faHeadSideCoughSlash = faHeadSideCoughSlash;\n  exports.faHeadSideMask = faHeadSideMask;\n  exports.faHeadSideVirus = faHeadSideVirus;\n  exports.faHeader = faHeader;\n  exports.faHeading = faHeading;\n  exports.faHeadphones = faHeadphones;\n  exports.faHeadphonesAlt = faHeadphonesAlt;\n  exports.faHeadphonesSimple = faHeadphonesSimple;\n  exports.faHeadset = faHeadset;\n  exports.faHeart = faHeart;\n  exports.faHeartBroken = faHeartBroken;\n  exports.faHeartCircleBolt = faHeartCircleBolt;\n  exports.faHeartCircleCheck = faHeartCircleCheck;\n  exports.faHeartCircleExclamation = faHeartCircleExclamation;\n  exports.faHeartCircleMinus = faHeartCircleMinus;\n  exports.faHeartCirclePlus = faHeartCirclePlus;\n  exports.faHeartCircleXmark = faHeartCircleXmark;\n  exports.faHeartCrack = faHeartCrack;\n  exports.faHeartMusicCameraBolt = faHeartMusicCameraBolt;\n  exports.faHeartPulse = faHeartPulse;\n  exports.faHeartbeat = faHeartbeat;\n  exports.faHelicopter = faHelicopter;\n  exports.faHelicopterSymbol = faHelicopterSymbol;\n  exports.faHelmetSafety = faHelmetSafety;\n  exports.faHelmetUn = faHelmetUn;\n  exports.faHeptagon = faHeptagon;\n  exports.faHexagon = faHexagon;\n  exports.faHexagonNodes = faHexagonNodes;\n  exports.faHexagonNodesBolt = faHexagonNodesBolt;\n  exports.faHighlighter = faHighlighter;\n  exports.faHiking = faHiking;\n  exports.faHillAvalanche = faHillAvalanche;\n  exports.faHillRockslide = faHillRockslide;\n  exports.faHippo = faHippo;\n  exports.faHistory = faHistory;\n  exports.faHockeyPuck = faHockeyPuck;\n  exports.faHollyBerry = faHollyBerry;\n  exports.faHome = faHome;\n  exports.faHomeAlt = faHomeAlt;\n  exports.faHomeLg = faHomeLg;\n  exports.faHomeLgAlt = faHomeLgAlt;\n  exports.faHomeUser = faHomeUser;\n  exports.faHorse = faHorse;\n  exports.faHorseHead = faHorseHead;\n  exports.faHospital = faHospital;\n  exports.faHospitalAlt = faHospitalAlt;\n  exports.faHospitalSymbol = faHospitalSymbol;\n  exports.faHospitalUser = faHospitalUser;\n  exports.faHospitalWide = faHospitalWide;\n  exports.faHotTub = faHotTub;\n  exports.faHotTubPerson = faHotTubPerson;\n  exports.faHotdog = faHotdog;\n  exports.faHotel = faHotel;\n  exports.faHourglass = faHourglass;\n  exports.faHourglass1 = faHourglass1;\n  exports.faHourglass2 = faHourglass2;\n  exports.faHourglass3 = faHourglass3;\n  exports.faHourglassEmpty = faHourglassEmpty;\n  exports.faHourglassEnd = faHourglassEnd;\n  exports.faHourglassHalf = faHourglassHalf;\n  exports.faHourglassStart = faHourglassStart;\n  exports.faHouse = faHouse;\n  exports.faHouseChimney = faHouseChimney;\n  exports.faHouseChimneyCrack = faHouseChimneyCrack;\n  exports.faHouseChimneyMedical = faHouseChimneyMedical;\n  exports.faHouseChimneyUser = faHouseChimneyUser;\n  exports.faHouseChimneyWindow = faHouseChimneyWindow;\n  exports.faHouseCircleCheck = faHouseCircleCheck;\n  exports.faHouseCircleExclamation = faHouseCircleExclamation;\n  exports.faHouseCircleXmark = faHouseCircleXmark;\n  exports.faHouseCrack = faHouseCrack;\n  exports.faHouseDamage = faHouseDamage;\n  exports.faHouseFire = faHouseFire;\n  exports.faHouseFlag = faHouseFlag;\n  exports.faHouseFloodWater = faHouseFloodWater;\n  exports.faHouseFloodWaterCircleArrowRight = faHouseFloodWaterCircleArrowRight;\n  exports.faHouseLaptop = faHouseLaptop;\n  exports.faHouseLock = faHouseLock;\n  exports.faHouseMedical = faHouseMedical;\n  exports.faHouseMedicalCircleCheck = faHouseMedicalCircleCheck;\n  exports.faHouseMedicalCircleExclamation = faHouseMedicalCircleExclamation;\n  exports.faHouseMedicalCircleXmark = faHouseMedicalCircleXmark;\n  exports.faHouseMedicalFlag = faHouseMedicalFlag;\n  exports.faHouseSignal = faHouseSignal;\n  exports.faHouseTsunami = faHouseTsunami;\n  exports.faHouseUser = faHouseUser;\n  exports.faHryvnia = faHryvnia;\n  exports.faHryvniaSign = faHryvniaSign;\n  exports.faHurricane = faHurricane;\n  exports.faI = faI;\n  exports.faICursor = faICursor;\n  exports.faIceCream = faIceCream;\n  exports.faIcicles = faIcicles;\n  exports.faIcons = faIcons;\n  exports.faIdBadge = faIdBadge;\n  exports.faIdCard = faIdCard;\n  exports.faIdCardAlt = faIdCardAlt;\n  exports.faIdCardClip = faIdCardClip;\n  exports.faIgloo = faIgloo;\n  exports.faIls = faIls;\n  exports.faImage = faImage;\n  exports.faImagePortrait = faImagePortrait;\n  exports.faImages = faImages;\n  exports.faInbox = faInbox;\n  exports.faIndent = faIndent;\n  exports.faIndianRupee = faIndianRupee;\n  exports.faIndianRupeeSign = faIndianRupeeSign;\n  exports.faIndustry = faIndustry;\n  exports.faInfinity = faInfinity;\n  exports.faInfo = faInfo;\n  exports.faInfoCircle = faInfoCircle;\n  exports.faInr = faInr;\n  exports.faInstitution = faInstitution;\n  exports.faItalic = faItalic;\n  exports.faJ = faJ;\n  exports.faJar = faJar;\n  exports.faJarWheat = faJarWheat;\n  exports.faJedi = faJedi;\n  exports.faJetFighter = faJetFighter;\n  exports.faJetFighterUp = faJetFighterUp;\n  exports.faJoint = faJoint;\n  exports.faJournalWhills = faJournalWhills;\n  exports.faJpy = faJpy;\n  exports.faJugDetergent = faJugDetergent;\n  exports.faK = faK;\n  exports.faKaaba = faKaaba;\n  exports.faKey = faKey;\n  exports.faKeyboard = faKeyboard;\n  exports.faKhanda = faKhanda;\n  exports.faKipSign = faKipSign;\n  exports.faKiss = faKiss;\n  exports.faKissBeam = faKissBeam;\n  exports.faKissWinkHeart = faKissWinkHeart;\n  exports.faKitMedical = faKitMedical;\n  exports.faKitchenSet = faKitchenSet;\n  exports.faKiwiBird = faKiwiBird;\n  exports.faKrw = faKrw;\n  exports.faL = faL;\n  exports.faLadderWater = faLadderWater;\n  exports.faLandMineOn = faLandMineOn;\n  exports.faLandmark = faLandmark;\n  exports.faLandmarkAlt = faLandmarkAlt;\n  exports.faLandmarkDome = faLandmarkDome;\n  exports.faLandmarkFlag = faLandmarkFlag;\n  exports.faLanguage = faLanguage;\n  exports.faLaptop = faLaptop;\n  exports.faLaptopCode = faLaptopCode;\n  exports.faLaptopFile = faLaptopFile;\n  exports.faLaptopHouse = faLaptopHouse;\n  exports.faLaptopMedical = faLaptopMedical;\n  exports.faLariSign = faLariSign;\n  exports.faLaugh = faLaugh;\n  exports.faLaughBeam = faLaughBeam;\n  exports.faLaughSquint = faLaughSquint;\n  exports.faLaughWink = faLaughWink;\n  exports.faLayerGroup = faLayerGroup;\n  exports.faLeaf = faLeaf;\n  exports.faLeftLong = faLeftLong;\n  exports.faLeftRight = faLeftRight;\n  exports.faLegal = faLegal;\n  exports.faLemon = faLemon;\n  exports.faLessThan = faLessThan;\n  exports.faLessThanEqual = faLessThanEqual;\n  exports.faLevelDown = faLevelDown;\n  exports.faLevelDownAlt = faLevelDownAlt;\n  exports.faLevelUp = faLevelUp;\n  exports.faLevelUpAlt = faLevelUpAlt;\n  exports.faLifeRing = faLifeRing;\n  exports.faLightbulb = faLightbulb;\n  exports.faLineChart = faLineChart;\n  exports.faLinesLeaning = faLinesLeaning;\n  exports.faLink = faLink;\n  exports.faLinkSlash = faLinkSlash;\n  exports.faLiraSign = faLiraSign;\n  exports.faList = faList;\n  exports.faList12 = faList12;\n  exports.faListAlt = faListAlt;\n  exports.faListCheck = faListCheck;\n  exports.faListDots = faListDots;\n  exports.faListNumeric = faListNumeric;\n  exports.faListOl = faListOl;\n  exports.faListSquares = faListSquares;\n  exports.faListUl = faListUl;\n  exports.faLitecoinSign = faLitecoinSign;\n  exports.faLocation = faLocation;\n  exports.faLocationArrow = faLocationArrow;\n  exports.faLocationCrosshairs = faLocationCrosshairs;\n  exports.faLocationDot = faLocationDot;\n  exports.faLocationPin = faLocationPin;\n  exports.faLocationPinLock = faLocationPinLock;\n  exports.faLock = faLock;\n  exports.faLockOpen = faLockOpen;\n  exports.faLocust = faLocust;\n  exports.faLongArrowAltDown = faLongArrowAltDown;\n  exports.faLongArrowAltLeft = faLongArrowAltLeft;\n  exports.faLongArrowAltRight = faLongArrowAltRight;\n  exports.faLongArrowAltUp = faLongArrowAltUp;\n  exports.faLongArrowDown = faLongArrowDown;\n  exports.faLongArrowLeft = faLongArrowLeft;\n  exports.faLongArrowRight = faLongArrowRight;\n  exports.faLongArrowUp = faLongArrowUp;\n  exports.faLowVision = faLowVision;\n  exports.faLuggageCart = faLuggageCart;\n  exports.faLungs = faLungs;\n  exports.faLungsVirus = faLungsVirus;\n  exports.faM = faM;\n  exports.faMagic = faMagic;\n  exports.faMagicWandSparkles = faMagicWandSparkles;\n  exports.faMagnet = faMagnet;\n  exports.faMagnifyingGlass = faMagnifyingGlass;\n  exports.faMagnifyingGlassArrowRight = faMagnifyingGlassArrowRight;\n  exports.faMagnifyingGlassChart = faMagnifyingGlassChart;\n  exports.faMagnifyingGlassDollar = faMagnifyingGlassDollar;\n  exports.faMagnifyingGlassLocation = faMagnifyingGlassLocation;\n  exports.faMagnifyingGlassMinus = faMagnifyingGlassMinus;\n  exports.faMagnifyingGlassPlus = faMagnifyingGlassPlus;\n  exports.faMailBulk = faMailBulk;\n  exports.faMailForward = faMailForward;\n  exports.faMailReply = faMailReply;\n  exports.faMailReplyAll = faMailReplyAll;\n  exports.faMale = faMale;\n  exports.faManatSign = faManatSign;\n  exports.faMap = faMap;\n  exports.faMapLocation = faMapLocation;\n  exports.faMapLocationDot = faMapLocationDot;\n  exports.faMapMarked = faMapMarked;\n  exports.faMapMarkedAlt = faMapMarkedAlt;\n  exports.faMapMarker = faMapMarker;\n  exports.faMapMarkerAlt = faMapMarkerAlt;\n  exports.faMapPin = faMapPin;\n  exports.faMapSigns = faMapSigns;\n  exports.faMarker = faMarker;\n  exports.faMars = faMars;\n  exports.faMarsAndVenus = faMarsAndVenus;\n  exports.faMarsAndVenusBurst = faMarsAndVenusBurst;\n  exports.faMarsDouble = faMarsDouble;\n  exports.faMarsStroke = faMarsStroke;\n  exports.faMarsStrokeH = faMarsStrokeH;\n  exports.faMarsStrokeRight = faMarsStrokeRight;\n  exports.faMarsStrokeUp = faMarsStrokeUp;\n  exports.faMarsStrokeV = faMarsStrokeV;\n  exports.faMartiniGlass = faMartiniGlass;\n  exports.faMartiniGlassCitrus = faMartiniGlassCitrus;\n  exports.faMartiniGlassEmpty = faMartiniGlassEmpty;\n  exports.faMask = faMask;\n  exports.faMaskFace = faMaskFace;\n  exports.faMaskVentilator = faMaskVentilator;\n  exports.faMasksTheater = faMasksTheater;\n  exports.faMattressPillow = faMattressPillow;\n  exports.faMaximize = faMaximize;\n  exports.faMedal = faMedal;\n  exports.faMedkit = faMedkit;\n  exports.faMeh = faMeh;\n  exports.faMehBlank = faMehBlank;\n  exports.faMehRollingEyes = faMehRollingEyes;\n  exports.faMemory = faMemory;\n  exports.faMenorah = faMenorah;\n  exports.faMercury = faMercury;\n  exports.faMessage = faMessage;\n  exports.faMeteor = faMeteor;\n  exports.faMicrochip = faMicrochip;\n  exports.faMicrophone = faMicrophone;\n  exports.faMicrophoneAlt = faMicrophoneAlt;\n  exports.faMicrophoneAltSlash = faMicrophoneAltSlash;\n  exports.faMicrophoneLines = faMicrophoneLines;\n  exports.faMicrophoneLinesSlash = faMicrophoneLinesSlash;\n  exports.faMicrophoneSlash = faMicrophoneSlash;\n  exports.faMicroscope = faMicroscope;\n  exports.faMillSign = faMillSign;\n  exports.faMinimize = faMinimize;\n  exports.faMinus = faMinus;\n  exports.faMinusCircle = faMinusCircle;\n  exports.faMinusSquare = faMinusSquare;\n  exports.faMitten = faMitten;\n  exports.faMobile = faMobile;\n  exports.faMobileAlt = faMobileAlt;\n  exports.faMobileAndroid = faMobileAndroid;\n  exports.faMobileAndroidAlt = faMobileAndroidAlt;\n  exports.faMobileButton = faMobileButton;\n  exports.faMobilePhone = faMobilePhone;\n  exports.faMobileRetro = faMobileRetro;\n  exports.faMobileScreen = faMobileScreen;\n  exports.faMobileScreenButton = faMobileScreenButton;\n  exports.faMobileVibrate = faMobileVibrate;\n  exports.faMoneyBill = faMoneyBill;\n  exports.faMoneyBill1 = faMoneyBill1;\n  exports.faMoneyBill1Wave = faMoneyBill1Wave;\n  exports.faMoneyBillAlt = faMoneyBillAlt;\n  exports.faMoneyBillTransfer = faMoneyBillTransfer;\n  exports.faMoneyBillTrendUp = faMoneyBillTrendUp;\n  exports.faMoneyBillWave = faMoneyBillWave;\n  exports.faMoneyBillWaveAlt = faMoneyBillWaveAlt;\n  exports.faMoneyBillWheat = faMoneyBillWheat;\n  exports.faMoneyBills = faMoneyBills;\n  exports.faMoneyCheck = faMoneyCheck;\n  exports.faMoneyCheckAlt = faMoneyCheckAlt;\n  exports.faMoneyCheckDollar = faMoneyCheckDollar;\n  exports.faMonument = faMonument;\n  exports.faMoon = faMoon;\n  exports.faMortarBoard = faMortarBoard;\n  exports.faMortarPestle = faMortarPestle;\n  exports.faMosque = faMosque;\n  exports.faMosquito = faMosquito;\n  exports.faMosquitoNet = faMosquitoNet;\n  exports.faMotorcycle = faMotorcycle;\n  exports.faMound = faMound;\n  exports.faMountain = faMountain;\n  exports.faMountainCity = faMountainCity;\n  exports.faMountainSun = faMountainSun;\n  exports.faMouse = faMouse;\n  exports.faMousePointer = faMousePointer;\n  exports.faMugHot = faMugHot;\n  exports.faMugSaucer = faMugSaucer;\n  exports.faMultiply = faMultiply;\n  exports.faMuseum = faMuseum;\n  exports.faMusic = faMusic;\n  exports.faN = faN;\n  exports.faNairaSign = faNairaSign;\n  exports.faNavicon = faNavicon;\n  exports.faNetworkWired = faNetworkWired;\n  exports.faNeuter = faNeuter;\n  exports.faNewspaper = faNewspaper;\n  exports.faNonBinary = faNonBinary;\n  exports.faNotEqual = faNotEqual;\n  exports.faNotdef = faNotdef;\n  exports.faNoteSticky = faNoteSticky;\n  exports.faNotesMedical = faNotesMedical;\n  exports.faO = faO;\n  exports.faObjectGroup = faObjectGroup;\n  exports.faObjectUngroup = faObjectUngroup;\n  exports.faOctagon = faOctagon;\n  exports.faOilCan = faOilCan;\n  exports.faOilWell = faOilWell;\n  exports.faOm = faOm;\n  exports.faOtter = faOtter;\n  exports.faOutdent = faOutdent;\n  exports.faP = faP;\n  exports.faPager = faPager;\n  exports.faPaintBrush = faPaintBrush;\n  exports.faPaintRoller = faPaintRoller;\n  exports.faPaintbrush = faPaintbrush;\n  exports.faPalette = faPalette;\n  exports.faPallet = faPallet;\n  exports.faPanorama = faPanorama;\n  exports.faPaperPlane = faPaperPlane;\n  exports.faPaperclip = faPaperclip;\n  exports.faParachuteBox = faParachuteBox;\n  exports.faParagraph = faParagraph;\n  exports.faParking = faParking;\n  exports.faPassport = faPassport;\n  exports.faPastafarianism = faPastafarianism;\n  exports.faPaste = faPaste;\n  exports.faPause = faPause;\n  exports.faPauseCircle = faPauseCircle;\n  exports.faPaw = faPaw;\n  exports.faPeace = faPeace;\n  exports.faPen = faPen;\n  exports.faPenAlt = faPenAlt;\n  exports.faPenClip = faPenClip;\n  exports.faPenFancy = faPenFancy;\n  exports.faPenNib = faPenNib;\n  exports.faPenRuler = faPenRuler;\n  exports.faPenSquare = faPenSquare;\n  exports.faPenToSquare = faPenToSquare;\n  exports.faPencil = faPencil;\n  exports.faPencilAlt = faPencilAlt;\n  exports.faPencilRuler = faPencilRuler;\n  exports.faPencilSquare = faPencilSquare;\n  exports.faPentagon = faPentagon;\n  exports.faPeopleArrows = faPeopleArrows;\n  exports.faPeopleArrowsLeftRight = faPeopleArrowsLeftRight;\n  exports.faPeopleCarry = faPeopleCarry;\n  exports.faPeopleCarryBox = faPeopleCarryBox;\n  exports.faPeopleGroup = faPeopleGroup;\n  exports.faPeopleLine = faPeopleLine;\n  exports.faPeoplePulling = faPeoplePulling;\n  exports.faPeopleRobbery = faPeopleRobbery;\n  exports.faPeopleRoof = faPeopleRoof;\n  exports.faPepperHot = faPepperHot;\n  exports.faPercent = faPercent;\n  exports.faPercentage = faPercentage;\n  exports.faPerson = faPerson;\n  exports.faPersonArrowDownToLine = faPersonArrowDownToLine;\n  exports.faPersonArrowUpFromLine = faPersonArrowUpFromLine;\n  exports.faPersonBiking = faPersonBiking;\n  exports.faPersonBooth = faPersonBooth;\n  exports.faPersonBreastfeeding = faPersonBreastfeeding;\n  exports.faPersonBurst = faPersonBurst;\n  exports.faPersonCane = faPersonCane;\n  exports.faPersonChalkboard = faPersonChalkboard;\n  exports.faPersonCircleCheck = faPersonCircleCheck;\n  exports.faPersonCircleExclamation = faPersonCircleExclamation;\n  exports.faPersonCircleMinus = faPersonCircleMinus;\n  exports.faPersonCirclePlus = faPersonCirclePlus;\n  exports.faPersonCircleQuestion = faPersonCircleQuestion;\n  exports.faPersonCircleXmark = faPersonCircleXmark;\n  exports.faPersonDigging = faPersonDigging;\n  exports.faPersonDotsFromLine = faPersonDotsFromLine;\n  exports.faPersonDress = faPersonDress;\n  exports.faPersonDressBurst = faPersonDressBurst;\n  exports.faPersonDrowning = faPersonDrowning;\n  exports.faPersonFalling = faPersonFalling;\n  exports.faPersonFallingBurst = faPersonFallingBurst;\n  exports.faPersonHalfDress = faPersonHalfDress;\n  exports.faPersonHarassing = faPersonHarassing;\n  exports.faPersonHiking = faPersonHiking;\n  exports.faPersonMilitaryPointing = faPersonMilitaryPointing;\n  exports.faPersonMilitaryRifle = faPersonMilitaryRifle;\n  exports.faPersonMilitaryToPerson = faPersonMilitaryToPerson;\n  exports.faPersonPraying = faPersonPraying;\n  exports.faPersonPregnant = faPersonPregnant;\n  exports.faPersonRays = faPersonRays;\n  exports.faPersonRifle = faPersonRifle;\n  exports.faPersonRunning = faPersonRunning;\n  exports.faPersonShelter = faPersonShelter;\n  exports.faPersonSkating = faPersonSkating;\n  exports.faPersonSkiing = faPersonSkiing;\n  exports.faPersonSkiingNordic = faPersonSkiingNordic;\n  exports.faPersonSnowboarding = faPersonSnowboarding;\n  exports.faPersonSwimming = faPersonSwimming;\n  exports.faPersonThroughWindow = faPersonThroughWindow;\n  exports.faPersonWalking = faPersonWalking;\n  exports.faPersonWalkingArrowLoopLeft = faPersonWalkingArrowLoopLeft;\n  exports.faPersonWalkingArrowRight = faPersonWalkingArrowRight;\n  exports.faPersonWalkingDashedLineArrowRight = faPersonWalkingDashedLineArrowRight;\n  exports.faPersonWalkingLuggage = faPersonWalkingLuggage;\n  exports.faPersonWalkingWithCane = faPersonWalkingWithCane;\n  exports.faPesetaSign = faPesetaSign;\n  exports.faPesoSign = faPesoSign;\n  exports.faPhone = faPhone;\n  exports.faPhoneAlt = faPhoneAlt;\n  exports.faPhoneFlip = faPhoneFlip;\n  exports.faPhoneSlash = faPhoneSlash;\n  exports.faPhoneSquare = faPhoneSquare;\n  exports.faPhoneSquareAlt = faPhoneSquareAlt;\n  exports.faPhoneVolume = faPhoneVolume;\n  exports.faPhotoFilm = faPhotoFilm;\n  exports.faPhotoVideo = faPhotoVideo;\n  exports.faPieChart = faPieChart;\n  exports.faPiggyBank = faPiggyBank;\n  exports.faPills = faPills;\n  exports.faPingPongPaddleBall = faPingPongPaddleBall;\n  exports.faPizzaSlice = faPizzaSlice;\n  exports.faPlaceOfWorship = faPlaceOfWorship;\n  exports.faPlane = faPlane;\n  exports.faPlaneArrival = faPlaneArrival;\n  exports.faPlaneCircleCheck = faPlaneCircleCheck;\n  exports.faPlaneCircleExclamation = faPlaneCircleExclamation;\n  exports.faPlaneCircleXmark = faPlaneCircleXmark;\n  exports.faPlaneDeparture = faPlaneDeparture;\n  exports.faPlaneLock = faPlaneLock;\n  exports.faPlaneSlash = faPlaneSlash;\n  exports.faPlaneUp = faPlaneUp;\n  exports.faPlantWilt = faPlantWilt;\n  exports.faPlateWheat = faPlateWheat;\n  exports.faPlay = faPlay;\n  exports.faPlayCircle = faPlayCircle;\n  exports.faPlug = faPlug;\n  exports.faPlugCircleBolt = faPlugCircleBolt;\n  exports.faPlugCircleCheck = faPlugCircleCheck;\n  exports.faPlugCircleExclamation = faPlugCircleExclamation;\n  exports.faPlugCircleMinus = faPlugCircleMinus;\n  exports.faPlugCirclePlus = faPlugCirclePlus;\n  exports.faPlugCircleXmark = faPlugCircleXmark;\n  exports.faPlus = faPlus;\n  exports.faPlusCircle = faPlusCircle;\n  exports.faPlusMinus = faPlusMinus;\n  exports.faPlusSquare = faPlusSquare;\n  exports.faPodcast = faPodcast;\n  exports.faPoll = faPoll;\n  exports.faPollH = faPollH;\n  exports.faPoo = faPoo;\n  exports.faPooBolt = faPooBolt;\n  exports.faPooStorm = faPooStorm;\n  exports.faPoop = faPoop;\n  exports.faPortrait = faPortrait;\n  exports.faPoundSign = faPoundSign;\n  exports.faPowerOff = faPowerOff;\n  exports.faPray = faPray;\n  exports.faPrayingHands = faPrayingHands;\n  exports.faPrescription = faPrescription;\n  exports.faPrescriptionBottle = faPrescriptionBottle;\n  exports.faPrescriptionBottleAlt = faPrescriptionBottleAlt;\n  exports.faPrescriptionBottleMedical = faPrescriptionBottleMedical;\n  exports.faPrint = faPrint;\n  exports.faProcedures = faProcedures;\n  exports.faProjectDiagram = faProjectDiagram;\n  exports.faPumpMedical = faPumpMedical;\n  exports.faPumpSoap = faPumpSoap;\n  exports.faPuzzlePiece = faPuzzlePiece;\n  exports.faQ = faQ;\n  exports.faQrcode = faQrcode;\n  exports.faQuestion = faQuestion;\n  exports.faQuestionCircle = faQuestionCircle;\n  exports.faQuidditch = faQuidditch;\n  exports.faQuidditchBroomBall = faQuidditchBroomBall;\n  exports.faQuoteLeft = faQuoteLeft;\n  exports.faQuoteLeftAlt = faQuoteLeftAlt;\n  exports.faQuoteRight = faQuoteRight;\n  exports.faQuoteRightAlt = faQuoteRightAlt;\n  exports.faQuran = faQuran;\n  exports.faR = faR;\n  exports.faRadiation = faRadiation;\n  exports.faRadiationAlt = faRadiationAlt;\n  exports.faRadio = faRadio;\n  exports.faRainbow = faRainbow;\n  exports.faRandom = faRandom;\n  exports.faRankingStar = faRankingStar;\n  exports.faReceipt = faReceipt;\n  exports.faRecordVinyl = faRecordVinyl;\n  exports.faRectangleAd = faRectangleAd;\n  exports.faRectangleList = faRectangleList;\n  exports.faRectangleTimes = faRectangleTimes;\n  exports.faRectangleXmark = faRectangleXmark;\n  exports.faRecycle = faRecycle;\n  exports.faRedo = faRedo;\n  exports.faRedoAlt = faRedoAlt;\n  exports.faRefresh = faRefresh;\n  exports.faRegistered = faRegistered;\n  exports.faRemove = faRemove;\n  exports.faRemoveFormat = faRemoveFormat;\n  exports.faReorder = faReorder;\n  exports.faRepeat = faRepeat;\n  exports.faReply = faReply;\n  exports.faReplyAll = faReplyAll;\n  exports.faRepublican = faRepublican;\n  exports.faRestroom = faRestroom;\n  exports.faRetweet = faRetweet;\n  exports.faRibbon = faRibbon;\n  exports.faRightFromBracket = faRightFromBracket;\n  exports.faRightLeft = faRightLeft;\n  exports.faRightLong = faRightLong;\n  exports.faRightToBracket = faRightToBracket;\n  exports.faRing = faRing;\n  exports.faRmb = faRmb;\n  exports.faRoad = faRoad;\n  exports.faRoadBarrier = faRoadBarrier;\n  exports.faRoadBridge = faRoadBridge;\n  exports.faRoadCircleCheck = faRoadCircleCheck;\n  exports.faRoadCircleExclamation = faRoadCircleExclamation;\n  exports.faRoadCircleXmark = faRoadCircleXmark;\n  exports.faRoadLock = faRoadLock;\n  exports.faRoadSpikes = faRoadSpikes;\n  exports.faRobot = faRobot;\n  exports.faRocket = faRocket;\n  exports.faRodAsclepius = faRodAsclepius;\n  exports.faRodSnake = faRodSnake;\n  exports.faRotate = faRotate;\n  exports.faRotateBack = faRotateBack;\n  exports.faRotateBackward = faRotateBackward;\n  exports.faRotateForward = faRotateForward;\n  exports.faRotateLeft = faRotateLeft;\n  exports.faRotateRight = faRotateRight;\n  exports.faRouble = faRouble;\n  exports.faRoute = faRoute;\n  exports.faRss = faRss;\n  exports.faRssSquare = faRssSquare;\n  exports.faRub = faRub;\n  exports.faRuble = faRuble;\n  exports.faRubleSign = faRubleSign;\n  exports.faRug = faRug;\n  exports.faRuler = faRuler;\n  exports.faRulerCombined = faRulerCombined;\n  exports.faRulerHorizontal = faRulerHorizontal;\n  exports.faRulerVertical = faRulerVertical;\n  exports.faRunning = faRunning;\n  exports.faRupee = faRupee;\n  exports.faRupeeSign = faRupeeSign;\n  exports.faRupiahSign = faRupiahSign;\n  exports.faS = faS;\n  exports.faSackDollar = faSackDollar;\n  exports.faSackXmark = faSackXmark;\n  exports.faSadCry = faSadCry;\n  exports.faSadTear = faSadTear;\n  exports.faSailboat = faSailboat;\n  exports.faSatellite = faSatellite;\n  exports.faSatelliteDish = faSatelliteDish;\n  exports.faSave = faSave;\n  exports.faScaleBalanced = faScaleBalanced;\n  exports.faScaleUnbalanced = faScaleUnbalanced;\n  exports.faScaleUnbalancedFlip = faScaleUnbalancedFlip;\n  exports.faSchool = faSchool;\n  exports.faSchoolCircleCheck = faSchoolCircleCheck;\n  exports.faSchoolCircleExclamation = faSchoolCircleExclamation;\n  exports.faSchoolCircleXmark = faSchoolCircleXmark;\n  exports.faSchoolFlag = faSchoolFlag;\n  exports.faSchoolLock = faSchoolLock;\n  exports.faScissors = faScissors;\n  exports.faScrewdriver = faScrewdriver;\n  exports.faScrewdriverWrench = faScrewdriverWrench;\n  exports.faScroll = faScroll;\n  exports.faScrollTorah = faScrollTorah;\n  exports.faSdCard = faSdCard;\n  exports.faSearch = faSearch;\n  exports.faSearchDollar = faSearchDollar;\n  exports.faSearchLocation = faSearchLocation;\n  exports.faSearchMinus = faSearchMinus;\n  exports.faSearchPlus = faSearchPlus;\n  exports.faSection = faSection;\n  exports.faSeedling = faSeedling;\n  exports.faSeptagon = faSeptagon;\n  exports.faServer = faServer;\n  exports.faShapes = faShapes;\n  exports.faShare = faShare;\n  exports.faShareAlt = faShareAlt;\n  exports.faShareAltSquare = faShareAltSquare;\n  exports.faShareFromSquare = faShareFromSquare;\n  exports.faShareNodes = faShareNodes;\n  exports.faShareSquare = faShareSquare;\n  exports.faSheetPlastic = faSheetPlastic;\n  exports.faShekel = faShekel;\n  exports.faShekelSign = faShekelSign;\n  exports.faSheqel = faSheqel;\n  exports.faSheqelSign = faSheqelSign;\n  exports.faShield = faShield;\n  exports.faShieldAlt = faShieldAlt;\n  exports.faShieldBlank = faShieldBlank;\n  exports.faShieldCat = faShieldCat;\n  exports.faShieldDog = faShieldDog;\n  exports.faShieldHalved = faShieldHalved;\n  exports.faShieldHeart = faShieldHeart;\n  exports.faShieldVirus = faShieldVirus;\n  exports.faShip = faShip;\n  exports.faShippingFast = faShippingFast;\n  exports.faShirt = faShirt;\n  exports.faShoePrints = faShoePrints;\n  exports.faShop = faShop;\n  exports.faShopLock = faShopLock;\n  exports.faShopSlash = faShopSlash;\n  exports.faShoppingBag = faShoppingBag;\n  exports.faShoppingBasket = faShoppingBasket;\n  exports.faShoppingCart = faShoppingCart;\n  exports.faShower = faShower;\n  exports.faShrimp = faShrimp;\n  exports.faShuffle = faShuffle;\n  exports.faShuttleSpace = faShuttleSpace;\n  exports.faShuttleVan = faShuttleVan;\n  exports.faSign = faSign;\n  exports.faSignHanging = faSignHanging;\n  exports.faSignIn = faSignIn;\n  exports.faSignInAlt = faSignInAlt;\n  exports.faSignLanguage = faSignLanguage;\n  exports.faSignOut = faSignOut;\n  exports.faSignOutAlt = faSignOutAlt;\n  exports.faSignal = faSignal;\n  exports.faSignal5 = faSignal5;\n  exports.faSignalPerfect = faSignalPerfect;\n  exports.faSignature = faSignature;\n  exports.faSigning = faSigning;\n  exports.faSignsPost = faSignsPost;\n  exports.faSimCard = faSimCard;\n  exports.faSingleQuoteLeft = faSingleQuoteLeft;\n  exports.faSingleQuoteRight = faSingleQuoteRight;\n  exports.faSink = faSink;\n  exports.faSitemap = faSitemap;\n  exports.faSkating = faSkating;\n  exports.faSkiing = faSkiing;\n  exports.faSkiingNordic = faSkiingNordic;\n  exports.faSkull = faSkull;\n  exports.faSkullCrossbones = faSkullCrossbones;\n  exports.faSlash = faSlash;\n  exports.faSleigh = faSleigh;\n  exports.faSliders = faSliders;\n  exports.faSlidersH = faSlidersH;\n  exports.faSmile = faSmile;\n  exports.faSmileBeam = faSmileBeam;\n  exports.faSmileWink = faSmileWink;\n  exports.faSmog = faSmog;\n  exports.faSmoking = faSmoking;\n  exports.faSmokingBan = faSmokingBan;\n  exports.faSms = faSms;\n  exports.faSnowboarding = faSnowboarding;\n  exports.faSnowflake = faSnowflake;\n  exports.faSnowman = faSnowman;\n  exports.faSnowplow = faSnowplow;\n  exports.faSoap = faSoap;\n  exports.faSoccerBall = faSoccerBall;\n  exports.faSocks = faSocks;\n  exports.faSolarPanel = faSolarPanel;\n  exports.faSort = faSort;\n  exports.faSortAlphaAsc = faSortAlphaAsc;\n  exports.faSortAlphaDesc = faSortAlphaDesc;\n  exports.faSortAlphaDown = faSortAlphaDown;\n  exports.faSortAlphaDownAlt = faSortAlphaDownAlt;\n  exports.faSortAlphaUp = faSortAlphaUp;\n  exports.faSortAlphaUpAlt = faSortAlphaUpAlt;\n  exports.faSortAmountAsc = faSortAmountAsc;\n  exports.faSortAmountDesc = faSortAmountDesc;\n  exports.faSortAmountDown = faSortAmountDown;\n  exports.faSortAmountDownAlt = faSortAmountDownAlt;\n  exports.faSortAmountUp = faSortAmountUp;\n  exports.faSortAmountUpAlt = faSortAmountUpAlt;\n  exports.faSortAsc = faSortAsc;\n  exports.faSortDesc = faSortDesc;\n  exports.faSortDown = faSortDown;\n  exports.faSortNumericAsc = faSortNumericAsc;\n  exports.faSortNumericDesc = faSortNumericDesc;\n  exports.faSortNumericDown = faSortNumericDown;\n  exports.faSortNumericDownAlt = faSortNumericDownAlt;\n  exports.faSortNumericUp = faSortNumericUp;\n  exports.faSortNumericUpAlt = faSortNumericUpAlt;\n  exports.faSortUp = faSortUp;\n  exports.faSpa = faSpa;\n  exports.faSpaceShuttle = faSpaceShuttle;\n  exports.faSpaghettiMonsterFlying = faSpaghettiMonsterFlying;\n  exports.faSpellCheck = faSpellCheck;\n  exports.faSpider = faSpider;\n  exports.faSpinner = faSpinner;\n  exports.faSpiral = faSpiral;\n  exports.faSplotch = faSplotch;\n  exports.faSpoon = faSpoon;\n  exports.faSprayCan = faSprayCan;\n  exports.faSprayCanSparkles = faSprayCanSparkles;\n  exports.faSprout = faSprout;\n  exports.faSquare = faSquare;\n  exports.faSquareArrowUpRight = faSquareArrowUpRight;\n  exports.faSquareBinary = faSquareBinary;\n  exports.faSquareCaretDown = faSquareCaretDown;\n  exports.faSquareCaretLeft = faSquareCaretLeft;\n  exports.faSquareCaretRight = faSquareCaretRight;\n  exports.faSquareCaretUp = faSquareCaretUp;\n  exports.faSquareCheck = faSquareCheck;\n  exports.faSquareEnvelope = faSquareEnvelope;\n  exports.faSquareFull = faSquareFull;\n  exports.faSquareH = faSquareH;\n  exports.faSquareMinus = faSquareMinus;\n  exports.faSquareNfi = faSquareNfi;\n  exports.faSquareParking = faSquareParking;\n  exports.faSquarePen = faSquarePen;\n  exports.faSquarePersonConfined = faSquarePersonConfined;\n  exports.faSquarePhone = faSquarePhone;\n  exports.faSquarePhoneFlip = faSquarePhoneFlip;\n  exports.faSquarePlus = faSquarePlus;\n  exports.faSquarePollHorizontal = faSquarePollHorizontal;\n  exports.faSquarePollVertical = faSquarePollVertical;\n  exports.faSquareRootAlt = faSquareRootAlt;\n  exports.faSquareRootVariable = faSquareRootVariable;\n  exports.faSquareRss = faSquareRss;\n  exports.faSquareShareNodes = faSquareShareNodes;\n  exports.faSquareUpRight = faSquareUpRight;\n  exports.faSquareVirus = faSquareVirus;\n  exports.faSquareXmark = faSquareXmark;\n  exports.faStaffAesculapius = faStaffAesculapius;\n  exports.faStaffSnake = faStaffSnake;\n  exports.faStairs = faStairs;\n  exports.faStamp = faStamp;\n  exports.faStapler = faStapler;\n  exports.faStar = faStar;\n  exports.faStarAndCrescent = faStarAndCrescent;\n  exports.faStarHalf = faStarHalf;\n  exports.faStarHalfAlt = faStarHalfAlt;\n  exports.faStarHalfStroke = faStarHalfStroke;\n  exports.faStarOfDavid = faStarOfDavid;\n  exports.faStarOfLife = faStarOfLife;\n  exports.faStepBackward = faStepBackward;\n  exports.faStepForward = faStepForward;\n  exports.faSterlingSign = faSterlingSign;\n  exports.faStethoscope = faStethoscope;\n  exports.faStickyNote = faStickyNote;\n  exports.faStop = faStop;\n  exports.faStopCircle = faStopCircle;\n  exports.faStopwatch = faStopwatch;\n  exports.faStopwatch20 = faStopwatch20;\n  exports.faStore = faStore;\n  exports.faStoreAlt = faStoreAlt;\n  exports.faStoreAltSlash = faStoreAltSlash;\n  exports.faStoreSlash = faStoreSlash;\n  exports.faStream = faStream;\n  exports.faStreetView = faStreetView;\n  exports.faStrikethrough = faStrikethrough;\n  exports.faStroopwafel = faStroopwafel;\n  exports.faSubscript = faSubscript;\n  exports.faSubtract = faSubtract;\n  exports.faSubway = faSubway;\n  exports.faSuitcase = faSuitcase;\n  exports.faSuitcaseMedical = faSuitcaseMedical;\n  exports.faSuitcaseRolling = faSuitcaseRolling;\n  exports.faSun = faSun;\n  exports.faSunPlantWilt = faSunPlantWilt;\n  exports.faSuperscript = faSuperscript;\n  exports.faSurprise = faSurprise;\n  exports.faSwatchbook = faSwatchbook;\n  exports.faSwimmer = faSwimmer;\n  exports.faSwimmingPool = faSwimmingPool;\n  exports.faSynagogue = faSynagogue;\n  exports.faSync = faSync;\n  exports.faSyncAlt = faSyncAlt;\n  exports.faSyringe = faSyringe;\n  exports.faT = faT;\n  exports.faTShirt = faTShirt;\n  exports.faTable = faTable;\n  exports.faTableCells = faTableCells;\n  exports.faTableCellsColumnLock = faTableCellsColumnLock;\n  exports.faTableCellsLarge = faTableCellsLarge;\n  exports.faTableCellsRowLock = faTableCellsRowLock;\n  exports.faTableCellsRowUnlock = faTableCellsRowUnlock;\n  exports.faTableColumns = faTableColumns;\n  exports.faTableList = faTableList;\n  exports.faTableTennis = faTableTennis;\n  exports.faTableTennisPaddleBall = faTableTennisPaddleBall;\n  exports.faTablet = faTablet;\n  exports.faTabletAlt = faTabletAlt;\n  exports.faTabletAndroid = faTabletAndroid;\n  exports.faTabletButton = faTabletButton;\n  exports.faTabletScreenButton = faTabletScreenButton;\n  exports.faTablets = faTablets;\n  exports.faTachographDigital = faTachographDigital;\n  exports.faTachometer = faTachometer;\n  exports.faTachometerAlt = faTachometerAlt;\n  exports.faTachometerAltAverage = faTachometerAltAverage;\n  exports.faTachometerAltFast = faTachometerAltFast;\n  exports.faTachometerAverage = faTachometerAverage;\n  exports.faTachometerFast = faTachometerFast;\n  exports.faTag = faTag;\n  exports.faTags = faTags;\n  exports.faTanakh = faTanakh;\n  exports.faTape = faTape;\n  exports.faTarp = faTarp;\n  exports.faTarpDroplet = faTarpDroplet;\n  exports.faTasks = faTasks;\n  exports.faTasksAlt = faTasksAlt;\n  exports.faTaxi = faTaxi;\n  exports.faTeeth = faTeeth;\n  exports.faTeethOpen = faTeethOpen;\n  exports.faTeletype = faTeletype;\n  exports.faTelevision = faTelevision;\n  exports.faTemperature0 = faTemperature0;\n  exports.faTemperature1 = faTemperature1;\n  exports.faTemperature2 = faTemperature2;\n  exports.faTemperature3 = faTemperature3;\n  exports.faTemperature4 = faTemperature4;\n  exports.faTemperatureArrowDown = faTemperatureArrowDown;\n  exports.faTemperatureArrowUp = faTemperatureArrowUp;\n  exports.faTemperatureDown = faTemperatureDown;\n  exports.faTemperatureEmpty = faTemperatureEmpty;\n  exports.faTemperatureFull = faTemperatureFull;\n  exports.faTemperatureHalf = faTemperatureHalf;\n  exports.faTemperatureHigh = faTemperatureHigh;\n  exports.faTemperatureLow = faTemperatureLow;\n  exports.faTemperatureQuarter = faTemperatureQuarter;\n  exports.faTemperatureThreeQuarters = faTemperatureThreeQuarters;\n  exports.faTemperatureUp = faTemperatureUp;\n  exports.faTenge = faTenge;\n  exports.faTengeSign = faTengeSign;\n  exports.faTent = faTent;\n  exports.faTentArrowDownToLine = faTentArrowDownToLine;\n  exports.faTentArrowLeftRight = faTentArrowLeftRight;\n  exports.faTentArrowTurnLeft = faTentArrowTurnLeft;\n  exports.faTentArrowsDown = faTentArrowsDown;\n  exports.faTents = faTents;\n  exports.faTerminal = faTerminal;\n  exports.faTextHeight = faTextHeight;\n  exports.faTextSlash = faTextSlash;\n  exports.faTextWidth = faTextWidth;\n  exports.faTh = faTh;\n  exports.faThLarge = faThLarge;\n  exports.faThList = faThList;\n  exports.faTheaterMasks = faTheaterMasks;\n  exports.faThermometer = faThermometer;\n  exports.faThermometer0 = faThermometer0;\n  exports.faThermometer1 = faThermometer1;\n  exports.faThermometer2 = faThermometer2;\n  exports.faThermometer3 = faThermometer3;\n  exports.faThermometer4 = faThermometer4;\n  exports.faThermometerEmpty = faThermometerEmpty;\n  exports.faThermometerFull = faThermometerFull;\n  exports.faThermometerHalf = faThermometerHalf;\n  exports.faThermometerQuarter = faThermometerQuarter;\n  exports.faThermometerThreeQuarters = faThermometerThreeQuarters;\n  exports.faThumbTack = faThumbTack;\n  exports.faThumbTackSlash = faThumbTackSlash;\n  exports.faThumbsDown = faThumbsDown;\n  exports.faThumbsUp = faThumbsUp;\n  exports.faThumbtack = faThumbtack;\n  exports.faThumbtackSlash = faThumbtackSlash;\n  exports.faThunderstorm = faThunderstorm;\n  exports.faTicket = faTicket;\n  exports.faTicketAlt = faTicketAlt;\n  exports.faTicketSimple = faTicketSimple;\n  exports.faTimeline = faTimeline;\n  exports.faTimes = faTimes;\n  exports.faTimesCircle = faTimesCircle;\n  exports.faTimesRectangle = faTimesRectangle;\n  exports.faTimesSquare = faTimesSquare;\n  exports.faTint = faTint;\n  exports.faTintSlash = faTintSlash;\n  exports.faTired = faTired;\n  exports.faToggleOff = faToggleOff;\n  exports.faToggleOn = faToggleOn;\n  exports.faToilet = faToilet;\n  exports.faToiletPaper = faToiletPaper;\n  exports.faToiletPaperAlt = faToiletPaperAlt;\n  exports.faToiletPaperBlank = faToiletPaperBlank;\n  exports.faToiletPaperSlash = faToiletPaperSlash;\n  exports.faToiletPortable = faToiletPortable;\n  exports.faToiletsPortable = faToiletsPortable;\n  exports.faToolbox = faToolbox;\n  exports.faTools = faTools;\n  exports.faTooth = faTooth;\n  exports.faTorah = faTorah;\n  exports.faToriiGate = faToriiGate;\n  exports.faTornado = faTornado;\n  exports.faTowerBroadcast = faTowerBroadcast;\n  exports.faTowerCell = faTowerCell;\n  exports.faTowerObservation = faTowerObservation;\n  exports.faTractor = faTractor;\n  exports.faTrademark = faTrademark;\n  exports.faTrafficLight = faTrafficLight;\n  exports.faTrailer = faTrailer;\n  exports.faTrain = faTrain;\n  exports.faTrainSubway = faTrainSubway;\n  exports.faTrainTram = faTrainTram;\n  exports.faTram = faTram;\n  exports.faTransgender = faTransgender;\n  exports.faTransgenderAlt = faTransgenderAlt;\n  exports.faTrash = faTrash;\n  exports.faTrashAlt = faTrashAlt;\n  exports.faTrashArrowUp = faTrashArrowUp;\n  exports.faTrashCan = faTrashCan;\n  exports.faTrashCanArrowUp = faTrashCanArrowUp;\n  exports.faTrashRestore = faTrashRestore;\n  exports.faTrashRestoreAlt = faTrashRestoreAlt;\n  exports.faTree = faTree;\n  exports.faTreeCity = faTreeCity;\n  exports.faTriangleCircleSquare = faTriangleCircleSquare;\n  exports.faTriangleExclamation = faTriangleExclamation;\n  exports.faTrophy = faTrophy;\n  exports.faTrowel = faTrowel;\n  exports.faTrowelBricks = faTrowelBricks;\n  exports.faTruck = faTruck;\n  exports.faTruckArrowRight = faTruckArrowRight;\n  exports.faTruckDroplet = faTruckDroplet;\n  exports.faTruckFast = faTruckFast;\n  exports.faTruckField = faTruckField;\n  exports.faTruckFieldUn = faTruckFieldUn;\n  exports.faTruckFront = faTruckFront;\n  exports.faTruckLoading = faTruckLoading;\n  exports.faTruckMedical = faTruckMedical;\n  exports.faTruckMonster = faTruckMonster;\n  exports.faTruckMoving = faTruckMoving;\n  exports.faTruckPickup = faTruckPickup;\n  exports.faTruckPlane = faTruckPlane;\n  exports.faTruckRampBox = faTruckRampBox;\n  exports.faTry = faTry;\n  exports.faTshirt = faTshirt;\n  exports.faTty = faTty;\n  exports.faTurkishLira = faTurkishLira;\n  exports.faTurkishLiraSign = faTurkishLiraSign;\n  exports.faTurnDown = faTurnDown;\n  exports.faTurnUp = faTurnUp;\n  exports.faTv = faTv;\n  exports.faTvAlt = faTvAlt;\n  exports.faU = faU;\n  exports.faUmbrella = faUmbrella;\n  exports.faUmbrellaBeach = faUmbrellaBeach;\n  exports.faUnderline = faUnderline;\n  exports.faUndo = faUndo;\n  exports.faUndoAlt = faUndoAlt;\n  exports.faUniversalAccess = faUniversalAccess;\n  exports.faUniversity = faUniversity;\n  exports.faUnlink = faUnlink;\n  exports.faUnlock = faUnlock;\n  exports.faUnlockAlt = faUnlockAlt;\n  exports.faUnlockKeyhole = faUnlockKeyhole;\n  exports.faUnsorted = faUnsorted;\n  exports.faUpDown = faUpDown;\n  exports.faUpDownLeftRight = faUpDownLeftRight;\n  exports.faUpLong = faUpLong;\n  exports.faUpRightAndDownLeftFromCenter = faUpRightAndDownLeftFromCenter;\n  exports.faUpRightFromSquare = faUpRightFromSquare;\n  exports.faUpload = faUpload;\n  exports.faUsd = faUsd;\n  exports.faUser = faUser;\n  exports.faUserAlt = faUserAlt;\n  exports.faUserAltSlash = faUserAltSlash;\n  exports.faUserAstronaut = faUserAstronaut;\n  exports.faUserCheck = faUserCheck;\n  exports.faUserCircle = faUserCircle;\n  exports.faUserClock = faUserClock;\n  exports.faUserCog = faUserCog;\n  exports.faUserDoctor = faUserDoctor;\n  exports.faUserEdit = faUserEdit;\n  exports.faUserFriends = faUserFriends;\n  exports.faUserGear = faUserGear;\n  exports.faUserGraduate = faUserGraduate;\n  exports.faUserGroup = faUserGroup;\n  exports.faUserInjured = faUserInjured;\n  exports.faUserLarge = faUserLarge;\n  exports.faUserLargeSlash = faUserLargeSlash;\n  exports.faUserLock = faUserLock;\n  exports.faUserMd = faUserMd;\n  exports.faUserMinus = faUserMinus;\n  exports.faUserNinja = faUserNinja;\n  exports.faUserNurse = faUserNurse;\n  exports.faUserPen = faUserPen;\n  exports.faUserPlus = faUserPlus;\n  exports.faUserSecret = faUserSecret;\n  exports.faUserShield = faUserShield;\n  exports.faUserSlash = faUserSlash;\n  exports.faUserTag = faUserTag;\n  exports.faUserTie = faUserTie;\n  exports.faUserTimes = faUserTimes;\n  exports.faUserXmark = faUserXmark;\n  exports.faUsers = faUsers;\n  exports.faUsersBetweenLines = faUsersBetweenLines;\n  exports.faUsersCog = faUsersCog;\n  exports.faUsersGear = faUsersGear;\n  exports.faUsersLine = faUsersLine;\n  exports.faUsersRays = faUsersRays;\n  exports.faUsersRectangle = faUsersRectangle;\n  exports.faUsersSlash = faUsersSlash;\n  exports.faUsersViewfinder = faUsersViewfinder;\n  exports.faUtensilSpoon = faUtensilSpoon;\n  exports.faUtensils = faUtensils;\n  exports.faV = faV;\n  exports.faVanShuttle = faVanShuttle;\n  exports.faVault = faVault;\n  exports.faVcard = faVcard;\n  exports.faVectorPolygon = faVectorPolygon;\n  exports.faVenus = faVenus;\n  exports.faVenusDouble = faVenusDouble;\n  exports.faVenusMars = faVenusMars;\n  exports.faVest = faVest;\n  exports.faVestPatches = faVestPatches;\n  exports.faVial = faVial;\n  exports.faVialCircleCheck = faVialCircleCheck;\n  exports.faVialVirus = faVialVirus;\n  exports.faVials = faVials;\n  exports.faVideo = faVideo;\n  exports.faVideoCamera = faVideoCamera;\n  exports.faVideoSlash = faVideoSlash;\n  exports.faVihara = faVihara;\n  exports.faVirus = faVirus;\n  exports.faVirusCovid = faVirusCovid;\n  exports.faVirusCovidSlash = faVirusCovidSlash;\n  exports.faVirusSlash = faVirusSlash;\n  exports.faViruses = faViruses;\n  exports.faVoicemail = faVoicemail;\n  exports.faVolcano = faVolcano;\n  exports.faVolleyball = faVolleyball;\n  exports.faVolleyballBall = faVolleyballBall;\n  exports.faVolumeControlPhone = faVolumeControlPhone;\n  exports.faVolumeDown = faVolumeDown;\n  exports.faVolumeHigh = faVolumeHigh;\n  exports.faVolumeLow = faVolumeLow;\n  exports.faVolumeMute = faVolumeMute;\n  exports.faVolumeOff = faVolumeOff;\n  exports.faVolumeTimes = faVolumeTimes;\n  exports.faVolumeUp = faVolumeUp;\n  exports.faVolumeXmark = faVolumeXmark;\n  exports.faVoteYea = faVoteYea;\n  exports.faVrCardboard = faVrCardboard;\n  exports.faW = faW;\n  exports.faWalkieTalkie = faWalkieTalkie;\n  exports.faWalking = faWalking;\n  exports.faWallet = faWallet;\n  exports.faWandMagic = faWandMagic;\n  exports.faWandMagicSparkles = faWandMagicSparkles;\n  exports.faWandSparkles = faWandSparkles;\n  exports.faWarehouse = faWarehouse;\n  exports.faWarning = faWarning;\n  exports.faWater = faWater;\n  exports.faWaterLadder = faWaterLadder;\n  exports.faWaveSquare = faWaveSquare;\n  exports.faWebAwesome = faWebAwesome;\n  exports.faWeight = faWeight;\n  exports.faWeightHanging = faWeightHanging;\n  exports.faWeightScale = faWeightScale;\n  exports.faWheatAlt = faWheatAlt;\n  exports.faWheatAwn = faWheatAwn;\n  exports.faWheatAwnCircleExclamation = faWheatAwnCircleExclamation;\n  exports.faWheelchair = faWheelchair;\n  exports.faWheelchairAlt = faWheelchairAlt;\n  exports.faWheelchairMove = faWheelchairMove;\n  exports.faWhiskeyGlass = faWhiskeyGlass;\n  exports.faWifi = faWifi;\n  exports.faWifi3 = faWifi3;\n  exports.faWifiStrong = faWifiStrong;\n  exports.faWind = faWind;\n  exports.faWindowClose = faWindowClose;\n  exports.faWindowMaximize = faWindowMaximize;\n  exports.faWindowMinimize = faWindowMinimize;\n  exports.faWindowRestore = faWindowRestore;\n  exports.faWineBottle = faWineBottle;\n  exports.faWineGlass = faWineGlass;\n  exports.faWineGlassAlt = faWineGlassAlt;\n  exports.faWineGlassEmpty = faWineGlassEmpty;\n  exports.faWon = faWon;\n  exports.faWonSign = faWonSign;\n  exports.faWorm = faWorm;\n  exports.faWrench = faWrench;\n  exports.faX = faX;\n  exports.faXRay = faXRay;\n  exports.faXmark = faXmark;\n  exports.faXmarkCircle = faXmarkCircle;\n  exports.faXmarkSquare = faXmarkSquare;\n  exports.faXmarksLines = faXmarksLines;\n  exports.faY = faY;\n  exports.faYen = faYen;\n  exports.faYenSign = faYenSign;\n  exports.faYinYang = faYinYang;\n  exports.faZ = faZ;\n  exports.faZap = faZap;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","\n      (function(){\n        var _fontawesome = require('@fortawesome/fontawesome-svg-core');\n        var pack;\n        \n          pack = require('@fortawesome/free-solid-svg-icons');\n          delete pack['default'];\n          _fontawesome.library.add(pack);\n      })()\n    ","'use strict';\n\nvar fontawesomeSvgCore = require('@fortawesome/fontawesome-svg-core');\n\n// turn off adding styles to the app's HTML as these styles are included in the build already\nfontawesomeSvgCore.config.autoAddCss = false;\n","/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n;\n(function (root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory();\n    } else {\n        root.ResizeSensor = factory();\n    }\n}(this, function () {\n\n    //Make sure it does not throw in a SSR (Server Side Rendering) situation\n    if (typeof window === \"undefined\") {\n        return null;\n    }\n    // Only used for the dirty checking, so the event callback count is limted to max 1 call per fps per sensor.\n    // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and\n    // would generate too many unnecessary events.\n    var requestAnimationFrame = window.requestAnimationFrame ||\n        window.mozRequestAnimationFrame ||\n        window.webkitRequestAnimationFrame ||\n        function (fn) {\n            return window.setTimeout(fn, 20);\n        };\n\n    /**\n     * Iterate over each of the provided element(s).\n     *\n     * @param {HTMLElement|HTMLElement[]} elements\n     * @param {Function}                  callback\n     */\n    function forEachElement(elements, callback){\n        var elementsType = Object.prototype.toString.call(elements);\n        var isCollectionTyped = ('[object Array]' === elementsType\n            || ('[object NodeList]' === elementsType)\n            || ('[object HTMLCollection]' === elementsType)\n            || ('[object Object]' === elementsType)\n            || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery\n            || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools\n        );\n        var i = 0, j = elements.length;\n        if (isCollectionTyped) {\n            for (; i < j; i++) {\n                callback(elements[i]);\n            }\n        } else {\n            callback(elements);\n        }\n    }\n\n    /**\n     * Class for dimension change detection.\n     *\n     * @param {Element|Element[]|Elements|jQuery} element\n     * @param {Function} callback\n     *\n     * @constructor\n     */\n    var ResizeSensor = function(element, callback) {\n        /**\n         *\n         * @constructor\n         */\n        function EventQueue() {\n            var q = [];\n            this.add = function(ev) {\n                q.push(ev);\n            };\n\n            var i, j;\n            this.call = function() {\n                for (i = 0, j = q.length; i < j; i++) {\n                    q[i].call();\n                }\n            };\n\n            this.remove = function(ev) {\n                var newQueue = [];\n                for(i = 0, j = q.length; i < j; i++) {\n                    if(q[i] !== ev) newQueue.push(q[i]);\n                }\n                q = newQueue;\n            }\n\n            this.length = function() {\n                return q.length;\n            }\n        }\n\n        /**\n         * @param {HTMLElement} element\n         * @param {String}      prop\n         * @returns {String|Number}\n         */\n        function getComputedStyle(element, prop) {\n            if (element.currentStyle) {\n                return element.currentStyle[prop];\n            } else if (window.getComputedStyle) {\n                return window.getComputedStyle(element, null).getPropertyValue(prop);\n            } else {\n                return element.style[prop];\n            }\n        }\n\n        /**\n         *\n         * @param {HTMLElement} element\n         * @param {Function}    resized\n         */\n        function attachResizeEvent(element, resized) {\n            if (!element.resizedAttached) {\n                element.resizedAttached = new EventQueue();\n                element.resizedAttached.add(resized);\n            } else if (element.resizedAttached) {\n                element.resizedAttached.add(resized);\n                return;\n            }\n\n            element.resizeSensor = document.createElement('div');\n            element.resizeSensor.className = 'resize-sensor';\n            var style = 'position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;';\n            var styleChild = 'position: absolute; left: 0; top: 0; transition: 0s;';\n\n            element.resizeSensor.style.cssText = style;\n            element.resizeSensor.innerHTML =\n                '<div class=\"resize-sensor-expand\" style=\"' + style + '\">' +\n                    '<div style=\"' + styleChild + '\"></div>' +\n                '</div>' +\n                '<div class=\"resize-sensor-shrink\" style=\"' + style + '\">' +\n                    '<div style=\"' + styleChild + ' width: 200%; height: 200%\"></div>' +\n                '</div>';\n            element.appendChild(element.resizeSensor);\n\n            if (getComputedStyle(element, 'position') == 'static') {\n                element.style.position = 'relative';\n            }\n\n            var expand = element.resizeSensor.childNodes[0];\n            var expandChild = expand.childNodes[0];\n            var shrink = element.resizeSensor.childNodes[1];\n            var dirty, rafId, newWidth, newHeight;\n            var lastWidth = element.offsetWidth;\n            var lastHeight = element.offsetHeight;\n\n            var reset = function() {\n                expandChild.style.width = '100000px';\n                expandChild.style.height = '100000px';\n\n                expand.scrollLeft = 100000;\n                expand.scrollTop = 100000;\n\n                shrink.scrollLeft = 100000;\n                shrink.scrollTop = 100000;\n            };\n\n            reset();\n\n            var onResized = function() {\n                rafId = 0;\n\n                if (!dirty) return;\n\n                lastWidth = newWidth;\n                lastHeight = newHeight;\n\n                if (element.resizedAttached) {\n                    element.resizedAttached.call();\n                }\n            };\n\n            var onScroll = function() {\n                newWidth = element.offsetWidth;\n                newHeight = element.offsetHeight;\n                dirty = newWidth != lastWidth || newHeight != lastHeight;\n\n                if (dirty && !rafId) {\n                    rafId = requestAnimationFrame(onResized);\n                }\n\n                reset();\n            };\n\n            var addEvent = function(el, name, cb) {\n                if (el.attachEvent) {\n                    el.attachEvent('on' + name, cb);\n                } else {\n                    el.addEventListener(name, cb);\n                }\n            };\n\n            addEvent(expand, 'scroll', onScroll);\n            addEvent(shrink, 'scroll', onScroll);\n        }\n\n        forEachElement(element, function(elem){\n            attachResizeEvent(elem, callback);\n        });\n\n        this.detach = function(ev) {\n            ResizeSensor.detach(element, ev);\n        };\n    };\n\n    ResizeSensor.detach = function(element, ev) {\n        forEachElement(element, function(elem){\n            if(elem.resizedAttached && typeof ev == \"function\"){\n                elem.resizedAttached.remove(ev);\n                if(elem.resizedAttached.length()) return;\n            }\n            if (elem.resizeSensor) {\n                if (elem.contains(elem.resizeSensor)) {\n                    elem.removeChild(elem.resizeSensor);\n                }\n                delete elem.resizeSensor;\n                delete elem.resizedAttached;\n            }\n        });\n    };\n\n    return ResizeSensor;\n\n}));\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n    define(function() {\n        return Hammer;\n    });\n} else if (typeof module != 'undefined' && module.exports) {\n    module.exports = Hammer;\n} else {\n    window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","!function(t,e){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error(\"jQuery requires a window with a document\");return e(t)}:e(t)}(\"undefined\"!=typeof window?window:this,function(x,t){function e(t,e){return e.toUpperCase()}var n=[],C=x.document,l=n.slice,g=n.concat,a=n.push,i=n.indexOf,r={},o=r.toString,d=r.hasOwnProperty,m={},s=\"2.2.4\",k=function(t,e){return new k.fn.init(t,e)},u=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,c=/^-ms-/,h=/-([\\da-z])/gi;function f(t){var e=!!t&&\"length\"in t&&t.length,n=k.type(t);return\"function\"!==n&&!k.isWindow(t)&&(\"array\"===n||0===e||\"number\"==typeof e&&0<e&&e-1 in t)}k.fn=k.prototype={jquery:s,constructor:k,selector:\"\",length:0,toArray:function(){return l.call(this)},get:function(t){return null!=t?t<0?this[t+this.length]:this[t]:l.call(this)},pushStack:function(t){t=k.merge(this.constructor(),t);return t.prevObject=this,t.context=this.context,t},each:function(t){return k.each(this,t)},map:function(n){return this.pushStack(k.map(this,function(t,e){return n.call(t,e,t)}))},slice:function(){return this.pushStack(l.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,t=+t+(t<0?e:0);return this.pushStack(0<=t&&t<e?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:n.sort,splice:n.splice},k.extend=k.fn.extend=function(){var t,e,n,r,i,o=arguments[0]||{},s=1,a=arguments.length,u=!1;for(\"boolean\"==typeof o&&(u=o,o=arguments[s]||{},s++),\"object\"==typeof o||k.isFunction(o)||(o={}),s===a&&(o=this,s--);s<a;s++)if(null!=(t=arguments[s]))for(e in t)i=o[e],n=t[e],o!==n&&(u&&n&&(k.isPlainObject(n)||(r=k.isArray(n)))?(i=r?(r=!1,i&&k.isArray(i)?i:[]):i&&k.isPlainObject(i)?i:{},o[e]=k.extend(u,i,n)):void 0!==n&&(o[e]=n));return o},k.extend({expando:\"jQuery\"+(s+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return\"function\"===k.type(t)},isArray:Array.isArray,isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=t&&t.toString();return!k.isArray(t)&&0<=e-parseFloat(e)+1},isPlainObject:function(t){if(\"object\"!==k.type(t)||t.nodeType||k.isWindow(t))return!1;if(t.constructor&&!d.call(t,\"constructor\")&&!d.call(t.constructor.prototype||{},\"isPrototypeOf\"))return!1;for(var e in t);return void 0===e||d.call(t,e)},isEmptyObject:function(t){for(var e in t)return!1;return!0},type:function(t){return null==t?t+\"\":\"object\"==typeof t||\"function\"==typeof t?r[o.call(t)]||\"object\":typeof t},globalEval:function(t){var e,n=eval;(t=k.trim(t))&&(1===t.indexOf(\"use strict\")?((e=C.createElement(\"script\")).text=t,C.head.appendChild(e).parentNode.removeChild(e)):n(t))},camelCase:function(t){return t.replace(c,\"ms-\").replace(h,e)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e){var n,r=0;if(f(t))for(n=t.length;r<n&&!1!==e.call(t[r],r,t[r]);r++);else for(r in t)if(!1===e.call(t[r],r,t[r]))break;return t},trim:function(t){return null==t?\"\":(t+\"\").replace(u,\"\")},makeArray:function(t,e){e=e||[];return null!=t&&(f(Object(t))?k.merge(e,\"string\"==typeof t?[t]:t):a.call(e,t)),e},inArray:function(t,e,n){return null==e?-1:i.call(e,t,n)},merge:function(t,e){for(var n=+e.length,r=0,i=t.length;r<n;r++)t[i++]=e[r];return t.length=i,t},grep:function(t,e,n){for(var r=[],i=0,o=t.length,s=!n;i<o;i++)!e(t[i],i)!=s&&r.push(t[i]);return r},map:function(t,e,n){var r,i,o=0,s=[];if(f(t))for(r=t.length;o<r;o++)null!=(i=e(t[o],o,n))&&s.push(i);else for(o in t)i=e(t[o],o,n),null!=i&&s.push(i);return g.apply([],s)},guid:1,proxy:function(t,e){var n,r;return\"string\"==typeof e&&(r=t[e],e=t,t=r),k.isFunction(t)?(n=l.call(arguments,2),(r=function(){return t.apply(e||this,n.concat(l.call(arguments)))}).guid=t.guid=t.guid||k.guid++,r):void 0},now:Date.now,support:m}),\"function\"==typeof Symbol&&(k.fn[Symbol.iterator]=n[Symbol.iterator]),k.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(t,e){r[\"[object \"+e+\"]\"]=e.toLowerCase()});var p=function(n){function h(t,e,n){var r=\"0x\"+e-65536;return r!=r||n?e:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}function e(){x()}var t,d,w,o,r,g,f,m,_,u,c,x,C,i,k,v,s,a,y,S=\"sizzle\"+ +new Date,b=n.document,O=0,l=0,p=it(),E=it(),T=it(),A=function(t,e){return t===e&&(c=!0),0},I={}.hasOwnProperty,j=[],P=j.pop,N=j.push,D=j.push,R=j.slice,M=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},W=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",L=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",F=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",H=\"\\\\[\"+L+\"*(\"+F+\")(?:\"+L+\"*([*^$|!~]?=)\"+L+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+F+\"))|)\"+L+\"*\\\\]\",B=\":(\"+F+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+H+\")*)|.*)\\\\)|)\",q=new RegExp(L+\"+\",\"g\"),z=new RegExp(\"^\"+L+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+L+\"+$\",\"g\"),U=new RegExp(\"^\"+L+\"*,\"+L+\"*\"),G=new RegExp(\"^\"+L+\"*([>+~]|\"+L+\")\"+L+\"*\"),V=new RegExp(\"=\"+L+\"*([^\\\\]'\\\"]*?)\"+L+\"*\\\\]\",\"g\"),$=new RegExp(B),X=new RegExp(\"^\"+F+\"$\"),Y={ID:new RegExp(\"^#(\"+F+\")\"),CLASS:new RegExp(\"^\\\\.(\"+F+\")\"),TAG:new RegExp(\"^(\"+F+\"|[*])\"),ATTR:new RegExp(\"^\"+H),PSEUDO:new RegExp(\"^\"+B),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+L+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+L+\"*(?:([+-]|)\"+L+\"*(\\\\d+)|))\"+L+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+W+\")$\",\"i\"),needsContext:new RegExp(\"^\"+L+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+L+\"*((?:-\\\\d)?\\\\d*)\"+L+\"*\\\\)|)(?=[^-]|$)\",\"i\")},K=/^(?:input|select|textarea|button)$/i,Q=/^h\\d$/i,J=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,tt=/[+~]/,et=/'|\\\\/g,nt=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+L+\"?|(\"+L+\")|.)\",\"ig\");try{D.apply(j=R.call(b.childNodes),b.childNodes),j[b.childNodes.length].nodeType}catch(t){D={apply:j.length?function(t,e){N.apply(t,R.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function rt(t,e,n,r){var i,o,s,a,u,c,l,h,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:b)!==C&&x(e),e=e||C,k)){if(11!==p&&(c=Z.exec(t)))if(i=c[1]){if(9===p){if(!(s=e.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(f&&(s=f.getElementById(i))&&y(e,s)&&s.id===i)return n.push(s),n}else{if(c[2])return D.apply(n,e.getElementsByTagName(t)),n;if((i=c[3])&&d.getElementsByClassName&&e.getElementsByClassName)return D.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!T[t+\" \"]&&(!v||!v.test(t))){if(1!==p)f=e,h=t;else if(\"object\"!==e.nodeName.toLowerCase()){for((a=e.getAttribute(\"id\"))?a=a.replace(et,\"\\\\$&\"):e.setAttribute(\"id\",a=S),o=(l=g(t)).length,u=X.test(a)?\"#\"+a:\"[id='\"+a+\"']\";o--;)l[o]=u+\" \"+ft(l[o]);h=l.join(\",\"),f=tt.test(t)&&lt(e.parentNode)||e}if(h)try{return D.apply(n,f.querySelectorAll(h)),n}catch(t){}finally{a===S&&e.removeAttribute(\"id\")}}}return m(t.replace(z,\"$1\"),e,n,r)}function it(){var n=[];function r(t,e){return n.push(t+\" \")>w.cacheLength&&delete r[n.shift()],r[t+\" \"]=e}return r}function ot(t){return t[S]=!0,t}function st(t){var e=C.createElement(\"div\");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function at(t,e){for(var n=t.split(\"|\"),r=n.length;r--;)w.attrHandle[n[r]]=e}function ut(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||1<<31)-(~t.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function ct(s){return ot(function(o){return o=+o,ot(function(t,e){for(var n,r=s([],t.length,o),i=r.length;i--;)t[n=r[i]]&&(t[n]=!(e[n]=t[n]))})})}function lt(t){return t&&void 0!==t.getElementsByTagName&&t}for(t in d=rt.support={},r=rt.isXML=function(t){t=t&&(t.ownerDocument||t).documentElement;return!!t&&\"HTML\"!==t.nodeName},x=rt.setDocument=function(t){var t=t?t.ownerDocument||t:b;return t!==C&&9===t.nodeType&&t.documentElement&&(i=(C=t).documentElement,k=!r(C),(t=C.defaultView)&&t.top!==t&&(t.addEventListener?t.addEventListener(\"unload\",e,!1):t.attachEvent&&t.attachEvent(\"onunload\",e)),d.attributes=st(function(t){return t.className=\"i\",!t.getAttribute(\"className\")}),d.getElementsByTagName=st(function(t){return t.appendChild(C.createComment(\"\")),!t.getElementsByTagName(\"*\").length}),d.getElementsByClassName=J.test(C.getElementsByClassName),d.getById=st(function(t){return i.appendChild(t).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(w.find.ID=function(t,e){if(void 0!==e.getElementById&&k){t=e.getElementById(t);return t?[t]:[]}},w.filter.ID=function(t){var e=t.replace(nt,h);return function(t){return t.getAttribute(\"id\")===e}}):(delete w.find.ID,w.filter.ID=function(t){var e=t.replace(nt,h);return function(t){t=void 0!==t.getAttributeNode&&t.getAttributeNode(\"id\");return t&&t.value===e}}),w.find.TAG=d.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):d.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if(\"*\"!==t)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},w.find.CLASS=d.getElementsByClassName&&function(t,e){return void 0!==e.getElementsByClassName&&k?e.getElementsByClassName(t):void 0},s=[],v=[],(d.qsa=J.test(C.querySelectorAll))&&(st(function(t){i.appendChild(t).innerHTML=\"<a id='\"+S+\"'></a><select id='\"+S+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",t.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+L+\"*(?:''|\\\"\\\")\"),t.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+L+\"*(?:value|\"+W+\")\"),t.querySelectorAll(\"[id~=\"+S+\"-]\").length||v.push(\"~=\"),t.querySelectorAll(\":checked\").length||v.push(\":checked\"),t.querySelectorAll(\"a#\"+S+\"+*\").length||v.push(\".#.+[+~]\")}),st(function(t){var e=C.createElement(\"input\");e.setAttribute(\"type\",\"hidden\"),t.appendChild(e).setAttribute(\"name\",\"D\"),t.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+L+\"*[*^$|!~]?=\"),t.querySelectorAll(\":enabled\").length||v.push(\":enabled\",\":disabled\"),t.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=J.test(a=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.oMatchesSelector||i.msMatchesSelector))&&st(function(t){d.disconnectedMatch=a.call(t,\"div\"),a.call(t,\"[s!='']:x\"),s.push(\"!=\",B)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=J.test(i.compareDocumentPosition),y=t||J.test(i.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,e=e&&e.parentNode;return t===e||!(!e||1!==e.nodeType||!(n.contains?n.contains(e):t.compareDocumentPosition&&16&t.compareDocumentPosition(e)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},A=t?function(t,e){if(t===e)return c=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!d.sortDetached&&e.compareDocumentPosition(t)===n?t===C||t.ownerDocument===b&&y(b,t)?-1:e===C||e.ownerDocument===b&&y(b,e)?1:u?M(u,t)-M(u,e):0:4&n?-1:1)}:function(t,e){if(t===e)return c=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],a=[e];if(!i||!o)return t===C?-1:e===C?1:i?-1:o?1:u?M(u,t)-M(u,e):0;if(i===o)return ut(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?ut(s[r],a[r]):s[r]===b?-1:a[r]===b?1:0}),C},rt.matches=function(t,e){return rt(t,null,null,e)},rt.matchesSelector=function(t,e){if((t.ownerDocument||t)!==C&&x(t),e=e.replace(V,\"='$1']\"),d.matchesSelector&&k&&!T[e+\" \"]&&(!s||!s.test(e))&&(!v||!v.test(e)))try{var n=a.call(t,e);if(n||d.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return 0<rt(e,C,null,[t]).length},rt.contains=function(t,e){return(t.ownerDocument||t)!==C&&x(t),y(t,e)},rt.attr=function(t,e){(t.ownerDocument||t)!==C&&x(t);var n=w.attrHandle[e.toLowerCase()],n=n&&I.call(w.attrHandle,e.toLowerCase())?n(t,e,!k):void 0;return void 0!==n?n:d.attributes||!k?t.getAttribute(e):(n=t.getAttributeNode(e))&&n.specified?n.value:null},rt.error=function(t){throw new Error(\"Syntax error, unrecognized expression: \"+t)},rt.uniqueSort=function(t){var e,n=[],r=0,i=0;if(c=!d.detectDuplicates,u=!d.sortStable&&t.slice(0),t.sort(A),c){for(;e=t[i++];)e===t[i]&&(r=n.push(i));for(;r--;)t.splice(n[r],1)}return u=null,t},o=rt.getText=function(t){var e,n=\"\",r=0,i=t.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=o(t)}else if(3===i||4===i)return t.nodeValue}else for(;e=t[r++];)n+=o(e);return n},(w=rt.selectors={cacheLength:50,createPseudo:ot,match:Y,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(nt,h),t[3]=(t[3]||t[4]||t[5]||\"\").replace(nt,h),\"~=\"===t[2]&&(t[3]=\" \"+t[3]+\" \"),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),\"nth\"===t[1].slice(0,3)?(t[3]||rt.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*(\"even\"===t[3]||\"odd\"===t[3])),t[5]=+(t[7]+t[8]||\"odd\"===t[3])):t[3]&&rt.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return Y.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||\"\":n&&$.test(n)&&(e=g(n,!0))&&(e=n.indexOf(\")\",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(nt,h).toLowerCase();return\"*\"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=p[t+\" \"];return e||(e=new RegExp(\"(^|\"+L+\")\"+t+\"(\"+L+\"|$)\"))&&p(t,function(t){return e.test(\"string\"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute(\"class\")||\"\")})},ATTR:function(e,n,r){return function(t){t=rt.attr(t,e);return null==t?\"!=\"===n:!n||(t+=\"\",\"=\"===n?t===r:\"!=\"===n?t!==r:\"^=\"===n?r&&0===t.indexOf(r):\"*=\"===n?r&&-1<t.indexOf(r):\"$=\"===n?r&&t.slice(-r.length)===r:\"~=\"===n?-1<(\" \"+t.replace(q,\" \")+\" \").indexOf(r):\"|=\"===n&&(t===r||t.slice(0,r.length+1)===r+\"-\"))}},CHILD:function(d,t,e,g,m){var v=\"nth\"!==d.slice(0,3),y=\"last\"!==d.slice(-4),b=\"of-type\"===t;return 1===g&&0===m?function(t){return!!t.parentNode}:function(t,e,n){var r,i,o,s,a,u,c=v!=y?\"nextSibling\":\"previousSibling\",l=t.parentNode,h=b&&t.nodeName.toLowerCase(),f=!n&&!b,p=!1;if(l){if(v){for(;c;){for(s=t;s=s[c];)if(b?s.nodeName.toLowerCase()===h:1===s.nodeType)return!1;u=c=\"only\"===d&&!u&&\"nextSibling\"}return!0}if(u=[y?l.firstChild:l.lastChild],y&&f){for(p=(a=(r=(i=(o=(s=l)[S]||(s[S]={}))[s.uniqueID]||(o[s.uniqueID]={}))[d]||[])[0]===O&&r[1])&&r[2],s=a&&l.childNodes[a];s=++a&&s&&s[c]||(p=a=0)||u.pop();)if(1===s.nodeType&&++p&&s===t){i[d]=[O,a,p];break}}else if(f&&(p=a=(r=(i=(o=(s=t)[S]||(s[S]={}))[s.uniqueID]||(o[s.uniqueID]={}))[d]||[])[0]===O&&r[1]),!1===p)for(;(s=++a&&s&&s[c]||(p=a=0)||u.pop())&&((b?s.nodeName.toLowerCase()!==h:1!==s.nodeType)||!++p||(f&&((i=(o=s[S]||(s[S]={}))[s.uniqueID]||(o[s.uniqueID]={}))[d]=[O,p]),s!==t)););return(p-=m)===g||p%g==0&&0<=p/g}}},PSEUDO:function(t,o){var e,s=w.pseudos[t]||w.setFilters[t.toLowerCase()]||rt.error(\"unsupported pseudo: \"+t);return s[S]?s(o):1<s.length?(e=[t,t,\"\",o],w.setFilters.hasOwnProperty(t.toLowerCase())?ot(function(t,e){for(var n,r=s(t,o),i=r.length;i--;)t[n=M(t,r[i])]=!(e[n]=r[i])}):function(t){return s(t,0,e)}):s}},pseudos:{not:ot(function(t){var r=[],i=[],a=f(t.replace(z,\"$1\"));return a[S]?ot(function(t,e,n,r){for(var i,o=a(t,null,r,[]),s=t.length;s--;)(i=o[s])&&(t[s]=!(e[s]=i))}):function(t,e,n){return r[0]=t,a(r,null,n,i),r[0]=null,!i.pop()}}),has:ot(function(e){return function(t){return 0<rt(e,t).length}}),contains:ot(function(e){return e=e.replace(nt,h),function(t){return-1<(t.textContent||t.innerText||o(t)).indexOf(e)}}),lang:ot(function(n){return X.test(n||\"\")||rt.error(\"unsupported lang: \"+n),n=n.replace(nt,h).toLowerCase(),function(t){var e;do{if(e=k?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(e=e.toLowerCase())===n||0===e.indexOf(n+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var e=n.location&&n.location.hash;return e&&e.slice(1)===t.id},root:function(t){return t===i},focus:function(t){return t===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return!1===t.disabled},disabled:function(t){return!0===t.disabled},checked:function(t){var e=t.nodeName.toLowerCase();return\"input\"===e&&!!t.checked||\"option\"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!w.pseudos.empty(t)},header:function(t){return Q.test(t.nodeName)},input:function(t){return K.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return\"input\"===e&&\"button\"===t.type||\"button\"===e},text:function(t){return\"input\"===t.nodeName.toLowerCase()&&\"text\"===t.type&&(null==(t=t.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ct(function(){return[0]}),last:ct(function(t,e){return[e-1]}),eq:ct(function(t,e,n){return[n<0?n+e:n]}),even:ct(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:ct(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:ct(function(t,e,n){for(var r=n<0?n+e:n;0<=--r;)t.push(r);return t}),gt:ct(function(t,e,n){for(var r=n<0?n+e:n;++r<e;)t.push(r);return t})}}).pseudos.nth=w.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[t]=function(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}(t);for(t in{submit:!0,reset:!0})w.pseudos[t]=function(n){return function(t){var e=t.nodeName.toLowerCase();return(\"input\"===e||\"button\"===e)&&t.type===n}}(t);function ht(){}function ft(t){for(var e=0,n=t.length,r=\"\";e<n;e++)r+=t[e].value;return r}function pt(s,t,e){var a=t.dir,u=e&&\"parentNode\"===a,c=l++;return t.first?function(t,e,n){for(;t=t[a];)if(1===t.nodeType||u)return s(t,e,n)}:function(t,e,n){var r,i,o=[O,c];if(n){for(;t=t[a];)if((1===t.nodeType||u)&&s(t,e,n))return!0}else for(;t=t[a];)if(1===t.nodeType||u){if((i=(r=(i=t[S]||(t[S]={}))[t.uniqueID]||(i[t.uniqueID]={}))[a])&&i[0]===O&&i[1]===c)return o[2]=i[2];if((r[a]=o)[2]=s(t,e,n))return!0}}}function dt(i){return 1<i.length?function(t,e,n){for(var r=i.length;r--;)if(!i[r](t,e,n))return!1;return!0}:i[0]}function gt(t,e,n,r,i){for(var o,s=[],a=0,u=t.length,c=null!=e;a<u;a++)(o=t[a])&&(n&&!n(o,r,i)||(s.push(o),c&&e.push(a)));return s}function mt(p,d,g,m,v,t){return m&&!m[S]&&(m=mt(m)),v&&!v[S]&&(v=mt(v,t)),ot(function(t,e,n,r){var i,o,s,a=[],u=[],c=e.length,l=t||function(t,e,n){for(var r=0,i=e.length;r<i;r++)rt(t,e[r],n);return n}(d||\"*\",n.nodeType?[n]:n,[]),h=!p||!t&&d?l:gt(l,a,p,n,r),f=g?v||(t?p:c||m)?[]:e:h;if(g&&g(h,f,n,r),m)for(i=gt(f,u),m(i,[],n,r),o=i.length;o--;)(s=i[o])&&(f[u[o]]=!(h[u[o]]=s));if(t){if(v||p){if(v){for(i=[],o=f.length;o--;)(s=f[o])&&i.push(h[o]=s);v(null,f=[],i,r)}for(o=f.length;o--;)(s=f[o])&&-1<(i=v?M(t,s):a[o])&&(t[i]=!(e[i]=s))}}else f=gt(f===e?f.splice(c,f.length):f),v?v(null,e,f,r):D.apply(e,f)})}function vt(m,v){function t(t,e,n,r,i){var o,s,a,u=0,c=\"0\",l=t&&[],h=[],f=_,p=t||b&&w.find.TAG(\"*\",i),d=O+=null==f?1:Math.random()||.1,g=p.length;for(i&&(_=e===C||e||i);c!==g&&null!=(o=p[c]);c++){if(b&&o){for(s=0,e||o.ownerDocument===C||(x(o),n=!k);a=m[s++];)if(a(o,e||C,n)){r.push(o);break}i&&(O=d)}y&&((o=!a&&o)&&u--,t&&l.push(o))}if(u+=c,y&&c!==u){for(s=0;a=v[s++];)a(l,h,e,n);if(t){if(0<u)for(;c--;)l[c]||h[c]||(h[c]=P.call(r));h=gt(h)}D.apply(r,h),i&&!t&&0<h.length&&1<u+v.length&&rt.uniqueSort(r)}return i&&(O=d,_=f),l}var y=0<v.length,b=0<m.length;return y?ot(t):t}return ht.prototype=w.filters=w.pseudos,w.setFilters=new ht,g=rt.tokenize=function(t,e){var n,r,i,o,s,a,u,c=E[t+\" \"];if(c)return e?0:c.slice(0);for(s=t,a=[],u=w.preFilter;s;){for(o in n&&!(r=U.exec(s))||(r&&(s=s.slice(r[0].length)||s),a.push(i=[])),n=!1,(r=G.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z,\" \")}),s=s.slice(n.length)),w.filter)!(r=Y[o].exec(s))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return e?s.length:s?rt.error(t):E(t,a).slice(0)},f=rt.compile=function(t,e){var n,r=[],i=[],o=T[t+\" \"];if(!o){for(n=(e=e||g(t)).length;n--;)((o=function t(e){for(var r,n,i,o=e.length,s=w.relative[e[0].type],a=s||w.relative[\" \"],u=s?1:0,c=pt(function(t){return t===r},a,!0),l=pt(function(t){return-1<M(r,t)},a,!0),h=[function(t,e,n){return n=!s&&(n||e!==_)||((r=e).nodeType?c:l)(t,e,n),r=null,n}];u<o;u++)if(n=w.relative[e[u].type])h=[pt(dt(h),n)];else{if((n=w.filter[e[u].type].apply(null,e[u].matches))[S]){for(i=++u;i<o&&!w.relative[e[i].type];i++);return mt(1<u&&dt(h),1<u&&ft(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace(z,\"$1\"),n,u<i&&t(e.slice(u,i)),i<o&&t(e=e.slice(i)),i<o&&ft(e))}h.push(n)}return dt(h)}(e[n]))[S]?r:i).push(o);(o=T(t,vt(i,r))).selector=t}return o},m=rt.select=function(t,e,n,r){var i,o,s,a,u,c=\"function\"==typeof t&&t,l=!r&&g(t=c.selector||t);if(n=n||[],1===l.length){if(2<(o=l[0]=l[0].slice(0)).length&&\"ID\"===(s=o[0]).type&&d.getById&&9===e.nodeType&&k&&w.relative[o[1].type]){if(!(e=(w.find.ID(s.matches[0].replace(nt,h),e)||[])[0]))return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(i=Y.needsContext.test(t)?0:o.length;i--&&(s=o[i],!w.relative[a=s.type]);)if((u=w.find[a])&&(r=u(s.matches[0].replace(nt,h),tt.test(o[0].type)&&lt(e.parentNode)||e))){if(o.splice(i,1),!(t=r.length&&ft(o)))return D.apply(n,r),n;break}}return(c||f(t,l))(r,e,!k,n,!e||tt.test(t)&&lt(e.parentNode)||e),n},d.sortStable=S.split(\"\").sort(A).join(\"\")===S,d.detectDuplicates=!!c,x(),d.sortDetached=st(function(t){return 1&t.compareDocumentPosition(C.createElement(\"div\"))}),st(function(t){return t.innerHTML=\"<a href='#'></a>\",\"#\"===t.firstChild.getAttribute(\"href\")})||at(\"type|href|height|width\",function(t,e,n){return n?void 0:t.getAttribute(e,\"type\"===e.toLowerCase()?1:2)}),d.attributes&&st(function(t){return t.innerHTML=\"<input/>\",t.firstChild.setAttribute(\"value\",\"\"),\"\"===t.firstChild.getAttribute(\"value\")})||at(\"value\",function(t,e,n){return n||\"input\"!==t.nodeName.toLowerCase()?void 0:t.defaultValue}),st(function(t){return null==t.getAttribute(\"disabled\")})||at(W,function(t,e,n){return n?void 0:!0===t[e]?e.toLowerCase():(e=t.getAttributeNode(e))&&e.specified?e.value:null}),rt}(x);k.find=p,k.expr=p.selectors,k.expr[\":\"]=k.expr.pseudos,k.uniqueSort=k.unique=p.uniqueSort,k.text=p.getText,k.isXMLDoc=p.isXML,k.contains=p.contains;function v(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&k(t).is(n))break;r.push(t)}return r}function y(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n}var b=k.expr.match.needsContext,w=/^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/,_=/^.[^:#\\[\\.,]*$/;function S(t,n,r){if(k.isFunction(n))return k.grep(t,function(t,e){return!!n.call(t,e,t)!==r});if(n.nodeType)return k.grep(t,function(t){return t===n!==r});if(\"string\"==typeof n){if(_.test(n))return k.filter(n,t,r);n=k.filter(n,t)}return k.grep(t,function(t){return-1<i.call(n,t)!==r})}k.filter=function(t,e,n){var r=e[0];return n&&(t=\":not(\"+t+\")\"),1===e.length&&1===r.nodeType?k.find.matchesSelector(r,t)?[r]:[]:k.find.matches(t,k.grep(e,function(t){return 1===t.nodeType}))},k.fn.extend({find:function(t){var e,n=this.length,r=[],i=this;if(\"string\"!=typeof t)return this.pushStack(k(t).filter(function(){for(e=0;e<n;e++)if(k.contains(i[e],this))return!0}));for(e=0;e<n;e++)k.find(t,i[e],r);return(r=this.pushStack(1<n?k.unique(r):r)).selector=this.selector?this.selector+\" \"+t:t,r},filter:function(t){return this.pushStack(S(this,t||[],!1))},not:function(t){return this.pushStack(S(this,t||[],!0))},is:function(t){return!!S(this,\"string\"==typeof t&&b.test(t)?k(t):t||[],!1).length}});var O,E=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/;(k.fn.init=function(t,e,n){if(!t)return this;if(n=n||O,\"string\"!=typeof t)return t.nodeType?(this.context=this[0]=t,this.length=1,this):k.isFunction(t)?void 0!==n.ready?n.ready(t):t(k):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),k.makeArray(t,this));if(!(r=\"<\"===t[0]&&\">\"===t[t.length-1]&&3<=t.length?[null,t,null]:E.exec(t))||!r[1]&&e)return(!e||e.jquery?e||n:this.constructor(e)).find(t);if(r[1]){if(e=e instanceof k?e[0]:e,k.merge(this,k.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:C,!0)),w.test(r[1])&&k.isPlainObject(e))for(var r in e)k.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return(n=C.getElementById(r[2]))&&n.parentNode&&(this.length=1,this[0]=n),this.context=C,this.selector=t,this}).prototype=k.fn,O=k(C);var T=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function I(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}k.fn.extend({has:function(t){var e=k(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(k.contains(this,e[t]))return!0})},closest:function(t,e){for(var n,r=0,i=this.length,o=[],s=b.test(t)||\"string\"!=typeof t?k(t,e||this.context):0;r<i;r++)for(n=this[r];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(s?-1<s.index(n):1===n.nodeType&&k.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(t){return t?\"string\"==typeof t?i.call(k(t),this[0]):i.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),k.each({parent:function(t){t=t.parentNode;return t&&11!==t.nodeType?t:null},parents:function(t){return v(t,\"parentNode\")},parentsUntil:function(t,e,n){return v(t,\"parentNode\",n)},next:function(t){return I(t,\"nextSibling\")},prev:function(t){return I(t,\"previousSibling\")},nextAll:function(t){return v(t,\"nextSibling\")},prevAll:function(t){return v(t,\"previousSibling\")},nextUntil:function(t,e,n){return v(t,\"nextSibling\",n)},prevUntil:function(t,e,n){return v(t,\"previousSibling\",n)},siblings:function(t){return y((t.parentNode||{}).firstChild,t)},children:function(t){return y(t.firstChild)},contents:function(t){return t.contentDocument||k.merge([],t.childNodes)}},function(r,i){k.fn[r]=function(t,e){var n=k.map(this,i,t);return\"Until\"!==r.slice(-5)&&(e=t),e&&\"string\"==typeof e&&(n=k.filter(e,n)),1<this.length&&(A[r]||k.uniqueSort(n),T.test(r)&&n.reverse()),this.pushStack(n)}});var j,P=/\\S+/g;function N(){C.removeEventListener(\"DOMContentLoaded\",N),x.removeEventListener(\"load\",N),k.ready()}k.Callbacks=function(r){var t,n;r=\"string\"==typeof r?(t=r,n={},k.each(t.match(P)||[],function(t,e){n[e]=!0}),n):k.extend({},r);function i(){for(a=r.once,s=o=!0;c.length;l=-1)for(e=c.shift();++l<u.length;)!1===u[l].apply(e[0],e[1])&&r.stopOnFalse&&(l=u.length,e=!1);r.memory||(e=!1),o=!1,a&&(u=e?[]:\"\")}var o,e,s,a,u=[],c=[],l=-1,h={add:function(){return u&&(e&&!o&&(l=u.length-1,c.push(e)),function n(t){k.each(t,function(t,e){k.isFunction(e)?r.unique&&h.has(e)||u.push(e):e&&e.length&&\"string\"!==k.type(e)&&n(e)})}(arguments),e&&!o&&i()),this},remove:function(){return k.each(arguments,function(t,e){for(var n;-1<(n=k.inArray(e,u,n));)u.splice(n,1),n<=l&&l--}),this},has:function(t){return t?-1<k.inArray(t,u):0<u.length},empty:function(){return u=u&&[],this},disable:function(){return a=c=[],u=e=\"\",this},disabled:function(){return!u},lock:function(){return a=c=[],e||(u=e=\"\"),this},locked:function(){return!!a},fireWith:function(t,e){return a||(e=[t,(e=e||[]).slice?e.slice():e],c.push(e),o||i()),this},fire:function(){return h.fireWith(this,arguments),this},fired:function(){return!!s}};return h},k.extend({Deferred:function(t){var o=[[\"resolve\",\"done\",k.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",k.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",k.Callbacks(\"memory\")]],i=\"pending\",s={state:function(){return i},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(t,e){var n=k.isFunction(i[t])&&i[t];a[e[1]](function(){var t=n&&n.apply(this,arguments);t&&k.isFunction(t.promise)?t.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[e[0]+\"With\"](this===s?r.promise():this,n?[t]:arguments)})}),i=null}).promise()},promise:function(t){return null!=t?k.extend(t,s):s}},a={};return s.pipe=s.then,k.each(o,function(t,e){var n=e[2],r=e[3];s[e[1]]=n.add,r&&n.add(function(){i=r},o[1^t][2].disable,o[2][2].lock),a[e[0]]=function(){return a[e[0]+\"With\"](this===a?s:this,arguments),this},a[e[0]+\"With\"]=n.fireWith}),s.promise(a),t&&t.call(a,a),a},when:function(t){function e(e,n,r){return function(t){n[e]=this,r[e]=1<arguments.length?l.call(arguments):t,r===i?c.notifyWith(n,r):--u||c.resolveWith(n,r)}}var i,n,r,o=0,s=l.call(arguments),a=s.length,u=1!==a||t&&k.isFunction(t.promise)?a:0,c=1===u?t:k.Deferred();if(1<a)for(i=new Array(a),n=new Array(a),r=new Array(a);o<a;o++)s[o]&&k.isFunction(s[o].promise)?s[o].promise().progress(e(o,n,i)).done(e(o,r,s)).fail(c.reject):--u;return u||c.resolveWith(r,s),c.promise()}}),k.fn.ready=function(t){return k.ready.promise().done(t),this},k.extend({isReady:!1,readyWait:1,holdReady:function(t){t?k.readyWait++:k.ready(!0)},ready:function(t){(!0===t?--k.readyWait:k.isReady)||((k.isReady=!0)!==t&&0<--k.readyWait||(j.resolveWith(C,[k]),k.fn.triggerHandler&&(k(C).triggerHandler(\"ready\"),k(C).off(\"ready\"))))}}),k.ready.promise=function(t){return j||(j=k.Deferred(),\"complete\"===C.readyState||\"loading\"!==C.readyState&&!C.documentElement.doScroll?x.setTimeout(k.ready):(C.addEventListener(\"DOMContentLoaded\",N),x.addEventListener(\"load\",N))),j.promise(t)},k.ready.promise();function D(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType}var R=function(t,e,n,r,i,o,s){var a=0,u=t.length,c=null==n;if(\"object\"===k.type(n))for(a in i=!0,n)R(t,e,a,n[a],!0,o,s);else if(void 0!==r&&(i=!0,k.isFunction(r)||(s=!0),c&&(e=s?(e.call(t,r),null):(c=e,function(t,e,n){return c.call(k(t),n)})),e))for(;a<u;a++)e(t[a],n,s?r:r.call(t[a],a,e(t[a],n)));return i?t:c?e.call(t):u?e(t[0],n):o};function M(){this.expando=k.expando+M.uid++}M.uid=1,M.prototype={register:function(t,e){e=e||{};return t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,writable:!0,configurable:!0}),t[this.expando]},cache:function(t){if(!D(t))return{};var e=t[this.expando];return e||(e={},D(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var r,i=this.cache(t);if(\"string\"==typeof e)i[e]=n;else for(r in e)i[r]=e[r];return i},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][e]},access:function(t,e,n){var r;return void 0===e||e&&\"string\"==typeof e&&void 0===n?void 0!==(r=this.get(t,e))?r:this.get(t,k.camelCase(e)):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,r,i,o=t[this.expando];if(void 0!==o){if(void 0===e)this.register(t);else{n=(r=k.isArray(e)?e.concat(e.map(k.camelCase)):(i=k.camelCase(e),e in o?[e,i]:(r=i)in o?[r]:r.match(P)||[])).length;for(;n--;)delete o[r[n]]}void 0!==e&&!k.isEmptyObject(o)||(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){t=t[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var W=new M,L=new M,F=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,H=/[A-Z]/g;function B(t,e,n){var r;if(void 0===n&&1===t.nodeType)if(r=\"data-\"+e.replace(H,\"-$&\").toLowerCase(),\"string\"==typeof(n=t.getAttribute(r))){try{n=\"true\"===n||\"false\"!==n&&(\"null\"===n?null:+n+\"\"===n?+n:F.test(n)?k.parseJSON(n):n)}catch(t){}L.set(t,e,n)}else n=void 0;return n}k.extend({hasData:function(t){return L.hasData(t)||W.hasData(t)},data:function(t,e,n){return L.access(t,e,n)},removeData:function(t,e){L.remove(t,e)},_data:function(t,e,n){return W.access(t,e,n)},_removeData:function(t,e){W.remove(t,e)}}),k.fn.extend({data:function(r,t){var e,n,i,o=this[0],s=o&&o.attributes;if(void 0!==r)return\"object\"==typeof r?this.each(function(){L.set(this,r)}):R(this,function(e){var t,n;return o&&void 0===e?void 0!==(t=L.get(o,r)||L.get(o,r.replace(H,\"-$&\").toLowerCase()))?t:(n=k.camelCase(r),void 0!==(t=L.get(o,n))?t:void 0!==(t=B(o,n,void 0))?t:void 0):(n=k.camelCase(r),void this.each(function(){var t=L.get(this,n);L.set(this,n,e),-1<r.indexOf(\"-\")&&void 0!==t&&L.set(this,r,e)}))},null,t,1<arguments.length,null,!0);if(this.length&&(i=L.get(o),1===o.nodeType&&!W.get(o,\"hasDataAttrs\"))){for(e=s.length;e--;)s[e]&&(0===(n=s[e].name).indexOf(\"data-\")&&(n=k.camelCase(n.slice(5)),B(o,n,i[n])));W.set(o,\"hasDataAttrs\",!0)}return i},removeData:function(t){return this.each(function(){L.remove(this,t)})}}),k.extend({queue:function(t,e,n){var r;return t?(e=(e||\"fx\")+\"queue\",r=W.get(t,e),n&&(!r||k.isArray(n)?r=W.access(t,e,k.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(t,e){e=e||\"fx\";var n=k.queue(t,e),r=n.length,i=n.shift(),o=k._queueHooks(t,e);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===e&&n.unshift(\"inprogress\"),delete o.stop,i.call(t,function(){k.dequeue(t,e)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+\"queueHooks\";return W.get(t,n)||W.access(t,n,{empty:k.Callbacks(\"once memory\").add(function(){W.remove(t,[e+\"queue\",n])})})}}),k.fn.extend({queue:function(e,n){var t=2;return\"string\"!=typeof e&&(n=e,e=\"fx\",t--),arguments.length<t?k.queue(this[0],e):void 0===n?this:this.each(function(){var t=k.queue(this,e,n);k._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==t[0]&&k.dequeue(this,e)})},dequeue:function(t){return this.each(function(){k.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||\"fx\",[])},promise:function(t,e){function n(){--i||o.resolveWith(s,[s])}var r,i=1,o=k.Deferred(),s=this,a=this.length;for(\"string\"!=typeof t&&(e=t,t=void 0),t=t||\"fx\";a--;)(r=W.get(s[a],t+\"queueHooks\"))&&r.empty&&(i++,r.empty.add(n));return n(),o.promise(e)}});function q(t,e){return t=e||t,\"none\"===k.css(t,\"display\")||!k.contains(t.ownerDocument,t)}var s=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,z=new RegExp(\"^(?:([+-])=|)(\"+s+\")([a-z%]*)$\",\"i\"),U=[\"Top\",\"Right\",\"Bottom\",\"Left\"];function G(t,e,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:function(){return k.css(t,e,\"\")},u=a(),c=n&&n[3]||(k.cssNumber[e]?\"\":\"px\"),l=(k.cssNumber[e]||\"px\"!==c&&+u)&&z.exec(k.css(t,e));if(l&&l[3]!==c)for(c=c||l[3],n=n||[],l=+u||1;o=o||\".5\",l/=o,k.style(t,e,l+c),o!==(o=a()/u)&&1!==o&&--s;);return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}var V=/^(?:checkbox|radio)$/i,$=/<([\\w:-]+)/,X=/^$|\\/(?:java|ecma)script/i,Y={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function K(t,e){var n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||\"*\"):void 0!==t.querySelectorAll?t.querySelectorAll(e||\"*\"):[];return void 0===e||e&&k.nodeName(t,e)?k.merge([t],n):n}function Q(t,e){for(var n=0,r=t.length;n<r;n++)W.set(t[n],\"globalEval\",!e||W.get(e[n],\"globalEval\"))}Y.optgroup=Y.option,Y.tbody=Y.tfoot=Y.colgroup=Y.caption=Y.thead,Y.th=Y.td;var J=/<|&#?\\w+;/;function Z(t,e,n,r,i){for(var o,s,a,u,c,l=e.createDocumentFragment(),h=[],f=0,p=t.length;f<p;f++)if((o=t[f])||0===o)if(\"object\"===k.type(o))k.merge(h,o.nodeType?[o]:o);else if(J.test(o)){for(s=s||l.appendChild(e.createElement(\"div\")),a=($.exec(o)||[\"\",\"\"])[1].toLowerCase(),a=Y[a]||Y._default,s.innerHTML=a[1]+k.htmlPrefilter(o)+a[2],c=a[0];c--;)s=s.lastChild;k.merge(h,s.childNodes),(s=l.firstChild).textContent=\"\"}else h.push(e.createTextNode(o));for(l.textContent=\"\",f=0;o=h[f++];)if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(u=k.contains(o.ownerDocument,o),s=K(l.appendChild(o),\"script\"),u&&Q(s),n)for(c=0;o=s[c++];)X.test(o.type||\"\")&&n.push(o);return l}n=C.createDocumentFragment().appendChild(C.createElement(\"div\")),(p=C.createElement(\"input\")).setAttribute(\"type\",\"radio\"),p.setAttribute(\"checked\",\"checked\"),p.setAttribute(\"name\",\"t\"),n.appendChild(p),m.checkClone=n.cloneNode(!0).cloneNode(!0).lastChild.checked,n.innerHTML=\"<textarea>x</textarea>\",m.noCloneChecked=!!n.cloneNode(!0).lastChild.defaultValue;var tt=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,nt=/^([^.]*)(?:\\.(.+)|)/;function rt(){return!0}function it(){return!1}function ot(){try{return C.activeElement}catch(t){}}function st(t,e,n,r,i,o){var s,a;if(\"object\"==typeof e){for(a in\"string\"!=typeof n&&(r=r||n,n=void 0),e)st(t,a,n,r,e[a],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=it;else if(!i)return t;return 1===o&&(s=i,(i=function(t){return k().off(t),s.apply(this,arguments)}).guid=s.guid||(s.guid=k.guid++)),t.each(function(){k.event.add(this,e,i,r,n)})}k.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,h,f,p,d=W.get(e);if(d)for(n.handler&&(n=(o=n).handler,i=o.selector),n.guid||(n.guid=k.guid++),(a=d.events)||(a=d.events={}),(s=d.handle)||(s=d.handle=function(t){return void 0!==k&&k.event.triggered!==t.type?k.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||\"\").match(P)||[\"\"]).length;u--;)h=p=(c=nt.exec(t[u])||[])[1],f=(c[2]||\"\").split(\".\").sort(),h&&(l=k.event.special[h]||{},h=(i?l.delegateType:l.bindType)||h,l=k.event.special[h]||{},c=k.extend({type:h,origType:p,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:f.join(\".\")},o),(p=a[h])||((p=a[h]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(e,r,f,s)||e.addEventListener&&e.addEventListener(h,s)),l.add&&(l.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[h]=!0)},remove:function(t,e,n,r,i){var o,s,a,u,c,l,h,f,p,d,g,m=W.hasData(t)&&W.get(t);if(m&&(u=m.events)){for(c=(e=(e||\"\").match(P)||[\"\"]).length;c--;)if(p=g=(a=nt.exec(e[c])||[])[1],d=(a[2]||\"\").split(\".\").sort(),p){for(h=k.event.special[p]||{},f=u[p=(r?h.delegateType:h.bindType)||p]||[],a=a[2]&&new RegExp(\"(^|\\\\.)\"+d.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),s=o=f.length;o--;)l=f[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&(\"**\"!==r||!l.selector)||(f.splice(o,1),l.selector&&f.delegateCount--,h.remove&&h.remove.call(t,l));s&&!f.length&&(h.teardown&&!1!==h.teardown.call(t,d,m.handle)||k.removeEvent(t,p,m.handle),delete u[p])}else for(p in u)k.event.remove(t,p+e[c],n,r,!0);k.isEmptyObject(u)&&W.remove(t,\"handle events\")}},dispatch:function(t){t=k.event.fix(t);var e,n,r,i,o,s=l.call(arguments),a=(W.get(this,\"events\")||{})[t.type]||[],u=k.event.special[t.type]||{};if((s[0]=t).delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,t)){for(o=k.event.handlers.call(this,t,a),e=0;(r=o[e++])&&!t.isPropagationStopped();)for(t.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!t.isImmediatePropagationStopped();)t.rnamespace&&!t.rnamespace.test(i.namespace)||(t.handleObj=i,t.data=i.data,void 0!==(i=((k.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,s))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,t),t.result}},handlers:function(t,e){var n,r,i,o,s=[],a=e.delegateCount,u=t.target;if(a&&u.nodeType&&(\"click\"!==t.type||isNaN(t.button)||t.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||\"click\"!==t.type)){for(r=[],n=0;n<a;n++)void 0===r[i=(o=e[n]).selector+\" \"]&&(r[i]=o.needsContext?-1<k(i,this).index(u):k.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a<e.length&&s.push({elem:this,handlers:e.slice(a)}),s},props:\"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(t,e){return null==t.which&&(t.which=null!=e.charCode?e.charCode:e.keyCode),t}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(t,e){var n,r,i=e.button;return null==t.pageX&&null!=e.clientX&&(n=(r=t.target.ownerDocument||C).documentElement,r=r.body,t.pageX=e.clientX+(n&&n.scrollLeft||r&&r.scrollLeft||0)-(n&&n.clientLeft||r&&r.clientLeft||0),t.pageY=e.clientY+(n&&n.scrollTop||r&&r.scrollTop||0)-(n&&n.clientTop||r&&r.clientTop||0)),t.which||void 0===i||(t.which=1&i?1:2&i?3:4&i?2:0),t}},fix:function(t){if(t[k.expando])return t;var e,n,r,i=t.type,o=t,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=et.test(i)?this.mouseHooks:tt.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,t=new k.Event(o),e=r.length;e--;)t[n=r[e]]=o[n];return t.target||(t.target=C),3===t.target.nodeType&&(t.target=t.target.parentNode),s.filter?s.filter(t,o):t},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ot()&&this.focus?(this.focus(),!1):void 0},delegateType:\"focusin\"},blur:{trigger:function(){return this===ot()&&this.blur?(this.blur(),!1):void 0},delegateType:\"focusout\"},click:{trigger:function(){return\"checkbox\"===this.type&&this.click&&k.nodeName(this,\"input\")?(this.click(),!1):void 0},_default:function(t){return k.nodeName(t.target,\"a\")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},k.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},k.Event=function(t,e){return this instanceof k.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&!1===t.returnValue?rt:it):this.type=t,e&&k.extend(this,e),this.timeStamp=t&&t.timeStamp||k.now(),void(this[k.expando]=!0)):new k.Event(t,e)},k.Event.prototype={constructor:k.Event,isDefaultPrevented:it,isPropagationStopped:it,isImmediatePropagationStopped:it,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=rt,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=rt,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=rt,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},k.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(t,i){k.event.special[t]={delegateType:i,bindType:i,handle:function(t){var e,n=t.relatedTarget,r=t.handleObj;return n&&(n===this||k.contains(this,n))||(t.type=r.origType,e=r.handler.apply(this,arguments),t.type=i),e}}}),k.fn.extend({on:function(t,e,n,r){return st(this,t,e,n,r)},one:function(t,e,n,r){return st(this,t,e,n,r,1)},off:function(t,e,n){var r,i;if(t&&t.preventDefault&&t.handleObj)return r=t.handleObj,k(t.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"!=typeof t)return!1!==e&&\"function\"!=typeof e||(n=e,e=void 0),!1===n&&(n=it),this.each(function(){k.event.remove(this,t,n,e)});for(i in t)this.off(i,e,t[i]);return this}});var at=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,ut=/<script|<style|<link/i,ct=/checked\\s*(?:[^=]|=\\s*.checked.)/i,lt=/^true\\/(.*)/,ht=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function ft(t,e){return k.nodeName(t,\"table\")&&k.nodeName(11!==e.nodeType?e:e.firstChild,\"tr\")?t.getElementsByTagName(\"tbody\")[0]||t.appendChild(t.ownerDocument.createElement(\"tbody\")):t}function pt(t){return t.type=(null!==t.getAttribute(\"type\"))+\"/\"+t.type,t}function dt(t){var e=lt.exec(t.type);return e?t.type=e[1]:t.removeAttribute(\"type\"),t}function gt(t,e){var n,r,i,o,s,a;if(1===e.nodeType){if(W.hasData(t)&&(o=W.access(t),s=W.set(e,o),a=o.events))for(i in delete s.handle,s.events={},a)for(n=0,r=a[i].length;n<r;n++)k.event.add(e,i,a[i][n]);L.hasData(t)&&(t=L.access(t),t=k.extend({},t),L.set(e,t))}}function mt(n,r,i,o){r=g.apply([],r);var t,e,s,a,u,c,l=0,h=n.length,f=h-1,p=r[0],d=k.isFunction(p);if(d||1<h&&\"string\"==typeof p&&!m.checkClone&&ct.test(p))return n.each(function(t){var e=n.eq(t);d&&(r[0]=p.call(this,t,e.html())),mt(e,r,i,o)});if(h&&(e=(t=Z(r,n[0].ownerDocument,!1,n,o)).firstChild,1===t.childNodes.length&&(t=e),e||o)){for(a=(s=k.map(K(t,\"script\"),pt)).length;l<h;l++)u=t,l!==f&&(u=k.clone(u,!0,!0),a&&k.merge(s,K(u,\"script\"))),i.call(n[l],u,l);if(a)for(c=s[s.length-1].ownerDocument,k.map(s,dt),l=0;l<a;l++)u=s[l],X.test(u.type||\"\")&&!W.access(u,\"globalEval\")&&k.contains(c,u)&&(u.src?k._evalUrl&&k._evalUrl(u.src):k.globalEval(u.textContent.replace(ht,\"\")))}return n}function vt(t,e,n){for(var r,i=e?k.filter(e,t):t,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(K(r)),r.parentNode&&(n&&k.contains(r.ownerDocument,r)&&Q(K(r,\"script\")),r.parentNode.removeChild(r));return t}k.extend({htmlPrefilter:function(t){return t.replace(at,\"<$1></$2>\")},clone:function(t,e,n){var r,i,o,s,a,u,c,l=t.cloneNode(!0),h=k.contains(t.ownerDocument,t);if(!(m.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||k.isXMLDoc(t)))for(s=K(l),r=0,i=(o=K(t)).length;r<i;r++)a=o[r],u=s[r],c=void 0,\"input\"===(c=u.nodeName.toLowerCase())&&V.test(a.type)?u.checked=a.checked:\"input\"!==c&&\"textarea\"!==c||(u.defaultValue=a.defaultValue);if(e)if(n)for(o=o||K(t),s=s||K(l),r=0,i=o.length;r<i;r++)gt(o[r],s[r]);else gt(t,l);return 0<(s=K(l,\"script\")).length&&Q(s,!h&&K(t,\"script\")),l},cleanData:function(t){for(var e,n,r,i=k.event.special,o=0;void 0!==(n=t[o]);o++)if(D(n)){if(e=n[W.expando]){if(e.events)for(r in e.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,e.handle);n[W.expando]=void 0}n[L.expando]&&(n[L.expando]=void 0)}}}),k.fn.extend({domManip:mt,detach:function(t){return vt(this,t,!0)},remove:function(t){return vt(this,t)},text:function(t){return R(this,function(t){return void 0===t?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return mt(this,arguments,function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||ft(this,t).appendChild(t)})},prepend:function(){return mt(this,arguments,function(t){var e;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(e=ft(this,t)).insertBefore(t,e.firstChild)})},before:function(){return mt(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return mt(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(k.cleanData(K(t,!1)),t.textContent=\"\");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return k.clone(this,t,e)})},html:function(t){return R(this,function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if(\"string\"==typeof t&&!ut.test(t)&&!Y[($.exec(t)||[\"\",\"\"])[1].toLowerCase()]){t=k.htmlPrefilter(t);try{for(;n<r;n++)1===(e=this[n]||{}).nodeType&&(k.cleanData(K(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var n=[];return mt(this,arguments,function(t){var e=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(K(this)),e&&e.replaceChild(t,this))},n)}}),k.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(t,s){k.fn[t]=function(t){for(var e,n=[],r=k(t),i=r.length-1,o=0;o<=i;o++)e=o===i?this:this.clone(!0),k(r[o])[s](e),a.apply(n,e.get());return this.pushStack(n)}});var yt,bt={HTML:\"block\",BODY:\"block\"};function wt(t,e){t=k(e.createElement(t)).appendTo(e.body),e=k.css(t[0],\"display\");return t.detach(),e}function _t(t){var e=C,n=bt[t];return n||(\"none\"!==(n=wt(t,e))&&n||((e=(yt=(yt||k(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(e.documentElement))[0].contentDocument).write(),e.close(),n=wt(t,e),yt.detach()),bt[t]=n),n}function xt(t,e,n,r){var i,o={};for(i in e)o[i]=t.style[i],t.style[i]=e[i];for(i in r=n.apply(t,r||[]),e)t.style[i]=o[i];return r}var Ct,kt,St,Ot,Et,Tt,At=/^margin/,It=new RegExp(\"^(\"+s+\")(?!px)[a-z%]+$\",\"i\"),jt=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=x),e.getComputedStyle(t)},Pt=C.documentElement;function Nt(){Tt.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",Tt.innerHTML=\"\",Pt.appendChild(Et);var t=x.getComputedStyle(Tt);Ct=\"1%\"!==t.top,Ot=\"2px\"===t.marginLeft,kt=\"4px\"===t.width,Tt.style.marginRight=\"50%\",St=\"4px\"===t.marginRight,Pt.removeChild(Et)}function Dt(t,e,n){var r,i,o=t.style;return\"\"!==(i=(n=n||jt(t))?n.getPropertyValue(e)||n[e]:void 0)&&void 0!==i||k.contains(t.ownerDocument,t)||(i=k.style(t,e)),n&&!m.pixelMarginRight()&&It.test(i)&&At.test(e)&&(r=o.width,t=o.minWidth,e=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=r,o.minWidth=t,o.maxWidth=e),void 0!==i?i+\"\":i}function Rt(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}Et=C.createElement(\"div\"),(Tt=C.createElement(\"div\")).style&&(Tt.style.backgroundClip=\"content-box\",Tt.cloneNode(!0).style.backgroundClip=\"\",m.clearCloneStyle=\"content-box\"===Tt.style.backgroundClip,Et.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",Et.appendChild(Tt),k.extend(m,{pixelPosition:function(){return Nt(),Ct},boxSizingReliable:function(){return null==kt&&Nt(),kt},pixelMarginRight:function(){return null==kt&&Nt(),St},reliableMarginLeft:function(){return null==kt&&Nt(),Ot},reliableMarginRight:function(){var t,e=Tt.appendChild(C.createElement(\"div\"));return e.style.cssText=Tt.style.cssText=\"-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",e.style.marginRight=e.style.width=\"0\",Tt.style.width=\"1px\",Pt.appendChild(Et),t=!parseFloat(x.getComputedStyle(e).marginRight),Pt.removeChild(Et),Tt.removeChild(e),t}}));var Mt=/^(none|table(?!-c[ea]).+)/,Wt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Lt={letterSpacing:\"0\",fontWeight:\"400\"},Ft=[\"Webkit\",\"O\",\"Moz\",\"ms\"],Ht=C.createElement(\"div\").style;function Bt(t){if(t in Ht)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=Ft.length;n--;)if((t=Ft[n]+e)in Ht)return t}function qt(t,e,n){var r=z.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):e}function zt(t,e,n,r,i){for(var o=n===(r?\"border\":\"content\")?4:\"width\"===e?1:0,s=0;o<4;o+=2)\"margin\"===n&&(s+=k.css(t,n+U[o],!0,i)),r?(\"content\"===n&&(s-=k.css(t,\"padding\"+U[o],!0,i)),\"margin\"!==n&&(s-=k.css(t,\"border\"+U[o]+\"Width\",!0,i))):(s+=k.css(t,\"padding\"+U[o],!0,i),\"padding\"!==n&&(s+=k.css(t,\"border\"+U[o]+\"Width\",!0,i)));return s}function Ut(t,e,n){var r=!0,i=\"width\"===e?t.offsetWidth:t.offsetHeight,o=jt(t),s=\"border-box\"===k.css(t,\"boxSizing\",!1,o);if(i<=0||null==i){if(((i=Dt(t,e,o))<0||null==i)&&(i=t.style[e]),It.test(i))return i;r=s&&(m.boxSizingReliable()||i===t.style[e]),i=parseFloat(i)||0}return i+zt(t,e,n||(s?\"border\":\"content\"),r,o)+\"px\"}function Gt(t,e){for(var n,r,i,o=[],s=0,a=t.length;s<a;s++)(r=t[s]).style&&(o[s]=W.get(r,\"olddisplay\"),n=r.style.display,e?(o[s]||\"none\"!==n||(r.style.display=\"\"),\"\"===r.style.display&&q(r)&&(o[s]=W.access(r,\"olddisplay\",_t(r.nodeName)))):(i=q(r),\"none\"===n&&i||W.set(r,\"olddisplay\",i?n:k.css(r,\"display\"))));for(s=0;s<a;s++)(r=t[s]).style&&(e&&\"none\"!==r.style.display&&\"\"!==r.style.display||(r.style.display=e?o[s]||\"\":\"none\"));return t}function Vt(t,e,n,r,i){return new Vt.prototype.init(t,e,n,r,i)}k.extend({cssHooks:{opacity:{get:function(t,e){if(e){t=Dt(t,\"opacity\");return\"\"===t?\"1\":t}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:\"cssFloat\"},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,o,s,a=k.camelCase(e),u=t.style;return e=k.cssProps[a]||(k.cssProps[a]=Bt(a)||a),s=k.cssHooks[e]||k.cssHooks[a],void 0===n?s&&\"get\"in s&&void 0!==(i=s.get(t,!1,r))?i:u[e]:(\"string\"===(o=typeof n)&&(i=z.exec(n))&&i[1]&&(n=G(t,e,i),o=\"number\"),void(null!=n&&n==n&&(\"number\"===o&&(n+=i&&i[3]||(k.cssNumber[a]?\"\":\"px\")),m.clearCloneStyle||\"\"!==n||0!==e.indexOf(\"background\")||(u[e]=\"inherit\"),s&&\"set\"in s&&void 0===(n=s.set(t,n,r))||(u[e]=n))))}},css:function(t,e,n,r){var i,o=k.camelCase(e);return e=k.cssProps[o]||(k.cssProps[o]=Bt(o)||o),(o=k.cssHooks[e]||k.cssHooks[o])&&\"get\"in o&&(i=o.get(t,!0,n)),void 0===i&&(i=Dt(t,e,r)),\"normal\"===i&&e in Lt&&(i=Lt[e]),\"\"===n||n?(e=parseFloat(i),!0===n||isFinite(e)?e||0:i):i}}),k.each([\"height\",\"width\"],function(t,o){k.cssHooks[o]={get:function(t,e,n){return e?Mt.test(k.css(t,\"display\"))&&0===t.offsetWidth?xt(t,Wt,function(){return Ut(t,o,n)}):Ut(t,o,n):void 0},set:function(t,e,n){var r,i=n&&jt(t),i=n&&zt(t,o,n,\"border-box\"===k.css(t,\"boxSizing\",!1,i),i);return i&&(r=z.exec(e))&&\"px\"!==(r[3]||\"px\")&&(t.style[o]=e,e=k.css(t,o)),qt(0,e,i)}}}),k.cssHooks.marginLeft=Rt(m.reliableMarginLeft,function(t,e){return e?(parseFloat(Dt(t,\"marginLeft\"))||t.getBoundingClientRect().left-xt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+\"px\":void 0}),k.cssHooks.marginRight=Rt(m.reliableMarginRight,function(t,e){return e?xt(t,{display:\"inline-block\"},Dt,[t,\"marginRight\"]):void 0}),k.each({margin:\"\",padding:\"\",border:\"Width\"},function(i,o){k.cssHooks[i+o]={expand:function(t){for(var e=0,n={},r=\"string\"==typeof t?t.split(\" \"):[t];e<4;e++)n[i+U[e]+o]=r[e]||r[e-2]||r[0];return n}},At.test(i)||(k.cssHooks[i+o].set=qt)}),k.fn.extend({css:function(t,e){return R(this,function(t,e,n){var r,i,o={},s=0;if(k.isArray(e)){for(r=jt(t),i=e.length;s<i;s++)o[e[s]]=k.css(t,e[s],!1,r);return o}return void 0!==n?k.style(t,e,n):k.css(t,e)},t,e,1<arguments.length)},show:function(){return Gt(this,!0)},hide:function(){return Gt(this)},toggle:function(t){return\"boolean\"==typeof t?t?this.show():this.hide():this.each(function(){q(this)?k(this).show():k(this).hide()})}}),(k.Tween=Vt).prototype={constructor:Vt,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||k.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?\"\":\"px\")},cur:function(){var t=Vt.propHooks[this.prop];return(t&&t.get?t:Vt.propHooks._default).get(this)},run:function(t){var e,n=Vt.propHooks[this.prop];return this.options.duration?this.pos=e=k.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),(n&&n.set?n:Vt.propHooks._default).set(this),this}},Vt.prototype.init.prototype=Vt.prototype,Vt.propHooks={_default:{get:function(t){return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(t=k.css(t.elem,t.prop,\"\"))&&\"auto\"!==t?t:0},set:function(t){k.fx.step[t.prop]?k.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[k.cssProps[t.prop]]&&!k.cssHooks[t.prop]?t.elem[t.prop]=t.now:k.style(t.elem,t.prop,t.now+t.unit)}}},Vt.propHooks.scrollTop=Vt.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},k.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:\"swing\"},k.fx=Vt.prototype.init,k.fx.step={};var $t,Xt,Yt=/^(?:toggle|show|hide)$/,Kt=/queueHooks$/;function Qt(){return x.setTimeout(function(){$t=void 0}),$t=k.now()}function Jt(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)i[\"margin\"+(n=U[r])]=i[\"padding\"+n]=t;return e&&(i.opacity=i.width=t),i}function Zt(t,e,n){for(var r,i=(te.tweeners[e]||[]).concat(te.tweeners[\"*\"]),o=0,s=i.length;o<s;o++)if(r=i[o].call(n,e,t))return r}function te(i,t,e){var n,o,r=0,s=te.prefilters.length,a=k.Deferred().always(function(){delete u.elem}),u=function(){if(o)return!1;for(var t=$t||Qt(),t=Math.max(0,c.startTime+c.duration-t),e=1-(t/c.duration||0),n=0,r=c.tweens.length;n<r;n++)c.tweens[n].run(e);return a.notifyWith(i,[c,e,t]),e<1&&r?t:(a.resolveWith(i,[c]),!1)},c=a.promise({elem:i,props:k.extend({},t),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},e),originalProperties:t,originalOptions:e,startTime:$t||Qt(),duration:e.duration,tweens:[],createTween:function(t,e){t=k.Tween(i,c.opts,t,e,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(t),t},stop:function(t){var e=0,n=t?c.tweens.length:0;if(o)return this;for(o=!0;e<n;e++)c.tweens[e].run(1);return t?(a.notifyWith(i,[c,1,0]),a.resolveWith(i,[c,t])):a.rejectWith(i,[c,t]),this}}),l=c.props;for(function(t,e){var n,r,i,o,s;for(n in t)if(r=k.camelCase(n),i=e[r],o=t[n],k.isArray(o)&&(i=o[1],o=t[n]=o[0]),n!==r&&(t[r]=o,delete t[n]),s=k.cssHooks[r],s&&\"expand\"in s)for(n in o=s.expand(o),delete t[r],o)n in t||(t[n]=o[n],e[n]=i);else e[r]=i}(l,c.opts.specialEasing);r<s;r++)if(n=te.prefilters[r].call(c,i,l,c.opts))return k.isFunction(n.stop)&&(k._queueHooks(c.elem,c.opts.queue).stop=k.proxy(n.stop,n)),n;return k.map(l,Zt,c),k.isFunction(c.opts.start)&&c.opts.start.call(i,c),k.fx.timer(k.extend(u,{elem:i,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}k.Animation=k.extend(te,{tweeners:{\"*\":[function(t,e){var n=this.createTween(t,e);return G(n.elem,t,z.exec(e),n),n}]},tweener:function(t,e){for(var n,r=0,i=(t=k.isFunction(t)?(e=t,[\"*\"]):t.match(P)).length;r<i;r++)n=t[r],te.tweeners[n]=te.tweeners[n]||[],te.tweeners[n].unshift(e)},prefilters:[function(e,t,n){var r,i,o,s,a,u,c,l=this,h={},f=e.style,p=e.nodeType&&q(e),d=W.get(e,\"fxshow\");for(r in n.queue||(null==(a=k._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,k.queue(e,\"fx\").length||a.empty.fire()})})),1===e.nodeType&&(\"height\"in t||\"width\"in t)&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],\"inline\"===(\"none\"===(c=k.css(e,\"display\"))?W.get(e,\"olddisplay\")||_t(e.nodeName):c)&&\"none\"===k.css(e,\"float\")&&(f.display=\"inline-block\")),n.overflow&&(f.overflow=\"hidden\",l.always(function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]})),t)if(i=t[r],Yt.exec(i)){if(delete t[r],o=o||\"toggle\"===i,i===(p?\"hide\":\"show\")){if(\"show\"!==i||!d||void 0===d[r])continue;p=!0}h[r]=d&&d[r]||k.style(e,r)}else c=void 0;if(k.isEmptyObject(h))\"inline\"===(\"none\"===c?_t(e.nodeName):c)&&(f.display=c);else for(r in d?\"hidden\"in d&&(p=d.hidden):d=W.access(e,\"fxshow\",{}),o&&(d.hidden=!p),p?k(e).show():l.done(function(){k(e).hide()}),l.done(function(){for(var t in W.remove(e,\"fxshow\"),h)k.style(e,t,h[t])}),h)s=Zt(p?d[r]:0,r,l),r in d||(d[r]=s.start,p&&(s.end=s.start,s.start=\"width\"===r||\"height\"===r?1:0))}],prefilter:function(t,e){e?te.prefilters.unshift(t):te.prefilters.push(t)}}),k.speed=function(t,e,n){var r=t&&\"object\"==typeof t?k.extend({},t):{complete:n||!n&&e||k.isFunction(t)&&t,duration:t,easing:n&&e||e&&!k.isFunction(e)&&e};return r.duration=k.fx.off?0:\"number\"==typeof r.duration?r.duration:r.duration in k.fx.speeds?k.fx.speeds[r.duration]:k.fx.speeds._default,null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){k.isFunction(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(t,e,n,r){return this.filter(q).css(\"opacity\",0).show().end().animate({opacity:e},t,n,r)},animate:function(e,t,n,r){var i=k.isEmptyObject(e),o=k.speed(t,n,r),r=function(){var t=te(this,k.extend({},e),o);(i||W.get(this,\"finish\"))&&t.stop(!0)};return r.finish=r,i||!1===o.queue?this.each(r):this.queue(o.queue,r)},stop:function(i,t,o){function s(t){var e=t.stop;delete t.stop,e(o)}return\"string\"!=typeof i&&(o=t,t=i,i=void 0),t&&!1!==i&&this.queue(i||\"fx\",[]),this.each(function(){var t=!0,e=null!=i&&i+\"queueHooks\",n=k.timers,r=W.get(this);if(e)r[e]&&r[e].stop&&s(r[e]);else for(e in r)r[e]&&r[e].stop&&Kt.test(e)&&s(r[e]);for(e=n.length;e--;)n[e].elem!==this||null!=i&&n[e].queue!==i||(n[e].anim.stop(o),t=!1,n.splice(e,1));!t&&o||k.dequeue(this,i)})},finish:function(s){return!1!==s&&(s=s||\"fx\"),this.each(function(){var t,e=W.get(this),n=e[s+\"queue\"],r=e[s+\"queueHooks\"],i=k.timers,o=n?n.length:0;for(e.finish=!0,k.queue(this,s,[]),r&&r.stop&&r.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===s&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;t<o;t++)n[t]&&n[t].finish&&n[t].finish.call(this);delete e.finish})}}),k.each([\"toggle\",\"show\",\"hide\"],function(t,r){var i=k.fn[r];k.fn[r]=function(t,e,n){return null==t||\"boolean\"==typeof t?i.apply(this,arguments):this.animate(Jt(r,!0),t,e,n)}}),k.each({slideDown:Jt(\"show\"),slideUp:Jt(\"hide\"),slideToggle:Jt(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(t,r){k.fn[t]=function(t,e,n){return this.animate(r,t,e,n)}}),k.timers=[],k.fx.tick=function(){var t,e=0,n=k.timers;for($t=k.now();e<n.length;e++)(t=n[e])()||n[e]!==t||n.splice(e--,1);n.length||k.fx.stop(),$t=void 0},k.fx.timer=function(t){k.timers.push(t),t()?k.fx.start():k.timers.pop()},k.fx.interval=13,k.fx.start=function(){Xt=Xt||x.setInterval(k.fx.tick,k.fx.interval)},k.fx.stop=function(){x.clearInterval(Xt),Xt=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,t){return r=k.fx&&k.fx.speeds[r]||r,t=t||\"fx\",this.queue(t,function(t,e){var n=x.setTimeout(t,r);e.stop=function(){x.clearTimeout(n)}})},p=C.createElement(\"input\"),n=C.createElement(\"select\"),s=n.appendChild(C.createElement(\"option\")),p.type=\"checkbox\",m.checkOn=\"\"!==p.value,m.optSelected=s.selected,n.disabled=!0,m.optDisabled=!s.disabled,(p=C.createElement(\"input\")).value=\"t\",p.type=\"radio\",m.radioValue=\"t\"===p.value;var ee,ne=k.expr.attrHandle;k.fn.extend({attr:function(t,e){return R(this,k.attr,t,e,1<arguments.length)},removeAttr:function(t){return this.each(function(){k.removeAttr(this,t)})}}),k.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?k.prop(t,e,n):(1===o&&k.isXMLDoc(t)||(e=e.toLowerCase(),i=k.attrHooks[e]||(k.expr.match.bool.test(e)?ee:void 0)),void 0!==n?null===n?void k.removeAttr(t,e):i&&\"set\"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(t,e))?r:null==(r=k.find.attr(t,e))?void 0:r)},attrHooks:{type:{set:function(t,e){if(!m.radioValue&&\"radio\"===e&&k.nodeName(t,\"input\")){var n=t.value;return t.setAttribute(\"type\",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r,i=0,o=e&&e.match(P);if(o&&1===t.nodeType)for(;n=o[i++];)r=k.propFix[n]||n,k.expr.match.bool.test(n)&&(t[r]=!1),t.removeAttribute(n)}}),ee={set:function(t,e,n){return!1===e?k.removeAttr(t,n):t.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\\w+/g),function(t,e){var o=ne[e]||k.find.attr;ne[e]=function(t,e,n){var r,i;return n||(i=ne[e],ne[e]=r,r=null!=o(t,e,n)?e.toLowerCase():null,ne[e]=i),r}});var re=/^(?:input|select|textarea|button)$/i,ie=/^(?:a|area)$/i;k.fn.extend({prop:function(t,e){return R(this,k.prop,t,e,1<arguments.length)},removeProp:function(t){return this.each(function(){delete this[k.propFix[t]||t]})}}),k.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(t)||(e=k.propFix[e]||e,i=k.propHooks[e]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&\"get\"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=k.find.attr(t,\"tabindex\");return e?parseInt(e,10):re.test(t.nodeName)||ie.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),m.optSelected||(k.propHooks.selected={get:function(t){t=t.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(t){t=t.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){k.propFix[this.toLowerCase()]=this});var oe=/[\\t\\r\\n\\f]/g;function se(t){return t.getAttribute&&t.getAttribute(\"class\")||\"\"}k.fn.extend({addClass:function(e){var t,n,r,i,o,s,a=0;if(k.isFunction(e))return this.each(function(t){k(this).addClass(e.call(this,t,se(this)))});if(\"string\"==typeof e&&e)for(t=e.match(P)||[];n=this[a++];)if(s=se(n),r=1===n.nodeType&&(\" \"+s+\" \").replace(oe,\" \")){for(o=0;i=t[o++];)r.indexOf(\" \"+i+\" \")<0&&(r+=i+\" \");s!==(s=k.trim(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,s,a=0;if(k.isFunction(e))return this.each(function(t){k(this).removeClass(e.call(this,t,se(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof e&&e)for(t=e.match(P)||[];n=this[a++];)if(s=se(n),r=1===n.nodeType&&(\" \"+s+\" \").replace(oe,\" \")){for(o=0;i=t[o++];)for(;-1<r.indexOf(\" \"+i+\" \");)r=r.replace(\" \"+i+\" \",\" \");s!==(s=k.trim(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(i,e){var o=typeof i;return\"boolean\"==typeof e&&\"string\"==o?e?this.addClass(i):this.removeClass(i):k.isFunction(i)?this.each(function(t){k(this).toggleClass(i.call(this,t,se(this),e),e)}):this.each(function(){var t,e,n,r;if(\"string\"==o)for(e=0,n=k(this),r=i.match(P)||[];t=r[e++];)n.hasClass(t)?n.removeClass(t):n.addClass(t);else void 0!==i&&\"boolean\"!=o||((t=se(this))&&W.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",!t&&!1!==i&&W.get(this,\"__className__\")||\"\"))})},hasClass:function(t){for(var e,n=0,r=\" \"+t+\" \";e=this[n++];)if(1===e.nodeType&&-1<(\" \"+se(e)+\" \").replace(oe,\" \").indexOf(r))return!0;return!1}});var ae=/\\r/g,ue=/[\\x20\\t\\r\\n\\f]+/g;k.fn.extend({val:function(e){var n,t,r,i=this[0];return arguments.length?(r=k.isFunction(e),this.each(function(t){1===this.nodeType&&(null==(t=r?e.call(this,t,k(this).val()):e)?t=\"\":\"number\"==typeof t?t+=\"\":k.isArray(t)&&(t=k.map(t,function(t){return null==t?\"\":t+\"\"})),(n=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&\"set\"in n&&void 0!==n.set(this,t,\"value\")||(this.value=t))})):i?(n=k.valHooks[i.type]||k.valHooks[i.nodeName.toLowerCase()])&&\"get\"in n&&void 0!==(t=n.get(i,\"value\"))?t:\"string\"==typeof(t=i.value)?t.replace(ae,\"\"):null==t?\"\":t:void 0}}),k.extend({valHooks:{option:{get:function(t){var e=k.find.attr(t,\"value\");return null!=e?e:k.trim(k.text(t)).replace(ue,\" \")}},select:{get:function(t){for(var e,n=t.options,r=t.selectedIndex,i=\"select-one\"===t.type||r<0,o=i?null:[],s=i?r+1:n.length,a=r<0?s:i?r:0;a<s;a++)if(((e=n[a]).selected||a===r)&&(m.optDisabled?!e.disabled:null===e.getAttribute(\"disabled\"))&&(!e.parentNode.disabled||!k.nodeName(e.parentNode,\"optgroup\"))){if(e=k(e).val(),i)return e;o.push(e)}return o},set:function(t,e){for(var n,r,i=t.options,o=k.makeArray(e),s=i.length;s--;)((r=i[s]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),k.each([\"radio\",\"checkbox\"],function(){k.valHooks[this]={set:function(t,e){return k.isArray(e)?t.checked=-1<k.inArray(k(t).val(),e):void 0}},m.checkOn||(k.valHooks[this].get=function(t){return null===t.getAttribute(\"value\")?\"on\":t.value})});var ce=/^(?:focusinfocus|focusoutblur)$/;k.extend(k.event,{trigger:function(t,e,n,r){var i,o,s,a,u,c,l=[n||C],h=d.call(t,\"type\")?t.type:t,f=d.call(t,\"namespace\")?t.namespace.split(\".\"):[],p=o=n=n||C;if(3!==n.nodeType&&8!==n.nodeType&&!ce.test(h+k.event.triggered)&&(-1<h.indexOf(\".\")&&(h=(f=h.split(\".\")).shift(),f.sort()),a=h.indexOf(\":\")<0&&\"on\"+h,(t=t[k.expando]?t:new k.Event(h,\"object\"==typeof t&&t)).isTrigger=r?2:3,t.namespace=f.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+f.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:k.makeArray(e,[t]),c=k.event.special[h]||{},r||!c.trigger||!1!==c.trigger.apply(n,e))){if(!r&&!c.noBubble&&!k.isWindow(n)){for(s=c.delegateType||h,ce.test(s+h)||(p=p.parentNode);p;p=p.parentNode)l.push(p),o=p;o===(n.ownerDocument||C)&&l.push(o.defaultView||o.parentWindow||x)}for(i=0;(p=l[i++])&&!t.isPropagationStopped();)t.type=1<i?s:c.bindType||h,(u=(W.get(p,\"events\")||{})[t.type]&&W.get(p,\"handle\"))&&u.apply(p,e),(u=a&&p[a])&&u.apply&&D(p)&&(t.result=u.apply(p,e),!1===t.result&&t.preventDefault());return t.type=h,r||t.isDefaultPrevented()||c._default&&!1!==c._default.apply(l.pop(),e)||!D(n)||a&&k.isFunction(n[h])&&!k.isWindow(n)&&((o=n[a])&&(n[a]=null),n[k.event.triggered=h](),k.event.triggered=void 0,o&&(n[a]=o)),t.result}},simulate:function(t,e,n){t=k.extend(new k.Event,n,{type:t,isSimulated:!0});k.event.trigger(t,null,e)}}),k.fn.extend({trigger:function(t,e){return this.each(function(){k.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];return n?k.event.trigger(t,e,n,!0):void 0}}),k.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(t,n){k.fn[n]=function(t,e){return 0<arguments.length?this.on(n,null,t,e):this.trigger(n)}}),k.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),m.focusin=\"onfocusin\"in x,m.focusin||k.each({focus:\"focusin\",blur:\"focusout\"},function(n,r){function i(t){k.event.simulate(r,t.target,k.event.fix(t))}k.event.special[r]={setup:function(){var t=this.ownerDocument||this,e=W.access(t,r);e||t.addEventListener(n,i,!0),W.access(t,r,(e||0)+1)},teardown:function(){var t=this.ownerDocument||this,e=W.access(t,r)-1;e?W.access(t,r,e):(t.removeEventListener(n,i,!0),W.remove(t,r))}}});var le=x.location,he=k.now(),fe=/\\?/;k.parseJSON=function(t){return JSON.parse(t+\"\")},k.parseXML=function(t){var e;if(!t||\"string\"!=typeof t)return null;try{e=(new x.DOMParser).parseFromString(t,\"text/xml\")}catch(t){e=void 0}return e&&!e.getElementsByTagName(\"parsererror\").length||k.error(\"Invalid XML: \"+t),e};var pe=/#.*$/,de=/([?&])_=[^&]*/,ge=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,me=/^(?:GET|HEAD)$/,ve=/^\\/\\//,ye={},be={},we=\"*/\".concat(\"*\"),_e=C.createElement(\"a\");function xe(o){return function(t,e){\"string\"!=typeof t&&(e=t,t=\"*\");var n,r=0,i=t.toLowerCase().match(P)||[];if(k.isFunction(e))for(;n=i[r++];)\"+\"===n[0]?(n=n.slice(1)||\"*\",(o[n]=o[n]||[]).unshift(e)):(o[n]=o[n]||[]).push(e)}}function Ce(e,r,i,o){var s={},a=e===be;function u(t){var n;return s[t]=!0,k.each(e[t]||[],function(t,e){e=e(r,i,o);return\"string\"!=typeof e||a||s[e]?a?!(n=e):void 0:(r.dataTypes.unshift(e),u(e),!1)}),n}return u(r.dataTypes[0])||!s[\"*\"]&&u(\"*\")}function ke(t,e){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r=r||{})[n]=e[n]);return r&&k.extend(!0,t,r),t}_e.href=le.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:le.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(le.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":we,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":k.parseJSON,\"text xml\":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?ke(ke(t,k.ajaxSettings),e):ke(k.ajaxSettings,t)},ajaxPrefilter:xe(ye),ajaxTransport:xe(be),ajax:function(t,e){\"object\"==typeof t&&(e=t,t=void 0),e=e||{};var u,c,l,n,h,r,f,i,p=k.ajaxSetup({},e),d=p.context||p,g=p.context&&(d.nodeType||d.jquery)?k(d):k.event,m=k.Deferred(),v=k.Callbacks(\"once memory\"),y=p.statusCode||{},o={},s={},b=0,a=\"canceled\",w={readyState:0,getResponseHeader:function(t){var e;if(2===b){if(!n)for(n={};e=ge.exec(l);)n[e[1].toLowerCase()]=e[2];e=n[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return 2===b?l:null},setRequestHeader:function(t,e){var n=t.toLowerCase();return b||(t=s[n]=s[n]||t,o[t]=e),this},overrideMimeType:function(t){return b||(p.mimeType=t),this},statusCode:function(t){if(t)if(b<2)for(var e in t)y[e]=[y[e],t[e]];else w.always(t[w.status]);return this},abort:function(t){t=t||a;return u&&u.abort(t),_(0,t),this}};if(m.promise(w).complete=v.add,w.success=w.done,w.error=w.fail,p.url=((t||p.url||le.href)+\"\").replace(pe,\"\").replace(ve,le.protocol+\"//\"),p.type=e.method||e.type||p.method||p.type,p.dataTypes=k.trim(p.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==p.crossDomain){r=C.createElement(\"a\");try{r.href=p.url,r.href=r.href,p.crossDomain=_e.protocol+\"//\"+_e.host!=r.protocol+\"//\"+r.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&\"string\"!=typeof p.data&&(p.data=k.param(p.data,p.traditional)),Ce(ye,p,e,w),2===b)return w;for(i in(f=k.event&&p.global)&&0==k.active++&&k.event.trigger(\"ajaxStart\"),p.type=p.type.toUpperCase(),p.hasContent=!me.test(p.type),c=p.url,p.hasContent||(p.data&&(c=p.url+=(fe.test(c)?\"&\":\"?\")+p.data,delete p.data),!1===p.cache&&(p.url=de.test(c)?c.replace(de,\"$1_=\"+he++):c+(fe.test(c)?\"&\":\"?\")+\"_=\"+he++)),p.ifModified&&(k.lastModified[c]&&w.setRequestHeader(\"If-Modified-Since\",k.lastModified[c]),k.etag[c]&&w.setRequestHeader(\"If-None-Match\",k.etag[c])),(p.data&&p.hasContent&&!1!==p.contentType||e.contentType)&&w.setRequestHeader(\"Content-Type\",p.contentType),w.setRequestHeader(\"Accept\",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+(\"*\"!==p.dataTypes[0]?\", \"+we+\"; q=0.01\":\"\"):p.accepts[\"*\"]),p.headers)w.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(!1===p.beforeSend.call(d,w,p)||2===b))return w.abort();for(i in a=\"abort\",{success:1,error:1,complete:1})w[i](p[i]);if(u=Ce(be,p,e,w)){if(w.readyState=1,f&&g.trigger(\"ajaxSend\",[w,p]),2===b)return w;p.async&&0<p.timeout&&(h=x.setTimeout(function(){w.abort(\"timeout\")},p.timeout));try{b=1,u.send(o,_)}catch(t){if(!(b<2))throw t;_(-1,t)}}else _(-1,\"No Transport\");function _(t,e,n,r){var i,o,s,a=e;2!==b&&(b=2,h&&x.clearTimeout(h),u=void 0,l=r||\"\",w.readyState=0<t?4:0,r=200<=t&&t<300||304===t,n&&(s=function(t,e,n){for(var r,i,o,s,a=t.contents,u=t.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader(\"Content-Type\"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||t.converters[i+\" \"+u[0]]){o=i;break}s=s||i}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):void 0}(p,w,n)),s=function(t,e,n,r){var i,o,s,a,u,c={},l=t.dataTypes.slice();if(l[1])for(s in t.converters)c[s.toLowerCase()]=t.converters[s];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!u&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),u=o,o=l.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(s=c[u+\" \"+o]||c[\"* \"+o]))for(i in c)if(a=i.split(\" \"),a[1]===o&&(s=c[u+\" \"+a[0]]||c[\"* \"+a[0]])){!0===s?s=c[i]:!0!==c[i]&&(o=a[0],l.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:\"parsererror\",error:s?t:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:e}}(p,s,w,r),r?(p.ifModified&&((n=w.getResponseHeader(\"Last-Modified\"))&&(k.lastModified[c]=n),(n=w.getResponseHeader(\"etag\"))&&(k.etag[c]=n)),204===t||\"HEAD\"===p.type?a=\"nocontent\":304===t?a=\"notmodified\":(a=s.state,i=s.data,r=!(o=s.error))):(o=a,!t&&a||(a=\"error\",t<0&&(t=0))),w.status=t,w.statusText=(e||a)+\"\",r?m.resolveWith(d,[i,a,w]):m.rejectWith(d,[w,a,o]),w.statusCode(y),y=void 0,f&&g.trigger(r?\"ajaxSuccess\":\"ajaxError\",[w,p,r?i:o]),v.fireWith(d,[w,a]),f&&(g.trigger(\"ajaxComplete\",[w,p]),--k.active||k.event.trigger(\"ajaxStop\")))}return w},getJSON:function(t,e,n){return k.get(t,e,n,\"json\")},getScript:function(t,e){return k.get(t,void 0,e,\"script\")}}),k.each([\"get\",\"post\"],function(t,i){k[i]=function(t,e,n,r){return k.isFunction(e)&&(r=r||n,n=e,e=void 0),k.ajax(k.extend({url:t,type:i,dataType:r,data:e,success:n},k.isPlainObject(t)&&t))}}),k._evalUrl=function(t){return k.ajax({url:t,type:\"GET\",dataType:\"script\",async:!1,global:!1,throws:!0})},k.fn.extend({wrapAll:function(e){var t;return k.isFunction(e)?this.each(function(t){k(this).wrapAll(e.call(this,t))}):(this[0]&&(t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this)},wrapInner:function(n){return k.isFunction(n)?this.each(function(t){k(this).wrapInner(n.call(this,t))}):this.each(function(){var t=k(this),e=t.contents();e.length?e.wrapAll(n):t.append(n)})},wrap:function(e){var n=k.isFunction(e);return this.each(function(t){k(this).wrapAll(n?e.call(this,t):e)})},unwrap:function(){return this.parent().each(function(){k.nodeName(this,\"body\")||k(this).replaceWith(this.childNodes)}).end()}}),k.expr.filters.hidden=function(t){return!k.expr.filters.visible(t)},k.expr.filters.visible=function(t){return 0<t.offsetWidth||0<t.offsetHeight||0<t.getClientRects().length};var Se=/%20/g,Oe=/\\[\\]$/,Ee=/\\r?\\n/g,Te=/^(?:submit|button|image|reset|file)$/i,Ae=/^(?:input|select|textarea|keygen)/i;k.param=function(t,e){function n(t,e){e=k.isFunction(e)?e():null==e?\"\":e,i[i.length]=encodeURIComponent(t)+\"=\"+encodeURIComponent(e)}var r,i=[];if(void 0===e&&(e=k.ajaxSettings&&k.ajaxSettings.traditional),k.isArray(t)||t.jquery&&!k.isPlainObject(t))k.each(t,function(){n(this.name,this.value)});else for(r in t)!function n(r,t,i,o){if(k.isArray(t))k.each(t,function(t,e){i||Oe.test(r)?o(r,e):n(r+\"[\"+(\"object\"==typeof e&&null!=e?t:\"\")+\"]\",e,i,o)});else if(i||\"object\"!==k.type(t))o(r,t);else for(var e in t)n(r+\"[\"+e+\"]\",t[e],i,o)}(r,t[r],e,n);return i.join(\"&\").replace(Se,\"+\")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=k.prop(this,\"elements\");return t?k.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!k(this).is(\":disabled\")&&Ae.test(this.nodeName)&&!Te.test(t)&&(this.checked||!V.test(t))}).map(function(t,e){var n=k(this).val();return null==n?null:k.isArray(n)?k.map(n,function(t){return{name:e.name,value:t.replace(Ee,\"\\r\\n\")}}):{name:e.name,value:n.replace(Ee,\"\\r\\n\")}}).get()}}),k.ajaxSettings.xhr=function(){try{return new x.XMLHttpRequest}catch(t){}};var Ie={0:200,1223:204},je=k.ajaxSettings.xhr();m.cors=!!je&&\"withCredentials\"in je,m.ajax=je=!!je,k.ajaxTransport(function(i){var o,s;return m.cors||je&&!i.crossDomain?{send:function(t,e){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||t[\"X-Requested-With\"]||(t[\"X-Requested-With\"]=\"XMLHttpRequest\"),t)r.setRequestHeader(n,t[n]);o=function(t){return function(){o&&(o=s=r.onload=r.onerror=r.onabort=r.onreadystatechange=null,\"abort\"===t?r.abort():\"error\"===t?\"number\"!=typeof r.status?e(0,\"error\"):e(r.status,r.statusText):e(Ie[r.status]||r.status,r.statusText,\"text\"!==(r.responseType||\"text\")||\"string\"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),s=r.onerror=o(\"error\"),void 0!==r.onabort?r.onabort=s:r.onreadystatechange=function(){4===r.readyState&&x.setTimeout(function(){o&&s()})},o=o(\"abort\");try{r.send(i.hasContent&&i.data||null)}catch(t){if(o)throw t}},abort:function(){o&&o()}}:void 0}),k.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(t){return k.globalEval(t),t}}}),k.ajaxPrefilter(\"script\",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type=\"GET\")}),k.ajaxTransport(\"script\",function(n){var r,i;if(n.crossDomain)return{send:function(t,e){r=k(\"<script>\").prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(t){r.remove(),i=null,t&&e(\"error\"===t.type?404:200,t.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Pe=[],Ne=/(=)\\?(?=&|$)|\\?\\?/;k.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var t=Pe.pop()||k.expando+\"_\"+he++;return this[t]=!0,t}}),k.ajaxPrefilter(\"json jsonp\",function(t,e,n){var r,i,o,s=!1!==t.jsonp&&(Ne.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ne.test(t.data)&&\"data\");return s||\"jsonp\"===t.dataTypes[0]?(r=t.jsonpCallback=k.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Ne,\"$1\"+r):!1!==t.jsonp&&(t.url+=(fe.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+r),t.converters[\"script json\"]=function(){return o||k.error(r+\" was not called\"),o[0]},t.dataTypes[0]=\"json\",i=x[r],x[r]=function(){o=arguments},n.always(function(){void 0===i?k(x).removeProp(r):x[r]=i,t[r]&&(t.jsonpCallback=e.jsonpCallback,Pe.push(r)),o&&k.isFunction(i)&&i(o[0]),o=i=void 0}),\"script\"):void 0}),k.parseHTML=function(t,e,n){if(!t||\"string\"!=typeof t)return null;\"boolean\"==typeof e&&(n=e,e=!1),e=e||C;var r=w.exec(t),n=!n&&[];return r?[e.createElement(r[1])]:(r=Z([t],e,n),n&&n.length&&k(n).remove(),k.merge([],r.childNodes))};var De=k.fn.load;function Re(t){return k.isWindow(t)?t:9===t.nodeType&&t.defaultView}k.fn.load=function(t,e,n){if(\"string\"!=typeof t&&De)return De.apply(this,arguments);var r,i,o,s=this,a=t.indexOf(\" \");return-1<a&&(r=k.trim(t.slice(a)),t=t.slice(0,a)),k.isFunction(e)?(n=e,e=void 0):e&&\"object\"==typeof e&&(i=\"POST\"),0<s.length&&k.ajax({url:t,type:i||\"GET\",dataType:\"html\",data:e}).done(function(t){o=arguments,s.html(r?k(\"<div>\").append(k.parseHTML(t)).find(r):t)}).always(n&&function(t,e){s.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this},k.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(t,e){k.fn[e]=function(t){return this.on(e,t)}}),k.expr.filters.animated=function(e){return k.grep(k.timers,function(t){return e===t.elem}).length},k.offset={setOffset:function(t,e,n){var r,i,o,s,a=k.css(t,\"position\"),u=k(t),c={};\"static\"===a&&(t.style.position=\"relative\"),o=u.offset(),r=k.css(t,\"top\"),s=k.css(t,\"left\"),s=(\"absolute\"===a||\"fixed\"===a)&&-1<(r+s).indexOf(\"auto\")?(i=(a=u.position()).top,a.left):(i=parseFloat(r)||0,parseFloat(s)||0),k.isFunction(e)&&(e=e.call(t,n,k.extend({},o))),null!=e.top&&(c.top=e.top-o.top+i),null!=e.left&&(c.left=e.left-o.left+s),\"using\"in e?e.using.call(t,c):u.css(c)}},k.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){k.offset.setOffset(this,e,t)});var t,n=this[0],r={top:0,left:0},i=n&&n.ownerDocument;return i?(t=i.documentElement,k.contains(t,n)?(r=n.getBoundingClientRect(),i=Re(i),{top:r.top+i.pageYOffset-t.clientTop,left:r.left+i.pageXOffset-t.clientLeft}):r):void 0},position:function(){if(this[0]){var t,e,n=this[0],r={top:0,left:0};return\"fixed\"===k.css(n,\"position\")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),k.nodeName(t[0],\"html\")||(r=t.offset()),r.top+=k.css(t[0],\"borderTopWidth\",!0),r.left+=k.css(t[0],\"borderLeftWidth\",!0)),{top:e.top-r.top-k.css(n,\"marginTop\",!0),left:e.left-r.left-k.css(n,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&\"static\"===k.css(t,\"position\");)t=t.offsetParent;return t||Pt})}}),k.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,i){var o=\"pageYOffset\"===i;k.fn[e]=function(t){return R(this,function(t,e,n){var r=Re(t);return void 0===n?r?r[i]:t[e]:void(r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):t[e]=n)},e,t,arguments.length)}}),k.each([\"top\",\"left\"],function(t,n){k.cssHooks[n]=Rt(m.pixelPosition,function(t,e){return e?(e=Dt(t,n),It.test(e)?k(t).position()[n]+\"px\":e):void 0})}),k.each({Height:\"height\",Width:\"width\"},function(o,s){k.each({padding:\"inner\"+o,content:s,\"\":\"outer\"+o},function(r,t){k.fn[t]=function(t,e){var n=arguments.length&&(r||\"boolean\"!=typeof t),i=r||(!0===t||!0===e?\"margin\":\"border\");return R(this,function(t,e,n){var r;return k.isWindow(t)?t.document.documentElement[\"client\"+o]:9===t.nodeType?(r=t.documentElement,Math.max(t.body[\"scroll\"+o],r[\"scroll\"+o],t.body[\"offset\"+o],r[\"offset\"+o],r[\"client\"+o])):void 0===n?k.css(t,e,i):k.style(t,e,n,i)},s,n?t:void 0,n,null)}})}),k.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,\"**\"):this.off(e,t||\"**\",n)},size:function(){return this.length}}),k.fn.andSelf=k.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return k});var Me=x.jQuery,We=x.$;return k.noConflict=function(t){return x.$===k&&(x.$=We),t&&x.jQuery===k&&(x.jQuery=Me),k},t||(x.jQuery=x.$=k),k}),function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.clipboard=e():t.clipboard=e()}(this,function(){return i={},r.m=n=[function(t,e,n){\"use strict\";function o(t){var e=new v,t=function(n,t,r){f(\"listener called\"),n.success=!0,t.forEach(function(t,e){r.clipboardData.setData(e,t),e===g&&r.clipboardData.getData(e)!=t&&(f(\"setting text/plain failed\"),n.success=!1)}),r.preventDefault()}.bind(this,e,t);document.addEventListener(\"copy\",t);try{document.execCommand(\"copy\")}finally{document.removeEventListener(\"copy\",t)}return e.success}function s(t,e){a(t);e=o(e);return u(),e}function a(t){var e=document.getSelection(),n=document.createRange();n.selectNodeContents(t),e.removeAllRanges(),e.addRange(n)}function u(){document.getSelection().removeAllRanges()}function c(){return\"undefined\"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData}function r(){return new h(function(t,e){var n=window.clipboardData.getData(\"Text\");\"\"===n?e(new Error(\"Empty clipboard or could not read plain text from clipboard\")):t(n)})}Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(1),l=n(5),h=\"undefined\"==typeof Promise?i.Promise:Promise,f=function(t){},p=!0,d=function(){(console.warn||console.log).call(arguments)}.bind(console,\"[clipboard-polyfill]\"),g=\"text/plain\",i=(m.setDebugLog=function(t){f=t},m.suppressWarnings=function(){p=!1,l.suppressDTWarnings()},m.write=function(i){return p&&!i.getData(g)&&d(\"clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call clipboard.suppressWarnings() to suppress this warning.\"),new h(function(t,e){if(c())(function(t){if(void 0!==(t=t.getData(g)))return window.clipboardData.setData(\"Text\",t);throw\"No `text/plain` value was specified.\"})(i)?t():e(new Error(\"Copying failed, possibly because the user rejected it.\"));else{if(o(i))return f(\"regular execCopy worked\"),void t();if(-1<navigator.userAgent.indexOf(\"Edge\"))return f('UA \"Edge\" => assuming success'),void t();if(s(document.body,i))return f(\"copyUsingTempSelection worked\"),void t();if(r=i,(n=document.createElement(\"div\")).setAttribute(\"style\",\"-webkit-user-select: text !important\"),n.textContent=\"temporary element\",document.body.appendChild(n),r=s(n,r),document.body.removeChild(n),r)return f(\"copyUsingTempElem worked\"),void t();var n,r=i.getData(g);if(void 0!==r&&function(t){f(\"copyTextUsingDOM\");var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\");var n=e;e.attachShadow&&(f(\"Using shadow DOM.\"),n=e.attachShadow({mode:\"open\"}));var r=document.createElement(\"span\");return r.innerText=t,n.appendChild(r),document.body.appendChild(e),a(r),r=document.execCommand(\"copy\"),u(),document.body.removeChild(e),r}(r))return f(\"copyTextUsingDOM worked\"),void t();e(new Error(\"Copy command failed.\"))}})},m.writeText=function(t){if(navigator.clipboard&&navigator.clipboard.writeText)return navigator.clipboard.writeText(t);var e=new l.DT;return e.setData(g,t),this.write(e)},m.read=function(){return new h(function(n,t){c()?r().then(function(t){return n((e=t,(t=new l.DT).setData(g,e),t));var e},t):t(\"Read is not supported in your browser.\")})},m.readText=function(){return navigator.clipboard&&navigator.clipboard.readText?navigator.clipboard.readText():c()?r():new h(function(t,e){e(\"Read is not supported in your browser.\")})},m.DT=l.DT,m);function m(){}e.default=i;var v=function(){this.success=!1};t.exports=i},function(t,e,st){(function(it,ot){t.exports=function(){\"use strict\";function n(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}function c(t){return\"function\"==typeof t}function t(t){q=t}function e(t){z=t}function r(){return void 0!==B?function(){B(o)}:i()}function i(){var t=setTimeout;return function(){return t(o,1)}}function o(){for(var t=0;t<H;t+=2)(0,Y[t])(Y[t+1]),Y[t]=void 0,Y[t+1]=void 0;H=0}function s(t,e){var n=arguments,r=this,i=new this.constructor(u);void 0===i[Q]&&T(i);var o=r._state;return o?function(){var t=n[o-1];z(function(){return S(o,i,t,r._result)})}():_(r,i,t,e),i}function a(t){var e=this;if(t&&\"object\"==typeof t&&t.constructor===e)return t;var n=new e(u);return v(n,t),n}function u(){}function l(){return new TypeError(\"You cannot resolve a promise with itself\")}function h(){return new TypeError(\"A promises callback cannot return that same promise.\")}function f(t){try{return t.then}catch(t){return et.error=t,et}}function p(t,e,n,r){try{t.call(e,n,r)}catch(t){return t}}function d(t,r,i){z(function(e){var n=!1,t=p(i,r,function(t){n||(n=!0,r!==t?v(e,t):b(e,t))},function(t){n||(n=!0,w(e,t))},\"Settle: \"+(e._label||\" unknown promise\"));!n&&t&&(n=!0,w(e,t))},t)}function g(e,t){t._state===Z?b(e,t._result):t._state===tt?w(e,t._result):_(t,void 0,function(t){return v(e,t)},function(t){return w(e,t)})}function m(t,e,n){e.constructor===t.constructor&&n===s&&e.constructor.resolve===a?g(t,e):n===et?(w(t,et.error),et.error=null):void 0===n?b(t,e):c(n)?d(t,e,n):b(t,e)}function v(t,e){t===e?w(t,l()):n(e)?m(t,e,f(e)):b(t,e)}function y(t){t._onerror&&t._onerror(t._result),x(t)}function b(t,e){t._state===J&&(t._result=e,t._state=Z,0!==t._subscribers.length&&z(x,t))}function w(t,e){t._state===J&&(t._state=tt,t._result=e,z(y,t))}function _(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+Z]=n,i[o+tt]=r,0===o&&t._state&&z(x,t)}function x(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,i=void 0,o=t._result,s=0;s<e.length;s+=3)r=e[s],i=e[s+n],r?S(n,r,i,o):i(o);t._subscribers.length=0}}function C(){this.error=null}function k(t,e){try{return t(e)}catch(t){return nt.error=t,nt}}function S(t,e,n,r){var i=c(n),o=void 0,s=void 0,a=void 0,u=void 0;if(i){if(o=k(n,r),o===nt?(u=!0,s=o.error,o.error=null):a=!0,e===o)return void w(e,h())}else o=r,a=!0;e._state!==J||(i&&a?v(e,o):u?w(e,s):t===Z?b(e,o):t===tt&&w(e,o))}function O(e,t){try{t(function(t){v(e,t)},function(t){w(e,t)})}catch(t){w(e,t)}}function E(){return rt++}function T(t){t[Q]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function A(t,e){this._instanceConstructor=t,this.promise=new t(u),this.promise[Q]||T(this.promise),F(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?b(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&b(this.promise,this._result))):w(this.promise,I())}function I(){return new Error(\"Array Methods must be provided an Array\")}function j(t){return new A(this,t).promise}function P(i){var o=this;return new o(F(i)?function(t,e){for(var n=i.length,r=0;r<n;r++)o.resolve(i[r]).then(t,e)}:function(t,e){return e(new TypeError(\"You must pass an array to race.\"))})}function N(t){var e=this,n=new e(u);return w(n,t),n}function D(){throw new TypeError(\"You must pass a resolver function as the first argument to the promise constructor\")}function R(){throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\")}function M(t){this[Q]=E(),this._result=this._state=void 0,this._subscribers=[],u!==t&&(\"function\"!=typeof t&&D(),this instanceof M?O(this,t):R())}function W(){var t=void 0;if(void 0!==ot)t=ot;else if(\"undefined\"!=typeof self)t=self;else try{t=Function(\"return this\")()}catch(t){throw new Error(\"polyfill failed because global object is unavailable in this environment\")}var e=t.Promise;if(e){var n=null;try{n=Object.prototype.toString.call(e.resolve())}catch(t){}if(\"[object Promise]\"===n&&!e.cast)return}t.Promise=M}var L=void 0,F=L=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},H=0,B=void 0,q=void 0,z=function(t,e){Y[H]=t,Y[H+1]=e,2===(H+=2)&&(q?q(o):K())},U=\"undefined\"!=typeof window?window:void 0,G=U||{},V=G.MutationObserver||G.WebKitMutationObserver,$=\"undefined\"==typeof self&&void 0!==it&&\"[object process]\"==={}.toString.call(it),X=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel,Y=new Array(1e3),K=void 0;K=$?function(){return function(){return it.nextTick(o)}}():V?function(){var t=0,e=new V(o),n=document.createTextNode(\"\");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}():X?function(){var t=new MessageChannel;return t.port1.onmessage=o,function(){return t.port2.postMessage(0)}}():void 0===U?function(){try{var t=st(4);return B=t.runOnLoop||t.runOnContext,r()}catch(t){return i()}}():i();var Q=Math.random().toString(36).substring(16),J=void 0,Z=1,tt=2,et=new C,nt=new C,rt=0;return A.prototype._enumerate=function(t){for(var e=0;this._state===J&&e<t.length;e++)this._eachEntry(t[e],e)},A.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===a){var i=f(e);if(i===s&&e._state!==J)this._settledAt(e._state,t,e._result);else if(\"function\"!=typeof i)this._remaining--,this._result[t]=e;else if(n===M){var o=new n(u);m(o,e,i),this._willSettleAt(o,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(r(e),t)},A.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===J&&(this._remaining--,t===tt?w(r,n):this._result[e]=n),0===this._remaining&&b(r,this._result)},A.prototype._willSettleAt=function(t,e){var n=this;_(t,void 0,function(t){return n._settledAt(Z,e,t)},function(t){return n._settledAt(tt,e,t)})},M.all=j,M.race=P,M.resolve=a,M.reject=N,M._setScheduler=t,M._setAsap=e,M._asap=z,M.prototype={constructor:M,then:s,catch:function(t){return this.then(null,t)}},M.polyfill=W,M.Promise=M}()}).call(e,st(2),st(3))},function(t,e){function n(){throw new Error(\"setTimeout has not been defined\")}function r(){throw new Error(\"clearTimeout has not been defined\")}function i(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function o(){p&&h&&(p=!1,h.length?f=h.concat(f):d=-1,f.length&&s())}function s(){if(!p){var t=i(o);p=!0;for(var e=f.length;e;){for(h=f,f=[];++d<e;)h&&h[d].run();d=-1,e=f.length}h=null,p=!1,function(e){if(l===clearTimeout)return clearTimeout(e);if((l===r||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}(t)}}function a(t,e){this.fun=t,this.array=e}function u(){}var c,l,t=t.exports={};!function(){try{c=\"function\"==typeof setTimeout?setTimeout:n}catch(t){c=n}try{l=\"function\"==typeof clearTimeout?clearTimeout:r}catch(t){l=r}}();var h,f=[],p=!1,d=-1;t.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];f.push(new a(t,e)),1!==f.length||p||i(s)},a.prototype.run=function(){this.fun.apply(null,this.array)},t.title=\"browser\",t.browser=!0,t.env={},t.argv=[],t.version=\"\",t.versions={},t.on=u,t.addListener=u,t.once=u,t.off=u,t.removeListener=u,t.removeAllListeners=u,t.emit=u,t.prependListener=u,t.prependOnceListener=u,t.listeners=function(t){return[]},t.binding=function(t){throw new Error(\"process.binding is not supported\")},t.cwd=function(){return\"/\"},t.chdir=function(t){throw new Error(\"process.chdir is not supported\")},t.umask=function(){return 0}},function(t,e){var n=function(){return this}();try{n=n||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e){},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=[\"text/plain\",\"text/html\"],i=function(){(console.warn||console.log).call(arguments)}.bind(console,\"[clipboard-polyfill]\"),o=!0;e.suppressDTWarnings=function(){o=!1};var s=(a.prototype.setData=function(t,e){o&&-1===r.indexOf(t)&&i(\"Unknown data type: \"+t,\"Call clipboard.suppressWarnings() to suppress this warning.\"),this.m[t]=e},a.prototype.getData=function(t){return this.m[t]},a.prototype.forEach=function(t){for(var e in this.m)t(this.m[e],e)},a);function a(){this.m={}}e.DT=s}],r.c=i,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=0);function r(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var n,i}),function(t){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],t):\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"jquery\")):t(jQuery)}(function(It,jt){\"use strict\";var t,Pt={beforeShow:n,move:n,change:n,show:n,hide:n,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!0,showInitial:!1,showPalette:!1,showPaletteOnly:!1,hideAfterPaletteSelect:!1,togglePaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:\"body\",maxSelectionSize:7,cancelText:\"cancel\",chooseText:\"choose\",togglePaletteMoreText:\"more\",togglePaletteLessText:\"less\",clearText:\"Clear Color Selection\",noColorSelectedText:\"No Color Selected\",preferredFormat:!1,className:\"\",containerClassName:\"\",replacerClassName:\"\",showAlpha:!1,theme:\"sp-light\",palette:[[\"#ffffff\",\"#000000\",\"#ff0000\",\"#ff8000\",\"#ffff00\",\"#008000\",\"#0000ff\",\"#4b0082\",\"#9400d3\"]],selectionPalette:[],disabled:!1,offset:null},Nt=[],Dt=!!/msie/i.exec(window.navigator.userAgent),Rt=((t=document.createElement(\"div\").style).cssText=\"background-color:rgba(0,0,0,.5)\",e(t.backgroundColor,\"rgba\")||e(t.backgroundColor,\"hsla\")),Mt=[\"<div class='sp-replacer'>\",\"<div class='sp-preview'><div class='sp-preview-inner'></div></div>\",\"<div class='sp-dd'>&#9660;</div>\",\"</div>\"].join(\"\"),Wt=function(){var t=\"\";if(Dt)for(var e=1;e<=6;e++)t+=\"<div class='sp-\"+e+\"'></div>\";return[\"<div class='sp-container sp-hidden'>\",\"<div class='sp-palette-container'>\",\"<div class='sp-palette sp-thumb sp-cf'></div>\",\"<div class='sp-palette-button-container sp-cf'>\",\"<button type='button' class='sp-palette-toggle'></button>\",\"</div>\",\"</div>\",\"<div class='sp-picker-container'>\",\"<div class='sp-top sp-cf'>\",\"<div class='sp-fill'></div>\",\"<div class='sp-top-inner'>\",\"<div class='sp-color'>\",\"<div class='sp-sat'>\",\"<div class='sp-val'>\",\"<div class='sp-dragger'></div>\",\"</div>\",\"</div>\",\"</div>\",\"<div class='sp-clear sp-clear-display'>\",\"</div>\",\"<div class='sp-hue'>\",\"<div class='sp-slider'></div>\",t,\"</div>\",\"</div>\",\"<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>\",\"</div>\",\"<div class='sp-input-container sp-cf'>\",\"<input class='sp-input formulaInputFocus' type='text' spellcheck='false'  />\",\"</div>\",\"<div class='sp-initial sp-thumb sp-cf'></div>\",\"<div class='sp-button-container sp-cf'>\",\"<a class='sp-cancel' href='#'></a>\",\"<button type='button' class='sp-choose'></button>\",\"</div>\",\"</div>\",\"</div>\"].join(\"\")}();function e(t,e){return!!~(\"\"+t).indexOf(e)}function Lt(t,e,n,r){for(var i=[],o=0;o<t.length;o++){var s,a,u,c=t[o];c?(a=(s=tinycolor(c)).toHsl().l<.5?\"sp-thumb-el sp-thumb-dark\":\"sp-thumb-el sp-thumb-light\",a+=tinycolor.equals(e,c)?\" sp-thumb-active\":\"\",u=s.toString(r.preferredFormat||\"rgb\"),c=Rt?\"background-color:\"+s.toRgbString():\"filter:\"+s.toFilter(),i.push('<span title=\"'+u+'\" data-color=\"'+s.toRgbString()+'\" class=\"'+a+'\"><span class=\"sp-thumb-inner\" style=\"'+c+';\" /></span>')):i.push(It(\"<div />\").append(It('<span data-color=\"\" style=\"background-color:transparent;\" class=\"sp-clear-display\"></span>').attr(\"title\",r.noColorSelectedText)).html())}return\"<div class='sp-cf \"+n+\"'>\"+i.join(\"\")+\"</div>\"}function n(){}function Ft(t){t.stopPropagation()}function Ht(t,e){var n=Array.prototype.slice,r=n.call(arguments,2);return function(){return t.apply(e,r.concat(n.call(arguments)))}}function Bt(r,i,e,t){i=i||function(){},e=e||function(){},t=t||function(){};var o=document,s=!1,a={},u=0,c=0,l=\"ontouchstart\"in window,n={};function h(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}function f(t){if(s){if(Dt&&o.documentMode<9&&!t.button)return p();var e=t.originalEvent&&t.originalEvent.touches&&t.originalEvent.touches[0],n=e&&e.pageX||t.pageX,e=e&&e.pageY||t.pageY,n=Math.max(0,Math.min(n-a.left,c)),e=Math.max(0,Math.min(e-a.top,u));l&&h(t),i.apply(r,[n,e,t])}}function p(){s&&(It(o).unbind(n),It(o.body).removeClass(\"sp-dragging\"),setTimeout(function(){t.apply(r,arguments)},0)),s=!1}n.selectstart=h,n.dragstart=h,n[\"touchmove mousemove\"]=f,n[\"touchend mouseup\"]=p,It(r).bind(\"touchstart mousedown\",function(t){(t.which?3==t.which:2==t.button)||s||!1!==e.apply(r,arguments)&&(s=!0,u=It(r).height(),c=It(r).width(),a=It(r).offset(),It(o).bind(n),It(o.body).addClass(\"sp-dragging\"),f(t),h(t))})}function qt(){return It.fn.spectrum.inputTypeColorSupport()}var o=\"spectrum.id\";It.fn.spectrum=function(n,t){if(\"string\"!=typeof n)return this.spectrum(\"destroy\").each(function(){var t=function(t,e){var n,r,i,a=(i=t,(e=It.extend({},Pt,e)).callbacks={move:Ht(e.move,i),change:Ht(e.change,i),show:Ht(e.show,i),hide:Ht(e.hide,i),beforeShow:Ht(e.beforeShow,i)},e),u=a.flat,o=a.showSelectionPalette,s=a.localStorageKey,e=a.theme,c=a.callbacks,l=(n=Et,function(){var t=this,e=arguments;r=r||setTimeout(function(){r=null,n.apply(t,e)},10)}),h=!10,f=!1,p=0,d=0,g=0,m=0,v=0,y=0,b=0,w=0,_=0,x=0,C=1,k=[],S=[],O={},E=a.selectionPalette.slice(0),T=a.maxSelectionSize,A=\"sp-dragging\",I=null,j=t.ownerDocument,P=(j.body,It(t)),N=!1,D=It(Wt,j).addClass(e),R=D.find(\".sp-picker-container\"),M=D.find(\".sp-color\"),W=D.find(\".sp-dragger\"),L=D.find(\".sp-hue\"),F=D.find(\".sp-slider\"),H=D.find(\".sp-alpha-inner\"),B=D.find(\".sp-alpha\"),q=D.find(\".sp-alpha-handle\"),z=D.find(\".sp-input\"),U=D.find(\".sp-palette\"),G=D.find(\".sp-initial\"),V=D.find(\".sp-cancel\"),$=D.find(\".sp-clear\"),X=D.find(\".sp-choose\"),Y=D.find(\".sp-palette-toggle\"),K=P.is(\"input\"),t=K&&\"color\"===P.attr(\"type\")&&qt(),Q=K&&!u,J=Q?It(Mt).addClass(e).addClass(a.className).addClass(a.replacerClassName):It([]),Z=Q?J:P,tt=J.find(\".sp-preview-inner\"),et=a.color||K&&P.val(),nt=!1,rt=a.preferredFormat,it=!a.showButtons||a.clickoutFiresChange,ot=!et,st=a.allowEmpty&&!t;function at(){if(a.showPaletteOnly&&(a.showPalette=!0),Y.text(a.showPaletteOnly?a.togglePaletteMoreText:a.togglePaletteLessText),a.palette){k=a.palette.slice(0),S=It.isArray(k[0])?k:[k],O={};for(var t=0;t<S.length;t++)for(var e=0;e<S[t].length;e++){var n=tinycolor(S[t][e]).toRgbString();O[n]=!0}}D.toggleClass(\"sp-flat\",u),D.toggleClass(\"sp-input-disabled\",!a.showInput),D.toggleClass(\"sp-alpha-enabled\",a.showAlpha),D.toggleClass(\"sp-clear-enabled\",st),D.toggleClass(\"sp-buttons-disabled\",!a.showButtons),D.toggleClass(\"sp-palette-buttons-disabled\",!a.togglePaletteOnly),D.toggleClass(\"sp-palette-disabled\",!a.showPalette),D.toggleClass(\"sp-palette-only\",a.showPaletteOnly),D.toggleClass(\"sp-initial-disabled\",!a.showInitial),D.addClass(a.className).addClass(a.containerClassName),Et()}function ut(){if(s&&window.localStorage){try{var t=window.localStorage[s].split(\",#\");1<t.length&&(delete window.localStorage[s],It.each(t,function(t,e){ct(e)}))}catch(t){}try{E=window.localStorage[s].split(\";\")}catch(t){}}}function ct(t){if(o){var e=tinycolor(t).toRgbString();if(!O[e]&&-1===It.inArray(e,E))for(E.push(e);E.length>T;)E.shift();if(s&&window.localStorage)try{window.localStorage[s]=E.join(\";\")}catch(t){}}}function lt(){var n=xt(),t=It.map(S,function(t,e){return Lt(t,n,\"sp-palette-row sp-palette-row-\"+e,a)});ut(),E&&t.push(Lt(function(){var t=[];if(a.showPalette)for(var e=0;e<E.length;e++){var n=tinycolor(E[e]).toRgbString();O[n]||t.push(E[e])}return t.reverse().slice(0,a.maxSelectionSize)}(),n,\"sp-palette-row sp-palette-row-selection\",a)),U.html(t.join(\"\"))}function ht(){var t,e;a.showInitial&&(t=nt,e=xt(),G.html(Lt([t,e],e,\"sp-palette-row-initial\",a)))}function ft(){(d<=0||p<=0||m<=0)&&Et(),f=!0,D.addClass(A),I=null,P.trigger(\"dragstart.spectrum\",[xt()])}function pt(){f=!1,D.removeClass(A),P.trigger(\"dragstop.spectrum\",[xt()])}function dt(){var t=z.val();null!==t&&\"\"!==t||!st?(t=tinycolor(t)).isValid()?(_t(t),Ot(!0)):z.addClass(\"sp-validation-error\"):(_t(null),Ot(!0))}function gt(){(h?bt:mt)()}function mt(){var t=It.Event(\"beforeShow.spectrum\");h?Et():(P.trigger(t,[xt()]),!1===c.beforeShow(xt())||t.isDefaultPrevented()||(function(){for(var t=0;t<Nt.length;t++)Nt[t]&&Nt[t].hide()}(),h=!0,It(j).bind(\"keydown.spectrum\",vt),It(j).bind(\"click.spectrum\",yt),It(window).bind(\"resize.spectrum\",l),J.addClass(\"sp-active\"),D.removeClass(\"sp-hidden\"),Et(),kt(),nt=xt(),ht(),c.show(nt),P.trigger(\"show.spectrum\",[nt])))}function vt(t){27===t.keyCode&&bt()}function yt(t){2!=t.button&&(f||(it?Ot(!0):wt(),bt()))}function bt(){h&&!u&&(h=!1,It(j).unbind(\"keydown.spectrum\",vt),It(j).unbind(\"click.spectrum\",yt),It(window).unbind(\"resize.spectrum\",l),J.removeClass(\"sp-active\"),D.addClass(\"sp-hidden\"),c.hide(xt()),P.trigger(\"hide.spectrum\",[xt()]))}function wt(){_t(nt,!0)}function _t(t,e){var n;tinycolor.equals(t,xt())?kt():(!t&&st?ot=!0:(ot=!1,t=(n=tinycolor(t)).toHsv(),w=t.h%360/360,_=t.s,x=t.v,C=t.a),kt(),n&&n.isValid()&&!e&&(rt=a.preferredFormat||n.getFormat()))}function xt(t){return t=t||{},st&&ot?null:tinycolor.fromRatio({h:w,s:_,v:x,a:Math.round(100*C)/100},{format:t.format||rt})}function Ct(){kt(),c.move(xt()),P.trigger(\"move.spectrum\",[xt()])}function kt(){z.removeClass(\"sp-validation-error\"),St();var t=tinycolor.fromRatio({h:w,s:1,v:1});M.css(\"background-color\",t.toHexString());var e=rt;C<1&&(0!==C||\"name\"!==e)&&(\"hex\"!==e&&\"hex3\"!==e&&\"hex6\"!==e&&\"name\"!==e||(e=\"rgb\"));var n,r,i=xt({format:e}),o=\"\";tt.removeClass(\"sp-clear-display\"),tt.css(\"background-color\",\"transparent\"),!i&&st?tt.addClass(\"sp-clear-display\"):(n=i.toHexString(),r=i.toRgbString(),Rt||1===i.alpha?tt.css(\"background-color\",r):(tt.css(\"background-color\",\"transparent\"),tt.css(\"filter\",i.toFilter())),a.showAlpha&&((t=i.toRgb()).a=0,t=\"linear-gradient(left, \"+(r=tinycolor(t).toRgbString())+\", \"+n+\")\",Dt?H.css(\"filter\",tinycolor(r).toFilter({gradientType:1},n)):(H.css(\"background\",\"-webkit-\"+t),H.css(\"background\",\"-moz-\"+t),H.css(\"background\",\"-ms-\"+t),H.css(\"background\",\"linear-gradient(to right, \"+r+\", \"+n+\")\"))),o=i.toString(e)),a.showInput&&z.val(o),a.showPalette&&lt(),ht()}function St(){var t=_,e=x;st&&ot?(q.hide(),F.hide(),W.hide()):(q.show(),F.show(),W.show(),t=t*p,e=d-e*d,t=Math.max(-g,Math.min(p-g,t-g)),e=Math.max(-g,Math.min(d-g,e-g)),W.css({top:e+\"px\",left:t+\"px\"}),t=C*v,q.css({left:t-y/2+\"px\"}),t=w*m,F.css({top:t-b+\"px\"}))}function Ot(t){var e=xt(),n=\"\";e&&(n=e.toString(rt),ct(e)),K&&P.val(n),t&&(c.change(e),P.trigger(\"change\",[e]))}function Et(){var t,e,n,r,i,o,s;h&&(p=M.width(),d=M.height(),g=W.height(),L.width(),m=L.height(),b=F.height(),v=B.width(),y=q.width(),u||(D.css(\"position\",\"absolute\"),a.offset?D.offset(a.offset):D.offset((s=Z,t=(i=D).outerWidth(),e=i.outerHeight(),n=s.outerHeight(),i=(r=(o=i[0].ownerDocument).documentElement).clientWidth+It(o).scrollLeft(),o=r.clientHeight+It(o).scrollTop(),(s=s.offset()).top+=n,s.left-=Math.min(s.left,s.left+t>i&&t<i?Math.abs(s.left+t-i):0),s.top-=Math.min(s.top,s.top+e>o&&e<o?Math.abs(+(e+n)):0),s))),St(),a.showPalette&&lt(),P.trigger(\"reflow.spectrum\"))}function Tt(){bt(),N=!0,P.attr(\"disabled\",!0),Z.addClass(\"sp-disabled\")}!function(){function t(t){return t.data&&t.data.ignore?(_t(It(t.target).closest(\".sp-thumb-el\").data(\"color\")),Ct()):(_t(It(t.target).closest(\".sp-thumb-el\").data(\"color\")),Ct(),Ot(!0),a.hideAfterPaletteSelect&&bt()),!1}Dt&&D.find(\"*:not(input)\").attr(\"unselectable\",\"on\"),at(),Q&&P.after(J).hide(),st||$.hide(),u?P.after(D).hide():(1!==(e=\"parent\"===a.appendTo?P.parent():It(a.appendTo)).length&&(e=It(\"body\")),e.append(D)),ut(),Z.bind(\"click.spectrum touchstart.spectrum\",function(t){N||gt(),t.stopPropagation(),It(t.target).is(\"input\")||t.preventDefault()}),!P.is(\":disabled\")&&!0!==a.disabled||Tt(),D.click(Ft),z.change(dt),z.bind(\"paste\",function(){setTimeout(dt,1)}),z.keydown(function(t){13==t.keyCode&&dt()}),V.text(a.cancelText),V.bind(\"click.spectrum\",function(t){t.stopPropagation(),t.preventDefault(),wt(),bt()}),$.attr(\"title\",a.clearText),$.bind(\"click.spectrum\",function(t){t.stopPropagation(),t.preventDefault(),ot=!0,Ct(),u&&Ot(!0)}),X.text(a.chooseText),X.bind(\"click.spectrum\",function(t){t.stopPropagation(),t.preventDefault(),Dt&&z.is(\":focus\")&&z.trigger(\"change\"),z.hasClass(\"sp-validation-error\")||(Ot(!0),bt())}),Y.text(a.showPaletteOnly?a.togglePaletteMoreText:a.togglePaletteLessText),Y.bind(\"click.spectrum\",function(t){t.stopPropagation(),t.preventDefault(),a.showPaletteOnly=!a.showPaletteOnly,a.showPaletteOnly||u||D.css(\"left\",\"-=\"+(R.outerWidth(!0)+5)),at()}),Bt(B,function(t,e,n){C=t/v,ot=!1,n.shiftKey&&(C=Math.round(10*C)/10),Ct()},ft,pt),Bt(L,function(t,e){w=parseFloat(e/m),ot=!1,a.showAlpha||(C=1),Ct()},ft,pt),Bt(M,function(t,e,n){n.shiftKey?I||(n=_*p,r=d-x*d,r=Math.abs(t-n)>Math.abs(e-r),I=r?\"x\":\"y\"):I=null;var r=!I||\"y\"===I;I&&\"x\"!==I||(_=parseFloat(t/p)),r&&(x=parseFloat((d-e)/d)),ot=!1,a.showAlpha||(C=1),Ct()},ft,pt),et?(_t(et),kt(),rt=a.preferredFormat||tinycolor(et).format,ct(et)):kt(),u&&mt();var e=Dt?\"mousedown.spectrum\":\"click.spectrum touchstart.spectrum\";U.delegate(\".sp-thumb-el\",e,t),G.delegate(\".sp-thumb-el:nth-child(1)\",e,{ignore:!0},t)}();var At={show:mt,hide:bt,toggle:gt,reflow:Et,option:function(t,e){return t===jt?It.extend({},a):e===jt?a[t]:(a[t]=e,\"preferredFormat\"===t&&(rt=a.preferredFormat),void at())},enable:function(){N=!1,P.attr(\"disabled\",!1),Z.removeClass(\"sp-disabled\")},disable:Tt,offset:function(t){a.offset=t,Et()},set:function(t){_t(t),Ot()},get:xt,destroy:function(){P.show(),Z.unbind(\"click.spectrum touchstart.spectrum\"),D.remove(),J.remove(),Nt[At.id]=null},container:D};return At.id=Nt.push(At)-1,At}(this,It.extend({},n,It(this).data()));It(this).data(o,t.id)});var r=this,i=Array.prototype.slice.call(arguments,1);return this.each(function(){var t=Nt[It(this).data(o)];if(t){var e=t[n];if(!e)throw new Error(\"Spectrum: no such method: '\"+n+\"'\");\"get\"==n?r=t.get():\"container\"==n?r=t.container:\"option\"==n?r=t.option.apply(t,i):\"destroy\"==n?(t.destroy(),It(this).removeData(o)):e.apply(t,i)}}),r},It.fn.spectrum.load=!0,It.fn.spectrum.loadOpts={},It.fn.spectrum.draggable=Bt,It.fn.spectrum.defaults=Pt,It.fn.spectrum.inputTypeColorSupport=function t(){var e;return void 0===t._cachedResult&&(e=It(\"<input type='color'/>\")[0],t._cachedResult=\"color\"===e.type&&\"\"!==e.value),t._cachedResult},It.spectrum={},It.spectrum.localization={},It.spectrum.palettes={},It.fn.spectrum.processNativeColorInputs=function(){var t=It(\"input[type=color]\");t.length&&!qt()&&t.spectrum({preferredFormat:\"hex6\"})},function(){var d=/^[\\s,#]+/,g=/\\s+$/,m=0,v=Math,y=v.round,b=v.min,w=v.max,t=v.random,_=function(t,e){if(e=e||{},(t=t||\"\")instanceof _)return t;if(!(this instanceof _))return new _(t,e);var n,r,i,o,s,a,u,c,l,h,f,l=(c={r:0,g:0,b:0},f=h=!(l=1),\"string\"==typeof(n=t)&&(n=function(t){t=t.replace(d,\"\").replace(g,\"\").toLowerCase();var e,n=!1;if(O[t])t=O[t],n=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};return(e=M.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=M.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=M.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=M.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=M.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=M.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=M.hex8.exec(t))?{a:j(e[1])/255,r:j(e[2]),g:j(e[3]),b:j(e[4]),format:n?\"name\":\"hex8\"}:(e=M.hex6.exec(t))?{r:j(e[1]),g:j(e[2]),b:j(e[3]),format:n?\"name\":\"hex\"}:!!(e=M.hex3.exec(t))&&{r:j(e[1]+\"\"+e[1]),g:j(e[2]+\"\"+e[2]),b:j(e[3]+\"\"+e[3]),format:n?\"name\":\"hex\"}}(n)),\"object\"==typeof n&&(n.hasOwnProperty(\"r\")&&n.hasOwnProperty(\"g\")&&n.hasOwnProperty(\"b\")?(s=n.r,a=n.g,u=n.b,c={r:255*A(s,255),g:255*A(a,255),b:255*A(u,255)},h=!0,f=\"%\"===String(n.r).substr(-1)?\"prgb\":\"rgb\"):n.hasOwnProperty(\"h\")&&n.hasOwnProperty(\"s\")&&n.hasOwnProperty(\"v\")?(n.s=N(n.s),n.v=N(n.v),c=function(t,e,n){t=6*A(t,360),e=A(e,100),n=A(n,100);var r=v.floor(t),i=t-r,o=n*(1-e),t=n*(1-i*e),e=n*(1-(1-i)*e),r=r%6;return{r:255*[n,t,o,o,e,n][r],g:255*[e,n,n,t,o,o][r],b:255*[o,o,e,n,n,t][r]}}(n.h,n.s,n.v),h=!0,f=\"hsv\"):n.hasOwnProperty(\"h\")&&n.hasOwnProperty(\"s\")&&n.hasOwnProperty(\"l\")&&(n.s=N(n.s),n.l=N(n.l),s=n.h,a=n.s,u=n.l,s=A(s,360),a=A(a,100),u=A(u,100),0===a?r=i=o=u:(r=p(a=2*u-(u=u<.5?u*(1+a):u+a-u*a),u,s+1/3),i=p(a,u,s),o=p(a,u,s-1/3)),c={r:255*r,g:255*i,b:255*o},h=!0,f=\"hsl\"),n.hasOwnProperty(\"a\")&&(l=n.a)),l=T(l),{ok:h,format:n.format||f,r:b(255,w(c.r,0)),g:b(255,w(c.g,0)),b:b(255,w(c.b,0)),a:l});function p(t,e,n){return n<0&&(n+=1),1<n&&--n,n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}this._originalInput=t,this._r=l.r,this._g=l.g,this._b=l.b,this._a=l.a,this._roundA=y(100*this._a)/100,this._format=e.format||l.format,this._gradientType=e.gradientType,this._r<1&&(this._r=y(this._r)),this._g<1&&(this._g=y(this._g)),this._b<1&&(this._b=y(this._b)),this._ok=l.ok,this._tc_id=m++};function r(t,e,n){t=A(t,255),e=A(e,255),n=A(n,255);var r,i=w(t,e,n),o=b(t,e,n),s=(i+o)/2;if(i==o)r=u=0;else{var a=i-o,u=.5<s?a/(2-i-o):a/(i+o);switch(i){case t:r=(e-n)/a+(e<n?6:0);break;case e:r=(n-t)/a+2;break;case n:r=(t-e)/a+4}r/=6}return{h:r,s:u,l:s}}function i(t,e,n){t=A(t,255),e=A(e,255),n=A(n,255);var r,i=w(t,e,n),o=b(t,e,n),s=i,a=i-o,u=0===i?0:a/i;if(i==o)r=0;else{switch(i){case t:r=(e-n)/a+(e<n?6:0);break;case e:r=(n-t)/a+2;break;case n:r=(t-e)/a+4}r/=6}return{h:r,s:u,v:s}}function e(t,e,n,r){n=[P(y(t).toString(16)),P(y(e).toString(16)),P(y(n).toString(16))];return r&&n[0].charAt(0)==n[0].charAt(1)&&n[1].charAt(0)==n[1].charAt(1)&&n[2].charAt(0)==n[2].charAt(1)?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0):n.join(\"\")}function o(t,e,n,r){return[P(Math.round(255*parseFloat(r)).toString(16)),P(y(t).toString(16)),P(y(e).toString(16)),P(y(n).toString(16))].join(\"\")}function n(t,e){e=0===e?0:e||10;t=_(t).toHsl();return t.s-=e/100,t.s=I(t.s),_(t)}function s(t,e){e=0===e?0:e||10;t=_(t).toHsl();return t.s+=e/100,t.s=I(t.s),_(t)}function a(t){return _(t).desaturate(100)}function u(t,e){e=0===e?0:e||10;t=_(t).toHsl();return t.l+=e/100,t.l=I(t.l),_(t)}function c(t,e){e=0===e?0:e||10;t=_(t).toRgb();return t.r=w(0,b(255,t.r-y(-e/100*255))),t.g=w(0,b(255,t.g-y(-e/100*255))),t.b=w(0,b(255,t.b-y(-e/100*255))),_(t)}function l(t,e){e=0===e?0:e||10;t=_(t).toHsl();return t.l-=e/100,t.l=I(t.l),_(t)}function h(t,e){t=_(t).toHsl(),e=(y(t.h)+e)%360;return t.h=e<0?360+e:e,_(t)}function f(t){t=_(t).toHsl();return t.h=(t.h+180)%360,_(t)}function p(t){var e=_(t).toHsl(),n=e.h;return[_(t),_({h:(n+120)%360,s:e.s,l:e.l}),_({h:(n+240)%360,s:e.s,l:e.l})]}function x(t){var e=_(t).toHsl(),n=e.h;return[_(t),_({h:(n+90)%360,s:e.s,l:e.l}),_({h:(n+180)%360,s:e.s,l:e.l}),_({h:(n+270)%360,s:e.s,l:e.l})]}function C(t){var e=_(t).toHsl(),n=e.h;return[_(t),_({h:(n+72)%360,s:e.s,l:e.l}),_({h:(n+216)%360,s:e.s,l:e.l})]}function k(t,e,n){e=e||6,n=n||30;var r=_(t).toHsl(),i=360/n,o=[_(t)];for(r.h=(r.h-(i*e>>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(_(r));return o}function S(t,e){e=e||6;for(var t=_(t).toHsv(),n=t.h,r=t.s,i=t.v,o=[],s=1/e;e--;)o.push(_({h:n,s:r,v:i})),i=(i+s)%1;return o}_.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},setAlpha:function(t){return this._a=T(t),this._roundA=y(100*this._a)/100,this},toHsv:function(){var t=i(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=i(this._r,this._g,this._b),e=y(360*t.h),n=y(100*t.s),t=y(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+n+\"%, \"+t+\"%)\":\"hsva(\"+e+\", \"+n+\"%, \"+t+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=r(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=r(this._r,this._g,this._b),e=y(360*t.h),n=y(100*t.s),t=y(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+n+\"%, \"+t+\"%)\":\"hsla(\"+e+\", \"+n+\"%, \"+t+\"%, \"+this._roundA+\")\"},toHex:function(t){return e(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(){return o(this._r,this._g,this._b,this._a)},toHex8String:function(){return\"#\"+this.toHex8()},toRgb:function(){return{r:y(this._r),g:y(this._g),b:y(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+y(this._r)+\", \"+y(this._g)+\", \"+y(this._b)+\")\":\"rgba(\"+y(this._r)+\", \"+y(this._g)+\", \"+y(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:y(100*A(this._r,255))+\"%\",g:y(100*A(this._g,255))+\"%\",b:y(100*A(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+y(100*A(this._r,255))+\"%, \"+y(100*A(this._g,255))+\"%, \"+y(100*A(this._b,255))+\"%)\":\"rgba(\"+y(100*A(this._r,255))+\"%, \"+y(100*A(this._g,255))+\"%, \"+y(100*A(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[e(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+o(this._r,this._g,this._b,this._a),n=e,r=this._gradientType?\"GradientType = 1, \":\"\";return t&&(n=_(t).toHex8String()),\"progid:DXImageTransform.Microsoft.gradient(\"+r+\"startColorstr=\"+e+\",endColorstr=\"+n+\")\"},toString:function(t){var e=!!t;t=t||this._format;var n=!1,r=this._a<1&&0<=this._a;return e||!r||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"name\"!==t?(\"rgb\"===t&&(n=this.toRgbString()),\"prgb\"===t&&(n=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(n=this.toHexString()),\"hex3\"===t&&(n=this.toHexString(!0)),\"hex8\"===t&&(n=this.toHex8String()),\"name\"===t&&(n=this.toName()),\"hsl\"===t&&(n=this.toHslString()),\"hsv\"===t&&(n=this.toHsvString()),n||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},_applyModification:function(t,e){e=t.apply(null,[this].concat([].slice.call(e)));return this._r=e._r,this._g=e._g,this._b=e._b,this.setAlpha(e._a),this},lighten:function(){return this._applyModification(u,arguments)},brighten:function(){return this._applyModification(c,arguments)},darken:function(){return this._applyModification(l,arguments)},desaturate:function(){return this._applyModification(n,arguments)},saturate:function(){return this._applyModification(s,arguments)},greyscale:function(){return this._applyModification(a,arguments)},spin:function(){return this._applyModification(h,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(k,arguments)},complement:function(){return this._applyCombination(f,arguments)},monochromatic:function(){return this._applyCombination(S,arguments)},splitcomplement:function(){return this._applyCombination(C,arguments)},triad:function(){return this._applyCombination(p,arguments)},tetrad:function(){return this._applyCombination(x,arguments)}},_.fromRatio=function(t,e){if(\"object\"==typeof t){var n,r={};for(n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:N(t[n]));t=r}return _(t,e)},_.equals=function(t,e){return!(!t||!e)&&_(t).toRgbString()==_(e).toRgbString()},_.random=function(){return _.fromRatio({r:t(),g:t(),b:t()})},_.mix=function(t,e,n){n=0===n?0:n||50;var r=_(t).toRgb(),i=_(e).toRgb(),t=n/100,e=2*t-1,n=i.a-r.a,n=1-(e=(1+(e=e*n==-1?e:(e+n)/(1+e*n)))/2),t={r:i.r*e+r.r*n,g:i.g*e+r.g*n,b:i.b*e+r.b*n,a:i.a*t+r.a*(1-t)};return _(t)},_.readability=function(t,e){var n=_(t),r=_(e),t=n.toRgb(),e=r.toRgb(),n=n.getBrightness(),r=r.getBrightness(),e=Math.max(t.r,e.r)-Math.min(t.r,e.r)+Math.max(t.g,e.g)-Math.min(t.g,e.g)+Math.max(t.b,e.b)-Math.min(t.b,e.b);return{brightness:Math.abs(n-r),color:e}},_.isReadable=function(t,e){e=_.readability(t,e);return 125<e.brightness&&500<e.color},_.mostReadable=function(t,e){for(var n=null,r=0,i=!1,o=0;o<e.length;o++){var s=_.readability(t,e[o]),a=125<s.brightness&&500<s.color,s=s.brightness/125*3+s.color/500;(a&&!i||a&&i&&r<s||!a&&!i&&r<s)&&(i=a,r=s,n=_(e[o]))}return n};var O=_.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=_.hexNames=function(t){var e,n={};for(e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n}(O);function T(t){return t=parseFloat(t),(isNaN(t)||t<0||1<t)&&(t=1),t}function A(t,e){\"string\"==typeof(n=t)&&-1!=n.indexOf(\".\")&&1===parseFloat(n)&&(t=\"100%\");var n=\"string\"==typeof t&&-1!=t.indexOf(\"%\");return t=b(e,w(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),v.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function I(t){return b(1,w(0,t))}function j(t){return parseInt(t,16)}function P(t){return 1==t.length?\"0\"+t:\"\"+t}function N(t){return t<=1&&(t=100*t+\"%\"),t}var D,R,M=(D=\"[\\\\s|\\\\(]+(\"+(R=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+R+\")[,|\\\\s]+(\"+R+\")\\\\s*\\\\)?\",R=\"[\\\\s|\\\\(]+(\"+R+\")[,|\\\\s]+(\"+R+\")[,|\\\\s]+(\"+R+\")[,|\\\\s]+(\"+R+\")\\\\s*\\\\)?\",{rgb:new RegExp(\"rgb\"+D),rgba:new RegExp(\"rgba\"+R),hsl:new RegExp(\"hsl\"+D),hsla:new RegExp(\"hsla\"+R),hsv:new RegExp(\"hsv\"+D),hsva:new RegExp(\"hsva\"+R),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});window.tinycolor=_}(),It(function(){It.fn.spectrum.load&&It.fn.spectrum.processNativeColorInputs()})}),function(){var t=function(x){x.ui=x.ui||{},x.ui.version=\"1.12.1\";var i,r,C,k,o,s,a,u,c,n,l=0,h=Array.prototype.slice;function S(t,e,n){return[parseFloat(t[0])*(c.test(t[0])?e/100:1),parseFloat(t[1])*(c.test(t[1])?n/100:1)]}function O(t,e){return parseInt(x.css(t,e),10)||0}x.cleanData=(i=x.cleanData,function(t){for(var e,n,r=0;null!=(n=t[r]);r++)try{(e=x._data(n,\"events\"))&&e.remove&&x(n).triggerHandler(\"remove\")}catch(t){}i(t)}),x.widget=function(t,n,e){var r,i,o,s={},a=t.split(\".\")[0],u=a+\"-\"+(t=t.split(\".\")[1]);return e||(e=n,n=x.Widget),x.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr[\":\"][u.toLowerCase()]=function(t){return!!x.data(t,u)},x[a]=x[a]||{},r=x[a][t],i=x[a][t]=function(t,e){if(!this._createWidget)return new i(t,e);arguments.length&&this._createWidget(t,e)},x.extend(i,r,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new n).options=x.widget.extend({},o.options),x.each(e,function(e,r){function i(){return n.prototype[e].apply(this,arguments)}function o(t){return n.prototype[e].apply(this,t)}x.isFunction(r)?s[e]=function(){var t,e=this._super,n=this._superApply;return this._super=i,this._superApply=o,t=r.apply(this,arguments),this._super=e,this._superApply=n,t}:s[e]=r}),i.prototype=x.widget.extend(o,{widgetEventPrefix:r&&o.widgetEventPrefix||t},s,{constructor:i,namespace:a,widgetName:t,widgetFullName:u}),r?(x.each(r._childConstructors,function(t,e){var n=e.prototype;x.widget(n.namespace+\".\"+n.widgetName,i,e._proto)}),delete r._childConstructors):n._childConstructors.push(i),x.widget.bridge(t,i),i},x.widget.extend=function(t){for(var e,n,r=h.call(arguments,1),i=0,o=r.length;i<o;i++)for(e in r[i])n=r[i][e],r[i].hasOwnProperty(e)&&void 0!==n&&(x.isPlainObject(n)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],n):x.widget.extend({},n):t[e]=n);return t},x.widget.bridge=function(o,e){var s=e.prototype.widgetFullName||o;x.fn[o]=function(n){var t=\"string\"==typeof n,r=h.call(arguments,1),i=this;return t?this.length||\"instance\"!==n?this.each(function(){var t,e=x.data(this,s);return\"instance\"===n?(i=e,!1):e?x.isFunction(e[n])&&\"_\"!==n.charAt(0)?(t=e[n].apply(e,r))!==e&&void 0!==t?(i=t&&t.jquery?i.pushStack(t.get()):t,!1):void 0:x.error(\"no such method '\"+n+\"' for \"+o+\" widget instance\"):x.error(\"cannot call methods on \"+o+\" prior to initialization; attempted to call method '\"+n+\"'\")}):i=void 0:(r.length&&(n=x.widget.extend.apply(null,[n].concat(r))),this.each(function(){var t=x.data(this,s);t?(t.option(n||{}),t._init&&t._init()):x.data(this,s,new e(n,this))})),i}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",defaultElement:\"<div>\",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=l++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var n=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){n._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr(\"aria-disabled\"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var n,r,i,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if(\"string\"==typeof t)if(o={},t=(n=t.split(\".\")).shift(),n.length){for(r=o[t]=x.widget.extend({},this.options[t]),i=0;i<n.length-1;i++)r[n[i]]=r[n[i]]||{},r=r[n[i]];if(t=n.pop(),1===arguments.length)return void 0===r[t]?null:r[t];r[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return\"classes\"===t&&this._setOptionClasses(e),this.options[t]=e,\"disabled\"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,n,r;for(e in t)r=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&r&&r.length&&(n=x(r.get()),this._removeClass(r,e),n.addClass(this._classes({element:n,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+\"-disabled\",null,!!t),t&&(this._removeClass(this.hoverable,null,\"ui-state-hover\"),this._removeClass(this.focusable,null,\"ui-state-focus\"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(i){var o=[],s=this;function t(t,e){for(var n,r=0;r<t.length;r++)n=s.classesElementLookup[t[r]]||x(),n=i.add?x(x.unique(n.get().concat(i.element.get()))):x(n.not(i.element).get()),s.classesElementLookup[t[r]]=n,o.push(t[r]),e&&i.classes[t[r]]&&o.push(i.classes[t[r]])}return i=x.extend({element:this.element,classes:this.options.classes||{}},i),this._on(i.element,{remove:\"_untrackClassesElement\"}),i.keys&&t(i.keys.match(/\\S+/g)||[],!0),i.extra&&t(i.extra.match(/\\S+/g)||[]),o.join(\" \")},_untrackClassesElement:function(n){var r=this;x.each(r.classesElementLookup,function(t,e){-1!==x.inArray(n.target,e)&&(r.classesElementLookup[t]=x(e.not(n.target).get()))})},_removeClass:function(t,e,n){return this._toggleClass(t,e,n,!1)},_addClass:function(t,e,n){return this._toggleClass(t,e,n,!0)},_toggleClass:function(t,e,n,r){r=\"boolean\"==typeof r?r:n;var i=\"string\"==typeof t||null===t,t={extra:i?e:n,keys:i?t:e,element:i?this.element:t,add:r};return t.element.toggleClass(this._classes(t),r),this},_on:function(i,o,t){var s,a=this;\"boolean\"!=typeof i&&(t=o,o=i,i=!1),t?(o=s=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,s=this.widget()),x.each(t,function(t,e){function n(){if(i||!0!==a.options.disabled&&!x(this).hasClass(\"ui-state-disabled\"))return(\"string\"==typeof e?a[e]:e).apply(a,arguments)}\"string\"!=typeof e&&(n.guid=e.guid=e.guid||n.guid||x.guid++);var r=t.match(/^([\\w:-]*)\\s*(.*)$/),t=r[1]+a.eventNamespace,r=r[2];r?s.on(t,r,n):o.on(t,n)})},_off:function(t,e){e=(e||\"\").split(\" \").join(this.eventNamespace+\" \")+this.eventNamespace,t.off(e).off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var n=this;return setTimeout(function(){return(\"string\"==typeof t?n[t]:t).apply(n,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,\"ui-state-hover\")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,\"ui-state-hover\")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,\"ui-state-focus\")},focusout:function(t){this._removeClass(x(t.currentTarget),null,\"ui-state-focus\")}})},_trigger:function(t,e,n){var r,i,o=this.options[t];if(n=n||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],i=e.originalEvent)for(r in i)r in e||(e[r]=i[r]);return this.element.trigger(e,n),!(x.isFunction(o)&&!1===o.apply(this.element[0],[e].concat(n))||e.isDefaultPrevented())}},x.each({show:\"fadeIn\",hide:\"fadeOut\"},function(o,s){x.Widget.prototype[\"_\"+o]=function(e,t,n){var r;\"string\"==typeof t&&(t={effect:t});var i=t?!0!==t&&\"number\"!=typeof t&&t.effect||s:o;\"number\"==typeof(t=t||{})&&(t={duration:t}),r=!x.isEmptyObject(t),t.complete=n,t.delay&&e.delay(t.delay),r&&x.effects&&x.effects.effect[i]?e[o](t):i!==o&&e[i]?e[i](t.duration,t.easing,n):e.queue(function(t){x(this)[o](),n&&n.call(e[0]),t()})}}),x.widget,C=Math.max,k=Math.abs,o=/left|center|right/,s=/top|center|bottom/,a=/[\\+\\-]\\d+(\\.[\\d]+)?%?/,u=/^\\w+/,c=/%$/,n=x.fn.position,x.position={scrollbarWidth:function(){if(void 0!==r)return r;var t,e=x(\"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\"),n=e.children()[0];return x(\"body\").append(e),t=n.offsetWidth,e.css(\"overflow\",\"scroll\"),t===(n=n.offsetWidth)&&(n=e[0].clientWidth),e.remove(),r=t-n},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?\"\":t.element.css(\"overflow-x\"),n=t.isWindow||t.isDocument?\"\":t.element.css(\"overflow-y\"),e=\"scroll\"===e||\"auto\"===e&&t.width<t.element[0].scrollWidth;return{width:\"scroll\"===n||\"auto\"===n&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),n=x.isWindow(e[0]),r=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:n,isDocument:r,offset:n||r?{left:0,top:0}:x(t).offset(),scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(h){if(!h||!h.of)return n.apply(this,arguments);h=x.extend({},h);var f,p,d,g,m,t,v=x(h.of),y=x.position.getWithinInfo(h.within),b=x.position.getScrollInfo(y),w=(h.collision||\"flip\").split(\" \"),_={},e=9===(t=(e=v)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:x.isWindow(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return v[0].preventDefault&&(h.at=\"left top\"),p=e.width,d=e.height,g=e.offset,m=x.extend({},g),x.each([\"my\",\"at\"],function(){var t,e,n=(h[this]||\"\").split(\" \");1===n.length&&(n=o.test(n[0])?n.concat([\"center\"]):s.test(n[0])?[\"center\"].concat(n):[\"center\",\"center\"]),n[0]=o.test(n[0])?n[0]:\"center\",n[1]=s.test(n[1])?n[1]:\"center\",t=a.exec(n[0]),e=a.exec(n[1]),_[this]=[t?t[0]:0,e?e[0]:0],h[this]=[u.exec(n[0])[0],u.exec(n[1])[0]]}),1===w.length&&(w[1]=w[0]),\"right\"===h.at[0]?m.left+=p:\"center\"===h.at[0]&&(m.left+=p/2),\"bottom\"===h.at[1]?m.top+=d:\"center\"===h.at[1]&&(m.top+=d/2),f=S(_.at,p,d),m.left+=f[0],m.top+=f[1],this.each(function(){var n,t,s=x(this),a=s.outerWidth(),u=s.outerHeight(),e=O(this,\"marginLeft\"),r=O(this,\"marginTop\"),i=a+e+O(this,\"marginRight\")+b.width,o=u+r+O(this,\"marginBottom\")+b.height,c=x.extend({},m),l=S(_.my,s.outerWidth(),s.outerHeight());\"right\"===h.my[0]?c.left-=a:\"center\"===h.my[0]&&(c.left-=a/2),\"bottom\"===h.my[1]?c.top-=u:\"center\"===h.my[1]&&(c.top-=u/2),c.left+=l[0],c.top+=l[1],n={marginLeft:e,marginTop:r},x.each([\"left\",\"top\"],function(t,e){x.ui.position[w[t]]&&x.ui.position[w[t]][e](c,{targetWidth:p,targetHeight:d,elemWidth:a,elemHeight:u,collisionPosition:n,collisionWidth:i,collisionHeight:o,offset:[f[0]+l[0],f[1]+l[1]],my:h.my,at:h.at,within:y,elem:s})}),h.using&&(t=function(t){var e=g.left-c.left,n=e+p-a,r=g.top-c.top,i=r+d-u,o={target:{element:v,left:g.left,top:g.top,width:p,height:d},element:{element:s,left:c.left,top:c.top,width:a,height:u},horizontal:n<0?\"left\":0<e?\"right\":\"center\",vertical:i<0?\"top\":0<r?\"bottom\":\"middle\"};p<a&&k(e+n)<p&&(o.horizontal=\"center\"),d<u&&k(r+i)<d&&(o.vertical=\"middle\"),C(k(e),k(n))>C(k(r),k(i))?o.important=\"horizontal\":o.important=\"vertical\",h.using.call(this,t,o)}),s.offset(x.extend(c,{using:t}))})},x.ui.position={fit:{left:function(t,e){var n=e.within,r=n.isWindow?n.scrollLeft:n.offset.left,i=n.width,o=t.left-e.collisionPosition.marginLeft,s=r-o,a=o+e.collisionWidth-i-r;e.collisionWidth>i?0<s&&a<=0?(n=t.left+s+e.collisionWidth-i-r,t.left+=s-n):t.left=!(0<a&&s<=0)&&a<s?r+i-e.collisionWidth:r:0<s?t.left+=s:0<a?t.left-=a:t.left=C(t.left-o,t.left)},top:function(t,e){var n=e.within,r=n.isWindow?n.scrollTop:n.offset.top,i=e.within.height,o=t.top-e.collisionPosition.marginTop,s=r-o,a=o+e.collisionHeight-i-r;e.collisionHeight>i?0<s&&a<=0?(n=t.top+s+e.collisionHeight-i-r,t.top+=s-n):t.top=!(0<a&&s<=0)&&a<s?r+i-e.collisionHeight:r:0<s?t.top+=s:0<a?t.top-=a:t.top=C(t.top-o,t.top)}},flip:{left:function(t,e){var n=e.within,r=n.offset.left+n.scrollLeft,i=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,s=t.left-e.collisionPosition.marginLeft,a=s-o,u=s+e.collisionWidth-i-o,c=\"left\"===e.my[0]?-e.elemWidth:\"right\"===e.my[0]?e.elemWidth:0,n=\"left\"===e.at[0]?e.targetWidth:\"right\"===e.at[0]?-e.targetWidth:0,s=-2*e.offset[0];a<0?((r=t.left+c+n+s+e.collisionWidth-i-r)<0||r<k(a))&&(t.left+=c+n+s):0<u&&(0<(o=t.left-e.collisionPosition.marginLeft+c+n+s-o)||k(o)<u)&&(t.left+=c+n+s)},top:function(t,e){var n=e.within,r=n.offset.top+n.scrollTop,i=n.height,o=n.isWindow?n.scrollTop:n.offset.top,s=t.top-e.collisionPosition.marginTop,a=s-o,u=s+e.collisionHeight-i-o,c=\"top\"===e.my[1]?-e.elemHeight:\"bottom\"===e.my[1]?e.elemHeight:0,n=\"top\"===e.at[1]?e.targetHeight:\"bottom\"===e.at[1]?-e.targetHeight:0,s=-2*e.offset[1];a<0?((r=t.top+c+n+s+e.collisionHeight-i-r)<0||r<k(a))&&(t.top+=c+n+s):0<u&&(0<(o=t.top-e.collisionPosition.marginTop+c+n+s-o)||k(o)<u)&&(t.top+=c+n+s)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}},x.ui.position,x.fn.form=function(){return\"string\"==typeof this[0].form?this.closest(\"form\"):x(this[0].form)},x.ui.formResetMixin={_formResetHandler:function(){var e=x(this);setTimeout(function(){var t=e.data(\"ui-form-reset-instances\");x.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element.form(),this.form.length&&((t=this.form.data(\"ui-form-reset-instances\")||[]).length||this.form.on(\"reset.ui-form-reset\",this._formResetHandler),t.push(this),this.form.data(\"ui-form-reset-instances\",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data(\"ui-form-reset-instances\")).splice(x.inArray(this,t),1),t.length?this.form.data(\"ui-form-reset-instances\",t):this.form.removeData(\"ui-form-reset-instances\").off(\"reset.ui-form-reset\"))}},x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},x.ui.escapeSelector=(e=/([!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~])/g,function(t){return t.replace(e,\"\\\\$1\")}),x.fn.labels=function(){var t,e,n;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents(\"label\"),(t=this.attr(\"id\"))&&(n=(n=this.eq(0).parents().last()).add((n.length?n:this).siblings()),t=\"label[for='\"+x.ui.escapeSelector(t)+\"']\",e=e.add(n.find(t).addBack(t))),this.pushStack(e))},x.fn.extend({uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\\d+$/.test(this.id)&&x(this).removeAttr(\"id\")})}});var e,t,f,p=/ui-corner-([a-z]){2,6}/g;x.widget(\"ui.controlgroup\",{version:\"1.12.1\",defaultElement:\"<div>\",options:{direction:\"horizontal\",disabled:null,onlyVisible:!0,items:{button:\"input[type=button], input[type=submit], input[type=reset], button, a\",controlgroupLabel:\".ui-controlgroup-label\",checkboxradio:\"input[type='checkbox'], input[type='radio']\",selectmenu:\"select\",spinner:\".ui-spinner-input\"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr(\"role\",\"toolbar\"),this.refresh()},_destroy:function(){this._callChildMethod(\"destroy\"),this.childWidgets.removeData(\"ui-controlgroup-data\"),this.element.removeAttr(\"role\"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(\".ui-controlgroup-label-contents\").contents().unwrap()},_initWidgets:function(){var o=this,s=[];x.each(this.options.items,function(r,t){var e,i;if(t)return\"controlgroupLabel\"===r?((e=o.element.find(t)).each(function(){var t=x(this);t.children(\".ui-controlgroup-label-contents\").length||t.contents().wrapAll(\"<span class='ui-controlgroup-label-contents'></span>\")}),o._addClass(e,null,\"ui-widget ui-widget-content ui-state-default\"),void(s=s.concat(e.get()))):void(x.fn[r]&&(i=o[\"_\"+r+\"Options\"]?o[\"_\"+r+\"Options\"](\"middle\"):{classes:{}},o.element.find(t).each(function(){var t=x(this),e=t[r](\"instance\"),n=x.widget.extend({},i);\"button\"===r&&t.parent(\".ui-spinner\").length||((e=e||t[r]()[r](\"instance\"))&&(n.classes=o._resolveClassesValues(n.classes,e)),t[r](n),n=t[r](\"widget\"),x.data(n[0],\"ui-controlgroup-data\",e||t[r](\"instance\")),s.push(n[0]))})))}),this.childWidgets=x(x.unique(s)),this._addClass(this.childWidgets,\"ui-controlgroup-item\")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=x(this).data(\"ui-controlgroup-data\");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,\"label\").classes.label;this._removeClass(t,null,\"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var n=\"vertical\"===this.options.direction,r={classes:{}};return r.classes[e]={middle:\"\",first:\"ui-corner-\"+(n?\"top\":\"left\"),last:\"ui-corner-\"+(n?\"bottom\":\"right\"),only:\"ui-corner-all\"}[t],r},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,\"ui-spinner\");return t.classes[\"ui-spinner-up\"]=\"\",t.classes[\"ui-spinner-down\"]=\"\",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,\"ui-button\")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,\"ui-checkboxradio-label\")},_selectmenuOptions:function(t){var e=\"vertical\"===this.options.direction;return{width:!!e&&\"auto\",classes:{middle:{\"ui-selectmenu-button-open\":\"\",\"ui-selectmenu-button-closed\":\"\"},first:{\"ui-selectmenu-button-open\":\"ui-corner-\"+(e?\"top\":\"tl\"),\"ui-selectmenu-button-closed\":\"ui-corner-\"+(e?\"top\":\"left\")},last:{\"ui-selectmenu-button-open\":e?\"\":\"ui-corner-tr\",\"ui-selectmenu-button-closed\":\"ui-corner-\"+(e?\"bottom\":\"right\")},only:{\"ui-selectmenu-button-open\":\"ui-corner-top\",\"ui-selectmenu-button-closed\":\"ui-corner-all\"}}[t]}},_resolveClassesValues:function(n,r){var i={};return x.each(n,function(t){var e=r.options.classes[t]||\"\",e=x.trim(e.replace(p,\"\"));i[t]=(e+\" \"+n[t]).replace(/\\s+/g,\" \")}),i},_setOption:function(t,e){\"direction\"===t&&this._removeClass(\"ui-controlgroup-\"+this.options.direction),this._super(t,e),\"disabled\"!==t?this.refresh():this._callChildMethod(e?\"disable\":\"enable\")},refresh:function(){var i,o=this;this._addClass(\"ui-controlgroup ui-controlgroup-\"+this.options.direction),\"horizontal\"===this.options.direction&&this._addClass(null,\"ui-helper-clearfix\"),this._initWidgets(),i=this.childWidgets,this.options.onlyVisible&&(i=i.filter(\":visible\")),i.length&&(x.each([\"first\",\"last\"],function(t,e){var n,r=i[e]().data(\"ui-controlgroup-data\");r&&o[\"_\"+r.widgetName+\"Options\"]?((n=o[\"_\"+r.widgetName+\"Options\"](1===i.length?\"only\":e)).classes=o._resolveClassesValues(n.classes,r),r.element[r.widgetName](n)):o._updateCornerClass(i[e](),e)}),this._callChildMethod(\"refresh\"))}}),x.widget(\"ui.checkboxradio\",[x.ui.formResetMixin,{version:\"1.12.1\",options:{disabled:null,label:null,icon:!0,classes:{\"ui-checkboxradio-label\":\"ui-corner-all\",\"ui-checkboxradio-icon\":\"ui-corner-all\"}},_getCreateOptions:function(){var t,e=this,n=this._super()||{};return this._readType(),t=this.element.labels(),this.label=x(t[t.length-1]),this.label.length||x.error(\"No label found for checkboxradio widget\"),this.originalLabel=\"\",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?x(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(n.disabled=t),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption(\"disabled\",this.options.disabled),this._addClass(\"ui-checkboxradio\",\"ui-helper-hidden-accessible\"),this._addClass(this.label,\"ui-checkboxradio-label\",\"ui-button ui-widget\"),\"radio\"===this.type&&this._addClass(this.label,\"ui-checkboxradio-radio-label\"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,\"ui-checkboxradio-checked\",\"ui-state-active\"),this.icon&&this._addClass(this.icon,null,\"ui-state-hover\")),this._on({change:\"_toggleClasses\",focus:function(){this._addClass(this.label,null,\"ui-state-focus ui-visual-focus\")},blur:function(){this._removeClass(this.label,null,\"ui-state-focus ui-visual-focus\")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,\"input\"===t&&/radio|checkbox/.test(this.type)||x.error(\"Can't create checkboxradio on element.nodeName=\"+t+\" and element.type=\"+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e=\"input[name='\"+x.ui.escapeSelector(t)+\"']\";return t?(this.form.length?x(this.form[0].elements).filter(e):x(e).filter(function(){return 0===x(this).form().length})).not(this.element):x([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,\"ui-checkboxradio-checked\",\"ui-state-active\",t),this.options.icon&&\"checkbox\"===this.type&&this._toggleClass(this.icon,null,\"ui-icon-check ui-state-checked\",t)._toggleClass(this.icon,null,\"ui-icon-blank\",!t),\"radio\"===this.type&&this._getRadioGroup().each(function(){var t=x(this).checkboxradio(\"instance\");t&&t._removeClass(t.label,\"ui-checkboxradio-checked\",\"ui-state-active\")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if(\"label\"!==t||e){if(this._super(t,e),\"disabled\"===t)return this._toggleClass(this.label,null,\"ui-state-disabled\",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e=\"ui-icon ui-icon-background \";this.options.icon?(this.icon||(this.icon=x(\"<span>\"),this.iconSpace=x(\"<span> </span>\"),this._addClass(this.iconSpace,\"ui-checkboxradio-icon-space\")),\"checkbox\"===this.type?(e+=t?\"ui-icon-check ui-state-checked\":\"ui-icon-blank\",this._removeClass(this.icon,null,t?\"ui-icon-blank\":\"ui-icon-check\")):e+=\"ui-icon-blank\",this._addClass(this.icon,\"ui-checkboxradio-icon\",e),t||this._removeClass(this.icon,null,\"ui-icon-check ui-state-checked\"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,\"ui-checkboxradio-checked\",\"ui-state-active\",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),x.ui.checkboxradio,x.widget(\"ui.button\",{version:\"1.12.1\",defaultElement:\"<button>\",options:{classes:{\"ui-button\":\"ui-corner-all\"},disabled:null,icon:null,iconPosition:\"beginning\",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is(\"input\"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr(\"title\"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass(\"ui-button\",\"ui-widget\"),this._setOption(\"disabled\",this.options.disabled),this._enhance(),this.element.is(\"a\")&&this._on({keyup:function(t){t.keyCode===x.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger(\"click\"))}})},_enhance:function(){this.element.is(\"button\")||this.element.attr(\"role\",\"button\"),this.options.icon&&(this._updateIcon(\"icon\",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr(\"title\"),this.options.showLabel||this.title||this.element.attr(\"title\",this.options.label)},_updateIcon:function(t,e){var n=\"iconPosition\"!==t,r=n?this.options.iconPosition:e,t=\"top\"===r||\"bottom\"===r;this.icon?n&&this._removeClass(this.icon,null,this.options.icon):(this.icon=x(\"<span>\"),this._addClass(this.icon,\"ui-button-icon\",\"ui-icon\"),this.options.showLabel||this._addClass(\"ui-button-icon-only\")),n&&this._addClass(this.icon,null,e),this._attachIcon(r),t?(this._addClass(this.icon,null,\"ui-widget-icon-block\"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=x(\"<span> </span>\"),this._addClass(this.iconSpace,\"ui-button-icon-space\")),this._removeClass(this.icon,null,\"ui-wiget-icon-block\"),this._attachIconSpace(r))},_destroy:function(){this.element.removeAttr(\"role\"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr(\"title\")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?\"before\":\"after\"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?\"append\":\"prepend\"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,n=(void 0===t.icon?this.options:t).icon;e||n||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){\"icon\"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),\"iconPosition\"===t&&this._updateIcon(t,e),\"showLabel\"===t&&(this._toggleClass(\"ui-button-icon-only\",null,!e),this._updateTooltip()),\"label\"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),\"disabled\"===t&&(this._toggleClass(null,\"ui-state-disabled\",e),(this.element[0].disabled=e)&&this.element.blur())},refresh:function(){var t=this.element.is(\"input, button\")?this.element[0].disabled:this.element.hasClass(\"ui-button-disabled\");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==x.uiBackCompat&&(x.widget(\"ui.button\",x.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition=\"end\"),this._super()},_setOption:function(t,e){\"text\"!==t?(\"showLabel\"===t&&(this.options.text=e),\"icon\"===t&&(this.options.icons.primary=e),\"icons\"===t&&(e.primary?(this._super(\"icon\",e.primary),this._super(\"iconPosition\",\"beginning\")):e.secondary&&(this._super(\"icon\",e.secondary),this._super(\"iconPosition\",\"end\"))),this._superApply(arguments)):this._super(\"showLabel\",e)}}),x.fn.button=(f=x.fn.button,function(){return!this.length||this.length&&\"INPUT\"!==this[0].tagName||this.length&&\"INPUT\"===this[0].tagName&&\"checkbox\"!==this.attr(\"type\")&&\"radio\"!==this.attr(\"type\")?f.apply(this,arguments):(x.ui.checkboxradio||x.error(\"Checkboxradio widget missing\"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}),x.fn.buttonset=function(){return x.ui.controlgroup||x.error(\"Controlgroup widget missing\"),\"option\"===arguments[0]&&\"items\"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],\"items.button\",arguments[2]]):\"option\"===arguments[0]&&\"items\"===arguments[1]?this.controlgroup.apply(this,[arguments[0],\"items.button\"]):(\"object\"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),x.ui.button,x.ui.safeActiveElement=function(e){var n;try{n=e.activeElement}catch(t){n=e.body}return(n=n||e.body).nodeName||(n=e.body),n},x.widget(\"ui.menu\",{version:\"1.12.1\",defaultElement:\"<ul>\",delay:300,options:{icons:{submenu:\"ui-icon-caret-1-e\"},items:\"> *\",menus:\"ul\",position:{my:\"left top\",at:\"right top\"},role:\"menu\",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass(\"ui-menu\",\"ui-widget ui-widget-content\"),this._on({\"mousedown .ui-menu-item\":function(t){t.preventDefault()},\"click .ui-menu-item\":function(t){var e=x(t.target),n=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(\".ui-state-disabled\").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(\".ui-menu\").length?this.expand(t):!this.element.is(\":focus\")&&n.closest(\".ui-menu\").length&&(this.element.trigger(\"focus\",[!0]),this.active&&1===this.active.parents(\".ui-menu\").length&&clearTimeout(this.timer)))},\"mouseenter .ui-menu-item\":function(t){var e,n;this.previousFilter||(e=x(t.target).closest(\".ui-menu-item\"),n=x(t.currentTarget),e[0]===n[0]&&(this._removeClass(n.siblings().children(\".ui-state-active\"),null,\"ui-state-active\"),this.focus(t,n)))},mouseleave:\"collapseAll\",\"mouseleave .ui-menu\":\"collapseAll\",focus:function(t,e){var n=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,n)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:\"_keydown\"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var t=this.element.find(\".ui-menu-item\").removeAttr(\"role aria-disabled\").children(\".ui-menu-item-wrapper\").removeUniqueId().removeAttr(\"tabIndex role aria-haspopup\");this.element.removeAttr(\"aria-activedescendant\").find(\".ui-menu\").addBack().removeAttr(\"role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex\").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data(\"ui-menu-submenu-caret\")&&t.remove()})},_keydown:function(t){var e,n,r,i=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move(\"first\",\"first\",t);break;case x.ui.keyCode.END:this._move(\"last\",\"last\",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(\".ui-state-disabled\")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:i=!1,e=this.previousFilter||\"\",r=!1,n=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),n===e?r=!0:n=e+n,e=this._filterMenuItems(n),(e=r&&-1!==e.index(this.active.next())?this.active.nextAll(\".ui-menu-item\"):e).length||(n=String.fromCharCode(t.keyCode),e=this._filterMenuItems(n)),e.length?(this.focus(t,e),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}i&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(\".ui-state-disabled\")&&(this.active.children(\"[aria-haspopup='true']\").length?this.expand(t):this.select(t))},refresh:function(){var t,e,r=this,i=this.options.icons.submenu,n=this.element.find(this.options.menus);this._toggleClass(\"ui-menu-icons\",null,!!this.element.find(\".ui-icon\").length),e=n.filter(\":not(.ui-menu)\").hide().attr({role:this.options.role,\"aria-hidden\":\"true\",\"aria-expanded\":\"false\"}).each(function(){var t=x(this),e=t.prev(),n=x(\"<span>\").data(\"ui-menu-submenu-caret\",!0);r._addClass(n,\"ui-menu-icon\",\"ui-icon \"+i),e.attr(\"aria-haspopup\",\"true\").prepend(n),t.attr(\"aria-labelledby\",e.attr(\"id\"))}),this._addClass(e,\"ui-menu\",\"ui-widget ui-widget-content ui-front\"),(t=n.add(this.element).find(this.options.items)).not(\".ui-menu-item\").each(function(){var t=x(this);r._isDivider(t)&&r._addClass(t,\"ui-menu-divider\",\"ui-widget-content\")}),n=(e=t.not(\".ui-menu-item, .ui-menu-divider\")).children().not(\".ui-menu\").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,\"ui-menu-item\")._addClass(n,\"ui-menu-item-wrapper\"),t.filter(\".ui-state-disabled\").attr(\"aria-disabled\",\"true\"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:\"menuitem\",listbox:\"option\"}[this.options.role]},_setOption:function(t,e){var n;\"icons\"===t&&(n=this.element.find(\".ui-menu-icon\"),this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr(\"aria-disabled\",String(t)),this._toggleClass(null,\"ui-state-disabled\",!!t)},focus:function(t,e){var n;this.blur(t,t&&\"focus\"===t.type),this._scrollIntoView(e),this.active=e.first(),n=this.active.children(\".ui-menu-item-wrapper\"),this._addClass(n,null,\"ui-state-active\"),this.options.role&&this.element.attr(\"aria-activedescendant\",n.attr(\"id\")),n=this.active.parent().closest(\".ui-menu-item\").children(\".ui-menu-item-wrapper\"),this._addClass(n,null,\"ui-state-active\"),t&&\"keydown\"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(n=e.children(\".ui-menu\")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(n),this.activeMenu=e.parent(),this._trigger(\"focus\",t,{item:e})},_scrollIntoView:function(t){var e,n,r;this._hasScroll()&&(n=parseFloat(x.css(this.activeMenu[0],\"borderTopWidth\"))||0,r=parseFloat(x.css(this.activeMenu[0],\"paddingTop\"))||0,e=t.offset().top-this.activeMenu.offset().top-n-r,n=this.activeMenu.scrollTop(),r=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(n+e):r<e+t&&this.activeMenu.scrollTop(n+e-r+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(\".ui-menu-item-wrapper\"),null,\"ui-state-active\"),this._trigger(\"blur\",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),\"true\"===t.attr(\"aria-hidden\")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=x.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(\".ui-menu\").not(t.parents(\".ui-menu\")).hide().attr(\"aria-hidden\",\"true\"),t.show().removeAttr(\"aria-hidden\").attr(\"aria-expanded\",\"true\").position(e)},collapseAll:function(e,n){clearTimeout(this.timer),this.timer=this._delay(function(){var t=n?this.element:x(e&&e.target).closest(this.element.find(\".ui-menu\"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(\".ui-state-active\"),null,\"ui-state-active\"),this.activeMenu=t},this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(\".ui-menu\").hide().attr(\"aria-hidden\",\"true\").attr(\"aria-expanded\",\"false\")},_closeOnDocumentClick:function(t){return!x(t.target).closest(\".ui-menu\").length},_isDivider:function(t){return!/[^\\-\\u2014\\u2013\\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(\".ui-menu-item\",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(\".ui-menu \").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move(\"next\",\"first\",t)},previous:function(t){this._move(\"prev\",\"last\",t)},isFirstItem:function(){return this.active&&!this.active.preval(\".ui-menu-item\").length},isLastItem:function(){return this.active&&!this.active.nextAll(\".ui-menu-item\").length},_move:function(t,e,n){var r;this.active&&(r=\"first\"===t||\"last\"===t?this.active[\"first\"===t?\"prevAll\":\"nextAll\"](\".ui-menu-item\").eq(-1):this.active[t+\"All\"](\".ui-menu-item\").eq(0)),r&&r.length&&this.active||(r=this.activeMenu.find(this.options.items)[e]()),this.focus(n,r)},nextPage:function(t){var e,n,r;this.active?this.isLastItem()||(this._hasScroll()?(n=this.active.offset().top,r=this.element.height(),this.active.nextAll(\".ui-menu-item\").each(function(){return(e=x(this)).offset().top-n-r<0}),this.focus(t,e)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?\"last\":\"first\"]())):this.next(t)},previousPage:function(t){var e,n,r;this.active?this.isFirstItem()||(this._hasScroll()?(n=this.active.offset().top,r=this.element.height(),this.active.preval(\".ui-menu-item\").each(function(){return 0<(e=x(this)).offset().top-n+r}),this.focus(t,e)):this.focus(t,this.activeMenu.find(this.options.items).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop(\"scrollHeight\")},select:function(t){this.active=this.active||x(t.target).closest(\".ui-menu-item\");var e={item:this.active};this.active.has(\".ui-menu\").length||this.collapseAll(t,!0),this._trigger(\"select\",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\"),e=new RegExp(\"^\"+t,\"i\");return this.activeMenu.find(this.options.items).filter(\".ui-menu-item\").filter(function(){return e.test(x.trim(x(this).children(\".ui-menu-item-wrapper\").text()))})}}),x.ui.ie=!!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase());var d=!1;function g(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger(\"change\")}}x(document).on(\"mouseup\",function(){d=!1}),x.widget(\"ui.mouse\",{version:\"1.12.1\",options:{cancel:\"input, textarea, button, select, option\",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on(\"mousedown.\"+this.widgetName,function(t){return e._mouseDown(t)}).on(\"click.\"+this.widgetName,function(t){if(!0===x.data(t.target,e.widgetName+\".preventClickEvent\"))return x.removeData(t.target,e.widgetName+\".preventClickEvent\"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off(\".\"+this.widgetName),this._mouseMoveDelegate&&this.document.off(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).off(\"mouseup.\"+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,n=1===t.which,r=!(\"string\"!=typeof this.options.cancel||!t.target.nodeName)&&x(t.target).closest(this.options.cancel).length;return!(n&&!r&&this._mouseCapture(t))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===x.data(t.target,this.widgetName+\".preventClickEvent\")&&x.removeData(t.target,this.widgetName+\".preventClickEvent\"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).on(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0))}},_mouseMove:function(t){if(this._mouseMoved){if(x.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).off(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&x.data(t.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,d=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),x.widget(\"ui.selectmenu\",[x.ui.formResetMixin,{version:\"1.12.1\",defaultElement:\"<select>\",options:{appendTo:null,classes:{\"ui-selectmenu-button-open\":\"ui-corner-top\",\"ui-selectmenu-button-closed\":\"ui-corner-all\"},disabled:null,icons:{button:\"ui-icon-triangle-1-s\"},position:{my:\"left top\",at:\"left bottom\",collision:\"none\"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr(\"id\");this.ids={element:t,button:t+\"-button\",menu:t+\"-menu\"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=x()},_drawButton:function(){var t,e=this,n=this._parseOption(this.element.find(\"option:selected\"),this.element[0].selectedIndex);this.labels=this.element.labels().attr(\"for\",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=x(\"<span>\",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:\"combobox\",\"aria-expanded\":\"false\",\"aria-autocomplete\":\"list\",\"aria-owns\":this.ids.menu,\"aria-haspopup\":\"true\",title:this.element.attr(\"title\")}).insertAfter(this.element),this._addClass(this.button,\"ui-selectmenu-button ui-selectmenu-button-closed\",\"ui-button ui-widget\"),t=x(\"<span>\").appendTo(this.button),this._addClass(t,\"ui-selectmenu-icon\",\"ui-icon \"+this.options.icons.button),this.buttonItem=this._renderButtonItem(n).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one(\"focusin\",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var n=this;this.menu=x(\"<ul>\",{\"aria-hidden\":\"true\",\"aria-labelledby\":this.ids.button,id:this.ids.menu}),this.menuWrap=x(\"<div>\").append(this.menu),this._addClass(this.menuWrap,\"ui-selectmenu-menu\",\"ui-front\"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{\"ui-menu\":\"ui-corner-bottom\"},role:\"listbox\",select:function(t,e){t.preventDefault(),n._setSelection(),n._select(e.item.data(\"ui-selectmenu-item\"),t)},focus:function(t,e){e=e.item.data(\"ui-selectmenu-item\");null!=n.focusIndex&&e.index!==n.focusIndex&&(n._trigger(\"focus\",t,{item:e}),n.isOpen||n._select(e,t)),n.focusIndex=e.index,n.button.attr(\"aria-activedescendant\",n.menuItems.eq(e.index).attr(\"id\"))}}).menu(\"instance\"),this.menuInstance._off(this.menu,\"mouseleave\"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data(\"ui-selectmenu-item\")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find(\"option\");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find(\"li\").not(\".ui-selectmenu-optgroup\").find(\".ui-menu-item-wrapper\"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data(\"ui-selectmenu-item\")),this._setOption(\"disabled\",this.element.prop(\"disabled\")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(\".ui-state-active\"),null,\"ui-state-active\"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger(\"open\",t)))},_position:function(){this.menuWrap.position(x.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger(\"close\",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=x(\"<span>\");return this._setText(e,t.label),this._addClass(e,\"ui-selectmenu-text\"),e},_renderMenu:function(r,t){var i=this,o=\"\";x.each(t,function(t,e){var n;e.optgroup!==o&&(n=x(\"<li>\",{text:e.optgroup}),i._addClass(n,\"ui-selectmenu-optgroup\",\"ui-menu-divider\"+(e.element.parent(\"optgroup\").prop(\"disabled\")?\" ui-state-disabled\":\"\")),n.appendTo(r),o=e.optgroup),i._renderItemData(r,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data(\"ui-selectmenu-item\",e)},_renderItem:function(t,e){var n=x(\"<li>\"),r=x(\"<div>\",{title:e.element.attr(\"title\")});return e.disabled&&this._addClass(n,null,\"ui-state-disabled\"),this._setText(r,e.label),n.append(r).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(\"&#160;\")},_move:function(t,e){var n,r=\".ui-menu-item\";this.isOpen?n=this.menuItems.eq(this.focusIndex).parent(\"li\"):(n=this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\"),r+=\":not(.ui-state-disabled)\"),(r=\"first\"===t||\"last\"===t?n[\"first\"===t?\"prevAll\":\"nextAll\"](r).eq(-1):n[t+\"All\"](r).eq(0)).length&&this.menuInstance.focus(e,r)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\")},_toggle:function(t){this[this.isOpen?\"close\":\"open\"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(x(t.target).closest(\".ui-selectmenu-menu, #\"+x.ui.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case x.ui.keyCode.TAB:case x.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case x.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case x.ui.keyCode.UP:t.altKey?this._toggle(t):this._move(\"prev\",t);break;case x.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move(\"next\",t);break;case x.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case x.ui.keyCode.LEFT:this._move(\"prev\",t);break;case x.ui.keyCode.RIGHT:this._move(\"next\",t);break;case x.ui.keyCode.HOME:case x.ui.keyCode.PAGE_UP:this._move(\"first\",t);break;case x.ui.keyCode.END:case x.ui.keyCode.PAGE_DOWN:this._move(\"last\",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent(\"li\");e.hasClass(\"ui-state-disabled\")||this._select(e.data(\"ui-selectmenu-item\"),t)},_select:function(t,e){var n=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger(\"select\",e,{item:t}),t.index!==n&&this._trigger(\"change\",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr(\"id\");this.button.attr({\"aria-labelledby\":t,\"aria-activedescendant\":t}),this.menu.attr(\"aria-activedescendant\",t)},_setOption:function(t,e){var n;\"icons\"===t&&(n=this.button.find(\"span.ui-icon\"),this._removeClass(n,null,this.options.icons.button)._addClass(n,null,e.button)),this._super(t,e),\"appendTo\"===t&&this.menuWrap.appendTo(this._appendTo()),\"width\"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option(\"disabled\",t),this.button.attr(\"aria-disabled\",t),this._toggleClass(this.button,null,\"ui-state-disabled\",t),this.element.prop(\"disabled\",t),t?(this.button.attr(\"tabindex\",-1),this.close()):this.button.attr(\"tabindex\",0)},_appendTo:function(){var t=this.options.appendTo;return(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))&&t[0]||(t=this.element.closest(\".ui-front, dialog\")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.attr(\"aria-expanded\",this.isOpen),this._removeClass(this.button,\"ui-selectmenu-button-\"+(this.isOpen?\"closed\":\"open\"))._addClass(this.button,\"ui-selectmenu-button-\"+(this.isOpen?\"open\":\"closed\"))._toggleClass(this.menuWrap,\"ui-selectmenu-open\",null,this.isOpen),this.menu.attr(\"aria-hidden\",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css(\"width\",\"\")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width(\"\").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop(\"disabled\"),t},_parseOptions:function(t){var n=this,r=[];t.each(function(t,e){r.push(n._parseOption(x(e),t))}),this.items=r},_parseOption:function(t,e){var n=t.parent(\"optgroup\");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:n.attr(\"label\")||\"\",disabled:n.prop(\"disabled\")||t.prop(\"disabled\")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr(\"for\",this.ids.element)}}]),x.widget(\"ui.slider\",x.ui.mouse,{version:\"1.12.1\",widgetEventPrefix:\"slide\",options:{animate:!1,classes:{\"ui-slider\":\"ui-corner-all\",\"ui-slider-handle\":\"ui-corner-all\",\"ui-slider-range\":\"ui-corner-all ui-widget-header\"},distance:0,max:100,min:0,orientation:\"horizontal\",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass(\"ui-slider ui-slider-\"+this.orientation,\"ui-widget ui-widget-content\"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,n=this.element.find(\".ui-slider-handle\"),r=[],i=e.values&&e.values.length||1;for(n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;t<i;t++)r.push(\"<span tabindex='0'></span>\");this.handles=n.add(x(r.join(\"\")).appendTo(this.element)),this._addClass(this.handles,\"ui-slider-handle\",\"ui-state-default\"),this.handle=this.handles.eq(0),this.handles.each(function(t){x(this).data(\"ui-slider-handle-index\",t).attr(\"tabIndex\",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:x.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,\"ui-slider-range-min ui-slider-range-max\"),this.range.css({left:\"\",bottom:\"\"})):(this.range=x(\"<div>\").appendTo(this.element),this._addClass(this.range,\"ui-slider-range\")),\"min\"!==t.range&&\"max\"!==t.range||this._addClass(this.range,\"ui-slider-range-\"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,o,e,s,a=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),s={x:t.pageX,y:t.pageY},n=this._normValueFromMouse(s),r=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(n-a.values(t));(e<r||r===e&&(t===a._lastChangedValue||a.values(t)===u.min))&&(r=e,i=x(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(i,null,\"ui-state-active\"),i.trigger(\"focus\"),e=i.offset(),s=!x(t.target).parents().addBack().is(\".ui-slider-handle\"),this._clickOffset=s?{left:0,top:0}:{left:t.pageX-e.left,top:t.pageY-e.top-i.height()/2-(parseInt(i.css(\"borderTopWidth\"),10)||0)-(parseInt(i.css(\"borderBottomWidth\"),10)||0)+(parseInt(i.css(\"marginTop\"),10)||0)},this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,\"ui-state-active\"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation=\"vertical\"===this.options.orientation?\"vertical\":\"horizontal\"},_normValueFromMouse:function(t){var e,t=\"horizontal\"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));return 1<(t=t/e)&&(t=1),t<0&&(t=0),\"vertical\"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,n){var r={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(r.value=void 0!==e?e:this.values(t),r.values=n||this.values()),r},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger(\"start\",t,this._uiHash(e))},_slide:function(t,e,n){var r,i=this.value(),o=this.values();this._hasMultipleValues()&&(r=this.values(e?0:1),i=this.values(e),2===this.options.values.length&&!0===this.options.range&&(n=0===e?Math.min(r,n):Math.max(r,n)),o[e]=n),n!==i&&!1!==this._trigger(\"slide\",t,this._uiHash(e,n,o))&&(this._hasMultipleValues()?this.values(e,n):this.value(n))},_stop:function(t,e){this._trigger(\"stop\",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger(\"change\",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var n,r,i;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!x.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(n=this.options.values,r=t,i=0;i<n.length;i+=1)n[i]=this._trimAlignValue(r[i]),this._change(null,i);this._refreshValue()},_setOption:function(t,e){var n,r=0;switch(\"range\"===t&&!0===this.options.range&&(\"min\"===e?(this.options.value=this._values(0),this.options.values=null):\"max\"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),x.isArray(this.options.values)&&(r=this.options.values.length),this._super(t,e),t){case\"orientation\":this._detectOrientation(),this._removeClass(\"ui-slider-horizontal ui-slider-vertical\")._addClass(\"ui-slider-\"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css(\"horizontal\"===e?\"bottom\":\"left\",\"\");break;case\"value\":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case\"values\":for(this._animateOff=!0,this._refreshValue(),n=r-1;0<=n;n--)this._change(null,n);this._animateOff=!1;break;case\"step\":case\"min\":case\"max\":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case\"range\":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,\"ui-state-disabled\",!!t)},_value:function(){var t=this.options.value;return this._trimAlignValue(t)},_values:function(t){var e,n,r;if(arguments.length)return e=this.options.values[t],this._trimAlignValue(e);if(this._hasMultipleValues()){for(n=this.options.values.slice(),r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,n=(t-this._valueMin())%e,t=t-n;return 2*Math.abs(n)>=e&&(t+=0<n?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),n=this.options.step;(t=Math.round((t-e)/n)*n+e)>this.options.max&&(t-=n),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(\".\");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){\"vertical\"===t&&this.range.css({width:\"\",left:\"\"}),\"horizontal\"===t&&this.range.css({height:\"\",bottom:\"\"})},_refreshValue:function(){var e,n,t,r,i,o=this.options.range,s=this.options,a=this,u=!this._animateOff&&s.animate,c={};this._hasMultipleValues()?this.handles.each(function(t){n=(a.values(t)-a._valueMin())/(a._valueMax()-a._valueMin())*100,c[\"horizontal\"===a.orientation?\"left\":\"bottom\"]=n+\"%\",x(this).stop(1,1)[u?\"animate\":\"css\"](c,s.animate),!0===a.options.range&&(\"horizontal\"===a.orientation?(0===t&&a.range.stop(1,1)[u?\"animate\":\"css\"]({left:n+\"%\"},s.animate),1===t&&a.range[u?\"animate\":\"css\"]({width:n-e+\"%\"},{queue:!1,duration:s.animate})):(0===t&&a.range.stop(1,1)[u?\"animate\":\"css\"]({bottom:n+\"%\"},s.animate),1===t&&a.range[u?\"animate\":\"css\"]({height:n-e+\"%\"},{queue:!1,duration:s.animate}))),e=n}):(t=this.value(),r=this._valueMin(),i=this._valueMax(),n=i!==r?(t-r)/(i-r)*100:0,c[\"horizontal\"===this.orientation?\"left\":\"bottom\"]=n+\"%\",this.handle.stop(1,1)[u?\"animate\":\"css\"](c,s.animate),\"min\"===o&&\"horizontal\"===this.orientation&&this.range.stop(1,1)[u?\"animate\":\"css\"]({width:n+\"%\"},s.animate),\"max\"===o&&\"horizontal\"===this.orientation&&this.range.stop(1,1)[u?\"animate\":\"css\"]({width:100-n+\"%\"},s.animate),\"min\"===o&&\"vertical\"===this.orientation&&this.range.stop(1,1)[u?\"animate\":\"css\"]({height:n+\"%\"},s.animate),\"max\"===o&&\"vertical\"===this.orientation&&this.range.stop(1,1)[u?\"animate\":\"css\"]({height:100-n+\"%\"},s.animate))},_handleEvents:{keydown:function(t){var e,n,r,i=x(t.target).data(\"ui-slider-handle-index\");switch(t.keyCode){case x.ui.keyCode.HOME:case x.ui.keyCode.END:case x.ui.keyCode.PAGE_UP:case x.ui.keyCode.PAGE_DOWN:case x.ui.keyCode.UP:case x.ui.keyCode.RIGHT:case x.ui.keyCode.DOWN:case x.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(x(t.target),null,\"ui-state-active\"),!1===this._start(t,i)))return}switch(r=this.options.step,e=n=this._hasMultipleValues()?this.values(i):this.value(),t.keyCode){case x.ui.keyCode.HOME:n=this._valueMin();break;case x.ui.keyCode.END:n=this._valueMax();break;case x.ui.keyCode.PAGE_UP:n=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case x.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case x.ui.keyCode.UP:case x.ui.keyCode.RIGHT:if(e===this._valueMax())return;n=this._trimAlignValue(e+r);break;case x.ui.keyCode.DOWN:case x.ui.keyCode.LEFT:if(e===this._valueMin())return;n=this._trimAlignValue(e-r)}this._slide(t,i,n)},keyup:function(t){var e=x(t.target).data(\"ui-slider-handle-index\");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(x(t.target),null,\"ui-state-active\"))}}}),x.widget(\"ui.spinner\",{version:\"1.12.1\",defaultElement:\"<input>\",widgetEventPrefix:\"spin\",options:{classes:{\"ui-spinner\":\"ui-corner-all\",\"ui-spinner-down\":\"ui-corner-br\",\"ui-spinner-up\":\"ui-corner-tr\"},culture:null,icons:{down:\"ui-icon-triangle-1-s\",up:\"ui-icon-triangle-1-n\"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption(\"max\",this.options.max),this._setOption(\"min\",this.options.min),this._setOption(\"step\",this.options.step),\"\"!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr(\"autocomplete\")}})},_getCreateOptions:function(){var r=this._super(),i=this.element;return x.each([\"min\",\"max\",\"step\"],function(t,e){var n=i.attr(e);null!=n&&n.length&&(r[e]=n)}),r},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:\"_stop\",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger(\"change\",t))},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},\"mousedown .ui-spinner-button\":function(t){var e;function n(){this.element[0]===x.ui.safeActiveElement(this.document[0])||(this.element.trigger(\"focus\"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===x.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),n.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,n.call(this)}),!1!==this._start(t)&&this._repeat(null,x(t.currentTarget).hasClass(\"ui-spinner-up\")?1:-1,t)},\"mouseup .ui-spinner-button\":\"_stop\",\"mouseenter .ui-spinner-button\":function(t){if(x(t.currentTarget).hasClass(\"ui-state-active\"))return!1!==this._start(t)&&void this._repeat(null,x(t.currentTarget).hasClass(\"ui-spinner-up\")?1:-1,t)},\"mouseleave .ui-spinner-button\":\"_stop\"},_enhance:function(){this.uiSpinner=this.element.attr(\"autocomplete\",\"off\").wrap(\"<span>\").parent().append(\"<a></a><a></a>\")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,\"ui-spinner\",\"ui-widget ui-widget-content\"),this._addClass(\"ui-spinner-input\"),this.element.attr(\"role\",\"spinbutton\"),this.buttons=this.uiSpinner.children(\"a\").attr(\"tabIndex\",-1).attr(\"aria-hidden\",!0).button({classes:{\"ui-button\":\"\"}}),this._removeClass(this.buttons,\"ui-corner-all\"),this._addClass(this.buttons.first(),\"ui-spinner-button ui-spinner-up\"),this._addClass(this.buttons.last(),\"ui-spinner-button ui-spinner-down\"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,n=x.ui.keyCode;switch(t.keyCode){case n.UP:return this._repeat(null,1,t),!0;case n.DOWN:return this._repeat(null,-1,t),!0;case n.PAGE_UP:return this._repeat(null,e.page,t),!0;case n.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger(\"start\",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,n){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,n)},t),this._spin(e*this.options.step,n)},_spin:function(t,e){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+t*this._increment(this.counter)),this.spinning&&!1===this._trigger(\"spin\",e,{value:n})||(this._value(n),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?x.isFunction(e)?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(\".\");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e,n=this.options,r=t-(e=null!==n.min?n.min:0);return t=e+Math.round(r/n.step)*n.step,t=parseFloat(t.toFixed(this._precision())),null!==n.max&&t>n.max?n.max:null!==n.min&&t<n.min?n.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger(\"stop\",t))},_setOption:function(t,e){var n;if(\"culture\"===t||\"numberFormat\"===t)return n=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(n));\"max\"!==t&&\"min\"!==t&&\"step\"!==t||\"string\"==typeof e&&(e=this._parse(e)),\"icons\"===t&&(n=this.buttons.first().find(\".ui-icon\"),this._removeClass(n,null,this.options.icons.up),this._addClass(n,null,e.up),n=this.buttons.last().find(\".ui-icon\"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,\"ui-state-disabled\",!!t),this.element.prop(\"disabled\",!!t),this.buttons.button(t?\"disable\":\"enable\")},_setOptions:g(function(t){this._super(t)}),_parse:function(t){return\"string\"==typeof t&&\"\"!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),\"\"===t||isNaN(t)?null:t},_format:function(t){return\"\"===t?\"\":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({\"aria-valuemin\":this.options.min,\"aria-valuemax\":this.options.max,\"aria-valuenow\":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var n;\"\"!==t&&null!==(n=this._parse(t))&&(e||(n=this._adjustValue(n)),t=this._format(n)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop(\"disabled\",!1).removeAttr(\"autocomplete role aria-valuemin aria-valuemax aria-valuenow\"),this.uiSpinner.replaceWith(this.element)},stepUp:g(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:g(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:g(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:g(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());g(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==x.uiBackCompat&&x.widget(\"ui.spinner\",x.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr(\"autocomplete\",\"off\").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return\"<span>\"},_buttonHtml:function(){return\"<a></a><a></a>\"}}),x.ui.spinner};\"function\"==typeof define&&define.amd?define([\"jquery\"],t):t(jQuery)}(),function(t){\"function\"==typeof define&&define.amd?define([\"jquery\"],t):\"object\"==typeof exports?module.exports=t:t(jQuery)}(function(l){function e(t){var e,n=t||window.event,r=g.call(arguments,1),i=0,o=0,s=0,a=0,u=0,c=0;if((t=l.event.fix(n)).type=\"mousewheel\",\"detail\"in n&&(s=-1*n.detail),\"wheelDelta\"in n&&(s=n.wheelDelta),\"wheelDeltaY\"in n&&(s=n.wheelDeltaY),\"wheelDeltaX\"in n&&(o=-1*n.wheelDeltaX),\"axis\"in n&&n.axis===n.HORIZONTAL_AXIS&&(o=-1*s,s=0),i=0===s?o:s,\"deltaY\"in n&&(i=s=-1*n.deltaY),\"deltaX\"in n&&(o=n.deltaX,0===s&&(i=-1*o)),0!==s||0!==o){1===n.deltaMode?(i*=e=l.data(this,\"mousewheel-line-height\"),s*=e,o*=e):2===n.deltaMode&&(i*=e=l.data(this,\"mousewheel-page-height\"),s*=e,o*=e);var a=Math.max(Math.abs(s),Math.abs(o));return d&&!(a<d)||f(n,d=a)&&(d/=40),f(n,a)&&(i/=40,o/=40,s/=40),i=Math[1<=i?\"floor\":\"ceil\"](i/d),o=Math[1<=o?\"floor\":\"ceil\"](o/d),s=Math[1<=s?\"floor\":\"ceil\"](s/d),m.settings.normalizeOffset&&this.getBoundingClientRect&&(a=this.getBoundingClientRect(),u=t.clientX-a.left,c=t.clientY-a.top),t.deltaX=o,t.deltaY=s,t.deltaFactor=d,t.offsetX=u,t.offsetY=c,t.deltaMode=0,r.unshift(t,i,o,s),p&&clearTimeout(p),p=setTimeout(h,200),(l.event.dispatch||l.event.handle).apply(this,r)}}function h(){d=null}function f(t,e){return m.settings.adjustOldDeltas&&\"mousewheel\"===t.type&&e%120==0}var p,d,t=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],n=\"onwheel\"in document||9<=document.documentMode?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],g=Array.prototype.slice;if(l.event.fixHooks)for(var r=t.length;r;)l.event.fixHooks[t[--r]]=l.event.mouseHooks;var m=l.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var t=n.length;t;)this.addEventListener(n[--t],e,!1);else this.onmousewheel=e;l.data(this,\"mousewheel-line-height\",m.getLineHeight(this)),l.data(this,\"mousewheel-page-height\",m.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var t=n.length;t;)this.removeEventListener(n[--t],e,!1);else this.onmousewheel=null;l.removeData(this,\"mousewheel-line-height\"),l.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(t){var e=l(t),t=e[\"offsetParent\"in l.fn?\"offsetParent\":\"parent\"]();return t.length||(t=l(\"body\")),parseInt(t.css(\"fontSize\"),10)||parseInt(e.css(\"fontSize\"),10)||16},getPageHeight:function(t){return l(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};l.fn.extend({mousewheel:function(t){return t?this.bind(\"mousewheel\",t):this.trigger(\"mousewheel\")},unmousewheel:function(t){return this.unbind(\"mousewheel\",t)}})}),function(t){var e;\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):(\"undefined\"!=typeof window?e=window:\"undefined\"!=typeof global?e=global:\"undefined\"!=typeof self&&(e=self),e.html2canvas=t())}(function(){return function r(i,o,s){function a(n,t){if(!o[n]){if(!i[n]){var e=\"function\"==typeof require&&require;if(!t&&e)return e(n,!0);if(u)return u(n,!0);e=new Error(\"Cannot find module '\"+n+\"'\");throw e.code=\"MODULE_NOT_FOUND\",e}e=o[n]={exports:{}};i[n][0].call(e.exports,function(t){var e=i[n][1][t];return a(e||t)},e,e.exports,r,i,o,s)}return o[n].exports}for(var u=\"function\"==typeof require&&require,t=0;t<s.length;t++)a(s[t]);return a}({1:[function(t,P,N){(function(j){!function(t){function v(t){throw RangeError(g[t])}function n(t,e){for(var n=t.length;n--;)t[n]=e(t[n]);return t}function e(t,e){return n(t.split(p),e).join(\".\")}function y(t){for(var e,n,r=[],i=0,o=t.length;i<o;)55296<=(e=t.charCodeAt(i++))&&e<=56319&&i<o?56320==(64512&(n=t.charCodeAt(i++)))?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),i--):r.push(e);return r}function d(t){return n(t,function(t){var e=\"\";return 65535<t&&(e+=A((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+A(t)}).join(\"\")}function b(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function w(t,e,n){var r=0;for(t=n?T(t/l):t>>1,t+=T(t/e);m*k>>1<t;r+=x)t=T(t/m);return T(r+(m+1)*t/(t+c))}function r(t){var e,n,r,i,o,s,a,u=[],c=t.length,l=0,h=O,f=S,p=t.lastIndexOf(E);for(p<0&&(p=0),n=0;n<p;++n)128<=t.charCodeAt(n)&&v(\"not-basic\"),u.push(t.charCodeAt(n));for(r=0<p?p+1:0;r<c;){for(i=l,o=1,s=x;c<=r&&v(\"invalid-input\"),a=t.charCodeAt(r++),(x<=(a=a-48<10?a-22:a-65<26?a-65:a-97<26?a-97:x)||a>T((_-l)/o))&&v(\"overflow\"),l+=a*o,!(a<(a=s<=f?C:f+k<=s?k:s-f));s+=x)o>T(_/(a=x-a))&&v(\"overflow\"),o*=a;f=w(l-i,e=u.length+1,0==i),T(l/e)>_-h&&v(\"overflow\"),h+=T(l/e),l%=e,u.splice(l++,0,h)}return d(u)}function i(t){for(var e,n,r,i,o,s,a,u,c,l,h,f=[],p=(t=y(t)).length,d=O,g=S,m=e=0;m<p;++m)(u=t[m])<128&&f.push(A(u));for(n=r=f.length,r&&f.push(E);n<p;){for(i=_,m=0;m<p;++m)d<=(u=t[m])&&u<i&&(i=u);for(i-d>T((_-e)/(c=n+1))&&v(\"overflow\"),e+=(i-d)*c,d=i,m=0;m<p;++m)if((u=t[m])<d&&++e>_&&v(\"overflow\"),u==d){for(o=e,s=x;!(o<(a=s<=g?C:g+k<=s?k:s-g));s+=x)h=o-a,l=x-a,f.push(A(b(a+h%l,0))),o=T(h/l);f.push(A(b(o,0))),g=w(e,c,n==r),e=0,++n}++e,++d}return f.join(\"\")}var o=\"object\"==typeof N&&N,s=\"object\"==typeof P&&P&&P.exports==o&&P,a=\"object\"==typeof j&&j;a.global!==a&&a.window!==a||(t=a);var u,_=2147483647,x=36,C=1,k=26,c=38,l=700,S=72,O=128,E=\"-\",h=/^xn--/,f=/[^ -~]/,p=/\\x2E|\\u3002|\\uFF0E|\\uFF61/g,g={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},m=x-C,T=Math.floor,A=String.fromCharCode,I={version:\"1.2.4\",ucs2:{decode:y,encode:d},decode:r,encode:i,toASCII:function(t){return e(t,function(t){return f.test(t)?\"xn--\"+i(t):t})},toUnicode:function(t){return e(t,function(t){return h.test(t)?r(t.slice(4).toLowerCase()):t})}};if(0,o&&!o.nodeType)if(s)s.exports=I;else for(u in I)I.hasOwnProperty(u)&&(o[u]=I[u]);else t.punycode=I}(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],2:[function(t,e){function i(t,e){for(var n=3===t.nodeType?document.createTextNode(t.nodeValue):t.cloneNode(!1),r=t.firstChild;r;)!0!==e&&1===r.nodeType&&\"SCRIPT\"===r.nodeName||n.appendChild(i(r,e)),r=r.nextSibling;return 1===t.nodeType&&(n._scrollTop=t.scrollTop,n._scrollLeft=t.scrollLeft,\"CANVAS\"===t.nodeName?function(e,t){try{t&&(t.width=e.width,t.height=e.height,t.getContext(\"2d\").putImageData(e.getContext(\"2d\").getImageData(0,0,e.width,e.height),0,0))}catch(t){o(\"Unable to copy canvas content from\",e,t)}}(t,n):\"TEXTAREA\"!==t.nodeName&&\"SELECT\"!==t.nodeName||(n.value=t.value)),n}var o=t(\"./log\");e.exports=function(o,t,e,n,s,a,u){var c=i(o.documentElement,s.javascriptEnabled),l=t.createElement(\"iframe\");return l.className=\"html2canvas-container\",l.style.visibility=\"hidden\",l.style.position=\"fixed\",l.style.left=\"-10000px\",l.style.top=\"0px\",l.style.border=\"0\",l.width=e,l.height=n,l.scrolling=\"no\",t.body.appendChild(l),new Promise(function(e){var t,n,r,i=l.contentWindow.document;l.contentWindow.onload=l.onload=function(){var t=setInterval(function(){0<i.body.childNodes.length&&(function t(e){if(1===e.nodeType){e.scrollTop=e._scrollTop,e.scrollLeft=e._scrollLeft;for(var n=e.firstChild;n;)t(n),n=n.nextSibling}}(i.documentElement),clearInterval(t),\"view\"===s.type&&(l.contentWindow.scrollTo(a,u),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||l.contentWindow.scrollY===u&&l.contentWindow.scrollX===a||(i.documentElement.style.top=-u+\"px\",i.documentElement.style.left=-a+\"px\",i.documentElement.style.position=\"absolute\")),e(l))},50)},i.open(),i.write(\"<!DOCTYPE html><html></html>\"),n=a,r=u,!(t=o).defaultView||n===t.defaultView.pageXOffset&&r===t.defaultView.pageYOffset||t.defaultView.scrollTo(n,r),i.replaceChild(i.adoptNode(c),i.documentElement),i.close()})}},{\"./log\":13}],3:[function(t,e){function n(t){this.r=0,this.g=0,this.b=0,this.a=null,this.fromArray(t)||this.namedColor(t)||this.rgb(t)||this.rgba(t)||this.hex6(t)||this.hex3(t)}n.prototype.darken=function(t){t=1-t;return new n([Math.round(this.r*t),Math.round(this.g*t),Math.round(this.b*t),this.a])},n.prototype.isTransparent=function(){return 0===this.a},n.prototype.isBlack=function(){return 0===this.r&&0===this.g&&0===this.b},n.prototype.fromArray=function(t){return Array.isArray(t)&&(this.r=Math.min(t[0],255),this.g=Math.min(t[1],255),this.b=Math.min(t[2],255),3<t.length&&(this.a=t[3])),Array.isArray(t)};var r=/^#([a-f0-9]{3})$/i;n.prototype.hex3=function(t){var e;return null!==(e=t.match(r))&&(this.r=parseInt(e[1][0]+e[1][0],16),this.g=parseInt(e[1][1]+e[1][1],16),this.b=parseInt(e[1][2]+e[1][2],16)),null!==e};var i=/^#([a-f0-9]{6})$/i;n.prototype.hex6=function(t){var e=null;return null!==(e=t.match(i))&&(this.r=parseInt(e[1].substring(0,2),16),this.g=parseInt(e[1].substring(2,4),16),this.b=parseInt(e[1].substring(4,6),16)),null!==e};var o=/^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/;n.prototype.rgb=function(t){var e;return null!==(e=t.match(o))&&(this.r=Number(e[1]),this.g=Number(e[2]),this.b=Number(e[3])),null!==e};var s=/^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d?\\.?\\d+)\\s*\\)$/;n.prototype.rgba=function(t){var e;return null!==(e=t.match(s))&&(this.r=Number(e[1]),this.g=Number(e[2]),this.b=Number(e[3]),this.a=Number(e[4])),null!==e},n.prototype.toString=function(){return null!==this.a&&1!==this.a?\"rgba(\"+[this.r,this.g,this.b,this.a].join(\",\")+\")\":\"rgb(\"+[this.r,this.g,this.b].join(\",\")+\")\"},n.prototype.namedColor=function(t){t=t.toLowerCase();var e=a[t];if(e)this.r=e[0],this.g=e[1],this.b=e[2];else if(\"transparent\"===t)return!(this.r=this.g=this.b=this.a=0);return!!e},n.prototype.isColor=!0;var a={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};e.exports=n},{}],4:[function(t,e){function n(t,e){var n,r,i=C++;if((e=e||{}).logging&&(y.options.logging=!0,y.options.start=Date.now()),e.async=void 0===e.async||e.async,e.allowTaint=void 0!==e.allowTaint&&e.allowTaint,e.removeContainer=void 0===e.removeContainer||e.removeContainer,e.javascriptEnabled=void 0!==e.javascriptEnabled&&e.javascriptEnabled,e.imageTimeout=void 0===e.imageTimeout?1e4:e.imageTimeout,e.renderer=\"function\"==typeof e.renderer?e.renderer:g,e.strict=!!e.strict,\"string\"==typeof t){if(\"string\"!=typeof e.proxy)return Promise.reject(\"Proxy must be used when rendering url\");var o=null!=e.width?e.width:window.innerWidth,s=null!=e.height?e.height:window.innerHeight;return w((n=t,(r=document.createElement(\"a\")).href=n,r.href=r.href,r),e.proxy,document,o,s,e).then(function(t){return f(t.contentWindow.document.documentElement,t,e,o,s)})}var a,u,c,l,h,t=(void 0===t?[document.documentElement]:t.length?t:[t])[0];return t.setAttribute(x+i,i),a=t.ownerDocument,u=e,c=t.ownerDocument.defaultView.innerWidth,l=t.ownerDocument.defaultView.innerHeight,h=i,b(a,a,c,l,u,a.defaultView.pageXOffset,a.defaultView.pageYOffset).then(function(t){y(\"Document cloned\");var e=x+h,n=\"[\"+e+\"='\"+h+\"']\";a.querySelector(n).removeAttribute(e);var e=t.contentWindow,r=e.document.querySelector(n);return Promise.resolve(\"function\"!=typeof u.onclone||u.onclone(e.document)).then(function(){return f(r,t,u,c,l)})}).then(function(t){return\"function\"==typeof e.onrendered&&(y(\"options.onrendered is deprecated, html2canvas returns a Promise containing the canvas\"),e.onrendered(t)),t})}function f(n,r,i,t,e){var o,s,a=r.contentWindow,u=new d(a.document),c=new m(i,u),l=_(n),s=\"view\"===i.type?t:(s=a.document,Math.max(Math.max(s.body.scrollWidth,s.documentElement.scrollWidth),Math.max(s.body.offsetWidth,s.documentElement.offsetWidth),Math.max(s.body.clientWidth,s.documentElement.clientWidth))),o=\"view\"===i.type?e:(o=a.document,Math.max(Math.max(o.body.scrollHeight,o.documentElement.scrollHeight),Math.max(o.body.offsetHeight,o.documentElement.offsetHeight),Math.max(o.body.clientHeight,o.documentElement.clientHeight))),h=new i.renderer(s,o,c,i,document);return new v(n,h,u,c,i).ready.then(function(){var t,e;return y(\"Finished rendering\"),t=\"view\"===i.type?p(h.canvas,{width:h.canvas.width,height:h.canvas.height,top:0,left:0,x:0,y:0}):n===a.document.body||n===a.document.documentElement||null!=i.canvas?h.canvas:p(h.canvas,{width:(null!=i.width?i:l).width,height:(null!=i.height?i:l).height,top:l.top,left:l.left,x:0,y:0}),e=r,i.removeContainer&&(e.parentNode.removeChild(e),y(\"Cleaned up container\")),t})}function p(t,e){var n=document.createElement(\"canvas\"),r=Math.min(t.width-1,Math.max(0,e.left)),i=Math.min(t.width,Math.max(1,e.left+e.width)),o=Math.min(t.height-1,Math.max(0,e.top)),s=Math.min(t.height,Math.max(1,e.top+e.height));n.width=e.width,n.height=e.height;i-=r,s-=o;return y(\"Cropping canvas at:\",\"left:\",e.left,\"top:\",e.top,\"width:\",i,\"height:\",s),y(\"Resulting crop with width\",e.width,\"and height\",e.height,\"with x\",r,\"and y\",o),n.getContext(\"2d\").drawImage(t,r,o,i,s,e.x,e.y,i,s),n}var d=t(\"./support\"),g=t(\"./renderers/canvas\"),m=t(\"./imageloader\"),v=t(\"./nodeparser\"),r=t(\"./nodecontainer\"),y=t(\"./log\"),i=t(\"./utils\"),b=t(\"./clone\"),w=t(\"./proxy\").loadUrlDocument,_=i.getBounds,x=\"data-html2canvas-node\",C=0;n.CanvasRenderer=g,n.NodeContainer=r,n.log=y,n.utils=i;i=\"undefined\"==typeof document||\"function\"!=typeof Object.create||\"function\"!=typeof document.createElement(\"canvas\").getContext?function(){return Promise.reject(\"No canvas support\")}:n;e.exports=i},{\"./clone\":2,\"./imageloader\":11,\"./log\":13,\"./nodecontainer\":14,\"./nodeparser\":15,\"./proxy\":16,\"./renderers/canvas\":20,\"./support\":22,\"./utils\":26}],5:[function(t,e){function r(t){var n;this.src=t,i(\"DummyImageContainer for\",t),this.promise&&this.image||(i(\"Initiating DummyImageContainer\"),r.prototype.image=new Image,n=this.image,r.prototype.promise=new Promise(function(t,e){n.onload=t,n.onerror=e,n.src=o(),!0===n.complete&&t(n)}))}var i=t(\"./log\"),o=t(\"./utils\").smallImage;e.exports=r},{\"./log\":13,\"./utils\":26}],6:[function(t,e){var s=t(\"./utils\").smallImage;e.exports=function(t,e){var n=document.createElement(\"div\"),r=document.createElement(\"img\"),i=document.createElement(\"span\"),o=\"Hidden Text\";n.style.visibility=\"hidden\",n.style.fontFamily=t,n.style.fontSize=e,n.style.margin=0,n.style.padding=0,document.body.appendChild(n),r.src=s(),r.width=1,r.height=1,r.style.margin=0,r.style.padding=0,r.style.verticalAlign=\"baseline\",i.style.fontFamily=t,i.style.fontSize=e,i.style.margin=0,i.style.padding=0,i.appendChild(document.createTextNode(o)),n.appendChild(i),n.appendChild(r),e=r.offsetTop-i.offsetTop+1,n.removeChild(i),n.appendChild(document.createTextNode(o)),n.style.lineHeight=\"normal\",r.style.verticalAlign=\"super\",r=r.offsetTop-n.offsetTop+1,document.body.removeChild(n),this.baseline=e,this.lineWidth=1,this.middle=r}},{\"./utils\":26}],7:[function(t,e){function n(){this.data={}}var r=t(\"./font\");n.prototype.getMetrics=function(t,e){return void 0===this.data[t+\"-\"+e]&&(this.data[t+\"-\"+e]=new r(t,e)),this.data[t+\"-\"+e]},e.exports=n},{\"./font\":6}],8:[function(o,t){function e(e,t,n){this.image=null,this.src=e;var r=this,i=s(e);this.promise=(t?new Promise(function(t){\"about:blank\"===e.contentWindow.document.URL||null==e.contentWindow.document.documentElement?e.contentWindow.onload=e.onload=function(){t(e)}:t(e)}):this.proxyLoad(n.proxy,i,n)).then(function(t){return o(\"./core\")(t.contentWindow.document.documentElement,{type:\"view\",width:t.width,height:t.height,proxy:n.proxy,javascriptEnabled:n.javascriptEnabled,removeContainer:n.removeContainer,allowTaint:n.allowTaint,imageTimeout:n.imageTimeout/2})}).then(function(t){return r.image=t})}var s=o(\"./utils\").getBounds,i=o(\"./proxy\").loadUrlDocument;e.prototype.proxyLoad=function(t,e,n){var r=this.src;return i(r.src,t,r.ownerDocument,e.width,e.height,n)},t.exports=e},{\"./core\":4,\"./proxy\":16,\"./utils\":26}],9:[function(t,e){function n(t){this.src=t.value,this.colorStops=[],this.type=null,this.x0=.5,this.y0=.5,this.x1=.5,this.y1=.5,this.promise=Promise.resolve(!0)}n.TYPES={LINEAR:1,RADIAL:2},n.REGEXP_COLORSTOP=/^\\s*(rgba?\\(\\s*\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3}(?:,\\s*[0-9\\.]+)?\\s*\\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\\s+(\\d{1,3}(?:\\.\\d+)?)(%|px)?)?(?:\\s|$)/i,e.exports=n},{}],10:[function(t,e){e.exports=function(n,r){this.src=n,this.image=new Image;var i=this;this.tainted=null,this.promise=new Promise(function(t,e){i.image.onload=t,i.image.onerror=e,r&&(i.image.crossOrigin=\"anonymous\"),i.image.src=n,!0===i.image.complete&&t(i.image)})}},{}],11:[function(t,e){function n(t,e){this.link=null,this.options=t,this.support=e,this.origin=this.getOrigin(window.location.href)}var o=t(\"./log\"),r=t(\"./imagecontainer\"),i=t(\"./dummyimagecontainer\"),s=t(\"./proxyimagecontainer\"),a=t(\"./framecontainer\"),u=t(\"./svgcontainer\"),c=t(\"./svgnodecontainer\"),l=t(\"./lineargradientcontainer\"),h=t(\"./webkitgradientcontainer\"),f=t(\"./utils\").bind;n.prototype.findImages=function(t){var e=[];return t.reduce(function(t,e){switch(e.node.nodeName){case\"IMG\":return t.concat([{args:[e.node.src],method:\"url\"}]);case\"svg\":case\"IFRAME\":return t.concat([{args:[e.node],method:e.node.nodeName}])}return t},[]).forEach(this.addImage(e,this.loadImage),this),e},n.prototype.findBackgroundImage=function(t,e){return e.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(t,this.loadImage),this),t},n.prototype.addImage=function(n,r){return function(e){e.args.forEach(function(t){this.imageExists(n,t)||(n.splice(0,0,r.call(this,e)),o(\"Added image #\"+n.length,\"string\"==typeof t?t.substring(0,100):t))},this)}},n.prototype.hasImageBackground=function(t){return\"none\"!==t.method},n.prototype.loadImage=function(t){if(\"url\"!==t.method)return\"linear-gradient\"===t.method?new l(t):\"gradient\"===t.method?new h(t):\"svg\"===t.method?new c(t.args[0],this.support.svg):\"IFRAME\"===t.method?new a(t.args[0],this.isSameOrigin(t.args[0].src),this.options):new i(t);t=t.args[0];return!this.isSVG(t)||this.support.svg||this.options.allowTaint?t.match(/data:image\\/.*;base64,/i)?new r(t.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/gi,\"\"),!1):this.isSameOrigin(t)||!0===this.options.allowTaint||this.isSVG(t)?new r(t,!1):this.support.cors&&!this.options.allowTaint&&this.options.useCORS?new r(t,!0):this.options.proxy?new s(t,this.options.proxy):new i(t):new u(t)},n.prototype.isSVG=function(t){return\"svg\"===t.substring(t.length-3).toLowerCase()||u.prototype.isInline(t)},n.prototype.imageExists=function(t,e){return t.some(function(t){return t.src===e})},n.prototype.isSameOrigin=function(t){return this.getOrigin(t)===this.origin},n.prototype.getOrigin=function(t){var e=this.link||(this.link=document.createElement(\"a\"));return e.href=t,e.href=e.href,e.protocol+e.hostname+e.port},n.prototype.getPromise=function(e){return this.timeout(e,this.options.imageTimeout).catch(function(){return new i(e.src).promise.then(function(t){e.image=t})})},n.prototype.get=function(e){var n=null;return this.images.some(function(t){return(n=t).src===e})?n:null},n.prototype.fetch=function(t){return this.images=t.reduce(f(this.findBackgroundImage,this),this.findImages(t)),this.images.forEach(function(e,n){e.promise.then(function(){o(\"Succesfully loaded image #\"+(n+1),e)},function(t){o(\"Failed loading image #\"+(n+1),e,t)})}),this.ready=Promise.all(this.images.map(this.getPromise,this)),o(\"Finished searching images\"),this},n.prototype.timeout=function(n,r){var i,t=Promise.race([n.promise,new Promise(function(t,e){i=setTimeout(function(){o(\"Timed out loading image\",n),e(n)},r)})]).then(function(t){return clearTimeout(i),t});return t.catch(function(){clearTimeout(i)}),t},e.exports=n},{\"./dummyimagecontainer\":5,\"./framecontainer\":8,\"./imagecontainer\":10,\"./lineargradientcontainer\":12,\"./log\":13,\"./proxyimagecontainer\":17,\"./svgcontainer\":23,\"./svgnodecontainer\":24,\"./utils\":26,\"./webkitgradientcontainer\":27}],12:[function(t,e){function n(t){r.apply(this,arguments),this.type=r.TYPES.LINEAR;var e=n.REGEXP_DIRECTION.test(t.args[0])||!r.REGEXP_COLORSTOP.test(t.args[0]);e?t.args[0].split(/\\s+/).reverse().forEach(function(t,e){switch(t){case\"left\":this.x0=0,this.x1=1;break;case\"top\":this.y0=0,this.y1=1;break;case\"right\":this.x0=1,this.x1=0;break;case\"bottom\":this.y0=1,this.y1=0;break;case\"to\":var n=this.y0,r=this.x0;this.y0=this.y1,this.x0=this.x1,this.x1=r,this.y1=n;break;case\"center\":break;default:n=.01*parseFloat(t,10);if(isNaN(n))break;0===e?(this.y0=n,this.y1=1-this.y0):(this.x0=n,this.x1=1-this.x0)}},this):(this.y0=0,this.y1=1),this.colorStops=t.args.slice(e?1:0).map(function(t){var e=t.match(r.REGEXP_COLORSTOP),n=+e[2],t=0==n?\"%\":e[3];return{color:new i(e[1]),stop:\"%\"===t?n/100:null}}),null===this.colorStops[0].stop&&(this.colorStops[0].stop=0),null===this.colorStops[this.colorStops.length-1].stop&&(this.colorStops[this.colorStops.length-1].stop=1),this.colorStops.forEach(function(n,r){null===n.stop&&this.colorStops.slice(r).some(function(t,e){return null!==t.stop&&(n.stop=(t.stop-this.colorStops[r-1].stop)/(e+1)+this.colorStops[r-1].stop,!0)},this)},this)}var r=t(\"./gradientcontainer\"),i=t(\"./color\");n.prototype=Object.create(r.prototype),n.REGEXP_DIRECTION=/^\\s*(?:to|left|right|top|bottom|center|\\d{1,3}(?:\\.\\d+)?%?)(?:\\s|$)/i,e.exports=n},{\"./color\":3,\"./gradientcontainer\":9}],13:[function(t,e){var n=function(){n.options.logging&&window.console&&window.console.log&&Function.prototype.bind.call(window.console.log,window.console).apply(window.console,[Date.now()-n.options.start+\"ms\",\"html2canvas:\"].concat([].slice.call(arguments,0)))};n.options={logging:!1},e.exports=n},{}],14:[function(t,e){function n(t,e){this.node=t,this.parent=e,this.stack=null,this.bounds=null,this.borders=null,this.clip=[],this.backgroundClip=[],this.offsetBounds=null,this.visible=null,this.computedStyles=null,this.colors={},this.styles={},this.backgroundImages=null,this.transformData=null,this.transformMatrix=null,this.isPseudoElement=!1,this.opacity=null}function s(t){return-1!==t.toString().indexOf(\"%\")}function r(t){return t.replace(\"px\",\"\")}function i(t){return parseFloat(t)}var o=t(\"./color\"),t=t(\"./utils\"),a=t.getBounds,u=t.parseBackgrounds,c=t.offsetBounds;n.prototype.cloneTo=function(t){t.visible=this.visible,t.borders=this.borders,t.bounds=this.bounds,t.clip=this.clip,t.backgroundClip=this.backgroundClip,t.computedStyles=this.computedStyles,t.styles=this.styles,t.backgroundImages=this.backgroundImages,t.opacity=this.opacity},n.prototype.getOpacity=function(){return null===this.opacity?this.opacity=this.cssFloat(\"opacity\"):this.opacity},n.prototype.assignStack=function(t){(this.stack=t).children.push(this)},n.prototype.isElementVisible=function(){return this.node.nodeType===Node.TEXT_NODE?this.parent.visible:\"none\"!==this.css(\"display\")&&\"hidden\"!==this.css(\"visibility\")&&!this.node.hasAttribute(\"data-html2canvas-ignore\")&&(\"INPUT\"!==this.node.nodeName||\"hidden\"!==this.node.getAttribute(\"type\"))},n.prototype.css=function(t){return this.computedStyles||(this.computedStyles=this.isPseudoElement?this.parent.computedStyle(this.before?\":before\":\":after\"):this.computedStyle(null)),this.styles[t]||(this.styles[t]=this.computedStyles[t])},n.prototype.prefixedCss=function(e){var n=this.css(e);return void 0===n&&[\"webkit\",\"moz\",\"ms\",\"o\"].some(function(t){return void 0!==(n=this.css(t+e.substr(0,1).toUpperCase()+e.substr(1)))},this),void 0===n?null:n},n.prototype.computedStyle=function(t){return this.node.ownerDocument.defaultView.getComputedStyle(this.node,t)},n.prototype.cssInt=function(t){t=parseInt(this.css(t),10);return isNaN(t)?0:t},n.prototype.color=function(t){return this.colors[t]||(this.colors[t]=new o(this.css(t)))},n.prototype.cssFloat=function(t){t=parseFloat(this.css(t));return isNaN(t)?0:t},n.prototype.fontWeight=function(){var t=this.css(\"fontWeight\");switch(parseInt(t,10)){case 401:t=\"bold\";break;case 400:t=\"normal\"}return t},n.prototype.parseClip=function(){var t=this.css(\"clip\").match(this.CLIP);return t?{top:parseInt(t[1],10),right:parseInt(t[2],10),bottom:parseInt(t[3],10),left:parseInt(t[4],10)}:null},n.prototype.parseBackgroundImages=function(){return this.backgroundImages||(this.backgroundImages=u(this.css(\"backgroundImage\")))},n.prototype.cssList=function(t,e){t=(this.css(t)||\"\").split(\",\");return 1===(t=(t=t[e||0]||t[0]||\"auto\").trim().split(\" \")).length&&(t=[t[0],s(t[0])?\"auto\":t[0]]),t},n.prototype.parseBackgroundSize=function(t,e,n){var r,i=this.cssList(\"backgroundSize\",n);if(s(i[0]))r=t.width*parseFloat(i[0])/100;else{if(/contain|cover/.test(i[0])){var o=t.width/t.height,n=e.width/e.height;return o<n^\"contain\"===i[0]?{width:t.height*n,height:t.height}:{width:t.width,height:t.width/n}}r=parseInt(i[0],10)}return t=\"auto\"===i[0]&&\"auto\"===i[1]?e.height:\"auto\"===i[1]?r/e.width*e.height:s(i[1])?t.height*parseFloat(i[1])/100:parseInt(i[1],10),\"auto\"===i[0]&&(r=t/e.height*e.width),{width:r,height:t}},n.prototype.parseBackgroundPosition=function(t,e,n,r){var i=this.cssList(\"backgroundPosition\",n),n=s(i[0])?(t.width-(r||e).width)*(parseFloat(i[0])/100):parseInt(i[0],10),r=\"auto\"===i[1]?n/e.width*e.height:s(i[1])?(t.height-(r||e).height)*parseFloat(i[1])/100:parseInt(i[1],10);return\"auto\"===i[0]&&(n=r/e.height*e.width),{left:n,top:r}},n.prototype.parseBackgroundRepeat=function(t){return this.cssList(\"backgroundRepeat\",t)[0]},n.prototype.parseTextShadows=function(){var t=this.css(\"textShadow\"),e=[];if(t&&\"none\"!==t)for(var n=t.match(this.TEXT_SHADOW_PROPERTY),r=0;n&&r<n.length;r++){var i=n[r].match(this.TEXT_SHADOW_VALUES);e.push({color:new o(i[0]),offsetX:i[1]?parseFloat(i[1].replace(\"px\",\"\")):0,offsetY:i[2]?parseFloat(i[2].replace(\"px\",\"\")):0,blur:i[3]?i[3].replace(\"px\",\"\"):0})}return e},n.prototype.parseTransform=function(){var t,e;return this.transformData||(this.hasTransform()?(t=this.parseBounds(),(e=this.prefixedCss(\"transformOrigin\").split(\" \").map(r).map(i))[0]+=t.left,e[1]+=t.top,this.transformData={origin:e,matrix:this.parseTransformMatrix()}):this.transformData={origin:[0,0],matrix:[1,0,0,1,0,0]}),this.transformData},n.prototype.parseTransformMatrix=function(){var t;return this.transformMatrix||(t=(t=this.prefixedCss(\"transform\"))?function(t){if(t&&\"matrix\"===t[1])return t[2].split(\",\").map(function(t){return parseFloat(t.trim())});if(t&&\"matrix3d\"===t[1]){t=t[2].split(\",\").map(function(t){return parseFloat(t.trim())});return[t[0],t[1],t[4],t[5],t[12],t[13]]}}(t.match(this.MATRIX_PROPERTY)):null,this.transformMatrix=t||[1,0,0,1,0,0]),this.transformMatrix},n.prototype.parseBounds=function(){return this.bounds||(this.bounds=(this.hasTransform()?c:a)(this.node))},n.prototype.hasTransform=function(){return\"1,0,0,1,0,0\"!==this.parseTransformMatrix().join(\",\")||this.parent&&this.parent.hasTransform()},n.prototype.getValue=function(){var t,e=this.node.value||\"\";return\"SELECT\"===this.node.tagName?e=(t=(t=this.node).options[t.selectedIndex||0])&&t.text||\"\":\"password\"===this.node.type&&(e=Array(e.length+1).join(\"•\")),0===e.length?this.node.placeholder||\"\":e},n.prototype.MATRIX_PROPERTY=/(matrix|matrix3d)\\((.+)\\)/,n.prototype.TEXT_SHADOW_PROPERTY=/((rgba|rgb)\\([^\\)]+\\)(\\s-?\\d+px){0,})/g,n.prototype.TEXT_SHADOW_VALUES=/(-?\\d+px)|(#.+)|(rgb\\(.+\\))|(rgba\\(.+\\))/g,n.prototype.CLIP=/^rect\\((\\d+)px,? (\\d+)px,? (\\d+)px,? (\\d+)px\\)$/,e.exports=n},{\"./color\":3,\"./utils\":26}],15:[function(t,e){function n(t,e,n,r,i){T(\"Starting NodeParser\"),this.renderer=e,this.options=i,this.range=null,this.support=n,this.renderQueue=[],this.stack=new R(!0,1,t.ownerDocument,null);var o=new I(t,null);i.background&&e.rectangle(0,0,e.width,e.height,new D(i.background)),t===t.ownerDocument.documentElement&&(n=new I(o.color(\"backgroundColor\").isTransparent()?t.ownerDocument.body:t.ownerDocument.documentElement,null),e.rectangle(0,0,e.width,e.height,n.color(\"backgroundColor\"))),o.visibile=o.isElementVisible(),this.createPseudoHideStyles(t.ownerDocument),this.disableAnimations(t.ownerDocument),this.nodes=E([o].concat(this.getChildren(o)).filter(function(t){return t.visible=t.isElementVisible()}).map(this.getPseudoElements,this)),this.fontMetrics=new N,T(\"Fetched nodes, total:\",this.nodes.length),T(\"Calculate overflow clips\"),this.calculateOverflowClips(),T(\"Start fetching images\"),this.images=r.fetch(this.nodes.filter(x)),this.ready=this.images.ready.then(M(function(){return T(\"Images loaded, starting parsing\"),T(\"Creating stacking contexts\"),this.createStackingContexts(),T(\"Sorting stacking contexts\"),this.sortStackingContexts(this.stack),this.parse(this.stack),T(\"Render queue created with \"+this.renderQueue.length+\" items\"),new Promise(M(function(t){i.async?\"function\"==typeof i.async?i.async.call(this,this.renderQueue,t):0<this.renderQueue.length?(this.renderIndex=0,this.asyncRenderer(this.renderQueue,t)):t():(this.renderQueue.forEach(this.paint,this),t())},this))},this))}function r(t){return t.parent&&t.parent.clip.length}function a(){}function u(s,a,u,c){return s.map(function(t,e){if(0<t.width){var n=a.left,r=a.top,i=a.width,o=a.height-s[2].width;switch(e){case 0:o=s[0].width,t.args=h({c1:[n,r],c2:[n+i,r],c3:[n+i-s[1].width,r+o],c4:[n+s[3].width,r+o]},c[0],c[1],u.topLeftOuter,u.topLeftInner,u.topRightOuter,u.topRightInner);break;case 1:n=a.left+a.width-s[1].width,i=s[1].width,t.args=h({c1:[n+i,r],c2:[n+i,r+o+s[2].width],c3:[n,r+o],c4:[n,r+s[0].width]},c[1],c[2],u.topRightOuter,u.topRightInner,u.bottomRightOuter,u.bottomRightInner);break;case 2:r=r+a.height-s[2].width,o=s[2].width,t.args=h({c1:[n+i,r+o],c2:[n,r+o],c3:[n+s[3].width,r],c4:[n+i-s[3].width,r]},c[2],c[3],u.bottomRightOuter,u.bottomRightInner,u.bottomLeftOuter,u.bottomLeftInner);break;case 3:i=s[3].width,t.args=h({c1:[n,r+o+s[2].width],c2:[n,r],c3:[n+i,r+s[0].width],c4:[n+i,r+o]},c[3],c[0],u.bottomLeftOuter,u.bottomLeftInner,u.topLeftOuter,u.topLeftInner)}}return t})}function v(t,e,n,r){var i=(Math.sqrt(2)-1)/3*4,o=n*i,i=r*i,n=t+n,r=e+r;return{topLeft:l({x:t,y:r},{x:t,y:r-i},{x:n-o,y:e},{x:n,y:e}),topRight:l({x:t,y:e},{x:t+o,y:e},{x:n,y:r-i},{x:n,y:r}),bottomRight:l({x:n,y:e},{x:n,y:e+i},{x:t+o,y:r},{x:t,y:r}),bottomLeft:l({x:n,y:r},{x:n-o,y:r},{x:t,y:e+i},{x:t,y:e})}}function c(t,e,n){var r=t.left,i=t.top,o=t.width,s=t.height,a=e[0][0]<o/2?e[0][0]:o/2,u=e[0][1]<s/2?e[0][1]:s/2,c=e[1][0]<o/2?e[1][0]:o/2,l=e[1][1]<s/2?e[1][1]:s/2,h=e[2][0]<o/2?e[2][0]:o/2,f=e[2][1]<s/2?e[2][1]:s/2,p=e[3][0]<o/2?e[3][0]:o/2,d=e[3][1]<s/2?e[3][1]:s/2,g=o-c,m=s-f,t=o-h,e=s-d;return{topLeftOuter:v(r,i,a,u).topLeft.subdivide(.5),topLeftInner:v(r+n[3].width,i+n[0].width,Math.max(0,a-n[3].width),Math.max(0,u-n[0].width)).topLeft.subdivide(.5),topRightOuter:v(r+g,i,c,l).topRight.subdivide(.5),topRightInner:v(r+Math.min(g,o+n[3].width),i+n[0].width,g>o+n[3].width?0:c-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:v(r+t,i+m,h,f).bottomRight.subdivide(.5),bottomRightInner:v(r+Math.min(t,o-n[3].width),i+Math.min(m,s+n[0].width),Math.max(0,h-n[1].width),f-n[2].width).bottomRight.subdivide(.5),bottomLeftOuter:v(r,i+e,p,d).bottomLeft.subdivide(.5),bottomLeftInner:v(r+n[3].width,i+e,Math.max(0,p-n[3].width),d-n[2].width).bottomLeft.subdivide(.5)}}function l(o,s,a,u){function c(t,e,n){return{x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n}}return{start:o,startControl:s,endControl:a,end:u,subdivide:function(t){var e=c(o,s,t),n=c(s,a,t),r=c(a,u,t),i=c(e,n,t),n=c(n,r,t),t=c(i,n,t);return[l(o,e,i,t),l(t,n,r,u)]},curveTo:function(t){t.push([\"bezierCurve\",s.x,s.y,a.x,a.y,u.x,u.y])},curveToReversed:function(t){t.push([\"bezierCurve\",a.x,a.y,s.x,s.y,o.x,o.y])}}}function h(t,e,n,r,i,o,s){var a=[];return 0<e[0]||0<e[1]?(a.push([\"line\",r[1].start.x,r[1].start.y]),r[1].curveTo(a)):a.push([\"line\",t.c1[0],t.c1[1]]),0<n[0]||0<n[1]?(a.push([\"line\",o[0].start.x,o[0].start.y]),o[0].curveTo(a),a.push([\"line\",s[0].end.x,s[0].end.y]),s[0].curveToReversed(a)):(a.push([\"line\",t.c2[0],t.c2[1]]),a.push([\"line\",t.c3[0],t.c3[1]])),0<e[0]||0<e[1]?(a.push([\"line\",i[1].end.x,i[1].end.y]),i[1].curveToReversed(a)):a.push([\"line\",t.c4[0],t.c4[1]]),a}function s(t,e,n,r,i,o,s){0<e[0]||0<e[1]?(t.push([\"line\",r[0].start.x,r[0].start.y]),r[0].curveTo(t),r[1].curveTo(t)):t.push([\"line\",o,s]),(0<n[0]||0<n[1])&&t.push([\"line\",i[0].start.x,i[0].start.y])}function f(t){return t.cssInt(\"zIndex\")<0}function p(t){return 0<t.cssInt(\"zIndex\")}function d(t){return 0===t.cssInt(\"zIndex\")}function g(t){return-1!==[\"inline\",\"inline-block\",\"inline-table\"].indexOf(t.css(\"display\"))}function m(t){return t instanceof R}function y(t){return 0<t.node.data.trim().length}function i(t){return t.nodeType===Node.TEXT_NODE||t.nodeType===Node.ELEMENT_NODE}function b(t){return\"static\"!==t.css(\"position\")}function w(t){return\"none\"!==t.css(\"float\")}function _(t){var e=this;return function(){return!t.apply(e,arguments)}}function x(t){return t.node.nodeType===Node.ELEMENT_NODE}function o(t){return!0===t.isPseudoElement}function C(t){return t.node.nodeType===Node.TEXT_NODE}function k(t){return parseInt(t,10)}function S(t){return t.width}function O(t){return t.node.nodeType!==Node.ELEMENT_NODE||-1===[\"SCRIPT\",\"HEAD\",\"TITLE\",\"OBJECT\",\"BR\",\"OPTION\"].indexOf(t.node.nodeName)}function E(t){return[].concat.apply([],t)}var T=t(\"./log\"),A=t(\"punycode\"),I=t(\"./nodecontainer\"),j=t(\"./textcontainer\"),P=t(\"./pseudoelementcontainer\"),N=t(\"./fontmetrics\"),D=t(\"./color\"),R=t(\"./stackingcontext\"),t=t(\"./utils\"),M=t.bind,W=t.getBounds,L=t.parseBackgrounds,F=t.offsetBounds;n.prototype.calculateOverflowClips=function(){this.nodes.forEach(function(t){var e,n;x(t)?(o(t)&&t.appendToDOM(),t.borders=this.parseBorders(t),e=\"hidden\"===t.css(\"overflow\")?[t.borders.clip]:[],(n=t.parseClip())&&-1!==[\"absolute\",\"fixed\"].indexOf(t.css(\"position\"))&&e.push([[\"rect\",t.bounds.left+n.left,t.bounds.top+n.top,n.right-n.left,n.bottom-n.top]]),t.clip=r(t)?t.parent.clip.concat(e):e,t.backgroundClip=\"hidden\"!==t.css(\"overflow\")?t.clip.concat([t.borders.clip]):t.clip,o(t)&&t.cleanDOM()):C(t)&&(t.clip=r(t)?t.parent.clip:[]),o(t)||(t.bounds=null)},this)},n.prototype.asyncRenderer=function(t,e,n){n=n||Date.now(),this.paint(t[this.renderIndex++]),t.length===this.renderIndex?e():n+20>Date.now()?this.asyncRenderer(t,e,n):setTimeout(M(function(){this.asyncRenderer(t,e)},this),0)},n.prototype.createPseudoHideStyles=function(t){this.createStyles(t,\".\"+P.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+':before { content: \"\" !important; display: none !important; }.'+P.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER+':after { content: \"\" !important; display: none !important; }')},n.prototype.disableAnimations=function(t){this.createStyles(t,\"* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}\")},n.prototype.createStyles=function(t,e){var n=t.createElement(\"style\");n.innerHTML=e,t.body.appendChild(n)},n.prototype.getPseudoElements=function(t){var e,n=[[t]];return t.node.nodeType===Node.ELEMENT_NODE&&(e=this.getPseudoElement(t,\":before\"),t=this.getPseudoElement(t,\":after\"),e&&n.push(e),t&&n.push(t)),E(n)},n.prototype.getPseudoElement=function(t,e){var n=t.computedStyle(e);if(!n||!n.content||\"none\"===n.content||\"-moz-alt-content\"===n.content||\"none\"===n.display)return null;for(var r,i=(r=n.content,(i=r.substr(0,1))===r.substr(r.length-1)&&i.match(/'|\"/)?r.substr(1,r.length-2):r),r=\"url\"===i.substr(0,3),o=document.createElement(r?\"img\":\"html2canvaspseudoelement\"),e=new P(o,t,e),s=n.length-1;0<=s;s--){var a=n.item(s).replace(/(\\-[a-z])/g,function(t){return t.toUpperCase().replace(\"-\",\"\")});o.style[a]=n[a]}if(o.className=P.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+\" \"+P.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER,r)return o.src=L(i)[0].args[0],[e];var i=document.createTextNode(i);return o.appendChild(i),[e,new j(i,e)]},n.prototype.getChildren=function(n){return E([].filter.call(n.node.childNodes,i).map(function(t){var e=[new(t.nodeType===Node.TEXT_NODE?j:I)(t,n)].filter(O);return t.nodeType===Node.ELEMENT_NODE&&e.length&&\"TEXTAREA\"!==t.tagName?e[0].isElementVisible()?e.concat(this.getChildren(e[0])):[]:e},this))},n.prototype.newStackingContext=function(t,e){var n=new R(e,t.getOpacity(),t.node,t.parent);t.cloneTo(n),(e?n.getParentStack(this):n.parent.stack).contexts.push(n),t.stack=n},n.prototype.createStackingContexts=function(){this.nodes.forEach(function(t){var e,n;x(t)&&(this.isRootElement(t)||t.getOpacity()<1||(n=(e=t).css(\"position\"),\"auto\"!==(-1!==[\"absolute\",\"relative\",\"fixed\"].indexOf(n)?e.css(\"zIndex\"):\"auto\"))||this.isBodyWithTransparentRoot(t)||t.hasTransform())?this.newStackingContext(t,!0):x(t)&&(b(t)&&d(t)||-1!==[\"inline-block\",\"inline-table\"].indexOf(t.css(\"display\"))||w(t))?this.newStackingContext(t,!1):t.assignStack(t.parent.stack)},this)},n.prototype.isBodyWithTransparentRoot=function(t){return\"BODY\"===t.node.nodeName&&t.parent.color(\"backgroundColor\").isTransparent()},n.prototype.isRootElement=function(t){return null===t.parent},n.prototype.sortStackingContexts=function(t){var n;t.contexts.sort((n=t.contexts.slice(0),function(t,e){return t.cssInt(\"zIndex\")+n.indexOf(t)/n.length-(e.cssInt(\"zIndex\")+n.indexOf(e)/n.length)})),t.contexts.forEach(this.sortStackingContexts,this)},n.prototype.parseTextBounds=function(i){return function(t,e,n){if(\"none\"!==i.parent.css(\"textDecoration\").substr(0,4)||0!==t.trim().length){if(this.support.rangeBounds&&!i.parent.hasTransform()){var r=n.slice(0,e).join(\"\").length;return this.getRangeBounds(i.node,r,t.length)}if(i.node&&\"string\"==typeof i.node.data){e=i.node.splitText(t.length),r=this.getWrapperBounds(i.node,i.parent.hasTransform());return i.node=e,r}}else this.support.rangeBounds&&!i.parent.hasTransform()||(i.node=i.node.splitText(t.length));return{}}},n.prototype.getWrapperBounds=function(t,e){var n=t.ownerDocument.createElement(\"html2canvaswrapper\"),r=t.parentNode,i=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)),r.replaceChild(n,t);e=(e?F:W)(n);return r.replaceChild(i,n),e},n.prototype.getRangeBounds=function(t,e,n){var r=this.range||(this.range=t.ownerDocument.createRange());return r.setStart(t,e),r.setEnd(t,e+n),r.getBoundingClientRect()},n.prototype.parse=function(t){var e=t.contexts.filter(f),n=t.children.filter(x),r=n.filter(_(w)),i=r.filter(_(b)).filter(_(g)),o=n.filter(_(b)).filter(w),s=r.filter(_(b)).filter(g),n=t.contexts.concat(r.filter(b)).filter(d),r=t.children.filter(C).filter(y),t=t.contexts.filter(p);e.concat(i).concat(o).concat(s).concat(n).concat(r).concat(t).forEach(function(t){this.renderQueue.push(t),m(t)&&(this.parse(t),this.renderQueue.push(new a))},this)},n.prototype.paint=function(t){try{t instanceof a?this.renderer.ctx.restore():C(t)?(o(t.parent)&&t.parent.appendToDOM(),this.paintText(t),o(t.parent)&&t.parent.cleanDOM()):this.paintNode(t)}catch(t){if(T(t),this.options.strict)throw t}},n.prototype.paintNode=function(t){m(t)&&(this.renderer.setOpacity(t.opacity),this.renderer.ctx.save(),t.hasTransform()&&this.renderer.setTransform(t.parseTransform())),\"INPUT\"===t.node.nodeName&&\"checkbox\"===t.node.type?this.paintCheckbox(t):\"INPUT\"===t.node.nodeName&&\"radio\"===t.node.type?this.paintRadio(t):this.paintElement(t)},n.prototype.paintElement=function(e){var n=e.parseBounds();this.renderer.clip(e.backgroundClip,function(){this.renderer.renderBackground(e,n,e.borders.borders.map(S))},this),this.renderer.clip(e.clip,function(){this.renderer.renderBorders(e.borders.borders)},this),this.renderer.clip(e.backgroundClip,function(){switch(e.node.nodeName){case\"svg\":case\"IFRAME\":var t=this.images.get(e.node);t?this.renderer.renderImage(e,n,e.borders,t):T(\"Error loading <\"+e.node.nodeName+\">\",e.node);break;case\"IMG\":t=this.images.get(e.node.src);t?this.renderer.renderImage(e,n,e.borders,t):T(\"Error loading <img>\",e.node.src);break;case\"CANVAS\":this.renderer.renderImage(e,n,e.borders,{image:e.node});break;case\"SELECT\":case\"INPUT\":case\"TEXTAREA\":this.paintFormValue(e)}},this)},n.prototype.paintCheckbox=function(t){var e=t.parseBounds(),n=Math.min(e.width,e.height),r={width:n-1,height:n-1,top:e.top,left:e.left},e=[3,3],i=[e,e,e,e],o=[1,1,1,1].map(function(t){return{color:new D(\"#A5A5A5\"),width:t}}),s=c(r,i,o);this.renderer.clip(t.backgroundClip,function(){this.renderer.rectangle(r.left+1,r.top+1,r.width-2,r.height-2,new D(\"#DEDEDE\")),this.renderer.renderBorders(u(o,r,s,i)),t.node.checked&&(this.renderer.font(new D(\"#424242\"),\"normal\",\"normal\",\"bold\",n-3+\"px\",\"arial\"),this.renderer.text(\"✔\",r.left+n/6,r.top+n-1))},this)},n.prototype.paintRadio=function(t){var e=t.parseBounds(),n=Math.min(e.width,e.height)-2;this.renderer.clip(t.backgroundClip,function(){this.renderer.circleStroke(e.left+1,e.top+1,n,new D(\"#DEDEDE\"),1,new D(\"#A5A5A5\")),t.node.checked&&this.renderer.circle(Math.ceil(e.left+n/4)+1,Math.ceil(e.top+n/4)+1,Math.floor(n/2),new D(\"#424242\"))},this)},n.prototype.paintFormValue=function(e){var t,n,r,i=e.getValue();0<i.length&&(t=e.node.ownerDocument,n=t.createElement(\"html2canvaswrapper\"),[\"lineHeight\",\"textAlign\",\"fontFamily\",\"fontWeight\",\"fontSize\",\"color\",\"paddingLeft\",\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"width\",\"height\",\"borderLeftStyle\",\"borderTopStyle\",\"borderLeftWidth\",\"borderTopWidth\",\"boxSizing\",\"whiteSpace\",\"wordWrap\"].forEach(function(t){try{n.style[t]=e.css(t)}catch(t){T(\"html2canvas: Parse: Exception caught in renderFormValue: \"+t.message)}}),r=e.parseBounds(),n.style.position=\"fixed\",n.style.left=r.left+\"px\",n.style.top=r.top+\"px\",n.textContent=i,t.body.appendChild(n),this.paintText(new j(n.firstChild,e)),t.body.removeChild(n))},n.prototype.paintText=function(n){n.applyTextTransform();var t=A.ucs2.decode(n.node.data),r=this.options.letterRendering&&!/^(normal|none|0px)$/.test(n.parent.css(\"letterSpacing\"))||/[^\\u0000-\\u00ff]/.test(n.node.data)?t.map(function(t){return A.ucs2.encode([t])}):function(t){for(var e,n=[],r=0,i=!1;t.length;)-1!==[32,13,10,9,45].indexOf(t[r])===i?((e=t.splice(0,r)).length&&n.push(A.ucs2.encode(e)),i=!i,r=0):r++,r>=t.length&&((e=t.splice(0,r)).length&&n.push(A.ucs2.encode(e)));return n}(t),e=n.parent.fontWeight(),i=n.parent.css(\"fontSize\"),o=n.parent.css(\"fontFamily\"),t=n.parent.parseTextShadows();this.renderer.font(n.parent.color(\"color\"),n.parent.css(\"fontStyle\"),n.parent.css(\"fontVariant\"),e,i,o),t.length?this.renderer.fontShadow(t[0].color,t[0].offsetX,t[0].offsetY,t[0].blur):this.renderer.clearShadow(),this.renderer.clip(n.parent.clip,function(){r.map(this.parseTextBounds(n),this).forEach(function(t,e){t&&(this.renderer.text(r[e],t.left,t.bottom),this.renderTextDecoration(n.parent,t,this.fontMetrics.getMetrics(o,i)))},this)},this)},n.prototype.renderTextDecoration=function(t,e,n){switch(t.css(\"textDecoration\").split(\" \")[0]){case\"underline\":this.renderer.rectangle(e.left,Math.round(e.top+n.baseline+n.lineWidth),e.width,1,t.color(\"color\"));break;case\"overline\":this.renderer.rectangle(e.left,Math.round(e.top),e.width,1,t.color(\"color\"));break;case\"line-through\":this.renderer.rectangle(e.left,Math.ceil(e.top+n.middle+n.lineWidth),e.width,1,t.color(\"color\"))}};var H={inset:[[\"darken\",.6],[\"darken\",.1],[\"darken\",.1],[\"darken\",.6]]};n.prototype.parseBorders=function(i){var e,t=i.parseBounds(),n=(e=i,[\"TopLeft\",\"TopRight\",\"BottomRight\",\"BottomLeft\"].map(function(t){t=e.css(\"border\"+t+\"Radius\").split(\" \");return t.length<=1&&(t[1]=t[0]),t.map(k)})),r=[\"Top\",\"Right\",\"Bottom\",\"Left\"].map(function(t,e){var n=i.css(\"border\"+t+\"Style\"),r=i.color(\"border\"+t+\"Color\");\"inset\"===n&&r.isBlack()&&(r=new D([255,255,255,r.a]));e=H[n]?H[n][e]:null;return{width:i.cssInt(\"border\"+t+\"Width\"),color:e?r[e[0]](e[1]):r,args:null}}),o=c(t,n,r);return{clip:this.parseBackgroundClip(i,o,r,n,t),borders:u(r,t,o,n)}},n.prototype.parseBackgroundClip=function(t,e,n,r,i){var o=[];switch(t.css(\"backgroundClip\")){case\"content-box\":case\"padding-box\":s(o,r[0],r[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width),s(o,r[1],r[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),s(o,r[2],r[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),s(o,r[3],r[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:s(o,r[0],r[1],e.topLeftOuter,e.topRightOuter,i.left,i.top),s(o,r[1],r[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top),s(o,r[2],r[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height),s(o,r[3],r[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height)}return o},e.exports=n},{\"./color\":3,\"./fontmetrics\":7,\"./log\":13,\"./nodecontainer\":14,\"./pseudoelementcontainer\":18,\"./stackingcontext\":21,\"./textcontainer\":25,\"./utils\":26,punycode:1}],16:[function(t,e,n){function a(t,e,n){var r=\"withCredentials\"in new XMLHttpRequest;if(!e)return Promise.reject(\"No proxy configured\");var i=s(r),t=u(e,t,i);return r?c(t):o(n,t,i).then(function(t){return f(t.content)})}function o(i,o,s){return new Promise(function(e,n){function r(){delete window.html2canvas.proxy[s],i.body.removeChild(t)}var t=i.createElement(\"script\");window.html2canvas.proxy[s]=function(t){r(),e(t)},t.src=o,t.onerror=function(t){r(),n(t)},i.body.appendChild(t)})}function s(t){return t?\"\":\"html2canvas_\"+Date.now()+\"_\"+ ++i+\"_\"+Math.round(1e5*Math.random())}function u(t,e,n){return t+\"?url=\"+encodeURIComponent(e)+(n.length?\"&callback=html2canvas.proxy.\"+n:\"\")}var c=t(\"./xhr\"),r=t(\"./utils\"),l=t(\"./log\"),h=t(\"./clone\"),f=r.decode64,i=0;n.Proxy=a,n.ProxyURL=function(t,e,n){var r=\"crossOrigin\"in new Image,i=s(r),t=u(e,t,i);return r?Promise.resolve(t):o(n,t,i).then(function(t){return\"data:\"+t.type+\";base64,\"+t.content})},n.loadUrlDocument=function(t,e,n,r,i,o){return new a(t,e,window.document).then((s=t,function(e){var n,t=new DOMParser;try{n=t.parseFromString(e,\"text/html\")}catch(t){l(\"DOMParser not supported, falling back to createHTMLDocument\"),n=document.implementation.createHTMLDocument(\"\");try{n.open(),n.write(e),n.close()}catch(t){l(\"createHTMLDocument write not supported, falling back to document.body.innerHTML\"),n.body.innerHTML=e}}var r=n.querySelector(\"base\");return r&&r.href.host||((r=n.createElement(\"base\")).href=s,n.head.insertBefore(r,n.head.firstChild)),n})).then(function(t){return h(t,n,r,i,o,0,0)});var s}},{\"./clone\":2,\"./log\":13,\"./utils\":26,\"./xhr\":28}],17:[function(t,e){var o=t(\"./proxy\").ProxyURL;e.exports=function(n,r){var t=document.createElement(\"a\");t.href=n,n=t.href,this.src=n,this.image=new Image;var i=this;this.promise=new Promise(function(t,e){i.image.crossOrigin=\"Anonymous\",i.image.onload=t,i.image.onerror=e,new o(n,r,document).then(function(t){i.image.src=t}).catch(e)})}},{\"./proxy\":16}],18:[function(t,e){function n(t,e,n){r.call(this,t,e),this.isPseudoElement=!0,this.before=\":before\"===n}var r=t(\"./nodecontainer\");n.prototype.cloneTo=function(t){n.prototype.cloneTo.call(this,t),t.isPseudoElement=!0,t.before=this.before},(n.prototype=Object.create(r.prototype)).appendToDOM=function(){this.before?this.parent.node.insertBefore(this.node,this.parent.node.firstChild):this.parent.node.appendChild(this.node),this.parent.node.className+=\" \"+this.getHideClass()},n.prototype.cleanDOM=function(){this.node.parentNode.removeChild(this.node),this.parent.node.className=this.parent.node.className.replace(this.getHideClass(),\"\")},n.prototype.getHideClass=function(){return this[\"PSEUDO_HIDE_ELEMENT_CLASS_\"+(this.before?\"BEFORE\":\"AFTER\")]},n.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE=\"___html2canvas___pseudoelement_before\",n.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER=\"___html2canvas___pseudoelement_after\",e.exports=n},{\"./nodecontainer\":14}],19:[function(t,e){function n(t,e,n,r,i){this.width=t,this.height=e,this.images=n,this.options=r,this.document=i}var a=t(\"./log\");n.prototype.renderImage=function(t,e,n,r){var i=t.cssInt(\"paddingLeft\"),o=t.cssInt(\"paddingTop\"),s=t.cssInt(\"paddingRight\"),t=t.cssInt(\"paddingBottom\"),n=n.borders,s=e.width-(n[1].width+n[3].width+i+s),t=e.height-(n[0].width+n[2].width+o+t);this.drawImage(r,0,0,r.image.width||s,r.image.height||t,e.left+i+n[3].width,e.top+o+n[0].width,s,t)},n.prototype.renderBackground=function(t,e,n){0<e.height&&0<e.width&&(this.renderBackgroundColor(t,e),this.renderBackgroundImage(t,e,n))},n.prototype.renderBackgroundColor=function(t,e){t=t.color(\"backgroundColor\");t.isTransparent()||this.rectangle(e.left,e.top,e.width,e.height,t)},n.prototype.renderBorders=function(t){t.forEach(this.renderBorder,this)},n.prototype.renderBorder=function(t){t.color.isTransparent()||null===t.args||this.drawShape(t.args,t.color)},n.prototype.renderBackgroundImage=function(i,o,s){i.parseBackgroundImages().reverse().forEach(function(t,e,n){switch(t.method){case\"url\":var r=this.images.get(t.args[0]);r?this.renderBackgroundRepeating(i,o,r,n.length-(e+1),s):a(\"Error loading background-image\",t.args[0]);break;case\"linear-gradient\":case\"gradient\":r=this.images.get(t.value);r?this.renderBackgroundGradient(r,o,s):a(\"Error loading background-image\",t.args[0]);break;case\"none\":break;default:a(\"Unknown background-image type\",t.args[0])}},this)},n.prototype.renderBackgroundRepeating=function(t,e,n,r,i){var o=t.parseBackgroundSize(e,n.image,r),s=t.parseBackgroundPosition(e,n.image,r,o);switch(t.parseBackgroundRepeat(r)){case\"repeat-x\":case\"repeat no-repeat\":this.backgroundRepeatShape(n,s,o,e,e.left+i[3],e.top+s.top+i[0],99999,o.height,i);break;case\"repeat-y\":case\"no-repeat repeat\":this.backgroundRepeatShape(n,s,o,e,e.left+s.left+i[3],e.top+i[0],o.width,99999,i);break;case\"no-repeat\":this.backgroundRepeatShape(n,s,o,e,e.left+s.left+i[3],e.top+s.top+i[0],o.width,o.height,i);break;default:this.renderBackgroundRepeat(n,s,o,{top:e.top,left:e.left},i[3],i[0])}},e.exports=n},{\"./log\":13}],20:[function(t,e){function n(t,e){i.apply(this,arguments),this.canvas=this.options.canvas||this.document.createElement(\"canvas\"),this.options.canvas||(this.canvas.width=t,this.canvas.height=e),this.ctx=this.canvas.getContext(\"2d\"),this.taintCtx=this.document.createElement(\"canvas\").getContext(\"2d\"),this.ctx.textBaseline=\"bottom\",this.variables={},s(\"Initialized CanvasRenderer with size\",t,\"x\",e)}function r(t){return 0<t.length}var i=t(\"../renderer\"),o=t(\"../lineargradientcontainer\"),s=t(\"../log\");(n.prototype=Object.create(i.prototype)).setFillStyle=function(t){return this.ctx.fillStyle=\"object\"==typeof t&&t.isColor?t.toString():t,this.ctx},n.prototype.rectangle=function(t,e,n,r,i){this.setFillStyle(i).fillRect(t,e,n,r)},n.prototype.circle=function(t,e,n,r){this.setFillStyle(r),this.ctx.beginPath(),this.ctx.arc(t+n/2,e+n/2,n/2,0,2*Math.PI,!0),this.ctx.closePath(),this.ctx.fill()},n.prototype.circleStroke=function(t,e,n,r,i,o){this.circle(t,e,n,r),this.ctx.strokeStyle=o.toString(),this.ctx.stroke()},n.prototype.drawShape=function(t,e){this.shape(t),this.setFillStyle(e).fill()},n.prototype.taints=function(e){if(null===e.tainted){this.taintCtx.drawImage(e.image,0,0);try{this.taintCtx.getImageData(0,0,1,1),e.tainted=!1}catch(t){this.taintCtx=document.createElement(\"canvas\").getContext(\"2d\"),e.tainted=!0}}return e.tainted},n.prototype.drawImage=function(t,e,n,r,i,o,s,a,u){this.taints(t)&&!this.options.allowTaint||this.ctx.drawImage(t.image,e,n,r,i,o,s,a,u)},n.prototype.clip=function(t,e,n){this.ctx.save(),t.filter(r).forEach(function(t){this.shape(t).clip()},this),e.call(n),this.ctx.restore()},n.prototype.shape=function(t){return this.ctx.beginPath(),t.forEach(function(t,e){(\"rect\"===t[0]?this.ctx.rect:this.ctx[0===e?\"moveTo\":t[0]+\"To\"]).apply(this.ctx,t.slice(1))},this),this.ctx.closePath(),this.ctx},n.prototype.font=function(t,e,n,r,i,o){this.setFillStyle(t).font=[e,n,r,i,o].join(\" \").split(\",\")[0]},n.prototype.fontShadow=function(t,e,n,r){this.setVariable(\"shadowColor\",t.toString()).setVariable(\"shadowOffsetY\",e).setVariable(\"shadowOffsetX\",n).setVariable(\"shadowBlur\",r)},n.prototype.clearShadow=function(){this.setVariable(\"shadowColor\",\"rgba(0,0,0,0)\")},n.prototype.setOpacity=function(t){this.ctx.globalAlpha=t},n.prototype.setTransform=function(t){this.ctx.translate(t.origin[0],t.origin[1]),this.ctx.transform.apply(this.ctx,t.matrix),this.ctx.translate(-t.origin[0],-t.origin[1])},n.prototype.setVariable=function(t,e){return this.variables[t]!==e&&(this.variables[t]=this.ctx[t]=e),this},n.prototype.text=function(t,e,n){this.ctx.fillText(t,e,n)},n.prototype.backgroundRepeatShape=function(t,e,n,r,i,o,s,a,u){o=[[\"line\",Math.round(i),Math.round(o)],[\"line\",Math.round(i+s),Math.round(o)],[\"line\",Math.round(i+s),Math.round(a+o)],[\"line\",Math.round(i),Math.round(a+o)]];this.clip([o],function(){this.renderBackgroundRepeat(t,e,n,r,u[3],u[0])},this)},n.prototype.renderBackgroundRepeat=function(t,e,n,r,i,o){i=Math.round(r.left+e.left+i),o=Math.round(r.top+e.top+o);this.setFillStyle(this.ctx.createPattern(this.resizeImage(t,n),\"repeat\")),this.ctx.translate(i,o),this.ctx.fill(),this.ctx.translate(-i,-o)},n.prototype.renderBackgroundGradient=function(t,e){var n;t instanceof o&&(n=this.ctx.createLinearGradient(e.left+e.width*t.x0,e.top+e.height*t.y0,e.left+e.width*t.x1,e.top+e.height*t.y1),t.colorStops.forEach(function(t){n.addColorStop(t.stop,t.color.toString())}),this.rectangle(e.left,e.top,e.width,e.height,n))},n.prototype.resizeImage=function(t,e){var n=t.image;if(n.width===e.width&&n.height===e.height)return n;t=document.createElement(\"canvas\");return t.width=e.width,t.height=e.height,t.getContext(\"2d\").drawImage(n,0,0,n.width,n.height,0,0,e.width,e.height),t},e.exports=n},{\"../lineargradientcontainer\":12,\"../log\":13,\"../renderer\":19}],21:[function(t,e){function n(t,e,n,r){i.call(this,n,r),this.ownStacking=t,this.contexts=[],this.children=[],this.opacity=(this.parent?this.parent.stack.opacity:1)*e}var i=t(\"./nodecontainer\");(n.prototype=Object.create(i.prototype)).getParentStack=function(t){var e=this.parent?this.parent.stack:null;return e?e.ownStacking?e:e.getParentStack(t):t.stack},e.exports=n},{\"./nodecontainer\":14}],22:[function(t,e){function n(t){this.rangeBounds=this.testRangeBounds(t),this.cors=this.testCORS(),this.svg=this.testSVG()}n.prototype.testRangeBounds=function(t){var e,n,r=!1;return t.createRange&&((e=t.createRange()).getBoundingClientRect&&((n=t.createElement(\"boundtest\")).style.height=\"123px\",n.style.display=\"block\",t.body.appendChild(n),e.selectNode(n),123===e.getBoundingClientRect().height&&(r=!0),t.body.removeChild(n))),r},n.prototype.testCORS=function(){return void 0!==(new Image).crossOrigin},n.prototype.testSVG=function(){var t=new Image,e=document.createElement(\"canvas\"),n=e.getContext(\"2d\");t.src=\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";try{n.drawImage(t,0,0),e.toDataURL()}catch(t){return!1}return!0},e.exports=n},{}],23:[function(t,e){function n(t){this.src=t,this.image=null;var n=this;this.promise=this.hasFabric().then(function(){return n.isInline(t)?Promise.resolve(n.inlineFormatting(t)):r(t)}).then(function(e){return new Promise(function(t){window.html2canvas.svg.fabric.loadSVGFromString(e,n.createCanvas.call(n,t))})})}var r=t(\"./xhr\"),i=t(\"./utils\").decode64;n.prototype.hasFabric=function(){return window.html2canvas.svg&&window.html2canvas.svg.fabric?Promise.resolve():Promise.reject(new Error(\"html2canvas.svg.js is not loaded, cannot render svg\"))},n.prototype.inlineFormatting=function(t){return/^data:image\\/svg\\+xml;base64,/.test(t)?this.decode64(this.removeContentType(t)):this.removeContentType(t)},n.prototype.removeContentType=function(t){return t.replace(/^data:image\\/svg\\+xml(;base64)?,/,\"\")},n.prototype.isInline=function(t){return/^data:image\\/svg\\+xml/i.test(t)},n.prototype.createCanvas=function(r){var i=this;return function(t,e){var n=new window.html2canvas.svg.fabric.StaticCanvas(\"c\");i.image=n.lowerCanvasEl,n.setWidth(e.width).setHeight(e.height).add(window.html2canvas.svg.fabric.util.groupSVGElements(t,e)).renderAll(),r(n.lowerCanvasEl)}},n.prototype.decode64=function(t){return\"function\"==typeof window.atob?window.atob(t):i(t)},e.exports=n},{\"./utils\":26,\"./xhr\":28}],24:[function(t,e){function n(n,t){this.src=n,this.image=null;var r=this;this.promise=t?new Promise(function(t,e){r.image=new Image,r.image.onload=t,r.image.onerror=e,r.image.src=\"data:image/svg+xml,\"+(new XMLSerializer).serializeToString(n),!0===r.image.complete&&t(r.image)}):this.hasFabric().then(function(){return new Promise(function(t){window.html2canvas.svg.fabric.parseSVGDocument(n,r.createCanvas.call(r,t))})})}t=t(\"./svgcontainer\");n.prototype=Object.create(t.prototype),e.exports=n},{\"./svgcontainer\":23}],25:[function(t,e){function n(t,e){i.call(this,t,e)}function r(t,e,n){return 0<t.length?e+n.toUpperCase():void 0}var i=t(\"./nodecontainer\");(n.prototype=Object.create(i.prototype)).applyTextTransform=function(){this.node.data=this.transform(this.parent.css(\"textTransform\"))},n.prototype.transform=function(t){var e=this.node.data;switch(t){case\"lowercase\":return e.toLowerCase();case\"capitalize\":return e.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g,r);case\"uppercase\":return e.toUpperCase();default:return e}},e.exports=n},{\"./nodecontainer\":14}],26:[function(t,e,n){n.smallImage=function(){return\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"},n.bind=function(t,e){return function(){return t.apply(e,arguments)}},n.decode64=function(t){for(var e,n,r,i,o,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=t.length,u=\"\",c=0;c<a;c+=4)r=s.indexOf(t[c])<<2|(o=s.indexOf(t[c+1]))>>4,i=(15&o)<<4|(e=s.indexOf(t[c+2]))>>2,o=(3&e)<<6|(n=s.indexOf(t[c+3])),u+=64===e?String.fromCharCode(r):64===n||-1===n?String.fromCharCode(r,i):String.fromCharCode(r,i,o);return u},n.getBounds=function(t){if(t.getBoundingClientRect){var e=t.getBoundingClientRect(),n=null==t.offsetWidth?e.width:t.offsetWidth;return{top:e.top,bottom:e.bottom||e.top+e.height,right:e.left+n,left:e.left,width:n,height:null==t.offsetHeight?e.height:t.offsetHeight}}return{}},n.offsetBounds=function(t){var e=t.offsetParent?n.offsetBounds(t.offsetParent):{top:0,left:0};return{top:t.offsetTop+e.top,bottom:t.offsetTop+t.offsetHeight+e.top,right:t.offsetLeft+e.left+t.offsetWidth,left:t.offsetLeft+e.left,width:t.offsetWidth,height:t.offsetHeight}},n.parseBackgrounds=function(t){function e(){h&&('\"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)),n&&l.push(n),\"-\"===h.substr(0,1)&&0<(i=h.indexOf(\"-\",1)+1)&&(r=h.substr(0,i),h=h.substr(i)),a.push({prefix:r,method:h.toLowerCase(),value:o,args:l,image:null})),l=[],h=r=n=o=\"\"}var n,r,i,o,s,a=[],u=0,c=0,l=[],h=r=n=o=\"\";return t.split(\"\").forEach(function(t){if(!(0===u&&-1<\" \\r\\n\\t\".indexOf(t))){switch(t){case'\"':s?s===t&&(s=null):s=t;break;case\"(\":if(s)break;if(0===u)return u=1,void(o+=t);c++;break;case\")\":if(s)break;if(1===u){if(0===c)return u=0,o+=t,void e();c--}break;case\",\":if(s)break;if(0===u)return void e();if(1===u&&0===c&&!h.match(/^url$/i))return l.push(n),n=\"\",void(o+=t)}o+=t,0===u?h+=t:n+=t}}),e(),a}},{}],27:[function(t,e){function n(t){r.apply(this,arguments),this.type=\"linear\"===t.args[0]?r.TYPES.LINEAR:r.TYPES.RADIAL}var r=t(\"./gradientcontainer\");n.prototype=Object.create(r.prototype),e.exports=n},{\"./gradientcontainer\":9}],28:[function(t,e){e.exports=function(r){return new Promise(function(t,e){var n=new XMLHttpRequest;n.open(\"GET\",r),n.onload=function(){200===n.status?t(n.responseText):e(new Error(n.statusText))},n.onerror=function(){e(new Error(\"Network Error\"))},n.send()})}},{}]},{},[4])(4)}),function(t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).localforage=t()}(function(){return function r(i,o,s){function a(e,t){if(!o[e]){if(!i[e]){var n=\"function\"==typeof require&&require;if(!t&&n)return n(e,!0);if(u)return u(e,!0);n=new Error(\"Cannot find module '\"+e+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}n=o[e]={exports:{}};i[e][0].call(n.exports,function(t){return a(i[e][1][t]||t)},n,n.exports,r,i,o,s)}return o[e].exports}for(var u=\"function\"==typeof require&&require,t=0;t<s.length;t++)a(s[t]);return a}({1:[function(t,c,e){(function(e){\"use strict\";function n(){o=!0;for(var t,e,n=u.length;n;){for(e=u,u=[],t=-1;++t<n;)e[t]();n=u.length}o=!1}var t,r,i,o,s=e.MutationObserver||e.WebKitMutationObserver,a=s?(t=0,s=new s(n),r=e.document.createTextNode(\"\"),s.observe(r,{characterData:!0}),function(){r.data=t=++t%2}):e.setImmediate||void 0===e.MessageChannel?\"document\"in e&&\"onreadystatechange\"in e.document.createElement(\"script\")?function(){var t=e.document.createElement(\"script\");t.onreadystatechange=function(){n(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(n,0)}:((i=new e.MessageChannel).port1.onmessage=n,function(){i.port2.postMessage(0)}),u=[];c.exports=function(t){1!==u.push(t)||o||a()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],2:[function(t,e,n){\"use strict\";function u(){}function r(t){if(\"function\"!=typeof t)throw new TypeError(\"resolver must be a function\");this.state=d,this.queue=[],this.outcome=void 0,t!==u&&a(this,t)}function i(t,e,n){this.promise=t,\"function\"==typeof e&&(this.onFulfilled=e,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function o(e,n,r){l(function(){var t;try{t=n(r)}catch(t){return h.reject(e,t)}t===e?h.reject(e,new TypeError(\"Cannot resolve promise with itself\")):h.resolve(e,t)})}function s(t){var e=t&&t.then;if(t&&(\"object\"==typeof t||\"function\"==typeof t)&&\"function\"==typeof e)return function(){e.apply(t,arguments)}}function a(e,t){function n(t){i||(i=!0,h.reject(e,t))}function r(t){i||(i=!0,h.resolve(e,t))}var i=!1,o=c(function(){t(r,n)});\"error\"===o.status&&n(o.value)}function c(t,e){var n={};try{n.value=t(e),n.status=\"success\"}catch(t){n.status=\"error\",n.value=t}return n}var l=t(1),h={},f=[\"REJECTED\"],p=[\"FULFILLED\"],d=[\"PENDING\"];(e.exports=r).prototype.catch=function(t){return this.then(null,t)},r.prototype.then=function(t,e){if(\"function\"!=typeof t&&this.state===p||\"function\"!=typeof e&&this.state===f)return this;var n=new this.constructor(u);return this.state!==d?o(n,this.state===p?t:e,this.outcome):this.queue.push(new i(n,t,e)),n},i.prototype.callFulfilled=function(t){h.resolve(this.promise,t)},i.prototype.otherCallFulfilled=function(t){o(this.promise,this.onFulfilled,t)},i.prototype.callRejected=function(t){h.reject(this.promise,t)},i.prototype.otherCallRejected=function(t){o(this.promise,this.onRejected,t)},h.resolve=function(t,e){var n=c(s,e);if(\"error\"===n.status)return h.reject(t,n.value);n=n.value;if(n)a(t,n);else{t.state=p,t.outcome=e;for(var r=-1,i=t.queue.length;++r<i;)t.queue[r].callFulfilled(e)}return t},h.reject=function(t,e){t.state=f,t.outcome=e;for(var n=-1,r=t.queue.length;++n<r;)t.queue[n].callRejected(e);return t},r.resolve=function(t){return t instanceof this?t:h.resolve(new this(u),t)},r.reject=function(t){var e=new this(u);return h.reject(e,t)},r.all=function(t){var n=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var r=t.length,i=!1;if(!r)return this.resolve([]);for(var o=new Array(r),s=0,e=-1,a=new this(u);++e<r;)!function(t,e){n.resolve(t).then(function(t){o[e]=t,++s!==r||i||(i=!0,h.resolve(a,o))},function(t){i||(i=!0,h.reject(a,t))})}(t[e],e);return a},r.race=function(t){var e=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var n=t.length,r=!1;if(!n)return this.resolve([]);for(var i,o=-1,s=new this(u);++o<n;)i=t[o],e.resolve(i).then(function(t){r||(r=!0,h.resolve(s,t))},function(t){r||(r=!0,h.reject(s,t))});return s}},{1:1}],3:[function(e,t,n){(function(t){\"use strict\";\"function\"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{2:2}],4:[function(t,e,n){\"use strict\";function o(e,n){e=e||[],n=n||{};try{return new Blob(e,n)}catch(t){if(\"TypeError\"!==t.name)throw t;for(var r=new(\"undefined\"!=typeof BlobBuilder?BlobBuilder:\"undefined\"!=typeof MSBlobBuilder?MSBlobBuilder:\"undefined\"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),i=0;i<e.length;i+=1)r.append(e[i]);return r.getBlob(n.type)}}function l(t,e){e&&t.then(function(t){e(null,t)},function(t){e(t)})}function u(t,e,n){\"function\"==typeof e&&t.then(e),\"function\"==typeof n&&t.catch(n)}function h(t){return\"string\"!=typeof t&&(t=String(t)),t}function a(){if(arguments.length&&\"function\"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}function r(t){return\"boolean\"==typeof D?P.resolve(D):(r=t,new P(function(n){var t=r.transaction(N,L),e=o([\"\"]);t.objectStore(N).put(e,\"key\"),t.onabort=function(t){t.preventDefault(),t.stopPropagation(),n(!1)},t.oncomplete=function(){var t=navigator.userAgent.match(/Chrome\\/(\\d+)/),e=navigator.userAgent.match(/Edge\\//);n(e||!t||43<=parseInt(t[1],10))}}).catch(function(){return!1}).then(function(t){return D=t}));var r}function c(t){var t=R[t.name],n={};n.promise=new P(function(t,e){n.resolve=t,n.reject=e}),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then(function(){return n.promise}):t.dbReady=n.promise}function f(t){t=R[t.name].deferredOperations.pop();return t&&(t.resolve(),t.promise)}function p(t,e){t=R[t.name].deferredOperations.pop();if(t)return t.reject(e),t.promise}function i(i,o){return new P(function(t,e){if(R[i.name]=R[i.name]||_(),i.db){if(!o)return t(i.db);c(i),i.db.close()}var n=[i.name];o&&n.push(i.version);var r=I.open.apply(I,n);o&&(r.onupgradeneeded=function(t){var e=r.result;try{e.createObjectStore(i.storeName),t.oldVersion<=1&&e.createObjectStore(N)}catch(e){if(\"ConstraintError\"!==e.name)throw e}}),r.onerror=function(t){t.preventDefault(),e(r.error)},r.onsuccess=function(){t(r.result),f(i)}})}function d(t){return i(t,!1)}function g(t){return i(t,!0)}function m(t){if(!t.db)return 1;var e=!t.db.objectStoreNames.contains(t.storeName),n=t.version<t.db.version,r=t.version>t.db.version;return n&&(t.version,t.version=t.db.version),(r||e)&&(!e||(e=t.db.version+1)>t.version&&(t.version=e),1)}function v(t){return o([function(t){for(var e=t.length,n=new ArrayBuffer(e),r=new Uint8Array(n),i=0;i<e;i++)r[i]=t.charCodeAt(i);return n}(atob(t.data))],{type:t.type})}function y(t){return t&&t.__local_forage_encoded_blob}function b(t){var e=this,n=e._initReady().then(function(){var t=R[e._dbInfo.name];if(t&&t.dbReady)return t.dbReady});return u(n,t,t),n}function w(t,e,n,r){void 0===r&&(r=1);try{var i=t.db.transaction(t.storeName,e);n(null,i)}catch(i){if(0<r&&(!t.db||\"InvalidStateError\"===i.name||\"NotFoundError\"===i.name))return P.resolve().then(function(){if(!t.db||\"NotFoundError\"===i.name&&!t.db.objectStoreNames.contains(t.storeName)&&t.version<=t.db.version)return t.db&&(t.version=t.db.version+1),g(t)}).then(function(){return function(n){c(n);for(var r=R[n.name],i=r.forages,t=0;t<i.length;t++){var e=i[t];e._dbInfo.db&&(e._dbInfo.db.close(),e._dbInfo.db=null)}return n.db=null,d(n).then(function(t){return n.db=t,m(n)?g(n):t}).then(function(t){n.db=r.db=t;for(var e=0;e<i.length;e++)i[e]._dbInfo.db=t}).catch(function(t){throw p(n,t),t})}(t).then(function(){w(t,e,n,r-1)})}).catch(n);n(i)}}function _(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function s(t){var e,n,r,i,o=.75*t.length,s=t.length,a=0;\"=\"===t[t.length-1]&&(o--,\"=\"===t[t.length-2]&&o--);for(var o=new ArrayBuffer(o),u=new Uint8Array(o),c=0;c<s;c+=4)e=H.indexOf(t[c]),n=H.indexOf(t[c+1]),r=H.indexOf(t[c+2]),i=H.indexOf(t[c+3]),u[a++]=e<<2|n>>4,u[a++]=(15&n)<<4|r>>2,u[a++]=(3&r)<<6|63&i;return o}function x(t){for(var e=new Uint8Array(t),n=\"\",r=0;r<e.length;r+=3)n+=H[e[r]>>2],n+=H[(3&e[r])<<4|e[r+1]>>4],n+=H[(15&e[r+1])<<2|e[r+2]>>6],n+=H[63&e[r+2]];return e.length%3==2?n=n.substring(0,n.length-1)+\"=\":e.length%3==1&&(n=n.substring(0,n.length-2)+\"==\"),n}function C(t,e,n,r){t.executeSql(\"CREATE TABLE IF NOT EXISTS \"+e.storeName+\" (id INTEGER PRIMARY KEY, key unique, value)\",[],n,r)}function k(t,r,i,o,s,a){t.executeSql(i,o,s,function(t,n){n.code===n.SYNTAX_ERR?t.executeSql(\"SELECT name FROM sqlite_master WHERE type='table' AND name = ?\",[name],function(t,e){e.rows.length?a(t,n):C(t,r,function(){t.executeSql(i,o,s,a)},a)},a):a(t,n)},a)}function S(s,t,a,u){var c=this;s=h(s);var e=new P(function(i,o){c.ready().then(function(){void 0===t&&(t=null);var n=t,r=c._dbInfo;r.serializer.serialize(t,function(e,t){t?o(t):r.db.transaction(function(t){k(t,r,\"INSERT OR REPLACE INTO \"+r.storeName+\" (key, value) VALUES (?, ?)\",[s,e],function(){i(n)},function(t,e){o(e)})},function(t){t.code===t.QUOTA_ERR&&(0<u?i(S.apply(c,[s,n,a,u-1])):o(t))})})}).catch(o)});return l(e,a),e}function O(t,e){var n=t.name+\"/\";return t.storeName!==e.storeName&&(n+=t.storeName+\"/\"),n}function E(){return!function(){var t=\"_localforage_support_test\";try{return localStorage.setItem(t,!0),localStorage.removeItem(t),0}catch(t){return 1}}()||0<localStorage.length}function T(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];if(n)for(var r in n)n.hasOwnProperty(r)&&(X(n[r])?t[r]=n[r].slice():t[r]=n[r])}return t}var A=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},I=function(){try{if(\"undefined\"!=typeof indexedDB)return indexedDB;if(\"undefined\"!=typeof webkitIndexedDB)return webkitIndexedDB;if(\"undefined\"!=typeof mozIndexedDB)return mozIndexedDB;if(\"undefined\"!=typeof OIndexedDB)return OIndexedDB;if(\"undefined\"!=typeof msIndexedDB)return msIndexedDB}catch(t){return}}();\"undefined\"==typeof Promise&&t(3);function j(t,e){for(var n,r,i=t.length,o=0;o<i;){if((n=t[o])===(r=e)||\"number\"==typeof n&&\"number\"==typeof r&&isNaN(n)&&isNaN(r))return 1;o++}}var P=Promise,N=\"local-forage-detect-blob-support\",D=void 0,R={},M=Object.prototype.toString,W=\"readonly\",L=\"readwrite\",F={_driver:\"asyncStorage\",_initStorage:function(t){function e(){return P.resolve()}var r=this,i={db:null};if(t)for(var n in t)i[n]=t[n];var o=R[i.name];o||(o=_(),R[i.name]=o),o.forages.push(r),r._initReady||(r._initReady=r.ready,r.ready=b);for(var s=[],a=0;a<o.forages.length;a++){var u=o.forages[a];u!==r&&s.push(u._initReady().catch(e))}var c=o.forages.slice(0);return P.all(s).then(function(){return i.db=o.db,d(i)}).then(function(t){return i.db=t,m(i,r._defaultConfig.version)?g(i):t}).then(function(t){i.db=o.db=t,r._dbInfo=i;for(var e=0;e<c.length;e++){var n=c[e];n!==r&&(n._dbInfo.db=i.db,n._dbInfo.version=i.version)}})},_support:function(){try{if(!I)return!1;var t=\"undefined\"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),e=\"function\"==typeof fetch&&-1!==fetch.toString().indexOf(\"[native code\");return(!t||e)&&\"undefined\"!=typeof indexedDB&&\"undefined\"!=typeof IDBKeyRange}catch(t){return!1}}(),iterate:function(s,t){var a=this,e=new P(function(i,o){a.ready().then(function(){w(a._dbInfo,W,function(t,e){if(t)return o(t);try{var n=e.objectStore(a._dbInfo.storeName).openCursor(),r=1;n.onsuccess=function(){var t,e=n.result;e?(y(t=e.value)&&(t=v(t)),void 0!==(t=s(t,e.key,r++))?i(t):e.continue()):i()},n.onerror=function(){o(n.error)}}catch(t){o(t)}})}).catch(o)});return l(e,t),e},getItem:function(o,t){var s=this;o=h(o);var e=new P(function(r,i){s.ready().then(function(){w(s._dbInfo,W,function(t,e){if(t)return i(t);try{var n=e.objectStore(s._dbInfo.storeName).get(o);n.onsuccess=function(){var t=n.result;void 0===t&&(t=null),y(t)&&(t=v(t)),r(t)},n.onerror=function(){i(n.error)}}catch(t){i(t)}})}).catch(i)});return l(e,t),e},setItem:function(a,e,t){var u=this;a=h(a);var n=new P(function(o,s){var t;u.ready().then(function(){return t=u._dbInfo,\"[object Blob]\"===M.call(e)?r(t.db).then(function(t){return t?e:(r=e,new P(function(e,t){var n=new FileReader;n.onerror=t,n.onloadend=function(t){t=btoa(t.target.result||\"\");e({__local_forage_encoded_blob:!0,data:t,type:r.type})},n.readAsBinaryString(r)}));var r}):e}).then(function(i){w(u._dbInfo,L,function(t,e){if(t)return s(t);try{var n=e.objectStore(u._dbInfo.storeName);null===i&&(i=void 0);var r=n.put(i,a);e.oncomplete=function(){void 0===i&&(i=null),o(i)},e.onabort=e.onerror=function(){var t=r.error||r.transaction.error;s(t)}}catch(t){s(t)}})}).catch(s)});return l(n,t),n},removeItem:function(o,t){var s=this;o=h(o);var e=new P(function(r,i){s.ready().then(function(){w(s._dbInfo,L,function(t,e){if(t)return i(t);try{var n=e.objectStore(s._dbInfo.storeName).delete(o);e.oncomplete=function(){r()},e.onerror=function(){i(n.error)},e.onabort=function(){var t=n.error||n.transaction.error;i(t)}}catch(t){i(t)}})}).catch(i)});return l(e,t),e},clear:function(t){var o=this,e=new P(function(r,i){o.ready().then(function(){w(o._dbInfo,L,function(t,e){if(t)return i(t);try{var n=e.objectStore(o._dbInfo.storeName).clear();e.oncomplete=function(){r()},e.onabort=e.onerror=function(){var t=n.error||n.transaction.error;i(t)}}catch(t){i(t)}})}).catch(i)});return l(e,t),e},length:function(t){var o=this,e=new P(function(r,i){o.ready().then(function(){w(o._dbInfo,W,function(t,e){if(t)return i(t);try{var n=e.objectStore(o._dbInfo.storeName).count();n.onsuccess=function(){r(n.result)},n.onerror=function(){i(n.error)}}catch(t){i(t)}})}).catch(i)});return l(e,t),e},key:function(a,t){var u=this,e=new P(function(o,s){a<0?o(null):u.ready().then(function(){w(u._dbInfo,W,function(t,e){if(t)return s(t);try{var n=e.objectStore(u._dbInfo.storeName),r=!1,i=n.openCursor();i.onsuccess=function(){var t=i.result;t?0===a||r?o(t.key):(r=!0,t.advance(a)):o(null)},i.onerror=function(){s(i.error)}}catch(t){s(t)}})}).catch(s)});return l(e,t),e},keys:function(t){var s=this,e=new P(function(i,o){s.ready().then(function(){w(s._dbInfo,W,function(t,e){if(t)return o(t);try{var n=e.objectStore(s._dbInfo.storeName).openCursor(),r=[];n.onsuccess=function(){var t=n.result;t?(r.push(t.key),t.continue()):i(r)},n.onerror=function(){o(n.error)}}catch(t){o(t)}})}).catch(o)});return l(e,t),e},dropInstance:function(s,t){t=a.apply(this,arguments);var e,n=this.config();return(s=\"function\"!=typeof s&&s||{}).name||(s.name=s.name||n.name,s.storeName=s.storeName||n.storeName),l(e=s.name?(e=s.name===n.name&&this._dbInfo.db?P.resolve(this._dbInfo.db):d(s).then(function(t){var e=R[s.name],n=e.forages;e.db=t;for(var r=0;r<n.length;r++)n[r]._dbInfo.db=t;return t}),s.storeName?e.then(function(t){if(t.objectStoreNames.contains(s.storeName)){var i=t.version+1;c(s);var r=R[s.name],o=r.forages;t.close();for(var e=0;e<o.length;e++){var n=o[e];n._dbInfo.db=null,n._dbInfo.version=i}return new P(function(e,n){var r=I.open(s.name,i);r.onerror=function(t){r.result.close(),n(t)},r.onupgradeneeded=function(){r.result.deleteObjectStore(s.storeName)},r.onsuccess=function(){var t=r.result;t.close(),e(t)}}).then(function(t){r.db=t;for(var e=0;e<o.length;e++){var n=o[e];n._dbInfo.db=t,f(n._dbInfo)}}).catch(function(t){throw(p(s,t)||P.resolve()).catch(function(){}),t})}}):e.then(function(t){c(s);var n=R[s.name],r=n.forages;t.close();for(var e=0;e<r.length;e++)r[e]._dbInfo.db=null;return new P(function(e,n){var r=I.deleteDatabase(s.name);r.onerror=r.onblocked=function(t){var e=r.result;e&&e.close(),n(t)},r.onsuccess=function(){var t=r.result;t&&t.close(),e(t)}}).then(function(t){n.db=t;for(var e=0;e<r.length;e++)f(r[e]._dbInfo)}).catch(function(t){throw(p(s,t)||P.resolve()).catch(function(){}),t})})):P.reject(\"Invalid arguments\"),t),e}},H=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",B=/^~~local_forage_type~([^~]+)~/,q=\"__lfsc__:\",z=q.length,U=z+\"arbf\".length,G=Object.prototype.toString,V={serialize:function(e,n){var t=\"\";if(e&&(t=G.call(e)),e&&(\"[object ArrayBuffer]\"===t||e.buffer&&\"[object ArrayBuffer]\"===G.call(e.buffer))){var r=q;e instanceof ArrayBuffer?(i=e,r+=\"arbf\"):(i=e.buffer,\"[object Int8Array]\"===t?r+=\"si08\":\"[object Uint8Array]\"===t?r+=\"ui08\":\"[object Uint8ClampedArray]\"===t?r+=\"uic8\":\"[object Int16Array]\"===t?r+=\"si16\":\"[object Uint16Array]\"===t?r+=\"ur16\":\"[object Int32Array]\"===t?r+=\"si32\":\"[object Uint32Array]\"===t?r+=\"ui32\":\"[object Float32Array]\"===t?r+=\"fl32\":\"[object Float64Array]\"===t?r+=\"fl64\":n(new Error(\"Failed to get type for BinaryArray\"))),n(r+x(i))}else if(\"[object Blob]\"===t){var i=new FileReader;i.onload=function(){var t=\"~~local_forage_type~\"+e.type+\"~\"+x(this.result);n(q+\"blob\"+t)},i.readAsArrayBuffer(e)}else try{n(JSON.stringify(e))}catch(t){n(null,t)}},deserialize:function(t){if(t.substring(0,z)!==q)return JSON.parse(t);var e,n=t.substring(U),r=t.substring(z,U);\"blob\"===r&&B.test(n)&&(e=(t=n.match(B))[1],n=n.substring(t[0].length));var i=s(n);switch(r){case\"arbf\":return i;case\"blob\":return o([i],{type:e});case\"si08\":return new Int8Array(i);case\"ui08\":return new Uint8Array(i);case\"uic8\":return new Uint8ClampedArray(i);case\"si16\":return new Int16Array(i);case\"ur16\":return new Uint16Array(i);case\"si32\":return new Int32Array(i);case\"ui32\":return new Uint32Array(i);case\"fl32\":return new Float32Array(i);case\"fl64\":return new Float64Array(i);default:throw new Error(\"Unkown type: \"+r)}},stringToBuffer:s,bufferToString:x},$={_driver:\"webSQLStorage\",_initStorage:function(t){var r=this,i={db:null};if(t)for(var e in t)i[e]=\"string\"!=typeof t[e]?t[e].toString():t[e];var n=new P(function(e,n){try{i.db=openDatabase(i.name,String(i.version),i.description,i.size)}catch(e){return n(e)}i.db.transaction(function(t){C(t,i,function(){r._dbInfo=i,e()},function(t,e){n(e)})},n)});return i.serializer=V,n},_support:\"function\"==typeof openDatabase,iterate:function(c,t){var e=this,n=new P(function(u,n){e.ready().then(function(){var a=e._dbInfo;a.db.transaction(function(t){k(t,a,\"SELECT * FROM \"+a.storeName,[],function(t,e){for(var n=e.rows,r=n.length,i=0;i<r;i++){var o=n.item(i),s=(s=o.value)&&a.serializer.deserialize(s);if(void 0!==(s=c(s,o.key,i+1)))return void u(s)}u()},function(t,e){n(e)})})}).catch(n)});return l(n,t),n},getItem:function(e,t){var o=this;e=h(e);var n=new P(function(r,i){o.ready().then(function(){var n=o._dbInfo;n.db.transaction(function(t){k(t,n,\"SELECT * FROM \"+n.storeName+\" WHERE key = ? LIMIT 1\",[e],function(t,e){e=(e=e.rows.length?e.rows.item(0).value:null)&&n.serializer.deserialize(e);r(e)},function(t,e){i(e)})})}).catch(i)});return l(n,t),n},setItem:function(t,e,n){return S.apply(this,[t,e,n,1])},removeItem:function(i,t){var o=this;i=h(i);var e=new P(function(n,r){o.ready().then(function(){var e=o._dbInfo;e.db.transaction(function(t){k(t,e,\"DELETE FROM \"+e.storeName+\" WHERE key = ?\",[i],function(){n()},function(t,e){r(e)})})}).catch(r)});return l(e,t),e},clear:function(t){var i=this,e=new P(function(n,r){i.ready().then(function(){var e=i._dbInfo;e.db.transaction(function(t){k(t,e,\"DELETE FROM \"+e.storeName,[],function(){n()},function(t,e){r(e)})})}).catch(r)});return l(e,t),e},length:function(t){var i=this,e=new P(function(n,r){i.ready().then(function(){var e=i._dbInfo;e.db.transaction(function(t){k(t,e,\"SELECT COUNT(key) as c FROM \"+e.storeName,[],function(t,e){e=e.rows.item(0).c;n(e)},function(t,e){r(e)})})}).catch(r)});return l(e,t),e},key:function(i,t){var o=this,e=new P(function(n,r){o.ready().then(function(){var e=o._dbInfo;e.db.transaction(function(t){k(t,e,\"SELECT key FROM \"+e.storeName+\" WHERE id = ? LIMIT 1\",[i+1],function(t,e){e=e.rows.length?e.rows.item(0).key:null;n(e)},function(t,e){r(e)})})}).catch(r)});return l(e,t),e},keys:function(t){var r=this,e=new P(function(i,n){r.ready().then(function(){var e=r._dbInfo;e.db.transaction(function(t){k(t,e,\"SELECT key FROM \"+e.storeName,[],function(t,e){for(var n=[],r=0;r<e.rows.length;r++)n.push(e.rows.item(r).key);i(n)},function(t,e){n(e)})})}).catch(n)});return l(e,t),e},dropInstance:function(n,t){t=a.apply(this,arguments);var r=this.config();(n=\"function\"!=typeof n&&n||{}).name||(n.name=n.name||r.name,n.storeName=n.storeName||r.storeName);var i=this,e=n.name?new P(function(t){var o,e=n.name===r.name?i._dbInfo.db:openDatabase(n.name,\"\",\"\",0);t(n.storeName?{db:e,storeNames:[n.storeName]}:(o=e,new P(function(i,n){o.transaction(function(t){t.executeSql(\"SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\",[],function(t,e){for(var n=[],r=0;r<e.rows.length;r++)n.push(e.rows.item(r).name);i({db:o,storeNames:n})},function(t,e){n(e)})},function(t){n(t)})})))}).then(function(s){return new P(function(i,o){s.db.transaction(function(r){for(var t=[],e=0,n=s.storeNames.length;e<n;e++)t.push(function(e){return new P(function(t,n){r.executeSql(\"DROP TABLE IF EXISTS \"+e,[],function(){t()},function(t,e){n(e)})})}(s.storeNames[e]));P.all(t).then(function(){i()}).catch(function(t){o(t)})},function(t){o(t)})})}):P.reject(\"Invalid arguments\");return l(e,t),e}},t={_driver:\"localStorageWrapper\",_initStorage:function(t){var e={};if(t)for(var n in t)e[n]=t[n];return e.keyPrefix=O(t,this._defaultConfig),E()?((this._dbInfo=e).serializer=V,P.resolve()):P.reject()},_support:function(){try{return\"undefined\"!=typeof localStorage&&\"setItem\"in localStorage&&!!localStorage.setItem}catch(t){return!1}}(),iterate:function(u,t){var c=this,e=c.ready().then(function(){for(var t=c._dbInfo,e=t.keyPrefix,n=e.length,r=localStorage.length,i=1,o=0;o<r;o++){var s=localStorage.key(o);if(0===s.indexOf(e)){var a=(a=localStorage.getItem(s))&&t.serializer.deserialize(a);if(void 0!==(a=u(a,s.substring(n),i++)))return a}}});return l(e,t),e},getItem:function(n,t){var r=this;n=h(n);var e=r.ready().then(function(){var t=r._dbInfo,e=localStorage.getItem(t.keyPrefix+n);return e=e&&t.serializer.deserialize(e)});return l(e,t),e},setItem:function(s,t,e){var a=this;s=h(s);var n=a.ready().then(function(){void 0===t&&(t=null);var o=t;return new P(function(n,r){var i=a._dbInfo;i.serializer.serialize(t,function(t,e){if(e)r(e);else try{localStorage.setItem(i.keyPrefix+s,t),n(o)}catch(t){\"QuotaExceededError\"!==t.name&&\"NS_ERROR_DOM_QUOTA_REACHED\"!==t.name||r(t),r(t)}})})});return l(n,e),n},removeItem:function(e,t){var n=this;e=h(e);var r=n.ready().then(function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)});return l(r,t),r},clear:function(t){var r=this,e=r.ready().then(function(){for(var t=r._dbInfo.keyPrefix,e=localStorage.length-1;0<=e;e--){var n=localStorage.key(e);0===n.indexOf(t)&&localStorage.removeItem(n)}});return l(e,t),e},length:function(t){var e=this.keys().then(function(t){return t.length});return l(e,t),e},key:function(n,t){var r=this,e=r.ready().then(function(){var e,t=r._dbInfo;try{e=localStorage.key(n)}catch(t){e=null}return e=e&&e.substring(t.keyPrefix.length)});return l(e,t),e},keys:function(t){var o=this,e=o.ready().then(function(){for(var t=o._dbInfo,e=localStorage.length,n=[],r=0;r<e;r++){var i=localStorage.key(r);0===i.indexOf(t.keyPrefix)&&n.push(i.substring(t.keyPrefix.length))}return n});return l(e,t),e},dropInstance:function(e,t){t=a.apply(this,arguments),(e=\"function\"!=typeof e&&e||{}).name||(r=this.config(),e.name=e.name||r.name,e.storeName=e.storeName||r.storeName);var n=this,r=e.name?new P(function(t){t(e.storeName?O(e,n._defaultConfig):e.name+\"/\")}).then(function(t){for(var e=localStorage.length-1;0<=e;e--){var n=localStorage.key(e);0===n.indexOf(t)&&localStorage.removeItem(n)}}):P.reject(\"Invalid arguments\");return l(r,t),r}},X=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},Y={},K={},Q={INDEXEDDB:F,WEBSQL:$,LOCALSTORAGE:t},t=[Q.INDEXEDDB._driver,Q.WEBSQL._driver,Q.LOCALSTORAGE._driver],J=[\"dropInstance\"],Z=[\"clear\",\"getItem\",\"iterate\",\"key\",\"keys\",\"length\",\"removeItem\",\"setItem\"].concat(J),tt={description:\"\",driver:t.slice(),name:\"localforage\",size:4980736,storeName:\"keyvaluepairs\",version:1},t=new(et.prototype.config=function(t){if(\"object\"!==(void 0===t?\"undefined\":A(t)))return\"string\"==typeof t?this._config[t]:this._config;if(this._ready)return new Error(\"Can't call config() after localforage has been used.\");for(var e in t){if(\"storeName\"===e&&(t[e]=t[e].replace(/\\W/g,\"_\")),\"version\"===e&&\"number\"!=typeof t[e])return new Error(\"Database version must be a number.\");this._config[e]=t[e]}return!(\"driver\"in t&&t.driver)||this.setDriver(this._config.driver)},et.prototype.defineDriver=function(c,t,e){var n=new P(function(e,n){try{var r=c._driver,t=new Error(\"Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver\");if(!c._driver)return void n(t);for(var i=Z.concat(\"_initStorage\"),o=0,s=i.length;o<s;o++){var a=i[o];if((!j(J,a)||c[a])&&\"function\"!=typeof c[a])return void n(t)}!function(){for(var t=0,e=J.length;t<e;t++){var n=J[t];c[n]||(c[n]=function(e){return function(){var t=new Error(\"Method \"+e+\" is not implemented by the current driver\"),t=P.reject(t);return l(t,arguments[arguments.length-1]),t}}(n))}}();var u=function(t){Y[r],Y[r]=c,K[r]=t,e()};\"_support\"in c?c._support&&\"function\"==typeof c._support?c._support().then(u,n):u(!!c._support):u(!0)}catch(t){n(t)}});return u(n,t,e),n},et.prototype.driver=function(){return this._driver||null},et.prototype.getDriver=function(t,e,n){t=Y[t]?P.resolve(Y[t]):P.reject(new Error(\"Driver not found.\"));return u(t,e,n),t},et.prototype.getSerializer=function(t){var e=P.resolve(V);return u(e,t),e},et.prototype.ready=function(t){var e=this,n=e._driverSet.then(function(){return null===e._ready&&(e._ready=e._initDriver()),e._ready});return u(n,t,t),n},et.prototype.setDriver=function(t,e,n){function o(){a._config.driver=a.driver()}function s(t){return a._extend(t),o(),a._ready=a._initStorage(a._config),a._ready}function r(i){return function(){var r=0;return function t(){for(;r<i.length;){var e=i[r];return r++,a._dbInfo=null,a._ready=null,a.getDriver(e).then(s).catch(t)}o();var n=new Error(\"No available storage method found.\");return a._driverSet=P.reject(n),a._driverSet}()}}var a=this;X(t)||(t=[t]);var i=this._getSupportedDrivers(t),t=null!==this._driverSet?this._driverSet.catch(function(){return P.resolve()}):P.resolve();return this._driverSet=t.then(function(){var t=i[0];return a._dbInfo=null,a._ready=null,a.getDriver(t).then(function(t){a._driver=t._driver,o(),a._wrapLibraryMethodsWithReady(),a._initDriver=r(i)})}).catch(function(){o();var t=new Error(\"No available storage method found.\");return a._driverSet=P.reject(t),a._driverSet}),u(this._driverSet,e,n),this._driverSet},et.prototype.supports=function(t){return!!K[t]},et.prototype._extend=function(t){T(this,t)},et.prototype._getSupportedDrivers=function(t){for(var e=[],n=0,r=t.length;n<r;n++){var i=t[n];this.supports(i)&&e.push(i)}return e},et.prototype._wrapLibraryMethodsWithReady=function(){for(var t=0,e=Z.length;t<e;t++)!function(e,n){e[n]=function(){var t=arguments;return e.ready().then(function(){return e[n].apply(e,t)})}}(this,Z[t])},et.prototype.createInstance=function(t){return new et(t)},et);function et(t){for(var e in!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,et),Q){var n,r;Q.hasOwnProperty(e)&&(r=(n=Q[e])._driver,this[e]=r,Y[r]||this.defineDriver(n))}this._defaultConfig=T({},tt),this._config=T({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}e.exports=t},{3:3}]},{},[4])(4)}),function(){function Bo(t,e){return t.set(e[0],e[1]),t}function qo(t,e){return t.add(e),t}function zo(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Uo(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var s=t[i];e(r,s,n(s),t)}return r}function Go(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function Vo(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function $o(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function Xo(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var s=t[n];e(s,n,t)&&(o[i++]=s)}return o}function Yo(t,e){return!!(null==t?0:t.length)&&-1<is(t,e,0)}function Ko(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function Qo(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function Jo(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function Zo(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function ts(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function es(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function ns(t,r,e){var i;return e(t,function(t,e,n){if(r(t,e,n))return i=e,!1}),i}function rs(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function is(t,e,n){return e==e?function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):rs(t,ss,n)}function os(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function ss(t){return t!=t}function as(t,e){var n=null==t?0:t.length;return n?ls(t,e)/n:Is}function us(e){return function(t){return null==t?Ss:t[e]}}function t(e){return function(t){return null==e?Ss:e[t]}}function cs(t,r,i,o,e){return e(t,function(t,e,n){i=o?(o=!1,t):r(i,t,e,n)}),i}function ls(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==Ss&&(n=n===Ss?o:n+o)}return n}function hs(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function fs(e){return function(t){return e(t)}}function ps(e,t){return Qo(t,function(t){return e[t]})}function ds(t,e){return t.has(e)}function gs(t,e){for(var n=-1,r=t.length;++n<r&&-1<is(e,t[n],0););return n}function ms(t,e){for(var n=t.length;n--&&-1<is(e,t[n],0););return n}function vs(t){return\"\\\\\"+C[t]}function ys(t){return x.test(t)}function bs(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function ws(e,n){return function(t){return e(n(t))}}function _s(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var s=t[n];s!==e&&s!==Ts||(t[n]=Ts,o[i++]=n)}return o}function xs(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function Cs(t){return(ys(t)?function(t){for(var e=_.lastIndex=0;_.test(t);)++e;return e}:S)(t)}function ks(t){return ys(t)?t.match(_)||[]:t.split(\"\")}var Ss,Os=\"Expected a function\",Es=\"__lodash_hash_undefined__\",Ts=\"__lodash_placeholder__\",As=9007199254740991,Is=NaN,js=4294967295,Ps=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]],Ns=\"[object Arguments]\",Ds=\"[object Array]\",Rs=\"[object Boolean]\",Ms=\"[object Date]\",Ws=\"[object Error]\",Ls=\"[object Function]\",Fs=\"[object GeneratorFunction]\",Hs=\"[object Map]\",Bs=\"[object Number]\",qs=\"[object Object]\",zs=\"[object Promise]\",Us=\"[object RegExp]\",Gs=\"[object Set]\",Vs=\"[object String]\",$s=\"[object Symbol]\",Xs=\"[object WeakMap]\",Ys=\"[object ArrayBuffer]\",Ks=\"[object DataView]\",Qs=\"[object Float32Array]\",Js=\"[object Float64Array]\",Zs=\"[object Int8Array]\",ta=\"[object Int16Array]\",ea=\"[object Int32Array]\",na=\"[object Uint8Array]\",ra=\"[object Uint8ClampedArray]\",ia=\"[object Uint16Array]\",oa=\"[object Uint32Array]\",sa=/\\b__p \\+= '';/g,aa=/\\b(__p \\+=) '' \\+/g,ua=/(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g,ca=/&(?:amp|lt|gt|quot|#39);/g,la=/[&<>\"']/g,ha=RegExp(ca.source),fa=RegExp(la.source),pa=/<%-([\\s\\S]+?)%>/g,da=/<%([\\s\\S]+?)%>/g,ga=/<%=([\\s\\S]+?)%>/g,ma=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,va=/^\\w*$/,ya=/^\\./,ba=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,wa=/[\\\\^$.*+?()[\\]{}|]/g,_a=RegExp(wa.source),xa=/^\\s+|\\s+$/g,Ca=/^\\s+/,ka=/\\s+$/,Sa=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,Oa=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,Ea=/,? & /,Ta=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,Aa=/\\\\(\\\\)?/g,Ia=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,ja=/\\w*$/,Pa=/^[-+]0x[0-9a-f]+$/i,Na=/^0b[01]+$/i,Da=/^\\[object .+?Constructor\\]$/,Ra=/^0o[0-7]+$/i,Ma=/^(?:0|[1-9]\\d*)$/,Wa=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,La=/($^)/,Fa=/['\\n\\r\\u2028\\u2029\\\\]/g,e=\"\\\\ud800-\\\\udfff\",n=\"\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\",r=\"\\\\u2700-\\\\u27bf\",i=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",o=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",s=\"\\\\ufe0e\\\\ufe0f\",a=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",u=\"[\"+e+\"]\",c=\"[\"+a+\"]\",l=\"[\"+n+\"]\",h=\"\\\\d+\",f=\"[\"+r+\"]\",p=\"[\"+i+\"]\",d=\"[^\"+e+a+h+r+i+o+\"]\",g=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",m=\"[^\"+e+\"]\",v=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",y=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",b=\"[\"+o+\"]\",w=\"(?:\"+p+\"|\"+d+\")\",a=\"(?:\"+b+\"|\"+d+\")\",r=\"(?:['’](?:d|ll|m|re|s|t|ve))?\",i=\"(?:['’](?:D|LL|M|RE|S|T|VE))?\",o=\"(?:\"+l+\"|\"+g+\")\"+\"?\",d=\"[\"+s+\"]?\",o=d+o+(\"(?:\\\\u200d(?:\"+[m,v,y].join(\"|\")+\")\"+d+o+\")*\"),f=\"(?:\"+[f,v,y].join(\"|\")+\")\"+o,u=\"(?:\"+[m+l+\"?\",l,v,y,u].join(\"|\")+\")\",Ha=RegExp(\"['’]\",\"g\"),Ba=RegExp(l,\"g\"),_=RegExp(g+\"(?=\"+g+\")|\"+u+o,\"g\"),qa=RegExp([b+\"?\"+p+\"+\"+r+\"(?=\"+[c,b,\"$\"].join(\"|\")+\")\",a+\"+\"+i+\"(?=\"+[c,b+w,\"$\"].join(\"|\")+\")\",b+\"?\"+w+\"+\"+r,b+\"+\"+i,\"\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)\",\"\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)\",h,f].join(\"|\"),\"g\"),x=RegExp(\"[\\\\u200d\"+e+n+s+\"]\"),za=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ua=[\"Array\",\"Buffer\",\"DataView\",\"Date\",\"Error\",\"Float32Array\",\"Float64Array\",\"Function\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Map\",\"Math\",\"Object\",\"Promise\",\"RegExp\",\"Set\",\"String\",\"Symbol\",\"TypeError\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"WeakMap\",\"_\",\"clearTimeout\",\"isFinite\",\"parseInt\",\"setTimeout\"],Ga=-1,Va={};Va[Qs]=Va[Js]=Va[Zs]=Va[ta]=Va[ea]=Va[na]=Va[ra]=Va[ia]=Va[oa]=!0,Va[Ns]=Va[Ds]=Va[Ys]=Va[Rs]=Va[Ks]=Va[Ms]=Va[Ws]=Va[Ls]=Va[Hs]=Va[Bs]=Va[qs]=Va[Us]=Va[Gs]=Va[Vs]=Va[Xs]=!1;var $a={};$a[Ns]=$a[Ds]=$a[Ys]=$a[Ks]=$a[Rs]=$a[Ms]=$a[Qs]=$a[Js]=$a[Zs]=$a[ta]=$a[ea]=$a[Hs]=$a[Bs]=$a[qs]=$a[Us]=$a[Gs]=$a[Vs]=$a[$s]=$a[na]=$a[ra]=$a[ia]=$a[oa]=!0,$a[Ws]=$a[Ls]=$a[Xs]=!1;var C={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Xa=parseFloat,Ya=parseInt,e=\"object\"==typeof global&&global&&global.Object===Object&&global,n=\"object\"==typeof self&&self&&self.Object===Object&&self,Ka=e||n||Function(\"return this\")(),s=\"object\"==typeof exports&&exports&&!exports.nodeType&&exports,n=s&&\"object\"==typeof module&&module&&!module.nodeType&&module,Qa=n&&n.exports===s,k=Qa&&e.process,e=function(){try{return k&&k.binding&&k.binding(\"util\")}catch(t){}}(),Ja=e&&e.isArrayBuffer,Za=e&&e.isDate,tu=e&&e.isMap,eu=e&&e.isRegExp,nu=e&&e.isSet,ru=e&&e.isTypedArray,S=us(\"length\"),iu=t({\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"Ç\":\"C\",\"ç\":\"c\",\"Ð\":\"D\",\"ð\":\"d\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"Ñ\":\"N\",\"ñ\":\"n\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"Ý\":\"Y\",\"ý\":\"y\",\"ÿ\":\"y\",\"Æ\":\"Ae\",\"æ\":\"ae\",\"Þ\":\"Th\",\"þ\":\"th\",\"ß\":\"ss\",\"Ā\":\"A\",\"Ă\":\"A\",\"Ą\":\"A\",\"ā\":\"a\",\"ă\":\"a\",\"ą\":\"a\",\"Ć\":\"C\",\"Ĉ\":\"C\",\"Ċ\":\"C\",\"Č\":\"C\",\"ć\":\"c\",\"ĉ\":\"c\",\"ċ\":\"c\",\"č\":\"c\",\"Ď\":\"D\",\"Đ\":\"D\",\"ď\":\"d\",\"đ\":\"d\",\"Ē\":\"E\",\"Ĕ\":\"E\",\"Ė\":\"E\",\"Ę\":\"E\",\"Ě\":\"E\",\"ē\":\"e\",\"ĕ\":\"e\",\"ė\":\"e\",\"ę\":\"e\",\"ě\":\"e\",\"Ĝ\":\"G\",\"Ğ\":\"G\",\"Ġ\":\"G\",\"Ģ\":\"G\",\"ĝ\":\"g\",\"ğ\":\"g\",\"ġ\":\"g\",\"ģ\":\"g\",\"Ĥ\":\"H\",\"Ħ\":\"H\",\"ĥ\":\"h\",\"ħ\":\"h\",\"Ĩ\":\"I\",\"Ī\":\"I\",\"Ĭ\":\"I\",\"Į\":\"I\",\"İ\":\"I\",\"ĩ\":\"i\",\"ī\":\"i\",\"ĭ\":\"i\",\"į\":\"i\",\"ı\":\"i\",\"Ĵ\":\"J\",\"ĵ\":\"j\",\"Ķ\":\"K\",\"ķ\":\"k\",\"ĸ\":\"k\",\"Ĺ\":\"L\",\"Ļ\":\"L\",\"Ľ\":\"L\",\"Ŀ\":\"L\",\"Ł\":\"L\",\"ĺ\":\"l\",\"ļ\":\"l\",\"ľ\":\"l\",\"ŀ\":\"l\",\"ł\":\"l\",\"Ń\":\"N\",\"Ņ\":\"N\",\"Ň\":\"N\",\"Ŋ\":\"N\",\"ń\":\"n\",\"ņ\":\"n\",\"ň\":\"n\",\"ŋ\":\"n\",\"Ō\":\"O\",\"Ŏ\":\"O\",\"Ő\":\"O\",\"ō\":\"o\",\"ŏ\":\"o\",\"ő\":\"o\",\"Ŕ\":\"R\",\"Ŗ\":\"R\",\"Ř\":\"R\",\"ŕ\":\"r\",\"ŗ\":\"r\",\"ř\":\"r\",\"Ś\":\"S\",\"Ŝ\":\"S\",\"Ş\":\"S\",\"Š\":\"S\",\"ś\":\"s\",\"ŝ\":\"s\",\"ş\":\"s\",\"š\":\"s\",\"Ţ\":\"T\",\"Ť\":\"T\",\"Ŧ\":\"T\",\"ţ\":\"t\",\"ť\":\"t\",\"ŧ\":\"t\",\"Ũ\":\"U\",\"Ū\":\"U\",\"Ŭ\":\"U\",\"Ů\":\"U\",\"Ű\":\"U\",\"Ų\":\"U\",\"ũ\":\"u\",\"ū\":\"u\",\"ŭ\":\"u\",\"ů\":\"u\",\"ű\":\"u\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"Ż\":\"Z\",\"Ž\":\"Z\",\"ź\":\"z\",\"ż\":\"z\",\"ž\":\"z\",\"Ĳ\":\"IJ\",\"ĳ\":\"ij\",\"Œ\":\"Oe\",\"œ\":\"oe\",\"ŉ\":\"'n\",\"ſ\":\"s\"}),ou=t({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"}),su=t({\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#39;\":\"'\"}),au=function t(e){function d(t){if(hn(t)&&!io(t)&&!(t instanceof m)){if(t instanceof g)return t;if(tr.call(t,\"__wrapped__\"))return Me(t)}return new g(t)}function o(){}function g(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=Ss}function m(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=js,this.__views__=[]}function n(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function i(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function s(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function v(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new s;++e<n;)this.add(t[e])}function y(t){t=this.__data__=new i(t);this.size=t.size}function r(t,e){var n,r=io(t),i=!r&&ro(t),o=!r&&!i&&so(t),s=!r&&!i&&!o&&ho(t),a=r||i||o||s,u=a?hs(t.length,$n):[],c=u.length;for(n in t)!e&&!tr.call(t,n)||a&&(\"length\"==n||o&&(\"offset\"==n||\"parent\"==n)||s&&(\"buffer\"==n||\"byteLength\"==n||\"byteOffset\"==n)||xe(n,c))||u.push(n);return u}function a(t){var e=t.length;return e?t[ot(0,e-1)]:Ss}function u(t,e){return Ne(Mt(t),x(e,0,t.length))}function c(t){return Ne(Mt(t))}function p(t,e,n){(n===Ss||nn(t[e],n))&&(n!==Ss||e in t)||f(t,e,n)}function b(t,e,n){var r=t[e];tr.call(t,e)&&nn(r,n)&&(n!==Ss||e in t)||f(t,e,n)}function l(t,e){for(var n=t.length;n--;)if(nn(t[n][0],e))return n;return-1}function h(t,r,i,o){return Zr(t,function(t,e,n){r(o,t,i(t),n)}),o}function w(t,e){return t&&Wt(e,Sn(e),t)}function f(t,e,n){\"__proto__\"==e&&yr?yr(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function _(t,e){for(var n=-1,r=e.length,i=Hn(r),o=null==t;++n<r;)i[n]=o?Ss:Cn(t,e[n]);return i}function x(t,e,n){return t==t&&(n!==Ss&&(t=t<=n?t:n),e!==Ss&&(t=e<=t?t:e)),t}function C(n,r,i,t,e,o){var s,a=1&r,u=2&r,c=4&r;if(i&&(s=e?i(n,t,e,o):i(n)),s!==Ss)return s;if(!ln(n))return n;var l,h,f=io(n);if(f){if(t=(p=n).length,d=p.constructor(t),t&&\"string\"==typeof p[0]&&tr.call(p,\"index\")&&(d.index=p.index,d.input=p.input),s=d,!a)return Mt(n,s)}else{var p=hi(n),d=p==Ls||p==Fs;if(so(n))return It(n,a);if(p==qs||p==Ns||d&&!e){if(s=u||d?{}:we(n),!a)return u?(d=l=n,h=(h=s)&&Wt(d,On(d),h),Wt(l,li(l),h)):(h=w(s,l=n),Wt(l,ci(l),h))}else{if(!$a[p])return e?n:{};s=function(t,e,n,r){var i=t.constructor;switch(e){case Ys:return jt(t);case Rs:case Ms:return new i(+t);case Ks:return function(t,e){e=e?jt(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}(t,r);case Qs:case Js:case Zs:case ta:case ea:case na:case ra:case ia:case oa:return Pt(t,r);case Hs:return function(t,e,n){return Zo(e?n(bs(t),1):bs(t),Bo,new t.constructor)}(t,r,n);case Bs:case Vs:return new i(t);case Us:return function(t){var e=new t.constructor(t.source,ja.exec(t));return e.lastIndex=t.lastIndex,e}(t);case Gs:return function(t,e,n){return Zo(e?n(xs(t),1):xs(t),qo,new t.constructor)}(t,r,n);case $s:return function(t){return Yr?Gn(Yr.call(t)):{}}(t)}}(n,p,C,a)}}a=(o=o||new y).get(n);if(a)return a;o.set(n,s);var g=f?Ss:(c?u?fe:he:u?On:Sn)(n);return Go(g||n,function(t,e){g&&(t=n[e=t]),b(s,e,C(t,r,i,e,n,o))}),s}function k(t,e,n){var r=n.length;if(null==t)return!r;for(t=Gn(t);r--;){var i=n[r],o=e[i],s=t[i];if(s===Ss&&!(i in t)||!o(s))return!1}return!0}function S(t,e,n){if(\"function\"!=typeof t)throw new Xn(Os);return mi(function(){t.apply(Ss,n)},e)}function O(t,e,n,r){var i=-1,o=Yo,s=!0,a=t.length,u=[],c=e.length;if(!a)return u;n&&(e=Qo(e,fs(n))),r?(o=Ko,s=!1):200<=e.length&&(o=ds,s=!1,e=new v(e));t:for(;++i<a;){var l=t[i],h=null==n?l:n(l),l=r||0!==l?l:0;if(s&&h==h){for(var f=c;f--;)if(e[f]===h)continue t;u.push(l)}else o(e,h,r)||u.push(l)}return u}function E(t,r){var i=!0;return Zr(t,function(t,e,n){return i=!!r(t,e,n)}),i}function T(t,e,n){for(var r=-1,i=t.length;++r<i;){var o,s,a=t[r],u=e(a);null!=u&&(o===Ss?u==u&&!gn(u):n(u,o))&&(o=u,s=a)}return s}function A(t,r){var i=[];return Zr(t,function(t,e,n){r(t,e,n)&&i.push(t)}),i}function I(t,e,n,r,i){var o=-1,s=t.length;for(n=n||_e,i=i||[];++o<s;){var a=t[o];0<e&&n(a)?1<e?I(a,e-1,n,r,i):Jo(i,a):r||(i[i.length]=a)}return i}function j(t,e){return t&&ei(t,e,Sn)}function P(t,e){return t&&ni(t,e,Sn)}function N(e,t){return Xo(t,function(t){return an(e[t])})}function D(t,e){for(var n=0,r=(e=Tt(e,t)).length;null!=t&&n<r;)t=t[De(e[n++])];return n&&n==r?t:Ss}function R(t,e,n){e=e(t);return io(t)?e:Jo(e,n(t))}function M(t){return null==t?t===Ss?\"[object Undefined]\":\"[object Null]\":vr&&vr in Gn(t)?function(t){var e=tr.call(t,vr),n=t[vr];try{t[vr]=Ss;var r=!0}catch(t){}var i=rr.call(t);return r&&(e?t[vr]=n:delete t[vr]),i}(t):(t=t,rr.call(t))}function W(t,e){return e<t}function L(t,e){return null!=t&&tr.call(t,e)}function F(t,e){return null!=t&&e in Gn(t)}function H(t,e,n){for(var r=n?Ko:Yo,i=t[0].length,o=t.length,s=o,a=Hn(o),u=1/0,c=[];s--;){var l=t[s];s&&e&&(l=Qo(l,fs(e))),u=Ir(l.length,u),a[s]=!n&&(e||120<=i&&120<=l.length)?new v(s&&l):Ss}l=t[0];var h=-1,f=a[0];t:for(;++h<i&&c.length<u;){var p=l[h],d=e?e(p):p,p=n||0!==p?p:0;if(!(f?ds(f,d):r(c,d,n))){for(s=o;--s;){var g=a[s];if(!(g?ds(g,d):r(t[s],d,n)))continue t}f&&f.push(d),c.push(p)}}return c}function B(t,e,n){e=null==(t=Ie(t,e=Tt(e,t)))?t:t[De(Be(e))];return null==e?Ss:zo(e,t,n)}function q(t){return hn(t)&&M(t)==Ns}function z(t,e,n,r,i){return t===e||(null==t||null==e||!hn(t)&&!hn(e)?t!=t&&e!=e:function(t,e,n,r,i,o){var s=io(t),a=io(e),u=s?Ds:hi(t),c=a?Ds:hi(e),l=(u=u==Ns?qs:u)==qs,a=(c=c==Ns?qs:c)==qs,c=u==c;if(c&&so(t)){if(!so(e))return!1;l=!(s=!0)}if(c&&!l)return o=o||new y,s||ho(t)?ce(t,e,n,r,i,o):function(t,e,n,r,i,o,s){switch(n){case Ks:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case Ys:return!(t.byteLength!=e.byteLength||!o(new cr(t),new cr(e)));case Rs:case Ms:case Bs:return nn(+t,+e);case Ws:return t.name==e.name&&t.message==e.message;case Us:case Vs:return t==e+\"\";case Hs:var a=bs;case Gs:var u=1&r;if(a=a||xs,t.size!=e.size&&!u)return!1;u=s.get(t);if(u)return u==e;r|=2,s.set(t,e);a=ce(a(t),a(e),r,i,o,s);return s.delete(t),a;case $s:if(Yr)return Yr.call(t)==Yr.call(e)}return!1}(t,e,u,n,r,i,o);if(!(1&n)){l=l&&tr.call(t,\"__wrapped__\"),a=a&&tr.call(e,\"__wrapped__\");if(l||a){l=l?t.value():t,a=a?e.value():e;return o=o||new y,i(l,a,n,r,o)}}return!!c&&(o=o||new y,function(t,e,n,r,i,o){var s=1&n,a=he(t),u=a.length,c=he(e).length;if(u!=c&&!s)return!1;for(var l=u;l--;){var h=a[l];if(!(s?h in e:tr.call(e,h)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var p=!0;o.set(t,e),o.set(e,t);for(var d=s;++l<u;){h=a[l];var g,m=t[h],v=e[h];if(r&&(g=s?r(v,m,h,e,t,o):r(m,v,h,t,e,o)),!(g===Ss?m===v||i(m,v,n,r,o):g)){p=!1;break}d=d||\"constructor\"==h}p&&!d&&(c=t.constructor,f=e.constructor,c!=f&&\"constructor\"in t&&\"constructor\"in e&&!(\"function\"==typeof c&&c instanceof c&&\"function\"==typeof f&&f instanceof f)&&(p=!1));return o.delete(t),o.delete(e),p}(t,e,n,r,i,o))}(t,e,n,r,z,i))}function U(t,e,n,r){var i=n.length,o=i,s=!r;if(null==t)return!o;for(t=Gn(t);i--;){var a=n[i];if(s&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++i<o;){var u=(a=n[i])[0],c=t[u],l=a[1];if(s&&a[2]){if(c===Ss&&!(u in t))return!1}else{var h,f=new y;if(r&&(h=r(c,l,u,t,e,f)),!(h===Ss?z(l,c,3,r,f):h))return!1}}return!0}function G(t){return!(!ln(t)||(e=t,nr&&nr in e))&&(an(t)?sr:Da).test(Re(t));var e}function V(t){return\"function\"==typeof t?t:null==t?Nn:\"object\"==typeof t?io(t)?J(t[0],t[1]):Q(t):Wn(t)}function $(t){if(!Oe(t))return Tr(t);var e,n=[];for(e in Gn(t))tr.call(t,e)&&\"constructor\"!=e&&n.push(e);return n}function X(t){if(!ln(t))return function(t){var e=[];if(null!=t)for(var n in Gn(t))e.push(n);return e}(t);var e,n=Oe(t),r=[];for(e in t)(\"constructor\"!=e||!n&&tr.call(t,e))&&r.push(e);return r}function Y(t,e){return t<e}function K(t,r){var i=-1,o=rn(t)?Hn(t.length):[];return Zr(t,function(t,e,n){o[++i]=r(t,e,n)}),o}function Q(e){var n=ve(e);return 1==n.length&&n[0][2]?Te(n[0][0],n[0][1]):function(t){return t===e||U(t,e,n)}}function J(n,r){return ke(n)&&Ee(r)?Te(De(n),r):function(t){var e=Cn(t,n);return e===Ss&&e===r?kn(t,n):z(r,e,3)}}function Z(r,i,o,s,a){r!==i&&ei(i,function(t,e){var n;ln(t)?(a=a||new y,function(t,e,n,r,i,o,s){var a=t[n],u=e[n],c=s.get(u);if(c)return p(t,n,c);var l=o?o(a,u,n+\"\",t,e,s):Ss,h=l===Ss;{var f;h&&(f=io(u),c=!f&&so(u),e=!f&&!c&&ho(u),l=u,f||c||e?l=io(a)?a:on(a)?Mt(a):c?It(u,!(h=!1)):e?Pt(u,!(h=!1)):[]:pn(u)||ro(u)?ro(l=a)?l=_n(a):(!ln(a)||r&&an(a))&&(l=we(u)):h=!1)}h&&(s.set(u,l),i(l,u,r,o,s),s.delete(u)),p(t,n,l)}(r,i,e,o,Z,s,a)):((n=s?s(r[e],t,e+\"\",r,i,a):Ss)===Ss&&(n=t),p(r,e,n))},On)}function tt(t,e){var n=t.length;if(n)return xe(e+=e<0?n:0,n)?t[e]:Ss}function et(t,r,n){var i=-1;return r=Qo(r.length?r:[Nn],fs(ge())),function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}(K(t,function(e,t,n){return{criteria:Qo(r,function(t){return t(e)}),index:++i,value:e}}),function(t,e){return function(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,s=i.length,a=n.length;++r<s;){var u=Nt(i[r],o[r]);if(u){if(a<=r)return u;var c=n[r];return u*(\"desc\"==c?-1:1)}}return t.index-e.index}(t,e,n)})}function nt(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var s=e[r],a=D(t,s);n(a,s)&&lt(o,Tt(s,t),a)}return o}function rt(t,e,n,r){var i=r?os:is,o=-1,s=e.length,a=t;for(t===e&&(e=Mt(e)),n&&(a=Qo(t,fs(n)));++o<s;)for(var u=0,c=e[o],l=n?n(c):c;-1<(u=i(a,l,u,r));)a!==t&&dr.call(a,u,1),dr.call(t,u,1);return t}function it(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i,o=e[n];n!=r&&o===i||(xe(i=o)?dr.call(t,o,1):wt(t,o))}return t}function ot(t,e){return t+Cr(Nr()*(e-t+1))}function st(t,e){var n=\"\";if(!t||e<1||As<e)return n;for(;e%2&&(n+=t),e=Cr(e/2),e&&(t+=t),e;);return n}function at(t,e){return vi(Ae(t,e,Nn),t+\"\")}function ut(t){return a(Tn(t))}function ct(t,e){t=Tn(t);return Ne(t,x(e,0,t.length))}function lt(t,e,n,r){if(!ln(t))return t;for(var i=-1,o=(e=Tt(e,t)).length,s=o-1,a=t;null!=a&&++i<o;){var u,c=De(e[i]),l=n;i!=s&&(u=a[c],(l=r?r(u,c,a):Ss)===Ss&&(l=ln(u)?u:xe(e[i+1])?[]:{})),b(a,c,l),a=a[c]}return t}function ht(t){return Ne(Tn(t))}function ft(t,e,n){var r=-1,i=t.length;e<0&&(e=i<-e?0:i+e),(n=i<n?i:n)<0&&(n+=i),i=n<e?0:n-e>>>0,e>>>=0;for(var o=Hn(i);++r<i;)o[r]=t[r+e];return o}function pt(t,r){var i;return Zr(t,function(t,e,n){return!(i=r(t,e,n))}),!!i}function dt(t,e,n){var r=0,i=null==t?r:t.length;if(\"number\"==typeof e&&e==e&&i<=2147483647){for(;r<i;){var o=r+i>>>1,s=t[o];null!==s&&!gn(s)&&(n?s<=e:s<e)?r=1+o:i=o}return i}return gt(t,e,Nn,n)}function gt(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,s=e!=e,a=null===e,u=gn(e),c=e===Ss;i<o;){var l=Cr((i+o)/2),h=n(t[l]),f=h!==Ss,p=null===h,d=h==h,g=gn(h),h=s?r||d:c?d&&(r||f):a?d&&f&&(r||!p):u?d&&f&&!p&&(r||!g):!p&&!g&&(r?h<=e:h<e);h?i=l+1:o=l}return Ir(o,4294967294)}function mt(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var s,a=t[n],u=e?e(a):a;n&&nn(u,s)||(s=u,o[i++]=0===a?0:a)}return o}function vt(t){return\"number\"==typeof t?t:gn(t)?Is:+t}function yt(t){if(\"string\"==typeof t)return t;if(io(t))return Qo(t,yt)+\"\";if(gn(t))return Kr?Kr.call(t):\"\";var e=t+\"\";return\"0\"==e&&1/t==-1/0?\"-0\":e}function bt(t,e,n){var r=-1,i=Yo,o=t.length,s=!0,a=[],u=a;if(n)s=!1,i=Ko;else if(200<=o){var c=e?null:ai(t);if(c)return xs(c);s=!1,i=ds,u=new v}else u=e?[]:a;t:for(;++r<o;){var l=t[r],h=e?e(l):l,l=n||0!==l?l:0;if(s&&h==h){for(var f=u.length;f--;)if(u[f]===h)continue t;e&&u.push(h),a.push(l)}else i(u,h,n)||(u!==a&&u.push(h),a.push(l))}return a}function wt(t,e){return null==(t=Ie(t,e=Tt(e,t)))||delete t[De(Be(e))]}function _t(t,e,n,r){return lt(t,e,n(D(t,e)),r)}function xt(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?ft(t,r?0:o,r?o+1:i):ft(t,r?o+1:0,r?i:o)}function Ct(t,e){return t instanceof m&&(t=t.value()),Zo(e,function(t,e){return e.func.apply(e.thisArg,Jo([t],e.args))},t)}function kt(t,e,n){var r=t.length;if(r<2)return r?bt(t[0]):[];for(var i=-1,o=Hn(r);++i<r;)for(var s=t[i],a=-1;++a<r;)a!=i&&(o[i]=O(o[i]||s,t[a],e,n));return bt(I(o,1),e,n)}function St(t,e,n){for(var r=-1,i=t.length,o=e.length,s={};++r<i;){var a=r<o?e[r]:Ss;n(s,t[r],a)}return s}function Ot(t){return on(t)?t:[]}function Et(t){return\"function\"==typeof t?t:Nn}function Tt(t,e){return io(t)?t:ke(t,e)?[t]:yi(xn(t))}function At(t,e,n){var r=t.length;return n=n===Ss?r:n,!e&&r<=n?t:ft(t,e,n)}function It(t,e){if(e)return t.slice();e=t.length,e=lr?lr(e):new t.constructor(e);return t.copy(e),e}function jt(t){var e=new t.constructor(t.byteLength);return new cr(e).set(new cr(t)),e}function Pt(t,e){e=e?jt(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function Nt(t,e){if(t!==e){var n=t!==Ss,r=null===t,i=t==t,o=gn(t),s=e!==Ss,a=null===e,u=e==e,c=gn(e);if(!a&&!c&&!o&&e<t||o&&s&&u&&!a&&!c||r&&s&&u||!n&&u||!i)return 1;if(!r&&!o&&!c&&t<e||c&&n&&i&&!r&&!o||a&&n&&i||!s&&i||!u)return-1}return 0}function Dt(t,e,n,r){for(var i=-1,o=t.length,s=n.length,a=-1,u=e.length,c=Ar(o-s,0),l=Hn(u+c),h=!r;++a<u;)l[a]=e[a];for(;++i<s;)(h||i<o)&&(l[n[i]]=t[i]);for(;c--;)l[a++]=t[i++];return l}function Rt(t,e,n,r){for(var i=-1,o=t.length,s=-1,a=n.length,u=-1,c=e.length,l=Ar(o-a,0),h=Hn(l+c),f=!r;++i<l;)h[i]=t[i];for(var p=i;++u<c;)h[p+u]=e[u];for(;++s<a;)(f||i<o)&&(h[p+n[s]]=t[i++]);return h}function Mt(t,e){var n=-1,r=t.length;for(e=e||Hn(r);++n<r;)e[n]=t[n];return e}function Wt(t,e,n,r){var i=!n;n=n||{};for(var o=-1,s=e.length;++o<s;){var a=e[o],u=r?r(n[a],t[a],a,n,t):Ss;u===Ss&&(u=t[a]),(i?f:b)(n,a,u)}return n}function Lt(i,o){return function(t,e){var n=io(t)?Uo:h,r=o?o():{};return n(t,i,ge(e,2),r)}}function Ft(a){return at(function(t,e){var n=-1,r=e.length,i=1<r?e[r-1]:Ss,o=2<r?e[2]:Ss,i=3<a.length&&\"function\"==typeof i?(r--,i):Ss;for(o&&Ce(e[0],e[1],o)&&(i=r<3?Ss:i,r=1),t=Gn(t);++n<r;){var s=e[n];s&&a(t,s,n,i)}return t})}function Ht(o,s){return function(t,e){if(null==t)return t;if(!rn(t))return o(t,e);for(var n=t.length,r=s?n:-1,i=Gn(t);(s?r--:++r<n)&&!1!==e(i[r],r,i););return t}}function Bt(u){return function(t,e,n){for(var r=-1,i=Gn(t),o=n(t),s=o.length;s--;){var a=o[u?s:++r];if(!1===e(i[a],a,i))break}return t}}function qt(r){return function(t){var e=ys(t=xn(t))?ks(t):Ss,n=e?e[0]:t.charAt(0),t=e?At(e,1).join(\"\"):t.slice(1);return n[r]()+t}}function zt(e){return function(t){return Zo(jn(In(t).replace(Ha,\"\")),e,\"\")}}function Ut(r){return function(){var t=arguments;switch(t.length){case 0:return new r;case 1:return new r(t[0]);case 2:return new r(t[0],t[1]);case 3:return new r(t[0],t[1],t[2]);case 4:return new r(t[0],t[1],t[2],t[3]);case 5:return new r(t[0],t[1],t[2],t[3],t[4]);case 6:return new r(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new r(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var e=Qr(r.prototype),n=r.apply(e,t);return ln(n)?n:e}}function Gt(o,s,a){var u=Ut(o);return function t(){for(var e=arguments.length,n=Hn(e),r=e,i=de(t);r--;)n[r]=arguments[r];i=e<3&&n[0]!==i&&n[e-1]!==i?[]:_s(n,i);return(e-=i.length)<a?ne(o,s,Xt,t.placeholder,Ss,n,i,Ss,Ss,a-e):zo(this&&this!==Ka&&this instanceof t?u:o,this,n)}}function Vt(o){return function(t,e,n){var r,i=Gn(t);rn(t)||(r=ge(e,3),t=Sn(t),e=function(t){return r(i[t],t,i)});n=o(t,e,n);return-1<n?i[r?t[n]:n]:Ss}}function $t(u){return le(function(i){var o=i.length,t=o,e=g.prototype.thru;for(u&&i.reverse();t--;){var n=i[t];if(\"function\"!=typeof n)throw new Xn(Os);e&&!a&&\"wrapper\"==pe(n)&&(a=new g([],!0))}for(t=a?t:o;++t<o;)var r=pe(n=i[t]),s=\"wrapper\"==r?ui(n):Ss,a=s&&Se(s[0])&&424==s[1]&&!s[4].length&&1==s[9]?a[pe(s[0])].apply(a,s[3]):1==n.length&&Se(n)?a[r]():a.thru(n);return function(){var t=arguments,e=t[0];if(a&&1==t.length&&io(e))return a.plant(e).value();for(var n=0,r=o?i[n].apply(this,t):e;++n<o;)r=i[n].call(this,r);return r}})}function Xt(a,u,c,l,h,f,p,d,g,m){var v=128&u,y=1&u,b=2&u,w=24&u,_=512&u,x=b?Ss:Ut(a);return function t(){for(var e,n=Hn(s=arguments.length),r=s;r--;)n[r]=arguments[r];if(w&&(e=function(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}(n,o=de(t))),l&&(n=Dt(n,l,h,w)),f&&(n=Rt(n,f,p,w)),s-=e,w&&s<m){var i=_s(n,o);return ne(a,u,Xt,t.placeholder,c,n,i,d,g,m-s)}var o=y?c:this,i=b?o[a]:a,s=n.length;return d?n=function(t,e){for(var n=t.length,r=Ir(e.length,n),i=Mt(t);r--;){var o=e[r];t[r]=xe(o,n)?i[o]:Ss}return t}(n,d):_&&1<s&&n.reverse(),v&&g<s&&(n.length=g),this&&this!==Ka&&this instanceof t&&(i=x||Ut(i)),i.apply(o,n)}}function Yt(n,s){return function(t,e){return t=t,r=n,i=s(e),o={},j(t,function(t,e,n){r(o,i(t),e,n)}),o;var r,i,o}}function Kt(r,i){return function(t,e){var n;if(t===Ss&&e===Ss)return i;if(t!==Ss&&(n=t),e!==Ss){if(n===Ss)return e;e=\"string\"==typeof t||\"string\"==typeof e?(t=yt(t),yt(e)):(t=vt(t),vt(e)),n=r(t,e)}return n}}function Qt(r){return le(function(t){return t=Qo(t,fs(ge())),at(function(e){var n=this;return r(t,function(t){return zo(t,n,e)})})})}function Jt(t,e){var n=(e=e===Ss?\" \":yt(e)).length;if(n<2)return n?st(e,t):e;n=st(e,xr(t/Cs(e)));return ys(e)?At(ks(n),0,t).join(\"\"):n.slice(0,t)}function Zt(a,t,u,c){var l=1&t,h=Ut(a);return function t(){for(var e=-1,n=arguments.length,r=-1,i=c.length,o=Hn(i+n),s=this&&this!==Ka&&this instanceof t?h:a;++r<i;)o[r]=c[r];for(;n--;)o[r++]=arguments[++e];return zo(s,l?u:this,o)}}function te(r){return function(t,e,n){return n&&\"number\"!=typeof n&&Ce(t,e,n)&&(e=n=Ss),t=vn(t),e===Ss?(e=t,t=0):e=vn(e),function(t,e,n,r){for(var i=-1,o=Ar(xr((e-t)/(n||1)),0),s=Hn(o);o--;)s[r?o:++i]=t,t+=n;return s}(t,e,n=n===Ss?t<e?1:-1:vn(n),r)}}function ee(n){return function(t,e){return\"string\"==typeof t&&\"string\"==typeof e||(t=wn(t),e=wn(e)),n(t,e)}}function ne(t,e,n,r,i,o,s,a,u,c){var l=8&e;e|=l?32:64,4&(e&=~(l?64:32))||(e&=-4);c=[t,e,i,l?o:Ss,l?s:Ss,l?Ss:o,l?Ss:s,a,u,c],n=n.apply(Ss,c);return Se(t)&&gi(n,c),n.placeholder=r,je(n,t,e)}function re(t){var r=Un[t];return function(t,e){if(t=wn(t),e=null==e?0:Ir(yn(e),292)){var n=(xn(t)+\"e\").split(\"e\");return+((n=(xn(r(n[0]+\"e\"+(+n[1]+e)))+\"e\").split(\"e\"))[0]+\"e\"+(+n[1]-e))}return r(t)}}function ie(o){return function(t){var e,n,r,i=hi(t);return i==Hs?bs(t):i==Gs?(i=t,n=-1,r=Array(i.size),i.forEach(function(t){r[++n]=[t,t]}),r):Qo(o(e=t),function(t){return[t,e[t]]})}}function oe(t,e,n,r,i,o,s,a){var u=2&e;if(!u&&\"function\"!=typeof t)throw new Xn(Os);var c,l,h=r?r.length:0;h||(e&=-97,r=i=Ss),s=s===Ss?s:Ar(yn(s),0),a=a===Ss?a:yn(a),h-=i?i.length:0,64&e&&(c=r,l=i,r=i=Ss);var f,p,d,g,m=u?Ss:ui(t),s=[t,e,n,r,i,c,l,o,s,a];return m&&function(t,e){var n=t[1],r=e[1],i=n|r,o=i<131,s=128==r&&8==n||128==r&&256==n&&t[7].length<=e[8]||384==r&&e[7].length<=e[8]&&8==n;if(!o&&!s)return;1&r&&(t[2]=e[2],i|=1&n?0:4);n=e[3];{var a;n&&(a=t[3],t[3]=a?Dt(a,n,e[4]):n,t[4]=a?_s(t[3],Ts):e[4])}(n=e[5])&&(a=t[5],t[5]=a?Rt(a,n,e[6]):n,t[6]=a?_s(t[5],Ts):e[6]),(n=e[7])&&(t[7]=n),128&r&&(t[8]=null==t[8]?e[8]:Ir(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i}(s,m),t=s[0],e=s[1],n=s[2],r=s[3],i=s[4],!(a=s[9]=s[9]===Ss?u?0:t.length:Ar(s[9]-h,0))&&24&e&&(e&=-25),n=e&&1!=e?8==e||16==e?Gt(t,e,a):32!=e&&33!=e||i.length?Xt.apply(Ss,s):Zt(t,e,n,r):(p=n,d=1&e,g=Ut(f=t),function t(){return(this&&this!==Ka&&this instanceof t?g:f).apply(d?p:this,arguments)}),je((m?ri:gi)(n,s),t,e)}function se(t,e,n,r){return t===Ss||nn(t,Qn[n])&&!tr.call(r,n)?e:t}function ae(t,e,n,r,i,o){return ln(t)&&ln(e)&&(o.set(e,t),Z(t,e,Ss,ae,o),o.delete(e)),t}function ue(t){return pn(t)?Ss:t}function ce(t,e,n,r,i,o){var s=1&n,a=t.length,u=e.length;if(a!=u&&!(s&&a<u))return!1;u=o.get(t);if(u&&o.get(e))return u==e;var c=-1,l=!0,h=2&n?new v:Ss;for(o.set(t,e),o.set(e,t);++c<a;){var f,p=t[c],d=e[c];if(r&&(f=s?r(d,p,c,e,t,o):r(p,d,c,t,e,o)),f!==Ss){if(f)continue;l=!1;break}if(h){if(!es(e,function(t,e){return!ds(h,e)&&(p===t||i(p,t,n,r,o))&&h.push(e)})){l=!1;break}}else if(p!==d&&!i(p,d,n,r,o)){l=!1;break}}return o.delete(t),o.delete(e),l}function le(t){return vi(Ae(t,Ss,Fe),t+\"\")}function he(t){return R(t,Sn,ci)}function fe(t){return R(t,On,li)}function pe(t){for(var e=t.name+\"\",n=qr[e],r=tr.call(qr,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function de(t){return(tr.call(d,\"placeholder\")?d:t).placeholder}function ge(){var t=(t=d.iteratee||Dn)===Dn?V:t;return arguments.length?t(arguments[0],arguments[1]):t}function me(t,e){var n,r=t.__data__;return(\"string\"==(t=typeof(n=e))||\"number\"==t||\"symbol\"==t||\"boolean\"==t?\"__proto__\"!==n:null===n)?r[\"string\"==typeof e?\"string\":\"hash\"]:r.map}function ve(t){for(var e=Sn(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Ee(i)]}return e}function ye(t,e){e=e,e=null==(t=t)?Ss:t[e];return G(e)?e:Ss}function be(t,e,n){for(var r=-1,i=(e=Tt(e,t)).length,o=!1;++r<i;){var s=De(e[r]);if(!(o=null!=t&&n(t,s)))break;t=t[s]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&cn(i)&&xe(s,i)&&(io(t)||ro(t))}function we(t){return\"function\"!=typeof t.constructor||Oe(t)?{}:Qr(hr(t))}function _e(t){return io(t)||ro(t)||!!(gr&&t&&t[gr])}function xe(t,e){return!!(e=null==e?As:e)&&(\"number\"==typeof t||Ma.test(t))&&-1<t&&t%1==0&&t<e}function Ce(t,e,n){if(ln(n)){var r=typeof e;return(\"number\"==r?rn(n)&&xe(e,n.length):\"string\"==r&&e in n)&&nn(n[e],t)}}function ke(t,e){if(!io(t)){var n=typeof t;return\"number\"==n||\"symbol\"==n||\"boolean\"==n||null==t||gn(t)||va.test(t)||!ma.test(t)||null!=e&&t in Gn(e)}}function Se(t){var e=pe(t),n=d[e];if(\"function\"==typeof n&&e in m.prototype){if(t===n)return 1;n=ui(n);return n&&t===n[0]}}function Oe(t){var e=t&&t.constructor;return t===(\"function\"==typeof e&&e.prototype||Qn)}function Ee(t){return t==t&&!ln(t)}function Te(e,n){return function(t){return null!=t&&t[e]===n&&(n!==Ss||e in Gn(t))}}function Ae(o,s,a){return s=Ar(s===Ss?o.length-1:s,0),function(){for(var t=arguments,e=-1,n=Ar(t.length-s,0),r=Hn(n);++e<n;)r[e]=t[s+e];e=-1;for(var i=Hn(s+1);++e<s;)i[e]=t[e];return i[s]=a(r),zo(o,this,i)}}function Ie(t,e){return e.length<2?t:D(t,ft(e,0,-1))}function je(t,e,n){var r,i,e=e+\"\";return vi(t,function(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(1<n?\"& \":\"\")+e[r],e=e.join(2<n?\", \":\" \"),t.replace(Sa,\"{\\n/* [wrapped with \"+e+\"] */\\n\")}(e,(r=(e=(e=e).match(Oa))?e[1].split(Ea):[],i=n,Go(Ps,function(t){var e=\"_.\"+t[0];i&t[1]&&!Yo(r,e)&&r.push(e)}),r.sort())))}function Pe(n){var r=0,i=0;return function(){var t=jr(),e=16-(t-i);if(i=t,0<e){if(800<=++r)return arguments[0]}else r=0;return n.apply(Ss,arguments)}}function Ne(t,e){var n=-1,r=t.length,i=r-1;for(e=e===Ss?r:e;++n<e;){var o=ot(n,i),s=t[o];t[o]=t[n],t[n]=s}return t.length=e,t}function De(t){if(\"string\"==typeof t||gn(t))return t;var e=t+\"\";return\"0\"==e&&1/t==-1/0?\"-0\":e}function Re(t){if(null!=t){try{return Zn.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"}function Me(t){if(t instanceof m)return t.clone();var e=new g(t.__wrapped__,t.__chain__);return e.__actions__=Mt(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function We(t,e,n){var r=null==t?0:t.length;if(!r)return-1;n=null==n?0:yn(n);return n<0&&(n=Ar(r+n,0)),rs(t,ge(e,3),n)}function Le(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==Ss&&(i=yn(n),i=n<0?Ar(r+i,0):Ir(i,r-1)),rs(t,ge(e,3),i,!0)}function Fe(t){return(null==t?0:t.length)?I(t,1):[]}function He(t){return t&&t.length?t[0]:Ss}function Be(t){var e=null==t?0:t.length;return e?t[e-1]:Ss}function qe(t,e){return t&&t.length&&e&&e.length?rt(t,e):t}function ze(t){return null==t?t:Dr.call(t)}function Ue(e){if(!e||!e.length)return[];var n=0;return e=Xo(e,function(t){return on(t)&&(n=Ar(t.length,n),1)}),hs(n,function(t){return Qo(e,us(t))})}function Ge(t,e){if(!t||!t.length)return[];t=Ue(t);return null==e?t:Qo(t,function(t){return zo(e,Ss,t)})}function Ve(t){t=d(t);return t.__chain__=!0,t}function $e(t,e){return e(t)}function Xe(t,e){return(io(t)?Go:Zr)(t,ge(e,3))}function Ye(t,e){return(io(t)?Vo:ti)(t,ge(e,3))}function Ke(t,e){return(io(t)?Qo:K)(t,ge(e,3))}function Qe(t,e,n){return e=n?Ss:e,e=t&&null==e?t.length:e,oe(t,128,Ss,Ss,Ss,Ss,e)}function Je(t,e){var n;if(\"function\"!=typeof e)throw new Xn(Os);return t=yn(t),function(){return 0<--t&&(n=e.apply(this,arguments)),t<=1&&(e=Ss),n}}function Ze(r,n,t){function i(t){var e=u,n=c;return u=c=Ss,d=t,h=r.apply(n,e)}function o(t){var e=t-p;return p===Ss||n<=e||e<0||m&&l<=t-d}function s(){var t,e=Gi();return o(e)?a(e):void(f=mi(s,(e=n-((t=e)-p),m?Ir(e,l-(t-d)):e)))}function a(t){return f=Ss,v&&u?i(t):(u=c=Ss,h)}function e(){var t=Gi(),e=o(t);if(u=arguments,c=this,p=t,e){if(f===Ss)return d=e=p,f=mi(s,n),g?i(e):h;if(m)return f=mi(s,n),i(p)}return f===Ss&&(f=mi(s,n)),h}var u,c,l,h,f,p,d=0,g=!1,m=!1,v=!0;if(\"function\"!=typeof r)throw new Xn(Os);return n=wn(n)||0,ln(t)&&(g=!!t.leading,m=\"maxWait\"in t,l=m?Ar(wn(t.maxWait)||0,n):l,v=\"trailing\"in t?!!t.trailing:v),e.cancel=function(){f!==Ss&&si(f),d=0,u=p=c=f=Ss},e.flush=function(){return f===Ss?h:a(Gi())},e}function tn(r,i){if(\"function\"!=typeof r||null!=i&&\"function\"!=typeof i)throw new Xn(Os);var o=function(){var t=arguments,e=i?i.apply(this,t):t[0],n=o.cache;if(n.has(e))return n.get(e);t=r.apply(this,t);return o.cache=n.set(e,t)||n,t};return o.cache=new(tn.Cache||s),o}function en(e){if(\"function\"!=typeof e)throw new Xn(Os);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function nn(t,e){return t===e||t!=t&&e!=e}function rn(t){return null!=t&&cn(t.length)&&!an(t)}function on(t){return hn(t)&&rn(t)}function sn(t){if(!hn(t))return!1;var e=M(t);return e==Ws||\"[object DOMException]\"==e||\"string\"==typeof t.message&&\"string\"==typeof t.name&&!pn(t)}function an(t){if(!ln(t))return!1;t=M(t);return t==Ls||t==Fs||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}function un(t){return\"number\"==typeof t&&t==yn(t)}function cn(t){return\"number\"==typeof t&&-1<t&&t%1==0&&t<=As}function ln(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}function hn(t){return null!=t&&\"object\"==typeof t}function fn(t){return\"number\"==typeof t||hn(t)&&M(t)==Bs}function pn(t){if(!hn(t)||M(t)!=qs)return!1;t=hr(t);if(null===t)return!0;t=tr.call(t,\"constructor\")&&t.constructor;return\"function\"==typeof t&&t instanceof t&&Zn.call(t)==ir}function dn(t){return\"string\"==typeof t||!io(t)&&hn(t)&&M(t)==Vs}function gn(t){return\"symbol\"==typeof t||hn(t)&&M(t)==$s}function mn(t){if(!t)return[];if(rn(t))return(dn(t)?ks:Mt)(t);if(mr&&t[mr])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[mr]());var e=hi(t);return(e==Hs?bs:e==Gs?xs:Tn)(t)}function vn(t){return t?(t=wn(t))!==1/0&&t!==-1/0?t==t?t:0:17976931348623157e292*(t<0?-1:1):0===t?t:0}function yn(t){var e=vn(t),t=e%1;return e==e?t?e-t:e:0}function bn(t){return t?x(yn(t),0,js):0}function wn(t){if(\"number\"==typeof t)return t;if(gn(t))return Is;if(ln(t)&&(t=ln(e=\"function\"==typeof t.valueOf?t.valueOf():t)?e+\"\":e),\"string\"!=typeof t)return 0===t?t:+t;t=t.replace(xa,\"\");var e=Na.test(t);return e||Ra.test(t)?Ya(t.slice(2),e?2:8):Pa.test(t)?Is:+t}function _n(t){return Wt(t,On(t))}function xn(t){return null==t?\"\":yt(t)}function Cn(t,e,n){e=null==t?Ss:D(t,e);return e===Ss?n:e}function kn(t,e){return null!=t&&be(t,e,F)}function Sn(t){return(rn(t)?r:$)(t)}function On(t){return rn(t)?r(t,!0):X(t)}function En(t,n){if(null==t)return{};var e=Qo(fe(t),function(t){return[t]});return n=ge(n),nt(t,e,function(t,e){return n(t,e[0])})}function Tn(t){return null==t?[]:ps(t,Sn(t))}function An(t){return Lo(xn(t).toLowerCase())}function In(t){return(t=xn(t))&&t.replace(Wa,iu).replace(Ba,\"\")}function jn(t,e,n){return t=xn(t),(e=n?Ss:e)===Ss?(n=t,za.test(n)?t.match(qa)||[]:t.match(Ta)||[]):t.match(e)||[]}function Pn(t){return function(){return t}}function Nn(t){return t}function Dn(t){return V(\"function\"==typeof t?t:C(t,1))}function Rn(r,e,t){var n=Sn(e),i=N(e,n);null!=t||ln(e)&&(i.length||!n.length)||(t=e,e=r,r=this,i=N(e,Sn(e)));var o=!(ln(t)&&\"chain\"in t&&!t.chain),s=an(r);return Go(i,function(t){var n=e[t];r[t]=n,s&&(r.prototype[t]=function(){var t=this.__chain__;if(o||t){var e=r(this.__wrapped__);return(e.__actions__=Mt(this.__actions__)).push({func:n,args:arguments,thisArg:r}),e.__chain__=t,e}return n.apply(r,Jo([this.value()],arguments))})}),r}function Mn(){}function Wn(t){return ke(t)?us(De(t)):(e=t,function(t){return D(t,e)});var e}function Ln(){return[]}function Fn(){return!1}var Hn=(e=null==e?Ka:au.defaults(Ka.Object(),e,au.pick(Ka,Ua))).Array,Bn=e.Date,qn=e.Error,zn=e.Function,Un=e.Math,Gn=e.Object,Vn=e.RegExp,$n=e.String,Xn=e.TypeError,Yn=Hn.prototype,Kn=zn.prototype,Qn=Gn.prototype,Jn=e[\"__core-js_shared__\"],Zn=Kn.toString,tr=Qn.hasOwnProperty,er=0,nr=(Ho=/[^.]+$/.exec(Jn&&Jn.keys&&Jn.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+Ho:\"\",rr=Qn.toString,ir=Zn.call(Gn),or=Ka._,sr=Vn(\"^\"+Zn.call(tr).replace(wa,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),ar=Qa?e.Buffer:Ss,ur=e.Symbol,cr=e.Uint8Array,lr=ar?ar.allocUnsafe:Ss,hr=ws(Gn.getPrototypeOf,Gn),fr=Gn.create,pr=Qn.propertyIsEnumerable,dr=Yn.splice,gr=ur?ur.isConcatSpreadable:Ss,mr=ur?ur.iterator:Ss,vr=ur?ur.toStringTag:Ss,yr=function(){try{var t=ye(Gn,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}(),br=e.clearTimeout!==Ka.clearTimeout&&e.clearTimeout,wr=Bn&&Bn.now!==Ka.Date.now&&Bn.now,_r=e.setTimeout!==Ka.setTimeout&&e.setTimeout,xr=Un.ceil,Cr=Un.floor,kr=Gn.getOwnPropertySymbols,Sr=ar?ar.isBuffer:Ss,Or=e.isFinite,Er=Yn.join,Tr=ws(Gn.keys,Gn),Ar=Un.max,Ir=Un.min,jr=Bn.now,Pr=e.parseInt,Nr=Un.random,Dr=Yn.reverse,Rr=ye(e,\"DataView\"),Mr=ye(e,\"Map\"),Wr=ye(e,\"Promise\"),Lr=ye(e,\"Set\"),Fr=ye(e,\"WeakMap\"),Hr=ye(Gn,\"create\"),Br=Fr&&new Fr,qr={},zr=Re(Rr),Ur=Re(Mr),Gr=Re(Wr),Vr=Re(Lr),$r=Re(Fr),Xr=ur?ur.prototype:Ss,Yr=Xr?Xr.valueOf:Ss,Kr=Xr?Xr.toString:Ss,Qr=function(t){if(!ln(t))return{};if(fr)return fr(t);Jr.prototype=t;t=new Jr;return Jr.prototype=Ss,t};function Jr(){}d.templateSettings={escape:pa,evaluate:da,interpolate:ga,variable:\"\",imports:{_:d}},(d.prototype=o.prototype).constructor=d,(g.prototype=Qr(o.prototype)).constructor=g,(m.prototype=Qr(o.prototype)).constructor=m,n.prototype.clear=function(){this.__data__=Hr?Hr(null):{},this.size=0},n.prototype.delete=function(t){return t=this.has(t)&&delete this.__data__[t],this.size-=t?1:0,t},n.prototype.get=function(t){var e=this.__data__;if(Hr){var n=e[t];return n===Es?Ss:n}return tr.call(e,t)?e[t]:Ss},n.prototype.has=function(t){var e=this.__data__;return Hr?e[t]!==Ss:tr.call(e,t)},n.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Hr&&e===Ss?Es:e,this},i.prototype.clear=function(){this.__data__=[],this.size=0},i.prototype.delete=function(t){var e=this.__data__;return!((t=l(e,t))<0)&&(t==e.length-1?e.pop():dr.call(e,t,1),--this.size,!0)},i.prototype.get=function(t){var e=this.__data__;return(t=l(e,t))<0?Ss:e[t][1]},i.prototype.has=function(t){return-1<l(this.__data__,t)},i.prototype.set=function(t,e){var n=this.__data__,r=l(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},s.prototype.clear=function(){this.size=0,this.__data__={hash:new n,map:new(Mr||i),string:new n}},s.prototype.delete=function(t){return t=me(this,t).delete(t),this.size-=t?1:0,t},s.prototype.get=function(t){return me(this,t).get(t)},s.prototype.has=function(t){return me(this,t).has(t)},s.prototype.set=function(t,e){var n=me(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},v.prototype.add=v.prototype.push=function(t){return this.__data__.set(t,Es),this},v.prototype.has=function(t){return this.__data__.has(t)},y.prototype.clear=function(){this.__data__=new i,this.size=0},y.prototype.delete=function(t){var e=this.__data__,t=e.delete(t);return this.size=e.size,t},y.prototype.get=function(t){return this.__data__.get(t)},y.prototype.has=function(t){return this.__data__.has(t)},y.prototype.set=function(t,e){var n=this.__data__;if(n instanceof i){var r=n.__data__;if(!Mr||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new s(r)}return n.set(t,e),this.size=n.size,this};var Zr=Ht(j),ti=Ht(P,!0),ei=Bt(),ni=Bt(!0),ri=Br?function(t,e){return Br.set(t,e),t}:Nn,ii=yr?function(t,e){return yr(t,\"toString\",{configurable:!0,enumerable:!1,value:Pn(e),writable:!0})}:Nn,oi=at,si=br||function(t){return Ka.clearTimeout(t)},ai=Lr&&1/xs(new Lr([,-0]))[1]==1/0?function(t){return new Lr(t)}:Mn,ui=Br?function(t){return Br.get(t)}:Mn,ci=kr?function(e){return null==e?[]:(e=Gn(e),Xo(kr(e),function(t){return pr.call(e,t)}))}:Ln,li=kr?function(t){for(var e=[];t;)Jo(e,ci(t)),t=hr(t);return e}:Ln,hi=M;(Rr&&hi(new Rr(new ArrayBuffer(1)))!=Ks||Mr&&hi(new Mr)!=Hs||Wr&&hi(Wr.resolve())!=zs||Lr&&hi(new Lr)!=Gs||Fr&&hi(new Fr)!=Xs)&&(hi=function(t){var e=M(t),t=e==qs?t.constructor:Ss,t=t?Re(t):\"\";if(t)switch(t){case zr:return Ks;case Ur:return Hs;case Gr:return zs;case Vr:return Gs;case $r:return Xs}return e});var fi,pi,di=Jn?an:Fn,gi=Pe(ri),mi=_r||function(t,e){return Ka.setTimeout(t,e)},vi=Pe(ii),yi=(pi=(fi=tn(fi=function(t){var i=[];return ya.test(t)&&i.push(\"\"),t.replace(ba,function(t,e,n,r){i.push(n?r.replace(Aa,\"$1\"):e||t)}),i},function(t){return 500===pi.size&&pi.clear(),t})).cache,fi),bi=at(function(t,e){return on(t)?O(t,I(e,1,on,!0)):[]}),wi=at(function(t,e){var n=Be(e);return on(n)&&(n=Ss),on(t)?O(t,I(e,1,on,!0),ge(n,2)):[]}),_i=at(function(t,e){var n=Be(e);return on(n)&&(n=Ss),on(t)?O(t,I(e,1,on,!0),Ss,n):[]}),xi=at(function(t){var e=Qo(t,Ot);return e.length&&e[0]===t[0]?H(e):[]}),Ci=at(function(t){var e=Be(t),n=Qo(t,Ot);return e===Be(n)?e=Ss:n.pop(),n.length&&n[0]===t[0]?H(n,ge(e,2)):[]}),ki=at(function(t){var e=Be(t),n=Qo(t,Ot);return(e=\"function\"==typeof e?e:Ss)&&n.pop(),n.length&&n[0]===t[0]?H(n,Ss,e):[]}),Si=at(qe),Oi=le(function(t,e){var n=null==t?0:t.length,r=_(t,e);return it(t,Qo(e,function(t){return xe(t,n)?+t:t}).sort(Nt)),r}),Ei=at(function(t){return bt(I(t,1,on,!0))}),Ti=at(function(t){var e=Be(t);return on(e)&&(e=Ss),bt(I(t,1,on,!0),ge(e,2))}),Ai=at(function(t){var e=\"function\"==typeof(e=Be(t))?e:Ss;return bt(I(t,1,on,!0),Ss,e)}),Ii=at(function(t,e){return on(t)?O(t,e):[]}),ji=at(function(t){return kt(Xo(t,on))}),Pi=at(function(t){var e=Be(t);return on(e)&&(e=Ss),kt(Xo(t,on),ge(e,2))}),Ni=at(function(t){var e=\"function\"==typeof(e=Be(t))?e:Ss;return kt(Xo(t,on),Ss,e)}),Di=at(Ue),Ri=at(function(t){var e=t.length,e=\"function\"==typeof(e=1<e?t[e-1]:Ss)?(t.pop(),e):Ss;return Ge(t,e)}),Mi=le(function(e){function t(t){return _(t,e)}var n=e.length,r=n?e[0]:0,i=this.__wrapped__;return!(1<n||this.__actions__.length)&&i instanceof m&&xe(r)?((i=i.slice(r,+r+(n?1:0))).__actions__.push({func:$e,args:[t],thisArg:Ss}),new g(i,this.__chain__).thru(function(t){return n&&!t.length&&t.push(Ss),t})):this.thru(t)}),Wi=Lt(function(t,e,n){tr.call(t,n)?++t[n]:f(t,n,1)}),Li=Vt(We),Fi=Vt(Le),Hi=Lt(function(t,e,n){tr.call(t,n)?t[n].push(e):f(t,n,[e])}),Bi=at(function(t,e,n){var r=-1,i=\"function\"==typeof e,o=rn(t)?Hn(t.length):[];return Zr(t,function(t){o[++r]=i?zo(e,t,n):B(t,e,n)}),o}),qi=Lt(function(t,e,n){f(t,n,e)}),zi=Lt(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),Ui=at(function(t,e){if(null==t)return[];var n=e.length;return 1<n&&Ce(t,e[0],e[1])?e=[]:2<n&&Ce(e[0],e[1],e[2])&&(e=[e[0]]),et(t,I(e,1),[])}),Gi=wr||function(){return Ka.Date.now()},Vi=at(function(t,e,n){var r,i=1;return n.length&&(r=_s(n,de(Vi)),i|=32),oe(t,i,e,n,r)}),$i=at(function(t,e,n){var r,i=3;return n.length&&(r=_s(n,de($i)),i|=32),oe(e,i,t,n,r)}),Xi=at(function(t,e){return S(t,1,e)}),Yi=at(function(t,e,n){return S(t,wn(e)||0,n)});tn.Cache=s;var Ki,Qi=oi(function(r,i){var o=(i=1==i.length&&io(i[0])?Qo(i[0],fs(ge())):Qo(I(i,1),fs(ge()))).length;return at(function(t){for(var e=-1,n=Ir(t.length,o);++e<n;)t[e]=i[e].call(this,t[e]);return zo(r,this,t)})}),Ji=at(function(t,e){var n=_s(e,de(Ji));return oe(t,32,Ss,e,n)}),Zi=at(function(t,e){var n=_s(e,de(Zi));return oe(t,64,Ss,e,n)}),to=le(function(t,e){return oe(t,256,Ss,Ss,Ss,e)}),eo=ee(W),no=ee(function(t,e){return e<=t}),ro=q(function(){return arguments}())?q:function(t){return hn(t)&&tr.call(t,\"callee\")&&!pr.call(t,\"callee\")},io=Hn.isArray,oo=Ja?fs(Ja):function(t){return hn(t)&&M(t)==Ys},so=Sr||Fn,ao=Za?fs(Za):function(t){return hn(t)&&M(t)==Ms},uo=tu?fs(tu):function(t){return hn(t)&&hi(t)==Hs},co=eu?fs(eu):function(t){return hn(t)&&M(t)==Us},lo=nu?fs(nu):function(t){return hn(t)&&hi(t)==Gs},ho=ru?fs(ru):function(t){return hn(t)&&cn(t.length)&&!!Va[M(t)]},fo=ee(Y),po=ee(function(t,e){return t<=e}),go=Ft(function(t,e){if(Oe(e)||rn(e))Wt(e,Sn(e),t);else for(var n in e)tr.call(e,n)&&b(t,n,e[n])}),mo=Ft(function(t,e){Wt(e,On(e),t)}),vo=Ft(function(t,e,n,r){Wt(e,On(e),t,r)}),yo=Ft(function(t,e,n,r){Wt(e,Sn(e),t,r)}),bo=le(_),wo=at(function(t){return t.push(Ss,se),zo(vo,Ss,t)}),_o=at(function(t){return t.push(Ss,ae),zo(Oo,Ss,t)}),xo=Yt(function(t,e,n){t[e]=n},Pn(Nn)),Co=Yt(function(t,e,n){tr.call(t,e)?t[e].push(n):t[e]=[n]},ge),ko=at(B),So=Ft(function(t,e,n){Z(t,e,n)}),Oo=Ft(function(t,e,n,r){Z(t,e,n,r)}),Eo=le(function(e,t){var n={};if(null==e)return n;var r=!1;t=Qo(t,function(t){return t=Tt(t,e),r=r||1<t.length,t}),Wt(e,fe(e),n),r&&(n=C(n,7,ue));for(var i=t.length;i--;)wt(n,t[i]);return n}),To=le(function(t,e){return null==t?{}:nt(n=t,e,function(t,e){return kn(n,e)});var n}),Ao=ie(Sn),Io=ie(On),jo=zt(function(t,e,n){return e=e.toLowerCase(),t+(n?An(e):e)}),Po=zt(function(t,e,n){return t+(n?\"-\":\"\")+e.toLowerCase()}),No=zt(function(t,e,n){return t+(n?\" \":\"\")+e.toLowerCase()}),Do=qt(\"toLowerCase\"),Ro=zt(function(t,e,n){return t+(n?\"_\":\"\")+e.toLowerCase()}),Mo=zt(function(t,e,n){return t+(n?\" \":\"\")+Lo(e)}),Wo=zt(function(t,e,n){return t+(n?\" \":\"\")+e.toUpperCase()}),Lo=qt(\"toUpperCase\"),Fo=at(function(t,e){try{return zo(t,Ss,e)}catch(t){return sn(t)?t:new qn(t)}}),Kn=le(function(e,t){return Go(t,function(t){t=De(t),f(e,t,Vi(e[t],e))}),e}),Ho=$t(),ar=$t(!0),Bn=at(function(e,n){return function(t){return B(t,e,n)}}),e=at(function(e,n){return function(t){return B(e,t,n)}}),ur=Qt(Qo),Xr=Qt($o),br=Qt(es),Rr=te(),Wr=te(!0),Fr=Kt(function(t,e){return t+e},0),Jn=re(\"ceil\"),_r=Kt(function(t,e){return t/e},1),ii=re(\"floor\"),wr=Kt(function(t,e){return t*e},1),oi=re(\"round\"),Sr=Kt(function(t,e){return t-e},0);return d.after=function(t,e){if(\"function\"!=typeof e)throw new Xn(Os);return t=yn(t),function(){if(--t<1)return e.apply(this,arguments)}},d.ary=Qe,d.assign=go,d.assignIn=mo,d.assignInWith=vo,d.assignWith=yo,d.at=bo,d.before=Je,d.bind=Vi,d.bindAll=Kn,d.bindKey=$i,d.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return io(t)?t:[t]},d.chain=Ve,d.chunk=function(t,e,n){e=(n?Ce(t,e,n):e===Ss)?1:Ar(yn(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,s=Hn(xr(r/e));i<r;)s[o++]=ft(t,i,i+=e);return s},d.compact=function(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i},d.concat=function(){var t=arguments.length;if(!t)return[];for(var e=Hn(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return Jo(io(n)?Mt(n):[n],I(e,1))},d.cond=function(r){var i=null==r?0:r.length,e=ge();return r=i?Qo(r,function(t){if(\"function\"!=typeof t[1])throw new Xn(Os);return[e(t[0]),t[1]]}):[],at(function(t){for(var e=-1;++e<i;){var n=r[e];if(zo(n[0],this,t))return zo(n[1],this,t)}})},d.conforms=function(t){return e=C(t,1),n=Sn(e),function(t){return k(t,e,n)};var e,n},d.constant=Pn,d.countBy=Wi,d.create=function(t,e){return t=Qr(t),null==e?t:w(t,e)},d.curry=function t(e,n,r){n=oe(e,8,Ss,Ss,Ss,Ss,Ss,n=r?Ss:n);return n.placeholder=t.placeholder,n},d.curryRight=function t(e,n,r){n=oe(e,16,Ss,Ss,Ss,Ss,Ss,n=r?Ss:n);return n.placeholder=t.placeholder,n},d.debounce=Ze,d.defaults=wo,d.defaultsDeep=_o,d.defer=Xi,d.delay=Yi,d.difference=bi,d.differenceBy=wi,d.differenceWith=_i,d.drop=function(t,e,n){var r=null==t?0:t.length;return r?ft(t,(e=n||e===Ss?1:yn(e))<0?0:e,r):[]},d.dropRight=function(t,e,n){var r=null==t?0:t.length;return r?ft(t,0,(e=r-(e=n||e===Ss?1:yn(e)))<0?0:e):[]},d.dropRightWhile=function(t,e){return t&&t.length?xt(t,ge(e,3),!0,!0):[]},d.dropWhile=function(t,e){return t&&t.length?xt(t,ge(e,3),!0):[]},d.fill=function(t,e,n,r){var i=null==t?0:t.length;return i?(n&&\"number\"!=typeof n&&Ce(t,e,n)&&(n=0,r=i),function(t,e,n,r){var i=t.length;for((n=yn(n))<0&&(n=i<-n?0:i+n),(r=r===Ss||i<r?i:yn(r))<0&&(r+=i),r=r<n?0:bn(r);n<r;)t[n++]=e;return t}(t,e,n,r)):[]},d.filter=function(t,e){return(io(t)?Xo:A)(t,ge(e,3))},d.flatMap=function(t,e){return I(Ke(t,e),1)},d.flatMapDeep=function(t,e){return I(Ke(t,e),1/0)},d.flatMapDepth=function(t,e,n){return n=n===Ss?1:yn(n),I(Ke(t,e),n)},d.flatten=Fe,d.flattenDeep=function(t){return(null==t?0:t.length)?I(t,1/0):[]},d.flattenDepth=function(t,e){return(null==t?0:t.length)?I(t,e=e===Ss?1:yn(e)):[]},d.flip=function(t){return oe(t,512)},d.flow=Ho,d.flowRight=ar,d.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r},d.functions=function(t){return null==t?[]:N(t,Sn(t))},d.functionsIn=function(t){return null==t?[]:N(t,On(t))},d.groupBy=Hi,d.initial=function(t){return(null==t?0:t.length)?ft(t,0,-1):[]},d.intersection=xi,d.intersectionBy=Ci,d.intersectionWith=ki,d.invert=xo,d.invertBy=Co,d.invokeMap=Bi,d.iteratee=Dn,d.keyBy=qi,d.keys=Sn,d.keysIn=On,d.map=Ke,d.mapKeys=function(t,r){var i={};return r=ge(r,3),j(t,function(t,e,n){f(i,r(t,e,n),t)}),i},d.mapValues=function(t,r){var i={};return r=ge(r,3),j(t,function(t,e,n){f(i,e,r(t,e,n))}),i},d.matches=function(t){return Q(C(t,1))},d.matchesProperty=function(t,e){return J(t,C(e,1))},d.memoize=tn,d.merge=So,d.mergeWith=Oo,d.method=Bn,d.methodOf=e,d.mixin=Rn,d.negate=en,d.nthArg=function(e){return e=yn(e),at(function(t){return tt(t,e)})},d.omit=Eo,d.omitBy=function(t,e){return En(t,en(ge(e)))},d.once=function(t){return Je(2,t)},d.orderBy=function(t,e,n,r){return null==t?[]:(io(e)||(e=null==e?[]:[e]),io(n=r?Ss:n)||(n=null==n?[]:[n]),et(t,e,n))},d.over=ur,d.overArgs=Qi,d.overEvery=Xr,d.overSome=br,d.partial=Ji,d.partialRight=Zi,d.partition=zi,d.pick=To,d.pickBy=En,d.property=Wn,d.propertyOf=function(e){return function(t){return null==e?Ss:D(e,t)}},d.pull=Si,d.pullAll=qe,d.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?rt(t,e,ge(n,2)):t},d.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?rt(t,e,Ss,n):t},d.pullAt=Oi,d.range=Rr,d.rangeRight=Wr,d.rearg=to,d.reject=function(t,e){return(io(t)?Xo:A)(t,en(ge(e,3)))},d.remove=function(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=ge(e,3);++r<o;){var s=t[r];e(s,r,t)&&(n.push(s),i.push(r))}return it(t,i),n},d.rest=function(t,e){if(\"function\"!=typeof t)throw new Xn(Os);return at(t,e=e===Ss?e:yn(e))},d.reverse=ze,d.sampleSize=function(t,e,n){return e=(n?Ce(t,e,n):e===Ss)?1:yn(e),(io(t)?u:ct)(t,e)},d.set=function(t,e,n){return null==t?t:lt(t,e,n)},d.setWith=function(t,e,n,r){return r=\"function\"==typeof r?r:Ss,null==t?t:lt(t,e,n,r)},d.shuffle=function(t){return(io(t)?c:ht)(t)},d.slice=function(t,e,n){var r=null==t?0:t.length;return r?(n=n&&\"number\"!=typeof n&&Ce(t,e,n)?(e=0,r):(e=null==e?0:yn(e),n===Ss?r:yn(n)),ft(t,e,n)):[]},d.sortBy=Ui,d.sortedUniq=function(t){return t&&t.length?mt(t):[]},d.sortedUniqBy=function(t,e){return t&&t.length?mt(t,ge(e,2)):[]},d.split=function(t,e,n){return n&&\"number\"!=typeof n&&Ce(t,e,n)&&(e=n=Ss),(n=n===Ss?js:n>>>0)?(t=xn(t))&&(\"string\"==typeof e||null!=e&&!co(e))&&(!(e=yt(e))&&ys(t))?At(ks(t),0,n):t.split(e,n):[]},d.spread=function(n,r){if(\"function\"!=typeof n)throw new Xn(Os);return r=null==r?0:Ar(yn(r),0),at(function(t){var e=t[r],t=At(t,0,r);return e&&Jo(t,e),zo(n,this,t)})},d.tail=function(t){var e=null==t?0:t.length;return e?ft(t,1,e):[]},d.take=function(t,e,n){return t&&t.length?ft(t,0,(e=n||e===Ss?1:yn(e))<0?0:e):[]},d.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?ft(t,(e=r-(e=n||e===Ss?1:yn(e)))<0?0:e,r):[]},d.takeRightWhile=function(t,e){return t&&t.length?xt(t,ge(e,3),!1,!0):[]},d.takeWhile=function(t,e){return t&&t.length?xt(t,ge(e,3)):[]},d.tap=function(t,e){return e(t),t},d.throttle=function(t,e,n){var r=!0,i=!0;if(\"function\"!=typeof t)throw new Xn(Os);return ln(n)&&(r=\"leading\"in n?!!n.leading:r,i=\"trailing\"in n?!!n.trailing:i),Ze(t,e,{leading:r,maxWait:e,trailing:i})},d.thru=$e,d.toArray=mn,d.toPairs=Ao,d.toPairsIn=Io,d.toPath=function(t){return io(t)?Qo(t,De):gn(t)?[t]:Mt(yi(xn(t)))},d.toPlainObject=_n,d.transform=function(t,r,i){var e,n=io(t),o=n||so(t)||ho(t);return r=ge(r,4),null==i&&(e=t&&t.constructor,i=o?n?new e:[]:ln(t)&&an(e)?Qr(hr(t)):{}),(o?Go:j)(t,function(t,e,n){return r(i,t,e,n)}),i},d.unary=function(t){return Qe(t,1)},d.union=Ei,d.unionBy=Ti,d.unionWith=Ai,d.uniq=function(t){return t&&t.length?bt(t):[]},d.uniqBy=function(t,e){return t&&t.length?bt(t,ge(e,2)):[]},d.uniqWith=function(t,e){return e=\"function\"==typeof e?e:Ss,t&&t.length?bt(t,Ss,e):[]},d.unset=function(t,e){return null==t||wt(t,e)},d.unzip=Ue,d.unzipWith=Ge,d.update=function(t,e,n){return null==t?t:_t(t,e,Et(n))},d.updateWith=function(t,e,n,r){return r=\"function\"==typeof r?r:Ss,null==t?t:_t(t,e,Et(n),r)},d.values=Tn,d.valuesIn=function(t){return null==t?[]:ps(t,On(t))},d.without=Ii,d.words=jn,d.wrap=function(t,e){return Ji(Et(e),t)},d.xor=ji,d.xorBy=Pi,d.xorWith=Ni,d.zip=Di,d.zipObject=function(t,e){return St(t||[],e||[],b)},d.zipObjectDeep=function(t,e){return St(t||[],e||[],lt)},d.zipWith=Ri,d.entries=Ao,d.entriesIn=Io,d.extend=mo,d.extendWith=vo,Rn(d,d),d.add=Fr,d.attempt=Fo,d.camelCase=jo,d.capitalize=An,d.ceil=Jn,d.clamp=function(t,e,n){return n===Ss&&(n=e,e=Ss),n!==Ss&&(n=(n=wn(n))==n?n:0),e!==Ss&&(e=(e=wn(e))==e?e:0),x(wn(t),e,n)},d.clone=function(t){return C(t,4)},d.cloneDeep=function(t){return C(t,5)},d.cloneDeepWith=function(t,e){return C(t,5,e=\"function\"==typeof e?e:Ss)},d.cloneWith=function(t,e){return C(t,4,e=\"function\"==typeof e?e:Ss)},d.conformsTo=function(t,e){return null==e||k(t,e,Sn(e))},d.deburr=In,d.defaultTo=function(t,e){return null==t||t!=t?e:t},d.divide=_r,d.endsWith=function(t,e,n){t=xn(t),e=yt(e);var r=t.length,r=n=n===Ss?r:x(yn(n),0,r);return 0<=(n-=e.length)&&t.slice(n,r)==e},d.eq=nn,d.escape=function(t){return(t=xn(t))&&fa.test(t)?t.replace(la,ou):t},d.escapeRegExp=function(t){return(t=xn(t))&&_a.test(t)?t.replace(wa,\"\\\\$&\"):t},d.every=function(t,e,n){var r=io(t)?$o:E;return n&&Ce(t,e,n)&&(e=Ss),r(t,ge(e,3))},d.find=Li,d.findIndex=We,d.findKey=function(t,e){return ns(t,ge(e,3),j)},d.findLast=Fi,d.findLastIndex=Le,d.findLastKey=function(t,e){return ns(t,ge(e,3),P)},d.floor=ii,d.forEach=Xe,d.forEachRight=Ye,d.forIn=function(t,e){return null==t?t:ei(t,ge(e,3),On)},d.forInRight=function(t,e){return null==t?t:ni(t,ge(e,3),On)},d.forOwn=function(t,e){return t&&j(t,ge(e,3))},d.forOwnRight=function(t,e){return t&&P(t,ge(e,3))},d.get=Cn,d.gt=eo,d.gte=no,d.has=function(t,e){return null!=t&&be(t,e,L)},d.hasIn=kn,d.head=He,d.identity=Nn,d.includes=function(t,e,n,r){return t=rn(t)?t:Tn(t),n=n&&!r?yn(n):0,r=t.length,n<0&&(n=Ar(r+n,0)),dn(t)?n<=r&&-1<t.indexOf(e,n):!!r&&-1<is(t,e,n)},d.indexOf=function(t,e,n){var r=null==t?0:t.length;return r?((n=null==n?0:yn(n))<0&&(n=Ar(r+n,0)),is(t,e,n)):-1},d.inRange=function(t,e,n){return e=vn(e),n===Ss?(n=e,e=0):n=vn(n),(t=t=wn(t))>=Ir(e=e,n=n)&&t<Ar(e,n)},d.invoke=ko,d.isArguments=ro,d.isArray=io,d.isArrayBuffer=oo,d.isArrayLike=rn,d.isArrayLikeObject=on,d.isBoolean=function(t){return!0===t||!1===t||hn(t)&&M(t)==Rs},d.isBuffer=so,d.isDate=ao,d.isElement=function(t){return hn(t)&&1===t.nodeType&&!pn(t)},d.isEmpty=function(t){if(null==t)return!0;if(rn(t)&&(io(t)||\"string\"==typeof t||\"function\"==typeof t.splice||so(t)||ho(t)||ro(t)))return!t.length;var e,n=hi(t);if(n==Hs||n==Gs)return!t.size;if(Oe(t))return!$(t).length;for(e in t)if(tr.call(t,e))return!1;return!0},d.isEqual=function(t,e){return z(t,e)},d.isEqualWith=function(t,e,n){var r=(n=\"function\"==typeof n?n:Ss)?n(t,e):Ss;return r===Ss?z(t,e,Ss,n):!!r},d.isError=sn,d.isFinite=function(t){return\"number\"==typeof t&&Or(t)},d.isFunction=an,d.isInteger=un,d.isLength=cn,d.isMap=uo,d.isMatch=function(t,e){return t===e||U(t,e,ve(e))},d.isMatchWith=function(t,e,n){return n=\"function\"==typeof n?n:Ss,U(t,e,ve(e),n)},d.isNaN=function(t){return fn(t)&&t!=+t},d.isNative=function(t){if(di(t))throw new qn(\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\");return G(t)},d.isNil=function(t){return null==t},d.isNull=function(t){return null===t},d.isNumber=fn,d.isObject=ln,d.isObjectLike=hn,d.isPlainObject=pn,d.isRegExp=co,d.isSafeInteger=function(t){return un(t)&&-As<=t&&t<=As},d.isSet=lo,d.isString=dn,d.isSymbol=gn,d.isTypedArray=ho,d.isUndefined=function(t){return t===Ss},d.isWeakMap=function(t){return hn(t)&&hi(t)==Xs},d.isWeakSet=function(t){return hn(t)&&\"[object WeakSet]\"==M(t)},d.join=function(t,e){return null==t?\"\":Er.call(t,e)},d.kebabCase=Po,d.last=Be,d.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==Ss&&(i=(i=yn(n))<0?Ar(r+i,0):Ir(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):rs(t,ss,i,!0)},d.lowerCase=No,d.lowerFirst=Do,d.lt=fo,d.lte=po,d.max=function(t){return t&&t.length?T(t,Nn,W):Ss},d.maxBy=function(t,e){return t&&t.length?T(t,ge(e,2),W):Ss},d.mean=function(t){return as(t,Nn)},d.meanBy=function(t,e){return as(t,ge(e,2))},d.min=function(t){return t&&t.length?T(t,Nn,Y):Ss},d.minBy=function(t,e){return t&&t.length?T(t,ge(e,2),Y):Ss},d.stubArray=Ln,d.stubFalse=Fn,d.stubObject=function(){return{}},d.stubString=function(){return\"\"},d.stubTrue=function(){return!0},d.multiply=wr,d.nth=function(t,e){return t&&t.length?tt(t,yn(e)):Ss},d.noConflict=function(){return Ka._===this&&(Ka._=or),this},d.noop=Mn,d.now=Gi,d.pad=function(t,e,n){t=xn(t);var r=(e=yn(e))?Cs(t):0;return!e||e<=r?t:Jt(Cr(r=(e-r)/2),n)+t+Jt(xr(r),n)},d.padEnd=function(t,e,n){t=xn(t);var r=(e=yn(e))?Cs(t):0;return e&&r<e?t+Jt(e-r,n):t},d.padStart=function(t,e,n){t=xn(t);var r=(e=yn(e))?Cs(t):0;return e&&r<e?Jt(e-r,n)+t:t},d.parseInt=function(t,e,n){return e=n||null==e?0:e&&+e,Pr(xn(t).replace(Ca,\"\"),e||0)},d.random=function(t,e,n){var r;if(n&&\"boolean\"!=typeof n&&Ce(t,e,n)&&(e=n=Ss),n===Ss&&(\"boolean\"==typeof e?(n=e,e=Ss):\"boolean\"==typeof t&&(n=t,t=Ss)),t===Ss&&e===Ss?(t=0,e=1):(t=vn(t),e===Ss?(e=t,t=0):e=vn(e)),e<t&&(r=t,t=e,e=r),n||t%1||e%1){n=Nr();return Ir(t+n*(e-t+Xa(\"1e-\"+((n+\"\").length-1))),e)}return ot(t,e)},d.reduce=function(t,e,n){var r=io(t)?Zo:cs,i=arguments.length<3;return r(t,ge(e,4),n,i,Zr)},d.reduceRight=function(t,e,n){var r=io(t)?ts:cs,i=arguments.length<3;return r(t,ge(e,4),n,i,ti)},d.repeat=function(t,e,n){return e=(n?Ce(t,e,n):e===Ss)?1:yn(e),st(xn(t),e)},d.replace=function(){var t=arguments,e=xn(t[0]);return t.length<3?e:e.replace(t[1],t[2])},d.result=function(t,e,n){var r=-1,i=(e=Tt(e,t)).length;for(i||(i=1,t=Ss);++r<i;){var o=null==t?Ss:t[De(e[r])];o===Ss&&(r=i,o=n),t=an(o)?o.call(t):o}return t},d.round=oi,d.runInContext=t,d.sample=function(t){return(io(t)?a:ut)(t)},d.size=function(t){if(null==t)return 0;if(rn(t))return dn(t)?Cs(t):t.length;var e=hi(t);return e==Hs||e==Gs?t.size:$(t).length},d.snakeCase=Ro,d.some=function(t,e,n){var r=io(t)?es:pt;return n&&Ce(t,e,n)&&(e=Ss),r(t,ge(e,3))},d.sortedIndex=function(t,e){return dt(t,e)},d.sortedIndexBy=function(t,e,n){return gt(t,e,ge(n,2))},d.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var r=dt(t,e);if(r<n&&nn(t[r],e))return r}return-1},d.sortedLastIndex=function(t,e){return dt(t,e,!0)},d.sortedLastIndexBy=function(t,e,n){return gt(t,e,ge(n,2),!0)},d.sortedLastIndexOf=function(t,e){if(null==t?0:t.length){var n=dt(t,e,!0)-1;if(nn(t[n],e))return n}return-1},d.startCase=Mo,d.startsWith=function(t,e,n){return t=xn(t),n=null==n?0:x(yn(n),0,t.length),e=yt(e),t.slice(n,n+e.length)==e},d.subtract=Sr,d.sum=function(t){return t&&t.length?ls(t,Nn):0},d.sumBy=function(t,e){return t&&t.length?ls(t,ge(e,2)):0},d.template=function(s,t,e){var n=d.templateSettings;e&&Ce(s,t,e)&&(t=Ss),s=xn(s),t=vo({},t,n,se);var a,u,r=Sn(n=vo({},t.imports,n.imports,se)),i=ps(n,r),c=0,n=t.interpolate||La,l=\"__p += '\",n=Vn((t.escape||La).source+\"|\"+n.source+\"|\"+(n===ga?Ia:La).source+\"|\"+(t.evaluate||La).source+\"|$\",\"g\"),o=\"//# sourceURL=\"+(\"sourceURL\"in t?t.sourceURL:\"lodash.templateSources[\"+ ++Ga+\"]\")+\"\\n\";if(s.replace(n,function(t,e,n,r,i,o){return n=n||r,l+=s.slice(c,o).replace(Fa,vs),e&&(a=!0,l+=\"' +\\n__e(\"+e+\") +\\n'\"),i&&(u=!0,l+=\"';\\n\"+i+\";\\n__p += '\"),n&&(l+=\"' +\\n((__t = (\"+n+\")) == null ? '' : __t) +\\n'\"),c=o+t.length,t}),l+=\"';\\n\",(t=t.variable)||(l=\"with (obj) {\\n\"+l+\"\\n}\\n\"),l=(u?l.replace(sa,\"\"):l).replace(aa,\"$1\").replace(ua,\"$1;\"),l=\"function(\"+(t||\"obj\")+\") {\\n\"+(t?\"\":\"obj || (obj = {});\\n\")+\"var __t, __p = ''\"+(a?\", __e = _.escape\":\"\")+(u?\", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\":\";\\n\")+l+\"return __p\\n}\",(t=Fo(function(){return zn(r,o+\"return \"+l).apply(Ss,i)})).source=l,sn(t))throw t;return t},d.times=function(t,e){if((t=yn(t))<1||As<t)return[];var n=js,r=Ir(t,js);for(e=ge(e),t-=js,r=hs(r,e);++n<t;)e(n);return r},d.toFinite=vn,d.toInteger=yn,d.toLength=bn,d.toLower=function(t){return xn(t).toLowerCase()},d.toNumber=wn,d.toSafeInteger=function(t){return t?x(yn(t),-As,As):0===t?t:0},d.toString=xn,d.toUpper=function(t){return xn(t).toUpperCase()},d.trim=function(t,e,n){return(t=xn(t))&&(n||e===Ss)?t.replace(xa,\"\"):t&&(e=yt(e))?(t=ks(t),e=ks(e),At(t,gs(t,e),ms(t,e)+1).join(\"\")):t},d.trimEnd=function(t,e,n){return(t=xn(t))&&(n||e===Ss)?t.replace(ka,\"\"):t&&(e=yt(e))?At(t=ks(t),0,ms(t,ks(e))+1).join(\"\"):t},d.trimStart=function(t,e,n){return(t=xn(t))&&(n||e===Ss)?t.replace(Ca,\"\"):t&&(e=yt(e))?At(t=ks(t),gs(t,ks(e))).join(\"\"):t},d.truncate=function(t,e){var n,r=30,i=\"...\";ln(e)&&(n=\"separator\"in e?e.separator:n,r=\"length\"in e?yn(e.length):r,i=\"omission\"in e?yt(e.omission):i);var o,e=(t=xn(t)).length;if(ys(t)&&(e=(o=ks(t)).length),e<=r)return t;if((e=r-Cs(i))<1)return i;if(r=o?At(o,0,e).join(\"\"):t.slice(0,e),n===Ss)return r+i;if(o&&(e+=r.length-e),co(n)){if(t.slice(e).search(n)){var s,a=r;for(n.global||(n=Vn(n.source,xn(ja.exec(n))+\"g\")),n.lastIndex=0;s=n.exec(a);)var u=s.index;r=r.slice(0,u===Ss?e:u)}}else t.indexOf(yt(n),e)==e||-1<(e=r.lastIndexOf(n))&&(r=r.slice(0,e));return r+i},d.unescape=function(t){return(t=xn(t))&&ha.test(t)?t.replace(ca,su):t},d.uniqueId=function(t){var e=++er;return xn(t)+e},d.upperCase=Wo,d.upperFirst=Lo,d.each=Xe,d.eachRight=Ye,d.first=He,Rn(d,(Ki={},j(d,function(t,e){tr.call(d.prototype,e)||(Ki[e]=t)}),Ki),{chain:!1}),d.VERSION=\"4.17.4\",Go([\"bind\",\"bindKey\",\"curry\",\"curryRight\",\"partial\",\"partialRight\"],function(t){d[t].placeholder=d}),Go([\"drop\",\"take\"],function(n,r){m.prototype[n]=function(t){t=t===Ss?1:Ar(yn(t),0);var e=this.__filtered__&&!r?new m(this):this.clone();return e.__filtered__?e.__takeCount__=Ir(t,e.__takeCount__):e.__views__.push({size:Ir(t,js),type:n+(e.__dir__<0?\"Right\":\"\")}),e},m.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()}}),Go([\"filter\",\"map\",\"takeWhile\"],function(t,e){var n=e+1,r=1==n||3==n;m.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:ge(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),Go([\"head\",\"last\"],function(t,e){var n=\"take\"+(e?\"Right\":\"\");m.prototype[t]=function(){return this[n](1).value()[0]}}),Go([\"initial\",\"tail\"],function(t,e){var n=\"drop\"+(e?\"\":\"Right\");m.prototype[t]=function(){return this.__filtered__?new m(this):this[n](1)}}),m.prototype.compact=function(){return this.filter(Nn)},m.prototype.find=function(t){return this.filter(t).head()},m.prototype.findLast=function(t){return this.reverse().find(t)},m.prototype.invokeMap=at(function(e,n){return\"function\"==typeof e?new m(this):this.map(function(t){return B(t,e,n)})}),m.prototype.reject=function(t){return this.filter(en(ge(t)))},m.prototype.slice=function(t,e){t=yn(t);var n=this;return n.__filtered__&&(0<t||e<0)?new m(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==Ss&&(n=(e=yn(e))<0?n.dropRight(-e):n.take(e-t)),n)},m.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},m.prototype.toArray=function(){return this.take(js)},j(m.prototype,function(c,t){var l=/^(?:filter|find|map|reject)|While$/.test(t),h=/^(?:head|last)$/.test(t),f=d[h?\"take\"+(\"last\"==t?\"Right\":\"\"):t],p=h||/^find/.test(t);f&&(d.prototype[t]=function(){function t(t){return t=f.apply(d,Jo([t],n)),h&&s?t[0]:t}var e=this.__wrapped__,n=h?[1]:arguments,r=e instanceof m,i=n[0],o=r||io(e);o&&l&&\"function\"==typeof i&&1!=i.length&&(r=o=!1);var s=this.__chain__,a=!!this.__actions__.length,i=p&&!s,a=r&&!a;if(p||!o)return i&&a?c.apply(this,n):(u=this.thru(t),i?h?u.value()[0]:u.value():u);e=a?e:new m(this);var u=c.apply(e,n);return u.__actions__.push({func:$e,args:[t],thisArg:Ss}),new g(u,s)})}),Go([\"pop\",\"push\",\"shift\",\"sort\",\"splice\",\"unshift\"],function(t){var n=Yn[t],r=/^(?:push|sort|unshift)$/.test(t)?\"tap\":\"thru\",i=/^(?:pop|shift)$/.test(t);d.prototype[t]=function(){var e=arguments;if(!i||this.__chain__)return this[r](function(t){return n.apply(io(t)?t:[],e)});var t=this.value();return n.apply(io(t)?t:[],e)}}),j(m.prototype,function(t,e){var n,r=d[e];r&&(n=r.name+\"\",(qr[n]||(qr[n]=[])).push({name:e,func:r}))}),qr[Xt(Ss,2).name]=[{name:\"wrapper\",func:Ss}],m.prototype.clone=function(){var t=new m(this.__wrapped__);return t.__actions__=Mt(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Mt(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Mt(this.__views__),t},m.prototype.reverse=function(){var t;return this.__filtered__?((t=new m(this)).__dir__=-1,t.__filtered__=!0):(t=this.clone()).__dir__*=-1,t},m.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=io(t),r=e<0,i=n?t.length:0,o=function(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],s=o.size;switch(o.type){case\"drop\":t+=s;break;case\"dropRight\":e-=s;break;case\"take\":e=Ir(e,t+s);break;case\"takeRight\":t=Ar(t,e-s)}}return{start:t,end:e}}(0,i,this.__views__),s=o.start,a=(o=o.end)-s,u=r?o:s-1,c=this.__iteratees__,l=c.length,h=0,f=Ir(a,this.__takeCount__);if(!n||!r&&i==a&&f==a)return Ct(t,this.__actions__);var p=[];t:for(;a--&&h<f;){for(var d=-1,g=t[u+=e];++d<l;){var m=c[d],v=m.iteratee,m=m.type,v=v(g);if(2==m)g=v;else if(!v){if(1==m)continue t;break t}}p[h++]=g}return p},d.prototype.at=Mi,d.prototype.chain=function(){return Ve(this)},d.prototype.commit=function(){return new g(this.value(),this.__chain__)},d.prototype.next=function(){this.__values__===Ss&&(this.__values__=mn(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?Ss:this.__values__[this.__index__++]}},d.prototype.plant=function(t){for(var e,n=this;n instanceof o;){var r=Me(n);r.__index__=0,r.__values__=Ss,e?i.__wrapped__=r:e=r;var i=r,n=n.__wrapped__}return i.__wrapped__=t,e},d.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof m){t=t;return this.__actions__.length&&(t=new m(this)),(t=t.reverse()).__actions__.push({func:$e,args:[ze],thisArg:Ss}),new g(t,this.__chain__)}return this.thru(ze)},d.prototype.toJSON=d.prototype.valueOf=d.prototype.value=function(){return Ct(this.__wrapped__,this.__actions__)},d.prototype.first=d.prototype.head,mr&&(d.prototype[mr]=function(){return this}),d}();\"function\"==typeof define&&\"object\"==typeof define.amd&&define.amd?(Ka._=au,define(function(){return au})):n?((n.exports=au)._=au,s._=au):Ka._=au}.call(this),function(t,e){\"object\"==typeof exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.jStat=e()}(this,function(){var p,d,_,x,m,g,a,u,i,e,c,l,h,s,n,f=function(a,u){var e=Array.prototype.concat,t=Array.prototype.slice,n=Object.prototype.toString;function c(t,e){e=e<t?t:e;return a.pow(10,17-~~(a.log(0<e?e:-e)*a.LOG10E))}var l=Array.isArray||function(t){return\"[object Array]\"===n.call(t)};function h(t){return\"[object Function]\"===n.call(t)}function f(t){return\"number\"==typeof t&&t-t==0}function p(){return new p._init(arguments)}function r(){return 0}function i(){return 1}function o(t,e){return t===e?1:0}function s(t,e,n,r){var i,o=[],s=t.length;if(e===u&&n===u&&r===u)return p.copy(t);if(r=r||1,(e=0<=(e=e||0)?e:s+e)===(n=0<=(n=n||t.length)?n:s+n)||0===r)return[];if(e<n&&r<0)return[];if(n<e&&0<r)return[];if(0<r)for(i=e;i<n;i+=r)o.push(t[i]);else for(i=e;n<i;i+=r)o.push(t[i]);return o}p.fn=p.prototype,p._init=function(t){if(l(t[0]))if(l(t[0][0])){h(t[1])&&(t[0]=p.map(t[0],t[1]));for(var e=0;e<t[0].length;e++)this[e]=t[0][e];this.length=t[0].length}else this[0]=h(t[1])?p.map(t[0],t[1]):t[0],this.length=1;else if(f(t[0]))this[0]=p.seq.apply(null,t),this.length=1;else{if(t[0]instanceof p)return p(t[0].toArray());this[0]=[],this.length=1}return this},p._init.prototype=p.prototype,(p._init.constructor=p).utils={calcRdx:c,isArray:l,isFunction:h,isNumber:f,toVector:function(t){return e.apply([],t)}},p._random_fn=a.random,p.setRandom=function(t){if(\"function\"!=typeof t)throw new TypeError(\"fn is not a function\");p._random_fn=t},p.extend=function(t){var e,n;if(1===arguments.length){for(n in t)p[n]=t[n];return this}for(e=1;e<arguments.length;e++)for(n in arguments[e])t[n]=arguments[e][n];return t},p.rows=function(t){return t.length||1},p.cols=function(t){return t[0].length||1},p.dimensions=function(t){return{rows:p.rows(t),cols:p.cols(t)}},p.row=function(e,t){return l(t)?t.map(function(t){return p.row(e,t)}):e[t]},p.rowa=function(t,e){return p.row(t,e)},p.col=function(r,t){if(l(t)){var i=p.arange(r.length).map(function(){return new Array(t.length)});return t.forEach(function(e,n){p.arange(r.length).forEach(function(t){i[t][n]=r[t][e]})}),i}for(var e=new Array(r.length),n=0;n<r.length;n++)e[n]=[r[n][t]];return e},p.cola=function(t,e){return p.col(t,e).map(function(t){return t[0]})},p.diag=function(t){for(var e=p.rows(t),n=new Array(e),r=0;r<e;r++)n[r]=[t[r][r]];return n},p.antidiag=function(t){for(var e=p.rows(t)-1,n=new Array(e),r=0;0<=e;e--,r++)n[r]=[t[r][e]];return n},p.transpose=function(t){var e,n,r,i,o,s=[];for(l(t[0])||(t=[t]),n=t.length,r=t[0].length,o=0;o<r;o++){for(e=new Array(n),i=0;i<n;i++)e[i]=t[i][o];s.push(e)}return 1===s.length?s[0]:s},p.map=function(t,e,n){var r,i,o,s,a;for(l(t[0])||(t=[t]),i=t.length,o=t[0].length,s=n?t:new Array(i),r=0;r<i;r++)for(s[r]||(s[r]=new Array(o)),a=0;a<o;a++)s[r][a]=e(t[r][a],r,a);return 1===s.length?s[0]:s},p.cumreduce=function(t,e,n){var r,i,o,s,a;for(l(t[0])||(t=[t]),i=t.length,o=t[0].length,s=n?t:new Array(i),r=0;r<i;r++)for(s[r]||(s[r]=new Array(o)),0<o&&(s[r][0]=t[r][0]),a=1;a<o;a++)s[r][a]=e(s[r][a-1],t[r][a]);return 1===s.length?s[0]:s},p.alter=function(t,e){return p.map(t,e,!0)},p.create=function(t,e,n){var r,i,o=new Array(t);for(h(e)&&(n=e,e=t),r=0;r<t;r++)for(o[r]=new Array(e),i=0;i<e;i++)o[r][i]=n(r,i);return o},p.zeros=function(t,e){return f(e)||(e=t),p.create(t,e,r)},p.ones=function(t,e){return f(e)||(e=t),p.create(t,e,i)},p.rand=function(t,e){return f(e)||(e=t),p.create(t,e,p._random_fn)},p.identity=function(t,e){return f(e)||(e=t),p.create(t,e,o)},p.symmetric=function(t){var e,n,r=t.length;if(t.length!==t[0].length)return!1;for(e=0;e<r;e++)for(n=0;n<r;n++)if(t[n][e]!==t[e][n])return!1;return!0},p.clear=function(t){return p.alter(t,r)},p.seq=function(t,e,n,r){h(r)||(r=!1);for(var i=[],o=c(t,e),s=(e*o-t*o)/((n-1)*o),a=t,u=0;a<=e&&u<n;a=(t*o+s*o*++u)/o)i.push(r?r(a,u):a);return i},p.arange=function(t,e,n){var r,i=[];if(n=n||1,e===u&&(e=t,t=0),t===e||0===n)return[];if(t<e&&n<0)return[];if(e<t&&0<n)return[];if(0<n)for(r=t;r<e;r+=n)i.push(r);else for(r=t;e<r;r+=n)i.push(r);return i},p.slice=function(t,e){var n,r;return f((e=e||{}).row)?f(e.col)?t[e.row][e.col]:s(p.rowa(t,e.row),(n=e.col||{}).start,n.end,n.step):f(e.col)?s(p.cola(t,e.col),(r=e.row||{}).start,r.end,r.step):(r=e.row||{},n=e.col||{},s(t,r.start,r.end,r.step).map(function(t){return s(t,n.start,n.end,n.step)}))},p.sliceAssign=function(i,t,o){var e,n;if(f(t.row)){if(f(t.col))return i[t.row][t.col]=o;t.col=t.col||{},t.col.start=t.col.start||0,t.col.end=t.col.end||i[0].length,t.col.step=t.col.step||1,e=p.arange(t.col.start,a.min(i.length,t.col.end),t.col.step);var r=t.row;return e.forEach(function(t,e){i[r][t]=o[e]}),i}if(f(t.col)){t.row=t.row||{},t.row.start=t.row.start||0,t.row.end=t.row.end||i.length,t.row.step=t.row.step||1,n=p.arange(t.row.start,a.min(i[0].length,t.row.end),t.row.step);var s=t.col;return n.forEach(function(t,e){i[t][s]=o[e]}),i}return o[0].length===u&&(o=[o]),t.row.start=t.row.start||0,t.row.end=t.row.end||i.length,t.row.step=t.row.step||1,t.col.start=t.col.start||0,t.col.end=t.col.end||i[0].length,t.col.step=t.col.step||1,n=p.arange(t.row.start,a.min(i.length,t.row.end),t.row.step),e=p.arange(t.col.start,a.min(i[0].length,t.col.end),t.col.step),n.forEach(function(n,r){e.forEach(function(t,e){i[n][t]=o[r][e]})}),i},p.diagonal=function(t){var n=p.zeros(t.length,t.length);return t.forEach(function(t,e){n[e][e]=t}),n},p.copy=function(t){return t.map(function(t){return f(t)?t:t.map(function(t){return t})})};var d=p.prototype;return d.length=0,d.push=Array.prototype.push,d.sort=Array.prototype.sort,d.splice=Array.prototype.splice,d.slice=Array.prototype.slice,d.toArray=function(){return 1<this.length?t.call(this):t.call(this)[0]},d.map=function(t,e){return p(p.map(this,t,e))},d.cumreduce=function(t,e){return p(p.cumreduce(this,t,e))},d.alter=function(t){return p.alter(this,t),this},function(t){for(var e=0;e<t.length;e++)!function(r){d[r]=function(t){var e,n=this;return t?(setTimeout(function(){t.call(n,d[r].call(n))}),this):(e=p[r](this),l(e)?p(e):e)}}(t[e])}(\"transpose clear symmetric rows cols dimensions diag antidiag\".split(\" \")),function(t){for(var e=0;e<t.length;e++)!function(r){d[r]=function(t,e){var n=this;return e?(setTimeout(function(){e.call(n,d[r].call(n,t))}),this):p(p[r](this,t))}}(t[e])}(\"row col\".split(\" \")),function(t){for(var e=0;e<t.length;e++)!function(t){d[t]=function(){return p(p[t].apply(null,arguments))}}(t[e])}(\"create zeros ones rand identity\".split(\" \")),p}(Math);function o(t,e,n,r){for(var i,o=0,s=1,a=1,u=1,c=0,l=0;x.abs((a-l)/a)>r;)s=u+(i=-(e+c)*(e+n+c)*t/(e+2*c)/(e+2*c+1))*s,a=(o=(l=a)+i*o)+(i=(c+=1)*(n-c)*t/(e+2*c-1)/(e+2*c))*a,o/=u=s+i*u,s/=u,a/=u,u=1;return a/e}function v(t,e,n){var r=[.9815606342467192,.9041172563704749,.7699026741943047,.5873179542866175,.3678314989981802,.1252334085114689],i=[.04717533638651183,.10693932599531843,.16007832854334622,.20316742672306592,.2334925365383548,.24914704581340277],o=.5*t;if(8<=o)return 1;for(var s=(s=2*_.normal.cdf(o,0,1,1,0)-1)>=x.exp(-50/n)?x.pow(s,n):0,a=3<t?2:3,u=o,c=(8-o)/a,l=u+c,h=0,f=n-1,p=1;p<=a;p++){for(var d=0,g=.5*(l+u),m=.5*(l-u),v=1;v<=12;v++){var y,b=6<v?r[(y=12-v+1)-1]:-r[(y=v)-1],w=g+m*b,b=w*w;if(60<b)break;w=.5*(2*_.normal.cdf(w,0,1,1,0))-.5*(2*_.normal.cdf(w,t,1,1,0));w>=x.exp(-30/f)&&(d+=i[y-1]*x.exp(-.5*b)*x.pow(w,f))}h+=d*=2*m*n/x.sqrt(2*x.PI),u=l,l+=c}return(s+=h)<=x.exp(-30/e)?0:1<=(s=x.pow(s,e))?1:s}function y(t){return e(t)||t instanceof m}function b(t,e,n,r){if(1<t||1<n||t<=0||n<=0)throw new Error(\"Proportions should be greater than 0 and less than 1\");var i=(t*e+n*r)/(e+r);return(t-n)/l.sqrt(i*(1-i)*(1/e+1/r))}function w(t,e){var n=t.length,r=e[0].length-1,i=n-r-1,o=f.lstsq(e,t),s=f.multiply(e,o.map(function(t){return[t]})).map(function(t){return t[0]}),a=f.subtract(t,s),u=f.mean(t),c=f.sum(s.map(function(t){return Math.pow(t-u,2)})),l=f.sum(t.map(function(t,e){return Math.pow(t-s[e],2)})),h=c+l;return{exog:e,endog:t,nobs:n,df_model:r,df_resid:i,coef:o,predict:s,resid:a,ybar:u,SST:h,SSE:c,SSR:l,R2:c/h}}function C(e){var n,r,t=(n=e.exog,r=n[0].length,f.arange(r).map(function(e){var t=f.arange(r).filter(function(t){return t!==e});return w(f.col(n,e).map(function(t){return t[0]}),f.col(n,t))})),i=Math.sqrt(e.SSR/e.df_resid),o=t.map(function(t){var e=t.SST,t=t.R2;return i/Math.sqrt(e*(1-t))}),s=e.coef.map(function(t,e){return+t/o[e]}),a=s.map(function(t){t=f.studentt.cdf(t,e.df_resid);return 2*(.5<t?1-t:t)}),u=f.studentt.inv(.975,e.df_resid),t=e.coef.map(function(t,e){e=u*o[e];return[t-e,t+e]});return{se:o,t:s,p:a,sigmaHat:i,interval95:t}}return function(u,l){var c=u.utils.isFunction;function h(t,e){return t-e}function f(t,e,n){return l.max(e,l.min(t,n))}u.sum=function(t){for(var e=0,n=t.length;0<=--n;)e+=t[n];return e},u.sumsqrd=function(t){for(var e=0,n=t.length;0<=--n;)e+=t[n]*t[n];return e},u.sumsqerr=function(t){for(var e,n=u.mean(t),r=0,i=t.length;0<=--i;)r+=(e=t[i]-n)*e;return r},u.sumrow=function(t){for(var e=0,n=t.length;0<=--n;)e+=t[n];return e},u.product=function(t){for(var e=1,n=t.length;0<=--n;)e*=t[n];return e},u.min=function(t){for(var e=t[0],n=0;++n<t.length;)t[n]<e&&(e=t[n]);return e},u.max=function(t){for(var e=t[0],n=0;++n<t.length;)t[n]>e&&(e=t[n]);return e},u.unique=function(t){for(var e={},n=[],r=0;r<t.length;r++)e[t[r]]||(e[t[r]]=!0,n.push(t[r]));return n},u.mean=function(t){return u.sum(t)/t.length},u.meansqerr=function(t){return u.sumsqerr(t)/t.length},u.geomean=function(t){return l.pow(u.product(t),1/t.length)},u.median=function(t){var e=t.length,t=t.slice().sort(h);return 1&e?t[e/2|0]:(t[e/2-1]+t[e/2])/2},u.cumsum=function(t){return u.cumreduce(t,function(t,e){return t+e})},u.cumprod=function(t){return u.cumreduce(t,function(t,e){return t*e})},u.diff=function(t){for(var e=[],n=t.length,r=1;r<n;r++)e.push(t[r]-t[r-1]);return e},u.rank=function(t){for(var e=[],n={},r=0;r<t.length;r++)n[a=t[r]]?n[a]++:(n[a]=1,e.push(a));var i=e.sort(h),o={},s=1;for(r=0;r<i.length;r++){var a,u=n[a=i[r]],c=(s+(s+u-1))/2;o[a]=c,s+=u}return t.map(function(t){return o[t]})},u.mode=function(t){for(var e=t.length,n=t.slice().sort(h),r=1,i=0,o=0,s=[],a=0;a<e;a++)n[a]===n[a+1]?r++:(i<r?(s=[n[a]],i=r,o=0):r===i&&(s.push(n[a]),o++),r=1);return 0===o?s[0]:s},u.range=function(t){return u.max(t)-u.min(t)},u.variance=function(t,e){return u.sumsqerr(t)/(t.length-(e?1:0))},u.pooledvariance=function(t){return t.reduce(function(t,e){return t+u.sumsqerr(e)},0)/(t.reduce(function(t,e){return t+e.length},0)-t.length)},u.deviation=function(t){for(var e=u.mean(t),n=t.length,r=new Array(n),i=0;i<n;i++)r[i]=t[i]-e;return r},u.stdev=function(t,e){return l.sqrt(u.variance(t,e))},u.pooledstdev=function(t){return l.sqrt(u.pooledvariance(t))},u.meandev=function(t){for(var e=u.mean(t),n=[],r=t.length-1;0<=r;r--)n.push(l.abs(t[r]-e));return u.mean(n)},u.meddev=function(t){for(var e=u.median(t),n=[],r=t.length-1;0<=r;r--)n.push(l.abs(t[r]-e));return u.median(n)},u.coeffvar=function(t){return u.stdev(t)/u.mean(t)},u.quartiles=function(t){var e=t.length,t=t.slice().sort(h);return[t[l.round(e/4)-1],t[l.round(e/2)-1],t[l.round(3*e/4)-1]]},u.quantiles=function(t,e,n,r){var i,o,s,a=t.slice().sort(h),u=[e.length],c=t.length;for(void 0===n&&(n=3/8),void 0===r&&(r=3/8),i=0;i<e.length;i++)s=c*(o=e[i])+(n+o*(1-n-r)),o=l.floor(f(s,1,c-1)),s=f(s-o,0,1),u[i]=(1-s)*a[o-1]+s*a[o];return u},u.percentile=function(t,e,n){t=t.slice().sort(h),e=e*(t.length+(n?1:-1))+(n?0:1),n=parseInt(e),e-=n;return n+1<t.length?t[n-1]+e*(t[n]-t[n-1]):t[n-1]},u.percentileOfScore=function(t,e,n){for(var r,i=0,o=t.length,s=\"strict\"===n?!0:!1,a=0;a<o;a++)r=t[a],(s&&r<e||!s&&r<=e)&&i++;return i/o},u.histogram=function(t,e){e=e||4;for(var n=u.min(t),r=(u.max(t)-n)/e,i=t.length,o=[],s=0;s<e;s++)o[s]=0;for(s=0;s<i;s++)o[l.min(l.floor((t[s]-n)/r),e-1)]+=1;return o},u.covariance=function(t,e){for(var n=u.mean(t),r=u.mean(e),i=t.length,o=new Array(i),s=0;s<i;s++)o[s]=(t[s]-n)*(e[s]-r);return u.sum(o)/(i-1)},u.corrcoeff=function(t,e){return u.covariance(t,e)/u.stdev(t,1)/u.stdev(e,1)},u.spearmancoeff=function(t,e){return t=u.rank(t),e=u.rank(e),u.corrcoeff(t,e)},u.stanMoment=function(t,e){for(var n=u.mean(t),r=u.stdev(t),i=t.length,o=0,s=0;s<i;s++)o+=l.pow((t[s]-n)/r,e);return o/t.length},u.skewness=function(t){return u.stanMoment(t,3)},u.kurtosis=function(t){return u.stanMoment(t,4)-3};var p=u.prototype;!function(t){for(var e=0;e<t.length;e++)!function(o){p[o]=function(t,e){var n=[],r=0,i=this;if(c(t)&&(e=t,t=!1),e)return setTimeout(function(){e.call(i,p[o].call(i,t))}),this;if(1<this.length){for(i=!0===t?this:this.transpose();r<i.length;r++)n[r]=u[o](i[r]);return n}return u[o](this[0],t)}}(t[e])}(\"cumsum cumprod\".split(\" \")),function(t){for(var e=0;e<t.length;e++)!function(o){p[o]=function(t,e){var n=[],r=0,i=this;if(c(t)&&(e=t,t=!1),e)return setTimeout(function(){e.call(i,p[o].call(i,t))}),this;if(1<this.length){for(\"sumrow\"!==o&&(i=!0===t?this:this.transpose());r<i.length;r++)n[r]=u[o](i[r]);return!0===t?u[o](u.utils.toVector(n)):n}return u[o](this[0],t)}}(t[e])}(\"sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr geomean median diff rank mode range variance deviation stdev meandev meddev coeffvar quartiles histogram skewness kurtosis\".split(\" \")),function(t){for(var e=0;e<t.length;e++)!function(a){p[a]=function(){var t,e=[],n=0,r=this,i=Array.prototype.slice.call(arguments);if(c(i[i.length-1])){t=i[i.length-1];var o=i.slice(0,i.length-1);return setTimeout(function(){t.call(r,p[a].apply(r,o))}),this}t=void 0;var s=function(t){return u[a].apply(r,[t].concat(i))};if(1<this.length){for(r=r.transpose();n<r.length;n++)e[n]=s(r[n]);return e}return s(this[0])}}(t[e])}(\"quantiles percentileOfScore\".split(\" \"))}(f,Math),p=f,d=Math,p.gammaln=function(t){var e,n,r=0,i=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],o=1.000000000190015,t=(n=e=t)+5.5;for(t-=(e+.5)*d.log(t);r<6;r++)o+=i[r]/++n;return d.log(2.5066282746310007*o/e)-t},p.loggam=function(t){var e,n,r,i,o,s=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059],a=t,u=0;if(1==t||2==t)return 0;for(t<=7&&(a=t+(u=d.floor(7-t))),e=1/(a*a),n=2*d.PI,i=s[9],o=8;0<=o;o--)i*=e,i+=s[o];if(r=i/a+.5*d.log(n)+(a-.5)*d.log(a)-a,t<=7)for(o=1;o<=u;o++)r-=d.log(a-1),--a;return r},p.gammafn=function(t){var e,n,r,i=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],o=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],s=!1,a=0,u=0,c=0,l=t;if(171.6243769536076<t)return 1/0;if(l<=0){if(!(r=l%1+36e-17))return 1/0;s=(1&l?-1:1)*d.PI/d.sin(d.PI*r),l=1-l}for(n=(t=l)<1?l++:(l-=a=(0|l)-1)-1,e=0;e<8;++e)c=(c+i[e])*n,u=u*n+o[e];if(r=c/u+1,t<l)r/=t;else if(l<t)for(e=0;e<a;++e)r*=l,l++;return s&&(r=s/r),r},p.gammap=function(t,e){return p.lowRegGamma(t,e)*p.gammafn(t)},p.lowRegGamma=function(t,e){var n,r=p.gammaln(t),i=t,o=1/t,s=o,a=e+1-t,u=1/1e-30,c=1/a,l=c,h=1,f=-~(8.5*d.log(1<=t?t:1/t)+.4*t+17);if(e<0||t<=0)return NaN;if(e<t+1){for(;h<=f;h++)o+=s*=e/++i;return o*d.exp(-e+t*d.log(e)-r)}for(;h<=f;h++)l*=(c=1/(c=(n=-h*(h-t))*c+(a+=2)))*(u=a+n/u);return 1-l*d.exp(-e+t*d.log(e)-r)},p.factorialln=function(t){return t<0?NaN:p.gammaln(t+1)},p.factorial=function(t){return t<0?NaN:p.gammafn(t+1)},p.combination=function(t,e){return 170<t||170<e?d.exp(p.combinationln(t,e)):p.factorial(t)/p.factorial(e)/p.factorial(t-e)},p.combinationln=function(t,e){return p.factorialln(t)-p.factorialln(e)-p.factorialln(t-e)},p.permutation=function(t,e){return p.factorial(t)/p.factorial(t-e)},p.betafn=function(t,e){if(!(t<=0||e<=0))return 170<t+e?d.exp(p.betaln(t,e)):p.gammafn(t)*p.gammafn(e)/p.gammafn(t+e)},p.betaln=function(t,e){return p.gammaln(t)+p.gammaln(e)-p.gammaln(t+e)},p.betacf=function(t,e,n){var r,i,o,s=1e-30,a=1,u=e+n,c=e+1,l=e-1,h=1,f=1-u*t/c;for(d.abs(f)<s&&(f=s),o=f=1/f;a<=100&&(f=1+(i=a*(n-a)*t/((l+(r=2*a))*(e+r)))*f,d.abs(f)<s&&(f=s),h=1+i/h,d.abs(h)<s&&(h=s),o*=(f=1/f)*h,f=1+(i=-(e+a)*(u+a)*t/((e+r)*(c+r)))*f,d.abs(f)<s&&(f=s),h=1+i/h,d.abs(h)<s&&(h=s),o*=i=(f=1/f)*h,!(d.abs(i-1)<3e-7));a++);return o},p.gammapinv=function(t,e){var n,r,i,o,s,a,u=0,c=e-1,l=p.gammaln(e);if(1<=t)return d.max(100,e+100*d.sqrt(e));if(t<=0)return 0;for(n=1<e?(s=d.log(c),a=d.exp(c*(s-1)-l),o=t<.5?t:1-t,n=(2.30753+.27061*(r=d.sqrt(-2*d.log(o))))/(1+r*(.99229+.04481*r))-r,t<.5&&(n=-n),d.max(.001,e*d.pow(1-1/(9*e)-n/(3*d.sqrt(e)),3))):t<(r=1-e*(.253+.12*e))?d.pow(t/r,1/e):1-d.log(1-(t-r)/(1-r));u<12;u++){if(n<=0)return 0;if((n-=r=(i=(p.lowRegGamma(e,n)-t)/(r=1<e?a*d.exp(-(n-c)+c*(d.log(n)-s)):d.exp(-n+c*d.log(n)-l)))/(1-.5*d.min(1,i*((e-1)/n-1))))<=0&&(n=.5*(n+r)),d.abs(r)<1e-8*n)break}return n},p.erf=function(t){var e,n,r,i=[-1.3026537197817094,.6419697923564902,.019476473204185836,-.00956151478680863,-.000946595344482036,.000366839497852761,42523324806907e-18,-20278578112534e-18,-1624290004647e-18,130365583558e-17,1.5626441722e-8,-8.5238095915e-8,6.529054439e-9,5.059343495e-9,-9.91364156e-10,-2.27365122e-10,96467911e-18,2394038e-18,-6886027e-18,894487e-18,313092e-18,-112708e-18,381e-18,7106e-18,-1523e-18,-94e-18,121e-18,-28e-18],o=i.length-1,s=!1,a=0,u=0;for(t<0&&(t=-t,s=!0),n=4*(e=2/(2+t))-2;0<o;o--)a=n*(r=a)-u+i[o],u=r;return t=e*d.exp(-t*t+.5*(i[0]+n*a)-u),s?t-1:1-t},p.erfc=function(t){return 1-p.erf(t)},p.erfcinv=function(t){var e,n,r,i,o=0;if(2<=t)return-100;if(t<=0)return 100;for(i=t<1?t:2-t,e=-.70711*((2.30753+.27061*(r=d.sqrt(-2*d.log(i/2))))/(1+r*(.99229+.04481*r))-r);o<2;o++)e+=(n=p.erfc(e)-i)/(1.1283791670955126*d.exp(-e*e)-e*n);return t<1?e:-e},p.ibetainv=function(t,e,n){var r,i,o,s,a,u,c,l=e-1,h=n-1,f=0;if(t<=0)return 0;if(1<=t)return 1;for(o=1<=e&&1<=n?(u=t<.5?t:1-t,o=(2.30753+.27061*(r=d.sqrt(-2*d.log(u))))/(1+r*(.99229+.04481*r))-r,t<.5&&(o=-o),s=(o*o-3)/6,a=2/(1/(2*e-1)+1/(2*n-1)),u=o*d.sqrt(s+a)/a-(1/(2*n-1)-1/(2*e-1))*(s+5/6-2/(3*a)),e/(e+n*d.exp(2*u))):(s=d.log(e/(e+n)),a=d.log(n/(e+n)),t<(r=d.exp(e*s)/e)/(u=r+(i=d.exp(n*a)/n))?d.pow(e*u*t,1/e):1-d.pow(n*u*(1-t),1/n)),c=-p.gammaln(e)-p.gammaln(n)+p.gammaln(e+n);f<10;f++){if(0===o||1===o)return o;if((o-=r=(i=(p.ibeta(o,e,n)-t)/(r=d.exp(l*d.log(o)+h*d.log(1-o)+c)))/(1-.5*d.min(1,i*(l/o-h/(1-o)))))<=0&&(o=.5*(o+r)),1<=o&&(o=.5*(o+r+1)),d.abs(r)<1e-8*o&&0<f)break}return o},p.ibeta=function(t,e,n){var r=0===t||1===t?0:d.exp(p.gammaln(e+n)-p.gammaln(e)-p.gammaln(n)+e*d.log(t)+n*d.log(1-t));return!(t<0||1<t)&&(t<(e+1)/(e+n+2)?r*p.betacf(t,e,n)/e:1-r*p.betacf(1-t,n,e)/n)},p.randn=function(t,e){var n,r,i,o;if(e=e||t,t)return p.create(t,e,function(){return p.randn()});for(;n=p._random_fn(),r=1.7156*(p._random_fn()-.5),o=(o=n-.449871)*o+(i=d.abs(r)+.386595)*(.196*i-.25472*o),.27597<o&&(.27846<o||r*r>-4*d.log(n)*n*n););return r/n},p.randg=function(t,e,n){var r,i,o,s,a,u=t;if(n=n||e,t=t||1,e)return(n=p.zeros(e,n)).alter(function(){return p.randg(t)}),n;t<1&&(t+=1),r=t-1/3,i=1/d.sqrt(9*r);do{for(;s=1+i*(a=p.randn()),s<=0;);}while(s*=s*s,(o=p._random_fn())>1-.331*d.pow(a,4)&&d.log(o)>.5*a*a+r*(1-s+d.log(s)));if(t==u)return r*s;for(;o=p._random_fn(),0===o;);return d.pow(o,1/u)*r*s},function(t){for(var e=0;e<t.length;e++)!function(e){p.fn[e]=function(){return p(p.map(this,function(t){return p[e](t)}))}}(t[e])}(\"gammaln gammafn factorial factorialln\".split(\" \")),function(t){for(var e=0;e<t.length;e++)!function(t){p.fn[t]=function(){return p(p[t].apply(null,arguments))}}(t[e])}(\"randn\".split(\" \")),_=f,x=Math,function(t){for(var e=0;e<t.length;e++)!function(o){_[o]=function(t,e,n){return this instanceof arguments.callee?(this._a=t,this._b=e,this._c=n,this):new arguments.callee(t,e,n)},_.fn[o]=function(t,e,n){n=_[o](t,e,n);return n.data=this,n},_[o].prototype.sample=function(t){var e=this._a,n=this._b,r=this._c;return t?_.alter(t,function(){return _[o].sample(e,n,r)}):_[o].sample(e,n,r)},function(t){for(var e=0;e<t.length;e++)!function(i){_[o].prototype[i]=function(t){var e=this._a,n=this._b,r=this._c;return t||0===t||(t=this.data),\"number\"!=typeof t?_.fn.map.call(t,function(t){return _[o][i](t,e,n,r)}):_[o][i](t,e,n,r)}}(t[e])}(\"pdf cdf inv\".split(\" \")),function(t){for(var e=0;e<t.length;e++)!function(t){_[o].prototype[t]=function(){return _[o][t](this._a,this._b,this._c)}}(t[e])}(\"mean median mode variance\".split(\" \"))}(t[e])}(\"beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy laplace lognormal noncentralt normal pareto studentt weibull uniform binomial negbin hypgeom poisson triangular tukey arcsine\".split(\" \")),_.extend(_.beta,{pdf:function(t,e,n){return 1<t||t<0?0:1==e&&1==n?1:e<512&&n<512?x.pow(t,e-1)*x.pow(1-t,n-1)/_.betafn(e,n):x.exp((e-1)*x.log(t)+(n-1)*x.log(1-t)-_.betaln(e,n))},cdf:function(t,e,n){return 1<t||t<0?+(1<t):_.ibeta(t,e,n)},inv:function(t,e,n){return _.ibetainv(t,e,n)},mean:function(t,e){return t/(t+e)},median:function(t,e){return _.ibetainv(.5,t,e)},mode:function(t,e){return(t-1)/(t+e-2)},sample:function(t,e){t=_.randg(t);return t/(t+_.randg(e))},variance:function(t,e){return t*e/(x.pow(t+e,2)*(t+e+1))}}),_.extend(_.centralF,{pdf:function(t,e,n){var r;return t<0?0:e<=2?0===t&&e<2?1/0:0===t&&2===e?1:1/_.betafn(e/2,n/2)*x.pow(e/n,e/2)*x.pow(t,e/2-1)*x.pow(1+e/n*t,-(e+n)/2):(r=e*t/(n+t*e),e*(n/(n+t*e))/2*_.binomial.pdf((e-2)/2,(e+n-2)/2,r))},cdf:function(t,e,n){return t<0?0:_.ibeta(e*t/(e*t+n),e/2,n/2)},inv:function(t,e,n){return n/(e*(1/_.ibetainv(t,e/2,n/2)-1))},mean:function(t,e){return 2<e?e/(e-2):void 0},mode:function(t,e){return 2<t?e*(t-2)/(t*(e+2)):void 0},sample:function(t,e){return 2*_.randg(t/2)/t/(2*_.randg(e/2)/e)},variance:function(t,e){if(!(e<=4))return 2*e*e*(t+e-2)/(t*(e-2)*(e-2)*(e-4))}}),_.extend(_.cauchy,{pdf:function(t,e,n){return n<0?0:n/(x.pow(t-e,2)+x.pow(n,2))/x.PI},cdf:function(t,e,n){return x.atan((t-e)/n)/x.PI+.5},inv:function(t,e,n){return e+n*x.tan(x.PI*(t-.5))},median:function(t){return t},mode:function(t){return t},sample:function(t,e){return _.randn()*x.sqrt(1/(2*_.randg(.5)))*e+t}}),_.extend(_.chisquare,{pdf:function(t,e){return t<0?0:0===t&&2===e?.5:x.exp((e/2-1)*x.log(t)-t/2-e/2*x.log(2)-_.gammaln(e/2))},cdf:function(t,e){return t<0?0:_.lowRegGamma(e/2,t/2)},inv:function(t,e){return 2*_.gammapinv(t,.5*e)},mean:function(t){return t},median:function(t){return t*x.pow(1-2/(9*t),3)},mode:function(t){return 0<t-2?t-2:0},sample:function(t){return 2*_.randg(t/2)},variance:function(t){return 2*t}}),_.extend(_.exponential,{pdf:function(t,e){return t<0?0:e*x.exp(-e*t)},cdf:function(t,e){return t<0?0:1-x.exp(-e*t)},inv:function(t,e){return-x.log(1-t)/e},mean:function(t){return 1/t},median:function(t){return 1/t*x.log(2)},mode:function(){return 0},sample:function(t){return-1/t*x.log(_._random_fn())},variance:function(t){return x.pow(t,-2)}}),_.extend(_.gamma,{pdf:function(t,e,n){return t<0?0:0===t&&1===e?1/n:x.exp((e-1)*x.log(t)-t/n-_.gammaln(e)-e*x.log(n))},cdf:function(t,e,n){return t<0?0:_.lowRegGamma(e,t/n)},inv:function(t,e,n){return _.gammapinv(t,e)*n},mean:function(t,e){return t*e},mode:function(t,e){if(1<t)return(t-1)*e},sample:function(t,e){return _.randg(t)*e},variance:function(t,e){return t*e*e}}),_.extend(_.invgamma,{pdf:function(t,e,n){return t<=0?0:x.exp(-(e+1)*x.log(t)-n/t-_.gammaln(e)+e*x.log(n))},cdf:function(t,e,n){return t<=0?0:1-_.lowRegGamma(e,n/t)},inv:function(t,e,n){return n/_.gammapinv(1-t,e)},mean:function(t,e){return 1<t?e/(t-1):void 0},mode:function(t,e){return e/(t+1)},sample:function(t,e){return e/_.randg(t)},variance:function(t,e){if(!(t<=2))return e*e/((t-1)*(t-1)*(t-2))}}),_.extend(_.kumaraswamy,{pdf:function(t,e,n){return 0===t&&1===e?n:1===t&&1===n?e:x.exp(x.log(e)+x.log(n)+(e-1)*x.log(t)+(n-1)*x.log(1-x.pow(t,e)))},cdf:function(t,e,n){return t<0?0:1<t?1:1-x.pow(1-x.pow(t,e),n)},inv:function(t,e,n){return x.pow(1-x.pow(1-t,1/n),1/e)},mean:function(t,e){return e*_.gammafn(1+1/t)*_.gammafn(e)/_.gammafn(1+1/t+e)},median:function(t,e){return x.pow(1-x.pow(2,-1/e),1/t)},mode:function(t,e){if(1<=t&&1<=e&&1!==t&&1!==e)return x.pow((t-1)/(t*e-1),1/t)},variance:function(){throw new Error(\"variance not yet implemented\")}}),_.extend(_.lognormal,{pdf:function(t,e,n){return t<=0?0:x.exp(-x.log(t)-.5*x.log(2*x.PI)-x.log(n)-x.pow(x.log(t)-e,2)/(2*n*n))},cdf:function(t,e,n){return t<0?0:.5+.5*_.erf((x.log(t)-e)/x.sqrt(2*n*n))},inv:function(t,e,n){return x.exp(-1.4142135623730951*n*_.erfcinv(2*t)+e)},mean:function(t,e){return x.exp(t+e*e/2)},median:function(t){return x.exp(t)},mode:function(t,e){return x.exp(t-e*e)},sample:function(t,e){return x.exp(_.randn()*e+t)},variance:function(t,e){return(x.exp(e*e)-1)*x.exp(2*t+e*e)}}),_.extend(_.noncentralt,{pdf:function(t,e,n){return x.abs(n)<1e-14?_.studentt.pdf(t,e):x.abs(t)<1e-14?x.exp(_.gammaln((e+1)/2)-n*n/2-.5*x.log(x.PI*e)-_.gammaln(e/2)):e/t*(_.noncentralt.cdf(t*x.sqrt(1+2/e),e+2,n)-_.noncentralt.cdf(t,e,n))},cdf:function(t,e,n){if(x.abs(n)<1e-14)return _.studentt.cdf(t,e);var r=!1;t<0&&(r=!0,n=-n);for(var i=_.normal.cdf(-n,0,1),o=1e-14+1,s=o,a=t*t/(t*t+e),u=0,c=x.exp(-n*n/2),l=x.exp(-n*n/2-.5*x.log(2)-_.gammaln(1.5))*n;u<200||1e-14<s||1e-14<o;)s=o,0<u&&(c*=n*n/(2*u),l*=n*n/(2*(u+.5))),i+=.5*(o=c*_.beta.cdf(a,u+.5,e/2)+l*_.beta.cdf(a,u+1,e/2)),u++;return r?1-i:i}}),_.extend(_.normal,{pdf:function(t,e,n){return x.exp(-.5*x.log(2*x.PI)-x.log(n)-x.pow(t-e,2)/(2*n*n))},cdf:function(t,e,n){return.5*(1+_.erf((t-e)/x.sqrt(2*n*n)))},inv:function(t,e,n){return-1.4142135623730951*n*_.erfcinv(2*t)+e},mean:function(t){return t},median:function(t){return t},mode:function(t){return t},sample:function(t,e){return _.randn()*e+t},variance:function(t,e){return e*e}}),_.extend(_.pareto,{pdf:function(t,e,n){return t<e?0:n*x.pow(e,n)/x.pow(t,n+1)},cdf:function(t,e,n){return t<e?0:1-x.pow(e/t,n)},inv:function(t,e,n){return e/x.pow(1-t,1/n)},mean:function(t,e){if(!(e<=1))return e*x.pow(t,e)/(e-1)},median:function(t,e){return t*(e*x.SQRT2)},mode:function(t){return t},variance:function(t,e){if(!(e<=2))return t*t*e/(x.pow(e-1,2)*(e-2))}}),_.extend(_.studentt,{pdf:function(t,e){return e=1e100<e?1e100:e,1/(x.sqrt(e)*_.betafn(.5,e/2))*x.pow(1+t*t/e,-(e+1)/2)},cdf:function(t,e){var n=e/2;return _.ibeta((t+x.sqrt(t*t+e))/(2*x.sqrt(t*t+e)),n,n)},inv:function(t,e){var n=_.ibetainv(2*x.min(t,1-t),.5*e,.5),n=x.sqrt(e*(1-n)/n);return.5<t?n:-n},mean:function(t){return 1<t?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(t){return _.randn()*x.sqrt(t/(2*_.randg(t/2)))},variance:function(t){return 2<t?t/(t-2):1<t?1/0:void 0}}),_.extend(_.weibull,{pdf:function(t,e,n){return t<0||e<0||n<0?0:n/e*x.pow(t/e,n-1)*x.exp(-x.pow(t/e,n))},cdf:function(t,e,n){return t<0?0:1-x.exp(-x.pow(t/e,n))},inv:function(t,e,n){return e*x.pow(-x.log(1-t),1/n)},mean:function(t,e){return t*_.gammafn(1+1/e)},median:function(t,e){return t*x.pow(x.log(2),1/e)},mode:function(t,e){return e<=1?0:t*x.pow((e-1)/e,1/e)},sample:function(t,e){return t*x.pow(-x.log(_._random_fn()),1/e)},variance:function(t,e){return t*t*_.gammafn(1+2/e)-x.pow(_.weibull.mean(t,e),2)}}),_.extend(_.uniform,{pdf:function(t,e,n){return t<e||n<t?0:1/(n-e)},cdf:function(t,e,n){return t<e?0:t<n?(t-e)/(n-e):1},inv:function(t,e,n){return e+t*(n-e)},mean:function(t,e){return.5*(t+e)},median:function(t,e){return _.mean(t,e)},mode:function(){throw new Error(\"mode is not yet implemented\")},sample:function(t,e){return t/2+e/2+(e/2-t/2)*(2*_._random_fn()-1)},variance:function(t,e){return x.pow(e-t,2)/12}}),_.extend(_.binomial,{pdf:function(t,e,n){return 0===n||1===n?e*n===t?1:0:_.combination(e,t)*x.pow(n,t)*x.pow(1-n,e-t)},cdf:function(t,e,n){if(t<0)return 0;if(e<=t)return 1;if(n<0||1<n||e<=0)return NaN;var r=n,i=(t=x.floor(t))+1,n=e-t,e=i+n,t=x.exp(_.gammaln(e)-_.gammaln(n)-_.gammaln(i)+i*x.log(r)+n*x.log(1-r)),i=r<(i+1)/(e+2)?t*o(r,i,n,1e-10):1-t*o(1-r,n,i,1e-10);return x.round(1e10*(1-i))/1e10}}),_.extend(_.negbin,{pdf:function(t,e,n){return t===t>>>0&&(t<0?0:_.combination(t+e-1,e-1)*x.pow(1-n,t)*x.pow(n,e))},cdf:function(t,e,n){var r=0,i=0;if(t<0)return 0;for(;i<=t;i++)r+=_.negbin.pdf(i,e,n);return r}}),_.extend(_.hypgeom,{pdf:function(t,e,n,r){if(t!=t|0)return!1;if(t<0||t<n-(e-r))return 0;if(r<t||n<t)return 0;if(e<2*n)return e<2*r?_.hypgeom.pdf(e-n-r+t,e,e-n,e-r):_.hypgeom.pdf(r-t,e,e-n,r);if(e<2*r)return _.hypgeom.pdf(n-t,e,n,e-r);if(n<r)return _.hypgeom.pdf(t,e,r,n);for(var i=1,o=0,s=0;s<t;s++){for(;1<i&&o<r;)i*=1-n/(e-o),o++;i*=(r-s)*(n-s)/((s+1)*(e-n-r+s+1))}for(;o<r;o++)i*=1-n/(e-o);return x.min(1,x.max(0,i))},cdf:function(t,e,n,r){if(t<0||t<n-(e-r))return 0;if(r<=t||n<=t)return 1;if(e<2*n)return e<2*r?_.hypgeom.cdf(e-n-r+t,e,e-n,e-r):1-_.hypgeom.cdf(r-t-1,e,e-n,r);if(e<2*r)return 1-_.hypgeom.cdf(n-t-1,e,n,e-r);if(n<r)return _.hypgeom.cdf(t,e,r,n);for(var i=1,o=1,s=0,a=0;a<t;a++){for(;1<i&&s<r;){var u=1-n/(e-s);o*=u,i*=u,s++}i+=o*=(r-a)*(n-a)/((a+1)*(e-n-r+a+1))}for(;s<r;s++)i*=1-n/(e-s);return x.min(1,x.max(0,i))}}),_.extend(_.poisson,{pdf:function(t,e){return e<0||t%1!=0||t<0?0:x.pow(e,t)*x.exp(-e)/_.factorial(t)},cdf:function(t,e){var n=[],r=0;if(t<0)return 0;for(;r<=t;r++)n.push(_.poisson.pdf(r,e));return _.sum(n)},mean:function(t){return t},variance:function(t){return t},sampleSmall:function(t){for(var e=1,n=0,r=x.exp(-t);n++,e*=_._random_fn(),r<e;);return n-1},sampleLarge:function(t){for(var e,n,r,i=t,t=x.sqrt(i),o=x.log(i),s=.931+2.53*t,a=.02483*s-.059,u=1.1239+1.1328/(s-3.4),c=.9277-3.6224/(s-2);;){if(e=x.random()-.5,n=x.random(),r=.5-x.abs(e),e=x.floor((2*a/r+s)*e+i+.43),.07<=r&&n<=c)return e;if(!(e<0||r<.013&&r<n)&&x.log(n)+x.log(u)-x.log(a/(r*r)+s)<=e*o-i-_.loggam(e+1))return e}},sample:function(t){return t<10?this.sampleSmall(t):this.sampleLarge(t)}}),_.extend(_.triangular,{pdf:function(t,e,n,r){return n<=e||r<e||n<r?NaN:t<e||n<t?0:t<r?2*(t-e)/((n-e)*(r-e)):t===r?2/(n-e):2*(n-t)/((n-e)*(n-r))},cdf:function(t,e,n,r){return n<=e||r<e||n<r?NaN:t<=e?0:n<=t?1:t<=r?x.pow(t-e,2)/((n-e)*(r-e)):1-x.pow(n-t,2)/((n-e)*(n-r))},inv:function(t,e,n,r){return n<=e||r<e||n<r?NaN:t<=(r-e)/(n-e)?e+(n-e)*x.sqrt(t*((r-e)/(n-e))):e+(n-e)*(1-x.sqrt((1-t)*(1-(r-e)/(n-e))))},mean:function(t,e,n){return(t+e+n)/3},median:function(t,e,n){return n<=(t+e)/2?e-x.sqrt((e-t)*(e-n))/x.sqrt(2):(t+e)/2<n?t+x.sqrt((e-t)*(n-t))/x.sqrt(2):void 0},mode:function(t,e,n){return n},sample:function(t,e,n){var r=_._random_fn();return r<(n-t)/(e-t)?t+x.sqrt(r*(e-t)*(n-t)):e-x.sqrt((1-r)*(e-t)*(e-n))},variance:function(t,e,n){return(t*t+e*e+n*n-t*e-t*n-e*n)/18}}),_.extend(_.arcsine,{pdf:function(t,e,n){return n<=e?NaN:t<=e||n<=t?0:2/x.PI*x.pow(x.pow(n-e,2)-x.pow(2*t-e-n,2),-.5)},cdf:function(t,e,n){return t<e?0:t<n?2/x.PI*x.asin(x.sqrt((t-e)/(n-e))):1},inv:function(t,e,n){return e+(.5-.5*x.cos(x.PI*t))*(n-e)},mean:function(t,e){return e<=t?NaN:(t+e)/2},median:function(t,e){return e<=t?NaN:(t+e)/2},mode:function(){throw new Error(\"mode is not yet implemented\")},sample:function(t,e){return(t+e)/2+(e-t)/2*x.sin(2*x.PI*_.uniform.sample(0,1))},variance:function(t,e){return e<=t?NaN:x.pow(e-t,2)/8}}),_.extend(_.laplace,{pdf:function(t,e,n){return n<=0?0:x.exp(-x.abs(t-e)/n)/(2*n)},cdf:function(t,e,n){return n<=0?0:t<e?.5*x.exp((t-e)/n):1-.5*x.exp(-(t-e)/n)},mean:function(t){return t},median:function(t){return t},mode:function(t){return t},variance:function(t,e){return 2*e*e},sample:function(t,e){var n=_._random_fn()-.5;return t-e*((e=n)/x.abs(e))*x.log(1-2*x.abs(n))}}),_.extend(_.tukey,{cdf:function(t,e,n){var r=e,i=[.9894009349916499,.9445750230732326,.8656312023878318,.755404408355003,.6178762444026438,.45801677765722737,.2816035507792589,.09501250983763744],o=[.027152459411754096,.062253523938647894,.09515851168249279,.12462897125553388,.14959598881657674,.16915651939500254,.18260341504492358,.1894506104550685];if(t<=0)return 0;if(n<2||r<2)return NaN;if(!Number.isFinite(t))return 1;if(25e3<n)return v(t,1,r);var e=.5*n,s=e*x.log(n)-n*x.log(2)-_.gammaln(e),a=e-1,u=.25*n,c=n<=100?1:n<=800?.5:n<=5e3?.25:.125;s+=x.log(c);for(var l=0,h=1;h<=50;h++){for(var f=0,p=(2*h-1)*c,d=1;d<=16;d++){var g,m=8<d?(g=d-8-1,s+a*x.log(p+i[g]*c)-(i[g]*c+p)*u):(g=d-1,s+a*x.log(p-i[g]*c)+(i[g]*c-p)*u);-30<=m&&(f+=v(8<d?t*x.sqrt(.5*(i[g]*c+p)):t*x.sqrt(.5*(-i[g]*c+p)),1,r)*o[g]*x.exp(m))}if(1<=h*c&&f<=1e-14)break;l+=f}if(1e-14<f)throw new Error(\"tukey.cdf failed to converge\");return 1<l&&(l=1),l},inv:function(t,e,n){if(n<2||e<2)return NaN;if(t<0||1<t)return NaN;if(0===t)return 0;if(1===t)return 1/0;for(var r,i,o,s,a=(i=e,o=n,s=.5-.5*(r=t),s=(r=x.sqrt(x.log(1/(s*s))))+((((-453642210148e-16*r-.204231210125)*r-.342242088547)*r-1)*r+.322232421088)/((((.0038560700634*r+.10353775285)*r+.531103462366)*r+.588581570495)*r+.099348462606),o<120&&(s+=(s*s*s+s)/o/4),r=.8832-.2368*s,o<120&&(r+=-1.214/o+1.208*s/o),s*(r*x.log(i-1)+1.4142)),u=0<(f=_.tukey.cdf(a,e,n)-t)?x.max(0,a-1):a+1,c=_.tukey.cdf(u,e,n)-t,l=1;l<50;l++){var h=u-c*(u-a)/(c-f),f=c,a=u;if(h<0&&(h=0,c=-t),c=_.tukey.cdf(h,e,n)-t,u=h,x.abs(u-a)<1e-4)return h}throw new Error(\"tukey.inv failed to converge\")}}),m=f,g=Math,i=Array.prototype.push,e=m.utils.isArray,m.extend({add:function(t,r){return y(r)?(y(r[0])||(r=[r]),m.map(t,function(t,e,n){return t+r[e][n]})):m.map(t,function(t){return t+r})},subtract:function(t,r){return y(r)?(y(r[0])||(r=[r]),m.map(t,function(t,e,n){return t-r[e][n]||0})):m.map(t,function(t){return t-r})},divide:function(t,e){return y(e)?(y(e[0])||(e=[e]),m.multiply(t,m.inv(e))):m.map(t,function(t){return t/e})},multiply:function(t,e){var n,r,i,o,s,a,u,c;if(void 0===t.length&&void 0===e.length)return t*e;if(s=t.length,a=t[0].length,u=m.zeros(s,i=y(e)?e[0].length:a),c=0,y(e)){for(;c<i;c++)for(n=0;n<s;n++){for(r=o=0;r<a;r++)o+=t[n][r]*e[r][c];u[n][c]=o}return 1===s&&1===c?u[0][0]:u}return m.map(t,function(t){return t*e})},outer:function(t,e){return m.multiply(t.map(function(t){return[t]}),[e])},dot:function(t,e){y(t[0])||(t=[t]),y(e[0])||(e=[e]);for(var n,r,i=1===t[0].length&&1!==t.length?m.transpose(t):t,o=1===e[0].length&&1!==e.length?m.transpose(e):e,s=[],a=0,u=i.length,c=i[0].length;a<u;a++){for(s[a]=[],r=n=0;r<c;r++)n+=i[a][r]*o[a][r];s[a]=n}return 1===s.length?s[0]:s},pow:function(t,e){return m.map(t,function(t){return g.pow(t,e)})},exp:function(t){return m.map(t,function(t){return g.exp(t)})},log:function(t){return m.map(t,function(t){return g.log(t)})},abs:function(t){return m.map(t,function(t){return g.abs(t)})},norm:function(t,e){var n=0,r=0;for(isNaN(e)&&(e=2),y(t[0])&&(t=t[0]);r<t.length;r++)n+=g.pow(g.abs(t[r]),e);return g.pow(n,1/e)},angle:function(t,e){return g.acos(m.dot(t,e)/(m.norm(t)*m.norm(e)))},aug:function(t,e){for(var n=[],r=0;r<t.length;r++)n.push(t[r].slice());for(r=0;r<n.length;r++)i.apply(n[r],e[r]);return n},inv:function(t){for(var e,n=t.length,r=t[0].length,i=m.identity(n,r),o=m.gauss_jordan(t,i),s=[],a=0;a<n;a++)for(s[a]=[],e=r;e<o[0].length;e++)s[a][e-r]=o[a][e];return s},det:function(t){var e,n=t.length,r=2*n,i=new Array(r),o=n-1,s=r-1,a=o-n+1,u=s,c=0,l=0;if(2===n)return t[0][0]*t[1][1]-t[0][1]*t[1][0];for(;c<r;c++)i[c]=1;for(c=0;c<n;c++){for(e=0;e<n;e++)i[a<0?a+n:a]*=t[c][e],i[u<n?u+n:u]*=t[c][e],a++,u--;a=--o-n+1,u=--s}for(c=0;c<n;c++)l+=i[c];for(;c<r;c++)l-=i[c];return l},gauss_elimination:function(t,e){for(var n,r,i,o,s=0,a=0,u=t.length,c=t[0].length,l=0,h=[],f=(t=m.aug(t,e))[0].length,s=0;s<u;s++){for(r=t[s][s],o=(a=s)+1;o<c;o++)r<g.abs(t[o][s])&&(r=t[o][s],a=o);if(a!=s)for(o=0;o<f;o++)i=t[s][o],t[s][o]=t[a][o],t[a][o]=i;for(a=s+1;a<u;a++)for(n=t[a][s]/t[s][s],o=s;o<f;o++)t[a][o]=t[a][o]-n*t[s][o]}for(s=u-1;0<=s;s--){for(l=0,a=s+1;a<=u-1;a++)l+=h[a]*t[s][a];h[s]=(t[s][f-1]-l)/t[s][s]}return h},gauss_jordan:function(t,e){for(var n,r=m.aug(t,e),i=r.length,o=r[0].length,s=0,a=0;a<i;a++){for(var u=a,c=a+1;c<i;c++)g.abs(r[c][a])>g.abs(r[u][a])&&(u=c);var l=r[a];for(r[a]=r[u],r[u]=l,c=a+1;c<i;c++)for(s=r[c][a]/r[a][a],n=a;n<o;n++)r[c][n]-=r[a][n]*s}for(a=i-1;0<=a;a--){for(s=r[a][a],c=0;c<a;c++)for(n=o-1;a-1<n;n--)r[c][n]-=r[a][n]*r[c][a]/s;for(r[a][a]/=s,n=i;n<o;n++)r[a][n]/=s}return r},triaUpSolve:function(n,t){var r,i=n[0].length,o=m.zeros(1,i)[0],e=!1;return null!=t[0].length&&(t=t.map(function(t){return t[0]}),e=!0),m.arange(i-1,-1,-1).forEach(function(e){r=m.arange(e+1,i).map(function(t){return o[t]*n[e][t]}),o[e]=(t[e]-m.sum(r))/n[e][e]}),e?o.map(function(t){return[t]}):o},triaLowSolve:function(n,t){var r,e=n[0].length,i=m.zeros(1,e)[0],o=!1;return null!=t[0].length&&(t=t.map(function(t){return t[0]}),o=!0),m.arange(e).forEach(function(e){r=m.arange(e).map(function(t){return n[e][t]*i[t]}),i[e]=(t[e]-m.sum(r))/n[e][e]}),o?i.map(function(t){return[t]}):i},lu:function(r){var t,e=r.length,i=m.identity(e),o=m.zeros(r.length,r[0].length);return m.arange(e).forEach(function(t){o[0][t]=r[0][t]}),m.arange(1,e).forEach(function(n){m.arange(n).forEach(function(e){t=m.arange(e).map(function(t){return i[n][t]*o[t][e]}),i[n][e]=(r[n][e]-m.sum(t))/o[e][e]}),m.arange(n,e).forEach(function(e){t=m.arange(n).map(function(t){return i[n][t]*o[t][e]}),o[n][e]=r[t.length][e]-m.sum(t)})}),[i,o]},cholesky:function(t){var r,e=t.length,i=m.zeros(t.length,t[0].length);return m.arange(e).forEach(function(n){r=m.arange(n).map(function(t){return g.pow(i[n][t],2)}),i[n][n]=g.sqrt(t[n][n]-m.sum(r)),m.arange(n+1,e).forEach(function(e){r=m.arange(n).map(function(t){return i[n][t]*i[e][t]}),i[e][n]=(t[n][e]-m.sum(r))/i[n][n]})}),i},gauss_jacobi:function(t,e,n,r){for(var i,o,s,a,u=0,c=0,l=t.length,h=[],f=[],p=[];u<l;u++)for(h[u]=[],f[u]=[],p[u]=[],c=0;c<l;c++)c<u?(h[u][c]=t[u][c],f[u][c]=p[u][c]=0):u<c?(f[u][c]=t[u][c],h[u][c]=p[u][c]=0):(p[u][c]=t[u][c],h[u][c]=f[u][c]=0);for(s=m.multiply(m.multiply(m.inv(p),m.add(h,f)),-1),o=m.multiply(m.inv(p),e),i=n,a=m.add(m.multiply(s,n),o),u=2;g.abs(m.norm(m.subtract(a,i)))>r;)i=a,a=m.add(m.multiply(s,i),o),u++;return a},gauss_seidel:function(t,e,n,r){for(var i,o,s,a,u,c=0,l=t.length,h=[],f=[],p=[];c<l;c++)for(h[c]=[],f[c]=[],p[c]=[],i=0;i<l;i++)i<c?(h[c][i]=t[c][i],f[c][i]=p[c][i]=0):c<i?(f[c][i]=t[c][i],h[c][i]=p[c][i]=0):(p[c][i]=t[c][i],h[c][i]=f[c][i]=0);for(a=m.multiply(m.multiply(m.inv(m.add(p,h)),f),-1),s=m.multiply(m.inv(m.add(p,h)),e),o=n,u=m.add(m.multiply(a,n),s),c=2;g.abs(m.norm(m.subtract(u,o)))>r;)o=u,u=m.add(m.multiply(a,o),s),c+=1;return u},SOR:function(t,e,n,r,i){for(var o,s,a,u,c,l=0,h=t.length,f=[],p=[],d=[];l<h;l++)for(f[l]=[],p[l]=[],d[l]=[],o=0;o<h;o++)o<l?(f[l][o]=t[l][o],p[l][o]=d[l][o]=0):l<o?(p[l][o]=t[l][o],f[l][o]=d[l][o]=0):(d[l][o]=t[l][o],f[l][o]=p[l][o]=0);for(u=m.multiply(m.inv(m.add(d,m.multiply(f,i))),m.subtract(m.multiply(d,1-i),m.multiply(p,i))),a=m.multiply(m.multiply(m.inv(m.add(d,m.multiply(f,i))),e),i),s=n,c=m.add(m.multiply(u,n),a),l=2;g.abs(m.norm(m.subtract(c,s)))>r;)s=c,c=m.add(m.multiply(u,s),a),l++;return c},householder:function(t){for(var e,n,r,i,o,s=t.length,a=t[0].length,u=0,c=[];u<s-1;u++){for(n=0,o=u+1;o<a;o++)n+=t[o][u]*t[o][u];for(n=(0<t[u+1][u]?-1:1)*g.sqrt(n),r=g.sqrt((n*n-t[u+1][u]*n)/2),(c=m.zeros(s,1))[u+1][0]=(t[u+1][u]-n)/(2*r),i=u+2;i<s;i++)c[i][0]=t[i][u]/(2*r);e=m.subtract(m.identity(s,a),m.multiply(m.multiply(c,m.transpose(c)),2)),t=m.multiply(e,m.multiply(t,e))}return t},QR:(a=m.sum,u=m.arange,function(e){var t,n,r,i=e.length,o=e[0].length,s=m.zeros(o,o);for(e=m.copy(e),n=0;n<o;n++){for(s[n][n]=g.sqrt(a(u(i).map(function(t){return e[t][n]*e[t][n]}))),t=0;t<i;t++)e[t][n]=e[t][n]/s[n][n];for(r=n+1;r<o;r++)for(s[n][r]=a(u(i).map(function(t){return e[t][n]*e[t][r]})),t=0;t<i;t++)e[t][r]=e[t][r]-e[t][n]*s[n][r]}return[e,s]}),lstsq:function(t,e){var n=!1;void 0===e[0].length&&(e=e.map(function(t){return[t]}),n=!0);var o,s,r=(i=m.QR(t))[0],i=i[1],t=t[0].length,r=m.slice(r,{col:{end:t}}),t=m.slice(i,{row:{end:t}}),t=(o=t,t=(o=m.copy(o)).length,s=m.identity(t),m.arange(t-1,-1,-1).forEach(function(i){m.sliceAssign(s,{row:i},m.divide(m.slice(s,{row:i}),o[i][i])),m.sliceAssign(o,{row:i},m.divide(m.slice(o,{row:i}),o[i][i])),m.arange(i).forEach(function(t){var e=m.multiply(o[t][i],-1),n=m.slice(o,{row:t}),r=m.multiply(m.slice(o,{row:i}),e);m.sliceAssign(o,{row:t},m.add(n,r));r=m.slice(s,{row:t}),e=m.multiply(m.slice(s,{row:i}),e);m.sliceAssign(s,{row:t},m.add(r,e))})}),s);return void 0===(r=m.transpose(r))[0].length&&(r=[r]),void 0===(e=m.multiply(m.multiply(t,r),e)).length&&(e=[[e]]),n?e.map(function(t){return t[0]}):e},jacobi:function(t){for(var e,n,r,i,o,s,a,u=1,c=t.length,l=m.identity(c,c),h=[];1===u;){for(o=t[0][1],i=1,e=r=0;e<c;e++)for(n=0;n<c;n++)e!=n&&o<g.abs(t[e][n])&&(o=g.abs(t[e][n]),r=e,i=n);for(s=t[r][r]===t[i][i]?0<t[r][i]?g.PI/4:-g.PI/4:g.atan(2*t[r][i]/(t[r][r]-t[i][i]))/2,(a=m.identity(c,c))[r][r]=g.cos(s),a[r][i]=-g.sin(s),a[i][r]=g.sin(s),a[i][i]=g.cos(s),l=m.multiply(l,a),t=m.multiply(m.multiply(m.inv(a),t),a),u=0,e=1;e<c;e++)for(n=1;n<c;n++)e!=n&&.001<g.abs(t[e][n])&&(u=1)}for(e=0;e<c;e++)h.push(t[e][e]);return[l,h]},rungekutta:function(t,e,n,r,i,o){var s,a,u;if(2===o)for(;r<=n;)i=i+((s=e*t(r,i))+(a=e*t(r+e,i+s)))/2,r+=e;if(4===o)for(;r<=n;)i=i+((s=e*t(r,i))+2*(a=e*t(r+e/2,i+s/2))+2*(u=e*t(r+e/2,i+a/2))+e*t(r+e,i+u))/6,r+=e;return i},romberg:function(t,e,n,r){for(var i,o,s,a,u,c=0,l=(n-e)/2,h=[],f=[],p=[];c<r/2;){for(u=t(e),s=e,a=0;s<=n;s+=l,a++)h[a]=s;for(i=h.length,s=1;s<i-1;s++)u+=(s%2!=0?4:2)*t(h[s]);u=l/3*(u+t(n)),p[c]=u,l/=2,c++}for(o=p.length,i=1;1!==o;){for(s=0;s<o-1;s++)f[s]=(g.pow(4,i)*p[s+1]-p[s])/(g.pow(4,i)-1);o=f.length,p=f,f=[],i++}return p},richardson:function(t,e,n,r){function i(t,e){for(var n,r=0,i=t.length;r<i;r++)t[r]===e&&(n=r);return n}for(var o,s,a,u,c,l=g.abs(n-t[i(t,n)+1]),h=0,f=[],p=[];l<=r;)o=i(t,n+r),s=i(t,n),f[h]=(e[o]-2*e[s]+e[2*s-o])/(r*r),r/=2,h++;for(u=f.length,a=1;1!=u;){for(c=0;c<u-1;c++)p[c]=(g.pow(4,a)*f[c+1]-f[c])/(g.pow(4,a)-1);u=p.length,f=p,p=[],a++}return f},simpson:function(t,e,n,r){for(var i,o=(n-e)/r,s=t(e),a=[],u=e,c=0,l=1;u<=n;u+=o,c++)a[c]=u;for(i=a.length;l<i-1;l++)s+=(l%2!=0?4:2)*t(a[l]);return o/3*(s+t(n))},hermite:function(t,e,n,r){for(var i,o=t.length,s=0,a=0,u=[],c=[],l=[],h=[];a<o;a++){for(u[a]=1,i=0;i<o;i++)a!=i&&(u[a]*=(r-t[i])/(t[a]-t[i]));for(i=c[a]=0;i<o;i++)a!=i&&(c[a]+=1/(t[a]-t[i]));l[a]=(1-2*(r-t[a])*c[a])*(u[a]*u[a]),h[a]=(r-t[a])*(u[a]*u[a]),s+=l[a]*e[a]+h[a]*n[a]}return s},lagrange:function(t,e,n){for(var r,i,o=0,s=0,a=t.length;s<a;s++){for(i=e[s],r=0;r<a;r++)s!=r&&(i*=(n-t[r])/(t[s]-t[r]));o+=i}return o},cubic_spline:function(t,e,n){for(var r,i,o=t.length,s=0,a=[],u=[],c=[],l=[],h=[],f=[];s<o-1;s++)l[s]=t[s+1]-t[s];for(c[0]=0,s=1;s<o-1;s++)c[s]=3/l[s]*(e[s+1]-e[s])-3/l[s-1]*(e[s]-e[s-1]);for(s=1;s<o-1;s++)a[s]=[],u[s]=[],a[s][s-1]=l[s-1],a[s][s]=2*(l[s-1]+l[s]),a[s][s+1]=l[s],u[s][0]=c[s];for(i=m.multiply(m.inv(a),u),r=0;r<o-1;r++)h[r]=(e[r+1]-e[r])/l[r]-l[r]*(i[r+1][0]+2*i[r][0])/3,f[r]=(i[r+1][0]-i[r][0])/(3*l[r]);for(r=0;r<o&&!(t[r]>n);r++);return e[--r]+(n-t[r])*h[r]+m.sq(n-t[r])*i[r]+(n-t[r])*m.sq(n-t[r])*f[r]},gauss_quadrature:function(){throw new Error(\"gauss_quadrature not yet implemented\")},PCA:function(t){for(var e,n,r,i,o,s,a=t.length,u=t[0].length,c=0,l=[],h=[],f=[],p=[],d=[],g=[],c=0;c<a;c++)l[c]=m.sum(t[c])/u;for(c=0;c<u;c++)for(p[c]=[],e=0;e<a;e++)p[c][e]=t[e][c]-l[e];for(p=m.transpose(p),c=0;c<a;c++)for(d[c]=[],e=0;e<a;e++)d[c][e]=m.dot([p[c]],[p[e]])/(u-1);for(s=(r=m.jacobi(d))[0],h=r[1],g=m.transpose(s),c=0;c<h.length;c++)for(e=c;e<h.length;e++)h[c]<h[e]&&(n=h[c],h[c]=h[e],h[e]=n,i=g[c],g[c]=g[e],g[e]=i);for(o=m.transpose(p),c=0;c<a;c++)for(f[c]=[],e=0;e<o.length;e++)f[c][e]=m.dot([g[c]],[o[e]]);return[t,h,g,f]}}),function(t){for(var e=0;e<t.length;e++)!function(r){m.fn[r]=function(t,e){var n=this;return e?(setTimeout(function(){e.call(n,m.fn[r].call(n,t))},15),this):\"number\"==typeof m[r](this,t)?m[r](this,t):m(m[r](this,t))}}(t[e])}(\"add divide multiply subtract dot pow exp log abs norm angle\".split(\" \")),c=f,l=Math,h=[].slice,s=c.utils.isNumber,n=c.utils.isArray,c.extend({zscore:function(){var t=h.call(arguments);return s(t[1])?(t[0]-t[1])/t[2]:(t[0]-c.mean(t[1]))/c.stdev(t[1],t[2])},ztest:function(){var t,e=h.call(arguments);return n(e[1])?(t=c.zscore(e[0],e[1],e[3]),1===e[2]?c.normal.cdf(-l.abs(t),0,1):2*c.normal.cdf(-l.abs(t),0,1)):2<e.length?(t=c.zscore(e[0],e[1],e[2]),1===e[3]?c.normal.cdf(-l.abs(t),0,1):2*c.normal.cdf(-l.abs(t),0,1)):(t=e[0],1===e[1]?c.normal.cdf(-l.abs(t),0,1):2*c.normal.cdf(-l.abs(t),0,1))}}),c.extend(c.fn,{zscore:function(t,e){return(t-this.mean())/this.stdev(e)},ztest:function(t,e,n){n=l.abs(this.zscore(t,n));return 1===e?c.normal.cdf(-n,0,1):2*c.normal.cdf(-n,0,1)}}),c.extend({tscore:function(){var t=h.call(arguments);return 4===t.length?(t[0]-t[1])/(t[2]/l.sqrt(t[3])):(t[0]-c.mean(t[1]))/(c.stdev(t[1],!0)/l.sqrt(t[1].length))},ttest:function(){var t,e=h.call(arguments);return 5===e.length?(t=l.abs(c.tscore(e[0],e[1],e[2],e[3])),1===e[4]?c.studentt.cdf(-t,e[3]-1):2*c.studentt.cdf(-t,e[3]-1)):s(e[1])?(t=l.abs(e[0]),1==e[2]?c.studentt.cdf(-t,e[1]-1):2*c.studentt.cdf(-t,e[1]-1)):(t=l.abs(c.tscore(e[0],e[1])),1==e[2]?c.studentt.cdf(-t,e[1].length-1):2*c.studentt.cdf(-t,e[1].length-1))}}),c.extend(c.fn,{tscore:function(t){return(t-this.mean())/(this.stdev(!0)/l.sqrt(this.cols()))},ttest:function(t,e){return 1===e?1-c.studentt.cdf(l.abs(this.tscore(t)),this.cols()-1):2*c.studentt.cdf(-l.abs(this.tscore(t)),this.cols()-1)}}),c.extend({anovafscore:function(){var t,e,n,r,i,o,s,a,u=h.call(arguments);if(1===u.length){for(i=new Array(u[0].length),s=0;s<u[0].length;s++)i[s]=u[0][s];u=i}for(e=new Array,s=0;s<u.length;s++)e=e.concat(u[s]);for(n=c.mean(e),s=t=0;s<u.length;s++)t+=u[s].length*l.pow(c.mean(u[s])-n,2);for(t/=u.length-1,s=o=0;s<u.length;s++)for(r=c.mean(u[s]),a=0;a<u[s].length;a++)o+=l.pow(u[s][a]-r,2);return t/(o/=e.length-u.length)},anovaftest:function(){var t,e=h.call(arguments);if(s(e[0]))return 1-c.centralF.cdf(e[0],e[1],e[2]);for(var n=c.anovafscore(e),r=e.length-1,i=0,o=0;o<e.length;o++)i+=e[o].length;return t=i-r-1,1-c.centralF.cdf(n,r,t)},ftest:function(t,e,n){return 1-c.centralF.cdf(t,e,n)}}),c.extend(c.fn,{anovafscore:function(){return c.anovafscore(this.toArray())},anovaftes:function(){for(var t=0,e=0;e<this.length;e++)t+=this[e].length;return c.ftest(this.anovafscore(),this.length-1,t-this.length)}}),c.extend({qscore:function(){var t,e,n,r,i=h.call(arguments),i=s(i[0])?(t=i[0],e=i[1],n=i[2],r=i[3],i[4]):(t=c.mean(i[0]),e=c.mean(i[1]),n=i[0].length,r=i[1].length,i[2]);return l.abs(t-e)/(i*l.sqrt((1/n+1/r)/2))},qtest:function(){var t,e=h.call(arguments),n=(e=3===e.length?(t=e[0],e.slice(1)):7===e.length?(t=c.qscore(e[0],e[1],e[2],e[3],e[4]),e.slice(5)):(t=c.qscore(e[0],e[1],e[2]),e.slice(3)))[0],e=e[1];return 1-c.tukey.cdf(t,e,n-e)},tukeyhsd:function(t){for(var e=c.pooledstdev(t),n=t.map(function(t){return c.mean(t)}),r=t.reduce(function(t,e){return t+e.length},0),i=[],o=0;o<t.length;++o)for(var s=o+1;s<t.length;++s){var a=c.qtest(n[o],n[s],t[o].length,t[s].length,e,r,t.length);i.push([[o,s],a])}return i}}),c.extend({normalci:function(){var t=h.call(arguments),e=new Array(2),n=4===t.length?l.abs(c.normal.inv(t[1]/2,0,1)*t[2]/l.sqrt(t[3])):l.abs(c.normal.inv(t[1]/2,0,1)*c.stdev(t[2])/l.sqrt(t[2].length));return e[0]=t[0]-n,e[1]=t[0]+n,e},tci:function(){var t=h.call(arguments),e=new Array(2),n=4===t.length?l.abs(c.studentt.inv(t[1]/2,t[3]-1)*t[2]/l.sqrt(t[3])):l.abs(c.studentt.inv(t[1]/2,t[2].length-1)*c.stdev(t[2],!0)/l.sqrt(t[2].length));return e[0]=t[0]-n,e[1]=t[0]+n,e},significant:function(t,e){return t<e}}),c.extend(c.fn,{normalci:function(t,e){return c.normalci(t,e,this.toArray())},tci:function(t,e){return c.tci(t,e,this.toArray())}}),c.extend(c.fn,{oneSidedDifferenceOfProportions:function(t,e,n,r){r=b(t,e,n,r);return c.ztest(r,1)},twoSidedDifferenceOfProportions:function(t,e,n,r){r=b(t,e,n,r);return c.ztest(r,2)}}),f.models={ols:function(t,e){var n=w(t,e),r=C(n),t={F_statistic:t=(i=n).R2/i.df_model/((1-i.R2)/i.df_resid),pvalue:1-(e=t,t=i.df_model,i=i.df_resid,f.beta.cdf(e/(i/t+e),t/2,i/2))},i=1-(1-n.R2)*((n.nobs-1)/n.df_resid);return n.t=r,n.f=t,n.adjust_R2=i,n}},f.extend({buildxmatrix:function(){for(var t=new Array(arguments.length),e=0;e<arguments.length;e++)t[e]=[1].concat(arguments[e]);return f(t)},builddxmatrix:function(t){for(var e=new Array(t.length),n=0;n<t.length;n++)e[n]=[1].concat(t[n]);return f(e)},buildjxmatrix:function(t){for(var e=new Array(t.length),n=0;n<t.length;n++)e[n]=t[n];return f.builddxmatrix(e)},buildymatrix:function(t){return f(t).transpose()},buildjymatrix:function(t){return t.transpose()},matrixmult:function(t,e){var n,r,i,o,s;if(t.cols()==e.rows()){if(1<e.rows()){for(o=[],n=0;n<t.rows();n++)for(o[n]=[],r=0;r<e.cols();r++){for(i=s=0;i<t.cols();i++)s+=t.toArray()[n][i]*e.toArray()[i][r];o[n][r]=s}return f(o)}for(o=[],n=0;n<t.rows();n++)for(o[n]=[],r=0;r<e.cols();r++){for(i=s=0;i<t.cols();i++)s+=t.toArray()[n][i]*e.toArray()[r];o[n][r]=s}return f(o)}},regress:function(t,e){var n=f.xtranspxinv(t),t=t.transpose(),t=f.matrixmult(f(n),t);return f.matrixmult(t,e)},regresst:function(t,e,n){var r=f.regress(t,e),i={anova:{}},o=f.jMatYBar(t,r);i.yBar=o;var s=e.mean();i.anova.residuals=f.residuals(e,o),i.anova.ssr=f.ssr(o,s),i.anova.msr=i.anova.ssr/(t[0].length-1),i.anova.sse=f.sse(e,o),i.anova.mse=i.anova.sse/(e.length-(t[0].length-1)-1),i.anova.sst=f.sst(e,s),i.anova.mst=i.anova.sst/(e.length-1),i.anova.r2=1-i.anova.sse/i.anova.sst,i.anova.r2<0&&(i.anova.r2=0),i.anova.fratio=i.anova.msr/i.anova.mse,i.anova.pvalue=f.anovaftest(i.anova.fratio,t[0].length-1,e.length-(t[0].length-1)-1),i.anova.rmse=Math.sqrt(i.anova.mse),i.anova.r2adj=1-i.anova.mse/i.anova.mst,i.anova.r2adj<0&&(i.anova.r2adj=0),i.stats=new Array(t[0].length);for(var a,u,c,l=f.xtranspxinv(t),h=0;h<r.length;h++)a=Math.sqrt(i.anova.mse*Math.abs(l[h][h])),u=Math.abs(r[h]/a),c=f.ttest(u,e.length-t[0].length-1,n),i.stats[h]=[r[h],a,u,c];return i.regress=r,i},xtranspx:function(t){return f.matrixmult(t.transpose(),t)},xtranspxinv:function(t){t=f.matrixmult(t.transpose(),t);return f.inv(t)},jMatYBar:function(t,e){e=f.matrixmult(t,e);return new f(e)},residuals:function(t,e){return f.matrixsubtract(t,e)},ssr:function(t,e){for(var n=0,r=0;r<t.length;r++)n+=Math.pow(t[r]-e,2);return n},sse:function(t,e){for(var n=0,r=0;r<t.length;r++)n+=Math.pow(t[r]-e[r],2);return n},sst:function(t,e){for(var n=0,r=0;r<t.length;r++)n+=Math.pow(t[r]-e,2);return n},matrixsubtract:function(t,e){for(var n=new Array(t.length),r=0;r<t.length;r++){n[r]=new Array(t[r].length);for(var i=0;i<t[r].length;i++)n[r][i]=t[r][i]-e[r][i]}return f(n)}}),f.jStat=f});var CryptoApi=function(n){var r={};function i(t){if(r[t])return r[t].exports;var e=r[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}return i.m=n,i.c=r,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=29)}([function(t,e,n){\"use strict\";function r(t,e){return t<<e|t>>>32-e|0}function i(t,e){return t>>>e|t<<32-e|0}function o(t,e,n){return 32===n?e:32<n?o(e,t,n-32):4294967295&(t>>>n|e<<32-n)}function s(t,e,n){return 32===n?t:32<n?s(e,t,n-32):4294967295&(e>>>n|t<<32-n)}n.d(e,\"a\",function(){return r}),n.d(e,\"b\",function(){return i}),n.d(e,\"d\",function(){return s}),n.d(e,\"c\",function(){return o})},function(t,e,n){\"use strict\";function r(t){for(var e=\"\",n=0,r=t.length;n<r;n++){var i=t.charCodeAt(n);i<128?e+=String.fromCharCode(i):(i<2048?e+=String.fromCharCode(192|i>>6):(i<55296||57344<=i?e+=String.fromCharCode(224|i>>12):(n++,i=65536+((1023&i)<<10|1023&t.charCodeAt(n)),e+=String.fromCharCode(240|i>>18),e+=String.fromCharCode(128|i>>12&63)),e+=String.fromCharCode(128|i>>6&63)),e+=String.fromCharCode(128|63&i))}return e}n.d(e,\"a\",function(){return r})},function(t,e,n){\"use strict\";function r(t){for(var e=\"\",n=0,r=t.length;n<r;n++)e+=(t.charCodeAt(n)<16?\"0\":\"\")+t.charCodeAt(n).toString(16);return e}n.d(e,\"a\",function(){return r})},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t){return(i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)})(s,n(4).a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(s.prototype,[{key:\"process\",value:function(){for(;this.state.message.length>=this.blockSizeInBytes;){this.blockUnits=[];for(var t=0;t<this.blockSizeInBytes;t+=4)this.blockUnits.push(this.state.message.charCodeAt(t)<<24|this.state.message.charCodeAt(t+1)<<16|this.state.message.charCodeAt(t+2)<<8|this.state.message.charCodeAt(t+3));this.state.message=this.state.message.substr(this.blockSizeInBytes),this.processBlock(this.blockUnits)}}},{key:\"processBlock\",value:function(t){}},{key:\"getStateHash\",value:function(t){t=t||this.state.hash.length;for(var e=\"\",n=0;n<t;n++)e+=String.fromCharCode(this.state.hash[n]>>24&255)+String.fromCharCode(this.state.hash[n]>>16&255)+String.fromCharCode(this.state.hash[n]>>8&255)+String.fromCharCode(255&this.state.hash[n]);return e}},{key:\"addLengthBits\",value:function(){this.state.message+=\"\\0\\0\\0\"+String.fromCharCode(this.state.length>>29&255)+String.fromCharCode(this.state.length>>21&255)+String.fromCharCode(this.state.length>>13&255)+String.fromCharCode(this.state.length>>5&255)+String.fromCharCode(this.state.length<<3&255)}}]),n=s;function s(t){var e;return function(t){if(!(t instanceof s))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=i(s).call(this,t))||\"object\"!==r(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).unitOrder=1,t.blockUnits=[],t}e.a=n},function(t,e,n){\"use strict\";var r=(function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(i.prototype,[{key:\"reset\",value:function(){this.state={},this.state.message=\"\",this.state.length=0}},{key:\"getState\",value:function(){return JSON.parse(JSON.stringify(this.state))}},{key:\"setState\",value:function(t){this.state=t}},{key:\"update\",value:function(t){this.state.message+=t,this.state.length+=t.length,this.process()}},{key:\"process\",value:function(){}},{key:\"finalize\",value:function(){return\"\"}},{key:\"getStateHash\",value:function(t){return\"\"}},{key:\"addPaddingPKCS7\",value:function(t){this.state.message+=new Array(t+1).join(String.fromCharCode(t))}},{key:\"addPaddingISO7816\",value:function(t){this.state.message+=\"\"+new Array(t).join(\"\\0\")}},{key:\"addPaddingZero\",value:function(t){this.state.message+=new Array(t+1).join(\"\\0\")}}]),i);function i(t){!function(t){if(!(t instanceof i))throw new TypeError(\"Cannot call a class as a function\")}(this),this.unitSize=4,this.unitOrder=0,this.blockSize=16,this.blockSizeInBytes=this.blockSize*this.unitSize,this.options=t||{},this.reset()}e.a=r},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t){return(i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)})(s,n(4).a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(s.prototype,[{key:\"process\",value:function(){for(;this.state.message.length>=this.blockSizeInBytes;){this.blockUnits=[];for(var t=0;t<this.blockSizeInBytes;t+=4)this.blockUnits.push(this.state.message.charCodeAt(t)|this.state.message.charCodeAt(t+1)<<8|this.state.message.charCodeAt(t+2)<<16|this.state.message.charCodeAt(t+3)<<24);this.state.message=this.state.message.substr(this.blockSizeInBytes),this.processBlock(this.blockUnits)}}},{key:\"processBlock\",value:function(t){}},{key:\"getStateHash\",value:function(t){t=t||this.state.hash.length;for(var e=\"\",n=0;n<t;n++)e+=String.fromCharCode(255&this.state.hash[n])+String.fromCharCode(this.state.hash[n]>>8&255)+String.fromCharCode(this.state.hash[n]>>16&255)+String.fromCharCode(this.state.hash[n]>>24&255);return e}},{key:\"addLengthBits\",value:function(){this.state.message+=String.fromCharCode(this.state.length<<3&255)+String.fromCharCode(this.state.length>>5&255)+String.fromCharCode(this.state.length>>13&255)+String.fromCharCode(this.state.length>>21&255)+String.fromCharCode(this.state.length>>29&255)+\"\\0\\0\\0\"}}]),n=s;function s(t){var e;return function(t){if(!(t instanceof s))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=i(s).call(this,t))||\"object\"!==r(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).blockUnits=[],t}e.a=n},function(t,e,n){\"use strict\";var r=n(3),E=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e,n){return(o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var T=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],r=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(u,r.a),r=[{key:\"reset\",value:function(){switch(o(s(u.prototype),\"reset\",this).call(this),this.options.length){case 384:this.state.hash=[-876896931,-1056596264,1654270250,914150663,-1856437926,812702999,355462360,-150054599,1731405415,-4191439,-1900787065,1750603025,-619958771,1694076839,1203062813,-1090891868];break;case 512:this.state.hash=[1779033703,-205731576,-1150833019,-2067093701,1013904242,-23791573,-1521486534,1595750129,1359893119,-1377402159,-1694144372,725511199,528734635,-79577749,1541459225,327033209];break;default:for(var t=new u,e=0;e<16;e++)t.state.hash[e]=2779096485^t.state.hash[e];t.update(\"SHA-512/\"+this.options.length);var n=t.finalize();this.state.hash=[];for(var r=0;r<64;r+=4)this.state.hash.push(n.charCodeAt(r)<<24|n.charCodeAt(r+1)<<16|n.charCodeAt(r+2)<<8|n.charCodeAt(r+3))}}},{key:\"processBlock\",value:function(t){for(var e,n,r,i,o=this.state.hash[0],s=this.state.hash[1],a=this.state.hash[2],u=this.state.hash[3],c=this.state.hash[4],l=this.state.hash[5],h=this.state.hash[6],f=this.state.hash[7],p=this.state.hash[8],d=this.state.hash[9],g=this.state.hash[10],m=this.state.hash[11],v=this.state.hash[12],y=this.state.hash[13],b=this.state.hash[14],w=this.state.hash[15],_=0;_<this.options.rounds;_+=2){_<32?(this.W[_]=t[_],this.W[_+1]=t[_+1]):(e=Object(E.c)(this.W[_-30],this.W[_-29],1)^Object(E.c)(this.W[_-30],this.W[_-29],8)^this.W[_-30]>>>7,n=Object(E.d)(this.W[_-30],this.W[_-29],1)^Object(E.d)(this.W[_-30],this.W[_-29],8)^(this.W[_-29]>>>7|this.W[_-30]<<25),r=Object(E.c)(this.W[_-4],this.W[_-3],19)^Object(E.c)(this.W[_-4],this.W[_-3],61)^this.W[_-4]>>>6,i=Object(E.d)(this.W[_-4],this.W[_-3],19)^Object(E.d)(this.W[_-4],this.W[_-3],61)^(this.W[_-3]>>>6|this.W[_-4]<<26),S=(65535&this.W[_-13])+(65535&this.W[_-31])+(65535&n)+(65535&i)|0,O=(this.W[_-13]>>>16)+(this.W[_-31]>>>16)+(n>>>16)+(i>>>16)+(S>>>16)|0,k=(65535&this.W[_-14])+(65535&this.W[_-32])+(65535&e)+(65535&r)+(O>>>16)|0,C=(this.W[_-14]>>>16)+(this.W[_-32]>>>16)+(e>>>16)+(r>>>16)+(k>>>16)|0,this.W[_]=4294967295&(C<<16|65535&k),this.W[_+1]=4294967295&(O<<16|65535&S)),e=Object(E.c)(o,s,28)^Object(E.c)(o,s,34)^Object(E.c)(o,s,39),n=Object(E.d)(o,s,28)^Object(E.d)(o,s,34)^Object(E.d)(o,s,39);var x=d&m^~d&y,C=o&a^o&c^a&c,k=s&u^s&l^u&l,S=(S=(S=b+(r=Object(E.c)(p,d,14)^Object(E.c)(p,d,18)^Object(E.c)(p,d,41))+((O=w+(i=Object(E.d)(p,d,14)^Object(E.d)(p,d,18)^Object(E.d)(p,d,41))|0)>>>0<w>>>0?1:0)|0)+(p&g^~p&v)+((O=O+x|0)>>>0<x>>>0?1:0)|0)+T[_]+((O=O+T[_+1]|0)>>>0<T[_+1]>>>0?1:0)|0,O=O+this.W[_+1]|0,k=n+k|0,b=v,w=y,v=g,y=m,g=p,m=d,p=h+(S=S+this.W[_]+(O>>>0<this.W[_+1]>>>0?1:0)|0)+((d=f+O|0)>>>0<f>>>0?1:0)|0,h=c,f=l,c=a,l=u,a=o,u=s,o=S+(e+C+(k>>>0<n>>>0?1:0)|0)+((s=O+k|0)>>>0<O>>>0?1:0)|0}this.state.hash[1]=this.state.hash[1]+s|0,this.state.hash[0]=this.state.hash[0]+o+(this.state.hash[1]>>>0<s>>>0?1:0)|0,this.state.hash[3]=this.state.hash[3]+u|0,this.state.hash[2]=this.state.hash[2]+a+(this.state.hash[3]>>>0<u>>>0?1:0)|0,this.state.hash[5]=this.state.hash[5]+l|0,this.state.hash[4]=this.state.hash[4]+c+(this.state.hash[5]>>>0<l>>>0?1:0)|0,this.state.hash[7]=this.state.hash[7]+f|0,this.state.hash[6]=this.state.hash[6]+h+(this.state.hash[7]>>>0<f>>>0?1:0)|0,this.state.hash[9]=this.state.hash[9]+d|0,this.state.hash[8]=this.state.hash[8]+p+(this.state.hash[9]>>>0<d>>>0?1:0)|0,this.state.hash[11]=this.state.hash[11]+m|0,this.state.hash[10]=this.state.hash[10]+g+(this.state.hash[11]>>>0<m>>>0?1:0)|0,this.state.hash[13]=this.state.hash[13]+y|0,this.state.hash[12]=this.state.hash[12]+v+(this.state.hash[13]>>>0<y>>>0?1:0)|0,this.state.hash[15]=this.state.hash[15]+w|0,this.state.hash[14]=this.state.hash[14]+b+(this.state.hash[15]>>>0<w>>>0?1:0)|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<112?112-this.state.message.length|0:240-this.state.message.length|0),this.state.message+=\"\\0\\0\\0\\0\\0\\0\\0\\0\",this.addLengthBits(),this.process(),this.getStateHash(this.options.length/32|0)}}],function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(u.prototype,r),u);function u(t){var e;return function(t){if(!(t instanceof u))throw new TypeError(\"Cannot call a class as a function\")}(this),(t=t||{}).length=t.length||512,t.rounds=t.rounds||160,e=this,(t=!(t=s(u).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).blockSize=32,t.blockSizeInBytes=t.blockSize*t.unitSize,t.W=new Array(160),t}e.a=r},function(t,e,n){\"use strict\";var r=n(3),f=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e,n){return(o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],r=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(u,r.a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(u.prototype,[{key:\"reset\",value:function(){224===(o(s(u.prototype),\"reset\",this).call(this),this.options.length)?this.state.hash=[-1056596264,914150663,812702999,-150054599,-4191439,1750603025,1694076839,-1090891868]:this.state.hash=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225]}},{key:\"processBlock\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=0|this.state.hash[5],a=0|this.state.hash[6],u=0|this.state.hash[7],c=0;c<this.options.rounds;c++){this.W[c]=c<16?0|t[c]:this.W[c-16]+(Object(f.b)(this.W[c-15],7)^Object(f.b)(this.W[c-15],18)^this.W[c-15]>>>3)+this.W[c-7]+(Object(f.b)(this.W[c-2],17)^Object(f.b)(this.W[c-2],19)^this.W[c-2]>>>10)|0;var l=u+(Object(f.b)(o,6)^Object(f.b)(o,11)^Object(f.b)(o,25))+(o&s^~o&a)+p[c]+this.W[c]|0,h=(Object(f.b)(e,2)^Object(f.b)(e,13)^Object(f.b)(e,22))+(e&n^e&r^n&r)|0,u=a,a=s,s=o,o=i+l|0,i=r,r=n,n=e,e=l+h|0}this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0,this.state.hash[4]=this.state.hash[4]+o|0,this.state.hash[5]=this.state.hash[5]+s|0,this.state.hash[6]=this.state.hash[6]+a|0,this.state.hash[7]=this.state.hash[7]+u|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash(this.options.length/32|0)}}]),u);function u(t){var e;return function(t){if(!(t instanceof u))throw new TypeError(\"Cannot call a class as a function\")}(this),(t=t||{}).length=t.length||256,t.rounds=t.rounds||64,e=this,(t=!(t=s(u).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).W=new Array(64),t}e.a=r},function(t,e,n){\"use strict\";var r=n(5),d=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e,n){return(s=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],v=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],y=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],n=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}(b,r.a),n=[{key:\"F\",value:function(t,e,n){return t^e^n}},{key:\"G\",value:function(t,e,n){return t&e|~t&n}},{key:\"H\",value:function(t,e,n){return(t|~e)^n}},{key:\"I\",value:function(t,e,n){return t&n|e&~n}},{key:\"J\",value:function(t,e,n){return t^(e|~n)}},{key:\"T\",value:function(t,e,n,r){return t<16?this.F(e,n,r):t<32?this.G(e,n,r)+1518500249|0:t<48?this.H(e,n,r)+1859775393|0:t<64?this.I(e,n,r)+2400959708|0:this.J(e,n,r)+2840853838|0}},{key:\"T64\",value:function(t,e,n,r){return t<16?this.I(e,n,r)+1352829926|0:t<32?this.H(e,n,r)+1548603684|0:t<48?this.G(e,n,r)+1836072691|0:this.F(e,n,r)}},{key:\"T80\",value:function(t,e,n,r){return t<16?this.J(e,n,r)+1352829926|0:t<32?this.I(e,n,r)+1548603684|0:t<48?this.H(e,n,r)+1836072691|0:t<64?this.G(e,n,r)+2053994217|0:this.F(e,n,r)}}],o((r=b).prototype,[{key:\"reset\",value:function(){switch(s(a(b.prototype),\"reset\",this).call(this),this.options.length){case 128:this.state.hash=[1732584193,4023233417,2562383102,271733878],this.processBlock=this.processBlock128;break;case 256:this.state.hash=[1732584193,4023233417,2562383102,271733878,1985229328,4275878552,2309737967,19088743],this.processBlock=this.processBlock256;break;case 320:this.state.hash=[1732584193,4023233417,2562383102,271733878,3285377520,1985229328,4275878552,2309737967,19088743,1009589775],this.processBlock=this.processBlock320;break;default:this.state.hash=[1732584193,4023233417,2562383102,271733878,3285377520],this.processBlock=this.processBlock160}}},{key:\"processBlock128\",value:function(t){for(var e=a=0|this.state.hash[0],n=l=0|this.state.hash[1],r=c=0|this.state.hash[2],i=u=0|this.state.hash[3],o=0;o<64;o++){var s=(s=a+t[g[o]]|0)+b.T(o,l,c,u)|0,a=u,u=c,c=l,l=s=Object(d.a)(s,v[o]);s=(s=e+t[m[o]]|0)+b.T64(o,n,r,i)|0,e=i,i=r,r=n,n=s=Object(d.a)(s,y[o])}var h=this.state.hash[1]+c+i|0;this.state.hash[1]=this.state.hash[2]+u+e|0,this.state.hash[2]=this.state.hash[3]+a+n|0,this.state.hash[3]=this.state.hash[0]+l+r|0,this.state.hash[0]=h}},{key:\"processBlock160\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=e,a=n,u=r,c=i,l=o,h=0;h<80;h++){var f=(f=e+t[g[h]]|0)+b.T(h,n,r,i)|0;f=(f=Object(d.a)(f,v[h]))+o|0,e=o,o=i,i=Object(d.a)(r,10),r=n,n=f,f=(f=s+t[m[h]]|0)+b.T80(h,a,u,c)|0,f=(f=Object(d.a)(f,y[h]))+l|0,s=l,l=c,c=Object(d.a)(u,10),u=a,a=f}var p=this.state.hash[1]+r+c|0;this.state.hash[1]=this.state.hash[2]+i+l|0,this.state.hash[2]=this.state.hash[3]+o+s|0,this.state.hash[3]=this.state.hash[4]+e+a|0,this.state.hash[4]=this.state.hash[0]+n+u|0,this.state.hash[0]=p}},{key:\"processBlock256\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=0|this.state.hash[5],a=0|this.state.hash[6],u=0|this.state.hash[7],c=0;c<64;c+=1){var l=(l=e+t[g[c]]|0)+b.T(c,n,r,i)|0,e=i,i=r,r=n,n=l=Object(d.a)(l,v[c]);switch(l=(l=o+t[m[c]]|0)+b.T64(c,s,a,u)|0,o=u,u=a,a=s,s=l=Object(d.a)(l,y[c]),c){case 15:l=e,e=o,o=l;break;case 31:l=n,n=s,s=l;break;case 47:l=r,r=a,a=l;break;case 63:l=i,i=u,u=l}}this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0,this.state.hash[4]=this.state.hash[4]+o|0,this.state.hash[5]=this.state.hash[5]+s|0,this.state.hash[6]=this.state.hash[6]+a|0,this.state.hash[7]=this.state.hash[7]+u|0}},{key:\"processBlock320\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=0|this.state.hash[5],a=0|this.state.hash[6],u=0|this.state.hash[7],c=0|this.state.hash[8],l=0|this.state.hash[9],h=0;h<80;h+=1){var f=(f=e+t[g[h]]|0)+b.T(h,n,r,i)|0;switch(f=(f=Object(d.a)(f,v[h]))+o|0,e=o,o=i,i=Object(d.a)(r,10),r=n,n=f,f=(f=s+t[m[h]]|0)+b.T80(h,a,u,c)|0,f=(f=Object(d.a)(f,y[h]))+l|0,s=l,l=c,c=Object(d.a)(u,10),u=a,a=f,h){case 15:f=n,n=a,a=f;break;case 31:f=i,i=c,c=f;break;case 47:f=e,e=s,s=f;break;case 63:f=r,r=u,u=f;break;case 79:f=o,o=l,l=f}}this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0,this.state.hash[4]=this.state.hash[4]+o|0,this.state.hash[5]=this.state.hash[5]+s|0,this.state.hash[6]=this.state.hash[6]+a|0,this.state.hash[7]=this.state.hash[7]+u|0,this.state.hash[8]=this.state.hash[8]+c|0,this.state.hash[9]=this.state.hash[9]+l|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),o(r,n),b);function b(t){return function(t){if(!(t instanceof b))throw new TypeError(\"Cannot call a class as a function\")}(this),(t=t||{}).length=t.length||160,e=this,!(t=a(b).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t;var e}e.a=n},function(t,e,n){\"use strict\";var r=n(3),c=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e,n){return(o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var u=[10097,32533,76520,13586,34673,54876,80959,9117,39292,74945,37542,4805,64894,74296,24805,24037,20636,10402,822,91665,8422,68953,19645,9303,23209,2560,15953,34764,35080,33606,99019,2529,9376,70715,38311,31165,88676,74397,4436,27659,12807,99970,80157,36147,64032,36653,98951,16877,12171,76833,66065,74717,34072,76850,36697,36170,65813,39885,11199,29170,31060,10805,45571,82406,35303,42614,86799,7439,23403,9732,85269,77602,2051,65692,68665,74818,73053,85247,18623,88579,63573,32135,5325,47048,90553,57548,28468,28709,83491,25624,73796,45753,3529,64778,35808,34282,60935,20344,35273,88435,98520,17767,14905,68607,22109,40558,60970,93433,50500,73998,11805,5431,39808,27732,50725,68248,29405,24201,52775,67851,83452,99634,6288,98083,13746,70078,18475,40610,68711,77817,88685,40200,86507,58401,36766,67951,90364,76493,29609,11062,99594,67348,87517,64969,91826,8928,93785,61368,23478,34113,65481,17674,17468,50950,58047,76974,73039,57186,40218,16544,80124,35635,17727,8015,45318,22374,21115,78253,14385,53763,74350,99817,77402,77214,43236,210,45521,64237,96286,2655,69916,26803,66252,29148,36936,87203,76621,13990,94400,56418,9893,20505,14225,68514,46427,56788,96297,78822,54382,14598,91499,14523,68479,27686,46162,83554,94750,89923,37089,20048,80336,94598,26940,36858,70297,34135,53140,33340,42050,82341,44104,81949,85157,47954,32979,26575,57600,40881,22222,6413,12550,73742,11100,2040,12860,74697,96644,89439,28707,25815,63606,49329,16505,34484,40219,52563,43651,77082,7207,31790,61196,90446,26457,47774,51924,33729,65394,59593,42582,60527,15474,45266,95270,79953,59367,83848,82396,10118,33211,59466,94557,28573,67897,54387,54622,44431,91190,42592,92927,45973,42481,16213,97344,8721,16868,48767,3071,12059,25701,46670,23523,78317,73208,89837,68935,91416,26252,29663,5522,82562,4493,52494,75246,33824,45862,51025,61962,79335,65337,12472,549,97654,64051,88159,96119,63896,54692,82391,23287,29529,35963,15307,26898,9354,33351,35462,77974,50024,90103,39333,59808,8391,45427,26842,83609,49700,13021,24892,78565,20106,46058,85236,1390,92286,77281,44077,93910,83647,70617,42941,32179,597,87379,25241,5567,7007,86743,17157,85394,11838,69234,61406,20117,45204,15956,6e4,18743,92423,97118,96338,19565,41430,1758,75379,40419,21585,66674,36806,84962,85207,45155,14938,19476,7246,43667,94543,59047,90033,20826,69541,94864,31994,36168,10851,34888,81553,1540,35456,5014,51176,98086,24826,45240,28404,44999,8896,39094,73407,35441,31880,33185,16232,41941,50949,89435,48581,88695,41994,37548,73043,80951,406,96382,70774,20151,23387,25016,25298,94624,61171,79752,49140,71961,28296,69861,2591,74852,20539,387,59579,18633,32537,98145,6571,31010,24674,5455,61427,77938,91936,74029,43902,77557,32270,97790,17119,52527,58021,80814,51748,54178,45611,80993,37143,5335,12969,56127,19255,36040,90324,11664,49883,52079,84827,59381,71539,9973,33440,88461,23356,48324,77928,31249,64710,2295,36870,32307,57546,15020,9994,69074,94138,87637,91976,35584,4401,10518,21615,1848,76938,9188,20097,32825,39527,4220,86304,83389,87374,64278,58044,90045,85497,51981,50654,94938,81997,91870,76150,68476,64659,73189,50207,47677,26269,62290,64464,27124,67018,41361,82760,75768,76490,20971,87749,90429,12272,95375,5871,93823,43178,54016,44056,66281,31003,682,27398,20714,53295,7706,17813,8358,69910,78542,42785,13661,58873,4618,97553,31223,8420,28306,3264,81333,10591,40510,7893,32604,60475,94119,1840,53840,86233,81594,13628,51215,90290,28466,68795,77762,20791,91757,53741,61613,62269,50263,90212,55781,76514,83483,47055,89415,92694,397,58391,12607,17646,48949,72306,94541,37408,77513,3820,86864,29901,68414,82774,51908,13980,72893,55507,19502,37174,69979,20288,55210,29773,74287,75251,65344,67415,21818,59313,93278,81757,5686,73156,7082,85046,31853,38452,51474,66499,68107,23621,94049,91345,42836,9191,8007,45449,99559,68331,62535,24170,69777,12830,74819,78142,43860,72834,33713,48007,93584,72869,51926,64721,58303,29822,93174,93972,85274,86893,11303,22970,28834,34137,73515,90400,71148,43643,84133,89640,44035,52166,73852,70091,61222,60561,62327,18423,56732,16234,17395,96131,10123,91622,85496,57560,81604,18880,65138,56806,87648,85261,34313,65861,45875,21069,85644,47277,38001,2176,81719,11711,71602,92937,74219,64049,65584,49698,37402,96397,1304,77586,56271,10086,47324,62605,40030,37438,97125,40348,87083,31417,21815,39250,75237,62047,15501,29578,21826,41134,47143,34072,64638,85902,49139,6441,3856,54552,73135,42742,95719,9035,85794,74296,8789,88156,64691,19202,7638,77929,3061,18072,96207,44156,23821,99538,4713,66994,60528,83441,7954,19814,59175,20695,5533,52139,61212,6455,83596,35655,6958,92983,5128,9719,77433,53783,92301,50498,10850,62746,99599,10507,13499,6319,53075,71839,6410,19362,39820,98952,43622,63147,64421,80814,43800,9351,31024,73167,59580,6478,75569,78800,88835,54486,23768,6156,4111,8408,38508,7341,23793,48763,90822,97022,17719,4207,95954,49953,30692,70668,94688,16127,56196,80091,82067,63400,5462,69200,65443,95659,18288,27437,49632,24041,8337,65676,96299,90836,27267,50264,13192,72294,7477,44606,17985,48911,97341,30358,91307,6991,19072,24210,36699,53728,28825,35793,28976,66252,68434,94688,84473,13622,62126,98408,12843,82590,9815,93146,48908,15877,54745,24591,35700,4754,83824,52692,54130,55160,6913,45197,42672,78601,11883,9528,63011,98901,14974,40344,10455,16019,14210,33712,91342,37821,88325,80851,43667,70883,12883,97343,65027,61184,4285,1392,17974,15077,90712,26769,21778,30976,38807,36961,31649,42096,63281,2023,8816,47449,19523,59515,65122,59659,86283,68258,69572,13798,16435,91529,67245,52670,35583,16563,79246,86686,76463,34222,26655,90802,60584,47377,7500,37992,45134,26529,26760,83637,41326,44344,53853,41377,36066,94850,58838,73859,49364,73331,96240,43642,24637,38736,74384,89342,52623,7992,12369,18601,3742,83873,83080,12451,38992,22815,7759,51777,97377,27585,51972,37867,16444,24334,36151,99073,27493,70939,85130,32552,54846,54759,60790,18157,57178,65762,11161,78576,45819,52979,65130,4860,3991,10461,93716,16894,66083,24653,84609,58232,88618,19161,38555,95554,32886,59780,8355,60860,29735,47762,71299,23853,17546,73704,92052,46215,55121,29281,59076,7936,27954,58909,32643,52861,95819,6831,911,98936,76355,93779,80863,514,69572,68777,39510,35905,14060,40619,29549,69616,33564,60780,24122,66591,27699,6494,14845,46672,61958,77100,90899,75754,61196,30231,92962,61773,41839,55382,17267,70943,78038,70267,30532,21704,10274,12202,39685,23309,10061,68829,55986,66485,3788,97599,75867,20717,74416,53166,35208,33374,87539,8823,48228,63379,85783,47619,53152,67433,35663,52972,16818,60311,60365,94653,35075,33949,42614,29297,1918,28316,98953,73231,83799,42402,56623,34442,34994,41374,70071,14736,9958,18065,32960,7405,36409,83232,99385,41600,11133,7586,15917,6253,19322,53845,57620,52606,66497,68646,78138,66559,19640,99413,11220,94747,7399,37408,48509,23929,27482,45476,85244,35159,31751,57260,68980,5339,15470,48355,88651,22596,3152,19121,88492,99382,14454,4504,20094,98977,74843,93413,22109,78508,30934,47744,7481,83828,73788,6533,28597,20405,94205,20380,22888,48893,27499,98748,60530,45128,74022,84617,82037,10268,78212,16993,35902,91386,44372,15486,65741,14014,87481,37220,41849,84547,46850,52326,34677,58300,74910,64345,19325,81549,46352,33049,69248,93460,45305,7521,61318,31855,14413,70951,11087,96294,14013,31792,59747,67277,76503,34513,39663,77544,52701,8337,56303,87315,16520,69676,11654,99893,2181,68161,57275,36898,81304,48585,68652,27376,92852,55866,88448,3584,20857,73156,70284,24326,79375,95220,1159,63267,10622,48391,15633,84924,90415,93614,33521,26665,55823,47641,86225,31704,92694,48297,39904,2115,59589,49067,66821,41575,49767,4037,77613,19019,88152,80,20554,91409,96277,48257,50816,97616,38688,32486,45134,63545,59404,72059,43947,51680,43852,59693,25163,1889,70014,15021,41290,67312,71857,15957,68971,11403,65251,7629,37239,33295,5870,1119,92784,26340,18477,65622,36815,43625,18637,37509,82444,99005,4921,73701,14707,93997,64397,11692,5327,82162,20247,81759,45197,25332,83745,22567,4515,25624,95096,67946,48460,85558,15191,18782,16930,33361,83761,60873,43253,84145,60833,25983,1291,41349,20368,7126,14387,6345,80854,9279,43529,6318,38384,74761,41196,37480,51321,92246,80088,77074,88722,56736,66164,49431,66919,31678,72472,8,80890,18002,94813,31900,54155,83436,35352,54131,5466,55306,93128,18464,74457,90561,72848,11834,79982,68416,39528,72484,82474,25593,48545,35247,18619,13674,18611,19241,81616,18711,53342,44276,75122,11724,74627,73707,58319,15997,7586,16120,82641,22820,92904,13141,32392,19763,61199,67940,90767,4235,13574,17200,69902,63742,78464,22501,18627,90872,40188,28193,29593,88627,94972,11598,62095,36787,441,58997,34414,82157,86887,55087,19152,23,12302,80783,32624,68691,63439,75363,44989,16822,36024,867,76378,41605,65961,73488,67049,9070,93399,45547,94458,74284,5041,49807,20288,34060,79495,4146,52162,90286,54158,34243,46978,35482,59362,95938,91704,30552,4737,21031,75051,93029,47665,64382,99782,93478,94015,46874,32444,48277,59820,96163,64654,25843,41145,42820,74108,88222,88570,74015,25704,91035,1755,14750,48968,38603,62880,87873,95160,59221,22304,90314,72877,17334,39283,4149,11748,12102,80580,41867,17710,59621,6554,7850,73950,79552,17944,5600,60478,3343,25852,58905,57216,39618,49856,99326,66067,42792,95043,52680,46780,56487,9971,59481,37006,22186,54244,91030,45547,70818,59849,96169,61459,21647,87417,17198,30945,57589,31732,57260,47670,7654,46376,25366,94746,49580,69170,37403,86995,90307,94304,71803,26825,5511,12459,91314,8345,88975,35841,85771,8105,59987,87112,21476,14713,71181,27767,43584,85301,88977,29490,69714,73035,41207,74699,9310,13025,14338,54066,15243,47724,66733,47431,43905,31048,56699,80217,36292,98525,24335,24432,24896,43277,58874,11466,16082,10875,62004,90391,61105,57411,6368,53856,30743,8670,84741,54127,57326,26629,19087,24472,88779,30540,27886,61732,75454,60311,42824,37301,42678,45990,43242,17374,52003,70707,70214,49739,71484,92003,98086,76668,73209,59202,11973,2902,33250,78626,51594,16453,94614,39014,97066,83012,9832,25571,77628,66692,13986,99837,582,81232,44987,9504,96412,90193,79568,44071,28091,7362,97703,76447,42537,98524,97831,65704,9514,41468,85149,49554,17994,14924,39650,95294,556,70481,6905,94559,37559,49678,53119,70312,5682,66986,34099,74474,20740,41615,70360,64114,58660,90850,64618,80620,51790,11436,38072,50273,93113,41794,86861,24781,89683,55411,85667,77535,99892,41396,80504,90670,8289,40902,5069,95083,6783,28102,57816,25807,24260,71529,78920,72682,7385,90726,57166,98884,8583,6170,97965,88302,98041,21443,41808,68984,83620,89747,98882,60808,54444,74412,81105,1176,28838,36421,16489,18059,51061,80940,44893,10408,36222,80582,71944,92638,40333,67054,16067,19516,90120,46759,71643,13177,55292,21036,82808,77501,97427,49386,54480,23604,23554,21785,41101,91178,10174,29420,90438,6312,88940,15995,69321,47458,64809,98189,81851,29651,84215,60942,307,11897,92674,40405,68032,96717,54244,10701,41393,92329,98932,78284,46347,71209,92061,39448,93136,25722,8564,77936,63574,31384,51924,85561,29671,58137,17820,22751,36518,38101,77756,11657,13897,95889,57067,47648,13885,70669,93406,39641,69457,91339,22502,92613,89719,11947,56203,19324,20504,84054,40455,99396,63680,67667,60631,69181,96845,38525,11600,47468,3577,57649,63266,24700,71594,14004,23153,69249,5747,43321,31370,28977,23896,76479,68562,62342,7589,8899,5985,64281,61826,18555,64937,13173,33365,78851,16499,87064,13075,66847,70495,32350,2985,86716,38746,26313,77463,55387,72681,72461,33230,21529,53424,92581,2262,78438,66276,18396,73538,21032,91050,13058,16218,12470,56500,15292,76139,59526,52113,95362,67011,6651,16136,1016,857,55018,56374,35824,71708,49712,97380,10404,55452,34030,60726,75211,10271,36633,68424,58275,61764,97586,54716,50259,46345,87195,46092,26787,60939,89514,11788,68224,23417,73959,76145,30342,40277,11049,72049,15472,50669,48139,36732,46874,37088,73465,9819,58869,35220,12120,86124,51247,44302,60883,52109,21437,36786,49226,77837,19612,78430,11661,94770,77603,65669,86868,12665,30012,75989,39141,77400,28e3,64238,73258,71794,31340,26256,66453,37016,64756,80457,8747,12836,3469,50678,3274,43423,66677,82556,92901,51878,56441,22998,29718,38447,6453,25311,7565,53771,3551,90070,9483,94050,45938,18135,36908,43321,11073,51803,98884,66209,6830,53656,14663,56346,71430,4909,19818,5707,27369,86882,53473,7541,53633,70863,3748,12822,19360,49088,59066,75974,63335,20483,43514,37481,58278,26967,49325,43951,91647,93783,64169,49022,98588,9495,49829,59068,38831,4838,83605,92419,39542,7772,71568,75673,35185,89759,44901,74291,24895,88530,70774,35439,46758,70472,70207,92675,91623,61275,35720,26556,95596,20094,73750,85788,34264,1703,46833,65248,14141,53410,38649,6343,57256,61342,72709,75318,90379,37562,27416,75670,92176,72535,93119,56077,6886,18244,92344,31374,82071,7429,81007,47749,40744,56974,23336,88821,53841,10536,21445,82793,24831,93241,14199,76268,70883,68002,3829,17443,72513,76400,52225,92348,62308,98481,29744,33165,33141,61020,71479,45027,76160,57411,13780,13632,52308,77762,88874,33697,83210,51466,9088,50395,26743,5306,21706,70001,99439,80767,68749,95148,94897,78636,96750,9024,94538,91143,96693,61886,5184,75763,47075,88158,5313,53439,14908,8830,60096,21551,13651,62546,96892,25240,47511,58483,87342,78818,7855,39269,566,21220,292,24069,25072,29519,52548,54091,21282,21296,50958,17695,58072,68990,60329,95955,71586,63417,35947,67807,57621,64547,46850,37981,38527,9037,64756,3324,4986,83666,9282,25844,79139,78435,35428,43561,69799,63314,12991,93516,23394,94206,93432,37836,94919,26846,2555,74410,94915,48199,5280,37470,93622,4345,15092,19510,18094,16613,78234,50001,95491,97976,38306,32192,82639,54624,72434,92606,23191,74693,78521,104,18248,75583,90326,50785,54034,66251,35774,14692,96345,44579,85932,44053,75704,20840,86583,83944,52456,73766,77963,31151,32364,91691,47357,40338,23435,24065,8458,95366,7520,11294,23238,1748,41690,67328,54814,37777,10057,42332,38423,2309,70703,85736,46148,14258,29236,12152,5088,65825,2463,65533,21199,60555,33928,1817,7396,89215,30722,22102,15880,92261,17292,88190,61781,48898,92525,21283,88581,60098,71926,819,59144,224,30570,90194,18329,6999,26857,19238,64425,28108,16554,16016,42,83229,10333,36168,65617,94834,79782,23924,49440,30432,81077,31543,95216,64865,13658,51081,35337,74538,44553,64672,90960,41849,93865,44608,93176,34851,5249,29329,19715,94082,14738,86667,43708,66354,93692,25527,56463,99380,38793,85774,19056,13939,46062,27647,66146,63210,96296,33121,54196,34108,75814,85986,71171,15102,28992,63165,98380,36269,60014,7201,62448,46385,42175,88350,46182,49126,52567,64350,16315,53969,80395,81114,54358,64578,47269,15747,78498,90830,25955,99236,43286,91064,99969,95144,64424,77377,49553,24241,8150,89535,8703,91041,77323,81079,45127,93686,32151,7075,83155,10252,73100,88618,23891,87418,45417,20268,11314,50363,26860,27799,49416,83534,19187,8059,76677,2110,12364,71210,87052,50241,90785,97889,81399,58130,64439,5614,59467,58309,87834,57213,37510,33689,1259,62486,56320,46265,73452,17619,56421,40725,23439,41701,93223,41682,45026,47505,27635,56293,91700,4391,67317,89604,73020,69853,61517,51207,86040,2596,1655,9918,45161,222,54577,74821,47335,8582,52403,94255,26351,46527,68224,90183,85057,72310,34963,83462,49465,46581,61499,4844,94626,2963,41482,83879,44942,63915,94365,92560,12363,30246,2086,75036,88620,91088,67691,67762,34261,8769,91830,23313,18256,28850,37639,92748,57791,71328,37110,66538,39318,15626,44324,82827,8782,65960,58167,1305,83950,45424,72453,19444,68219,64733,94088,62006,89985,36936,61630,97966,76537,46467,30942,7479,67971,14558,22458,35148,1929,17165,12037,74558,16250,71750,55546,29693,94984,37782,41659,39098,23982,29899,71594,77979,54477,13764,17315,72893,32031,39608,75992,73445,1317,50525,87313,45191,30214,19769,90043,93478,58044,6949,31176,88370,50274,83987,45316,38551,79418,14322,91065,7841,36130,86602,10659,40859,964,71577,85447,61079,96910,72906,7361,84338,34114,52096,66715,51091,86219,81115,49625,48799,89485,24855,13684,68433,70595,70102,71712,88559,92476,32903,68009,58417,87962,11787,16644,72964,29776,63075,13270,84758,49560,10317,28778,23006,31036,84906,81488,17340,74154,42801,27917,89792,62604,62234,13124,76471,51667,37589,87147,24743,48023,6325,79794,35889,13255,4925,99004,70322,60832,76636,56907,56534,72615,46288,36788,93196,68656,66492,35933,52293,47953,95495,95304,50009,83464,28608,38074,74083,9337,7965,65047,36871,59015,21769,30398,44855,1020,80680,59328,8712,48190,45332,27284,31287,66011,9376,86379,74508,33579,77114,92955,23085,92824,3054,25242,16322,48498,9938,44420,13484,52319,58875,2012,88591,52500,95795,41800,95363,54142,17482,32705,60564,12505,40954,46174,64130,63026,96712,79883,39225,52653,69549,36693,59822,22684,31661,88298,15489,16030,42480,15372,38781,71995,77438,91161,10192,7839,62735,99218,25624,2547,27445,69187,55749,32322,15504,73298,51108,48717,92926,75705,89787,96114,99902,37749,96305,12829,70474,838,50385,91711,80370,56504,56857,80906,9018,76569,61072,48568,36491,22587,44363,39592,61546,90181,37348,41665,41339,62106,44203,6732,76111,79840,67999,32231,76869,58652,49983,1669,27464,79553,52855,25988,18087,38052,17529,13607,657,76173,43357,77334,24140,53860,2906,89863,44651,55715,26203,65933,51087,98234,40625,45545,63563,89148,82581,4110,66683,99001,9796,47349,65003,66524,81970,71262,14479,31300,8681,58068,44115,40064,77879,23965,69019,73985,19453,26225,97543,37044,7494,85778,35345,61115,92498,49737,64599,7158,82763,25072,38478,57782,75291,62155,52056,4786,11585,71251,25572,79771,93328,66927,54069,58752,26624,50463,77361,29991,96526,2820,91659,12818,96356,49499,1507,40223,9171,83642,21057,2677,9367,38097,16100,19355,6120,15378,56559,69167,30235,6767,66323,78294,14916,19124,88044,16673,66102,86018,29406,75415,22038,27056,26906,25867,14751,92380,30434,44114,6026,79553,55091,95385,41212,37882,46864,54717,97038,53805,64150,70915,63127,63695,41288,38192,72437,75075,18570,52065,8853,30104,79937,66913,53200,84570,78079,28970,53859,37632,80274,35240,32960,74859,7359,55176,3930,38984,35151,82576,82805,94031,12779,90879,24109,25367,77861,9541,85739,69023,64971,99321,7521,95909,43897,71724,92581,5471,64337,98949,3606,78236,78985,29212,57369,34857,67757,58019,58872,96526,28749,56592,37871,72905,70198,57319,54116,47014,18285,33692,72111,60958,96848,17893,40993,50445,14186,76877,87867,50335,9513,44346,26439,55293,6449,44301,63740,40158,72703,88321,85062,57345,66231,15409,3451,95261,43561,15673,28956,90303,62469,82517,43035,36850,15592,64098,59022,31752,4370,50486,11885,23085,41712,80692,48492,16495,99721,36912,28267,27882,16269,64483,11273,2680,1616,46138,54606,14761,5134,45144,63213,49666,27441,86989,29884,54334,6740,8368,80051,81020,17882,74973,74531,94994,24927,64894,22667,20466,82948,66831,47427,76033,31197,59817,20064,61135,28556,29695,80179,74058,18293,9963,35278,13062,83094,23373,90287,33477,48865,30348,70174,11468,25994,25343,22317,1587,30682,1,67814,59557,23362,13746,82244,42093,24671,79458,93730,45488,60234,67098,9899,25775,332,36636,57594,19958,85564,58977,12247,60774,66371,69442,20385,14486,91330,50332,46023,75768,59877,60081,92936,72302,75064,85727,52987,5750,19384,33684,78859,80458,69902,34870,88684,49762,40801,86291,18194,90366,82639,53844,96326,65728,48563,26027,52692,62406,76294,41848,63010,69841,29451,36170,21529,16525,64326,22086,24469,57407,96033,37771,31002,18311,93285,31948,14331,58335,15977,80336,81667,27286,24361,61638,57580,95270,46180,76990,53031,94366,2727,49944,19278,5756,51875,53445,33342,1965,7937,10054,97712,87693,58124,46064,39133,77385,9605,65359,70113,90563,86637,94282,12025,31926,24541,23854,58407,32131,92845,20714,27898,26917,50326,35145,50859,72119,95094,29441,42301,62460,75252,94267,38422,73047,24200,85349,72049,91723,97802,98496,12734,73432,10371,57213,53300,80847,46229,7099,72961,13767,65654,31102,82119,96946,65919,81083,3819,57888,57908,16849,77111,41429,92261,45263,1172,55926,78835,27697,48420,58865,41207,21406,8582,10785,36233,12237,7866,13706,92551,11021,63813,71512,65206,37768,94325,14721,20990,54235,71986,5345,56239,52028,1419,7215,55067,11669,21738,66605,69621,69827,8537,18638,60982,28151,98885,76431,25566,3085,23639,30849,63986,73287,26201,36174,14106,54102,57041,16141,64174,3591,90024,73332,31254,17288,59809,25061,51612,47951,16570,43330,79213,11354,55585,19646,99246,37564,32660,20632,21124,60597,69315,31312,57741,85108,21615,24365,27684,16124,33888,14966,35303,69921,15795,4020,67672,86816,63027,84470,45605,44887,26222,79888,58982,22466,98844,48353,60666,58256,31140,93507,69561,6256,88526,18655,865,75247,264,65957,98261,72706,36396,46065,85700,32121,99975,73627,78812,89638,86602,96758,65099,52777,46792,13790,55240,52002,10313,91933,71231,10053,78416,54563,96004,42215,30094,45958,48437,49591,50483,13422,69108,59952,27896,40450,79327,31962,46456,39260,51479,61882,48181,50691,64709,32902,10676,12083,35771,79656,56667,76783,3937,99859,10362,57411,40986,35045,2838,29255,64230,84418,34988,77644,39892,77327,74129,53444,35487,95803,38640,20383,55402,25793,14213,87082,42837,95030,97198,61608,97723,79390,35290,34683,81419,87133,70447,53127,97146,28299,56763,12868,1145,12147,58158,92124,60934,18414,97510,7056,54488,20719,53743,91037,44797,52110,8512,18991,20129,31441,51449,14661,71126,23180,68124,18807,70997,21913,19594,70355,73637,68266,60775,43164,52643,96363,77989,79332,39890,65379,20405,52935,43816,92740,95319,4538,60660,28982,15328,80475,34690,2293,19646,46524,96627,33159,42081,8816,74931,20674,8697,66169,46460,46326,39923,60625,28386,22919,19415,75766,43668,31626,70301,67053,3949,70082,2303,48642,38429,94053,38770,68137,68441,52928,70244,91954,17401,92693,98342,21451,84988,80487,33807,73797,49494,41878,76635,83227,76618,11946,13451,87591,78381,21407,90038,72638,69692,51599,86413,32019,64856,74730,41531,11064,1790,58817,86400,66213,92599,70905,78324,54326,43659,34206,63132,38837,40210,96346,16967,81619,96503,14881,89405,32205,49508,98425,2451,35423,56072,36810,30332,85998,49358,92748,84147,79835,94867,41224,61794,35066,82220,66684,20096,2754,41731,37068,32753,91059,13407,5607,69384,53329,95909,44968,11397,92973,50014,92997,80968,93761,57598,74703,7768,37978,73873,33475,9720,97852,98449,48722,84977,11271,11728,68318,22312,78792,87508,88466,72976,47099,84126,38595,85124,64405,90020,7492,52413,95111,34455,86311,68892,1074,60274,28136,19328,38161,57475,13771,63562,84207,94121,18901,52768,33801,82087,86091,59969,90398,56870,55756,78841,98450,54165,55106,50343,70519,14567,36780,55450,19606,83749,67562,64765,38543,16585,86841,73742,8766,39252,75678,75379,78760,37279,15280,13558,95916,89759,76686,76467,67147,63110,94008,8037,35263,53710,16667,79008,11231,29397,67136,18601,64502,90228,89109,72849,22711,65547,34542,26686,81678,87765,77654,23664,96352,14106,32938,28083,18633,80286,65507,46197,52722,75476,77816,47204,34876,45963,79262,90181,84041,3745,90041,30780,27226,92847,85572,15308,80688,5761,82638,13464,23683,81015,54214,64175,43701,86845,15569,50687,52679,87696,8285,97444,47599,94472,64150,87753,68652,60726,26213,17320,64553,81285,98126,12158,52095,64833,492,35817,55571,91300,97812,37507,4209,53515,64342,21223,16662,43265,68219,3529,43636,68417,53640,95326,93381,37113,80751,76469,96677,43054,22937,31954,13266,34140,27253,2734,99070,60077,57988,93211,92795,83795,57477,3941,39007,14619,38320,93449,31336,25279,97030,26245,47394,39475,90621,23820,29344,94859,91604,14033,41868,14816,4075,66644,87803,97815,99552,78666,3942,8175,22345,19983,76783,99044,20851,84981,59052,77178,72109,76475,21619,73017,6812,56633,50612,55289,4671,84419,94072,94446,80603,32188,93415,23464,43947,43728,74284,67177,57105,31059,10642,13803,69602,46961,66567,19359,84676,63918,40650,12923,15974,79732,20225,92525,71179,4859,91208,60430,5239,61458,24089,68852,60171,29603,42535,86365,93905,28237,45317,60718,82001,41679,20679,56304,70043,87568,21386,59049,78353,48696,77379,55309,23780,28391,5940,55583,81256,59418,97521,32846,70761,90115,45325,5490,65974,11186,15357,3568,450,96644,58976,36211,88240,92457,89200,94696,11370,91157,48487,59501,56983,89795,42789,69758,79701,29511,55968,41472,89474,84344,80517,7485,97523,17264,82840,59556,37119,30985,48866,60605,95719,70417,59083,95137,76538,44155,67286,57897,28262,4052,919,86207,79932,44236,10089,44373,65670,44285,6903,20834,49701,95735,21149,3425,17594,31427,14262,32252,68540,39427,44026,47257,45055,95091,8367,28381,57375,41562,83883,27715,10122,67745,46497,28626,87297,36568,39483,11385,63292,92305,78683,6146,81905,15038,38338,51206,65749,34119,71516,74068,51094,6665,91884,66762,11428,70908,21506,480,94183,78484,66507,75901,25728,52539,86806,69944,65036,27882,2530,4918,74351,65737,89178,8791,39342,94963,22581,56917,17541,83578,75376,65202,30935,79270,91986,99286,45236,44720,81915,70881,45886,43213,49789,97081,16075,20517,69980,25310,91953,1759,67635,88933,54558,18395,73375,62251,58871,9870,70538,48936,7757,90374,56631,88862,30487,38794,36079,32712,11130,55451,25137,38785,83558,31960,69473,45950,18225,9871,88502,75179,11551,75664,74321,67351,27703,83717,18913,42470,8816,37627,14288,62831,44047,67612,72738,26995,50933,63758,50003,43693,52661,55852,52372,59042,37595,4931,73622,68387,86478,40997,5245,75300,24902,59609,35653,15970,37681,69365,22236,86374,65550,343,98377,35354,65770,15365,41422,71356,16630,40044,19290,66449,53629,79452,71674,30260,97303,6487,62789,13005,70152,22501,49867,89294,59232,31776,54919,99851,5438,1096,72269,50486,16719,6144,82041,38332,64452,31840,99287,59928,25503,8407,46970,45907,99238,74547,19704,72035,26542,54600,79172,58779,35747,78956,11478,41195,58135,63856,33037,45753,60159,25193,71838,7526,7985,60714,88627,75790,38454,96110,39237,19792,34534,70169,24805,63215,38175,38784,38855,24826,50917,25147,17082,26997,32295,10894,21805,65245,85407,37926,69214,38579,84721,23544,88548,65626,75517,69737,55626,52175,21697,19453,16908,82841,24060,40285,19195,80281,89322,15232,70043,60691,86370,91949,19017,83846,77869,14321,95102,87073,71467,31305,64677,80358,52629,79419,22359,87867,48296,50141,46807,82184,95812,84665,74511,59914,4146,90417,58508,62875,17630,21868,9199,30322,33352,43374,25473,4119,63086,14147,14863,38020,44757,98628,57916,22199,11865,42911,62651,78290,9392,77294,63168,21043,17409,13786,27475,75979,89668,43596,74316,84489,54941,95992,45445,41059,55142,15214,42903,16799,88254,95984,48575,77822,21067,57238,35352,96779,89564,23797,99937,46379,27119,16060,30302,95327,12849,38111,97090,7598,78473,63079,18570,72803,70040,91385,96436,96263,17368,56188,85999,50026,36050,73736,13351,48321,28357,51718,65636,72903,21584,21060,39829,15564,4716,14594,22363,97639,65937,17802,31535,42767,98761,30987,57657,33398,63053,25926,20944,19306,81727,2695,97479,79172,72764,66446,78864,12698,15812,97209,38827,91016,91281,57875,45228,49211,69755,99224,43999,62879,8879,80015,74396,57146,64665,31159,6980,79069,37409,75037,69977,85919,42826,6974,61063,97640,13433,92528,91311,8440,38840,22362,93929,1836,36590,75052,89475,15437,65648,99012,70236,12307,83585,414,62851,48787,28447,21702,57033,29633,44760,34165,27548,37516,24343,63046,2081,20378,19510,42226,97134,68739,32982,56455,53129,77693,25022,55534,99375,30086,98001,7432,67126,76656,29347,28492,43108,64736,32278,84816,80440,30461,818,9136,1952,48442,91058,92590,10443,5195,34009,32141,62209,43740,54102,76895,98172,31583,4155,66492,58981,16591,11331,6838,3818,77063,12523,45570,68970,70055,77751,73743,71732,4704,61384,57343,66682,44500,89745,10436,67202,36455,42467,88801,91280,1056,27534,81619,79004,25824,66362,33280,20706,31929,57422,18730,96197,22101,47592,2180,18287,82310,60430,59627,26471,7794,60475,76713,45427,89654,14370,81674,41246,98416,8669,48883,77154,9806,94015,60347,20027,8405,33150,27368,53375,70171,59431,14534,34018,85665,77797,17944,49602,74391,48830,55029,10371,94261,16658,68400,44148,28150,40364,90913,73151,64463,50058,78191,84439,82478,62398,3113,17578,12830,6571,95934,9132,25287,78731,80683,67207,76597,42096,34934,76609,52553,47508,71561,8038,83011,72577,95790,40076,20292,32138,61197,95476,23123,26648,13611,48452,39963,85857,4855,27029,1542,72443,53688,82635,56264,7977,23090,93553,65434,12124,91087,87800,95675,99419,44659,30382,55263,82514,86800,16781,65977,65946,13033,93895,4056,75895,47878,91309,51233,81409,46773,69135,56906,84493,34530,84534,38312,54574,92933,77341,20839,36126,1143,35356,35459,7959,98335,53266,36146,78047,50607,22486,63308,8996,96056,39085,26567,6779,62663,30523,47881,41279,49864,82248,78333,29466,48151,41957,93235,53308,22682,90722,54478,7235,34306,15827,20121,96837,6283,80172,66109,92592,48238,76428,94546,45430,16288,74839,740,25553,83767,35900,5998,7493,46755,11449,88824,44906,33143,7454,56652,34755,63992,59674,65131,46358,12799,96988,51158,73176,1184,49925,63519,11785,29073,72850,47997,75172,55187,15313,40725,33225,56643,10465,38583,86440,97967,26401,17078,38765,33454,19136,57712,48446,98790,27315,71074,10157,57946,35582,49383,61324,26572,84503,3496,60449,17962,26017,65651,40400,83246,80056,75306,75147,41863,25581,87530,33193,43294,5065,99644,62771,75986,79005,44924,18703,40889,4403,5862,2571,82500,74200,36170,46836,74642,65471,26815,30937,64946,10160,15544,31962,54015,28853,66533,14573,79398,47391,73165,47805,77589,16881,13423,89452,76992,62509,9796,57540,13486,48855,25546,47589,21012,47388,78428,70196,84413,81026,87597,22445,83769,85937,38321,85485,87359,9839,67228,71179,94372,4446,62801,50775,96179,40646,44272,12417,47199,39701,30665,32775,66525,53558,78882,31939,67209,38906,34533,99914,27719,216,99225,96537,3843,90564,91110,51838,30300,9559,37795,94880,11325,44979,89696,28129,29931,89971,46292,92710,11036,74760,75307,12291,49618,16293,92408,67928,80823,32872,25460,66819,35374,4035,99087,61129,11341,39118,10891,37217,63638,75477,30068,42334,57570,6890,59353,89939,37692,15232,20033,32202,22348,2766,96791,58448,92248,5769,96684,67885,99295,47271,38655,59513,96960,31718,8974,16122,20535,52380,29769,70660,57425,50891,75044,84257,73315,38181,28673,93140,26307,82265,78382,19681,56585,8975,76764,39956,83450,84663,89963,71584,57696,30829,60527,64947,34899,28805,28397,91830,51842,99838,39839,66971,67177,74219,35637,35634,93581,81746,29991,81096,94279,2968,62561,2479,82126,25702,67953,88088,50293,83423,86206,39935,23253,43041,48941,85787,8388,6671,43574,84908,67295,33623,55060,28174,48415,2529,22009,24524,5283,30460,32399,80423,56929,40852,69969,88541,5979,91496,64730,57198,83145,39750,3568,54669,98679,4297,51047,31492,47734,31343,31180,232,19707,24823,75079,73943,17997,8446,91252,39879,58682,82972,18417,39203,36681,42895,8459,15618,17941,52594,43277,16530,40052,91100,87422,47230,95699,49794,50492,87439,86354,4546,65333,11057,77727,19748,38722,91821,18107,42125,89239,28847,54623,38783,47803,31414,38450,3697,89186,30579,44188,26532,8420,80723,48100,60748,76330,45832,8311,16051,4475,13400,48527,46073,17439,56498,94632,9021,16871,83366,14896,4219,38375,87890,90217,42370,61028,85101,76771,83715,94737,69973,74187,1958,59691,86712,86570,60984,76342,13648,85250,28323,48379,45141,36277,51845,29039,3553,5128,59866,51281,68124,17007,24729,29710,41439,40574,11774,86746,89698,56020,37810,88972,11361,95583,70786,589,74473,87513,17690,61427,72914,32517,1804,97910,6327,30246,33049,2622,41026,80875,41293,16752,84225,84414,37137,68956,8095,64981,28180,38629,76962,23840,17477,75268,48297,70340,57888,13938,38554,86836,2195,30270,55484,53364,54705,41380,56316,37723,234,21424,26664,63804,75139,36534,18579,9833,98849,72762,59767,52497,24227,83152,71794,21398,99456,89215,51632,54799,27973,68568,68465,98500,28681,18369,24279,96335,12874,82160,67202,85199,27908,67022,49810,77929,96212,81153,77884,7032,1671,53362,28119,56786,30883,28540,76029,3774,64611,19736,25589,46569,45206,48215,69523,17423,91807,90039,30393,58319,85098,66519,57571,24541,3562,14400,62731,82534,61477,89731,18421,29861,52829,838,78040,43350,74323,82892,84746,28302,13264,7595,134,12933,46831,24864,47275,20527,9110,28485,30326,99826,64005,99308,65779,42760,90066,3974,38688,39968,32604,11694,46262,73262,45405,43923,67397,88228,56405,17839,92073,57622,93328,15442,50186,7570,58001,31e3,8915,11467,14793,82691,51238,12485,51745,18192,5985,36826,89434,38669,91592,88799,65621,67237,59541,19657,93402,58705,73553,78280,69125,95591,81168,91927,25976,89077,71690,19404,64603,59752,74698,44233,67602,38615,31303,28650,53700,89819,7783,4351,77451,47350,21234,16016,41532,76508,23063,44993,43983,33356,61715,96485,22121,78004,6316,87896,99289,93981,37850,66128,92735,45064,50924,24204,58816,65290,34392,55567,66416,72353,45775,68590,85685,72683,60090,37149,85347,57414,72336,12979,5720,92754,76911,96883,74420,5220,85815,23557,80567,44365,70254,50864,36619,51479,23281,76428,18580,34240,59289,49076,18439,29522,42541,4024,84446,92434,90407,77241,19690,78143,65919,13699,91844,91241,38361,67171,90551,5709,3474,76025,97043,33834,44638,54040,82797,545,38159,16089,35870,89158,55864,98078,50563,36492,10994,85909,9018,19252,73887,67928,60045,70782,11937,4074,53814,46621,52577,94853,45968,73667,65062,73306,76045,78649,91654,53958,96537,95542,67622,54579,17279,67440,56441,20681,64011,52226,96618,32831,60664,67547,39523,2043,59748,1887,69229,94653,99271,98164,62155,9234,47367,13047,6364,35064,10073,6793,80248,29009,44969,11129,17139,79630,89772,26921,56949,23465,30036,17173,82459,96218,60768,76417,24405,18710,68887,82394,69729,82503,40873,41590,67255,30757,9657,91881,34578,9511,5417,58953,18532,10721,22029,48524,47778,881,83489,3464,57462,97459,86689,39755,39547,740,36666,7993,31671,86304,12970,73402,52849,31652,79655,11250,18463,57518,20306,25301,1374,51208,33298,87662,61849,60923,68685,69411,39266,80320,34844,89416,81569,83651,35795,40168,33501,1042,58931,3892,85188,74740,85476,23790,33842,89565,53359,25579,59049,62394,72435,12457,21904,18370,97035,57905,9581,91227,92754,37760,1411,7440,87175,88318,63242,85960,56690,12618,30493,11569,73723,7448,58830,157,65814,21118,22140,73793,57855,81830,6795,13183,12625,30635,56429,73216,12342,36722,83886,96828,82870,90954,97614,2370,42160,73370,11944,49067,59452,80495,43911,46712,17033,68037,41963,3874,44856,82985,57453,84358,16120,4454,76624,405,62369,55080,61880,51270,87807,10653,36894,70850,35660,234,14705,93418,94084,82856,25384,71555,56754,78315,18291,91656,98079,52384,43306,65205,75903,58701,99496,50048,33557,87793,90857,10143,46726,84284,43635,41213,83845,70986,91408,80220,5728,68890,46577,21152,43759,43301,93661,97252,50106,10099,13722,18572,44024,351,18173,23717,85114,85998,57782,63951,53723,86853,63851,79430,49181,46386,69666,55743,76162,71724,40028,94786,34457,16906,90040,30789,40281,94697,96584,81907,4055,53990,66397,80579,42517,78181,39251,9467,67097,95523,66568,63632,71048,15581,39904,75774,77495,75994,29911,65690,41178,47712,70355,16998,56025,5230,10093,71495,34784,70950,54680,57811,53782,39145,36829,85342,40406,35883,45668,3459,29870,78252,70088,70621,67153,5737,40933,91075,93335,86853,15860,81167,91259,16118,52401,83593,84474,2423,75608,39646,90871,70284,82100,96032,5115,63678,2225,88087,58581,44364,57468,21539,13042,64150,63754,5210,87644,54114,64013,63562,41388,32397,74152,23982,71982,71700,33026,66477,47838,46712,39848,35083,65927,97868,11067,76771,71799,43836,41014,97025,93225,8511,63096,26628,73012,12543,76269,99708,2629,49845,73677,19193,14924,57236,95564,15010,59667,73773,78515,2624,99744,13585,33746,58771,94785,62628,99585,11363,80832,59979,9444,78700,2596,85984,69438,16913,96475,93283,18625,77086,45911,39746,64722,39938,43930,54619,302,50384,2738,75714,75249,95439,80714,52555,47266,96190,78750,94973,83669,16479,53163,48071,28e3,45011,26733,67132,83362,84162,43028,8415,27236,52651,89059,64844,80910,1676,91752,57815,26264,3415,57532,29981,61200,96036,62600,20068,56530,38487,8432,89514,26883,69165,97237,22361,55276,39902,95927,82190,49269,27212,46095,37106,64254,27460,49572,51700,27679,12574,33891,3867,9925,6476,82018,45094,59014,67113,44192,75,23318,79895,70550,81717,28833,30271,15821,14999,88174,62617,57517,55256,50281,51583,96879,5225,42272,5339,20483,57596,41011,75937,22767,50120,95938,49753,63882,99616,69083,38721,73889,80236,99531,23053,71237,48861,59046,76283,60538,19732,93877,30345,64882,66660,17026,70364,45676,8039,96228,89936,59141,95585,89552,97247,59325,27848,80058,15950,61481,90906,40998,44137,16144,66300,44091,50018,81364,18211,60294,76559,20279,27414,10589,39860,23e3,31767,95618,56738,50332,16936,70342,92481,30702,76264,62619,68678,62284,83112,93032,55203,52614,36950,41796,45403,79262,2887,53596,61308,20738,34811,27099,90956,65448,3080,75795,29753,97699,80872,23830,85882,74427,99523,74904,28017,45898,57232,48525,7086,26805,74533,92470,18840,76011,93109,14344,55614,50284,15865,19458,35856,13464,53679,64603,51571,56124,79107,29596,89572,78198,57121,73649,8804,87977,87959,70859,40909,77295,87877,75158,62810,92074,23244,59516,50552,31602,41899,6347,27821,68370,48596,88577,30231,25267,84622,31449,12086,56461,22962,78213,62483,93966,60437,52239,58113,32526,38708,81607,57016,1695,90110,4649,59990,23979,3855,10297,46516,96092,82305,30760,78756,4967,82876,4773,86651,16648,53133,82439,78851,49766,24553,15273,36417,1901,33386,76979,25920,33372,2695,11982,40911,6230,91696,43907,17827,30332,89203,32215,91806,23080,49102,9174,11548,54590,75803,66108,73882,62324,26017,72716,33887,1285,31604,71039,24337,53514,58964,89901,22040,92751,12617,37007,5523,61672,62557,98540,26094,60284,19621,96230,38044,6545,9458,42988,2913,86345,67936,90174,40840,44991,24256,34989,74086,13652,68706,1363,4294,88008,78693,83068,94746,221,89299,53186,5930,61889,51341,45412,58860,72568,11381,59785,36887,10690,31347,93326,96267,86987,57565,86836,49071,90331,41248,34629,30240,27270,3864,84308,3035,61369,36902,51017,44409,17120,23823,36460,63359,8333,63173,19134,6493,303,18550,26191,19051,81502,66343,6737,90430,65478,58982,82484,16483,47704,44640,68322,44548,72787,2335,28749,39320,5436,98146,56596,812,51445,35533,35478,47573,38414,25542,38032,13442,42983,97207,77854,57806,81616,52828,79429,47389,96795,57764,19605,24767,63253,18809,65093,44449,22952,76872,30983,38948,9310,48336,87651,27110,84427,76209,56412,12760,16747,14551,82626,31224,98636,75100,84882,79479,83420,5347,6803,90063,4617,40257,79183,41766,71873,25242,12275,336,40798,42055,74066,69128,32547,76508,32530,42359,89207,49758,58984,92732,15779,7234,28884,28226,50011,35883,99606,45423,76224,75427,85747,33879,97978,57441,927,19164,74716,40702,19715,70917,60344,40236,9019,50577,15598,53136,57285,20536,7539,74832,89184,41501,39447,97422,97041,21913,40581,76081,13089,28776,54164,55736,36263,71841,34488,74988,55467,43322,9214,36746,67981,71877,81683,32461,84091,19422,88366,62054,85664,13409,8003,88276,6989,16607,33633,85349,5784,25950,97998,74110,16699,60184,92818,79705,10381,1474,18656,50434,18232,92132,66537,70141,42854,25120,39581,28249,14215,34810,19767,3409,11807,6566,66138,42997,41999,67504,87117,28961,5e3,29673,77726,73225,54753,69712,71576,92337,17713,63185,87923,91889,68351,17712,75532,93849,48280,62219,317,25290,29209,90927,92929,92762,60413,2018,31793,76290,73373,80777,60819,77375,57886,47291,99670,32605,29064,99476,80999,31217,35,91300,14892,73653,26593,25305,56797,12837,39560,27582,37253,38531,76489,49946,69108,58687,43092,73807,96282,6648,67431,87124,57694,21660,64002,6,33600,30245,60636,80164,9285,61426,4658,54130,14710,76553,1904,93668,63110,98618,5601,32199,74923,98049,49717,55539,35940,58545,43295,35810,45451,38735,42065,66769,69825,45461,83881,67372,67351,90612,79502,69460,23108,74421,82990,46821,40683,71603,55267,48192,50242,79738,96417,6664,19929,23644,41116,51056,219,45086,32747,49492,15399,24874,80825,95928,61457,45813,59037,16136,3953,83583,5910,12654,53630,92997,22168,93491,71897,74579,24022,6278,24049,71670,43044,8474,38572,77402,35800,7455,96177,41653,74493,20802,65843,73050,73349,2638,65813,96209,49196,45007,32207,14097,66059,46681,7534,71263,20582,10171,51514,52142,60961,57951,25637,37860,21683,86190,90434,94481,85697,95344,2606,74095,61133,7472,64777,94050,41482,975,23471,76052,82021,87676,91345,20196,2612,86299,44996,40312,65712,46079,88514,8610,3685,63197,9073,53105,86824,28112,99306,40706,66840,83003,51590,52755,32285,68454,85058,13645,23073,24724,52989,71880,21952,44144,74975,76715,7844,46447,86643,75579,29276,10864,83179,36721,19300,35066,29383,47478,56644,33354,31414,17643,92374,85085,88458,87191,85248,34963,76278,53230,13953,76985,70959,36663,5293,32658,56767,56997,76736,6558,64248,11907,29123,78458,17678,63805,89973,5076,39263,54404,4355,64957,74407,99838,18836,78098,6490,74888,73719,80675,86178,56283,33591,96957,38382,18772,74773,71229,2603,52673,44609,14843,58418,18060,95459,626,30914,13550,42195,44863,8871,89182,64446,78422,41140,15312,98274,48168,95651,35562,85386,56252,72136,85088,68761,78434,98143,61330,2446,64409,49406,99127,98626,55095,44808,13594,87370,89472,12833,98932,68064,58193,20225,5192,28425,23978,24542,80845,55858,4015,21454,37346,51007,17202,10242,12682,55933,96922,22280,75597,50227,70712,44236,20470,36320,49339,60536,80083,38880,93327,49522,93585,9918,55268,4671,57526,11457,48424,54610,7211,78610,9473,72923,27347,30057,76968,26177,59367,46172,88951,40229,34921,60405,88959,16779,29547,92231,61997,36002,21080,39795,77221,10012,49748,76900,15964,3803,40260,92351,92844,10288,57483,10881,70408,75688,16610,1638,93082,44282,66849,75702,69428,34047,84968,71281,72328,73143,88672,49802,50639,18129,93659,58389,49095,45971,34196,84609,59222,19332,17777,41004,47057,30688,16039,20906,41477,42915,60877,33864,75195,62294,3371,11672,1370,2486,35553,17907,90621,45136,9722,67635,12114,63055,16004,21625,24321,20491,26881,66259,94287,54751,36242,36557,5842,30687,65418,94608,24741,45887,78800,86912,42076,50287,9284,68891,76368,83094,96302,35997,30761,97081,9501,68887,32876,1705,34260,95065,45528,88241,30402,12318,52430,40139,96986,84900,72408,42027,31676,54382,73370,26184,14024,57444,57660,52173,30274,93448,63273,77681,74946,2099,69091,19372,66961,14595,58642,75760,52253,53148,26074,52293,65359,63971,4833,86492,1227,54505,19515,89889,46933,13364,33883,83389,36952,52505,67513,40071,31001,3105,87912,29610,75108,37363,28479,43546,89992,19550,54863,82633,19209,21548,35022,21960,57961,11815,95867,559,26428,69386,57453,70147,73538,49562,46806,64550,36653,25718,68792,31113,7607,48037,71020,22666,65957,11141,39227,7990,19849,65972,74528,40888,55386,95918,92088,91125,53648,66122,138,79933,71058,34826,97725,69513,22915,18246,52244,91161,40861,40374,13239,56162,4703,95851,22824,41271,28202,62852,84238,46625,20031,8524,20077,65817,21174,29279,57712,22401,67500,30980,74485,26480,21343,30031,61921,35744,57308,71196,1865,49234,62616,54021,29008,83672,85839,96836,45077,80900,66906,63526,93824,71820,11033,20183,85704,4683,63512,39144,56880,64424,95979,17709,94849,31771,5737,84286,16757,46256,24478,73180,59978,8254,78963,95437,86351,33824,32540,18357,2668,99260,21284,81351,70961,10255,6911,47394,72408,23827,59865,96395,30665,43699,3593,29165,23388,26628,92402,16731,86740,29493,9069,78653,90094,42735,33682,95041,89887,92369,57949,81585,50593,14698,4737,72551,57271,59433,156,33966,58773,59108,49578,18100,59836,73221,21110,1650,11058,47770,66141,84576,58388,40915,94507,32209,17272,65674,95552,25685,5345,36995,36302,7971,67001,62062,75939,36005,26739,56484,46885,66348,87666,78055,44485,82955,85936,9219,1847,92687,72579,45457,78252,98239,4e4,75563,92408,17175,78845,32638,26959,35406,59553,57852,7506,9,93172,77713,93880,40981,27924,9678,24538,52426,84852,83781,23712,82490,77890,22482,66668,55850,25644,44972,62275,78089,28894,98685,32998,98766,89119,34355,75127,69797,71419,62067,57990,96514,50603,79807,26135,29207,43632,32905,38513,18924,88872,20758,70232,60425,1116,24077,21369,93541,75329,78656,44251,42014,98154,42552,14575,30765,348,1134,71581,68420,78141,21105,63305,9718,54851,65867,8595,47390,39182,51174,41478,64433,59628,31945,87322,78667,95282,5622,26224,19972,97269,98376,14779,51138,49658,45345,4972,52794,15737,496,48939,63485,42780,16061,59631,37171,13483,56058,51093,62290,88227,17400,88433,67363,89507,26482,85964,71336,67799,28342,37747,61722,27180,78755,18603,42953,6606,23875,56766,1932,36113,62807,84012,21103,9685,69662,76755,13701,95168,13169,44726,15284,16702,89617,54397,52052,12835,37741,86434,22400,37947,95763,86337,35189,22756,47473,16618,42479,47405,14055,64262,66670,89692,54032,94591,44149,29854,76691,33263,62048,25116,88598,16119,62116,54517,31883,86707,18895,81790,71294,2684,15292,48107,14341,91416,75609,92564,39987,2283,89970,95855,80970,5432,89860,90293,99851,94648,5598,32171,28793,92305,64244,8277,93391,96717,34464,29838,10664,28050,60122,77934,10758,84922,92220,45071,97697,36368,17792,84792,76594,67319,51886,5665,45201,11348,9254,7510,51039,91683,84500,85338,5555,19633,3870,39576,41486,58524,54508,20707,58504,39642,22454,80069,83455,31043,90794,51934,3295,26582,16300,74990,22197,83310,69642,81113,58558,84833,17105,46659,25003,85749,44829,4103,67516,76458,52392,53546,70291,98846,67315,30686,18555,29755,5923,22732,19501,56181,85351,5023,4808,56911,16793,75336,49712,27723,96974,34321,5454,12862,71924,45928,95697,68664,58183,78104,42483,71204,99628,40642,56410,17350,13396,76724,87509,9158,83708,27298,92651,95086,38851,63558,89810,1580,32518,35795,26514,56322,78635,63731,91428,7247,66460,38671,26799,22549,47991,46064,80467,40083,17141,39152,99872,27561,75389,74778,94893,82935,99076,93419,10474,84436,47536,16719,60136,80566,28404,74525,74212,3704,65516,98197,34210,64140,22238,49939,99542,27481,21992,78181,90060,71365,66935,29578,14961,8569,9454,43308,66753,45972,93572,16382,87320,37183,25478,38164,31997,69856,60898,63968,62264,4799,17591,89937,73905,55890,88285,2448,40398,54180,65869,45155,43407,39105,339,51619,20203,21189,68245,76912,1222,76411,82679,7,66047,32043,42627,16638,27019,15248,66444,8249,18790,82150,54084,84469,3426,50226,99868,88894,43769,66384,8593,41414,2976,60053,51866,87904,74135,53842,59520,67482,16995,32328,29555,49067,2799,68851,41049,97190,53984,99755,46412,45885,64e3,21962,36438,71742,57223,66599,86071,31436,32667,98099,38399,47377,5171,2742,48803,17823,22093,9866,691,5514,25546,2114,5919,56181,96052,67211,61712,25995,3188,23833,38549,44775,55355,61548,55988,47309,23749,30667,70732,33299,16127,30842,78961,41072,9876,18903,30292,25275,61881,15939,72573,84502,92654,97226,53434,77025,63892,12421,33644,39445,30933,84218,13757,37719,84450,2697,60309,22402,80310,92771,45205,72792,95776,85945,74651,216,50842,47854,21916,61588,75405,10495,83083,60427,78495,99809,47890,22993,21508,9459,26845,98130,1184,46438,27698,40652,65654,98517,1096,6998,49133,57041,77983,58708,42176,67356,324,70063,10597,65205,25622,34336,16640,27896,26907,86760,48244,89650,44997,51609,28934,9171,97859,97213,19859,41037,64081,94781,27683,41521,52871,86935,26486,38744,25943,60617,6414,42292,46204,53262,30201,38776,88831,97253,67282,72860,18452,60927,81504,57713,30296,10896,39900,67135,42772,4631,55283,39253,25264,1809,12874,88035,88421,90491,83290,6884,15444,90113,20406,20796,40239,34431,15018,45600,17241,26611,9551,89126,65673,31708,91252,39647,63011,24193,58932,89326,33491,53217,27976,70151,37531,53576,23931,11789,73073,52171,89301,51718,15385,79487,66436,35771,34163,86540,42665,80748,77622,14679,40185,25030,42622,13162,17048,24243,59985,59807,60562,3595,10135,29199,69784,59796,38194,58432,50943,40422,63035,3208,81440,90749,88046,32218,88092,22224,2627,91576,16781,43948,57795,71073,27817,87077,82717,24473,42096,76920,88864,90537,14715,42551,45066,24316,37361,38582,21871,14672,93362,21727,57021,94313,39562,64985,94028,46094,43845,91838,79574,7597,3153,56783,18817,74711,6883,91061,31674,73729,99315,66183,57647,74484,68077,33224,397,56753,53158,71872,68153,9298,20961,49656,33407,95683,14328,44708,72952,27048,67887,28741,46752,88177,95894,40086,88534,87112,68614,83073,88794,96799,67588,75049,84603,83140,97347,87316,73087,77135,71883,98643,3808,8848,14133,60447,1366,72976,1868,51667,63279,60040,88264,79152,3474,61366,20523,21584,93712,83654,89761,90154,96345,37539,32556,74254,70603,97122,44978,78028,8943,13778,11080,34271,68276,85372,48410,94516,15427,75323,71685,70774,50342,33771,3678,42321,69788,41758,55004,30992,17402,63523,42328,87171,24751,15084,33884,83655,88345,69602,52606,57886,18034,3381,75796,35901,77480,28683,68324,66035,7223,14926,16128,13645,90370,31949,11057,98849,29499,21565,30786,83292,92392,37104,36899,49906,79368,43710,80365,88735,75275,21664,57965,19002,301,12658,94385,1717,96191,50404,80166,93965,24688,27839,10812,31715,92127,42588,93307,80834,11317,26583,25769,98227,14884,58462,29148,68662,26872,72927,79021,51622,29521,33355,45701,45996,33782,93424,16530,96086,17329,74020,11501,46660,5583,22277,77653,55430,84644,448,86828,58855,67451,95264,67386,82424,52611,60012,88620,72894,94716,22262,99813,69592,63464,33163,91857,47904,22209,78590,68615,52952,31441,41313,18550,72685,68825,4795,53971,14592,39634,23682,76630,2731,81481,86542,23727,54291,56045,61635,32186,9355,73416,63532,24340,18886,84832,30654,48543,18339,65024,91197,64624,74648,9660,27897,49771,11123,8732,49393,12911,72416,17834,18878,62754,85072,23727,56577,51257,83291,12329,16203,91681,68137,79959,43609,58987,2026,42969,59144,84349,75214,76972,22633,64104,53799,16851,99197,70476,77113,46320,88693,37711,96536,68156,7119,2104,49435,77706,18924,24957,92406,87148,70482,36491,42605,54440,7893,31618,35707,65130,30007,75706,77266,37100,9601,87681,42543,69847,81848,32034,49429,99434,62209,17125,55227,61634,52574,83649,28725,70119,62467,80676,21192,99584,21310,25292,72781,17186,10393,98390,19789,92931,36234,62627,23437,3885,58822,82941,43806,8172,23790,72295,36196,98200,2889,87619,13846,56197,27151,21238,48794,81100,62643,40001,39243,33213,78416,194,91369,79342,36404,52308,13741,24442,88610,12659,11574,70052,93039,79367,41792,61816,35435,47192,97596,28330,41145,16918,62865,9576,45857,68737,90124,16703,7071,48433,57222,34435,800,72496,16449,68187,28739,97672,86818,50768,40807,88681,64340,2224,19703,59245,90905,31239,84216,93942,97371,16842,92168,52692,16064,84686,89444,27938,98406,41365,4515,20494,18813,16242,10634,61566,18592,78057,8720,33739,78345,87693,30242,70545,55521,23687,9160,8655,38811,61768,7228,5567,5561,82071,85,50145,23113,97761,88441,14891,72188,85166,37189,75671,81377,92470,73645,93258,6610,12185,43065,26704,47922,56650,7527,18006,56948,51675,16658,66402,1047,81624,77395,62310,73262,66050,57275,32936,87641,51528,58183,21952,84098,28913,28622,18140,89796,41317,93954,67690,64667,57092,21315,4731,76115,77291,11204,8634,93034,27411,27149,13843,9817,9407,84492,28444,59901,14592,89654,66207,66232,80293,74502,36925,55515,10121,16768,4720,71502,40500,21406,571,87320,81683,42788,86367,44686,22159,67015,35892,49668,83991,72088,30210,74009,86370,97956,2132,93512,54819,26094,51409,21485,94764,85806,13393,48543,7042,76538,64224,47909,9994,23750,17351,52141,30486,60380,86546,66606,36913,58173,45709,83679,82617,23381,9603,61107,566,6572,64745,10614,86371,43244,97154,10397,50975,68006,20045,16942,25536,74031,31807,70133,78790,40341,68730,39635,39013,66841,44043,96215,21270,59427,25034,40645,84741,52083,54503,36861,27659,95463,53847,40921,70116,61536,56756,8967,31079,20097,76014,99818,16606,19713,66904,27106,24874,96701,73287,76772,6073,57343,51428,91171,28299,17520,64903,4177,36071,94952,59008,28543,11576,74547,13260,20688,41261,2780,6633,37536,8844,95774,49323,30448,14154,83379,71259,23302,68402,43750,88505,15575,44927,6584,29867,21541,65763,12154,86616,79877,73259,68626,98962,68548,86576,48046,51755,64995,3661,64585,81550,46798,49319,50206,22024,5175,12923,23427,55915,91723,55831,83784,81034,86779,34622,84570,18960,48798,42970,95789,39465,82353,68905,44234,18244,54345,5592,89361,14644,67924,66415,89349,88530,72096,44459,5258,48317,48866,56886,90458,75889,4514,37227,11302,4667,2129,80414,86289,15887,87380,50749,83220,50529,20619,11606,36531,23409,78122,19566,76564,33045,66703,30017,35347,35038,12952,13971,3922,98702,11786,38388,69556,76728,60535,59961,23634,42211,98387,34880,27755,93182,99040,96390,65989,38375,3652,59657,57431,24666,11061,64713,85185,72849,58611,31220,26657,77056,24553,24993,5210,89024,32054,46997,92652,28363,98992,22593,97710,47766,37646,93573,95502,33790,92973,27766,62671,89698,10877,73893,41004,96035,18795,48080,59666,30241,35233,87353,43647,13404,41982,19264,29229,61369,8309,39383,42305,25944,13577,51545,68990,69801,37145,79189,55897,57793,66816,21930,56771,79296,73793,21632,42301,23696,72641,56310,85576,3004,25669,69221,32996,23040,65782,23712,13414,10758,15590,97298,74246,51511,46900,36795,38292,3852,6384,84421,3446,91670,45312,27609,87034,6683,83891,88991,16533,9197,34427,60384,48525,90978,46107,21693,12956,21804,46558,37682,81207,85840,53238,35026,4835,53264,41376,17783,64756,39278,25403,33042,20954,31193,24247,45911,92453,25370,86602,48574,57865,26436,16122,76614,17028,21262,59718,77821,14036,31033,90563,45410,15158,90209,84089,38053,60780,54166,14255,33120,27171,71798,91214,80040,56699,12475,40193,59415,4769,75920,1036,2692,75862,16612,73670,61182,3305,90334,187,91659,28063,75684,50017,82643,9282,77376,85469,8164,5584,36623,82597,83859,3435,98460,70095,80257,4381,6501,8924,35514,14297,54373,71369,5172,15955,82441,4636,48215,6821,3385,17663,40107,55679,30366,42390,95895,16083,58499,17176,55993,51034,49296,4010,78974,35930,2019,96226,27167,68245,53109,59037,37843,79243,10262,58797,61490,82590,52411,54783,29447,94551,30026,97959,93939,73217,82573,62154,78291,33728,39102,11484,86210,43794,73553,87435,1110,77108,56521,78610,8254,1842,43068,70415,79195,26136,49786,47279,38471,20379,54704,86614,91138,51595,50818,80186,73087,17262,94735,4952,27935,4928,74862,51392,62388,9570,38485,30594,56278,47395,72762,94597,72279,16010,34697,54475,67874,78014,88381,4045,41494,55178,46054,24373,1824,55333,7525,97908,61178,84635,2199,35361,4803,21907,79414,66083,54782,58692,28332,41851,28198,55819,37313,67046,16147,90478,71230,34141,85002,44332,35906,429,39744,773,22909,19536,98986,90945,45209,85439,92265,25291,22775,60611,49159,95701,36113,53923,60824,84935,29656,50007,86624,61691,76150,32187,42765,60660,13859,10792,88210,29374,29563,45188,28811,19739,67649,73775,99247,48414,91067,68253,9452,90116,91737,73979,62370,69112,58791,20349,71480,56852,36919,87977,77609,68738,85159,4918,70076,46473,4122,57713,1426,50987,77910,66211,62546,77749,96462,34304,77441,12104,91805,10287,60943,49632,83116,25716,23113,22707,77770,31176,6759,46130,4739,55554,3843,31653,70834,72877,41561,36903,23010,6663,2266,16360,70118,91936,17098,77278,4880,23484,94970,41826,46733,93484,68350,38861,18134,32936,241,24803,13876,93278,5039,35873,44418,5305,28510,36115,46717,15238,78607,23464,68635,55712,55007,92411,65739,4858,67537,37041,67453,89801,45963,14800,14225,65655,80463,9716,77255,65136,11230,76323,81433,36445,86523,61058,59560,19380,40791,48073,29626,36661,87907,57369,41623,13705,3880,45088,55444,41003,27754,1450,75312,71801,99600,60719,54182,29245,63315,73758,42973,32702,10855,56363,14638,84424,27178,78195,3133,70865,48019,26117,7151,52107,85562,41347,50486,69457,86961,95482,11857,93587,45680,42145,13029,10043,5142,49213,54525,85761,42707,70754,33768,87671,85038,58900,88438,20004,63390,14815,38875,73417,82875,89481,55517,944,15773,61814,32915,27868,5510,21916,28426,89881,16680,88850,11056,51991,4230,39107,49216,40065,4523,75848,95349,56034,10724,9885,88232,42478,65702,95696,39746,66032,88082,86905,30007,75068,66629,7358,26706,90511,72843,67857,20061,98581,69682,38e3,14186,70,2290,17269,30909,69449,19997,13275,2444,84985,51290,97641,15092,69650,21920,19617,7418,49725,91090,20805,28627,80665,67192,34697,57667,99323,50101,40587,35081,14037,34414,19898,60779,83267,87499,29596,41852,15813,32419,72232,8322,39184,46525,13833,65743,94595,37363,4711,35386,96413,10627,62625,56555,12919,93218,25191,98380,51923,66181,5788,73491,1452,487,12277,45415,11884,61300,94528,9181,26616,11455,31514,63290,45035,42759,33804,85721,80979,46010,50975,72482,31231,3086,58941,46102,25773,89742,29788,96741,88523,14922,88262,76305,57676,93259,2396,69145,26074,30056,3853,75317,56639,66203,38923,48939,22813,91864,10934,6714,84099,25631,73223,95630,97552,45950,22197,42886,33764,1263,41856,82057,62349,94091,78028,62651,18911,5693,92561,97821,41994,92343,76785,22216,4203,5038,86151,23596,24338,77181,51761,97693,10955,98159,37568,58932,72128,27303,99608,31688,57557,91022,43036,93927,32869,53653,55205,33139,47271,31224,51650,36422,86857,73799,22068,43376,84760,44898,65776,42451,71480,38509,41673,44141,75918,95652,68981,83001,48815,98086,67950,27986,33175,43624,55274,71051,61124,51550,64967,31570,15748,19159,38174,51078,79811,39183,57527,96550,85168,28824,47466,56993,13151,96664,29735,70251,1079,4314,77714,11507,1440,48415,31984,99915,20282,26524,18057,4992,40521,98108,84045,91961,79256,72244,25788,5487,23595,73302,14205,8925,27625,64343,28821,37992,67156,83320,31106,10884,30735,15067,51091,15668,48777,50770,19169,76504,41165,29749,92812,8065,66782,26841,1411,95461,61134,18699,52261,60469,81373,44825,11448,73320,30151,56991,31372,6655,36472,86292,30247,30931,21029,53410,9859,37267,47514,3492,49008,94727,25234,40546,53417,36492,25723,76227,58456,15979,34876,9574,34392,3751,36933,83921,65108,63135,67572,40184,21098],l=new Array(16),h=[16,8,16,24],f=4,p=0;!function(){for(var t=0;t<16;t++){l[t]=new Array(256);for(var e=0;e<256;e++)l[t][e]=e|e<<8|e<<16|e<<24|0;for(var n=3;0<=n;n--)for(var r=0;r<255;r++){var i=255<<(n<<3),o=0|l[t][r],s=function(t,e){var n=e-t+1,r=0,i=1;do{for(r=0,i=1;i<n;i*=10)r=10*r+(f<0&&(f=4,p++),u[p]%Math.pow(10,f+1)/Math.pow(10,f--)|0)}while((i/n|0)*n<=r);return t+r%n|0}(r,255);l[t][r]=l[t][r]&~i|l[t][s]&i|0,l[t][s]=l[t][s]&~i|o&i|0}}}();(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)})(d,r.a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(d.prototype,[{key:\"reset\",value:function(){o(s(d.prototype),\"reset\",this).call(this),this.state.hash=new Array(this.options.length/32|0);for(var t=0;t<this.state.hash.length;t++)this.state.hash[t]=0}},{key:\"processBlock\",value:function(t){for(var e=0;e<this.state.hash.length;e++)this.W[e]=0|this.state.hash[e];for(var n=this.state.hash.length;n<16;n++)this.W[n]=0|t[n-this.state.hash.length];for(var r=0;r<this.options.rounds<<1;r+=2)for(var i=0;i<4;i++){for(var o=0;o<16;o++){var s=0|l[r+(o/2|0)%2][255&this.W[o]];this.W[o-1>>>0&15]^=s,this.W[o+1&15]^=s}for(var a=0;a<16;a++)this.W[a]=Object(c.b)(this.W[a],h[i])}for(var u=0;u<this.state.hash.length;u++)this.state.hash[u]=this.state.hash[u]^this.W[15-u]|0}},{key:\"finalize\",value:function(){return 0<this.state.message.length&&this.addPaddingZero(this.blockSizeInBytes-this.state.message.length|0),this.addPaddingZero(this.blockSizeInBytes-8|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),r=d;function d(t){var e;return function(t){if(!(t instanceof d))throw new TypeError(\"Cannot call a class as a function\")}(this),(t=t||{}).length=t.length||128,t.rounds=t.rounds||8,e=this,(t=!(t=s(d).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).blockSize=16-t.state.hash.length,t.blockSizeInBytes=t.blockSize*t.unitSize,t.W=new Array(16),t}e.a=r},function(t,e,n){\"use strict\";var r=n(5),u=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e,n){return(s=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}for(var l=[[7,12,17,22],[5,9,14,20],[4,11,16,23],[6,10,15,21]],h=new Array(64),f=0;f<64;f++)h[f]=4294967296*Math.abs(Math.sin(f+1))|0;(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)})(p,r.a),n=[{key:\"FF\",value:function(t,e,n){return t&e|~t&n}},{key:\"GG\",value:function(t,e,n){return t&n|e&~n}},{key:\"HH\",value:function(t,e,n){return t^e^n}},{key:\"II\",value:function(t,e,n){return e^(t|~n)}},{key:\"CC\",value:function(t,e,n,r,i,o,s,a){return Object(u.a)(n+t(r,i,o)+s+e,a)+r|0}}],o((r=p).prototype,[{key:\"reset\",value:function(){s(a(p.prototype),\"reset\",this).call(this),this.state.hash=[1732584193,-271733879,-1732584194,271733878]}},{key:\"processBlock\",value:function(t){var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],e=p.CC(p.FF,h[0],e,n,r,i,t[0],l[0][0]),i=p.CC(p.FF,h[1],i,e,n,r,t[1],l[0][1]),r=p.CC(p.FF,h[2],r,i,e,n,t[2],l[0][2]),n=p.CC(p.FF,h[3],n,r,i,e,t[3],l[0][3]);e=p.CC(p.FF,h[4],e,n,r,i,t[4],l[0][0]),i=p.CC(p.FF,h[5],i,e,n,r,t[5],l[0][1]),r=p.CC(p.FF,h[6],r,i,e,n,t[6],l[0][2]),n=p.CC(p.FF,h[7],n,r,i,e,t[7],l[0][3]),e=p.CC(p.FF,h[8],e,n,r,i,t[8],l[0][0]),i=p.CC(p.FF,h[9],i,e,n,r,t[9],l[0][1]),r=p.CC(p.FF,h[10],r,i,e,n,t[10],l[0][2]),n=p.CC(p.FF,h[11],n,r,i,e,t[11],l[0][3]),e=p.CC(p.FF,h[12],e,n,r,i,t[12],l[0][0]),i=p.CC(p.FF,h[13],i,e,n,r,t[13],l[0][1]),r=p.CC(p.FF,h[14],r,i,e,n,t[14],l[0][2]),n=p.CC(p.FF,h[15],n,r,i,e,t[15],l[0][3]),e=p.CC(p.GG,h[16],e,n,r,i,t[1],l[1][0]),i=p.CC(p.GG,h[17],i,e,n,r,t[6],l[1][1]),r=p.CC(p.GG,h[18],r,i,e,n,t[11],l[1][2]),n=p.CC(p.GG,h[19],n,r,i,e,t[0],l[1][3]),e=p.CC(p.GG,h[20],e,n,r,i,t[5],l[1][0]),i=p.CC(p.GG,h[21],i,e,n,r,t[10],l[1][1]),r=p.CC(p.GG,h[22],r,i,e,n,t[15],l[1][2]),n=p.CC(p.GG,h[23],n,r,i,e,t[4],l[1][3]),e=p.CC(p.GG,h[24],e,n,r,i,t[9],l[1][0]),i=p.CC(p.GG,h[25],i,e,n,r,t[14],l[1][1]),r=p.CC(p.GG,h[26],r,i,e,n,t[3],l[1][2]),n=p.CC(p.GG,h[27],n,r,i,e,t[8],l[1][3]),e=p.CC(p.GG,h[28],e,n,r,i,t[13],l[1][0]),i=p.CC(p.GG,h[29],i,e,n,r,t[2],l[1][1]),r=p.CC(p.GG,h[30],r,i,e,n,t[7],l[1][2]),n=p.CC(p.GG,h[31],n,r,i,e,t[12],l[1][3]),e=p.CC(p.HH,h[32],e,n,r,i,t[5],l[2][0]),i=p.CC(p.HH,h[33],i,e,n,r,t[8],l[2][1]),r=p.CC(p.HH,h[34],r,i,e,n,t[11],l[2][2]),n=p.CC(p.HH,h[35],n,r,i,e,t[14],l[2][3]),e=p.CC(p.HH,h[36],e,n,r,i,t[1],l[2][0]),i=p.CC(p.HH,h[37],i,e,n,r,t[4],l[2][1]),r=p.CC(p.HH,h[38],r,i,e,n,t[7],l[2][2]),n=p.CC(p.HH,h[39],n,r,i,e,t[10],l[2][3]),e=p.CC(p.HH,h[40],e,n,r,i,t[13],l[2][0]),i=p.CC(p.HH,h[41],i,e,n,r,t[0],l[2][1]),r=p.CC(p.HH,h[42],r,i,e,n,t[3],l[2][2]),n=p.CC(p.HH,h[43],n,r,i,e,t[6],l[2][3]),e=p.CC(p.HH,h[44],e,n,r,i,t[9],l[2][0]),i=p.CC(p.HH,h[45],i,e,n,r,t[12],l[2][1]),r=p.CC(p.HH,h[46],r,i,e,n,t[15],l[2][2]),n=p.CC(p.HH,h[47],n,r,i,e,t[2],l[2][3]),e=p.CC(p.II,h[48],e,n,r,i,t[0],l[3][0]),i=p.CC(p.II,h[49],i,e,n,r,t[7],l[3][1]),r=p.CC(p.II,h[50],r,i,e,n,t[14],l[3][2]),n=p.CC(p.II,h[51],n,r,i,e,t[5],l[3][3]),e=p.CC(p.II,h[52],e,n,r,i,t[12],l[3][0]),i=p.CC(p.II,h[53],i,e,n,r,t[3],l[3][1]),r=p.CC(p.II,h[54],r,i,e,n,t[10],l[3][2]),n=p.CC(p.II,h[55],n,r,i,e,t[1],l[3][3]),e=p.CC(p.II,h[56],e,n,r,i,t[8],l[3][0]),i=p.CC(p.II,h[57],i,e,n,r,t[15],l[3][1]),r=p.CC(p.II,h[58],r,i,e,n,t[6],l[3][2]),n=p.CC(p.II,h[59],n,r,i,e,t[13],l[3][3]),e=p.CC(p.II,h[60],e,n,r,i,t[4],l[3][0]),i=p.CC(p.II,h[61],i,e,n,r,t[11],l[3][1]),r=p.CC(p.II,h[62],r,i,e,n,t[2],l[3][2]),n=p.CC(p.II,h[63],n,r,i,e,t[9],l[3][3]),this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),o(r,n),n=p;function p(){return function(t){if(!(t instanceof p))throw new TypeError(\"Cannot call a class as a function\")}(this),t=this,!(e=a(p).apply(this,arguments))||\"object\"!==i(e)&&\"function\"!=typeof e?function(){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():e;var t,e}e.a=n},function(t,e,n){\"use strict\";var r=n(3),u=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e,n){return(o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var c=[1518500249,1859775393,2400959708,3395469782],r=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(l,r.a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(l.prototype,[{key:\"reset\",value:function(){o(s(l.prototype),\"reset\",this).call(this),this.state.hash=[1732584193,-271733879,-1732584194,271733878,-1009589776]}},{key:\"processBlock\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=0;s<this.options.rounds;s++){this.W[s]=s<16?0|t[s]:0|Object(u.a)(this.W[s-3]^this.W[s-8]^this.W[s-14]^this.W[s-16],1);var a=Object(u.a)(e,5)+o+this.W[s]+c[s/20>>0]|0,a=s<20?a+(n&r|~n&i)|0:!(s<40)&&s<60?a+(n&r|n&i|r&i)|0:a+(n^r^i)|0,o=i,i=r,r=0|Object(u.a)(n,30),n=e,e=a}this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0,this.state.hash[4]=this.state.hash[4]+o|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),l);function l(t){var e;return function(t){if(!(t instanceof l))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=s(l).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).options.rounds=t.options.rounds||80,t.W=new Array(80),t}e.a=r},function(t,e,n){\"use strict\";var c=n(0),n=n(3);function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e,n){return(i=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=o(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var a=new Array(256),u=[104,208,235,43,72,157,106,228,227,163,86,129,125,241,133,158,44,142,120,202,23,169,97,213,93,11,140,60,119,81,34,66,63,84,65,128,204,134,179,24,46,87,6,98,244,54,209,107,27,101,117,16,218,73,38,249,203,102,231,186,174,80,82,171,5,240,13,115,59,4,32,254,221,245,180,95,10,181,192,160,113,165,45,96,114,147,57,8,131,33,92,135,177,224,0,195,18,145,138,2,28,230,69,194,196,253,191,68,161,76,51,197,132,35,124,176,37,21,53,105,255,148,77,112,162,175,205,214,108,183,248,9,243,103,164,234,236,182,212,210,20,30,225,36,56,198,219,75,122,58,222,94,223,149,252,170,215,206,7,15,61,88,154,152,156,242,167,17,126,139,67,3,226,220,229,178,78,199,109,233,39,64,216,55,146,143,1,29,83,62,89,193,79,50,22,250,116,251,99,159,52,26,42,90,141,201,207,246,144,40,136,155,49,14,189,74,232,150,166,12,200,121,188,190,239,110,70,151,91,237,25,217,172,153,168,41,100,31,173,85,19,187,247,111,185,71,47,238,184,123,137,48,211,127,118,130],l=[1,11,9,12,13,6,15,3,14,8,7,4,10,2,5,0],h=[7,12,11,13,14,4,9,15,6,3,8,10,2,5,1,0],f=new Array(16),p=[1,1,4,1,8,5,2,9],d=[1,1,3,1,5,8,9,5],g=new Array(512),m=new Array(22),v=new Array(512),y=new Array(22),b=new Array(512),w=new Array(22);function _(t,e){for(var n=new Array(512),r=new Array(22),i=0;i<8;i++)n[i]=[];for(var o=0;o<256;o++){var s=new Array(10);s[1]=t[o],s[2]=s[1]<<1,256<=s[2]&&(s[2]^=285),s[3]=s[2]^s[1],s[4]=s[2]<<1,256<=s[4]&&(s[4]^=285),s[5]=s[4]^s[1],s[8]=s[4]<<1,256<=s[8]&&(s[8]^=285),s[9]=s[8]^s[1],n[0][2*o]=s[e[0]]<<24|s[e[1]]<<16|s[e[2]]<<8|s[e[3]],n[0][2*o+1]=s[e[4]]<<24|s[e[5]]<<16|s[e[6]]<<8|s[e[7]];for(var a=1;a<8;a++)n[a][2*o]=Object(c.d)(n[0][2*o+1],n[0][2*o],a<<3),n[a][2*o+1]=Object(c.c)(n[0][2*o+1],n[0][2*o],a<<3)}r[0]=0,r[1]=0;for(var u=1;u<=10;u++)r[2*u]=4278190080&n[0][16*u-16]^16711680&n[1][16*u-14]^65280&n[2][16*u-12]^255&n[3][16*u-10],r[2*u+1]=4278190080&n[4][16*u-7]^16711680&n[5][16*u-5]^65280&n[6][16*u-3]^255&n[7][16*u-1];return[n,r]}!function(){!function(){for(var t=0;t<16;t++)f[l[t]]=0|t;for(var e=0;e<256;e++){var n=l[e>>4],r=f[15&e],i=h[n^r];a[e]=l[n^i]<<4|f[r^i]}}();var t=_(u,d);v=t[0],y=t[1],t=_(a,d),b=t[0],w=t[1],t=_(a,p),g=t[0],m=t[1]}();(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)})(x,n.a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(x.prototype,[{key:\"reset\",value:function(){i(o(x.prototype),\"reset\",this).call(this),this.state.hash=new Array(16);for(var t=0;t<16;t++)this.state.hash[t]=0}},{key:\"processBlock\",value:function(t){for(var e=new Array(16),n=[],r=0;r<16;r++)n[r]=t[r]^(e[r]=this.state.hash[r])|0;for(var i=[],o=1;o<=this.options.rounds;o++){for(var s=0;s<8;s++){i[2*s]=0;for(var a=i[2*s+1]=0,u=56,c=0;a<8;a++,c=(u-=8)<32?1:0)i[2*s]^=this.C[a][2*(e[2*(s-a&7)+c]>>>u%32&255)],i[2*s+1]^=this.C[a][2*(e[2*(s-a&7)+c]>>>u%32&255)+1]}for(var l=0;l<16;l++)e[l]=i[l];e[0]^=this.RC[2*o],e[1]^=this.RC[2*o+1];for(var h=0;h<8;h++){i[2*h]=e[2*h],i[2*h+1]=e[2*h+1];for(var f=0,p=56,d=0;f<8;f++,d=(p-=8)<32?1:0)i[2*h]^=this.C[f][2*(n[2*(h-f&7)+d]>>>p%32&255)],i[2*h+1]^=this.C[f][2*(n[2*(h-f&7)+d]>>>p%32&255)+1]}for(var g=0;g<16;g++)n[g]=i[g]}for(var m=0;m<16;m++)this.state.hash[m]^=n[m]^t[m]}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<32?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),n=x;function x(t){var e,n;switch(function(t){if(!(t instanceof x))throw new TypeError(\"Cannot call a class as a function\")}(this),(t=t||{}).type=t.type||\"\",t.rounds=t.rounds||10,n=this,(e=!(t=o(x).call(this,t))||\"object\"!==r(t)&&\"function\"!=typeof t?function(){if(void 0!==n)return n;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).options.type){case\"0\":case 0:e.C=v,e.RC=y;break;case\"t\":e.C=b,e.RC=w;break;default:e.C=g,e.RC=m}return e}e.a=n},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t){return(i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)})(s,n(4).a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(s.prototype,[{key:\"process\",value:function(){for(;this.state.message.length>=this.blockSizeInBytes;){this.blockUnits=new Array(this.blockSizeInBytes);for(var t=0;t<this.blockSizeInBytes;t++)this.blockUnits[t]=0|this.state.message.charCodeAt(t);this.state.message=this.state.message.substr(this.blockSizeInBytes),this.processBlock(this.blockUnits)}}},{key:\"processBlock\",value:function(t){}},{key:\"getStateHash\",value:function(t){t=t||this.state.hash.length;for(var e=\"\",n=0;n<t;n++)e+=String.fromCharCode(255&this.state.hash[n]);return e}}]),n=s;function s(t){var e;return function(t){if(!(t instanceof s))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=i(s).call(this,t))||\"object\"!==r(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).unitSize=1,t.blockSizeInBytes=t.blockSize*t.unitSize,t.blockUnits=[],t}function a(t){return(a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function u(t,e,n){return(u=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=c(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function c(t){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var h=[41,46,67,201,162,216,124,1,61,54,84,161,236,240,6,19,98,167,5,243,192,199,115,140,152,147,43,217,188,76,130,202,30,155,87,60,253,212,224,22,103,66,111,24,138,23,229,18,190,78,196,214,218,158,222,73,160,251,245,142,187,47,238,122,169,104,121,145,21,178,7,63,148,194,16,137,11,34,95,33,128,127,93,154,90,144,50,39,53,62,204,231,191,247,151,3,255,25,48,179,72,165,181,209,215,94,146,42,172,86,170,198,79,184,56,210,150,164,125,182,118,252,107,226,156,116,4,241,69,157,112,89,100,113,135,32,134,91,207,101,230,45,168,2,27,96,37,173,174,176,185,246,28,70,97,105,52,64,126,15,85,71,163,35,221,81,175,58,195,92,249,206,186,197,234,38,44,83,13,110,133,40,132,9,211,223,205,244,65,129,77,82,106,220,55,200,108,193,171,250,36,225,123,8,12,189,177,74,120,136,149,139,227,99,232,109,233,203,213,254,59,0,29,57,242,239,183,14,102,88,208,228,166,119,114,248,235,117,75,10,49,68,80,180,143,237,31,26,219,153,141,51,159,17,131,20],n=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l(t,e)}(f,n),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(f.prototype,[{key:\"reset\",value:function(){u(c(f.prototype),\"reset\",this).call(this),this.state.hash=new Array(48),this.state.checksum=new Array(16)}},{key:\"processBlock\",value:function(t){for(var e=0;e<16;e++)this.state.hash[16+e]=0|t[e],this.state.hash[32+e]=t[e]^this.state.hash[e];for(var n=0,r=0;r<this.options.rounds;r++){for(var i=0;i<48;i++)n=this.state.hash[i]^=h[n];n=n+r&255}n=255&this.state.checksum[15];for(var o=0;o<16;o++)n=this.state.checksum[o]^=h[t[o]^n]}},{key:\"finalize\",value:function(){this.addPaddingPKCS7(16-(15&this.state.message.length)|0),this.process();for(var t=0;t<16;t++)this.state.message+=String.fromCharCode(this.state.checksum[t]);return this.process(),this.getStateHash(16)}}]),f);function f(t){var e;return function(t){if(!(t instanceof f))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=c(f).call(this,t))||\"object\"!==a(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).options.rounds=t.options.rounds||18,t}e.a=n},function(t,e,n){\"use strict\";var r=n(5),c=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e,n){return(o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var l=[0,1518500249,1859775393,2400959708],h=[5,11,7,15,6,13,8,14,7,12,9,11,8,15,6,12,9,14,5,13],f=[10,17,25,30],p=[18,0,1,2,3,19,4,5,6,7,16,8,9,10,11,17,12,13,14,15,22,3,6,9,12,23,15,2,5,8,20,11,14,1,4,21,7,10,13,0,26,12,5,14,7,27,0,9,2,11,24,4,13,6,15,25,8,1,10,3,30,7,2,13,8,31,3,14,9,4,28,15,10,5,0,29,11,6,1,12],r=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(u,r.a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(u.prototype,[{key:\"reset\",value:function(){o(s(u.prototype),\"reset\",this).call(this),this.state.hash=[1732584193,4023233417,2562383102,271733878,3285377520]}},{key:\"processBlock\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=0;s<16;s++)this.W[s]=0|t[s];this.W[16]=this.W[0]^this.W[1]^this.W[2]^this.W[3]|0,this.W[17]=this.W[4]^this.W[5]^this.W[6]^this.W[7]|0,this.W[18]=this.W[8]^this.W[9]^this.W[10]^this.W[11]|0,this.W[19]=this.W[12]^this.W[13]^this.W[14]^this.W[15]|0,this.W[20]=this.W[3]^this.W[6]^this.W[9]^this.W[12]|0,this.W[21]=this.W[2]^this.W[5]^this.W[8]^this.W[15]|0,this.W[22]=this.W[1]^this.W[4]^this.W[11]^this.W[14]|0,this.W[23]=this.W[0]^this.W[7]^this.W[10]^this.W[13]|0,this.W[24]=this.W[5]^this.W[7]^this.W[12]^this.W[14]|0,this.W[25]=this.W[0]^this.W[2]^this.W[9]^this.W[11]|0,this.W[26]=this.W[4]^this.W[6]^this.W[13]^this.W[15]|0,this.W[27]=this.W[1]^this.W[3]^this.W[8]^this.W[10]|0,this.W[28]=this.W[2]^this.W[7]^this.W[8]^this.W[13]|0,this.W[29]=this.W[3]^this.W[4]^this.W[9]^this.W[14]|0,this.W[30]=this.W[0]^this.W[5]^this.W[10]^this.W[15]|0,this.W[31]=this.W[1]^this.W[6]^this.W[11]^this.W[12]|0;for(var a=0;a<this.options.rounds;a++)var u=Object(c.a)(e,h[a%20])+o+this.W[p[a]]+l[a/20>>0]|0,u=a<20?u+(n&r|~n&i)|0:!(a<40)&&a<60?u+(r^(n|~i))|0:u+(n^r^i)|0,o=i,i=r,r=0|Object(c.a)(n,f[a/20>>0]),n=e,e=u;this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0,this.state.hash[4]=this.state.hash[4]+o|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),u);function u(t){var e;return function(t){if(!(t instanceof u))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=s(u).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).options.rounds=t.options.rounds||80,t.W=new Array(32),t}e.a=r},function(t,e,n){\"use strict\";n.d(e,\"a\",function(){return r});var o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function r(t){for(var e=\"\",n=t.length-t.length%3|0,r=0,i=0;i<n;i+=3)r=t.charCodeAt(i)<<16|t.charCodeAt(i+1)<<8|t.charCodeAt(i+2),e+=o.charAt(r>>18)+o.charAt(r>>12&63)+o.charAt(r>>6&63)+o.charAt(63&r);return t.length-n==2?(r=t.charCodeAt(n)<<16|t.charCodeAt(1+n)<<8,e+=o.charAt(r>>18)+o.charAt(r>>12&63)+o.charAt(r>>6&63)+\"=\"):t.length-n==1&&(r=t.charCodeAt(n)<<16,e+=o.charAt(r>>18)+o.charAt(r>>12&63)+\"==\"),e}},function(t,e,n){\"use strict\";var r=n(5),u=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e,n){return(s=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var l=[[3,7,11,19],[3,5,9,13],[3,9,11,15]],h=1518500249,f=1859775393,n=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(p,r.a),n=[{key:\"FF\",value:function(t,e,n){return t&e|~t&n}},{key:\"GG\",value:function(t,e,n){return t&e|t&n|e&n}},{key:\"HH\",value:function(t,e,n){return t^e^n}},{key:\"CC\",value:function(t,e,n,r,i,o,s,a){return 0|Object(u.a)(n+t(r,i,o)+s+e,a)}}],o((r=p).prototype,[{key:\"reset\",value:function(){s(a(p.prototype),\"reset\",this).call(this),this.state.hash=[1732584193,-271733879,-1732584194,271733878]}},{key:\"processBlock\",value:function(t){var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],e=p.CC(p.FF,0,e,n,r,i,t[0],l[0][0]),i=p.CC(p.FF,0,i,e,n,r,t[1],l[0][1]),r=p.CC(p.FF,0,r,i,e,n,t[2],l[0][2]),n=p.CC(p.FF,0,n,r,i,e,t[3],l[0][3]);e=p.CC(p.FF,0,e,n,r,i,t[4],l[0][0]),i=p.CC(p.FF,0,i,e,n,r,t[5],l[0][1]),r=p.CC(p.FF,0,r,i,e,n,t[6],l[0][2]),n=p.CC(p.FF,0,n,r,i,e,t[7],l[0][3]),e=p.CC(p.FF,0,e,n,r,i,t[8],l[0][0]),i=p.CC(p.FF,0,i,e,n,r,t[9],l[0][1]),r=p.CC(p.FF,0,r,i,e,n,t[10],l[0][2]),n=p.CC(p.FF,0,n,r,i,e,t[11],l[0][3]),e=p.CC(p.FF,0,e,n,r,i,t[12],l[0][0]),i=p.CC(p.FF,0,i,e,n,r,t[13],l[0][1]),r=p.CC(p.FF,0,r,i,e,n,t[14],l[0][2]),n=p.CC(p.FF,0,n,r,i,e,t[15],l[0][3]),e=p.CC(p.GG,h,e,n,r,i,t[0],l[1][0]),i=p.CC(p.GG,h,i,e,n,r,t[4],l[1][1]),r=p.CC(p.GG,h,r,i,e,n,t[8],l[1][2]),n=p.CC(p.GG,h,n,r,i,e,t[12],l[1][3]),e=p.CC(p.GG,h,e,n,r,i,t[1],l[1][0]),i=p.CC(p.GG,h,i,e,n,r,t[5],l[1][1]),r=p.CC(p.GG,h,r,i,e,n,t[9],l[1][2]),n=p.CC(p.GG,h,n,r,i,e,t[13],l[1][3]),e=p.CC(p.GG,h,e,n,r,i,t[2],l[1][0]),i=p.CC(p.GG,h,i,e,n,r,t[6],l[1][1]),r=p.CC(p.GG,h,r,i,e,n,t[10],l[1][2]),n=p.CC(p.GG,h,n,r,i,e,t[14],l[1][3]),e=p.CC(p.GG,h,e,n,r,i,t[3],l[1][0]),i=p.CC(p.GG,h,i,e,n,r,t[7],l[1][1]),r=p.CC(p.GG,h,r,i,e,n,t[11],l[1][2]),n=p.CC(p.GG,h,n,r,i,e,t[15],l[1][3]),e=p.CC(p.HH,f,e,n,r,i,t[0],l[2][0]),i=p.CC(p.HH,f,i,e,n,r,t[8],l[2][1]),r=p.CC(p.HH,f,r,i,e,n,t[4],l[2][2]),n=p.CC(p.HH,f,n,r,i,e,t[12],l[2][3]),e=p.CC(p.HH,f,e,n,r,i,t[2],l[2][0]),i=p.CC(p.HH,f,i,e,n,r,t[10],l[2][1]),r=p.CC(p.HH,f,r,i,e,n,t[6],l[2][2]),n=p.CC(p.HH,f,n,r,i,e,t[14],l[2][3]),e=p.CC(p.HH,f,e,n,r,i,t[1],l[2][0]),i=p.CC(p.HH,f,i,e,n,r,t[9],l[2][1]),r=p.CC(p.HH,f,r,i,e,n,t[5],l[2][2]),n=p.CC(p.HH,f,n,r,i,e,t[13],l[2][3]),e=p.CC(p.HH,f,e,n,r,i,t[3],l[2][0]),i=p.CC(p.HH,f,i,e,n,r,t[11],l[2][1]),r=p.CC(p.HH,f,r,i,e,n,t[7],l[2][2]),n=p.CC(p.HH,f,n,r,i,e,t[15],l[2][3]),this.state.hash=[this.state.hash[0]+e|0,this.state.hash[1]+n|0,this.state.hash[2]+r|0,this.state.hash[3]+i|0]}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),o(r,n),p);function p(){return function(t){if(!(t instanceof p))throw new TypeError(\"Cannot call a class as a function\")}(this),t=this,!(e=a(p).apply(this,arguments))||\"object\"!==i(e)&&\"function\"!=typeof e?function(){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():e;var t,e}e.a=n},function(t,e,n){\"use strict\";var r=n(3),u=n(0);function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e,n){return(o=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var c=[1518500249,1859775393,2400959708,3395469782],r=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(l,r.a),function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(l.prototype,[{key:\"reset\",value:function(){o(s(l.prototype),\"reset\",this).call(this),this.state.hash=[1732584193,-271733879,-1732584194,271733878,-1009589776]}},{key:\"processBlock\",value:function(t){for(var e=0|this.state.hash[0],n=0|this.state.hash[1],r=0|this.state.hash[2],i=0|this.state.hash[3],o=0|this.state.hash[4],s=0;s<this.options.rounds;s++){this.W[s]=s<16?0|t[s]:this.W[s-3]^this.W[s-8]^this.W[s-14]^this.W[s-16]|0;var a=Object(u.a)(e,5)+o+this.W[s]+c[s/20>>0]|0,a=s<20?a+(n&r|~n&i)|0:!(s<40)&&s<60?a+(n&r|n&i|r&i)|0:a+(n^r^i)|0,o=i,i=r,r=0|Object(u.a)(n,30),n=e,e=a}this.state.hash[0]=this.state.hash[0]+e|0,this.state.hash[1]=this.state.hash[1]+n|0,this.state.hash[2]=this.state.hash[2]+r|0,this.state.hash[3]=this.state.hash[3]+i|0,this.state.hash[4]=this.state.hash[4]+o|0}},{key:\"finalize\",value:function(){return this.addPaddingISO7816(this.state.message.length<56?56-this.state.message.length|0:120-this.state.message.length|0),this.addLengthBits(),this.process(),this.getStateHash()}}]),l);function l(t){var e;return function(t){if(!(t instanceof l))throw new TypeError(\"Cannot call a class as a function\")}(this),e=this,(t=!(t=s(l).call(this,t))||\"object\"!==i(t)&&\"function\"!=typeof t?function(){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}():t).options.rounds=t.options.rounds||80,t.W=new Array(80),t}e.a=r},function(t,e,n){\"use strict\";function r(t){for(var e=\"\",n=new Uint8Array(t),r=0;r<n.length;r++)e+=String.fromCharCode(n[r]);return e}n.d(e,\"a\",function(){return r})},,function(t,e,n){\"use strict\";var r=(function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(i.prototype,[{key:\"update\",value:function(t){this.hasher.update(t)}},{key:\"finalize\",value:function(){var t=this.hasher.finalize();return this.hasher.reset(),this.hasher.update(this.oPad),this.hasher.update(t),this.hasher.finalize()}}]),i);function i(t,e){!function(t){if(!(t instanceof i))throw new TypeError(\"Cannot call a class as a function\")}(this),t.length>e.blockSizeInBytes&&(e.update(t),t=e.finalize(),e.reset());for(var n=t.length;n<e.blockSizeInBytes;n++)t+=\"\\0\";this.oPad=\"\";for(var r=0;r<t.length;r++)e.update(String.fromCharCode(54^t.charCodeAt(r))),this.oPad+=String.fromCharCode(92^t.charCodeAt(r));this.hasher=e}e.a=r},,,,,,,,,function(t,e,n){\"use strict\";n.r(e);var r=n(14),i=n(13),o=n(16),s=n(10),a=n(8),u=n(17),c=n(11),l=n(7),h=n(6),f=n(9),p=n(12),d=n(1),g=n(18),m=n(2),v=n(15),y=n(20);(function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}})(b.prototype,[{key:\"getHasher\",value:function(t,e){switch(e=e||{},t){case\"has160\":return new r.a(e);case\"md2\":return new i.a(e);case\"md4\":return new o.a(e);case\"md5\":return new s.a(e);case\"ripemd128\":return e=Object.assign({},{length:128},e),new a.a(e);case\"ripemd\":case\"ripemd160\":return e=Object.assign({},{length:160},e),new a.a(e);case\"ripemd256\":return e=Object.assign({},{length:256},e),new a.a(e);case\"ripemd320\":return e=Object.assign({},{length:320},e),new a.a(e);case\"sha0\":return new u.a(e);case\"sha1\":return new c.a(e);case\"sha224\":return e=Object.assign({},{length:224},e),new l.a(e);case\"sha256\":return e=Object.assign({},{length:256},e),new l.a(e);case\"sha384\":return e=Object.assign({},{length:384},e),new h.a(e);case\"sha512\":return e=Object.assign({},{length:512},e),new h.a(e);case\"sha512/224\":return e=Object.assign({},{length:224},e),new h.a(e);case\"sha512/256\":return e=Object.assign({},{length:256},e),new h.a(e);case\"snefru\":case\"snefru128\":case\"snefru128/8\":return e=Object.assign({},{length:128},e),new f.a(e);case\"snefru256\":case\"snefru256/8\":return e=Object.assign({},{length:256},e),new f.a(e);case\"snefru128/2\":return e=Object.assign({},{length:128,rounds:2},e),new f.a(e);case\"snefru256/4\":return e=Object.assign({},{length:256,rounds:4},e),new f.a(e);case\"whirlpool\":return new p.a(e);case\"whirlpool-0\":return e=Object.assign({},{type:\"0\"},e),new p.a(e);case\"whirlpool-t\":return e=Object.assign({},{type:\"t\"},e),new p.a(e)}}},{key:\"hash\",value:function(t,e,n){n=n||{};n=this.getHasher(t,n);return n.update(Object(d.a)(e)),Object(m.a)(n.finalize())}},{key:\"getHmac\",value:function(t,e){return new y.a(t,e)}},{key:\"hmac\",value:function(t,e,n){n=this.getHmac(Object(d.a)(t),n);return n.update(Object(d.a)(e)),Object(m.a)(n.finalize())}}]),n=b;function b(){!function(t){if(!(t instanceof b))throw new TypeError(\"Cannot call a class as a function\")}(this),this.encoder={},this.encoder.fromUtf=d.a,this.encoder.fromArrayBuffer=g.a,this.encoder.toHex=m.a,this.encoder.toBase64=v.a}n=new n,e.default=n}]).default;!function(s){\"use strict\";var n={page:1,pageSize:200,total:0,showTotal:!1,totalTxt:\"共{total}条\",noData:!1,showSkip:!1,showPN:!0,prevPage:\"上一页\",nextPage:\"下一页\",fastForward:0,selectOption:[],backFun:function(t){}};function e(t,e){this.element=s(t),this.settings=s.extend({},n,e),this.pageNum=1,this.pageList=[],this.pageTatol=0,this.init()}s.extend(e.prototype,{init:function(){this.element.empty(),this.viewHtml(),this.clickBtn()},creatHtml:function(t){t==this.settings.page?this.pageList.push('<button class=\"active\" data-page='+t+\">\"+t+\"</button>\"):this.pageList.push(\"<button data-page=\"+t+\">\"+t+\"</button>\")},viewHtml:function(){var t=this.settings,e=0,n=[];if(0<t.total)e=Math.ceil(t.total/t.pageSize);else{if(!t.noData)return;e=1,t.page=1,t.total=0}if(this.pageTatol=e,this.pageNum=t.page,t.showTotal&&n.push('<div class=\"spage-total\">'+t.totalTxt.replace(/\\{(\\w+)\\}/gi,t.total)+\"</div>\"),n.push('<div class=\"spage-number\">'),this.pageList=[],t.showPN&&(1==t.page?this.pageList.push('<button class=\"button-disabled\" data-page=\"prev\"><i class=\"prevBtn\"></i></button>'):this.pageList.push('<button data-page=\"prev\"><i class=\"prevBtn\"></i></button>')),e<=6)for(var r=1;r<e+1;r++)this.creatHtml(r);else if(t.page<3){for(r=1;r<=3;r++)this.creatHtml(r);this.pageList.push('<button data-page=\"after\" class=\"spage-after\">...</button><button data-page='+e+\">\"+e+\"</button>\")}else if(t.page>e-3){this.pageList.push('<button data-page=\"1\">1</button><button data-page=\"before\" class=\"spage-before\">...</button>');for(r=e-3;r<=e;r++)this.creatHtml(r)}else{this.pageList.push('<button data-page=\"1\">1</button>'),3<t.page&&this.pageList.push('<button data-page=\"before\" class=\"spage-before\">...</button>');for(r=t.page-1;r<=Number(t.page)+1;r++)this.creatHtml(r);t.page<=e-3&&this.pageList.push('<button data-page=\"after\" class=\"spage-after\">...</button>'),this.pageList.push(\"<button data-page=\"+e+\">\"+e+\"</button>\")}if(t.showPN&&(t.page==e?this.pageList.push('<button class=\"button-disabled\" data-page=\"next\"><i class=\"nextBtn\"></i></button>'):this.pageList.push('<button data-page=\"next\"><i class=\"nextBtn\"></i></button>')),n.push(this.pageList.join(\"\")),n.push(\"</div>\"),0<t.selectOption.length){for(var i='<select class=\"selectNum\" id=\"selectNum\">',o=0;o<=t.selectOption.length-1;o++)i+=\"<option value=\"+t.selectOption[o]+\" \",t.pageSize===t.selectOption[o]?i+=\"selected>\"+t.selectOption[o]+\"行/页</option>\":i+=\">\"+t.selectOption[o]+\"行/页</option>\";i+=\"</select>\",n.push(i)}t.showSkip&&n.push('<div class=\"spage-skip\">跳至&nbsp;<input type=\"text\" class=\"luckysheet-mousedown-cancel\" value=\"'+t.page+'\"/>&nbsp;页&nbsp;&nbsp;</div>'),this.element.html(n.join(\"\"))},clickBtn:function(){var n=this,r=this.settings,i=this.element,o=this.pageTatol;this.element.on(\"change\",\"select\",function(t){var e=parseInt(document.getElementById(\"selectNum\").value);r.pageSize=e,r.page=1,n.element.empty(),n.viewHtml(),r.backFun(r)}),this.element.off(\"click\",\"button\"),this.element.on(\"click\",\"button\",function(){var t=s(this).data(\"page\");switch(t){case\"prev\":r.page=1<=r.page-1?r.page-1:1,t=r.page;break;case\"next\":r.page=Number(r.page)+1<=o?Number(r.page)+1:o,t=r.page;break;case\"before\":r.page=1<=r.page-r.fastForward?r.page-r.fastForward:1,t=r.page;break;case\"after\":r.page=Number(r.page)+Number(r.fastForward)<=o?Number(r.page)+Number(r.fastForward):o,t=r.page;break;case\"go\":var e=parseInt(i.find(\"input\").val());if(!(/^[0-9]*$/.test(e)&&1<=e&&e<=o))return;t=r.page=e;break;default:r.page=t}t!=n.pageNum&&(n.pageNum=r.page,n.viewHtml(),r.backFun(r))}),this.element.off(\"keyup\",\"input\"),this.element.on(\"keyup\",\"input\",function(t){13==t.keyCode&&(t=parseInt(i.find(\"input\").val()),/^[0-9]*$/.test(t)&&1<=t&&t<=o&&t!=n.pageNum&&(r.page=t,n.pageNum=t,n.viewHtml(),r.backFun(r)))}),0<r.fastForward&&(i.find(\".spage-after\").hover(function(){s(this).html(\"&raquo;\")},function(){s(this).html(\"...\")}),i.find(\".spage-before\").hover(function(){s(this).html(\"&laquo;\")},function(){s(this).html(\"...\")}))}}),s.fn.sPage=function(t){return this.each(function(){new e(this,t)})}}(jQuery,(window,document));","/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/opswiz-excel@1.0.11/dist/luckysheet.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n/*! @preserve\n * opswiz-excel\n * version: 1.0.11\n */\nvar luckysheet=(()=>{var e,t,n=Object.create,a=Object.defineProperty,l=Object.defineProperties,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,h=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable,p=(e,t,n)=>t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t)=>{for(var n in t||(t={}))f.call(t,n)&&p(e,n,t[n]);if(d)for(var n of d(t))m.call(t,n)&&p(e,n,t[n]);return e},y=(e,t)=>()=>(e&&(t=e(e=0)),t),v=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},k=e=>((e,t,n)=>{if(t&&\"object\"==typeof t||\"function\"==typeof t)for(let l of u(t))!f.call(e,l)&&\"default\"!==l&&a(e,l,{get:()=>t[l],enumerable:!(n=o(t,l))||n.enumerable});return e})((e=>a(e,\"__esModule\",{value:!0}))(a(null!=e?n(h(e)):{},\"default\",e&&e.__esModule&&\"default\"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),w=y((()=>{e={autoFormatw:!1,accuracy:void 0,total:0,allowCopy:!0,showtoolbar:!0,showinfobar:!0,showsheetbar:!0,showstatisticBar:!0,pointEdit:!1,pointEditUpdate:null,pointEditZoom:1,userInfo:!1,userMenuItem:[],myFolderUrl:null,functionButton:null,showConfigWindowResize:!0,enableAddRow:!0,addRowCount:100,enableAddBackTop:!0,enablePage:!0,pageInfo:null,editMode:!1,beforeCreateDom:null,workbookCreateBefore:null,workbookCreateAfter:null,remoteFunction:null,fireMousedown:null,plugins:[],forceCalculation:!1,defaultColWidth:73,defaultRowHeight:19,defaultTextColor:\"#000\",defaultCellColor:\"#fff\"}})),x=y((()=>{t={container:null,loadingObj:{},luckysheetfile:null,defaultcolumnNum:60,defaultrowNum:84,fullscreenmode:!0,devicePixelRatio:1,currentSheetIndex:0,calculateSheetIndex:0,flowdata:[],config:{},visibledatarow:[],visibledatacolumn:[],ch_width:0,rh_height:0,cellmainWidth:0,cellmainHeight:0,toolbarHeight:0,infobarHeight:0,calculatebarHeight:0,rowHeaderWidth:46,columnHeaderHeight:20,cellMainSrollBarSize:12,sheetBarHeight:31,statisticBarHeight:23,luckysheetTableContentHW:[0,0],defaultcollen:73,defaultrowlen:19,jfcountfuncTimeout:null,jfautoscrollTimeout:null,luckysheet_select_status:!1,luckysheet_select_save:[{row:[0,0],column:[0,0]}],luckysheet_selection_range:[],luckysheet_copy_save:{},luckysheet_paste_iscut:!1,filterchage:!0,luckysheet_filter_save:{row:[],column:[]},luckysheet_sheet_move_status:!1,luckysheet_sheet_move_data:[],luckysheet_scroll_status:!1,luckysheetisrefreshdetail:!0,luckysheetisrefreshtheme:!0,luckysheetcurrentisPivotTable:!1,luckysheet_rows_selected_status:!1,luckysheet_cols_selected_status:!1,luckysheet_rows_change_size:!1,luckysheet_rows_change_size_start:[],luckysheet_cols_change_size:!1,luckysheet_cols_change_size_start:[],luckysheet_cols_dbclick_timeout:null,luckysheet_cols_dbclick_times:0,luckysheetCellUpdate:[],luckysheet_shiftpositon:null,iscopyself:!0,orderbyindex:0,luckysheet_model_move_state:!1,luckysheet_model_xy:[0,0],luckysheet_model_move_obj:null,luckysheet_cell_selected_move:!1,luckysheet_cell_selected_move_index:[],luckysheet_cell_selected_extend:!1,luckysheet_cell_selected_extend_index:[],luckysheet_cell_selected_extend_time:null,clearjfundo:!0,jfundo:[],jfredo:[],lang:\"en\",createChart:\"\",highlightChart:\"\",zIndex:15,chartparam:{luckysheetCurrentChart:null,luckysheetCurrentChartActive:!1,luckysheetCurrentChartMove:null,luckysheetCurrentChartMoveTimeout:null,luckysheetCurrentChartMoveObj:null,luckysheetCurrentChartMoveXy:null,luckysheetCurrentChartMoveWinH:null,luckysheetCurrentChartMoveWinW:null,luckysheetCurrentChartResize:null,luckysheetCurrentChartResizeObj:null,luckysheetCurrentChartResizeXy:null,luckysheetCurrentChartResizeWinH:null,luckysheetCurrentChartResizeWinW:null,luckysheetInsertChartTosheetChange:!0,luckysheetCurrentChartZIndexRank:100,luckysheet_chart_redo_click:!1,luckysheetCurrentChartMaxState:!1,jfrefreshchartall:\"\",changeChartCellData:\"\",renderChart:\"\",getChartJson:\"\"},functionList:null,luckysheet_function:null,chart_selection:{},currentChart:\"\",scrollRefreshSwitch:!0,measureTextCache:{},measureTextCellInfoCache:{},measureTextCacheTimeOut:null,cellOverflowMapCache:{},zoomRatio:1,visibledatacolumn_unique:null,visibledatarow_unique:null,showGridLines:!0,toobarObject:{},inlineStringEditCache:null,inlineStringEditRange:null,fontList:[],defaultFontSize:10,currentSheetView:\"viewNormal\",cooperativeEdit:{usernameTimeout:{},changeCollaborationSize:[],allDataColumnlen:[],merge_range:{},checkoutData:[]},asyncLoad:[\"core\"],defaultCell:{bg:null,bl:0,ct:{fa:\"General\",t:\"n\"},fc:\"rgb(51, 51, 51)\",ff:0,fs:11,ht:1,it:0,vt:1,m:\"\",v:\"\"},conditionFormatCells:{}}}));function _(e){return null==e||\"\"==e.toString().replace(/\\s/g,\"\")}function C(e){return!(null==e||\"\"===e.toString().replace(/\\s/g,\"\")||\"boolean\"==typeof e||isNaN(e))}function T(e){let t=!1;for(let n in F)if(e==F[n]){t=!0;break}return t}function S(e){return!!/[\\u4E00-\\u9FA5]|[\\uFE30-\\uFFA0]/gi.exec(e)}function I(){return!!e.editMode}function R(){return!!t.allowEdit}function A(e,n,a,l,r){let o=!1;for(let i in t.config.merge){let t=e.merge[i];if(n<t.r){if(a>=t.r&&a<t.r+t.rs-1){if(l>=t.c&&l<=t.c+t.cs-1){o=!0;break}if(r>=t.c&&r<=t.c+t.cs-1){o=!0;break}if(l<t.c&&r>t.c+t.cs-1){o=!0;break}}else if(a>=t.r&&a==t.r+t.rs-1){if(l>t.c&&l<t.c+t.cs-1){o=!0;break}if(r>t.c&&r<t.c+t.cs-1){o=!0;break}if(l==t.c&&r<t.c+t.cs-1){o=!0;break}if(l>t.c&&r==t.c+t.cs-1){o=!0;break}}else if(a>t.r+t.rs-1){if(l>t.c&&l<=t.c+t.cs-1){o=!0;break}if(r>=t.c&&r<t.c+t.cs-1){o=!0;break}if(l==t.c&&r<t.c+t.cs-1){o=!0;break}if(l>t.c&&r==t.c+t.cs-1){o=!0;break}}}else if(n==t.r){if(a<t.r+t.rs-1){if(l>=t.c&&l<=t.c+t.cs-1){o=!0;break}if(r>=t.c&&r<=t.c+t.cs-1){o=!0;break}if(l<t.c&&r>t.c+t.cs-1){o=!0;break}}else if(a>=t.r+t.rs-1){if(l>t.c&&l<=t.c+t.cs-1){o=!0;break}if(r>=t.c&&r<t.c+t.cs-1){o=!0;break}if(l==t.c&&r<t.c+t.cs-1){o=!0;break}if(l>t.c&&r==t.c+t.cs-1){o=!0;break}}}else if(n<=t.r+t.rs-1){if(l>=t.c&&l<=t.c+t.cs-1){o=!0;break}if(r>=t.c&&r<=t.c+t.cs-1){o=!0;break}if(l<t.c&&r>t.c+t.cs-1){o=!0;break}}}return o}function D(e){return Math.ceil(e.charCodeAt().toString(2).length/8)}var F,E=y((()=>{w(),x(),F={v:\"#VALUE!\",n:\"#NAME?\",na:\"#N/A\",r:\"#REF!\",d:\"#DIV/0!\",nm:\"#NUM!\",nl:\"#NULL!\",sp:\"#SPILL!\"}}));function M(e){var t={times:1,num:0};if(function(e){return Math.floor(e)===e}(e))return t.num=e,t;var n=e+\"\",a=n.indexOf(\".\"),l=n.substr(a+1).length,r=Math.pow(10,l),o=parseInt(e*r+.5,10);return t.times=r,t.num=o,t}function N(e,t,n){var a=M(e),l=M(t),r=a.num,o=l.num,i=a.times,s=l.times,c=i>s?i:s;switch(n){case\"add\":return(i===s?r+o:i>s?r+o*(i/s):r*(s/i)+o)/c;case\"subtract\":return(i===s?r-o:i>s?r-o*(i/s):r*(s/i)-o)/c;case\"multiply\":return r*o/(i*s);case\"divide\":return N(r/o,s/i,\"multiply\")}}var P,z,L,O,B,V=y((()=>{E(),Number.prototype.add=function(e){let t=parseFloat(e);if(\"number\"!=typeof t||Number.isNaN(t))throw new Error(\"请输入数字或者数字字符串～\");return N(this,t,\"add\")},Number.prototype.subtract=function(e){let t=parseFloat(e);if(\"number\"!=typeof t||Number.isNaN(t))throw new Error(\"请输入数字或者数字字符串～\");return N(this,t,\"subtract\")},Number.prototype.multiply=function(e){let t=parseFloat(e);if(\"number\"!=typeof t||Number.isNaN(t))throw new Error(\"请输入数字或者数字字符串～\");return N(this,t,\"multiply\")},Number.prototype.divide=function(e){let t=parseFloat(e);if(\"number\"!=typeof t||Number.isNaN(t))throw new Error(\"请输入数字或者数字字符串～\");return N(this,t,\"divide\")},Number.prototype.tofixed=function(e){let t=parseFloat(e);if(\"number\"!=typeof t||Number.isNaN(t))throw new Error(\"请输入数字或者数字字符串～\");return function(e,t){if(t||(t=2),!C(e))return e;let n=e.toFixed(t),a=n.indexOf(\".\"),l=n.substring(0,a),r=n.substring(a+1,n.length);if(r)for(let e=r.length-1;0!=e&&(\"0\"==r.charAt(e)||e!=r.length-1);e--)r=r.substring(0,e);return Number(l+\".\"+r)}(this,t)}})),q=y((()=>{P={container:\"luckysheet\",loading:{},column:60,row:84,allowCopy:!0,showtoolbar:!0,showinfobar:!0,showsheetbar:!0,showstatisticBar:!0,pointEdit:!1,pointEditUpdate:null,pointEditZoom:1,data:[{name:\"Sheet1\",color:\"\",status:\"1\",order:\"0\",data:[],config:{},index:0},{name:\"Sheet2\",color:\"\",status:\"0\",order:\"1\",data:[],config:{},index:1},{name:\"Sheet3\",color:\"\",status:\"0\",order:\"2\",data:[],config:{},index:2}],title:\"Luckysheet Demo\",userInfo:!1,userMenuItem:[{url:\"www.baidu.com\",icon:'<i class=\"fa fa-folder\" aria-hidden=\"true\"></i>',name:\"我的表格\"},{url:\"www.baidu.com\",icon:'<i class=\"fa fa-sign-out\" aria-hidden=\"true\"></i>',name:\"退出登陆\"}],myFolderUrl:\"www.baidu.com\",config:{},fullscreenmode:!0,devicePixelRatio:window.devicePixelRatio,allowEdit:!0,loadUrl:\"\",loadSheetUrl:\"\",gridKey:\"\",updateUrl:\"\",updateImageUrl:\"\",allowUpdate:!1,functionButton:\"\",showConfigWindowResize:!0,enableAddRow:!0,enableAddBackTop:!0,autoFormatw:!1,accuracy:void 0,pageInfo:{queryExps:\"\",reportId:\"\",fields:\"\",mobile:\"\",frezon:\"\",currentPage:\"\",totalPage:10,pageUrl:\"\"},editMode:!1,beforeCreateDom:null,fireMousedown:null,lang:\"en\",plugins:[],forceCalculation:!1,rowHeaderWidth:46,columnHeaderHeight:20,defaultColWidth:73,defaultRowHeight:19,defaultFontSize:10,limitSheetNameLength:!0,defaultSheetNameMaxLength:31,sheetFormulaBar:!0,showtoolbarConfig:{},showsheetbarConfig:{},showstatisticBarConfig:{},cellRightClickConfig:{},sheetRightClickConfig:{},imageUpdateMethodConfig:{}}})),H=y((()=>{z={functionlist:{SUMIF:{d:\"Returns a conditional sum across a range.\",a:\"A conditional sum across a range.\",p:[{name:\"range\",detail:\"The range which is tested against `criterion`.\"},{name:\"criterion\",detail:\"The pattern or test to apply to `range`.\"},{name:\"sum_range\",detail:\"The range to be summed, if different from `range`.\"}]},TAN:{d:\"Returns the tangent of an angle provided in radians.\",a:\"Tangent of an angle provided in radians.\",p:[{name:\"angle\",detail:\"The angle to find the tangent of, in radians.\"}]},TANH:{d:\"Returns the hyperbolic tangent of any real number.\",a:\"Hyperbolic tangent of any real number.\",p:[{name:\"value\",detail:\"Any real value to calculate the hyperbolic tangent of.\"}]},CEILING:{d:\"Rounds a number up to the nearest integer multiple of specified significance `factor`.\",a:\"Rounds number up to nearest multiple of a factor.\",p:[{name:\"value\",detail:\"The value to round up to the nearest integer multiple of `factor`.\"},{name:\"factor\",detail:\"The number to whose multiples `value` will be rounded.\"}]},ATAN:{d:\"Returns the inverse tangent of a value, in radians.\",a:\"Inverse tangent of a value, in radians.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse tangent.\"}]},ASINH:{d:\"Returns the inverse hyperbolic sine of a number.\",a:\"Inverse hyperbolic sine of a number.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse hyperbolic sine.\"}]},ABS:{d:\"Returns the absolute value of a number.\",a:\"Absolute value of a number.\",p:[{name:\"value\",detail:\"The number of which to return the absolute value.\"}]},ACOS:{d:\"Returns the inverse cosine of a value, in radians.\",a:\"Inverse cosine of a value, in radians.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse cosine. Must be between `-1` and `1`, inclusive.\"}]},ACOSH:{d:\"Returns the inverse hyperbolic cosine of a number.\",a:\"Inverse hyperbolic cosine of a number.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse hyperbolic cosine. Must be greater than or equal to `1`.\"}]},MULTINOMIAL:{d:\"Returns the factorial of the sum of values divided by the product of the values' factorials.\",a:\"Multinomial distribution function.\",p:[{name:\"value1\",detail:\"The first value or range to consider.\"},{name:\"value2\",detail:\"Additional values or ranges to consider.\"}]},ATANH:{d:\"Returns the inverse hyperbolic tangent of a number.\",a:\"Inverse hyperbolic tangent of a number.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse hyperbolic tangent. Must be between -1 and 1, exclusive.\"}]},ATAN2:{d:\"Returns the angle between the x-axis and a line segment from the origin (0,0) to specified coordinate pair (`x`,`y`), in radians.\",a:\"Arctangent of a value.\",p:[{name:\"x\",detail:\"The x coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis.\"},{name:\"y\",detail:\"The y coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis.\"}]},COUNTBLANK:{d:\"Returns the number of empty values in a list of values and ranges.\",a:\"Number of empty values.\",p:[{name:\"value1\",detail:\"The first value or range in which to count the number of blanks.\"}]},COSH:{d:\"Returns the hyperbolic cosine of any real number.\",a:\"Hyperbolic cosine of any real number.\",p:[{name:\"value\",detail:\"Any real value to calculate the hyperbolic cosine of.\"}]},INT:{d:\"Rounds a number down to the nearest integer that is less than or equal to it.\",a:\"Rounds number down to nearest integer.\",p:[{name:\"value\",detail:\"The value to round down to the nearest integer.\"}]},ISEVEN:{d:\"Checks whether the provided value is even.\",a:\"Whether the provided value is even.\",p:[{name:\"value\",detail:\"The value to be verified as even.\"}]},ISODD:{d:\"Checks whether the provided value is odd.\",a:\"Whether the provided value is odd.\",p:[{name:\"value\",detail:\"The value to be verified as odd.\"}]},LCM:{d:\"Returns the least common multiple of one or more integers.\",a:\"Least common multiple of one or more integers.\",p:[{name:\"value1\",detail:\"The first value or range whose factors to consider in a calculation to find the least common multiple.\"},{name:\"value2\",detail:\"Additional values or ranges whose factors to consider to find the least common multiple.\"}]},LN:{d:\"Returns the logarithm of a number, base e (Euler's number).\",a:\"The logarithm of a number, base e (euler's number).\",p:[{name:\"value\",detail:\"The value for which to calculate the logarithm, base e.\"}]},LOG:{d:\"Returns the logarithm of a number with respect to a base.\",a:\"The logarithm of a number with respect to a base.\",p:[{name:\"value\",detail:\"The value for which to calculate the logarithm.\"},{name:\"base\",detail:\"The base to use for calculation of the logarithm.\"}]},LOG10:{d:\"Returns the logarithm of a number, base 10.\",a:\"The logarithm of a number, base 10.\",p:[{name:\"value\",detail:\"The value for which to calculate the logarithm, base 10.\"}]},MOD:{d:\"Returns the result of the modulo operator, the remainder after a division operation.\",a:\"Modulo (remainder) operator.\",p:[{name:\"dividend\",detail:\"The number to be divided to find the remainder.\"},{name:\"divisor\",detail:\"The number to divide by.\"}]},MROUND:{d:\"Rounds one number to the nearest integer multiple of another.\",a:\"Rounds a number to the nearest integer multiple.\",p:[{name:\"value\",detail:\"The number to round to the nearest integer multiple of another.\"},{name:\"factor\",detail:\"The number to whose multiples `value` will be rounded.\"}]},ODD:{d:\"Rounds a number up to the nearest odd integer.\",a:\"Rounds a number up to the nearest odd integer.\",p:[{name:\"value\",detail:\"The value to round to the next greatest odd number.\"}]},SUMSQ:{d:\"Returns the sum of the squares of a series of numbers and/or cells.\",a:\"Sum of squares.\",p:[{name:\"value1\",detail:\"The first number or range whose squares to add together.\"},{name:\"value2\",detail:\"Additional numbers or ranges whose squares to add to the square(s) of `value1`.\"}]},COMBIN:{d:\"Returns the number of ways to choose some number of objects from a pool of a given size of objects.\",a:\"Number of combinations from a set of objects.\",p:[{name:\"n\",detail:\"The size of the pool of objects to choose from.\"},{name:\"k\",detail:\"The number of objects to choose.\"}]},SUM:{d:\"Returns the sum of a series of numbers and/or cells.\",a:\"Sum of a series of numbers and/or cells.\",p:[{name:\"value1\",detail:\"The first number or range to add together.\"},{name:\"value2\",detail:\"Additional numbers or ranges to add to `value1`.\"}]},SUBTOTAL:{d:\"Returns a subtotal for a vertical range of cells using a specified aggregation function.\",a:\"Subtotal for a range using a specific function.\",p:[{name:\"function_code\",detail:\"The function to use in subtotal aggregation.\"},{name:\"range1\",detail:\"The first range over which to calculate a subtotal.\"},{name:\"range2\",detail:\"Additional ranges over which to calculate subtotals.\"}]},ASIN:{d:\"Returns the inverse sine of a value, in radians.\",a:\"Inverse sine of a value, in radians.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse sine. Must be between `-1` and `1`, inclusive.\"}]},COUNTIF:{d:\"Returns a conditional count across a range.\",a:\"A conditional count across a range.\",p:[{name:\"range\",detail:\"The range that is tested against `criterion`.\"},{name:\"criterion\",detail:\"The pattern or test to apply to `range`.\"}]},RADIANS:{d:\"Converts an angle value in degrees to radians.\",a:\"Converts an angle value in degrees to radians.\",p:[{name:\"angle\",detail:\"The angle to convert from degrees to radians.\"}]},RAND:{d:\"Returns a random number between 0 inclusive and 1 exclusive.\",a:\"A random number between 0 inclusive and 1 exclusive.\",p:[]},COUNTUNIQUE:{d:\"Counts the number of unique values in a list of specified values and ranges.\",a:\"Counts number of unique values in a range.\",p:[{name:\"value1\",detail:\"The first value or range to consider for uniqueness.\"},{name:\"value2\",detail:\"Additional values or ranges to consider for uniqueness.\"}]},DEGREES:{d:\"Converts an angle value in radians to degrees.\",a:\"Converts an angle value in radians to degrees.\",p:[{name:\"angle\",detail:\"The angle to convert from radians to degrees.\"}]},ERFC:{d:\"Returns the complementary Gauss error function of a value.\",a:\"Complementary gauss error function of a value.\",p:[{name:\"z\",detail:\"The number for which to calculate the complementary Gauss error function.\"}]},EVEN:{d:\"Rounds a number up to the nearest even integer.\",a:\"Rounds a number up to the nearest even integer.\",p:[{name:\"value\",detail:\"The value to round to the next greatest even number.\"}]},EXP:{d:\"Returns Euler's number, e (~2.718) raised to a power.\",a:\"Euler's number, e (~2.718) raised to a power.\",p:[{name:\"exponent\",detail:\"The exponent to raise e to.\"}]},FACT:{d:\"Returns the factorial of a number.\",a:\"Factorial of a number.\",p:[{name:\"value\",detail:\"The number or reference to a number whose factorial will be calculated and returned.\"}]},FACTDOUBLE:{d:'Returns the \"double factorial\" of a number.',a:'\"double factorial\" of a number.',p:[{name:\"value\",detail:\"The number or reference to a number whose double factorial will be calculated and returned.\"}]},PI:{d:\"Returns the value of Pi to 14 decimal places.\",a:\"The number pi.\",p:[]},FLOOR:{d:\"Rounds a number down to the nearest integer multiple of specified significance `factor`.\",a:\"Rounds number down to nearest multiple of a factor.\",p:[{name:\"value\",detail:\"The value to round down to the nearest integer multiple of `factor`.\"},{name:\"factor\",detail:\"The number to whose multiples `value` will be rounded.\"}]},GCD:{d:\"Returns the greatest common divisor of one or more integers.\",a:\"Greatest common divisor of one or more integers.\",p:[{name:\"value1\",detail:\"The first value or range whose factors to consider in a calculation to find the greatest common divisor.\"},{name:\"value2\",detail:\"Additional values or ranges whose factors to consider to find the greatest common divisor.\"}]},RANDBETWEEN:{d:\"Returns a uniformly random integer between two values, inclusive.\",a:\"Random integer between two values, inclusive.\",p:[{name:\"low\",detail:\"The low end of the random range.\"},{name:\"high\",detail:\"The high end of the random range.\"}]},ROUND:{d:\"Rounds a number to a certain number of decimal places according to standard rules.\",a:\"Rounds a number according to standard rules.\",p:[{name:\"value\",detail:\"The value to round to `places` number of places.\"},{name:\"places\",detail:\"The number of decimal places to which to round.\"}]},ROUNDDOWN:{d:\"Rounds a number to a certain number of decimal places, always rounding down to the next valid increment.\",a:\"Rounds down a number.\",p:[{name:\"value\",detail:\"The value to round to `places` number of places, always rounding down.\"},{name:\"places\",detail:\"The number of decimal places to which to round.\"}]},ROUNDUP:{d:\"Rounds a number to a certain number of decimal places, always rounding up to the next valid increment.\",a:\"Rounds up a number.\",p:[{name:\"value\",detail:\"The value to round to `places` number of places, always rounding up.\"},{name:\"places\",detail:\"The number of decimal places to which to round.\"}]},SERIESSUM:{d:\"Given parameters `x`, `n`, `m`, and `a`, returns the power series sum a\",a:\"Sum of a power series.\",p:[{name:\"x\",detail:\"The input to the power series. Varies depending on the type of approximation, may be angle, exponent, or some other value.\"},{name:\"n\",detail:\"The initial power to which to raise `x` in the power series.\"},{name:\"m\",detail:\"The additive increment by which to increase `x`.\"},{name:\"a\",detail:\"The array or range containing the coefficients of the power series.\"}]},SIGN:{d:\"Given an input number, returns `-1` if it is negative, `1` if positive, and `0` if it is zero.\",a:\"Sign of a provided number (+/-/0).\",p:[{name:\"value\",detail:\"The value whose sign will be evaluated.\"}]},SIN:{d:\"Returns the sine of an angle provided in radians.\",a:\"Sine of an angle provided in radians.\",p:[{name:\"angle\",detail:\"The angle to find the sine of, in radians.\"}]},SINH:{d:\"Returns the hyperbolic sine of any real number.\",a:\"Hyperbolic sine of any real number.\",p:[{name:\"value\",detail:\"Any real value to calculate the hyperbolic sine of.\"}]},SQRT:{d:\"Returns the positive square root of a positive number.\",a:\"Positive square root of a positive number.\",p:[{name:\"value\",detail:\"The number for which to calculate the positive square root.\"}]},SQRTPI:{d:\"Returns the positive square root of the product of Pi and the given positive number.\",a:\"Square root of the product of pi and number.\",p:[{name:\"value\",detail:\"The number which will be multiplied by Pi and have the product's square root returned\"}]},GAMMALN:{d:\"Returns the logarithm of a specified Gamma function, base e (Euler's number).\",a:\"Logarithm of gamma function.\",p:[{name:\"value\",detail:\"The input to the Gamma function. The natural logarithm of Gamma(`value`) will be returned.\"}]},COS:{d:\"Returns the cosine of an angle provided in radians.\",a:\"Cosine of an angle provided in radians.\",p:[{name:\"angle\",detail:\"The angle to find the cosine of, in radians.\"}]},TRUNC:{d:\"Truncates a number to a certain number of significant digits by omitting less significant digits.\",a:\"Truncates a number.\",p:[{name:\"value\",detail:\"The value to be truncated.\"},{name:\"places\",detail:\"The number of significant digits to the right of the decimal point to retain.\"}]},QUOTIENT:{d:\"Returns one number divided by another.\",a:\"One number divided by another.\",p:[{name:\"dividend\",detail:\"The number to be divided.\"},{name:\"divisor\",detail:\"The number to divide by.\"}]},POWER:{d:\"Returns a number raised to a power.\",a:\"A number raised to a power.\",p:[{name:\"base\",detail:\"The number to raise to the `exponent` power.\"},{name:\"exponent\",detail:\"The exponent to raise `base` to.\"}]},SUMIFS:{d:\"Returns the sum of a range depending on multiple criteria.\",a:\"Sums a range depending on multiple criteria.\",p:[{name:\"sum_range\",detail:\"The range to sum.\"},{name:\"criteria_range1\",detail:\"The range to check against criterion1.\"},{name:\"criterion1\",detail:\"The pattern or test to apply to criteria_range1.\"},{name:\"criteria_range2\",detail:\"Additional ranges to check.\"}]},GET_TARGET:{d:\"Query target data.\",a:\"Query target data.\",p:[]},GET_AIRTABLE_DATA:{d:\"Query AirTable data.\",a:\"Query AirTable data.\",p:[{name:\"AirTable url\",detail:\"AirTable url address.\"},{name:\"sort_column\",detail:\"The index of the column in current AirTable view containing the values by which to sort.\"},{name:\"is_ascending\",detail:\"[Optional] - 1 or 0 indicating whether to sort `sort_column` in ascending order. 0 sorts in descending order.1 sorts in ascending order.\"}]},ASK_AI:{d:\"Ask the AI questions.\",a:\"Ask the AI questions.\",p:[{name:\"question\",detail:\"Consult AI for the data you want.\"},{name:\"criteria_range\",detail:\"In which range to process the data.\"}]},COUNTIFS:{d:\"Returns the count of a range depending on multiple criteria.\",a:\"Count values depending on multiple criteria.\",p:[{name:\"criteria_range1\",detail:\"The range to check against `criterion1`.\"},{name:\"criterion1\",detail:\"The pattern or test to apply to `criteria_range1`.\"},{name:\"criteria_range2\",detail:\"Additional ranges to check.\"}]},PRODUCT:{d:\"Returns the result of multiplying a series of numbers together.\",a:\"Result of multiplying a series of numbers together.\",p:[{name:\"factor1\",detail:\"The first number or range to calculate for the product.\"},{name:\"factor2\",detail:\"More numbers or ranges to calculate for the product.\"}]},HARMEAN:{d:\"Calculates the harmonic mean of a dataset.\",a:\"The harmonic mean of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},HYPGEOMDIST:{d:\"Calculates the probability of drawing a certain number of successes in a certain number of tries given a population of a certain size containing a certain number of successes, without replacement of draws.\",a:\"Hypergeometric distribution probability.\",p:[{name:\"num_successes\",detail:\"The desired number of successes.\"},{name:\"num_draws\",detail:\"The number of permitted draws.\"},{name:\"successes_in_pop\",detail:\"The total number of successes in the population.\"},{name:\"pop_size\",detail:\"The total size of the population\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf cumulative is TRUE(), HYPGEOM.DIST returns the cumulative distribution function;\\n\\nif FALSE(), it returns the probability density function.\"}]},INTERCEPT:{d:\"Calculates the y-value at which the line resulting from linear regression of a dataset will intersect the y-axis (x=0).\",a:\"Y-intercept of line derived via linear regression.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},KURT:{d:'Calculates the kurtosis of a dataset, which describes the shape, and in particular the \"peakedness\" of that dataset.',a:\"Kurtosis of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the dataset.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the dataset.\"}]},LARGE:{d:\"Returns the nth largest element from a data set, where n is user-defined.\",a:\"Nth largest element from a data set.\",p:[{name:\"data\",detail:\"Array or range containing the dataset to consider.\"},{name:\"n\",detail:\"The rank from largest to smallest of the element to return.\"}]},STDEVA:{d:\"Calculates the standard deviation based on a sample, setting text to the value `0`.\",a:\"Standard deviation of sample (text as 0).\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},STDEVP:{d:\"Calculates the standard deviation based on an entire population.\",a:\"Standard deviation of an entire population.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},GEOMEAN:{d:\"Calculates the geometric mean of a dataset.\",a:\"The geometric mean of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},RANK_EQ:{d:\"Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the top rank of the entries will be returned.\",a:\"Top rank of a specified value in a dataset.\",p:[{name:\"value\",detail:\"The value whose rank will be determined.\"},{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"is_ascending\",detail:\"Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE).\"}]},RANK_AVG:{d:\"Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the average rank of the entries will be returned.\",a:\"Average rank of a specified value in a dataset.\",p:[{name:\"value\",detail:\"The value whose rank will be determined.\"},{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"is_ascending\",detail:\"Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE).\"}]},PERCENTRANK_EXC:{d:\"Returns the percentage rank (percentile) from 0 to 1 exclusive of a specified value in a dataset.\",a:\"Percentage rank (percentile) from 0 to 1 exclusive.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"value\",detail:\"The value whose percentage rank will be determined.\"},{name:\"significant_digits\",detail:\"The number of significant figures to use in the calculation. Default is 3.\"}]},PERCENTRANK_INC:{d:\"Returns the percentage rank (percentile) from 0 to 1 inclusive of a specified value in a dataset.\",a:\"Percentage rank (percentile) from 0 to 1 inclusive.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"value\",detail:\"The value whose percentage rank will be determined.\"},{name:\"significant_digits\",detail:\"The number of significant figures to use in the calculation. Default is 3.\"}]},FORECAST:{d:\"Calculates the expected y-value for a specified x based on a linear regression of a dataset.\",a:\"Expected y-value based of linear regression.\",p:[{name:\"x\",detail:\"The value on the x-axis to forecast.\"},{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},FISHERINV:{d:\"Returns the inverse Fisher transformation of a specified value.\",a:\"Inverse fisher transformation of a specified value.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse Fisher transformation.\"}]},FISHER:{d:\"Returns the Fisher transformation of a specified value.\",a:\"Fisher transformation of a specified value.\",p:[{name:\"value\",detail:\"The value for which to calculate the Fisher transformation.\"}]},MODE_SNGL:{d:\"Returns the most commonly occurring value in a dataset.\",a:\"Most commonly occurring value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating mode.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating mode.\"}]},WEIBULL_DIST:{d:\"Returns the value of the Weibull distribution function (or Weibull cumulative distribution function) for a specified shape and scale.\",a:\"Weibull distribution function.\",p:[{name:\"x\",detail:\"The input to the Weibull distribution function.\"},{name:\"shape\",detail:\"The shape parameter of the Weibull distribution function.\"},{name:\"scale\",detail:\"The scale parameter of the Weibull distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the cumulative distribution function.\"}]},COUNT:{d:\"Returns the number of numeric values in a dataset.\",a:\"The number of numeric values in dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when counting.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when counting.\"}]},COUNTA:{d:\"Returns the number of values in a dataset.\",a:\"The number of values in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when counting.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when counting.\"}]},AVEDEV:{d:\"Calculates the average of the magnitudes of deviations of data from a dataset's mean.\",a:\"Average magnitude of deviations from mean.\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},AVERAGE:{d:\"Returns the numerical average value in a dataset, ignoring text.\",a:\"Numerical average value in a dataset, ignoring text.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the average value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the average value.\"}]},AVERAGEA:{d:\"Returns the numerical average value in a dataset.\",a:\"Numerical average value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the average value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the average value.\"}]},BINOM_DIST:{d:\"Calculates the probability of drawing a certain number of successes (or a maximum number of successes) in a certain number of tries given a population of a certain size containing a certain number of successes, with replacement of draws.\",a:\"Binomial distribution probability.\",p:[{name:\"num_successes\",detail:\"The number of successes for which to calculate the probability in `num_trials` trials.\"},{name:\"num_trials\",detail:\"The number of independent trials.\"},{name:\"prob_success\",detail:\"The probability of success in any given trial.\"},{name:\"cumulative\",detail:\"Whether to use the binomial cumulative distribution.\"}]},BINOM_INV:{d:\"Calculates the smallest value for which the cumulative binomial distribution is greater than or equal to a specified criteria.\",a:\"Inverse cumulative binomial distribution function.\",p:[{name:\"num_trials\",detail:\"The number of independent trials.\"},{name:\"prob_success\",detail:\"The probability of success in any given trial.\"},{name:\"target_prob\",detail:\"The desired threshold probability.\"}]},CONFIDENCE_NORM:{d:\"Calculates the width of half the confidence interval for a normal distribution.\",a:\"Confidence interval for a normal distribution.\",p:[{name:\"alpha\",detail:\"One minus the desired confidence level. E.g. `0.1` for `0.9`, or 90%, confidence.\"},{name:\"standard_deviation\",detail:\"The standard deviation of the population.\"},{name:\"pop_size\",detail:\"The size of the population.\"}]},CORREL:{d:\"Calculates r, the Pearson product-moment correlation coefficient of a dataset.\",a:\"Pearson Product-Moment Correlation Coefficient.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},COVARIANCE_P:{d:\"Calculates the covariance of a dataset.\",a:\"The covariance of a dataset.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},COVARIANCE_S:{d:\"Calculates the sample covariance of a dataset.\",a:\"The sample covariance of a dataset.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},DEVSQ:{d:\"Calculates the sum of squares of deviations based on a sample.\",a:\"The sum of squares of deviations based on a sample.\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},EXPON_DIST:{d:\"Returns the value of the exponential distribution function with a specified lambda at a specified value.\",a:\"Exponential distribution function.\",p:[{name:\"x\",detail:\"The input to the exponential distribution function.\"},{name:\"lambda\",detail:\"The lambda to specify the exponential distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the exponential cumulative distribution.\"}]},AVERAGEIF:{d:\"Returns the average of a range depending on criteria.\",a:\"Average of values depending on criteria.\",p:[{name:\"criteria_range\",detail:\"The range to check against `criterion`.\"},{name:\"criterion\",detail:\"The pattern or test to apply to `criteria_range`.\"},{name:\"average_range\",detail:\"The range to average. If not included, `criteria_range` is used for the average instead.\"}]},AVERAGEIFS:{d:\"Returns the average of a range depending on multiple criteria.\",a:\"Average of values depending on multiple criteria.\",p:[{name:\"average_range\",detail:\"The range to average.\"},{name:\"criteria_range1\",detail:\"The range to check against `criterion1`.\"},{name:\"criterion1\",detail:\"The pattern or test to apply to `criteria_range1`.\"},{name:\"criteria_range2\",detail:\"Additional ranges to check.\"}]},PERMUT:{d:\"Returns the number of ways to choose some number of objects from a pool of a given size of objects, considering order.\",a:\"Number of permutations from a number of objects.\",p:[{name:\"n\",detail:\"The size of the pool of objects to choose from.\"},{name:\"k\",detail:\"The number of objects to choose.\"}]},TRIMMEAN:{d:\"Calculates the mean of a dataset excluding some proportion of data from the high and low ends of the dataset.\",a:\"Mean of a dataset excluding high/low ends.\",p:[{name:\"data\",detail:\"Array or range containing the dataset to consider.\"},{name:\"exclude_proportion\",detail:\"The proportion of the dataset to exclude, from the extremities of the set.\"}]},PERCENTILE_EXC:{d:\"Returns the value at a given percentile of a dataset exclusive of 0 and 1.\",a:\"Value at a given percentile of a dataset exclusive of 0 and 1.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"percentile\",detail:\"The percentile, exclusive of 0 and 1, whose value within 'data' will be calculated and returned.\"}]},PERCENTILE_INC:{d:\"Returns the value at a given percentile of a dataset.\",a:\"Value at a given percentile of a dataset.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"percentile\",detail:\"The percentile whose value within `data` will be calculated and returned.`\"}]},PEARSON:{d:\"Calculates r, the Pearson product-moment correlation coefficient of a dataset.\",a:\"Pearson Product-Moment Correlation Coefficient.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},NORM_S_INV:{d:\"Returns the value of the inverse standard normal distribution function for a specified value.\",a:\"Inverse standard normal distribution function.\",p:[{name:\"x\",detail:\"The input to the inverse standard normal distribution function.\"}]},NORM_S_DIST:{d:\"Returns the value of the standard normal cumulative distribution function for a specified value.\",a:\"Standard normal cumulative distribution function.\",p:[{name:\"x\",detail:\"The input to the standard normal cumulative distribution function.\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf TRUE(), it returns the cumulative distribution function;\\n\\nIf it is FALSE(), it returns the probability density function.\"}]},NORM_INV:{d:\"Returns the value of the inverse normal distribution function for a specified value, mean, and standard deviation.\",a:\"Inverse normal distribution function.\",p:[{name:\"x\",detail:\"The input to the inverse normal distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the normal distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the normal distribution function.\"}]},NORM_DIST:{d:\"Returns the value of the normal distribution function (or normal cumulative distribution function) for a specified value, mean, and standard deviation.\",a:\"Normal distribution function.\",p:[{name:\"x\",detail:\"The input to the normal distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the normal distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the normal distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the normal cumulative distribution function rather than the distribution function.\"}]},NEGBINOM_DIST:{d:\"Calculates the probability of drawing a certain number of failures before a certain number of successes given a probability of success in independent trials.\",a:\"Negative binomial distribution probability.\",p:[{name:\"num_failures\",detail:\"The number of failures to model.\"},{name:\"num_successes\",detail:\"The number of successes to model.\"},{name:\"prob_success\",detail:\"The probability of success in any given trial.\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf TRUE(), it returns the cumulative distribution function;\\n\\nIf it is FALSE(), it returns the probability density function.\"}]},MINA:{d:\"Returns the minimum numeric value in a dataset.\",a:\"Minimum numeric value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the minimum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the minimum value.\"}]},MIN:{d:\"Returns the minimum value in a numeric dataset.\",a:\"Minimum value in a numeric dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the minimum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the minimum value.\"}]},MEDIAN:{d:\"Returns the median value in a numeric dataset.\",a:\"Median value in a numeric dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the median value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the median value.\"}]},MAXA:{d:\"Returns the maximum numeric value in a dataset.\",a:\"Maximum numeric value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the maximum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the maximum value.\"}]},MAX:{d:\"Returns the maximum value in a numeric dataset.\",a:\"Maximum value in a numeric dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the maximum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the maximum value.\"}]},LOGNORM_INV:{d:\"Returns the value of the inverse log-normal cumulative distribution with given mean and standard deviation at a specified value.\",a:\"Inverse log-normal cumulative distribution function.\",p:[{name:\"x\",detail:\"The input to the inverse log-normal cumulative distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the inverse log-normal cumulative distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the inverse log-normal cumulative distribution function.\"}]},LOGNORM_DIST:{d:\"Returns the value of the log-normal cumulative distribution with given mean and standard deviation at a specified value.\",a:\"Log-normal cumulative distribution probability.\",p:[{name:\"x\",detail:\"The input to the log-normal cumulative distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the log-normal cumulative distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the log-normal cumulative distribution function.\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf TRUE(), it returns the cumulative distribution function;\\n\\nIf it is FALSE(), it returns the probability density function.\"}]},Z_TEST:{d:\"Returns the one-tailed p-value of a Z-test with standard distribution.\",a:\"One-tailed p-value of a z-test.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"value\",detail:\"The test statistic to use in the Z-test.\"},{name:\"standard_deviation\",detail:\"The standard deviation to assume for the Z-test. If this is not provided, the standard deviation of the data will be used.\"}]},PROB:{d:\"Given a set of values and corresponding probabilities, calculates the probability that a value chosen at random falls between two limits.\",a:\"Probability values lie in a range.\",p:[{name:\"data\",detail:\"Array or range containing the dataset to consider.\"},{name:\"probabilities\",detail:\"Array or range containing probabilities corresponding to `data`.\"},{name:\"low_limit\",detail:\"The lower bound on the value range for which to calculate the probability.\"},{name:\"high_limit\",detail:\"The upper bound on the value range for which to calculate the probability.\"}]},QUARTILE_EXC:{d:\"Returns a value nearest to a specified quartile of a dataset exclusive of 0 and 4.\",a:\"Value nearest to a specific quartile of a dataset exclusive of 0 and 4.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"quartile_number\",detail:\"Which quartile to return.\"}]},QUARTILE_INC:{d:\"Returns a value nearest to a specified quartile of a dataset.\",a:\"Value nearest to a specific quartile of a dataset.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"quartile_number\",detail:\"Which quartile value to return.\"}]},POISSON_DIST:{d:\"Returns the value of the Poisson distribution function (or Poisson cumulative distribution function) for a specified value and mean.\",a:\"Poisson distribution function.\",p:[{name:\"x\",detail:\"The input to the Poisson distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the Poisson distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the Poisson cumulative distribution function rather than the distribution function.\"}]},RSQ:{d:\"Calculates the square of r, the Pearson product-moment correlation coefficient of a dataset.\",a:\"Square of the correlation coefficient.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},T_DIST:{d:\"Calculates the left tail probability for a Student's t-distribution with a given input (x).\",a:\"The left-tailed Student's t-distribution\",p:[{name:\"x\",detail:\"The input to the t-distribution function.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"},{name:\"cumulative\",detail:\"If cumulative is TRUE, T.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\"}]},T_DIST_2T:{d:\"Calculates the probability for two tailed Student's t-distribution with a given input (x).\",a:\"The two tailed Student's t-distribution\",p:[{name:\"x\",detail:\"The input to the t-distribution function.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_DIST_RT:{d:\"Calculates the right tail probability for a Student's t-distribution with a given input (x).\",a:\"The right-tailed Student's t-distribution\",p:[{name:\"x\",detail:\"The input to the t-distribution function.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_INV:{d:\"Calculates the negative inverse of the one-tailed TDIST function.\",a:\"T.INV\",p:[{name:\"probability\",detail:\"The probability associated with the two-tailed t-distribution.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_INV_2T:{d:\"Calculates the inverse of the two-tailed TDIST function.\",a:\"T.INV.2T\",p:[{name:\"probability\",detail:\"The probability associated with the two-tailed t-distribution.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_TEST:{d:\"t-test. Returns the probability associated with Student's t-test. Determines whether two samples are likely to have come from the same two underlying populations that have the same mean.\",a:\"Returns the probability associated with t-test.\",p:[{name:\"range1\",detail:\"The first sample of data or group of cells to consider for the t-test.\"},{name:\"range2\",detail:\"The second sample of data or group of cells to consider for the t-test.\"},{name:\"tails\",detail:\"Specifies the number of distribution tails.\"},{name:\"type\",detail:\"Specifies the type of t-test.\"}]},F_DIST:{d:\"Calculates the left-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.\",a:\"F probability distribution (left-tailed).\",p:[{name:\"x\",detail:\"The input to the F probability distribution function. The value at which to evaluate the function.\"},{name:\"degrees_freedom1\",detail:\"The numerator of the number of degrees of freedom.\"},{name:\"degrees_freedom2\",detail:\"The denominator of the number of degrees of freedom.\"},{name:\"cumulative\",detail:\"Logical value that determines the form of the function.\"}]},F_DIST_RT:{d:\"Calculates the right-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.\",a:\"F probability distribution.\",p:[{name:\"x\",detail:\"The input to the F probability distribution function. The value at which to evaluate the function.\"},{name:\"degrees_freedom1\",detail:\"The numerator of the number of degrees of freedom.\"},{name:\"degrees_freedom2\",detail:\"The denominator of the number of degrees of freedom.\"}]},VAR_P:{d:\"Calculates the variance based on an entire population.\",a:\"Variance of entire population.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},VAR_S:{d:\"Calculates the variance based on a sample.\",a:\"Variance.\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},VARA:{d:\"Calculates the variance based on a sample, setting text to the value `0`.\",a:\"Variance of sample (text as 0).\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},VARPA:{d:\"Calculates the variance based on an entire population, setting text to the value `0`.\",a:\"Variance of entire population (text as 0).\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},STEYX:{d:\"Calculates the standard error of the predicted y-value for each x in the regression of a dataset.\",a:\"Standard error of predicted y-values in regression.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},STANDARDIZE:{d:\"Calculates the normalized equivalent of a random variable given mean and standard deviation of the distribution.\",a:\"Normalized equivalent of a random variable.\",p:[{name:\"value\",detail:\"The value of the random variable to normalize.\"},{name:\"mean\",detail:\"The mean of the distribution.\"},{name:\"standard_deviation\",detail:\"The standard deviation of the distribution.\"}]},SMALL:{d:\"Returns the nth smallest element from a data set, where n is user-defined.\",a:\"Nth smallest element in a data set.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"n\",detail:\"The rank from smallest to largest of the element to return.\"}]},SLOPE:{d:\"Calculates the slope of the line resulting from linear regression of a dataset.\",a:\"Slope of line from linear regression of data.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},SKEW:{d:\"Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean.\",a:\"Skewness of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the dataset.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the dataset.\"}]},SKEW_P:{d:\"Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean. This assumes the dataset is for the population.\",a:\"Skewness of a population's dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the dataset.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the dataset.\"}]},VLOOKUP:{d:\"Vertical lookup. Searches down the first column of a range for a key and returns the value of a specified cell in the row found.\",a:\"Vertical lookup.\",p:[{name:\"search_key\",detail:'The value to search for. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"range\",detail:\"The range to consider for the search. The first column in the range is searched for the key specified in `search_key`.\"},{name:\"index\",detail:\"The column index of the value to be returned, where the first column in `range` is numbered 1.\"},{name:\"is_sorted\",detail:\"Indicates whether the column to be searched (the first column of the specified range) is sorted, in which case the closest match for `search_key` will be returned.\"}]},HLOOKUP:{d:\"Horizontal lookup. Searches across the first row of a range for a key and returns the value of a specified cell in the column found.\",a:\"Horizontal lookup\",p:[{name:\"search_key\",detail:'The value to search for. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"range\",detail:\"The range to consider for the search. The first row in the range is searched for the key specified in `search_key`.\"},{name:\"index\",detail:\"The row index of the value to be returned, where the first row in `range` is numbered 1.\"},{name:\"is_sorted\",detail:\"Indicates whether the row to be searched (the first row of the specified range) is sorted.\"}]},LOOKUP:{d:\"Looks through a sorted row or column for a key and returns the value of the cell in a result range located in the same position as the search row or column.\",a:\"Look up a value.\",p:[{name:\"search_key\",detail:'The value to search for in the row or column. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"search_range|search_result_array\",detail:\"One method of using this function is to provide a single sorted row or column `search_range` to look through for the `search_key` with a second argument `result_range`. The other way is to combine these two arguments into one `search_result_array` where the first row or column is searched and a value is returned from the last row or column in the array. If `search_key` is not found, a non-exact match may be returned.\"},{name:\"result_range\",detail:\"The range from which to return a result. The value returned corresponds to the location where `search_key` is found in `search_range`. This range must be only a single row or column and should not be used if using the `search_result_array` method.\"}]},ADDRESS:{d:\"Returns a cell reference as a string.\",a:\"Cell reference as a string.\",p:[{name:\"row\",detail:\"The row number of the cell reference\"},{name:\"column\",detail:\"The column number (not name) of the cell reference. `A` is column number `1`.\"},{name:\"absolute_relative_mode\",detail:\"An indicator of whether the reference is row/column absolute. `1` is row and column absolute (e.g. $A$1), `2` is row absolute and column relative (e.g. A$1), `3` is row relative and column absolute (e.g. $A1), and `4` is row and column relative (e.g. A1).\"},{name:\"use_a1_notation\",detail:\"A boolean indicating whether to use `A1` style notation (TRUE) or `R1C1` style notation (FALSE).\"},{name:\"sheet\",detail:\"Text indicating the name of the sheet into which the address points.\"}]},INDIRECT:{d:\"Returns a cell reference specified by a string.\",a:\"A cell reference specified by a string.\",p:[{name:\"cell_reference_as_string\",detail:\"A cell reference, written as a string with surrounding quotation marks.\"},{name:\"is_A1_notation\",detail:\"Indicates if the cell reference is in A1 notation (TRUE) or R1C1 notation (FALSE).\"}]},ROW:{d:\"Returns the row number of a specified cell.\",a:\"Row number of a specified cell.\",p:[{name:\"cell_reference\",detail:\"The cell whose row number will be returned.\"}]},ROWS:{d:\"Returns the number of rows in a specified array or range.\",a:\"Number of rows in a specified array or range.\",p:[{name:\"range\",detail:\"The range whose row count will be returned.\"}]},COLUMN:{d:\"Returns the column number of a specified cell, with `A=1`.\",a:\"Column number of a specified cell.\",p:[{name:\"cell_reference\",detail:\"The cell whose column number will be returned. Column `A` corresponds to `1`.\"}]},COLUMNS:{d:\"Returns the number of columns in a specified array or range.\",a:\"Number of columns in a specified array or range.\",p:[{name:\"range\",detail:\"The range whose column count will be returned.\"}]},OFFSET:{d:\"Returns a range reference shifted a specified number of rows and columns from a starting cell reference.\",a:\"A range reference offset relative to a cell.\",p:[{name:\"cell_reference\",detail:\"The starting point from which to count the offset rows and columns.\"},{name:\"offset_rows\",detail:\"The number of rows to offset by.\"},{name:\"offset_columns\",detail:\"The number of columns to offset by.\"},{name:\"height\",detail:\"The height of the range to return starting at the offset target.\"},{name:\"width\",detail:\"The width of the range to return starting at the offset target.\"}]},MATCH:{d:\"Returns the relative position of an item in a range that matches a specified value.\",a:\"Position of item in range that matches value.\",p:[{name:\"search_key\",detail:'The value to search for. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"range\",detail:\"The one-dimensional array to be searched.\"},{name:\"search_type\",detail:\"The search method. `1` (default) finds the largest value less than or equal to `search_key` when `range` is sorted in ascending order. `0` finds the exact value when `range` is unsorted. `-1` finds the smallest value greater than or equal to `search_key` when `range` is sorted in descending order.\"}]},INDEX:{d:\"Returns the content of a cell, specified by row and column offset.\",a:\"Content of cell specified by row and column offset.\",p:[{name:\"reference\",detail:\"The array of cells to be offset into.\"},{name:\"row\",detail:\"The number of offset rows.\"},{name:\"column\",detail:\"The number of offset columns.\"}]},GETPIVOTDATA:{d:\"Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.\",a:\"Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.\",p:[{name:\"value_name\",detail:\"The name of the value in the pivot table for which you want to get data.\"},{name:\"any_pivot_table_cell\",detail:\"Any reference to a cell in the desired pivot table (top corner recommended).\"},{name:\"original_column\",detail:\"The name of the column in the original data set (not the pivot table).\"},{name:\"pivot_item\",detail:\"The name of the row or column shown in the pivot table corresponding to *original_column* that you want to retrieve.\"}]},CHOOSE:{d:\"Returns an element from a list of choices based on index.\",a:\"An element from a list of choices based on index.\",p:[{name:\"index\",detail:\"Which choice (of the up to 30 provided) to return.\"},{name:\"choice1\",detail:\"A potential value to return. Required. May be a reference to a cell or an individual value.\"},{name:\"choice2\",detail:\"Additional values among which to choose.\"}]},HYPERLINK:{d:\"Creates a hyperlink inside a cell.\",a:\"Creates a hyperlink inside a cell.\",p:[{name:\"url\",detail:\"The full URL of the link location enclosed in quotation marks, or a reference to a cell containing such a URL.\"},{name:\"link_label\",detail:\"The text to display in the cell as the link, enclosed in quotation marks, or a reference to a cell containing such a label.\"}]},TIME:{d:\"Converts a provided hour, minute, and second into a time.\",a:\"Converts hour/minute/second into a time.\",p:[{name:\"hour\",detail:\"The hour component of the time.\"},{name:\"minute\",detail:\"The minute component of the time.\"},{name:\"second\",detail:\"The second component of the time.\"}]},TIMEVALUE:{d:\"Returns the fraction of a 24-hour day the time represents.\",a:\"Converts a time string into its serial number representation.\",p:[{name:\"time_string\",detail:\"The string that holds the time representation.\"}]},EOMONTH:{d:\"Returns a date on the last day of a month that falls a specified number of months before or after another date.\",a:\"Last day of a month before or after a date.\",p:[{name:\"start_date\",detail:\"The date from which to calculate the result.\"},{name:\"months\",detail:\"The number of months before (negative) or after (positive) 'start_date' to consider.\"}]},EDATE:{d:\"Returns a date a specified number of months before or after another date.\",a:\"Date a number of months before/after another date.\",p:[{name:\"start_date\",detail:\"The date from which to calculate the result.\"},{name:\"months\",detail:\"The number of months before (negative) or after (positive) 'start_date' to calculate.\"}]},SECOND:{d:\"Returns the second component of a specific time, in numeric format.\",a:\"Second component of a specific time.\",p:[{name:\"time\",detail:\"The time from which to calculate the second component\"}]},MINUTE:{d:\"Returns the minute component of a specific time, in numeric format.\",a:\"Minute component of a specific time.\",p:[{name:\"time\",detail:\"The time from which to calculate the minute component.\"}]},HOUR:{d:\"Returns the hour component of a specific time, in numeric format.\",a:\"Hour component of a specific time.\",p:[{name:\"time\",detail:\"The time from which to calculate the hour component.\"}]},NOW:{d:\"Returns the current date and time as a date value.\",a:\"Current date and time as a date value.\",p:[]},NETWORKDAYS:{d:\"Returns the number of net working days between two provided days.\",a:\"Net working days between two provided days.\",p:[{name:\"start_date\",detail:\"The start date of the period from which to calculate the number of net working days.\"},{name:\"end_date\",detail:\"The end date of the period from which to calculate the number of net working days.\"},{name:\"holidays\",detail:\"A range or array constant containing the date serial numbers to consider holidays.\"}]},NETWORKDAYS_INTL:{d:\"Returns the number of net working days between two provided days excluding specified weekend days and holidays.\",a:\"Net working days between two dates (specifying weekends).\",p:[{name:\"start_date\",detail:\"The start date of the period from which to calculate the number of net working days.\"},{name:\"end_date\",detail:\"The end date of the period from which to calculate the number of net working days.\"},{name:\"weekend\",detail:\"A number or string representing which days of the week are considered weekends.\"},{name:\"holidays\",detail:\"A range or array constant containing the dates to consider as holidays.\"}]},ISOWEEKNUM:{d:\"Returns a number representing the ISO week of the year where the provided date falls.\",a:\"ISO week number of the year.\",p:[{name:\"date\",detail:\"The date for which to determine the ISO week number. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"}]},WEEKNUM:{d:\"Returns a number representing the week of the year where the provided date falls.\",a:\"Week number of the year.\",p:[{name:\"date\",detail:\"The date for which to determine the week number. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"type\",detail:\"A number representing the day that a week starts on. Sunday = 1.\"}]},WEEKDAY:{d:\"Returns a number representing the day of the week of the date provided.\",a:\"Day of the week of the date provided (as number).\",p:[{name:\"date\",detail:\"The date for which to determine the day of the week. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"type\",detail:\"A number indicating which numbering system to use to represent weekdays. By default, counts starting with Sunday = 1.\"}]},DAY:{d:\"Returns the day of the month that a specific date falls on, in numeric format.\",a:\"Day of the month that a specific date falls on.\",p:[{name:\"date\",detail:\"The date from which to extract the day.\"}]},DAYS:{d:\"Returns the number of days between two dates.\",a:\"Number of days between two dates.\",p:[{name:\"end_date\",detail:\"The end of the date range.\"},{name:\"start_date\",detail:\"The start of the date range.\"}]},DAYS360:{d:\"Returns the difference between two days based on the 360 day year used in some financial interest calculations.\",a:\"Days between two dates on a 360-day year.\",p:[{name:\"start_date\",detail:\"The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"end_date\",detail:\"The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"method\",detail:\"An indicator of what day count method to use.\"}]},DATE:{d:\"Converts a provided year, month, and day into a date.\",a:\"Converts year/month/day into a date.\",p:[{name:\"year\",detail:\"The year component of the date.\"},{name:\"month\",detail:\"The month component of the date.\"},{name:\"day\",detail:\"The day component of the date.\"}]},DATEVALUE:{d:\"Converts a provided date string in a known format to a date value.\",a:\"Converts a date string to a date value.\",p:[{name:\"date_string\",detail:\"The string representing the date.\"}]},DATEDIF:{d:\"Calculates the number of days, months, or years between two dates.\",a:\"Date Difference.\",p:[{name:\"start_date\",detail:\"The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"end_date\",detail:\"The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"unit\",detail:'A string abbreviation for unit of time. For example, \"M\" for month. Accepted values are \"Y\",\"M\",\"D\",\"MD\",\"YM\",\"YD\".'}]},WORKDAY:{d:\"Calculates the date after a number of working days from a specified start date.\",a:\"Number of working days from start date.\",p:[{name:\"start_date\",detail:\"The date from which to begin counting.\"},{name:\"num_days\",detail:\"The number of working days to advance from `start_date`. If negative, counts backwards.\"},{name:\"holidays\",detail:\"A range or array constant containing the dates to consider holidays.\"}]},WORKDAY_INTL:{d:\"Calculates the date after a specified number of workdays excluding specified weekend days and holidays.\",a:\"Date after a number of workdays (specifying weekends).\",p:[{name:\"start_date\",detail:\"The date from which to begin counting.\"},{name:\"num_days\",detail:\"The number of working days to advance from `start_date`. If negative, counts backwards.\"},{name:\"weekend\",detail:\"A number or string representing which days of the week are considered weekends.\"},{name:\"holidays\",detail:\"A range or array constant containing the dates to consider holidays.\"}]},YEAR:{d:\"Returns the year specified by a given date.\",a:\"Year specified by a given date.\",p:[{name:\"date\",detail:\"The date from which to extract the year.\"}]},YEARFRAC:{d:\"Returns the number of years, including fractional years, between two dates using a specified day count convention.\",a:\"Exact number of years between two dates.\",p:[{name:\"start_date\",detail:\"The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"end_date\",detail:\"The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},TODAY:{d:\"Returns the current date as a date value.\",a:\"Current date as a date value.\",p:[]},MONTH:{d:\"Returns the month of the year a specific date falls in, in numeric format.\",a:\"Month of the year a specific date falls in.\",p:[{name:\"date\",detail:\"The date from which to extract the month.\"}]},EFFECT:{d:\"Calculates the annual effective interest rate given the nominal rate and number of compounding periods per year.\",a:\"Annual effective interest rate.\",p:[{name:\"nominal_rate\",detail:\"The nominal interest rate per year.\"},{name:\"periods_per_year\",detail:\"The number of compounding periods per year.\"}]},DOLLAR:{d:\"Formats a number into the currency specific to your spreadsheet locale.\",a:\"Formats a number as currency specific to your spreadsheet locale.\",p:[{name:\"number\",detail:\"The value to be formatted.\"},{name:\"number_of_places\",detail:\"The number of decimal places to display.\"}]},DOLLARDE:{d:\"Converts a price quotation given as a decimal fraction into a decimal value.\",a:\"Converts a decimal fraction to decimal value.\",p:[{name:\"fractional_price\",detail:\"The price quotation given using fractional decimal conventions.\"},{name:\"unit\",detail:\"The units of the fraction, e.g. `8` for 1/8ths or `32` for 1/32nds.\"}]},DOLLARFR:{d:\"Converts a price quotation given as a decimal value into a decimal fraction.\",a:\"Converts a decimal value to decimal fraction.\",p:[{name:\"decimal_price\",detail:\"The price quotation given as a decimal value.\"},{name:\"unit\",detail:\"The units of the desired fraction, e.g. `8` for 1/8ths or `32` for 1/32nds.\"}]},DB:{d:\"Calculates the depreciation of an asset for a specified period using the arithmetic declining balance method.\",a:\"Depreciation via declining balance method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"},{name:\"period\",detail:\"The single period within `life` for which to calculate depreciation.\"},{name:\"month\",detail:\"The number of months in the first year of depreciation.\"}]},DDB:{d:\"Calculates the depreciation of an asset for a specified period using the double-declining balance method.\",a:\"Depreciation via double-declining balance method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"},{name:\"period\",detail:\"The single period within `life` for which to calculate depreciation.\"},{name:\"factor\",detail:\"The factor by which depreciation decreases.\"}]},RATE:{d:\"Calculates the interest rate of an annuity investment based on constant-amount periodic payments and the assumption of a constant interest rate.\",a:\"Interest rate of an annuity investment.\",p:[{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"payment_per_period\",detail:\"The amount per period to be paid.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"},{name:\"rate_guess\",detail:\"An estimate for what the interest rate will be.\"}]},CUMPRINC:{d:\"Calculates the cumulative principal paid over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Cumulative principal paid over a set of periods.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"first_period\",detail:\"The number of the payment period to begin the cumulative calculation.\"},{name:\"last_period\",detail:\"The number of the payment period to end the cumulative calculation.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},COUPNUM:{d:\"Calculates the number of coupons, or interest payments, between the settlement date and the maturity date of the investment.\",a:\"Number of coupons between settlement and maturity.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},SYD:{d:\"Calculates the depreciation of an asset for a specified period using the sum of years digits method.\",a:\"Depreciation via sum of years digits method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"},{name:\"period\",detail:\"The single period within `life` for which to calculate depreciation.\"}]},TBILLEQ:{d:\"Calculates the equivalent annualized rate of return of a US Treasury Bill based on discount rate.\",a:\"Equivalent rate of return for a Treasury bill.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"discount\",detail:\"The discount rate of the bill at time of purchase.\"}]},TBILLYIELD:{d:\"Calculates the yield of a US Treasury Bill based on price.\",a:\"The yield of a us treasury bill based on price.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"}]},TBILLPRICE:{d:\"Calculates the price of a US Treasury Bill based on discount rate.\",a:\"Price of US treasury bill.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"discount\",detail:\"The discount rate of the bill at time of purchase.\"}]},PV:{d:\"Calculates the present value of an annuity investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Present value of an annuity investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"payment_amount\",detail:\"The amount per period to be paid.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},ACCRINT:{d:\"Calculates the accrued interest of a security that has periodic payments.\",a:\"Accrued interest of security with periodic payments.\",p:[{name:\"issue\",detail:\"The date the security was initially issued.\"},{name:\"first_payment\",detail:\"The first date interest will be paid.\"},{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"},{name:\"calc_method\",detail:\"[Optional-defaults to TRUE()] - A logical value that specifies the method used to calculate the total accrued interest when the settlement date is later than the first interest accrual date. \\n\\nIf the value is TRUE, the total accrued interest from the issue date to the settlement date is returned. \\n\\nIf the value is FALSE, return the accrued interest from the first interest accrual date to the settlement date.\"}]},ACCRINTM:{d:\"Calculates the accrued interest of a security that pays interest at maturity.\",a:\"Accrued interest of security paying at maturity.\",p:[{name:\"issue\",detail:\"The date the security was initially issued.\"},{name:\"maturity\",detail:\"The maturity date of the security.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPDAYBS:{d:\"Calculates the number of days from the first coupon, or interest payment, until settlement.\",a:\"Number of days from first coupon to settlement.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPDAYS:{d:\"Calculates the number of days in the coupon, or interest payment, period that contains the specified settlement date.\",a:\"Days in coupon period containing settlement date.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPDAYSNC:{d:\"Calculates the number of days from the settlement date until the next coupon, or interest payment.\",a:\"Days from settlement until next coupon.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPNCD:{d:\"Calculates next coupon, or interest payment, date after the settlement date.\",a:\"Next coupon date after the settlement date.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPPCD:{d:\"Calculates last coupon, or interest payment, date before the settlement date.\",a:\"Last coupon date before settlement date.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},FV:{d:\"Calculates the future value of an annuity investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Future value of an annuity investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"payment_amount\",detail:\"The amount per period to be paid.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},FVSCHEDULE:{d:\"Calculates the future value of some principal based on a specified series of potentially varying interest rates.\",a:\"Future value of principal from series of rates.\",p:[{name:\"principal\",detail:\"The amount of initial capital or value to compound against.\"},{name:\"rate_schedule\",detail:\"A series of interest rates to compound against the `principal`.\"}]},YIELD:{d:\"Calculates the annual yield of a security paying periodic interest, such as a US Treasury Bond, based on price.\",a:\"Annual yield of a security paying periodic interest.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},YIELDDISC:{d:\"Calculates the annual yield of a discount (non-interest-bearing) security, based on price.\",a:\"Annual yield of a discount security.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},NOMINAL:{d:\"Calculates the annual nominal interest rate given the effective rate and number of compounding periods per year.\",a:\"Annual nominal interest rate.\",p:[{name:\"effective_rate\",detail:\"The effective interest rate per year.\"},{name:\"periods_per_year\",detail:\"The number of compounding periods per year.\"}]},XIRR:{d:\"Calculates the internal rate of return of an investment based on a specified series of potentially irregularly spaced cash flows.\",a:\"Internal rate of return given non-periodic cashflows.\",p:[{name:\"cashflow_amounts\",detail:\"An array or range containing the income or payments associated with the investment.\"},{name:\"cashflow_dates\",detail:\"An array or range with dates corresponding to the cash flows in `cashflow_amounts`.\"},{name:\"rate_guess\",detail:\"An estimate for what the internal rate of return will be.\"}]},MIRR:{d:\"Calculates the modified internal rate of return on an investment based on a series of periodic cash flows and the difference between the interest rate paid on financing versus the return received on reinvested income.\",a:\"Modified internal rate of return.\",p:[{name:\"cashflow_amounts\",detail:\"An array or range containing the income or payments associated with the investment.\"},{name:\"financing_rate\",detail:\"The interest rate paid on funds invested.\"},{name:\"reinvestment_return_rate\",detail:\"The return (as a percentage) earned on reinvestment of income received from the investment.\"}]},IRR:{d:\"Calculates the internal rate of return on an investment based on a series of periodic cash flows.\",a:\"Internal rate of return given periodic cashflows.\",p:[{name:\"cashflow_amounts\",detail:\"An array or range containing the income or payments associated with the investment.\"},{name:\"rate_guess\",detail:\"An estimate for what the internal rate of return will be.\"}]},NPV:{d:\"Calculates the net present value of an investment based on a series of periodic cash flows and a discount rate.\",a:\"The net present value of an investment based on a series of periodic cash flows and a discount rate.\",p:[{name:\"discount\",detail:\"The discount rate of the investment over one period.\"},{name:\"cashflow1\",detail:\"The first future cash flow.\"},{name:\"cashflow2\",detail:\"Additional future cash flows.\"}]},XNPV:{d:\"Calculates the net present value of an investment based on a specified series of potentially irregularly spaced cash flows and a discount rate.\",a:\"Net present value given non-periodic cashflows.\",p:[{name:\"discount\",detail:\"The discount rate of the investment over one period.\"},{name:\"cashflow_amounts\",detail:\"A range of cells containing the income or payments associated with the investment.\"},{name:\"cashflow_dates\",detail:\"A range of cells with dates corresponding to the cash flows in `cashflow_amounts`.\"}]},CUMIPMT:{d:\"Calculates the cumulative interest over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Cumulative interest paid over a set of periods.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"first_period\",detail:\"The number of the payment period to begin the cumulative calculation.\"},{name:\"last_period\",detail:\"The number of the payment period to end the cumulative calculation.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},PMT:{d:\"Calculates the periodic payment for an annuity investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Periodic payment for an annuity investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},IPMT:{d:\"Calculates the payment on interest for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Payment on interest for an investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"period\",detail:\"The amortization period, in terms of number of periods.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},PPMT:{d:\"Calculates the payment on the principal of an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Payment on the principal of an investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"period\",detail:\"The amortization period, in terms of number of periods.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},INTRATE:{d:\"Calculates the effective interest rate generated when an investment is purchased at one price and sold at another with no interest or dividends generated by the investment itself.\",a:\"Calculates effective interest rate.\",p:[{name:\"buy_date\",detail:\"The date of purchase of the investment.\"},{name:\"sell_date\",detail:\"The date of sale of the investment.\"},{name:\"buy_price\",detail:\"The price at which the investment was purchased.\"},{name:\"sell_price\",detail:\"The price at which the investment was sold.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},PRICE:{d:\"Calculates the price of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.\",a:\"Price of a security paying periodic interest.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},PRICEDISC:{d:\"Calculates the price of a discount (non-interest-bearing) security, based on expected yield.\",a:\"Price of a discount security.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"discount\",detail:\"The discount rate of the security at time of purchase.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},PRICEMAT:{d:\"Calculates the price of a security paying interest at maturity, based on expected yield.\",a:\"Price of security paying interest at maturity.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"issue\",detail:\"The date the security was initially issued.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},RECEIVED:{d:\"Calculates the amount received at maturity for an investment in fixed-income securities purchased on a given date.\",a:\"Amount received at maturity for a security.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"investment\",detail:\"The amount invested (irrespective of face value of each security).\"},{name:\"discount\",detail:\"The discount rate of the security invested in.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},DISC:{d:\"Calculates the discount rate of a security based on price.\",a:\"The discount rate of a security based on price.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},NPER:{d:\"Calculates the number of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Number of payment periods for an investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"payment_amount\",detail:\"The amount of each payment made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},SLN:{d:\"Calculates the depreciation of an asset for one period using the straight-line method.\",a:\"Depreciation of asset using the straight-line method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"}]},DURATION:{d:\"Calculates the number of compounding periods required for an investment of a specified present value appreciating at a given rate to reach a target value.\",a:\"Number of periods for an investment to reach a value.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},MDURATION:{d:\"Calculates the modified Macaulay duration of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.\",a:\"Modified Macaulay duration.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},BIN2DEC:{d:\"Converts a signed binary number to decimal format.\",a:\"Converts a signed binary number to decimal format.\",p:[{name:\"signed_binary_number\",detail:\"The signed 10-bit binary value to be converted to decimal, provided as a string.\"}]},BIN2HEX:{d:\"Converts a signed binary number to signed hexadecimal format.\",a:\"Converts a binary number to hexadecimal.\",p:[{name:\"signed_binary_number\",detail:\"The signed 10-bit binary value to be converted to signed hexademical, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},BIN2OCT:{d:\"Converts a signed binary number to signed octal format.\",a:\"Converts a binary number to octal.\",p:[{name:\"signed_binary_number\",detail:\"The signed 10-bit binary value to be converted to signed octal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},DEC2BIN:{d:\"Converts a decimal number to signed binary format.\",a:\"Converts a decimal number to signed binary format.\",p:[{name:\"decimal_number\",detail:\"The decimal value to be converted to signed binary, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},DEC2HEX:{d:\"Converts a decimal number to signed hexadecimal format.\",a:\"Converts a decimal number to hexadecimal.\",p:[{name:\"decimal_number\",detail:\"The decimal value to be converted to signed hexadecimal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},DEC2OCT:{d:\"Converts a decimal number to signed octal format.\",a:\"Converts a decimal number to signed octal format.\",p:[{name:\"decimal_number\",detail:\"The decimal value to be converted to signed octal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},HEX2BIN:{d:\"Converts a signed hexadecimal number to signed binary format.\",a:\"Converts a hexadecimal number to binary.\",p:[{name:\"signed_hexadecimal_number\",detail:\"The signed 40-bit hexadecimal value to be converted to signed binary, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},HEX2DEC:{d:\"Converts a signed hexadecimal number to decimal format.\",a:\"Converts a hexadecimal number to decimal.\",p:[{name:\"signed_hexadecimal_number\",detail:\"The signed 40-bit hexadecimal value to be converted to decimal, provided as a string.\"}]},HEX2OCT:{d:\"Converts a signed hexadecimal number to signed octal format.\",a:\"Converts a hexadecimal number to octal.\",p:[{name:\"signed_hexadecimal_number\",detail:\"The signed 40-bit hexadecimal value to be converted to signed octal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},OCT2BIN:{d:\"Converts a signed octal number to signed binary format.\",a:\"Converts an octal number to binary.\",p:[{name:\"signed_octal_number\",detail:\"The signed 30-bit octal value to be converted to signed binary, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},OCT2DEC:{d:\"Converts a signed octal number to decimal format.\",a:\"Converts a signed octal number to decimal format.\",p:[{name:\"signed_octal_number\",detail:\"The signed 30-bit octal value to be converted to decimal, provided as a string.\"}]},OCT2HEX:{d:\"Converts a signed octal number to signed hexadecimal format.\",a:\"Converts an octal number to hexadecimal.\",p:[{name:\"signed_octal_number\",detail:\"The signed 30-bit octal value to be converted to signed hexadecimal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},COMPLEX:{d:\"Creates a complex number given real and imaginary coefficients.\",a:\"Creates a complex number.\",p:[{name:\"real_part\",detail:\"The real coefficient.\"},{name:\"imaginary_part\",detail:\"The imaginary coefficient.\"},{name:\"suffix\",detail:\"The suffix for the imaginary coefficient, can only be 'i' or 'j'. If omitted, 'i' will be used.\"}]},IMREAL:{d:\"Returns the real coefficient of a complex number.\",a:\"The real coefficient of a complex number.\",p:[{name:\"complex_number\",detail:\"The complex number, in the a+bi or a+bj format.\"}]},IMAGINARY:{d:\"Returns the imaginary coefficient of a complex number.\",a:\"The imaginary coefficient of a complex number.\",p:[{name:\"complex_number\",detail:\"The complex number, in the a+bi or a+bj format.\"}]},IMCONJUGATE:{d:\"Returns the complex conjugate of a number.\",a:\"The complex conjugate of a number.\",p:[{name:\"number\",detail:\"The complex number to calculate the conjugate for.\"}]},IMABS:{d:\"Returns absolute value (or modulus) of a complex number.\",a:\"The absolute value of a complex number.\",p:[{name:\"number\",detail:\"The complex number to calculate the absolute value of.\"}]},DELTA:{d:\"Compare two numeric values, returning 1 if they're equal.\",a:\"Compare two numeric values.\",p:[{name:\"number1\",detail:\"The first number to compare.\"},{name:\"number2\",detail:\"The second number to compare.\"}]},IMSUM:{d:\"Returns the sum of a series of complex numbers.\",a:\"Sum of a series of complex numbers.\",p:[{name:\"value1\",detail:\"The first complex number or range to add together.\"},{name:\"value2\",detail:\"Additional complex numbers or ranges to add to `value1`.\"}]},IMSUB:{d:\"Returns the difference between two complex numbers.\",a:\"The difference between two complex numbers.\",p:[{name:\"first_number\",detail:\"The complex number to subtract second_number from.\"},{name:\"second_number\",detail:\"The complex number to subtract from first_number.\"}]},IMPRODUCT:{d:\"Returns the result of multiplying a series of complex numbers together.\",a:\"Result of multiplying a series of complex numbers together.\",p:[{name:\"factor1\",detail:\"The first number or range to calculate for the product.\"},{name:\"factor2\",detail:\"Additional complex numbers or ranges to calculate for the product.\"}]},IMDIV:{d:\"Returns one complex number divided by another.\",a:\"One complex number divided by another.\",p:[{name:\"dividend\",detail:\"The complex number to be divided.\"},{name:\"divisor\",detail:\"The complex number to divide by.\"}]},NOT:{d:\"Returns the opposite of a logical value - `NOT(TRUE)` returns `FALSE`; `NOT(FALSE)` returns `TRUE`.\",a:\"Returns opposite of provided logical value.\",p:[{name:\"logical_expression\",detail:\"An expression or reference to a cell holding an expression that represents some logical value.\"}]},TRUE:{d:\"Returns the logical value `TRUE`.\",a:\"Logical value `true`.\",p:[]},FALSE:{d:\"Returns the logical value `FALSE`.\",a:\"Logical value `false`.\",p:[]},AND:{d:\"Returns true if all of the provided arguments are logically true, and false if any of the provided arguments are logically false.\",a:\"Logical `and` operator.\",p:[{name:\"logical_expression1\",detail:\"An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value.\"},{name:\"logical_expression2\",detail:\"More expressions that represent logical values.\"}]},IFERROR:{d:\"Returns the first argument if it is not an error value, otherwise returns the second argument if present, or a blank if the second argument is absent.\",a:\"Value if it is not an error, otherwise 2nd argument.\",p:[{name:\"value\",detail:\"The value to return if `value` itself is not an error.\"},{name:\"value_if_error\",detail:\"The value the function returns if `value` is an error.\"}]},IF:{d:\"Returns one value if a logical expression is `TRUE` and another if it is `FALSE`.\",a:\"Returns value depending on logical expression.\",p:[{name:\"logical_expression\",detail:\"An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`.\"},{name:\"value_if_true\",detail:\"The value the function returns if `logical_expression` is `TRUE`.\"},{name:\"value_if_false\",detail:\"The value the function returns if `logical_expression` is `FALSE`.\"}]},OR:{d:\"Returns true if any of the provided arguments are logically true, and false if all of the provided arguments are logically false.\",a:\"Logical `or` operator.\",p:[{name:\"logical_expression1\",detail:\"An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value.\"},{name:\"logical_expression2\",detail:\"More expressions that evaluate to logical values.\"}]},NE:{d:\"Returns `TRUE` if two specified values are not equal and `FALSE` otherwise. Equivalent to the `!=` operator.\",a:\"Not equal.\",p:[{name:\"value1\",detail:\"The first value.\"},{name:\"value2\",detail:\"The value to test against `value1` for inequality.\"}]},EQ:{d:\"Returns `TRUE` if two specified values are equal and `FALSE` otherwise. Equivalent to the `==` operator.\",a:\"Equal.\",p:[{name:\"value1\",detail:\"The first value.\"},{name:\"value2\",detail:\"The value to test against `value1` for equality.\"}]},GT:{d:\"Returns `TRUE` if the first argument is strictly greater than the second, and `FALSE` otherwise. Equivalent to the `>` operator.\",a:\"Strictly greater than.\",p:[{name:\"value1\",detail:\"The value to test as being greater than `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},GTE:{d:\"Returns `TRUE` if the first argument is greater than or equal to the second, and `FALSE` otherwise. Equivalent to the `>=` operator.\",a:\"Greater than or equal to.\",p:[{name:\"value1\",detail:\"The value to test as being greater than or equal to `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},LT:{d:\"Returns `TRUE` if the first argument is strictly less than the second, and `FALSE` otherwise. Equivalent to the `<` operator.\",a:\"Less than.\",p:[{name:\"value1\",detail:\"The value to test as being less than `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},LTE:{d:\"Returns `TRUE` if the first argument is less than or equal to the second, and `FALSE` otherwise. Equivalent to the `<=` operator.\",a:\"Less than or equal to.\",p:[{name:\"value1\",detail:\"The value to test as being less than or equal to `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},ADD:{d:\"Returns the sum of two numbers. Equivalent to the `+` operator.\",a:\"Sum of two numbers\",p:[{name:\"value1\",detail:\"The first addend.\"},{name:\"value2\",detail:\"The second addend.\"}]},MINUS:{d:\"Returns the difference of two numbers. Equivalent to the `-` operator.\",a:\"Difference of two numbers\",p:[{name:\"value1\",detail:\"The minuend, or number to be subtracted from.\"},{name:\"value2\",detail:\"The subtrahend, or number to subtract from `value1`.\"}]},MULTIPLY:{d:\"Returns the product of two numbers. Equivalent to the `*` operator.\",a:\"Product of two numbers\",p:[{name:\"factor1\",detail:\"The first multiplicand.\"},{name:\"factor2\",detail:\"The second multiplicand.\"}]},DIVIDE:{d:\"Returns one number divided by another. Equivalent to the `/` operator.\",a:\"One number divided by another\",p:[{name:\"dividend\",detail:\"The number to be divided.\"},{name:\"divisor\",detail:\"The number to divide by.\"}]},CONCAT:{d:\"Returns the concatenation of two values. Equivalent to the `&` operator.\",a:\"Concatenation of two values\",p:[{name:\"value1\",detail:\"The value to which `value2` will be appended.\"},{name:\"value2\",detail:\"The value to append to `value1`.\"}]},UNARY_PERCENT:{d:\"Returns a value interpreted as a percentage; that is, `UNARY_PERCENT(100)` equals `1`.\",a:\"Value interpreted as a percentage.\",p:[{name:\"percentage\",detail:\"The value to interpret as a percentage.\"}]},CONCATENATE:{d:\"Appends strings to one another.\",a:\"Appends strings to one another.\",p:[{name:\"string1\",detail:\"The initial string.\"},{name:\"string2\",detail:\"More strings to append in sequence.\"}]},CODE:{d:\"Returns the numeric Unicode map value of the first character in the string provided.\",a:\"Numeric unicode map value of character.\",p:[{name:\"string\",detail:\"The string whose first character's Unicode map value will be returned.\"}]},CHAR:{d:\"Convert a number into a character according to the current Unicode table.\",a:\"Gets character associated with number.\",p:[{name:\"table_number\",detail:\"The number of the character to look up from the current Unicode table in decimal format.\"}]},ARABIC:{d:\"Computes the value of a Roman numeral.\",a:\"Computes the value of a roman numeral.\",p:[{name:\"roman_numeral\",detail:\"The Roman numeral to format, whose value must be between 1 and 3999, inclusive.\"}]},ROMAN:{d:\"Formats a number in Roman numerals.\",a:\"Formats a number in Roman numerals.\",p:[{name:\"number\",detail:\"The number to format, between 1 and 3999, inclusive.\"}]},REGEXEXTRACT:{d:\"Extracts matching substrings according to a regular expression.\",a:\"Extracts matching substrings with regular expression.\",p:[{name:\"text\",detail:\"The input text.\"},{name:\"regular_expression\",detail:\"The first part of `text` that matches this expression will be returned.\"}]},REGEXMATCH:{d:\"Whether a piece of text matches a regular expression.\",a:\"Whether a piece of text matches regular expression.\",p:[{name:\"text\",detail:\"The text to be tested against the regular expression.\"},{name:\"regular_expression\",detail:\"The regular expression to test the text against.\"}]},REGEXREPLACE:{d:\"Replaces part of a text string with a different text string using regular expressions.\",a:\"Replaces text with regular expressions.\",p:[{name:\"text\",detail:\"The text, a part of which will be replaced.\"},{name:\"regular_expression\",detail:\"The regular expression.  All matching instances in `text` will be replaced.\"},{name:\"replacement\",detail:\"The text which will be inserted into the original text.\"}]},T:{d:\"Returns string arguments as text, or the empty string if the value is not text.\",a:\"String arguments as text.\",p:[{name:\"value\",detail:\"The argument to be converted to text.\"}]},FIXED:{d:\"Formats a number with a fixed number of decimal places.\",a:\"Formats number with fixed number of decimal places.\",p:[{name:\"number\",detail:\"The number to format.\"},{name:\"number_of_places\",detail:\"The number of decimal places to display in the result.\"},{name:\"suppress_separator\",detail:\"Whether or not to suppress the thousands separator used in some locales (e.g. `1,000` becomes `1000`). Separators will be present if this value is 0 or omitted, and absent otherwise.\"}]},FIND:{d:\"Returns the position at which a string is first found within text where the capitalization of letters matters. Returns `#VALUE!` if the string is not found.\",a:\"First position of string found in text, case-sensitive.\",p:[{name:\"search_for\",detail:\"The string to look for within `text_to_search`.\"},{name:\"text_to_search\",detail:\"The text to search for the first occurrence of `search_for`.\"},{name:\"starting_at\",detail:\"The character within `text_to_search` at which to start the search.\"}]},FINDB:{d:\"Returns the position at which a string is first found within text counting each double-character as 2.\",a:\"Position at which a string is first found within text (binary).\",p:[{name:\"search_for\",detail:\"The string to look for within `text_to_search`.\"},{name:\"text_to_search\",detail:\"The text to search for the first occurrence of `search_for`.\"},{name:\"starting_at\",detail:\"The character within `text_to_search` at which to start the search.\"}]},JOIN:{d:\"Concatenates the elements of one or more one-dimensional arrays using a specified delimiter.\",a:\"Concatenates elements of arrays with delimiter.\",p:[{name:\"delimiter\",detail:\"The character or string to place between each concatenated value.\"},{name:\"value_or_array1\",detail:\"The value or values to be appended using `delimiter`.\"},{name:\"value_or_array2\",detail:\"More values to be appended using `delimiter`.\"}]},LEFT:{d:\"Returns a substring from the beginning of a specified string.\",a:\"Substring from beginning of specified string.\",p:[{name:\"string\",detail:\"The string from which the left portion will be returned.\"},{name:\"number_of_characters\",detail:\"The number of characters to return from the left side of `string`.\"}]},RIGHT:{d:\"Returns a substring from the end of a specified string.\",a:\"A substring from the end of a specified string.\",p:[{name:\"string\",detail:\"The string from which the right portion will be returned.\"},{name:\"number_of_characters\",detail:\"The number of characters to return from the right side of `string`.\"}]},MID:{d:\"Returns a segment of a string.\",a:\"A segment of a string.\",p:[{name:\"string\",detail:\"The string to extract a segment from.\"},{name:\"starting_at\",detail:\"The index from the left of `string` from which to begin extracting. The first character in `string` has the index 1.\"},{name:\"extract_length\",detail:\"The length of the segment to extract.\"}]},LEN:{d:\"Returns the length of a string.\",a:\"Length of a string.\",p:[{name:\"text\",detail:\"The string whose length will be returned.\"}]},LENB:{d:\"Returns the length of a string in bytes.\",a:\"Length of a string in bytes.\",p:[{name:\"text\",detail:\"The string whose length will be returned.\"}]},LOWER:{d:\"Converts a specified string to lowercase.\",a:\"Converts a specified string to lowercase.\",p:[{name:\"text\",detail:\"The string to convert to lowercase.\"}]},UPPER:{d:\"Converts a specified string to uppercase.\",a:\"Converts a specified string to uppercase.\",p:[{name:\"text\",detail:\"The string to convert to uppercase.\"}]},EXACT:{d:\"Tests whether two strings are identical.\",a:\"Tests whether two strings are identical.\",p:[{name:\"string1\",detail:\"The first string to compare\"},{name:\"string2\",detail:\"The second string to compare\"}]},REPLACE:{d:\"Replaces part of a text string with a different text string.\",a:\"Replaces part of a text string with different text.\",p:[{name:\"text\",detail:\"The text, a part of which will be replaced.\"},{name:\"position\",detail:\"The position where the replacement will begin (starting from 1).\"},{name:\"length\",detail:\"The number of characters in the text to be replaced.\"},{name:\"new_text\",detail:\"The text which will be inserted into the original text.\"}]},REPT:{d:\"Returns specified text repeated a number of times.\",a:\"Specified text repeated a number of times.\",p:[{name:\"text_to_repeat\",detail:\"The character or string to repeat.\"},{name:\"number_of_repetitions\",detail:\"The number of times `text_to_repeat` should appear in the value returned.\"}]},SEARCH:{d:\"Returns the position at which a string is first found within text and ignores capitalization of letters. Returns `#VALUE!` if the string is not found.\",a:\"First position of string found in text, ignoring case.\",p:[{name:\"search_for\",detail:\"The string to look for within `text_to_search`.\"},{name:\"text_to_search\",detail:\"The text to search for the first occurrence of `search_for`.\"},{name:\"starting_at\",detail:\"The character within `text_to_search` at which to start the search.\"}]},SUBSTITUTE:{d:\"Replaces existing text with new text in a string.\",a:\"Replaces existing text with new text in a string.\",p:[{name:\"text_to_search\",detail:\"The text within which to search and replace.\"},{name:\"search_for\",detail:\"The string to search for within `text_to_search`.\"},{name:\"replace_with\",detail:\"The string that will replace `search_for`.\"},{name:\"occurrence_number\",detail:\"The instance of `search_for` within `text_to_search` to replace with `replace_with`. By default, all occurrences of `search_for` are replaced; however, if `occurrence_number` is specified, only the indicated instance of `search_for` is replaced.\"}]},CLEAN:{d:\"Returns the text with the non-printable ASCII characters removed.\",a:\"Removes non-printable characters from a piece of text.\",p:[{name:\"text\",detail:\"The text whose non-printable characters are to be removed.\"}]},TEXT:{d:\"Converts a number into text according to a specified format.\",a:\"Formats a number into text.\",p:[{name:\"number\",detail:\"The number, date, or time to format.\"},{name:\"format\",detail:\"The pattern by which to format the number, enclosed in quotation marks.\"}]},TRIM:{d:\"Removes leading, trailing, and repeated spaces in text.\",a:\"Removes space characters.\",p:[{name:\"text\",detail:\"The text or reference to a cell containing text to be trimmed.\"}]},VALUE:{d:\"Converts a string in any of the date, time or number formats that Google Sheets understands into a number.\",a:\"Converts a date/time/number string into a number.\",p:[{name:\"text\",detail:\"The string containing the value to be converted.\"}]},PROPER:{d:\"Capitalizes each word in a specified string.\",a:\"Capitalizes each word in a specified string.\",p:[{name:\"text_to_capitalize\",detail:\"The text which will be returned with the first letter of each word in uppercase and all other letters in lowercase.\"}]},CONVERT:{d:\"Converts a numeric value to a different unit of measure.\",a:\"Unit conversion for numbers.\",p:[{name:\"value\",detail:\"The numeric value in `start_unit` to convert to `end_unit`.\"},{name:\"start_unit\",detail:\"The starting unit, the unit currently assigned to `value`.\"},{name:\"end_unit\",detail:\"The unit of measure into which to convert the argument, `value`.\"}]},SUMX2MY2:{d:\"Calculates the sum of the differences of the squares of values in two arrays.\",a:\"Sum of the differences of squares.\",p:[{name:\"array_x\",detail:\"The array or range of values whose squares will be reduced by the squares of corresponding entries in `array_y` and added together.\"},{name:\"array_y\",detail:\"The array or range of values whose squares will be subtracted from the squares of corresponding entries in `array_x` and added together.\"}]},SUMX2PY2:{d:\"Calculates the sum of the sums of the squares of values in two arrays.\",a:\"Sum of the sums of squares.\",p:[{name:\"array_x\",detail:\"The array or range of values whose squares will be added to the squares of corresponding entries in `array_y` and added together.\"},{name:\"array_y\",detail:\"The array or range of values whose squares will be added to the squares of corresponding entries in `array_x` and added together.\"}]},SUMXMY2:{d:\"Calculates the sum of the squares of differences of values in two arrays.\",a:\"Sum of the squares of differences.\",p:[{name:\"array_x\",detail:\"The array or range of values that will be reduced by corresponding entries in `array_y`, squared, and added together.\"},{name:\"array_y\",detail:\"The array or range of values that will be subtracted from corresponding entries in `array_x`, the result squared, and all such results added together.\"}]},TRANSPOSE:{d:\"Transposes the rows and columns of an array or range of cells.\",a:\"Transposes the rows and columns of an array.\",p:[{name:\"array_or_range\",detail:\"The array or range whose rows and columns will be swapped.\"}]},TREND:{d:\"Given partial data about a linear trend, fits an ideal linear trend using the least squares method and/or predicts further values.\",a:\"Fits points to linear trend derived via least-squares.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"new_data_x\",detail:\"The data points to return the `y` values for on the ideal curve fit.\"},{name:\"b\",detail:\"Given a general linear form of `y = m*x+b` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin.\"}]},FREQUENCY:{d:\"Calculates the frequency distribution of a one-column array into specified classes.\",a:\"The frequency distribution of array.\",p:[{name:\"data\",detail:\"The array or range containing the values to be counted.\"},{name:\"classes\",detail:\"The array or range containing the set of classes.\"}]},GROWTH:{d:\"Given partial data about an exponential growth trend, fits an ideal exponential growth trend and/or predicts further values.\",a:\"Fits points to exponential growth trend.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"new_data_x\",detail:\"The data points to return the `y` values for on the ideal curve fit.\"},{name:\"b\",detail:\"Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`.\"}]},LINEST:{d:\"Given partial data about a linear trend, calculates various parameters about the ideal linear trend using the least-squares method.\",a:\"Best-fit linear trend via least-squares.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"calculate_b\",detail:\"Given a linear form of `y = m*x+b`, calculates the y-intercept (`b`) if `TRUE`. Otherwise, forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin.\"},{name:\"verbose\",detail:\"A flag specifying whether to return additional regression statistics or only the linear coefficients and the y-intercept (default).\"}]},LOGEST:{d:\"Given partial data about an exponential growth curve, calculates various parameters about the best fit ideal exponential growth curve.\",a:\"Best-fit exponential growth curve.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"b\",detail:\"Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`.\"},{name:\"verbose\",detail:\"A flag specifying whether to return additional regression statistics or only the calculated coefficient and exponents.\"}]},MDETERM:{d:\"Returns the matrix determinant of a square matrix specified as an array or range.\",a:\"Matrix determinant of a square matrix.\",p:[{name:\"square_matrix\",detail:\"An array or range with an equal number of rows and columns representing a matrix whose determinant will be calculated.\"}]},MINVERSE:{d:\"Returns the multiplicative inverse of a square matrix specified as an array or range.\",a:\"Multiplicative inverse of square matrix.\",p:[{name:\"square_matrix\",detail:\"An array or range with an equal number of rows and columns representing a matrix whose multiplicative inverse will be calculated.\"}]},MMULT:{d:\"Calculates the matrix product of two matrices specified as arrays or ranges.\",a:\"The matrix product of two matrices.\",p:[{name:\"matrix1\",detail:\"The first matrix in the matrix multiplication operation, represented as an array or range.\"},{name:\"matrix2\",detail:\"The second matrix in the matrix multiplication operation, represented as an array or range.\"}]},SUMPRODUCT:{d:\"Calculates the sum of the products of corresponding entries in two equal-sized arrays or ranges.\",a:\"Sum of products of elements in two arrays.\",p:[{name:\"array1\",detail:\"The first array or range whose entries will be multiplied with corresponding entries in the second such array or range.\"},{name:\"array2\",detail:\"The second array or range whose entries will be multiplied with corresponding entries in the first such array or range.\"}]},ISFORMULA:{d:\"Checks whether a value is a formula.\",a:\"Whether a value is a formula.\",p:[{name:\"cell\",detail:\"The cell to be verified as containing a formula.\"}]},CELL:{d:\"Returns the requested information about the specified cell.\",a:\"Gets information about a cell.\",p:[{name:\"info_type\",detail:\"The type of information requested (see article for available types)\"},{name:\"reference\",detail:\"The reference to the cell.\"}]},NA:{d:'Returns the \"value not available\" error, `#N/A`.',a:\"The `#N/A` error.\",p:[]},ERROR_TYPE:{d:\"Returns a number corresponding to the error value in a different cell.\",a:\"Error value of cell (as number).\",p:[{name:\"reference\",detail:\"The cell to find the error number for although you can also provide the error value directly.\"}]},ISBLANK:{d:\"Checks whether the referenced cell is empty.\",a:\"Whether the referenced cell is empty.\",p:[{name:\"value\",detail:\"Reference to the cell that will be checked for emptiness.\"}]},ISERR:{d:\"Checks whether a value is an error other than `#N/A`.\",a:\"Whether a value is an error other than `#n/a`.\",p:[{name:\"value\",detail:\"The value to be verified as an error type other than `#N/A`.\"}]},ISERROR:{d:\"Checks whether a value is an error.\",a:\"Whether a value is an error.\",p:[{name:\"value\",detail:\"The value to be verified as an error type.\"}]},ISLOGICAL:{d:\"Checks whether a value is `TRUE` or `FALSE`.\",a:\"Whether a value is `true` or `false`.\",p:[{name:\"value\",detail:\"The value to be verified as a logical `TRUE` or `FALSE`.\"}]},ISNA:{d:\"Checks whether a value is the error `#N/A`.\",a:\"Whether a value is the error `#n/a`.\",p:[{name:\"value\",detail:\"The value to be compared with the error value `#N/A`.\"}]},ISNONTEXT:{d:\"Checks whether a value is non-textual.\",a:\"Whether a value is non-textual.\",p:[{name:\"value\",detail:\"The value to be checked.\"}]},ISNUMBER:{d:\"Checks whether a value is a number.\",a:\"Whether a value is a number.\",p:[{name:\"value\",detail:\"The value to be verified as a number.\"}]},ISREF:{d:\"Checks whether a value is a valid cell reference.\",a:\"Whether a value is a valid cell reference.\",p:[{name:\"value\",detail:\"The value to be verified as a cell reference.\"}]},ISTEXT:{d:\"Checks whether a value is text.\",a:\"Whether a value is text.\",p:[{name:\"value\",detail:\"The value to be verified as text.\"}]},TYPE:{d:\"Returns a number associated with the type of data passed into the function.\",a:\"Get the type of a value.\",p:[{name:\"value\",detail:\"The value whose type is to be determined.\"}]},N:{d:\"Returns the argument provided as a number. Text is converted to 0 and errors are returned as-is.\",a:\"Argument provided as a number.\",p:[{name:\"value\",detail:\"The argument to be converted to a number.\"}]},TO_DATE:{d:\"Converts a provided number to a date.\",a:\"Converts a provided number to a date.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a date.\"}]},TO_PURE_NUMBER:{d:\"Converts a provided date/time, percentage, currency or other formatted numeric value to a pure number without formatting.\",a:\"Converts any numeric value to a pure number.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a pure number.\"}]},TO_TEXT:{d:\"Converts a provided numeric value to a text value.\",a:\"Converts a provided numeric value to a text value.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to text.\"}]},TO_DOLLARS:{d:\"Converts a provided number to a dollar value.\",a:\"Converts a provided number to a dollar value.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a dollar value.\"}]},TO_PERCENT:{d:\"Converts a provided number to a percentage.\",a:\"Converts a provided number to a percentage.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a percentage.\"}]},DGET:{d:\"Returns a single value from a database table-like array or range using a SQL-like query.\",a:\"Single value from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DMAX:{d:\"Returns the maximum value selected from a database table-like array or range using a SQL-like query.\",a:\"Maximum of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DMIN:{d:\"Returns the minimum value selected from a database table-like array or range using a SQL-like query.\",a:\"Minimum of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DAVERAGE:{d:\"Returns the average of a set of values selected from a database table-like array or range using a SQL-like query.\",a:\"Average of a set of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DCOUNT:{d:\"Counts numeric values selected from a database table-like array or range using a SQL-like query.\",a:\"Counts values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DCOUNTA:{d:\"Counts values, including text, selected from a database table-like array or range using a SQL-like query.\",a:\"Counts values and text from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DPRODUCT:{d:\"Returns the product of values selected from a database table-like array or range using a SQL-like query.\",a:\"Product of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DSTDEV:{d:\"Returns the standard deviation of a population sample selected from a database table-like array or range using a SQL-like query.\",a:\"Standard deviation of population sample from table.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DSTDEVP:{d:\"Returns the standard deviation of an entire population selected from a database table-like array or range using a SQL-like query.\",a:\"Standard deviation of entire population from table.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DSUM:{d:\"Returns the sum of values selected from a database table-like array or range using a SQL-like query.\",a:\"Sum of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DVAR:{d:\"Returns the variance of a population sample selected from a database table-like array or range using a SQL-like query.\",a:\"Variance of population sample from table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DVARP:{d:\"Returns the variance of an entire population selected from a database table-like array or range using a SQL-like query.\",a:\"Variance of a population from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},AGE_BY_IDCARD:{d:\"Calculate the age based on the Chinese ID number. Support 15 or 18\",a:\"Get age based on ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"},{name:\"Deadline\",detail:\"The deadline or range of age calculation. The default is the current day.\"}]},SEX_BY_IDCARD:{d:\"Calculate gender based on Chinese ID number. Support 15 or 18\",a:\"Get gender based on ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},BIRTHDAY_BY_IDCARD:{d:\"Calculate the birthday based on the Chinese ID number. Support 15 or 18\",a:\"Get the birthday based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"},{name:\"Birthday format\",detail:\"Date type, default:0:[1900/01/01], 1:[1900-01-01], 2:[1900年1月1日]\"}]},PROVINCE_BY_IDCARD:{d:\"Calculate the province of birthplace based on the Chinese ID number. Support 15 or 18\",a:\"Get the province of birthplace based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},CITY_BY_IDCARD:{d:\"Calculate the city of birthplace based on the Chinese ID number. Support 15 or 18\",a:\"Get the city of birthplace based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},STAR_BY_IDCARD:{d:\"Calculate the constellation based on the Chinese ID number. Support 15 or 18\",a:\"Get the constellation based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},ANIMAL_BY_IDCARD:{d:\"Calculate the zodiac (rat, ox, tiger, rabbit...) based on the Chinese ID number. Support 15 or 18\",a:\"Get the zodiac according to the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},ISIDCARD:{d:\"Verify that the format of the ID card is correct. Support 15 or 18\",a:\"Verify the correctness of the ID card format.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},DM_TEXT_CUTWORD:{d:\"Text segmentation. Split a series of words into a series of individual words\",a:\"Chinese text segmentation.\",p:[{name:\"Text\",detail:\"Any text that needs word segmentation.\"},{name:\"Word segmentation mode\",detail:\"The default is 0[precision mode], 1[full mode], 2[search engine mode].\"}]},DM_TEXT_TFIDF:{d:\"Use tf-idf algorithm for keyword extraction. Identify keywords from a series of text\",a:\"tf-idf keyword recognition.\",p:[{name:\"Text\",detail:\"Any text that needs word segmentation.\"},{name:\"Number of keywords\",detail:\"The number of keywords returned by the algorithm, the default is 20\"},{name:\"Corpus\",detail:\"Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]\"}]},DM_TEXT_TEXTRANK:{d:\"Use TextRank algorithm to extract keywords. Identify keywords from a series of text\",a:\"TextRank keyword recognition.\",p:[{name:\"Text\",detail:\"Any text that needs word segmentation.\"},{name:\"Number of keywords\",detail:\"The number of keywords returned by the algorithm, the default is 20\"},{name:\"Corpus\",detail:\"Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]\"}]},DATA_CN_STOCK_CLOSE:{d:\"According to the stock code and date, return the corresponding stock closing price of A shares.\",a:\"Returns the closing price of stock.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_OPEN:{d:\"According to the stock code and date, return the opening price of stock.\",a:\"Return the opening price of a shares.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_MAX:{d:\"According to the stock code and date, return the highest price of stock.\",a:\"Return the highest price of stock.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_MIN:{d:\"According to the stock code and date, return the lowest price of stock.\",a:\"Returns the lowest price of stock.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_VOLUMN:{d:\"According to the stock code and date, return the corresponding stock trading volume of A shares.\",a:\"Returns the corresponding stock trading volume of A shares.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_AMOUNT:{d:\"According to the stock code and date, return the corresponding stock turnover of A shares.\",a:\"Returns the corresponding stock turnover of A shares.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},ISDATE:{d:\"Returns whether a value is a date.\",a:\"Whether a value is a date.\",p:[{name:\"value\",detail:\"The value to be verified as a date.\"}]},LINESPLINES:{d:\"Generate sparklines embedded in the cell to describe the continuous trend of data\",a:\"Generate sparklines line chart\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Line color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9\"},{name:\"Line thickness\",detail:\"Line thickness of the line graph, the default is 1px\"},{name:\"Auxiliary line\",detail:\"A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none\"},{name:\"Auxiliary line color\",detail:\"Color setting of auxiliary line, same as line color configuration, default #000\"},{name:\"Maximum mark\",detail:\"Identifies the maximum value of the line graph, the same line color configuration, default 0 does not display\"},{name:\"Minimum mark\",detail:\"Identify the minimum value of the line graph, the same line color configuration, default 0 does not display\"},{name:\"Mark size\",detail:\"The maximum and minimum mark size settings, the default is 1.5\"}]},AREASPLINES:{d:\"Generate sparklines embedded in the cell area chart, generally used to describe the continuous cumulative value trend of the data\",a:\"Generate sparklines area chart\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Line color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9\"},{name:\"Fill color\",detail:\"Form an area chart, the same line color configuration, default 0 does not display\"},{name:\"Line thickness\",detail:\"Line thickness of the line graph, the default is 1px\"},{name:\"Auxiliary line\",detail:\"A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none\"},{name:\"Auxiliary line color\",detail:\"Color setting of auxiliary line, same as line color configuration, default #000\"}]},COLUMNSPLINES:{d:\"Generate sparklines embedded in the vertical histogram of cells, generally used to describe the size of discrete data\",a:\"Generate sparklines vertical histogram\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Bar color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c\"},{name:\"Negative bar color\",detail:\"Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552\"},{name:\"Max\",detail:\"The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty\"}]},STACKCOLUMNSPLINES:{d:\"Generate sparklines, a cumulative vertical histogram embedded in a cell, generally used to describe the numerical size of multiple dimensions of discrete data\",a:\"Generate sparklines cumulative vertical histogram\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Stack by column\",detail:\"If you need to stack by row, set this item to false or 0, the default is 1\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Max\",detail:\"The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BARSPLINES:{d:\"Generate sparklines embedded in the cell, generally used to describe the size of discrete data\",a:\"Generate sparklines horizontal bar graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Bar color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c\"},{name:\"Negative bar color\",detail:\"Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552\"},{name:\"Max\",detail:\"The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty\"}]},STACKBARSPLINES:{d:\"Generate sparklines, a cumulative horizontal bar graph embedded in a cell, which is generally used to describe the numerical size of multiple dimensions of discrete data\",a:\"Generate sparklines cumulative horizontal bar graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Stack by column\",detail:\"If you need to stack by row, set this item to false or 0, the default is 1\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Max\",detail:\"The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},DISCRETESPLINES:{d:\"Generate sparklines embedded in the cell, generally used to describe the trend of discrete data\",a:\"Generate sparklines discrete graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Segmentation threshold\",detail:\"Discrete graph column color distinction, for example: if the value is 0, blue is greater than 0, red is less than 0, and the default is 0\"},{name:\"Above threshold color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9\"},{name:\"Below threshold color\",detail:\"The color setting of the bar below the threshold, the same as the color above the threshold, default #fc5c5c\"}]},TRISTATESPLINES:{d:\"Generate sparklines, a three-state graph embedded in the cell, which is generally used to describe the trend of three situations, such as winning, losing, or drawing.\",a:\"Generate sparklines three-state graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Bar color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c\"},{name:\"Negative bar color\",detail:\"Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552\"},{name:\"Zero value bar color\",detail:\"Zero value bar color setting, representing 0 value color, the same color configuration of the bar, default #999\"},{name:\"Color palette\",detail:\"The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty\"}]},PIESPLINES:{d:\"Generate sparklines pie chart embedded in the cell, generally used to describe the proportion of data\",a:\"Generate sparklines pie chart\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Rotation angle\",detail:\"The rotation angle of the pie chart, the default is 0\"},{name:\"border\",detail:\"Pie chart border size, default is none 0\"},{name:\"Border color\",detail:\"The border color of the pie chart, the default is #000\"},{name:\"Color palette\",detail:\"The color of the slice can be set in the palette, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BOXSPLINES:{d:\"Generate sparklines embedded in the cell box plot, generally used to describe the statistical distribution of the data set\",a:\"Generate sparklines box plot\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Outlier ratio\",detail:\"The threshold range of outliers, if it is 0 or false, it will not be displayed, the default is 1.5 times\"},{name:\"Target value\",detail:\"The target value setting on the box plot, the default is false and does not display\"},{name:\"Point size\",detail:\"The radius of the target point and outlier is set, the default is 1.5\"}]},BULLETSPLINES:{d:\"Generate sparklines embedded in the cell, generally used to describe the task achievement rate\",a:\"Generating sparklines bullets\",p:[{name:\"Target\",detail:\"The numerical value can be calculated effectively for the achieved target value, such as A1, 100, etc.\"},{name:\"achieved\",detail:\"Only when the value is completed can the value be calculated effectively, such as A1, 100, etc.\"},{name:\"Contrast\",detail:\"Comparative values, such as excess, minimum, and bottom line for awards, can be effectively calculated, such as A1, 100, etc. You can set up to 9 comparison values\"}]},COMPOSESPLINES:{d:\"Support multiple types of pictures in the same cell, each parameter represents a sparklines diagram\",a:\"Combine sparklines graphs into one cell\",p:[{name:\"config\",detail:\"Sparklines chart settings, such as A1:A20, a completed pie chart, line chart settings, etc.\"}]},SORT:{d:\"Sorts the rows of a given array or range by the values in one or more columns.\",a:\"Sorts rows of range by specified column.\",p:[{name:\"range\",detail:\"The data to be sorted.\"},{name:\"sort_column\",detail:\"The index of the column in `range` or a range outside of `range` containing the values by which to sort.\"},{name:\"is_ascending\",detail:\"`TRUE` or `FALSE` indicating whether to sort `sort_column` in ascending order. `FALSE` sorts in descending order.\"},{name:\"sort_column2\",detail:\"Additional columns.\"}]},FILTER:{d:\"Returns a filtered version of the source range, returning only rows or columns which meet the specified conditions.\",a:\"Filters a range based off provided conditions.\",p:[{name:\"range\",detail:\"The data to be filtered.\"},{name:\"condition1\",detail:\"A column or row containing true or false values corresponding to the first column or row of `range`, or an array formula evaluating to true or false.\"},{name:\"condition2\",detail:\"Additional rows or columns containing boolean values `TRUE` or `FALSE` indicating whether the corresponding row or column in `range` should pass through `FILTER`. Can also contain array formula expressions which evaluate to such rows or columns. All conditions must be of the same type (row or column). Mixing row conditions and column conditions is not permitted.\"}]},UNIQUE:{d:\"Returns unique rows in the provided source range, discarding duplicates. Rows are returned in the order in which they first appear in the source range.\",a:\"Unique rows in the provided source range.\",p:[{name:\"range\",detail:\"The data to filter by unique entries.\"},{name:\"by_col\",detail:\"[Option] - Logical value, indicating how to compare; by row = FALSE() or omitted; by column = TRUE().\"},{name:\"occurs_once\",detail:\"[Option] - Logical value, only one occurrence in the unique value is returned = TRUE(); including all unique values = FALSE() or omitted.\"}]},RANDARRAY:{d:\"Returns a grid of random numbers between 0 inclusive and 1 exclusive. The grid size will match the provided rows and columns arguments. If neither rows nor columns are provided, then the grid will be size 1 x 1.\",a:\"Returns a grid of random numbers.\",p:[{name:\"rows\",detail:\"The number of rows to populate with a random number.\"},{name:\"columns\",detail:\"The number of columns to populate with a random number.\"}]},SEQUENCE:{d:\"Returns a grid of sequential numbers starting at a specified start value and  increasing by a specified step size. By default, the sequence starts at and  increases by 1.\",a:\"Returns a grid of sequential numbers.\",p:[{name:\"rows\",detail:\"The number of rows in the function's resulting grid.\"},{name:\"columns\",detail:\"The number of columns in the function's resulting grid. If omitted, the result grid will have 1 column.\"},{name:\"start\",detail:\"The number, at which to start the sequence. If omitted, the sequence will start at 1.\"},{name:\"step\",detail:\"The amount each value in the sequence will differ by. If omitted, each value will differ by 1.\"}]},EVALUATE:{d:\"Evaluate a formula or expression expressed in words and return the result\",a:\"Evaluate according to literal formula or expression.\",p:[{name:\"expression\",detail:\"Formula or expression\"}]},REMOTE:{d:\"Calls a function on a remote server\",a:\"Calls a function on a remote back end server/API.\",p:[{name:\"remote_expression\",detail:\"Formula\"}]}},toolbar:{undo:\"Undo\",redo:\"Redo\",paintFormat:\"Paint format\",currencyFormat:\"Format as currency\",percentageFormat:\"Format as percent\",numberDecrease:\"Decrease decimal places\",numberIncrease:\"Increase decimal places\",moreFormats:\"More formats\",font:\"Font\",fontSize:\"Font size\",bold:\"Bold (Ctrl+B)\",italic:\"Italic (Ctrl+I)\",strikethrough:\"Strikethrough (Alt+Shift+5)\",underline:\"Underline\",textColor:\"Text color\",chooseColor:\"choose color\",resetColor:\"Reset\",customColor:\"CUSTOM\",alternatingColors:\"Alternating colors\",confirmColor:\"OK\",cancelColor:\"Cancel\",collapse:\"Collapse\",fillColor:\"Fill color\",border:\"Border\",borderStyle:\"Border style\",mergeCell:\"Merge cells\",chooseMergeType:\"Choose merge type\",horizontalAlign:\"Horizontal align\",verticalAlign:\"Vertical align\",alignment:\"Alignment\",textWrap:\"Text wrap\",textWrapMode:\"Text wrap mode\",textRotate:\"Text rotate\",textRotateMode:\"Text rotate mode\",freezeTopRow:\"Freeze first row\",sortAndFilter:\"Sort and filter\",findAndReplace:\"Find and replace\",sum:\"SUM\",autoSum:\"Auto SUM\",moreFunction:\"More functions\",conditionalFormat:\"Conditional format\",postil:\"Comment\",pivotTable:\"Pivot Table\",chart:\"Chart\",screenshot:\"Screenshot\",splitColumn:\"Split text\",insertImage:\"Insert image\",exportXlsx:\"Export Xlsx\",insertLink:\"Insert link\",dataVerification:\"Data verification\",protection:\"Protect the sheet\",clearText:\"Clear color\",noColorSelectedText:\"No color is selected\",toolMore:\"More\",toolLess:\"Less\",toolClose:\"Close\",toolMoreTip:\"More features\",moreOptions:\"More options\",cellFormat:\"Cell format config\",print:\"Print\",resetCustomHeight:\"Reset Custom Height\",resetDefault:\"Reset Default\"},alternatingColors:{applyRange:\"Apply to range\",selectRange:\"Select a data range\",header:\"Header\",footer:\"Footer\",errorInfo:\"Cannot perform this operation on multiple selection areas, please select a single area and try again\",textTitle:\"Format style\",custom:\"CUSTOM\",close:\"close\",selectionTextColor:\"Click to select text color\",selectionCellColor:\"Click to select cell color\",removeColor:\"Remove alternating colors\",colorShow:\"color\",currentColor:\"Current\",tipSelectRange:\"Please select the range of alternating colors\",errorNoRange:\"No range is selected\",errorExistColors:\"Alternating colors already exist and cannot be edited\"},button:{confirm:\"OK\",cancel:\"Cancel\",close:\"Close\",update:\"Update\",delete:\"Delete\",insert:\"Insert\",prevPage:\"Previous\",nextPage:\"Next\",total:\"total:\"},paint:{start:\"Paint format start\",end:\"ESC\",tipSelectRange:\"Please select the range to be copied\",tipNotMulti:\"Cannot perform this operation on multiple selection ranges\"},format:{moreCurrency:\"More currency formats\",moreDateTime:\"More date and time formats\",moreNumber:\"More number formats\",titleCurrency:\"Currency formats\",decimalPlaces:\"Decimal places\",titleDateTime:\"Date and time formats\",titleNumber:\"Number formats\"},info:{detailUpdate:\"New opened\",detailSave:\"Local cache restored\",row:\"\",column:\"\",loading:\"Loading...\",copy:\"Copy\",return:\"Exit\",rename:\"Rename\",tips:\"WorkBook rename\",noName:\"Untitled spreadsheet\",wait:\"waiting for update\",add:\"Add\",addLast:\"more rows at bottom\",backTop:\"Back to the top\",pageInfo:\"Total ${total}，${totalPage} page，current ${currentPage}\",nextPage:\"Next\",tipInputNumber:\"Please enter the number\",tipInputNumberLimit:\"The increase range is limited to 1-100\",tipRowHeightLimit:\"Row height must be between 0 ~ 545\",tipColumnWidthLimit:\"The column width must be between 0 ~ 2038\",pageInfoFull:\"Total ${total}，${totalPage} page，All data displayed\"},currencyDetail:{RMB:\"RMB\",USdollar:\"US dollar\",EUR:\"EUR\",GBP:\"GBP\",HK:\"HK\",JPY:\"JPY\",AlbanianLek:\"Albanian Lek\",AlgerianDinar:\"Algerian Dinar\",Afghani:\"Afghani\",ArgentinePeso:\"Argentine Peso\",UnitedArabEmiratesDirham:\"United Arab Emirates Dirham\",ArubanFlorin:\"Aruban Florin\",OmaniRial:\"Omani Rial\",Azerbaijanimanat:\"Azerbaijani manat\",EgyptianPound:\"Egyptian Pound\",EthiopianBirr:\"Ethiopian Birr\",AngolaKwanza:\"Angola Kwanza\",AustralianDollar:\"Australian Dollar\",Patacas:\"Patacas\",BarbadosDollar:\"Barbados Dollar\",PapuaNewGuineaKina:\"Papua New Guinea Kina\",BahamianDollar:\"Bahamian Dollar\",PakistanRupee:\"Pakistan Rupee\",ParaguayanGuarani:\"Paraguayan Guarani\",BahrainiDinar:\"Bahraini Dinar\",PanamanianBalboa:\"Panamanian Balboa\",Brazilianreal:\"Brazilian real\",Belarusianruble:\"Belarusian ruble\",BermudianDollar:\"Bermudian Dollar\",BulgarianLev:\"Bulgarian Lev\",IcelandKrona:\"Iceland Krona\",BosniaHerzegovinaConvertibleMark:\"Bosnia-Herzegovina Convertible Mark\",PolishZloty:\"Polish Zloty\",Boliviano:\"Boliviano\",BelizeDollar:\"Belize Dollar\",BotswanaPula:\"Botswana Pula\",NotDannuzhamu:\"Not Dannuzhamu\",BurundiFranc:\"Burundi Franc\",NorthKoreanWon:\"North Korean Won\",DanishKrone:\"Danish Krone\",EastCaribbeanDollar:\"East Caribbean Dollar\",DominicaPeso:\"Dominica Peso\",RussianRuble:\"Russian Ruble\",EritreanNakfa:\"Eritrean Nakfa\",CFAfranc:\"CFA franc\",PhilippinePeso:\"Philippine Peso\",FijiDollar:\"Fiji Dollar\",CapeVerdeEscudo:\"Cape Verde Escudo\",FalklandIslandsPound:\"Falkland Islands Pound\",GambianDalasi:\"Gambian Dalasi\",Congolesefranc:\"Congolese franc\",ColombianPeso:\"Colombian Peso\",CostaRicanColon:\"Costa Rican Colon\",CubanPeso:\"Cuban Peso\",Cubanconvertiblepeso:\"Cuban convertible peso\",GuyanaDollar:\"Guyana Dollar\",KazakhstanTenge:\"Kazakhstan Tenge\",Haitiangourde:\"Haitian gourde\",won:\"won\",NetherlandsAntillesGuilder:\"Netherlands Antilles Guilder\",Honduraslempiras:\"Honduras lempiras\",DjiboutiFranc:\"Djibouti Franc\",KyrgyzstanSom:\"Kyrgyzstan Som\",GuineaFranc:\"Guinea Franc\",CanadianDollar:\"Canadian Dollar\",GhanaianCedi:\"Ghanaian Cedi\",Cambodianriel:\"Cambodian riel\",CzechKoruna:\"Czech Koruna\",ZimbabweDollar:\"Zimbabwe Dollar\",QatariRiyal:\"Qatari Riyal\",CaymanIslandsDollar:\"Cayman Islands Dollar\",Comorianfranc:\"Comorian franc\",KuwaitiDinar:\"Kuwaiti Dinar\",CroatianKuna:\"Croatian Kuna\",KenyanShilling:\"Kenyan Shilling\",LesothoLoti:\"Lesotho Loti\",LaoKip:\"Lao Kip\",LebanesePound:\"Lebanese Pound\",Lithuanianlitas:\"Lithuanian litas\",LibyanDinar:\"Libyan Dinar\",LiberianDollar:\"Liberian Dollar\",RwandaFranc:\"Rwanda Franc\",RomanianLeu:\"Romanian Leu\",MalagasyAriary:\"Malagasy Ariary\",MaldivianRufiyaa:\"Maldivian Rufiyaa\",MalawiKwacha:\"Malawi Kwacha\",MalaysianRinggit:\"Malaysian Ringgit\",MacedoniawearingDinar:\"Macedonia wearing Dinar\",MauritiusRupee:\"Mauritius Rupee\",MauritanianOuguiya:\"Mauritanian Ouguiya\",MongolianTugrik:\"Mongolian Tugrik\",BangladeshiTaka:\"Bangladeshi Taka\",PeruvianNuevoSol:\"Peruvian Nuevo Sol\",MyanmarKyat:\"Myanmar Kyat\",MoldovanLeu:\"Moldovan Leu\",MoroccanDirham:\"Moroccan Dirham\",MozambiqueMetical:\"Mozambique Metical\",MexicanPeso:\"Mexican Peso\",NamibianDollar:\"Namibian Dollar\",SouthAfricanRand:\"South African Rand\",SouthSudanesePound:\"South Sudanese Pound\",NicaraguaCordoba:\"Nicaragua Cordoba\",NepaleseRupee:\"Nepalese Rupee\",NigerianNaira:\"Nigerian Naira\",NorwegianKrone:\"Norwegian Krone\",GeorgianLari:\"Georgian Lari\",RMBOffshore:\"RMB (Offshore)\",SwedishKrona:\"Swedish Krona\",SwissFranc:\"Swiss Franc\",SerbianDinar:\"Serbian Dinar\",SierraLeone:\"Sierra Leone\",SeychellesRupee:\"Seychelles Rupee\",SaudiRiyal:\"Saudi Riyal\",SaoTomeDobra:\"Sao Tome Dobra\",SaintHelenapound:\"Saint Helena pound\",SriLankaRupee:\"Sri Lanka Rupee\",SwazilandLilangeni:\"Swaziland Lilangeni\",SudanesePound:\"Sudanese Pound\",Surinamesedollar:\"Surinamese dollar\",SolomonIslandsDollar:\"Solomon Islands Dollar\",SomaliShilling:\"Somali Shilling\",TajikistanSomoni:\"Tajikistan Somoni\",PacificFranc:\"Pacific Franc\",ThaiBaht:\"Thai Baht\",TanzanianShilling:\"Tanzanian Shilling\",TonganPaanga:\"Tongan Pa'anga\",TrinidadandTobagoDollar:\"Trinidad and Tobago Dollar\",TunisianDinar:\"Tunisian Dinar\",TurkishLira:\"Turkish Lira\",VanuatuVatu:\"Vanuatu Vatu\",GuatemalanQuetzal:\"Guatemalan Quetzal\",CommissionBolivar:\"Commission Bolivar\",BruneiDollar:\"Brunei Dollar\",UgandanShilling:\"Ugandan Shilling\",UkrainianHryvnia:\"Ukrainian Hryvnia\",UruguayanPeso:\"Uruguayan Peso\",Uzbekistansom:\"Uzbekistan som\",WesternSamoaTala:\"Western Samoa Tala\",SingaporeDollar:\"Singapore Dollar\",NT:\"NT\",NewZealandDollar:\"New Zealand Dollar\",HungarianForint:\"Hungarian Forint\",SyrianPound:\"Syrian Pound\",JamaicanDollar:\"Jamaican Dollar\",ArmenianDram:\"Armenian Dram\",YemeniRial:\"Yemeni Rial\",IraqiDinar:\"Iraqi Dinar\",IranianRial:\"Iranian Rial\",NewIsraeliShekel:\"New Israeli Shekel\",IndianRupee:\"Indian Rupee\",IndonesianRupiah:\"Indonesian Rupiah\",JordanianDinar:\"Jordanian Dinar\",VND:\"VND\",ZambianKwacha:\"Zambian Kwacha\",GibraltarPound:\"Gibraltar Pound\",ChileanPeso:\"Chilean Peso\",CFAFrancBEAC:\"CFA Franc BEAC\"},defaultFmt:[{text:\"Automatic\",value:\"General\",example:\"\"},{text:\"Plain text\",value:\"@\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:\"Number\",value:\"##0.00\",example:\"1000.12\"},{text:\"Percent\",value:\"#0.00%\",example:\"12.21%\"},{text:\"Scientific\",value:\"0.00E+00\",example:\"1.01E+5\"},{text:\"\",value:\"split\",example:\"\"},{text:\"Accounting\",value:\"¥(0.00)\",example:\"¥(1200.09)\"},{text:\"Currency\",value:\"¥0.00\",example:\"¥1200.09\"},{text:\"\",value:\"split\",example:\"\"},{text:\"Date\",value:\"yyyy-MM-dd\",example:\"2017-11-29\"},{text:\"Time\",value:\"hh:mm AM/PM\",example:\"3:00 PM\"},{text:\"Time 24H\",value:\"hh:mm\",example:\"15:00\"},{text:\"Date time\",value:\"yyyy-MM-dd hh:mm AM/PM\",example:\"2017-11-29 3:00 PM\"},{text:\"Date time 24 H\",value:\"yyyy-MM-dd hh:mm\",example:\"2017-11-29 15:00\"},{text:\"\",value:\"split\",example:\"\"},{text:\"Custom formats\",value:\"fmtOtherSelf\",example:\"more\"}],dateFmtList:[{name:\"1930-08-05\",value:\"yyyy-MM-dd\"},{name:\"1930/8/5\",value:\"yyyy/MM/dd\"},{name:\"08-05\",value:\"MM-dd\"},{name:\"8-5\",value:\"M-d\"},{name:\"13:30:30\",value:\"h:mm:ss\"},{name:\"13:30\",value:\"h:mm\"},{name:\"PM 01:30\",value:\"AM/PM hh:mm\"},{name:\"PM 1:30\",value:\"AM/PM h:mm\"},{name:\"PM 1:30:30\",value:\"AM/PM h:mm:ss\"},{name:\"08-05 PM 01:30\",value:\"MM-dd AM/PM hh:mm\"}],fontFamily:{MicrosoftYaHei:\"YaHei\"},fontarray:[\"Times New Roman\",\"Arial\",\"Tahoma\",\"Verdana\"],fontjson:{\"times new roman\":0,arial:1,tahoma:2,verdana:3},border:{borderTop:\"borderTop\",borderBottom:\"borderBottom\",borderLeft:\"borderLeft\",borderRight:\"borderRight\",borderNone:\"borderNone\",borderAll:\"borderAll\",borderOutside:\"borderOutside\",borderInside:\"borderInside\",borderHorizontal:\"borderHorizontal\",borderVertical:\"borderVertical\",borderColor:\"borderColor\",borderSize:\"borderSize\"},merge:{mergeAll:\"Merge all\",mergeV:\"Vertically\",mergeH:\"Horizontally\",mergeCancel:\"Unmerge\",overlappingError:\"Cannot merge overlapping areas\",partiallyError:\"Cannot perform this operation on partially merged cells\"},align:{left:\"left\",center:\"center\",right:\"right\",top:\"Top\",middle:\"Middle\",bottom:\"Bottom\"},textWrap:{overflow:\"Overflow\",wrap:\"Wrap\",clip:\"Clip\"},rotation:{none:\"None\",angleup:\"Tilt Up\",angledown:\"Tilt Down\",vertical:\"Stack Vertically\",rotationUp:\"Rotate Up\",rotationDown:\"Rotate Down\"},freezen:{default:\"Freeze\",freezenRow:\"First Row\",freezenColumn:\"First Column\",freezenRC:\"Both\",freezenRowRange:\"Freezen row range\",freezenColumnRange:\"Freezen column range\",freezenRCRange:\"Freezen both range\",freezenCancel:\"Cancel\",noSeletionError:\"No Range to be selected\",rangeRCOverErrorTitle:\"Freeze reminder\",rangeRCOverError:\"The frozen pane is beyond the visible range, which will lead to abnormal operation. Please reset the frozen area.\"},sort:{asc:\"Ascending \",desc:\"Descending \",custom:\"Custom sort\",hasTitle:\"Data has a header row\",sortBy:\"Sort by\",addOthers:\"Add another sort column\",close:\"close\",confirm:\"sort\",columnOperation:\"Column\",secondaryTitle:\"then by\",sortTitle:\"Sort range\",sortRangeTitle:\"Sort range from\",sortRangeTitleTo:\"to\",noRangeError:\"Cannot perform this operation on multiple selection areas, please select a single range and try again\",mergeError:\"There are merged cells in the selection, this operation cannot be performed!\",columnSortMergeError:\"Column sorting will extend to the entire table selection. There are merged cells, this operation cannot be performed. Please use the sort feature in the toolbar.\"},filter:{filter:\"create filter\",sortByAsc:\"Sort A-Z\",sortByDesc:\"Sort Z-A\",filterByColor:\"Filter by color\",filterByCondition:\"Filter by condition\",filterByValues:\"Filter by values\",filiterInputNone:\"None\",filiterInputTip:\"Enter filter value\",filiterRangeStart:\"\",filiterRangeStartTip:\"Value for formula\",filiterRangeEnd:\"and\",filiterRangeEndTip:\"Value for formula\",filterValueByAllBtn:\"Check all\",filterValueByClearBtn:\"Clear\",filterValueByInverseBtn:\"Inverse\",filterValueByTip:\"filter By Values\",filterConform:\"Confirm\",filterCancel:\"Cancel\",clearFilter:\"Clear filter\",conditionNone:\"None\",conditionCellIsNull:\"Is empty\",conditionCellNotNull:\"Is not empty\",conditionCellTextContain:\"Text contains\",conditionCellTextNotContain:\"Text does not contain\",conditionCellTextStart:\"Text starts with\",conditionCellTextEnd:\"Text ends with\",conditionCellTextEqual:\"Text is exactly\",conditionCellDateEqual:\"Date is\",conditionCellDateBefore:\"Date is before\",conditionCellDateAfter:\"Date is after\",conditionCellGreater:\"Greater than\",conditionCellGreaterEqual:\"Greater than or equal to\",conditionCellLess:\"Less than\",conditionCellLessEqual:\"Less than or equal to\",conditionCellEqual:\"Is equal to\",conditionCellNotEqual:\"Is not equal to\",conditionCellBetween:\"Is between\",conditionCellNotBetween:\"Is not between\",filiterMoreDataTip:\"Big amount of data! please wait\",filiterMonthText:\"Month\",filiterYearText:\"Year\",filiterByColorTip:\"Filter by cell color\",filiterByTextColorTip:\"Filter by font color\",filterContainerOneColorTip:\"This column contains only one color\",filterDateFormatTip:\"Date format\",valueBlank:\"(Null)\",mergeError:\"There are merged cells in the filter selection, this operation cannot be performed!\"},rightclick:{copy:\"Copy\",copyAs:\"Copy as\",paste:\"Paste\",insert:\"Insert\",delete:\"Delete\",deleteCell:\"Delete cell\",deleteSelected:\"Delete selected \",hide:\"Hide\",hideSelected:\"Hide selected \",showHide:\"Show hidden \",to:\"Towards\",left:\"Left\",right:\"Right\",top:\"Top\",bottom:\"Bottom\",moveLeft:\"Move left\",moveUp:\"Move up\",add:\"Add\",row:\"Row\",column:\"Column\",width:\"Width\",height:\"Height\",number:\"Number\",confirm:\"Confirm\",orderAZ:\"A-Z order\",orderZA:\"Z-A order\",clearContent:\"Clear content\",matrix:\"Matrix operation\",sortSelection:\"Sort\",filterSelection:\"Filter\",chartGeneration:\"Create chart\",firstLineTitle:\"first line title\",untitled:\"untitled\",array1:\"One-dimensional array\",array2:\"Two-dimensional array\",array3:\"Multidimensional Arrays\",diagonal:\"Diagonal\",antiDiagonal:\"Anti-diagonal\",diagonalOffset:\"Diagonal offset\",offset:\"Offset\",boolean:\"Boolean\",flip:\"Flip\",upAndDown:\"Up and down\",leftAndRight:\"Left and right\",clockwise:\"Clockwise\",counterclockwise:\"Counterclockwise\",transpose:\"Transpose\",matrixCalculation:\"Matrix calculation\",plus:\"Plus\",minus:\"Minus\",multiply:\"Multiply\",divided:\"Divided\",power:\"Power\",root:\"Root\",log:\"Log\",delete0:\"Delete 0 values at both ends\",removeDuplicate:\"Remove duplicate values\",byRow:\"By row\",byCol:\"By column\",generateNewMatrix:\"Generate new matrix\"},comment:{insert:\"Insert\",edit:\"Edit\",delete:\"Delete\",showOne:\"Show/Hide\",showAll:\"Show/Hide All\"},screenshot:{screenshotTipNoSelection:\"Please select the scope of the screenshot\",screenshotTipTitle:\"Warning！\",screenshotTipHasMerge:\"This operation cannot be performed on merged cells\",screenshotTipHasMulti:\"This operation cannot be performed on multiple selection regions\",screenshotTipSuccess:\"Successful\",screenshotImageName:\"Screenshot\",downLoadClose:\"Close\",downLoadCopy:\"Copy to clipboard\",downLoadBtn:\"Download\",browserNotTip:\"not supported by IE browser!\",rightclickTip:'Please right-click \"copy\" on the picture',successTip:'Successfully (if pasting fails, please right-click on the image to \"copy image\")'},splitText:{splitDelimiters:\"Delimiters\",splitOther:\"Other\",splitContinueSymbol:\"Consecutive separators are treated as a single\",splitDataPreview:\"Preview\",splitTextTitle:\"Split text\",splitConfirmToExe:\"There is already data here, do you want to replace it?\",tipNoMulti:\"Cannot perform this operation on multiple selection areas, please select a single area and try again\",tipNoMultiColumn:\"Only one column of data can be converted at a time. The selected area can have multiple rows but not multiple columns. Please try again after selecting a single column range\"},imageText:{imageSetting:\"Image setting\",close:\"Close\",conventional:\"Conventional\",moveCell1:\"Move and resize cells\",moveCell2:\"Move and do not resize the cell\",moveCell3:\"Do not move and resize the cell\",fixedPos:\"Fixed position\",border:\"Border\",width:\"Width\",radius:\"Radius\",style:\"Style\",solid:\"Solid\",dashed:\"Dashed\",dotted:\"Dotted\",double:\"Double\",color:\"Color\"},punctuation:{tab:\"Tab\",semicolon:\"semicolon\",comma:\"comma\",space:\"space\"},findAndReplace:{find:\"Find\",replace:\"Replace\",goto:\"Go to\",location:\"Location\",formula:\"Formula\",date:\"Date\",number:\"Number\",string:\"String\",error:\"Error\",condition:\"Condition\",rowSpan:\"Row span\",columnSpan:\"Column span\",locationExample:\"Location\",lessTwoRowTip:\"Please select at least two rows\",lessTwoColumnTip:\"Please select at least two columns\",findTextbox:\"Find Content\",replaceTextbox:\"Replace Content\",regexTextbox:\"Regular Expression\",wholeTextbox:\"Whole word\",distinguishTextbox:\"Case sensitive\",allReplaceBtn:\"Replace All\",replaceBtn:\"Replace\",allFindBtn:\"Find All\",findBtn:\"Find next\",noFindTip:\"The content was not found\",modeTip:\"This operation is not available in this mode\",searchTargetSheet:\"Sheet\",searchTargetCell:\"Cell\",searchTargetValue:\"Value\",searchInputTip:\"Please enter the search content\",noReplceTip:\"There is nothing to replace\",noMatchTip:\"No match found\",successTip:\"${xlength} items found\",locationConstant:\"Constant\",locationFormula:\"Formula\",locationDate:\"Date\",locationDigital:\"Number\",locationString:\"String\",locationBool:\"Logical\",locationError:\"Error\",locationNull:\"Null\",locationCondition:\"Conditional format\",locationRowSpan:\"Row span\",locationColumnSpan:\"Column span\",locationTiplessTwoRow:\"Please select at least two rows\",locationTiplessTwoColumn:\"Please select at least two columns\",locationTipNotFindCell:\"Cell not found\"},sheetconfig:{delete:\"Delete\",copy:\"Copy\",rename:\"Rename\",changeColor:\"Change color\",hide:\"Hide\",unhide:\"Unhide\",moveLeft:\"Move left\",moveRight:\"Move right\",resetColor:\"Reset color\",cancelText:\"Cancel\",chooseText:\"Confirm color\",tipNameRepeat:\"The name of the tab page cannot be repeated! Please revise\",noMoreSheet:\"The workbook contains at least one visual worksheet. To delete the selected worksheet, please insert a new worksheet or show a hidden worksheet.\",confirmDelete:\"Are you sure to delete\",redoDelete:\"Can be undo by Ctrl+Z\",noHide:\"Can't hide, at least keep one sheet tag\",chartEditNoOpt:\"This operation is not allowed in chart editing mode!\",sheetNameSpecCharError:\"The name cannot contain:[ ] :  ? * / ' \\\"\",sheetNamecannotIsEmptyError:\"Sheet name cannot be empty\"},conditionformat:{conditionformat_greaterThan:\"Conditionformat-GreaterThan\",conditionformat_greaterThan_title:\"Format cells greater than\",conditionformat_lessThan:\"Conditionformat-LessThan\",conditionformat_lessThan_title:\"Format cells smaller than\",conditionformat_betweenness:\"Conditionformat-Betweenness\",conditionformat_betweenness_title:\"Format cells with values between\",conditionformat_equal:\"Conditionformat-Equal\",conditionformat_equal_title:\"Format cells equal to\",conditionformat_textContains:\"Conditionformat-TextContains\",conditionformat_textContains_title:\"Format cells containing the following text\",conditionformat_occurrenceDate:\"Conditionformat-OccurrenceDate\",conditionformat_occurrenceDate_title:\"Format cells containing the following dates\",conditionformat_duplicateValue:\"Conditionformat-DuplicateValue\",conditionformat_duplicateValue_title:\"Format cells containing the following types of values\",conditionformat_top10:\"Conditionformat-Top10\",conditionformat_top10_percent:\"Conditionformat-Top10%\",conditionformat_top10_title:\"Format the cells with the highest value\",conditionformat_last10:\"Conditionformat-Last10\",conditionformat_last10_percent:\"Conditionformat-Last10%\",conditionformat_last10_title:\"Format the cells with the smallest value\",conditionformat_AboveAverage:\"Conditionformat-AboveAverage\",conditionformat_AboveAverage_title:\"Format cells above average\",conditionformat_SubAverage:\"Conditionformat-SubAverage\",conditionformat_SubAverage_title:\"Format cells below average\",rule:\"Rule\",newRule:\"New rule\",editRule:\"Edit rule\",deleteRule:\"Delete rule\",deleteCellRule:\"Delete cell rule\",deleteSheetRule:\"Delete sheet rule\",manageRules:\"Management rules\",showRules:\"Show its formatting rules\",highlightCellRules:\"Highlight cell rules\",itemSelectionRules:\"Item selection rules\",conditionformatManageRules:\"Conditional Formatting Rule Manager\",format:\"Format\",setFormat:\"Set format\",setAs:\"Set as\",setAsByArea:\"For the selected area, set to\",applyRange:\"Apply range\",selectRange:\"Select application range\",selectRange_percent:\"Percentage of selected range\",selectRange_average:\"Average value of selected range\",selectRange_value:\"Value in the selected range\",pleaseSelectRange:\"Please select application range\",selectDataRange:\"Select data range\",selectCell:\"select cell\",pleaseSelectCell:\"Please select cell\",pleaseSelectADate:\"Please select a date\",pleaseEnterInteger:\"Please enter an integer between 1 and 1000\",onlySingleCell:\"Only a single cell can be referenced\",conditionValueCanOnly:\"The condition value can only be a number or a single cell\",ruleTypeItem1:\"Format all cells based on their respective values\",ruleTypeItem2:\"Only format cells that contain\",ruleTypeItem2_title:\"Only for cells that meet the following conditions\",ruleTypeItem3:\"Format only the top or bottom numbers\",ruleTypeItem3_title:\"Is the value in the following ranking\",ruleTypeItem4:\"Format only values above or below the average\",ruleTypeItem4_title:\"Is a value that satisfies the following conditions\",ruleTypeItem5:\"Format only unique or repeated values\",ruleTypeItem6:\"Use formulas to determine which cells to format\",formula:\"Formula\",textColor:\"Text color\",cellColor:\"Cell color\",confirm:\"Confirm\",confirmColor:\"Confirm color\",cancel:\"Cancel\",close:\"Close\",clearColorSelect:\"Clear color select\",sheet:\"Sheet\",currentSheet:\"Current Sheet\",dataBar:\"data bar\",dataBarColor:\"data bar color\",gradientDataBar_1:\"Blue-white gradient data bar\",gradientDataBar_2:\"Green-white gradient data bar\",gradientDataBar_3:\"Red-white gradient data bar\",gradientDataBar_4:\"Orange-white gradient stripes\",gradientDataBar_5:\"Light blue-white gradient stripes\",gradientDataBar_6:\"Purple-white gradient data bar\",solidColorDataBar_1:\"Blue data bar\",solidColorDataBar_2:\"Green data bar\",solidColorDataBar_3:\"Red data bar\",solidColorDataBar_4:\"Orange data bar\",solidColorDataBar_5:\"Light blue data bar\",solidColorDataBar_6:\"Purple data bar\",colorGradation:\"color gradation\",colorGradation_1:\"Green-yellow-red color gradation\",colorGradation_2:\"Red-yellow-green color gradation\",colorGradation_3:\"Green-white-red color gradation\",colorGradation_4:\"Red-white-green color gradation\",colorGradation_5:\"Blue-white-red color gradation\",colorGradation_6:\"Red-white-blue color gradation\",colorGradation_7:\"White-red color gradation\",colorGradation_8:\"Red-white color gradation\",colorGradation_9:\"Green-white color gradation\",colorGradation_10:\"White-green color gradation\",colorGradation_11:\"Green-yellow color gradation\",colorGradation_12:\"Yellow-green color gradation\",icons:\"icons\",pleaseSelectIcon:\"Please click to select a group of icons:\",cellValue:\"Cell value\",specificText:\"Specific text\",occurrence:\"Date\",greaterThan:\"Greater than\",lessThan:\"Less than\",between:\"Between\",equal:\"Equal\",in:\"In\",between2:\"\",contain:\"Contain\",textContains:\"Text contains\",duplicateValue:\"Duplicate value\",uniqueValue:\"Unique value\",top:\"Top\",top10:\"Top 10\",top10_percent:\"Top 10%\",last:\"Last\",last10:\"Last 10\",last10_percent:\"Last 10%\",oneself:\"\",above:\"Above\",aboveAverage:\"Above average\",below:\"Below\",belowAverage:\"Below average\",all:\"All\",yesterday:\"YTD\",today:\"Today\",tomorrow:\"Tomorrow\",lastWeek:\"Last week\",thisWeek:\"This week\",lastMonth:\"Last month\",thisMonth:\"This month\",lastYear:\"Last year\",thisYear:\"This year\",last7days:\"Last 7 days\",last30days:\"Last 30 days\",next7days:\"Next 7 days\",next30days:\"Next 30 days\",next60days:\"Next 60 days\",chooseRuleType:\"Choose rule type\",editRuleDescription:\"Edit rule description\",newFormatRule:\"New format rule\",editFormatRule:\"Edit format rule\",formatStyle:\"Style\",fillType:\"Fill\",color:\"Color\",twocolor:\"Two-color\",tricolor:\"Tricolor\",multicolor:\"Multi color\",grayColor:\"Gray color\",gradient:\"Gradient\",solid:\"Solid\",maxValue:\"Max value\",medianValue:\"Median value\",minValue:\"Min value\",direction:\"Direction\",threeWayArrow:\"Three-way arrow\",fourWayArrow:\"Four-way arrow\",fiveWayArrow:\"Five-way arrow\",threeTriangles:\"Three triangles\",shape:\"Shape\",threeColorTrafficLight:\"Three-color traffic light\",fourColorTrafficLight:\"Four-color traffic light\",threeSigns:\"Three signs\",greenRedBlackGradient:\"Green-red-black gradient\",rimless:\"Rimless\",bordered:\"Bordered\",mark:\"Mark\",threeSymbols:\"Three symbols\",tricolorFlag:\"Tricolor flag\",circled:\"Circled\",noCircle:\"No circle\",grade:\"Grade\",grade4:\"4 Grade\",grade5:\"5 Grade\",threeStars:\"3 Stars\",fiveQuadrantDiagram:\"Five-quadrant diagram\",fiveBoxes:\"5 Boxes\"},insertLink:{linkText:\"Text\",linkType:\"Link type\",external:\"External link\",internal:\"Internal link\",linkAddress:\"Link address\",linkSheet:\"Worksheet\",linkCell:\"Cell reference\",linkTooltip:\"Tooltip\",placeholder1:\"Please enter the web link address\",placeholder2:\"Please enter the cell to be quoted, example A1\",placeholder3:\"Please enter the prompt content\",tooltipInfo1:\"Please enter a valid link\",tooltipInfo2:\"Please enter the correct cell reference\"},dataVerification:{cellRange:\"Cell range\",selectCellRange:\"Click to select a cell range\",selectCellRange2:\"Please select a range of cells\",verificationCondition:\"Verification condition\",allowMultiSelect:\"Allow multiple selection\",dropdown:\"drop-down list\",checkbox:\"Checkbox\",number:\"Number\",number_integer:\"Number-integer\",number_decimal:\"Number-decimal\",text_content:\"Text-content\",text_length:\"Text-length\",date:\"Date\",validity:\"Effectiveness\",placeholder1:\"Please enter the options, separated by commas, such as 1,2,3,4,5\",placeholder2:\"Please enter content\",placeholder3:\"Numeric value, such as 10\",placeholder4:\"Please enter the specified text\",placeholder5:\"Please enter the prompt displayed when the cell is selected\",selected:\"Selected\",notSelected:\"Not selected\",between:\"Between\",notBetween:\"Not between\",equal:\"Equal\",notEqualTo:\"Not equal to\",moreThanThe:\"More than the\",lessThan:\"Less than\",greaterOrEqualTo:\"Greater or equal to\",lessThanOrEqualTo:\"Less than or equal to\",include:\"Include\",exclude:\"Exclude\",earlierThan:\"Earlier than\",noEarlierThan:\"No earlier than\",laterThan:\"Later than\",noLaterThan:\"No later than\",identificationNumber:\"Identification number\",phoneNumber:\"Phone number\",remote:\"Automatic remote acquisition option\",prohibitInput:\"Prohibit input when input data is invalid\",hintShow:\"Show prompt when the cell is selected\",deleteVerification:\"Delete verification\",tooltipInfo1:\"The drop-down list option cannot be empty\",tooltipInfo2:\"Checkbox content cannot be empty\",tooltipInfo3:\"The value entered is not a numeric type\",tooltipInfo4:\"The value 2 cannot be less than the value 1\",tooltipInfo5:\"The text content cannot be empty\",tooltipInfo6:\"The value entered is not a date type\",tooltipInfo7:\"Date 2 cannot be less than date 1\",textlengthInteger:\"Text length must be an integer greater than or equal to 0\"},formula:{sum:\"Sum\",average:\"Average\",count:\"Count\",max:\"Max\",min:\"Min\",ifGenerate:\"If formula generator\",find:\"Learn more\",tipNotBelongToIf:\"This cell function does not belong to the if formula!\",tipSelectCell:\"Please select the cell to insert the function\",ifGenCompareValueTitle:\"Comparison value\",ifGenSelectCellTitle:\"Click to select cell\",ifGenRangeTitle:\"Range\",ifGenRangeTo:\"to\",ifGenRangeEvaluate:\"Range evaluate\",ifGenSelectRangeTitle:\"Click to select range\",ifGenCutWay:\"Partition way\",ifGenCutSame:\"Same Partition value\",ifGenCutNpiece:\"Partition by N\",ifGenCutCustom:\"Custom\",ifGenCutConfirm:\"Confirm\",ifGenTipSelectCell:\"Select cells\",ifGenTipSelectCellPlace:\"Please select cells\",ifGenTipSelectRange:\"Select range\",ifGenTipSelectRangePlace:\"Please select range\",ifGenTipNotNullValue:\"The comparison value cannot be empty!\",ifGenTipLableTitile:\"Label\",ifGenTipRangeNotforNull:\"The range cannot be empty!\",ifGenTipCutValueNotforNull:\"The partition value cannot be empty!\",ifGenTipNotGenCondition:\"No conditions are available for generation!\"},formulaMore:{valueTitle:\"Value\",tipSelectDataRange:\"Select data range\",tipDataRangeTile:\"Data range\",findFunctionTitle:\"Search function\",tipInputFunctionName:\"Function name or brief description of function\",Array:\"Array\",Database:\"Database\",Date:\"Date\",Engineering:\"Engineering\",Filter:\"Filter\",Financial:\"Financial\",luckysheet:\"Luckysheet\",other:\"Other\",Logical:\"Logical\",Lookup:\"Lookup\",Math:\"Math\",Operator:\"Operator\",Parser:\"Parser\",Statistical:\"Statistical\",Text:\"Text\",dataMining:\"Data Mining\",selectFunctionTitle:\"Select a function\",calculationResult:\"Result\",tipSuccessText:\"Success\",tipParamErrorText:\"Parameter type error\",helpClose:\"Close\",helpCollapse:\"Collapse\",helpExample:\"Example\",helpAbstract:\"Abstract\",execfunctionError:\"Error in the formula\",execfunctionSelfError:\"The formula cannot refer to its own cell\",execfunctionSelfErrorResult:\"The formula cannot refer to its own cell, which will lead to inaccurate calculation results\",allowRepeatText:\"Repeat\",allowOptionText:\"Option\",selectCategory:\"Or select a category\"},drag:{noMerge:\"Cannot perform this operation on merged cells\",affectPivot:\"This change cannot be made to the selected cell because it will affect the pivot table!\",noMulti:\"Cannot perform this operation on multiple selection areas, please select a single area\",noPaste:\"Unable to paste this content here, please select a cell in the paste area and try to paste again\",noPartMerge:\"Cannot perform this operation on partially merged cells\",inputCorrect:\"Please enter the correct value\",notLessOne:\"The number of rows and columns cannot be less than 1\",offsetColumnLessZero:\"The offset column cannot be negative!\",pasteMustKeybordAlert:\"Copy and paste in the Sheet: Ctrl + C to copy, Ctrl + V to paste, Ctrl + X to cut\",pasteMustKeybordAlertHTMLTitle:\"Copy and paste in the Sheet\",pasteMustKeybordAlertHTML:\"<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;to copy<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;to paste<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;to cut\"},paste:{warning:\"Warning\",errorNotAllowMulti:\"Cannot perform this operation on multiple selection areas, please select a single range and try again\",errorNotAllowMerged:\"Cannot make partial changes to merged cells\"},pivotTable:{title:\"Pivot Table\",closePannel:\"Close\",editRange:\"Range\",tipPivotFieldSelected:\"Select the fields\",tipClearSelectedField:\"Clear all fields\",btnClearSelectedField:\"Clear\",btnFilter:\"Filter\",titleRow:\"Row\",titleColumn:\"Column\",titleValue:\"Value\",tipShowColumn:\"Statistics fields are displayed as columns\",tipShowRow:\"Statistics fields are displayed as rows\",titleSelectionDataRange:\"Select range\",titleDataRange:\"Data range\",valueSum:\"SUM\",valueStatisticsSUM:\"Sum\",valueStatisticsCOUNT:\"Count\",valueStatisticsCOUNTA:\"Count A\",valueStatisticsCOUNTUNIQUE:\"Count Unique\",valueStatisticsAVERAGE:\"Average\",valueStatisticsMAX:\"Max\",valueStatisticsMIN:\"Min\",valueStatisticsMEDIAN:\"Median\",valueStatisticsPRODUCT:\"Product\",valueStatisticsSTDEV:\"Stdev\",valueStatisticsSTDEVP:\"Stdevp\",valueStatisticslet:\"Var\",valueStatisticsVARP:\"VarP\",errorNotAllowEdit:\"This operation is prohibited in non-editing mode!\",errorNotAllowMulti:\"Cannot perform this operation on multiple selection areas, please select a single range and try again\",errorSelectRange:\"Please select the range of the new pivot table\",errorIsDamage:\"The source data of this pivot table is corrupted!\",errorNotAllowPivotData:\"Cannot select pivot table as source data!\",errorSelectionRange:\"Selection failed, wrong input range!\",errorIncreaseRange:\"Please expand the selected range!\",titleAddColumn:\"Add column to pivot table\",titleMoveColumn:\"Move the column to the white box below\",titleClearColumnFilter:\"Clear the filter for this column\",titleFilterColumn:\"Filter\",titleSort:\"Sort\",titleNoSort:\"No sort\",titleSortAsc:\"ASC\",titleSortDesc:\"DESC\",titleSortBy:\"Sort by\",titleShowSum:\"Show total\",titleStasticTrue:\"Yes\",titleStasticFalse:\"No\"},dropCell:{copyCell:\"Copy\",sequence:\"Sequence\",onlyFormat:\"Only format\",noFormat:\"Not format\",day:\"Day\",workDay:\"Work Day\",month:\"Month\",year:\"Year\",chineseNumber:\"Chinese numbers\"},imageCtrl:{borderTile:\"Image border color\",borderCur:\"Color\"},protection:{protectiontTitle:\"Protection\",enterPassword:\"Enter a password (optional)\",enterHintTitle:\"Prompt when editing is prohibited (optional)\",enterHint:\"The cell or chart you are trying to change is in a protected worksheet. If you want to change it, please unprotect the worksheet. You may need to enter a password\",swichProtectionTip:\"Protect the sheet and contents of locked cells\",authorityTitle:\"Allow users of this sheet to:\",selectLockedCells:\"Select locked cells\",selectunLockedCells:\"Select unlocked cells\",formatCells:\"Format cells\",formatColumns:\"Format columns\",formatRows:\"Format rows\",insertColumns:\"Insert columns\",insertRows:\"Insert rows\",insertHyperlinks:\"Insert hyperlinks\",deleteColumns:\"Delete columns\",deleteRows:\"Delete rows\",sort:\"Sort\",filter:\"Filter\",usePivotTablereports:\"Use Pivot Table reports\",editObjects:\"Edit objects\",editScenarios:\"Edit scenarios\",allowRangeTitle:\"Allow users of range to:\",allowRangeAdd:\"New...\",allowRangeAddTitle:\"Title\",allowRangeAddSqrf:\"Reference\",selectCellRange:\"Click to select a cell range\",selectCellRangeHolder:\"Cell range\",allowRangeAddTitlePassword:\"Password\",allowRangeAddTitleHint:\"Prompt\",allowRangeAddTitleHintTitle:\"Prompt when a password is set (optional)\",allowRangeAddtitleDefault:\"Input range name\",rangeItemDblclick:\"Double click to edit\",rangeItemHasPassword:\"Has password\",rangeItemErrorTitleNull:\"Title is null\",rangeItemErrorRangeNull:\"Reference is null\",rangeItemErrorRange:\"Reference is error\",validationTitle:\"Password validation\",validationTips:\"Need to enter a password to unlock the protection of the worksheet\",validationInputHint:\"Enter a password\",checkPasswordNullalert:\"Password is required!\",checkPasswordWrongalert:\"Incorrect password, please try again!\",checkPasswordSucceedalert:\"Unlock Succeed!\",defaultRangeHintText:\"The cell is being password protected.\",defaultSheetHintText:\"The cell or chart is in a protected worksheet. To make changes, please unprotect the worksheet. You may need to enter a password\"},cellFormat:{cellFormatTitle:\"Format cells\",protection:\"Protection\",locked:\"Locked\",hidden:\"Hidden\",protectionTips:\"To lock cells or hide formulas, protect the worksheet. On the toolbar, Click Protect Sheet Button\",tipsPart:\"Partial checked\",tipsAll:\"All checked\",selectionIsNullAlert:\"Selection is required!\",sheetDataIsNullAlert:\"error, Data is none!\"},print:{normalBtn:\"Normal\",layoutBtn:\"Page Layout\",pageBtn:\"Page break preview\",menuItemPrint:\"Print (Ctrl+P)\",menuItemAreas:\"Print areas\",menuItemRows:\"Print title rows\",menuItemColumns:\"Print title columns\",suggest:\"Any suggestions for the print function?\",range:\"Print Range\",size:\"Paper Size\",direction:\"Print Direction\",horizontal:\"Horizontal\",vertical:\"Vertical\",title:\"Print Setup\",current:\"Current Sheet\",area:\"Selected Range\",letter:\"letter\",paper:\"tabloid paper\",law:\"official paper\",admin:\"administrative paper\",expire:\"expired\",remain:\"remaining days\",error:\"error\",showLine:\"show grid line\",show:\"show\",hide:\"hide\",preview:\"preview\"},edit:{typing:\"typing\"},websocket:{success:\"WebSocket connection success\",refresh:\"An error occurred in the WebSocket connection, please refresh the page!\",wait:\"An error occurred in the WebSocket connection, please be patient!\",close:\"WebSocket connection closed\",contact:\"Server communication error occurred, please refresh the page and try again, if not, please contact the administrator!\",support:\"The current browser does not support WebSocket\"},exportXlsx:{notice:\"Please configure the export plugin\",serverError:\"server is under maintenance\",title:\"Export XLSX\",range:\"Range\",currentSheet:\"Current sheet\",allSheets:\"All sheets\"}}})),U=y((()=>{L={functionlist:{SUMIF:{d:\"对范围中符合指定条件的值求和。\",a:\"对范围中符合指定条件的值求和。\",p:[{name:\"范围\",detail:\"要根据条件进行检测的范围。\"},{name:\"条件\",detail:\"要应用于范围的模式或测试条件。\\n\\n如果范围包含的是要检测的文本，则条件必须为字符串。条件可以包含通配符，包括用于匹配单个字符的?或用于匹配零个或连续多个字符的*。要匹配问号星号本身，请在该字符前面加上波浪号(~)前缀（即~?和~*）。字符串条件必须用引号括起来。函数会检查范围中的每个单元格与条件是否相等或匹配（如果使用了通配符）。\\n\\n如果范围包含的是要检测的数字，则条件可以是字符串也可以是数字。如果给定的条件是一个数字，则检查范围中的每个单元格是否等于条件。另外，条件也可能是包含数字的字符串（也将对其进行相等检测），或者带有以下前缀的数字：=（检查是否相等）、>（检查范围单元格的值是否大于条件值）或<（检查范围单元格的值是否小于条件值）\"},{name:\"求和范围\",detail:\"要求和的范围（如果与范围不同）。\"}]},TAN:{d:\"返回已知角度的正切值。\",a:\"返回已知角度的正切值。\",p:[{name:\"角度\",detail:\"要求其正切值的角度，以弧度表示。\"}]},TANH:{d:\"返回给定实数的双曲正切值。\",a:\"返回给定实数的双曲正切值。\",p:[{name:\"值\",detail:\"要计算其双曲正切值的实数。\"}]},CEILING:{d:\"将数值向上取整为最接近的指定因数的倍数。\",a:\"将数值向上取整为最接近的指定因数的倍数。\",p:[{name:\"值\",detail:\"要向上舍入的数值。\"},{name:\"因数\",detail:\"要将值舍入到此数的整数倍。\"}]},ATAN:{d:\"返回数值的反正切值，以弧度表示。\",a:\"返回数值的反正切值\",p:[{name:\"值\",detail:\"要计算其反正切值的数值。\"}]},ASINH:{d:\"返回数值的反双曲正弦值。\",a:\"返回数值的反双曲正弦值。\",p:[{name:\"值\",detail:\"要计算其反双曲正弦值的数值。\"}]},ABS:{d:\"返回数值的绝对值。\",a:\"返回数值的绝对值。\",p:[{name:\"value\",detail:\"要返回其绝对值的数。\"}]},ACOS:{d:\"返回数值的反余弦值，以弧度表示。\",a:\"返回数值的反余弦值\",p:[{name:\"值\",detail:\"要计算其反余弦值的数值。必须介于-1和1之间，包括两端值。\"}]},ACOSH:{d:\"返回数值的反双曲余弦值。\",a:\"返回数值的反双曲余弦值。\",p:[{name:\"值\",detail:\"要计算其反双曲余弦值的数值。必须大于等于1。\"}]},MULTINOMIAL:{d:\"返回参数和的阶乘除以各参数阶乘的乘积后得到的值。\",a:\"返回参数和的阶乘除以各参数阶乘的乘积后得到的值。\",p:[{name:\"值1\",detail:\"用于计算的第一项数值或范围。\"},{name:\"值2\",detail:\"用于计算的其他数值或范围。\"}]},ATANH:{d:\"返回数值的反双曲正切值。\",a:\"返回数值的反双曲正切值。\",p:[{name:\"值\",detail:\"要计算其反双曲正切值的数值。必须介于-1和1之间（不包括-1和1）。\"}]},ATAN2:{d:\"以弧度为单位返回 x 轴与从原点 (0,0) 到指定坐标点 (`x`,`y`) 之间连线的夹角。\",a:\"以弧度为单位返回 x 轴与从原点 (0,0) 到指定坐标点 (`x`,`y`) 之间连线的夹角。\",p:[{name:\"x\",detail:\"要计算其与x轴夹角大小的线段的终点x坐标。\"},{name:\"y\",detail:\"要计算其与x轴夹角大小的线段的终点y坐标。\"}]},COUNTBLANK:{d:\"返回给定范围内的空单元格数。\",a:\"返回给定范围内的空单元格数。\",p:[{name:\"范围\",detail:\"要统计空白单元格数量的范围。\"}]},COSH:{d:\"返回给定实数的双曲余弦值。\",a:\"返回给定实数的双曲余弦值。\",p:[{name:\"值\",detail:\"要计算其双曲余弦值的实数值。\"}]},INT:{d:\"将数值向下取整为小于或等于该数的最接近的整数。\",a:\"将数值向下取整为小于或等于该数的最接近的整数。\",p:[{name:\"值\",detail:\"要向下取整为最接近的整数的数值。\"}]},ISEVEN:{d:\"检查所提供的数值是否为偶数。\",a:\"检查所提供的数值是否为偶数。\",p:[{name:\"值\",detail:\"要验证其是否为偶数的数值。\\n\\n如果值为偶数或指向包含偶数的单元格的引用，ISEVEN将返回TRUE，否则返回FALSE。\"}]},ISODD:{d:\"检查所提供的数值是否为奇数。\",a:\"检查所提供的数值是否为奇数。\",p:[{name:\"值\",detail:\"要验证其是否为奇数的数值。\\n\\n如果值为奇数或指向包含奇数的单元格，ISODD将返回TRUE，否则返回FALSE。\"}]},LCM:{d:\"返回一个或多个整数的最小公倍数。\",a:\"返回一个或多个整数的最小公倍数。\",p:[{name:\"值1\",detail:\"要在求最小公倍数数的计算中检查其因数的第一项数值或范围。\"},{name:\"值2\",detail:\"[可选] - 在求最小公倍数时要考虑其因数的其他数值或范围。\"}]},LN:{d:\"返回数值以 e（欧拉数）为底的对数。\",a:\"返回数值以 e（欧拉数）为底的对数。\",p:[{name:\"值\",detail:\"要以 e 为底数计算其对数的值。\\n\\n值必须为正数。\"}]},LOG:{d:\"根据指定底数返回数字的对数。\",a:\"根据指定底数返回数字的对数。\",p:[{name:\"值\",detail:\"想要计算其对数的正实数。\"},{name:\"底数\",detail:\"[可选] - 对数的底数。\"}]},LOG10:{d:\"返回数值以10为底的对数。\",a:\"返回数值以10为底的对数。\",p:[{name:\"值\",detail:\"要计算其以10为底的对数的数值。\\n\\n值必须为正值。\"}]},MOD:{d:\"返回两数相除的余数, 结果的符号与除数相同。\",a:\"返回两数相除的余数。\",p:[{name:\"被除数\",detail:\"要将其相除以得到余数的数值。\"},{name:\"除数\",detail:\"用于除其他数的数值。\"}]},MROUND:{d:\"将数值取整为另一整数最接近的整数倍。\",a:\"将数值取整为另一整数最接近的整数倍。\",p:[{name:\"值\",detail:\"要取整为另一整数最接近的整数倍的数值。\"},{name:\"因数\",detail:\"值将取此因数的整数倍。\"}]},ODD:{d:\"将数值向上取整为最接近的奇整数。\",a:\"将数值向上取整为最接近的奇整数。\",p:[{name:\"值\",detail:\"要向上取整的数值，取整值为大于此值的最接近的奇数。\\n\\n如果值为负数，则将其取整为绝对值大于该值的相邻负奇数。\"}]},SUMSQ:{d:\"返回一组数值和/或单元格的平方总和。\",a:\"返回一组数值和/或单元格的平方总和。\",p:[{name:\"值1\",detail:\"要将其平方相加的第一个数值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 要将其平方与值1的平方相加的其他数值或范围。\"}]},COMBIN:{d:\"给定集合中的对象总数和要选择的对象数量，返回共有多少种不同选择方式。\",a:\"给定集合中的对象总数和要选择的对象数量\",p:[{name:\"n\",detail:\"要从中进行选择的对象集合的大小。\"},{name:\"k\",detail:\"要选择的对象数量。\"}]},SUM:{d:\"返回一组数值和/或单元格的总和。\",a:\"返回一组数值和/或单元格的总和。\",p:[{name:\"值1\",detail:\"要相加的第一个数值或范围。\"},{name:\"值2\",detail:\"[可选] - 要相加的其他数值或范围。\"}]},SUBTOTAL:{d:\"使用指定的汇总函数，返回一系列纵向单元格的分类汇总。\",a:\"使用指定的汇总函数\",p:[{name:\"函数代码\",detail:\"用于计算分类汇总的函数。\\n\\n1代表AVERAGE\\n\\n2代表COUNT\\n\\n3代表COUNTA\\n\\n4代表MAX\\n\\n5代表MIN\\n\\n6代表PRODUCT\\n\\n7代表STDEV\\n\\n8代表STDEVP\\n\\n9代表SUM\\n\\n10代表VAR\\n\\n11代表VARP\\n\\n通过在这些2位代码前附加10（对于1位代码）或1（对于2位代码），可以将隐藏值忽略。例如，102代表忽略隐藏单元格的COUNT，而110则代表忽略隐藏值的VAR。\"},{name:\"范围1\",detail:\"要计算分类汇总的第一个范围。\"},{name:\"范围2\",detail:\"[可选] - 要计算分类汇总的其他范围。\"}]},ASIN:{d:\"返回数值的反正弦值，以弧度表示。\",a:\"返回数值的反正弦值\",p:[{name:\"值\",detail:\"要计算其反正弦值的数值。必须介于-1和1之间，包括两端值。\"}]},COUNTIF:{d:\"返回范围内满足某个条件的单元格的数量。\",a:\"返回范围内满足某个条件的单元格的数量。\",p:[{name:\"范围\",detail:\"要根据条件进行检测的范围。\"},{name:\"条件\",detail:\"要应用于范围的模式或测试条件。\\n\\n如果范围包含的是要检测的文本，则条件必须为字符串。条件可以包含通配符，包括用于匹配单个字符的?或用于匹配零个或连续多个字符的*。要匹配问号星号本身，请在该字符前面加上波浪号(~)前缀（即~?和~*）。字符串条件必须用引号括起来。函数会检查范围中的每个单元格与条件是否相等或匹配（如果使用了通配符）。\\n\\n如果范围包含的是要检测的数字，则条件可以是字符串也可以是数字。如果给定的条件是一个数字，则检查范围中的每个单元格是否等于条件。另外，条件也可能是包含数字的字符串（也将对其进行相等检测），或者带有以下前缀的数字：=、>、>=、<或<=，这些条件将分别用于检查范围中的单元格是否等于、大于、大于等于、小于、小于等于条件值。\"}]},RADIANS:{d:\"将以度表示的角度值转换为弧度。\",a:\"将以度表示的角度值转换为弧度。\",p:[{name:\"角度\",detail:\"要从度转换为弧度的角度。\"}]},RAND:{d:\"返回一个介于0和1之间（包括0但不包括1）的随机数。\",a:\"返回一个介于0和1之间（包括0但不包括1）的随机数。\",p:[]},COUNTUNIQUE:{d:\"计算一列指定值和范围中不重复数值的个数。\",a:\"计算一列指定值和范围中不重复数值的个数。\",p:[{name:\"值1\",detail:\"要检查其是否唯一的第一个值或范围。\"},{name:\"值2\",detail:\"[可选] - 要检查是否唯一的其他值或范围。\"}]},DEGREES:{d:\"将以弧度表示的角度值转换为度。\",a:\"将以弧度表示的角度值转换为度。\",p:[{name:\"角度\",detail:\"要从弧度转换为度的角度。\"}]},ERFC:{d:\"返回数值的互补高斯误差函数。\",a:\"返回数值的互补高斯误差函数。\",p:[{name:\"z\",detail:\"要为其计算互补高斯误差函数的数值。\"}]},EVEN:{d:\"将数值向上取整为最接近的偶整数。\",a:\"将数值向上取整为最接近的偶整数。\",p:[{name:\"值\",detail:\"要向上取整的数值，取整值为大于此值的最接近的偶数。\\n\\n如果值为负数，则将其取整为绝对值大于该值的相邻负偶数。\"}]},EXP:{d:\"返回欧拉数 e (~2.718) 的指定次幂。\",a:\"返回欧拉数 e (~2.718) 的指定次幂。\",p:[{name:\"指数\",detail:\"指定e的自乘幂次值。\"}]},FACT:{d:\"返回数值的阶乘。\",a:\"返回数值的阶乘。\",p:[{name:\"值\",detail:\"要计算并返回其阶乘的数字或对数字（所在单元格）的引用。\"}]},FACTDOUBLE:{d:\"返回数值的“双阶乘”。\",a:\"返回数值的“双阶乘”。\",p:[{name:\"值\",detail:\"要计算并返回其双阶乘的数字或对数字（所在单元格）的引用。\"}]},PI:{d:\"返回带有14位小数的 PI 值。\",a:\"返回带有14位小数的 PI 值。\",p:[]},FLOOR:{d:\"将数值向下取整为指定因数的最接近的整数倍。\",a:\"将数值向下取整为指定因数的最接近的整数倍。\",p:[{name:\"值\",detail:\"要向下舍入为因数的最接近整数倍的数值。\"},{name:\"因数\",detail:\"要将值舍入到此数的整数倍。\\n\\n因数不得为0。\"}]},GCD:{d:\"返回一个或多个整数的最大公约数。\",a:\"返回一个或多个整数的最大公约数。\",p:[{name:\"值1\",detail:\"要在查找最大公约数的计算中检查其因数的第一项数值或范围。\"},{name:\"值2\",detail:\"[可选] - 在求最大公约数时要考虑其因数的其他数值或范围。\"}]},RANDBETWEEN:{d:\"返回介于两个整数之间（包括这两个整数）的随机数。\",a:\"返回介于两个整数之间（包括这两个整数）的随机数。\",p:[{name:\"下界\",detail:\"随机值范围的下界。\"},{name:\"上界\",detail:\"随机值范围的上界。\"}]},ROUND:{d:\"将数字四舍五入到指定的位数。\",a:\"将数字四舍五入到指定的位数。\",p:[{name:\"值\",detail:\"要四舍五入的数字。\"},{name:\"位数\",detail:\"要进行四舍五入运算的位数。\\n\\n位数可以取负值，在这种情况下会将值的小数点左侧部分舍入到指定的位数。\"}]},ROUNDDOWN:{d:\"朝着零的方向将数字进行向下舍入。\",a:\"朝着零的方向将数字进行向下舍入。\",p:[{name:\"值\",detail:\"需要向下舍入的任意实数。\"},{name:\"位数\",detail:\"要通过舍入达到的小数位数。\\n\\n位数可以取负值，在这种情况下会将值的小数点左侧部分舍入到指定的位数。\"}]},ROUNDUP:{d:\"朝着远离 0（零）的方向将数字进行向上舍入。\",a:\"朝着远离 0（零）的方向将数字进行向上舍入。\",p:[{name:\"值\",detail:\"要将其舍入为位数位数字的值，始终向上舍入。\"},{name:\"位数\",detail:\"要通过舍入达到的小数位数。\\n\\n位数可以取负值，在这种情况下会将值的小数点左侧部分舍入到指定的位数。\"}]},SERIESSUM:{d:\"给定参数 x、n、m 和 a，返回幂级数的和 a1xn + a2x(n+m) + ... + aix(n+(i-1)m)，其中 i 为范围 a 中的项数。\",a:\"给定参数 x、n、m 和 a\",p:[{name:\"x\",detail:\"幂级数的输入值。随相应的近似类型而变，有可能为角度、指数或其他一些值。\"},{name:\"n\",detail:\"在幂级数中x的初始自乘幂次。\"},{name:\"m\",detail:\"x的幂次中的附加增量。\"},{name:\"a\",detail:\"包含幂级数系数的数组或范围。\"}]},SIGN:{d:\"给定输入数值，如果为负返回-1；如果为正返回1；如果为零则返回0。\",a:\"给定输入数值\",p:[{name:\"值\",detail:\"要返回其符号的数值。\"}]},SIN:{d:\"给定角度（以弧度表示），返回其正弦值。\",a:\"给定角度（以弧度表示）\",p:[{name:\"角度\",detail:\"要返回其正弦值的角度，以弧度表示。\"}]},SINH:{d:\"返回给定实数的双曲正弦值。\",a:\"返回给定实数的双曲正弦值。\",p:[{name:\"值\",detail:\"要计算其双曲正弦值的实数值。\"}]},SQRT:{d:\"返回一个正数的正平方根。\",a:\"返回一个正数的正平方根。\",p:[{name:\"值\",detail:\"要计算其正平方根的数值。\\n\\n值必须为正数；如果为负，SQRT 将返回 #NUM! 错误。\"}]},SQRTPI:{d:\"返回 PI 与给定正数乘积的正平方根。\",a:\"返回 PI 与给定正数乘积的正平方根。\",p:[{name:\"值\",detail:\"要将其与 PI 相乘并返回该乘积的平方根的数值\\n\\n值必须为正数；如果为负数，SQRTPI 将返回 #NUM! 错误。\"}]},GAMMALN:{d:\"返回指定伽玛函数的以 e（欧拉数）为底的对数。\",a:\"返回指定伽玛函数的以 e（欧拉数）为底的对数。\",p:[{name:\"值\",detail:\"伽玛函数的输入值。返回的将是伽玛 (值) 的自然对数。\\n\\n值必须为正数。\"}]},COS:{d:\"返回给定角度的余弦值（角度以弧度表示）。\",a:\"返回给定角度的余弦值（角度以弧度表示）。\",p:[{name:\"角度\",detail:\"要取其余弦值的角度，以弧度表示。\"}]},TRUNC:{d:\"截除指定有效位之外的部分，取数据的指定有效位。\",a:\"截除指定有效位之外的部分\",p:[{name:\"值\",detail:\"要截取的数据。\"},{name:\"位数\",detail:\"[可选 - 默认值为0] - 小数点右侧要保留的有效位数。\\n\\n如果位数大于值中的有效位数，则将“值”原样返回。\\n\\n位数可以取负值，在这种情况下会将小数点左侧指定位数的值更改为零。小数点右侧的所有位数都会被舍弃。如果值的所有位都被更改为零，则TRUNC会返回0。\"}]},QUOTIENT:{d:\"返回以一个数除以另一个数所得的结果，不包含余数。\",a:\"返回以一个数除以另一个数所得的结果\",p:[{name:\"被除数\",detail:\"要被除的数值。\"},{name:\"除数\",detail:\"用于除其他数的数值。\\n\\n除数不得为0。\"}]},POWER:{d:\"返回数值的指定次幂。\",a:\"返回数值的指定次幂。\",p:[{name:\"底数\",detail:\"要计算其指数次幂的数值。\\n\\n如果底数为负，则指数必须为整数。\"},{name:\"指数\",detail:\"指定底数的自乘幂次值。\"}]},SUMIFS:{d:\"根据多项条件返回范围之和。\",a:\"根据多项条件返回范围之和。\",p:[{name:\"求和范围\",detail:\"要对其求和的范围。\"},{name:\"条件范围1\",detail:\"要在哪个范围内检查条件1。\"},{name:\"条件1\",detail:\"要应用于条件范围1的模式或测试条件。\"},{name:\"条件范围2, 条件2...\",detail:\"[ 可选 ] - 要检查的其他范围和条件。\"}]},GET_TARGET:{d:\"查询目标数据。\",a:\"查询目标数据。\",p:[]},GET_AIRTABLE_DATA:{d:\"查询AirTable数据。\",a:\"查询AirTable数据。\",p:[{name:\"AirTable 地址\",detail:\"AirTable URL链接地址\"},{name:\"排序列\",detail:\"表示要排序的列的数字。\"},{name:\"是否升序\",detail:\"[可选] - 1 或 0 表示是否按升序对 `排序列` 进行排序。 0 按降序排列，1 按升序排列。\"}]},ASK_AI:{d:\"向AI提问。\",a:\"向AI提问。\",p:[{name:\"问题\",detail:\"向AI咨询，你想得到的数据。\"},{name:\"条件范围\",detail:\"要在哪个范围内处理数据。\"}]},COUNTIFS:{d:\"根据多项条件返回范围中的单元格数量。\",a:\"根据多项条件返回范围中的单元格数量。\",p:[{name:\"条件范围1\",detail:\"要在哪个范围内检查条件1。\"},{name:\"条件1\",detail:\"要应用于条件范围1的模式或测试条件。\"},{name:\"条件范围2, 条件2...\",detail:\"[ 可选 ] - 要检查的其他范围和条件，可重复。\"}]},PRODUCT:{d:\"返回将一组数相乘所得的结果。\",a:\"返回将一组数相乘所得的结果。\",p:[{name:\"乘数1\",detail:\"用于计算乘积的第一个数值或范围。\"},{name:\"乘数2 ... 乘数30\",detail:\"[可选] - 要相乘的其他数值。\"}]},HARMEAN:{d:\"计算数据集的调和平均值。\",a:\"计算数据集的调和平均值。\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他数值或范围。\"}]},HYPGEOMDIST:{d:\"返回超几何分布。 如果已知样本量、总体成功次数和总体大小，则 HYPGEOM.DIST 返回样本取得已知成功次数的概率。\",a:\"返回超几何分布。\",p:[{name:\"Sample_s\",detail:\"样本中成功的次数。\"},{name:\"Number_sample\",detail:\"样本量。\"},{name:\"Population_s\",detail:\"总体中成功的次数。\"},{name:\"Number_pop\",detail:\"总体大小。\"},{name:\"cumulative\",detail:\"决定函数形式的逻辑值。\\n\\n如果 cumulative 为 TRUE()，则 HYPGEOM.DIST 返回累积分布函数；\\n\\n如果为 FALSE()，则返回概率密度函数。\"}]},INTERCEPT:{d:\"计算数据集的线性回归方程直线与 Y 轴的相交点 (x=0) 的 y 值。\",a:\"计算数据集的线性回归方程直线与 Y 轴的相交点 (x=0) 的 y 值。\",p:[{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"},{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"}]},KURT:{d:\"计算数据集的峭度，该指标指示数据集（分布）的形态，尤其是该形态的陡峭程度。\",a:\"计算数据集的峭度\",p:[{name:\"值1\",detail:\"数据集中的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他值或范围。\"}]},LARGE:{d:\"返回数据集中第 n 个最大元素，n 由用户指定。\",a:\"返回数据集中第 n 个最大元素\",p:[{name:\"数据\",detail:\"包含相关数据集的数组或范围。\"},{name:\"n\",detail:\"要返回的元素的排行位置（从大到小顺序）。\\n\\n例如，将n设为4将使LARGE返回数据中排名第4的最大元素。\"}]},STDEVA:{d:\"基于样本计算标准偏差，将文本取值为0。\",a:\"基于样本计算标准偏差\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2,…\",detail:\"[可选] - 样本中包含的其他值或范围。\"}]},STDEVP:{d:\"基于样本总体计算标准偏差。\",a:\"基于样本总体计算标准偏差。\",p:[{name:\"值1\",detail:\"数据集中的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他值或范围。\"}]},GEOMEAN:{d:\"计算数据集的几何平均值。\",a:\"计算数据集的几何平均值。\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他数值或范围。\"}]},RANK_EQ:{d:\"返回指定值在数据集中的排名。如果相同的值在数据集中存在多项，则返回其中的最高排名。\",a:\"返回指定值在数据集中的排名。如果相同的值在数据集中存在多项，则返回其中的最高排名。\",p:[{name:\"number\",detail:\"要确定其排名的值。\"},{name:\"ref\",detail:\"包含相关数据集的数组或范围。\"},{name:\"order\",detail:\"[可选 - 默认为按降序 (FALSE()) ] - 要按升序还是按降序考虑“data”中的值。\"}]},RANK_AVG:{d:\"返回指定值在数据集中的排名。如果相同的值在数据集中存在多项，则返回这些项排名的平均值。\",a:\"返回指定值在数据集中的排名。如果相同的值在数据集中存在多项，则返回这些项排名的平均值。\",p:[{name:\"number\",detail:\"要确定其排名的值。\"},{name:\"ref\",detail:\"包含相关数据集的数组或范围。\"},{name:\"order\",detail:\"[可选 - 默认为按降序 (FALSE()) ] - 要按升序还是按降序考虑“data”中的值。\"}]},PERCENTRANK_EXC:{d:\"以百分数形式返回指定值在给定数据集中的百分比排名（介于0和1之间，不包括两端值）。\",a:\"以百分数形式返回指定值在给定数据集中的百分比排名（介于0和1之间，不包括两端值）。\",p:[{name:\"data\",detail:\"包含相关数据集的数组或范围。\"},{name:\"x\",detail:\"要确定其百分比排位的值。\"},{name:\"significance\",detail:\"[可选 - 默认值为 3] - 要在计算中使用的有效位数。\"}]},PERCENTRANK_INC:{d:\"以百分比形式返回指定值在给定数据集中的百分比排名（介于0和1之间，包括两端值）。\",a:\"以百分比形式返回指定值在给定数据集中的百分比排名（介于0和1之间，包括两端值）。\",p:[{name:\"data\",detail:\"包含相关数据集的数组或范围。\"},{name:\"x\",detail:\"要确定其百分比排位的值。\"},{name:\"significance\",detail:\"[可选 - 默认值为 3] - 要在计算中使用的有效位数。\"}]},FORECAST:{d:\"基于数据集的线性回归，计算指定 x 的预期 y 值。\",a:\"基于数据集的线性回归\",p:[{name:\"x\",detail:\"x轴上用于预测的值。\"},{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"},{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"}]},FISHERINV:{d:\"返回指定数值的 Fisher 逆变换。\",a:\"返回指定数值的 Fisher 逆变换。\",p:[{name:\"y\",detail:\"要计算其Fisher逆变换的数值。\"}]},FISHER:{d:\"返回指定数值的 Fisher 变换。\",a:\"返回指定数值的 Fisher 变换。\",p:[{name:\"x\",detail:\"要计算其Fisher变换的数值。\"}]},MODE_SNGL:{d:\"返回数据集中出现次数最多的值。\",a:\"返回数据集中出现次数最多的值。\",p:[{name:\"值1\",detail:\"计算模式时要检查的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 在计算模式时要考虑的其他数值或范围。\"}]},WEIBULL_DIST:{d:\"给定形状和尺度，返回韦伯分布函数（或韦伯累积分布函数）的值。\",a:\"给定形状和尺度\",p:[{name:\"x\",detail:\"WEIBULL 分布函数的输入值。\"},{name:\"alpha\",detail:\"Weibull 分布函数的形状参数。\\n\\nalpha 值必须大于 0。\"},{name:\"beta\",detail:\"Weibull 分布函数的尺度参数。\\n\\nbeta 值必须大于 0。\"},{name:\"cumulative\",detail:\"TRUE() 表示使用累积分布函数，FALSE() 则表示使用概率密度函数。\"}]},COUNT:{d:\"返回数据集中数值的个数。\",a:\"返回数据集中数值的个数。\",p:[{name:\"值1\",detail:\"计数时要检查的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 在计数时要检查的其他值或范围。\"}]},COUNTA:{d:\"返回数据集中值的数量。\",a:\"返回数据集中值的数量。\",p:[{name:\"值1\",detail:\"计数时要检查的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 在计数时要检查的其他值或范围。\"}]},AVEDEV:{d:\"计算数据与数据集均值之间的偏差大小的平均值。\",a:\"计算数据与数据集均值之间的偏差大小的平均值。\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 样本中包含的其他值或范围。\"}]},AVERAGE:{d:\"返回数据集的算术平均值，对文本忽略不计。\",a:\"返回数据集的算术平均值\",p:[{name:\"值1\",detail:\"计算平均值时用到的第一个数值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 在计算平均值时要考虑的其他数值或范围。\"}]},AVERAGEA:{d:\"返回数据集的算术平均值。\",a:\"返回数据集的算术平均值。\",p:[{name:\"值1\",detail:\"计算平均值时用到的第一个数值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 在计算平均值时要考虑的其他数值或范围。\"}]},BINOM_DIST:{d:\"返回一元二项式分布的概率。\",a:\"返回一元二项式分布的概率。\",p:[{name:\"number_s\",detail:\"试验的成功次数。\"},{name:\"trials\",detail:\"独立检验的次数。\"},{name:\"probability_s\",detail:\"任一给定检验的成功概率。\"},{name:\"cumulative\",detail:\"是否使用二项式累积分布。\"}]},BINOM_INV:{d:\"计算累积二项式分布大于或等于指定条件的最小值。\",a:\"计算累积二项式分布大于或等于指定条件的最小值。\",p:[{name:\"trials\",detail:\"贝努利试验次数。\"},{name:\"probability_s\",detail:\"任一次给定检验的成功概率。\"},{name:\"alpha\",detail:\"期望的临界概率。\"}]},CONFIDENCE_NORM:{d:\"计算正态分布的置信区间的一半宽度。\",a:\"计算正态分布的置信区间的一半宽度。\",p:[{name:\"alpha\",detail:\"用来计算置信水平的显著性水平。\\n\\n置信水平等于 100*(1 - alpha)%，亦即，如果 alpha 为 0.05，则置信水平为 95%。\"},{name:\"standard_dev\",detail:\"数据区域的总体标准偏差。\"},{name:\"size\",detail:\"样本总量的大小。\"}]},CORREL:{d:\"计算给定数据集的皮尔逊积矩相关系数 r。\",a:\"计算给定数据集的皮尔逊积矩相关系数 r。\",p:[{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"},{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"}]},COVARIANCE_P:{d:\"计算数据集的总体协方差。\",a:\"计算数据集的总体协方差。\",p:[{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"},{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"}]},COVARIANCE_S:{d:\"计算数据集的样本协方差。\",a:\"计算数据集的样本协方差。\",p:[{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"},{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"}]},DEVSQ:{d:\"基于样本计算其偏差的平方和。\",a:\"基于样本计算其偏差的平方和。\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 样本中包含的其他值或范围。\"}]},EXPON_DIST:{d:\"返回带有指定 Lambda 和指定值的指数分布函数的值。\",a:\"返回带有指定 Lambda 和指定值的指数分布函数的值。\",p:[{name:\"x\",detail:\"指数分布函数的输入值。\"},{name:\"lambda\",detail:\"用于指定指数分布函数的 lambda 值。\"},{name:\"cumulative\",detail:\"是否使用指数累积分布。\"}]},AVERAGEIF:{d:\"根据条件返回范围的平均值。\",a:\"根据条件返回范围的平均值。\",p:[{name:\"criteria_range\",detail:\"要对其检查 criterion 的范围。\"},{name:\"criterion\",detail:'要应用于 criteria_range 的模式或测试条件。\\n\\n等于：\"文本\" 或 1 或 \"=文本\" 或 \"=1\"\\n\\n大于：\">1\"\\n\\n大于等于：\">=1\"\\n\\n小于：\"<1\"\\n\\n小于等于：\"<=1\"\\n\\n不等于：\"<>1\"或\"<>文本\"'},{name:\"average_range\",detail:\"[可选] - 要计算平均值的范围。如果未提供此参数，则改用 criteria_range 来计算平均值。\"}]},AVERAGEIFS:{d:\"根据多项条件返回范围的平均值。\",a:\"根据多项条件返回范围的平均值。\",p:[{name:\"average_range\",detail:\"要计算平均值的范围。\"},{name:\"criteria_range1\",detail:\"要对其检查 criterion1 的范围。\"},{name:\"criterion1\",detail:\"要应用于 criteria_range1 的模式或测试条件。\"},{name:\"criteria_range2, criterion2, ...\",detail:\"[可选] - 要检查的其他范围和条件。\"}]},PERMUT:{d:\"返回可从数字对象中选择的给定数目对象的排列数。\",a:\"返回可从数字对象中选择的给定数目对象的排列数。\",p:[{name:\"number\",detail:\"表示对象个数的整数。\"},{name:\"number_chosen\",detail:\"表示每个排列中对象个数的整数。\"}]},TRIMMEAN:{d:\"在排除数据集高低两端的部分数据之后计算所得的均值。\",a:\"在排除数据集高低两端的部分数据之后计算所得的均值。\",p:[{name:\"数据\",detail:\"包含相关数据集的数组或范围。\"},{name:\"排除比例\",detail:\"要从数据集的极值部分排除的数据占数据集的比例。\\n\\n排除比例必须大于等于0且小于1。\"}]},PERCENTILE_EXC:{d:\"返回数组的 K 百分点值，K 介于 0 到 1 之间，不含 0 与 1。\",a:\"返回数组的 K 百分点值，K 介于 0 到 1 之间，不含 0 与 1。\",p:[{name:\"array\",detail:\"定义相对位置的数组或数据区域。\"},{name:\"k\",detail:\"0 到 1 之间的百分点值，不包含 0 和 1。\"}]},PERCENTILE_INC:{d:\"返回数组的 K 百分点值，K 介于 0 到 1 之间，包含 0 与 1。\",a:\"返回数组的 K 百分点值，K 介于 0 到 1 之间，包含 0 与 1。\",p:[{name:\"array\",detail:\"定义相对位置的数组或数据区域。\"},{name:\"k\",detail:\"0 到 1 之间的百分点值，包含 0 和 1。\"}]},PEARSON:{d:\"返回皮尔生(Pearson)乘积矩相关系数 r。\",a:\"返回皮尔生(Pearson)乘积矩相关系数 r。\",p:[{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"},{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"}]},NORM_S_INV:{d:\"返回标准正态累积分布函数的反函数值。 该分布的平均值为 0，标准偏差为 1。\",a:\"返回标准正态累积分布函数的反函数值。 该分布的平均值为 0，标准偏差为 1。\",p:[{name:\"probability\",detail:\"对应于正态分布的概率。\"}]},NORM_S_DIST:{d:\"返回标准正态分布函数（该分布的平均值为 0，标准偏差为 1）。\",a:\"返回标准正态分布函数（该分布的平均值为 0，标准偏差为 1）。\",p:[{name:\"z\",detail:\"需要计算其分布的数值。\"},{name:\"cumulative\",detail:\"决定函数形式的逻辑值。\\n\\n如果为 TRUE()，则返回累积分布函数；\\n\\n如果为 FALSE()，则返回概率密度函数。\"}]},NORM_INV:{d:\"返回指定平均值和标准偏差的正态累积分布函数的反函数值。\",a:\"返回指定平均值和标准偏差的正态累积分布函数的反函数值。\",p:[{name:\"probability\",detail:\"对应于正态分布的概率。\"},{name:\"mean\",detail:\"分布的算术平均值。\"},{name:\"standard_dev\",detail:\"分布的标准偏差。\"}]},NORM_DIST:{d:\"返回指定平均值和标准偏差的正态分布函数。\",a:\"返回指定平均值和标准偏差的正态分布函数。\",p:[{name:\"x\",detail:\"需要计算其分布的数值。\"},{name:\"mean\",detail:\"分布的算术平均值。\"},{name:\"standard_dev\",detail:\"分布的标准偏差。\"},{name:\"cumulative\",detail:\"决定函数形式的逻辑值。\\n\\n如果为 TRUE()，则返回累积分布函数；\\n\\n如果为 FALSE()，则返回概率密度函数。\"}]},NEGBINOM_DIST:{d:\"返回负二项式分布。\",a:\"返回负二项式分布。\",p:[{name:\"number_f\",detail:\"要模拟的失败次数。\"},{name:\"number_s\",detail:\"要模拟的成功次数。\"},{name:\"probability_s\",detail:\"任一次给定检验的成功概率。\"},{name:\"cumulative\",detail:\"决定函数形式的逻辑值。\\n\\n如果为 TRUE()，则返回累积分布函数；\\n\\n如果为 FALSE()，则返回概率密度函数。\"}]},MINA:{d:\"返回数据集中的最小数值。\",a:\"返回数据集中的最小数值。\",p:[{name:\"值1\",detail:\"计算最小值时所用的第一个值或范围。\"},{name:\"值2\",detail:\"[可选] - 在计算最小值时要考虑的其他数值或范围。\"}]},MIN:{d:\"返回数值数据集中的最小值。\",a:\"返回数值数据集中的最小值。\",p:[{name:\"值1\",detail:\"计算最小值时所用的第一个值或范围。\"},{name:\"值2\",detail:\"[可选] - 在计算最小值时要考虑的其他数值或范围。\"}]},MEDIAN:{d:\"返回数值数据集中的中值。\",a:\"返回数值数据集中的中值。\",p:[{name:\"值1\",detail:\"计算中值时所用的第一个数值或范围。\"},{name:\"值2\",detail:\"[可选] - 在计算中值时要考虑的其他数值或范围。\"}]},MAXA:{d:\"返回数据集中的最大数值。\",a:\"返回数据集中的最大数值。\",p:[{name:\"值1\",detail:\"计算最大值时所用的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 在计算最大值时要考虑的其他数值或范围。\"}]},MAX:{d:\"返回数值数据集中的最大值。\",a:\"返回数值数据集中的最大值。\",p:[{name:\"值1\",detail:\"计算最大值时所用的第一个值或范围。\"},{name:\"值2\",detail:\"[可选] - 在计算最大值时要考虑的其他数值或范围。\"}]},LOGNORM_INV:{d:\"返回 x 的对数累积分布函数的反函数值。\",a:\"返回 x 的对数累积分布函数的反函数值。\",p:[{name:\"probability\",detail:\"与对数分布相关的概率，介于 0 与 1 之间（不含 0 与 1）。\"},{name:\"mean\",detail:\"ln(x) 的平均值。\"},{name:\"standard_dev\",detail:\"ln(x) 的标准偏差，正数。\"}]},LOGNORM_DIST:{d:\"返回 x 的对数分布函数。\",a:\"返回 x 的对数分布函数。\",p:[{name:\"x\",detail:\"用来计算函数的值。\"},{name:\"mean\",detail:\"ln(x) 的平均值。\"},{name:\"standard_dev\",detail:\"ln(x) 的标准偏差，正数。\"},{name:\"cumulative\",detail:\"决定函数形式的逻辑值。\\n\\n如果为 TRUE()，则返回累积分布函数；\\n\\n如果为 FALSE()，则返回概率密度函数。\"}]},Z_TEST:{d:\"返回 z 检验的单尾 P 值。\",a:\"返回 z 检验的单尾 P 值。\",p:[{name:\"array\",detail:\"用来检验 x 的数组或数据区域。\"},{name:\"x\",detail:\"要测试的值。\"},{name:\"sigma\",detail:\"[可选] - 总体（已知）标准偏差。 如果省略，则使用样本标准偏差。\"}]},PROB:{d:\"返回区域中的数值落在指定区间内的概率。\",a:\"返回区域中的数值落在指定区间内的概率。\",p:[{name:\"x_range\",detail:\"具有各自相应概率值的 x 数值区域。\"},{name:\"prob_range\",detail:\"与 x_range 中的值相关联的一组概率值。\"},{name:\"lower_limit\",detail:\"要计算其概率的数值下界。\"},{name:\"upper_limit\",detail:\"[可选 - 默认值为下界] - 要计算其概率的可选数值上界。\\n\\n如果省略上界，PROB则计算随机选取相应值的次数恰好等于下界的概率。\"}]},QUARTILE_EXC:{d:\"基于 0 到 1 之间（不包括 0 和 1）的百分点值返回数据集的四分位数。\",a:\"基于 0 到 1 之间（不包括 0 和 1）的百分点值返回数据集的四分位数。\",p:[{name:\"array\",detail:\"要求得四分位数值的数组或数字型单元格区域。\"},{name:\"quart\",detail:\"要返回第几个四分位值。\\n\\n1返回数据中最靠近第一个四分位值的值（25%标记）。\\n\\n2返回数据中最接近中值的值（50%标记）。\\n\\n3返回数据中最接近第三个四分位值的值（75%标记）。\"}]},QUARTILE_INC:{d:\"根据 0 到 1 之间的百分点值（包含 0 和 1）返回数据集的四分位数。\",a:\"根据 0 到 1 之间的百分点值（包含 0 和 1）返回数据集的四分位数。\",p:[{name:\"array\",detail:\"要求得四分位数值的数组或数字型单元格区域。\"},{name:\"quart\",detail:\"要返回第几个四分位值。\\n\\n0返回数据中的最小值（0%标记）。\\n\\n1返回数据中最靠近第一个四分位值的值（25%标记）。\\n\\n2返回数据中最接近中值的值（50%标记）。\\n\\n3返回数据中最接近第三个四分位值的值（75%标记）。\\n\\n4返回数据中的最大值（100%标记）。\"}]},POISSON_DIST:{d:\"返回泊松分布。\",a:\"返回泊松分布。\",p:[{name:\"x\",detail:\"事件数。\"},{name:\"mean\",detail:\"期望值。非负数\"},{name:\"cumulative\",detail:\"一逻辑值，确定所返回的概率分布的形式。\\n\\n如果为 TRUE()，则返回发生的随机事件数在零（含零）和 x（含 x）之间的累积泊松概率；\\n\\n如果为 FALSE()，则返回发生的事件数正好是 x 的泊松概率密度函数。\"}]},RSQ:{d:\"返回皮尔生(Pearson)乘积矩相关系数 r 的平方。\",a:\"返回皮尔生(Pearson)乘积矩相关系数 r 的平方。\",p:[{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"},{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"}]},T_DIST:{d:\"返回学生的左尾 t 分布。\",a:\"返回学生的左尾 t 分布。\",p:[{name:\"x\",detail:\"T-分布函数的输入。\"},{name:\"degrees_freedom\",detail:\"自由度数值。\"},{name:\"tails\",detail:\"决定函数形式的逻辑值。\\n\\n如果 cumulative 为 TRUE()，则 HYPGEOM.DIST 返回累积分布函数；\\n\\n如果为 FALSE()，则返回概率密度函数。\"}]},T_DIST_2T:{d:\"返回学生的双尾 t 分布。\",a:\"返回学生的双尾 t 分布。\",p:[{name:\"x\",detail:\"T-分布函数的输入。\"},{name:\"degrees_freedom\",detail:\"自由度数值。\"}]},T_DIST_RT:{d:\"返回学生的右尾 t 分布。\",a:\"返回学生的右尾 t 分布。\",p:[{name:\"x\",detail:\"T-分布函数的输入。\"},{name:\"degrees_freedom\",detail:\"自由度数值。\"}]},T_INV:{d:\"返回学生的 t 分布的左尾反函数。\",a:\"返回学生的 t 分布的左尾反函数。\",p:[{name:\"probability\",detail:\"与学生的 t 分布相关的概率。\\n\\n必须大于 0 且小于 1。\"},{name:\"deg_freedom\",detail:\"自由度数值。\\n\\n如果所提供的参数不是整数，将截取其整数部分。\\n\\n必须大于等于 1。\"}]},T_INV_2T:{d:\"返回学生 t 分布的双尾反函数。\",a:\"返回学生 t 分布的双尾反函数。\",p:[{name:\"probability\",detail:\"与学生的 t 分布相关的概率。\\n\\n必须大于 0 且小于1。\"},{name:\"deg_freedom\",detail:\"自由度数值。\\n\\n如果所提供的参数不是整数，将截取其整数部分。\\n\\n必须大于等于 1。\"}]},T_TEST:{d:\"返回与t-检验相关的概率。用于判断两个样本是否可能是出自平均值相同的两个样本总体。\",a:\"返回与t-检验相关的概率。用于判断两个样本是否可能是出自平均值相同的两个样本总体。\",p:[{name:\"array1\",detail:\"将用于 t 检验的第一个数据样本或第一组单元格。\"},{name:\"array2\",detail:\"将用于 t 检验的第二个数据样本或第二组单元格。\"},{name:\"tails\",detail:\"指定分布的尾数。\\n\\n如果为 1：使用单尾分布。\\n\\n如果为 2：使用双尾分布。\"},{name:\"type\",detail:\"指定 t 检验的类型。\\n\\n如果为 1：执行配对检验。\\n\\n如果为 2：执行双样本等方差（同方差）检验。\\n\\n如果为3：执行双样本不等方差（异方差）检验。\"}]},F_DIST:{d:\"给定输入值 x，计算两个数据集的左尾 F 概率分布（差异程度）。此分布也称为 Fisher-Snedecor 分布或 Snedecor F 分布。\",a:\"给定输入值 x\",p:[{name:\"x\",detail:\"用来计算函数的值。\"},{name:\"degrees_freedom1\",detail:\"分子自由度。\"},{name:\"degrees_freedom2\",detail:\"分母自由度。\"},{name:\"cumulative\",detail:\"用于确定函数形式的逻辑值。默认值为 FALSE。\\n\\n如果为 TRUE()：F.DIST 将返回累积分布函数值。\\n\\n如果为 FALSE()：F.DIST 将返回概率密度函数值。\"}]},F_DIST_RT:{d:\"给定输入x，计算两个数据集的右尾F概率分布（差异程度）。 此分布也称为Fisher-Snedecor分布或Snedecor F分布。\",a:\"给定输入x\",p:[{name:\"x\",detail:\"用来计算函数的值。\"},{name:\"degrees_freedom1\",detail:\"分子自由度。\"},{name:\"degrees_freedom2\",detail:\"分母自由度。\"}]},VAR_P:{d:\"基于样本总体计算方差。\",a:\"基于样本总体计算方差。\",p:[{name:\"值1\",detail:\"数据集中的第一个值或范围。\"},{name:\"值2, …\",detail:\"[可选] - 数据集中包含的其他值或范围。\"}]},VAR_S:{d:\"基于样本计算方差。\",a:\"基于样本计算方差。\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2, …\",detail:\"[可选] - 样本中包含的其他值或范围。\"}]},VARA:{d:\"基于样本计算方差，将文本取值为0。\",a:\"基于样本计算方差\",p:[{name:\"value1\",detail:\"样本中的第一项值或范围。\"},{name:\"value2, ...\",detail:\"[可选] - 样本中包含的其他值或范围。\"}]},VARPA:{d:\"基于样本总体计算方差，将文本取值为0。\",a:\"基于样本总体计算方差\",p:[{name:\"值1\",detail:\"样本中的第一项值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他数值或范围。\"}]},STEYX:{d:\"返回通过线性回归法预测每个 x 的 y 值时所产生的标准误差。\",a:\"返回通过线性回归法预测每个 x 的 y 值时所产生的标准误差。\",p:[{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"},{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"}]},STANDARDIZE:{d:\"给定分布的均值和标准偏差，计算一个随机变量正态化的相应值。\",a:\"给定分布的均值和标准偏差，计算一个随机变量正态化的相应值。\",p:[{name:\"x\",detail:\"要正态化的随机变量值。\"},{name:\"mean\",detail:\"分布的均值。\"},{name:\"standard_dev\",detail:\"分布的标准偏差。\"}]},SMALL:{d:\"返回数据集中的第 k 个最小值。\",a:\"返回数据集中的第 k 个最小值。\",p:[{name:\"array\",detail:\"需要找到第 k 个最小值的数组或数值数据区域。\"},{name:\"k\",detail:\"要返回的数据在数组或数据区域里的位置（从小到大）。\"}]},SLOPE:{d:\"计算通过数据集的线性回归得到的直线的斜率。\",a:\"计算通过数据集的线性回归得到的直线的斜率。\",p:[{name:\"数据_y\",detail:\"代表因变量数据数组或矩阵的范围。\"},{name:\"数据_x\",detail:\"代表自变量数据数组或矩阵的范围。\"}]},SKEW:{d:\"返回分布的偏斜度。 偏斜度表明分布相对于平均值的不对称程度。 正偏斜度表明分布的不对称尾部趋向于更多正值。 负偏斜度表明分布的不对称尾部趋向于更多负值。\",a:\"返回分布的偏斜度。\",p:[{name:\"值1\",detail:\"数据集中的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他值或范围。\"}]},SKEW_P:{d:\"返回基于样本总体的分布不对称度：表明分布相对于平均值的不对称程度。\",a:\"返回基于样本总体的分布不对称度：表明分布相对于平均值的不对称程度。\",p:[{name:\"值1\",detail:\"数据集中的第一个值或范围。\"},{name:\"值2, ...\",detail:\"[可选] - 数据集中包含的其他值或范围。\"}]},VLOOKUP:{d:\"纵向查找。在范围的第一列中自上而下搜索某个键值，并返回所找到的行中指定单元格的值。\",a:\"纵向查找。在范围的第一列中自上而下搜索某个键值\",p:[{name:\"搜索键值\",detail:'要搜索的值，如 42、\"Cats\" 或 I24。'},{name:\"范围\",detail:\"要进行搜索的范围。VLOOKUP 将在该范围的第一列中搜索搜索键值中指定的键值。\"},{name:\"索引\",detail:\"要返回的值的列索引，范围中的第一列编号为 1。\\n\\n如果索引不是介于 1 和范围中的列数之间，将返回 #VALUE! 。\"},{name:\"已排序\",detail:\"[默认值为 TRUE() ] - 指示要搜索的列（指定范围的第一列）是否已排序。大多数情况下，建议设为 FALSE()。\\n\\n建议将已排序设为 FALSE。如果设为 FALSE，将返回完全匹配项。如果存在多个匹配值，将返回找到的第一个值对应的单元格的内容，如果找不到匹配值，则返回 #N/A。\\n\\n如果将已排序设为 TRUE 或省略，将返回（小于或等于搜索键值的）最接近的匹配项。如果搜索的列中所有的值均大于搜索键值，则返回 #N/A。\"}]},HLOOKUP:{d:\"横向查找。在范围的第一行中搜索某个键值，并返回所找到的列中指定单元格的值。\",a:\"横向查找。在范围的第一行中搜索某个键值\",p:[{name:\"搜索键值\",detail:'要搜索的值。例如，42、\"Cats\"或I24。'},{name:\"范围\",detail:\"要进行搜索的范围。将在该范围的第一行中搜索在搜索键值中指定的键值。\"},{name:\"索引\",detail:\"要返回的值的行索引，范围中的第一行编号为1。\\n\\n如果索引不是介于1和范围中的行数之间，将返回#VALUE!。\"},{name:\"已排序\",detail:\"[可选 - 默认值为TRUE()] - 指示要搜索的行（指定范围的第一行）是否已排序。\\n\\n如果将已排序设为TRUE或省略，将返回最接近的匹配值（小于或等于搜索键值）。如果在搜索的行中所有的值均大于搜索键值，则返回#N/A。\\n\\n如果将已排序设为TRUE或将其省略，而范围的首行并非处于已排序状态，则返回值可能会是错误的。\\n\\n如果将已排序设为FALSE，则仅返回完全匹配。如果存在多个匹配值，将返回与找到的第一个值对应的单元格的内容，如果找不到匹配值则返回#N/A。\"}]},LOOKUP:{d:\"在行或列中查找相应键，并将相应单元格的值返回到与搜索行或列所在位置相同的结果范围中。\",a:\"在行或列中查找相应键\",p:[{name:\"搜索键值\",detail:'要在行或列中搜索的值。例如，42、\"Cats\" 或 I24。'},{name:\"搜索范围 | 搜索结果数组\",detail:\"使用 LOOKUP 的一种方法是给定单行或单列形式的搜索范围进行搜索查找，这种方式要用到另一个参数结果范围。另一种方式是将这两个参数合并为一个搜索结果数组，其中第一行或第一列用于搜索，并将返回值放在该数组的最后一行或最后一列中。\"},{name:\"结果范围\",detail:\"[ 可选 ] - 用于存放返回结果的范围。返回值对应于在搜索范围中找到搜索键值的位置。此范围必须仅为单行或单列，而如果您使用的是搜索结果数组方式，则不应提供此参数。\"}]},ADDRESS:{d:\"返回字符串形式的单元格引用。\",a:\"返回字符串形式的单元格引用。\",p:[{name:\"row_num\",detail:\"一个数值，指定要在单元格引用中使用的行号。\"},{name:\"column_num\",detail:\"一个数值，指定要在单元格引用中使用的列号（而非名称）。A列的编号为1。\"},{name:\"abs_num\",detail:\"[可选 - 默认值为1] - 一个数值，指定要返回的引用类型。\\n\\n1 表示行列均采用绝对值（例如$A$1）；\\n\\n2 表示采用绝对行号，相对列标（例如A$1）；\\n\\n3 表示采用相对行号，绝对列标（例如$A1）；\\n\\n4 表示行列均采用相对值（例如A1）。\"},{name:\"A1\",detail:\"[可选 - 默认值为TRUE()] - 一个布尔值，指示采用A1标记形式(TRUE)还是R1C1标记形式(FALSE)。\"},{name:\"sheet_text\",detail:\"[可选 - 默认缺省] - 用于指定地址所指向的工作表名称。\"}]},INDIRECT:{d:\"返回以字符串指定的单元格引用。\",a:\"返回以字符串指定的单元格引用。\",p:[{name:\"ref_text\",detail:\"以带引号的字符串形式提供的单元格引用。\"},{name:\"A1\",detail:\"[可选 - 默认值为TRUE()] - 一个布尔值，指示采用A1标记形式(TRUE)还是R1C1标记形式(FALSE)。\"}]},ROW:{d:\"返回指定单元格的行号\",a:\"返回指定单元格的行号\",p:[{name:\"reference\",detail:\"[可选 - 默认为此公式所在的单元格] - 要返回其行号的单元格。\\n\\n如果单元格引用指向的范围其宽度大于一个单元格，而此公式不是用作数组公式的，这时会仅返回单元格引用中首行的编号值。\"}]},ROWS:{d:\"返回指定数组或范围中的行数。\",a:\"返回指定数组或范围中的行数。\",p:[{name:\"array\",detail:\"要返回其行数的范围。\"}]},COLUMN:{d:\"按照 `A=1` 的规则返回指定单元格的列号。\",a:\"按照 `A=1` 的规则返回指定单元格的列号。\",p:[{name:\"reference\",detail:\"[可选 - 默认为包含此公式的单元格] - 要返回其列号的单元格。A列对应的编号为1。\\n\\n如果单元格引用是宽度超过一个单元格的范围，而此公式不是作为数组公式来使用的，因此将返回单元格引用中的第一列的位置。\"}]},COLUMNS:{d:\"返回指定数组或范围中的列数。\",a:\"返回指定数组或范围中的列数。\",p:[{name:\"array\",detail:\"要返回其列数的范围。\"}]},OFFSET:{d:\"给定某范围的起始单元格引用以及该范围涵盖的行列数量，返回该范围的引用。\",a:\"给定某范围的起始单元格引用以及该范围涵盖的行列数量，返回该范围的引用。\",p:[{name:\"reference\",detail:\"用于计算行列偏移量的起点。\"},{name:\"rows\",detail:\"要偏移的行数。\\n\\n行偏移量必须是整数，但也可以是负数。如果提供的参数带有小数，小数部分将被截去。\"},{name:\"cols\",detail:\"要偏移的列数。\\n\\n列偏移量必须是整数，但也可以是负数。如果提供的参数带有小数，小数部分将被截去。\"},{name:\"height\",detail:\"[可选] - 要从偏移目标开始返回的范围的高度。\"},{name:\"width\",detail:\"[可选] - 要从偏移目标开始返回的范围的宽度。\"}]},MATCH:{d:\"在单元格中搜索指定项，然后返回该项在单元格区域中的相对位置。\",a:\"在单元格中搜索指定项，然后返回该项在单元格区域中的相对位置。\",p:[{name:\"lookup_value\",detail:\"要在 lookup_array 中匹配的值。\"},{name:\"lookup_array\",detail:\"要搜索的单元格区域。\\n\\n如果所用的范围的高度和宽度均大于1，MATCH将返回#N/A!。\"},{name:\"match_type\",detail:\"[可选 - 默认值为1] - 要采用的搜索方式。\\n\\n1为默认类型，此时MATCH会假设范围已按升序排序，并返回小于等于搜索键值的最大值。\\n\\n0表示完全匹配，在范围未排序的情况下需要使用此方式。\\n\\n-1让MATCH假设范围是按降序排序的，并返回大于等于搜索键值的最小值。\"}]},INDEX:{d:\"返回表格或中的元素值，此元素由行号和列号的索引值给定。\",a:\"返回表格或中的元素值，此元素由行号和列号的索引值给定。\",p:[{name:\"array\",detail:\"单元格区域或数组常量。\"},{name:\"row_num\",detail:\"选择数组中的某行，函数从该行返回数值。\"},{name:\"column_num\",detail:\"选择数组中的某列，函数从该列返回数值。\"}]},GETPIVOTDATA:{d:\"从与指定行和列标题对应的数据透视表中提取汇总值。\",a:\"从与指定行和列标题对应的数据透视表中提取汇总值。\",p:[{name:\"data_field\",detail:\"您想从数据透视表中获取其数据的值名称。\\n值名称必须括在引号中或是指向包含相关文本的任何单元格的引用。\\n如果有多个值字段，则必须使用数据透视表中显示的确切名称（如“销售总额”）。\"},{name:\"pivot_table\",detail:\"目标数据透视表中的任何单元格的引用（推荐位于顶角的单元格）。\"},{name:\"field1\",detail:\"[可选] - 源数据集（不是数据透视表）中列的名称。\"},{name:\"item1\",detail:\"[可选] - 数据透视表中显示的与您要检索的字段名称 1 相对应的行或列的名称。\"}]},CHOOSE:{d:\"基于索引返回选项列表中的元素。\",a:\"基于索引返回选项列表中的元素。\",p:[{name:\"index_num\",detail:\"指定要返回哪一项。\\n\\n如果索引为零、负值或大于提供的选择数量，将返回#VALUE!错误。\"},{name:\"value1\",detail:\"一项可能的返回值。必须提供。可以是单元格引用或单独的值。\"},{name:\"value2\",detail:\"[可选] - 其他可以选择的值。选择\"}]},HYPERLINK:{d:\"在单元格内创建一个超链接。\",a:\"在单元格内创建一个超链接。\",p:[{name:\"网址\",detail:\"以引号括住的链接位置的完整网址，或对包含这种网址的单元格的引用。\\n\\n仅允许某些链接类型。其中包括：http://、https://、mailto:、aim:、ftp://、gopher://、telnet://和news://，明确禁用使用其他协议。如果指定的是其他协议，将会在单元格中显示链接标签，但该标签不会以链接形式呈现。\\n\\n如果未指定协议，则假设使用http://，并将其作为网址的前缀。\"},{name:\"链接标签\",detail:'[可选 - 默认为网址] - 要在单元格中作为链接显示的文本（用引号括起来的），或者指向包含这种标签的单元格的引用。\\n\\n如果链接标签是指向某个空单元格的引用，如果网址有效，就将其作为链接显示，否则作为纯文本显示。\\n\\n如果链接标签为空字符串常量(\"\")，所在单元格显示的内容将为空白，但通过点击该单元格或转入该单元格仍然可以访问链接。'}]},TIME:{d:\"将给定的小时、分钟和秒转换为时间。\",a:\"将给定的小时、分钟和秒转换为时间。\",p:[{name:\"小时\",detail:\"0（零）到 32767 之间的数字，代表小时。\\n\\n任何大于 23 的值都会除以 24，余数将作为小时值。\"},{name:\"分钟\",detail:\"0（零）到 32767 之间的数字，代表分钟。\\n\\n任何大于 59 的值将转换为小时和分钟。\"},{name:\"秒\",detail:\"0（零）到 32767 之间的数字，代表秒。\\n\\n任何大于 59 的值将转换为小时、分钟和秒。\"}]},TIMEVALUE:{d:\"按一天24小时返回该时间的分数表示。\",a:\"按一天24小时返回该时间的分数表示。\",p:[{name:\"time_text\",detail:\"用于表示时间的字符串。\"}]},EOMONTH:{d:\"返回某个月份最后一天的序列号，该月份在另一个日期之前或之后的数个月（月数由参数指定）。\",a:\"返回某个月份最后一天的序列号\",p:[{name:\"start_date\",detail:\"用于计算结果的参照日期。\"},{name:\"months\",detail:\"用于计算的起始日期之前（负）或之后（正）的月数。返回的是计算所得月份的最后那天。\"}]},EDATE:{d:\"返回表示某个日期的序列号，该日期在另一个日期的数月之前/之后。\",a:\"返回表示某个日期的序列号\",p:[{name:\"start_date\",detail:\"用于计算结果的参照日期。\"},{name:\"months\",detail:\"用于计算的起始日期之前（负）或之后（正）的月数。\"}]},SECOND:{d:\"返回时间值的秒数。 秒数是 0（零）到 59 范围内的整数。\",a:\"返回时间值的秒数。 秒数是 0（零）到 59 范围内的整数。\",p:[{name:\"时间\",detail:\"用于计算秒钟部分的时间。必须为以下值之一：指向包含日期/时间值的单元格的引用、返回日期/时间的函数或者数字。\"}]},MINUTE:{d:\"以数字格式返回特定时间的分钟部分。\",a:\"以数字格式返回特定时间的分钟部分。\",p:[{name:\"时间\",detail:\"用于计算分钟部分的时间。必须为以下值之一：指向包含日期/时间值的单元格的引用、返回日期/时间的函数或者数字。\"}]},HOUR:{d:\"以数字格式返回特定时间的小时部分。\",a:\"以数字格式返回特定时间的小时部分。\",p:[{name:\"时间\",detail:\"用于计算小时部分的时间。必须为以下值之一：指向包含日期/时间值的单元格的引用、返回日期/时间的函数或者数字。\"}]},NOW:{d:\"以日期值格式返回当前日期和时间。\",a:\"以日期值格式返回当前日期和时间。\",p:[]},NETWORKDAYS:{d:\"返回所提供的两个日期之间的净工作日天数。\",a:\"返回所提供的两个日期之间的净工作日天数。\",p:[{name:\"start_date\",detail:\"用于计算净工作日天数的时间段开始日期。\"},{name:\"end_date\",detail:\"用于计算净工作日天数的时间段结束日期。\"},{name:\"holidays\",detail:\"[可选] - 一个范围或数组常量，其中包含作为节假日的日期序号。\\n\\n在节假日数组中提供的值必须是日期序号值（例如由N所返回的值）或日期值（例如由DATE、DATEVALUE或TO_DATE返回的值）。由范围指定的值应该是标准的日期值或日期序数值。\"}]},NETWORKDAYS_INTL:{d:\"返回给定的两个日期之间的净工作日天数（排除指定的周末和节假日）。\",a:\"返回给定的两个日期之间的净工作日天数（排除指定的周末和节假日）。\",p:[{name:\"start_date\",detail:\"用于计算净工作日天数的时间段开始日期。\"},{name:\"end_date\",detail:\"用于计算净工作日天数的时间段结束日期。\"},{name:\"weekend\",detail:\"[可选 - 默认值为1] - 用于表示哪些天为周末的数字或字符串。\\n字符串方式：可以使用由0和1组成的字符串来指定周末，串中的第一个数字字符代表周一，最后一个则代表周日。零表示这一天是工作日，1表示这一天为周末。例如，“0000011”表示将周六和周日作为周末。\\n数字方式：这种方式不使用上述字符串形式，而是使用一个数字。1 =周六/周日为周末，2 =周日/周一为周末，依此类推则7 =周五/周六。11 =周日为唯一周末，12 =周一为唯一周末，依此类推则17 =周六为唯一周末。\"},{name:\"holidays\",detail:\"[ 可选 ] - 这是一个范围或数组常量，其中包含作为节假日的日期。\\n在节假日数组内提供的值必须为日期序数值（例如N的返回值）或日期值（例如DATE、DATEVALUE或TO_DATE的返回值）。由范围指定的值应该是标准的日期值或日期序数值。\"}]},ISOWEEKNUM:{d:\"返回给定日期在全年中的 ISO 周数。\",a:\"返回给定日期在全年中的 ISO 周数。\",p:[{name:\"date\",detail:\"用于日期和时间计算的日期-时间代码。\"}]},WEEKNUM:{d:\"返回特定日期的周数。\",a:\"返回特定日期的周数。\",p:[{name:\"serial_number\",detail:\"要确定其位于第几周的日期，必须是对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"return_type\",detail:\"[可选 - 默认值为 1 ] - 代表一周起始日的数字，系统也使用该数字来确定一年的第一周（1=周日，2=周一）。\"}]},WEEKDAY:{d:\"返回一个数字，对应于给定日期所在的星期几。\",a:\"返回一个数字，对应于给定日期所在的星期几。\",p:[{name:\"serial_number\",detail:\"要为其确定星期几的日期。必须是对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"return_type\",detail:\"[可选 - 默认值为 1] - 以数字指示使用哪种编号顺序来表示星期几。默认情况下，按星期日 (= 1) 开始计算。\\n\\n如果类型为 1，则星期值将从星期日开始算起，并且星期日的值为 1，因此星期六的值就是 7。\\n\\n如果类型为 2，则星期值将从星期一开始算起，并且星期一的值为 1，因此星期日的值就是 7。\\n\\n如果类型为 3，则星期值将从星期一算起，并且星期一的值为 0，因此星期日的值就是 6。\"}]},DAY:{d:\"以数字格式返回特定日期所在的当月几号。\",a:\"以数字格式返回特定日期所在的当月几号。\",p:[{name:\"serial_number\",detail:\"要从中提取具体几号的日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"}]},DAYS:{d:\"返回两个日期之间的天数。\",a:\"返回两个日期之间的天数。\",p:[{name:\"end_date\",detail:\"计算中要使用的结束日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"start_date\",detail:\"计算中要使用的开始日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"}]},DAYS360:{d:\"按照每年360天，返回两个日期之间的差（用于计算利息）。\",a:\"按照每年360天，返回两个日期之间的差（用于计算利息）。\",p:[{name:\"start_date\",detail:\"计算中要使用的开始日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"end_date\",detail:\"计算中要使用的结束日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"method\",detail:\"[可选 - 默认为FALSE()] - 指示要使用哪种天数计算方法。\\n\\nFALSE - 采用美国 (NASD) 方法时，如果起始日期为某月的最后一天，为便于计算，会将起始日期的当月几号更改为30。此外，如果结束日期是所在月份的最后一天，而且起始日期在其所在月的30号之前，则将结束日期更改为结束日期之后那个月的第一天，否则将结束日期更改为该月的30号。\\n\\nTRUE - 采用欧洲方法时，会将所有日期在31号的起始日期或结束日期更改为当月的30号。\"}]},DATE:{d:\"将提供的年、月、日转换为日期。\",a:\"将提供的年、月、日转换为日期。\",p:[{name:\"year\",detail:\"日期的年份部分，包含一到四位数字。\\n\\n介于 0（零）到 1899 之间，会将该值与 1900 相加来计算年份；\\n\\n介于 1900 到 9999 之间，将使用该数值作为年份；\\n\\n小于 0 或大于等于 10000，返回 错误值 #NUM!。\"},{name:\"month\",detail:\"日期的月份部分，一个正整数或负整数。\\n\\n如果 month 大于 12，则 month 会将该月份数与指定年中的第一个月相加。\\n\\n如果 month 小于 1，month 则从指定年份的一月份开始递减该月份数，然后再加上 1 个月。\"},{name:\"day\",detail:\"日期的日部分，一个正整数或负整数。\\n\\n如果 day 大于月中指定的天数，则 day 会将天数与该月中的第一天相加。\\n\\n如果 day 小于 1，则 day 从指定月份的第一天开始递减该天数，然后再加上 1 天。\"}]},DATEVALUE:{d:\"将提供的日期字符串转换为日期的序列号。\",a:\"将提供的日期字符串转换为日期的序列号。\",p:[{name:\"date_text\",detail:\"表示日期的字符串。\"}]},DATEDIF:{d:\"计算两个日期之间的天数、月数或年数。\",a:\"计算两个日期之间的天数、月数或年数。\",p:[{name:\"起始日期\",detail:\"计算中要使用的开始日期。必须是对包含DATE值的单元格的引用、返回DATE类型的函数或数字。\"},{name:\"结束日期\",detail:\"计算中要使用的结束日期。必须是对包含DATE值的单元格的引用、返回DATE类型的函数或数字。\"},{name:\"单位\",detail:'时间单位的缩写文字。例如 \"M\" 代表月。有效值包括：\"Y\"、\"M\"、\"D\"、\"MD\"、\"YM\" 和 \"YD\"。\\n\\n\"Y\"：返回起始日期和结束日期之间的整年数。\\n\\n\"M\"：返回起始日期和结束日期之间的整月数。\\n\\n\"D\"：返回起始日期和结束日期之间的天数。\\n\\n\"MD\"：返回起始日期和结束日期之间的天数（不计整月数）。\\n\\n\"YM\"：返回起始日期和结束日期之间的整月数（不计整年数）。\\n\\n\"YD\"：返回起始日期和结束日期之间的天数（假设起始日期和结束日期的间隔不超过一年）。'}]},WORKDAY:{d:\"指定工作日天数，计算结束日期。\",a:\"指定工作日天数，计算结束日期。\",p:[{name:\"start_date\",detail:\"计算的开始日期。\"},{name:\"days\",detail:\"start_date 之前或之后不含周末及节假日的天数。\\n\\n为正值将生成未来日期；\\n\\n为负值生成过去日期。\"},{name:\"holidays\",detail:\"[可选] - 一个范围或数组常量，其中包含作为节假日的日期序号。\\n\\n在节假日数组中提供的值必须是日期序号值（例如由N所返回的值）或日期值（例如由DATE、DATEVALUE或TO_DATE返回的值）。由范围指定的值应该是标准的日期值或日期序数值。\"}]},WORKDAY_INTL:{d:\"返回指定的若干个工作日之前或之后的日期的序列号（使用自定义周末参数）。 \",a:\"返回指定的若干个工作日之前或之后的日期的序列号（使用自定义周末参数）。 \",p:[{name:\"start_date\",detail:\"开始日期（将被截尾取整）。\"},{name:\"days\",detail:\"start_date 之前或之后的工作日的天数。\\n\\n正值表示未来日期；\\n\\n负值表示过去日期；\\n\\n零值表示开始日期。\"},{name:\"weekend\",detail:\"[可选 - 默认值为1] - 用于表示哪些天为周末的数字或字符串。\\n字符串方式：可以使用由0和1组成的字符串来指定周末，串中的第一个数字字符代表周一，最后一个则代表周日。零表示这一天是工作日，1表示这一天为周末。例如，“0000011”表示将周六和周日作为周末。\\n数字方式：这种方式不使用上述字符串形式，而是使用一个数字。1 =周六/周日为周末，2 =周日/周一为周末，依此类推则7 =周五/周六。11 =周日为唯一周末，12 =周一为唯一周末，依此类推则17 =周六为唯一周末。\"},{name:\"holidays\",detail:\"[ 可选 ] - 这是一个范围或数组常量，其中包含作为节假日的日期。\\n在节假日数组内提供的值必须为日期序数值（例如N的返回值）或日期值（例如DATE、DATEVALUE或TO_DATE的返回值）。由范围指定的值应该是标准的日期值或日期序数值。\"}]},YEAR:{d:\"返回对应于某个日期的年份。 Year 作为 1900 - 9999 之间的整数返回。\",a:\"返回对应于某个日期的年份。 Year 作为 1900 - 9999 之间的整数返回。\",p:[{name:\"serial_number\",detail:\"用于计算年份的日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"}]},YEARFRAC:{d:\"返回 start_date 和 end_date 之间的天数占全年天数的百分比。\",a:\"返回 start_date 和 end_date 之间的天数占全年天数的百分比。\",p:[{name:\"start_date\",detail:\"计算中要使用的开始日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"end_date\",detail:\"计算中要使用的结束日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 要使用的日计数基准类型。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},TODAY:{d:\"以日期值格式返回当前日期。\",a:\"以日期值格式返回当前日期。\",p:[]},MONTH:{d:\"返回日期（以序列数表示）中的月份。 月份是介于 1（一月）到 12（十二月）之间的整数。\",a:\"返回日期（以序列数表示）中的月份。 月份是介于 1（一月）到 12（十二月）之间的整数。\",p:[{name:\"serial_number\",detail:\"要从中提取月份的日期。必须是以下一种：对包含日期的单元格的引用、返回日期类型的函数或者数字。\"}]},EFFECT:{d:\"根据名义利率及每年的复利计息期数来计算实际年利率。\",a:\"根据名义利率及每年的复利计息期数来计算实际年利率。\",p:[{name:\"nominal_rate\",detail:\"每年的名义利率。\"},{name:\"npery\",detail:\"每年的复利计算期数。\"}]},DOLLAR:{d:\"将数字格式设置为与语言区域相对应的货币格式。\",a:\"将数字格式设置为与语言区域相对应的货币格式。\",p:[{name:\"number\",detail:\"要设置格式的值。\"},{name:\"decimals\",detail:\"[可选 - 默认值为 2] - 要显示的小数位数。\\n\\n如果这是负数，则将数字四舍五入到小数点左侧。\"}]},DOLLARDE:{d:\"将以整数部分和分数部分转换为以小数部分表示的金额数字\",a:\"将以整数部分和分数部分转换为以小数部分表示的金额数字\",p:[{name:\"fractional_dollar\",detail:\"以整数部份和分数部分表示的数字，用小数点隔开。\"},{name:\"fraction\",detail:\"用作分数中的分母的整数。\"}]},DOLLARFR:{d:\"将小数转换为分数表示的金额数字。\",a:\"将小数转换为分数表示的金额数字。\",p:[{name:\"decimal_dollar\",detail:\"小数。\"},{name:\"fraction\",detail:\"用作分数中的分母的整数。\"}]},DB:{d:\"使用固定余额递减法，返回指定期间内某项固定资产的折旧值。\",a:\"使用固定余额递减法，返回指定期间内某项固定资产的折旧值。\",p:[{name:\"cost\",detail:\"资产原值。\"},{name:\"salvage\",detail:\"折旧末尾时的值（有时也称为资产残值）。\"},{name:\"life\",detail:\"资产的折旧期数（有时也称作资产的使用寿命）。\"},{name:\"period\",detail:\"在使用期限内要计算折旧的折旧期。\"},{name:\"month\",detail:\"[可选 - 默认值为12] - 折旧第一年中的月数。\"}]},DDB:{d:\"用双倍余额递减法，返回指定期间内某项固定资产的折旧值。\",a:\"用双倍余额递减法，返回指定期间内某项固定资产的折旧值。\",p:[{name:\"cost\",detail:\"资产原值。\"},{name:\"salvage\",detail:\"折旧末尾时的值（有时也称为资产残值）。\"},{name:\"life\",detail:\"资产的折旧期数（有时也称作资产的使用寿命）。\"},{name:\"period\",detail:\"在使用期限内要计算折旧的折旧期。\"},{name:\"factor\",detail:\"[可选 - 默认值为2] - 折旧的递减系数。\"}]},RATE:{d:\"返回年金每期的利率。\",a:\"返回年金每期的利率。\",p:[{name:\"nper\",detail:\"年金的付款总期数。\"},{name:\"pmt\",detail:\"每期的付款金额，在年金周期内不能更改。\"},{name:\"pv\",detail:\"现值即一系列未来付款当前值的总和。\"},{name:\"fv\",detail:\"[可选 - 默认值为0] - 未来值，或在最后一次付款后希望得到的现金余额。\"},{name:\"type\",detail:\"[可选 - 默认值为0] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"},{name:\"guess\",detail:\"[可选 - 默认值为0.1] - 预期利率。\"}]},CUMPRINC:{d:\"基于等额分期付款和固定利率，计算投资在多个付款期内的累计本金偿还额。\",a:\"基于等额分期付款和固定利率，计算投资在多个付款期内的累计本金偿还额。\",p:[{name:\"rate\",detail:\"利率。\"},{name:\"nper\",detail:\"总付款期数。\"},{name:\"pv\",detail:\"年金的现值。\"},{name:\"start_period\",detail:\"开始累计计算的付款期序号。\\n\\n首期必须大于等于1。\"},{name:\"end_period\",detail:\"结束累计计算的付款期序号。\\n\\n末期必须大于首期。\"},{name:\"type\",detail:\"指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},COUPNUM:{d:\"返回在结算日和到期日之间的付息次数，向上舍入到最近的整数。\",a:\"返回在结算日和到期日之间的付息次数，向上舍入到最近的整数。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。到期日是有价证券有效期截止时的日期。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},SYD:{d:\"返回在指定期间内资产按年限总和折旧法计算的折旧。\",a:\"返回在指定期间内资产按年限总和折旧法计算的折旧。\",p:[{name:\"cost\",detail:\"资产原值。\"},{name:\"salvage\",detail:\"折旧末尾时的值（有时也称为资产残值）。\"},{name:\"life\",detail:\"资产的折旧期数（有时也称作资产的使用寿命）。\"},{name:\"period\",detail:\"在使用期限内要计算折旧的折旧期。\"}]},TBILLEQ:{d:\"基于贴现率计算美国政府短期债券的等效年化收益率。\",a:\"基于贴现率计算美国政府短期债券的等效年化收益率。\",p:[{name:\"settlement\",detail:\"债券的结算日期，此日期为债券发行后交付给买家的日期。\"},{name:\"maturity\",detail:\"债券的到期或结束日期，届时可将其以面值或票面价值赎回。\"},{name:\"discount\",detail:\"债券购买时的贴现率。\"}]},TBILLYIELD:{d:\"基于价格计算美国政府短期债券的收益率。\",a:\"基于价格计算美国政府短期债券的收益率。\",p:[{name:\"settlement\",detail:\"债券的结算日期，此日期为债券发行后交付给买家的日期。\"},{name:\"maturity\",detail:\"债券的到期或结束日期，届时可将其以面值或票面价值赎回。\"},{name:\"pr\",detail:\"债券的购买价格。\"}]},TBILLPRICE:{d:\"基于贴现率计算美国政府短期债券的价格。\",a:\"基于贴现率计算美国政府短期债券的价格。\",p:[{name:\"settlement\",detail:\"债券的结算日期，此日期为债券发行后交付给买家的日期。\"},{name:\"maturity\",detail:\"债券的到期或结束日期，届时可将其以面值或票面价值赎回。\"},{name:\"discount\",detail:\"债券购买时的贴现率。\"}]},PV:{d:\"基于等额分期付款和固定利率，计算年金投资的现值。\",a:\"基于等额分期付款和固定利率，计算年金投资的现值。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"nper\",detail:\"年金的付款总期数。\"},{name:\"pmt\",detail:\"每期的付款金额，在年金周期内不能更改。\"},{name:\"fv\",detail:\"[可选] - 未来值，或在最后一次付款后希望得到的现金余额。\"},{name:\"type\",detail:\"[可选 - 默认值为0] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},ACCRINT:{d:\"返回定期付息证券的应计利息。\",a:\"返回定期付息证券的应计利息。\",p:[{name:\"issue\",detail:\"有价证券的发行日。\"},{name:\"first_interest\",detail:\"有价证券的首次计息日。\"},{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"rate\",detail:\"有价证券的年息票利率。\"},{name:\"par\",detail:\"证券的票面值。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示““欧洲30/360”方法” - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"},{name:\"calc_method\",detail:\"[可选 - 默认为TRUE()] - 一个逻辑值，指定当结算日期晚于首次计息日期时用于计算总应计利息的方法。\\n\\n如果值为 TRUE，则返回从发行日到结算日的总应计利息。\\n\\n如果值为 FALSE，则返回从首次计息日到结算日的应计利息。\"}]},ACCRINTM:{d:\"返回在到期日支付利息的有价证券的应计利息。\",a:\"返回在到期日支付利息的有价证券的应计利息。\",p:[{name:\"issue\",detail:\"有价证券的发行日。\"},{name:\"settlement\",detail:\"有价证券的到期日。\"},{name:\"rate\",detail:\"有价证券的年息票利率。\"},{name:\"par\",detail:\"证券的票面值。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},COUPDAYBS:{d:\"返回从付息期开始到结算日的天数。\",a:\"返回从付息期开始到结算日的天数。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},COUPDAYS:{d:\"返回结算日所在的付息期的天数。\",a:\"返回结算日所在的付息期的天数。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},COUPDAYSNC:{d:\"返回从结算日到下一票息支付日之间的天数。\",a:\"返回从结算日到下一票息支付日之间的天数。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},COUPNCD:{d:\"计算结算日之后的下一票息或利息派发日期。\",a:\"计算结算日之后的下一票息或利息派发日期。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},COUPPCD:{d:\"计算结算日之前的最后一个票息或利息支付日。\",a:\"计算结算日之前的最后一个票息或利息支付日。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},FV:{d:\"基于等额分期付款和固定利率，计算年金投资的未来价值。\",a:\"基于等额分期付款和固定利率，计算年金投资的未来价值。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"nper\",detail:\"年金的付款总期数。\"},{name:\"pmt\",detail:\"各期所应支付的金额，在整个年金期间保持不变。\"},{name:\"pv\",detail:\"[可选 - 默认值为 0 ] - 现值，或一系列未来付款的当前值的累积和。\"},{name:\"type\",detail:\"[可选 - 默认值为 0 ] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},FVSCHEDULE:{d:\"返回应用一系列复利率计算的初始本金的未来值。\",a:\"返回应用一系列复利率计算的初始本金的未来值。\",p:[{name:\"principal\",detail:\"现值。\"},{name:\"schedule\",detail:\"用于计算本金复利的一组利率。\\n\\n利率表必须是范围或数组，其中包含要用于计算复利的一组利率。这些利率值应该以十进制小数形式表示，或者使用UNARY_PERCENT以百分比形式表示，即表示为0.09或UNARY_PERCENT(9)，而不要表示为9。\"}]},YIELD:{d:\"返回定期支付利息的债券的收益率。\",a:\"返回定期支付利息的债券的收益率。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"rate\",detail:\"有价证券的年息票利率。\"},{name:\"pr\",detail:\"有价证券的价格。\"},{name:\"redemption\",detail:\"有价证券的清偿价值。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},YIELDDISC:{d:\"基于价格计算折价发行的（不带息）债券的年收益率。\",a:\"基于价格计算折价发行的（不带息）债券的年收益率。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"pr\",detail:\"有价证券的价格。\"},{name:\"redemption\",detail:\"有价证券的清偿价值。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},NOMINAL:{d:\"基于给定的实际利率和年复利期数，返回名义年利率。\",a:\"基于给定的实际利率和年复利期数，返回名义年利率。\",p:[{name:\"effect_rate\",detail:\"每年的实际利率。\"},{name:\"npery\",detail:\"每年的复利期数。\"}]},XIRR:{d:\"返回一组不一定定期发生的现金流的内部收益率。\",a:\"返回一组不一定定期发生的现金流的内部收益率。\",p:[{name:\"values\",detail:\"其中含有投资相关收益或支出的数组或范围。\\n\\n现金流数额中必须至少包含一项负的和一项正的现金流金额才能计算回报率。\"},{name:\"dates\",detail:\"与现金流数额参数中的现金流对应的日期数组或范围。\"},{name:\"guess\",detail:\"[可选 - 默认值为0.1] - 对内部回报率的估算值。\"}]},MIRR:{d:\"返回一系列定期现金流的修改后内部收益率。\",a:\"返回一系列定期现金流的修改后内部收益率。\",p:[{name:\"values\",detail:\"其中含有投资相关收益或支出的数组或范围。\\n\\n现金流数额中必须至少包含一项负的和一项正的现金流金额才能计算回报率。\"},{name:\"finance_rate\",detail:\"现金流中使用的资金支付的利率。\"},{name:\"reinvest_rate\",detail:\"将现金流再投资的收益率。\"}]},IRR:{d:\"返回由值中的数字表示的一系列现金流的内部收益率。 \",a:\"返回由值中的数字表示的一系列现金流的内部收益率。 \",p:[{name:\"values\",detail:\"其中含有投资相关收益或支出的数组或范围。\\n\\n现金流数额中必须至少包含一项负的和一项正的现金流金额才能计算回报率。\"},{name:\"guess\",detail:\"[可选 - 默认为 0.1] - 内部收益率的估值。\"}]},NPV:{d:\"使用贴现率和一系列未来支出（负值）和收益（正值）来计算一项投资的净现值。\",a:\"使用贴现率和一系列未来支出（负值）和收益（正值）来计算一项投资的净现值。\",p:[{name:\"rate\",detail:\"某一期间的贴现率。\"},{name:\"value1\",detail:\"第一笔支出（负值）和收益（正值）。\"},{name:\"value2, ...\",detail:\"[可选] - 其他支出（负值）和收益（正值）。\"}]},XNPV:{d:\"返回一组现金流的净现值，这些现金流不一定定期发生。\",a:\"返回一组现金流的净现值，这些现金流不一定定期发生。\",p:[{name:\"rate\",detail:\"应用于现金流的贴现率。\"},{name:\"values\",detail:\"与 dates 中的支付时间相对应的一系列现金流。\"},{name:\"dates\",detail:\"与现金流支付相对应的支付日期表。\"}]},CUMIPMT:{d:\"基于等额分期付款和固定利率，计算投资在一系列付款期内的累计利息。\",a:\"基于等额分期付款和固定利率，计算投资在一系列付款期内的累计利息。\",p:[{name:\"rate\",detail:\"利息率。\"},{name:\"nper\",detail:\"总付款期数。\"},{name:\"pv\",detail:\"现值。\"},{name:\"start_period\",detail:\"开始累计计算的付款期序号。\\n\\n首期必须大于等于1。\"},{name:\"end_period\",detail:\"结束累计计算的付款期序号。\\n\\n末期必须大于首期。\"},{name:\"type\",detail:\"指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},PMT:{d:\"用于根据固定付款额和固定利率计算贷款的付款额。\",a:\"用于根据固定付款额和固定利率计算贷款的付款额。\",p:[{name:\"rate\",detail:\"贷款利率。\"},{name:\"nper\",detail:\"该项贷款的付款总数。\"},{name:\"pv\",detail:\"现值，或一系列未来付款额现在所值的总额，也叫本金。\"},{name:\"fv\",detail:\"[可选 - 默认值为 0] - 未来值，或在最后一次付款后希望得到的现金余额。\"},{name:\"type\",detail:\"[可选 - 默认值为 0] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},IPMT:{d:\"基于固定利率及等额分期付款方式，返回给定期数内对投资的利息偿还额。\",a:\"基于固定利率及等额分期付款方式，返回给定期数内对投资的利息偿还额。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"per\",detail:\"用于计算其利息数额的期数，必须在 1 到 nper 之间。\"},{name:\"nper\",detail:\"年金的付款总期数。\"},{name:\"pv\",detail:\"现值，或一系列未来付款的当前值的累积和。\"},{name:\"fv\",detail:\"[可选 - 默认值为 0] - 未来值，或在最后一次付款后希望得到的现金余额。\"},{name:\"type\",detail:\"[可选 - 默认值为 0] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},PPMT:{d:\"返回根据定期固定付款和固定利率而定的投资在已知期间内的本金偿付额。\",a:\"返回根据定期固定付款和固定利率而定的投资在已知期间内的本金偿付额。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"per\",detail:\"指定期数，该值必须在 1 到 nper 范围内。\"},{name:\"nper\",detail:\"年金的付款总期数。\"},{name:\"pv\",detail:\"现值即一系列未来付款当前值的总和。\"},{name:\"fv\",detail:\"[可选 - 默认值为 0] - 未来值，或在最后一次付款后希望得到的现金余额。\"},{name:\"type\",detail:\"[可选 - 默认值为 0] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},INTRATE:{d:\"返回完全投资型证券的利率。\",a:\"返回完全投资型证券的利率。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"investment\",detail:\"有价证券的投资额。\"},{name:\"redemption\",detail:\"有价证券到期时的兑换值。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},PRICE:{d:\"返回定期付息的面值 ￥100 的有价证券的价格。\",a:\"返回定期付息的面值 ￥100 的有价证券的价格。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"rate\",detail:\"有价证券的年息票利率。\"},{name:\"yld\",detail:\"有价证券的年收益率。\"},{name:\"redemption\",detail:\"面值 ￥100 的有价证券的清偿价值。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},PRICEDISC:{d:\"返回折价发行的面值 ￥100 的有价证券的价格。\",a:\"返回折价发行的面值 ￥100 的有价证券的价格。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"discount\",detail:\"有价证券的贴现率。\"},{name:\"redemption\",detail:\"面值 ￥100 的有价证券的清偿价值。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},PRICEMAT:{d:\"返回到期付息的面值 ￥100 的有价证券的价格。\",a:\"返回到期付息的面值 ￥100 的有价证券的价格。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"issue\",detail:\"有价证券的发行日。\"},{name:\"rate\",detail:\"有价证券在发行日的利率。\"},{name:\"yld\",detail:\"有价证券的年收益率。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},RECEIVED:{d:\"返回一次性付息的有价证券到期收回的金额。\",a:\"返回一次性付息的有价证券到期收回的金额。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"investment\",detail:\"有价证券的投资额。\"},{name:\"discount\",detail:\"有价证券的贴现率。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},DISC:{d:\"返回有价证券的贴现率。\",a:\"返回有价证券的贴现率。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"pr\",detail:\"有价证券的价格（按面值为 ￥100 计算）。\"},{name:\"redemption\",detail:\"面值 ￥100 的有价证券的清偿价值。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},NPER:{d:\"基于固定利率及等额分期付款方式，返回某项投资的总期数。\",a:\"基于固定利率及等额分期付款方式，返回某项投资的总期数。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"pmt\",detail:\"各期所应支付的金额，在整个年金期间保持不变。\"},{name:\"pv\",detail:\"现值，或一系列未来付款的当前值的累积和。\"},{name:\"fv\",detail:\"[可选 - 默认值为0] - 未来值，或在最后一次付款后希望得到的现金余额。\"},{name:\"type\",detail:\"[可选 - 默认值为0] - 指定各期的付款时间是在期初还是期末。\\n\\n0 表示期末；\\n\\n1 表示期初。\"}]},SLN:{d:\"返回一个期间内的资产的直线折旧。\",a:\"返回一个期间内的资产的直线折旧。\",p:[{name:\"cost\",detail:\"资产原值。\"},{name:\"salvage\",detail:\"折旧末尾时的值（有时也称为资产残值）。\"},{name:\"life\",detail:\"资产的折旧期数（有时也称作资产的使用寿命）。\"}]},DURATION:{d:\"返回假设面值 ￥100 的定期付息有价证券的修正期限。\",a:\"返回假设面值 ￥100 的定期付息有价证券的修正期限。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"coupon\",detail:\"有价证券的年息票利率。\"},{name:\"yld\",detail:\"有价证券的年收益率。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},MDURATION:{d:\"返回假设面值 ￥100 的有价证券的 Macauley 修正期限。\",a:\"返回假设面值 ￥100 的有价证券的 Macauley 修正期限。\",p:[{name:\"settlement\",detail:\"有价证券的结算日。 有价证券结算日是在发行日之后，有价证券卖给购买者的日期。\"},{name:\"maturity\",detail:\"有价证券的到期日。 到期日是有价证券有效期截止时的日期。\"},{name:\"coupon\",detail:\"有价证券的年息票利率。\"},{name:\"yld\",detail:\"有价证券的年收益率。\"},{name:\"frequency\",detail:\"年付息次数。\\n\\n如果按年支付，frequency = 1；\\n\\n按半年期支付，frequency = 2；\\n\\n按季支付，frequency = 4。\"},{name:\"basis\",detail:\"[可选 - 默认为0] - 指示要使用哪种天数计算方法。\\n\\n0表示“美国(NASD) 30/360”方法 - 此方法按照美国全国证券交易商协会标准，假设每月30天、每年360天，并对所输入的月末日期进行具体调整。\\n\\n1表示“实际/实际”方法 - 此方法计算基于指定日期之间的实际天数和所涉及的年份中的实际天数进行计算。此方法用于美国长期债券，也是在非财经用途方面使用最多的方法。\\n\\n2表示“实际/360”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为360天。\\n\\n3表示“实际/365”方法 - 此方法基于指定日期之间的实际天数进行计算，但假定每年为365天。\\n\\n4表示“欧洲30/360”方法 - 类似于0，此方法基于每月30天、每年360天进行计算，但按照欧洲金融惯例对月末日期进行调整。\"}]},BIN2DEC:{d:\"将二进制数转换为十进制数。\",a:\"将二进制数转换为十进制数。\",p:[{name:\"number\",detail:'要转换为十进制数的带符号的10位二进制数值（以字符串形式提供）。\\n\\n带符号的二进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n对于此函数，最大的正数输入值为0111111111，最小的负数输入值为1000000000。\\n\\n如果所提供的带符号的二进制数是有效的二进制数，会自动将其转换为相应的字符串输入。例如，BIN2DEC(100)和BIN2DEC(\"100\")得出的结果相同，均为4。'}]},BIN2HEX:{d:\"将二进制数转换为十六进制数。\",a:\"将二进制数转换为十六进制数。\",p:[{name:\"number\",detail:'要转换为带符号的十六进制数的带符号的10位二进制数值（以字符串形式提供）。\\n\\n带符号的二进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n对于此函数，最大的正数输入值为0111111111，最小的负数输入值为1000000000。\\n\\n如果所提供的带符号的二进制数是有效的二进制数，会自动将其转换为相应的字符串输入。例如，BIN2HEX(11111)和BIN2HEX(\"11111\")得出 的结果相同，均为1F。'},{name:\"places\",detail:'[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。例如，BIN2HEX(\"11111\",8)所得的结果值为0000001F。\\n\\n如果带符号的二进制数的最高位为1，则忽略此值；即当提供的带符号的二进制数大于等于1000000000时忽略此值。'}]},BIN2OCT:{d:\"将二进制数转换为八进制数。\",a:\"将二进制数转换为八进制数。\",p:[{name:\"number\",detail:'要转换为带符号的八进制数的带符号的10位二进制数值（以字符串形式提供）。\\n\\n带符号的二进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n对于此函数，最大的正数输入值为0111111111，最小的负数输入值为1000000000。\\n\\n如果所提供的带符号的二进制数是有效的二进制数，会自动将其转换为相应的字符串输入。例如，BIN2OCT(11111)和BIN2OCT(\"11111\")得出的结果相同，均为37。'},{name:\"places\",detail:'[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。例如，BIN2OCT(\"11111\")得到的结果值为00000037。\\n\\n如果带符号的二进制数的最高位为1，则忽略此值；即当提供的带符号的二进制数大于等于1000000000时忽略此值。'}]},DEC2BIN:{d:\"将十进制数转换为二进制数。\",a:\"将十进制数转换为二进制数。\",p:[{name:\"number\",detail:'要转换为带符号的二进制数的十进制数值（以字符串形式提供）。\\n\\n对于此函数，最大的正数输入值为511，最小的负数输入值为-512。\\n\\n如果所提供的十进制数是有效的十进制数，会自动将其转换为相应的字符串输入。例如，DEC2BIN(199)和DEC2BIN(\"199\")得出的结果相同，均为11000111。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果十进制数为负数，则忽略此值。\"}]},DEC2HEX:{d:\"将十进制数转换为十六进制数。\",a:\"将十进制数转换为十六进制数。\",p:[{name:\"number\",detail:'要转换为带符号的十六进制数的十进制数值（以字符串形式提供）。\\n\\n此函数可接受的最大正数值为549755813887，最小负数值为-549755814888。\\n\\n如果所提供的十进制数是有效的十进制数，会自动将其转换为相应的字符串输入。例如，DEC2HEX(100)和DEC2HEX(\"100\")得出的结果相同，均为64。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果十进制数为负数，则忽略此值。\"}]},DEC2OCT:{d:\"将十进制数转换为八进制数。\",a:\"将十进制数转换为八进制数。\",p:[{name:\"number\",detail:'要转换为带符号的八进制数的十进制数值（以字符串形式提供）。\\n\\n此函数可接受的最大正数值为536870911，最小负数值为-53687092。\\n\\n如果所提供的十进制数是有效的十进制数，会自动将其转换为相应的字符串输入。例如，DEC2OCT(199)和DEC2OCT(\"199\")得出的结果相同，均为307。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果十进制数为负数，则忽略此值。\"}]},HEX2BIN:{d:\"将十六进制数转换为二进制数。\",a:\"将十六进制数转换为二进制数。\",p:[{name:\"number\",detail:'要转换为带符号的二进制数的带符号的40位十六进制数值（以字符串形式提供）。\\n\\n带符号的十六进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n此函数可接受的最大正数值为1FF，最小负数值为FFFFFFFE00。\\n\\n如果所提供的带符号的十六进制数是有效的十六进制数，函数会自动将其转换为相应的字符串输入。例如，HEX2BIN(199)和HEX2BIN(\"199\")得出的结果相同，均为110011001。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果带符号的十六进制数的最高位为1，则忽略此值；即当提供的带符号的十六进制数大于等于8000000000时忽略此值。\"}]},HEX2DEC:{d:\"将十六进制数转换为十进制数。\",a:\"将十六进制数转换为十进制数。\",p:[{name:\"number\",detail:'要转换为十进制数的带符号的40位十六进制数值（以字符串形式提供）。\\n\\n带符号的十六进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n此函数可接受的最大正数值为7fffffffff，最小负数值为8000000000。\\n\\n如果所提供的带符号的十六进制数是有效的十六进制数，函数会自动将其转换为相应的字符串输入。例如，HEX2DEC(199)和HEX2DEC(\"199\")得出的结果相同，均为409。'}]},HEX2OCT:{d:\"将十六进制数转换为八进制数。\",a:\"将十六进制数转换为八进制数。\",p:[{name:\"number\",detail:'要转换为带符号的八进制数的带符号的40位十六进制数值（以字符串形式提供）。\\n\\n带符号的十六进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n此函数可接受的最大正数值为1FFFFFFF，最小负数值为FFE0000000。\\n\\n如果所提供的带符号的十六进制数是有效的十六进制数，函数会自动将其转换为相应的字符串输入。例如，HEX2OCT(199)和HEX2OCT(\"199\")得出的结果相同，均为631。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果带符号的十六进制数的最高位为1，则忽略此值；即当给定的带符号的十六进制数大于等于8000000000时忽略此值。\"}]},OCT2BIN:{d:\"将八进制数转换为二进制数。\",a:\"将八进制数转换为二进制数。\",p:[{name:\"number\",detail:'要转换为带符号的二进制数的带符号的30位八进制数值（以字符串形式提供）。\\n\\n带符号的八进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n此函数可接受的最大正数值为777，最小负数值为7777777000。\\n\\n如果所提供的带符号的八进制数是有效的八进制数，函数会自动将其转换为相应的字符串输入。例如，OCT2BIN(177)和OCT2BIN(\"177\")得出的结果相同，均为1111111。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果带符号的八进制数的最高位为1，则忽略此值；即当给定的带符号的八进制数大于等于4000000000时忽略此值。\"}]},OCT2DEC:{d:\"将八进制数转换为十进制数。\",a:\"将八进制数转换为十进制数。\",p:[{name:\"number\",detail:'要转换为十进制数的带符号的30位八进制数值（以字符串形式提供）。\\n\\n带符号的ba进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n此函数可接受的最大正数值为3777777777，最小负数值为4000000000。\\n\\n如果所提供的带符号的八进制数是有效的八进制数，函数会自动将其转换为相应的字符串输入。例如，OCT2DEC(177)和OCT2DEC(\"177\")得出的结果相同，均为127。'}]},OCT2HEX:{d:\"将八进制数转换为十六进制数。\",a:\"将八进制数转换为十六进制数。\",p:[{name:\"number\",detail:'要转换为带符号的十六进制数的带符号的30位八进制数值（以字符串形式提供）。\\n\\n带符号的ba进制数的最高位是符号位；也就是说，负数是以二的补码形式表示的。\\n\\n此函数可接受的最大正数值为3777777777，最小负数值为4000000000。\\n\\n如果所提供的带符号的八进制数是有效的八进制数，函数会自动将其转换为相应的字符串输入。例如，OCT2HEX(177)和OCT2HEX(\"177\")得出的结果相同，均为7F。'},{name:\"places\",detail:\"[ 可选 ] - 结果中要确保的有效位数。\\n\\n如果设置的有效位数大于结果中的有效位数，则在结果的左侧填充0，使总有效位数达到有效位数。\\n\\n如果带符号的八进制数的最高位为1，则忽略此值；即当给定的带符号的八进制数大于等于4000000000时忽略此值。\"}]},COMPLEX:{d:\"将实系数及虚系数转换为 x+yi 或 x+yj 形式的复数。\",a:\"将实系数及虚系数转换为 x+yi 或 x+yj 形式的复数。\",p:[{name:\"real_num\",detail:\"复数的实系数。\"},{name:\"i_num\",detail:\"复数的虚系数。\"},{name:\"suffix\",detail:'[可选 - 默认为 \"i\"] - 复数中虚系数的后缀。'}]},IMREAL:{d:\"返回以 x+yi 或 x+yj 文本格式表示的复数的实系数。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的复数的实系数。\",p:[{name:\"inumber\",detail:\"需要计算其实系数的复数。\"}]},IMAGINARY:{d:\"返回以 x+yi 或 x+yj 文本格式表示的复数的虚系数。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的复数的虚系数。\",p:[{name:\"inumber\",detail:\"需要计算其虚系数的复数。\"}]},IMCONJUGATE:{d:\"返回以 x+yi 或 x+yj 文本格式表示的复数的共轭复数。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的复数的共轭复数。\",p:[{name:\"inumber\",detail:\"需要计算其共轭数的复数。\"}]},IMABS:{d:\"返回以 x+yi 或 x+yj 文本格式表示的复数的绝对值（模）。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的复数的绝对值（模）。\",p:[{name:\"inumber\",detail:\"要计算其绝对值的复数。\"}]},DELTA:{d:\"检验两个值是否相等。 如果 number1=number2，则返回 1；否则返回 0。\",a:\"检验两个值是否相等。 如果 number1=number2，则返回 1；否则返回 0。\",p:[{name:\"number1\",detail:\"第一个数字。\"},{name:\"number2\",detail:\"[可选 - 默认为 0] - 第二个数字。\"}]},IMSUM:{d:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 个复数的和。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 个复数的和。\",p:[{name:\"inumber1\",detail:\"要相加的第一个复数\"},{name:\"inumber2, …\",detail:\"[可选] - 要与值1 相加的其他复数\"}]},IMSUB:{d:\"返回以 x+yi 或 x+yj 文本格式表示的两个复数的差。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的两个复数的差。\",p:[{name:\"inumber1\",detail:\"从（复）数中减去 inumber2。\"},{name:\"inumber2\",detail:\"从 inumber1 中减（复）数。\"}]},IMPRODUCT:{d:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 个复数的乘积。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 个复数的乘积。\",p:[{name:\"inumber1\",detail:\"用于计算乘积的第一个复数\"},{name:\"inumber2, …\",detail:\"[可选] - 要相乘的其他复数。\"}]},IMDIV:{d:\"返回以 x+yi 或 x+yj 文本格式表示的两个复数的商。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的两个复数的商。\",p:[{name:\"inumber1\",detail:\"复数分子或被除数。\"},{name:\"inumber2\",detail:\"复数分母或除数。\"}]},NOT:{d:\"返回某个逻辑值的相反值 - “NOT(TRUE())”将返回 FALSE；“NOT(FALSE())”将返回 TRUE。\",a:\"返回某个逻辑值的相反值 - “NOT(TRUE())”将返回 FALSE；“NOT(FALSE())”将返回 TRUE。\",p:[{name:\"logical\",detail:\"计算结果为 TRUE 或 FALSE 的任何值或表达式。\"}]},TRUE:{d:\"返回逻辑值 TRUE。\",a:\"返回逻辑值 TRUE。\",p:[]},FALSE:{d:\"返回逻辑值 FALSE。\",a:\"返回逻辑值 FALSE。\",p:[]},AND:{d:\"所有参数的计算结果为 TRUE 时，返回 TRUE；只要有一个参数的计算结果为 FALSE，即返回 FALSE。\",a:\"所有参数的计算结果为 TRUE 时，返回 TRUE；只要有一个参数的计算结果为 FALSE，即返回 FALSE。\",p:[{name:\"logical1\",detail:\"要测试的第一个条件，其计算结果可以为 TRUE 或 FALSE。\"},{name:\"logical2,...\",detail:\"[可选] - 要测试的其他条件，其计算结果可以为 TRUE 或 FALSE，最多可包含 255 个条件。\"}]},IFERROR:{d:\"如果第一个参数不是错误值，就返回第一个参数；否则，返回第二个参数。\",a:\"如果第一个参数不是错误值\",p:[{name:\"value\",detail:\"检查是否存在错误的参数。\"},{name:\"value_if_error\",detail:\"公式的计算结果错误时返回的值。 计算以下错误类型：#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!。\"}]},IF:{d:\"当逻辑表达式的值为 TRUE 时返回一个值，而当其为 FALSE 时返回另一个值。\",a:\"当逻辑表达式的值为 TRUE 时返回一个值，而当其为 FALSE 时返回另一个值。\",p:[{name:\"logical_test\",detail:\"一个表达式或对包含表达式的单元格的引用，该表达式代表某种逻辑值（即TRUE或FALSE）。\"},{name:\"value_if_true\",detail:\"当逻辑表达式为TRUE时的返回值。\"},{name:\"value_if_false\",detail:\"[可选 - 默认为空白] - 当逻辑表达式等于FALSE时的函数返回值。\"}]},OR:{d:\"只要有一个参数的计算结果为 TRUE 时，返回 TRUE；所有参数的计算结果为 FALSE，即返回 FALSE。\",a:\"只要有一个参数的计算结果为 TRUE 时，返回 TRUE；所有参数的计算结果为 FALSE，即返回 FALSE。\",p:[{name:\"logical1\",detail:\"要测试的第一个条件，其计算结果可以为 TRUE 或 FALSE。\"},{name:\"逻辑表达式2\",detail:\"[可选] - 其他表达式或对包含表达式的单元格的引用，这些表达式代表某种逻辑值（即TRUE或FALSE）或者可以强制转换为逻辑值。\"}]},NE:{d:\"如果指定的值不相等，则返回“TRUE”；否则返回“FALSE”。相当于“<>”运算符。\",a:\"如果指定的值不相等，则返回“TRUE”；否则返回“FALSE”。相当于“<>”运算符。\",p:[{name:\"value1\",detail:\"第一个值。\"},{name:\"value2\",detail:\"要检查是否与 value1 不相等的值。\"}]},EQ:{d:\"如果指定的值相等，则返回“TRUE”；否则返回“FALSE”。相当于“=”运算符。\",a:\"如果指定的值相等，则返回“TRUE”；否则返回“FALSE”。相当于“=”运算符。\",p:[{name:\"value1\",detail:\"第一个值。\"},{name:\"value2\",detail:\"要检查是否与 value1 相等的值。\"}]},GT:{d:\"如果第一个参数严格大于第二个，则返回 TRUE；否则返回 FALSE。相当于“>”运算符。\",a:\"如果第一个参数严格大于第二个，则返回 TRUE；否则返回 FALSE。相当于“>”运算符。\",p:[{name:\"value1\",detail:\"要测试其是否大于 value2 的值。\"},{name:\"value2\",detail:\"第二个值。\"}]},GTE:{d:\"如果第一个参数大于或等于第二个，则返回 TRUE；否则返回 FALSE。相当于“>=”运算符。\",a:\"如果第一个参数大于或等于第二个，则返回 TRUE；否则返回 FALSE。相当于“>=”运算符。\",p:[{name:\"value1\",detail:\"要测试其是否大于等于 value2 的值。\"},{name:\"value2\",detail:\"第二个值。\"}]},LT:{d:\"如果第一个参数严格小于第二个，则返回 TRUE；否则返回 FALSE。相当于“<”运算符。\",a:\"如果第一个参数严格小于第二个，则返回 TRUE；否则返回 FALSE。相当于“<”运算符。\",p:[{name:\"value1\",detail:\"要测试其是否小于 value2 的值。\"},{name:\"value2\",detail:\"第二个值。\"}]},LTE:{d:\"如果第一个参数小于或等于第二个，则返回 TRUE；否则返回 FALSE。相当于“<=”运算符。\",a:\"如果第一个参数小于或等于第二个，则返回 TRUE；否则返回 FALSE。相当于“<=”运算符。\",p:[{name:\"value1\",detail:\"要测试其是否小于等于 value2 的值。\"},{name:\"value2\",detail:\"第二个值。\"}]},ADD:{d:\"返回两个数值之和。相当于 `+` 运算符。\",a:\"返回两个数值之和。相当于 `+` 运算符。\",p:[{name:\"value1\",detail:\"第一个加数。\"},{name:\"value2\",detail:\"第二个加数。\"}]},MINUS:{d:\"返回两个数值之差。相当于“-”运算符。\",a:\"返回两个数值之差。相当于“-”运算符。\",p:[{name:\"value1\",detail:\"被减数，即要对其计减的数值。\"},{name:\"value2\",detail:\"减数，即要从 value1 中减除的数值。\"}]},MULTIPLY:{d:\"返回两个数的乘积。相当于“*”运算符。\",a:\"返回两个数的乘积。相当于“*”运算符。\",p:[{name:\"value1\",detail:\"第一个乘数。\"},{name:\"value2\",detail:\"第二个乘数。\"}]},DIVIDE:{d:\"返回两个参数相除所得的结果。相当于 `/` 运算符。\",a:\"返回两个参数相除所得的结果。相当于 `/` 运算符。\",p:[{name:\"value1\",detail:\"要被除的数值。\"},{name:\"value2\",detail:\"用于除其他数的数值。\\n\\n除数不得为0。\"}]},CONCAT:{d:\"返回两个值的串联。相当于 `&` 运算符。\",a:\"返回两个值的串联。相当于 `&` 运算符。\",p:[{name:\"value1\",detail:\"value2 将附于其后的值。\"},{name:\"value2\",detail:\"要附于 value1 之后的值。\"}]},UNARY_PERCENT:{d:\"返回按百分比解释的数值。例如，“UNARY_PERCENT(100)”等于1。\",a:\"返回按百分比解释的数值。例如，“UNARY_PERCENT(100)”等于1。\",p:[{name:\"number\",detail:\"要作为百分比解释的数值。\"}]},CONCATENATE:{d:\"将两个或多个文本字符串联接为一个字符串。\",a:\"将两个或多个文本字符串联接为一个字符串。\",p:[{name:\"text1\",detail:\"初始字符串。\"},{name:\"text2 ...\",detail:\"[可选] - 要按顺序连接在一起的其他字符串。\"}]},CODE:{d:\"返回所提供的字符串中首字符的 Unicode 映射值。\",a:\"返回所提供的字符串中首字符的 Unicode 映射值。\",p:[{name:\"text\",detail:\"要返回其首字符的Unicode映射值的字符串。\"}]},CHAR:{d:\"按照当前 Unicode 编码表，将数字转换为对应的字符。\",a:\"按照当前 Unicode 编码表，将数字转换为对应的字符。\",p:[{name:\"number\",detail:\"介于 1 到 255 之间的数字。\"}]},ARABIC:{d:\"将罗马数字转换为阿拉伯数字。\",a:\"将罗马数字转换为阿拉伯数字。\",p:[{name:\"text\",detail:\"要转换格式的罗马数字\"}]},ROMAN:{d:\"将数字格式设置为罗马数字形式。\",a:\"将数字格式设置为罗马数字形式。\",p:[{name:\"number\",detail:\"要设置格式的数字，介于1到3999之间（包括这两个数字）。\"}]},REGEXEXTRACT:{d:\"按照正则表达式提取匹配的子串。\",a:\"按照正则表达式提取匹配的子串。\",p:[{name:\"text\",detail:\"输入文本。\"},{name:\"regular_expression\",detail:\"此函数将返回文本中符合此表达式的第一个子串。\"}]},REGEXMATCH:{d:\"判断一段文本是否与正则表达式相匹配。\",a:\"判断一段文本是否与正则表达式相匹配。\",p:[{name:\"text\",detail:\"要用正则表达式测试的文本。\"},{name:\"regular_expression\",detail:\"用来测试文本的正则表达式。\"}]},REGEXREPLACE:{d:\"使用正则表达式将文本字符串中的一部分替换为其他文本字符串。\",a:\"使用正则表达式将文本字符串中的一部分替换为其他文本字符串。\",p:[{name:\"text\",detail:\"要对其局部进行替换操作的文本。\"},{name:\"regular_expression\",detail:\"正则表达式。 text 中所有匹配的实例都将被替换。\"},{name:\"replacement\",detail:\"要插入到原有文本中的文本。\"}]},T:{d:\"返回文本格式的字符串参数。\",a:\"返回文本格式的字符串参数。\",p:[{name:\"value\",detail:\"要转换为文本的参数。\\n\\n如果值为文本，T将返回值本身。\\n\\n如果值为指向包含文本的单元格的引用，T将返回值中的内容。\\n\\n如果值为错误值或包含错误值的单元格，T将返回该错误值。\\n\\n对于所有其他情况，T将返回空串。\"}]},FIXED:{d:\"以固定的小数位数设置数字的格式。\",a:\"以固定的小数位数设置数字的格式。\",p:[{name:\"number\",detail:\"要进行舍入并转换为文本的数字。\"},{name:\"decimals\",detail:\"[可选 - 默认值为2] - 结果中要显示的小数位数。\\n\\n如果数值的有效位数小于小数位数，将以零填充。如果数值的有效位数大于小数位数，则将其舍入到所需的小数位数而不是将其截断。\"},{name:\"no_commas\",detail:\"[可选 - 默认值为FALSE()] - 一个逻辑值，如果为 TRUE()，则会禁止 FIXED 在返回的文本中包含逗号。\"}]},FIND:{d:\"返回字符串在文本中首次出现的位置（区分大小写）。\",a:\"返回字符串在文本中首次出现的位置（区分大小写）。\",p:[{name:\"find_text\",detail:\"要在要搜索的文本中查找的字符串。\"},{name:\"within_text\",detail:\"要在其中搜索搜索字符串的首次出现位置的文本。\"},{name:\"start_num\",detail:\"[可选 - 默认值为1] - 要在要搜索的文本中开始搜索的字符位置。\"}]},FINDB:{d:\"返回某个字符串在文本中首次出现的位置（每个双字节字符占两个位置）。\",a:\"返回某个字符串在文本中首次出现的位置（每个双字节字符占两个位置）。\",p:[{name:\"find_text\",detail:\"要在要搜索的文本中查找的字符串。\"},{name:\"within_text\",detail:\"要在其中搜索搜索字符串的首次出现位置的文本。\"},{name:\"start_num\",detail:\"[可选 - 默认值为 1] - 要在要搜索的文本中开始搜索的字符位置。\"}]},JOIN:{d:\"将一个或多个使用指定定界符的一维数组的元素连接到一起。\",a:\"将一个或多个使用指定定界符的一维数组的元素连接到一起。\",p:[{name:\"separator\",detail:\"置于相互连接的值之间的字符或字符串。\\n\\n定界符可以为空，例如JOIN(,{1,2,3})。\"},{name:\"array1\",detail:\"要使用定界符连接的一个或多个值。\"},{name:\"array2, ...\",detail:\"[可选] - 要使用定界符连接的其他值或数组。\"}]},LEFT:{d:\"从文本字符串的第一个字符开始返回指定个数的字符。\",a:\"从文本字符串的第一个字符开始返回指定个数的字符。\",p:[{name:\"text\",detail:\"包含要提取的字符的文本字符串。\"},{name:\"num_chars\",detail:\"[可选 - 默认值为1] - 指定要由 LEFT 提取的字符的数量。\"}]},RIGHT:{d:\"根据所指定的字符数返回文本字符串中最后一个或多个字符。\",a:\"根据所指定的字符数返回文本字符串中最后一个或多个字符。\",p:[{name:\"text\",detail:\"包含要提取的字符的文本字符串。\"},{name:\"num_chars\",detail:\"[可选 - 默认值为1] - 指定要由 RIGHT 提取的字符的数量。\"}]},MID:{d:\"返回文本字符串中从指定位置开始的特定数目的字符。\",a:\"返回文本字符串中从指定位置开始的特定数目的字符。\",p:[{name:\"text\",detail:\"包含要提取的字符的文本字符串。\"},{name:\"start_num\",detail:\"要从字符串中开始提取的位置。字符串中第一个字符的索引为1。\"},{name:\"num_chars\",detail:\"指定要由 MID 提取的字符的数量。\\n\\n如果提取的字符数尚不足提取长度个字符时就到达了字符串尾部，则MID返回从开始位置到字符串尾部的字符。\"}]},LEN:{d:\"返回给定字符串的长度。\",a:\"返回给定字符串的长度。\",p:[{name:\"text\",detail:\"要返回其长度的字符串。\"}]},LENB:{d:\"返回文本中所包含的字符数。与双字节字符集(DBCS)一起使用。\",a:\"返回文本中所包含的字符数。与双字节字符集(DBCS)一起使用。\",p:[{name:\"text\",detail:\"要返回其字节数的字符串。（一个汉字为两个字节数）\"}]},LOWER:{d:\"将指定字符串中的字母转换为小写。\",a:\"将指定字符串中的字母转换为小写。\",p:[{name:\"text\",detail:\"要转换为小写的字符串。\"}]},UPPER:{d:\"将指定字符串中的字母转换为大写。\",a:\"将指定字符串中的字母转换为大写。\",p:[{name:\"text\",detail:\"要转换为大写的字符串。\"}]},EXACT:{d:\"比较两个字符串是否相同。\",a:\"比较两个字符串是否相同。\",p:[{name:\"text1\",detail:\"要比较的第一个字符串。\"},{name:\"text2\",detail:\"要比较的第二个字符串。\"}]},REPLACE:{d:\"将文本字符串的一部分替换为其他文本字符串。\",a:\"将文本字符串的一部分替换为其他文本字符串。\",p:[{name:\"old_text\",detail:\"要对其局部进行替换操作的文本。\"},{name:\"start_num\",detail:\"开始进行替换操作的位置（文本开头位置为 1）。\"},{name:\"num_chars\",detail:\"要在文本中替换的字符个数。\"},{name:\"new_text\",detail:\"要插入到原有文本中的文本。\"}]},REPT:{d:\"返回指定文本的多次重复。\",a:\"返回指定文本的多次重复。\",p:[{name:\"text\",detail:\"要重复的字符或字符串。\"},{name:\"number_times\",detail:\"要重复的文本要在返回值中出现的次数。\\n\\n最大重复次数为100。即使重复次数大于100，REPT也仅将相应文本重复100次。\"}]},SEARCH:{d:\"返回字符串在文本中首次出现的位置（不区分大小写）。\",a:\"返回字符串在文本中首次出现的位置（不区分大小写）。\",p:[{name:\"find_text\",detail:\"要在要搜索的文本中查找的字符串。\"},{name:\"within_text\",detail:\"要在其中搜索搜索字符串的首次出现位置的文本。\"},{name:\"start_num\",detail:\"[ 可选 - 默认值为1 ] - 要在要搜索的文本中开始搜索的字符位置。\"}]},SUBSTITUTE:{d:\"在文本字符串中用 new_text 替换 old_text。\",a:\"在文本字符串中用 new_text 替换 old_text。\",p:[{name:\"text\",detail:\"需要替换其中字符的文本，或对含有文本（需要替换其中字符）的单元格的引用。\"},{name:\"old_text\",detail:\"需要替换的文本。\"},{name:\"new_text\",detail:\"用于替换 old_text 的文本。\"},{name:\"instance_num\",detail:\"[ 可选 ] - 指定要用 new_text 替换 old_text 的事件。 如果指定了 instance_num，则只有满足要求的 old_text 被替换。 否则，文本中出现的所有 old_text 都会更改为 new_text。\"}]},CLEAN:{d:\"移除文本中的不可打印 ASCII 字符后将其返回。\",a:\"移除文本中的不可打印 ASCII 字符后将其返回。\",p:[{name:\"text\",detail:\"要移除其中不可打印字符的文本。\"}]},TEXT:{d:\"按照指定格式将数字转换为文本。\",a:\"按照指定格式将数字转换为文本。\",p:[{name:\"value\",detail:\"要设置格式的数字、日期或时间。\"},{name:\"format_text\",detail:'以括号括起来的模式串，将按该模式设置数字的格式。\\n\\n0表示在数值位数少于格式指定的位数时必定以零填充。例如，TEXT(12.3,\"000.00\")将返回012.30。当数值的小数位数超过模式指定的小数位数时，四舍五入为指定的小数位数。例如，TEXT(12.305,\"00.00\")将返回12.31。\\n\\n#类似于0，但并不是在小数点的两侧都以零填充。例如，TEXT(12.3,\"###.##\")将返回12.3。'}]},TRIM:{d:\"删除指定字符串前后的空格。\",a:\"删除指定字符串前后的空格。\",p:[{name:\"text\",detail:\"要修剪的字符串或指向包含该字符串的单元格的引用。\"}]},VALUE:{d:\"将可识别的任何日期、时间或数字格式的字符串转换为数字。\",a:\"将可识别的任何日期、时间或数字格式的字符串转换为数字。\",p:[{name:\"text\",detail:\"包含要转换的值的字符串。\"}]},PROPER:{d:\"将指定字符串中每个单词的首字母转为大写。\",a:\"将指定字符串中每个单词的首字母转为大写。\",p:[{name:\"text\",detail:\"要转换的文本，其中每个单词的首字母都将转为大写，所有其他字母则转为小写。\"}]},CONVERT:{d:\"将数字从一种度量系统转换为另一种度量系统。\",a:\"将数字从一种度量系统转换为另一种度量系统。\",p:[{name:\"number\",detail:\"是以 from_unit 为单位的需要进行转换的数值。\"},{name:\"from_unit\",detail:\"是数值的单位。\"},{name:\"to_unit\",detail:\"是结果的单位。\"}]},SUMX2MY2:{d:\"返回两数组中对应数值的平方差之和。\",a:\"返回两数组中对应数值的平方差之和。\",p:[{name:\"array_x\",detail:\"第一个数组或数值区域。\"},{name:\"array_y\",detail:\"第二个数组或数值区域。\"}]},SUMX2PY2:{d:\"返回两数组中对应数值的平方和之和。\",a:\"返回两数组中对应数值的平方和之和。\",p:[{name:\"array_x\",detail:\"第一个数组或数值区域。\"},{name:\"array_y\",detail:\"第二个数组或数值区域。\"}]},SUMXMY2:{d:\"返回两数组中对应数值之差的平方和。\",a:\"返回两数组中对应数值之差的平方和。\",p:[{name:\"array_x\",detail:\"第一个数组或数值区域。\"},{name:\"array_y\",detail:\"第二个数组或数值区域。\"}]},TRANSPOSE:{d:\"将数组或单元格范围的行列转置。\",a:\"将数组或单元格范围的行列转置。\",p:[{name:\"array\",detail:\"要将其行列互换的数组或范围。\"}]},TREND:{d:\"返回线性趋势值。\",a:\"返回线性趋势值。\",p:[{name:\"known_y\",detail:\"关系表达式 y = mx + b 中已知的 y 值集合。\\n\\n如果 known_y 为二维数组或范围，则 known_x 的维数必须与之相同，或者省略此参数。\\n\\n如果 known_y 为一维数组或范围，known_x 则可代表二维数组或范围中的多个自变量。也就是说，如果 known_y 为单行，则将 known_x 中的每行解释为各自独立的值，类似情况也适用于 known_y 为单列的情况。\"},{name:\"known_x\",detail:\"[可选 - 默认该数组为{1,2,3,...},其大小与 known_y 相同] - 关系表达式 y = mx + b 中已知的可选 x 值集合。\\n\\n如果 known_y 为一维数组或范围，known_x 则可代表二维数组或范围中的多个自变量。也就是说，如果 known_y 为单行，则将 known_x 中的每行解释为各自独立的值，类似情况也适用于 known_y 为单列的情况。\"},{name:\"new_x\",detail:\"[可选 - 默认与 known_x 相同] -  需要函数 TREND 返回对应 y 值的新 x 值。\"},{name:\"const\",detail:\"[可选 - 默认值为TRUE()] - 一个逻辑值，用于指定是否将常量 b 强制设为 0。\\n\\nTRUE() 表示 b 将按正常计算；\\n\\nFALSE() 表示 b 将被设为 0（零），m 将被调整以使 y = mx。\"}]},FREQUENCY:{d:\"计算数值在某个区域内的出现频率，然后返回一个垂直数组。\",a:\"计算数值在某个区域内的出现频率，然后返回一个垂直数组。\",p:[{name:\"data_array\",detail:\"要对其频率进行计数的一组数值或对这组数值的引用。\"},{name:\"bins_array\",detail:\"要将 data_array 中的值插入到的间隔数组或对间隔的引用。\\n\\n为清晰起见，应将类别排序，但如果未排序，FREQUENCY会在内部对这些指定的值进行排序并返回正确结果。\"}]},GROWTH:{d:\"使用现有数据计算预测的指数等比。\",a:\"使用现有数据计算预测的指数等比。\",p:[{name:\"known_y\",detail:\"关系表达式 y = b*m^x 中已知的 y 值集合。\\n\\n如果已知数据_y为二维数组或范围，则已知数据_x的维数必须与之相同，或者省略此参数。\\n\\n如果已知数据_y为一维数组或范围，已知数据_x则可代表二维数组或范围中的多个自变量。也就是说，如果已知数据_y为单行，则将已知数据_x中的每行解释为各自独立的值，类似情况也适用于已知数据_y为单列的情况。\"},{name:\"known_x\",detail:\"[可选 - 默认该数组为{1,2,3,...},其大小与 known_y 相同] - 关系表达式 y = b*m^x 中已知的可选 x 值集合。\\n\\n如果已知数据_y为一维数组或范围，已知数据_x则可代表二维数组或范围中的多个自变量。也就是说，如果已知数据_y为单行，则将已知数据_x中的每行解释为各自独立的值，类似情况也适用于已知数据_y为单列的情况。\"},{name:\"new_x\",detail:\"[可选 - 默认与 known_x 相同] - 需要函数 GROWTH 返回对应 y 值的新 x 值。\"},{name:\"const\",detail:\"[可选 - 默认值为TRUE()] -一个逻辑值，用于指定是否将常量 b 强制设为 1。\\n\\nTRUE() 表示 b 将按正常计算；\\n\\nFALSE() 表示 b 将被设为 1，m 将被调整以使 y = m^x。\"}]},LINEST:{d:\"可通过使用最小二乘法计算与现有数据最佳拟合的直线，来计算某直线的统计值，然后返回描述此直线的数组。\",a:\"可通过使用最小二乘法计算与现有数据最佳拟合的直线，来计算某直线的统计值，然后返回描述此直线的数组。\",p:[{name:\"known_y\",detail:\"关系表达式 y = mx + b 中已知的 y 值集合。\\n\\n如果 known_y 为二维数组或范围，则 known_x 的维数必须与之相同，或者省略此参数。\\n\\n如果 known_y 为一维数组或范围，known_x 则可代表二维数组或范围中的多个自变量。也就是说，如果 known_y 为单行，则将 known_x 中的每行解释为各自独立的值，类似情况也适用于 known_y 为单列的情况。\"},{name:\"known_x\",detail:\"[可选 - 默认该数组为{1,2,3,...},其大小与 known_y 相同] - 关系表达式 y = mx + b 中已知的可选 x 值集合。\\n\\n如果 known_y 为一维数组或范围，known_x 则可代表二维数组或范围中的多个自变量。也就是说，如果 known_y 为单行，则将 known_x 中的每行解释为各自独立的值，类似情况也适用于 known_y 为单列的情况。\"},{name:\"const\",detail:\"[可选 - 默认值为TRUE()] - 一个逻辑值，用于指定是否将常量 b 强制设为 0。\\n\\nTRUE() 表示 b 将按正常计算；\\n\\nFALSE() 表示 b 将被设为 0（零），m 将被调整以使 y = mx。\"},{name:\"stats\",detail:\"[可选 - 默认值为FALSE()] - 一个逻辑值，用于指定是否返回附加回归统计值。\\n\\n如果详细为TRUE，除了对应于每个自变量的一组线性系数和y截距之外，LINEST还返回以下信息：\\n\\n每项系数和截距的标准误差、\\n\\n限定系数（介于0和1之间，1表示完全相关）、\\n\\n因变量值的标准误差、\\n\\nF统计或F观测值，指示所观测到的因变量和自变量变量之间的关系是随机的还是线性的、\\n\\n自由度，用于在参照表中查找F统计值以估算可信度、\\n\\n回归平方和，以及\\n\\n残差平方和。\"}]},LOGEST:{d:\"在回归分析中，计算最符合数据的指数回归拟合曲线，并返回描述该曲线的数值数组。\",a:\"在回归分析中，计算最符合数据的指数回归拟合曲线，并返回描述该曲线的数值数组。\",p:[{name:\"known_y\",detail:\"关系表达式 y = mx + b 中已知的 y 值集合。\\n\\n如果 known_y 为二维数组或范围，则 known_x 的维数必须与之相同，或者省略此参数。\\n\\n如果 known_y 为一维数组或范围，known_x 则可代表二维数组或范围中的多个自变量。也就是说，如果 known_y 为单行，则将 known_x 中的每行解释为各自独立的值，类似情况也适用于 known_y 为单列的情况。\"},{name:\"known_x\",detail:\"[可选 - 默认该数组为{1,2,3,...},其大小与 known_y 相同] - 关系表达式 y = mx + b 中已知的可选 x 值集合。\\n\\n如果 known_y 为一维数组或范围，known_x 则可代表二维数组或范围中的多个自变量。也就是说，如果 known_y 为单行，则将 known_x 中的每行解释为各自独立的值，类似情况也适用于 known_y 为单列的情况。\"},{name:\"const\",detail:\"[可选 - 默认值为TRUE()] - 一个逻辑值，用于指定是否将常量 b 强制设为 0。\\n\\nTRUE() 表示 b 将按正常计算；\\n\\nFALSE() 表示 b 将被设为 0（零），m 将被调整以使 y = mx。\"},{name:\"stats\",detail:\"[可选 - 默认值为FALSE()] - 一个逻辑值，用于指定是否返回附加回归统计值。\\n\\n如果详细为TRUE，则除了为每个自变量和系数 b 返回一组指数值之外，LOGEST 还将返回以下数据：\\n\\n每项指数和系数的标准误差、\\n\\n限定系数（介于 0 和 1 之间，1 表示完全相关）、\\n\\n因变量值的标准误差、\\n\\nF 统计或 F 观测值，指示所观测到的因变量和自变量之间的关系是随机的还是指数的、\\n\\n自由度 - 用于在参照表中查找 F 统计值以估算可信度、\\n\\n回归平方和，以及\\n\\n残差平方和。\"}]},MDETERM:{d:\"返回一个数组的矩阵行列式的值。\",a:\"返回一个数组的矩阵行列式的值。\",p:[{name:\"array\",detail:\"行数和列数相等的数值数组。\"}]},MINVERSE:{d:\"返回数组中存储的矩阵的逆矩阵。\",a:\"返回数组中存储的矩阵的逆矩阵。\",p:[{name:\"array\",detail:\"行数和列数相等的数值数组。\"}]},MMULT:{d:\"返回两个数组的矩阵乘积。结果矩阵的行数与 array1 的行数相同，矩阵的列数与 array2 的列数相同。\",a:\"返回两个数组的矩阵乘积。结果矩阵的行数与 array1 的行数相同，矩阵的列数与 array2 的列数相同。\",p:[{name:\"array1\",detail:\"要进行矩阵乘法运算的第一个矩阵数组。\\n\\narray1 列数必须与 array2 的行数相同\"},{name:\"array2\",detail:\"要进行矩阵乘法运算的第二个矩阵数组。\\n\\narray2 的行数必须与 array1 列数相同\"}]},SUMPRODUCT:{d:\"在给定的几组数组中，将数组间对应的元素相乘，并返回乘积之和。\",a:\"在给定的几组数组中，将数组间对应的元素相乘，并返回乘积之和。\",p:[{name:\"array1\",detail:\"其相应元素需要进行相乘并求和的第一个数组参数。\"},{name:\"array2\",detail:\"[可选] - 其相应元素需要进行相乘并求和的其它数组参数。\"}]},ISFORMULA:{d:\"检查公式是否位于引用的单元格中。\",a:\"检查公式是否位于引用的单元格中。\",p:[{name:\"cell\",detail:\"要检查是否存在公式的单元格。\\n\\n如果 cell 为包含公式的单元格，则 ISFORMULA 将返回 TRUE。如果 cell 为相应单元格范围，则当该范围内的首个单元格包含公式时，系统会返回 TRUE。如果是任何其他值，系统都将返回 FALSE。\"}]},CELL:{d:\"返回有关单元格的格式、位置或内容的信息。\",a:\"返回有关单元格的格式、位置或内容的信息。\",p:[{name:\"info_type\",detail:\"一个文本值，指定要返回的单元格信息的类型。\"},{name:\"reference\",detail:\"需要其相关信息的单元格。\"}]},NA:{d:\"返回错误值 #N/A。\",a:\"返回错误值 #N/A。\",p:[]},ERROR_TYPE:{d:\"返回与其他单元格中的错误值相对应的数字。\",a:\"返回与其他单元格中的错误值相对应的数字。\",p:[{name:\"error_val\",detail:\"用于查找错误号的单元格，虽然您也可以直接提供错误值。\"}]},ISBLANK:{d:\"检查所引用的单元格是否为空。\",a:\"检查所引用的单元格是否为空。\",p:[{name:\"value\",detail:\"对要检查其是否为空的单元格的引用。\\n\\n如果是空单元格，则 TRUE；否则返回 FALSE。\"}]},ISERR:{d:\"检查某个值是否为 #N/A 以外的错误值。\",a:\"检查某个值是否为 #N/A 以外的错误值。\",p:[{name:\"value\",detail:\"要验证其是否为#N/A以外的错误类型的值。\\n\\n如果值是除#N/A之外的任何错误（包括#DIV/0!、#NAME?、#NULL!、#NUM!、#VALUE!和#REF!），ISERR将返回TRUE。\"}]},ISERROR:{d:\"检查某个值是否为错误值。\",a:\"检查某个值是否为错误值。\",p:[{name:\"value\",detail:\"要验证其是否为错误类型的值。\\n\\n只要值是某种错误值（包括#DIV/0!、#N/A、#NAME?、#NULL!、#NUM!、#VALUE!和#REF!），ISERROR就会返回TRUE。\"}]},ISLOGICAL:{d:\"检查某个值是 TRUE 还是 FALSE。\",a:\"检查某个值是 TRUE 还是 FALSE。\",p:[{name:\"value\",detail:\"要验证其为逻辑TRUE还是逻辑FALSE的值。\\n\\n*如果值为TRUE或FALSE，或为指向值为TRUE或FALSE的单元格的引用，ISLOGICAL将返回TRUE。\"}]},ISNA:{d:\"检查某个值是否为错误值 #N/A。\",a:\"检查某个值是否为错误值 #N/A。\",p:[{name:\"value\",detail:\"要与错误值#N/A进行比较的值。\\n\\n*如果值为#N/A或指向包含#N/A的单元格的引用，则ISNA将返回TRUE，否则返回FALSE。\"}]},ISNONTEXT:{d:\"检查某个值是否为非文本。\",a:\"检查某个值是否为非文本。\",p:[{name:\"value\",detail:\"要检查的文本。\\n\\n*如果参数为文本值或指向包含文本的单元格的引用，ISNONTEXT将返回FALSE，否则返回TRUE。\\n\\n当值为指向空单元格的引用时，ISNONTEXT会返回TRUE。\\n\\n当值为空字符串时，ISNONTEXT将返回FALSE，因为空串被视作文本。\"}]},ISNUMBER:{d:\"检查某个值是否为数字。\",a:\"检查某个值是否为数字。\",p:[{name:\"value\",detail:\"要验证其是否为数字的值。\\n\\n*如果参数为数字或指向内容为数字值的单元格的引用，ISNUMBER将返回TRUE，否则返回FALSE。\"}]},ISREF:{d:\"检查某个值是否为有效的单元格引用。\",a:\"检查某个值是否为有效的单元格引用。\",p:[{name:\"value\",detail:\"要验证其是否为单元格引用的值。\\n\\n*如果参数是有效的单元格引用，ISREF将返回TRUE，否则返回FALSE。\"}]},ISTEXT:{d:\"检查某个值是否为文本。\",a:\"检查某个值是否为文本。\",p:[{name:\"value\",detail:\"要验证其是否为文本的值。\\n\\n如果参数为文本值或指向包含文本值的单元格的引用，ISTEXT将返回TRUE，否则返回FALSE。\"}]},TYPE:{d:\"返回数值的类型。\",a:\"返回数值的类型。\",p:[{name:\"value\",detail:\"要确定其类型的数据。\\n\\n数字 返回 1;\\n\\n文本 返回 2;\\n\\n逻辑值 返回 4;\\n\\n错误值 返回 16;\\n\\n数组 返回 64;\"}]},N:{d:\"返回转化为数值后的值。\",a:\"返回转化为数值后的值。\",p:[{name:\"value\",detail:\"要转换为数字的参数。\\n\\n如果值为数字，则返回该数字。\\n\\n如果值为日期，则返回该日期的序列号。\\n\\n如果值为TRUE，则返回1。\\n\\n如果值为FALSE，则返回0。\\n\\n如果值为错误值，则返回错误值。\\n\\n如果值为其他值，则返回0。\"}]},TO_DATE:{d:\"将指定的数字转换为日期。\",a:\"将指定的数字转换为日期。\",p:[{name:\"value\",detail:\"要转换为日期的参数或其单元格引用。\\n\\n如果值为数字或指向内容为数值的单元格的引用，TO_DATE会将值转换为相应的日期并返回，值代表从十二月30日到对应的日期之间的天数，\\n\\n负值表示对应的日期在十二月30日之前，而小数值则代表一天中从午夜算起的时间。\\n如果值不是数字或指向内容为数值的单元格的引用，则TO_DATE将在不做任何修改的情况下返回值。\"}]},TO_PURE_NUMBER:{d:\"将给定的日期/时间、百分比、货币金额或其他格式的数值转换为不带格式的纯数字。\",a:\"将给定的日期/时间、百分比、货币金额或其他格式的数值转换为不带格式的纯数字。\",p:[{name:\"value\",detail:\"要转换为纯数字的参数或其单元格引用。\\n\\n如果值为数字或指向包含数值的单元格的引用，TO_PURE_NUMBER将以不带任何格式与解释的形式返回值。\\n\\n如果值不是数字或指向内容为数值的单元格的引用，则TO_PERCENT将在不做任何修改的情况下返回值。\"}]},TO_TEXT:{d:\"将给定的数字值转换为文本格式。\",a:\"将给定的数字值转换为文本格式。\",p:[{name:\"value\",detail:\"要转换为文本的参数或其单元格引用。\\n\\n如果值为数字或指向包含数值的单元格的引用，TO_TEXT将返回字符串形式的值，并保持现有格式。即原为货币的仍为货币，原为十进制数的仍为十进制数，原为百分比的仍为百分比，原为日期的仍为日期。\\n\\n如果值不是数字或指向内容为数值的单元格的引用，则TO_TEXT将在不做任何修改的情况下返回值。\"}]},TO_DOLLARS:{d:\"将指定的数字转换为美元金额。\",a:\"将指定的数字转换为美元金额。\",p:[{name:\"value\",detail:\"要转换为美元金额的参数或其单元格引用。\\n\\n如果值不是数字或指向内容为数值的单元格的引用，则 TO_DOLLARS 将在不做任何修改的情况下返回值。\"}]},TO_PERCENT:{d:\"将指定的数字转换为百分比。\",a:\"将指定的数字转换为百分比。\",p:[{name:\"value\",detail:\"要转换为百分比的参数或其单元格引用。\\n\\n如果值为数字或指向包含数值的单元格的引用，TO_PERCENT会以1 = 100%为标准，将值转换为百分比。\\n\\n如果值不是数字或指向内容为数值的单元格的引用，则TO_PERCENT将在不做任何修改的情况下返回值。\"}]},DGET:{d:\"使用 SQL 式查询，从列表或数据库的列中提取符合指定条件的单个值。\",a:\"使用 SQL 式查询，从列表或数据库的列中提取符合指定条件的单个值。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DMAX:{d:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的最大数字。\",a:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的最大数字。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DMIN:{d:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的最小数字。\",a:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的最小数字。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DAVERAGE:{d:\"使用 SQL 式查询，对列表或数据库中满足指定条件的记录字段（列）中的数值求平均值。\",a:\"使用 SQL 式查询，对列表或数据库中满足指定条件的记录字段（列）中的数值求平均值。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DCOUNT:{d:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中包含数字的单元格的个数。\",a:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中包含数字的单元格的个数。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DCOUNTA:{d:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的非空单元格的个数。\",a:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的非空单元格的个数。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DPRODUCT:{d:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的数值的乘积。\",a:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的数值的乘积。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DSTDEV:{d:\"使用 SQL 式查询，返回利用列表或数据库中满足指定条件的记录字段（列）中的数字作为一个样本估算出的总体标准偏差。\",a:\"使用 SQL 式查询，返回利用列表或数据库中满足指定条件的记录字段（列）中的数字作为一个样本估算出的总体标准偏差。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DSTDEVP:{d:\"使用 SQL 式查询，返回利用列表或数据库中满足指定条件的记录字段（列）中的数字作为样本总体计算出的总体标准偏差。\",a:\"使用 SQL 式查询，返回利用列表或数据库中满足指定条件的记录字段（列）中的数字作为样本总体计算出的总体标准偏差。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DSUM:{d:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的数字之和。\",a:\"使用 SQL 式查询，返回列表或数据库中满足指定条件的记录字段（列）中的数字之和。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DVAR:{d:\"使用 SQL 式查询，返回利用列表或数据库中满足指定条件的记录字段（列）中的数字作为一个样本估算出的总体方差。\",a:\"使用 SQL 式查询，返回利用列表或数据库中满足指定条件的记录字段（列）中的数字作为一个样本估算出的总体方差。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},DVARP:{d:\"使用 SQL 式查询，通过使用列表或数据库中满足指定条件的记录字段（列）中的数字计算样本总体的样本总体方差。\",a:\"使用 SQL 式查询，通过使用列表或数据库中满足指定条件的记录字段（列）中的数字计算样本总体的样本总体方差。\",p:[{name:\"database\",detail:\"构成列表或数据库的单元格区域，列表的第一行包含每一列的标签。\"},{name:\"field\",detail:\"指定 database 中的哪一列包含要提取和用于计算的值。\\n\\nfield 可以是与 database 第一行中某个列标题对应的文本标签，也可以是指定相关列的数字索引，第一列的索引值为 1。\"},{name:\"criteria\",detail:\"包含所指定条件的单元格区域。计算之前将使用这些条件来过滤 database 中的值。\"}]},AGE_BY_IDCARD:{d:\"根据中国身份证号计算出年龄。支持15位或18位身份证\",a:\"根据身份证号得到年龄。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"},{name:\"截止日期\",detail:\"年龄计算的截止日期或范围，默认为当日。\"}]},SEX_BY_IDCARD:{d:\"根据中国身份证号计算出性别。支持15位或18位身份证\",a:\"根据身份证号得到性别。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"}]},BIRTHDAY_BY_IDCARD:{d:\"根据中国身份证号计算出生日。支持15位或18位身份证\",a:\"根据身份证号得到生日。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"},{name:\"生日格式\",detail:\"日期类型,默认0:[1900/01/01], 1:[1900-01-01], 2:[1900年1月1日]\"}]},PROVINCE_BY_IDCARD:{d:\"根据中国身份证号计算出籍贯的省份。支持15位或18位身份证\",a:\"根据身份证号得到籍贯的省份。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"}]},CITY_BY_IDCARD:{d:\"根据中国身份证号计算出籍贯的城市。支持15位或18位身份证\",a:\"根据身份证号得到籍贯的城市。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"}]},STAR_BY_IDCARD:{d:\"根据中国身份证号计算出星座。支持15位或18位身份证\",a:\"根据身份证号得到星座。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"}]},ANIMAL_BY_IDCARD:{d:\"根据中国身份证号计算出生肖（鼠、牛、虎、兔...）。支持15位或18位身份证\",a:\"根据身份证号得到生肖。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"}]},ISIDCARD:{d:\"验证身份证的格式是否正确。支持15位或18位身份证\",a:\"验证身份证格式正确性。\",p:[{name:\"身份证号\",detail:\"15位或者18位的身份证号或范围。\"}]},DM_TEXT_CUTWORD:{d:\"文本分词。把一连串文字拆分为一系列单独词语\",a:\"中文文本分词。\",p:[{name:\"文本\",detail:\"任意需要分词的文本。\"},{name:\"分词模式\",detail:\"默认为0[精确模式], 1[全模式], 2[搜索引擎模式]。\"}]},DM_TEXT_TFIDF:{d:\"采用tf-idf算法进行关键词提取。从一连串文字中识别关键词\",a:\"tf-idf关键词识别。\",p:[{name:\"文本\",detail:\"任意需要分词的文本。\"},{name:\"关键词个数\",detail:\"算法返回的关键词个数，默认20\"},{name:\"语料库\",detail:\"选择特定领域的语料库，默认0[通用], 1[金融], 2[医疗]\"}]},DM_TEXT_TEXTRANK:{d:\"采用TextRank算法进行关键词提取。从一连串文字中识别关键词\",a:\"TextRank关键词识别。\",p:[{name:\"文本\",detail:\"任意需要分词的文本。\"},{name:\"关键词个数\",detail:\"算法返回的关键词个数，默认20\"},{name:\"语料库\",detail:\"选择特定领域的语料库，默认0[通用], 1[金融], 2[医疗]\"}]},DATA_CN_STOCK_CLOSE:{d:\"根据股票代码和日期，返回A股对应股票收盘价。\",a:\"返回A股对应股票收盘价。\",p:[{name:\"股票代码\",detail:\"6位股票代码，必填项。\"},{name:\"日期\",detail:\"股票的交易日，默认为最新交易日\"},{name:\"复权除权\",detail:\"选择股票的除权复权类型，默认0[前复权], 1[原始价格], 2[后复权]\"}]},DATA_CN_STOCK_OPEN:{d:\"根据股票代码和日期，返回A股对应股票开盘价。\",a:\"返回A股对应股票开盘价。\",p:[{name:\"股票代码\",detail:\"6位股票代码，必填项。\"},{name:\"日期\",detail:\"股票的交易日，默认为最新交易日\"},{name:\"复权除权\",detail:\"选择股票的除权复权类型，默认0[前复权], 1[原始价格], 2[后复权]\"}]},DATA_CN_STOCK_MAX:{d:\"根据股票代码和日期，返回A股对应股票最高价。\",a:\"返回A股对应股票最高价。\",p:[{name:\"股票代码\",detail:\"6位股票代码，必填项。\"},{name:\"日期\",detail:\"股票的交易日，默认为最新交易日\"},{name:\"复权除权\",detail:\"选择股票的除权复权类型，默认0[前复权], 1[原始价格], 2[后复权]\"}]},DATA_CN_STOCK_MIN:{d:\"根据股票代码和日期，返回A股对应股票最低价。\",a:\"返回A股对应股票最低价。\",p:[{name:\"股票代码\",detail:\"6位股票代码，必填项。\"},{name:\"日期\",detail:\"股票的交易日，默认为最新交易日\"},{name:\"复权除权\",detail:\"选择股票的除权复权类型，默认0[前复权], 1[原始价格], 2[后复权]\"}]},DATA_CN_STOCK_VOLUMN:{d:\"根据股票代码和日期，返回A股对应股票成交量。\",a:\"返回A股对应股票成交量。\",p:[{name:\"股票代码\",detail:\"6位股票代码，必填项。\"},{name:\"日期\",detail:\"股票的交易日，默认为最新交易日\"},{name:\"复权除权\",detail:\"选择股票的除权复权类型，默认0[前复权], 1[原始价格], 2[后复权]\"}]},DATA_CN_STOCK_AMOUNT:{d:\"根据股票代码和日期，返回A股对应股票成交额。\",a:\"返回A股对应股票成交额。\",p:[{name:\"股票代码\",detail:\"6位股票代码，必填项。\"},{name:\"日期\",detail:\"股票的交易日，默认为最新交易日\"},{name:\"复权除权\",detail:\"选择股票的除权复权类型，默认0[前复权], 1[原始价格], 2[后复权]\"}]},ISDATE:{d:\"验证日期的格式是否正确。支持多种日期格式\",a:\"验证日期格式正确性。\",p:[{name:\"日期\",detail:\"日期值，例如1990/01/01, 1990年1月1日等。\"}]},LINESPLINES:{d:\"生成嵌入在单元格内的折线图sparklines，用于描述数据的连续走势\",a:\"生成单元格折线图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"线条颜色\",detail:\"线图的线条颜色，可以是否个范围A1、色表索引数值或者具体颜色值，设置为0或false则不显示，支持regx、rgb、rgba等。默认#2ec7c9\"},{name:\"线条粗细\",detail:\"折线图线段粗细，默认为1px\"},{name:\"辅助线\",detail:\"一条横线，可以是min、max、avg、median、范围或自定义数值，默认0无\"},{name:\"辅助线颜色\",detail:\"辅助线的颜色设置，同线条颜色配置，默认#000\"},{name:\"最大值标识\",detail:\"标识线图最大值，同线条颜色配置，默认0不显示\"},{name:\"最小值标识\",detail:\"标识线图最小值，同线条颜色配置，默认0不显示\"},{name:\"标识大小\",detail:\"最大值和最小值的标识大小设置，默认为1.5\"}]},AREASPLINES:{d:\"生成嵌入在单元格内的面积图sparklines，一般用于描述数据的连续累积值走势\",a:\"生成单元格面积图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"线条颜色\",detail:\"线图的线条颜色，可以是否个范围A1、色表索引数值或者具体颜色值，设置为0或false则不显示，支持regx、rgb、rgba等。默认#2ec7c9\"},{name:\"填充颜色\",detail:\"形成面积图，同线条颜色配置，默认0不显示\"},{name:\"线条粗细\",detail:\"折线图线段粗细，默认为1px\"},{name:\"辅助线\",detail:\"一条横线，可以是min、max、avg、median、范围或自定义数值，默认0无\"},{name:\"辅助线颜色\",detail:\"辅助线的颜色设置，同线条颜色配置，默认#000\"}]},COLUMNSPLINES:{d:\"生成嵌入在单元格内的垂直柱状图sparklines，一般用于描述离散数据之间的大小情况\",a:\"生成单元格垂直柱状图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"柱条间隔\",detail:\"柱条之间的间隔距离，默认为1\"},{name:\"柱条颜色\",detail:\"线图的线条颜色，可以是否个范围A1、色表索引数值或者具体颜色值，设置为0或false则不显示，支持regx、rgb、rgba等。默认#fc5c5c\"},{name:\"负向柱条颜色\",detail:\"负向柱条颜色设置，代表负值的颜色，同柱条颜色配置，默认#97b552\"},{name:\"最大值\",detail:\"柱图最大值，用于规范柱图长度，默认为自动计算false、auto、null\"},{name:\"色板\",detail:\"调色板可以单独设置每个柱条的颜色，可设置多个，支持两种格式：1颜色例如#000，代表第一个柱的颜色是黑色；2数值范围:颜色，例如-2:#000表示数值为-2的柱为黑色，0:5:#000表示数值0-5的柱为黑色，默认为空\"}]},STACKCOLUMNSPLINES:{d:\"生成嵌入在单元格内的累积垂直柱状图sparklines，一般用于描述离散数据多个维度的数值大小\",a:\"生成单元格累积垂直柱状图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"按列堆积\",detail:\"如果需要按行堆积则本项设为false或0，默认为是1\"},{name:\"柱条间隔\",detail:\"柱条之间的间隔距离，默认为1\"},{name:\"最大值\",detail:\"累积柱图最大值，用于规范柱图长度，默认为自动计算false、auto、null\"},{name:\"累积色板\",detail:\"调色板可以单独设置每个维度的柱条颜色，可设置为A1:A10等范围，默认为#2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BARSPLINES:{d:\"生成嵌入在单元格内的横向条形图sparklines，一般用于描述离散数据之间的大小情况\",a:\"生成单元格横向条形图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"柱条间隔\",detail:\"柱条之间的间隔距离，默认为1\"},{name:\"柱条颜色\",detail:\"线图的线条颜色，可以是否个范围A1、色表索引数值或者具体颜色值，设置为0或false则不显示，支持regx、rgb、rgba等。默认#fc5c5c\"},{name:\"负向柱条颜色\",detail:\"负向柱条颜色设置，代表负值的颜色，同柱条颜色配置，默认#97b552\"},{name:\"最大值\",detail:\"柱图最大值，用于规范柱图长度，默认为自动计算false、auto、null\"},{name:\"色板\",detail:\"调色板可以单独设置每个柱条的颜色，可设置多个，支持两种格式：1颜色例如#000，代表第一个柱的颜色是黑色；2数值范围:颜色，例如-2:#000表示数值为-2的柱为黑色，0:5:#000表示数值0-5的柱为黑色，默认为空\"}]},STACKBARSPLINES:{d:\"生成嵌入在单元格内的累积横向条形图sparklines，一般用于描述离散数据多个维度的数值大小\",a:\"生成单元格累积横向条形图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"按列堆积\",detail:\"如果需要按行堆积则本项设为false或0，默认为是1\"},{name:\"柱条间隔\",detail:\"柱条之间的间隔距离，默认为1\"},{name:\"最大值\",detail:\"累积柱图最大值，用于规范柱图长度，默认为自动计算false、auto、null\"},{name:\"累积色板\",detail:\"调色板可以单独设置每个维度的柱条颜色，可设置为A1:A10等范围，默认为#2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},DISCRETESPLINES:{d:\"生成嵌入在单元格内的离散图sparklines，一般用于描述离散数据走势\",a:\"生成单元格离散图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"分割阈值\",detail:\"离散图柱形颜色的区分，例如：该值为0，则大于0为蓝色，小于0为红色，默认为0\"},{name:\"阈值以上颜色\",detail:\"线图的线条颜色，可以是否个范围A1、色表索引数值或者具体颜色值，设置为0或false则不显示，支持regx、rgb、rgba等。默认#2ec7c9\"},{name:\"阈值以下颜色\",detail:\"阈值以下柱条颜色设置，同阈值以上颜色，默认#fc5c5c\"}]},TRISTATESPLINES:{d:\"生成嵌入在单元格内的三态图sparklines，一般用于描述三种态势的走势例如胜负平\",a:\"生成单元格三态图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"柱条间隔\",detail:\"柱条之间的间隔距离，默认为1\"},{name:\"柱条颜色\",detail:\"线图的线条颜色，可以是否个范围A1、色表索引数值或者具体颜色值，设置为0或false则不显示，支持regx、rgb、rgba等。默认#fc5c5c\"},{name:\"负向柱条颜色\",detail:\"负向柱条颜色设置，代表负值的颜色，同柱条颜色配置，默认#97b552\"},{name:\"零值柱条颜色\",detail:\"零值柱条颜色设置，代表0值颜色，同柱条颜色配置，默认#999\"},{name:\"色板\",detail:\"调色板可以单独设置每个柱条的颜色，可设置多个，支持两种格式：1颜色例如#000，代表第一个柱的颜色是黑色；2数值范围:颜色，例如-2:#000表示数值为-2的柱为黑色，0-5:#000表示数值0-5的柱为黑色，默认为空\"}]},PIESPLINES:{d:\"生成嵌入在单元格内的饼图sparklines，一般用于描述数据占比\",a:\"生成单元格饼图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"旋转角度\",detail:\"饼图的旋转角度，默认为0\"},{name:\"饼图边框\",detail:\"饼图边框大小，默认为无0\"},{name:\"边框颜色\",detail:\"饼图边框颜色，默认为#000\"},{name:\"饼图色板\",detail:\"调色板可以设置切片的颜色，可设置为A1:A10等范围，默认为#2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BOXSPLINES:{d:\"生成嵌入在单元格内的箱线图sparklines，一般用于描述数据集的统计分布\",a:\"生成单元格箱线图\",p:[{name:\"数据范围\",detail:\"数据范围，数值才能被有效计算，例如A1:A20， {1,2,3,4,5}等。\"},{name:\"离群点比例\",detail:\"离群点的阈值范围，如果为0或false则不显示，默认为1.5倍\"},{name:\"目标点值\",detail:\"箱线图上的目标值设置，默认为false不显示\"},{name:\"数据点大小\",detail:\"目标点和离群点的半径大小设置，默认为1.5\"}]},BULLETSPLINES:{d:\"生成嵌入在单元格内的子弹图sparklines，一般用于描述任务达成率\",a:\"生成单元格子弹图\",p:[{name:\"目标\",detail:\"达成的目标值，数值才能被有效计算，例如A1， 100等。\"},{name:\"实际完成\",detail:\"目前完成值，数值才能被有效计算，例如A1， 100等。\"},{name:\"对比值\",detail:\"对比值，例如超额、最低、获奖底线等，数值才能被有效计算，例如A1， 100等。可以设置最多9个对比值\"}]},COMPOSESPLINES:{d:\"支持多个类型的图画在同一个单元格,每个参数代表一个sparklines图\",a:\"组合sparklines图到一个单元格\",p:[{name:\"图设置\",detail:\"sparklines图设置，例如A1:A20， 一个完成的饼图、线图设置等。\"}]},SORT:{d:\"返回数组中元素的排序数组。返回的数组与提供的数组参数形状相同。\",a:\"返回数组中元素的排序数组。返回的数组与提供的数组参数形状相同。\",p:[{name:\"array\",detail:\"要排序的范围或数组。\"},{name:\"sort_index\",detail:\"[可选] - 表示要排序的行或列的数字。（默认row1/col1）\"},{name:\"sort_order\",detail:\"[可选] - 表示所需排序顺序的数字；1表示升序（默认），-1表示降序。\"},{name:\"by_col\",detail:\"[可选] - 表示所需排序方向的逻辑值；按行排序为FALSE()（默认），按列排序为TRUE()。\"}]},FILTER:{d:\"基于一个布尔（真/假）数组过滤一个数组。\",a:\"基于一个布尔（真/假）数组过滤一个数组。\",p:[{name:\"array\",detail:\"要筛选的数组或范围。\"},{name:\"include\",detail:\"布尔数组，其高度或宽度与数组相同\"},{name:\"if_empty\",detail:\"[可选] - 如果包含数组中的所有值都为空(filter不返回任何值)，则返回的值。\"}]},UNIQUE:{d:\"返回列表或区域中的唯一值的列表。\",a:\"返回列表或区域中的唯一值的列表。\",p:[{name:\"array\",detail:\"从其返回唯一值的数组或区域。\"},{name:\"by_col\",detail:\"[可选] - 逻辑值，指示如何比较；按行 = FALSE() 或省略；按列 = TRUE()。\"},{name:\"occurs_once\",detail:\"[可选] - 逻辑值，仅返回唯一值中出现一次 = TRUE()；包括所有唯一值 = FALSE() 或省略。\"}]},RANDARRAY:{d:\"返回 0 到 1 之间的随机数字数组。\",a:\"返回 0 到 1 之间的随机数字数组。\",p:[{name:\"rows\",detail:\"[可选] - 要返回的行数。\"},{name:\"cols\",detail:\"[可选] - 要返回的列数。\"}]},SEQUENCE:{d:\"生成数字序列的列表。\",a:\"生成数字序列的列表。\",p:[{name:\"rows\",detail:\"要返回的行数。\"},{name:\"cols\",detail:\"[可选] - 要返回的列数。\"},{name:\"start\",detail:\"[可选] - 序列中的第一个数字。\"},{name:\"step\",detail:\"[可选] - 序列中每个序列值的增量。\"}]},EVALUATE:{d:\"对以文字表示的公式或者表达式求值，并返回结果。\",a:\"根据文字公式或者表达式求值。\",p:[{name:\"公式\",detail:\"公式或表达式\"}]},REMOTE:{d:\"Calls a function on a remote server\",a:\"Calls a function on a remote back end server/API.\",p:[{name:\"remote_expression\",detail:\"Formula\"}]}},toolbar:{undo:\"撤销\",redo:\"重做\",paintFormat:\"格式刷\",currencyFormat:\"货币格式\",percentageFormat:\"百分比格式\",numberDecrease:\"减少小数位数\",numberIncrease:\"增加小数位数\",moreFormats:\"更多格式\",font:\"字体\",fontSize:\"字号大小\",bold:\"粗体 (Ctrl+B)\",italic:\"斜体 (Ctrl+I)\",strikethrough:\"删除线 (Alt+Shift+5)\",underline:\"下划线\",textColor:\"文本颜色\",chooseColor:\"颜色选择\",resetColor:\"重置颜色\",customColor:\"自定义\",alternatingColors:\"交替颜色\",confirmColor:\"确定颜色\",cancelColor:\"取消\",collapse:\"收起\",fillColor:\"单元格颜色\",border:\"边框\",borderStyle:\"边框类型\",mergeCell:\"合并单元格\",chooseMergeType:\"选择合并类型\",horizontalAlign:\"水平对齐\",verticalAlign:\"垂直对齐\",alignment:\"对齐方式\",textWrap:\"文本换行\",textWrapMode:\"换行方式\",textRotate:\"文本旋转\",textRotateMode:\"旋转方式\",freezeTopRow:\"冻结第一行\",sortAndFilter:\"排序和筛选\",findAndReplace:\"查找替换\",sum:\"求和\",autoSum:\"自动求和\",moreFunction:\"更多函数\",conditionalFormat:\"条件格式\",postil:\"批注\",pivotTable:\"数据透视表\",chart:\"图表\",screenshot:\"截图\",splitColumn:\"分列\",insertImage:\"插入图片\",exportXlsx:\"导出Xlsx\",insertLink:\"插入链接\",dataVerification:\"数据验证\",protection:\"保护工作表内容\",clearText:\"清除颜色选择\",noColorSelectedText:\"没有颜色被选择\",toolMore:\"更多\",toolLess:\"少于\",toolClose:\"收起\",toolMoreTip:\"更多功能\",moreOptions:\"更多选项\",cellFormat:\"设置单元格格式\",print:\"打印\"},alternatingColors:{applyRange:\"应用范围\",selectRange:\"选择应用范围\",header:\"页眉\",footer:\"页脚\",errorInfo:\"不能对多重选择区域执行此操作，请选择单个区域，然后再试\",textTitle:\"格式样式\",custom:\"自定义\",close:\"关闭\",selectionTextColor:\"选择文本颜色\",selectionCellColor:\"选择单元格颜色\",removeColor:\"移除交替颜色\",colorShow:\"颜色\",currentColor:\"当前颜色\",tipSelectRange:\"请选择交替颜色应用范围\",errorNoRange:\"您选择的应用范围不是选区！\",errorExistColors:\"您选择的应用范围已存在交替颜色且不属于你要编辑的应用范围！\"},button:{confirm:\"确定\",cancel:\"取消\",close:\"关闭\",update:\"更新\",delete:\"删除\",insert:\"新建\",prevPage:\"上一页\",nextPage:\"下一页\",total:\"总共：\"},paint:{start:\"格式刷开启\",end:\"ESC键退出\",tipSelectRange:\"请选择需要复制格式的区域\",tipNotMulti:\"无法对多重选择区域执行此操作\"},format:{moreCurrency:\"更多货币格式\",moreDateTime:\"更多日期与时间格式\",moreNumber:\"更多数字格式\",titleCurrency:\"货币格式\",decimalPlaces:\"小数位数\",titleDateTime:\"日期与时间格式\",titleNumber:\"数字格式\"},info:{detailUpdate:\"新打开\",detailSave:\"已恢复本地缓存\",row:\"行\",column:\"列\",loading:\"渲染中···\",copy:\"副本\",return:\"返回\",rename:\"重命名\",tips:\"表格重命名\",noName:\"无标题的电子表格\",wait:\"待更新\",add:\"添加\",addLast:\"在底部添加\",backTop:\"回到顶部\",pageInfo:\"共${total}条，${totalPage}页，当前已显示${currentPage}页\",nextPage:\"下一页\",tipInputNumber:\"请输入数字\",tipInputNumberLimit:\"增加范围限制在1-100\",tipRowHeightLimit:\"行高必须在0 ~ 545之间\",tipColumnWidthLimit:\"列宽必须在0 ~ 2038之间\",pageInfoFull:\"共${total}条，${totalPage}页，已显示全部数据\"},currencyDetail:{RMB:\"人民币\",USdollar:\"美元\",EUR:\"欧元\",GBP:\"英镑\",HK:\"港元\",JPY:\"日元\",AlbanianLek:\"阿尔巴尼亚列克\",AlgerianDinar:\"阿尔及利亚第纳尔\",Afghani:\"阿富汗尼\",ArgentinePeso:\"阿根廷比索\",UnitedArabEmiratesDirham:\"阿拉伯联合酋长国迪拉姆\",ArubanFlorin:\"阿鲁巴弗罗林\",OmaniRial:\"阿曼里亚尔\",Azerbaijanimanat:\"阿塞拜疆马纳特\",EgyptianPound:\"埃及镑\",EthiopianBirr:\"埃塞俄比亚比尔\",AngolaKwanza:\"安哥拉宽扎\",AustralianDollar:\"澳大利亚元\",Patacas:\"澳门元\",BarbadosDollar:\"巴巴多斯元\",PapuaNewGuineaKina:\"巴布亚新几内亚基那\",BahamianDollar:\"巴哈马元\",PakistanRupee:\"巴基斯坦卢比\",ParaguayanGuarani:\"巴拉圭瓜拉尼\",BahrainiDinar:\"巴林第纳尔\",PanamanianBalboa:\"巴拿马巴波亚\",Brazilianreal:\"巴西里亚伊\",Belarusianruble:\"白俄罗斯卢布\",BermudianDollar:\"百慕大元\",BulgarianLev:\"保加利亚列弗\",IcelandKrona:\"冰岛克朗\",BosniaHerzegovinaConvertibleMark:\"波黑可兑换马克\",PolishZloty:\"波兰兹罗提\",Boliviano:\"玻利维亚诺\",BelizeDollar:\"伯利兹元\",BotswanaPula:\"博茨瓦纳普拉\",NotDannuzhamu:\"不丹努扎姆\",BurundiFranc:\"布隆迪法郎\",NorthKoreanWon:\"朝鲜圆\",DanishKrone:\"丹麦克朗\",EastCaribbeanDollar:\"东加勒比元\",DominicaPeso:\"多米尼加比索\",RussianRuble:\"俄国卢布\",EritreanNakfa:\"厄立特里亚纳克法\",CFAfranc:\"非洲金融共同体法郎\",PhilippinePeso:\"菲律宾比索\",FijiDollar:\"斐济元\",CapeVerdeEscudo:\"佛得角埃斯库多\",FalklandIslandsPound:\"福克兰群岛镑\",GambianDalasi:\"冈比亚达拉西\",Congolesefranc:\"刚果法郎\",ColombianPeso:\"哥伦比亚比索\",CostaRicanColon:\"哥斯达黎加科朗\",CubanPeso:\"古巴比索\",Cubanconvertiblepeso:\"古巴可兑换比索\",GuyanaDollar:\"圭亚那元\",KazakhstanTenge:\"哈萨克斯坦坚戈\",Haitiangourde:\"海地古德\",won:\"韩元\",NetherlandsAntillesGuilder:\"荷属安的列斯盾\",Honduraslempiras:\"洪都拉斯拉伦皮拉\",DjiboutiFranc:\"吉布提法郎\",KyrgyzstanSom:\"吉尔吉斯斯坦索姆\",GuineaFranc:\"几内亚法郎\",CanadianDollar:\"加拿大元\",GhanaianCedi:\"加纳塞地\",Cambodianriel:\"柬埔寨瑞尔\",CzechKoruna:\"捷克克朗\",ZimbabweDollar:\"津巴布韦元\",QatariRiyal:\"卡塔尔里亚尔\",CaymanIslandsDollar:\"开曼群岛元\",Comorianfranc:\"科摩罗法郎\",KuwaitiDinar:\"科威特第纳尔\",CroatianKuna:\"克罗地亚库纳\",KenyanShilling:\"肯尼亚先令\",LesothoLoti:\"莱索托洛蒂\",LaoKip:\"老挝基普\",LebanesePound:\"黎巴嫩镑\",Lithuanianlitas:\"立陶宛立特\",LibyanDinar:\"利比亚第纳尔\",LiberianDollar:\"利比亚元\",RwandaFranc:\"卢旺达法郎\",RomanianLeu:\"罗马尼亚列伊\",MalagasyAriary:\"马达加斯加阿里亚里\",MaldivianRufiyaa:\"马尔代夫拉菲亚\",MalawiKwacha:\"马拉维克瓦查\",MalaysianRinggit:\"马来西亚林吉特\",MacedoniawearingDinar:\"马其顿戴第纳尔\",MauritiusRupee:\"毛里求斯卢比\",MauritanianOuguiya:\"毛里塔尼亚乌吉亚\",MongolianTugrik:\"蒙古图格里克\",BangladeshiTaka:\"孟加拉塔卡\",PeruvianNuevoSol:\"秘鲁新索尔\",MyanmarKyat:\"缅甸开亚特\",MoldovanLeu:\"摩尔多瓦列伊\",MoroccanDirham:\"摩洛哥迪拉姆\",MozambiqueMetical:\"莫桑比克梅蒂卡尔\",MexicanPeso:\"墨西哥比索\",NamibianDollar:\"纳米比亚元\",SouthAfricanRand:\"南非兰特\",SouthSudanesePound:\"南苏丹镑\",NicaraguaCordoba:\"尼加拉瓜科多巴\",NepaleseRupee:\"尼泊尔卢比\",NigerianNaira:\"尼日利亚奈拉\",NorwegianKrone:\"挪威克朗\",GeorgianLari:\"乔治亚拉瑞\",RMBOffshore:\"人民币（离岸）\",SwedishKrona:\"瑞典克朗\",SwissFranc:\"瑞士法郎\",SerbianDinar:\"塞尔维亚第纳尔\",SierraLeone:\"塞拉利昂利昂\",SeychellesRupee:\"塞舌尔卢比\",SaudiRiyal:\"沙特里亚尔\",SaoTomeDobra:\"圣多美多布拉\",SaintHelenapound:\"圣赫勒拿群岛磅\",SriLankaRupee:\"斯里兰卡卢比\",SwazilandLilangeni:\"斯威士兰里兰吉尼\",SudanesePound:\"苏丹镑\",Surinamesedollar:\"苏里南元\",SolomonIslandsDollar:\"所罗门群岛元\",SomaliShilling:\"索马里先令\",TajikistanSomoni:\"塔吉克斯坦索莫尼\",PacificFranc:\"太平洋法郎\",ThaiBaht:\"泰国铢\",TanzanianShilling:\"坦桑尼亚先令\",TonganPaanga:\"汤加潘加\",TrinidadandTobagoDollar:\"特立尼达和多巴哥元\",TunisianDinar:\"突尼斯第纳尔\",TurkishLira:\"土耳其里拉\",VanuatuVatu:\"瓦努阿图瓦图\",GuatemalanQuetzal:\"危地马拉格查尔\",CommissionBolivar:\"委内瑞拉博利瓦\",BruneiDollar:\"文莱元\",UgandanShilling:\"乌干达先令\",UkrainianHryvnia:\"乌克兰格里夫尼亚\",UruguayanPeso:\"乌拉圭比索\",Uzbekistansom:\"乌兹别克斯坦苏姆\",WesternSamoaTala:\"西萨摩亚塔拉\",SingaporeDollar:\"新加坡元\",NT:\"新台币\",NewZealandDollar:\"新西兰元\",HungarianForint:\"匈牙利福林\",SyrianPound:\"叙利亚镑\",JamaicanDollar:\"牙买加元\",ArmenianDram:\"亚美尼亚德拉姆\",YemeniRial:\"也门里亚尔\",IraqiDinar:\"伊拉克第纳尔\",IranianRial:\"伊朗里亚尔\",NewIsraeliShekel:\"以色列新谢克尔\",IndianRupee:\"印度卢比\",IndonesianRupiah:\"印度尼西亚卢比\",JordanianDinar:\"约旦第纳尔\",VND:\"越南盾\",ZambianKwacha:\"赞比亚克瓦查\",GibraltarPound:\"直布罗陀镑\",ChileanPeso:\"智利比索\",CFAFrancBEAC:\"中非金融合作法郎\"},defaultFmt:[{text:\"自动\",value:\"General\",example:\"\"},{text:\"纯文本\",value:\"@\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:\"数字\",value:\"##0.00\",example:\"1000.12\"},{text:\"百分比\",value:\"#0.00%\",example:\"12.21%\"},{text:\"科学计数\",value:\"0.00E+00\",example:\"1.01E+5\"},{text:\"\",value:\"split\",example:\"\"},{text:\"会计\",value:\"¥(0.00)\",example:\"¥(1200.09)\"},{text:\"万元\",value:\"w\",example:\"1亿2000万2500\"},{text:\"货币\",value:\"¥0.00\",example:\"¥1200.09\"},{text:\"万元2位小数\",value:\"w0.00\",example:\"2万2500.55\"},{text:\"\",value:\"split\",example:\"\"},{text:\"日期\",value:\"yyyy-MM-dd\",example:\"2017-11-29\"},{text:\"时间\",value:\"hh:mm AM/PM\",example:\"3:00 PM\"},{text:\"时间24H\",value:\"hh:mm\",example:\"15:00\"},{text:\"日期时间\",value:\"yyyy-MM-dd hh:mm AM/PM\",example:\"2017-11-29 3:00 PM\"},{text:\"日期时间24H\",value:\"yyyy-MM-dd hh:mm\",example:\"2017-11-29 15:00\"},{text:\"\",value:\"split\",example:\"\"},{text:\"自定义格式\",value:\"fmtOtherSelf\",example:\"more\"}],dateFmtList:[{name:\"1930-08-05\",value:\"yyyy-MM-dd\"},{name:\"1930/8/5\",value:\"yyyy/MM/dd\"},{name:\"1930年8月5日\",value:'yyyy\"年\"M\"月\"d\"日\"'},{name:\"08-05\",value:\"MM-dd\"},{name:\"8-5\",value:\"M-d\"},{name:\"8月5日\",value:'M\"月\"d\"日\"'},{name:\"13:30:30\",value:\"h:mm:ss\"},{name:\"13:30\",value:\"h:mm\"},{name:\"下午01:30\",value:\"上午/下午 hh:mm\"},{name:\"下午1:30\",value:\"上午/下午 h:mm\"},{name:\"下午1:30:30\",value:\"上午/下午 h:mm:ss\"},{name:\"08-05 下午01:30\",value:\"MM-dd 上午/下午 hh:mm\"}],fontFamily:{MicrosoftYaHei:\"Microsoft YaHei\"},fontarray:[\"Times New Roman\",\"Arial\",\"Tahoma\",\"Verdana\",\"微软雅黑\",\"宋体\",\"黑体\",\"楷体\",\"仿宋\",\"新宋体\",\"华文新魏\",\"华文行楷\",\"华文隶书\"],fontjson:{\"times new roman\":0,arial:1,tahoma:2,verdana:3,\"微软雅黑\":4,\"microsoft yahei\":4,\"宋体\":5,simsun:5,\"黑体\":6,simhei:6,\"楷体\":7,kaiti:7,\"仿宋\":8,fangsong:8,\"新宋体\":9,nsimsun:9,\"华文新魏\":10,stxinwei:10,\"华文行楷\":11,stxingkai:11,\"华文隶书\":12,stliti:12},border:{borderTop:\"上框线\",borderBottom:\"下框线\",borderLeft:\"左框线\",borderRight:\"右框线\",borderNone:\"无\",borderAll:\"所有\",borderOutside:\"外侧\",borderInside:\"内侧\",borderHorizontal:\"内侧横线\",borderVertical:\"内侧竖线\",borderColor:\"边框颜色\",borderSize:\"边框粗细\"},merge:{mergeAll:\"全部合并\",mergeV:\"垂直合并\",mergeH:\"水平合并\",mergeCancel:\"取消合并\",overlappingError:\"不能合并重叠区域\",partiallyError:\"无法对部分合并单元格执行此操作\"},align:{left:\"左对齐\",center:\"中间对齐\",right:\"右对齐\",top:\"顶部对齐\",middle:\"居中对齐\",bottom:\"底部对齐\"},textWrap:{overflow:\"溢出\",wrap:\"自动换行\",clip:\"截断\"},rotation:{none:\"无旋转\",angleup:\"向上倾斜\",angledown:\"向下倾斜\",vertical:\"竖排文字\",rotationUp:\"向上90°\",rotationDown:\"向下90°\"},freezen:{default:\"冻结第一行\",freezenRow:\"冻结第一行\",freezenColumn:\"冻结第A列\",freezenRC:\"冻结第一行第A列\",freezenRowRange:\"冻结行到选区\",freezenColumnRange:\"冻结列到选区\",freezenRCRange:\"冻结行列到选区\",freezenCancel:\"取消冻结\",noSeletionError:\"没有选区\",rangeRCOverErrorTitle:\"冻结提醒\",rangeRCOverError:\"冻结窗格超过可见范围，会导致无法正常操作，请重新设置冻结区域。\"},sort:{asc:\"升序\",desc:\"降序\",custom:\"自定义排序\",hasTitle:\"数据具有标题行\",sortBy:\"排序依据\",addOthers:\"添加其他排序列\",close:\"关闭\",confirm:\"排序\",columnOperation:\"列\",secondaryTitle:\"次要排序\",sortTitle:\"排序范围\",sortRangeTitle:\"排序范围从\",sortRangeTitleTo:\"到\",noRangeError:\"不能对多重选择区域执行此操作，请选择单个区域，然后再试\",mergeError:\"选区有合并单元格，无法执行此操作！\",columnSortMergeError:\"列排序会扩展至整个表格选区，选区有合并单元格，无法执行此操作，请选择功能栏排序功能！\"},filter:{filter:\"筛选\",clearFilter:\"清除筛选\",sortByAsc:\"以A-Z升序排列\",sortByDesc:\"以Z-A降序排列\",filterByColor:\"按颜色筛选\",filterByCondition:\"按条件过滤\",filterByValues:\"按值过滤\",filiterInputNone:\"无\",filiterInputTip:\"输入筛选值\",filiterRangeStart:\"从\",filiterRangeStartTip:\"范围开始\",filiterRangeEnd:\"到\",filiterRangeEndTip:\"范围结束\",filterValueByAllBtn:\"全选\",filterValueByClearBtn:\"清除\",filterValueByInverseBtn:\"反选\",filterValueByTip:\"按照值进行筛选\",filterConform:\"确 认\",filterCancel:\"取 消\",conditionNone:\"无\",conditionCellIsNull:\"单元格为空\",conditionCellNotNull:\"单元格有数据\",conditionCellTextContain:\"文本包含\",conditionCellTextNotContain:\"文本不包含\",conditionCellTextStart:\"文本开头为\",conditionCellTextEnd:\"文本结尾为\",conditionCellTextEqual:\"文本等于\",conditionCellDateEqual:\"日期等于\",conditionCellDateBefore:\"日期早于\",conditionCellDateAfter:\"日期晚于\",conditionCellGreater:\"大于\",conditionCellGreaterEqual:\"大于等于\",conditionCellLess:\"小于\",conditionCellLessEqual:\"小于等于\",conditionCellEqual:\"等于\",conditionCellNotEqual:\"不等于\",conditionCellBetween:\"介于\",conditionCellNotBetween:\"不在其中\",filiterMoreDataTip:\"数据量大！请稍后\",filiterMonthText:\"月\",filiterYearText:\"年\",filiterByColorTip:\"按单元格颜色筛选\",filiterByTextColorTip:\"按单元格字体颜色筛选\",filterContainerOneColorTip:\"本列仅包含一种颜色\",filterDateFormatTip:\"日期格式\",valueBlank:\"(空白)\",mergeError:\"筛选选区有合并单元格，无法执行此操作！\"},rightclick:{copy:\"复制\",copyAs:\"复制为\",paste:\"粘贴\",insert:\"插入\",delete:\"删除\",deleteCell:\"删除单元格\",deleteSelected:\"删除选中\",hide:\"隐藏\",hideSelected:\"隐藏选中\",showHide:\"显示隐藏\",to:\"向\",left:\"左\",right:\"右\",top:\"上\",bottom:\"下\",moveLeft:\"左移\",moveUp:\"上移\",add:\"增加\",row:\"行\",column:\"列\",width:\"宽\",height:\"高\",number:\"数字\",confirm:\"确认\",orderAZ:\"A-Z顺序排列\",orderZA:\"Z-A降序排列\",clearContent:\"清除内容\",matrix:\"矩阵操作选区\",sortSelection:\"排序选区\",filterSelection:\"筛选选区\",chartGeneration:\"图表生成\",firstLineTitle:\"首行为标题\",untitled:\"无标题\",array1:\"一维数组\",array2:\"二维数组\",array3:\"多维数组\",diagonal:\"对角线\",antiDiagonal:\"反对角线\",diagonalOffset:\"对角偏移\",offset:\"偏移量\",boolean:\"布尔值\",flip:\"翻转\",upAndDown:\"上下\",leftAndRight:\"左右\",clockwise:\"顺时针\",counterclockwise:\"逆时针\",transpose:\"转置\",matrixCalculation:\"矩阵计算\",plus:\"加\",minus:\"减\",multiply:\"乘\",divided:\"除\",power:\"次方\",root:\"次方根\",log:\"log\",delete0:\"删除两端0值\",removeDuplicate:\"删除重复值\",byRow:\"按行\",byCol:\"按列\",generateNewMatrix:\"生成新矩阵\"},comment:{insert:\"新建批注\",edit:\"编辑批注\",delete:\"删除\",showOne:\"显示/隐藏批注\",showAll:\"显示/隐藏所有批注\"},screenshot:{screenshotTipNoSelection:\"请框选需要截图的范围\",screenshotTipTitle:\"提示！\",screenshotTipHasMerge:\"无法对合并单元格执行此操作\",screenshotTipHasMulti:\"无法对多重选择区域执行此操作\",screenshotTipSuccess:\"截取成功\",screenshotImageName:\"截图\",downLoadClose:\"关闭\",downLoadCopy:\"复制到剪切板\",downLoadBtn:\"下载\",browserNotTip:\"下载功能IE浏览器不支持！\",rightclickTip:\"请在图片上右键点击'复制'\",successTip:\"已成功复制（如果粘贴失败，请在图片上右键点击'复制图片'）\"},splitText:{splitDelimiters:\"分割符号\",splitOther:\"其它\",splitContinueSymbol:\"连续分隔符号视为单个处理\",splitDataPreview:\"数据预览\",splitTextTitle:\"文本分列\",splitConfirmToExe:\"此处已有数据，是否替换它？\",tipNoMulti:\"不能对多重选择区域执行此操作，请选择单个区域，然后再试\",tipNoMultiColumn:\"一次只能转换一列数据，选定区域可以有多行，但不能有多列，请在选定单列区域以后再试\"},imageText:{imageSetting:\"图片设置\",close:\"关闭\",conventional:\"常规\",moveCell1:\"移动并调整单元格大小\",moveCell2:\"移动并且不调整单元格的大小\",moveCell3:\"不要移动单元格并调整其大小\",fixedPos:\"固定位置\",border:\"边框\",width:\"宽度\",radius:\"半径\",style:\"样式\",solid:\"实线\",dashed:\"虚线\",dotted:\"点状\",double:\"双线\",color:\"颜色\"},punctuation:{tab:\"Tab 键\",semicolon:\"分号\",comma:\"逗号\",space:\"空格\"},findAndReplace:{find:\"查找\",replace:\"替换\",goto:\"转到\",location:\"定位条件\",formula:\"公式\",date:\"日期\",number:\"数字\",string:\"字符\",error:\"错误\",condition:\"条件格式\",rowSpan:\"间隔行\",columnSpan:\"间隔列\",locationExample:\"定位\",lessTwoRowTip:\"请选择最少两行\",lessTwoColumnTip:\"请选择最少两行\",findTextbox:\"查找内容\",replaceTextbox:\"替换内容\",regexTextbox:\"正则表达式匹配\",wholeTextbox:\"整词匹配\",distinguishTextbox:\"区分大小写匹配\",allReplaceBtn:\"全部替换\",replaceBtn:\"替换\",allFindBtn:\"查找全部\",findBtn:\"查找下一个\",noFindTip:\"没有查找到该内容\",modeTip:\"该模式下不可进行此操作\",searchTargetSheet:\"工作表\",searchTargetCell:\"单元格\",searchTargetValue:\"值\",searchInputTip:\"请输入查找内容\",noReplceTip:\"没有可替换的内容\",noMatchTip:\"找不到匹配项\",successTip:\"已经帮您搜索并进行了${xlength}处替换\",locationConstant:\"常量\",locationFormula:\"公式\",locationDate:\"日期\",locationDigital:\"数字\",locationString:\"字符\",locationBool:\"逻辑值\",locationError:\"错误\",locationNull:\"空值\",locationCondition:\"条件格式\",locationRowSpan:\"间隔行\",locationColumnSpan:\"间隔列\",locationTiplessTwoRow:\"请选择最少两行\",locationTiplessTwoColumn:\"请选择最少两列\",locationTipNotFindCell:\"未找到单元格\"},sheetconfig:{delete:\"删除\",copy:\"复制\",rename:\"重命名\",changeColor:\"更改颜色\",hide:\"隐藏\",unhide:\"取消隐藏\",moveLeft:\"向左移\",moveRight:\"向右移\",resetColor:\"重置颜色\",cancelText:\"取消\",chooseText:\"确定颜色\",tipNameRepeat:\"标签页的名称不能重复！请重新修改\",noMoreSheet:\"工作薄内至少含有一张可视工作表。若需删除选定的工作表，请先插入一张新工作表或显示一张隐藏的工作表。\",confirmDelete:\"是否删除\",redoDelete:\"可以通过Ctrl+Z撤销删除\",noHide:\"不能隐藏, 至少保留一个sheet标签\",chartEditNoOpt:\"图表编辑模式下不允许该操作！\",sheetNameSpecCharError:\"名称不能超过31个字符，首尾不能是' 且名称不能包含:\\r\\n[ ] : \\\\ ? * /\",sheetNamecannotIsEmptyError:\"名称不能为空!\"},conditionformat:{conditionformat_greaterThan:\"条件格式——大于\",conditionformat_greaterThan_title:\"为大于以下值的单元格设置格式\",conditionformat_lessThan:\"条件格式——小于\",conditionformat_lessThan_title:\"为小于以下值的单元格设置格式\",conditionformat_betweenness:\"条件格式——介于\",conditionformat_betweenness_title:\"为介于以下值的单元格设置格式\",conditionformat_equal:\"条件格式——等于\",conditionformat_equal_title:\"为等于以下值的单元格设置格式\",conditionformat_textContains:\"条件格式——文本包含\",conditionformat_textContains_title:\"为包含以下文本的单元格设置格式\",conditionformat_occurrenceDate:\"条件格式——发生日期\",conditionformat_occurrenceDate_title:\"为包含以下日期的单元格设置格式\",conditionformat_duplicateValue:\"条件格式——重复值\",conditionformat_duplicateValue_title:\"为包含以下类型值的单元格设置格式\",conditionformat_top10:\"条件格式——前 10 项\",conditionformat_top10_percent:\"条件格式——前 10%\",conditionformat_top10_title:\"为值最大的那些单元格设置格式\",conditionformat_last10:\"条件格式——最后 10 项\",conditionformat_last10_percent:\"条件格式——最后 10%\",conditionformat_last10_title:\"为值最小的那些单元格设置格式\",conditionformat_AboveAverage:\"条件格式——高于平均值\",conditionformat_AboveAverage_title:\"为高于平均值的单元格设置格式\",conditionformat_SubAverage:\"条件格式——低于平均值\",conditionformat_SubAverage_title:\"为低于平均值的单元格设置格式\",rule:\"规则\",newRule:\"新建规则\",editRule:\"编辑规则\",deleteRule:\"删除规则\",deleteCellRule:\"清除所选单元格的规则\",deleteSheetRule:\"清除整个工作表的规则\",manageRules:\"管理规则\",showRules:\"显示其格式规则\",highlightCellRules:\"突出显示单元格规则\",itemSelectionRules:\"项目选取规则\",conditionformatManageRules:\"条件格式规则管理器\",format:\"格式\",setFormat:\"设置格式\",setAs:\"设置为\",setAsByArea:\"针对选定区域，设置为\",applyRange:\"应用范围\",selectRange:\"点击选择应用范围\",selectRange_percent:\"所选范围的百分比\",selectRange_average:\"选定范围的平均值\",selectRange_value:\"选定范围中的数值\",pleaseSelectRange:\"请选择应用范围\",selectDataRange:\"点击选择数据范围\",selectCell:\"选择单元格\",pleaseSelectCell:\"请选择单元格\",pleaseSelectADate:\"请选择日期\",pleaseEnterInteger:\"请输入一个介于 1 和 1000 之间的整数\",onlySingleCell:\"只能对单个单元格进行引用\",conditionValueCanOnly:\"条件值只能是数字或者单个单元格\",ruleTypeItem1:\"基于各自值设置所有单元格的格式\",ruleTypeItem2:\"只为包含以下内容的单元格设置格式\",ruleTypeItem2_title:\"只为满足以下条件的单元格\",ruleTypeItem3:\"仅对排名靠前或靠后的数值设置格式\",ruleTypeItem3_title:\"为以下排名内的值\",ruleTypeItem4:\"仅对高于或低于平均值的数值设置格式\",ruleTypeItem4_title:\"为满足以下条件的值\",ruleTypeItem5:\"仅对唯一值或重复值设置格式\",ruleTypeItem6:\"使用公式确定要设置格式的单元格\",formula:\"公式\",textColor:\"文本颜色\",cellColor:\"单元格颜色\",confirm:\"确定\",confirmColor:\"确定颜色\",cancel:\"取消\",close:\"关闭\",clearColorSelect:\"清除颜色选择\",sheet:\"表\",currentSheet:\"当前工作表\",dataBar:\"数据条\",dataBarColor:\"数据条颜色\",gradientDataBar_1:\"蓝-白渐变数据条\",gradientDataBar_2:\"绿-白渐变数据条\",gradientDataBar_3:\"红-白渐变数据条\",gradientDataBar_4:\"橙-白渐变数据条\",gradientDataBar_5:\"浅蓝-白渐变数据条\",gradientDataBar_6:\"紫-白渐变数据条\",solidColorDataBar_1:\"蓝色数据条\",solidColorDataBar_2:\"绿色数据条\",solidColorDataBar_3:\"红色数据条\",solidColorDataBar_4:\"橙色数据条\",solidColorDataBar_5:\"浅蓝色数据条\",solidColorDataBar_6:\"紫色数据条\",colorGradation:\"色阶\",colorGradation_1:\"绿-黄-红色阶\",colorGradation_2:\"红-黄-绿色阶\",colorGradation_3:\"绿-白-红色阶\",colorGradation_4:\"红-白-绿色阶\",colorGradation_5:\"蓝-白-红色阶\",colorGradation_6:\"红-白-蓝色阶\",colorGradation_7:\"白-红色阶\",colorGradation_8:\"红-白色阶\",colorGradation_9:\"绿-白色阶\",colorGradation_10:\"白-绿色阶\",colorGradation_11:\"绿-黄色阶\",colorGradation_12:\"黄-绿色阶\",icons:\"图标集\",pleaseSelectIcon:\"请点击选择一组图标：\",cellValue:\"单元格值\",specificText:\"特定文本\",occurrence:\"发生日期\",greaterThan:\"大于\",lessThan:\"小于\",between:\"介于\",equal:\"等于\",in:\"和\",to:\"到\",between2:\"之间\",contain:\"包含\",textContains:\"文本包含\",duplicateValue:\"重复值\",uniqueValue:\"唯一值\",top:\"前\",top10:\"前 10 项\",top10_percent:\"前 10%\",last:\"后\",last10:\"后 10 项\",last10_percent:\"后 10%\",oneself:\"个\",above:\"高于\",aboveAverage:\"高于平均值\",below:\"低于\",belowAverage:\"低于平均值\",all:\"全部\",yesterday:\"昨天\",today:\"今天\",tomorrow:\"明天\",lastWeek:\"上周\",thisWeek:\"本周\",lastMonth:\"上月\",thisMonth:\"本月\",lastYear:\"去年\",thisYear:\"本年\",last7days:\"最近7天\",last30days:\"最近30天\",next7days:\"未来7天\",next30days:\"未来30天\",next60days:\"未来60天\",chooseRuleType:\"选择规则类型\",editRuleDescription:\"编辑规则说明\",newFormatRule:\"新建格式规则\",editFormatRule:\"编辑格式规则\",formatStyle:\"格式样式\",fillType:\"填充类型\",color:\"颜色\",twocolor:\"双色\",tricolor:\"三色\",multicolor:\"彩色\",grayColor:\"灰色\",gradient:\"渐变\",solid:\"实心\",maxValue:\"最大值\",medianValue:\"中间值\",minValue:\"最小值\",direction:\"方向\",threeWayArrow:\"三向箭头\",fourWayArrow:\"四向箭头\",fiveWayArrow:\"五向箭头\",threeTriangles:\"3个三角形\",shape:\"形状\",threeColorTrafficLight:\"三色交通灯\",fourColorTrafficLight:\"四色交通灯\",threeSigns:\"三标志\",greenRedBlackGradient:\"绿-红-黑渐变\",rimless:\"无边框\",bordered:\"有边框\",mark:\"标记\",threeSymbols:\"三个符号\",tricolorFlag:\"三色旗\",circled:\"有圆圈\",noCircle:\"无圆圈\",grade:\"等级\",grade4:\"四等级\",grade5:\"五等级\",threeStars:\"3个星形\",fiveQuadrantDiagram:\"五象限图\",fiveBoxes:\"5个框\"},insertLink:{linkText:\"文本\",linkType:\"链接类型\",external:\"外部链接\",internal:\"内部链接\",linkAddress:\"链接地址\",linkSheet:\"工作表\",linkCell:\"单元格引用\",linkTooltip:\"提示\",placeholder1:\"请输入网页链接地址\",placeholder2:\"请输入要引用的单元格，例A1\",placeholder3:\"请输入提示内容\",tooltipInfo1:\"请输入有效的链接\",tooltipInfo2:\"请输入正确的单元格引用\"},dataVerification:{cellRange:\"单元格范围\",selectCellRange:\"点击选择单元格范围\",selectCellRange2:\"请选择单元格范围\",verificationCondition:\"验证条件\",allowMultiSelect:\"是否允许多选\",dropdown:\"下拉列表\",checkbox:\"复选框\",number:\"数字\",number_integer:\"数字-整数\",number_decimal:\"数字-小数\",text_content:\"文本-内容\",text_length:\"文本-长度\",date:\"日期\",validity:\"有效性\",placeholder1:\"请输入选项，以英文逗号分隔，如1,2,3,4,5\",placeholder2:\"请输入内容\",placeholder3:\"数值，如10\",placeholder4:\"请输入指定的文本\",placeholder5:\"请输入选中单元格时显示的提示语\",selected:\"选择时\",notSelected:\"未选择\",between:\"介于\",notBetween:\"不介于\",equal:\"等于\",notEqualTo:\"不等于\",moreThanThe:\"大于\",lessThan:\"小于\",greaterOrEqualTo:\"大于等于\",lessThanOrEqualTo:\"小于等于\",include:\"包括\",exclude:\"不包括\",earlierThan:\"早于\",noEarlierThan:\"不早于\",laterThan:\"晚于\",noLaterThan:\"不晚于\",identificationNumber:\"身份证号码\",phoneNumber:\"手机号\",remote:\"自动远程获取选项\",prohibitInput:\"输入数据无效时禁止输入\",hintShow:\"选中单元格时显示提示语\",deleteVerification:\"删除验证\",tooltipInfo1:\"下拉列表选项不可为空\",tooltipInfo2:\"复选框内容不可为空\",tooltipInfo3:\"输入的值不是数值类型\",tooltipInfo4:\"数值2不能小于数值1\",tooltipInfo5:\"文本内容不能为空\",tooltipInfo6:\"输入的值不是日期类型\",tooltipInfo7:\"日期2不能小于日期1\",textlengthInteger:\"文本长度必须是大于等于0的整数\"},formula:{sum:\"求和\",average:\"平均值\",count:\"计数\",max:\"最大值\",min:\"最小值\",ifGenerate:\"if公式生成器\",find:\"更多函数\",tipNotBelongToIf:\"该单元格函数不属于if公式！\",tipSelectCell:\"请选择单元格插入函数\",ifGenCompareValueTitle:\"比较值\",ifGenSelectCellTitle:\"点击选择单元格\",ifGenRangeTitle:\"范围\",ifGenRangeTo:\"至\",ifGenRangeEvaluate:\"范围评估\",ifGenSelectRangeTitle:\"点击选择范围\",ifGenCutWay:\"划分方式\",ifGenCutSame:\"划分值相同\",ifGenCutNpiece:\"划分为N份\",ifGenCutCustom:\"自定义输入\",ifGenCutConfirm:\"生成\",ifGenTipSelectCell:\"选择单元格\",ifGenTipSelectCellPlace:\"请选择单元格\",ifGenTipSelectRange:\"选择单范围\",ifGenTipSelectRangePlace:\"请选择范围\",ifGenTipNotNullValue:\"比较值不能为空！\",ifGenTipLableTitile:\"标签\",ifGenTipRangeNotforNull:\"范围不能为空！\",ifGenTipCutValueNotforNull:\"划分值不能为空！\",ifGenTipNotGenCondition:\"没有生成可用的条件！\"},formulaMore:{valueTitle:\"值\",tipSelectDataRange:\"选取数据范围\",tipDataRangeTile:\"数据范围\",findFunctionTitle:\"查找函数\",tipInputFunctionName:\"请输入您要查找的函数名称或函数功能的简要描述\",Array:\"数组\",Database:\"数据源\",Date:\"日期\",Engineering:\"工程计算\",Filter:\"过滤器\",Financial:\"财务\",luckysheet:\"Luckysheet内置\",other:\"其它\",Logical:\"逻辑\",Lookup:\"查找\",Math:\"数学\",Operator:\"运算符\",Parser:\"转换工具\",Statistical:\"统计\",Text:\"文本\",dataMining:\"数据挖掘\",selectFunctionTitle:\"选择函数\",calculationResult:\"计算结果\",tipSuccessText:\"成功\",tipParamErrorText:\"参数类型错误\",helpClose:\"关闭\",helpCollapse:\"收起\",helpExample:\"示例\",helpAbstract:\"摘要\",execfunctionError:'提示\", \"公式存在错误',execfunctionSelfError:\"公式不可引用其本身的单元格\",execfunctionSelfErrorResult:\"公式不可引用其本身的单元格，会导致计算结果不准确\",allowRepeatText:\"可重复\",allowOptionText:\"可选\",selectCategory:\"或选择类别\"},drag:{noMerge:\"无法对合并单元格执行此操作\",affectPivot:\"无法对所选单元格进行此更改，因为它会影响数据透视表！\",noMulti:\"无法对多重选择区域执行此操作,请选择单个区域\",noPaste:\"无法在此处粘贴此内容，请选择粘贴区域的一个单元格，然后再次尝试粘贴\",noPartMerge:\"无法对部分合并单元格执行此操作\",inputCorrect:\"请输入正确的数值\",notLessOne:\"行列数不能小于1\",offsetColumnLessZero:\"偏移列不能为负数！\",pasteMustKeybordAlert:\"Copy and paste in the Sheet: Ctrl + C to copy, Ctrl + V to paste, Ctrl + X to cut\",pasteMustKeybordAlertHTMLTitle:\"Copy and paste in the Sheet\",pasteMustKeybordAlertHTML:\"<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;to copy<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;to paste<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;to cut\"},paste:{warning:\"提示\",errorNotAllowMulti:\"不能对多重选择区域执行此操作，请选择单个区域，然后再试\",errorNotAllowMerged:\"不能对合并单元格做部分更改\"},pivotTable:{title:\"数据透视表\",closePannel:\"关闭\",editRange:\"编辑范围\",tipPivotFieldSelected:\"选择需要添加到数据透视表的字段\",tipClearSelectedField:\"清除所有已选字段\",btnClearSelectedField:\"清除\",btnFilter:\"筛选\",titleRow:\"行\",titleColumn:\"列\",titleValue:\"数值\",tipShowColumn:\"统计字段显示为列\",tipShowRow:\"统计字段显示为行\",titleSelectionDataRange:\"选取数据范围\",titleDataRange:\"数据范围\",valueSum:\"总计\",valueStatisticsSUM:\"求和\",valueStatisticsCOUNT:\"数值计数\",valueStatisticsCOUNTA:\"计数\",valueStatisticsCOUNTUNIQUE:\"去重计数\",valueStatisticsAVERAGE:\"平均值\",valueStatisticsMAX:\"最大值\",valueStatisticsMIN:\"最小值\",valueStatisticsMEDIAN:\"中位数\",valueStatisticsPRODUCT:\"乘积\",valueStatisticsSTDEV:\"标准差\",valueStatisticsSTDEVP:\"整体标准差\",valueStatisticslet:\"方差\",valueStatisticsVARP:\"整体方差\",errorNotAllowEdit:\"非编辑模式下禁止该操作！\",errorNotAllowMulti:\"不能对多重选择区域执行此操作，请选择单个区域，然后再试\",errorSelectRange:\"请选择新建透视表的区域\",errorIsDamage:\"此数据透视表的源数据已损坏！\",errorNotAllowPivotData:\"不可选择数据透视表为源数据！\",errorSelectionRange:\"选择失败, 输入范围错误！\",errorIncreaseRange:\"请扩大选择的数据范围!\",titleAddColumn:\"添加列到数据透视表\",titleMoveColumn:\"移动该列到下方白框\",titleClearColumnFilter:\"清除该列的筛选条件\",titleFilterColumn:\"筛选该列\",titleSort:\"排序\",titleNoSort:\"无排序\",titleSortAsc:\"升序\",titleSortDesc:\"降序\",titleSortBy:\"排序依据\",titleShowSum:\"显示总计\",titleStasticTrue:\"是\",titleStasticFalse:\"否\"},dropCell:{copyCell:\"复制单元格\",sequence:\"填充序列\",onlyFormat:\"仅填充格式\",noFormat:\"不带格式填充\",day:\"以天数填充\",workDay:\"以工作日填充\",month:\"以月填充\",year:\"以年填充\",chineseNumber:\"以中文小写数字填充\"},imageCtrl:{borderTile:\"图片边框颜色选择\",borderCur:\"当前颜色\"},protection:{protectiontTitle:\"保护工作表\",enterPassword:\"请输入密码（可留空）\",enterHint:\"您试图更改的单元格或图表位于受保护的工作表中。若要更改，请取消工作表保护。您可能需要输入密码\",swichProtectionTip:\"保护工作表及锁定的单元格内容\",authorityTitle:\"允许此工作表的用户进行:\",selectLockedCells:\"选定锁定单元格\",selectunLockedCells:\"选定解除锁定的单元格\",formatCells:\"设置单元格格式\",formatColumns:\"设置列格式\",formatRows:\"设置行格式\",insertColumns:\"插入列\",insertRows:\"插入行\",insertHyperlinks:\"插入超链接\",deleteColumns:\"删除列\",deleteRows:\"删除行\",sort:\"排序\",filter:\"使用自动筛选\",usePivotTablereports:\"使用数据透视表和报表\",editObjects:\"编辑对象\",editScenarios:\"编辑方案\",allowRangeTitle:\"允许用户编辑区域\",allowRangeAdd:\"新建...\",allowRangeAddTitle:\"标题\",allowRangeAddSqrf:\"引用单元格\",selectCellRange:\"点击选择单元格范围\",selectCellRangeHolder:\"请输入单元格范围\",allowRangeAddTitlePassword:\"密码\",allowRangeAddTitleHint:\"提示\",allowRangeAddTitleHintTitle:\"设置密码后，提示用户输入密码(可留空)\",allowRangeAddtitleDefault:\"请输入区域名称\",rangeItemDblclick:\"双击进行编辑\",rangeItemHasPassword:\"已设置密码\",rangeItemErrorTitleNull:\"标题不能为空\",rangeItemErrorRangeNull:\"单元格范围不能为空\",rangeItemErrorRange:\"单元格范围格式错误\",validationTitle:\"验证提示\",validationTips:\"需要输入密码来撤销工作表的保护\",validationInputHint:\"请输入密码\",checkPasswordNullalert:\"密码不能为空！\",checkPasswordWrongalert:\"密码错误，请重试！\",checkPasswordSucceedalert:\"解锁成功，可以编辑该区域!\",defaultRangeHintText:\"该单元格正在受密码保护。\",defaultSheetHintText:\"该单元格或图表位于受保护的工作表中，若要进行更改，请取消工作表保护，您可能需要输入密码。\"},cellFormat:{cellFormatTitle:\"设置单元格格式\",protection:\"保护\",locked:\"锁定单元格\",hidden:\"隐藏公式\",protectionTips:\"只有保护工作表功能(在菜单栏点击保护工作表按钮进行设置)开启后，锁定单元格或隐藏公式才能生效\",tipsPart:\"部分选中\",tipsAll:\"全部选中\",selectionIsNullAlert:\"请选择一个范围！\",sheetDataIsNullAlert:\"数据为空无法设置！\"},print:{normalBtn:\"常规视图\",layoutBtn:\"页面布局\",pageBtn:\"分页预览\",menuItemPrint:\"打印(Ctrl+P)\",menuItemAreas:\"打印区域\",menuItemRows:\"打印标题行\",menuItemColumns:\"打印标题列\",suggest:\"对打印功能有什么建议？\",range:\"打印范围\",size:\"纸张大小\",direction:\"打印方向\",horizontal:\"横向\",vertical:\"纵向\",title:\"打印设置\",current:\"当前工作表\",area:\"选中区域\",letter:\"信封\",paper:\"小报用纸\",law:\"法定用纸\",admin:\"行政用纸\",expire:\"已过期\",remain:\"剩余天数\",error:\"错误\",showLine:\"显示网格线\",show:\"显示\",hide:\"隐藏\",preview:\"预览\"},edit:{typing:\"正在输入\"},websocket:{success:\"WebSocket连接成功\",refresh:\"WebSocket连接发生错误, 请刷新页面！\",wait:\"WebSocket连接发生错误, 请耐心等待！\",close:\"WebSocket连接关闭\",contact:\"服务器通信发生错误，请刷新页面后再试，如若不行请联系管理员！\",support:\"当前浏览器不支持WebSocket\"},exportXlsx:{notice:\"请配置导出插件\",serverError:\"服务器正在维护\",title:\"导出XLSX\",range:\"范围\",currentSheet:\"当前工作表\",allSheets:\"所有工作表\"}}})),j=y((()=>{O={functionlist:{SUMIF:{d:\"Returns a conditional sum across a range.\",a:\"A conditional sum across a range.\",p:[{name:\"range\",detail:\"The range which is tested against `criterion`.\"},{name:\"criterion\",detail:\"The pattern or test to apply to `range`.\"},{name:\"sum_range\",detail:\"The range to be summed, if different from `range`.\"}]},TAN:{d:\"Returns the tangent of an angle provided in radians.\",a:\"Tangent of an angle provided in radians.\",p:[{name:\"angle\",detail:\"The angle to find the tangent of, in radians.\"}]},TANH:{d:\"Returns the hyperbolic tangent of any real number.\",a:\"Hyperbolic tangent of any real number.\",p:[{name:\"value\",detail:\"Any real value to calculate the hyperbolic tangent of.\"}]},CEILING:{d:\"Rounds a number up to the nearest integer multiple of specified significance `factor`.\",a:\"Rounds number up to nearest multiple of a factor.\",p:[{name:\"value\",detail:\"The value to round up to the nearest integer multiple of `factor`.\"},{name:\"factor\",detail:\"The number to whose multiples `value` will be rounded.\"}]},ATAN:{d:\"Returns the inverse tangent of a value, in radians.\",a:\"Inverse tangent of a value, in radians.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse tangent.\"}]},ASINH:{d:\"Returns the inverse hyperbolic sine of a number.\",a:\"Inverse hyperbolic sine of a number.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse hyperbolic sine.\"}]},ABS:{d:\"Returns the absolute value of a number.\",a:\"Absolute value of a number.\",p:[{name:\"value\",detail:\"The number of which to return the absolute value.\"}]},ACOS:{d:\"Returns the inverse cosine of a value, in radians.\",a:\"Inverse cosine of a value, in radians.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse cosine. Must be between `-1` and `1`, inclusive.\"}]},ACOSH:{d:\"Returns the inverse hyperbolic cosine of a number.\",a:\"Inverse hyperbolic cosine of a number.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse hyperbolic cosine. Must be greater than or equal to `1`.\"}]},MULTINOMIAL:{d:\"Returns the factorial of the sum of values divided by the product of the values' factorials.\",a:\"Multinomial distribution function.\",p:[{name:\"value1\",detail:\"The first value or range to consider.\"},{name:\"value2\",detail:\"Additional values or ranges to consider.\"}]},ATANH:{d:\"Returns the inverse hyperbolic tangent of a number.\",a:\"Inverse hyperbolic tangent of a number.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse hyperbolic tangent. Must be between -1 and 1, exclusive.\"}]},ATAN2:{d:\"Returns the angle between the x-axis and a line segment from the origin (0,0) to specified coordinate pair (`x`,`y`), in radians.\",a:\"Arctangent of a value.\",p:[{name:\"x\",detail:\"The x coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis.\"},{name:\"y\",detail:\"The y coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis.\"}]},COUNTBLANK:{d:\"Returns the number of empty values in a list of values and ranges.\",a:\"Number of empty values.\",p:[{name:\"value1\",detail:\"The first value or range in which to count the number of blanks.\"}]},COSH:{d:\"Returns the hyperbolic cosine of any real number.\",a:\"Hyperbolic cosine of any real number.\",p:[{name:\"value\",detail:\"Any real value to calculate the hyperbolic cosine of.\"}]},INT:{d:\"Rounds a number down to the nearest integer that is less than or equal to it.\",a:\"Rounds number down to nearest integer.\",p:[{name:\"value\",detail:\"The value to round down to the nearest integer.\"}]},ISEVEN:{d:\"Checks whether the provided value is even.\",a:\"Whether the provided value is even.\",p:[{name:\"value\",detail:\"The value to be verified as even.\"}]},ISODD:{d:\"Checks whether the provided value is odd.\",a:\"Whether the provided value is odd.\",p:[{name:\"value\",detail:\"The value to be verified as odd.\"}]},LCM:{d:\"Returns the least common multiple of one or more integers.\",a:\"Least common multiple of one or more integers.\",p:[{name:\"value1\",detail:\"The first value or range whose factors to consider in a calculation to find the least common multiple.\"},{name:\"value2\",detail:\"Additional values or ranges whose factors to consider to find the least common multiple.\"}]},LN:{d:\"Returns the logarithm of a number, base e (Euler's number).\",a:\"The logarithm of a number, base e (euler's number).\",p:[{name:\"value\",detail:\"The value for which to calculate the logarithm, base e.\"}]},LOG:{d:\"Returns the logarithm of a number with respect to a base.\",a:\"The logarithm of a number with respect to a base.\",p:[{name:\"value\",detail:\"The value for which to calculate the logarithm.\"},{name:\"base\",detail:\"The base to use for calculation of the logarithm.\"}]},LOG10:{d:\"Returns the logarithm of a number, base 10.\",a:\"The logarithm of a number, base 10.\",p:[{name:\"value\",detail:\"The value for which to calculate the logarithm, base 10.\"}]},MOD:{d:\"Returns the result of the modulo operator, the remainder after a division operation.\",a:\"Modulo (remainder) operator.\",p:[{name:\"dividend\",detail:\"The number to be divided to find the remainder.\"},{name:\"divisor\",detail:\"The number to divide by.\"}]},MROUND:{d:\"Rounds one number to the nearest integer multiple of another.\",a:\"Rounds a number to the nearest integer multiple.\",p:[{name:\"value\",detail:\"The number to round to the nearest integer multiple of another.\"},{name:\"factor\",detail:\"The number to whose multiples `value` will be rounded.\"}]},ODD:{d:\"Rounds a number up to the nearest odd integer.\",a:\"Rounds a number up to the nearest odd integer.\",p:[{name:\"value\",detail:\"The value to round to the next greatest odd number.\"}]},SUMSQ:{d:\"Returns the sum of the squares of a series of numbers and/or cells.\",a:\"Sum of squares.\",p:[{name:\"value1\",detail:\"The first number or range whose squares to add together.\"},{name:\"value2\",detail:\"Additional numbers or ranges whose squares to add to the square(s) of `value1`.\"}]},COMBIN:{d:\"Returns the number of ways to choose some number of objects from a pool of a given size of objects.\",a:\"Number of combinations from a set of objects.\",p:[{name:\"n\",detail:\"The size of the pool of objects to choose from.\"},{name:\"k\",detail:\"The number of objects to choose.\"}]},SUM:{d:\"Returns the sum of a series of numbers and/or cells.\",a:\"Sum of a series of numbers and/or cells.\",p:[{name:\"value1\",detail:\"The first number or range to add together.\"},{name:\"value2\",detail:\"Additional numbers or ranges to add to `value1`.\"}]},SUBTOTAL:{d:\"Returns a subtotal for a vertical range of cells using a specified aggregation function.\",a:\"Subtotal for a range using a specific function.\",p:[{name:\"function_code\",detail:\"The function to use in subtotal aggregation.\"},{name:\"range1\",detail:\"The first range over which to calculate a subtotal.\"},{name:\"range2\",detail:\"Additional ranges over which to calculate subtotals.\"}]},ASIN:{d:\"Returns the inverse sine of a value, in radians.\",a:\"Inverse sine of a value, in radians.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse sine. Must be between `-1` and `1`, inclusive.\"}]},COUNTIF:{d:\"Returns a conditional count across a range.\",a:\"A conditional count across a range.\",p:[{name:\"range\",detail:\"The range that is tested against `criterion`.\"},{name:\"criterion\",detail:\"The pattern or test to apply to `range`.\"}]},RADIANS:{d:\"Converts an angle value in degrees to radians.\",a:\"Converts an angle value in degrees to radians.\",p:[{name:\"angle\",detail:\"The angle to convert from degrees to radians.\"}]},RAND:{d:\"Returns a random number between 0 inclusive and 1 exclusive.\",a:\"A random number between 0 inclusive and 1 exclusive.\",p:[]},COUNTUNIQUE:{d:\"Counts the number of unique values in a list of specified values and ranges.\",a:\"Counts number of unique values in a range.\",p:[{name:\"value1\",detail:\"The first value or range to consider for uniqueness.\"},{name:\"value2\",detail:\"Additional values or ranges to consider for uniqueness.\"}]},DEGREES:{d:\"Converts an angle value in radians to degrees.\",a:\"Converts an angle value in radians to degrees.\",p:[{name:\"angle\",detail:\"The angle to convert from radians to degrees.\"}]},ERFC:{d:\"Returns the complementary Gauss error function of a value.\",a:\"Complementary gauss error function of a value.\",p:[{name:\"z\",detail:\"The number for which to calculate the complementary Gauss error function.\"}]},EVEN:{d:\"Rounds a number up to the nearest even integer.\",a:\"Rounds a number up to the nearest even integer.\",p:[{name:\"value\",detail:\"The value to round to the next greatest even number.\"}]},EXP:{d:\"Returns Euler's number, e (~2.718) raised to a power.\",a:\"Euler's number, e (~2.718) raised to a power.\",p:[{name:\"exponent\",detail:\"The exponent to raise e to.\"}]},FACT:{d:\"Returns the factorial of a number.\",a:\"Factorial of a number.\",p:[{name:\"value\",detail:\"The number or reference to a number whose factorial will be calculated and returned.\"}]},FACTDOUBLE:{d:'Returns the \"double factorial\" of a number.',a:'\"double factorial\" of a number.',p:[{name:\"value\",detail:\"The number or reference to a number whose double factorial will be calculated and returned.\"}]},PI:{d:\"Returns the value of Pi to 14 decimal places.\",a:\"The number pi.\",p:[]},FLOOR:{d:\"Rounds a number down to the nearest integer multiple of specified significance `factor`.\",a:\"Rounds number down to nearest multiple of a factor.\",p:[{name:\"value\",detail:\"The value to round down to the nearest integer multiple of `factor`.\"},{name:\"factor\",detail:\"The number to whose multiples `value` will be rounded.\"}]},GCD:{d:\"Returns the greatest common divisor of one or more integers.\",a:\"Greatest common divisor of one or more integers.\",p:[{name:\"value1\",detail:\"The first value or range whose factors to consider in a calculation to find the greatest common divisor.\"},{name:\"value2\",detail:\"Additional values or ranges whose factors to consider to find the greatest common divisor.\"}]},RANDBETWEEN:{d:\"Returns a uniformly random integer between two values, inclusive.\",a:\"Random integer between two values, inclusive.\",p:[{name:\"low\",detail:\"The low end of the random range.\"},{name:\"high\",detail:\"The high end of the random range.\"}]},ROUND:{d:\"Rounds a number to a certain number of decimal places according to standard rules.\",a:\"Rounds a number according to standard rules.\",p:[{name:\"value\",detail:\"The value to round to `places` number of places.\"},{name:\"places\",detail:\"The number of decimal places to which to round.\"}]},ROUNDDOWN:{d:\"Rounds a number to a certain number of decimal places, always rounding down to the next valid increment.\",a:\"Rounds down a number.\",p:[{name:\"value\",detail:\"The value to round to `places` number of places, always rounding down.\"},{name:\"places\",detail:\"The number of decimal places to which to round.\"}]},ROUNDUP:{d:\"Rounds a number to a certain number of decimal places, always rounding up to the next valid increment.\",a:\"Rounds up a number.\",p:[{name:\"value\",detail:\"The value to round to `places` number of places, always rounding up.\"},{name:\"places\",detail:\"The number of decimal places to which to round.\"}]},SERIESSUM:{d:\"Given parameters `x`, `n`, `m`, and `a`, returns the power series sum a\",a:\"Sum of a power series.\",p:[{name:\"x\",detail:\"The input to the power series. Varies depending on the type of approximation, may be angle, exponent, or some other value.\"},{name:\"n\",detail:\"The initial power to which to raise `x` in the power series.\"},{name:\"m\",detail:\"The additive increment by which to increase `x`.\"},{name:\"a\",detail:\"The array or range containing the coefficients of the power series.\"}]},SIGN:{d:\"Given an input number, returns `-1` if it is negative, `1` if positive, and `0` if it is zero.\",a:\"Sign of a provided number (+/-/0).\",p:[{name:\"value\",detail:\"The value whose sign will be evaluated.\"}]},SIN:{d:\"Returns the sine of an angle provided in radians.\",a:\"Sine of an angle provided in radians.\",p:[{name:\"angle\",detail:\"The angle to find the sine of, in radians.\"}]},SINH:{d:\"Returns the hyperbolic sine of any real number.\",a:\"Hyperbolic sine of any real number.\",p:[{name:\"value\",detail:\"Any real value to calculate the hyperbolic sine of.\"}]},SQRT:{d:\"Returns the positive square root of a positive number.\",a:\"Positive square root of a positive number.\",p:[{name:\"value\",detail:\"The number for which to calculate the positive square root.\"}]},SQRTPI:{d:\"Returns the positive square root of the product of Pi and the given positive number.\",a:\"Square root of the product of pi and number.\",p:[{name:\"value\",detail:\"The number which will be multiplied by Pi and have the product's square root returned\"}]},GAMMALN:{d:\"Returns the logarithm of a specified Gamma function, base e (Euler's number).\",a:\"Logarithm of gamma function.\",p:[{name:\"value\",detail:\"The input to the Gamma function. The natural logarithm of Gamma(`value`) will be returned.\"}]},COS:{d:\"Returns the cosine of an angle provided in radians.\",a:\"Cosine of an angle provided in radians.\",p:[{name:\"angle\",detail:\"The angle to find the cosine of, in radians.\"}]},TRUNC:{d:\"Truncates a number to a certain number of significant digits by omitting less significant digits.\",a:\"Truncates a number.\",p:[{name:\"value\",detail:\"The value to be truncated.\"},{name:\"places\",detail:\"The number of significant digits to the right of the decimal point to retain.\"}]},QUOTIENT:{d:\"Returns one number divided by another.\",a:\"One number divided by another.\",p:[{name:\"dividend\",detail:\"The number to be divided.\"},{name:\"divisor\",detail:\"The number to divide by.\"}]},POWER:{d:\"Returns a number raised to a power.\",a:\"A number raised to a power.\",p:[{name:\"base\",detail:\"The number to raise to the `exponent` power.\"},{name:\"exponent\",detail:\"The exponent to raise `base` to.\"}]},SUMIFS:{d:\"Returns the sum of a range depending on multiple criteria.\",a:\"Sums a range depending on multiple criteria.\",p:[{name:\"sum_range\",detail:\"The range to sum.\"},{name:\"criteria_range1\",detail:\"The range to check against criterion1.\"},{name:\"criterion1\",detail:\"The pattern or test to apply to criteria_range1.\"},{name:\"criteria_range2\",detail:\"Additional ranges to check.\"}]},COUNTIFS:{d:\"Returns the count of a range depending on multiple criteria.\",a:\"Count values depending on multiple criteria.\",p:[{name:\"criteria_range1\",detail:\"The range to check against `criterion1`.\"},{name:\"criterion1\",detail:\"The pattern or test to apply to `criteria_range1`.\"},{name:\"criteria_range2\",detail:\"Additional ranges to check.\"}]},PRODUCT:{d:\"Returns the result of multiplying a series of numbers together.\",a:\"Result of multiplying a series of numbers together.\",p:[{name:\"factor1\",detail:\"The first number or range to calculate for the product.\"},{name:\"factor2\",detail:\"More numbers or ranges to calculate for the product.\"}]},HARMEAN:{d:\"Calculates the harmonic mean of a dataset.\",a:\"The harmonic mean of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},HYPGEOMDIST:{d:\"Calculates the probability of drawing a certain number of successes in a certain number of tries given a population of a certain size containing a certain number of successes, without replacement of draws.\",a:\"Hypergeometric distribution probability.\",p:[{name:\"num_successes\",detail:\"The desired number of successes.\"},{name:\"num_draws\",detail:\"The number of permitted draws.\"},{name:\"successes_in_pop\",detail:\"The total number of successes in the population.\"},{name:\"pop_size\",detail:\"The total size of the population\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf cumulative is TRUE(), HYPGEOM.DIST returns the cumulative distribution function;\\n\\nif FALSE(), it returns the probability density function.\"}]},INTERCEPT:{d:\"Calculates the y-value at which the line resulting from linear regression of a dataset will intersect the y-axis (x=0).\",a:\"Y-intercept of line derived via linear regression.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},KURT:{d:'Calculates the kurtosis of a dataset, which describes the shape, and in particular the \"peakedness\" of that dataset.',a:\"Kurtosis of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the dataset.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the dataset.\"}]},LARGE:{d:\"Returns the nth largest element from a data set, where n is user-defined.\",a:\"Nth largest element from a data set.\",p:[{name:\"data\",detail:\"Array or range containing the dataset to consider.\"},{name:\"n\",detail:\"The rank from largest to smallest of the element to return.\"}]},STDEVA:{d:\"Calculates the standard deviation based on a sample, setting text to the value `0`.\",a:\"Standard deviation of sample (text as 0).\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},STDEVP:{d:\"Calculates the standard deviation based on an entire population.\",a:\"Standard deviation of an entire population.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},GEOMEAN:{d:\"Calculates the geometric mean of a dataset.\",a:\"The geometric mean of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},RANK_EQ:{d:\"Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the top rank of the entries will be returned.\",a:\"Top rank of a specified value in a dataset.\",p:[{name:\"value\",detail:\"The value whose rank will be determined.\"},{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"is_ascending\",detail:\"Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE).\"}]},RANK_AVG:{d:\"Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the average rank of the entries will be returned.\",a:\"Average rank of a specified value in a dataset.\",p:[{name:\"value\",detail:\"The value whose rank will be determined.\"},{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"is_ascending\",detail:\"Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE).\"}]},PERCENTRANK_EXC:{d:\"Returns the percentage rank (percentile) from 0 to 1 exclusive of a specified value in a dataset.\",a:\"Percentage rank (percentile) from 0 to 1 exclusive.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"value\",detail:\"The value whose percentage rank will be determined.\"},{name:\"significant_digits\",detail:\"The number of significant figures to use in the calculation. Default is 3.\"}]},PERCENTRANK_INC:{d:\"Returns the percentage rank (percentile) from 0 to 1 inclusive of a specified value in a dataset.\",a:\"Percentage rank (percentile) from 0 to 1 inclusive.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"value\",detail:\"The value whose percentage rank will be determined.\"},{name:\"significant_digits\",detail:\"The number of significant figures to use in the calculation. Default is 3.\"}]},FORECAST:{d:\"Calculates the expected y-value for a specified x based on a linear regression of a dataset.\",a:\"Expected y-value based of linear regression.\",p:[{name:\"x\",detail:\"The value on the x-axis to forecast.\"},{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},FISHERINV:{d:\"Returns the inverse Fisher transformation of a specified value.\",a:\"Inverse fisher transformation of a specified value.\",p:[{name:\"value\",detail:\"The value for which to calculate the inverse Fisher transformation.\"}]},FISHER:{d:\"Returns the Fisher transformation of a specified value.\",a:\"Fisher transformation of a specified value.\",p:[{name:\"value\",detail:\"The value for which to calculate the Fisher transformation.\"}]},MODE_SNGL:{d:\"Returns the most commonly occurring value in a dataset.\",a:\"Most commonly occurring value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating mode.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating mode.\"}]},WEIBULL_DIST:{d:\"Returns the value of the Weibull distribution function (or Weibull cumulative distribution function) for a specified shape and scale.\",a:\"Weibull distribution function.\",p:[{name:\"x\",detail:\"The input to the Weibull distribution function.\"},{name:\"shape\",detail:\"The shape parameter of the Weibull distribution function.\"},{name:\"scale\",detail:\"The scale parameter of the Weibull distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the cumulative distribution function.\"}]},COUNT:{d:\"Returns the number of numeric values in a dataset.\",a:\"The number of numeric values in dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when counting.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when counting.\"}]},COUNTA:{d:\"Returns the number of values in a dataset.\",a:\"The number of values in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when counting.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when counting.\"}]},AVEDEV:{d:\"Calculates the average of the magnitudes of deviations of data from a dataset's mean.\",a:\"Average magnitude of deviations from mean.\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},AVERAGE:{d:\"Returns the numerical average value in a dataset, ignoring text.\",a:\"Numerical average value in a dataset, ignoring text.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the average value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the average value.\"}]},AVERAGEA:{d:\"Returns the numerical average value in a dataset.\",a:\"Numerical average value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the average value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the average value.\"}]},BINOM_DIST:{d:\"Calculates the probability of drawing a certain number of successes (or a maximum number of successes) in a certain number of tries given a population of a certain size containing a certain number of successes, with replacement of draws.\",a:\"Binomial distribution probability.\",p:[{name:\"num_successes\",detail:\"The number of successes for which to calculate the probability in `num_trials` trials.\"},{name:\"num_trials\",detail:\"The number of independent trials.\"},{name:\"prob_success\",detail:\"The probability of success in any given trial.\"},{name:\"cumulative\",detail:\"Whether to use the binomial cumulative distribution.\"}]},BINOM_INV:{d:\"Calculates the smallest value for which the cumulative binomial distribution is greater than or equal to a specified criteria.\",a:\"Inverse cumulative binomial distribution function.\",p:[{name:\"num_trials\",detail:\"The number of independent trials.\"},{name:\"prob_success\",detail:\"The probability of success in any given trial.\"},{name:\"target_prob\",detail:\"The desired threshold probability.\"}]},CONFIDENCE_NORM:{d:\"Calculates the width of half the confidence interval for a normal distribution.\",a:\"Confidence interval for a normal distribution.\",p:[{name:\"alpha\",detail:\"One minus the desired confidence level. E.g. `0.1` for `0.9`, or 90%, confidence.\"},{name:\"standard_deviation\",detail:\"The standard deviation of the population.\"},{name:\"pop_size\",detail:\"The size of the population.\"}]},CORREL:{d:\"Calculates r, the Pearson product-moment correlation coefficient of a dataset.\",a:\"Pearson Product-Moment Correlation Coefficient.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},COVARIANCE_P:{d:\"Calculates the covariance of a dataset.\",a:\"The covariance of a dataset.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},COVARIANCE_S:{d:\"Calculates the sample covariance of a dataset.\",a:\"The sample covariance of a dataset.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},DEVSQ:{d:\"Calculates the sum of squares of deviations based on a sample.\",a:\"The sum of squares of deviations based on a sample.\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},EXPON_DIST:{d:\"Returns the value of the exponential distribution function with a specified lambda at a specified value.\",a:\"Exponential distribution function.\",p:[{name:\"x\",detail:\"The input to the exponential distribution function.\"},{name:\"lambda\",detail:\"The lambda to specify the exponential distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the exponential cumulative distribution.\"}]},AVERAGEIF:{d:\"Returns the average of a range depending on criteria.\",a:\"Average of values depending on criteria.\",p:[{name:\"criteria_range\",detail:\"The range to check against `criterion`.\"},{name:\"criterion\",detail:\"The pattern or test to apply to `criteria_range`.\"},{name:\"average_range\",detail:\"The range to average. If not included, `criteria_range` is used for the average instead.\"}]},AVERAGEIFS:{d:\"Returns the average of a range depending on multiple criteria.\",a:\"Average of values depending on multiple criteria.\",p:[{name:\"average_range\",detail:\"The range to average.\"},{name:\"criteria_range1\",detail:\"The range to check against `criterion1`.\"},{name:\"criterion1\",detail:\"The pattern or test to apply to `criteria_range1`.\"},{name:\"criteria_range2\",detail:\"Additional ranges to check.\"}]},PERMUT:{d:\"Returns the number of ways to choose some number of objects from a pool of a given size of objects, considering order.\",a:\"Number of permutations from a number of objects.\",p:[{name:\"n\",detail:\"The size of the pool of objects to choose from.\"},{name:\"k\",detail:\"The number of objects to choose.\"}]},TRIMMEAN:{d:\"Calculates the mean of a dataset excluding some proportion of data from the high and low ends of the dataset.\",a:\"Mean of a dataset excluding high/low ends.\",p:[{name:\"data\",detail:\"Array or range containing the dataset to consider.\"},{name:\"exclude_proportion\",detail:\"The proportion of the dataset to exclude, from the extremities of the set.\"}]},PERCENTILE_EXC:{d:\"Returns the value at a given percentile of a dataset exclusive of 0 and 1.\",a:\"Value at a given percentile of a dataset exclusive of 0 and 1.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"percentile\",detail:\"The percentile, exclusive of 0 and 1, whose value within 'data' will be calculated and returned.\"}]},PERCENTILE_INC:{d:\"Returns the value at a given percentile of a dataset.\",a:\"Value at a given percentile of a dataset.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"percentile\",detail:\"The percentile whose value within `data` will be calculated and returned.`\"}]},PEARSON:{d:\"Calculates r, the Pearson product-moment correlation coefficient of a dataset.\",a:\"Pearson Product-Moment Correlation Coefficient.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},NORM_S_INV:{d:\"Returns the value of the inverse standard normal distribution function for a specified value.\",a:\"Inverse standard normal distribution function.\",p:[{name:\"x\",detail:\"The input to the inverse standard normal distribution function.\"}]},NORM_S_DIST:{d:\"Returns the value of the standard normal cumulative distribution function for a specified value.\",a:\"Standard normal cumulative distribution function.\",p:[{name:\"x\",detail:\"The input to the standard normal cumulative distribution function.\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf TRUE(), it returns the cumulative distribution function;\\n\\nIf it is FALSE(), it returns the probability density function.\"}]},NORM_INV:{d:\"Returns the value of the inverse normal distribution function for a specified value, mean, and standard deviation.\",a:\"Inverse normal distribution function.\",p:[{name:\"x\",detail:\"The input to the inverse normal distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the normal distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the normal distribution function.\"}]},NORM_DIST:{d:\"Returns the value of the normal distribution function (or normal cumulative distribution function) for a specified value, mean, and standard deviation.\",a:\"Normal distribution function.\",p:[{name:\"x\",detail:\"The input to the normal distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the normal distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the normal distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the normal cumulative distribution function rather than the distribution function.\"}]},NEGBINOM_DIST:{d:\"Calculates the probability of drawing a certain number of failures before a certain number of successes given a probability of success in independent trials.\",a:\"Negative binomial distribution probability.\",p:[{name:\"num_failures\",detail:\"The number of failures to model.\"},{name:\"num_successes\",detail:\"The number of successes to model.\"},{name:\"prob_success\",detail:\"The probability of success in any given trial.\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf TRUE(), it returns the cumulative distribution function;\\n\\nIf it is FALSE(), it returns the probability density function.\"}]},MINA:{d:\"Returns the minimum numeric value in a dataset.\",a:\"Minimum numeric value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the minimum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the minimum value.\"}]},MIN:{d:\"Returns the minimum value in a numeric dataset.\",a:\"Minimum value in a numeric dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the minimum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the minimum value.\"}]},MEDIAN:{d:\"Returns the median value in a numeric dataset.\",a:\"Median value in a numeric dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the median value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the median value.\"}]},MAXA:{d:\"Returns the maximum numeric value in a dataset.\",a:\"Maximum numeric value in a dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the maximum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the maximum value.\"}]},MAX:{d:\"Returns the maximum value in a numeric dataset.\",a:\"Maximum value in a numeric dataset.\",p:[{name:\"value1\",detail:\"The first value or range to consider when calculating the maximum value.\"},{name:\"value2\",detail:\"Additional values or ranges to consider when calculating the maximum value.\"}]},LOGNORM_INV:{d:\"Returns the value of the inverse log-normal cumulative distribution with given mean and standard deviation at a specified value.\",a:\"Inverse log-normal cumulative distribution function.\",p:[{name:\"x\",detail:\"The input to the inverse log-normal cumulative distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the inverse log-normal cumulative distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the inverse log-normal cumulative distribution function.\"}]},LOGNORM_DIST:{d:\"Returns the value of the log-normal cumulative distribution with given mean and standard deviation at a specified value.\",a:\"Log-normal cumulative distribution probability.\",p:[{name:\"x\",detail:\"The input to the log-normal cumulative distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the log-normal cumulative distribution function.\"},{name:\"standard_deviation\",detail:\"The standard deviation (sigma) of the log-normal cumulative distribution function.\"},{name:\"cumulative\",detail:\"Determine the logical value of the function form. \\n\\nIf TRUE(), it returns the cumulative distribution function;\\n\\nIf it is FALSE(), it returns the probability density function.\"}]},Z_TEST:{d:\"Returns the one-tailed p-value of a Z-test with standard distribution.\",a:\"One-tailed p-value of a z-test.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"value\",detail:\"The test statistic to use in the Z-test.\"},{name:\"standard_deviation\",detail:\"The standard deviation to assume for the Z-test. If this is not provided, the standard deviation of the data will be used.\"}]},PROB:{d:\"Given a set of values and corresponding probabilities, calculates the probability that a value chosen at random falls between two limits.\",a:\"Probability values lie in a range.\",p:[{name:\"data\",detail:\"Array or range containing the dataset to consider.\"},{name:\"probabilities\",detail:\"Array or range containing probabilities corresponding to `data`.\"},{name:\"low_limit\",detail:\"The lower bound on the value range for which to calculate the probability.\"},{name:\"high_limit\",detail:\"The upper bound on the value range for which to calculate the probability.\"}]},QUARTILE_EXC:{d:\"Returns a value nearest to a specified quartile of a dataset exclusive of 0 and 4.\",a:\"Value nearest to a specific quartile of a dataset exclusive of 0 and 4.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"quartile_number\",detail:\"Which quartile to return.\"}]},QUARTILE_INC:{d:\"Returns a value nearest to a specified quartile of a dataset.\",a:\"Value nearest to a specific quartile of a dataset.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"quartile_number\",detail:\"Which quartile value to return.\"}]},POISSON_DIST:{d:\"Returns the value of the Poisson distribution function (or Poisson cumulative distribution function) for a specified value and mean.\",a:\"Poisson distribution function.\",p:[{name:\"x\",detail:\"The input to the Poisson distribution function.\"},{name:\"mean\",detail:\"The mean (mu) of the Poisson distribution function.\"},{name:\"cumulative\",detail:\"Whether to use the Poisson cumulative distribution function rather than the distribution function.\"}]},RSQ:{d:\"Calculates the square of r, the Pearson product-moment correlation coefficient of a dataset.\",a:\"Square of the correlation coefficient.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},T_DIST:{d:\"Calculates the left tail probability for a Student's t-distribution with a given input (x).\",a:\"The left-tailed Student's t-distribution\",p:[{name:\"x\",detail:\"The input to the t-distribution function.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"},{name:\"cumulative\",detail:\"If cumulative is TRUE, T.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function.\"}]},T_DIST_2T:{d:\"Calculates the probability for two tailed Student's t-distribution with a given input (x).\",a:\"The two tailed Student's t-distribution\",p:[{name:\"x\",detail:\"The input to the t-distribution function.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_DIST_RT:{d:\"Calculates the right tail probability for a Student's t-distribution with a given input (x).\",a:\"The right-tailed Student's t-distribution\",p:[{name:\"x\",detail:\"The input to the t-distribution function.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_INV:{d:\"Calculates the negative inverse of the one-tailed TDIST function.\",a:\"T.INV\",p:[{name:\"probability\",detail:\"The probability associated with the two-tailed t-distribution.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_INV_2T:{d:\"Calculates the inverse of the two-tailed TDIST function.\",a:\"T.INV.2T\",p:[{name:\"probability\",detail:\"The probability associated with the two-tailed t-distribution.\"},{name:\"degrees_freedom\",detail:\"The number of degrees of freedom.\"}]},T_TEST:{d:\"t-test. Returns the probability associated with Student's t-test. Determines whether two samples are likely to have come from the same two underlying populations that have the same mean.\",a:\"Returns the probability associated with t-test.\",p:[{name:\"range1\",detail:\"The first sample of data or group of cells to consider for the t-test.\"},{name:\"range2\",detail:\"The second sample of data or group of cells to consider for the t-test.\"},{name:\"tails\",detail:\"Specifies the number of distribution tails.\"},{name:\"type\",detail:\"Specifies the type of t-test.\"}]},F_DIST:{d:\"Calculates the left-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.\",a:\"F probability distribution (left-tailed).\",p:[{name:\"x\",detail:\"The input to the F probability distribution function. The value at which to evaluate the function.\"},{name:\"degrees_freedom1\",detail:\"The numerator of the number of degrees of freedom.\"},{name:\"degrees_freedom2\",detail:\"The denominator of the number of degrees of freedom.\"},{name:\"cumulative\",detail:\"Logical value that determines the form of the function.\"}]},F_DIST_RT:{d:\"Calculates the right-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.\",a:\"F probability distribution.\",p:[{name:\"x\",detail:\"The input to the F probability distribution function. The value at which to evaluate the function.\"},{name:\"degrees_freedom1\",detail:\"The numerator of the number of degrees of freedom.\"},{name:\"degrees_freedom2\",detail:\"The denominator of the number of degrees of freedom.\"}]},VAR_P:{d:\"Calculates the variance based on an entire population.\",a:\"Variance of entire population.\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},VAR_S:{d:\"Calculates the variance based on a sample.\",a:\"Variance.\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},VARA:{d:\"Calculates the variance based on a sample, setting text to the value `0`.\",a:\"Variance of sample (text as 0).\",p:[{name:\"value1\",detail:\"The first value or range of the sample.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the sample.\"}]},VARPA:{d:\"Calculates the variance based on an entire population, setting text to the value `0`.\",a:\"Variance of entire population (text as 0).\",p:[{name:\"value1\",detail:\"The first value or range of the population.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the population.\"}]},STEYX:{d:\"Calculates the standard error of the predicted y-value for each x in the regression of a dataset.\",a:\"Standard error of predicted y-values in regression.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},STANDARDIZE:{d:\"Calculates the normalized equivalent of a random variable given mean and standard deviation of the distribution.\",a:\"Normalized equivalent of a random variable.\",p:[{name:\"value\",detail:\"The value of the random variable to normalize.\"},{name:\"mean\",detail:\"The mean of the distribution.\"},{name:\"standard_deviation\",detail:\"The standard deviation of the distribution.\"}]},SMALL:{d:\"Returns the nth smallest element from a data set, where n is user-defined.\",a:\"Nth smallest element in a data set.\",p:[{name:\"data\",detail:\"The array or range containing the dataset to consider.\"},{name:\"n\",detail:\"The rank from smallest to largest of the element to return.\"}]},SLOPE:{d:\"Calculates the slope of the line resulting from linear regression of a dataset.\",a:\"Slope of line from linear regression of data.\",p:[{name:\"data_y\",detail:\"The range representing the array or matrix of dependent data.\"},{name:\"data_x\",detail:\"The range representing the array or matrix of independent data.\"}]},SKEW:{d:\"Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean.\",a:\"Skewness of a dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the dataset.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the dataset.\"}]},SKEW_P:{d:\"Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean. This assumes the dataset is for the population.\",a:\"Skewness of a population's dataset.\",p:[{name:\"value1\",detail:\"The first value or range of the dataset.\"},{name:\"value2\",detail:\"Additional values or ranges to include in the dataset.\"}]},VLOOKUP:{d:\"Vertical lookup. Searches down the first column of a range for a key and returns the value of a specified cell in the row found.\",a:\"Vertical lookup.\",p:[{name:\"search_key\",detail:'The value to search for. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"range\",detail:\"The range to consider for the search. The first column in the range is searched for the key specified in `search_key`.\"},{name:\"index\",detail:\"The column index of the value to be returned, where the first column in `range` is numbered 1.\"},{name:\"is_sorted\",detail:\"Indicates whether the column to be searched (the first column of the specified range) is sorted, in which case the closest match for `search_key` will be returned.\"}]},HLOOKUP:{d:\"Horizontal lookup. Searches across the first row of a range for a key and returns the value of a specified cell in the column found.\",a:\"Horizontal lookup\",p:[{name:\"search_key\",detail:'The value to search for. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"range\",detail:\"The range to consider for the search. The first row in the range is searched for the key specified in `search_key`.\"},{name:\"index\",detail:\"The row index of the value to be returned, where the first row in `range` is numbered 1.\"},{name:\"is_sorted\",detail:\"Indicates whether the row to be searched (the first row of the specified range) is sorted.\"}]},LOOKUP:{d:\"Looks through a sorted row or column for a key and returns the value of the cell in a result range located in the same position as the search row or column.\",a:\"Look up a value.\",p:[{name:\"search_key\",detail:'The value to search for in the row or column. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"search_range|search_result_array\",detail:\"One method of using this function is to provide a single sorted row or column `search_range` to look through for the `search_key` with a second argument `result_range`. The other way is to combine these two arguments into one `search_result_array` where the first row or column is searched and a value is returned from the last row or column in the array. If `search_key` is not found, a non-exact match may be returned.\"},{name:\"result_range\",detail:\"The range from which to return a result. The value returned corresponds to the location where `search_key` is found in `search_range`. This range must be only a single row or column and should not be used if using the `search_result_array` method.\"}]},ADDRESS:{d:\"Returns a cell reference as a string.\",a:\"Cell reference as a string.\",p:[{name:\"row\",detail:\"The row number of the cell reference\"},{name:\"column\",detail:\"The column number (not name) of the cell reference. `A` is column number `1`.\"},{name:\"absolute_relative_mode\",detail:\"An indicator of whether the reference is row/column absolute. `1` is row and column absolute (e.g. $A$1), `2` is row absolute and column relative (e.g. A$1), `3` is row relative and column absolute (e.g. $A1), and `4` is row and column relative (e.g. A1).\"},{name:\"use_a1_notation\",detail:\"A boolean indicating whether to use `A1` style notation (TRUE) or `R1C1` style notation (FALSE).\"},{name:\"sheet\",detail:\"Text indicating the name of the sheet into which the address points.\"}]},INDIRECT:{d:\"Returns a cell reference specified by a string.\",a:\"A cell reference specified by a string.\",p:[{name:\"cell_reference_as_string\",detail:\"A cell reference, written as a string with surrounding quotation marks.\"},{name:\"is_A1_notation\",detail:\"Indicates if the cell reference is in A1 notation (TRUE) or R1C1 notation (FALSE).\"}]},ROW:{d:\"Returns the row number of a specified cell.\",a:\"Row number of a specified cell.\",p:[{name:\"cell_reference\",detail:\"The cell whose row number will be returned.\"}]},ROWS:{d:\"Returns the number of rows in a specified array or range.\",a:\"Number of rows in a specified array or range.\",p:[{name:\"range\",detail:\"The range whose row count will be returned.\"}]},COLUMN:{d:\"Returns the column number of a specified cell, with `A=1`.\",a:\"Column number of a specified cell.\",p:[{name:\"cell_reference\",detail:\"The cell whose column number will be returned. Column `A` corresponds to `1`.\"}]},COLUMNS:{d:\"Returns the number of columns in a specified array or range.\",a:\"Number of columns in a specified array or range.\",p:[{name:\"range\",detail:\"The range whose column count will be returned.\"}]},OFFSET:{d:\"Returns a range reference shifted a specified number of rows and columns from a starting cell reference.\",a:\"A range reference offset relative to a cell.\",p:[{name:\"cell_reference\",detail:\"The starting point from which to count the offset rows and columns.\"},{name:\"offset_rows\",detail:\"The number of rows to offset by.\"},{name:\"offset_columns\",detail:\"The number of columns to offset by.\"},{name:\"height\",detail:\"The height of the range to return starting at the offset target.\"},{name:\"width\",detail:\"The width of the range to return starting at the offset target.\"}]},MATCH:{d:\"Returns the relative position of an item in a range that matches a specified value.\",a:\"Position of item in range that matches value.\",p:[{name:\"search_key\",detail:'The value to search for. For example, `42`, `\"Cats\"`, or `I24`.'},{name:\"range\",detail:\"The one-dimensional array to be searched.\"},{name:\"search_type\",detail:\"The search method. `1` (default) finds the largest value less than or equal to `search_key` when `range` is sorted in ascending order. `0` finds the exact value when `range` is unsorted. `-1` finds the smallest value greater than or equal to `search_key` when `range` is sorted in descending order.\"}]},INDEX:{d:\"Returns the content of a cell, specified by row and column offset.\",a:\"Content of cell specified by row and column offset.\",p:[{name:\"reference\",detail:\"The array of cells to be offset into.\"},{name:\"row\",detail:\"The number of offset rows.\"},{name:\"column\",detail:\"The number of offset columns.\"}]},GETPIVOTDATA:{d:\"Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.\",a:\"Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.\",p:[{name:\"value_name\",detail:\"The name of the value in the pivot table for which you want to get data.\"},{name:\"any_pivot_table_cell\",detail:\"Any reference to a cell in the desired pivot table (top corner recommended).\"},{name:\"original_column\",detail:\"The name of the column in the original data set (not the pivot table).\"},{name:\"pivot_item\",detail:\"The name of the row or column shown in the pivot table corresponding to *original_column* that you want to retrieve.\"}]},CHOOSE:{d:\"Returns an element from a list of choices based on index.\",a:\"An element from a list of choices based on index.\",p:[{name:\"index\",detail:\"Which choice (of the up to 30 provided) to return.\"},{name:\"choice1\",detail:\"A potential value to return. Required. May be a reference to a cell or an individual value.\"},{name:\"choice2\",detail:\"Additional values among which to choose.\"}]},HYPERLINK:{d:\"Creates a hyperlink inside a cell.\",a:\"Creates a hyperlink inside a cell.\",p:[{name:\"url\",detail:\"The full URL of the link location enclosed in quotation marks, or a reference to a cell containing such a URL.\"},{name:\"link_label\",detail:\"The text to display in the cell as the link, enclosed in quotation marks, or a reference to a cell containing such a label.\"}]},TIME:{d:\"Converts a provided hour, minute, and second into a time.\",a:\"Converts hour/minute/second into a time.\",p:[{name:\"hour\",detail:\"The hour component of the time.\"},{name:\"minute\",detail:\"The minute component of the time.\"},{name:\"second\",detail:\"The second component of the time.\"}]},TIMEVALUE:{d:\"Returns the fraction of a 24-hour day the time represents.\",a:\"Converts a time string into its serial number representation.\",p:[{name:\"time_string\",detail:\"The string that holds the time representation.\"}]},EOMONTH:{d:\"Returns a date on the last day of a month that falls a specified number of months before or after another date.\",a:\"Last day of a month before or after a date.\",p:[{name:\"start_date\",detail:\"The date from which to calculate the result.\"},{name:\"months\",detail:\"The number of months before (negative) or after (positive) 'start_date' to consider.\"}]},EDATE:{d:\"Returns a date a specified number of months before or after another date.\",a:\"Date a number of months before/after another date.\",p:[{name:\"start_date\",detail:\"The date from which to calculate the result.\"},{name:\"months\",detail:\"The number of months before (negative) or after (positive) 'start_date' to calculate.\"}]},SECOND:{d:\"Returns the second component of a specific time, in numeric format.\",a:\"Second component of a specific time.\",p:[{name:\"time\",detail:\"The time from which to calculate the second component\"}]},MINUTE:{d:\"Returns the minute component of a specific time, in numeric format.\",a:\"Minute component of a specific time.\",p:[{name:\"time\",detail:\"The time from which to calculate the minute component.\"}]},HOUR:{d:\"Returns the hour component of a specific time, in numeric format.\",a:\"Hour component of a specific time.\",p:[{name:\"time\",detail:\"The time from which to calculate the hour component.\"}]},NOW:{d:\"Returns the current date and time as a date value.\",a:\"Current date and time as a date value.\",p:[]},NETWORKDAYS:{d:\"Returns the number of net working days between two provided days.\",a:\"Net working days between two provided days.\",p:[{name:\"start_date\",detail:\"The start date of the period from which to calculate the number of net working days.\"},{name:\"end_date\",detail:\"The end date of the period from which to calculate the number of net working days.\"},{name:\"holidays\",detail:\"A range or array constant containing the date serial numbers to consider holidays.\"}]},NETWORKDAYS_INTL:{d:\"Returns the number of net working days between two provided days excluding specified weekend days and holidays.\",a:\"Net working days between two dates (specifying weekends).\",p:[{name:\"start_date\",detail:\"The start date of the period from which to calculate the number of net working days.\"},{name:\"end_date\",detail:\"The end date of the period from which to calculate the number of net working days.\"},{name:\"weekend\",detail:\"A number or string representing which days of the week are considered weekends.\"},{name:\"holidays\",detail:\"A range or array constant containing the dates to consider as holidays.\"}]},ISOWEEKNUM:{d:\"Returns a number representing the ISO week of the year where the provided date falls.\",a:\"ISO week number of the year.\",p:[{name:\"date\",detail:\"The date for which to determine the ISO week number. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"}]},WEEKNUM:{d:\"Returns a number representing the week of the year where the provided date falls.\",a:\"Week number of the year.\",p:[{name:\"date\",detail:\"The date for which to determine the week number. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"type\",detail:\"A number representing the day that a week starts on. Sunday = 1.\"}]},WEEKDAY:{d:\"Returns a number representing the day of the week of the date provided.\",a:\"Day of the week of the date provided (as number).\",p:[{name:\"date\",detail:\"The date for which to determine the day of the week. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"type\",detail:\"A number indicating which numbering system to use to represent weekdays. By default, counts starting with Sunday = 1.\"}]},DAY:{d:\"Returns the day of the month that a specific date falls on, in numeric format.\",a:\"Day of the month that a specific date falls on.\",p:[{name:\"date\",detail:\"The date from which to extract the day.\"}]},DAYS:{d:\"Returns the number of days between two dates.\",a:\"Number of days between two dates.\",p:[{name:\"end_date\",detail:\"The end of the date range.\"},{name:\"start_date\",detail:\"The start of the date range.\"}]},DAYS360:{d:\"Returns the difference between two days based on the 360 day year used in some financial interest calculations.\",a:\"Days between two dates on a 360-day year.\",p:[{name:\"start_date\",detail:\"The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"end_date\",detail:\"The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"method\",detail:\"An indicator of what day count method to use.\"}]},DATE:{d:\"Converts a provided year, month, and day into a date.\",a:\"Converts year/month/day into a date.\",p:[{name:\"year\",detail:\"The year component of the date.\"},{name:\"month\",detail:\"The month component of the date.\"},{name:\"day\",detail:\"The day component of the date.\"}]},DATEVALUE:{d:\"Converts a provided date string in a known format to a date value.\",a:\"Converts a date string to a date value.\",p:[{name:\"date_string\",detail:\"The string representing the date.\"}]},DATEDIF:{d:\"Calculates the number of days, months, or years between two dates.\",a:\"Date Difference.\",p:[{name:\"start_date\",detail:\"The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"end_date\",detail:\"The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"unit\",detail:'A string abbreviation for unit of time. For example, \"M\" for month. Accepted values are \"Y\",\"M\",\"D\",\"MD\",\"YM\",\"YD\".'}]},WORKDAY:{d:\"Calculates the date after a number of working days from a specified start date.\",a:\"Number of working days from start date.\",p:[{name:\"start_date\",detail:\"The date from which to begin counting.\"},{name:\"num_days\",detail:\"The number of working days to advance from `start_date`. If negative, counts backwards.\"},{name:\"holidays\",detail:\"A range or array constant containing the dates to consider holidays.\"}]},WORKDAY_INTL:{d:\"Calculates the date after a specified number of workdays excluding specified weekend days and holidays.\",a:\"Date after a number of workdays (specifying weekends).\",p:[{name:\"start_date\",detail:\"The date from which to begin counting.\"},{name:\"num_days\",detail:\"The number of working days to advance from `start_date`. If negative, counts backwards.\"},{name:\"weekend\",detail:\"A number or string representing which days of the week are considered weekends.\"},{name:\"holidays\",detail:\"A range or array constant containing the dates to consider holidays.\"}]},YEAR:{d:\"Returns the year specified by a given date.\",a:\"Year specified by a given date.\",p:[{name:\"date\",detail:\"The date from which to extract the year.\"}]},YEARFRAC:{d:\"Returns the number of years, including fractional years, between two dates using a specified day count convention.\",a:\"Exact number of years between two dates.\",p:[{name:\"start_date\",detail:\"The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"end_date\",detail:\"The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},TODAY:{d:\"Returns the current date as a date value.\",a:\"Current date as a date value.\",p:[]},MONTH:{d:\"Returns the month of the year a specific date falls in, in numeric format.\",a:\"Month of the year a specific date falls in.\",p:[{name:\"date\",detail:\"The date from which to extract the month.\"}]},EFFECT:{d:\"Calculates the annual effective interest rate given the nominal rate and number of compounding periods per year.\",a:\"Annual effective interest rate.\",p:[{name:\"nominal_rate\",detail:\"The nominal interest rate per year.\"},{name:\"periods_per_year\",detail:\"The number of compounding periods per year.\"}]},DOLLAR:{d:\"Formats a number into the currency specific to your spreadsheet locale.\",a:\"Formats a number as currency specific to your spreadsheet locale.\",p:[{name:\"number\",detail:\"The value to be formatted.\"},{name:\"number_of_places\",detail:\"The number of decimal places to display.\"}]},DOLLARDE:{d:\"Converts a price quotation given as a decimal fraction into a decimal value.\",a:\"Converts a decimal fraction to decimal value.\",p:[{name:\"fractional_price\",detail:\"The price quotation given using fractional decimal conventions.\"},{name:\"unit\",detail:\"The units of the fraction, e.g. `8` for 1/8ths or `32` for 1/32nds.\"}]},DOLLARFR:{d:\"Converts a price quotation given as a decimal value into a decimal fraction.\",a:\"Converts a decimal value to decimal fraction.\",p:[{name:\"decimal_price\",detail:\"The price quotation given as a decimal value.\"},{name:\"unit\",detail:\"The units of the desired fraction, e.g. `8` for 1/8ths or `32` for 1/32nds.\"}]},DB:{d:\"Calculates the depreciation of an asset for a specified period using the arithmetic declining balance method.\",a:\"Depreciation via declining balance method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"},{name:\"period\",detail:\"The single period within `life` for which to calculate depreciation.\"},{name:\"month\",detail:\"The number of months in the first year of depreciation.\"}]},DDB:{d:\"Calculates the depreciation of an asset for a specified period using the double-declining balance method.\",a:\"Depreciation via double-declining balance method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"},{name:\"period\",detail:\"The single period within `life` for which to calculate depreciation.\"},{name:\"factor\",detail:\"The factor by which depreciation decreases.\"}]},RATE:{d:\"Calculates the interest rate of an annuity investment based on constant-amount periodic payments and the assumption of a constant interest rate.\",a:\"Interest rate of an annuity investment.\",p:[{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"payment_per_period\",detail:\"The amount per period to be paid.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"},{name:\"rate_guess\",detail:\"An estimate for what the interest rate will be.\"}]},CUMPRINC:{d:\"Calculates the cumulative principal paid over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Cumulative principal paid over a set of periods.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"first_period\",detail:\"The number of the payment period to begin the cumulative calculation.\"},{name:\"last_period\",detail:\"The number of the payment period to end the cumulative calculation.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},COUPNUM:{d:\"Calculates the number of coupons, or interest payments, between the settlement date and the maturity date of the investment.\",a:\"Number of coupons between settlement and maturity.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},SYD:{d:\"Calculates the depreciation of an asset for a specified period using the sum of years digits method.\",a:\"Depreciation via sum of years digits method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"},{name:\"period\",detail:\"The single period within `life` for which to calculate depreciation.\"}]},TBILLEQ:{d:\"Calculates the equivalent annualized rate of return of a US Treasury Bill based on discount rate.\",a:\"Equivalent rate of return for a Treasury bill.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"discount\",detail:\"The discount rate of the bill at time of purchase.\"}]},TBILLYIELD:{d:\"Calculates the yield of a US Treasury Bill based on price.\",a:\"The yield of a us treasury bill based on price.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"}]},TBILLPRICE:{d:\"Calculates the price of a US Treasury Bill based on discount rate.\",a:\"Price of US treasury bill.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"discount\",detail:\"The discount rate of the bill at time of purchase.\"}]},PV:{d:\"Calculates the present value of an annuity investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Present value of an annuity investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"payment_amount\",detail:\"The amount per period to be paid.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},ACCRINT:{d:\"Calculates the accrued interest of a security that has periodic payments.\",a:\"Accrued interest of security with periodic payments.\",p:[{name:\"issue\",detail:\"The date the security was initially issued.\"},{name:\"first_payment\",detail:\"The first date interest will be paid.\"},{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"},{name:\"calc_method\",detail:\"[Optional-defaults to TRUE()] - A logical value that specifies the method used to calculate the total accrued interest when the settlement date is later than the first interest accrual date. \\n\\nIf the value is TRUE, the total accrued interest from the issue date to the settlement date is returned. \\n\\nIf the value is FALSE, return the accrued interest from the first interest accrual date to the settlement date.\"}]},ACCRINTM:{d:\"Calculates the accrued interest of a security that pays interest at maturity.\",a:\"Accrued interest of security paying at maturity.\",p:[{name:\"issue\",detail:\"The date the security was initially issued.\"},{name:\"maturity\",detail:\"The maturity date of the security.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPDAYBS:{d:\"Calculates the number of days from the first coupon, or interest payment, until settlement.\",a:\"Number of days from first coupon to settlement.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPDAYS:{d:\"Calculates the number of days in the coupon, or interest payment, period that contains the specified settlement date.\",a:\"Days in coupon period containing settlement date.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPDAYSNC:{d:\"Calculates the number of days from the settlement date until the next coupon, or interest payment.\",a:\"Days from settlement until next coupon.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPNCD:{d:\"Calculates next coupon, or interest payment, date after the settlement date.\",a:\"Next coupon date after the settlement date.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},COUPPCD:{d:\"Calculates last coupon, or interest payment, date before the settlement date.\",a:\"Last coupon date before settlement date.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},FV:{d:\"Calculates the future value of an annuity investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Future value of an annuity investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"payment_amount\",detail:\"The amount per period to be paid.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},FVSCHEDULE:{d:\"Calculates the future value of some principal based on a specified series of potentially varying interest rates.\",a:\"Future value of principal from series of rates.\",p:[{name:\"principal\",detail:\"The amount of initial capital or value to compound against.\"},{name:\"rate_schedule\",detail:\"A series of interest rates to compound against the `principal`.\"}]},YIELD:{d:\"Calculates the annual yield of a security paying periodic interest, such as a US Treasury Bond, based on price.\",a:\"Annual yield of a security paying periodic interest.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},YIELDDISC:{d:\"Calculates the annual yield of a discount (non-interest-bearing) security, based on price.\",a:\"Annual yield of a discount security.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},NOMINAL:{d:\"Calculates the annual nominal interest rate given the effective rate and number of compounding periods per year.\",a:\"Annual nominal interest rate.\",p:[{name:\"effective_rate\",detail:\"The effective interest rate per year.\"},{name:\"periods_per_year\",detail:\"The number of compounding periods per year.\"}]},XIRR:{d:\"Calculates the internal rate of return of an investment based on a specified series of potentially irregularly spaced cash flows.\",a:\"Internal rate of return given non-periodic cashflows.\",p:[{name:\"cashflow_amounts\",detail:\"An array or range containing the income or payments associated with the investment.\"},{name:\"cashflow_dates\",detail:\"An array or range with dates corresponding to the cash flows in `cashflow_amounts`.\"},{name:\"rate_guess\",detail:\"An estimate for what the internal rate of return will be.\"}]},MIRR:{d:\"Calculates the modified internal rate of return on an investment based on a series of periodic cash flows and the difference between the interest rate paid on financing versus the return received on reinvested income.\",a:\"Modified internal rate of return.\",p:[{name:\"cashflow_amounts\",detail:\"An array or range containing the income or payments associated with the investment.\"},{name:\"financing_rate\",detail:\"The interest rate paid on funds invested.\"},{name:\"reinvestment_return_rate\",detail:\"The return (as a percentage) earned on reinvestment of income received from the investment.\"}]},IRR:{d:\"Calculates the internal rate of return on an investment based on a series of periodic cash flows.\",a:\"Internal rate of return given periodic cashflows.\",p:[{name:\"cashflow_amounts\",detail:\"An array or range containing the income or payments associated with the investment.\"},{name:\"rate_guess\",detail:\"An estimate for what the internal rate of return will be.\"}]},NPV:{d:\"Calculates the net present value of an investment based on a series of periodic cash flows and a discount rate.\",a:\"The net present value of an investment based on a series of periodic cash flows and a discount rate.\",p:[{name:\"discount\",detail:\"The discount rate of the investment over one period.\"},{name:\"cashflow1\",detail:\"The first future cash flow.\"},{name:\"cashflow2\",detail:\"Additional future cash flows.\"}]},XNPV:{d:\"Calculates the net present value of an investment based on a specified series of potentially irregularly spaced cash flows and a discount rate.\",a:\"Net present value given non-periodic cashflows.\",p:[{name:\"discount\",detail:\"The discount rate of the investment over one period.\"},{name:\"cashflow_amounts\",detail:\"A range of cells containing the income or payments associated with the investment.\"},{name:\"cashflow_dates\",detail:\"A range of cells with dates corresponding to the cash flows in `cashflow_amounts`.\"}]},CUMIPMT:{d:\"Calculates the cumulative interest over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Cumulative interest paid over a set of periods.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"first_period\",detail:\"The number of the payment period to begin the cumulative calculation.\"},{name:\"last_period\",detail:\"The number of the payment period to end the cumulative calculation.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},PMT:{d:\"Calculates the periodic payment for an annuity investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Periodic payment for an annuity investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},IPMT:{d:\"Calculates the payment on interest for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Payment on interest for an investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"period\",detail:\"The amortization period, in terms of number of periods.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},PPMT:{d:\"Calculates the payment on the principal of an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Payment on the principal of an investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"period\",detail:\"The amortization period, in terms of number of periods.\"},{name:\"number_of_periods\",detail:\"The number of payments to be made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},INTRATE:{d:\"Calculates the effective interest rate generated when an investment is purchased at one price and sold at another with no interest or dividends generated by the investment itself.\",a:\"Calculates effective interest rate.\",p:[{name:\"buy_date\",detail:\"The date of purchase of the investment.\"},{name:\"sell_date\",detail:\"The date of sale of the investment.\"},{name:\"buy_price\",detail:\"The price at which the investment was purchased.\"},{name:\"sell_price\",detail:\"The price at which the investment was sold.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},PRICE:{d:\"Calculates the price of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.\",a:\"Price of a security paying periodic interest.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},PRICEDISC:{d:\"Calculates the price of a discount (non-interest-bearing) security, based on expected yield.\",a:\"Price of a discount security.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"discount\",detail:\"The discount rate of the security at time of purchase.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},PRICEMAT:{d:\"Calculates the price of a security paying interest at maturity, based on expected yield.\",a:\"Price of security paying interest at maturity.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"issue\",detail:\"The date the security was initially issued.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},RECEIVED:{d:\"Calculates the amount received at maturity for an investment in fixed-income securities purchased on a given date.\",a:\"Amount received at maturity for a security.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"investment\",detail:\"The amount invested (irrespective of face value of each security).\"},{name:\"discount\",detail:\"The discount rate of the security invested in.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},DISC:{d:\"Calculates the discount rate of a security based on price.\",a:\"The discount rate of a security based on price.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"price\",detail:\"The price at which the security is bought per 100 face value.\"},{name:\"redemption\",detail:\"The redemption amount per 100 face value, or par.\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},NPER:{d:\"Calculates the number of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.\",a:\"Number of payment periods for an investment.\",p:[{name:\"rate\",detail:\"The interest rate.\"},{name:\"payment_amount\",detail:\"The amount of each payment made.\"},{name:\"present_value\",detail:\"The current value of the annuity.\"},{name:\"future_value\",detail:\"The future value remaining after the final payment has been made.\"},{name:\"end_or_beginning\",detail:\"Whether payments are due at the end (`0`) or beginning (`1`) of each period.\"}]},SLN:{d:\"Calculates the depreciation of an asset for one period using the straight-line method.\",a:\"Depreciation of asset using the straight-line method.\",p:[{name:\"cost\",detail:\"The initial cost of the asset.\"},{name:\"salvage\",detail:\"The value of the asset at the end of depreciation.\"},{name:\"life\",detail:\"The number of periods over which the asset is depreciated.\"}]},DURATION:{d:\"Calculates the number of compounding periods required for an investment of a specified present value appreciating at a given rate to reach a target value.\",a:\"Number of periods for an investment to reach a value.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},MDURATION:{d:\"Calculates the modified Macaulay duration of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.\",a:\"Modified Macaulay duration.\",p:[{name:\"settlement\",detail:\"The settlement date of the security, the date after issuance when the security is delivered to the buyer.\"},{name:\"maturity\",detail:\"The maturity or end date of the security, when it can be redeemed at face, or par value.\"},{name:\"rate\",detail:\"The annualized rate of interest.\"},{name:\"yield\",detail:\"The expected annual yield of the security.\"},{name:\"frequency\",detail:\"The number of interest or coupon payments per year (1, 2, or 4).\"},{name:\"day_count_convention\",detail:\"An indicator of what day count method to use.\"}]},BIN2DEC:{d:\"Converts a signed binary number to decimal format.\",a:\"Converts a signed binary number to decimal format.\",p:[{name:\"signed_binary_number\",detail:\"The signed 10-bit binary value to be converted to decimal, provided as a string.\"}]},BIN2HEX:{d:\"Converts a signed binary number to signed hexadecimal format.\",a:\"Converts a binary number to hexadecimal.\",p:[{name:\"signed_binary_number\",detail:\"The signed 10-bit binary value to be converted to signed hexademical, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},BIN2OCT:{d:\"Converts a signed binary number to signed octal format.\",a:\"Converts a binary number to octal.\",p:[{name:\"signed_binary_number\",detail:\"The signed 10-bit binary value to be converted to signed octal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},DEC2BIN:{d:\"Converts a decimal number to signed binary format.\",a:\"Converts a decimal number to signed binary format.\",p:[{name:\"decimal_number\",detail:\"The decimal value to be converted to signed binary, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},DEC2HEX:{d:\"Converts a decimal number to signed hexadecimal format.\",a:\"Converts a decimal number to hexadecimal.\",p:[{name:\"decimal_number\",detail:\"The decimal value to be converted to signed hexadecimal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},DEC2OCT:{d:\"Converts a decimal number to signed octal format.\",a:\"Converts a decimal number to signed octal format.\",p:[{name:\"decimal_number\",detail:\"The decimal value to be converted to signed octal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},HEX2BIN:{d:\"Converts a signed hexadecimal number to signed binary format.\",a:\"Converts a hexadecimal number to binary.\",p:[{name:\"signed_hexadecimal_number\",detail:\"The signed 40-bit hexadecimal value to be converted to signed binary, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},HEX2DEC:{d:\"Converts a signed hexadecimal number to decimal format.\",a:\"Converts a hexadecimal number to decimal.\",p:[{name:\"signed_hexadecimal_number\",detail:\"The signed 40-bit hexadecimal value to be converted to decimal, provided as a string.\"}]},HEX2OCT:{d:\"Converts a signed hexadecimal number to signed octal format.\",a:\"Converts a hexadecimal number to octal.\",p:[{name:\"signed_hexadecimal_number\",detail:\"The signed 40-bit hexadecimal value to be converted to signed octal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},OCT2BIN:{d:\"Converts a signed octal number to signed binary format.\",a:\"Converts an octal number to binary.\",p:[{name:\"signed_octal_number\",detail:\"The signed 30-bit octal value to be converted to signed binary, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},OCT2DEC:{d:\"Converts a signed octal number to decimal format.\",a:\"Converts a signed octal number to decimal format.\",p:[{name:\"signed_octal_number\",detail:\"The signed 30-bit octal value to be converted to decimal, provided as a string.\"}]},OCT2HEX:{d:\"Converts a signed octal number to signed hexadecimal format.\",a:\"Converts an octal number to hexadecimal.\",p:[{name:\"signed_octal_number\",detail:\"The signed 30-bit octal value to be converted to signed hexadecimal, provided as a string.\"},{name:\"significant_digits\",detail:\"The number of significant digits to ensure in the result.\"}]},COMPLEX:{d:\"Creates a complex number given real and imaginary coefficients.\",a:\"Creates a complex number.\",p:[{name:\"real_part\",detail:\"The real coefficient.\"},{name:\"imaginary_part\",detail:\"The imaginary coefficient.\"},{name:\"suffix\",detail:\"The suffix for the imaginary coefficient, can only be 'i' or 'j'. If omitted, 'i' will be used.\"}]},IMREAL:{d:\"Returns the real coefficient of a complex number.\",a:\"The real coefficient of a complex number.\",p:[{name:\"complex_number\",detail:\"The complex number, in the a+bi or a+bj format.\"}]},IMAGINARY:{d:\"Returns the imaginary coefficient of a complex number.\",a:\"The imaginary coefficient of a complex number.\",p:[{name:\"complex_number\",detail:\"The complex number, in the a+bi or a+bj format.\"}]},IMCONJUGATE:{d:\"Returns the complex conjugate of a number.\",a:\"The complex conjugate of a number.\",p:[{name:\"number\",detail:\"The complex number to calculate the conjugate for.\"}]},IMABS:{d:\"Returns absolute value (or modulus) of a complex number.\",a:\"The absolute value of a complex number.\",p:[{name:\"number\",detail:\"The complex number to calculate the absolute value of.\"}]},DELTA:{d:\"Compare two numeric values, returning 1 if they're equal.\",a:\"Compare two numeric values.\",p:[{name:\"number1\",detail:\"The first number to compare.\"},{name:\"number2\",detail:\"The second number to compare.\"}]},IMSUM:{d:\"Returns the sum of a series of complex numbers.\",a:\"Sum of a series of complex numbers.\",p:[{name:\"value1\",detail:\"The first complex number or range to add together.\"},{name:\"value2\",detail:\"Additional complex numbers or ranges to add to `value1`.\"}]},IMSUB:{d:\"Returns the difference between two complex numbers.\",a:\"The difference between two complex numbers.\",p:[{name:\"first_number\",detail:\"The complex number to subtract second_number from.\"},{name:\"second_number\",detail:\"The complex number to subtract from first_number.\"}]},IMPRODUCT:{d:\"Returns the result of multiplying a series of complex numbers together.\",a:\"Result of multiplying a series of complex numbers together.\",p:[{name:\"factor1\",detail:\"The first number or range to calculate for the product.\"},{name:\"factor2\",detail:\"Additional complex numbers or ranges to calculate for the product.\"}]},IMDIV:{d:\"Returns one complex number divided by another.\",a:\"One complex number divided by another.\",p:[{name:\"dividend\",detail:\"The complex number to be divided.\"},{name:\"divisor\",detail:\"The complex number to divide by.\"}]},NOT:{d:\"Returns the opposite of a logical value - `NOT(TRUE)` returns `FALSE`; `NOT(FALSE)` returns `TRUE`.\",a:\"Returns opposite of provided logical value.\",p:[{name:\"logical_expression\",detail:\"An expression or reference to a cell holding an expression that represents some logical value.\"}]},TRUE:{d:\"Returns the logical value `TRUE`.\",a:\"Logical value `true`.\",p:[]},FALSE:{d:\"Returns the logical value `FALSE`.\",a:\"Logical value `false`.\",p:[]},AND:{d:\"Returns true if all of the provided arguments are logically true, and false if any of the provided arguments are logically false.\",a:\"Logical `and` operator.\",p:[{name:\"logical_expression1\",detail:\"An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value.\"},{name:\"logical_expression2\",detail:\"More expressions that represent logical values.\"}]},IFERROR:{d:\"Returns the first argument if it is not an error value, otherwise returns the second argument if present, or a blank if the second argument is absent.\",a:\"Value if it is not an error, otherwise 2nd argument.\",p:[{name:\"value\",detail:\"The value to return if `value` itself is not an error.\"},{name:\"value_if_error\",detail:\"The value the function returns if `value` is an error.\"}]},IF:{d:\"Returns one value if a logical expression is `TRUE` and another if it is `FALSE`.\",a:\"Returns value depending on logical expression.\",p:[{name:\"logical_expression\",detail:\"An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`.\"},{name:\"value_if_true\",detail:\"The value the function returns if `logical_expression` is `TRUE`.\"},{name:\"value_if_false\",detail:\"The value the function returns if `logical_expression` is `FALSE`.\"}]},OR:{d:\"Returns true if any of the provided arguments are logically true, and false if all of the provided arguments are logically false.\",a:\"Logical `or` operator.\",p:[{name:\"logical_expression1\",detail:\"An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value.\"},{name:\"logical_expression2\",detail:\"More expressions that evaluate to logical values.\"}]},NE:{d:\"Returns `TRUE` if two specified values are not equal and `FALSE` otherwise. Equivalent to the `!=` operator.\",a:\"Not equal.\",p:[{name:\"value1\",detail:\"The first value.\"},{name:\"value2\",detail:\"The value to test against `value1` for inequality.\"}]},EQ:{d:\"Returns `TRUE` if two specified values are equal and `FALSE` otherwise. Equivalent to the `==` operator.\",a:\"Equal.\",p:[{name:\"value1\",detail:\"The first value.\"},{name:\"value2\",detail:\"The value to test against `value1` for equality.\"}]},GT:{d:\"Returns `TRUE` if the first argument is strictly greater than the second, and `FALSE` otherwise. Equivalent to the `>` operator.\",a:\"Strictly greater than.\",p:[{name:\"value1\",detail:\"The value to test as being greater than `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},GTE:{d:\"Returns `TRUE` if the first argument is greater than or equal to the second, and `FALSE` otherwise. Equivalent to the `>=` operator.\",a:\"Greater than or equal to.\",p:[{name:\"value1\",detail:\"The value to test as being greater than or equal to `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},LT:{d:\"Returns `TRUE` if the first argument is strictly less than the second, and `FALSE` otherwise. Equivalent to the `<` operator.\",a:\"Less than.\",p:[{name:\"value1\",detail:\"The value to test as being less than `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},LTE:{d:\"Returns `TRUE` if the first argument is less than or equal to the second, and `FALSE` otherwise. Equivalent to the `<=` operator.\",a:\"Less than or equal to.\",p:[{name:\"value1\",detail:\"The value to test as being less than or equal to `value2`.\"},{name:\"value2\",detail:\"The second value.\"}]},ADD:{d:\"Returns the sum of two numbers. Equivalent to the `+` operator.\",a:\"Sum of two numbers\",p:[{name:\"value1\",detail:\"The first addend.\"},{name:\"value2\",detail:\"The second addend.\"}]},MINUS:{d:\"Returns the difference of two numbers. Equivalent to the `-` operator.\",a:\"Difference of two numbers\",p:[{name:\"value1\",detail:\"The minuend, or number to be subtracted from.\"},{name:\"value2\",detail:\"The subtrahend, or number to subtract from `value1`.\"}]},MULTIPLY:{d:\"Returns the product of two numbers. Equivalent to the `*` operator.\",a:\"Product of two numbers\",p:[{name:\"factor1\",detail:\"The first multiplicand.\"},{name:\"factor2\",detail:\"The second multiplicand.\"}]},DIVIDE:{d:\"Returns one number divided by another. Equivalent to the `/` operator.\",a:\"One number divided by another\",p:[{name:\"dividend\",detail:\"The number to be divided.\"},{name:\"divisor\",detail:\"The number to divide by.\"}]},CONCAT:{d:\"Returns the concatenation of two values. Equivalent to the `&` operator.\",a:\"Concatenation of two values\",p:[{name:\"value1\",detail:\"The value to which `value2` will be appended.\"},{name:\"value2\",detail:\"The value to append to `value1`.\"}]},UNARY_PERCENT:{d:\"Returns a value interpreted as a percentage; that is, `UNARY_PERCENT(100)` equals `1`.\",a:\"Value interpreted as a percentage.\",p:[{name:\"percentage\",detail:\"The value to interpret as a percentage.\"}]},CONCATENATE:{d:\"Appends strings to one another.\",a:\"Appends strings to one another.\",p:[{name:\"string1\",detail:\"The initial string.\"},{name:\"string2\",detail:\"More strings to append in sequence.\"}]},CODE:{d:\"Returns the numeric Unicode map value of the first character in the string provided.\",a:\"Numeric unicode map value of character.\",p:[{name:\"string\",detail:\"The string whose first character's Unicode map value will be returned.\"}]},CHAR:{d:\"Convert a number into a character according to the current Unicode table.\",a:\"Gets character associated with number.\",p:[{name:\"table_number\",detail:\"The number of the character to look up from the current Unicode table in decimal format.\"}]},ARABIC:{d:\"Computes the value of a Roman numeral.\",a:\"Computes the value of a roman numeral.\",p:[{name:\"roman_numeral\",detail:\"The Roman numeral to format, whose value must be between 1 and 3999, inclusive.\"}]},ROMAN:{d:\"Formats a number in Roman numerals.\",a:\"Formats a number in Roman numerals.\",p:[{name:\"number\",detail:\"The number to format, between 1 and 3999, inclusive.\"}]},REGEXEXTRACT:{d:\"Extracts matching substrings according to a regular expression.\",a:\"Extracts matching substrings with regular expression.\",p:[{name:\"text\",detail:\"The input text.\"},{name:\"regular_expression\",detail:\"The first part of `text` that matches this expression will be returned.\"}]},REGEXMATCH:{d:\"Whether a piece of text matches a regular expression.\",a:\"Whether a piece of text matches regular expression.\",p:[{name:\"text\",detail:\"The text to be tested against the regular expression.\"},{name:\"regular_expression\",detail:\"The regular expression to test the text against.\"}]},REGEXREPLACE:{d:\"Replaces part of a text string with a different text string using regular expressions.\",a:\"Replaces text with regular expressions.\",p:[{name:\"text\",detail:\"The text, a part of which will be replaced.\"},{name:\"regular_expression\",detail:\"The regular expression.  All matching instances in `text` will be replaced.\"},{name:\"replacement\",detail:\"The text which will be inserted into the original text.\"}]},T:{d:\"Returns string arguments as text, or the empty string if the value is not text.\",a:\"String arguments as text.\",p:[{name:\"value\",detail:\"The argument to be converted to text.\"}]},FIXED:{d:\"Formats a number with a fixed number of decimal places.\",a:\"Formats number with fixed number of decimal places.\",p:[{name:\"number\",detail:\"The number to format.\"},{name:\"number_of_places\",detail:\"The number of decimal places to display in the result.\"},{name:\"suppress_separator\",detail:\"Whether or not to suppress the thousands separator used in some locales (e.g. `1,000` becomes `1000`). Separators will be present if this value is 0 or omitted, and absent otherwise.\"}]},FIND:{d:\"Returns the position at which a string is first found within text where the capitalization of letters matters. Returns `#VALUE!` if the string is not found.\",a:\"First position of string found in text, case-sensitive.\",p:[{name:\"search_for\",detail:\"The string to look for within `text_to_search`.\"},{name:\"text_to_search\",detail:\"The text to search for the first occurrence of `search_for`.\"},{name:\"starting_at\",detail:\"The character within `text_to_search` at which to start the search.\"}]},FINDB:{d:\"Returns the position at which a string is first found within text counting each double-character as 2.\",a:\"Position at which a string is first found within text (binary).\",p:[{name:\"search_for\",detail:\"The string to look for within `text_to_search`.\"},{name:\"text_to_search\",detail:\"The text to search for the first occurrence of `search_for`.\"},{name:\"starting_at\",detail:\"The character within `text_to_search` at which to start the search.\"}]},JOIN:{d:\"Concatenates the elements of one or more one-dimensional arrays using a specified delimiter.\",a:\"Concatenates elements of arrays with delimiter.\",p:[{name:\"delimiter\",detail:\"The character or string to place between each concatenated value.\"},{name:\"value_or_array1\",detail:\"The value or values to be appended using `delimiter`.\"},{name:\"value_or_array2\",detail:\"More values to be appended using `delimiter`.\"}]},LEFT:{d:\"Returns a substring from the beginning of a specified string.\",a:\"Substring from beginning of specified string.\",p:[{name:\"string\",detail:\"The string from which the left portion will be returned.\"},{name:\"number_of_characters\",detail:\"The number of characters to return from the left side of `string`.\"}]},RIGHT:{d:\"Returns a substring from the end of a specified string.\",a:\"A substring from the end of a specified string.\",p:[{name:\"string\",detail:\"The string from which the right portion will be returned.\"},{name:\"number_of_characters\",detail:\"The number of characters to return from the right side of `string`.\"}]},MID:{d:\"Returns a segment of a string.\",a:\"A segment of a string.\",p:[{name:\"string\",detail:\"The string to extract a segment from.\"},{name:\"starting_at\",detail:\"The index from the left of `string` from which to begin extracting. The first character in `string` has the index 1.\"},{name:\"extract_length\",detail:\"The length of the segment to extract.\"}]},LEN:{d:\"Returns the length of a string.\",a:\"Length of a string.\",p:[{name:\"text\",detail:\"The string whose length will be returned.\"}]},LENB:{d:\"Returns the length of a string in bytes.\",a:\"Length of a string in bytes.\",p:[{name:\"text\",detail:\"The string whose length will be returned.\"}]},LOWER:{d:\"Converts a specified string to lowercase.\",a:\"Converts a specified string to lowercase.\",p:[{name:\"text\",detail:\"The string to convert to lowercase.\"}]},UPPER:{d:\"Converts a specified string to uppercase.\",a:\"Converts a specified string to uppercase.\",p:[{name:\"text\",detail:\"The string to convert to uppercase.\"}]},EXACT:{d:\"Tests whether two strings are identical.\",a:\"Tests whether two strings are identical.\",p:[{name:\"string1\",detail:\"The first string to compare\"},{name:\"string2\",detail:\"The second string to compare\"}]},REPLACE:{d:\"Replaces part of a text string with a different text string.\",a:\"Replaces part of a text string with different text.\",p:[{name:\"text\",detail:\"The text, a part of which will be replaced.\"},{name:\"position\",detail:\"The position where the replacement will begin (starting from 1).\"},{name:\"length\",detail:\"The number of characters in the text to be replaced.\"},{name:\"new_text\",detail:\"The text which will be inserted into the original text.\"}]},REPT:{d:\"Returns specified text repeated a number of times.\",a:\"Specified text repeated a number of times.\",p:[{name:\"text_to_repeat\",detail:\"The character or string to repeat.\"},{name:\"number_of_repetitions\",detail:\"The number of times `text_to_repeat` should appear in the value returned.\"}]},SEARCH:{d:\"Returns the position at which a string is first found within text and ignores capitalization of letters. Returns `#VALUE!` if the string is not found.\",a:\"First position of string found in text, ignoring case.\",p:[{name:\"search_for\",detail:\"The string to look for within `text_to_search`.\"},{name:\"text_to_search\",detail:\"The text to search for the first occurrence of `search_for`.\"},{name:\"starting_at\",detail:\"The character within `text_to_search` at which to start the search.\"}]},SUBSTITUTE:{d:\"Replaces existing text with new text in a string.\",a:\"Replaces existing text with new text in a string.\",p:[{name:\"text_to_search\",detail:\"The text within which to search and replace.\"},{name:\"search_for\",detail:\"The string to search for within `text_to_search`.\"},{name:\"replace_with\",detail:\"The string that will replace `search_for`.\"},{name:\"occurrence_number\",detail:\"The instance of `search_for` within `text_to_search` to replace with `replace_with`. By default, all occurrences of `search_for` are replaced; however, if `occurrence_number` is specified, only the indicated instance of `search_for` is replaced.\"}]},CLEAN:{d:\"Returns the text with the non-printable ASCII characters removed.\",a:\"Removes non-printable characters from a piece of text.\",p:[{name:\"text\",detail:\"The text whose non-printable characters are to be removed.\"}]},TEXT:{d:\"Converts a number into text according to a specified format.\",a:\"Formats a number into text.\",p:[{name:\"number\",detail:\"The number, date, or time to format.\"},{name:\"format\",detail:\"The pattern by which to format the number, enclosed in quotation marks.\"}]},TRIM:{d:\"Removes leading, trailing, and repeated spaces in text.\",a:\"Removes space characters.\",p:[{name:\"text\",detail:\"The text or reference to a cell containing text to be trimmed.\"}]},VALUE:{d:\"Converts a string in any of the date, time or number formats that Google Sheets understands into a number.\",a:\"Converts a date/time/number string into a number.\",p:[{name:\"text\",detail:\"The string containing the value to be converted.\"}]},PROPER:{d:\"Capitalizes each word in a specified string.\",a:\"Capitalizes each word in a specified string.\",p:[{name:\"text_to_capitalize\",detail:\"The text which will be returned with the first letter of each word in uppercase and all other letters in lowercase.\"}]},CONVERT:{d:\"Converts a numeric value to a different unit of measure.\",a:\"Unit conversion for numbers.\",p:[{name:\"value\",detail:\"The numeric value in `start_unit` to convert to `end_unit`.\"},{name:\"start_unit\",detail:\"The starting unit, the unit currently assigned to `value`.\"},{name:\"end_unit\",detail:\"The unit of measure into which to convert the argument, `value`.\"}]},SUMX2MY2:{d:\"Calculates the sum of the differences of the squares of values in two arrays.\",a:\"Sum of the differences of squares.\",p:[{name:\"array_x\",detail:\"The array or range of values whose squares will be reduced by the squares of corresponding entries in `array_y` and added together.\"},{name:\"array_y\",detail:\"The array or range of values whose squares will be subtracted from the squares of corresponding entries in `array_x` and added together.\"}]},SUMX2PY2:{d:\"Calculates the sum of the sums of the squares of values in two arrays.\",a:\"Sum of the sums of squares.\",p:[{name:\"array_x\",detail:\"The array or range of values whose squares will be added to the squares of corresponding entries in `array_y` and added together.\"},{name:\"array_y\",detail:\"The array or range of values whose squares will be added to the squares of corresponding entries in `array_x` and added together.\"}]},SUMXMY2:{d:\"Calculates the sum of the squares of differences of values in two arrays.\",a:\"Sum of the squares of differences.\",p:[{name:\"array_x\",detail:\"The array or range of values that will be reduced by corresponding entries in `array_y`, squared, and added together.\"},{name:\"array_y\",detail:\"The array or range of values that will be subtracted from corresponding entries in `array_x`, the result squared, and all such results added together.\"}]},TRANSPOSE:{d:\"Transposes the rows and columns of an array or range of cells.\",a:\"Transposes the rows and columns of an array.\",p:[{name:\"array_or_range\",detail:\"The array or range whose rows and columns will be swapped.\"}]},TREND:{d:\"Given partial data about a linear trend, fits an ideal linear trend using the least squares method and/or predicts further values.\",a:\"Fits points to linear trend derived via least-squares.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"new_data_x\",detail:\"The data points to return the `y` values for on the ideal curve fit.\"},{name:\"b\",detail:\"Given a general linear form of `y = m*x+b` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin.\"}]},FREQUENCY:{d:\"Calculates the frequency distribution of a one-column array into specified classes.\",a:\"The frequency distribution of array.\",p:[{name:\"data\",detail:\"The array or range containing the values to be counted.\"},{name:\"classes\",detail:\"The array or range containing the set of classes.\"}]},GROWTH:{d:\"Given partial data about an exponential growth trend, fits an ideal exponential growth trend and/or predicts further values.\",a:\"Fits points to exponential growth trend.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"new_data_x\",detail:\"The data points to return the `y` values for on the ideal curve fit.\"},{name:\"b\",detail:\"Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`.\"}]},LINEST:{d:\"Given partial data about a linear trend, calculates various parameters about the ideal linear trend using the least-squares method.\",a:\"Best-fit linear trend via least-squares.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"calculate_b\",detail:\"Given a linear form of `y = m*x+b`, calculates the y-intercept (`b`) if `TRUE`. Otherwise, forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin.\"},{name:\"verbose\",detail:\"A flag specifying whether to return additional regression statistics or only the linear coefficients and the y-intercept (default).\"}]},LOGEST:{d:\"Given partial data about an exponential growth curve, calculates various parameters about the best fit ideal exponential growth curve.\",a:\"Best-fit exponential growth curve.\",p:[{name:\"known_data_y\",detail:\"The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve.\"},{name:\"known_data_x\",detail:\"The values of the independent variable(s) corresponding with `known_data_y`.\"},{name:\"b\",detail:\"Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`.\"},{name:\"verbose\",detail:\"A flag specifying whether to return additional regression statistics or only the calculated coefficient and exponents.\"}]},MDETERM:{d:\"Returns the matrix determinant of a square matrix specified as an array or range.\",a:\"Matrix determinant of a square matrix.\",p:[{name:\"square_matrix\",detail:\"An array or range with an equal number of rows and columns representing a matrix whose determinant will be calculated.\"}]},MINVERSE:{d:\"Returns the multiplicative inverse of a square matrix specified as an array or range.\",a:\"Multiplicative inverse of square matrix.\",p:[{name:\"square_matrix\",detail:\"An array or range with an equal number of rows and columns representing a matrix whose multiplicative inverse will be calculated.\"}]},MMULT:{d:\"Calculates the matrix product of two matrices specified as arrays or ranges.\",a:\"The matrix product of two matrices.\",p:[{name:\"matrix1\",detail:\"The first matrix in the matrix multiplication operation, represented as an array or range.\"},{name:\"matrix2\",detail:\"The second matrix in the matrix multiplication operation, represented as an array or range.\"}]},SUMPRODUCT:{d:\"Calculates the sum of the products of corresponding entries in two equal-sized arrays or ranges.\",a:\"Sum of products of elements in two arrays.\",p:[{name:\"array1\",detail:\"The first array or range whose entries will be multiplied with corresponding entries in the second such array or range.\"},{name:\"array2\",detail:\"The second array or range whose entries will be multiplied with corresponding entries in the first such array or range.\"}]},ISFORMULA:{d:\"Checks whether a value is a formula.\",a:\"Whether a value is a formula.\",p:[{name:\"cell\",detail:\"The cell to be verified as containing a formula.\"}]},CELL:{d:\"Returns the requested information about the specified cell.\",a:\"Gets information about a cell.\",p:[{name:\"info_type\",detail:\"The type of information requested (see article for available types)\"},{name:\"reference\",detail:\"The reference to the cell.\"}]},NA:{d:'Returns the \"value not available\" error, `#N/A`.',a:\"The `#N/A` error.\",p:[]},ERROR_TYPE:{d:\"Returns a number corresponding to the error value in a different cell.\",a:\"Error value of cell (as number).\",p:[{name:\"reference\",detail:\"The cell to find the error number for although you can also provide the error value directly.\"}]},ISBLANK:{d:\"Checks whether the referenced cell is empty.\",a:\"Whether the referenced cell is empty.\",p:[{name:\"value\",detail:\"Reference to the cell that will be checked for emptiness.\"}]},ISERR:{d:\"Checks whether a value is an error other than `#N/A`.\",a:\"Whether a value is an error other than `#n/a`.\",p:[{name:\"value\",detail:\"The value to be verified as an error type other than `#N/A`.\"}]},ISERROR:{d:\"Checks whether a value is an error.\",a:\"Whether a value is an error.\",p:[{name:\"value\",detail:\"The value to be verified as an error type.\"}]},ISLOGICAL:{d:\"Checks whether a value is `TRUE` or `FALSE`.\",a:\"Whether a value is `true` or `false`.\",p:[{name:\"value\",detail:\"The value to be verified as a logical `TRUE` or `FALSE`.\"}]},ISNA:{d:\"Checks whether a value is the error `#N/A`.\",a:\"Whether a value is the error `#n/a`.\",p:[{name:\"value\",detail:\"The value to be compared with the error value `#N/A`.\"}]},ISNONTEXT:{d:\"Checks whether a value is non-textual.\",a:\"Whether a value is non-textual.\",p:[{name:\"value\",detail:\"The value to be checked.\"}]},ISNUMBER:{d:\"Checks whether a value is a number.\",a:\"Whether a value is a number.\",p:[{name:\"value\",detail:\"The value to be verified as a number.\"}]},ISREF:{d:\"Checks whether a value is a valid cell reference.\",a:\"Whether a value is a valid cell reference.\",p:[{name:\"value\",detail:\"The value to be verified as a cell reference.\"}]},ISTEXT:{d:\"Checks whether a value is text.\",a:\"Whether a value is text.\",p:[{name:\"value\",detail:\"The value to be verified as text.\"}]},TYPE:{d:\"Returns a number associated with the type of data passed into the function.\",a:\"Get the type of a value.\",p:[{name:\"value\",detail:\"The value whose type is to be determined.\"}]},N:{d:\"Returns the argument provided as a number. Text is converted to 0 and errors are returned as-is.\",a:\"Argument provided as a number.\",p:[{name:\"value\",detail:\"The argument to be converted to a number.\"}]},TO_DATE:{d:\"Converts a provided number to a date.\",a:\"Converts a provided number to a date.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a date.\"}]},TO_PURE_NUMBER:{d:\"Converts a provided date/time, percentage, currency or other formatted numeric value to a pure number without formatting.\",a:\"Converts any numeric value to a pure number.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a pure number.\"}]},TO_TEXT:{d:\"Converts a provided numeric value to a text value.\",a:\"Converts a provided numeric value to a text value.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to text.\"}]},TO_DOLLARS:{d:\"Converts a provided number to a dollar value.\",a:\"Converts a provided number to a dollar value.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a dollar value.\"}]},TO_PERCENT:{d:\"Converts a provided number to a percentage.\",a:\"Converts a provided number to a percentage.\",p:[{name:\"value\",detail:\"The argument or reference to a cell to be converted to a percentage.\"}]},DGET:{d:\"Returns a single value from a database table-like array or range using a SQL-like query.\",a:\"Single value from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DMAX:{d:\"Returns the maximum value selected from a database table-like array or range using a SQL-like query.\",a:\"Maximum of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DMIN:{d:\"Returns the minimum value selected from a database table-like array or range using a SQL-like query.\",a:\"Minimum of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DAVERAGE:{d:\"Returns the average of a set of values selected from a database table-like array or range using a SQL-like query.\",a:\"Average of a set of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DCOUNT:{d:\"Counts numeric values selected from a database table-like array or range using a SQL-like query.\",a:\"Counts values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DCOUNTA:{d:\"Counts values, including text, selected from a database table-like array or range using a SQL-like query.\",a:\"Counts values and text from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DPRODUCT:{d:\"Returns the product of values selected from a database table-like array or range using a SQL-like query.\",a:\"Product of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DSTDEV:{d:\"Returns the standard deviation of a population sample selected from a database table-like array or range using a SQL-like query.\",a:\"Standard deviation of population sample from table.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DSTDEVP:{d:\"Returns the standard deviation of an entire population selected from a database table-like array or range using a SQL-like query.\",a:\"Standard deviation of entire population from table.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DSUM:{d:\"Returns the sum of values selected from a database table-like array or range using a SQL-like query.\",a:\"Sum of values from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DVAR:{d:\"Returns the variance of a population sample selected from a database table-like array or range using a SQL-like query.\",a:\"Variance of population sample from table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},DVARP:{d:\"Returns the variance of an entire population selected from a database table-like array or range using a SQL-like query.\",a:\"Variance of a population from a table-like range.\",p:[{name:\"database\",detail:\"The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values.\"},{name:\"field\",detail:\"Indicates which column in `database` contains the values to be extracted and operated on.\"},{name:\"criteria\",detail:\"An array or range containing zero or more criteria to filter the `database` values by before operating.\"}]},AGE_BY_IDCARD:{d:\"Calculate the age based on the Chinese ID number. Support 15 or 18\",a:\"Get age based on ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"},{name:\"Deadline\",detail:\"The deadline or range of age calculation. The default is the current day.\"}]},SEX_BY_IDCARD:{d:\"Calculate gender based on Chinese ID number. Support 15 or 18\",a:\"Get gender based on ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},BIRTHDAY_BY_IDCARD:{d:\"Calculate the birthday based on the Chinese ID number. Support 15 or 18\",a:\"Get the birthday based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"},{name:\"Birthday format\",detail:\"Date type, default:0:[1900/01/01], 1:[1900-01-01], 2:[1900年1月1日]\"}]},PROVINCE_BY_IDCARD:{d:\"Calculate the province of birthplace based on the Chinese ID number. Support 15 or 18\",a:\"Get the province of birthplace based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},CITY_BY_IDCARD:{d:\"Calculate the city of birthplace based on the Chinese ID number. Support 15 or 18\",a:\"Get the city of birthplace based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},STAR_BY_IDCARD:{d:\"Calculate the constellation based on the Chinese ID number. Support 15 or 18\",a:\"Get the constellation based on the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},ANIMAL_BY_IDCARD:{d:\"Calculate the zodiac (rat, ox, tiger, rabbit...) based on the Chinese ID number. Support 15 or 18\",a:\"Get the zodiac according to the ID number.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},ISIDCARD:{d:\"Verify that the format of the ID card is correct. Support 15 or 18\",a:\"Verify the correctness of the ID card format.\",p:[{name:\"ID number\",detail:\"15-digit or 18-digit ID number or range.\"}]},DM_TEXT_CUTWORD:{d:\"Text segmentation. Split a series of words into a series of individual words\",a:\"Chinese text segmentation.\",p:[{name:\"Text\",detail:\"Any text that needs word segmentation.\"},{name:\"Word segmentation mode\",detail:\"The default is 0[precision mode], 1[full mode], 2[search engine mode].\"}]},DM_TEXT_TFIDF:{d:\"Use tf-idf algorithm for keyword extraction. Identify keywords from a series of text\",a:\"tf-idf keyword recognition.\",p:[{name:\"Text\",detail:\"Any text that needs word segmentation.\"},{name:\"Number of keywords\",detail:\"The number of keywords returned by the algorithm, the default is 20\"},{name:\"Corpus\",detail:\"Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]\"}]},DM_TEXT_TEXTRANK:{d:\"Use TextRank algorithm to extract keywords. Identify keywords from a series of text\",a:\"TextRank keyword recognition.\",p:[{name:\"Text\",detail:\"Any text that needs word segmentation.\"},{name:\"Number of keywords\",detail:\"The number of keywords returned by the algorithm, the default is 20\"},{name:\"Corpus\",detail:\"Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]\"}]},DATA_CN_STOCK_CLOSE:{d:\"According to the stock code and date, return the corresponding stock closing price of A shares.\",a:\"Returns the closing price of stock.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_OPEN:{d:\"According to the stock code and date, return the opening price of stock.\",a:\"Return the opening price of a shares.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_MAX:{d:\"According to the stock code and date, return the highest price of stock.\",a:\"Return the highest price of stock.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_MIN:{d:\"According to the stock code and date, return the lowest price of stock.\",a:\"Returns the lowest price of stock.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_VOLUMN:{d:\"According to the stock code and date, return the corresponding stock trading volume of A shares.\",a:\"Returns the corresponding stock trading volume of A shares.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},DATA_CN_STOCK_AMOUNT:{d:\"According to the stock code and date, return the corresponding stock turnover of A shares.\",a:\"Returns the corresponding stock turnover of A shares.\",p:[{name:\"Stock code\",detail:\"6-digit stock code, required.\"},{name:\"Date\",detail:\"The trading day of the stock, the default is the latest trading day\"},{name:\"Reversion and exclusion\",detail:\"Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]\"}]},ISDATE:{d:\"Returns whether a value is a date.\",a:\"Whether a value is a date.\",p:[{name:\"value\",detail:\"The value to be verified as a date.\"}]},LINESPLINES:{d:\"Generate sparklines embedded in the cell to describe the continuous trend of data\",a:\"Generate sparklines line chart\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Line color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9\"},{name:\"Line thickness\",detail:\"Line thickness of the line graph, the default is 1px\"},{name:\"Auxiliary line\",detail:\"A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none\"},{name:\"Auxiliary line color\",detail:\"Color setting of auxiliary line, same as line color configuration, default #000\"},{name:\"Maximum mark\",detail:\"Identifies the maximum value of the line graph, the same line color configuration, default 0 does not display\"},{name:\"Minimum mark\",detail:\"Identify the minimum value of the line graph, the same line color configuration, default 0 does not display\"},{name:\"Mark size\",detail:\"The maximum and minimum mark size settings, the default is 1.5\"}]},AREASPLINES:{d:\"Generate sparklines embedded in the cell area chart, generally used to describe the continuous cumulative value trend of the data\",a:\"Generate sparklines area chart\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Line color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9\"},{name:\"Fill color\",detail:\"Form an area chart, the same line color configuration, default 0 does not display\"},{name:\"Line thickness\",detail:\"Line thickness of the line graph, the default is 1px\"},{name:\"Auxiliary line\",detail:\"A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none\"},{name:\"Auxiliary line color\",detail:\"Color setting of auxiliary line, same as line color configuration, default #000\"}]},COLUMNSPLINES:{d:\"Generate sparklines embedded in the vertical histogram of cells, generally used to describe the size of discrete data\",a:\"Generate sparklines vertical histogram\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Bar color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c\"},{name:\"Negative bar color\",detail:\"Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552\"},{name:\"Max\",detail:\"The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty\"}]},STACKCOLUMNSPLINES:{d:\"Generate sparklines, a cumulative vertical histogram embedded in a cell, generally used to describe the numerical size of multiple dimensions of discrete data\",a:\"Generate sparklines cumulative vertical histogram\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Stack by column\",detail:\"If you need to stack by row, set this item to false or 0, the default is 1\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Max\",detail:\"The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BARSPLINES:{d:\"Generate sparklines embedded in the cell, generally used to describe the size of discrete data\",a:\"Generate sparklines horizontal bar graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Bar color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c\"},{name:\"Negative bar color\",detail:\"Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552\"},{name:\"Max\",detail:\"The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty\"}]},STACKBARSPLINES:{d:\"Generate sparklines, a cumulative horizontal bar graph embedded in a cell, which is generally used to describe the numerical size of multiple dimensions of discrete data\",a:\"Generate sparklines cumulative horizontal bar graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Stack by column\",detail:\"If you need to stack by row, set this item to false or 0, the default is 1\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Max\",detail:\"The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null\"},{name:\"Color palette\",detail:\"The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},DISCRETESPLINES:{d:\"Generate sparklines embedded in the cell, generally used to describe the trend of discrete data\",a:\"Generate sparklines discrete graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Segmentation threshold\",detail:\"Discrete graph column color distinction, for example: if the value is 0, blue is greater than 0, red is less than 0, and the default is 0\"},{name:\"Above threshold color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9\"},{name:\"Below threshold color\",detail:\"The color setting of the bar below the threshold, the same as the color above the threshold, default #fc5c5c\"}]},TRISTATESPLINES:{d:\"Generate sparklines, a three-state graph embedded in the cell, which is generally used to describe the trend of three situations, such as winning, losing, or drawing.\",a:\"Generate sparklines three-state graph\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Bar interval\",detail:\"The distance between bars, the default is 1\"},{name:\"Bar color\",detail:\"The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c\"},{name:\"Negative bar color\",detail:\"Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552\"},{name:\"Zero value bar color\",detail:\"Zero value bar color setting, representing 0 value color, the same color configuration of the bar, default #999\"},{name:\"Color palette\",detail:\"The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty\"}]},PIESPLINES:{d:\"Generate sparklines pie chart embedded in the cell, generally used to describe the proportion of data\",a:\"Generate sparklines pie chart\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Rotation angle\",detail:\"The rotation angle of the pie chart, the default is 0\"},{name:\"border\",detail:\"Pie chart border size, default is none 0\"},{name:\"Border color\",detail:\"The border color of the pie chart, the default is #000\"},{name:\"Color palette\",detail:\"The color of the slice can be set in the palette, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BOXSPLINES:{d:\"Generate sparklines embedded in the cell box plot, generally used to describe the statistical distribution of the data set\",a:\"Generate sparklines box plot\",p:[{name:\"Range\",detail:\"Range，Values can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc.\"},{name:\"Outlier ratio\",detail:\"The threshold range of outliers, if it is 0 or false, it will not be displayed, the default is 1.5 times\"},{name:\"Target value\",detail:\"The target value setting on the box plot, the default is false and does not display\"},{name:\"Point size\",detail:\"The radius of the target point and outlier is set, the default is 1.5\"}]},BULLETSPLINES:{d:\"Generate sparklines embedded in the cell, generally used to describe the task achievement rate\",a:\"Generating sparklines bullets\",p:[{name:\"Target\",detail:\"The numerical value can be calculated effectively for the achieved target value, such as A1, 100, etc.\"},{name:\"achieved\",detail:\"Only when the value is completed can the value be calculated effectively, such as A1, 100, etc.\"},{name:\"Contrast\",detail:\"Comparative values, such as excess, minimum, and bottom line for awards, can be effectively calculated, such as A1, 100, etc. You can set up to 9 comparison values\"}]},COMPOSESPLINES:{d:\"Support multiple types of pictures in the same cell, each parameter represents a sparklines diagram\",a:\"Combine sparklines graphs into one cell\",p:[{name:\"config\",detail:\"Sparklines chart settings, such as A1:A20, a completed pie chart, line chart settings, etc.\"}]},SORT:{d:\"Sorts the rows of a given array or range by the values in one or more columns.\",a:\"Sorts rows of range by specified column.\",p:[{name:\"range\",detail:\"The data to be sorted.\"},{name:\"sort_column\",detail:\"The index of the column in `range` or a range outside of `range` containing the values by which to sort.\"},{name:\"is_ascending\",detail:\"`TRUE` or `FALSE` indicating whether to sort `sort_column` in ascending order. `FALSE` sorts in descending order.\"},{name:\"sort_column2\",detail:\"Additional columns.\"}]},FILTER:{d:\"Returns a filtered version of the source range, returning only rows or columns which meet the specified conditions.\",a:\"Filters a range based off provided conditions.\",p:[{name:\"range\",detail:\"The data to be filtered.\"},{name:\"condition1\",detail:\"A column or row containing true or false values corresponding to the first column or row of `range`, or an array formula evaluating to true or false.\"},{name:\"condition2\",detail:\"Additional rows or columns containing boolean values `TRUE` or `FALSE` indicating whether the corresponding row or column in `range` should pass through `FILTER`. Can also contain array formula expressions which evaluate to such rows or columns. All conditions must be of the same type (row or column). Mixing row conditions and column conditions is not permitted.\"}]},UNIQUE:{d:\"Returns unique rows in the provided source range, discarding duplicates. Rows are returned in the order in which they first appear in the source range.\",a:\"Unique rows in the provided source range.\",p:[{name:\"range\",detail:\"The data to filter by unique entries.\"},{name:\"by_col\",detail:\"[Option] - Logical value, indicating how to compare; by row = FALSE() or omitted; by column = TRUE().\"},{name:\"occurs_once\",detail:\"[Option] - Logical value, only one occurrence in the unique value is returned = TRUE(); including all unique values = FALSE() or omitted.\"}]},RANDARRAY:{d:\"Returns a grid of random numbers between 0 inclusive and 1 exclusive. The grid size will match the provided rows and columns arguments. If neither rows nor columns are provided, then the grid will be size 1 x 1.\",a:\"Returns a grid of random numbers.\",p:[{name:\"rows\",detail:\"The number of rows to populate with a random number.\"},{name:\"columns\",detail:\"The number of columns to populate with a random number.\"}]},SEQUENCE:{d:\"Returns a grid of sequential numbers starting at a specified start value and  increasing by a specified step size. By default, the sequence starts at and  increases by 1.\",a:\"Returns a grid of sequential numbers.\",p:[{name:\"rows\",detail:\"The number of rows in the function's resulting grid.\"},{name:\"columns\",detail:\"The number of columns in the function's resulting grid. If omitted, the result grid will have 1 column.\"},{name:\"start\",detail:\"The number, at which to start the sequence. If omitted, the sequence will start at 1.\"},{name:\"step\",detail:\"The amount each value in the sequence will differ by. If omitted, each value will differ by 1.\"}]},EVALUATE:{d:\"Evaluate a formula or expression expressed in words and return the result\",a:\"Evaluate according to literal formula or expression.\",p:[{name:\"expression\",detail:\"Formula or expression\"}]},REMOTE:{d:\"Calls a function on a remote server\",a:\"Calls a function on a remote back end server/API.\",p:[{name:\"remote_expression\",detail:\"Formula\"}]}},toolbar:{undo:\"Deshacer\",redo:\"Rehacer\",paintFormat:\"Clonar formato\",currencyFormat:\"Formato de moneda\",percentageFormat:\"Formato de porcentaje\",numberDecrease:\"Menos decimales\",numberIncrease:\"Más decimales\",moreFormats:\"Más formatos\",font:\"Fuente\",fontSize:\"Tamaño Fuente\",bold:\"Negrita (Ctrl+B)\",italic:\"Itálica (Ctrl+I)\",strikethrough:\"Tachar (Alt+Shift+5)\",underline:\"Guion bajo\",textColor:\"Color texto\",chooseColor:\"elegir color\",resetColor:\"Reinicializar\",customColor:\"PERSONALIZADO\",alternatingColors:\"Colores alternos\",confirmColor:\"Vale\",cancelColor:\"Cancelar\",collapse:\"Recoger\",fillColor:\"Color de relleno\",border:\"Borde\",borderStyle:\"Estilo Borde\",mergeCell:\"Juntar celdas\",chooseMergeType:\"Elegir tipo de unión\",horizontalAlign:\"Alineación Horizontal\",verticalAlign:\"Alineación Vertical\",alignment:\"Alineación\",textWrap:\"Ajuste de texto\",textWrapMode:\"Modo de ajuste de texto\",textRotate:\"Rotar texto\",textRotateMode:\"Modo de rotar texto\",freezeTopRow:\"Fijar fila superior\",sortAndFilter:\"Ordenar y filtrar\",findAndReplace:\"Buscar y reemplazar\",sum:\"SUMA\",autoSum:\"SUMA automática\",moreFunction:\"Más funciones\",conditionalFormat:\"Formato condicional\",postil:\"Comentario\",pivotTable:\"Tabla Dinámica\",chart:\"Gráfica\",screenshot:\"Captura de pantalla\",splitColumn:\"Separar texto\",insertImage:\"Insertar imagen\",exportXlsx:\"Exportar Xlsx\",dataVerification:\"Verificación de datos\",protection:\"Proteger la hoja\",clearText:\"Limpiar color\",noColorSelectedText:\"Ningún color seleccionado\",toolMore:\"Más\",toolLess:\"Menos\",toolClose:\"Cerrar\",toolMoreTip:\"Más funcionalidades\",moreOptions:\"Más opciones\",cellFormat:\"Configuración formato de celda\",print:\"Imprimir\",resetCustomHeight:\"Reset Custom Height\",resetDefault:\"Reset Default\"},alternatingColors:{applyRange:\"Aplicar a rango\",selectRange:\"Seleccionar un rango de datos\",header:\"Cabecera\",footer:\"Pie\",errorInfo:\"No se puede realizar esta operación en varias áreas de selección, selecciona una sola área y vuelve a intentarlo\",textTitle:\"Estilo Formato\",custom:\"PERSONALIZADO\",close:\"cerrar\",selectionTextColor:\"Haz clic para seleccionar el color del texto\",selectionCellColor:\"Haz clic para seleccionar el color de la celda\",removeColor:\"Eliminar colores alternos\",colorShow:\"color\",currentColor:\"Actual\",tipSelectRange:\"Selecciona la gama de colores alternos\",errorNoRange:\"No hay ningún rango seleccionado\",errorExistColors:\"Los colores alternos ya existen y no se pueden editar\"},button:{confirm:\"Vale\",cancel:\"Cancelar\",close:\"Cerrar\",update:\"Actualizar\",delete:\"Eliminar\",insert:\"Insertar\",prevPage:\"Previous\",nextPage:\"Next\",total:\"total:\"},paint:{start:\"Inicio clonar formato\",end:\"ESC\",tipSelectRange:\"Selecciona el rango que quieres copiar\",tipNotMulti:\"No se puede realizar esta operación en un rango de selección múltiple\"},format:{moreCurrency:\"Más formatos de moneda\",moreDateTime:\"Más formatos de fecha y hora\",moreNumber:\"Más formatos de número\",titleCurrency:\"Formatos de moneda\",decimalPlaces:\"Decimales\",titleDateTime:\"Formatos de fecha y hora\",titleNumber:\"Formatos de números\"},info:{detailUpdate:\"Nuevo abierto\",detailSave:\"Cache local restaurado\",row:\"\",column:\"\",loading:\"Cargando...\",copy:\"Copiar\",return:\"Salir\",rename:\"Renombrar\",tips:\"Renombrar Libro\",noName:\"Hoja sin título\",wait:\"esperando actualización\",add:\"Añadir\",addLast:\"más filas al final\",backTop:\"Volver arriba\",pageInfo:\"Total ${total}，página ${totalPage}，actual ${currentPage}\",nextPage:\"Siguiente\",tipInputNumber:\"Introduce el número\",tipInputNumberLimit:\"El rango de aumento está limitado a 1-100\",tipRowHeightLimit:\"La altura de la fila debe estar entre 0 ~ 545\",tipColumnWidthLimit:\"El ancho de la columna debe estar entre 0 ~ 2038\",pageInfoFull:\"Total ${total}，página ${totalPage}，Se muestran todos los datos\"},currencyDetail:{RMB:\"RMB\",USdollar:\"Dólar US\",EUR:\"EUR\",GBP:\"GBP\",HK:\"HK\",JPY:\"JPY\",AlbanianLek:\"Albanian Lek\",AlgerianDinar:\"Algerian Dinar\",Afghani:\"Afghani\",ArgentinePeso:\"Argentine Peso\",UnitedArabEmiratesDirham:\"United Arab Emirates Dirham\",ArubanFlorin:\"Aruban Florin\",OmaniRial:\"Omani Rial\",Azerbaijanimanat:\"Azerbaijani manat\",EgyptianPound:\"Egyptian Pound\",EthiopianBirr:\"Ethiopian Birr\",AngolaKwanza:\"Angola Kwanza\",AustralianDollar:\"Australian Dollar\",Patacas:\"Patacas\",BarbadosDollar:\"Barbados Dollar\",PapuaNewGuineaKina:\"Papua New Guinea Kina\",BahamianDollar:\"Bahamian Dollar\",PakistanRupee:\"Pakistan Rupee\",ParaguayanGuarani:\"Paraguayan Guarani\",BahrainiDinar:\"Bahraini Dinar\",PanamanianBalboa:\"Panamanian Balboa\",Brazilianreal:\"Brazilian real\",Belarusianruble:\"Belarusian ruble\",BermudianDollar:\"Bermudian Dollar\",BulgarianLev:\"Bulgarian Lev\",IcelandKrona:\"Iceland Krona\",BosniaHerzegovinaConvertibleMark:\"Bosnia-Herzegovina Convertible Mark\",PolishZloty:\"Polish Zloty\",Boliviano:\"Boliviano\",BelizeDollar:\"Belize Dollar\",BotswanaPula:\"Botswana Pula\",NotDannuzhamu:\"Not Dannuzhamu\",BurundiFranc:\"Burundi Franc\",NorthKoreanWon:\"North Korean Won\",DanishKrone:\"Danish Krone\",EastCaribbeanDollar:\"East Caribbean Dollar\",DominicaPeso:\"Dominica Peso\",RussianRuble:\"Russian Ruble\",EritreanNakfa:\"Eritrean Nakfa\",CFAfranc:\"CFA franc\",PhilippinePeso:\"Philippine Peso\",FijiDollar:\"Fiji Dollar\",CapeVerdeEscudo:\"Cape Verde Escudo\",FalklandIslandsPound:\"Falkland Islands Pound\",GambianDalasi:\"Gambian Dalasi\",Congolesefranc:\"Congolese franc\",ColombianPeso:\"Colombian Peso\",CostaRicanColon:\"Costa Rican Colon\",CubanPeso:\"Cuban Peso\",Cubanconvertiblepeso:\"Cuban convertible peso\",GuyanaDollar:\"Guyana Dollar\",KazakhstanTenge:\"Kazakhstan Tenge\",Haitiangourde:\"Haitian gourde\",won:\"won\",NetherlandsAntillesGuilder:\"Netherlands Antilles Guilder\",Honduraslempiras:\"Honduras lempiras\",DjiboutiFranc:\"Djibouti Franc\",KyrgyzstanSom:\"Kyrgyzstan Som\",GuineaFranc:\"Guinea Franc\",CanadianDollar:\"Canadian Dollar\",GhanaianCedi:\"Ghanaian Cedi\",Cambodianriel:\"Cambodian riel\",CzechKoruna:\"Czech Koruna\",ZimbabweDollar:\"Zimbabwe Dollar\",QatariRiyal:\"Qatari Riyal\",CaymanIslandsDollar:\"Cayman Islands Dollar\",Comorianfranc:\"Comorian franc\",KuwaitiDinar:\"Kuwaiti Dinar\",CroatianKuna:\"Croatian Kuna\",KenyanShilling:\"Kenyan Shilling\",LesothoLoti:\"Lesotho Loti\",LaoKip:\"Lao Kip\",LebanesePound:\"Lebanese Pound\",Lithuanianlitas:\"Lithuanian litas\",LibyanDinar:\"Libyan Dinar\",LiberianDollar:\"Liberian Dollar\",RwandaFranc:\"Rwanda Franc\",RomanianLeu:\"Romanian Leu\",MalagasyAriary:\"Malagasy Ariary\",MaldivianRufiyaa:\"Maldivian Rufiyaa\",MalawiKwacha:\"Malawi Kwacha\",MalaysianRinggit:\"Malaysian Ringgit\",MacedoniawearingDinar:\"Macedonia wearing Dinar\",MauritiusRupee:\"Mauritius Rupee\",MauritanianOuguiya:\"Mauritanian Ouguiya\",MongolianTugrik:\"Mongolian Tugrik\",BangladeshiTaka:\"Bangladeshi Taka\",PeruvianNuevoSol:\"Peruvian Nuevo Sol\",MyanmarKyat:\"Myanmar Kyat\",MoldovanLeu:\"Moldovan Leu\",MoroccanDirham:\"Moroccan Dirham\",MozambiqueMetical:\"Mozambique Metical\",MexicanPeso:\"Mexican Peso\",NamibianDollar:\"Namibian Dollar\",SouthAfricanRand:\"South African Rand\",SouthSudanesePound:\"South Sudanese Pound\",NicaraguaCordoba:\"Nicaragua Cordoba\",NepaleseRupee:\"Nepalese Rupee\",NigerianNaira:\"Nigerian Naira\",NorwegianKrone:\"Norwegian Krone\",GeorgianLari:\"Georgian Lari\",RMBOffshore:\"RMB (Offshore)\",SwedishKrona:\"Swedish Krona\",SwissFranc:\"Swiss Franc\",SerbianDinar:\"Serbian Dinar\",SierraLeone:\"Sierra Leone\",SeychellesRupee:\"Seychelles Rupee\",SaudiRiyal:\"Saudi Riyal\",SaoTomeDobra:\"Sao Tome Dobra\",SaintHelenapound:\"Saint Helena pound\",SriLankaRupee:\"Sri Lanka Rupee\",SwazilandLilangeni:\"Swaziland Lilangeni\",SudanesePound:\"Sudanese Pound\",Surinamesedollar:\"Surinamese dollar\",SolomonIslandsDollar:\"Solomon Islands Dollar\",SomaliShilling:\"Somali Shilling\",TajikistanSomoni:\"Tajikistan Somoni\",PacificFranc:\"Pacific Franc\",ThaiBaht:\"Thai Baht\",TanzanianShilling:\"Tanzanian Shilling\",TonganPaanga:\"Tongan Pa'anga\",TrinidadandTobagoDollar:\"Trinidad and Tobago Dollar\",TunisianDinar:\"Tunisian Dinar\",TurkishLira:\"Turkish Lira\",VanuatuVatu:\"Vanuatu Vatu\",GuatemalanQuetzal:\"Guatemalan Quetzal\",CommissionBolivar:\"Commission Bolivar\",BruneiDollar:\"Brunei Dollar\",UgandanShilling:\"Ugandan Shilling\",UkrainianHryvnia:\"Ukrainian Hryvnia\",UruguayanPeso:\"Uruguayan Peso\",Uzbekistansom:\"Uzbekistan som\",WesternSamoaTala:\"Western Samoa Tala\",SingaporeDollar:\"Singapore Dollar\",NT:\"NT\",NewZealandDollar:\"New Zealand Dollar\",HungarianForint:\"Hungarian Forint\",SyrianPound:\"Syrian Pound\",JamaicanDollar:\"Jamaican Dollar\",ArmenianDram:\"Armenian Dram\",YemeniRial:\"Yemeni Rial\",IraqiDinar:\"Iraqi Dinar\",IranianRial:\"Iranian Rial\",NewIsraeliShekel:\"New Israeli Shekel\",IndianRupee:\"Indian Rupee\",IndonesianRupiah:\"Indonesian Rupiah\",JordanianDinar:\"Jordanian Dinar\",VND:\"VND\",ZambianKwacha:\"Zambian Kwacha\",GibraltarPound:\"Gibraltar Pound\",ChileanPeso:\"Chilean Peso\",CFAFrancBEAC:\"CFA Franc BEAC\"},defaultFmt:[{text:\"Automático\",value:\"General\",example:\"\"},{text:\"Texto\",value:\"@\",example:\"\"},{text:\"\",value:\"partir\",example:\"\"},{text:\"Número\",value:\"##0.00\",example:\"1000.12\"},{text:\"Porcentaje\",value:\"#0.00%\",example:\"12.21%\"},{text:\"Científico\",value:\"0.00E+00\",example:\"1.01E+5\"},{text:\"\",value:\"split\",example:\"\"},{text:\"Contabilidad\",value:\"¥(0.00)\",example:\"¥(1200.09)\"},{text:\"Moneda\",value:\"¥0.00\",example:\"¥1200.09\"},{text:\"\",value:\"partir\",example:\"\"},{text:\"Fecha\",value:\"yyyy-MM-dd\",example:\"2017-11-29\"},{text:\"Hora\",value:\"hh:mm AM/PM\",example:\"3:00 PM\"},{text:\"Hora 24H\",value:\"hh:mm\",example:\"15:00\"},{text:\"Fecha Hora\",value:\"yyyy-MM-dd hh:mm AM/PM\",example:\"2017-11-29 3:00 PM\"},{text:\"Fecha Hora 24 H\",value:\"yyyy-MM-dd hh:mm\",example:\"2017-11-29 15:00\"},{text:\"\",value:\"partir\",example:\"\"},{text:\"Formatos personalizados\",value:\"fmtOtherSelf\",example:\"más\"}],dateFmtList:[{name:\"1930-08-05\",value:\"yyyy-MM-dd\"},{name:\"1930/8/5\",value:\"yyyy/MM/dd\"},{name:\"08-05\",value:\"MM-dd\"},{name:\"8-5\",value:\"M-d\"},{name:\"13:30:30\",value:\"h:mm:ss\"},{name:\"13:30\",value:\"h:mm\"},{name:\"PM 01:30\",value:\"AM/PM hh:mm\"},{name:\"PM 1:30\",value:\"AM/PM h:mm\"},{name:\"PM 1:30:30\",value:\"AM/PM h:mm:ss\"},{name:\"08-05 PM 01:30\",value:\"MM-dd AM/PM hh:mm\"}],fontFamily:{MicrosoftYaHei:\"YaHei\"},fontarray:[\"Times New Roman\",\"Arial\",\"Tahoma\",\"Verdana\"],fontjson:{\"times new roman\":0,arial:1,tahoma:2,verdana:3},border:{borderTop:\"borderTop\",borderBottom:\"borderBottom\",borderLeft:\"borderLeft\",borderRight:\"borderRight\",borderNone:\"borderNone\",borderAll:\"borderAll\",borderOutside:\"borderOutside\",borderInside:\"borderInside\",borderHorizontal:\"borderHorizontal\",borderVertical:\"borderVertical\",borderColor:\"borderColor\",borderSize:\"borderSize\"},merge:{mergeAll:\"Unir todo\",mergeV:\"Verticalmente\",mergeH:\"Horizontalmente\",mergeCancel:\"Separar\",overlappingError:\"No se pueden fusionar áreas superpuestas\",partiallyError:\"No se puede realizar esta operación en celdas parcialmente unidas\"},align:{left:\"izquierda\",center:\"centro\",right:\"derecha\",top:\"Arriba\",middle:\"Centro\",bottom:\"Abajo\"},textWrap:{overflow:\"Desbordar\",wrap:\"Ajustar\",clip:\"Cortar\"},rotation:{none:\"Ninguno\",angleup:\"Ladear Arriba\",angledown:\"Ladear Abajo\",vertical:\"Apilar Verticalmente\",rotationUp:\"Rotar Arriba\",rotationDown:\"Rotar Abajo\"},freezen:{default:\"Fijar\",freezenRow:\"Primera Fila\",freezenColumn:\"Primera Columna\",freezenRC:\"Ambas\",freezenRowRange:\"Fijar rango filas\",freezenColumnRange:\"Fijar rango columnas\",freezenRCRange:\"Fijar ambos rangos\",freezenCancel:\"Cancelar\",noSeletionError:\"No hay rango para seleccionar\",rangeRCOverErrorTitle:\"Recordatorio de congelación\",rangeRCOverError:\"El panel de congelación excede el rango visible y puede causar que no funcione correctamente. Reinicie el área de congelación.\"},sort:{asc:\"Ascendente \",desc:\"Descendente \",custom:\"Ordenación personalizada\",hasTitle:\"Los datos tienen una fila de encabezado\",sortBy:\"Ordenar por\",addOthers:\"Añadir otra columna de ordenación\",close:\"cerrar\",confirm:\"ordenar\",columnOperation:\"Columna\",secondaryTitle:\"y después por\",sortTitle:\"Ordenar rango\",sortRangeTitle:\"Ordenar rango de\",sortRangeTitleTo:\"a\",noRangeError:\"No se puede realizar esta operación en múltiples áreas de selección, selecciona un solo rango e intenta nuevamente\",mergeError:\"Hay celdas combinadas en la selección, ¡esta operación no se puede realizar!\",columnSortMergeError:\"La ordenación de las columnas se extiende a toda la selección de la tabla. Esta operación no puede realizarse si hay celdas fusionadas. Utilice la función de clasificación de la barra de herramientas.\"},filter:{filter:\"crear filtro\",sortByAsc:\"Ordenar A-Z\",sortByDesc:\"Ordenar Z-A\",filterByColor:\"Filtrar por color\",filterByCondition:\"Filtrar por condición\",filterByValues:\"Filtrar por valores\",filiterInputNone:\"Ninguno\",filiterInputTip:\"Introduce valor de filtro\",filiterRangeStart:\"\",filiterRangeStartTip:\"Valor para fórmula\",filiterRangeEnd:\"e\",filiterRangeEndTip:\"Valor para fórmula\",filterValueByAllBtn:\"Seleccionar todos\",filterValueByClearBtn:\"Limpiar\",filterValueByInverseBtn:\"Invertir\",filterValueByTip:\"filtrar por valores\",filterConform:\"Confirmar\",filterCancel:\"Cancelar\",clearFilter:\"Quitar filtro\",conditionNone:\"Ninguno\",conditionCellIsNull:\"Está vacío\",conditionCellNotNull:\"No está vacío\",conditionCellTextContain:\"El texto contiene\",conditionCellTextNotContain:\"El texto no contiene\",conditionCellTextStart:\"El texto empieza con\",conditionCellTextEnd:\"El texto termina con\",conditionCellTextEqual:\"El texto es exactamente\",conditionCellDateEqual:\"La fecha es\",conditionCellDateBefore:\"La fecha es anterior\",conditionCellDateAfter:\"La fecha es posterior\",conditionCellGreater:\"Mayor que\",conditionCellGreaterEqual:\"Mayor o igual que\",conditionCellLess:\"Menor que\",conditionCellLessEqual:\"Menor o igual que\",conditionCellEqual:\"Es igual a\",conditionCellNotEqual:\"No es igual a\",conditionCellBetween:\"Está entre\",conditionCellNotBetween:\"No está entre\",filiterMoreDataTip:\"¡Gran cantidad de datos! por favor espera\",filiterMonthText:\"Mes\",filiterYearText:\"Año\",filiterByColorTip:\"Filtrar por color de celda\",filiterByTextColorTip:\"Filtrar por color de fuente\",filterContainerOneColorTip:\"Esta columna contiene solo un color\",filterDateFormatTip:\"Format fecha\",valueBlank:\"(Nulo)\",mergeError:\"Hay celdas combinadas en la selección del filtro, ¡esta operación no se puede realizar!\"},rightclick:{copy:\"Copiar\",copyAs:\"Copiar como\",paste:\"Pegar\",insert:\"Insertar\",delete:\"Eliminar\",deleteCell:\"Eliminar celda\",deleteSelected:\"Eliminar seleccionado \",hide:\"Esconder\",hideSelected:\"Esconder seleccionado \",showHide:\"Mostrar ocultos \",to:\"Hacia\",left:\"Izquierda\",right:\"Derecha\",top:\"Arriba\",bottom:\"Abajo\",moveLeft:\"Mover izquierda\",moveUp:\"Mover arriba\",add:\"Añadir\",row:\"Fila\",column:\"Columna\",width:\"Ancho\",height:\"Alto\",number:\"Número\",confirm:\"Confirmar\",orderAZ:\"Ordenar A-Z\",orderZA:\"Ordenar Z-A\",clearContent:\"Limpiar contenido\",matrix:\"Operación de Matriz\",sortSelection:\"Ordenar\",filterSelection:\"Filtrar\",chartGeneration:\"Crear gráfico\",firstLineTitle:\"título primera línea\",untitled:\"sin título\",array1:\"Matriz unidimensional\",array2:\"Matriz bidimensional\",array3:\"Matrices multidimensionales\",diagonal:\"Diagonal\",antiDiagonal:\"Anti-diagonal\",diagonalOffset:\"Desplazamiento Diagonal\",offset:\"Desplazamiento\",boolean:\"Booleana\",flip:\"Voltear\",upAndDown:\"Arriba y abajo\",leftAndRight:\"Izquierda y derecha\",clockwise:\"Sentido horario\",counterclockwise:\"Sentido anti-horario\",transpose:\"Transponer\",matrixCalculation:\"Cálculo de matrices\",plus:\"Suma\",minus:\"Resta\",multiply:\"Multiplicación\",divided:\"División\",power:\"Exponenciación\",root:\"Raíz Cuadrada\",log:\"Logaritmo\",delete0:\"Eliminar valores nulos en ambos extremos\",removeDuplicate:\"Eliminar valores duplicados\",byRow:\"Por fila\",byCol:\"Por columna\",generateNewMatrix:\"Generar nueva matriz\"},comment:{insert:\"Insertar\",edit:\"Editar\",delete:\"Elimiar\",showOne:\"Mostrar/Ocular\",showAll:\"Mostrar/Ocular Todo\"},screenshot:{screenshotTipNoSelection:\"Selecciona el alcance de la captura de pantalla\",screenshotTipTitle:\"¡Advertencia!\",screenshotTipHasMerge:\"Esta operación no se puede realizar en celdas combinadas\",screenshotTipHasMulti:\"Esta operación no se puede realizar en varios rangos de selección\",screenshotTipSuccess:\"Exitoso\",screenshotImageName:\"Captura de pantalla\",downLoadClose:\"Cerrar\",downLoadCopy:\"Copiar al portapapeles\",downLoadBtn:\"Descargar\",browserNotTip:\"no es compatible con el navegador IE.\",rightclickTip:'Haz clic con el botón derecho en la imagen y selecciona \"copiar\"',successTip:'Con éxito (si falla el pegado, haz clic con el botón derecho en la imagen para \"copiar imagen\")'},splitText:{splitDelimiters:\"Delimitadores\",splitOther:\"Otros\",splitContinueSymbol:\"Los separadores consecutivos se tratan como uno solo\",splitDataPreview:\"Previsualizar\",splitTextTitle:\"Partir texto\",splitConfirmToExe:\"Ya hay datos aquí, ¿quieres reemplazarlos?\",tipNoMulti:\"No se puede realizar esta operación en varias áreas de selección, selecciona una única área y vuelve a intentarlo\",tipNoMultiColumn:\"Solo se puede convertir una columna de datos a la vez. El área seleccionado puede tener varias filas, pero no varias columnas. Vuelve a intentarlo después de seleccionar un solo rango de columnas\"},imageText:{imageSetting:\"Configuración de imagen\",close:\"Cerrar\",conventional:\"Convencional\",moveCell1:\"Mover y cambiar el tamaño de las celdas\",moveCell2:\"Mover y no cambiar el tamaño de la celda\",moveCell3:\"No mover ni cambiar el tamaño de la celda\",fixedPos:\"Posición fija\",border:\"Borde\",width:\"Ancho\",radius:\"Radio\",style:\"Estilo\",solid:\"Sólido\",dashed:\"Discontinua\",dotted:\"Punteado\",double:\"Doble\",color:\"Color\"},punctuation:{tab:\"Tabulación\",semicolon:\"punto y coma\",comma:\"coma\",space:\"espacio\"},findAndReplace:{find:\"Encontrar\",replace:\"Reemplazar\",goto:\"Ir a\",location:\"Ubicación\",formula:\"Fórmula\",date:\"Fecha\",number:\"Número\",string:\"Texto\",error:\"Error\",condition:\"Condición\",rowSpan:\"Intervalo de filas\",columnSpan:\"Intervalo de columnas\",locationExample:\"Ubicación\",lessTwoRowTip:\"Selecciona al menos dos filas\",lessTwoColumnTip:\"Selecciona al menos dos columnas\",findTextbox:\"Encontrar Contenido\",replaceTextbox:\"Reemplazar Contenido\",regexTextbox:\"Expresión Regular\",wholeTextbox:\"Palabra entera\",distinguishTextbox:\"Distingue mayúsculas y minúsculas\",allReplaceBtn:\"Reemplazar Todo\",replaceBtn:\"Reemplazar\",allFindBtn:\"Encontrar Todo\",findBtn:\"Encontrar siguiente\",noFindTip:\"No se encontró el contenido\",modeTip:\"Esta operación no está disponible en este modo\",searchTargetSheet:\"Hoja\",searchTargetCell:\"Celda\",searchTargetValue:\"Valor\",searchInputTip:\"Introduce el contenido de la búsqueda\",noReplceTip:\"No hay nada que reemplazar\",noMatchTip:\"No se encontraron coincidencias\",successTip:\"${xlength} elementos encontrados\",locationConstant:\"Constante\",locationFormula:\"Fórmula\",locationDate:\"Fecha\",locationDigital:\"Número\",locationString:\"Texto\",locationBool:\"Lógicos\",locationError:\"Error\",locationNull:\"Nulo\",locationCondition:\"Formato condicional\",locationRowSpan:\"Intervalo fila\",locationColumnSpan:\"Intervalo columna\",locationTiplessTwoRow:\"Selecciona al menos dos filas\",locationTiplessTwoColumn:\"Selecciona al menos dos columnas\",locationTipNotFindCell:\"Celda no encontrada\"},sheetconfig:{delete:\"Eliminar\",copy:\"Copiar\",rename:\"Renombrar\",changeColor:\"Cambiar color\",hide:\"Ocultar\",unhide:\"Mostrar\",moveLeft:\"Mover izquierda\",moveRight:\"Mover derecja\",resetColor:\"Reiniciar color\",cancelText:\"Cancelar\",chooseText:\"Confirmar color\",tipNameRepeat:\"¡El nombre de la página de la pestaña no se puede repetir! Revísalo\",noMoreSheet:\"El libro de trabajo contiene al menos una hoja de trabajo visual. Para eliminar la hoja de trabajo seleccionada, inserta una nueva hoja de trabajo o muestra una hoja de trabajo oculta\",confirmDelete:\"¿Estás seguro de eliminar\",redoDelete:\"Se puede deshacer con Ctrl+Z\",noHide:\"No se puede ocultar, al menos conserva una etiqueta de hoja\",chartEditNoOpt:\"¡Esta operación no está permitida en el modo de edición de gráficos!\",sheetNameSpecCharError:\"El nombre no puede contener:[ ] :  ? * / ' \\\"\",sheetNamecannotIsEmptyError:\"El nombre de la hoja no puede estar vacío\"},conditionformat:{conditionformat_greaterThan:\"Conditionformat-GreaterThan\",conditionformat_greaterThan_title:\"Dar formato a celdas mayores que\",conditionformat_lessThan:\"Conditionformat-LessThan\",conditionformat_lessThan_title:\"Dar formato a celdas más pequeñas que\",conditionformat_betweenness:\"Conditionformat-Betweenness\",conditionformat_betweenness_title:\"Dar formato a celdas con valores entre\",conditionformat_equal:\"Conditionformat-Equal\",conditionformat_equal_title:\"Dar formato a celdas iguales a\",conditionformat_textContains:\"Conditionformat-TextContains\",conditionformat_textContains_title:\"Dar formato a las celdas que contienen el siguiente texto\",conditionformat_occurrenceDate:\"Conditionformat-OccurrenceDate\",conditionformat_occurrenceDate_title:\"Dar formato a celdas que contienen las siguientes fechas\",conditionformat_duplicateValue:\"Conditionformat-DuplicateValue\",conditionformat_duplicateValue_title:\"Dar formato a celdas que contienen los siguientes tipos de valores\",conditionformat_top10:\"Conditionformat-Top10\",conditionformat_top10_percent:\"Conditionformat-Top10%\",conditionformat_top10_title:\"Formatea las celdas con el valor más alto\",conditionformat_last10:\"Conditionformat-Last10\",conditionformat_last10_percent:\"Conditionformat-Last10%\",conditionformat_last10_title:\"Formatea las celdas con el valor más pequeño\",conditionformat_AboveAverage:\"Conditionformat-AboveAverage\",conditionformat_AboveAverage_title:\"Dar formato a celdas por encima del promedio\",conditionformat_SubAverage:\"Conditionformat-SubAverage\",conditionformat_SubAverage_title:\"Dar formato a celdas por debajo del promedio\",rule:\"Regla\",newRule:\"Nueva regla\",editRule:\"Editar regla\",deleteRule:\"Eliminar regla\",deleteCellRule:\"Eliminar regla de celda\",deleteSheetRule:\"Eliminar regla de hoja\",manageRules:\"Reglas administración\",showRules:\"Muestra sus reglas de formato\",highlightCellRules:\"Resaltar reglas de celda\",itemSelectionRules:\"Reglas de selección de elementos\",conditionformatManageRules:\"Administrador de reglas de formato condicional\",format:\"Formatear\",setFormat:\"Establecer formato\",setAs:\"Establecer como\",setAsByArea:\"Para el área seleccionada, establecer\",applyRange:\"Aplicar rango\",selectRange:\"Seleccionar rango de aplicación\",selectRange_percent:\"Porcentaje del rango seleccionado\",selectRange_average:\"Valor promedio del rango seleccionado\",selectRange_value:\"Valor en el rango seleccionado\",pleaseSelectRange:\"Selecciona el rango de aplicación\",selectDataRange:\"Seleccionar rango de datos\",selectCell:\"seleccionar celda\",pleaseSelectCell:\"Selecciona una celda\",pleaseSelectADate:\"Selecciona una fecha\",pleaseEnterInteger:\"Introduzca un número entero entre 1 y 1000\",onlySingleCell:\"Solo se puede hacer referencia a una sola celda\",conditionValueCanOnly:\"El valor de la condición solo puede ser un número o una sola celda\",ruleTypeItem1:\"Aplicar formato a todas las celdas según sus valores respectivos\",ruleTypeItem2:\"Solo formatear celdas que contengan\",ruleTypeItem2_title:\"Solo para celdas que cumplan las siguientes condiciones\",ruleTypeItem3:\"Aplicar formato solo a los números superiores o inferiores\",ruleTypeItem3_title:\"Es el valor en la siguiente clasificación\",ruleTypeItem4:\"Aplicar formato solo a los valores superiores o inferiores al promedio\",ruleTypeItem4_title:\"Es un valor que cumple las siguientes condiciones\",ruleTypeItem5:\"Aplicar formato solo a valores únicos o repetidos\",ruleTypeItem6:\"Use fórmulas para determinar qué celdas formatear\",formula:\"fórmula\",textColor:\"Color Texto\",cellColor:\"Color Celda\",confirm:\"Confirma\",confirmColor:\"Confirma color\",cancel:\"Cancela\",close:\"Cierra\",clearColorSelect:\"Limpiar selección de color\",sheet:\"Hoja\",currentSheet:\"Hoja actual\",dataBar:\"Barra de datos\",dataBarColor:\"Color barra de datos\",gradientDataBar_1:\"Barra de datos de degradado azul-blanco\",gradientDataBar_2:\"Barra de datos de degradado verde-blanco\",gradientDataBar_3:\"Barra de datos de degradado rojo-blanco\",gradientDataBar_4:\"Rayas de degradado de color naranja-blanco\",gradientDataBar_5:\"Rayas de degradado azul claro-blancas\",gradientDataBar_6:\"Barra de datos de degradado púrpura-blanco\",solidColorDataBar_1:\"Barra de datos azul\",solidColorDataBar_2:\"Barra de datos verde\",solidColorDataBar_3:\"Barra de datos roja\",solidColorDataBar_4:\"Barra de datos naranja\",solidColorDataBar_5:\"Barra de datos azul claro\",solidColorDataBar_6:\"Barra de datos púrpura\",colorGradation:\"Degradado de color\",colorGradation_1:\"Gradación de color verde-amarillo-rojo\",colorGradation_2:\"Gradación de color rojo-amarillo-verde\",colorGradation_3:\"Gradación de color verde-blanco-rojo\",colorGradation_4:\"Gradación de color rojo-blanco-verde\",colorGradation_5:\"Gradación de color azul-blanco-rojo\",colorGradation_6:\"Gradación de color rojo-blanco-azul\",colorGradation_7:\"Gradación de color blanco-rojo\",colorGradation_8:\"Gradación de color rojo-blanco\",colorGradation_9:\"Gradación de color verde-blanco\",colorGradation_10:\"Gradación de color blanco-verde\",colorGradation_11:\"Gradación de color verde-amarillo\",colorGradation_12:\"Gradación de color amarillo-verde\",icons:\"iconos\",pleaseSelectIcon:\"Haz clic para seleccionar un grupo de iconos:\",cellValue:\"Valor de celda\",specificText:\"Texto específico\",occurrence:\"Fecha\",greaterThan:\"Mayor que\",lessThan:\"Menor que\",between:\"Entre\",equal:\"Igual\",in:\"En\",between2:\"\",contain:\"Contiene\",textContains:\"Texto contiene\",duplicateValue:\"Valor duplicado\",uniqueValue:\"Valor Unico\",top:\"Mejor\",top10:\"10 mejores\",top10_percent:\"10% mejores\",last:\"Ultimo\",last10:\"Ultimos 10\",last10_percent:\"Ultimos 10%\",oneself:\"\",above:\"Encima\",aboveAverage:\"Encima media\",below:\"Debajo\",belowAverage:\"Debajo media\",all:\"Todos\",yesterday:\"Año a fecha\",today:\"Hoy\",tomorrow:\"Mañana\",lastWeek:\"Ultima semana\",thisWeek:\"Esta semana\",lastMonth:\"Ultimo mes\",thisMonth:\"Este mes\",lastYear:\"Ultimo año\",thisYear:\"Este año\",last7days:\"Ultimos 7 días\",last30days:\"Ultimos 30 días\",next7days:\"Siguientes 7 días\",next30days:\"Siguientes 30 días\",next60days:\"Siguientes 60 días\",chooseRuleType:\"Elige el tipo de regla\",editRuleDescription:\"Editar descripción de regla\",newFormatRule:\"Nueva regla de formato\",editFormatRule:\"Editar regla de formato\",formatStyle:\"Estilo\",fillType:\"Rellenar\",color:\"Color\",twocolor:\"Dos colores\",tricolor:\"Tricolor\",multicolor:\"Multi color\",grayColor:\"Color gris\",gradient:\"Gradiente\",solid:\"Sólido\",maxValue:\"Valor máximo\",medianValue:\"Valor mediano\",minValue:\"Valor mínimo\",direction:\"Dirección\",threeWayArrow:\"Flecha de tres direcciones\",fourWayArrow:\"Flecha de cuatro direcciones\",fiveWayArrow:\"Flecha de cinco direcciones\",threeTriangles:\"Tres triángulos\",shape:\"Forma\",threeColorTrafficLight:\"Semáforo de tres colores\",fourColorTrafficLight:\"Semáforo de cuatro colores\",threeSigns:\"Tres signos\",greenRedBlackGradient:\"Gradiente verde-rojo-negro\",rimless:\"Sin aros\",bordered:\"Bordeado\",mark:\"Marcar\",threeSymbols:\"Tres símbolos\",tricolorFlag:\"Bandera tricolor\",circled:\"Rodeado\",noCircle:\"Sin círculo\",grade:\"Grado\",grade4:\"4 Grado\",grade5:\"5 Grado\",threeStars:\"3 Estrellas\",fiveQuadrantDiagram:\"Diagrama de cinco cuadrantes\",fiveBoxes:\"5 Cajas\"},dataVerification:{cellRange:\"Rango celdas\",selectCellRange:\"Haz clic para seleccionar un rango de celdas\",selectCellRange2:\"Selecciona un rango de celdas\",verificationCondition:\"Condición de verificación\",allowMultiSelect:\"Permitir selección múltiple\",dropdown:\"lista desplegable\",checkbox:\"Casilla de verificación\",number:\"Número\",number_integer:\"Número entero\",number_decimal:\"Número decimal\",text_content:\"Contenido texto\",text_length:\"Longitud texto\",date:\"Fecha\",validity:\"Eficacia\",placeholder1:\"Introduce las opciones, separadas por comas, como 1,2,3,4,5\",placeholder2:\"Introduce contenido\",placeholder3:\"Valor numérico, como 10\",placeholder4:\"Introduce el texto especificado\",placeholder5:\"Introduce el mensaje que se muestra cuando se selecciona la celda\",selected:\"Seleccionado\",notSelected:\"No seleccionado\",between:\"Entre\",notBetween:\"No entre\",equal:\"Iqual\",notEqualTo:\"No iqual a\",moreThanThe:\"Más que el\",lessThan:\"Menos que\",greaterOrEqualTo:\"Mayor o igual a\",lessThanOrEqualTo:\"Menor o igual a\",include:\"Incluir\",exclude:\"Excluir\",earlierThan:\"Antes de\",noEarlierThan:\"No antes de\",laterThan:\"Después de\",noLaterThan:\"No después de\",identificationNumber:\"Número de identificación\",phoneNumber:\"Número de teléfono\",remote:\"Opción de adquisición remota automática\",prohibitInput:\"Prohibir la entrada cuando los datos de entrada no son válidos\",hintShow:\"Mostrar mensaje cuando se selecciona la celda\",deleteVerification:\"Eliminar verificación\",tooltipInfo1:\"La opción de la lista desplegable no puede estar vacía\",tooltipInfo2:\"El contenido de la casilla de verificación no puede estar vacío\",tooltipInfo3:\"El valor ingresado no es un tipo numérico\",tooltipInfo4:\"El segundo valor no puede ser menor que el primero\",tooltipInfo5:\"El contenido del texto no puede estar vacío\",tooltipInfo6:\"El valor ingresado no es una fecha\",tooltipInfo7:\"La segunda fecha no puede ser menor que la primera\",textlengthInteger:\"La longitud del texto debe ser un entero mayor o igual a 0\"},formula:{sum:\"Suma\",average:\"Media\",count:\"Contar\",max:\"Máx\",min:\"Mín\",ifGenerate:\"Generador de fórmula SI\",find:\"Aprender más\",tipNotBelongToIf:\"¡Esta función de celda no pertenece a la fórmula SI!\",tipSelectCell:\"Selecciona la celda para insertar la función\",ifGenCompareValueTitle:\"Valor de comparación\",ifGenSelectCellTitle:\"Haz click para seleccionar una celda\",ifGenRangeTitle:\"Rango\",ifGenRangeTo:\"a\",ifGenRangeEvaluate:\"Evaluar rango\",ifGenSelectRangeTitle:\"Haz click para seleccionar rango\",ifGenCutWay:\"Forma particionado\",ifGenCutSame:\"Mismo valor de particionado\",ifGenCutNpiece:\"Particionar por N\",ifGenCutCustom:\"Personalizado\",ifGenCutConfirm:\"Confirma\",ifGenTipSelectCell:\"Selecciona celdas\",ifGenTipSelectCellPlace:\"Por favor selecciona celdas\",ifGenTipSelectRange:\"Selecciona rango\",ifGenTipSelectRangePlace:\"Por favor selecciona rango\",ifGenTipNotNullValue:\"El valor de comparación no puede ser vacío!\",ifGenTipLableTitile:\"Etiqueta\",ifGenTipRangeNotforNull:\"El rango no puede quedar vacío!\",ifGenTipCutValueNotforNull:\"El valor de partición no puede ser vacío!\",ifGenTipNotGenCondition:\"No hay condiciones disponibles para la generación!\"},formulaMore:{valueTitle:\"Valor\",tipSelectDataRange:\"Selecciona rango de datos\",tipDataRangeTile:\"Rango de datos\",findFunctionTitle:\"Función de búsqueda\",tipInputFunctionName:\"Nombre o breve descripción de la función\",Array:\"Vector\",Database:\"Base de datos\",Date:\"Fecha\",Engineering:\"Ingeniería\",Filter:\"Filtro\",Financial:\"Financiero\",luckysheet:\"Luckysheet\",other:\"Otro\",Logical:\"Lógica\",Lookup:\"Búsqueda\",Math:\"Matemático\",Operator:\"Operadores\",Parser:\"Compilador\",Statistical:\"Estadístico\",Text:\"Texto\",dataMining:\"Minería de datos\",selectFunctionTitle:\"Selecciona una función\",calculationResult:\"Resultado\",tipSuccessText:\"Exito\",tipParamErrorText:\"Parámetro erróneo\",helpClose:\"Cerrar\",helpCollapse:\"Recoger\",helpExample:\"Ejemplo\",helpAbstract:\"Resumen\",execfunctionError:\"Error en la fórmula\",execfunctionSelfError:\"La fórmula no puede hacer referencia a su propia celda\",execfunctionSelfErrorResult:\"La fórmula no puede hacer referencia a su propia celda, lo que dará lugar a resultados de cálculo inexactos\",allowRepeatText:\"Repetir\",allowOptionText:\"Opción\",selectCategory:\"O selecciona una categoría\"},drag:{noMerge:\"No se puede realizar esta operación en celdas combinadas\",afectarPivot:\"¡Este cambio no se puede realizar en la celda seleccionada porque afectará a la tabla dinámica!\",noMulti:\"No se puede realizar esta operación en varias áreas de selección, selecciona una sola área\",noPaste:\"No se puede pegar este contenido aquí, selecciona una celda en el área de pegado e intenta pegar nuevamente\",noPartMerge:\"No se puede realizar esta operación en celdas parcialmente fusionadas\",inputCorrect:\"Introduce el valor correcto\",notLessOne:\"El número de filas y columnas no puede ser inferior a 1\",offsetColumnLessZero:\"¡La columna de desplazamiento no puede ser negativa!\",pasteMustKeybordAlert:\"在表格中进行复制粘贴: Ctrl + C 进行复制, Ctrl + V 进行粘贴, Ctrl + X 进行剪切\",pasteMustKeybordAlertHTMLTitle:\"在表格中进行复制粘贴\",pasteMustKeybordAlertHTML:\"<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;进行复制<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;进行粘贴<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;进行剪切\"},paste:{warning:\"Advertencia\",errorNotAllowMulti:\"No se puede realizar esta operación en varias áreas de selección, selecciona un solo rango y vuelve a intentarlo\",errorNotAllowMerged:\"No se pueden realizar cambios parciales en las celdas fusionadas\"},pivotTable:{title:\"Tabla Dinámica\",closePannel:\"Cerrar\",editRange:\"Rango\",tipPivotFieldSelected:\"Selecciona los campos\",tipClearSelectedField:\"Limpiar todos los campos\",btnClearSelectedField:\"Limpiar\",btnFilter:\"Filtrar\",titleRow:\"Fila\",titleColumn:\"Columna\",titleValue:\"Valor\",tipShowColumn:\"Los campos de estadísticas se muestran como columnas\",tipShowRow:\"Los campos de estadísticas se muestran como filas\",titleSelectionDataRange:\"Selecciona rango\",titleDataRange:\"Rango de datos\",valueSum:\"SUMA\",valueStatisticsSUM:\"Suma\",valueStatisticsCOUNT:\"Contar\",valueStatisticsCOUNTA:\"Contar A\",valueStatisticsCOUNTUNIQUE:\"Contar Distintos\",valueStatisticsAVERAGE:\"Media\",valueStatisticsMAX:\"Máx\",valueStatisticsMIN:\"Mín\",valueStatisticsMEDIAN:\"Mediana\",valueStatisticsPRODUCT:\"Producto\",valueStatisticsSTDEV:\"Desviación Estándar\",valueStatisticsSTDEVP:\"Stdevp\",valueStatisticslet:\"Varianza\",valueStatisticsVARP:\"VarP\",errorNotAllowEdit:\"¡Esta operación está prohibida en el modo sin edición!\",errorNotAllowMulti:\"No se puede realizar esta operación en varias áreas de selección, selecciona un solo rango y vuelve a intentarlo\",errorSelectRange:\"Seleccione el rango de la nueva tabla dinámica\",errorIsDamage:\"¡Los datos de origen de esta tabla dinámica están dañados!\",errorNotAllowPivotData:\"¡No se puede seleccionar la tabla dinámica como datos de origen!\",errorSelectionRange:\"¡La selección falló, rango de entrada incorrecto!\",errorIncreaseRange:\"¡Por favor, expande el rango seleccionado!\",titleAddColumn:\"Añadir columna a la tabla dinámica\",titleMoveColumn:\"Muever la columna a la celda en blanco de abajo\",titleClearColumnFilter:\"Quitar el filtro de esta columna\",titleFilterColumn:\"Filtro\",titleSort:\"Ordenar\",titleNoSort:\"No Ordenar\",titleSortAsc:\"ASC\",titleSortDesc:\"DESC\",titleSortBy:\"Ordenar por\",titleShowSum:\"Mostrar total\",titleStasticTrue:\"Sí\",titleStasticFalse:\"No\"},dropCell:{copyCell:\"Copiar\",sequence:\"Secuencia\",onlyFormat:\"Solo formato\",noFormat:\"Sin formato\",day:\"Día\",workDay:\"Día Laborable\",month:\"Mes\",year:\"Año\",chineseNumber:\"Números Chinos\"},imageCtrl:{borderTile:\"Color de borde de imagen\",borderCur:\"Color\"},protection:{protectiontTitle:\"Protección\",enterPassword:\"Introduce una contraseña (opcional)\",enterHintTitle:\"Preguntar cuando la edición está prohibida (opcional)\",enterHint:\"La celda o el gráfico que estás intentando cambiar se encuentra en una hoja de trabajo protegida. Si quieres cambiarlo, desprotege la hoja de trabajo. Es posible que tengas que ingresar una contraseña\",swichProtectionTip:\"Protege la hoja y el contenido de las celdas bloqueadas\",authorityTitle:\"Permitir a los usuarios de esta hoja:\",selectLockedCells:\"Selecciona celdas bloqueadas\",selectunLockedCells:\"Selecciona celdas desbloqueadas\",formatCells:\"Formatear celdas\",formatColumns:\"Formatear columnas\",formatRows:\"Formatear filas\",insertColumns:\"Insertar columnas\",insertRows:\"Insertar filas\",insertHyperlinks:\"Insertar enlaces\",deleteColumns:\"Eliminar columnas\",deleteRows:\"Eliminar filas\",sort:\"Ordenar\",filter:\"Filtrar\",usePivotTablereports:\"Usar informes de tabla dinámica\",editObjects:\"Editar objetos\",editScenarios:\"Editar escenarios\",allowRangeTitle:\"Permitir a los usuarios del rango:\",allowRangeAdd:\"Nuevo...\",allowRangeAddTitle:\"Título\",allowRangeAddSqrf:\"Referencia\",selectCellRange:\"Haz clic para seleccionar un rango de celdas\",selectCellRangeHolder:\"Rango de celdas\",allowRangeAddTitlePassword:\"Contraseña\",allowRangeAddTitleHint:\"Pregunta\",allowRangeAddTitleHintTitle:\"Preguntar cuando hay una contraseña (opcional)\",allowRangeAddtitleDefault:\"Nombre del rango de entrada\",rangeItemDblclick:\"Haz doble clic para editar\",rangeItemHasPassword:\"Tiene contraseña\",rangeItemErrorTitleNull:\"El título es nulo\",rangeItemErrorRangeNull:\"La referencia es nula\",rangeItemErrorRange:\"La reference tiene un error\",validationTitle:\"Validación de contraseña\",validationTips:\"Hay que ingresar una contraseña para desbloquear la protección de la hoja de trabajo\",validationInputHint:\"Introduce una contraseña\",checkPasswordNullalert:\"Contraseña requerida!\",checkPasswordWrongalert:\"¡Contraseña incorrecta. Por favor, prueba de nuevo!\",checkPasswordSucceedalert:\"Desbloqueo conseguido!\",defaultRangeHintText:\"La celda está protegida con contraseña.\",defaultSheetHintText:\"La celda o el gráfico están en una hoja de trabajo protegida. Para realizar cambios, desprotege la hoja de trabajo. Es posible que tengas que ingresar una contraseña\"},cellFormat:{cellFormatTitle:\"Formatear celdas\",protection:\"Protección\",locked:\"Bloqueado\",hidden:\"Escondido\",protectionTips:\"Para bloquear celdas u ocultar fórmulas, protege la hoja de trabajo. En la barra de herramientas, haz clic en el botón Proteger hoja\",tipsPart:\"Comprobado parcial\",tipsAll:\"Todo seleccionado\",selectionIsNullAlert:\"Se requiere una selección!\",sheetDataIsNullAlert:\"error, no hay datos!\"},print:{normalBtn:\"Normal\",layoutBtn:\"Disposición de página\",pageBtn:\"Previsualización de saltos de página\",menuItemPrint:\"Imprimir (Ctrl+P)\",menuItemAreas:\"Imprimir áreas\",menuItemRows:\"Imprimir títulos de filas\",menuItemColumns:\"Imprimir títulos de columnas\"},edit:{typing:\"mecanografía\"},websocket:{success:\"Éxito de la conexión de WebSocket\",refresh:\"Se produjo un error en la conexión de WebSocket, ¡actualice la página!\",wait:\"Se produjo un error en la conexión de WebSocket, ¡tenga paciencia!\",close:\"Conexión WebSocket cerrada\",contact:\"Ocurrió un error de comunicación con el servidor, actualice la página y vuelva a intentarlo; de lo contrario, comuníquese con el administrador.\",support:\"El navegador actual no es compatible con WebSocket\"},exportXlsx:{notice:\"Configure el complemento de exportación\",serverError:\"El servidor está en mantenimiento\",title:\"Exportar XLSX\",range:\"alcance\",currentSheet:\"Hoja de trabajo actual\",allSheets:\"Todas las hojas\"}}})),G=y((()=>{B={functionlist:{SUMIF:{d:\"對範圍中符合指定條件的值求和。\",a:\"對範圍中符合指定條件的值求和。\",p:[{name:\"範圍\",detail:\"要根據條件進行檢測的範圍。\"},{name:\"條件\",detail:\"要應用於範圍的模式或測試條件。\\n\\n如果範圍包含的是要檢測的文字,則條件必須為字串。條件可以包含萬用字元,包括用於匹配單個字元的？或用於匹配零個或連續多個字元的*。要匹配問號星號本身,請在該字元前面加上波浪號（~）首碼（即~？和~*）。字串條件必須用引號括起來。函數會檢查範圍中的每個儲存格與條件是否相等或匹配（如果使用了萬用字元）。\\n\\n如果範圍包含的是要檢測的數位,則條件可以是字串也可以是數位。如果給定的條件是一個數位,則檢查範圍中的每個儲存格是否等於條件。另外,條件也可能是包含數位的字串（也將對其進行相等檢測）,或者帶有以下首碼的數位:=（檢查是否相等）、>（檢查範圍儲存格的值是否大於條件值）或<（檢查範圍儲存格的值是否小於條件值）\"},{name:\"求和範圍\",detail:\"要求和的範圍（如果與範圍不同）。\"}]},TAN:{d:\"返回已知角度的正切值。\",a:\"返回已知角度的正切值。\",p:[{name:\"角度\",detail:\"要求其正切值的角度,以弧度表示。\"}]},TANH:{d:\"返回給定實數的雙曲正切值。\",a:\"返回給定實數的雙曲正切值。\",p:[{name:\"值\",detail:\"要計算其雙曲正切值的實數。\"}]},CEILING:{d:\"將數值向上取整為最接近的指定因數的倍數。\",a:\"將數值向上取整為最接近的指定因數的倍數。\",p:[{name:\"值\",detail:\"要向上舍入的數值。\"},{name:\"因數\",detail:\"要將值舍入到此數的整數倍。\"}]},ATAN:{d:\"返回數值的反正切值,以弧度表示。\",a:\"返回數值的反正切值\",p:[{name:\"值\",detail:\"要計算其反正切值的數值。\"}]},ASINH:{d:\"返回數值的反雙曲正弦值。\",a:\"返回數值的反雙曲正弦值。\",p:[{name:\"值\",detail:\"要計算其反雙曲正弦值的數值。\"}]},ABS:{d:\"返回數值的絕對值。\",a:\"返回數值的絕對值。\",p:[{name:\"value\",detail:\"要返回其絕對值的數。\"}]},ACOS:{d:\"返回數值的反余弦值,以弧度表示。\",a:\"返回數值的反余弦值\",p:[{name:\"值\",detail:\"要計算其反余弦值的數值。必須介於-1和1之間,包括兩端值。\"}]},ACOSH:{d:\"返回數值的反雙曲余弦值。\",a:\"返回數值的反雙曲余弦值。\",p:[{name:\"值\",detail:\"要計算其反雙曲余弦值的數值。必須大於等於1。\"}]},MULTINOMIAL:{d:\"返回參數和的階乘除以各參數階乘的乘積後得到的值。\",a:\"返回參數和的階乘除以各參數階乘的乘積後得到的值。\",p:[{name:\"值1\",detail:\"用於計算的第一項數值或範圍。\"},{name:\"值2\",detail:\"用於計算的其他數值或範圍。\"}]},ATANH:{d:\"返回數值的反雙曲正切值。\",a:\"返回數值的反雙曲正切值。\",p:[{name:\"值\",detail:\"要計算其反雙曲正切值的數值。必須介於-1和1之間（不包括-1和1）。\"}]},ATAN2:{d:\"以弧度為組織返回x軸與從原點（0,0）到指定座標點（`x`,`y`）之間連線的夾角。\",a:\"以弧度為組織返回x軸與從原點（0,0）到指定座標點（`x`,`y`）之間連線的夾角。\",p:[{name:\"x\",detail:\"要計算其與x軸夾角大小的線段的終點x座標。\"},{name:\"y\",detail:\"要計算其與x軸夾角大小的線段的終點y座標。\"}]},COUNTBLANK:{d:\"返回給定範圍內的空儲存格數。\",a:\"返回給定範圍內的空儲存格數。\",p:[{name:\"範圍\",detail:\"要統計空白儲存格數量的範圍。\"}]},COSH:{d:\"返回給定實數的雙曲余弦值。\",a:\"返回給定實數的雙曲余弦值。\",p:[{name:\"值\",detail:\"要計算其雙曲余弦值的實數值。\"}]},INT:{d:\"數值向下取整為小於或等於該數的最接近的整數。\",a:\"數值向下取整為小於或等於該數的最接近的整數。\",p:[{name:\"值\",detail:\"要向下取整為最接近的整數的數值。\"}]},ISEVEN:{d:\"檢查所提供的數值是否為偶數。\",a:\"檢查所提供的數值是否為偶數。\",p:[{name:\"值\",detail:\"要驗證其是否為偶數的數值。\\n\\n如果值為偶數或指向包含偶數的儲存格的引用,ISEVEN將返回TRUE,否則返回FALSE。\"}]},ISODD:{d:\"檢查所提供的數值是否為奇數。\",a:\"檢查所提供的數值是否為奇數。\",p:[{name:\"值\",detail:\"要驗證其是否為奇數的數值。\\n\\n如果值為奇數或指向包含奇數的儲存格,ISODD將返回TRUE,否則返回FALSE。\"}]},LCM:{d:\"返回一個或多個整數的最小公倍數。\",a:\"返回一個或多個整數的最小公倍數。\",p:[{name:\"值1\",detail:\"要在求最小公倍數數的計算中檢查其因數的第一項數值或範圍。\"},{name:\"值2\",detail:\"[可選] - 在求最小公倍數時要考慮其因數的其他數值或範圍。\"}]},LN:{d:\"返回數值以e（歐拉數）為底的對數。\",a:\"返回數值以e（歐拉數）為底的對數。\",p:[{name:\"值\",detail:\"要以e為底數計算其對數的值。\\n\\n值必須為正數。\"}]},LOG:{d:\"根據指定底數返回數位的對數。\",a:\"根據指定底數返回數位的對數。\",p:[{name:\"值\",detail:\"想要計算其對數的正實數。\"},{name:\"底數\",detail:\"[可選] - 對數的底數。\"}]},LOG10:{d:\"返回數值以10為底的對數。\",a:\"返回數值以10為底的對數。\",p:[{name:\"值\",detail:\"要計算其以10為底的對數的數值。\\n\\n值必須為正值。\"}]},MOD:{d:\"返回兩數相除的餘數,結果的符號與除數相同。\",a:\"返回兩數相除的餘數。\",p:[{name:\"被除數\",detail:\"要將其相除以得到餘數的數值。\"},{name:\"除數\",detail:\"用於除其他數的數值。\"}]},MROUND:{d:\"將數值取整為另一整數最接近的整數倍。\",a:\"將數值取整為另一整數最接近的整數倍。\",p:[{name:\"值\",detail:\"要取整為另一整數最接近的整數倍的數值。\"},{name:\"因數\",detail:\"值將取此因數的整數倍。\"}]},ODD:{d:\"將數值向上取整為最接近的奇整數。\",a:\"將數值向上取整為最接近的奇整數。\",p:[{name:\"值\",detail:\"要向上取整的數值,取整值為大於此值的最接近的奇數。\\n\\n如果值為負數,則將其取整為絕對值大於該值的相鄰負奇數\"}]},SUMSQ:{d:\"返回一組數值和/或儲存格的平方總和。\",a:\"返回一組數值和/或儲存格的平方總和。\",p:[{name:\"值1\",detail:\"要將其平方相加的第一個數值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 要將其平方與值1的平方相加的其他數值或範圍。\"}]},COMBIN:{d:\"給定集合中的對象總數和要選擇的對象數量,返回共有多少種不同選擇管道。\",a:\"給定集合中的對象總數和要選擇的對象數量\",p:[{name:\"n\",detail:\"要從中進行選擇的對象集合的大小。\"},{name:\"k\",detail:\"要選擇的對象數量。\"}]},SUM:{d:\"返回一組數值和/或儲存格的總和。\",a:\"返回一組數值和/或儲存格的總和。\",p:[{name:\"值1\",detail:\"要相加的第一個數值或範圍。\"},{name:\"值2\",detail:\"[可選] - 要相加的其他數值或範圍。\"}]},SUBTOTAL:{d:\"使用指定的匯總函數,返回一系列縱向儲存格的分類匯總。\",a:\"使用指定的匯總函數\",p:[{name:\"函數程式碼\",detail:\"用於計算分類匯總的函數。\\n\\n1代表AVERAGE\\n\\n2代表COUNT\\n\\n3代表COUNTA\\n\\n4代表MAX\\n\\n5代表MIN\\n\\n6代表PRODUCT\\n\\n7代表STDEV\\n\\n8代表STDEVP\\n\\n9代表SUM\\n\\n10代表VAR\\n\\n11代表VARP\\n\\n通過在這些2位程式碼前附加10（對於1位程式碼）或1（對於2位程式碼）,可以將隱藏值忽略。例如,102代表忽略隱藏儲存格的COUNT,而110則代表忽略隱藏值的VAR。\"},{name:\"範圍1\",detail:\"要計算分類匯總的第一個範圍。\"},{name:\"範圍2\",detail:\"[可選] - 要計算分類匯總的其他範圍。\"}]},ASIN:{d:\"返回數值的反正弦值,以弧度表示。\",a:\"返回數值的反正弦值\",p:[{name:\"值\",detail:\"要計算其反正弦值的數值。必須介於-1和1之間,包括兩端值。\"}]},COUNTIF:{d:\"返回範圍內滿足某個條件的儲存格的數量。\",a:\"返回範圍內滿足某個條件的儲存格的數量。\",p:[{name:\"範圍\",detail:\"要根據條件進行檢測的範圍。\"},{name:\"條件\",detail:\"要應用於範圍的模式或測試條件。\\n\\n如果範圍包含的是要檢測的文字,則條件必須為字串。條件可以包含萬用字元,包括用於匹配單個字元的？或用於匹配零個或連續多個字元的*。要匹配問號星號本身,請在該字元前面加上波浪號（~）首碼（即~？和~*）。字串條件必須用引號括起來。函數會檢查範圍中的每個儲存格與條件是否相等或匹配（如果使用了萬用字元）。\\n\\n如果範圍包含的是要檢測的數位,則條件可以是字串也可以是數位。如果給定的條件是一個數位,則檢查範圍中的每個儲存格是否等於條件。另外,條件也可能是包含數位的字串（也將對其進行相等檢測）,或者帶有以下首碼的數位:=、>、>=、<或<=,這些條件將分別用於檢查範圍中的儲存格是否等於、大於、大於等於、小於、小於等於條件值。\"}]},RADIANS:{d:\"將以度表示的角度值轉換為弧度。\",a:\"將以度表示的角度值轉換為弧度。\",p:[{name:\"角度\",detail:\"要從度轉換為弧度的角度。\"}]},RAND:{d:\"返回一個介於0和1之間（包括0但不包括1）的亂數。\",a:\"返回一個介於0和1之間（包括0但不包括1）的亂數。\",p:[]},COUNTUNIQUE:{d:\"計算一列指定值和範圍中不重複數值的個數。\",a:\"計算一列指定值和範圍中不重複數值的個數。\",p:[{name:\"值1\",detail:\"要檢查其是否唯一的第一個值或範圍。\"},{name:\"值2\",detail:\"[可選] - 要檢查是否唯一的其他值或範圍。\"}]},DEGREES:{d:\"將以弧度表示的角度值轉換為度。\",a:\"將以弧度表示的角度值轉換為度。\",p:[{name:\"角度\",detail:\"要從弧度轉換為度的角度。\"}]},ERFC:{d:\"返回數值的互補高斯誤差函數。\",a:\"返回數值的互補高斯誤差函數。\",p:[{name:\"z\",detail:\"要為其計算互補高斯誤差函數的數值。\"}]},EVEN:{d:\"將數值向上取整為最接近的偶整數。\",a:\"將數值向上取整為最接近的偶整數。\",p:[{name:\"值\",detail:\"要向上取整的數值,取整值為大於此值的最接近的偶數。\\n\\n如果值為負數,則將其取整為絕對值大於該值的相鄰負偶數。\"}]},EXP:{d:\"返回歐拉數e（~2.718）的指定次幂。\",a:\"返回歐拉數e（~2.718）的指定次幂。\",p:[{name:\"指數\",detail:\"指定e的自乘幂次值。\"}]},FACT:{d:\"返回數值的階乘。\",a:\"返回數值的階乘。\",p:[{name:\"值\",detail:\"要計算並返回其階乘的數位或對數位（所在儲存格）的引用。\"}]},FACTDOUBLE:{d:'返回數值的\"雙階乘\"。',a:'返回數值的\"雙階乘\"。',p:[{name:\"值\",detail:\"要計算並返回其雙階乘的數位或對數位（所在儲存格）的引用。\"}]},PI:{d:\"返回帶有14位小數的PI值。\",a:\"返回帶有14位小數的PI值。\",p:[]},FLOOR:{d:\"將數值向下取整為指定因數的最接近的整數倍。\",a:\"將數值向下取整為指定因數的最接近的整數倍。\",p:[{name:\"值\",detail:\"要向下舍入為因數的最接近整數倍的數值。\"},{name:\"因數\",detail:\"要將值舍入到此數的整數倍。\\n\\n因數不得為0。\"}]},GCD:{d:\"返回一個或多個整數的最大公約數。\",a:\"返回一個或多個整數的最大公約數。\",p:[{name:\"值1\",detail:\"要在查找最大公約數的計算中檢查其因數的第一項數值或範圍。\"},{name:\"值2\",detail:\"[可選] - 在求最大公約數時要考慮其因數的其他數值或範圍。\"}]},RANDBETWEEN:{d:\"返回介於兩個整數之間（包括這兩個整數）的亂數。\",a:\"返回介於兩個整數之間（包括這兩個整數）的亂數。\",p:[{name:\"下界\",detail:\"隨機值範圍的下界。\"},{name:\"上界\",detail:\"隨機值範圍的上界。\"}]},ROUND:{d:\"將數位四捨五入到指定的位數。\",a:\"將數位四捨五入到指定的位數。\",p:[{name:\"值\",detail:\"要四捨五入的數位。\"},{name:\"位數\",detail:\"要進行四捨五入運算的位數。\\n\\n位數可以取負值,在這種情況下會將值的小數點左側部分舍入到指定的位數。\"}]},ROUNDDOWN:{d:\"朝著零的方向將數位進行向下舍入。\",a:\"朝著零的方向將數位進行向下舍入。\",p:[{name:\"值\",detail:\"需要向下舍入的任意實數。\"},{name:\"位數\",detail:\"要通過舍入達到的小數位數。\\n\\n位數可以取負值,在這種情況下會將值的小數點左側部分舍入到指定的位數。\"}]},ROUNDUP:{d:\"朝著遠離0（零）的方向將數位進行向上舍入。\",a:\"朝著遠離0（零）的方向將數位進行向上舍入。\",p:[{name:\"值\",detail:\"要將其舍入為位數位數位的值,始終向上舍入。\"},{name:\"位數\",detail:\"要通過舍入達到的小數位數。\\n\\n位數可以取負值,在這種情況下會將值的小數點左側部分舍入到指定的位數。\"}]},SERIESSUM:{d:\"給定參數x、n、m和a,返回幂級數的和a1xn + a2x（n+m）+…+ aix（n+（i-1）m）,其中i為範圍a中的項數。\",a:\"給定參數x、n、m和a\",p:[{name:\"x\",detail:\"幂級數的輸入值。隨相應的近似類型而變,有可能為角度、指數或其他一些值。\"},{name:\"n\",detail:\"在幂級數中x的初始自乘幂次。\"},{name:\"m\",detail:\"x的幂次中的附加增量。\"},{name:\"a\",detail:\"包含幂級數係數的數組或範圍。\"}]},SIGN:{d:\"給定輸入數值,如果為負返回-1；如果為正返回1；如果為零則返回0。\",a:\"給定輸入數值\",p:[{name:\"值\",detail:\"要返回其符號的數值。\"}]},SIN:{d:\"給定角度（以弧度表示）,返回其正弦值。\",a:\"給定角度（以弧度表示）\",p:[{name:\"角度\",detail:\"要返回其正弦值的角度,以弧度表示。\"}]},SINH:{d:\"返回給定實數的雙曲正弦值。\",a:\"返回給定實數的雙曲正弦值。\",p:[{name:\"值\",detail:\"要計算其雙曲正弦值的實數值。\"}]},SQRT:{d:\"返回一個正數的正平方根。\",a:\"返回一個正數的正平方根。\",p:[{name:\"值\",detail:\"要計算其正平方根的數值。\\n\\n值必須為正數；如果為負,SQRT將返回#NUM！錯誤。\"}]},SQRTPI:{d:\"返回PI與給定正數乘積的正平方根。\",a:\"返回PI與給定正數乘積的正平方根。\",p:[{name:\"值\",detail:\"要將其與PI相乘並返回該乘積的平方根的數值\\n\\n值必須為正數；如果為負數,SQRTPI將返回#NUM！錯誤。\"}]},GAMMALN:{d:\"返回指定伽瑪函數的以e（歐拉數）為底的對數。\",a:\"返回指定伽瑪函數的以e（歐拉數）為底的對數。\",p:[{name:\"值\",detail:\"伽瑪函數的輸入值。返回的將是伽瑪（值）的自然對數。\\n\\n值必須為正數。\"}]},COS:{d:\"返回給定角度的余弦值（角度以弧度表示）。\",a:\"返回給定角度的余弦值（角度以弧度表示）。\",p:[{name:\"角度\",detail:\"要取其余弦值的角度,以弧度表示。\"}]},TRUNC:{d:\"除指定有效位之外的部分,取數據的指定有效位。\",a:\"除指定有效位之外的部分\",p:[{name:\"值\",detail:\"要截取的數據。\"},{name:\"位數\",detail:'[可選 - 預設值為0] - 小數點右側要保留的有效位數。\\n\\n如果位數大於值中的有效位數,則將\"值\"原樣返回。\\n\\n位數可以取負值,在這種情況下會將小數點左側指定位數的值更改為零。小數點右側的所有位數都會被捨棄。如果值的所有位都被更改為零,則TRUNC會返回0。'}]},QUOTIENT:{d:\"返回以一個數除以另一個數所得的結果,不包含餘數。\",a:\"返回以一個數除以另一個數所得的結果\",p:[{name:\"被除數\",detail:\"要被除的數值。\"},{name:\"除數\",detail:\"用於除其他數的數值。\\n\\n除數不得為0\"}]},POWER:{d:\"返回數值的指定次幂。\",a:\"返回數值的指定次幂。\",p:[{name:\"底數\",detail:\"要計算其指數次幂的數值。\\n\\n如果底數為負,則指數必須為整數。\"},{name:\"指數\",detail:\"指定底數的自乘幂次值。\"}]},SUMIFS:{d:\"根據多項條件返回範圍之和。\",a:\"根據多項條件返回範圍之和。\",p:[{name:\"求和範圍\",detail:\"要對其求和的範圍。\"},{name:\"條件範圍1\",detail:\"要在哪個範圍內檢查條件1。\"},{name:\"條件1\",detail:\"要應用於條件範圍1的模式或測試條件。\"},{name:\"條件範圍2,條件2…\",detail:\"[ 可選 ] - 要檢查的其他範圍和條件。\"}]},COUNTIFS:{d:\"根據多項條件返回範圍中的儲存格數量。\",a:\"根據多項條件返回範圍中的儲存格數量。\",p:[{name:\"條件範圍1\",detail:\"要在哪個範圍內檢查條件1。\"},{name:\"條件1\",detail:\"要應用於條件範圍1的模式或測試條件。\"},{name:\"條件範圍2,條件2…\",detail:\"[ 可選 ] - 要檢查的其他範圍和條件,可重複。\"}]},PRODUCT:{d:\"返回將一組數相乘所得的結果。\",a:\"返回將一組數相乘所得的結果。\",p:[{name:\"乘數1\",detail:\"用於計算乘積的第一個數值或範圍。\"},{name:\"乘數2 ... 乘數30\",detail:\"[可選] - 要相乘的其他數值\"}]},HARMEAN:{d:\"計算數據集的調和平均值。\",a:\"計算數據集的調和平均值。\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他數值或範圍。\"}]},HYPGEOMDIST:{d:\"返回超幾何分佈。如果已知樣本量、總體成功次數和總體大小,則 HYPGEOM.DIST 返回樣本取得已知成功次數的概率。\",a:\"返回超幾何分佈。\",p:[{name:\"Sample_s\",detail:\"樣本中成功的次數。\"},{name:\"Number_sample\",detail:\"樣本量。\"},{name:\"Population_s\",detail:\"總體中成功的次數。\"},{name:\"Number_pop\",detail:\"總體大小。\"},{name:\"cumulative\",detail:\"决定函數形式的邏輯值。\\n\\n如果cumulative為TRUE（）,則HYPGEOM.DIST返回累積分佈函數；\\n\\n如果為FALSE（）,則返回概率密度函數。\"}]},INTERCEPT:{d:\"計算數據集的線性回歸方程直線與 Y 軸的相交點（x=0）的y值。\",a:\"計算數據集的線性回歸方程直線與 Y 軸的相交點（x=0）的y值。\",p:[{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"},{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"}]},KURT:{d:\"計算數據集的峭度,該名額訓示數據集（分佈）的形態,尤其是該形態的陡峭程度。\",a:\"計算數據集的峭度\",p:[{name:\"值1\",detail:\"數據集中的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他值或範圍。\"}]},LARGE:{d:\"返回數據集中第 n 個最大元素,n 由用戶指定。\",a:\"返回數據集中第 n 個最大元素\",p:[{name:\"數據\",detail:\"包含相關數據集的數組或範圍。\"},{name:\"n\",detail:\"要返回的元素的排行位置（從大到小順序）。\\n\\n例如,將n設為4將使LARGE返回數據中排名第4的最大元素。\"}]},STDEVA:{d:\"基於樣本計算標準差,將文字取值為0。\",a:\"基於樣本計算標準差\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2,…\",detail:\"[可選] - 樣本中包含的其他值或範圍。\"}]},STDEVP:{d:\"基於樣本總體計算標準差。\",a:\"基於樣本總體計算標準差。\",p:[{name:\"值1\",detail:\"數據集中的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他值或範圍。\"}]},GEOMEAN:{d:\"計算數據集的幾何平均值。\",a:\"計算數據集的幾何平均值。\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他數值或範圍。\"}]},RANK_EQ:{d:\"返回指定值在數據集中的排名。如果相同的值在數據集中存在多項,則返回其中的最高排名。\",a:\"返回指定值在數據集中的排名。如果相同的值在數據集中存在多項,則返回其中的最高排名。\",p:[{name:\"number\",detail:\"要確定其排名的值。\"},{name:\"ref\",detail:\"包含相關數據集的數組或範圍。\"},{name:\"order\",detail:'[可選-默認為按降序（FALSE（））] - 要按昇冪還是按降序考慮\"data\"中的值。'}]},RANK_AVG:{d:\"返回指定值在數據集中的排名。如果相同的值在數據集中存在多項,則返回這些項排名的平均值。\",a:\"返回指定值在數據集中的排名。如果相同的值在數據集中存在多項,則返回這些項排名的平均值。\",p:[{name:\"number\",detail:\"要確定其排名的值。\"},{name:\"ref\",detail:\"包含相關數據集的數組或範圍。\"},{name:\"order\",detail:'[可選-默認為按降序（FALSE（））] - 要按昇冪還是按降序考慮\"data\"中的值。'}]},PERCENTRANK_EXC:{d:\"以百分數形式返回指定值在給定數據集中的百分比排名（介於0和1之間,不包括兩端值）。\",a:\"以百分數形式返回指定值在給定數據集中的百分比排名（介於0和1之間,不包括兩端值）。\",p:[{name:\"data\",detail:\"包含相關數據集的數組或範圍。\"},{name:\"x\",detail:\"要確定其百分比排位的值。\"},{name:\"significance\",detail:\"[可選-預設值為3] - 要在計算中使用的有效位數。\"}]},PERCENTRANK_INC:{d:\"以百分比形式返回指定值在給定數據集中的百分比排名（介於0和1之間,包括兩端值）。\",a:\"以百分比形式返回指定值在給定數據集中的百分比排名（介於0和1之間,包括兩端值）。\",p:[{name:\"data\",detail:\"包含相關數據集的數組或範圍。\"},{name:\"x\",detail:\"要確定其百分比排位的值。\"},{name:\"significance\",detail:\"[可選-預設值為3] - 要在計算中使用的有效位數。\"}]},FORECAST:{d:\"基於數據集的線性回歸,計算指定 x 的預期 y 值。\",a:\"基於數據集的線性回歸\",p:[{name:\"x\",detail:\"x軸上用於預測的值。\"},{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"},{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"}]},FISHERINV:{d:\"返回指定數值的 Fisher 逆變換。\",a:\"返回指定數值的 Fisher 逆變換。\",p:[{name:\"y\",detail:\"要計算其Fisher逆變換的數值。\"}]},FISHER:{d:\"返回指定數值的 Fisher 變換。\",a:\"返回指定數值的 Fisher 變換。\",p:[{name:\"x\",detail:\"要計算其Fisher變換的數值。\"}]},MODE_SNGL:{d:\"返回數據集中出現次數最多的值。\",a:\"返回數據集中出現次數最多的值。\",p:[{name:\"值1\",detail:\"計算模式時要檢查的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 在計算模式時要考慮的其他數值或範圍。\"}]},WEIBULL_DIST:{d:\"給定形狀和尺度,返回韋伯分佈函數（或韋伯累積分佈函數）的值。\",a:\"給定形狀和尺度\",p:[{name:\"x\",detail:\"WEIBULL 分佈函數的輸入值。\"},{name:\"alpha\",detail:\"Weibull 分佈函數的形狀參數。\\n\\n alpha值必須大於0。\"},{name:\"beta\",detail:\"Weibull 分佈函數的尺度參數。\\n\\n beta值必須大於0。\"},{name:\"cumulative\",detail:\"TRUE（）表示使用累積分佈函數,FALSE（）則表示使用概率密度函數。\"}]},COUNT:{d:\"返回數據集中數值的個數。\",a:\"返回數據集中數值的個數。\",p:[{name:\"值1\",detail:\"計數時要檢查的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 在計數時要檢查的其他值或範圍。\"}]},COUNTA:{d:\"返回數據集中值的數量。\",a:\"返回數據集中值的數量。\",p:[{name:\"值1\",detail:\"計數時要檢查的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 在計數時要檢查的其他值或範圍。\"}]},AVEDEV:{d:\"計算數據與數據集平均值之間的偏差大小的平均值。\",a:\"計算數據與數據集平均值之間的偏差大小的平均值。\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 樣本中包含的其他值或範圍。\"}]},AVERAGE:{d:\"返回數據集的算術平均值,對文字忽略不計。\",a:\"返回數據集的算術平均值\",p:[{name:\"值1\",detail:\"計算平均值時用到的第一個數值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 在計算平均值時要考慮的其他數值或範圍。\"}]},AVERAGEA:{d:\"返回數據集的算術平均值。\",a:\"返回數據集的算術平均值。\",p:[{name:\"值1\",detail:\"計算平均值時用到的第一個數值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 在計算平均值時要考慮的其他數值或範圍。\"}]},BINOM_DIST:{d:\"返回一元二項式分佈的概率。\",a:\"返回一元二項式分佈的概率。\",p:[{name:\"number_s\",detail:\"試驗的成功次數。\"},{name:\"trials\",detail:\"獨立檢驗的次數。\"},{name:\"probability_s\",detail:\"任一給定檢驗的成功概率。\"},{name:\"cumulative\",detail:\"是否使用二項式累積分佈。\"}]},BINOM_INV:{d:\"計算累積二項式分佈大於或等於指定條件的最小值。\",a:\"計算累積二項式分佈大於或等於指定條件的最小值。\",p:[{name:\"trials\",detail:\"貝努利試驗次數。\"},{name:\"probability_s\",detail:\"任一次給定檢驗的成功概率。\"},{name:\"alpha\",detail:\"期望的臨界概率。\"}]},CONFIDENCE_NORM:{d:\"計算常态分配的置信區間的一半寬度。\",a:\"計算常态分配的置信區間的一半寬度。\",p:[{name:\"alpha\",detail:\"用來計算置信水准的顯著性水准。\\n\\n置信水准等於100*（1 - alpha）%,亦即,如果 alpha 為0.05,則置信水准為 95%。\"},{name:\"standard_dev\",detail:\"數據區域的總體標準差。\"},{name:\"size\",detail:\"樣本總量的大小。\"}]},CORREL:{d:\"計算給定數據集的皮爾遜積矩相關係數 r。\",a:\"計算給定數據集的皮爾遜積矩相關係數 r。\",p:[{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"},{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"}]},COVARIANCE_P:{d:\"計算數據集的總體協方差。\",a:\"計算數據集的總體協方差。\",p:[{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"},{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"}]},COVARIANCE_S:{d:\"計算數據集的樣本協方差。\",a:\"計算數據集的樣本協方差。\",p:[{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"},{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"}]},DEVSQ:{d:\"基於樣本計算其偏差的平方和。\",a:\"基於樣本計算其偏差的平方和。\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 樣本中包含的其他值或範圍。\"}]},EXPON_DIST:{d:\"返回帶有指定 Lambda 和指定值的指數分佈函數的值。\",a:\"返回帶有指定 Lambda 和指定值的指數分佈函數的值。\",p:[{name:\"x\",detail:\"指數分佈函數的輸入值。\"},{name:\"lambda\",detail:\"用於指定指數分佈函數的 lambda 值。\"},{name:\"cumulative\",detail:\"是否使用指數累積分佈。\"}]},AVERAGEIF:{d:\"根據條件返回範圍的平均值。\",a:\"根據條件返回範圍的平均值。\",p:[{name:\"criteria_range\",detail:\"要對其檢查 criterion 的範圍。\"},{name:\"criterion\",detail:'要應用於criteria_range的模式或測試條件。\\n\\n等於:\"文字\" 或 1 或 \"=文字\" 或 \"=1\"\\n\\n大於:\">1\"\\n\\n大於等於:\">=1\"\\n\\n小於:\"<1\"\\n\\n小於等於:\"<=1\"\\n\\n不等於:\"<>1\"或\"<>文字\"'},{name:\"average_range\",detail:\"[可選] - 要計算平均值的範圍。如果未提供此參數,則改用criteria_range來計算平均值。\"}]},AVERAGEIFS:{d:\"根據多項條件返回範圍的平均值。\",a:\"根據多項條件返回範圍的平均值。\",p:[{name:\"average_range\",detail:\"要計算平均值的範圍。\"},{name:\"criteria_range1\",detail:\"要對其檢查 criterion1 的範圍。\"},{name:\"criterion1\",detail:\"要應用於criteria_range1的模式或測試條件。\"},{name:\"criteria_range2, criterion2, ...\",detail:\"[可選] - 要檢查的其他範圍和條件。\"}]},PERMUT:{d:\"返回可從數位對象中選擇的給定數目對象的排列數。\",a:\"返回可從數位對象中選擇的給定數目對象的排列數。\",p:[{name:\"number\",detail:\"表示對象個數的整數。\"},{name:\"number_chosen\",detail:\"表示每個排列中對象個數的整數。\"}]},TRIMMEAN:{d:\"在排除數據集高低兩端的部分數據之後計算所得的平均值。\",a:\"在排除數據集高低兩端的部分數據之後計算所得的平均值。\",p:[{name:\"數據\",detail:\"包含相關數據集的數組或範圍。\"},{name:\"排除比例\",detail:\"要從數據集的極值部分排除的數據占數據集的比例。\\n\\n排除比例必須大於等於0且小於1。\"}]},PERCENTILE_EXC:{d:\"返回數組的 K 百分點值,K 介於0到1之間,不含0與1。\",a:\"返回數組的 K 百分點值,K 介於0到1之間,不含0與1。\",p:[{name:\"array\",detail:\"定義相對位置的數組或數據區域。\"},{name:\"k\",detail:\"0 到 1 之間的百分點值,不包含 0 和 1。\"}]},PERCENTILE_INC:{d:\"返回數組的 K 百分點值,K 介於 0 到 1 之間,包含 0 與 1。\",a:\"返回數組的 K 百分點值,K 介於 0 到 1 之間,包含 0 與 1。\",p:[{name:\"array\",detail:\"定義相對位置的數組或數據區域。\"},{name:\"k\",detail:\"0 到 1 之間的百分點值,包含 0 和 1。\"}]},PEARSON:{d:\"回皮爾生（Pearson）乘積矩相關係數 r。\",a:\"回皮爾生（Pearson）乘積矩相關係數 r。\",p:[{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"},{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"}]},NORM_S_INV:{d:\"返回標準正態累積分佈函數的反函數值。該分佈的平均值為0,標準差為1。\",a:\"返回標準正態累積分佈函數的反函數值。該分佈的平均值為0,標準差為1。\",p:[{name:\"probability\",detail:\"對應於常态分配的概率。\"}]},NORM_S_DIST:{d:\"返回標準常态分配函數（該分佈的平均值為0,標準差為1）。\",a:\"返回標準常态分配函數（該分佈的平均值為0,標準差為1）。\",p:[{name:\"z\",detail:\"需要計算其分佈的數值。\"},{name:\"cumulative\",detail:\"决定函數形式的邏輯值。\\n\\n如果為TRUE（）,則返回累積分佈函數；\\n\\n如果為FALSE（）,則返回概率密度函數。\"}]},NORM_INV:{d:\"返回指定平均值和標準差的正態累積分佈函數的反函數值。\",a:\"返回指定平均值和標準差的正態累積分佈函數的反函數值。\",p:[{name:\"probability\",detail:\"對應於常态分配的概率。\"},{name:\"mean\",detail:\"分佈的算術平均值。\"},{name:\"standard_dev\",detail:\"分佈的標準差。\"}]},NORM_DIST:{d:\"返回指定平均值和標準差的常态分配函數。\",a:\"返回指定平均值和標準差的常态分配函數。\",p:[{name:\"x\",detail:\"需要計算其分佈的數值。\"},{name:\"mean\",detail:\"分佈的算術平均值。\"},{name:\"standard_dev\",detail:\"分佈的標準差。\"},{name:\"cumulative\",detail:\"决定函數形式的邏輯值。\\n\\n如果為TRUE（）,則返回累積分佈函數；\\n\\n如果為FALSE（）,則返回概率密度函數。\"}]},NEGBINOM_DIST:{d:\"返回負二項式分佈。\",a:\"返回負二項式分佈。\",p:[{name:\"number_f\",detail:\"要類比的失敗次數。\"},{name:\"number_s\",detail:\"要類比的成功次數。\"},{name:\"probability_s\",detail:\"任一次給定檢驗的成功概率。\"},{name:\"cumulative\",detail:\"决定函數形式的邏輯值。\\n\\n如果為TRUE（）,則返回累積分佈函數；\\n\\n如果為FALSE（）,則返回概率密度函數。\"}]},MINA:{d:\"返回數據集中的最小數值。\",a:\"返回數據集中的最小數值。\",p:[{name:\"值1\",detail:\"計算最小值時所用的第一個值或範圍。\"},{name:\"值2\",detail:\"[可選] - 在計算最小值時要考慮的其他數值或範圍。\"}]},MIN:{d:\"返回數值數據集中的最小值。\",a:\"返回數值數據集中的最小值。\",p:[{name:\"值1\",detail:\"計算最小值時所用的第一個值或範圍。\"},{name:\"值2\",detail:\"[可選] - 在計算最小值時要考慮的其他數值或範圍。\"}]},MEDIAN:{d:\"返回數值數據集中的中值。\",a:\"返回數值數據集中的中值。\",p:[{name:\"值1\",detail:\"計算中值時所用的第一個數值或範圍。\"},{name:\"值2\",detail:\"[可選] - 在計算中值時要考慮的其他數值或範圍。\"}]},MAXA:{d:\"返回數據集中的最大數值。\",a:\"返回數據集中的最大數值。\",p:[{name:\"值1\",detail:\"計算最大值時所用的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 在計算最大值時要考慮的其他數值或範圍。\"}]},MAX:{d:\"返回數值數據集中的最大值。\",a:\"返回數值數據集中的最大值。\",p:[{name:\"值1\",detail:\"計算最大值時所用的第一個值或範圍。\"},{name:\"值2\",detail:\"[可選] - 在計算最大值時要考慮的其他數值或範圍。\"}]},LOGNORM_INV:{d:\"返回 x 的對數累積分佈函數的反函數值。\",a:\"返回 x 的對數累積分佈函數的反函數值。\",p:[{name:\"probability\",detail:\"與對數分佈相關的概率,介於0與1之間（不含0與1）。\"},{name:\"mean\",detail:\"ln(x) 的平均值。\"},{name:\"standard_dev\",detail:\"ln(x) 的標準差,正數。\"}]},LOGNORM_DIST:{d:\"返回 x 的對數分佈函數。\",a:\"返回 x 的對數分佈函數。\",p:[{name:\"x\",detail:\"用來計算函數的值。\"},{name:\"mean\",detail:\"ln(x) 的平均值。\"},{name:\"standard_dev\",detail:\"ln(x) 的標準差,正數。\"},{name:\"cumulative\",detail:\"决定函數形式的邏輯值。\\n\\n如果為TRUE（）,則返回累積分佈函數；\\n\\n如果為FALSE（）,則返回概率密度函數。\"}]},Z_TEST:{d:\"返回 z 檢驗的單尾 P 值。\",a:\"返回 z 檢驗的單尾 P 值。\",p:[{name:\"array\",detail:\"用來檢驗 x 的數組或數據區域。\"},{name:\"x\",detail:\"要測試的值。\"},{name:\"sigma\",detail:\"[可選] - 總體（已知）標準差。如果省略,則使用樣本標準差。\"}]},PROB:{d:\"返回區域中的數值落在指定區間內的概率。\",a:\"返回區域中的數值落在指定區間內的概率。\",p:[{name:\"x_range\",detail:\"具有各自相應概率值的 x 數值區域。\"},{name:\"prob_range\",detail:\"與 x_range 中的值相關聯的一組概率值。\"},{name:\"lower_limit\",detail:\"要計算其概率的數值下界。\"},{name:\"upper_limit\",detail:\"[可選 - 預設值為下界] - 要計算其概率的可選數值上界。\\n\\n如果省略上界,PROB則計算隨機選取相應值的次數恰好等於下界的概率。\"}]},QUARTILE_EXC:{d:\"基於 0 到 1 之間（不包括 0 和 1）的百分點值返回數據集的四分位數。\",a:\"基於 0 到 1 之間（不包括 0 和 1）的百分點值返回數據集的四分位數。\",p:[{name:\"array\",detail:\"要求得四分位數值的數組或數字型儲存格區域。\"},{name:\"quart\",detail:\"要返回第幾個四分位值。\\n\\n1返回數據中最靠近第一個四分位值的值（25%標記）。\\n\\n2返回數據中最接近中值的值（50%標記）。\\n\\n3返回數據中最接近第三個四分位值的值（75%標記）。\"}]},QUARTILE_INC:{d:\"根據 0 到 1 之間的百分點值（包含 0 和 1）返回數據集的四分位數。\",a:\"根據 0 到 1 之間的百分點值（包含 0 和 1）返回數據集的四分位數。\",p:[{name:\"array\",detail:\"要求得四分位數值的數組或數字型儲存格區域。\"},{name:\"quart\",detail:\"要返回第幾個四分位值。\\n\\n0返回數據中的最小值（0%標記）。\\n\\n1返回數據中最靠近第一個四分位值的值（25%標記）。\\n\\n2返回數據中最接近中值的值（50%標記）。\\n\\n3返回數據中最接近第三個四分位值的值（75%標記）。\\n\\n4返回數據中的最大值（100%標記）。\"}]},POISSON_DIST:{d:\"返回泊松分布。\",a:\"返回泊松分布。\",p:[{name:\"x\",detail:\"事件數。\"},{name:\"mean\",detail:\"期望值。非負數\"},{name:\"cumulative\",detail:\"一 邏輯值,確定所返回的概率分佈的形式。\\n\\n如果為TRUE（）,則返回發生的隨機事件數在零（含零）和x（含x）之間的累積泊松概率；\\n\\n如果為FALSE（）,則返回發生的事件數正好是x的泊松概率密度函數。\"}]},RSQ:{d:\"返回皮爾生(Pearson)乘積矩相關係數r的平方。\",a:\"返回皮爾生(Pearson)乘積矩相關係數r的平方。\",p:[{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"},{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"}]},T_DIST:{d:\"返回學生的左尾 t 分佈。\",a:\"返回學生的左尾 t 分佈。\",p:[{name:\"x\",detail:\"T-分佈函數的輸入。\"},{name:\"degrees_freedom\",detail:\"自由度數值。\"},{name:\"tails\",detail:\"决定函數形式的邏輯值。\\n\\n如果cumulative為TRUE（）,則HYPGEOM.DIST返回累積分佈函數；\\n\\n如果為FALSE（）,則返回概率密度函數。\"}]},T_DIST_2T:{d:\"返回學生的雙尾 t 分佈。\",a:\"返回學生的雙尾 t 分佈。\",p:[{name:\"x\",detail:\"T-分佈函數的輸入。\"},{name:\"degrees_freedom\",detail:\"自由度數值。\"}]},T_DIST_RT:{d:\"返回學生的右尾 t 分佈。\",a:\"返回學生的右尾 t 分佈。\",p:[{name:\"x\",detail:\"T-分佈函數的輸入。\"},{name:\"degrees_freedom\",detail:\"自由度數值。\"}]},T_INV:{d:\"返回學生的 t 分佈的左尾反函數。\",a:\"返回學生的 t 分佈的左尾反函數。\",p:[{name:\"probability\",detail:\"與學生的 t 分佈相關的概率。\\n\\n必須大於 0 且小於 1。\"},{name:\"deg_freedom\",detail:\"自由度數值。\\n\\n如果所提供的參數不是整數,將截取其整數部分。\\n\\n必須大於等於1。\"}]},T_INV_2T:{d:\"返回學生 t 分佈的雙尾反函數。\",a:\"返回學生 t 分佈的雙尾反函數。\",p:[{name:\"probability\",detail:\"與學生的t分佈相關的概率。\\n\\n必須大於 0 且小於 1。\"},{name:\"deg_freedom\",detail:\"自由度數值。\\n\\n如果所提供的參數不是整數,將截取其整數部分。\\n\\n必須大於等於1。\"}]},T_TEST:{d:\"返回與t-檢驗相關的概率。用於判斷兩個樣本是否可能是出自平均值相同的兩個樣本總體。\",a:\"返回與t-檢驗相關的概率。用於判斷兩個樣本是否可能是出自平均值相同的兩個樣本總體。\",p:[{name:\"array1\",detail:\"將用於t檢驗的第一個數據樣本或第一組儲存格。\"},{name:\"array2\",detail:\"將用於t檢驗的第二個數據樣本或第二組儲存格。\"},{name:\"tails\",detail:\"指定分佈的尾數。\\n\\n如果為 1:使用單尾分佈。\\n\\n如果為 2:使用雙尾分佈。\"},{name:\"type\",detail:\"指定t檢驗的類型。\\n\\n如果為 1:執行配對檢驗。\\n\\n如果為 2:執行雙樣本等方差（同方差）檢驗。\\n\\n如果為 3:執行雙樣本不等方差（异方差）檢驗。\"}]},F_DIST:{d:\"給定輸入值 x,計算兩個數據集的左尾 F 概率分佈（差异程度）。此分佈也稱為 Fisher-Snedecor 分佈或Snedecor F 分佈。\",a:\"給定輸入值 x\",p:[{name:\"x\",detail:\"用來計算函數的值。\"},{name:\"degrees_freedom1\",detail:\"分子自由度。\"},{name:\"degrees_freedom2\",detail:\"分母自由度。\"},{name:\"cumulative\",detail:\"用於確定函數形式的邏輯值。預設值為 FALSE。\\n\\n如果為 TRUE（）:F.DIST將返回累積分佈函數值。\\n\\n如果為FALSE（）:F.DIST將返回概率密度函數值。\"}]},F_DIST_RT:{d:\"給定輸入x,計算兩個數據集的右尾F概率分佈（差异程度）。此分佈也稱為Fisher-Snedecor分佈或Snedecor F分佈。\",a:\"給定輸入 x\",p:[{name:\"x\",detail:\"用來計算函數的值。\"},{name:\"degrees_freedom1\",detail:\"分子自由度。\"},{name:\"degrees_freedom2\",detail:\"分母自由度。\"}]},VAR_P:{d:\"基於樣本總體計算方差。\",a:\"基於樣本總體計算方差。\",p:[{name:\"值1\",detail:\"數據集中的第一個值或範圍。\"},{name:\"值2, …\",detail:\"[可選] - 數據集中包含的其他值或範圍。\"}]},VAR_S:{d:\"基於樣本計算方差。\",a:\"基於樣本計算方差。\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2, …\",detail:\"[可選] - 樣本中包含的其他值或範圍。\"}]},VARA:{d:\"基于样本计算方差,将文本取值为0。\",a:\"基于样本计算方差\",p:[{name:\"value1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"value2, ...\",detail:\"[可選] - 樣本中包含的其他值或範圍。\"}]},VARPA:{d:\"基於樣本總體計算方差,將文字取值為0。\",a:\"基於樣本總體計算方差\",p:[{name:\"值1\",detail:\"樣本中的第一項值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他數值或範圍。\"}]},STEYX:{d:\"返回通過線性回歸法預測每個 x 的 y 值時所產生的標準誤差。\",a:\"返回通過線性回歸法預測每個 x 的 y 值時所產生的標準誤差。\",p:[{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"},{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"}]},STANDARDIZE:{d:\"給定分佈的平均值和標準差,計算一個隨機變數正態化的相應值。\",a:\"給定分佈的平均值和標準差,計算一個隨機變數正態化的相應值。\",p:[{name:\"x\",detail:\"要正態化的隨機變數值。\"},{name:\"mean\",detail:\"分佈的平均值。\"},{name:\"standard_dev\",detail:\"分佈的標準差。\"}]},SMALL:{d:\"返回數據集中的第k個最小值。\",a:\"返回數據集中的第k個最小值。\",p:[{name:\"array\",detail:\"需要找到第k個最小值的數組或數值數據區域。\"},{name:\"k\",detail:\"要返回的數據在數組或數據區域裏的位置（從小到大）。\"}]},SLOPE:{d:\"計算通過數據集的線性回歸得到的直線的斜率。\",a:\"計算通過數據集的線性回歸得到的直線的斜率。\",p:[{name:\"數據_y\",detail:\"代表因變數數據數組或矩陣的範圍。\"},{name:\"數據_x\",detail:\"代表引數數據數組或矩陣的範圍。\"}]},SKEW:{d:\"返回分佈的偏斜度。偏斜度表明分佈相對於平均值的不對稱程度。正偏斜度表明分佈的不對稱尾部趨向於更多正值。負偏斜度表明分佈的不對稱尾部趨向於更多負值。\",a:\"返回分佈的偏斜度。\",p:[{name:\"值1\",detail:\"數據集中的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他值或範圍。\"}]},SKEW_P:{d:\"返回基於樣本總體的分佈不對稱度:表明分佈相對於平均值的不對稱程度。\",a:\"返回基於樣本總體的分佈不對稱度:表明分佈相對於平均值的不對稱程度。\",p:[{name:\"值1\",detail:\"數據集中的第一個值或範圍。\"},{name:\"值2, ...\",detail:\"[可選] - 數據集中包含的其他值或範圍。\"}]},VLOOKUP:{d:\"縱向查找。在範圍的第一列中自上而下蒐索某個鍵值,並返回所找到的行中指定儲存格的值。\",a:\"縱向查找。在範圍的第一列中自上而下蒐索某個鍵值\",p:[{name:\"蒐索鍵值\",detail:'要蒐索的值,如 42、\"Cats\" 或 I24。'},{name:\"範圍\",detail:\"要進行蒐索的範圍。VLOOKUP 將在該範圍的第一列中蒐索蒐索鍵值中指定的鍵值。\"},{name:\"索引\",detail:\"要返回的值的列索引,範圍中的第一列編號為1。\\n\\n如果索引不是介於1和範圍中的列數之間,將返回#VALUE！。\"},{name:\"已排序\",detail:\"[預設值為TRUE()] -訓示要蒐索的列（指定範圍的第一列）是否已排序。大多數情况下,建議設為FALSE（）。\\n\\n建議將已排序設為FALSE。如果設為FALSE,將返回完全匹配項。如果存在多個匹配值,將返回找到的第一個值對應的儲存格的內容,如果找不到匹配值,則返回#N/A。\\n\\n如果將已排序設為TRUE或省略,將返回（小於或等於蒐索鍵值的）最接近的匹配項。如果蒐索的列中所有的值均大於蒐索鍵值,則返回#N/A。\"}]},HLOOKUP:{d:\"橫向查找。在範圍的第一行中蒐索某個鍵值,並返回所找到的列中指定儲存格的值。\",a:\"橫向查找。在範圍的第一行中蒐索某個鍵值\",p:[{name:\"蒐索鍵值\",detail:'要蒐索的值。例如,42、\"Cats\"或I24。'},{name:\"範圍\",detail:\"要進行蒐索的範圍。將在該範圍的第一行中蒐索在蒐索鍵值中指定的鍵值。\"},{name:\"索引\",detail:\"要返回的值的行索引,範圍中的第一行編號為1。\\n\\n如果索引不是介於1和範圍中的行數之間,將返回#VALUE！。\"},{name:\"已排序\",detail:\"[可選 - 預設值為TRUE()] - 訓示要蒐索的行（指定範圍的第一行）是否已排序。\\n\\n如果將已排序設為TRUE或省略,將返回最接近的匹配值（小於或等於蒐索鍵值）。如果在蒐索的行中所有的值均大於蒐索鍵值,則返回#N/A。\\n\\n如果將已排序設為TRUE或將其省略,而範圍的首行並非處於已排序狀態,則返回值可能會是錯誤的。\\n\\n如果將已排序設為FALSE,則僅返回完全匹配。如果存在多個匹配值,將返回與找到的第一個值對應的儲存格的內容,如果找不到匹配值則返回#N/A。\"}]},LOOKUP:{d:\"在行或列中查找相應鍵,並將相應儲存格的值返回到與蒐索行或列所在位置相同的結果範圍中。\",a:\"在行或列中查找相應鍵\",p:[{name:\"蒐索鍵值\",detail:'要在行或列中蒐索的值。例如,42、\"Cats\" 或 I24。'},{name:\"搜索範圍 | 搜索結果數組\",detail:\"使用LOOKUP的一種方法是給定單行或單列形式的搜索範圍進行蒐索查找,這種管道要用到另一個參數結果範圍。另一種管道是將這兩個參數合併為一個搜索結果數組,其中第一行或第一列用於蒐索,並將返回值放在該數組的最後一行或最後一列中。\"},{name:\"結果範圍\",detail:\"[ 可選 ] - 用於存放返回結果的範圍。返回值對應於在搜索範圍中找到蒐索鍵值的位置。此範圍必須僅為單行或單列,而如果您使用的是搜索結果數組管道,則不應提供此參數。\"}]},ADDRESS:{d:\"返回字串形式的儲存格引用。\",a:\"返回字串形式的儲存格引用。\",p:[{name:\"row_num\",detail:\"一個數值,指定要在儲存格引用中使用的行號。\"},{name:\"column_num\",detail:\"一個數值,指定要在儲存格引用中使用的列號（而非名稱）。A列的編號為1。\"},{name:\"abs_num\",detail:\"[可選 - 預設值為1] - 一個數值,指定要返回的參考類型。\\n\\n1表示行列均採用絕對值（例如$A$1）；\\n\\n2表示採用絕對行號,相對列標（例如A$1）；\\n\\n3表示採用相對行號,絕對列標（例如$A1）；\\n\\n4表示行列均採用相對值（例如A1）。\"},{name:\"A1\",detail:\"[可選 - 預設值為TRUE（）] - 一個布林值,訓示採用A1標記形式（TRUE）還是R1C1標記形式（FALSE）。\"},{name:\"sheet_text\",detail:\"[可選 - 默認預設] - 用於指定地址所指向的工作表名稱。\"}]},INDIRECT:{d:\"返回以字串指定的儲存格引用。\",a:\"返回以字串指定的儲存格引用。\",p:[{name:\"ref_text\",detail:\"以帶引號的字串形式提供的儲存格引用。\"},{name:\"A1\",detail:\"[可選 - 預設值為TRUE（）] - 一個布林值,訓示採用A1標記形式（TRUE）還是R1C1標記形式（FALSE）。\"}]},ROW:{d:\"返回指定儲存格的行號\",a:\"返回指定儲存格的行號\",p:[{name:\"reference\",detail:\"[可選 - 默認為此公式所在的儲存格] - 要返回其行號的儲存格。\\n\\n如果儲存格引用指向的範圍其寬度大於一個儲存格,而此公式不是用作數組公式的,這時會僅返回儲存格引用中首行的編號值。\"}]},ROWS:{d:\"返回指定數組或範圍中的行數。\",a:\"返回指定數組或範圍中的行數。\",p:[{name:\"array\",detail:\"要返回其行數的範圍。\"}]},COLUMN:{d:\"按照 `A=1` 的規則返回指定儲存格的列號。\",a:\"按照 `A=1` 的規則返回指定儲存格的列號。\",p:[{name:\"reference\",detail:\"[可選 - 默認為包含此公式的儲存格] - 要返回其列號的儲存格。A列對應的編號為1。\\n\\n如果儲存格引用是寬度超過一個儲存格的範圍,而此公式不是作為數組公式來使用的,囙此將返回儲存格引用中的第一列的位置。\"}]},COLUMNS:{d:\"返回指定數組或範圍中的列數。\",a:\"返回指定數組或範圍中的列數。\",p:[{name:\"array\",detail:\"要返回其列數的範圍。\"}]},OFFSET:{d:\"給定某範圍的起始儲存格引用以及該範圍涵蓋的行列數量,返回該範圍的引用。\",a:\"給定某範圍的起始儲存格引用以及該範圍涵蓋的行列數量,返回該範圍的引用。\",p:[{name:\"reference\",detail:\"用於計算行列偏移量的起點。\"},{name:\"rows\",detail:\"要偏移的行數。\\n\\n行偏移量必須是整數,但也可以是負數。如果提供的參數帶有小數,小數部分將被截去。\"},{name:\"cols\",detail:\"要偏移的列數。\\n\\n列偏移量必須是整數,但也可以是負數。如果提供的參數帶有小數,小數部分將被截去。\"},{name:\"height\",detail:\"[可選] - 要從偏移目標開始返回的範圍的高度。\"},{name:\"width\",detail:\"[可選] - 要從偏移目標開始返回的範圍的寬度。\"}]},MATCH:{d:\"在儲存格中蒐索指定項,然後返回該項在儲存格區域中的相對位置。\",a:\"在儲存格中蒐索指定項,然後返回該項在儲存格區域中的相對位置。\",p:[{name:\"lookup_value\",detail:\"要在 lookup_array 中匹配的值。\"},{name:\"lookup_array\",detail:\"要蒐索的儲存格區域。\\n\\n如果所用的範圍的高度和寬度均大於1,MATCH將返回#N/A！。\"},{name:\"match_type\",detail:\"[可選 - 預設值為1] - 要採用的蒐索管道。\\n\\n1為默認類型,此時MATCH會假設範圍已按昇冪排序,並返回小於等於蒐索鍵值的最大值。\\n\\n0表示完全匹配,在範圍未排序的情况下需要使用此管道。\\n\\n-1讓MATCH假設範圍是按降序排序的,並返回大於等於蒐索鍵值的最小值。\"}]},INDEX:{d:\"返回表格或中的元素值,此元素由行號和列號的索引值給定。\",a:\"返回表格或中的元素值,此元素由行號和列號的索引值給定。\",p:[{name:\"array\",detail:\"儲存格區域或數組常數。\"},{name:\"row_num\",detail:\"選擇數組中的某行,函數從該行返回數值。\"},{name:\"column_num\",detail:\"選擇數組中的某列,函數從該列返回數值。\"}]},GETPIVOTDATA:{d:\"從與指定行和列標題對應的數據透視錶中選取匯總值。\",a:\"從與指定行和列標題對應的數據透視錶中選取匯總值。\",p:[{name:\"data_field\",detail:'您想從數據透視錶中獲取其數據的值名稱。\\n值名稱必須括在引號中或是指向包含相關文字的任何儲存格的引用。\\n如果有多個值欄位,則必須使用數據透視錶中顯示的確切名稱（如\"銷售總額\"）。'},{name:\"pivot_table\",detail:\"目標數據透視錶中的任何儲存格的引用（推薦位於頂角的儲存格）。\"},{name:\"field1\",detail:\"[可選] - 源數據集（不是數據透視錶）中列的名稱。\"},{name:\"item1\",detail:\"[可選] - 數據透視錶中顯示的與您要檢索的欄位名稱1相對應的行或列的名稱。\"}]},CHOOSE:{d:\"基於索引返回選項清單中的元素。\",a:\"基於索引返回選項清單中的元素。\",p:[{name:\"index_num\",detail:\"指定要返回哪一項。\\n\\n如果索引為零、負值或大於提供的選擇數量,將返回#VALUE！錯誤。\"},{name:\"value1\",detail:\"一項可能的返回值。必須提供。可以是儲存格引用或單獨的值。\"},{name:\"value2\",detail:\"[可選] - 其他可以選擇的值。選擇\"}]},HYPERLINK:{d:\"在儲存格內創建一個超連結。\",a:\"在儲存格內創建一個超連結。\",p:[{name:\"網址\",detail:\"以引號括住的連結位置的完整網址,或對包含這種網址的儲存格的引用。\\n\\n僅允許某些連結類型。其中包括:http://、https://、mailto:、aim:、ftp://、gopher://、telnet://和news://,明確禁用使用其他協定。如果指定的是其他協定,將會在儲存格中顯示連結標籤,但該標籤不會以連結形式呈現。\\n\\n如果未指定協定,則假設使用http://,並將其作為網址的首碼。\"},{name:\"連結標籤\",detail:'[可選-默認為網址] - 要在儲存格中作為連結顯示的文字（用引號括起來的）,或者指向包含這種標籤的儲存格的引用。\\n\\n如果連結標籤是指向某個空儲存格的引用,如果網址有效,就將其作為連結顯示,否則作為純文字顯示。\\n\\n如果連結標籤為空字串常數（\"\"）,所在儲存格顯示的內容將為空白,但通過點擊該儲存格或轉入該儲存格仍然可以訪問連結。'}]},TIME:{d:\"將給定的小時、分鐘和秒轉換為時間。\",a:\"將給定的小時、分鐘和秒轉換為時間。\",p:[{name:\"小時\",detail:\"0（零）到 32767 之間的數位,代表小時。\\n\\n任何大於 23 的值都會除以24,餘數將作為小時值。\"},{name:\"分鐘\",detail:\"0（零）到 32767 之間的數位,代表分鐘。\\n\\n任何大於 59 的值將轉換為小時和分鐘。\"},{name:\"秒\",detail:\"0（零）到 32767 之間的數位,代表秒。\\n\\n任何大於 59 的值將轉換為小時、分鐘和秒。\"}]},TIMEVALUE:{d:\"按一天24小時返回該時間的分數表示。\",a:\"按一天24小時返回該時間的分數表示。\",p:[{name:\"time_text\",detail:\"用於表示時間的字串。\"}]},EOMONTH:{d:\"返回某個月份最後一天的序號,該月份在另一個日期之前或之後的數個月（月數由參數指定）。\",a:\"返回某個月份最後一天的序號\",p:[{name:\"start_date\",detail:\"用於計算結果的參照日期。\"},{name:\"months\",detail:\"用於計算的起始日期之前（負）或之後（正）的月數。返回的是計算所得月份的最後那天。\"}]},EDATE:{d:\"返回表示某個日期的序號,該日期在另一個日期的數月之前/之後。\",a:\"返回表示某個日期的序號\",p:[{name:\"start_date\",detail:\"用於計算結果的參照日期。\"},{name:\"months\",detail:\"用於計算的起始日期之前（負）或之後（正）的月數。\"}]},SECOND:{d:\"返回時間值的秒數。秒數是0（零）到59範圍內的整數。\",a:\"返回時間值的秒數。秒數是0（零）到59範圍內的整數。\",p:[{name:\"時間\",detail:\"用於計算秒鐘部分的時間。必須為以下值之一:指向包含日期/時間值的儲存格的引用、返回日期/時間的函數或者數位。\"}]},MINUTE:{d:\"以數位格式返回特定時間的分鐘部分。\",a:\"以數位格式返回特定時間的分鐘部分。\",p:[{name:\"時間\",detail:\"用於計算分鐘部分的時間。必須為以下值之一:指向包含日期/時間值的儲存格的引用、返回日期/時間的函數或者數位。\"}]},HOUR:{d:\"以數位格式返回特定時間的小時部分。\",a:\"以數位格式返回特定時間的小時部分。\",p:[{name:\"時間\",detail:\"用於計算小時部分的時間。必須為以下值之一:指向包含日期/時間值的儲存格的引用、返回日期/時間的函數或者數位。\"}]},NOW:{d:\"以日期值格式返回當前日期和時間。\",a:\"以日期值格式返回當前日期和時間。\",p:[]},NETWORKDAYS:{d:\"返回所提供的兩個日期之間的淨工作日天數。\",a:\"返回所提供的兩個日期之間的淨工作日天數。\",p:[{name:\"start_date\",detail:\"用於計算淨工作日天數的時間段開始日期。\"},{name:\"end_date\",detail:\"用於計算淨工作日天數的時間段結束日期。\"},{name:\"holidays\",detail:\"[可選] - 一個範圍或數組常數,其中包含作為節假日的日期序號。\\n\\n在節假日數組中提供的值必須是日期序號值（例如由N所返回的值）或日期值（例如由DATE、DATEVALUE或TO_DATE返回的值）。由範圍指定的值應該是標準的日期值或日期序數值。\"}]},NETWORKDAYS_INTL:{d:\"返回給定的兩個日期之間的淨工作日天數（排除指定的週末和節假日）。\",a:\"返回給定的兩個日期之間的淨工作日天數（排除指定的週末和節假日）。\",p:[{name:\"start_date\",detail:\"用於計算淨工作日天數的時間段開始日期。\"},{name:\"end_date\",detail:\"用於計算淨工作日天數的時間段結束日期。\"},{name:\"weekend\",detail:'[可選-預設值為1] - 用於表示哪些天為週末的數位或字串。\\n字串管道:可以使用由0和1組成的字串來指定週末,串中的第一個數位字元代表週一,最後一個則代表周日。零表示這一天是工作日,1 表示這一天為週末。例如,\"0000011\"表示將週六和周日作為週末。\\n數位管道:這種管道不使用上述字串形式,而是使用一個數位。1 =週六/周日為週末,2 =周日/週一為週末,依此類推則7 =週五/週六。11 =周日為唯一週末,12 =週一為唯一週末,依此類推則17 =週六為唯一週末。'},{name:\"holidays\",detail:\"[可選] - 這是一個範圍或數組常數,其中包含作為節假日的日期。\\n在節假日數組內提供的值必須為日期序數值（例如N的返回值）或日期值（例如DATE、DATEVALUE或TO_DATE的返回值）。由範圍指定的值應該是標準的日期值或日期序數值。\"}]},ISOWEEKNUM:{d:\"返回給定日期在全年中的 ISO 周數。\",a:\"返回給定日期在全年中的 ISO 周數。\",p:[{name:\"date\",detail:\"用於日期和時間計算的日期-時間程式碼。\"}]},WEEKNUM:{d:\"返回特定日期的周數。\",a:\"返回特定日期的周數。\",p:[{name:\"serial_number\",detail:\"要確定其位於第幾周的日期,必須是對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"return_type\",detail:\"[可選-預設值為1 ] - 代表一周起始日的數位,系統也使用該數位來確定一年的第一周（1=周日,2=週一）。\"}]},WEEKDAY:{d:\"返回一個數位,對應於給定日期所在的星期幾。\",a:\"返回一個數位,對應於給定日期所在的星期幾。\",p:[{name:\"serial_number\",detail:\"要為其確定星期幾的日期。必須是對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"return_type\",detail:\"[可選-預設值為1] -以數位訓示使用哪種編號順序來表示星期幾。默認情况下,按星期日（= 1）開始計算。\\n\\n如果類型為1,則星期值將從星期日開始算起,並且星期日的值為1,囙此星期六的值就是7。\\n\\n如果類型為2,則星期值將從星期一開始算起,並且星期一的值為1,囙此星期日的值就是7。\\n\\n如果類型為3,則星期值將從星期一算起,並且星期一的值為0,囙此星期日的值就是6。\"}]},DAY:{d:\"以數位格式返回特定日期所在的當月幾號。\",a:\"以數位格式返回特定日期所在的當月幾號。\",p:[{name:\"serial_number\",detail:\"要從中選取具體幾號的日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"}]},DAYS:{d:\"返回兩個日期之間的天數。\",a:\"返回兩個日期之間的天數。\",p:[{name:\"end_date\",detail:\"計算中要使用的結束日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"start_date\",detail:\"計算中要使用的開始日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"}]},DAYS360:{d:\"按照每年360天,返回兩個日期之間的差（用於計算利息）。\",a:\"按照每年360天,返回兩個日期之間的差（用於計算利息）。\",p:[{name:\"start_date\",detail:\"計算中要使用的開始日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"end_date\",detail:\"計算中要使用的結束日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"method\",detail:\"[可選 - 默認為FALSE（）] - 訓示要使用哪種天數計算方法。\\n\\nFALSE -採用美國（NASD）方法時,如果起始日期為某月的最後一天,為便於計算,會將起始日期的當月幾號更改為30。此外,如果結束日期是所在月份的最後一天,而且起始日期在其所在月的30號之前,則將結束日期更改為結束日期之後那個月的第一天,否則將結束日期更改為該月的30號。\\n\\nTRUE -採用歐洲方法時,會將所有日期在31號的起始日期或結束日期更改為當月的30號。\"}]},DATE:{d:\"將提供的年、月、日轉換為日期。\",a:\"將提供的年、月、日轉換為日期。\",p:[{name:\"year\",detail:\"日期的年份部分,包含一到四位數位。\\n\\n介於0（零）到 1899 之間,會將該值與 1900 相加來計算年份；\\n\\n介於 1900 到 9999 之間,將使用該數值作為年份；\\n\\n小於0或大於等於 10000,返回錯誤值#NUM！。\"},{name:\"month\",detail:\"日期的月份部分,一個正整數或負整數。\\n\\n如果 month 大於 12,則 month 會將該月份數與指定年中的第一個月相加。\\n\\n如果 month 小於 1,month 則從指定年份的一月份開始遞減該月份數,然後再加上 1 個月。\"},{name:\"day\",detail:\"日期的日部分,一個正整數或負整數。\\n\\n如果 day 大於月中指定的天數,則 day 會將天數與該月中的第一天相加。\\n\\n如果 day 小於1,則 day 從指定月份的第一天開始遞減該天數,然後再加上 1 天。\"}]},DATEVALUE:{d:\"將提供的日期字串轉換為日期的序號。\",a:\"將提供的日期字串轉換為日期的序號。\",p:[{name:\"date_text\",detail:\"表示日期的字串。\"}]},DATEDIF:{d:\"計算兩個日期之間的天數、月數或年數。\",a:\"計算兩個日期之間的天數、月數或年數。\",p:[{name:\"起始日期\",detail:\"計算中要使用的開始日期。必須是對包含DATE值的儲存格的引用、返回DATE類型的函數或數位。\"},{name:\"結束日期\",detail:\"計算中要使用的結束日期。必須是對包含DATE值的儲存格的引用、返回DATE類型的函數或數位。\"},{name:\"組織\",detail:'時間組織的縮寫文字。例如\"M\"代表月。有效值包括:\"Y\"、\"M\"、\"D\"、\"MD\"、\"YM\"和\"YD\"。\\n\\n\"Y\":返回起始日期和結束日期之間的整年數。\\n\\n\"M\":返回起始日期和結束日期之間的整月數。\\n\\n\"D\":返回起始日期和結束日期之間的天數。\\n\\n\"MD\":返回起始日期和結束日期之間的天數（不計整月數）。\\n\\n\"YM\":返回起始日期和結束日期之間的整月數（不計整年數）。\\n\\n\"YD\":返回起始日期和結束日期之間的天數（假設起始日期和結束日期的間隔不超過一年）。'}]},WORKDAY:{d:\"指定工作日天數,計算結束日期。\",a:\"指定工作日天數,計算結束日期。\",p:[{name:\"start_date\",detail:\"計算的開始日期。\"},{name:\"days\",detail:\"start_date之前或之後不含週末及節假日的天數。\\n\\n為正值將生成未來日期；\\n\\n為負值生成過去日期。\"},{name:\"holidays\",detail:\"[可選] - 一個範圍或數組常數,其中包含作為節假日的日期序號。\\n\\n在節假日數組中提供的值必須是日期序號值（例如由N所返回的值）或日期值（例如由DATE、DATEVALUE或TO_DATE返回的值）。由範圍指定的值應該是標準的日期值或日期序數值。\"}]},WORKDAY_INTL:{d:\"返回指定的若干個工作日之前或之後的日期的序號（使用自定義週末參數）。 \",a:\"返回指定的若干個工作日之前或之後的日期的序號（使用自定義週末參數）。 \",p:[{name:\"start_date\",detail:\"開始日期（將被截尾取整）。\"},{name:\"days\",detail:\"start_date之前或之後的工作日的天數。\\n\\n正值表示未來日期；\\n\\n負值表示過去日期；\\n\\n零值表示開始日期。\"},{name:\"weekend\",detail:'[可選 - 預設值為1] - 用於表示哪些天為週末的數位或字串。\\n字串管道:可以使用由0和1組成的字串來指定週末,串中的第一個數位字元代表週一,最後一個則代表周日。零表示這一天是工作日,1表示這一天為週末。例如,\"0000011\"表示將週六和周日作為週末。\\n數位管道:這種管道不使用上述字串形式,而是使用一個數位。1 =週六/周日為週末,2 =周日/週一為週末,依此類推則7 =週五/週六。11 =周日為唯一週末,12 =週一為唯一週末,依此類推則17 =週六為唯一週末。'},{name:\"holidays\",detail:\"[可選] - 這是一個範圍或數組常數,其中包含作為節假日的日期。\\n在節假日數組內提供的值必須為日期序數值（例如N的返回值）或日期值（例如DATE、DATEVALUE或TO_DATE的返回值）。由範圍指定的值應該是標準的日期值或日期序數值。\"}]},YEAR:{d:\"返回對應於某個日期的年份。Year作為 1900 - 9999 之間的整數返回。\",a:\"返回對應於某個日期的年份。Year作為 1900 - 9999 之間的整數返回。\",p:[{name:\"serial_number\",detail:\"用於計算年份的日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"}]},YEARFRAC:{d:\"返回 start_date 和 end_date 之間的天數占全年天數的百分比。\",a:\"返回 start_date 和 end_date 之間的天數占全年天數的百分比。\",p:[{name:\"start_date\",detail:\"計算中要使用的開始日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"end_date\",detail:\"計算中要使用的結束日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 要使用的日計數基準類型。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},TODAY:{d:\"以日期值格式返回當前日期。\",a:\"以日期值格式返回當前日期。\",p:[]},MONTH:{d:\"返回日期（以序列數表示）中的月份。月份是介於1（一月）到12（十二月）之間的整數。\",a:\"返回日期（以序列數表示）中的月份。月份是介於1（一月）到12（十二月）之間的整數。\",p:[{name:\"serial_number\",detail:\"要從中選取月份的日期。必須是以下一種:對包含日期的儲存格的引用、返回日期類型的函數或者數位。\"}]},EFFECT:{d:\"根據名義利率及每年的複利計息期數來計算實際年利率。\",a:\"根據名義利率及每年的複利計息期數來計算實際年利率。\",p:[{name:\"nominal_rate\",detail:\"每年的名義利率。\"},{name:\"npery\",detail:\"每年的複利計算期數。\"}]},DOLLAR:{d:\"將數位格式設定為與語言區域相對應的貨幣格式。\",a:\"將數位格式設定為與語言區域相對應的貨幣格式。\",p:[{name:\"number\",detail:\"要設定格式的值。\"},{name:\"decimals\",detail:\"[可選 - 預設值為2] - 要顯示的小數位數。\\n\\n如果這是負數,則將數位四捨五入到小數點左側。\"}]},DOLLARDE:{d:\"將以整數部分和分數部分轉換為以小數部分表示的金額數位\",a:\"將以整數部分和分數部分轉換為以小數部分表示的金額數位\",p:[{name:\"fractional_dollar\",detail:\"以整數部份和分數部分表示的數位,用小數點隔開。\"},{name:\"fraction\",detail:\"用作分數中的分母的整數。\"}]},DOLLARFR:{d:\"將小數轉換為分數表示的金額數位。\",a:\"將小數轉換為分數表示的金額數位。\",p:[{name:\"decimal_dollar\",detail:\"小數。\"},{name:\"fraction\",detail:\"用作分數中的分母的整數。\"}]},DB:{d:\"使用固定餘額遞減法,返回指定期間內某項固定資產的折舊值。\",a:\"使用固定餘額遞減法,返回指定期間內某項固定資產的折舊值。\",p:[{name:\"cost\",detail:\"資產原值。\"},{name:\"salvage\",detail:\"折舊末尾時的值（有時也稱為資產殘值）。\"},{name:\"life\",detail:\"資產的折舊期數（有時也稱作資產的使用壽命）。\"},{name:\"period\",detail:\"在使用期限內要計算折舊的折舊期。\"},{name:\"month\",detail:\"[可選 - 預設值為12] - 折舊第一年中的月數。\"}]},DDB:{d:\"用雙倍餘額遞減法,返回指定期間內某項固定資產的折舊值。\",a:\"用雙倍餘額遞減法,返回指定期間內某項固定資產的折舊值。\",p:[{name:\"cost\",detail:\"资产原值。\"},{name:\"salvage\",detail:\"折舊末尾時的值（有時也稱為資產殘值）。\"},{name:\"life\",detail:\"資產的折舊期數（有時也稱作資產的使用壽命）。\"},{name:\"period\",detail:\"在使用期限內要計算折舊的折舊期。\"},{name:\"factor\",detail:\"[可選 - 預設值為2] - 折舊的遞減係數。\"}]},RATE:{d:\"返回年金每期的利率。\",a:\"返回年金每期的利率。\",p:[{name:\"nper\",detail:\"年金的付款總期數。\"},{name:\"pmt\",detail:\"每期的付款金額,在年金週期內不能更改。\"},{name:\"pv\",detail:\"現值即一系列未來付款當前值的總和。\"},{name:\"fv\",detail:\"[可選 - 預設值為0] - 未來值,或在最後一次付款後希望得到的現金餘額。\"},{name:\"type\",detail:\"[可選 - 預設值為0] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"},{name:\"guess\",detail:\"[可選 - 預設值為0.1] - 預期利率。\"}]},CUMPRINC:{d:\"基於等額分期付款和固定利率,計算投資在多個付款期內的累計本金償還額。\",a:\"基於等額分期付款和固定利率,計算投資在多個付款期內的累計本金償還額。\",p:[{name:\"rate\",detail:\"利率。\"},{name:\"nper\",detail:\"總付款期數。\"},{name:\"pv\",detail:\"年金的現值。\"},{name:\"start_period\",detail:\"開始累計計算的付款期序號。\\n\\n首期必須大於等於1。\"},{name:\"end_period\",detail:\"結束累計計算的付款期序號。\\n\\n末期必須大於首期。\"},{name:\"type\",detail:\"指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},COUPNUM:{d:\"返回在結算日和到期日之間的付息次數，向上舍入到最近的整數\",a:\"返回在結算日和到期日之間的付息次數，向上舍入到最近的整數\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},SYD:{d:\"返回在指定期間內資產按年限總和折舊法計算的折舊。\",a:\"返回在指定期間內資產按年限總和折舊法計算的折舊。\",p:[{name:\"cost\",detail:\"資產原值。\"},{name:\"salvage\",detail:\"折舊末尾時的值（有時也稱為資產殘值）。\"},{name:\"life\",detail:\"資產的折舊期數（有時也稱作資產的使用壽命）。\"},{name:\"period\",detail:\"在使用期限內要計算折舊的折舊期。\"}]},TBILLEQ:{d:\"基於貼現率計算美國政府短期債券的等效年化收益率。\",a:\"基於貼現率計算美國政府短期債券的等效年化收益率。\",p:[{name:\"settlement\",detail:\"債券的結算日期,此日期為債券發行後交付給買家的日期。\"},{name:\"maturity\",detail:\"債券的到期或結束日期,届時可將其以面值或票面價值贖回。\"},{name:\"discount\",detail:\"債券購買時的貼現率。\"}]},TBILLYIELD:{d:\"基於價格計算美國政府短期債券的收益率。\",a:\"基於價格計算美國政府短期債券的收益率。\",p:[{name:\"settlement\",detail:\"債券的結算日期,此日期為債券發行後交付給買家的日期。\"},{name:\"maturity\",detail:\"債券的到期或結束日期,届時可將其以面值或票面價值贖回。\"},{name:\"pr\",detail:\"債券的購買價格。\"}]},TBILLPRICE:{d:\"基於貼現率計算美國政府短期債券的價格。\",a:\"基於貼現率計算美國政府短期債券的價格。\",p:[{name:\"settlement\",detail:\"債券的結算日期,此日期為債券發行後交付給買家的日期。\"},{name:\"maturity\",detail:\"債券的到期或結束日期,届時可將其以面值或票面價值贖回。\"},{name:\"discount\",detail:\"債券購買時的貼現率。\"}]},PV:{d:\"基於等額分期付款和固定利率,計算年金投資的現值。\",a:\"基於等額分期付款和固定利率,計算年金投資的現值。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"nper\",detail:\"年金的付款總期數。\"},{name:\"pmt\",detail:\"每期的付款金額,在年金週期內不能更改。\"},{name:\"fv\",detail:\"[可選] - 未來值,或在最後一次付款後希望得到的現金餘額。\"},{name:\"type\",detail:\"[可選 - 預設值為0] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},ACCRINT:{d:\"返回定期付息證券的應計利息。\",a:\"返回定期付息證券的應計利息。\",p:[{name:\"issue\",detail:\"有價證券的發行日。\"},{name:\"first_interest\",detail:\"有價證券的首次計息日。\"},{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"rate\",detail:\"有價證券的年息票利率。\"},{name:\"par\",detail:\"證券的票面值。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"\"歐洲30/360\"方法\"-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'},{name:\"calc_method\",detail:\"[可選 - 默認為TRUE（）] - 一個邏輯值,指定當結算日期晚於首次計息日期時用於計算總應計利息的方法。\\n\\n如果值為TRUE,則返回從發行日到結算日的總應計利息。\\n\\n如果值為FALSE,則返回從首次計息日到結算日的應計利息。\"}]},ACCRINTM:{d:\"返回在到期日支付利息的有價證券的應計利息。\",a:\"返回在到期日支付利息的有價證券的應計利息。\",p:[{name:\"issue\",detail:\"有價證券的發行日。\"},{name:\"settlement\",detail:\"有價證券的到期日。\"},{name:\"rate\",detail:\"有價證券的年息票利率。\"},{name:\"par\",detail:\"證券的票面值。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},COUPDAYBS:{d:\"返回從付息期開始到結算日的天數。\",a:\"返回從付息期開始到結算日的天數。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},COUPDAYS:{d:\"返回結算日所在的付息期的天數。\",a:\"返回結算日所在的付息期的天數。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] -訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},COUPDAYSNC:{d:\"返回從結算日到下一票息支付日之間的天數。\",a:\"返回從結算日到下一票息支付日之間的天數。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法  - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},COUPNCD:{d:\"計算結算日之後的下一票息或利息派發日期。\",a:\"計算結算日之後的下一票息或利息派發日期。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},COUPPCD:{d:\"計算結算日之前的最後一個票息或利息支付日。\",a:\"計算結算日之前的最後一個票息或利息支付日。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4 。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},FV:{d:\"基於等額分期付款和固定利率,計算年金投資的未來價值。\",a:\"基於等額分期付款和固定利率,計算年金投資的未來價值。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"nper\",detail:\"年金的付款總期數。\"},{name:\"pmt\",detail:\"各期所應支付的金額,在整個年金期間保持不變。\"},{name:\"pv\",detail:\"[可選 - 預設值為0 ] - 現值,或一系列未來付款的當前值的累積和。\"},{name:\"type\",detail:\"[可選 - 預設值為0 ] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},FVSCHEDULE:{d:\"返回應用一系列複利率計算的初始本金的未來值。\",a:\"返回應用一系列複利率計算的初始本金的未來值。\",p:[{name:\"principal\",detail:\"現值。\"},{name:\"schedule\",detail:\"用於計算本金複利的一組利率。\\n\\n利率錶必須是範圍或數組,其中包含要用於計算複利的一組利率。這些利率值應該以十進位小數形式表示,或者使用UNARY_PERCENT以百分比形式表示,即表示為0.09或UNARY_PERCENT（9）,而不要表示為9。\"}]},YIELD:{d:\"返回定期支付利息的債券的收益率。\",a:\"返回定期支付利息的債券的收益率。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"rate\",detail:\"有價證券的年息票利率。\"},{name:\"pr\",detail:\"有價證券的價格。\"},{name:\"redemption\",detail:\"有價證券的清償價值。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法 - 此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},YIELDDISC:{d:\"基於價格計算折價發行的（不帶息）債券的年收益率。\",a:\"基於價格計算折價發行的（不帶息）債券的年收益率。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"pr\",detail:\"有價證券的價格。\"},{name:\"redemption\",detail:\"有價證券的清償價值。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法 - 此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},NOMINAL:{d:\"基於給定的實際利率和年複利期數,返回名義年利率。\",a:\"基於給定的實際利率和年複利期數,返回名義年利率。\",p:[{name:\"effect_rate\",detail:\"每年的實際利率。\"},{name:\"npery\",detail:\"每年的複利期數。\"}]},XIRR:{d:\"返回一組不一定定期發生的現金流的內部收益率。\",a:\"返回一組不一定定期發生的現金流的內部收益率。\",p:[{name:\"values\",detail:\"其中含有投資相關收益或支出的數組或範圍。\\n\\n現金流數額中必須至少包含一項負的和一項正的現金流金額才能計算回報率。\"},{name:\"dates\",detail:\"與現金流數額參數中的現金流對應的日期數組或範圍。\"},{name:\"guess\",detail:\"[可選 - 預設值為0.1] - 對內部回報率的估算值。\"}]},MIRR:{d:\"返回一系列定期現金流的修改後內部收益率。\",a:\"返回一系列定期現金流的修改後內部收益率。\",p:[{name:\"values\",detail:\"其中含有投資相關收益或支出的數組或範圍。\\n\\n現金流數額中必須至少包含一項負的和一項正的現金流金額才能計算回報率。\"},{name:\"finance_rate\",detail:\"現金流中使用的資金支付的利率。\"},{name:\"reinvest_rate\",detail:\"將現金流再投資的收益率。\"}]},IRR:{d:\"返回由值中的數位表示的一系列現金流的內部收益率。 \",a:\"返回由值中的數位表示的一系列現金流的內部收益率。 \",p:[{name:\"values\",detail:\"其中含有投資相關收益或支出的數組或範圍。\\n\\n現金流數額中必須至少包含一項負的和一項正的現金流金額才能計算回報率。\"},{name:\"guess\",detail:\"[可選 - 默認為0.1] - 內部收益率的估值。\"}]},NPV:{d:\"使用貼現率和一系列未來支出（負值）和收益（正值）來計算一項投資的淨現值。\",a:\"使用貼現率和一系列未來支出（負值）和收益（正值）來計算一項投資的淨現值。\",p:[{name:\"rate\",detail:\"某一期間的貼現率。\"},{name:\"value1\",detail:\"第一筆支出（負值）和收益（正值）。\"},{name:\"value2, ...\",detail:\"[可選] - 其他支出（負值）和收益（正值）。\"}]},XNPV:{d:\"返回一組現金流的淨現值,這些現金流不一定定期發生。\",a:\"返回一組現金流的淨現值,這些現金流不一定定期發生。\",p:[{name:\"rate\",detail:\"應用於現金流的貼現率。\"},{name:\"values\",detail:\"與dates中的支付時間相對應的一系列現金流。\"},{name:\"dates\",detail:\"與現金流支付相對應的支付日期錶。\"}]},CUMIPMT:{d:\"基於等額分期付款和固定利率,計算投資在一系列付款期內的累計利息。\",a:\"基於等額分期付款和固定利率,計算投資在一系列付款期內的累計利息。\",p:[{name:\"rate\",detail:\"利息率。\"},{name:\"nper\",detail:\"總付款期數。\"},{name:\"pv\",detail:\"現值。\"},{name:\"start_period\",detail:\"開始累計計算的付款期序號。\\n\\n首期必須大於等於1。\"},{name:\"end_period\",detail:\"結束累計計算的付款期序號。\\n\\n末期必須大於首期。\"},{name:\"type\",detail:\"指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},PMT:{d:\"用於根據固定付款額和固定利率計算貸款的付款額。\",a:\"用於根據固定付款額和固定利率計算貸款的付款額。\",p:[{name:\"rate\",detail:\"貸款利率。\"},{name:\"nper\",detail:\"該項貸款的付款總數。\"},{name:\"pv\",detail:\"現值,或一系列未來付款額現在所值的總額,也叫本金。\"},{name:\"fv\",detail:\"[可選 - 預設值為0] - 未來值,或在最後一次付款後希望得到的現金餘額。\"},{name:\"type\",detail:\"[可選 - 預設值為0] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},IPMT:{d:\"基於固定利率及等額分期付款管道,返回給定期數內對投資的利息償還額。\",a:\"基於固定利率及等額分期付款管道,返回給定期數內對投資的利息償還額。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"per\",detail:\"用於計算其利息數額的期數,必須在1到nper之間。\"},{name:\"nper\",detail:\"年金的付款總期數。\"},{name:\"pv\",detail:\"現值,或一系列未來付款的當前值的累積和。\"},{name:\"fv\",detail:\"[可選 - 預設值為0] - 未來值,或在最後一次付款後希望得到的現金餘額。\"},{name:\"type\",detail:\"[可選 - 預設值為0] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},PPMT:{d:\"返回根據定期固定付款和固定利率而定的投資在已知期間內的本金償付額。\",a:\"返回根據定期固定付款和固定利率而定的投資在已知期間內的本金償付額。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"per\",detail:\"指定期數,該值必須在 1 到 nper 範圍內。\"},{name:\"nper\",detail:\"年金的付款總期數。\"},{name:\"pv\",detail:\"現值即一系列未來付款當前值的總和。\"},{name:\"fv\",detail:\"[可選 - 預設值為0] - 未來值,或在最後一次付款後希望得到的現金餘額。\"},{name:\"type\",detail:\"[可選 - 預設值為0] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},INTRATE:{d:\"返回完全投資型證券的利率。\",a:\"返回完全投資型證券的利率。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"investment\",detail:\"有價證券的投資額。\"},{name:\"redemption\",detail:\"有價證券到期時的兌換值。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法-此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法 - 此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法-此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},PRICE:{d:\"返回定期付息的面值￥100的有價證券的價格。\",a:\"返回定期付息的面值￥100的有價證券的價格。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"rate\",detail:\"有價證券的年息票利率。\"},{name:\"yld\",detail:\"有價證券的年收益率。\"},{name:\"redemption\",detail:\"面值￥100的有價證券的清償價值。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},PRICEDISC:{d:\"返回折價發行的面值￥100的有價證券的價格。\",a:\"返回折價發行的面值￥100的有價證券的價格。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"discount\",detail:\"有价证券的贴现率。\"},{name:\"redemption\",detail:\"面值￥100的有價證券的清償價值。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},PRICEMAT:{d:\"返回到期付息的面值￥100的有價證券的價格。\",a:\"返回到期付息的面值￥100的有價證券的價格。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"issue\",detail:\"有價證券的發行日。\"},{name:\"rate\",detail:\"有價證券在發行日的利率。\"},{name:\"yld\",detail:\"有價證券的年收益率。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},RECEIVED:{d:\"返回一次性付息的有價證券到期收回的金額。\",a:\"返回一次性付息的有價證券到期收回的金額。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"investment\",detail:\"有價證券的投資額。\"},{name:\"discount\",detail:\"有價證券的貼現率。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},DISC:{d:\"返回有價證券的貼現率。\",a:\"返回有價證券的貼現率。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"pr\",detail:\"有價證券的價格（按面值為￥100計算）。\"},{name:\"redemption\",detail:\"面值￥100的有價證券的清償價值。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},NPER:{d:\"基於固定利率及等額分期付款管道,返回某項投資的總期數。\",a:\"基於固定利率及等額分期付款管道,返回某項投資的總期數。\",p:[{name:\"rate\",detail:\"各期利率。\"},{name:\"pmt\",detail:\"各期所應支付的金額,在整個年金期間保持不變。\"},{name:\"pv\",detail:\"現值,或一系列未來付款的當前值的累積和。\"},{name:\"fv\",detail:\"[可選 - 預設值為0] - 未來值,或在最後一次付款後希望得到的現金餘額。\"},{name:\"type\",detail:\"[可選 - 預設值為0] - 指定各期的付款時間是在期初還是期末。\\n\\n0表示期末；\\n\\n1表示期初。\"}]},SLN:{d:\"返回一個期間內的資產的直線折舊。\",a:\"返回一個期間內的資產的直線折舊。\",p:[{name:\"cost\",detail:\"資產原值。\"},{name:\"salvage\",detail:\"折舊末尾時的值（有時也稱為資產殘值）。\"},{name:\"life\",detail:\"資產的折舊期數（有時也稱作資產的使用壽命）。\"}]},DURATION:{d:\"返回假設面值￥100的定期付息有價證券的修正期限。\",a:\"返回假設面值￥100的定期付息有價證券的修正期限。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"coupon\",detail:\"有價證券的年息票利率。\"},{name:\"yld\",detail:\"有價證券的年收益率。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},MDURATION:{d:\"返回假設面值￥100的有價證券的Macauley修正期限。\",a:\"返回假設面值￥100的有價證券的Macauley修正期限。\",p:[{name:\"settlement\",detail:\"有價證券的結算日。有價證券結算日是在發行日之後,有價證券賣給購買者的日期。\"},{name:\"maturity\",detail:\"有價證券的到期日。到期日是有價證券有效期截止時的日期。\"},{name:\"coupon\",detail:\"有價證券的年息票利率。\"},{name:\"yld\",detail:\"有價證券的年收益率。\"},{name:\"frequency\",detail:\"年付息次數。\\n\\n如果按年支付,frequency = 1；\\n\\n按半年期支付,frequency = 2；\\n\\n按季支付,frequency = 4。\"},{name:\"basis\",detail:'[可選 - 默認為0] - 訓示要使用哪種天數計算方法。\\n\\n0表示\"美國（NASD）30/360\"方法 - 此方法按照美國全國證券交易商協會標準,假設每月30天、每年360天,並對所輸入的月末日期進行具體調整。\\n\\n1表示\"實際/實際\"方法-此方法計算基於指定日期之間的實際天數和所涉及的年份中的實際天數進行計算。此方法用於美國長期債券,也是在非財經用途方面使用最多的方法。\\n\\n2表示\"實際/360\"方法 - 此方法基於指定日期之間的實際天數進行計算, 但假定每年為360天。\\n\\n3表示\"實際/365\"方法 - 此方法基於指定日期之間的實際天數進行計算,但假定每年為365天。\\n\\n4表示\"歐洲30 / 360\"方法-類似於0,此方法基於每月30天、每年360天進行計算,但按照歐洲金融慣例對月末日期進行調整。'}]},BIN2DEC:{d:\"將二進位數轉換為十進位數。\",a:\"將二進位數轉換為十進位數。\",p:[{name:\"number\",detail:'要轉換為十進位數的帶符號的10位二進位數值（以字串形式提供）。\\n\\n帶符號的二進位數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n對於此函數,最大的正數輸入值為0111111111,最小的負數輸入值為1000000000。\\n\\n如果所提供的帶符號的二進位數是有效的二進位數,會自動將其轉換為相應的字串輸入。例如,BIN2DEC（100）和BIN2DEC（\"100\"）得出的結果相同,均為4。'}]},BIN2HEX:{d:\"將二進位數轉換為十六進位數。\",a:\"將二進位數轉換為十六進位數。\",p:[{name:\"number\",detail:'要轉換為帶符號的十六進位數的帶符號的10位二進位數值（以字串形式提供）。\\n\\n帶符號的二進位數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n對於此函數,最大的正數輸入值為0111111111,最小的負數輸入值為1000000000。\\n\\n如果所提供的帶符號的二進位數是有效的二進位數,會自動將其轉換為相應的字串輸入。例如,BIN2HEX（11111）和BIN2HEX（\"11111\"）得出的結果相同,均為1F。'},{name:\"places\",detail:'[ 可選 ] -結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。例如,BIN2HEX（\"11111\",8）所得的結果值為0000001F。\\n\\n如果帶符號的二進位數的最高位為1,則忽略此值；即當提供的帶符號的二進位數大於等於1000000000時忽略此值。'}]},BIN2OCT:{d:\"二進位數轉換為八進制數。\",a:\"二進位數轉換為八進制數。\",p:[{name:\"number\",detail:'要轉換為帶符號的八進制數的帶符號的10位二進位數值（以字串形式提供）。\\n\\n帶符號的二進位數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n對於此函數,最大的正數輸入值為0111111111,最小的負數輸入值為1000000000。\\n\\n如果所提供的帶符號的二進位數是有效的二進位數,會自動將其轉換為相應的字串輸入。例如,BIN2OCT（11111）和BIN2OCT（\"11111\"）得出的結果相同,均為37。'},{name:\"places\",detail:'[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。例如,BIN2OCT（\"11111\"）得到的結果值為00000037。\\n\\n如果帶符號的二進位數的最高位為1,則忽略此值；即當提供的帶符號的二進位數大於等於1000000000時忽略此值。'}]},DEC2BIN:{d:\"將十進位數轉換為二進位數。\",a:\"將十進位數轉換為二進位數。\",p:[{name:\"number\",detail:'要轉換為帶符號的二進位數的十進位數值（以字串形式提供）。\\n\\n對於此函數,最大的正數輸入值為511,最小的負數輸入值為-512。\\n\\n如果所提供的十進位數是有效的十進位數,會自動將其轉換為相應的字串輸入。例如,DEC2BIN（199）和DEC2BIN（\"199\"）得出的結果相同,均為11000111。'},{name:\"places\",detail:\"[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果十進位數為負數,則忽略此值。\"}]},DEC2HEX:{d:\"將十進位數轉換為十六進位數。\",a:\"將十進位數轉換為十六進位數。\",p:[{name:\"number\",detail:'要轉換為帶符號的十六進位數的十進位數值（以字串形式提供）。\\n\\n此函數可接受的最大正數值為549755813887,最小負數值為-549755814888。\\n\\n如果所提供的十進位數是有效的十進位數,會自動將其轉換為相應的字串輸入。例如,DEC2HEX（100）和DEC2HEX（\"100\"）得出的結果相同,均為64。'},{name:\"places\",detail:\"[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果十進位數為負數,則忽略此值。\"}]},DEC2OCT:{d:\"將十進位數轉換為八進制數。\",a:\"將十進位數轉換為八進制數。\",p:[{name:\"number\",detail:'要轉換為帶符號的八進制數的十進位數值（以字串形式提供）。\\n\\n此函數可接受的最大正數值為536870911,最小負數值為-53687092。\\n\\n如果所提供的十進位數是有效的十進位數,會自動將其轉換為相應的字串輸入。例如,DEC2OCT（199）和DEC2OCT（\"199\"）得出的結果相同,均為307。'},{name:\"places\",detail:\"[ 可選 ] -結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果十進位數為負數,則忽略此值 。\"}]},HEX2BIN:{d:\"將十六進位數轉換為二進位數。\",a:\"將十六進位數轉換為二進位數。\",p:[{name:\"number\",detail:'要轉換為帶符號的二進位數的帶符號的40位十六進位數值（以字串形式提供）。\\n\\n帶符號的十六進位數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n此函數可接受的最大正數值為1FF,最小負數值為FFFFFFFE00。\\n\\n如果所提供的帶符號的十六進位數是有效的十六進位數,函數會自動將其轉換為相應的字串輸入。例如,HEX2BIN（199）和HEX2BIN（\"199\"）得出的結果相同,均為110011001。'},{name:\"places\",detail:\"[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果帶符號的十六進位數的最高位為1,則忽略此值；即當提供的帶符號的十六進位數大於等於8000000000時忽略此值。\"}]},HEX2DEC:{d:\"將十六進位數轉換為十進位數。\",a:\"將十六進位數轉換為十進位數。\",p:[{name:\"number\",detail:'要轉換為十進位數的帶符號的40位十六進位數值（以字串形式提供）。\\n\\n帶符號的十六進位數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n此函數可接受的最大正數值為7fffffffff,最小負數值為8000000000。\\n\\n如果所提供的帶符號的十六進位數是有效的十六進位數,函數會自動將其轉換為相應的字串輸入。例如,HEX2DEC（199）和HEX2DEC（\"199\"）得出的結果相同,均為409 。'}]},HEX2OCT:{d:\"將十六進位數轉換為八進制數。\",a:\"將十六進位數轉換為八進制數。\",p:[{name:\"number\",detail:'要轉換為帶符號的八進制數的帶符號的40位十六進位數值（以字串形式提供）。\\n\\n帶符號的十六進位數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n此函數可接受的最大正數值為1FFFFFFF,最小負數值為FFE0000000。\\n\\n如果所提供的帶符號的十六進位數是有效的十六進位數,函數會自動將其轉換為相應的字串輸入。例如,HEX2OCT（199）和HEX2OCT（\"199\"）得出的結果相同,均為631。'},{name:\"places\",detail:\"[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果帶符號的十六進位數的最高位為1,則忽略此值；即當給定的帶符號的十六進位數大於等於8000000000時忽略此值。\"}]},OCT2BIN:{d:\"將八進制數轉換為二進位數。\",a:\"將八進制數轉換為二進位數。\",p:[{name:\"number\",detail:'要轉換為帶符號的二進位數的帶符號的30位八進制數值（以字串形式提供）。\\n\\n帶符號的八進制數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n此函數可接受的最大正數值為777,最小負數值為7777777000。\\n\\n如果所提供的帶符號的八進制數是有效的八進制數,函數會自動將其轉換為相應的字串輸入。例如,OCT2BIN（177）和OCT2BIN（\"177\"）得出的結果相同,均為1111111。'},{name:\"places\",detail:\"[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果帶符號的八進制數的最高位為1,則忽略此值；即當給定的帶符號的八進制數大於等於4000000000時忽略此值。\"}]},OCT2DEC:{d:\"將八進制數轉換為十進位數。\",a:\"將八進制數轉換為十進位數。\",p:[{name:\"number\",detail:'要轉換為十進位數的帶符號的30位八進制數值（以字串形式提供）。\\n\\n帶符號的ba進制數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n此函數可接受的最大正數值為3777777777,最小負數值為4000000000。\\n\\n如果所提供的帶符號的八進制數是有效的八進制數,函數會自動將其轉換為相應的字串輸入。例如,OCT2DEC（177）和OCT2DEC（\"177\"）得出的結果相同,均為127。'}]},OCT2HEX:{d:\"將八進制數轉換為十六進位數。\",a:\"將八進制數轉換為十六進位數。\",p:[{name:\"number\",detail:'要轉換為帶符號的十六進位數的帶符號的30位八進制數值（以字串形式提供）。\\n\\n帶符號的ba進制數的最高位是符號位；也就是說,負數是以二的補數形式表示的。\\n\\n此函數可接受的最大正數值為3777777777,最小負數值為4000000000。\\n\\n如果所提供的帶符號的八進制數是有效的八進制數,函數會自動將其轉換為相應的字串輸入。例如,OCT2HEX（177）和OCT2HEX（\"177\"）得出的結果相同,均為7F。'},{name:\"places\",detail:\"[ 可選 ] - 結果中要確保的有效位數。\\n\\n如果設定的有效位數大於結果中的有效位數,則在結果的左側填充0,使總有效位數達到有效位數。\\n\\n如果帶符號的八進制數的最高位為1,則忽略此值；即當給定的帶符號的八進制數大於等於4000000000時忽略此值。\"}]},COMPLEX:{d:\"將實係數及虛係數轉換為 x+yi 或 x+yj 形式的複數。\",a:\"將實係數及虛係數轉換為 x+yi 或 x+yj 形式的複數。\",p:[{name:\"real_num\",detail:\"複數的實係數。\"},{name:\"i_num\",detail:\"複數的虛係數。\"},{name:\"suffix\",detail:'[可選 - 默認為\"i\"] - 複數中虛係數的尾碼。'}]},IMREAL:{d:\"返回以 x+yi 或 x+yj 文本格式表示的複數的實係數。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的複數的實係數。\",p:[{name:\"inumber\",detail:\"需要計算其實係數的複數。\"}]},IMAGINARY:{d:\"返回以 x+yi 或 x+yj 文本格式表示的複數的虛係數。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的複數的虛係數。\",p:[{name:\"inumber\",detail:\"需要計算其虛係數的複數。\"}]},IMCONJUGATE:{d:\"返回以 x+yi 或 x+yj 文本格式表示的複數的共軛複數。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的複數的共軛複數。\",p:[{name:\"inumber\",detail:\"需要計算其共軛數的複數。\"}]},IMABS:{d:\"返回以 x+yi 或 x+yj 文本格式表示的複數的絕對值（模）。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的複數的絕對值（模）。\",p:[{name:\"inumber\",detail:\"要計算其絕對值的複數。\"}]},DELTA:{d:\"檢驗兩個值是否相等。如果 number1=number2,則返回1；否則返回0。\",a:\"檢驗兩個值是否相等。如果 number1=number2,則返回1；否則返回0。\",p:[{name:\"number1\",detail:\"第一個數位。\"},{name:\"number2\",detail:\"[可選 - 默認為0] - 第二個數位。\"}]},IMSUM:{d:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 個複數的和。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 個複數的和。\",p:[{name:\"inumber1\",detail:\"要相加的第一個複數\"},{name:\"inumber2, …\",detail:\"[可選] -要與值1相加的其他複數\"}]},IMSUB:{d:\"返回以 x+yi 或 x+yj 文本格式表示的兩個複數的差。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的兩個複數的差。\",p:[{name:\"inumber1\",detail:\"從（複）數中减去 inumber2。\"},{name:\"inumber2\",detail:\"從 inumber1 中减（複）數。\"}]},IMPRODUCT:{d:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 個複數的乘積。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的 1 至 255 個複數的乘積。\",p:[{name:\"inumber1\",detail:\"用於計算乘積的第一個複數\"},{name:\"inumber2, …\",detail:\"[可選] -要相乘的其他複數。\"}]},IMDIV:{d:\"返回以 x+yi 或 x+yj 文本格式表示的兩個複數的商。\",a:\"返回以 x+yi 或 x+yj 文本格式表示的兩個複數的商。\",p:[{name:\"inumber1\",detail:\"複數分子或被除數。\"},{name:\"inumber2\",detail:\"複數分母或除數。\"}]},NOT:{d:'返回某個邏輯值的相反值-\"NOT（TRUE（））\"將返回FALSE；\"NOT（FALSE（））\"將返回TRUE。',a:'返回某個邏輯值的相反值-\"NOT（TRUE（））\"將返回FALSE；\"NOT（FALSE（））\"將返回TRUE。',p:[{name:\"logical\",detail:\"計算結果為TRUE或FALSE的任何值或運算式。\"}]},TRUE:{d:\"返回邏輯值 TRUE。\",a:\"返回邏輯值 TRUE。\",p:[]},FALSE:{d:\"返回邏輯值 FALSE。\",a:\"返回邏輯值 FALSE。\",p:[]},AND:{d:\"所有參數的計算結果為TRUE時,返回TRUE；只要有一個參數的計算結果為FALSE,即返回FALSE。\",a:\"所有參數的計算結果為TRUE時,返回TRUE；只要有一個參數的計算結果為FALSE,即返回FALSE。\",p:[{name:\"logical1\",detail:\"要測試的第一個條件,其計算結果可以為TRUE或FALSE。\"},{name:\"logical2,...\",detail:\"[可選] - 要測試的其他條件,其計算結果可以為TRUE或FALSE,最多可包含255個條件。\"}]},IFERROR:{d:\"如果第一個參數不是錯誤值,就返回第一個參數；否則,返回第二個參數。\",a:\"如果第一個參數不是錯誤值\",p:[{name:\"value\",detail:\"檢查是否存在錯誤的參數。\"},{name:\"value_if_error\",detail:\"公式的計算結果錯誤時返回的值。計算以下錯誤類型:#N/A、#VALUE！、#REF！、#DIV/0！、#NUM！、#NAME？或#NULL！。\"}]},IF:{d:\"當邏輯運算式的值為TRUE時返回一個值,而當其為FALSE時返回另一個值。\",a:\"當邏輯運算式的值為TRUE時返回一個值,而當其為FALSE時返回另一個值。\",p:[{name:\"logical_test\",detail:\"一個運算式或對包含運算式的儲存格的引用,該運算式代表某種邏輯值（即TRUE或FALSE）。\"},{name:\"value_if_true\",detail:\"當邏輯運算式為TRUE時的返回值。\"},{name:\"value_if_false\",detail:\"[可選 - 默認為空白] - 當邏輯運算式等於FALSE時的函數返回值。\"}]},OR:{d:\"只要有一個參數的計算結果為TRUE時,返回TRUE；所有參數的計算結果為FALSE,即返回FALSE。\",a:\"只要有一個參數的計算結果為TRUE時,返回TRUE；所有參數的計算結果為FALSE,即返回FALSE。\",p:[{name:\"logical1\",detail:\"要測試的第一個條件,其計算結果可以為TRUE或FALSE。\"},{name:\"邏輯運算式2\",detail:\"[可選] - 其他運算式或對包含運算式的儲存格的引用,這些運算式代表某種邏輯值（即TRUE或FALSE）或者可以強制轉換為邏輯值。\"}]},NE:{d:'如果指定的值不相等,則返回\"TRUE\"；否則返回\"FALSE\"。相當於\"<>\"運算子。',a:'如果指定的值不相等,則返回\"TRUE\"；否則返回\"FALSE\"。相當於\"<>\"運算子。',p:[{name:\"value1\",detail:\"第一個值。\"},{name:\"value2\",detail:\"要檢查是否與 value1 不相等的值。\"}]},EQ:{d:'如果指定的值相等,則返回\"TRUE\"；否則返回\"FALSE\"。相當於\"=\"運算子。',a:'如果指定的值相等,則返回\"TRUE\"；否則返回\"FALSE\"。相當於\"=\"運算子。',p:[{name:\"value1\",detail:\"第一個值。\"},{name:\"value2\",detail:\"要檢查是否與value1相等的值。\"}]},GT:{d:!1,a:!1,p:[{name:\"value1\",detail:\"要測試其是否大於 value2 的值。\"},{name:\"value2\",detail:\"第二個值。\"}]},GTE:{d:'如果第一個參數大於或等於第二個，則返回TRUE；否則返回FALSE。相當於\">=\"運算子。',a:'如果第一個參數大於或等於第二個，則返回TRUE；否則返回FALSE。相當於\">=\"運算子。',p:[{name:\"value1\",detail:\"要测试其是否大于等于 value2 的值。\"},{name:\"value2\",detail:\"第二個值。\"}]},LT:{d:'如果第一個參數嚴格小於第二個，則返回TRUE；否則返回FALSE。相當於\"<\"運算子。',a:'如果第一個參數嚴格小於第二個，則返回TRUE；否則返回FALSE。相當於\"<\"運算子。',p:[{name:\"value1\",detail:\"要测试其是否小于 value2 的值。\"},{name:\"value2\",detail:\"第二個值。\"}]},LTE:{d:'如果第一個參數小於或等於第二個，則返回TRUE；否則返回FALSE。相當於\"<=\"運算子。',a:'如果第一個參數小於或等於第二個，則返回TRUE；否則返回FALSE。相當於\"<=\"運算子。',p:[{name:\"value1\",detail:\"要测试其是否小于等于 value2 的值。\"},{name:\"value2\",detail:\"第二個值。\"}]},ADD:{d:'返回兩個數值之和。相當於\"+\"運算子。',a:'返回兩個數值之和。相當於\"+\"運算子。',p:[{name:\"value1\",detail:\"第一個加數。\"},{name:\"value2\",detail:\"第二個加數。\"}]},MINUS:{d:'返回兩個數值之差。相當於\"-\"運算子。',a:'返回兩個數值之差。相當於\"-\"運算子。',p:[{name:\"value1\",detail:\"被減數,即要對其計减的數值。\"},{name:\"value2\",detail:\"減數,即要從value1中减除的數值。\"}]},MULTIPLY:{d:'返回兩個數的乘積。相當於\"*\"運算子。',a:'返回兩個數的乘積。相當於\"*\"運算子。',p:[{name:\"value1\",detail:\"第一個乘數。\"},{name:\"value2\",detail:\"第二個乘數。\"}]},DIVIDE:{d:\"返回兩個參數相除所得的結果。相當於`/`運算子。\",a:\"返回兩個參數相除所得的結果。相當於`/`運算子。\",p:[{name:\"value1\",detail:\"要被除的數值。\"},{name:\"value2\",detail:\"用於除其他數的數值。\\n\\n除數不得為0。\"}]},CONCAT:{d:\"返回兩個值的串聯。相當於`&`運算子。\",a:\"返回兩個值的串聯。相當於`&`運算子。\",p:[{name:\"value1\",detail:\"value2 將附於其後的值。\"},{name:\"value2\",detail:\"要附於 value1 之後的值。\"}]},UNARY_PERCENT:{d:'返回按百分比解釋的數值。例如,\"UNARY_PERCENT（100）\"等於1。',a:'返回按百分比解釋的數值。例如,\"UNARY_PERCENT（100）\"等於1。',p:[{name:\"number\",detail:\"要作為百分比解釋的數值。\"}]},CONCATENATE:{d:\"將兩個或多個文字字串聯接為一個字串。\",a:\"將兩個或多個文字字串聯接為一個字串。\",p:[{name:\"text1\",detail:\"初始字串。\"},{name:\"text2…\",detail:\"[可選] - 要按順序連接在一起的其他字串。\"}]},CODE:{d:\"返回所提供的字串中首字元的Unicode映射值。\",a:\"返回所提供的字串中首字元的Unicode映射值。\",p:[{name:\"text\",detail:\"要返回其首字元的Unicode映射值的字串。\"}]},CHAR:{d:\"按照當前Unicode編碼表,將數位轉換為對應的字元。\",a:\"按照當前Unicode編碼表,將數位轉換為對應的字元。\",p:[{name:\"number\",detail:\"介於1到255之間的數位。\"}]},ARABIC:{d:\"將羅馬數字轉換為阿拉伯數字。\",a:\"將羅馬數字轉換為阿拉伯數字。\",p:[{name:\"text\",detail:\"要轉換格式的羅馬數字\"}]},ROMAN:{d:\"將數位格式設定為羅馬數字形式。\",a:\"將數位格式設定為羅馬數字形式。\",p:[{name:\"number\",detail:\"要設定格式的數位,介於1到3999之間（包括這兩個數位）。\"}]},REGEXEXTRACT:{d:\"按照規則運算式選取匹配的子串。\",a:\"按照規則運算式選取匹配的子串。\",p:[{name:\"text\",detail:\"輸入文字。\"},{name:\"regular_expression\",detail:\"此函數將返回文字中符合此運算式的第一個子串。\"}]},REGEXMATCH:{d:\"判斷一段文字是否與規則運算式相匹配。\",a:\"判斷一段文字是否與規則運算式相匹配。\",p:[{name:\"text\",detail:\"要用規則運算式測試的文字。\"},{name:\"regular_expression\",detail:\"用來測試文字的規則運算式。\"}]},REGEXREPLACE:{d:\"使用規則運算式將文字字串中的一部分替換為其他文字字串。\",a:\"使用規則運算式將文字字串中的一部分替換為其他文字字串。\",p:[{name:\"text\",detail:\"要對其局部進行替換操作的文字。\"},{name:\"regular_expression\",detail:\"規則運算式。text中所有匹配的實例都將被替換。\"},{name:\"replacement\",detail:\"要插入到原有文字中的文字。\"}]},T:{d:\"返回文本格式的字串參數。\",a:\"返回文本格式的字串參數。\",p:[{name:\"value\",detail:\"要轉換為文字的參數。\\n\\n如果值為文字,T將返回值本身。\\n\\n如果值為指向包含文字的儲存格的引用,T將返回值中的內容。\\n\\n如果值為錯誤值或包含錯誤值的儲存格,T將返回該錯誤值。\\n\\n對於所有其他情况,T將返回空串。\"}]},FIXED:{d:\"以固定的小數位數設定數位的格式。\",a:\"以固定的小數位數設定數位的格式。\",p:[{name:\"number\",detail:\"要進行舍入並轉換為文字的數位。\"},{name:\"decimals\",detail:\"[可選-預設值為2] - 結果中要顯示的小數位數。\\n\\n如果數值的有效位數小於小數位數,將以零填充。如果數值的有效位數大於小數位數,則將其舍入到所需的小數位數而不是將其截斷。\"},{name:\"no_commas\",detail:\"[可選-預設值為FALSE（）] - 一個邏輯值,如果為TRUE（）,則會禁止FIXED在返回的文字中包含逗號。\"}]},FIND:{d:\"返回字串在文字中首次出現的位置（區分大小寫）。\",a:\"返回字串在文字中首次出現的位置（區分大小寫）。\",p:[{name:\"find_text\",detail:\"要在要蒐索的文字中查找的字串。\"},{name:\"within_text\",detail:\"要在其中蒐索蒐索字串的首次出現位置的文字。\"},{name:\"start_num\",detail:\"[可選-預設值為1] - 要在要蒐索的文字中開始蒐索的字元位置。\"}]},FINDB:{d:\"返回某個字串在文字中首次出現的位置（每個雙位元組字元占兩個位置）。\",a:\"返回某個字串在文字中首次出現的位置（每個雙位元組字元占兩個位置）。\",p:[{name:\"find_text\",detail:\"要在要蒐索的文字中查找的字串。\"},{name:\"within_text\",detail:\"要在其中蒐索蒐索字串的首次出現位置的文字。\"},{name:\"start_num\",detail:\"[可選-預設值為1] - 要在要蒐索的文字中開始蒐索的字元位置。\"}]},JOIN:{d:\"將一個或多個使用指定定界符的一維數組的元素連接到一起。\",a:\"將一個或多個使用指定定界符的一維數組的元素連接到一起。\",p:[{name:\"separator\",detail:\"置於相互連接的值之間的字元或字串。\\n\\n定界符可以為空,例如JOIN（,{1,2,3}）。\"},{name:\"array1\",detail:\"要使用定界符連接的一個或多個值。\"},{name:\"array2,…\",detail:\"[可選] - 要使用定界符連接的其他值或數組。\"}]},LEFT:{d:\"從文字字串的第一個字元開始返回指定個數的字元。\",a:\"從文字字串的第一個字元開始返回指定個數的字元。\",p:[{name:\"text\",detail:\"包含要選取的字元的文字字串。\"},{name:\"num_chars\",detail:\"[可選-預設值為1] - 指定要由LEFT選取的字元的數量。\"}]},RIGHT:{d:\"根據所指定的字元數返回文字字串中最後一個或多個字元。\",a:\"根據所指定的字元數返回文字字串中最後一個或多個字元。\",p:[{name:\"text\",detail:\"包含要選取的字元的文字字串。\"},{name:\"num_chars\",detail:\"[可選-預設值為1] - 指定要由RIGHT選取的字元的數量。\"}]},MID:{d:\"返回文字字串中從指定位置開始的特定數目的字元。\",a:\"返回文字字串中從指定位置開始的特定數目的字元。\",p:[{name:\"text\",detail:\"包含要選取的字元的文字字串。\"},{name:\"start_num\",detail:\"要從字串中開始選取的位置。字串中第一個字元的索引為1。\"},{name:\"num_chars\",detail:\"指定要由MID選取的字元的數量。\\n\\n如果選取的字元數尚不足選取長度個字元時就到達了字串尾部,則MID返回從開始位置到字串尾部的字元。\"}]},LEN:{d:\"返回給定字串的長度。\",a:\"返回給定字串的長度。\",p:[{name:\"text\",detail:\"要返回其長度的字串。\"}]},LENB:{d:\"返回文字中所包含的字元數。與雙位元組字元集（DBCS）一起使用。\",a:\"返回文字中所包含的字元數。與雙位元組字元集（DBCS）一起使用。\",p:[{name:\"text\",detail:\"要返回其位元組數的字串。（一個漢字為兩個位元組數）\"}]},LOWER:{d:\"將指定字串中的字母轉換為小寫。\",a:\"將指定字串中的字母轉換為小寫。\",p:[{name:\"text\",detail:\"要轉換為小寫的字串。\"}]},UPPER:{d:\"將指定字串中的字母轉換為大寫。\",a:\"將指定字串中的字母轉換為大寫。\",p:[{name:\"text\",detail:\"要轉換為大寫的字串。\"}]},EXACT:{d:\"比較兩個字串是否相同。\",a:\"比較兩個字串是否相同。\",p:[{name:\"text1\",detail:\"要比較的第一個字串。\"},{name:\"text2\",detail:\"要比較的第二個字串。\"}]},REPLACE:{d:\"將文字字串的一部分替換為其他文字字串。\",a:\"將文字字串的一部分替換為其他文字字串。\",p:[{name:\"old_text\",detail:\"要對其局部進行替換操作的文字。\"},{name:\"start_num\",detail:\"開始進行替換操作的位置（文字開頭位置為1）。\"},{name:\"num_chars\",detail:\"要在文字中替換的字元個數。\"},{name:\"new_text\",detail:\"要插入到原有文字中的文字。\"}]},REPT:{d:\"返回指定文字的多次重複。\",a:\"返回指定文字的多次重複。\",p:[{name:\"text\",detail:\"要重複的字元或字串。\"},{name:\"number_times\",detail:\"要重複的文字要在返回值中出現的次數。\\n\\n最大重複次數為100。即使重複次數大於100,REPT也僅將相應文字重複100次。\"}]},SEARCH:{d:\"返回字串在文字中首次出現的位置（不區分大小寫）。\",a:\"返回字串在文字中首次出現的位置（不區分大小寫）。\",p:[{name:\"find_text\",detail:\"要在要蒐索的文字中查找的字串。\"},{name:\"within_text\",detail:\"要在其中蒐索蒐索字串的首次出現位置的文字。\"},{name:\"start_num\",detail:\"[可選-預設值為1 ] - 要在要蒐索的文字中開始蒐索的字元位置。\"}]},SUBSTITUTE:{d:\"在文字字串中用new_text替換old_text。\",a:\"在文字字串中用new_text替換old_text。\",p:[{name:\"text\",detail:\"需要替換其中字元的文字,或對含有文字（需要替換其中字元）的儲存格的引用。\"},{name:\"old_text\",detail:\"需要替換的文字。\"},{name:\"new_text\",detail:\"用於替換old_text的文字。\"},{name:\"instance_num\",detail:\"[可選] - 指定要用new_text替換old_text的事件。如果指定了instance_num,則只有滿足要求的old_text被替換。否則,文字中出現的所有old_text都會更改為new_text。\"}]},CLEAN:{d:\"移除文字中的不可列印ASCII字元後將其返回。\",a:\"移除文字中的不可列印ASCII字元後將其返回。\",p:[{name:\"text\",detail:\"要移除其中不可列印字元的文字。\"}]},TEXT:{d:\"按照指定格式將數位轉換為文字。\",a:\"按照指定格式將數位轉換為文字。\",p:[{name:\"value\",detail:\"要設定格式的數位、日期或時間。\"},{name:\"format_text\",detail:'以括弧括起來的模式串,將按該模式設定數位的格式。\\n\\n0表示在數值位數少於格式指定的位數時必定以零填充。例如,TEXT（12.3,“000.00\"）將返回012.30。當數值的小數位數超過模式指定的小數位數時,四捨五入為指定的小數位數。例如,TEXT（12.305,“00.00\"）將返回12.31。\\n\\n#類似於0,但並不是在小數點的兩側都以零填充。例如,TEXT（12.3,“###.##\"）將返回12.3。'}]},TRIM:{d:\"删除指定字串前後的空格。\",a:\"删除指定字串前後的空格。\",p:[{name:\"text\",detail:\"要修剪的字串或指向包含該字串的儲存格的引用。\"}]},VALUE:{d:\"將可識別的任何日期、時間或數位格式的字串轉換為數位。\",a:\"將可識別的任何日期、時間或數位格式的字串轉換為數位。\",p:[{name:\"text\",detail:\"包含要轉換的值的字串。\"}]},PROPER:{d:\"將指定字串中每個單詞的首字母轉為大寫。\",a:\"將指定字串中每個單詞的首字母轉為大寫。\",p:[{name:\"text\",detail:\"要轉換的文字,其中每個單詞的首字母都將轉為大寫,所有其他字母則轉為小寫。\"}]},CONVERT:{d:\"將數位從一種度量系統轉換為另一種度量系統。\",a:\"將數位從一種度量系統轉換為另一種度量系統。\",p:[{name:\"number\",detail:\"是以from_unit為組織的需要進行轉換的數值。\"},{name:\"from_unit\",detail:\"是數值的組織。\"},{name:\"to_unit\",detail:\"是結果的組織。\"}]},SUMX2MY2:{d:\"返回兩數組中對應數值的平方差之和。\",a:\"返回兩數組中對應數值的平方差之和。\",p:[{name:\"array_x\",detail:\"第一個數組或數值區域。\"},{name:\"array_y\",detail:\"第二個數組或數值區域。\"}]},SUMX2PY2:{d:\"返回兩數組中對應數值的平方和之和。\",a:\"返回兩數組中對應數值的平方和之和。\",p:[{name:\"array_x\",detail:\"第一個數組或數值區域。\"},{name:\"array_y\",detail:\"第二個數組或數值區域。\"}]},SUMXMY2:{d:\"返回兩數組中對應數值之差的平方和。\",a:\"返回兩數組中對應數值之差的平方和。\",p:[{name:\"array_x\",detail:\"第一個數組或數值區域。\"},{name:\"array_y\",detail:\"第二個數組或數值區域。\"}]},TRANSPOSE:{d:\"將數組或儲存格範圍的行列轉置。\",a:\"將數組或儲存格範圍的行列轉置。\",p:[{name:\"array\",detail:\"要將其行列互換的數組或範圍。\"}]},TREND:{d:\"返回線性趨勢值。\",a:\"返回線性趨勢值。\",p:[{name:\"known_y\",detail:\"關係運算式y = mx + b 中已知的y值集合。\\n\\n如果known_y為二維陣列或範圍,則known_x的維數必須與之相同,或者省略此參數。\\n\\n如果known_y為一維數組或範圍,known_x則可代表二維陣列或範圍中的多個引數。也就是說,如果known_y為單行,則將known_x中的每行解釋為各自獨立的值,類似情况也適用於known_y為單列的情况。\"},{name:\"known_x\",detail:\"[可選-默認該數組為{1,2,3,…},其大小與known_y相同] -關係運算式y = mx + b 中已知的可選x值集合。\\n\\n如果known_y為一維數組或範圍,known_x則可代表二維陣列或範圍中的多個引數。也就是說,如果known_y為單行,則將known_x中的每行解釋為各自獨立的值,類似情况也適用於known_y為單列的情况。\"},{name:\"new_x\",detail:\"[可選 - 默認與known_x相同] - 需要函數TREND返回對應y值的新x值。\"},{name:\"const\",detail:\"[可選 - 預設值為TRUE（）] - 一個邏輯值,用於指定是否將常數b強制設為0。\\n\\nTRUE（）表示b將按正常計算；\\n\\nFALSE（）表示b將被設為0（零）,m 將被調整以使y = mx。\"}]},FREQUENCY:{d:\"計算數值在某個區域內的出現頻率,然後返回一個垂直數組。\",a:\"計算數值在某個區域內的出現頻率,然後返回一個垂直數組。\",p:[{name:\"data_array\",detail:\"要對其頻率進行計數的一組數值或對這組數值的引用。\"},{name:\"bins_array\",detail:\"要將data_array中的值插入到的間隔數組或對間隔的引用。\\n\\n為清晰起見,應將類別排序,但如果未排序,FREQUENCY會在內部對這些指定的值進行排序並返回正確結果。\"}]},GROWTH:{d:\"使用現有數據計算預測的指數等比。\",a:\"使用現有數據計算預測的指數等比。\",p:[{name:\"known_y\",detail:\"關係運算式y = b*m^x 中已知的y值集合。\\n\\n如果已知數據_y為二維陣列或範圍,則已知數據_x的維數必須與之相同,或者省略此參數。\\n\\n如果已知數據_y為一維數組或範圍,已知數據_x則可代表二維陣列或範圍中的多個引數。也就是說,如果已知數據_y為單行,則將已知數據_x中的每行解釋為各自獨立的值,類似情况也適用於已知數據_y為單列的情况。\"},{name:\"known_x\",detail:\"[可選 - 默認該數組為{1,2,3,…},其大小與known_y相同] - 關係運算式y = b*m^x 中已知的可選x值集合。\\n\\n如果已知數據_y為一維數組或範圍,已知數據_x則可代表二維陣列或範圍中的多個引數。也就是說,如果已知數據_y為單行,則將已知數據_x中的每行解釋為各自獨立的值,類似情况也適用於已知數據_y為單列的情况。\"},{name:\"new_x\",detail:\"[可選 - 默認與known_x相同] - 需要函數GROWTH返回對應y值的新x值。\"},{name:\"const\",detail:\"[可選 - 預設值為TRUE（）] - 一個邏輯值,用於指定是否將常數b強制設為1。\\n\\nTRUE（）表示b將按正常計算；\\n\\nFALSE（）表示b將被設為1,m將被調整以使y = m^x。\"}]},LINEST:{d:\"可通過使用最小二乘法計算與現有數據最佳擬合的直線,來計算某直線的統計值,然後返回描述此直線的數組。\",a:\"可通過使用最小二乘法計算與現有數據最佳擬合的直線,來計算某直線的統計值,然後返回描述此直線的數組。\",p:[{name:\"known_y\",detail:\"關係運算式y = mx + b 中已知的y值集合。\\n\\n如果known_y為二維陣列或範圍,則known_x的維數必須與之相同,或者省略此參數。\\n\\n如果known_y為一維數組或範圍,known_x則可代表二維陣列或範圍中的多個引數。也就是說,如果known_y為單行,則將known_x中的每行解釋為各自獨立的值,類似情况也適用於known_y為單列的情况。\"},{name:\"known_x\",detail:\"[可選 - 默認該數組為{1,2,3,…},其大小與known_y相同] - 關係運算式y = mx + b中已知的可選x值集合。\\n\\n如果known_y為一維數組或範圍,known_x則可代表二維陣列或範圍中的多個引數。也就是說,如果known_y為單行,則將known_x中的每行解釋為各自獨立的值,類似情况也適用於known_y為單列的情况。\"},{name:\"const\",detail:\"[可選 - 預設值為TRUE（）] - 一個邏輯值,用於指定是否將常數b強制設為0。\\n\\nTRUE（）表示b將按正常計算；\\n\\nFALSE（）表示b將被設為0（零）,m將被調整以使y = mx。\"},{name:\"stats\",detail:\"[可選 - 預設值為FALSE（）] - 一個邏輯值,用於指定是否返回附加回歸統計值。\\n\\n如果詳細為TRUE,除了對應於每個引數的一組線性係數和y截距之外,LINEST還返回以下資訊:\\n\\n每項係數和截距的標準誤差、\\n\\n限定係數（介於0和1之間,1表示完全相關）、\\n\\n因變數值的標准誤差、\\n\\nF統計或F觀測值,訓示所觀測到的因變數和引數變數之間的關係是隨機的還是線性的、\\n\\n自由度,用於在參照錶中查找F統計值以估算可信度、\\n\\n回歸平方和,以及\\n\\n殘差平方和。\"}]},LOGEST:{d:\"在回歸分析中,計算最符合數據的指數回歸擬合曲線,並返回描述該曲線的數值數組。\",a:\"在回歸分析中,計算最符合數據的指數回歸擬合曲線,並返回描述該曲線的數值數組。\",p:[{name:\"known_y\",detail:\"關係運算式y = mx + b 中已知的y值集合。\\n\\n如果known_y為二維陣列或範圍,則known_x的維數必須與之相同,或者省略此參數。\\n\\n如果known_y為一維數組或範圍,known_x則可代表二維陣列或範圍中的多個引數。也就是說,如果known_y為單行,則將known_x中的每行解釋為各自獨立的值,類似情况也適用於known_y為單列的情况。\"},{name:\"known_x\",detail:\"[可選 - 默認該數組為{1,2,3,…},其大小與known_y相同] - 關係運算式y = mx + b中已知的可選x值集合。\\n\\n如果known_y為一維數組或範圍,known_x則可代表二維陣列或範圍中的多個引數。也就是說,如果known_y為單行,則將known_x中的每行解釋為各自獨立的值,類似情况也適用於known_y為單列的情况。\"},{name:\"const\",detail:\"[可選 - 預設值為TRUE（）] - 一個邏輯值,用於指定是否將常數b強制設為0。\\n\\nTRUE（）表示b將按正常計算；\\n\\nFALSE（）表示b將被設為0（零）,m將被調整以使y = mx。\"},{name:\"stats\",detail:\"[可選 - 預設值為FALSE（）] - 一個邏輯值,用於指定是否返回附加回歸統計值。\\n\\n如果詳細為TRUE,則除了為每個引數和係數b返回一組指數值之外,LOGEST還將返回以下數據:\\n\\n每項指數和係數的標準誤差、\\n\\n限定係數（介於0和1之間,1表示完全相關）、\\n\\n因變數值的標准誤差、\\n\\nF統計或F觀測值,訓示所觀測到的因變數和引數之間的關係是隨機的還是指數的、\\n\\n自由度-用於在參照錶中查找F統計值以估算可信度、\\n\\n回歸平方和,以及\\n\\n殘差平方和。\"}]},MDETERM:{d:\"返回一個數組的矩陣行列式的值。\",a:\"返回一個數組的矩陣行列式的值。\",p:[{name:\"array\",detail:\"行數和列數相等的數值數組。\"}]},MINVERSE:{d:\"返回數組中存儲的矩陣的逆矩陣。\",a:\"返回數組中存儲的矩陣的逆矩陣。\",p:[{name:\"array\",detail:\"行數和列數相等的數值數組。\"}]},MMULT:{d:\"返回兩個數組的矩陣乘積。結果矩陣的行數與array1的行數相同,矩陣的列數與array2的列數相同。\",a:\"返回兩個數組的矩陣乘積。結果矩陣的行數與array1的行數相同,矩陣的列數與array2的列數相同。\",p:[{name:\"array1\",detail:\"要進行矩陣乘法運算的第一個矩陣數組。\\n\\narray1列數必須與array2的行數相同\"},{name:\"array2\",detail:\"要進行矩陣乘法運算的第二個矩陣數組。\\n\\narray2的行數必須與array1列數相同\"}]},SUMPRODUCT:{d:\"在給定的幾組數組中,將數組間對應的元素相乘,並返回乘積之和。\",a:\"在給定的幾組數組中,將數組間對應的元素相乘,並返回乘積之和。\",p:[{name:\"array1\",detail:\"其相應元素需要進行相乘並求和的第一個數組參數。\"},{name:\"array2\",detail:\"[可選] - 其相應元素需要進行相乘並求和的其它數組參數。\"}]},ISFORMULA:{d:\"檢查公式是否位於引用的儲存格中。\",a:\"檢查公式是否位於引用的儲存格中。\",p:[{name:\"cell\",detail:\"要檢查是否存在公式的儲存格。\\n\\n如果 cell 為包含公式的儲存格,則 ISFORMULA 將返回TRUE。如果 cell 為相應儲存格範圍,則當該範圍內的首個儲存格包含公式時,系統會返回TRUE。如果是任何其他值,系統都將返回FALSE。\"}]},CELL:{d:\"返回有關儲存格的格式、位置或內容的資訊。\",a:\"返回有關儲存格的格式、位置或內容的資訊。\",p:[{name:\"info_type\",detail:\"一個文字值,指定要返回的儲存格資訊的類型。\"},{name:\"reference\",detail:\"需要其相關資訊的儲存格。\"}]},NA:{d:\"返回錯誤值#N/A。\",a:\"返回錯誤值#N/A。\",p:[]},ERROR_TYPE:{d:\"返回與其他儲存格中的錯誤值相對應的數位。\",a:\"返回與其他儲存格中的錯誤值相對應的數位。\",p:[{name:\"error_val\",detail:\"用於查找錯誤號的儲存格,雖然您也可以直接提供錯誤值。\"}]},ISBLANK:{d:\"檢查所引用的儲存格是否為空。\",a:\"檢查所引用的儲存格是否為空。\",p:[{name:\"value\",detail:\"對要檢查其是否為空的儲存格的引用。\\n\\n如果是空儲存格,則TRUE；否則返回FALSE。\"}]},ISERR:{d:\"檢查某個值是否為#N/A以外的錯誤值。\",a:\"檢查某個值是否為#N/A以外的錯誤值。\",p:[{name:\"value\",detail:\"要驗證其是否為#N/A以外的錯誤類型的值。\\n\\n如果值是除#N/A之外的任何錯誤（包括#DIV/0！、#NAME？、#NULL！、#NUM！、#VALUE！和#REF！）,ISERR將返回TRUE。\"}]},ISERROR:{d:\"檢查某個值是否為錯誤值。\",a:\"檢查某個值是否為錯誤值。\",p:[{name:\"value\",detail:\"要驗證其是否為錯誤類型的值。\\n\\n只要值是某種錯誤值（包括#DIV/0！、#N/A、#NAME？、#NULL！、#NUM！、#VALUE！和#REF！）,ISERROR就會返回TRUE。\"}]},ISLOGICAL:{d:\"檢查某個值是TRUE還是FALSE。\",a:\"檢查某個值是TRUE還是FALSE。\",p:[{name:\"value\",detail:\"要驗證其為邏輯 TRUE 還是邏輯 FALSE 的值。\\n\\n*如果值為TRUE或FALSE,或為指向值為TRUE或FALSE的儲存格的引用,ISLOGICAL將返回TRUE。\"}]},ISNA:{d:\"檢查某個值是否為錯誤值#N/A。\",a:\"檢查某個值是否為錯誤值#N/A。\",p:[{name:\"value\",detail:\"要與錯誤值#N/A進行比較的值。\\n\\n*如果值為#N/A或指向包含#N/A的儲存格的引用,則ISNA將返回TRUE,否則返回FALSE。\"}]},ISNONTEXT:{d:\"檢查某個值是否為非文字。\",a:\"檢查某個值是否為非文字。\",p:[{name:\"value\",detail:\"要檢查的文字。\\n\\n*如果參數為文字值或指向包含文字的儲存格的引用,ISNONTEXT將返回FALSE,否則返回TRUE。\\n\\n當值為指向空儲存格的引用時,ISNONTEXT會返回TRUE。\\n\\n當值為空字串時,ISNONTEXT將返回FALSE,因為空串被視作文字。\"}]},ISNUMBER:{d:\"檢查某個值是否為數位。\",a:\"檢查某個值是否為數位。\",p:[{name:\"value\",detail:\"要驗證其是否為數位的值。\\n\\n*如果參數為數位或指向內容為數位值的儲存格的引用,ISNUMBER將返回TRUE,否則返回FALSE。\"}]},ISREF:{d:\"檢查某個值是否為有效的儲存格引用。\",a:\"檢查某個值是否為有效的儲存格引用。\",p:[{name:\"value\",detail:\"要驗證其是否為儲存格引用的值。\\n\\n*如果參數是有效的儲存格引用,ISREF將返回TRUE,否則返回FALSE。\"}]},ISTEXT:{d:\"檢查某個值是否為文字。\",a:\"檢查某個值是否為文字。\",p:[{name:\"value\",detail:\"要驗證其是否為文字的值。\\n\\n如果參數為文字值或指向包含文字值的儲存格的引用,ISTEXT將返回TRUE,否則返回FALSE。\"}]},TYPE:{d:\"返回數值的類型。\",a:\"返回數值的類型。\",p:[{name:\"value\",detail:\"要確定其類型的數據。\\n\\n數位返回1；\\n\\n文字返回2；\\n\\n邏輯值返回4；\\n\\n錯誤值返回16；\\n\\n數組返回64；\"}]},N:{d:\"返回轉化為數值後的值。\",a:\"返回轉化為數值後的值。\",p:[{name:\"value\",detail:\"要轉換為數位的參數。\\n\\n如果值為數位,則返回該數位。\\n\\n如果值為日期,則返回該日期的序號。\\n\\n如果值為TRUE,則返回1。\\n\\n如果值為FALSE,則返回0。\\n\\n如果值為錯誤值,則返回錯誤值。\\n\\n如果值為其他值,則返回0。\"}]},TO_DATE:{d:\"將指定的數位轉換為日期。\",a:\"將指定的數位轉換為日期。\",p:[{name:\"value\",detail:\"要轉換為日期的參數或其儲存格引用。\\n\\n如果值為數位或指向內容為數值的儲存格的引用,TO_DATE會將值轉換為相應的日期並返回,值代表從十二月30日到對應的日期之間的天數,\\n\\n負值表示對應的日期在十二月30日之前,而小數值則代表一天中從午夜算起的時間。\\n如果值不是數位或指向內容為數值的儲存格的引用,則TO_DATE將在不做任何修改的情况下返回值。\"}]},TO_PURE_NUMBER:{d:\"將給定的日期/時間、百分比、貨幣金額或其他格式的數值轉換為不帶格式的純數位。\",a:\"將給定的日期/時間、百分比、貨幣金額或其他格式的數值轉換為不帶格式的純數位。\",p:[{name:\"value\",detail:\"要轉換為純數位的參數或其儲存格引用。\\n\\n如果值為數位或指向包含數值的儲存格的引用,TO_PURE_NUMBER將以不帶任何格式與解釋的形式返回值。\\n\\n如果值不是數位或指向內容為數值的儲存格的引用,則TO_PERCENT將在不做任何修改的情况下返回值。\"}]},TO_TEXT:{d:\"將給定的數位值轉換為文本格式。\",a:\"將給定的數位值轉換為文本格式。\",p:[{name:\"value\",detail:\"要轉換為文字的參數或其儲存格引用。\\n\\n如果值為數位或指向包含數值的儲存格的引用,TO_TEXT將返回字串形式的值,並保持現有格式。即原為貨幣的仍為貨幣,原為十進位數的仍為十進位數,原為百分比的仍為百分比,原為日期的仍為日期。\\n\\n如果值不是數位或指向內容為數值的儲存格的引用,則TO_TEXT將在不做任何修改的情况下返回值。\"}]},TO_DOLLARS:{d:\"將指定的數位轉換為美元金額。\",a:\"將指定的數位轉換為美元金額。\",p:[{name:\"value\",detail:\"要轉換為美元金額的參數或其儲存格引用。\\n\\n如果值不是數位或指向內容為數值的儲存格的引用,則TO_DOLLARS將在不做任何修改的情况下返回值。\"}]},TO_PERCENT:{d:\"將指定的數位轉換為百分比。\",a:\"將指定的數位轉換為百分比。\",p:[{name:\"value\",detail:\"要轉換為百分比的參數或其儲存格引用。\\n\\n如果值為數位或指向包含數值的儲存格的引用,TO_PERCENT會以1 = 100%為標準,將值轉換為百分比。\\n\\n如果值不是數位或指向內容為數值的儲存格的引用,則TO_PERCENT將在不做任何修改的情况下返回值。\"}]},DGET:{d:\"使用SQL式査詢,從清單或資料庫的列中選取符合指定條件的單個值。\",a:\"使用SQL式査詢,從清單或資料庫的列中選取符合指定條件的單個值。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DMAX:{d:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的最大數位。\",a:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的最大數位。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DMIN:{d:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的最小數位。\",a:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的最小數位。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DAVERAGE:{d:\"使用SQL式査詢,對清單或資料庫中滿足指定條件的記錄欄位（列）中的數值求平均值。\",a:\"使用SQL式査詢,對清單或資料庫中滿足指定條件的記錄欄位（列）中的數值求平均值。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DCOUNT:{d:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中包含數位的儲存格的個數。\",a:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中包含數位的儲存格的個數。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DCOUNTA:{d:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的非空儲存格的個數。\",a:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的非空儲存格的個數。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DPRODUCT:{d:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的數值的乘積。\",a:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的數值的乘積。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DSTDEV:{d:\"使用SQL式査詢,返回利用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位作為一個樣本估算出的總體標準差。\",a:\"使用SQL式査詢,返回利用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位作為一個樣本估算出的總體標準差。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DSTDEVP:{d:\"使用SQL式査詢,返回利用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位作為樣本總體計算出的總體標準差。\",a:\"使用SQL式査詢,返回利用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位作為樣本總體計算出的總體標準差。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DSUM:{d:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的數位之和。\",a:\"使用SQL式査詢,返回列表或資料庫中滿足指定條件的記錄欄位（列）中的數位之和。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DVAR:{d:\"使用SQL式査詢,返回利用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位作為一個樣本估算出的總體方差。\",a:\"使用SQL式査詢,返回利用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位作為一個樣本估算出的總體方差。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},DVARP:{d:\"使用SQL式査詢,通過使用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位計算樣本總體的樣本總體方差。\",a:\"使用SQL式査詢,通過使用清單或資料庫中滿足指定條件的記錄欄位（列）中的數位計算樣本總體的樣本總體方差。\",p:[{name:\"database\",detail:\"構成清單或資料庫的儲存格區域,清單的第一行包含每一列的標籤。\"},{name:\"field\",detail:\"指定database中的哪一列包含要選取和用於計算的值。\\n\\nfield可以是與database第一行中某個列標題對應的文字標籤,也可以是指定相關列的數位索引,第一列的索引值為1。\"},{name:\"criteria\",detail:\"包含所指定條件的儲存格區域。計算之前將使用這些條件來過濾database中的值。\"}]},AGE_BY_IDCARD:{d:\"據中國身份證號計算出年齡。支持15位或18位身份證\",a:\"據中國身份證號計算出年齡\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"},{name:\"截止日期\",detail:\"年齡計算的截止日期或範圍,默認為當日。\"}]},SEX_BY_IDCARD:{d:\"根據中國身份證號計算出性別。支持15位或18位身份證\",a:\"根據身份證號得到性別。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"}]},BIRTHDAY_BY_IDCARD:{d:\"根據中國身份證號計算出生日。支持15位或18位身份證\",a:\"根據身份證號得到生日。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"},{name:\"生日格式\",detail:\"日期類型,默認0:[1900/01/01],1:[1900-01-01],2:[1900年1月1日]\"}]},PROVINCE_BY_IDCARD:{d:\"根據中國身份證號計算出籍貫的省份。支持15位或18位身份證\",a:\"根據身份證號得到籍貫的省份。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"}]},CITY_BY_IDCARD:{d:\"根據中國身份證號計算出籍貫的都市。支持15位或18位身份證\",a:\"根據身份證號得到籍貫的都市。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"}]},STAR_BY_IDCARD:{d:\"根據中國身份證號計算出星座。支持15位或18位身份證\",a:\"根據身份證號得到星座。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"}]},ANIMAL_BY_IDCARD:{d:\"根據中國身份證號計算出生肖（鼠、牛、虎、兔…）。支持15位或18位身份證\",a:\"根據身份證號得到生肖。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"}]},ISIDCARD:{d:\"驗證身份證的格式是否正確。支持15位或18位身份證\",a:\"驗證身份證格式正確性。\",p:[{name:\"身份證號\",detail:\"15位或者18位的身份證號或範圍。\"}]},DM_TEXT_CUTWORD:{d:\"文字分詞。把一連串文字折開為一系列單獨詞語\",a:\"中文文字分詞。\",p:[{name:\"文字\",detail:\"任意需要分詞的文字。\"},{name:\"分詞模式\",detail:\"默認為0[精確模式]，1[全模式]，2[搜尋引擎模式]。\"}]},DM_TEXT_TFIDF:{d:\"採用tf-idf算灋進行關鍵字選取。從一連串文字中識別關鍵字\",a:\"tf-idf關鍵字識別。\",p:[{name:\"文字\",detail:\"任意需要分詞的文字。\"},{name:\"關鍵字個數\",detail:\"算灋返回的關鍵字個數，默認20\"},{name:\"語料庫\",detail:\"選擇特定領域的語料庫，默認0[通用]，1[金融]，2[醫療]\"}]},DM_TEXT_TEXTRANK:{d:\"採用TextRank算灋進行關鍵字選取。從一連串文字中識別關鍵字\",a:\"TextRank關鍵字識別。\",p:[{name:\"文字\",detail:\"任意需要分詞的文字。\"},{name:\"關鍵字個數\",detail:\"算灋返回的關鍵字個數，默認20\"},{name:\"語料庫\",detail:\"選擇特定領域的語料庫，默認0[通用]，1[金融]，2[醫療]\"}]},DATA_CN_STOCK_CLOSE:{d:\"根據股票代碼和日期，返回A股對應股票收盤價。\",a:\"返回A股對應股票收盤價。\",p:[{name:\"股票代碼\",detail:\"6位股票代碼，必填項。\"},{name:\"日期\",detail:\"股票的交易日，默認為最新交易日\"},{name:\"複權除權\",detail:\"選擇股票的除權複權類型，默認0[前複權]，1[原始價格]，2[後複權]\"}]},DATA_CN_STOCK_OPEN:{d:\"根據股票代碼和日期，返回A股對應股票開盤價。\",a:\"返回A股對應股票開盤價。\",p:[{name:\"股票代碼\",detail:\"6位股票代碼，必填項。\"},{name:\"日期\",detail:\"股票的交易日，默認為最新交易日\"},{name:\"複權除權\",detail:\"選擇股票的除權複權類型，默認0[前複權]，1[原始價格]，2[後複權]\"}]},DATA_CN_STOCK_MAX:{d:\"根據股票代碼和日期，返回A股對應股票最高價。\",a:\"返回A股對應股票最高價。\",p:[{name:\"股票代碼\",detail:\"6位股票代碼，必填項。\"},{name:\"日期\",detail:\"股票的交易日，默認為最新交易日\"},{name:\"複權除權\",detail:\"選擇股票的除權複權類型，默認0[前複權]，1[原始價格]，2[後複權]\"}]},DATA_CN_STOCK_MIN:{d:\"根據股票代碼和日期，返回A股對應股票最低價。\",a:\"返回A股對應股票最低價。\",p:[{name:\"股票代碼\",detail:\"6位股票代碼，必填項。\"},{name:\"日期\",detail:\"股票的交易日,默认为最新交易日\"},{name:\"複權除權\",detail:\"選擇股票的除權複權類型，默認0[前複權]，1[原始價格]，2[後複權]\"}]},DATA_CN_STOCK_VOLUMN:{d:\"根據股票代碼和日期，返回A股對應股票成交量。\",a:\"返回A股對應股票成交量。\",p:[{name:\"股票代碼\",detail:\"6位股票代碼，必填項。\"},{name:\"日期\",detail:\"股票的交易日，默認為最新交易日\"},{name:\"複權除權\",detail:\"選擇股票的除權複權類型，默認0[前複權]，1[原始價格]，2[後複權]\"}]},DATA_CN_STOCK_AMOUNT:{d:\"根據股票代碼和日期，返回A股對應股票成交額。\",a:\"返回A股對應股票成交額。\",p:[{name:\"股票代碼\",detail:\"6位股票代碼，必填項。\"},{name:\"日期\",detail:\"股票的交易日，默認為最新交易日\"},{name:\"複權除權\",detail:\"選擇股票的除權複權類型，默認0[前複權]，1[原始價格]，2[後複權]\"}]},ISDATE:{d:\"驗證日期的格式是否正確。支持多種日期格式\",a:\"驗證日期格式正確性。\",p:[{name:\"日期\",detail:\"日期值,例如1990/01/01, 1990年1月1日等。\"}]},LINESPLINES:{d:\"生成嵌入在儲存格內的折線圖sparklines，用於描述數據的連續走勢\",a:\"生成儲存格折線圖\",p:[{name:\"數據範圍\",detail:\"數據範圍，數值才能被有效計算，例如A1:A20，{1,2,3,4,5}等。\"},{name:\"線條顏色\",detail:\"線圖的線條顏色，可以是否個範圍A1、色錶索引數值或者具體顏色值，設定為0或false則不顯示，支持regx、rgb、rgba等。默認#2ec7c9\"},{name:\"線條粗細\",detail:\"折線圖線段粗細，默認為1px\"},{name:\"輔助線\",detail:\"一條橫線，可以是min、max、avg、median、範圍或自定義數值，默認0無\"},{name:\"輔助線顏色\",detail:\"輔助線的顏色設定，同線條顏色配寘，默認#000\"},{name:\"最大值標識\",detail:\"標識線圖最大值，同線條顏色配寘，默認0不顯示\"},{name:\"最小值標識\",detail:\"標識線圖最小值，同線條顏色配寘，默認0不顯示\"},{name:\"標識大小\",detail:\"最大值和最小值的標識大小設定，默認為1.5\"}]},AREASPLINES:{d:\"生成嵌入在儲存格內的面積圖sparklines，一般用於描述數據的連續累積值走勢\",a:\"生成儲存格面積圖\",p:[{name:\"數據範圍\",detail:\"數據範圍，數值才能被有效計算，例如A1:A20，{1,2,3,4,5}等。\"},{name:\"線條顏色\",detail:\"線圖的線條顏色，可以是否個範圍A1、色錶索引數值或者具體顏色值，設定為0或false則不顯示，支持regx、rgb、rgba等。默認#2ec7c9\"},{name:\"填充顏色\",detail:\"形成面積圖，同線條顏色配寘，默認0不顯示\"},{name:\"線條粗細\",detail:\"折線圖線段粗細，默認為1px\"},{name:\"輔助線\",detail:\"一條橫線，可以是min、max、avg、median、範圍或自定義數值，默認0無\"},{name:\"輔助線顏色\",detail:\"輔助線的顏色設定，同線條顏色配寘，默認#000\"}]},COLUMNSPLINES:{d:\"生成嵌入在儲存格內的垂直柱狀圖sparklines，一般用於描述離散數據之間的大小情况\",a:\"生成儲存格垂直柱狀圖\",p:[{name:\"數據範圍\",detail:\"數據範圍，數值才能被有效計算，例如A1:A20，{1,2,3,4,5}等。\"},{name:\"柱條間隔\",detail:\"柱條之間的間隔距離，默認為1\"},{name:\"柱條顏色\",detail:\"線圖的線條顏色，可以是否個範圍A1、色錶索引數值或者具體顏色值，設定為0或false則不顯示，支持regx、rgb、rgba等。默認#fc5c5c\"},{name:\"負向柱條顏色\",detail:\"負向柱條顏色設定，代表負值的顏色，同柱條顏色配寘，默認#97b552\"},{name:\"最大值\",detail:\"柱圖最大值，用於規範柱圖長度，默認為自動計算false、auto、null\"},{name:\"色板\",detail:\"調色板可以單獨設定每個柱條的顏色，可設定多個，支持兩種格式:1顏色例如#000，代表第一個柱的顏色是黑色；2數值範圍:顏色，例如-2:#000表示數值為-2的柱為黑色，0:5:#000表示數值0-5的柱為黑色，默認為空\"}]},STACKCOLUMNSPLINES:{d:\"生成嵌入在儲存格內的累積垂直柱狀圖sparklines，一般用於描述離散數據多個維度的數值大小\",a:\"生成儲存格累積垂直柱狀圖\",p:[{name:\"數據範圍\",detail:\"數據範圍，數值才能被有效計算，例如A1:A20，{1,2,3,4,5}等。\"},{name:\"按列堆積\",detail:\"如果需要按行堆積則本項設為false或0，默認為是1\"},{name:\"柱條間隔\",detail:\"柱條之間的間隔距離，默認為1\"},{name:\"最大值\",detail:\"累積柱圖最大值，用於規範柱圖長度，默認為自動計算false、auto、null\"},{name:\"累積色板\",detail:\"調色板可以單獨設定每個維度的柱條顏色，可設定為A1:A10等範圍，默認為#2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BARSPLINES:{d:\"生成嵌入在儲存格內的橫向條形圖sparklines，一般用於描述離散數據之間的大小情况\",a:\"生成儲存格橫向條形圖\",p:[{name:\"數據範圍\",detail:\"數據範圍,數值才能被有效計算，例如A1:A20, {1,2,3,4,5}等。\"},{name:\"柱條間隔\",detail:\"柱條之間的間隔距離，默認為1\"},{name:\"柱條顏色\",detail:\"線圖的線條顏色，可以是否個範圍A1、色錶索引數值或者具體顏色值，設定為0或false則不顯示，支持regx、rgb、rgba等。默認#fc5c5c\"},{name:\"負向柱條顏色\",detail:\"負向柱條顏色設定，代表負值的顏色，同柱條顏色配寘，默認#97b552\"},{name:\"最大值\",detail:\"柱圖最大值，用於規範柱圖長度，默認為自動計算false、auto、null\"},{name:\"色板\",detail:\"調色板可以單獨設定每個柱條的顏色，可設定多個，支持兩種格式:1顏色例如#000，代表第一個柱的顏色是黑色；2數值範圍:顏色，例如-2:#000表示數值為-2的柱為黑色，0:5:#000表示數值0-5的柱為黑色，默認為空\"}]},STACKBARSPLINES:{d:\"生成嵌入在儲存格內的累積橫向條形圖sparklines，一般用於描述離散數據多個維度的數值大小\",a:\"生成儲存格累積橫向條形圖\",p:[{name:\"數據範圍\",detail:\"數據範圍,數值才能被有效計算，例如A1:A20, {1,2,3,4,5}等。\"},{name:\"按列堆積\",detail:\"如果需要按行堆積則本項設為false或0，默認為是1\"},{name:\"柱條間隔\",detail:\"柱條之間的間隔距離，默認為1\"},{name:\"最大值\",detail:\"累積柱圖最大值，用於規範柱圖長度，默認為自動計算false、auto、null\"},{name:\"累積色板\",detail:\"調色板可以單獨設定每個維度的柱條顏色，可設定為A1:A10等範圍，默認為#2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},DISCRETESPLINES:{d:\"生成嵌入在儲存格內的離散圖sparklines，一般用於描述離散數據走勢\",a:\"生成儲存格離散圖\",p:[{name:\"數據範圍\",detail:\"數據範圍,數值才能被有效計算，例如A1:A20, {1,2,3,4,5}等。\"},{name:\"分割閾值\",detail:\"離散圖柱形顏色的區分，例如:該值為0，則大於0為藍色，小於0為紅色，默認為0\"},{name:\"閾值以上顏色\",detail:\"線圖的線條顏色，可以是否個範圍A1、色錶索引數值或者具體顏色值，設定為0或false則不顯示，支持regx、rgb、rgba等。默認#2ec7c9\"},{name:\"閾值以下顏色\",detail:\"閾值以下柱條顏色設定，同閾值以上顏色，默認#fc5c5c\"}]},TRISTATESPLINES:{d:\"生成嵌入在儲存格內的三態圖sparklines，一般用於描述三種態勢的走勢例如勝負平\",a:\"生成儲存格三態圖\",p:[{name:\"數據範圍\",detail:\"數據範圍,數值才能被有效計算，例如A1:A20, {1,2,3,4,5}等。\"},{name:\"柱條間隔\",detail:\"柱條之間的間隔距離，默認為1\"},{name:\"柱條顏色\",detail:\"線圖的線條顏色，可以是否個範圍A1、色錶索引數值或者具體顏色值，設定為0或false則不顯示，支持regx、rgb、rgba等。默認#fc5c5c\"},{name:\"负向柱條顏色\",detail:\"負向柱條顏色設定，代表負值的顏色，同柱條顏色配寘，默認#97b552\"},{name:\"零值柱條顏色\",detail:\"零值柱條顏色設定，代表0值顏色，同柱條顏色配寘，默認#999\"},{name:\"色板\",detail:\"調色板可以單獨設定每個柱條的顏色，可設定多個，支持兩種格式:1顏色例如#000，代表第一個柱的顏色是黑色；2數值範圍:顏色，例如-2:#000表示數值為-2的柱為黑色，0-5:#000表示數值0-5的柱為黑色，默認為空\"}]},PIESPLINES:{d:\"生成嵌入在儲存格內的餅圖sparklines，一般用於描述數據占比\",a:\"生成儲存格餅圖\",p:[{name:\"數據範圍\",detail:\"數據範圍,數值才能被有效計算，例如A1:A20, {1,2,3,4,5}等。\"},{name:\"旋轉角度\",detail:\"餅圖的旋轉角度，默認為0\"},{name:\"餅圖邊框\",detail:\"餅圖邊框大小，默認為無0\"},{name:\"邊框顏色\",detail:\"餅圖邊框顏色，默認為#000\"},{name:\"餅圖色板\",detail:\"調色板可以設定切片的顏色，可設定為A1:A10等範圍，默認為#2ec7c9, #fc5c5c, #5ab1ef, #ffb980...\"}]},BOXSPLINES:{d:\"生成嵌入在儲存格內的箱線圖sparklines，一般用於描述數據集的統計分佈\",a:\"生成儲存格箱線圖\",p:[{name:\"數據範圍\",detail:\"數據範圍,數值才能被有效計算，例如A1:A20, {1,2,3,4,5}等。\"},{name:\"離群點比例\",detail:\"離群點的閾值範圍，如果為0或false則不顯示，默認為1.5倍\"},{name:\"目標點值\",detail:\"箱線圖上的目標值設定，默認為false不顯示\"},{name:\"數據點大小\",detail:\"目標點和離群點的半徑大小設定，默認為1.5\"}]},BULLETSPLINES:{d:\"生成嵌入在儲存格內的子彈圖sparklines，一般用於描述任務達成率\",a:\"生成儲存格子彈圖\",p:[{name:\"目標\",detail:\"達成的目標值，數值才能被有效計算，例如A1，100等。\"},{name:\"實際完成\",detail:\"現時完成值，數值才能被有效計算，例如A1，100等。\"},{name:\"對比值\",detail:\"對比值，例如超額、最低、獲獎底線等，數值才能被有效計算，例如A1，100等。可以設定最多9個對比值\"}]},COMPOSESPLINES:{d:\"支持多個類型的圖畫在同一個儲存格，每個參數代表一個sparklines圖\",a:\"組合sparklines圖到一個儲存格\",p:[{name:\"圖設定\",detail:\"sparklines圖設定，例如A1:A20，一個完成的餅圖、線圖設定等。\"}]},SORT:{d:\"返回數組中元素的排序數組。返回的數組與提供的數組參數形狀相同。\",a:\"返回數組中元素的排序數組。返回的數組與提供的數組參數形狀相同。\",p:[{name:\"array\",detail:\"要排序的範圍或數組。\"},{name:\"sort_index\",detail:\"[可選] - 表示要排序的行或列的數位。（默認row1/col1）\"},{name:\"sort_order\",detail:\"[可選] - 表示所需排序順序的數位；1表示昇冪（默認），-1表示降序。\"},{name:\"by_col\",detail:\"[可選] - 表示所需排序方向的邏輯值；按行排序為FALSE（）（默認），按列排序為TRUE（）。\"}]},FILTER:{d:\"基於一個布林（真/假）數組過濾一個數組。\",a:\"基於一個布林（真/假）數組過濾一個數組。\",p:[{name:\"array\",detail:\"要篩選的數組或範圍。\"},{name:\"include\",detail:\"布林數組，其高度或寬度與數組相同\"},{name:\"if_empty\",detail:\"[可選] - 如果包含數組中的所有值都為空（filter不返回任何值），則返回的值。\"}]},UNIQUE:{d:\"返回列表或區域中的唯一值的清單。\",a:\"返回列表或區域中的唯一值的清單。\",p:[{name:\"array\",detail:\"從其返回唯一值的數組或區域。\"},{name:\"by_col\",detail:\"[可選] - 邏輯值，訓示如何比較；按行= FALSE（）或省略；按列= TRUE（）。\"},{name:\"occurs_once\",detail:\"[可選] - 邏輯值，僅返回唯一值中出現一次= TRUE（）；包括所有唯一值= FALSE（）或省略。\"}]},RANDARRAY:{d:\"返回0到1之間的隨機數位數組。\",a:\"返回0到1之間的隨機數位數組\",p:[{name:\"rows\",detail:\"[可選] - 要返回的行數。\"},{name:\"cols\",detail:\"[可選] - 要返回的列數。\"}]},SEQUENCE:{d:\"生成數位序列的清單。\",a:\"生成數位序列的清單。\",p:[{name:\"rows\",detail:\"要返回的行數。\"},{name:\"cols\",detail:\"[可選] - 要返回的列數。\"},{name:\"start\",detail:\"[可選] - 序列中的第一個數位。\"},{name:\"step\",detail:\"[可選] -序列中每個序列值的增量。\"}]},EVALUATE:{d:\"對以文字表示的公式或者表達式求值，並返回結果。\",a:\"根據文字公式或者表達式求值。\",p:[{name:\"公式\",detail:\"公式或表達式\"}]},REMOTE:{d:\"Calls a function on a remote server\",a:\"Calls a function on a remote back end server/API.\",p:[{name:\"remote_expression\",detail:\"Formula\"}]}},toolbar:{undo:\"撤銷\",redo:\"重做\",paintFormat:\"格式刷\",currencyFormat:\"貨幣格式\",percentageFormat:\"百分比格式\",numberDecrease:\"减少小數位數\",numberIncrease:\"新增小數位數\",moreFormats:\"更多格式\",font:\"字體\",fontSize:\"字型大小\",bold:\"粗體（Ctrl+B）\",italic:\"斜體（Ctrl+I）\",strikethrough:\"删除線（Alt+Shift+5）\",underline:\"底線\",textColor:\"文字顏色\",chooseColor:\"顏色選擇\",resetColor:\"重置顏色\",customColor:\"自定義\",alternatingColors:\"交替顏色\",confirmColor:\"確定顏色\",cancelColor:\"取消\",collapse:\"收起\",fillColor:\"儲存格顏色\",border:\"邊框\",borderStyle:\"邊框類型\",mergeCell:\"合併儲存格\",chooseMergeType:\"選擇合併類型\",horizontalAlign:\"水准對齊\",verticalAlign:\"垂直對齊\",alignment:\"對齊管道\",textWrap:\"文字換行\",textWrapMode:\"換行管道\",textRotate:\"文字旋轉\",textRotateMode:\"旋轉管道\",freezeTopRow:\"凍結第一行\",sortAndFilter:\"排序和篩選\",findAndReplace:\"查找替換\",sum:\"求和\",autoSum:\"自動求和\",moreFunction:\"更多函數\",conditionalFormat:\"條件格式\",postil:\"批註\",pivotTable:\"數據透視錶\",chart:\"圖表\",screenshot:\"截圖\",splitColumn:\"分列\",insertImage:\"插入圖片\",exportXlsx:\"導出Xlsx\",insertLink:\"插入連結\",dataVerification:\"數據驗證\",protection:\"保護工作表內容\",clearText:\"清除顏色選擇\",noColorSelectedText:\"沒有顏色被選擇\",toolMore:\"更多\",toolLess:\"少於\",toolClose:\"收起\",toolMoreTip:\"更多功能\",moreOptions:\"更多選項\",cellFormat:\"設定儲存格格式\",print:\"列印\"},alternatingColors:{applyRange:\"應用範圍\",selectRange:\"選擇應用範圍\",header:\"頁眉\",footer:\"頁腳\",errorInfo:\"不能對多重選擇區域執行此操作,請選擇單個區域,然後再試\",textTitle:\"格式樣式\",custom:\"自定義\",close:\"關閉\",selectionTextColor:\"選擇文字顏色\",selectionCellColor:\"選擇儲存格顏色\",removeColor:\"移除交替顏色\",colorShow:\"顏色\",currentColor:\"當前顏色\",tipSelectRange:\"請選擇交替顏色應用範圍\",errorNoRange:\"您選擇的應用範圍不是選區！\",errorExistColors:\"您選擇的應用範圍已存在交替顏色且不屬於你要編輯的應用範圍！\"},button:{confirm:\"確定\",cancel:\"取消\",close:\"關閉\",update:\"Update\",delete:\"Delete\",insert:\"新建\",prevPage:\"上一頁\",nextPage:\"下一頁\",total:\"總共：\"},paint:{start:\"格式刷開啟\",end:\"ESC鍵退出\",tipSelectRange:\"請選擇需要複製格式的區域\",tipNotMulti:\"無法對多重選擇區域執行此操作\"},format:{moreCurrency:\"更多貨幣格式\",moreDateTime:\"更多日期與時間格式\",moreNumber:\"更多數位格式\",titleCurrency:\"貨幣格式\",decimalPlaces:\"小數位數\",titleDateTime:\"日期與時間格式\",titleNumber:\"數位格式\"},info:{detailUpdate:\"新打開\",detailSave:\"已恢復本地緩存\",row:\"行\",column:\"列\",loading:\"渲染中···\",copy:\"副本\",return:\"返回\",rename:\"重命名\",tips:\"表格重命名\",noName:\"無標題的試算表\",wait:\"待更新\",add:\"添加\",addLast:\"在底部添加\",backTop:\"回到頂部\",pageInfo:\"共${total}條,${totalPage}頁,當前已顯示${currentPage}頁\",nextPage:\"下一頁\",tipInputNumber:\"請輸入數位\",tipInputNumberLimit:\"新增範圍限制在1-100\",tipRowHeightLimit:\"行高必須在0 ~ 545之間\",tipColumnWidthLimit:\"列寬必須在0 ~ 2038之間\",pageInfoFull:\"共${total}條,${totalPage}頁,已顯示全部數據\"},currencyDetail:{RMB:\"人民幣\",USdollar:\"美元\",EUR:\"歐元\",GBP:\"英鎊\",HK:\"港元\",JPY:\"日元\",AlbanianLek:\"阿爾巴尼亞列克\",AlgerianDinar:\"阿爾及利亞第納爾\",Afghani:\"阿富汗尼\",ArgentinePeso:\"阿根廷比索\",UnitedArabEmiratesDirham:\"阿拉伯聯合大公國迪拉姆\",ArubanFlorin:\"阿魯巴弗羅林\",OmaniRial:\"阿曼裡亞爾\",Azerbaijanimanat:\"阿塞拜疆馬納特\",EgyptianPound:\"埃及鎊\",EthiopianBirr:\"衣索比亞比爾\",AngolaKwanza:\"安哥拉寬紮\",AustralianDollar:\"澳大利亞元\",Patacas:\"澳門元\",BarbadosDollar:\"巴巴多斯元\",PapuaNewGuineaKina:\"巴布亞新幾內亞基那\",BahamianDollar:\"巴哈馬元\",PakistanRupee:\"巴基斯坦盧比\",ParaguayanGuarani:\"巴拉圭瓜拉尼\",BahrainiDinar:\"巴林第納爾\",PanamanianBalboa:\"巴拿馬巴波亞\",Brazilianreal:\"巴西裏亞伊\",Belarusianruble:\"白俄羅斯盧布\",BermudianDollar:\"百慕大元\",BulgarianLev:\"保加利亞列弗\",IcelandKrona:\"冰島克朗\",BosniaHerzegovinaConvertibleMark:\"波黑可兌換馬克\",PolishZloty:\"波蘭茲羅提\",Boliviano:\"玻利維亞諾\",BelizeDollar:\"貝裡斯元\",BotswanaPula:\"波劄那普拉\",NotDannuzhamu:\"不丹努紮姆\",BurundiFranc:\"布隆迪法郎\",NorthKoreanWon:\"朝鮮圓\",DanishKrone:\"丹麥克朗\",EastCaribbeanDollar:\"東加勒比元\",DominicaPeso:\"多明尼加比索\",RussianRuble:\"俄國盧布\",EritreanNakfa:\"厄利垂亞納克法\",CFAfranc:\"非洲金融共同體法郎\",PhilippinePeso:\"菲律賓比索\",FijiDollar:\"斐濟元\",CapeVerdeEscudo:\"佛得角埃斯庫多\",FalklandIslandsPound:\"福克蘭群島鎊\",GambianDalasi:\"岡比亞達拉西\",Congolesefranc:\"剛果法郎\",ColombianPeso:\"哥倫比亞比索\",CostaRicanColon:\"哥斯大黎加科朗\",CubanPeso:\"古巴比索\",Cubanconvertiblepeso:\"古巴可兌換比索\",GuyanaDollar:\"蓋亞那元\",KazakhstanTenge:\"哈薩克共和國堅戈\",Haitiangourde:\"海地古德\",won:\"韓元\",NetherlandsAntillesGuilder:\"荷屬安的列斯盾\",Honduraslempiras:\"洪都拉斯拉倫皮拉\",DjiboutiFranc:\"吉布提法郎\",KyrgyzstanSom:\"吉爾吉斯斯坦索姆\",GuineaFranc:\"幾內亞法郎\",CanadianDollar:\"加拿大元\",GhanaianCedi:\"加納塞地\",Cambodianriel:\"高棉瑞爾\",CzechKoruna:\"捷克克朗\",ZimbabweDollar:\"辛巴威元\",QatariRiyal:\"卡塔爾裡亞爾\",CaymanIslandsDollar:\"開曼群島元\",Comorianfranc:\"科摩羅法郎\",KuwaitiDinar:\"科威特第納爾\",CroatianKuna:\"克羅地亞庫納\",KenyanShilling:\"肯雅先令\",LesothoLoti:\"萊索托洛蒂\",LaoKip:\"老撾基普\",LebanesePound:\"黎巴嫩鎊\",Lithuanianlitas:\"立陶宛立特\",LibyanDinar:\"利比亞第納爾\",LiberianDollar:\"利比亞元\",RwandaFranc:\"盧安達法郎\",RomanianLeu:\"羅馬尼亞列伊\",MalagasyAriary:\"馬拉加西阿裏亞裏\",MaldivianRufiyaa:\"瑪律地夫拉菲亞\",MalawiKwacha:\"馬拉威克瓦查\",MalaysianRinggit:\"馬來西亞林吉特\",MacedoniawearingDinar:\"馬其頓戴第納爾\",MauritiusRupee:\"模裡西斯盧比\",MauritanianOuguiya:\"茅利塔尼亞烏吉亞\",MongolianTugrik:\"蒙古圖格裡克\",BangladeshiTaka:\"孟加拉塔卡\",PeruvianNuevoSol:\"秘魯新索爾\",MyanmarKyat:\"緬甸開亞特\",MoldovanLeu:\"莫爾達瓦列伊\",MoroccanDirham:\"摩洛哥迪拉姆\",MozambiqueMetical:\"莫三比克梅蒂卡爾\",MexicanPeso:\"墨西哥比索\",NamibianDollar:\"納米比亞元\",SouthAfricanRand:\"南非蘭特\",SouthSudanesePound:\"南蘇丹鎊\",NicaraguaCordoba:\"尼加拉瓜科多巴\",NepaleseRupee:\"尼泊爾盧比\",NigerianNaira:\"奈及利亞奈拉\",NorwegianKrone:\"挪威克朗\",GeorgianLari:\"喬治亞拉瑞\",RMBOffshore:\"人民幣（離岸）\",SwedishKrona:\"瑞典克朗\",SwissFranc:\"瑞士法郎\",SerbianDinar:\"塞爾維亞第納爾\",SierraLeone:\"塞拉里昂利昂\",SeychellesRupee:\"塞舌耳盧比\",SaudiRiyal:\"沙特裡亞爾\",SaoTomeDobra:\"聖多美多布拉\",SaintHelenapound:\"聖赫倫那群島磅\",SriLankaRupee:\"斯里蘭卡盧比\",SwazilandLilangeni:\"史瓦濟蘭裏蘭吉尼\",SudanesePound:\"蘇丹鎊\",Surinamesedollar:\"蘇利南元\",SolomonIslandsDollar:\"所羅門群島元\",SomaliShilling:\"索馬利亞先令\",TajikistanSomoni:\"塔吉克共和國索莫尼\",PacificFranc:\"太平洋法郎\",ThaiBaht:\"泰國銖\",TanzanianShilling:\"坦尚尼亞先令\",TonganPaanga:\"東加潘加\",TrinidadandTobagoDollar:\"千裡達托貝哥元\",TunisianDinar:\"突尼斯第納爾\",TurkishLira:\"土耳其里拉\",VanuatuVatu:\"瓦努阿圖瓦圖\",GuatemalanQuetzal:\"瓜地馬拉格查爾\",CommissionBolivar:\"委內瑞拉博利瓦\",BruneiDollar:\"汶萊元\",UgandanShilling:\"烏干達先令\",UkrainianHryvnia:\"烏克蘭格裡夫尼亞\",UruguayanPeso:\"烏拉圭比索\",Uzbekistansom:\"烏茲別克蘇姆\",WesternSamoaTala:\"薩摩亞塔拉\",SingaporeDollar:\"新加坡元\",NT:\"新臺幣\",NewZealandDollar:\"新西蘭元\",HungarianForint:\"匈牙利福林\",SyrianPound:\"敘利亞鎊\",JamaicanDollar:\"牙買加元\",ArmenianDram:\"亞美尼亞德拉姆\",YemeniRial:\"葉門裡亞爾\",IraqiDinar:\"伊拉克第納爾\",IranianRial:\"伊朗裡亞爾\",NewIsraeliShekel:\"以色列新謝克爾\",IndianRupee:\"印度盧比\",IndonesianRupiah:\"印尼盧比\",JordanianDinar:\"約旦第納爾\",VND:\"越南盾\",ZambianKwacha:\"尚比亞克瓦查\",GibraltarPound:\"直布羅陀鎊\",ChileanPeso:\"智利比索\",CFAFrancBEAC:\"中非金融合作法郎\"},defaultFmt:[{text:\"自動\",value:\"General\",example:\"\"},{text:\"純文字\",value:\"@\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:\"數位\",value:\"##0.00\",example:\"1000.12\"},{text:\"百分比\",value:\"#0.00%\",example:\"12.21%\"},{text:\"科學計數\",value:\"0.00E+00\",example:\"1.01E+5\"},{text:\"\",value:\"split\",example:\"\"},{text:\"會計\",value:\"¥(0.00)\",example:\"¥(1200.09)\"},{text:\"萬元\",value:\"w\",example:\"1亿2000万2500\"},{text:\"貨幣\",value:\"¥0.00\",example:\"¥1200.09\"},{text:\"萬元2位小數\",value:\"w0.00\",example:\"2万2500.55\"},{text:\"\",value:\"split\",example:\"\"},{text:\"日期\",value:\"yyyy-MM-dd\",example:\"2017-11-29\"},{text:\"時間\",value:\"hh:mm AM/PM\",example:\"3:00 PM\"},{text:\"時間24H\",value:\"hh:mm\",example:\"15:00\"},{text:\"日期時間\",value:\"yyyy-MM-dd hh:mm AM/PM\",example:\"2017-11-29 3:00 PM\"},{text:\"日期時間24H\",value:\"yyyy-MM-dd hh:mm\",example:\"2017-11-29 15:00\"},{text:\"\",value:\"split\",example:\"\"},{text:\"自定義格式\",value:\"fmtOtherSelf\",example:\"more\"}],dateFmtList:[{name:\"1930-08-05\",value:\"yyyy-MM-dd\"},{name:\"1930/8/5\",value:\"yyyy/MM/dd\"},{name:\"1930年8月5日\",value:'yyyy\"年\"M\"月\"d\"日\"'},{name:\"08-05\",value:\"MM-dd\"},{name:\"8-5\",value:\"M-d\"},{name:\"8月5日\",value:'M\"月\"d\"日\"'},{name:\"13:30:30\",value:\"h:mm:ss\"},{name:\"13:30\",value:\"h:mm\"},{name:\"下午01:30\",value:\"上午/下午 hh:mm\"},{name:\"下午1:30\",value:\"上午/下午 h:mm\"},{name:\"下午1:30:30\",value:\"上午/下午 h:mm:ss\"},{name:\"08-05 下午01:30\",value:\"MM-dd 上午/下午 hh:mm\"}],fontFamily:{MicrosoftYaHei:\"Microsoft YaHei\"},fontarray:[\"Times New Roman\",\"Arial\",\"Tahoma\",\"Verdana\",\"微軟雅黑\",\"宋體\",\"黑體\",\"楷體\",\"仿宋\",\"新宋體\",\"華文新魏\",\"華文行楷\",\"華文隸書\"],fontjson:{\"times new roman\":0,arial:1,tahoma:2,verdana:3,\"微軟雅黑\":4,\"microsoft yahei\":4,\"宋體\":5,simsun:5,\"黑體\":6,simhei:6,\"楷體\":7,kaiti:7,\"仿宋\":8,fangsong:8,\"新宋體\":9,nsimsun:9,\"華文新魏\":10,stxinwei:10,\"華文行楷\":11,stxingkai:11,\"華文隸書\":12,stliti:12},border:{borderTop:\"上框線\",borderBottom:\"下框線\",borderLeft:\"左框線\",borderRight:\"右框線\",borderNone:\"無\",borderAll:\"所有\",borderOutside:\"外側\",borderInside:\"內側\",borderHorizontal:\"內側橫線\",borderVertical:\"內側分隔號\",borderColor:\"邊框顏色\",borderSize:\"邊框粗細\"},merge:{mergeAll:\"全部合併\",mergeV:\"垂直合併\",mergeH:\"水平合併\",mergeCancel:\"取消合併\",overlappingError:\"不能合併重疊區域\",partiallyError:\"無法對部分合併儲存格執行此操作\"},align:{left:\"左對齊\",center:\"中間對齊\",right:\"右對齊\",top:\"頂部對齊\",middle:\"居中對齊\",bottom:\"底部對齊\"},textWrap:{overflow:\"溢出\",wrap:\"自動換行\",clip:\"截斷\"},rotation:{none:\"無旋轉\",angleup:\"向上傾斜\",angledown:\"向下傾斜\",vertical:\"豎排文字\",rotationUp:\"向上90°\",rotationDown:\"向下90°\"},freezen:{default:\"凍結第一行\",freezenRow:\"凍結第一行\",freezenColumn:\"凍結第A列\",freezenRC:\"凍結行列\",freezenRowRange:\"凍結行到選區\",freezenColumnRange:\"凍結列到選區\",freezenRCRange:\"凍結行列到選區\",freezenCancel:\"取消凍結\",noSeletionError:\"没有選區\",rangeRCOverErrorTitle:\"凍結提醒\",rangeRCOverError:\"凍結窗格超過可見範圍，會導致無法正常操作，請重新設定凍結區域。\"},sort:{asc:\"昇冪\",desc:\"降序\",custom:\"自定義排序\",hasTitle:\"數據具有標題行\",sortBy:\"排序依據\",addOthers:\"添加其他排序列\",close:\"關閉\",confirm:\"排序\",columnOperation:\"列\",secondaryTitle:\"次要排序\",sortTitle:\"排序範圍\",sortRangeTitle:\"排序範圍從\",sortRangeTitleTo:\"到\",noRangeError:\"不能對多重選擇區域執行此操作,請選擇單個區域,然後再試\",mergeError:\"選區有合併儲存格,無法執行此操作！\",columnSortMergeError:\"列排序會擴展至整個表格選區，選區有合並單元格，無法執行此操作，請選擇功能欄排序功能！\"},filter:{filter:\"篩選\",clearFilter:\"清除篩選\",sortByAsc:\"以A-Z昇冪排列\",sortByDesc:\"以Z-A降序排列\",filterByColor:\"按顏色篩選\",filterByCondition:\"按條件過濾\",filterByValues:\"按值過濾\",filiterInputNone:\"無\",filiterInputTip:\"輸入篩選值\",filiterRangeStart:\"從\",filiterRangeStartTip:\"範圍開始\",filiterRangeEnd:\"到\",filiterRangeEndTip:\"範圍结束\",filterValueByAllBtn:\"全選\",filterValueByClearBtn:\"清除\",filterValueByInverseBtn:\"反選\",filterValueByTip:\"按照值進行篩選\",filterConform:\"確 認\",filterCancel:\"取 消\",conditionNone:\"無\",conditionCellIsNull:\"儲存格為空\",conditionCellNotNull:\"儲存格有數據\",conditionCellTextContain:\"文字包含\",conditionCellTextNotContain:\"文字不包含\",conditionCellTextStart:\"文字開頭為\",conditionCellTextEnd:\"文字結尾為\",conditionCellTextEqual:\"文字等於\",conditionCellDateEqual:\"日期等於\",conditionCellDateBefore:\"日期早於\",conditionCellDateAfter:\"日期晚於\",conditionCellGreater:\"大於\",conditionCellGreaterEqual:\"大於等於\",conditionCellLess:\"小於\",conditionCellLessEqual:\"小于等於\",conditionCellEqual:\"等於\",conditionCellNotEqual:\"不等於\",conditionCellBetween:\"介於\",conditionCellNotBetween:\"不在其中\",filiterMoreDataTip:\"數據量大！請稍後\",filiterMonthText:\"月\",filiterYearText:\"年\",filiterByColorTip:\"按儲存格顏色篩選\",filiterByTextColorTip:\"按儲存格字體顏色篩選\",filterContainerOneColorTip:\"本列僅包含一種顏色\",filterDateFormatTip:\"日期格式\",valueBlank:\"(空白)\",mergeError:\"篩選選區有合併儲存格,無法執行此操作！\"},rightclick:{copy:\"複製\",copyAs:\"複製為\",paste:\"粘貼\",insert:\"插入\",delete:\"删除\",deleteCell:\"删除儲存格\",deleteSelected:\"删除選中\",hide:\"隱藏\",hideSelected:\"隱藏選中\",showHide:\"顯示隱藏\",to:\"向\",left:\"左\",right:\"右\",top:\"上\",bottom:\"下\",moveLeft:\"左移\",moveUp:\"上移\",add:\"新增\",row:\"行\",column:\"列\",width:\"寬\",height:\"高\",number:\"數位\",confirm:\"確認\",orderAZ:\"A-Z順序排列\",orderZA:\"Z-A降序排列\",clearContent:\"清除內容\",matrix:\"矩陣操作選區\",sortSelection:\"排序選區\",filterSelection:\"篩選選區\",chartGeneration:\"圖表生成\",firstLineTitle:\"首行為標題\",untitled:\"無標題\",array1:\"一維數組\",array2:\"二維陣列\",array3:\"多元數組\",diagonal:\"對角線\",antiDiagonal:\"反對角線\",diagonalOffset:\"對角偏移\",offset:\"偏移量\",boolean:\"布林值\",flip:\"翻轉\",upAndDown:\"上下\",leftAndRight:\"左右\",clockwise:\"順時針\",counterclockwise:\"逆時針\",transpose:\"轉置\",matrixCalculation:\"矩陣計算\",plus:\"加\",minus:\"减\",multiply:\"乘\",divided:\"除\",power:\"次方\",root:\"次方根\",log:\"log\",delete0:\"删除兩端0值\",removeDuplicate:\"删除重複值\",byRow:\"按行\",byCol:\"按列\",generateNewMatrix:\"生成新矩陣\"},comment:{insert:\"新建批註\",edit:\"編輯批註\",delete:\"删除\",showOne:\"顯示/隱藏批註\",showAll:\"顯示/隱藏所有批註\"},screenshot:{screenshotTipNoSelection:\"請框選需要截圖的範圍\",screenshotTipTitle:\"提示！\",screenshotTipHasMerge:\"無法對合併儲存格執行此操作\",screenshotTipHasMulti:\"無法對多重選擇區域執行此操作\",screenshotTipSuccess:\"截取成功\",screenshotImageName:\"截圖\",downLoadClose:\"關閉\",downLoadCopy:\"複製到剪切板\",downLoadBtn:\"下載\",browserNotTip:\"下載功能IE瀏覽器不支持！\",rightclickTip:\"請在圖片上右鍵點擊'複製'\",successTip:\"已成功複製（如果粘貼失敗,請在圖片上右鍵點擊'複製圖片'）\"},splitText:{splitDelimiters:\"分割符號\",splitOther:\"其它\",splitContinueSymbol:\"連續分隔符號視為單個處理\",splitDataPreview:\"數據預覽\",splitTextTitle:\"文字分列\",splitConfirmToExe:\"此處已有數據,是否替換它？\",tipNoMulti:\"能對多重選擇區域執行此操作,請選擇單個區域,然後再試\",tipNoMultiColumn:\"一次只能轉換一列數據,選定區域可以有多行,但不能有多列,請在選定單列區域以後再試\"},imageText:{imageSetting:\"圖片設定\",close:\"關閉\",conventional:\"常規\",moveCell1:\"移動並調整儲存格大小\",moveCell2:\"移動並且不調整儲存格的大小\",moveCell3:\"不要移動儲存格並調整其大小\",fixedPos:\"固定位置\",border:\"邊框\",width:\"寬度\",radius:\"半徑\",style:\"樣式\",solid:\"實線\",dashed:\"虛線\",dotted:\"點狀\",double:\"雙線\",color:\"顏色\"},punctuation:{tab:\"Tab 鍵\",semicolon:\"分號\",comma:\"逗號\",space:\"空格\"},findAndReplace:{find:\"查找\",replace:\"替換\",goto:\"轉到\",location:\"定位條件\",formula:\"公式\",date:\"日期\",number:\"數位\",string:\"字元\",error:\"錯誤\",condition:\"條件格式\",rowSpan:\"間隔行\",columnSpan:\"間隔列\",locationExample:\"定位\",lessTwoRowTip:\"請選擇最少兩行\",lessTwoColumnTip:\"請選擇最少兩行\",findTextbox:\"查找内容\",replaceTextbox:\"替換內容\",regexTextbox:\"規則運算式匹配\",wholeTextbox:\"整詞匹配\",distinguishTextbox:\"區分大小寫匹配\",allReplaceBtn:\"全部替換\",replaceBtn:\"替換\",allFindBtn:\"查找全部\",findBtn:\"查找下一個\",noFindTip:\"沒有查找到該內容\",modeTip:\"該模式下不可進行此操作\",searchTargetSheet:\"工作表\",searchTargetCell:\"儲存格\",searchTargetValue:\"值\",searchInputTip:\"請輸入查找內容\",noReplceTip:\"沒有可替換的內容\",noMatchTip:\"找不到匹配項\",successTip:\"已經幫您蒐索並進行了${xlength}處替換\",locationConstant:\"常數\",locationFormula:\"公式\",locationDate:\"日期\",locationDigital:\"數位\",locationString:\"字元\",locationBool:\"邏輯值\",locationError:\"錯誤\",locationNull:\"空值\",locationCondition:\"條件格式\",locationRowSpan:\"間隔行\",locationColumnSpan:\"間隔列\",locationTiplessTwoRow:\"請選擇最少兩行\",locationTiplessTwoColumn:\"請選擇最少兩列\",locationTipNotFindCell:\"未找到儲存格\"},sheetconfig:{delete:\"删除\",copy:\"複製\",rename:\"重命名\",changeColor:\"更改顏色\",hide:\"隱藏\",unhide:\"取消隱藏\",moveLeft:\"向左移\",moveRight:\"向右移\",resetColor:\"重置顏色\",cancelText:\"取消\",chooseText:\"確定顏色\",tipNameRepeat:\"籤頁的名稱不能重複！請重新修改\",noMoreSheet:\"工作薄內至少含有一張可視工作表。若需删除選定的工作表,請先插入一張新工作表或顯示一張隱藏的工作表。。\",confirmDelete:\"是否删除\",redoDelete:\"可以通過Ctrl+Z撤銷删除\",noHide:\"不能隱藏,至少保留一個sheet標籤\",chartEditNoOpt:\"圖表編輯模式下不允許該操作！\",sheetNameSpecCharError:\"名稱不能包含:[ ] :  ? * / ' \\\"\",sheetNamecannotIsEmptyError:\"名稱不能為空\"},conditionformat:{conditionformat_greaterThan:\"條件格式——大於\",conditionformat_greaterThan_title:\"為大於以下值的儲存格設定格式\",conditionformat_lessThan:\"條件格式——小於\",conditionformat_lessThan_title:\"為小於以下值的儲存格設定格式\",conditionformat_betweenness:\"條件格式——介於\",conditionformat_betweenness_title:\"為介於以下值的儲存格設定格式\",conditionformat_equal:\"條件格式——等於\",conditionformat_equal_title:\"為等於以下值的儲存格設定格式\",conditionformat_textContains:\"條件格式——文字包含\",conditionformat_textContains_title:\"為包含以下文字的儲存格設定格式\",conditionformat_occurrenceDate:\"條件格式——發生日期\",conditionformat_occurrenceDate_title:\"為包含以下日期的儲存格設定格式\",conditionformat_duplicateValue:\"條件格式——重複值\",conditionformat_duplicateValue_title:\"為包含以下類型值的儲存格設定格式\",conditionformat_top10:\"條件格式——前10項\",conditionformat_top10_percent:\"條件格式——前10%\",conditionformat_top10_title:\"為值最大的那些儲存格設定格式\",conditionformat_last10:\"條件格式——最後10項\",conditionformat_last10_percent:\"條件格式——最後10%\",conditionformat_last10_title:\"為值最小的那些儲存格設定格式\",conditionformat_AboveAverage:\"條件格式——高於平均值\",conditionformat_AboveAverage_title:\"為高於平均值的儲存格設定格式\",conditionformat_SubAverage:\"條件格式——低於平均值\",conditionformat_SubAverage_title:\"為低於平均值的儲存格設定格式\",rule:\"規則\",newRule:\"新建規則\",editRule:\"編輯規則\",deleteRule:\"删除規則\",deleteCellRule:\"清除所選儲存格的規則\",deleteSheetRule:\"清除整個工作表的規則\",manageRules:\"管理規則\",showRules:\"顯示其格式規則\",highlightCellRules:\"突出顯示儲存格規則\",itemSelectionRules:\"項目選取規則\",conditionformatManageRules:\"條件格式規則管理器\",format:\"格式\",setFormat:\"設定格式\",setAs:\"設定為\",setAsByArea:\"針對選定區域,設定為\",applyRange:\"應用範圍\",selectRange:\"點擊選擇應用範圍\",selectRange_percent:\"所選範圍的百分比\",selectRange_average:\"選定範圍的平均值\",selectRange_value:\"選定範圍中的數值\",pleaseSelectRange:\"請選擇應用範圍\",selectDataRange:\"點擊選擇數據範圍\",selectCell:\"選擇儲存格\",pleaseSelectCell:\"請選擇儲存格\",pleaseSelectADate:\"請選擇日期\",pleaseEnterInteger:\"請輸入一個介於1和1000之間的整數\",onlySingleCell:\"只能對單個儲存格進行引用\",conditionValueCanOnly:\"條件值只能是數位或者單個儲存格\",ruleTypeItem1:\"基於各自值設定所有儲存格的格式\",ruleTypeItem2:\"只為包含以下內容的儲存格設定格式\",ruleTypeItem2_title:\"只為滿足以下條件的儲存格\",ruleTypeItem3:\"僅對排名靠前或靠後的數值設定格式\",ruleTypeItem3_title:\"為以下排名內的值\",ruleTypeItem4:\"僅對高於或低於平均值的數值設定格式\",ruleTypeItem4_title:\"為滿足以下條件的值\",ruleTypeItem5:\"僅對唯一值或重複值設定格式\",ruleTypeItem6:\"使用公式確定要設置格式的單元格\",formula:\"公式\",textColor:\"文字顏色\",cellColor:\"儲存格顏色\",confirm:\"確定\",confirmColor:\"確定顏色\",cancel:\"取消\",close:\"關閉\",clearColorSelect:\"清除顏色選擇\",sheet:\"錶\",currentSheet:\"當前工作表\",dataBar:\"數據條\",dataBarColor:\"數據條顏色\",gradientDataBar_1:\"藍-白漸變數據條\",gradientDataBar_2:\"綠-白漸變數據條\",gradientDataBar_3:\"紅-白漸變數據條\",gradientDataBar_4:\"柳丁-白漸變數據條\",gradientDataBar_5:\"淺藍-白漸變數據條\",gradientDataBar_6:\"紫-白漸變數據條\",solidColorDataBar_1:\"藍色數據條\",solidColorDataBar_2:\"綠色數據條\",solidColorDataBar_3:\"紅色數據條\",solidColorDataBar_4:\"橙色數據條\",solidColorDataBar_5:\"淺藍色數據條\",solidColorDataBar_6:\"紫色數據條\",colorGradation:\"色階\",colorGradation_1:\"綠-黃-紅色階\",colorGradation_2:\"紅-黃-綠色階\",colorGradation_3:\"綠-白-紅色階\",colorGradation_4:\"紅-白-綠色階\",colorGradation_5:\"藍-白-紅色階\",colorGradation_6:\"紅-白-藍色階\",colorGradation_7:\"白-紅色階\",colorGradation_8:\"紅-白色階\",colorGradation_9:\"綠-白色階\",colorGradation_10:\"白-綠色階\",colorGradation_11:\"綠-黃色階\",colorGradation_12:\"黃-綠色階\",icons:\"圖標集\",pleaseSelectIcon:\"請點擊選擇一組圖標:\",cellValue:\"儲存格值\",specificText:\"特定文字\",occurrence:\"發生日期\",greaterThan:\"大於\",lessThan:\"小於\",between:\"介於\",equal:\"等於\",in:\"和\",to:\"到\",between2:\"之間\",contain:\"包含\",textContains:\"文字包含\",duplicateValue:\"重複值\",uniqueValue:\"唯一值\",top:\"前\",top10:\"前10項\",top10_percent:\"前10%\",last:\"後\",last10:\"後10項\",last10_percent:\"後10%\",oneself:\"個\",above:\"高於\",aboveAverage:\"高於平均值\",below:\"低於\",belowAverage:\"低於平均值\",all:\"全部\",yesterday:\"昨天\",today:\"今天\",tomorrow:\"明天\",lastWeek:\"上周\",thisWeek:\"本周\",lastMonth:\"上月\",thisMonth:\"本月\",lastYear:\"去年\",thisYear:\"本年\",last7days:\"最近7天\",last30days:\"最近30天\",next7days:\"未來7天\",next30days:\"未來30天\",next60days:\"未來60天\",chooseRuleType:\"選擇規則類型\",editRuleDescription:\"編輯規則說明\",newFormatRule:\"新建格式規則\",editFormatRule:\"編輯格式規則\",formatStyle:\"格式樣式\",fillType:\"填充類型\",color:\"顏色\",twocolor:\"雙色\",tricolor:\"三色\",multicolor:\"彩色\",grayColor:\"灰色\",gradient:\"漸變\",solid:\"實心\",maxValue:\"最大值\",medianValue:\"中間值\",minValue:\"最小值\",direction:\"方向\",threeWayArrow:\"三向箭頭\",fourWayArrow:\"四向箭頭\",fiveWayArrow:\"五向箭頭\",threeTriangles:\"3個三角形\",shape:\"形狀\",threeColorTrafficLight:\"三色交通燈\",fourColorTrafficLight:\"四色交通燈\",threeSigns:\"三標誌\",greenRedBlackGradient:\"綠-紅-黑漸變\",rimless:\"無邊框\",bordered:\"有邊框\",mark:\"標記\",threeSymbols:\"三個符號\",tricolorFlag:\"三色旗\",circled:\"有圓圈\",noCircle:\"無圓圈\",grade:\"等級\",grade4:\"四等級\",grade5:\"五等級\",threeStars:\"3個星形\",fiveQuadrantDiagram:\"五象限圖\",fiveBoxes:\"5個框\"},insertLink:{linkText:\"文字\",linkType:\"連結類型\",external:\"外部連結\",internal:\"内部連結\",linkAddress:\"連結地址\",linkSheet:\"工作表\",linkCell:\"儲存格引用\",linkTooltip:\"提示\",placeholder1:\"請輸入網頁連結位址\",placeholder2:\"請輸入要引用的儲存格,例A1\",placeholder3:\"請輸入提示內容\",tooltipInfo1:\"請輸入有效的連結\",tooltipInfo2:\"請輸入正確的儲存格引用\"},dataVerification:{cellRange:\"儲存格範圍\",selectCellRange:\"點擊選擇儲存格範圍\",selectCellRange2:\"請選擇儲存格範圍\",verificationCondition:\"驗證條件\",allowMultiSelect:\"是否允許多選\",dropdown:\"下拉清單\",checkbox:\"核取方塊\",number:\"數位\",number_integer:\"數位-整數\",number_decimal:\"數位-小數\",text_content:\"文字-內容\",text_length:\"文字-長度\",date:\"日期\",validity:\"有效性\",placeholder1:\"請輸入選項,以英文逗號分隔,如1,2,3,4,5\",placeholder2:\"請輸入內容\",placeholder3:\"數值,如10\",placeholder4:\"請輸入指定的文字\",placeholder5:\"請輸入選中儲存格時顯示的提示語\",selected:\"選擇時\",notSelected:\"未選擇\",between:\"介於\",notBetween:\"不介於\",equal:\"等於\",notEqualTo:\"不等於\",moreThanThe:\"大於\",lessThan:\"小於\",greaterOrEqualTo:\"大於等於\",lessThanOrEqualTo:\"小於等於\",include:\"包括\",exclude:\"不包括\",earlierThan:\"早於\",noEarlierThan:\"不早於\",laterThan:\"晚於\",noLaterThan:\"不晚於\",identificationNumber:\"身份證號碼\",phoneNumber:\"手機號\",remote:\"自動遠程獲取選項\",prohibitInput:\"輸入數據無效時禁止輸入\",hintShow:\"選中儲存格時顯示提示語\",deleteVerification:\"删除驗證\",tooltipInfo1:\"下拉清單選項不可為空\",tooltipInfo2:\"核取方塊內容不可為空\",tooltipInfo3:\"輸入的值不是數值類型\",tooltipInfo4:\"數值2不能小於數值1\",tooltipInfo5:\"文字內容不能為空\",tooltipInfo6:\"輸入的值不是日期類型\",tooltipInfo7:\"日期2不能小於日期1\",textlengthInteger:\"文字長度必須是大於等於0的整數\"},formula:{sum:\"求和\",average:\"平均值\",count:\"計數\",max:\"最大值\",min:\"最小值\",ifGenerate:\"if公式生成器\",find:\"更多函數\",tipNotBelongToIf:\"該儲存格函數不屬於if公式!\",tipSelectCell:\"請選擇儲存格插入函數\",ifGenCompareValueTitle:\"比较值\",ifGenSelectCellTitle:\"點擊選擇儲存格\",ifGenRangeTitle:\"範圍\",ifGenRangeTo:\"至\",ifGenRangeEvaluate:\"範圍評估\",ifGenSelectRangeTitle:\"點擊選擇範圍\",ifGenCutWay:\"劃分管道\",ifGenCutSame:\"劃分值相同\",ifGenCutNpiece:\"劃分为N份\",ifGenCutCustom:\"自定義輸入\",ifGenCutConfirm:\"生成\",ifGenTipSelectCell:\"選擇儲存格\",ifGenTipSelectCellPlace:\"請選擇儲存格\",ifGenTipSelectRange:\"選擇單範圍\",ifGenTipSelectRangePlace:\"請選擇範圍\",ifGenTipNotNullValue:\"比較值不能為空!\",ifGenTipLableTitile:\"標籤\",ifGenTipRangeNotforNull:\"範圍不能為空!\",ifGenTipCutValueNotforNull:\"劃分值不能為空！\",ifGenTipNotGenCondition:\"沒有生成可用的條件！\"},formulaMore:{valueTitle:\"值\",tipSelectDataRange:\"選取數據範圍\",tipDataRangeTile:\"數據範圍\",findFunctionTitle:\"查找函數\",tipInputFunctionName:\"請輸入您要查找的函數名稱或函數功能的簡要描述\",Array:\"數組\",Database:\"資料來源\",Date:\"日期\",Engineering:\"工程計算\",Filter:\"篩檢程式\",Financial:\"財務\",luckysheet:\"Luckysheet內寘\",other:\"其它\",Logical:\"邏輯\",Lookup:\"查找\",Math:\"數學\",Operator:\"運算子\",Parser:\"轉換工具\",Statistical:\"統計\",Text:\"文字\",dataMining:\"資料挖掘\",selectFunctionTitle:\"選擇函數\",calculationResult:\"計算結果\",tipSuccessText:\"成功\",tipParamErrorText:\"參數類型錯誤\",helpClose:\"關閉\",helpCollapse:\"收起\",helpExample:\"示例\",helpAbstract:\"摘要\",execfunctionError:'提示\", \"公式存在錯誤',execfunctionSelfError:\"公式不可引用其本身的儲存格\",execfunctionSelfErrorResult:\"公式不可引用其本身的儲存格,會導致計算結果不準確\",allowRepeatText:\"可重複\",allowOptionText:\"可選\",selectCategory:\"或選擇類別\"},drag:{noMerge:\"無法對合併儲存格執行此操作\",affectPivot:\"無法對所選儲存格進行此更改,因為它會影響數據透視錶！\",noMulti:\"無法對多重選擇區域執行此操作,請選擇單個區域\",noPaste:\"無法在此處粘貼此內容,請選擇粘貼區域的一個儲存格,然後再次嘗試粘貼\",noPartMerge:\"無法對部分合併儲存格執行此操作\",inputCorrect:\"請輸入正確的數值\",notLessOne:\"行列數不能小於1\",offsetColumnLessZero:\"偏移列不能為負數！\",pasteMustKeybordAlert:\"Copy and paste in the Sheet: Ctrl + C to copy, Ctrl + V to paste, Ctrl + X to cut\",pasteMustKeybordAlertHTMLTitle:\"Copy and paste in the Sheet\",pasteMustKeybordAlertHTML:\"<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;to copy<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;to paste<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;to cut\"},paste:{warning:\"提示\",errorNotAllowMulti:\"不能對多重選擇區域執行此操作,請選擇單個區域,然後再試\",errorNotAllowMerged:\"不能对合并单元格做部分更改\"},pivotTable:{title:\"數據透視錶\",closePannel:\"關閉\",editRange:\"編輯範圍\",tipPivotFieldSelected:\"選擇需要添加到數據透視錶的欄位\",tipClearSelectedField:\"清除所有已選欄位\",btnClearSelectedField:\"清除\",btnFilter:\"篩選\",titleRow:\"行\",titleColumn:\"列\",titleValue:\"數值\",tipShowColumn:\"統計欄位顯示為列\",tipShowRow:\"統計欄位顯示為行\",titleSelectionDataRange:\"選取數據範圍\",titleDataRange:\"數據範圍\",valueSum:\"總計\",valueStatisticsSUM:\"求和\",valueStatisticsCOUNT:\"數值計數\",valueStatisticsCOUNTA:\"計數\",valueStatisticsCOUNTUNIQUE:\"去重計數\",valueStatisticsAVERAGE:\"平均值\",valueStatisticsMAX:\"最大值\",valueStatisticsMIN:\"最小值\",valueStatisticsMEDIAN:\"中位數\",valueStatisticsPRODUCT:\"乘積\",valueStatisticsSTDEV:\"標準差\",valueStatisticsSTDEVP:\"整體標準差\",valueStatisticslet:\"方差\",valueStatisticsVARP:\"整體方差\",errorNotAllowEdit:\"非編輯模式下禁止該操作!\",errorNotAllowMulti:\"不能對多重選擇區域執行此操作,請選擇單個區域,然後再試\",errorSelectRange:\"請選擇新建透視錶的區域\",errorIsDamage:\"此數據透視錶的源數據已損壞！\",errorNotAllowPivotData:\"不可選擇數據透視錶為源數據!\",errorSelectionRange:\"選擇失敗,輸入範圍錯誤！\",errorIncreaseRange:\"請擴大選擇的數據範圍!\",titleAddColumn:\"添加列到數據透視錶\",titleMoveColumn:\"移動該列到下方白框\",titleClearColumnFilter:\"清除該列的篩選條件\",titleFilterColumn:\"篩選該列\",titleSort:\"排序\",titleNoSort:\"無排序\",titleSortAsc:\"昇冪\",titleSortDesc:\"降序\",titleSortBy:\"排序依據\",titleShowSum:\"顯示總計\",titleStasticTrue:\"是\",titleStasticFalse:\"否\"},dropCell:{copyCell:\"複製儲存格\",sequence:\"填充序列\",onlyFormat:\"僅填充格式\",noFormat:\"不帶格式填充\",day:\"以天數填充\",workDay:\"以工作日填充\",month:\"以月填充\",year:\"以年填充\",chineseNumber:\"以中文小寫數位填充\"},imageCtrl:{borderTile:\"圖片邊框顏色選擇\",borderCur:\"當前顏色\"},protection:{protectiontTitle:\"保護工作表\",enterPassword:\"請輸入密碼（可留空）\",enterHint:\"您試圖更改的儲存格或圖表位於受保護的工作表中。若要更改,請取消工作表保護。您可能需要輸入密碼\",swichProtectionTip:\"保護工作表及鎖定的儲存格內容\",authorityTitle:\"允許此工作表的用戶進行:\",selectLockedCells:\"定鎖定儲存格\",selectunLockedCells:\"選定解除鎖定的儲存格\",formatCells:\"設定儲存格格式\",formatColumns:\"設定列格式\",formatRows:\"設定行格式\",insertColumns:\"插入列\",insertRows:\"插入行\",insertHyperlinks:\"插入超連結\",deleteColumns:\"删除列\",deleteRows:\"删除行\",sort:\"排序\",filter:\"使用自動篩選\",usePivotTablereports:\"使用數據透視錶和報表\",editObjects:\"編輯對象\",editScenarios:\"編輯方案\",allowRangeTitle:\"允許用戶編輯區域\",allowRangeAdd:\"新建...\",allowRangeAddTitle:\"標題\",allowRangeAddSqrf:\"引用儲存格\",selectCellRange:\"點擊選擇儲存格範圍\",selectCellRangeHolder:\"請輸入儲存格範圍\",allowRangeAddTitlePassword:\"密碼\",allowRangeAddTitleHint:\"提示\",allowRangeAddTitleHintTitle:\"設置密碼後,提示用戶輸入密碼（可留空）\",allowRangeAddtitleDefault:\"請輸入區域名稱\",rangeItemDblclick:\"按兩下進行編輯\",rangeItemHasPassword:\"已設置密碼\",rangeItemErrorTitleNull:\"標題不能為空\",rangeItemErrorRangeNull:\"儲存格範圍不能為空\",rangeItemErrorRange:\"儲存格範圍格式錯誤\",validationTitle:\"驗證提示\",validationTips:\"需要輸入密碼來撤銷工作表的保護\",validationInputHint:\"請輸入密碼\",checkPasswordNullalert:\"密碼不能為空!\",checkPasswordWrongalert:\"密碼錯誤,請重試！\",checkPasswordSucceedalert:\"解鎖成功,可以編輯該區域!\",defaultRangeHintText:\"該儲存格正在受密碼保護\",defaultSheetHintText:\"該儲存格或圖表位於受保護的工作表中,若要進行更改,請取消工作表保護,您可能需要輸入密碼。\"},cellFormat:{cellFormatTitle:\"設定儲存格格式\",protection:\"保護\",locked:\"鎖定儲存格\",hidden:\"隱藏公式\",protectionTips:\"只有保護工作表功能（在功能表列點擊保護工作表按鈕進行設定）開啟後,鎖定儲存格或隱藏公式才能生效\",tipsPart:\"部分選中\",tipsAll:\"全部選中\",selectionIsNullAlert:\"請選擇一個範圍！\",sheetDataIsNullAlert:\"數據為空無法設定！\"},print:{normalBtn:\"常規視圖\",layoutBtn:\"頁面佈局\",pageBtn:\"分頁預覽\",menuItemPrint:\"列印(Ctrl+P)\",menuItemAreas:\"列印區域\",menuItemRows:\"列印標題行\",menuItemColumns:\"列印標題列\"},edit:{typing:\"正在輸入\"},websocket:{success:\"WebSocket連接成功\",refresh:\"WebSocket連接發生錯誤,請刷新頁面！\",wait:\"WebSocket連接發生錯誤,請耐心等待！\",close:\"WebSocket連接關閉\",contact:\"服務器通信發生錯誤,請刷新頁面後再試,如若不行請聯系管理員！\",support:\"當前瀏覽器不支持WebSocket\"},exportXlsx:{notice:\"請配置導出插件\",serverError:\"服務器正在維護\",title:\"導出XLSX\",range:\"範圍\",currentSheet:\"當前工作表\",allSheets:\"所有工作表\"}}}));function W(){return Y[t.lang]}var Y,X,K=y((()=>{H(),U(),j(),G(),x(),Y={en:z,zh:L,es:O,zh_tw:B},X=W}));var Z,J,Q=y((()=>{K(),w(),_d(),Z=[\"undo\",\"redo\",\"paintFormat\",\"|\",\"currencyFormat\",\"percentageFormat\",\"numberIncrease\",\"numberDecrease\",\"moreFormats\",\"|\",\"font\",\"|\",\"fontSize\",\"|\",\"bold\",\"italic\",\"strikethrough\",\"underline\",\"textColor\",\"|\",\"fillColor\",\"border\",\"mergeCell\",\"|\",\"horizontalAlignMode\",\"verticalAlignMode\",\"textWrapMode\",\"textRotateMode\",\"|\",\"image\",\"link\",\"chart\",\"postil\",\"pivotTable\",\"|\",\"function\",\"frozenMode\",\"sortAndFilter\",\"conditionalFormat\",\"dataVerification\",\"splitColumn\",\"screenshot\",\"findAndReplace\",\"protection\",\"print\",\"exportXlsx\"],J={undo:\"#luckysheet-icon-undo\",redo:\"#luckysheet-icon-redo\",paintFormat:[\"#luckysheet-icon-paintformat\"],currencyFormat:\"#luckysheet-icon-currency\",percentageFormat:\"#luckysheet-icon-percent\",numberDecrease:\"#luckysheet-icon-fmt-decimal-decrease\",numberIncrease:\"#luckysheet-icon-fmt-decimal-increase\",moreFormats:\"#luckysheet-icon-fmt-other\",font:\"#luckysheet-icon-font-family\",fontSize:\"#luckysheet-icon-font-size\",bold:\"#luckysheet-icon-bold\",italic:\"#luckysheet-icon-italic\",strikethrough:\"#luckysheet-icon-strikethrough\",underline:\"#luckysheet-icon-underline\",textColor:[\"#luckysheet-icon-text-color\",\"#luckysheet-icon-text-color-menu\"],fillColor:[\"#luckysheet-icon-cell-color\",\"#luckysheet-icon-cell-color-menu\"],border:[\"#luckysheet-icon-border-all\",\"#luckysheet-icon-border-menu\"],mergeCell:[\"#luckysheet-icon-merge-button\",\"#luckysheet-icon-merge-menu\"],horizontalAlignMode:[\"#luckysheet-icon-align\",\"#luckysheet-icon-align-menu\"],verticalAlignMode:[\"#luckysheet-icon-valign\",\"#luckysheet-icon-valign-menu\"],textWrapMode:[\"#luckysheet-icon-textwrap\",\"#luckysheet-icon-textwrap-menu\"],textRotateMode:[\"#luckysheet-icon-rotation\",\"#luckysheet-icon-rotation-menu\"],image:\"#luckysheet-insertImg-btn-title\",link:\"#luckysheet-insertLink-btn-title\",chart:\"#luckysheet-chart-btn-title\",postil:\"#luckysheet-icon-postil\",pivotTable:[\"#luckysheet-pivot-btn-title\"],function:[\"#luckysheet-icon-function\",\"#luckysheet-icon-function-menu\"],frozenMode:[\"#luckysheet-freezen-btn-horizontal\",\"#luckysheet-icon-freezen-menu\"],sortAndFilter:\"#luckysheet-icon-autofilter\",conditionalFormat:\"#luckysheet-icon-conditionformat\",dataVerification:\"#luckysheet-dataVerification-btn-title\",splitColumn:\"#luckysheet-splitColumn-btn-title\",screenshot:\"#luckysheet-chart-btn-screenshot\",findAndReplace:\"#luckysheet-icon-seachmore\",protection:\"#luckysheet-icon-protection\",print:\"#luckysheet-icon-print\",exportXlsx:\"#luckysheet-exportXlsx-btn-title\"}}));function ee(){if(!te&&!(te=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return te(ne)}var te,ne,ae,le=y((()=>{ne=new Uint8Array(16)})),re=y((()=>{ae=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i}));function oe(e){return\"string\"==typeof e&&ae.test(e)}var ie,se=y((()=>{re(),ie=oe}));function ce(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(ue[e[t+0]]+ue[e[t+1]]+ue[e[t+2]]+ue[e[t+3]]+\"-\"+ue[e[t+4]]+ue[e[t+5]]+\"-\"+ue[e[t+6]]+ue[e[t+7]]+\"-\"+ue[e[t+8]]+ue[e[t+9]]+\"-\"+ue[e[t+10]]+ue[e[t+11]]+ue[e[t+12]]+ue[e[t+13]]+ue[e[t+14]]+ue[e[t+15]]).toLowerCase();if(!ie(n))throw TypeError(\"Stringified UUID is invalid\");return n}var ue,de,he=y((()=>{se(),ue=[];for(var e=0;e<256;++e)ue.push((e+256).toString(16).substr(1));de=ce}));function fe(e,t,n){var a=t&&n||0,l=t||new Array(16),r=(e=e||{}).node||me,o=void 0!==e.clockseq?e.clockseq:pe;if(null==r||null==o){var i=e.random||(e.rng||ee)();null==r&&(r=me=[1|i[0],i[1],i[2],i[3],i[4],i[5]]),null==o&&(o=pe=16383&(i[6]<<8|i[7]))}var s=void 0!==e.msecs?e.msecs:Date.now(),c=void 0!==e.nsecs?e.nsecs:ye+1,u=s-ge+(c-ye)/1e4;if(u<0&&void 0===e.clockseq&&(o=o+1&16383),(u<0||s>ge)&&void 0===e.nsecs&&(c=0),c>=1e4)throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");ge=s,ye=c,pe=o;var d=(1e4*(268435455&(s+=122192928e5))+c)%4294967296;l[a++]=d>>>24&255,l[a++]=d>>>16&255,l[a++]=d>>>8&255,l[a++]=255&d;var h=s/4294967296*1e4&268435455;l[a++]=h>>>8&255,l[a++]=255&h,l[a++]=h>>>24&15|16,l[a++]=h>>>16&255,l[a++]=o>>>8|128,l[a++]=255&o;for(var f=0;f<6;++f)l[a+f]=r[f];return t||de(l)}var me,pe,ge,ye,ve,be=y((()=>{le(),he(),ge=0,ye=0,ve=fe}));function ke(e){if(!ie(e))throw TypeError(\"Invalid UUID\");var t,n=new Uint8Array(16);return n[0]=(t=parseInt(e.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n[4]=(t=parseInt(e.slice(9,13),16))>>>8,n[5]=255&t,n[6]=(t=parseInt(e.slice(14,18),16))>>>8,n[7]=255&t,n[8]=(t=parseInt(e.slice(19,23),16))>>>8,n[9]=255&t,n[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=255&t,n}var we,xe=y((()=>{se(),we=ke}));function _e(e,t,n){function a(e,a,l,r){if(\"string\"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],n=0;n<e.length;++n)t.push(e.charCodeAt(n));return t}(e)),\"string\"==typeof a&&(a=we(a)),16!==a.length)throw TypeError(\"Namespace must be array-like (16 iterable integer values, 0-255)\");var o=new Uint8Array(16+e.length);if(o.set(a),o.set(e,a.length),(o=n(o))[6]=15&o[6]|t,o[8]=63&o[8]|128,l){r=r||0;for(var i=0;i<16;++i)l[r+i]=o[i];return l}return de(o)}try{a.name=e}catch(e){}return a.DNS=Ce,a.URL=Te,a}var Ce,Te,Se=y((()=>{he(),xe(),Ce=\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\",Te=\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"}));function $e(e){if(\"string\"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var n=0;n<t.length;++n)e[n]=t.charCodeAt(n)}return function(e){for(var t=[],n=32*e.length,a=\"0123456789abcdef\",l=0;l<n;l+=8){var r=e[l>>5]>>>l%32&255,o=parseInt(a.charAt(r>>>4&15)+a.charAt(15&r),16);t.push(o)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[Ie(t)-1]=t;for(var n=1732584193,a=-271733879,l=-1732584194,r=271733878,o=0;o<e.length;o+=16){var i=n,s=a,c=l,u=r;n=De(n,a,l,r,e[o],7,-680876936),r=De(r,n,a,l,e[o+1],12,-389564586),l=De(l,r,n,a,e[o+2],17,606105819),a=De(a,l,r,n,e[o+3],22,-1044525330),n=De(n,a,l,r,e[o+4],7,-176418897),r=De(r,n,a,l,e[o+5],12,1200080426),l=De(l,r,n,a,e[o+6],17,-1473231341),a=De(a,l,r,n,e[o+7],22,-45705983),n=De(n,a,l,r,e[o+8],7,1770035416),r=De(r,n,a,l,e[o+9],12,-1958414417),l=De(l,r,n,a,e[o+10],17,-42063),a=De(a,l,r,n,e[o+11],22,-1990404162),n=De(n,a,l,r,e[o+12],7,1804603682),r=De(r,n,a,l,e[o+13],12,-40341101),l=De(l,r,n,a,e[o+14],17,-1502002290),n=Fe(n,a=De(a,l,r,n,e[o+15],22,1236535329),l,r,e[o+1],5,-165796510),r=Fe(r,n,a,l,e[o+6],9,-1069501632),l=Fe(l,r,n,a,e[o+11],14,643717713),a=Fe(a,l,r,n,e[o],20,-373897302),n=Fe(n,a,l,r,e[o+5],5,-701558691),r=Fe(r,n,a,l,e[o+10],9,38016083),l=Fe(l,r,n,a,e[o+15],14,-660478335),a=Fe(a,l,r,n,e[o+4],20,-405537848),n=Fe(n,a,l,r,e[o+9],5,568446438),r=Fe(r,n,a,l,e[o+14],9,-1019803690),l=Fe(l,r,n,a,e[o+3],14,-187363961),a=Fe(a,l,r,n,e[o+8],20,1163531501),n=Fe(n,a,l,r,e[o+13],5,-1444681467),r=Fe(r,n,a,l,e[o+2],9,-51403784),l=Fe(l,r,n,a,e[o+7],14,1735328473),n=Ee(n,a=Fe(a,l,r,n,e[o+12],20,-1926607734),l,r,e[o+5],4,-378558),r=Ee(r,n,a,l,e[o+8],11,-2022574463),l=Ee(l,r,n,a,e[o+11],16,1839030562),a=Ee(a,l,r,n,e[o+14],23,-35309556),n=Ee(n,a,l,r,e[o+1],4,-1530992060),r=Ee(r,n,a,l,e[o+4],11,1272893353),l=Ee(l,r,n,a,e[o+7],16,-155497632),a=Ee(a,l,r,n,e[o+10],23,-1094730640),n=Ee(n,a,l,r,e[o+13],4,681279174),r=Ee(r,n,a,l,e[o],11,-358537222),l=Ee(l,r,n,a,e[o+3],16,-722521979),a=Ee(a,l,r,n,e[o+6],23,76029189),n=Ee(n,a,l,r,e[o+9],4,-640364487),r=Ee(r,n,a,l,e[o+12],11,-421815835),l=Ee(l,r,n,a,e[o+15],16,530742520),n=Me(n,a=Ee(a,l,r,n,e[o+2],23,-995338651),l,r,e[o],6,-198630844),r=Me(r,n,a,l,e[o+7],10,1126891415),l=Me(l,r,n,a,e[o+14],15,-1416354905),a=Me(a,l,r,n,e[o+5],21,-57434055),n=Me(n,a,l,r,e[o+12],6,1700485571),r=Me(r,n,a,l,e[o+3],10,-1894986606),l=Me(l,r,n,a,e[o+10],15,-1051523),a=Me(a,l,r,n,e[o+1],21,-2054922799),n=Me(n,a,l,r,e[o+8],6,1873313359),r=Me(r,n,a,l,e[o+15],10,-30611744),l=Me(l,r,n,a,e[o+6],15,-1560198380),a=Me(a,l,r,n,e[o+13],21,1309151649),n=Me(n,a,l,r,e[o+4],6,-145523070),r=Me(r,n,a,l,e[o+11],10,-1120210379),l=Me(l,r,n,a,e[o+2],15,718787259),a=Me(a,l,r,n,e[o+9],21,-343485551),n=Re(n,i),a=Re(a,s),l=Re(l,c),r=Re(r,u)}return[n,a,l,r]}(function(e){if(0===e.length)return[];for(var t=8*e.length,n=new Uint32Array(Ie(t)),a=0;a<t;a+=8)n[a>>5]|=(255&e[a/8])<<a%32;return n}(e),8*e.length))}function Ie(e){return 14+(e+64>>>9<<4)+1}function Re(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function Ae(e,t,n,a,l,r){return Re(function(e,t){return e<<t|e>>>32-t}(Re(Re(t,e),Re(a,r)),l),n)}function De(e,t,n,a,l,r,o){return Ae(t&n|~t&a,e,t,l,r,o)}function Fe(e,t,n,a,l,r,o){return Ae(t&a|n&~a,e,t,l,r,o)}function Ee(e,t,n,a,l,r,o){return Ae(t^n^a,e,t,l,r,o)}function Me(e,t,n,a,l,r,o){return Ae(n^(t|~a),e,t,l,r,o)}var Ne,Pe,ze,Le=y((()=>{Ne=$e})),Oe=y((()=>{Se(),Le(),Pe=_e(\"v3\",48,Ne),ze=Pe}));function Be(e,t,n){var a=(e=e||{}).random||(e.rng||ee)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t){n=n||0;for(var l=0;l<16;++l)t[n+l]=a[l];return t}return de(a)}var Ve,qe=y((()=>{le(),he(),Ve=Be}));function He(e,t,n,a){switch(e){case 0:return t&n^~t&a;case 1:case 3:return t^n^a;case 2:return t&n^t&a^n&a}}function Ue(e,t){return e<<t|e>>>32-t}function je(e){var t=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if(\"string\"==typeof e){var a=unescape(encodeURIComponent(e));e=[];for(var l=0;l<a.length;++l)e.push(a.charCodeAt(l))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var r=e.length/4+2,o=Math.ceil(r/16),i=new Array(o),s=0;s<o;++s){for(var c=new Uint32Array(16),u=0;u<16;++u)c[u]=e[64*s+4*u]<<24|e[64*s+4*u+1]<<16|e[64*s+4*u+2]<<8|e[64*s+4*u+3];i[s]=c}i[o-1][14]=8*(e.length-1)/Math.pow(2,32),i[o-1][14]=Math.floor(i[o-1][14]),i[o-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<o;++d){for(var h=new Uint32Array(80),f=0;f<16;++f)h[f]=i[d][f];for(var m=16;m<80;++m)h[m]=Ue(h[m-3]^h[m-8]^h[m-14]^h[m-16],1);for(var p=n[0],g=n[1],y=n[2],v=n[3],b=n[4],k=0;k<80;++k){var w=Math.floor(k/20),x=Ue(p,5)+He(w,g,y,v)+b+t[w]+h[k]>>>0;b=v,v=y,y=Ue(g,30)>>>0,g=p,p=x}n[0]=n[0]+p>>>0,n[1]=n[1]+g>>>0,n[2]=n[2]+y>>>0,n[3]=n[3]+v>>>0,n[4]=n[4]+b>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}var Ge,We,Ye,Xe,Ke=y((()=>{Ge=je})),Ze=y((()=>{Se(),Ke(),We=_e(\"v5\",80,Ge),Ye=We})),Je=y((()=>{Xe=\"00000000-0000-0000-0000-000000000000\"}));function Qe(e){if(!ie(e))throw TypeError(\"Invalid UUID\");return parseInt(e.substr(14,1),16)}var et,tt=y((()=>{se(),et=Qe})),nt={};b(nt,{NIL:()=>Xe,parse:()=>we,stringify:()=>de,v1:()=>ve,v3:()=>ze,v4:()=>Ve,v5:()=>Ye,validate:()=>ie,version:()=>et});var at=y((()=>{be(),Oe(),qe(),Ze(),Je(),tt(),se(),he(),xe()}));function lt(){let t=X(),n=t.rightclick,a=t.toolbar,l=function(){let t={copy:!0,copyAs:!0,paste:!0,insertRow:!0,insertColumn:!0,deleteRow:!0,deleteColumn:!0,deleteCell:!0,hideRow:!0,hideColumn:!0,rowHeight:!0,columnWidth:!0,clear:!0,matrix:!0,sort:!0,filter:!0,chart:!0,image:!0,link:!0,data:!0,cellFormat:!0,resetCustomHeight:!0,resetDefault:!0};return\"{}\"!==JSON.stringify(e.cellRightClickConfig)&&Object.assign(t,e.cellRightClickConfig),e.cellRightClickConfig=t,t}(),r=!0;l.insertRow||l.insertColumn||l.deleteRow||l.deleteColumn||l.deleteCell||(r=!1);let o=!0;l.clear||l.matrix||l.sort||l.filter||l.chart||l.image||l.link||l.data||l.cellFormat||(o=!1);let i=(l.customs||[]).map(((e,t)=>`\\n            <div data-index=\"${t}\" class=\"luckysheetColsRowsHandleAdd_custom luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                ${e.title}\\n                </div>\\n            </div>`)).join(\"\");return`<div id=\"luckysheet-rightclick-menu\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel\">\\n                <div id=\"luckysheet-copy-btn\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel luckysheet-copy-btn\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" style=\"display:${l.copy?\"block\":\"none\"};\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.copy}</div>\\n                </div>\\n                <div id=\"luckysheetcopyfor\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\"  style=\"display:${l.copyAs?\"block\":\"none\"};\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.copyAs}<span class=\"luckysheet-submenu-arrow iconfont-luckysheet luckysheet-iconfont-youjiantou\" style=\"user-select: none;\"></span>\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-copy-paste\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.paste?\"block\":\"none\"};\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.paste}</div>\\n                </div>\\n                <div id=\"luckysheet-cols-rows-handleincell\">\\n                    <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\" style=\"display:${r?\"block\":\"none\"};\"></div>\\n                    <div id=\"luckysheetColsRowsHandleAdd_row\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.insertRow?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.insert}${n.row}<span class=\"luckysheet-submenu-arrow\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheetColsRowsHandleAdd_column\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.insertColumn?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.insert}${n.column}<span class=\"luckysheet-submenu-arrow\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-delRows\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\" style=\"display:${l.deleteRow?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.deleteSelected}${n.row}<span class=\"luckysheet-submenu-arrow\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-delCols\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\" style=\"display:${l.deleteColumn?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.deleteSelected}${n.column}<span class=\"luckysheet-submenu-arrow\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                    \\x3c!-- cell right click remove hide button\\n                    <div id=\"luckysheetColsRowsHandleHid\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.hide}<span class=\"luckysheet-submenu-arrow iconfont-luckysheet luckysheet-iconfont-youjiantou\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                    --\\x3e\\n                    <div id=\"luckysheetCellsHandleDel\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\" style=\"display:${l.deleteCell?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.deleteCell}<span class=\"luckysheet-submenu-arrow iconfont-luckysheet luckysheet-iconfont-youjiantou\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-cols-rows-add\">\\n                    <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div>\\n                    <div id=\"luckysheet-top-left-add-selected\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.to}\\n                            <span class=\"luckysheet-cols-rows-shift-left\">${n.left}</span>\\n                            ${n.add}\\n                            <input type=\"text\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align:center;margin-left:5px;\"/>\\n                            <span class=\"luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel\">${n.column}</span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-bottom-right-add-selected\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.to}\\n                            <span class=\"luckysheet-cols-rows-shift-right\">${n.right}</span>\\n                            ${n.add}\\n                            <input type=\"text\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                            <span class=\"luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel\">${n.column}</span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-del-selected\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.deleteSelected}\\n                            <span class=\"luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel\">${n.column}</span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-hide-selected\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.hideSelected}\\n                        <span class=\"luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel\">${n.column}</span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-show-selected\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.showHide}\\n                            <span class=\"luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel\">${n.column}</span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheet-column-row-width-selected\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            <span class=\"luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel\">${n.column}</span>\\n                            <span class=\"luckysheet-cols-rows-shift-size luckysheet-mousedown-cancel\">${n.width}</span>\\n                            <input type=\"number\" class=\"luckysheet-mousedown-cancel rcsize\" min=\"0\" max=\"255\" placeholder=\"${n.number}\" value=\"\" style=\"width:50px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\">\\n                            px\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheetResetCustomHeight\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.resetCustomHeight?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${a.resetCustomHeight}</div>\\n                    </div>\\n                    <div id=\"luckysheetResetDefault\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.resetDefault?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${a.resetDefault}</div>\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-cols-rows-shift\">\\n                    <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\" style=\"display:${l.sort?\"block\":\"none\"};\"></div>\\n                    <div id=\"luckysheetorderbyasc\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.sort?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.orderAZ}</div>\\n                    </div>\\n                    <div id=\"luckysheetorderbydesc\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.sort?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.orderZA}</div>\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-cols-rows-data\">\\n                    <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\" style=\"display:${o?\"block\":\"none\"};\"></div>\\n                    <div id=\"luckysheet-delete-text\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.clear?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.clearContent}</div>\\n                    </div>\\n                    <div id=\"luckysheetmatrix\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\" style=\"display:${l.matrix?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                            ${n.matrix}<span class=\"luckysheet-submenu-arrow iconfont-luckysheet luckysheet-iconfont-youjiantou\" style=\"user-select: none;\"></span>\\n                        </div>\\n                    </div>\\n                    <div id=\"luckysheetorderby\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.sort?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.sortSelection}</div>\\n                    </div>\\n                    <div id=\"luckysheetfilter\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.filter?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.filterSelection}</div>\\n                    </div>\\n                    <div id=\"luckysheetdatavisual\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.chart?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.chartGeneration}</div>\\n                    </div>\\n                    <div id=\"luckysheetInsertImage\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.image?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${a.insertImage}</div>\\n                    </div>\\n                    <div id=\"luckysheetInsertLink\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.link?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${a.insertLink}</div>\\n                    </div>\\n                    <div id=\"luckysheetDataVerification\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.data?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${a.dataVerification}</div>\\n                    </div>\\n                    <div id=\"luckysheetCellFormatRightClickMenu\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${l.cellFormat?\"block\":\"none\"};\">\\n                        <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${a.cellFormat}</div>\\n                    </div>\\n                    ${i}\\n                </div>\\n            </div>\\n            <div id=\"luckysheetcopyfor_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div id=\"luckysheet-copy-json-head\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">Json ${n.firstLineTitle}</div>\\n                </div>\\n                <div id=\"luckysheet-copy-json-nohead\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">Json ${n.untitled}</div>\\n                </div>\\n                <div id=\"luckysheet-copy-array1\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.array1}</div>\\n                </div>\\n                <div id=\"luckysheet-copy-array2\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.array2}</div>\\n                </div>\\n                <div id=\"luckysheet-copy-arraymore-confirm\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        <span class=\"luckysheet-mousedown-cancel\">${n.array3}</span>\\n                        <input type=\"number\" id=\"luckysheet-copy-arraymore-row\" min=\"1\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.row}\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;\"/>\\n                            ×\\n                            <input type=\"number\" id=\"luckysheet-copy-arraymore-col\" min=\"1\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.column}\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;\"/>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div>\\n                <div id=\"luckysheet-copy-diagonal\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.diagonal}</div>\\n                </div>\\n                <div id=\"luckysheet-copy-antidiagonal\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.antiDiagonal}</div>\\n                </div>\\n                <div id=\"luckysheet-copy-diagonaloffset\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.diagonalOffset}\\n                        <input type=\"number\" id=\"luckysheet-copy-diagonaloffset-value\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.offset}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                        ${n.column}\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-copy-boolvalue\" data-clipboard-action=\"copy\" data-clipboard-target=\"#luckysheet-copy-content\" class=\"luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.boolean}</div>\\n                </div>\\n            </div>\\n            \\n            \\x3c!-- Revision: modeled on google sheet\\n            \\n            <div id=\"luckysheetColsRowsHandleAdd_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.to}${n.top}${n.add}\\n                        <input type=\"text\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                        <span class=\"luckysheet-mousedown-cancel\">${n.row}</span>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.to}${n.bottom}${n.add}\\n                        <input type=\"text\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                        <span class=\"luckysheet-mousedown-cancel\">${n.row}</span>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.to}${n.left}${n.add}\\n                        <input type=\"text\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                        <span class=\"luckysheet-mousedown-cancel\">${n.column}</span>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.to}${n.right}${n.add}\\n                        <input type=\"text\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"1\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                        <span class=\"luckysheet-mousedown-cancel\">${n.column}</span>\\n                    </div>\\n                </div>\\n            </div>\\n            \\n            --\\x3e\\n\\n            \\x3c!-- delete row or column\\n            \\n            <div id=\"luckysheetColsRowsHandleDel_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div id=\"luckysheet-delRows\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.deleteSelected}${n.row}\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-delCols\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.deleteSelected}${n.column}\\n                    </div>\\n                </div>\\n            </div>\\n            \\n            --\\x3e\\n\\n            \\x3c!--\\n            <div id=\"luckysheetColsRowsHandleHid_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div id=\"luckysheet-hidRows\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.hideSelected}${n.row}\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-showHidRows\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.showHide}${n.row}\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-hidCols\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.hideSelected}${n.column}\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-showHidCols\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.showHide}${n.column}\\n                    </div>\\n                </div>\\n            </div>\\n\\n            --\\x3e\\n\\n            <div id=\"luckysheetCellsHandleDel_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div id=\"luckysheet-delCellsMoveLeft\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.moveLeft}\\n                    </div>\\n                </div>\\n                <div id=\"luckysheet-delCellsMoveUp\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.moveUp}\\n                    </div>\\n                </div>\\n            </div>\\n            <div id=\"luckysheetmatrix_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.flip}\\n                        <button id=\"luckysheet-matrix-turn-up\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.upAndDown}</button>\\n                        <button id=\"luckysheet-matrix-turn-left\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.leftAndRight}</button>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.flip}\\n                        <button id=\"luckysheet-matrix-turn-cw\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.clockwise}</button>\\n                        <button id=\"luckysheet-matrix-turn-anticw\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.counterclockwise}</button>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div id=\"luckysheet-matrix-turn-trans\" class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${n.transpose}</div>\\n                </div>\\n                <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div>\\n                <div id=\"luckysheet-matrix-cal-confirm\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        <div class=\"luckysheet-mousedown-cancel\">${n.matrixCalculation}</div>\\n                        <div class=\"luckysheet-mousedown-cancel\">\\n                            <select id=\"luckysheet-matrix-cal-type\" class=\"luckysheet-mousedown-cancel\" style=\"height:20px;\">\\n                                <option value=\"plus\">${n.plus}</option>\\n                                <option value=\"minus\">${n.minus}</option>\\n                                <option value=\"multiply\">${n.multiply}</option>\\n                                <option value=\"divided\">${n.divided}</option>\\n                                <option value=\"power\">${n.power}</option>\\n                                <option value=\"root\">${n.root}</option>\\n                                <option value=\"log\">${n.log}</option>\\n                            </select>\\n                            <input type=\"number\" id=\"luckysheet-matrix-cal-value\" class=\"luckysheet-mousedown-cancel\" placeholder=\"${n.number}\" value=\"2\" style=\"width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;\"/>\\n                        </div>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.delete0}\\n                        <button id=\"luckysheet-matrix-delezero-row\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.byRow}</button>\\n                        <button id=\"luckysheet-matrix-delezero-column\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.byCol}</button>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">\\n                        ${n.removeDuplicate}\\n                        <button id=\"luckysheet-matrix-delerpt-row\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.byRow}</button>\\n                        <button id=\"luckysheet-matrix-delerpt-column\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;\">${n.byCol}</button>\\n                    </div>\\n                </div>\\n            </div>`}function rt(){let t=X().sheetconfig,n=function(){let t={delete:!0,copy:!0,rename:!0,color:!0,hide:!0,move:!0};return\"{}\"!==JSON.stringify(e.sheetRightClickConfig)&&Object.assign(t,e.sheetRightClickConfig),e.sheetRightClickConfig=t,t}();if(Object.values(n).every((e=>!e)))return $(\"#luckysheet-sheet-container-c\").addClass(\"luckysheet-sheet-container-menu-hide\"),\"\";let a=!0,l=!0;return!n.delete&&!n.copy&&!n.rename&&!n.color&&(a=!1,n.hide||(l=!1)),n.hide||(a=!1),n.move||(l=!1),`<div id=\"luckysheet-rightclick-sheet-menu\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel\"> \\n                <div id=\"luckysheetsheetconfigdelete\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.delete?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.delete}</div>\\n                </div> \\n                <div id=\"luckysheetsheetconfigcopy\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.copy?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.copy}</div> \\n                </div> \\n                <div id=\"luckysheetsheetconfigrename\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.rename?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.rename}</div> \\n                </div> \\n                <div id=\"luckysheetsheetconfigcolor\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\" style=\"display:${n.color?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> \\n                        ${t.changeColor} <span class=\"luckysheet-submenu-arrow iconfont-luckysheet luckysheet-iconfont-youjiantou\" style=\"user-select: none;\"></span> \\n                    </div> \\n                </div> \\n                <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\" style=\"display:${a?\"block\":\"none\"};\"></div> \\n                <div id=\"luckysheetsheetconfighide\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.hide?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.hide}</div> \\n                </div> \\n                <div id=\"luckysheetsheetconfigshow\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.hide?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.unhide}</div> \\n                </div> \\n                <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\" style=\"display:${l?\"block\":\"none\"};\"></div> \\n                <div id=\"luckysheetsheetconfigmoveleft\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.move?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.moveLeft}</div> \\n                </div> \\n                <div id=\"luckysheetsheetconfigmoveright\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"display:${n.move?\"block\":\"none\"};\"> \\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.moveRight}</div> \\n                </div> \\n            </div> \\n            <div id=\"luckysheetsheetconfigcolor_sub\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel\">\\n                <div id=\"luckysheetsheetconfigcolorreset\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\">\\n                    <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${t.resetColor}</div>\\n                </div> \\n                <div class=\"luckysheet-mousedown-cancel\"> \\n                    <div class=\"luckysheet-mousedown-cancel\"> \\n                        <input type=\"text\" id=\"luckysheetsheetconfigcolorur\" /> \\n                    </div> \\n                </div> \\n            </div>`}function ot(){let e=X().filter;return`<div class=\"luckysheet-cols-menu luckysheet-mousedown-cancel luckysheet-filter-menu\" id=\"luckysheet-\\${menuid}-menu\"><div id=\"luckysheet-\\${menuid}-orderby-asc\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.sortByAsc}</div></div><div id=\"luckysheet-\\${menuid}-orderby-desc\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"><div style=\"width:205px;\" class=\"luckysheet-mousedown-cancel\">${e.sortByDesc}</div></div></div> <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div><div id=\"luckysheet-\\${menuid}-orderby-color\" class=\"luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"position: relative;\">${e.filterByColor}<span class=\"luckysheet-submenu-arrow iconfont-luckysheet luckysheet-iconfont-youjiantou\" style=\"user-select: none;right: 0;\"></span></div></div><div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-bycondition\" style=\"padding-top:0px;padding-bottom:0px;\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"><i class=\"fa fa-caret-right\" aria-hidden=\"true\"></i> ${e.filterByCondition}</div></div> <div class=\"luckysheet-\\${menuid}-bycondition\" style=\"display:none;\"><div class=\"luckysheet-flat-menu-button luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-selected\"><span class=\"luckysheet-mousedown-cancel\" data-value=\"null\" data-type=\"0\">${e.filiterInputNone}</span><div class=\"luckysheet-mousedown-cancel\"><i class=\"fa fa-sort\" aria-hidden=\"true\"></i></div></div><div class=\"luckysheet-\\${menuid}-selected-input\"><input type=\"text\" placeholder=\"${e.filiterInputTip}\" class=\"luckysheet-mousedown-cancel\" /></div><div class=\"luckysheet-\\${menuid}-selected-input luckysheet-\\${menuid}-selected-input2\"><span>${e.filiterRangeStart}</span><input type=\"text\" placeholder=\"${e.filiterRangeStartTip}\" class=\"luckysheet-mousedown-cancel\" /><span>${e.filiterRangeEnd}</span><input type=\"text\" placeholder=\"${e.filiterRangeEndTip}\" class=\"luckysheet-mousedown-cancel\" /></div></div> <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-byvalue\" style=\"padding-top:0px;padding-bottom:0px;\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"><i class=\"fa fa-caret-right\" aria-hidden=\"true\"></i> ${e.filterByValues}</div></div> <div class=\"luckysheet-\\${menuid}-byvalue\"><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel luckysheet-mousedown-\\${menuid}-byvalue-btn\"><span id=\"luckysheet-\\${menuid}-byvalue-btn-all\" class=\"luckysheet-mousedown-cancel\">${e.filterValueByAllBtn}</span> - <span id=\"luckysheet-\\${menuid}-byvalue-btn-clear\" class=\"luckysheet-mousedown-cancel\">${e.filterValueByClearBtn}</span> - <span id=\"luckysheet-\\${menuid}-byvalue-btn-contra\" class=\"luckysheet-mousedown-cancel\">${e.filterValueByInverseBtn}</span> <div><i class=\"fa fa-\\${menuid} luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></div></div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"padding-left:3px; padding-right:3px;\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"><input type=\"text\" placeholder=\"${e.filterValueByTip}\" class=\"luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-byvalue-input\" /><div class=\"luckysheet-\\${menuid}-byvalue-input-icon luckysheet-mousedown-cancel\"><i class=\"fa fa-search luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></div></div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"><div id=\"luckysheet-\\${menuid}-byvalue-select\" class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"></div></div></div> <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"><div class=\"btn btn-primary luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-confirm\">${e.filterConform}</div> <div class=\"btn btn-default luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-cancel\">${e.filterCancel}</div> <div class=\"btn btn-danger luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-initial\">${e.clearFilter}</div></div></div> </div>`}function it(){let e=X().filter;return`<div style=\"z-index:1004;overflow-y:auto;\" class=\"luckysheet-filter-submenu luckysheet-cols-menu luckysheet-mousedown-cancel\" id=\"luckysheet-\\${menuid}-submenu\"><div data-value=\"null\" data-type=\"0\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionNone}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"cellnull\"  data-type=\"0\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellIsNull}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"cellnonull\"  data-type=\"0\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellNotNull}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"textinclude\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellTextContain}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"textnotinclude\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellTextNotContain}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"textstart\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellTextStart}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"textend\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellTextEnd}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"textequal\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellTextEqual}</div></div>  <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div>  <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"dateequal\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellDateEqual}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"datelessthan\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellDateBefore}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"datemorethan\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellDateAfter}</div></div> <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"morethan\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellGreater}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"moreequalthan\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellGreaterEqual}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"lessthan\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellLess}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"lessequalthan\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellLessEqual}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"equal\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellEqual}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"noequal\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellNotEqual}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"include\"  data-type=\"2\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellBetween}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-value=\"noinclude\" data-type=\"2\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${e.conditionCellNotBetween}</div></div> </div>`}function st(){return function(){let t=X().toolbar,n=X().fontarray,a=X().defaultFmt,l={undo:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block disabled\" data-tips=\"${t.undo}\"\\n        id=\"luckysheet-icon-undo\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-undo iconfont-luckysheet luckysheet-iconfont-qianjin\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,redo:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block disabled\" data-tips=\"${t.redo}\"\\n        id=\"luckysheet-icon-redo\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-redo iconfont-luckysheet luckysheet-iconfont-houtui\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,paintFormat:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.paintFormat}\"\\n        id=\"luckysheet-icon-paintformat\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img iconfont-luckysheet luckysheet-iconfont-geshishua\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,currencyFormat:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.currencyFormat}\"\\n        id=\"luckysheet-icon-currency\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img iconfont-luckysheet luckysheet-iconfont-jine\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,percentageFormat:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.percentageFormat}\"\\n        id=\"luckysheet-icon-percent\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img iconfont-luckysheet luckysheet-iconfont-baifenhao\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,numberDecrease:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.numberDecrease}\"\\n        id=\"luckysheet-icon-fmt-decimal-decrease\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block toolbar-decimal-icon\"\\n                    style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-decimal-decrease iconfont-luckysheet luckysheet-iconfont-zengjiaxiaoshuwei\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,numberIncrease:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.numberIncrease}\"\\n        id=\"luckysheet-icon-fmt-decimal-increase\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block toolbar-decimal-icon\"\\n                    style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-decimal-increase iconfont-luckysheet luckysheet-iconfont-jianxiaoxiaoshuwei\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,moreFormats:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\" data-tips=\"${t.moreFormats}\"\\n        id=\"luckysheet-icon-fmt-other\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${a[0].text}\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,font:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.font}\" id=\"luckysheet-icon-font-family\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${n[0]}\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,fontSize:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-zoom-combobox luckysheet-toolbar-combo-button luckysheet-inline-block\"\\n        data-tips=\"${t.fontSize}\" id=\"luckysheet-icon-font-size\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-combo-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-combo-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div aria-posinset=\"4\" aria-setsize=\"7\" class=\"luckysheet-inline-block luckysheet-toolbar-combo-button-caption\"\\n                    style=\"user-select: none;\">\\n                        <input aria-label=\"${t.fontSize}\" class=\"luckysheet-toolbar-combo-button-input luckysheet-toolbar-textinput\"\\n                        role=\"combobox\" style=\"user-select: none;\" tabindex=\"-1\" type=\"text\" value=\"10\"\\n                        />\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-combo-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,bold:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.bold}\"\\n        id=\"luckysheet-icon-bold\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-bold iconfont-luckysheet luckysheet-iconfont-jiacu\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,italic:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.italic}\"\\n        id=\"luckysheet-icon-italic\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-italic iconfont-luckysheet luckysheet-iconfont-wenbenqingxie1\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,strikethrough:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.strikethrough}\"\\n        id=\"luckysheet-icon-strikethrough\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-strikethrough iconfont-luckysheet luckysheet-iconfont-wenbenshanchuxian\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,underline:`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${t.underline}\"\\n        id=\"luckysheet-icon-underline\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-underline iconfont-luckysheet luckysheet-iconfont-wenbenxiahuaxian\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,textColor:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-text-color\"\\n        data-tips=\"${t.textColor}\" id=\"luckysheet-icon-text-color\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-color-menu-button-indicator\" style=\"border-bottom-color: rgb(0, 0, 0); user-select: none;\">\\n                            <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                                <div class=\"text-color-bar\" style=\"background-color:${e.defaultTextColor}\"></div>\\n                                <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color iconfont-luckysheet luckysheet-iconfont-wenbenyanse\"\\n                                style=\"user-select: none;\">\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.chooseColor}...\" id=\"luckysheet-icon-text-color-menu\" role=\"button\"\\n        style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,fillColor:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-cell-color\"\\n        data-tips=\"${t.fillColor}\" id=\"luckysheet-icon-cell-color\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-color-menu-button-indicator\" style=\"border-bottom-color: rgb(255, 255, 255); user-select: none;\">\\n                            <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                                <div class=\"text-color-bar\" style=\"background-color:${e.defaultCellColor}\"></div>\\n                                <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color iconfont-luckysheet luckysheet-iconfont-tianchong\"\\n                                style=\"user-select: none;\">\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.chooseColor}...\" id=\"luckysheet-icon-cell-color-menu\" role=\"button\"\\n        style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,border:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-border-all\"\\n        data-tips=\"${t.border}\" id=\"luckysheet-icon-border-all\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all iconfont-luckysheet luckysheet-iconfont-quanjiabiankuang\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.borderStyle}...\" id=\"luckysheet-icon-border-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,mergeCell:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-merge-button\"\\n        data-tips=\"${t.mergeCell}\" id=\"luckysheet-icon-merge-button\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-merge iconfont-luckysheet luckysheet-iconfont-hebing\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.chooseMergeType}...\" id=\"luckysheet-icon-merge-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,horizontalAlignMode:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-align\"\\n        data-tips=\"${t.horizontalAlign}\" id=\"luckysheet-icon-align\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left iconfont-luckysheet luckysheet-iconfont-wenbenzuoduiqi\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.alignment}...\" id=\"luckysheet-icon-align-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,verticalAlignMode:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-valign\"\\n        data-tips=\"${t.verticalAlign}\" id=\"luckysheet-icon-valign\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom iconfont-luckysheet luckysheet-iconfont-dibuduiqi\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.alignment}...\" id=\"luckysheet-icon-valign-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,textWrapMode:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-textwrap\"\\n        data-tips=\"${t.textWrap}\" id=\"luckysheet-icon-textwrap\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip iconfont-luckysheet luckysheet-iconfont-jieduan\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.textWrapMode}...\" id=\"luckysheet-icon-textwrap-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,textRotateMode:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-rotation\"\\n        data-tips=\"${t.textRotate}\" id=\"luckysheet-icon-rotation\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-wuxuanzhuang\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.textRotateMode}...\" id=\"luckysheet-icon-rotation-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,image:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.insertImage}\" id=\"luckysheet-insertImg-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-tupian\"\\n                            style=\"user-select: none;\">\\n                                <input id=\"luckysheet-imgUpload\" type=\"file\" accept=\"image/*\" style=\"display:none;\"></input>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,link:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.insertLink}\" id=\"luckysheet-insertLink-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-lianjie\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,chart:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.chart}\" id=\"luckysheet-chart-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-tubiao\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,postil:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\" data-tips=\"${t.postil}\"\\n        id=\"luckysheet-icon-postil\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon-img-container luckysheet-toolbar-menu-button-caption luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-zhushi\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,pivotTable:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.pivotTable}\" id=\"luckysheet-pivot-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-shujutoushi\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,function:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-function\"\\n        data-tips=\"${t.autoSum}\" id=\"luckysheet-icon-function\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont-luckysheet luckysheet-iconfont-jisuan\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${t.sum}\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.moreFunction}...\" id=\"luckysheet-icon-function-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,frozenMode:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-freezen-btn-horizontal\"\\n        data-tips=\"${t.freezeTopRow}\" id=\"luckysheet-freezen-btn-horizontal\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-dongjie1\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\"luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block\"\\n        data-tips=\"${t.moreOptions}...\" id=\"luckysheet-icon-freezen-menu\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,sortAndFilter:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\" data-tips=\"${t.sortAndFilter}\"\\n        id=\"luckysheet-icon-autofilter\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont-luckysheet luckysheet-iconfont-shaixuan\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;margin-left: 0px;margin-right: 4px;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,conditionalFormat:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\" data-tips=\"${t.conditionalFormat}\"\\n        id=\"luckysheet-icon-conditionformat\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont-luckysheet luckysheet-iconfont-geshitiaojian\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,dataVerification:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.dataVerification}\" id=\"luckysheet-dataVerification-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-shujuyanzheng\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,splitColumn:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.splitColumn}\" id=\"luckysheet-splitColumn-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-wenbenfenge\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,screenshot:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.screenshot}\" id=\"luckysheet-chart-btn-screenshot\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-jieping\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,findAndReplace:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\" data-tips=\"${t.findAndReplace}\"\\n        id=\"luckysheet-icon-seachmore\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont-luckysheet luckysheet-iconfont-sousuo\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;margin-left: 0px;margin-right: 4px;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,protection:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.protection}\" id=\"luckysheet-icon-protection\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-biaogesuoding\"\\n                            style=\"user-select: none;\">\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,print:`<div class=\"luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block\" data-tips=\"${t.print}\"\\n        id=\"luckysheet-icon-print\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont-luckysheet luckysheet-iconfont-dayin\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\"\\n                    style=\"user-select: none;margin-left: 0px;margin-right: 4px;\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`,exportXlsx:`<div class=\"luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block\"\\n        data-tips=\"${t.exportXlsx}\" id=\"luckysheet-exportXlsx-btn-title\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                            <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none\"\\n                            style=\"user-select: none;\">\\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.5\"><path d=\"M4 12a8 8 0 1 0 16 0\"/><path stroke-linejoin=\"round\" d=\"M12 14V4m0 0l3 3m-3-3L9 7\"/></g></svg>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>`},r=e.showtoolbar,o=e.showtoolbarConfig,i=['<div class=\"luckysheet-toolbar-left-theme\"></div>'];if(\"array\"===ad(o))return r?(o.forEach((function(e,t){if(\"|\"===e){let e=o[t-1];\"|\"!==e&&i.push(`<div id=\"toolbar-separator-${kd(e)}\" class=\"luckysheet-toolbar-separator luckysheet-inline-block\" style=\"user-select: none;\"></div>`)}else i.push(l[e])})),i.join(\"\")):\"\";let s=Z.reduce((function(e,t){return\"|\"!==t&&(e[t]=!0),e}),{});if(!r)for(let e in s)s[e]=!1;\"{}\"!==JSON.stringify(o)&&(o.hasOwnProperty(\"undoRedo\")&&(s.undo=s.redo=o.undoRedo),Object.assign(s,o));for(let e=0;e<Z.length;e++){let t=Z[e];if(s[t]||\"|\"===t)if(\"|\"===t){let t=Z[e-1];\"|\"!==t&&i.push(`<div id=\"toolbar-separator-${kd(t)}\" class=\"luckysheet-toolbar-separator luckysheet-inline-block\" style=\"user-select: none;\"></div>`)}else i.push(l[t]);else\"|\"===Z[e+1]&&e++}return i.join(\"\")}()}var ct,ut,dt,ht,ft,mt,pt,gt,yt,vt,bt,kt,wt,xt,_t,Ct,Tt,St,$t,It,Rt,At,Dt,Ft,Et=y((()=>{K(),x(),w(),_d(),Q(),({v4:ct}=(at(),nt)),ut=function(){let t=X(),n=t.info,a=(t.print,!0===e.userInfo?'<i style=\"font-size:16px;color:#ff6a00;\" class=\"fa fa-taxi\" aria-hidden=\"true\"></i> Lucky':e.userInfo);return`<div class=\"luckysheet\">\\n                    <canvas id=\"luckysheetTableContentF\" style=\"display:none;\" class=\"luckysheetTableContent\"></canvas> \\n                    <div class=\"luckysheet-work-area luckysheet-noselected-text\"> \\n                        <div id =\"luckysheet_info_detail\" class=\"luckysheet_info_detail\"> \\n                            <div data-tips=\"${n.return}\" id=\"luckysheet_info_detail_title\" class=\"luckysheet_info_detail_back\"> \\n                                <i style=\"color:#444D5A;\" class=\"fa fa-angle-left fa-2x\" aria-hidden=\"true\"></i> \\n                            </div> \\n                            <div class=\"luckysheet-share-logo\" title=\"\\${logotitle}\"></div>\\n                            <div class=\"sheet-name\"> \\n                                <input data-tips=\"${n.tips}\" id=\"luckysheet_info_detail_input\" class=\"luckysheet_info_detail_input luckysheet-mousedown-cancel\" value=\"${n.noName}\" tabindex=\"0\" dir=\"ltr\" aria-label=\"${n.rename}\" style=\"visibility: visible; width: 149px;\" data-tooltip=\"${n.rename}\"> \\n                            </div> \\n                            <div id=\"luckysheet_info_detail_update\" class=\"luckysheet_info_detail_update\"> ${n.detailUpdate} </div> \\n                            <div id=\"luckysheet_info_detail_save\" class=\"luckysheet_info_detail_save\"> ${n.wait} </div>\\n                            \\n                            \\${functionButton}\\n                            \\n                            ${\"string\"===ad(a)?`<div class=\"luckysheet_info_detail_user\">\\n                            <span id=\"luckysheet_info_detail_user\">${a}</span></div>`:\"\"}\\n\\n                            ${\"object\"===ad(a)?`<div class=\"luckysheet_info_detail_user\">                            \\n                            <img src=\"${a.userImage}\" id=\"luckysheet_info_detail_user_img\">\\n                            <span id=\"luckysheet_info_detail_user\">${a.userName}</span>\\n                            </div>`:\"\"}\\n                            \\n                        </div> \\n                        <div id=\"luckysheet-wa-editor\" class=\"luckysheet-wa-editor toolbar\"> \\${menu} </div> \\n                        <div id=\"luckysheet-wa-calculate\" class=\"luckysheet-wa-calculate\"> \\n                            <div class=\"luckysheet-wa-calculate-size\" id=\"luckysheet-wa-calculate-size\"></div> \\n                            <div class=\"luckysheet-wa-calculate-help\"> \\n                                <div class=\"luckysheet-wa-calculate-help-box\"> \\n                                    <div spellcheck=\"false\" aria-hidden=\"false\" id=\"luckysheet-helpbox\">\\n                                        <div id=\"luckysheet-helpbox-cell\" class=\"luckysheet-helpbox-cell-input luckysheet-mousedown-cancel\" tabindex=\"0\" contenteditable=\"true\" dir=\"ltr\" aria-autocomplete=\"list\"></div>\\n                                    </div> \\n                                </div>  \\n                                <div class=\"luckysheet-wa-calculate-help-tool\">\\n                                    <i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>\\n                                </div> \\n                            </div> \\n                            <div id=\"luckysheet-wa-functionbox-cancel\" class=\"luckysheet-wa-functionbox\">\\n                                <span><i class=\"iconfont-luckysheet luckysheet-iconfont-qingchu\" aria-hidden=\"true\"></i></span>\\n                            </div> \\n                            <div id=\"luckysheet-wa-functionbox-confirm\" class=\"luckysheet-wa-functionbox\">\\n                                <span><i class=\"iconfont-luckysheet luckysheet-iconfont-yunhang\" aria-hidden=\"true\"></i></span>\\n                            </div> \\n                            <div id=\"luckysheet-wa-functionbox-fx\" class=\"luckysheet-wa-functionbox\">\\n                                <span><i class=\"iconfont-luckysheet luckysheet-iconfont-hanshu\" aria-hidden=\"true\" style=\"color:#333\"></i></span> \\n                            </div> \\n                            <div id=\"luckysheet-functionbox-container\" class=\"luckysheet-mousedown-cancel\">\\n                                <div class=\"luckysheet-mousedown-cancel\" dir=\"ltr\">\\n                                    <div spellcheck=\"false\" aria-hidden=\"false\" id=\"luckysheet-functionbox\">\\n                                        <div id=\"luckysheet-functionbox-cell\" class=\"luckysheet-functionbox-cell-input luckysheet-mousedown-cancel\" tabindex=\"0\" contenteditable=\"true\" dir=\"ltr\" aria-autocomplete=\"list\" aria-label=\"D4\"></div>\\n                                    </div>\\n                                </div>\\n                            </div>   \\n                        </div> \\n                    </div> \\n                    <div class=\"luckysheet-grid-container luckysheet-scrollbars-enabled\"> \\n                        <div class=\"luckysheet-grid-window\"> \\n                            <div class=\"luckysheet-help-sub\"></div> \\n                            <div class=\"luckysheet-grid-window-1\" id=\"luckysheet-grid-window-1\">\\n                                <canvas id=\"luckysheetTableContent\" class=\"luckysheetTableContent\"></canvas> \\n                                <table class=\"luckysheet-grid-window-2\" cellspacing=\"0\" cellpadding=\"0\" dir=\"ltr\" tabindex=\"-1\" > \\n                                    <tbody> \\n                                        <tr> \\n                                            <td valign=\"top\" class=\"luckysheet-paneswrapper\"> \\n                                                <div class=\"luckysheet-left-top\" id=\"luckysheet-left-top\"> </div> \\n                                            </td> \\n                                            <td valign=\"top\" class=\"luckysheet-paneswrapper\"> \\n                                                <div id=\"luckysheet-cols-h-c\" class=\"luckysheet-cols-h-c\">\\n                                                    <div class=\"luckysheet-cols-change-size\" id=\"luckysheet-cols-change-size\"></div>  \\n                                                    <div class=\"luckysheet-cols-menu-btn luckysheet-mousedown-cancel\" id=\"luckysheet-cols-menu-btn\"><i class=\"fa fa-caret-down luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></div>  \\n                                                    <div class=\"luckysheet-cols-h-hover\" id=\"luckysheet-cols-h-hover\"></div>  \\n                                                    <div id=\"luckysheet-cols-h-selected\"></div>  \\n                                                    <div class=\"luckysheet-grdusedrange\"></div>  \\n                                                    <div class=\"luckysheet-grdblkflowpush\"></div>  \\${columnHeader}\\n                                                </div>\\n                                            </td>\\n                                        </tr>\\n                                        <tr>\\n                                            <td valign=\"top\" class=\"luckysheet-paneswrapper\"> \\n                                                <div class=\"luckysheet-rows-h\" id=\"luckysheet-rows-h\"> \\n                                                    <div class=\"luckysheet-rows-change-size\" id=\"luckysheet-rows-change-size\"></div> \\n                                                    <div class=\"luckysheet-rows-h-hover\" id=\"luckysheet-rows-h-hover\"></div> \\n                                                    <div id=\"luckysheet-rows-h-selected\"></div>  \\n                                                    <div class=\"luckysheet-grdusedrange\"></div>  \\n                                                    <div class=\"luckysheet-grdblkflowpush\"></div> \\${rowHeader}\\n                                                </div> \\n                                            </td>  \\n                                            <td valign=\"top\" class=\"luckysheet-paneswrapper\">\\n                                                <div class=\"luckysheet-cell-loading\" id=\"luckysheet-cell-loading\">\\n                                                    <div class=\"luckysheet-cell-loading-inner\">\\n                                                        <i class=\"fa fa-circle-o-notch fa-spin\"></i>\\n                                                        <span></span>\\n                                                    </div>\\n                                                </div> \\n                                                <div class=\"luckysheet-cell-freezen\"></div> \\n                                                <div class=\"luckysheet-scrollbars luckysheet-scrollbar-ltr luckysheet-scrollbar-x\" id=\"luckysheet-scrollbar-x\"><div></div></div> \\n                                                <div class=\"luckysheet-scrollbars luckysheet-scrollbar-ltr luckysheet-scrollbar-y\" id=\"luckysheet-scrollbar-y\"><div></div></div> \\n                                                <div class=\"luckysheet-cell-main \" id=\"luckysheet-cell-main\">\\n                                                    <div id=\"luckysheet-formula-functionrange\"></div>  \\n                                                    <div id=\"luckysheet-formula-functionrange-select\" class=\"luckysheet-selection-copy luckysheet-formula-functionrange-select\">\\n                                                        <div class=\"luckysheet-selection-copy-top luckysheet-copy\"></div>\\n                                                        <div class=\"luckysheet-selection-copy-right luckysheet-copy\"></div>\\n                                                        <div class=\"luckysheet-selection-copy-bottom luckysheet-copy\"></div>\\n                                                        <div class=\"luckysheet-selection-copy-left luckysheet-copy\"></div>\\n                                                        <div class=\"luckysheet-selection-copy-hc\"></div>\\n                                                    </div>  \\n                                                    <div class=\"luckysheet-row-count-show luckysheet-count-show\" id=\"luckysheet-row-count-show\"></div>\\n                                                    <div class=\"luckysheet-column-count-show luckysheet-count-show\" id=\"luckysheet-column-count-show\"></div>\\n                                                    <div class=\"luckysheet-change-size-line\" id=\"luckysheet-change-size-line\"></div>  \\n                                                    <div class=\"luckysheet-cell-selected-focus\" id=\"luckysheet-cell-selected-focus\"></div>  \\n                                                    <div id=\"luckysheet-selection-copy\"></div>  \\n                                                    <div id=\"luckysheet-chart-rangeShow\"></div>\\n                                                    <div class=\"luckysheet-cell-selected-extend\" id=\"luckysheet-cell-selected-extend\"></div>  \\n                                                    <div class=\"luckysheet-cell-selected-move\" id=\"luckysheet-cell-selected-move\"></div>  \\n                                                    <div id=\"luckysheet-cell-selected-boxs\">\\n                                                        <div id=\"luckysheet-cell-selected\" class=\"luckysheet-cell-selected\">\\n                                                            <div class=\"luckysheet-cs-inner-border\"></div>\\n                                                            <div class=\"luckysheet-cs-fillhandle\"></div>\\n                                                            <div class=\"luckysheet-cs-inner-border\"></div>\\n                                                            <div class=\"luckysheet-cs-draghandle-top luckysheet-cs-draghandle\"></div>\\n                                                            <div class=\"luckysheet-cs-draghandle-bottom luckysheet-cs-draghandle\"></div>\\n                                                            <div class=\"luckysheet-cs-draghandle-left luckysheet-cs-draghandle\"></div>\\n                                                            <div class=\"luckysheet-cs-draghandle-right luckysheet-cs-draghandle\"></div>\\n                                                            <div class=\"luckysheet-cs-touchhandle luckysheet-cs-touchhandle-lt\"><div class=\"luckysheet-cs-touchhandle-btn\"></div></div>\\n                                                            <div class=\"luckysheet-cs-touchhandle luckysheet-cs-touchhandle-rb\"><div class=\"luckysheet-cs-touchhandle-btn\"></div></div>\\n                                                        </div>\\n                                                    </div>\\n                                                    <div id=\"luckysheet-postil-showBoxs\"></div>\\n                                                    <div id=\"luckysheet-multipleRange-show\"></div>  \\n                                                    <div id=\"luckysheet-dynamicArray-hightShow\"></div>  \\n                                                    <div id=\"luckysheet-image-showBoxs\">\\n                                                        <div id=\"luckysheet-modal-dialog-activeImage\" class=\"luckysheet-modal-dialog\" style=\"display:none;padding:0;position:absolute;z-index:300;\">\\n                                                            <div class=\"luckysheet-modal-dialog-border\" style=\"position:absolute;\"></div> \\n                                                            <div class=\"luckysheet-modal-dialog-content\"></div>  \\n                                                            <div class=\"luckysheet-modal-dialog-resize\">\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt\" data-type=\"lt\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt\" data-type=\"mt\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm\" data-type=\"lm\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm\" data-type=\"rm\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt\" data-type=\"rt\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb\" data-type=\"lb\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb\" data-type=\"mb\"></div>\\n                                                                <div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb\" data-type=\"rb\"></div>\\n                                                            </div>\\n                                                            <div class=\"luckysheet-modal-dialog-controll\">\\n                                                                <span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-crop\" role=\"button\" tabindex=\"0\" aria-label=\"裁剪\" title=\"裁剪\">\\n                                                                    <i class=\"fa fa-pencil\" aria-hidden=\"true\"></i>\\n                                                                </span>\\n                                                                <span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-restore\" role=\"button\" tabindex=\"0\" aria-label=\"恢复原图\" title=\"恢复原图\">\\n                                                                    <i class=\"fa fa-window-maximize\" aria-hidden=\"true\"></i>\\n                                                                </span>\\n                                                                <span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-del\" role=\"button\" tabindex=\"0\" aria-label=\"删除\" title=\"删除\">\\n                                                                    <i class=\"fa fa-trash\" aria-hidden=\"true\"></i>\\n                                                                </span>\\n                                                            </div>\\n                                                        </div>\\n                                                        <div id=\"luckysheet-modal-dialog-cropping\" class=\"luckysheet-modal-dialog\" style=\"display:none;padding:0;position:absolute;z-index:300;\">\\n                                                            <div class=\"cropping-mask\"></div>\\n                                                            <div class=\"cropping-content\"></div>\\n                                                            <div class=\"luckysheet-modal-dialog-border\" style=\"position:absolute;\"></div>\\n                                                            <div class=\"luckysheet-modal-dialog-resize\">\\n                                                                <div class=\"resize-item lt\" data-type=\"lt\"></div> \\n                                                                <div class=\"resize-item mt\" data-type=\"mt\"></div> \\n                                                                <div class=\"resize-item lm\" data-type=\"lm\"></div> \\n                                                                <div class=\"resize-item rm\" data-type=\"rm\"></div> \\n                                                                <div class=\"resize-item rt\" data-type=\"rt\"></div> \\n                                                                <div class=\"resize-item lb\" data-type=\"lb\"></div> \\n                                                                <div class=\"resize-item mb\" data-type=\"mb\"></div> \\n                                                                <div class=\"resize-item rb\" data-type=\"rb\"></div>\\n                                                            </div>\\n                                                            <div class=\"luckysheet-modal-dialog-controll\">\\n                                                                <span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-crop\" role=\"button\" tabindex=\"0\" aria-label=\"裁剪\" title=\"裁剪\">\\n                                                                    <i class=\"fa fa-pencil\" aria-hidden=\"true\"></i>\\n                                                                </span>\\n                                                                <span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-restore\" role=\"button\" tabindex=\"0\" aria-label=\"恢复原图\" title=\"恢复原图\">\\n                                                                    <i class=\"fa fa-window-maximize\" aria-hidden=\"true\"></i>\\n                                                                </span>\\n                                                                <span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-del\" role=\"button\" tabindex=\"0\" aria-label=\"删除\" title=\"删除\">\\n                                                                    <i class=\"fa fa-trash\" aria-hidden=\"true\"></i>\\n                                                                </span>\\n                                                            </div>\\n                                                        </div>\\n                                                        <div class=\"img-list\"></div>\\n                                                        <div class=\"cell-date-picker\">\\n                                                            <input id=\"cellDatePickerBtn\" class=\"formulaInputFocus\" readonly=\"readonly\"/>\\n                                                        </div>\\n                                                    </div>\\n                                                    <div id=\"luckysheet-dataVerification-dropdown-btn\"></div>\\n                                                    <div id=\"luckysheet-formula-refresh\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M4 20v-2h2.75l-.4-.35q-1.225-1.225-1.788-2.663T4 12.05q0-2.775 1.663-4.938T10 4.25v2.1Q8.2 7 7.1 8.562T6 12.05q0 1.125.425 2.188T7.75 16.2l.25.25V14h2v6H4Zm10-.25v-2.1q1.8-.65 2.9-2.212T18 11.95q0-1.125-.425-2.187T16.25 7.8L16 7.55V10h-2V4h6v2h-2.75l.4.35q1.225 1.225 1.788 2.663T20 11.95q0 2.775-1.663 4.938T14 19.75Z\"/></svg></div>\\n                                                    <div id=\"luckysheet-dataVerification-dropdown-List\" class=\"luckysheet-mousedown-cancel\"></div>\\n                                                    <div id=\"luckysheet-dataVerification-showHintBox\" class=\"luckysheet-mousedown-cancel\"></div>\\n                                                    <div class=\"luckysheet-cell-copy\"></div>  \\n                                                    <div class=\"luckysheet-grdblkflowpush\"></div>  \\${flow} \\n                                                </div> \\n                                            </td> \\n                                        </tr> \\n                                    </tbody> \\n                                </table> \\n                            </div> \\n                            <div class=\"luckysheet-sheet-area luckysheet-noselected-text\" id=\"luckysheet-sheet-area\">\\n                                <div id=\"luckysheet-sheet-content\">\\n                                    <div id=\"luckysheet-sheets-add\" class=\"luckysheet-sheets-add lucky-button-custom\"><i class=\"iconfont-luckysheet luckysheet-iconfont-jia1\"></i></div>\\n                                    <div id=\"luckysheet-sheets-m\" class=\"luckysheet-sheets-m lucky-button-custom\"><i class=\"iconfont-luckysheet luckysheet-iconfont-caidan2\"></i></div>\\n                                    <div class=\"luckysheet-sheet-container\" id=\"luckysheet-sheet-container\">\\n                                        <div class=\"docs-sheet-fade docs-sheet-fade-left\" style=\"display: none;\">\\n                                            <div class=\"docs-sheet-fade3\"></div>\\n                                            <div class=\"docs-sheet-fade2\"></div>\\n                                            <div class=\"docs-sheet-fade1\"></div>\\n                                        </div>\\n                                        <div class=\"docs-sheet-fade docs-sheet-fade-right\" style=\"display: none;\">\\n                                            <div class=\"docs-sheet-fade1\"></div>\\n                                            <div class=\"docs-sheet-fade2\"></div>\\n                                            <div class=\"docs-sheet-fade3\"></div>\\n                                        </div>\\n                                        <div class=\"luckysheet-sheet-container-c\" id=\"luckysheet-sheet-container-c\"></div>\\n                                    </div>\\n                                    <div id=\"luckysheet-sheets-leftscroll\" class=\"luckysheet-sheets-scroll lucky-button-custom\"><i class=\"fa fa-caret-left\"></i></div>\\n                                    <div id=\"luckysheet-sheets-rightscroll\" class=\"luckysheet-sheets-scroll lucky-button-custom\"><i class=\"fa fa-caret-right\"></i></div>\\n                                </div>\\n                            </div> \\n                        </div> \\n                        <div class=\"luckysheet-stat-area\"> \\n                            <div class=\"luckysheet-sta-c\">\\n                                <div class=\"luckysheet-zoom-content\" id=\"luckysheet-zoom-content\">\\n                                    <div class=\"luckysheet-zoom-minus\" id=\"luckysheet-zoom-minus\">\\n                                        <div class=\"luckysheet-zoom-minus-icon\"></div>\\n                                    </div>\\n                                    <div class=\"luckysheet-zoom-slider\" id=\"luckysheet-zoom-slider\">\\n                                        <div class=\"luckysheet-zoom-line\"></div>\\n                                        <div class=\"luckysheet-zoom-cursor\" id=\"luckysheet-zoom-cursor\"></div>\\n                                        <div class=\"luckysheet-zoom-hundred\"></div>\\n                                    </div>\\n                                    <div class=\"luckysheet-zoom-plus\" id=\"luckysheet-zoom-plus\">\\n                                        <div class=\"luckysheet-zoom-plus-icon\"></div>\\n                                    </div>\\n                                    <div class=\"luckysheet-zoom-ratioText\" id=\"luckysheet-zoom-ratioText\">100%</div>\\n                                </div>\\n                                <div class=\"luckysheet-sta-content\" id=\"luckysheet-sta-content\"></div>  \\n                                \\x3c!--<div class=\"luckysheet-bottom-content\" id=\"luckysheet-bottom-content-show\"></div> --\\x3e\\n                            </div> \\n                        </div> \\n                    </div>\\n                    <div id=\"luckysheet-copy-content\" contenteditable=\"true\"></div>\\n                    <input id=\"luckysheet-copy-btn\" type=\"button\" data-clipboard-target=\"luckysheet-copy-content\">\\n                    <div id=\"testdpidiv\" style=\"height: 1in; left: -100%; position: absolute; top: -100%; width: 1in;\"></div>\\n                  </div>`},dt='<div id=\"luckysheet-cell-flow_${index}\" class=\"luckysheet-cell-flow luckysheetsheetchange\" style=\"width:${width}px;\"><div class=\"luckysheet-cell-flow-clip\"><div class=\"luckysheet-grdblkpush\"></div>${flow}</div></div>',ht=\"\",ft=function(){let e=X().pivotTable;return'<div class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel\" id=\"luckysheet-pivotTable-config-option\"> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <div class=\"luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.titleSort+'</span> <select class=\"luckysheet-mousedown-cancel\" style=\"height:24px;\" id=\"luckysheet-pivotTable-config-option-order\"> <option selected=\"selected\" value=\"default\">'+e.titleNoSort+'</option> <option value=\"asc\">'+e.titleSortAsc+'</option> <option value=\"desc\">'+e.titleSortDesc+'</option> </select> </div> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <div class=\"luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.titleSortBy+'</span> <select class=\"luckysheet-mousedown-cancel\" style=\"height:24px;\" id=\"luckysheet-pivotTable-config-option-orderby\"> </select> </div> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <div class=\"luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.titleShowSum+'</span> <select class=\"luckysheet-mousedown-cancel\" style=\"height:24px;\" id=\"luckysheet-pivotTable-config-option-stastic\"> <option  value=\"0\">'+e.titleStasticFalse+'</option> <option value=\"1\" selected=\"selected\">'+e.titleStasticTrue+\"</option> </select> </div> </div> </div> </div>\"},mt=function(){let e=X().pivotTable;return'<div class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel\" id=\"luckysheet-pivotTable-config-option-sumtype\"> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"SUM\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsSUM+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"COUNT\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsCOUNT+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"COUNTA\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsCOUNTA+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"COUNTUNIQUE\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsCOUNTUNIQUE+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"AVERAGE\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsAVERAGE+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"MAX\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsMAX+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"MIN\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsMIN+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"MEDIAN\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsMEDIAN+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"PRODUCT\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsPRODUCT+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"STDEV\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsSTDEV+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"STDEVP\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsSTDEVP+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"VAR\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticslet+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> <div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" sumtype=\"VARP\"> <div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\"> <span class=\"luckysheet-mousedown-cancel\">'+e.valueStatisticsVARP+'</span> <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel\" style=\"user-select: none;\"><i class=\"fa fa-check luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></span> </div> </div> </div>'},pt='<div style=\"${style}\" id=\"luckysheet-sheets-item${index}\" data-index=\"${index}\" class=\"luckysheet-sheets-item ${active}\"><span class=\"luckysheet-sheets-item-name\" spellcheck =\"false\" contenteditable=\"false\">${name}</span> <span class=\"luckysheet-sheets-item-menu luckysheet-mousedown-cancel\"><i class=\"fa fa-sort-desc luckysheet-mousedown-cancel\"></i></span>${colorset}</div>',gt='<div class=\"luckysheet-cols-h-cells luckysheetsheetchange\"  id=\"luckysheet-cols-h-cells_${index}\" style=\"width:${width}px;\"> <div class=\"luckysheet-cols-h-cells-c\"> <div class=\"luckysheet-grdblkpush\"></div>${column}</div></div>',yt='<div class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel\" id=\"luckysheet-sheet-list\">${item}</div>',vt='<div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\"  id=\"luckysheet-sheet-btn${index}\" data-index=\"${index}\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"${style}\" ><span class=\"icon luckysheet-mousedown-cancel\">${icon}</span>${name}</div></div>',bt='<div dir=\"ltr\"><div class=\"luckysheet-input-box-index\" id=\"luckysheet-input-box-index\"></div><div id=\"luckysheet-input-box\" spellcheck=\"false\" aria-hidden=\"false\" class=\"luckysheet-input-box\"><div class=\"luckysheet-cell-input editable\" tabindex=\"0\" role=\"combobox\" contenteditable=\"true\" id=\"luckysheet-rich-text-editor\" dir=\"ltr\" g_editable=\"true\" aria-autocomplete=\"list\"></div></div></div>',kt='<div id=\"${id}\" style=\"${style}\" class=\"luckysheet-modal-dialog ${addclass}\" tabindex=\"0\" role=\"dialog\" aria-labelledby=\":41e\" dir=\"ltr\"> <div class=\"luckysheet-modal-dialog-title luckysheet-modal-dialog-title-draggable\"> <span class=\"luckysheet-modal-dialog-title-text\" role=\"heading\">${title}</span>\\t <span class=\"luckysheet-modal-dialog-title-close\" role=\"button\" tabindex=\"0\" aria-label=\"${close}\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></span> </div> <div class=\"luckysheet-modal-dialog-content\">${content}</div> <div class=\"luckysheet-modal-dialog-buttons\">\\t ${botton} </div></div>',wt='<div class=\"luckysheet-modal-dialog-mask\" id=\"luckysheet-modal-dialog-mask\"></div>',xt=function(){let e=X().pivotTable;return`\\n        <div id=\"luckysheet-modal-dialog-slider-pivot\" class=\"luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-pivot\">\\n        <div class=\"luckysheet-modal-dialog-slider-title\"> <span>${e.title}</span> <span id=\"luckysheet-modal-dialog-slider-close\" title=\"${e.closePannel}\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></span> </div>\\n        <div class=\"luckysheet-modal-dialog-slider-content\">\\n            <div class=\"luckysheet-modal-dialog-slider-range\">\\n                <div id=\"luckysheet-dialog-pivotTable-range\"></div>\\n                <div id=\"luckysheet-dialog-pivotTable-range-seleted\">${e.editRange}</div>\\n            </div>\\n            <div class=\"luckysheet-modal-dialog-slider-list-title\"> ${e.tipPivotFieldSelected} <span title=\"${e.tipClearSelectedField}\" id=\"luckysheet-dialog-pivotTable-clearitem\">${e.btnClearSelectedField}</span></div>\\n            <div id=\"luckysheet-modal-dialog-pivotTable-list\" class=\"luckysheet-modal-dialog-slider-list luckysheet-scrollbars\"> </div>\\n            <div class=\"luckysheet-modal-dialog-slider-config-c\">\\n                <div class=\"luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-filter\">\\n                    <div> <span><i class=\"fa fa-filter luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i> ${e.btnFilter}</span> </div>\\n                    <div id=\"luckysheet-modal-dialog-config-filter\" class=\"luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars\"> </div>\\n                </div>\\n                <div class=\"luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-row\">\\n                    <div> <span><i class=\"fa fa-list-alt\" aria-hidden=\"true\"></i> ${e.titleRow}</span> </div>\\n                    <div id=\"luckysheet-modal-dialog-config-row\" class=\"luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars\"> </div>\\n                </div>\\n                <div class=\"luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-column\">\\n                    <div> <span><i class=\"fa fa-indent\" aria-hidden=\"true\"></i> ${e.titleColumn}</span> </div>\\n                    <div id=\"luckysheet-modal-dialog-config-column\" class=\"luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars\"> </div>\\n                </div>\\n                <div class=\"luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-value\">\\n                    <div> <span><i class=\"fa fa-cube\" aria-hidden=\"true\"></i> ${e.titleValue}</span> <span style=\"float: right;margin-right: 10px;display:none;\" id=\"luckysheetpivottablevaluecolrowshow\"><label style=\"padding:0px 5px;margin:0px;font-size:12px;height:15px;line-height:15px;\" title=\"${e.tipShowColumn}\" for=\"luckysheetpivottablevaluecolrow\">${e.titleColumn}</label> <input type=\"radio\" checked=\"checked\" value=\"1\" name=\"luckysheetpivottablevaluecolrow\" id=\"luckysheetpivottablevaluecolrow\" /> <label style=\"padding:0px 5px;margin:0px;font-size:12px;height:15px;line-height:15px;\" title=\"${e.tipShowRow}\" for=\"luckysheetpivottablevaluecolrow1\">${e.titleRow}</label> <input type=\"radio\" value=\"0\" name=\"luckysheetpivottablevaluecolrow\" id=\"luckysheetpivottablevaluecolrow1\" /></span></div>\\n                    <div id=\"luckysheet-modal-dialog-config-value\" class=\"luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars\"> </div>\\n                </div>\\n            </div>\\n        </div>\\n        </div>\\n        `},_t='<div class=\"luckysheet-chart-point-config\"> <div class=\"luckysheet-chart-point-config-set\"> <div class=\"luckysheet-chart-point-config-left\"> <div class=\"luckysheet-chart-point-config-left-top\"> <div class=\"luckysheet-chart-point-searchcondition\"> <div class=\"luckysheet-datavisual-content-row\" style=\"margin-bottom: 0px;margin-top: 0px;height: 30px;\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">选择维度</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <select data-tips=\"维度选择\" name=\"luckysheetpointconfigsearchdim\" id=\"luckysheetpointconfigsearchdim\"> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"margin-bottom: 0px;margin-top: 3px;height: 30px;\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;\">排序</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <label data-tips=\"无排序\" for=\"luckysheetpointconfigsearchorderno\">无排序</label> <input type=\"radio\" checked=\"checked\" value=\"0\" name=\"luckysheetpointconfigsearchorder\" id=\"luckysheetpointconfigsearchorderno\"> <label data-tips=\"升序\" for=\"luckysheetpointconfigsearchorderasc\">升序</label> <input type=\"radio\" value=\"1\" name=\"luckysheetpointconfigsearchorder\" id=\"luckysheetpointconfigsearchorderasc\"> <label data-tips=\"降序\" for=\"luckysheetpointconfigsearchorderdesc\">降序</label> <input type=\"radio\" value=\"2\" name=\"luckysheetpointconfigsearchorder\" id=\"luckysheetpointconfigsearchorderdesc\"> </div> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"margin-bottom: 0px;margin-top: 5px;height: 30px;\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:90%;text-align: left;\"> <select data-width=\"70\" data-tips=\"按照什么方式查询\" name=\"luckysheetpointconfigsearchtype\" id=\"luckysheetpointconfigsearchtype\"> <option value=\"0\" selected=\"selected\">按照名称</option> <option value=\"1\">按排序前%</option> </select> <input data-tips=\"查询关于点的关键字\" id=\"luckysheetpointconfigsearchcontent\" type=\"text\" class=\"luckysheet-datavisual-config-input-no\" style=\"width:40%;\" placeholder=\"查询内容\" /> <button id=\"luckysheetpointconfigsearchcomfirm\" class=\"btn btn-primary luckysheet-model-conform-btn\">查询</button> </div> </div> </div> </div> <div class=\"luckysheet-chart-point-config-left-mid\"> <span id=\"luckysheet-chart-point-btn-all\" class=\"luckysheet-mousedown-cancel\">全选</span> - <span id=\"luckysheet-chart-point-btn-clear\" class=\"luckysheet-mousedown-cancel\">清除</span> - <span id=\"luckysheet-chart-point-btn-contra\" class=\"luckysheet-mousedown-cancel\">反选</span><span style=\"text-decoration:none;color:#8D8D8D;float:right;margin-right:40px;cursor:default;\" class=\"luckysheet-mousedown-cancel\">可以直接框选数据点</span> </div> <div class=\"luckysheet-chart-point-config-left-bottom\"> <div class=\"luckysheet-chart-point-searchitem-c luckysheet-noselected-text\">  </div> </div> </div> <div class=\"luckysheet-chart-point-config-right\"> <div class=\"luckysheet-chart-point-itemconfig\"> <div class=\"luckysheet-datavisual-content-row\" style=\"font-size: 16px;font-weight: bold;\"> 数据点设置 </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">图形颜色</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <input data-tips=\"颜色\" class=\"luckysheet-datavisual-config-colorOpacity\" id=\"scattersingleitemstylecolor\" type=\"text\" data-bigclass=\"scattersingle\" data-attr=\"itemstyle\" data-func=\"color\" /> </div> </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">图形大小</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <select data-sliderdiy=\"scattersingleallsymbolsizeslider\" data-tips=\"点大小设置\" name=\"scattersingleallsymbolsize\" id=\"scattersingleallsymbolsize\" data-width=\"50\" data-bigclass=\"scattersingle\" data-attr=\"all\" data-func=\"symbolsize\"> <option value=\"4\" selected=\"selected\">4px</option> <option value=\"6\">6px</option> <option value=\"8\">8px</option> <option value=\"10\">10px</option> <option value=\"12\">12px</option> <option value=\"14\">14px</option> <option value=\"16\">16px</option> <option value=\"diy\">自定义</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"display:none;\"> <div data-tips=\"滑动修改点大小\" id=\"scattersingleallsymbolsizeslider\" data-bigclass=\"scattersingle\" data-attr=\"all\" data-func=\"symbolsize\" class=\"luckysheet-datavisual-config-slider\" style=\"width:70%;\" data-min=\"1\" data-max=\"50\" data-step=\"1\"></div> <input data-tips=\"自定义点大小\" data-sliderid=\"scattersingleallsymbolsizeslider\" id=\"scattersingleallsymbolsizesliderdiy\" type=\"text\" class=\"luckysheet-datavisual-config-input\" data-bigclass=\"scattersingle\" data-attr=\"all\" data-func=\"symbolsize\" placeholder=\"请输入\" style=\"width:10%;margin-left:10px;text-align:center;margin-right: 2px;\" /><label for=\"scattersingleallsymbolsizesliderdiy\">px</label> </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">图形形状</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <select data-tips=\"点类型设置\" data-width=\"70\" name=\"scattersingleallsymboltype\" id=\"scattersingleallsymboltype\" data-bigclass=\"scattersingle\" data-attr=\"all\" data-func=\"symboltype\"> <option value=\"emptyCircle\" selected=\"selected\">空心圆</option> <option value=\"circle\">圆形</option> <option value=\"emptyRectangle\">空心矩形</option> <option value=\"rect\">矩形</option> <option value=\"roundRect\">圆角矩形</option> <option value=\"emptyTriangle\">空心三角</option> <option value=\"triangle\">三角形</option> <option value=\"emptyDiamond\">空心菱形</option> <option value=\"diamond\">菱形</option> <option value=\"droplet\">水滴</option> <option value=\"pin\">标注</option> <option value=\"arrow\">箭头</option> <option value=\"heart\">心形</option> <option value=\"star\">星星</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-rowsplit-sub\"></div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">边框粗细</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <select data-sliderdiy=\"scattersingleitemstyleborderwidthslider\" data-tips=\"点边框粗细\" name=\"scattersingleitemstyleborderwidth\" id=\"scattersingleitemstyleborderwidth\" data-width=\"50\" data-bigclass=\"scattersingle\" data-attr=\"itemstyle\" data-func=\"borderwidth\"><option value=\"0\" selected=\"selected\">无</option> <option value=\"1\">1px</option> <option value=\"2\">2px</option> <option value=\"3\">3px</option> <option value=\"4\">4px</option> <option value=\"5\">5px</option> <option value=\"6\">6px</option> <option value=\"7\">7px</option> <option value=\"8\">8px</option> <option value=\"diy\">自定义</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"display:none;\"> <div data-tips=\"滑动修改边框粗细\" id=\"scattersingleitemstyleborderwidthslider\" data-bigclass=\"scattersingle\" data-attr=\"itemstyle\" data-func=\"borderwidth\" class=\"luckysheet-datavisual-config-slider\" style=\"width:70%;\" data-min=\"12\" data-max=\"100\" data-step=\"1\"></div> <input data-tips=\"自定义边框粗细\" data-sliderid=\"scattersingleitemstyleborderwidthslider\" id=\"scattersingleitemstyleborderwidthsliderdiy\" type=\"text\" class=\"luckysheet-datavisual-config-input\" data-bigclass=\"scattersingle\" data-attr=\"itemstyle\" data-func=\"borderwidth\" placeholder=\"请输入\" style=\"width:10%;margin-left:10px;text-align:center;margin-right: 2px;\" /><label for=\"scattersingleitemstyleborderwidthsliderdiy\">%</label> </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">边框样式</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <select data-tips=\"点边框类型设置\" data-width=\"50\" name=\"scattersingleitemstyleborderlinetype\" id=\"scattersingleitemstyleborderlinetype\" data-bigclass=\"scattersingle\" data-attr=\"itemstyle\" data-func=\"borderlinetype\"> <option value=\"solid\" selected=\"selected\">实线</option> <option value=\"dashed\">虚线</option> <option value=\"dotted\">点线</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">边框颜色</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <input data-tips=\"点边框颜色\" class=\"luckysheet-datavisual-config-colorOpacity\" id=\"scattersingleitemstyleborderlinecolor\" type=\"text\" data-bigclass=\"scattersingle\" data-attr=\"itemstyle\" data-func=\"borderlinecolor\" /> </div> </div> <div class=\"luckysheet-datavisual-content-rowsplit-sub\"></div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\"><i class=\"fa fa-th-large\" aria-hidden=\"true\"></i> 文字标签</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <label data-tips=\"显示数据点的标签\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelshow\" for=\"scattersinglelabellabelshow\">显示</label> <input type=\"radio\" checked=\"checked\" value=\"1\" name=\"scattersinglelabellabelshow\" id=\"scattersinglelabellabelshow\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelshow\"> <label data-tips=\"隐藏数据点的标签\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelshow\" for=\"scattersinglelabellabelshow1\">隐藏</label> <input type=\"radio\" value=\"0\" name=\"scattersinglelabellabelshow\" id=\"scattersinglelabellabelshow1\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelshow\"> </div> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"height:auto;line-height: initial;margin-left:auto;\" showfor=\"scattersinglelabellabelshow1\" hidefor=\"scattersinglelabellabelshow\"> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:40%;\">数值比例</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:50%;\"> <select data-tips=\"刻度数值放大比例\" name=\"scattersinglelabelformatratio\" id=\"scattersinglelabelformatratio\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"formatratio\"> <option value=\"0.01\">乘以100</option> <option value=\"0.1\">乘以10</option> <option value=\"1\" selected=\"selected\">默认</option> <option value=\"10\">除以10</option> <option value=\"100\">除以100</option> <option value=\"1000\">除以1000</option> <option value=\"10000\">除以1万</option> <option value=\"100000\">除以10万</option> <option value=\"1000000\">除以一百万</option> <option value=\"10000000\">除以一千万</option> <option value=\"100000000\">除以一亿</option> <option value=\"1000000000\">除以十亿</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:40%;white-space: nowrap;\">小数位数</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:50%;\"> <select data-tips=\"数值小数点位数\" name=\"scattersinglelabelfloatlen\" id=\"scattersinglelabelfloatlen\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"floatlen\"> <option value=\"auto\" selected=\"selected\">自动显示</option> <option value=\"0\">整数</option> <option value=\"1\">1位小数</option> <option value=\"2\">2位小数</option> <option value=\"3\">3位小数</option> <option value=\"4\">4位小数</option> <option value=\"5\">5位小数</option> <option value=\"6\">6位小数</option> <option value=\"7\">7位小数</option> <option value=\"8\">8位小数</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\"> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:20%;\">标签格式</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:70%;\"> <select data-sliderdiy=\"scattersinglelabelcontentformatslider\" data-tips=\"标签显示格式\" name=\"scattersinglelabelcontentformat\" id=\"scattersinglelabelcontentformat\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"contentformat\"> <option value=\"default\" selected=\"selected\">默认</option> <option value=\"1\">仅数据名</option> <option value=\"2\">数据名+2维数值</option> <option value=\"5\">数据名+全部数值</option> <option value=\"diy\">自定义</option> </select> </div> </div> <div style=\"display:none;\"> <div class=\"luckysheet-datavisual-content-row\" id=\"scattersinglelabelcontentformatslider\"> <div style=\"text-align:center; width:60px; display:inline-block;\">数据名称</div> <label data-tips=\"是否显示数据名\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"scattersingledatalabelshow\" for=\"scattersinglelabeldatalabelshow\" style=\"font-weight:bold;\"><i class=\"fa fa-eye\" aria-hidden=\"true\"></i></label> <input type=\"checkbox\" checked=\"checked\" name=\"scattersinglelabeldatalabelshow\" id=\"scattersinglelabeldatalabelshow\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"scattersingledatalabelshow\"> <input data-tips=\"显示在数据名前部文字\" placeholder=\"前缀\" id=\"scattersinglelabeldatalabelprefix\" type=\"text\" class=\"luckysheet-datavisual-config-input\" style=\"width:60px;height:19px;\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"scattersingledatalabelprefix\" /> <input data-tips=\"显示在数据名尾部文字\" placeholder=\"后缀\" id=\"scattersinglelabeldatalabelsuffix\" type=\"text\" class=\"luckysheet-datavisual-config-input\" style=\"width:60px;height:19px;\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"scattersingledatalabelsuffix\" /> <label data-tips=\"是否在数据名后换行\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"scattersingledatalabelline\" for=\"scattersinglelabeldatalabelline\" style=\"font-weight:bold;\">换行</label> <input type=\"checkbox\" checked=\"checked\" name=\"scattersinglelabeldatalabelline\" id=\"scattersinglelabeldatalabelline\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"scattersingledatalabelline\"> </div> </div> <div class=\"luckysheet-datavisual-content-row\" > <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x\" style=\"width:10%;white-space:nowrap;\">标签位置</div> <div class=\"luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x\" style=\"width:80%;\"> <select data-sliderdiy=\"scattersinglelabellabelplaceslider\" data-tips=\"标签距离图形位置\" data-width=\"70\" name=\"scattersinglelabellabelplace\" id=\"scattersinglelabellabelplace\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelplace\"> <option value=\"top\" selected=\"selected\">顶端</option> <option value=\"left\">左侧</option> <option value=\"right\">右侧</option> <option value=\"bottom\">底部</option> <option value=\"inside\">内部居中</option> <option value=\"diy\">自定义</option> <option value=\"insideLeft\">内部左侧</option> <option value=\"insideRight\">内部右侧</option> <option value=\"insideTop\">内部顶端</option> <option value=\"insideBottom\">内部底端</option> <option value=\"insideTopLeft\">内部左上</option> <option value=\"insideBottomLeft\">内部左下</option> <option value=\"insideTopRight\">内部右上</option> <option value=\"insideBottomRight\">内部右下</option> </select> </div> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"display:none;height:65px;\"> <div data-tips=\"滑动修改点文本水平位置\" id=\"scattersinglelabellabelplaceslider\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelplacediy\" class=\"luckysheet-datavisual-config-slider\" style=\"width:70%;\" data-min=\"-100\" data-max=\"100\" data-step=\"1\"></div> <input data-tips=\"自定义点文本水平位置\" data-sliderid=\"scattersinglelabellabelplaceslider\" id=\"scattersinglelabellabelplacesliderdiy\" type=\"text\" class=\"luckysheet-datavisual-config-input\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelplacediy\" placeholder=\"请输入\" style=\"width:10%;margin-left:10px;text-align:center;margin-right: 2px;\" /><label for=\"scattersinglelabellabelplacesliderdiy\">px</label> <br /> <div data-tips=\"滑动修改点文本垂直位置\" id=\"scattersinglelabellabelplaceslider1\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelplacediy\" class=\"luckysheet-datavisual-config-slider\" style=\"width:70%;\" data-min=\"-100\" data-max=\"100\" data-step=\"1\"></div> <input data-tips=\"自定义点文本垂直位置\" data-sliderid=\"scattersinglelabellabelplaceslider1\" id=\"scattersinglelabellabelplaceslider1diy\" type=\"text\" class=\"luckysheet-datavisual-config-input\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelplacediy\" placeholder=\"请输入\" style=\"width:10%;margin-left:10px;text-align:center;margin-right: 2px;\" /><label for=\"scattersinglelabellabelplaceslider1diy\">px</label> </div> <div class=\"luckysheet-datavisual-content-row\"> <label data-tips=\"加粗\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelbold\" for=\"scattersinglelabellabelbold\" style=\"font-weight:bold;\"><i class=\"fa fa-bold\" aria-hidden=\"true\"></i></label> <input type=\"checkbox\" name=\"scattersinglelabellabelbold\" id=\"scattersinglelabellabelbold\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelbold\"> <label data-tips=\"斜体\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelitalic\" for=\"scattersinglelabellabelitalic\" class=\"luckysheet-datavisual-content-column-italic\"><i class=\"fa fa-italic\" aria-hidden=\"true\"></i></label> <input type=\"checkbox\" name=\"scattersinglelabellabelitalic\" id=\"scattersinglelabellabelitalic\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelitalic\"> <select data-sliderdiy=\"scattersinglelabellabelfontsizeslider\" data-width=\"50\" data-tips=\"字体大小\" name=\"scattersinglelabellabelfontsize\" id=\"scattersinglelabellabelfontsize\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelfontsize\"> <option value=\"12\">12px</option> <option value=\"14\">14px</option> <option value=\"16\">16px</option> <option value=\"18\">18px</option> <option value=\"20\">20px</option> <option value=\"22\">22px</option> <option value=\"24\">24px</option> <option value=\"30\">30px</option> <option value=\"36\">36px</option> <option value=\"diy\">自定义</option> </select> <input data-tips=\"字体颜色\" class=\"luckysheet-datavisual-config-color\" id=\"scattersinglelinelabelcolor\" type=\"text\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelcolor\" /> </div> <div class=\"luckysheet-datavisual-content-row\" style=\"display:none;\"> <div data-tips=\"滑动修改字体大小\" id=\"scattersinglelabellabelfontsizeslider\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelfontsize\" class=\"luckysheet-datavisual-config-slider\" style=\"width:70%;\" data-min=\"12\" data-max=\"100\" data-step=\"1\"></div> <input data-tips=\"自定义字体大小\" data-sliderid=\"scattersinglelabellabelfontsizeslider\" id=\"scattersinglelabellabelfontsizesliderdiy\" type=\"text\" class=\"luckysheet-datavisual-config-input\" data-bigclass=\"scattersingle\" data-attr=\"label\" data-func=\"labelfontsize\" placeholder=\"请输入\" style=\"width:10%;margin-left:10px;text-align:center;margin-right: 2px;\" /><label for=\"scattersinglelabellabelfontsizesliderdiy\">px</label> </div> </div> </div> </div> </div> <div class=\"luckysheet-chart-point-config-chart\"> <div id=\"luckysheet-chart-point-config-chart-c\" class=\"luckysheet-chart-point-config-chart-c\"> </div> </div> </div>',Ct='<div id=\"luckysheet-tooltip-up\" class=\"jfk-tooltip\" role=\"tooltip\" aria-hidden=\"true\" style=\"left: 505px; top: 410px;\"><div class=\"jfk-tooltip-contentId\">组合图表</div><div class=\"jfk-tooltip-arrow jfk-tooltip-arrowup\" style=\"left: 35.5px;\"><div class=\"jfk-tooltip-arrowimplbefore\"></div><div class=\"jfk-tooltip-arrowimplafter\"></div></div></div>',Tt=function(e){if(\"function\"==typeof e.image)return e.image();let t=new RegExp(\"^(image|path)://\").exec(e.image),n=\"\";if(null!==t){let a=t[0],l=t[1],r=t.input.substring(a.length);switch(l){case\"image\":n=`<div class=\"image-type\" style=\"background-image: url(${r});\"></div>`;break;case\"path\":let t=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");t.setAttribute(\"class\",\"path-type\"),t.setAttribute(\"viewBox\",e.viewBox);let a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");a.setAttribute(\"d\",r),a.setAttribute(\"fill\",\"currentColor\"),t.appendChild(a),n=t.outerHTML}}return n},St=function(t,n){if(!t)return;let a=function(){let t={enable:!0,image:()=>'<svg viewBox=\"25 25 50 50\" class=\"circular\">\\n            <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\"></circle>\\n            </svg>',text:X().info.loading,viewBox:\"32 32 64 64\",imageClass:\"\",textClass:\"\",customClass:\"\"};return\"{}\"!==JSON.stringify(e.loading)&&Object.assign(t,e.loading),t}();if(n&&\"{}\"!==JSON.stringify(n)&&Object.assign(a,n),\"boolean\"==typeof a.enable&&!1===a.enable)return{el:\"\",show:s,close:c};let l=Tt(a),r=\"luckysheet-loading-\"+ct(),o=`\\n        <div class=\"luckysheet-loading-content\"> \\n            <div class=\"${a.imageClass} luckysheet-loading-image\">\\n                ${l}\\n            </div>\\n            <div class=\"${a.textClass} luckysheet-loading-text\">\\n            <span>${a.text}</span>\\n            </div>    \\n        </div>`,i=document.createElement(\"div\");function s(){r&&$(\"#\"+r).show()}function c(){r&&$(\"#\"+r).hide()}return i.id=r,i.className=\"luckysheet-loading-mask \"+a.customClass,$(i).html(o),$(t).append(i),{el:i,show:s,close:c}},$t=[\"#c1232b\",\"#27727b\",\"#fcce10\",\"#e87c25\",\"#b5c334\",\"#fe8463\",\"#9bca63\",\"#fad860\",\"#f3a43b\",\"#60c0dd\",\"#d7504b\",\"#c6e579\",\"#f4e001\",\"#f0805a\",\"#26c0c0\",\"#c12e34\",\"#e6b600\",\"#0098d9\",\"#2b821d\",\"#005eaa\",\"#339ca8\",\"#cda819\",\"#32a487\",\"#3fb1e3\",\"#6be6c1\",\"#626c91\",\"#a0a7e6\",\"#c4ebad\",\"#96dee8\"],It={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,PAUSE:19,CAPSLOCK:20,ESC:27,SPACE:33,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46,WIN:91,WIN_R:92,MENU:93,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SCROLLLOCK:145},Rt={fillStyle:\"#000000\",textBaseline:\"middle\",strokeStyle:\"#dfdfdf\",rowFillStyle:\"#5e5e5e\",textAlign:\"center\"},At=function(){return\"normal normal normal \"+t.defaultFontSize+\"pt \"+X().fontarray[0]+', \"Helvetica Neue\", Helvetica, Arial, \"PingFang SC\", \"Hiragino Sans GB\", \"Heiti SC\",  \"WenQuanYi Micro Hei\", sans-serif'},(Dt=new Image).src=\"data:image/png;base64,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\",Ft={border:{\"border-top\":\" iconfont-luckysheet luckysheet-iconfont-shangbiankuang\",\"border-bottom\":\" iconfont-luckysheet luckysheet-iconfont-xiabiankuang\",\"border-left\":\" iconfont-luckysheet luckysheet-iconfont-zuobiankuang\",\"border-right\":\" iconfont-luckysheet luckysheet-iconfont-youbiankuang\",\"border-none\":\" iconfont-luckysheet luckysheet-iconfont-wubiankuang\",\"border-all\":\" iconfont-luckysheet luckysheet-iconfont-quanjiabiankuang\",\"border-outside\":\" iconfont-luckysheet luckysheet-iconfont-sizhoujiabiankuang\",\"border-inside\":\" iconfont-luckysheet luckysheet-iconfont-neikuangxian\",\"border-horizontal\":\" iconfont-luckysheet luckysheet-iconfont-neikuanghengxian\",\"border-vertical\":\" iconfont-luckysheet luckysheet-iconfont-neikuangshuxian\",\"border-reset\":\" iconfont-luckysheet luckysheet-iconfont-wubiankuang\"},align:{left:\" iconfont-luckysheet luckysheet-iconfont-wenbenzuoduiqi\",center:\" iconfont-luckysheet luckysheet-iconfont-wenbenjuzhongduiqi\",right:\" iconfont-luckysheet luckysheet-iconfont-wenbenyouduiqi\",top:\" iconfont-luckysheet luckysheet-iconfont-dingbuduiqi\",middle:\" iconfont-luckysheet luckysheet-iconfont-shuipingduiqi\",bottom:\" iconfont-luckysheet luckysheet-iconfont-dibuduiqi\"},textWrap:{overflow:\" iconfont-luckysheet luckysheet-iconfont-yichu1\",wrap:\" iconfont-luckysheet luckysheet-iconfont-zidonghuanhang\",clip:\" iconfont-luckysheet luckysheet-iconfont-jieduan\"},rotation:{none:\" iconfont-luckysheet luckysheet-iconfont-wuxuanzhuang\",angleup:\" iconfont-luckysheet luckysheet-iconfont-xiangshangqingxie\",angledown:\" iconfont-luckysheet luckysheet-iconfont-xiangxiaqingxie\",vertical:\" iconfont-luckysheet luckysheet-iconfont-shupaiwenzi\",\"rotation-up\":\" iconfont-luckysheet luckysheet-iconfont-wenbenxiangshang\",\"rotation-down\":\" iconfont-luckysheet luckysheet-iconfont-xiangxia90\"}}}));function Mt(e){for(let n=0;n<t.luckysheetfile.length;n++)if(t.luckysheetfile[n].index==e)return n;return null}function Nt(e,n,a){let l=\"\";null==a&&(a=t.currentSheetIndex),e!=a&&(l=t.luckysheetfile[Mt(e)].name.replace(/'/g,\"''\"),/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/.test(l)?l+=\"!\":l=\"'\"+l+\"'!\");let r=n.row[0],o=n.row[1],i=n.column[0],s=n.column[1];return null==r&&null==o?l+id(i)+\":\"+id(s):null==i&&null==s?l+(r+1)+\":\"+(o+1):i==s&&r==o?l+id(i)+(r+1):l+id(i)+(r+1)+\":\"+id(s)+(o+1)}function Pt(){return t.luckysheet_select_save}function zt(e){return e&&t.luckysheetfile.forEach((e=>{e.chart&&e.chart.forEach((e=>{let n=t.getChartJson(e.chart_id);e.chartOptions=n}))})),t.luckysheetfile}function Lt(){return t.config}function Ot(){return t.visibledatarow}function Bt(){return t.visibledatacolumn}function Vt(){return t.conditionFormatCells}var qt=y((()=>{_d(),x()}));function Ht(e){t.luckysheet_select_save=e}function Ut(e){t.luckysheet_scroll_status=e}function jt(e){t.luckysheetfile=e}var Gt,Wt=y((()=>{qt(),x()})),Yt=y((()=>{Gt={mobilecheck:function(){var e,t=!1;return e=navigator.userAgent||navigator.vendor||window.opera,(\"ongestureend\"in window||/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(e.substr(0,4)))&&(t=!0),document.body&&document.body.clientWidth&&document.body.clientHeight&&document.body.clientWidth<350&&document.body.clientHeight<500&&(t=!0),t},iphoneCheck:function(){return/iPhone/i.test(navigator.userAgent)&&!0,!0},isWeixin:function(){return\"micromessenger\"==navigator.userAgent.toLowerCase().match(/MicroMessenger/i)},isAndroid:function(){var e=navigator.userAgent;return navigator.appVersion,e.indexOf(\"Android\")>-1||e.indexOf(\"Linux\")>-1},tabletCheck:function(){return/ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i.test(navigator.userAgent.toLowerCase())},BrowserType:function(){var e=navigator.userAgent,t=e.indexOf(\"Opera\")>-1,n=e.indexOf(\"compatible\")>-1&&e.indexOf(\"MSIE\")>-1&&!t,a=e.indexOf(\"Trident\")>-1&&e.indexOf(\"rv:11.0\")>-1,l=e.indexOf(\"Edge\")>-1,r=e.indexOf(\"Firefox\")>-1,o=e.indexOf(\"Safari\")>-1&&-1==e.indexOf(\"Chrome\"),i=e.indexOf(\"Chrome\")>-1&&e.indexOf(\"Safari\")>-1;if(n){new RegExp(\"MSIE (\\\\d+\\\\.\\\\d+);\").test(e);var s=parseFloat(RegExp.$1);return 7==s?\"IE7\":8==s?\"IE8\":9==s?\"IE9\":10==s?\"IE10\":\"0\"}return r?\"FF\":t?\"Opera\":o?\"Safari\":i?\"Chrome\":l?\"Edge\":a?\"IE11\":void 0},isIE:function(){var e=navigator.userAgent,t=e.indexOf(\"Opera\")>-1,n=e.indexOf(\"compatible\")>-1&&e.indexOf(\"MSIE\")>-1&&!t,a=e.indexOf(\"Trident\")>-1&&e.indexOf(\"rv:11.0\")>-1;return n||a?\"1\":\"-1\"},IEVersion:function(){var e=navigator.userAgent,t=e.indexOf(\"Opera\")>-1,n=e.indexOf(\"compatible\")>-1&&e.indexOf(\"MSIE\")>-1&&!t,a=e.indexOf(\"Trident\")>-1&&e.indexOf(\"rv:11.0\")>-1,l=e.indexOf(\"Windows NT 6.1; Trident/7.0;\")>-1&&!n;if(n){new RegExp(\"MSIE (\\\\d+\\\\.\\\\d+);\").test(e);var r=parseFloat(RegExp.$1);return 7==r?\"IE7\":8==r?\"IE8\":9==r?\"IE9\":10==r?\"IE10\":\"0\"}return l?\"Edge\":a?\"IE11\":\"-1\"},luckysheetrefreshfixednum:null,luckysheetrefreshfixed:function(){var e=this;return null==e.luckysheetrefreshfixednum&&(\"FF\"==e.BrowserType()?e.luckysheetrefreshfixednum=5:e.luckysheetrefreshfixednum=0),e.luckysheetrefreshfixednum},detectOS(){var e=navigator.userAgent,t=\"Win32\"==navigator.platform||\"Windows\"==navigator.platform,n=\"Mac68K\"==navigator.platform||\"MacPPC\"==navigator.platform||\"Macintosh\"==navigator.platform||\"MacIntel\"==navigator.platform;if(n)return\"Mac\";if(\"X11\"==navigator.platform&&!t&&!n)return\"Unix\";if(String(navigator.platform).indexOf(\"Linux\")>-1)return\"Linux\";if(t){if(e.indexOf(\"Windows NT 5.0\")>-1||e.indexOf(\"Windows 2000\")>-1)return\"Win2000\";if(e.indexOf(\"Windows NT 5.1\")>-1||e.indexOf(\"Windows XP\")>-1)return\"WinXP\";if(e.indexOf(\"Windows NT 5.2\")>-1||e.indexOf(\"Windows 2003\")>-1)return\"Win2003\";if(e.indexOf(\"Windows NT 6.0\")>-1||e.indexOf(\"Windows Vista\")>-1)return\"WinVista\";if(e.indexOf(\"Windows NT 6.1\")>-1||e.indexOf(\"Windows 7\")>-1)return\"Win7\"}return\"other\"}}})),Xt=v((e=>{\"use strict\";var t=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var a=t.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(var l in a)n(a,l)&&(e[l]=a[l])}}return e},e.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,n,a,l){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+a),l);else for(var r=0;r<a;r++)e[l+r]=t[n+r]},flattenChunks:function(e){var t,n,a,l,r,o;for(a=0,t=0,n=e.length;t<n;t++)a+=e[t].length;for(o=new Uint8Array(a),l=0,t=0,n=e.length;t<n;t++)r=e[t],o.set(r,l),l+=r.length;return o}},l={arraySet:function(e,t,n,a,l){for(var r=0;r<a;r++)e[l+r]=t[n+r]},flattenChunks:function(e){return[].concat.apply([],e)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,a)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,l))},e.setTyped(t)})),Kt=v((e=>{\"use strict\";var t=Xt();function n(e){for(var t=e.length;--t>=0;)e[t]=0}var a=256,l=286,r=30,o=15,i=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],c=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],d=new Array(576);n(d);var h=new Array(60);n(h);var f=new Array(512);n(f);var m=new Array(256);n(m);var p=new Array(29);n(p);var g,y,v,b=new Array(r);function k(e,t,n,a,l){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=a,this.max_length=l,this.has_stree=e&&e.length}function w(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function x(e){return e<256?f[e]:f[256+(e>>>7)]}function _(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<<e.bi_valid&65535,_(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)}function T(e,t,n){C(e,n[2*t],n[2*t+1])}function S(e,t){var n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}function $(e,t,n){var a,l,r=new Array(16),i=0;for(a=1;a<=o;a++)r[a]=i=i+n[a-1]<<1;for(l=0;l<=t;l++){var s=e[2*l+1];0!==s&&(e[2*l]=S(r[s]++,s))}}function I(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<r;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function R(e){e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function A(e,t,n,a){var l=2*t,r=2*n;return e[l]<e[r]||e[l]===e[r]&&a[t]<=a[n]}function D(e,t,n){for(var a=e.heap[n],l=n<<1;l<=e.heap_len&&(l<e.heap_len&&A(t,e.heap[l+1],e.heap[l],e.depth)&&l++,!A(t,a,e.heap[l],e.depth));)e.heap[n]=e.heap[l],n=l,l<<=1;e.heap[n]=a}function F(e,t,n){var l,r,o,c,u=0;if(0!==e.last_lit)do{l=e.pending_buf[e.d_buf+2*u]<<8|e.pending_buf[e.d_buf+2*u+1],r=e.pending_buf[e.l_buf+u],u++,0===l?T(e,r,t):(T(e,(o=m[r])+a+1,t),0!==(c=i[o])&&C(e,r-=p[o],c),T(e,o=x(--l),n),0!==(c=s[o])&&C(e,l-=b[o],c))}while(u<e.last_lit);T(e,256,t)}function E(e,t){var n,a,l,r=t.dyn_tree,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,c=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=573,n=0;n<c;n++)0!==r[2*n]?(e.heap[++e.heap_len]=u=n,e.depth[n]=0):r[2*n+1]=0;for(;e.heap_len<2;)r[2*(l=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[l]=0,e.opt_len--,s&&(e.static_len-=i[2*l+1]);for(t.max_code=u,n=e.heap_len>>1;n>=1;n--)D(e,r,n);l=c;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],D(e,r,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,r[2*l]=r[2*n]+r[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,r[2*n+1]=r[2*a+1]=l,e.heap[1]=l++,D(e,r,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,a,l,r,i,s,c=t.dyn_tree,u=t.max_code,d=t.stat_desc.static_tree,h=t.stat_desc.has_stree,f=t.stat_desc.extra_bits,m=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(r=0;r<=o;r++)e.bl_count[r]=0;for(c[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(r=c[2*c[2*(a=e.heap[n])+1]+1]+1)>p&&(r=p,g++),c[2*a+1]=r,!(a>u)&&(e.bl_count[r]++,i=0,a>=m&&(i=f[a-m]),s=c[2*a],e.opt_len+=s*(r+i),h&&(e.static_len+=s*(d[2*a+1]+i)));if(0!==g){do{for(r=p-1;0===e.bl_count[r];)r--;e.bl_count[r]--,e.bl_count[r+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(r=p;0!==r;r--)for(a=e.bl_count[r];0!==a;)!((l=e.heap[--n])>u)&&(c[2*l+1]!==r&&(e.opt_len+=(r-c[2*l+1])*c[2*l],c[2*l+1]=r),a--)}}(e,t),$(r,u,e.bl_count)}function M(e,t,n){var a,l,r=-1,o=t[1],i=0,s=7,c=4;for(0===o&&(s=138,c=3),t[2*(n+1)+1]=65535,a=0;a<=n;a++)l=o,o=t[2*(a+1)+1],!(++i<s&&l===o)&&(i<c?e.bl_tree[2*l]+=i:0!==l?(l!==r&&e.bl_tree[2*l]++,e.bl_tree[32]++):i<=10?e.bl_tree[34]++:e.bl_tree[36]++,i=0,r=l,0===o?(s=138,c=3):l===o?(s=6,c=3):(s=7,c=4))}function N(e,t,n){var a,l,r=-1,o=t[1],i=0,s=7,c=4;for(0===o&&(s=138,c=3),a=0;a<=n;a++)if(l=o,o=t[2*(a+1)+1],!(++i<s&&l===o)){if(i<c)do{T(e,l,e.bl_tree)}while(0!=--i);else 0!==l?(l!==r&&(T(e,l,e.bl_tree),i--),T(e,16,e.bl_tree),C(e,i-3,2)):i<=10?(T(e,17,e.bl_tree),C(e,i-3,3)):(T(e,18,e.bl_tree),C(e,i-11,7));i=0,r=l,0===o?(s=138,c=3):l===o?(s=6,c=3):(s=7,c=4)}}n(b);var P=!1;function z(e,n,a,l){C(e,0+(l?1:0),3),function(e,n,a,l){R(e),l&&(_(e,a),_(e,~a)),t.arraySet(e.pending_buf,e.window,n,a,e.pending),e.pending+=a}(e,n,a,!0)}e._tr_init=function(e){P||(function(){var e,t,n,a,u,w=new Array(16);for(n=0,a=0;a<28;a++)for(p[a]=n,e=0;e<1<<i[a];e++)m[n++]=a;for(m[n-1]=a,u=0,a=0;a<16;a++)for(b[a]=u,e=0;e<1<<s[a];e++)f[u++]=a;for(u>>=7;a<r;a++)for(b[a]=u<<7,e=0;e<1<<s[a]-7;e++)f[256+u++]=a;for(t=0;t<=o;t++)w[t]=0;for(e=0;e<=143;)d[2*e+1]=8,e++,w[8]++;for(;e<=255;)d[2*e+1]=9,e++,w[9]++;for(;e<=279;)d[2*e+1]=7,e++,w[7]++;for(;e<=287;)d[2*e+1]=8,e++,w[8]++;for($(d,287,w),e=0;e<r;e++)h[2*e+1]=5,h[2*e]=S(e,5);g=new k(d,i,257,l,o),y=new k(h,s,0,r,o),v=new k(new Array(0),c,0,19,7)}(),P=!0),e.l_desc=new w(e.dyn_ltree,g),e.d_desc=new w(e.dyn_dtree,y),e.bl_desc=new w(e.bl_tree,v),e.bi_buf=0,e.bi_valid=0,I(e)},e._tr_stored_block=z,e._tr_flush_block=function(e,t,n,l){var r,o,i=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<a;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),E(e,e.l_desc),E(e,e.d_desc),i=function(e){var t;for(M(e,e.dyn_ltree,e.l_desc.max_code),M(e,e.dyn_dtree,e.d_desc.max_code),E(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=n+5,n+4<=r&&-1!==t?z(e,t,n,l):4===e.strategy||o===r?(C(e,2+(l?1:0),3),F(e,d,h)):(C(e,4+(l?1:0),3),function(e,t,n,a){var l;for(C(e,t-257,5),C(e,n-1,5),C(e,a-4,4),l=0;l<a;l++)C(e,e.bl_tree[2*u[l]+1],3);N(e,e.dyn_ltree,t-1),N(e,e.dyn_dtree,n-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,i+1),F(e,e.dyn_ltree,e.dyn_dtree)),I(e),l&&R(e)},e._tr_tally=function(e,t,n){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(m[n]+a+1)]++,e.dyn_dtree[2*x(t)]++),e.last_lit===e.lit_bufsize-1},e._tr_align=function(e){C(e,2,3),T(e,256,d),function(e){16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}})),Zt=v(((e,t)=>{\"use strict\";t.exports=function(e,t,n,a){for(var l=65535&e,r=e>>>16&65535,o=0;0!==n;){n-=o=n>2e3?2e3:n;do{r=r+(l=l+t[a++]|0)|0}while(--o);l%=65521,r%=65521}return l|r<<16}})),Jt=v(((e,t)=>{\"use strict\";var n=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var a=0;a<8;a++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,a,l){var r=n,o=l+a;e^=-1;for(var i=l;i<o;i++)e=e>>>8^r[255&(e^t[i])];return~e}})),Qt=v(((e,t)=>{\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}})),en=v((e=>{\"use strict\";var t,n=Xt(),a=Kt(),l=Zt(),r=Jt(),o=Qt(),i=-2,s=258,c=262,u=103,d=113,h=666;function f(e,t){return e.msg=o[t],t}function m(e){return(e<<1)-(e>4?9:0)}function p(e){for(var t=e.length;--t>=0;)e[t]=0}function g(e){var t=e.state,a=t.pending;a>e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function y(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,g(e.strm)}function v(e,t){e.pending_buf[e.pending++]=t}function b(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function k(e,t,a,o){var i=e.avail_in;return i>o&&(i=o),0===i?0:(e.avail_in-=i,n.arraySet(t,e.input,e.next_in,i,a),1===e.state.wrap?e.adler=l(e.adler,t,i,a):2===e.state.wrap&&(e.adler=r(e.adler,t,i,a)),e.next_in+=i,e.total_in+=i,i)}function w(e,t){var n,a,l=e.max_chain_length,r=e.strstart,o=e.prev_length,i=e.nice_match,u=e.strstart>e.w_size-c?e.strstart-(e.w_size-c):0,d=e.window,h=e.w_mask,f=e.prev,m=e.strstart+s,p=d[r+o-1],g=d[r+o];e.prev_length>=e.good_match&&(l>>=2),i>e.lookahead&&(i=e.lookahead);do{if(d[(n=t)+o]===g&&d[n+o-1]===p&&d[n]===d[r]&&d[++n]===d[r+1]){r+=2,n++;do{}while(d[++r]===d[++n]&&d[++r]===d[++n]&&d[++r]===d[++n]&&d[++r]===d[++n]&&d[++r]===d[++n]&&d[++r]===d[++n]&&d[++r]===d[++n]&&d[++r]===d[++n]&&r<m);if(a=s-(m-r),r=m-s,a>o){if(e.match_start=t,o=a,a>=i)break;p=d[r+o-1],g=d[r+o]}}}while((t=f[t&h])>u&&0!=--l);return o<=e.lookahead?o:e.lookahead}function x(e){var t,a,l,r,o,i=e.w_size;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=i+(i-c)){n.arraySet(e.window,e.window,i,i,0),e.match_start-=i,e.strstart-=i,e.block_start-=i,t=a=e.hash_size;do{l=e.head[--t],e.head[t]=l>=i?l-i:0}while(--a);t=a=i;do{l=e.prev[--t],e.prev[t]=l>=i?l-i:0}while(--a);r+=i}if(0===e.strm.avail_in)break;if(a=k(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=a,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+3-1])&e.hash_mask,e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<c&&0!==e.strm.avail_in)}function _(e,t){for(var n,l;;){if(e.lookahead<c){if(x(e),e.lookahead<c&&0===t)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-c&&(e.match_length=w(e,n)),e.match_length>=3)if(l=a._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else l=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(l&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}function C(e,t){for(var n,l,r;;){if(e.lookahead<c){if(x(e),e.lookahead<c&&0===t)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-c&&(e.match_length=w(e,n),e.match_length<=5&&(1===e.strategy||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,l=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,l&&(y(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((l=a._tr_tally(e,0,e.window[e.strstart-1]))&&y(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(l=a._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}function T(e,t,n,a,l){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=a,this.func=l}function S(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(1146),this.dyn_dtree=new n.Buf16(122),this.bl_tree=new n.Buf16(78),p(this.dyn_ltree),p(this.dyn_dtree),p(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(16),this.heap=new n.Buf16(573),p(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(573),p(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function $(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=2,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:d,e.adler=2===t.wrap?0:1,t.last_flush=0,a._tr_init(t),0):f(e,i)}function I(e){var n=$(e);return 0===n&&function(e){e.window_size=2*e.w_size,p(e.head),e.max_lazy_match=t[e.level].max_lazy,e.good_match=t[e.level].good_length,e.nice_match=t[e.level].nice_length,e.max_chain_length=t[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0}(e.state),n}function R(e,t,a,l,r,o){if(!e)return i;var s=1;if(-1===t&&(t=6),l<0?(s=0,l=-l):l>15&&(s=2,l-=16),r<1||r>9||8!==a||l<8||l>15||t<0||t>9||o<0||o>4)return f(e,i);8===l&&(l=9);var c=new S;return e.state=c,c.strm=e,c.wrap=s,c.gzhead=null,c.w_bits=l,c.w_size=1<<c.w_bits,c.w_mask=c.w_size-1,c.hash_bits=r+7,c.hash_size=1<<c.hash_bits,c.hash_mask=c.hash_size-1,c.hash_shift=~~((c.hash_bits+3-1)/3),c.window=new n.Buf8(2*c.w_size),c.head=new n.Buf16(c.hash_size),c.prev=new n.Buf16(c.w_size),c.lit_bufsize=1<<r+6,c.pending_buf_size=4*c.lit_bufsize,c.pending_buf=new n.Buf8(c.pending_buf_size),c.d_buf=1*c.lit_bufsize,c.l_buf=3*c.lit_bufsize,c.level=t,c.strategy=o,c.method=a,I(e)}t=[new T(0,0,0,0,(function(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(x(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+n;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,y(e,!1),0===e.strm.avail_out)||e.strstart-e.block_start>=e.w_size-c&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(y(e,!1),e.strm.avail_out),1)})),new T(4,4,8,4,_),new T(4,5,16,8,_),new T(4,6,32,32,_),new T(4,4,16,16,C),new T(8,16,32,32,C),new T(8,16,128,128,C),new T(8,32,128,256,C),new T(32,128,258,1024,C),new T(32,258,258,4096,C)],e.deflateInit=function(e,t){return R(e,t,8,15,8,0)},e.deflateInit2=R,e.deflateReset=I,e.deflateResetKeep=$,e.deflateSetHeader=function(e,t){return e&&e.state&&2===e.state.wrap?(e.state.gzhead=t,0):i},e.deflate=function(e,n){var l,o,c,k;if(!e||!e.state||n>5||n<0)return e?f(e,i):i;if(o=e.state,!e.output||!e.input&&0!==e.avail_in||o.status===h&&4!==n)return f(e,0===e.avail_out?-5:i);if(o.strm=e,l=o.last_flush,o.last_flush=n,42===o.status)if(2===o.wrap)e.adler=0,v(o,31),v(o,139),v(o,8),o.gzhead?(v(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),v(o,255&o.gzhead.time),v(o,o.gzhead.time>>8&255),v(o,o.gzhead.time>>16&255),v(o,o.gzhead.time>>24&255),v(o,9===o.level?2:o.strategy>=2||o.level<2?4:0),v(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(v(o,255&o.gzhead.extra.length),v(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(e.adler=r(e.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=69):(v(o,0),v(o,0),v(o,0),v(o,0),v(o,0),v(o,9===o.level?2:o.strategy>=2||o.level<2?4:0),v(o,3),o.status=d);else{var w=8+(o.w_bits-8<<4)<<8;w|=(o.strategy>=2||o.level<2?0:o.level<6?1:6===o.level?2:3)<<6,0!==o.strstart&&(w|=32),w+=31-w%31,o.status=d,b(o,w),0!==o.strstart&&(b(o,e.adler>>>16),b(o,65535&e.adler)),e.adler=1}if(69===o.status)if(o.gzhead.extra){for(c=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>c&&(e.adler=r(e.adler,o.pending_buf,o.pending-c,c)),g(e),c=o.pending,o.pending!==o.pending_buf_size));)v(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>c&&(e.adler=r(e.adler,o.pending_buf,o.pending-c,c)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=73)}else o.status=73;if(73===o.status)if(o.gzhead.name){c=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>c&&(e.adler=r(e.adler,o.pending_buf,o.pending-c,c)),g(e),c=o.pending,o.pending===o.pending_buf_size)){k=1;break}k=o.gzindex<o.gzhead.name.length?255&o.gzhead.name.charCodeAt(o.gzindex++):0,v(o,k)}while(0!==k);o.gzhead.hcrc&&o.pending>c&&(e.adler=r(e.adler,o.pending_buf,o.pending-c,c)),0===k&&(o.gzindex=0,o.status=91)}else o.status=91;if(91===o.status)if(o.gzhead.comment){c=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>c&&(e.adler=r(e.adler,o.pending_buf,o.pending-c,c)),g(e),c=o.pending,o.pending===o.pending_buf_size)){k=1;break}k=o.gzindex<o.gzhead.comment.length?255&o.gzhead.comment.charCodeAt(o.gzindex++):0,v(o,k)}while(0!==k);o.gzhead.hcrc&&o.pending>c&&(e.adler=r(e.adler,o.pending_buf,o.pending-c,c)),0===k&&(o.status=u)}else o.status=u;if(o.status===u&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&g(e),o.pending+2<=o.pending_buf_size&&(v(o,255&e.adler),v(o,e.adler>>8&255),e.adler=0,o.status=d)):o.status=d),0!==o.pending){if(g(e),0===e.avail_out)return o.last_flush=-1,0}else if(0===e.avail_in&&m(n)<=m(l)&&4!==n)return f(e,-5);if(o.status===h&&0!==e.avail_in)return f(e,-5);if(0!==e.avail_in||0!==o.lookahead||0!==n&&o.status!==h){var _=2===o.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(x(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}(o,n):3===o.strategy?function(e,t){for(var n,l,r,o,i=e.window;;){if(e.lookahead<=s){if(x(e),e.lookahead<=s&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(l=i[r=e.strstart-1])===i[++r]&&l===i[++r]&&l===i[++r]){o=e.strstart+s;do{}while(l===i[++r]&&l===i[++r]&&l===i[++r]&&l===i[++r]&&l===i[++r]&&l===i[++r]&&l===i[++r]&&l===i[++r]&&r<o);e.match_length=s-(o-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=a._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}(o,n):t[o.level].func(o,n);if((3===_||4===_)&&(o.status=h),1===_||3===_)return 0===e.avail_out&&(o.last_flush=-1),0;if(2===_&&(1===n?a._tr_align(o):5!==n&&(a._tr_stored_block(o,0,0,!1),3===n&&(p(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),g(e),0===e.avail_out))return o.last_flush=-1,0}return 4!==n?0:o.wrap<=0?1:(2===o.wrap?(v(o,255&e.adler),v(o,e.adler>>8&255),v(o,e.adler>>16&255),v(o,e.adler>>24&255),v(o,255&e.total_in),v(o,e.total_in>>8&255),v(o,e.total_in>>16&255),v(o,e.total_in>>24&255)):(b(o,e.adler>>>16),b(o,65535&e.adler)),g(e),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?0:1)},e.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==u&&t!==d&&t!==h?f(e,i):(e.state=null,t===d?f(e,-3):0):i},e.deflateSetDictionary=function(e,t){var a,r,o,s,c,u,d,h,f=t.length;if(!e||!e.state||(2===(s=(a=e.state).wrap)||1===s&&42!==a.status||a.lookahead))return i;for(1===s&&(e.adler=l(e.adler,t,f,0)),a.wrap=0,f>=a.w_size&&(0===s&&(p(a.head),a.strstart=0,a.block_start=0,a.insert=0),h=new n.Buf8(a.w_size),n.arraySet(h,t,f-a.w_size,a.w_size,0),t=h,f=a.w_size),c=e.avail_in,u=e.next_in,d=e.input,e.avail_in=f,e.next_in=0,e.input=t,x(a);a.lookahead>=3;){r=a.strstart,o=a.lookahead-2;do{a.ins_h=(a.ins_h<<a.hash_shift^a.window[r+3-1])&a.hash_mask,a.prev[r&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=r,r++}while(--o);a.strstart=r,a.lookahead=2,x(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=2,a.match_available=0,e.next_in=u,e.input=d,e.avail_in=c,a.wrap=s,0},e.deflateInfo=\"pako deflate (from Nodeca project)\"})),tn=v((e=>{\"use strict\";var t=Xt(),n=!0,a=!0;try{String.fromCharCode.apply(null,[0])}catch(e){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){a=!1}for(var l=new t.Buf8(256),r=0;r<256;r++)l[r]=r>=252?6:r>=248?5:r>=240?4:r>=224?3:r>=192?2:1;function o(e,l){if(l<65534&&(e.subarray&&a||!e.subarray&&n))return String.fromCharCode.apply(null,t.shrinkBuf(e,l));for(var r=\"\",o=0;o<l;o++)r+=String.fromCharCode(e[o]);return r}l[254]=l[254]=1,e.string2buf=function(e){var n,a,l,r,o,i=e.length,s=0;for(r=0;r<i;r++)55296==(64512&(a=e.charCodeAt(r)))&&r+1<i&&(56320==(64512&(l=e.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(l-56320),r++)),s+=a<128?1:a<2048?2:a<65536?3:4;for(n=new t.Buf8(s),o=0,r=0;o<s;r++)55296==(64512&(a=e.charCodeAt(r)))&&r+1<i&&(56320==(64512&(l=e.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(l-56320),r++)),a<128?n[o++]=a:a<2048?(n[o++]=192|a>>>6,n[o++]=128|63&a):a<65536?(n[o++]=224|a>>>12,n[o++]=128|a>>>6&63,n[o++]=128|63&a):(n[o++]=240|a>>>18,n[o++]=128|a>>>12&63,n[o++]=128|a>>>6&63,n[o++]=128|63&a);return n},e.buf2binstring=function(e){return o(e,e.length)},e.binstring2buf=function(e){for(var n=new t.Buf8(e.length),a=0,l=n.length;a<l;a++)n[a]=e.charCodeAt(a);return n},e.buf2string=function(e,t){var n,a,r,i,s=t||e.length,c=new Array(2*s);for(a=0,n=0;n<s;)if((r=e[n++])<128)c[a++]=r;else if((i=l[r])>4)c[a++]=65533,n+=i-1;else{for(r&=2===i?31:3===i?15:7;i>1&&n<s;)r=r<<6|63&e[n++],i--;i>1?c[a++]=65533:r<65536?c[a++]=r:(r-=65536,c[a++]=55296|r>>10&1023,c[a++]=56320|1023&r)}return o(c,a)},e.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+l[e[n]]>t?n:t}})),nn=v(((e,t)=>{\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}})),an=v((e=>{\"use strict\";var t=en(),n=Xt(),a=tn(),l=Qt(),r=nn(),o=Object.prototype.toString;function i(e){if(!(this instanceof i))return new i(e);this.options=n.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:\"\"},e||{});var s=this.options;s.raw&&s.windowBits>0?s.windowBits=-s.windowBits:s.gzip&&s.windowBits>0&&s.windowBits<16&&(s.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new r,this.strm.avail_out=0;var c=t.deflateInit2(this.strm,s.level,s.method,s.windowBits,s.memLevel,s.strategy);if(0!==c)throw new Error(l[c]);if(s.header&&t.deflateSetHeader(this.strm,s.header),s.dictionary){var u;if(u=\"string\"==typeof s.dictionary?a.string2buf(s.dictionary):\"[object ArrayBuffer]\"===o.call(s.dictionary)?new Uint8Array(s.dictionary):s.dictionary,0!==(c=t.deflateSetDictionary(this.strm,u)))throw new Error(l[c]);this._dict_set=!0}}function s(e,t){var n=new i(t);if(n.push(e,!0),n.err)throw n.msg||l[n.err];return n.result}i.prototype.push=function(e,l){var r,i,s=this.strm,c=this.options.chunkSize;if(this.ended)return!1;i=l===~~l?l:!0===l?4:0,\"string\"==typeof e?s.input=a.string2buf(e):\"[object ArrayBuffer]\"===o.call(e)?s.input=new Uint8Array(e):s.input=e,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new n.Buf8(c),s.next_out=0,s.avail_out=c),1!==(r=t.deflate(s,i))&&0!==r)return this.onEnd(r),this.ended=!0,!1;(0===s.avail_out||0===s.avail_in&&(4===i||2===i))&&(\"string\"===this.options.to?this.onData(a.buf2binstring(n.shrinkBuf(s.output,s.next_out))):this.onData(n.shrinkBuf(s.output,s.next_out)))}while((s.avail_in>0||0===s.avail_out)&&1!==r);return 4===i?(r=t.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,0===r):(2===i&&(this.onEnd(0),s.avail_out=0),!0)},i.prototype.onData=function(e){this.chunks.push(e)},i.prototype.onEnd=function(e){0===e&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.Deflate=i,e.deflate=s,e.deflateRaw=function(e,t){return(t=t||{}).raw=!0,s(e,t)},e.gzip=function(e,t){return(t=t||{}).gzip=!0,s(e,t)}})),ln=v(((e,t)=>{\"use strict\";t.exports=function(e,t){var n,a,l,r,o,i,s,c,u,d,h,f,m,p,g,y,v,b,k,w,x,_,C,T,S;n=e.state,a=e.next_in,T=e.input,l=a+(e.avail_in-5),r=e.next_out,S=e.output,o=r-(t-e.avail_out),i=r+(e.avail_out-257),s=n.dmax,c=n.wsize,u=n.whave,d=n.wnext,h=n.window,f=n.hold,m=n.bits,p=n.lencode,g=n.distcode,y=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;e:do{m<15&&(f+=T[a++]<<m,m+=8,f+=T[a++]<<m,m+=8),b=p[f&y];t:for(;;){if(f>>>=k=b>>>24,m-=k,0===(k=b>>>16&255))S[r++]=65535&b;else{if(!(16&k)){if(64&k){if(32&k){n.mode=12;break e}e.msg=\"invalid literal/length code\",n.mode=30;break e}b=p[(65535&b)+(f&(1<<k)-1)];continue t}for(w=65535&b,(k&=15)&&(m<k&&(f+=T[a++]<<m,m+=8),w+=f&(1<<k)-1,f>>>=k,m-=k),m<15&&(f+=T[a++]<<m,m+=8,f+=T[a++]<<m,m+=8),b=g[f&v];;){if(f>>>=k=b>>>24,m-=k,16&(k=b>>>16&255)){if(x=65535&b,m<(k&=15)&&(f+=T[a++]<<m,(m+=8)<k&&(f+=T[a++]<<m,m+=8)),(x+=f&(1<<k)-1)>s){e.msg=\"invalid distance too far back\",n.mode=30;break e}if(f>>>=k,m-=k,x>(k=r-o)){if((k=x-k)>u&&n.sane){e.msg=\"invalid distance too far back\",n.mode=30;break e}if(_=0,C=h,0===d){if(_+=c-k,k<w){w-=k;do{S[r++]=h[_++]}while(--k);_=r-x,C=S}}else if(d<k){if(_+=c+d-k,(k-=d)<w){w-=k;do{S[r++]=h[_++]}while(--k);if(_=0,d<w){w-=k=d;do{S[r++]=h[_++]}while(--k);_=r-x,C=S}}}else if(_+=d-k,k<w){w-=k;do{S[r++]=h[_++]}while(--k);_=r-x,C=S}for(;w>2;)S[r++]=C[_++],S[r++]=C[_++],S[r++]=C[_++],w-=3;w&&(S[r++]=C[_++],w>1&&(S[r++]=C[_++]))}else{_=r-x;do{S[r++]=S[_++],S[r++]=S[_++],S[r++]=S[_++],w-=3}while(w>2);w&&(S[r++]=S[_++],w>1&&(S[r++]=S[_++]))}break}if(64&k){e.msg=\"invalid distance code\",n.mode=30;break e}b=g[(65535&b)+(f&(1<<k)-1)]}}break}}while(a<l&&r<i);a-=w=m>>3,f&=(1<<(m-=w<<3))-1,e.next_in=a,e.next_out=r,e.avail_in=a<l?l-a+5:5-(a-l),e.avail_out=r<i?i-r+257:257-(r-i),n.hold=f,n.bits=m}})),rn=v(((e,t)=>{\"use strict\";var n=Xt(),a=15,l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],i=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,s,c,u,d,h,f){var m,p,g,y,v,b,k,w,x,_=f.bits,C=0,T=0,S=0,$=0,I=0,R=0,A=0,D=0,F=0,E=0,M=null,N=0,P=new n.Buf16(16),z=new n.Buf16(16),L=null,O=0;for(C=0;C<=a;C++)P[C]=0;for(T=0;T<c;T++)P[t[s+T]]++;for(I=_,$=a;$>=1&&0===P[$];$--);if(I>$&&(I=$),0===$)return u[d++]=20971520,u[d++]=20971520,f.bits=1,0;for(S=1;S<$&&0===P[S];S++);for(I<S&&(I=S),D=1,C=1;C<=a;C++)if(D<<=1,(D-=P[C])<0)return-1;if(D>0&&(0===e||1!==$))return-1;for(z[1]=0,C=1;C<a;C++)z[C+1]=z[C]+P[C];for(T=0;T<c;T++)0!==t[s+T]&&(h[z[t[s+T]]++]=T);if(0===e?(M=L=h,b=19):1===e?(M=l,N-=257,L=r,O-=257,b=256):(M=o,L=i,b=-1),E=0,T=0,C=S,v=d,R=I,A=0,g=-1,y=(F=1<<I)-1,1===e&&F>852||2===e&&F>592)return 1;for(;;){k=C-A,h[T]<b?(w=0,x=h[T]):h[T]>b?(w=L[O+h[T]],x=M[N+h[T]]):(w=96,x=0),m=1<<C-A,S=p=1<<R;do{u[v+(E>>A)+(p-=m)]=k<<24|w<<16|x}while(0!==p);for(m=1<<C-1;E&m;)m>>=1;if(0!==m?(E&=m-1,E+=m):E=0,T++,0==--P[C]){if(C===$)break;C=t[s+h[T]]}if(C>I&&(E&y)!==g){for(0===A&&(A=I),v+=S,D=1<<(R=C-A);R+A<$&&!((D-=P[R+A])<=0);)R++,D<<=1;if(F+=1<<R,1===e&&F>852||2===e&&F>592)return 1;u[g=E&y]=I<<24|R<<16|v-d}}return 0!==E&&(u[v+E]=C-A<<24|64<<16),f.bits=I,0}})),on=v((e=>{\"use strict\";var t=Xt(),n=Zt(),a=Jt(),l=ln(),r=rn(),o=-2,i=12,s=30;function c(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new t.Buf16(320),this.work=new t.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(e){var n;return e&&e.state?(n=e.state,e.total_in=e.total_out=n.total=0,e.msg=\"\",n.wrap&&(e.adler=1&n.wrap),n.mode=1,n.last=0,n.havedict=0,n.dmax=32768,n.head=null,n.hold=0,n.bits=0,n.lencode=n.lendyn=new t.Buf32(852),n.distcode=n.distdyn=new t.Buf32(592),n.sane=1,n.back=-1,0):o}function h(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,d(e)):o}function f(e,t){var n,a;return!e||!e.state||(a=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15))?o:(null!==a.window&&a.wbits!==t&&(a.window=null),a.wrap=n,a.wbits=t,h(e))}function m(e,t){var n,a;return e?(a=new u,e.state=a,a.window=null,0!==(n=f(e,t))&&(e.state=null),n):o}var p,g,y=!0;function v(e){if(y){var n;for(p=new t.Buf32(512),g=new t.Buf32(32),n=0;n<144;)e.lens[n++]=8;for(;n<256;)e.lens[n++]=9;for(;n<280;)e.lens[n++]=7;for(;n<288;)e.lens[n++]=8;for(r(1,e.lens,0,288,p,0,e.work,{bits:9}),n=0;n<32;)e.lens[n++]=5;r(2,e.lens,0,32,g,0,e.work,{bits:5}),y=!1}e.lencode=p,e.lenbits=9,e.distcode=g,e.distbits=5}function b(e,n,a,l){var r,o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new t.Buf8(o.wsize)),l>=o.wsize?(t.arraySet(o.window,n,a-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((r=o.wsize-o.wnext)>l&&(r=l),t.arraySet(o.window,n,a-l,r,o.wnext),(l-=r)?(t.arraySet(o.window,n,a-l,l,0),o.wnext=l,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0}e.inflateReset=h,e.inflateReset2=f,e.inflateResetKeep=d,e.inflateInit=function(e){return m(e,15)},e.inflateInit2=m,e.inflate=function(e,u){var d,h,f,m,p,g,y,k,w,x,_,C,T,S,$,I,R,A,D,F,E,M,N,P,z=0,L=new t.Buf8(4),O=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return o;(d=e.state).mode===i&&(d.mode=13),p=e.next_out,f=e.output,y=e.avail_out,m=e.next_in,h=e.input,g=e.avail_in,k=d.hold,w=d.bits,x=g,_=y,M=0;e:for(;;)switch(d.mode){case 1:if(0===d.wrap){d.mode=13;break}for(;w<16;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(2&d.wrap&&35615===k){d.check=0,L[0]=255&k,L[1]=k>>>8&255,d.check=a(d.check,L,2,0),k=0,w=0,d.mode=2;break}if(d.flags=0,d.head&&(d.head.done=!1),!(1&d.wrap)||(((255&k)<<8)+(k>>8))%31){e.msg=\"incorrect header check\",d.mode=s;break}if(8!=(15&k)){e.msg=\"unknown compression method\",d.mode=s;break}if(w-=4,E=8+(15&(k>>>=4)),0===d.wbits)d.wbits=E;else if(E>d.wbits){e.msg=\"invalid window size\",d.mode=s;break}d.dmax=1<<E,e.adler=d.check=1,d.mode=512&k?10:i,k=0,w=0;break;case 2:for(;w<16;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(d.flags=k,8!=(255&d.flags)){e.msg=\"unknown compression method\",d.mode=s;break}if(57344&d.flags){e.msg=\"unknown header flags set\",d.mode=s;break}d.head&&(d.head.text=k>>8&1),512&d.flags&&(L[0]=255&k,L[1]=k>>>8&255,d.check=a(d.check,L,2,0)),k=0,w=0,d.mode=3;case 3:for(;w<32;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}d.head&&(d.head.time=k),512&d.flags&&(L[0]=255&k,L[1]=k>>>8&255,L[2]=k>>>16&255,L[3]=k>>>24&255,d.check=a(d.check,L,4,0)),k=0,w=0,d.mode=4;case 4:for(;w<16;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}d.head&&(d.head.xflags=255&k,d.head.os=k>>8),512&d.flags&&(L[0]=255&k,L[1]=k>>>8&255,d.check=a(d.check,L,2,0)),k=0,w=0,d.mode=5;case 5:if(1024&d.flags){for(;w<16;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}d.length=k,d.head&&(d.head.extra_len=k),512&d.flags&&(L[0]=255&k,L[1]=k>>>8&255,d.check=a(d.check,L,2,0)),k=0,w=0}else d.head&&(d.head.extra=null);d.mode=6;case 6:if(1024&d.flags&&((C=d.length)>g&&(C=g),C&&(d.head&&(E=d.head.extra_len-d.length,d.head.extra||(d.head.extra=new Array(d.head.extra_len)),t.arraySet(d.head.extra,h,m,C,E)),512&d.flags&&(d.check=a(d.check,h,C,m)),g-=C,m+=C,d.length-=C),d.length))break e;d.length=0,d.mode=7;case 7:if(2048&d.flags){if(0===g)break e;C=0;do{E=h[m+C++],d.head&&E&&d.length<65536&&(d.head.name+=String.fromCharCode(E))}while(E&&C<g);if(512&d.flags&&(d.check=a(d.check,h,C,m)),g-=C,m+=C,E)break e}else d.head&&(d.head.name=null);d.length=0,d.mode=8;case 8:if(4096&d.flags){if(0===g)break e;C=0;do{E=h[m+C++],d.head&&E&&d.length<65536&&(d.head.comment+=String.fromCharCode(E))}while(E&&C<g);if(512&d.flags&&(d.check=a(d.check,h,C,m)),g-=C,m+=C,E)break e}else d.head&&(d.head.comment=null);d.mode=9;case 9:if(512&d.flags){for(;w<16;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(k!==(65535&d.check)){e.msg=\"header crc mismatch\",d.mode=s;break}k=0,w=0}d.head&&(d.head.hcrc=d.flags>>9&1,d.head.done=!0),e.adler=d.check=0,d.mode=i;break;case 10:for(;w<32;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}e.adler=d.check=c(k),k=0,w=0,d.mode=11;case 11:if(0===d.havedict)return e.next_out=p,e.avail_out=y,e.next_in=m,e.avail_in=g,d.hold=k,d.bits=w,2;e.adler=d.check=1,d.mode=i;case i:if(5===u||6===u)break e;case 13:if(d.last){k>>>=7&w,w-=7&w,d.mode=27;break}for(;w<3;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}switch(d.last=1&k,w-=1,3&(k>>>=1)){case 0:d.mode=14;break;case 1:if(v(d),d.mode=20,6===u){k>>>=2,w-=2;break e}break;case 2:d.mode=17;break;case 3:e.msg=\"invalid block type\",d.mode=s}k>>>=2,w-=2;break;case 14:for(k>>>=7&w,w-=7&w;w<32;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if((65535&k)!=(k>>>16^65535)){e.msg=\"invalid stored block lengths\",d.mode=s;break}if(d.length=65535&k,k=0,w=0,d.mode=15,6===u)break e;case 15:d.mode=16;case 16:if(C=d.length){if(C>g&&(C=g),C>y&&(C=y),0===C)break e;t.arraySet(f,h,m,C,p),g-=C,m+=C,y-=C,p+=C,d.length-=C;break}d.mode=i;break;case 17:for(;w<14;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(d.nlen=257+(31&k),k>>>=5,w-=5,d.ndist=1+(31&k),k>>>=5,w-=5,d.ncode=4+(15&k),k>>>=4,w-=4,d.nlen>286||d.ndist>30){e.msg=\"too many length or distance symbols\",d.mode=s;break}d.have=0,d.mode=18;case 18:for(;d.have<d.ncode;){for(;w<3;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}d.lens[O[d.have++]]=7&k,k>>>=3,w-=3}for(;d.have<19;)d.lens[O[d.have++]]=0;if(d.lencode=d.lendyn,d.lenbits=7,N={bits:d.lenbits},M=r(0,d.lens,0,19,d.lencode,0,d.work,N),d.lenbits=N.bits,M){e.msg=\"invalid code lengths set\",d.mode=s;break}d.have=0,d.mode=19;case 19:for(;d.have<d.nlen+d.ndist;){for(;I=(z=d.lencode[k&(1<<d.lenbits)-1])>>>16&255,R=65535&z,!(($=z>>>24)<=w);){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(R<16)k>>>=$,w-=$,d.lens[d.have++]=R;else{if(16===R){for(P=$+2;w<P;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(k>>>=$,w-=$,0===d.have){e.msg=\"invalid bit length repeat\",d.mode=s;break}E=d.lens[d.have-1],C=3+(3&k),k>>>=2,w-=2}else if(17===R){for(P=$+3;w<P;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}w-=$,E=0,C=3+(7&(k>>>=$)),k>>>=3,w-=3}else{for(P=$+7;w<P;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}w-=$,E=0,C=11+(127&(k>>>=$)),k>>>=7,w-=7}if(d.have+C>d.nlen+d.ndist){e.msg=\"invalid bit length repeat\",d.mode=s;break}for(;C--;)d.lens[d.have++]=E}}if(d.mode===s)break;if(0===d.lens[256]){e.msg=\"invalid code -- missing end-of-block\",d.mode=s;break}if(d.lenbits=9,N={bits:d.lenbits},M=r(1,d.lens,0,d.nlen,d.lencode,0,d.work,N),d.lenbits=N.bits,M){e.msg=\"invalid literal/lengths set\",d.mode=s;break}if(d.distbits=6,d.distcode=d.distdyn,N={bits:d.distbits},M=r(2,d.lens,d.nlen,d.ndist,d.distcode,0,d.work,N),d.distbits=N.bits,M){e.msg=\"invalid distances set\",d.mode=s;break}if(d.mode=20,6===u)break e;case 20:d.mode=21;case 21:if(g>=6&&y>=258){e.next_out=p,e.avail_out=y,e.next_in=m,e.avail_in=g,d.hold=k,d.bits=w,l(e,_),p=e.next_out,f=e.output,y=e.avail_out,m=e.next_in,h=e.input,g=e.avail_in,k=d.hold,w=d.bits,d.mode===i&&(d.back=-1);break}for(d.back=0;I=(z=d.lencode[k&(1<<d.lenbits)-1])>>>16&255,R=65535&z,!(($=z>>>24)<=w);){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(I&&!(240&I)){for(A=$,D=I,F=R;I=(z=d.lencode[F+((k&(1<<A+D)-1)>>A)])>>>16&255,R=65535&z,!(A+($=z>>>24)<=w);){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}k>>>=A,w-=A,d.back+=A}if(k>>>=$,w-=$,d.back+=$,d.length=R,0===I){d.mode=26;break}if(32&I){d.back=-1,d.mode=i;break}if(64&I){e.msg=\"invalid literal/length code\",d.mode=s;break}d.extra=15&I,d.mode=22;case 22:if(d.extra){for(P=d.extra;w<P;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}d.length+=k&(1<<d.extra)-1,k>>>=d.extra,w-=d.extra,d.back+=d.extra}d.was=d.length,d.mode=23;case 23:for(;I=(z=d.distcode[k&(1<<d.distbits)-1])>>>16&255,R=65535&z,!(($=z>>>24)<=w);){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(!(240&I)){for(A=$,D=I,F=R;I=(z=d.distcode[F+((k&(1<<A+D)-1)>>A)])>>>16&255,R=65535&z,!(A+($=z>>>24)<=w);){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}k>>>=A,w-=A,d.back+=A}if(k>>>=$,w-=$,d.back+=$,64&I){e.msg=\"invalid distance code\",d.mode=s;break}d.offset=R,d.extra=15&I,d.mode=24;case 24:if(d.extra){for(P=d.extra;w<P;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}d.offset+=k&(1<<d.extra)-1,k>>>=d.extra,w-=d.extra,d.back+=d.extra}if(d.offset>d.dmax){e.msg=\"invalid distance too far back\",d.mode=s;break}d.mode=25;case 25:if(0===y)break e;if(C=_-y,d.offset>C){if((C=d.offset-C)>d.whave&&d.sane){e.msg=\"invalid distance too far back\",d.mode=s;break}C>d.wnext?(C-=d.wnext,T=d.wsize-C):T=d.wnext-C,C>d.length&&(C=d.length),S=d.window}else S=f,T=p-d.offset,C=d.length;C>y&&(C=y),y-=C,d.length-=C;do{f[p++]=S[T++]}while(--C);0===d.length&&(d.mode=21);break;case 26:if(0===y)break e;f[p++]=d.length,y--,d.mode=21;break;case 27:if(d.wrap){for(;w<32;){if(0===g)break e;g--,k|=h[m++]<<w,w+=8}if(_-=y,e.total_out+=_,d.total+=_,_&&(e.adler=d.check=d.flags?a(d.check,f,_,p-_):n(d.check,f,_,p-_)),_=y,(d.flags?k:c(k))!==d.check){e.msg=\"incorrect data check\",d.mode=s;break}k=0,w=0}d.mode=28;case 28:if(d.wrap&&d.flags){for(;w<32;){if(0===g)break e;g--,k+=h[m++]<<w,w+=8}if(k!==(4294967295&d.total)){e.msg=\"incorrect length check\",d.mode=s;break}k=0,w=0}d.mode=29;case 29:M=1;break e;case s:M=-3;break e;case 31:return-4;default:return o}return e.next_out=p,e.avail_out=y,e.next_in=m,e.avail_in=g,d.hold=k,d.bits=w,(d.wsize||_!==e.avail_out&&d.mode<s&&(d.mode<27||4!==u))&&b(e,e.output,e.next_out,_-e.avail_out)?(d.mode=31,-4):(x-=e.avail_in,_-=e.avail_out,e.total_in+=x,e.total_out+=_,d.total+=_,d.wrap&&_&&(e.adler=d.check=d.flags?a(d.check,f,_,e.next_out-_):n(d.check,f,_,e.next_out-_)),e.data_type=d.bits+(d.last?64:0)+(d.mode===i?128:0)+(20===d.mode||15===d.mode?256:0),(0===x&&0===_||4===u)&&0===M&&(M=-5),M)},e.inflateEnd=function(e){if(!e||!e.state)return o;var t=e.state;return t.window&&(t.window=null),e.state=null,0},e.inflateGetHeader=function(e,t){var n;return e&&e.state&&2&(n=e.state).wrap?(n.head=t,t.done=!1,0):o},e.inflateSetDictionary=function(e,t){var a,l=t.length;return e&&e.state&&(0===(a=e.state).wrap||11===a.mode)?11===a.mode&&n(1,t,l,0)!==a.check?-3:b(e,t,l,l)?(a.mode=31,-4):(a.havedict=1,0):o},e.inflateInfo=\"pako inflate (from Nodeca project)\"})),sn=v(((e,t)=>{\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}})),cn=v(((e,t)=>{\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}})),un=v((e=>{\"use strict\";var t=on(),n=Xt(),a=tn(),l=sn(),r=Qt(),o=nn(),i=cn(),s=Object.prototype.toString;function c(e){if(!(this instanceof c))return new c(e);this.options=n.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var u=this.options;u.raw&&u.windowBits>=0&&u.windowBits<16&&(u.windowBits=-u.windowBits,0===u.windowBits&&(u.windowBits=-15)),u.windowBits>=0&&u.windowBits<16&&!(e&&e.windowBits)&&(u.windowBits+=32),u.windowBits>15&&u.windowBits<48&&!(15&u.windowBits)&&(u.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var d=t.inflateInit2(this.strm,u.windowBits);if(d!==l.Z_OK)throw new Error(r[d]);if(this.header=new i,t.inflateGetHeader(this.strm,this.header),u.dictionary&&(\"string\"==typeof u.dictionary?u.dictionary=a.string2buf(u.dictionary):\"[object ArrayBuffer]\"===s.call(u.dictionary)&&(u.dictionary=new Uint8Array(u.dictionary)),u.raw&&(d=t.inflateSetDictionary(this.strm,u.dictionary))!==l.Z_OK))throw new Error(r[d])}function u(e,t){var n=new c(t);if(n.push(e,!0),n.err)throw n.msg||r[n.err];return n.result}c.prototype.push=function(e,r){var o,i,c,u,d,h=this.strm,f=this.options.chunkSize,m=this.options.dictionary,p=!1;if(this.ended)return!1;i=r===~~r?r:!0===r?l.Z_FINISH:l.Z_NO_FLUSH,\"string\"==typeof e?h.input=a.binstring2buf(e):\"[object ArrayBuffer]\"===s.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new n.Buf8(f),h.next_out=0,h.avail_out=f),(o=t.inflate(h,l.Z_NO_FLUSH))===l.Z_NEED_DICT&&m&&(o=t.inflateSetDictionary(this.strm,m)),o===l.Z_BUF_ERROR&&!0===p&&(o=l.Z_OK,p=!1),o!==l.Z_STREAM_END&&o!==l.Z_OK)return this.onEnd(o),this.ended=!0,!1;h.next_out&&(0===h.avail_out||o===l.Z_STREAM_END||0===h.avail_in&&(i===l.Z_FINISH||i===l.Z_SYNC_FLUSH))&&(\"string\"===this.options.to?(c=a.utf8border(h.output,h.next_out),u=h.next_out-c,d=a.buf2string(h.output,c),h.next_out=u,h.avail_out=f-u,u&&n.arraySet(h.output,h.output,c,u,0),this.onData(d)):this.onData(n.shrinkBuf(h.output,h.next_out))),0===h.avail_in&&0===h.avail_out&&(p=!0)}while((h.avail_in>0||0===h.avail_out)&&o!==l.Z_STREAM_END);return o===l.Z_STREAM_END&&(i=l.Z_FINISH),i===l.Z_FINISH?(o=t.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===l.Z_OK):(i===l.Z_SYNC_FLUSH&&(this.onEnd(l.Z_OK),h.avail_out=0),!0)},c.prototype.onData=function(e){this.chunks.push(e)},c.prototype.onEnd=function(e){e===l.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.Inflate=c,e.inflate=u,e.inflateRaw=function(e,t){return(t=t||{}).raw=!0,u(e,t)},e.ungzip=u})),dn=v(((e,t)=>{\"use strict\";var n={};(0,Xt().assign)(n,an(),un(),sn()),t.exports=n}));function hn(e){$(\"#luckysheet-cell-loading\").find(\"span\").text(e).end().show()}function fn(){$(\"#luckysheet-cell-loading\").hide()}var mn,pn=y((()=>{})),gn=y((()=>{Yt(),Ci(),Yn(),fo(),qt(),x(),mn={deepCopyFlowDataState:!1,deepCopyFlowDataCache:\"\",deepCopyFlowDataWorker:null,deepCopyFlowData:function(e){let n=this;return n.deepCopyFlowDataState?(null!=n.deepCopyFlowDataWorker&&n.deepCopyFlowDataWorker.terminate(),n.deepCopyFlowDataCache):(null==e&&(e=t.flowdata),$.extend(!0,[],e))},webWorkerFlowDataCache:function(e){let t=this;try{null!=t.deepCopyFlowDataWorker&&t.deepCopyFlowDataWorker.terminate();let n,a=\"data:text/javascript;chartset=US-ASCII,onmessage = function (e) { postMessage(e.data); };\";if(t.deepCopyFlowDataState=!1,1==Gt.isIE()){let e=\"self.onmessage=function(e){postMessage(e.data);}\";n=new Worker(\"./plugins/Worker-helper.js\"),n.postMessage(e)}else n=new Worker(a);t.deepCopyFlowDataWorker=n,n.postMessage(e),n.onmessage=function(e){t.deepCopyFlowDataCache=e.data,t.deepCopyFlowDataState=!0}}catch(n){t.deepCopyFlowDataCache=$.extend(!0,[],e)}},controlHandler:function(e,n){let a=this.deepCopyFlowData(t.flowdata),l=n||t.luckysheet_select_save[t.luckysheet_select_save.length-1],r=null==l.row?0:l.row[0],o=null==l.column?0:l.column[0],i=e.length,s=e[0].length,c=r+i-a.length,u=o+s-a[0].length;(c>0||u>0)&&(a=qn([].concat(a),c,u,!0));for(let t=0;t<i;t++){let n=[].concat(a[t+r]);for(let a=0;a<s;a++){let l=\"\";null!=e[t]&&null!=e[t][a]&&(l=e[t][a]),n[a+o]=l}a[t+r]=n}c>0||u>0?lo(a[0].length,a.length,a,null,t.luckysheet_select_save,\"datachangeAll\"):ro(a,t.luckysheet_select_save)},clearRangeByindex:function(e,n,a,l,r){let o=Mt(r),i=$.extend(!0,[],t.luckysheetfile[o].data);for(let t=e;t<=n;t++){let e=[].concat(i[t]);for(let n=a;n<=l;n++)wi.delFunctionGroup(t,n),wi.execFunctionGroup(t,n,\"\"),e[n]=null;i[t]=e}if(r==t.currentSheetIndex){n-e+1>5e3?ao(i,[{row:[e,n],column:[a,l]}]):ro(i,{row:[e,n],column:[a,l]})}else t.luckysheetfile[o].data=i},controlHandlerD:function(e){let n=this.deepCopyFlowData(t.flowdata),a=t.luckysheet_select_save[t.luckysheet_select_save.length-1],l=a.row[0],r=a.row[1],o=a.column[0],i=a.column[1],s=e.length,c=e[0].length,u=l+s-n.length,d=o+c-n[0].length;(u>0||d>0)&&(n=qn([].concat(n),u,d,!0));for(let e=l;e<=r;e++)for(let t=o;t<=i;t++)n[e][t]=null;for(let t=0;t<s;t++)for(let a=0;a<c;a++)n[l+t][o+a]=e[t][a];ao(n,[{row:[l,r],column:[o,i]},{row:[l,l+s-1],column:[o,o+c-1]}])}}}));function yn(e){let n={};if(\"array\"==ad(e))for(let a=0;a<e.length;a++){let l=e[a].r,r=e[a].c,o=e[a].f;if(null!=t.flowdata[l][r]&&null!=t.flowdata[l][r].f&&t.flowdata[l][r].f==o){l+\"_\"+r in n&&(n=vn(n,l,r));let o=e[a].data,i=o.length,s=1;if(\"array\"==ad(o[0])&&(s=o[0].length),bn({row:[l,l+i-1],column:[r,r+s-1]},t.flowdata))for(let e=0;e<i;e++)for(let t=0;t<s;t++){let a=l+e,i=r+t;\"array\"==ad(o[0])?n[a+\"_\"+i]={v:o[e][t],r:l,c:r}:n[a+\"_\"+i]={v:o[e],r:l,c:r}}else n[l+\"_\"+r]={v:\"#SPILL!\",r:l,c:r}}}return n}function vn(e,t,n){let a=e[t+\"_\"+n].r,l=e[t+\"_\"+n].c;for(let t in e)t==a+\"_\"+l?e[t].v=\"#SPILL!\":e[t].r==a&&e[t].c==l&&delete e[t];return e}function bn(e,t){let n=e.row[0],a=e.row[1],l=e.column[0],r=e.column[1],o=!0;for(let e=n;e<=a;e++)for(let a=l;a<=r;a++)if((e!=n||a!=l)&&null!=t[e][a]&&null!=t[e][a].v&&\"\"!=t[e][a].v.toString()){o=!1;break}return o}var kn=y((()=>{_d(),qt(),x()}));function wn(e){let t;if(document.createRange)if(e.innerHTML!=e.innerText||\"\"==e.innerHTML)e.focus(),t=window.getSelection(),t.selectAllChildren(e),t.collapseToEnd();else{let n=e.innerText.length;t=document.createRange(),t.selectNodeContents(e),t.setStart(e.childNodes[0],n),t.collapse(!0);let a=window.getSelection();a.removeAllRanges(),a.addRange(t)}else document.selection&&(t=document.body.createTextRange(),t.moveToElementText(e),t.collapse(!1),t.select())}function xn(e){e.target.classList&&(e.target.classList.contains(\"luckysheet-cols-rows-shift-left\")||e.target.classList.contains(\"luckysheet-cols-rows-shift-right\"))||!$(e.target).hasClass(\"luckysheet-mousedown-cancel\")&&0==$(e.target).filter(\"[class*='sp-palette']\").length&&0==$(e.target).filter(\"[class*='sp-thumb']\").length&&0==$(e.target).filter(\"[class*='sp-']\").length&&($(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu\").hide(),$(\"body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu\").hide(),t.luckysheet_cols_menu_status=!1)}function _n(e){return e!==document.body&&document.body.contains(e)}var Cn=y((()=>{x()}));function Tn(e){return e&&null!=e.ct&&\"inlineStr\"==e.ct.t&&null!=e.ct.s&&e.ct.s.length>0}function Sn(e){return null!=e&&\"inlineStr\"==e.t&&null!=e.s&&e.s.length>0}function $n(e,n,a,l){var r,o=window.getSelection();let i,s=(r=\"None\"==o.type?t.inlineStringEditRange:o.getRangeAt(0)).commonAncestorContainer;i=\"luckysheet-rich-text-editor\"==s.id?$(s):$(s).closest(\"#luckysheet-rich-text-editor\");let c=$(s).closest(\"#luckysheet-functionbox-cell\");if(0==i.length&&0==c.length&&null!=t.inlineStringEditRange&&(s=(r=t.inlineStringEditRange).commonAncestorContainer,i=\"luckysheet-rich-text-editor\"==s.id?$(s):$(s).closest(\"#luckysheet-rich-text-editor\"),c=$(s).closest(\"#luckysheet-functionbox-cell\")),!0===r.collapsed)return;let u=r.endContainer,d=r.startContainer,h=r.endOffset,f=r.startOffset;if(i.length>0){if(d===u){let e,t=d.parentNode,l=!1,r=t.innerText;\"<span\"!=i.html().substr(0,5)&&(l=!0);let o=\"\",s=\"\",c=\"\",u=0,m=f,p=h,g=r.length;o=r.substring(u,m),s=r.substring(m,p),c=r.substring(p,g);let y=\"\";if(\"\"!=o){let e=t.style.cssText;if(l){let n=$(t).closest(\"#luckysheet-input-box\").get(0);null!=n&&(e=En(n.style.cssText,e))}y+=\"<span style='\"+e+\"'>\"+o+\"</span>\"}if(\"\"!=s){let e=Fn(t.style.cssText,n,a);if(l){let n=$(t).closest(\"#luckysheet-input-box\").get(0);null!=n&&(e=En(n.style.cssText,e))}y+=\"<span style='\"+e+\"'>\"+s+\"</span>\"}if(\"\"!=c){let e=t.style.cssText;if(l){let n=$(t).closest(\"#luckysheet-input-box\").get(0);null!=n&&(e=En(n.style.cssText,e))}y+=\"<span style='\"+e+\"'>\"+c+\"</span>\"}\"SPAN\"==d.parentNode.tagName?(e=i.find(\"span\").index(t),$(t).replaceWith(y)):(e=0,$(t).html(y));let v=0;v=u==m?e:e+1,function(e){if(window.getSelection){let n=document.createRange();var t=e.firstChild;n.setStart(t,0),n.setEnd(t,t.length),n.startContainer&&_n(n.startContainer)&&(window.getSelection().removeAllRanges(),window.getSelection().addRange(n))}else if(document.selection){let t=document.body.createTextRange();t.moveToElementText(e),t.select()}}(i.find(\"span\").get(v))}else if(\"SPAN\"==d.parentNode.tagName&&\"SPAN\"==u.parentNode.tagName){let e,t,l=d.parentNode,r=u.parentNode;e=i.find(\"span\").index(l),t=i.find(\"span\").index(r);let o=l.innerHTML,s=r.innerHTML,c=\"\",m=\"\",p=\"\",g=\"\",y=0,v=f,b=h,k=s.length;c=o.substring(y,v),m=o.substring(v,o.length),p=s.substring(0,b),g=s.substring(b,k);let w,x,_=i.find(\"span\"),C=(_.slice(e,t+1),\"\");for(let t=0;t<e;t++){let e=_.get(t),n=e.innerHTML;C+=\"<span style='\"+e.style.cssText+\"'>\"+n+\"</span>\"}if(\"\"!=c&&(C+=\"<span style='\"+l.style.cssText+\"'>\"+c+\"</span>\"),\"\"!=m){C+=\"<span style='\"+Fn(l.style.cssText,n,a)+\"'>\"+m+\"</span>\"}if(e<t)for(let l=e+1;l<t;l++){let e=_.get(l),t=e.innerHTML;C+=\"<span style='\"+Fn(e.style.cssText,n,a)+\"'>\"+t+\"</span>\"}if(\"\"!=p){C+=\"<span style='\"+Fn(r.style.cssText,n,a)+\"'>\"+p+\"</span>\"}\"\"!=g&&(C+=\"<span style='\"+r.style.cssText+\"'>\"+g+\"</span>\");for(let e=t+1;e<_.length;e++){let t=_.get(e),n=t.innerHTML;C+=\"<span style='\"+t.style.cssText+\"'>\"+n+\"</span>\"}i.html(C),y==v?(w=e,x=t):(w=e+1,x=t+1),_=i.find(\"span\"),function(e,t){if(window.getSelection){let l=document.createRange();var n=e.firstChild,a=t.firstChild;l.setStart(n,0),l.setEnd(a,a.length),l.startContainer&&_n(l.startContainer)&&(window.getSelection().removeAllRanges(),window.getSelection().addRange(l))}}(_.get(w),_.get(x))}}else c.length}function In(e){var t=window.getSelection();if(\"None\"==t.type)return;var n=t.getRangeAt(0);let a,l=n.commonAncestorContainer;a=\"luckysheet-rich-text-editor\"==l.id?$(l):$(l).closest(\"#luckysheet-rich-text-editor\");let r=$(l).closest(\"#luckysheet-functionbox-cell\"),o=(n.endContainer,n.startContainer),i=(n.endOffset,n.startOffset);if(a.length>0){let e=o.parentNode;\"luckysheet-rich-text-editor\"==o.id&&(e=$(o).find(\"span\"),0==e.length&&(o.innerHTML=`<span>${o.innerText}</span>`,e=$(o).find(\"span\")),e=e.get(e.length-1),i=e.innerHTML.length),!1===n.collapsed&&n.deleteContents();let t,l,r=e.innerText,s=\"\",c=\"\",u=0,d=i;if(s=r.substring(u,d),c=r.substring(d,r.length),\"SPAN\"==o.parentNode.tagName){let n=a.find(\"span\");if(t=n.index(e),t==n.length-1&&\"\"==c){let a=n[t].innerHTML;l=\"\\n\"==a.substr(a.length-1,1)?\"<span style='\"+e.style.cssText+\"'>\"+s+\"\\n</span>\":\"<span style='\"+e.style.cssText+\"'>\"+s+\"\\n\\n</span>\"}else l=\"<span style='\"+e.style.cssText+\"'>\"+s+\"\\n\"+c+\"</span>\";$(e).replaceWith(l)}else{let n=e.style.cssText;if(l=\"\"==c?\"<span style='\"+n+\"'>\"+s+\"\\n\\n</span>\":\"<span style='\"+n+\"'>\"+s+\"\\n\"+c+\"</span>\",\"luckysheet-rich-text-editor\"==o.id){$(e).replaceWith(l);let n=a.find(\"span\");t=n.length-1,i=n.get(t).innerHTML.length-1}else $(e).html(l),t=0}!function(e,t){if(window.getSelection){let a=document.createRange();var n=e.firstChild;t>n.length?t=n.length:t<0&&(t=0),a.setStart(n,t),a.collapse(!0),a.startContainer&&_n(a.startContainer)&&(window.getSelection().removeAllRanges(),window.getSelection().addRange(a))}}(a.find(\"span\").get(t),i+1)}else r.length}function Rn(e,t,n){if(null==e.ct)return;let a=e.ct.s;if(null!=a)for(let e=0;e<a.length;e++){a[e][t]=n}}function An(e){if(null==e||0==e.length)return{};let t=e.split(\";\"),n=X(),a=n.fontarray,l=n.fontjson,r={ff:a[0],fc:\"#000000\",fs:10,cl:0,un:0,bl:0,it:0};return t.forEach((e=>{let t=Wn((e=e.toLowerCase()).substr(0,e.indexOf(\":\"))),n=Wn(e.substr(e.indexOf(\":\")+1));if(\"font-weight\"==t&&(r.bl=\"bold\"==n?1:0),\"font-style\"==t&&(r.it=\"italic\"==n?1:0),\"font-family\"==t){let e=l[n];r.ff=null==e?n:e}\"font-size\"==t&&(r.fs=parseInt(n)),\"color\"==t&&(r.fc=n),\"text-decoration\"==t&&(r.cl=1),\"border-bottom\"==t&&(r.un=1),\"lucky-strike\"==t&&(r.cl=n),\"lucky-underline\"==t&&(r.un=n)})),r}function Dn(e,t){let n=e.split(\";\");if(null==t||0==t.length)return e;if(e.indexOf(t)>-1)for(let e=0;e<n.length;e++){let a=n[e];a=a.toLowerCase();let l=Wn(a.substr(0,a.indexOf(\":\"))),r=Wn(a.substr(a.indexOf(\":\")+1));if(l==t)return r}return\"\"}function Fn(e,t,n){let a={};if(a[t]=n,\"un\"==t){let t=Dn(e,\"color\");\"\"==t&&(t=\"#000000\");let n=Dn(e,\"font-size\");\"\"==n&&(n=11),n=parseInt(n),a._fontSize=n,a._color=t}let l=jn(a,void 0,void 0,!1),r=Wn(l.substr(0,l.indexOf(\":\"))),o=Wn(l.substr(l.indexOf(\":\")+1));return o=o.substr(0,o.length-1),e=function(e,t){let n=e.split(\";\"),a=\"\",l=t;if(null==t||0==t.length)return e;if(t in Pn&&(t=Pn[t]),e.indexOf(t)>-1)for(let e=0;e<n.length;e++){let r=n[e];r=r.toLowerCase();let o=Wn(r.substr(0,r.indexOf(\":\"))),i=Wn(r.substr(r.indexOf(\":\")+1));o==t||\"cl\"==l&&\"lucky-strike\"==o||\"un\"==l&&\"lucky-underline\"==o||o.length>0&&(a+=o+\":\"+i+\";\")}else a=e;return a}(e,t),e=function(e,t,n){let a=e.split(\";\"),l=\"\";if(null==t||0==t.length)return e;if(e.indexOf(t)>-1)for(let e=0;e<a.length;e++){let r=a[e];r=r.toLowerCase();let o=Wn(r.substr(0,r.indexOf(\":\"))),i=Wn(r.substr(r.indexOf(\":\")+1));o==t?l+=o+\":\"+n+\";\":o.length>0&&(l+=o+\":\"+i+\";\")}else t.length>0&&(l=e+=t+\":\"+n+\";\");return l}(e,r,o),e}function En(e,t,n=!0){let a=e.split(\";\"),l=t.split(\";\"),r=\"\",o={};for(let e=0;e<a.length;e++){let t=a[e],i=!0;t=t.toLowerCase();let s=Wn(t.substr(0,t.indexOf(\":\")));if(\"font-size\"==s)continue;let c=Wn(t.substr(t.indexOf(\":\")+1));if(!n||s in Nn){for(let e=0;e<l.length;e++){let t=l[e];t=t.toLowerCase();let n=Wn(t.substr(0,t.indexOf(\":\"))),a=Wn(t.substr(t.indexOf(\":\")+1));s!=n||(r+=n+\":\"+a+\";\",i=!1)}i&&(r+=s+\":\"+c+\";\"),o[s]=1}}for(let e=0;e<l.length;e++){let t=l[e];t=t.toLowerCase();let a=Wn(t.substr(0,t.indexOf(\":\"))),i=Wn(t.substr(t.indexOf(\":\")+1));n&&!(a in Nn)||a in o||(r+=a+\":\"+i+\";\")}return r}var Mn,Nn,Pn,zn=y((()=>{Yn(),Cn(),K(),x(),Mn={bl:1,it:1,ff:1,cl:1,un:1,fs:1,fc:1},Nn={\"font-weight\":1,\"font-style\":1,\"font-family\":1,\"text-decoration\":1,\"border-bottom\":1,\"font-size\":1,color:1},Pn={bl:\"font-weight\",it:\"font-style\",ff:\"font-family\",fs:\"font-size\",fc:\"color\",cl:\"text-decoration\",un:\"border-bottom\"}}));function Ln(e,n){if(null==e&&(e=t.luckysheet_select_save[0]),null==e.row||0==e.row.length)return[];let a,l;null!=n&&n!=t.currentSheetIndex?(a=t.luckysheetfile[Mt(n)].data,l=t.luckysheetfile[Mt(n)].config):(a=mn.deepCopyFlowData(t.flowdata),l=t.config);let r=[];for(let t=e.row[0];t<=e.row[1];t++){if(null==a[t]||null!=l.rowhidden&&null!=l.rowhidden[t])continue;let n=[];for(let l=e.column[0];l<=e.column[1];l++)n.push(a[t][l]);r.push(n)}return r}function On(e,n){if(null==n||null==n.row||0==n.row.length)return[];let a=yn(t.luckysheetfile[Mt(t.currentSheetIndex)].dynamicArray),l=[];if(null==e)return l;for(let t=n.row[0];t<=n.row[1];t++){if(null==e[t])continue;let r=[];for(let l=n.column[0];l<=n.column[1];l++){let n;n=t+\"_\"+l in a?a[t+\"_\"+l]:e[t][l],r.push(n)}l.push(r)}return l}function Bn(e){if(null==e||null==e.row||0==e.row.length)return[];let n=[];for(let a=e.row[0];a<=e.row[1];a++){let l=[];if(null==t.config.rowhidden||null==t.config.rowhidden[a]){for(let n=e.column[0];n<=e.column[1];n++){let e=\"\";null!=t.flowdata[a]&&null!=t.flowdata[a][n]&&(e=t.flowdata[a][n]),l.push(e)}n.push(l)}}return n}function Vn(e,n,a,l){let r;if(null==l&&(l=\"v\"),null==a&&(a=t.flowdata),null!=e&&null!=n)r=a[e][n];else if(null!=e)r=a[e];else{if(null==n)return a;r=a[0].map((function(e,t){return a.map((function(e){return e[t]}))}))[n]}let o=r;return\"object\"==ad(r)&&(o=r[l],\"f\"==l&&null!=o?o=wi.functionHTMLGenerate(o):\"f\"==l&&(o=r.v)),null==o&&(o=null),o}function qn(e,n,a,l){if(n<=0&&a<=0)return e;n<=0&&(n=0),a<=0&&(a=0);let r=0;0==e.length?(e=[],r=0):r=e[0].length;let o=[];for(let e=0;e<a;e++)o.push(null);let i=[];for(let e=0;e<r+a;e++)i.push(null);if(o&&o.length)for(let t=0;t<e.length;t++)e[t]=[].concat(e[t].concat(o));for(let t=0;t<n;t++)e.push([].concat(i));return l&&(yo.saveParam(\"all\",t.currentSheetIndex,e.length,{k:\"row\"}),yo.saveParam(\"all\",t.currentSheetIndex,e[0].length,{k:\"column\"})),e}function Hn(e,n,a,l){let r;return r=null!=l?l[e][n]:function(e,n,a){if(null==e||null==n)return;let l;if(l=null==a?t.flowdata:ki.getSheetByIndex(a).data,l&&l[e]&&l[e][n])return l[e][n]}(e,n,a),null==r?null:r.f}function Un(e,t){let n=Vn(e,t,null,\"m\");if(null==n&&(n=Vn(e,t),null==n)){let a=Vn(e,t,null,\"ct\");Sn(a)&&(n=a.s)}return n}function jn(e,t,n,a=!0){if(null==e)return;let l=\"\",r=X().fontarray;for(let o in e){let i=e[o];if(a&&(i=Gn(e,o)),\"bl\"==o&&\"0\"!=i&&(l+=\"font-weight: bold;\"),\"it\"==o&&\"0\"!=i&&(l+=\"font-style:italic;\"),\"ff\"==o){let e=i;e=isNaN(parseInt(i))?i:r[parseInt(i)],l+=\"font-family: \"+e+\";\"}\"fs\"==o&&(l+=\"font-size: \"+i+\"pt;\"),(\"fc\"==o&&\"#000000\"!=i||null!=t||null!=n&&null!=n.textColor)&&(null!=n&&null!=n.textColor?l+=\"color: \"+n.textColor+\";\":l+=null!=t?\"color: \"+t[0]+\";\":\"color: \"+i+\";\"),\"cl\"==o&&\"0\"!=i&&(l+=\"text-decoration: line-through;\")}return l}function Gn(e,n){let a=e;return n in{bl:1,it:1,ff:1,cl:1,un:1}||\"fs\"==n&&Tn(e)?null==a?a=\"0\":(a=a[n],null==a&&(a=\"0\")):\"fc\"==n?null==a?a=\"#000000\":(a=a[n],null==a&&(a=\"#000000\"),a.indexOf(\"rgba\")>-1&&(a=rd(a))):\"bg\"==n?null==a?a=null:(a=a[n],null==a?a=null:a.toString().indexOf(\"rgba\")>-1&&(a=rd(a))):\"bs\"==n.substr(0,2)?null==a?a=\"none\":(a=a[n],null==a&&(a=\"none\")):\"bc\"==n.substr(0,2)?null==a?a=\"#000000\":(a=a[n],null==a&&(a=\"#000000\")):\"ht\"==n?(null==a?a=\"1\":(a=a[n],null==a&&(a=\"1\")),-1==[\"0\",\"1\",\"2\"].indexOf(a.toString())&&(a=\"1\")):\"vt\"==n?(null==a?a=\"0\":(a=a[n],null==a&&(a=\"0\")),-1==[\"0\",\"1\",\"2\"].indexOf(a.toString())&&(a=\"0\")):\"ct\"==n?null==a?a=null:(a=a[n],null==a&&(a=null)):\"fs\"==n?null==a?a=String(t.defaultFontSize):(a=a[n],null==a&&(a=String(t.defaultFontSize))):\"tb\"==n||\"tr\"==n?null==a?a=\"0\":(a=a[n],null==a&&(a=\"0\")):\"rt\"==n&&(null==a?a=null:(a=a[n],null==a&&(a=null))),a}function Wn(e){return null==e||0==e.length?e:e.replace(/^\\s+|\\s+$/gm,\"\")}var Yn=y((()=>{_d(),qt(),_o(),Ci(),gn(),kn(),_i(),zn(),K(),x()}));function Xn(e,t){let n=e.length-1;return n=e.length<40||t<=e[20]||t>=e[n-20]?function(e,t){let n=0,a=0,l=0,r=-1,o=e.length-1;for(;n<e.length&&o>=0&&o>=n;){if(a=e[o],l=0==o?0:e[o-1],t>=l&&t<a){r=o;break}if(a=e[n],l=0==n?0:e[n-1],t>=l&&t<a){r=n;break}n++,o--}return r}(e,t):function(e,t){let n=0,a=e.length-1;for(;n<=a;){let l=parseInt((a+n)/2);if(t<e[l]&&(0==l||t>=e[l-1]))return l;if(t>=e[l])n=l+1;else{if(!(t<e[l]))return-1;a=l-1}}}(e,t),n}var Kn=y((()=>{}));function Zn(e){let n=0,a=0;return n=t.visibledatarow[e],a=0==e?0:t.visibledatarow[e-1],[a,n,e]}function Jn(e){let n=Xn(t.visibledatarow,e);return-1==n&&e>0?n=t.visibledatarow.length-1:-1==n&&e<=0&&(n=0),Zn(n)}function Qn(e){let n=0,a=0;return n=t.visibledatacolumn[e],a=0==e?0:t.visibledatacolumn[e-1],[a,n,e]}function ea(e){let n=Xn(t.visibledatacolumn,e);return-1==n&&e>0?n=t.visibledatacolumn.length-1:-1==n&&e<=0&&(n=0),Qn(n)}function ta(e,n){let a=$(\"#\"+t.container).offset();return[e-a.left-t.rowHeaderWidth,n-a.top-t.infobarHeight-t.toolbarHeight-t.calculatebarHeight-t.columnHeaderHeight]}var na=y((()=>{Kn(),x()}));function aa(e,n,a,l){var r,o;let i=$.extend(!0,{},l);null==i.rowlen&&(i.rowlen={}),null==i.customHeight&&(i.customHeight={});let s=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");s.textBaseline=\"top\";for(let c=n;c<=a;c++){if(null!=i.rowhidden&&null!=i.rowhidden[c])continue;let n=t.defaultrowlen;if(1==i.customHeight[c])continue;delete i.rowlen[c];for(let t=0;t<(null==(r=e[c])?void 0:r.length);t++){let a=e[c][t];if(null!=a&&null!=a&&(null!=a.v||Tn(a))){let e;if(a.mc){if(t!==a.mc.c)continue;{let n=Qn(t)[0];e=Qn(a.mc.c+a.mc.cs-1)[1]-n-2}}else e=Qn(t)[1]-Qn(t)[0]-2;let l=ca(a,s,{r:c,c:t,cellWidth:e}),r=0;null!=l&&(r=l.textHeightAll+2),r>n&&(n=r)}}let a=0|i.marginRowLen;n/=t.zoomRatio,n!=t.defaultrowlen?i.rowlen[c]=n+a:(null==(o=l.rowlen)?void 0:o[c])&&(i.rowlen[c]=l.rowlen[c]+a)}return i}function la(e,n){let a=0,l=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");l.textBaseline=\"top\";for(let r=0;r<e[n].length;r++){let o=e[n][r];if(null!=o&&(null==o.mc||1===o.mc.rs)&&(null==t.config.colhidden||null==t.config.colhidden[r])&&null!=o&&(null!=o.v||Tn(o))){let e=ca(o,l,{r:n,c:r,cellWidth:ra(o,r)}),t=0;null!=e&&(t=e.textHeightAll+2),t>a&&(a=t)}}return a}function ra(e,n){let a=Qn(n);return e.mc&&1!==e.mc.cs&&(a=function(e,n){let a=0,l=0;return a=t.visibledatacolumn[e+n-1],l=0==e?0:t.visibledatacolumn[e-1],[l,a,e]}(n,e.mc.cs)),a[1]-a[0]-2}function oa(e,t,n){let a=0,l=ia(n,t),r=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");r.textBaseline=\"top\";for(var o=0;o<e.length;o++){var i=e[o][t];if(null!=i&&(null!=i.v||Tn(i))){let e=ca(i,r,{r:o,c:t,cellHeight:l[t]}),n=0;null!=e&&(n=e.textWidthAll+2),n>a&&(a=n)}}return a}function ia(e,n){let a=[],l=0;for(let r=0;r<e;r++){let e=t.defaultrowlen;(null!=n.rowlen&&null!=n.rowlen[r]&&(e=n.rowlen[r]),null==n.rowhidden||null==n.rowhidden[r])?(l+=e+1,a.push(l)):(e=n.rowhidden[r],a.push(l))}return a}function sa(e,n,a){let l=t.measureTextCache[e+\"_\"+n.font];if(null!=a&&(l=t.measureTextCache[e+\"_\"+a]),null!=l)return l;{if(null!=a){n.font;n.font=a}let l=n.measureText(e),r={};if(r.width=l.width,null!=a&&(n.font=a),r.actualBoundingBoxDescent=l.actualBoundingBoxDescent,r.actualBoundingBoxAscent=l.actualBoundingBoxAscent,null==r.actualBoundingBoxDescent||null==r.actualBoundingBoxAscent||isNaN(r.actualBoundingBoxDescent)||isNaN(r.actualBoundingBoxAscent)){let t=\"M\";S(e)&&(t=\"田\");let a=.8*Yu.getTextSize(t,n.font)[1];\"top\"==n.textBaseline?(r.actualBoundingBoxDescent=a,r.actualBoundingBoxAscent=0):\"middle\"==n.textBaseline?(r.actualBoundingBoxDescent=a/2,r.actualBoundingBoxAscent=a/2):(r.actualBoundingBoxDescent=0,r.actualBoundingBoxAscent=a)}if(\"alphabetic\"==n.textBaseline){let e=\"gjpqy\",l=\"abcdABCD\",o=t.measureTextCache[e+\"_\"+n.font];null!=a&&(o=t.measureTextCache[e+\"_\"+a]);let i=t.measureTextCache[l+\"_\"+n.font];null!=a&&(i=t.measureTextCache[l+\"_\"+a]),null==o&&(o=n.measureText(e)),null==i&&(i=n.measureText(l)),r.actualBoundingBoxDescent<=i.actualBoundingBoxDescent&&(r.actualBoundingBoxDescent=o.actualBoundingBoxDescent,null==r.actualBoundingBoxDescent&&(r.actualBoundingBoxDescent=0))}return r.width*=t.zoomRatio,r.actualBoundingBoxDescent*=t.zoomRatio,r.actualBoundingBoxAscent*=t.zoomRatio,t.measureTextCache[e+\"_\"+t.zoomRatio+\"_\"+n.font]=r,r}}function ca(e,n,a){let l=a.cellWidth,r=a.cellHeight,o=\"\",i=\"\";null==l&&(o=\"onlyWidth\",i=\"_\");let s=t.measureTextCellInfoCache[a.r+\"_\"+a.c+i+o];if(null!=s)return s;let c=a.space_width,u=a.space_height;null==c&&(c=2),null==u&&(u=2);let d=Gn(e,\"ht\"),h=Gn(e,\"vt\"),f=Gn(e,\"tb\"),m=Gn(e,\"tr\"),p=Gn(e,\"rt\"),g=1,y=0;null==p&&(\"0\"==m?p=0:\"1\"==m?p=45:\"4\"==m?p=90:\"2\"==m?p=135:\"5\"==m&&(p=180),null==p&&(p=0)),(p>180||p<0)&&(p=0),p=parseInt(p),p>90&&(p=90-p,g=0),n.textAlign=\"start\";let v,b,k={values:[]},w=\"0\",x=\"0\",C=11,T=!1,S=[];if(Tn(e)){let t=e.ct.s,n=0;for(let e=0;e<t.length;e++){let a=t[e],l=ud(a),r=a.fc,o=a.cl,i=a.un,s=a.v,c=a.fs;s=s.replace(/\\r\\n/g,\"_x000D_\").replace(/&#13;&#10;/g,\"_x000D_\").replace(/\\r/g,\"_x000D_\").replace(/\\n/g,\"_x000D_\");let u=s.split(\"_x000D_\");for(let e=0;e<u.length;e++){let t=u[e];if(\"\"==t&&e!=u.length-1)S.push({fontset:l,fc:null==r?\"#000\":r,cl:null==o?0:o,un:null==i?0:i,wrap:!0,fs:null==c?11:c}),n++;else{let a=t.split(\"\");for(let e=0;e<a.length;e++){let t=a[e];S.push({fontset:l,fc:null==r?\"#000\":r,cl:null==o?0:o,un:null==i?0:i,v:t,si:n,fs:null==c?11:c})}e!=u.length-1&&(S.push({fontset:l,fc:null==r?\"#000\":r,cl:null==o?0:o,un:null==i?0:i,wrap:!0,fs:null==c?11:c}),n++)}}n++}T=!0}else if(v=ud(e),n.font=v,w=Gn(e,\"cl\"),x=Gn(e,\"un\"),C=Gn(e,\"fs\"),e instanceof Object?(b=e.m,null==b&&(b=e.v)):b=e,_(b))return null;if(\"3\"==m){n.textBaseline=\"top\";let e=0,t=0,a=0,i=0,s={},m=[];if(T){let e=null;for(let t=0;t<S.length;t++){let l=S[t],o=l.v,d=l.v;if(!0===l.wrap&&(o=\"M\",d=\"\",null!=e&&!0!==e.wrap&&t<S.length-1)){m.push(i),i=0,a+=1,e=l;continue}let h=sa(o,n,l.fontset),p=h.width+c,g=h.actualBoundingBoxAscent+h.actualBoundingBoxDescent+u;i+=g,\"2\"==f&&!l.wrap&&i>r&&null!=s[a]&&(m.push(i-g),i=g,a+=1),t==S.length-1&&m.push(i),null==s[a]&&(s[a]=[]);let y={content:d,style:l,width:p,height:g,left:0,top:0,colIndex:a,asc:h.actualBoundingBoxAscent,desc:h.actualBoundingBoxDescent,inline:!0};!0===l.wrap&&(y.wrap=!0),s[a].push(y),console.log(\"normal\",t,a,l,e,s),e=l}}else{let e=sa(b,n),t=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent;b=b.toString();let l=[];b.length>1?l=b.split(\"\"):l.push(b);let o=sa(l[0],n).width;for(let n=0;n<l.length;n++){let d=o+c,h=t+u;i+=h,\"2\"==f&&i>r&&null!=s[a]&&(m.push(i-h),i=h,a+=1),n==l.length-1&&m.push(i),null==s[a]&&(s[a]=[]),s[a].push({content:l[n],style:v,width:d,height:h,left:0,top:0,colIndex:a,asc:e.actualBoundingBoxAscent,desc:e.actualBoundingBoxDescent})}}let p=[];for(let n=0;n<m.length;n++){let a=m[n],l=s[n],r=0;for(let e=0;e<l.length;e++){let t=l[e];r=Math.max(r,t.width)}p.push(r),e+=r,t=Math.max(t,a)}if(k.type=\"verticalWrap\",k.textWidthAll=e,k.textHeightAll=t,\"onlyWidth\"==o)return k;let g=0;for(let t=0;t<m.length;t++){let n=m[t],a=p[t],o=s[t],i=0;for(let t=0;t<o.length;t++){let s=o[t],f=c+g;\"0\"==d?f=l/2+g-e/2+c*m.length:\"2\"==d&&(f=l+g-e+c);let p=r-u+i-n;\"0\"==h?p=r/2+i-n/2:\"1\"==h&&(p=u+i),i+=s.height,s.left=f,s.top=p,ua(s,w,x,{width:a,height:s.height,left:f,top:p+s.height-u,asc:s.height,desc:0,fs:C}),k.values.push(s)}g+=a}}else{let e=function(e){return null!=e.measureText(\"田\").actualBoundingBoxAscent}(n);if(n.textBaseline=e?\"alphabetic\":\"bottom\",\"2\"==f||T){let t=0,a=0,i=0,s=0,m={};k.rotate=p,p=Math.abs(p);let y,_,$,I,R=0,A=1,F=null,E=null;if(T)for(;A<=S.length;){let e=S.slice(R,A);if(!0===e[e.length-1].wrap){if(R=A,e.length>1)for(let t=0;t<e.length-1;t++){let n=e[t],a={content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs};m[s].push(a)}if(1==e.length||A==S.length){let t=e[0],a=sa(\"M\",n,t.fontset);null==m[s]&&(m[s]=[]),m[s].push({content:\"\",style:t,width:a.width,height:a.actualBoundingBoxAscent+a.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:a.actualBoundingBoxAscent,desc:a.actualBoundingBoxDescent,inline:!0,wrap:!0,fs:t.fs})}s+=1,A++;continue}let t=0,a=0;for(let l=0;l<e.length;l++){let r=e[l];null==r.measureText&&(r.measureText=sa(r.v,n,r.fontset)),t+=r.measureText.width,a=Math.max(r.measureText.actualBoundingBoxAscent+r.measureText.actualBoundingBoxDescent)}let o=t*Math.cos(p*Math.PI/180)+a*Math.sin(p*Math.PI/180),i=t*Math.sin(p*Math.PI/180)+a*Math.cos(p*Math.PI/180),d=e[e.length-1];if((\" \"==d.v||2==D(d.v))&&(E=A),0!=p)if(console.log(i,u,r,e,i+u>r),i+u>r&&null!=m[s]&&\"2\"==f&&A!=S.length)if(null!=E&&E<A){for(let t=0;t<E-R;t++){let n=e[t];m[s].push({content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs})}R=E,A=E+1,s+=1,E=null}else{R=A-1;for(let t=0;t<e.length-1;t++){let n=e[t];m[s].push({content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs})}s+=1}else{if(A==S.length){null==m[s]&&(m[s]=[]);for(let t=0;t<e.length;t++){let n=e[t];m[s].push({content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs})}break}null==m[s]&&(m[s]=[]),A++}else if(o+c>l&&null!=m[s]&&\"2\"==f&&A!=S.length)if(null!=E&&E<A){for(let t=0;t<E-R;t++){let n=e[t];m[s].push({content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs})}R=E,A=E+1,s+=1,E=null}else{R=A-1;for(let t=0;t<e.length-1;t++){let n=e[t];m[s].push({content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs})}s+=1}else{if(A==S.length){null==m[s]&&(m[s]=[]);for(let t=0;t<e.length;t++){let n=e[t];m[s].push({content:n.v,style:n,width:n.measureText.width,height:n.measureText.actualBoundingBoxAscent+n.measureText.actualBoundingBoxDescent,left:0,top:0,splitIndex:s,asc:n.measureText.actualBoundingBoxAscent,desc:n.measureText.actualBoundingBoxDescent,inline:!0,fs:n.fs})}break}null==m[s]&&(m[s]=[]),A++}}else for(b=b.toString();A<=b.length;){let e=b.substring(R,A),t=sa(e,n),a=t.width,o=t.actualBoundingBoxAscent+t.actualBoundingBoxDescent,i=a*Math.cos(p*Math.PI/180)+o*Math.sin(p*Math.PI/180),d=a*Math.sin(p*Math.PI/180)+o*Math.cos(p*Math.PI/180),h=e.substr(e.length-1,1);if((\" \"==h||2==D(h))&&null!=I&&(F={index:A,str:y+h,width:$,height:_,asc:I.actualBoundingBoxAscent,desc:I.actualBoundingBoxDescent}),0!=p)if(d+u>r&&null!=m[s]&&A!=b.length)null!=F&&F.index<A?(R=F.index,A=F.index+1,m[s].push({content:F.str,style:v,width:F.width,height:F.height,left:0,top:0,splitIndex:s,asc:F.asc,desc:F.desc,fs:C}),s+=1,F=null):(R=A-1,m[s].push({content:y,style:v,left:0,top:0,splitIndex:s,height:_,width:$,asc:t.actualBoundingBoxAscent,desc:t.actualBoundingBoxDescent,fs:C}),s+=1);else{if(A==b.length){null==m[s]&&(m[s]=[]),m[s].push({content:e,style:v,left:0,top:0,splitIndex:s,height:o,width:a,asc:t.actualBoundingBoxAscent,desc:t.actualBoundingBoxDescent,fs:C});break}null==m[s]&&(m[s]=[]),A++}else if(i+c>l&&null!=m[s]&&A!=b.length)null!=F&&F.index<A?(R=F.index,A=F.index+1,m[s].push({content:F.str,style:v,width:F.width,height:F.height,left:0,top:0,splitIndex:s,asc:F.asc,desc:F.desc,fs:C}),s+=1,F=null):(F=null,R=A-1,m[s].push({content:y,style:v,width:$,height:_,left:0,top:0,splitIndex:s,asc:t.actualBoundingBoxAscent,desc:t.actualBoundingBoxDescent,fs:C}),s+=1);else{if(A==b.length){null==m[s]&&(m[s]=[]),m[s].push({content:e,style:v,width:a,height:o,left:0,top:0,splitIndex:s,asc:t.actualBoundingBoxAscent,desc:t.actualBoundingBoxDescent,fs:C});break}null==m[s]&&(m[s]=[]),A++}y=e,_=o,$=a,I=t}let M=[],N=0,P=Object.keys(m).length;for(let n=0;n<P;n++){let l=m[n];if(null==l)continue;let r=0,o=0,s=0,c=0,u=0,d=0;for(let t=0;t<l.length;t++){let n=l[t];r+=n.width,o=Math.max(o,n.height-(e?n.desc:0)),s=Math.max(s,e?n.desc:0),c=Math.max(c,n.asc),d++}u=o/2,N=Math.max(N,d),0!=p?(o+=u,i=Math.max(i,r),a+=o):(o+=u,t=Math.max(t,r),a+=o),M.push({width:r,height:o,desc:s,asc:c,lineHeight:u,wordCount:d})}let z=0,L=0,O=p*Math.PI/180,B=M[P-1],V=B.lineHeight;a=a-V+B.desc;let q=a/Math.sin(O)+i*Math.cos(O),H=i*Math.sin(O),U=0;if(0!=p?(1==P?(t=i+a/Math.tan(O)*2,U=a/Math.tan(O)):t=i+a/Math.tan(O),k.textWidthAll=q,k.textHeightAll=H):(k.textWidthAll=t,k.textHeightAll=a),\"onlyWidth\"==o)return k;if(0!=p&&\"1\"==g){n.textAlign=\"end\";for(let e=0;e<P;e++){let n=m[e];if(null==n)continue;let o=M[e];L=0;for(let e=n.length-1;e>=0;e--){let s,c,u=n[e];if(0!=p){let e,n=z+o.asc;if(e=z/Math.tan(O)-L+i,\"0\"==d){Math.sin(O);\"0\"==h?(s=e+l/2-t/2+V*Math.cos(O)/2,c=n+r/2-a/2-V*Math.cos(O)/2):\"1\"==h?(s=e+l/2-t/2,c=n-(a/2-H/2)):\"2\"==h&&(s=e+l/2-t/2+V*Math.cos(O),c=n+r-H/2-a/2-V*Math.cos(O))}else\"1\"==d?\"0\"==h?(s=e-H*Math.sin(O)/2+V*Math.cos(O)/2,c=n+r/2+H*Math.cos(O)/2-V*Math.cos(O)/2):\"1\"==h?(s=e-H*Math.sin(O),c=n+H*Math.cos(O)):\"2\"==h&&(s=e+V*Math.cos(O),c=n+r-V*Math.cos(O)):\"2\"==d&&(\"0\"==h?(s=e+l-q/2-(i/2+a/2/Math.tan(O))+V*Math.cos(O)/2,c=n+r/2-a/2-V*Math.cos(O)/2):\"1\"==h?(s=e+l-t+U,c=n-a):\"2\"==h&&(s=e+l-q*Math.cos(O)+V*Math.cos(O),c=n+r-q*Math.sin(O)-V*Math.cos(O)))}u.left=s,u.top=c,ua(u,w,x,{width:u.width,height:u.height,left:s-u.width,top:c,asc:o.asc,desc:o.desc,fs:u.fs}),k.values.push(u),L+=u.width}z+=o.height}}else for(let e=0;e<P;e++){let n=m[e];if(null==n)continue;let o=M[e];L=0;for(let e=0;e<n.length;e++){let i,s,f=n[e];if(0!=p){let e,n=z+o.asc;if(e=(a-z)/Math.tan(O)+L,\"0\"==d){Math.sin(O);\"0\"==h?(i=e+l/2-t/2-V*Math.cos(O)/2,s=n+r/2-a/2+V*Math.cos(O)/2):\"1\"==h?(i=e+l/2-t/2-V*Math.cos(O)/2,s=n-(a/2-H/2)+V*Math.cos(O)/2):\"2\"==h&&(i=e+l/2-t/2-V*Math.cos(O),s=n+r-H/2-a/2-V*Math.cos(O))}else\"1\"==d?\"0\"==h?(i=e-H*Math.sin(O)/2-V*Math.cos(O)/2,s=n-a+r/2-H*Math.cos(O)/2-V*Math.cos(O)/2):\"1\"==h?(i=e,s=n-a):\"2\"==h&&(i=e-H*Math.sin(O)-V*Math.cos(O),s=n-a+r-H*Math.cos(O)-V*Math.cos(O)):\"2\"==d&&(\"0\"==h?(i=e+l-q/2-t/2-V*Math.cos(O)/2,s=n+r/2-a/2-V*Math.cos(O)/2):\"1\"==h?(i=e+l-q*Math.cos(O),s=n+H*Math.cos(O)):\"2\"==h&&(i=e+l-t-V*Math.cos(O)+U,s=n+r-V*Math.cos(O)));ua(f,w,x,{width:f.width,height:f.height,left:i,top:s,asc:o.asc,desc:o.desc,fs:f.fs})}else i=c+L,\"0\"==d?i=l/2+L-o.width/2:\"2\"==d&&(i=l+L-o.width),s=r-u+z+o.asc-a,\"0\"==h?s=r/2+z-a/2+o.asc:\"1\"==h&&(s=u+z+o.asc),ua(f,w,x,{width:f.width,height:f.height,left:i,top:s,asc:o.asc,desc:o.desc,fs:f.fs});f.left=i,f.top=s,k.values.push(f),L+=f.width}z+=o.height}k.type=\"plainWrap\",0!=p&&(\"0\"==d?\"0\"==h?(k.textLeftAll=l/2,k.textTopAll=r/2):\"1\"==h?(k.textLeftAll=l/2,k.textTopAll=H/2):\"2\"==h&&(k.textLeftAll=l/2,k.textTopAll=r-H/2):\"1\"==d?\"0\"==h?(k.textLeftAll=0,k.textTopAll=r/2):\"1\"==h?(k.textLeftAll=0,k.textTopAll=0):\"2\"==h&&(k.textLeftAll=0,k.textTopAll=r):\"2\"==d&&(\"0\"==h?(k.textLeftAll=l-q/2,k.textTopAll=r/2):\"1\"==h?(k.textLeftAll=l,k.textTopAll=0):\"2\"==h&&(k.textLeftAll=l,k.textTopAll=r)))}else{let e=sa(b,n),t=e.width,a=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent;k.rotate=p,p=Math.abs(p);let i=p*Math.PI/180,s=t*Math.cos(i)+a*Math.sin(i),f=t*Math.sin(i)+a*Math.cos(i);if(k.textHeightAll=0!=p?f:f+a/2-e.actualBoundingBoxDescent-u,k.textWidthAll=s,\"onlyWidth\"==o)return k;let m=s,y=f,_=c+a*Math.sin(i)*g;\"0\"==d?_=l/2-m/2+a*Math.sin(i)*g:\"2\"==d&&(_=l-c-m+a*Math.sin(i)*g);let T=r-u-y+e.actualBoundingBoxAscent*Math.cos(i)+t*Math.sin(i)*g;\"0\"==h?T=r/2-y/2+e.actualBoundingBoxAscent*Math.cos(i)+t*Math.sin(i)*g:\"1\"==h&&(T=u+e.actualBoundingBoxAscent*Math.cos(i)+t*Math.sin(i)*g),k.type=\"plain\";let S={content:b,style:v,width:m,height:y,left:_,top:T};ua(S,w,x,{width:t,height:a,left:_,top:T,asc:e.actualBoundingBoxAscent,desc:e.actualBoundingBoxDescent,fs:C}),k.values.push(S),k.textLeftAll=_,k.textTopAll=T,k.asc=e.actualBoundingBoxAscent,k.desc=e.actualBoundingBoxDescent}}return k}function ua(e,t,n,a){let l=a.left,r=a.top,o=a.width,i=(a.height,a.asc),s=a.desc,c=a.fs;if(!0!==e.wrap&&(1==e.inline&&null!=e.style&&(t=e.style.cl,n=e.style.un),\"0\"!=t&&(e.cancelLine={},e.cancelLine.startX=l,e.cancelLine.startY=r-i/2+1,e.cancelLine.endX=l+o,e.cancelLine.endY=r-i/2+1,e.cancelLine.fs=c),\"0\"!=n)){if(e.underLine=[],\"1\"==n||\"2\"==n){let t={};t.startX=l,t.startY=r+3,t.endX=l+o,t.endY=r+3,t.fs=c,e.underLine.push(t)}if(\"2\"==n){let t={};t.startX=l,t.startY=r+s,t.endX=l+o,t.endY=r+s,t.fs=c,e.underLine.push(t)}if(\"3\"==n||\"4\"==n){let t={};t.startX=l,t.startY=r+s,t.endX=l+o,t.endY=r+s,t.fs=c,e.underLine.push(t)}if(\"4\"==n){let t={};t.startX=l,t.startY=r+s+2,t.endX=l+o,t.endY=r+s+2,t.fs=c,e.underLine.push(t)}}}var da=y((()=>{_d(),ed(),Yn(),na(),E(),zn(),x()}));function ha(n,a){if(t.rowHeaderWidth=e.rowHeaderWidth*t.zoomRatio,t.columnHeaderHeight=e.columnHeaderHeight*t.zoomRatio,$(\"#luckysheet-rows-h\").width(t.rowHeaderWidth-1.5),$(\"#luckysheet-cols-h-c\").height(t.columnHeaderHeight-1.5),$(\"#luckysheet-left-top\").css({width:t.rowHeaderWidth-1.5,height:t.columnHeaderHeight-1.5}),null!=n){t.visibledatarow=[],t.rh_height=0;for(let e=0;e<n;e++){let n=t.defaultrowlen;(null!=t.config.rowlen&&null!=t.config.rowlen[e]&&(n=t.config.rowlen[e]),null==t.config.rowhidden||null==t.config.rowhidden[e])?(\"auto\"===n&&(n=la(t.flowdata,e)),t.rh_height+=Math.round((n+1)*t.zoomRatio),t.visibledatarow.push(t.rh_height)):t.visibledatarow.push(t.rh_height)}e.enableAddRow||e.enableAddBackTop?t.rh_height+=80:t.rh_height+=29}if(null!=a){t.visibledatacolumn=[],t.ch_width=0;let e=120;for(let e=0;e<a;e++){let a=t.defaultcollen;(null!=t.config.columnlen&&null!=t.config.columnlen[e]?a=t.config.columnlen[e]:null!=t.flowdata[0]&&null!=t.flowdata[0][e]&&(a>300?a=300:a<t.defaultcollen&&(a=t.defaultcollen),a!=t.defaultcollen&&(null==t.config.columnlen&&(t.config.columnlen={}),t.config.columnlen[e]=a)),null==t.config.colhidden||null==t.config.colhidden[e])?(\"auto\"===a&&(a=oa(t.flowdata,e,n)),t.ch_width+=Math.round((a+1)*t.zoomRatio),t.visibledatacolumn.push(t.ch_width)):t.visibledatacolumn.push(t.ch_width)}t.ch_width+=e}}var fa=y((()=>{x(),da(),w()})),ma=v(((e,t)=>{var n,a;n=e,a=function(){\"use strict\";var e=6e4,t=36e5,n=\"millisecond\",a=\"second\",l=\"minute\",r=\"hour\",o=\"day\",i=\"week\",s=\"month\",c=\"quarter\",u=\"year\",d=\"date\",h=\"Invalid Date\",f=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,m=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,p={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(e){var t=[\"th\",\"st\",\"nd\",\"rd\"],n=e%100;return\"[\"+e+(t[(n-20)%10]||t[n]||t[0])+\"]\"}},g=function(e,t,n){var a=String(e);return!a||a.length>=t?e:\"\"+Array(t+1-a.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),a=Math.floor(n/60),l=n%60;return(t<=0?\"+\":\"-\")+g(a,2,\"0\")+\":\"+g(l,2,\"0\")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var a=12*(n.year()-t.year())+(n.month()-t.month()),l=t.clone().add(a,s),r=n-l<0,o=t.clone().add(a+(r?-1:1),s);return+(-(a+(n-l)/(r?l-o:o-l))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:s,y:u,w:i,d:o,D:d,h:r,m:l,s:a,ms:n,Q:c}[e]||String(e||\"\").toLowerCase().replace(/s$/,\"\")},u:function(e){return void 0===e}},v=\"en\",b={};b[v]=p;var k=\"$isDayjsObject\",w=function(e){return e instanceof T||!(!e||!e[k])},x=function e(t,n,a){var l;if(!t)return v;if(\"string\"==typeof t){var r=t.toLowerCase();b[r]&&(l=r),n&&(b[r]=n,l=r);var o=t.split(\"-\");if(!l&&o.length>1)return e(o[0])}else{var i=t.name;b[i]=t,l=i}return!a&&l&&(v=l),l||!a&&v},_=function(e,t){if(w(e))return e.clone();var n=\"object\"==typeof t?t:{};return n.date=e,n.args=arguments,new T(n)},C=y;C.l=x,C.i=w,C.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var T=function(){function p(e){this.$L=x(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[k]=!0}var g=p.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(C.u(t))return new Date;if(t instanceof Date)return new Date(t);if(\"string\"==typeof t&&!/Z$/i.test(t)){var a=t.match(f);if(a){var l=a[2]-1||0,r=(a[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(a[1],l,a[3]||1,a[4]||0,a[5]||0,a[6]||0,r)):new Date(a[1],l,a[3]||1,a[4]||0,a[5]||0,a[6]||0,r)}}return new Date(t)}(e),this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return C},g.isValid=function(){return this.$d.toString()!==h},g.isSame=function(e,t){var n=_(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return _(e)<this.startOf(t)},g.isBefore=function(e,t){return this.endOf(t)<_(e)},g.$g=function(e,t,n){return C.u(e)?this[t]:this.set(n,e)},g.unix=function(){return Math.floor(this.valueOf()/1e3)},g.valueOf=function(){return this.$d.getTime()},g.startOf=function(e,t){var n=this,c=!!C.u(t)||t,h=C.p(e),f=function(e,t){var a=C.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return c?a:a.endOf(o)},m=function(e,t){return C.w(n.toDate()[e].apply(n.toDate(\"s\"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},p=this.$W,g=this.$M,y=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case u:return c?f(1,0):f(31,11);case s:return c?f(1,g):f(0,g+1);case i:var b=this.$locale().weekStart||0,k=(p<b?p+7:p)-b;return f(c?y-k:y+(6-k),g);case o:case d:return m(v+\"Hours\",0);case r:return m(v+\"Minutes\",1);case l:return m(v+\"Seconds\",2);case a:return m(v+\"Milliseconds\",3);default:return this.clone()}},g.endOf=function(e){return this.startOf(e,!1)},g.$set=function(e,t){var i,c=C.p(e),h=\"set\"+(this.$u?\"UTC\":\"\"),f=(i={},i[o]=h+\"Date\",i[d]=h+\"Date\",i[s]=h+\"Month\",i[u]=h+\"FullYear\",i[r]=h+\"Hours\",i[l]=h+\"Minutes\",i[a]=h+\"Seconds\",i[n]=h+\"Milliseconds\",i)[c],m=c===o?this.$D+(t-this.$W):t;if(c===s||c===u){var p=this.clone().set(d,1);p.$d[f](m),p.init(),this.$d=p.set(d,Math.min(this.$D,p.daysInMonth())).$d}else f&&this.$d[f](m);return this.init(),this},g.set=function(e,t){return this.clone().$set(e,t)},g.get=function(e){return this[C.p(e)]()},g.add=function(n,c){var d,h=this;n=Number(n);var f=C.p(c),m=function(e){var t=_(h);return C.w(t.date(t.date()+Math.round(e*n)),h)};if(f===s)return this.set(s,this.$M+n);if(f===u)return this.set(u,this.$y+n);if(f===o)return m(1);if(f===i)return m(7);var p=(d={},d[l]=e,d[r]=t,d[a]=1e3,d)[f]||1,g=this.$d.getTime()+n*p;return C.w(g,this)},g.subtract=function(e,t){return this.add(-1*e,t)},g.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||h;var a=e||\"YYYY-MM-DDTHH:mm:ssZ\",l=C.z(this),r=this.$H,o=this.$m,i=this.$M,s=n.weekdays,c=n.months,u=n.meridiem,d=function(e,n,l,r){return e&&(e[n]||e(t,a))||l[n].slice(0,r)},f=function(e){return C.s(r%12||12,e,\"0\")},p=u||function(e,t,n){var a=e<12?\"AM\":\"PM\";return n?a.toLowerCase():a};return a.replace(m,(function(e,a){return a||function(e){switch(e){case\"YY\":return String(t.$y).slice(-2);case\"YYYY\":return C.s(t.$y,4,\"0\");case\"M\":return i+1;case\"MM\":return C.s(i+1,2,\"0\");case\"MMM\":return d(n.monthsShort,i,c,3);case\"MMMM\":return d(c,i);case\"D\":return t.$D;case\"DD\":return C.s(t.$D,2,\"0\");case\"d\":return String(t.$W);case\"dd\":return d(n.weekdaysMin,t.$W,s,2);case\"ddd\":return d(n.weekdaysShort,t.$W,s,3);case\"dddd\":return s[t.$W];case\"H\":return String(r);case\"HH\":return C.s(r,2,\"0\");case\"h\":return f(1);case\"hh\":return f(2);case\"a\":return p(r,o,!0);case\"A\":return p(r,o,!1);case\"m\":return String(o);case\"mm\":return C.s(o,2,\"0\");case\"s\":return String(t.$s);case\"ss\":return C.s(t.$s,2,\"0\");case\"SSS\":return C.s(t.$ms,3,\"0\");case\"Z\":return l}return null}(e)||l.replace(\":\",\"\")}))},g.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},g.diff=function(n,d,h){var f,m=this,p=C.p(d),g=_(n),y=(g.utcOffset()-this.utcOffset())*e,v=this-g,b=function(){return C.m(m,g)};switch(p){case u:f=b()/12;break;case s:f=b();break;case c:f=b()/3;break;case i:f=(v-y)/6048e5;break;case o:f=(v-y)/864e5;break;case r:f=v/t;break;case l:f=v/e;break;case a:f=v/1e3;break;default:f=v}return h?f:C.a(f)},g.daysInMonth=function(){return this.endOf(s).$D},g.$locale=function(){return b[this.$L]},g.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),a=x(e,t,!0);return a&&(n.$L=a),n},g.clone=function(){return C.w(this.$d,this)},g.toDate=function(){return new Date(this.valueOf())},g.toJSON=function(){return this.isValid()?this.toISOString():null},g.toISOString=function(){return this.$d.toISOString()},g.toString=function(){return this.$d.toUTCString()},p}(),S=T.prototype;return _.prototype=S,[[\"$ms\",n],[\"$s\",a],[\"$m\",l],[\"$H\",r],[\"$W\",o],[\"$M\",s],[\"$y\",u],[\"$D\",d]].forEach((function(e){S[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),_.extend=function(e,t){return e.$i||(e(t,T,_),e.$i=!0),_},_.locale=x,_.isDayjs=w,_.unix=function(e){return _(1e3*e)},_.en=b[v],_.Ls=b,_.p={},_},\"object\"==typeof e&&void 0!==t?t.exports=a():\"function\"==typeof define&&define.amd?define(a):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs=a()}));function pa(e){return!(null==e||e.toString().length<5)&&!!function(e){if(!/^(\\d{4})-(\\d{1,2})-(\\d{1,2})(\\s(\\d{1,2}):(\\d{1,2})(:(\\d{1,2}))?)?$/.test(e)&&!/^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})(\\s(\\d{1,2}):(\\d{1,2})(:(\\d{1,2}))?)?$/.test(e))return!1;var t=RegExp.$1,n=RegExp.$2,a=RegExp.$3;if(t<1900||n>12||a>31)return!1;if(2==n){if(29==new Date(t,1,29).getDate()&&a>29)return!1;if(29!=new Date(t,1,29).getDate()&&a>28)return!1}return!0}(e)}function ga(e,t){return(0,ba.default)(e).diff((0,ba.default)(t))}function ya(e){let t={};return pa(e)&&(t.date=!0),!isNaN(parseFloat(e))&&!S(e)&&(t.num=!0),t}function va(e){let t=\"string\";return pa(e)?t=\"date\":!isNaN(parseFloat(e))&&!S(e)&&(t=\"num\"),t}var ba,ka=y((()=>{E(),ba=k(ma())})),wa=v(((e,t)=>{var n,a;n=e,a=function(){var e,t,n,a,l,r={},o={},i={currentLocale:\"en\",zeroFormat:null,nullFormat:null,defaultFormat:\"0,0\",scalePercentBy100:!0},s={currentLocale:i.currentLocale,zeroFormat:i.zeroFormat,nullFormat:i.nullFormat,defaultFormat:i.defaultFormat,scalePercentBy100:i.scalePercentBy100};function c(e,t){this._input=e,this._value=t}return e=function(n){var a,l,o,i;if(e.isNumeral(n))a=n.value();else if(0===n||void 0===n)a=0;else if(null===n||t.isNaN(n))a=null;else if(\"string\"==typeof n)if(s.zeroFormat&&n===s.zeroFormat)a=0;else if(s.nullFormat&&n===s.nullFormat||!n.replace(/[^0-9]+/g,\"\").length)a=null;else{for(l in r)if((i=\"function\"==typeof r[l].regexps.unformat?r[l].regexps.unformat():r[l].regexps.unformat)&&n.match(i)){o=r[l].unformat;break}a=(o=o||e._.stringToNumber)(n)}else a=Number(n)||null;return new c(n,a)},e.version=\"2.0.6\",e.isNumeral=function(e){return e instanceof c},e._=t={numberToFormat:function(t,n,a){var l,r,i,s,c,u,d,h,f=o[e.options.currentLocale],m=!1,p=!1,g=\"\",y=1e12,v=1e9,b=1e6,k=\"\",w=!1;if(t=t||0,i=Math.abs(t),e._.includes(n,\"(\")?(m=!0,n=n.replace(/[\\(|\\)]/g,\"\")):(e._.includes(n,\"+\")||e._.includes(n,\"-\"))&&(u=e._.includes(n,\"+\")?n.indexOf(\"+\"):t<0?n.indexOf(\"-\"):-1,n=n.replace(/[\\+|\\-]/g,\"\")),e._.includes(n,\"a\")&&(r=!!(r=n.match(/a(k|m|b|t)?/))&&r[1],e._.includes(n,\" a\")&&(g=\" \"),n=n.replace(new RegExp(g+\"a[kmbt]?\"),\"\"),i>=y&&!r||\"t\"===r?(g+=f.abbreviations.trillion,t/=y):i<y&&i>=v&&!r||\"b\"===r?(g+=f.abbreviations.billion,t/=v):i<v&&i>=b&&!r||\"m\"===r?(g+=f.abbreviations.million,t/=b):(i<b&&i>=1e3&&!r||\"k\"===r)&&(g+=f.abbreviations.thousand,t/=1e3)),e._.includes(n,\"[.]\")&&(p=!0,n=n.replace(\"[.]\",\".\")),s=t.toString().split(\".\")[0],c=n.split(\".\")[1],d=n.indexOf(\",\"),l=(n.split(\".\")[0].split(\",\")[0].match(/0/g)||[]).length,c?(e._.includes(c,\"[\")?(c=(c=c.replace(\"]\",\"\")).split(\"[\"),k=e._.toFixed(t,c[0].length+c[1].length,a,c[1].length)):k=e._.toFixed(t,c.length,a),s=k.split(\".\")[0],k=e._.includes(k,\".\")?f.delimiters.decimal+k.split(\".\")[1]:\"\",p&&0===Number(k.slice(1))&&(k=\"\")):s=e._.toFixed(t,0,a),g&&!r&&Number(s)>=1e3&&g!==f.abbreviations.trillion)switch(s=String(Number(s)/1e3),g){case f.abbreviations.thousand:g=f.abbreviations.million;break;case f.abbreviations.million:g=f.abbreviations.billion;break;case f.abbreviations.billion:g=f.abbreviations.trillion}if(e._.includes(s,\"-\")&&(s=s.slice(1),w=!0),s.length<l)for(var x=l-s.length;x>0;x--)s=\"0\"+s;return d>-1&&(s=s.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+f.delimiters.thousands)),0===n.indexOf(\".\")&&(s=\"\"),h=s+k+(g||\"\"),m?h=(m&&w?\"(\":\"\")+h+(m&&w?\")\":\"\"):u>=0?h=0===u?(w?\"-\":\"+\")+h:h+(w?\"-\":\"+\"):w&&(h=\"-\"+h),h},stringToNumber:function(e){var t,n,a,l=o[s.currentLocale],r=e,i={thousand:3,million:6,billion:9,trillion:12};if(s.zeroFormat&&e===s.zeroFormat)n=0;else if(s.nullFormat&&e===s.nullFormat||!e.replace(/[^0-9]+/g,\"\").length)n=null;else{for(t in n=1,\".\"!==l.delimiters.decimal&&(e=e.replace(/\\./g,\"\").replace(l.delimiters.decimal,\".\")),i)if(a=new RegExp(\"[^a-zA-Z]\"+l.abbreviations[t]+\"(?:\\\\)|(\\\\\"+l.currency.symbol+\")?(?:\\\\))?)?$\"),r.match(a)){n*=Math.pow(10,i[t]);break}n*=(e.split(\"-\").length+Math.min(e.split(\"(\").length-1,e.split(\")\").length-1))%2?1:-1,e=e.replace(/[^0-9\\.]+/g,\"\"),n*=Number(e)}return n},isNaN:function(e){return\"number\"==typeof e&&isNaN(e)},includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,n){return e.slice(0,n)+t+e.slice(n)},reduce:function(e,t){if(null===this)throw new TypeError(\"Array.prototype.reduce called on null or undefined\");if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");var n,a=Object(e),l=a.length>>>0,r=0;if(3===arguments.length)n=arguments[2];else{for(;r<l&&!(r in a);)r++;if(r>=l)throw new TypeError(\"Reduce of empty array with no initial value\");n=a[r++]}for(;r<l;r++)r in a&&(n=t(n,a[r],r,a));return n},multiplier:function(e){var t=e.toString().split(\".\");return t.length<2?1:Math.pow(10,t[1].length)},correctionFactor:function(){return Array.prototype.slice.call(arguments).reduce((function(e,n){var a=t.multiplier(n);return e>a?e:a}),1)},toFixed:function(e,t,n,a){var l,r,o,i,s=e.toString().split(\".\"),c=t-(a||0);return l=2===s.length?Math.min(Math.max(s[1].length,c),t):c,o=Math.pow(10,l),i=(n(e+\"e+\"+l)/o).toFixed(l),a>t-l&&(r=new RegExp(\"\\\\.?0{1,\"+(a-(t-l))+\"}$\"),i=i.replace(r,\"\")),i}},e.options=s,e.formats=r,e.locales=o,e.locale=function(e){return e&&(s.currentLocale=e.toLowerCase()),s.currentLocale},e.localeData=function(e){if(!e)return o[s.currentLocale];if(e=e.toLowerCase(),!o[e])throw new Error(\"Unknown locale : \"+e);return o[e]},e.reset=function(){for(var e in i)s[e]=i[e]},e.zeroFormat=function(e){s.zeroFormat=\"string\"==typeof e?e:null},e.nullFormat=function(e){s.nullFormat=\"string\"==typeof e?e:null},e.defaultFormat=function(e){s.defaultFormat=\"string\"==typeof e?e:\"0.0\"},e.register=function(e,t,n){if(t=t.toLowerCase(),this[e+\"s\"][t])throw new TypeError(t+\" \"+e+\" already registered.\");return this[e+\"s\"][t]=n,n},e.validate=function(t,n){var a,l,r,o,i,s,c,u;if(\"string\"!=typeof t&&(t+=\"\",console.warn&&console.warn(\"Numeral.js: Value is not string. It has been co-erced to: \",t)),(t=t.trim()).match(/^\\d+$/))return!0;if(\"\"===t)return!1;try{c=e.localeData(n)}catch(t){c=e.localeData(e.locale())}return r=c.currency.symbol,i=c.abbreviations,a=c.delimiters.decimal,l=\".\"===c.delimiters.thousands?\"\\\\.\":c.delimiters.thousands,!(null!==(u=t.match(/^[^\\d]+/))&&(t=t.substr(1),u[0]!==r)||null!==(u=t.match(/[^\\d]+$/))&&(t=t.slice(0,-1),u[0]!==i.thousand&&u[0]!==i.million&&u[0]!==i.billion&&u[0]!==i.trillion)||(s=new RegExp(l+\"{2}\"),t.match(/[^\\d.,]/g)||(o=t.split(a)).length>2||(o.length<2?!o[0].match(/^\\d+.*\\d$/)||o[0].match(s):1===o[0].length?!o[0].match(/^\\d+$/)||o[0].match(s)||!o[1].match(/^\\d+$/):!o[0].match(/^\\d+.*\\d$/)||o[0].match(s)||!o[1].match(/^\\d+$/))))},e.fn=c.prototype={clone:function(){return e(this)},format:function(t,n){var a,l,o,i=this._value,c=t||s.defaultFormat;if(n=n||Math.round,0===i&&null!==s.zeroFormat)l=s.zeroFormat;else if(null===i&&null!==s.nullFormat)l=s.nullFormat;else{for(a in r)if(c.match(r[a].regexps.format)){o=r[a].format;break}l=(o=o||e._.numberToFormat)(i,c,n)}return l},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var n=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([this._value,e],(function(e,t,a,l){return e+Math.round(n*t)}),0)/n,this},subtract:function(e){var n=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([e],(function(e,t,a,l){return e-Math.round(n*t)}),Math.round(this._value*n))/n,this},multiply:function(e){return this._value=t.reduce([this._value,e],(function(e,n,a,l){var r=t.correctionFactor(e,n);return Math.round(e*r)*Math.round(n*r)/Math.round(r*r)}),1),this},divide:function(e){return this._value=t.reduce([this._value,e],(function(e,n,a,l){var r=t.correctionFactor(e,n);return Math.round(e*r)/Math.round(n*r)})),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register(\"locale\",\"en\",{delimiters:{thousands:\",\",decimal:\".\"},abbreviations:{thousand:\"k\",million:\"m\",billion:\"b\",trillion:\"t\"},ordinal:function(e){var t=e%10;return 1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\"},currency:{symbol:\"$\"}}),e.register(\"format\",\"bps\",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,n,a){var l,r=e._.includes(n,\" BPS\")?\" \":\"\";return t*=1e4,n=n.replace(/\\s?BPS/,\"\"),l=e._.numberToFormat(t,n,a),e._.includes(l,\")\")?((l=l.split(\"\")).splice(-1,0,r+\"BPS\"),l=l.join(\"\")):l=l+r+\"BPS\",l},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),a={base:1024,suffixes:[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"]},l=\"(\"+(l=(n={base:1e3,suffixes:[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"]}).suffixes.concat(a.suffixes.filter((function(e){return n.suffixes.indexOf(e)<0}))).join(\"|\")).replace(\"B\",\"B(?!PS)\")+\")\",e.register(\"format\",\"bytes\",{regexps:{format:/([0\\s]i?b)/,unformat:new RegExp(l)},format:function(t,l,r){var o,i,s,c=e._.includes(l,\"ib\")?a:n,u=e._.includes(l,\" b\")||e._.includes(l,\" ib\")?\" \":\"\";for(l=l.replace(/\\s?i?b/,\"\"),o=0;o<=c.suffixes.length;o++)if(i=Math.pow(c.base,o),s=Math.pow(c.base,o+1),null===t||0===t||t>=i&&t<s){u+=c.suffixes[o],i>0&&(t/=i);break}return e._.numberToFormat(t,l,r)+u},unformat:function(t){var l,r,o=e._.stringToNumber(t);if(o){for(l=n.suffixes.length-1;l>=0;l--){if(e._.includes(t,n.suffixes[l])){r=Math.pow(n.base,l);break}if(e._.includes(t,a.suffixes[l])){r=Math.pow(a.base,l);break}}o*=r||1}return o}}),e.register(\"format\",\"currency\",{regexps:{format:/(\\$)/},format:function(t,n,a){var l,r,o,i=e.locales[e.options.currentLocale],s={before:n.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],after:n.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]};for(n=n.replace(/\\s?\\$\\s?/,\"\"),l=e._.numberToFormat(t,n,a),t>=0?(s.before=s.before.replace(/[\\-\\(]/,\"\"),s.after=s.after.replace(/[\\-\\)]/,\"\")):t<0&&!e._.includes(s.before,\"-\")&&!e._.includes(s.before,\"(\")&&(s.before=\"-\"+s.before),o=0;o<s.before.length;o++)switch(r=s.before[o],r){case\"$\":l=e._.insert(l,i.currency.symbol,o);break;case\" \":l=e._.insert(l,\" \",o+i.currency.symbol.length-1)}for(o=s.after.length-1;o>=0;o--)switch(r=s.after[o],r){case\"$\":l=o===s.after.length-1?l+i.currency.symbol:e._.insert(l,i.currency.symbol,-(s.after.length-(1+o)));break;case\" \":l=o===s.after.length-1?l+\" \":e._.insert(l,\" \",-(s.after.length-(1+o)+i.currency.symbol.length-1))}return l}}),e.register(\"format\",\"exponential\",{regexps:{format:/(e\\+|e-)/,unformat:/(e\\+|e-)/},format:function(t,n,a){var l=(\"number\"!=typeof t||e._.isNaN(t)?\"0e+0\":t.toExponential()).split(\"e\");return n=n.replace(/e[\\+|\\-]{1}0/,\"\"),e._.numberToFormat(Number(l[0]),n,a)+\"e\"+l[1]},unformat:function(t){var n=e._.includes(t,\"e+\")?t.split(\"e+\"):t.split(\"e-\"),a=Number(n[0]),l=Number(n[1]);return l=e._.includes(t,\"e-\")?l*=-1:l,e._.reduce([a,Math.pow(10,l)],(function(t,n,a,l){var r=e._.correctionFactor(t,n);return t*r*(n*r)/(r*r)}),1)}}),e.register(\"format\",\"ordinal\",{regexps:{format:/(o)/},format:function(t,n,a){var l=e.locales[e.options.currentLocale],r=e._.includes(n,\" o\")?\" \":\"\";return n=n.replace(/\\s?o/,\"\"),r+=l.ordinal(t),e._.numberToFormat(t,n,a)+r}}),e.register(\"format\",\"percentage\",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,n,a){var l,r=e._.includes(n,\" %\")?\" \":\"\";return e.options.scalePercentBy100&&(t*=100),n=n.replace(/\\s?\\%/,\"\"),l=e._.numberToFormat(t,n,a),e._.includes(l,\")\")?((l=l.split(\"\")).splice(-1,0,r+\"%\"),l=l.join(\"\")):l=l+r+\"%\",l},unformat:function(t){var n=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*n:n}}),e.register(\"format\",\"time\",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,n){var a=Math.floor(e/60/60),l=Math.floor((e-60*a*60)/60),r=Math.round(e-60*a*60-60*l);return a+\":\"+(l<10?\"0\"+l:l)+\":\"+(r<10?\"0\"+r:r)},unformat:function(e){var t=e.split(\":\"),n=0;return 3===t.length?(n+=60*Number(t[0])*60,n+=60*Number(t[1]),n+=Number(t[2])):2===t.length&&(n+=60*Number(t[0]),n+=Number(t[1])),Number(n)}}),e},\"function\"==typeof define&&define.amd?define(a):\"object\"==typeof t&&t.exports?t.exports=a():n.numeral=a()}));function xa(e,t){var n=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds()),a=Date.UTC(1899,11,31,0,0,0);return t?n-=1262304e5:e>=Da&&(n+=864e5),(n-a)/864e5}function _a(e){var t=null,n={},a=e;if(null==e)return null;if(/^-?[0-9]{1,}[,][0-9]{3}(.[0-9]{1,2})?$/.test(e)){t=e,a=Number(e.split(\".\")[0].replace(\",\",\"\"));let l=\"#,##0\";if(e.split(\".\")[1]){l=\"#,##0.\";for(let t=0;t<e.split(\".\")[1].length;t++)l+=0}n={fa:l,t:\"n\"}}else if(\"'\"===e.toString().substr(0,1))t=e.toString().substr(1),n={fa:\"@\",t:\"s\"};else if(\"TRUE\"===e.toString().toUpperCase())t=\"TRUE\",n={fa:\"General\",t:\"b\"},a=!0;else if(\"FALSE\"===e.toString().toUpperCase())t=\"FALSE\",n={fa:\"General\",t:\"b\"},a=!1;else if(T(e))t=e.toString(),n={fa:\"General\",t:\"e\"};else if(/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(e))t=e.toString(),n={fa:\"@\",t:\"s\"};else if(C(e)&&Math.abs(parseFloat(e))>0&&(Math.abs(parseFloat(e))>=1e11||Math.abs(parseFloat(e))<1e-9))if(e.length>16)a=e,n={fa:\"@\",t:\"s\"},t=Ia.format(n.fa,a);else{var l=(a=(0,$a.default)(e).value()).toExponential();if(l.indexOf(\".\")>-1){var r=l.split(\".\")[1].split(\"e\")[0].length;r>5&&(r=5),n={fa:\"#0.\"+new Array(r+1).join(\"0\")+\"E+00\",t:\"n\"}}else n={fa:\"#0.E+00\",t:\"n\"};t=Ia.format(n.fa,a)}else if(e.toString().indexOf(\"%\")>-1){var o=e.toString().indexOf(\"%\"),i=(h=e.toString().substr(0,o)).replace(/,/g,\"\");if(o==e.toString().length-1&&C(i))if(h.indexOf(\".\")>-1)if(h.indexOf(\".\")==h.lastIndexOf(\".\")){var s=h.split(\".\")[0];if((f=h.split(\".\")[1].length)>9&&(f=9),s.indexOf(\",\")>-1){for(var c=!0,u=s.split(\",\"),d=1;d<u.length;d++)if(u[d].length<3){c=!1;break}c?(n={fa:\"#,##0.\"+new Array(f+1).join(\"0\")+\"%\",t:\"n\"},a=(0,$a.default)(e).value(),t=Ia.format(n.fa,a)):(t=e.toString(),n={fa:\"@\",t:\"s\"})}else n={fa:\"0.\"+new Array(f+1).join(\"0\")+\"%\",t:\"n\"},a=(0,$a.default)(e).value(),t=Ia.format(n.fa,a)}else t=e.toString(),n={fa:\"@\",t:\"s\"};else if(h.indexOf(\",\")>-1){for(c=!0,u=h.split(\",\"),d=1;d<u.length;d++)if(u[d].length<3){c=!1;break}c?(n={fa:\"#,##0%\",t:\"n\"},a=(0,$a.default)(e).value(),t=Ia.format(n.fa,a)):(t=e.toString(),n={fa:\"@\",t:\"s\"})}else n={fa:\"0%\",t:\"n\"},a=(0,$a.default)(e).value(),t=Ia.format(n.fa,a);else t=e.toString(),n={fa:\"@\",t:\"s\"}}else if(e.toString().indexOf(\".\")>-1)if(e.toString().indexOf(\".\")==e.toString().lastIndexOf(\".\")){var h,f,m=e.toString().split(\".\")[0];if((f=(h=e.toString().split(\".\")[1]).length)>9&&(f=9),m.indexOf(\",\")>-1){for(c=!0,u=m.split(\",\"),d=1;d<u.length;d++)if(!C(u[d])||u[d].length<3){c=!1;break}c?(n={fa:\"#,##0.\"+new Array(f+1).join(\"0\"),t:\"n\"},a=(0,$a.default)(e).value(),t=Ia.format(n.fa,a)):(t=e.toString(),n={fa:\"@\",t:\"s\"})}else C(m)&&C(h)?(n={fa:\"0.\"+new Array(f+1).join(\"0\"),t:\"n\"},a=(0,$a.default)(e).value(),t=Ia.format(n.fa,a)):(t=e.toString(),n={fa:\"@\",t:\"s\"})}else t=e.toString(),n={fa:\"@\",t:\"s\"};else C(e)?(t=e.toString(),n={fa:\"General\",t:\"n\"},a=parseFloat(e)):pa(e)&&(e.toString().indexOf(\".\")>-1||e.toString().indexOf(\":\")>-1||e.toString().length<16)?(a=xa(function(e,t){var n=new Date(e);if(Ea)return t>0?n.setTime(n.getTime()+60*n.getTimezoneOffset()*1e3):t<0&&n.setTime(n.getTime()-60*n.getTimezoneOffset()*1e3),n;if(e instanceof Date)return e;if(1917==Fa.getFullYear()&&!isNaN(n.getFullYear())){var a=n.getFullYear();return e.indexOf(\"\"+a)>-1||n.setFullYear(n.getFullYear()+100),n}var l=e.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"],r=new Date(+l[0],+l[1]-1,+l[2],+l[3]||0,+l[4]||0,+l[5]||0);return e.indexOf(\"Z\")>-1&&(r=new Date(r.getTime()-60*r.getTimezoneOffset()*1e3)),r}(e.toString().replace(/-/g,\"/\"))),a.toString().indexOf(\".\")>-1?e.toString().length>18?n.fa=\"yyyy-MM-dd hh:mm:ss\":e.toString().length>11?n.fa=\"yyyy-MM-dd hh:mm\":n.fa=\"yyyy-MM-dd\":n.fa=\"yyyy-MM-dd\",n.t=\"d\",t=Ia.format(n.fa,a)):(t=e,n.fa=\"General\",n.t=\"g\");return[t,n,a]}function Ca(e,t){return Ia.format(e,t)}function Ta(e,t){return Ia.is_date(e,t)}function Sa(e,t,n){var a=Vn(e,t,n,\"m\");return null==a?a=Vn(e,t,n,\"v\"):isNaN(function(e){var t=Number(e);if(\"number\"==typeof e)return e;if(!isNaN(t))return t;var n=1,a=e.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g,(function(){return n*=100,\"\"}));return isNaN(t=Number(a))&&(a=a.replace(/[(](.*)[)]/,(function(e,t){return n=-n,t})),isNaN(t=Number(a)))?t:t/n}(a))?null!=n[e][t].ct&&\"d\"==n[e][t].ct.t||null!=n[e][t].ct&&\"b\"==n[e][t].ct.t||(a=Vn(e,t,n,\"v\")):\"string\"==typeof a&&a.indexOf(\"%\")>-1||(a=Vn(e,t,n,\"v\")),a}var $a,Ia,Ra,Aa,Da,Fa,Ea,Ma=y((()=>{var e,t;E(),ka(),Yn(),$a=k(wa()),Ra=function(e){function t(e){for(var t=\"\",n=e.length-1;n>=0;)t+=e.charAt(n--);return t}function n(e,t){for(var n=\"\";n.length<t;)n+=e;return n}function a(e,t){var a=\"\"+e;return a.length>=t?a:n(\"0\",t-a.length)+a}function l(e,t){var a=\"\"+e;return a.length>=t?a:n(\" \",t-a.length)+a}function r(e,t){var a=\"\"+e;return a.length>=t?a:a+n(\" \",t-a.length)}e.version=\"0.11.2\";var o=Math.pow(2,32);function i(e,t){return e>o||e<-o?function(e,t){var a=\"\"+Math.round(e);return a.length>=t?a:n(\"0\",t-a.length)+a}(e,t):function(e,t){var a=\"\"+e;return a.length>=t?a:n(\"0\",t-a.length)+a}(Math.round(e),t)}function s(e,t){return t=t||0,e.length>=7+t&&103==(32|e.charCodeAt(t))&&101==(32|e.charCodeAt(t+1))&&110==(32|e.charCodeAt(t+2))&&101==(32|e.charCodeAt(t+3))&&114==(32|e.charCodeAt(t+4))&&97==(32|e.charCodeAt(t+5))&&108==(32|e.charCodeAt(t+6))}var c=[[\"Sun\",\"Sunday\"],[\"Mon\",\"Monday\"],[\"Tue\",\"Tuesday\"],[\"Wed\",\"Wednesday\"],[\"Thu\",\"Thursday\"],[\"Fri\",\"Friday\"],[\"Sat\",\"Saturday\"]],u=[[\"J\",\"Jan\",\"January\"],[\"F\",\"Feb\",\"February\"],[\"M\",\"Mar\",\"March\"],[\"A\",\"Apr\",\"April\"],[\"M\",\"May\",\"May\"],[\"J\",\"Jun\",\"June\"],[\"J\",\"Jul\",\"July\"],[\"A\",\"Aug\",\"August\"],[\"S\",\"Sep\",\"September\"],[\"O\",\"Oct\",\"October\"],[\"N\",\"Nov\",\"November\"],[\"D\",\"Dec\",\"December\"]];function d(e){e[0]=\"General\",e[1]=\"0\",e[2]=\"0.00\",e[3]=\"#,##0\",e[4]=\"#,##0.00\",e[9]=\"0%\",e[10]=\"0.00%\",e[11]=\"0.00E+00\",e[12]=\"# ?/?\",e[13]=\"# ??/??\",e[14]=\"m/d/yy\",e[15]=\"d-mmm-yy\",e[16]=\"d-mmm\",e[17]=\"mmm-yy\",e[18]=\"h:mm AM/PM\",e[19]=\"h:mm:ss AM/PM\",e[20]=\"h:mm\",e[21]=\"h:mm:ss\",e[22]=\"m/d/yy h:mm\",e[37]=\"#,##0 ;(#,##0)\",e[38]=\"#,##0 ;[Red](#,##0)\",e[39]=\"#,##0.00;(#,##0.00)\",e[40]=\"#,##0.00;[Red](#,##0.00)\",e[45]=\"mm:ss\",e[46]=\"[h]:mm:ss\",e[47]=\"mmss.0\",e[48]=\"##0.0E+0\",e[49]=\"@\",e[56]='\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"',e[65535]=\"General\"}var h={};d(h);var f=[],m=0;for(m=5;m<=8;++m)f[m]=32+m;for(m=23;m<=26;++m)f[m]=0;for(m=27;m<=31;++m)f[m]=14;for(m=50;m<=58;++m)f[m]=14;for(m=59;m<=62;++m)f[m]=m-58;for(m=67;m<=68;++m)f[m]=m-58;for(m=72;m<=75;++m)f[m]=m-58;for(m=67;m<=68;++m)f[m]=m-57;for(m=76;m<=78;++m)f[m]=m-56;for(m=79;m<=81;++m)f[m]=m-34;var p=[];function g(e,t,n){for(var a=e<0?-1:1,l=e*a,r=0,o=1,i=0,s=1,c=0,u=0,d=Math.floor(l);c<t&&(i=(d=Math.floor(l))*o+r,u=d*c+s,!(l-d<5e-8));)l=1/(l-d),r=o,o=i,s=c,c=u;if(u>t&&(c>t?(u=s,i=r):(u=c,i=o)),!n)return[0,a*i,u];var h=Math.floor(a*i/u);return[h,a*i-h*u,u]}function y(e,t,n){if(e>2958465||e<0)return null;var a=0|e,l=Math.floor(86400*(e-a)),r=0,o=[],i={D:a,T:l,u:86400*(e-a)-l,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(i.u)<1e-6&&(i.u=0),t&&t.date1904&&(a+=1462),i.u>.9999&&(i.u=0,86400==++l&&(i.T=l=0,++a,++i.D)),60===a)o=n?[1317,10,29]:[1900,2,29],r=3;else if(0===a)o=n?[1317,8,29]:[1900,1,0],r=6;else{a>60&&--a;var s=new Date(1900,0,1);s.setDate(s.getDate()+a-1),o=[s.getFullYear(),s.getMonth()+1,s.getDate()],r=s.getDay(),a<60&&(r=(r+6)%7),n&&(r=function(e,t){t[0]-=581;var n=e.getDay();return e<60&&(n=(n+6)%7),n}(s,o))}return i.y=o[0],i.m=o[1],i.d=o[2],i.S=l%60,l=Math.floor(l/60),i.M=l%60,l=Math.floor(l/60),i.H=l,i.q=r,i}p[5]=p[63]='\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',p[6]=p[64]='\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',p[7]=p[65]='\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',p[8]=p[66]='\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',p[41]='_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',p[42]='_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',p[43]='_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',p[44]='_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)',e.parse_date_code=y;var v=new Date(1899,11,31,0,0,0),b=v.getTime(),k=new Date(1900,2,1,0,0,0);function w(e,t){var n=e.getTime();return t?n-=1262304e5:e>=k&&(n+=864e5),(n-(b+6e4*(e.getTimezoneOffset()-v.getTimezoneOffset())))/864e5}e._general_int=function(e){return e.toString(10)};var x=function(){var e=/(?:\\.0*|(\\.\\d*[1-9])0+)$/;function t(t){return-1==t.indexOf(\".\")?t:t.replace(e,\"$1\")}var n=/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,a=/(E[+-])(\\d)$/;return function(e){var l,r=Math.floor(Math.log(Math.abs(e))*Math.LOG10E);return l=r>=-4&&r<=-1?e.toPrecision(10+r):Math.abs(r)<=9?function(e){var n=e<0?12:11,a=t(e.toFixed(12));return a.length<=n||(a=e.toPrecision(10)).length<=n?a:e.toExponential(5)}(e):10===r?e.toFixed(10).substr(0,12):function(e){var n=t(e.toFixed(11));return n.length>(e<0?12:11)||\"0\"===n||\"-0\"===n?e.toPrecision(6):n}(e),t(function(e){return-1==e.indexOf(\"E\")?e:e.replace(n,\"$1E\").replace(a,\"$10$2\")}(l.toUpperCase()))}}();function _(e,t){switch(typeof e){case\"string\":return e;case\"boolean\":return e?\"TRUE\":\"FALSE\";case\"number\":return(0|e)===e?e.toString(10):x(e);case\"undefined\":return\"\";case\"object\":if(null==e)return\"\";if(e instanceof Date)return M(14,w(e,t&&t.date1904),t)}throw new Error(\"unsupported value in General format: \"+e)}e._general_num=x,e._general=_;\"๐๑๒๓๔๕๖๗๘๙\".split(\"\");function C(e,t,n,l){var r,o=\"\",i=0,s=0,d=n.y,h=0;switch(e){case 98:d=n.y+543;case 121:switch(t.length){case 1:case 2:r=d%100,h=2;break;default:r=d%1e4,h=4}break;case 109:switch(t.length){case 1:case 2:r=n.m,h=t.length;break;case 3:return u[n.m-1][1];case 5:return u[n.m-1][0];default:return u[n.m-1][2]}break;case 100:switch(t.length){case 1:case 2:r=n.d,h=t.length;break;case 3:return c[n.q][0];default:return c[n.q][1]}break;case 104:switch(t.length){case 1:case 2:r=1+(n.H+11)%12,h=t.length;break;default:throw\"bad hour format: \"+t}break;case 72:switch(t.length){case 1:case 2:r=n.H,h=t.length;break;default:throw\"bad hour format: \"+t}break;case 77:switch(t.length){case 1:case 2:r=n.M,h=t.length;break;default:throw\"bad minute format: \"+t}break;case 115:if(\"s\"!=t&&\"ss\"!=t&&\".0\"!=t&&\".00\"!=t&&\".000\"!=t)throw\"bad second format: \"+t;return 0!==n.u||\"s\"!=t&&\"ss\"!=t?(s=l>=2?3===l?1e3:100:1===l?10:1,(i=Math.round(s*(n.S+n.u)))>=60*s&&(i=0),\"s\"===t?0===i?\"0\":\"\"+i/s:(o=a(i,2+l),\"ss\"===t?o.substr(0,2):\".\"+o.substr(2,t.length-1))):a(n.S,t.length);case 90:switch(t){case\"[h]\":case\"[hh]\":r=24*n.D+n.H;break;case\"[m]\":case\"[mm]\":r=60*(24*n.D+n.H)+n.M;break;case\"[s]\":case\"[ss]\":r=60*(60*(24*n.D+n.H)+n.M)+Math.round(n.S+n.u);break;default:throw\"bad abstime format: \"+t}h=3===t.length?1:2;break;case 101:r=d,h=1}return h>0?a(r,h):\"\"}function T(e){if(e.length<=3)return e;for(var t=e.length%3,n=e.substr(0,t);t!=e.length;t+=3)n+=(n.length>0?\",\":\"\")+e.substr(t,3);return n}var S=function(){var e=/%/g;function o(e,t){var n,a=e.indexOf(\"E\")-e.indexOf(\".\")-1;if(e.match(/^#+0.0E\\+0$/)){if(0==t)return\"0.0E+0\";if(t<0)return\"-\"+o(e,-t);var l=e.indexOf(\".\");-1===l&&(l=e.indexOf(\"E\"));var r=Math.floor(Math.log(t)*Math.LOG10E)%l;if(r<0&&(r+=l),-1===(n=(t/Math.pow(10,r)).toPrecision(a+1+(l+r)%l)).indexOf(\"e\")){var i=Math.floor(Math.log(t)*Math.LOG10E);for(-1===n.indexOf(\".\")?n=n.charAt(0)+\".\"+n.substr(1)+\"E+\"+(i-n.length+r):n+=\"E+\"+(i-r);\"0.\"===n.substr(0,2);)n=(n=n.charAt(0)+n.substr(2,l)+\".\"+n.substr(2+l)).replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");n=n.replace(/\\+-/,\"-\")}n=n.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,(function(e,t,n,a){return t+n+a.substr(0,(l+r)%l)+\".\"+a.substr(r)+\"E\"}))}else n=t.toExponential(a);return e.match(/E\\+00$/)&&n.match(/e[+-]\\d$/)&&(n=n.substr(0,n.length-1)+\"0\"+n.charAt(n.length-1)),e.match(/E\\-/)&&n.match(/e\\+/)&&(n=n.replace(/e\\+/,\"e\")),n.replace(\"e\",\"E\")}var s=/# (\\?+)( ?)\\/( ?)(\\d+)/;var c=/^#*0*\\.([0#]+)/,u=/\\).*[0#]/,d=/\\(###\\) ###\\\\?-####/;function h(e){for(var t,n=\"\",a=0;a!=e.length;++a)switch(t=e.charCodeAt(a)){case 35:break;case 63:n+=\" \";break;case 48:n+=\"0\";break;default:n+=String.fromCharCode(t)}return n}function f(e,t){var n=Math.pow(10,t);return\"\"+Math.round(e*n)/n}function m(e,t){var n=e-Math.floor(e),a=Math.pow(10,t);return t<(\"\"+Math.round(n*a)).length?0:Math.round(n*a)}function p(y,v,b){if(40===y.charCodeAt(0)&&!v.match(u)){var k=v.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");return b>=0?p(\"n\",k,b):\"(\"+p(\"n\",k,-b)+\")\"}if(44===v.charCodeAt(v.length-1))return function(e,t,n){for(var a=t.length-1;44===t.charCodeAt(a-1);)--a;return S(e,t.substr(0,a),n/Math.pow(10,3*(t.length-a)))}(y,v,b);if(-1!==v.indexOf(\"%\"))return function(t,a,l){var r=a.replace(e,\"\"),o=a.length-r.length;return S(t,r,l*Math.pow(10,2*o))+n(\"%\",o)}(y,v,b);if(-1!==v.indexOf(\"E\"))return o(v,b);if(36===v.charCodeAt(0))return\"$\"+p(y,v.substr(\" \"==v.charAt(1)?2:1),b);var w,x,_,C,$=Math.abs(b),I=b<0?\"-\":\"\";if(v.match(/^00+$/))return I+i($,v.length);if(v.match(/^[#?]+$/))return\"0\"===(w=i(b,0))&&(w=\"\"),w.length>v.length?w:h(v.substr(0,v.length-w.length))+w;if(x=v.match(s))return function(e,t,r){var o=parseInt(e[4],10),i=Math.round(t*o),s=Math.floor(i/o),c=i-s*o,u=o;return r+(0===s?\"\":\"\"+s)+\" \"+(0===c?n(\" \",e[1].length+1+e[4].length):l(c,e[1].length)+e[2]+\"/\"+e[3]+a(u,e[4].length))}(x,$,I);if(v.match(/^#+0+$/))return I+i($,v.length-v.indexOf(\"0\"));if(x=v.match(c))return w=f(b,x[1].length).replace(/^([^\\.]+)$/,\"$1.\"+h(x[1])).replace(/\\.$/,\".\"+h(x[1])).replace(/\\.(\\d*)$/,(function(e,t){return\".\"+t+n(\"0\",h(x[1]).length-t.length)})),-1!==v.indexOf(\"0.\")?w:w.replace(/^0\\./,\".\");if(v=v.replace(/^#+([0.])/,\"$1\"),x=v.match(/^(0*)\\.(#*)$/))return I+f($,x[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,x[1].length?\"0.\":\".\");if(x=v.match(/^#{1,3},##0(\\.?)$/))return I+T(i($,0));if(x=v.match(/^#,##0\\.([#0]*0)$/))return b<0?\"-\"+p(y,v,-b):T(\"\"+(Math.floor(b)+function(e,t){return t<(\"\"+Math.round((e-Math.floor(e))*Math.pow(10,t))).length?1:0}(b,x[1].length)))+\".\"+a(m(b,x[1].length),x[1].length);if(x=v.match(/^#,#*,#0/))return p(y,v.replace(/^#,#*,/,\"\"),b);if(x=v.match(/^([0#]+)(\\\\?-([0#]+))+$/))return w=t(p(y,v.replace(/[\\\\-]/g,\"\"),b)),_=0,t(t(v.replace(/\\\\/g,\"\")).replace(/[0#]/g,(function(e){return _<w.length?w.charAt(_++):\"0\"===e?\"0\":\"\"})));if(v.match(d))return\"(\"+(w=p(y,\"##########\",b)).substr(0,3)+\") \"+w.substr(3,3)+\"-\"+w.substr(6);var R=\"\";if(x=v.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))return _=Math.min(x[4].length,7),C=g($,Math.pow(10,_)-1,!1),w=\"\"+I,\" \"==(R=S(\"n\",x[1],C[1])).charAt(R.length-1)&&(R=R.substr(0,R.length-1)+\"0\"),w+=R+x[2]+\"/\"+x[3],(R=r(C[2],_)).length<x[4].length&&(R=h(x[4].substr(x[4].length-R.length))+R),w+=R;if(x=v.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))return _=Math.min(Math.max(x[1].length,x[4].length),7),I+((C=g($,Math.pow(10,_)-1,!0))[0]||(C[1]?\"\":\"0\"))+\" \"+(C[1]?l(C[1],_)+x[2]+\"/\"+x[3]+r(C[2],_):n(\" \",2*_+1+x[2].length+x[3].length));if(x=v.match(/^[#0?]+$/))return w=i(b,0),v.length<=w.length?w:h(v.substr(0,v.length-w.length))+w;if(x=v.match(/^([#0?]+)\\.([#0]+)$/)){w=\"\"+b.toFixed(Math.min(x[2].length,10)).replace(/([^0])0+$/,\"$1\"),_=w.indexOf(\".\");var A=v.indexOf(\".\")-_,D=v.length-w.length-A;return h(v.substr(0,A)+w+v.substr(v.length-D))}if(x=v.match(/^00,000\\.([#0]*0)$/))return _=m(b,x[1].length),b<0?\"-\"+p(y,v,-b):T(function(e){return e<2147483647&&e>-2147483648?\"\"+(e>=0?0|e:e-1|0):\"\"+Math.floor(e)}(b)).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,(function(e){return\"00,\"+(e.length<3?a(0,3-e.length):\"\")+e}))+\".\"+a(_,x[1].length);switch(v){case\"###,##0.00\":return p(y,\"#,##0.00\",b);case\"###,###\":case\"##,###\":case\"#,###\":var F=T(i($,0));return\"0\"!==F?I+F:\"\";case\"###,###.00\":return p(y,\"###,##0.00\",b).replace(/^0\\./,\".\");case\"#,###.00\":return p(y,\"#,##0.00\",b).replace(/^0\\./,\".\")}throw new Error(\"unsupported format |\"+v+\"|\")}function y(e,t){var n,a=e.indexOf(\"E\")-e.indexOf(\".\")-1;if(e.match(/^#+0.0E\\+0$/)){if(0==t)return\"0.0E+0\";if(t<0)return\"-\"+y(e,-t);var l=e.indexOf(\".\");-1===l&&(l=e.indexOf(\"E\"));var r=Math.floor(Math.log(t)*Math.LOG10E)%l;if(r<0&&(r+=l),!(n=(t/Math.pow(10,r)).toPrecision(a+1+(l+r)%l)).match(/[Ee]/)){var o=Math.floor(Math.log(t)*Math.LOG10E);-1===n.indexOf(\".\")?n=n.charAt(0)+\".\"+n.substr(1)+\"E+\"+(o-n.length+r):n+=\"E+\"+(o-r),n=n.replace(/\\+-/,\"-\")}n=n.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,(function(e,t,n,a){return t+n+a.substr(0,(l+r)%l)+\".\"+a.substr(r)+\"E\"}))}else n=t.toExponential(a);return e.match(/E\\+00$/)&&n.match(/e[+-]\\d$/)&&(n=n.substr(0,n.length-1)+\"0\"+n.charAt(n.length-1)),e.match(/E\\-/)&&n.match(/e\\+/)&&(n=n.replace(/e\\+/,\"e\")),n.replace(\"e\",\"E\")}function v(o,i,f){if(40===o.charCodeAt(0)&&!i.match(u)){var m=i.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");return f>=0?v(\"n\",m,f):\"(\"+v(\"n\",m,-f)+\")\"}if(44===i.charCodeAt(i.length-1))return function(e,t,n){for(var a=t.length-1;44===t.charCodeAt(a-1);)--a;return S(e,t.substr(0,a),n/Math.pow(10,3*(t.length-a)))}(o,i,f);if(-1!==i.indexOf(\"%\"))return function(t,a,l){var r=a.replace(e,\"\"),o=a.length-r.length;return S(t,r,l*Math.pow(10,2*o))+n(\"%\",o)}(o,i,f);if(-1!==i.indexOf(\"E\"))return y(i,f);if(36===i.charCodeAt(0))return\"$\"+v(o,i.substr(\" \"==i.charAt(1)?2:1),f);var p,b,k,w,x=Math.abs(f),_=f<0?\"-\":\"\";if(i.match(/^00+$/))return _+a(x,i.length);if(i.match(/^[#?]+$/))return p=\"\"+f,0===f&&(p=\"\"),p.length>i.length?p:h(i.substr(0,i.length-p.length))+p;if(b=i.match(s))return function(e,t,a){return a+(0===t?\"\":\"\"+t)+n(\" \",e[1].length+2+e[4].length)}(b,x,_);if(i.match(/^#+0+$/))return _+a(x,i.length-i.indexOf(\"0\"));if(b=i.match(c))return p=(p=(\"\"+f).replace(/^([^\\.]+)$/,\"$1.\"+h(b[1])).replace(/\\.$/,\".\"+h(b[1]))).replace(/\\.(\\d*)$/,(function(e,t){return\".\"+t+n(\"0\",h(b[1]).length-t.length)})),-1!==i.indexOf(\"0.\")?p:p.replace(/^0\\./,\".\");if(i=i.replace(/^#+([0.])/,\"$1\"),b=i.match(/^(0*)\\.(#*)$/))return _+(\"\"+x).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,b[1].length?\"0.\":\".\");if(b=i.match(/^#{1,3},##0(\\.?)$/))return _+T(\"\"+x);if(b=i.match(/^#,##0\\.([#0]*0)$/))return f<0?\"-\"+v(o,i,-f):T(\"\"+f)+\".\"+n(\"0\",b[1].length);if(b=i.match(/^#,#*,#0/))return v(o,i.replace(/^#,#*,/,\"\"),f);if(b=i.match(/^([0#]+)(\\\\?-([0#]+))+$/))return p=t(v(o,i.replace(/[\\\\-]/g,\"\"),f)),k=0,t(t(i.replace(/\\\\/g,\"\")).replace(/[0#]/g,(function(e){return k<p.length?p.charAt(k++):\"0\"===e?\"0\":\"\"})));if(i.match(d))return\"(\"+(p=v(o,\"##########\",f)).substr(0,3)+\") \"+p.substr(3,3)+\"-\"+p.substr(6);var C=\"\";if(b=i.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))return k=Math.min(b[4].length,7),w=g(x,Math.pow(10,k)-1,!1),p=\"\"+_,\" \"==(C=S(\"n\",b[1],w[1])).charAt(C.length-1)&&(C=C.substr(0,C.length-1)+\"0\"),p+=C+b[2]+\"/\"+b[3],(C=r(w[2],k)).length<b[4].length&&(C=h(b[4].substr(b[4].length-C.length))+C),p+=C;if(b=i.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))return k=Math.min(Math.max(b[1].length,b[4].length),7),_+((w=g(x,Math.pow(10,k)-1,!0))[0]||(w[1]?\"\":\"0\"))+\" \"+(w[1]?l(w[1],k)+b[2]+\"/\"+b[3]+r(w[2],k):n(\" \",2*k+1+b[2].length+b[3].length));if(b=i.match(/^[#0?]+$/))return p=\"\"+f,i.length<=p.length?p:h(i.substr(0,i.length-p.length))+p;if(b=i.match(/^([#0]+)\\.([#0]+)$/)){p=\"\"+f.toFixed(Math.min(b[2].length,10)).replace(/([^0])0+$/,\"$1\"),k=p.indexOf(\".\");var $=i.indexOf(\".\")-k,I=i.length-p.length-$;return h(i.substr(0,$)+p+i.substr(i.length-I))}if(b=i.match(/^00,000\\.([#0]*0)$/))return f<0?\"-\"+v(o,i,-f):T(\"\"+f).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,(function(e){return\"00,\"+(e.length<3?a(0,3-e.length):\"\")+e}))+\".\"+a(0,b[1].length);switch(i){case\"###,###\":case\"##,###\":case\"#,###\":var R=T(\"\"+x);return\"0\"!==R?_+R:\"\";default:if(i.match(/\\.[0#?]*$/))return v(o,i.slice(0,i.lastIndexOf(\".\")),f)+h(i.slice(i.lastIndexOf(\".\")))}throw new Error(\"unsupported format |\"+i+\"|\")}return function(e,t,n){return(0|n)===n?v(e,t,n):p(e,t,n)}}();function $(e){for(var t=[],n=!1,a=0,l=0;a<e.length;++a)switch(e.charCodeAt(a)){case 34:n=!n;break;case 95:case 42:case 92:++a;break;case 59:t[t.length]=e.substr(l,a-l),l=a+1}if(t[t.length]=e.substr(l),!0===n)throw new Error(\"Format |\"+e+\"| unterminated string \");return t}e._split=$;var I=/\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;function R(e){for(var t=0,n=\"\",a=\"\";t<e.length;)switch(n=e.charAt(t)){case\"G\":s(e,t)&&(t+=6),t++;break;case'\"':for(;34!==e.charCodeAt(++t)&&t<e.length;);++t;break;case\"\\\\\":case\"_\":t+=2;break;case\"@\":++t;break;case\"B\":case\"b\":if(\"1\"===e.charAt(t+1)||\"2\"===e.charAt(t+1))return!0;case\"M\":case\"D\":case\"Y\":case\"H\":case\"S\":case\"E\":case\"m\":case\"d\":case\"y\":case\"h\":case\"s\":case\"e\":case\"g\":return!0;case\"A\":case\"a\":case\"上\":if(\"A/P\"===e.substr(t,3).toUpperCase()||\"AM/PM\"===e.substr(t,5).toUpperCase()||\"上午/下午\"===e.substr(t,5).toUpperCase())return!0;++t;break;case\"[\":for(a=n;\"]\"!==e.charAt(t++)&&t<e.length;)a+=e.charAt(t);if(a.match(I))return!0;break;case\".\":case\"0\":case\"#\":for(;t<e.length&&(\"0#?.,E+-%\".indexOf(n=e.charAt(++t))>-1||\"\\\\\"==n&&\"-\"==e.charAt(t+1)&&\"0#\".indexOf(e.charAt(t+2))>-1););break;case\"?\":for(;e.charAt(++t)===n;);break;case\"*\":++t,(\" \"==e.charAt(t)||\"*\"==e.charAt(t))&&++t;break;case\"(\":case\")\":++t;break;case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":for(;t<e.length&&\"0123456789\".indexOf(e.charAt(++t))>-1;);break;default:++t}return!1}function A(e,t,n,a){for(var l,r,o,i=[],c=\"\",u=0,d=\"\",h=\"t\",f=\"H\";u<e.length;)switch(d=e.charAt(u)){case\"G\":if(!s(e,u))throw new Error(\"unrecognized character \"+d+\" in \"+e);i[i.length]={t:\"G\",v:\"General\"},u+=7;break;case'\"':for(c=\"\";34!==(o=e.charCodeAt(++u))&&u<e.length;)c+=String.fromCharCode(o);i[i.length]={t:\"t\",v:c},++u;break;case\"\\\\\":var m=e.charAt(++u),p=\"(\"===m||\")\"===m?m:\"t\";i[i.length]={t:p,v:m},++u;break;case\"_\":i[i.length]={t:\"t\",v:\" \"},u+=2;break;case\"@\":i[i.length]={t:\"T\",v:t},++u;break;case\"B\":case\"b\":if(\"1\"===e.charAt(u+1)||\"2\"===e.charAt(u+1)){if(null==l&&null==(l=y(t,n,\"2\"===e.charAt(u+1))))return\"\";i[i.length]={t:\"X\",v:e.substr(u,2)},h=d,u+=2;break}case\"M\":case\"D\":case\"Y\":case\"H\":case\"S\":case\"E\":d=d.toLowerCase();case\"m\":case\"d\":case\"y\":case\"h\":case\"s\":case\"e\":case\"g\":if(t<0)return\"\";if(null==l&&null==(l=y(t,n)))return\"#####\";for(c=d;++u<e.length&&e.charAt(u).toLowerCase()===d;)c+=d;\"m\"===d&&\"h\"===h.toLowerCase()&&(d=\"M\"),\"h\"===d&&(d=f),i[i.length]={t:d,v:c},h=d;break;case\"A\":case\"a\":case\"上\":var g={t:d,v:d};if(null==l&&(l=y(t,n)),\"A/P\"===e.substr(u,3).toUpperCase()?(null!=l&&(g.v=l.H>=12?\"P\":\"A\"),g.t=\"T\",f=\"h\",u+=3):\"AM/PM\"===e.substr(u,5).toUpperCase()?(null!=l&&(g.v=l.H>=12?\"PM\":\"AM\"),g.t=\"T\",u+=5,f=\"h\"):\"上午/下午\"===e.substr(u,5).toUpperCase()?(null!=l&&(g.v=l.H>=12?\"下午\":\"上午\"),g.t=\"T\",u+=5,f=\"h\"):(g.t=\"t\",++u),null==l&&\"T\"===g.t)return\"\";i[i.length]=g,h=d;break;case\"[\":for(c=d;\"]\"!==e.charAt(u++)&&u<e.length;)c+=e.charAt(u);if(\"]\"!==c.slice(-1))throw'unterminated \"[\" block: |'+c+\"|\";if(c.match(I)){if(null==l&&null==(l=y(t,n)))return\"\";i[i.length]={t:\"Z\",v:c.toLowerCase()},h=c.charAt(1)}else c.indexOf(\"$\")>-1&&(c=(c.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\",R(e)||(i[i.length]={t:\"t\",v:c}));break;case\".\":if(null!=l){for(c=d;++u<e.length&&\"0\"===(d=e.charAt(u));)c+=d;i[i.length]={t:\"s\",v:c};break}case\"0\":case\"#\":for(c=d;++u<e.length&&\"0#?.,E+-%\".indexOf(d=e.charAt(u))>-1;)c+=d;i[i.length]={t:\"n\",v:c};break;case\"?\":for(c=d;e.charAt(++u)===d;)c+=d;i[i.length]={t:d,v:c},h=d;break;case\"*\":++u,(\" \"==e.charAt(u)||\"*\"==e.charAt(u))&&++u;break;case\"(\":case\")\":i[i.length]={t:1===a?\"t\":d,v:d},++u;break;case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":for(c=d;u<e.length&&\"0123456789\".indexOf(e.charAt(++u))>-1;)c+=e.charAt(u);i[i.length]={t:\"D\",v:c};break;case\" \":i[i.length]={t:d,v:d},++u;break;case\"$\":i[i.length]={t:\"t\",v:\"$\"},++u;break;default:if(-1===\"¤฿BsBr₵₡₫ƒFtRs.₭kr£₤Lm₥₦₱PQRSkRp৲৳R$S/.〒₮₩¥NT￥zł₴₪៛руб€＄,$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP$￥LekdinAf$dhAflRial?￡BirrKzMOPPGKRsGsB/R$ррlevkrKMzBsPNuFBuKPkrRD$NfkCFA?CVEGMDFrCDHTGNAfLFdjKGSFGGHSRielKCFknKshLSLL￡LtRFRONArRfMWKRMMURsMROS/KMDLMTnRC$kr€GELCHFSLLSCRDbSZLSDGSOSSomFCFPTShT$VUVQUGXгрнsomWSTNT$FtDramRpZMWFCFA\".indexOf(d))throw new Error(\"unrecognized character \"+d+\" in \"+e);i[i.length]={t:\"t\",v:d},++u}var v,b=0,k=0;for(u=i.length-1,h=\"t\";u>=0;--u)switch(i[u].t){case\"h\":case\"H\":i[u].t=f,h=\"h\",b<1&&(b=1);break;case\"s\":(v=i[u].v.match(/\\.0+$/))&&(k=Math.max(k,v[0].length-1)),b<3&&(b=3);case\"d\":case\"y\":case\"M\":case\"e\":h=i[u].t;break;case\"m\":\"s\"===h&&(i[u].t=\"M\",b<2&&(b=2));break;case\"X\":break;case\"Z\":b<1&&i[u].v.match(/[Hh]/)&&(b=1),b<2&&i[u].v.match(/[Mm]/)&&(b=2),b<3&&i[u].v.match(/[Ss]/)&&(b=3)}switch(b){case 0:break;case 1:l.u>=.5&&(l.u=0,++l.S),l.S>=60&&(l.S=0,++l.M),l.M>=60&&(l.M=0,++l.H);break;case 2:l.u>=.5&&(l.u=0,++l.S),l.S>=60&&(l.S=0,++l.M)}var w,x=\"\";for(u=0;u<i.length;++u)switch(i[u].t){case\"t\":case\"T\":case\" \":case\"D\":break;case\"X\":i[u].v=\"\",i[u].t=\";\";break;case\"d\":case\"m\":case\"y\":case\"h\":case\"H\":case\"M\":case\"s\":case\"e\":case\"b\":case\"Z\":i[u].v=C(i[u].t.charCodeAt(0),i[u].v,l,k),i[u].t=\"t\";break;case\"n\":case\"?\":for(w=u+1;null!=i[w]&&(\"?\"===(d=i[w].t)||\"D\"===d||(\" \"===d||\"t\"===d)&&null!=i[w+1]&&(\"?\"===i[w+1].t||\"t\"===i[w+1].t&&\"/\"===i[w+1].v)||\"(\"===i[u].t&&(\" \"===d||\"n\"===d||\")\"===d)||\"t\"===d&&(\"/\"===i[w].v||\" \"===i[w].v&&null!=i[w+1]&&\"?\"==i[w+1].t));)i[u].v+=i[w].v,i[w]={v:\"\",t:\";\"},++w;x+=i[u].v,u=w-1;break;case\"G\":i[u].t=\"t\",i[u].v=_(t,n)}var T,$,A=\"\";if(x.length>0){40==x.charCodeAt(0)?(T=t<0&&45===x.charCodeAt(0)?-t:t,$=S(\"n\",x,T)):($=S(\"n\",x,T=t<0&&a>1?-t:t),T<0&&i[0]&&\"t\"==i[0].t&&($=$.substr(1),i[0].v=\"-\"+i[0].v)),w=$.length-1;var D=i.length;for(u=0;u<i.length;++u)if(null!=i[u]&&\"t\"!=i[u].t&&i[u].v.indexOf(\".\")>-1){D=u;break}var F=i.length;if(D===i.length&&-1===$.indexOf(\"E\")){for(u=i.length-1;u>=0;--u)null==i[u]||-1===\"n?\".indexOf(i[u].t)||(w>=i[u].v.length-1?(w-=i[u].v.length,i[u].v=$.substr(w+1,i[u].v.length)):w<0?i[u].v=\"\":(i[u].v=$.substr(0,w+1),w=-1),i[u].t=\"t\",F=u);w>=0&&F<i.length&&(i[F].v=$.substr(0,w+1)+i[F].v)}else if(D!==i.length&&-1===$.indexOf(\"E\")){for(w=$.indexOf(\".\")-1,u=D;u>=0;--u)if(null!=i[u]&&-1!==\"n?\".indexOf(i[u].t)){for(r=i[u].v.indexOf(\".\")>-1&&u===D?i[u].v.indexOf(\".\")-1:i[u].v.length-1,A=i[u].v.substr(r+1);r>=0;--r)w>=0&&(\"0\"===i[u].v.charAt(r)||\"#\"===i[u].v.charAt(r))&&(A=$.charAt(w--)+A);i[u].v=A,i[u].t=\"t\",F=u}for(w>=0&&F<i.length&&(i[F].v=$.substr(0,w+1)+i[F].v),w=$.indexOf(\".\")+1,u=D;u<i.length;++u)if(null!=i[u]&&(-1!==\"n?(\".indexOf(i[u].t)||u===D)){for(r=i[u].v.indexOf(\".\")>-1&&u===D?i[u].v.indexOf(\".\")+1:0,A=i[u].v.substr(0,r);r<i[u].v.length;++r)w<$.length&&(A+=$.charAt(w++));i[u].v=A,i[u].t=\"t\",F=u}}}for(u=0;u<i.length;++u)null!=i[u]&&\"n?\".indexOf(i[u].t)>-1&&(T=a>1&&t<0&&u>0&&\"-\"===i[u-1].v?-t:t,i[u].v=S(i[u].t,i[u].v,T),i[u].t=\"t\");var E=\"\";for(u=0;u!==i.length;++u)null!=i[u]&&(E+=i[u].v);return E}e.is_date=R,e._eval=A;var D=/\\[[=<>]/,F=/\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;function E(e,t){if(null==t)return!1;var n=parseFloat(t[2]);switch(t[1]){case\"=\":if(e==n)return!0;break;case\">\":if(e>n)return!0;break;case\"<\":if(e<n)return!0;break;case\"<>\":if(e!=n)return!0;break;case\">=\":if(e>=n)return!0;break;case\"<=\":if(e<=n)return!0}return!1}function M(e,t,n){null==n&&(n={});var a=\"\";switch(typeof e){case\"string\":a=\"m/d/yy\"==e&&n.dateNF?n.dateNF:e;break;case\"number\":null==(a=14==e&&n.dateNF?n.dateNF:(null!=n.table?n.table:h)[e])&&(a=n.table&&n.table[f[e]]||h[f[e]]),null==a&&(a=p[e]||\"General\")}if(a.match(/^(w|W)((0?)|(0\\.0+))$/)){if(isNaN(t))return t;var l=a.slice(1),r=!1;!isNaN(t)&&Number(t)<0&&(r=!0,t=Math.abs(t));var o=parseInt(t).toString().length;if(o>4){if(o>8){var i=parseInt(t/1e8),c=parseInt(parseFloat(t).subtract(1e8*i)/1e4),u=parseFloat(t).subtract(1e8*i+1e4*c);\"\"!=l&&(u=(0,$a.default)(u).format(l)),t=i+\"亿\"+c+\"万\"+u}else{c=parseInt(t/1e4),u=parseFloat(t).subtract(1e4*c);\"\"!=l&&(u=(0,$a.default)(u).format(l)),t=c+\"万\"+u}if(-1!=t.indexOf(\"亿0万0\")?t=t.replace(\"0万0\",\"\"):-1!=t.indexOf(\"亿0万\")?t=t.replace(\"0万\",\"\"):-1!=t.indexOf(\"万0\")&&(t=t.replace(\"万0\",\"万\")),-1!=t.indexOf(\"亿\")&&-1==t.indexOf(\"万\")){if(\".\"!==(d=t.substring(t.indexOf(\"亿\")+1)).substring(0,1)&&\"\"!=d){switch((parseInt(d)+\"\").length){case 1:d=\"000\"+d;break;case 2:d=\"00\"+d;break;case 3:d=\"0\"+d}t=t.substring(0,t.indexOf(\"亿\")+1)+d}}else if(-1==t.indexOf(\"亿\")&&-1!=t.indexOf(\"万\")){if(\".\"!==(m=t.substring(t.indexOf(\"万\")+1)).substring(0,1)&&\"\"!=m){switch((parseInt(m)+\"\").length){case 1:m=\"000\"+m;break;case 2:m=\"00\"+m;break;case 3:m=\"0\"+m}t=t.substring(0,t.indexOf(\"万\")+1)+m}}else if(-1!=t.indexOf(\"亿\")&&-1!=t.indexOf(\"万\")){var d=t.substring(t.indexOf(\"亿\")+1,t.indexOf(\"万\")),m=t.substring(t.indexOf(\"万\")+1);switch((parseInt(d)+\"\").length){case 1:d=\"000\"+d;break;case 2:d=\"00\"+d;break;case 3:d=\"0\"+d}if(t=t.substring(0,t.indexOf(\"亿\")+1)+d+t.substring(t.indexOf(\"万\")),\".\"!==m.substring(0,1)&&\"\"!=m){switch((parseInt(m)+\"\").length){case 1:m=\"000\"+m;break;case 2:m=\"00\"+m;break;case 3:m=\"0\"+m}t=t.substring(0,t.indexOf(\"万\")+1)+m}}}else\"\"!=l&&(t=(0,$a.default)(t).format(l));return r?\"-\"+t:t}if(s(a,0))return _(t,n);t instanceof Date&&(t=w(t,n.date1904));var g=function(e,t){var n=$(e),a=n.length,l=n[a-1].indexOf(\"@\");if(a<4&&l>-1&&--a,n.length>4)throw new Error(\"cannot find right format for |\"+n.join(\"|\")+\"|\");if(\"number\"!=typeof t)return[4,4===n.length||l>-1?n[n.length-1]:\"@\"];switch(n.length){case 1:n=l>-1?[\"General\",\"General\",\"General\",n[0]]:[n[0],n[0],n[0],\"@\"];break;case 2:n=l>-1?[n[0],n[0],n[0],n[1]]:[n[0],n[1],n[0],\"@\"];break;case 3:n=l>-1?[n[0],n[1],n[0],n[2]]:[n[0],n[1],n[2],\"@\"]}var r=t>0?n[0]:t<0?n[1]:n[2];if(-1===n[0].indexOf(\"[\")&&-1===n[1].indexOf(\"[\"))return[a,r];if(null!=n[0].match(D)||null!=n[1].match(D)){var o=n[0].match(F),i=n[1].match(F);return E(t,o)?[a,n[0]]:E(t,i)?[a,n[1]]:[a,n[null!=o&&null!=i?2:1]]}return[a,r]}(a,t);if(s(g[1]))return _(t,n);if(!0===t)t=\"TRUE\";else if(!1===t)t=\"FALSE\";else if(\"\"===t||null==t)return\"\";return A(g[1],t,n,g[0])}function N(e,t){if(\"number\"!=typeof t){t=+t||-1;for(var n=0;n<392;++n)if(null!=h[n]){if(h[n]==e){t=n;break}}else t<0&&(t=n);t<0&&(t=391)}return h[t]=e,t}e.load=N,e._table=h,e.get_table=function(){return h},e.load_table=function(e){for(var t=0;392!=t;++t)void 0!==e[t]&&N(e[t],t)},e.init_table=d,e.format=M},Ra(Ia={}),{\"General Number\":\"General\",\"General Date\":Ia._table[22],\"Long Date\":\"dddd, mmmm dd, yyyy\",\"Medium Date\":Ia._table[15],\"Short Date\":Ia._table[14],\"Long Time\":Ia._table[19],\"Medium Time\":Ia._table[18],\"Short Time\":Ia._table[20],Currency:'\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',Fixed:Ia._table[2],Standard:Ia._table[4],Percent:Ia._table[10],Scientific:Ia._table[11],\"Yes/No\":'\"Yes\";\"Yes\";\"No\";@',\"True/False\":'\"True\";\"True\";\"False\";@',\"On/Off\":'\"Yes\";\"Yes\";\"No\";@'},e=/&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/g,t=/_x([\\da-fA-F]{4})_/g,Aa=new Date(1899,11,31,0,0,0),Aa.getTime(),Da=new Date(1900,2,1,0,0,0),Fa=new Date(\"2017-02-19T19:06:09.000Z\"),isNaN(Fa.getFullYear())&&(Fa=new Date(\"2/19/17\")),Ea=2017==Fa.getFullYear()}));function Na(n,a,l,r){null==l&&(l=t.flowdata);let o,i=l[n][a];if(\"object\"==ad(r)?(null==i?i=r:(null!=r.f?i.f=r.f:i.hasOwnProperty(\"f\")&&delete i.f,null!=r.spl&&(i.spl=r.spl),null!=r.ct&&(i.ct=r.ct)),o=\"object\"==ad(r.v)?r.v.v:r.v):o=r,null==o)return\"object\"==ad(i)?(delete i.m,delete i.v):i=null,l[n][a]=i,i;(_(i)||(\"string\"===ad(i)||\"number\"===ad(i))&&i===r)&&(i={});let s=o.toString();if(\"'\"==s.substr(0,1))i.m=s.substr(1),i.ct={fa:\"@\",t:\"s\"},i.v=s.substr(1),i.qp=1;else if(1==i.qp)i.m=s,i.ct={fa:\"@\",t:\"s\"},i.v=s;else if(\"TRUE\"===s.toUpperCase())i.m=\"TRUE\",i.ct={fa:\"General\",t:\"b\"},i.v=!0;else if(\"FALSE\"===s.toUpperCase())i.m=\"FALSE\",i.ct={fa:\"General\",t:\"b\"},i.v=!1;else if(\"%\"===s.substr(-1)&&C(s.substring(0,s.length-1)))i.ct={fa:\"0%\",t:\"n\"},i.v=s.substring(0,s.length-1)/100,i.m=o;else if(T(o))i.m=s,null!=i.ct?i.ct.t=\"e\":i.ct={fa:\"General\",t:\"e\"},i.v=o;else if(null!=i.f&&C(o)&&!/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(o))if(i.v=parseFloat(o),null==i.ct&&(i.ct={fa:\"General\",t:\"n\"}),i.v==1/0||i.v==-1/0)i.m=i.v.toString();else if(i.v.toString().indexOf(\"e\")>-1){let e;e=1==i.v.toString().split(\".\").length?0:i.v.toString().split(\".\")[1].split(\"e\")[0].length,e>5&&(e=5),i.m=i.v.toExponential(e).toString()}else{let e=Math.round(1e9*i.v)/1e9;if(null==i.ct){let t=_a(e);i.m=t[0].toString()}else{let t=Ca(i.ct.fa,e);i.m=t.toString()}}else if(null!=i.ct&&\"@\"==i.ct.fa)i.m=s,i.v=o;else if(null!=i.ct&&null!=i.ct.fa&&\"General\"!=i.ct.fa){C(o)&&(o=parseFloat(o));let e=Ca(i.ct.fa,o);e===o?(e=_a(o),i.m=e[0].toString(),i.ct=e[1],i.v=e[2]):(i.m=e.toString(),i.v=o)}else if(C(o)&&!/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(o))if(\"string\"==typeof o&&(o.split(\"\").every((e=>\"0\"==e||\".\"==e))||o.length<18)&&(o=parseFloat(o)),i.v=o,i.ct={fa:\"General\",t:\"n\"},i.v==1/0||i.v==-1/0)i.m=i.v.toString();else{let e=_a(i.v);i.m=e[0].toString()}else{let e=_a(o);i.m=e[0].toString(),i.ct=e[1],i.v=e[2]}if(!yo.allowUpdate&&!e.pointEdit&&null!=i.ct&&0==/^(w|W)((0?)|(0\\.0+))$/.test(i.ct.fa)&&\"n\"==i.ct.t&&null!=i.v&&parseInt(i.v).toString().length>4){let t=function(e,t){let n,a=\"0.\";if(\"TRUE\"==e){if(null==t)return\"w\";{let e=parseInt(t);if(0==e)return\"w0\";a=\"w0.\";for(let t=0;t<e;t++)a+=\"0\";n=a}}else{if(null==t)return\"General\";{let e=parseInt(t);if(0==e)return\"0\";for(let t=0;t<e;t++)a+=\"0\";n=a}}return n.toString()}(e.autoFormatw.toString().toUpperCase(),e.accuracy);\"General\"!=t&&(i.ct.fa=t,i.m=Ca(t,i.v))}return l[n][a]=i,i}var Pa=y((()=>{_d(),E(),Ma(),_o(),w(),x()}));function za(){if(0==t.luckysheet_select_save.length)return;let e=1/0,n=-1/0,a=0,l=0;for(let r=0;r<t.luckysheet_select_save.length;r++){let o=Bn(t.luckysheet_select_save[r]);for(let t=0;t<o.length;t++)for(let r=0;r<o[0].length;r++){if(_(o[t][r])||(l++,null!=o[t][r].ct&&\"d\"==o[t][r].ct.t))continue;let i=o[t][r].v;!C(i)||(i=parseFloat(i),a+=i,i<e&&(e=i),i>n&&(n=i))}}let r=X().formula,o=\"\";o+=\"<span>\"+r.count+\":\"+l+\"</span>\",(isFinite(n)||isFinite(e))&&(o+=\"<span>\"+r.sum+\":\"+a+\"</span>\",o+=\"<span>\"+r.average+\":\"+Math.round(a/l*1e4)/1e4+\"</span>\"),isFinite(n)&&(o+=\"<span>\"+r.max+\":\"+n+\"</span>\"),isFinite(e)&&(o+=\"<span>\"+r.min+\":\"+e+\"</span>\"),$(\"#luckysheet-sta-content\").html(o)}var La=y((()=>{x(),Yn(),E(),Ma(),K()}));function Oa(e,n,a,l,r){null==a&&(a=!0),e||(e=\"down\"),n||(n=\"cell\"),null==r&&(r=!1);let o=t.luckysheet_select_save[t.luckysheet_select_save.length-1],i=null==o.row?0:o.row[0],s=null==o.column?0:o.column[0],c=null==o.row?0:o.row[0],u=null==o.column?0:o.column[0],d=null==o.row?0:o.row[1],h=null==o.column?0:o.column[1];if(wi.fucntionboxshow(i,s),\"range\"==n){var f=t.luckysheet_shiftpositon.row[0],m=t.luckysheet_shiftpositon.column[0];let n=t.luckysheet_shiftpositon.row[1],a=t.luckysheet_shiftpositon.column[1];\"down\"==e||\"up\"==e?n<d?i=null==o.row?0:o.row[1]:f>c?i=null==o.row?0:o.row[0]:n==d&&f==c&&(i=\"down\"==e?null==o.row?0:o.row[1]:null==o.row?0:o.row[0]):(\"right\"==e||\"left\"==e)&&(a<h?s=null==o.column?0:o.column[1]:m>u?s=null==o.column?0:o.column[0]:a==h&&m==u&&(s=\"right\"==e?null==o.column?0:o.column[1]:null==o.column?0:o.column[0]))}let p=t.flowdata.length,g=t.flowdata[0].length,y=t.flowdata,v=\"\",b=0;if(\"up\"==e){if(0==i)return;{let e=[],t=null,n=0,a=null;for(let l=u;l<=h;l++){e=[],n=0;for(let a=i-1;a>=0;a--){let r=y[a][l];if(\"object\"==ad(r)&&_(r.v)||_(r)?e.push(!1):e.push(!0),e.length>1){if(1==e[n]&&0==e[n-1]){t=a;break}if(0==e[n]&&1==e[n-1]){t=a+1;break}}n++}null==t&&(t=0),(null==a||t<a)&&(a=t)}v=\"down\",b=a-i}}else if(\"down\"==e){if(i==p-1)return;{let e=[],t=null,n=0,a=null;for(let l=u;l<=h;l++){e=[],n=0;for(let a=i+1;a<y.length;a++){let r=y[a][l];if(\"object\"==ad(r)&&_(r.v)||_(r)?e.push(!1):e.push(!0),e.length>1){if(1==e[n]&&0==e[n-1]){t=a;break}if(0==e[n]&&1==e[n-1]){t=a-1;break}}n++}null==t&&(t=y.length-1),(null==a||t>a)&&(a=t)}v=\"down\",b=a-i}}else if(\"left\"==e){if(0==s)return;{let e=[],t=null,n=0,a=null;for(let l=c;l<=d;l++){e=[],n=0;for(let a=s-1;a>=0;a--){let r=y[l][a];if(\"object\"==ad(r)&&_(r.v)||_(r)?e.push(!1):e.push(!0),e.length>1){if(1==e[n]&&0==e[n-1]){t=a;break}if(0==e[n]&&1==e[n-1]){t=a+1;break}}n++}null==t&&(t=0),(null==a||t<a)&&(a=t)}v=\"right\",b=a-s}}else if(\"right\"==e){if(s==g-1)return;{let e=[],t=null,n=0,a=null;for(let l=c;l<=d;l++){e=[],n=0;for(let a=s+1;a<y[0].length;a++){let r=y[l][a];if(\"object\"==ad(r)&&_(r.v)||_(r)?e.push(!1):e.push(!0),e.length>1){if(1==e[n]&&0==e[n-1]){t=a;break}if(0==e[n]&&1==e[n-1]){t=a-1;break}}n++}null==t&&(t=y[0].length-1),(null==a||t>a)&&(a=t)}v=\"right\",b=a-s}}if(\"range\"==n&&(\"up\"==e?p_endR<d&&b+i<p_endR&&(b=p_endR-i):\"down\"==e?f>c&&b+i>f&&(b=f-i):\"left\"==e?p_endC<h&&b+s<p_endC&&(b=p_endC-s):\"right\"==e&&m>u&&b+s>m&&(b=m-s),null!=l&&Math.abs(b)>Math.abs(l)&&(b=l)),r)return b;\"cell\"==n?Ba(v,b,\"rangeOfSelect\",a):\"range\"==n&&qa(v,b,\"rangeOfSelect\",a)}function Ba(e,n,a,l){null==l&&(l=!0);let r,o,i,s,c,u,d,h,f=t.flowdata.length,m=t.flowdata[0].length;if(\"rangeOfSelect\"==a){let a,l,p=t.luckysheet_select_save[t.luckysheet_select_save.length-1];a=null==p.row_focus?p.row[0]:p.row_focus,l=null==p.column_focus?p.column[0]:p.column_focus;let g=Yu.mergeborer(t.flowdata,a,l);if(g){let t=g.row[2],r=g.row[3],o=g.column[2],i=g.column[3];n>0?\"down\"==e?(a=r,l=o):\"right\"==e&&(a=t,l=i):(a=t,l=o)}let y=null==p.moveXY?a:p.moveXY.x,v=null==p.moveXY?l:p.moveXY.y;\"down\"==e?(a+=n,y=a):\"right\"==e&&(l+=n,v=l),a>=f&&(a=f-1,y=a),a<0&&(a=0,y=a),l>=m&&(l=m-1,v=l),l<0&&(l=0,v=l);let b=Yu.mergeborer(t.flowdata,a,l);b?(r=b.row[1],o=b.row[0],i=b.row[2],s=b.row[3],c=b.column[1],u=b.column[0],d=b.column[2],h=b.column[3]):(r=t.visibledatarow[y],o=y-1==-1?0:t.visibledatarow[y-1],c=t.visibledatacolumn[v],u=v-1==-1?0:t.visibledatacolumn[v-1],i=s=a,d=h=l),p.row=[i,s],p.column=[d,h],p.row_focus=i,p.column_focus=d,p.moveXY={x:y,y:v},Pu(),wr.pivotclick(i,d),wi.fucntionboxshow(i,d)}else if(\"rangeOfFormula\"==a){let a,l,p=wi.func_selectedrange;a=null==p.row_focus?p.row[0]:p.row_focus,l=null==p.column_focus?p.column[0]:p.column_focus;let g=Yu.mergeborer(t.flowdata,a,l);if(g){let t=g.row[2],r=g.row[3],o=g.column[2],i=g.column[3];n>0?\"down\"==e?(a=r,l=o):\"right\"==e&&(a=t,l=i):(a=t,l=o)}let y=null==p.moveXY?a:p.moveXY.x,v=null==p.moveXY?l:p.moveXY.y;\"down\"==e?(a+=n,y=a):\"right\"==e&&(l+=n,v=l),a>=f&&(a=f-1,y=a),a<0&&(a=0,y=a),l>=m&&(l=m-1,v=l),l<0&&(l=0,v=l);let b=Yu.mergeborer(t.flowdata,a,l);b?(r=b.row[1],o=b.row[0],i=b.row[2],s=b.row[3],c=b.column[1],u=b.column[0],d=b.column[2],h=b.column[3]):(r=t.visibledatarow[y],o=y-1==-1?0:t.visibledatarow[y-1],i=y,s=y,c=t.visibledatacolumn[v],u=v-1==-1?0:t.visibledatacolumn[v-1],d=v,h=v),wi.func_selectedrange={left:u,width:c-u-1,top:o,height:r-o-1,left_move:u,width_move:c-u-1,top_move:o,height_move:r-o-1,row:[i,s],column:[d,h],row_focus:i,column_focus:d,moveXY:{x:y,y:v}},$(\"#luckysheet-formula-functionrange-select\").css({left:u,width:c-u-1,top:o,height:r-o-1}).show(),wi.rangeSetValue({row:[i,s],column:[d,h]})}let p=$(\"#luckysheet-cell-main\").scrollLeft(),g=$(\"#luckysheet-cell-main\").scrollTop(),y=$(\"#luckysheet-cell-main\").height(),v=$(\"#luckysheet-cell-main\").width(),b=0,k=0;c-p-v+20>0?(b=c-v+20,l&&$(\"#luckysheet-scrollbar-x\").scrollLeft(b)):u-p-20<0&&(b=u-20,l&&$(\"#luckysheet-scrollbar-x\").scrollLeft(b)),r-g-y+20>0?(k=r-y+20,l&&$(\"#luckysheet-scrollbar-y\").scrollTop(k)):o-g-20<0&&(k=o-20,l&&$(\"#luckysheet-scrollbar-y\").scrollTop(k)),clearTimeout(t.countfuncTimeout),za(),yo.saveParam(\"mv\",t.currentSheetIndex,t.luckysheet_select_save)}function Va(e,n,a){let l,r,o,i;if(a||(a=!0),\"rangeOfSelect\"==n){let n=t.luckysheet_select_save[t.luckysheet_select_save.length-1],a=n.row_focus,s=n.column_focus,c=!1,u={};if(null!=t.config.merge&&a+\"_\"+s in t.config.merge&&(c=!0,u=t.config.merge[a+\"_\"+s]),\"down\"==e){if(a==t.flowdata.length-1)return;a=Ya(\"down\",s,c?u.r+u.rs-1:a,t.flowdata.length-1)}else if(\"up\"==e){if(0==a)return;a=Ya(\"up\",s,0,c?u.r:a)}else if(\"right\"==e){if(s==t.flowdata[0].length-1)return;s=Ya(\"right\",a,c?u.c+u.cs-1:s,t.flowdata[0].length-1)}else if(\"left\"==e){if(0==s)return;s=Ya(\"left\",a,0,c?u.c:s)}let d=[a,a],h=[s,s];l=t.visibledatarow[a],r=a-1==-1?0:t.visibledatarow[a-1],o=t.visibledatacolumn[s],i=s-1==-1?0:t.visibledatacolumn[s-1];let f=Yu.mergeMoveMain(h,d,n,r,l-r-1,i,o-i-1);null!=f&&(h=f[0],d=f[1]),t.luckysheet_select_save=[{row:d,column:h}],Pu(),wr.pivotclick(a,s),wi.fucntionboxshow(a,s)}else if(\"rangeOfFormula\"==n){let n=wi.func_selectedrange,a=n.row_focus,s=n.column_focus,c=!1,u={};if(null!=t.config.merge&&a+\"_\"+s in t.config.merge&&(c=!0,u=t.config.merge[a+\"_\"+s]),\"down\"==e){if(a==t.flowdata.length-1)return;a=Ya(\"down\",s,c?u.r+u.rs-1:a,t.flowdata.length-1)}else if(\"up\"==e){if(0==a)return;a=Ya(\"up\",s,0,c?u.r:a)}else if(\"right\"==e){if(s==t.flowdata[0].length-1)return;s=Ya(\"right\",a,c?u.c+u.cs-1:s,t.flowdata[0].length-1)}else if(\"left\"==e){if(0==s)return;s=Ya(\"left\",a,0,c?u.c:s)}let d=[a,a],h=[s,s];l=t.visibledatarow[a],r=a-1==-1?0:t.visibledatarow[a-1],o=t.visibledatacolumn[s],i=s-1==-1?0:t.visibledatacolumn[s-1];let f=r,m=l-r-1,p=i,g=o-i-1,y=Yu.mergeMoveMain(h,d,n,f,m,p,g);null!=y&&(h=y[0],d=y[1],f=y[2],m=y[3],p=y[4],g=y[5]),wi.func_selectedrange={left:p,width:g,top:f,height:m,left_move:p,width_move:g,top_move:f,height_move:m,row:d,column:h,row_focus:a,column_focus:s},$(\"#luckysheet-formula-functionrange-select\").css({left:p,width:g,top:f,height:m}).show(),wi.rangeSetValue({row:d,column:h})}let s=$(\"#luckysheet-cell-main\").scrollLeft(),c=$(\"#luckysheet-cell-main\").scrollTop(),u=$(\"#luckysheet-cell-main\").height(),d=$(\"#luckysheet-cell-main\").width(),h=0,f=0;o-s-d+20>0?(h=o-d+20,a&&$(\"#luckysheet-scrollbar-x\").scrollLeft(h)):i-s-20<0&&(h=i-20,a&&$(\"#luckysheet-scrollbar-x\").scrollLeft(h)),l-c-u+20>0?(f=l-u+20,a&&$(\"#luckysheet-scrollbar-y\").scrollTop(f)):r-c-20<0&&(f=r-20,a&&$(\"#luckysheet-scrollbar-y\").scrollTop(f)),clearTimeout(t.countfuncTimeout),za()}function qa(e,n,a,l){let r,o,i,s;if(null==l&&(l=!0),\"rangeOfSelect\"==a){let a=t.luckysheet_select_save[t.luckysheet_select_save.length-1],l=a.row[0],c=a.row[1],u=a.column[0],d=a.column[1],h=a.row_focus,f=a.column_focus,m=t.flowdata.length,p=t.flowdata[0].length;if(\"down\"==e){if(Ua(h,u,d)){let e=Ga(h,u,d),t=e[0],a=e[1];t>l&&a==c?(n>0&&Ua(l,u,d)&&(l=Ga(l,u,d)[1]),l+=n):a<c&&t==l?(n<0&&Ua(c,u,d)&&(c=Ga(c,u,d)[0]),c+=n):n>0?c+=n:l+=n}else h>l&&h==c?(n>0&&Ua(l,u,d)&&(l=Ga(l,u,d)[1]),l+=n):h<c&&h==l?(n<0&&Ua(c,u,d)&&(c=Ga(c,u,d)[0]),c+=n):h==l&&h==c&&(n>0?c+=n:l+=n);c>=m&&(c=m-1),c<0&&(c=0),l>=m&&(l=m-1),l<0&&(l=0)}else{if(ja(f,l,c)){let e=Wa(f,l,c),t=e[0],a=e[1];t>u&&a==d?(n>0&&ja(u,l,c)&&(u=Wa(u,l,c)[1]),u+=n):a<d&&t==u?(n<0&&ja(d,l,c)&&(d=Wa(d,l,c)[0]),d+=n):n>0?d+=n:u+=n}else f>u&&f==d?(n>0&&ja(u,l,c)&&(u=Wa(u,l,c)[1]),u+=n):f<d&&f==u?(n<0&&ja(d,l,c)&&(d=Wa(d,l,c)[0]),d+=n):f==u&&f==d&&(n>0?d+=n:u+=n);d>=p&&(d=p-1),d<0&&(d=0),u>=p&&(u=p-1),u<0&&(u=0)}let g=[l,c],y=[u,d];r=t.visibledatarow[c],o=l-1==-1?0:t.visibledatarow[l-1],i=t.visibledatacolumn[d],s=u-1==-1?0:t.visibledatacolumn[u-1];let v=Yu.mergeMoveMain(y,g,a,o,r-o-1,s,i-s-1);null!=v&&(y=v[0],g=v[1]),a.row=g,a.column=y,Pu()}else if(\"rangeOfFormula\"==a){let a=wi.func_selectedrange,l=a.row[0],c=a.row[1],u=a.column[0],d=a.column[1],h=a.row_focus,f=a.column_focus,m=t.flowdata.length,p=t.flowdata[0].length;if(\"down\"==e){if(Ua(h,u,d)){let e=Ga(h,u,d),t=e[0],a=e[1];t>l&&a==c?(n>0&&Ua(l,u,d)&&(l=Ga(l,u,d)[1]),l+=n):a<c&&t==l?(n<0&&Ua(c,u,d)&&(c=Ga(c,u,d)[0]),c+=n):n>0?c+=n:l+=n}else h>l&&h==c?(n>0&&Ua(l,u,d)&&(l=Ga(l,u,d)[1]),l+=n):h<c&&h==l?(n<0&&Ua(c,u,d)&&(c=Ga(c,u,d)[0]),c+=n):h==l&&h==c&&(n>0?c+=n:l+=n);c>=m&&(c=m-1),c<0&&(c=0),l>=m&&(l=m-1),l<0&&(l=0)}else{if(ja(f,l,c)){let e=Wa(f,l,c),t=e[0],a=e[1];t>u&&a==d?(n>0&&ja(u,l,c)&&(u=Wa(u,l,c)[1]),u+=n):a<d&&t==u?(n<0&&ja(d,l,c)&&(d=Wa(d,l,c)[0]),d+=n):n>0?d+=n:u+=n}else f>u&&f==d?(n>0&&ja(u,l,c)&&(u=Wa(u,l,c)[1]),u+=n):f<d&&f==u?(n<0&&ja(d,l,c)&&(d=Wa(d,l,c)[0]),d+=n):f==u&&f==d&&(n>0?d+=n:u+=n);d>=p&&(d=p-1),d<0&&(d=0),u>=p&&(u=p-1),u<0&&(u=0)}let g=[l,c],y=[u,d];r=t.visibledatarow[c],o=l-1==-1?0:t.visibledatarow[l-1],i=t.visibledatacolumn[d],s=u-1==-1?0:t.visibledatacolumn[u-1];let v=o,b=r-o-1,k=s,w=i-s-1,x=Yu.mergeMoveMain(y,g,a,v,b,k,w);null!=x&&(y=x[0],g=x[1],v=x[2],b=x[3],k=x[4],w=x[5]),wi.func_selectedrange={left:k,width:w,top:v,height:b,left_move:k,width_move:w,top_move:v,height_move:b,row:g,column:y,row_focus:h,column_focus:f},$(\"#luckysheet-formula-functionrange-select\").css({left:k,width:w,top:v,height:b}).show(),wi.rangeSetValue({row:g,column:y})}let c=$(\"#luckysheet-cell-main\").scrollLeft(),u=$(\"#luckysheet-cell-main\").scrollTop(),d=$(\"#luckysheet-cell-main\").height(),h=$(\"#luckysheet-cell-main\").width(),f=0,m=0;i-c-h+20>0?(f=i-h+20,l&&$(\"#luckysheet-scrollbar-x\").scrollLeft(f)):s-c-20<0&&(f=s-20,l&&$(\"#luckysheet-scrollbar-x\").scrollLeft(f)),r-u-d+20>0?(m=r-d+20,l&&$(\"#luckysheet-scrollbar-y\").scrollTop(m)):o-u-20<0&&(m=o-20,l&&$(\"#luckysheet-scrollbar-y\").scrollTop(m)),clearTimeout(t.countfuncTimeout),za()}function Ha(e,n,a){let l,r,o,i;if(a||(a=!0),\"rangeOfSelect\"==n){let n=t.luckysheet_select_save[t.luckysheet_select_save.length-1],a=n.row_focus,s=n.column_focus,c=n.row[0],u=n.row[1],d=n.column[0],h=n.column[1];if(\"down\"==e){if(u==t.flowdata.length-1)return;if(Ua(a,d,h)){let e=Ga(a,d,h),n=e[0],l=e[1];n>c&&l==u?c=Ya(\"down\",s,c,u):u=Ya(\"down\",s,u,t.flowdata.length-1)}else a>c&&a==u?c=Ya(\"down\",s,c,u):u=Ya(\"down\",s,u,t.flowdata.length-1)}else if(\"up\"==e){if(0==c)return;if(Ua(a,d,h)){let e=Ga(a,d,h),t=e[0];e[1]<u&&t==c?u=Ya(\"up\",s,c,u):c=Ya(\"up\",s,0,c)}else a<u&&a==c?u=Ya(\"up\",s,c,u):c=Ya(\"up\",s,0,c)}else if(\"right\"==e){if(h==t.flowdata[0].length-1)return;if(ja(s,c,u)){let e=Wa(s,c,u),n=e[0],l=e[1];n>d&&l==h?d=Ya(\"right\",a,d,h):h=Ya(\"right\",a,h,t.flowdata[0].length-1)}else s>d&&s==h?d=Ya(\"right\",a,d,h):h=Ya(\"right\",a,h,t.flowdata[0].length-1)}else if(\"left\"==e){if(0==d)return;if(ja(s,c,u)){let e=Wa(s,c,u),t=e[0];e[1]<h&&t==d?h=Ya(\"left\",a,d,h):d=Ya(\"left\",a,0,d)}else s<h&&s==d?h=Ya(\"left\",a,d,h):d=Ya(\"left\",a,0,d)}let f=[c,u],m=[d,h];l=t.visibledatarow[u],r=c-1==-1?0:t.visibledatarow[c-1],o=t.visibledatacolumn[h],i=d-1==-1?0:t.visibledatacolumn[d-1];let p=Yu.mergeMoveMain(m,f,n,r,l-r-1,i,o-i-1);null!=p&&(m=p[0],f=p[1]),n.row=f,n.column=m,Pu()}else if(\"rangeOfFormula\"==n){let n=wi.func_selectedrange,a=n.row_focus,s=n.column_focus,c=n.row[0],u=n.row[1],d=n.column[0],h=n.column[1];if(\"down\"==e){if(u==t.flowdata.length-1)return;if(Ua(a,d,h)){let e=Ga(a,d,h),n=e[0],l=e[1];n>c&&l==u?c=Ya(\"down\",s,c,u):u=Ya(\"down\",s,u,t.flowdata.length-1)}else a>c&&a==u?c=Ya(\"down\",s,c,u):u=Ya(\"down\",s,u,t.flowdata.length-1)}else if(\"up\"==e){if(0==c)return;if(Ua(a,d,h)){let e=Ga(a,d,h),t=e[0];e[1]<u&&t==c?u=Ya(\"up\",s,c,u):c=Ya(\"up\",s,0,c)}else a<u&&a==c?u=Ya(\"up\",s,c,u):c=Ya(\"up\",s,0,c)}else if(\"right\"==e){if(h==t.flowdata[0].length-1)return;if(ja(s,c,u)){let e=Wa(s,c,u),n=e[0],l=e[1];n>d&&l==h?d=Ya(\"right\",a,d,h):h=Ya(\"right\",a,h,t.flowdata[0].length-1)}else s>d&&s==h?d=Ya(\"right\",a,d,h):h=Ya(\"right\",a,h,t.flowdata[0].length-1)}else if(\"left\"==e){if(0==d)return;if(ja(s,c,u)){let e=Wa(s,c,u),t=e[0];e[1]<h&&t==d?h=Ya(\"left\",a,d,h):d=Ya(\"left\",a,0,d)}else s<h&&s==d?h=Ya(\"left\",a,d,h):d=Ya(\"left\",a,0,d)}let f=[c,u],m=[d,h];l=t.visibledatarow[u],r=c-1==-1?0:t.visibledatarow[c-1],o=t.visibledatacolumn[h],i=d-1==-1?0:t.visibledatacolumn[d-1];let p=r,g=l-r-1,y=i,v=o-i-1,b=Yu.mergeMoveMain(m,f,n,p,g,y,v);null!=b&&(m=b[0],f=b[1],p=b[2],g=b[3],y=b[4],v=b[5]),wi.func_selectedrange={left:y,width:v,top:p,height:g,left_move:y,width_move:v,top_move:p,height_move:g,row:f,column:m,row_focus:a,column_focus:s},$(\"#luckysheet-formula-functionrange-select\").css({left:y,width:v,top:p,height:g}).show(),wi.rangeSetValue({row:f,column:m})}let s=$(\"#luckysheet-cell-main\").scrollLeft(),c=$(\"#luckysheet-cell-main\").scrollTop(),u=$(\"#luckysheet-cell-main\").height(),d=$(\"#luckysheet-cell-main\").width(),h=0,f=0;o-s-d+20>0?(h=o-d+20,a&&$(\"#luckysheet-scrollbar-x\").scrollLeft(h)):i-s-20<0&&(h=i-20,a&&$(\"#luckysheet-scrollbar-x\").scrollLeft(h)),l-c-u+20>0?(f=l-u+20,a&&$(\"#luckysheet-scrollbar-y\").scrollTop(f)):r-c-20<0&&(f=r-20,a&&$(\"#luckysheet-scrollbar-y\").scrollTop(f)),clearTimeout(t.countfuncTimeout),za()}function Ua(e,n,a){let l=!1;for(let r=n;r<=a;r++){let n=t.flowdata[e][r];if(\"object\"==ad(n)&&\"mc\"in n){l=!0;break}}return l}function ja(e,n,a){let l=!1;for(let r=n;r<=a;r++){let n=t.flowdata[r][e];if(\"object\"==ad(n)&&\"mc\"in n){l=!0;break}}return l}function Ga(e,n,a){let l=t.flowdata.length-1,r=null;if(e>0)for(let l=e;l>=0;l--){for(let e=n;e<=a;e++){let n=t.flowdata[l][e];if(\"object\"==ad(n)&&\"mc\"in n){let e=t.config.merge[n.mc.r+\"_\"+n.mc.c];(null==r||e.r<r)&&(r=e.r)}}if(!(Ua(r-1,n,a)&&r>0))break;l=r}else r=0;let o=null;if(e<l)for(let r=e;r<=l;r++){for(let e=n;e<=a;e++){let n=t.flowdata[r][e];if(\"object\"==ad(n)&&\"mc\"in n){let e=t.config.merge[n.mc.r+\"_\"+n.mc.c];(null==o||e.r+e.rs-1>o)&&(o=e.r+e.rs-1)}}if(!(Ua(o+1,n,a)&&o<l))break;r=o}else o=l;return[r,o]}function Wa(e,n,a){let l=t.flowdata[0].length-1,r=null;if(e>0)for(let l=e;l>=0;l--){for(let e=n;e<=a;e++){let n=t.flowdata[e][l];if(\"object\"==ad(n)&&\"mc\"in n){let e=t.config.merge[n.mc.r+\"_\"+n.mc.c];(null==r||e.c<r)&&(r=e.c)}}if(!(ja(r-1,n,a)&&r>0))break;l=r}else r=0;let o=null;if(e<l)for(let r=e;r<=l;r++){for(let e=n;e<=a;e++){let n=t.flowdata[e][r];if(\"object\"==ad(n)&&\"mc\"in n){let e=t.config.merge[n.mc.r+\"_\"+n.mc.c];(null==o||e.c+e.cs-1>o)&&(o=e.c+e.cs-1)}}if(!(ja(o+1,n,a)&&o<l))break;r=o}else o=l;return[r,o]}function Ya(e,n,a,l){let r,o=null;if(\"down\"==e){let e=t.flowdata[a][n];r=!!(\"object\"==ad(e)&&_(e.v)||_(e)),console.log(r,\"stNull\");let i=[],s=0;for(let e=a+1;e<=l;e++){let c=t.flowdata[e][n];if(\"object\"==ad(c)&&_(c.v)||_(c)?i.push(!0):i.push(!1),1==i.length&&1==r&&0==i[s]){o=a+s+1;break}if(i.length>1){if(r&&0==i[s]){o=a+s+1;break}if(!r){if(0==i[s]&&1==i[s-1]){o=a+s+1;break}if(1==i[s]&&0==i[s-1]){o=a+s;break}}}e==l&&(o=l),s++}}else if(\"up\"==e){let e=t.flowdata[l][n];r=!!(\"object\"==ad(e)&&_(e.v)||_(e));let i=[],s=0;for(let e=l-1;e>=a;e--){let c=t.flowdata[e][n];if(\"object\"==ad(c)&&_(c.v)||_(c)?i.push(!0):i.push(!1),1==i.length&&r&&0==i[s]){o=l-(s+1);break}if(i.length>1){if(r&&0==i[s]){o=l-(s+1);break}if(!r){if(0==i[s]&&1==i[s-1]){o=l-(s+1);break}if(1==i[s]&&0==i[s-1]){o=l-s;break}}}e==a&&(o=a),s++}}else if(\"right\"==e){let e=t.flowdata[n][a];r=!!(\"object\"==ad(e)&&_(e.v)||_(e));let i=[],s=0;for(let e=a+1;e<=l;e++){let c=t.flowdata[n][e];if(\"object\"==ad(c)&&_(c.v)||_(c)?i.push(!0):i.push(!1),1==i.length&&r&&0==i[s]){o=a+s+1;break}if(i.length>1){if(r&&0==i[s]){o=a+s+1;break}if(!r){if(0==i[s]&&1==i[s-1]){o=a+s+1;break}if(1==i[s]&&0==i[s-1]){o=a+s;break}}}e==l&&(o=l),s++}}else if(\"left\"==e){let e=t.flowdata[n][l];r=!!(\"object\"==ad(e)&&_(e.v)||_(e));let i=[],s=0;for(let e=l-1;e>=a;e--){let c=t.flowdata[n][e];if(\"object\"==ad(c)&&_(c.v)||_(c)?i.push(!0):i.push(!1),1==i.length&&r&&0==i[s]){o=l-(s+1);break}if(i.length>1){if(r&&0==i[s]){o=l-(s+1);break}if(!r){if(0==i[s]&&1==i[s-1]){o=l-(s+1);break}if(1==i[s]&&0==i[s-1]){o=l-s;break}}}e==a&&(o=a),s++}}return o}var Xa,Ka,Za=y((()=>{_d(),Ci(),E(),La(),ed(),Xu(),Vr(),x(),_o()})),Ja=y((()=>{qt(),_d(),Ci(),E(),Co(),fo(),Et(),zl(),_o(),Xu(),x(),K(),Xa={rangefocus:!1,modelfocusIndex:null,FixedModelColor:[{head:{fc:\"#000\",bc:\"#bfbdbe\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f8f3f7\"},foot:{fc:\"#000\",bc:\"#dde2de\"}},{head:{fc:\"#000\",bc:\"#4bd4e7\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#eaf7ff\"},foot:{fc:\"#000\",bc:\"#aae9f8\"}},{head:{fc:\"#000\",bc:\"#5ed593\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#e5fbee\"},foot:{fc:\"#000\",bc:\"#a5efcc\"}},{head:{fc:\"#000\",bc:\"#f6cb4b\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#fff9e7\"},foot:{fc:\"#000\",bc:\"#ffebac\"}},{head:{fc:\"#000\",bc:\"#f96420\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#ffe5d9\"},foot:{fc:\"#000\",bc:\"#ffcfba\"}},{head:{fc:\"#000\",bc:\"#5599fc\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#ecf2fe\"},foot:{fc:\"#000\",bc:\"#afcbfa\"}},{head:{fc:\"#000\",bc:\"#22a69b\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#dff2f8\"},foot:{fc:\"#000\",bc:\"#8dd4d0\"}},{head:{fc:\"#000\",bc:\"#7a939a\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f0eff7\"},foot:{fc:\"#000\",bc:\"#bdcad0\"}},{head:{fc:\"#000\",bc:\"#d7a270\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#fdf3f1\"},foot:{fc:\"#000\",bc:\"#ead2b6\"}},{head:{fc:\"#000\",bc:\"#89c54b\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f1f7e9\"},foot:{fc:\"#000\",bc:\"#c5e3a7\"}},{head:{fc:\"#000\",bc:\"#8f88f0\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f0e5ff\"},foot:{fc:\"#000\",bc:\"#c6c4f6\"}},{head:{fc:\"#000\",bc:\"#fd1664\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#feddee\"},foot:{fc:\"#000\",bc:\"#f98ab5\"}},{head:{fc:\"#000\",bc:\"#da96d3\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#fce8fb\"},foot:{fc:\"#000\",bc:\"#f2caee\"}},{head:{fc:\"#000\",bc:\"#b49191\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f5ebe8\"},foot:{fc:\"#000\",bc:\"#d8c3c3\"}},{head:{fc:\"#000\",bc:\"#91b493\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f0fbf0\"},foot:{fc:\"#000\",bc:\"#b4cfb6\"}},{head:{fc:\"#000\",bc:\"#b4a891\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f8f6f1\"},foot:{fc:\"#000\",bc:\"#d3cab8\"}},{head:{fc:\"#000\",bc:\"#91abb4\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#eff7fa\"},foot:{fc:\"#000\",bc:\"#b7cbd3\"}},{head:{fc:\"#000\",bc:\"#b7ba82\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#fafbeb\"},foot:{fc:\"#000\",bc:\"#dadcb4\"}},{head:{fc:\"#000\",bc:\"#df3e3e\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#fde9e9\"},foot:{fc:\"#000\",bc:\"#f89292\"}},{head:{fc:\"#000\",bc:\"#f2711c\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#fef0d7\"},foot:{fc:\"#000\",bc:\"#fbb335\"}},{head:{fc:\"#000\",bc:\"#b5cc18\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f9fbd4\"},foot:{fc:\"#000\",bc:\"#e2ed2a\"}},{head:{fc:\"#000\",bc:\"#00b5ad\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#ccfaf9\"},foot:{fc:\"#000\",bc:\"#00e4df\"}},{head:{fc:\"#000\",bc:\"#2185d0\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#d8f3fc\"},foot:{fc:\"#000\",bc:\"#3cc4f0\"}},{head:{fc:\"#000\",bc:\"#a5673f\"},one:{fc:\"#000\",bc:\"#ffffff\"},two:{fc:\"#000\",bc:\"#f6ede5\"},foot:{fc:\"#000\",bc:\"#d3a47c\"}}],getModelBox:function(e,n){let a=this;$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelList\").empty(),$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelCustom\").empty();let l=\"\";for(let t=0;t<a.FixedModelColor.length;t++){let r,o,i,s,c=a.FixedModelColor[t];e&&n?(r=c.head,o=c.one,i=c.two,s=c.foot):e?(r=c.head,o=c.one,i=c.two,s=c.one):n?(r=c.one,o=c.two,i=c.one,s=c.foot):(r=c.one,o=c.two,i=c.one,s=c.two),l+='<div class=\"modelbox\"><div class=\"box\"><span style=\"color:'+r.fc+\";background-color:\"+r.bc+'\"> — </span><span style=\"color:'+o.fc+\";background-color:\"+o.bc+'\"> — </span><span style=\"color:'+i.fc+\";background-color:\"+i.bc+'\"> — </span><span style=\"color:'+s.fc+\";background-color:\"+s.bc+'\"> — </span></div></div>'}$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelList\").append(l);let r=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save_modelCustom;if(null!=r&&r.length>0){let t=\"\";for(let a=0;a<r.length;a++){let l,o,i,s,c=r[a];e&&n?(l=c.head,o=c.one,i=c.two,s=c.foot):e?(l=c.head,o=c.one,i=c.two,s=c.one):n?(l=c.one,o=c.two,i=c.one,s=c.foot):(l=c.one,o=c.two,i=c.one,s=c.two),t+='<div class=\"modelbox\"><div class=\"box\"><span style=\"color:'+l.fc+\";background-color:\"+l.bc+'\"> — </span><span style=\"color:'+o.fc+\";background-color:\"+o.bc+'\"> — </span><span style=\"color:'+i.fc+\";background-color:\"+i.bc+'\"> — </span><span style=\"color:'+s.fc+\";background-color:\"+s.bc+'\"> — </span></div></div>'}$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelCustom\").append(t)}},init:function(){let e=this;$(\"#luckysheet-modal-dialog-slider-alternateformat\").remove(),$(\"body\").append(function(){let e=X(),t=e.alternatingColors;return'<div id=\"luckysheet-modal-dialog-slider-alternateformat\" class=\"luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-alternateformat\" style=\"display: block;\"><div class=\"luckysheet-modal-dialog-slider-title\"><span>'+e.toolbar.alternatingColors+'</span><span class=\"luckysheet-model-close-btn\" title=\"'+t.close+'\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></span></div><div class=\"luckysheet-modal-dialog-slider-content\"><div class=\"textTitle\">'+t.applyRange+'</div><div id=\"luckysheet-alternateformat-range\"><input class=\"formulaInputFocus\" placeholder=\"'+t.selectRange+'\"/><i class=\"fa fa-table\" aria-hidden=\"true\"></i></div><div id=\"luckysheet-alternateformat-checkbox\"><div class=\"cf\"><input type=\"checkbox\" id=\"luckysheet-alternateformat-rowHeader\"/><label for=\"luckysheet-alternateformat-rowHeader\">'+t.header+'</label></div><div class=\"cf\"><input type=\"checkbox\" id=\"luckysheet-alternateformat-rowFooter\"/><label for=\"luckysheet-alternateformat-rowFooter\">'+t.footer+'</label></div></div><div class=\"textTitle\">'+t.textTitle+'</div><div id=\"luckysheet-alternateformat-modelList\" class=\"cf\"></div><div class=\"textTitle\">'+t.custom+'</div><div id=\"luckysheet-alternateformat-modelCustom\" class=\"cf\"></div><div id=\"luckysheet-alternateformat-modelToning\"><div class=\"toningbox header\"><div class=\"toningShow\"> '+t.header+' </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionTextColor+'\" style=\"border-bottom-color: #000;margin-right: 10px;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color\" style=\"user-select: none;\"> </div> </div> </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionCellColor+'\" style=\"border-bottom-color: #fff;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color\" style=\"user-select: none;\"> </div> </div> </div></div><div class=\"toningbox ctOne\"><div class=\"toningShow\"> '+t.colorShow+'1 </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionTextColor+'\" style=\"border-bottom-color: #000;margin-right: 10px;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color\" style=\"user-select: none;\"> </div> </div> </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionCellColor+'\" style=\"border-bottom-color: #fff;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color\" style=\"user-select: none;\"> </div> </div> </div></div><div class=\"toningbox ctTwo\"><div class=\"toningShow\"> '+t.colorShow+'2 </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionTextColor+'\" style=\"border-bottom-color: #000;margin-right: 10px;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color\" style=\"user-select: none;\"> </div> </div> </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionCellColor+'\" style=\"border-bottom-color: #fff;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color\" style=\"user-select: none;\"> </div> </div> </div></div><div class=\"toningbox footer\"><div class=\"toningShow\"> '+t.footer+' </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionTextColor+'\" style=\"border-bottom-color: #000;margin-right: 10px;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color\" style=\"user-select: none;\"> </div> </div> </div><div class=\"luckysheet-color-menu-button-indicator\" title=\"'+t.selectionCellColor+'\" style=\"border-bottom-color: #fff;\"> <div class=\"luckysheet-icon luckysheet-inline-block\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color\" style=\"user-select: none;\"> </div> </div> </div></div></div><button id=\"luckysheet-alternateformat-remove\" class=\"btn btn-default\" style=\"margin: 10px;\">'+t.removeColor+\"</button></div></div>\"}()),Dl(),$(\"#luckysheet-modal-dialog-slider-alternateformat .luckysheet-model-close-btn\").click((function(){$(\"#luckysheet-modal-dialog-slider-alternateformat\").hide(),Dl()})),$(document).off(\"focus.AFrangeInput\").on(\"focus.AFrangeInput\",\"#luckysheet-alternateformat-range input\",(function(){e.rangefocus=!0})),$(document).off(\"blur.AFrangeInput\").on(\"blur.AFrangeInput\",\"#luckysheet-alternateformat-range input\",(function(){e.rangefocus=!1})),$(document).off(\"keydown.AFrangeInput\").on(\"keydown.AFrangeInput\",\"#luckysheet-alternateformat-range input\",(function(t){$(this).val().trim();13==t.keyCode&&e.update()})),$(document).off(\"click.AFrangeIcon\").on(\"click.AFrangeIcon\",\"#luckysheet-alternateformat-range .fa-table\",(function(){$(\"#luckysheet-modal-dialog-slider-alternateformat\").hide(),Dl();let t=$(this).parents(\"#luckysheet-alternateformat-range\").find(\"input\").val().trim();e.rangeDialog(t)})),$(document).off(\"click.AFrDCf\").on(\"click.AFrDCf\",\"#luckysheet-alternateformat-rangeDialog-confirm\",(function(){let t=$(this).parents(\"#luckysheet-alternateformat-rangeDialog\").find(\"input\").val().trim();$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-range input\").val(t),$(this).parents(\"#luckysheet-alternateformat-rangeDialog\").hide(),$(\"#luckysheet-modal-dialog-slider-alternateformat\").show(),Dl(),e.update()})),$(document).off(\"click.AFrDCl\").on(\"click.AFrDCl\",\"#luckysheet-alternateformat-rangeDialog-close\",(function(){$(this).parents(\"#luckysheet-alternateformat-rangeDialog\").hide(),$(\"#luckysheet-modal-dialog-slider-alternateformat\").show(),Dl()})),$(document).off(\"click.AFrDTitle\").on(\"click.AFrDTitle\",\"#luckysheet-alternateformat-rangeDialog .luckysheet-modal-dialog-title-close\",(function(){$(this).parents(\"#luckysheet-alternateformat-rangeDialog\").hide(),$(\"#luckysheet-modal-dialog-slider-alternateformat\").show(),Dl()})),$(document).off(\"change.AFrowHeader\").on(\"change.AFrowHeader\",\"#luckysheet-alternateformat-rowHeader\",(function(){let t,n;t=!!$(this).is(\":checked\"),n=!!$(\"#luckysheet-alternateformat-rowFooter\").is(\":checked\"),e.checkboxChange(t,n),e.modelboxOn(),e.update()})),$(document).off(\"change.AFrowFooter\").on(\"change.AFrowFooter\",\"#luckysheet-alternateformat-rowFooter\",(function(){let t,n;t=!!$(\"#luckysheet-alternateformat-rowHeader\").is(\":checked\"),n=!!$(this).is(\":checked\"),e.checkboxChange(t,n),e.modelboxOn(),e.update()})),$(document).off(\"click.AFmodelbox\").on(\"click.AFmodelbox\",\"#luckysheet-modal-dialog-slider-alternateformat .modelbox\",(function(){let t=$(this).index(),n=$(this).parents(\".cf\").attr(\"id\");if(\"luckysheet-alternateformat-modelList\"==n)e.modelfocusIndex=t;else if(\"luckysheet-alternateformat-modelCustom\"==n){let n=e.FixedModelColor.length;e.modelfocusIndex=t+n}e.modelboxOn(),e.update()})),$(document).off(\"click.AFselectColor\").on(\"click.AFselectColor\",\"#luckysheet-modal-dialog-slider-alternateformat .luckysheet-color-menu-button-indicator\",(function(){let t,n,a,l=$(this).closest(\".toningbox\");$(this).find(\".luckysheet-icon-img\").hasClass(\"luckysheet-icon-text-color\")?(t=\"fc\",n=l.find(\".toningShow\").data(\"fc\")):$(this).find(\".luckysheet-icon-img\").hasClass(\"luckysheet-icon-cell-color\")&&(t=\"bc\",n=l.find(\".toningShow\").data(\"bc\")),l.hasClass(\"header\")?a=\"0\":l.hasClass(\"ctOne\")?a=\"1\":l.hasClass(\"ctTwo\")?a=\"2\":l.hasClass(\"footer\")&&(a=\"3\"),e.colorSelectDialog(n,t,a)})),$(document).off(\"click.AFselectColorConfirm\").on(\"click.AFselectColorConfirm\",\"#luckysheet-alternateformat-colorSelect-dialog-confirm\",(function(){let n=$(this).parents(\"#luckysheet-alternateformat-colorSelect-dialog\"),a=X().alternatingColors;$(\"#luckysheet-modal-dialog-mask\").hide(),n.hide();let l,r=n.find(\".currenColor span\").attr(\"title\");n.find(\".luckysheet-modal-dialog-title-text\").text()==a.selectionTextColor?l=\"fc\":n.find(\".luckysheet-modal-dialog-title-text\").text()==a.selectionCellColor&&(l=\"bc\");let o,i,s=n.find(\".currenColor\").attr(\"data-source\");\"0\"==s?(\"fc\"==l&&($(\"#luckysheet-alternateformat-modelToning .header .toningShow\").css(\"color\",r),$(\"#luckysheet-alternateformat-modelToning .header .toningShow\").data(\"fc\",r),$(\"#luckysheet-alternateformat-modelToning .header .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r)),\"bc\"==l&&($(\"#luckysheet-alternateformat-modelToning .header .toningShow\").css(\"background-color\",r),$(\"#luckysheet-alternateformat-modelToning .header .toningShow\").data(\"bc\",r),$(\"#luckysheet-alternateformat-modelToning .header .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r))):\"1\"==s?(\"fc\"==l&&($(\"#luckysheet-alternateformat-modelToning .ctOne .toningShow\").css(\"color\",r),$(\"#luckysheet-alternateformat-modelToning .ctOne .toningShow\").data(\"fc\",r),$(\"#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r)),\"bc\"==l&&($(\"#luckysheet-alternateformat-modelToning .ctOne .toningShow\").css(\"background-color\",r),$(\"#luckysheet-alternateformat-modelToning .ctOne .toningShow\").data(\"bc\",r),$(\"#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r))):\"2\"==s?(\"fc\"==l&&($(\"#luckysheet-alternateformat-modelToning .ctTwo .toningShow\").css(\"color\",r),$(\"#luckysheet-alternateformat-modelToning .ctTwo .toningShow\").data(\"fc\",r),$(\"#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r)),\"bc\"==l&&($(\"#luckysheet-alternateformat-modelToning .ctTwo .toningShow\").css(\"background-color\",r),$(\"#luckysheet-alternateformat-modelToning .ctTwo .toningShow\").data(\"bc\",r),$(\"#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r))):\"3\"==s&&(\"fc\"==l&&($(\"#luckysheet-alternateformat-modelToning .footer .toningShow\").css(\"color\",r),$(\"#luckysheet-alternateformat-modelToning .footer .toningShow\").data(\"fc\",r),$(\"#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r)),\"bc\"==l&&($(\"#luckysheet-alternateformat-modelToning .footer .toningShow\").css(\"background-color\",r),$(\"#luckysheet-alternateformat-modelToning .footer .toningShow\").data(\"bc\",r),$(\"#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",r))),o=!!$(\"#luckysheet-alternateformat-rowHeader\").is(\":checked\"),i=!!$(\"#luckysheet-alternateformat-rowFooter\").is(\":checked\");let c,u,d=e.modelfocusIndex,h=e.FixedModelColor.length;if(d<h)c=$.extend(!0,{},e.getFormatByIndex());else{u=t.luckysheetfile[Mt(t.currentSheetIndex)];let e=u.luckysheet_alternateformat_save_modelCustom;c=$.extend(!0,{},e[d-h])}\"0\"==s?\"fc\"==l?c.head.fc=r:\"bc\"==l&&(c.head.bc=r):\"1\"==s?\"fc\"==l?c.one.fc=r:\"bc\"==l&&(c.one.bc=r):\"2\"==s?\"fc\"==l?c.two.fc=r:\"bc\"==l&&(c.two.bc=r):\"3\"==s&&(\"fc\"==l&&(c.foot.fc=r),\"bc\"==l&&(c.foot.bc=r)),e.modelfocusIndex<h?(e.addCustomModel(c),e.modelfocusIndex=e.getIndexByFormat(c)):(u.luckysheet_alternateformat_save_modelCustom[d-h]=c,yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,u.luckysheet_alternateformat_save_modelCustom,{k:\"luckysheet_alternateformat_save_modelCustom\"})),e.getModelBox(o,i),e.modelboxOn(),e.update()})),$(document).off(\"click.AFremove\").on(\"click.AFremove\",\"#luckysheet-alternateformat-remove\",(function(){let n=$(this).data(\"index\"),a=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save,l=$.extend(!0,[],a);a.length>1?a.splice(n,1):a=[];let r=$.extend(!0,[],a);e.ref(l,r),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,a,{k:\"luckysheet_alternateformat_save\"}),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-modal-dialog-slider-alternateformat\").hide(),Dl()}))},perfect:function(){let e=this,n=$.extend(!0,{},t.luckysheet_select_save[0]),a=e.rangeIsExists(n)[1],l=$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save[a]),r=l.cellrange;$(\"#luckysheet-alternateformat-range input\").val(Nt(t.currentSheetIndex,{row:r.row,column:r.column},t.currentSheetIndex)),t.luckysheet_select_save=[{row:r.row,column:r.column}],Pu();let o=l.hasRowHeader,i=l.hasRowFooter,s=l.format;e.modelfocusIndex=e.getIndexByFormat(s),null==e.modelfocusIndex&&(e.addCustomModel(s),e.modelfocusIndex=e.getIndexByFormat(s)),e.checkboxChange(o,i),e.modelboxOn(),$(\"#luckysheet-alternateformat-remove\").data(\"index\",a)},checkboxChange:function(e,t){e?($(\"#luckysheet-alternateformat-rowHeader\").prop(\"checked\",!0),$(\"#luckysheet-alternateformat-modelToning .header\").show()):($(\"#luckysheet-alternateformat-rowHeader\").removeAttr(\"checked\"),$(\"#luckysheet-alternateformat-modelToning .header\").hide()),t?($(\"#luckysheet-alternateformat-rowFooter\").prop(\"checked\",!0),$(\"#luckysheet-alternateformat-modelToning .footer\").show()):($(\"#luckysheet-alternateformat-rowFooter\").removeAttr(\"checked\"),$(\"#luckysheet-alternateformat-modelToning .footer\").hide()),this.getModelBox(e,t)},modelboxOn:function(){let e=this;$(\"#luckysheet-modal-dialog-slider-alternateformat .modelbox\").removeClass(\"on\");let t=e.modelfocusIndex,n=e.FixedModelColor.length;t<n?$(\"#luckysheet-alternateformat-modelList .modelbox\").eq(t).addClass(\"on\"):$(\"#luckysheet-alternateformat-modelCustom .modelbox\").eq(t-n).addClass(\"on\"),e.modelToningColor()},modelToningColor:function(){let e=this.getFormatByIndex();$(\"#luckysheet-alternateformat-modelToning .header .toningShow\").css({color:e.head.fc,\"background-color\":e.head.bc}),$(\"#luckysheet-alternateformat-modelToning .header .toningShow\").data(\"fc\",e.head.fc).data(\"bc\",e.head.bc),$(\"#luckysheet-alternateformat-modelToning .header .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.head.fc),$(\"#luckysheet-alternateformat-modelToning .header .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.head.bc),$(\"#luckysheet-alternateformat-modelToning .ctOne .toningShow\").css({color:e.one.fc,\"background-color\":e.one.bc}),$(\"#luckysheet-alternateformat-modelToning .ctOne .toningShow\").data(\"fc\",e.one.fc).data(\"bc\",e.one.bc),$(\"#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.one.fc),$(\"#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.one.bc),$(\"#luckysheet-alternateformat-modelToning .ctTwo .toningShow\").css({color:e.two.fc,\"background-color\":e.two.bc}),$(\"#luckysheet-alternateformat-modelToning .ctTwo .toningShow\").data(\"fc\",e.two.fc).data(\"bc\",e.two.bc),$(\"#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.two.fc),$(\"#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.two.bc),$(\"#luckysheet-alternateformat-modelToning .footer .toningShow\").css({color:e.foot.fc,\"background-color\":e.foot.bc}),$(\"#luckysheet-alternateformat-modelToning .footer .toningShow\").data(\"fc\",e.foot.fc).data(\"bc\",e.foot.bc),$(\"#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-text-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.foot.fc),$(\"#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-cell-color\").parents(\".luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",e.foot.bc)},addCustomModel:function(e){let n=t.luckysheetfile[Mt(t.currentSheetIndex)];null==n.luckysheet_alternateformat_save_modelCustom&&(n.luckysheet_alternateformat_save_modelCustom=[]),n.luckysheet_alternateformat_save_modelCustom.push(e),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,n.luckysheet_alternateformat_save_modelCustom,{k:\"luckysheet_alternateformat_save_modelCustom\"})},colorSelectDialog:function(e,t,n){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-alternateformat-colorSelect-dialog\").remove();let a,l=X(),r=l.alternatingColors,o=l.button,i=l.toolbar;\"fc\"==t?a=r.selectionTextColor:\"bc\"==t&&(a=r.selectionCellColor),$(\"body\").append(nd(kt,{id:\"luckysheet-alternateformat-colorSelect-dialog\",addclass:\"luckysheet-alternateformat-colorSelect-dialog\",title:a,content:\"<div class='currenColor' data-source='\"+n+\"'>\"+r.currentColor+\"：<span title='\"+e+\"' style='background-color:\"+e+\"'></span></div><div class='colorshowbox'></div>\",botton:'<button id=\"luckysheet-alternateformat-colorSelect-dialog-confirm\" class=\"btn btn-primary\">'+o.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+o.cancel+\"</button>\",style:\"z-index:100003\"}));let s=$(\"#luckysheet-alternateformat-colorSelect-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),c=s.outerHeight(),u=s.outerWidth(),d=$(window).width(),h=$(window).height(),f=$(document).scrollLeft(),m=$(document).scrollTop();$(\"#luckysheet-alternateformat-colorSelect-dialog\").css({left:(d+f-u)/2,top:(h+m-c)/3}).show(),$(\"#luckysheet-alternateformat-colorSelect-dialog\").find(\".colorshowbox\").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,showButtons:!1,maxPaletteSize:8,maxSelectionSize:8,color:e,cancelText:o.cancel,chooseText:i.confirmColor,togglePaletteMoreText:i.customColor,togglePaletteLessText:i.collapse,togglePaletteOnly:!0,clearText:i.clearText,noColorSelectedText:i.noColorSelectedText,localStorageKey:\"spectrum.textcolor\"+yo.gridKey,palette:[[\"#000\",\"#444\",\"#666\",\"#999\",\"#ccc\",\"#eee\",\"#f3f3f3\",\"#fff\"],[\"#f00\",\"#f90\",\"#ff0\",\"#0f0\",\"#0ff\",\"#00f\",\"#90f\",\"#f0f\"],[\"#f4cccc\",\"#fce5cd\",\"#fff2cc\",\"#d9ead3\",\"#d0e0e3\",\"#cfe2f3\",\"#d9d2e9\",\"#ead1dc\"],[\"#ea9999\",\"#f9cb9c\",\"#ffe599\",\"#b6d7a8\",\"#a2c4c9\",\"#9fc5e8\",\"#b4a7d6\",\"#d5a6bd\"],[\"#e06666\",\"#f6b26b\",\"#ffd966\",\"#93c47d\",\"#76a5af\",\"#6fa8dc\",\"#8e7cc3\",\"#c27ba0\"],[\"#c00\",\"#e69138\",\"#f1c232\",\"#6aa84f\",\"#45818e\",\"#3d85c6\",\"#674ea7\",\"#a64d79\"],[\"#900\",\"#b45f06\",\"#bf9000\",\"#38761d\",\"#134f5c\",\"#0b5394\",\"#351c75\",\"#741b47\"],[\"#600\",\"#783f04\",\"#7f6000\",\"#274e13\",\"#0c343d\",\"#073763\",\"#20124d\",\"#4c1130\"]],move:function(e){e=null!=e?e.toHexString():\"#000\",$(\"#luckysheet-alternateformat-colorSelect-dialog .currenColor span\").css(\"background-color\",e).attr(\"title\",e)}})},rangeDialog:function(e){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-alternateformat-rangeDialog\").remove();let t=X(),n=t.alternatingColors,a=t.button;$(\"body\").append(nd(kt,{id:\"luckysheet-alternateformat-rangeDialog\",addclass:\"luckysheet-alternateformat-rangeDialog\",title:n.selectRange,content:'<input readonly=\"readonly\" placeholder=\"'+n.tipSelectRange+'\" value=\"'+e+'\"/>',botton:'<button id=\"luckysheet-alternateformat-rangeDialog-confirm\" class=\"btn btn-primary\">'+a.confirm+'</button><button id=\"luckysheet-alternateformat-rangeDialog-close\" class=\"btn btn-default\">'+a.cancel+\"</button>\",style:\"z-index:100003\"}));let l=$(\"#luckysheet-alternateformat-rangeDialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),r=l.outerHeight(),o=l.outerWidth(),i=$(window).width(),s=$(window).height(),c=$(document).scrollLeft(),u=$(document).scrollTop();$(\"#luckysheet-alternateformat-rangeDialog\").css({left:(i+c-o)/2,top:(s+u-r)/3}).show()},rangeIsExists:function(e,n){let a=this,l=!1,r=null,o=$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save);if(null!=n&&null!=n&&(o.length>1?o.splice(n,1):o=[]),o.length>0){let t=[];for(let e=0;e<o.length;e++){let n={index:e,map:a.getRangeMap(o[e].cellrange.row,o[e].cellrange.column)};t.push(n)}let n=a.getRangeMap(e.row,e.column);for(let e in n){if(l)break;for(let n=0;n<t.length;n++)if(e in t[n].map){l=!0,r=t[n].index;break}}}return[l,r]},getRangeMap:function(e,t){let n={},a=e[0],l=e[1],r=t[0],o=t[1];for(let e=a;e<=l;e++)for(let t=r;t<=o;t++)n[e+\"_\"+t]=0;return n},getIndexByFormat:function(e){let n=null,a=this.FixedModelColor;for(let t=0;t<a.length;t++){let l=a[t];if(e.head.fc==l.head.fc&&e.head.bc==l.head.bc&&e.one.fc==l.one.fc&&e.one.bc==l.one.bc&&e.two.fc==l.two.fc&&e.two.bc==l.two.bc&&e.foot.fc==l.foot.fc&&e.foot.bc==l.foot.bc){n=t;break}}let l=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save_modelCustom;if(null!=l&&l.length>0)for(let t=0;t<l.length;t++){let r=l[t];if(e.head.fc==r.head.fc&&e.head.bc==r.head.bc&&e.one.fc==r.one.fc&&e.one.bc==r.one.bc&&e.two.fc==r.two.fc&&e.two.bc==r.two.bc&&e.foot.fc==r.foot.fc&&e.foot.bc==r.foot.bc){n=a.length+t;break}}return n},getFormatByIndex:function(){let e=this,n=e.modelfocusIndex,a=e.FixedModelColor.length,l={};return l=n<a?e.FixedModelColor[n]:t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save_modelCustom[n-a],l},new:function(e){let n=this.getFormatByIndex(),a=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save;null==a&&(a=[]);let l=$.extend(!0,[],a),r={cellrange:{row:e.row,column:e.column},format:n,hasRowHeader:!0,hasRowFooter:!1};a.push(r);let o=$.extend(!0,[],a);this.ref(l,o),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,a,{k:\"luckysheet_alternateformat_save\"})},update:function(){let e=this,n=X().alternatingColors,a=$(\"#luckysheet-alternateformat-remove\").data(\"index\"),l=$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-range input\").val().trim();if(!wi.iscelldata(l))return void(I()?alert(n.errorNoRange):vo.info(n.errorNoRange,\"\"));let r,o,i=wi.getcellrange(l);if(e.rangeIsExists(i,a)[0])return void(I()?alert(n.errorExistColors):vo.info(n.errorExistColors,\"\"));r=!!$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-rowHeader\").is(\":checked\"),o=!!$(\"#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-rowFooter\").is(\":checked\");let s=e.getFormatByIndex(),c=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save;null==c&&(c=[]);let u=$.extend(!0,[],c),d={cellrange:{row:i.row,column:i.column},format:s,hasRowHeader:r,hasRowFooter:o};c[a]=d;let h=$.extend(!0,[],c);e.ref(u,h),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,c,{k:\"luckysheet_alternateformat_save\"})},checksAF:function(e,t,n){return e+\"_\"+t in n?n[e+\"_\"+t]:null},getComputeMap:function(){let e=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_alternateformat_save;return this.compute(e)},compute:function(e){let t={};if(null!=e&&e.length>0)for(let n=0;n<e.length;n++){let a=e[n].cellrange,l=e[n].format,r=e[n].hasRowHeader,o=e[n].hasRowFooter,i=a.row[0],s=a.row[1],c=a.column[0],u=a.column[1];if(r&&o){for(let e=c;e<=u;e++)t[i+\"_\"+e]=[l.head.fc,l.head.bc];if(s-i>1)for(let e=i+1;e<s;e++){let n,a;(e-i)%2!=0?(n=l.one.fc,a=l.one.bc):(n=l.two.fc,a=l.two.bc);for(let l=c;l<=u;l++)t[e+\"_\"+l]=[n,a]}if(s>i)for(let e=c;e<=u;e++)t[s+\"_\"+e]=[l.foot.fc,l.foot.bc]}else if(r){for(let e=c;e<=u;e++)t[i+\"_\"+e]=[l.head.fc,l.head.bc];if(s>i)for(let e=i+1;e<=s;e++){let n,a;(e-i)%2!=0?(n=l.one.fc,a=l.one.bc):(n=l.two.fc,a=l.two.bc);for(let l=c;l<=u;l++)t[e+\"_\"+l]=[n,a]}}else if(o){if(s>i)for(let e=i;e<s;e++){let n,a;(e-i)%2==0?(n=l.one.fc,a=l.one.bc):(n=l.two.fc,a=l.two.bc);for(let l=c;l<=u;l++)t[e+\"_\"+l]=[n,a]}for(let e=c;e<=u;e++)t[s+\"_\"+e]=[l.foot.fc,l.foot.bc]}else for(let e=i;e<=s;e++){let n,a;(e-i)%2==0?(n=l.one.fc,a=l.one.bc):(n=l.two.fc,a=l.two.bc);for(let l=c;l<=u;l++)t[e+\"_\"+l]=[n,a]}}return t},ref:function(e,n){if(t.clearjfundo){t.jfundo.length=0;let a={type:\"updateAF\"};a.sheetIndex=t.currentSheetIndex,a.data={historyRules:e,currentRules:n},t.jfredo.push(a)}let a=Mt(t.currentSheetIndex);t.luckysheetfile[a].luckysheet_alternateformat_save=n,setTimeout((function(){uo()}),1)}}})),Qa=y((()=>{_d(),Ka={parseJsonParm:function(e){if(null==e)return{};if(\"string\"!=ad(e))return e;try{return new Function(\"return \"+e)()}catch(e){return{}}},hasKey:function(e){let t=this.parseJsonParm(e);for(let e in t)return!0;return!1}}}));function el(e,n,a,l,r,o,i,s,c,u){if(n?(e.addClass(\"luckysheet-filter-options-active\").data(\"rowhidden\",JSON.stringify(a)).data(\"caljs\",JSON.stringify(l)).html('<i class=\"fa fa-filter luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i>'),null!=l&&(e.data(\"byconditionvalue\",l.value).data(\"byconditiontype\",l.type).data(\"byconditiontext\",l.text),null!=l.value1&&e.data(\"byconditionvalue1\",l.value1),null!=l.value2&&e.data(\"byconditionvalue2\",l.value2))):(e.removeClass(\"luckysheet-filter-options-active\").data(\"rowhidden\",\"\").data(\"caljs\",\"\").html('<i class=\"fa fa-caret-down luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i>'),e.data(\"byconditionvalue\",\"null\").data(\"byconditiontype\",\"0\").data(\"byconditiontext\",\"无\").data(\"byconditionvalue1\",\"\").data(\"byconditionvalue2\",\"\")),r){let e=t.luckysheetfile[Mt(t.currentSheetIndex)];if(null==e.filter&&(e.filter={}),n){let t={caljs:l,rowhidden:a,optionstate:n,str:o,edr:i,cindex:s,stc:c,edc:u};e.filter[s-c]=t}else delete e.filter[s-c];yo.saveParam(\"all\",t.currentSheetIndex,e.filter,{k:\"filter\"})}}function tl(e,n,a,l,r,o){let i=mn.deepCopyFlowData(t.flowdata),s=!1,c=[];for(let t=e+=1;t<=a;t++){let e=[];for(let a=n;a<=l;a++){if(null!=i[t][a]&&null!=i[t][a].mc){s=!0;break}e.push(i[t][a])}c.push(e)}if(s){let e=X().filter;return void(I()?alert(e.mergeError):vo.info(e.mergeError,\"\"))}c=hr(c,r-n,o);for(let t=e;t<=a;t++)for(let a=n;a<=l;a++)i[t][a]=c[t-e][a-n];let u={};if(null!=t.config.rowlen){let n=$.extend(!0,{},t.config);n=aa(i,e,a,n),u={cfg:n,RowlChange:!0}}ao(i,[{row:[e,a],column:[n,l]}],u)}function nl(){if(!Ql(t.currentSheetIndex,\"filter\"))return;if(t.luckysheet_select_save.length>1){$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide(),$(\"#\"+t.container).attr(\"tabindex\",0).focus();let e=X().splitText;return void(I()?alert(e.tipNoMulti):vo.info(e.tipNoMulti,\"\"))}if(t.luckysheetfile[Mt(t.currentSheetIndex)].isPivotTable)return;$(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex+\", #luckysheet-filter-options-sheet\"+t.currentSheetIndex).remove();let e=t.luckysheet_select_save[0];if(e.row[0]==e.row[1]&&e.column[0]==e.column[1]){let n,a,l=e.row[1];for(let e=0;e<t.flowdata[l].length;e++){let r=t.flowdata[l][e];if(null==r||_(r.v)){if(null!=n){a=e-1;break}}else null==n&&(n=e)}null==a&&(a=t.flowdata[l].length-1),t.luckysheet_select_save=[{row:[l,l],column:[n,a]}],Pu(),t.luckysheet_shiftpositon=$.extend(!0,{},e),Oa(\"down\",\"range\")}else e.row[1]-e.row[0]<2&&(t.luckysheet_shiftpositon=$.extend(!0,{},e),Oa(\"down\",\"range\"));t.luckysheet_filter_save=$.extend(!0,{},t.luckysheet_select_save[0]),al(t.luckysheet_filter_save),yo.saveParam(\"all\",t.currentSheetIndex,t.luckysheet_filter_save,{k:\"filter_select\"}),t.filterchage&&t.jfredo.push({type:\"filtershow\",data:[],curdata:[],sheetIndex:t.currentSheetIndex,filter_save:t.luckysheet_filter_save})}function al(e,n){if($(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex).remove(),$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex).remove(),null==e||\"{}\"==JSON.stringify(e))return;let a=e.row[0],l=e.row[1],r=e.column[0],o=e.column[1],i=t.visibledatarow[l],s=a-1==-1?0:t.visibledatarow[a-1],c=t.visibledatacolumn[o],u=r-1==-1?0:t.visibledatacolumn[r-1],d='<div id=\"luckysheet-filter-selected-sheet'+t.currentSheetIndex+'\" class=\"luckysheet-cell-selected luckysheet-filter-selected\"  style=\"left:'+u+\"px;width:\"+(c-u-1)+\"px;top:\"+s+\"px;height:\"+(i-s-1)+'px;display:block;border-color:#897BFF;z-index:20;background:none;\"></div>';$(\"#luckysheet-cell-main\").append(d);let h=\"\";for(let e=r;e<=o;e++){let i=null!=t.config&&null!=t.config.colhidden&&e in t.config.colhidden;if(null==n||null==n[e-r])h+='<div data-rowhidden=\"\" data-str=\"'+a+'\" data-edr=\"'+l+'\" data-cindex=\"'+e+'\" data-stc=\"'+r+'\" data-edc=\"'+o+'\" class=\"luckysheet-filter-options\" style=\"left:'+(t.visibledatacolumn[e]-20)+\"px;top:\"+s+\"px;display:\"+(i?\"none\":\"block\")+';\"><i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i></div>';else{let c;if(null!=n[e-r].caljs){let t,a;t=null!=n[e-r].caljs.value1?'data-byconditionvalue1=\"'+n[e-r].caljs.value1+'\" ':\"\",a=null!=n[e-r].caljs.value2?'data-byconditionvalue2=\"'+n[e-r].caljs.value2+'\" ':\"\",c='data-caljs=\"'+JSON.stringify(n[e-r].caljs)+'\" data-byconditionvalue=\"'+n[e-r].caljs.value+'\" data-byconditiontype=\"'+n[e-r].caljs.type+'\" data-byconditiontext=\"'+n[e-r].caljs.text+'\" '+t+a}else c=\"\";h+='<div data-rowhidden=\"'+JSON.stringify(n[e-r].rowhidden).replace(/\\\"/g,\"'\")+'\" '+c+' data-str=\"'+a+'\" data-edr=\"'+l+'\" data-cindex=\"'+e+'\" data-stc=\"'+r+'\" data-edc=\"'+o+'\" class=\"luckysheet-filter-options luckysheet-filter-options-active\" style=\"left:'+(t.visibledatacolumn[e]-20)+\"px;top:\"+s+\"px;display:\"+(i?\"none\":\"block\")+';\"><i class=\"fa fa-filter luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i></div>'}}$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-filter-options-sheet'+t.currentSheetIndex+'\" class=\"luckysheet-filter-options-c\">'+h+\"</div>\"),$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide(),$(\"#luckysheet-cell-main\").scrollTop()>e.top_move&&$(\"#luckysheet-scrollbar-y\").scrollTop(e.top_move),t.luckysheetfile[Mt(t.currentSheetIndex)].filter_select=e}var ll,rl,ol=y((()=>{qt(),gn(),E(),Co(),da(),Xu(),Za(),Et(),_o(),K(),x(),ed(),To(),Ja(),dr(),_d(),Io(),fo(),Lr(),Qa(),Ma()})),il=y((()=>{na(),_o(),zl(),Et(),dr(),qt(),Wt(),_d(),x(),K(),Co(),kl(),rl=ll={imgItem:{type:\"3\",src:\"\",originWidth:null,originHeight:null,default:{width:null,height:null,left:null,top:null},crop:{width:null,height:null,offsetLeft:0,offsetTop:0},isFixedPos:!1,fixedLeft:null,fixedTop:null,border:{width:0,radius:0,style:\"solid\",color:\"#000\"}},images:null,currentImgId:null,currentWinW:null,currentWinH:null,resize:null,resizeXY:null,move:!1,moveXY:null,cropChange:null,cropChangeXY:null,cropChangeObj:null,copyImgItemObj:null,insertImg:function(e){let n=t.toJsonOptions&&t.toJsonOptions.uploadImage;if(\"function\"==typeof n)n(e).then((e=>{ll._insertImg(e)})).catch((e=>{vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',\"图片上传失败\")}));else{let t=new FileReader;t.readAsDataURL(e),t.onload=function(e){let t=e.target.result;ll._insertImg(t),$(\"#luckysheet-imgUpload\").val(\"\")}}},_insertImg:function(e){let n=this,a=t.luckysheet_select_save[t.luckysheet_select_save.length-1],l=a.row_focus||0,r=a.column_focus||0,o=0==r?0:t.visibledatacolumn[r-1],i=0==l?0:t.visibledatarow[l-1],s=new Image;s.onload=function(){let t=s.width,a=s.height,l={src:e,left:o,top:i,originWidth:t,originHeight:a};n.addImgItem(l)};let c=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle;s.src=\"function\"==typeof c?c(e):e},generateRandomId:function(e){null==e&&(e=\"img\");let t=window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g,\"\").split(\"\"),n=\"\";for(let e=0;e<12;e++)n+=t[Math.round(Math.random()*(t.length-1))];return e+\"_\"+n+\"_\"+(new Date).getTime()},modelHtml:function(e,n){let a=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle,l=\"function\"==typeof a?a(n.src):n.src,r=this.getImgItemParam(n),o=r.width,i=r.height,s=r.left,c=r.top,u=r.position,d=n.border.width;return`<div id=\"${e}\" class=\"luckysheet-modal-dialog luckysheet-modal-dialog-image\" style=\"width:${o}px;height:${i}px;padding:0;position:${u};left:${s}px;top:${c}px;z-index:200;\">\\n                    <div class=\"luckysheet-modal-dialog-content\" style=\"width:100%;height:100%;overflow:hidden;position:relative;\">\\n                        <img src=\"${l}\" style=\"position:absolute;width:${n.default.width*t.zoomRatio}px;height:${n.default.height*t.zoomRatio}px;left:${-n.crop.offsetLeft*t.zoomRatio}px;top:${-n.crop.offsetTop*t.zoomRatio}px;\" />\\n                    </div>\\n                    <div class=\"luckysheet-modal-dialog-border\" style=\"border:${d}px ${n.border.style} ${n.border.color};border-radius:${n.border.radius*t.zoomRatio}px;position:absolute;left:${-d}px;right:${-d}px;top:${-d}px;bottom:${-d}px;\"></div>\\n                </div>`},getSliderHtml:function(){let e=X().imageText;return`<div id=\"luckysheet-modal-dialog-slider-imageCtrl\" class=\"luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-imageCtrl\" style=\"display:block;\">\\n                    <div class=\"luckysheet-modal-dialog-slider-title\">\\n                        <span>${e.imageSetting}</span>\\n                        <span class=\"luckysheet-model-close-btn\" title=\"${e.close}\">\\n                            <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\\n                        </span>\\n                    </div>\\n                    <div class=\"luckysheet-modal-dialog-slider-content\">\\n                        <div class=\"slider-box\">\\n                            <div class=\"slider-box-title\">${e.conventional}</div>\\n                            <div class=\"slider-box-radios\">\\n                                <div class=\"radio-item\">\\n                                    <input type=\"radio\" id=\"imgItemType1\" name=\"imgItemType\" value=\"1\">\\n                                    <label for=\"imgItemType1\">${e.moveCell1}</label>\\n                                </div>\\n                                <div class=\"radio-item\">\\n                                    <input type=\"radio\" id=\"imgItemType2\" name=\"imgItemType\" value=\"2\">\\n                                    <label for=\"imgItemType2\">${e.moveCell2}</label>\\n                                </div>\\n                                <div class=\"radio-item\">\\n                                    <input type=\"radio\" id=\"imgItemType3\" name=\"imgItemType\" value=\"3\">\\n                                    <label for=\"imgItemType3\">${e.moveCell3}</label>\\n                                </div>\\n                            </div>\\n                            <div class=\"slider-box-checkbox\">\\n                                <input type=\"checkbox\" id=\"imgItemIsFixedPos\">\\n                                <label for=\"imgItemIsFixedPos\">${e.fixedPos}</label>\\n                            </div>\\n                        </div>\\n                        <div class=\"slider-box\">\\n                            <div class=\"slider-box-title\">${e.border}</div>\\n                            <div class=\"slider-box-borderConfig\">\\n                                <div class=\"border-item\">\\n                                    <label>${e.width}</label>\\n                                    <input type=\"number\" id=\"imgItemBorderWidth\" min=\"0\">\\n                                </div>\\n                                <div class=\"border-item\">\\n                                    <label>${e.radius}</label>\\n                                    <input type=\"number\" id=\"imgItemBorderRadius\" min=\"0\">\\n                                </div>\\n                                <div class=\"border-item\">\\n                                    <label>${e.style}</label>\\n                                    <select id=\"imgItemBorderStyle\">\\n                                        <option value=\"solid\">${e.solid}</option>\\n                                        <option value=\"dashed\">${e.dashed}</option>\\n                                        <option value=\"dotted\">${e.dotted}</option>\\n                                        <option value=\"double\">${e.double}</option>\\n                                    </select>\\n                                </div>\\n                                <div class=\"border-item\">\\n                                    <label>${e.color}</label>\\n                                    <div id=\"imgItemBorderColor\" class=\"imgItemBorderColor\">\\n                                        <span></span>\\n                                    </div>\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>`},sliderHtmlShow:function(){let e=this;$(\"#luckysheet-modal-dialog-slider-imageCtrl\").remove();let t=e.getSliderHtml();$(\"body\").append(t),Dl();let n=e.images[e.currentImgId],a=n.type;$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemType\"+a).prop(\"checked\",!0);let l=n.isFixedPos;$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemIsFixedPos\").prop(\"checked\",l);let r=n.border;$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderWidth\").val(r.width),$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderRadius\").val(r.radius),$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderStyle\").val(r.style),$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderColor span\").css(\"background-color\",r.color).attr(\"title\",r.color),e.init()},colorSelectDialog:function(e){let t=X(),n=t.button,a=t.toolbar,l=t.imageCtrl;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-imageCtrl-colorSelect-dialog\").remove(),$(\"body\").append(nd(kt,{id:\"luckysheet-imageCtrl-colorSelect-dialog\",addclass:\"luckysheet-imageCtrl-colorSelect-dialog\",title:l.borderTile,content:`<div class=\"currenColor\">\\n                            ${l.borderCur}:<span title=\"${e}\" style=\"background-color:${e}\"></span>\\n                        </div>\\n                        <div class=\"colorshowbox\"></div>`,botton:`<button id=\"luckysheet-imageCtrl-colorSelect-dialog-confirm\" class=\"btn btn-primary\">${n.confirm}</button>\\n                        <button class=\"btn btn-default luckysheet-model-close-btn\">${n.cancel}</button>`,style:\"z-index:100003\"}));let r=$(\"#luckysheet-imageCtrl-colorSelect-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),o=r.outerHeight(),i=r.outerWidth(),s=$(window).width(),c=$(window).height(),u=$(document).scrollLeft(),d=$(document).scrollTop();$(\"#luckysheet-imageCtrl-colorSelect-dialog\").css({left:(s+u-i)/2,top:(c+d-o)/3}).show(),$(\"#luckysheet-imageCtrl-colorSelect-dialog\").find(\".colorshowbox\").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,showButtons:!1,maxPaletteSize:8,maxSelectionSize:8,color:e,cancelText:n.cancel,chooseText:a.confirmColor,togglePaletteMoreText:a.customColor,togglePaletteLessText:a.collapse,togglePaletteOnly:!0,clearText:a.clearText,noColorSelectedText:a.noColorSelectedText,localStorageKey:\"spectrum.textcolor\"+yo.gridKey,palette:[[\"#000\",\"#444\",\"#666\",\"#999\",\"#ccc\",\"#eee\",\"#f3f3f3\",\"#fff\"],[\"#f00\",\"#f90\",\"#ff0\",\"#0f0\",\"#0ff\",\"#00f\",\"#90f\",\"#f0f\"],[\"#f4cccc\",\"#fce5cd\",\"#fff2cc\",\"#d9ead3\",\"#d0e0e3\",\"#cfe2f3\",\"#d9d2e9\",\"#ead1dc\"],[\"#ea9999\",\"#f9cb9c\",\"#ffe599\",\"#b6d7a8\",\"#a2c4c9\",\"#9fc5e8\",\"#b4a7d6\",\"#d5a6bd\"],[\"#e06666\",\"#f6b26b\",\"#ffd966\",\"#93c47d\",\"#76a5af\",\"#6fa8dc\",\"#8e7cc3\",\"#c27ba0\"],[\"#c00\",\"#e69138\",\"#f1c232\",\"#6aa84f\",\"#45818e\",\"#3d85c6\",\"#674ea7\",\"#a64d79\"],[\"#900\",\"#b45f06\",\"#bf9000\",\"#38761d\",\"#134f5c\",\"#0b5394\",\"#351c75\",\"#741b47\"],[\"#600\",\"#783f04\",\"#7f6000\",\"#274e13\",\"#0c343d\",\"#073763\",\"#20124d\",\"#4c1130\"]],move:function(e){e=null!=e?e.toHexString():\"#000\",$(\"#luckysheet-imageCtrl-colorSelect-dialog .currenColor span\").css(\"background-color\",e).attr(\"title\",e)}})},init:function(){let e=this;$(\"#luckysheet-modal-dialog-slider-imageCtrl .luckysheet-model-close-btn\").click((function(){$(\"#luckysheet-modal-dialog-slider-imageCtrl\").hide(),Dl()})),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").off(\"change.radio\").on(\"change.radio\",\".radio-item input[type=radio][name=imgItemType]\",(function(){e.configChange(\"type\",this.value)})),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").off(\"change.checkbox\").on(\"change.checkbox\",\".slider-box-checkbox input[type=checkbox]\",(function(){e.configChange(\"fixedPos\",this.checked)})),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").off(\"change.borderWidth\").on(\"change.borderWidth\",\"#imgItemBorderWidth\",(function(){e.configChange(\"border-width\",this.valueAsNumber)})),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").off(\"change.borderRadius\").on(\"change.borderRadius\",\"#imgItemBorderRadius\",(function(){e.configChange(\"border-radius\",this.valueAsNumber)})),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").off(\"change.borderStyle\").on(\"change.borderStyle\",\"#imgItemBorderStyle\",(function(){e.configChange(\"border-style\",this.value)})),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").off(\"click.color\").on(\"click.color\",\"#imgItemBorderColor\",(function(){let t=$(this).find(\"span\").attr(\"title\");e.colorSelectDialog(t)})),$(document).off(\"click.selectColorConfirm\").on(\"click.selectColorConfirm\",\"#luckysheet-imageCtrl-colorSelect-dialog-confirm\",(function(){let t=$(this).parents(\"#luckysheet-imageCtrl-colorSelect-dialog\");$(\"#luckysheet-modal-dialog-mask\").hide(),t.hide();let n=t.find(\".currenColor span\").attr(\"title\");$(\"#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderColor span\").css(\"background-color\",n).attr(\"title\",n),e.configChange(\"border-color\",n)})),$(\"#luckysheet-image-showBoxs\").off(\"mousedown.active\").on(\"mousedown.active\",\".luckysheet-modal-dialog-image\",(function(n){if(!Ql(t.currentSheetIndex,\"editObjects\",!1))return;$(this).hide();let a=$(this).attr(\"id\");null!=e.currentImgId&&e.currentImgId!=a&&e.cancelActiveImgItem(),e.currentImgId=a;let l=e.images[a],r=e.getImgItemParam(l),o=r.width,i=r.height,s=r.left,c=r.top,u=r.position;$(\"#luckysheet-modal-dialog-activeImage\").show().css({width:o,height:i,left:s,top:c,position:u});let d=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle,h=\"function\"==typeof d?d(l.src):l.src;$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content\").css({\"background-image\":\"url(\"+h+\")\",\"background-size\":l.default.width*t.zoomRatio+\"px \"+l.default.height*t.zoomRatio+\"px\",\"background-position\":-l.crop.offsetLeft*t.zoomRatio+\"px \"+-l.crop.offsetTop*t.zoomRatio+\"px\"}),$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border\").css({\"border-width\":l.border.width*t.zoomRatio,\"border-style\":l.border.style,\"border-color\":l.border.color,\"border-radius\":l.border.radius*t.zoomRatio,left:-l.border.width*t.zoomRatio,right:-l.border.width*t.zoomRatio,top:-l.border.width*t.zoomRatio,bottom:-l.border.width*t.zoomRatio}),e.sliderHtmlShow(),n.stopPropagation()})),$(\"#luckysheet-modal-dialog-activeImage\").off(\"mousedown.move\").on(\"mousedown.move\",\".luckysheet-modal-dialog-content\",(function(n){if(!Ql(t.currentSheetIndex,\"editObjects\",!1))return;$(\"#luckysheet-modal-dialog-slider-imageCtrl\").is(\":visible\")||e.sliderHtmlShow(),e.move=!0,e.currentWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,e.currentWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight;let a=$(\"#luckysheet-modal-dialog-activeImage\").offset();e.moveXY=[n.pageX-a.left,n.pageY-a.top],Ut(!0),n.stopPropagation()})),$(\"#luckysheet-modal-dialog-activeImage\").off(\"mousedown.resize\").on(\"mousedown.resize\",\".luckysheet-modal-dialog-resize-item\",(function(n){if(!Ql(t.currentSheetIndex,\"editObjects\",!1))return;e.currentWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,e.currentWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,e.resize=$(this).data(\"type\");let a=$(\"#luckysheet-cell-main\").scrollTop(),l=$(\"#luckysheet-cell-main\").scrollLeft(),r=ta(n.pageX,n.pageY),o=r[0]+l,i=r[1]+a,s=$(\"#luckysheet-modal-dialog-activeImage\").position(),c=$(\"#luckysheet-modal-dialog-activeImage\").width(),u=$(\"#luckysheet-modal-dialog-activeImage\").height();e.resizeXY=[o,i,c,u,s.left+l,s.top+a,l,a],Ut(!0),n.stopPropagation()})),$(\"#luckysheet-modal-dialog-activeImage\").off(\"mousedown.croppingEnter\").on(\"mousedown.croppingEnter\",\".luckysheet-modal-controll-crop\",(function(t){e.croppingEnter(),t.stopPropagation()})),$(\"#luckysheet-modal-dialog-cropping\").off(\"mousedown.croppingExit\").on(\"mousedown.croppingExit\",\".luckysheet-modal-controll-crop\",(function(t){e.croppingExit(),t.stopPropagation()})),$(\"#luckysheet-modal-dialog-cropping\").off(\"mousedown.cropChange\").on(\"mousedown.cropChange\",\".resize-item\",(function(t){e.cropChange=$(this).data(\"type\");let n=$(\"#luckysheet-cell-main\").scrollTop(),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=ta(t.pageX,t.pageY),r=l[0]+a,o=l[1]+n;e.cropChangeXY=[r,o],Ut(!0),t.stopPropagation()})),$(\"#luckysheet-image-showBoxs\").off(\"mousedown.restore\").on(\"mousedown.restore\",\".luckysheet-modal-controll-restore\",(function(t){e.restoreImgItem(),t.stopPropagation()})),$(\"#luckysheet-image-showBoxs\").off(\"mousedown.delete\").on(\"mousedown.delete\",\".luckysheet-modal-controll-del\",(function(t){e.removeImgItem(),t.stopPropagation()}))},configChange:function(e,t){let n=this,a=n.images[n.currentImgId];switch(e){case\"type\":a.type=t;break;case\"fixedPos\":a.isFixedPos=t;let e=n.getImgItemParam(a),l=e.width,r=e.height,o=e.left,i=e.top,s=e.position;$(\"#luckysheet-modal-dialog-activeImage\").show().css({width:l,height:r,left:o,top:i,position:s});break;case\"border-width\":a.border.width=t,$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border\").css({\"border-width\":t,left:-t,right:-t,top:-t,bottom:-t});break;case\"border-radius\":a.border.radius=t,$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border\").css(\"border-radius\",t);break;case\"border-style\":a.border.style=t,$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border\").css(\"border-style\",t);break;case\"border-color\":a.border.color=t,$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border\").css(\"border-color\",t)}n.ref()},getImgItemParam(e){let n=e.isFixedPos,a=e.default.width*t.zoomRatio,l=e.default.height*t.zoomRatio,r=e.default.left*t.zoomRatio,o=e.default.top*t.zoomRatio;(e.crop.width!=a||e.crop.height!=l)&&(a=e.crop.width*t.zoomRatio,l=e.crop.height*t.zoomRatio,r+=e.crop.offsetLeft*t.zoomRatio,o+=e.crop.offsetTop*t.zoomRatio);let i=\"absolute\";if(n){i=\"fixed\",r=e.fixedLeft+e.crop.offsetLeft,o=e.fixedTop+e.crop.offsetTop;let n=t.rowHeaderWidth,a=t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight;r=(r-n)*t.zoomRatio+n,o=(o-a)*t.zoomRatio+a}return{width:a,height:l,left:r,top:o,position:i}},cancelActiveImgItem:function(){let e=this;$(\"#luckysheet-modal-dialog-activeImage\").hide(),$(\"#luckysheet-modal-dialog-cropping\").hide(),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").hide();let n=e.images[e.currentImgId],a=e.getImgItemParam(n),l=a.width,r=a.height,o=a.left,i=a.top,s=a.position;$(\"#\"+e.currentImgId).show().css({width:l,height:r,left:o,top:i,position:s}),$(\"#\"+e.currentImgId+\" img\").css({width:n.default.width*t.zoomRatio,height:n.default.height*t.zoomRatio,left:-n.crop.offsetLeft*t.zoomRatio,top:-n.crop.offsetTop*t.zoomRatio}),$(\"#\"+e.currentImgId+\" .luckysheet-modal-dialog-border\").css({\"border-width\":n.border.width*t.zoomRatio,\"border-style\":n.border.style,\"border-color\":n.border.color,\"border-radius\":n.border.radius*t.zoomRatio,left:-n.border.width*t.zoomRatio,right:-n.border.width*t.zoomRatio,top:-n.border.width*t.zoomRatio,bottom:-n.border.width*t.zoomRatio}),e.currentImgId=null},addImgItem:function(e){let n,a,l=this,r=400;e.originHeight<e.originWidth?(a=Math.round(e.originHeight*(r/e.originWidth)),n=r):(n=Math.round(e.originWidth*(r/e.originHeight)),a=r),null==l.images&&(l.images={});let o=$.extend(!0,{},l.imgItem);o.src=e.src,o.originWidth=e.originWidth,o.originHeight=e.originHeight,o.default.width=n,o.default.height=a,o.default.left=e.left,o.default.top=e.top,o.crop.width=n,o.crop.height=a;let i=$(\"#luckysheet-cell-main\").scrollTop(),s=$(\"#luckysheet-cell-main\").scrollLeft();o.fixedLeft=e.left-s+t.rowHeaderWidth,o.fixedTop=e.top-i+t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight;let c=l.generateRandomId(),u=l.modelHtml(c,o);$(\"#luckysheet-image-showBoxs .img-list\").append(u),l.images[c]=o,l.ref(),l.init()},moveImgItem:function(){let e=this;e.move=!1;let n=$(\"#luckysheet-modal-dialog-activeImage\")[0],a=e.images[e.currentImgId];var l=t.zoomRatio;a.isFixedPos?(a.fixedLeft=(n.offsetLeft-a.crop.offsetLeft)/l,a.fixedTop=(n.offsetTop-a.crop.offsetTop)/l):(a.default.left=(n.offsetLeft-a.crop.offsetLeft)/l,a.default.top=(n.offsetTop-a.crop.offsetTop)/l),e.ref()},resizeImgItem:function(){let e=this;e.resize=null;var n=t.zoomRatio;let a=$(\"#luckysheet-modal-dialog-activeImage\")[0],l=e.images[e.currentImgId],r=a.clientWidth/l.crop.width,o=a.clientHeight/l.crop.height;l.default.width=Math.round(l.default.width*r/n),l.default.height=Math.round(l.default.height*o/n),l.crop.width=Math.round(l.crop.width*r/n),l.crop.height=Math.round(l.crop.height*o/n),l.crop.offsetLeft=Math.round(l.crop.offsetLeft*r/n),l.crop.offsetTop=Math.round(l.crop.offsetTop*o/n),l.isFixedPos?(l.fixedLeft=a.offsetLeft/n,l.fixedTop=a.offsetTop/n):(l.default.left=(a.offsetLeft-l.crop.offsetLeft)/n,l.default.top=(a.offsetTop-l.crop.offsetTop)/n),e.ref()},croppingEnter:function(){let e=this;if(e.cropping=!0,!Ql(t.currentSheetIndex,\"editObjects\",!1))return;$(\"#luckysheet-modal-dialog-activeImage\").hide(),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").hide();let n=e.images[e.currentImgId],a=e.getImgItemParam(n),l=a.width,r=a.height,o=a.left,i=a.top,s=a.position;$(\"#luckysheet-modal-dialog-cropping\").show().css({width:l,height:r,left:o,top:i,position:s});let c=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle,u=\"function\"==typeof c?c(n.src):n.src;$(\"#luckysheet-modal-dialog-cropping .cropping-mask\").css({width:n.default.width,height:n.default.height,\"background-image\":\"url(\"+u+\")\",left:-n.crop.offsetLeft,top:-n.crop.offsetTop}),$(\"#luckysheet-modal-dialog-cropping .cropping-content\").css({\"background-image\":\"url(\"+u+\")\",\"background-size\":n.default.width+\"px \"+n.default.height+\"px\",\"background-position\":-n.crop.offsetLeft+\"px \"+-n.crop.offsetTop+\"px\"}),$(\"#luckysheet-modal-dialog-cropping .luckysheet-modal-dialog-border\").css({\"border-width\":n.border.width,\"border-style\":n.border.style,\"border-color\":n.border.color,\"border-radius\":n.border.radius,left:-n.border.width,right:-n.border.width,top:-n.border.width,bottom:-n.border.width})},croppingExit:function(){let e=this;e.cropping=!1,$(\"#luckysheet-modal-dialog-cropping\").hide();let n=e.images[e.currentImgId],a=e.getImgItemParam(n),l=a.width,r=a.height,o=a.left,i=a.top,s=a.position;$(\"#luckysheet-modal-dialog-activeImage\").show().css({width:l,height:r,left:o,top:i,position:s});let c=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle,u=\"function\"==typeof c?c(n.src):n.src;$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content\").css({\"background-image\":\"url(\"+u+\")\",\"background-size\":n.default.width+\"px \"+n.default.height+\"px\",\"background-position\":-n.crop.offsetLeft+\"px \"+-n.crop.offsetTop+\"px\"})},cropChangeImgItem:function(){let e=this;e.cropChange=null;let t=e.images[e.currentImgId];t.crop.width=e.cropChangeObj.width,t.crop.height=e.cropChangeObj.height,t.crop.offsetLeft=e.cropChangeObj.offsetLeft,t.crop.offsetTop=e.cropChangeObj.offsetTop,e.ref()},restoreImgItem:function(){let e=this,n=e.images[e.currentImgId];n.default.width=n.originWidth,n.default.height=n.originHeight,n.crop.width=n.originWidth,n.crop.height=n.originHeight,n.crop.offsetLeft=0,n.crop.offsetTop=0;let a=e.getImgItemParam(n),l=a.width,r=a.height,o=a.left,i=a.top,s=a.position;$(\"#luckysheet-modal-dialog-activeImage\").show().css({width:l,height:r,left:o,top:i,position:s});let c=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle,u=\"function\"==typeof c?c(n.src):n.src;$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content\").css({\"background-image\":\"url(\"+u+\")\",\"background-size\":n.default.width+\"px \"+n.default.height+\"px\",\"background-position\":-n.crop.offsetLeft+\"px \"+-n.crop.offsetTop+\"px\"}),e.ref()},removeImgItem:function(){let e=this,t=e.images[e.currentImgId];!yl.createHookFunction(\"imageDeleteBefore\",t)||($(\"#luckysheet-modal-dialog-activeImage\").hide(),$(\"#luckysheet-modal-dialog-cropping\").hide(),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").hide(),$(\"#\"+e.currentImgId).remove(),delete e.images[e.currentImgId],e.currentImgId=null,yl.createHookFunction(\"imageDeleteAfter\",t),e.ref())},copyImgItem:function(e){let t=this;t.copyImgItemObj=$.extend(!0,{},t.images[t.currentImgId]);let n=window.clipboardData;n||(n=e.originalEvent.clipboardData);let a='<table data-type=\"luckysheet_copy_action_image\"><tr><td><td></tr></table>';if(n)return n.setData(\"Text\",a),!1;{let e=$(\"#luckysheet-copy-content\");e.html(a),e.focus(),e.select(),document.execCommand(\"selectAll\"),document.execCommand(\"Copy\"),setTimeout((function(){$(\"#luckysheet-copy-content\").blur()}),10)}},pasteImgItem:function(){let e=this;null==e.images&&(e.images={});let n=t.luckysheet_select_save[0].row_focus||0,a=t.luckysheet_select_save[0].column_focus||0,l=0==a?0:t.visibledatacolumn[a-1],r=0==n?0:t.visibledatarow[n-1],o=$.extend(!0,{},e.copyImgItemObj);o.default.left=l-o.crop.offsetLeft,o.default.top=r-o.crop.offsetTop;let i=$(\"#luckysheet-cell-main\").scrollTop(),s=$(\"#luckysheet-cell-main\").scrollLeft();o.fixedLeft=o.default.left-s+t.rowHeaderWidth,o.fixedTop=o.default.top-i+t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight;let c=e.generateRandomId(),u=e.modelHtml(c,o);$(\"#luckysheet-image-showBoxs .img-list\").append(u),e.images[c]=o,e.ref(),e.init()},allImagesShow:function(){let e=this;if($(\"#luckysheet-modal-dialog-activeImage\").hide(),$(\"#luckysheet-modal-dialog-cropping\").hide(),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").hide(),$(\"#luckysheet-image-showBoxs .img-list\").empty(),null!=e.images)for(let t in e.images){let n=e.images[t],a=e.modelHtml(t,n);$(\"#luckysheet-image-showBoxs .img-list\").append(a)}},moveChangeSize:function(e,n,a){let l=this,r=$.extend(!0,{},l.images);if(\"row\"==e){let e=t.visibledatarow[n],o=a-(e-(n-1==-1?0:t.visibledatarow[n-1])-1);for(let t in r){let n=r[t],a=l.getImgItemParam(n),i=n.type;if(\"1\"==i){if(a.top>=e)n.default.top=a.top+o-n.crop.offsetTop;else if(a.top+a.height>=e-2)if(a.top<e+o){let e=(a.height+o)/a.height;n.default.height=Math.round(n.default.height*e),n.crop.height=Math.round(n.crop.height*e),n.crop.offsetTop=Math.round(n.crop.offsetTop*e)}else{let t=(a.top+a.height-e)/a.height;n.default.height=Math.round(n.default.height*t),n.crop.height=Math.round(n.crop.height*t),n.crop.offsetTop=Math.round(n.crop.offsetTop*t),n.default.top=e+o-n.crop.offsetTop}else if(a.top>e+o){let t=1/a.height;n.default.height=Math.round(n.default.height*t),n.crop.height=Math.round(n.crop.height*t),n.crop.offsetTop=Math.round(n.crop.offsetTop*t),n.default.top=e+o-n.crop.offsetTop}else if(a.top+a.height>e+o){let t=(e+o-a.top)/a.height;n.default.height=Math.round(n.default.height*t),n.crop.height=Math.round(n.crop.height*t),n.crop.offsetTop=Math.round(n.crop.offsetTop*t)}}else\"2\"==i&&(a.top>=e?n.default.top=a.top+o-n.crop.offsetTop:a.top>e+o&&(n.default.top=e+o-n.crop.offsetTop))}}else if(\"column\"==e){let e=t.visibledatacolumn[n],o=a-(e-(n-1==-1?0:t.visibledatacolumn[n-1])-1);for(let t in r){let n=r[t],a=l.getImgItemParam(n),i=n.type;if(\"1\"==i){if(a.left>=e)n.default.left=a.left+o-n.crop.offsetLeft;else if(a.left+a.width>=e-2)if(a.left<e+o){let e=(a.width+o)/a.width;n.default.width=Math.round(n.default.width*e),n.crop.width=Math.round(n.crop.width*e),n.crop.offsetLeft=Math.round(n.crop.offsetLeft*e)}else{let t=(a.left+a.width-e)/a.width;n.default.width=Math.round(n.default.width*t),n.crop.width=Math.round(n.crop.width*t),n.crop.offsetLeft=Math.round(n.crop.offsetLeft*t),n.default.left=e+o-n.crop.offsetLeft}else if(a.left>e+o){let t=1/a.width;n.default.width=Math.round(n.default.width*t),n.crop.width=Math.round(n.crop.width*t),n.crop.offsetLeft=Math.round(n.crop.offsetLeft*t),n.default.left=e+o-n.crop.offsetLeft}else if(a.left+a.width>e+o){let t=(e+o-a.left)/a.width;n.default.width=Math.round(n.default.width*t),n.crop.width=Math.round(n.crop.width*t),n.crop.offsetLeft=Math.round(n.crop.offsetLeft*t)}}else\"2\"==i&&(a.left>=e?n.default.left=a.left+o-n.crop.offsetLeft:a.left>e+o&&(n.default.left=e+o-n.crop.offsetLeft))}}return r},ref:function(){let e=t.luckysheetfile[Mt(t.currentSheetIndex)],n=this.images;t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"imageCtrl\",sheetIndex:t.currentSheetIndex,images:null==e.images?null:$.extend(!0,{},e.images),curImages:n})),e.images=$.extend(!0,{},n),yo.saveParam(\"all\",t.currentSheetIndex,e.images,{k:\"images\"})}}}));var sl,cl=y((()=>{_d(),Ci(),E(),ka(),fo(),Co(),Pa(),Yn(),gn(),Et(),Xu(),_o(),ed(),_i(),qt(),K(),x(),sl={defaultItem:{type:\"dropdown\",type2:null,value1:\"\",value2:\"\",checked:!1,remote:!1,prohibitInput:!1,hintShow:!1,hintText:\"\"},curItem:null,dataVerification:null,selectRange:[],selectStatus:!1,optionLabel:{number:\"数值\",number_integer:\"整数\",number_decimal:\"小数\",bw:\"介于\",nb:\"不介于\",eq:\"等于\",ne:\"不等于\",gt:\"大于\",lt:\"小于\",gte:\"大于等于\",lte:\"小于等于\",include:\"包括\",exclude:\"不包括\",equal:\"等于\",bf:\"早于\",nbf:\"不早于\",af:\"晚于\",naf:\"不晚于\",card:\"身份证号码\",phone:\"手机号\"},optionLabel_en:{number:\"numeric\",number_integer:\"integer\",number_decimal:\"decimal\",bw:\"between\",nb:\"not between\",eq:\"equal to\",ne:\"not equal to\",gt:\"greater\",lt:\"less than\",gte:\"greater or equal to\",lte:\"less than or equal to\",include:\"include\",exclude:\"not include\",equal:\"equal to\",bf:\"earlier than\",nbf:\"not earlier than\",af:\"later than\",naf:\"not later than\",card:\"identification number\",phone:\"phone number\"},createDialog:function(){let e=X(),t=e.dataVerification,n=e.toolbar,a=e.button;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-dataVerification-dialog\").remove();let l=`<div class=\"box\">\\n                            <div class=\"box-item\" style=\"border-top:1px solid #E1E4E8;\">\\n                                <div class=\"box-item-title\">${t.cellRange}</div>\\n                                <div id=\"data-verification-range\" class=\"range\">\\n                                    <input class=\"formulaInputFocus\" spellcheck=\"false\">\\n                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${t.selectCellRange}\"></i>\\n                                </div>\\n                            </div>\\n                            <div class=\"box-item\">\\n                                <div class=\"box-item-title\">${t.verificationCondition}</div>\\n                                <select id=\"data-verification-type-select\">\\n                                    <option value=\"dropdown\">${t.dropdown}</option>\\n                                    <option value=\"checkbox\">${t.checkbox}</option>\\n                                    <option value=\"number\">${t.number}</option>\\n                                    <option value=\"number_integer\">${t.number_integer}</option>\\n                                    <option value=\"number_decimal\">${t.number_decimal}</option>\\n                                    <option value=\"text_content\">${t.text_content}</option>\\n                                    <option value=\"text_length\">${t.text_length}</option>\\n                                    <option value=\"date\">${t.date}</option>\\n                                    <option value=\"validity\">${t.validity}</option>\\n                                </select>\\n                                <div class=\"show-box\">\\n                                    <div class=\"show-box-item show-box-item-dropdown\">\\n                                        <div class=\"range\">\\n                                            <input class=\"formulaInputFocus data-verification-value1\" placeholder=\"${t.placeholder1}\" spellcheck=\"false\">\\n                                            <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${t.selectCellRange}\"></i>\\n                                        </div>\\n                                        <div class=\"multi\">\\n                                            <input type=\"checkbox\" id=\"data-verification-multi\" class=\"data-verification-multi\">\\n                                            <label for=\"data-verification-multi\">${t.allowMultiSelect}</label>\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"show-box-item show-box-item-checkbox\">\\n                                        <div class=\"check-box\">\\n                                            <span>${t.selected} ——</span>\\n                                            <input type=\"text\" class=\"data-verification-value1\" placeholder=\"${t.placeholder2}\">\\n                                        </div>\\n                                        <div class=\"check-box\">\\n                                            <span>${t.notSelected} ——</span>\\n                                            <input type=\"text\" class=\"data-verification-value2\" placeholder=\"${t.placeholder2}\">\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"show-box-item show-box-item-number\">\\n                                        <select id=\"data-verification-number-select\">\\n                                            <option value=\"bw\">${t.between}</option>\\n                                            <option value=\"nb\">${t.notBetween}</option>\\n                                            <option value=\"eq\">${t.equal}</option>\\n                                            <option value=\"ne\">${t.notEqualTo}</option>\\n                                            <option value=\"gt\">${t.moreThanThe}</option>\\n                                            <option value=\"lt\">${t.lessThan}</option>\\n                                            <option value=\"gte\">${t.greaterOrEqualTo}</option>\\n                                            <option value=\"lte\">${t.lessThanOrEqualTo}</option>\\n                                        </select>\\n                                        <div class=\"input input1\">\\n                                            <input type=\"number\" class=\"data-verification-value1\" placeholder=\"1\">\\n                                            <span>-</span>\\n                                            <input type=\"number\" class=\"data-verification-value2\" placeholder=\"100\">\\n                                        </div>\\n                                        <div class=\"input input2\">\\n                                            <input type=\"number\" class=\"data-verification-value1\" placeholder=\"${t.placeholder3}\">\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"show-box-item show-box-item-text\">\\n                                        <select id=\"data-verification-text-select\">\\n                                            <option value=\"include\">${t.include}</option>\\n                                            <option value=\"exclude\">${t.exclude}</option>\\n                                            <option value=\"equal\">${t.equal}</option>\\n                                        </select>\\n                                        <div class=\"input input2\">\\n                                            <input type=\"text\" class=\"data-verification-value1\" placeholder=\"${t.placeholder4}\"/>\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"show-box-item show-box-item-textLength\">\\n                                        <select id=\"data-verification-textLength-select\">\\n                                            <option value=\"bw\">${t.between}</option>\\n                                            <option value=\"nb\">${t.notBetween}</option>\\n                                            <option value=\"eq\">${t.equal}</option>\\n                                            <option value=\"ne\">${t.notEqualTo}</option>\\n                                            <option value=\"gt\">${t.moreThanThe}</option>\\n                                            <option value=\"lt\">${t.lessThan}</option>\\n                                            <option value=\"gte\">${t.greaterOrEqualTo}</option>\\n                                            <option value=\"lte\">${t.lessThanOrEqualTo}</option>\\n                                        </select>\\n                                        <div class=\"input input1\">\\n                                            <input type=\"number\" class=\"data-verification-value1\" placeholder=\"1\">\\n                                            <span>-</span>\\n                                            <input type=\"number\" class=\"data-verification-value2\" placeholder=\"100\">\\n                                        </div>\\n                                        <div class=\"input input2\">\\n                                            <input type=\"number\" class=\"data-verification-value1\" placeholder=\"${t.placeholder3}\">\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"show-box-item show-box-item-date\">\\n                                        <select id=\"data-verification-date-select\">\\n                                            <option value=\"bw\">${t.between}</option>\\n                                            <option value=\"nb\">${t.notBetween}</option>\\n                                            <option value=\"eq\">${t.equal}</option>\\n                                            <option value=\"ne\">${t.notEqualTo}</option>\\n                                            <option value=\"bf\">${t.earlierThan}</option>\\n                                            <option value=\"nbf\">${t.noEarlierThan}</option>\\n                                            <option value=\"af\">${t.laterThan}</option>\\n                                            <option value=\"naf\">${t.noLaterThan}</option>\\n                                        </select>\\n                                        <div class=\"input input1\">\\n                                            <input type=\"date\" class=\"data-verification-value1\" placeholder=\"2020/9/10\">\\n                                            <span>-</span>\\n                                            <input type=\"date\" class=\"data-verification-value2\" placeholder=\"2020/9/10\">\\n                                        </div>\\n                                        <div class=\"input input2\">\\n                                            <input type=\"date\" class=\"data-verification-value1\" placeholder=\"2020/9/10\">\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"show-box-item show-box-item-validity\">\\n                                        <select id=\"data-verification-validity-select\">\\n                                            <option value=\"card\">${t.identificationNumber}</option>\\n                                            <option value=\"phone\">${t.phoneNumber}</option>\\n                                        </select>\\n                                    </div>\\n                                </div>\\n                            </div>\\n                            <div class=\"box-item\">\\n                                <div class=\"check\">\\n                                    <input type=\"checkbox\" id=\"data-verification-remote\" class=\"data-verification-remote\">\\n                                    <label for=\"data-verification-remote\">${t.remote}</label>\\n                                </div>\\n                                <div class=\"check\">\\n                                    <input type=\"checkbox\" id=\"data-verification-prohibitInput\">\\n                                    <label for=\"data-verification-prohibitInput\">${t.prohibitInput}</label>\\n                                </div>\\n                                <div class=\"check\">\\n                                    <input type=\"checkbox\" id=\"data-verification-hint-show\">\\n                                    <label for=\"data-verification-hint-show\">${t.hintShow}</label>\\n                                </div>\\n                                <div class=\"data-verification-hint-text\">\\n                                    <input type=\"text\" placeholder=\"${t.placeholder5}\">\\n                                </div>\\n                            </div>\\n                        </div>`;$(\"body\").append(nd(kt,{id:\"luckysheet-dataVerification-dialog\",addclass:\"luckysheet-dataVerification-dialog\",title:n.dataVerification,content:l,botton:`<button id=\"luckysheet-dataVerification-dialog-confirm\" class=\"btn btn-primary\">${a.confirm}</button>\\n                        <button id=\"luckysheet-dataVerification-dialog-delete\" class=\"btn btn-default\">${t.deleteVerification}</button>\\n                        <button class=\"btn btn-default luckysheet-model-close-btn\">${a.cancel}</button>`,style:\"z-index:100003\"}));let r=$(\"#luckysheet-dataVerification-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",350).end(),o=r.outerHeight(),i=r.outerWidth(),s=$(window).width(),c=$(window).height(),u=$(document).scrollLeft(),d=$(document).scrollTop();$(\"#luckysheet-dataVerification-dialog\").css({left:(s+u-i)/2,top:(c+d-o)/3}).show(),this.dataAllocation()},init:function(){let e=this,n=X().dataVerification;$(document).off(\"click.dropdownBtn\").on(\"click.dropdownBtn\",\"#luckysheet-dataVerification-dropdown-btn\",(function(t){e.dropdownListShow(),t.stopPropagation()})),$(document).off(\"click.dropdownListItem\").on(\"click.dropdownListItem\",\"#luckysheet-dataVerification-dropdown-List .dropdown-List-item\",(function(e){var n=$(this);let a=e.target.innerText;n.hasClass(\"multi\")?(n.toggleClass(\"checked\"),a=$.map($(\"#luckysheet-dataVerification-dropdown-List\").children().filter(\".checked\"),(function(e){return e.innerText})).join(\",\")):$(\"#luckysheet-dataVerification-dropdown-List\").hide();let l=t.luckysheet_select_save[t.luckysheet_select_save.length-1],r=l.row_focus,o=l.column_focus;$(\"#luckysheet-rich-text-editor\").text(a),wi.updatecell(r,o),e.stopPropagation()})),$(document).off(\"click.dvRange\").on(\"click.dvRange\",\"#data-verification-range .fa-table\",(function(n){$(\"#luckysheet-dataVerification-dialog\").hide();let a=$(this).siblings(\"input\").val().trim();e.rangeDialog(\"0\",a),e.selectRange=[];let l=e.getRangeByTxt(a);if(wi.rangetosheet=t.currentSheetIndex,l[0].sheetIndex!=t.currentSheetIndex&&ki.changeSheetExec(l[0].sheetIndex),l.length>0)for(let n=0;n<l.length;n++){let a=l[n].row[0],r=l[n].row[1],o=l[n].column[0],i=l[n].column[1],s=t.visibledatarow[r],c=a-1==-1?0:t.visibledatarow[a-1],u=t.visibledatacolumn[i],d=o-1==-1?0:t.visibledatacolumn[o-1];e.selectRange.push({left:d,width:u-d-1,top:c,height:s-c-1,left_move:d,width_move:u-d-1,top_move:c,height_move:s-c-1,row:[a,r],column:[o,i],row_focus:a,column_focus:o})}Vu(e.selectRange)})),$(document).off(\"click.dvRange2\").on(\"click.dvRange2\",\"#luckysheet-dataVerification-dialog .show-box-item-dropdown .range .fa-table\",(function(n){$(\"#luckysheet-dataVerification-dialog\").hide();let a=$(this).siblings(\"input\").val().trim();e.rangeDialog(\"1\",a),e.selectRange=[];let l=e.getRangeByTxt(a);if(wi.rangetosheet=t.currentSheetIndex,l[0].sheetIndex!=t.currentSheetIndex&&ki.changeSheetExec(l[0].sheetIndex),l.length>0)for(let n=0;n<l.length;n++){let a=l[n].row[0],r=l[n].row[1],o=l[n].column[0],i=l[n].column[1],s=t.visibledatarow[r],c=a-1==-1?0:t.visibledatarow[a-1],u=t.visibledatacolumn[i],d=o-1==-1?0:t.visibledatacolumn[o-1];e.selectRange.push({left:d,width:u-d-1,top:c,height:s-c-1,left_move:d,width_move:u-d-1,top_move:c,height_move:s-c-1,row:[a,r],column:[o,i],row_focus:a,column_focus:o})}Vu(e.selectRange)})),$(document).off(\"click.dvRangeConfirm\").on(\"click.dvRangeConfirm\",\"#luckysheet-dataVerificationRange-dialog-confirm\",(function(n){let a=$(this).attr(\"data-source\"),l=$(this).parents(\"#luckysheet-dataVerificationRange-dialog\").find(\"input\").val();e.getRangeByTxt(l).length>1?vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',\"不能对多重选择区域执行此操作，请选择单个区域，然后再试\"):(\"0\"==a?$(\"#luckysheet-dataVerification-dialog #data-verification-range input\").val(l):\"1\"==a&&$(\"#luckysheet-dataVerification-dialog .show-box-item-dropdown .range input\").val(l),$(\"#luckysheet-dataVerificationRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-dataVerification-dialog\").show(),null!=wi.rangetosheet&&wi.rangetosheet!=t.currentSheetIndex&&(ki.changeSheetExec(wi.rangetosheet),wi.rangetosheet=null),Vu([]))})),$(document).off(\"click.dvRangeClose\").on(\"click.dvRangeClose\",\"#luckysheet-dataVerificationRange-dialog-close\",(function(e){$(\"#luckysheet-dataVerificationRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-dataVerification-dialog\").show(),null!=wi.rangetosheet&&wi.rangetosheet!=t.currentSheetIndex&&(ki.changeSheetExec(wi.rangetosheet),wi.rangetosheet=null),Vu([])})),$(document).on(\"click\",\"#luckysheet-dataVerificationRange-dialog .luckysheet-modal-dialog-title-close\",(function(e){$(\"#luckysheet-dataVerificationRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-dataVerification-dialog\").show(),null!=wi.rangetosheet&&wi.rangetosheet!=t.currentSheetIndex&&(ki.changeSheetExec(wi.rangetosheet),wi.rangetosheet=null),Vu([])})),$(document).off(\"change.typeSelect\").on(\"change.typeSelect\",\"#data-verification-type-select\",(function(t){$(\"#luckysheet-dataVerification-dialog .show-box .show-box-item\").hide();let n=this.value,a=e.curItem;if(\"dropdown\"==n){$(\"#luckysheet-dataVerification-dialog .show-box .show-box-item-dropdown\").show();let e=\"\";n==a.type&&(e=a.value1),$(\"#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1\").val(e),$(\"#luckysheet-dataVerification-dialog #data-verification-multi\").prop(\"checked\",!!a.type2)}else if(\"checkbox\"==n){$(\"#luckysheet-dataVerification-dialog .show-box .show-box-item-checkbox\").show();let e=\"\",t=\"\";n==a.type&&(e=a.value1,t=a.value2),$(\"#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1\").val(e),$(\"#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2\").val(t)}else if(\"number\"==n||\"number_integer\"==n||\"number_decimal\"==n){$(\"#luckysheet-dataVerification-dialog .show-box-item-number\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input\").hide();let e=\"bw\",t=\"\",n=\"\";(\"number\"==a.type||\"number_integer\"==a.type||\"number_decimal\"==a.type)&&(e=a.type2,t=a.value1,n=a.value2),$(\"#luckysheet-dataVerification-dialog #data-verification-number-select\").val(e),\"bw\"==e||\"nb\"==e?$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input2\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value1\").val(t),$(\"#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value2\").val(n)}else if(\"text_content\"==n){$(\"#luckysheet-dataVerification-dialog .show-box-item-text\").show();let e=\"include\",t=\"\";n==a.type&&(e=a.type2,t=a.value1),$(\"#luckysheet-dataVerification-dialog #data-verification-text-select\").val(e),$(\"#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1\").val(t)}else if(\"text_length\"==n){$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input\").hide();let e=\"bw\",t=\"\",l=\"\";n==a.type&&(e=a.type2,t=a.value1,l=a.value2),$(\"#luckysheet-dataVerification-dialog #data-verification-textLength-select\").val(e),\"bw\"==e||\"nb\"==e?$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input2\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value1\").val(t),$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value2\").val(l)}else if(\"date\"==n){$(\"#luckysheet-dataVerification-dialog .show-box-item-date\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input\").hide();let e=\"bw\",t=\"\",l=\"\";n==a.type&&(e=a.type2,t=a.value1,l=a.value2),$(\"#luckysheet-dataVerification-dialog #data-verification-date-select\").val(e),\"bw\"==e||\"nb\"==e?$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input2\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value1\").val(t),$(\"#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value2\").val(l)}else if(\"validity\"==n){$(\"#luckysheet-dataVerification-dialog .show-box .show-box-item-validity\").show();let e=\"card\";n==a.type&&(e=a.type2),$(\"#luckysheet-dataVerification-dialog #data-verification-validity-select\").val(e)}})),$(document).off(\"change.numberSelect\").on(\"change.numberSelect\",\"#data-verification-number-select\",(function(e){$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input\").hide();let t=this.value;\"bw\"==t||\"nb\"==t?$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input2\").show()})),$(document).off(\"change.textLengthSelect\").on(\"change.textLengthSelect\",\"#data-verification-textLength-select\",(function(e){$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input\").hide();let t=this.value;\"bw\"==t||\"nb\"==t?$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input2\").show()})),$(document).off(\"change.dateSelect\").on(\"change.dateSelect\",\"#data-verification-date-select\",(function(e){$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input\").hide();let t=this.value;\"bw\"==t||\"nb\"==t?$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input2\").show()})),$(document).off(\"change.hintShow\").on(\"change.hintShow\",\"#data-verification-hint-show\",(function(e){this.checked?$(\"#luckysheet-dataVerification-dialog .data-verification-hint-text\").show():$(\"#luckysheet-dataVerification-dialog .data-verification-hint-text\").hide()})),$(document).off(\"click.dvSaveConfirm\").on(\"click.dvSaveConfirm\",\"#luckysheet-dataVerification-dialog-confirm\",(function(a){let l=$(\"#luckysheet-dataVerification-dialog #data-verification-range input\").val().trim(),r=e.getRangeByTxt(l);if(0==r.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.selectCellRange2);let o=r[r.length-1].row[0],i=r[r.length-1].row[1],s=r[r.length-1].column[0],c=r[r.length-1].column[1],u=mn.deepCopyFlowData(t.flowdata);o<0&&(o=0),i>u.length-1&&(i=u.length-1),s<0&&(s=0),c>u[0].length-1&&(c=u[0].length-1);let d=$(\"#luckysheet-dataVerification-dialog #data-verification-type-select\").val(),h=null,f=\"\",m=\"\";if(\"dropdown\"==d){if(f=$(\"#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1\").val().trim(),0==f.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo1);h=$(\"#luckysheet-dataVerification-dialog #data-verification-multi\").is(\":checked\")}else if(\"checkbox\"==d){if(f=$(\"#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1\").val().trim(),m=$(\"#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2\").val().trim(),0==f.length||0==m.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo2)}else if(\"number\"==d||\"number_integer\"==d||\"number_decimal\"==d){if(h=$(\"#luckysheet-dataVerification-dialog #data-verification-number-select\").val(),f=$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input:visible .data-verification-value1\").val().trim(),!C(f))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo3);if(\"bw\"==h||\"nb\"==h){if(m=$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input:visible .data-verification-value2\").val().trim(),!C(m))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo3);if(Number(m)<Number(f))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo4)}}else if(\"text_content\"==d){if(h=$(\"#luckysheet-dataVerification-dialog #data-verification-text-select\").val(),f=$(\"#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1\").val().trim(),0==f.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo5)}else if(\"text_length\"==d){if(h=$(\"#luckysheet-dataVerification-dialog #data-verification-textLength-select\").val(),f=$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input:visible .data-verification-value1\").val().trim(),!C(f))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo3);if(!Number.isInteger(Number(f))||Number(f)<0)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.textlengthInteger);if(\"bw\"==h||\"nb\"==h){if(m=$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input:visible .data-verification-value2\").val().trim(),!C(m))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo3);if(!Number.isInteger(Number(m))||Number(m)<0)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.textlengthInteger);if(Number(m)<Number(f))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo4)}}else if(\"date\"==d){if(h=$(\"#luckysheet-dataVerification-dialog #data-verification-date-select\").val(),f=$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input:visible .data-verification-value1\").val().trim(),!pa(f))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo6);if(\"bw\"==h||\"nb\"==h){if(m=$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input:visible .data-verification-value2\").val().trim(),!pa(m))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo6);if(ga(f,m)>0)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo7)}}else\"validity\"==d&&(h=$(\"#luckysheet-dataVerification-dialog #data-verification-validity-select\").val());let p=$(\"#luckysheet-dataVerification-dialog #data-verification-remote\").is(\":checked\"),g=$(\"#luckysheet-dataVerification-dialog #data-verification-prohibitInput\").is(\":checked\"),y=$(\"#luckysheet-dataVerification-dialog #data-verification-hint-show\").is(\":checked\"),v=\"\";y&&(v=$(\"#luckysheet-dataVerification-dialog .data-verification-hint-text input\").val().trim());let b={type:d,type2:h,value1:f,value2:m,checked:!1,remote:p,prohibitInput:g,hintShow:y,hintText:v},k=$.extend(!0,{},e.dataVerification),w=$.extend(!0,{},e.dataVerification);for(let e=o;e<=i;e++)for(let t=s;t<=c;t++)w[e+\"_\"+t]=b,\"checkbox\"==d&&Na(e,t,u,b.value2);\"checkbox\"==d?e.refOfCheckbox(k,w,t.currentSheetIndex,u,r[r.length-1]):e.ref(k,w,t.currentSheetIndex),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-dataVerification-dialog\").hide()})),$(document).off(\"click.delete\").on(\"click.delete\",\"#luckysheet-dataVerification-dialog-delete\",(function(a){let l=$(\"#luckysheet-dataVerification-dialog #data-verification-range input\").val().trim(),r=e.getRangeByTxt(l);if(0==r.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.selectCellRange2);let o=$.extend(!0,{},e.dataVerification),i=$.extend(!0,{},e.dataVerification),s=r[r.length-1].row[0],c=r[r.length-1].row[1],u=r[r.length-1].column[0],d=r[r.length-1].column[1];for(let e=s;e<=c;e++)for(let t=u;t<=d;t++)delete i[e+\"_\"+t];e.ref(o,i,t.currentSheetIndex),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-dataVerification-dialog\").hide()})),$(document).on(\"click\",\"#luckysheet-info .luckysheet-modal-dialog-title-close, #luckysheet-info .luckysheet-model-close-btn\",(function(e){$(this).parents(\"#luckysheet-info\").hide(),$(\"#luckysheet-dataVerification-dialog\").is(\":visible\")&&$(\"#luckysheet-modal-dialog-mask\").show(),e.stopPropagation()}))},dataAllocation:function(){let e=this,n=t.luckysheet_select_save[t.luckysheet_select_save.length-1],a=Nt(t.currentSheetIndex,n,t.currentSheetIndex);$(\"#luckysheet-dataVerification-dialog #data-verification-range input\").val(a);let l=n.row_focus||n.row[0],r=n.column_focus||n.column[0],o=$.extend(!0,{},e.dataVerification)[l+\"_\"+r];null==o&&(o=$.extend(!0,{},e.defaultItem)),e.curItem=o,$(\"#luckysheet-dataVerification-dialog #data-verification-type-select\").val(o.type),$(\"#luckysheet-dataVerification-dialog .show-box .show-box-item\").hide(),\"dropdown\"==o.type?($(\"#luckysheet-dataVerification-dialog .show-box .show-box-item-dropdown\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1\").val(o.value1),$(\"#luckysheet-dataVerification-dialog #data-verification-multi\").prop(\"checked\",!!o.type2)):\"checkbox\"==o.type?($(\"#luckysheet-dataVerification-dialog .show-box .show-box-item-checkbox\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1\").val(o.value1),$(\"#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2\").val(o.value2)):\"number\"==o.type||\"number_integer\"==o.type||\"number_decimal\"==o.type?($(\"#luckysheet-dataVerification-dialog .show-box-item-number\").show(),$(\"#luckysheet-dataVerification-dialog #data-verification-number-select\").val(o.type2),$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input\").hide(),\"bw\"==o.type2||\"nb\"==o.type2?$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-number .input2\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value1\").val(o.value1),$(\"#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value2\").val(o.value2)):\"text_content\"==o.type?($(\"#luckysheet-dataVerification-dialog .show-box-item-text\").show(),$(\"#luckysheet-dataVerification-dialog #data-verification-text-select\").val(o.type2),$(\"#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1\").val(o.value1)):\"text_length\"==o.type?($(\"#luckysheet-dataVerification-dialog .show-box-item-textLength\").show(),$(\"#luckysheet-dataVerification-dialog #data-verification-textLength-select\").val(o.type2),$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input\").hide(),\"bw\"==o.type2||\"nb\"==o.type2?$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .input2\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value1\").val(o.value1),$(\"#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value2\").val(o.value2)):\"date\"==o.type?($(\"#luckysheet-dataVerification-dialog .show-box-item-date\").show(),$(\"#luckysheet-dataVerification-dialog #data-verification-date-select\").val(o.type2),$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input\").hide(),\"bw\"==o.type2||\"nb\"==o.type2?$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input1\").show():$(\"#luckysheet-dataVerification-dialog .show-box-item-date .input2\").show(),$(\"#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value1\").val(o.value1),$(\"#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value2\").val(o.value2)):\"validity\"==o.type&&($(\"#luckysheet-dataVerification-dialog .show-box .show-box-item-validity\").show(),$(\"#luckysheet-dataVerification-dialog #data-verification-validity-select\").val(o.type2)),$(\"#luckysheet-dataVerification-dialog #data-verification-remote\").prop(\"checked\",o.remote),$(\"#luckysheet-dataVerification-dialog #data-verification-prohibitInput\").prop(\"checked\",o.prohibitInput),$(\"#luckysheet-dataVerification-dialog #data-verification-hint-show\").prop(\"checked\",o.hintShow),o.hintShow?$(\"#luckysheet-dataVerification-dialog .data-verification-hint-text\").show():$(\"#luckysheet-dataVerification-dialog .data-verification-hint-text\").hide(),$(\"#luckysheet-dataVerification-dialog .data-verification-hint-text input\").val(o.hintText)},rangeDialog:function(e,t){let n=X(),a=n.dataVerification,l=n.button;$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-dataVerificationRange-dialog\").remove(),$(\"body\").append(nd(kt,{id:\"luckysheet-dataVerificationRange-dialog\",addclass:\"luckysheet-dataVerificationRange-dialog\",title:a.selectCellRange,content:`<input readonly=\"readonly\" placeholder=\"${a.selectCellRange2}\" value=\"${t}\"/>`,botton:`<button id=\"luckysheet-dataVerificationRange-dialog-confirm\" class=\"btn btn-primary\" data-source=\"${e}\">${l.confirm}</button>\\n                        <button id=\"luckysheet-dataVerificationRange-dialog-close\" class=\"btn btn-default\">${l.close}</button>`,style:\"z-index:100003\"}));let r=$(\"#luckysheet-dataVerificationRange-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),o=r.outerHeight(),i=r.outerWidth(),s=$(window).width(),c=$(window).height(),u=$(document).scrollLeft(),d=$(document).scrollTop();$(\"#luckysheet-dataVerificationRange-dialog\").css({left:(s+u-i)/2,top:(c+d-o)/3}).show()},getTxtByRange:function(e){if(e.length>0){let n=[];for(let a=0;a<e.length;a++){let l=e[a].row[0],r=e[a].row[1],o=e[a].column[0],i=e[a].column[1];n.push(Nt(t.currentSheetIndex,{row:[l,r],column:[o,i]},t.currentSheetIndex))}return n.join(\",\")}},getRangeByTxt:function(e){let t=[];if(-1!=e.indexOf(\",\")){let n=e.split(\",\");for(let e=0;e<n.length;e++){if(!wi.iscelldata(n[e])){t=[];break}t.push(wi.getcellrange(n[e]))}}else wi.iscelldata(e)&&t.push(wi.getcellrange(e));return t},cellFocus:function(e,n,a){$(\"#luckysheet-dataVerification-dropdown-btn\").hide(),$(\"#luckysheet-dataVerification-showHintBox\").hide();let l=this;if(null==l.dataVerification||null==l.dataVerification[e+\"_\"+n])return void $(\"#luckysheet-dataVerification-dropdown-List\").hide();let r=t.visibledatarow[e],o=0==e?0:t.visibledatarow[e-1],i=t.visibledatacolumn[n],s=0==n?0:t.visibledatacolumn[n-1],c=Yu.mergeborer(t.flowdata,e,n);c&&(r=c.row[1],o=c.row[0],i=c.column[1],s=c.column[0]);let u=l.dataVerification[e+\"_\"+n];if(a&&\"checkbox\"==u.type)return void l.checkboxChange(e,n);if(\"dropdown\"==u.type?($(\"#luckysheet-dataVerification-dropdown-btn\").show().css({\"max-width\":i-s,\"max-height\":r-o,left:i-20,top:o+(r-o-20)/2}),$(\"#luckysheet-dataVerification-dropdown-List\").is(\":visible\")&&$(\"#luckysheet-dataVerification-dropdown-List\").prop(\"data-index\")!=e+\"_\"+n&&$(\"#luckysheet-dataVerification-dropdown-List\").hide()):$(\"#luckysheet-dataVerification-dropdown-List\").hide(),u.hintShow){let e;return e=\"en\"==t.lang?'<span style=\"color:#f5a623;\">Hint: </span>':'<span style=\"color:#f5a623;\">提示：</span>',e+=l.getHintText(u),void $(\"#luckysheet-dataVerification-showHintBox\").html(e).show().css({left:s,top:r})}let d=Vn(e,n,null);if(!_(d)&&!l.validateCellData(d,u)){let e;e=\"en\"==t.lang?'<span style=\"color:#f72626;\">Failure: </span>':'<span style=\"color:#f72626;\">失效：</span>',e+=l.getFailureText(u),$(\"#luckysheet-dataVerification-showHintBox\").html(e).show().css({left:s,top:r})}},getHintText:function(e){let n=this,a=e.hintText||\"\";return 0==a.length&&(\"en\"==t.lang?\"dropdown\"==e.type?a+=\"please select an option in the drop-down list\":\"checkbox\"==e.type||(\"number\"==e.type||\"number_integer\"==e.type||\"number_decimal\"==e.type?(a+=\"please enter a \"+n.optionLabel_en[e.type]+\" \"+n.optionLabel_en[e.type2]+\" \"+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\" and \"+e.value2)):\"text_content\"==e.type?a+=\"please enter text \"+n.optionLabel_en[e.type2]+\" \"+e.value1:\"text_length\"==e.type?(a+=\"please enter text with length \"+n.optionLabel_en[e.type2]+\" \"+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\" and \"+e.value2)):\"date\"==e.type?(a+=\"please enter a date \"+n.optionLabel_en[e.type2]+\" \"+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\" and \"+e.value2)):\"validity\"==e.type&&(a+=\"please enter the correct \"+n.optionLabel_en[e.type2])):\"dropdown\"==e.type?a+=\"请选择下拉列表中的选项\":\"checkbox\"==e.type||(\"number\"==e.type||\"number_integer\"==e.type||\"number_decimal\"==e.type?(a+=\"请输入\"+n.optionLabel[e.type2]+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\"和\"+e.value2+\"之间\"),a+=\"的\"+n.optionLabel[e.type]):\"text_content\"==e.type?a+=\"请输入内容\"+n.optionLabel[e.type2]+e.value1+\"的文本\":\"text_length\"==e.type?(a+=\"请输入长度\"+n.optionLabel[e.type2]+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\"和\"+e.value2+\"之间\"),a+=\"的文本\"):\"date\"==e.type?(a+=\"请输入\"+n.optionLabel[e.type2]+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\"和\"+e.value2+\"之间\"),a+=\"的日期\"):\"validity\"==e.type&&(a+=\"请输入正确的\"+n.optionLabel[e.type2]))),a},getFailureText:function(e){let n=this,a=\"\";return\"en\"==t.lang?\"dropdown\"==e.type?a+=\"what you selected is not an option in the drop-down list\":\"checkbox\"==e.type||(\"number\"==e.type||\"number_integer\"==e.type||\"number_decimal\"==e.type?(a+=\"what you entered is not a \"+n.optionLabel_en[e.type]+\" \"+n.optionLabel_en[e.type2]+\" \"+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\" and \"+e.value2)):\"text_content\"==e.type?a+=\"what you entered is not text that \"+n.optionLabel_en[e.type2]+\" \"+e.value1:\"text_length\"==e.type?(a+=\"the text you entered is not length \"+n.optionLabel_en[e.type2]+\" \"+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\" and \"+e.value2)):\"date\"==e.type?(a+=\"the date you entered is not \"+n.optionLabel_en[e.type2]+\" \"+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\" and \"+e.value2)):\"validity\"==e.type&&(a+=\"what you entered is not a correct \"+n.optionLabel_en[e.type2])):\"dropdown\"==e.type?a+=\"你选择的不是下拉列表中的选项\":\"checkbox\"==e.type||(\"number\"==e.type||\"number_integer\"==e.type||\"number_decimal\"==e.type?(a+=\"你输入的不是\"+n.optionLabel[e.type2]+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\"和\"+e.value2+\"之间\"),a+=\"的\"+n.optionLabel[e.type]):\"text_content\"==e.type?a+=\"你输入的不是内容\"+n.optionLabel[e.type2]+e.value1+\"的文本\":\"text_length\"==e.type?(a+=\"你输入的不是长度\"+n.optionLabel[e.type2]+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\"和\"+e.value2+\"之间\"),a+=\"的文本\"):\"date\"==e.type?(a+=\"你输入的不是\"+n.optionLabel[e.type2]+e.value1,(\"bw\"==e.type2||\"nb\"==e.type2)&&(a+=\"和\"+e.value2+\"之间\"),a+=\"的日期\"):\"validity\"==e.type&&(a+=\"你输入的不是一个正确的\"+n.optionLabel[e.type2])),a},validateCellData:function(e,t){let n=this,a=t.type,l=t.type2,r=t.value1,o=t.value2;if(\"dropdown\"==a){let t=n.getDropdownList(r);if(l&&e)return e.split(\",\").every((function(e){return-1!==t.indexOf(e)}));let a=!1;for(let n=0;n<t.length;n++)if(t[n]==e){a=!0;break}return a}if(\"checkbox\"!=a)if(\"number\"==a||\"number_integer\"==a||\"number_decimal\"==a){if(!C(e)||(e=Number(e),\"number_integer\"==a&&e%1!=0)||\"number_decimal\"==a&&e%1==0||(r=Number(r),o=Number(o),\"bw\"==l&&(e<r||e>o))||\"nb\"==l&&e>=r&&e<=o||\"eq\"==l&&e!=r||\"ne\"==l&&e==r||\"gt\"==l&&e<=r||\"lt\"==l&&e>=r||\"gte\"==l&&e<r||\"lte\"==l&&e>r)return!1}else if(\"text_content\"==a){if(e=e.toString(),r=r.toString(),\"include\"==l&&-1==e.indexOf(r)||\"exclude\"==l&&e.indexOf(r)>-1||\"equal\"==l&&e!=r)return!1}else if(\"text_length\"==a){if(e=e.toString().length,r=Number(r),o=Number(o),\"bw\"==l&&(e<r||e>o)||\"nb\"==l&&e>=r&&e<=o||\"eq\"==l&&e!=r||\"ne\"==l&&e==r||\"gt\"==l&&e<=r||\"lt\"==l&&e>=r||\"gte\"==l&&e<r||\"lte\"==l&&e>r)return!1}else if(\"date\"==a){if(!pa(e)||\"bw\"==l&&(ga(e,r)<0||ga(e,o)>0)||\"nb\"==l&&ga(e,r)>=0&&ga(e,o)<=0||\"eq\"==l&&0!=ga(e,r)||\"ne\"==l&&0==ga(e,r)||\"bf\"==l&&ga(e,r)>=0||\"nbf\"==l&&ga(e,r)<0||\"af\"==l&&ga(e,r)<=0||\"naf\"==l&&ga(e,r)>0)return!1}else if(\"validity\"==a&&(\"card\"==l&&!function(e){if(!/^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$/.test(e))return!1;if(18==e.length){for(var t=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),n=new Array(1,0,10,9,8,7,6,5,4,3,2),a=0,l=0;l<17;l++)a+=e.substring(l,l+1)*t[l];var r=a%11,o=e.substring(17);return 2==r?\"X\"==o||\"x\"==o:o==n[r]}}(e)||\"phone\"==l&&!/^1[3456789]\\d{9}$/.test(e)))return!1;return!0},dropdownListShow:function(){$(\"#luckysheet-dataVerification-showHintBox\").hide();let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1],n=e.row_focus,a=e.column_focus,l=t.visibledatarow[n],r=0==n?0:t.visibledatarow[n-1],o=t.visibledatacolumn[a],i=0==a?0:t.visibledatacolumn[a-1],s=Yu.mergeborer(t.flowdata,n,a);s&&(l=s.row[1],r=s.row[0],o=s.column[1],i=s.column[0]);let c=this.dataVerification[n+\"_\"+a],u=this.getDropdownList(c.value1),d=\"\";if(\"dropdown\"===c.type&&c.type2){let e=Vn(n,a,null),t=_(e)?[]:e.split(\",\");u.forEach((e=>{d+=`<div class=\"dropdown-List-item  luckysheet-mousedown-cancel multi${-1!==t.indexOf(e)?\" checked\":\"\"}\">${e}</div>`}))}else u.forEach((e=>{d+=`<div class=\"dropdown-List-item luckysheet-mousedown-cancel\">${e}</div>`}));$(\"#luckysheet-dataVerification-dropdown-List\").html(d).prop(\"data-index\",n+\"_\"+a).show().css({width:o-i-1,left:i,top:l});let h=$(\"#luckysheet-dataVerification-dropdown-List\").outerHeight();l+h>$(\"#luckysheet-cell-main\")[0].scrollHeight-42-6&&$(\"#luckysheet-dataVerification-dropdown-List\").css({top:r-h})},getDropdownList:function(e){let n=[];if(wi.iscelldata(e)){let a=wi.getcellrange(e),l=t.luckysheetfile[Mt(a.sheetIndex)].data;for(let e=a.row[0];e<=a.row[1];e++)for(let t=a.column[0];t<=a.column[1];t++){if(null==l[e])continue;let a=l[e][t];if(null==a||null==a.v)continue;let r=a.m||a.v;n.includes(r)||n.push(r)}}else{let t=e.split(\",\");for(let e=0;e<t.length;e++){let a=t[e];0!=a.length&&(n.includes(a)||n.push(a))}}return n},checkboxChange:function(e,n){let a=this,l=$.extend(!0,{},a.dataVerification),r=$.extend(!0,{},a.dataVerification),o=r[e+\"_\"+n];o.checked=!o.checked;let i=o.value2;o.checked&&(i=o.value1);let s=mn.deepCopyFlowData(t.flowdata);Na(e,n,s,i),a.refOfCheckbox(l,r,t.currentSheetIndex,s,{row:[e,e],column:[n,n]})},ref:function(e,n,a){if(t.clearjfundo){t.jfundo.length=0;let l={type:\"updateDataVerification\"};l.sheetIndex=a,l.historyDataVerification=e,l.currentDataVerification=n,t.jfredo.push(l)}this.dataVerification=n,t.luckysheetfile[Mt(a)].dataVerification=n,yo.allowUpdate&&yo.saveParam(\"all\",a,n,{k:\"dataVerification\"}),setTimeout((function(){uo()}),1)},refOfCheckbox:function(e,n,a,l,r){if(t.clearjfundo){t.jfundo.length=0;let o={type:\"updateDataVerificationOfCheckbox\"};o.sheetIndex=a,o.historyDataVerification=e,o.currentDataVerification=n,o.data=t.flowdata,o.curData=l,o.range=r,t.jfredo.push(o)}this.dataVerification=n,t.luckysheetfile[Mt(a)].dataVerification=n,t.flowdata=l,mn.webWorkerFlowDataCache(t.flowdata),t.luckysheetfile[Mt(a)].data=t.flowdata,yo.allowUpdate&&(yo.saveParam(\"all\",a,n,{k:\"dataVerification\"}),yo.historyParam(t.flowdata,a,r)),setTimeout((function(){uo()}),1)}}}));function ul(e,n,a,l,r){if(r=null!=r?r:t.currentSheetIndex,\"row\"==e&&!Ql(r,\"insertRows\"))return;if(\"column\"==e&&!Ql(r,\"insertColumns\"))return;let o=Mt(r),i=t.luckysheetfile[o],s=$.extend(!0,[],i.data);a=Math.floor(a);let c=$.extend(!0,{},i.config);null==c.merge&&(c.merge={});let u={};for(let t in c.merge){let r=c.merge[t],o=r.r,i=r.c,s=r.rs,d=r.cs;\"row\"==e?n<o?u[o+a+\"_\"+i]={r:o+a,c:i,rs:s,cs:d}:n==o&&1!=s?\"lefttop\"==l?u[o+a+\"_\"+i]={r:o+a,c:i,rs:s,cs:d}:u[o+\"_\"+i]={r:o,c:i,rs:s+a,cs:d}:n<o+s-1?u[o+\"_\"+i]={r:o,c:i,rs:s+a,cs:d}:n==o+s-1&&\"lefttop\"==l?1==s?u[o+a+\"_\"+i]={r:o+a,c:i,rs:s,cs:d}:u[o+\"_\"+i]={r:o,c:i,rs:s+a,cs:d}:u[o+\"_\"+i]={r:o,c:i,rs:s,cs:d}:\"column\"==e&&(n<i?u[o+\"_\"+(i+a)]={r:o,c:i+a,rs:s,cs:d}:n==i&&1!=d?\"lefttop\"==l?u[o+\"_\"+(i+a)]={r:o,c:i+a,rs:s,cs:d}:u[o+\"_\"+i]={r:o,c:i,rs:s,cs:d+a}:n<i+d-1?u[o+\"_\"+i]={r:o,c:i,rs:s,cs:d+a}:n==i+d-1&&\"lefttop\"==l?1==d?u[o+\"_\"+(i+a)]={r:o,c:i+a,rs:s,cs:d}:u[o+\"_\"+i]={r:o,c:i,rs:s,cs:d+a}:u[o+\"_\"+i]={r:o,c:i,rs:s,cs:d})}c.merge=u;let d=i.calcChain,h=[];if(null!=d&&d.length>0)for(let t=0;t<d.length;t++){let r=$.extend(!0,{},d[t]),o=r.r,i=r.c,c=Hn(o,i,r.index);if(c)if(\"row\"==e){let e=\"=\"+wi.functionStrChange(c,\"add\",\"row\",l,n,a);s[o][i]&&s[o][i].f==c&&(s[o][i].f=e),\"lefttop\"==l?o>=n&&(r.r+=a):\"rightbottom\"==l&&o>n&&(r.r+=a),h.push(r)}else if(\"column\"==e){let e=\"=\"+wi.functionStrChange(c,\"add\",\"col\",l,n,a);s[o][i]&&s[o][i].f==c&&(s[o][i].f=e),\"lefttop\"==l?i>=n&&(r.c+=a):\"rightbottom\"==l&&i>n&&(r.c+=a),h.push(r)}}let f=i.filter_select,m=i.filter,p=null;if(null!=f&&\"{}\"!=JSON.stringify(f)){p={filter_select:null,filter:null};let t=f.row[0],r=f.row[1],o=f.column[0],i=f.column[1];if(\"row\"==e){if(t<n?(r==n&&\"lefttop\"==l||r>n)&&(r+=a):t==n?\"lefttop\"==l?(t+=a,r+=a):\"rightbottom\"==l&&r>n&&(r+=a):(t+=a,r+=a),null!=m){p.filter={};for(let e in m){let o=m[e].rowhidden,i={};for(let e in o)e=parseFloat(e),e<n?i[e]=0:e==n?\"lefttop\"==l?i[e+a]=0:\"rightbottom\"==l&&(i[e]=0):i[e+a]=0;p.filter[e]=$.extend(!0,{},m[e]),p.filter[e].rowhidden=i,p.filter[e].str=t,p.filter[e].edr=r}}}else if(\"column\"==e&&(o<n?(i==n&&\"lefttop\"==l||i>n)&&(i+=a):o==n?\"lefttop\"==l?(o+=a,i+=a):\"rightbottom\"==l&&i>n&&(i+=a):(o+=a,i+=a),null!=m)){p.filter={};for(let e in m){let t=m[e].cindex;(t==n&&\"lefttop\"==l||t>n)&&(t+=a),p.filter[t-o]=$.extend(!0,{},m[e]),p.filter[t-o].cindex=t,p.filter[t-o].stc=o,p.filter[t-o].edc=i}}p.filter_select={row:[t,r],column:[o,i]}}if(null!=p&&null!=p.filter){null==c.rowhidden&&(c.rowhidden={});for(let e in p.filter){let t=p.filter[e].rowhidden;for(let e in t)c.rowhidden[e]=0}}let g=i.luckysheet_conditionformat_save,y=[];if(null!=g&&g.length>0)for(let t=0;t<g.length;t++){let r=g[t].cellrange,o=[];for(let t=0;t<r.length;t++){let i=r[t].row[0],s=r[t].row[1],c=r[t].column[0],u=r[t].column[1];\"row\"==e?i<n?(s==n&&\"lefttop\"==l||s>n)&&(s+=a):i==n?\"lefttop\"==l?(i+=a,s+=a):\"rightbottom\"==l&&s>n&&(s+=a):(i+=a,s+=a):\"column\"==e&&(c<n?(u==n&&\"lefttop\"==l||u>n)&&(u+=a):c==n?\"lefttop\"==l?(c+=a,u+=a):\"rightbottom\"==l&&u>n&&(u+=a):(c+=a,u+=a)),o.push({row:[i,s],column:[c,u]})}let i=$.extend(!0,{},g[t]);i.cellrange=o,y.push(i)}let v=i.luckysheet_alternateformat_save,b=[];if(null!=v&&v.length>0)for(let t=0;t<v.length;t++){let r=v[t].cellrange.row[0],o=v[t].cellrange.row[1],i=v[t].cellrange.column[0],s=v[t].cellrange.column[1],c=$.extend(!0,{},v[t]);\"row\"==e?r<n?(o==n&&\"lefttop\"==l||o>n)&&(o+=a):r==n?\"lefttop\"==l?(r+=a,o+=a):\"rightbottom\"==l&&o>n&&(o+=a):(r+=a,o+=a):\"column\"==e&&(i<n?(s==n&&\"lefttop\"==l||s>n)&&(s+=a):i==n?\"lefttop\"==l?(i+=a,s+=a):\"rightbottom\"==l&&s>n&&(s+=a):(i+=a,s+=a)),c.cellrange={row:[r,o],column:[i,s]},b.push(c)}let k={freezenhorizontaldata:null,freezenverticaldata:null};if(null!=$l.freezenhorizontaldata&&\"row\"==e){let e=$l.freezenhorizontaldata[2],r=$l.freezenhorizontaldata[1]-1;(r==n&&\"lefttop\"==l||r>n)&&(r+=a);let o=t.visibledatarow[r]-2-e+t.columnHeaderHeight;k.freezenhorizontaldata=[t.visibledatarow[r],r+1,e,$l.cutVolumn(t.visibledatarow,r+1),o]}else k.freezenhorizontaldata=$l.freezenhorizontaldata;if(null!=$l.freezenverticaldata&&\"column\"==e){let e=$l.freezenverticaldata[2],r=$l.freezenverticaldata[1]-1;(r==n&&\"lefttop\"==l||r>n)&&(r+=a);let o=t.visibledatacolumn[r]-2-e+t.rowHeaderWidth;k.freezenverticaldata=[t.visibledatacolumn[r],r+1,e,$l.cutVolumn(t.visibledatacolumn,r+1),o]}else k.freezenverticaldata=$l.freezenverticaldata;let w=i.dataVerification,x={};if(null!=w)for(let t in w){let r=Number(t.split(\"_\")[0]),o=Number(t.split(\"_\")[1]),i=w[t];if(\"row\"==e)if(n<r)x[r+a+\"_\"+o]=i;else if(n==r)if(\"lefttop\"==l){x[r+a+\"_\"+o]=i;for(let e=0;e<a;e++)x[r+e+\"_\"+o]=i}else{x[r+\"_\"+o]=i;for(let e=0;e<a;e++)x[r+e+1+\"_\"+o]=i}else x[r+\"_\"+o]=i;else if(\"column\"==e)if(n<o)x[r+\"_\"+(o+a)]=i;else if(n==o)if(\"lefttop\"==l){x[r+\"_\"+(o+a)]=i;for(let e=0;e<a;e++)x[r+\"_\"+(o+e)]=i}else{x[r+\"_\"+o]=i;for(let e=0;e<a;e++)x[r+\"_\"+(o+e+1)]=i}else x[r+\"_\"+o]=i}let _,C=i.hyperlink,T={};if(null!=C)for(let t in C){let r=Number(t.split(\"_\")[0]),o=Number(t.split(\"_\")[1]),i=C[t];\"row\"==e?n<r||n==r&&\"lefttop\"==l?T[r+a+\"_\"+o]=i:T[r+\"_\"+o]=i:\"column\"==e&&(n<o||n==o&&\"lefttop\"==l?T[r+\"_\"+(o+a)]=i:T[r+\"_\"+o]=i)}if(\"row\"==e){if(_=\"r\",null!=c.rowlen){let e={};for(let t in c.rowlen)t=parseFloat(t),t<n?e[t]=c.rowlen[t]:t==n?\"lefttop\"==l?e[t+a]=c.rowlen[t]:\"rightbottom\"==l&&(e[t]=c.rowlen[t]):e[t+a]=c.rowlen[t];c.rowlen=e}if(null!=c.rowhidden){let e={};for(let t in c.rowhidden)t=parseFloat(t),t<n?e[t]=c.rowhidden[t]:t==n?\"lefttop\"==l?e[t+a]=c.rowhidden[t]:\"rightbottom\"==l&&(e[t]=c.rowhidden[t]):e[t+a]=c.rowhidden[t];c.rowhidden=e}let e=[];for(let t=0;t<s[0].length;t++)e.push(null);var S=[];if(c.borderInfo&&c.borderInfo.length>0){let e=[];for(let t=0;t<c.borderInfo.length;t++){let r=c.borderInfo[t].rangeType;if(\"range\"==r){let r=c.borderInfo[t].range,o=[];for(let e=0;e<r.length;e++){let t=r[e].row[0],i=r[e].row[1];\"lefttop\"==l?n<=t?(t+=a,i+=a):n<=i&&(i+=a):n<t?(t+=a,i+=a):n<i&&(i+=a),i>=t&&o.push({row:[t,i],column:r[e].column})}if(o.length>0){let n={rangeType:\"range\",borderType:c.borderInfo[t].borderType,style:c.borderInfo[t].style,color:c.borderInfo[t].color,range:o};e.push(n)}}else if(\"cell\"==r){let r=c.borderInfo[t].value.row_index;r===n&&S.push(JSON.parse(JSON.stringify(c.borderInfo[t]))),\"lefttop\"==l?n<=r&&(r+=a):n<r&&(r+=a),c.borderInfo[t].value.row_index=r,e.push(c.borderInfo[t])}}c.borderInfo=e}let t=[];for(let n=0;n<a;n++)if(t.push(JSON.stringify(e)),S.length){(I=JSON.parse(JSON.stringify(S))).forEach((e=>{\"rightbottom\"===l?e.value.row_index+=n+1:\"lefttop\"===l&&(e.value.row_index+=n)})),c.borderInfo.push(...I)}\"lefttop\"==l?0==n?new Function(\"d\",\"return d.unshift(\"+t.join(\",\")+\")\")(s):new Function(\"d\",\"return d.splice(\"+n+\", 0, \"+t.join(\",\")+\")\")(s):new Function(\"d\",\"return d.splice(\"+(n+1)+\", 0, \"+t.join(\",\")+\")\")(s)}else{if(_=\"c\",null!=c.columnlen){let e={};for(let t in c.columnlen)t=parseFloat(t),t<n?e[t]=c.columnlen[t]:t==n?\"lefttop\"==l?e[t+a]=c.columnlen[t]:\"rightbottom\"==l&&(e[t]=c.columnlen[t]):e[t+a]=c.columnlen[t];c.columnlen=e}if(null!=c.colhidden){let e={};for(let t in c.colhidden)t=parseFloat(t),t<n?e[t]=c.colhidden[t]:t==n?\"lefttop\"==l?e[t+a]=c.colhidden[t]:\"rightbottom\"==l&&(e[t]=c.colhidden[t]):e[t+a]=c.colhidden[t];c.colhidden=e}let e=[];for(let t=0;t<s.length;t++)e.push(null);S=[];if(c.borderInfo&&c.borderInfo.length>0){let e=[];for(let t=0;t<c.borderInfo.length;t++){let r=c.borderInfo[t].rangeType;if(\"range\"==r){let r=c.borderInfo[t].range,o=[];for(let e=0;e<r.length;e++){let t=r[e].column[0],i=r[e].column[1];\"lefttop\"==l?n<=t?(t+=a,i+=a):n<=i&&(i+=a):n<t?(t+=a,i+=a):n<i&&(i+=a),i>=t&&o.push({row:r[e].row,column:[t,i]})}if(o.length>0){let n={rangeType:\"range\",borderType:c.borderInfo[t].borderType,style:c.borderInfo[t].style,color:c.borderInfo[t].color,range:o};e.push(n)}}else if(\"cell\"==r){let r=c.borderInfo[t].value.col_index;r===n&&S.push(JSON.parse(JSON.stringify(c.borderInfo[t]))),\"lefttop\"==l?n<=r&&(r+=a):n<r&&(r+=a),c.borderInfo[t].value.col_index=r,e.push(c.borderInfo[t])}}c.borderInfo=e}if(S.length)for(let e=0;e<a;e++){var I;(I=JSON.parse(JSON.stringify(S))).forEach((t=>{\"rightbottom\"===l?t.value.col_index+=e+1:\"lefttop\"===l&&(t.value.col_index+=e)})),c.borderInfo.push(...I)}for(let t=0;t<s.length;t++){let r=s[t];for(let o=0;o<a;o++){let a=JSON.parse(JSON.stringify(e[t]));\"lefttop\"==l?0==n?r.unshift(a):r.splice(n,0,a):r.splice(n+1,0,a)}}}i.index==t.currentSheetIndex?oo(s,c,\"addRC\",{index:n,len:a,direction:l,rc:_,restore:!1},h,p,y,b,k,x,T):(i.data=s,i.config=c,i.calcChain=h,i.filter=p.filter,i.filter_select=p.filter_select,i.luckysheet_conditionformat_save=y,i.luckysheet_alternateformat_save=b,i.dataVerification=x,i.hyperlink=T);let R=null;if(R=\"row\"==e?\"lefttop\"==l?[{row:[n,n+a-1],column:[0,s[0].length-1]}]:[{row:[n+1,n+a],column:[0,s[0].length-1]}]:\"lefttop\"==l?[{row:[0,s.length-1],column:[n,n+a-1]}]:[{row:[0,s.length-1],column:[n+1,n+a]}],i.luckysheet_select_save=R,i.index==t.currentSheetIndex&&(t.luckysheet_select_save=R,Pu()),\"row\"==e){$(\"#luckysheet-cell-main\").scrollLeft();let e=$(\"#luckysheet-cell-main\").scrollTop(),n=$(\"#luckysheet-cell-main\").height(),l=($(\"#luckysheet-cell-main\").width(),t.visibledatarow[R[0].row[1]]),r=R[0].row[0]-1==-1?0:t.visibledatarow[R[0].row[0]-1];l-e-n+20>0?$(\"#luckysheet-scrollbar-y\").scrollTop(l-n+20):r-e-20<0&&$(\"#luckysheet-scrollbar-y\").scrollTop(r-20),a>30&&($(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide())}}function dl(e,n){let a=mn.deepCopyFlowData(t.flowdata),l=$.extend(!0,{},t.config);null==l.merge&&(l.merge={});let r=qn([],e,a[0].length);a=a.concat(r);for(let e=0;e<n.length;e++){let t=n[e].r,r=n[e].c,o=n[e].v;Na(t,r,a,o),null!=o&&null!=o.mc&&null!=o.mc.rs&&(l.merge[o.mc.r+\"_\"+o.mc.c]=$.extend(!0,{},o.mc))}t.flowdata=a,mn.webWorkerFlowDataCache(t.flowdata),t.luckysheetfile[Mt(t.currentSheetIndex)].data=a,t.config=l,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,co(t.flowdata.length,t.flowdata[0].length)}function hl(e,n,a,l){if(l=l||t.currentSheetIndex,\"row\"==e&&!Ql(l,\"deleteRows\"))return;if(\"column\"==e&&!Ql(l,\"deleteColumns\"))return;let r=Mt(l),o=t.luckysheetfile[r],i=$.extend(!0,[],o.data);if(n<0&&(n=0),a<0&&(a=0),\"row\"==e?(n>i.length-1&&(n=i.length-1),a>i.length-1&&(a=i.length-1)):(n>i[0].length-1&&(n=i[0].length-1),a>i[0].length-1&&(a=i[0].length-1)),n>a)return;let s=a-n+1,c=$.extend(!0,{},o.config);null==c.merge&&(c.merge={});let u={};for(let t in c.merge){let l=c.merge[t],r=l.r,o=l.c,i=l.rs,d=l.cs;\"row\"==e?r<n?r+i-1<n?u[r+\"_\"+o]={r:r,c:o,rs:i,cs:d}:r+i-1>=n&&r+i-1<a?u[r+\"_\"+o]={r:r,c:o,rs:n-r,cs:d}:r+i-1>=a&&(u[r+\"_\"+o]={r:r,c:o,rs:i-s,cs:d}):r>=n&&r<=a?r+i-1>a&&(u[n+\"_\"+o]={r:n,c:o,rs:r+i-1-a,cs:d}):r>a&&(u[r-s+\"_\"+o]={r:r-s,c:o,rs:i,cs:d}):\"column\"==e&&(o<n?o+d-1<n?u[r+\"_\"+o]={r:r,c:o,rs:i,cs:d}:o+d-1>=n&&o+d-1<a?u[r+\"_\"+o]={r:r,c:o,rs:i,cs:n-o}:o+d-1>=a&&(u[r+\"_\"+o]={r:r,c:o,rs:i,cs:d-s}):o>=n&&o<=a?o+d-1>a&&(u[r+\"_\"+n]={r:r,c:n,rs:i,cs:o+d-1-a}):o>a&&(u[r+\"_\"+(o-s)]={r:r,c:o-s,rs:i,cs:d}))}c.merge=u;let d=o.calcChain,h=[];if(null!=d&&d.length>0)for(let t=0;t<d.length;t++){let l=$.extend(!0,{},d[t]),r=l.r,o=l.c,c=Hn(r,o,l.index);if(c)if(\"row\"==e){if(r<n||r>a){let e=\"=\"+wi.functionStrChange(c,\"del\",\"row\",null,n,s);i[r][o]&&i[r][o].f==c&&(i[r][o].f=e),r>a&&(l.r=r-s),h.push(l)}}else if(\"column\"==e&&(o<n||o>a)){let e=\"=\"+wi.functionStrChange(c,\"del\",\"col\",null,n,s);i[r][o]&&i[r][o].f==c&&(i[r][o].f=e),o>a&&(l.c=o-s),h.push(l)}}let f=o.filter_select,m=o.filter,p=null;if(null!=f&&\"{}\"!=JSON.stringify(f)){p={filter_select:null,filter:null};let t=f.row[0],l=f.row[1],r=f.column[0],o=f.column[1];if(\"row\"==e){if(t>a?(t-=s,l-=s,p.filter_select={row:[t,l],column:[r,o]}):t<n&&(l<n||(l<=a?l=n-1:l-=s),p.filter_select={row:[t,l],column:[r,o]}),null!=p.filter_select&&null!=m)for(let e in m){let r=m[e].rowhidden,o={};for(let e in r)e<n?o[e]=0:e>a&&(o[e-s]=0);\"{}\"!=JSON.stringify(o)&&(null==p.filter&&(p.filter={}),p.filter[e]=$.extend(!0,{},m[e]),p.filter[e].rowhidden=o,p.filter[e].str=t,p.filter[e].edr=l)}}else if(\"column\"==e&&(r>a?(r-=s,o-=s,p.filter_select={row:[t,l],column:[r,o]}):r<n?(o<n||(o<=a?o=n-1:o-=s),p.filter_select={row:[t,l],column:[r,o]}):o>a&&(r=n,o-=s,p.filter_select={row:[t,l],column:[r,o]}),null!=p.filter_select&&null!=m))for(let e in m){let t=m[e].cindex;t<n?(null==p.filter&&(p.filter={}),p.filter[t-r]=$.extend(!0,{},m[e]),p.filter[t-r].edc=o):t>a&&(t-=s,null==p.filter&&(p.filter={}),p.filter[t-r]=$.extend(!0,{},m[e]),p.filter[t-r].cindex=t,p.filter[t-r].stc=r,p.filter[t-r].edc=o)}}if(null!=p&&null!=p.filter){null==c.rowhidden&&(c.rowhidden={});for(let e in p.filter){let t=p.filter[e].rowhidden;for(let e in t)c.rowhidden[e]=0}}let g=o.luckysheet_conditionformat_save,y=[];if(null!=g&&g.length>0)for(let t=0;t<g.length;t++){let l=g[t].cellrange,r=[];for(let t=0;t<l.length;t++){let o=l[t].row[0],i=l[t].row[1],c=l[t].column[0],u=l[t].column[1];\"row\"==e?o>=n&&i<=a||(o>a?(o-=s,i-=s):o<n?i<n||(i<=a?i=n-1:i-=s):i>a&&(o=n,i-=s),r.push({row:[o,i],column:[c,u]})):\"column\"==e&&(c>=n&&u<=a||(c>a?(c-=s,u-=s):c<n?u<n||(u<=a?u=n-1:u-=s):u>a&&(c=n,u-=s),r.push({row:[o,i],column:[c,u]})))}if(r.length>0){let e=$.extend(!0,{},g[t]);e.cellrange=r,y.push(e)}}let v=o.luckysheet_alternateformat_save,b=[];if(null!=v&&v.length>0)for(let t=0;t<v.length;t++){let l=v[t].cellrange.row[0],r=v[t].cellrange.row[1],o=v[t].cellrange.column[0],i=v[t].cellrange.column[1];if(\"row\"==e){if(!(l>=n&&r<=a)){let e=$.extend(!0,{},v[t]);l>a?(l-=s,r-=s):l<n?r<n||(r<=a?r=n-1:r-=s):r>a&&(l=n,r-=s),e.cellrange={row:[l,r],column:[o,i]},b.push(e)}}else if(\"column\"==e&&!(o>=n&&i<=a)){let e=$.extend(!0,{},v[t]);o>a?(o-=s,i-=s):o<n?i<n||(i<=a?i=n-1:i-=s):i>a&&(o=n,i-=s),e.cellrange={row:[l,r],column:[o,i]},b.push(e)}}let k={freezenhorizontaldata:null,freezenverticaldata:null};if(null!=$l.freezenhorizontaldata&&\"row\"==e){let e=$l.freezenhorizontaldata[2],l=Xn(t.visibledatarow,e);-1==l&&(l=0);let r=$l.freezenhorizontaldata[1]-1;r>=n&&(r<a?r=n-1:r-=s),r<l&&(r=l);let o=t.visibledatarow[r]-2-e+t.columnHeaderHeight;k.freezenhorizontaldata=[t.visibledatarow[r],r+1,e,$l.cutVolumn(t.visibledatarow,r+1),o]}else k.freezenhorizontaldata=$l.freezenhorizontaldata;if(null!=$l.freezenverticaldata&&\"column\"==e){let e=$l.freezenverticaldata[2],l=Xn(t.visibledatacolumn,e);-1==l&&(l=0);let r=$l.freezenverticaldata[1]-1;r>=n&&(r<a?r=n-1:r-=s),r<l&&(r=l);let o=t.visibledatacolumn[r]-2-e+t.rowHeaderWidth;k.freezenverticaldata=[t.visibledatacolumn[r],r+1,e,$l.cutVolumn(t.visibledatacolumn,r+1),o]}else k.freezenverticaldata=$l.freezenverticaldata;let w=o.dataVerification,x={};if(null!=w)for(let t in w){let l=Number(t.split(\"_\")[0]),r=Number(t.split(\"_\")[1]),o=w[t];\"row\"==e?l<n?x[l+\"_\"+r]=o:l>a&&(x[l-s+\"_\"+r]=o):\"column\"==e&&(r<n?x[l+\"_\"+r]=o:r>a&&(x[l+\"_\"+(r-s)]=o))}let _,C=o.hyperlink,T={};if(null!=C)for(let t in C){let l=Number(t.split(\"_\")[0]),r=Number(t.split(\"_\")[1]),o=C[t];\"row\"==e?l<n?T[l+\"_\"+r]=o:l>a&&(T[l-s+\"_\"+r]=o):\"column\"==e&&(r<n?T[l+\"_\"+r]=o:r>a&&(T[l+\"_\"+(r-s)]=o))}if(\"row\"==e){_=\"r\",null==c.rowlen&&(c.rowlen={});let e={};for(let t in c.rowlen)t<n?e[t]=c.rowlen[t]:t>a&&(e[t-s]=c.rowlen[t]);c.rowlen=e,null==c.rowhidden&&(c.rowhidden={});let t={};for(let e in c.rowhidden)e<n?t[e]=c.rowhidden[e]:e>a&&(t[e-s]=c.rowhidden[e]);if(c.rowhidden=t,c.borderInfo&&c.borderInfo.length>0){let e=[];for(let t=0;t<c.borderInfo.length;t++){let l=c.borderInfo[t].rangeType;if(\"range\"==l){let l=c.borderInfo[t].range,r=[];for(let e=0;e<l.length;e++){let t=l[e].row[0],o=l[e].row[1];for(let r=n;r<=a;r++)r<l[e].row[0]?(t-=1,o-=1):r<=l[e].row[1]&&(o-=1);o>=t&&r.push({row:[t,o],column:l[e].column})}if(r.length>0){let n={rangeType:\"range\",borderType:c.borderInfo[t].borderType,style:c.borderInfo[t].style,color:c.borderInfo[t].color,range:r};e.push(n)}}else if(\"cell\"==l){let l=c.borderInfo[t].value.row_index;l<n?e.push(c.borderInfo[t]):l>a&&(c.borderInfo[t].value.row_index=l-(a-n+1),e.push(c.borderInfo[t]))}}c.borderInfo=e}i.splice(n,s)}else{_=\"c\",null==c.columnlen&&(c.columnlen={});let e={};for(let t in c.columnlen)t<n?e[t]=c.columnlen[t]:t>a&&(e[t-s]=c.columnlen[t]);c.columnlen=e,null==c.colhidden&&(c.colhidden={});let t={};for(let e in c.colhidden)e<n?t[e]=c.colhidden[e]:e>a&&(t[e-s]=c.colhidden[e]);if(c.colhidden=t,c.borderInfo&&c.borderInfo.length>0){let e=[];for(let t=0;t<c.borderInfo.length;t++){let l=c.borderInfo[t].rangeType;if(\"range\"==l){let l=c.borderInfo[t].range,r=[];for(let e=0;e<l.length;e++){let t=l[e].column[0],o=l[e].column[1];for(let r=n;r<=a;r++)r<l[e].column[0]?(t-=1,o-=1):r<=l[e].column[1]&&(o-=1);o>=t&&r.push({row:l[e].row,column:[t,o]})}if(r.length>0){let n={rangeType:\"range\",borderType:c.borderInfo[t].borderType,style:c.borderInfo[t].style,color:c.borderInfo[t].color,range:r};e.push(n)}}else if(\"cell\"==l){let l=c.borderInfo[t].value.col_index;l<n?e.push(c.borderInfo[t]):l>a&&(c.borderInfo[t].value.col_index=l-(a-n+1),e.push(c.borderInfo[t]))}}c.borderInfo=e}for(let e=0;e<i.length;e++){let t=[].concat(JSON.parse(JSON.stringify(i[e])));t.splice(n,s),i[e]=t}}o.index==t.currentSheetIndex?oo(i,c,\"delRC\",{index:n,len:a-n+1,rc:_},h,p,y,b,k,x,T):(o.data=i,o.config=c,o.calcChain=h,o.filter=p.filter,o.filter_select=p.filter_select,o.luckysheet_conditionformat_save=y,o.luckysheet_alternateformat_save=b,o.dataVerification=x,o.hyperlink=T)}function fl(e,n,a,l,r,o){if(!Gl(o=o||t.currentSheetIndex)||!yl.createHookFunction(\"rangeDeleteBefore\",n,l))return;let i=Mt(o),s=t.luckysheetfile[i],c=$.extend(!0,[],s.data),u=a-n+1,d=r-l+1,h=$.extend(!0,{},t.config);null==h.merge&&(h.merge={});let f={};for(let t in h.merge){let o=h.merge[t],i=o.r,s=o.c,m=o.rs,p=o.cs;if(\"moveLeft\"==e)if(n>i+m-1||a<i||l>s+p-1)f[i+\"_\"+s]={r:i,c:s,rs:m,cs:p};else if(n<=i&&a>=i+m-1&&r<s)f[i+\"_\"+(s-d)]={r:i,c:s-d,rs:m,cs:p};else for(let e=i;e<=i+m-1;e++)for(let t=s;t<=s+p-1;t++)delete c[e][t].mc;else if(\"moveUp\"==e)if(l>s+p-1||r<s||n>i+m-1)f[i+\"_\"+s]={r:i,c:s,rs:m,cs:p};else if(l<=s&&r>=s+p-1&&a<i)f[i-u+\"_\"+s]={r:i-u,c:s,rs:m,cs:p};else for(let e=i;e<=i+m-1;e++)for(let t=s;t<=s+p-1;t++)delete c[e][t].mc}h.merge=f;let m=s.calcChain,p=[];if(null!=m&&m.length>0)for(let t=0;t<m.length;t++){let o=$.extend(!0,{},m[t]),i=o.r,s=o.c,h=Hn(i,s,o.index);if(h&&(i<n||i>a||s<l||s>r)){let t;\"moveLeft\"==e?(t=\"=\"+wi.functionStrChange(h,\"del\",\"col\",null,l,d),s>r&&i>=n&&i<=a&&(o.c=s-d)):\"moveUp\"==e&&(t=\"=\"+wi.functionStrChange(h,\"del\",\"row\",null,n,u),i>a&&s>=l&&s<=r&&(o.r=i-u)),c[i][s]&&c[i][s].f==h&&(c[i][s].f=t),p.push(o)}}let g=s.filter_select,y=s.filter,v=null;if(null!=g&&\"{}\"!=JSON.stringify(g)){v={filter_select:null,filter:null};let t=g.row[0],o=g.row[1],i=g.column[0],s=g.column[1];if(\"moveUp\"==e)if(i>=l&&s<=r){if(t>a?v.filter_select={row:[t-u,o-u],column:[i,s]}:o<n?v.filter_select={row:[t,o],column:[i,s]}:t<n&&(v.filter_select=o>a?{row:[t,o-u],column:[i,s]}:{row:[t,n-1],column:[i,s]}),null!=v.filter_select&&null!=y)for(let e in y){let t=y[e].rowhidden,l={};for(let e in t)e<n?l[e]=0:e>a&&(l[e-slen]=0);null==v.filter&&(v.filter={}),v.filter[e]=$.extend(!0,{},y[e]),\"{}\"!=JSON.stringify(l)&&(v.filter[e].rowhidden=l),v.filter[e].str=v.filter_select.row[0],v.filter[e].edr=v.filter_select.row[1]}}else if(t>=n&&o<=a){if(i>r?v.filter_select={row:[t,o],column:[i,s]}:i>=l?s>r&&(v.filter_select={row:[t,o],column:[l,s-d]}):v.filter_select=s<l?{row:[t,o],column:[i,s]}:s<=r?{row:[t,o],column:[i,l-1]}:{row:[t,o],column:[i,s-d]},null!=v.filter_select&&null!=y)for(let e in y){let t=v.filter_select.column[0],n=v.filter_select.column[1],a=y[e].cindex;if(a<l||a>r){null==v.filter&&(v.filter={}),a>r&&(a-=d);let l=a-t;v.filter[l]=$.extend(!0,{},y[e]),v.filter[l].cindex=a,v.filter[l].stc=t,v.filter[l].edc=n}}}else v.filter_select={row:[t,o],column:[i,s]},null!=y&&(v.filter=y);else if(\"moveLeft\"==e)if(t>=n&&o<=a){if(i>r?v.filter_select={row:[t,o],column:[i-d,s-d]}:s<l?v.filter_select={row:[t,o],column:[i,s]}:i<l&&(v.filter_select=s>r?{row:[t,o],column:[i,s-d]}:{row:[t,o],column:[i,l-1]}),null!=v.filter_select&&null!=y)for(let e in y){let t=v.filter_select.column[0],n=v.filter_select.column[1],a=y[e].cindex;if(a<l||a>r){null==v.filter&&(v.filter={}),a>r&&(a-=d);let l=a-t;v.filter[l]=$.extend(!0,{},y[e]),v.filter[l].cindex=a,v.filter[l].stc=t,v.filter[l].edc=n}}}else i>=l&&s<=r?(t<n||t>a)&&(v.filter_select={row:[t,o],column:[i,s]},null!=y&&(v.filter=y)):(v.filter_select={row:[t,o],column:[i,s]},null!=y&&(v.filter=y))}if(null!=v&&null!=v.filter){null==h.rowhidden&&(h.rowhidden={});for(let e in v.filter){let t=v.filter[e].rowhidden;for(let e in t)h.rowhidden[e]=0}}let b=s.luckysheet_conditionformat_save,k=[];if(null!=b&&b.length>0)for(let t=0;t<b.length;t++){let o=b[t].cellrange,i=[];for(let t=0;t<o.length;t++){let s=o[t].row[0],c=o[t].row[1],h=o[t].column[0],f=o[t].column[1];n<=s&&a>=c&&l<=h&&r>=f||(i=ml(e,n,a,l,r,s,c,h,f,u,d))}if(i.length>0){let e=$.extend(!0,{},b[t]);e.cellrange=i,k.push(e)}}let w=s.dataVerification,x={};if(null!=w)for(let t in w){let o=Number(t.split(\"_\")[0]),i=Number(t.split(\"_\")[1]),s=w[t];(o<n||o>a||i<l||i>r)&&(\"moveLeft\"==e?i>r&&o>=n&&o<=a?x[o+\"_\"+(i-d)]=s:x[o+\"_\"+i]=s:\"moveUp\"==e&&(o>a&&i>=l&&i<=r?x[o-u+\"_\"+i]=s:x[o+\"_\"+i]=s))}let _=s.hyperlink,C={};if(null!=_)for(let t in _){let o=Number(t.split(\"_\")[0]),i=Number(t.split(\"_\")[1]),s=_[t];(o<n||o>a||i<l||i>r)&&(\"moveLeft\"==e?i>r&&o>=n&&o<=a?C[o+\"_\"+(i-d)]=s:C[o+\"_\"+i]=s:\"moveUp\"==e&&(o>a&&i>=l&&i<=r?C[o-u+\"_\"+i]=s:C[o+\"_\"+i]=s))}if(h.borderInfo&&h.borderInfo.length>0){let t=[];for(let o=0;o<h.borderInfo.length;o++){let i=h.borderInfo[o].rangeType;if(\"range\"==i){let i=h.borderInfo[o].range,s=[];for(let t=0;t<i.length;t++){let o=i[t].row[0],c=i[t].row[1],h=i[t].column[0],f=i[t].column[1];n<=o&&a>=c&&l<=h&&r>=f||(s=ml(e,n,a,l,r,o,c,h,f,u,d))}if(s.length>0){let e={rangeType:\"range\",borderType:h.borderInfo[o].borderType,style:h.borderInfo[o].style,color:h.borderInfo[o].color,range:s};t.push(e)}}else if(\"cell\"==i){let i=h.borderInfo[o].value.row_index,s=h.borderInfo[o].value.col_index;(i<n||i>a||s<l||s>r)&&(\"moveLeft\"==e?s>r&&i>=n&&i<=a&&(s-=d,h.borderInfo[o].value.col_index=s):\"moveUp\"==e&&i>a&&s>=l&&s<=r&&(i-=u,h.borderInfo[o].value.row_index=i),t.push(h.borderInfo[o]))}}h.borderInfo=t}let T=[];for(let e=l;e<=r;e++)T.push(null);if(\"moveUp\"==e){let e=[];for(let t=n;t<=c.length-1;t++){let n=[];for(let e=l;e<=r;e++)n.push(c[t][e]);e.push(n)}e.splice(0,u);let t=[];for(let e=n;e<=a;e++)t.push(T);e=e.concat(t);for(let t=n;t<=c.length-1;t++)for(let a=l;a<=r;a++)c[t][a]=e[t-n][a-l]}else if(\"moveLeft\"==e)for(let e=n;e<=a;e++)c[e].splice(l,d),c[e]=c[e].concat(T);s.index==t.currentSheetIndex?io(c,h,{type:e,str:n,edr:a,stc:l,edc:r},p,v,k,x,C):(s.data=c,s.config=h,s.calcChain=p,s.filter=v.filter,s.filter_select=v.filter_select,s.luckysheet_conditionformat_save=k,s.dataVerification=x,s.hyperlink=C)}function ml(e,t,n,a,l,r,o,i,s,c,u){let d=[];if(\"moveLeft\"==e){if(t>o||n<r||a>s)d.push({row:[r,o],column:[i,s]});else if(l<i){if(t<=r&&n>=o)d.push({row:[r,o],column:[i-u,s-u]});else if(t>r&&n<o){let e=[{row:[r,t-1],column:[i,s]},{row:[n+1,o],column:[i,s]},{row:[t,n],column:[i-u,s-u]}];d=d.concat(e)}else if(t>r){let e=[{row:[r,t-1],column:[i,s]},{row:[t,o],column:[i-u,s-u]}];d=d.concat(e)}else if(n<o){let e=[{row:[r,n],column:[i-u,s-u]},{row:[n+1,o],column:[i,s]}];d=d.concat(e)}}else if(l>=i)if(a<=i&&l>=s){if(t>r&&n<o){let e=[{row:[r,t-1],column:[i,s]},{row:[n+1,o],column:[i,s]}];d=d.concat(e)}else if(t>r){let e=[{row:[r,t-1],column:[i,s]}];d=d.concat(e)}else if(n<o){let e=[{row:[n+1,o],column:[i,s]}];d=d.concat(e)}}else if(a>i&&l<s){if(t<=r&&n>=o)d.push({row:[r,o],column:[i,s-u]});else if(t>r&&n<o){let e=[{row:[r,t-1],column:[i,s]},{row:[n+1,o],column:[i,s]},{row:[t,n],column:[i,s-u]}];d=d.concat(e)}else if(t>r){let e=[{row:[r,t-1],column:[i,s]},{row:[t,o],column:[i,s-u]}];d=d.concat(e)}else if(n<o){let e=[{row:[r,n],column:[i,s-u]},{row:[n+1,o],column:[i,s]}];d=d.concat(e)}}else if(a>i){if(t<=r&&n>=o)d.push({row:[r,o],column:[i,a-1]});else if(t>r&&n<o){let e=[{row:[r,t-1],column:[i,s]},{row:[n+1,o],column:[i,s]},{row:[t,n],column:[i,a-1]}];d=d.concat(e)}else if(t>r){let e=[{row:[r,t-1],column:[i,s]},{row:[t,o],column:[i,a-1]}];d=d.concat(e)}else if(n<o){let e=[{row:[r,n],column:[i,a-1]},{row:[n+1,o],column:[i,s]}];d=d.concat(e)}}else if(l<s)if(t<=r&&n>=o)d.push({row:[r,o],column:[i-u,s-u]});else if(t>r&&n<o){let e=[{row:[r,t-1],column:[i,s]},{row:[n+1,o],column:[i,s]},{row:[t,n],column:[i-u,s-u]}];d=d.concat(e)}else if(t>r){let e=[{row:[r,t-1],column:[i,s]},{row:[t,o],column:[i-u,s-u]}];d=d.concat(e)}else if(n<o){let e=[{row:[r,n],column:[i-u,s-u]},{row:[n+1,o],column:[i,s]}];d=d.concat(e)}}else if(\"moveUp\"==e)if(a>s||l<i||t>o)d.push({row:[r,o],column:[i,s]});else if(n<r){if(a<=i&&l>=s)d.push({row:[r-c,o-c],column:[i,s]});else if(a>i&&l<s){let e=[{row:[r,o],column:[i,a-1]},{row:[r,o],column:[l+1,s]},{row:[r-c,o-c],column:[a,l]}];d=d.concat(e)}else if(a>i){let e=[{row:[r,o],column:[i,a-1]},{row:[r-c,o-c],column:[a,s]}];d=d.concat(e)}else if(l<s){let e=[{row:[r-c,o-c],column:[i,l]},{row:[r,o],column:[l+1,s]}];d=d.concat(e)}}else if(n>=r)if(t<=r&&n>=o){if(a>i&&l<s){let e=[{row:[r,o],column:[i,a-1]},{row:[r,o],column:[l+1,s]}];d=d.concat(e)}else if(a>i){let e=[{row:[r,o],column:[i,a-1]}];d=d.concat(e)}else if(l<s){let e=[{row:[r,o],column:[l+1,s]}];d=d.concat(e)}}else if(t>r&&n<o){if(a<=i&&l>=s)d.push({row:[r,o-c],column:[i,s]});else if(a>i&&l<s){let e=[{row:[r,o],column:[i,a-1]},{row:[r,o],column:[l+1,s]},{row:[r,o-c],column:[a,l]}];d=d.concat(e)}else if(a>i){let e=[{row:[r,o],column:[i,a-1]},{row:[r,o-c],column:[a,s]}];d=d.concat(e)}else if(l<s){let e=[{row:[r,o-c],column:[i,l]},{row:[r,o],column:[l+1,s]}];d=d.concat(e)}}else if(t>r){if(a<=i&&l>=s)d.push({row:[r,t-1],column:[i,s]});else if(a>i&&l<s){let e=[{row:[r,o],column:[i,a-1]},{row:[r,o],column:[l+1,s]},{row:[r,t-1],column:[a,l]}];d=d.concat(e)}else if(a>i){let e=[{row:[r,o],column:[i,a-1]},{row:[r,t-1],column:[a,s]}];d=d.concat(e)}else if(l<s){let e=[{row:[r,t-1],column:[i,l]},{row:[r,o],column:[l+1,s]}];d=d.concat(e)}}else if(n<o)if(a<=i&&l>=s)d.push({row:[r-c,o-c],column:[i,s]});else if(a>i&&l<s){let e=[{row:[r,o],column:[i,a-1]},{row:[r,o],column:[l+1,s]},{row:[r-c,o-c],column:[a,l]}];d=d.concat(e)}else if(a>i){let e=[{row:[r,o],column:[i,a-1]},{row:[r-c,o-c],column:[a,s]}];d=d.concat(e)}else if(l<s){let e=[{row:[r-c,o-c],column:[i,l]},{row:[r,o],column:[l+1,s]}];d=d.concat(e)}return d}var pl=y((()=>{gn(),Ci(),fo(),Yn(),Pa(),To(),Al(),Xu(),Kn(),dr(),qt(),x(),kl()}));var gl,yl,vl,bl=y((()=>{Yn(),gn(),fa(),Ci(),fo(),_i(),x()})),kl=y((()=>{_o(),Et(),_i(),Ci(),il(),cl(),Vr(),Al(),qt(),pl(),w(),gn(),bl(),x(),gl={defaultStore:{container:null,luckysheetfile:null,defaultcolumnNum:60,defaultrowNum:84,fullscreenmode:!0,devicePixelRatio:1,currentSheetIndex:0,calculateSheetIndex:0,flowdata:[],config:{},visibledatarow:[],visibledatacolumn:[],ch_width:0,rh_height:0,cellmainWidth:0,cellmainHeight:0,toolbarHeight:0,infobarHeight:0,calculatebarHeight:0,rowHeaderWidth:46,columnHeaderHeight:20,cellMainSrollBarSize:12,sheetBarHeight:31,statisticBarHeight:23,luckysheetTableContentHW:[0,0],defaultcollen:73,defaultrowlen:19,jfcountfuncTimeout:null,jfautoscrollTimeout:null,luckysheet_select_status:!1,luckysheet_select_save:[{row:[0,0],column:[0,0]}],luckysheet_selection_range:[],luckysheet_copy_save:{},luckysheet_paste_iscut:!1,filterchage:!0,luckysheet_filter_save:{row:[],column:[]},luckysheet_sheet_move_status:!1,luckysheet_sheet_move_data:[],luckysheet_scroll_status:!1,luckysheetisrefreshdetail:!0,luckysheetisrefreshtheme:!0,luckysheetcurrentisPivotTable:!1,luckysheet_rows_selected_status:!1,luckysheet_cols_selected_status:!1,luckysheet_rows_change_size:!1,luckysheet_rows_change_size_start:[],luckysheet_cols_change_size:!1,luckysheet_cols_change_size_start:[],luckysheet_cols_dbclick_timeout:null,luckysheet_cols_dbclick_times:0,luckysheetCellUpdate:[],luckysheet_shiftpositon:null,iscopyself:!0,orderbyindex:0,luckysheet_model_move_state:!1,luckysheet_model_xy:[0,0],luckysheet_model_move_obj:null,luckysheet_cell_selected_move:!1,luckysheet_cell_selected_move_index:[],luckysheet_cell_selected_extend:!1,luckysheet_cell_selected_extend_index:[],luckysheet_cell_selected_extend_time:null,clearjfundo:!0,jfredo:[],jfundo:[],lang:\"en\",createChart:\"\",highlightChart:\"\",zIndex:15,chartparam:{luckysheetCurrentChart:null,luckysheetCurrentChartActive:!1,luckysheetCurrentChartMove:null,luckysheetCurrentChartMoveTimeout:null,luckysheetCurrentChartMoveObj:null,luckysheetCurrentChartMoveXy:null,luckysheetCurrentChartMoveWinH:null,luckysheetCurrentChartMoveWinW:null,luckysheetCurrentChartResize:null,luckysheetCurrentChartResizeObj:null,luckysheetCurrentChartResizeXy:null,luckysheetCurrentChartResizeWinH:null,luckysheetCurrentChartResizeWinW:null,luckysheetInsertChartTosheetChange:!0,luckysheetCurrentChartZIndexRank:100,luckysheet_chart_redo_click:!1,luckysheetCurrentChartMaxState:!1,jfrefreshchartall:\"\",changeChartCellData:\"\",renderChart:\"\",getChartJson:\"\"},functionList:null,luckysheet_function:null,chart_selection:{},currentChart:\"\",scrollRefreshSwitch:!0,measureTextCache:{},measureTextCellInfoCache:{},measureTextCacheTimeOut:null,cellOverflowMapCache:{},zoomRatio:1,visibledatacolumn_unique:null,visibledatarow_unique:null,showGridLines:!0,toobarObject:{},inlineStringEditCache:null,inlineStringEditRange:null,fontList:[],currentSheetView:\"viewNormal\"},defaultFormula:{searchFunctionCell:null,functionlistPosition:{},rangechangeindex:null,rangestart:!1,rangetosheet:null,rangeSetValueTo:null,func_selectedrange:{},rangedrag_column_start:!1,rangedrag_row_start:!1,rangeResizeObj:null,rangeResize:null,rangeResizeIndex:null,rangeResizexy:null,rangeResizeWinH:null,rangeResizeWinW:null,rangeResizeTo:null,rangeMovexy:null,rangeMove:!1,rangeMoveObj:null,rangeMoveIndex:null,rangeMoveRangedata:null,functionHTMLIndex:0,functionRangeIndex:null,execvertex:{},execFunctionGroupData:null,execFunctionExist:null,formulaContainSheetList:{},cellTextToIndexList:{},isFunctionRangeSave:!1,formulaContainCellList:{},execFunctionGlobalData:{},groupValuesRefreshData:[],functionResizeData:{},functionResizeStatus:!1,functionResizeTimeout:null,data_parm_index:0},defaultSheet:{sheetMaxIndex:0,nulldata:null,mergeCalculationSheet:{},checkLoadSheetIndexToDataIndex:{},CacheNotLoadControll:[]},defaultPivotTable:{pivotDatas:null,pivotSheetIndex:0,pivotDataSheetIndex:0,celldata:null,origindata:null,pivot_data_type:{},pivot_select_save:null,column:null,row:null,values:null,filter:null,showType:null,rowhidden:null,selected:null,caljs:null,initial:!0,filterparm:null,luckysheet_pivotTable_select_state:!1,jgridCurrentPivotInput:null,movestate:!1,moveitemposition:[],movesave:{},drawPivotTable:!0,pivotTableBoundary:[12,6]},defaultImage:{imgItem:{type:\"3\",src:\"\",originWidth:null,originHeight:null,default:{width:null,height:null,left:null,top:null},crop:{width:null,height:null,offsetLeft:0,offsetTop:0},isFixedPos:!1,fixedLeft:null,fixedTop:null,border:{width:0,radius:0,style:\"solid\",color:\"#000\"}},images:null,currentImgId:null,currentWinW:null,currentWinH:null,resize:null,resizeXY:null,move:!1,moveXY:null,cropChange:null,cropChangeXY:null,cropChangeObj:null,copyImgItemObj:null},defaultDataVerification:{defaultItem:{type:\"dropdown\",type2:null,value1:\"\",value2:\"\",checked:!1,remote:!1,prohibitInput:!1,hintShow:!1,hintText:\"\"},curItem:null,dataVerification:null,selectRange:[],selectStatus:!1}},yl={addDataAjax:function(e,n,a,l){null==n&&(n=t.currentSheetIndex),null==a&&(a=yo.loadSheetUrl),$(\"#luckysheet-grid-window-1\").append(St()),e.currentPage++;let r=sessionStorage.getItem(\"x-auth-token\");$.ajax({method:\"POST\",url:a,headers:{\"x-auth-token\":r},data:JSON.stringify(e),contentType:\"application/json;charset=UTF-8\",success:function(e){\"string\"==typeof e&&(e=JSON.parse(e));let n=e.data,a=n.celldata;dl(n.row,a),setTimeout((function(){t.loadingObj.close()}),500),l&&\"function\"==typeof l&&l(n)}})},reload:function(e,n,a,l){null==n&&(n=t.currentSheetIndex),null==a&&(a=yo.loadSheetUrl),$(\"#luckysheet-grid-window-1\").append(St());let r={gridKey:yo.gridKey,index:n};e=$.extend(!0,e,r);let o=t.luckysheetfile[Mt(n)];$.post(a,e,(function(e){let a=new Function(\"return \"+e)();o.celldata=a[n.toString()];let r=ki.buildGridData(o);setTimeout((function(){t.loadingObj.close()}),500),o.data=r,t.flowdata=r,mn.webWorkerFlowDataCache(r),function(e,n,a,l,r){null==r&&(r=!0),t.visibledatarow=[],t.visibledatacolumn=[],t.ch_width=0,t.rh_height=0,t.zoomRatio=1,t.config=null!=l?l:{},0==a.length?t.flowdata=qn(a,n,e):a.length<n&&a[0].length<e?t.flowdata=qn(a,n-a.length,e-a[0].length):a.length<n?t.flowdata=qn(a,n-a.length,0):a[0].length<e?t.flowdata=qn(a,0,e-a[0].length):t.flowdata=a,mn.webWorkerFlowDataCache(t.flowdata),ha(n,e),r&&(ki.showSheet(),setTimeout((function(){ki.restoreCache(),wi.execFunctionGroup(),ki.restoreSheetAll(t.currentSheetIndex),uo()}),1))}(r[0].length,r.length,r,null,!1),o.load=\"1\",t.luckysheet_select_save.length=0,t.luckysheet_selection_range=[],yo.saveParam(\"shs\",null,t.currentSheetIndex),ki.changeSheet(n),l&&\"function\"==typeof l&&l()}))},clearSheetByIndex:function(e){let n=Mt(e),a=t.luckysheetfile[n];a.isPivotTable?delete t.luckysheetfile[n]:(a.data=[],a.row=t.defaultrowNum,a.column=t.defaultcolumnNum,a.chart=[],a.config=null,a.filter=null,a.filter_select=null,a.celldata=[],a.pivotTable={},a.calcChain=[],a.status=0,a.load=0,t.flowdata=[],mn.webWorkerFlowDataCache(t.flowdata),$(\"#\"+t.container+\" .luckysheet-data-visualization-chart\").remove(),$(\"#\"+t.container+\" .luckysheet-datavisual-selection-set\").remove(),$(\"#luckysheet-row-count-show, #luckysheet-formula-functionrange-select, #luckysheet-row-count-show, #luckysheet-column-count-show, #luckysheet-change-size-line, #luckysheet-cell-selected-focus, #luckysheet-selection-copy, #luckysheet-cell-selected-extend, #luckysheet-cell-selected-move, #luckysheet-cell-selected\").hide(),delete a.load)},clear:function(e){let n=this;if(\"all\"==e)for(let e=0;e<t.luckysheetfile.length;e++){let a=t.luckysheetfile[e];n.clearSheetByIndex(a.index)}else null==e&&(e=t.currentSheetIndex),n.clearSheetByIndex(e);ki.changeSheet(t.luckysheetfile[0].index)},destroy:function(){$(\"#\"+t.container).empty(),$(\"body > .luckysheet-cols-menu\").remove(),$(\"#luckysheet-modal-dialog-mask, #luckysheetTextSizeTest, #luckysheet-icon-morebtn-div\").remove(),$(\"#luckysheet-input-box\").parent().remove(),$(\"#luckysheet-formula-help-c\").remove(),$(\".chartSetting, .luckysheet-modal-dialog-slider\").remove(),$(document).off(\".luckysheetEvent\"),$(document).off(\".luckysheetProtection\"),$l.initialHorizontal=!0,$l.initialVertical=!0;let e=$.extend(!0,{},gl.defaultStore);for(let n in e)n in t&&(t[n]=e[n]);let n=$.extend(!0,{},gl.defaultFormula);for(let e in n)e in wi&&(wi[e]=n[e]);let a=$.extend(!0,{},gl.defaultSheet);for(let e in a)e in ki&&(ki[e]=a[e]);let l=$.extend(!0,{},gl.defaultPivotTable);for(let e in l)e in wr&&(wr[e]=l[e]);let r=$.extend(!0,{},gl.defaultImage);for(let e in r)e in rl&&(rl[e]=r[e]);let o=$.extend(!0,{},gl.defaultDataVerification);for(let e in o)e in sl&&(sl[e]=o[e]);t.asyncLoad=[\"core\"]},destroyElements:function(){$(\"body > .luckysheet-cols-menu\").remove(),$(\"#luckysheet-modal-dialog-mask, #luckysheetTextSizeTest, #luckysheet-icon-morebtn-div\").remove(),$(\"#luckysheet-input-box\").parent().remove(),$(\"#luckysheet-formula-help-c\").remove(),$(\".chartSetting, .luckysheet-modal-dialog-slider\").remove()},editorChart:function(e){let t=$t[0],n=\"luckysheetEditMode-datav-chart\",a=n+\"_selection\";e.chart_id=n;let l=e.chartTheme;l=null==l?\"default0000\":l,luckysheet.insertChartTosheet(e.sheetIndex,e.dataSheetIndex,e.option,e.chartType,e.selfOption,e.defaultOption,e.row,e.column,t,n,a,e.chartStyle,e.rangeConfigCheck,e.rangeRowCheck,e.rangeColCheck,e.chartMarkConfig,e.chartTitleConfig,e.winWidth,e.winHeight,e.scrollLeft,e.scrollTop,l,e.myWidth,e.myHeight,null!=e.myLeft?parseFloat(e.myLeft):null,null!=e.myTop?parseFloat(e.myTop):null,e.myindexrank,!0),$(\"#\"+n).find(\".luckysheet-modal-controll-update\").click()},createHookFunction:function(){let t=arguments[0];if(e.hook&&null!=e.hook[t]&&\"function\"==typeof e.hook[t]){var n=Array.prototype.slice.apply(arguments);return n.shift(),!1!==e.hook[t].apply(this,n)}return!0}}})),wl=y((()=>{na(),gn(),Ci(),Cn(),fo(),Wt(),qt(),_d(),Al(),ed(),dr(),_o(),x(),kl(),vl={defaultWidth:144,defaultHeight:84,currentObj:null,currentWinW:null,currentWinH:null,resize:null,resizeXY:null,move:!1,moveXY:null,init:function(){let e=this;$(\"#luckysheet-postil-showBoxs\").off(\"mousedown.showPs\").on(\"mousedown.showPs\",\".luckysheet-postil-show\",(function(n){if(Ql(t.currentSheetIndex,\"editObjects\",!1)){if(e.currentObj=$(this).find(\".luckysheet-postil-show-main\"),$(this).hasClass(\"luckysheet-postil-show-active\"))return void n.stopPropagation();e.removeActivePs(),$(this).addClass(\"luckysheet-postil-show-active\"),$(this).find(\".luckysheet-postil-dialog-resize\").show(),$(this).find(\".arrowCanvas\").css(\"z-index\",200),$(this).find(\".luckysheet-postil-show-main\").css(\"z-index\",200),n.stopPropagation()}})),$(\"#luckysheet-postil-showBoxs\").off(\"mouseup.showPs\").on(\"mouseup.showPs\",\".luckysheet-postil-show\",(function(e){\"3\"==e.which&&e.stopPropagation()})),$(\"#luckysheet-postil-showBoxs\").off(\"mousedown.resize\").on(\"mousedown.resize\",\".luckysheet-postil-show .luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item\",(function(n){if(!Ql(t.currentSheetIndex,\"editObjects\",!1))return;e.currentObj=$(this).closest(\".luckysheet-postil-show-main\"),e.currentWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,e.currentWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,e.resize=$(this).data(\"type\");let a=$(\"#luckysheet-cell-main\").scrollTop(),l=$(\"#luckysheet-cell-main\").scrollLeft(),r=ta(n.pageX,n.pageY),o=r[0]+l,i=r[1]+a,s=e.currentObj.position(),c=e.currentObj.width(),u=e.currentObj.height();e.resizeXY=[o,i,c,u,s.left+l,s.top+a,l,a],Ut(!0),$(this).closest(\".luckysheet-postil-show\").hasClass(\"luckysheet-postil-show-active\")||(e.removeActivePs(),$(this).closest(\".luckysheet-postil-show\").addClass(\"luckysheet-postil-show-active\"),$(this).closest(\".luckysheet-postil-show\").find(\".luckysheet-postil-dialog-resize\").show(),$(this).closest(\".luckysheet-postil-show\").find(\".arrowCanvas\").css(\"z-index\",200),$(this).closest(\".luckysheet-postil-show\").find(\".luckysheet-postil-show-main\").css(\"z-index\",200)),n.stopPropagation()})),$(\"#luckysheet-postil-showBoxs\").off(\"mousedown.move\").on(\"mousedown.move\",\".luckysheet-postil-show .luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item\",(function(n){if(!Ql(t.currentSheetIndex,\"editObjects\",!1))return;e.currentObj=$(this).closest(\".luckysheet-postil-show-main\"),e.currentWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,e.currentWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,e.move=!0;let a=$(\"#luckysheet-cell-main\").scrollTop(),l=$(\"#luckysheet-cell-main\").scrollLeft(),r=e.currentObj.offset(),o=e.currentObj.position();e.moveXY=[n.pageX-r.left,n.pageY-r.top,o.left,o.top,l,a],Ut(!0),$(this).closest(\".luckysheet-postil-show\").hasClass(\"luckysheet-postil-show-active\")||(e.removeActivePs(),$(this).closest(\".luckysheet-postil-show\").addClass(\"luckysheet-postil-show-active\"),$(this).closest(\".luckysheet-postil-show\").find(\".luckysheet-postil-dialog-resize\").show(),$(this).closest(\".luckysheet-postil-show\").find(\".arrowCanvas\").css(\"z-index\",200),$(this).closest(\".luckysheet-postil-show\").find(\".luckysheet-postil-show-main\").css(\"z-index\",200)),n.stopPropagation()}))},overshow:function(e){let n=this;if($(\"#luckysheet-postil-overshow\").remove(),0==$(e.target).closest(\"#luckysheet-cell-main\").length)return;let a=ta(e.pageX,e.pageY),l=$(\"#luckysheet-cell-main\").scrollLeft(),r=$(\"#luckysheet-cell-main\").scrollTop(),o=a[0],i=a[1],s=0,c=0;null!=$l.freezenverticaldata&&a[0]<$l.freezenverticaldata[0]-$l.freezenverticaldata[2]?s=l:o+=l,null!=$l.freezenhorizontaldata&&a[1]<$l.freezenhorizontaldata[0]-$l.freezenhorizontaldata[2]?c=r:i+=r;let u=Jn(i)[2],d=ea(o)[2],h=Yu.mergeborer(t.flowdata,u,d);if(h&&(u=h.row[2],d=h.column[2]),null==t.flowdata[u]||null==t.flowdata[u][d]||null==t.flowdata[u][d].ps)return;let f=t.flowdata[u][d].ps;if(f.isshow||$(\"#luckysheet-postil-show_\"+u+\"_\"+d).length>0)return;let m=null==f.value?\"\":f.value,p=t.visibledatarow[u],g=u-1==-1?0:t.visibledatarow[u-1],y=t.visibledatacolumn[d],v=d-1==-1?0:t.visibledatacolumn[d-1];h&&(p=h.row[1],g=h.row[0],y=h.column[1],v=h.column[0]);let b=y+s,k=g+c,w=b+18*t.zoomRatio,x=k-18*t.zoomRatio;x<0&&(x=2);let _=null==f.width?n.defaultWidth*t.zoomRatio:f.width*t.zoomRatio,C=null==f.height?n.defaultHeight*t.zoomRatio:f.height*t.zoomRatio,T=n.getArrowCanvasSize(w,x,b,k),S=\"\",I=m.split(\"\\n\");for(let e of I)S+=\"<div>\"+n.htmlEscape(e)+\"</div>\";let R='<div id=\"luckysheet-postil-overshow\"><canvas class=\"arrowCanvas\" width=\"'+T[2]+'\" height=\"'+T[3]+'\" style=\"position:absolute;left:'+T[0]+\"px;top:\"+T[1]+'px;z-index:100;pointer-events:none;\"></canvas><div style=\"width:'+(_-12)+\"px;min-height:\"+(C-12)+\"px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:\"+w+\"px;top:\"+x+'px;z-index:100;\">'+S+\"</div></div>\";$(R).appendTo($(\"#luckysheet-cell-main\"));let A=$(\"#luckysheet-postil-overshow .arrowCanvas\").get(0).getContext(\"2d\");n.drawArrow(A,T[4],T[5],T[6],T[7])},getArrowCanvasSize:function(e,t,n,a){let l=n-5;e<n&&(l=e-5);let r=a-5;t<a&&(r=t-5);let o=Math.abs(e-n)+10,i=Math.abs(t-a)+10,s=o-5,c=5;e<n&&(s=5,c=o-5);let u=i-5,d=5;return t<a&&(u=5,d=i-5),[l,r,o,i,s,u,c,d]},drawArrow:function(e,t,n,a,l,r,o,i,s){r=\"undefined\"==ad(r)?30:r,o=\"undefined\"==ad(o)?6:o,i=\"undefined\"==ad(i)?1:i,s=\"undefined\"==ad(s)?\"#000\":s;let c=180*Math.atan2(n-l,t-a)/Math.PI,u=(c+r)*Math.PI/180,d=(c-r)*Math.PI/180,h=o*Math.cos(u),f=o*Math.sin(u),m=o*Math.cos(d),p=o*Math.sin(d);e.save(),e.beginPath();let g=t-h,y=n-f;e.moveTo(g,y),e.moveTo(t,n),e.lineTo(a,l),e.lineWidth=i,e.strokeStyle=s,e.stroke(),g=a+h,y=l+f,e.moveTo(g,y),e.lineTo(a,l),g=a+m,y=l+p,e.lineTo(g,y),e.fillStyle=s,e.fill(),e.restore()},buildAllPs:function(e){let t=this;$(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\").empty();for(let n=0;n<e.length;n++)for(let a=0;a<e[0].length;a++)if(null!=e[n][a]&&null!=e[n][a].ps){let l=e[n][a].ps;t.buildPs(n,a,l)}t.init()},buildPs:function(e,n,a){if($(\"#luckysheet-postil-show_\"+e+\"_\"+n).length>0&&$(\"#luckysheet-postil-show_\"+e+\"_\"+n).remove(),null==a)return;let l=this;if(null!=a.isshow&&a.isshow){let r=t.visibledatarow[e],o=e-1==-1?0:t.visibledatarow[e-1],i=t.visibledatacolumn[n],s=n-1==-1?0:t.visibledatacolumn[n-1],c=Yu.mergeborer(t.flowdata,e,n);c&&(r=c.row[1],o=c.row[0],i=c.column[1],s=c.column[0]);let u=i,d=o,h=null==a.left?u+18*t.zoomRatio:a.left*t.zoomRatio,f=null==a.top?d-18*t.zoomRatio:a.top*t.zoomRatio,m=null==a.width?l.defaultWidth*t.zoomRatio:a.width*t.zoomRatio,p=null==a.height?l.defaultHeight*t.zoomRatio:a.height*t.zoomRatio,g=null==a.value?\"\":a.value;f<0&&(f=2);let y=l.getArrowCanvasSize(h,f,u,d),v=\"\",b=g.split(\"\\n\");for(let e of b)v+=\"<div>\"+l.htmlEscape(e)+\"</div>\";let k='<div id=\"luckysheet-postil-show_'+e+\"_\"+n+'\" class=\"luckysheet-postil-show\"><canvas class=\"arrowCanvas\" width=\"'+y[2]+'\" height=\"'+y[3]+'\" style=\"position:absolute;left:'+y[0]+\"px;top:\"+y[1]+'px;z-index:100;pointer-events:none;\"></canvas><div class=\"luckysheet-postil-show-main\" style=\"width:'+m+\"px;height:\"+p+\"px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:\"+h+\"px;top:\"+f+'px;box-sizing:border-box;z-index:100;\"><div class=\"luckysheet-postil-dialog-move\"><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t\" data-type=\"t\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r\" data-type=\"r\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b\" data-type=\"b\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l\" data-type=\"l\"></div></div><div class=\"luckysheet-postil-dialog-resize\" style=\"display:none;\"><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt\" data-type=\"lt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt\" data-type=\"mt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm\" data-type=\"lm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm\" data-type=\"rm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt\" data-type=\"rt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb\" data-type=\"lb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb\" data-type=\"mb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb\" data-type=\"rb\"></div></div><div style=\"width:100%;height:100%;overflow:hidden;\"><div class=\"formulaInputFocus\" style=\"width:'+(m-12)+\"px;height:\"+(p-12)+'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;\" spellcheck=\"false\" contenteditable=\"true\">'+v+\"</div></div></div></div>\";$(k).appendTo($(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\"));let w=$(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .arrowCanvas\").get(0).getContext(\"2d\");l.drawArrow(w,y[4],y[5],y[6],y[7])}},newPs:function(e,n){if(!Ql(t.currentSheetIndex,\"editObjects\")||!yl.createHookFunction(\"commentInsertBefore\",e,n))return;let a=this,l=t.visibledatarow[e],r=e-1==-1?0:t.visibledatarow[e-1],o=t.visibledatacolumn[n],i=n-1==-1?0:t.visibledatacolumn[n-1],s=Yu.mergeborer(t.flowdata,e,n);s&&(l=s.row[1],r=s.row[0],o=s.column[1],i=s.column[0]);let c=o,u=r,d=c+18*t.zoomRatio,h=u-18*t.zoomRatio;h<0&&(h=2);let f=a.defaultWidth*t.zoomRatio,m=a.defaultHeight*t.zoomRatio,p=a.getArrowCanvasSize(d,h,c,u),g='<div id=\"luckysheet-postil-show_'+e+\"_\"+n+'\" class=\"luckysheet-postil-show luckysheet-postil-show-active\"><canvas class=\"arrowCanvas\" width=\"'+p[2]+'\" height=\"'+p[3]+'\" style=\"position:absolute;left:'+p[0]+\"px;top:\"+p[1]+'px;z-index:100;pointer-events:none;\"></canvas><div class=\"luckysheet-postil-show-main\" style=\"width:'+f+\"px;height:\"+m+\"px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:\"+d+\"px;top:\"+h+'px;box-sizing:border-box;z-index:100;\"><div class=\"luckysheet-postil-dialog-move\"><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t\" data-type=\"t\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r\" data-type=\"r\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b\" data-type=\"b\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l\" data-type=\"l\"></div></div><div class=\"luckysheet-postil-dialog-resize\"><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt\" data-type=\"lt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt\" data-type=\"mt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm\" data-type=\"lm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm\" data-type=\"rm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt\" data-type=\"rt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb\" data-type=\"lb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb\" data-type=\"mb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb\" data-type=\"rb\"></div></div><div style=\"width:100%;height:100%;overflow:hidden;\"><div class=\"formulaInputFocus\" style=\"width:132px;height:72px;line-height:20px;box-sizing:border-box;text-align: center;word-break:break-all;\" spellcheck=\"false\" contenteditable=\"true\"></div></div></div></div>';$(g).appendTo($(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\"));let y=$(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .arrowCanvas\").get(0).getContext(\"2d\");a.drawArrow(y,p[4],p[5],p[6],p[7]),$(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .formulaInputFocus\").focus(),a.init();let v=mn.deepCopyFlowData(t.flowdata),b=[];null==v[e][n]&&(v[e][n]={}),v[e][n].ps={left:null,top:null,width:null,height:null,value:\"\",isshow:!1},b.push(e+\"_\"+n),a.ref(v,b),setTimeout((()=>{yl.createHookFunction(\"commentInsertAfter\",e,n,v[e][n])}),0)},editPs:function(e,n){let a=this;if(Ql(t.currentSheetIndex,\"editObjects\")){if($(\"#luckysheet-postil-show_\"+e+\"_\"+n).length>0)$(\"#luckysheet-postil-show_\"+e+\"_\"+n).show(),$(\"#luckysheet-postil-show_\"+e+\"_\"+n).addClass(\"luckysheet-postil-show-active\"),$(\"#luckysheet-postil-show_\"+e+\"_\"+n).find(\".luckysheet-postil-dialog-resize\").show();else{let l=t.flowdata[e][n].ps,r=t.visibledatarow[e],o=e-1==-1?0:t.visibledatarow[e-1],i=t.visibledatacolumn[n],s=n-1==-1?0:t.visibledatacolumn[n-1],c=Yu.mergeborer(t.flowdata,e,n);c&&(r=c.row[1],o=c.row[0],i=c.column[1],s=c.column[0]);let u=i,d=o,h=null==l.left?u+18*t.zoomRatio:l.left*t.zoomRatio,f=null==l.top?d-18*t.zoomRatio:l.top*t.zoomRatio,m=null==l.width?a.defaultWidth*t.zoomRatio:l.width*t.zoomRatio,p=null==l.height?a.defaultHeight*t.zoomRatio:l.height*t.zoomRatio,g=null==l.value?\"\":l.value;f<0&&(f=2);let y=a.getArrowCanvasSize(h,f,u,d),v=\"\",b=g.split(\"\\n\");for(let e of b)v+=\"<div>\"+a.htmlEscape(e)+\"</div>\";let k='<div id=\"luckysheet-postil-show_'+e+\"_\"+n+'\" class=\"luckysheet-postil-show luckysheet-postil-show-active\"><canvas class=\"arrowCanvas\" width=\"'+y[2]+'\" height=\"'+y[3]+'\" style=\"position:absolute;left:'+y[0]+\"px;top:\"+y[1]+'px;z-index:100;pointer-events:none;\"></canvas><div class=\"luckysheet-postil-show-main\" style=\"width:'+m+\"px;height:\"+p+\"px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:\"+h+\"px;top:\"+f+'px;box-sizing:border-box;z-index:100;\"><div class=\"luckysheet-postil-dialog-move\"><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t\" data-type=\"t\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r\" data-type=\"r\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b\" data-type=\"b\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l\" data-type=\"l\"></div></div><div class=\"luckysheet-postil-dialog-resize\"><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt\" data-type=\"lt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt\" data-type=\"mt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm\" data-type=\"lm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm\" data-type=\"rm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt\" data-type=\"rt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb\" data-type=\"lb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb\" data-type=\"mb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb\" data-type=\"rb\"></div></div><div style=\"width:100%;height:100%;overflow:hidden;\"><div class=\"formulaInputFocus\" style=\"width:'+(m-12)+\"px;height:\"+(p-12)+'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;\" spellcheck=\"false\" contenteditable=\"true\">'+v+\"</div></div></div></div>\";$(k).appendTo($(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\"));let w=$(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .arrowCanvas\").get(0).getContext(\"2d\");a.drawArrow(w,y[4],y[5],y[6],y[7])}$(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .formulaInputFocus\").focus(),wn($(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .formulaInputFocus\").get(0)),a.init()}},delPs:function(e,n){if(!Ql(t.currentSheetIndex,\"editObjects\")||!yl.createHookFunction(\"commentDeleteBefore\",e,n,t.flowdata[e][n]))return;$(\"#luckysheet-postil-show_\"+e+\"_\"+n).length>0&&$(\"#luckysheet-postil-show_\"+e+\"_\"+n).remove();let a=mn.deepCopyFlowData(t.flowdata),l=[];delete a[e][n].ps,l.push(e+\"_\"+n),this.ref(a,l),setTimeout((()=>{yl.createHookFunction(\"commentDeleteAfter\",e,n,t.flowdata[e][n])}),0)},showHidePs:function(e,n){let a=this,l=t.flowdata[e][n].ps,r=l.isshow,o=mn.deepCopyFlowData(t.flowdata),i=[];if(r)o[e][n].ps.isshow=!1,$(\"#luckysheet-postil-show_\"+e+\"_\"+n).remove();else{o[e][n].ps.isshow=!0;let r=t.visibledatarow[e],i=e-1==-1?0:t.visibledatarow[e-1],s=t.visibledatacolumn[n],c=n-1==-1?0:t.visibledatacolumn[n-1],u=Yu.mergeborer(t.flowdata,e,n);u&&(r=u.row[1],i=u.row[0],s=u.column[1],c=u.column[0]);let d=$(\"#luckysheet-cell-main\").scrollLeft(),h=$(\"#luckysheet-cell-main\").scrollTop(),f=s,m=i;null!=$l.freezenverticaldata&&f<$l.freezenverticaldata[0]-$l.freezenverticaldata[2]&&(f+=d),null!=$l.freezenhorizontaldata&&m<$l.freezenhorizontaldata[0]-$l.freezenhorizontaldata[2]&&(m+=h);let p=null==l.left?f+18*t.zoomRatio:l.left*t.zoomRatio,g=null==l.top?m-18*t.zoomRatio:l.top*t.zoomRatio,y=null==l.width?a.defaultWidth*t.zoomRatio:l.width*t.zoomRatio,v=null==l.height?a.defaultHeight*t.zoomRatio:l.height*t.zoomRatio,b=null==l.value?\"\":l.value;g<0&&(g=2);let k=a.getArrowCanvasSize(p,g,f,m),w=\"\",x=b.split(\"\\n\");for(let e of x)w+=\"<div>\"+a.htmlEscape(e)+\"</div>\";let _='<div id=\"luckysheet-postil-show_'+e+\"_\"+n+'\" class=\"luckysheet-postil-show\"><canvas class=\"arrowCanvas\" width=\"'+k[2]+'\" height=\"'+k[3]+'\" style=\"position:absolute;left:'+k[0]+\"px;top:\"+k[1]+'px;z-index:100;pointer-events:none;\"></canvas><div class=\"luckysheet-postil-show-main\" style=\"width:'+y+\"px;height:\"+v+\"px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:\"+p+\"px;top:\"+g+'px;box-sizing:border-box;z-index:100;\"><div class=\"luckysheet-postil-dialog-move\"><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t\" data-type=\"t\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r\" data-type=\"r\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b\" data-type=\"b\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l\" data-type=\"l\"></div></div><div class=\"luckysheet-postil-dialog-resize\" style=\"display:none;\"><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt\" data-type=\"lt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt\" data-type=\"mt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm\" data-type=\"lm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm\" data-type=\"rm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt\" data-type=\"rt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb\" data-type=\"lb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb\" data-type=\"mb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb\" data-type=\"rb\"></div></div><div style=\"width:100%;height:100%;overflow:hidden;\"><div class=\"formulaInputFocus\" style=\"width:'+(y-12)+\"px;height:\"+(v-12)+'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;\" spellcheck=\"false\" contenteditable=\"true\">'+w+\"</div></div></div></div>\";$(_).appendTo($(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\"));let C=$(\"#luckysheet-postil-show_\"+e+\"_\"+n+\" .arrowCanvas\").get(0).getContext(\"2d\");a.drawArrow(C,k[4],k[5],k[6],k[7]),a.init()}i.push(e+\"_\"+n),a.ref(o,i)},showHideAllPs:function(){let e=this,n=mn.deepCopyFlowData(t.flowdata),a=!0,l=[];for(let e=0;e<n.length;e++)for(let t=0;t<n[0].length;t++)null!=n[e]&&null!=n[e][t]&&null!=n[e][t].ps&&(l.push(e+\"_\"+t),n[e][t].ps.isshow||(a=!1));let r=[];if(l.length>0)if(a){$(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\").empty();for(let e=0;e<l.length;e++){let t=l[e].split(\"_\")[0],a=l[e].split(\"_\")[1];n[t][a].ps.isshow&&(n[t][a].ps.isshow=!1,r.push(l[e]))}}else for(let a=0;a<l.length;a++){let o=l[a].split(\"_\")[0],i=l[a].split(\"_\")[1],s=n[o][i].ps;if(!s.isshow){let c=t.visibledatarow[o],u=o-1==-1?0:t.visibledatarow[o-1],d=t.visibledatacolumn[i],h=i-1==-1?0:t.visibledatacolumn[i-1],f=Yu.mergeborer(t.flowdata,o,i);f&&(c=f.row[1],u=f.row[0],d=f.column[1],h=f.column[0]);let m=$(\"#luckysheet-cell-main\").scrollLeft(),p=$(\"#luckysheet-cell-main\").scrollTop(),g=d,y=u;null!=$l.freezenverticaldata&&g<$l.freezenverticaldata[0]-$l.freezenverticaldata[2]&&(g+=m),null!=$l.freezenhorizontaldata&&y<$l.freezenhorizontaldata[0]-$l.freezenhorizontaldata[2]&&(y+=p);let v=null==s.left?g+18*t.zoomRatio:s.left*t.zoomRatio,b=null==s.top?y-18*t.zoomRatio:s.top*t.zoomRatio,k=null==s.width?e.defaultWidth*t.zoomRatio:s.width*t.zoomRatio,w=null==s.height?e.defaultHeight*t.zoomRatio:s.height*t.zoomRatio,x=null==s.value?\"\":s.value;b<0&&(b=2);let _=e.getArrowCanvasSize(v,b,g,y),C=\"\",T=x.split(\"\\n\");for(let t of T)C+=\"<div>\"+e.htmlEscape(t)+\"</div>\";let S='<div id=\"luckysheet-postil-show_'+o+\"_\"+i+'\" class=\"luckysheet-postil-show\"><canvas class=\"arrowCanvas\" width=\"'+_[2]+'\" height=\"'+_[3]+'\" style=\"position:absolute;left:'+_[0]+\"px;top:\"+_[1]+'px;z-index:100;pointer-events:none;\"></canvas><div class=\"luckysheet-postil-show-main\" style=\"width:'+k+\"px;height:\"+w+\"px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:\"+v+\"px;top:\"+b+'px;box-sizing:border-box;z-index:100;\"><div class=\"luckysheet-postil-dialog-move\"><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t\" data-type=\"t\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r\" data-type=\"r\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b\" data-type=\"b\"></div><div class=\"luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l\" data-type=\"l\"></div></div><div class=\"luckysheet-postil-dialog-resize\" style=\"display:none;\"><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt\" data-type=\"lt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt\" data-type=\"mt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm\" data-type=\"lm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm\" data-type=\"rm\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt\" data-type=\"rt\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb\" data-type=\"lb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb\" data-type=\"mb\"></div><div class=\"luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb\" data-type=\"rb\"></div></div><div style=\"width:100%;height:100%;overflow:hidden;\"><div class=\"formulaInputFocus\" style=\"width:'+(k-12)+\"px;height:\"+(w-12)+'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;\" spellcheck=\"false\" contenteditable=\"true\">'+C+\"</div></div></div></div>\";$(S).appendTo($(\"#luckysheet-cell-main #luckysheet-postil-showBoxs\"));let I=$(\"#luckysheet-postil-show_\"+o+\"_\"+i+\" .arrowCanvas\").get(0).getContext(\"2d\");e.drawArrow(I,_[4],_[5],_[6],_[7]),n[o][i].ps.isshow=!0,r.push(l[a])}}e.ref(n,r),e.init()},removeActivePs:function(){if($(\"#luckysheet-postil-showBoxs .luckysheet-postil-show-active\").length>0){let e=$(\"#luckysheet-postil-showBoxs .luckysheet-postil-show-active\").attr(\"id\"),n=e.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],a=e.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],l=$(\"#\"+e).find(\".formulaInputFocus\").html().replaceAll(\"<div>\",\"\\n\").replaceAll(/<(.*)>.*?|<(.*) \\/>/g,\"\").trim();if(!yl.createHookFunction(\"commentUpdateBefore\",n,a,l))return void(t.flowdata[n][a].ps.isshow||$(\"#\"+e).remove());let r=$.extend(!0,{},t.flowdata[n][a]);$(\"#\"+e).removeClass(\"luckysheet-postil-show-active\"),$(\"#\"+e).find(\".luckysheet-postil-dialog-resize\").hide(),$(\"#\"+e).find(\".arrowCanvas\").css(\"z-index\",100),$(\"#\"+e).find(\".luckysheet-postil-show-main\").css(\"z-index\",100);let o=mn.deepCopyFlowData(t.flowdata),i=[];o[n][a].ps.value=l,i.push(n+\"_\"+a),this.ref(o,i),o[n][a].ps.isshow||$(\"#\"+e).remove(),setTimeout((()=>{yl.createHookFunction(\"commentUpdateAfter\",n,a,r,o[n][a])}),0)}},ref:function(e,n){if(t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"postil\",data:t.flowdata,curdata:e,sheetIndex:t.currentSheetIndex,rc:n})),t.flowdata=e,mn.webWorkerFlowDataCache(t.flowdata),t.luckysheetfile[Mt(t.currentSheetIndex)].data=t.flowdata,yo.allowUpdate)for(let e=0;e<n.length;e++){let a=n[e].split(\"_\")[0],l=n[e].split(\"_\")[1];yo.saveParam(\"v\",t.currentSheetIndex,t.flowdata[a][l],{r:a,c:l})}setTimeout((function(){uo()}),1)},positionSync:function(){let e=this;$(\"#luckysheet-postil-showBoxs .luckysheet-postil-show\").each((function(n,a){let l=$(a).attr(\"id\"),r=l.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],o=l.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],i=t.flowdata[r][o];null!=i&&null!=i.ps?e.buildPs(r,o,i.ps):$(\"#\"+l).hide()}))},htmlEscape:function(e){return e.replace(/[<>\"&]/g,(function(e,t,n){switch(console.log(e,t,n),e){case\"<\":return\"&lt\";case\">\":return\"&gt\";case\"&\":return\"&amp\";case'\"':return\"&quot;\"}}))}}}));function xl(e,n,a,l,r){let o,i,s={};null==r?(o=t.config,i=t.flowdata):(o=t.luckysheetfile[Mt(r)].config,i=t.luckysheetfile[Mt(r)].data);let c=o.borderInfo;if(null!=c&&c.length>0)for(let t=0;t<c.length;t++){let r=c[t].rangeType;if(\"range\"==r){let r=c[t].borderType,u=c[t].color,d=c[t].style,h=c[t].range;for(let t=0;t<h.length;t++){let c=h[t].row[0],f=h[t].row[1],m=h[t].column[0],p=h[t].column[1];if(c<e&&(c=e),f>n&&(f=n),m<a&&(m=a),p>l&&(p=l),\"border-left\"==r)for(let e=c;e<=f;e++){if(null!=o.rowhidden&&null!=o.rowhidden[e])continue;null==s[e+\"_\"+m]&&(s[e+\"_\"+m]={}),s[e+\"_\"+m].l={color:u,style:d};let t=m-1;if(t>=0&&s[e+\"_\"+t])if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.c+a.cs-1==t&&(s[e+\"_\"+t].r={color:u,style:d})}else s[e+\"_\"+t].r={color:u,style:d};let n=o.merge||{};for(let t in n){let{c:a,r:l,cs:r,rs:o}=n[t];m<=a+r-1&&m>a&&e>=l&&e<=l+o-1&&(s[e+\"_\"+m].l=null)}}else if(\"border-right\"==r)for(let e=c;e<=f;e++){if(null!=o.rowhidden&&null!=o.rowhidden[e])continue;null==s[e+\"_\"+p]&&(s[e+\"_\"+p]={}),s[e+\"_\"+p].r={color:u,style:d};let t=p+1;if(t<i[0].length&&s[e+\"_\"+t])if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t];o.merge[n.mc.r+\"_\"+n.mc.c].c==t&&(s[e+\"_\"+t].l={color:u,style:d})}else s[e+\"_\"+t].l={color:u,style:d};let n=o.merge||{};for(let t in n){let{c:a,r:l,cs:r,rs:o}=n[t];p<a+r-1&&p>=a&&e>=l&&e<=l+o-1&&(s[e+\"_\"+p].r=null)}}else if(\"border-top\"==r){if(null!=o.rowhidden&&null!=o.rowhidden[c])continue;for(let e=m;e<=p;e++){null==s[c+\"_\"+e]&&(s[c+\"_\"+e]={}),s[c+\"_\"+e].t={color:u,style:d};let t=c-1;if(t>=0&&s[t+\"_\"+e])if(null!=i[t]&&\"object\"==ad(i[t][e])&&null!=i[t][e].mc){let n=i[t][e],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r+a.rs-1==t&&(s[t+\"_\"+e].b={color:u,style:d})}else s[t+\"_\"+e].b={color:u,style:d};let n=o.merge||{};for(let t in n){let{c:a,r:l,cs:r,rs:o}=n[t];c<=l+o-1&&c>l&&e>=a&&e<=a+r-1&&(s[c+\"_\"+e].t=null)}}}else if(\"border-bottom\"==r){if(null!=o.rowhidden&&null!=o.rowhidden[f])continue;for(let e=m;e<=p;e++){null==s[f+\"_\"+e]&&(s[f+\"_\"+e]={}),s[f+\"_\"+e].b={color:u,style:d};let t=f+1;if(t<i.length&&s[t+\"_\"+e])if(null!=i[t]&&\"object\"==ad(i[t][e])&&null!=i[t][e].mc){let n=i[t][e];o.merge[n.mc.r+\"_\"+n.mc.c].r==t&&(s[t+\"_\"+e].t={color:u,style:d})}else s[t+\"_\"+e].t={color:u,style:d};let n=o.merge||{};for(let t in n){let{c:a,r:l,cs:r,rs:o}=n[t];f<l+o-1&&f>=l&&e>=a&&e<=a+r-1&&(s[f+\"_\"+e].b=null)}}}else if(\"border-all\"==r){for(let e=c;e<=f;e++)if(null==o.rowhidden||null==o.rowhidden[e])for(let t=m;t<=p;t++){if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r==e&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d}),a.r+a.rs-1==e&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d}),a.c==t&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d}),a.c+a.cs-1==t&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d};if(e==c){let e=c-1;if(e>=0&&s[e+\"_\"+t])if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r+a.rs-1==e&&(s[e+\"_\"+t].b={color:u,style:d})}else s[e+\"_\"+t].b={color:u,style:d}}if(e==f){let e=f+1;if(e<i.length&&s[e+\"_\"+t])if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t];o.merge[n.mc.r+\"_\"+n.mc.c].r==e&&(s[e+\"_\"+t].t={color:u,style:d})}else s[e+\"_\"+t].t={color:u,style:d}}if(t==m){let t=m-1;if(t>=0&&s[e+\"_\"+t])if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.c+a.cs-1==t&&(s[e+\"_\"+t].r={color:u,style:d})}else s[e+\"_\"+t].r={color:u,style:d}}if(t==p){let t=p+1;if(t<i[0].length&&s[e+\"_\"+t])if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t];o.merge[n.mc.r+\"_\"+n.mc.c].c==t&&(s[e+\"_\"+t].l={color:u,style:d})}else s[e+\"_\"+t].l={color:u,style:d}}}}else if(\"border-outside\"==r){for(let e=c;e<=f;e++)if(null==o.rowhidden||null==o.rowhidden[e])for(let t=m;t<=p;t++)if(e==c||e==f||t==m||t==p){if(e==c){null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d};let n=c-1;if(n>=0&&s[n+\"_\"+t])if(null!=i[n]&&\"object\"==ad(i[n][t])&&null!=i[n][t].mc){let e=i[n][t],a=o.merge[e.mc.r+\"_\"+e.mc.c];a.r+a.rs-1==n&&(s[n+\"_\"+t].b={color:u,style:d})}else s[n+\"_\"+t].b={color:u,style:d}}if(e==f){null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d};let n=f+1;if(n<i.length&&s[n+\"_\"+t])if(null!=i[n]&&\"object\"==ad(i[n][t])&&null!=i[n][t].mc){let e=i[n][t];o.merge[e.mc.r+\"_\"+e.mc.c].r==n&&(s[n+\"_\"+t].t={color:u,style:d})}else s[n+\"_\"+t].t={color:u,style:d}}if(t==m){null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d};let n=m-1;if(n>=0&&s[e+\"_\"+n])if(null!=i[e]&&\"object\"==ad(i[e][n])&&null!=i[e][n].mc){let t=i[e][n],a=o.merge[t.mc.r+\"_\"+t.mc.c];a.c+a.cs-1==n&&(s[e+\"_\"+n].r={color:u,style:d})}else s[e+\"_\"+n].r={color:u,style:d}}if(t==p){null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d};let n=p+1;if(n<i[0].length&&s[e+\"_\"+n])if(null!=i[e]&&\"object\"==ad(i[e][n])&&null!=i[e][n].mc){let t=i[e][n];o.merge[t.mc.r+\"_\"+t.mc.c].c==n&&(s[e+\"_\"+n].l={color:u,style:d})}else s[e+\"_\"+n].l={color:u,style:d}}}}else if(\"border-inside\"==r){for(let e=c;e<=f;e++)if(null==o.rowhidden||null==o.rowhidden[e])for(let t=m;t<=p;t++)if(e==c&&t==m)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d});else if(e==f&&t==m)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d});else if(e==c&&t==p)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d});else if(e==f&&t==p)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d});else if(e==c)if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.c==t?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d}):a.c+a.cs-1==t&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d};else if(e==f)if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.c==t?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d}):a.c+a.cs-1==t&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d};else if(t==m)if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r==e?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d}):a.r+a.rs-1==e&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d};else if(t==p)if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r==e?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d}):a.r+a.rs-1==e&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d};else if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r==e?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d}):a.r+a.rs-1==e&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d}),a.c==t?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d}):a.c+a.cs-1==t&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].r={color:u,style:d},s[e+\"_\"+t].t={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d}}else if(\"border-horizontal\"==r){for(let e=c;e<=f;e++)if(null==o.rowhidden||null==o.rowhidden[e])for(let t=m;t<=p;t++)if(e==c)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d});else if(e==f)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d});else if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c];a.r==e?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d}):a.r+a.rs-1==e&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].b={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].t={color:u,style:d},s[e+\"_\"+t].b={color:u,style:d}}else if(\"border-vertical\"==r){for(let e=c;e<=f;e++)if(null==o.rowhidden||null==o.rowhidden[e])for(let t=m;t<=p;t++)if(t==m)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d});else if(t==p)null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc||(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d});else if(null!=i[e]&&\"object\"==ad(i[e][t])&&null!=i[e][t].mc){let n=i[e][t],a=o.merge[n.mc.r+\"_\"+n.mc.c]||{};a.c==t?(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d}):a.c+a.cs-1==t&&(null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].r={color:u,style:d})}else null==s[e+\"_\"+t]&&(s[e+\"_\"+t]={}),s[e+\"_\"+t].l={color:u,style:d},s[e+\"_\"+t].r={color:u,style:d}}else if(\"border-none\"==r)for(let e=c;e<=f;e++)if(null==o.rowhidden||null==o.rowhidden[e])for(let t=m;t<=p;t++){if(null!=s[e+\"_\"+t]&&delete s[e+\"_\"+t],e==c){let e=c-1;e>=0&&s[e+\"_\"+t]&&delete s[e+\"_\"+t].b}if(e==f){let e=f+1;e<i.length&&s[e+\"_\"+t]&&delete s[e+\"_\"+t].t}if(t==m){let t=m-1;t>=0&&s[e+\"_\"+t]&&delete s[e+\"_\"+t].r}if(t==p){let t=p+1;t<i[0].length&&s[e+\"_\"+t]&&delete s[e+\"_\"+t].l}}}}else if(\"cell\"==r){let r=c[t].value,u=r.row_index,d=r.col_index;if(u<e||u>n||d<a||d>l||null!=o.rowhidden&&null!=o.rowhidden[u])continue;if(null!=r.l||null!=r.r||null!=r.t||null!=r.b)if(null==s[u+\"_\"+d]&&(s[u+\"_\"+d]={}),null!=i[u]&&\"object\"==ad(i[u][d])&&null!=i[u][d].mc){let e=i[u][d],t=o.merge[e.mc.r+\"_\"+e.mc.c]||{};if(null!=r.l&&d==t.c){s[u+\"_\"+d].l={color:r.l.color,style:r.l.style};let e=d-1;if(e>=0&&s[u+\"_\"+e])if(null!=i[u]&&\"object\"==ad(i[u][e])&&null!=i[u][e].mc){let t=i[u][e],n=o.merge[t.mc.r+\"_\"+t.mc.c];n.c+n.cs-1==e&&(s[u+\"_\"+e].r={color:r.l.color,style:r.l.style})}else s[u+\"_\"+e].r={color:r.l.color,style:r.l.style}}else s[u+\"_\"+d].l=null;if(null!=r.r&&d==t.c+t.cs-1){s[u+\"_\"+d].r={color:r.r.color,style:r.r.style};let e=d+1;if(e<i[0].length&&s[u+\"_\"+e])if(null!=i[u]&&\"object\"==ad(i[u][e])&&null!=i[u][e].mc){let t=i[u][e];o.merge[t.mc.r+\"_\"+t.mc.c].c==e&&(s[u+\"_\"+e].l={color:r.r.color,style:r.r.style})}else s[u+\"_\"+e].l={color:r.r.color,style:r.r.style}}else s[u+\"_\"+d].r=null;if(null!=r.t&&u==t.r){s[u+\"_\"+d].t={color:r.t.color,style:r.t.style};let e=u-1;if(e>=0&&s[e+\"_\"+d])if(null!=i[e]&&\"object\"==ad(i[e][d])&&null!=i[e][d].mc){let t=i[e][d],n=o.merge[t.mc.r+\"_\"+t.mc.c];n.r+n.rs-1==e&&(s[e+\"_\"+d].b={color:r.t.color,style:r.t.style})}else s[e+\"_\"+d].b={color:r.t.color,style:r.t.style}}else s[u+\"_\"+d].t=null;if(null!=r.b&&u==t.r+t.rs-1){s[u+\"_\"+d].b={color:r.b.color,style:r.b.style};let e=u+1;if(e<i.length&&s[e+\"_\"+d])if(null!=i[e]&&\"object\"==ad(i[e][d])&&null!=i[e][d].mc){let t=i[e][d];o.merge[t.mc.r+\"_\"+t.mc.c].r==e&&(s[e+\"_\"+d].t={color:r.b.color,style:r.b.style})}else s[e+\"_\"+d].t={color:r.b.color,style:r.b.style}}else s[u+\"_\"+d].b=null}else{if(null!=r.l){s[u+\"_\"+d].l={color:r.l.color,style:r.l.style};let e=d-1;if(e>=0&&s[u+\"_\"+e])if(null!=i[u]&&\"object\"==ad(i[u][e])&&null!=i[u][e].mc){let t=i[u][e],n=o.merge[t.mc.r+\"_\"+t.mc.c];n.c+n.cs-1==e&&(s[u+\"_\"+e].r={color:r.l.color,style:r.l.style})}else s[u+\"_\"+e].r={color:r.l.color,style:r.l.style}}else s[u+\"_\"+d].l=null;if(null!=r.r){s[u+\"_\"+d].r={color:r.r.color,style:r.r.style};let e=d+1;if(e<i[0].length&&s[u+\"_\"+e])if(null!=i[u]&&\"object\"==ad(i[u][e])&&null!=i[u][e].mc){let t=i[u][e];o.merge[t.mc.r+\"_\"+t.mc.c].c==e&&(s[u+\"_\"+e].l={color:r.r.color,style:r.r.style})}else s[u+\"_\"+e].l={color:r.r.color,style:r.r.style}}else s[u+\"_\"+d].r=null;if(null!=r.t){s[u+\"_\"+d].t={color:r.t.color,style:r.t.style};let e=u-1;if(e>=0&&s[e+\"_\"+d])if(null!=i[e]&&\"object\"==ad(i[e][d])&&null!=i[e][d].mc){let t=i[e][d],n=o.merge[t.mc.r+\"_\"+t.mc.c];n.r+n.rs-1==e&&(s[e+\"_\"+d].b={color:r.t.color,style:r.t.style})}else s[e+\"_\"+d].b={color:r.t.color,style:r.t.style}}else s[u+\"_\"+d].t=null;if(null!=r.b){s[u+\"_\"+d].b={color:r.b.color,style:r.b.style};let e=u+1;if(e<i.length&&s[e+\"_\"+d])if(null!=i[e]&&\"object\"==ad(i[e][d])&&null!=i[e][d].mc){let t=i[e][d];o.merge[t.mc.r+\"_\"+t.mc.c].r==e&&(s[e+\"_\"+d].t={color:r.b.color,style:r.b.style})}else s[e+\"_\"+d].t={color:r.b.color,style:r.b.style}}else s[u+\"_\"+d].b=null}else delete s[u+\"_\"+d]}}return s}function _l(e){let n,a,l={};return null==e?(n=t.config,a=t.flowdata):(n=t.luckysheetfile[Mt(e)].config,a=t.luckysheetfile[Mt(e)].data),l=xl(0,a.length,0,a[0].length,e),l}var Cl,Tl,Sl,$l,Il=y((()=>{qt(),_d(),x()})),Rl=y((()=>{na(),La(),Il(),E(),Ma(),fo(),gn(),Ci(),To(),dr(),Xu(),qt(),_d(),x(),K(),Cl=k(ma()),Tl={iconHtml:'<div id=\"luckysheet-dropCell-icon\" style=\"position: absolute;padding: 2px;background-color: #f1f1f1;z-index: 990;cursor: pointer;\"><div id=\"icon_dropCell\"></div></div>',typeListHtml:'<div id=\"luckysheet-dropCell-typeList\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"0\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${copyCell}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"1\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${sequence}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"2\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${onlyFormat}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"3\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${noFormat}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"4\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${day}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"5\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${workDay}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"6\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${month}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"7\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${year}</div></div><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" data-type=\"8\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 2px;\"><span style=\"margin-right:5px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span>${chineseNumber}</div></div></div>',copyRange:{},applyRange:{},applyType:null,direction:null,chnNumChar:{\"零\":0,\"一\":1,\"二\":2,\"三\":3,\"四\":4,\"五\":5,\"六\":6,\"七\":7,\"八\":8,\"九\":9},chnNameValue:{\"十\":{value:10,secUnit:!1},\"百\":{value:100,secUnit:!1},\"千\":{value:1e3,secUnit:!1},\"万\":{value:1e4,secUnit:!0},\"亿\":{value:1e8,secUnit:!0}},ChineseToNumber:function(e){let t=this,n=0,a=0,l=0,r=!1,o=e.split(\"\");for(let e=0;e<o.length;e++){let i=t.chnNumChar[o[e]];if(void 0!==i)l=i,e==o.length-1&&(a+=l);else{let i=t.chnNameValue[o[e]].value;r=t.chnNameValue[o[e]].secUnit,r?(a=(a+l)*i,n+=a,a=0):a+=l*i,l=0}}return n+a},chnNumChar2:[\"零\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\",\"七\",\"八\",\"九\"],chnUnitSection:[\"\",\"万\",\"亿\",\"万亿\",\"亿亿\"],chnUnitChar:[\"\",\"十\",\"百\",\"千\"],SectionToChinese:function(e){let t=this,n=\"\",a=\"\",l=0,r=!0;for(;e>0;){let o=e%10;0==o?r||(r=!0,a=t.chnNumChar2[o]+a):(r=!1,n=t.chnNumChar2[o],n+=t.chnUnitChar[l],a=n+a),l++,e=Math.floor(e/10)}return a},NumberToChinese:function(e){let t=this,n=0,a=\"\",l=\"\",r=!1;if(0==e)return t.chnNumChar2[0];for(;e>0;){let o=e%1e4;r&&(l=t.chnNumChar2[0]+l),a=t.SectionToChinese(o),a+=0!=o?t.chnUnitSection[n]:t.chnUnitSection[0],l=a+l,r=o<1e3&&o>0,e=Math.floor(e/1e4),n++}return l},isChnNumber:function(e){let t=this,n=!0;if(e)if(1==e.length)n=\"日\"==e||e in t.chnNumChar;else{let a=e.split(\"\");for(let e=0;e<a.length;e++)if(!(a[e]in t.chnNumChar)&&!(a[e]in t.chnNameValue)){n=!1;break}}return n},isExtendNumber:function(e){let t=/0|([1-9]+[0-9]*)/g,n=t.test(e);if(n){let a=e.match(t),l=a[a.length-1],r=e.lastIndexOf(l),o=e.substr(0,r),i=e.substr(r+l.length);return[n,Number(l),o,i]}return[n]},isChnWeek1:function(e){let t;return t=1==e.length&&(\"日\"==e||this.ChineseToNumber(e)<7),t},isChnWeek2:function(e){let t;return t=2==e.length&&(\"周一\"==e||\"周二\"==e||\"周三\"==e||\"周四\"==e||\"周五\"==e||\"周六\"==e||\"周日\"==e),t},isChnWeek3:function(e){let t;return t=3==e.length&&(\"星期一\"==e||\"星期二\"==e||\"星期三\"==e||\"星期四\"==e||\"星期五\"==e||\"星期六\"==e||\"星期日\"==e),t},createIcon:function(){let e,t,n=this,a=n.copyRange.row[1],l=n.copyRange.column[1],r=n.applyRange.row[1],o=n.applyRange.column[1];r>=a&&o>=l?(e=r,t=o):(e=a,t=l);let i=Zn(e)[1],s=(Zn(e)[0],Qn(t)[1]);Qn(t)[0];$(\"#luckysheet-dropCell-icon\").remove(),$(\"#luckysheet-cell-main\").append(n.iconHtml),$(\"#luckysheet-dropCell-icon\").css({left:s,top:i}),$(\"#luckysheet-dropCell-icon\").mouseover((function(){$(this).css(\"background-color\",\"#ffe8e8\")})).mouseleave((function(){$(this).css(\"background-color\",\"#f1f1f1\")})).mousedown((function(e){$(\"#luckysheet-dropCell-typeList\").remove();let t=X().dropCell;$(\"body\").append(nd(n.typeListHtml,{copyCell:t.copyCell,sequence:t.sequence,onlyFormat:t.onlyFormat,noFormat:t.noFormat,day:t.day,workDay:t.workDay,month:t.month,year:t.year,chineseNumber:t.chineseNumber}));let a=n.typeItemHide();!a[0]&&!a[1]&&!a[2]&&!a[3]&&!a[4]&&!a[5]&&!a[6]&&($(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=1]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=4]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=5]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=6]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=7]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=8]\").hide()),a[2]||($(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=4]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=5]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=6]\").hide(),$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=7]\").hide()),a[3]||$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=8]\").hide();let l=$(this).offset().left,r=$(this).offset().top+25,o=$(window).height(),i=$(window).width(),s=$(\"#luckysheet-dropCell-typeList\").width(),c=$(\"#luckysheet-dropCell-typeList\").height();l+s>i&&(l-=s),r+c>o&&(r=r-c-38),r<0&&(r=0),$(\"#luckysheet-dropCell-typeList\").css({left:l,top:r}).show(),$(\"#luckysheet-dropCell-icon\").mouseleave((function(){$(this).css(\"backgroundColor\",\"#ffe8e8\")}));let u=n.applyType;$(\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=\"+u+\"]\").find(\"span\").append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>'),e.stopPropagation()})),$(document).off(\"click.dCtypeList\").on(\"click.dCtypeList\",\"#luckysheet-dropCell-typeList .luckysheet-cols-menuitem\",(function(){$(\"#luckysheet-dropCell-typeList .fa-check\").remove(),$(this).find(\"span\").append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>');let e=$(this).attr(\"data-type\");n.applyType=e,n.update(),$(\"#luckysheet-dropCell-typeList\").hide(),$(\"#luckysheet-dropCell-icon\").css(\"backgroundColor\",\"#f1f1f1\"),$(\"#luckysheet-dropCell-icon\").mouseleave((function(){$(this).css(\"backgroundColor\",\"#f1f1f1\")})),za()}))},typeItemHide:function(){let e=this,n=e.copyRange,a=n.row[0],l=n.row[1],r=n.column[0],o=n.column[1],i=!1,s=!1,c=!1,u=!1,d=!1,h=!1,f=!1;for(let n=a;n<=l;n++)for(let a=r;a<=o;a++)if(t.flowdata[n][a]){let l=t.flowdata[n][a];\"object\"==ad(l)&&null!=l.v&&null==l.f&&(null!=l.ct&&\"n\"==l.ct.t?i=!0:null!=l.ct&&\"d\"==l.ct.t?c=!0:e.isExtendNumber(l.m)[0]?s=!0:e.isChnNumber(l.m)&&\"日\"!=l.m?u=!0:\"日\"==l.m?d=!0:e.isChnWeek2(l.m)?h=!0:e.isChnWeek3(l.m)&&(f=!0))}return[i,s,c,u,d,h,f]},update:function(){let e=this;if(!Xl([e.applyRange],t.currentSheetIndex)||!1===t.allowEdit)return;let n,a=mn.deepCopyFlowData(t.flowdata),l=t.luckysheetfile[Mt(t.currentSheetIndex)],r=$.extend(!0,{},t.config),o=_l(),i=$.extend(!0,{},l.dataVerification),s=e.direction,c=(e.applyType,e.copyRange),u=c.row[0],d=c.row[1],h=c.column[0],f=c.column[1],m=e.getCopyData(a,u,d,h,f,s);\"down\"==s||\"up\"==s?n=d-u+1:(\"right\"==s||\"left\"==s)&&(n=f-h+1);let p=e.applyRange,g=p.row[0],y=p.row[1],v=p.column[0],b=p.column[1];if(\"down\"==s||\"up\"==s){let t=y-g+1;for(let l=v;l<=b;l++){let c=m[l-v],h=e.getApplyData(c,n,t);if(\"down\"==s)for(let e=g;e<=y;e++){let t=h[e-g];if(null!=t.f){let n=\"=\"+wi.functionCopy(t.f,\"down\",e-g+1),r=wi.execfunction(n,e,l);if(wi.execFunctionGroup(e,l,r[1],void 0,a),t.f=r[2],t.v=r[1],null!=t.spl)t.spl=r[3].data;else if(C(t.v)&&!/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(t.v)){if(t.v==1/0||t.v==-1/0)t.m=t.v.toString();else if(t.v.toString().indexOf(\"e\")>-1){let e=t.v.toString().split(\".\")[1].split(\"e\")[0].length;e>5&&(e=5),t.m=t.v.toExponential(e).toString()}else{let e;\"##0.00\"===t.ct.fa?(e=_a(Math.round(1e9*t.v)/1e9+\".00\"),t.m=e[0].toString()):(e=_a(Math.round(1e9*t.v)/1e9),t.m=e[0].toString())}t.ct=t.ct||{fa:\"General\",t:\"n\"}}else{let e=_a(t.v);t.m=e[0].toString(),t.ct=e[1]}}a[e][l]=t;let s=u+(e-g)%n,c=l;if(o[s+\"_\"+c]){let t={rangeType:\"cell\",value:{row_index:e,col_index:l,l:o[s+\"_\"+c].l,r:o[s+\"_\"+c].r,t:o[s+\"_\"+c].t,b:o[s+\"_\"+c].b}};r.borderInfo.push(t)}else if(o[e+\"_\"+l]){let t={rangeType:\"cell\",value:{row_index:e,col_index:l,l:null,r:null,t:null,b:null}};r.borderInfo.push(t)}i[s+\"_\"+c]&&(i[e+\"_\"+l]=i[s+\"_\"+c])}if(\"up\"==s)for(let e=y;e>=g;e--){let t=h[y-e];if(null!=t.f){let n=\"=\"+wi.functionCopy(t.f,\"up\",y-e+1),r=wi.execfunction(n,e,l);if(wi.execFunctionGroup(e,l,r[1],void 0,a),t.f=r[2],t.v=r[1],null!=t.spl)t.spl=r[3].data;else if(C(t.v)&&!/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(t.v)){if(t.v==1/0||t.v==-1/0)t.m=t.v.toString();else if(t.v.toString().indexOf(\"e\")>-1){let e=t.v.toString().split(\".\")[1].split(\"e\")[0].length;e>5&&(e=5),t.m=t.v.toExponential(e).toString()}else{let e=_a(Math.round(1e9*t.v)/1e9);t.m=e[0].toString()}t.ct={fa:\"General\",t:\"n\"}}else{let e=_a(t.v);t.m=e[0].toString(),t.ct=e[1]}}a[e][l]=t;let s=d-(y-e)%n,c=l;if(o[s+\"_\"+c]){let t={rangeType:\"cell\",value:{row_index:e,col_index:l,l:o[s+\"_\"+c].l,r:o[s+\"_\"+c].r,t:o[s+\"_\"+c].t,b:o[s+\"_\"+c].b}};r.borderInfo.push(t)}else if(o[e+\"_\"+l]){let t={rangeType:\"cell\",value:{row_index:e,col_index:l,l:null,r:null,t:null,b:null}};r.borderInfo.push(t)}i[s+\"_\"+c]&&(i[e+\"_\"+l]=i[s+\"_\"+c])}}}else if(\"right\"==s||\"left\"==s){let t=b-v+1;for(let l=g;l<=y;l++){let c=m[l-g],u=e.getApplyData(c,n,t);if(\"right\"==s)for(let e=v;e<=b;e++){let t=u[e-v];if(null!=t.f){let n=\"=\"+wi.functionCopy(t.f,\"right\",e-v+1),r=wi.execfunction(n,l,e);if(wi.execFunctionGroup(l,e,r[1],void 0,a),t.f=r[2],t.v=r[1],null!=t.spl)t.spl=r[3].data;else if(C(t.v)&&!/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(t.v)){if(t.v==1/0||t.v==-1/0)t.m=t.v.toString();else if(t.v.toString().indexOf(\"e\")>-1){let e=t.v.toString().split(\".\")[1].split(\"e\")[0].length;e>5&&(e=5),t.m=t.v.toExponential(e).toString()}else{let e=_a(Math.round(1e9*t.v)/1e9);t.m=e[0].toString()}t.ct={fa:\"General\",t:\"n\"}}else{let e=_a(t.v);t.m=e[0].toString(),t.ct=e[1]}}a[l][e]=t;let s=l,c=h+(e-v)%n;if(o[s+\"_\"+c]){let t={rangeType:\"cell\",value:{row_index:l,col_index:e,l:o[s+\"_\"+c].l,r:o[s+\"_\"+c].r,t:o[s+\"_\"+c].t,b:o[s+\"_\"+c].b}};r.borderInfo.push(t)}else if(o[l+\"_\"+e]){let t={rangeType:\"cell\",value:{row_index:l,col_index:e,l:null,r:null,t:null,b:null}};r.borderInfo.push(t)}i[s+\"_\"+c]&&(i[l+\"_\"+e]=i[s+\"_\"+c])}if(\"left\"==s)for(let e=b;e>=v;e--){let t=u[b-e];if(null!=t.f){let n=\"=\"+wi.functionCopy(t.f,\"left\",b-e+1),r=wi.execfunction(n,l,e);if(wi.execFunctionGroup(l,e,r[1],void 0,a),t.f=r[2],t.v=r[1],null!=t.spl)t.spl=r[3].data;else if(C(t.v)&&!/^\\d{6}(18|19|20)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$/i.test(t.v)){if(t.v==1/0||t.v==-1/0)t.m=t.v.toString();else if(t.v.toString().indexOf(\"e\")>-1){let e=t.v.toString().split(\".\")[1].split(\"e\")[0].length;e>5&&(e=5),t.m=t.v.toExponential(e).toString()}else{let e=_a(Math.round(1e9*t.v)/1e9);t.m=e[0].toString()}t.ct={fa:\"General\",t:\"n\"}}else{let e=_a(t.v);t.m=e[0].toString(),t.ct=e[1]}}a[l][e]=t;let s=l,c=f-(b-e)%n;if(o[s+\"_\"+c]){let t={rangeType:\"cell\",value:{row_index:l,col_index:e,l:o[s+\"_\"+c].l,r:o[s+\"_\"+c].r,t:o[s+\"_\"+c].t,b:o[s+\"_\"+c].b}};r.borderInfo.push(t)}else if(o[l+\"_\"+e]){let t={rangeType:\"cell\",value:{row_index:l,col_index:e,l:null,r:null,t:null,b:null}};r.borderInfo.push(t)}i[s+\"_\"+c]&&(i[l+\"_\"+e]=i[s+\"_\"+c])}}}let k=$.extend(!0,[],l.luckysheet_conditionformat_save);if(null!=k&&k.length>0)for(let e=0;e<k.length;e++){let t=k[e].cellrange,n=[];for(let e=0;e<t.length;e++){let a=ko.CFSplitRange(t[e],{row:c.row,column:c.column},{row:p.row,column:p.column},\"operatePart\");a.length>0&&(n=n.concat(a))}n.length>0&&k[e].cellrange.push(p)}let w={cfg:r,cdformat:k,dataVerification:i};ao(a,t.luckysheet_select_save,w),Pu()},getCopyData:function(e,t,n,a,l,r){let o,i,s,c,u=this,d=[];\"down\"==r||\"up\"==r?(o=a,i=l,s=t,c=n):(\"right\"==r||\"left\"==r)&&(o=t,i=n,s=a,c=l);for(let t=o;t<=i;t++){let n={},a=[],l=[],o=\"\",i=null,h=null,f=!0;for(let d=s;d<=c;d++){let m,p;if(\"down\"==r||\"up\"==r?m=e[d][t]:(\"right\"==r||\"left\"==r)&&(m=e[t][d]),m&&m.v&&null==m.f)if(m.ct&&\"n\"==m.ct.t)p=\"number\",i=null,h=null;else if(m.ct&&\"d\"==m.ct.t)p=\"date\",i=null,h=null;else if(u.isExtendNumber(m.m)[0]){p=\"extendNumber\";let e=u.isExtendNumber(m.m);null==i||null==h?(f=!0,i=e[2],h=e[3]):e[2]!=i||e[3]!=h?(f=!1,i=e[2],h=e[3]):f=!0}else u.isChnNumber(m.m)?(p=\"chnNumber\",i=null,h=null):u.isChnWeek2(m.m)?(p=\"chnWeek2\",i=null,h=null):u.isChnWeek3(m.m)?(p=\"chnWeek3\",i=null,h=null):(p=\"other\",i=null,h=null);else p=\"other\",i=null,h=null;\"extendNumber\"==p?d==s?s==c?(o=p,a.push(m),l.push(d-s+1),n[o]=[],n[o].push({data:a,index:l})):(o=p,a.push(m),l.push(d-s+1)):d==c?o==p&&f?(a.push(m),l.push(d-s+1),o in n||(n[o]=[]),n[o].push({data:a,index:l})):(o in n||(n[o]=[]),n[o].push({data:a,index:l}),o=p,a=[],a.push(m),l=[],l.push(d-s+1),o in n||(n[o]=[]),n[o].push({data:a,index:l})):o==p&&f?(a.push(m),l.push(d-s+1)):(o in n||(n[o]=[]),n[o].push({data:a,index:l}),o=p,a=[],a.push(m),l=[],l.push(d-s+1)):d==s?s==c?(o=p,a.push(m),l.push(d-s+1),n[o]=[],n[o].push({data:a,index:l})):(o=p,a.push(m),l.push(d-s+1)):d==c?o==p?(a.push(m),l.push(d-s+1),o in n||(n[o]=[]),n[o].push({data:a,index:l})):(o in n||(n[o]=[]),n[o].push({data:a,index:l}),o=p,a=[],a.push(m),l=[],l.push(d-s+1),o in n||(n[o]=[]),n[o].push({data:a,index:l})):o==p?(a.push(m),l.push(d-s+1)):(o in n||(n[o]=[]),n[o].push({data:a,index:l}),o=p,a=[],a.push(m),l=[],l.push(d-s+1))}d.push(n)}return d},getApplyData:function(e,t,n){let a=this,l=[],r=a.direction,o=a.applyType,i=Math.floor(n/t),s=n%t,c=e.number,u=[];if(c)for(let e=0;e<c.length;e++){let l,d=a.getLenS(c[e].index,s),h=c[e].index.length*i+d;l=\"1\"==o||\"3\"==o?a.getDataByType(c[e].data,h,r,o,\"number\"):\"2\"==o?a.getDataByType(c[e].data,h,r,o):a.getDataByType(c[e].data,h,r,\"0\");let f=a.getDataIndex(t,n,c[e].index);u.push({data:l,index:f})}let d=e.extendNumber,h=[];if(d)for(let e=0;e<d.length;e++){let l,c=a.getLenS(d[e].index,s),u=d[e].index.length*i+c;l=\"1\"==o||\"3\"==o?a.getDataByType(d[e].data,u,r,o,\"extendNumber\"):\"2\"==o?a.getDataByType(d[e].data,u,r,o):a.getDataByType(d[e].data,u,r,\"0\");let f=a.getDataIndex(t,n,d[e].index);h.push({data:l,index:f})}let f=e.date,m=[];if(f)for(let e=0;e<f.length;e++){let l,c=a.getLenS(f[e].index,s),u=f[e].index.length*i+c;l=\"1\"==o||\"3\"==o?a.getDataByType(f[e].data,u,r,o,\"date\"):\"8\"==o?a.getDataByType(f[e].data,u,r,\"0\"):a.getDataByType(f[e].data,u,r,o);let d=a.getDataIndex(t,n,f[e].index);m.push({data:l,index:d})}let p=e.chnNumber,g=[];if(p)for(let e=0;e<p.length;e++){let l,c=a.getLenS(p[e].index,s),u=p[e].index.length*i+c;l=\"1\"==o||\"3\"==o?a.getDataByType(p[e].data,u,r,o,\"chnNumber\"):\"2\"==o||\"8\"==o?a.getDataByType(p[e].data,u,r,o):a.getDataByType(p[e].data,u,r,\"0\");let d=a.getDataIndex(t,n,p[e].index);g.push({data:l,index:d})}let y=e.chnWeek2,v=[];if(y)for(let e=0;e<y.length;e++){let l,c=a.getLenS(y[e].index,s),u=y[e].index.length*i+c;l=\"1\"==o||\"3\"==o?a.getDataByType(y[e].data,u,r,o,\"chnWeek2\"):\"2\"==o?a.getDataByType(y[e].data,u,r,o):a.getDataByType(y[e].data,u,r,\"0\");let d=a.getDataIndex(t,n,y[e].index);v.push({data:l,index:d})}let b=e.chnWeek3,k=[];if(b)for(let e=0;e<b.length;e++){let l,c=a.getLenS(b[e].index,s),u=b[e].index.length*i+c;l=\"1\"==o||\"3\"==o?a.getDataByType(b[e].data,u,r,o,\"chnWeek3\"):\"2\"==o?a.getDataByType(b[e].data,u,r,o):a.getDataByType(b[e].data,u,r,\"0\");let d=a.getDataIndex(t,n,b[e].index);k.push({data:l,index:d})}let w=e.other,x=[];if(w)for(let e=0;e<w.length;e++){let l,c=a.getLenS(w[e].index,s),u=w[e].index.length*i+c;l=\"2\"==o||\"3\"==o?a.getDataByType(w[e].data,u,r,o):a.getDataByType(w[e].data,u,r,\"0\");let d=a.getDataIndex(t,n,w[e].index);x.push({data:l,index:d})}for(let e=1;e<=n;e++){if(u.length>0)for(let t=0;t<u.length;t++)e in u[t].index&&l.push(u[t].data[u[t].index[e]]);if(h.length>0)for(let t=0;t<h.length;t++)e in h[t].index&&l.push(h[t].data[h[t].index[e]]);if(m.length>0)for(let t=0;t<m.length;t++)e in m[t].index&&l.push(m[t].data[m[t].index[e]]);if(g.length>0)for(let t=0;t<g.length;t++)e in g[t].index&&l.push(g[t].data[g[t].index[e]]);if(v.length>0)for(let t=0;t<v.length;t++)e in v[t].index&&l.push(v[t].data[v[t].index[e]]);if(k.length>0)for(let t=0;t<k.length;t++)e in k[t].index&&l.push(k[t].data[k[t].index[e]]);if(x.length>0)for(let t=0;t<x.length;t++)e in x[t].index&&l.push(x[t].data[x[t].index[e]])}return l},getLenS:function(e,t){let n=0;for(let a=0;a<e.length&&e[a]<=t;a++)n++;return n},getDataIndex:function(e,t,n){let a={},l=Math.floor(t/e),r=t%e,o=0;if(l>0){for(let t=1;t<=l;t++)for(let l=0;l<n.length;l++)a[n[l]+(t-1)*e]=o,o++;for(let t=0;t<n.length&&n[t]<=r;t++)a[n[t]+e*l]=o,o++}else for(let e=0;e<n.length&&n[e]<=r;e++)a[n[e]]=o,o++;return a},getDataByType:function(e,t,n,a,l){let r=this,o=[];if(\"0\"==a)(\"up\"==n||\"left\"==n)&&e.reverse(),o=r.FillCopy(e,t);else if(\"1\"==a)if(\"number\"==l)o=r.FillSeries(e,t,n);else if(\"extendNumber\"==l)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillExtendNumber(e,t,a)}else{let a=[];for(let t=0;t<e.length;t++){let n=e[t].m;a.push(Number(r.isExtendNumber(n)[1]))}if((\"up\"==n||\"left\"==n)&&(e.reverse(),a.reverse()),r.isEqualDiff(a)){let n=a[1]-a[0];o=r.FillExtendNumber(e,t,n)}else o=r.FillCopy(e,t)}else if(\"date\"==l)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillDays(e,t,a)}else{(\"up\"==n||\"left\"==n)&&e.reverse();let a=r.judgeDate(e);if(a[0]&&a[3]){let n=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\");o=r.FillMonths(e,t,n)}else if(!a[0]&&a[2]){let n=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"days\");o=r.FillDays(e,t,n)}else o=r.FillCopy(e,t)}else if(\"chnNumber\"==l)if(1==e.length)if(\"日\"==e[0].m||r.ChineseToNumber(e[0].m)<7){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillChnWeek(e,t,a)}else{let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillChnNumber(e,t,a)}else{let a=!1;for(let t=0;t<e.length;t++)if(\"日\"==e[t].m){a=!0;break}let l=[],i=0;for(let t=0;t<e.length;t++)\"日\"==e[t].m?0==t?l.push(0):(i++,l.push(7*i)):a&&r.ChineseToNumber(e[t].m)>0&&r.ChineseToNumber(e[t].m)<7?l.push(r.ChineseToNumber(e[t].m)+7*i):l.push(r.ChineseToNumber(e[t].m));if((\"up\"==n||\"left\"==n)&&(e.reverse(),l.reverse()),r.isEqualDiff(l))if(a||l[l.length-1]<6&&l[0]>0||l[0]<6&&l[l.length-1]>0){let n=l[1]-l[0];o=r.FillChnWeek(e,t,n)}else{let n=l[1]-l[0];o=r.FillChnNumber(e,t,n)}else o=r.FillCopy(e,t)}else if(\"chnWeek2\"==l)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillChnWeek2(e,t,a)}else{let a=[],l=0;for(let t=0;t<e.length;t++){let n=e[t].m.substr(e[t].m.length-1,1);\"周日\"==e[t].m?0==t?a.push(0):(l++,a.push(7*l)):a.push(r.ChineseToNumber(n)+7*l)}if((\"up\"==n||\"left\"==n)&&(e.reverse(),a.reverse()),r.isEqualDiff(a)){let n=a[1]-a[0];o=r.FillChnWeek2(e,t,n)}else o=r.FillCopy(e,t)}else if(\"chnWeek3\"==l)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillChnWeek3(e,t,a)}else{let a=[],l=0;for(let t=0;t<e.length;t++){let n=e[t].m.substr(e[t].m.length-1,1);\"星期日\"==e[t].m?0==t?a.push(0):(l++,a.push(7*l)):a.push(r.ChineseToNumber(n)+7*l)}if((\"up\"==n||\"left\"==n)&&(e.reverse(),a.reverse()),r.isEqualDiff(a)){let n=a[1]-a[0];o=r.FillChnWeek3(e,t,n)}else o=r.FillCopy(e,t)}else(\"up\"==n||\"left\"==n)&&e.reverse(),o=r.FillCopy(e,t);else if(\"2\"==a)(\"up\"==n||\"left\"==n)&&e.reverse(),o=r.FillOnlyFormat(e,t);else if(\"3\"==a){let a=r.getDataByType(e,t,n,\"1\",l);o=r.FillWithoutFormat(a)}else if(\"4\"==a)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillDays(e,t,a)}else if(2==e.length){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"days\");o=r.FillDays(e,t,a)}else{(\"up\"==n||\"left\"==n)&&e.reverse();let a=r.judgeDate(e);if(a[0]&&a[3]){let n=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\");o=r.FillMonths(e,t,n)}else if(!a[0]&&a[2]){let n=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"days\");o=r.FillDays(e,t,n)}else o=r.FillCopy(e,t)}else if(\"5\"==a)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1);let l=Math.round(1.5*t);for(let n=1;n<=l;n++){let l=$.extend(!0,{},e[0]),r=(0,Cl.default)(l.m).add(n,\"days\").day();if(0==r||6==r)continue;let i=(0,Cl.default)(l.m).add(a*n,\"days\").format(\"YYYY-MM-DD\");if(l.m=i,l.v=_a(i)[2],o.push(l),o.length==t)break}}else if(2==e.length)if((0,Cl.default)(e[1].m).date()==(0,Cl.default)(e[0].m).date()&&0!=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\")){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\");for(let n=1;n<=t;n++){let t,l=(n-1)%e.length,r=$.extend(!0,{},e[l]),i=(0,Cl.default)(e[e.length-1]).add(a*n,\"months\").day();t=0==i?(0,Cl.default)(e[e.length-1]).add(a*n,\"months\").subtract(2,\"days\").format(\"YYYY-MM-DD\"):6==i?(0,Cl.default)(e[e.length-1]).add(a*n,\"months\").subtract(1,\"days\").format(\"YYYY-MM-DD\"):(0,Cl.default)(e[e.length-1]).add(a*n,\"months\").format(\"YYYY-MM-DD\"),r.m=t,r.v=_a(t)[2],o.push(r)}}else if(Math.abs((0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m)))>7){let a,l;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"months\").diff((0,Cl.default)(r.m),\"days\"));let s,c=(0,Cl.default)(r.m).add(l,\"days\").day();s=0==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(2,\"days\").format(\"YYYY-MM-DD\"):6==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(1,\"days\").format(\"YYYY-MM-DD\"):(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\"),r.m=s,r.v=_a(s)[2],o.push(r)}}else{let a,l;\"down\"==n||\"right\"==n?a=7:(\"up\"==n||\"left\"==n)&&(a=-7,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"days\").diff((0,Cl.default)(r.m),\"days\"));let s,c=(0,Cl.default)(r.m).add(l,\"days\").day();s=0==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(2,\"days\").format(\"YYYY-MM-DD\"):6==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(1,\"days\").format(\"YYYY-MM-DD\"):(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\"),r.m=s,r.v=_a(s)[2],o.push(r)}}else{let a=r.judgeDate(e);if(a[0]&&a[3]){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\");for(let n=1;n<=t;n++){let t,l=(n-1)%e.length,r=$.extend(!0,{},e[l]),i=(0,Cl.default)(e[e.length-1].m).add(a*n,\"months\").day();t=0==i?(0,Cl.default)(e[e.length-1].m).add(a*n,\"months\").subtract(2,\"days\").format(\"YYYY-MM-DD\"):6==i?(0,Cl.default)(e[e.length-1].m).add(a*n,\"months\").subtract(1,\"days\").format(\"YYYY-MM-DD\"):(0,Cl.default)(e[e.length-1].m).add(a*n,\"months\").format(\"YYYY-MM-DD\"),r.m=t,r.v=_a(t)[2],o.push(r)}}else if(!a[0]&&a[2])if(Math.abs((0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m)))>7){let a,l;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"months\").diff((0,Cl.default)(r.m),\"days\"));let s,c=(0,Cl.default)(r.m).add(l,\"days\").day();s=0==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(2,\"days\").format(\"YYYY-MM-DD\"):6==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(1,\"days\").format(\"YYYY-MM-DD\"):(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\"),r.m=s,r.v=_a(s)[2],o.push(r)}}else{let a,l;\"down\"==n||\"right\"==n?a=7:(\"up\"==n||\"left\"==n)&&(a=-7,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"days\").diff((0,Cl.default)(r.m),\"days\"));let s,c=(0,Cl.default)(r.m).add(l,\"days\").day();s=0==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(2,\"days\").format(\"YYYY-MM-DD\"):6==c?(0,Cl.default)(r.m).add(l,\"days\").subtract(1,\"days\").format(\"YYYY-MM-DD\"):(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\"),r.m=s,r.v=_a(s)[2],o.push(r)}}else(\"up\"==n||\"left\"==n)&&e.reverse(),o=r.FillCopy(e,t)}else if(\"6\"==a)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillMonths(e,t,a)}else if(2==e.length)if((0,Cl.default)(e[1].m).date()==(0,Cl.default)(e[0].m).date()&&0!=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\")){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\");o=r.FillMonths(e,t,a)}else{let a,l;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"months\").diff((0,Cl.default)(r.m),\"days\"));let s=(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\");r.m=s,r.v=_a(s)[2],o.push(r)}}else{let a=r.judgeDate(e);if(a[0]&&a[3]){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\");o=r.FillMonths(e,t,a)}else if(!a[0]&&a[2]){let a,l;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"months\").diff((0,Cl.default)(r.m),\"days\"));let s=(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\");r.m=s,r.v=_a(s)[2],o.push(r)}}else(\"up\"==n||\"left\"==n)&&e.reverse(),o=r.FillCopy(e,t)}else if(\"7\"==a)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillYears(e,t,a)}else if(2==e.length)if((0,Cl.default)(e[1].m).date()==(0,Cl.default)(e[0].m).date()&&(0,Cl.default)(e[1].m).month()==(0,Cl.default)(e[0].m).month()&&0!=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"years\")){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"years\");o=r.FillYears(e,t,a)}else{let a,l;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"years\").diff((0,Cl.default)(r.m),\"days\"));let s=(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\");r.m=s,r.v=_a(s)[2],o.push(r)}}else{let a=r.judgeDate(e);if(a[0]&&a[1]&&a[4]){(\"up\"==n||\"left\"==n)&&e.reverse();let a=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"years\");o=r.FillYears(e,t,a)}else if(a[0]&&a[3]||a[2]){let a,l;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1,e.reverse());for(let n=1;n<=t;n++){let t=(n-1)%e.length,r=$.extend(!0,{},e[t]),i=Math.ceil(n/e.length);0==t&&(l=(0,Cl.default)(r.m).add(a*i,\"years\").diff((0,Cl.default)(r.m),\"days\"));let s=(0,Cl.default)(r.m).add(l,\"days\").format(\"YYYY-MM-DD\");r.m=s,r.v=_a(s)[2],o.push(r)}}else(\"up\"==n||\"left\"==n)&&e.reverse(),o=r.FillCopy(e,t)}else if(\"8\"==a)if(1==e.length){let a;\"down\"==n||\"right\"==n?a=1:(\"up\"==n||\"left\"==n)&&(a=-1),o=r.FillChnNumber(e,t,a)}else{let a=[];for(let t=0;t<e.length;t++)a.push(r.ChineseToNumber(e[t].m));if((\"up\"==n||\"left\"==n)&&(e.reverse(),a.reverse()),r.isEqualDiff(a)){let n=a[1]-a[0];o=r.FillChnNumber(e,t,n)}else o=r.FillCopy(e,t)}return o},FillCopy:function(e,t){let n=[];for(let a=1;a<=t;a++){let t=(a-1)%e.length,l=$.extend(!0,{},e[t]);n.push(l)}return n},FillSeries:function(e,t,n){let a=this,l=[],r=[];for(let t=0;t<e.length;t++)r.push(Number(e[t].v));if(e.length>2&&a.isEqualRatio(r))for(let a=1;a<=t;a++){let t,r=(a-1)%e.length,o=$.extend(!0,{},e[r]);\"down\"==n||\"right\"==n?t=Number(e[e.length-1].v)*Math.pow(Number(e[1].v)/Number(e[0].v),a):(\"up\"==n||\"left\"==n)&&(t=Number(e[0].v)/Math.pow(Number(e[1].v)/Number(e[0].v),a)),o.v=t,o.m=Ca(o.ct.fa,t),l.push(o)}else{let o=a.getXArr(e.length);for(let i=1;i<=t;i++){let t,s=(i-1)%e.length,c=$.extend(!0,{},e[s]);\"down\"==n||\"right\"==n?t=a.forecast(e.length+i,r,o):(\"up\"==n||\"left\"==n)&&(t=a.forecast(1-i,r,o)),c.v=t,c.m=Ca(c.ct.fa,t),l.push(c)}}return l},FillExtendNumber:function(e,t,n){let a=[],l=/0|([1-9]+[0-9]*)/g;for(let r=1;r<=t;r++){let t=(r-1)%e.length,o=$.extend(!0,{},e[t]),i=e[e.length-1].m,s=i.match(l),c=s[s.length-1],u=Math.abs(Number(c)+n*r),d=i.lastIndexOf(c),h=i.substr(0,d)+u.toString()+i.substr(d+c.length);o.v=h,o.m=h,a.push(o)}return a},FillOnlyFormat:function(e,t){let n=[];for(let a=1;a<=t;a++){let t=(a-1)%e.length,l=$.extend(!0,{},e[t]);delete l.f,delete l.m,delete l.v,n.push(l)}return n},FillWithoutFormat:function(e){let t=[];for(let n=0;n<e.length;n++){let a,l=$.extend(!0,{},e[n]);a=null==l.f?{m:l.v.toString(),v:l.v}:{f:l.f,m:l.v.toString(),v:l.v},t.push(a)}return t},FillDays:function(e,t,n){let a=[];for(let l=1;l<=t;l++){let t=(l-1)%e.length,r=$.extend(!0,{},e[t]),o=Ca(\"yyyy-MM-dd\",r.v);o=(0,Cl.default)(o).add(n*l,\"days\").format(\"YYYY-MM-DD\"),r.v=_a(o)[2],r.m=Ca(r.ct.fa,r.v),a.push(r)}return a},FillMonths:function(e,t,n){let a=[];for(let l=1;l<=t;l++){let t=(l-1)%e.length,r=$.extend(!0,{},e[t]),o=Ca(\"yyyy-MM-dd\",r.v);o=(0,Cl.default)(o).add(n*l,\"months\").format(\"YYYY-MM-DD\"),r.v=_a(o)[2],r.m=Ca(r.ct.fa,r.v),a.push(r)}return a},FillYears:function(e,t,n){let a=[];for(let l=1;l<=t;l++){let t=(l-1)%e.length,r=$.extend(!0,{},e[t]),o=Ca(\"yyyy-MM-dd\",r.v);o=(0,Cl.default)(o).add(n*l,\"years\").format(\"YYYY-MM-DD\"),r.v=_a(o)[2],r.m=Ca(r.ct.fa,r.v),a.push(r)}return a},FillChnWeek:function(e,t,n){let a=this,l=[];for(let r=1;r<=t;r++){let t,o=(r-1)%e.length,i=$.extend(!0,{},e[o]);t=\"日\"==e[e.length-1].m?7+n*r:a.ChineseToNumber(e[e.length-1].m)+n*r,t<0&&(t=7*Math.ceil(Math.abs(t)/7)+t);let s=t%7;0==s?(i.m=\"日\",i.v=\"日\"):1==s?(i.m=\"一\",i.v=\"一\"):2==s?(i.m=\"二\",i.v=\"二\"):3==s?(i.m=\"三\",i.v=\"三\"):4==s?(i.m=\"四\",i.v=\"四\"):5==s?(i.m=\"五\",i.v=\"五\"):6==s&&(i.m=\"六\",i.v=\"六\"),l.push(i)}return l},FillChnWeek2:function(e,t,n){let a=this,l=[];for(let r=1;r<=t;r++){let t,o=(r-1)%e.length,i=$.extend(!0,{},e[o]);if(\"周日\"==e[e.length-1].m)t=7+n*r;else{let l=e[e.length-1].m,o=l.substr(l.length-1,1);t=a.ChineseToNumber(o)+n*r}t<0&&(t=7*Math.ceil(Math.abs(t)/7)+t);let s=t%7;0==s?(i.m=\"周日\",i.v=\"周日\"):1==s?(i.m=\"周一\",i.v=\"周一\"):2==s?(i.m=\"周二\",i.v=\"周二\"):3==s?(i.m=\"周三\",i.v=\"周三\"):4==s?(i.m=\"周四\",i.v=\"周四\"):5==s?(i.m=\"周五\",i.v=\"周五\"):6==s&&(i.m=\"周六\",i.v=\"周六\"),l.push(i)}return l},FillChnWeek3:function(e,t,n){let a=this,l=[];for(let r=1;r<=t;r++){let t,o=(r-1)%e.length,i=$.extend(!0,{},e[o]);if(\"星期日\"==e[e.length-1].m)t=7+n*r;else{let l=e[e.length-1].m,o=l.substr(l.length-1,1);t=a.ChineseToNumber(o)+n*r}t<0&&(t=7*Math.ceil(Math.abs(t)/7)+t);let s=t%7;0==s?(i.m=\"星期日\",i.v=\"星期日\"):1==s?(i.m=\"星期一\",i.v=\"星期一\"):2==s?(i.m=\"星期二\",i.v=\"星期二\"):3==s?(i.m=\"星期三\",i.v=\"星期三\"):4==s?(i.m=\"星期四\",i.v=\"星期四\"):5==s?(i.m=\"星期五\",i.v=\"星期五\"):6==s&&(i.m=\"星期六\",i.v=\"星期六\"),l.push(i)}return l},FillChnNumber:function(e,t,n){let a=this,l=[];for(let r=1;r<=t;r++){let t,o=(r-1)%e.length,i=$.extend(!0,{},e[o]),s=a.ChineseToNumber(e[e.length-1].m)+n*r;t=s<=0?\"零\":a.NumberToChinese(s),i.v=t,i.m=t.toString(),l.push(i)}return l},isEqualDiff:function(e){let t=!0,n=e[1]-e[0];for(let a=1;a<e.length;a++)if(e[a]-e[a-1]!=n){t=!1;break}return t},isEqualRatio:function(e){let t=!0,n=e[1]/e[0];for(let a=1;a<e.length;a++)if(e[a]/e[a-1]!=n){t=!1;break}return t},getXArr:function(e){let t=[];for(let n=1;n<=e;n++)t.push(n);return t},forecast:function(e,t,n){function a(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n];return t/e.length}let l,r=a(n),o=a(t),i=0,s=0;for(let e=0;e<n.length;e++)i+=(n[e]-r)*(t[e]-o),s+=(n[e]-r)*(n[e]-r);l=0==s?1:i/s;let c=o-l*r;return Math.round(1e5*(c+l*e))/1e5},judgeDate:function(e){let t=!0,n=!0,a=!0,l=!0,r=!0,o=(0,Cl.default)(e[0].m).date(),i=(0,Cl.default)(e[0].m).month(),s=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"days\"),c=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"months\"),u=(0,Cl.default)(e[1].m).diff((0,Cl.default)(e[0].m),\"years\");for(let d=1;d<e.length;d++)(0,Cl.default)(e[d].m).date()!=o&&(t=!1),(0,Cl.default)(e[d].m).month()!=i&&(n=!1),(0,Cl.default)(e[d].m).diff((0,Cl.default)(e[d-1].m),\"days\")!=s&&(a=!1),(0,Cl.default)(e[d].m).diff((0,Cl.default)(e[d-1].m),\"months\")!=c&&(l=!1),(0,Cl.default)(e[d].m).diff((0,Cl.default)(e[d-1].m),\"years\")!=u&&(r=!1);return 0==s&&(a=!1),0==c&&(l=!1),0==u&&(r=!1),[t,n,a,l,r]}}})),Al=y((()=>{qt(),Kn(),Xu(),ol(),_o(),ed(),wl(),Rl(),na(),x(),K(),fo(),$l=Sl={freezenHorizontalHTML:'<div id=\"luckysheet-freezebar-horizontal\" class=\"luckysheet-freezebar\" tabindex=\"0\"><div class=\"luckysheet-freezebar-handle luckysheet-freezebar-horizontal-handle\" ><div class=\"luckysheet-freezebar-handle-bar luckysheet-freezebar-horizontal-handle-title\" ></div><div class=\"luckysheet-freezebar-handle-bar luckysheet-freezebar-horizontal-handle-bar\" ></div></div><div class=\"luckysheet-freezebar-drop luckysheet-freezebar-horizontal-drop\" ><div class=\"luckysheet-freezebar-drop-bar luckysheet-freezebar-horizontal-drop-title\" ></div><div class=\"luckysheet-freezebar-drop-bar luckysheet-freezebar-horizontal-drop-bar\" >&nbsp;</div></div></div>',freezenVerticalHTML:'<div id=\"luckysheet-freezebar-vertical\" class=\"luckysheet-freezebar\" tabindex=\"0\"><div class=\"luckysheet-freezebar-handle luckysheet-freezebar-vertical-handle\" ><div class=\"luckysheet-freezebar-handle-bar luckysheet-freezebar-vertical-handle-title\" ></div><div class=\"luckysheet-freezebar-handle-bar luckysheet-freezebar-vertical-handle-bar\" ></div></div><div class=\"luckysheet-freezebar-drop luckysheet-freezebar-vertical-drop\" ><div class=\"luckysheet-freezebar-drop-bar luckysheet-freezebar-vertical-drop-title\" ></div><div class=\"luckysheet-freezebar-drop-bar luckysheet-freezebar-vertical-drop-bar\" >&nbsp;</div></div></div>',initialHorizontal:!0,initialVertical:!0,horizontalmovestate:!1,horizontalmoveposition:null,verticalmovestate:!1,verticalmoveposition:null,windowHeight:null,windowWidth:null,freezenhorizontaldata:null,freezenverticaldata:null,freezenRealFirstRowColumn:!0,cutVolumn:function(e,t){if(t<=0)return e;let n=e.slice(0,t);n[n.length-1];return e.slice(t)},cancelFreezenVertical:function(e){let n=X().freezen,a=`\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont-luckysheet luckysheet-iconfont-dongjie1\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${n.default}\\n                    </div>\\n                </div>\\n            </div>\\n        `;$(\"#luckysheet-freezen-btn-horizontal\").html(a),$(\"#luckysheet-freezen-btn-vertical\").html('<i class=\"fa fa-indent\"></i> '+n.freezenColumn),this.freezenverticaldata=null;let l=$(\"#luckysheet-freezebar-vertical\").is(\":visible\");$(\"#luckysheet-freezebar-vertical\").hide(),null==e&&(e=t.currentSheetIndex);let r=t.luckysheetfile[Mt(e)];null!=r.freezen&&(r.freezen.vertical=null),null!=r.frozen&&l&&yo.saveParam(\"all\",e,r.frozen,{k:\"frozen\"})},createFreezenVertical:function(e,n){let a=this;if(a.initialVertical){a.initialVertical=!1,$(\"#luckysheet-grid-window-1\").append(a.freezenVerticalHTML),$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-drop\").hover((function(){$(this).parent().addClass(\"luckysheet-freezebar-hover\")}),(function(){$(this).parent().removeClass(\"luckysheet-freezebar-hover\")})),$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-drop\").mousedown((function(){a.verticalmovestate=!0,a.verticalmoveposition=$(this).position().left,a.windowWidth=$(\"#luckysheet-grid-window-1\").width(),$(this).parent().addClass(\"luckysheet-freezebar-active\"),$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-handle\").css(\"cursor\",\"-webkit-grabbing\")}));let e=$(\"#luckysheet-grid-window-1\").height();$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-handle\").css({height:e-10,width:\"4px\",cursor:\"-webkit-grab\",top:\"0px\"}).end().find(\".luckysheet-freezebar-vertical-drop\").css({height:e-10,width:\"4px\",top:\"0px\",cursor:\"-webkit-grab\"})}if(null==e){if(a.freezenRealFirstRowColumn){let l=0;n=t.visibledatacolumn[l]-2+t.rowHeaderWidth,e=[t.visibledatacolumn[l],l+1,0,a.cutVolumn(t.visibledatacolumn,l+1),n]}else{let l=$(\"#luckysheet-cell-main\").scrollLeft(),r=Xn(t.visibledatacolumn,l);-1==r&&(r=0),n=t.visibledatacolumn[r]-2-l+t.rowHeaderWidth,e=[t.visibledatacolumn[r],r+1,l,a.cutVolumn(t.visibledatacolumn,r+1),n]}a.saveFreezen(null,null,e,n)}a.freezenverticaldata=e;let l=`\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont-luckysheet luckysheet-iconfont-dongjie1\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${X().freezen.freezenCancel}\\n                    </div>\\n                </div>\\n            </div>\\n        `;$(\"#luckysheet-freezen-btn-horizontal\").html(l),$(\"#luckysheet-freezebar-vertical\").show().find(\".luckysheet-freezebar-vertical-handle\").css({left:n}).end().find(\".luckysheet-freezebar-vertical-drop\").css({left:n})},saveFreezen:function(e,n,a,l){let r=t.luckysheetfile[Mt(t.currentSheetIndex)];null==r.freezen&&(r.freezen={}),null!=e&&(null==r.freezen.horizontal&&(r.freezen.horizontal={}),r.freezen.horizontal.freezenhorizontaldata=e,r.freezen.horizontal.top=n),null!=a&&(null==r.freezen.vertical&&(r.freezen.vertical={}),r.freezen.vertical.freezenverticaldata=a,r.freezen.vertical.left=l),null!=r.frozen&&yo.saveParam(\"all\",t.currentSheetIndex,r.frozen,{k:\"frozen\"})},initialFreezen:function(e){let n=this;n.frozenTofreezen();let a=t.luckysheetfile[Mt(e)];null!=a.freezen&&null!=a.freezen.horizontal&&null!=a.freezen.horizontal.freezenhorizontaldata?n.createFreezenHorizontal(a.freezen.horizontal.freezenhorizontaldata,a.freezen.horizontal.top):n.cancelFreezenHorizontal(e),null!=a.freezen&&null!=a.freezen.vertical&&null!=a.freezen.vertical.freezenverticaldata?n.createFreezenVertical(a.freezen.vertical.freezenverticaldata,a.freezen.vertical.left):n.cancelFreezenVertical(e),n.createAssistCanvas()},changeFreezenIndex:function(e,n){let a=this;if(\"v\"==n&&null!=a.freezenverticaldata){let n=a.freezenverticaldata[1],l=Xn(t.visibledatacolumn,$(\"#luckysheet-cell-main\").scrollLeft());e-l<n&&(e-=l)}else if(\"h\"==n&&null!=a.freezenhorizontaldata){let n=a.freezenhorizontaldata[1],l=Xn(t.visibledatarow,$(\"#luckysheet-cell-main\").scrollTop());e-l<n&&(e-=l)}return e},scrollFreezen:function(){let e,n=this,a=t.luckysheet_select_save[0].row_focus;a==t.luckysheet_select_save[0].row[0]?e=t.luckysheet_select_save[0].row[1]:a==t.luckysheet_select_save[0].row[1]&&(e=t.luckysheet_select_save[0].row[0]);let l,r=t.luckysheet_select_save[0].column_focus;if(r==t.luckysheet_select_save[0].column[0]?l=t.luckysheet_select_save[0].column[1]:r==t.luckysheet_select_save[0].column[1]&&(l=t.luckysheet_select_save[0].column[0]),null!=n.freezenverticaldata){let e=n.freezenverticaldata[1],a=Xn(n.freezenverticaldata[3],$(\"#luckysheet-cell-main\").scrollLeft()),r=n.freezenverticaldata[4];e+=a,l>=t.visibledatacolumn.length&&(l=t.visibledatacolumn.length-1),e>=t.visibledatacolumn.length&&(e=t.visibledatacolumn.length-1),t.visibledatacolumn[l]<=t.visibledatacolumn[e]+r&&setTimeout((function(){$(\"#luckysheet-scrollbar-x\").scrollLeft(0)}),100)}if(null!=n.freezenhorizontaldata){let a=n.freezenhorizontaldata[1],l=Xn(n.freezenhorizontaldata[3],$(\"#luckysheet-cell-main\").scrollTop()),r=n.freezenhorizontaldata[4];a+=l,e>=t.visibledatarow.length&&(e=t.visibledatarow.length-1),a>=t.visibledatarow.length&&(a=t.visibledatarow.length-1),t.visibledatarow[e]<=t.visibledatarow[a]+r&&setTimeout((function(){$(\"#luckysheet-scrollbar-y\").scrollTop(0)}),100)}},cancelFreezenHorizontal:function(e){let n=`\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont-luckysheet luckysheet-iconfont-dongjie1\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${X().freezen.default}\\n                    </div>\\n                </div>\\n            </div>\\n        `;$(\"#luckysheet-freezen-btn-horizontal\").html(n),this.freezenhorizontaldata=null;let a=$(\"#luckysheet-freezebar-horizontal\").is(\":visible\");$(\"#luckysheet-freezebar-horizontal\").hide(),null==e&&(e=t.currentSheetIndex);let l=t.luckysheetfile[Mt(e)];null!=l.freezen&&(l.freezen.horizontal=null),null!=l.frozen&&a&&yo.saveParam(\"all\",e,l.frozen,{k:\"frozen\"})},createFreezenHorizontal:function(e,n){let a=this;if(a.initialHorizontal){a.initialHorizontal=!1,$(\"#luckysheet-grid-window-1\").append(a.freezenHorizontalHTML),$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-drop\").hover((function(){$(this).parent().addClass(\"luckysheet-freezebar-hover\")}),(function(){$(this).parent().removeClass(\"luckysheet-freezebar-hover\")})),$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-drop\").mousedown((function(){a.horizontalmovestate=!0,a.horizontalmoveposition=$(this).position().top,a.windowHeight=$(\"#luckysheet-grid-window-1\").height(),$(this).parent().addClass(\"luckysheet-freezebar-active\"),$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-handle\").css(\"cursor\",\"-webkit-grabbing\")}));let e=$(\"#luckysheet-grid-window-1\").width();$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-handle\").css({width:e-10,height:\"4px\",cursor:\"-webkit-grab\",left:\"0px\"}).end().find(\".luckysheet-freezebar-horizontal-drop\").css({width:e-10,height:\"4px\",left:\"0px\",cursor:\"-webkit-grab\"})}if(null==e){let l;if(a.freezenRealFirstRowColumn)l=0,n=t.visibledatarow[l]-2+t.columnHeaderHeight,e=[t.visibledatarow[l],l+1,0,a.cutVolumn(t.visibledatarow,l+1),n],a.saveFreezen(e,n,null,null),setTimeout((()=>{Sl.createAssistCanvas(),uo()}));else{let r=$(\"#luckysheet-cell-main\").scrollTop();l=Xn(t.visibledatarow,r),-1==l&&(l=0),n=t.visibledatarow[l]-2-r+t.columnHeaderHeight,e=[t.visibledatarow[l],l+1,r,a.cutVolumn(t.visibledatarow,l+1),n],a.saveFreezen(e,n,null,null)}}a.freezenhorizontaldata=e;let l=`\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\"\\n            style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\"\\n                style=\"user-select: none;\">\\n                    <div class=\"luckysheet-icon luckysheet-inline-block \" style=\"user-select: none;\">\\n                        <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont-luckysheet luckysheet-iconfont-dongjie1\"\\n                        style=\"user-select: none;\">\\n                        </div>\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\"\\n                    style=\"user-select: none;\">\\n                        ${X().freezen.freezenCancel}\\n                    </div>\\n                </div>\\n            </div>\\n        `;$(\"#luckysheet-freezen-btn-horizontal\").html(l),$(\"#luckysheet-freezebar-horizontal\").show().find(\".luckysheet-freezebar-horizontal-handle\").css({top:n}).end().find(\".luckysheet-freezebar-horizontal-drop\").css({top:n})},createAssistCanvas:function(){let e=this;if(e.removeAssistCanvas(),null!=e.freezenverticaldata||null!=e.freezenhorizontaldata){let n,a,l,r,o,i,s=t.luckysheetTableContentHW[0],c=t.luckysheetTableContentHW[1];null!=e.freezenverticaldata&&null!=e.freezenhorizontaldata?(n=e.freezenhorizontaldata[0],a=e.freezenhorizontaldata[1],l=e.freezenhorizontaldata[2],r=e.freezenverticaldata[0],o=e.freezenverticaldata[1],i=e.freezenverticaldata[2],e.createCanvas(\"freezen_3\",r-i,n-l+1,t.rowHeaderWidth-1,t.columnHeaderHeight-1),e.createCanvas(\"freezen_4\",s-r+i,n-l+1,r-i+t.rowHeaderWidth-1,t.columnHeaderHeight-1),e.createCanvas(\"freezen_7\",r-i,c-n+l-t.columnHeaderHeight,t.rowHeaderWidth-1,n-l+t.columnHeaderHeight-1)):null!=e.freezenhorizontaldata?(n=e.freezenhorizontaldata[0],a=e.freezenhorizontaldata[1],l=e.freezenhorizontaldata[2],e.createCanvas(\"freezen_h\",s,n-l+1,t.rowHeaderWidth-1,t.columnHeaderHeight-1)):null!=e.freezenverticaldata&&(r=e.freezenverticaldata[0],o=e.freezenverticaldata[1],i=e.freezenverticaldata[2],e.createCanvas(\"freezen_v\",r-i,c,t.rowHeaderWidth-1,t.columnHeaderHeight-1)),e.scrollAdapt()}},createCanvas:function(e,n,a,l,r){$(\"<canvas/>\").appendTo(\"#luckysheet-grid-window-1\").attr({id:e,width:Math.ceil(n*t.devicePixelRatio),height:Math.ceil(a*t.devicePixelRatio)}).css({\"user-select\":\"none\",postion:\"absolute\",left:l,top:r,width:n,height:a,\"z-index\":10,\"pointer-events\":\"none\"})},removeAssistCanvas:function(){$(\"#luckysheet-grid-window-1 > canvas\").not($(\"#luckysheetTableContent\")).remove(),$(\"#luckysheet-cell-selected\").css(\"z-index\",15)},scrollAdapt:function(){let e=this;if(null!=t.luckysheet_select_save&&t.luckysheet_select_save.length>0&&e.scrollAdaptOfselect(),$(\"#luckysheet-cell-main .luckysheet-data-visualization-chart\").length>0){let n=t.luckysheetfile[Mt(t.currentSheetIndex)].chart;null!=n&&n.length>0&&e.scrollAdaptOfchart()}$(\"#luckysheet-postil-showBoxs .luckysheet-postil-show\").length>0&&e.scrollAdaptOfpostil(),$(\"#luckysheet-dropCell-icon\").length>0&&e.scrollAdaptOfdpicon(),$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").length>0&&e.scrollAdaptOffilteroptions()},scrollAdaptOfselect:function(){let e=this;$(\"#luckysheet-row-count-show\").is(\":visible\")&&$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").is(\":visible\")&&$(\"#luckysheet-column-count-show\").hide(),$(\"#luckysheet-rows-h-selected\").empty(),$(\"#luckysheet-cols-h-selected\").empty();let n=$(\"#luckysheet-cell-main\").scrollTop(),a=$(\"#luckysheet-cell-main\").scrollLeft();if(null!=e.freezenhorizontaldata&&null!=e.freezenverticaldata){let l=e.freezenhorizontaldata[0],r=e.freezenhorizontaldata[1],o=n-e.freezenhorizontaldata[2],i=e.freezenverticaldata[0],s=e.freezenverticaldata[1],c=a-e.freezenverticaldata[2];for(let e=0;e<t.luckysheet_select_save.length;e++){let n=$.extend(!0,{},t.luckysheet_select_save[e]),a=n.row[0],u=n.row[1],d=t.visibledatarow[u],h=a-1==-1?0:t.visibledatarow[a-1],f=h,m=d-h-1,p=!0;a>=r?f+m<l+o?p=!1:f<l+o?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:l+o,height:m-(l+o-f)}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:f,height:m}):u>=r?f+m<l+o?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:f+o,height:l-f}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:f+o,height:m-o}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css(\"top\",f+o);let g=n.column[0],y=n.column[1],v=t.visibledatacolumn[y],b=g-1==-1?0:t.visibledatacolumn[g-1],k=b,w=v-b-1;if(g>=s?k+w<i+c?p=!1:k<i+c?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:i+c,width:w-(i+c-k)}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:k,width:w}):y>=s?k+w<i+c?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:k+c,width:i-k}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:k+c,width:w-c}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css(\"left\",k+c),p||$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).hide(),e==t.luckysheet_select_save.length-1){let e=null==n.row_focus?a:n.row_focus,r=null==n.column_focus?g:n.column_focus,s=t.visibledatarow[e],u=e-1==-1?0:t.visibledatarow[e-1],d=t.visibledatacolumn[r],h=r-1==-1?0:t.visibledatacolumn[r-1],f=Yu.mergeborer(t.flowdata,e,r);f&&(s=f.row[1],u=f.row[0],d=f.column[1],h=f.column[0]);let m=u,p=s-u-1,y=h,v=d-h-1,b=!0;m>=l?m+p<l+o?b=!1:m<l+o?$(\"#luckysheet-cell-selected-focus\").show().css({top:l+o,height:p-(l+o-m)}):$(\"#luckysheet-cell-selected-focus\").show().css({top:m,height:p}):m+p>=l?m+p<l+o?$(\"#luckysheet-cell-selected-focus\").show().css({top:m+o,height:l-m}):$(\"#luckysheet-cell-selected-focus\").show().css({top:m+o,height:p-o}):$(\"#luckysheet-cell-selected-focus\").show().css(\"top\",m+o),y>=i?y+v<i+c?b=!1:y<i+c?$(\"#luckysheet-cell-selected-focus\").show().css({left:i+c,width:v-(i+c-y)}):$(\"#luckysheet-cell-selected-focus\").show().css({left:y,width:v}):y+v>=i?y+v<i+c?$(\"#luckysheet-cell-selected-focus\").show().css({left:y+c,width:i-y}):$(\"#luckysheet-cell-selected-focus\").show().css({left:y+c,width:v-c}):$(\"#luckysheet-cell-selected-focus\").show().css(\"left\",y+c),b||$(\"#luckysheet-cell-selected-focus\").hide()}}}else if(null!=e.freezenhorizontaldata){let a=e.freezenhorizontaldata[0],l=e.freezenhorizontaldata[1],r=n-e.freezenhorizontaldata[2];for(let e=0;e<t.luckysheet_select_save.length;e++){let n=$.extend(!0,{},t.luckysheet_select_save[e]),o=n.row[0],i=n.row[1],s=t.visibledatarow[i],c=o-1==-1?0:t.visibledatarow[o-1],u=c,d=s-c-1;if(o>=l?u+d<a+r?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).hide():u<a+r?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:a+r,height:d-(a+r-u)}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:u,height:d}):i>=l?u+d<a+r?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:u+r,height:a-u}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({top:u+r,height:d-r}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css(\"top\",u+r),e==t.luckysheet_select_save.length-1){let e=null==n.row_focus?o:n.row_focus,l=null==n.column_focus?n.column[0]:n.column_focus,i=t.visibledatarow[e],s=e-1==-1?0:t.visibledatarow[e-1],c=Yu.mergeborer(t.flowdata,e,l);c&&(i=c.row[1],s=c.row[0]);let u=s,d=i-s-1;u>=a?u+d<a+r?$(\"#luckysheet-cell-selected-focus\").hide():u<a+r?$(\"#luckysheet-cell-selected-focus\").show().css({top:a+r,height:d-(a+r-u)}):$(\"#luckysheet-cell-selected-focus\").show().css({top:u,height:d}):u+d>=a?u+d<a+r?$(\"#luckysheet-cell-selected-focus\").show().css({top:u+r,height:a-u}):$(\"#luckysheet-cell-selected-focus\").show().css({top:u+r,height:d-r}):$(\"#luckysheet-cell-selected-focus\").show().css(\"top\",u+r)}}}else if(null!=e.freezenverticaldata){let n=e.freezenverticaldata[0],l=e.freezenverticaldata[1],r=a-e.freezenverticaldata[2];for(let e=0;e<t.luckysheet_select_save.length;e++){let a=$.extend(!0,{},t.luckysheet_select_save[e]),o=a.column[0],i=a.column[1],s=t.visibledatacolumn[i],c=o-1==-1?0:t.visibledatacolumn[o-1],u=c,d=s-c-1;if(o>=l?u+d<n+r?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).hide():u<n+r?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:n+r,width:d-(n+r-u)}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:u,width:d}):i>=l?u+d<n+r?$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:u+r,width:n-u}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css({left:u+r,width:d-r}):$(\"#luckysheet-cell-selected-boxs\").find(\".luckysheet-cell-selected\").eq(e).show().css(\"left\",u+r),e==t.luckysheet_select_save.length-1){let e=null==a.row_focus?a.row[0]:a.row_focus,l=null==a.column_focus?o:a.column_focus,i=t.visibledatacolumn[l],s=l-1==-1?0:t.visibledatacolumn[l-1],c=Yu.mergeborer(t.flowdata,e,l);c&&(i=c.column[1],s=c.column[0]);let u=s,d=i-s-1;u>=n?u+d<n+r?$(\"#luckysheet-cell-selected-focus\").hide():u<n+r?$(\"#luckysheet-cell-selected-focus\").show().css({left:n+r,width:d-(n+r-u)}):$(\"#luckysheet-cell-selected-focus\").show().css({left:u,width:d}):u+d>=n?u+d<n+r?$(\"#luckysheet-cell-selected-focus\").show().css({left:u+r,width:n-u}):$(\"#luckysheet-cell-selected-focus\").show().css({left:u+r,width:d-r}):$(\"#luckysheet-cell-selected-focus\").show().css(\"left\",u+r)}}}else Pu()},scrollAdaptOfImage:function(){let e=this;var n=imageCtrl.images;let a=$(\"#luckysheet-cell-main\").scrollTop(),l=$(\"#luckysheet-cell-main\").scrollLeft(),r=null!=e.freezenhorizontaldata?e.freezenhorizontaldata[0]-e.freezenhorizontaldata[2]:-1,o=null!=e.freezenverticaldata?e.freezenverticaldata[0]-e.freezenverticaldata[2]:-1,i=t.zoomRatio;$.each(n,(function(e){let t=n[e],s=$(\"#\"+e),c=s.position(),u=s.width(),d=s.height(),h=t.default.top*i,f=t.default.left*i,m=!1;h>=r?c.top<r?(s.css(\"visibility\",\"hidden\"),m=!0):s.css({visibility:\"visible\"}):s.css({top:h+a,height:d,visibility:\"visible\"}),m||(f>=o?c.left<o?s.css(\"visibility\",\"hidden\"):s.css({visibility:\"visible\"}):s.css({left:f+l,width:u,visibility:\"visible\"}))}))},scrollAdaptOfchart:function(){let e=this,t=$(\"#luckysheet-cell-main\").scrollTop(),n=$(\"#luckysheet-cell-main\").scrollLeft();if(null!=e.freezenhorizontaldata&&null!=e.freezenverticaldata){let a=e.freezenhorizontaldata[0]-e.freezenhorizontaldata[2],l=e.freezenverticaldata[0]-e.freezenverticaldata[2];$(\"#luckysheet-cell-main .luckysheet-data-visualization-chart\").each((function(e,r){let o=$(r).position(),i=$(r).width(),s=$(r).height(),c=$(r).find(\"canvas\").width(),u=$(r).find(\"canvas\").height(),d=u-s,h=c-i;if(o.top-d<a){let e=a-(o.top-d);e>u+40+2?$(r).css(\"visibility\",\"hidden\"):($(r).css({top:a+t,height:u-e,visibility:\"visible\"}),$(r).find(\"canvas\").css(\"top\",-e))}else $(r).css({top:o.top-d+t,height:u,visibility:\"visible\"}),$(r).find(\"canvas\").css(\"top\",0);if(o.left-h<l){let e=l-(o.left-h);e>c+20+2?$(r).css(\"visibility\",\"hidden\"):($(r).css({left:l+n,width:c-e,visibility:\"visible\"}),$(r).find(\"canvas\").css(\"left\",-e))}else $(r).css({left:o.left-h+n,width:c,visibility:\"visible\"}),$(r).find(\"canvas\").css(\"left\",0)}))}else if(null!=e.freezenhorizontaldata){let n=e.freezenhorizontaldata[0]-e.freezenhorizontaldata[2];$(\"#luckysheet-cell-main .luckysheet-data-visualization-chart\").each((function(e,a){let l=$(a).position(),r=$(a).height(),o=$(a).find(\"canvas\").height(),i=o-r;if(l.top-i<n){let e=n-(l.top-i);e>o+40+2?$(a).css(\"visibility\",\"hidden\"):($(a).css({top:n+t,height:o-e,visibility:\"visible\"}),$(a).find(\"canvas\").css(\"top\",-e))}else $(a).css({top:l.top-i+t,height:o,visibility:\"visible\"}),$(a).find(\"canvas\").css(\"top\",0)}))}else if(null!=e.freezenverticaldata){let t=e.freezenverticaldata[0]-e.freezenverticaldata[2];$(\"#luckysheet-cell-main .luckysheet-data-visualization-chart\").each((function(e,a){let l=$(a).position(),r=$(a).width(),o=$(a).find(\"canvas\").width(),i=o-r;if(l.left-i<t){let e=t-(l.left-i);e>o+20+2?$(a).css(\"visibility\",\"hidden\"):($(a).css({left:t+n,width:o-e,visibility:\"visible\"}),$(a).find(\"canvas\").css(\"left\",-e))}else $(a).css({left:l.left-i+n,width:o,visibility:\"visible\"}),$(a).find(\"canvas\").css(\"left\",0)}))}else $(\"#luckysheet-cell-main .luckysheet-data-visualization-chart\").each((function(e,a){let l=$(a).position(),r=$(a).width(),o=$(a).height(),i=$(a).find(\"canvas\").width(),s=$(a).find(\"canvas\").height(),c=s-o,u=i-r;$(a).css({top:l.top-c+t,height:s,left:l.left-u+n,width:i,visibility:\"visible\"}),$(a).find(\"canvas\").css({top:0,left:0})}))},scrollAdaptOfpostil:function(){let e=this,n=$(\"#luckysheet-cell-main\").scrollTop(),a=$(\"#luckysheet-cell-main\").scrollLeft();if(null!=e.freezenhorizontaldata&&null!=e.freezenverticaldata){let l=e.freezenhorizontaldata[0],r=e.freezenverticaldata[0],o=n-e.freezenhorizontaldata[2],i=a-e.freezenverticaldata[2];$(\"#luckysheet-postil-showBoxs .luckysheet-postil-show\").each((function(n,a){let s=$(a).attr(\"id\"),c=s.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],u=s.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],d=t.flowdata[c][u].ps,h=t.visibledatarow[c],f=c-1==-1?0:t.visibledatarow[c-1],m=t.visibledatacolumn[u],p=u-1==-1?0:t.visibledatacolumn[u-1],g=Yu.mergeborer(t.flowdata,c,u);g&&(h=g.row[1],f=g.row[0],m=g.column[1],p=g.column[0]);let y=m,v=f,b=null==d.left?y+18:d.left,k=null==d.top?v-18:d.top,w=null==d.width?vl.defaultWidth:d.width,x=null==d.height?vl.defaultHeight:d.height;k<0&&(k=2);let _=vl.getArrowCanvasSize(b,k,y,v),C=!0,T=!0;c>=e.freezenhorizontaldata[1]?k+x<l?($(a).show().find(\".luckysheet-postil-show-main\").css(\"top\",k+o),$(a).show().find(\".arrowCanvas\").css(\"top\",_[1]+o)):k<l+o?k+x<=l+o?C=!1:($(a).show().find(\".luckysheet-postil-show-main\").css({top:l+o,height:x-(l+o-k)}),$(a).show().find(\".formulaInputFocus\").css(\"margin-top\",-(l+o-k)),$(a).show().find(\".arrowCanvas\").hide(),T=!1):($(a).show().find(\".luckysheet-postil-show-main\").css({top:k,height:x}),$(a).show().find(\".formulaInputFocus\").css(\"margin-top\",0),$(a).show().find(\".arrowCanvas\").css(\"top\",_[1])):($(a).show().find(\".luckysheet-postil-show-main\").css(\"top\",k+o),$(a).show().find(\".arrowCanvas\").css(\"top\",_[1]+o)),u>=e.freezenverticaldata[1]?b+w<r?($(a).show().find(\".luckysheet-postil-show-main\").css(\"left\",b+i),$(a).show().find(\".arrowCanvas\").css(\"left\",_[0]+i)):b<r+i?b+w<=r+i?C=!1:($(a).show().find(\".luckysheet-postil-show-main\").css({left:r+i,width:w-(r+i-b)}),$(a).show().find(\".formulaInputFocus\").css(\"margin-left\",-(r+i-b)),$(a).show().find(\".arrowCanvas\").hide(),T=!1):($(a).show().find(\".luckysheet-postil-show-main\").css({left:b,width:w}),$(a).show().find(\".formulaInputFocus\").css(\"margin-left\",0),$(a).show().find(\".arrowCanvas\").css(\"left\",_[0])):($(a).show().find(\".luckysheet-postil-show-main\").css(\"left\",b+i),$(a).show().find(\".arrowCanvas\").css(\"left\",_[0]+i)),C||$(a).hide(),C&&T&&$(a).show().find(\".arrowCanvas\").show()}))}else if(null!=e.freezenhorizontaldata){let a=e.freezenhorizontaldata[0],l=n-e.freezenhorizontaldata[2];$(\"#luckysheet-postil-showBoxs .luckysheet-postil-show\").each((function(n,r){let o=$(r).attr(\"id\"),i=o.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],s=o.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],c=t.flowdata[i][s].ps,u=t.visibledatarow[i],d=i-1==-1?0:t.visibledatarow[i-1],h=t.visibledatacolumn[s],f=s-1==-1?0:t.visibledatacolumn[s-1],m=Yu.mergeborer(t.flowdata,i,s);m&&(u=m.row[1],d=m.row[0],h=m.column[1],f=m.column[0]);let p=h,g=d,y=null==c.left?p+18:c.left,v=null==c.top?g-18:c.top,b=(null==c.width?vl.defaultWidth:c.width,null==c.height?vl.defaultHeight:c.height);v<0&&(v=2);let k=vl.getArrowCanvasSize(y,v,p,g);i>=e.freezenhorizontaldata[1]?v+b<a?($(r).show().find(\".luckysheet-postil-show-main\").css(\"top\",v+l),$(r).show().find(\".arrowCanvas\").css(\"top\",k[1]+l)):v<a+l?v+b<=a+l?$(r).hide():($(r).show().find(\".luckysheet-postil-show-main\").css({top:a+l,height:b-(a+l-v)}),$(r).show().find(\".formulaInputFocus\").css(\"margin-top\",-(a+l-v)),$(r).show().find(\".arrowCanvas\").hide()):vl.buildPs(i,s,c):($(r).show().find(\".luckysheet-postil-show-main\").css(\"top\",v+l),$(r).show().find(\".arrowCanvas\").css(\"top\",k[1]+l))}))}else if(null!=e.freezenverticaldata){let n=e.freezenverticaldata[0],l=a-e.freezenverticaldata[2];$(\"#luckysheet-postil-showBoxs .luckysheet-postil-show\").each((function(a,r){let o=$(r).attr(\"id\"),i=o.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],s=o.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],c=t.flowdata[i][s].ps,u=t.visibledatarow[i],d=i-1==-1?0:t.visibledatarow[i-1],h=t.visibledatacolumn[s],f=s-1==-1?0:t.visibledatacolumn[s-1],m=Yu.mergeborer(t.flowdata,i,s);m&&(u=m.row[1],d=m.row[0],h=m.column[1],f=m.column[0]);let p=h,g=d,y=null==c.left?p+18:c.left,v=null==c.top?g-18:c.top,b=null==c.width?vl.defaultWidth:c.width;null==c.height?vl.defaultHeight:c.height;v<0&&(v=2);let k=vl.getArrowCanvasSize(y,v,p,g);s>=e.freezenverticaldata[1]?y+b<n?($(r).show().find(\".luckysheet-postil-show-main\").css(\"left\",y+l),$(r).show().find(\".arrowCanvas\").css(\"left\",k[0]+l)):y<n+l?y+b<=n+l?$(r).hide():($(r).show().find(\".luckysheet-postil-show-main\").css({left:n+l,width:b-(n+l-y)}),$(r).show().find(\".formulaInputFocus\").css(\"margin-left\",-(n+l-y)),$(r).show().find(\".arrowCanvas\").hide()):vl.buildPs(i,s,c):($(r).show().find(\".luckysheet-postil-show-main\").css(\"left\",y+l),$(r).show().find(\".arrowCanvas\").css(\"left\",k[0]+l))}))}else $(\"#luckysheet-postil-showBoxs .luckysheet-postil-show\").each((function(e,n){let a=$(n).attr(\"id\"),l=a.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],r=a.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],o=t.flowdata[l][r].ps;vl.buildPs(l,r,o)}))},scrollAdaptOfdpicon:function(){let e,t,n=this,a=Tl.copyRange.row[1],l=Tl.copyRange.column[1],r=Tl.applyRange.row[1],o=Tl.applyRange.column[1];if(r>=a&&o>=l?(e=r,t=o):(e=a,t=l),null!=n.freezenhorizontaldata&&null!=n.freezenverticaldata){let a=n.freezenhorizontaldata[1],l=Xn(n.freezenhorizontaldata[3],$(\"#luckysheet-cell-main\").scrollTop()-n.freezenhorizontaldata[2]),r=n.freezenverticaldata[1],o=Xn(n.freezenverticaldata[3],$(\"#luckysheet-cell-main\").scrollLeft()-n.freezenverticaldata[2]);if(e>=a&&t>=r)e<a+l-1||t<r+o-1?$(\"#luckysheet-dropCell-icon\").hide():$(\"#luckysheet-dropCell-icon\").show();else if(e>=a)if(e<a+l-1)$(\"#luckysheet-dropCell-icon\").hide();else{let e=Qn(t+o)[1];$(\"#luckysheet-dropCell-icon\").show().css(\"left\",e)}else if(t>=r)if(t<r+o-1)$(\"#luckysheet-dropCell-icon\").hide();else{let t=Zn(e+l)[1];$(\"#luckysheet-dropCell-icon\").show().css(\"top\",t)}else{let n=Zn(e+l)[1],a=Qn(t+o)[1];$(\"#luckysheet-dropCell-icon\").show().css({left:a,top:n})}}else if(null!=n.freezenhorizontaldata){let t=n.freezenhorizontaldata[1],a=Xn(n.freezenhorizontaldata[3],$(\"#luckysheet-cell-main\").scrollTop()-n.freezenhorizontaldata[2]);if(e>=t)e<t+a-1?$(\"#luckysheet-dropCell-icon\").hide():$(\"#luckysheet-dropCell-icon\").show();else{let t=Zn(e+a)[1];$(\"#luckysheet-dropCell-icon\").show().css(\"top\",t)}}else if(null!=n.freezenverticaldata){let e=n.freezenverticaldata[1],a=Xn(n.freezenverticaldata[3],$(\"#luckysheet-cell-main\").scrollLeft()-n.freezenverticaldata[2]);if(t>=e)t<e+a-1?$(\"#luckysheet-dropCell-icon\").hide():$(\"#luckysheet-dropCell-icon\").show();else{let e=Qn(t+a)[1];$(\"#luckysheet-dropCell-icon\").show().css(\"left\",e)}}else{let n=Zn(e)[1],a=Qn(t)[1];$(\"#luckysheet-dropCell-icon\").show().css({left:a,top:n})}},scrollAdaptOffilteroptions:function(){let e=this;if(null!=e.freezenhorizontaldata&&null!=e.freezenverticaldata){let n=e.freezenhorizontaldata[1],a=e.freezenhorizontaldata[0]+$(\"#luckysheet-cell-main\").scrollTop(),l=e.freezenverticaldata[1],r=Xn(e.freezenverticaldata[3],$(\"#luckysheet-cell-main\").scrollLeft()-e.freezenverticaldata[2]);$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").each((function(e,o){let i=$(o).data(\"str\"),s=i-1==-1?0:t.visibledatarow[i-1],c=$(o).data(\"cindex\");if(i>=n&&c>=l)s<a||c<l+r?$(o).hide():$(o).show();else if(i>=n)if(s<a)$(o).hide();else{let e=t.visibledatacolumn[c+r]-20;$(o).show().css(\"left\",e)}else if(c>=l)c<l+r?$(o).hide():$(o).show().css(\"top\",s+$(\"#luckysheet-cell-main\").scrollTop());else{let e=t.visibledatacolumn[c+r]-20;$(o).show().css({left:e,top:s+$(\"#luckysheet-cell-main\").scrollTop()})}}))}else if(null!=e.freezenhorizontaldata){let n=e.freezenhorizontaldata[1],a=e.freezenhorizontaldata[0]+$(\"#luckysheet-cell-main\").scrollTop();$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").each((function(e,l){let r=$(l).data(\"str\"),o=r-1==-1?0:t.visibledatarow[r-1];r>=n?o<a?$(l).hide():$(l).show():$(l).show().css(\"top\",o+$(\"#luckysheet-cell-main\").scrollTop())}))}else if(null!=e.freezenverticaldata){let n=e.freezenverticaldata[1],a=Xn(e.freezenverticaldata[3],$(\"#luckysheet-cell-main\").scrollLeft()-e.freezenverticaldata[2]);$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").each((function(e,l){let r=$(l).data(\"cindex\");if(r>=n)r<n+a?$(l).hide():$(l).show();else{let e=t.visibledatacolumn[r+a]-20;$(l).show().css(\"left\",e)}}))}else $(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex).empty(),al(t.luckysheetfile[Mt(t.currentSheetIndex)].filter_select)},saveFrozen:function(e,n,a={}){null==n&&(n=Mt(t.currentSheetIndex));let l=t.luckysheet_select_save[t.luckysheet_select_save.length-1],r=null==l.row_focus?l.row[0]:l.row_focus,o=null==l.column_focus?l.column[0]:l.column_focus,i={row_focus:a.row_focus||r,column_focus:a.column_focus||o},s={freezenRow:{type:\"row\"},freezenColumn:{type:\"column\"},freezenRC:{type:\"both\"},freezenRowRange:{type:\"rangeRow\",range:i},freezenColumnRange:{type:\"rangeColumn\",range:i},freezenRCRange:{type:\"rangeBoth\",range:i},freezenCancel:{type:\"cancel\"}};t.luckysheetfile[n].frozen=s[e]},frozenTofreezen:function(){let e=t.luckysheetfile[Mt(t.currentSheetIndex)],n=e.frozen;if(null==n)return;let a=null;if(\"row\"===n.type){let e=0,n=Xn(t.visibledatarow,e);-1==n&&(n=0);let l=t.visibledatarow[n]-2-e+t.columnHeaderHeight;a={horizontal:{freezenhorizontaldata:[t.visibledatarow[n],n+1,e,Sl.cutVolumn(t.visibledatarow,n+1),l],top:l}}}else if(\"column\"===n.type){let e=0,n=Xn(t.visibledatacolumn,e);-1==n&&(n=0);let l=t.visibledatacolumn[n]-2-e+t.rowHeaderWidth;a={vertical:{freezenverticaldata:[t.visibledatacolumn[n],n+1,e,Sl.cutVolumn(t.visibledatacolumn,n+1),l],left:l}}}else if(\"both\"===n.type){let e=0,n=Xn(t.visibledatarow,e);-1==n&&(n=0);let l=t.visibledatarow[n]-2-e+t.columnHeaderHeight,r=[t.visibledatarow[n],n+1,e,Sl.cutVolumn(t.visibledatarow,n+1),l],o=0,i=Xn(t.visibledatacolumn,o);-1==i&&(i=0);let s=t.visibledatacolumn[i]-2-o+t.rowHeaderWidth;a={horizontal:{freezenhorizontaldata:r,top:l},vertical:{freezenverticaldata:[t.visibledatacolumn[i],i+1,o,Sl.cutVolumn(t.visibledatacolumn,i+1),s],left:s}}}else if(\"rangeRow\"===n.type){let e=0,l=Xn(t.visibledatarow,e),r=n.range.row_focus;r>l&&(l=r),-1==l&&(l=0);let o=t.visibledatarow[l]-2-e+t.columnHeaderHeight;a={horizontal:{freezenhorizontaldata:[t.visibledatarow[l],l+1,e,Sl.cutVolumn(t.visibledatarow,l+1),o],top:o}}}else if(\"rangeColumn\"===n.type){let e=0,l=Xn(t.visibledatacolumn,e),r=n.range.column_focus;r>l&&(l=r),-1==l&&(l=0);let o=t.visibledatacolumn[l]-2-e+t.rowHeaderWidth;a={vertical:{freezenverticaldata:[t.visibledatacolumn[l],l+1,e,Sl.cutVolumn(t.visibledatacolumn,l+1),o],left:o}}}else if(\"rangeBoth\"===n.type){let e=0,l=Xn(t.visibledatarow,e),r=n.range.row_focus;r>l&&(l=r),-1==l&&(l=0);let o=t.visibledatarow[l]-2-e+t.columnHeaderHeight,i=[t.visibledatarow[l],l+1,e,Sl.cutVolumn(t.visibledatarow,l+1),o],s=0,c=Xn(t.visibledatacolumn,s),u=n.range.column_focus;u>c&&(c=u),-1==c&&(c=0);let d=t.visibledatacolumn[c]-2-s+t.rowHeaderWidth;a={horizontal:{freezenhorizontaldata:i,top:o},vertical:{freezenverticaldata:[t.visibledatacolumn[c],c+1,s,Sl.cutVolumn(t.visibledatacolumn,c+1),d],left:d}}}else\"cancel\"===n.type&&(a={horizontal:null,vertical:null});e.freezen=a}}}));function Dl(n=!0){e.showinfobar?($(\"#luckysheet_info_detail\").show(),t.infobarHeight=document.querySelector(\"#luckysheet_info_detail\").offsetHeight):(t.infobarHeight=0,$(\"#luckysheet_info_detail\").hide()),t.toobarObject&&t.toobarObject.toobarElements&&0===t.toobarObject.toobarElements.length?($(\"#\"+t.container).find(\".luckysheet-wa-editor\").hide(),t.toolbarHeight=0):($(\"#\"+t.container).find(\".luckysheet-wa-editor\").show(),t.toolbarHeight=document.querySelector(\"#\"+t.container+\" .luckysheet-wa-editor\").offsetHeight),function(){if(!e.initShowsheetbarConfig){e.initShowsheetbarConfig=!0;let t={add:!0,menu:!0,sheet:!0};if(!e.showsheetbar)for(let e in t)t[e]=!1;\"{}\"!==JSON.stringify(e.showsheetbarConfig)&&Object.assign(t,e.showsheetbarConfig),e.showsheetbarConfig=t}let n=e.showsheetbarConfig,a=0;for(let e in n)if(!n[e])switch(e){case\"add\":$(\"#luckysheet-sheets-add\").hide(),a++;break;case\"menu\":$(\"#luckysheet-sheets-m\").hide(),a++;break;case\"sheet\":$(\"#luckysheet-sheet-container\").hide(),$(\"#luckysheet-sheets-leftscroll\").hide(),$(\"#luckysheet-sheets-rightscroll\").hide(),a++}3===a?($(\"#\"+t.container).find(\"#luckysheet-sheet-area\").hide(),t.sheetBarHeight=0):($(\"#\"+t.container).find(\"#luckysheet-sheet-area\").show(),t.sheetBarHeight=31)}(),function(){if(!e.initStatisticBarConfig){e.initStatisticBarConfig=!0;let t={count:!0,view:!0,zoom:!0};if(!e.showstatisticBar)for(let e in t)t[e]=!1;\"{}\"!==JSON.stringify(e.showstatisticBarConfig)&&Object.assign(t,e.showstatisticBarConfig),e.showstatisticBarConfig=t}let n=e.showstatisticBarConfig,a=0;for(let e in n)if(!n[e])switch(e){case\"count\":$(\"#luckysheet-sta-content\").hide(),a++;break;case\"view\":$(\".luckysheet-print-viewList\").hide(),a++;break;case\"zoom\":$(\"#luckysheet-zoom-content\").hide(),a++}3===a?($(\"#\"+t.container).find(\".luckysheet-stat-area\").hide(),t.statisticBarHeight=0):($(\"#\"+t.container).find(\".luckysheet-stat-area\").show(),t.statisticBarHeight=23)}();let a=document.querySelector(\"#\"+t.container+\" .luckysheet-wa-calculate\");e.sheetFormulaBar?(a.style.display=\"block\",t.calculatebarHeight=a.offsetHeight):(a.style.display=\"none\",t.calculatebarHeight=0),$(\"#\"+t.container).find(\".luckysheet-grid-container\").css(\"top\",t.toolbarHeight+t.infobarHeight+t.calculatebarHeight),Nl=$(\"#\"+t.container).width(),e.showConfigWindowResize&&($(\"#luckysheet-modal-dialog-slider-pivot\").is(\":visible\")?Nl-=$(\"#luckysheet-modal-dialog-slider-pivot\").outerWidth():$(\".chartSetting\").is(\":visible\")?Nl-=$(\".chartSetting\").outerWidth():$(\"#luckysheet-modal-dialog-slider-alternateformat\").is(\":visible\")&&(Nl-=$(\"#luckysheet-modal-dialog-slider-alternateformat\").outerWidth()),$(\"#luckysheet-modal-dialog-slider-protection\").is(\":visible\")&&(Nl-=$(\"#luckysheet-modal-dialog-slider-protection\").outerWidth()));let l=X().toolbar,r=!1,o=`<div class=\"luckysheet-toolbar-button luckysheet-inline-block\" data-tips=\"${l.toolMoreTip}\" id=\"luckysheet-icon-morebtn\" role=\"button\" style=\"user-select: none;\">\\n            <div class=\"luckysheet-toolbar-button-outer-box luckysheet-inline-block\" style=\"user-select: none;\">\\n                <div class=\"luckysheet-toolbar-button-inner-box luckysheet-inline-block\" style=\"user-select: none;\">\\n\\n                    <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\" style=\"user-select: none;\">\\n                        ${l.toolMore}\\n                    </div>\\n                    <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\" style=\"user-select: none;font-size:12px;\">\\n                    </div>\\n\\n                </div>\\n            </div>\\n         </div>`,i='<div id=\"luckysheet-icon-morebtn-div\" class=\"luckysheet-wa-editor\" style=\"position:absolute;top:'+(t.infobarHeight+t.toolbarHeight+$(\"#\"+t.container).offset().top+$(\"body\").scrollTop())+'px;right:0px;z-index:1003;padding:5.5px;visibility:hidden;height:auto;white-space:initial;\"></div>';0==$(\"#luckysheet-icon-morebtn-div\").length&&$(\"body\").append(i),yd(\"#luckysheet-icon-morebtn-div\").style.visibility=\"hidden\",$(\"#luckysheet-icon-morebtn-div > div\").each((function(){let e=$(this)[0],t=$(\"#luckysheet-wa-editor\")[0];t.appendChild(document.createTextNode(\" \")),t.appendChild(e)})),$(\"#luckysheet-icon-morebtn\").remove();let s=t.toobarObject.toobarWidths,c=t.toobarObject.toobarElements,u=0;if(null!=s){for(let e=s.length-1;e>=0;e--)if(s[e]<Nl-90){u=e,u<s.length-1&&(r=!0);break}for(let e=u;e<c.length;e++){let t=c[e];if(t instanceof Array)for(let e of t)$(\"#luckysheet-icon-morebtn-div\").append($(`${e}`));else $(\"#luckysheet-icon-morebtn-div\").append($(`${t}`))}r&&($(\"#luckysheet-wa-editor\").append(o),$(\"#luckysheet-icon-morebtn\").click((function(){Fl()})),$(\"#luckysheet-icon-morebtn-div .luckysheet-toolbar-button-split-left\").off(\"hover\").hover((function(){$(this).next(\".luckysheet-toolbar-button-split-right\").addClass(\"luckysheet-toolbar-button-split-right-hover\")}),(function(){$(this).next(\".luckysheet-toolbar-button-split-right\").removeClass(\"luckysheet-toolbar-button-split-right-hover\")})),$(\"#luckysheet-icon-morebtn-div .luckysheet-toolbar-button-split-right\").off(\"hover\").hover((function(){$(this).prev(\".luckysheet-toolbar-button-split-left\").addClass(\"luckysheet-toolbar-button-hover\")}),(function(){$(this).prev(\".luckysheet-toolbar-button-split-left\").removeClass(\"luckysheet-toolbar-button-hover\")})),vo.createHoverTip(\"#luckysheet-icon-morebtn-div\",\".luckysheet-toolbar-menu-button, .luckysheet-toolbar-button, .luckysheet-toolbar-combo-button\")),$(\"#\"+t.container+\" .luckysheet-wa-editor .luckysheet-toolbar-button-split-left\").off(\"hover\").hover((function(){$(this).next(\".luckysheet-toolbar-button-split-right\").addClass(\"luckysheet-toolbar-button-split-right-hover\")}),(function(){$(this).next(\".luckysheet-toolbar-button-split-right\").removeClass(\"luckysheet-toolbar-button-split-right-hover\")})),$(\"#\"+t.container+\" .luckysheet-wa-editor .luckysheet-toolbar-button-split-right\").off(\"hover\").hover((function(){$(this).prev(\".luckysheet-toolbar-button-split-left\").addClass(\"luckysheet-toolbar-button-hover\")}),(function(){$(this).prev(\".luckysheet-toolbar-button-split-left\").removeClass(\"luckysheet-toolbar-button-hover\")})),Pl=$(\"#\"+t.container).height(),$(\"#\"+t.container).find(\".luckysheet\").height(Pl-2).width(Nl-2),Ml(Nl,Pl),n&&uo($(\"#luckysheet-cell-main\").scrollLeft(),$(\"#luckysheet-cell-main\").scrollTop()),ki.sheetArrowShowAndHide(),ki.sheetBarShowAndHide()}}function Fl(){let e=X().toolbar;yd(\"#luckysheet-icon-morebtn-div\").style.left=\"\";let n=yd(`#${t.container}`).getBoundingClientRect?yd(`#${t.container}`).getBoundingClientRect().left:0;yd(\"#luckysheet-icon-morebtn-div\").getBoundingClientRect().left<n&&(yd(\"#luckysheet-icon-morebtn-div\").style.left=n+\"px\");let a=$(window).width()-$(\"#luckysheet-icon-morebtn\").offset().left-$(\"#luckysheet-icon-morebtn\").width()+$(\"body\").scrollLeft();if(yd(\"#luckysheet-icon-morebtn-div\").style.right=a<0?0:a+\"px\",\"hidden\"===yd(\"#luckysheet-icon-morebtn-div\").style.visibility?yd(\"#luckysheet-icon-morebtn-div\").style.visibility=\"visible\":yd(\"#luckysheet-icon-morebtn-div\").style.visibility=\"hidden\",$(\"#luckysheet-icon-morebtn\").find(\".luckysheet-toolbar-menu-button-caption\").text().indexOf(e.toolMore)>-1){let t=`\\n            <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\" style=\"user-select: none;\">\\n                ${e.toolClose}\\n            </div>\\n            <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-shangyige\" style=\"user-select: none;font-size:12px;\">\\n            </div>\\n        `;$(\"#luckysheet-icon-morebtn\").find(\".luckysheet-toolbar-button-inner-box\").html(t)}else{let t=`\\n            <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\" style=\"user-select: none;\">\\n                ${e.toolMore}\\n            </div>\\n            <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\" style=\"user-select: none;font-size:12px;\">\\n            </div>\\n        `;$(\"#luckysheet-icon-morebtn\").find(\".luckysheet-toolbar-button-inner-box\").html(t)}}function El(){let e=X().toolbar;yd(\"#luckysheet-icon-morebtn-div\").style.left=\"\",yd(\"#luckysheet-icon-morebtn-div\").style.visibility=\"hidden\";let t=`\\n            <div class=\"luckysheet-toolbar-menu-button-caption luckysheet-inline-block\" style=\"user-select: none;\">\\n                ${e.toolMore}\\n            </div>\\n            <div class=\"luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont-luckysheet luckysheet-iconfont-xiayige\" style=\"user-select: none;font-size:12px;\">\\n            </div>\\n        `;$(\"#luckysheet-icon-morebtn\").find(\".luckysheet-toolbar-button-inner-box\").html(t)}function Ml(e,n){null==e&&(e=$(\"#\"+t.container).width()),null==n&&(n=$(\"#\"+t.container).height()),t.cellmainHeight=n-(t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight+t.sheetBarHeight+t.statisticBarHeight),t.cellmainWidth=e-t.rowHeaderWidth,$(\"#luckysheet-cols-h-c, #luckysheet-cell-main\").width(t.cellmainWidth),$(\"#luckysheet-cell-main\").height(t.cellmainHeight),$(\"#luckysheet-rows-h\").height(t.cellmainHeight-t.cellMainSrollBarSize),$(\"#luckysheet-scrollbar-y\").height(t.cellmainHeight+t.columnHeaderHeight-t.cellMainSrollBarSize-3),$(\"#luckysheet-scrollbar-x\").height(t.cellMainSrollBarSize),$(\"#luckysheet-scrollbar-y\").width(t.cellMainSrollBarSize),$(\"#luckysheet-scrollbar-x\").width(t.cellmainWidth).css(\"left\",t.rowHeaderWidth-2),t.luckysheetTableContentHW=[t.cellmainWidth+t.rowHeaderWidth-t.cellMainSrollBarSize,t.cellmainHeight+t.columnHeaderHeight-t.cellMainSrollBarSize],$(\"#luckysheetTableContent, #luckysheetTableContentF\").attr({width:Math.ceil(t.luckysheetTableContentHW[0]*t.devicePixelRatio),height:Math.ceil(t.luckysheetTableContentHW[1]*t.devicePixelRatio)}).css({width:t.luckysheetTableContentHW[0],height:t.luckysheetTableContentHW[1]}),$(\"#\"+t.container).find(\"#luckysheet-grid-window-1\").css(\"bottom\",t.sheetBarHeight),$(\"#\"+t.container).find(\".luckysheet-grid-window\").css(\"bottom\",t.statisticBarHeight);let a=$(\"#luckysheet-grid-window-1\").width();$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-handle\").css({width:a-10}).end().find(\".luckysheet-freezebar-horizontal-drop\").css({width:a-10});let l=$(\"#luckysheet-grid-window-1\").height();$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-handle\").css({height:l-10}).end().find(\".luckysheet-freezebar-vertical-drop\").css({height:l-10}),$l.createAssistCanvas()}var Nl,Pl,zl=y((()=>{w(),Al(),fo(),x(),K(),_i(),Co(),_d(),Q(),Nl=0,Pl=0}));function Ll(e){let t=X(),n=t.protection,a=t.button,l=e.name,r=e.sqref,o=e.password,i=\"\";null!=o&&o.length>0&&(i='<i class=\"icon iconfont-luckysheet luckysheet-iconfont-bianji2\" title=\"'+n.rangeItemHasPassword+'\"></i>');let s=`\\n        <div class=\"luckysheet-protection-rangeItem\" title=\"${n.rangeItemDblclick}\">\\n            <div class=\"luckysheet-protection-rangeItem-del\" title=\"${a.delete}\">\\n                <i class=\"icon iconfont-luckysheet luckysheet-iconfont-shanchu\"></i>\\n            </div>\\n            <div class=\"luckysheet-protection-rangeItem-name\" title=\"${l}\">\\n                ${l}${i}\\n            </div>\\n            <div class=\"luckysheet-protection-rangeItem-range\" title=\"${r}\">\\n                ${r}\\n            </div>\\n            <div class=\"luckysheet-protection-rangeItem-update\" title=\"${a.update}\">\\n                <i class=\"icon iconfont-luckysheet luckysheet-iconfont-bianji\"></i>\\n            </div>\\n        </div>\\n    `;$(\"#luckysheet-protection-rangeItem-container\").append(s)}function Ol(e){let n=X(),a=n.protection,l=n.button;$(\"#luckysheet-slider-protection-ok\").unbind(\"click\").click((function(){let e=$(\"#protection-password\").val(),t=$(\"#protection-swichProtectionState\").is(\":checked\"),n=$(\"#protection-hint\").val(),a=or,l={};null!=a&&null!=a.config&&null!=a.config.authority&&(l=a.config.authority);let r={};\"••••••••\"!=e?(r.password=e,r.algorithmName=\"None\",r.saltValue=null):null!=l?(r.algorithmName=l.algorithmName,r.saltValue=l.saltValue,r.password=l.password):(r.algorithmName=\"None\",r.saltValue=null,r.password=\"\"),r.hintText=n,r.sheet=1==t?1:0;for(let e=0;e<ur.length;e++){let t=ur[e],n=$(\"#\"+(\"luckysheet-protection-check-\"+t)).is(\":checked\");r[t]=1==n?1:0}let o=JSON.parse(JSON.stringify(nr));r.allowRangeList=o,nr=[],ir=!0,null==a.config&&(a.config={}),a.config.authority=r,sr={},Hl()})),$(\"#luckysheet-slider-protection-cancel, #luckysheet-modal-dialog-protection-close\").click((function(){Hl()})),$(\"#luckysheet-slider-protection-addRange\").click((function(){Bl(),ar=!0,$(\"#luckysheet-protection-rangeItem-confirm\").html(l.insert),vd(\"luckysheet-protection-rangeItem-dialog\"),$(\"#protection-allowRangeAdd-title\").val(\"Default\"+nr.length),$(\"#protection-allowRangeAdd-range input\").val(\"\"),$(\"#protection-allowRangeAdd-password\").val(\"\"),$(\"#protection-allowRangeAdd-hint\").val(\"\")})),$(document).off(\"click.luckysheetProtection.rangeItemUpdate\").on(\"click.luckysheetProtection.rangeItemUpdate\",\"#luckysheet-protection-rangeItem-container .luckysheet-protection-rangeItem-update\",(function(e){Bl(),ar=!1,$(\"#luckysheet-protection-rangeItem-confirm\").html(l.update),vd(\"luckysheet-protection-rangeItem-dialog\");let t=$(e.target).closest(\".luckysheet-protection-rangeItem\"),n=$(\"#luckysheet-protection-rangeItem-container\").find(\"> div.luckysheet-protection-rangeItem\").index(t),a=nr[n];lr=n,$(\"#protection-allowRangeAdd-title\").val(a.name),$(\"#protection-allowRangeAdd-range input\").val(a.sqref),\"None\"==a.algorithmName?$(\"#protection-allowRangeAdd-password\").val(a.password):$(\"#protection-allowRangeAdd-password\").val(\"••••••••\"),$(\"#protection-allowRangeAdd-hint\").val(a.hintText)})),$(document).off(\"click.luckysheetProtection.rangeItemDelete\").on(\"click.luckysheetProtection.rangeItemDelete\",\"#luckysheet-protection-rangeItem-container .luckysheet-protection-rangeItem-del\",(function(e){let t=$(e.target).closest(\".luckysheet-protection-rangeItem\"),n=$(\"#luckysheet-protection-rangeItem-container\").find(\"> div.luckysheet-protection-rangeItem\").index(t);nr[n];nr.splice(n,1),t.remove()})),$(document).off(\"click.luckysheetProtection.rangeItemConfirm\").on(\"click.luckysheetProtection.rangeItemConfirm\",\"#luckysheet-protection-rangeItem-confirm\",(function(){let e=$(\"#protection-allowRangeAdd-title\").val(),t=$(\"#protection-allowRangeAdd-range input\").val(),n=$(\"#protection-allowRangeAdd-password\").val(),l=$(\"#protection-allowRangeAdd-hint\").val();if(0==e.length)return void alert(a.rangeItemErrorTitleNull);let r=sl.getRangeByTxt(t);if(0!=t.length)if(0!=r.length){if(t=function(e){if(null==e||0==e.length)return null;let t=e.split(\",\"),n=\"\";for(let e=0;e<t.length;e++){let a=t[e].split(\"!\"),l=\"\",r=\"\";a.length>1?(l=a[0],r=a[1]):r=a[0];let o=r.split(\":\"),i=\"\";for(let e=0;e<o.length;e++){let t=o[e],n=t.replace(/[^0-9]/g,\"\"),a=t.replace(/[^A-Za-z]/g,\"\"),l=\"\";\"\"!=a&&(l+=\"$\"+a),\"\"!=n&&(l+=\"$\"+n),i+=l+\":\"}i=i.substr(0,i.length-1),n+=l+i+\",\"}return n.substr(0,n.length-1)}(t),ar){let a={name:e,password:n,hintText:l,algorithmName:\"None\",saltValue:null,checkRangePasswordUrl:null,sqref:t};Ll(a),nr.push(a)}else{let r=lr,o=nr[r];o.name=e,o.sqref=t,o.hintText=l,\"••••••••\"!=n&&(o.password=n,o.algorithmName=\"None\");let i=$(\"#luckysheet-protection-rangeItem-container\").find(\"> div.luckysheet-protection-rangeItem\").eq(r),s=i.find(\".luckysheet-protection-rangeItem-name\"),c=\"\";null!=n&&n.length>0&&(c='<i class=\"icon iconfont-luckysheet luckysheet-iconfont-bianji2\" title=\"'+a.rangeItemHasPassword+'\"></i>'),s.html(e+c).attr(\"title\",e),i.find(\".luckysheet-protection-rangeItem-range\").html(t).attr(\"title\",t)}$(\"#luckysheet-protection-rangeItem-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide()}else alert(a.rangeItemErrorRange);else alert(a.rangeItemErrorRangeNull)})),$(document).off(\"click.luckysheetProtection.validationConfirm\").on(\"click.luckysheetProtection.validationConfirm\",\"#luckysheet-protection-sheet-validation-confirm\",(function(e){let t=$(\"#luckysheet-protection-sheet-validation\"),n=rr;if(null==n)return Vl(rr),t.hide(),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-modal-dialog-slider-protection\").show(),void Dl();let l=t.find(\"input\").val();if(null!=l&&0!=l.length){if(null!=n.algorithmName&&\"None\"!=n.algorithmName)if(null!=n.saltValue&&n.saltValue.length>0){var r=CryptoApi.getHasher(n.algorithmName);l=CryptoApi.hmac(n.saltValue,l,r)}else l=CryptoApi.hash(n.algorithmName,l);l==n.password?(Vl(rr),t.hide(),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-modal-dialog-slider-protection\").show(),Dl(),ir=!1):alert(a.checkPasswordWrongalert)}else alert(a.checkPasswordNullalert)})),$(\"#luckysheet-protection-check-selectLockedCells\").change((function(){let e=$(\"#luckysheet-protection-check-selectLockedCells\"),t=$(\"#luckysheet-protection-check-selectunLockedCells\"),n=e.is(\":checked\");t.is(\":checked\");n&&t.prop(\"checked\",!0)})),$(\"#luckysheet-protection-check-selectunLockedCells\").change((function(){let e=$(\"#luckysheet-protection-check-selectLockedCells\"),t=$(\"#luckysheet-protection-check-selectunLockedCells\");e.is(\":checked\");t.is(\":checked\")||e.prop(\"checked\",!1)})),$(document).off(\"click.luckysheetProtection.dvRange\").on(\"click.luckysheetProtection.dvRange\",\"#protection-allowRangeAdd-range .fa-table\",(function(e){$(\"#luckysheet-protection-rangeItem-dialog\").hide();let n=$(this).siblings(\"input\").val().trim();sl.rangeDialog(\"0\",n),sl.selectRange=[];let a=sl.getRangeByTxt(n);if(a.length>0)for(let e=0;e<a.length;e++){let n=a[e].row[0],l=a[e].row[1],r=a[e].column[0],o=a[e].column[1],i=t.visibledatarow[l],s=n-1==-1?0:t.visibledatarow[n-1],c=t.visibledatacolumn[o],u=r-1==-1?0:t.visibledatacolumn[r-1];sl.selectRange.push({left:u,width:c-u-1,top:s,height:i-s-1,left_move:u,width_move:c-u-1,top_move:s,height_move:i-s-1,row:[n,l],column:[r,o],row_focus:n,column_focus:r})}Vu(sl.selectRange)})),$(document).off(\"click.luckysheetProtection.dvRange2\").on(\"click.luckysheetProtection.dvRange2\",\"#luckysheet-protection-rangeItem-dialog .show-box-item-dropdown .range .fa-table\",(function(e){$(\"#luckysheet-protection-rangeItem-dialog\").hide();let n=$(this).siblings(\"input\").val().trim();sl.rangeDialog(\"1\",n),sl.selectRange=[];let a=sl.getRangeByTxt(n);if(a.length>0)for(let e=0;e<a.length;e++){let n=a[e].row[0],l=a[e].row[1],r=a[e].column[0],o=a[e].column[1],i=t.visibledatarow[l],s=n-1==-1?0:t.visibledatarow[n-1],c=t.visibledatacolumn[o],u=r-1==-1?0:t.visibledatacolumn[r-1];sl.selectRange.push({left:u,width:c-u-1,top:s,height:i-s-1,left_move:u,width_move:c-u-1,top_move:s,height_move:i-s-1,row:[n,l],column:[r,o],row_focus:n,column_focus:r})}Vu(sl.selectRange)})),$(document).off(\"click.luckysheetProtection.dvRangeConfirm\").on(\"click.luckysheetProtection.dvRangeConfirm\",\"#luckysheet-dataVerificationRange-dialog-confirm\",(function(e){let t=$(this).parents(\"#luckysheet-dataVerificationRange-dialog\").find(\"input\").val(),n=$(\"#protection-allowRangeAdd-range input\"),a=n.val();\",\"==a.substr(a.length-1,1)?n.val(a+t):n.val(t),$(\"#luckysheet-dataVerificationRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-protection-rangeItem-dialog\").show(),Vu([])})),$(document).off(\"click.luckysheetProtection.dvRangeClose\").on(\"click.dvRangeClose\",\"#luckysheet-dataVerificationRange-dialog-close\",(function(e){$(\"#luckysheet-dataVerificationRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-protection-rangeItem-dialog\").show(),Vu([])})),$(document).on(\"click.luckysheetProtection.luckysheetProtection\",\"#luckysheet-dataVerificationRange-dialog .luckysheet-modal-dialog-title-close\",(function(e){$(\"#luckysheet-dataVerificationRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-protection-rangeItem-dialog\").show(),Vu([])}))}function Bl(e){if(tr)return;tr=!0;let t=X(),n=t.protection,a=t.button;$(\"body\").append(nd(kt,{id:\"luckysheet-protection-rangeItem-dialog\",addclass:\"luckysheet-protection-rangeItem-dialog\",title:n.allowRangeTitle,content:`\\n            <div class=\"luckysheet-protection-rangeItem-content\">\\n                <div class=\"luckysheet-slider-protection-row\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-3x\">\\n                        ${n.allowRangeAddTitle}\\n                    </div>\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-7x\" style=\"left:30%\">\\n                        <input class=\"luckysheet-protection-rangeItemiInput\" id=\"protection-allowRangeAdd-title\"  placeHolder=\"${n.allowRangeAddtitleDefault}\">\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-row\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-3x\">\\n                        ${n.allowRangeAddSqrf}\\n                    </div>\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-7x\" style=\"left:30%\">\\n                        <div id=\"protection-allowRangeAdd-range\" class=\"range\">\\n                            <input class=\"formulaInputFocus\" spellcheck=\"false\" placeHolder=\"${n.selectCellRangeHolder}\">\\n                            <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${n.selectCellRange}\"></i>\\n                        </div>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-row\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-3x\">\\n                        ${n.allowRangeAddTitlePassword}\\n                    </div>\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-7x\" style=\"left:30%\">\\n                        <input class=\"luckysheet-protection-rangeItemiInput\" id=\"protection-allowRangeAdd-password\"  placeHolder=\"${n.enterPassword}\">\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-row\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-3x\">\\n                        ${n.allowRangeAddTitleHint}\\n                    </div>\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-7x\" style=\"left:30%\">\\n                        <textarea class=\"luckysheet-protection-rangeItemTextarea\" id=\"protection-allowRangeAdd-hint\"  placeHolder=\"${n.allowRangeAddTitleHintTitle}\"></textarea>\\n                    </div>\\n                </div>\\n            </div>\\n        `,botton:`<button id=\"luckysheet-protection-rangeItem-confirm\" class=\"btn btn-primary\">${a.insert}</button>\\n                    <button class=\"btn btn-default luckysheet-model-close-btn\">${a.cancel}</button>`,style:\"z-index:100003\"}))}function Vl(e){null==e&&(e={});for(let t=0;t<ur.length;t++){let n=ur[t],a=\"luckysheet-protection-check-\"+n,l=e[n];null==l&&(l=0),null==l&&n in{selectLockedCells:1,selectunLockedCells:1}&&(l=1),$(\"#\"+a).prop(\"checked\",1==l)}null!=e.password&&e.password.length>0?\"None\"==e.algorithmName||null==e.algorithmName?$(\"#protection-password\").val(e.password):$(\"#protection-password\").val(\"••••••••\"):$(\"#protection-password\").val(\"\");let t=e.sheet;null==e.sheet&&(t=0),$(\"#protection-swichProtectionState\").prop(\"checked\",1==t);let n=e.hintText;null==n&&(n=\"\"),$(\"#protection-hint\").val(n),nr=[],$(\"#luckysheet-protection-rangeItem-container\").empty();let a=e.allowRangeList;if(null!=a&&a.length>0)for(let e=0;e<a.length;e++){let t=a[e];Ll(t),nr.push(t)}}function ql(e){if(er||(function(){let e=X(),t=e.protection,n=e.button,a=\"\";for(let e=0;e<ur.length;e++){let n=ur[e];a+=`\\n            <div class=\"luckysheet-slider-protection-row\" style=\"height:18px;\">\\n                <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-10x\">\\n                <label for=\"luckysheet-protection-check-${n}\"><input id=\"luckysheet-protection-check-${n}\" name=\"luckysheet-protection-check-${n}\" type=\"checkbox\">${t[n]}</label>\\n                </div>\\n            </div>\\n        `}let l=`\\n    <div id=\"luckysheet-modal-dialog-slider-protection\" class=\"luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-pivot\" style=\"display:none;\">\\n        <div class=\"luckysheet-modal-dialog-slider-title\"> <span>${t.protectiontTitle}</span> <span id=\"luckysheet-modal-dialog-protection-close\" title=\"${n.close}\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></span> </div>\\n        <div class=\"luckysheet-modal-dialog-slider-content\">\\n            <div class=\"luckysheet-slider-protection-config\" style=\"top:10px;height:115px\">\\n                <div class=\"luckysheet-slider-protection-row\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-10x\">\\n                    <label for=\"protection-swichProtectionState\"><input id=\"protection-swichProtectionState\" name=\"protection-swichProtectionState\" type=\"checkbox\">${t.swichProtectionTip}</label>\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-row\" style=\"height:23px;\">\\n                    <div class=\"luckysheet-slider-protection-column\" style=\"width:98%;\">\\n                        <input class=\"luckysheet-protection-input\" id=\"protection-password\"  placeHolder=\"${t.enterPassword}\">\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-row\" style=\"height:47px;margin-top:4px;\">\\n                    <div class=\"luckysheet-slider-protection-column\" style=\"width:98%;\">\\n                        <textarea class=\"luckysheet-protection-textarea\" id=\"protection-hint\"  placeHolder=\"${t.enterHint}\"></textarea>\\n                    </div>\\n                </div>\\n            </div>\\n            <div class=\"luckysheet-slider-protection-config\" style=\"top:130px;height:290px;border-top:1px solid #c5c5c5\">\\n                <div class=\"luckysheet-slider-protection-row\" style=\"height:20px;\">\\n                    ${t.authorityTitle}\\n                </div>\\n                ${a}\\n            </div>\\n            <div class=\"luckysheet-slider-protection-config\" style=\"top:440px;bottom:45px;border-top:1px solid #c5c5c5\">\\n                <div class=\"luckysheet-slider-protection-row\" style=\"height:25px;\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-7x\" style=\"left:0px;line-height: 25px;\">\\n                        ${t.allowRangeTitle}\\n                    </div>\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-3x\" style=\"left:70%;\">\\n                        <div class=\"luckysheet-slider-protection-ok luckysheet-slider-protection-addRange\" id=\"luckysheet-slider-protection-addRange\">\\n                            ${t.allowRangeAdd}\\n                        </div>\\n                    </div>\\n                </div>\\n\\n                <div id=\"luckysheet-protection-rangeItem-container\" class=\"luckysheet-slider-protection-row\" style=\"top:25px;bottom:0px;position:absolute\">\\n                   \\n                </div>\\n            </div>\\n            <div class=\"luckysheet-slider-protection-config\" style=\"bottom:0px;height:45px\">\\n                <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-5x\" style=\"left:0px;\">\\n                    <div class=\"luckysheet-slider-protection-ok\" id=\"luckysheet-slider-protection-ok\">\\n                        ${n.confirm}\\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-5x\" style=\"left:50%;\">\\n                    <div class=\"luckysheet-slider-protection-cancel\" id=\"luckysheet-slider-protection-cancel\">\\n                        ${n.cancel}\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n    `;$(\"body\").append(l),$(\"body\").append(nd(kt,{id:\"luckysheet-protection-sheet-validation\",addclass:\"luckysheet-protection-sheet-validation\",title:t.validationTitle,content:`\\n            <div class=\"luckysheet-slider-protection-row\">\\n                <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-10x\">\\n                    ${t.validationTips}\\n                </div>\\n            </div>\\n            <div class=\"luckysheet-slider-protection-row\" style=\"margin-top:20px\">\\n                <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-10x\">\\n                    <input type=\"password\" class=\"luckysheet-protection-rangeItemiInput\" placeHolder=\"${t.validationInputHint}\">\\n                </div>\\n            </div>\\n        `,botton:`<button id=\"luckysheet-protection-sheet-validation-confirm\" class=\"btn btn-primary\">${n.confirm}</button>\\n                    <button class=\"btn btn-default luckysheet-model-close-btn\">${n.cancel}</button>`,style:\"z-index:100003\"}))}(),Ol(),er=!0),or=e,null!=e&&null!=e.config&&null!=e.config.authority){let t=e.config.authority;if(ir&&1==t.sheet&&null!=t.password&&t.password.length>0)return rr=t,$(\"#luckysheet-protection-sheet-validation input\").val(\"\"),void vd(\"luckysheet-protection-sheet-validation\");Vl(t)}else $(\"#protection-swichProtectionState\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-selectLockedCells\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-selectunLockedCells\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-formatCells\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-formatColumns\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-formatRows\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-insertColumns\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-insertRows\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-deleteColumns\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-insertHyperlinks\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-deleteRows\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-sort\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-filter\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-usePivotTablereports\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-editObjects\").prop(\"checked\",!0),$(\"#luckysheet-protection-check-editScenarios\").prop(\"checked\",!0),nr=[],$(\"#luckysheet-protection-rangeItem-container\").empty();$(\"#luckysheet-modal-dialog-slider-protection\").show(),Dl()}function Hl(){$(\"#luckysheet-protection-rangeItem-dialog\").hide(),$(\"#luckysheet-modal-dialog-slider-protection\").hide(),Dl()}function Ul(e,t,n,a,l=!0,r=!0){let o=!1,i=n.allowRangeList;if(null!=i&&i.length>0){let n=!1;for(let a=0;a<i.length;a++){let r=i[a],s=r.sqref,c=sl.getRangeByTxt(s);if(c.length>0)for(let a=0;a<c.length;a++){let l=c[a].row[0],r=c[a].row[1],o=c[a].column[0],i=c[a].column[1];if(e>=l&&e<=r&&t>=o&&t<=i){n=!0;break}}if(n){let e=r.password;if(null!=e&&e.length>0&&!(s in sr))return l&&(jl(r),$(\"#luckysheet-selection-copy .luckysheet-selection-copy\").hide()),!1;o=!0;break}}}if(!o&&!r&&(o=!0),!o&&l){let e;e=null!=n.hintText&&n.hintText.length>0?n.hintText:a.defaultSheetHintText,vo.info(\"\",e),$(\"#luckysheet-selection-copy .luckysheet-selection-copy\").hide()}return o}function jl(e){let t=X(),n=t.protection,a=t.button;cr||$(\"body\").append(nd(kt,{id:\"luckysheet-protection-range-validation\",addclass:\"luckysheet-protection-sheet-validation\",title:n.validationTitle,content:`\\n                <div class=\"luckysheet-slider-protection-row\">\\n                    <div id=\"luckysheet-protection-range-validation-hint\" class=\"luckysheet-slider-protection-column luckysheet-protection-column-10x\">\\n                        \\n                    </div>\\n                </div>\\n                <div class=\"luckysheet-slider-protection-row\" style=\"margin-top:20px\">\\n                    <div class=\"luckysheet-slider-protection-column luckysheet-protection-column-10x\">\\n                        <input type=\"password\" class=\"luckysheet-protection-rangeItemiInput\" placeHolder=\"${n.validationInputHint}\">\\n                    </div>\\n                </div>\\n            `,botton:`<button id=\"luckysheet-protection-range-validation-confirm\" class=\"btn btn-primary\">${a.confirm}</button>\\n                        <button class=\"btn btn-default luckysheet-model-close-btn\">${a.cancel}</button>`,style:\"z-index:100003\"})),cr=!0,vd(\"luckysheet-protection-range-validation\");let l=$(\"#luckysheet-protection-range-validation-hint\");null!=e.hintText&&e.hintText.length>0?l.html(e.hintText):l.html(n.defaultRangeHintText);let r=$(\"#luckysheet-protection-range-validation\"),o=r.find(\"input\");o.val(\"\"),$(\"#luckysheet-protection-range-validation-confirm\").off(\"click\").on(\"click\",(function(){let t=o.val();if(null!=t&&0!=t.length){if(null!=e.algorithmName&&\"None\"!=e.algorithmName)if(null!=e.saltValue&&e.saltValue.length>0){var a=CryptoApi.getHasher(e.algorithmName);t=CryptoApi.hmac(e.saltValue,t,a)}else t=CryptoApi.hash(e.algorithmName,t);t==e.password?(sr[e.sqref]=1,r.hide(),$(\"#luckysheet-modal-dialog-mask\").hide(),alert(n.checkPasswordSucceedalert)):alert(n.checkPasswordWrongalert)}else alert(n.checkPasswordNullalert)}))}function Gl(e){let t=ki.getSheetByIndex(e);if(null==t||null==t.config||null==t.config.authority)return!0;let n=t.config.authority;if(null==n||null==n.sheet||0==n.sheet)return!0;let a,l=X().protection;return a=null!=n.hintText&&n.hintText.length>0?n.hintText:l.defaultSheetHintText,vo.info(\"\",a),!1}function Wl(e,t,n,a=!0,l=!0){let r=ki.getSheetByIndex(n);if(null==r||null==r.config||null==r.config.authority)return!0;let o=r.data[e][t],i=r.config.authority;return!!(null==i||null==i.sheet||0==i.sheet||o&&0===o.lo)||Ul(e,t,i,X().protection,a,l)}function Yl(e,t,n){let a=ki.getSheetByIndex(n);if(!a||a.data&&!a.data[e]||a.data&&!a.data[e][t]||null==a.config||null==a.config.authority)return!0;let l=a.data[e][t],r=a.config.authority;return null==r||null==r.sheet||0==r.sheet||null==l||null==l.hi||0==l.hi}function Xl(e,t){let n=ki.getSheetByIndex(t);if(null==n||null==n.config||null==n.config.authority)return!0;let a=n.config.authority;if(null==a||null==a.sheet||0==a.sheet||null==e||0==e.length)return!0;let l=X().protection;for(let t=0;t<e.length;t++){let r=e[t].row[0],o=e[t].row[1],i=e[t].column[0],s=e[t].column[1];for(let e=r;e<=o;e++)for(let t=i;t<=s;t++){let r=n.data[e][t]||{};if(!Ul(e,t,a,l,!0,void 0===r.lo||1===r.lo))return!1}}return!0}function Kl(e,t,n){let a=X().protection,l=ki.getSheetByIndex(n);if(null==l||null==l.config||null==l.config.authority)return!0;let r=l.data[e][t],o=l.config.authority;return null==o||null==o.sheet||0==o.sheet||(r&&0===r.lo||Ul(e,t,o,a,!1)?1==o.selectunLockedCells||null==o.selectunLockedCells:1==o.selectLockedCells||null==o.selectLockedCells)}function Zl(e){X().protection;let t=ki.getSheetByIndex(e);if(null==t||null==t.config||null==t.config.authority)return!0;let n=t.config.authority;if(null==n||null==n.sheet||0==n.sheet)return!0;let a=!1;(1==n.selectunLockedCells||null==n.selectunLockedCells)&&(a=!0);let l=!1;return(1==n.selectLockedCells||null==n.selectLockedCells)&&(l=!0),!(!a||!l)}function Jl(e){let t=ki.getSheetByIndex(e);if(null==t||null==t.config||null==t.config.authority)return!0;let n=t.config.authority;if(null==n||null==n.sheet||0==n.sheet||1==n.formatCells||null==n.formatCells)return!0;let a,l=X().protection;return a=null!=n.hintText&&n.hintText.length>0?n.hintText:l.defaultSheetHintText,vo.info(\"\",a),!1}function Ql(e,t=\"formatColumns\",n=!0){let a=ki.getSheetByIndex(e);if(null==a||null==a.config||null==a.config.authority)return!0;let l=a.config.authority;if(null==l||null==l.sheet||0==l.sheet||1==l[t]||null==l[t])return!0;if(n){let e,t=X().protection;e=null!=l.hintText&&l.hintText.length>0?l.hintText:t.defaultSheetHintText,vo.info(\"\",e)}return!1}var er,tr,nr,ar,lr,rr,or,ir,sr,cr,ur,dr=y((()=>{x(),K(),Et(),qt(),Wt(),_i(),zl(),cl(),_d(),Xu(),Co(),Io(),er=!1,tr=!1,nr=[],ar=!0,lr=null,rr=null,or=null,ir=!0,sr={},cr=!1,ur=[\"selectLockedCells\",\"selectunLockedCells\",\"formatCells\",\"formatColumns\",\"formatRows\",\"insertColumns\",\"insertRows\",\"insertHyperlinks\",\"deleteColumns\",\"deleteRows\",\"sort\",\"filter\",\"usePivotTablereports\",\"editObjects\",\"editScenarios\"]}));function hr(e,t,n){null==n&&(n=!0);return n?e.sort((function(e,n){let a=e[t],l=n[t];return\"object\"==ad(e[t])&&(a=e[t].v),\"object\"==ad(n[t])&&(l=n[t].v),_(a)?1:_(l)?-1:pa(a)&&pa(l)?ga(a,l):C(a)&&C(l)?(0,gr.default)(a).value()-(0,gr.default)(l).value():C(a)||C(l)?C(a)?C(l)?void 0:-1:1:a.localeCompare(l,\"zh\")})):e.sort((function(e,n){let a=e[t],l=n[t];return\"object\"==ad(e[t])&&(a=e[t].v),\"object\"==ad(n[t])&&(l=n[t].v),_(a)?1:_(l)?-1:pa(a)&&pa(l)?ga(l,a):C(a)&&C(l)?(0,gr.default)(l).value()-(0,gr.default)(a).value():C(a)||C(l)?C(a)?C(l)?void 0:1:-1:l.localeCompare(a,\"zh\")}))}function fr(e,t){null==t&&(t=!0);return t?e.sort((function(e,t){let n=e,a=t;return\"object\"==ad(e)&&(n=e.v),\"object\"==ad(t)&&(a=t.v),null==n&&(n=\"\"),null==a&&(a=\"\"),pa(n)&&pa(a)?ga(n,a):C(n)&&C(a)?(0,gr.default)(n).value()-(0,gr.default)(a).value():C(n)||C(a)?C(n)?C(a)?void 0:-1:1:n.localeCompare(a,\"zh\")})):e.sort((function(e,t){let n=e,a=t;return\"object\"==ad(e)&&(n=e.v),\"object\"==ad(t)&&(a=t.v),null==n&&(n=\"\"),null==a&&(a=\"\"),pa(n)&&pa(a)?ga(a,n):C(n)&&C(a)?(0,gr.default)(a).value()-(0,gr.default)(n).value():C(n)||C(a)?C(n)?C(a)?void 0:1:-1:a.localeCompare(n,\"zh\")}))}function mr(e){if(!Ql(t.currentSheetIndex,\"sort\"))return;let n=X().sort;if(t.luckysheet_select_save.length>1)return void(I()?alert(n.noRangeError):vo.info(n.noRangeError,\"\"));null==e&&(e=!0);let a,l,r=mn.deepCopyFlowData(t.flowdata),o=t.luckysheet_select_save[0].row[0],i=t.luckysheet_select_save[0].row[1],s=t.luckysheet_select_save[0].column[0],c=t.luckysheet_select_save[0].column[1];for(let e=o;e<=i;e++)if(null!=r[e]&&null!=r[e][s]){let t=r[e][s];if(null!=t.mc||_(t.v))continue;if(null==a&&/[\\u4e00-\\u9fa5]+/g.test(t.v)){a=e+1,l=e+1;continue}null==a&&(a=e),l=e}if(null==a||a>i)return;let u=!1,d=[];for(let e=a;e<=l;e++){let t=[];for(let n=s;n<=c;n++){if(null!=r[e][n]&&null!=r[e][n].mc){u=!0;break}t.push(r[e][n])}d.push(t)}if(u)return void(I()?alert(n.mergeError):vo.info(n.mergeError,\"\"));d=hr(d,0,e);for(let e=a;e<=l;e++)for(let t=s;t<=c;t++)r[e][t]=d[e-a][t-s];let h={};if(null!=t.config.rowlen){let e=$.extend(!0,{},t.config);e=aa(r,a,l,e),h={cfg:e,RowlChange:!0}}ao(r,[{row:[a,l],column:[s,c]}],h)}function pr(e,n){if(!Ql(t.currentSheetIndex,\"sort\"))return;null==n&&(n=!0);let a,l,r=X().sort,o=mn.deepCopyFlowData(t.flowdata),i=o.length-1,s=o[0].length-1;for(let t=0;t<=i;t++)if(null==o[t][e]||null==o[t][e].mc){if(null!=o[t][e]&&!_(o[t][e].v)&&/[\\u4e00-\\u9fa5]+/g.test(o[t][e].v)&&null==a){a=t+1,l=t+1;continue}null==a&&(a=t),null!=o[t][e]&&!_(o[t][e].v)&&(l=t)}if(null==a||a>i)return;let c=!1,u=[];for(let e=a;e<=l;e++){let t=[];for(let n=0;n<=s;n++){if(null!=o[e][n]&&null!=o[e][n].mc){c=!0;break}t.push(o[e][n])}u.push(t)}if(c)return void(I()?alert(r.columnSortMergeError):vo.info(r.columnSortMergeError,\"\"));u=hr(u,e,n);for(let e=a;e<=l;e++)for(let t=0;t<=s;t++)o[e][t]=u[e-a][t-0];let d={};if(null!=t.config.rowlen){let e=$.extend(!0,{},t.config);e=aa(o,a,l,e),d={cfg:e,RowlChange:!0}}ao(o,[{row:[a,l],column:[0,s]}],d)}var gr,yr,vr,br,kr,wr,xr,_r,Cr,Tr,Sr,$r,Ir,Rr,Ar,Dr,Fr,Er,Mr,Nr,Pr,zr,Lr=y((()=>{_d(),E(),ka(),Co(),gn(),da(),fo(),dr(),x(),K(),gr=k(wa())})),Or=y((()=>{Yn(),yr={transpose:function(e,t=!0){let n=[];if(0==e.length)return[];if(0==e[0].length)return[];for(let a=0;a<e[0].length;a++){let l=[];for(let n=0;n<e.length;n++){let r=\"\";null!=e[n]&&null!=e[n][a]&&(r=t?Vn(n,a,e):e[n][a]),l.push(r)}n.push(l)}return n},minusClear:function(e,t){if(t.row[0]>e.row[1]||t.row[1]<e.row[0]||t.column[0]>e.column[1]||t.column[1]<e.column[0])return null;if(t.row[0]==e.row[0]&&t.row[1]<e.row[1]&&t.column[0]>e.column[0]&&t.column[1]<e.column[1])return[];let n=[],a=null,l=[e.column[0],e.column[1]];t.row[1]>e.row[0]&&t.row[1]<e.row[1]?a=[t.row[1]+1,e.row[1]]:t.row[0]>e.row[0]&&t.row[0]<e.row[1]&&(a=[e.row[0],t.row[0]-1]),null!=a&&n.push({row:a,column:l});let r=[e.row[0],e.row[1]],o=null;return t.column[1]>e.column[0]&&t.column[1]<e.column[1]?o=[t.column[1]+1,e.column[1]]:t.column[0]>e.column[0]&&t.column[0]<e.column[1]&&(o=[e.column[0],t.column[0]-1]),null!=o&&n.push({row:r,column:o}),n}}})),Br=y((()=>{_d(),vr={STDEVP:function(e,t){let n=0;for(let a=0;a<t.length;a++){let l=t[a];n+=Math.pow(l-e,2)}return md(Math.sqrt(n/t.length))},STDEV:function(e,t){let n=0;for(let a=0;a<t.length;a++){let l=t[a];n+=Math.pow(l-e,2)}return md(Math.sqrt(n/(t.length-1)))},VARP:function(e,t){let n=0;for(let a=0;a<t.length;a++){let l=t[a];n+=Math.pow(l-e,2)}return md(n/t.length)},let:function(e,t){let n=0;for(let a=0;a<t.length;a++){let l=t[a];n+=Math.pow(l-e,2)}return md(n/(t.length-1))}}})),Vr=y((()=>{qt(),_d(),Yn(),ka(),Ma(),E(),Lr(),fo(),Co(),gn(),Io(),Or(),Br(),Xu(),Kn(),Et(),_i(),zl(),_o(),dr(),x(),K(),br=k(wa()),Et(),wr=kr={pivotDatas:null,pivotSheetIndex:0,pivotDataSheetIndex:0,celldata:null,origindata:null,getCellData:function(e,n,a){let l,r=this;l=null!=e?e:t.currentSheetIndex;let o=Mt(l);\"object\"!=ad(t.luckysheetfile[o].pivotTable)&&(t.luckysheetfile[o].pivotTable=new Function(\"return \"+t.luckysheetfile[o].pivotTable)()),null!=t.luckysheetfile[o].pivotTable?(r.column=t.luckysheetfile[o].pivotTable.column,r.row=t.luckysheetfile[o].pivotTable.row,r.values=t.luckysheetfile[o].pivotTable.values,r.filter=t.luckysheetfile[o].pivotTable.filter,r.showType=t.luckysheetfile[o].pivotTable.showType,r.filterparm=t.luckysheetfile[o].pivotTable.filterparm,null!=t.luckysheetfile[o].pivotTable.drawPivotTable?r.drawPivotTable=t.luckysheetfile[o].pivotTable.drawPivotTable:r.drawPivotTable=!0,null!=t.luckysheetfile[o].pivotTable.pivotTableBoundary?r.pivotTableBoundary=t.luckysheetfile[o].pivotTable.pivotTableBoundary:r.pivotTableBoundary=[12,6],r.pivot_select_save=null!=a?a:t.luckysheetfile[o].pivotTable.pivot_select_save,r.pivotDataSheetIndex=null!=n?n:t.luckysheetfile[o].pivotTable.pivotDataSheetIndex):(r.column=null,r.row=null,r.values=null,r.filter=null,r.showType=null,r.filterparm=null,r.drawPivotTable=!0,r.pivotTableBoundary=[12,6],r.pivot_select_save=null!=a?a:t.luckysheet_select_save,r.pivotDataSheetIndex=null!=n?n:l);let i=Mt(r.pivotDataSheetIndex),s=t.luckysheetfile[i];null==s.data&&(s.data=ki.buildGridData(s)),r.origindata=On(s.data,r.pivot_select_save);let c={};if(null!=r.filterparm)for(let e in r.filterparm)for(let t in r.filterparm[e])\"rowhidden\"===t&&null!=r.filterparm[e][t]&&(c=$.extend(!0,c,r.filterparm[e][t]));r.rowhidden=c,r.pivotSheetIndex=l;let u=[];for(let e=0;e<r.origindata.length;e++)null!=r.rowhidden&&null!=r.rowhidden[e]||u.push([].concat(r.origindata[e]));r.celldata=u,r.pivot_data_type={};for(let e=0;e<r.celldata[1].length;e++){let t=va(r.celldata[1][e]);r.pivot_data_type[e.toString()]=t}},pivot_data_type:{},pivot_select_save:null,column:null,row:null,values:null,filter:null,showType:null,rowhidden:null,selected:null,caljs:null,initial:!0,filterparm:null,luckysheet_pivotTable_select_state:!1,jgridCurrentPivotInput:null,movestate:!1,moveitemposition:[],movesave:{},showvaluecolrow:function(){$(\"#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item\").length>=2?($(\"#luckysheetpivottablevaluecolrowshow\").show(),\"column\"==this.showType?($(\"#luckysheetpivottablevaluecolrow\").prop(\"checked\",!0),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']\").addClass(\"ui-state-active\"),$(\"#luckysheetpivottablevaluecolrow1\").prop(\"checked\",!1),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']\").removeClass(\"ui-state-active\")):($(\"#luckysheetpivottablevaluecolrow1\").prop(\"checked\",!0),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']\").addClass(\"ui-state-active\"),$(\"#luckysheetpivottablevaluecolrow\").prop(\"checked\",!1),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']\").removeClass(\"ui-state-active\"))):$(\"#luckysheetpivottablevaluecolrowshow\").hide()},resetOrderby:function(e){let t=$(\"#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item\").index(e);$(\"#luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){$(this).data(\"orderby\")==t&&$(this).data(\"orderby\",\"self\")}))},luckysheetsliderlistclearfilter:function(e){let t=this,n=e.parent(),a=n.data(\"index\"),l={},r=t.origindata;n.data(\"rowhidden\",\"\").find(\".luckysheet-slider-list-item-filtered\").hide(),t.setDatatojsfile(\"selected\",{},a),t.setDatatojsfile(\"rowhidden\",null,a);let o=[];for(let e=0;e<r.length;e++)null==l[e]&&o.push([].concat(r[e]));t.celldata=o,t.refreshPivotTable(),$(\"#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu\").hide()},luckysheetsliderlistitemfilter:function(e){let t=X().filter,n=e.parent(),a=n.offset(),l=$(\"#luckysheet-pivotTableFilter-menu\"),r=$(window).height(),o=($(window).width(),n.data(\"index\")),i=n.data(\"rowhidden\");null==i||\"\"==i?i={}:\"string\"==ad(i)&&(i=JSON.parse(i)),$(\"body .luckysheet-cols-menu\").hide(),$(\"#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu\").hide(),$(\"#luckysheet-pivotTableFilter-byvalue-input\").val(\"\"),$(\"#luckysheet-pivotTableFilter-bycondition\").next().hide(),$(\"#luckysheet-pivotTableFilter-byvalue\").next().show(),l.data(\"index\",o),$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input\").hide().find(\"input\").val(),$(\"#luckysheet-pivotTableFilter-selected span\").data(\"type\",\"0\").data(\"type\",null).text(t.filiterInputNone);let s=n.data(\"byconditiontype\");if($(\"#luckysheet-pivotTableFilter-selected span\").data(\"value\",n.data(\"byconditionvalue\")).data(\"type\",s).text(n.data(\"byconditiontext\")),\"2\"==s){let e=$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input2\").show().find(\"input\");e.eq(0).val(n.data(\"byconditionvalue1\")),e.eq(1).val(n.data(\"byconditionvalue2\"))}else\"1\"==s&&$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input\").eq(0).show().find(\"input\").val(n.data(\"byconditionvalue1\"));let c=St(\"#luckysheet-pivotTableFilter-byvalue-select\",{text:t.filiterMoreDataTip});$(\"#luckysheet-pivotTableFilter-byvalue-select\").empty().append(c.el);let u={};$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").not(n.get(0)).each((function(){let e=$(this).data(\"rowhidden\");if(null==e||\"\"==e)return!0;\"string\"==ad(e)&&(e=JSON.parse(e));for(let t in e)u[t]=0}));let d=this.origindata;setTimeout((function(){let e={},n={},l={},s={};for(let t=1;t<d.length;t++){if(t in u||null==d[t])continue;let a=d[t][o];if(null!=a&&null!=a.ct&&\"d\"==a.ct.t){let l=Ca(\"YYYY-MM-DD\",a.v),r=l.split(\"-\")[0],o=l.split(\"-\")[1],s=l.split(\"-\")[2];r in e||(e[r]={}),o in e[r]||(e[r][o]={}),s in e[r][o]||(e[r][o][s]=0),e[r][o][s]++,t in i&&(n[r]=0,n[o]=0,n[s]=0)}else{let e,n;null==a||_(a.v)?(e=null,n=null):(e=a.v,n=a.m),e in l||(l[e]={}),n in l[e]||(l[e][n]=0),l[e][n]++,t in i&&(s[e+\"#$$$#\"+n]=0)}}let h=[];if(JSON.stringify(e).length>2)for(let a in e){let l,r=0,o=\"\";for(let l in e[a]){let i,s=0,c=\"\";for(let t in e[a][l]){let r,o,i=e[a][l][t];s+=i,r=Number(l)<10?\"0\"+Number(l):l,o=Number(t)<10?\"0\"+Number(t):t,c+=a in n&&l in n&&t in n?'<div class=\"day luckysheet-mousedown-cancel cf\" data-check=\"false\" title=\"'+a+\"-\"+r+\"-\"+o+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+t+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+i+\" )</span></div>\":'<div class=\"day luckysheet-mousedown-cancel cf\" data-check=\"true\" title=\"'+a+\"-\"+r+\"-\"+o+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+t+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+i+\" )</span></div>\"}r+=s,i=Number(l)<10?\"0\"+Number(l):l,o+=a in n&&l in n?'<div class=\"monthBox luckysheet-mousedown-cancel\"><div class=\"month luckysheet-mousedown-cancel cf\" data-check=\"false\" title=\"'+a+\"-\"+i+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+l+t.filiterMonthText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+s+' )</span></div><div class=\"dayList luckysheet-mousedown-cancel\">'+c+\"</div></div>\":'<div class=\"monthBox luckysheet-mousedown-cancel\"><div class=\"month luckysheet-mousedown-cancel cf\" data-check=\"true\" title=\"'+a+\"-\"+i+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+l+t.filiterMonthText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+s+' )</span></div><div class=\"dayList luckysheet-mousedown-cancel\">'+c+\"</div></div>\"}l=a in n?'<div class=\"yearBox luckysheet-mousedown-cancel\"><div class=\"year luckysheet-mousedown-cancel cf\" data-check=\"false\" title=\"'+a+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+a+t.filiterYearText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+r+' )</span></div><div class=\"monthList luckysheet-mousedown-cancel\">'+o+\"</div></div>\":'<div class=\"yearBox luckysheet-mousedown-cancel\"><div class=\"year luckysheet-mousedown-cancel cf\" data-check=\"true\" title=\"'+a+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+a+t.filiterYearText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+r+' )</span></div><div class=\"monthList luckysheet-mousedown-cancel\">'+o+\"</div></div>\",h.unshift(l)}if(JSON.stringify(l).length>2){let e=Object.keys(l);e=fr(e,!0);for(let n=0;n<e.length;n++){let a=e[n];for(let e in l[a]){let n,r;n=a+\"#$$$#\"+e==\"null#$$$#null\"?t.valueBlank:e,r=a+\"#$$$#\"+e in s?'<div class=\"textBox luckysheet-mousedown-cancel cf\" data-check=\"false\" data-filter=\"'+a+\"#$$$#\"+e+'\" title=\"'+e+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+n+'</label><span class=\"luckysheet-mousedown-cancel count\">( '+l[a][e]+\" )</span></div>\":'<div class=\"textBox luckysheet-mousedown-cancel cf\" data-check=\"true\" data-filter=\"'+a+\"#$$$#\"+e+'\" title=\"'+e+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+n+'</label><span class=\"luckysheet-mousedown-cancel count\">( '+l[a][e]+\" )</span></div>\",h.push(r)}}}let f=r-a.top-350;f<0&&(f=100),$(\"#luckysheet-pivotTableFilter-byvalue-select\").append(\"<div class='ListBox luckysheet-mousedown-cancel' style='max-height:\"+f+\"px;overflow-y:auto;overflow-x:hidden;'>\"+h.join(\"\")+\"</div>\"),c.close()}),1),dd(l,a.left-250,a.top)},getSumTypeName:function(e){let t=\"\",n=X().pivotTable;return\"SUM\"==e?t=n.valueStatisticsSUM:\"COUNT\"==e?t=n.valueStatisticsCOUNT:\"COUNTA\"==e?t=n.valueStatisticsCOUNTA:\"COUNTUNIQUE\"==e?t=n.valueStatisticsCOUNTUNIQUE:\"AVERAGE\"==e?t=n.valueStatisticsAVERAGE:\"MAX\"==e?t=n.valueStatisticsMAX:\"MIN\"==e?t=n.valueStatisticsMIN:\"MEDIAN\"==e?t=n.valueStatisticsMEDIAN:\"PRODUCT\"==e?t=n.valueStatisticsPRODUCT:\"STDEV\"==e?t=n.valueStatisticsSTDEV:\"STDEVP\"==e?t=n.valueStatisticsSTDEVP:\"let\"==e?t=n.valueStatisticslet:\"VARP\"==e&&(t=n.valueStatisticsVARP),t},setDatatojsfile:function(e,n,a){let l=this,r=Mt(l.pivotSheetIndex);null==t.luckysheetfile[r].pivotTable&&(t.luckysheetfile[r].pivotTable={}),null==a?(t.luckysheetfile[r].pivotTable[e]=n,l[e]=n):(null==t.luckysheetfile[r].pivotTable.filterparm&&(t.luckysheetfile[r].pivotTable.filterparm={}),null==t.luckysheetfile[r].pivotTable.filterparm[a.toString()]&&(t.luckysheetfile[r].pivotTable.filterparm[a.toString()]={}),t.luckysheetfile[r].pivotTable.filterparm[a.toString()][e]=n,null==l.filterparm&&(l.filterparm={}),null==l.filterparm[a.toString()]&&(l.filterparm[a.toString()]={}),l.filterparm[a.toString()][e]=n)},createPivotTable:function(e){if(I()||!1===t.allowEdit)return;let n=this,a=t.currentSheetIndex,l=X().pivotTable;if(I())return void alert(l.errorNotAllowEdit);if(t.luckysheet_select_save.length>1)return void vo.info(\"\",l.errorNotAllowMulti);if(0==t.luckysheet_select_save.length||t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]||t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1])return void vo.info(\"\",l.errorSelectRange);let r=$.extend(!0,{},t.luckysheet_select_save[0]);ki.addNewSheet(e,!0),n.getCellData(t.currentSheetIndex,a,r),n.setDatatojsfile(\"pivot_select_save\",r),n.setDatatojsfile(\"pivotDataSheetIndex\",a),n.initialPivotManage()},changePivotTable:function(e){let n=this,a=X().pivotTable,l=t.luckysheetfile[Mt(e)].pivotTable.pivotDataSheetIndex;null!=Mt(l)?(n.getCellData(e),n.initialPivotManage(!0),n.refreshPivotTable()):vo.info(a.errorIsDamage,\"\")},refreshPivotTable:function(e=!0){let n=this,a={};a.pivotTable=kr,a.data=mn.deepCopyFlowData(t.flowdata),n.storePivotTableParam();let l=n.dataHandler(n.column,n.row,n.values,n.showType,n.celldata);n.setDatatojsfile(\"pivotDatas\",l);let r=$.extend(!0,[],ki.nulldata),o=r,i=0,s=0;if(0==l.length)n.setDatatojsfile(\"drawPivotTable\",!0),n.setDatatojsfile(\"pivotTableBoundary\",[12,6]);else{n.setDatatojsfile(\"drawPivotTable\",!1),n.setDatatojsfile(\"pivotTableBoundary\",[l.length,l[0].length]);let e=l.length,t=l[0].length;i=e-r.length,s=t-r[0].length,o=qn(r,i+20,s+10,!0);for(let n=0;n<e;n++){let e=[].concat(o[n]);for(let a=0;a<t;a++){let t=\"\";null!=l[n]&&null!=l[n][a]&&(t=Vn(n,a,l)),e[a]=t}o[n]=e}}a.type=\"pivotTable_change\",a.curdata=$.extend(!0,[],o),a.sheetIndex=t.currentSheetIndex,a.pivotTablecur=n.getPivotTableData(),t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push(a)),$o(),t.clearjfundo=!1,i>0||s>0?lo(o[0].length,o.length,o,null,t.luckysheet_select_save,\"datachangeAll\",void 0,void 0,e):(ao(o,t.luckysheet_select_save,{},null,e),Pu()),t.clearjfundo=!0},drawPivotTable:!0,pivotTableBoundary:[12,6],pivotclick:function(e,n,a){null==a&&(a=t.currentSheetIndex);let l=t.luckysheetfile[Mt(a)];if(!l.isPivotTable)return;if(null==Mt(l.pivotTable.pivotDataSheetIndex))return;let r=$(\"#luckysheet-modal-dialog-slider-pivot\"),o=this.isPivotRange(e,n);if(o&&r.is(\":hidden\")){if(!Ql(a,\"usePivotTablereports\",!1))return;r.show(),Dl(),$(\"#luckysheet-sta-content\").css(\"padding-right\",260)}else!o&&r.is(\":visible\")&&(r.hide(),Dl(),$(\"#luckysheet-sta-content\").css(\"padding-right\",10))},isPivotRange:function(e,n){if(t.luckysheetcurrentisPivotTable)return e<this.pivotTableBoundary[0]&&n<this.pivotTableBoundary[1]},storePivotTableParam:function(){let e=this,t=[],n=[],a=[],l=[];$(\"#luckysheet-modal-dialog-config-filter .luckysheet-modal-dialog-slider-config-item\").each((function(){let e={};e.index=$(this).data(\"index\"),e.name=$(this).data(\"name\"),e.fullname=$(this).find(\".luckysheet-modal-dialog-slider-config-item-txt\").text(),a.push(e)})),$(\"#luckysheet-modal-dialog-config-row .luckysheet-modal-dialog-slider-config-item\").each((function(){let e={};e.index=$(this).data(\"index\"),e.name=$(this).data(\"name\"),e.fullname=$(this).find(\".luckysheet-modal-dialog-slider-config-item-txt\").text(),e.order=$(this).data(\"order\"),e.orderby=$(this).data(\"orderby\"),e.stastic=$(this).data(\"stastic\"),n.push(e)})),$(\"#luckysheet-modal-dialog-config-column .luckysheet-modal-dialog-slider-config-item\").each((function(){let e={};e.index=$(this).data(\"index\"),e.name=$(this).data(\"name\"),e.fullname=$(this).find(\".luckysheet-modal-dialog-slider-config-item-txt\").text(),e.order=$(this).data(\"order\"),e.orderby=$(this).data(\"orderby\"),e.stastic=$(this).data(\"stastic\"),t.push(e)})),$(\"#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item\").each((function(){let e={};e.index=$(this).data(\"index\"),e.name=$(this).data(\"name\"),e.fullname=$(this).find(\".luckysheet-modal-dialog-slider-config-item-txt\").text(),e.sumtype=$(this).data(\"sumtype\"),e.nameindex=$(this).data(\"nameindex\"),l.push(e)})),e.setDatatojsfile(\"column\",t),e.setDatatojsfile(\"row\",n),e.setDatatojsfile(\"filter\",a),e.setDatatojsfile(\"values\",l);let r=$(\"#luckysheetpivottablevaluecolrow:checked, #luckysheetpivottablevaluecolrow1:checked\").val();e.setDatatojsfile(\"showType\",\"0\"==r?\"row\":\"column\");let o=e.getPivotTableData();delete o.pivotDatas,yo.saveParam(\"all\",e.pivotSheetIndex,o,{k:\"pivotTable\"})},getPivotTableData:function(e){null==e&&(e=this.pivotSheetIndex);let n=Mt(e),a=t.luckysheetfile[n].pivotTable;return a=\"object\"==ad(a)?$.extend(!0,{},t.luckysheetfile[n].pivotTable):new Function(\"return \"+a)(),a},addValuesToTitle:function(e,t){let n=e.length*t.length,a=e[0].length+1,l=[];if(0==e.length&&t.length>0){for(let e=0;e<t.length;e++)l.push(t[e].fullname);return l}if(0==t.length&&e.length>0)return e;for(let r=0;r<n;r++){l[r]=new Array(a);for(let n=0;n<a-1;n++)l[r][n]=e[Math.floor(r/t.length)][n];l[r][a-1]=t[r%t.length].fullname}return l},initialPivotManage:function(e){let n=this,a=X(),l=a.pivotTable,r=a.button,o=a.filter;if(n.initial){n.initial=!1,$(\"body\").append(xt()),$(\"#luckysheet-modal-dialog-slider-close\").click((function(){$(\"#luckysheet-modal-dialog-slider-pivot\").hide(),Dl()})),$(\"body\").append(nd(kt,{id:\"luckysheet-data-pivotTable-selection\",addclass:\"luckysheet-data-pivotTable-selection\",title:l.titleSelectionDataRange,content:'<input id=\"luckysheet-pivotTable-range-selection-input\" class=\"luckysheet-datavisual-range-container\" style=\"font-size: 14px;padding:5px;max-width:none;\" spellcheck=\"false\" aria-label=\"'+l.titleDataRange+'\" placeholder=\"'+l.titleDataRange+'\">',botton:'<button id=\"luckysheet-pivotTable-selection-confirm\" class=\"btn btn-primary\">'+r.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+r.cancel+\"</button>\"})),$(\"body\").append(nd(ot(),{menuid:\"pivotTableFilter\"})),$(\"body\").append(nd(it(),{menuid:\"pivotTableFilter\"})),$(\"body\").append(ft()),$(\"body\").append(mt()),$(\"#luckysheet-pivotTableFilter-orderby-asc\").remove(),$(\"#luckysheet-pivotTableFilter-orderby-desc\").next().remove(),$(\"#luckysheet-pivotTableFilter-orderby-desc\").remove(),$(\"#luckysheet-pivotTableFilter-orderby-color\").next().remove(),$(\"#luckysheet-pivotTableFilter-orderby-color\").remove(),$(\"#luckysheetpivottablevaluecolrow, #luckysheetpivottablevaluecolrow1\").checkboxradio({icon:!1}).change((function(){n.refreshPivotTable()}));let e=null;$(\"#luckysheet-pivotTableFilter-menu\").mouseover((function(){clearTimeout(e),e=setTimeout((function(){$(\"#luckysheet-pivotTableFilter-submenu\").hide()}),500)})),$(document).off(\"click.ptFilterCheckbox1\").on(\"click.ptFilterCheckbox1\",\"#luckysheet-pivotTableFilter-byvalue-select .textBox\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).find(\"input[type='checkbox']\").prop(\"checked\",!0))})),$(document).off(\"click.ptFilterCheckbox2\").on(\"click.ptFilterCheckbox2\",\"#luckysheet-pivotTableFilter-byvalue-select .year\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".month\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".day\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".month\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".day\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\"input[type='checkbox']\").prop(\"checked\",!0))})),$(document).off(\"click.ptFilterCheckbox3\").on(\"click.ptFilterCheckbox3\",\"#luckysheet-pivotTableFilter-byvalue-select .month\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).parents(\".monthBox\").find(\".day\").attr(\"data-check\",\"false\"),$(this).parents(\".monthBox\").find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).parents(\".monthBox\").find(\".day\").attr(\"data-check\",\"true\"),$(this).parents(\".monthBox\").find(\"input[type='checkbox']\").prop(\"checked\",!0));let e=!0;$(this).parents(\".yearBox\").find(\".day\").each((function(t,n){\"true\"==$(n).attr(\"data-check\")||(e=!1)})),e?($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").prop(\"checked\",!0)):($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").removeAttr(\"checked\"))})),$(document).off(\"click.ptFilterCheckbox4\").on(\"click.ptFilterCheckbox4\",\"#luckysheet-pivotTableFilter-byvalue-select .day\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).find(\"input[type='checkbox']\").prop(\"checked\",!0));let e=!0;$(this).parents(\".monthBox\").find(\".day\").each((function(t,n){\"true\"==$(n).attr(\"data-check\")||(e=!1)})),e?($(this).parents(\".monthBox\").find(\".month\").attr(\"data-check\",\"true\"),$(this).parents(\".monthBox\").find(\".month input[type='checkbox']\").prop(\"checked\",!0)):($(this).parents(\".monthBox\").find(\".month\").attr(\"data-check\",\"false\"),$(this).parents(\".monthBox\").find(\".month input[type='checkbox']\").removeAttr(\"checked\"));let t=!0;$(this).parents(\".yearBox\").find(\".day\").each((function(e,n){\"true\"==$(n).attr(\"data-check\")||(t=!1)})),t?($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").prop(\"checked\",!0)):($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").removeAttr(\"checked\"))})),$(document).off(\"click.ptFilterYearDropdown\").on(\"click.ptFilterYearDropdown\",\"#luckysheet-pivotTableFilter-byvalue-select .yearBox .fa-caret-right\",(function(){let e=$(this).parents(\".luckysheet-mousedown-cancel\");e.hasClass(\"year\")&&$(this).parents(\".yearBox\").find(\".monthList\").slideToggle(),e.hasClass(\"month\")&&$(this).parents(\".monthBox\").find(\".dayList\").slideToggle()})),$(\"#luckysheet-pivotTableFilter-byvalue-btn-all\").click((function(){$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").prop(\"checked\",!0),$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"true\")})),$(\"#luckysheet-pivotTableFilter-byvalue-btn-contra\").click((function(){$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").each((function(e,t){$(t).is(\":checked\")?($(t).removeAttr(\"checked\"),$(t).parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"false\")):($(t).prop(\"checked\",!0),$(t).parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"true\"))})),$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox .monthBox\").each((function(e,t){let n=!0;$(t).find(\".day input[type='checkbox']\").each((function(e,t){$(t).is(\":checked\")||(n=!1)})),n?($(t).find(\".month input[type='checkbox']\").prop(\"checked\",!0),$(t).attr(\"data-check\",\"true\")):($(t).find(\".month input[type='checkbox']\").removeAttr(\"checked\"),$(t).attr(\"data-check\",\"false\"))})),$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox .yearBox\").each((function(e,t){let n=!0;$(t).find(\".day input[type='checkbox']\").each((function(e,t){$(t).is(\":checked\")||(n=!1)})),n?($(t).find(\".year input[type='checkbox']\").prop(\"checked\",!0),$(t).attr(\"data-check\",\"true\")):($(t).find(\".year input[type='checkbox']\").removeAttr(\"checked\"),$(t).attr(\"data-check\",\"false\"))}))})),$(\"#luckysheet-pivotTableFilter-byvalue-btn-clear\").click((function(){$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").removeAttr(\"checked\"),$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"false\")})),$(\"#luckysheet-pivotTableFilter-byvalue-input\").on(\"input propertychange\",(function(){let e=$(this).val().toString();$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox .luckysheet-mousedown-cancel\").show(),\"\"!=e&&$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").each((function(t,n){let a=$(n).parents(\".luckysheet-mousedown-cancel\");if(a.hasClass(\"day\")){let t=$(n).siblings(\"label\").text().toString(),a=$(n).parents(\".monthBox\").find(\".month label\").text().toString();-1==($(n).parents(\".yearBox\").find(\".year label\").text().toString()+\"-\"+a+\"-\"+t).indexOf(e)&&($(n).parents(\".day\").hide(),0==$(n).parents(\".dayList\").find(\".day:visible\").length&&$(n).parents(\".monthBox\").find(\".month\").hide(),0==$(n).parents(\".monthList\").find(\".day:visible\").length&&$(n).parents(\".yearBox\").find(\".year\").hide())}a.hasClass(\"textBox\")&&-1==$(n).siblings(\"label\").text().toString().indexOf(e)&&$(n).parents(\".textBox\").hide()}))})),$(\"#luckysheet-pivotTableFilter-bycondition, #luckysheet-pivotTableFilter-byvalue\").click((function(){let e=$(this);e.next().slideToggle(200),setTimeout((function(){\"luckysheet-pivotTableFilter-bycondition\"==e.attr(\"id\")&&$(\"#luckysheet-pivotTableFilter-bycondition\").next().is(\":visible\")&&$(\"#luckysheet-pivotTableFilter-selected span\").text()!=o.filiterInputNone&&$(\"#luckysheet-pivotTableFilter-byvalue\").next().slideUp(200),e.is($(\"#luckysheet-pivotTableFilter-bycondition\"))&&$(\"#luckysheet-pivotTableFilter-bycondition\").next().is(\":hidden\")&&$(\"#luckysheet-pivotTableFilter-byvalue\").next().is(\":hidden\")&&$(\"#luckysheet-pivotTableFilter-byvalue\").next().slideDown(200)}),300)})),$(\"#luckysheet-pivotTableFilter-cancel\").click((function(){$(\"#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu\").hide()})),$(\"#luckysheet-pivotTableFilter-selected\").click((function(){let t=$(this).offset(),n=$(\"#luckysheet-pivotTableFilter-submenu\");n.hide();let a=$(window).height(),l=$(window).width(),r=n.width(),o=(n.height(),t.top),i=t.left,s=a-t.top-20;t.left+r>l&&(i=t.left-r),t.top>a/2&&(o=a-t.top,o<0&&(o=0),s=t.top-20),n.css({top:o,left:i,height:s}).show(),clearTimeout(e)})),$(\"#luckysheet-pivotTableFilter-submenu\").mouseover((function(){clearTimeout(e)})).find(\".luckysheet-cols-menuitem\").click((function(e){$(\"#luckysheet-pivotTableFilter-selected span\").html($(this).find(\".luckysheet-cols-menuitem-content\").text()).data(\"value\",$(this).data(\"value\")),$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input\").hide(),\"2\"==$(this).data(\"type\")?($(\"#luckysheet-pivotTableFilter-selected span\").data(\"type\",\"2\"),$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input2\").show()):\"0\"==$(this).data(\"type\")?$(\"#luckysheet-pivotTableFilter-selected span\").data(\"type\",\"0\"):($(\"#luckysheet-pivotTableFilter-selected span\").data(\"type\",\"1\"),$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input\").eq(0).show(),\"dateequal\"==$(this).attr(\"data-value\")||\"datelessthan\"==$(this).attr(\"data-value\")||\"datemorethan\"==$(this).attr(\"data-value\")?$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input input\").prop(\"type\",\"date\"):$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input input\").prop(\"type\",\"text\")),$(\"#luckysheet-pivotTableFilter-byvalue\").next().slideUp(),$(\"#luckysheet-pivotTableFilter-submenu\").hide()})),$(\"#luckysheet-modal-dialog-pivotTable-list\").on(\"click\",\" .luckysheet-slider-list-item-filter\",(function(e){return n.luckysheetsliderlistitemfilter($(this)),e.stopPropagation(),!1})),$(\"#luckysheet-modal-dialog-pivotTable-list\").on(\"click\",\" .luckysheet-slider-list-item-filtered\",(function(e){return n.luckysheetsliderlistclearfilter($(this).next()),e.stopPropagation(),!1})),$(\"#luckysheet-dialog-pivotTable-range-seleted\").click((function(){$(\"#luckysheet-modal-dialog-slider-pivot\").hide(),Dl();let e=$(\"#luckysheet-data-pivotTable-selection\"),t=e.outerHeight(),a=e.outerWidth(),l=$(window).width(),r=$(window).height(),o=$(document).scrollLeft(),i=$(document).scrollTop();$(\"#luckysheet-data-pivotTable-selection\").css({left:(l+o-a)/2,top:(r+i-t)/4}).show(),n.jgridCurrentPivotInput=$(\"#luckysheet-dialog-pivotTable-range\").html(),$(\"#luckysheet-pivotTable-range-selection-input\").val(n.jgridCurrentPivotInput),n.luckysheet_pivotTable_select_state=!0})),$(\"#luckysheet-pivotTableFilter-initial\").click((function(){$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-slider-list-item-filtered\").hide(),$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").data(\"rowhidden\",\"\"),$(\"#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu\").hide(),$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input\").hide().find(\"input\").val(),$(\"#luckysheet-pivotTableFilter-selected span\").data(\"type\",\"0\").data(\"type\",null).text(o.filiterInputNone),n.setDatatojsfile(\"filterparm\",null),n.celldata=n.origindata,n.refreshPivotTable()})),$(\"#luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column\").on(\"click\",\".luckysheet-modal-dialog-slider-config-item-icon\",(function(e){let t=$(e.target).closest(\".luckysheet-modal-dialog-slider-config-item\"),n=t.data(\"index\"),a=t.offset(),l=t.data(\"order\"),r=t.data(\"orderby\"),o=t.data(\"stastic\");null==l&&(l=\"default\");let i='<option value=\"self\">'+t.find(\".luckysheet-modal-dialog-slider-config-item-txt\").data(\"name\")+\"</option>\";return $(\"#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item\").each((function(e){i+='<option value=\"'+e+'\">'+$(this).find(\".luckysheet-modal-dialog-slider-config-item-txt\").text()+\"</option>\"})),$(\"#luckysheet-pivotTable-config-option-orderby\").empty().html(i),null==r&&(r=\"self\"),null==o&&(o=\"1\"),$(\"#luckysheet-pivotTable-config-option-order\").val(l).data(\"index\",n),$(\"#luckysheet-pivotTable-config-option-orderby\").val(r).data(\"index\",n),$(\"#luckysheet-pivotTable-config-option-stastic\").val(o).data(\"index\",n),gd($(\"#luckysheet-pivotTable-config-option\"),a.left+t.outerWidth(),a.top-13,\"rightbottom\"),e.stopPropagation(),!1})),$(\"#luckysheet-pivotTable-config-option-order,#luckysheet-pivotTable-config-option-orderby,#luckysheet-pivotTable-config-option-stastic\").change((function(){let e=$(this),t=e.data(\"index\");$(\"#luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){$(this).data(\"index\")==t&&$(this).data(e.attr(\"id\").replace(\"luckysheet-pivotTable-config-option-\",\"\"),e.val())})),n.refreshPivotTable()})),$(\"#luckysheet-modal-dialog-config-value\").on(\"click\",\".luckysheet-modal-dialog-slider-config-item-icon\",(function(e){let t=$(e.target).closest(\".luckysheet-modal-dialog-slider-config-item\"),a=t.data(\"index\"),l=t.offset(),r=t.data(\"sumtype\"),o=n.pivot_data_type[a.toString()];null==r&&(r=\"num\"==o?\"SUM\":\"COUNTA\");let i=$(\"#luckysheet-pivotTable-config-option-sumtype\");return i.find(\".luckysheet-submenu-arrow\").hide(),i.find(\".luckysheet-cols-menuitem[sumtype='\"+r+\"'] .luckysheet-submenu-arrow\").css(\"display\",\"inline\"),i.data(\"item\",t),gd(i,l.left+t.outerWidth(),l.top-13,\"rightbottom\"),e.stopPropagation(),!1})),$(\"#luckysheet-pivotTable-config-option-sumtype .luckysheet-cols-menuitem\").click((function(){let e=$(\"#luckysheet-pivotTable-config-option-sumtype\").data(\"item\"),t=$(this).attr(\"sumtype\");e.data(\"sumtype\",$(this).attr(\"sumtype\"));let a=n.getSumTypeName(t)+\":\"+e.data(\"name\");e.attr(\"title\",a).find(\".luckysheet-modal-dialog-slider-config-item-txt\").html(a),$(\"#luckysheet-pivotTable-config-option-sumtype\").hide(),n.refreshPivotTable()})),$(\"#luckysheet-modal-dialog-config-filter\").on(\"click\",\".luckysheet-modal-dialog-slider-config-item-icon\",(function(e){let t=$(e.target).closest(\".luckysheet-modal-dialog-slider-config-item\").data(\"index\");return n.luckysheetsliderlistitemfilter($(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").eq(t).find(\".luckysheet-slider-list-item-filter\")),e.stopPropagation(),!1})),$(\"#luckysheet-pivotTableFilter-confirm\").click((function(){let e=$(\"#luckysheet-pivotTableFilter-menu\").data(\"index\"),t={};$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").each((function(){let n=$(this),a=n.data(\"rowhidden\");if(n.data(\"index\")!=e){if(null==a||\"\"==a)return!0;\"string\"==ad(a)&&(a=JSON.parse(a));for(let e in a)t[e]=0}}));let a=n.origindata,l={},r={},i={};if($(\"#luckysheet-pivotTableFilter-bycondition\").next().is(\":visible\")&&$(\"#luckysheet-pivotTableFilter-byvalue\").next().is(\":hidden\")&&\"null\"!=$(\"#luckysheet-pivotTableFilter-selected span\").data(\"value\")){let n=$(\"#luckysheet-pivotTableFilter-selected span\"),l=n.data(\"type\"),o=n.data(\"value\");if(i.value=o,i.text=n.text(),\"0\"==l)i.type=\"0\";else if(\"2\"==l){let e=$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input2 input\");i.type=\"2\",i.value1=e.eq(0).val(),i.value2=e.eq(1).val()}else i.type=\"1\",i.value1=$(\"#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input\").eq(0).find(\"input\").val();for(let n=1;n<a.length;n++){if(n in t||null==a[n])continue;let l=a[n][e];if(\"cellnull\"==o)null!=l&&!_(l.v)&&(r[n]=0);else if(\"cellnonull\"==o)(null==l||_(l.v))&&(r[n]=0);else if(\"textinclude\"==o){let e=i.value1;(null==l||_(l.v)||-1==l.m.indexOf(e))&&(r[n]=0)}else if(\"textnotinclude\"==o){let e=i.value1;null==l||_(l.v)||l.m.indexOf(e)>-1&&(r[n]=0)}else if(\"textstart\"==o){let e=i.value1,t=e.length;(null==l||_(l.v)||l.m.substr(0,t)!=e)&&(r[n]=0)}else if(\"textend\"==o){let e=i.value1,t=e.length;(null==l||_(l.v)||t>l.m.length||l.m.substr(l.m.length-t,t)!=e)&&(r[n]=0)}else if(\"textequal\"==o){let e=i.value1;(null==l||_(l.v)||l.m!=e)&&(r[n]=0)}else if(\"dateequal\"==o){let e=_a(i.value1)[2];null==l||_(l.v)?r[n]=0:null!=l.ct&&\"d\"==l.ct.t?parseInt(l.v)!=e&&(r[n]=0):r[n]=0}else if(\"datelessthan\"==o){let e=_a(i.value1)[2];null==l||_(l.v)?r[n]=0:null!=l.ct&&\"d\"==l.ct.t?parseInt(l.v)>=e&&(r[n]=0):r[n]=0}else if(\"datemorethan\"==o){let e=_a(i.value1)[2];null==l||_(l.v)?r[n]=0:null!=l.ct&&\"d\"==l.ct.t?parseInt(l.v)<=e&&(r[n]=0):r[n]=0}else if(\"morethan\"==o){let e=parseFloat(i.value1);null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v<=e&&(r[n]=0):r[n]=0}else if(\"moreequalthan\"==o){let e=parseFloat(i.value1);null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v<e&&(r[n]=0):r[n]=0}else if(\"lessthan\"==o){let e=parseFloat(i.value1);null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v>=e&&(r[n]=0):r[n]=0}else if(\"lessequalthan\"==o){let e=parseFloat(i.value1);null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v>e&&(r[n]=0):r[n]=0}else if(\"equal\"==o){let e=parseFloat(i.value1);null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v!=e&&(r[n]=0):r[n]=0}else if(\"noequal\"==o){let e=parseFloat(i.value1);null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v==e&&(r[n]=0):r[n]=0}else if(\"include\"==o){let e,t,a=parseFloat(i.value1),o=parseFloat(i.value2);a<o?(e=a,t=o):(t=a,e=o),null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?(l.v<e||l.v>t)&&(r[n]=0):r[n]=0}else if(\"noinclude\"==o){let e,t,a=parseFloat(i.value1),o=parseFloat(i.value2);a<o?(e=a,t=o):(t=a,e=o),null==l||_(l.v)?r[n]=0:null!=l.ct&&\"n\"==l.ct.t?l.v>=e&&l.v<=t&&(r[n]=0):r[n]=0}}}else{$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']\").each((function(e,t){if($(t).is(\":visible\")&&$(t).is(\":checked\"))return!0;if($(t).closest(\".day\").length>0){let e=$(t).siblings(\"label\").text();Number(e)<10&&(e=\"0\"+e);let n=$(t).closest(\".monthBox\").find(\".month label\").text().replace(o.filiterMonthText,\"\");Number(n)<10&&(n=\"0\"+n);let a=$(t).closest(\".yearBox\").find(\".year label\").text().replace(o.filiterYearText,\"\"),r=o.filterDateFormatTip+\"#$$$#\"+a+\"-\"+n+\"-\"+e;l[r]=\"1\"}if($(t).closest(\".textBox\").length>0){let e=$(t).closest(\".textBox\").data(\"filter\");l[e]=\"1\"}}));for(let n=1;n<a.length;n++){if(n in t||null==a[n])continue;let i,s=a[n][e];if(null==s||_(s.v))i=\"null#$$$#null\";else if(null!=s.ct&&\"d\"==s.ct.t){let e=Ca(\"YYYY-MM-DD\",s.v);i=o.filterDateFormatTip+\"#$$$#\"+e}else i=s.v+\"#$$$#\"+s.m;i in l&&(r[n]=0)}}let s=$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").eq(e);$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']:visible:checked\").length<$(\"#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']:visible\").length||$(\"#luckysheet-pivotTableFilter-byvalue-input\").val().length>0||$(\"#luckysheet-pivotTableFilter-bycondition\").next().is(\":visible\")&&$(\"#luckysheet-pivotTableFilter-byvalue\").next().is(\":hidden\")&&\"null\"!=$(\"#luckysheet-pivotTableFilter-selected span\").data(\"value\")?(s.data(\"rowhidden\",JSON.stringify(r)).find(\".luckysheet-slider-list-item-filtered\").show(),n.setDatatojsfile(\"rowhidden\",r,e),null!=i&&(s.data(\"byconditionvalue\",i.value).data(\"byconditiontype\",i.type).data(\"byconditiontext\",i.text),null!=i.value1&&s.data(\"byconditionvalue1\",i.value1),null!=i.value2&&s.data(\"byconditionvalue2\",i.value2),n.setDatatojsfile(\"caljs\",i,e))):(s.data(\"rowhidden\",\"\").find(\".luckysheet-slider-list-item-filtered\").hide(),n.setDatatojsfile(\"rowhidden\",null,e));let c=[];for(let e=0;e<a.length;e++)e in r||e in t||c.push([].concat(a[e]));n.celldata=c,n.refreshPivotTable(),$(\"#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu\").hide(),$o()})),$(\"#luckysheet-data-pivotTable-selection .luckysheet-model-close-btn, #luckysheet-data-pivotTable-selection .luckysheet-modal-dialog-title-close\").click((function(){$(\"#luckysheet-modal-dialog-slider-pivot\").show(),Dl(),$(\"#luckysheet-cell-main .luckysheet-pivotTable-selection-set div\").show(),$(\"#luckysheet-data-pivotTable-selection\").hide(),ki.changeSheetExec(n.pivotSheetIndex),n.luckysheet_pivotTable_select_state=!1,$o()})),$(\"#luckysheet-pivotTable-selection-confirm\").click((function(){let e=$(\"#luckysheet-pivotTable-range-selection-input\"),a=e.val();if(0==$.trim(a).length||$.trim(a).toUpperCase()==n.jgridCurrentPivotInput.toUpperCase())return e.val(n.jgridCurrentPivotInput),void $(\"#luckysheet-data-pivotTable-selection .luckysheet-model-close-btn\").click();{let r=a.split(\"!\"),o=\"\",i=\"\",s=-1;if(r.length>1){o=r[0],i=r[1];for(let e in t.luckysheetfile)if(o==t.luckysheetfile[e].name){s=t.luckysheetfile[e].index;break}-1==s&&(s=0)}else{let e=Mt(t.currentSheetIndex);o=t.luckysheetfile[e].name,s=t.luckysheetfile[e].index,i=r[0]}if(t.luckysheetfile[Mt(s)].isPivotTable)return I()?alert(l.errorNotAllowPivotData):vo.info(\"\",l.errorNotAllowPivotData),void e.val(n.jgridCurrentPivotInput);if(-1==i.indexOf(\":\"))return I()?alert(l.errorSelectionRange):vo.info(\"\",l.errorSelectionRange),void e.val(n.jgridCurrentPivotInput);i=i.split(\":\");let c=[],u=[];if(c[0]=parseInt(i[0].replace(/[^0-9]/g,\"\"))-1,c[1]=parseInt(i[1].replace(/[^0-9]/g,\"\"))-1,c[0]>c[1])return I()?alert(l.errorSelectionRange):vo.info(\"\",l.errorSelectionRange),void e.val(n.jgridCurrentPivotInput);if(u[0]=od(i[0].replace(/[^A-Za-z]/g,\"\")),u[1]=od(i[1].replace(/[^A-Za-z]/g,\"\")),u[0]>u[1])return I()?alert(l.errorSelectionRange):vo.info(l.errorSelectionRange),void e.val(n.jgridCurrentPivotInput);ki.changeSheetExec(n.pivotSheetIndex),n.setDatatojsfile(\"pivot_select_save\",{row:c,column:u}),n.setDatatojsfile(\"pivotDataSheetIndex\",s),n.getCellData(n.pivotSheetIndex,s,{row:c,column:u}),n.initialPivotManage(),$(\"#luckysheet-dialog-pivotTable-range\").html(a),$(\"#luckysheet-modal-dialog-slider-pivot\").show(),$(\"#luckysheet-data-pivotTable-selection\").hide(),n.luckysheet_pivotTable_select_state=!1,n.refreshPivotTable(),Dl(),$o()}})),$(\"#luckysheet-modal-dialog-slider-pivot\").on(\"mousedown\",\".luckysheet-slider-list-item-name, .luckysheet-modal-dialog-slider-config-item-txt\",(function(e){let t=$(e.target);n.movestate=!0,n.movesave.obj=t.parent(),n.movesave.name=t.data(\"name\"),n.movesave.containerid=t.parent().parent().attr(\"id\"),n.movesave.index=t.data(\"index\"),0==$(\"#luckysheet-modal-dialog-slider-pivot-move\").length&&$(\"body\").append('<div id=\"luckysheet-modal-dialog-slider-pivot-move\">'+n.movesave.name+\"</div>\"),n.movesave.width=$(\"#luckysheet-modal-dialog-slider-pivot-move\").outerWidth(),n.movesave.height=$(\"#luckysheet-modal-dialog-slider-pivot-move\").outerHeight(),$(\"#luckysheet-modal-dialog-pivotTable-list, #luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").css(\"cursor\",\"default\")})),$(\"#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").mousemove((function(e){if(n.movestate){0==n.moveitemposition.length&&(n.moveitemposition=[0],$(this).find(\".luckysheet-modal-dialog-slider-config-item\").each((function(e){let t=$(this).outerHeight();n.moveitemposition.push(n.moveitemposition[e]+t+2)})),$(this).append('<div id=\"luckysheet-modal-dialog-config-order-help\" style=\"position:absolute;height:3px;width:100%;background:#007ACC;z-index:1;pointer-events: none;user-select:none;\"></div>')),$(\"#luckysheet-modal-dialog-slider-pivot-move\").css({background:\"#FD8585\",color:\"#fff\",border:\"1px solid #FD7070\"});event.pageX;let e=event.pageY,t=$(this),a=e-t.offset().top+t.scrollTop(),l=n.moveitemposition,r=Xn(l,a);-1==r?$(\"#luckysheet-modal-dialog-config-order-help\").css({top:l[l.length-1]}):a-l[r-1]>(l[r]-l[r-1])/2?$(\"#luckysheet-modal-dialog-config-order-help\").css({top:l[r]}):$(\"#luckysheet-modal-dialog-config-order-help\").css({top:l[r-1]})}})).mouseleave((function(){n.movestate&&($(\"#luckysheet-modal-dialog-slider-pivot-move\").css({background:\"#fff\",color:\"#000\",border:\"1px dotted #000\"}),n.moveitemposition=[],$(\"#luckysheet-modal-dialog-config-order-help\").remove())})).mouseup((function(e){if(n.movestate){let t,a=$(this);if(n.movesave.containerid==a.attr(\"id\"))t=n.movesave.obj.clone();else{let e=n.movesave.name,r=\"\",o=\"\";\"luckysheet-modal-dialog-config-value\"==a.attr(\"id\")&&(\"num\"==n.pivot_data_type[n.movesave.index.toString()]?(e=l.valueStatisticsSUM+\":\"+e,r=\"data-sumtype='SUM'\",o=\"data-nameindex='0'\"):(e=l.valueStatisticsCOUNTA+\":\"+e,r=\"data-sumtype='COUNTA'\",o=\"data-nameindex='0'\"),$(\"#luckysheet-modal-dialog-config-value\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){if($(this).find(\".luckysheet-modal-dialog-slider-config-item-txt\").text()==e){let t=parseFloat($(this).data(\"nameindex\"))+1;return e+=t.toString(),$(this).data(\"nameindex\",t),!1}}))),t='<div title=\"'+e+'\" class=\"luckysheet-modal-dialog-slider-config-item\" '+o+\" \"+r+' data-index=\"'+n.movesave.index+'\" data-name=\"'+n.movesave.name+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" '+o+\" \"+r+' data-index=\"'+n.movesave.index+'\" data-name=\"'+n.movesave.name+'\">'+e+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>'}event.pageX;let r=event.pageY,o=$(this),i=r-o.offset().top+o.scrollTop(),s=n.moveitemposition,c=Xn(s,i);(\"luckysheet-modal-dialog-pivotTable-list\"==n.movesave.containerid||\"luckysheet-modal-dialog-config-value\"==n.movesave.containerid&&n.movesave.containerid!=a.attr(\"id\"))&&$(\"#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){$(this).data(\"index\")==n.movesave.index&&$(this).remove()})),-1==c?0==a.find(\".luckysheet-modal-dialog-slider-config-item\").length?a.append(t):a.find(\".luckysheet-modal-dialog-slider-config-item\").last().after(t):i-s[c-1]>(s[c]-s[c-1])/2?a.find(\".luckysheet-modal-dialog-slider-config-item\").eq(c-1).after(t):a.find(\".luckysheet-modal-dialog-slider-config-item\").eq(c-1).before(t),\"luckysheet-modal-dialog-pivotTable-list\"==n.movesave.containerid||\"luckysheet-modal-dialog-config-value\"==n.movesave.containerid&&n.movesave.containerid!=a.attr(\"id\")||n.movesave.obj.remove(),$(\"#luckysheet-modal-dialog-pivotTable-list\").find(\".luckysheet-modal-dialog-slider-list-item\").each((function(){let e=$(this).find(\".luckysheet-slider-list-item-selected\");$(this).data(\"index\")==n.movesave.index&&0==e.find(\"i\").length&&e.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')})),n.refreshPivotTable(),$(\"#luckysheet-modal-dialog-slider-pivot-move\").remove(),n.movestate=!1,$(\"#luckysheet-modal-dialog-pivotTable-list, #luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").css(\"cursor\",\"default\"),n.moveitemposition=[],$(\"#luckysheet-modal-dialog-config-order-help\").remove(),n.showvaluecolrow(),e.stopPropagation()}})),$(\"#luckysheet-modal-dialog-pivotTable-list\").on(\"click\",\".luckysheet-slider-list-item-selected\",(function(){let e=$(this),t=e.parent(),a=t.data(\"index\"),l=t.data(\"name\");if(0==e.find(\"i\").length){let t;if(e.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>'),\"num\"==n.pivot_data_type[a.toString()])t='<div title=\"'+l+'\" class=\"luckysheet-modal-dialog-slider-config-item\" data-nameindex=\"0\" data-sumtype=\"SUM\" data-index=\"'+a+'\" data-name=\"'+l+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" data-nameindex=\"0\" data-sumtype=\"SUM\" data-index=\"'+a+'\" data-name=\"'+l+'\">求和:'+l+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>',$(\"#luckysheet-modal-dialog-config-value\").append(t);else{t='<div title=\"'+l+'\" class=\"luckysheet-modal-dialog-slider-config-item\" data-index=\"'+a+'\" data-name=\"'+l+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" data-index=\"'+a+'\" data-name=\"'+l+'\">'+l+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>';let e=$(\"#luckysheet-modal-dialog-config-column\"),n=$(\"#luckysheet-modal-dialog-config-row\"),r=e.find(\".luckysheet-modal-dialog-slider-config-item\"),o=n.find(\".luckysheet-modal-dialog-slider-config-item\");r.length<2?e.append(t):o.length<2?n.append(t):e.append(t)}}else e.find(\"i\").remove(),$(\"#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){$(this).data(\"index\")==a&&(\"luckysheet-modal-dialog-config-value\"==$(this).parent().attr(\"id\")&&n.resetOrderby($(this)),$(this).remove())}));n.refreshPivotTable(),n.showvaluecolrow()})),$(\"#luckysheet-dialog-pivotTable-clearitem\").click((function(){$(\"#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){$(this).remove()})),$(\"#luckysheet-modal-dialog-pivotTable-list\").find(\".luckysheet-modal-dialog-slider-list-item\").each((function(){$(this).find(\".luckysheet-slider-list-item-selected\").find(\"i\").remove()})),n.refreshPivotTable(),n.showvaluecolrow()}))}null==e&&(e=!1),n.celldata.length<=1&&n.celldata[0].length<=1&&(I()?alert(l.errorIncreaseRange):vo.info(\"\",l.errorIncreaseRange));let i=\"\",s=1,c={},u=1;for(let t=0;t<n.celldata[0].length;t++){let a;a=n.celldata[0][t]&&n.celldata[0][t].m?n.celldata[0][t].m:Vn(0,t,n.celldata),null!=a&&(a=a.toString()),(null==a||0==$.trim(a.toString()).length)&&(a=l.titleColumn+\" \"+u),u++,a in c&&(a+=s++,a in c&&(a+=s++,a in c&&(a+=s++))),c[a]=1;let r=\"\",o=\"\";if(e&&null!=n.filterparm&&null!=n.filterparm[t.toString()]){let e=n.filterparm[t.toString()];if(null!=e.rowhidden&&(r+=\"data-rowhidden='\"+JSON.stringify(e.rowhidden)+\"'\"),null!=e.selected&&(r+=\"data-selected='\"+JSON.stringify(e.selected)+\"'\"),null!=e.caljs){let t=e.caljs;null!=t.value&&(r+=\"data-byconditionvalue='\"+t.value+\"'\"),null!=t.type&&(r+=\"data-byconditiontype='\"+t.type+\"'\"),null!=t.text&&(r+=\"data-byconditiontext='\"+t.text+\"'\"),null!=t.value1&&(r+=\"data-byconditionvalue1='\"+t.value1+\"'\"),null!=t.value2&&(r+=\"data-byconditionvalue2='\"+t.value2+\"'\")}}r.length>0&&(o=\"display:block;\"),i+='<div class=\"luckysheet-modal-dialog-slider-list-item\" '+r+' data-index=\"'+t+'\" data-name=\"'+a+'\"><div title=\"'+l.titleAddColumn+'\" class=\"luckysheet-slider-list-item-selected\"><div></div></div><div title=\"'+l.titleMoveColumn+'\" class=\"luckysheet-slider-list-item-name\" '+r+' data-index=\"'+t+'\" data-name=\"'+a+'\">'+a+'</div><div title=\"'+l.titleClearColumnFilter+'\" class=\"luckysheet-slider-list-item-filtered\" style=\"'+o+'\"><i class=\"fa fa-filter luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div><div title=\"'+l.titleFilterColumn+'\" class=\"luckysheet-slider-list-item-filter\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>'}if($(\"#luckysheet-modal-dialog-pivotTable-list\").html(i),$(\"#luckysheetpivottablevaluecolrowshow\").hide(),$(\"#luckysheetpivottablevaluecolrow\").prop(\"checked\",!0),$(\"#luckysheetpivottablevaluecolrow1\").prop(\"checked\",!1),$(\"#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").empty(),e){if(null!=n.filter&&n.filter.length>0)for(let e=0;e<n.filter.length;e++){let t=n.filter[e],a='<div title=\"'+name+'\" class=\"luckysheet-modal-dialog-slider-config-item\" data-index=\"'+t.index+'\" data-name=\"'+t.name+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" data-index=\"'+t.index+'\" data-name=\"'+t.name+'\">'+t.name+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>';$(\"#luckysheet-modal-dialog-config-filter\").append(a);let l=$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").eq(t.index).find(\".luckysheet-slider-list-item-selected\");0==l.find(\"i\").length&&l.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')}if(null!=n.row&&n.row.length>0)for(let e=0;e<n.row.length;e++){let t=n.row[e],a=\"\";null!=t.order&&(a+=\"data-order = '\"+t.order+\"'\"),null!=t.orderby&&(a+=\"data-orderby = '\"+t.orderby+\"'\"),null!=t.order&&(a+=\"data-stastic = '\"+t.stastic+\"'\");let l='<div title=\"'+name+'\" class=\"luckysheet-modal-dialog-slider-config-item\" '+a+' data-index=\"'+t.index+'\" data-name=\"'+t.name+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" '+a+' data-index=\"'+t.index+'\" data-name=\"'+t.name+'\">'+t.name+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>';$(\"#luckysheet-modal-dialog-config-row\").append(l);let r=$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").eq(t.index).find(\".luckysheet-slider-list-item-selected\");0==r.find(\"i\").length&&r.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')}if(null!=n.column&&n.column.length>0)for(let e=0;e<n.column.length;e++){let t=n.column[e],a=\"\";null!=t.order&&(a+=\"data-order = '\"+t.order+\"'\"),null!=t.orderby&&(a+=\"data-orderby = '\"+t.orderby+\"'\"),null!=t.order&&(a+=\"data-stastic = '\"+t.stastic+\"'\");let l='<div title=\"'+name+'\" class=\"luckysheet-modal-dialog-slider-config-item\" '+a+' data-index=\"'+t.index+'\" data-name=\"'+t.name+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" '+a+' data-index=\"'+t.index+'\" data-name=\"'+t.name+'\">'+t.name+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>';$(\"#luckysheet-modal-dialog-config-column\").append(l);let r=$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").eq(t.index).find(\".luckysheet-slider-list-item-selected\");0==r.find(\"i\").length&&r.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')}if(null!=n.values&&n.values.length>0){for(let e=0;e<n.values.length;e++){let t=n.values[e],a=\"\";null!=t.sumtype&&(a+=\"data-sumtype = '\"+t.sumtype+\"'\"),null!=t.nameindex&&(a+=\"data-nameindex = '\"+t.nameindex+\"'\");let l='<div title=\"'+name+'\" class=\"luckysheet-modal-dialog-slider-config-item\" '+a+' data-index=\"'+t.index+'\" data-name=\"'+t.name+'\"><div class=\"luckysheet-modal-dialog-slider-config-item-txt\" '+a+' data-index=\"'+t.index+'\" data-name=\"'+t.name+'\">'+n.getSumTypeName(t.sumtype)+\":\"+t.name+'</div><div class=\"luckysheet-modal-dialog-slider-config-item-icon\"><i class=\"fa fa-sort-desc\" aria-hidden=\"true\"></i></div></div>';$(\"#luckysheet-modal-dialog-config-value\").append(l);let r=$(\"#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item\").eq(t.index).find(\".luckysheet-slider-list-item-selected\");0==r.find(\"i\").length&&r.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')}n.values.length>=2&&($(\"#luckysheetpivottablevaluecolrowshow\").show(),\"column\"==n.showType?($(\"#luckysheetpivottablevaluecolrow\").prop(\"checked\",!0),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']\").addClass(\"ui-state-active\"),$(\"#luckysheetpivottablevaluecolrow1\").prop(\"checked\",!1),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']\").removeClass(\"ui-state-active\")):($(\"#luckysheetpivottablevaluecolrow1\").prop(\"checked\",!0),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']\").addClass(\"ui-state-active\"),$(\"#luckysheetpivottablevaluecolrow\").prop(\"checked\",!1),$(\"#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']\").removeClass(\"ui-state-active\")))}}$(\"#luckysheet-dialog-pivotTable-range\").html(Nt(n.pivotDataSheetIndex,n.pivot_select_save)),$(\"#luckysheet-modal-dialog-slider-pivot\").show(),Dl(!1)},getComposeArray:function(e){if(0==e.length)return[];let t=[];for(let n=0;n<e.length;n++){let a=\"\";for(let t=0;t<=n;t++)e[t]&&e[t].m?a+=e[t].m:a+=Vn(t,null,e);t.push(a)}return t},getnameArray:function(e,t){if(0==e.length)return[];if(0==t.length)return[];let n=[];for(let a=0;a<t.length;a++){let l;l=e[t[a].index]&&e[t[a].index].m?e[t[a].index].m:Vn(t[a].index,null,e),n.push(l)}return n},getTitleFromGroup:function(e,t,n){let a=this.orderbygroup(e,t,n);return this.generategrouparraymain(a,t)},orderbygroup:function(e,t,n){let a=this,l=[];if(0==e.length)return[];l=e;let r=null,o=l.length,i=l.length,s=0;for(;0!=o;)if(r=l[s++],o--,null!=r.children&&r.children.length>0){r.children=a.orderbygroupchildren(r.children,t[r.index].orderby,t[r.index].order,n);for(let e=0;e<r.children.length;e++)l.push(r.children[e]),o++}return e.splice(0,i)},orderbygroupchildren:function(e,t,n,a){if(0==e.length)return[];let l=!1;(null==n||\"asc\"==n)&&(l=!0);let r=X().filter;return l?e.sort((function(e,n){let l=null,o=null;if(\"self\"==t||null==t){if(l=null==e.name?r.valueBlank:e.name.toString(),o=null==n.name?r.valueBlank:n.name.toString(),pa(l)&&pa(o))return ga(l,o)}else l=parseFloat(a[e.orderby].result),o=parseFloat(a[n.orderby].result);return isNaN(l)||isNaN(o)?isNaN(l)&&isNaN(o)?l.localeCompare(o):isNaN(l)?1:isNaN(o)?-1:void 0:(0,br.default)(l).value()-(0,br.default)(o).value()})):e.sort((function(e,n){let l=null,o=null;if(\"self\"==t||null==t){if(l=null==e.name?r.valueBlank:e.name.toString(),o=null==n.name?r.valueBlank:n.name.toString(),pa(l)&&pa(o))return ga(l,o)}else l=parseFloat(a[e.orderby].result),o=parseFloat(a[n.orderby].result);return isNaN(l)||isNaN(o)?isNaN(l)&&isNaN(o)?o.localeCompare(l):isNaN(l)?-1:isNaN(o)?1:void 0:(0,br.default)(o).value()-(0,br.default)(l).value()}))},generategroupaddstatic:function(e,t){let n=[],a=X().pivotTable;for(let l=0;l<e[0].length;l++)0==l?t==a.valueSum?n.push(t):n.push({name:t,issum:!0}):n.push(\"\");return n},generategrouparraymain:function(e,t){let n=this,a=[];for(let l=0;l<e.length;l++){let r=e[l].name,o=n.generategrouparray(e[l].children,t,1);(\"1\"==t[0].stastic||null==t[0].stastic)&&o.push(n.generategroupaddstatic(o,r)),a=a.concat(o)}return a},generategrouparray:function(e,t,n){let a=this,l=[];for(let r=0;r<e.length;r++){let o,i=e[r].name;if(0==e[r].children||0==e[r].children.length)o=[i],l.push(o);else{o=a.generategrouparray(e[r].children,t,n+1);for(let e=0;e<o.length;e++)o[e].unshift(i);(\"1\"==t[n].stastic||null==t[n].stastic)&&o.push(a.generategroupaddstatic(o,i)),l=l.concat(o)}}return l},addStatisticsData:function(e,t,n,a){if(null==e[n]&&(e[n]={data:[],count:0,max:-1/0,min:1/0,counta:0,countunique:0,countuniquedata:{},sum:0,digitaldata:[],sumtype:t.sumtype,index:t.index,name:t.fullname,acc:0}),!0===ya(a).num){let t=md(a,6);e[n].digitaldata.push(t),e[n].count+=1,e[n].sum+=t,t>e[n].max&&(e[n].max=t),t<e[n].min&&(e[n].min=t);let l=pd(t);l>e[n].acc&&(e[n].acc=l)}\"\"!=a&&(e[n].data.push(a),e[n].counta+=1,a in e[n].countuniquedata||(e[n].countuniquedata[a]=1,e[n].countunique+=1))},dataHandler:function(e,t,n,a,l){let r=this,o=X(),i=o.filter,s=o.pivotTable;if(null==a&&(a=\"column\"),0==e.length&&0==t.length&&0==n.length||0==l.length)return r.pivotDatas=[],[];let c={},u=l,d=[],h=[],f={},m=[],p=[],g={};for(let l=1;l<u.length;l++){let o=u[l],d=[],m=[],y=[],v=[];m=r.getnameArray(o,t),v=r.getnameArray(o,e),d=r.getComposeArray(m),y=r.getComposeArray(v),d.length>0&&d.unshift(s.valueSum),y.length>0&&y.unshift(s.valueSum);let b=f,k=h;for(let e=0;e<d.length;e++){let l=d[e],r=0==e?s.valueSum:m[e-1];if(null!=b[e.toString()]&&null!=b[e.toString()][l])k=k[b[e.toString()][l]].children;else{let o=0==e?\"self\":\"self\"==t[e-1].orderby||null==t[e-1].orderby?l:\"column\"==a?l+n[parseInt(t[e-1].orderby)].fullname:l+s.valueSum;null==r&&(r=i.valueBlank),k.push({name:r,fullname:l,index:e,orderby:o,children:[]}),null==b[e.toString()]&&(b[e.toString()]={}),null==b[e.toString()][l]&&(b[e.toString()][l]=k.length-1),k=k[k.length-1].children}}let w=g,x=p;for(let t=0;t<y.length;t++){let l=y[t],r=0==t?s.valueSum:v[t-1];if(null!=w[t.toString()]&&null!=w[t.toString()][l])x=x[w[t.toString()][l]].children;else{let o=0==t?\"self\":\"self\"==e[t-1].orderby||null==e[t-1].orderby?l:\"column\"==a?s.valueSum+l:n[parseInt(e[t-1].orderby)].fullname+l;null==r&&(r=i.valueBlank),x.push({name:r,fullname:l,index:t,orderby:o,children:[]}),null==w[t.toString()]&&(w[t.toString()]={}),null==w[t.toString()][l]&&(w[t.toString()][l]=x.length-1),x=x[x.length-1].children}}for(let e=0;e<n.length;e++){let t=Vn(n[e].index,null,o),l=[].concat(y),i=[].concat(d);\"column\"==a?l.length>0?(l.push(\"\"),l=l.join(n[e].fullname+\"|||\").split(\"|||\").slice(0,l.length-1)):l.push(n[e].fullname):i.length>0?(i.push(\"\"),i=i.join(n[e].fullname+\"|||\").split(\"|||\").slice(0,i.length-1)):i.push(n[e].fullname),0==l.length&&l.push(\"\"),0==i.length&&i.push(\"\");for(let a=0;a<i.length;a++)for(let o=0;o<l.length;o++){let s=i[a]+l[o];r.addStatisticsData(c,n[e],s,t)}}}for(let e in c){let t=c[e];if(\"SUM\"==t.sumtype)t.result=t.sum;else if(\"COUNT\"==t.sumtype)t.result=t.count;else if(\"COUNTA\"==t.sumtype)t.result=t.counta;else if(\"COUNTUNIQUE\"==t.sumtype)t.result=t.countunique;else if(\"AVERAGE\"==t.sumtype)t.result=md(t.sum/t.count);else if(\"MAX\"==t.sumtype)t.result=t.max;else if(\"MIN\"==t.sumtype)t.result=t.min;else if(\"MEDIAN\"==t.sumtype){let e=t.digitaldata.sort((function(e,t){return e-t})),n=e.length,a=parseInt(n/2);t.result=n%2==0?(e[a-1]+e[a])/2:e[a]}else if(\"PRODUCT\"==t.sumtype)t.result=new Function(\"return \"+t.digitaldata.join(\"*\"))();else if(\"STDEV\"==t.sumtype){let e=t.sum/t.count;t.result=vr.STDEV(e,t.digitaldata)}else if(\"STDEVP\"==t.sumtype){let e=t.sum/t.count;t.result=vr.STDEVP(e,t.digitaldata)}else if(\"let\"==t.sumtype){let e=t.sum/t.count;t.result=vr.let(e,t.digitaldata)}else if(\"VARP\"==t.sumtype){let e=t.sum/t.count;t.result=vr.VARP(e,t.digitaldata)}let n=pd(t.result);n>t.acc&&(t.acc=n),t.result=md(t.result,t.acc)}if(d=r.getTitleFromGroup(h,t,c),m=r.getTitleFromGroup(p,e,c),\"column\"==a)if(m.length>0&&m[0].length>0)m=r.addValuesToTitle(m,n);else for(let e=0;e<n.length;e++)m.push([n[e].fullname]);else if(d.length>0&&d[0].length>0)d=r.addValuesToTitle(d,n);else for(let e=0;e<n.length;e++)d.push([n[e].fullname]);let y=m;m=yr.transpose(m,!1);let v=0==n.length?0:1,b=(0==m.length?v:m.length)+(0==d.length?v:d.length),k=(0==m.length?v:m[0].length)+(0==d.length?v:d[0].length),w=m.length,x=0==d.length?0:d[0].length,_=[];for(let e=0;e<b;e++){_[e]=new Array(k);for(let t=0;t<k;t++){let n=d[e-w];if(e<w&&t<x)_[e][t]=\"\";else if(e<w&&t>=x)null!=m[e]?\"object\"==ad(m[e][t-x])?_[e][t]=m[e][t-x].name+s.valueSum:_[e][t]=m[e][t-x]:_[e][t]=\"\";else if(e>=w&&t<x)null!=n?\"object\"==ad(n[t])?_[e][t]=n[t].name+s.valueSum:_[e][t]=n[t]:_[e][t]=\"\";else{let a=\"\";if(null!=n)if(n instanceof Array&&1!=n.length)for(let e=0;e<n.length;e++)\"object\"==ad(n[e])?a+=n[e].name:a+=n[e];else a=n instanceof Array?n[0]:n;let l=\"\",r=y[t-x];if(null!=r)if(r instanceof Array&&1!=r.length)for(let e=0;e<r.length;e++)\"object\"==ad(r[e])?l+=r[e].name:l+=r[e];else l=r instanceof Array?r[0]:r;let o=a;\"\"!=a&&\"\"!=l?o=a+l:\"\"==a&&(o=l),_[e][t]=null==c[o]?\"\":c[o].result}}}if(1==n.length&&e.length>0&&t.length>0)_[0][0]=n[0].fullname,_.splice(e.length,1);else if(1==n.length&&e.length>0){let t=_.splice(e.length,1),n=[];for(let e=0;e<_.length;e++){let a=[];e==_.length-1?a.push(t[0][0]):a.push(\"\");for(let t=0;t<_[e].length-1;t++)a.push(_[e][t]);n.push(a)}_=n}return r.pivotDatas=_,_},drillDown:function(e,n){if(!Ql(t.currentSheetIndex,\"usePivotTablereports\"))return;let a=this,l=(a.pivotDatas[e][n],$.extend(!0,[],ki.nulldata)),r=X(),o=r.filter,i=r.pivotTable,s=1;for(let e=0;e<a.celldata[0].length;e++){let t;t=a.celldata[0][e]&&a.celldata[0][e].m?a.celldata[0][e].m:Vn(0,e,a.celldata),null!=t&&(t=t.toString()),(null==t||0==$.trim(t.toString()).length)&&(t=i.titleColumn+\" \"+s),s++,l[0][e]=t}let c={};if(null!=a.row&&a.row.length>0)for(let t=0;t<a.row.length;t++)c[a.row[t].index]=a.pivotDatas[e][t];if(null!=a.column&&a.column.length>0)for(let e=0;e<a.column.length;e++)c[a.column[e].index]=a.pivotDatas[e][n];let u=[];for(let e=1;e<a.celldata.length;e++){let t=!0;for(let n in c){let l;if(l=a.celldata[e][n]&&a.celldata[e][n].m?a.celldata[e][n].m:Vn(e,n,a.celldata),l=null!=l?l.toString():o.valueBlank,l!=c[n]){t=!1;break}}t&&u.push(e)}for(let e=0;e<u.length;e++)for(let t=0;t<a.celldata[0].length;t++){let n;n=a.celldata[u[e]][t]&&a.celldata[u[e]][t].m?a.celldata[u[e]][t].m:Vn(u[e],t,a.celldata),n=null!=n?n.toString():\"\",l[e+1][t]=n}t.luckysheet_select_save=[{row:[0,u.length],column:[0,a.celldata[0].length-1]}],t.clearjfundo=!1,ao(l,t.luckysheet_select_save),Pu(),t.clearjfundo=!0}}})),qr=y((()=>{x(),_r=(xr=function(){let e,t;return e=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(e.prototype=$.extend(new arguments[0],arguments[arguments.length-1]),e._super=arguments[0].prototype):e.prototype=arguments[arguments.length-1],arguments.length>2&&(t=Array.prototype.slice.call(arguments,1,-1),t.unshift(e.prototype),$.extend.apply($,t))):e.prototype=arguments[0],e.prototype.cls=e,e})({fre:/\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,precre:/(\\w+)\\.(\\d+)/,init:function(e,t){this.format=e,this.fclass=t},render:function(e,t,n){let a,l,r,o,i,s=this,c=e;return this.format.replace(this.fre,(function(){let e;return l=arguments[1],r=arguments[3],a=s.precre.exec(l),a?(i=a[2],l=a[1]):i=!1,o=c[l],void 0===o?\"\":r&&t&&t[r]?(e=t[r],e.get?t[r].get(o)||o:t[r][o]||o):(Ar(o)&&(o=n.get(\"numberFormatter\")?n.get(\"numberFormatter\")(o):Dr(o,i,n.get(\"numberDigitGroupCount\"),n.get(\"numberDigitGroupSep\"),n.get(\"numberDecimalMark\"))),o)}))}}),$.spformat=function(e,t){return new _r(e,t)},Cr=function(e,t,n){return e<t?t:e>n?n:e},Tr=function(e,t){let n;return 2===t?(n=Math.floor(e.length/2),e.length%2?e[n]:(e[n-1]+e[n])/2):e.length%2?(n=(e.length*t+t)/4,n%1?(e[Math.floor(n)]+e[Math.floor(n)-1])/2:e[n-1]):(n=(e.length*t+2)/4,n%1?(e[Math.floor(n)]+e[Math.floor(n)-1])/2:e[n-1])},Sr=function(e){let t;switch(e){case\"undefined\":e=void 0;break;case\"null\":e=null;break;case\"true\":e=!0;break;case\"false\":e=!1;break;default:t=parseFloat(e),e==t&&(e=t)}return e},$r=function(e){let t,n=[];for(t=e.length;t--;)n[t]=Sr(e[t]);return n},Ir=function(e,t,n){let a;for(a=t.length;a--;)if((!n||null!==t[a])&&t[a]!==e)return!1;return!0},Rr=function(e,t){let n,a,l=[];for(n=0,a=e.length;n<a;n++)e[n]!==t&&l.push(e[n]);return l},Ar=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},Dr=function(e,t,n,a,l){let r,o;for(e=(!1===t?parseFloat(e).toString():e.toFixed(t)).split(\"\"),r=(r=$.inArray(\".\",e))<0?e.length:r,r<e.length&&(e[r]=l),o=r-n;o>0;o-=n)e.splice(o,0,a);return e.join(\"\")},Fr=xr({init:function(e){let t,n,a=[];for(t in e)e.hasOwnProperty(t)&&\"string\"==typeof t&&t.indexOf(\":\")>-1&&(n=t.split(\":\"),n[0]=0===n[0].length?-1/0:parseFloat(n[0]),n[1]=0===n[1].length?1/0:parseFloat(n[1]),n[2]=e[t],a.push(n));this.map=e,this.rangelist=a||!1},get:function(e){let t,n,a,l=this.rangelist;if(void 0!==(a=this.map[e]))return a;if(l)for(t=l.length;t--;)if(n=l[t],n[0]<=e&&n[1]>=e)return n[2]}}),$.range_map=function(e){return new Fr(e)},Er={defaultOption:{common:{type:\"line\",lineColor:\"#2ec7c9\",fillColor:\"#CCF3F4\",defaultPixelsPerValue:3,width:\"auto\",height:\"auto\",composite:!1,tagValuesAttribute:\"values\",tagOptionsPrefix:\"spark\",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:\"\",tooltipSuffix:\"\",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:\",\",numberDecimalMark:\".\",disableTooltips:!0,disableInteraction:!0,offsetX:0,offsetY:0},line:{spotColor:0,highlightSpotColor:\"#5f5\",highlightLineColor:\"#f22\",spotRadius:1.5,minSpotColor:0,maxSpotColor:0,lineWidth:1,normalRangeMin:void 0,normalRangeMax:void 0,normalRangeColor:\"#ccc\",drawNormalOnTop:!0,chartRangeMin:void 0,chartRangeMax:void 0,chartRangeMinX:void 0,chartRangeMaxX:void 0},bar:{barColor:\"#fc5c5c\",negBarColor:\"#97b552\",stackedBarColor:[\"#2ec7c9\",\"#fc5c5c\",\"#5ab1ef\",\"#ffb980\",\"#d87a80\",\"#8d98b3\",\"#e5cf0d\",\"#97b552\",\"#95706d\",\"#dc69aa\",\"#07a2a4\",\"#9a7fd1\",\"#588dd5\",\"#f5994e\",\"#c05050\",\"#59678c\",\"#c9ab00\",\"#7eb00a\",\"#6f5553\",\"#c14089\"],zeroColor:void 0,nullColor:void 0,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:void 0,chartRangeMin:void 0,chartRangeClip:!1,colorMap:void 0},column:{barColor:\"#fc5c5c\",negBarColor:\"#97b552\",stackedBarColor:[\"#2ec7c9\",\"#fc5c5c\",\"#5ab1ef\",\"#ffb980\",\"#d87a80\",\"#8d98b3\",\"#e5cf0d\",\"#97b552\",\"#95706d\",\"#dc69aa\",\"#07a2a4\",\"#9a7fd1\",\"#588dd5\",\"#f5994e\",\"#c05050\",\"#59678c\",\"#c9ab00\",\"#7eb00a\",\"#6f5553\",\"#c14089\"],zeroColor:void 0,nullColor:void 0,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:void 0,chartRangeMin:void 0,chartRangeClip:!1,colorMap:void 0},tristate:{barWidth:4,barSpacing:1,posBarColor:\"#fc5c5c\",negBarColor:\"#97b552\",zeroBarColor:\"#999\",colorMap:{}},discrete:{lineHeight:\"auto\",thresholdColor:\"#fc5c5c\",thresholdValue:0,chartRangeMax:void 0,chartRangeMin:void 0,chartRangeClip:!1},bullet:{targetColor:\"#f33\",targetWidth:3,performanceColor:\"#33f\",rangeColors:[\"#d3dafe\",\"#a8b6ff\",\"#7f94ff\",\"#6D87FF\",\"#5876FF\",\"#4465FF\",\"#2F54FF\",\"#1A43FF\",\"#0532FF\"],base:void 0},pie:{offset:0,sliceColors:[\"#2ec7c9\",\"#fc5c5c\",\"#5ab1ef\",\"#ffb980\",\"#d87a80\",\"#8d98b3\",\"#e5cf0d\",\"#97b552\",\"#95706d\",\"#dc69aa\",\"#07a2a4\",\"#9a7fd1\",\"#588dd5\",\"#f5994e\",\"#c05050\",\"#59678c\",\"#c9ab00\",\"#7eb00a\",\"#6f5553\",\"#c14089\"],borderWidth:0,borderColor:\"#000\"},box:{raw:!1,boxLineColor:\"#000\",boxFillColor:\"#cdf\",whiskerColor:\"#000\",outlierLineColor:\"#5E5E5E\",outlierFillColor:\"#fff\",medianColor:\"#f00\",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:void 0,targetColor:\"#4a2\",chartRangeMax:void 0,chartRangeMin:void 0}},line:{type:\"line\",init:function(e,t,n,a,l){this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null},getRegion:function(e,t,n){let a,l=this.regionMap;for(a=l.length;a--;)if(null!==l[a]&&t>=l[a][0]&&t<=l[a][1])return l[a][2]},getCurrentRegionFields:function(){let e=this.currentRegion;return{isNull:null===this.yvalues[e],x:this.xvalues[e],y:this.yvalues[e],color:this.options.get(\"lineColor\"),fillColor:this.options.get(\"fillColor\"),offset:e}},renderHighlight:function(){let e,t,n=this.currentRegion,a=this.target,l=this.vertices[n],r=this.options,o=r.get(\"spotRadius\"),i=r.get(\"highlightSpotColor\"),s=r.get(\"highlightLineColor\");!l||(o&&i&&(e=a.drawCircle(l[0],l[1],o,void 0,i),this.highlightSpotId=e.id,a.insertAfterShape(this.lastShapeId,e)),s&&(t=a.drawLine(l[0],this.canvasTop,l[0],this.canvasTop+this.canvasHeight,s),this.highlightLineId=t.id,a.insertAfterShape(this.lastShapeId,t)))},removeHighlight:function(){let e=this.target;this.highlightSpotId&&(e.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(e.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){let e,t,n,a,l,r=this.values,o=r.length,i=this.xvalues,s=this.yvalues,c=this.yminmax;for(e=0;e<o;e++)t=r[e],n=\"string\"==typeof r[e],a=\"object\"==typeof r[e]&&r[e]instanceof Array,l=n&&r[e].split(\":\"),n&&2===l.length?(i.push(Number(l[0])),s.push(Number(l[1])),c.push(Number(l[1]))):a?(i.push(t[0]),s.push(t[1]),c.push(t[1])):(i.push(e),null===r[e]||\"null\"===r[e]?s.push(null):(s.push(Number(t)),c.push(Number(t))));this.options.get(\"xvalues\")&&(i=this.options.get(\"xvalues\")),this.maxy=this.maxyorg=Math.max.apply(Math,c),this.miny=this.minyorg=Math.min.apply(Math,c),this.maxx=Math.max.apply(Math,i),this.minx=Math.min.apply(Math,i),this.xvalues=i,this.yvalues=s,this.yminmax=c},processRangeOptions:function(){let e=this.options,t=e.get(\"normalRangeMin\"),n=e.get(\"normalRangeMax\");void 0!==t&&(t<this.miny&&(this.miny=t),n>this.maxy&&(this.maxy=n)),void 0!==e.get(\"chartRangeMin\")&&(e.get(\"chartRangeClip\")||e.get(\"chartRangeMin\")<this.miny)&&(this.miny=e.get(\"chartRangeMin\")),void 0!==e.get(\"chartRangeMax\")&&(e.get(\"chartRangeClip\")||e.get(\"chartRangeMax\")>this.maxy)&&(this.maxy=e.get(\"chartRangeMax\")),void 0!==e.get(\"chartRangeMinX\")&&(e.get(\"chartRangeClipX\")||e.get(\"chartRangeMinX\")<this.minx)&&(this.minx=e.get(\"chartRangeMinX\")),void 0!==e.get(\"chartRangeMaxX\")&&(e.get(\"chartRangeClipX\")||e.get(\"chartRangeMaxX\")>this.maxx)&&(this.maxx=e.get(\"chartRangeMaxX\"))},drawNormalRange:function(e,t,n,a,l){let r=this.options.get(\"normalRangeMin\"),o=this.options.get(\"normalRangeMax\"),i=t+Math.round(n-n*((o-this.miny)/l)),s=Math.round(n*(o-r)/l);0==s&&r==o&&(s=1),this.target.drawRect(e,i,a,s,void 0,this.options.get(\"normalRangeColor\")).append()},render:function(e,t){this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.values=t;let n,a,l,r,o,i,s,c,u,d,h,f,m,p,g,y,v,b,k,w,x,_,C,T,S,I=this.options,R=this.target,A=e.mergedOptions.width,D=e.mergedOptions.height,F=this.vertices,E=I.get(\"spotRadius\"),M=this.regionMap;if(this.scanValues(),this.processRangeOptions(),C=this.xvalues,T=this.yvalues,this.yminmax.length&&!(this.yvalues.length<2)){for(r=o=0,n=this.maxx-this.minx==0?1:this.maxx-this.minx,a=this.maxy-this.miny==0?1:this.maxy-this.miny,l=this.yvalues.length-1,E&&(A<4*E||D<4*E)&&(E=0),E&&(x=I.get(\"highlightSpotColor\")&&!I.get(\"disableInteraction\"),(x||I.get(\"minSpotColor\")||I.get(\"spotColor\")&&T[l]===this.miny)&&(D-=Math.ceil(E)),(x||I.get(\"maxSpotColor\")||I.get(\"spotColor\")&&T[l]===this.maxy)&&(D-=Math.ceil(E),r+=Math.ceil(E)),(x||(I.get(\"minSpotColor\")||I.get(\"maxSpotColor\"))&&(T[0]===this.miny||T[0]===this.maxy))&&(o+=Math.ceil(E),A-=Math.ceil(E)),(x||I.get(\"spotColor\")||I.get(\"minSpotColor\")||I.get(\"maxSpotColor\")&&(T[l]===this.miny||T[l]===this.maxy))&&(A-=Math.ceil(E))),D--,void 0!==I.get(\"normalRangeMin\")&&!I.get(\"drawNormalOnTop\")&&this.drawNormalRange(o,r,D,A,a),s=[],c=[s],p=g=null,y=T.length,S=0;S<y;S++)u=C[S],h=C[S+1],d=T[S],f=o+Math.round((u-this.minx)*(A/n)),m=S<y-1?o+Math.round((h-this.minx)*(A/n)):A,g=f+(m-f)/2,M[S]=[p||0,g,S],p=g,null===d?S&&(null!==T[S-1]&&(s=[],c.push(s)),F.push(null)):(d<this.miny&&(d=this.miny),d>this.maxy&&(d=this.maxy),s.length||s.push([f,r+D]),i=[f,r+Math.round(D-D*((d-this.miny)/a))],s.push(i),F.push(i));for(v=[],b=[],k=c.length,S=0;S<k;S++)s=c[S],s.length&&(I.get(\"fillColor\")&&(s.push([s[s.length-1][0],r+D]),b.push(s.slice(0)),s.pop()),s.length>2&&(s[0]=[s[0][0],s[1][1]]),v.push(s));for(k=b.length,S=0;S<k;S++)R.drawShape(b[S],I.get(\"fillColor\"),I.get(\"fillColor\")).append();for(k=v.length,S=0;S<k;S++)R.drawShape(v[S],I.get(\"lineColor\"),void 0,I.get(\"lineWidth\")).append();if(void 0!==I.get(\"normalRangeMin\")&&I.get(\"drawNormalOnTop\")&&this.drawNormalRange(o,r,D,A,a),E&&I.get(\"valueSpots\"))for(w=I.get(\"valueSpots\"),void 0===w.get&&(w=new Fr(w)),S=0;S<y;S++)_=w.get(T[S]),_&&R.drawCircle(o+Math.round((C[S]-this.minx)*(A/n)),r+Math.round(D-D*((T[S]-this.miny)/a)),E,void 0,_).append();E&&I.get(\"spotColor\")&&null!==T[l]&&R.drawCircle(o+Math.round((C[C.length-1]-this.minx)*(A/n)),r+Math.round(D-D*((T[l]-this.miny)/a)),E,void 0,I.get(\"spotColor\")).append(),this.maxy!==this.minyorg&&(E&&I.get(\"minSpotColor\")&&(u=C[$.inArray(this.minyorg,T)],R.drawCircle(o+Math.round((u-this.minx)*(A/n)),r+Math.round(D-D*((this.minyorg-this.miny)/a)),E,void 0,I.get(\"minSpotColor\")).append()),E&&I.get(\"maxSpotColor\")&&(u=C[$.inArray(this.maxyorg,T)],R.drawCircle(o+Math.round((u-this.minx)*(A/n)),r+Math.round(D-D*((this.maxyorg-this.miny)/a)),E,void 0,I.get(\"maxSpotColor\")).append()))}}},bar:{type:\"bar\",init:function(e,t){let n=this.options,a=e.mergedOptions.height;e.mergedOptions.width;this.canvasWidth=e.mergedOptions.height,this.canvasHeight=e.mergedOptions.width;parseInt(n.get(\"barWidth\"),10);let l,r,o,i,s,c,u,d,h,f,m,p,g,y,v,b,k,w,x,_,C,T=parseInt(n.get(\"barSpacing\"),10),S=n.get(\"chartRangeMin\"),I=n.get(\"chartRangeMax\"),R=n.get(\"chartRangeClip\"),A=1/0,D=-1/0;for(this.values=t,c=0,u=t.length;c<u;c++)_=t[c],l=\"string\"==typeof _&&_.indexOf(\":\")>-1,(l||$.isArray(_))&&(v=!0,l&&(_=t[c]=$r(_.split(\":\"))),_=Rr(_,null),r=Math.min.apply(Math,_),o=Math.max.apply(Math,_),r<A&&(A=r),o>D&&(D=o));this.stacked=v,this.regionShapes={},this.barWidth=Math.floor(a/t.length)-T,this.barSpacing=T,this.totalBarWidth=this.barWidth+T,this.width=a,R&&(g=void 0===S?-1/0:S,y=void 0===I?1/0:I),s=[],i=v?[]:s;let F=[],E=[];for(c=0,u=t.length;c<u;c++)if(v)for(b=t[c],t[c]=x=[],F[c]=0,i[c]=E[c]=0,k=0,w=b.length;k<w;k++)_=x[k]=R?Cr(b[k],g,y):b[k],null!==_&&(_>0&&(F[c]+=_),A<0&&D>0?_<0?E[c]+=Math.abs(_):i[c]+=_:i[c]+=Math.abs(_),s.push(_));else _=R?Cr(t[c],g,y):t[c],_=t[c]=Sr(_),null!==_&&s.push(_);this.max=p=Math.max.apply(Math,s),this.min=m=Math.min.apply(Math,s),this.stackMax=D=v?Math.max.apply(Math,F):p,this.stackMin=A=v?Math.min.apply(Math,s):m,void 0!==n.get(\"chartRangeMin\")&&(n.get(\"chartRangeClip\")||n.get(\"chartRangeMin\")<m)&&(m=n.get(\"chartRangeMin\")),void 0!==n.get(\"chartRangeMax\")&&(n.get(\"chartRangeClip\")||n.get(\"chartRangeMax\")>p)&&(p=n.get(\"chartRangeMax\")),this.zeroAxis=h=n.get(\"zeroAxis\",!0),f=m<=0&&p>=0&&h?0:0==h?m:m>0?0:p,this.xaxisOffset=f,d=v?Math.max.apply(Math,i)+Math.max.apply(Math,E):p-f,this.canvasHeightEf=h&&m<0?this.canvasHeight-2:this.canvasHeight-1,this.isNeg=!1,m<f?(C=Math.floor(this.canvasHeight/2),this.isNeg=!0,C!==Math.ceil(C)&&(this.canvasHeightEf-=2,C=Math.ceil(C))):C=0,this.yoffset=C,$.isArray(n.get(\"colorMap\"))?(this.colorMapByIndex=n.get(\"colorMap\"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=n.get(\"colorMap\"),this.colorMapByValue&&void 0===this.colorMapByValue.get&&(this.colorMapByValue=new Fr(this.colorMapByValue))),this.range=d},getRegion:function(e,t,n){let a=Math.floor(t/this.totalBarWidth);return a<0||a>=this.values.length?void 0:a},getCurrentRegionFields:function(){let e,t,n=this.currentRegion,a=ensureArray(this.values[n]),l=[];for(t=a.length;t--;)e=a[t],l.push({isNull:null===e,value:e,color:this.calcColor(t,e,n),offset:n});return l},calcColor:function(e,t,n){let a,l,r=this.colorMapByIndex,o=this.colorMapByValue,i=this.options;return a=this.stacked?i.get(\"stackedBarColor\"):t<0?i.get(\"negBarColor\"):i.get(\"barColor\"),0===t&&void 0!==i.get(\"zeroColor\")&&(a=i.get(\"zeroColor\")),o&&(l=o.get(t))?a=l:r&&r.length>n&&(a=r[n]),$.isArray(a)?a[e%a.length]:a},renderRegion:function(e,t){let n,a,l,r,o,i,s,c,u,d,h=this.values[e],f=this.options,m=this.xaxisOffset,p=[],g=this.range,y=this.stacked,v=this.target,b=e*this.totalBarWidth,k=this.canvasHeightEf,w=this.yoffset;if(h=$.isArray(h)?h:[h],s=h.length,c=h[0],r=Ir(null,h),d=Ir(m,h,!0),r)return f.get(\"nullColor\")?(l=t?f.get(\"nullColor\"):this.calcHighlightColor(f.get(\"nullColor\"),f),n=w>0?w-1:w,v.drawRect(n,b,0,this.barWidth-1,l,l)):void 0;for(o=w,this.isNeg&&(k=Math.floor(k/2)),i=0;i<s;i++){if(c=h[i],y&&c===m){if(!d||u)continue;u=!0}a=g>0?Math.floor(k*(Math.abs(c-m)/g)):k,c<m||c===m&&0===w?(n=o-a,o+=a):y?(n=w,w+=a):(n=w,w-=a),l=this.calcColor(i,c,e),t&&(l=this.calcHighlightColor(l,f)),p.push(v.drawRect(n,b,a-1,this.barWidth-1,l,l))}return 1===p.length?p[0]:p}},column:{type:\"column\",init:function(e,t){let n=this.options,a=e.mergedOptions.width;e.mergedOptions.height;this.canvasWidth=e.mergedOptions.width,this.canvasHeight=e.mergedOptions.height;parseInt(n.get(\"barWidth\"),10);let l,r,o,i,s,c,u,d,h,f,m,p,g,y,v,b,k,w,x,_,C,T=parseInt(n.get(\"barSpacing\"),10),S=n.get(\"chartRangeMin\"),I=n.get(\"chartRangeMax\"),R=n.get(\"chartRangeClip\"),A=1/0,D=-1/0;for(this.values=t,c=0,u=t.length;c<u;c++)_=t[c],l=\"string\"==typeof _&&_.indexOf(\":\")>-1,(l||$.isArray(_))&&(v=!0,l&&(_=t[c]=$r(_.split(\":\"))),_=Rr(_,null),r=Math.min.apply(Math,_),o=Math.max.apply(Math,_),r<A&&(A=r),o>D&&(D=o));this.stacked=v,this.regionShapes={},this.barWidth=Math.floor(a/t.length)-T,this.barSpacing=T,this.totalBarWidth=this.barWidth+T,this.width=a,R&&(g=void 0===S?-1/0:S,y=void 0===I?1/0:I),s=[],i=v?[]:s;let F=[],E=[];for(c=0,u=t.length;c<u;c++)if(v)for(b=t[c],t[c]=x=[],F[c]=0,i[c]=E[c]=0,k=0,w=b.length;k<w;k++)_=x[k]=R?Cr(b[k],g,y):b[k],null!==_&&(_>0&&(F[c]+=_),A<0&&D>0?_<0?E[c]+=Math.abs(_):i[c]+=_:i[c]+=Math.abs(_),s.push(_));else _=R?Cr(t[c],g,y):t[c],_=t[c]=Sr(_),null!==_&&s.push(_);this.max=p=Math.max.apply(Math,s),this.min=m=Math.min.apply(Math,s),this.stackMax=D=v?Math.max.apply(Math,F):p,this.stackMin=A=v?Math.min.apply(Math,s):m,void 0!==n.get(\"chartRangeMin\")&&(n.get(\"chartRangeClip\")||n.get(\"chartRangeMin\")<m)&&(m=n.get(\"chartRangeMin\")),void 0!==n.get(\"chartRangeMax\")&&(n.get(\"chartRangeClip\")||n.get(\"chartRangeMax\")>p)&&(p=n.get(\"chartRangeMax\")),this.zeroAxis=h=n.get(\"zeroAxis\",!0),f=m<=0&&p>=0&&h?0:0==h?m:m>0?0:p,this.xaxisOffset=f,d=v?Math.max.apply(Math,i)+Math.max.apply(Math,E):p-f,this.canvasHeightEf=h&&m<0?this.canvasHeight-2:this.canvasHeight-1,this.isNeg=!1,m<f?(C=Math.floor(this.canvasHeight/2),this.isNeg=!0,C!==Math.ceil(C)&&(this.canvasHeightEf-=2,C=Math.ceil(C))):C=this.canvasHeight,this.yoffset=C,$.isArray(n.get(\"colorMap\"))?(this.colorMapByIndex=n.get(\"colorMap\"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=n.get(\"colorMap\"),this.colorMapByValue&&void 0===this.colorMapByValue.get&&(this.colorMapByValue=new Fr(this.colorMapByValue))),this.range=d},getRegion:function(e,t,n){let a=Math.floor(t/this.totalBarWidth);return a<0||a>=this.values.length?void 0:a},getCurrentRegionFields:function(){let e,t,n=this.currentRegion,a=ensureArray(this.values[n]),l=[];for(t=a.length;t--;)e=a[t],l.push({isNull:null===e,value:e,color:this.calcColor(t,e,n),offset:n});return l},calcColor:function(e,t,n){let a,l,r=this.colorMapByIndex,o=this.colorMapByValue,i=this.options;return a=this.stacked?i.get(\"stackedBarColor\"):t<0?i.get(\"negBarColor\"):i.get(\"barColor\"),0===t&&void 0!==i.get(\"zeroColor\")&&(a=i.get(\"zeroColor\")),o&&(l=o.get(t))?a=l:r&&r.length>n&&(a=r[n]),$.isArray(a)?a[e%a.length]:a},renderRegion:function(e,t){let n,a,l,r,o,i,s,c,u,d,h=this.values[e],f=this.options,m=this.xaxisOffset,p=[],g=this.range,y=this.stacked,v=this.target,b=e*this.totalBarWidth,k=this.canvasHeightEf,w=this.yoffset;if(h=$.isArray(h)?h:[h],s=h.length,c=h[0],r=Ir(null,h),d=Ir(m,h,!0),r)return f.get(\"nullColor\")?(l=t?f.get(\"nullColor\"):this.calcHighlightColor(f.get(\"nullColor\"),f),n=w>0?w-1:w,v.drawRect(b,n,this.barWidth-1,0,l,l)):void 0;for(o=w,this.isNeg&&(k=Math.floor(k/2)),i=0;i<s;i++){if(c=h[i],y&&c===m){if(!d||u)continue;u=!0}a=g>0?Math.floor(k*(Math.abs(c-m)/g)):k,c<m||c===m&&0===w?(n=o,o+=a):(n=w-a,w-=a),l=this.calcColor(i,c,e),t&&(l=this.calcHighlightColor(l,f)),p.push(v.drawRect(b,n,this.barWidth-1,a-1,l,l))}return 1===p.length?p[0]:p}},tristate:{type:\"tristate\",init:function(e,t){let n=this.options,a=e.mergedOptions.width;e.mergedOptions.height;this.canvasWidth=e.mergedOptions.width,this.canvasHeight=e.mergedOptions.height;let l=parseInt(n.get(\"barWidth\"),10),r=parseInt(n.get(\"barSpacing\"),10);this.regionShapes={},this.barWidth=l,this.barSpacing=r,this.totalBarWidth=l+r,this.values=$.map(t,Number),this.width=a=t.length*l+(t.length-1)*r,$.isArray(n.get(\"colorMap\"))?(this.colorMapByIndex=n.get(\"colorMap\"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=n.get(\"colorMap\"),this.colorMapByValue&&void 0===this.colorMapByValue.get&&(this.colorMapByValue=new Fr(this.colorMapByValue)))},getRegion:function(e,t,n){return Math.floor(t/this.totalBarWidth)},getCurrentRegionFields:function(){let e=this.currentRegion;return{isNull:void 0===this.values[e],value:this.values[e],color:this.calcColor(this.values[e],e),offset:e}},calcColor:function(e,t){let n,a,l=this.values,r=this.options,o=this.colorMapByIndex,i=this.colorMapByValue;return n=i&&(a=i.get(e))?a:o&&o.length>t?o[t]:l[t]<0?r.get(\"negBarColor\"):l[t]>0?r.get(\"posBarColor\"):r.get(\"zeroBarColor\"),n},renderRegion:function(e,t){let n,a,l,r,o,i,s=this.values,c=this.options,u=this.target;if(n=this.canvasHeight,l=Math.round(n/2),r=e*this.totalBarWidth,s[e]<0?(o=l,a=l-1):s[e]>0?(o=0,a=l-1):(o=l-1,a=2),i=this.calcColor(s[e],e),null!==i)return t&&(i=this.calcHighlightColor(i,c)),u.drawRect(r,o,this.barWidth-1,a-1,i,i)}},discrete:{type:\"discrete\",init:function(e,t){let n=this.options,a=e.mergedOptions.width;e.mergedOptions.height;this.canvasWidth=e.mergedOptions.width,this.canvasHeight=e.mergedOptions.height,this.regionShapes={},this.values=t=$.map(t,Number),this.min=Math.min.apply(Math,t),this.max=Math.max.apply(Math,t),this.range=this.max-this.min,this.width=a,this.interval=Math.floor(a/t.length),this.itemWidth=a/t.length,void 0!==n.get(\"chartRangeMin\")&&(n.get(\"chartRangeClip\")||n.get(\"chartRangeMin\")<this.min)&&(this.min=n.get(\"chartRangeMin\")),void 0!==n.get(\"chartRangeMax\")&&(n.get(\"chartRangeClip\")||n.get(\"chartRangeMax\")>this.max)&&(this.max=n.get(\"chartRangeMax\")),this.target&&(this.lineHeight=\"auto\"===n.get(\"lineHeight\")?Math.round(.3*this.canvasHeight):n.get(\"lineHeight\"))},getRegion:function(e,t,n){return Math.floor(t/this.itemWidth)},getCurrentRegionFields:function(){let e=this.currentRegion;return{isNull:void 0===this.values[e],value:this.values[e],offset:e}},renderRegion:function(e,t){let n,a,l,r,o=this.values,i=this.options,s=this.min,c=this.max,u=this.range,d=this.interval,h=(this.target,this.canvasHeight),f=this.lineHeight,m=h-f;return a=Cr(o[e],s,c),r=e*d,n=Math.round(m-m*((a-s)/u)),l=i.get(\"thresholdColor\")&&a<i.get(\"thresholdValue\")?i.get(\"thresholdColor\"):i.get(\"lineColor\"),t&&(l=this.calcHighlightColor(l,i)),this.target.drawRect(r,n,d<=2?1:d-2,f,l,l)}},bullet:{type:\"bullet\",init:function(e,t){let n,a,l,r=this.options,o=e.mergedOptions.width;e.mergedOptions.height;this.canvasWidth=e.mergedOptions.width,this.canvasHeight=e.mergedOptions.height,this.values=t=$r(t),l=t.slice(),l[0]=null===l[0]?l[2]:l[0],l[1]=null===t[1]?l[2]:l[1],n=Math.min.apply(Math,t),a=Math.max.apply(Math,t),n=void 0===r.get(\"base\")?n<0?n:0:r.get(\"base\"),this.min=n,this.max=a,this.range=a-n,this.shapes={},this.valueShapes={},this.regiondata={},this.width=o,t.length||(this.disabled=!0)},getRegion:function(e,t,n){let a=this.target.getShapeAt(e,t,n);return void 0!==a&&void 0!==this.shapes[a]?this.shapes[a]:void 0},getCurrentRegionFields:function(){let e=this.currentRegion;return{fieldkey:e.substr(0,1),value:this.values[e.substr(1)],region:e}},changeHighlight:function(e){let t,n=this.currentRegion,a=this.valueShapes[n];switch(delete this.shapes[a],n.substr(0,1)){case\"r\":t=this.renderRange(n.substr(1),e);break;case\"p\":t=this.renderPerformance(e);break;case\"t\":t=this.renderTarget(e)}this.valueShapes[n]=t.id,this.shapes[t.id]=n,this.target.replaceWithShape(a,t)},renderRange:function(e,t){let n=this.values[e],a=Math.round(this.canvasWidth*((n-this.min)/this.range)),l=this.options.get(\"rangeColors\")[e-2];return t&&(l=this.calcHighlightColor(l,this.options)),this.target.drawRect(0,0,a-1,this.canvasHeight-1,l,l)},renderPerformance:function(e){let t=this.values[1],n=Math.round(this.canvasWidth*((t-this.min)/this.range)),a=this.options.get(\"performanceColor\");return e&&(a=this.calcHighlightColor(a,this.options)),this.target.drawRect(0,Math.round(.3*this.canvasHeight),n-1,Math.round(.4*this.canvasHeight)-1,a,a)},renderTarget:function(e){let t=this.values[0],n=Math.round(this.canvasWidth*((t-this.min)/this.range)-this.options.get(\"targetWidth\")/2),a=Math.round(.1*this.canvasHeight),l=this.canvasHeight-2*a,r=this.options.get(\"targetColor\");return e&&(r=this.calcHighlightColor(r,this.options)),this.target.drawRect(n,a,this.options.get(\"targetWidth\")-1,l-1,r,r)},render:function(e,t){this.init(e,t);let n,a,l=this.values.length;this.target;for(n=2;n<l;n++)a=this.renderRange(n).append(),this.shapes[a.id]=\"r\"+n,this.valueShapes[\"r\"+n]=a.id;null!==this.values[1]&&(a=this.renderPerformance().append(),this.shapes[a.id]=\"p1\",this.valueShapes.p1=a.id),null!==this.values[0]&&(a=this.renderTarget().append(),this.shapes[a.id]=\"t0\",this.valueShapes.t0=a.id)}},pie:{type:\"pie\",init:function(e,t){let n=this.options;e.mergedOptions.width,e.mergedOptions.height;this.canvasWidth=e.mergedOptions.width,this.canvasHeight=e.mergedOptions.height;let a,l=0;if(this.shapes={},this.valueShapes={},this.values=t=$.map(t,Number),\"auto\"===n.get(\"width\")&&(this.width=this.height),t.length>0)for(a=t.length;a--;)l+=t[a];this.total=l,this.radius=Math.floor(Math.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(e,t,n){let a=this.target.getShapeAt(e,t,n);return void 0!==a&&void 0!==this.shapes[a]?this.shapes[a]:void 0},getCurrentRegionFields:function(){let e=this.currentRegion;return{isNull:void 0===this.values[e],value:this.values[e],percent:this.values[e]/this.total*100,color:this.options.get(\"sliceColors\")[e%this.options.get(\"sliceColors\").length],offset:e}},changeHighlight:function(e){let t=this.currentRegion,n=this.renderSlice(t,e),a=this.valueShapes[t];delete this.shapes[a],this.target.replaceWithShape(a,n),this.valueShapes[t]=n.id,this.shapes[n.id]=t},renderSlice:function(e,t){let n,a,l,r,o,i=this.target,s=this.options,c=this.radius,u=s.get(\"borderWidth\"),d=s.get(\"offset\"),h=2*Math.PI,f=this.values,m=this.total,p=d?2*Math.PI*(d/360):0;for(r=f.length,l=0;l<r;l++){if(n=p,a=p,m>0&&(a=p+h*(f[l]/m)),e===l)return o=s.get(\"sliceColors\")[l%s.get(\"sliceColors\").length],t&&(o=this.calcHighlightColor(o,s)),i.drawPieSlice(c,c,c-u,n,a,void 0,o);p=a}},render:function(e,t){this.init(e,t);let n,a,l=this.target,r=this.values,o=this.options,i=this.radius,s=o.get(\"borderWidth\");for(s&&l.drawCircle(i,i,Math.floor(i-s/2),o.get(\"borderColor\"),void 0,s).append(),a=r.length;a--;)r[a]&&(n=this.renderSlice(a).append(),this.valueShapes[a]=n.id,this.shapes[n.id]=a)}},box:{type:\"box\",init:function(e,t){let n=this.options,a=e.mergedOptions.width;e.mergedOptions.height;this.canvasWidth=e.mergedOptions.width,this.canvasHeight=e.mergedOptions.height,this.values=$.map(t,Number),this.width=\"auto\"===n.get(\"width\")?\"4.0em\":a,this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){let e=[{field:\"lq\",value:this.quartiles[0]},{field:\"med\",value:this.quartiles[1]},{field:\"uq\",value:this.quartiles[2]}];return void 0!==this.loutlier&&e.push({field:\"lo\",value:this.loutlier}),void 0!==this.routlier&&e.push({field:\"ro\",value:this.routlier}),void 0!==this.lwhisker&&e.push({field:\"lw\",value:this.lwhisker}),void 0!==this.rwhisker&&e.push({field:\"rw\",value:this.rwhisker}),e},render:function(e,t){this.init(e,t);let n,a,l,r,o,i,s,c,u,d,h,f=this.target,m=this.values,p=m.length,g=this.options,y=this.canvasWidth,v=this.canvasHeight,b=void 0===g.get(\"chartRangeMin\")?Math.min.apply(Math,m):g.get(\"chartRangeMin\"),k=void 0===g.get(\"chartRangeMax\")?Math.max.apply(Math,m):g.get(\"chartRangeMax\"),w=0;if(g.get(\"raw\"))g.get(\"showOutliers\")&&m.length>5?(a=m[0],n=m[1],r=m[2],o=m[3],i=m[4],s=m[5],c=m[6]):(n=m[0],r=m[1],o=m[2],i=m[3],s=m[4]);else if(m.sort((function(e,t){return e-t})),r=Tr(m,1),o=Tr(m,2),i=Tr(m,3),l=i-r,g.get(\"showOutliers\")){for(n=s=void 0,u=0;u<p;u++)void 0===n&&m[u]>r-l*g.get(\"outlierIQR\")&&(n=m[u]),m[u]<i+l*g.get(\"outlierIQR\")&&(s=m[u]);a=m[0],c=m[p-1]}else n=m[0],s=m[p-1];this.quartiles=[r,o,i],this.lwhisker=n,this.rwhisker=s,this.loutlier=a,this.routlier=c,h=y/(k-b+1),g.get(\"showOutliers\")&&(w=Math.ceil(g.get(\"spotRadius\")),y-=2*Math.ceil(g.get(\"spotRadius\")),h=y/(k-b+1),a<n&&f.drawCircle((a-b)*h+w,v/2,g.get(\"spotRadius\"),g.get(\"outlierLineColor\"),g.get(\"outlierFillColor\")).append(),c>s&&f.drawCircle((c-b)*h+w,v/2,g.get(\"spotRadius\"),g.get(\"outlierLineColor\"),g.get(\"outlierFillColor\")).append()),f.drawRect(Math.round((r-b)*h+w),Math.round(.1*v),Math.round((i-r)*h),Math.round(.8*v),g.get(\"boxLineColor\"),g.get(\"boxFillColor\")).append(),f.drawLine(Math.round((n-b)*h+w),Math.round(v/2),Math.round((r-b)*h+w),Math.round(v/2),g.get(\"lineColor\")).append(),f.drawLine(Math.round((n-b)*h+w),Math.round(v/4),Math.round((n-b)*h+w),Math.round(v-v/4),g.get(\"whiskerColor\")).append(),f.drawLine(Math.round((s-b)*h+w),Math.round(v/2),Math.round((i-b)*h+w),Math.round(v/2),g.get(\"lineColor\")).append(),f.drawLine(Math.round((s-b)*h+w),Math.round(v/4),Math.round((s-b)*h+w),Math.round(v-v/4),g.get(\"whiskerColor\")).append(),f.drawLine(Math.round((o-b)*h+w),Math.round(.1*v),Math.round((o-b)*h+w),Math.round(.9*v),g.get(\"medianColor\")).append(),g.get(\"target\")&&(d=Math.ceil(g.get(\"spotRadius\")),f.drawLine(Math.round((g.get(\"target\")-b)*h+w),Math.round(v/2-d),Math.round((g.get(\"target\")-b)*h+w),Math.round(v/2+d),g.get(\"targetColor\")).append(),f.drawLine(Math.round((g.get(\"target\")-b)*h+w-d),Math.round(v/2),Math.round((g.get(\"target\")-b)*h+w+d),Math.round(v/2),g.get(\"targetColor\")).append())}},shapeCount:0,shapes:{},shapeseq:[],lastShapeId:null,mergedOptions:null,init:function(e,t){let n,a,l;t=t||{};let r=this;return a=this.defaultOption,l=a.common,n=a[t.type||l.type],r.shapeCount=0,r.shapes={},r.shapeseq=[],r.lastShapeId=null,r.mergedOptions=$.extend({},l,n,t),r.mergedOptions.width=r.mergedOptions.width,r.mergedOptions.height=r.mergedOptions.height,r[r.mergedOptions.type].render(r,e),{shapes:r.shapes,shapeseq:r.shapeseq,offsetX:r.mergedOptions.offsetX,offsetY:r.mergedOptions.offsetY,pixelWidth:r.mergedOptions.width,pixelHeight:r.mergedOptions.height}},_getContext:function(e,t,n){let a;return a=null!=this.ctx?this.ctx:$(\"#\"+this._canvasID).get(0).getContext(\"2d\"),void 0!==e&&(a.strokeStyle=e),a.lineWidth=void 0===n?1:n,void 0!==t&&(a.fillStyle=t),a},reset:function(){this._getContext().clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=void 0},_drawShape:function(e,t,n,a,l){let r,o,i=this._getContext(n,a,l);for(i.beginPath(),i.moveTo(t[0][0]+.5+this.offsetX,t[0][1]+.5+this.offsetY),r=1,o=t.length;r<o;r++)i.lineTo(t[r][0]+.5+this.offsetX,t[r][1]+.5+this.offsetY);void 0!==n&&i.stroke(),void 0!==a&&i.fill(),void 0!==this.targetX&&void 0!==this.targetY&&i.isPointInPath(this.targetX+this.offsetX,this.targetY+this.offsetY)&&(this.currentTargetShapeId=e)},_drawCircle:function(e,t,n,a,l,r,o){let i=this._getContext(l,r,o);i.beginPath(),t+=this.offsetX,n+=this.offsetY,i.arc(t,n,a,0,2*Math.PI,!1),void 0!==this.targetX&&void 0!==this.targetY&&i.isPointInPath(this.targetX+this.offsetX,this.targetY+this.offsetY)&&(this.currentTargetShapeId=e),void 0!==l&&i.stroke(),void 0!==r&&i.fill()},_drawPieSlice:function(e,t,n,a,l,r,o,i){let s=this._getContext(o,i);t+=this.offsetX,n+=this.offsetY,s.beginPath(),s.moveTo(t,n),s.arc(t,n,a,l,r,!1),s.lineTo(t,n),s.closePath(),void 0!==o&&s.stroke(),i&&s.fill(),void 0!==this.targetX&&void 0!==this.targetY&&s.isPointInPath(this.targetX+this.offsetX,this.targetY+this.offsetY)&&(this.currentTargetShapeId=e)},_drawRect:function(e,t,n,a,l,r,o){return this._drawShape(e,[[t,n],[t+a,n],[t+a,n+l],[t,n+l],[t,n]],r,o)},appendShape:function(e){return this.shapes[e.id]=e,this.shapeseq.push(e.id),this.lastShapeId=e.id,e.id},replaceWithShape:function(e,t){let n,a=this.shapeseq;for(this.shapes[t.id]=t,n=a.length;n--;)a[n]==e&&(a[n]=t.id);delete this.shapes[e]},replaceWithShapes:function(e,t){let n,a,l,r=this.shapeseq,o={};for(a=e.length;a--;)o[e[a]]=!0;for(a=r.length;a--;)n=r[a],o[n]&&(r.splice(a,1),delete this.shapes[n],l=a);for(a=t.length;a--;)r.splice(l,0,t[a].id),this.shapes[t[a].id]=t[a]},insertAfterShape:function(e,t){let n,a=this.shapeseq;for(n=a.length;n--;)if(a[n]===e)return a.splice(n+1,0,t.id),void(this.shapes[t.id]=t)},removeShapeId:function(e){let t,n=this.shapeseq;for(t=n.length;t--;)if(n[t]===e){n.splice(t,1);break}delete this.shapes[e]},getShapeAt:function(e,t,n){return this.targetX=t,this.targetY=n,this.render(),this.currentTargetShapeId},_canvasID:\"luckysheetTableContent\",render:function(e,t,n,a,l,r,o,i){null==o&&(o=\"luckysheetTableContent\"),this._canvasID=o,null!=i&&(this.ctx=i);let s,c,u,d=e.length;this._getContext();for(this.offsetX=n,this.offsetY=a,this.pixelWidth=l,this.pixelHeight=r,u=0;u<d;u++)s=e[u],c=t[s],this[\"_draw\"+c.type].apply(this,c.args)},drawLine:function(e,t,n,a,l,r){return this.drawShape([[e,t],[n,a]],l,r)},drawShape:function(e,t,n,a){return this._genShape(\"Shape\",[e,t,n,a])},drawCircle:function(e,t,n,a,l,r){return this._genShape(\"Circle\",[e,t,n,a,l,r])},drawPieSlice:function(e,t,n,a,l,r,o){return this._genShape(\"PieSlice\",[e,t,n,a,l,r,o])},drawRect:function(e,t,n,a,l,r){return this._genShape(\"Rect\",[e,t,n,a,l,r])},_genShape:function(e,t){let n=this.shapeCount++;t.unshift(n);let a={id:n,type:e,args:t};return this.shapes[n]=a,this.shapeseq.push(n),this.lastShapeId=n,{append:function(){return a},get:function(){return n}}}},Mr={changeHighlight:function(e){let t,n=this.currentRegion,a=this.target,l=this.regionShapes[n];l&&(t=this.renderRegion(n,e),$.isArray(t)||$.isArray(l)?(a.replaceWithShapes(l,t),this.regionShapes[n]=$.map(t,(function(e){return e.id}))):(a.replaceWithShape(l,t),this.regionShapes[n]=t.id))},render:function(e,t){this.init(e,t);let n,a,l,r,o=this.values,i=(this.target,this.regionShapes);for(l=o.length;l--;)if(n=this.renderRegion(l),n)if($.isArray(n)){for(a=[],r=n.length;r--;)n[r].append(),a.push(n[r].id);i[l]=a}else n.append(),i[l]=n.id;else i[l]=null}},Nr={get:function(e){return Er.mergedOptions[e]}},Pr={drawLine:function(e,t,n,a,l,r){return Er.drawLine(e,t,n,a,l,r)},drawShape:function(e,t,n,a){return Er.drawShape(e,t,n,a)},drawCircle:function(e,t,n,a,l,r){return Er.drawCircle(e,t,n,a,l,r)},drawPieSlice:function(e,t,n,a,l,r,o){return Er.drawPieSlice(e,t,n,a,l,r,o)},drawRect:function(e,t,n,a,l,r){return Er.drawRect(e,t,n,a,l,r)}};for(let e in Er)e in{line:null,bar:null,column:null,tristate:null,discrete:null,bullet:null,pie:null,box:null}&&(Er[e].options=Nr,Er[e].target=Pr),e in{bar:null,column:null,tristate:null,discrete:null}&&(Er[e].changeHighlight=Mr.changeHighlight,Er[e].render=Mr.render);zr=Er}));function Hr(e,n,a){null==e&&(e=$(\"#luckysheet-cell-main\").scrollTop()),null==n&&(n=t.luckysheetTableContentHW[1]),null==a&&(a=t.columnHeaderHeight);let l,r,o=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");o.save(),o.scale(t.devicePixelRatio,t.devicePixelRatio),o.clearRect(0,a,t.rowHeaderWidth-1,n),o.font=At(),o.textBaseline=Rt.textBaseline,o.fillStyle=Rt.fillStyle,l=Xn(t.visibledatarow,e),r=Xn(t.visibledatarow,e+n),-1==l&&(l=0),-1==r&&(r=t.visibledatarow.length-1),o.save(),o.beginPath(),o.rect(0,a-1,t.rowHeaderWidth-1,n-2),o.clip();let i,s,c,u=.5;for(let n=l;n<=r;n++){s=0==n?-e-1:t.visibledatarow[n-1]-e-1,i=t.visibledatarow[n]-e;let d=l==n?-2:0,h=r==n?-2:0;if(yl.createHookFunction(\"rowTitleCellRenderBefore\",n+1,{r:n,top:s+a+d,width:t.rowHeaderWidth-1,height:i-s+1+h-d},o)){if(null==t.config.rowhidden||null==t.config.rowhidden[n]){o.fillStyle=\"#ffffff\",o.fillRect(0,s+a+d,t.rowHeaderWidth-1,i-s+1+h-d),o.fillStyle=\"#000000\",o.save(),o.scale(t.zoomRatio,t.zoomRatio);let e=sa(n+1,o),l=(t.rowHeaderWidth-e.width)/2,r=s+(i-s)/2+a;o.fillText(n+1,l/t.zoomRatio,r/t.zoomRatio),o.restore()}o.beginPath(),o.moveTo(t.rowHeaderWidth-2+u,s+a-2),o.lineTo(t.rowHeaderWidth-2+u,i+a-2),o.lineWidth=1,o.strokeStyle=Rt.strokeStyle,o.stroke(),o.closePath(),null!=t.config.rowhidden&&null==t.config.rowhidden[n]&&null!=t.config.rowhidden[n+1]?(o.beginPath(),o.moveTo(-1,i+a-4+u),o.lineTo(t.rowHeaderWidth-1,i+a-4+u),o.closePath(),o.stroke()):(null==t.config.rowhidden||null==t.config.rowhidden[n])&&(o.beginPath(),o.moveTo(-1,i+a-2+u),o.lineTo(t.rowHeaderWidth-1,i+a-2+u),o.closePath(),o.stroke()),null!=t.config.rowhidden&&null!=t.config.rowhidden[n-1]&&null!=c&&(o.beginPath(),o.moveTo(-1,c+a+u),o.lineTo(t.rowHeaderWidth-1,c+a+u),o.closePath(),o.stroke()),c=i,yl.createHookFunction(\"rowTitleCellRenderAfter\",n+1,{r:n,top:s+a+d,width:t.rowHeaderWidth-1,height:i-s+1+h-d},o)}}o.restore(),o.restore()}function Ur(e,n,a){null==e&&(e=$(\"#luckysheet-cell-main\").scrollLeft()),null==n&&(n=t.luckysheetTableContentHW[0]),null==a&&(a=t.rowHeaderWidth);let l,r,o=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");o.save(),o.scale(t.devicePixelRatio,t.devicePixelRatio),o.clearRect(a,0,n,t.columnHeaderHeight-1),o.font=At(),o.textBaseline=Rt.textBaseline,o.fillStyle=Rt.fillStyle,l=Xn(t.visibledatacolumn,e),r=Xn(t.visibledatacolumn,e+n),-1==l&&(l=0),-1==r&&(r=t.visibledatacolumn.length-1),o.save(),o.beginPath(),o.rect(a-1,0,n,t.columnHeaderHeight-1),o.clip();let i,s,c,u=.5;for(let n=l;n<=r;n++){s=0==n?-e:t.visibledatacolumn[n-1]-e,i=t.visibledatacolumn[n]-e;let l=id(n);if(yl.createHookFunction(\"columnTitleCellRenderBefore\",l,{c:n,left:s+a-1,width:i-s,height:t.columnHeaderHeight-1},o)){if(null==t.config.colhidden||null==t.config.colhidden[n]){o.fillStyle=\"#ffffff\",o.fillRect(s+a-1,0,i-s,t.columnHeaderHeight-1),o.fillStyle=\"#000000\",o.save(),o.scale(t.zoomRatio,t.zoomRatio);let e=sa(l,o),n=Math.round(s+(i-s)/2+a-e.width/2),r=Math.round(t.columnHeaderHeight/2);o.fillText(l,n/t.zoomRatio,r/t.zoomRatio),o.restore()}null!=t.config.colhidden&&null==t.config.colhidden[n]&&null!=t.config.colhidden[n+1]?(o.beginPath(),o.moveTo(i+a-4+u,0),o.lineTo(i+a-4+u,t.columnHeaderHeight-2),o.lineWidth=1,o.strokeStyle=Rt.strokeStyle,o.closePath(),o.stroke()):(null==t.config.colhidden||null==t.config.colhidden[n])&&(o.beginPath(),o.moveTo(i+a-2+u,0),o.lineTo(i+a-2+u,t.columnHeaderHeight-2),o.lineWidth=1,o.strokeStyle=Rt.strokeStyle,o.closePath(),o.stroke()),null!=t.config.colhidden&&null!=t.config.colhidden[n-1]&&null!=c&&(o.beginPath(),o.moveTo(c+a+u,0),o.lineTo(c+a+u,t.columnHeaderHeight-2),o.closePath(),o.stroke()),o.beginPath(),o.moveTo(s+a-1,t.columnHeaderHeight-2+u),o.lineTo(i+a-1,t.columnHeaderHeight-2+u),o.stroke(),o.closePath(),c=i,yl.createHookFunction(\"columnTitleCellRenderAfter\",l,{c:n,left:s+a-1,width:i-s,height:t.columnHeaderHeight-1},o)}}o.restore(),o.restore()}function jr(e,n,a,l,r,o,i,s,c){if(null==t.flowdata)return;let u=ki.getSheetByIndex();clearTimeout(t.measureTextCacheTimeOut),null==e&&(e=$(\"#luckysheet-cell-main\").scrollLeft()),null==n&&(n=$(\"#luckysheet-cell-main\").scrollTop()),null==a&&(a=t.luckysheetTableContentHW[0]),null==l&&(l=t.luckysheetTableContentHW[1]),null==r&&(r=t.rowHeaderWidth),null==o&&(o=t.columnHeaderHeight),null==i&&(i=0),null==s&&(s=0);let d,h,f,m,p,g,y,v,b=null;if(null==c)b=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");else if(\"object\"==ad(c))try{b=c.get(0).getContext(\"2d\")}catch(e){b=c}else b=$(\"#\"+c).get(0).getContext(\"2d\");b.save(),b.scale(t.devicePixelRatio,t.devicePixelRatio),b.clearRect(0,0,t.luckysheetTableContentHW[0],t.luckysheetTableContentHW[1]),d=Xn(t.visibledatarow,n),h=Xn(t.visibledatarow,n+l),-1==d&&(d=0),d+=s,-1==h&&(h=t.visibledatarow.length-1),h+=s,h>=t.visibledatarow.length&&(h=t.visibledatarow.length-1),f=Xn(t.visibledatacolumn,e),m=Xn(t.visibledatacolumn,e+a),-1==f&&(f=0),f+=i,-1==m&&(m=t.visibledatacolumn.length-1),m+=i,m>=t.visibledatacolumn.length&&(m=t.visibledatacolumn.length-1),p=0==d?0:t.visibledatarow[d-1],g=t.visibledatarow[h],y=0==f?0:t.visibledatacolumn[f-1],v=t.visibledatacolumn[m],b.fillStyle=\"#ffffff\",b.fillRect(r-1,o-1,v-e,g-n),b.font=At(),b.fillStyle=Rt.fillStyle;let k=[],w={},x={},C=.5;yl.createHookFunction(\"cellAllRenderBefore\",t.flowdata,u,b);for(let a=d;a<=h;a++){let l;l=0==a?-n-1:t.visibledatarow[a-1]-n-1;let r=t.visibledatarow[a]-n;if(null==t.config.rowhidden||null==t.config.rowhidden[a])for(let n=f;n<=m;n++){let o;o=0==n?-e:t.visibledatacolumn[n-1]-e;let i=t.visibledatacolumn[n]-e;if(null!=t.config.colhidden&&null!=t.config.colhidden[n])continue;let s=t.defaultcollen;if(null!=t.config.columnlen&&null!=t.config.columnlen[n]&&(s=t.config.columnlen[n]),null!=t.flowdata[a]&&null!=t.flowdata[a][n]){let e=t.flowdata[a][n];if(\"object\"==ad(e)&&\"mc\"in e){if(x[a+\"_\"+n]={start_r:l,start_c:o,end_r:r,end_c:i},!(\"rs\"in e.mc)){let t=\"r\"+e.mc.r+\"c\"+e.mc.c,c=k[w[t]];null==c?(w[t]=k.length,k.push({r:a,c:n,start_c:o,start_r:l,end_r:r,end_c:i,firstcolumnlen:s})):(c.c==n&&(c.end_r+=r-l-1),c.r==a&&(c.end_c+=i-o,c.firstcolumnlen+=s));continue}w[\"r\"+a+\"c\"+n]=k.length}}k.push({r:a,c:n,start_r:l,start_c:o,end_r:r,end_c:i,firstcolumnlen:s}),x[a+\"_\"+n]={start_r:l,start_c:o,end_r:r,end_c:i}}}let T=yn(t.luckysheetfile[Mt(t.currentSheetIndex)].dynamicArray),S=Xa.getComputeMap(),I=ko.getComputeMap(),R=function(e,n,a,l,r){let o={},i=t.flowdata;for(let s=l;s<=r;s++){if(null==i[s])continue;if(null!=t.cellOverflowMapCache[s]){o[s]=t.cellOverflowMapCache[s];continue}let l=!1;for(let r=0;r<i[s].length;r++){let c=i[s][r];if((null==t.config.colhidden||null==t.config.colhidden[r])&&null!=c&&(!_(c.v)||Tn(c))&&null==c.mc&&\"1\"==c.tb){let u=Yu.checkstatus(i,s,r,\"ht\"),d=ca(c,e,{r:s,c:r}),h=0;null!=d&&(h=d.textWidthAll);let f,m,p=r-1<0?0:t.visibledatacolumn[r-1];if(t.visibledatacolumn[r]-p<h){if(\"0\"==u){let e=Gr(s,r,r-1,\"forward\",u,h),t=Gr(s,r,r+1,\"backward\",u,h);f=e.success?e.c:e.c+1,m=t.success?t.c:t.c-1}else if(\"1\"==u){let e=Gr(s,r,r+1,\"backward\",u,h);f=r,m=e.success?e.c:e.c-1}else if(\"2\"==u){let e=Gr(s,r,r-1,\"forward\",u,h);m=r,f=e.success?e.c:e.c+1}}else f=r,m=r;if((f<=a||m>=n)&&f<m){let e={r:s,stc:f,edc:m};null==o[s]&&(o[s]={}),o[s][r]=e,l=!0}}}l&&(t.cellOverflowMapCache[s]=o[s])}return o}(b,f,m,d,h),A=[];for(let a=0;a<k.length;a++){let l=k[a],i=l.r,s=l.c,c=l.start_r,u=l.start_c,d=l.end_r,h=l.end_c;l.firstcolumnlen;if(null!=t.flowdata[i])if(null==t.flowdata[i][s])Kr(i,s,c,u,d,h,b,S,I,r,o,T,R,f,m,n,e,C);else{let l=t.flowdata[i][s],p=null;if(\"object\"==typeof l&&\"mc\"in l?A.push(k[a]):p=Un(i,s),null==p||0==p.toString().length){Kr(i,s,c,u,d,h,b,S,I,r,o,T,R,f,m,n,e,C);let a=Yu.borderfix(t.flowdata,i,s),l=[u+r+a[0],c+o+a[1],h-u-3+a[2],d-c-3-1+a[3]];Xr(i,s,l[0],l[1],\"luckysheetTableContent\",b)}else i+\"_\"+s in T&&(p=T[i+\"_\"+s].v),Zr(i,s,c,u,d,h,p,b,S,I,r,o,T,R,f,m,n,e,C)}}for(let a=0;a<A.length;a++){let l=A[a],i=l.r,s=l.c,c=l.start_r,u=l.start_c,d=l.end_r-1,h=l.end_c-1,p=(l.firstcolumnlen,null),g=t.flowdata[i][s].mc;p=Un(g.r,g.c),i=g.r,s=g.c;let y=t.flowdata[i][s];if(u=0==s?-e:t.visibledatacolumn[s-1]-e,c=0==i?-n-1:t.visibledatarow[i-1]-n-1,d=t.visibledatarow[i+y.mc.rs-1]-n,h=t.visibledatacolumn[s+y.mc.cs-1]-e,null==p||0==p.toString().length){Kr(i,s,c,u,d,h,b,S,I,r,o,T,R,f,m,n,e,C,!0);let a=Yu.borderfix(t.flowdata,i,s),l=[u+r+a[0],c+o+a[1],h-u-3+a[2],d-c-3-1+a[3]];Xr(i,s,l[0],l[1],\"luckysheetTableContent\",b)}else i+\"_\"+s in T&&(p=T[i+\"_\"+s].v),Zr(i,s,c,u,d,h,p,b,S,I,r,o,T,R,f,m,n,e,C,!0)}for(let a=d;a<=h;a++){let l;l=0==a?-n-1:t.visibledatarow[a-1]-n-1;let i=t.visibledatarow[a]-n;for(let n=f;n<=m;n++){let s;s=0==n?-e:t.visibledatacolumn[n-1]-e;let c=t.visibledatacolumn[n]-e;t.luckysheetcurrentisPivotTable&&wr.drawPivotTable?((0==n||5==n)&&a<=11&&(b.beginPath(),b.moveTo(c-2+C+r,l+o),b.lineTo(c-2+C+r,i-2+C+o),b.lineWidth=1,b.strokeStyle=\"#000000\",b.closePath(),b.stroke()),(2==a||11==a)&&n<=5&&(b.beginPath(),b.moveTo(s-1+r,i-2+C+o),b.lineTo(c-2+C+r,i-2+C+o),b.lineWidth=1,b.strokeStyle=\"#000000\",b.closePath(),b.stroke()),6==a&&3==n&&(b.save(),b.font=\"bold 30px Arial\",b.fillStyle=\"#626675\",b.textAlign=\"center\",b.fillText(X().pivotTable.title,s+(c-s)/2+4+r,l+(i-l)/2-1+o),b.restore())):t.luckysheetcurrentisPivotTable&&n<wr.pivotTableBoundary[1]&&a<wr.pivotTableBoundary[0]&&(b.beginPath(),b.moveTo(c-2+C+r,l+o),b.lineTo(c-2+C+r,i-2+C+o),b.lineWidth=1,b.strokeStyle=\"#000000\",b.closePath(),b.stroke(),b.beginPath(),b.moveTo(s-1+r,i-2+C+o),b.lineTo(c-2+r,i-2+C+o),b.lineWidth=1,b.strokeStyle=\"#000000\",b.closePath(),b.stroke())}}if(null!=t.config.borderInfo&&t.config.borderInfo.length>0){let e=function(e,t,n,a,l,r,o,i,s){let c=e,u=a-2+C+o,d=n+i-1,h=a-2+C+o,f=l-2+C+i;s.save(),Yu.setLineDash(s,c,\"v\",u,d,h,f),s.strokeStyle=t,s.stroke(),s.closePath(),s.restore()},t=function(e,t,n,a,l,r,o,i,s){let c=e,u=r-2+C+o,d=n+i-1,h=r-2+C+o,f=l-2+C+i;s.save(),Yu.setLineDash(s,c,\"v\",u,d,h,f),s.strokeStyle=t,s.stroke(),s.closePath(),s.restore()},n=function(e,t,n,a,l,r,o,i,s){let c=e,u=a-2+C+o,d=l-2+C+i,h=r-2+C+o,f=l-2+C+i;s.save(),Yu.setLineDash(s,c,\"h\",u,d,h,f),s.strokeStyle=t,s.stroke(),s.closePath(),s.restore()},a=function(e,t,n,a,l,r,o,i,s){let c=e,u=a-2+C+o,d=n-1+C+i,h=r-2+C+o,f=n-1+C+i;s.save(),Yu.setLineDash(s,c,\"h\",u,d,h,f),s.strokeStyle=t,s.stroke(),s.closePath(),s.restore()},l=xl(d,h,f,m);for(let i in l){let s=i.substr(0,i.indexOf(\"_\")),c=i.substr(i.indexOf(\"_\")+1);if(x[s+\"_\"+c]){let u=x[s+\"_\"+c].start_r,d=x[s+\"_\"+c].start_c,h=x[s+\"_\"+c].end_r,p=x[s+\"_\"+c].end_c,g=Wr(R,s,c,f,m),y=l[i].l;null!=y&&(!g.colIn||g.stc==c)&&e(y.style,y.color,u,d,h,p,r,o,b);let v=l[i].r;null!=v&&(!g.colIn||g.colLast)&&t(v.style,v.color,u,d,h,p,r,o,b);let k=l[i].t;null!=k&&a(k.style,k.color,u,d,h,p,r,o,b);let w=l[i].b;null!=w&&n(w.style,w.color,u,d,h,p,r,o,b)}}}m==t.visibledatacolumn.length-1&&b.clearRect(v-e+r-1,o-1,t.ch_width-t.visibledatacolumn[m],g-n),b.restore(),t.measureTextCacheTimeOut=setTimeout((()=>{t.measureTextCache={},t.measureTextCellInfoCache={},t.cellOverflowMapCache={}}),100)}function Gr(e,n,a,l,r,o){let i=t.flowdata;if(\"forward\"==l&&a<0)return{success:!1,r:e,c:a};if(\"backward\"==l&&a>i[e].length-1)return{success:!1,r:e,c:a};let s=i[e][a];if(null!=s&&(!_(s.v)||null!=s.mc))return{success:!1,r:e,c:a};let c=n-1<0?0:t.visibledatacolumn[n-1],u=t.visibledatacolumn[n],d=o-(u-c);\"0\"==r?(c-=d/2,u+=d/2):\"1\"==r?u+=d:\"2\"==r&&(c-=d);let h=a-1<0?0:t.visibledatacolumn[a-1],f=t.visibledatacolumn[a];return\"forward\"==l?c<h?Gr(e,n,a-1,l,r,o):c<f?{success:!0,r:e,c:a}:{success:!1,r:e,c:a}:\"backward\"==l?u>f?Gr(e,n,a+1,l,r,o):u>h?{success:!0,r:e,c:a}:{success:!1,r:e,c:a}:void 0}function Wr(e,t,n,a,l){let r,o,i,s,c=!1,u=!1;for(let a in e){for(let d in e[a]){r=a,o=d;let h=e[a][d];if(i=h.stc,s=h.edc,r==t&&n>=i&&n<=s&&(c=!0,n==s||n==l)){u=!0;break}}if(u)break}return{colIn:c,colLast:u,rowIndex:r,colIndex:o,stc:i,edc:s}}function Yr(e,n,a){if(null==e)return;let l=e.values,r=a.pos_x,o=a.pos_y;if(null!=l){0!=e.rotate&&\"verticalWrap\"!=e.type&&(n.save(),n.translate((r+e.textLeftAll)/t.zoomRatio,(o+e.textTopAll)/t.zoomRatio),n.rotate(-e.rotate*Math.PI/180),n.translate(-(e.textLeftAll+r)/t.zoomRatio,-(o+e.textTopAll)/t.zoomRatio));for(let e=0;e<l.length;e++){let a=l[e];!0===a.inline&&null!=a.style?(n.font=a.style.fontset,n.fillStyle=a.style.fc):n.font=a.style;let i=\"object\"==typeof a.content?a.content.m:a.content;if(n.fillText(i,(r+a.left)/t.zoomRatio,(o+a.top)/t.zoomRatio),null!=a.cancelLine){let e=a.cancelLine;n.beginPath(),n.moveTo(Math.floor((r+e.startX)/t.zoomRatio)+.5,Math.floor((o+e.startY)/t.zoomRatio)+.5),n.lineTo(Math.floor((r+e.endX)/t.zoomRatio)+.5,Math.floor((o+e.endY)/t.zoomRatio)+.5),n.lineWidth=Math.floor(e.fs/9),n.strokeStyle=n.fillStyle,n.stroke(),n.closePath()}if(null!=a.underLine){let e=a.underLine;for(let a=0;a<e.length;a++){let l=e[a];n.beginPath(),n.moveTo(Math.floor((r+l.startX)/t.zoomRatio)+.5,Math.floor((o+l.startY)/t.zoomRatio)),n.lineTo(Math.floor((r+l.endX)/t.zoomRatio)+.5,Math.floor((o+l.endY)/t.zoomRatio)+.5),n.lineWidth=Math.floor(l.fs/9),n.strokeStyle=n.fillStyle,n.stroke(),n.closePath()}}}0!=e.rotate&&\"verticalWrap\"!=e.type&&n.restore()}}var Xr,Kr,Zr,Jr,Qr,eo=y((()=>{Vr(),To(),Ja(),qr(),ed(),cl(),Et(),Kn(),kn(),Yt(),E(),da(),Yn(),Il(),qt(),_d(),zn(),kl(),x(),K(),_i(),Xr=function(e,n,a,l,r,o){if(null==t.flowdata[e]||null==t.flowdata[e][n])return;let i=t.flowdata[e][n].spl;if(null!=i)if(\"string\"==typeof i&&(i=new Function(\"return \"+i)()),\"object\"==ad(i)){let e=i,t=e.offsetX,n=e.offsetY;t=null==t?0:t,n=null==n?0:n,zr.render(e.shapeseq,e.shapes,a+t,l+n,e.pixelWidth,e.pixelHeight,r,o)}else if(\"array\"==ad(i)&&\"object\"==ad(i[0]))for(let e=0;e<i.length;e++){let t=i[e],n=t.offsetX,s=t.offsetY;n=null==n?0:n,s=null==s?0:s,zr.render(t.shapeseq,t.shapes,a+n,l+s,t.pixelWidth,t.pixelHeight,r,o)}},Kr=function(e,n,a,l,r,o,i,s,c,u,d,h,f,m,p,g,y,v,b){let k=Xa.checksAF(e,n,s),w=ko.checksCF(e,n,c),x=Yu.borderfix(t.flowdata,e,n),_=Yu.checkstatus(t.flowdata,e,n,\"bg\");null!=k&&null!=k[1]&&(_=k[1]),null!=w&&null!=w.cellColor&&(_=w.cellColor),null!=t.flowdata[e][n]&&null!=t.flowdata[e][n].tc&&(_=t.flowdata[e][n].tc),i.fillStyle=null==_?\"#FFFFFF\":_;let C=[l+u+x[0]+1,a+d+x[1]+1,o-l+x[2]-(b?1:0)-1,r-a+x[3]-1];if(!yl.createHookFunction(\"cellRenderBefore\",t.flowdata[e][n],{r:e,c:n,start_r:C[1],start_c:C[0],end_r:C[3]+C[1],end_c:C[2]+C[0]},ki.getSheetByIndex(),i))return;if(i.fillRect(C[0],C[1],C[2],C[3]),e+\"_\"+n in h){let t=h[e+\"_\"+n].v;i.fillStyle=\"#000000\";let a=At();i.font=a;let o=l+4+u,s=(Gt.luckysheetrefreshfixed(),r+d-2);i.textBaseline=\"bottom\",i.fillText(null==t?\"\":t,o,s)}if(null!=t.flowdata[e][n]&&null!=t.flowdata[e][n].ps){let e=8*t.zoomRatio,n=8*t.zoomRatio;i.beginPath(),i.moveTo(o+u-1-e,a+d),i.lineTo(o+u-1,a+d),i.lineTo(o+u-1,a+d+n),i.fillStyle=\"#FC6666\",i.fill(),i.closePath()}let T=Wr(f,e,n,0,p);T.colLast&&Jr(T.rowIndex,T.colIndex,T.stc,T.edc,i,g,y,u,d,s,c),(!T.colIn||T.colLast)&&!t.luckysheetcurrentisPivotTable&&t.showGridLines&&(i.beginPath(),i.moveTo(o+u-2+v,a+d),i.lineTo(o+u-2+v,r+d),i.lineWidth=1,i.strokeStyle=Rt.strokeStyle,i.stroke(),i.closePath()),!t.luckysheetcurrentisPivotTable&&t.showGridLines&&(i.beginPath(),i.moveTo(l+u-1,r+d-2+v),i.lineTo(o+u-1,r+d-2+v),i.lineWidth=1,i.strokeStyle=Rt.strokeStyle,i.stroke(),i.closePath()),yl.createHookFunction(\"cellRenderAfter\",t.flowdata[e][n],{r:e,c:n,start_r:C[1],start_c:C[0],end_r:C[3]+C[1],end_c:C[2]+C[0]},ki.getSheetByIndex(),i)},Zr=function(e,n,a,l,r,o,i,s,c,u,d,h,f,m,p,g,y,v,b,k){let w=t.flowdata[e][n],x=o-l-2,_=r-a-2,T=Yu.checkstatus(t.flowdata,e,n,\"ht\"),S=Yu.checkstatus(t.flowdata,e,n,\"vt\"),$=Xa.checksAF(e,n,c),I=ko.checksCF(e,n,u),R=Yu.checkstatus(t.flowdata,e,n,\"bg\");null!=$&&null!=$[1]&&(R=$[1]),null!=I&&null!=I.cellColor&&(R=I.cellColor),s.fillStyle=null==R?\"#FFFFFF\":R;let A=Yu.borderfix(t.flowdata,e,n),D=[l+d+A[0]+1,a+h+A[1]+1,o-l+A[2]-(k?1:0)-1,r-a+A[3]+1];if(!yl.createHookFunction(\"cellRenderBefore\",t.flowdata[e][n],{r:e,c:n,start_r:D[1],start_c:D[0],end_r:D[3]+D[1],end_c:D[2]+D[0]},ki.getSheetByIndex(),s))return;s.fillRect(D[0],D[1],D[2],D[3]);let F=sl.dataVerification;if(null!=F&&null!=F[e+\"_\"+n]&&!sl.validateCellData(i,F[e+\"_\"+n])){let e=5*t.zoomRatio,n=5*t.zoomRatio;s.beginPath(),s.moveTo(l+d,a+h),s.lineTo(l+d+e,a+h),s.lineTo(l+d,a+h+n),s.fillStyle=\"#FC6666\",s.fill(),s.closePath()}if(null!=w.ps){let e=8*t.zoomRatio,n=8*t.zoomRatio;s.beginPath(),s.moveTo(o+d-e,a+h),s.lineTo(o+d,a+h),s.lineTo(o+d,a+h+n),s.fillStyle=\"#FC6666\",s.fill(),s.closePath()}if(1==w.qp&&C(w.v)){let e=6*t.zoomRatio,n=6*t.zoomRatio;s.beginPath(),s.moveTo(l+d+e-1,a+h),s.lineTo(l+d-1,a+h),s.lineTo(l+d-1,a+h+n),s.fillStyle=\"#487f1e\",s.fill(),s.closePath()}let E=!0,M=Wr(m,e,n,0,g);if(\"1\"==w.tb&&M.colIn)M.colLast?Jr(M.rowIndex,M.colIndex,M.stc,M.edc,s,y,v,d,h,c,u):E=!1;else if(null!=F&&null!=F[e+\"_\"+n]&&\"checkbox\"==F[e+\"_\"+n].type){let r=l+d,o=a+h+1;s.save(),s.beginPath(),s.rect(r,o,x,_),s.clip(),s.scale(t.zoomRatio,t.zoomRatio);let c=sa(i,s),u=c.width+14,f=c.actualBoundingBoxDescent+c.actualBoundingBoxAscent,m=r+2;\"0\"==T?m=r+x/2-u/2:\"2\"==T&&(m=r+x-2-u);let p=_>f?_:f,g=o+p-2;s.textBaseline=\"bottom\";let y=g-13*t.zoomRatio;\"0\"==S?(g=o+p/2,s.textBaseline=\"middle\",y=g-6*t.zoomRatio):\"1\"==S&&(g=o+2,s.textBaseline=\"top\",y=g+1*t.zoomRatio),m/=t.zoomRatio,g/=t.zoomRatio,y/=t.zoomRatio,s.lineWidth=1,s.strokeStyle=\"#000\",s.strokeRect(m,y,10,10),F[e+\"_\"+n].checked&&(s.beginPath(),s.lineTo(m+1,y+6),s.lineTo(m+4,y+9),s.lineTo(m+9,y+2),s.stroke(),s.closePath()),s.fillStyle=Yu.checkstatus(t.flowdata,e,n,\"fc\"),s.fillText(null==i?\"\":i,m+14,g),s.restore()}else{if(null!=I&&null!=I.dataBar&&I.dataBar.valueLen&&\"NaN\"!==I.dataBar.valueLen.toString()){let e=l+d+2,t=a+h+2,n=x-4,r=_-4,o=I.dataBar.valueType,i=I.dataBar.valueLen,c=I.dataBar.format;if(\"minus\"==o){let a=I.dataBar.minusLen;if(c.length>1){let l=s.createLinearGradient(e+n*a*(1-i),t,e+n*a,t);l.addColorStop(0,\"#ffffff\"),l.addColorStop(1,\"#ff0000\"),s.fillStyle=l}else s.fillStyle=\"#ff0000\";s.fillRect(e+n*a*(1-i),t,n*a*i,r),s.beginPath(),s.moveTo(e+n*a*(1-i),t),s.lineTo(e+n*a*(1-i),t+r),s.lineTo(e+n*a,t+r),s.lineTo(e+n*a,t),s.lineTo(e+n*a*(1-i),t),s.lineWidth=1,s.strokeStyle=\"#ff0000\",s.stroke(),s.closePath()}else if(\"plus\"==o){let a=I.dataBar.plusLen;if(1==a){if(c.length>1){let a=s.createLinearGradient(e,t,e+n*i,t);a.addColorStop(0,c[0]),a.addColorStop(1,c[1]),s.fillStyle=a}else s.fillStyle=c[0];s.fillRect(e,t,n*i,r),s.beginPath(),s.moveTo(e,t),s.lineTo(e,t+r),s.lineTo(e+n*i,t+r),s.lineTo(e+n*i,t),s.lineTo(e,t),s.lineWidth=1,s.strokeStyle=c[0],s.stroke(),s.closePath()}else{let l=I.dataBar.minusLen;if(c.length>1){let r=s.createLinearGradient(e+n*l,t,e+n*l+n*a*i,t);r.addColorStop(0,c[0]),r.addColorStop(1,c[1]),s.fillStyle=r}else s.fillStyle=c[0];s.fillRect(e+n*l,t,n*a*i,r),s.beginPath(),s.moveTo(e+n*l,t),s.lineTo(e+n*l,t+r),s.lineTo(e+n*l+n*a*i,t+r),s.lineTo(e+n*l+n*a*i,t),s.lineTo(e+n*l,t),s.lineWidth=1,s.strokeStyle=c[0],s.stroke(),s.closePath()}}}let r=l+d,o=a+h+1;s.save(),s.beginPath(),s.rect(r,o,x,_),s.clip(),s.scale(t.zoomRatio,t.zoomRatio);let i=ca(w,s,{cellWidth:x,cellHeight:_,space_width:2,space_height:2,r:e,c:n});if(null!=I&&null!=I.icons&&\"plain\"==i.type){let e=I.icons.left,n=I.icons.top,a=i.values[0],l=r+a.left,c=o+a.top-i.textHeightAll;\"0\"==S?c=o+_/2-i.textHeightAll/2:\"1\"==S?c=o:\"2\"==S&&(c-=i.desc),c/=t.zoomRatio,l/=t.zoomRatio,s.drawImage(Dt,42*e,32*n,32,32,r/t.zoomRatio,c,i.textHeightAll/t.zoomRatio,i.textHeightAll/t.zoomRatio),\"0\"!=T&&\"2\"!=T&&(l+=i.textHeightAll/t.zoomRatio)}s.fillStyle=Yu.checkstatus(t.flowdata,e,n,\"fc\"),null!=$&&null!=$[0]&&(s.fillStyle=$[0]),null!=I&&null!=I.textColor&&(s.fillStyle=I.textColor),w.ct&&w.ct.fa&&w.ct.fa.indexOf(\"[Red]\")>-1&&\"n\"==w.ct.t&&w.v<0&&(s.fillStyle=\"#ff0000\"),Yr(i,s,{pos_x:r,pos_y:o}),s.restore()}E&&!t.luckysheetcurrentisPivotTable&&t.showGridLines&&(s.beginPath(),s.moveTo(o+d-2+b,a+h),s.lineTo(o+d-2+b,r+h),s.lineWidth=1,s.strokeStyle=Rt.strokeStyle,s.stroke(),s.closePath()),!t.luckysheetcurrentisPivotTable&&t.showGridLines&&(s.beginPath(),s.moveTo(l+d-1,r+h-2+b),s.lineTo(o+d-1,r+h-2+b),s.lineWidth=1,s.strokeStyle=Rt.strokeStyle,s.stroke(),s.closePath()),yl.createHookFunction(\"cellRenderAfter\",t.flowdata[e][n],{r:e,c:n,start_r:D[1],start_c:D[0],end_r:D[3]+D[1],end_c:D[2]+D[0]},ki.getSheetByIndex(),s)},Jr=function(e,n,a,l,r,o,i,s,c,u,d){let h;h=0==e?-o-1:t.visibledatarow[e-1]-o-1;let f,m=t.visibledatarow[e]-o;f=0==a?-i:t.visibledatacolumn[a-1]-i;let p=t.visibledatacolumn[l]-i,g=t.flowdata[e][n],y=p-f-2,v=m-h-2,b=f+s,k=h+c+1,w=ud(g);r.font=w,r.save(),r.beginPath(),r.rect(b,k,y,v),r.clip(),r.scale(t.zoomRatio,t.zoomRatio);let x=ca(g,r,{cellWidth:y,cellHeight:v,space_width:2,space_height:2,r:e,c:n}),_=Xa.checksAF(e,n,u),C=ko.checksCF(e,n,d);r.fillStyle=Yu.checkstatus(t.flowdata,e,n,\"fc\"),null!=_&&null!=_[0]&&(r.fillStyle=_[0]),null!=C&&null!=C.textColor&&(r.fillStyle=C.textColor),Yr(x,r,{pos_x:b,pos_y:k}),r.restore()}})),to=y((()=>{_d(),Yn(),fo(),na(),Ci(),Co(),gn(),Et(),Xu(),_o(),_i(),Al(),ed(),qt(),K(),x(),Qr={item:{linkType:\"external\",linkAddress:\"\",linkTooltip:\"\"},hyperlink:null,createDialog:function(){let e=X(),n=e.insertLink,a=e.toolbar,l=e.button;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-insertLink-dialog\").remove();let r=\"\";t.luckysheetfile.forEach((e=>{r+=`<option value=\"${e.name}\">${e.name}</option>`}));let o=`<div class=\"box\">\\n                            <div class=\"box-item\">\\n                                <label for=\"luckysheet-insertLink-dialog-linkText\">${n.linkText}：</label>\\n                                <input type=\"text\" id=\"luckysheet-insertLink-dialog-linkText\"/>\\n                            </div>\\n                            <div class=\"box-item\">\\n                                <label for=\"luckysheet-insertLink-dialog-linkType\">${n.linkType}：</label>\\n                                <select id=\"luckysheet-insertLink-dialog-linkType\">\\n                                    <option value=\"external\">${n.external}</option>\\n                                    <option value=\"internal\">${n.internal}</option>\\n                                </select>\\n                            </div>\\n                            <div class=\"show-box show-box-external\">\\n                                <div class=\"box-item\">\\n                                    <label for=\"luckysheet-insertLink-dialog-linkAddress\">${n.linkAddress}：</label>\\n                                    <input type=\"text\" id=\"luckysheet-insertLink-dialog-linkAddress\" placeholder=\"${n.placeholder1}\" />\\n                                </div>\\n                            </div>\\n                            <div class=\"show-box show-box-internal\">\\n                                <div class=\"box-item\">\\n                                    <label for=\"luckysheet-insertLink-dialog-linkSheet\">${n.linkSheet}：</label>\\n                                    <select id=\"luckysheet-insertLink-dialog-linkSheet\">\\n                                        ${r}\\n                                    </select>\\n                                </div>\\n                                <div class=\"box-item\">\\n                                    <label for=\"luckysheet-insertLink-dialog-linkCell\">${n.linkCell}：</label>\\n                                    <input type=\"text\" id=\"luckysheet-insertLink-dialog-linkCell\" value=\"A1\" placeholder=\"${n.placeholder2}\" />\\n                                </div>\\n                            </div>\\n                            <div class=\"box-item\">\\n                                <label for=\"luckysheet-insertLink-dialog-linkTooltip\">${n.linkTooltip}：</label>\\n                                <input type=\"text\" id=\"luckysheet-insertLink-dialog-linkTooltip\" placeholder=\"${n.placeholder3}\" />\\n                            </div>\\n                        </div>`;$(\"body\").append(nd(kt,{id:\"luckysheet-insertLink-dialog\",addclass:\"luckysheet-insertLink-dialog\",title:a.insertLink,content:o,botton:`<button id=\"luckysheet-insertLink-dialog-confirm\" class=\"btn btn-primary\">${l.confirm}</button>\\n                        <button class=\"btn btn-default luckysheet-model-close-btn\">${l.cancel}</button>`,style:\"z-index:100003\"}));let i=$(\"#luckysheet-insertLink-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",350).end(),s=i.outerHeight(),c=i.outerWidth(),u=$(window).width(),d=$(window).height(),h=$(document).scrollLeft(),f=$(document).scrollTop();$(\"#luckysheet-insertLink-dialog\").css({left:(u+h-c)/2,top:(d+f-s)/3}).show(),this.dataAllocation()},init:function(){let e=this,n=X().insertLink;$(document).off(\"change.linkType\").on(\"change.linkType\",\"#luckysheet-insertLink-dialog-linkType\",(function(e){let t=this.value;$(\"#luckysheet-insertLink-dialog .show-box\").hide(),$(\"#luckysheet-insertLink-dialog .show-box-\"+t).show()})),$(document).off(\"click.confirm\").on(\"click.confirm\",\"#luckysheet-insertLink-dialog-confirm\",(function(a){let l=t.luckysheet_select_save[t.luckysheet_select_save.length-1],r=l.row_focus||l.row[0],o=l.column_focus||l.column[0],i=$(\"#luckysheet-insertLink-dialog-linkText\").val(),s=$(\"#luckysheet-insertLink-dialog-linkType\").val(),c=$(\"#luckysheet-insertLink-dialog-linkAddress\").val(),u=$(\"#luckysheet-insertLink-dialog-linkSheet\").val(),d=$(\"#luckysheet-insertLink-dialog-linkCell\").val(),h=$(\"#luckysheet-insertLink-dialog-linkTooltip\").val();if(\"external\"==s){if(/^http[s]?:\\/\\//.test(c)||(c=\"https://\"+c),!/^http[s]?:\\/\\/([\\w\\-\\.]+)+[\\w-]*([\\w\\-\\.\\/\\?%&=]+)?$/gi.test(c))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo1)}else{if(!wi.iscelldata(d))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',n.tooltipInfo2);c=u+\"!\"+d}(null==i||\"\"==i.replace(/\\s/g,\"\"))&&(i=c);let f={linkType:s,linkAddress:c,linkTooltip:h},m=$.extend(!0,{},e.hyperlink),p=$.extend(!0,{},e.hyperlink);p[r+\"_\"+o]=f;let g=mn.deepCopyFlowData(t.flowdata),y=g[r][o];null==y&&(y={}),y.fc=\"rgb(0, 0, 255)\",y.un=1,y.v=y.m=i,g[r][o]=y,e.ref(m,p,t.currentSheetIndex,g,[{row:[r,r],column:[o,o]}]),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-insertLink-dialog\").hide()}))},dataAllocation:function(){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1],n=e.row_focus||e.row[0],a=e.column_focus||e.column[0],l=(this.hyperlink||{})[n+\"_\"+a]||{},r=Vn(n,a,null,\"m\");$(\"#luckysheet-insertLink-dialog-linkText\").val(r);let o=l.linkType||\"external\";$(\"#luckysheet-insertLink-dialog-linkType\").val(o),$(\"#luckysheet-insertLink-dialog .show-box\").hide(),$(\"#luckysheet-insertLink-dialog .show-box-\"+o).show();let i=l.linkAddress||\"\";if(\"external\"==o)$(\"#luckysheet-insertLink-dialog-linkAddress\").val(i);else if(wi.iscelldata(i)){let e=i.split(\"!\")[0],t=i.split(\"!\")[1];$(\"#luckysheet-insertLink-dialog-linkSheet\").val(e),$(\"#luckysheet-insertLink-dialog-linkCell\").val(t)}let s=l.linkTooltip||\"\";$(\"#luckysheet-insertLink-dialog-linkTooltip\").val(s)},cellFocus:function(e,n){let a=this;if(null==a.hyperlink||null==a.hyperlink[e+\"_\"+n])return;let l=a.hyperlink[e+\"_\"+n];if(\"external\"==l.linkType)window.open(l.linkAddress);else{let e=wi.getcellrange(l.linkAddress),n=e.sheetIndex,a=[{row:e.row,column:e.column}];n!=t.currentSheetIndex&&($(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+n).addClass(\"luckysheet-sheets-item-active\"),ki.changeSheet(n)),t.luckysheet_select_save=a,Pu(!0);let r=e.row[0]-1==-1?0:t.visibledatarow[e.row[0]-1],o=e.column[0]-1==-1?0:t.visibledatacolumn[e.column[0]-1];$(\"#luckysheet-scrollbar-x\").scrollLeft(o),$(\"#luckysheet-scrollbar-y\").scrollTop(r)}},overshow:function(e){let n=this;if($(\"#luckysheet-hyperlink-overshow\").remove(),0==$(e.target).closest(\"#luckysheet-cell-main\").length)return;let a=ta(e.pageX,e.pageY),l=$(\"#luckysheet-cell-main\").scrollLeft(),r=$(\"#luckysheet-cell-main\").scrollTop(),o=a[0]+l,i=a[1]+r;if(null!=$l.freezenverticaldata&&a[0]<$l.freezenverticaldata[0]-$l.freezenverticaldata[2]||null!=$l.freezenhorizontaldata&&a[1]<$l.freezenhorizontaldata[0]-$l.freezenhorizontaldata[2])return;let s=Jn(i)[2],c=ea(o)[2],u=Yu.mergeborer(t.flowdata,s,c);if(u&&(s=u.row[2],c=u.column[2]),null==n.hyperlink||null==n.hyperlink[s+\"_\"+c])return;let d=n.hyperlink[s+\"_\"+c],h=d.linkTooltip;(null==h||\"\"==h.replace(/\\s/g,\"\"))&&(h=d.linkAddress);let f=t.visibledatarow[s],m=s-1==-1?0:t.visibledatarow[s-1],p=t.visibledatacolumn[c],g=c-1==-1?0:t.visibledatacolumn[c-1];u&&(f=u.row[1],m=u.row[0],p=u.column[1],g=u.column[0]),$(`<div id=\"luckysheet-hyperlink-overshow\" style=\"background:#fff;padding:5px 10px;border:1px solid #000;box-shadow:2px 2px #999;position:absolute;left:${g}px;top:${f+5}px;z-index:100;\">\\n                        <div>${h}</div>\\n                        <div>单击鼠标可以追踪</div>\\n                    </div>`).appendTo($(\"#luckysheet-cell-main\"))},ref:function(e,n,a,l,r){if(t.clearjfundo){t.jfundo.length=0;let o={type:\"updateHyperlink\"};o.sheetIndex=a,o.historyHyperlink=e,o.currentHyperlink=n,o.data=t.flowdata,o.curData=l,o.range=r,t.jfredo.push(o)}this.hyperlink=n,t.luckysheetfile[Mt(a)].hyperlink=n,t.flowdata=l,mn.webWorkerFlowDataCache(t.flowdata),t.luckysheetfile[Mt(a)].data=t.flowdata,yo.allowUpdate&&(yo.saveParam(\"all\",a,n,{k:\"hyperlink\"}),yo.historyParam(t.flowdata,a,r[0])),setTimeout((function(){uo()}),1)}}}));function no(e,t,n){wi.execFunctionExist=[];for(let n=0;n<e.length;n++)for(let a=e[n].row[0];a<=e[n].row[1];a++)for(let l=e[n].column[0];l<=e[n].column[1];l++)wi.execFunctionExist.push({r:a,c:l,i:t});wi.execFunctionExist.reverse(),wi.execFunctionGroup(null,null,null,null,n),wi.execFunctionGlobalData=null}function ao(e,n,a,l=!0,r=!0){null==e&&(e=t.flowdata),null==n&&(n=t.luckysheet_select_save),n=JSON.parse(JSON.stringify(n)),clearTimeout(ho),null==a&&(a={});let o=a.cfg,i=a.calc,s=a.RowlChange,c=a.cdformat,u=a.dataVerification,d=a.dynamicArray,h=a.hyperlink,f=t.luckysheetfile[Mt(t.currentSheetIndex)];if(t.clearjfundo){let a,l,r,m;t.jfundo.length=0,a=null==o?$.extend(!0,{},t.config):$.extend(!0,{},o),l=null==c?$.extend(!0,[],f.luckysheet_conditionformat_save):c,r=null==u?$.extend(!0,{},f.dataVerification):u,m=null==d?$.extend(!0,[],f.dynamicArray):d,t.jfredo.push({type:\"datachange\",data:t.flowdata,curdata:e,sheetIndex:t.currentSheetIndex,config:$.extend(!0,{},t.config),curConfig:a,calc:$.extend(!0,[],f.calcChain),curCalc:i,cdformat:$.extend(!0,[],f.luckysheet_conditionformat_save),curCdformat:l,RowlChange:s,dataVerification:$.extend(!0,[],f.dataVerification),curDataVerification:r,dynamicArray:$.extend(!0,[],f.dynamicArray),curDynamicArray:m,hyperlink:h&&$.extend(!0,{},f.hyperlink),curHyperlink:h,range:n,dataRange:[...f.luckysheet_select_save]})}t.flowdata=e,mn.webWorkerFlowDataCache(t.flowdata),f.data=t.flowdata,null!=o&&(t.config=o,f.config=t.config,yo.saveParam(\"all\",t.currentSheetIndex,o,{k:\"config\"}),null!=s&&co(t.flowdata.length,t.flowdata[0].length)),null!=i&&(f.calcChain=i,yo.saveParam(\"all\",t.currentSheetIndex,i,{k:\"calcChain\"})),null!=c&&0!==c.length&&(f.luckysheet_conditionformat_save=c,yo.saveParam(\"all\",t.currentSheetIndex,c,{k:\"luckysheet_conditionformat_save\"})),null!=u&&0!==Object.keys(u).length&&(sl.dataVerification=u,f.dataVerification=u,yo.saveParam(\"all\",t.currentSheetIndex,u,{k:\"dataVerification\"})),null!=d&&(f.dynamicArray=d,yo.saveParam(\"all\",t.currentSheetIndex,d,{k:\"dynamicArray\"})),null!=h&&(f.hyperlink=h,Qr.hyperlink=h,yo.saveParam(\"all\",t.currentSheetIndex,h,{k:\"hyperlink\"}));for(let e=0;e<n.length;e++){let a=n[e].row[0],l=n[e].column[0];if(null!=t.flowdata[a][l]&&null!=t.flowdata[a][l].spl){window.luckysheetCurrentRow=a,window.luckysheetCurrentColumn=l,window.luckysheetCurrentFunction=t.flowdata[a][l].f;let e=$.trim(wi.functionParserExe(t.flowdata[a][l].f)),n=new Function(\"return \"+e)();t.flowdata[a][l].spl=n}yo.allowUpdate&&yo.historyParam(t.flowdata,t.currentSheetIndex,n[e]),\"function\"==typeof t.chartparam.jfrefreshchartall&&t.chartparam.jfrefreshchartall(t.flowdata,n[e].row[0],n[e].row[1],n[e].column[0],n[e].column[1])}l&&no(n,t.currentSheetIndex,e),r&&(ho=setTimeout((function(){uo()}),1)),Pu(),window.luckysheet_getcelldata_cache=null}function lo(e,n,a,l,r,o,i,s,c=!0){let u={},d=!1;if(clearTimeout(ho),\"cellRowChange\"==o){u.type=\"cellRowChange\",u.config=$.extend(!0,{},t.config),u.curconfig=$.extend(!0,{},l),u.range=$.extend(!0,[],t.luckysheet_select_save),u.currange=r,u.ctrlType=o,u.ctrlValue=i;let e=l.rowlen;null==e&&(e={}),yo.saveParam(\"cg\",t.currentSheetIndex,e,{k:\"rowlen\"})}else if(\"resizeC\"==o){u.type=\"resize\",u.config=$.extend(!0,{},t.config),u.curconfig=$.extend(!0,{},l),u.range=$.extend(!0,[],t.luckysheet_select_save),u.currange=r,u.ctrlType=o,u.ctrlValue=i;let e=l.columnlen;null==e&&(e={}),yo.saveParam(\"cg\",t.currentSheetIndex,e,{k:\"columnlen\"})}else if(o.indexOf(\"extend\")>-1)u.type=\"extend\",u.config=$.extend(!0,{},t.config),u.curconfig=$.extend(!0,{},l),u.range=$.extend(!0,[],t.luckysheet_select_save),u.currange=r,u.ctrlType=o,u.ctrlValue=i,yo.saveParam(\"arc\",t.currentSheetIndex,{index:i.index,len:i.len,direction:i.direction,mc:l.merge},{rc:i.type});else if(o.indexOf(\"dele\")>-1)u.type=\"dele\",u.config=$.extend(!0,{},t.config),u.curconfig=$.extend(!0,{},l),u.range=$.extend(!0,[],t.luckysheet_select_save),u.currange=r,u.ctrlType=o,u.ctrlValue=i,yo.saveParam(\"drc\",t.currentSheetIndex,{index:i.index,len:i.len,mc:l.merge,borderInfo:l.borderInfo},{rc:i.type});else{u.type=\"datachangeAll\",u.range=$.extend(!0,[],t.luckysheet_select_save),u.currange=r,u.ctrlType=o,u.ctrlValue=i,d=!0;for(let e=0;e<r.length;e++)yo.historyParam(a,t.currentSheetIndex,r[e])}t.clearjfundo&&(t.jfundo.length=0,u.data=t.flowdata,u.curdata=a,u.sheetIndex=t.currentSheetIndex,u.cdformat=$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save),u.curCdformat=s,t.jfredo.push(u)),t.flowdata=a,mn.webWorkerFlowDataCache(a),t.luckysheetfile[Mt(t.currentSheetIndex)].data=t.flowdata,null!=l&&(t.config=l,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"all\",t.currentSheetIndex,l,{k:\"config\"})),null!=s&&(t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save=s,yo.saveParam(\"all\",t.currentSheetIndex,s,{k:\"luckysheet_conditionformat_save\"})),t.luckysheet_select_save=$.extend(!0,[],r),t.luckysheet_select_save.length>0&&Pu(),d&&no(r,t.currentSheetIndex,a),co(n,e),c&&(ho=setTimeout((function(){uo()}),1)),ki.storeSheetParamALL(),window.luckysheet_getcelldata_cache=null}function ro(e,n,a){clearTimeout(ho),t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"rangechange\",data:t.flowdata,curdata:e,range:n,sheetIndex:t.currentSheetIndex,cdformat:$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save),curCdformat:a})),t.flowdata=e,mn.webWorkerFlowDataCache(t.flowdata),t.luckysheetfile[Mt(t.currentSheetIndex)].data=t.flowdata,null!=a&&(t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save=a),no(n,t.currentSheetIndex,e),ho=setTimeout((function(){uo()}),1);for(let e=0;e<n.length;e++)yo.historyParam(t.flowdata,t.currentSheetIndex,n[e])}function oo(e,n,a,l,r,o,i,s,c,u,d){let h=t.luckysheetfile[Mt(t.currentSheetIndex)];Bu();let f=[];for(let t in n.merge){let a=n.merge[t];for(let t=a.r;t<=a.r+a.rs-1;t++)for(let n=a.c;n<=a.c+a.cs-1;n++)null==e[t][n]&&(e[t][n]={}),t==a.r&&n==a.c?e[t][n].mc=a:e[t][n].mc={r:a.r,c:a.c},f.push({r:t,c:n})}let m=[];t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:a,sheetIndex:t.currentSheetIndex,data:t.flowdata,curData:e,config:$.extend(!0,{},t.config),curConfig:n,ctrlValue:l,mcData:f,calc:$.extend(!0,[],h.calcChain),curCalc:r,funcData:m,filterObj:{filter_select:$.extend(!0,{},h.filter_select),filter:$.extend(!0,{},h.filter)},curFilterObj:o,cf:$.extend(!0,[],h.luckysheet_conditionformat_save),curCf:i,af:$.extend(!0,[],h.luckysheet_alternateformat_save),curAf:s,freezen:{freezenhorizontaldata:$l.freezenhorizontaldata,freezenverticaldata:$l.freezenverticaldata},curFreezen:c,dataVerification:$.extend(!0,{},h.dataVerification),curDataVerification:u,hyperlink:$.extend(!0,{},h.hyperlink),curHyperlink:d,range:h.luckysheet_select_save,dataRange:[...h.luckysheet_select_save]}));let p=l.index,g=l.len,y=l.rc;if(\"addRC\"==a){let n=l.direction,a=[];if(l.restore)if(\"r\"==y){let t;\"lefttop\"==n?t=p:\"rightbottom\"==n&&(t=p+1);let l=t+g-1;for(let n=t;n<=l;n++){let t=[];for(let a=0;a<e[0].length;a++){let l=e[n][a];t.push(l)}a.push(t)}}else if(\"c\"==y){let t;\"lefttop\"==n?t=p:\"rightbottom\"==n&&(t=p+1);let l=t+g-1;for(let n=0;n<e.length;n++){let r=[];for(let a=t;a<=l;a++){let t=e[n][a];r.push(t)}a.push(r)}}yo.saveParam(\"arc\",t.currentSheetIndex,{index:p,len:g,direction:n,data:a},{rc:y})}else\"delRC\"==a&&yo.saveParam(\"drc\",t.currentSheetIndex,{index:p,len:g},{rc:y});t.flowdata=e,mn.webWorkerFlowDataCache(t.flowdata),h.data=e,t.config=n,h.config=t.config,yo.saveParam(\"all\",t.currentSheetIndex,n,{k:\"config\"});for(let e=0;e<f.length;e++){let n=f[e].r,a=f[e].c;yo.saveParam(\"v\",t.currentSheetIndex,t.flowdata[n][a],{r:n,c:a})}if(r.length>0)for(let t=0;t<r.length;t++){let n=r[t],a=n.r,l=n.c,o=n.index,i=Hn(a,l,o,e),s=wi.execfunction(i,a,l,o,null,!0);n.func=s,e[a][l].f==i&&Na(a,l,e,s[1])}h.calcChain=r,yo.saveParam(\"all\",t.currentSheetIndex,r,{k:\"calcChain\"});for(let e=0;e<m.length;e++){let n=m[e].r,a=m[e].c;yo.saveParam(\"v\",t.currentSheetIndex,t.flowdata[n][a],{r:n,c:a})}null!=o?(h.filter_select=o.filter_select,h.filter=o.filter):(h.filter_select=null,h.filter=null),al(h.filter_select,h.filter),yo.saveParam(\"all\",t.currentSheetIndex,h.filter_select,{k:\"filter_select\"}),yo.saveParam(\"all\",t.currentSheetIndex,h.filter,{k:\"filter\"}),h.luckysheet_conditionformat_save=i,yo.saveParam(\"all\",t.currentSheetIndex,h.luckysheet_conditionformat_save,{k:\"luckysheet_conditionformat_save\"}),h.luckysheet_alternateformat_save=s,yo.saveParam(\"all\",t.currentSheetIndex,h.luckysheet_alternateformat_save,{k:\"luckysheet_alternateformat_save\"}),null!=c?($l.freezenhorizontaldata=c.freezenhorizontaldata,$l.freezenverticaldata=c.freezenverticaldata):($l.freezenhorizontaldata=null,$l.freezenverticaldata=null),sl.dataVerification=u,h.dataVerification=u,yo.saveParam(\"all\",t.currentSheetIndex,h.dataVerification,{k:\"dataVerification\"}),Qr.hyperlink=d,h.hyperlink=d,yo.saveParam(\"all\",t.currentSheetIndex,h.hyperlink,{k:\"hyperlink\"}),co(t.flowdata.length,t.flowdata[0].length)}function io(e,n,a,l,r,o,i,s){let c=t.luckysheetfile[Mt(t.currentSheetIndex)];clearTimeout(ho),Bu();let u=[];if(\"{}\"==JSON.stringify(n.merge))for(let t=0;t<e.length;t++)for(let n=0;n<e[0].length;n++){let a=e[t][n];null!=a&&null!=a.mc&&(delete a.mc,u.push({r:t,c:n}))}else for(let t in n.merge){let a=n.merge[t];for(let t=a.r;t<=a.r+a.rs-1;t++)for(let n=a.c;n<=a.c+a.cs-1;n++)if(null==e[t][n]&&(e[t][n]={}),t==a.r&&n==a.c)JSON.stringify(e[t][n].mc)!=JSON.stringify(a)&&(e[t][n].mc=a,u.push({r:t,c:n}));else{let l={r:a.r,c:a.c};JSON.stringify(e[t][n].mc)!=JSON.stringify(l)&&(e[t][n].mc=l,u.push({r:t,c:n}))}}let d=[];if(t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"deleteCell\",sheetIndex:t.currentSheetIndex,ctrl:a,data:t.flowdata,curData:e,config:$.extend(!0,{},t.config),curConfig:n,mcData:u,calc:$.extend(!0,[],c.calcChain),curCalc:l,funcData:d,filterObj:{filter_select:$.extend(!0,{},c.filter_select),filter:$.extend(!0,{},c.filter)},curFilterObj:r,cf:$.extend(!0,[],c.luckysheet_conditionformat_save),curCf:o,dataVerification:$.extend(!0,{},c.dataVerification),curDataVerification:i,hyperlink:$.extend(!0,{},c.hyperlink),curHyperlink:s,range:c.luckysheet_select_save,dataRange:[...c.luckysheet_select_save]})),t.flowdata=e,mn.webWorkerFlowDataCache(t.flowdata),c.data=e,yo.allowUpdate){let n,l=a.type,r=a.str,o=a.edr,i=a.stc,s=a.edc;\"moveUp\"==l?n={row:[r,e.length-1],column:[i,s]}:\"moveLeft\"==l&&(n={row:[r,o],column:[i,e[0].length-1]}),yo.historyParam(t.flowdata,t.currentSheetIndex,n)}t.config=n,c.config=t.config,yo.saveParam(\"all\",t.currentSheetIndex,n,{k:\"config\"});for(let e=0;e<u.length;e++){let n=u[e].r,a=u[e].c;yo.saveParam(\"v\",t.currentSheetIndex,t.flowdata[n][a],{r:n,c:a})}if(l.length>0)for(let t=0;t<l.length;t++){let n=l[t],a=n.r,r=n.c,o=n.index,i=Hn(a,r,o,e),s=wi.execfunction(i,a,r,o,null,!0);n.func=s,e[a][r].f==i&&Na(a,r,e,s[1])}c.calcChain=l,yo.saveParam(\"all\",t.currentSheetIndex,l,{k:\"calcChain\"});for(let e=0;e<d.length;e++){let n=d[e].r,a=d[e].c;yo.saveParam(\"v\",t.currentSheetIndex,t.flowdata[n][a],{r:n,c:a})}null!=r?(c.filter_select=r.filter_select,c.filter=r.filter):(c.filter_select=null,c.filter=null),al(c.filter_select,c.filter),yo.saveParam(\"all\",t.currentSheetIndex,c.filter_select,{k:\"filter_select\"}),yo.saveParam(\"all\",t.currentSheetIndex,c.filter,{k:\"filter\"}),c.luckysheet_conditionformat_save=o,yo.saveParam(\"all\",t.currentSheetIndex,c.luckysheet_conditionformat_save,{k:\"luckysheet_conditionformat_save\"}),sl.dataVerification=i,c.dataVerification=i,yo.saveParam(\"all\",t.currentSheetIndex,c.dataVerification,{k:\"dataVerification\"}),Qr.hyperlink=s,c.hyperlink=s,yo.saveParam(\"all\",t.currentSheetIndex,c.hyperlink,{k:\"hyperlink\"}),ho=setTimeout((function(){uo()}),1)}function so(e,n,a){let l,r={};wi.execFunctionExist=[],clearTimeout(ho);for(let t=e.range.row[0];t<=e.range.row[1];t++)for(let n=e.range.column[0];n<=e.range.column[1];n++)t+\"_\"+n+\"_\"+e.sheetIndex in r||(r[t+\"_\"+n+\"_\"+e.sheetIndex]=0,wi.execFunctionExist.push({r:t,c:n,i:e.sheetIndex}));for(let e=n.range.row[0];e<=n.range.row[1];e++)for(let t=n.range.column[0];t<=n.range.column[1];t++)e+\"_\"+t+\"_\"+n.sheetIndex in r||(r[e+\"_\"+t+\"_\"+n.sheetIndex]=0,wi.execFunctionExist.push({r:e,c:t,i:n.sheetIndex}));if(t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"pasteCut\",source:e,target:n,RowlChange:a})),t.currentSheetIndex==e.sheetIndex?(t.config=e.curConfig,l=e.curData.length,t.luckysheetfile[Mt(n.sheetIndex)].config=n.curConfig):t.currentSheetIndex==n.sheetIndex&&(t.config=n.curConfig,l=n.curData.length,t.luckysheetfile[Mt(e.sheetIndex)].config=e.curConfig),a){t.visibledatarow=[],t.rh_height=0;for(let e=0;e<l;e++){let n=t.defaultrowlen;(null!=t.config.rowlen&&null!=t.config.rowlen[e]&&(n=t.config.rowlen[e]),null==t.config.rowhidden||null==t.config.rowhidden[e])?(t.rh_height+=n+1,t.visibledatarow.push(t.rh_height)):(n=t.config.rowhidden[e],t.visibledatarow.push(t.rh_height))}if(t.rh_height+=80,t.currentSheetIndex==e.sheetIndex){let e=ia(n.curData.length,n.curConfig);t.luckysheetfile[Mt(n.sheetIndex)].visibledatarow=e}else if(t.currentSheetIndex==n.sheetIndex){let n=ia(e.curData.length,e.curConfig);t.luckysheetfile[Mt(e.sheetIndex)].visibledatarow=n}}t.currentSheetIndex==e.sheetIndex?(t.flowdata=e.curData,t.luckysheetfile[Mt(n.sheetIndex)].data=n.curData):t.currentSheetIndex==n.sheetIndex&&(t.flowdata=n.curData,t.luckysheetfile[Mt(e.sheetIndex)].data=e.curData),mn.webWorkerFlowDataCache(t.flowdata),t.luckysheetfile[Mt(t.currentSheetIndex)].data=t.flowdata,t.currentSheetIndex==n.sheetIndex?t.luckysheet_select_save=[{row:n.range.row,column:n.range.column}]:t.luckysheet_select_save=[{row:e.range.row,column:e.range.column}],t.luckysheet_select_save.length>0&&Pu(),t.luckysheetfile[Mt(e.sheetIndex)].luckysheet_conditionformat_save=e.curCdformat,t.luckysheetfile[Mt(n.sheetIndex)].luckysheet_conditionformat_save=n.curCdformat,t.currentSheetIndex==e.sheetIndex?sl.dataVerification=e.curDataVerification:t.currentSheetIndex==n.sheetIndex&&(sl.dataVerification=n.curDataVerification),t.luckysheetfile[Mt(e.sheetIndex)].dataVerification=e.curDataVerification,t.luckysheetfile[Mt(n.sheetIndex)].dataVerification=n.curDataVerification,wi.execFunctionExist.reverse(),wi.execFunctionGroup(null,null,null,null,n.curData),wi.execFunctionGlobalData=null;let o=Mt(t.currentSheetIndex),i=t.luckysheetfile[o];i.scrollTop=$(\"#luckysheet-cell-main\").scrollTop(),i.scrollLeft=$(\"#luckysheet-cell-main\").scrollLeft(),ki.showSheet(),ho=setTimeout((function(){uo()}),1),ki.storeSheetParamALL(),yo.saveParam(\"all\",e.sheetIndex,e.curConfig,{k:\"config\"}),yo.saveParam(\"all\",n.sheetIndex,n.curConfig,{k:\"config\"}),yo.historyParam(e.curData,e.sheetIndex,{row:e.range.row,column:e.range.column}),yo.historyParam(n.curData,n.sheetIndex,{row:n.range.row,column:n.range.column}),yo.saveParam(\"all\",e.sheetIndex,e.curCdformat,{k:\"luckysheet_conditionformat_save\"}),yo.saveParam(\"all\",n.sheetIndex,n.curCdformat,{k:\"luckysheet_conditionformat_save\"}),yo.saveParam(\"all\",e.sheetIndex,e.curDataVerification,{k:\"dataVerification\"}),yo.saveParam(\"all\",n.sheetIndex,n.curDataVerification,{k:\"dataVerification\"})}function co(e,n,a=!0){ha(e,n),clearTimeout(ho),ki.storeSheetParam();let l=t.luckysheetfile[Mt(t.currentSheetIndex)].calcChain;if(null!=l&&l.length>0){null==t.config.rowlen&&(t.config.rowlen={}),null==t.config.columnlen&&(t.config.columnlen={});for(let e=0;e<l.length;e++){let n=l[e].r,a=l[e].c;if(l[e].index==t.currentSheetIndex&&null!=t.flowdata[n][a]&&null!=t.flowdata[n][a].spl&&(n in t.config.rowlen||a in t.config.columnlen)){window.luckysheetCurrentRow=n,window.luckysheetCurrentColumn=a,window.luckysheetCurrentFunction=t.flowdata[n][a].f;let e=$.trim(wi.functionParserExe(t.flowdata[n][a].f)),l=new Function(\"return \"+e)();t.flowdata[n][a].spl=l,yo.saveParam(\"v\",t.currentSheetIndex,t.flowdata[n][a],{r:n,c:a})}}t.luckysheetfile[Mt(t.currentSheetIndex)].data=t.flowdata}if(vl.positionSync(),Pu(),Bu(),$(\".luckysheet-selection-copy\").is(\":visible\")&&Vu(),$(\"#luckysheet-dropCell-icon\").is(\":visible\")&&$(\"#luckysheet-dropCell-icon\").remove(),null!=$l.freezenhorizontaldata&&null!=$l.freezenverticaldata){let e=$l.freezenhorizontaldata[1]-1,n=$l.freezenverticaldata[1]-1,a=$l.freezenhorizontaldata[2],l=$l.freezenverticaldata[2],r=t.visibledatarow[e]-2-a+t.columnHeaderHeight,o=[t.visibledatarow[e],e+1,a,$l.cutVolumn(t.visibledatarow,e+1),r],i=t.visibledatacolumn[n]-2-l+t.rowHeaderWidth,s=[t.visibledatacolumn[n],n+1,l,$l.cutVolumn(t.visibledatacolumn,n+1),i];$l.saveFreezen(o,r,s,i),$l.createFreezenHorizontal(o,r),$l.createFreezenVertical(s,i),$l.createAssistCanvas()}else if(null!=$l.freezenhorizontaldata){let e=$l.freezenhorizontaldata[1]-1,n=$l.freezenhorizontaldata[2],a=t.visibledatarow[e]-2-n+t.columnHeaderHeight,l=[t.visibledatarow[e],e+1,n,$l.cutVolumn(t.visibledatarow,e+1),a];$l.saveFreezen(l,a,null,null),$l.createFreezenHorizontal(l,a),$l.createAssistCanvas()}else if(null!=$l.freezenverticaldata){let e=$l.freezenverticaldata[1]-1,n=$l.freezenverticaldata[2],a=t.visibledatacolumn[e]-2-n+t.rowHeaderWidth,l=[t.visibledatacolumn[e],e+1,n,$l.cutVolumn(t.visibledatacolumn,e+1),a];$l.saveFreezen(null,null,l,a),$l.createFreezenVertical(l,a),$l.createAssistCanvas()}else $(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").length>0&&$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").each((function(e,n){let a=$(n).data(\"str\"),l=$(n).data(\"cindex\"),r=t.visibledatacolumn[l]-20,o=a-1==-1?0:t.visibledatarow[a-1];$(n).css({left:r,top:o})}));if($(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex).length>0){let e=t.luckysheetfile[Mt(t.currentSheetIndex)].filter_select,n=e.row[0],a=e.row[1],l=e.column[0],r=e.column[1],o=t.visibledatarow[a],i=n-1==-1?0:t.visibledatarow[n-1],s=t.visibledatacolumn[r],c=l-1==-1?0:t.visibledatacolumn[l-1];$(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex).css({left:c,width:s-c-1,top:i,height:o-i-1})}ki.showSheet(),a&&(ho=setTimeout((function(){uo()}),1))}function uo(e,n){if(wi.groupValuesRefresh(),null==e&&(e=$(\"#luckysheet-cell-main\").scrollLeft()),null==n&&(n=$(\"#luckysheet-cell-main\").scrollTop()),null!=$l.freezenverticaldata||null!=$l.freezenhorizontaldata){let a,l,r,o,i,s,c=t.luckysheetTableContentHW[0],u=t.luckysheetTableContentHW[1];null!=$l.freezenverticaldata&&null!=$l.freezenhorizontaldata?(a=$l.freezenhorizontaldata[0],l=$l.freezenhorizontaldata[1],r=$l.freezenhorizontaldata[2],o=$l.freezenverticaldata[0],i=$l.freezenverticaldata[1],s=$l.freezenverticaldata[2],jr(s,r,o,a,1,1,null,null,\"freezen_3\"),jr(e+o-s,r,c-o+s,a,1,1,null,null,\"freezen_4\"),jr(s,n+a-r,o,u-a+r,1,1,null,null,\"freezen_7\"),jr(e+o-s,n+a-r,c-o+s,u-a+r,o-s+t.rowHeaderWidth,a-r+t.columnHeaderHeight),Ur(s,o,t.rowHeaderWidth),Ur(e+o-s,c-o+s,o-s+t.rowHeaderWidth),Hr(r,a,t.columnHeaderHeight),Hr(n+a-r,u-a+r,a-r+t.columnHeaderHeight)):null!=$l.freezenhorizontaldata?(a=$l.freezenhorizontaldata[0],l=$l.freezenhorizontaldata[1],r=$l.freezenhorizontaldata[2],jr(e,r,c,a,1,1,null,null,\"freezen_h\"),jr(e,n+a-r,c,u-a+r,null,a-r+t.columnHeaderHeight),Ur(e,c,null),Hr(r,a,t.columnHeaderHeight),Hr(n+a-r,u-a+r,a-r+t.columnHeaderHeight)):null!=$l.freezenverticaldata&&(o=$l.freezenverticaldata[0],i=$l.freezenverticaldata[1],s=$l.freezenverticaldata[2],jr(s,n,o,u,1,1,null,null,\"freezen_v\"),jr(e+o-s,n,c-o+s,u,o-s+t.rowHeaderWidth,null),Hr(n,u,null),Ur(s,o,t.rowHeaderWidth),Ur(e+o-s,c-o+s,o-s+t.rowHeaderWidth))}else{if(0==$(\"#luckysheetTableContent\").length)return;let a=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");jr(e,n),Ur(e),Hr(n),a.clearRect(0,0,t.rowHeaderWidth*t.devicePixelRatio-1,t.columnHeaderHeight*t.devicePixelRatio-1)}}var ho,fo=y((()=>{fa(),Ci(),gn(),Pa(),Yn(),da(),eo(),Al(),_o(),_i(),wl(),cl(),to(),Xu(),ol(),qt(),x(),ho=null}));var mo,po,go,yo,vo,bo,ko,wo,xo=y((()=>{})),_o=y((()=>{mo=k(dn()),pn(),fo(),gn(),Et(),_i(),ed(),ol(),Al(),wl(),il(),cl(),to(),_d(),qt(),x(),Xu(),K(),po=k(ma()),Qa(),w(),xo(),kl(),yo=go={gridKey:null,loadUrl:null,updateUrl:null,updateImageUrl:null,title:null,loadSheetUrl:null,retryTimer:null,allowUpdate:!1,historyParam:function(e,t,n){let a=this,l=n.row[0],r=n.row[1],o=n.column[0],i=n.column[1];if(l==r&&o==i){let n=e[l][o];a.saveParam(\"v\",t,n,{r:l,c:o})}else{let n=r-l+1,s=i-o+1,c=Math.floor(1e3/s),u=Math.ceil(n/c);for(let n=0;n<u;n++){let s,d=l+c*n;s=n==u-1?r:l+c*(n+1)-1;let h=[];for(let t=d;t<=s;t++){let n=[];for(let a=o;a<=i;a++)null==e[t]?n.push(null):n.push(e[t][a]);h.push(n)}a.saveParam(\"rv\",t,h,{range:{row:[d,s],column:[o,i]}}),n==u-1&&a.saveParam(\"rv_end\",t,null)}}},saveParam:function(t,n,a,l){let r=this;if(!r.allowUpdate)return;null==a&&(a=null);let o={};if(o.t=t,o.i=n,o.v=a,\"shs\"===t)return;\"rv\"==t?o.range=l.range:\"v\"==t||\"fu\"==t||\"fm\"==t?(o.r=l.r,o.c=l.c):\"fc\"==t?(o.op=l.op,o.pos=l.pos):\"drc\"==t||\"arc\"==t||\"h\"==t||\"wh\"==t?o.rc=l.rc:\"c\"==t?(o.cid=l.cid,o.op=l.op):\"f\"==t?(o.op=l.op,o.pos=l.pos):\"s\"==t||(\"sh\"==t?(o.op=l.op,null!=l.cur&&(o.cur=l.cur)):(\"cg\"==t||\"all\"==t)&&(o.k=l.k));let i=e.imageUpdateMethodConfig;if(\"{}\"!==JSON.stringify(i))if(\"images\"!=o.k){let e=mo.default.gzip(encodeURIComponent(JSON.stringify(o)),{to:\"string\"});null!=r.websocket&&r.websocket.send(e)}else(function(e,t,n){return new Promise(((a,l)=>{let r=new XMLHttpRequest||new ActiveXObject(\"Microsoft.XMLHTTP\");r.open(e,t),r.send(JSON.stringify(n)),r.onreadystatechange=function(){4==r.readyState&&(200==r.status?a(r.responseText):l(\"error\"))}}))})(i.method,i.url,o).then((e=>{console.log(e)})).catch((e=>{console.log(e)}));else{let e=mo.default.gzip(encodeURIComponent(JSON.stringify(o)),{to:\"string\"});null!=r.websocket&&r.websocket.send(e)}},websocket:null,wxErrorCount:0,openWebSocket:function(){let e=this;if(\"WebSocket\"in window){let n=e.updateUrl+\"?t=111&g=\"+encodeURIComponent(e.gridKey);e.updateUrl.indexOf(\"?\")>-1&&(n=e.updateUrl+\"&t=111&g=\"+encodeURIComponent(e.gridKey)),e.websocket=new WebSocket(n),e.websocket.onopen=function(){console.info(X().websocket.success),fn(),e.wxErrorCount=0,e.retryTimer=setInterval((function(){e.websocket.send(\"rub\")}),6e4)},e.websocket.onmessage=function(n){t.result=n;let a=new Function(\"return \"+n.data)();yl.createHookFunction(\"cooperativeMessage\",a),console.info(a);let l=a.type,{message:r,id:o}=a;if(\"用户退出\"===r&&($(\"#luckysheet-multipleRange-show-\"+o).hide(),t.cooperativeEdit.changeCollaborationSize=t.cooperativeEdit.changeCollaborationSize.filter((e=>e.id!=o)),t.cooperativeEdit.checkoutData=t.cooperativeEdit.checkoutData.filter((e=>e.id!=o))),1==l){let e=a.data.v.index,n=t.luckysheetfile.filter((t=>t.index===e))[0];null!==n&&setTimeout((()=>{let l=a.data.i;n.index=l,t.currentSheetIndex=l,$(`#luckysheet-sheets-item${e}`).attr(\"data-index\",l),$(`#luckysheet-sheets-item${e}`).prop(\"id\",`luckysheet-sheets-item${l}`),$(`#luckysheet-datavisual-selection-set-${e}`).prop(\"id\",`luckysheet-datavisual-selection-set-${l}`)}),1)}else if(2==l){let t=JSON.parse(a.data);e.wsUpdateMsg(t);let n=JSON.parse(a.data);(\"columnlen\"==n.k||\"rowlen\"==n.k)&&Bu(n.v)}else if(3==l){let n=a.id,l=a.username,r=JSON.parse(a.data),o=(r.t,r.i),i=r.v;0===t.cooperativeEdit.changeCollaborationSize.length&&t.cooperativeEdit.changeCollaborationSize.push({id:n,v:r.v[0],i:o}),t.cooperativeEdit.changeCollaborationSize.some((e=>e.id==n))?t.cooperativeEdit.changeCollaborationSize.forEach((e=>{e.id==n&&(e.v=r.v[0]||r.range[0],e.i=o)})):t.cooperativeEdit.changeCollaborationSize.push({id:n,v:r.v[0],i:o}),\"array\"!=ad(i)&&\"object\"!==ad(i)&&(i=JSON.parse(i));let s=0,c=0;if(o==t.currentSheetIndex?\"object\"===ad(i)&&\"enterEdit\"===i.op?(s=i.range[i.range.length-1].row[0],c=i.range[i.range.length-1].column[0],e.multipleRangeShow(n,l,s,c,i.op)):(s=i[i.length-1].row[0],c=i[i.length-1].column[0],e.multipleRangeShow(n,l,s,c)):\"object\"===ad(i)&&\"enterEdit\"===i.op?(s=i.range[i.range.length-1].row[0],c=i.range[i.range.length-1].column[0]):(s=i[i.length-1].row[0],c=i[i.length-1].column[0]),0===t.cooperativeEdit.checkoutData.length&&(i.op?t.cooperativeEdit.checkoutData.push({id:n,username:l,r:s,c:c,op:i.op,index:o}):t.cooperativeEdit.checkoutData.push({id:n,username:l,r:s,c:c,index:o})),t.cooperativeEdit.checkoutData.some((e=>e.id==n))?t.cooperativeEdit.checkoutData.forEach((e=>{e.id==n&&(e.username=l,e.r=s,e.c=c,e.index=o,\"enterEdit\"===i.op&&(e.op=i.op))})):\"enterEdit\"===i.op?t.cooperativeEdit.checkoutData.push({id:n,username:l,r:s,c:c,op:i.op,index:o}):t.cooperativeEdit.checkoutData.push({id:n,username:l,r:s,c:c,index:o}),t.cooperativeEdit.checkoutData.forEach((e=>{e.index!=t.currentSheetIndex&&($(\"#luckysheet-multipleRange-show-\"+e.id).hide(),e.op)})),$(\"#luckysheet-multipleRange-show-\"+n)[0]){let e=$(\"#luckysheet-multipleRange-show-\"+n)[0].offsetHeight-1;$(\"#luckysheet-multipleRange-show-\"+n+\">.username\").css({bottom:e+\"px\"})}}else if(4==l){let t=\"\"===a.data?a.data:JSON.parse(a.data);for(let n=0;n<t.length;n++)e.wsUpdateMsg(item[n])}else 5==l?hn(a.data):6==l&&fn()},e.websocket.onerror=function(){e.wxErrorCount++,e.wxErrorCount>3?hn(X().websocket.refresh):(hn(X().websocket.wait),e.openWebSocket())},e.websocket.onclose=function(t){console.info(X().websocket.close),1e3===t.code?(clearInterval(e.retryTimer),e.retryTimer=null):alert(X().websocket.contact)}}else alert(X().websocket.support)},wsUpdateMsg:function(e){let n=e.t,a=e.i,l=e.v,r=t.luckysheetfile[Mt(a)];if(![\"v\",\"rv\",\"cg\",\"all\",\"fc\",\"drc\",\"arc\",\"f\",\"fsc\",\"fsr\",\"sh\",\"c\"].includes(n)||null!=r)if(\"v\"==n){if(null==r.data||0==r.data.length)return;let n=e.r,o=e.c;r.data[n][o]=l,a==t.currentSheetIndex&&(t.flowdata=r.data,mn.webWorkerFlowDataCache(t.flowdata),null!=l&&null!=l.ps?vl.buildPs(n,o,l.ps):vl.buildPs(n,o,null),setTimeout((function(){uo()}),1))}else if(\"rv\"==n){if(Object.keys(e.range).length>0&&(t.cooperativeEdit.merge_range=e.range,t.cooperativeEdit.merge_range.v=e.v,Bu()),null==r.data||0==r.data.length)return;let n=e.range.row[0],o=e.range.row[1],i=e.range.column[0],s=e.range.column[1];for(let e=n;e<=o;e++)for(let t=i;t<=s;t++)r.data[e][t]=l[e-n][t-i];if(a==t.currentSheetIndex){t.flowdata=r.data,mn.webWorkerFlowDataCache(t.flowdata);for(let e=n;e<=o;e++)for(let t=i;t<=s;t++)null!=l[e-n][t-i]&&null!=l[e-n][t-i].ps?vl.buildPs(e,t,l[e-n][t-i].ps):vl.buildPs(e,t,null);setTimeout((function(){uo()}),1)}}else if(\"cg\"==n){let n=e.k;\"borderInfo\"==n?r.config.borderInfo=l:(n in r.config||(r.config[n]={}),l&&\"object\"==typeof l&&(r.config[n]=l)),a==t.currentSheetIndex&&(t.config=r.config,(\"rowlen\"==n||\"columnlen\"==n||\"rowhidden\"==n)&&co(t.flowdata.length,t.flowdata[0].length),setTimeout((function(){uo()}),1))}else if(\"all\"==n){let n=e.k;if(r[n]=l,\"name\"==n)$(\"#luckysheet-sheet-container-c #luckysheet-sheets-item\"+a).find(\"span.luckysheet-sheets-item-name\").html(l);else if(\"color\"==n){let e=$(\"#luckysheet-sheet-container-c #luckysheet-sheets-item\"+a);e.find(\".luckysheet-sheets-item-color\").remove(),(null!=l||\"\"!=l)&&e.append('<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+l+';\"></div>')}else if(\"pivotTable\"!=n)if(\"frozen\"==n){if($l.frozenTofreezen(),a==t.currentSheetIndex){let e=X().freezen;null==r.freezen.horizontal?($(\"#luckysheet-freezen-btn-horizontal\").html('<i class=\"fa fa-list-alt\"></i> '+e.freezenRow),$l.freezenhorizontaldata=null,$(\"#luckysheet-freezebar-horizontal\").hide()):$l.createFreezenHorizontal(r.freezen.horizontal.freezenhorizontaldata,r.freezen.horizontal.top),null==r.freezen.vertical?($(\"#luckysheet-freezen-btn-vertical\").html('<i class=\"fa fa-indent\"></i> '+e.freezenColumn),$l.freezenverticaldata=null,$(\"#luckysheet-freezebar-vertical\").hide()):$l.createFreezenVertical(r.freezen.vertical.freezenverticaldata,r.freezen.vertical.left),$l.createAssistCanvas(),setTimeout((function(){uo()}),1)}}else\"filter_select\"==n?a==t.currentSheetIndex&&al(l):\"filter\"==n?a==t.currentSheetIndex&&al(r.filter_select,l):\"luckysheet_conditionformat_save\"==n||\"luckysheet_alternateformat_save\"==n?a==t.currentSheetIndex&&setTimeout((function(){uo()}),1):\"config\"==n?a==t.currentSheetIndex&&(t.config=l,co(t.flowdata.length,t.flowdata[0].length)):\"dynamicArray\"==n?a==t.currentSheetIndex&&setTimeout((function(){uo()}),1):\"images\"==n?a==t.currentSheetIndex&&(rl.images=l,rl.allImagesShow(),rl.init()):\"dataVerification\"==n?a==t.currentSheetIndex&&(sl.dataVerification=l,sl.init()):\"hyperlink\"==n&&a==t.currentSheetIndex&&(Qr.hyperlink=l,Qr.init())}else if(\"fc\"==n){let t=e.op;e.pos;\"object\"!=ad(l)&&(l=new Function(\"return \"+l)());let n=l.r,o=l.c,i=null==r.calcChain?[]:r.calcChain;if(\"add\"==t)i.push(l);else if(\"del\"==t)for(let e=0;e<i.length;e++)n==i[e].r&&o==i[e].c&&a==i[e].index&&i.splice(e,1);setTimeout((function(){uo()}),1)}else if(\"drc\"==n){if(null==r.data||0==r.data.length)return;let n=e.rc,o=l.index,i=l.len,s=l.mc,c=l.borderInfo,u=r.data;if(\"r\"==n){r.row-=i,u.splice(o,i);let e=[];for(let t=0;t<u[0].length;t++)e.push(null);for(let t=0;t<i;t++)u.push(e)}else{r.column-=i;let e=[];for(let t=0;t<i;t++)e.push(null);for(let t=0;t<u.length;t++)u[t].splice(o,i),u[t]=u[t].concat(e)}for(let e in s){let t=s[e].r,n=s[e].c;u[t][n].mc=s[e]}r.config.merge=s,r.config.borderInfo=c,a==t.currentSheetIndex&&(t.flowdata=u,mn.webWorkerFlowDataCache(t.flowdata),t.config.merge=s,t.config.borderInfo=c,setTimeout((function(){uo()}),1))}else if(\"arc\"==n){if(null==r.data||0==r.data.length)return;let n=e.rc,o=l.index,i=l.len,s=l.data,c=l.direction,u=l.mc,d=l.borderInfo,h=$.extend(!0,[],r.data);if(\"r\"==n){r.row+=i;let e=[];for(let t=0;t<h[0].length;t++)e.push(null);let t=[];for(let n=0;n<i;n++)null==s[n]?t.push(JSON.stringify(e)):t.push(JSON.stringify(s[n]));\"lefttop\"==c?0==o?new Function(\"data\",\"return data.unshift(\"+t.join(\",\")+\")\")(h):new Function(\"data\",\"return data.splice(\"+o+\", 0, \"+t.join(\",\")+\")\")(h):new Function(\"data\",\"return data.splice(\"+(o+1)+\", 0, \"+t.join(\",\")+\")\")(h)}else{r.column+=i;for(let e=0;e<h.length;e++)for(let t=0;t<i;t++)\"lefttop\"==c?h[e].splice(o,0,s[t]):h[e].splice(o+1,0,s[t])}for(let e in u){let t=u[e].r,n=u[e].c;h[t][n].mc=u[e]}r.data=h,r.config.merge=u,r.config.borderInfo=d,a==t.currentSheetIndex&&(t.flowdata=h,mn.webWorkerFlowDataCache(t.flowdata),t.config.merge=u,t.config.borderInfo=d,setTimeout((function(){uo()}),1))}else if(\"f\"==n){let n=e.op,o=e.pos,i=r.filter;null==i&&(i={}),\"upOrAdd\"==n?i[o]=l:\"del\"==n&&delete i[o],a==t.currentSheetIndex&&al(r.filter_select,i)}else if(\"fsc\"==n)r.filter=null,r.filter_select=null,a==t.currentSheetIndex&&($(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex+\", #luckysheet-filter-options-sheet\"+t.currentSheetIndex).remove(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide());else if(\"fsr\"==n)r.filter=l.filter,r.filter_select=l.filter_select,a==t.currentSheetIndex&&al(r.filter_select,r.filter);else if(\"sha\"==n){t.luckysheetfile.push(l);let e=\"\";null!=l.color&&(e='<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+l.color+';\"></div>'),$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:l.index,active:\"\",name:l.name,style:\"\",colorset:e})),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+l.index+'\" class=\"luckysheet-datavisual-selection-set\"></div>'),ki.locationSheet()}else if(\"shc\"==n){let e=l.copyindex,n=l.name,r=Mt(e),o=$.extend(!0,{},t.luckysheetfile[r]);o.index=a,o.name=n,t.luckysheetfile.splice(r+1,0,o);let i=$(\"#luckysheet-sheets-item\"+e);$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:o.index,active:\"\",name:o.name,style:\"\",colorset:\"\"})),$(\"#luckysheet-sheets-item\"+o.index).insertAfter(i),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+o.index+'\" class=\"luckysheet-datavisual-selection-set\"></div>')}else if(\"shd\"==n){for(let e=0;e<t.luckysheetfile.length;e++)if(t.luckysheetfile[e].index==l.deleIndex){if(t.currentSheetIndex===l.deleIndex){let e=l.deleIndex;t.luckysheetfile[ki.getSheetIndex(e)].hide=1;let n=$(\"#luckysheet-sheets-item\"+e);n.hide(),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\");let a=n.nextAll(\":visible\");a=n.nextAll(\":visible\").length>0?a.eq(0).data(\"index\"):n.prevAll(\":visible\").eq(0).data(\"index\"),$(\"#luckysheet-sheets-item\"+a).addClass(\"luckysheet-sheets-item-active\"),ki.changeSheetExec(a)}go.sheetDeleSave.push(t.luckysheetfile[e]),t.luckysheetfile.splice(e,1);break}$(\"#luckysheet-sheets-item\"+l.deleIndex).remove(),$(\"#luckysheet-datavisual-selection-set-\"+l.deleIndex).remove(),ki.locationSheet()}else if(\"shr\"==n)for(let e in l)t.luckysheetfile[Mt(e)].order=l[e];else if(\"shre\"==n){for(let e=0;e<go.sheetDeleSave.length;e++)if(go.sheetDeleSave[e].index==l.reIndex){let n=go.sheetDeleSave[e];t.luckysheetfile.push(n);let a=\"\";null!=l.color&&(a='<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+n.color+';\"></div>'),$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:n.index,active:\"\",name:n.name,style:\"\",colorset:a})),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+n.index+'\" class=\"luckysheet-datavisual-selection-set\"></div>');break}}else if(\"sh\"==n){let n=e.op,l=e.cur;\"hide\"==n?(r.hide=1,$(\"#luckysheet-sheets-item\"+a).hide(),a==t.currentSheetIndex&&($(\"#luckysheet-sheets-item\"+l).addClass(\"luckysheet-sheets-item-active\"),ki.changeSheetExec(l))):\"show\"==n&&(r.hide=0,$(\"#luckysheet-sheets-item\"+a).show()),ki.locationSheet()}else if(\"c\"==n){let t=e.op,n=e.cid;if(\"add\"==t)r.chart.push(l),luckysheet.insertChartTosheet(l.sheetIndex,l.dataSheetIndex,l.option,l.chartType,l.selfOption,l.defaultOption,l.row,l.column,l.chart_selection_color,l.chart_id,l.chart_selection_id,l.chartStyle,l.rangeConfigCheck,l.rangeRowCheck,l.rangeColCheck,l.chartMarkConfig,l.chartTitleConfig,l.winWidth,l.winHeight,l.scrollLeft1,l.scrollTop1,l.chartTheme,l.myWidth,l.myHeight,l.myLeft,l.myTop,l.myindexrank1,!0);else if(\"xy\"==t||\"wh\"==t||\"update\"==t)for(let e=0;e<r.chart.length;e++){let t=r.chart[e];if(t.chart_id==n){for(let e in t)for(let n in l)e==n&&(t[e]=l[n]);return void ki.saveChart(t)}}else if(\"del\"==t)for(let e=0;e<r.chart.length;e++)if(r.chart[e].chart_id==n)return r.chart.splice(e,1),$(\"#\"+n).remove(),void ki.delChart($(\"#\"+n).attr(\"chart_id\"),$(\"#\"+n).attr(\"sheetIndex\"))}else\"na\"==n&&$(\"#luckysheet_info_detail_input\").val(l).css(\"width\",10*sd(l))},multipleIndex:0,multipleRangeShow:function(e,n,a,l,r){let o=this,i=n,s=t.visibledatarow[a],c=a-1==-1?0:t.visibledatarow[a-1],u=t.visibledatacolumn[l],d=l-1==-1?0:t.visibledatacolumn[l-1],h=Yu.mergeborer(t.flowdata,a,l);if(h&&(s=h.row[1],c=h.row[0],u=h.column[1],d=h.column[0]),d<=0&&(d+=1),c<=0&&(c+=1),sd(n)>16&&(n=sd(n,16)+\"...\"),\"enterEdit\"===r&&(n+=\" \"+X().edit.typing),$(\"#luckysheet-multipleRange-show-\"+e).length>0)$(\"#luckysheet-multipleRange-show-\"+e).css({position:\"absolute\",left:d-1,width:u-d-1,top:c-1,height:s-c-1}),$(\"#luckysheet-multipleRange-show-\"+e+\" .username\").text(n),$(\"#luckysheet-multipleRange-show-\"+e+\" .username\").show(),null!=t.cooperativeEdit.usernameTimeout[\"user\"+e]&&clearTimeout(t.cooperativeEdit.usernameTimeout[\"user\"+e]),t.cooperativeEdit.usernameTimeout[\"user\"+e]=setTimeout((()=>{clearTimeout(t.cooperativeEdit.usernameTimeout[\"user\"+e]),t.cooperativeEdit.usernameTimeout[\"user\"+e]=null}),1e4);else{let a=`<div\\n\\t\\t\\t\\t\\t\\t\\t\\tid=\"luckysheet-multipleRange-show-${e}\"\\n\\t\\t\\t\\t\\t\\t\\t\\tclass=\"luckysheet-multipleRange-show\"\\n\\t\\t\\t\\t\\t\\t\\t\\tdata-color=\"${$t[o.multipleIndex]}\"\\n\\t\\t\\t\\t\\t\\t\\t\\ttitle=\"${i}\"\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle=\"position: absolute;left: ${d-1}px;width: ${u-d-1}px;top: ${c-1}px;height: ${s-c-1}px;border: 1px solid ${$t[o.multipleIndex]};z-index: 15;\">\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t<div class=\"username\" style=\"height: 19px;line-height:19px;width: max-content;position: absolute;bottom: ${s-c-1}px;right: 0;background-color: ${$t[o.multipleIndex]};color:#ffffff;padding:0 10px;\">\\n\\t\\t\\t\\t\\t\\t\\t\\t${n}\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t<div style=\"width: 100%;height: 100%;position: absolute;top: 0;right: 0;bottom: 0;left: 0;opacity: 0.03;background-color: ${$t[o.multipleIndex]}\">\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\n\\t\\t\\t\\t\\t\\t\\t</div>`;$(a).appendTo($(\"#luckysheet-cell-main #luckysheet-multipleRange-show\")),o.multipleIndex++,null!=t.cooperativeEdit.usernameTimeout[\"user\"+e]&&clearTimeout(t.cooperativeEdit.usernameTimeout[\"user\"+e]),t.cooperativeEdit.usernameTimeout[\"user\"+e]=setTimeout((()=>{clearTimeout(t.cooperativeEdit.usernameTimeout[\"user\"+e]),t.cooperativeEdit.usernameTimeout[\"user\"+e]=null}),1e4)}},sheetDeleSave:[],submitInterval:1e3,imagesubmitInterval:5e3,submitdatalimit:50,submitcompresslimit:1e3,checksubmit:function(e){let t=this;t.submitTimeout(),clearTimeout(t.imageRequestTimeout),t.imageRequestTimeout=setTimeout((function(){t.imageRequest()}),t.imagesubmitInterval)},submitTimeout:function(){let e=this;clearTimeout(e.requestTimeOut),!e.requestLock&&null!=e.requestlast&&e.requestlast.clone().add(1,\"seconds\").isBefore((0,po.default)())&&e.request(),e.requestTimeOut=setTimeout((function(){e.submitTimeout()}),e.submitInterval)},requestLock:!1,requestlast:null,firstchange:!0,requestTimeOut:null,request:function(){let e=this;this.gridKey;e.cachelocaldata((function(t,n){if(0==n.length)return;(n=encodeURIComponent(JSON.stringify(n))).length;e.requestLock=!0,\"\"!=e.updateUrl&&$.post(e.updateUrl,{compress:!1,gridKey:e.gridKey,data:n},(function(t){new Function(\"return \"+t)().status?($(\"#luckysheet_info_detail_update\").html(\"最近存档时间:\"+(0,po.default)().format(\"M-D H:m:s\")),$(\"#luckysheet_info_detail_save\").html(\"同步成功\"),e.clearcachelocaldata()):($(\"#luckysheet_info_detail_save\").html(\"<span style='color:#ff2121'>同步失败</span>\"),e.restorecachelocaldata()),e.requestlast=(0,po.default)(),e.requestLock=!1}))}))},imageRequestLast:null,imageRequestLock:!1,imageRequestTimeout:null,imageRequest:function(){let e=this;html2canvas($(\"#\"+container).find(\".luckysheet-grid-window\").get(0),{onrendered:function(t){let n=$(t).appendTo(\"body\");n.hide();let a=n.width(),l=n.height(),r=n.get(0).getContext(\"2d\").getImageData(0,0,a,l),o=a,i=l;.54*o>i?o=i/.54:i=.54*o;let s=$(\"<canvas>\").attr(\"width\",o).attr(\"height\",i)[0];s.getContext(\"2d\").putImageData(r,0,0),n.attr(\"width\",350),n.attr(\"height\",189),n.get(0).getContext(\"2d\").drawImage(s,0,0,350,189);let c=n.get(0).toDataURL(\"image/jpeg\",.9),u=luckysheet.sheetmanage.getCurSheetnoset();e.imageRequestLock=!0;let d=encodeURIComponent(JSON.stringify({t:\"thumb\",img:c,curindex:u}));n.remove(),\"\"!=e.updateImageUrl&&$.post(e.updateImageUrl,{compress:!1,gridKey:e.gridKey,data:d},(function(t){new Function(\"return \"+t)().status?imageRequestLast=(0,po.default)():$(\"#luckysheet_info_detail_save\").html(\"<span style='color:#ff2121'>网络不稳定</span>\"),e.imageRequestLock=!0}))}})},localdata:[],matchOpt:function(e,t){for(let n in e){if(\"t\"==n&&e.t in{drc:1,arc:1,sha:1,shc:1,shd:1})return!1;if(\"v\"!=n&&(!(n in t)||t[n]!=e[n]))return!1}return!0},deleteRepeatOpt:function(e,t){let n=e,a=this;if(t instanceof Array)for(let l=0;l<t.length;l++){let r=t[l];for(let t=0;t<n.length;t++){let o=e[l];a.matchOpt(r,o)&&delete n[t]}}else for(let e=0;e<n.length;e++){let l=n[e];a.matchOpt(t,l)&&delete n[e]}let l=[];for(let e=0;e<n.length;e++)null!=n[e]&&l.push(n[e]);return l},setlocaldata:function(e,t){this.gridKey;let n=this;n.getlocaldata((function(a){null==a&&(a=[]),e instanceof Array?a=a.concat(e):a.push(e),n.localdata=a,t(n.localdata)}))},getlocaldata:function(e){this.gridKey;e(this.localdata)},clearlocaldata:function(e){this.gridKey;this.localdata=[],e()},cachelocaldata:function(e){let t=this,n=this.gridKey+\"__qkcache\",a=t.localdata,l=a.length;if(l>1){let e=[];e[0]=a[0];for(let n=1;n<l;n++){let l=a[n],r=!0;for(let n=0;n<e.length;n++){let a=e[n];if(t.matchOpt(l,a)){e.splice(n,1,l),r=!1;break}}r&&(e=e.concat(l))}a=e}null==a||0==a.length||t.clearlocaldata((function(){localforage.setItem(n,a).then((function(){e(n,a)}))}))},clearcachelocaldata:function(e){let t=this.gridKey+\"__qkcache\";localforage.removeItem(t,(function(t,n){e&&\"function\"==typeof e&&e()}))},restorecachelocaldata:function(e){let t=this.gridKey+\"__qkcache\",n=this;localforage.getItem(t).then((function(t){let a=t;n.getlocaldata((function(t){null==t&&(t=[]);let l=a.concat(t);n.localdata=l,e instanceof Function&&e(n.localdata)}))}))},keepHighLightBox:function(){t.cooperativeEdit.checkoutData.forEach((e=>{e.index==t.currentSheetIndex&&(\"enterEdit\"===e.op?go.multipleRangeShow(e.id,e.username,e.r,e.c,e.op):go.multipleRangeShow(e.id,e.username,e.r,e.c))}))}}})),Co=y((()=>{Et(),Yt(),_d(),K(),_o(),vo={info:function(e,t){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-info\").remove();let n=X().button;$(\"body\").append(nd(kt,{id:\"luckysheet-info\",addclass:\"\",title:e,content:t,botton:'<button class=\"btn btn-default luckysheet-model-close-btn\">&nbsp;&nbsp;'+n.close+\"&nbsp;&nbsp;</button>\",style:\"z-index:100003\"}));let a=$(\"#luckysheet-info\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),l=a.outerHeight(),r=a.outerWidth(),o=$(window).width(),i=$(window).height(),s=$(document).scrollLeft(),c=$(document).scrollTop();$(\"#luckysheet-info\").css({left:(o+s-r)/2,top:(i+c-l)/3}).show()},confirm:function(e,t,n,a,l,r){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-confirm\").remove();let o=X().button;null==l&&(l=o.confirm),null==r&&(r=o.cancel),$(\"body\").append(nd(kt,{id:\"luckysheet-confirm\",addclass:\"\",style:\"z-index:100003\",title:e,content:t,botton:'<button class=\"btn btn-primary luckysheet-model-conform-btn\">&nbsp;&nbsp;'+l+'&nbsp;&nbsp;</button><button class=\"btn btn-default luckysheet-model-cancel-btn\">&nbsp;&nbsp;'+r+\"&nbsp;&nbsp;</button>\"}));let i=$(\"#luckysheet-confirm\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),s=i.outerHeight(),c=i.outerWidth(),u=$(window).width(),d=$(window).height(),h=$(document).scrollLeft(),f=$(document).scrollTop();$(\"#luckysheet-confirm\").css({left:(u+h-c)/2,top:(d+f-s)/3}).show(),i.find(\".luckysheet-model-conform-btn\").click((function(){\"function\"==typeof n&&n(),yo.keepHighLightBox(),$(\"#luckysheet-confirm\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide()})),i.find(\".luckysheet-model-cancel-btn\").click((function(){\"function\"==typeof a&&a(),$(\"#luckysheet-confirm\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide()}))},screenshot:function(e,t,n){let a=X().screenshot;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-confirm\").remove(),$(\"body\").append(nd(kt,{id:\"luckysheet-confirm\",addclass:\"\",style:\"z-index:100003\",title:e,content:t,botton:'<a style=\"text-decoration:none;color:#fff;\" class=\"download btn btn-primary luckysheet-model-conform-btn\">&nbsp;&nbsp;'+a.downLoadBtn+'&nbsp;&nbsp;</a>&nbsp;&nbsp;<button class=\"btn btn-primary luckysheet-model-copy-btn\">&nbsp;&nbsp;'+a.downLoadCopy+'&nbsp;&nbsp;</button><button class=\"btn btn-default luckysheet-model-cancel-btn\">&nbsp;&nbsp;'+a.downLoadClose+\"&nbsp;&nbsp;</button>\"}));let l=$(\"#luckysheet-confirm\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),r=l.outerHeight(),o=l.outerWidth(),i=$(window).width(),s=$(window).height(),c=$(document).scrollLeft(),u=$(document).scrollTop();$(\"#luckysheet-confirm\").css({left:(i+c-o)/2,top:(s+u-r)/3}).show(),l.find(\".luckysheet-model-conform-btn\").click((function(){\"1\"==Gt.isIE()?alert(a.browserNotTip):(window.ActiveXObject||\"ActiveXObject\"in window)&&(0===$(\"#IframeReportImg\").length&&$('<iframe style=\"display:none;\" id=\"IframeReportImg\" name=\"IframeReportImg\" onload=\"downloadImg();\" width=\"0\" height=\"0\" src=\"about:blank\"></iframe>').appendTo(\"body\"),$(\"#IframeReportImg\").attr(\"src\")!=n?$(\"#IframeReportImg\").attr(\"src\",n):\"about:blank\"!=$(\"#IframeReportImg\").src&&window.frames.IframeReportImg.document.execCommand(\"SaveAs\"))})),l.find(\".luckysheet-model-cancel-btn\").click((function(){$(\"#luckysheet-confirm\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide()})),$(\"#luckysheet-confirm .luckysheet-model-copy-btn\").click((function(){let e=new clipboard.DT;e.setData(\"text/html\",\"<img src='\"+n+\"'>\"),\"1\"==Gt.isIE()?alert(a.rightclickTip):(clipboard.write(e),alert(a.successTip))}))},chartPointConfig:function(e,t,n){$(\"body\").append(nd(kt,{id:e,addclass:\"luckysheet-chart-point-config-c\",title:\"数据点批量设置\",content:_t,botton:'<button class=\"btn btn-danger luckysheet-model-save-btn\">&nbsp;&nbsp;保存设置&nbsp;&nbsp;</button><button class=\"btn btn-default luckysheet-model-close-btn\">&nbsp;&nbsp;取消&nbsp;&nbsp;</button>',style:\"z-index:100003;height:80%;width:80%;top:10%;left:10%;\"})),$(\"#luckysheet-modal-dialog-mask\").show();let a=$(window).width(),l=$(window).height();$(\"#\"+e).find(\".luckysheet-chart-point-config\").css(\"height\",l-160),$(\"#\"+e).css({height:l-90,width:a-100,left:7,top:14}).show().find(\".luckysheet-model-save-btn\").click((function(){\"function\"==typeof t&&t(),$(\"#\"+e).hide(),$(\"#luckysheet-modal-dialog-mask\").hide()})),$(\"#\"+e).find(\".luckysheet-model-save-btn\").click((function(){\"function\"==typeof n&&n(),$(\"#\"+e).hide(),$(\"#luckysheet-modal-dialog-mask\").hide()}))},sheetConfig:function(){},hoverTipshowState:!1,hoverTipshowTimeOut:null,createHoverTip:function(e,t){let n=this;$(e).on(\"mouseover\",t,(function(e){n.hoverTipshowState||(clearTimeout(n.hoverTipshowTimeOut),n.hoverTipshowTimeOut=setTimeout((function(){let t=$(e.currentTarget),n=t.offset(),a=$(\"#luckysheet-tooltip-up\"),l=t.data(\"tips\");if((null==l||0==l.length)&&(l=t.prev().data(\"tips\"),null==l||0==l.length))return;0==a.length&&($(\"body\").append(Ct),a=$(\"#luckysheet-tooltip-up\")),a.removeClass(\"jfk-tooltip-hide\").find(\"div.jfk-tooltip-contentId\").html(l);let r=a.outerWidth();a.find(\"div.jfk-tooltip-arrow\").css(\"left\",r/2);let o=n.left+(t.outerWidth()-r)/2;o<2&&(o=2,a.find(\"div.jfk-tooltip-arrow\").css(\"left\",t.outerWidth()/2)),a.css({top:n.top+t.outerHeight()+1,left:o})}),300))})).on(\"mouseout\",t,(function(e){n.hoverTipshowState=!1,clearTimeout(n.hoverTipshowTimeOut),$(\"#luckysheet-tooltip-up\").addClass(\"jfk-tooltip-hide\")})).on(\"click\",t,(function(e){n.hoverTipshowState=!0,clearTimeout(n.hoverTipshowTimeOut),$(\"#luckysheet-tooltip-up\").addClass(\"jfk-tooltip-hide\")}))},popover:function(e,t,n,a,l,r){let o=X(),i=o.button,s=o.paint;null==l&&(l=i.close);let c='<div id=\"luckysheetpopover\" class=\"luckysheetpopover\"><div class=\"luckysheetpopover-content\">'+s.start+'</div><div class=\"luckysheetpopover-btn\">'+l+\"</div></div>\";$(\"#luckysheetpopover\").remove(),$(\"body\").append(c),$(\"#luckysheetpopover .luckysheetpopover-content\").html(e);let u=$(\"#luckysheetpopover\").outerWidth(),d=$(\"#luckysheetpopover\").outerHeight(),h={};\"topLeft\"==t?(h.top=\"20px\",h.left=\"20px\"):\"topCenter\"==t?(h.top=\"20px\",h.left=\"50%\",h[\"margin-left\"]=-u/2):\"topRight\"==t?(h.top=\"20px\",h.right=\"20px\"):\"midLeft\"==t?(h.top=\"50%\",h[\"margin-top\"]=-d/2,h.left=\"20px\"):\"center\"==t?(h.top=\"50%\",h[\"margin-top\"]=-d/2,h.left=\"50%\",h[\"margin-left\"]=-u/2):\"midRight\"==t?(h.top=\"50%\",h[\"margin-top\"]=-d/2,h.right=\"20px\"):\"bottomLeft\"==t?(h.bottom=\"20px\",h.left=\"20px\"):\"bottomCenter\"==t?(h.bottom=\"20px\",h.left=\"50%\",h[\"margin-left\"]=-u/2):\"bottomRight\"==t?(h.bottom=\"20px\",h.right=\"20px\"):(h.top=\"20px\",h.left=\"50%\",h[\"margin-left\"]=-u/2),\"white\"==a&&(h.background=\"rgba(255, 255, 255, 0.65)\",h.color=\"#000\",$(\"#luckysheetpopover .luckysheetpopover-btn\").css({border:\"1px solid #000\"})),setTimeout((function(){$(\"#luckysheetpopover .luckysheetpopover-content\").css({\"margin-left\":-$(\"#luckysheetpopover .luckysheetpopover-btn\").outerWidth()/2})}),1),$(\"#luckysheetpopover\").css(h).fadeIn(),$(\"#luckysheetpopover .luckysheetpopover-btn\").click((function(){\"function\"==typeof r&&r()})),null!=n&&\"number\"==typeof n&&setTimeout((function(){$(\"#luckysheetpopover\").fadeOut().remove(),\"function\"==typeof r&&r()}),n)}}})),To=y((()=>{qt(),_d(),Ci(),E(),Co(),fo(),Yn(),Ma(),Et(),_o(),Xu(),_i(),K(),dr(),x(),bo=k(ma()),ko={fileClone:[],editorRule:null,ruleTypeHtml:function(){let e=X().conditionformat;return`<div class=\"ruleTypeBox\">\\n                    <div class=\"ruleTypeItem\">\\n                        <span class=\"icon iconfont-luckysheet luckysheet-iconfont-youjiantou\"></span>\\n                        <span>${e.ruleTypeItem1}</span>\\n                    </div>\\n                    <div class=\"ruleTypeItem\">\\n                        <span class=\"icon iconfont-luckysheet luckysheet-iconfont-youjiantou\"></span>\\n                        <span>${e.ruleTypeItem2}</span>\\n                    </div>\\n                    <div class=\"ruleTypeItem\">\\n                        <span class=\"icon iconfont-luckysheet luckysheet-iconfont-youjiantou\"></span>\\n                        <span>${e.ruleTypeItem3}</span>\\n                    </div>\\n                    <div class=\"ruleTypeItem\">\\n                        <span class=\"icon iconfont-luckysheet luckysheet-iconfont-youjiantou\"></span>\\n                        <span>${e.ruleTypeItem4}</span>\\n                    </div>\\n                    <div class=\"ruleTypeItem\">\\n                        <span class=\"icon iconfont-luckysheet luckysheet-iconfont-youjiantou\"></span>\\n                        <span>${e.ruleTypeItem5}</span>\\n                    </div>\\n                    <div class=\"ruleTypeItem\">\\n                        <span class=\"icon iconfont-luckysheet luckysheet-iconfont-youjiantou\"></span>\\n                        <span>${e.ruleTypeItem6}</span>\\n                    </div>\\n                </div>`},textCellColorHtml:function(){let e=X().conditionformat;return`<div id=\"textCellColor\">\\n                    <div class=\"colorbox\">\\n                        <input id=\"checkTextColor\" type=\"checkbox\" checked=\"checked\">\\n                        <label for=\"checkTextColor\">${e.textColor}：</label>\\n                        <input id=\"textcolorshow\" data-tips=\"${e.textColor}\" data-func=\"background\" class=\"luckysheet-conditionformat-config-color\" type=\"text\" value=\"#9c0006\" style=\"display: none;\">\\n                    </div>\\n                    <div class=\"colorbox\">\\n                        <input id=\"checkCellColor\" type=\"checkbox\" checked=\"checked\">\\n                        <label for=\"checkCellColor\">${e.cellColor}：</label>\\n                        <input id=\"cellcolorshow\" data-tips=\"${e.cellColor}\" data-func=\"background\" class=\"luckysheet-conditionformat-config-color\" type=\"text\" value=\"#ffc7ce\" style=\"display: none;\">\\n                    </div>\\n                </div>`},selectRange:[],selectStatus:!1,dataBarList:[{format:[\"#638ec6\",\"#ffffff\"]},{format:[\"#63c384\",\"#ffffff\"]},{format:[\"#ff555a\",\"#ffffff\"]},{format:[\"#ffb628\",\"#ffffff\"]},{format:[\"#008aef\",\"#ffffff\"]},{format:[\"#d6007b\",\"#ffffff\"]},{format:[\"#638ec6\"]},{format:[\"#63c384\"]},{format:[\"#ff555a\"]},{format:[\"#ffb628\"]},{format:[\"#008aef\"]},{format:[\"#d6007b\"]}],colorGradationList:[{format:[\"rgb(99, 190, 123)\",\"rgb(255, 235, 132)\",\"rgb(248, 105, 107)\"]},{format:[\"rgb(248, 105, 107)\",\"rgb(255, 235, 132)\",\"rgb(99, 190, 123)\"]},{format:[\"rgb(99, 190, 123)\",\"rgb(252, 252, 255)\",\"rgb(248, 105, 107)\"]},{format:[\"rgb(248, 105, 107)\",\"rgb(252, 252, 255)\",\"rgb(99, 190, 123)\"]},{format:[\"rgb(90, 138, 198)\",\"rgb(252, 252, 255)\",\"rgb(248, 105, 107)\"]},{format:[\"rgb(248, 105, 107)\",\"rgb(252, 252, 255)\",\"rgb(90, 138, 198)\"]},{format:[\"rgb(252, 252, 255)\",\"rgb(248, 105, 107)\"]},{format:[\"rgb(248, 105, 107)\",\"rgb(252, 252, 255)\"]},{format:[\"rgb(99, 190, 123)\",\"rgb(252, 252, 255)\"]},{format:[\"rgb(252, 252, 255)\",\"rgb(99, 190, 123)\"]},{format:[\"rgb(99, 190, 123)\",\"rgb(255, 235, 132)\"]},{format:[\"rgb(255, 235, 132)\",\"rgb(99, 190, 123)\"]}],init:function(){let e=this,n=X().conditionformat;$(document).off(\"change.CFchooseSheet\").on(\"change.CFchooseSheet\",\"#luckysheet-administerRule-dialog .chooseSheet\",(function(){let t=$(\"#luckysheet-administerRule-dialog .chooseSheet option:selected\").val();e.getConditionRuleList(t)})),$(document).off(\"click.CFadministerRuleItem\").on(\"click.CFadministerRuleItem\",\"#luckysheet-administerRule-dialog .ruleList .listBox .item\",(function(){$(this).addClass(\"on\").siblings().removeClass(\"on\")})),$(document).off(\"click.CFadministerRuleConfirm\").on(\"click.CFadministerRuleConfirm\",\"#luckysheet-administerRule-dialog-confirm\",(function(){if(!Jl(t.currentSheetIndex))return;let n=$.extend(!0,[],t.luckysheetfile),a=e.getHistoryRules(n),l=$.extend(!0,[],e.fileClone);for(let e=0;e<l.length;e++){let n=l[e].index;t.luckysheetfile[Mt(n)].luckysheet_conditionformat_save=l[Mt(n)].luckysheet_conditionformat_save}let r=$.extend(!0,[],t.luckysheetfile),o=e.getCurrentRules(r);if(e.ref(a,o),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-administerRule-dialog\").hide(),yo.allowUpdate){let e=$.extend(!0,[],t.luckysheetfile);for(let t=0;t<e.length;t++)yo.saveParam(\"all\",e[t].index,e[t].luckysheet_conditionformat_save,{k:\"luckysheet_conditionformat_save\"})}})),$(document).off(\"click.CFadministerRuleClose\").on(\"click.CFadministerRuleClose\",\"#luckysheet-administerRule-dialog-close\",(function(){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-administerRule-dialog\").hide(),e.fileClone=[]})),$(document).off(\"click.CFadministerRuleFa\").on(\"click.CFadministerRuleFa\",\"#luckysheet-administerRule-dialog .item .fa-table\",(function(){$(this).parents(\"#luckysheet-administerRule-dialog\").hide();let n=$(\"#luckysheet-administerRule-dialog .chooseSheet select option:selected\").val();n!=t.currentSheetIndex&&ki.changeSheetExec(n);let a=$(this).siblings(\"input\").val().trim(),l=$(this).parents(\".item\").attr(\"data-item\");e.multiRangeDialog(l,a),e.selectRange=[];let r=e.getRangeByTxt(a);if(r.length>0)for(let n=0;n<r.length;n++){let a=r[n].row[0],l=r[n].row[1],o=r[n].column[0],i=r[n].column[1],s=t.visibledatarow[l],c=a-1==-1?0:t.visibledatarow[a-1],u=t.visibledatacolumn[i],d=o-1==-1?0:t.visibledatacolumn[o-1];e.selectRange.push({left:d,width:u-d-1,top:c,height:s-c-1,left_move:d,width_move:u-d-1,top_move:c,height_move:s-c-1,row:[a,l],column:[o,i],row_focus:a,column_focus:o})}Vu(e.selectRange)})),$(document).off(\"click.CFmultiRangeConfirm\").on(\"click.CFmultiRangeConfirm\",\"#luckysheet-multiRange-dialog-confirm\",(function(){$(this).parents(\"#luckysheet-multiRange-dialog\").hide();let t=$(this).attr(\"data-item\"),n=$(this).parents(\"#luckysheet-multiRange-dialog\").find(\"input\").val();$(\"#luckysheet-administerRule-dialog .item[data-item=\"+t+\"] input\").val(n);let a=$(\"#luckysheet-administerRule-dialog .chooseSheet option:selected\").val();e.fileClone[Mt(a)].luckysheet_conditionformat_save[t].cellrange=e.getRangeByTxt(n),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-administerRule-dialog\").show(),Vu([])})),$(document).off(\"click.CFmultiRangeClose\").on(\"click.CFmultiRangeClose\",\"#luckysheet-multiRange-dialog-close\",(function(){$(this).parents(\"#luckysheet-multiRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-administerRule-dialog\").show(),$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide(),Vu([])})),$(document).off(\"click.CFnewConditionRule\").on(\"click.CFnewConditionRule\",\"#newConditionRule\",(function(){if(Jl($(\"#luckysheet-administerRule-dialog .chooseSheet option:selected\").val())){if(0==t.luckysheet_select_save.length)return void(I()?alert(n.pleaseSelectRange):vo.info(n.pleaseSelectRange,\"\"));e.newConditionRuleDialog(1)}})),$(document).off(\"click.CFnewConditionRuleConfirm\").on(\"click.CFnewConditionRuleConfirm\",\"#luckysheet-newConditionRule-dialog-confirm\",(function(){if(!Jl(t.currentSheetIndex))return;let a,l,r=$(\"#luckysheet-newConditionRule-dialog .ruleTypeItem.on\").index(),o=$(\"#luckysheet-newConditionRule-dialog #type1 option:selected\").val(),i=$(\"#luckysheet-newConditionRule-dialog .\"+o+\"Box #type2 option:selected\").val();if(0==r){if(\"dataBar\"==o){let e=$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".dataBarBox .luckysheet-conditionformat-config-color\").spectrum(\"get\").toHexString();\"gradient\"==i?a=[e,\"#ffffff\"]:\"solid\"==i&&(a=[e]),l={type:\"dataBar\",cellrange:$.extend(!0,[],t.luckysheet_select_save),format:a}}else if(\"colorGradation\"==o){let e=$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".colorGradationBox .maxVal .luckysheet-conditionformat-config-color\").spectrum(\"get\").toRgbString(),n=$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".colorGradationBox .midVal .luckysheet-conditionformat-config-color\").spectrum(\"get\").toRgbString(),r=$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".colorGradationBox .minVal .luckysheet-conditionformat-config-color\").spectrum(\"get\").toRgbString();\"threeColor\"==i?a=[e,n,r]:\"twoColor\"==i&&(a=[e,r]),l={type:\"colorGradation\",cellrange:$.extend(!0,[],t.luckysheet_select_save),format:a}}else if(\"icons\"==o){a={len:$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".iconsBox .model\").attr(\"data-len\"),leftMin:$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".iconsBox .model\").attr(\"data-leftmin\"),top:$(this).parents(\"#luckysheet-newConditionRule-dialog\").find(\".iconsBox .model\").attr(\"data-top\")},l={type:\"icons\",cellrange:$.extend(!0,[],t.luckysheet_select_save),format:a}}}else{let s,c,u=\"\",d=[],h=[];if(1==r){if(\"number\"==o)if(u=i,\"betweenness\"==i){let a=$(\"#luckysheet-newConditionRule-dialog #conditionVal input\").val().trim(),l=$(\"#luckysheet-newConditionRule-dialog #conditionVal2 input\").val().trim(),r=e.getRangeByTxt(a);if(r.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==r.length){let l=r[0].row[0],o=r[0].row[1],i=r[0].column[0],s=r[0].column[1];if(l!=o||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(l,i,t.flowdata),d[0]={row:r[0].row,column:r[0].column},h.push(a)}else if(0==r.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");h.push(a)}let o=e.getRangeByTxt(l);if(o.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==o.length){let a=o[0].row[0],r=o[0].row[1],i=o[0].column[0],s=o[0].column[1];if(a!=r||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");l=Vn(a,i,t.flowdata),d[1]={row:o[0].row,column:o[0].column},h.push(l)}else if(0==o.length){if(isNaN(l)||\"\"==l)return void e.infoDialog(n.conditionValueCanOnly,\"\");h.push(l)}}else{let a=$(\"#luckysheet-newConditionRule-dialog #conditionVal input\").val().trim(),l=e.getRangeByTxt(a);if(l.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==l.length){let r=l[0].row[0],o=l[0].row[1],i=l[0].column[0],s=l[0].column[1];if(r!=o||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(r,i,t.flowdata),d.push({row:l[0].row,column:l[0].column}),h.push(a)}else if(0==l.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");h.push(a)}}else if(\"text\"==o){u=\"textContains\";let a=$(\"#luckysheet-newConditionRule-dialog #conditionVal input\").val().trim(),l=e.getRangeByTxt(a);if(l.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==l.length){let r=l[0].row[0],o=l[0].row[1],i=l[0].column[0],s=l[0].column[1];if(r!=o||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(r,i,t.flowdata),d.push({row:l[0].row,column:l[0].column}),h.push(a)}else if(0==l.length){if(\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");h.push(a)}}else if(\"date\"==o){u=\"occurrenceDate\";let t=$(\"#luckysheet-newConditionRule-dialog #daterange-btn\").val();if(\"\"==t||null==t)return void e.infoDialog(n.pleaseSelectADate,\"\");h.push(t)}}else if(2==r){\"top\"==o?u=$(\"#luckysheet-newConditionRule-dialog #isPercent\").is(\":selected\")?\"top10%\":\"top10\":\"last\"==o&&(u=$(\"#luckysheet-newConditionRule-dialog #isPercent\").is(\":selected\")?\"last10%\":\"last10\");let t=$(\"#luckysheet-newConditionRule-dialog #conditionVal input\").val().trim();if(parseInt(t)!=t||parseInt(t)<1||parseInt(t)>1e3)return void e.infoDialog(n.pleaseEnterInteger,\"\");h.push(parseInt(t))}else if(3==r)\"AboveAverage\"==o?(u=\"AboveAverage\",h.push(\"AboveAverage\")):\"SubAverage\"==o&&(u=\"SubAverage\",h.push(\"SubAverage\"));else if(4==r)u=\"duplicateValue\",h.push(o);else if(5==r){u=\"formula\";let t=$(\"#luckysheet-newConditionRule-dialog #formulaConditionVal input\").val().trim();if(\"\"==t)return void e.infoDialog(\"Condition value cannot be empty!\",\"\");h.push(t)}s=$(\"#luckysheet-newConditionRule-dialog #checkTextColor\").is(\":checked\")?$(\"#luckysheet-newConditionRule-dialog #textcolorshow\").spectrum(\"get\").toHexString():null,c=$(\"#luckysheet-newConditionRule-dialog #checkCellColor\").is(\":checked\")?$(\"#luckysheet-newConditionRule-dialog #cellcolorshow\").spectrum(\"get\").toHexString():null,a={textColor:s,cellColor:c},l={type:\"default\",cellrange:$.extend(!0,[],t.luckysheet_select_save),format:a,conditionName:u,conditionRange:d,conditionValue:h}}$(\"#luckysheet-newConditionRule-dialog\").hide();let s=$(this).attr(\"data-source\");if(0==s){$(\"#luckysheet-modal-dialog-mask\").hide();let n=$.extend(!0,[],t.luckysheetfile),a=e.getHistoryRules(n),r=null==t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save?[]:t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save;r.push(l),t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save=r;let o=$.extend(!0,[],t.luckysheetfile),i=e.getCurrentRules(o);e.ref(a,i),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,r,{k:\"luckysheet_conditionformat_save\"})}else if(1==s){let n=e.fileClone[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save?e.fileClone[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save:[];n.push(l),e.fileClone[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save=n,e.administerRuleDialog()}})),$(document).off(\"click.CFnewConditionRuleClose\").on(\"click.CFnewConditionRuleClose\",\"#luckysheet-newConditionRule-dialog-close\",(function(){let e=$(this).attr(\"data-source\");0==e&&$(\"#luckysheet-modal-dialog-mask\").hide(),1==e&&$(\"#luckysheet-administerRule-dialog\").show(),$(\"#luckysheet-newConditionRule-dialog\").hide(),$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide()})),$(document).off(\"click.CFeditorConditionRule\").on(\"click.CFeditorConditionRule\",\"#editorConditionRule\",(function(){let t=$(\"#luckysheet-administerRule-dialog .chooseSheet option:selected\").val();if(!Jl(t))return;let n=$(\"#luckysheet-administerRule-dialog .ruleList .listBox .item.on\").attr(\"data-item\"),a={sheetIndex:t,itemIndex:n,data:e.fileClone[Mt(t)].luckysheet_conditionformat_save[n]};e.editorRule=a,e.editorConditionRuleDialog()})),$(document).off(\"click.CFeditorConditionRuleConfirm\").on(\"click.CFeditorConditionRuleConfirm\",\"#luckysheet-editorConditionRule-dialog-confirm\",(function(){let a,l,r=$(\"#luckysheet-editorConditionRule-dialog .ruleTypeItem.on\").index(),o=$(\"#luckysheet-editorConditionRule-dialog #type1 option:selected\").val(),i=$(\"#luckysheet-editorConditionRule-dialog .\"+o+\"Box #type2 option:selected\").val(),s=e.editorRule.data.cellrange;if(0==r){if(\"dataBar\"==o){let e=$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".dataBarBox .luckysheet-conditionformat-config-color\").spectrum(\"get\").toHexString();\"gradient\"==i?a=[e,\"#ffffff\"]:\"solid\"==i&&(a=[e]),l={type:\"dataBar\",cellrange:s,format:a}}else if(\"colorGradation\"==o){let e=$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".colorGradationBox .maxVal .luckysheet-conditionformat-config-color\").spectrum(\"get\").toRgbString(),t=$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".colorGradationBox .midVal .luckysheet-conditionformat-config-color\").spectrum(\"get\").toRgbString(),n=$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".colorGradationBox .minVal .luckysheet-conditionformat-config-color\").spectrum(\"get\").toRgbString();\"threeColor\"==i?a=[e,t,n]:\"twoColor\"==i&&(a=[e,n]),l={type:\"colorGradation\",cellrange:s,format:a}}else if(\"icons\"==o){a={len:$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".iconsBox .model\").attr(\"data-len\"),leftMin:$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".iconsBox .model\").attr(\"data-leftmin\"),top:$(this).parents(\"#luckysheet-editorConditionRule-dialog\").find(\".iconsBox .model\").attr(\"data-top\")},l={type:\"icons\",cellrange:s,format:a}}}else{let c,u,d=\"\",h=[],f=[];if(1==r){if(\"number\"==o)if(d=i,\"betweenness\"==i){let a=$(\"#luckysheet-editorConditionRule-dialog #conditionVal input\").val().trim(),l=$(\"#luckysheet-editorConditionRule-dialog #conditionVal2 input\").val().trim(),r=e.getRangeByTxt(a);if(r.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==r.length){let l=r[0].row[0],o=r[0].row[1],i=r[0].column[0],s=r[0].column[1];if(l!=o||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(l,i,t.flowdata),h[0]={row:r[0].row,column:r[0].column},f.push(a)}else if(0==r.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");f.push(a)}let o=e.getRangeByTxt(l);if(o.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==o.length){let a=o[0].row[0],r=o[0].row[1],i=o[0].column[0],s=o[0].column[1];if(a!=r||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");l=Vn(a,i,t.flowdata),h[1]={row:o[0].row,column:o[0].column},f.push(l)}else if(0==o.length){if(isNaN(l)||\"\"==l)return void e.infoDialog(n.conditionValueCanOnly,\"\");f.push(l)}}else{let a=$(\"#luckysheet-editorConditionRule-dialog #conditionVal input\").val().trim(),l=e.getRangeByTxt(a);if(l.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==l.length){let r=l[0].row[0],o=l[0].row[1],i=l[0].column[0],s=l[0].column[1];if(r!=o||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(r,i,t.flowdata),h.push({row:l[0].row,column:l[0].column}),f.push(a)}else if(0==l.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");f.push(a)}}else if(\"text\"==o){d=\"textContains\";let a=$(\"#luckysheet-editorConditionRule-dialog #conditionVal input\").val().trim(),l=e.getRangeByTxt(a);if(l.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==l.length){let r=l[0].row[0],o=l[0].row[1],i=l[0].column[0],s=l[0].column[1];if(r!=o||i!=s)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(r,i,t.flowdata),h.push({row:l[0].row,column:l[0].column}),f.push(a)}else if(0==l.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");f.push(a)}}else if(\"date\"==o){d=\"occurrenceDate\";let t=$(\"#luckysheet-editorConditionRule-dialog #daterange-btn\").val();if(\"\"==t||null==t)return void e.infoDialog(n.pleaseSelectADate,\"\");f.push(t)}}else if(2==r){\"top\"==o?d=$(\"#luckysheet-editorConditionRule-dialog #isPercent\").is(\":selected\")?\"top10%\":\"top10\":\"last\"==o&&(d=$(\"#luckysheet-editorConditionRule-dialog #isPercent\").is(\":selected\")?\"last10%\":\"last10\");let t=$(\"#luckysheet-editorConditionRule-dialog #conditionVal input\").val().trim();if(parseInt(t)!=t||parseInt(t)<1||parseInt(t)>1e3)return void e.infoDialog(n.pleaseEnterInteger,\"\");f.push(t)}else if(3==r)\"AboveAverage\"==o?(d=\"AboveAverage\",f.push(\"AboveAverage\")):\"SubAverage\"==o&&(d=\"SubAverage\",f.push(\"SubAverage\"));else if(4==r)d=\"duplicateValue\",f.push(o);else if(5==r){d=\"formula\";let t=$(\"#luckysheet-editorConditionRule-dialog #formulaConditionVal input\").val().trim();if(console.log(t),\"\"==t)return void e.infoDialog(\"Condition value cannot be empty!\",\"\");f.push(t)}c=$(\"#luckysheet-editorConditionRule-dialog #checkTextColor\").is(\":checked\")?$(\"#luckysheet-editorConditionRule-dialog #textcolorshow\").spectrum(\"get\").toHexString():null,u=$(\"#luckysheet-editorConditionRule-dialog #checkCellColor\").is(\":checked\")?$(\"#luckysheet-editorConditionRule-dialog #cellcolorshow\").spectrum(\"get\").toHexString():null,a={textColor:c,cellColor:u},l={type:\"default\",cellrange:s,format:a,conditionName:d,conditionRange:h,conditionValue:f}}let c=e.editorRule.sheetIndex,u=e.editorRule.itemIndex;e.fileClone[Mt(c)].luckysheet_conditionformat_save[u]=l,$(\"#luckysheet-editorConditionRule-dialog\").hide(),e.administerRuleDialog()})),$(document).off(\"click.CFeditorConditionRuleClose\").on(\"click.CFeditorConditionRuleClose\",\"#luckysheet-editorConditionRule-dialog-close\",(function(){$(\"#luckysheet-editorConditionRule-dialog\").hide(),$(\"#luckysheet-administerRule-dialog\").show(),$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide()})),$(document).off(\"click.CFnewEditorRuleItem\").on(\"click.CFnewEditorRuleItem\",\".luckysheet-newEditorRule-dialog .ruleTypeItem\",(function(){$(this).addClass(\"on\").siblings().removeClass(\"on\");let t=$(this).index();$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\".ruleExplainBox\").html(e.getRuleExplain(t)),e.colorSelectInit()})),$(document).off(\"change.CFnewEditorRuleType1\").on(\"change.CFnewEditorRuleType1\",\".luckysheet-newEditorRule-dialog #type1\",(function(){let t=$(this).find(\"option:selected\").val();(\"dataBar\"==t||\"colorGradation\"==t||\"icons\"==t||\"number\"==t||\"text\"==t||\"date\"==t)&&$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\".\"+t+\"Box\").show().siblings().hide(),\"date\"==t&&e.daterangeInit($(this).parents(\".luckysheet-newEditorRule-dialog\").attr(\"id\"))})),$(document).off(\"change.CFnewEditorRuleType2\").on(\"change.CFnewEditorRuleType2\",\".luckysheet-newEditorRule-dialog #type2\",(function(){let e=$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\"#type1 option:selected\").val();\"colorGradation\"==e?\"threeColor\"==$(this).find(\"option:selected\").val()?$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\".midVal\").show():$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\".midVal\").hide():\"number\"==e&&(\"betweenness\"==$(this).find(\"option:selected\").val()?($(this).parents(\".luckysheet-newEditorRule-dialog\").find(\".txt\").show(),$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\"#conditionVal2\").show()):($(this).parents(\".luckysheet-newEditorRule-dialog\").find(\".txt\").hide(),$(this).parents(\".luckysheet-newEditorRule-dialog\").find(\"#conditionVal2\").hide()))})),$(document).off(\"click.CFiconsShowbox\").on(\"click.CFiconsShowbox\",\".luckysheet-newEditorRule-dialog .iconsBox .showbox\",(function(){$(this).parents(\".iconsBox\").find(\"ul\").toggle()})),$(document).off(\"click.CFiconsLi\").on(\"click.CFiconsLi\",\".luckysheet-newEditorRule-dialog .iconsBox li\",(function(){let e=$(this).find(\"div\").attr(\"data-len\"),t=$(this).find(\"div\").attr(\"data-leftmin\"),n=$(this).find(\"div\").attr(\"data-top\"),a=$(this).find(\"div\").attr(\"title\"),l=$(this).find(\"div\").css(\"background-position\");$(this).parents(\".iconsBox\").find(\".showbox .model\").css(\"background-position\",l),$(this).parents(\".iconsBox\").find(\".showbox .model\").attr(\"data-len\",e),$(this).parents(\".iconsBox\").find(\".showbox .model\").attr(\"data-leftmin\",t),$(this).parents(\".iconsBox\").find(\".showbox .model\").attr(\"data-top\",n),$(this).parents(\".iconsBox\").find(\".showbox .model\").attr(\"title\",a),$(this).parents(\"ul\").hide()})),$(document).off(\"click.CFdeleteConditionRule\").on(\"click.CFdeleteConditionRule\",\"#deleteConditionRule\",(function(){let t=$(\"#luckysheet-administerRule-dialog .chooseSheet option:selected\").val();if(!Jl(t))return;let n=$(\"#luckysheet-administerRule-dialog .ruleList .listBox .item.on\").attr(\"data-item\");e.fileClone[Mt(t)].luckysheet_conditionformat_save.splice(n,1),e.administerRuleDialog()})),$(document).off(\"click.CFdefault\").on(\"click.CFdefault\",\"#luckysheet-conditionformat-dialog-confirm\",(function(){if(!Jl(t.currentSheetIndex))return;let a,l,r=$(\"#luckysheet-conditionformat-dialog .box\").attr(\"data-itemvalue\"),o=[],i=[];if(\"greaterThan\"==r||\"lessThan\"==r||\"equal\"==r||\"textContains\"==r){let a=$(\"#luckysheet-conditionformat-dialog #conditionVal\").val().trim(),l=e.getRangeByTxt(a);if(l.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==l.length){let r=l[0].row[0],s=l[0].row[1],c=l[0].column[0],u=l[0].column[1];if(r!=s||c!=u)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(r,c,t.flowdata),o.push({row:l[0].row,column:l[0].column}),i.push(a)}else if(0==l.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");i.push(a)}}else if(\"betweenness\"==r){let a=$(\"#luckysheet-conditionformat-dialog #conditionVal\").val().trim(),l=$(\"#luckysheet-conditionformat-dialog #conditionVal2\").val().trim(),r=e.getRangeByTxt(a);if(r.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==r.length){let l=r[0].row[0],s=r[0].row[1],c=r[0].column[0],u=r[0].column[1];if(l!=s||c!=u)return void e.infoDialog(n.onlySingleCell,\"\");a=Vn(l,c,t.flowdata),o[0]={row:r[0].row,column:r[0].column},i.push(a)}else if(0==r.length){if(isNaN(a)||\"\"==a)return void e.infoDialog(n.conditionValueCanOnly,\"\");i.push(a)}let s=e.getRangeByTxt(l);if(s.length>1)return void e.infoDialog(n.onlySingleCell,\"\");if(1==s.length){let a=s[0].row[0],r=s[0].row[1],c=s[0].column[0],u=s[0].column[1];if(a!=r||c!=u)return void e.infoDialog(n.onlySingleCell,\"\");l=Vn(a,c,t.flowdata),o[1]={row:s[0].row,column:s[0].column},i.push(l)}else if(0==s.length){if(isNaN(l)||\"\"==l)return void e.infoDialog(n.conditionValueCanOnly,\"\");i.push(l)}}else if(\"occurrenceDate\"==r){let t=$(\"#luckysheet-conditionformat-dialog #daterange-btn\").val();if(\"\"==t||null==t)return void e.infoDialog(n.pleaseSelectADate,\"\");i.push(t)}else if(\"duplicateValue\"==r)i.push($(\"#luckysheet-conditionformat-dialog #conditionVal option:selected\").val());else if(\"top10\"==r||\"top10%\"==r||\"last10\"==r||\"last10%\"==r){let t=$(\"#luckysheet-conditionformat-dialog #conditionVal\").val().trim();if(parseInt(t)!=t||parseInt(t)<1||parseInt(t)>1e3)return void e.infoDialog(n.pleaseEnterInteger,\"\");i.push(t)}else\"AboveAverage\"==r?i.push(\"AboveAverage\"):\"SubAverage\"==r&&i.push(\"SubAverage\");a=$(\"#checkTextColor\").is(\":checked\")?$(\"#textcolorshow\").spectrum(\"get\").toHexString():null,l=$(\"#checkCellColor\").is(\":checked\")?$(\"#cellcolorshow\").spectrum(\"get\").toHexString():null;let s=$.extend(!0,[],t.luckysheetfile),c=e.getHistoryRules(s),u={type:\"default\",cellrange:$.extend(!0,[],t.luckysheet_select_save),format:{textColor:a,cellColor:l},conditionName:r,conditionRange:o,conditionValue:i},d=null==t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save?[]:t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save;d.push(u),t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save=d;let h=$.extend(!0,[],t.luckysheetfile),f=e.getCurrentRules(h);e.ref(c,f),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-conditionformat-dialog\").hide(),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,d,{k:\"luckysheet_conditionformat_save\"})})),$(document).off(\"click.CFicons\").on(\"click.CFicons\",\"#luckysheet-CFicons-dialog .item\",(function(){if($(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-CFicons-dialog\").hide(),t.luckysheet_select_save.length>0){let n=$.extend(!0,[],t.luckysheet_select_save),a={len:$(this).attr(\"data-len\"),leftMin:$(this).attr(\"data-leftMin\"),top:$(this).attr(\"data-top\")};e.updateItem(\"icons\",n,a)}})),$(document).on(\"click\",\".range .fa-table\",(function(){let t,n=$(this).parents(\".luckysheet-modal-dialog\").attr(\"id\");if($(\"#\"+n).hide(),\"luckysheet-conditionformat-dialog\"==n)t=\"conditionVal\"==$(this).siblings(\"input\").attr(\"id\")?\"0_1\":\"0_2\";else if(\"luckysheet-newConditionRule-dialog\"==n){let e=$(this).parents(\".range\").attr(\"id\");t=\"formulaConditionVal\"==e?\"1_0\":\"conditionVal\"==e?\"1_1\":\"1_2\"}else if(\"luckysheet-editorConditionRule-dialog\"==n){let e=$(this).parents(\".range\").attr(\"id\");t=\"formulaConditionVal\"==e?\"2_0\":\"conditionVal\"==e?\"2_1\":\"2_2\"}let a=$(this).siblings(\"input\").val();e.singleRangeDialog(t,a),Vu(e.getRangeByTxt(a))})),$(document).on(\"click\",\"#luckysheet-singleRange-dialog-confirm\",(function(){$(\"#luckysheet-modal-dialog-mask\").show(),$(this).parents(\"#luckysheet-singleRange-dialog\").hide();let e=$(this).attr(\"data-source\"),t=$(this).parents(\"#luckysheet-singleRange-dialog\").find(\"input\").val();\"0_1\"==e?($(\"#luckysheet-conditionformat-dialog\").show(),$(\"#luckysheet-conditionformat-dialog #conditionVal\").val(t)):\"0_2\"==e?($(\"#luckysheet-conditionformat-dialog\").show(),$(\"#luckysheet-conditionformat-dialog #conditionVal2\").val(t)):\"1_0\"==e?($(\"#luckysheet-newConditionRule-dialog\").show(),$(\"#luckysheet-newConditionRule-dialog #formulaConditionVal input\").val(t)):\"1_1\"==e?($(\"#luckysheet-newConditionRule-dialog\").show(),$(\"#luckysheet-newConditionRule-dialog #conditionVal input\").val(t)):\"1_2\"==e?($(\"#luckysheet-newConditionRule-dialog\").show(),$(\"#luckysheet-newConditionRule-dialog #conditionVal2 input\").val(t)):\"2_0\"==e?($(\"#luckysheet-editorConditionRule-dialog\").show(),$(\"#luckysheet-editorConditionRule-dialog #formulaConditionVal input\").val(t)):\"2_1\"==e?($(\"#luckysheet-editorConditionRule-dialog\").show(),$(\"#luckysheet-editorConditionRule-dialog #conditionVal input\").val(t)):\"2_2\"==e&&($(\"#luckysheet-editorConditionRule-dialog\").show(),$(\"#luckysheet-editorConditionRule-dialog #conditionVal2 input\").val(t)),Vu([])})),$(document).on(\"click\",\"#luckysheet-singleRange-dialog-close\",(function(){$(\"#luckysheet-modal-dialog-mask\").show(),$(this).parents(\"#luckysheet-singleRange-dialog\").hide();let e=$(this).attr(\"data-source\");\"0_1\"==e||\"0_2\"==e?$(\"#luckysheet-conditionformat-dialog\").show():\"1_0\"==e||\"1_1\"==e||\"1_2\"==e?$(\"#luckysheet-newConditionRule-dialog\").show():(\"2_0\"==e||\"2_1\"==e||\"2_2\"==e)&&$(\"#luckysheet-editorConditionRule-dialog\").show(),Vu([])})),$(document).on(\"click\",\".luckysheet-modal-dialog-title-close\",(function(){let e=$(this).parents(\".luckysheet-modal-dialog\").attr(\"id\");if(\"luckysheet-newConditionRule-dialog\"==e&&1==$(\"#\"+e).find(\"#luckysheet-newConditionRule-dialog-close\").attr(\"data-source\")&&$(\"#luckysheet-administerRule-dialog\").show(),\"luckysheet-editorConditionRule-dialog\"==e&&$(\"#luckysheet-administerRule-dialog\").show(),\"luckysheet-singleRange-dialog\"==e){$(\"#luckysheet-modal-dialog-mask\").show();let e=$(this).parents(\"#luckysheet-singleRange-dialog\").find(\"#luckysheet-singleRange-dialog-confirm\").attr(\"data-source\");\"0_1\"==e||\"0_2\"==e?$(\"#luckysheet-conditionformat-dialog\").show():\"1_1\"==e||\"1_2\"==e?$(\"#luckysheet-newConditionRule-dialog\").show():(\"2_1\"==e||\"2_2\"==e)&&$(\"#luckysheet-editorConditionRule-dialog\").show(),Vu([])}\"luckysheet-multiRange-dialog\"==e&&($(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-administerRule-dialog\").show(),Vu([])),\"luckysheet-conditionformat-info-dialog\"==e&&$(\"#luckysheet-modal-dialog-mask\").show()})),$(document).on(\"click\",\"#luckysheet-conditionformat-info-dialog-close\",(function(){$(this).parents(\"#luckysheet-conditionformat-info-dialog\").hide()}))},singleRangeDialog:function(e,t){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-singleRange-dialog\").remove();let n=X().conditionformat;$(\"body\").append(nd(kt,{id:\"luckysheet-singleRange-dialog\",addclass:\"luckysheet-singleRange-dialog\",title:n.selectCell,content:`<input readonly=\"readonly\" placeholder=\"${n.pleaseSelectCell}\" value=\"${t}\"/>`,botton:`<button id=\"luckysheet-singleRange-dialog-confirm\" class=\"btn btn-primary\" data-source=\"${e}\">${n.confirm}</button>\\n                        <button id=\"luckysheet-singleRange-dialog-close\" class=\"btn btn-default\" data-source=\"${e}\">${n.cancel}</button>`,style:\"z-index:100003\"}));let a=$(\"#luckysheet-singleRange-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),l=a.outerHeight(),r=a.outerWidth(),o=$(window).width(),i=$(window).height(),s=$(document).scrollLeft(),c=$(document).scrollTop();$(\"#luckysheet-singleRange-dialog\").css({left:(o+s-r)/2,top:(i+c-l)/3}).show()},multiRangeDialog:function(e,t){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-multiRange-dialog\").remove();let n=X().conditionformat;$(\"body\").append(nd(kt,{id:\"luckysheet-multiRange-dialog\",addclass:\"luckysheet-multiRange-dialog\",title:n.selectRange,content:`<input readonly=\"readonly\" placeholder=\"${n.pleaseSelectRange}\" value=\"${t}\"/>`,botton:`<button id=\"luckysheet-multiRange-dialog-confirm\" class=\"btn btn-primary\" data-item=\"${e}\">${n.confirm}</button>\\n                        <button id=\"luckysheet-multiRange-dialog-close\" class=\"btn btn-default\">${n.cancel}</button>`,style:\"z-index:100003\"}));let a=$(\"#luckysheet-multiRange-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),l=a.outerHeight(),r=a.outerWidth(),o=$(window).width(),i=$(window).height(),s=$(document).scrollLeft(),c=$(document).scrollTop();$(\"#luckysheet-multiRange-dialog\").css({left:(o+s-r)/2,top:(i+c-l)/3}).show(),Vu(this.getRangeByTxt(t))},getTxtByRange:function(e){if(e.length>0){let n=[];for(let a=0;a<e.length;a++){let l=e[a].row[0],r=e[a].row[1],o=e[a].column[0],i=e[a].column[1];n.push(Nt(t.currentSheetIndex,{row:[l,r],column:[o,i]},t.currentSheetIndex))}return n.join(\",\")}},getRangeByTxt:function(e){let t=[];if(-1!=(e=e.toString()).indexOf(\",\")){let n=e.split(\",\");for(let e=0;e<n.length;e++){if(!wi.iscelldata(n[e])){t=[];break}t.push(wi.getcellrange(n[e]))}}else wi.iscelldata(e)&&t.push(wi.getcellrange(e));return t},colorSelectInit:function(){let e=X().conditionformat;$(\".luckysheet-conditionformat-config-color\").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,maxPaletteSize:8,maxSelectionSize:8,cancelText:e.cancel,chooseText:e.confirmColor,togglePaletteMoreText:\"自定义\",togglePaletteLessText:\"收起\",togglePaletteOnly:!0,clearText:e.clearColorSelect,noColorSelectedText:\"没有颜色被选择\",localStorageKey:\"spectrum.textcolor\"+yo.gridKey,palette:[[\"#000\",\"#444\",\"#666\",\"#999\",\"#ccc\",\"#eee\",\"#f3f3f3\",\"#fff\"],[\"#f00\",\"#f90\",\"#ff0\",\"#0f0\",\"#0ff\",\"#00f\",\"#90f\",\"#f0f\"],[\"#f4cccc\",\"#fce5cd\",\"#fff2cc\",\"#d9ead3\",\"#d0e0e3\",\"#cfe2f3\",\"#d9d2e9\",\"#ead1dc\"],[\"#ea9999\",\"#f9cb9c\",\"#ffe599\",\"#b6d7a8\",\"#a2c4c9\",\"#9fc5e8\",\"#b4a7d6\",\"#d5a6bd\"],[\"#e06666\",\"#f6b26b\",\"#ffd966\",\"#93c47d\",\"#76a5af\",\"#6fa8dc\",\"#8e7cc3\",\"#c27ba0\"],[\"#c00\",\"#e69138\",\"#f1c232\",\"#6aa84f\",\"#45818e\",\"#3d85c6\",\"#674ea7\",\"#a64d79\"],[\"#900\",\"#b45f06\",\"#bf9000\",\"#38761d\",\"#134f5c\",\"#0b5394\",\"#351c75\",\"#741b47\"],[\"#600\",\"#783f04\",\"#7f6000\",\"#274e13\",\"#0c343d\",\"#073763\",\"#20124d\",\"#4c1130\"]],change:function(e){null!=e&&(e=e.toHexString())}})},conditionformatDialog:function(e,t){let n=this;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-conditionformat-dialog\").remove();let a=X().conditionformat;$(\"body\").append(nd(kt,{id:\"luckysheet-conditionformat-dialog\",addclass:\"luckysheet-conditionformat-dialog\",title:e,content:t,botton:`<button id=\"luckysheet-conditionformat-dialog-confirm\" class=\"btn btn-primary\">${a.confirm}</button>\\n                        <button class=\"btn btn-default luckysheet-model-close-btn\">${a.cancel}</button>`,style:\"z-index:9999\"}));let l=$(\"#luckysheet-conditionformat-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),r=l.outerHeight(),o=l.outerWidth(),i=$(window).width(),s=$(window).height(),c=$(document).scrollLeft(),u=$(document).scrollTop();$(\"#luckysheet-conditionformat-dialog\").css({left:(i+c-o)/2,top:(s+u-r)/3}).show(),n.init(),n.colorSelectInit(),e==X().conditionformat.conditionformat_occurrenceDate&&n.daterangeInit(\"luckysheet-conditionformat-dialog\")},CFiconsDialog:function(){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-CFicons-dialog\").remove();let e=X().conditionformat,t=`<div class=\"box\">\\n                            <div style=\"margin-bottom: 10px;\">${e.pleaseSelectIcon}</div>\\n                            <div class=\"title\">${e.direction}</div>\\n                            <div class=\"list\">\\n                                <div class=\"left\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"0\" title=\"${e.threeWayArrow}(${e.multicolor})\"><div style=\"background-position:0 0;\"></div></div>\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"1\" title=\"${e.threeTriangles}\"><div style=\"background-position:0 -20px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"4\" data-leftMin=\"0\" data-top=\"2\" title=\"${e.fourWayArrow}(${e.multicolor})\"><div style=\"background-position:0 -40px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"5\" data-leftMin=\"0\" data-top=\"3\" title=\"${e.fiveWayArrow}(${e.multicolor})\"><div style=\"background-position:0 -60px;\"></div></div>\\n                                </div>\\n                                <div class=\"right\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"5\" data-top=\"0\" title=\"${e.threeWayArrow}(${e.grayColor})\"><div style=\"background-position:-131px 0;\"></div></div>\\n                                    <div class=\"item\" data-len=\"4\" data-leftMin=\"5\" data-top=\"1\" title=\"${e.fourWayArrow}(${e.grayColor})\"><div style=\"background-position:-131px -20px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"5\" data-leftMin=\"5\" data-top=\"2\" title=\"${e.fiveWayArrow}(${e.grayColor})\"><div style=\"background-position:-131px -40px;\"></div></div>\\n                                </div>\\n                                <div style=\"clear:both;\"></div>\\n                            </div>\\n                            <div class=\"title\">${e.shape}</div>\\n                            <div class=\"list\">\\n                                <div class=\"left\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"4\" title=\"${e.threeColorTrafficLight}(${e.rimless})\"><div style=\"background-position:0 -80px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"5\" title=\"${e.threeSigns}\"><div style=\"background-position:0 -100px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"4\" data-leftMin=\"0\" data-top=\"6\" title=\"${e.greenRedBlackGradient}\"><div style=\"background-position:0 -120px;\"></div></div>\\n                                </div>\\n                                <div class=\"right\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"5\" data-top=\"4\" title=\"${e.threeColorTrafficLight}(${e.bordered})\"><div style=\"background-position:-131px -80px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"4\" data-leftMin=\"5\" data-top=\"5\" title=\"${e.fourColorTrafficLight}\"><div style=\"background-position:-131px -100px;\"></div></div>\\n                                </div>\\n                                <div style=\"clear:both;\"></div>\\n                            </div>\\n                            <div class=\"title\">${e.mark}</div>\\n                            <div class=\"list\">\\n                                <div class=\"left\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"7\" title=\"${e.threeSymbols}(${e.circled})\"><div style=\"background-position:0 -140px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"8\" title=\"${e.tricolorFlag}\"><div style=\"background-position:0 -160px;\"></div></div>\\n                                </div>\\n                                <div class=\"right\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"5\" data-top=\"7\" title=\"${e.threeSymbols}(${e.noCircle})\"><div style=\"background-position:-131px -140px;\"></div></div>\\n                                </div>\\n                                <div style=\"clear:both;\"></div>\\n                            </div>\\n                            <div class=\"title\">${e.grade}</div>\\n                            <div class=\"list\">\\n                                <div class=\"left\">\\n                                    <div class=\"item\" data-len=\"3\" data-leftMin=\"0\" data-top=\"9\" title=\"${e.threeStars}\"><div style=\"background-position:0 -180px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"5\" data-leftMin=\"0\" data-top=\"10\" title=\"${e.fiveQuadrantDiagram}\"><div style=\"background-position:0 -200px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"5\" data-leftMin=\"0\" data-top=\"11\" title=\"${e.fiveBoxes}\"><div style=\"background-position:0 -220px;\"></div></div>\\n                                </div>\\n                                <div class=\"right\">\\n                                    <div class=\"item\" data-len=\"4\" data-leftMin=\"5\" data-top=\"9\" title=\"${e.grade4}\"><div style=\"background-position:-131px -180px;\"></div></div>\\n                                    <div class=\"item\" data-len=\"5\" data-leftMin=\"5\" data-top=\"10\" title=\"${e.grade5}\"><div style=\"background-position:-131px -200px;\"></div></div>\\n                                </div>\\n                                <div style=\"clear:both;\"></div>\\n                            </div>\\n                        </div>`;$(\"body\").append(nd(kt,{id:\"luckysheet-CFicons-dialog\",addclass:\"luckysheet-CFicons-dialog\",title:e.icons,content:t,botton:`<button class=\"btn btn-default luckysheet-model-close-btn\">${e.close}</button>`,style:\"z-index:100003\"}));let n=$(\"#luckysheet-CFicons-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),a=n.outerHeight(),l=n.outerWidth(),r=$(window).width(),o=$(window).height(),i=$(document).scrollLeft(),s=$(document).scrollTop();$(\"#luckysheet-CFicons-dialog\").css({left:(r+i-l)/2,top:(o+s-a)/3}).show()},administerRuleDialog:function(){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-administerRule-dialog\").remove();let e=X().conditionformat,n=\"\";for(let a=0;a<t.luckysheetfile.length;a++)\"1\"==t.luckysheetfile[a].status?n+=`<option value=\"${t.luckysheetfile[a].index}\" selected=\"selected\">\\n                                ${e.currentSheet}：${t.luckysheetfile[a].name}\\n                            </option>`:n+=`<option value=\"${t.luckysheetfile[a].index}\">\\n                                ${e.sheet}：${t.luckysheetfile[a].name}\\n                            </option>`;let a=`<div class=\"chooseSheet\">\\n                            <label>${e.showRules}：</label>\\n                            <select>${n}</select>\\n                        </div>\\n                        <div class=\"ruleBox\">\\n                            <div class=\"ruleBtn\">\\n                                <button id=\"newConditionRule\" class=\"btn btn-default\">${e.newRule}</button>\\n                                <button id=\"editorConditionRule\" class=\"btn btn-default\">${e.editRule}</button>\\n                                <button id=\"deleteConditionRule\" class=\"btn btn-default\">${e.deleteRule}</button>\\n                            </div>\\n                            <div class=\"ruleList\">\\n                                <div class=\"listTitle\">\\n                                    <span>${e.rule}</span>\\n                                    <span>${e.format}</span>\\n                                    <span>${e.applyRange}</span>\\n                                </div>\\n                                <div class=\"listBox\"></div>\\n                            </div>\\n                        </div>`;$(\"body\").append(nd(kt,{id:\"luckysheet-administerRule-dialog\",addclass:\"luckysheet-administerRule-dialog\",title:e.conditionformatManageRules,content:a,botton:`<button id=\"luckysheet-administerRule-dialog-confirm\" class=\"btn btn-primary\">${e.confirm}</button>\\n                        <button id=\"luckysheet-administerRule-dialog-close\" class=\"btn btn-default\">${e.close}</button>`,style:\"z-index:100003\"}));let l=$(\"#luckysheet-administerRule-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),r=l.outerHeight(),o=l.outerWidth(),i=$(window).width(),s=$(window).height(),c=$(document).scrollLeft(),u=$(document).scrollTop();$(\"#luckysheet-administerRule-dialog\").css({left:(i+c-o)/2,top:(s+u-r)/3}).show();let d=$(\"#luckysheet-administerRule-dialog .chooseSheet option:selected\").val();this.getConditionRuleList(d)},getConditionRuleList:function(e){let n=this;$(\"#luckysheet-administerRule-dialog .ruleList .listBox\").empty();let a=n.fileClone[Mt(e)].luckysheet_conditionformat_save;if(null!=a&&a.length>0){let e=X().conditionformat;for(let t=0;t<a.length;t++){let l,r=a[t].type,o=a[t].format,i=a[t].cellrange,s=\"\";\"dataBar\"==r?(l=e.dataBar,s='<canvas width=\"46\" height=\"18\" style=\"width: 46px;height: 18px;margin: 3px 0 0 5px;\"></canvas>'):\"colorGradation\"==r?(l=e.colorGradation,s='<canvas width=\"46\" height=\"18\" style=\"width: 46px;height: 18px;margin: 3px 0 0 5px;\"></canvas>'):\"icons\"==r?(l=e.icons,s='<canvas width=\"46\" height=\"18\" style=\"width: 46px;height: 18px;margin: 3px 0 0 5px;\"></canvas>'):(l=n.getConditionRuleName(a[t].conditionName,a[t].conditionRange,a[t].conditionValue),null!=o.textColor&&(s+='<span class=\"colorbox\" title=\"'+e.textColor+'\" style=\"background-color:'+o.textColor+'\"></span>'),null!=o.cellColor&&(s+='<span class=\"colorbox\" title=\"'+e.cellColor+'\" style=\"background-color:'+o.cellColor+'\"></span>'));let c=[];for(let e=0;e<i.length;e++){let t=i[e].row[0],n=i[e].row[1],a=i[e].column[0],l=i[e].column[1];c.push(id(a)+(t+1)+\":\"+id(l)+(n+1))}let u='<div class=\"item\" data-item=\"'+t+'\"><div class=\"ruleName\" title=\"'+l+'\">'+l+'</div><div class=\"format\">'+s+'</div><div class=\"ruleRange\"><input class=\"formulaInputFocus\" readonly=\"true\" value=\"'+c.join(\",\")+'\"/><i class=\"fa fa-table\" aria-hidden=\"true\" title=\"'+e.selectRange+'\"></i></div></div>';$(\"#luckysheet-administerRule-dialog .ruleList .listBox\").prepend(u)}$(\"#luckysheet-administerRule-dialog .ruleList .listBox .item canvas\").each((function(e){let n=$(this).closest(\".item\").attr(\"data-item\"),l=a[n].type,r=a[n].format,o=$(this).get(0).getContext(\"2d\");if(\"dataBar\"==l)if(2==r.length){let e=o.createLinearGradient(0,0,46,0);e.addColorStop(0,r[0]),e.addColorStop(1,r[1]),o.fillStyle=e,o.fillRect(0,0,46,18),o.beginPath(),o.moveTo(0,0),o.lineTo(0,18),o.lineTo(46,18),o.lineTo(46,0),o.lineTo(0,0),o.lineWidth=t.devicePixelRatio,o.strokeStyle=r[0],o.stroke(),o.closePath()}else 1==r.length&&(o.fillStyle=r[0],o.fillRect(0,0,46,18),o.beginPath(),o.moveTo(0,0),o.lineTo(0,18),o.lineTo(46,18),o.lineTo(46,0),o.lineTo(0,0),o.lineWidth=t.devicePixelRatio,o.strokeStyle=r[0],o.stroke(),o.closePath());else if(\"colorGradation\"==l){let e=o.createLinearGradient(0,0,46,0);3==r.length?(e.addColorStop(0,r[0]),e.addColorStop(.5,r[1]),e.addColorStop(1,r[2])):2==r.length&&(e.addColorStop(0,r[0]),e.addColorStop(1,r[1])),o.fillStyle=e,o.fillRect(0,0,46,18)}else if(\"icons\"==l){let e=r.len,t=r.leftMin,n=r.top,a=32*e+10*(e-1),l=32,i=46,s=1472/a;\"0\"==t?o.drawImage(Dt,0,32*n,a,l,0,(18-s)/2,i,s):\"5\"==t&&o.drawImage(Dt,210,32*n,a,l,0,(18-s)/2,i,s)}})),$(\"#luckysheet-administerRule-dialog .ruleList .listBox .item\").eq(0).addClass(\"on\")}},getConditionRuleName:function(e,t,n){let a;a=null!=t[0]?id(t[0].column[0])+(t[0].row[0]+1):n[0];let l=X().conditionformat;if(\"greaterThan\"==e)return l.cellValue+\" > \"+a;if(\"lessThan\"==e)return l.cellValue+\" < \"+a;if(\"betweenness\"==e){let e;return e=null!=t[1]?id(t[1].column[0])+(t[1].row[0]+1):n[1],l.cellValue+\" \"+l.between+\" \"+a+\" \"+l.in+\" \"+e+\" \"+l.between2}if(\"equal\"==e)return l.cellValue+\" = \"+a;if(\"textContains\"==e)return l.cellValue+l.contain+\" =\"+a;if(\"occurrenceDate\"==e)return n;if(\"duplicateValue\"==e){if(\"0\"==n)return l.duplicateValue;if(\"1\"==n)return l.uniqueValue}else{if(\"top10\"==e)return l.top+\" \"+a+\" \"+l.oneself;if(\"top10%\"==e)return l.top+\" \"+a+\"% \"+l.oneself;if(\"last10\"==e)return l.last+\" \"+a+\" \"+l.oneself;if(\"last10%\"==e)return l.last+\" \"+a+\"% \"+l.oneself;if(\"AboveAverage\"==e)return l.aboveAverage;if(\"SubAverage\"==e)return l.belowAverage;if(\"formula\"==e)return\"=\"!=a.slice(0,1)&&(a=\"=\"+a),l.formula+\": \"+a}},newConditionRuleDialog:function(e){let t=this,n=X().conditionformat,a=t.getRuleExplain(0);$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-administerRule-dialog\").hide(),$(\"#luckysheet-newConditionRule-dialog\").remove();let l='<div><div class=\"boxTitle\">'+n.chooseRuleType+\"：</div>\"+t.ruleTypeHtml()+'<div class=\"boxTitle\">'+n.editRuleDescription+'：</div><div class=\"ruleExplainBox\">'+a+\"</div></div>\";$(\"body\").append(nd(kt,{id:\"luckysheet-newConditionRule-dialog\",addclass:\"luckysheet-newEditorRule-dialog\",title:n.newFormatRule,content:l,botton:`<button id=\"luckysheet-newConditionRule-dialog-confirm\" class=\"btn btn-primary\" data-source=\"${e}\">${n.confirm}</button>\\n                        <button id=\"luckysheet-newConditionRule-dialog-close\" class=\"btn btn-default\" data-source=\"${e}\">${n.cancel}</button>`,style:\"z-index:100003\"}));let r=$(\"#luckysheet-newConditionRule-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),o=r.outerHeight(),i=r.outerWidth(),s=$(window).width(),c=$(window).height(),u=$(document).scrollLeft(),d=$(document).scrollTop();$(\"#luckysheet-newConditionRule-dialog\").css({left:(s+u-i)/2,top:(c+d-o)/3}).show(),$(\"#luckysheet-newConditionRule-dialog .ruleTypeBox .ruleTypeItem:eq(0)\").addClass(\"on\").siblings().removeClass(\"on\"),t.colorSelectInit()},editorConditionRuleDialog:function(){let e=this,n=X().conditionformat,a=e.editorRule.data;if(null==a)return;let l,r,o=a.type,i=a.format,s=a.conditionName;\"dataBar\"==o||\"colorGradation\"==o||\"icons\"==o?(l=0,r=o):\"greaterThan\"==s||\"lessThan\"==s||\"betweenness\"==s||\"equal\"==s||\"textContains\"==s||\"occurrenceDate\"==s?(l=1,\"greaterThan\"==s||\"lessThan\"==s||\"betweenness\"==s||\"equal\"==s?r=\"number\":\"textContains\"==s?r=\"text\":\"occurrenceDate\"==s&&(r=\"date\")):\"top10\"==s||\"top10%\"==s||\"last10\"==s||\"last10%\"==s?(l=2,\"top10\"==s||\"top10%\"==s?r=\"top\":(\"last10\"==s||\"last10%\"==s)&&(r=\"last\")):\"AboveAverage\"==s||\"SubAverage\"==s?(l=3,r=s):\"duplicateValue\"==s?(l=4,r=a.conditionValue):\"formula\"==s&&(l=5);let c=e.getRuleExplain(l);$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-administerRule-dialog\").hide(),$(\"#luckysheet-editorConditionRule-dialog\").remove();let u='<div><div class=\"boxTitle\">'+n.chooseRuleType+\"：</div>\"+e.ruleTypeHtml()+'<div class=\"boxTitle\">'+n.editRuleDescription+'：</div><div class=\"ruleExplainBox\">'+c+\"</div></div>\";$(\"body\").append(nd(kt,{id:\"luckysheet-editorConditionRule-dialog\",addclass:\"luckysheet-newEditorRule-dialog\",title:n.editFormatRule,content:u,botton:`<button id=\"luckysheet-editorConditionRule-dialog-confirm\" class=\"btn btn-primary\">${n.confirm}</button>\\n                        <button id=\"luckysheet-editorConditionRule-dialog-close\" class=\"btn btn-default\">${n.cancel}</button>`,style:\"z-index:100003\"}));let d=$(\"#luckysheet-editorConditionRule-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),h=d.outerHeight(),f=d.outerWidth(),m=$(window).width(),p=$(window).height(),g=$(document).scrollLeft(),y=$(document).scrollTop();if($(\"#luckysheet-editorConditionRule-dialog\").css({left:(m+g-f)/2,top:(p+y-h)/3}).show(),e.colorSelectInit(),$(\"#luckysheet-editorConditionRule-dialog .ruleTypeBox .ruleTypeItem:eq(\"+l+\")\").addClass(\"on\").siblings().removeClass(\"on\"),$(\"#luckysheet-editorConditionRule-dialog #type1\").val(r),(\"dataBar\"==r||\"colorGradation\"==r||\"icons\"==r||\"number\"==r||\"text\"==r||\"date\"==r)&&($(\"#luckysheet-editorConditionRule-dialog .\"+r+\"Box\").show(),$(\"#luckysheet-editorConditionRule-dialog .\"+r+\"Box\").siblings().hide()),\"date\"==r&&e.daterangeInit(\"luckysheet-editorConditionRule-dialog\"),\"dataBar\"==o||\"colorGradation\"==o||\"icons\"==o){if(\"dataBar\"==r)2==i.length?$(\"#luckysheet-editorConditionRule-dialog .dataBarBox #type2\").val(\"gradient\"):1==i.length&&$(\"#luckysheet-editorConditionRule-dialog .dataBarBox #type2\").val(\"solid\"),$(\"#luckysheet-editorConditionRule-dialog .dataBarBox .luckysheet-conditionformat-config-color\").spectrum(\"set\",i[0]);else if(\"colorGradation\"==r)3==i.length?($(\"#luckysheet-editorConditionRule-dialog .colorGradationBox #type2\").val(\"threeColor\"),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .midVal\").show(),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .maxVal .luckysheet-conditionformat-config-color\").spectrum(\"set\",i[0]),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .midVal .luckysheet-conditionformat-config-color\").spectrum(\"set\",i[1]),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .minVal .luckysheet-conditionformat-config-color\").spectrum(\"set\",i[2])):2==i.length&&($(\"#luckysheet-editorConditionRule-dialog .colorGradationBox #type2\").val(\"twoColor\"),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .midVal\").hide(),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .maxVal .luckysheet-conditionformat-config-color\").spectrum(\"set\",i[0]),$(\"#luckysheet-editorConditionRule-dialog .colorGradationBox .minVal .luckysheet-conditionformat-config-color\").spectrum(\"set\",i[1]));else if(\"icons\"==r){let e=i.len,t=i.leftMin,n=i.top;$(\"#luckysheet-editorConditionRule-dialog .iconsBox li\").each((function(a,l){if($(l).find(\"div\").attr(\"data-len\")==e&&$(l).find(\"div\").attr(\"data-leftmin\")==t&&$(l).find(\"div\").attr(\"data-top\")==n)return $(\"#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model\").css(\"background-position\",$(l).find(\"div\").css(\"background-position\")),$(\"#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model\").attr(\"data-len\",$(l).find(\"div\").attr(\"data-len\")),$(\"#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model\").attr(\"data-leftmin\",$(l).find(\"div\").attr(\"data-leftmin\")),$(\"#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model\").attr(\"data-top\",$(l).find(\"div\").attr(\"data-leftmin\")),$(\"#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model\").attr(\"title\",$(l).find(\"div\").attr(\"title\")),!0}))}}else{if(\"number\"==r){let e;if($(\"#luckysheet-editorConditionRule-dialog .numberBox #type2\").val(s),e=null!=a.conditionRange[0]?Nt(t.currentSheetIndex,{row:a.conditionRange[0].row,column:a.conditionRange[0].column},t.currentSheetIndex):a.conditionValue[0],$(\"#luckysheet-editorConditionRule-dialog .numberBox #conditionVal input\").val(e),\"betweenness\"==s){let e;$(\"#luckysheet-editorConditionRule-dialog .numberBox .txt\").show(),$(\"#luckysheet-editorConditionRule-dialog .numberBox #conditionVal2\").show(),e=null!=a.conditionRange[1]?Nt(t.currentSheetIndex,{row:a.conditionRange[1].row,column:a.conditionRange[1].column},t.currentSheetIndex):a.conditionValue[1],$(\"#luckysheet-editorConditionRule-dialog .numberBox #conditionVal2 input\").val(e)}else $(\"#luckysheet-editorConditionRule-dialog .numberBox .txt\").hide(),$(\"#luckysheet-editorConditionRule-dialog .numberBox #conditionVal2\").hide()}else if(\"text\"==r){let e;e=null!=a.conditionRange[0]?Nt(t.currentSheetIndex,{row:a.conditionRange[0].row,column:a.conditionRange[0].column},t.currentSheetIndex):a.conditionValue[0],$(\"#luckysheet-editorConditionRule-dialog .textBox #conditionVal input\").val(e)}else if(\"date\"==r){e.daterangeInit(\"luckysheet-editorConditionRule-dialog\");let t=a.conditionValue[0];$(\"#luckysheet-editorConditionRule-dialog .dateBox #daterange-btn\").val(t)}else if(\"top\"==r||\"last\"==r){a.conditionValue[0];(\"top10%\"==s||\"last10%\"==s)&&$(\"#luckysheet-editorConditionRule-dialog #isPercent\").attr(\"checked\",\"checked\")}else if(\"formula\"==s){let e=a.conditionValue[0];$(\"#luckysheet-editorConditionRule-dialog #formulaConditionVal input\").val(e)}$(\"#luckysheet-editorConditionRule-dialog #textcolorshow\").spectrum(\"set\",i.textColor),$(\"#luckysheet-editorConditionRule-dialog #cellcolorshow\").spectrum(\"set\",i.cellColor)}},infoDialog:function(e,t){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-conditionformat-info-dialog\").remove(),$(\"body\").append(nd(kt,{id:\"luckysheet-conditionformat-info-dialog\",addclass:\"\",title:e,content:t,botton:`<button id=\"luckysheet-conditionformat-info-dialog-close\" class=\"btn btn-default\">${X().conditionformat.close}</button>`,style:\"z-index:100003\"}));let n=$(\"#luckysheet-conditionformat-info-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),a=n.outerHeight(),l=n.outerWidth(),r=$(window).width(),o=$(window).height(),i=$(document).scrollLeft(),s=$(document).scrollTop();$(\"#luckysheet-conditionformat-info-dialog\").css({left:(r+i-l)/2,top:(o+s-a)/3}).show()},getRuleExplain:function(e){let t,n=X().conditionformat,a=this.textCellColorHtml();switch(e){case 0:t=`<div class=\"title\">${n.ruleTypeItem1}：</div>\\n                                    <div style=\"height: 30px;margin-bottom: 5px;\">\\n                                        <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.formatStyle}：</label>\\n                                        <select id=\"type1\">\\n                                            <option value=\"dataBar\">${n.dataBar}</option>\\n                                            <option value=\"colorGradation\">${n.colorGradation}</option>\\n                                            <option value=\"icons\">${n.icons}</option>\\n                                        </select>\\n                                    </div>\\n                                    <div>\\n                                        <div class=\"type1Box dataBarBox\">\\n                                            <div style=\"height: 30px;margin-bottom: 5px;\">\\n                                                <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.fillType}：</label>\\n                                                <select id=\"type2\">\\n                                                    <option value=\"gradient\">${n.gradient}</option>\\n                                                    <option value=\"solid\">${n.solid}</option>\\n                                                </select>\\n                                            </div>\\n                                            <div style=\"height: 30px;margin-bottom: 5px;\">\\n                                                <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.color}：</label>\\n                                                <input data-tips=\"${n.dataBarColor}\" data-func=\"background\" class=\"luckysheet-conditionformat-config-color\" type=\"text\" value=\"#638ec6\" style=\"display: none;\"> \\n                                            </div>\\n                                        </div>\\n                                        <div class=\"type1Box colorGradationBox\" style=\"display: none;\">\\n                                            <div style=\"height: 30px;margin-bottom: 5px;\">\\n                                                <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.fillType}：</label>\\n                                                <select id=\"type2\">\\n                                                    <option value=\"threeColor\">${n.tricolor}</option>\\n                                                    <option value=\"twoColor\">${n.twocolor}</option>\\n                                                </select>\\n                                            </div>\\n                                            <div class=\"maxVal\" style=\"height: 30px;margin-bottom: 5px;\">\\n                                                <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.maxValue}：</label>\\n                                                <input data-tips=\"${n.maxValue} ${n.color}\" data-func=\"background\" class=\"luckysheet-conditionformat-config-color\" type=\"text\" value=\"rgb(99, 190, 123)\" style=\"display: none;\">\\n                                            </div>\\n                                            <div class=\"midVal\" style=\"height: 30px;margin-bottom: 5px;\">\\n                                                <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.medianValue}：</label>\\n                                                <input data-tips=\"${n.medianValue} ${n.color}\" data-func=\"background\" class=\"luckysheet-conditionformat-config-color\" type=\"text\" value=\"rgb(255, 235, 132)\" style=\"display: none;\">\\n                                            </div>\\n                                            <div class=\"minVal\" style=\"height: 30px;margin-bottom: 5px;\">\\n                                                <label style=\"display: block;width: 80px;height: 30px;line-height: 30px;float: left;\">${n.minValue}：</label>\\n                                                <input data-tips=\"${n.minValue} ${n.color}\" data-func=\"background\" class=\"luckysheet-conditionformat-config-color\" type=\"text\" value=\"rgb(248, 105, 107)\" style=\"display: none;\">\\n                                            </div>\\n                                        </div>\\n                                        <div class=\"type1Box iconsBox\" style=\"display: none;\">\\n                                            <label>${n.fillType}：</label>\\n                                            <div class=\"showbox\">\\n                                                <div class=\"model\" data-len=\"3\" data-leftmin=\"0\" data-top=\"0\" title=\"${n.threeWayArrow}(${n.multicolor})\" style=\"background-position: 0 0;\"></div>\\n                                                <span class=\"ui-selectmenu-icon ui-icon ui-icon-triangle-1-s\" style=\"margin-top: 2px;\"></span>\\n                                            </div>\\n                                            <ul>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"0\" title=\"${n.threeWayArrow}(${n.multicolor})\" style=\"background-position: 0 0;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"5\" data-top=\"0\" title=\"${n.threeWayArrow}(${n.grayColor})\" style=\"background-position: -131px 0;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"1\" title=\"${n.threeTriangles}\" style=\"background-position: 0 -20px;\"></div></li>\\n                                                <li><div data-len=\"4\" data-leftmin=\"0\" data-top=\"2\" title=\"${n.fourWayArrow}(${n.multicolor})\" style=\"background-position: 0 -40px;\"></div></li>\\n                                                <li><div data-len=\"4\" data-leftmin=\"5\" data-top=\"1\" title=\"${n.fourWayArrow}(${n.grayColor})\" style=\"background-position: -131px -20px;\"></div></li>\\n                                                <li><div data-len=\"5\" data-leftmin=\"0\" data-top=\"3\" title=\"${n.fiveWayArrow}(${n.multicolor})\" style=\"background-position: 0 -60px;\"></div></li>\\n                                                <li><div data-len=\"5\" data-leftmin=\"5\" data-top=\"2\" title=\"${n.fiveWayArrow}(${n.grayColor})\" style=\"background-position: -131px -40px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"4\" title=\"${n.threeColorTrafficLight}(${n.rimless})\" style=\"background-position: 0 -80px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"5\" data-top=\"4\" title=\"${n.threeColorTrafficLight}(${n.bordered})\" style=\"background-position: -131px -80px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"5\" title=\"${n.threeSigns}\" style=\"background-position: 0 -100px;\"></div></li>\\n                                                <li><div data-len=\"4\" data-leftmin=\"5\" data-top=\"5\" title=\"${n.fourColorTrafficLight}\" style=\"background-position: -131px -100px;\"></div></li>\\n                                                <li><div data-len=\"4\" data-leftmin=\"0\" data-top=\"6\" title=\"${n.greenRedBlackGradient}\" style=\"background-position: 0 -120px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"7\" title=\"${n.threeSymbols}(${n.circled})\" style=\"background-position: 0 -140px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"5\" data-top=\"7\" title=\"${n.threeSymbols}(${n.noCircle})\" style=\"background-position: -131px -140px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"8\" title=\"${n.tricolorFlag}\" style=\"background-position: 0 -160px;\"></div></li>\\n                                                <li><div data-len=\"3\" data-leftmin=\"0\" data-top=\"9\" title=\"${n.threeStars}\" style=\"background-position: 0 -180px;\"></div></li>\\n                                                <li><div data-len=\"5\" data-leftmin=\"0\" data-top=\"10\" title=\"${n.fiveQuadrantDiagram}\" style=\"background-position: 0 -200px;\"></div></li>\\n                                                <li><div data-len=\"5\" data-leftmin=\"0\" data-top=\"11\" title=\"${n.fiveBoxes}\" style=\"background-position: 0 -220px;\"></div></li>\\n                                                <li><div data-len=\"4\" data-leftmin=\"5\" data-top=\"9\" title=\"${n.grade4}\" style=\"background-position: -131px -180px;\"></div></li>\\n                                                <li><div data-len=\"5\" data-leftmin=\"5\" data-top=\"10\" title=\"${n.grade5}\" style=\"background-position: -131px -200px;\"></div></li>\\n                                            </ul>\\n                                        </div>\\n                                    </div>`;break;case 1:t=`<div class=\"title\">${n.ruleTypeItem2_title}：</div>\\n                                    <div style=\"height: 30px;margin-bottom: 10px;\">\\n                                        <select id=\"type1\">\\n                                            <option value=\"number\">${n.cellValue}</option>\\n                                            <option value=\"text\">${n.specificText}</option>\\n                                            <option value=\"date\">${n.occurrence}</option>\\n                                        </select>\\n                                        <div>\\n                                            <div class=\"type1Box numberBox\">\\n                                                <select id=\"type2\">\\n                                                    <option value=\"greaterThan\">${n.greaterThan}</option>\\n                                                    <option value=\"lessThan\">${n.lessThan}</option>\\n                                                    <option value=\"betweenness\">${n.between}</option>\\n                                                    <option value=\"equal\">${n.equal}</option>\\n                                                </select>\\n                                                <div class=\"inpbox range\" id=\"conditionVal\">\\n                                                    <input class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${n.selectCell}\"></i>\\n                                                </div>\\n                                                <span class=\"txt\" style=\"display: none;\">${n.in}</span>\\n                                                <div class=\"inpbox range\" id=\"conditionVal2\" style=\"display: none;\">\\n                                                    <input class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${n.selectDataRange}\"></i>\\n                                                </div>\\n                                            </div>\\n                                            <div class=\"type1Box textBox\" style=\"display: none;\">\\n                                                <select id=\"type2\">\\n                                                    <option value=\"\">${n.contain}</option>\\n                                                </select>\\n                                                <div class=\"inpbox range\" id=\"conditionVal\">\\n                                                    <input class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${n.selectCell}\"></i>\\n                                                </div>\\n                                            </div>\\n                                            <div class=\"type1Box dateBox\" style=\"display: none;\">\\n                                                <div style=\"width: 162px;\" class=\"inpbox\">\\n                                                    <input style=\"width: 150px;\" id=\"daterange-btn\" readonly=\"readonly\" placeholder=\"${n.pleaseSelectADate}\"/>\\n                                                </div>\\n                                            </div>\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"title\">${n.setFormat}: </div>${a}`;break;case 2:t=`<div class=\"title\">${n.ruleTypeItem3_title}：</div>\\n                                    <div style=\"height: 30px;margin-bottom: 10px;\">\\n                                        <select id=\"type1\">\\n                                            <option value=\"top\">${n.top}</option>\\n                                            <option value=\"last\">${n.last}</option>\\n                                        </select>\\n                                        <div class=\"inpbox\" id=\"conditionVal\">\\n                                            <input class=\"formulaInputFocus\" type=\"number\" value=\"10\"/>\\n                                        </div>\\n                                        <input id=\"isPercent\" type=\"checkbox\"/>\\n                                        <label for=\"isPercent\" class=\"txt\">${n.selectRange_percent}</label>\\n                                    </div>\\n                                    <div class=\"title\">${n.setFormat}：</div>${a}`;break;case 3:t=`<div class=\"title\">${n.ruleTypeItem4_title}：</div>\\n                                    <div style=\"height: 30px;margin-bottom: 10px;\">\\n                                        <select id=\"type1\">\\n                                            <option value=\"AboveAverage\">${n.above}</option>\\n                                            <option value=\"SubAverage\">${n.below}</option>\\n                                        </select>\\n                                        <span class=\"txt\">${n.selectRange_average}</span>\\n                                    </div>\\n                                    <div class=\"title\">${n.setFormat}：</div>${a}`;break;case 4:t=`<div class=\"title\">${n.all}：</div>\\n                                    <div style=\"height: 30px;margin-bottom: 10px;\">\\n                                        <select id=\"type1\">\\n                                            <option value=\"0\">${n.duplicateValue}</option>\\n                                            <option value=\"1\">${n.uniqueValue}</option>\\n                                        </select>\\n                                        <span class=\"txt\">${n.selectRange_value}</span>\\n                                    </div>\\n                                    <div class=\"title\">${n.setFormat}：</div>${a}`;break;case 5:t=`<div class=\"title\">${n.ruleTypeItem2_title}：</div>\\n                                    <div style=\"height: 30px;margin-bottom: 10px;\">\\n                                        <div class=\"inpbox range\" id=\"formulaConditionVal\" style=\"width: 250px;\">\\n                                            <input class=\"formulaInputFocus\" style=\"width: 200px;\"/>\\n                                            <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${n.selectCell}\"></i>\\n                                        </div>\\n                                    </div>\\n                                    <div class=\"title\">${n.setFormat}: </div>${a}`}return t},daterangeInit:function(e){let t=X().conditionformat,n=/^\\d{4}-\\d{2}-\\d{2}$/,a=/^\\d{4}-\\d{2}-\\d{2} to \\d{4}-\\d{2}-\\d{2}$/;$(\".ranges_1 ul\").remove();let l=$(\"#\"+e).find(\"#daterange-btn\");l.flatpickr({mode:\"range\",onChange:(e,r)=>{let[o,i]=e,s=[t.yesterday,t.today],c=[t.lastWeek,t.thisWeek,t.lastMonth,t.thisMonth,t.lastYear,t.thisYear,t.last7days,t.last30days];r==t.all?l.val(\"\"):s.indexOf(r)>-1?l.val((0,bo.default)(o).format(\"YYYY/MM/DD\")):c.indexOf(r)>-1&&l.val((0,bo.default)(o).format(\"YYYY/MM/DD\")+\"-\"+(0,bo.default)(i).format(\"YYYY/MM/DD\"));let u=n.test(r),d=a.test(r);u?l.val((0,bo.default)(o).format(\"YYYY/MM/DD\")):d&&l.val((0,bo.default)(o).format(\"YYYY/MM/DD\")+\"-\"+(0,bo.default)(i).format(\"YYYY/MM/DD\"))}})},CFSplitRange:function(e,t,n,a){let l=[],r=n.row[0]-t.row[0],o=n.column[0]-t.column[0],i=e.row[0],s=e.row[1],c=e.column[0],u=e.column[1];return i>=t.row[0]&&s<=t.row[1]&&c>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[i+r,s+r],column:[c+o,u+o]}]:\"restPart\"==a?l=[]:\"operatePart\"==a&&(l=[{row:[i+r,s+r],column:[c+o,u+o]}]):i>=t.row[0]&&i<=t.row[1]&&c>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[t.row[1]+1,s],column:[c,u]},{row:[i+r,t.row[1]+r],column:[c+o,u+o]}]:\"restPart\"==a?l=[{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[i+r,t.row[1]+r],column:[c+o,u+o]}]):s>=t.row[0]&&s<=t.row[1]&&c>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0]+r,s+r],column:[c+o,u+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,s+r],column:[c+o,u+o]}]):i<t.row[0]&&s>t.row[1]&&c>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[1]+1,s],column:[c,u]},{row:[t.row[0]+r,t.row[1]+r],column:[c+o,u+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,t.row[1]+r],column:[c+o,u+o]}]):c>=t.column[0]&&c<=t.column[1]&&i>=t.row[0]&&s<=t.row[1]?\"allPart\"==a?l=[{row:[i,s],column:[t.column[1]+1,u]},{row:[i+r,s+r],column:[c+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,s],column:[t.column[1]+1,u]}]:\"operatePart\"==a&&(l=[{row:[i+r,s+r],column:[c+o,t.column[1]+o]}]):u>=t.column[0]&&u<=t.column[1]&&i>=t.row[0]&&s<=t.row[1]?\"allPart\"==a?l=[{row:[i,s],column:[c,t.column[0]-1]},{row:[i+r,s+r],column:[t.column[0]+o,u+o]}]:\"restPart\"==a?l=[{row:[i,s],column:[c,t.column[0]-1]}]:\"operatePart\"==a&&(l=[{row:[i+r,s+r],column:[t.column[0]+o,u+o]}]):c<t.column[0]&&u>t.column[1]&&i>=t.row[0]&&s<=t.row[1]?\"allPart\"==a?l=[{row:[i,s],column:[c,t.column[0]-1]},{row:[i,s],column:[t.column[1]+1,u]},{row:[i+r,s+r],column:[t.column[0]+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,s],column:[c,t.column[0]-1]},{row:[i,s],column:[t.column[1]+1,u]}]:\"operatePart\"==a&&(l=[{row:[i+r,s+r],column:[t.column[0]+o,t.column[1]+o]}]):i>=t.row[0]&&i<=t.row[1]&&c>=t.column[0]&&c<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]},{row:[i+r,t.row[1]+r],column:[c+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[i+r,t.row[1]+r],column:[c+o,t.column[1]+o]}]):i>=t.row[0]&&i<=t.row[1]&&u>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[1]],column:[c,t.column[0]-1]},{row:[t.row[1]+1,s],column:[c,u]},{row:[i+r,t.row[1]+r],column:[t.column[0]+o,u+o]}]:\"restPart\"==a?l=[{row:[i,t.row[1]],column:[c,t.column[0]-1]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[i+r,t.row[1]+r],column:[t.column[0]+o,u+o]}]):s>=t.row[0]&&s<=t.row[1]&&c>=t.column[0]&&c<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],s],column:[t.column[1]+1,u]},{row:[t.row[0]+r,s+r],column:[c+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],s],column:[t.column[1]+1,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,s+r],column:[c+o,t.column[1]+o]}]):s>=t.row[0]&&s<=t.row[1]&&u>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],s],column:[c,t.column[0]-1]},{row:[t.row[0]+r,s+r],column:[t.column[0]+o,u+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],s],column:[c,t.column[0]-1]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,s+r],column:[t.column[0]+o,u+o]}]):i<t.row[0]&&s>t.row[1]&&c>=t.column[0]&&c<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]},{row:[t.row[0]+r,t.row[1]+r],column:[c+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,t.row[1]+r],column:[c+o,t.column[1]+o]}]):i<t.row[0]&&s>t.row[1]&&u>=t.column[0]&&u<=t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],t.row[1]],column:[c,t.column[0]-1]},{row:[t.row[1]+1,s],column:[c,u]},{row:[t.row[0]+r,t.row[1]+r],column:[t.column[0]+o,u+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],t.row[1]],column:[c,t.column[0]-1]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,t.row[1]+r],column:[t.column[0]+o,u+o]}]):c<t.column[0]&&u>t.column[1]&&i>=t.row[0]&&i<=t.row[1]?\"allPart\"==a?l=[{row:[i,t.row[1]],column:[c,t.column[0]-1]},{row:[i,t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]},{row:[i+r,t.row[1]+r],column:[t.column[0]+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,t.row[1]],column:[c,t.column[0]-1]},{row:[i,t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[i+r,t.row[1]+r],column:[t.column[0]+o,t.column[1]+o]}]):c<t.column[0]&&u>t.column[1]&&s>=t.row[0]&&s<=t.row[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],s],column:[c,t.column[0]-1]},{row:[t.row[0],s],column:[t.column[1]+1,u]},{row:[t.row[0]+r,s+r],column:[t.column[0]+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],s],column:[c,t.column[0]-1]},{row:[t.row[0],s],column:[t.column[1]+1,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,s+r],column:[t.column[0]+o,t.column[1]+o]}]):i<t.row[0]&&s>t.row[1]&&c<t.column[0]&&u>t.column[1]?\"allPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],t.row[1]],column:[c,t.column[0]-1]},{row:[t.row[0],t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]},{row:[t.row[0]+r,t.row[1]+r],column:[t.column[0]+o,t.column[1]+o]}]:\"restPart\"==a?l=[{row:[i,t.row[0]-1],column:[c,u]},{row:[t.row[0],t.row[1]],column:[c,t.column[0]-1]},{row:[t.row[0],t.row[1]],column:[t.column[1]+1,u]},{row:[t.row[1]+1,s],column:[c,u]}]:\"operatePart\"==a&&(l=[{row:[t.row[0]+r,t.row[1]+r],column:[t.column[0]+o,t.column[1]+o]}]):\"allPart\"==a||\"restPart\"==a?l=[{row:[i,s],column:[c,u]}]:\"operatePart\"==a&&(l=[]),l},getcolorGradation:function(e,t,n,a,l){let r=e.split(\",\"),o=parseInt(r[0].split(\"(\")[1]),i=parseInt(r[1]),s=parseInt(r[2].split(\")\")[0]),c=t.split(\",\"),u=parseInt(c[0].split(\"(\")[1]),d=parseInt(c[1]),h=parseInt(c[2].split(\")\")[0]);return\"rgb(\"+Math.round(o-(o-u)/(n-a)*(n-l))+\", \"+Math.round(i-(i-d)/(n-a)*(n-l))+\", \"+Math.round(s-(s-h)/(n-a)*(n-l))+\")\"},getCFPartRange:function(e,n,a){let l=[],r=t.luckysheetfile[Mt(e)].luckysheet_conditionformat_save;if(null!=r&&r.length>0)e:for(let e=0;e<r.length;e++){let t=r[e].cellrange;for(let n=0;n<t.length;n++){let a=t[n].row[0],o=t[n].row[1],i=t[n].column[0],s=t[n].column[1];for(let t=0;t<range.length;t++)if(range[t].row[0]>=a&&range[t].row[0]<=o||range[t].row[1]>=a&&range[t].row[1]<=o||range[t].column[0]>=i&&range[t].column[0]<=s||range[t].column[1]>=i&&range[t].column[1]<=s){l.push(r[e]);continue e}}}return l},checksCF:function(e,t,n){return null!=n&&e+\"_\"+t in n?n[e+\"_\"+t]:null},getComputeMap:function(e){let n=Mt(t.currentSheetIndex);null!=e&&(n=Mt(e));let a=t.luckysheetfile[n].luckysheet_conditionformat_save,l=t.luckysheetfile[n].data;return null==l?null:this.compute(a,l)},compute:function(e,n){let a=this;null==e&&(e=[]);let l={};if(e.length>0)for(let t=0;t<e.length;t++){let r=e[t].type,o=e[t].cellrange,i=e[t].format;if(\"dataBar\"==r){let e=null,t=null;for(let a=0;a<o.length;a++)for(let l=o[a].row[0];l<=o[a].row[1];l++)for(let r=o[a].column[0];r<=o[a].column[1];r++){if(null==n[l]||null==n[l][r])continue;let a=n[l][r];\"object\"==ad(a)&&null!=a.ct&&\"n\"==a.ct.t&&null!=a.v&&((null==e||parseInt(a.v)>e)&&(e=parseInt(a.v)),(null==t||parseInt(a.v)<t)&&(t=parseInt(a.v)))}if(null!=e&&null!=t)if(t<0){let a=Math.round(e/(e-t)*10)/10,r=Math.round(Math.abs(t)/(e-t)*10)/10;for(let s=0;s<o.length;s++)for(let c=o[s].row[0];c<=o[s].row[1];c++)for(let u=o[s].column[0];u<=o[s].column[1];u++){if(null==n[c]||null==n[c][u])continue;let o=n[c][u];if(\"object\"==ad(o)&&null!=o.ct&&\"n\"==o.ct.t&&null!=o.v){if(parseInt(o.v)<0){let e=Math.round(Math.abs(parseInt(o.v))/Math.abs(t)*100)/100;c+\"_\"+u in l?l[c+\"_\"+u].dataBar={valueType:\"minus\",minusLen:r,valueLen:e,format:i}:l[c+\"_\"+u]={dataBar:{valueType:\"minus\",minusLen:r,valueLen:e,format:i}}}if(parseInt(o.v)>0){let t=Math.round(parseInt(o.v)/e*100)/100;c+\"_\"+u in l?l[c+\"_\"+u].dataBar={valueType:\"plus\",plusLen:a,minusLen:r,valueLen:t,format:i}:l[c+\"_\"+u]={dataBar:{valueType:\"plus\",plusLen:a,minusLen:r,valueLen:t,format:i}}}}}}else{let t=1;for(let a=0;a<o.length;a++)for(let r=o[a].row[0];r<=o[a].row[1];r++)for(let s=o[a].column[0];s<=o[a].column[1];s++){if(null==n[r]||null==n[r][s])continue;let a=n[r][s];if(\"object\"==ad(a)&&null!=a.ct&&\"n\"==a.ct.t&&null!=a.v){let n;n=0==e?1:Math.round(parseInt(a.v)/e*100)/100,r+\"_\"+s in l?l[r+\"_\"+s].dataBar={valueType:\"plus\",plusLen:t,valueLen:n,format:i}:l[r+\"_\"+s]={dataBar:{valueType:\"plus\",plusLen:t,valueLen:n,format:i}}}}}}else if(\"colorGradation\"==r){let e=null,t=null,r=0,s=0;for(let a=0;a<o.length;a++)for(let l=o[a].row[0];l<=o[a].row[1];l++)for(let i=o[a].column[0];i<=o[a].column[1];i++){if(null==n[l]||null==n[l][i])continue;let a=n[l][i];\"object\"==ad(a)&&null!=a.ct&&\"n\"==a.ct.t&&null!=a.v&&(s++,r+=parseInt(a.v),(null==e||parseInt(a.v)>e)&&(e=parseInt(a.v)),(null==t||parseInt(a.v)<t)&&(t=parseInt(a.v)))}if(null!=e&&null!=t)if(3==i.length){let c=Math.floor(r/s);for(let r=0;r<o.length;r++)for(let s=o[r].row[0];s<=o[r].row[1];s++)for(let u=o[r].column[0];u<=o[r].column[1];u++){if(null==n[s]||null==n[s][u])continue;let r=n[s][u];\"object\"==ad(r)&&null!=r.ct&&\"n\"==r.ct.t&&null!=r.v&&(parseInt(r.v)==t?s+\"_\"+u in l?l[s+\"_\"+u].cellColor=i[2]:l[s+\"_\"+u]={cellColor:i[2]}:parseInt(r.v)>t&&parseInt(r.v)<c?s+\"_\"+u in l?l[s+\"_\"+u].cellColor=a.getcolorGradation(i[2],i[1],t,c,parseInt(r.v)):l[s+\"_\"+u]={cellColor:a.getcolorGradation(i[2],i[1],t,c,parseInt(r.v))}:parseInt(r.v)==c?s+\"_\"+u in l?l[s+\"_\"+u].cellColor=i[1]:l[s+\"_\"+u]={cellColor:i[1]}:parseInt(r.v)>c&&parseInt(r.v)<e?s+\"_\"+u in l?l[s+\"_\"+u].cellColor=a.getcolorGradation(i[1],i[0],c,e,parseInt(r.v)):l[s+\"_\"+u]={cellColor:a.getcolorGradation(i[1],i[0],c,e,parseInt(r.v))}:parseInt(r.v)==e&&(s+\"_\"+u in l?l[s+\"_\"+u].cellColor=i[0]:l[s+\"_\"+u]={cellColor:i[0]}))}}else if(2==i.length)for(let r=0;r<o.length;r++)for(let s=o[r].row[0];s<=o[r].row[1];s++)for(let c=o[r].column[0];c<=o[r].column[1];c++){if(null==n[s]||null==n[s][c])continue;let r=n[s][c];\"object\"==ad(r)&&null!=r.ct&&\"n\"==r.ct.t&&null!=r.v&&(parseInt(r.v)==t?s+\"_\"+c in l?l[s+\"_\"+c].cellColor=i[1]:l[s+\"_\"+c]={cellColor:i[1]}:parseInt(r.v)>t&&parseInt(r.v)<e?s+\"_\"+c in l?l[s+\"_\"+c].cellColor=a.getcolorGradation(i[1],i[0],t,e,parseInt(r.v)):l[s+\"_\"+c]={cellColor:a.getcolorGradation(i[1],i[0],t,e,parseInt(r.v))}:parseInt(r.v)==e&&(s+\"_\"+c in l?l[s+\"_\"+c].cellColor=i[0]:l[s+\"_\"+c]={cellColor:i[0]}))}}else if(\"icons\"==r){let e=parseInt(i.len),t=parseInt(i.leftMin),a=parseInt(i.top),r=null,s=null;for(let e=0;e<o.length;e++)for(let t=o[e].row[0];t<=o[e].row[1];t++)for(let a=o[e].column[0];a<=o[e].column[1];a++){if(null==n[t]||null==n[t][a])continue;let e=n[t][a];\"object\"==ad(e)&&null!=e.ct&&\"n\"==e.ct.t&&null!=e.v&&((null==r||parseInt(e.v)>r)&&(r=parseInt(e.v)),(null==s||parseInt(e.v)<s)&&(s=parseInt(e.v)))}if(null!=r&&null!=s){let i=Math.floor((r-s+1)/e),c=(r-s+1)%e;if(3==e){let e,u,d;2==c?(e=[s,s+i],u=[s+i+1,s+2*i],d=[s+2*i+1,r]):(e=[s,s+i-1],u=[s+i,s+2*i-1],d=[s+2*i,r]);for(let r=0;r<o.length;r++)for(let i=o[r].row[0];i<=o[r].row[1];i++)for(let s=o[r].column[0];s<=o[r].column[1];s++){if(null==n[i]||null==n[i][s])continue;let r=n[i][s];\"object\"==ad(r)&&null!=r.ct&&\"n\"==r.ct.t&&null!=r.v&&(parseInt(r.v)>=e[0]&&parseInt(r.v)<=e[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+2,top:a}:l[i+\"_\"+s]={icons:{left:t+2,top:a}}:parseInt(r.v)>=u[0]&&parseInt(r.v)<=u[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+1,top:a}:l[i+\"_\"+s]={icons:{left:t+1,top:a}}:parseInt(r.v)>=d[0]&&parseInt(r.v)<=d[1]&&(i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t,top:a}:l[i+\"_\"+s]={icons:{left:t,top:a}}))}}else if(4==e){let e,u,d,h;2==c?(e=[s,s+i],u=[s+i+1,s+2*i],d=[s+2*i+1,s+3*i],h=[s+3*i+1,r]):3==c?(e=[s,s+i],u=[s+i+1,s+2*i],d=[s+2*i+1,s+3*i+1],h=[s+3*i+2,r]):(e=[s,s+i-1],u=[s+i,s+2*i-1],d=[s+2*i,s+3*i-1],h=[s+3*i,r]);for(let r=0;r<o.length;r++)for(let i=o[r].row[0];i<=o[r].row[1];i++)for(let s=o[r].column[0];s<=o[r].column[1];s++){if(null==n[i]||null==n[i][s])continue;let r=n[i][s];\"object\"==ad(r)&&null!=r.ct&&\"n\"==r.ct.t&&null!=r.v&&(parseInt(r.v)>=e[0]&&parseInt(r.v)<=e[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+3,top:a}:l[i+\"_\"+s]={icons:{left:t+3,top:a}}:parseInt(r.v)>=u[0]&&parseInt(r.v)<=u[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+2,top:a}:l[i+\"_\"+s]={icons:{left:t+2,top:a}}:parseInt(r.v)>=d[0]&&parseInt(r.v)<=d[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+1,top:a}:l[i+\"_\"+s]={icons:{left:t+1,top:a}}:parseInt(r.v)>=h[0]&&parseInt(r.v)<=h[1]&&(i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t,top:a}:l[i+\"_\"+s]={icons:{left:t,top:a}}))}}else if(5==e){let e,u,d,h,f;2==c?(e=[s,s+i],u=[s+i+1,s+2*i],d=[s+2*i+1,s+3*i],h=[s+3*i+1,s+4*i],f=[s+4*i+1,r]):3==c?(e=[s,s+i],u=[s+i+1,s+2*i],d=[s+2*i+1,s+3*i+1],h=[s+3*i+2,s+4*i+1],f=[s+4*i+2,r]):4==c?(e=[s,s+i],u=[s+i+1,s+2*i+1],d=[s+2*i+2,s+3*i+1],h=[s+3*i+2,s+4*i+2],f=[s+4*i+3,r]):(e=[s,s+i-1],u=[s+i,s+2*i-1],d=[s+2*i,s+3*i-1],h=[s+3*i,s+4*i-1],f=[s+4*i,r]);for(let r=0;r<o.length;r++)for(let i=o[r].row[0];i<=o[r].row[1];i++)for(let s=o[r].column[0];s<=o[r].column[1];s++){if(null==n[i]||null==n[i][s])continue;let r=n[i][s];\"object\"==ad(r)&&null!=r.ct&&\"n\"==r.ct.t&&null!=r.v&&(parseInt(r.v)>=e[0]&&parseInt(r.v)<=e[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+4,top:a}:l[i+\"_\"+s]={icons:{left:t+4,top:a}}:parseInt(r.v)>=u[0]&&parseInt(r.v)<=u[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+3,top:a}:l[i+\"_\"+s]={icons:{left:t+3,top:a}}:parseInt(r.v)>=d[0]&&parseInt(r.v)<=d[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+2,top:a}:l[i+\"_\"+s]={icons:{left:t+2,top:a}}:parseInt(r.v)>=h[0]&&parseInt(r.v)<=h[1]?i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t+1,top:a}:l[i+\"_\"+s]={icons:{left:t+1,top:a}}:parseInt(r.v)>=f[0]&&parseInt(r.v)<=f[1]&&(i+\"_\"+s in l?l[i+\"_\"+s].icons={left:t,top:a}:l[i+\"_\"+s]={icons:{left:t,top:a}}))}}}}else{let a=e[t].conditionName,r=e[t].conditionValue[0],s=e[t].conditionValue[1],c=i.textColor,u=i.cellColor;for(let e=0;e<o.length;e++)if(\"greaterThan\"==a||\"lessThan\"==a||\"equal\"==a||\"textContains\"==a)for(let t=o[e].row[0];t<=o[e].row[1];t++)for(let i=o[e].column[0];i<=o[e].column[1];i++){if(null==n[t]||null==n[t][i])continue;let e=n[t][i];\"object\"!=ad(e)||_(e.v)||(\"greaterThan\"==a&&e.v>r||\"lessThan\"==a&&e.v<r||\"equal\"==a&&e.v==r||\"textContains\"==a&&-1!=e.v.toString().indexOf(r))&&(t+\"_\"+i in l?(l[t+\"_\"+i].textColor=c,l[t+\"_\"+i].cellColor=u):l[t+\"_\"+i]={textColor:c,cellColor:u})}else if(\"betweenness\"==a){let t,a;r>s?(t=r,a=s):(t=s,a=r);for(let r=o[e].row[0];r<=o[e].row[1];r++)for(let i=o[e].column[0];i<=o[e].column[1];i++){if(null==n[r]||null==n[r][i])continue;let e=n[r][i];\"object\"!=ad(e)||_(e.v)||e.v>=a&&e.v<=t&&(r+\"_\"+i in l?(l[r+\"_\"+i].textColor=c,l[r+\"_\"+i].cellColor=u):l[r+\"_\"+i]={textColor:c,cellColor:u})}}else if(\"occurrenceDate\"==a){let t,a;if(-1==r.toString().indexOf(\"-\"))t=_a(r)[2],a=_a(r)[2];else{let e=r.toString().split(\"-\");t=_a(e[1].trim())[2],a=_a(e[0].trim())[2]}for(let r=o[e].row[0];r<=o[e].row[1];r++)for(let i=o[e].column[0];i<=o[e].column[1];i++)if(null!=n[r]&&null!=n[r][i]&&null!=n[r][i].ct&&\"d\"==n[r][i].ct.t){let e=Vn(r,i,n);e>=a&&e<=t&&(r+\"_\"+i in l?(l[r+\"_\"+i].textColor=c,l[r+\"_\"+i].cellColor=u):l[r+\"_\"+i]={textColor:c,cellColor:u})}}else if(\"duplicateValue\"==a){let t={};for(let a=o[e].row[0];a<=o[e].row[1];a++)for(let l=o[e].column[0];l<=o[e].column[1];l++){let e=Vn(a,l,n);e in t||(t[e]=[]),t[e].push({r:a,c:l})}if(\"0\"==r)for(let e in t)if(\"null\"!=e&&\"undefined\"!=e&&t[e].length>1)for(let n=0;n<t[e].length;n++)t[e][n].r+\"_\"+t[e][n].c in l?(l[t[e][n].r+\"_\"+t[e][n].c].textColor=c,l[t[e][n].r+\"_\"+t[e][n].c].cellColor=u):l[t[e][n].r+\"_\"+t[e][n].c]={textColor:c,cellColor:u};if(\"1\"==r)for(let e in t)\"null\"!=e&&\"undefined\"!=e&&1==t[e].length&&(t[e][0].r+\"_\"+t[e][0].c in l?(l[t[e][0].r+\"_\"+t[e][0].c].textColor=c,l[t[e][0].r+\"_\"+t[e][0].c].cellColor=u):l[t[e][0].r+\"_\"+t[e][0].c]={textColor:c,cellColor:u})}else if(\"top10\"==a||\"top10%\"==a||\"last10\"==a||\"last10%\"==a||\"AboveAverage\"==a||\"SubAverage\"==a){let t=[];for(let a=o[e].row[0];a<=o[e].row[1];a++)for(let l=o[e].column[0];l<=o[e].column[1];l++)null==n[a]||null==n[a][l]||null!=n[a][l].ct&&\"n\"==n[a][l].ct.t&&t.push(Vn(a,l,n));if(\"top10\"==a||\"top10%\"==a||\"last10\"==a||\"last10%\"==a){for(let e=0;e<t.length;e++)for(let n=0;n<t.length-1-e;n++)if(t[n]<t[n+1]){let e=t[n];t[n]=t[n+1],t[n+1]=e}let i;\"top10\"==a?i=t.slice(0,r):\"top10%\"==a?i=t.slice(0,Math.floor(r*t.length/100)):\"last10\"==a?i=t.slice(t.length-r,t.length):\"last10%\"==a&&(i=t.slice(t.length-Math.floor(r*t.length/100),t.length));for(let t=o[e].row[0];t<=o[e].row[1];t++)for(let a=o[e].column[0];a<=o[e].column[1];a++){if(null==n[t]||null==n[t][a])continue;let e=Vn(t,a,n);-1!=i.indexOf(e)&&(t+\"_\"+a in l?(l[t+\"_\"+a].textColor=c,l[t+\"_\"+a].cellColor=u):l[t+\"_\"+a]={textColor:c,cellColor:u})}}else if(\"AboveAverage\"==a||\"SubAverage\"==a){let r=0;for(let e=0;e<t.length;e++)r+=t[e];let i=r/t.length;if(\"AboveAverage\"==a)for(let t=o[e].row[0];t<=o[e].row[1];t++)for(let a=o[e].column[0];a<=o[e].column[1];a++)null!=n[t]&&null!=n[t][a]&&Vn(t,a,n)>i&&(t+\"_\"+a in l?(l[t+\"_\"+a].textColor=c,l[t+\"_\"+a].cellColor=u):l[t+\"_\"+a]={textColor:c,cellColor:u});else if(\"SubAverage\"==a)for(let t=o[e].row[0];t<=o[e].row[1];t++)for(let a=o[e].column[0];a<=o[e].column[1];a++)null!=n[t]&&null!=n[t][a]&&Vn(t,a,n)<i&&(t+\"_\"+a in l?(l[t+\"_\"+a].textColor=c,l[t+\"_\"+a].cellColor=u):l[t+\"_\"+a]={textColor:c,cellColor:u})}}else if(\"regExp\"==a){let t=new RegExp(r);null==s&&(s=1);for(let a=o[e].row[0];a<=o[e].row[1];a++)for(let r=o[e].column[0];r<=o[e].column[1];r++){if(null==n[a]||null==n[a][r])continue;let e=n[a][r];if(\"object\"!=ad(e)||_(e.v))continue;let o=t.test(e.v);(1==s&&o||0==s&&!o)&&(a+\"_\"+r in l?(l[a+\"_\"+r].textColor=c,l[a+\"_\"+r].cellColor=u):l[a+\"_\"+r]={textColor:c,cellColor:u})}}else if(\"sort\"==a)for(let t=o[e].row[0];t<=o[e].row[1];t++)for(let a=o[e].column[0];a<=o[e].column[1];a++){if(null==n[t]||null==n[t][a])continue;let e=n[t][a];if(t<1)continue;let o=n[t-1][a];null!=o&&(\"object\"!=ad(e)||_(e.v)||($.inArray(r,[0,\"asc\",\"0\"])>-1&&e.v>o.v||$.inArray(r,[1,\"1\",\"desc\"])>-1&&e.v<o.v)&&(t+\"_\"+a in l?(l[t+\"_\"+a].textColor=c,l[t+\"_\"+a].cellColor=u):l[t+\"_\"+a]={textColor:c,cellColor:u}))}else if(\"formula\"==a){let t=o[e].row[0],n=o[e].row[1],a=o[e].column[0],i=o[e].column[1],s=r;\"=\"!=r.toString().slice(0,1)&&(s=\"=\"+r);for(let e=t;e<=n;e++)for(let n=a;n<=i;n++){let r=s,o=e-t,i=n-a;o>0&&(r=\"=\"+wi.functionCopy(r,\"down\",o)),i>0&&(r=\"=\"+wi.functionCopy(r,\"right\",i));let d=wi.execfunction(r)[1];\"boolean\"!=typeof d&&(d=!!Number(d)),d&&(e+\"_\"+n in l?(l[e+\"_\"+n].textColor=c,l[e+\"_\"+n].cellColor=u):l[e+\"_\"+n]={textColor:c,cellColor:u})}}}}return t.conditionFormatCells=l,l},updateItem:function(e,n,a){if(!Jl(t.currentSheetIndex))return;let l,r=this,o=Mt(t.currentSheetIndex),i=$.extend(!0,[],t.luckysheetfile),s=r.getHistoryRules(i);if(\"delSheet\"==e)l=[];else{let r={type:e,cellrange:n,format:a};l=null==t.luckysheetfile[o].luckysheet_conditionformat_save?[]:t.luckysheetfile[o].luckysheet_conditionformat_save,l.push(r)}t.luckysheetfile[o].luckysheet_conditionformat_save=l;let c=$.extend(!0,[],t.luckysheetfile),u=r.getCurrentRules(c);r.ref(s,u),yo.allowUpdate&&yo.saveParam(\"all\",t.currentSheetIndex,l,{k:\"luckysheet_conditionformat_save\"})},getHistoryRules:function(e){let t=[];for(let n=0;n<e.length;n++)t.push({sheetIndex:e[n].index,luckysheet_conditionformat_save:e[n].luckysheet_conditionformat_save});return t},getCurrentRules:function(e){let t=[];for(let n=0;n<e.length;n++)t.push({sheetIndex:e[n].index,luckysheet_conditionformat_save:e[n].luckysheet_conditionformat_save});return t},ref:function(e,n){if(t.clearjfundo){t.jfundo.length=0;let a={type:\"updateCF\"};a.data={historyRules:e,currentRules:n},t.jfredo.push(a)}setTimeout((function(){uo()}),1)}}})),So=y((()=>{Xu(),ed(),To(),dr(),gn(),Co(),Ci(),Il(),Yn(),da(),E(),fo(),Ma(),qt(),_d(),x(),K(),il(),wo={clearcopy:function(e){let n=window.clipboardData;n||e&&(n=e.originalEvent.clipboardData);if(t.luckysheet_selection_range=[],Vu(),n)return n.setData(\"Text\",\" \"),!1;{let e=$(\"#luckysheet-copy-content\").css(\"visibility\",\"hidden\");e.val(\" \"),e.focus(),e.select(),setTimeout((function(){e.blur().css(\"visibility\",\"visible\")}),10)}},getHtmlBorderStyle:function(e,t){let n=\"\";return(e={0:\"none\",1:\"Thin\",2:\"Hair\",3:\"Dotted\",4:\"Dashed\",5:\"DashDot\",6:\"DashDotDot\",7:\"Double\",8:\"Medium\",9:\"MediumDashed\",10:\"MediumDashDot\",11:\"MediumDashDotDot\",12:\"SlantedDashDot\",13:\"Thick\"}[e.toString()]).indexOf(\"Medium\")>-1?n+=\"1pt \":n+=\"Thick\"==e?\"1.5pt \":\"0.5pt \",\"Hair\"==e?n+=\"double \":e.indexOf(\"DashDotDot\")>-1?n+=\"dotted \":e.indexOf(\"DashDot\")>-1?n+=\"dashed \":e.indexOf(\"Dotted\")>-1?n+=\"dotted \":e.indexOf(\"Dashed\")>-1?n+=\"dashed \":n+=\"solid \",n+t+\";\"},copy:function(e){let n=window.clipboardData;n||(n=e.originalEvent.clipboardData),t.luckysheet_selection_range=[];let a=[],l=[],r=[],o=!1,i=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let n=t.luckysheet_select_save[e],s=n.row[0],c=n.row[1],u=n.column[0],d=n.column[1];for(let e=s;e<=c;e++)if(null==t.config.rowhidden||null==t.config.rowhidden[e]){a.includes(e)||a.push(e),null!=t.config.rowlen&&e in t.config.rowlen&&(o=!0);for(let n=u;n<=d;n++){if(null!=t.config.colhidden&&null!=t.config.colhidden[n])continue;l.includes(n)||l.push(n);let a=t.flowdata[e][n];\"object\"==ad(a)&&\"mc\"in a&&null!=a.mc.rs&&(i=!0)}}t.luckysheet_selection_range.push({row:n.row,column:n.column}),r.push({row:n.row,column:n.column})}Vu(),t.luckysheet_copy_save={dataSheetIndex:t.currentSheetIndex,copyRange:r,RowlChange:o,HasMC:i};let s,c=this;t.config.borderInfo&&t.config.borderInfo.length>0&&(s=_l());let u=\"\",d=mn.deepCopyFlowData(t.flowdata),h=\"\";for(let e=0;e<a.length;e++){let n=a[e];if(null==t.config.rowhidden||null==t.config.rowhidden[n]){null==t.config||null==t.config.rowlen||null==t.config.rowlen[n.toString()]?u+='<tr height=\"19\">':u+=`<tr height=\"${t.config.rowlen[n.toString()]}\">`;for(let e=0;e<l.length;e++){let r=l[e];if(n==a[0]&&(null==t.config||null==t.config.columnlen||null==t.config.columnlen[r.toString()]?h+='<col width=\"72px\"></col>':h+='<col width=\"'+t.config.columnlen[r.toString()]+'px\"></col>'),null!=t.config.colhidden&&null!=t.config.colhidden[r])continue;let o='<td ${span} style=\"${style}\">';if(null!=d[n]&&null!=d[n][r]){let e,t=\"\",a=\"\",l=/^(w|W)((0?)|(0\\.0+))$/;if(e=null!=d[n][r].ct&&null!=d[n][r].ct.fa&&d[n][r].ct.fa.match(l)?Vn(n,r,d):Vn(n,r,d,\"m\"),t+=Yu.getStyleByCell(d,n,r),\"object\"==ad(d[n][r])&&\"mc\"in d[n][r]){if(!(\"rs\"in d[n][r].mc))continue;if(a='rowspan=\"'+d[n][r].mc.rs+'\" colspan=\"'+d[n][r].mc.cs+'\"',s&&s[n+\"_\"+r]){let e={color:{},style:{}},a={color:{},style:{}},l={color:{},style:{}},o={color:{},style:{}};for(let t=n;t<n+d[n][r].mc.rs;t++)for(let i=r;i<r+d[n][r].mc.cs;i++){if(t==n&&s[t+\"_\"+i]&&s[t+\"_\"+i].t){let e=s[t+\"_\"+i].t.style,n=s[t+\"_\"+i].t.color;null==l.style[e]?l.style[e]=1:l.style[e]=l.style[e]+1,null==l.color[n]?l.color[n]=1:l.color[n]=l.color[n]+1}if(t==n+d[n][r].mc.rs-1&&s[t+\"_\"+i]&&s[t+\"_\"+i].b){let e=s[t+\"_\"+i].b.style,n=s[t+\"_\"+i].b.color;null==o.style[e]?o.style[e]=1:o.style[e]=o.style[e]+1,null==o.color[n]?o.color[n]=1:o.color[n]=o.color[n]+1}if(i==r&&s[t+\"_\"+i]&&s[t+\"_\"+i].l){let a=s[n+\"_\"+r].l.style,l=s[t+\"_\"+i].l.color;null==e.style[a]?e.style[a]=1:e.style[a]=e.style[a]+1,null==e.color[l]?e.color[l]=1:e.color[l]=e.color[l]+1}if(i==r+d[n][r].mc.cs-1&&s[t+\"_\"+i]&&s[t+\"_\"+i].r){let e=s[t+\"_\"+i].r.style,n=s[t+\"_\"+i].r.color;null==a.style[e]?a.style[e]=1:a.style[e]=a.style[e]+1,null==a.color[n]?a.color[n]=1:a.color[n]=a.color[n]+1}}let i=d[n][r].mc.rs,u=d[n][r].mc.cs;if(JSON.stringify(e).length>23){let n=null,a=null;for(let t in e.color)e.color[t]>=i/2&&(n=t);for(let t in e.style)e.style[t]>=i/2&&(a=t);null!=n&&null!=a&&(t+=\"border-left:\"+c.getHtmlBorderStyle(a,n))}if(JSON.stringify(a).length>23){let e=null,n=null;for(let t in a.color)a.color[t]>=i/2&&(e=t);for(let e in a.style)a.style[e]>=i/2&&(n=e);null!=e&&null!=n&&(t+=\"border-right:\"+c.getHtmlBorderStyle(n,e))}if(JSON.stringify(l).length>23){let e=null,n=null;for(let t in l.color)l.color[t]>=u/2&&(e=t);for(let e in l.style)l.style[e]>=u/2&&(n=e);null!=e&&null!=n&&(t+=\"border-top:\"+c.getHtmlBorderStyle(n,e))}if(JSON.stringify(o).length>23){let e=null,n=null;for(let t in o.color)o.color[t]>=u/2&&(e=t);for(let e in o.style)o.style[e]>=u/2&&(n=e);null!=e&&null!=n&&(t+=\"border-bottom:\"+c.getHtmlBorderStyle(n,e))}}}else if(s&&s[n+\"_\"+r]){if(s[n+\"_\"+r].l){let e=s[n+\"_\"+r].l.style,a=s[n+\"_\"+r].l.color;t+=\"border-left:\"+c.getHtmlBorderStyle(e,a)}if(s[n+\"_\"+r].r){let e=s[n+\"_\"+r].r.style,a=s[n+\"_\"+r].r.color;t+=\"border-right:\"+c.getHtmlBorderStyle(e,a)}if(s[n+\"_\"+r].b){let e=s[n+\"_\"+r].b.style,a=s[n+\"_\"+r].b.color;t+=\"border-bottom:\"+c.getHtmlBorderStyle(e,a)}if(s[n+\"_\"+r].t){let e=s[n+\"_\"+r].t.style,a=s[n+\"_\"+r].t.color;t+=\"border-top:\"+c.getHtmlBorderStyle(e,a)}}o=nd(o,{style:t,span:a}),null==e&&(e=Vn(n,r,d)),null==e&&d[n][r]&&d[n][r].ct&&\"inlineStr\"==d[n][r].ct.t&&(e=d[n][r].ct.s.map((e=>{let t=$('<br style=\"mso-data-placement:same-cell;\">');return e.v.split(\"\\r\\n\").map((t=>{if(!t)return\"\";let n=$(\"<font></font>\");return e.fs&&n.css(\"font-size\",`${e.fs}pt`),e.bl&&n.css(\"font-weight\",\"bold\"),e.it&&n.css(\"font-style\",\"italic\"),e.un&&n.css(\"text-decoration\",\"underline\"),e.fc&&n.css(\"color\",e.fc),e.cl?n.append(`<s>${t}</s>`):n.text(t),n[0].outerHTML})).join(t[0].outerHTML)})).join(\"\")),null==e&&(e=\"\"),o+=e}else{let e=\"\";if(s&&s[n+\"_\"+r]){if(s[n+\"_\"+r].l){let t=s[n+\"_\"+r].l.style,a=s[n+\"_\"+r].l.color;e+=\"border-left:\"+c.getHtmlBorderStyle(t,a)}if(s[n+\"_\"+r].r){let t=s[n+\"_\"+r].r.style,a=s[n+\"_\"+r].r.color;e+=\"border-right:\"+c.getHtmlBorderStyle(t,a)}if(s[n+\"_\"+r].b){let t=s[n+\"_\"+r].b.style,a=s[n+\"_\"+r].b.color;e+=\"border-bottom:\"+c.getHtmlBorderStyle(t,a)}if(s[n+\"_\"+r].t){let t=s[n+\"_\"+r].t.style,a=s[n+\"_\"+r].t.color;e+=\"border-top:\"+c.getHtmlBorderStyle(t,a)}}o+=\"\",o=nd(o,{style:e,span:\"\"}),o+=\"\"}o+=\"</td>\",u+=o}u+=\"</tr>\"}}if(u=`<table data-type=\"luckysheet_copy_action_table\"><colgroup>${h}</colgroup>`+u+\"</table>\",t.iscopyself=!0,n)return n.setData(\"Text\",u),!1;{let e=$(\"#luckysheet-copy-content\");e.html(u),e.focus(),e.select(),document.execCommand(\"selectAll\"),document.execCommand(\"Copy\"),setTimeout((function(){$(\"#luckysheet-copy-content\").blur()}),10)}},copybyformat:function(e,n){let a=window.clipboardData;a||(a=e.originalEvent&&e.originalEvent.clipboardData),t.luckysheet_selection_range=[{row:t.luckysheet_select_save[0].row,column:t.luckysheet_select_save[0].column}],Vu();let l=n;if(t.iscopyself=!0,a)return a.setData(\"Text\",l),!1;{let e=$(\"#luckysheet-copy-content\");e.text(l),e.focus(),e.select(),document.execCommand(\"selectAll\"),document.execCommand(\"Copy\"),setTimeout((function(){e.blur()}),10)}},isPasteAction:!1,paste:function(e,n){let a=this;if(!1===t.allowEdit)return;let l=X().drag,r=$(\"#luckysheet-copy-content\");r.focus(),r.select(),setTimeout((function(){let o=r.html();o.indexOf(\"luckysheet_copy_action_table\")>-1&&null!=t.luckysheet_copy_save.copyRange&&t.luckysheet_copy_save.copyRange.length>0?t.luckysheet_paste_iscut?(t.luckysheet_paste_iscut=!1,a.pasteHandlerOfCutPaste(t.luckysheet_copy_save),a.clearcopy(e)):a.pasteHandlerOfCopyPaste(t.luckysheet_copy_save):o.indexOf(\"luckysheet_copy_action_image\")>-1?rl.pasteImgItem():\"btn\"!=n?a.pasteHandler(o):I()?alert(l.pasteMustKeybordAlert):vo.info(l.pasteMustKeybordAlertHTMLTitle,l.pasteMustKeybordAlertHTML)}),10)},pasteHandler:function(e,n){if(!Xl(t.luckysheet_select_save,t.currentSheetIndex)||!1===t.allowEdit)return;let a=X().paste;if(t.luckysheet_select_save.length>1&&(I()?alert(a.errorNotAllowMulti):vo.info(`<i class=\"fa fa-exclamation-triangle\"></i>${a.warning}`,a.errorNotAllowMulti)),\"object\"==typeof e){if(0==e.length)return;let l=$.extend(!0,{},t.config);null==l.merge&&(l.merge={}),JSON.stringify(n).length>2&&null==l.borderInfo&&(l.borderInfo=[]);let r=e.length,o=e[0].length,i=t.luckysheet_select_save[0].row[0],s=i+r-1,c=t.luckysheet_select_save[0].column[0],u=c+o-1,d=!1;if(null!=l.merge&&(d=A(l,i,s,c,u)),d)return void(I()?alert(a.errorNotAllowMerged):vo.info(`<i class=\"fa fa-exclamation-triangle\"></i>${a.warning}`,a.errorNotAllowMerged));let h=mn.deepCopyFlowData(t.flowdata),f=s-h.length+1,m=u-h[0].length+1;(f>0||m>0)&&(h=qn([].concat(h),f,m,!0)),null==l.rowlen&&(l.rowlen={});let p=!1,g={};for(let a=i;a<=s;a++){let r=[].concat(h[a]),o=t.defaultrowlen;null!=l.rowlen[a]&&(o=l.rowlen[a]);for(let t=c;t<=u;t++){\"object\"==ad(r[t])&&\"mc\"in r[t]&&(\"rs\"in r[t].mc&&delete l.merge[r[t].mc.r+\"_\"+r[t].mc.c],delete r[t].mc);let s=null;if(null!=e[a-i]&&null!=e[a-i][t-c]&&(s=e[a-i][t-c]),r[t]=$.extend(!0,{},s),null!=s&&\"mc\"in r[t]&&(null!=r[t].mc.rs?(r[t].mc.r=a,r[t].mc.c=t,l.merge[r[t].mc.r+\"_\"+r[t].mc.c]=r[t].mc,g[s.mc.r+\"_\"+s.mc.c]=[r[t].mc.r,r[t].mc.c]):r[t]={mc:{r:g[s.mc.r+\"_\"+s.mc.c][0],c:g[s.mc.r+\"_\"+s.mc.c][1]}}),n[a-i+\"_\"+(t-c)]){let e={rangeType:\"cell\",value:{row_index:a,col_index:t,l:n[a-i+\"_\"+(t-c)].l,r:n[a-i+\"_\"+(t-c)].r,t:n[a-i+\"_\"+(t-c)].t,b:n[a-i+\"_\"+(t-c)].b}};l.borderInfo.push(e)}let u=ud(r[t]),d=Yu.getTextSize(\"田\",u)[1];d>o&&(o=d,p=!0)}h[a]=r,o!=t.defaultrowlen&&(l.rowlen[a]=o)}if(t.luckysheet_select_save=[{row:[i,s],column:[c,u]}],f>0||m>0||p){let e={cfg:l,RowlChange:!0};ao(h,t.luckysheet_select_save,e)}else{let e={cfg:l};ao(h,t.luckysheet_select_save,e),Pu()}}else{let n=[],l=(e=e.replace(/\\r/g,\"\")).split(\"\\n\"),r=l[0].split(\"\\t\").length;for(let e=0;e<l.length;e++)l[e].split(\"\\t\").length<r||n.push(l[e].split(\"\\t\"));let o=mn.deepCopyFlowData(t.flowdata),i=t.luckysheet_select_save[t.luckysheet_select_save.length-1],s=null==i.row?0:i.row[0],c=null==i.column?0:i.column[0],u=n.length,d=n[0].length,h=!1;if(null!=t.config.merge&&(h=A(t.config,s,s+u-1,c,c+d-1)),h)return void(I()?alert(a.errorNotAllowMerged):vo.info(`<i class=\"fa fa-exclamation-triangle\"></i>${a.warning}`,a.errorNotAllowMerged));let f=s+u-o.length,m=c+d-o[0].length;(f>0||m>0)&&(o=qn([].concat(o),f,m,!0));for(let e=0;e<u;e++){let a=[].concat(o[e+s]);for(let l=0;l<d;l++){let r=a[l+c],o=n[e][l];if(C(o)&&(o=r&&r.ct&&\"@\"===r.ct.fa?String(o):parseFloat(o)),r instanceof Object)r.v=o,null!=r.ct&&null!=r.ct.fa?r.m=Ca(r.ct.fa,o):r.m=o,null!=r.f&&r.f.length>0&&(r.f=\"\",wi.delFunctionGroup(e+s,l+c,t.currentSheetIndex));else{let e={},t=_a(o);e.v=t[2],e.ct=t[1],e.m=t[0],a[l+c]=e}}o[e+s]=a}if(i.row=[s,s+u-1],i.column=[c,c+d-1],f>0||m>0){let e={RowlChange:!0};ao(o,t.luckysheet_select_save,e)}else ao(o,t.luckysheet_select_save),Pu()}},pasteHandlerOfCutPaste:function(e){if(!Xl(t.luckysheet_select_save,t.currentSheetIndex)||!1===t.allowEdit)return;let n=X().paste,a=$.extend(!0,{},t.config);null==a.merge&&(a.merge={});let l=e.HasMC,r=e.RowlChange,o=e.dataSheetIndex,i=e.copyRange[0].row[0],s=e.copyRange[0].row[1],c=e.copyRange[0].column[0],u=e.copyRange[0].column[1],d=$.extend(!0,[],Ln({row:[i,s],column:[c,u]},o)),h=d.length,f=d[0].length,m=t.luckysheet_select_save[t.luckysheet_select_save.length-1],p=m.row_focus,g=p+h-1,y=m.column_focus,v=y+f-1,b=!1;if(null!=a.merge&&(b=A(a,p,g,y,v)),b)return void(I()?alert(n.errorNotAllowMerged):vo.info(`<i class=\"fa fa-exclamation-triangle\"></i>${n.warning}`,n.errorNotAllowMerged));let k=mn.deepCopyFlowData(t.flowdata),w=h+p-k.length,x=f+y-k[0].length;(w>0||x>0)&&(k=qn([].concat(k),w,x,!0));let _=_l(o),C=$.extend(!0,{},t.luckysheetfile[Mt(o)].dataVerification),T=$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].dataVerification);if(t.currentSheetIndex==o){for(let e=i;e<=s;e++)for(let t=c;t<=u;t++){let n=k[e][t];\"object\"==ad(n)&&\"mc\"in n&&(\"rs\"in n.mc&&delete a.merge[n.mc.r+\"_\"+n.mc.c],delete n.mc),k[e][t]=null,delete T[e+\"_\"+t]}if(a.borderInfo&&a.borderInfo.length>0){let e=[];for(let t=0;t<a.borderInfo.length;t++){let n=a.borderInfo[t].rangeType;if(\"range\"==n){let n=a.borderInfo[t].range,l=[];for(let e=0;e<n.length;e++)l=l.concat(ko.CFSplitRange(n[e],{row:[i,s],column:[c,u]},{row:[p,g],column:[y,v]},\"restPart\"));a.borderInfo[t].range=l,e.push(a.borderInfo[t])}else if(\"cell\"==n){let n=a.borderInfo[t].value.row_index,l=a.borderInfo[t].value.col_index;n>=i&&n<=s&&l>=c&&l<=u||e.push(a.borderInfo[t])}}a.borderInfo=e}}let S,R,D={};for(let e=p;e<=g;e++){let t=[].concat(k[e]);for(let n=y;n<=v;n++){if(_[i+e-p+\"_\"+(c+n-y)]){let t={rangeType:\"cell\",value:{row_index:e,col_index:n,l:_[i+e-p+\"_\"+(c+n-y)].l,r:_[i+e-p+\"_\"+(c+n-y)].r,t:_[i+e-p+\"_\"+(c+n-y)].t,b:_[i+e-p+\"_\"+(c+n-y)].b}};null==a.borderInfo&&(a.borderInfo=[]),a.borderInfo.push(t)}else if(_[e+\"_\"+n]){let t={rangeType:\"cell\",value:{row_index:e,col_index:n,l:null,r:null,t:null,b:null}};null==a.borderInfo&&(a.borderInfo=[]),a.borderInfo.push(t)}C[i+e-p+\"_\"+(c+n-y)]&&(T[e+\"_\"+n]=C[i+e-p+\"_\"+(c+n-y)]),\"object\"==ad(t[n])&&\"mc\"in t[n]&&(\"rs\"in t[n].mc&&delete a.merge[t[n].mc.r+\"_\"+t[n].mc.c],delete t[n].mc);let r=null;null!=d[e-p]&&null!=d[e-p][n-y]&&(r=d[e-p][n-y]),t[n]=$.extend(!0,{},r),null!=r&&l&&\"mc\"in t[n]&&(null!=t[n].mc.rs?(t[n].mc.r=e,t[n].mc.c=n,a.merge[t[n].mc.r+\"_\"+t[n].mc.c]=t[n].mc,D[r.mc.r+\"_\"+r.mc.c]=[t[n].mc.r,t[n].mc.c]):t[n]={mc:{r:D[r.mc.r+\"_\"+r.mc.c][0],c:D[r.mc.r+\"_\"+r.mc.c][1]}})}k[e]=t}if(m.row=[p,g],m.column=[y,v],r&&(t.currentSheetIndex!=o||(a=aa(k,i,s,a)),a=aa(k,p,g,a)),t.currentSheetIndex!=o){let e=$.extend(!0,[],t.luckysheetfile[Mt(o)].data),n=$.extend(!0,{},t.luckysheetfile[Mt(o)].config),l=$.extend(!0,[],e),d=$.extend(!0,{},n);null==d.merge&&(d.merge={});for(let e=i;e<=s;e++)for(let t=c;t<=u;t++){let n=l[e][t];\"object\"==ad(n)&&\"mc\"in n&&(\"rs\"in n.mc&&delete d.merge[n.mc.r+\"_\"+n.mc.c],delete n.mc),l[e][t]=null}if(r&&(d=aa(l,i,s,d)),d.borderInfo&&d.borderInfo.length>0){let e=[];for(let t=0;t<d.borderInfo.length;t++){let n=d.borderInfo[t].rangeType;if(\"range\"==n){let n=d.borderInfo[t].range,a=[];for(let e=0;e<n.length;e++)a=a.concat(ko.CFSplitRange(n[e],{row:[i,s],column:[c,u]},{row:[p,g],column:[y,v]},\"restPart\"));d.borderInfo[t].range=a,e.push(d.borderInfo[t])}else if(\"cell\"==n){let n=d.borderInfo[t].value.row_index,a=d.borderInfo[t].value.col_index;n>=i&&n<=s&&a>=c&&a<=u||e.push(d.borderInfo[t])}}d.borderInfo=e}let h=$.extend(!0,[],t.luckysheetfile[Mt(o)].luckysheet_conditionformat_save),f=$.extend(!0,[],h),m=[];if(null!=f&&f.length>0)for(let e=0;e<f.length;e++){let t=f[e].cellrange,n=[],a=[];for(let e=0;e<t.length;e++){let l=ko.CFSplitRange(t[e],{row:[i,s],column:[c,u]},{row:[p,g],column:[y,v]},\"restPart\");n=n.concat(l);let r=ko.CFSplitRange(t[e],{row:[i,s],column:[c,u]},{row:[p,g],column:[y,v]},\"operatePart\");r.length>0&&(a=a.concat(r))}if(f[e].cellrange=n,a.length>0){let t=$.extend(!0,{},f[e]);t.cellrange=a,m.push(t)}}let b=$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save),w=$.extend(!0,[],b);m.length>0&&(w=w.concat(m));for(let e=i;e<=s;e++)for(let t=c;t<=u;t++)delete C[e+\"_\"+t];S={sheetIndex:o,data:e,curData:l,config:n,curConfig:d,cdformat:h,curCdformat:f,dataVerification:$.extend(!0,{},t.luckysheetfile[Mt(o)].dataVerification),curDataVerification:C,range:{row:[i,s],column:[c,u]}},R={sheetIndex:t.currentSheetIndex,data:t.flowdata,curData:k,config:$.extend(!0,{},t.config),curConfig:a,cdformat:b,curCdformat:w,dataVerification:$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].dataVerification),curDataVerification:T,range:{row:[p,g],column:[y,v]}}}else{let e=$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save),n=$.extend(!0,[],e);if(null!=n&&n.length>0)for(let e=0;e<n.length;e++){let t=n[e].cellrange,a=[];for(let e=0;e<t.length;e++){let n=ko.CFSplitRange(t[e],{row:[i,s],column:[c,u]},{row:[p,g],column:[y,v]},\"allPart\");a=a.concat(n)}n[e].cellrange=a}S={sheetIndex:t.currentSheetIndex,data:t.flowdata,curData:k,config:$.extend(!0,{},t.config),curConfig:a,cdformat:e,curCdformat:n,dataVerification:$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].dataVerification),curDataVerification:T,range:{row:[i,s],column:[c,u]}},R={sheetIndex:t.currentSheetIndex,data:t.flowdata,curData:k,config:$.extend(!0,{},t.config),curConfig:a,cdformat:e,curCdformat:n,dataVerification:$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].dataVerification),curDataVerification:T,range:{row:[p,g],column:[y,v]}}}so(S,R,w>0||x>0||r)},pasteHandlerOfCopyPaste:function(e){if(!Xl(t.luckysheet_select_save,t.currentSheetIndex))return;let n=X().paste,a=$.extend(!0,{},t.config);null==a.merge&&(a.merge={});let l=e.HasMC,r=e.RowlChange,o=e.dataSheetIndex,i=e.copyRange[0].row[0],s=e.copyRange[0].row[1],c=e.copyRange[0].column[0],u=e.copyRange[0].column[1],d=[],h=!1;for(let t=0;t<e.copyRange.length;t++){let n=Ln({row:e.copyRange[t].row,column:e.copyRange[t].column},o);e.copyRange.length>1?i==e.copyRange[1].row[0]&&s==e.copyRange[1].row[1]?(n=n[0].map((function(e,t){return n.map((function(e){return e[t]}))})),d=d.concat(n),h=!0):c==e.copyRange[1].column[0]&&u==e.copyRange[1].column[1]&&(d=d.concat(n)):d=n}h&&(d=d[0].map((function(e,t){return d.map((function(e){return e[t]}))})));let f=$.extend(!0,[],d);if(e.copyRange.length>1)for(let e=0;e<f.length;e++)for(let t=0;t<f[e].length;t++)null!=f[e][t]&&null!=f[e][t].f&&(delete f[e][t].f,delete f[e][t].spl);let m=f.length,p=f[0].length,g=t.luckysheet_select_save[t.luckysheet_select_save.length-1],y=g.row[0],v=g.row[1],b=g.column[0],k=g.column[1];(0!=(v-y+1)%m||0!=(k-b+1)%p)&&(v=y+m-1,k=b+p-1);let w=!1;if(null!=a.merge&&(w=A(a,y,v,b,k)),w)return void(I()?alert(n.errorNotAllowMerged):vo.info(`<i class=\"fa fa-exclamation-triangle\"></i>${n.warning}`,n.errorNotAllowMerged));let x=(v-y+1)/m,_=(k-b+1)/p,C=mn.deepCopyFlowData(t.flowdata),T=m+y-C.length,S=p+b-C[0].length;(T>0||S>0)&&(C=qn([].concat(C),T,S,!0));let R=_l(o),D=$.extend(!0,{},t.luckysheetfile[Mt(o)].dataVerification),F=null,E=0,M=0,N=0,P=0;for(let e=1;e<=x;e++)for(let n=1;n<=_;n++){E=y+(e-1)*m,M=b+(n-1)*p,P=y+e*m,N=b+n*p;let r=E-i,o=M-c,s={};for(let e=E;e<P;e++){let n=[].concat(C[e]);for(let u=M;u<N;u++){if(R[i+e-E+\"_\"+(c+u-M)]){let t={rangeType:\"cell\",value:{row_index:e,col_index:u,l:R[i+e-E+\"_\"+(c+u-M)].l,r:R[i+e-E+\"_\"+(c+u-M)].r,t:R[i+e-E+\"_\"+(c+u-M)].t,b:R[i+e-E+\"_\"+(c+u-M)].b}};null==a.borderInfo&&(a.borderInfo=[]),a.borderInfo.push(t)}else if(R[e+\"_\"+u]){let t={rangeType:\"cell\",value:{row_index:e,col_index:u,l:null,r:null,t:null,b:null}};null==a.borderInfo&&(a.borderInfo=[]),a.borderInfo.push(t)}D[i+e-E+\"_\"+(c+u-M)]&&(null==F&&(F=$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].dataVerification)),F[e+\"_\"+u]=D[i+e-E+\"_\"+(c+u-M)]),\"object\"==ad(n[u])&&\"mc\"in n[u]&&(\"rs\"in n[u].mc&&delete a.merge[n[u].mc.r+\"_\"+n[u].mc.c],delete n[u].mc);let d=null;if(null!=f[e-E]&&null!=f[e-E][u-M]&&(d=$.extend(!0,{},f[e-E][u-M])),null!=d&&null!=d.f){let t=d.f;r>0&&(t=\"=\"+wi.functionCopy(t,\"down\",r)),r<0&&(t=\"=\"+wi.functionCopy(t,\"up\",Math.abs(r))),o>0&&(t=\"=\"+wi.functionCopy(t,\"right\",o)),o<0&&(t=\"=\"+wi.functionCopy(t,\"left\",Math.abs(o)));let n=wi.execfunction(t,e,u,void 0,!0);null!=d.spl?(d.f=n[2],d.v=n[1],d.spl=n[3].data):(d.f=n[2],d.v=n[1],null!=d.ct&&null!=d.ct.fa&&(d.m=Ca(d.ct.fa,n[1])))}n[u]=$.extend(!0,{},d),null!=d&&l&&\"mc\"in n[u]&&(null!=n[u].mc.rs?(n[u].mc.r=e,n[u].mc.c=u,a.merge[n[u].mc.r+\"_\"+n[u].mc.c]=n[u].mc,s[d.mc.r+\"_\"+d.mc.c]=[n[u].mc.r,n[u].mc.c]):n[u]={mc:{r:s[d.mc.r+\"_\"+d.mc.c][0],c:s[d.mc.r+\"_\"+d.mc.c][1]}})}C[e]=n}}let z=null;if(1==e.copyRange.length){let e=t.luckysheetfile[Mt(o)],n=t.luckysheetfile[Mt(t.currentSheetIndex)],a=$.extend(!0,[],e.luckysheet_conditionformat_save);if(null!=a&&a.length>0){z=$.extend(!0,[],n.luckysheet_conditionformat_save);for(let e=0;e<a.length;e++){let t=a[e].cellrange,n=[];for(let e=1;e<=x;e++)for(let a=1;a<=_;a++){E=y+(e-1)*m,M=b+(a-1)*p,P=y+e*m,N=b+a*p;for(let e=0;e<t.length;e++){let a=ko.CFSplitRange(t[e],{row:[i,s],column:[c,u]},{row:[E,P-1],column:[M,N-1]},\"operatePart\");a.length>0&&(n=n.concat(a))}}n.length>0&&(a[e].cellrange=n,z.push(a[e]))}}}if(g.row=[y,v],g.column=[b,k],r||T>0||S>0){a=aa(C,y,v,a);let e={cfg:a,RowlChange:!0,cdformat:z,dataVerification:F};ao(C,t.luckysheet_select_save,e)}else{let e={cfg:a,cdformat:z,dataVerification:F};ao(C,t.luckysheet_select_save,e),Pu()}},pasteHandlerOfPaintModel:function(e){if(!Xl(t.luckysheet_select_save,t.currentSheetIndex))return;let n=X().paste,a=$.extend(!0,{},t.config);null==a.merge&&(a.merge={});let l=e.HasMC,r=e.RowlChange,o=e.dataSheetIndex,i=e.copyRange[0].row[0],s=e.copyRange[0].row[1],c=e.copyRange[0].column[0],u=e.copyRange[0].column[1],d=$.extend(!0,[],Ln({row:[i,s],column:[c,u]},o)),h=t.luckysheet_select_save[t.luckysheet_select_save.length-1],f=h.row[0],m=h.row[1],p=h.column[0],g=h.column[1],y=d.length,v=d[0].length;if(f==m&&p==g){let e=!1;if(null!=a.merge&&(e=A(a,f,f+y-1,p,p+v-1)),e)return void(I()?alert(n.errorNotAllowMerged):vo.info(`<i class=\"fa fa-exclamation-triangle\"></i>${n.warning}`,n.errorNotAllowMerged));m=f+y-1,g=p+v-1}let b=Math.ceil((m-f+1)/y),k=Math.ceil((g-p+1)/v),w=mn.deepCopyFlowData(t.flowdata),x=w[0].length,_=w.length,C=_l(o),T=$.extend(!0,{},t.luckysheetfile[Mt(o)].dataVerification),S=null,R=0,D=0,F=0,E=0;for(let e=1;e<=b;e++)for(let n=1;n<=k;n++){R=f+(e-1)*y,D=p+(n-1)*v,E=f+e*y>_?_:f+e*y,E>m+1&&(E=m+1),F=p+n*v>x?x:p+n*v,F>g+1&&(F=g+1);let r={};for(let e=R;e<E;e++){let n=[].concat(w[e]);for(let o=D;o<F;o++){if(C[i+e-R+\"_\"+(c+o-D)]){let t={rangeType:\"cell\",value:{row_index:e,col_index:o,l:C[i+e-R+\"_\"+(c+o-D)].l,r:C[i+e-R+\"_\"+(c+o-D)].r,t:C[i+e-R+\"_\"+(c+o-D)].t,b:C[i+e-R+\"_\"+(c+o-D)].b}};null==a.borderInfo&&(a.borderInfo=[]),a.borderInfo.push(t)}else if(C[e+\"_\"+o]){let t={rangeType:\"cell\",value:{row_index:e,col_index:o,l:null,r:null,t:null,b:null}};null==a.borderInfo&&(a.borderInfo=[]),a.borderInfo.push(t)}T[i+e-R+\"_\"+(c+o-D)]&&(null==S&&(S=$.extend(!0,{},t.luckysheetfile[Mt(t.currentSheetIndex)].dataVerification)),S[e+\"_\"+o]=T[i+e-R+\"_\"+(c+o-D)]),\"object\"==ad(n[o])&&\"mc\"in n[o]&&(\"rs\"in n[o].mc&&delete a.merge[n[o].mc.r+\"_\"+n[o].mc.c],delete n[o].mc);let s=null;if(null!=d[e-R]&&null!=d[e-R][o-D]&&(s=d[e-R][o-D]),null!=s&&(delete s.v,delete s.m,delete s.f,delete s.spl,s.ct&&\"inlineStr\"==s.ct.t&&delete s.ct,\"object\"==ad(n[o])?n[o].ct&&\"inlineStr\"===n[o].ct.t?delete s.ct:[\"bg\",\"fc\",\"ct\",\"ht\",\"vt\",\"bl\",\"it\",\"cl\",\"un\",\"fs\",\"ff\",\"tb\"].forEach((e=>{Reflect.deleteProperty(n[o],e)})):n[o]={v:n[o]},n[o]=$.extend(!0,n[o],s),n[o].ct&&\"inlineStr\"===n[o].ct.t&&n[o].ct.s.forEach((e=>$.extend(!0,e,s))),l&&\"mc\"in n[o]&&(null!=n[o].mc.rs?(n[o].mc.r=e,n[o].mc.rs+e>=E&&(n[o].mc.rs=E-e),n[o].mc.c=o,n[o].mc.cs+o>=F&&(n[o].mc.cs=F-o),a.merge[n[o].mc.r+\"_\"+n[o].mc.c]=n[o].mc,r[s.mc.r+\"_\"+s.mc.c]=[n[o].mc.r,n[o].mc.c]):n[o]={mc:{r:r[s.mc.r+\"_\"+s.mc.c][0],c:r[s.mc.r+\"_\"+s.mc.c][1]}}),null!=n[o].v&&null!=s.ct&&null!=s.ct.fa)){let e=Ca(s.ct.fa,n[o].v);n[o].m=e}}w[e]=n}}let M=null,N=$.extend(!0,[],t.luckysheetfile[Mt(o)].luckysheet_conditionformat_save);if(null!=N&&N.length>0){M=$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save);for(let e=0;e<N.length;e++){let t=N[e].cellrange,n=[];for(let e=0;e<t.length;e++){let a=ko.CFSplitRange(t[e],{row:[i,s],column:[c,u]},{row:[f,m],column:[p,g]},\"operatePart\");a.length>0&&(n=n.concat(a))}n.length>0&&(N[e].cellrange=[{row:[f,m],column:[p,g]}],M.push(N[e]))}}if(h.row=[f,m],h.column=[p,g],r){a=aa(w,f,m,a);let e={cfg:a,RowlChange:!0,cdformat:M,dataVerification:S};ao(w,t.luckysheet_select_save,e)}else{m>=w.length&&(m=w.length-1),a=aa(w,f,m,a);let e={cfg:a,RowlChange:!0,cdformat:M,dataVerification:S};ao(w,t.luckysheet_select_save,e),Pu()}},matchcopy:function(e,n){let a,l,r=[],o=[];if(\"object\"==typeof e)r=e;else{r=e.split(\"\\n\");for(let e=0;e<r.length;e++)r[e]=r[e].split(\"\\t\")}if(a=r.length,\"object\"==typeof n)o=n;else{o=n.split(\"\\n\");for(let e=0;e<o.length;e++)o[e]=o[e].split(\"\\t\")}if(l=o.length,a!=l)return!1;for(let e=0;e<a;e++)if(null==t.config.rowhidden||null==t.config.rowhidden[e])for(let t=0;t<l;t++)if(r[e].length!=o[t].length)return!1;for(let e=0;e<a;e++)if(null==t.config.rowhidden||null==t.config.rowhidden[e])for(let t=0;t<r[0].length;t++)if(Vn(e,t,r)!=Vn(e,t,o))return!1;return!0}}}));function $o(e){$(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-cell-selected-boxs .luckysheet-cell-selected\").hide(),$(\"#luckysheet-cols-h-selected .luckysheet-cols-h-selected\").hide(),$(\"#luckysheet-rows-h-selected .luckysheet-rows-h-selected\").hide(),$(\"#luckysheet-cell-selected-focus\").hide(),$(\"#luckysheet-rows-h-hover\").hide(),$(\"#luckysheet-selection-copy .luckysheet-selection-copy\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),$(\"#luckysheet-row-count-show, #luckysheet-column-count-show\").hide(),e||wo.clearcopy(e),$(\"#luckysheet-dropCell-icon\").is(\":visible\")&&e&&$(\"#luckysheet-dropCell-icon\").remove(),Yu.luckysheetPaintModelOn&&!e&&Yu.cancelPaintModel()}var Io=y((()=>{So(),ed()}));var Ro=y((()=>{Et(),w(),wl(),Yn(),gn(),fa(),_d(),x(),K()}));function Ao(e,t){return e.replace(/\\$\\{([\\w]+)\\}/g,(function(e,n){var a=t[n];return void 0!==a?a:e}))}var Do,Fo,Eo,Mo=y((()=>{})),No=y((()=>{_d(),E(),Ma(),Ci(),Do=k(ma()),Fo={v:\"#VALUE!\",n:\"#NAME?\",na:\"#N/A\",r:\"#REF!\",d:\"#DIV/0!\",nm:\"#NUM!\",nl:\"#NULL!\",sp:\"#SPILL!\"},Eo={getCellDataArr:function(e,t,n){let a=[];if(null==e.data)n||(\"number\"===t?a.push(0):\"text\"===t&&a.push(\"\"));else if(\"array\"===ad(e.data))for(let l=0;l<e.data.length;l++)for(let r=0;r<e.data[l].length;r++){let o=e.data[l][r],i=o;\"object\"===ad(o)&&(i=o.v),null==i?n||(\"number\"===t?i=0:\"text\"===t&&(i=\"\"),a.push(i)):a.push(i)}else _(e.data.v)?n||(\"number\"==t?a.push(0):\"text\"==t&&a.push(\"\")):a.push(e.data.v);return a},getCellDataDyadicArr:function(e,t){let n=[];if(null==e.data){let e=[];\"number\"==t?e.push(0):\"text\"==t&&e.push(\"\"),n.push(e)}else if(\"array\"==ad(e.data))for(let a=0;a<e.data.length;a++){let l=[];for(let n=0;n<e.data[a].length;n++){let r=e.data[a][n],o=r;\"object\"===ad(r)&&(o=r.v),null==o&&(\"number\"===t?o=0:\"text\"===t&&(o=\"\")),l.push(o)}n.push(l)}else{let a=[],l=e.data.v;_(l)&&(\"number\"==t?l=0:\"text\"==t&&(l=\"\")),a.push(l),n.push(a)}return n},getDataArr:function(e,t){let n=[];if(null==t&&(t=!1),\"array\"==ad(e[0]))for(let a=0;a<e.length;a++)for(let l=0;l<e[a].length;l++)t&&!C(e[a][l])||n.push(e[a][l]);else for(let a=0;a<e.length;a++)t&&!C(e[a])||n.push(e[a]);return n},getDataDyadicArr:function(e){let t=[];if(\"array\"==ad(e[0]))for(let n=0;n<e.length;n++){let a=[];for(let t=0;t<e[n].length;t++)a.push(e[n][t]);t.push(a)}else{let n=[];for(let t=0;t<e.length;t++)n.push(e[t]);t.push(n)}return t},isDyadicArr:function(e){let t=!0;if(e.length>1){let n=e[0].length;for(let a=1;a<e.length;a++)if(e[a].length!=n){t=!1;break}}return t},getFirstValue:function(e,t){let n,a=this;if(null==t&&(t=\"number\"),\"array\"==ad(e))if(\"array\"==ad(e[0])){if(!a.isDyadicArr(e))return Fo.v;n=e[0][0]}else n=e[0];else if(\"object\"==ad(e)&&null!=e.startCell)if(null==e.data)\"number\"==t?n=0:\"text\"==t&&(n=\"\");else{let a=window.luckysheetCurrentRow,l=window.luckysheetCurrentColumn;if(1==e.rowl&&1==e.coll)n=e.data,null==n||_(n.v)?\"number\"==t?n=0:\"text\"==t&&(n=\"\"):n=n.v;else if(null!=e.data[0][0].mc&&e.data[0][0].mc.rs==e.rowl&&e.data[0][0].mc.cs==e.coll)n=e.data[0][0],null==n||_(n.v)?\"number\"==t?n=0:\"text\"==t&&(n=\"\"):n=n.v;else{if(1!=e.rowl&&1!=e.coll)return Fo.v;{let r=wi.getcellrange(e.startCell),o=r.row[0],i=o+e.rowl-1,s=r.column[0],c=s+e.coll-1;if(1==e.rowl){if(l<s||l>c)return Fo.v;n=e.data[0][l-s]}else if(1==e.coll){if(a<o||a>i)return Fo.v;n=e.data[a-o][0]}null==n||_(n.v)||null!=n.mc?\"number\"==t?n=0:\"text\"==t&&(n=\"\"):n=n.v}}}else n=e;return n},getCellBoolen:function(e){let t=this.getFirstValue(e);if(T(t))return t;if(\"boolean\"!=ad(t))if(\"string\"!=ad(t)||\"true\"!=t.toLowerCase()&&\"false\"!=t.toLowerCase()){if(!C(t))return Fo.v;t=parseFloat(t),t=0!=t}else\"true\"==t.toLowerCase()?t=!0:\"false\"==t.toLowerCase()&&(t=!1);return t},getCellDate:function(e){let t,n=this;if(\"array\"==ad(e))if(\"array\"==ad(e[0])){if(!n.isDyadicArr(e))return Fo.v;t=e[0][0]}else t=e[0];else if(\"object\"==ad(e)&&null!=e.startCell){if(null==e.data||\"array\"==ad(e.data)||_(e.data.v))return Fo.v;t=e.data.v,null!=e.data.ct&&\"d\"==e.data.ct.t&&(t=Ca(\"YYYY-MM-DD h:mm:ss\",t))}else t=e;return t},getCellrangeDate:function(e){let t=this,n=[];if(\"array\"==ad(e)){if(\"array\"==ad(e[0])&&!t.isDyadicArr(e))return Fo.v;n=n.concat(t.getDataArr(e,!1))}else if(\"object\"==ad(e)&&null!=e.startCell)if(null==e.data)n.push(0);else if(\"array\"==ad(e.data))for(let t=0;t<e.data.length;t++)for(let a=0;a<e.data[t].length;a++)if(null==e.data[t][a]||_(e.data[t][a].v))n.push(0);else{let l=e.data[t][a].v;null!=e.data[t][a].ct&&\"d\"==e.data[t][a].ct.t&&(l=Ca(\"YYYY-MM-DD h:mm:ss\",l)),n.push(l)}else{let t=e.data.v;null!=e.data.ct&&\"d\"==e.data.ct.t&&(t=Ca(\"YYYY-MM-DD h:mm:ss\",t)),n.push(t)}else n.push(e);return n},getRegExpStr:function(e){return e.replace(\"~*\",\"\\\\*\").replace(\"~?\",\"\\\\?\").replace(\".\",\"\\\\.\").replace(\"*\",\".*\").replace(\"?\",\".\")},factorial:function(e){return 0==e||1==e?1:e*this.factorial(e-1)},factorialDouble:function(e){return e<=0?1:e*this.factorialDouble(e-2)},variance:function(e){let t=0,n=0;for(let a=0;a<e.length;a++)t+=e[a],n++;let a=t/n,l=0;for(let t=0;t<e.length;t++){let n=e[t];l+=(n-a)*(n-a)}return l/n},variance_s:function(e){let t=0,n=0;for(let a=0;a<e.length;a++)t+=e[a],n++;let a=t/n,l=0;for(let t=0;t<e.length;t++){let n=e[t];l+=(n-a)*(n-a)}return l/(n-1)},standardDeviation:function(e){let t=0,n=0;for(let a=0;a<e.length;a++)t+=e[a],n++;let a=t/n,l=0;for(let t=0;t<e.length;t++){let n=e[t];l+=(n-a)*(n-a)}return Math.sqrt(l/n)},standardDeviation_s:function(e){let t=0,n=0;for(let a=0;a<e.length;a++)t+=e[a],n++;let a=t/n,l=0;for(let t=0;t<e.length;t++){let n=e[t];l+=(n-a)*(n-a)}return Math.sqrt(l/(n-1))},isLeapYear:function(e){return 1===new Date(e,1,29).getMonth()},feb29Between:function(e,t){let n=(0,Do.default)(e).year(),a=(0,Do.default)().set({year:n,month:2,date:1});if(this.isLeapYear(n)&&(0,Do.default)(e)<(0,Do.default)(a)&&(0,Do.default)(t)>=(0,Do.default)(a))return!0;let l=(0,Do.default)(t).year(),r=(0,Do.default)().set({year:l,month:2,date:1});return this.isLeapYear(l)&&(0,Do.default)(t)>=(0,Do.default)(r)&&(0,Do.default)(e)<(0,Do.default)(r)},findResultIndex:function(e,t){let n={};for(let t=1;t<e[0].length;++t)n[t]=!0;let a=t[0].length;for(i=1;i<t.length;++i)t[i].length>a&&(a=t[i].length);for(let l=1;l<e.length;++l)for(let r=1;r<e[l].length;++r){let o=!1,i=!1;for(let n=0;n<t.length;++n){let s=t[n];if(s.length<a)continue;let c=s[0];if(e[l][0]===c){i=!0;for(let t=1;t<s.length;++t)o=o||new Function(\"return \"+e[l][r]+s[t])()}}i&&(n[r]=n[r]&&o)}let l=[];for(let t=0;t<e[0].length;++t)n[t]&&l.push(t-1);return l},findField:function(e,t){let n=null;for(let a=0;a<e.length;a++)if(e[a][0]==t){n=a;break}return null==n?Fo.v:n},rest:function(e,t){return t=t||1,e&&\"function\"==typeof e.slice?e.slice(t):e},compact:function(e){if(!e)return e;let t=[];for(let n=0;n<e.length;++n)!e[n]||t.push(e[n]);return t}}}));function Po(e){return zo.sylvester_matrix.create(e).inverse().elements}var zo,Lo=y((()=>{(function(e){var t=function(){};t.precision=1e-6;t.create=function(e){return(new t).setElements(e)};t.I=function(e){for(var n,a=[],l=e;l--;)for(n=e,a[l]=[];n--;)a[l][n]=l===n?1:0;return t.create(a)},t.prototype={e:function(e,t){return e<1||e>this.elements.length||t<1||t>this.elements[0].length?null:this.elements[e-1][t-1]},dimensions:function(){var e=0===this.elements.length?0:this.elements[0].length;return{rows:this.elements.length,cols:e}},rows:function(){return this.elements.length},cols:function(){return 0===this.elements.length?0:this.elements[0].length},eql:function(e){var n=e.elements||e;if((!n[0]||void 0===n[0][0])&&(n=t.create(n).elements),0===this.elements.length||0===n.length)return this.elements.length===n.length;if(this.elements.length!==n.length||this.elements[0].length!==n[0].length)return!1;for(var a,l=this.elements.length,r=this.elements[0].length;l--;)for(a=r;a--;)if(Math.abs(this.elements[l][a]-n[l][a])>t.precision)return!1;return!0},dup:function(){return t.create(this.elements)},map:function(e,n){if(0===this.elements.length)return t.create([]);for(var a,l=[],r=this.elements.length,o=this.elements[0].length;r--;)for(a=o,l[r]=[];a--;)l[r][a]=e.call(n,this.elements[r][a],r+1,a+1);return t.create(l)},isSameSizeAs:function(e){var n=e.elements||e;return void 0===n[0][0]&&(n=t.create(n).elements),0===this.elements.length?0===n.length:this.elements.length===n.length&&this.elements[0].length===n[0].length},add:function(e){if(0===this.elements.length)return this.map((function(e){return e}));var n=e.elements||e;return void 0===n[0][0]&&(n=t.create(n).elements),this.isSameSizeAs(n)?this.map((function(e,t,a){return e+n[t-1][a-1]})):null},subtract:function(e){if(0===this.elements.length)return this.map((function(e){return e}));var n=e.elements||e;return void 0===n[0][0]&&(n=t.create(n).elements),this.isSameSizeAs(n)?this.map((function(e,t,a){return e-n[t-1][a-1]})):null},canMultiplyFromLeft:function(e){if(0===this.elements.length)return!1;var n=e.elements||e;return void 0===n[0][0]&&(n=t.create(n).elements),this.elements[0].length===n.length},multiply:function(e){if(0===this.elements.length)return null;if(!e.elements)return this.map((function(t){return t*e}));var n=!!e.modulus;if(void 0===(u=e.elements||e)[0][0]&&(u=t.create(u).elements),!this.canMultiplyFromLeft(u))return null;for(var a,l,r,o=this.elements.length,i=u[0].length,s=this.elements[0].length,c=[];o--;)for(a=i,c[o]=[];a--;){for(l=s,r=0;l--;)r+=this.elements[o][l]*u[l][a];c[o][a]=r}var u=t.create(c);return n?u.col(1):u},minor:function(e,n,a,l){if(0===this.elements.length)return null;for(var r,o,i,s=[],c=a,u=this.elements.length,d=this.elements[0].length;c--;)for(s[r=a-c-1]=[],o=l;o--;)i=l-o-1,s[r][i]=this.elements[(e+r-1)%u][(n+i-1)%d];return t.create(s)},transpose:function(){if(0===this.elements.length)return t.create([]);for(var e,n=this.elements.length,a=[],l=this.elements[0].length;l--;)for(e=n,a[l]=[];e--;)a[l][e]=this.elements[e][l];return t.create(a)},isSquare:function(){var e=0===this.elements.length?0:this.elements[0].length;return this.elements.length===e},max:function(){if(0===this.elements.length)return null;for(var e,t=0,n=this.elements.length,a=this.elements[0].length;n--;)for(e=a;e--;)Math.abs(this.elements[n][e])>Math.abs(t)&&(t=this.elements[n][e]);return t},indexOf:function(e){if(0===this.elements.length)return null;var t,n,a=this.elements.length,l=this.elements[0].length;for(t=0;t<a;t++)for(n=0;n<l;n++)if(this.elements[t][n]===e)return{i:t+1,j:n+1};return null},diagonal:function(){if(!this.isSquare)return null;for(var e=[],n=this.elements.length,a=0;a<n;a++)e.push(this.elements[a][a]);return t.create(e)},toRightTriangular:function(){if(0===this.elements.length)return t.create([]);var e,n,a,l,r=this.dup(),o=this.elements.length,i=this.elements[0].length;for(n=0;n<o;n++){if(0===r.elements[n][n])for(a=n+1;a<o;a++)if(0!==r.elements[a][n]){for(e=[],l=0;l<i;l++)e.push(r.elements[n][l]+r.elements[a][l]);r.elements[n]=e;break}if(0!==r.elements[n][n])for(a=n+1;a<o;a++){var s=r.elements[a][n]/r.elements[n][n];for(e=[],l=0;l<i;l++)e.push(l<=n?0:r.elements[a][l]-r.elements[n][l]*s);r.elements[a]=e}}return r},determinant:function(){if(0===this.elements.length)return 1;if(!this.isSquare())return null;for(var e=this.toRightTriangular(),t=e.elements[0][0],n=e.elements.length,a=1;a<n;a++)t*=e.elements[a][a];return t},isSingular:function(){return this.isSquare()&&0===this.determinant()},trace:function(){if(0===this.elements.length)return 0;if(!this.isSquare())return null;for(var e=this.elements[0][0],t=this.elements.length,n=1;n<t;n++)e+=this.elements[n][n];return e},rank:function(){if(0===this.elements.length)return 0;for(var e,n=this.toRightTriangular(),a=0,l=this.elements.length,r=this.elements[0].length;l--;)for(e=r;e--;)if(Math.abs(n.elements[l][e])>t.precision){a++;break}return a},augment:function(e){if(0===this.elements.length)return this.dup();var n=e.elements||e;void 0===n[0][0]&&(n=t.create(n).elements);var a,l=this.dup(),r=l.elements[0].length,o=l.elements.length,i=n[0].length;if(o!==n.length)return null;for(;o--;)for(a=i;a--;)l.elements[o][r+a]=n[o][a];return l},inverse:function(){if(0===this.elements.length||!this.isSquare()||this.isSingular())return null;for(var e,n,a,l,r,o=this.elements.length,i=o,s=this.augment(t.I(o)).toRightTriangular(),c=s.elements[0].length,u=[];i--;){for(a=[],u[i]=[],l=s.elements[i][i],n=0;n<c;n++)r=s.elements[i][n]/l,a.push(r),n>=o&&u[i].push(r);for(s.elements[i]=a,e=i;e--;){for(a=[],n=0;n<c;n++)a.push(s.elements[e][n]-s.elements[i][n]*s.elements[e][i]);s.elements[e]=a}}return t.create(u)},round:function(){return this.map((function(e){return Math.round(e)}))},snapTo:function(e){return this.map((function(n){return Math.abs(n-e)<=t.precision?e:n}))},setElements:function(e){var t,n,a=e.elements||e;if(a[0]&&void 0!==a[0][0]){for(t=a.length,this.elements=[];t--;)for(n=a[t].length,this.elements[t]=[];n--;)this.elements[t][n]=a[t][n];return this}var l=a.length;for(this.elements=[],t=0;t<l;t++)this.elements.push([a[t]]);return this}},e.sylvester_matrix=t})(zo={})}));function Oo(){let e,t=arguments[1],n=arguments[0];\"object\"==ad(n)&&null!=n.startCell?(e=\"&\"==t?Eo.getCellDataDyadicArr(n,\"text\"):Eo.getCellDataDyadicArr(n,\"number\"),1==e.length&&1==e[0].length&&(e=e[0][0])):e=n;let a,l=arguments[2];if(\"object\"==ad(l)&&null!=l.startCell?(a=\"&\"==t?Eo.getCellDataDyadicArr(l,\"text\"):Eo.getCellDataDyadicArr(l,\"number\"),1==a.length&&1==a[0].length&&(a=a[0][0])):a=l,T(e))return e;if(T(a))return a;if(\"array\"==ad(e)&&\"array\"==ad(e[0])&&!Eo.isDyadicArr(e))return F.v;if(\"array\"==ad(a)&&\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return F.v;if(\"<>\"==t&&(t=\"!=\"),\"=\"==t&&(t=\"==\"),null==e&&null==a)return\"#INVERSE!\";if(\"#INVERSE!\"==e)e=0,\"-\"==t?t=\"+\":\"+\"==t&&(t=\"-\");else if(\"-\"==t&&null==e)e=0;else if(\"/\"==t&&(0==a||null==a))return F.d;function r(e,t,n){return C(e)&&(e=parseFloat(e)),C(n)&&(n=parseFloat(n)),\"==\"==t?e==n:\"!=\"==t?e!=n:\">=\"==t?e>=n:\"<=\"==t?e<=n:\">\"==t?e>n:\"<\"==t?e<n:void 0}function o(e){return null==e?e:\"true\"==e.toString().toLowerCase()?1:\"false\"==e.toString().toLowerCase()?0:e}if(\"*\"==t){if(\"array\"==ad(e)&&\"array\"==ad(a)){let n=[];if(\"array\"==ad(e[0])&&\"array\"==ad(a[0]))if(e.length==a.length&&e[0].length==a[0].length)for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),a[l][n]=o(a[l][n]),i=C(e[l][n])&&C(a[l][n])?Vo(e[l][n],t,a[l][n]):F.v,r.push(i)}n.push(r)}else if(e[0].length==a.length){let l=e.length,r=a[0].length;for(let i=0;i<l;i++){let l=[];for(let n=0;n<r;n++){let r=0;for(let l=0;l<e[0].length;l++)e[i][l]=o(e[i][l]),a[l][n]=o(a[l][n]),C(e[i][l])&&C(a[l][n])?r+=Vo(e[i][l],t,a[l][n]):r+=F.v;\"NaN\"==r.toString()&&(r=F.v),l.push(r)}n.push(l)}}else{if(e.length!=a[0].length)return F.na;{let l=a.length,r=e[0].length;for(let i=0;i<l;i++){let l=[];for(let n=0;n<r;n++){let r=0;for(let l=0;l<a[0].length;l++)e[l][n]=o(e[l][n]),a[i][l]=o(a[i][l]),C(a[i][l])&&C(e[l][n])?r+=Vo(e[l][n],t,a[i][l]):r+=F.v;\"NaN\"==r.toString()&&(r=F.v),l.push(r)}n.push(l)}}}else if(\"array\"==ad(e[0]))if(e[0].length==a.length)for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),a[n]=o(a[n]),i=C(e[l][n])&&C(a[n])?Vo(e[l][n],t,a[n]):F.v,r.push(i)}n.push(r)}else{if(1!=e[0].length)return F.na;{let l=e.length,r=a.length;for(let i=0;i<l;i++){let l=[];for(let n=0;n<r;n++){let r;e[i][0]=o(e[i][0]),a[n]=o(a[n]),r=C(e[i][0])&&C(a[n])?Vo(e[i][0],t,a[n]):F.v,l.push(r)}n.push(l)}}}else if(\"array\"==ad(a[0]))if(a[0].length==e.length)for(let l=0;l<a.length;l++){let r=[];for(let n=0;n<a[l].length;n++){let i;e[n]=o(e[n]),a[l][n]=o(a[l][n]),i=C(e[n])&&C(a[l][n])?Vo(e[n],t,a[l][n]):F.v,r.push(i)}n.push(r)}else{if(1!=a[0].length)return F.na;{let l=a.length,r=e.length;for(let i=0;i<l;i++){let l=[];for(let n=0;n<r;n++){let r;e[n]=o(e[n]),a[i][0]=o(a[i][0]),r=C(e[n])&&C(a[i][0])?Vo(e[n],t,a[i][0]):F.v,l.push(r)}n.push(l)}}}else{if(e.length!=a.length)return F.na;for(let l=0;l<e.length;l++){let r;e[l]=o(e[l]),a[l]=o(a[l]),r=C(e[l])&&C(a[l])?Vo(e[l],t,a[l]):F.v,n.push(r)}}return n}if(\"array\"==ad(e)){a=o(a);let n=[];if(\"array\"==ad(e[0]))for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),i=C(e[l][n])&&C(a)?Vo(e[l][n],t,a):F.v,r.push(i)}n.push(r)}else for(let l=0;l<e.length;l++){let r;e[l]=o(e[l]),r=C(e[l])&&C(a)?Vo(e[l],t,a):F.v,n.push(r)}return n}if(\"array\"==ad(a)){e=o(e);let n=[];if(\"array\"==ad(a[0]))for(let l=0;l<a.length;l++){let r=[];for(let n=0;n<a[l].length;n++){let i;a[l][n]=o(a[l][n]),i=C(e)&&C(a[l][n])?Vo(e,t,a[l][n]):F.v,r.push(i)}n.push(r)}else for(let l=0;l<a.length;l++){let r;a[l]=o(a[l]),r=C(e)&&C(a[l])?Vo(e,t,a[l]):F.v,n.push(r)}return n}{let n;return e=o(e),a=o(a),n=C(e)&&C(a)?Vo(e,t,a):F.v,n}}if(\"/\"==t){if(\"array\"==ad(e)&&\"array\"==ad(a)){let n=[];if(\"array\"==ad(e[0])&&\"array\"==ad(a[0]))if(e.length==a.length&&e[0].length==a[0].length)for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),a[l][n]=o(a[l][n]),i=C(e[l][n])&&C(a[l][n])?0==parseFloat(a[l][n])?F.d:Vo(e[l][n],t,a[l][n]):F.v,r.push(i)}n.push(r)}else{if(e[0].length!=a.length)return F.na;{let t=Po(a),l=e.length,r=t[0].length;for(let a=0;a<l;a++){let l=[];for(let n=0;n<r;n++){let r=0;for(let l=0;l<e[0].length;l++)e[a][l]=o(e[a][l]),t[l][n]=o(t[l][n]),C(e[a][l])&&C(t[l][n])?r+=Vo(e[a][l],\"*\",t[l][n]):r+=F.v;\"NaN\"==r.toString()&&(r=F.v),l.push(r)}n.push(l)}}}else if(\"array\"==ad(e[0]))if(e[0].length==a.length)for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),a[n]=o(a[n]),i=C(e[l][n])&&C(a[n])?0==parseFloat(a[n])?F.d:Vo(e[l][n],t,a[n]):F.v,r.push(i)}n.push(r)}else{if(1!=e[0].length)return F.na;{let l=e.length,r=a.length;for(let i=0;i<l;i++){let l=[];for(let n=0;n<r;n++){let r;e[i][0]=o(e[i][0]),a[n]=o(a[n]),r=C(e[i][0])&&C(a[n])?0==parseFloat(a[n])?F.d:Vo(e[i][0],t,a[n]):F.v,l.push(r)}n.push(l)}}}else if(\"array\"==ad(a[0]))if(a[0].length==e.length)for(let l=0;l<a.length;l++){let r=[];for(let n=0;n<a[l].length;n++){let i;e[n]=o(e[n]),a[l][n]=o(a[l][n]),i=C(e[n])&&C(a[l][n])?0==parseFloat(a[l][n])?F.d:Vo(e[n],t,a[l][n]):F.v,r.push(i)}n.push(r)}else{if(1!=a[0].length)return F.na;{let l=a.length,r=e.length;for(let i=0;i<l;i++){let l=[];for(let n=0;n<r;n++){let r;e[n]=o(e[n]),a[i][0]=o(a[i][0]),r=C(e[n])&&C(a[i][0])?0==parseFloat(a[i][0])?F.d:Vo(e[n],t,a[i][0]):F.v,l.push(r)}n.push(l)}}}else{if(e.length!=a.length)return F.na;for(let l=0;l<e.length;l++){let r;e[l]=o(e[l]),a[l]=o(a[l]),r=C(e[l])&&C(a[l])?0==parseFloat(a[l])?F.d:Vo(e[l],t,a[l]):F.v,n.push(r)}}return n}if(\"array\"==ad(e)){a=o(a);let n=[];if(\"array\"==ad(e[0]))for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),i=C(e[l][n])&&C(a)?0==parseFloat(a)?F.d:Vo(e[l][n],t,a):F.v,r.push(i)}n.push(r)}else for(let l=0;l<e.length;l++){let r;e[l]=o(e[l]),r=C(e[l])&&C(a)?0==parseFloat(a)?F.d:Vo(e[l],t,a):F.v,n.push(r)}return n}if(\"array\"==ad(a)){e=o(e);let n=[];if(\"array\"==ad(a[0]))for(let l=0;l<a.length;l++){let r=[];for(let n=0;n<a[l].length;n++){let i;a[l][n]=o(a[l][n]),i=C(e)&&C(a[l][n])?0==parseFloat(a[l][n])?F.d:Vo(e,t,a[l][n]):F.v,r.push(i)}n.push(r)}else for(let l=0;l<a.length;l++){let r;a[l]=o(a[l]),r=C(e)&&C(a[l])?0==parseFloat(a[l])?F.d:Vo(e,t,a[l]):F.v,n.push(r)}return n}{let n;return e=o(e),a=o(a),n=C(e)&&C(a)?0==parseFloat(a)?F.d:Vo(e,t,a):F.v,n}}if(\"+\"==t||\"-\"==t||\"%\"==t){if(\"array\"==ad(e)&&\"array\"==ad(a)){let n=[];if(\"array\"==ad(e[0])&&\"array\"==ad(a[0])){if(e.length!=a.length&&e[0].length!=a[0].length)return F.na;for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),a[l][n]=o(a[l][n]),i=C(e[l][n])&&C(a[l][n])?\"%\"==t&&0==parseFloat(a[l][n])?F.d:Vo(e[l][n],t,a[l][n]):F.v,r.push(i)}n.push(r)}}else if(\"array\"==ad(e[0])){if(e[0].length!=a.length)return F.na;for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),a[n]=o(a[n]),i=C(e[l][n])&&C(a[n])?\"%\"==t&&0==parseFloat(a[n])?F.d:Vo(e[l][n],t,a[n]):F.v,r.push(i)}n.push(r)}}else if(\"array\"==ad(a[0])){if(a[0].length!=e.length)return F.na;for(let l=0;l<a.length;l++){let r=[];for(let n=0;n<a[l].length;n++){let i;e[n]=o(e[n]),a[l][n]=o(a[l][n]),i=C(e[n])&&C(a[l][n])?\"%\"==t&&0==parseFloat(a[l][n])?F.d:Vo(e[n],t,a[l][n]):F.v,r.push(i)}n.push(r)}}else{if(e.length!=a.length)return F.na;for(let l=0;l<e.length;l++){let r;e[l]=o(e[l]),a[l]=o(a[l]),r=C(e[l])&&C(a[l])?\"%\"==t&&0==parseFloat(a[l])?F.d:Vo(e[l],t,a[l]):F.v,n.push(r)}}return n}if(\"array\"==ad(e)){a=o(a);let n=[];if(\"array\"==ad(e[0]))for(let l=0;l<e.length;l++){let r=[];for(let n=0;n<e[l].length;n++){let i;e[l][n]=o(e[l][n]),i=C(e[l][n])&&C(a)?\"%\"==t&&0==parseFloat(a)?F.d:Vo(e[l][n],t,a):F.v,r.push(i)}n.push(r)}else for(let l=0;l<e.length;l++){let r;e[l]=o(e[l]),r=C(e[l])&&C(a)?\"%\"==t&&0==parseFloat(a)?F.d:Vo(e[l],t,a):F.v,n.push(r)}return n}if(\"array\"==ad(a)){e=o(e);let n=[];if(\"array\"==ad(a[0]))for(let l=0;l<a.length;l++){let r=[];for(let n=0;n<a[l].length;n++){let i;a[l][n]=o(a[l][n]),i=C(e)&&C(a[l][n])?\"%\"==t&&0==parseFloat(a[l][n])?F.d:Vo(e,t,a[l][n]):F.v,r.push(i)}n.push(r)}else for(let l=0;l<a.length;l++){let r;a[l]=o(a[l]),r=C(e)&&C(a[l])?\"%\"==t&&0==parseFloat(a[l])?F.d:Vo(e,t,a[l]):F.v,n.push(r)}return n}{let n;return e=o(e),a=o(a),n=C(e)&&C(a)?\"%\"==t&&0==parseFloat(a)?F.d:Vo(e,t,a):F.v,n}}if(\"==\"==t||\"!=\"==t||\">=\"==t||\"<=\"==t||\">\"==t||\"<\"==t){if(\"array\"==ad(e)&&\"array\"==ad(a)){let n=[];if(\"array\"==ad(e[0])&&\"array\"==ad(a[0])){if(e.length!=a.length&&e[0].length!=a[0].length)return F.na;for(let l=0;l<e.length;l++){let o=[];for(let n=0;n<e[l].length;n++){let i=r(e[l][n],t,a[l][n]);o.push(i)}n.push(o)}}else if(\"array\"==ad(e[0])){if(e[0].length!=a.length)return F.na;for(let l=0;l<e.length;l++){let o=[];for(let n=0;n<e[l].length;n++){let i=r(e[l][n],t,a[n]);o.push(i)}n.push(o)}}else if(\"array\"==ad(a[0])){if(a[0].length!=e.length)return F.na;for(let l=0;l<a.length;l++){let o=[];for(let n=0;n<a[l].length;n++){let i=r(e[n],t,a[l][n]);o.push(i)}n.push(o)}}else{if(e.length!=a.length)return F.na;for(let l=0;l<e.length;l++){let o=r(e[l],t,a[l]);n.push(o)}}return n}if(\"array\"==ad(e)){let n=[];if(\"array\"==ad(e[0]))for(let l=0;l<e.length;l++){let o=[];for(let n=0;n<e[l].length;n++){let i=r(e[l][n],t,a);o.push(i)}n.push(o)}else for(let l=0;l<e.length;l++){let o=r(e[l],t,a);n.push(o)}return n}if(\"array\"==ad(a)){let n=[];if(\"array\"==ad(a[0]))for(let l=0;l<a.length;l++){let o=[];for(let n=0;n<a[l].length;n++){let i=r(e,t,a[l][n]);o.push(i)}n.push(o)}else for(let l=0;l<a.length;l++){let o=r(e,t,a[l]);n.push(o)}return n}return r(e,t,a)}if(\"&\"==t){if(\"array\"==ad(e)&&\"array\"==ad(a)){let t=[];if(\"array\"==ad(e[0])&&\"array\"==ad(a[0])){if(e.length!=a.length&&e[0].length!=a[0].length)return F.na;for(let n=0;n<e.length;n++){let l=[];for(let t=0;t<e[n].length;t++)l.push(e[n][t]+\"\"+a[n][t]);t.push(l)}}else if(\"array\"==ad(e[0])){if(e[0].length!=a.length)return F.na;for(let n=0;n<e.length;n++){let l=[];for(let t=0;t<e[n].length;t++)l.push(e[n][t]+\"\"+a[t]);t.push(l)}}else if(\"array\"==ad(a[0])){if(a[0].length!=e.length)return F.na;for(let n=0;n<a.length;n++){let l=[];for(let t=0;t<a[n].length;t++)l.push(e[t]+\"\"+a[n][t]);t.push(l)}}else{if(e.length!=a.length)return F.na;for(let n=0;n<e.length;n++)t.push(e[n]+\"\"+a[n])}return t}if(\"array\"==ad(e)){let t=[];if(\"array\"==ad(e[0]))for(let n=0;n<e.length;n++){let l=[];for(let t=0;t<e[n].length;t++)l.push(e[n][t]+\"\"+a);t.push(l)}else for(let n=0;n<e.length;n++)t.push(e[n]+\"\"+a);return t}if(\"array\"==ad(a)){let t=[];if(\"array\"==ad(a[0]))for(let n=0;n<a.length;n++){let l=[];for(let t=0;t<a[n].length;t++)l.push(e+\"\"+a[n][t]);t.push(l)}else for(let n=0;n<a.length;n++)t.push(e+\"\"+a[n]);return t}return e+\"\"+a}if(\"^\"==t){if(\"array\"==ad(e)&&\"array\"==ad(a)){let t=[];if(\"array\"==ad(e[0])&&\"array\"==ad(a[0])){if(e.length!=a.length&&e[0].length!=a[0].length)return F.na;for(let n=0;n<e.length;n++){let l=[];for(let t=0;t<e[n].length;t++){let r;e[n][t]=o(e[n][t]),a[n][t]=o(a[n][t]),r=C(e[n][t])&&C(a[n][t])?Math.pow(parseFloat(e[n][t]),parseFloat(a[n][t])):F.v,l.push(r)}t.push(l)}}else if(\"array\"==ad(e[0])){if(e[0].length!=a.length)return F.na;for(let n=0;n<e.length;n++){let l=[];for(let t=0;t<e[n].length;t++){let r;e[n][t]=o(e[n][t]),a[t]=o(a[t]),r=C(e[n][t])&&C(a[t])?Math.pow(parseFloat(e[n][t]),parseFloat(a[t])):F.v,l.push(r)}t.push(l)}}else if(\"array\"==ad(a[0])){if(a[0].length!=e.length)return F.na;for(let n=0;n<a.length;n++){let l=[];for(let t=0;t<a[n].length;t++){let r;e[t]=o(e[t]),a[n][t]=o(a[n][t]),r=C(e[t])&&C(a[n][t])?Math.pow(parseFloat(e[t]),parseFloat(a[n][t])):F.v,l.push(r)}t.push(l)}}else{if(e.length!=a.length)return F.na;for(let n=0;n<e.length;n++){let l;e[n]=o(e[n]),a[n]=o(a[n]),l=C(e[n])&&C(a[n])?Math.pow(parseFloat(e[n]),parseFloat(a[n])):F.v,t.push(l)}}return t}if(\"array\"==ad(e)){a=o(a);let t=[];if(\"array\"==ad(e[0]))for(let n=0;n<e.length;n++){let l=[];for(let t=0;t<e[n].length;t++){let r;e[n][t]=o(e[n][t]),r=C(e[n][t])&&C(a)?Math.pow(parseFloat(e[n][t]),parseFloat(a)):F.v,l.push(r)}t.push(l)}else for(let n=0;n<e.length;n++){let l;e[n]=o(e[n]),l=C(e[n])&&C(a)?Math.pow(parseFloat(e[n]),parseFloat(a)):F.v,t.push(l)}return t}if(\"array\"==ad(a)){e=o(e);let t=[];if(\"array\"==ad(a[0]))for(let n=0;n<a.length;n++){let l=[];for(let t=0;t<a[n].length;t++){let r;a[n][t]=o(a[n][t]),r=C(e)&&C(a[n][t])?Math.pow(parseFloat(e),parseFloat(a[n][t])):F.v,l.push(r)}t.push(l)}else for(let n=0;n<a.length;n++){let l;a[n]=o(a[n]),l=C(e)&&C(a[n])?Math.pow(parseFloat(e),parseFloat(a[n])):F.v,t.push(l)}return t}{let t;return e=o(e),a=o(a),t=C(e)&&C(a)?Math.pow(parseFloat(e),parseFloat(a)):F.v,t}}}function Bo(){let e=arguments[0];e=e.replace(\"{\",\"\").replace(\"}\",\"\").replace(/\\\"/g,\"\");let t=[];if(e.indexOf(\";\")>-1){t=e.split(\";\");for(let e=0;e<t.length;e++)t[e]=t[e].split(\",\")}else t=e.split(\",\");return t}function Vo(e,t,n){let a;return\"+\"==t?a=(0,Xo.default)(e).add(n).value():\"-\"==t?a=(0,Xo.default)(e).subtract(n).value():\"%\"==t?a=new Function(\"return \"+parseFloat(e)+t+\"(\"+parseFloat(n)+\")\")():\"/\"==t?a=(0,Xo.default)(e).divide(n).value():\"*\"==t&&(a=(0,Xo.default)(e).multiply(n).value()),a}function qo(e){if(null==window.luckysheet_getcelldata_cache&&(window.luckysheet_getcelldata_cache={}),e in window.luckysheet_getcelldata_cache)return window.luckysheet_getcelldata_cache[e];let n=zt(),a=e.split(\"!\"),l=\"\",r=\"\",o=-1,i=null;if(a.length>1){l=a[0].replace(/''/g,\"'\"),r=a[1],\"'\"==l.substr(0,1)&&\"'\"==l.substr(l.length-1,1)&&(l=l.substring(1,l.length-1));for(let e in n)if(l==n[e].name){o=n[e].index,i=n[e].data;break}-1==o&&(o=0)}else{let e=Mt(t.calculateSheetIndex);l=n[e].name,o=n[e].index,i=n[e].data,r=a[0]}if(-1==r.indexOf(\":\")){let t=parseInt(r.replace(/[^0-9]/g,\"\"))-1,n=od(r.replace(/[^A-Za-z]/g,\"\"));if(isNaN(t)||isNaN(n))return[];{let a=On(i,{row:[t,t],column:[n,n]})[0][0];if(null!=wi.execFunctionGlobalData){let e=wi.execFunctionGlobalData[t+\"_\"+n+\"_\"+o];null!=e&&(a=e)}let s={sheetName:l,startCell:r,rowl:1,coll:1,data:a};return window.luckysheet_getcelldata_cache[e]=s,s}}{r=r.split(\":\");let t=[],n=[];if(t[0]=parseInt(r[0].replace(/[^0-9]/g,\"\"))-1,t[1]=parseInt(r[1].replace(/[^0-9]/g,\"\"))-1,isNaN(t[0])&&(t[0]=0),isNaN(t[1])&&(t[1]=i.length-1),t[0]>t[1])return vo.info(\"选择失败\",\"输入范围错误！\"),[];if(n[0]=od(r[0].replace(/[^A-Za-z]/g,\"\")),n[1]=od(r[1].replace(/[^A-Za-z]/g,\"\")),isNaN(n[0])&&(n[0]=0),isNaN(n[1])&&(n[1]=i[0].length-1),n[0]>n[1])return vo.info(\"选择失败\",\"输入范围错误！\"),[];let a=On(i,{row:t,column:n});if(null!=wi.execFunctionGlobalData)for(let e=t[0];e<=t[1];e++)for(let l=n[0];l<=n[1];l++){let r=wi.execFunctionGlobalData[e+\"_\"+l+\"_\"+o];null!=r&&(a[e-t[0]][l-n[0]]=r)}let s=t[1]-t[0]+1,c=n[1]-n[0]+1,u={sheetName:l,startCell:r[0],rowl:s,coll:c,data:a};return window.luckysheet_getcelldata_cache[e]=u,u}}function Ho(e){return\"object\"==typeof e?null==e?\"\":Array.isArray(e)?_a(e[0])[2]:Array.isArray(e.data)?F.v:void 0===e.data.v?\"\":e.data.v:wi.isCompareOperator(e).flag?\"string\"==typeof e||\"number\"==typeof e?e:F.v:_a(e)[2]}function Uo(){let e=arguments[0];for(let t=0;t<e.length;t++){let n=e[t];\"object\"==typeof n?n=null==n?\"\":Array.isArray(n)?_a(n[0])[2]:Array.isArray(n.data)?n.data:void 0===n.data.v?\"\":n.data.v:wi.isCompareOperator(n).flag||(n=_a(n)[2]),e[t]=n}}function jo(){let e=arguments[0];return null==e||0==e.length?null:e}function Go(e){return e}function Wo(){if(\"object\"!=ad(arguments[0])||null==arguments[0].startCell)return wi.error.v;var e=arguments[0].startCell,n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=arguments[0].rowl;if(arguments.length>=4){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseInt(l)}var r=arguments[0].coll;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(l<1||r<1)return wi.error.r;var o=wi.getcellrange(e),i=o.row[0],s=o.column[0],c=(i+=n)+l-1,u=(s+=a)+r-1;return i<0||c>=t.flowdata.length||s<0||u>=t.flowdata[0].length?wi.error.r:Nt(t.calculateSheetIndex,{row:[i,c],column:[s,u]})}function Yo(e,t,n){let a,l;if(e?(l=t,a=n):(a=t,l=n),a.startCell.indexOf(\":\")>-1||l.indexOf(\":\")>-1)return F.v;if(e)return qo(l+\":\"+a.startCell);{let e=l,t=\"\";if(l.indexOf(\"!\")>-1){let n=l.split(\"!\");t=n[0]+\"!\",e=n[1]}return qo(t+a.startCell+\":\"+e)}}var Xo,Ko=y((()=>{No(),Ci(),Co(),E(),Yn(),Ma(),Lo(),qt(),_d(),x(),Xo=k(wa())}));function Zo(e,n,a){let l=e.data;(function(e){\"object\"!=typeof e&&(e=[e]),e.length&&e.forEach((e=>{!function(e){var t=document,n=t.createElement(\"link\");n.setAttribute(\"rel\",\"stylesheet\"),n.setAttribute(\"type\",\"text/css\"),n.setAttribute(\"href\",e);var a=t.getElementsByTagName(\"head\");a.length?a[0].appendChild(n):t.documentElement.appendChild(n)}(e)}))})(hi),function(e,t,n){if(\"object\"!=typeof e)e=[e];var a=document.getElementsByTagName(\"head\")[0]||document.documentElement,l=[],r=e.length-1,o=function(i){if(l[i]=document.createElement(\"script\"),l[i].setAttribute(\"type\",\"text/javascript\"),l[i].onload=l[i].onreadystatechange=function(){this.onload=this.onreadystatechange=null,this.parentNode.removeChild(this),i!==r?o(i+1):\"function\"==typeof n&&n()},l[i].setAttribute(\"src\",e[i]),\"object\"==typeof t)for(var s in t)l[i].setAttribute(s,t[s]);a.appendChild(l[i])};o(0)}(di,null,(function(){let e=new Vuex.Store;console.info(\"chartmix::\",chartmix.default),Vue.use(chartmix.default,{store:e});let n=document.getElementsByTagName(\"body\")[0];chartmix.default.initChart(n,t.lang),$(\".chartSetting\").css({top:\"1px\",bottom:\"1px\",position:\"absolute\",right:\"0px\",width:\"350px\",background:\"#fff\",border:\"1px solid #E5E5E5\",\"z-index\":1004,\"box-shadow\":\"0px 2px 4px rgba(0,0,0,0.2)\",\"-webkit-box-shadow\":\"0px 2px 4px rgba(0,0,0,0.2)\",\"-moz-box-shadow\":\"0px 2px 4px rgba(0,0,0,0.2)\",\"-moz-user-select\":\"none\",\"-khtml-user-select\":\"none\",\"-webkit-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\",\"padding-left\":\"30px\",display:\"none\"}),t.createChart=chartmix.default.createChart,t.highlightChart=chartmix.default.highlightChart,t.deleteChart=chartmix.default.deleteChart,t.resizeChart=chartmix.default.resizeChart,t.changeChartRange=chartmix.default.changeChartRange,t.changeChartCellData=chartmix.default.changeChartCellData,t.getChartJson=chartmix.default.getChartJson,t.chart_selection={create:function(){var e=t.currentChart;if(!(e.rangeArray.length>1)){$(\"#luckysheet-chart-rangeShow\").empty(),$(\"#luckysheet-cell-selected-boxs\").hide(),$(\"#luckysheet-cell-selected-focus\").hide(),$(\"#luckysheet-rows-h-selected\").empty(),$(\"#luckysheet-cols-h-selected\").empty(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide();var n=e.rangeArray[0].row[0],a=e.rangeArray[0].column[0],l=e.rangeSplitArray;if(e.rangeRowCheck.exits)var r=s(\"rowtitle\",l.rowtitle.row[0]+n,l.rowtitle.row[1]+n,l.rowtitle.column[0]+a,l.rowtitle.column[1]+a);else r=\"\";if(e.rangeColCheck.exits)var o=s(\"coltitle\",l.coltitle.row[0]+n,l.coltitle.row[1]+n,l.coltitle.column[0]+a,l.coltitle.column[1]+a);else o=\"\";var i=s(\"content\",l.content.row[0]+n,l.content.row[1]+n,l.content.column[0]+a,l.content.column[1]+a);$(\"#luckysheet-chart-rangeShow\").append(r+o+i)}function s(e,t,n,a,l){var r=Ot(),o=Bt(),i=r[n],s=t-1==-1?0:r[t-1],c=o[l],u=a-1==-1?0:o[a-1];if(\"rowtitle\"==e)var d=\"#C65151\";return\"coltitle\"==e&&(d=\"#9667C0\"),\"content\"==e&&(d=\"#4970D1\"),'<div id=\"luckysheet-chart-rangeShow-'+e+'\" style=\"left: '+u+\"px;width: \"+(c-u-1)+\"px;top: \"+s+\"px;height: \"+(i-s-1)+'px;border: none;margin: 0;position: absolute;z-index: 14;\"><div class=\"luckysheet-chart-rangeShow-move\" data-type=\"top\" style=\"height: 2px;border-top: 2px solid #fff;border-bottom: 2px solid #fff;background: '+d+';position: absolute;left: 0;right: 0;top: -2px;z-index: 18;opacity: 0.9;cursor: move;\"></div><div class=\"luckysheet-chart-rangeShow-move\" data-type=\"right\" style=\"width: 2px;border-left: 2px solid #fff;border-right: 2px solid #fff;background: '+d+';position: absolute;top: 0;bottom: 0;right: -2px;z-index: 18;opacity: 0.9;cursor: move;\"></div><div class=\"luckysheet-chart-rangeShow-move\" data-type=\"bottom\" style=\"height: 2px;border-top: 2px solid #fff;border-bottom: 2px solid #fff;background: '+d+';position: absolute;left: 0;right: 0;bottom: -2px;z-index: 18;opacity: 0.9;cursor: move;\"></div><div class=\"luckysheet-chart-rangeShow-move\" data-type=\"left\" style=\"width: 2px;border-left: 2px solid #fff;border-right: 2px solid #fff;background: '+d+';position: absolute;top: 0;bottom: 0;left: -2px;z-index: 18;opacity: 0.9;cursor: move;\"></div><div style=\"border: 2px solid #85c0fc;background: '+d+';position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 15;opacity: 0.1;\"></div><div class=\"luckysheet-chart-rangeShow-resize\" data-type=\"lt\" style=\"width: 6px;height: 6px;border: 1px solid #fff;background: '+d+';position: absolute;left: -3px;top: -3px;z-index: 19;cursor: se-resize;\"></div><div class=\"luckysheet-chart-rangeShow-resize\" data-type=\"rt\" style=\"width: 6px;height: 6px;border: 1px solid #fff;background: '+d+';position: absolute;right: -3px;top: -3px;z-index: 19;cursor: ne-resize;\"></div><div class=\"luckysheet-chart-rangeShow-resize\" data-type=\"lb\" style=\"width: 6px;height: 6px;border: 1px solid #fff;background: '+d+';position: absolute;left: -3px;bottom: -3px;z-index: 19;cursor: ne-resize;\"></div><div class=\"luckysheet-chart-rangeShow-resize\" data-type=\"rb\" style=\"width: 6px;height: 6px;border: 1px solid #fff;background: '+d+';position: absolute;right: -3px;bottom: -3px;z-index: 19;cursor: se-resize;\"></div></div>'}},rangeMove:!1,rangeMovexy:null,rangeMoveIndex:null,rangeMoveObj:null,rangeMoveDraging:function(e,n,a){var l=t.currentChart,r=l.rangeArray[0].row[0],o=l.rangeArray[0].column[0],i=l.rangeRowCheck,s=l.rangeColCheck,c=l.rangeSplitArray,u=ta(e.pageX,e.pageY),d=$(\"#luckysheet-cell-main\").scrollLeft(),h=$(\"#luckysheet-cell-main\").scrollTop(),f=u[0]+d,m=u[1]+h,p=$(window).height()+h-n-a,g=$(window).width()+d,y=ci(m)[2],v=ui(f)[2],b=Ot(),k=Bt(),w=t.chart_selection.rangeMoveObj.attr(\"id\");if(\"luckysheet-chart-rangeShow-content\"==w){var x=t.chart_selection.rangeMoveIndex[0]-t.chart_selection.rangeMovexy[0]+y;i.exits?(x<r+i.range[1]+1||m<0)&&(x=r+i.range[1]+1):(x<0||m<0)&&(x=0),((T=c.content.row[1]-c.content.row[0]+x)>=b.length-1||m>p)&&(x=b.length-1-c.content.row[1]+c.content.row[0],T=b.length-1);var _=t.chart_selection.rangeMoveIndex[1]-t.chart_selection.rangeMovexy[1]+v;s.exits?(_<o+s.range[1]+1||f<0)&&(_=o+s.range[1]+1):(_<0||f<0)&&(_=0),((C=c.content.column[1]-c.content.column[0]+_)>=k.length-1||f>g)&&(_=k.length-1-c.content.column[1]+c.content.column[0],C=k.length-1),i.exits&&s.exits?(l.rangeArray=[{row:[r,T],column:[o,C]}],l.rangeSplitArray.range={row:[r,T],column:[o,C]},l.rangeSplitArray.content={row:[x-r,T-r],column:[_-o,C-o]},l.rangeSplitArray.rowtitle={row:l.rangeSplitArray.rowtitle.row,column:[_-o,C-o]},l.rangeSplitArray.coltitle={row:[x-r,T-r],column:l.rangeSplitArray.coltitle.column}):i.exits?(l.rangeArray=[{row:[r,T],column:[_,C]}],l.rangeSplitArray.range={row:[r,T],column:[_,C]},l.rangeSplitArray.content={row:[x-r,T-r],column:l.rangeSplitArray.content.column}):s.exits?(l.rangeArray=[{row:[x,T],column:[o,C]}],l.rangeSplitArray.range={row:[x,T],column:[o,C]},l.rangeSplitArray.content={row:l.rangeSplitArray.content.row,column:[_-o,C-o]}):(l.rangeArray=[{row:[x,T],column:[_,C]}],l.rangeSplitArray.range={row:[x,T],column:[_,C]})}else if(\"luckysheet-chart-rangeShow-rowtitle\"==w){var C;_=t.chart_selection.rangeMoveIndex[1]-t.chart_selection.rangeMovexy[1]+v,s.exits?(_<o+s.range[1]+1||f<0)&&(_=o+s.range[1]+1):(_<0||f<0)&&(_=0),((C=c.rowtitle.column[1]-c.rowtitle.column[0]+_)>=k.length-1||f>g)&&(_=k.length-1-c.rowtitle.column[1]+c.rowtitle.column[0],C=k.length-1),s.exits?(l.rangeArray=[{row:l.rangeArray[0].row,column:[o,C]}],l.rangeSplitArray.range={row:l.rangeArray[0].row,column:[o,C]},l.rangeSplitArray.rowtitle={row:l.rangeSplitArray.rowtitle.row,column:[_-o,C-o]},l.rangeSplitArray.content={row:l.rangeSplitArray.content.row,column:[_-o,C-o]}):(l.rangeArray=[{row:l.rangeArray[0].row,column:[_,C]}],l.rangeSplitArray.range={row:l.rangeArray[0].row,column:[_,C]})}else if(\"luckysheet-chart-rangeShow-coltitle\"==w){var T;x=t.chart_selection.rangeMoveIndex[0]-t.chart_selection.rangeMovexy[0]+y,i.exits?(x<r+i.range[1]+1||m<0)&&(x=r+i.range[1]+1):(x<0||m<0)&&(x=0),((T=c.coltitle.row[1]-c.coltitle.row[0]+x)>=b.length-1||m>p)&&(x=b.length-1-c.coltitle.row[1]+c.coltitle.row[0],T=b.length-1),i.exits?(l.rangeArray=[{row:[r,T],column:l.rangeArray[0].column}],l.rangeSplitArray.range={row:[r,T],column:l.rangeArray[0].column},l.rangeSplitArray.coltitle={row:[x-r,T-r],column:l.rangeSplitArray.coltitle.column},l.rangeSplitArray.content={row:[x-r,T-r],column:l.rangeSplitArray.content.column}):(l.rangeArray=[{row:[x,T],column:l.rangeArray[0].column}],l.rangeSplitArray.range={row:[x,T],column:l.rangeArray[0].column})}t.chart_selection.create()},rangeMoveDragged:function(){t.chart_selection.rangeMove=!1;var e=t.currentChart;e.rangeTxt=Nt(t.currentSheetIndex,e.rangeArray[0],t.currentSheetIndex),e.chartData=Ln(e.rangeArray[0],t.currentSheetIndex),t.changeChartRange(e.chart_id,e.chartData,e.rangeArray,e.rangeTxt)},rangeResize:!1,rangeResizexy:null,rangeResizeIndex:null,rangeResizeObj:null,rangeResizeDraging:function(e,n,a){var l=t.currentChart,r=l.rangeArray[0].row[0],o=l.rangeArray[0].column[0],i=l.rangeRowCheck,s=l.rangeColCheck,c=(l.rangeSplitArray,ta(e.pageX,e.pageY)),u=$(\"#luckysheet-cell-main\").scrollLeft(),d=$(\"#luckysheet-cell-main\").scrollTop(),h=c[0]+u,f=c[1]+d,m=$(window).height()+d-n-a,p=$(window).width()+u,g=ci(f)[2],y=ui(h)[2],v=Ot(),b=Bt(),k=t.chart_selection.rangeResizeObj.attr(\"id\");if(\"luckysheet-chart-rangeShow-content\"==k)\"lt\"==t.chart_selection.rangeResize?(S=t.chart_selection.rangeResizeIndex.row[0],w=t.chart_selection.rangeResizeIndex.column[0],I=t.chart_selection.rangeResizeIndex.row[1],x=t.chart_selection.rangeResizeIndex.column[1]):\"lb\"==t.chart_selection.rangeResize?(S=t.chart_selection.rangeResizeIndex.row[1],w=t.chart_selection.rangeResizeIndex.column[0],I=t.chart_selection.rangeResizeIndex.row[0],x=t.chart_selection.rangeResizeIndex.column[1]):\"rt\"==t.chart_selection.rangeResize?(S=t.chart_selection.rangeResizeIndex.row[0],w=t.chart_selection.rangeResizeIndex.column[1],I=t.chart_selection.rangeResizeIndex.row[1],x=t.chart_selection.rangeResizeIndex.column[0]):\"rb\"==t.chart_selection.rangeResize&&(S=t.chart_selection.rangeResizeIndex.row[1],w=t.chart_selection.rangeResizeIndex.column[1],I=t.chart_selection.rangeResizeIndex.row[0],x=t.chart_selection.rangeResizeIndex.column[0]),i.exits?(R=S-t.chart_selection.rangeResizexy[0]+g)<r+i.range[1]+1||f<0?R=r+i.range[1]+1:(R>=v.length-1||f>m)&&(R=v.length-1):(R=r-t.chart_selection.rangeResizexy[0]+g)<0||f<0?R=0:(R>=v.length-1||f>m)&&(R=v.length-1),s.exits?(_=w-t.chart_selection.rangeResizexy[1]+y)<o+s.range[1]+1||h<0?_=o+s.range[1]+1:(_>=b.length-1||h>p)&&(_=b.length-1):(_=o-t.chart_selection.rangeResizexy[1]+y)<0||h<0?_=0:(_>=b.length-1||h>p)&&(_=b.length-1),R>I?(A=I,D=R):(A=R,D=I),_>x?(C=x,T=_):(C=_,T=x),i.exits||s.exits?(l.rangeArray=[{row:[r,D],column:[o,T]}],l.rangeSplitArray.range={row:[r,D],column:[o,T]},l.rangeSplitArray.content={row:[A-r,D-r],column:[C-o,T-o]},i.exits&&(l.rangeSplitArray.rowtitle={row:l.rangeSplitArray.rowtitle.row,column:[C-o,T-o]}),s.exits&&(l.rangeSplitArray.coltitle={row:[A-r,D-r],column:l.rangeSplitArray.coltitle.column})):(l.rangeArray=[{row:[A,D],column:[C,T]}],l.rangeSplitArray.range={row:[A,D],column:[C,T]});else if(\"luckysheet-chart-rangeShow-rowtitle\"==k){var w,x,_,C,T;\"lt\"==t.chart_selection.rangeResize||\"lb\"==t.chart_selection.rangeResize?(w=t.chart_selection.rangeResizeIndex.column[0],x=t.chart_selection.rangeResizeIndex.column[1]):(\"rt\"==t.chart_selection.rangeResize||\"rb\"==t.chart_selection.rangeResize)&&(w=t.chart_selection.rangeResizeIndex.column[1],x=t.chart_selection.rangeResizeIndex.column[0]),s.exits?(_=w-t.chart_selection.rangeResizexy[1]+y)<o+s.range[1]+1||h<0?_=o+s.range[1]+1:(_>=b.length-1||h>p)&&(_=b.length-1):(_=o-t.chart_selection.rangeResizexy[1]+y)<0||h<0?_=0:(_>=b.length-1||h>p)&&(_=b.length-1),_>x?(C=x,T=_):(C=_,T=x),s.exits?(l.rangeArray=[{row:l.rangeArray[0].row,column:[o,T]}],l.rangeSplitArray.range={row:l.rangeArray[0].row,column:[o,T]},l.rangeSplitArray.rowtitle={row:l.rangeSplitArray.rowtitle.row,column:[C-o,T-o]},l.rangeSplitArray.content={row:l.rangeSplitArray.content.row,column:[C-o,T-o]}):(l.rangeArray=[{row:l.rangeArray[0].row,column:[C,T]}],l.rangeSplitArray.range={row:l.rangeArray[0].row,column:[C,T]})}else if(\"luckysheet-chart-rangeShow-coltitle\"==k){var S,I,R,A,D;\"lt\"==t.chart_selection.rangeResize||\"rt\"==t.chart_selection.rangeResize?(S=t.chart_selection.rangeResizeIndex.row[0],I=t.chart_selection.rangeResizeIndex.row[1]):(\"lb\"==t.chart_selection.rangeResize||\"rb\"==t.chart_selection.rangeResize)&&(S=t.chart_selection.rangeResizeIndex.row[1],I=t.chart_selection.rangeResizeIndex.row[0]),i.exits?(R=S-t.chart_selection.rangeResizexy[0]+g)<r+i.range[1]+1||f<0?R=r+i.range[1]+1:(R>=v.length-1||f>m)&&(R=v.length-1):(R=r-t.chart_selection.rangeResizexy[0]+g)<0||f<0?R=0:(R>=v.length-1||f>m)&&(R=v.length-1),R>I?(A=I,D=R):(A=R,D=I),i.exits?(l.rangeArray=[{row:[r,D],column:l.rangeArray[0].column}],l.rangeSplitArray.range={row:[r,D],column:l.rangeArray[0].column},l.rangeSplitArray.coltitle={row:[A-r,D-r],column:l.rangeSplitArray.coltitle.column},l.rangeSplitArray.content={row:[A-r,D-r],column:l.rangeSplitArray.content.column}):(l.rangeArray=[{row:[A,D],column:l.rangeArray[0].column}],l.rangeSplitArray.range={row:[A,D],column:l.rangeArray[0].column})}t.chart_selection.create()},rangeResizeDragged:function(){t.chart_selection.rangeResize=null;var e=t.currentChart;e.rangeTxt=Nt(t.currentSheetIndex,e.rangeArray[0],t.currentSheetIndex),e.chartData=Ln(e.rangeArray[0],t.currentSheetIndex),t.changeChartRange(e.chart_id,e.chartData,e.rangeArray,e.rangeTxt)}},t.chartparam.jfrefreshchartall=Qo,t.chartparam.changeChartCellData=chartmix.default.changeChartCellData,t.chartparam.renderChart=chartmix.default.renderChart,t.chartparam.getChartJson=chartmix.default.getChartJson,t.chartparam.insertToStore=chartmix.default.insertToStore;for(let e=0;e<l.length;e++)Jo(l[e].chart,a);for(let e=0;e<l.length;e++)\"1\"==l[e].status&&si(l[e].index);bd(t.asyncLoad,\"chart\")}))}function Jo(e,n){if(null!=e)for(let a=0;a<e.length;a++){let l=e[a];n&&t.chartparam.insertToStore({chart_id:l.chart_id,chartOptions:l.chartOptions});let r,o=l.chart_id,i=o+\"_c\",s='<div id=\"${id}\"class=\"luckysheet-modal-dialog luckysheet-modal-dialog-chart ${addclass}\"tabindex=\"0\"role=\"dialog\"aria-labelledby=\":41e\"dir=\"ltr\"><div class=\"luckysheet-modal-dialog-resize\"><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt\"data-type=\"lt\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt\"data-type=\"mt\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm\"data-type=\"lm\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm\"data-type=\"rm\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt\"data-type=\"rt\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb\"data-type=\"lb\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb\"data-type=\"mb\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb\"data-type=\"rb\"></div></div><div class=\"luckysheet-modal-dialog-controll\"><span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-update\"role=\"button\"tabindex=\"0\"aria-label=\"修改图表\"title=\"修改图表\"><i class=\"fa fa-pencil\"aria-hidden=\"true\"></i></span><span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-max\"role=\"butluckysheet_chartIns_indexton\"tabindex=\"0\"aria-label=\"最大化\"title=\"最大化\"><i class=\"fa fa-window-maximize\"aria-hidden=\"true\"></i></span><span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-del\"role=\"button\"tabindex=\"0\"aria-label=\"删除\"title=\"删除\"><i class=\"fa fa-trash\"aria-hidden=\"true\"></i></span></div><div class=\"luckysheet-modal-dialog-content\">${content}</div></div>';if(0===$(`.luckysheet-cell-main #${i}`).length&&(r=$(Ao(s,{id:i,addclass:\"luckysheet-data-visualization-chart\",title:\"图表生成\",content:\"\"})).appendTo($(\".luckysheet-cell-main\"))),!r)return;ti(r),$(`#${i}`).children(\".luckysheet-modal-dialog-content\")[0].id=o;let c,u=document.getElementById(i);c=t.chartparam.getChartJson(l.chart_id),t.chartparam.renderChart({chart_id:l.chart_id,chartOptions:c}),t.currentChart=c,ai(o),$(`#${o}_c .luckysheet-modal-controll-del`).click((function(e){ni(o)})),$(`#${o}_c .luckysheet-modal-controll-update`).click((function(e){ii()})),$(`#${o}_c`).mouseup((function(e){let n=$(this).css(\"width\"),a=$(this).css(\"height\"),l=$(this).css(\"top\"),r=$(this).css(\"left\"),i=t.luckysheetfile[Mt(t.currentSheetIndex)];i.chart||(i.chart=[]),i.chart.forEach((e=>{e.chart_id===o&&(e.width=parseFloat(n),e.height=parseFloat(a),e.left=parseFloat(r),e.top=parseFloat(l))}))})),r.children(\".luckysheet-modal-dialog-content\").mousedown((function(e){t.chartparam.luckysheetCurrentChartMaxState||ai(o),e.stopPropagation()})),r.mousedown((function(e){if(!t.chartparam.luckysheetCurrentChartMaxState){ai(o),Ut(!0),!$(e.target).is(\".luckysheet-modal-dialog-controll\")&&!$(e.target).is(\".luckysheet-modal-controll-btn\")&&!$(e.target).is(\"i\")&&(t.chartparam.luckysheetCurrentChartMoveTimeout=setTimeout((function(){t.chartparam.luckysheetCurrentChartMove=!0}),100));var n=t.chartparam.luckysheetCurrentChartMoveObj.offset(),a=t.chartparam.luckysheetCurrentChartMoveObj.position();t.chartparam.luckysheetCurrentChartMoveXy=[e.pageX-n.left,e.pageY-n.top,a.left,a.top,$(\"#luckysheet-scrollbar-x\").scrollLeft(),$(\"#luckysheet-scrollbar-y\").scrollTop()],t.chartparam.luckysheetCurrentChartMoveWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,t.chartparam.luckysheetCurrentChartMoveWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,!$(e.target).hasClass(\"luckysheet-mousedown-cancel\")&&0==$(e.target).filter(\"[class*='sp-palette']\").length&&0==$(e.target).filter(\"[class*='sp-thumb']\").length&&0==$(e.target).filter(\"[class*='sp-']\").length&&($(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu\").hide(),$(\"body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu\").hide()),e.stopPropagation()}})).find(\".luckysheet-modal-dialog-resize-item\").mousedown((function(e){if(t.chartparam.luckysheetCurrentChartActive){t.chartparam.luckysheetCurrentChartResize=$(this).data(\"type\");var n=ta(e.pageX,e.pageY),a=$(\"#luckysheet-scrollbar-x\").scrollLeft(),l=$(\"#luckysheet-scrollbar-y\").scrollTop(),i=n[0]+a,s=n[1]+l,c=t.chartparam.luckysheetCurrentChartResizeObj.position();t.chartparam.luckysheetCurrentChartResizeXy=[i,s,r.width(),r.height(),c.left+a,c.top+l,a,l],t.chartparam.luckysheetCurrentChartResizeWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,t.chartparam.luckysheetCurrentChartResizeWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,t.chartparam.luckysheetCurrentChart=o,e.stopPropagation()}}));let d=l.width,h=l.height,f=l.left,m=l.top;u.style.width=d+\"px\",u.style.height=h+\"px\",u.style.position=\"absolute\",u.style.background=\"#fff\",u.style.left=f+\"px\",u.style.top=m+\"px\",u.style.zIndex=t.zIndex?t.zIndex:15,t.zIndex++}}function Qo(e,n,a,l,r){let o=t.luckysheetfile.find((e=>e.index==t.currentSheetIndex)),i=o.chart;i&&i.forEach((e=>{var n=qo(o.name+\"!\"+e.chartOptions.rangeTxt);if(\"object\"==typeof n&&0!=n.length&&null!=n.data.length){var a=n.data;t.chartparam.changeChartCellData(e.chart_id,a)}}))}function ei(e,n,a,l){var r=luckysheet.getluckysheet_select_save();1==r.length&&r[0].row[0]==r[0].row[1]&&r[0].column[0]==r[0].column[1]&&(Ha(\"right\",\"rangeOfSelect\"),Ha(\"down\",\"rangeOfSelect\"),r=luckysheet.getluckysheet_select_save());for(var o=-1,i=r[0].row[1]-r[0].row[0],s=r[0].row[0];s<=r[0].row[1];s++){for(var c=r[0].column[0];c<=r[0].column[1];c++){if(null!=(h=Vn(s,c,luckysheet.flowdata()))&&h.toString().length>0){o=s;break}}if(-1!==o)break}-1==o&&(o=0),r[0].row=[o,o],r[0].row_focus=o,luckysheet.setluckysheet_select_save(r),t.luckysheet_shiftpositon=$.extend(!0,{},r[0]),Oa(\"down\",\"range\",!1,i);var u=-1,d=(r=luckysheet.getluckysheet_select_save())[0].column[1]-r[0].column[0];for(c=r[0].column[0];c<=r[0].column[1];c++){for(s=r[0].row[0];s<=r[0].row[1];s++){var h;if(null!=(h=Vn(s,c,luckysheet.flowdata()))&&h.toString().length>0){u=c;break}}if(-1!==u)break}-1==u&&(u=0),r[0].column=[u,u],r[0].column_focus=u,luckysheet.setluckysheet_select_save(r),t.luckysheet_shiftpositon=$.extend(!0,{},r[0]),Oa(\"right\",\"range\",!1,d),r=luckysheet.getluckysheet_select_save();var f=$.extend(!0,[],r),m=Nt(t.currentSheetIndex,f[0],t.currentSheetIndex);let p=Ln();console.dir(p);let g=function(e){null==e&&(e=\"chart\");for(var t=window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g,\"\").split(\"\"),n=\"\",a=0;a<12;a++)n+=t[Math.round(Math.random()*(t.length-1))];return e+\"_\"+n+\"_\"+(new Date).getTime()}(\"chart\"),y=g+\"_c\",v=$(Ao('<div id=\"${id}\"class=\"luckysheet-modal-dialog luckysheet-modal-dialog-chart ${addclass}\"tabindex=\"0\"role=\"dialog\"aria-labelledby=\":41e\"dir=\"ltr\"><div class=\"luckysheet-modal-dialog-resize\"><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt\"data-type=\"lt\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt\"data-type=\"mt\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm\"data-type=\"lm\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm\"data-type=\"rm\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt\"data-type=\"rt\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb\"data-type=\"lb\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb\"data-type=\"mb\"></div><div class=\"luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb\"data-type=\"rb\"></div></div><div class=\"luckysheet-modal-dialog-controll\"><span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-update\"role=\"button\"tabindex=\"0\"aria-label=\"修改图表\"title=\"修改图表\"><i class=\"fa fa-pencil\"aria-hidden=\"true\"></i></span><span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-max\"role=\"butluckysheet_chartIns_indexton\"tabindex=\"0\"aria-label=\"最大化\"title=\"最大化\"><i class=\"fa fa-window-maximize\"aria-hidden=\"true\"></i></span><span class=\"luckysheet-modal-controll-btn luckysheet-modal-controll-del\"role=\"button\"tabindex=\"0\"aria-label=\"删除\"title=\"删除\"><i class=\"fa fa-trash\"aria-hidden=\"true\"></i></span></div><div class=\"luckysheet-modal-dialog-content\">${content}</div></div>',{id:y,addclass:\"luckysheet-data-visualization-chart\",title:\"图表生成\",content:\"\"})).appendTo($(\".luckysheet-cell-main\")),b=document.getElementById(y),{render:k,chart_json:w}=t.createChart($(`#${y}`).children(\".luckysheet-modal-dialog-content\")[0],p,g,f,m);e=e||400,n=n||250,a=a||0,l=l||0,b.style.width=e+\"px\",b.style.height=n+\"px\",b.style.position=\"absolute\",b.style.background=\"#fff\",b.style.left=a+\"px\",b.style.top=l+\"px\",k.style.width=\"100%\",k.style.height=\"100%\",b.style.zIndex=t.zIndex?t.zIndex:15,t.zIndex++;let x=t.luckysheetfile[Mt(t.currentSheetIndex)];x.chart||(x.chart=[]),x.chart.push({chart_id:g,width:e,height:n,left:a,top:l,chartOptions:w.chartOptions,sheetIndex:x.index}),ai(g),$(`#${g}_c .luckysheet-modal-controll-del`).click((function(e){ni(g)})),ti(v),$(`#${g}_c .luckysheet-modal-controll-update`).click((function(e){ii()})),v.children(\".luckysheet-modal-dialog-content\").mousedown((function(e){t.chartparam.luckysheetCurrentChartMaxState||ai(g),e.stopPropagation()})),v.mousedown((function(e){if(!t.chartparam.luckysheetCurrentChartMaxState){ai(g),Ut(!0),!$(e.target).is(\".luckysheet-modal-dialog-controll\")&&!$(e.target).is(\".luckysheet-modal-controll-btn\")&&!$(e.target).is(\"i\")&&(t.chartparam.luckysheetCurrentChartMoveTimeout=setTimeout((function(){t.chartparam.luckysheetCurrentChartMove=!0}),100));var n=t.chartparam.luckysheetCurrentChartMoveObj.offset(),a=t.chartparam.luckysheetCurrentChartMoveObj.position();t.chartparam.luckysheetCurrentChartMoveXy=[e.pageX-n.left,e.pageY-n.top,a.left,a.top,$(\"#luckysheet-scrollbar-x\").scrollLeft(),$(\"#luckysheet-scrollbar-y\").scrollTop()],t.chartparam.luckysheetCurrentChartMoveWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,t.chartparam.luckysheetCurrentChartMoveWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,!$(e.target).hasClass(\"luckysheet-mousedown-cancel\")&&0==$(e.target).filter(\"[class*='sp-palette']\").length&&0==$(e.target).filter(\"[class*='sp-thumb']\").length&&0==$(e.target).filter(\"[class*='sp-']\").length&&($(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu\").hide(),$(\"body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu\").hide()),e.stopPropagation()}})).find(\".luckysheet-modal-dialog-resize-item\").mousedown((function(e){if(t.chartparam.luckysheetCurrentChartActive){t.chartparam.luckysheetCurrentChartResize=$(this).data(\"type\");var n=ta(e.pageX,e.pageY),a=$(\"#luckysheet-scrollbar-x\").scrollLeft(),l=$(\"#luckysheet-scrollbar-y\").scrollTop(),r=n[0]+a,o=n[1]+l,i=t.chartparam.luckysheetCurrentChartResizeObj.position();t.chartparam.luckysheetCurrentChartResizeXy=[r,o,v.width(),v.height(),i.left+a,i.top+l,a,l],t.chartparam.luckysheetCurrentChartResizeWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,t.chartparam.luckysheetCurrentChartResizeWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,t.chartparam.luckysheetCurrentChart=g,e.stopPropagation()}})),$(`#${g}_c`).mouseup((function(e){let n=$(this).css(\"width\"),a=$(this).css(\"height\"),l=$(this).css(\"top\"),r=$(this).css(\"left\"),o=t.luckysheetfile[Mt(t.currentSheetIndex)];o.chart||(o.chart=[]),o.chart.forEach((e=>{e.chart_id===g&&(e.width=parseFloat(n),e.height=parseFloat(a),e.left=parseFloat(r),e.top=parseFloat(l))}))}))}function ti(e){e.find(\".luckysheet-modal-dialog-content\").hover((function(){e.removeClass(\"chart-moveable\")}),(function(){e.addClass(\"chart-moveable\")})),e.hover((function(){e.addClass(\"chart-moveable\")}),(function(){e.removeClass(\"chart-moveable\")}))}function ni(e){$(`.luckysheet-cell-main #${e}_c`).remove(),li();let n=t.luckysheetfile[Mt(t.currentSheetIndex)],a=n.chart.findIndex((t=>t.chart_id==e));n.chart.splice(a,1),t.deleteChart(e)}function ai(e){let n=t.luckysheetfile[Mt(t.currentSheetIndex)].chart;for(let a in n)n[a].needRangeShow=!1,n[a].chart_id==e&&(n[a].needRangeShow=!0,t.currentChart=t.getChartJson(e));ri(e)}function li(){let e=t.luckysheetfile[Mt(t.currentSheetIndex)].chart;for(let t in e)e[t].needRangeShow=!1;oi()}function ri(e){let n=$(\"#\"+e+\"_c\");t.chart_selection.create(),t.chartparam.luckysheetCurrentChartActive=!0,t.chartparam.luckysheetCurrentChartMoveObj=n,t.chartparam.luckysheetCurrentChartResizeObj=n,t.chartparam.luckysheetCurrentChart=e,$(\"#luckysheet-cell-main\").find(\".luckysheet-modal-dialog-chart .luckysheet-modal-dialog-resize\").hide(),$(\"#luckysheet-cell-main\").find(\".luckysheet-modal-dialog-chart .luckysheet-modal-dialog-controll\").hide(),n.css(\"z-index\",t.chartparam.luckysheetCurrentChartZIndexRank++),n.find(\".luckysheet-modal-dialog-resize\").show(),n.find(\".luckysheet-modal-dialog-controll\").show(),($(\".chartSetting\").is(\":visible\")||t.chartparam.luckysheet_chart_redo_click)&&e!=t.chartparam.luckysheetCurrentChart&&$(\"body .luckysheet-cols-menu\").hide(),t.currentChart=t.highlightChart(e)}function oi(e){$(\"#luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-controll\").hide(),$(\"#luckysheet-cell-main\").find(\".luckysheet-datavisual-selection-set div\").remove(),t.chartparam.luckysheetCurrentChartActive=!1,$(\"#luckysheet-chart-rangeShow\").empty(),!e&&$(\".chartSetting\").is(\":visible\")&&!I()&&function(e){$(\".chartSetting\").is(\":visible\")&&($(\".chartSetting\").hide(),$(\"#luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-controll\").hide(),$(\"#luckysheet-cell-main\").find(\".luckysheet-datavisual-selection-set div\").remove(),t.chartparam.luckysheetCurrentChartActive=!1,!I()&&!e&&setTimeout((function(){Dl()}),0))}()}function ii(e,n){$(\".chartSetting\").is(\":visible\")||($(\".chartSetting\").show(),$(\"#luckysheet-cell-main\").find(\".luckysheet-datavisual-selection-set div\").show(),t.chartparam.luckysheetCurrentChartActive=!0,setTimeout((function(){Dl()}),0))}function si(e){oi(\"true\"),t.luckysheetfile.forEach((n=>{n.index==e?(n.chart||[]).forEach((e=>{e.isShow=!0,$(\"#\"+e.chart_id+\"_c\").show(),t.resizeChart(e.chart_id),1==e.needRangeShow&&(t.currentChart=t.getChartJson(e.chart_id),ri(e.chart_id))})):(n.chart||[]).forEach((e=>{e.isShow=!1,$(\"#\"+e.chart_id+\"_c\").hide()}))}))}var ci,ui,di,hi,fi=y((()=>{_d(),Mo(),Yn(),x(),Ci(),Ko(),qt(),na(),Wt(),Za(),E(),zl(),x(),ci=Jn,ui=ea,di=[\"https://unpkg.com/vue@2.6.11/dist/vue.min.js\",\"https://unpkg.com/vuex@3.4.0/dist/vuex.min.js\",\"https://unpkg.com/element-ui@2.13.2/lib/index.js\",\"https://unpkg.com/echarts@4.8.0/dist/echarts.min.js\",\"./expendPlugins/chart/chartmix.umd.min.js\"],hi=[\"https://unpkg.com/element-ui@2.13.2/lib/theme-chalk/index.css\",\"./expendPlugins/chart/chartmix.css\"]}));function mi(e){null==t.flowdata||0==t.flowdata.length||(clearTimeout(vi),vi=setTimeout((()=>{t.clearjfundo&&t.jfredo.push({type:\"zoomChange\",zoomRatio:t.zoomRatio,curZoomRatio:e,sheetIndex:t.currentSheetIndex}),bi=null,t.zoomRatio=e;let n=ki.getSheetByIndex();vl.buildAllPs(n.data),rl.images=n.images,rl.allImagesShow(),rl.init(),null==n.config&&(n.config={}),null==n.config.sheetViewZoom&&(n.config.sheetViewZoom={});let a=n.config.curentsheetView;null==a&&(a=\"viewNormal\"),n.config.sheetViewZoom[a+\"ZoomScale\"]=e,yo.saveParam(\"all\",t.currentSheetIndex,t.zoomRatio,{k:\"zoomRatio\"}),yo.saveParam(\"cg\",t.currentSheetIndex,n.config.sheetViewZoom,{k:\"sheetViewZoom\"}),pi()}),100))}function pi(){co(t.flowdata.length,t.flowdata[0].length),Ml()}function gi(e){let t=1;return e<50?t=Math.round(100*(1.8*e/100+.1))/100:e>50&&(t=Math.round(100*(6*(e-50)/100+1))/100),t}function yi(e){let t=Math.round(100*e)+\"%\";$(\"#luckysheet-zoom-ratioText\").html(t),function(e){let t=50;e<1?t=Math.round(100*(e-.1)/.18)/10:e>1&&(t=Math.round(100*(e-1)/.6)/10+50),$(\"#luckysheet-zoom-cursor\").css(\"left\",t-4)}(e)}var vi,bi,ki,wi,xi=y((()=>{x(),K(),_d(),_i(),zl(),fo(),_o(),wl(),il(),vi=null,bi=null})),_i=y((()=>{E(),Io(),Yn(),Pa(),Ro(),Co(),Ci(),fo(),fa(),gn(),pl(),E(),_d(),Et(),_o(),w(),Vr(),zl(),wl(),il(),cl(),to(),Al(),ol(),Xu(),x(),K(),fi(),zl(),xi(),ed(),kl(),dr(),Ci(),ki={generateRandomSheetIndex:function(e){null==e&&(e=\"Sheet\");let t=window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g,\"\").split(\"\"),n=\"\";for(let e=0;e<12;e++)n+=t[Math.round(Math.random()*(t.length-1))];return e+\"_\"+n+\"_\"+(new Date).getTime()},generateRandomSheetName:function(e,t){let n=e.length,a=X().pivotTable.title;for(let t=0;t<e.length;t++)if(e[t].name.indexOf(\"Sheet\")>-1||e[t].name.indexOf(a)>-1){let l=parseFloat(e[t].name.replace(\"Sheet\",\"\").replace(a,\"\"));\"NaN\"!=l&&Math.ceil(l)>n&&(n=Math.ceil(l))}return t?a+(n+1):\"Sheet\"+(n+1)},generateCopySheetName:function(e,t){let n=\"(\"+X().info.copy,a=t.toString().indexOf(n);~a&&(t=t.toString().substring(0,a));let l,r=\"\",o=t+n,i=[];for(let t=0;t<e.length;t++){let n=e[t].name.toString();i.push(n);let a=n.indexOf(o);if(0===a){r=r||2;let e=n.indexOf(\")\",a+o.length),t=n.substring(a+o.length,e);C(t)&&parseInt(t)>=r&&(r=parseInt(t)+1)}}do{let e=n+r+\")\",a=31-e.length;l=t,l.length>a&&(l=l.slice(0,a-1)+\"…\"),l+=e}while(~i.indexOf(l)&&(r=(r||1)+1));return l},getSheetByIndex:function(e){null==e&&(e=t.currentSheetIndex);let n=this.getSheetIndex(e);return t.luckysheetfile[n]},getSheetByName:function(e){if(null==e)return null;for(let n=0;n<t.luckysheetfile.length;n++){let a=t.luckysheetfile[n];if(a.name==e)return a}return null},getCurSheetnoset:function(){let e=0;for(let n=0;n<t.luckysheetfile.length;n++)if(1==t.luckysheetfile[n].status){e=t.luckysheetfile[n].index;break}return e},getCurSheet:function(){if(t.luckysheetfile.length){let e=!1,n=[];t.luckysheetfile.forEach((t=>{void 0===t.index&&(t.index=this.generateRandomSheetIndex()),n.includes(t.index)?t.index=this.generateRandomSheetIndex():n.push(t.index),void 0===t.status&&(t.status=0),1==t.status&&(e?t.status=0:e=!0)})),e||(t.luckysheetfile[0].status=1)}t.currentSheetIndex=t.luckysheetfile[0].index;for(let e=0;e<t.luckysheetfile.length;e++)if(1==t.luckysheetfile[e].status){t.currentSheetIndex=t.luckysheetfile[e].index;break}return t.currentSheetIndex},getCustomSheet(){return this.Luckysheet_custom_sheet?JSON.parse(JSON.stringify(this.Luckysheet_custom_sheet)):{}},setCustomSheet(e){this.Luckysheet_custom_sheet=e},addNewSheet:function(e,n){if(I()||!1===t.allowEdit||!yl.createHookFunction(\"sheetCreateBefore\"))return;let a=this,l=t.luckysheetfile.length,r=a.generateRandomSheetIndex(),o=a.generateRandomSheetName(t.luckysheetfile,n);$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:r,active:\"\",name:o,style:\"\",colorset:\"\"}));let i={},s=this.getCustomSheet();if(\"{}\"!=JSON.stringify(s)&&null!=s&&null!=i?(i=s,i.index=r,i.order=l,i.name=o):i={name:o,color:\"\",status:\"0\",order:l,index:r,celldata:[],row:t.defaultrowNum,column:t.defaultcolumnNum,config:{},pivotTable:null,isPivotTable:!!n},t.luckysheetfile.push(i),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+r).addClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+r+'\" class=\"luckysheet-datavisual-selection-set\"></div>'),$o(e),yo.saveParam(\"sha\",null,$.extend(!0,{},i)),t.clearjfundo){t.jfundo.length=0;let e={type:\"addSheet\"};e.sheetconfig=$.extend(!0,{},i),e.index=r,e.currentSheetIndex=t.currentSheetIndex,t.jfredo.push(e)}a.changeSheetExec(r,n,!0)},setSheetHide:function(n,a){let l=this,r=l.getSheetIndex(n);if(!a&&!yl.createHookFunction(\"sheetHideBefore\",{sheet:t.luckysheetfile[r]}))return;t.luckysheetfile[r].hide=1;let o,i=$(\"#luckysheet-sheets-item\"+n);if(i.hide(),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),e.showsheetbarConfig.sheet)o=i.nextAll(\":visible\"),o=i.nextAll(\":visible\").length>0?o.eq(0).data(\"index\"):i.prevAll(\":visible\").eq(0).data(\"index\");else{let e,n=[];t.luckysheetfile.forEach(((e,t)=>{1!==e.hide&&n.push(t)}));let a=n.length;e=1===a?n[0]:n[a-1]>r?n.find((e=>e>r)):n[a-1],o=t.luckysheetfile[e].index}$(\"#luckysheet-sheets-item\"+o).addClass(\"luckysheet-sheets-item-active\"),l.changeSheetExec(o),l.locationSheet(),yo.saveParam(\"sh\",i.data(\"index\"),1,{op:\"hide\",cur:o}),a||yl.createHookFunction(\"sheetHideAfter\",{sheet:t.luckysheetfile[r]})},setSheetShow:function(e){let n=t.luckysheetfile[this.getSheetIndex(e)];!yl.createHookFunction(\"sheetShowBefore\",{sheet:n})||(n.hide=0,this.changeSheetExec(e),yo.saveParam(\"sh\",e,0,{op:\"show\",cur:null}),yl.createHookFunction(\"sheetShowAfter\",{sheet:n}))},sheetMaxIndex:0,ordersheet:function(e){return function(t,n){return t[e]-n[e]}},getCurrentOrder:function(){let e={};return $(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").each((function(n){let a=$(this).data(\"index\");for(let l=0;l<t.luckysheetfile.length;l++)if(t.luckysheetfile[l].index==a){e[a.toString()]=n;break}})),e},reOrderAllSheet:function(){let e={};$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").each((function(n){let a=$(this).data(\"index\");for(let l=0;l<t.luckysheetfile.length;l++)if(t.luckysheetfile[l].index==a){t.luckysheetfile[l].order=n,e[a.toString()]=n;break}})),yo.saveParam(\"shr\",null,e),t.luckysheetfile.sort(((e,t)=>{let n=e.order,a=t.order;return null!=n&&null!=a?n-a:null!=n?-1:1}))},createSheet:function(){let e=[];t.luckysheetfile.sort(this.ordersheet(\"order\"));for(let n=0;n<t.luckysheetfile.length;n++){let a=\"\",l=t.luckysheetfile[n].index,r=\"\";null!=t.luckysheetfile[n].color&&(r='<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+t.luckysheetfile[n].color+';\"></div>'),t.currentSheetIndex==l?e.push(nd(pt,{index:l,active:\"luckysheet-sheets-item-active\",name:t.luckysheetfile[n].name,style:\"\",colorset:r})):(1==t.luckysheetfile[n].hide?e.push(nd(pt,{index:l,active:\"\",name:t.luckysheetfile[n].name,style:\"display:none;\",colorset:r})):e.push(nd(pt,{index:l,active:\"\",name:t.luckysheetfile[n].name,style:\"\",colorset:r})),a=\"style='display:none;'\"),$(\"#luckysheet-cell-main\").append(\"<div \"+a+' id=\"luckysheet-datavisual-selection-set-'+l+'\" class=\"luckysheet-datavisual-selection-set\"></div>')}$(\"#luckysheet-sheet-container-c\").append(e.join(\"\")),this.locationSheet()},locationSheet:function(){let n=$(\"#luckysheet-sheet-container-c\"),a=$(\"#\"+t.container).width(),l=($(\"#luckysheet-sheet-container-c > div.luckysheet-sheets-item-active\").eq(0),0),r=0;$(\"#luckysheet-sheet-container-c > div.luckysheet-sheets-item:visible\").each((function(){$(this).hasClass(\"luckysheet-sheets-item-active\")&&(l=r),r+=$(this).outerWidth()})),setTimeout((function(){n.scrollLeft(l-10),e.showsheetbarConfig.sheet&&(r>=.7*a?($(\"#luckysheet-sheet-area .luckysheet-sheets-scroll\").css(\"display\",\"inline-block\"),$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").show()):($(\"#luckysheet-sheet-area .luckysheet-sheets-scroll\").css(\"display\",\"none\"),$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").hide()))}),1)},copySheet:function(e,n){if(I()||!1===t.allowEdit)return;let a=this,l=t.luckysheetfile.length,r=a.generateRandomSheetIndex(),o=a.getSheetIndex(e),i=$.extend(!0,{},t.luckysheetfile[o]);if(i.order=l,i.index=r,i.name=a.generateCopySheetName(t.luckysheetfile,i.name),!yl.createHookFunction(\"sheetCopyBefore\",{targetSheet:t.luckysheetfile[o],copySheet:i}))return;let s=\"\";null!=i.color&&(s='<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+i.color+';\"></div>');let c=$(\"#luckysheet-sheets-item\"+e);if($(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:i.index,active:\"\",name:i.name,order:i.order,style:\"\",colorset:s})),$(\"#luckysheet-sheets-item\"+i.index).insertAfter(c),t.luckysheetfile.splice(o+1,0,i),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+r).addClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+r+'\" class=\"luckysheet-datavisual-selection-set\"></div>'),$o(n),yo.saveParam(\"shc\",r,{copyindex:e,name:i.name}),a.changeSheetExec(r,void 0,void 0,!0),a.reOrderAllSheet(),t.clearjfundo)t.jfredo.push({type:\"copySheet\",copyindex:e,index:i.index,sheetIndex:i.index});else if(t.jfredo.length>0){let e=t.jfredo[t.jfredo.length-1];\"copySheet\"==e.type&&(e.index=i.index,e.sheetIndex=i.index)}},hasSheet:function(e){return!(null==e||(e=this.getSheetIndex(e),null==e))},createSheetbydata:function(e,n,a=!0){let l=\"\";if(null!=e.color&&(l='<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+e.color+';\"></div>'),$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:e.index,active:\"\",name:e.name,order:e.order,style:\"\",colorset:l})),a){let n=e.order;n>=t.luckysheetfile.length?(n=t.luckysheetfile.length-1,$(\"#luckysheet-sheets-item\"+e.index).insertAfter($(\"#luckysheet-sheets-item\"+t.luckysheetfile[n].index))):$(\"#luckysheet-sheets-item\"+e.index).insertBefore($(\"#luckysheet-sheets-item\"+t.luckysheetfile[n].index))}t.luckysheetfile.push(e),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+e.index).addClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+e.index+'\" class=\"luckysheet-datavisual-selection-set\"></div>'),$o(),null!=n?(yo.saveParam(\"shre\",null,{reIndex:e.index}),e.hide=0,yo.saveParam(\"sh\",e.index,0,{op:\"show\",cur:null})):yo.saveParam(\"sha\",null,e),this.changeSheetExec(e.index,e.isPivotTable,!0),this.reOrderAllSheet()},deleteSheet:function(e){let n=this;if(!1===t.allowEdit)return;let a=n.getSheetIndex(e),l=t.luckysheetfile[a];if(!yl.createHookFunction(\"sheetDeleteBefore\",{sheet:l}))return;n.setSheetHide(e,!0),$(\"#luckysheet-sheets-item\"+e).remove(),$(\"#luckysheet-datavisual-selection-set-\"+e).remove();let r=t.luckysheetfile.splice(a,1);n.reOrderAllSheet(),yo.saveParam(\"shd\",null,{deleIndex:e}),t.clearjfundo&&(r[0].type=\"deleteSheet\",t.jfredo.push(r[0])),yl.createHookFunction(\"sheetDeleteAfter\",{sheet:l})},nulldata:null,getGridData:function(e){let t=[];for(let n=0;n<e.length;n++)for(let a=0;a<e[0].length;a++)null!=e[n][a]&&t.push({r:n,c:a,v:e[n][a]});return t},buildGridData:function(n){let a=null==n.row?t.defaultrowNum:n.row,l=null==n.column?t.defaultcolumnNum:n.column,r=n.data&&n.data.length>0?n.data:qn([],a,l),o=n.celldata;if(n.data&&n.data.length>0)for(let e=0;e<r.length;e++)for(let t=0;t<r[0].length;t++)Na(e,t,r,r[e][t]);else if(o&&o.length>0)for(let e=0;e<o.length;e++){let t=o[e],n=t.r,a=t.c,l=t.v;n>=r.length&&(r=qn(r,n-r.length+1,0)),a>=r[0].length&&(r=qn(r,0,a-r[0].length+1)),Na(n,a,r,l)}return e.autoFormatw=!1,e.accuracy=void 0,r},cutGridData:function(e){let t=0;for(let n=e.length-1;n>=0;n--){let a=!0;for(let t=0;t<e[0].length;t++){let e=Vn(n,t);if(null!=e&&$.trim(e).length>0){a=!1;break}}if(!a)break;t=n}return e.slice(0,t)},addGridData:function(e,t,n){let a=qn([],t,n);if(null!=e)for(let t=0;t<e.length;t++){let n=e[t],l=n.r,r=n.c,o=n.v;l>=a.length&&(a=qn(a,l-a.length+1,0)),r>=a[0].length&&(a=qn(a,0,r-a[0].length+1)),Na(l,r,a,o)}return a},sheetParamRestore:function(n,a){if(t.luckysheet_select_save=n.luckysheet_select_save,(null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)&&(null!=a[0]&&null!=a[0][0]&&null!=a[0][0].mc?t.luckysheet_select_save=[{row:[0,a[0][0].mc.rs-1],column:[0,a[0][0].mc.cs-1]}]:t.luckysheet_select_save=[{row:[0,0],column:[0,0]}]),t.luckysheet_selection_range=null==n.luckysheet_selection_range?[]:n.luckysheet_selection_range,t.config=null==n.config?{}:n.config,t.zoomRatio=null==n.zoomRatio?1:n.zoomRatio,null!=n.defaultRowHeight?t.defaultrowlen=parseFloat(n.defaultRowHeight):t.defaultrowlen=e.defaultRowHeight,null!=n.defaultColWidth?t.defaultcollen=parseFloat(n.defaultColWidth):t.defaultcollen=e.defaultColWidth,null!=n.showGridLines){let e=n.showGridLines;t.showGridLines=0!=e&&0!=e}else t.showGridLines=!0},initialjfFile:function(n,a){let l=this;l.getCurSheet();let r=t.luckysheetfile[l.getSheetIndex(t.currentSheetIndex)];l.nulldata=qn([],t.defaultrowNum,t.defaultcolumnNum);let o=l.buildGridData(r),i=[];r.jfgird_select_save=r.jfgird_select_save||[],r.jfgird_select_save.forEach((e=>i.push({row:e.row,column:e.column}))),r.luckysheet_select_save=i,this.sheetParamRestore(r,o);let s=t.luckysheet_select_save[0].row[1],c=t.luckysheet_select_save[0].column[1];if(t.luckysheet_select_save.length>1)for(let e=0;e<t.luckysheet_select_save.length;e++)t.luckysheet_select_save[e].row[1]>s&&(s=t.luckysheet_select_save[e].row[1]),t.luckysheet_select_save[e].column[1]>c&&(c=t.luckysheet_select_save[e].column[1]);Yu.fontInitial(t.fontList),r.data=o;let u=o.length;s>u-1&&(u=s+1);let d=o[0].length;c>d-1&&(d=c+1),\"function\"==typeof e.beforeCreateDom&&e.beforeCreateDom(luckysheet),\"function\"==typeof e.workbookCreateBefore&&e.workbookCreateBefore(luckysheet),function(n,a,l,r,o){let i=ut();i=nd(i,{logotitle:o}),i=nd(i,{menu:st()});let s=dt;null==t.config&&(t.config={}),ha(a,n);let c=X().info,u='<button id=\"luckysheet-bottom-add-row\" class=\"btn btn-default\">'+c.add+'</button><input id=\"luckysheet-bottom-add-row-input\" type=\"text\" class=\"luckysheet-datavisual-config-input luckysheet-mousedown-cancel\" placeholder=\"'+(e.addRowCount||100)+'\"><span style=\"font-size: 14px;\">'+c.row+'</span><span style=\"font-size: 14px;color: #9c9c9c;\">('+c.addLast+\")</span>\",d=' <button id=\"luckysheet-bottom-bottom-top\" class=\"btn btn-default\" style=\"\">'+c.backTop+\"</button>\",h=nd(c.pageInfo,{total:e.total?e.total:\"\",totalPage:e.pageInfo.totalPage?e.pageInfo.totalPage:\"\",currentPage:e.pageInfo.currentPage?e.pageInfo.currentPage:\"\"}),f=' <span id=\"luckysheet-bottom-page-info\" style=\"font-size: 14px;color: #f34141;\">'+h+'</span> <button id=\"luckysheet-bottom-page-next\" class=\"btn btn-danger\" style=\"\">下一页</button>',m=' <span id=\"luckysheet-bottom-page-info\" style=\"font-size: 14px;color: #f34141;\">'+h+\"</span>\",p=\"\";e.enableAddRow&&(p+=u),e.enablePage&&(1==parseInt(e.pageInfo.totalPage)?p+=m:p+=f),e.enableAddBackTop&&(p+=d);let g=nd('<div id=\"luckysheetcoltable_0\" class=\"luckysheet-cell-flow-col\"> <div id =\"luckysheet-sheettable_0\" class=\"luckysheet-cell-sheettable\" style=\"height:${height}px;width:${width}px;\"></div><div id=\"luckysheet-bottom-controll-row\" class=\"luckysheet-bottom-controll-row\"> '+p+\" </div> </div>\",{height:t.rh_height,width:t.ch_width-1}),y=nd(gt,{width:t.ch_width,index:0,column:\"\"});s=nd(s,{width:t.ch_width,flow:g,index:0}),i=nd(i,{flow:s,rowHeader:\"<div style='height:\"+t.rh_height+\"px' id='luckysheetrowHeader_0' class='luckysheetsheetchange'></div>\",columnHeader:y,functionButton:e.functionButton}),$(\"#\"+t.container).append(i),$(\"#luckysheet-scrollbar-x div\").width(t.ch_width),$(\"#luckysheet-scrollbar-y div\").height(t.rh_height+t.columnHeaderHeight-t.cellMainSrollBarSize-3),$(\"body\").append(wt),$(\"body\").append(ht),$(\"body\").append(lt()),$(\"body\").append(bt),$(\"body\").append(nd(ot(),{menuid:\"filter\"})),$(\"body\").append(nd(it(),{menuid:\"filter\"})),$(\"body\").append(rt()),$(\"#luckysheet-rows-h\").width(t.rowHeaderWidth-1.5),$(\"#luckysheet-cols-h-c\").height(t.columnHeaderHeight-1.5),$(\"#luckysheet-left-top\").css({width:t.rowHeaderWidth-1.5,height:t.columnHeaderHeight-1.5}),$(\"#luckysheet_info_detail_input\").val(e.title)}(d,u,0,0,a),setTimeout((function(){vo.createHoverTip(\"#luckysheet_info_detail\",\".luckysheet_info_detail_back, .luckysheet_info_detail_input, .luckysheet_info_detail_update\"),vo.createHoverTip(\"#luckysheet-wa-editor\",\".luckysheet-toolbar-menu-button, .luckysheet-toolbar-button, .luckysheet-toolbar-combo-button\"),t.luckysheetTableContentHW=[$(\"#luckysheet-cell-main\").width()+t.rowHeaderWidth-t.cellMainSrollBarSize,$(\"#luckysheet-cell-main\").height()+t.columnHeaderHeight-t.cellMainSrollBarSize],$(\"#luckysheetTableContent, #luckysheetTableContentF\").attr({width:Math.ceil(t.luckysheetTableContentHW[0]*t.devicePixelRatio),height:Math.ceil(t.luckysheetTableContentHW[1]*t.devicePixelRatio)}).css({width:t.luckysheetTableContentHW[0],height:t.luckysheetTableContentHW[1]}).get(0).getContext(\"2d\");let n=X().info,a=yo.gridKey+\"__qkcache\",o=function(){r.load=\"1\",l.createSheet();let a=function(){l.mergeCalculation(r.index),l.setSheetParam(!1),l.storeSheetParam(),l.restoreselect(),l.CacheNotLoadControll=[],l.restoreCache(),wi.execFunctionGroupForce(e.forceCalculation),l.restoreSheetAll(t.currentSheetIndex),$(\"#luckysheet_info_detail_save\").html(n.detailSave),r.isPivotTable?t.luckysheetcurrentisPivotTable=!0:(t.luckysheetcurrentisPivotTable=!1,$(\"#luckysheet-modal-dialog-slider-pivot\").hide()),function(){let n=e.showtoolbar,a=e.showtoolbarConfig,l=t.toobarObject.toobarWidths=[],r=t.toobarObject.toobarElements=[],o=t.toobarObject.toolbarConfig=function(){let e={};function t(e){let t,n,a={},l=0;for(let r=0;r<e.length;r++)t=e[r],n=e[r+1],\"|\"!==t&&(a[t]={ele:J[t],index:l++}),\"|\"===n&&(\"array\"===ad(a[t].ele)?a[t].ele.push(`#toolbar-separator-${kd(t)}`):a[t].ele=[a[t].ele,`#toolbar-separator-${kd(t)}`]);return a}if(\"array\"===ad(a))return n?t(a):e;let l=Z.reduce((function(e,t){return\"|\"!==t&&(e[t]=!0),e}),{});if(!n)for(let e in l)l[e]=!1;if(\"{}\"!==JSON.stringify(a)){a.hasOwnProperty(\"undoRedo\")&&(l.undo=l.redo=a.undoRedo),Object.assign(l,a);let t,n,r=0;for(let a=0;a<Z.length;a++)t=Z[a],n=Z[a+1],!1!==l[t]&&(\"|\"!==t&&l[t]&&(e[t]={ele:J[t],index:r++}),\"|\"===n&&(\"array\"===ad(e[t].ele)?e[t].ele.push(`#toolbar-separator-${kd(t)}`):e[t].ele=[e[t].ele,`#toolbar-separator-${kd(t)}`]))}else e=n?t(Z):{};return e}();for(let e in o)Object.prototype.hasOwnProperty.call(o,e)&&r.push($.extend(!0,{},o[e]));r.sort((function(e,t){return e.index>t.index?1:-1})),r.forEach(((e,t,n)=>{n[t]=e.ele,t!==r.length-1?e.ele instanceof Array?l.push($(e.ele[0]).offset().left):l.push($(e.ele).offset().left):e.ele instanceof Array?(l.push($(e.ele[0]).offset().left),l.push($(e.ele[0]).offset().left+$(e.ele[0]).outerWidth()+5)):(l.push($(e.ele).offset().left),l.push($(e.ele).offset().left+$(e.ele).outerWidth()+5))}));let i=$(\"#\"+t.container).offset().left;l.forEach(((e,t)=>{l[t]-=i}))}(),Dl(),null!=r.scrollLeft&&r.scrollLeft>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(r.scrollLeft):$(\"#luckysheet-scrollbar-x\").scrollLeft(0),null!=r.scrollTop&&r.scrollTop>0?$(\"#luckysheet-scrollbar-y\").scrollTop(r.scrollTop):$(\"#luckysheet-scrollbar-y\").scrollTop(0),bd(t.asyncLoad,\"core\"),e.pointEdit?setTimeout((function(){t.loadingObj.close()}),0):setTimeout((function(){t.loadingObj.close()}),500)},o=yo.loadSheetUrl;if(\"\"==o)l.loadOtherFile(r),a();else{let e=l.checkLoadSheetIndex(r),n=[];for(let t=0;t<e.length;t++){let a=e[t];a!=r.index&&n.push(a)}if(0===n.length)return void a();$.post(o,{gridKey:yo.gridKey,index:n.join(\",\")},(function(e){let n=new Function(\"return \"+e)();for(let e in n){if(e==r.index)continue;let a=t.luckysheetfile[l.getSheetIndex(e)];(null==a.load||\"0\"==a.load)&&(a.celldata=n[e.toString()],a.data=l.buildGridData(a),a.load=\"1\")}a()}))}};try{localforage.getItem(a).then((function(e){null!=e&&(l.CacheNotLoadControll=e),yo.clearcachelocaldata((function(){o()}))}))}catch(e){o(),console.log(\"缓存操作失败\")}}),1)},storeSheetParam:function(){let e=this.getSheetIndex(t.currentSheetIndex),n=t.luckysheetfile[e];n.config=t.config,n.visibledatarow=t.visibledatarow,n.visibledatacolumn=t.visibledatacolumn,n.ch_width=t.ch_width,n.rh_height=t.rh_height,n.luckysheet_select_save=$.extend(!0,[],t.luckysheet_select_save),n.luckysheet_selection_range=$.extend(!0,[],t.luckysheet_selection_range),$(\"#luckysheet-scrollbar-x\")[0].scrollWidth>$(\"#luckysheet-scrollbar-x\")[0].offsetWidth&&(n.scrollLeft=$(\"#luckysheet-scrollbar-x\").scrollLeft()),$(\"#luckysheet-scrollbar-y\")[0].scrollHeight>$(\"#luckysheet-scrollbar-y\")[0].offsetHeight&&(n.scrollTop=$(\"#luckysheet-scrollbar-y\").scrollTop()),n.zoomRatio=t.zoomRatio},setSheetParam:function(e=!0){let n=this.getSheetIndex(t.currentSheetIndex),a=t.luckysheetfile[n];t.flowdata=a.data,mn.webWorkerFlowDataCache(t.flowdata),wi.execFunctionGlobalData=null,window.luckysheet_getcelldata_cache=null,this.sheetParamRestore(a,t.flowdata),null==a.freezen?($l.freezenhorizontaldata=null,$l.freezenverticaldata=null):($l.freezenhorizontaldata=null==a.freezen.horizontal?null:a.freezen.horizontal.freezenhorizontaldata,$l.freezenverticaldata=null==a.freezen.vertical?null:a.freezen.vertical.freezenverticaldata),e&&ha(t.flowdata.length,t.flowdata[0].length),vl.buildAllPs(t.flowdata),rl.currentImgId=null,rl.images=a.images,rl.allImagesShow(),rl.init(),sl.dataVerification=a.dataVerification,sl.init(),Qr.hyperlink=a.hyperlink,Qr.init(),al(a.filter_select,a.filter)},restoreselect:function(){let e=this.getSheetIndex(t.currentSheetIndex),n=t.luckysheetfile[e];Pu(!0),Vu(),null!=n.scrollLeft&&n.scrollLeft>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(n.scrollLeft):$(\"#luckysheet-scrollbar-x\").scrollLeft(0),null!=n.scrollTop&&n.scrollTop>0?$(\"#luckysheet-scrollbar-y\").scrollTop(n.scrollTop):$(\"#luckysheet-scrollbar-y\").scrollTop(0)},storeSheetParamALL:function(){this.storeSheetParam();let e=this.getSheetIndex(t.currentSheetIndex);t.luckysheetfile[e].data=t.flowdata,t.luckysheetfile[e].config=$.extend(!0,{},t.config)},mergeCalculationSheet:{},mergeCalculation:function(e){let n=t.luckysheetfile[this.getSheetIndex(e)],a=n.config,l=n.data;if(null==a)return;let r=a.merge;if(null!=r&&!(e in this.mergeCalculationSheet)&&!1!==n.autoCalculationMerge){this.mergeCalculationSheet[e]=1;for(let e in r){let t=parseInt(e.substr(0,e.indexOf(\"_\"))),n=parseInt(e.substr(e.indexOf(\"_\")+1)),a=r[e];null==l[t][n]&&(l[t][n]={}),l[t][n].mc={r:t,c:n,rs:a.rs,cs:a.cs};for(let e=t;e<t+a.rs;e++)for(let r=n;r<n+a.cs;r++)e==t&&r==n||(null==l[e][r]&&(l[e][r]={}),l[e][r].mc={r:t,c:n})}}},loadOtherFile:function(e){let n=this;for(let a=0;a<t.luckysheetfile.length;a++){let l=t.luckysheetfile[a];l.index!=e.index&&(null==l.load||\"0\"==l.load)&&(l.data=n.buildGridData(l),l.load=\"1\")}},changeSheet:function(n,a,l,r){if(I())return;let o=this;if(n==t.currentSheetIndex)return;yo.allowUpdate&&($(\"#luckysheet-cell-main #luckysheet-multipleRange-show\").empty(),yo.multipleIndex=0);let i=t.luckysheetfile[o.getSheetIndex(n)];if(l&&yl.createHookFunction(\"sheetCreateAfter\",{sheet:i}),r&&yl.createHookFunction(\"sheetCopyAfter\",{sheet:i}),yl.createHookFunction(\"sheetActivate\",n,a,l),$(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex+\", #luckysheet-filter-options-sheet\"+t.currentSheetIndex).hide(),$(\"#luckysheet-filter-selected-sheet\"+n+\", #luckysheet-filter-options-sheet\"+n).show(),window.luckysheetCurrentIndex=n,o.storeSheetParamALL(),o.setCurSheet(n),i.isPivotTable?(t.luckysheetcurrentisPivotTable=!0,a||wr.changePivotTable(n)):(t.luckysheetcurrentisPivotTable=!1,$(\"#luckysheet-modal-dialog-slider-pivot\").hide(),Dl(!1),this.refreshAllPivotTable(t.currentSheetIndex)),null!=i.load){let e=o.buildGridData(i);i.data=e,o.mergeCalculation(n),o.setSheetParam(!0),o.showSheet(),setTimeout((function(){wi.execFunctionGroupForce(!0),uo(),yo.saveParam(\"shs\",null,t.currentSheetIndex)}),1)}else{let a=yo.loadSheetUrl;if(\"\"==a||t.luckysheetcurrentisPivotTable||l){let a=o.buildGridData(i);i.data=a,i.load=\"1\",o.mergeCalculation(n),o.setSheetParam(),o.showSheet(),setTimeout((function(){o.restoreCache(),wi.execFunctionGroupForce(e.forceCalculation),o.restoreSheetAll(t.currentSheetIndex),uo()}),1),yo.saveParam(\"shs\",null,t.currentSheetIndex)}else{$(\"#luckysheet-grid-window-1\").append(St());let l=o.checkLoadSheetIndex(i);$.post(a,{gridKey:yo.gridKey,index:l.join(\",\")},(function(a){let l=new Function(\"return \"+a)();i.celldata=l[n.toString()];let r=o.buildGridData(i);setTimeout((function(){t.loadingObj.close()}),500);for(let e in l){if(e==n)continue;let a=t.luckysheetfile[o.getSheetIndex(e)];(null==a.load||\"0\"==a.load)&&(a.celldata=l[e.toString()],a.data=o.buildGridData(a),a.load=\"1\")}i.data=r,i.load=\"1\",o.mergeCalculation(n),o.setSheetParam(),o.showSheet(),setTimeout((function(){o.restoreCache(),wi.execFunctionGroupForce(e.forceCalculation),o.restoreSheetAll(t.currentSheetIndex),uo()}),1),yo.saveParam(\"shs\",null,t.currentSheetIndex)}))}}$(\"#luckysheet-cell-main .luckysheet-datavisual-selection-set\").hide(),$(\"#luckysheet-datavisual-selection-set-\"+n).show(),wi.hideButton(),si(n),$l.initialFreezen(n),o.restoreselect(),Ol()},refreshAllPivotTable:function(e){t.luckysheetfile.forEach((e=>{e.isPivotTable&&this.refreshPivotTableByFile(e)}))},refreshPivotTableByFile:function(e){let n=e.pivotTable,a=n.column,l=n.row,r=n.values,o=n.showType,i=n.filterparm,s=n.pivotDataSheetIndex,c=this.getSheetIndex(s),u=t.luckysheetfile[c];null==u.data&&(u.data=this.buildGridData(u));let d=On(u.data,n.pivot_select_save),h={};if(null!=i)for(let e in i)for(let t in i[e])\"rowhidden\"===t&&null!=_this.filterparm[e][t]&&(h=$.extend(!0,h,i[e][t]));let f=[];for(let e=0;e<d.length;e++)null!=h&&null!=h[e]||f.push([].concat(d[e]));let m=wr.dataHandler(a,l,r,o,f);n.pivotDatas=m;let p=$.extend(!0,[],this.nulldata),g=p,y=0,v=0,b=m.length,k=m[0].length;y=b-p.length,v=k-p[0].length,g=qn(p,y+20,v+10,!0);for(let e=0;e<b;e++)for(let t=0;t<k;t++){let n=\"\";null!=m[e]&&null!=m[e][t]&&(n=Vn(e,t,m),Na(e,t,g,n))}e.data=g},checkLoadSheetIndexToDataIndex:{},checkLoadSheetIndex:function(e){let n=wi.getAllFunctionGroup(),a=e.chart,l=e.pivotTable,r=[],o={};if(e.index in this.checkLoadSheetIndexToDataIndex)return[];if(r.push(e.index),o[e.index.toString()]=1,this.checkLoadSheetIndexToDataIndex[e.index]=1,null!=n){let e={};for(let a=0;a<n.length;a++){let l=n[a],r=l.index,o=Hn(l.r,l.c,r);if(null==o){let e=t.luckysheetfile[this.getSheetIndex(r)];if(e.data=this.buildGridData(e),o=Hn(l.r,l.c,r),null==o)continue}if(-1==o.indexOf(\"!\"))wi.addToSheetIndexList(o,r);else if(null!=wi.formulaContainSheetList&&null!=wi.formulaContainSheetList[o])for(let t in wi.formulaContainSheetList[o])e[t]=1;else wi.functionParser(o,(t=>{if(wi.addToCellList(o,t),t.indexOf(\"!\")>-1){let n=t.substr(0,t.indexOf(\"!\")),a=this.getSheetByName(n);if(null!=a){let t=a.index;e[t]=1,wi.addToSheetIndexList(o,t)}}})),null==wi.formulaContainSheetList[o]&&wi.addToSheetIndexList(o,r)}for(let t in e){let e=t;null==o[e.toString()]&&(r.push(e),o[e.toString()]=1,this.checkLoadSheetIndexToDataIndex[e]=1)}}if(null!=a)for(let e=0;e<a.length;e++){let t=a[e].dataSheetIndex;null!=t&&null==o[t.toString()]&&(r.push(t),o[t.toString()]=1)}if(null!=l){let e=l.pivotDataSheetIndex;null!=e&&null==o[e.toString()]&&(r.push(e),o[e.toString()]=1)}return r},showSheet:function(){$(\"#luckysheet-cell-flow_0\").css({width:t.ch_width,top:\"-1px\"}),$(\"#luckysheet-sheettable_0\").css({width:t.ch_width-1,height:t.rh_height}),$(\"#luckysheetrowHeader_0\").css(\"height\",t.rh_height),$(\"#luckysheet-cols-h-cells_0\").css(\"width\",t.ch_width),$(\"#luckysheet-scrollbar-x div\").width(t.ch_width),$(\"#luckysheet-scrollbar-y div\").height(t.rh_height+t.columnHeaderHeight-t.cellMainSrollBarSize-3);let e=this.getSheetIndex(t.currentSheetIndex),n=t.luckysheetfile[e];t.scrollRefreshSwitch=!1,null!=n.scrollLeft&&n.scrollLeft>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(n.scrollLeft*t.zoomRatio):$(\"#luckysheet-scrollbar-x\").scrollLeft(0),null!=n.scrollTop&&n.scrollTop>0?$(\"#luckysheet-scrollbar-y\").scrollTop(n.scrollTop*t.zoomRatio):$(\"#luckysheet-scrollbar-y\").scrollTop(0),setTimeout((()=>{t.scrollRefreshSwitch=!0}),0),yi(t.zoomRatio)},setCurSheet:function(e){for(let n=0;n<t.luckysheetfile.length;n++)t.luckysheetfile[n].index==e?t.luckysheetfile[n].status=1:t.luckysheetfile[n].status=0;t.currentSheetIndex=e},getSheetIndex:function(e){for(let n=0;n<t.luckysheetfile.length;n++)if(t.luckysheetfile[n].index==e)return n;return null},changeSheetExec:function(e,t,n,a){let l=$(\"#luckysheet-sheets-item\"+e);window.luckysheet_getcelldata_cache=null,$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),l.addClass(\"luckysheet-sheets-item-active\").show(),$o(),this.changeSheet(e,t,n,a),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide(),wi.rangestart&&wi.createRangeHightlight(),this.sheetBarShowAndHide(e)},sheetArrowShowAndHide(){let t=$(\"#luckysheet-sheet-container-c\");t.length&&(t[0].scrollWidth>Math.ceil(t.width())?e.showsheetbarConfig.sheet&&($(\"#luckysheet-sheet-area .luckysheet-sheets-scroll\").css(\"display\",\"inline-block\"),$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").show()):($(\"#luckysheet-sheet-area .luckysheet-sheets-scroll\").css(\"display\",\"none\"),$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").hide()))},sheetBarShowAndHide(e){let t=$(\"#luckysheet-sheet-container-c\");if(null!=e){let n=$(\"#luckysheet-sheets-item\"+e);t.scrollLeft(n.offset().left)}let n=t.width(),a=t[0].scrollWidth,l=t.scrollLeft();l<=0?$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").hide():$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").show(),n+l>=a?$(\"#luckysheet-sheet-container .docs-sheet-fade-right\").hide():$(\"#luckysheet-sheet-container .docs-sheet-fade-right\").show()},delChart:function(e,n){let a=this.getSheetIndex(n),l=t.luckysheetfile[a];if(null==l.chart)l.chart=[];else for(let n=0;n<l.chart.length;n++)if(l.chart[n].chart_id==e){t.luckysheetfile[a].chart.splice(n,1);break}},saveChart:function(e){let n=this.getSheetIndex(e.sheetIndex),a=t.luckysheetfile[n];if(null==a.chart)a.chart=[],a.chart.push(e);else{for(let t=0;t<a.chart.length;t++)if(a.chart[t].chart_id==e.chart_id){let n=$.extend(!0,{},a.chart[t]);return void(a.chart[t]=$.extend(!0,{},n,e))}a.chart.push(e)}},getChart:function(e,n){let a=this.getSheetIndex(e),l=t.luckysheetfile[a];if(null==l.chart)return null;for(let e=0;e<l.chart.length;e++)if(l.chart[e].chart_id==n)return l.chart[e];return null},getRangetxt:function(e,n,a){let l=\"\";null==a&&(a=t.currentSheetIndex),e!=a&&(l=t.luckysheetfile[this.getSheetIndex(e)].name+\"!\");let r=n.row[0],o=n.row[1],i=n.column[0],s=n.column[1];return null==r&&null==o?l+id(i)+\":\"+id(s):null==i&&null==s?l+(r+1)+\":\"+(o+1):i==s&&r==o?l+id(i)+(r+1):l+id(i)+(r+1)+\":\"+id(s)+(o+1)},getSheetName:function(e){return null==e&&(e=t.currentSheetIndex),t.luckysheetfile[this.getSheetIndex(e)].name},getSheetMerge:function(){return null==t.config.merge?null:t.config.merge},getSheetData:function(e){return null==e&&(e=t.currentSheetIndex),t.luckysheetfile[this.getSheetIndex(e)].data},getSheetConfig:function(e){let n=this;return null==e&&(e=t.currentSheetIndex),null==t.luckysheetfile[n.getSheetIndex(e)].config&&(t.luckysheetfile[n.getSheetIndex(e)].config={}),t.luckysheetfile[n.getSheetIndex(e)].config},restoreFilter:function(e){let n=this.getSheetIndex(e),a=t.luckysheetfile[n];if(\"string\"==ad(a.filter_select)&&(a.filter_select=JSON.parse(a.filter_select)),null==a.filter_select||null==a.filter_select.row||null==a.filter_select.column)return;al(a.filter_select),\"object\"!=ad(a.filter)&&null!=a.filter&&\"string\"==ad(a.filter)&&(a.filter=JSON.parse(a.filter));let l={};null!=a.config&&null!=a.config.rowhidden&&(l=a.config.rowhidden),$(\"#luckysheet-filter-options-sheet\"+e+\" .luckysheet-filter-options\").each((function(e){if(null==a.filter)return!1;let t=$(this),n=a.filter[e];if(null==n)return!0;\"object\"!=ad(n)&&(n=JSON.parse(n)),el(t,n.optionstate,n.rowhidden,n.caljs,!1,n.st_r,n.ed_r,n.cindex,n.st_c,n.ed_c),l=$.extend(!0,l,n.rowhidden)})),null==a.config&&(a.config={}),a.config.rowhidden=l,t.config=a.config,co(t.flowdata.length,t.flowdata[0].length,!1)},restorePivot:function(e){let n=this.getSheetIndex(e);!t.luckysheetfile[n].isPivotTable||(wr.getCellData(e),wr.initialPivotManage(!0),wr.refreshPivotTable(!1))},restoreSheetAll:function(e){let t=this;t.restorePivot(e),t.restoreFilter(e),t.restoreFreezen(e)},restoreFreezen:function(e){$l.initialFreezen(e)},restoreCache:function(){let e=this,t=e.CacheNotLoadControll;if(e.CacheNotLoadControll=[],0!=t.length)for(let n=0;n<t.length;n++){let a=t[n];e.execCache(a)}},CacheNotLoadControll:[],execCache:function(e){let n=this,a=e.t,l=e.i,r=e.v,o=t.luckysheetfile[n.getSheetIndex(l)];if(\"sha\"==a)t.luckysheetfile.push(r);else if(\"shc\"==a){let e=$.extend(!0,{},t.luckysheetfile[n.getSheetIndex(r.copyindex)]);e.index=l,t.luckysheetfile.push(e)}else if(\"shd\"==a)t.luckysheetfile.splice(r.deleIndex,1);else if(\"shr\"==a)for(let e in r)t.luckysheetfile[n.getSheetIndex(e)].order=r[e];if(null!=o&&\"1\"==o.load||a in{sha:0,shc:0,shd:0,shr:0})if(\"v\"==a){let t=e.r,a=e.c,r=e.v;n.getSheetData(l);o.data[t][a]=r}else if(\"fc\"==a){let t=e.op;e.pos;\"object\"!=ad(r)&&(r=new Function(\"return \"+r)());let n=r.r,a=r.c;\"del\"==t?wi.delFunctionGroup(n,a,l):wi.insertUpdateFunctionGroup(n,a,l)}else if(\"cg\"==a){let a=r,o=e.k,i=n.getSheetConfig(l);o in i||(i[o]={});for(let e in a)i[o][e]=a[e];t.config=i}else if(\"f\"==a){let t=r,n=e.op,a=e.pos,l=o.filter;null==l&&(l={}),\"upOrAdd\"==n?l[a]=t:\"del\"==n&&delete l[a]}else if(\"fsc\"==a)o.filter=null,o.filter_select=null;else if(\"fsr\"==a){let e=r;o.filter=e.filter,o.filter_select=e.filter_select}else if(\"sh\"==a){let a=e.op,l=e.cur;if(\"hide\"==a)o.status=0,t.luckysheetfile[n.getSheetIndex(l)].status=1;else if(\"show\"==a){for(let e=0;e<t.luckysheetfile.length;e++)t.luckysheetfile[e].status=0;o.status=1}}else if(\"all\"==a){let t=e.k;e.s&&\"object\"!=ad(r)?o[t]=JSON.stringify(r):o[t]=r}else if(\"c\"==a){let t=e.op,n=e.cid;if(\"add\"==t)o.chart.push(r);else if(\"xy\"==t||\"wh\"==t||\"update\"==t){for(let e=0;e<o.chart.length;e++)if(o.chart[e].chart_id==n){for(let t in o.chart[e])for(let n in r)t==n&&(o.chart[e][t]=r[n]);return}}else if(\"del\"==t)for(let e=0;e<o.chart.length;e++)if(o.chart[e].chart_id==n)return void o.chart.splice(e,1)}else if(\"drc\"==a){let t=e.rc,n=r.index,a=r.len,l=o.celldata;if(\"r\"==t){for(let e=0;0==l.length;e++){let t=l[e];t.r>=n&&t.r<n+a?delete l[e]:t.r>=n+a&&(t.r-=a)}o.row-=a}else{for(let e=0;0==l.length;e++){let t=l[e];t.c>=n&&t.c<n+a?delete l[e]:t.c>=n+a&&(t.c-=a)}o.column-=a}let i,s,c,u=[];for(let e=0;e<l.length;e++)null!=l[e]&&u.push(l[e]);o.celldata=u,i=\"r\"==t?\"row\":\"column\",s=n,c=n+a-1,hl(i,s,c,!0)}else if(\"arc\"==a){let t,n=e.rc,a=r.index,l=r.len,i=o.celldata;if(\"r\"==n){for(let e=0;e<i.length;e++){let t=i[e];t.r>a&&(t.r+=l)}o.row+=l}else{for(let e=0;e<i.length;e++){let t=i[e];t.c>a&&(t.c+=l)}o.column+=l}t=\"r\"==n?\"row\":\"column\",ul(t,a,l,!0)}else\"na\"==a?yo.saveParam(\"na\",null,r):\"thumb\"==a&&setTimeout((function(){n.imageRequest()}),2e3);else n.CacheNotLoadControll.push(e)}}})),Ci=y((()=>{_d(),qt(),Wt(),Et(),_i(),ed(),_o(),Al(),dr(),cl(),Xu(),E(),ka(),da(),Yn(),Pa(),Ma(),gn(),Co(),na(),Cn(),fo(),zn(),Ko(),x(),K(),Qa(),kl(),wi={error:{v:\"#VALUE!\",n:\"#NAME?\",na:\"#N/A\",r:\"#REF!\",d:\"#DIV/0!\",nm:\"#NUM!\",nl:\"#NULL!\",sp:\"#SPILL!\"},errorInfo:function(e){return e},errorParamCheck:function(e,t,n){let a,l,r=X().formulaMore;return n<e.length?(a=e[n].type,l=e[n].require):(a=e[e.length-1].type,l=e[e.length-1].require),\"o\"!=l||null!=t&&\"\"!=t?a.indexOf(\"all\")>-1||a.indexOf(\"range\")>-1&&(\"object\"==ad(t)||\"array\"==ad(t))||a.indexOf(\"number\")>-1&&(C(t)||\"boolean\"==ad(t))||a.indexOf(\"string\")>-1&&\"string\"==ad(t)||a.indexOf(\"date\")>-1&&pa(t)?[!0,r.tipSuccessText]:[!1,r.tipParamErrorText]:[!0,r.tipSuccessText]},getPureValueByData:function(e){if(0==e.length)return[];let t=[];if(\"array\"==ad(e))if(\"array\"==ad(e[0]))for(let n=0;n<e.length;n++){let a=[];for(let t=0;t<e[0].length;t++){let l=e[n][t];\"object\"==ad(l)?a.push(l.v):a.push(l)}t.push(a)}else for(let n=0;n<e.length;n++){let a=e[n];\"object\"==ad(a)?t.push(a.v):t.push(a)}else{let n=e;\"object\"==ad(n)?t.push(n.v):t.push(n)}return t},readCellDataToOneArray:function(e){if(null==e)return[];if(\"object\"!=ad(e))return[e];let t=[],n=[];if(null==e||null==e.data)return null==e||_(e.v)?[]:[e.v];if(n=e.data,\"array\"==ad(n))n=this.getPureValueByData(n);else{if(\"object\"==ad(n))return n=n.v,[n];/\\{.*?\\}/.test(n)&&(n=n.replace(/\\{/g,\"[\").replace(/\\}/g,\"]\")),n=new Function(\"return \"+n)()}if(\"array\"==ad(n[0]))for(let e=0;e<n.length;e++)t=t.concat(n[e]);else t=n;return t},getValueByFuncData:function(e,t){if(null==e)return null;return\"array\"==ad(e)?\"avg\"==t?luckysheet_function.AVERAGE.f.apply(luckysheet_function.AVERAGE,e):\"sum\"==t?luckysheet_function.SUM.f.apply(luckysheet_function.SUM,e):\"object\"==ad(e[0])?luckysheet.mask.getValueByFormat(e[0]):e[0]:\"object\"==ad(e)?luckysheet.mask.getValueByFormat(e):e},sparklinesColorMap:function(e,t){let n=this,a=null;null==t&&(t=5);if(e.length>t)for(let l=t;l<e.length;l++){let t=e[l],r=n.readCellDataToOneArray(t);for(let e=0;e<r.length;e++){let t=r[e];if(t.indexOf(\":\")>-1){a||(a={});let e=t.split(\":\");2==e.length?a[e[0]]=e[1]:e.length>1&&(a[e[0]+\":\"+e[1]]=e[2])}else a||(a=[]),a.push(t)}0}return a},colorList:[\"#2ec7c9\",\"#fc5c5c\",\"#5ab1ef\",\"#ffb980\",\"#d87a80\",\"#8d98b3\",\"#e5cf0d\",\"#97b552\",\"#95706d\",\"#dc69aa\",\"#07a2a4\",\"#9a7fd1\",\"#588dd5\",\"#f5994e\",\"#c05050\",\"#59678c\",\"#c9ab00\",\"#7eb00a\",\"#6f5553\",\"#c14089\"],classlist:{province:{11:\"北京\",12:\"天津\",13:\"河北\",14:\"山西\",15:\"内蒙古\",21:\"辽宁\",22:\"吉林\",23:\"黑龙江\",31:\"上海\",32:\"江苏\",33:\"浙江\",34:\"安徽\",35:\"福建\",36:\"江西\",37:\"山东\",41:\"河南\",42:\"湖北\",43:\"湖南\",44:\"广东\",45:\"广西\",46:\"海南\",50:\"重庆\",51:\"四川\",52:\"贵州\",53:\"云南\",54:\"西藏\",61:\"陕西\",62:\"甘肃\",63:\"青海\",64:\"宁夏\",65:\"新疆\",71:\"台湾\",81:\"香港\",82:\"澳门\",91:\"国外\"}},oldvalue:null,dontupdate:function(){let e=this;t.luckysheetCellUpdate.length=0,$(\"#luckysheet-functionbox-cell, #luckysheet-rich-text-editor\").html(e.oldvalue),e.cancelNormalSelected(),e.rangetosheet!=t.currentSheetIndex&&ki.changeSheetExec(e.rangetosheet)},xssDeal:function(e){return\"string\"!=typeof e?e:e.replace(/<script>/g,\"&lt;script&gt;\").replace(/<\\/script>/,\"&lt;/script&gt;\")},ltGtSignDeal:function(e){return\"string\"!=typeof e||\"<span\"===e.substr(0,5)||e.startsWith(\"=\")?e:e.replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")},fucntionboxshow:function(e,n){if(!Yl(e,n,t.currentSheetIndex))return void $(\"#luckysheet-functionbox-cell\").html(\"\");let a=t.flowdata,l=\"\";if(null!=a[e]&&null!=a[e][n]){let t=$.extend(!0,{},a[e][n]);Tn(t)?(l=function(e,t){let n=Vn(e,t,null,\"ct\");if(Sn(n)){let e=n.s,t=\"\";for(let n=0;n<e.length;n++){let a=e[n];null!=a.v&&(t+=a.v)}return t}return\"\"}(e,n),\"string\"==typeof l&&(l=l.replace(/\\</g,\"&lt;\").replace(/\\>/g,\"&gt;\"))):null!=t.f?l=Vn(e,n,a,\"f\"):(l=Sa(e,n,a),\"string\"==typeof l&&(l=l.replace(/\\</g,\"&lt;\").replace(/\\>/g,\"&gt;\")))}l=this.xssDeal(l),this.oldvalue=l,$(\"#luckysheet-functionbox-cell\").html(l)},cellOffset:function(e,t,n,a,l){let r,o=e.startCell,i=(e.rowl,e.coll,parseInt(o.replace(/[^0-9]/g,\"\"))),s=od(o.replace(/[^A-Za-z]/g,\"\")),c=[],u=[];c[0]=i+t,u[0]=s+n,c[1]=c[0]+a-1,u[1]=u[0]+l-1,u[0]=id(u[0]),u[1]=id(u[1]);let d=u[0]+c[0],h=u[1]+c[1];return r=d==h?e.sheetName+\"!\"+d:e.sheetName+\"!\"+d+\":\"+h,r},parseDatetoNum:function(e){if(\"object\"==typeof e&&\"number\"==typeof e.v)e=e.v;else if(\"num\"==va(e))e=parseFloat(e);else{if(\"date\"!=va(e))return this.error.v;e=_a(e)[2]}return e},getRangeArray:function(e){var t,n,a;let l=[],r=\"General\";if(1==e.length)for(let n=0;n<e[0].length;n++)if(null!=e[0][n]&&e[0][n].v){l.push(e[0][n].v);let a=null==(t=e[0][n].ct)?void 0:t.fa;r=\"General\"==r?a:r}else l.push(null);else if(1==e[0].length)for(let t=0;t<e.length;t++)if(null!=e[t][0]&&e[t][0].v){l.push(e[t][0].v);let a=null==(n=e[t][0].ct)?void 0:n.fa;r=\"General\"==r?a:r}else l.push(null);else for(let t=0;t<e.length;t++)for(let n=0;n<e[t].length;n++)if(null!=e[t][n]&&e[t][n].v){l.push(e[t][n].v);let o=null==(a=e[t][n].ct)?void 0:a.fa;r=\"General\"==r?o:r}else l.push(null);return r=null!=r?r:\"General\",[e=l,r]},getRangeArrayTwo:function(e){let t=$.extend(!0,[],e);if(1==t.length)for(let e=0;e<t[0].length;e++)t[0][e]instanceof Object&&(null!=t[0][e]&&t[0][e]instanceof Object&&t[0][e].m?t[0][e]=t[0][e].m:null!=t[0][e]&&t[0][e]instanceof Object&&t[0][e].v?t[0][e]=t[0][e].v:t[0][e]=null);else if(1==t[0].length)for(let e=0;e<t.length;e++)t[e][0]instanceof Object&&(null!=t[e][0]&&t[e][0]instanceof Object&&t[e][0].m?t[e][0]=t[e][0].m:null!=t[e][0]&&t[e][0]instanceof Object&&t[e][0].v?t[e][0]=t[e][0].v:t[e][0]=null);else for(let e=0;e<t.length;e++)for(let n=0;n<t[e].length;n++)t[e][n]instanceof Object&&(null!=t[e][n]&&t[e][n]instanceof Object&&t[e][n].m?t[e][n]=t[e][n].m:null!=t[e][n]&&t[e][n]instanceof Object&&t[e][n].v?t[e][n]=t[e][n].v:t[e][n]=null);return t},isWildcard:function(e,t){e=e.toString(),t=t.toString(),this.isCompareOperator(t).flag&&(t=this.isCompareOperator(t).num);let n=\"\";for(let e=0;e<t.length;e++){let a=t.charAt(e);\"*\"==a?n+=\".*\":\"?\"==a?n+=\".\":\"~\"==a?\"*\"==t.charAt(e+1)?(n+=\"\\\\*\",e++):\"?\"==t.charAt(e+1)?(n+=\"\\\\?\",e++):n+=\"~\":n+=a}let a=new RegExp(\"^\"+n+\"$\",\"g\");return!!e.match(a)},isCompareOperator:function(e){let t,n=\"\",a=\"\",l=(e=e.toString()).substr(0,1),r=e.substr(1,1),o=!1;return\">\"==l?\"=\"==r?(n=e.substr(0,2),a=e.substr(2),o=!0):\"=\"!=r&&(n=e.substr(0,1),a=e.substr(1),o=!0):\"<\"==l?\"=\"==r||\">\"==r?(n=e.substr(0,2),a=e.substr(2),o=!0):\"=\"!=r&&\">\"!=r&&(n=e.substr(0,1),a=e.substr(1),o=!0):\"=\"==l&&\"=\"!=r&&(n=e.substr(0,1),a=e.substr(1),o=!0),t={flag:o,ope:n,num:a},t},acompareb:function(e,t){let n=this,a=!1;if(C(t))a=Oo(e,\"==\",t);else if(\"string\"==typeof t){if(-1!=t.indexOf(\"*\")||-1!=t.indexOf(\"?\"))return n.isWildcard(e,t);if(n.isCompareOperator(t).flag){a=Oo(e,n.isCompareOperator(t).ope,n.isCompareOperator(t).num)}else a=Oo(e,\"==\",t)}return a},compareParams:function(e,t,n){let a=!1,l=toString.call(e),r=toString.call(t);if((\">\"==n&&e>t||\">=\"==n&&e>=t||\"<\"==n&&e<t||\"<=\"==n&&e<=t||\"=\"==n&&e==t||\"<>\"==n&&e!=t)&&(a=!0),\"[object Object]\"==l&&\"[object Object]\"==r){let n=Object.getOwnPropertyNames(e),a=Object.getOwnPropertyNames(t);if(n.length!=a.length)return!1;for(let a=0;a<n.length;a++){let l=n[a];if(e[l]!==t[l])return!1}return!0}return\"[object Array]\"==l&&\"[object Array]\"==r?e.toString()==t.toString():a},parseDecimal:function(e){e=parseFloat(e);let t=parseInt(e,10);return 0==t||(e%=t),e},getcellrange:function(e,n){if(null==e||0==e.length)return;let a=\"\",l=\"\",r=null,o=null,i=zt();if(e.indexOf(\"!\")>-1){if(e in this.cellTextToIndexList)return this.cellTextToIndexList[e];let t=e.split(\"!\");a=t[0],l=t[1],a=a.replace(/\\\\'/g,\"'\").replace(/''/g,\"'\"),\"'\"==a.substr(0,1)&&\"'\"==a.substr(a.length-1,1)&&(a=a.substring(1,a.length-1));for(let e in i)if(a==i[e].name){r=i[e].index,o=i[e].data;break}}else{let s=n;if(null==s&&(s=t.currentSheetIndex),e+\"_\"+s in this.cellTextToIndexList)return this.cellTextToIndexList[e+\"_\"+s];let c=Mt(s);a=i[c].name,r=i[c].index,o=t.flowdata,l=e}if(null==o)return null;if(-1==l.indexOf(\":\")){let t=parseInt(l.replace(/[^0-9]/g,\"\"))-1,n=od(l.replace(/[^A-Za-z]/g,\"\"));if(isNaN(t)||isNaN(n))return null;{let a={row:[t,t],column:[n,n],sheetIndex:r};return this.addToCellIndexList(e,a),a}}{l=l.split(\":\");let t=[],n=[];if(t[0]=parseInt(l[0].replace(/[^0-9]/g,\"\"))-1,t[1]=parseInt(l[1].replace(/[^0-9]/g,\"\"))-1,isNaN(t[0])&&(t[0]=0),isNaN(t[1])&&(t[1]=o.length-1),t[0]>t[1]||(n[0]=od(l[0].replace(/[^A-Za-z]/g,\"\")),n[1]=od(l[1].replace(/[^A-Za-z]/g,\"\")),isNaN(n[0])&&(n[0]=0),isNaN(n[1])&&(n[1]=o[0].length-1),n[0]>n[1]))return null;let a={row:t,column:n,sheetIndex:r};return this.addToCellIndexList(e,a),a}},rangeHightlightHTML:'<div id=\"luckysheet-formula-functionrange-highlight-${id}\" rangeindex=\"${id}\"  class=\"luckysheet-selection-highlight luckysheet-formula-functionrange-highlight\"><div data-type=\"top\" class=\"luckysheet-selection-copy-top luckysheet-copy\"></div><div data-type=\"right\" class=\"luckysheet-selection-copy-right luckysheet-copy\"></div><div data-type=\"bottom\" class=\"luckysheet-selection-copy-bottom luckysheet-copy\"></div><div data-type=\"left\" class=\"luckysheet-selection-copy-left luckysheet-copy\"></div><div class=\"luckysheet-selection-copy-hc\"></div><div data-type=\"lt\" class=\"luckysheet-selection-highlight-topleft luckysheet-highlight\"></div><div data-type=\"rt\" class=\"luckysheet-selection-highlight-topright luckysheet-highlight\"></div><div data-type=\"lb\" class=\"luckysheet-selection-highlight-bottomleft luckysheet-highlight\"></div><div data-type=\"rb\" class=\"luckysheet-selection-highlight-bottomright luckysheet-highlight\"></div></div>',createRangeHightlight:function(){let e=this,n=$(\"#luckysheet-rich-text-editor\").find(\"span.luckysheet-formula-functionrange-cell\");$(\"#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight\").remove(),n.each((function(){let n=$(this).attr(\"rangeindex\"),a=$(this).text();$(\"#luckysheet-formula-functionrange\").append(nd(e.rangeHightlightHTML,{id:n}));let l=e.getcellrange(a),r=\"luckysheet-formula-functionrange-highlight-\"+n;null==l||(l.sheetIndex==t.currentSheetIndex||-1==l.sheetIndex&&e.rangetosheet==t.currentSheetIndex)&&($(\"#\"+r).data(\"range\",l).find(\".luckysheet-copy\").css({background:$t[n]}).end().find(\".luckysheet-highlight\").css({background:$t[n]}).end().find(\".luckysheet-selection-copy-hc\").css({background:$t[n]}),function(e,n,a,l,r){let o=t.visibledatarow[a],i=n-1==-1?0:t.visibledatarow[n-1],s=t.visibledatacolumn[r],c=l-1==-1?0:t.visibledatacolumn[l-1];$(\"#\"+e).css({left:c,width:s-c-1,top:i,height:o-i-1})}(r,l.row[0],l.row[1],l.column[0],l.column[1]))})),$(\"#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight\").show()},searchHTML:'<div id=\"luckysheet-formula-search-c\" class=\"luckysheet-formula-search-c\"></div>',helpHTML:'<div id=\"luckysheet-formula-help-c\" class=\"luckysheet-formula-help-c\"> <div class=\"luckysheet-formula-help-close\" title=\"${helpClose}\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div> <div class=\"luckysheet-formula-help-collapse\" title=\"${helpCollapse}\"><i class=\"fa fa-angle-up\" aria-hidden=\"true\"></i></div> <div class=\"luckysheet-formula-help-title\"><div class=\"luckysheet-formula-help-title-formula\"> <span class=\"luckysheet-arguments-help-function-name\">SUM</span> <span class=\"luckysheet-arguments-paren\">(</span> <span class=\"luckysheet-arguments-parameter-holder\"> <span class=\"luckysheet-arguments-help-parameter luckysheet-arguments-help-parameter-active\" dir=\"auto\">A2:A100</span>, <span class=\"luckysheet-arguments-help-parameter\" dir=\"auto\">101</span> </span> <span class=\"luckysheet-arguments-paren\">)</span> </div></div> <div class=\"luckysheet-formula-help-content\"> <div class=\"luckysheet-formula-help-content-example\"> <div class=\"luckysheet-arguments-help-section-title\">${helpExample}</div> <div class=\"luckysheet-arguments-help-formula\"> <span class=\"luckysheet-arguments-help-function-name\">SUM</span> <span class=\"luckysheet-arguments-paren\">(</span> <span class=\"luckysheet-arguments-parameter-holder\"> <span class=\"luckysheet-arguments-help-parameter luckysheet-arguments-help-parameter-active\" dir=\"auto\">A2:A100</span>, <span class=\"luckysheet-arguments-help-parameter\" dir=\"auto\">101</span> </span> <span class=\"luckysheet-arguments-paren\">)</span> </div> </div> <div class=\"luckysheet-formula-help-content-detail\"> <div class=\"luckysheet-arguments-help-section\"> <div class=\"luckysheet-arguments-help-section-title luckysheet-arguments-help-parameter-name\">${helpAbstract}</div> <span class=\"luckysheet-arguments-help-parameter-content\">${helpAbstract}</span> </div> </div> <div class=\"luckysheet-formula-help-content-param\"> ${param} </div> </div> <div class=\"luckysheet-formula-help-foot\"></div></div>',getrangeseleciton:function(){let e=window.getSelection(),t=$(e.anchorNode),n=e.anchorOffset;if(t.parent().is(\"span\")&&0!=n){let e=$.trim(t.text()),a=\"\";if(0==e.length&&t.parent().prev().length>0){let n=t.parent().prev();return e=$.trim(n.text()),a=e.substr(e.length-1,1),n}return a=e.substr(n-1,1),t.parent()}if(t.is(\"#luckysheet-rich-text-editor\")||t.is(\"#luckysheet-functionbox-cell\")){let e=$.trim(t.find(\"span\").last().text());if(0==e.length&&t.find(\"span\").length>1){let n=t.find(\"span\");return e=$.trim(n.eq(n.length-2).text()),n}return t.find(\"span\").last()}if((t.parent().is(\"#luckysheet-rich-text-editor\")||t.parent().is(\"#luckysheet-functionbox-cell\")||0==n)&&(0==n&&(t=t.parent()),t.prev().length>0)){let e=$.trim(t.prev().text());e.substr(e.length-1,1);return t.prev()}return null},searchFunctionPosition:function(e,t,n,a,l){let r=$(window).height(),o=$(window).width(),i=e.outerWidth(),s=e.outerHeight();null==l&&(l=!1);let c=n;c=n+i>o?n-i+t.outerWidth():n;let u=a;a+s>r?u=a-s:(u=a+t.outerHeight(),l||e.html(e.find(\".luckysheet-formula-search-item\").get().reverse())),u<0&&(u=0),c<0&&(c=0),e.css({top:u,left:c}).show()},searchFunctionCell:null,searchFunction:function(e){let n=this,a=t.functionlist,l=n.getrangeseleciton();if(n.searchFunctionCell=l,null==l||null==e)return;let r=e.text(),o=l.text().toUpperCase();if(!/^[a-zA-Z]|[a-zA-Z_]+$/.test(o)||\"=\"!=r.substr(0,1))return;let i={f:[],s:[],t:[]},s=0;for(let e=0;e<a.length;e++){let t=a[e],n=t.n;if(n==o?(i.f.unshift(t),s++):n.substr(0,o.length)==o?(i.s.unshift(t),s++):n.indexOf(o)>-1&&(i.t.unshift(t),s++),s>=10)break}let c=i.t.concat(i.s.concat(i.f));if(c.length<=0)return;let u=n.searchFunctionHTML(c);$(\"#luckysheet-formula-search-c\").html(u).show(),$(\"#luckysheet-formula-help-c\").hide();let d=e.parent(),h=d.offset();n.searchFunctionPosition($(\"#luckysheet-formula-search-c\"),d,h.left,h.top)},searchFunctionEnter:function(e){let t=this,n=e.data(\"func\");t.searchFunctionCell.text(n).after('<span dir=\"auto\" class=\"luckysheet-formula-text-color\">(</span>'),t.setCaretPosition(t.searchFunctionCell.next().get(0),0,1),$(\"#luckysheet-formula-search-c\").hide(),t.helpFunctionExe(t.searchFunctionCell.closest(\"div\"),t.searchFunctionCell.next())},searchFunctionHTML:function(e){let t=this;0==$(\"#luckysheet-formula-search-c\").length&&($(\"body\").append(t.searchHTML),$(\"#luckysheet-formula-search-c\").on(\"mouseover\",\".luckysheet-formula-search-item\",(function(){$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").removeClass(\"luckysheet-formula-search-item-active\"),$(this).addClass(\"luckysheet-formula-search-item-active\")})).on(\"mouseout\",\".luckysheet-formula-search-item\",(function(){})).on(\"click\",\".luckysheet-formula-search-item\",(function(){null!=t.searchFunctionCell&&t.searchFunctionEnter($(this))})));let n='<div data-func=\"${n}\" class=\"luckysheet-formula-search-item ${class}\"><div class=\"luckysheet-formula-search-func\">${n}</div><div class=\"luckysheet-formula-search-detail\">${a}</div></div>',a=\"\";for(let t=0;t<e.length;t++){let l=e[t];t==e.length-1?a+=nd(n,{class:\"luckysheet-formula-search-item-active\",n:l.n,a:l.a}):a+=nd(n,{class:\"\",n:l.n,a:l.a})}return a},functionlistPosition:{},helpFunction:function(e,n,a){let l=t.functionlist[this.functionlistPosition[$.trim(n).toUpperCase()]];if(null==l)return;let r=X().formulaMore;$(\"#luckysheet-formula-help-c .luckysheet-arguments-help-function-name\").html(l.n),$(\"#luckysheet-formula-help-c .luckysheet-arguments-help-parameter-content\").html(l.d);let o=\"\",i=\"\",s=\"\";for(let e=0;e<l.p.length;e++){let t=l.p[e],n=t.name,a=t.name;\"y\"==t.repeat&&(n+=\", ...\",a+='<span class=\"luckysheet-arguments-help-argument-info\">...-'+r.allowRepeatText+\"</span>\"),\"o\"==t.require&&(n=\"[\"+n+\"]\",a+='<span class=\"luckysheet-arguments-help-argument-info\">-['+r.allowOptionText+\"]</span>\"),o+='<span class=\"luckysheet-arguments-help-parameter\" dir=\"auto\">'+n+\"</span>, \",i+='<span class=\"luckysheet-arguments-help-parameter\" dir=\"auto\">'+t.example+\"</span>, \",s+=nd('<div class=\"luckysheet-arguments-help-section\"><div class=\"luckysheet-arguments-help-section-title\">${param}</div><span class=\"luckysheet-arguments-help-parameter-content\">${content}</span></div>',{param:a,content:t.detail})}if(o=o.substr(0,o.length-2),i=i.substr(0,i.length-2),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-title .luckysheet-arguments-parameter-holder\").html(o),$(\"#luckysheet-formula-help-c .luckysheet-arguments-help-formula .luckysheet-arguments-parameter-holder\").html(i),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-content-param\").html(s),null==a)$(\"#luckysheet-formula-help-c .luckysheet-formula-help-title-formula .luckysheet-arguments-help-function-name\").css(\"font-weight\",\"bold\");else{$(\"#luckysheet-formula-help-c .luckysheet-formula-help-title-formula .luckysheet-arguments-help-function-name\").css(\"font-weight\",\"normal\");let e=a>=l.p.length?l.p.length-1:a;$(\"#luckysheet-formula-help-c .luckysheet-formula-help-title .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter\").removeClass(\"luckysheet-arguments-help-parameter-active\"),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-title .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter\").eq(e).addClass(\"luckysheet-arguments-help-parameter-active\"),$(\"#luckysheet-formula-help-c .luckysheet-arguments-help-formula .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter\").removeClass(\"luckysheet-arguments-help-parameter-active\"),$(\"#luckysheet-formula-help-c .luckysheet-arguments-help-formula .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter\").eq(e).addClass(\"luckysheet-arguments-help-parameter-active\"),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-content-param .luckysheet-arguments-help-section\").removeClass(\"luckysheet-arguments-help-parameter-active\"),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-content-param .luckysheet-arguments-help-section\").eq(e).addClass(\"luckysheet-arguments-help-parameter-active\")}let c=e.parent(),u=c.offset();this.searchFunctionPosition($(\"#luckysheet-formula-help-c\"),c,u.left,u.top,!0)},helpFunctionExe:function(e,n){let a=this,l=t.functionlist,r=X().formulaMore;if(0==$(\"#luckysheet-formula-help-c\").length){$(\"body\").after(nd(a.helpHTML,{helpClose:r.helpClose,helpCollapse:r.helpCollapse,helpExample:r.helpExample,helpAbstract:r.helpAbstract})),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-close\").click((function(){$(\"#luckysheet-formula-help-c\").hide()})),$(\"#luckysheet-formula-help-c .luckysheet-formula-help-collapse\").click((function(){let e=$(\"#luckysheet-formula-help-c .luckysheet-formula-help-content\");e.slideToggle(100,(function(){let e=a.rangeResizeTo.parent(),t=e.offset();a.searchFunctionPosition($(\"#luckysheet-formula-help-c\"),e,t.left,t.top,!0)})),e.is(\":hidden\")?$(this).html('<i class=\"fa fa-angle-up\" aria-hidden=\"true\"></i>'):$(this).html('<i class=\"fa fa-angle-down\" aria-hidden=\"true\"></i>')}));for(let e=0;e<l.length;e++)a.functionlistPosition[l[e].n]=e}if(!n)return;let o=n,i=(e.length,e.find(\"span\")),s=n.index(),c=s;if(null==o)return;let u=null,d=null;if(i.eq(c).is(\".luckysheet-formula-text-func\"))u=i.eq(c).text();else{let e=null,t=[-1,-1];for(;--c>0;)if(e=i.eq(c),e.is(\".luckysheet-formula-text-func\")||$.trim(e.text()).toUpperCase()in a.functionlistPosition){u=e.text(),d=null;let n=!0;for(let a=c;a<=s;a++)if(d||(d=0),!(a>=t[0]&&a<=t[1])){if(e=i.eq(a),e.is(\".luckysheet-formula-text-rpar\")){t=[c,a],u=null,n=!1;break}e.is(\".luckysheet-formula-text-comma\")&&d++}if(n)break}}null!=u&&a.helpFunction(e,u,d)},rangeHightlightselected:function(e,t){let n=this,a=n.getrangeseleciton();if($(\"#luckysheet-formula-search-c, #luckysheet-formula-help-c\").hide(),$(\"#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight .luckysheet-selection-copy-hc\").css(\"opacity\",\"0.03\"),$(\"#luckysheet-formula-search-c, #luckysheet-formula-help-c\").hide(),n.helpFunctionExe(e,a),0==$(a).closest(\".luckysheet-formula-functionrange-cell\").length)return void n.searchFunction(e);let l=$(a).closest(\".luckysheet-formula-functionrange-cell\").attr(\"rangeindex\");$(\"#\"+(\"luckysheet-formula-functionrange-highlight-\"+l)).find(\".luckysheet-selection-copy-hc\").css({opacity:\"0.13\"})},updatecell:function(e,n,a,l=!0){let r=this,o=$(\"#luckysheet-rich-text-editor\"),i=o.text(),s=o.html();if(null!=r.rangetosheet&&r.rangetosheet!=t.currentSheetIndex&&ki.changeSheetExec(r.rangetosheet),!Wl(e,n,t.currentSheetIndex))return;if(null!=sl.dataVerification){let t=sl.dataVerification[e+\"_\"+n];if(null!=t&&t.prohibitInput&&!sl.validateCellData(i,t)){let e=sl.getFailureText(t);return vo.info(e,\"\"),void r.cancelNormalSelected()}}let c=t.flowdata[e][n],u=JSON.stringify(c),d=Tn(c),h=\"=\"!=i.slice(0,1)&&\"<span\"==s.substr(0,5),f=!1;if(!h&&i&&i.length>0){let e=i.replace(/\\r\\n/g,\"_x000D_\").replace(/&#13;&#10;/g,\"_x000D_\").replace(/\\r/g,\"_x000D_\").replace(/\\n/g,\"_x000D_\").split(\"_x000D_\");e.length>1&&(f=!0,h=!0,i=e.join(\"\\r\\n\"))}if(a||h||!d?h&&(\"object\"!=ad(c)&&(c={}),delete c.f,delete c.v,delete c.m,null==c.ct&&(c.ct={},c.ct.fa=\"General\"),c.ct.t=\"inlineStr\",c.ct.s=function(e){let t,n=[],a=null;for(let l=0;l<e.length;l++){let r=e.get(l),o=An(r.style.cssText),i=JSON.stringify(o),s=r.innerText;s=s.replace(/\\n/g,\"\\r\\n\"),i==a?t.v+=s:(o.v=s,n.push(o),a=i,t=o)}return n}(o.find(\"span\")),f&&(c.ct.s=[{v:i}])):(delete c.ct.s,c.ct.t=\"g\",c.ct.fa=\"General\",a=\"\"),a=a||o.text(),!yl.createHookFunction(\"cellUpdateBefore\",e,n,a,l))return void r.cancelNormalSelected();if(!h){if(_(a)&&!d){if(null==c||_(c.v)&&null==c.spl&&null==c.f)return void r.cancelNormalSelected()}else if(null!=c&&1!=c.qp){if(\"object\"==ad(c)&&(a==c.f||a==c.v||a==c.m))return void r.cancelNormalSelected();if(a==c)return void r.cancelNormalSelected()}\"string\"==ad(a)&&\"=\"==a.slice(0,1)&&a.length>1||\"object\"==ad(c)&&null!=c.ct&&null!=c.ct.fa&&\"@\"!=c.ct.fa&&!_(a)&&(delete c.m,null!=c.f&&(delete c.f,delete c.spl))}window.luckysheet_getcelldata_cache=null;let m=!0,p=mn.deepCopyFlowData(t.flowdata),g=null;if(\"object\"==ad(c)){if(!h)if(\"string\"==ad(a)&&\"=\"==a.slice(0,1)&&a.length>1){let t=r.execfunction(a,e,n,void 0,!0);if(m=!1,c=$.extend(!0,{},p[e][n]),c.v=t[1],c.f=t[2],4==t.length&&\"sparklines\"==t[3].type){delete c.m,delete c.v;let e=t[3].data;\"array\"==ad(e)&&\"object\"!=ad(e[0])?c.v=e[0]:c.spl=t[3].data}else 4==t.length&&\"dynamicArrayItem\"==t[3].type&&(g=t[3].data)}else if(\"object\"==ad(a)){let t=a.f;if(\"string\"==ad(t)&&\"=\"==t.slice(0,1)&&t.length>1){let a=r.execfunction(t,e,n,void 0,!0);if(m=!1,c=$.extend(!0,{},p[e][n]),c.v=a[1],c.f=a[2],4==a.length&&\"sparklines\"==a[3].type){delete c.m,delete c.v;let e=a[3].data;\"array\"==ad(e)&&\"object\"!=ad(e[0])?c.v=e[0]:c.spl=a[3].data}else 4==a.length&&\"dynamicArrayItem\"==a[3].type&&(g=a[3].data)}else for(let e in a)c[e]=a[e]}else r.delFunctionGroup(e,n),r.execFunctionGroup(e,n,a),m=!1,c=$.extend(!0,{},p[e][n]),c.v=a,delete c.f,delete c.spl,1==c.qp&&\"'\"!=(\"\"+a).substr(0,1)&&(c.qp=0,null!=c.ct&&(c.ct.fa=\"General\",c.ct.t=\"n\"));a=c}else if(\"string\"==ad(a)&&\"=\"==a.slice(0,1)&&a.length>1){let t=r.execfunction(a,e,n,void 0,!0);if(m=!1,a={v:t[1],f:t[2]},4==t.length&&\"sparklines\"==t[3].type){let e=t[3].data;\"array\"==ad(e)&&\"object\"!=ad(e[0])?a.v=e[0]:a.spl=t[3].data}else 4==t.length&&\"dynamicArrayItem\"==t[3].type&&(g=t[3].data)}else if(\"object\"==ad(a)){let t=a.f;if(\"string\"==ad(t)&&\"=\"==t.slice(0,1)&&t.length>1){let l=r.execfunction(t,e,n,void 0,!0);if(m=!1,a.v=l[1],a.f=l[2],4==l.length&&\"sparklines\"==l[3].type){let e=l[3].data;\"array\"==ad(e)&&\"object\"!=ad(e[0])?a.v=e[0]:a.spl=l[3].data}else 4==l.length&&\"dynamicArrayItem\"==l[3].type&&(g=l[3].data)}else{let e=c;null==a.v&&(a.v=e)}}else r.delFunctionGroup(e,n),r.execFunctionGroup(e,n,a),m=!1;Na(e,n,p,a),r.cancelNormalSelected();let y=!1,v=$.extend(!0,{},zt()[Mt(t.currentSheetIndex)].config);if(null==v.rowlen&&(v.rowlen={}),\"2\"==p[e][n].tb&&null!=p[e][n].v||Tn(p[e][n])&&void 0===p[e][n].mc){let a=t.defaultrowlen,l=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");if(!v.customHeight||1!=v.customHeight[e]){let t=Qn(n)[1]-Qn(n)[0]-2,r=ca(p[e][n],l,{r:e,c:n,cellWidth:t}),o=a;null!=r&&(o=r.textHeightAll+2),o>a&&(v.rowlen[e]=o,y=!0)}}let b=null;g&&(b=$.extend(!0,[],this.insertUpdateDynamicArray(g)));let k={dynamicArray:b};if(y&&(k={cfg:v,dynamicArray:b,RowlChange:y}),setTimeout((()=>{yl.createHookFunction(\"cellUpdated\",e,n,JSON.parse(u),t.flowdata[e][n],l)}),0),!l)return{data:p,allParam:k};ao(p,[{row:[e,e],column:[n,n]}],k,m),r.execFunctionGlobalData=null},cancelNormalSelected:function(){let e=this;e.canceFunctionrangeSelected(),$(\"#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight\").remove(),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-input-box-index\").hide(),$(\"#luckysheet-wa-functionbox-cancel, #luckysheet-wa-functionbox-confirm\").removeClass(\"luckysheet-wa-calculate-active\"),e.rangestart=!1,e.rangedrag_column_start=!1,e.rangedrag_row_start=!1},canceFunctionrangeSelected:function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show, #luckysheet-column-count-show\").hide(),$(\"#luckysheet-formula-search-c, #luckysheet-formula-help-c\").hide()},iscellformat:function(e){},iscelldata:function(e){let t,n=e.split(\"!\");t=n.length>1?n[1]:n[0];let a=/^(([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+))$/g,l=/^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+))))$/g;if(-1==t.indexOf(\":\")){let e=parseInt(t.replace(/[^0-9]/g,\"\"))-1,n=od(t.replace(/[^A-Za-z]/g,\"\"));return!(isNaN(e)||isNaN(n)||!t.toString().match(a))||(isNaN(e)&&isNaN(n),!1)}{l=/^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+)))|((([0-9]+)|([$][0-9]+s))))$/g,t=t.split(\":\");let e=[],n=[];return e[0]=parseInt(t[0].replace(/[^0-9]/g,\"\"))-1,e[1]=parseInt(t[1].replace(/[^0-9]/g,\"\"))-1,!(e[0]>e[1]||(n[0]=od(t[0].replace(/[^A-Za-z]/g,\"\")),n[1]=od(t[1].replace(/[^A-Za-z]/g,\"\")),n[0]>n[1]))&&!(!t[0].toString().match(l)||!t[1].toString().match(l))}},operator:\"==|!=|<>|<=|>=|=|+|-|>|<|/|*|%|&|^\",operatorjson:null,functionCopy:function(e,t,n){let a=this;if(null==a.operatorjson){let e=a.operator.split(\"|\"),t={};for(let n=0;n<e.length;n++)t[e[n].toString()]=1;a.operatorjson=t}null==t&&(t=\"down\"),null==n&&(n=1),\"=\"==e.substr(0,1)&&(e=e.substr(1));let l=e.split(\"\"),r=0,o=\"\",i=\"\",s={bracket:0,comma:0,squote:0,dquote:0};for(;r<l.length;){let e=l[r];if(\"(\"==e&&0==s.dquote)s.bracket+=1,o.length>0?i+=o+\"(\":i+=\"(\",o=\"\";else if(\")\"==e&&0==s.dquote)s.bracket-=1,i+=a.functionCopy(o,t,n)+\")\",o=\"\";else if('\"'==e&&0==s.squote)s.dquote>0?(i+=o+'\"',s.dquote-=1,o=\"\"):(s.dquote+=1,o+='\"');else if(\",\"==e&&0==s.dquote)i+=a.functionCopy(o,t,n)+\",\",o=\"\";else if(\"&\"==e&&0==s.dquote)o.length>0?(i+=a.functionCopy(o,t,n)+\"&\",o=\"\"):i+=\"&\";else if(e in a.operatorjson&&0==s.dquote){let s=\"\";r+1<l.length&&(s=l[r+1]);let c=r-1,u=null;if(c>=0)do{u=l[c--]}while(c>=0&&\" \"==u);e+s in a.operatorjson?(o.length>0?(i+=a.functionCopy(o,t,n)+e+s,o=\"\"):i+=e+s,r++):/[^0-9]/.test(s)||\"-\"!=e||\"(\"!=u&&null!=u&&\",\"!=u&&\" \"!=u&&!(u in a.operatorjson)?o.length>0?(i+=a.functionCopy(o,t,n)+e,o=\"\"):i+=e:o+=e}else o+=e;r==l.length-1&&(a.iscelldata($.trim(o))?\"down\"==t?i+=a.downparam($.trim(o),n):\"up\"==t?i+=a.upparam($.trim(o),n):\"left\"==t?i+=a.leftparam($.trim(o),n):\"right\"==t&&(i+=a.rightparam($.trim(o),n)):i+=$.trim(o)),r++}return i},isfreezonFuc:function(e){let t=e.replace(/[^0-9]/g,\"\"),n=e.replace(/[^A-Za-z]/g,\"\"),a=e.substr(e.indexOf(t)-1,1),l=e.substr(e.indexOf(n)-1,1),r=[!1,!1];return\"$\"==a&&(r[0]=!0),\"$\"==l&&(r[1]=!0),r},setfreezonFuceExe:function(e){let t=parseInt(e.replace(/[^0-9]/g,\"\")),n=od(e.replace(/[^A-Za-z]/g,\"\"));return isNaN(t)||isNaN(n)?isNaN(t)?isNaN(n)?e:\"$\"+id(n):\"$\"+t:\"$\"+id(n)+\"$\"+t},setfreezonFuc:function(e){let t=this,n=t.getrangeseleciton();if(!t.iscelldata(n.text()))return;let a,l=n.text(),r=window.getSelection().anchorOffset,o=l.split(\"!\"),i=\"\";o.length>1?(a=o[1],i=o[0]+\"!\"):a=o[0];let s=\"\",c=\"\",u=a.indexOf(\":\");if(-1==u)s=i+t.setfreezonFuceExe(a),c=s.length;else if(a=a.split(\":\"),r>u){let e=i+a[0]+\":\"+t.setfreezonFuceExe(a[1]);s=e,c=e.length}else{let e=i+t.setfreezonFuceExe(a[0]);s=e+\":\"+a[1],c=e.length}n.text(i+s),t.setCaretPosition(n.get(0),0,c)},updateparam:function(e,t,n){let a,l=this,r=t.split(\"!\"),o=\"\";if(r.length>1?(a=r[1],o=r[0]+\"!\"):a=r[0],-1==a.indexOf(\":\")){let r=parseInt(a.replace(/[^0-9]/g,\"\")),i=od(a.replace(/[^A-Za-z]/g,\"\")),s=l.isfreezonFuc(a),c=s[0]?\"$\":\"\",u=s[1]?\"$\":\"\";return\"u\"!=e||s[0]?\"r\"!=e||s[1]?\"l\"!=e||s[1]?\"d\"==e&&!s[0]&&(r+=n):i-=n:i+=n:r-=n,r<0||i<0?l.error.r:isNaN(r)||isNaN(i)?isNaN(r)?isNaN(i)?t:o+u+id(i):o+c+r:o+u+id(i)+c+r}{a=a.split(\":\");let r=[],i=[];if(r[0]=parseInt(a[0].replace(/[^0-9]/g,\"\")),r[1]=parseInt(a[1].replace(/[^0-9]/g,\"\")),r[0]>r[1]||(i[0]=od(a[0].replace(/[^A-Za-z]/g,\"\")),i[1]=od(a[1].replace(/[^A-Za-z]/g,\"\")),i[0]>i[1]))return t;let s=l.isfreezonFuc(a[0]),c=l.isfreezonFuc(a[1]),u=s[0]?\"$\":\"\",d=s[1]?\"$\":\"\",h=c[0]?\"$\":\"\",f=c[1]?\"$\":\"\";return\"u\"==e?(s[0]||(r[0]-=n),c[0]||(r[1]-=n)):\"r\"==e?(s[1]||(i[0]+=n),c[1]||(i[1]+=n)):\"l\"==e?(s[1]||(i[0]-=n),c[1]||(i[1]-=n)):\"d\"==e&&(s[0]||(r[0]+=n),c[0]||(r[1]+=n)),r[0]<0||i[0]<0?l.error.r:isNaN(i[0])&&isNaN(i[1])?o+u+r[0]+\":\"+h+r[1]:isNaN(r[0])&&isNaN(r[1])?o+d+id(i[0])+\":\"+f+id(i[1]):o+d+id(i[0])+u+r[0]+\":\"+f+id(i[1])+h+r[1]}},downparam:function(e,t){return this.updateparam(\"d\",e,t)},upparam:function(e,t){return this.updateparam(\"u\",e,t)},leftparam:function(e,t){return this.updateparam(\"l\",e,t)},rightparam:function(e,t){return this.updateparam(\"r\",e,t)},functionStrChange:function(e,t,n,a,l,r){let o=this;if(null==o.operatorjson){let e=o.operator.split(\"|\"),t={};for(let n=0;n<e.length;n++)t[e[n].toString()]=1;o.operatorjson=t}\"=\"==e.substr(0,1)&&(e=e.substr(1));let i=e.split(\"\"),s=0,c=\"\",u=\"\",d={bracket:0,comma:0,squote:0,dquote:0};for(;s<i.length;){let e=i[s];if(\"(\"==e&&0==d.dquote)d.bracket+=1,c.length>0?u+=c+\"(\":u+=\"(\",c=\"\";else if(\")\"==e&&0==d.dquote)d.bracket-=1,u+=o.functionStrChange(c,t,n,a,l,r)+\")\",c=\"\";else if('\"'==e&&0==d.squote)d.dquote>0?(u+=c+'\"',d.dquote-=1,c=\"\"):(d.dquote+=1,c+='\"');else if(\",\"==e&&0==d.dquote)u+=o.functionStrChange(c,t,n,a,l,r)+\",\",c=\"\";else if(\"&\"==e&&0==d.dquote)c.length>0?(u+=o.functionStrChange(c,t,n,a,l,r)+\"&\",c=\"\"):u+=\"&\";else if(e in o.operatorjson&&0==d.dquote){let d=\"\";s+1<i.length&&(d=i[s+1]);let h=s-1,f=null;if(h>=0)do{f=i[h--]}while(h>=0&&\" \"==f);e+d in o.operatorjson?(c.length>0?(u+=o.functionStrChange(c,t,n,a,l,r)+e+d,c=\"\"):u+=e+d,s++):/[^0-9]/.test(d)||\"-\"!=e||\"(\"!=f&&null!=f&&\",\"!=f&&\" \"!=f&&!(f in o.operatorjson)?c.length>0?(u+=o.functionStrChange(c,t,n,a,l,r)+e,c=\"\"):u+=e:c+=e}else c+=e;s==i.length-1&&(!c.includes(\"!\")&&o.iscelldata($.trim(c))?u+=o.functionStrChange_range($.trim(c),t,n,a,l,r):u+=$.trim(c)),s++}return u},functionStrChange_range:function(e,t,n,a,l,r){let o,i,s,c,u,d,h,f,m,p=this,g=e.split(\"!\"),y=\"\";if(g.length>1?(o=g[1],y=g[0]+\"!\"):o=g[0],-1==o.indexOf(\":\")){i=s=parseInt(o.replace(/[^0-9]/g,\"\"))-1,c=u=od(o.replace(/[^A-Za-z]/g,\"\"));let e=p.isfreezonFuc(o);d=h=e[0]?\"$\":\"\",f=m=e[1]?\"$\":\"\"}else{if(o=o.split(\":\"),i=parseInt(o[0].replace(/[^0-9]/g,\"\"))-1,s=parseInt(o[1].replace(/[^0-9]/g,\"\"))-1,i>s||(c=od(o[0].replace(/[^A-Za-z]/g,\"\")),u=od(o[1].replace(/[^A-Za-z]/g,\"\")),c>u))return e;let t=p.isfreezonFuc(o[0]);d=t[0]?\"$\":\"\",f=t[1]?\"$\":\"\";let n=p.isfreezonFuc(o[1]);h=n[0]?\"$\":\"\",m=n[1]?\"$\":\"\"}if(\"del\"==t){if(\"row\"==n){if(i>=l&&s<=l+r-1)return p.error.r;i>l+r-1?i-=r:i>=l&&(i=l),s>l+r-1?s-=r:s>=l&&(s=l-1),i<0&&(i=0),s<i&&(s=i)}else if(\"col\"==n){if(c>=l&&u<=l+r-1)return p.error.r;c>l+r-1?c-=r:c>=l&&(c=l),u>l+r-1?u-=r:u>=l&&(u=l-1),c<0&&(c=0),u<c&&(u=c)}return i==s&&c==u?isNaN(i)||isNaN(c)?isNaN(i)?isNaN(c)?e:y+f+id(c):y+d+(i+1):y+f+id(c)+d+(i+1):isNaN(c)&&isNaN(u)?y+d+(i+1)+\":\"+h+(s+1):isNaN(i)&&isNaN(s)?y+f+id(c)+\":\"+m+id(u):y+f+id(c)+d+(i+1)+\":\"+m+id(u)+h+(s+1)}if(\"add\"==t)return\"row\"==n?\"lefttop\"==a?(i>=l&&(i+=r),s>=l&&(s+=r)):\"rightbottom\"==a&&(i>l&&(i+=r),s>l&&(s+=r)):\"col\"==n&&(\"lefttop\"==a?(c>=l&&(c+=r),u>=l&&(u+=r)):\"rightbottom\"==a&&(c>l&&(c+=r),u>l&&(u+=r))),i==s&&c==u?isNaN(i)||isNaN(c)?isNaN(i)?isNaN(c)?e:y+f+id(c):y+d+(i+1):y+f+id(c)+d+(i+1):isNaN(c)&&isNaN(u)?y+d+(i+1)+\":\"+h+(s+1):isNaN(i)&&isNaN(s)?y+f+id(c)+\":\"+m+id(u):y+f+id(c)+d+(i+1)+\":\"+m+id(u)+h+(s+1)},israngeseleciton:function(e){let t=this;if(null==t.operatorjson){let e=t.operator.split(\"|\"),n={};for(let t=0;t<e.length;t++)n[e[t].toString()]=1;t.operatorjson=n}null==e&&(e=!1);let n=window.getSelection(),a=$(n.anchorNode),l=n.anchorOffset;if(a.parent().is(\"span\")&&0!=l){let n=$.trim(a.text()),r=\"\";if(0==n.length&&a.parent().prev().length>0){let e=a.parent().prev();n=$.trim(e.text()),r=n.substr(n.length-1,1),t.rangeSetValueTo=e}else r=n.substr(l-1,1),t.rangeSetValueTo=a.parent();if(e&&(\"(\"==r||\",\"==r)||!e&&(\"(\"==r||\",\"==r||\"=\"==r||r in t.operatorjson||\"&\"==r))return!0}else if(a.is(\"#luckysheet-rich-text-editor\")||a.is(\"#luckysheet-functionbox-cell\")){let n,l=$.trim(a.find(\"span\").last().text());if(t.rangeSetValueTo=a.find(\"span\").last(),0==l.length&&a.find(\"span\").length>1){let e=a.find(\"span\");l=$.trim(e.eq(e.length-2).text()),t.rangeSetValueTo=e}if(n=l.substr(l.length-1,1),e&&(\"(\"==n||\",\"==n)||!e&&(\"(\"==n||\",\"==n||\"=\"==n||n in t.operatorjson||\"&\"==n))return!0}else if((a.parent().is(\"#luckysheet-rich-text-editor\")||a.parent().is(\"#luckysheet-functionbox-cell\")||0==l)&&(0==l&&(a=a.parent()),a.prev().length>0)){let n=$.trim(a.prev().text()),l=n.substr(n.length-1,1);if(t.rangeSetValueTo=a.prev(),e&&(\"(\"==l||\",\"==l)||!e&&(\"(\"==l||\",\"==l||\"=\"==l||l in t.operatorjson||\"&\"==l))return!0}return!1},rangechangeindex:null,rangestart:!1,rangetosheet:null,rangeSetValueTo:null,func_selectedrange:{},rangeSetValue:function(e,n){let a,l=this,r=\"\",o=e.row[0],i=e.column[0];if(r=null!=t.config.merge&&o+\"_\"+i in t.config.merge?Nt(t.currentSheetIndex,{column:[i,i],row:[o,o]},l.rangetosheet):Nt(t.currentSheetIndex,e,l.rangetosheet),l.rangestart||l.rangedrag_column_start||l.rangedrag_row_start)if($(\"#luckysheet-search-formula-parm\").is(\":visible\")||$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")){a=$(\"#luckysheet-rich-text-editor\"),$(\"#luckysheet-search-formula-parm-select-input\").val(r),$(\"#luckysheet-search-formula-parm .parmBox\").eq(l.data_parm_index).find(\".txt input\").val(r);let e=qo(r).data;if(e instanceof Array){let t=[];for(let n=0;n<e.length;n++)for(let a=0;a<e[n].length;a++)null==e[n][a]?t.push(null):t.push(e[n][a].v);$(\"#luckysheet-search-formula-parm .parmBox\").eq(l.data_parm_index).find(\".val\").text(\" = {\"+t.join(\",\")+\"}\")}else $(\"#luckysheet-search-formula-parm .parmBox\").eq(l.data_parm_index).find(\".val\").text(\" = {\"+e.v+\"}\");let t,n=!0,o=[],i=-1;if($(\"#luckysheet-search-formula-parm .parmBox\").each((function(e,t){let a=$(t).find(\".txt input\").val();\"\"==a&&\"m\"==$(t).find(\".txt input\").attr(\"data_parm_require\")&&(n=!1),\"\"!=a&&(i=e)})),-1==i)t=\"=\"+$(\"#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text\").text()+\"()\";else if(0==i)t=\"=\"+$(\"#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text\").text()+\"(\"+$(\"#luckysheet-search-formula-parm .parmBox\").eq(0).find(\".txt input\").val()+\")\";else{for(let e=0;e<=i;e++)o.push($(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".txt input\").val());t=\"=\"+$(\"#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text\").text()+\"(\"+o.join(\",\")+\")\"}let s=l.functionHTMLGenerate(t);if($(\"#luckysheet-rich-text-editor\").html(s),$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()),n){let e=$.trim(l.functionParserExe($(\"#luckysheet-rich-text-editor\").text())),t=new Function(\"return \"+e)();$(\"#luckysheet-search-formula-parm .result span\").text(t)}}else{let e=window.getSelection().anchorNode;a=$(e).closest(\"div\");let t=a.find(\"span[rangeindex='\"+l.rangechangeindex+\"']\").html(r);l.setCaretPosition(t.get(0),0,r.length)}else{let e='<span class=\"luckysheet-formula-functionrange-cell\" rangeindex=\"'+l.functionHTMLIndex+'\" dir=\"auto\" style=\"color:'+$t[l.functionHTMLIndex]+';\">'+r+\"</span>\";$(e).insertAfter(l.rangeSetValueTo);l.rangechangeindex=l.functionHTMLIndex,a=$(l.rangeSetValueTo).closest(\"div\"),l.setCaretPosition(a.find(\"span[rangeindex='\"+l.rangechangeindex+\"']\").get(0),0,r.length),l.functionHTMLIndex++}\"luckysheet-rich-text-editor\"==a.attr(\"id\")?$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()):$(\"#luckysheet-rich-text-editor\").html($(\"#luckysheet-functionbox-cell\").html())},rangedrag:function(e){let n=this,a=ta(e.pageX,e.pageY),l=a[0]+$(\"#luckysheet-cell-main\").scrollLeft(),r=Jn(a[1]+$(\"#luckysheet-cell-main\").scrollTop()),o=r[1],i=r[0],s=r[2],c=ea(l),u=c[1],d=c[0],h=c[2],f=0,m=0,p=[];n.func_selectedrange.top>i?(f=i,m=n.func_selectedrange.top+n.func_selectedrange.height-i,p=[s,n.func_selectedrange.row[1]]):n.func_selectedrange.top==i?(f=i,m=n.func_selectedrange.top+n.func_selectedrange.height-i,p=[s,n.func_selectedrange.row[0]]):(f=n.func_selectedrange.top,m=o-n.func_selectedrange.top-1,p=[n.func_selectedrange.row[0],s]);let g=0,y=0,v=[];n.func_selectedrange.left>d?(g=d,y=n.func_selectedrange.left+n.func_selectedrange.width-d,v=[h,n.func_selectedrange.column[1]]):n.func_selectedrange.left==d?(g=d,y=n.func_selectedrange.left+n.func_selectedrange.width-d,v=[h,n.func_selectedrange.column[0]]):(g=n.func_selectedrange.left,y=u-n.func_selectedrange.left-1,v=[n.func_selectedrange.column[0],h]),p[0]=$l.changeFreezenIndex(p[0],\"h\"),p[1]=$l.changeFreezenIndex(p[1],\"h\"),v[0]=$l.changeFreezenIndex(v[0],\"v\"),v[1]=$l.changeFreezenIndex(v[1],\"v\");let b=Yu.mergeMoveMain(v,p,n.func_selectedrange,f,m,g,y);if(null!=b&&(v=b[0],p=b[1],f=b[2],m=b[3],g=b[4],y=b[5]),n.func_selectedrange.row=p,n.func_selectedrange.column=v,n.func_selectedrange.left_move=g,n.func_selectedrange.width_move=y,n.func_selectedrange.top_move=f,n.func_selectedrange.height_move=m,qu(g,f,y,m,p,v),$(\"#luckysheet-formula-functionrange-select\").css({left:g,width:y,top:f,height:m}).show(),$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").is(\":visible\")){let e=Nt(t.currentSheetIndex,{row:p,column:v},t.currentSheetIndex);$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog input\").val(e)}else n.rangeSetValue({row:p,column:v});$l.scrollFreezen(p,v)},rangedrag_column_start:!1,rangedrag_row_start:!1,rangedrag_column:function(e){let n=this,a=ta(e.pageX,e.pageY),l=a[0]+$(\"#luckysheet-cell-main\").scrollLeft(),r=(a[1],$(\"#luckysheet-cell-main\").scrollTop(),t.visibledatarow),o=r.length-1,i=r[o],s=ea(l),c=s[1],u=s[0],d=s[2],h=0,f=0,m=[];n.func_selectedrange.left>u?(h=u,f=n.func_selectedrange.left+n.func_selectedrange.width-u,m=[d,n.func_selectedrange.column[1]]):n.func_selectedrange.left==u?(h=u,f=n.func_selectedrange.left+n.func_selectedrange.width-u,m=[d,n.func_selectedrange.column[0]]):(h=n.func_selectedrange.left,f=c-n.func_selectedrange.left-1,m=[n.func_selectedrange.column[0],d]),m[0]=$l.changeFreezenIndex(m[0],\"v\"),m[1]=$l.changeFreezenIndex(m[1],\"v\");let p=Yu.mergeMoveMain(m,[0,o],n.func_selectedrange,0,i-0-1,h,f);null!=p&&(m=p[0],h=p[4],f=p[5]),n.func_selectedrange.column=m,n.func_selectedrange.left_move=h,n.func_selectedrange.width_move=f,qu(h,0,f,i-0-1,[0,o],m),n.rangeSetValue({row:[null,null],column:m}),$(\"#luckysheet-formula-functionrange-select\").css({left:h,width:f,top:0,height:i-0-1}).show(),$l.scrollFreezen([0,o],m)},rangedrag_row:function(e){let n=this,a=ta(e.pageX,e.pageY),l=(a[0],$(\"#luckysheet-cell-main\").scrollLeft(),Jn(a[1]+$(\"#luckysheet-cell-main\").scrollTop())),r=l[1],o=l[0],i=l[2],s=t.visibledatacolumn,c=s.length-1,u=s[c],d=0,h=0,f=[];n.func_selectedrange.top>o?(d=o,h=n.func_selectedrange.top+n.func_selectedrange.height-o,f=[i,n.func_selectedrange.row[1]]):n.func_selectedrange.top==o?(d=o,h=n.func_selectedrange.top+n.func_selectedrange.height-o,f=[i,n.func_selectedrange.row[0]]):(d=n.func_selectedrange.top,h=r-n.func_selectedrange.top-1,f=[n.func_selectedrange.row[0],i]),f[0]=$l.changeFreezenIndex(f[0],\"h\"),f[1]=$l.changeFreezenIndex(f[1],\"h\");let m=Yu.mergeMoveMain([0,c],f,n.func_selectedrange,d,h,0,u-0-1);null!=m&&(f=m[1],d=m[2],h=m[3]),n.func_selectedrange.row=f,n.func_selectedrange.top_move=d,n.func_selectedrange.height_move=h,qu(0,d,u-0-1,h,f,[0,c]),n.rangeSetValue({row:f,column:[null,null]}),$(\"#luckysheet-formula-functionrange-select\").css({left:0,width:u-0-1,top:d,height:h}).show(),$l.scrollFreezen(f,[0,c])},rangedragged:function(){},rangeResizeObj:null,rangeResize:null,rangeResizeIndex:null,rangeResizexy:null,rangeResizeWinH:null,rangeResizeWinW:null,rangeResizeTo:null,rangeResizeDraging:function(e,n,a,l,r,o,i,s){let c=this,u=$(\"#luckysheet-scrollbar-y\").scrollTop(),d=$(\"#luckysheet-scrollbar-x\").scrollLeft(),h=ta(e.pageX,e.pageY),f=h[0]+d,m=h[1]+u,p=Jn(m),g=p[1],y=p[0],v=(p[2],ea(f)),b=v[1],k=v[0];v[2];if(f<0||m<0)return!1;let w=y-a[1],x=k-a[0],_=a[5],C=a[3],T=a[4],S=a[2];if(\"lt\"==l||\"lb\"==l){if(a[0]+a[2]<k)return;T=k,S=a[2]-x,T>a[2]+a[4]-b+k?(T=a[2]+a[4]-b+k,S=a[2]-(a[2]+a[4]-b+k-a[0])):T<=0&&(T=0,S=a[2]+a[0])}if(\"rt\"==l||\"rb\"==l){if(a[6]-a[2]>b)return;S=a[2]+b-a[6],S<b-k-1?S=b-k-1:S>=i-T&&(S=i-T)}if(\"lt\"==l||\"rt\"==l){if(a[1]+a[3]<y)return;_=y,C=a[3]-w,_>a[3]+a[5]-g+y?(_=a[3]+a[5]-g+y,C=a[3]-(a[3]+a[5]-g+y-a[1])):_<=0&&(_=0,C=a[3]+a[1])}if(\"lb\"==l||\"rb\"==l){if(a[7]-a[3]>g)return;C=a[3]+g-a[7],C<g-y-1?C=g-y-1:C>=s-_&&(C=s-_)}let I=c.rangeResizeIndex,R={top:_,left:T,height:C,width:S},A=c.getSelectedFromRange(R),D=Nt(t.currentSheetIndex,A,c.rangetosheet);c.rangeResizeTo.find(\"span[rangeindex='\"+I+\"']\").html(D);wn(c.rangeResizeTo[0]),n.css(R).data(\"range\",A)},getSelectedFromRange:function(e){let t=e.top+2,n=e.top+e.height-2,a=e.left+2,l=e.left+e.width-2;return{row:[Jn(t)[2],Jn(n)[2]],column:[ea(a)[2],ea(l)[2]]}},rangeResizeDragged:function(e,t,n,a,l,r){this.rangeResize=null,$(\"#luckysheet-formula-functionrange-highlight-\"+this.rangeResizeIndex).find(\".luckysheet-selection-copy-hc\").css(\"opacity\",.03)},rangeMovexy:null,rangeMove:!1,rangeMoveObj:null,rangeMoveIndex:null,rangeMoveRangedata:null,rangeMoveDraging:function(e,n,a,l,r,o){let i=this,s=ta(e.pageX,e.pageY),c=$(\"#luckysheet-scrollbar-x\").scrollLeft(),u=$(\"#luckysheet-scrollbar-y\").scrollTop(),d=s[0]+c,h=s[1]+u,f=$(window).height()+u-r-o,m=$(window).width()+c,p=n[0],g=n[1],y=a.row[0]-p+Jn(h)[2],v=a.row[1]-p+Jn(h)[2],b=a.column[0]-g+ea(d)[2],k=a.column[1]-g+ea(d)[2];(y<0||h<0)&&(y=0,v=a.row[1]-a.row[0]),(b<0||d<0)&&(b=0,k=a.column[1]-a.column[0]);let w=t.visibledatarow;(v>=w[w.length-1]||h>f)&&(y=w.length-1-a.row[1]+a.row[0],v=w.length-1);let x=t.visibledatacolumn;(k>=x[x.length-1]||d>m)&&(b=x.length-1-a.column[1]+a.column[0],k=x.length-1);let _=b-1==-1?0:x[b-1],C=x[k],T=y-1==-1?0:w[y-1],S=w[v],I=i.rangeMoveIndex,R={left:_,width:C-_-2,top:T,height:S-T-2,display:\"block\"},A=i.getSelectedFromRange(R),D=Nt(t.currentSheetIndex,A,i.rangetosheet);i.rangeResizeTo.find(\"span[rangeindex='\"+I+\"']\").html(D);wn(i.rangeResizeTo[0]),i.rangeMoveRangedata=A,l.css(R)},rangeMoveDragged:function(e){let t=this;t.rangeMove=!1,$(\"#luckysheet-formula-functionrange-highlight-\"+t.rangeMoveIndex).data(\"range\",t.rangeMoveRangedata).find(\".luckysheet-selection-copy-hc\").css(\"opacity\",.03)},functionHTMLIndex:0,functionRangeIndex:null,findrangeindex:function(e,t){let n=/<span.*?>/g,a=e.replace(n,\"\"),l=t.replace(n,\"\");a=a.split(\"</span>\"),l=l.split(\"</span>\"),a.pop(),l.pop();let r=this.functionRangeIndex,o=(l.length>a.length?a.length:l.length,l.length),i=a.length;if(o==i){let e=r[0],t=l[e],n=a[e];if(null==t)return l.length<=e?r=[l.length-1,l.length-1]:a.length<=e&&(r=[a.length-1,a.length-1]),r;if(t.length==n.length)return null!=l[e+1]&&null!=a[e+1]&&l[e+1].length<a[e+1].length&&(r[0]=r[0]+1,r[1]=1),r;if(t.length>n.length)return null!=t&&null!=a[e+1]&&'\"'==a[e+1].substr(0,1)&&(t.indexOf(\"{\")>-1||t.indexOf(\"}\")>-1)&&(r[0]=r[0]+1,r[1]=1),r;if(t.length<n.length)return r[1]>n.length&&(r[1]=n.length),r}else{if(o>i){let e=r[0],t=l[e],n=a[e];if(null==n)if(a[e-1].indexOf(\"{\")>-1){r[0]=r[0]-1;let t=a[e-1].search(\"{\");r[1]=r[1]+t}else r[0]=0,r[1]=0;else{if(t.length==n.length)return null==a[e+1]||'\"'!=a[e+1].substr(0,1)&&\"{\"!=a[e+1].substr(0,1)&&\"}\"!=a[e+1].substr(0,1)?null!=t&&t.length>2&&'\"'==t.substr(0,1)&&'\"'==t.substr(t.length-1,1)||(null!=a[e]&&'\")'==a[e]||null!=a[e]&&'\"}'==a[e]||null!=a[e]&&\"{)\"==a[e]?r[1]=1:r[1]=n.length):(r[0]=r[0]+1,r[1]=1),r;if(t.length>n.length)return null!=a[e+1]&&('\"'==a[e+1].substr(0,1)||\"{\"==a[e+1].substr(0,1)||\"}\"==a[e+1].substr(0,1))&&(r[0]=r[0]+1,r[1]=1),r;if(t.length<n.length)return r}return r}if(o<i){let e=r[0],t=l[e],n=a[e];if(null==t)r[0]=a.length-1,r[1]=null!=n?n.length:1;else{if(t.length==n.length)return null==l[e+1]||'\"'!=l[e+1].substr(0,1)&&\"{\"!=l[e+1].substr(0,1)&&\"}\"!=l[e+1].substr(0,1)?null==a[e+1]||'\"'!=a[e+1].substr(0,1)||\"{\"!=a[e+1].substr(0,1)&&\"}\"!=a[e+1].substr(0,1)?null!=n&&'\"'==n.substr(0,1)&&'\"'==n.substr(n.length-1,1)&&'\"'==t.substr(0,1)&&\")\"==t.substr(t.length-1,1)||null!=n&&\"{\"==n.substr(0,1)&&\"}\"==n.substr(n.length-1,1)&&\"{\"==t.substr(0,1)&&\")\"==t.substr(t.length-1,1)?r[1]=n.length:(r[0]=r[0]+i-o,a.length>l.length?r[1]=a[e+1].length:r[1]=1):(r[0]=r[0]+1,r[1]=1):r[1]=n.length,r;if(t.length>n.length)return null!=t&&'\"'==t.substr(0,1)?r[1]=n.length:null!=a[e+1]&&/{.*?}/.test(a[e+1])?(r[0]=r[0]+1,r[1]=a[e+1].length):null!=t&&'\"'==a[e+1].substr(0,1)&&(t.indexOf(\"{\")>-1||t.indexOf(\"}\")>-1)?(r[0]=r[0]+1,r[1]=1):null!=t&&(t.indexOf(\"{\")>-1||t.indexOf(\"}\")>-1)||(r[0]=r[0]+i-o-1,r[1]=a[e-1].length),r;if(t.length<n.length)return r}return r}}return null},setCaretPosition:function(e,t,n){try{let a=e,l=document.createRange(),r=window.getSelection();l.setStart(a.childNodes[t],n),l.collapse(!0),r.removeAllRanges(),r.addRange(l),a.focus()}catch(e){wn(this.rangeResizeTo[0])}},functionRange:function(e,t,n){let a=this;if(window.getSelection){let l=window.getSelection(),r=a.findrangeindex(t,n);null==r?(l.selectAllChildren(e.get(0)),l.collapseToEnd()):a.setCaretPosition(e.find(\"span\").get(r[0]),0,r[1])}else document.selection&&(a.functionRangeIndex.moveToElementText(e),a.functionRangeIndex.collapse(!1),a.functionRangeIndex.select())},functionInputHanddler:function(e,t,n){if(I())return;let a=this,l=e,r=t,o=r.html(),i=r.text(),s=this.xssDeal;setTimeout((function(){let e=r.text();if(e=s(e),e.length>0&&\"=\"==e.substr(0,1)&&(229!=n||1==e.length)){if(e=a.functionHTMLGenerate(e),o=a.functionHTMLGenerate(i),window.getSelection){let e=window.getSelection();if($(e.anchorNode).is(\"div\")){let e=$(\"#luckysheet-rich-text-editor span\").length;a.functionRangeIndex=[e-1,$(\"#luckysheet-rich-text-editor\").find(\"span\").eq(e-1).text().length]}else a.functionRangeIndex=[$(e.anchorNode).parent().index(),e.anchorOffset]}else{let e=document.selection.createRange();a.functionRangeIndex=e}r.html(e),a.functionRange(r,e,o),a.canceFunctionrangeSelected(),46!=n&&a.createRangeHightlight(),l.html(e),a.rangestart=!1,a.rangedrag_column_start=!1,a.rangedrag_row_start=!1,a.rangeHightlightselected(r,n)}else\"=\"!=i.substr(0,1)&&(\"luckysheet-rich-text-editor\"==l.attr(\"id\")&&\"<span\"==l.html().substr(0,5)||(e=a.ltGtSignDeal(e),l.html(e)))}),1)},functionHTMLGenerate:function(e){return 0==e.length||\"=\"!=e.substr(0,1)?e:(this.functionHTMLIndex=0,'<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span>'+this.functionHTML(e))},functionHTML:function(e){let t=this;if(null==t.operatorjson){let e=t.operator.split(\"|\"),n={};for(let t=0;t<e.length;t++)n[e[t].toString()]=1;t.operatorjson=n}\"=\"==e.substr(0,1)&&(e=e.substr(1));let n=e.split(\"\"),a=0,l=\"\",r=\"\",o={bracket:0,comma:0,squote:0,dquote:0,braces:0};for(;a<n.length;){let e=n[a];if(\"(\"==e&&0==o.squote&&0==o.dquote&&0==o.braces)o.bracket+=1,l.length>0?r+='<span dir=\"auto\" class=\"luckysheet-formula-text-func\">'+l+'</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>':r+='<span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>',l=\"\";else if(\")\"==e&&0==o.squote&&0==o.dquote&&0==o.braces)o.bracket-=1,r+=t.functionHTML(l)+'<span dir=\"auto\" class=\"luckysheet-formula-text-rpar\">)</span>',l=\"\";else if(\"{\"==e&&0==o.squote&&0==o.dquote)l+=\"{\",o.braces+=1;else if(\"}\"==e&&0==o.squote&&0==o.dquote)l+=\"}\",o.braces-=1;else if('\"'==e&&0==o.squote)o.dquote>0?(l.length>0?r+=l+'\"</span>':r+='\"</span>',o.dquote-=1,l=\"\"):(o.dquote+=1,l.length>0?r+=t.functionHTML(l)+'<span dir=\"auto\" class=\"luckysheet-formula-text-string\">\"':r+='<span dir=\"auto\" class=\"luckysheet-formula-text-string\">\"',l=\"\");else if(\"'\"==e&&0==o.dquote)l+=\"'\",o.squote=0==o.squote?1:0;else if(\",\"==e&&0==o.squote&&0==o.dquote&&0==o.braces)r+=t.functionHTML(l)+'<span dir=\"auto\" class=\"luckysheet-formula-text-comma\">,</span>',l=\"\";else if(\"&\"==e&&0==o.squote&&0==o.dquote&&0==o.braces)l.length>0?(r+=t.functionHTML(l)+'<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">&</span>',l=\"\"):r+='<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">&</span>';else if(e in t.operatorjson&&0==o.squote&&0==o.dquote&&0==o.braces){let o=\"\";a+1<n.length&&(o=n[a+1]);let i=a-1,s=null;if(i>=0)do{s=n[i--]}while(i>=0&&\" \"==s);e+o in t.operatorjson?(l.length>0?(r+=t.functionHTML(l)+'<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">'+e+o+\"</span>\",l=\"\"):r+='<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">'+e+o+\"</span>\",a++):/[^0-9]/.test(o)||\"-\"!=e||\"(\"!=s&&null!=s&&\",\"!=s&&\" \"!=s&&!(s in t.operatorjson)?l.length>0?(r+=t.functionHTML(l)+'<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">'+e+\"</span>\",l=\"\"):r+='<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">'+e+\"</span>\":l+=e}else l+=e;if(a==n.length-1)if(t.iscelldata($.trim(l)))r+='<span class=\"luckysheet-formula-functionrange-cell\" rangeindex=\"'+t.functionHTMLIndex+'\" dir=\"auto\" style=\"color:'+$t[t.functionHTMLIndex]+';\">'+l+\"</span>\",t.functionHTMLIndex++;else if(o.dquote>0)r+=l+\"</span>\";else if(-1==l.indexOf(\"</span>\")&&l.length>0){let e=/{.*?}/;if(e.test($.trim(l))){let t=e.exec(l)[0],n=l.search(e),a=\"\";n>0&&(a+='<span dir=\"auto\" class=\"luckysheet-formula-text-color\">'+l.substr(0,n)+\"</span>\"),a+='<span dir=\"auto\" style=\"color:#959a05\" class=\"luckysheet-formula-text-array\">'+t+\"</span>\",n+t.length<l.length&&(a+='<span dir=\"auto\" class=\"luckysheet-formula-text-color\">'+l.substr(n+t.length,l.length)+\"</span>\"),r+=a}else r+='<span dir=\"auto\" class=\"luckysheet-formula-text-color\">'+l+\"</span>\"}a++}return r},getfunctionParam:function(e){let t=this;if(null==t.operatorjson){let e=t.operator.split(\"|\"),n={};for(let t=0;t<e.length;t++)n[e[t].toString()]=1;t.operatorjson=n}\"=\"==e.substr(0,1)&&(e=e.substr(1));let n=e.split(\"\"),a=0,l=\"\",r=\"\",o={bracket:0,comma:0,squote:0,dquote:0,compare:0},i=null,s=[],c=[];for(;a<n.length;){let e=n[a];if(\"(\"==e&&0==o.dquote)l.length>0&&0==c.length?(i=l.toUpperCase(),c.push(1),l=\"\"):0==c.length?(c.push(0),l=\"\"):(c.push(0),l+=e);else if(\")\"==e&&0==o.dquote){c.pop();0==c.length?(s.push(l),l=\"\"):l+=e}else if('\"'==e)l+='\"',o.dquote>0?(o.dquote-=1,l=\"\"):o.dquote+=1;else if(\",\"==e&&0==o.dquote)c.length<=1?(s.push(l),l=\"\"):l+=\",\";else if(e in t.operatorjson&&0==o.dquote){let i=\"\";a+1<n.length&&(i=n[a+1]);let s=a-1,c=null;if(s>=0)do{c=n[s--]}while(s>=0&&\" \"==c);/[^0-9]/.test(i)||\"-\"!=e||\"(\"!=c&&null!=c&&\",\"!=c&&\" \"!=c&&!(c in t.operatorjson)?(r=\"\",l=\"\"):0==o.dquote?l+=$.trim(e):l+=e}else 0==o.dquote?l+=$.trim(e):l+=e;a++}return{fn:i,param:s}},calPostfixExpression:function(e){if(0==e.length)return\"\";let t=[];for(let n=e.length-1;n>=0;n--){let a=e[n];if(a in this.operatorjson){let e=t.pop(),n=\"luckysheet_compareWith(\"+t.pop()+\",'\"+a+\"', \"+e+\")\";t.push(n)}else t.push(a)}return t.length>0?t[0]:\"\"},checkBracketNum:function(e){let t=e.match(/\\(/g),n=e.match(/\\)/g),a=e.match(/(['\"])(?:(?!\\1).)*?\\1/g),l=e.match(/(['\"])(?:(?!\\1).)*?\\1/g),r=0,o=0;null!=t&&(r+=t.length),null!=n&&(o+=n.length);let i=0,s=0;if(null!=a)for(let e=0;e<a.length;e++){let t=a[e].match(/\\(/g);null!=t&&(i+=t.length)}if(null!=l)for(let e=0;e<l.length;e++){let t=l[e].match(/\\)/g);null!=t&&(s+=t.length)}return r-=i,o-=s,r==o},operatorPriority:{\"^\":0,\"%\":1,\"*\":1,\"/\":1,\"+\":2,\"-\":2},functionParserExe:function(e){return this.functionParser(e)},functionParser:function(e,t){let n=this;if(null==n.operatorjson){let e=n.operator.split(\"|\"),t={};for(let n=0;n<e.length;n++)t[e[n].toString()]=1;n.operatorjson=t}if(null==e)return\"\";\"=+\"==e.substr(0,2)?e=e.substr(2):\"=\"==e.substr(0,1)&&(e=e.substr(1));let a=e.split(\"\"),l=0,r=\"\",o=\"\",i={bracket:0,comma:0,squote:0,dquote:0,compare:0,braces:0},s=[],c=[],u=[],d=-1;for(;l<a.length;){let e=a[l];if(\"(\"==e&&0==i.squote&&0==i.dquote&&0==i.braces)if(r.length>0&&0==u.length){if(r=r.toUpperCase(),r.indexOf(\":\")>-1){let e=r.split(\":\");o+=\"luckysheet_getSpecialReference(true,'\"+$.trim(e[0]).replace(/'/g,\"\\\\'\")+\"', luckysheet_function.\"+e[1]+\".f(#lucky#\"}else o+=\"luckysheet_function.\"+r+\".f(\";u.push(1),r=\"\"}else 0==u.length?(o+=\"(\",u.push(0),r=\"\"):(u.push(0),r+=e);else if(\")\"==e&&0==i.squote&&0==i.dquote&&0==i.braces){u.pop();if(0==u.length){let e=n.functionParser(r,t);e.indexOf(\"#lucky#\")>-1&&(e=e.replace(/#lucky#/g,\"\")+\")\"),o+=e+\")\",r=\"\"}else r+=e}else if(\"{\"==e&&0==i.squote&&0==i.dquote)r+=\"{\",i.braces+=1;else if(\"}\"==e&&0==i.squote&&0==i.dquote)r+=\"}\",i.braces-=1;else if('\"'==e&&0==i.squote)i.dquote>0?l<a.length-1&&'\"'==a[l+1]?(l++,r+=\"\"):(i.dquote-=1,r+='\"'):(i.dquote+=1,r+='\"');else if(\"'\"==e&&0==i.dquote)if(r+=\"'\",i.squote>0){if(d==l-1)return\"\";if(l<a.length-1&&\"'\"==a[l+1])l++,r+=\"'\";else{if(\"'\"==a[l-1])return\"\";i.squote-=1}}else i.squote+=1,d=l;else if(\",\"==e&&0==i.squote&&0==i.dquote&&0==i.braces)if(u.length<=1){let e=n.functionParser(r,t);e.indexOf(\"#lucky#\")>-1&&(e=e.replace(/#lucky#/g,\"\")+\")\"),o+=e+\",\",r=\"\"}else r+=\",\";else if(e in n.operatorjson&&0==i.squote&&0==i.dquote&&0==i.braces){let i=\"\",d=n.operatorPriority;if(l+1<a.length&&(i=a[l+1]),e+i in n.operatorjson){if(0==u.length){if($.trim(r).length>0?c.unshift(n.functionParser($.trim(r),t)):$.trim(o).length>0&&c.unshift($.trim(o)),s[0]in n.operatorjson){let e=d[s[0]];for(;s.length>0&&null!=e;)c.unshift(s.shift()),e=d[s[0]]}s.unshift(e+i),o=\"\",r=\"\"}else r+=e+i;l++}else if(0==u.length){if($.trim(r).length>0?c.unshift(n.functionParser($.trim(r),t)):$.trim(o).length>0&&c.unshift($.trim(o)),s[0]in n.operatorjson){let t=d[s[0]];t=null==t?1e3:t;let n=d[e];for(n=null==n?1e3:n;s.length>0&&n>=t;)c.unshift(s.shift()),t=d[s[0]],t=null==t?1e3:t}for(ls=l+1;ls<a.length;ls++)if([\"--\",\"++\"].includes(e+a[ls]))e=\"+\";else{if(![\"-+\",\"+-\"].includes(e+a[ls])){ls>l+1&&(l=ls-1);break}e=\"-\"}s.unshift(e),o=\"\",r=\"\"}else r+=e}else 0==i.dquote&&i.squote,r+=e;if(l==a.length-1){let e=\"\",a=$.trim(r).replace(/'/g,\"\\\\'\");if(n.iscelldata(a)&&\":\"!=a.substr(0,1))e=\"luckysheet_getcelldata('\"+a+\"')\",\"function\"==typeof t&&t(a);else if(\":\"==a.substr(0,1))a=a.substr(1),n.iscelldata(a)&&(e=\"luckysheet_getSpecialReference(false,\"+o+\",'\"+a+\"')\");else{r=$.trim(r);let t=/{.*?}/;if(t.test(r)&&'\"'!=r.substr(0,1)&&'\"'!=r.substr(r.length-1,1)){let n=t.exec(r)[0],a=r.search(t);a>0&&(e+=r.substr(0,a)),e+=\"luckysheet_getarraydata('\"+n+\"')\",a+n.length<r.length&&(e+=r.substr(a+n.length,r.length))}else e=r}if(e.length>0&&c.unshift(e),s.length>0)for(o.length>0&&(c.unshift(o),o=\"\");s.length>0;)c.unshift(s.shift());c.length>0?o=n.calPostfixExpression(c):o+=e}l++}return o},insertUpdateDynamicArray:function(e){let n=e.r,a=e.c,l=e.index;null==l&&(l=t.currentSheetIndex);let r=zt()[Mt(l)].dynamicArray;null==r&&(r=[]);for(let t=0;t<r.length;t++){let o=r[t];if(o.r==n&&o.c==a&&o.index==l)return o.data=e.data,o.f=e.f,r}return r.push(e),r},addFunctionGroup:function(e,n,a,l){null==l&&(l=t.currentSheetIndex);let r=zt(),o=r[Mt(l)];null==o.calcChain&&(o.calcChain=[]);let i={r:e,c:n,index:l,func:a};o.calcChain.push(i),yo.saveParam(\"fc\",l,JSON.stringify(i),{op:\"add\",pos:o.calcChain.length-1}),jt(r)},getAllFunctionGroup:function(){let e=zt(),t=[];for(let n=0;n<e.length;n++){let a=e[n],l=a.calcChain;if(l){let e=[];l.forEach(((t,n)=>{\"string\"==typeof t?e.push(JSON.parse(t)):e.push(t)})),l=a.calcChain=e}let r=a.dynamicArray_compute;null==l&&(l=[]),null==r&&(r=[]),t=t.concat(l);for(let e=0;e<r.length;e++){let e=r[0];t.push({r:e.r,c:e.c,index:e.index})}}return t},getFunctionGroup:function(e){null==e&&(e=t.currentSheetIndex);let n=zt()[Mt(e)];return null==n.calcChain?[]:n.calcChain},updateFunctionGroup:function(e,n,a){null==a&&(a=t.currentSheetIndex);let l=zt(),r=l[Mt(a)].calcChain;if(null!=r)for(let t=0;t<r.length;t++){let l=r[t];if(l.r==e&&l.c==n&&l.index==a){yo.saveParam(\"fc\",a,JSON.stringify(l),{op:\"update\",pos:t});break}}jt(l)},insertUpdateFunctionGroup:function(e,n,a){null==a&&(a=t.currentSheetIndex);let l=zt(),r=l[Mt(a)],o=r.calcChain;null==o&&(o=[]);for(let t=0;t<o.length;t++){let l=o[t];if(l.r==e&&l.c==n&&l.index==a)return void yo.saveParam(\"fc\",a,JSON.stringify(l),{op:\"update\",pos:t})}let i={r:e,c:n,index:a};o.push(i),r.calcChain=o,yo.saveParam(\"fc\",a,JSON.stringify(i),{op:\"add\",pos:r.calcChain.length-1}),jt(l)},isFunctionRangeSave:!1,isFunctionRangeSimple:function(e,t,n,a,l){if(null==e||0==e.length)return;let r=e.split(/==|!=|<>|<=|>=|[,()=+-\\/*%&^><]/g);if(r.length>0)for(let e=0;e<r.length;e++){let o=r[e];o.length<=1||'\"'==o.substr(0,1)&&'\"'==o.substr(o.length-1,1)||this.isFunctionRangeSaveChange(o,t,n,a,l)}},isFunctionRangeSimple1:function(e,t,n,a,l){let r=this;if(null==r.operatorjson){let e=r.operator.split(\"|\"),t={};for(let n=0;n<e.length;n++)t[e[n].toString()]=1;r.operatorjson=t}\"=\"==e.substr(0,1)&&(e=e.substr(1));let o=e.split(\"\"),i=0,s=\"\",c=\"\",u={bracket:0,comma:0,squote:0,dquote:0};zt();for(;i<o.length;){let e=o[i];if(\"(\"==e&&0==u.dquote)u.bracket+=1,s.length>0?c+=\"luckysheet_function.\"+s.toUpperCase()+\".f(\":c+=\"(\",s=\"\";else if(\")\"==e&&0==u.dquote)u.bracket-=1,c+=r.isFunctionRangeSimple(s,t,n,a,l)+\")\",s=\"\";else if(\",\"==e&&0==u.dquote)c+=r.isFunctionRangeSimple(s,t,n,a,l)+\",\",s=\"\";else if(e in r.operatorjson&&0==u.dquote){let u=\"\";i+1<o.length&&(u=o[i+1]),e+u in r.operatorjson?(s.length>0?(c+=r.isFunctionRangeSimple(s,t,n,a,l)+e+u,s=\"\"):c+=e+u,i++):s.length>0?(c+=r.isFunctionRangeSimple(s,t,n,a,l)+e,s=\"\"):c+=e}else s+=e;i==o.length-1&&r.iscelldata($.trim(s))&&r.isFunctionRangeSaveChange(s,t,n,a,l),i++}return c},isFunctionRangeSelect:function(e,n,a,l,r){if(null==e||\"\"==e)return;null==l&&(l=t.currentSheetIndex),null==r&&(r={});let o=this,i=e.toUpperCase(),s=i.indexOf(\"INDIRECT(\")>-1||i.indexOf(\"OFFSET(\")>-1||i.indexOf(\"INDEX(\")>-1;if(e in this.formulaContainCellList){let t=this.formulaContainCellList[e];if(s)if(1==t.__LuckyisOff__)for(let e in t)\"__LuckyisOff__\"!=e&&this.isFunctionRangeSaveChange(e,n,a,l,r);else this.isFunctionRange(e,n,a,l,r,(function(t){o.addToCellList(e,t)})),t.__LuckyisOff__=!0;else for(let e in t)\"__LuckyisOff__\"!=e&&this.isFunctionRangeSaveChange(e,n,a,l,r)}else s?this.isFunctionRange(e,n,a,l,r):this.isFunctionRangeSimple(e,n,a,l,r)},isFunctionRange:function(e,t,n,a,l,r){let o=this;if(null==o.operatorjson){let e=o.operator.split(\"|\"),t={};for(let n=0;n<e.length;n++)t[e[n].toString()]=1;o.operatorjson=t}\"=\"==e.substr(0,1)&&(e=e.substr(1));let i=e.split(\"\"),s=0,c=\"\",u=\"\",d={bracket:0,comma:0,squote:0,dquote:0,compare:0,braces:0},h=[],f=[],m=[],p=-1;for(;s<i.length;){let e=i[s];if(\"(\"==e&&0==d.squote&&0==d.dquote&&0==d.braces)if(c.length>0&&0==m.length){if(c=c.toUpperCase(),c.indexOf(\":\")>-1){let e=c.split(\":\");u+=\"luckysheet_getSpecialReference(true,'\"+$.trim(e[0]).replace(/'/g,\"\\\\'\")+\"', luckysheet_function.\"+e[1]+\".f(#lucky#\"}else u+=\"luckysheet_function.\"+c+\".f(\";m.push(1),c=\"\"}else 0==m.length?(u+=\"(\",m.push(0),c=\"\"):(m.push(0),c+=e);else if(\")\"==e&&0==d.squote&&0==d.dquote&&0==d.braces){m.pop();if(0==m.length){let e=o.isFunctionRange(c,t,n,a,l,r);e.indexOf(\"#lucky#\")>-1&&(e=e.replace(/#lucky#/g,\"\")+\")\"),u+=e+\")\",c=\"\"}else c+=e}else if(\"{\"==e&&0==d.squote&&0==d.dquote)c+=\"{\",d.braces+=1;else if(\"}\"==e&&0==d.squote&&0==d.dquote)c+=\"}\",d.braces-=1;else if('\"'==e&&0==d.squote)d.dquote>0?s<i.length-1&&'\"'==i[s+1]?(s++,c+=\"\"):(d.dquote-=1,c+='\"'):(d.dquote+=1,c+='\"');else if(\"'\"==e&&0==d.dquote)c+=\"'\",d.squote>0?s<i.length-1&&\"'\"==i[s+1]?(s++,c+=\"'\"):d.squote-=1:(d.squote+=1,p=s);else if(\",\"==e&&0==d.squote&&0==d.dquote&&0==d.braces)if(m.length<=1){let e=o.isFunctionRange(c,t,n,a,l,r);e.indexOf(\"#lucky#\")>-1&&(e=e.replace(/#lucky#/g,\"\")+\")\"),u+=e+\",\",c=\"\"}else c+=\",\";else if(e in o.operatorjson&&0==d.squote&&0==d.dquote&&0==d.braces){let d=\"\",p=o.operatorPriority;if(s+1<i.length&&(d=i[s+1]),e+d in o.operatorjson){if(0==m.length){if($.trim(c).length>0?f.unshift(o.isFunctionRange($.trim(c),t,n,a,l,r)):$.trim(u).length>0&&f.unshift($.trim(u)),h[0]in o.operatorjson){let e=p[h[0]];for(;h.length>0&&null!=e;)f.unshift(h.shift()),e=p[h[0]]}h.unshift(e+d),u=\"\",c=\"\"}else c+=e+d;s++}else if(0==m.length){if($.trim(c).length>0?f.unshift(o.isFunctionRange($.trim(c),t,n,a,l,r)):$.trim(u).length>0&&f.unshift($.trim(u)),h[0]in o.operatorjson){let t=p[h[0]];t=null==t?1e3:t;let n=p[e];for(n=null==n?1e3:n;h.length>0&&n>=t;)f.unshift(h.shift()),t=p[h[0]],t=null==t?1e3:t}h.unshift(e),u=\"\",c=\"\"}else c+=e}else 0==d.dquote&&0==d.squote?c+=$.trim(e):c+=e;if(s==i.length-1){let e=\"\",r=$.trim(c).replace(/'/g,\"\\\\'\");if(o.iscelldata(r)&&\":\"!=r.substr(0,1))e=\"luckysheet_getcelldata('\"+r+\"')\",o.isFunctionRangeSaveChange(c,t,n,a,l);else if(\":\"==r.substr(0,1))r=r.substr(1),o.iscelldata(r)&&(e=\"luckysheet_getSpecialReference(false,\"+u+\",'\"+r+\"')\");else{c=$.trim(c);let t=/{.*?}/;if(t.test(c)&&'\"'!=c.substr(0,1)&&'\"'!=c.substr(c.length-1,1)){let n=t.exec(c)[0],a=c.search(t);a>0&&(e+=c.substr(0,a)),e+=\"luckysheet_getarraydata('\"+n+\"')\",a+n.length<c.length&&(e+=c.substr(a+n.length,c.length))}else e=c}if(e.length>0&&f.unshift(e),h.length>0)for(u.length>0&&(f.unshift(u),u=\"\");h.length>0;)f.unshift(h.shift());f.length>0?u=o.calPostfixExpression(f):u+=e}s++}return o.checkSpecialFunctionRange(u,t,n,a,l,r),u},isFunctionRangeSaveChange:function(e,t,n,a,l){let r=this;if(null!=t&&null!=n){let o=r.getcellrange($.trim(e),a);if(null==o)return;let i=o.row,s=o.column,c=o.sheetIndex;if(!(t+\"_\"+n in l)||a!=c&&null!=a)t>=i[0]&&t<=i[1]&&n>=s[0]&&n<=s[1]&&(a==c||null==a)?r.isFunctionRangeSave=r.isFunctionRangeSave||!0:r.isFunctionRangeSave=r.isFunctionRangeSave||!1;else{let e=!1;for(let a=i[0];a<=i[1];a++)for(let r=s[0];r<=s[1];r++)a+\"_\"+r in l&&l[a+\"_\"+r].r==t&&l[a+\"_\"+r].c==n&&(e=!0);r.isFunctionRangeSave=e?r.isFunctionRangeSave||!0:r.isFunctionRangeSave||!1}}else r.isFunctionRangeSave=r.isFunctionRangeSave||!1},checkSpecialFunctionRange:function(e,n,a,l,r,o){if(\"luckysheet_getSpecialReference\"==e.substr(0,30)||\"luckysheet_function.\"==e.substr(0,20)){if(\"luckysheet_function.\"==e.substr(0,20)){let t=e.split(\".\")[1];if(null!=t&&(t=t.toUpperCase(),\"INDIRECT\"!=t&&\"OFFSET\"!=t&&\"INDEX\"!=t))return}try{t.calculateSheetIndex=l;let n=new Function(\"return \"+e)();n instanceof Object&&null!=n.startCell&&(n=n.startCell);let a=$.trim(n);this.iscelldata(a)&&\"function\"==typeof o&&o(a)}catch(e){}}},execvertex:{},execFunctionGroupData:null,execFunctionExist:null,formulaContainSheetList:{},formulaContainCellList:{},cellTextToIndexList:{},addToCellList:function(e,t){null==e||0==e.length||null==t||0==t.length||(null==this.formulaContainCellList&&(this.formulaContainCellList={}),null==this.formulaContainCellList[e]&&(this.formulaContainCellList[e]={}),this.formulaContainCellList[e][t]=1)},addToCellIndexList:function(e,t){null==e||0==e.length||null==t||(null==this.cellTextToIndexList&&(this.cellTextToIndexList={}),e.indexOf(\"!\")>-1?(e=e.replace(/\\\\'/g,\"'\").replace(/''/g,\"'\"),this.cellTextToIndexList[e]=t):this.cellTextToIndexList[e+\"_\"+t.sheetIndex]=t)},addToSheetIndexList:function(e,n,a){null==e||0==e.length||((null==n||0==n.length)&&(n=t.currentSheetIndex),(null==a||0==a.length)&&(a=\"\"),null==this.formulaContainSheetList&&(this.formulaContainSheetList={}),null==this.formulaContainSheetList[e]&&(this.formulaContainSheetList[e]={}),this.formulaContainSheetList[e][n]=a)},execFunctionGlobalData:{},execFunctionGroupForce:function(e){e?this.execFunctionGroup(void 0,void 0,void 0,void 0,void 0,!0):this.execFunctionGroup()},execFunctionGroup:function(e,n,a,l,r,o=!1){let i=this;if(null==r&&(r=t.flowdata),window.luckysheet_compareWith||(window.luckysheet_compareWith=Oo,window.luckysheet_getarraydata=Bo,window.luckysheet_getcelldata=qo,window.luckysheet_parseData=Ho,window.luckysheet_getValue=Uo,window.luckysheet_indirect_check=jo,window.luckysheet_indirect_check_return=Go,window.luckysheet_offset_check=Wo,window.luckysheet_calcADPMM=Vo,window.luckysheet_getSpecialReference=Yo),null==i.execFunctionGlobalData&&(i.execFunctionGlobalData={}),null==l&&(l=t.currentSheetIndex),null!=a){let t=[[{v:null}]];Na(0,0,t,a),i.execFunctionGlobalData[e+\"_\"+n+\"_\"+l]=t[0][0]}let s=i.getAllFunctionGroup(),c={},u=zt(),d={};for(let e=0;e<u.length;e++){let t=u[e];d[t.index]=t.data}let h={},f=[];if(null==i.execFunctionExist){h[\"r\"+e+\"c\"+n+\"i\"+l]=1}else for(let e=0;e<i.execFunctionExist.length;e++){let t=i.execFunctionExist[e],n=\"r\"+t.r+\"c\"+t.c+\"i\"+t.i;h[n]=1}let m={};for(let e=0;e<s.length;e++){let t=s[e],n=\"r\"+t.r+\"c\"+t.c+\"i\"+t.index,a=Hn(t.r,t.c,t.index);if(null==a)continue;let l=a.toUpperCase(),r=l.indexOf(\"INDIRECT(\")>-1||l.indexOf(\"OFFSET(\")>-1||l.indexOf(\"INDEX(\")>-1,o=[];if(r)this.isFunctionRange(a,null,null,t.index,null,(function(e){let n=i.getcellrange($.trim(e),t.index);null!=n&&o.push(n)}));else if('=\"'!=a.substr(0,2)||'\"'!=a.substr(a.length-1,1)){let e=0,n=-1,l=-1,r=[],s=[],c=a.length;for(let t=0;t<c;t++){let o=a.charAt(t);\"'\"==o&&-1==l&&(-1==n?(e!=t&&r.push(...a.substring(e,t).split(/==|!=|<>|<=|>=|[,()=+-\\/*%&\\^><]/)),n=t,e=t):t<c-1&&\"'\"==a.charAt(t+1)?t++:(e=t+1,r.push(a.substring(n,e)),s.push(r.length-1),n=-1)),'\"'==o&&-1==n&&(-1==l?(e!=t&&r.push(...a.substring(e,t).split(/==|!=|<>|<=|>=|[,()=+-\\/*%&\\^><]/)),l=t,e=t):t<c-1&&'\"'==a.charAt(t+1)?t++:(e=t+1,r.push(a.substring(l,e)),l=-1))}e!=c&&r.push(...a.substring(e,c).split(/==|!=|<>|<=|>=|[,()=+-\\/*%&\\^><]/));for(let e=s.length-1;e>=0;e--)s[e]!=r.length-1&&(r[s[e]]=r[s[e]]+r[s[e]+1],r.splice(s[e]+1,1));for(let e=0;e<r.length;e++){let n=r[e];if(n.length<=1||'\"'==n.substr(0,1)&&'\"'==n.substr(n.length-1,1)&&!i.iscelldata(n))continue;let a=i.getcellrange($.trim(n),t.index);null!=a&&o.push(a)}}let u={formulaArray:o,calc_funcStr:a,key:n,r:t.r,c:t.c,index:t.index,parents:{},chidren:{},color:\"w\"};c[n]=u}Object.keys(c).forEach((e=>{let t=c[e];(function(e,t,n,a){for(let l=0;l<e.length;l++){let r=e[l],o=\"r\"+r.row[0]+r.row[1]+\"c\"+r.column[0]+r.column[1]+\"index\"+r.sheetIndex;if(o in m)m[o].forEach((e=>{a(e.key,e.r,e.c,e.sheetIndex)}));else{let e=[];for(let l=r.row[0];l<=r.row[1];l++)for(let o=r.column[0];o<=r.column[1];o++){let i=\"r\"+l+\"c\"+o+\"i\"+r.sheetIndex;a(i,l,o,r.sheetIndex),(t&&i in t||n&&i in n)&&e.push({key:i,r:l,c:o,sheetIndex:r.sheetIndex})}(t||n)&&(m[o]=e)}}})(t.formulaArray,c,h,(function(n){if(n in c){let a=c[n];t.chidren[n]=1,a.parents[e]=1}!o&&n in h&&f.push(t)})),o&&f.push(t)}));let p=[],g=f,y={};for(;g.length>0;){let e=g.pop();if(null==e||e.key in y)continue;if(\"b\"==e.color){p.push(e),y[e.key]=1;continue}let t=[];Object.keys(e.parents).forEach((e=>{let n=c[e];null!=n&&t.push(n)})),0==t.length?(p.push(e),y[e.key]=1):(e.color=\"b\",g.push(e),g=g.concat(t))}p.reverse();for(let e=0;e<p.length;e++){let t=p[e];if(t.level==Math.max)continue;window.luckysheet_getcelldata_cache=null;let n=t.calc_funcStr,a=i.execfunction(n,t.r,t.c,t.index);i.groupValuesRefreshData.push({r:t.r,c:t.c,v:a[1],f:a[2],spe:a[3],index:t.index}),i.execFunctionGlobalData[t.r+\"_\"+t.c+\"_\"+t.index]={v:a[1],f:a[2]}}i.execFunctionExist=null},execFunctionGroup1:function(e,n,a,l,r,o=!1){let i=this;null==r&&(r=t.flowdata),window.luckysheet_compareWith||(window.luckysheet_compareWith=Oo,window.luckysheet_getarraydata=Bo,window.luckysheet_getcelldata=qo,window.luckysheet_parseData=Ho,window.luckysheet_getValue=Uo,window.luckysheet_indirect_check=jo,window.luckysheet_indirect_check_return=Go,window.luckysheet_offset_check=Wo,window.luckysheet_calcADPMM=Vo,window.luckysheet_getSpecialReference=Yo),null==i.execFunctionGlobalData&&(i.execFunctionGlobalData={});let s=zt(),c=null==s[Mt(t.currentSheetIndex)].dynamicArray_compute?{}:s[Mt(t.currentSheetIndex)].dynamicArray_compute;if(null==l&&(l=t.currentSheetIndex),null!=a){let t=[[{v:null}]];Na(0,0,t,a),i.execFunctionGlobalData[e+\"_\"+n+\"_\"+l]=t[0][0]}let u=i.getAllFunctionGroup(),d={},h=[],f=0;if(i.execvertex={},null==i.execFunctionExist)for(let t=0;t<u.length;t++){let a=u[t],r=s[Mt(a.index)];if(null==r)continue;let m=r.data[a.r][a.c],p=Hn(a.r,a.c,a.index);null!=m&&null!=m.f&&m.f==p&&(a instanceof Object||(a=new Function(\"return \"+a)()),a.color=\"w\",a.parent=null,a.chidren={},a.times=0,d[\"r\"+a.r+\"c\"+a.c+\"i\"+a.index]=a,i.isFunctionRangeSave=!1,o?i.isFunctionRangeSave=!0:null!=e&&null!=n&&i.isFunctionRangeSelect(p,e,n,l,c),i.isFunctionRangeSave&&(h.push(a),i.execvertex[\"r\"+a.r+\"c\"+a.c+\"i\"+a.index]=a,f++))}else for(let e=0;e<i.execFunctionExist.length;e++){let t=i.execFunctionExist[e];if(!(\"r\"+t.r+\"c\"+t.c+\"i\"+t.i in d))for(let e=0;e<u.length;e++){let n=u[e],a=Hn(n.r,n.c,n.index);n.color=\"w\",n.parent=null,n.chidren={},n.times=0,d[\"r\"+n.r+\"c\"+n.c+\"i\"+n.index]=n,i.isFunctionRangeSave=!1,o?i.isFunctionRangeSave=!0:i.isFunctionRangeSelect(a,t.r,t.c,t.i,c),i.isFunctionRangeSave&&(h.push(n),i.execvertex[\"r\"+n.r+\"c\"+n.c+\"i\"+n.index]=n,f++)}}for(;h.length>0;){let e=h.shift(),t={};i.getChildrenVertex(e,d,t);for(let n in d){let a=d[n];if(null==a)continue;let l=\"r\"+e.r+\"c\"+e.c+\"i\"+e.index;if(n in t)continue;i.isFunctionRangeSave=!1;let r=Hn(a.r,a.c,a.index);i.isFunctionRangeSelect(r,e.r,e.c,e.index,c),i.isFunctionRangeSave&&(n in i.execvertex||(h.push(a),i.execvertex[n]=a),f++,i.execvertex[n].chidren[l]=1)}}i.groupValuesRefreshData=[];let m=0;for(;m<f;)for(let e in i.execvertex){let t=i.execvertex[e];\"w\"==t.color?i.functionDFS(t):\"b\"==t.color&&m++}i.execFunctionExist=null},getChildrenVertex:function(e,t,n){if(n[\"r\"+e.r+\"c\"+e.c+\"i\"+e.index]=1,null!=e.chidren)for(let a in e.chidren)t[a]&&!(a in n)&&this.getChildrenVertex(t[a],t,n)},functionDFS:function(e){let t=this;e.color=\"g\",e.times+=1;for(let n in e.chidren){let a=t.execvertex[n];\"w\"==a.color&&(a.parent=\"r\"+e.r.toString()+\"c\"+e.c.toString()+\"i\"+e.index,t.functionDFS(a))}e.color=\"b\",window.luckysheet_getcelldata_cache=null;let n=Hn(e.r,e.c,e.index),a=t.execfunction(n,e.r,e.c,e.index);t.groupValuesRefreshData.push({r:e.r,c:e.c,v:a[1],f:a[2],spe:a[3],index:e.index}),t.execFunctionGlobalData[e.r+\"_\"+e.c+\"_\"+e.index]={v:a[1],f:a[2]}},groupValuesRefreshData:[],groupValuesRefresh:function(){let e=this,n=zt();if(e.groupValuesRefreshData.length>0){for(let t=0;t<e.groupValuesRefreshData.length;t++){let a=e.groupValuesRefreshData[t],l=n[Mt(a.index)],r=l.data;if(null==r)continue;let o={};null!=a.spe&&(\"sparklines\"==a.spe.type?o.spl=a.spe.data:\"dynamicArrayItem\"==a.spe.type&&(l.dynamicArray=e.insertUpdateDynamicArray(a.spe.data))),o.v=a.v,o.f=a.f;let i=Na(a.r,a.c,r,o);yo.saveParam(\"v\",a.index,i,{r:a.r,c:a.c})}mn.webWorkerFlowDataCache(t.flowdata),e.groupValuesRefreshData=[]}},delFunctionGroup:function(e,n,a){null==a&&(a=t.currentSheetIndex);let l=zt(),r=l[Mt(a)],o=r.calcChain;if(null!=o)for(let t=0;t<o.length;t++){let l=o[t];if(l.r==e&&l.c==n&&l.index==a){o.splice(t,1),yo.saveParam(\"fc\",a,null,{op:\"del\",pos:t});break}}let i=r.dynamicArray;if(null!=i)for(let t=0;t<i.length;t++){let l=i[t];if(l.r==e&&l.c==n&&(null==l.index||l.index==a)){i.splice(t,1),yo.saveParam(\"ac\",a,null,{op:\"del\",pos:t});break}}jt(l)},execfunction:function(e,n,a,l,r,o){let i=this,s=X().formulaMore;if(e.indexOf(i.error.r)>-1)return[!1,i.error.r,e];i.checkBracketNum(e)||(e+=\")\"),null==l&&(l=t.currentSheetIndex),t.calculateSheetIndex=l;let c=$.trim(i.functionParserExe(e));if((\"luckysheet_function.\"==c.substr(0,20)||\"luckysheet_compareWith\"==c.substr(0,22))&&(i.functionHTMLIndex=0),!i.testFunction(e,c)||\"\"==c)return vo.info(\"\",s.execfunctionError),[!1,i.error.n,e];let u=null;window.luckysheetCurrentRow=n,window.luckysheetCurrentColumn=a,window.luckysheetCurrentIndex=l,window.luckysheetCurrentFunction=e;let d=null;try{if(c.indexOf(\"luckysheet_getcelldata\")>-1){let l=c.split(\"luckysheet_getcelldata('\");for(let r=1;r<l.length;r++){let o=l[r].split(\"')\")[0],c=i.getcellrange(o);if(!c||c.row[0]<0||c.column[0]<0)return[!0,i.error.r,e];if(c.sheetIndex==t.calculateSheetIndex&&n>=c.row[0]&&n<=c.row[1]&&a>=c.column[0]&&a<=c.column[1])return I()?alert(s.execfunctionSelfError):vo.info(\"\",s.execfunctionSelfErrorResult),[!1,0,e]}}u=new Function(\"return \"+c)(),\"string\"==typeof u&&(u=u.replace(/\\x7F/g,'\"')),c.indexOf(\"SPLINES\")>-1&&(d=u,u=\"\")}catch(e){let t=e;console.log(e,c),t=i.errorInfo(t),u=[i.error.n,t]}\"object\"==ad(u)&&null!=u.startCell&&(u=\"array\"==ad(u.data)?i.error.v:\"object\"!=ad(u.data)||_(u.data.v)?_(u.data)?0:u.cell>1||u.rowl>1||\"string\"==ad(u.data)||\"number\"==ad(u.data)?u.data:0:u.data.v);let h=null;if(\"array\"==ad(u)){let t=!1;\"array\"!=ad(u[0])&&2==u.length&&(t=T(u[0])),t?u=u[0]:\"array\"==ad(u[0])&&1==u.length&&1==u[0].length?u=u[0][0]:(h={r:n,c:a,f:e,index:l,data:u},u=\"\")}return window.luckysheetCurrentRow=null,window.luckysheetCurrentColumn=null,window.luckysheetCurrentIndex=null,window.luckysheetCurrentFunction=null,null!=n&&null!=a&&(r&&i.execFunctionGroup(n,a,u,l),o||i.insertUpdateFunctionGroup(n,a,l)),d?[!0,u,e,{type:\"sparklines\",data:d}]:h?[!0,u,e,{type:\"dynamicArrayItem\",data:h}]:[!0,u,e]},testFunction:function(e,t){return\"=\"==e.substr(0,1)},execstringformula:function(e,t,n,a){return this.execfunction(e,t,n,a)},functionResizeData:{},functionResizeStatus:!1,functionResizeTimeout:null,data_parm_index:0,cellFocus:function(e,n){var a;let l=t.luckysheetfile[Mt(t.currentSheetIndex)];if(l.calcChain){let r=\"\";null==(a=l.calcChain)||a.find((({r:a,c:l,func:o})=>{var i;if(a===e&&l===n)return r=null==(i=t.flowdata[a][l])?void 0:i.f,!0})),0===r.indexOf(\"=GET_AIRTABLE_DATA\")?(this.showButton(e,n),this.addButtonListener(r,e,n)):this.hideButton()}},addButtonListener:function(e,t,n){$(\"#luckysheet-formula-refresh\").data(\"listener\")||(console.info(\"listener\"),$(\"#luckysheet-formula-refresh\").data(\"listener\",\"true\"),$(\"#luckysheet-formula-refresh\").on(\"click\",(e=>{this.execFunctionGroupForce(!0),ao(),e.stopPropagation()})))},showButton:function(e,n){let a=t.visibledatarow[e],l=0==e?0:t.visibledatarow[e-1],r=t.visibledatacolumn[n],o=0==n?0:t.visibledatacolumn[n-1],i=Yu.mergeborer(t.flowdata,e,n);i&&(a=i.row[1],l=i.row[0],r=i.column[1],o=i.column[0]),$(\"#luckysheet-formula-refresh\").show().css({\"max-width\":r-o,\"max-height\":a-l,left:r-20,top:l+(a-l-20)/2})},hideButton:function(){$(\"#luckysheet-formula-refresh\").hide()}}}));function Ti(e,t=\"redo\"){if(null==e)return;let n=e.data;\"undo\"==t&&(n=e.curdata);for(let t=0;t<e.range.length;t++){let a=e.range[t].row[0],l=e.range[t].row[1],r=e.range[t].column[0],o=e.range[t].column[1];for(let t=a;t<l+1;t++)for(let a=r;a<o+1&&!(t>n.length-1);a++)null==n[t][a]||null==n[t][a].f||\"\"==n[t][a].f?wi.delFunctionGroup(t,a,e.sheetIndex):null!=n[t][a]&&null!=n[t][a].f&&n[t][a].f.length>0&&wi.insertUpdateFunctionGroup(t,a,e.sheetIndex)}}var Si,$i,Ii,Ri,Ai,Di=y((()=>{_i(),_o(),Vr(),To(),wl(),il(),cl(),to(),xi(),ol(),Ci(),Qa(),Io(),fo(),qt(),x(),Xu(),kl(),Si={redo:function(e){if(0==t.jfredo.length)return;let n=t.jfredo.pop();if(t.jfundo.push(n),t.clearjfundo=!1,ki.hasSheet(n.sheetIndex)&&t.currentSheetIndex!=n.sheetIndex&&ki.changeSheetExec(n.sheetIndex),\"datachange\"==n.type){Ti(n);let e={cfg:n.config,RowlChange:n.RowlChange,cdformat:n.cdformat,dataVerification:n.dataVerification,dynamicArray:n.dynamicArray,hyperlink:n.hyperlink};yo.saveParam(\"mv\",t.currentSheetIndex,n.dataRange),ao(n.data,n.dataRange,e)}else if(\"pasteCut\"==n.type){so({sheetIndex:n.source.sheetIndex,data:n.source.curData,curData:n.source.data,config:n.source.curConfig,curConfig:n.source.config,cdformat:n.source.curCdformat,curCdformat:n.source.cdformat,dataVerification:n.source.curDataVerification,curDataVerification:n.source.dataVerification,range:n.source.range},{sheetIndex:n.target.sheetIndex,data:n.target.curData,curData:n.target.data,config:n.target.curConfig,curConfig:n.target.config,cdformat:n.target.curCdformat,curCdformat:n.target.cdformat,dataVerification:n.target.curDataVerification,curDataVerification:n.target.dataVerification,range:n.target.range},n.RowlChange)}else if(\"rangechange\"==n.type)Ti(n),ro(n.data,n.range,n.cdformat);else if(\"resize\"==n.type){t.config=n.config,t.luckysheetfile[Mt(n.sheetIndex)].config=t.config,\"resizeR\"==n.ctrlType?yo.saveParam(\"cg\",n.sheetIndex,n.config.rowlen,{k:\"rowlen\"}):\"resizeC\"==n.ctrlType&&yo.saveParam(\"cg\",n.sheetIndex,n.config.columnlen,{k:\"columnlen\"});let e=$.extend(!0,{},n.images);t.luckysheetfile[Mt(n.sheetIndex)].images=e,yo.saveParam(\"all\",n.sheetIndex,e,{k:\"images\"}),rl.images=e,rl.allImagesShow(),co(t.flowdata.length,t.flowdata[0].length)}else if(\"cellRowChange\"==n.type)lo(n.data[0].length,n.data.length,n.data,n.config,n.range,n.ctrlType,n.ctrlValue,n.cdformat);else if(\"extend\"==n.type)lo(n.data[0].length,n.data.length,n.data,n.config,n.range,\"dele\",n.ctrlValue);else if(\"dele\"==n.type){let e=$.extend(!0,{},n.ctrlValue);e.restore=!0,lo(n.data[0].length,n.data.length,n.data,n.config,n.range,\"extend\",e)}else if(\"addRC\"==n.type){let e=$.extend(!0,{},n.ctrlValue);\"rightbottom\"==e.direction&&(e.index=e.index+1),oo(n.data,n.config,\"delRC\",e,n.calc,n.filterObj,n.cf,n.af,n.freezen,n.dataVerification,n.hyperlink)}else if(\"delRC\"==n.type){let e=$.extend(!0,{},n.ctrlValue);e.restore=!0,e.direction=\"lefttop\",oo(n.data,n.config,\"addRC\",e,n.calc,n.filterObj,n.cf,n.af,n.freezen,n.dataVerification,n.hyperlink)}else if(\"deleteCell\"==n.type)io(n.data,n.config,n.ctrl,n.calc,n.filterObj,n.cf,n.dataVerification,n.hyperlink);else if(\"showHidRows\"==n.type)t.config=n.config,t.luckysheetfile[Mt(n.sheetIndex)].config=n.config,yo.saveParam(\"cg\",n.sheetIndex,n.config.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length);else if(\"showHidCols\"==n.type)t.config=n.config,t.luckysheetfile[Mt(n.sheetIndex)].config=n.config,yo.saveParam(\"cg\",n.sheetIndex,n.config.colhidden,{k:\"colhidden\"}),co(t.flowdata.length,t.flowdata[0].length);else if(\"datachangeAll\"==n.type)wi.execFunctionGroup(),lo(n.data[0].length,n.data.length,n.data,null,n.range,\"datachangeAll\",n.ctrlValue);else if(\"datachangeAll_filter_clear\"==n.type)al(n.filter_save),$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").each((function(e){let t=$(this),a=n.optiongroups[e];el(t,a.optionstate,a.rowhidden,a.caljs,!1,a.st_r,a.ed_r,a.cindex,a.st_c,a.ed_c)})),yo.saveParam(\"fsr\",t.currentSheetIndex,{filter:n.optiongroups,filter_select:n.filter_save}),t.config=n.config,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,null==t.config.rowhidden&&(t.config.rowhidden={}),yo.saveParam(\"cg\",t.currentSheetIndex,t.config.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide();else if(\"datachangeAll_filter\"==n.type){let e=$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").eq(n.optionsindex),a=e.data(\"str\"),l=e.data(\"edr\"),r=e.data(\"cindex\"),o=e.data(\"stc\"),i=e.data(\"edc\");el(e,Ka.hasKey(n.rowhidenPre),n.rowhidenPre,n.caljs,!0,a,l,r,o,i),t.config=n.config,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,null==t.config.rowhidden&&(t.config.rowhidden={}),yo.saveParam(\"cg\",t.currentSheetIndex,t.config.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide()}else if(\"filtershow\"==n.type)$(\"#luckysheet-filter-selected-sheet\"+n.sheetIndex+\", #luckysheet-filter-options-sheet\"+n.sheetIndex).remove(),yo.allowUpdate&&yo.saveParam(\"all\",n.sheetIndex,null,{k:\"filter_select\"});else if(\"pivotTable_change\"==n.type)t.luckysheetfile[Mt(n.sheetIndex)].pivotTable=n.pivotTable,wr.getCellData(n.sheetIndex),wr.initialPivotManage(!0),wr.refreshPivotTable();else if(\"addSheet\"==n.type)ki.deleteSheet(n.index),ki.changeSheetExec(n.currentSheetIndex),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide();else if(\"copySheet\"==n.type)ki.deleteSheet(n.index),ki.changeSheetExec(n.copyindex);else if(\"deleteSheet\"==n.type){let e=!1;for(let a=0;a<t.luckysheetfile.length;a++)t.luckysheetfile[a].name==n.name&&(e=!0);e||(ki.createSheetbydata(n,\"isrenew\"),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide())}else if(\"sheetName\"==n.type)t.luckysheetfile[Mt(n.sheetIndex)].name=n.oldtxt,$(\"#luckysheet-sheets-item\"+n.sheetIndex).find(\".luckysheet-sheets-item-name\").html(n.oldtxt),yo.saveParam(\"all\",n.sheetIndex,n.oldtxt,{k:\"name\"});else if(\"sheetColor\"==n.type){t.luckysheetfile[Mt(n.sheetIndex)].color=n.oldcolor;let e=$(\"#luckysheet-sheets-item\"+n.sheetIndex);e.find(\".luckysheet-sheets-item-color\").remove(),null!=n.oldcolor&&e.append('<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+n.oldcolor+';\"></div>'),yo.saveParam(\"all\",n.sheetIndex,n.oldcolor,{k:\"color\"})}else if(\"mergeChange\"==n.type){let e={cfg:n.config,calc:n.calc,hyperlink:n.hyperlink};ao(n.data,n.range,e)}else if(\"updateDataVerification\"==n.type)sl.ref(n.currentDataVerification,n.historyDataVerification,n.sheetIndex);else if(\"updateDataVerificationOfCheckbox\"==n.type)sl.refOfCheckbox(n.currentDataVerification,n.historyDataVerification,n.sheetIndex,n.data,n.range);else if(\"updateHyperlink\"==n.type)Qr.ref(n.currentHyperlink,n.historyHyperlink,n.sheetIndex,n.data,n.range);else if(\"updateCF\"==n.type){let e=n.data.historyRules;for(let n=0;n<e.length;n++){let a=e[n].sheetIndex;t.luckysheetfile[Mt(a)].luckysheet_conditionformat_save=e[n].luckysheet_conditionformat_save,yo.allowUpdate&&yo.saveParam(\"all\",a,e[n].luckysheet_conditionformat_save,{k:\"luckysheet_conditionformat_save\"})}ko.ref()}else if(\"updateAF\"==n.type){let e=n.data.historyRules,a=Mt(n.sheetIndex);t.luckysheetfile[a].luckysheet_alternateformat_save=$.extend(!0,[],e),setTimeout((function(){uo()}),1)}else if(\"borderChange\"==n.type)null==n.config.borderInfo?yo.saveParam(\"cg\",n.sheetIndex,[],{k:\"borderInfo\"}):yo.saveParam(\"cg\",n.sheetIndex,n.config.borderInfo,{k:\"borderInfo\"}),t.config=n.config,t.luckysheetfile[Mt(n.sheetIndex)].config=t.config,setTimeout((function(){uo()}),1);else if(\"postil\"==n.type){vl.ref(n.data,n.rc);for(let e=0;e<n.rc.length;e++){let t=n.rc[e].split(\"_\")[0],a=n.rc[e].split(\"_\")[1];null!=n.data[t][a]&&null!=n.data[t][a].ps?vl.buildPs(t,a,n.data[t][a].ps):vl.buildPs(t,a,null)}}else\"imageCtrl\"==n.type?(rl.images=$.extend(!0,{},n.images),rl.allImagesShow(),rl.ref()):\"zoomChange\"==n.type&&(t.zoomRatio=n.zoomRatio,yo.saveParam(\"all\",n.sheetIndex,n.zoomRatio,{k:\"zoomRatio\"}),yi(),pi());$o(e),n.range&&(t.luckysheet_select_save=$.extend(!0,[],n.range),Pu()),t.clearjfundo=!0;let a=((e,t)=>l(e,s(t)))(g({},n),{data:n.curdata,curdata:n.data});yl.createHookFunction(\"updated\",a)},undo:function(){if(0==t.jfundo.length)return;let e=t.jfundo.pop();if(t.jfredo.push(e),t.clearjfundo=!1,ki.hasSheet(e.sheetIndex)&&t.currentSheetIndex!=e.sheetIndex&&ki.changeSheetExec(e.sheetIndex),\"datachange\"==e.type){wi.execFunctionGroup();let n={cfg:e.curConfig,RowlChange:e.RowlChange,cdformat:e.curCdformat,dataVerification:e.curDataVerification,dynamicArray:e.curDynamicArray,hyperlink:e.curHyperlink};Ti(e,\"undo\"),yo.saveParam(\"mv\",t.currentSheetIndex,e.range),ao(e.curdata,e.range,n)}else if(\"pasteCut\"==e.type)so(e.source,e.target,e.RowlChange);else if(\"rangechange\"==e.type)Ti(e,\"undo\"),ro(e.curdata,e.range,e.curCdformat);else if(\"resize\"==e.type){t.config=e.curconfig,t.luckysheetfile[Mt(e.sheetIndex)].config=t.config,\"resizeR\"==e.ctrlType?yo.saveParam(\"cg\",e.sheetIndex,e.curconfig.rowlen,{k:\"rowlen\"}):\"resizeC\"==e.ctrlType&&yo.saveParam(\"cg\",e.sheetIndex,e.curconfig.columnlen,{k:\"columnlen\"});let n=$.extend(!0,{},e.curImages);t.luckysheetfile[Mt(e.sheetIndex)].images=n,yo.saveParam(\"all\",e.sheetIndex,n,{k:\"images\"}),rl.images=n,rl.allImagesShow(),co(t.flowdata.length,t.flowdata[0].length)}else if(\"cellRowChange\"==e.type)lo(e.curdata[0].length,e.curdata.length,e.curdata,e.curconfig,e.currange,e.ctrlType,e.ctrlValue,e.curCdformat);else if(\"extend\"==e.type)lo(e.curdata[0].length,e.curdata.length,e.curdata,e.curconfig,e.currange,e.ctrlType,e.ctrlValue);else if(\"dele\"==e.type){$.extend(!0,{},e.ctrlValue).restore=!0,lo(e.curdata[0].length,e.curdata.length,e.curdata,e.curconfig,e.currange,e.ctrlType,e.ctrlValue)}else if(\"addRC\"==e.type)oo(e.curData,e.curConfig,\"addRC\",e.ctrlValue,e.curCalc,e.curFilterObj,e.curCf,e.curAf,e.curFreezen,e.curDataVerification,e.curHyperlink);else if(\"delRC\"==e.type)oo(e.curData,e.curConfig,\"delRC\",e.ctrlValue,e.curCalc,e.curFilterObj,e.curCf,e.curAf,e.curFreezen,e.curDataVerification,e.curHyperlink);else if(\"deleteCell\"==e.type)io(e.curData,e.curConfig,e.ctrl,e.curCalc,e.curFilterObj,e.curCf,e.curDataVerification,e.curHyperlink);else if(\"showHidRows\"==e.type)t.config=e.curconfig,t.luckysheetfile[Mt(e.sheetIndex)].config=e.curconfig,yo.saveParam(\"cg\",e.sheetIndex,e.curconfig.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length);else if(\"showHidCols\"==e.type)t.config=e.curconfig,t.luckysheetfile[Mt(e.sheetIndex)].config=e.curconfig,yo.saveParam(\"cg\",e.sheetIndex,e.curconfig.colhidden,{k:\"colhidden\"}),co(t.flowdata.length,t.flowdata[0].length);else if(\"datachangeAll\"==e.type)wi.execFunctionGroup(),lo(e.curdata[0].length,e.curdata.length,e.curdata,null,e.currange,\"datachangeAll\",e.ctrlValue);else if(\"datachangeAll_filter_clear\"==e.type)yo.saveParam(\"fsc\",t.currentSheetIndex,null),t.config=e.curconfig,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,{},{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length),$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").hide().find(\"input\").val(),$(\"#luckysheet-filter-selected span\").data(\"type\",\"0\").data(\"type\",null).text(\"无\"),$(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex+\", #luckysheet-filter-options-sheet\"+t.currentSheetIndex).remove(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide();else if(\"datachangeAll_filter\"==e.type){let n=$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").eq(e.optionsindex),a=n.data(\"str\"),l=n.data(\"edr\"),r=n.data(\"cindex\"),o=n.data(\"stc\"),i=n.data(\"edc\");el(n,Ka.hasKey(e.rowhidden),e.rowhidden,e.caljs,!0,a,l,r,o,i),t.config=e.curconfig,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,t.config.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide()}else if(\"filtershow\"==e.type)t.luckysheet_select_save=[e.filter_save],t.filterchage=!1,nl(),t.filterchage=!0,yo.saveParam(\"all\",e.sheetIndex,e.filter_save,{k:\"filter_select\"});else if(\"pivotTable_change\"==e.type)t.luckysheetfile[Mt(e.sheetIndex)].pivotTable=e.pivotTablecur,wr.getCellData(e.sheetIndex),wr.initialPivotManage(!0),wr.refreshPivotTable();else if(\"addSheet\"==e.type)ki.createSheetbydata(e.sheetconfig),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide();else if(\"copySheet\"==e.type)ki.copySheet(e.copyindex);else if(\"deleteSheet\"==e.type)ki.deleteSheet(e.index),0==e.order?ki.changeSheetExec(t.luckysheetfile[0].index):ki.changeSheetExec(t.luckysheetfile[e.order-1].index),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide();else if(\"sheetName\"==e.type)t.luckysheetfile[Mt(e.sheetIndex)].name=e.txt,$(\"#luckysheet-sheets-item\"+e.sheetIndex).find(\".luckysheet-sheets-item-name\").html(e.txt),yo.saveParam(\"all\",e.sheetIndex,e.txt,{k:\"name\"});else if(\"sheetColor\"==e.type){t.luckysheetfile[Mt(e.sheetIndex)].color=e.color;let n=$(\"#luckysheet-sheets-item\"+e.sheetIndex);n.find(\".luckysheet-sheets-item-color\").remove(),null!=e.color&&n.append('<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+e.color+';\"></div>'),yo.saveParam(\"all\",e.sheetIndex,e.color,{k:\"color\"})}else if(\"mergeChange\"==e.type){let t={cfg:e.curConfig,calc:e.curCalc,hyperlink:e.curHyperlink};ao(e.curData,e.range,t)}else if(\"updateDataVerification\"==e.type)sl.ref(e.historyDataVerification,e.currentDataVerification,e.sheetIndex);else if(\"updateDataVerificationOfCheckbox\"==e.type)sl.refOfCheckbox(e.historyDataVerification,e.currentDataVerification,e.sheetIndex,e.curData,e.range);else if(\"updateHyperlink\"==e.type)Qr.ref(e.historyHyperlink,e.currentHyperlink,e.sheetIndex,e.curData,e.range);else if(\"updateCF\"==e.type){let n=e.data.currentRules;for(let e=0;e<n.length;e++){let a=n[e].sheetIndex;t.luckysheetfile[Mt(a)].luckysheet_conditionformat_save=n[e].luckysheet_conditionformat_save,yo.allowUpdate&&yo.saveParam(\"all\",a,n[e].luckysheet_conditionformat_save,{k:\"luckysheet_conditionformat_save\"})}ko.ref()}else if(\"updateAF\"==e.type){let n=e.data.currentRules,a=Mt(e.sheetIndex);t.luckysheetfile[a].luckysheet_alternateformat_save=$.extend(!0,[],n),setTimeout((function(){uo()}),1)}else if(\"borderChange\"==e.type)yo.saveParam(\"cg\",e.sheetIndex,e.curconfig.borderInfo,{k:\"borderInfo\"}),t.config=e.curconfig,t.luckysheetfile[Mt(e.sheetIndex)].config=t.config,setTimeout((function(){uo()}),1);else if(\"postil\"==e.type){vl.ref(e.curdata,e.rc);for(let t=0;t<e.rc.length;t++){let n=e.rc[t].split(\"_\")[0],a=e.rc[t].split(\"_\")[1];null!=e.curdata[n][a]&&null!=e.curdata[n][a].ps?vl.buildPs(n,a,e.curdata[n][a].ps):vl.buildPs(n,a,null)}}else\"imageCtrl\"==e.type?(rl.images=$.extend(!0,{},e.curImages),rl.allImagesShow(),rl.ref()):\"zoomChange\"==e.type&&(t.zoomRatio=e.curZoomRatio,yo.saveParam(\"all\",e.sheetIndex,e.curZoomRatio,{k:\"zoomRatio\"}),yi(),pi());e.range&&(t.luckysheet_select_save=$.extend(!0,[],e.range),Pu()),t.clearjfundo=!0}}})),Fi=y((()=>{$i=[\"onChange\",\"onClose\",\"onDayCreate\",\"onDestroy\",\"onKeyDown\",\"onMonthChange\",\"onOpen\",\"onParseConfig\",\"onReady\",\"onValueUpdate\",\"onYearChange\",\"onPreCalendarPosition\"],Ii={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:\"F j, Y\",altInput:!1,altInputClass:\"form-control input\",animate:\"object\"==typeof window&&-1===window.navigator.userAgent.indexOf(\"MSIE\"),ariaDateFormat:\"F j, Y\",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:\", \",dateFormat:\"Y-m-d\",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(e){return\"undefined\"!=typeof console&&console.warn(e)},getWeek:function(e){var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:\"default\",minuteIncrement:5,mode:\"single\",monthSelectorType:\"dropdown\",nextArrow:\"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1}})),Ei=y((()=>{Ai=Ri={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return\"th\";switch(t%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",monthAriaLabel:\"Month\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1}}));function Mi(e,t){var n;return function(){var a=this,l=arguments;clearTimeout(n),n=setTimeout((function(){return e.apply(a,l)}),t)}}var Ni,Pi,zi,Li=y((()=>{Ni=function(e,t){return void 0===t&&(t=2),(\"000\"+e).slice(-1*t)},Pi=function(e){return!0===e?1:0},zi=function(e){return e instanceof Array?e:[e]}}));function Oi(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function Bi(e,t,n){var a=window.document.createElement(e);return t=t||\"\",n=n||\"\",a.className=t,void 0!==n&&(a.textContent=n),a}function Vi(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function qi(e,t){return t(e)?e:e.parentNode?qi(e.parentNode,t):void 0}function Hi(e,t){var n=Bi(\"div\",\"numInputWrapper\"),a=Bi(\"input\",\"numInput \"+e),l=Bi(\"span\",\"arrowUp\"),r=Bi(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==t)for(var o in t)a.setAttribute(o,t[o]);return n.appendChild(a),n.appendChild(l),n.appendChild(r),n}function Ui(e){try{return\"function\"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(t){return e.target}}var ji,Gi,Wi,Yi,Xi,Ki=y((()=>{})),Zi=y((()=>{Li(),Gi=function(e,t,n){return n.months[t?\"shorthand\":\"longhand\"][e]},Wi={D:ji=function(){},F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*Pi(new RegExp(n.amPM[1],\"i\").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),l=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return l.setDate(l.getDate()-l.getDay()+n.firstDayOfWeek),l},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:ji,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:ji,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},Yi={D:\"\",F:\"\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},Xi={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[Xi.w(e,t,n)]},F:function(e,t,n){return Gi(Xi.n(e,t,n)-1,!1,t)},G:function(e,t,n){return Ni(Xi.h(e,t,n))},H:function(e){return Ni(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[Pi(e.getHours()>11)]},M:function(e,t){return Gi(e.getMonth(),!0,t)},S:function(e){return Ni(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return Ni(e.getFullYear(),4)},d:function(e){return Ni(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return Ni(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return Ni(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}}}));function Ji(e,t,n){return void 0===n&&(n=!0),!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}function Qi(e){var t=e.defaultHour,n=e.defaultMinute,a=e.defaultSeconds;if(void 0!==e.minDate){var l=e.minDate.getHours(),r=e.minDate.getMinutes(),o=e.minDate.getSeconds();t<l&&(t=l),t===l&&n<r&&(n=r),t===l&&n===r&&a<o&&(a=e.minDate.getSeconds())}if(void 0!==e.maxDate){var i=e.maxDate.getHours(),s=e.maxDate.getMinutes();(t=Math.min(t,i))===i&&(n=Math.min(s,n)),t===i&&n===s&&(a=e.maxDate.getSeconds())}return{hours:t,minutes:n,seconds:a}}var es,ts,ns,as,rs,os,is=y((()=>{Zi(),Fi(),Ei(),es=function(e){var t=e.config,n=void 0===t?Ii:t,a=e.l10n,l=void 0===a?Ri:a,r=e.isMobile,o=void 0!==r&&r;return function(e,t,a){var r=a||l;return void 0===n.formatDate||o?t.split(\"\").map((function(t,a,l){return Xi[t]&&\"\\\\\"!==l[a-1]?Xi[t](e,r,n):\"\\\\\"!==t?t:\"\"})).join(\"\"):n.formatDate(e,t,r)}},ts=function(e){var t=e.config,n=void 0===t?Ii:t,a=e.l10n,l=void 0===a?Ri:a;return function(e,t,a,r){if(0===e||e){var o,i=r||l,s=e;if(e instanceof Date)o=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)o=new Date(e);else if(\"string\"==typeof e){var c=t||(n||Ii).dateFormat,u=String(e).trim();if(\"today\"===u)o=new Date,a=!0;else if(n&&n.parseDate)o=n.parseDate(e,c);else if(/Z$/.test(u)||/GMT$/.test(u))o=new Date(e);else{for(var d=void 0,h=[],f=0,m=0,p=\"\";f<c.length;f++){var g=c[f],y=\"\\\\\"===g,v=\"\\\\\"===c[f-1]||y;if(Yi[g]&&!v){p+=Yi[g];var b=new RegExp(p).exec(e);b&&(d=!0)&&h[\"Y\"!==g?\"push\":\"unshift\"]({fn:Wi[g],val:b[++m]})}else y||(p+=\".\")}o=n&&n.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0),h.forEach((function(e){var t=e.fn,n=e.val;return o=t(o,n,i)||o})),o=d?o:void 0}}return o instanceof Date&&!isNaN(o.getTime())?(!0===a&&o.setHours(0,0,0,0),o):void n.errorHandler(new Error(\"Invalid date provided: \"+s))}}},ns=function(e,t,n){return e>Math.min(t,n)&&e<Math.max(t,n)},as=function(e,t,n){return 3600*e+60*t+n},rs=function(e){var t=Math.floor(e/3600),n=(e-3600*t)/60;return[t,n,e-3600*t-60*n]},os={DAY:864e5}})),ss=y((()=>{\"use strict\";\"function\"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)throw TypeError(\"Cannot convert undefined or null to object\");for(var a=function(t){t&&Object.keys(t).forEach((function(n){return e[n]=t[n]}))},l=0,r=t;l<r.length;l++){a(r[l])}return e})}));function cs(e,t){var n={config:ds(ds({},Ii),ms.defaultConfig),l10n:Ai};function a(){var e;return(null===(e=n.calendarContainer)||void 0===e?void 0:e.getRootNode()).activeElement||document.activeElement}function l(e){return e.bind(n)}function r(){var e=n.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame((function(){if(void 0!==n.calendarContainer&&(n.calendarContainer.style.visibility=\"hidden\",n.calendarContainer.style.display=\"block\"),void 0!==n.daysContainer){var t=(n.days.offsetWidth+1)*e.showMonths;n.daysContainer.style.width=t+\"px\",n.calendarContainer.style.width=t+(void 0!==n.weekWrapper?n.weekWrapper.offsetWidth:0)+\"px\",n.calendarContainer.style.removeProperty(\"visibility\"),n.calendarContainer.style.removeProperty(\"display\")}}))}function o(e){if(0===n.selectedDates.length){var t=void 0===n.config.minDate||Ji(new Date,n.config.minDate)>=0?new Date:new Date(n.config.minDate.getTime()),a=Qi(n.config);t.setHours(a.hours,a.minutes,a.seconds,t.getMilliseconds()),n.selectedDates=[t],n.latestSelectedDateObj=t}void 0!==e&&\"blur\"!==e.type&&function(e){e.preventDefault();var t=\"keydown\"===e.type,a=Ui(e),l=a;void 0!==n.amPM&&a===n.amPM&&(n.amPM.textContent=n.l10n.amPM[Pi(n.amPM.textContent===n.l10n.amPM[0])]);var r=parseFloat(l.getAttribute(\"min\")),o=parseFloat(l.getAttribute(\"max\")),i=parseFloat(l.getAttribute(\"step\")),s=parseInt(l.value,10),c=e.delta||(t?38===e.which?1:-1:0),u=s+i*c;if(void 0!==l.value&&2===l.value.length){var d=l===n.hourElement,h=l===n.minuteElement;u<r?(u=o+u+Pi(!d)+(Pi(d)&&Pi(!n.amPM)),h&&p(void 0,-1,n.hourElement)):u>o&&(u=l===n.hourElement?u-o-Pi(!n.amPM):r,h&&p(void 0,1,n.hourElement)),n.amPM&&d&&(1===i?u+s===23:Math.abs(u-s)>i)&&(n.amPM.textContent=n.l10n.amPM[Pi(n.amPM.textContent===n.l10n.amPM[0])]),l.value=Ni(u)}}(e);var l=n._input.value;i(),Q(),n._input.value!==l&&n._debouncedChange()}function i(){if(void 0!==n.hourElement&&void 0!==n.minuteElement){var e=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,t=(parseInt(n.minuteElement.value,10)||0)%60,a=void 0!==n.secondElement?(parseInt(n.secondElement.value,10)||0)%60:0;void 0!==n.amPM&&(e=function(e,t){return e%12+12*Pi(t===n.l10n.amPM[1])}(e,n.amPM.textContent));var l=void 0!==n.config.minTime||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&0===Ji(n.latestSelectedDateObj,n.config.minDate,!0),r=void 0!==n.config.maxTime||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&0===Ji(n.latestSelectedDateObj,n.config.maxDate,!0);if(void 0!==n.config.maxTime&&void 0!==n.config.minTime&&n.config.minTime>n.config.maxTime){var o=as(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),i=as(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),s=as(e,t,a);if(s>i&&s<o){var u=rs(o);e=u[0],t=u[1],a=u[2]}}else{if(r){var d=void 0!==n.config.maxTime?n.config.maxTime:n.config.maxDate;(e=Math.min(e,d.getHours()))===d.getHours()&&(t=Math.min(t,d.getMinutes())),t===d.getMinutes()&&(a=Math.min(a,d.getSeconds()))}if(l){var h=void 0!==n.config.minTime?n.config.minTime:n.config.minDate;(e=Math.max(e,h.getHours()))===h.getHours()&&t<h.getMinutes()&&(t=h.getMinutes()),t===h.getMinutes()&&(a=Math.max(a,h.getSeconds()))}}c(e,t,a)}}function s(e){var t=e||n.latestSelectedDateObj;t&&t instanceof Date&&c(t.getHours(),t.getMinutes(),t.getSeconds())}function c(e,t,a){void 0!==n.latestSelectedDateObj&&n.latestSelectedDateObj.setHours(e%24,t,a||0,0),n.hourElement&&n.minuteElement&&!n.isMobile&&(n.hourElement.value=Ni(n.config.time_24hr?e:(12+e)%12+12*Pi(e%12==0)),n.minuteElement.value=Ni(t),void 0!==n.amPM&&(n.amPM.textContent=n.l10n.amPM[Pi(e>=12)]),void 0!==n.secondElement&&(n.secondElement.value=Ni(a)))}function u(e){var t=Ui(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(n.toString()))&&A(n)}function d(e,t,a,l){return t instanceof Array?t.forEach((function(t){return d(e,t,a,l)})):e instanceof Array?e.forEach((function(e){return d(e,t,a,l)})):(e.addEventListener(t,a,l),void n._handlers.push({remove:function(){return e.removeEventListener(t,a,l)}}))}function h(){Y(\"onChange\")}function f(e,t){var a=void 0!==e?n.parseDate(e):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate<n.now?n.config.maxDate:n.now),l=n.currentYear,r=n.currentMonth;try{void 0!==a&&(n.currentYear=a.getFullYear(),n.currentMonth=a.getMonth())}catch(e){e.message=\"Invalid date supplied: \"+a,n.config.errorHandler(e)}t&&n.currentYear!==l&&(Y(\"onYearChange\"),x()),t&&(n.currentYear!==l||n.currentMonth!==r)&&Y(\"onMonthChange\"),n.redraw()}function m(e){var t=Ui(e);~t.className.indexOf(\"arrow\")&&p(e,t.classList.contains(\"arrowUp\")?1:-1)}function p(e,t,n){var a=e&&Ui(e),l=n||a&&a.parentNode&&a.parentNode.firstChild,r=X(\"increment\");r.delta=t,l&&l.dispatchEvent(r)}function g(e,t,a,l){var r=D(t,!0),o=Bi(\"span\",e,t.getDate().toString());return o.dateObj=t,o.$i=l,o.setAttribute(\"aria-label\",n.formatDate(t,n.config.ariaDateFormat)),-1===e.indexOf(\"hidden\")&&0===Ji(t,n.now)&&(n.todayDateElem=o,o.classList.add(\"today\"),o.setAttribute(\"aria-current\",\"date\")),r?(o.tabIndex=-1,K(t)&&(o.classList.add(\"selected\"),n.selectedDateElem=o,\"range\"===n.config.mode&&(Oi(o,\"startRange\",n.selectedDates[0]&&0===Ji(t,n.selectedDates[0],!0)),Oi(o,\"endRange\",n.selectedDates[1]&&0===Ji(t,n.selectedDates[1],!0)),\"nextMonthDay\"===e&&o.classList.add(\"inRange\")))):o.classList.add(\"flatpickr-disabled\"),\"range\"===n.config.mode&&function(e){return!(\"range\"!==n.config.mode||n.selectedDates.length<2)&&(Ji(e,n.selectedDates[0])>=0&&Ji(e,n.selectedDates[1])<=0)}(t)&&!K(t)&&o.classList.add(\"inRange\"),n.weekNumbers&&1===n.config.showMonths&&\"prevMonthDay\"!==e&&l%7==6&&n.weekNumbers.insertAdjacentHTML(\"beforeend\",\"<span class='flatpickr-day'>\"+n.config.getWeek(t)+\"</span>\"),Y(\"onDayCreate\",o),o}function y(e){e.focus(),\"range\"===n.config.mode&&N(e)}function v(e){for(var t=e>0?0:n.config.showMonths-1,a=e>0?n.config.showMonths:-1,l=t;l!=a;l+=e)for(var r=n.daysContainer.children[l],o=e>0?0:r.children.length-1,i=e>0?r.children.length:-1,s=o;s!=i;s+=e){var c=r.children[s];if(-1===c.className.indexOf(\"hidden\")&&D(c.dateObj))return c}}function b(e,t){var l=a(),r=F(l||document.body),o=void 0!==e?e:r?l:void 0!==n.selectedDateElem&&F(n.selectedDateElem)?n.selectedDateElem:void 0!==n.todayDateElem&&F(n.todayDateElem)?n.todayDateElem:v(t>0?1:-1);void 0===o?n._input.focus():r?function(e,t){for(var a=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():n.currentMonth,l=t>0?n.config.showMonths:-1,r=t>0?1:-1,o=a-n.currentMonth;o!=l;o+=r)for(var i=n.daysContainer.children[o],s=a-n.currentMonth===o?e.$i+t:t<0?i.children.length-1:0,c=i.children.length,u=s;u>=0&&u<c&&u!=(t>0?c:-1);u+=r){var d=i.children[u];if(-1===d.className.indexOf(\"hidden\")&&D(d.dateObj)&&Math.abs(e.$i-u)>=Math.abs(t))return y(d)}n.changeMonth(r),b(v(r),0)}(o,t):y(o)}function k(e,t){for(var a=(new Date(e,t,1).getDay()-n.l10n.firstDayOfWeek+7)%7,l=n.utils.getDaysInMonth((t-1+12)%12,e),r=n.utils.getDaysInMonth(t,e),o=window.document.createDocumentFragment(),i=n.config.showMonths>1,s=i?\"prevMonthDay hidden\":\"prevMonthDay\",c=i?\"nextMonthDay hidden\":\"nextMonthDay\",u=l+1-a,d=0;u<=l;u++,d++)o.appendChild(g(\"flatpickr-day \"+s,new Date(e,t-1,u),0,d));for(u=1;u<=r;u++,d++)o.appendChild(g(\"flatpickr-day\",new Date(e,t,u),0,d));for(var h=r+1;h<=42-a&&(1===n.config.showMonths||d%7!=0);h++,d++)o.appendChild(g(\"flatpickr-day \"+c,new Date(e,t+1,h%r),0,d));var f=Bi(\"div\",\"dayContainer\");return f.appendChild(o),f}function w(){if(void 0!==n.daysContainer){Vi(n.daysContainer),n.weekNumbers&&Vi(n.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t<n.config.showMonths;t++){var a=new Date(n.currentYear,n.currentMonth,1);a.setMonth(n.currentMonth+t),e.appendChild(k(a.getFullYear(),a.getMonth()))}n.daysContainer.appendChild(e),n.days=n.daysContainer.firstChild,\"range\"===n.config.mode&&1===n.selectedDates.length&&N()}}function x(){if(!(n.config.showMonths>1||\"dropdown\"!==n.config.monthSelectorType)){n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML=\"\";for(var e=0;e<12;e++)if(a=e,!(void 0!==n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&a<n.config.minDate.getMonth()||void 0!==n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()&&a>n.config.maxDate.getMonth())){var t=Bi(\"option\",\"flatpickr-monthDropdown-month\");t.value=new Date(n.currentYear,e).getMonth().toString(),t.textContent=Gi(e,n.config.shorthandCurrentMonth,n.l10n),t.tabIndex=-1,n.currentMonth===e&&(t.selected=!0),n.monthsDropdownContainer.appendChild(t)}}var a}function _(){var e,t=Bi(\"div\",\"flatpickr-month\"),a=window.document.createDocumentFragment();n.config.showMonths>1||\"static\"===n.config.monthSelectorType?e=Bi(\"span\",\"cur-month\"):(n.monthsDropdownContainer=Bi(\"select\",\"flatpickr-monthDropdown-months\"),n.monthsDropdownContainer.setAttribute(\"aria-label\",n.l10n.monthAriaLabel),d(n.monthsDropdownContainer,\"change\",(function(e){var t=Ui(e),a=parseInt(t.value,10);n.changeMonth(a-n.currentMonth),Y(\"onMonthChange\")})),x(),e=n.monthsDropdownContainer);var l=Hi(\"cur-year\",{tabindex:\"-1\"}),r=l.getElementsByTagName(\"input\")[0];r.setAttribute(\"aria-label\",n.l10n.yearAriaLabel),n.config.minDate&&r.setAttribute(\"min\",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(r.setAttribute(\"max\",n.config.maxDate.getFullYear().toString()),r.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());var o=Bi(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(l),a.appendChild(o),t.appendChild(a),{container:t,yearElement:r,monthElement:e}}function C(){Vi(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(var e=n.config.showMonths;e--;){var t=_();n.yearElements.push(t.yearElement),n.monthElements.push(t.monthElement),n.monthNav.appendChild(t.container)}n.monthNav.appendChild(n.nextMonthNav)}function T(){n.weekdayContainer?Vi(n.weekdayContainer):n.weekdayContainer=Bi(\"div\",\"flatpickr-weekdays\");for(var e=n.config.showMonths;e--;){var t=Bi(\"div\",\"flatpickr-weekdaycontainer\");n.weekdayContainer.appendChild(t)}return S(),n.weekdayContainer}function S(){if(n.weekdayContainer){var e=n.l10n.firstDayOfWeek,t=hs(n.l10n.weekdays.shorthand);e>0&&e<t.length&&(t=hs(t.splice(e,t.length),t.splice(0,e)));for(var a=n.config.showMonths;a--;)n.weekdayContainer.children[a].innerHTML=\"\\n      <span class='flatpickr-weekday'>\\n        \"+t.join(\"</span><span class='flatpickr-weekday'>\")+\"\\n      </span>\\n      \"}}function $(e,t){void 0===t&&(t=!0);var a=t?e:e-n.currentMonth;a<0&&!0===n._hidePrevMonthArrow||a>0&&!0===n._hideNextMonthArrow||(n.currentMonth+=a,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,Y(\"onYearChange\"),x()),w(),Y(\"onMonthChange\"),Z())}function I(e){return n.calendarContainer.contains(e)}function R(e){if(n.isOpen&&!n.config.inline){var t=Ui(e),a=I(t),l=!(t===n.input||t===n.altInput||n.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(n.input)||~e.path.indexOf(n.altInput)))&&!a&&!I(e.relatedTarget),r=!n.config.ignoredFocusElements.some((function(e){return e.contains(t)}));l&&r&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement&&\"\"!==n.input.value&&void 0!==n.input.value&&o(),n.close(),n.config&&\"range\"===n.config.mode&&1===n.selectedDates.length&&n.clear(!1))}}function A(e){if(!(!e||n.config.minDate&&e<n.config.minDate.getFullYear()||n.config.maxDate&&e>n.config.maxDate.getFullYear())){var t=e,a=n.currentYear!==t;n.currentYear=t||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),a&&(n.redraw(),Y(\"onYearChange\"),x())}}function D(e,t){var a;void 0===t&&(t=!0);var l=n.parseDate(e,void 0,t);if(n.config.minDate&&l&&Ji(l,n.config.minDate,void 0!==t?t:!n.minDateHasTime)<0||n.config.maxDate&&l&&Ji(l,n.config.maxDate,void 0!==t?t:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&0===n.config.disable.length)return!0;if(void 0===l)return!1;for(var r=!!n.config.enable,o=null!==(a=n.config.enable)&&void 0!==a?a:n.config.disable,i=0,s=void 0;i<o.length;i++){if(\"function\"==typeof(s=o[i])&&s(l))return r;if(s instanceof Date&&void 0!==l&&s.getTime()===l.getTime())return r;if(\"string\"==typeof s){var c=n.parseDate(s,void 0,!0);return c&&c.getTime()===l.getTime()?r:!r}if(\"object\"==typeof s&&void 0!==l&&s.from&&s.to&&l.getTime()>=s.from.getTime()&&l.getTime()<=s.to.getTime())return r}return!r}function F(e){return void 0!==n.daysContainer&&(-1===e.className.indexOf(\"hidden\")&&-1===e.className.indexOf(\"flatpickr-disabled\")&&n.daysContainer.contains(e))}function E(e){var t=e.target===n._input,a=n._input.value.trimEnd()!==J();t&&a&&(!e.relatedTarget||!I(e.relatedTarget))&&n.setDate(n._input.value,!0,e.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function M(t){var l=Ui(t),r=n.config.wrap?e.contains(l):l===n._input,s=n.config.allowInput,c=n.isOpen&&(!s||!r),u=n.config.inline&&r&&!s;if(13===t.keyCode&&r){if(s)return n.setDate(n._input.value,!0,l===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),l.blur();n.open()}else if(I(l)||c||u){var d=!!n.timeContainer&&n.timeContainer.contains(l);switch(t.keyCode){case 13:d?(t.preventDefault(),o(),q()):H(t);break;case 27:t.preventDefault(),q();break;case 8:case 46:r&&!n.config.allowInput&&(t.preventDefault(),n.clear());break;case 37:case 39:if(d||r)n.hourElement&&n.hourElement.focus();else{t.preventDefault();var h=a();if(void 0!==n.daysContainer&&(!1===s||h&&F(h))){var f=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),$(f),b(v(1),0)):b(void 0,f)}}break;case 38:case 40:t.preventDefault();var m=40===t.keyCode?1:-1;n.daysContainer&&void 0!==l.$i||l===n.input||l===n.altInput?t.ctrlKey?(t.stopPropagation(),A(n.currentYear-m),b(v(1),0)):d||b(void 0,7*m):l===n.currentYearElement?A(n.currentYear-m):n.config.enableTime&&(!d&&n.hourElement&&n.hourElement.focus(),o(t),n._debouncedChange());break;case 9:if(d){var p=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter((function(e){return e})),g=p.indexOf(l);if(-1!==g){var y=p[g+(t.shiftKey?-1:1)];t.preventDefault(),(y||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(l)&&t.shiftKey&&(t.preventDefault(),n._input.focus())}}if(void 0!==n.amPM&&l===n.amPM)switch(t.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],i(),Q();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],i(),Q()}(r||I(l))&&Y(\"onKeyDown\",t)}function N(e,t){if(void 0===t&&(t=\"flatpickr-day\"),1===n.selectedDates.length&&(!e||e.classList.contains(t)&&!e.classList.contains(\"flatpickr-disabled\"))){for(var a=e?e.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),l=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),r=Math.min(a,n.selectedDates[0].getTime()),o=Math.max(a,n.selectedDates[0].getTime()),i=!1,s=0,c=0,u=r;u<o;u+=os.DAY)D(new Date(u),!0)||(i=i||u>r&&u<o,u<l&&(!s||u>s)?s=u:u>l&&(!c||u<c)&&(c=u));Array.from(n.rContainer.querySelectorAll(\"*:nth-child(-n+\"+n.config.showMonths+\") > .\"+t)).forEach((function(t){var r=t.dateObj.getTime(),o=s>0&&r<s||c>0&&r>c;if(o)return t.classList.add(\"notAllowed\"),void[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){t.classList.remove(e)}));i&&!o||([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){t.classList.remove(e)})),void 0!==e&&(e.classList.add(a<=n.selectedDates[0].getTime()?\"startRange\":\"endRange\"),l<a&&r===l?t.classList.add(\"startRange\"):l>a&&r===l&&t.classList.add(\"endRange\"),r>=s&&(0===c||r<=c)&&ns(r,l,a)&&t.classList.add(\"inRange\")))}))}}function P(){n.isOpen&&!n.config.static&&!n.config.inline&&B()}function z(e){return function(t){var a=n.config[\"_\"+e+\"Date\"]=n.parseDate(t,n.config.dateFormat),l=n.config[\"_\"+(\"min\"===e?\"max\":\"min\")+\"Date\"];void 0!==a&&(n[\"min\"===e?\"minDateHasTime\":\"maxDateHasTime\"]=a.getHours()>0||a.getMinutes()>0||a.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter((function(e){return D(e)})),!n.selectedDates.length&&\"min\"===e&&s(a),Q()),n.daysContainer&&(V(),void 0!==a?n.currentYearElement[e]=a.getFullYear().toString():n.currentYearElement.removeAttribute(e),n.currentYearElement.disabled=!!l&&void 0!==a&&l.getFullYear()===a.getFullYear())}}function L(){return n.config.wrap?e.querySelector(\"[data-input]\"):e}function O(){\"object\"!=typeof n.config.locale&&void 0===ms.l10ns[n.config.locale]&&n.config.errorHandler(new Error(\"flatpickr: invalid locale \"+n.config.locale)),n.l10n=ds(ds({},ms.l10ns.default),\"object\"==typeof n.config.locale?n.config.locale:\"default\"!==n.config.locale?ms.l10ns[n.config.locale]:void 0),Yi.D=\"(\"+n.l10n.weekdays.shorthand.join(\"|\")+\")\",Yi.l=\"(\"+n.l10n.weekdays.longhand.join(\"|\")+\")\",Yi.M=\"(\"+n.l10n.months.shorthand.join(\"|\")+\")\",Yi.F=\"(\"+n.l10n.months.longhand.join(\"|\")+\")\",Yi.K=\"(\"+n.l10n.amPM[0]+\"|\"+n.l10n.amPM[1]+\"|\"+n.l10n.amPM[0].toLowerCase()+\"|\"+n.l10n.amPM[1].toLowerCase()+\")\",void 0===ds(ds({},t),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===ms.defaultConfig.time_24hr&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=es(n),n.parseDate=ts({config:n.config,l10n:n.l10n})}function B(e){if(\"function\"!=typeof n.config.position){if(void 0!==n.calendarContainer){Y(\"onPreCalendarPosition\");var t=e||n._positionElement,a=Array.prototype.reduce.call(n.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),l=n.calendarContainer.offsetWidth,r=n.config.position.split(\" \"),o=r[0],i=r.length>1?r[1]:null,s=t.getBoundingClientRect(),c=window.innerHeight-s.bottom,u=\"above\"===o||\"below\"!==o&&c<a&&s.top>a,d=window.pageYOffset+s.top+(u?-a-2:t.offsetHeight+2);if(Oi(n.calendarContainer,\"arrowTop\",!u),Oi(n.calendarContainer,\"arrowBottom\",u),!n.config.inline){var h=window.pageXOffset+s.left,f=!1,m=!1;\"center\"===i?(h-=(l-s.width)/2,f=!0):\"right\"===i&&(h-=l-s.width,m=!0),Oi(n.calendarContainer,\"arrowLeft\",!f&&!m),Oi(n.calendarContainer,\"arrowCenter\",f),Oi(n.calendarContainer,\"arrowRight\",m);var p=window.document.body.offsetWidth-(window.pageXOffset+s.right),g=h+l>window.document.body.offsetWidth,y=p+l>window.document.body.offsetWidth;if(Oi(n.calendarContainer,\"rightMost\",g),!n.config.static)if(n.calendarContainer.style.top=d+\"px\",g)if(y){var v=function(){for(var e=null,t=0;t<document.styleSheets.length;t++){var n=document.styleSheets[t];if(n.cssRules){try{n.cssRules}catch(e){continue}e=n;break}}return null!=e?e:function(){var e=document.createElement(\"style\");return document.head.appendChild(e),e.sheet}()}();if(void 0===v)return;var b=window.document.body.offsetWidth,k=Math.max(0,b/2-l/2),w=v.cssRules.length,x=\"{left:\"+s.left+\"px;right:auto;}\";Oi(n.calendarContainer,\"rightMost\",!1),Oi(n.calendarContainer,\"centerMost\",!0),v.insertRule(\".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after\"+x,w),n.calendarContainer.style.left=k+\"px\",n.calendarContainer.style.right=\"auto\"}else n.calendarContainer.style.left=\"auto\",n.calendarContainer.style.right=p+\"px\";else n.calendarContainer.style.left=h+\"px\",n.calendarContainer.style.right=\"auto\"}}}else n.config.position(n,e)}function V(){n.config.noCalendar||n.isMobile||(x(),Z(),w())}function q(){n._input.focus(),-1!==window.navigator.userAgent.indexOf(\"MSIE\")||void 0!==navigator.msMaxTouchPoints?setTimeout(n.close,0):n.close()}function H(e){e.preventDefault(),e.stopPropagation();var t=qi(Ui(e),(function(e){return e.classList&&e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\")&&!e.classList.contains(\"notAllowed\")}));if(void 0!==t){var a=t,l=n.latestSelectedDateObj=new Date(a.dateObj.getTime()),r=(l.getMonth()<n.currentMonth||l.getMonth()>n.currentMonth+n.config.showMonths-1)&&\"range\"!==n.config.mode;if(n.selectedDateElem=a,\"single\"===n.config.mode)n.selectedDates=[l];else if(\"multiple\"===n.config.mode){var o=K(l);o?n.selectedDates.splice(parseInt(o),1):n.selectedDates.push(l)}else\"range\"===n.config.mode&&(2===n.selectedDates.length&&n.clear(!1,!1),n.latestSelectedDateObj=l,n.selectedDates.push(l),0!==Ji(l,n.selectedDates[0],!0)&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(i(),r){var s=n.currentYear!==l.getFullYear();n.currentYear=l.getFullYear(),n.currentMonth=l.getMonth(),s&&(Y(\"onYearChange\"),x()),Y(\"onMonthChange\")}if(Z(),w(),Q(),r||\"range\"===n.config.mode||1!==n.config.showMonths?void 0!==n.selectedDateElem&&void 0===n.hourElement&&n.selectedDateElem&&n.selectedDateElem.focus():y(a),void 0!==n.hourElement&&void 0!==n.hourElement&&n.hourElement.focus(),n.config.closeOnSelect){var c=\"single\"===n.config.mode&&!n.config.enableTime,u=\"range\"===n.config.mode&&2===n.selectedDates.length&&!n.config.enableTime;(c||u)&&q()}h()}}n.parseDate=ts({config:n.config,l10n:n.l10n}),n._handlers=[],n.pluginElements=[],n.loadedPlugins=[],n._bind=d,n._setHoursFromDate=s,n._positionCalendar=B,n.changeMonth=$,n.changeYear=A,n.clear=function(e,t){if(void 0===e&&(e=!0),void 0===t&&(t=!0),n.input.value=\"\",void 0!==n.altInput&&(n.altInput.value=\"\"),void 0!==n.mobileInput&&(n.mobileInput.value=\"\"),n.selectedDates=[],n.latestSelectedDateObj=void 0,!0===t&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),!0===n.config.enableTime){var a=Qi(n.config);c(a.hours,a.minutes,a.seconds)}n.redraw(),e&&Y(\"onChange\")},n.close=function(){n.isOpen=!1,n.isMobile||(void 0!==n.calendarContainer&&n.calendarContainer.classList.remove(\"open\"),void 0!==n._input&&n._input.classList.remove(\"active\")),Y(\"onClose\")},n.onMouseOver=N,n._createElement=Bi,n.createDay=g,n.destroy=function(){void 0!==n.config&&Y(\"onDestroy\");for(var e=n._handlers.length;e--;)n._handlers[e].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){var t=n.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type=\"text\",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove(\"flatpickr-input\"),n.input.removeAttribute(\"readonly\")),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete n[e]}catch(e){}}))},n.isEnabled=D,n.jumpToDate=f,n.updateValue=Q,n.open=function(e,t){if(void 0===t&&(t=n._positionElement),!0===n.isMobile){if(e){e.preventDefault();var a=Ui(e);a&&a.blur()}return void 0!==n.mobileInput&&(n.mobileInput.focus(),n.mobileInput.click()),void Y(\"onOpen\")}if(n._input.disabled||n.config.inline)return;var l=n.isOpen;n.isOpen=!0,l||(n.calendarContainer.classList.add(\"open\"),n._input.classList.add(\"active\"),Y(\"onOpen\"),B(t)),!0===n.config.enableTime&&!0===n.config.noCalendar&&!1===n.config.allowInput&&(void 0===e||!n.timeContainer.contains(e.relatedTarget))&&setTimeout((function(){return n.hourElement.select()}),50)},n.redraw=V,n.set=function(e,t){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(n.config,e),e)void 0!==U[a]&&U[a].forEach((function(e){return e()}));else n.config[e]=t,void 0!==U[e]?U[e].forEach((function(e){return e()})):$i.indexOf(e)>-1&&(n.config[e]=zi(t));n.redraw(),Q(!0)},n.setDate=function(e,t,a){if(void 0===t&&(t=!1),void 0===a&&(a=n.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return n.clear(t);j(e,a),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),f(void 0,t),s(),0===n.selectedDates.length&&n.clear(!1),Q(t),t&&Y(\"onChange\")},n.toggle=function(e){if(!0===n.isOpen)return n.close();n.open(e)};var U={locale:[O,S],showMonths:[C,r,T],minDate:[f],maxDate:[f],positionElement:[W],clickOpens:[function(){!0===n.config.clickOpens?(d(n._input,\"focus\",n.open),d(n._input,\"click\",n.open)):(n._input.removeEventListener(\"focus\",n.open),n._input.removeEventListener(\"click\",n.open))}]};function j(e,t){var a=[];if(e instanceof Array)a=e.map((function(e){return n.parseDate(e,t)}));else if(e instanceof Date||\"number\"==typeof e)a=[n.parseDate(e,t)];else if(\"string\"==typeof e)switch(n.config.mode){case\"single\":case\"time\":a=[n.parseDate(e,t)];break;case\"multiple\":a=e.split(n.config.conjunction).map((function(e){return n.parseDate(e,t)}));break;case\"range\":a=e.split(n.l10n.rangeSeparator).map((function(e){return n.parseDate(e,t)}))}else n.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));n.selectedDates=n.config.allowInvalidPreload?a:a.filter((function(e){return e instanceof Date&&D(e,!1)})),\"range\"===n.config.mode&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function G(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?n.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:n.parseDate(e.from,void 0),to:n.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function W(){n._positionElement=n.config.positionElement||n._input}function Y(e,t){if(void 0!==n.config){var a=n.config[e];if(void 0!==a&&a.length>0)for(var l=0;a[l]&&l<a.length;l++)a[l](n.selectedDates,n.input.value,n,t);\"onChange\"===e&&(n.input.dispatchEvent(X(\"change\")),n.input.dispatchEvent(X(\"input\")))}}function X(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!0),t}function K(e){for(var t=0;t<n.selectedDates.length;t++){var a=n.selectedDates[t];if(a instanceof Date&&0===Ji(a,e))return\"\"+t}return!1}function Z(){n.config.noCalendar||n.isMobile||!n.monthNav||(n.yearElements.forEach((function(e,t){var a=new Date(n.currentYear,n.currentMonth,1);a.setMonth(n.currentMonth+t),n.config.showMonths>1||\"static\"===n.config.monthSelectorType?n.monthElements[t].textContent=Gi(a.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+\" \":n.monthsDropdownContainer.value=a.getMonth().toString(),e.value=a.getFullYear().toString()})),n._hidePrevMonthArrow=void 0!==n.config.minDate&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYear<n.config.minDate.getFullYear()),n._hideNextMonthArrow=void 0!==n.config.maxDate&&(n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth+1>n.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function J(e){var t=e||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map((function(e){return n.formatDate(e,t)})).filter((function(e,t,a){return\"range\"!==n.config.mode||n.config.enableTime||a.indexOf(e)===t})).join(\"range\"!==n.config.mode?n.config.conjunction:n.l10n.rangeSeparator)}function Q(e){void 0===e&&(e=!0),void 0!==n.mobileInput&&n.mobileFormatStr&&(n.mobileInput.value=void 0!==n.latestSelectedDateObj?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):\"\"),n.input.value=J(n.config.dateFormat),void 0!==n.altInput&&(n.altInput.value=J(n.config.altFormat)),!1!==e&&Y(\"onValueUpdate\")}function ee(e){var t=Ui(e),a=n.prevMonthNav.contains(t),l=n.nextMonthNav.contains(t);a||l?$(a?-1:1):n.yearElements.indexOf(t)>=0?t.select():t.classList.contains(\"arrowUp\")?n.changeYear(n.currentYear+1):t.classList.contains(\"arrowDown\")&&n.changeYear(n.currentYear-1)}return function(){n.element=n.input=e,n.isOpen=!1,function(){var a=[\"wrap\",\"weekNumbers\",\"allowInput\",\"allowInvalidPreload\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],r=ds(ds({},JSON.parse(JSON.stringify(e.dataset||{}))),t),o={};n.config.parseDate=r.parseDate,n.config.formatDate=r.formatDate,Object.defineProperty(n.config,\"enable\",{get:function(){return n.config._enable},set:function(e){n.config._enable=G(e)}}),Object.defineProperty(n.config,\"disable\",{get:function(){return n.config._disable},set:function(e){n.config._disable=G(e)}});var i=\"time\"===r.mode;if(!r.dateFormat&&(r.enableTime||i)){var s=ms.defaultConfig.dateFormat||Ii.dateFormat;o.dateFormat=r.noCalendar||i?\"H:i\"+(r.enableSeconds?\":S\":\"\"):s+\" H:i\"+(r.enableSeconds?\":S\":\"\")}if(r.altInput&&(r.enableTime||i)&&!r.altFormat){var c=ms.defaultConfig.altFormat||Ii.altFormat;o.altFormat=r.noCalendar||i?\"h:i\"+(r.enableSeconds?\":S K\":\" K\"):c+\" h:i\"+(r.enableSeconds?\":S\":\"\")+\" K\"}Object.defineProperty(n.config,\"minDate\",{get:function(){return n.config._minDate},set:z(\"min\")}),Object.defineProperty(n.config,\"maxDate\",{get:function(){return n.config._maxDate},set:z(\"max\")});var u=function(e){return function(t){n.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=n.parseDate(t,\"H:i:S\")}};Object.defineProperty(n.config,\"minTime\",{get:function(){return n.config._minTime},set:u(\"min\")}),Object.defineProperty(n.config,\"maxTime\",{get:function(){return n.config._maxTime},set:u(\"max\")}),\"time\"===r.mode&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,o,r);for(var d=0;d<a.length;d++)n.config[a[d]]=!0===n.config[a[d]]||\"true\"===n.config[a[d]];$i.filter((function(e){return void 0!==n.config[e]})).forEach((function(e){n.config[e]=zi(n.config[e]||[]).map(l)})),n.isMobile=!n.config.disableMobile&&!n.config.inline&&\"single\"===n.config.mode&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(d=0;d<n.config.plugins.length;d++){var h=n.config.plugins[d](n)||{};for(var f in h)$i.indexOf(f)>-1?n.config[f]=zi(h[f]).map(l).concat(n.config[f]):void 0===r[f]&&(n.config[f]=h[f])}r.altInputClass||(n.config.altInputClass=L().className+\" \"+n.config.altInputClass),Y(\"onParseConfig\")}(),O(),function(){if(n.input=L(),!n.input)return void n.config.errorHandler(new Error(\"Invalid input element specified\"));n.input._type=n.input.type,n.input.type=\"text\",n.input.classList.add(\"flatpickr-input\"),n._input=n.input,n.config.altInput&&(n.altInput=Bi(n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type=\"text\",n.input.setAttribute(\"type\",\"hidden\"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute(\"readonly\",\"readonly\"),W()}(),function(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;var e=n.config.defaultDate||(\"INPUT\"!==n.input.nodeName&&\"TEXTAREA\"!==n.input.nodeName||!n.input.placeholder||n.input.value!==n.input.placeholder?n.input.value:null);e&&j(e,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()<n.now.getTime()?n.config.maxDate:n.now,n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth(),n.selectedDates.length>0&&(n.latestSelectedDateObj=n.selectedDates[0]),void 0!==n.config.minTime&&(n.config.minTime=n.parseDate(n.config.minTime,\"H:i\")),void 0!==n.config.maxTime&&(n.config.maxTime=n.parseDate(n.config.maxTime,\"H:i\")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}(),n.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=n.currentMonth),void 0===t&&(t=n.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:n.l10n.daysInMonth[e]}},n.isMobile||function(){var e=window.document.createDocumentFragment();if(n.calendarContainer=Bi(\"div\",\"flatpickr-calendar\"),n.calendarContainer.tabIndex=-1,!n.config.noCalendar){if(e.appendChild((n.monthNav=Bi(\"div\",\"flatpickr-months\"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=Bi(\"span\",\"flatpickr-prev-month\"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=Bi(\"span\",\"flatpickr-next-month\"),n.nextMonthNav.innerHTML=n.config.nextArrow,C(),Object.defineProperty(n,\"_hidePrevMonthArrow\",{get:function(){return n.__hidePrevMonthArrow},set:function(e){n.__hidePrevMonthArrow!==e&&(Oi(n.prevMonthNav,\"flatpickr-disabled\",e),n.__hidePrevMonthArrow=e)}}),Object.defineProperty(n,\"_hideNextMonthArrow\",{get:function(){return n.__hideNextMonthArrow},set:function(e){n.__hideNextMonthArrow!==e&&(Oi(n.nextMonthNav,\"flatpickr-disabled\",e),n.__hideNextMonthArrow=e)}}),n.currentYearElement=n.yearElements[0],Z(),n.monthNav)),n.innerContainer=Bi(\"div\",\"flatpickr-innerContainer\"),n.config.weekNumbers){var t=function(){n.calendarContainer.classList.add(\"hasWeeks\");var e=Bi(\"div\",\"flatpickr-weekwrapper\");e.appendChild(Bi(\"span\",\"flatpickr-weekday\",n.l10n.weekAbbreviation));var t=Bi(\"div\",\"flatpickr-weeks\");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),a=t.weekWrapper,l=t.weekNumbers;n.innerContainer.appendChild(a),n.weekNumbers=l,n.weekWrapper=a}n.rContainer=Bi(\"div\",\"flatpickr-rContainer\"),n.rContainer.appendChild(T()),n.daysContainer||(n.daysContainer=Bi(\"div\",\"flatpickr-days\"),n.daysContainer.tabIndex=-1),w(),n.rContainer.appendChild(n.daysContainer),n.innerContainer.appendChild(n.rContainer),e.appendChild(n.innerContainer)}n.config.enableTime&&e.appendChild(function(){n.calendarContainer.classList.add(\"hasTime\"),n.config.noCalendar&&n.calendarContainer.classList.add(\"noCalendar\");var e=Qi(n.config);n.timeContainer=Bi(\"div\",\"flatpickr-time\"),n.timeContainer.tabIndex=-1;var t=Bi(\"span\",\"flatpickr-time-separator\",\":\"),a=Hi(\"flatpickr-hour\",{\"aria-label\":n.l10n.hourAriaLabel});n.hourElement=a.getElementsByTagName(\"input\")[0];var l=Hi(\"flatpickr-minute\",{\"aria-label\":n.l10n.minuteAriaLabel});if(n.minuteElement=l.getElementsByTagName(\"input\")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=Ni(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),n.minuteElement.value=Ni(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():e.minutes),n.hourElement.setAttribute(\"step\",n.config.hourIncrement.toString()),n.minuteElement.setAttribute(\"step\",n.config.minuteIncrement.toString()),n.hourElement.setAttribute(\"min\",n.config.time_24hr?\"0\":\"1\"),n.hourElement.setAttribute(\"max\",n.config.time_24hr?\"23\":\"12\"),n.hourElement.setAttribute(\"maxlength\",\"2\"),n.minuteElement.setAttribute(\"min\",\"0\"),n.minuteElement.setAttribute(\"max\",\"59\"),n.minuteElement.setAttribute(\"maxlength\",\"2\"),n.timeContainer.appendChild(a),n.timeContainer.appendChild(t),n.timeContainer.appendChild(l),n.config.time_24hr&&n.timeContainer.classList.add(\"time24hr\"),n.config.enableSeconds){n.timeContainer.classList.add(\"hasSeconds\");var r=Hi(\"flatpickr-second\");n.secondElement=r.getElementsByTagName(\"input\")[0],n.secondElement.value=Ni(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():e.seconds),n.secondElement.setAttribute(\"step\",n.minuteElement.getAttribute(\"step\")),n.secondElement.setAttribute(\"min\",\"0\"),n.secondElement.setAttribute(\"max\",\"59\"),n.secondElement.setAttribute(\"maxlength\",\"2\"),n.timeContainer.appendChild(Bi(\"span\",\"flatpickr-time-separator\",\":\")),n.timeContainer.appendChild(r)}return n.config.time_24hr||(n.amPM=Bi(\"span\",\"flatpickr-am-pm\",n.l10n.amPM[Pi((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}()),Oi(n.calendarContainer,\"rangeMode\",\"range\"===n.config.mode),Oi(n.calendarContainer,\"animate\",!0===n.config.animate),Oi(n.calendarContainer,\"multiMonth\",n.config.showMonths>1),n.calendarContainer.appendChild(e);var r=void 0!==n.config.appendTo&&void 0!==n.config.appendTo.nodeType;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?\"inline\":\"static\"),n.config.inline&&(!r&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):void 0!==n.config.appendTo&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){var o=Bi(\"div\",\"flatpickr-wrapper\");n.element.parentNode&&n.element.parentNode.insertBefore(o,n.element),o.appendChild(n.element),n.altInput&&o.appendChild(n.altInput),o.appendChild(n.calendarContainer)}!n.config.static&&!n.config.inline&&(void 0!==n.config.appendTo?n.config.appendTo:window.document.body).appendChild(n.calendarContainer)}(),function(){if(n.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(n.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(t){return d(t,\"click\",n[e])}))})),n.isMobile)return void function(){var e=n.config.enableTime?n.config.noCalendar?\"time\":\"datetime-local\":\"date\";n.mobileInput=Bi(\"input\",n.input.className+\" flatpickr-mobile\"),n.mobileInput.tabIndex=1,n.mobileInput.type=e,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,\"Y-m-d\")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,\"Y-m-d\")),n.input.getAttribute(\"step\")&&(n.mobileInput.step=String(n.input.getAttribute(\"step\"))),n.input.type=\"hidden\",void 0!==n.altInput&&(n.altInput.type=\"hidden\");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(e){}d(n.mobileInput,\"change\",(function(e){n.setDate(Ui(e).value,!1,n.mobileFormatStr),Y(\"onChange\"),Y(\"onClose\")}))}();var e=Mi(P,50);if(n._debouncedChange=Mi(h,fs),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&d(n.daysContainer,\"mouseover\",(function(e){\"range\"===n.config.mode&&N(Ui(e))})),d(n._input,\"keydown\",M),void 0!==n.calendarContainer&&d(n.calendarContainer,\"keydown\",M),!n.config.inline&&!n.config.static&&d(window,\"resize\",e),void 0!==window.ontouchstart?d(window.document,\"touchstart\",R):d(window.document,\"mousedown\",R),d(window.document,\"focus\",R,{capture:!0}),!0===n.config.clickOpens&&(d(n._input,\"focus\",n.open),d(n._input,\"click\",n.open)),void 0!==n.daysContainer&&(d(n.monthNav,\"click\",ee),d(n.monthNav,[\"keyup\",\"increment\"],u),d(n.daysContainer,\"click\",H)),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement){var t=function(e){return Ui(e).select()};d(n.timeContainer,[\"increment\"],o),d(n.timeContainer,\"blur\",o,{capture:!0}),d(n.timeContainer,\"click\",m),d([n.hourElement,n.minuteElement],[\"focus\",\"click\"],t),void 0!==n.secondElement&&d(n.secondElement,\"focus\",(function(){return n.secondElement&&n.secondElement.select()})),void 0!==n.amPM&&d(n.amPM,\"click\",(function(e){o(e)}))}n.config.allowInput&&d(n._input,\"blur\",E)}(),(n.selectedDates.length||n.config.noCalendar)&&(n.config.enableTime&&s(n.config.noCalendar?n.latestSelectedDateObj:void 0),Q(!1)),r();var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!n.isMobile&&a&&B(),Y(\"onReady\")}(),n}function us(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],l=0;l<n.length;l++){var r=n[l];try{if(null!==r.getAttribute(\"data-fp-omit\"))continue;void 0!==r._flatpickr&&(r._flatpickr.destroy(),r._flatpickr=void 0),r._flatpickr=cs(r,t||{}),a.push(r._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}var ds,hs,fs,ms,ps,gs,ys,vs,bs=y((()=>{Fi(),Ei(),Li(),Ki(),is(),Zi(),ss(),ds=function(){return ds=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var l in t=arguments[n])Object.prototype.hasOwnProperty.call(t,l)&&(e[l]=t[l]);return e},ds.apply(this,arguments)},hs=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var a=Array(e),l=0;for(t=0;t<n;t++)for(var r=arguments[t],o=0,i=r.length;o<i;o++,l++)a[l]=r[o];return a},fs=300,\"undefined\"!=typeof HTMLElement&&\"undefined\"!=typeof HTMLCollection&&\"undefined\"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return us(this,e)},HTMLElement.prototype.flatpickr=function(e){return us([this],e)}),(ms=function(e,t){return\"string\"==typeof e?us(window.document.querySelectorAll(e),t):e instanceof Node?us([e],t):us(e,t)}).defaultConfig={},ms.l10ns={en:ds({},Ai),default:ds({},Ai)},ms.localize=function(e){ms.l10ns.default=ds(ds({},ms.l10ns.default),e)},ms.setDefaults=function(e){ms.defaultConfig=ds(ds({},ms.defaultConfig),e)},ms.parseDate=ts({}),ms.formatDate=es({}),ms.compareDates=Ji,\"undefined\"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return us(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(\"string\"==typeof e?parseInt(e,10):e))},\"undefined\"!=typeof window&&(window.flatpickr=ms),ps=ms})),ks=y((()=>{ed(),Ci(),x(),bs(),gs=k(ma()),Ma(),Nu(),ys=e=>{let t=e.replace(/y/g,\"Y\");return t=t.replace(/d/g,\"D\"),t=t.replace(/h/g,\"H\"),t=t.replace(/上午\\/下午/g,\"A\"),t=t.replace(/上午/g,\"A\"),t=t.replace(/下午/g,\"A\"),t=t.replace(/AM\\/PM/g,\"A\"),t=t.replace(/AM/g,\"A\"),t=t.replace(/PM/g,\"A\"),t=t.replace(/\\\"/g,\"\"),t.includes(\"A\")&&(t=t.replace(/H/g,\"h\")),t},vs={cellFocus:function(e,n,a){let l=t.visibledatarow[e],r=0==e?0:t.visibledatarow[e-1],o=t.visibledatacolumn[n],i=0==n?0:t.visibledatacolumn[n-1],s=Yu.mergeborer(t.flowdata,e,n),c=a.ct.fa||\"YYYY-MM-DD\",u=Ca(\"yyyy-MM-dd hh:mm:ss\",a.v),d=ys(c),h=!1,f=!1,m=!1,p=!0,g=!1;s&&(l=s.row[1],r=s.row[0],o=s.column[1],i=s.column[0]),$(\".cell-date-picker\").show().css({width:o-i+1,height:l-r+1,left:i,top:r}),/[上午下午]/.test(c)&&(g=!0),/[Hhms]/.test(d)&&(h=!0),/[YMD]/.test(d)||(f=!0),/s/.test(d)&&(m=!0),/A/.test(d)&&(p=!1);let y=ps(\"#luckysheet-input-box\",{allowInput:!1,noCalendar:f,enableSeconds:m,enableTime:h,dateFormat:d,time_24hr:p,defaultDate:u,onClose(){setTimeout((()=>{y.destroy()}),0)},parseDate:(e,t)=>(0,gs.default)(e).toDate(),formatDate:(e,t,n)=>g?(0,gs.default)(e).format(t).replace(\"AM\",\"上午\").replace(\"PM\",\"下午\"):(0,gs.default)(e).format(t),onChange:function(l,r){let o=xa(new Date(l));$(\"#luckysheet-rich-text-editor\").html(r),As(e,n,o,{isRefresh:!1}),Es(e,n,\"ct\",a.ct),h||wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1])}});$(\"#luckysheet-input-box\").click()}}}));function ws(e,n,a,l,r){if(!Wl(e,n,t.currentSheetIndex))return void $(\"#luckysheet-functionbox-cell\").blur();if(I()||!1===t.allowEdit||!yl.createHookFunction(\"cellEditBefore\",t.luckysheet_select_save))return;if(yo.saveParam(\"mv\",t.currentSheetIndex,{op:\"enterEdit\",range:t.luckysheet_select_save}),null!=sl.dataVerification&&null!=sl.dataVerification[e+\"_\"+n]){let t=sl.dataVerification[e+\"_\"+n];if(\"dropdown\"==t.type)sl.dropdownListShow();else if(\"checkbox\"==t.type)return}let o=xs(e,n,a),i=o.row,s=o.row_pre,c=o.col,u=o.col_pre,d=o.row_index,h=o.col_index;$(\"#luckysheet-dropCell-icon\").is(\":visible\")&&$(\"#luckysheet-dropCell-icon\").remove();let f=$(window).height(),m=$(window).width(),p=$(\"#\"+t.container).offset(),g=$(\"#luckysheet-cell-main\").scrollLeft(),y=$(\"#luckysheet-cell-main\").scrollTop();if(wr.isPivotRange(d,h))return;let v=u+p.left+t.rowHeaderWidth-g-2;null!=$l.freezenverticaldata&&n<=$l.freezenverticaldata[1]&&(v=u+p.left+t.rowHeaderWidth-2);let b=s+p.top+t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight-y-2;null!=$l.freezenhorizontaldata&&e<=$l.freezenhorizontaldata[1]&&(b=s+p.top+t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight-2);let k={\"min-width\":c-u+1-8,\"min-height\":i-s+1-4,\"max-width\":m+g-u-20-t.rowHeaderWidth,\"max-height\":f+y-s-20-15-t.toolbarHeight-t.infobarHeight-t.calculatebarHeight-t.sheetBarHeight-t.statisticBarHeight,left:v,top:b},w={transform:\"scale(\"+t.zoomRatio+\")\",\"transform-origin\":\"left top\",width:100/t.zoomRatio+\"%\",height:100/t.zoomRatio+\"%\"};t.luckysheetCellUpdate=[d,h],r||$(\"#luckysheet-rich-text-editor\").focus().select(),$(\"#luckysheet-input-box\").removeAttr(\"style\").css({\"background-color\":\"rgb(255, 255, 255)\",padding:\"0px 2px\",\"font-size\":`${t.defaultFontSize}pt`,right:\"auto\",\"overflow-y\":\"auto\",\"box-sizing\":\"initial\",display:\"flex\"}),(null!=$l.freezenverticaldata||null!=$l.freezenhorizontaldata)&&$(\"#luckysheet-input-box\").css(\"z-index\",10002),$(\"#luckysheet-input-box-index\").html(id(h)+(d+1)).hide(),$(\"#luckysheet-wa-functionbox-cancel, #luckysheet-wa-functionbox-confirm\").addClass(\"luckysheet-wa-calculate-active\");let x=\"\",_=!1;if(null!=a[d]&&null!=a[d][h]){let e=a[d][h],n=e.ht,r=\"left\",o=\"top\";\"0\"==n?(k={\"min-width\":c-u+1-8,\"min-height\":i-s+1-4,\"max-width\":2*m/3,\"max-height\":f+y-s-20-15-t.toolbarHeight-t.infobarHeight-t.calculatebarHeight-t.sheetBarHeight-t.statisticBarHeight,left:u+p.left+t.rowHeaderWidth-g-2,top:s+p.top+t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight-y-2},t.zoomRatio<1&&(r=\"center\"),_=!0):\"2\"==n&&(k={\"min-width\":c-u+1-8,\"min-height\":i-s+1-4,\"max-width\":c+p.left-g-8,\"max-height\":f+y-s-20-15-t.toolbarHeight-t.infobarHeight-t.calculatebarHeight-t.sheetBarHeight-t.statisticBarHeight,right:m-(p.left+(t.rowHeaderWidth-1)-g)-c,top:s+p.top+t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight-y-2},t.zoomRatio<1&&(r=\"right\")),\"0\"==e.vt?o=\"center\":\"2\"==e.vt&&(o=\"bottom\"),w[\"transform-origin\"]=r+\" \"+o,l||(Tn(e)?x=function(e,n,a){let l=Vn(e,n,a,\"ct\");if(null==a&&(a=t.flowdata),a[e][n],Sn(l)){let e=l.s,t=\"\";for(let n=0;n<e.length;n++){let a=e[n];null!=a.v&&(t+=\"<span index='\"+n+\"' style='\"+jn(a)+\"'>\"+a.v+\"</span>\")}return t}return\"\"}(d,h,a):null!=e.f?x=Vn(d,h,a,\"f\"):(x=Sa(d,h,a),\"1\"==e.qp&&(x=x&&\"\"+x)));let v=Yu.getStyleByCell(a,d,h);v=$(\"#luckysheet-input-box\").get(0).style.cssText+v,$(\"#luckysheet-input-box\").get(0).style.cssText=v,\"rgba(0, 0, 0, 0)\"==$(\"#luckysheet-input-box\").get(0).style.backgroundColor&&($(\"#luckysheet-input-box\").get(0).style.background=\"rgb(255,255,255)\")}else{let e=Xa.getComputeMap();var C=Xa.checksAF(d,h,e),T=ko.getComputeMap(),S=ko.checksCF(d,h,T);null!=S&&null!=S.cellColor?$(\"#luckysheet-input-box\").get(0).style.background=S.cellColor:null!=C&&($(\"#luckysheet-input-box\").get(0).style.background=C[1])}if(k[\"min-height\"]>k[\"max-height\"]&&(k[\"min-height\"]=k[\"max-height\"]),k[\"min-width\"]>k[\"max-width\"]&&(k[\"min-width\"]=k[\"max-width\"]),x=wi.xssDeal(x),!Yl(d,h,t.currentSheetIndex)&&x.length>0&&'<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span>'==x.substr(0,63)?$(\"#luckysheet-rich-text-editor\").html(\"\"):(x=wi.ltGtSignDeal(x),$(\"#luckysheet-rich-text-editor\").html(x),r||wn($(\"#luckysheet-rich-text-editor\")[0])),_){let e=$(\"#luckysheet-input-box\").width();e>k[\"max-width\"]&&(e=k[\"max-width\"]),e<k[\"min-width\"]&&(e=k[\"min-width\"]);let t=k.left-e/2+(c-u)/2;t<2&&(t=2),k.left=t-2}$(\"#luckysheet-input-box\").css(k),$(\"#luckysheet-rich-text-editor\").css(w),a[e][n]&&a[e][n].ct&&\"d\"==a[e][n].ct.t&&vs.cellFocus(e,n,a[e][n]),wi.rangetosheet=t.currentSheetIndex,wi.createRangeHightlight(),wi.rangeResizeTo=$(\"#luckysheet-rich-text-editor\"),$o()}function xs(e,n,a){let l=t.visibledatarow[e],r=e-1==-1?0:t.visibledatarow[e-1],o=t.visibledatacolumn[n],i=n-1==-1?0:t.visibledatacolumn[n-1];null==a&&(a=t.flowdata);let s=Yu.mergeborer(a,e,n);return s&&(l=s.row[1],r=s.row[0],e=s.row[2],o=s.column[1],i=s.column[0],n=s.column[2]),{row:l,row_pre:r,row_index:e,col:o,col_pre:i,col_index:n}}var _s,Cs,Ts=y((()=>{Vr(),Al(),ed(),To(),Ja(),ks(),cl(),dr(),_d(),E(),Yn(),Ma(),Ci(),Cn(),Io(),zn(),x(),_o(),kl()})),Ss=v(((e,t)=>{\"use strict\";var n=/[\"'&<>]/;t.exports=function(e){var t=\"\"+e,a=n.exec(t);if(!a)return t;var l,r=\"\",o=0,i=0;for(o=a.index;o<t.length;o++){switch(t.charCodeAt(o)){case 34:l=\"&quot;\";break;case 38:l=\"&amp;\";break;case 39:l=\"&#39;\";break;case 60:l=\"&lt;\";break;case 62:l=\"&gt;\";break;default:continue}i!==o&&(r+=t.substring(i,o)),i=o+1,r+=l}return i!==o?r+t.substring(i,o):r}})),$s=y((()=>{_d(),qt(),Et(),Xu(),_i(),E(),Ma(),Pa(),fo(),gn(),Co(),No(),x(),K(),dr(),_s=k(Ss()),Cs={createDialog:function(e){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-search-replace\").remove();let t=X(),n=t.findAndReplace,a=t.button,l='<div class=\"tabBox\"><span id=\"searchTab\">'+n.find+'</span><span id=\"replaceTab\">'+n.replace+'</span></div><div class=\"ctBox\"><div class=\"inputBox\"><div class=\"textboxs\" id=\"searchInput\">'+n.findTextbox+'：<input class=\"formulaInputFocus\" spellcheck=\"false\" value=\"\"/></div><div class=\"textboxs\" id=\"replaceInput\">'+n.replaceTextbox+'：<input class=\"formulaInputFocus\" spellcheck=\"false\" value=\"\"/></div><div class=\"checkboxs\"><div id=\"regCheck\"><input type=\"checkbox\"/><span>'+n.regexTextbox+'</span></div><div id=\"wordCheck\"><input type=\"checkbox\"/><span>'+n.wholeTextbox+'</span></div><div id=\"caseCheck\"><input type=\"checkbox\"/><span>'+n.distinguishTextbox+'</span></div></div></div><div class=\"btnBox\"><button id=\"replaceAllBtn\" class=\"btn btn-default\">'+n.allReplaceBtn+'</button><button id=\"replaceBtn\" class=\"btn btn-default\">'+n.replaceBtn+'</button><button id=\"searchAllBtn\" class=\"btn btn-default\">'+n.allFindBtn+'</button><button id=\"searchNextBtn\" class=\"btn btn-default\">'+n.findBtn+\"</button></div></div>\";$(\"body\").append(nd(kt,{id:\"luckysheet-search-replace\",addclass:\"luckysheet-search-replace\",title:\"\",content:l,botton:'<button class=\"btn btn-default luckysheet-model-close-btn\">'+a.close+\"</button>\",style:\"z-index:100003\",close:a.close}));let r=$(\"#luckysheet-search-replace\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",500).end(),o=r.outerHeight(),i=r.outerWidth(),s=$(window).width(),c=$(window).height(),u=$(document).scrollLeft(),d=$(document).scrollTop();$(\"#luckysheet-search-replace\").css({left:(s+u-i)/2,top:(c+d-o)/3}).show(),\"0\"==e?($(\"#luckysheet-search-replace #searchTab\").addClass(\"on\").siblings().removeClass(\"on\"),$(\"#luckysheet-search-replace #replaceInput\").hide(),$(\"#luckysheet-search-replace #replaceAllBtn\").hide(),$(\"#luckysheet-search-replace #replaceBtn\").hide()):\"1\"==e&&($(\"#luckysheet-search-replace #replaceTab\").addClass(\"on\").siblings().removeClass(\"on\"),$(\"#luckysheet-search-replace #replaceInput\").show(),$(\"#luckysheet-search-replace #replaceAllBtn\").show(),$(\"#luckysheet-search-replace #replaceBtn\").show())},init:function(){let e=this;$(document).off(\"click.SRtabBoxspan\").on(\"click.SRtabBoxspan\",\"#luckysheet-search-replace .tabBox span\",(function(){$(this).addClass(\"on\").siblings().removeClass(\"on\");let e=$(this).attr(\"id\");\"searchTab\"==e?($(\"#luckysheet-search-replace #replaceInput\").hide(),$(\"#luckysheet-search-replace #replaceAllBtn\").hide(),$(\"#luckysheet-search-replace #replaceBtn\").hide(),$(\"#luckysheet-search-replace #searchInput input\").focus()):\"replaceTab\"==e&&($(\"#luckysheet-search-replace #replaceInput\").show(),$(\"#luckysheet-search-replace #replaceAllBtn\").show(),$(\"#luckysheet-search-replace #replaceBtn\").show(),$(\"#luckysheet-search-replace #replaceInput input\").focus())})),$(document).off(\"keyup.SRsearchInput\").on(\"keyup.SRsearchInput\",\"#luckysheet-search-replace #searchInput input\",(function(t){t.keyCode==It.ENTER&&e.searchNext()})),$(document).off(\"click.SRsearchNextBtn\").on(\"click.SRsearchNextBtn\",\"#luckysheet-search-replace #searchNextBtn\",(function(){e.searchNext()})),$(document).off(\"click.SRsearchAllBtn\").on(\"click.SRsearchAllBtn\",\"#luckysheet-search-replace #searchAllBtn\",(function(){e.searchAll()})),$(document).off(\"click.SRsearchAllboxItem\").on(\"click.SRsearchAllboxItem\",\"#luckysheet-search-replace #searchAllbox .boxItem\",(function(){$(this).addClass(\"on\").siblings().removeClass(\"on\");let e=$(this).attr(\"data-row\"),n=$(this).attr(\"data-col\"),a=$(this).attr(\"data-sheetIndex\");a!=t.currentSheetIndex&&ki.changeSheetExec(a),t.luckysheet_select_save=[{row:[e,e],column:[n,n]}],Pu();let l=$(\"#luckysheet-cell-main\").scrollLeft(),r=$(\"#luckysheet-cell-main\").scrollTop(),o=$(\"#luckysheet-cell-main\").height(),i=$(\"#luckysheet-cell-main\").width(),s=t.visibledatarow[e],c=e-1==-1?0:t.visibledatarow[e-1],u=t.visibledatacolumn[n],d=n-1==-1?0:t.visibledatacolumn[n-1];u-l-i+20>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(u-i+20):d-l-20<0&&$(\"#luckysheet-scrollbar-x\").scrollLeft(d-20),s-r-o+20>0?$(\"#luckysheet-scrollbar-y\").scrollTop(s-o+20):c-r-20<0&&$(\"#luckysheet-scrollbar-y\").scrollTop(c-20)})),$(document).off(\"click.SRreplaceBtn\").on(\"click.SRreplaceBtn\",\"#luckysheet-search-replace #replaceBtn\",(function(){e.replace()})),$(document).off(\"click.SRreplaceAllBtn\").on(\"click.SRreplaceAllBtn\",\"#luckysheet-search-replace #replaceAllBtn\",(function(){e.replaceAll()}))},searchNext:function(){let e=$(\"#luckysheet-search-replace #searchInput input\").val();if(\"\"==e||null==e)return;let n,a=X().findAndReplace;n=0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]?[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}]:$.extend(!0,[],t.luckysheet_select_save);let l=this.getSearchIndexArr(e,n);if(0==l.length)return void(I()?alert(a.noFindTip):vo.info(a.noFindTip,\"\"));let r=0;if(0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]){if(0==t.luckysheet_select_save.length)r=0;else for(let e=0;e<l.length;e++)if(l[e].r==t.luckysheet_select_save[0].row[0]&&l[e].c==t.luckysheet_select_save[0].column[0]){r=e==l.length-1?0:e+1;break}t.luckysheet_select_save=[{row:[l[r].r,l[r].r],column:[l[r].c,l[r].c]}]}else{let e=n[n.length-1].row_focus,a=n[n.length-1].column_focus;for(let t=0;t<l.length;t++)if(l[t].r==e&&l[t].c==a){r=t==l.length-1?0:t+1;break}for(let e=0;e<n.length;e++){let t=n[e].row[0],a=n[e].row[1],o=n[e].column[0],i=n[e].column[1];if(l[r].r>=t&&l[r].r<=a&&l[r].c>=o&&l[r].c<=i){let t=n[e];t.row_focus=l[r].r,t.column_focus=l[r].c,n.splice(e,1),n.push(t);break}}t.luckysheet_select_save=n}Pu();let o=$(\"#luckysheet-cell-main\").scrollLeft(),i=$(\"#luckysheet-cell-main\").scrollTop(),s=$(\"#luckysheet-cell-main\").height(),c=$(\"#luckysheet-cell-main\").width(),u=t.visibledatarow[l[r].r],d=l[r].r-1==-1?0:t.visibledatarow[l[r].r-1],h=t.visibledatacolumn[l[r].c],f=l[r].c-1==-1?0:t.visibledatacolumn[l[r].c-1];h-o-c+20>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(h-c+20):f-o-20<0&&$(\"#luckysheet-scrollbar-x\").scrollLeft(f-20),u-i-s+20>0?$(\"#luckysheet-scrollbar-y\").scrollTop(u-s+20):d-i-20<0&&$(\"#luckysheet-scrollbar-y\").scrollTop(d-20),$(\"#searchAllbox\").is(\":visible\")&&$(\"#luckysheet-search-replace #searchAllbox .boxItem\").removeClass(\"on\")},searchAll:function(){let e=X().findAndReplace;$(\"#luckysheet-search-replace #searchAllbox\").remove();let n,a=$(\"#luckysheet-search-replace #searchInput input\").val();if(\"\"==a||null==a)return;n=[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}];let l=this.getSearchIndexArr(a,n);if(0==l.length)return void(I()?alert(e.noFindTip):vo.info(e.noFindTip,\"\"));let r=\"\";for(let e=0;e<l.length;e++){let n=Sa(l[e].r,l[e].c,t.flowdata).toString();n.indexOf(\"</\")>-1&&n.indexOf(\">\")>-1?r+='<div class=\"boxItem\" data-row=\"'+l[e].r+'\" data-col=\"'+l[e].c+'\" data-sheetIndex=\"'+t.currentSheetIndex+'\"><span>'+(0,_s.default)(t.luckysheetfile[Mt(t.currentSheetIndex)].name)+\"</span><span>\"+id(l[e].c)+(l[e].r+1)+\"</span><span>\"+(0,_s.default)(n)+\"</span></div>\":r+='<div class=\"boxItem\" data-row=\"'+l[e].r+'\" data-col=\"'+l[e].c+'\" data-sheetIndex=\"'+t.currentSheetIndex+'\"><span>'+t.luckysheetfile[Mt(t.currentSheetIndex)].name+\"</span><span>\"+id(l[e].c)+(l[e].r+1)+'</span><span title=\"'+(0,_s.default)(n)+'\">'+(0,_s.default)(n)+\"</span></div>\"}$(`<div id=\"searchAllbox\"><div class=\"boxTitle\"><span>${e.searchTargetSheet}</span><span>${e.searchTargetCell}</span><span>${e.searchTargetValue}</span></div><div class=\"boxMain\">${r}</div></div>`).appendTo($(\"#luckysheet-search-replace\")),$(\"#luckysheet-search-replace #searchAllbox .boxItem\").eq(0).addClass(\"on\").siblings().removeClass(\"on\"),t.luckysheet_select_save=[{row:[l[0].r,l[0].r],column:[l[0].c,l[0].c]}],Pu()},getSearchIndexArr:function(e,n){let a=[],l={},r=$(\"#luckysheet-search-replace\"),o=e=>r.find(`#${e} input[type='checkbox']`).is(\":checked\"),i=o(\"regCheck\"),s=o(\"wordCheck\"),c=o(\"caseCheck\"),u=\"g\";c||(e=e.toLowerCase(),u+=\"i\");let d=(e,t)=>{e+\"_\"+t in l||(l[e+\"_\"+t]=0,a.push({r:e,c:t}))};for(let a=0;a<n.length;a++){let l=n[a].row[0],r=n[a].row[1],o=n[a].column[0],h=n[a].column[1];for(let n=l;n<=r;n++)for(let a=o;a<=h;a++)if(null!=t.flowdata[n][a]){let l=Sa(n,a,t.flowdata);if(0==l&&(l=l.toString()),null!=l&&\"\"!=l){let t=!1;l=l.toString(),l=c?l:l.toLowerCase(),t=s?e==l:i?new RegExp(Eo.getRegExpStr(e),u).test(l):~l.indexOf(e),t&&d(n,a)}}}return a},replace:function(){let e=X().findAndReplace;if(!t.allowEdit)return void vo.info(e.modeTip,\"\");let n,a=$(\"#luckysheet-search-replace #searchInput input\").val();if(\"\"==a||null==a)return void(I()?alert(e.searchInputTip):vo.info(e.searchInputTip,\"\"));n=0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]?[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}]:$.extend(!0,[],t.luckysheet_select_save);let l=this.getSearchIndexArr(a,n);if(0==l.length)return void(I()?alert(e.noReplceTip):vo.info(e.noReplceTip,\"\"));let r=null,o=t.luckysheet_select_save[t.luckysheet_select_save.length-1],i=o.row_focus,s=o.column_focus;for(let e=0;e<l.length;e++)if(l[e].r==i&&l[e].c==s){r=e;break}if(null==r){if(0==l.length)return void(I()?alert(e.noMatchTip):vo.info(e.noMatchTip,\"\"));r=0}let c=!1;$(\"#luckysheet-search-replace #regCheck input[type='checkbox']\").is(\":checked\");let u=!1;$(\"#luckysheet-search-replace #wordCheck input[type='checkbox']\").is(\":checked\")&&(u=!0);let d=!1;$(\"#luckysheet-search-replace #caseCheck input[type='checkbox']\").is(\":checked\")&&(d=!0);let h,f,m=$(\"#luckysheet-search-replace #replaceInput input\").val(),p=mn.deepCopyFlowData(t.flowdata);if(u){h=l[r].r,f=l[r].c;let e=m;if(!Wl(h,f,t.currentSheetIndex))return;Na(h,f,p,e)}else{let e;if(e=d?new RegExp(Eo.getRegExpStr(a),\"g\"):new RegExp(Eo.getRegExpStr(a),\"ig\"),h=l[r].r,f=l[r].c,!Wl(h,f,t.currentSheetIndex))return;Na(h,f,p,Sa(h,f,p).toString().replace(e,m))}t.luckysheet_select_save=[{row:[h,h],column:[f,f]}],$(\"#luckysheet-search-replace #searchAllbox\").is(\":visible\")&&$(\"#luckysheet-search-replace #searchAllbox\").hide(),ao(p,t.luckysheet_select_save),Pu();let g=$(\"#luckysheet-cell-main\").scrollLeft(),y=$(\"#luckysheet-cell-main\").scrollTop(),v=$(\"#luckysheet-cell-main\").height(),b=$(\"#luckysheet-cell-main\").width(),k=t.visibledatarow[h],w=h-1==-1?0:t.visibledatarow[h-1],x=t.visibledatacolumn[f],_=f-1==-1?0:t.visibledatacolumn[f-1];x-g-b+20>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(x-b+20):_-g-20<0&&$(\"#luckysheet-scrollbar-x\").scrollLeft(_-20),k-y-v+20>0?$(\"#luckysheet-scrollbar-y\").scrollTop(k-v+20):w-y-20<0&&$(\"#luckysheet-scrollbar-y\").scrollTop(w-20)},replaceAll:function(){let e=X().findAndReplace;if(!t.allowEdit)return void vo.info(e.modeTip,\"\");let n,a=$(\"#luckysheet-search-replace #searchInput input\").val();if(\"\"==a||null==a)return void(I()?alert(e.searchInputTip):vo.info(e.searchInputTip,\"\"));n=0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]?[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}]:$.extend(!0,[],t.luckysheet_select_save);let l=this.getSearchIndexArr(a,n);if(0==l.length)return void(I()?alert(e.noReplceTip):vo.info(e.noReplceTip,\"\"));let r=!1;$(\"#luckysheet-search-replace #regCheck input[type='checkbox']\").is(\":checked\");let o=!1;$(\"#luckysheet-search-replace #wordCheck input[type='checkbox']\").is(\":checked\")&&(o=!0);let i=!1;$(\"#luckysheet-search-replace #caseCheck input[type='checkbox']\").is(\":checked\")&&(i=!0);let s=$(\"#luckysheet-search-replace #replaceInput input\").val(),c=mn.deepCopyFlowData(t.flowdata),u=0;if(o)for(let e=0;e<l.length;e++){let a=l[e].r,r=l[e].c;Wl(a,r,t.currentSheetIndex,!1)&&(Na(a,r,c,s),n.push({row:[a,a],column:[r,r]}),u++)}else{let e;e=i?new RegExp(Eo.getRegExpStr(a),\"g\"):new RegExp(Eo.getRegExpStr(a),\"ig\");for(let a=0;a<l.length;a++){let r=l[a].r,o=l[a].c;Wl(r,o,t.currentSheetIndex,!1)&&(Na(r,o,c,Sa(r,o,c).toString().replace(e,s)),n.push({row:[r,r],column:[o,o]}),u++)}}$(\"#luckysheet-search-replace #searchAllbox\").is(\":visible\")&&$(\"#luckysheet-search-replace #searchAllbox\").hide(),ao(c,n),t.luckysheet_select_save=$.extend(!0,[],n),Pu();let d=nd(e.successTip,{xlength:u});I()?alert(d):vo.info(d,\"\")}}})),Is={};function Rs(e,n,a={}){if(!C(e)||!C(n))return vo.info(\"Arguments row or column cannot be null or undefined.\",\"\");let l,r=Mt(t.currentSheetIndex),{type:o=\"v\",order:i=r}=g({},a),s=t.luckysheetfile[i].data[e][n];if(\"object\"==ad(s))if(l=s[o],\"f\"==o&&null!=l)l=wi.functionHTMLGenerate(l);else if(\"f\"==o)l=s.v;else if(s&&s.ct)if(\"yyyy-MM-dd\"==s.ct.fa)l=s.m;else if(s.ct.hasOwnProperty(\"t\")&&\"inlineStr\"===s.ct.t){let e=s.ct.s;e&&(l=e.map((e=>e.v)).join(\"\"))}return null==l&&(l=null),l}function As(e,n,a,l={}){if(!C(e)||!C(n))return vo.info(\"The row or column parameter is invalid.\",\"\");let{order:r=Mt(t.currentSheetIndex),isRefresh:o=!0,triggerBeforeUpdate:i=!0,triggerUpdated:s=!0,success:c}=g({},l),u=t.luckysheetfile[r];if(null==u)return vo.info(\"The order parameter is invalid.\",\"\");if(i&&!yl.createHookFunction(\"cellUpdateBefore\",e,n,a,o))return;let d,h=u.data;o&&(h=$.extend(!0,[],u.data)),0==h.length&&(h=ki.buildGridData(u)),t.flowdata[e]&&t.flowdata[e][n]&&(d=JSON.stringify(t.flowdata[e][n]));let f={bg:1,ff:1,fc:1,bl:1,it:1,fs:1,cl:1,un:1,vt:1,ht:1,mc:1,tr:1,tb:1,rt:1,qp:1};if(null==a||0==a.toString().length)wi.delFunctionGroup(e,n),Na(e,n,h,a);else if(a instanceof Object){let t={};_(h[e])&&(h[e]={}),_(h[e][n])&&(h[e][n]={});let l=h[e][n];null!=a.f&&null==a.v?(t.f=a.f,null!=a.ct&&(t.ct=a.ct),h=wi.updatecell(e,n,t,!1).data):(null!=a.ct&&(t.ct=a.ct),null!=a.f?t.f=a.f:wi.delFunctionGroup(e,n),null!=a.v?t.v=a.v:t.v=l.v,null!=a.m&&(t.m=a.m),Na(e,n,h,t));for(let t in a){let r=a[t];t in f?Yu.updateFormatCell(h,t,r,e,e,n,n):l[t]=r}h[e][n]=l}else\"=\"==a.toString().substr(0,1)||\"<span\"==a.toString().substr(0,5)?h=wi.updatecell(e,n,a,!1).data:(wi.delFunctionGroup(e,n),Na(e,n,h,a));setTimeout((()=>{let a;d&&(a=JSON.parse(d)),s&&yl.createHookFunction(\"cellUpdated\",e,n,a,t.flowdata[e][n],o)}),0),u.index==t.currentSheetIndex&&o?ao(h,[{row:[e,e],column:[n,n]}]):u.data=h,c&&\"function\"==typeof c&&c(h)}function Ds(e,n,a={}){if(!C(e)||!C(n))return vo.info(\"Arguments row and column cannot be null or undefined.\",\"\");let l=Mt(t.currentSheetIndex),{order:r=l,success:o}=g({},a),i=$.extend(!0,[],t.luckysheetfile[r].data),s=i[e][n];\"object\"==ad(s)?(delete s.m,delete s.v,null!=s.f&&(delete s.f,wi.delFunctionGroup(e,n,r),delete s.spl)):s=null,r===l?ao(i,[{row:[e,e],column:[n,n]}]):t.luckysheetfile[r].data=i,o&&\"function\"==typeof o&&o(s)}function Fs(e,n,a,l={}){if(!e||[\"left\",\"up\"].indexOf(e)<0)return vo.info(\"Arguments move cannot be null or undefined and its value must be 'left' or 'up'\",\"\");if(!C(n)||!C(a))return vo.info(\"Arguments row and column cannot be null or undefined.\",\"\");let r,o=Mt(t.currentSheetIndex),{order:i=o,success:s}=g({},l),c=\"move\"+e.replace(e[0],e[0].toUpperCase());i&&t.luckysheetfile[i]&&(r=t.luckysheetfile[i].index),fl(c,n,n,a,a,r),s&&\"function\"==typeof s&&s()}function Es(e,n,a,l,r={}){if(!C(e)||!C(n))return vo.info(\"Arguments row or column cannot be null or undefined.\",\"\");if(!a)return vo.info(\"Arguments attr cannot be null or undefined.\",\"\");let o=Mt(t.currentSheetIndex),{order:i=o,success:s}=g({},r),c=t.luckysheetfile[i];if(null==c)return vo.info(\"The order parameter is invalid.\",\"\");let u=$.extend(!0,[],c.data);0==u.length&&(u=ki.buildGridData(c));let d=u[e][n]||{},h=$.extend(!0,{},c.config);if(!(\"ct\"!=a||l&&l.hasOwnProperty(\"fa\")&&l.hasOwnProperty(\"t\")))return new TypeError(\"While set attribute 'ct' to cell, the value must have property 'fa' and 't'\");if(\"bd\"==a){null==h.borderInfo&&(h.borderInfo=[]);let t=g({rangeType:\"range\",borderType:\"border-all\",color:\"#000\",style:\"1\",range:[{column:[n,n],row:[e,e]}]},l);h.borderInfo.push(t)}else d[a]=l;u[e][n]=d,c.index==t.currentSheetIndex?(c.config=h,t.config=h,ao(u,[{row:[e,e],column:[n,n]}])):(c.config=h,c.data=u),s&&\"function\"==typeof s&&s(d)}function Ms(e,n={}){if(!e&&0!=e)return vo.info(\"Search content cannot be null or empty\",\"\");let a=Mt(t.currentSheetIndex),{isRegularExpression:l=!1,isWholeWord:r=!1,isCaseSensitive:o=!1,order:i=a,type:s=\"m\"}=g({},n),c=t.luckysheetfile[i].data,u=[];for(let t=0;t<c.length;t++){let n=c[t];for(let a=0;a<n.length;a++){let i=n[a];if(i)if(i.row=t,i.column=a,r)o?e.toString()==i[s]&&u.push(i):i[s]&&e.toString().toLowerCase()==i[s].toLowerCase()&&u.push(i);else if(l){let t;t=o?new RegExp(Eo.getRegExpStr(e),\"g\"):new RegExp(Eo.getRegExpStr(e),\"ig\"),t.test(i[s])&&u.push(i)}else o?new RegExp(Eo.getRegExpStr(e),\"g\").test(i[s])&&u.push(i):new RegExp(Eo.getRegExpStr(e),\"ig\").test(i[s])&&u.push(i)}}return u}function Ns(e,n,a={}){let l=Ms(e,a),r=Mt(t.currentSheetIndex),{order:o=r}=g({},a),i=t.luckysheetfile[o];if(null==i)return vo.info(\"The order parameter is invalid.\",\"\");let s=$.extend(!0,[],i.data);l.forEach((e=>{e.m=n,As(e.row,e.column,n,{order:o,isRefresh:!1})}));let c=$.extend(!0,[],i.data);return i.data.length=0,i.data.push(...s),i.index==t.currentSheetIndex&&ao(c,void 0,void 0,!0,!1),uo(),a.success&&\"function\"==typeof a.success&&a.success(l),l}function Ps(e={}){parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&($(\"#luckysheet-formula-search-c\").is(\":visible\")&&null!=wi.searchFunctionCell?wi.searchFunctionEnter($(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\")):(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),t.luckysheet_select_save=[{row:[t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[0]],column:[t.luckysheetCellUpdate[1],t.luckysheetCellUpdate[1]],row_focus:t.luckysheetCellUpdate[0],column_focus:t.luckysheetCellUpdate[1]}]),$(\"#luckysheet-search-formula-parm\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm\").hide(),$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm-select\").hide()),e.success&&\"function\"==typeof e.success&&e.success()}function zs(e={}){if(!$(\"#luckysheet-conditionformat-dialog\").is(\":visible\")){if($(\"#luckysheet-cell-selected\").is(\":visible\")){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata)}e.success&&\"function\"==typeof e.success&&e.success()}}function Ls(e){if($l.saveFrozen(\"freezenRow\",e),!e||e==Mt(t.currentSheetIndex)){let e,n,a;if($l.freezenRealFirstRowColumn){let n=0;a=t.visibledatarow[n]-2+t.columnHeaderHeight,e=[t.visibledatarow[n],n+1,0,$l.cutVolumn(t.visibledatarow,n+1),a]}else{let l=$(\"#luckysheet-cell-main\").scrollTop();n=Xn(t.visibledatarow,l),-1==n&&(n=0),a=t.visibledatarow[n]-2-l+t.columnHeaderHeight,e=[t.visibledatarow[n],n+1,l,$l.cutVolumn(t.visibledatarow,n+1),a]}$l.saveFreezen(e,a,null,null),null!=$l.freezenverticaldata&&($l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),$l.createFreezenHorizontal(e,a),$l.createAssistCanvas(),uo()}}function Os(e){if($l.saveFrozen(\"freezenColumn\",e),!e||e==Mt(t.currentSheetIndex)){let e,n,a;if($l.freezenRealFirstRowColumn)n=0,a=t.visibledatacolumn[n]-2+t.rowHeaderWidth,e=[t.visibledatacolumn[n],n+1,0,$l.cutVolumn(t.visibledatacolumn,n+1),a];else{let l=$(\"#luckysheet-cell-main\").scrollLeft();n=Xn(t.visibledatacolumn,l),-1==n&&(n=0),a=t.visibledatacolumn[n]-2-l+t.rowHeaderWidth,e=[t.visibledatacolumn[n],n+1,l,$l.cutVolumn(t.visibledatacolumn,n+1),a]}$l.saveFreezen(null,null,e,a),null!=$l.freezenhorizontaldata&&($l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo()),$l.createFreezenVertical(e,a),$l.createAssistCanvas(),uo()}}function Bs(e,n){let a=X().freezen;if(e&&(e.hasOwnProperty(\"row_focus\")||wi.iscelldata(e))){if(\"string\"==typeof e&&wi.iscelldata(e)&&(e={row_focus:(e=wi.getcellrange(e)).row[0],column_focus:e.column[0]}),$l.saveFrozen(\"freezenRowRange\",n,e),!n||n==Mt(t.currentSheetIndex)){let n=$(\"#luckysheet-cell-main\").scrollTop(),a=Xn(t.visibledatarow,n),l=e.row_focus;l>a&&(a=l),-1==a&&(a=0);let r=t.visibledatarow[a]-2-n+t.columnHeaderHeight,o=[t.visibledatarow[a],a+1,n,$l.cutVolumn(t.visibledatarow,a+1),r];$l.saveFreezen(o,r,null,null),null!=$l.freezenverticaldata&&($l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),$l.createFreezenHorizontal(o,r),$l.createAssistCanvas(),uo()}}else I()?alert(a.noSeletionError):vo.info(a.noSeletionError,\"\")}function Vs(e,n){let a=X().freezen,l=\"string\"==typeof e&&wi.iscelldata(e);if(e&&(e.hasOwnProperty(\"column_focus\")||l)){if(l&&(e={row_focus:(e=wi.getcellrange(e)).row[0],column_focus:e.column[0]}),$l.saveFrozen(\"freezenColumnRange\",n,e),!n||n==Mt(t.currentSheetIndex)){let n=$(\"#luckysheet-cell-main\").scrollLeft(),a=Xn(t.visibledatacolumn,n),l=e.column_focus;l>a&&(a=l),-1==a&&(a=0);let r=t.visibledatacolumn[a]-2-n+t.rowHeaderWidth,o=[t.visibledatacolumn[a],a+1,n,$l.cutVolumn(t.visibledatacolumn,a+1),r];$l.saveFreezen(null,null,o,r),null!=$l.freezenhorizontaldata&&($l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo()),$l.createFreezenVertical(o,r),$l.createAssistCanvas(),uo()}}else I()?alert(a.noSeletionError):vo.info(a.noSeletionError,\"\")}function qs(e){$l.saveFrozen(\"freezenCancel\",e),(!e||e==Mt(t.currentSheetIndex))&&(null!=$l.freezenverticaldata&&$l.cancelFreezenVertical(),null!=$l.freezenhorizontaldata&&$l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo())}function Hs(e,n={}){let a=Mt(t.currentSheetIndex),{range:l,order:r=a,success:o}=g({},n);qs(r),e?Bs(l,r):Ls(r),o&&\"function\"==typeof o&&o()}function Us(e,n={}){let a=Mt(t.currentSheetIndex),{range:l,order:r=a,success:o}=g({},n);qs(r),e?Vs(l,r):Os(r),o&&\"function\"==typeof o&&o()}function js(e,n={}){let a=Mt(t.currentSheetIndex),{range:l,order:r=a,success:o}=g({},n),i=!r||r==Mt(t.currentSheetIndex),s=X().freezen;if(qs(r),e){$l.saveFrozen(\"freezenRCRange\",r,l);let e=\"string\"==typeof l&&wi.iscelldata(l);if(i){if(!(l&&l.hasOwnProperty(\"column_focus\")&&l.hasOwnProperty(\"row_focus\")||e))return void(I()?alert(s.noSeletionError):vo.info(s.noSeletionError,\"\"));e&&(l=wi.getcellrange(l),l={row_focus:l.row[0],column_focus:l.column[0]});let n=$(\"#luckysheet-cell-main\").scrollTop(),a=Xn(t.visibledatarow,n),r=l.row_focus;r>a&&(a=r),-1==a&&(a=0);let o=t.visibledatarow[a]-2-n+t.columnHeaderHeight,i=[t.visibledatarow[a],a+1,n,$l.cutVolumn(t.visibledatarow,a+1),o];$l.saveFreezen(i,o,null,null),$l.createFreezenHorizontal(i,o);let c=$(\"#luckysheet-cell-main\").scrollLeft(),u=Xn(t.visibledatacolumn,c),d=l.column_focus;d>u&&(u=d),-1==u&&(u=0);let h=t.visibledatacolumn[u]-2-c+t.rowHeaderWidth,f=[t.visibledatacolumn[u],u+1,c,$l.cutVolumn(t.visibledatacolumn,u+1),h];$l.saveFreezen(null,null,f,h),$l.createFreezenVertical(f,h),$l.createAssistCanvas(),uo()}}else if($l.saveFrozen(\"freezenRC\",r),i){let e=$(\"#luckysheet-cell-main\").scrollTop(),n=Xn(t.visibledatarow,e);-1==n&&(n=0);let a=t.visibledatarow[n]-2-e+t.columnHeaderHeight,l=[t.visibledatarow[n],n+1,e,$l.cutVolumn(t.visibledatarow,n+1),a];$l.saveFreezen(l,a,null,null),$l.createFreezenHorizontal(l,a);let r=$(\"#luckysheet-cell-main\").scrollLeft(),o=Xn(t.visibledatacolumn,r);-1==o&&(o=0);let i=t.visibledatacolumn[o]-2-r+t.rowHeaderWidth,s=[t.visibledatacolumn[o],o+1,r,$l.cutVolumn(t.visibledatacolumn,o+1),i];$l.saveFreezen(null,null,s,i),$l.createFreezenVertical(s,i),$l.createAssistCanvas(),uo()}}function Gs(e,n=0,a={}){if(!C(n))return vo.info(\"The index parameter is invalid.\",\"\");let l,r=Mt(t.currentSheetIndex),{number:o=1,order:i=r,success:s}=g({},a),c=X().info;C(o)?(o=parseInt(o),o<1||o>100?I()?alert(c.tipInputNumberLimit):vo.info(c.tipInputNumberLimit,\"\"):(isNaN(i)||t.luckysheetfile[i]&&(l=t.luckysheetfile[i].index),ul(e,n,o,\"lefttop\",l),s&&\"function\"==typeof s&&s())):I()?alert(c.tipInputNumber):vo.info(c.tipInputNumber,\"\")}function Ws(e,n=0,a={}){if(!C(n))return vo.info(\"The index parameter is invalid.\",\"\");let l,r=Mt(t.currentSheetIndex),{number:o=1,order:i=r,success:s}=g({},a),c=X().info;C(o)?(o=parseInt(o),o<1||o>100?I()?alert(c.tipInputNumberLimit):vo.info(c.tipInputNumberLimit,\"\"):(i&&t.luckysheetfile[i]&&(l=t.luckysheetfile[i].index),ul(e,n,o,\"rightbottom\",l),s&&\"function\"==typeof s&&s())):I()?alert(c.tipInputNumber):vo.info(c.tipInputNumber,\"\")}function Ys(e=0,t={}){Gs(\"row\",e,t)}function Xs(e=0,t={}){Ws(\"row\",e,t)}function Ks(e=0,t={}){Gs(\"column\",e,t)}function Zs(e=0,t={}){Ws(\"column\",e,t)}function Js(e,n,a,l={}){if(!C(n)||!C(a))return vo.info(\"Please enter the index for deleting rows or columns correctly.\",\"\");let r,o=Mt(t.currentSheetIndex),{order:i=o,success:s}=g({},l);i&&t.luckysheetfile[i]&&(r=t.luckysheetfile[i].index),hl(e,n,a,r),s&&\"function\"==typeof s&&s()}function Qs(e,t,n={}){Js(\"row\",e,t,n)}function ec(e,t,n={}){Js(\"column\",e,t,n)}function tc(e,n,a,l={}){if(!C(n)||!C(a))return vo.info(\"Please enter the index for deleting rows or columns correctly.\",\"\");let r=Mt(t.currentSheetIndex),{order:o=r,saveParam:i=!0,success:s}=g({},l),c=t.luckysheetfile[o],u=\"row\"===e?\"rowhidden\":\"colhidden\",d=$.extend(!0,{},c.config);null==d[u]&&(d[u]={});for(let e=n;e<=a;e++)d[u][e]=0;if(t.clearjfundo){let n={};n.type=\"row\"===e?\"showHidRows\":\"showHidCols\",n.sheetIndex=c.index,n.config=$.extend(!0,{},c.config),n.curconfig=d,t.jfundo.length=0,t.jfredo.push(n)}t.luckysheetfile[o].config=d,i&&yo.saveParam(\"cg\",c.index,d[u],{k:u}),o==r&&(t.config=d,co(t.flowdata.length,t.flowdata[0].length)),s&&\"function\"==typeof s&&s()}function nc(e,n,a,l={}){if(!C(n)||!C(a))return vo.info(\"Please enter the index for deleting rows or columns correctly.\",\"\");let r=Mt(t.currentSheetIndex),{order:o=r,saveParam:i=!0,success:s}=g({},l),c=t.luckysheetfile[o],u=\"row\"===e?\"rowhidden\":\"colhidden\",d=$.extend(!0,{},c.config);if(null!=d[u]){for(let e=n;e<=a;e++)delete d[u][e];if(t.clearjfundo){let n={};n.type=\"row\"===e?\"showHidRows\":\"showHidCols\",n.sheetIndex=c.index,n.config=$.extend(!0,{},c.config),n.curconfig=d,t.jfundo.length=0,t.jfredo.push(n)}t.luckysheetfile[o].config=t.config,i&&yo.saveParam(\"cg\",c.index,d[u],{k:u}),o===r&&(t.config=d,co(t.flowdata.length,t.flowdata[0].length)),s&&\"function\"==typeof s&&s()}}function ac(e,t,n={}){tc(\"row\",e,t,n)}function lc(e,t,n={}){nc(\"row\",e,t,n)}function rc(e,t,n={}){tc(\"column\",e,t,n)}function oc(e,t,n={}){nc(\"column\",e,t,n)}function ic(e,n={}){if(\"object\"!=ad(e))return vo.info(\"The rowInfo parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.config);null==o.rowlen&&(o.rowlen={});for(let t in e)if(parseInt(t)>=0){let n=e[t];\"auto\"===n?o.rowlen[parseInt(t)]=n:Number(n)>=0&&(o.rowlen[parseInt(t)]=Number(n))}r.config=o,yo.saveParam(\"cg\",r.index,o.rowlen,{k:\"rowlen\"}),r.index==t.currentSheetIndex&&(t.config=o,co(t.flowdata.length,t.flowdata[0].length)),l&&\"function\"==typeof l&&l()}function sc(e,n={}){if(\"object\"!=ad(e))return vo.info(\"The columnInfo parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.config);null==o.columnlen&&(o.columnlen={});for(let t in e)if(parseInt(t)>=0){let n=e[t];\"auto\"===n?o.columnlen[parseInt(t)]=n:Number(n)>=0&&(o.columnlen[parseInt(t)]=Number(n))}r.config=o,yo.saveParam(\"cg\",r.index,o.columnlen,{k:\"columnlen\"}),r.index==t.currentSheetIndex&&(t.config=o,co(t.flowdata.length,t.flowdata[0].length)),l&&\"function\"==typeof l&&l()}function cc(e,n={}){if(\"array\"!=ad(e)||0==e.length)return vo.info(\"The rowInfo parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.config).rowlen||{},i={};return e.forEach((e=>{if(parseInt(e)>=0){let n=o[parseInt(e)]||t.defaultrowlen;i[parseInt(e)]=n}})),setTimeout((()=>{l&&\"function\"==typeof l&&l()}),1),i}function uc(e,n={}){if(\"array\"!=ad(e)||0==e.length)return vo.info(\"The columnInfo parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.config).columnlen||{},i={};return e.forEach((e=>{if(parseInt(e)>=0){let n=o[parseInt(e)]||t.defaultcollen;i[parseInt(e)]=n}})),setTimeout((()=>{l&&\"function\"==typeof l&&l()}),1),i}function dc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e);return setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),t.luckysheetfile[n].defaultRowHeight||t.defaultrowlen}function hc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e);return setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),t.luckysheetfile[n].defaultColWidth||t.defaultcollen}function fc(){let e=JSON.parse(JSON.stringify(t.luckysheet_select_save)),n=[];for(let t=0;t<e.length;t++){let a=e[t],l={row:a.row,column:a.column};n.push(l)}return n}function mc(e){e=e||fc();let t=[];return e.forEach((e=>{let n=e.row,a=e.column;for(let e=n[0];e<=n[1];e++)for(let n=a[0];n<=a[1];n++)t.push({r:e,c:n})})),t}function pc(e){e=e||mc();let n=[];return e.forEach((e=>{n.push(t.flowdata[e.r][e.c])})),n}function gc(){let e=[],n=JSON.parse(JSON.stringify(t.luckysheet_select_save)),a=t.currentSheetIndex;return n.forEach((t=>{let n=Nt(a,{column:t.column,row:t.row});e.push(n)})),e}function yc(e={}){let n=Mt(t.currentSheetIndex),{range:a,order:l=n}=g({},e),r=t.luckysheetfile[l];if(!a||\"object\"==typeof a)return Ln(a,r.index);if(\"string\"==typeof a){if(wi.iscelldata(a))return Ln(wi.getcellrange(a),r.index);vo.info(\"The range is invalid, please check range parameter.\",\"\")}}function vc(e={}){let{range:n=t.luckysheet_select_save,order:a=Mt(t.currentSheetIndex),success:l}=g({},e);if(n=JSON.parse(JSON.stringify(n)),\"string\"==ad(n)){if(!wi.iscelldata(n))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(n);n=[{row:e.row,column:e.column}]}else if(\"object\"==ad(n)){if(null==n.row||null==n.column)return vo.info(\"The range parameter is invalid.\",\"\");n=[{row:n.row,column:n.column}]}if(\"array\"!=ad(n))return vo.info(\"The range parameter is invalid.\",\"\");let r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.config);if(null!=o.merge){let e=!1;for(let t=0;t<n.length;t++){if(e=A(o,n[t].row[0],n[t].row[1],n[t].column[0],n[t].column[1]),e)break}if(e)return vo.info(\"Cannot perform this operation on partially merged cells\",\"\")}let i=$.extend(!0,[],r.luckysheet_conditionformat_save);if(n.length>1&&i.length>0){let e=!1,t=ko.getComputeMap(r.index);for(let a=0;a<n.length;a++){let l=n[a].row[0],r=n[a].row[1],o=n[a].column[0],i=n[a].column[1];for(let n=l;n<=r;n++){for(let a=o;a<=i;a++)if(null!=ko.checksCF(n,a,t)){e=!0;break}if(e)break}if(e)break}if(e)return vo.info(\"Cannot perform this operation on multiple selection areas, please select a single area\",\"\")}if(n.length>1){let e=!0,t=n[0].row[0],a=n[0].row[1],l=!0,r=n[0].column[0],o=n[0].column[1];for(let i=1;i<n.length;i++)(n[i].row[0]!=t||n[i].row[1]!=a)&&(e=!1),(n[i].column[0]!=r||n[i].column[1]!=o)&&(l=!1);if(!e&&!l||Ou(n))return vo.info(\"Cannot perform this operation on multiple selection areas, please select a single area\",\"\")}let s,c=[],u=[];for(let e=0;e<n.length;e++){let t=n[e].row[0],a=n[e].row[1],l=n[e].column[0],r=n[e].column[1];for(let e=t;e<=a;e++)if(null==o.rowhidden||null==o.rowhidden[e]){c.includes(e)||c.push(e);for(let e=l;e<=r;e++)null!=o.colhidden&&null!=o.colhidden[e]||u.includes(e)||u.push(e)}}o.borderInfo&&o.borderInfo.length>0&&(s=_l(r.index));let d=r.data;(null==d||0==d.length)&&(d=ki.buildGridData(r));let h=\"\",f=\"\";c=c.sort(((e,t)=>e-t)),u=u.sort(((e,t)=>e-t));for(let e=0;e<c.length;e++){let t=c[e];if(null==o.rowhidden||null==o.rowhidden[t]){h+=\"<tr>\";for(let e=0;e<u.length;e++){let n=u[e];if(null!=o.colhidden&&null!=o.colhidden[n])continue;let a='<td ${span} style=\"${style}\">';if(null!=d[t]&&null!=d[t][n]){let e=\"\",l=\"\";t==c[0]&&(null==o.columnlen||null==o.columnlen[n.toString()]?f+='<colgroup width=\"72px\"></colgroup>':f+='<colgroup width=\"'+o.columnlen[n.toString()]+'px\"></colgroup>'),n==u[0]&&(null==o.rowlen||null==o.rowlen[t.toString()]?e+=\"height:19px;\":e+=\"height:\"+o.rowlen[t.toString()]+\"px;\");let r,i=/^(w|W)((0?)|(0\\.0+))$/;if(r=null!=d[t][n].ct&&null!=d[t][n].ct.fa&&d[t][n].ct.fa.match(i)?Vn(t,n,d):Vn(t,n,d,\"m\"),e+=Yu.getStyleByCell(d,t,n),\"object\"==ad(d[t][n])&&\"mc\"in d[t][n]){if(!(\"rs\"in d[t][n].mc))continue;if(l='rowspan=\"'+d[t][n].mc.rs+'\" colspan=\"'+d[t][n].mc.cs+'\"',s&&s[t+\"_\"+n]){let a={color:{},style:{}},l={color:{},style:{}},r={color:{},style:{}},o={color:{},style:{}};for(let e=t;e<t+d[t][n].mc.rs;e++)for(let i=n;i<n+d[t][n].mc.cs;i++){if(e==t&&s[e+\"_\"+i]&&s[e+\"_\"+i].t){let t=s[e+\"_\"+i].t.style,n=s[e+\"_\"+i].t.color;null==r.style[t]?r.style[t]=1:r.style[t]=r.style[t]+1,null==r.color[n]?r.color[n]=1:r.color[n]=r.color[n]+1}if(e==t+d[t][n].mc.rs-1&&s[e+\"_\"+i]&&s[e+\"_\"+i].b){let t=s[e+\"_\"+i].b.style,n=s[e+\"_\"+i].b.color;null==o.style[t]?o.style[t]=1:o.style[t]=o.style[t]+1,null==o.color[n]?o.color[n]=1:o.color[n]=o.color[n]+1}if(i==n&&s[e+\"_\"+i]&&s[e+\"_\"+i].l){let l=s[t+\"_\"+n].l.style,r=s[e+\"_\"+i].l.color;null==a.style[l]?a.style[l]=1:a.style[l]=a.style[l]+1,null==a.color[r]?a.color[r]=1:a.color[r]=a.color[r]+1}if(i==n+d[t][n].mc.cs-1&&s[e+\"_\"+i]&&s[e+\"_\"+i].r){let t=s[e+\"_\"+i].r.style,n=s[e+\"_\"+i].r.color;null==l.style[t]?l.style[t]=1:l.style[t]=l.style[t]+1,null==l.color[n]?l.color[n]=1:l.color[n]=l.color[n]+1}}let i=d[t][n].mc.rs,c=d[t][n].mc.cs;if(JSON.stringify(a).length>23){let t=null,n=null;for(let e in a.color)a.color[e]>=i/2&&(t=e);for(let e in a.style)a.style[e]>=i/2&&(n=e);null!=t&&null!=n&&(e+=\"border-left:\"+wo.getHtmlBorderStyle(n,t))}if(JSON.stringify(l).length>23){let t=null,n=null;for(let e in l.color)l.color[e]>=i/2&&(t=e);for(let e in l.style)l.style[e]>=i/2&&(n=e);null!=t&&null!=n&&(e+=\"border-right:\"+wo.getHtmlBorderStyle(n,t))}if(JSON.stringify(r).length>23){let t=null,n=null;for(let e in r.color)r.color[e]>=c/2&&(t=e);for(let e in r.style)r.style[e]>=c/2&&(n=e);null!=t&&null!=n&&(e+=\"border-top:\"+wo.getHtmlBorderStyle(n,t))}if(JSON.stringify(o).length>23){let t=null,n=null;for(let e in o.color)o.color[e]>=c/2&&(t=e);for(let e in o.style)o.style[e]>=c/2&&(n=e);null!=t&&null!=n&&(e+=\"border-bottom:\"+wo.getHtmlBorderStyle(n,t))}}}else if(s&&s[t+\"_\"+n]){if(s[t+\"_\"+n].l){let a=s[t+\"_\"+n].l.style,l=s[t+\"_\"+n].l.color;e+=\"border-left:\"+wo.getHtmlBorderStyle(a,l)}if(s[t+\"_\"+n].r){let a=s[t+\"_\"+n].r.style,l=s[t+\"_\"+n].r.color;e+=\"border-right:\"+wo.getHtmlBorderStyle(a,l)}if(s[t+\"_\"+n].b){let a=s[t+\"_\"+n].b.style,l=s[t+\"_\"+n].b.color;e+=\"border-bottom:\"+wo.getHtmlBorderStyle(a,l)}if(s[t+\"_\"+n].t){let a=s[t+\"_\"+n].t.style,l=s[t+\"_\"+n].t.color;e+=\"border-top:\"+wo.getHtmlBorderStyle(a,l)}}a=nd(a,{style:e,span:l}),null==r&&(r=Vn(t,n,d)),null==r&&(r=\" \"),a+=r}else{let e=\"\";if(s&&s[t+\"_\"+n]){if(s[t+\"_\"+n].l){let a=s[t+\"_\"+n].l.style,l=s[t+\"_\"+n].l.color;e+=\"border-left:\"+wo.getHtmlBorderStyle(a,l)}if(s[t+\"_\"+n].r){let a=s[t+\"_\"+n].r.style,l=s[t+\"_\"+n].r.color;e+=\"border-right:\"+wo.getHtmlBorderStyle(a,l)}if(s[t+\"_\"+n].b){let a=s[t+\"_\"+n].b.style,l=s[t+\"_\"+n].b.color;e+=\"border-bottom:\"+wo.getHtmlBorderStyle(a,l)}if(s[t+\"_\"+n].t){let a=s[t+\"_\"+n].t.style,l=s[t+\"_\"+n].t.color;e+=\"border-top:\"+wo.getHtmlBorderStyle(a,l)}}a+=\"\",t==c[0]&&(null==o.columnlen||null==o.columnlen[n.toString()]?f+='<colgroup width=\"72px\"></colgroup>':f+='<colgroup width=\"'+o.columnlen[n.toString()]+'px\"></colgroup>'),n==u[0]&&(null==o.rowlen||null==o.rowlen[t.toString()]?e+=\"height:19px;\":e+=\"height:\"+o.rowlen[t.toString()]+\"px;\"),a=nd(a,{style:e,span:\"\"}),a+=\" \"}a+=\"</td>\",h+=a}h+=\"</tr>\"}}return h='<table data-type=\"luckysheet_copy_action_table\">'+f+h+\"</table>\",h}function bc(e,n={}){if(![\"oneDimensional\",\"twoDimensional\"].includes(e))return vo.info(\"The dimensional parameter is invalid.\",\"\");let{range:a=t.luckysheet_select_save[t.luckysheet_select_save.length-1],order:l=Mt(t.currentSheetIndex)}=g({},n),r=t.luckysheetfile[l];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");if(\"string\"==ad(a)){if(!wi.iscelldata(a))return vo.info(\"The range parameter is invalid.\",\"\");a=wi.getcellrange(a)}if(\"object\"!=ad(a)||null==a.row||null==a.column)return vo.info(\"The range parameter is invalid.\",\"\");let o=a.row[0],i=a.row[1],s=a.column[0],c=a.column[1],u=$.extend(!0,{},r.config);if(null!=u.merge&&A(u,o,i,s,c))return vo.info(\"Cannot perform this operation on partially merged cells\",\"\");let d=r.data;(null==d||0==d.length)&&(d=ki.buildGridData(r));let h=[];if(\"oneDimensional\"==e)for(let e=o;e<=i;e++)for(let t=s;t<=c;t++){let n=d[e][t];null==n||null==n.v?h.push(null):h.push(n.v)}else if(\"twoDimensional\"==e)for(let e=o;e<=i;e++){let t=[];for(let n=s;n<=c;n++){let a=d[e][n];null==a||null==a.v?t.push(null):t.push(a.v)}h.push(t)}return h}function kc(e,n={}){let a=t.luckysheet_select_save[0],l=Mt(t.currentSheetIndex),{range:r=a,order:o=l}=g({},n),i=t.luckysheetfile[o],s=i.config;if(r&&\"string\"==typeof r&&wi.iscelldata(r)&&(r=wi.getcellrange(r)),!r||r.length>1)return void(I()?alert(locale_drag.noMulti):vo.info(locale_drag.noMulti,\"\"));if(null!=s.merge){let e=!1;if(e=A(s,r.row[0],r.row[1],r.column[0],r.column[1]),e)return void(I()?alert(X().drag.noPartMerge):vo.info(X().drag.noPartMerge,\"\"))}let c=Ln(r,i.index),u=[];if(0!==c.length){if(e)if(1===c.length){let e={};for(let t=0;t<c[0].length;t++)e[Vn(0,t,c)]=\"\";u.push(e)}else for(let e=1;e<c.length;e++){let t={};for(let n=0;n<c[0].length;n++)null==Vn(0,n,c)?t[\"\"]=Vn(e,n,c):t[Vn(0,n,c)]=Vn(e,n,c);u.push(t)}else{let e=r.column[0];for(let t=0;t<c.length;t++){let n={};for(let a=0;a<c[0].length;a++)n[id(a+e)]=Vn(t,a,c);u.push(n)}}return u}}function wc(e,n={}){if([\"normal\",\"anti\",\"offset\"].indexOf(e)<0)return vo.info(\"The type parameter must be included in ['normal', 'anti', 'offset']\",\"\");let a=Mt(t.currentSheetIndex),l=JSON.parse(JSON.stringify(t.luckysheet_select_save)),{column:r=1,range:o=l,order:i=a}=g({},n),s=t.luckysheetfile[i].config;if(o&&\"string\"==typeof o&&wi.iscelldata(o)&&(o=wi.getcellrange(o)),!o||o.length>1)return void(I()?alert(X().drag.noMulti):vo.info(X().drag.noMulti,\"\"));if(null!=s.merge){let e=!1;if(e=A(s,o[0].row[0],o[0].row[1],o[0].column[0],o[0].column[1]),e)return void(I()?alert(X().drag.noPartMerge):vo.info(X().drag.noPartMerge,\"\"))}let c=Ln(o,i),u=[];if(0===c.length)return;let d=c[0].length;switch(e){case\"normal\":for(let e=0;e<c.length&&!(e>=d);e++)u.push(c[e][e]);break;case\"anti\":for(let e=0;e<c.length&&!(e>=d);e++)u.push(c[e][d-e-1]);break;case\"offset\":if(\"NaN\"==r.toString())return void(I()?alert(X().drag.inputCorrect):vo.info(X().drag.inputCorrect,\"\"));if(r<0)return void(I()?alert(X().drag.offsetColumnLessZero):vo.info(X().drag.offsetColumnLessZero,\"\"));for(let e=0;e<c.length&&!(e+r>=d);e++)u.push(c[e][e+r])}wo.copybyformat(new Event,JSON.stringify(u))}function xc(e={}){let n=Mt(t.currentSheetIndex),a=JSON.parse(JSON.stringify(t.luckysheet_select_save)),{range:l=a,order:r=n}=g({},e),o=t.luckysheetfile[r].config;if(l&&\"string\"==typeof l&&wi.iscelldata(l)&&(l=wi.getcellrange(l)),!l||l.length>1)return void(I()?alert(X().drag.noMulti):vo.info(X().drag.noMulti,\"\"));if(null!=o.merge){let e=!1;if(e=A(o,l[0].row[0],l[0].row[1],l[0].column[0],l[0].column[1]),e)return void(I()?alert(X().drag.noPartMerge):vo.info(X().drag.noPartMerge,\"\"))}let i=Ln(l,r),s=[];if(0!==i.length){for(let e=0;e<i.length;e++){let t=[];for(let n=0;n<i[0].length;n++){let a,l=!1;a=\"object\"==ad(i[e][n])?i[e][n].v:i[e][n],null==a||\"\"==a?l=!1:(a=parseInt(a),l=null==a||a>0),t.push(l)}s.push(t)}wo.copybyformat(event,JSON.stringify(s))}}function _c(e,n={}){if(\"string\"==ad(e)){if(!wi.iscelldata(e))return vo.info(\"The range parameter is invalid.\",\"\");let t=wi.getcellrange(e);e=[{row:t.row,column:t.column}]}else if(\"object\"==ad(e)){if(null==e.row||null==e.column)return vo.info(\"The range parameter is invalid.\",\"\");e=[{row:e.row,column:e.column}]}if(\"array\"==ad(e))for(let t=0;t<e.length;t++)if(\"string\"===ad(e[t])){if(!wi.iscelldata(e[t]))return vo.info(\"The range parameter is invalid.\",\"\");let n=wi.getcellrange(e[t]);e[t]={row:n.row,column:n.column}}else if(\"object\"==ad(e)){if(null==e.row||null==e.column)return vo.info(\"The range parameter is invalid.\",\"\");e={row:e.row,column:e.column}}if(\"array\"!=ad(e))return vo.info(\"The range parameter is invalid.\",\"\");let{show:a=!0,order:l=Mt(t.currentSheetIndex),success:r}=g({},n),o=t.luckysheetfile[l];if(null==o)return vo.info(\"The order parameter is invalid.\",\"\");for(let t=0;t<e.length;t++){let n=Yu.mergeMoveMain(e[t].column,e[t].row,e[t]);n&&(e[t]={row:n[1],column:n[0]})}o.luckysheet_select_save=e,o.index==t.currentSheetIndex&&(t.luckysheet_select_save=e,Pu(),a||($(\"#luckysheet-cell-selected-boxs\").hide(),$(\"#luckysheet-cell-selected-focus\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide(),$(\"#luckysheet-rows-h-selected\").empty(),$(\"#luckysheet-cols-h-selected\").empty())),r&&\"function\"==typeof r&&r()}function Cc(e,n={}){let a=Mt(t.currentSheetIndex),l=t.luckysheet_select_save[t.luckysheet_select_save.length-1],{range:r=l,isRefresh:o=!0,order:i=a,success:s}=g({},n);if(null==e)return vo.info(\"The data which will be set to range cannot be null.\",\"\");if(r instanceof Array)return vo.info(\"setRangeValue only supports a single selection.\",\"\");\"string\"==typeof r&&wi.iscelldata(r)&&(r=wi.getcellrange(r));let c=r.row[1]-r.row[0]+1,u=r.column[1]-r.column[0]+1;if(e.length!==c||e[0].length!==u)return vo.info(\"The data to be set does not match the selection.\",\"\");let d=t.luckysheetfile[i];if(null==d)return vo.info(\"The order parameter is invalid.\",\"\");let h=$.extend(!0,[],d.data);for(let t=0;t<c;t++)for(let n=0;n<u;n++){As(r.row[0]+t,r.column[0]+n,e[t][n],{order:i,isRefresh:!1})}let f=$.extend(!0,[],d.data);d.data.length=0,d.data.push(...h),d.index==t.currentSheetIndex&&ao(f,[{row:r.row,column:r.column}],void 0,!0,!1),o&&uo(),s&&\"function\"==typeof s&&s()}function Tc(e,n,a={}){let l=Mt(t.currentSheetIndex),r=t.luckysheet_select_save[t.luckysheet_select_save.length-1],{range:o=r,order:i=l}=g({},a);if(!e)return vo.info(\"Arguments attr cannot be null or undefined.\",\"\"),\"error\";if(o instanceof Array)return vo.info(\"setRangeValue only supports a single selection.\",\"\"),\"error\";if(\"string\"==ad(o)){if(!wi.iscelldata(o))return vo.info(\"The range parameter is invalid.\",\"\"),\"error\";o=wi.getcellrange(o)}if(\"object\"!=ad(o)||null==o.row||null==o.column)return vo.info(\"The range parameter is invalid.\",\"\"),\"error\";for(let t=o.row[0];t<=o.row[1];t++)for(let a=o.column[0];a<=o.column[1];a++)console.log(\"r\",t),console.log(\"c\",a),As(t,a,{[e]:n},{order:i,isRefresh:!1})}function Sc(e,n,a={}){let l=Mt(t.currentSheetIndex),r=JSON.parse(JSON.stringify(t.luckysheet_select_save)),{range:o=r,order:i=l,success:s}=g({},a);if(\"string\"==ad(o)){if(!wi.iscelldata(o))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(o);o=[{row:e.row,column:e.column}]}else if(\"object\"==ad(o)){if(null==o.row||null==o.column)return vo.info(\"The range parameter is invalid.\",\"\");o=[{row:o.row,column:o.column}]}if(\"array\"!=ad(o))return vo.info(\"The range parameter is invalid.\",\"\");let c=t.luckysheetfile[i],u=[];for(let t=0;t<o.length;t++)u.push(Tc(e,n,{range:o[t],order:i}));let d=$.extend(!0,[],c.data);if(u.some((e=>\"error\"===e)))return c.data.length=0,c.data.push(...d),!1;c.data.length=0,c.data.push(...d),c.index==t.currentSheetIndex&&ao(d,void 0,void 0,!0,!1),uo()}function $c(e,n={}){if(![\"open\",\"close\"].includes(e))return vo.info(\"The type parameter is invalid.\",\"\");let{range:a=t.luckysheet_select_save[t.luckysheet_select_save.length-1],order:l=Mt(t.currentSheetIndex),success:r}=g({},n),o=t.luckysheetfile[l];if(null==o)return vo.info(\"The order parameter is invalid.\",\"\");if(\"string\"==ad(a)){if(!wi.iscelldata(a))return vo.info(\"The range parameter is invalid.\",\"\");a=wi.getcellrange(a)}if(\"object\"!=ad(a)||null==a.row||null==a.column)return vo.info(\"The range parameter is invalid.\",\"\");if(setTimeout((()=>{r&&\"function\"==typeof r&&r()}),1),\"open\"==e)return o.filter_select=a,o.index==t.currentSheetIndex&&al(a,o.filter),{row:a.row,column:a.column};if(\"close\"==e){let e=$.extend(!0,{},o.filter_select);return o.filter_select=null,$(\"#luckysheet-filter-selected-sheet\"+o.index).remove(),$(\"#luckysheet-filter-options-sheet\"+o.index).remove(),{row:e.row,column:e.column}}}function Ic(e,n={}){if([\"all\",\"horizontal\",\"vertical\"].indexOf(e)<0)return vo.info(\"The type parameter must be included in ['all', 'horizontal', 'vertical']\",\"\");let a=Mt(t.currentSheetIndex),l=JSON.parse(JSON.stringify(t.luckysheet_select_save)),{range:r=l,order:o=a,success:i}=g({},n),s=t.luckysheetfile[o],c=$.extend(!0,{},s.config),u=$.extend(!0,[],s.data);if(0==u.length&&(u=$.extend(!0,[],ki.buildGridData(s))),\"string\"==ad(r)){if(!wi.iscelldata(r))return vo.info(\"Incorrect selection format\",\"\");let e=wi.getcellrange(r);r=[{row:e.row,column:e.column}]}else if(\"object\"==ad(r)){if(!r.hasOwnProperty(\"row\")||!r.hasOwnProperty(\"column\"))return vo.info(\"Incorrect selection format\",\"\");r=[{row:r.row,column:r.column}]}if(Ou(r))return vo.info(\"Cannot merge overlapping range\",\"\");if(null!=c.merge){let e=!1;for(let t=0;t<r.length;t++){if(e=A(c,r[t].row[0],r[t].row[1],r[t].column[0],r[t].column[1]),e)break}if(e)return vo.info(\"Cannot perform this operation on partially merged cells\",\"\")}else c.merge={};let d=!1;for(let e=0;e<r.length;e++){let t=r[e].row[0],n=r[e].row[1],a=r[e].column[0],l=r[e].column[1];for(let e=t;e<=n;e++){for(let t=a;t<=l;t++){let n=u[e][t];if(\"object\"==ad(n)&&\"mc\"in n){d=!0;break}}if(d)break}}if(d)Rc({range:r,order:o});else{for(let t=0;t<r.length;t++){let n=r[t].row[0],a=r[t].row[1],l=r[t].column[0],o=r[t].column[1];if(n!=a||l!=o)if(\"all\"==e){let e={},t=!1;for(let r=n;r<=a;r++)for(let a=l;a<=o;a++){let o=u[r][a];null!=o&&(!_(o.v)||null!=o.f)&&!t&&(e=$.extend(!0,{},o),t=!0),u[r][a]={mc:{r:n,c:l}}}u[n][l]=e,u[n][l].mc={r:n,c:l,rs:a-n+1,cs:o-l+1},c.merge[n+\"_\"+l]={r:n,c:l,rs:a-n+1,cs:o-l+1}}else if(\"vertical\"==e)for(let e=l;e<=o;e++){let t={},l=!1;for(let r=n;r<=a;r++){let a=u[r][e];null!=a&&(!_(a.v)||null!=a.f)&&!l&&(t=$.extend(!0,{},a),l=!0),u[r][e]={mc:{r:n,c:e}}}u[n][e]=t,u[n][e].mc={r:n,c:e,rs:a-n+1,cs:1},c.merge[n+\"_\"+e]={r:n,c:e,rs:a-n+1,cs:1}}else if(\"horizontal\"==e)for(let e=n;e<=a;e++){let t={},n=!1;for(let a=l;a<=o;a++){let r=u[e][a];null!=r&&(!_(r.v)||null!=r.f)&&!n&&(t=$.extend(!0,{},r),n=!0),u[e][a]={mc:{r:e,c:l}}}u[e][l]=t,u[e][l].mc={r:e,c:l,rs:1,cs:o-l+1},c.merge[e+\"_\"+l]={r:e,c:l,rs:1,cs:o-l+1}}}o==a?(t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"mergeChange\",sheetIndex:s.index,data:$.extend(!0,[],s.data),curData:u,range:r,config:$.extend(!0,{},s.config),curConfig:c})),t.clearjfundo=!1,ao(u,r,{cfg:c}),t.clearjfundo=!0):(s.data=u,s.config=c)}i&&\"function\"==typeof i&&i()}function Rc(e={}){let n=t.luckysheet_select_save,a=Mt(t.currentSheetIndex),{range:l=n,order:r=a,success:o}=g({},e),i=t.luckysheetfile[r],s=$.extend(!0,{},i.config),c=$.extend(!0,[],i.data);if(0==c.length&&(c=$.extend(!0,[],ki.buildGridData(i))),\"string\"==ad(l)){if(!wi.iscelldata(l))return vo.info(\"Incorrect selection format\",\"\");let e=wi.getcellrange(l);l=[{row:e.row,column:e.column}]}else if(\"object\"==ad(l)){if(!l.hasOwnProperty(\"row\")||!l.hasOwnProperty(\"column\"))return vo.info(\"Incorrect selection format\",\"\");l=[{row:l.row,column:l.column}]}if(Ou(l))return vo.info(\"Cannot merge overlapping range\",\"\");if(null!=s.merge){let e=!1;for(let t=0;t<l.length;t++){if(e=A(s,l[t].row[0],l[t].row[1],l[t].column[0],l[t].column[1]),e)break}if(e)return vo.info(\"Cannot perform this operation on partially merged cells\",\"\")}for(let e=0;e<l.length;e++){let t=l[e].row[0],n=l[e].row[1],a=l[e].column[0],r=l[e].column[1];if(t==n&&a==r)continue;let o={};for(let e=t;e<=n;e++)for(let t=a;t<=r;t++){let n=c[e][t];if(null!=n&&null!=n.mc){let a=n.mc.r,l=n.mc.c;if(\"rs\"in n.mc)delete n.mc,delete s.merge[a+\"_\"+l],o[a+\"_\"+l]=$.extend(!0,{},n);else{let n=JSON.parse(JSON.stringify(o[a+\"_\"+l]));delete n.v,delete n.m,delete n.ct,delete n.f,delete n.spl,c[e][t]=n}}}}r==a?(t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"mergeChange\",sheetIndex:i.index,data:$.extend(!0,[],i.data),curData:c,range:l,config:$.extend(!0,{},i.config),curConfig:s})),t.clearjfundo=!1,ao(c,l,{cfg:s}),t.clearjfundo=!0):(i.data=c,i.config=s)}function Ac(e,n={}){if([\"asc\",\"desc\"].indexOf(e)<0)return vo.info(\"The type parameter must be included in ['asc', 'desc'\",\"\");let a=Mt(t.currentSheetIndex),l=t.luckysheet_select_save[0],{range:r=l,order:o=a,success:i}=g({},n),s=t.luckysheetfile[o],c=$.extend(!0,{},s.config),u=$.extend(!0,[],s.data);if(0==u.length&&(u=$.extend(!0,[],ki.buildGridData(s))),r instanceof Array&&r.length>1)return void vo.info(X().sort.noRangeError,\"\");r&&\"string\"==typeof r&&wi.iscelldata(r)&&(r=wi.getcellrange(r));let d=r.row[0],h=r.row[1],f=r.column[0],m=r.column[1],p=!1,y=[];for(let e=d;e<=h;e++){let t=[];for(let n=f;n<=m;n++){if(null!=u[e][n]&&null!=u[e][n].mc){p=!0;break}t.push(u[e][n])}y.push(t)}if(p)return void vo.info(X().sort.mergeError,\"\");y=hr([].concat(y),0,\"asc\"===e);for(let e=d;e<=h;e++)for(let t=f;t<=m;t++)u[e][t]=y[e-d][t-f];let v={};null!=c.rowlen&&(c=aa(u,d,h,c),v={cfg:c,RowlChange:!0}),s.index==t.currentSheetIndex?ao(u,[{row:[d,h],column:[f,m]}],v):(s.data=u,s.config=c),i&&\"function\"==typeof i&&i()}function Dc(e,n,a={}){if(!(n&&n instanceof Array))return vo.info(\"The sort parameter is invalid.\",\"\");let l=Mt(t.currentSheetIndex),r=t.luckysheet_select_save[0],{range:o=r,order:i=l,success:s}=g({},a),c=t.luckysheetfile[i],u=$.extend(!0,{},c.config),d=$.extend(!0,[],c.data);if(0==d.length&&(d=$.extend(!0,[],ki.buildGridData(c))),o instanceof Array&&o.length>1)return void vo.info(X().sort.noRangeError,\"\");o&&\"string\"==typeof o&&wi.iscelldata(o)&&(o=wi.getcellrange(o));let h,f=o.row[0],m=o.row[1],p=o.column[0],y=o.column[1];h=e?f+1:f;let v=!1,b=[];for(let e=h;e<=m;e++){let t=[];for(let n=p;n<=y;n++){if(null!=d[e][n]&&null!=d[e][n].mc){v=!0;break}t.push(d[e][n])}b.push(t)}if(v)return void vo.info(X().sort.mergeError,\"\");n.forEach((e=>{let t=e.i;t-=p,b=hr([].concat(b),t,\"asc\"===e.sort)}));for(let e=h;e<=m;e++)for(let t=p;t<=y;t++)d[e][t]=b[e-h][t-p];let k={};null!=u.rowlen&&(u=aa(d,h,m,u),k={cfg:u,RowlChange:!0}),c.index===t.currentSheetIndex?ao(d,[{row:[h,m],column:[p,y]}],k):(c.data=d,c.config=u),s&&\"function\"==typeof s&&s()}function Fc(e,n,a={}){if(!e||![\"greaterThan\",\"lessThan\",\"betweenness\",\"equal\",\"textContains\",\"occurrenceDate\",\"duplicateValue\",\"top10\",\"top10%\",\"last10\",\"last10%\",\"AboveAverage\",\"SubAverage\",\"regExp\",\"sort\"].includes(e))return vo.info(\"The conditionName parameter is invalid.\",\"\");if(\"array\"!=ad(n)||0==n.length)return vo.info(\"The conditionValue parameter is invalid.\",\"\");let{format:l={textColor:\"#000000\",cellColor:\"#ff0000\"},cellrange:r=t.luckysheet_select_save,order:o=Mt(t.currentSheetIndex),success:i}=g({},a);r=JSON.parse(JSON.stringify(r));let s=t.luckysheetfile[o],c=s.data;if((null==c||0==c.length)&&(c=ki.buildGridData(s)),null==s)return vo.info(\"Incorrect worksheet index\",\"\");let u=X().conditionformat,d=[],h=[];if(\"betweenness\"==e){let e=n[0],t=n[1],a=ko.getRangeByTxt(e);if(a.length>1)return void ko.infoDialog(u.onlySingleCell,\"\");if(1==a.length){let t=a[0].row[0],n=a[0].row[1],l=a[0].column[0],r=a[0].column[1];if(t!=n||l!=r)return void ko.infoDialog(u.onlySingleCell,\"\");e=Vn(t,l,c),d.push({row:a[0].row,column:a[0].column}),h.push(e)}else if(0==a.length){if(isNaN(e)||\"\"==e)return void ko.infoDialog(u.conditionValueCanOnly,\"\");h.push(e)}let l=ko.getRangeByTxt(t);if(l.length>1)return void ko.infoDialog(u.onlySingleCell,\"\");if(1==l.length){let e=l[0].row[0],n=l[0].row[1],a=l[0].column[0],r=l[0].column[1];if(e!=n||a!=r)return void ko.infoDialog(u.onlySingleCell,\"\");t=Vn(e,a,c),d.push({row:l[0].row,column:l[0].column}),h.push(t)}else if(0==l.length){if(isNaN(t)||\"\"==t)return void ko.infoDialog(u.conditionValueCanOnly,\"\");h.push(t)}}else if(\"greaterThan\"==e||\"lessThan\"==e||\"equal\"==e){let e=n[0],t=ko.getRangeByTxt(e);if(t.length>1)return void ko.infoDialog(u.onlySingleCell,\"\");if(1==t.length){let n=t[0].row[0],a=t[0].row[1],l=t[0].column[0],r=t[0].column[1];if(n!=a||l!=r)return void ko.infoDialog(u.onlySingleCell,\"\");e=Vn(n,l,c),d.push({row:t[0].row,column:t[0].column}),h.push(e)}else if(0==t.length){if(isNaN(e)||\"\"==e)return void ko.infoDialog(u.conditionValueCanOnly,\"\");h.push(e)}}else if(\"textContains\"==e){let e=n[0],t=ko.getRangeByTxt(e);if(t.length>1)return void ko.infoDialog(u.onlySingleCell,\"\");if(1==t.length){let n=t[0].row[0],a=t[0].row[1],l=t[0].column[0],r=t[0].column[1];if(n!=a||l!=r)return void ko.infoDialog(u.onlySingleCell,\"\");e=Vn(n,l,c),d.push({row:t[0].row,column:t[0].column}),h.push(e)}else if(0==t.length){if(\"\"==e)return void ko.infoDialog(u.conditionValueCanOnly,\"\");h.push(e)}}else if(\"occurrenceDate\"==e){let e,t=n[0],a=n[1];if(!pa(t)||!pa(a))return vo.info(\"The conditionValue parameter is invalid.\",\"\");e=ga(t,a)>0?(0,Eu.default)(a).format(\"YYYY/MM/DD\")+\"-\"+(0,Eu.default)(t).format(\"YYYY/MM/DD\"):(0,Eu.default)(t).format(\"YYYY/MM/DD\")+\"-\"+(0,Eu.default)(a).format(\"YYYY/MM/DD\"),h.push(e)}else if(\"duplicateValue\"==e){let e=n[0];if(\"0\"!=e||\"1\"!=e)return vo.info(\"The conditionValue parameter is invalid.\",\"\");h.push(e)}else if(\"top10\"==e||\"top10%\"==e||\"last10\"==e||\"last10%\"==e){let e=n[0];if(parseInt(e)!=e||parseInt(e)<1||parseInt(e)>1e3)return void ko.infoDialog(u.pleaseEnterInteger,\"\");h.push(parseInt(e))}else\"AboveAverage\"==e||\"SubAverage\"==e?h.push(e):(\"regExp\"==e||\"sort\"==e)&&h.push(...n);if(!l.hasOwnProperty(\"textColor\")||!l.hasOwnProperty(\"cellColor\"))return vo.info(\"The format parameter is invalid.\",\"\");if(\"string\"==ad(r)?r=ko.getRangeByTxt(r):\"object\"==ad(r)&&(r=[r]),\"array\"!=ad(r))return vo.info(\"The cellrange parameter is invalid.\",\"\");let f={type:\"default\",cellrange:r,format:l,conditionName:e,conditionRange:d,conditionValue:h},m=$.extend(!0,[],t.luckysheetfile),p=ko.getHistoryRules(m),y=s.luckysheet_conditionformat_save||[];y.push(f),s.luckysheet_conditionformat_save=y;let v=$.extend(!0,[],t.luckysheetfile),b=ko.getCurrentRules(v);ko.ref(p,b),yo.allowUpdate&&yo.saveParam(\"all\",s.index,y,{k:\"luckysheet_conditionformat_save\"}),i&&\"function\"==typeof i&&i()}function Ec(e,n={}){if(!e||![\"dataBar\",\"colorGradation\",\"icons\"].includes(e))return vo.info(\"The type parameter is invalid.\",\"\");let{format:a,cellrange:l=t.luckysheet_select_save,order:r=Mt(t.currentSheetIndex),success:o}=g({},n);l=JSON.parse(JSON.stringify(l));let i=t.luckysheetfile[r];if(null==i)return vo.info(\"Incorrect worksheet index\",\"\");if(\"dataBar\"==e){if(null==a&&(a=[\"#638ec6\",\"#ffffff\"]),\"array\"!=ad(a)||a.length<1||a.length>2)return vo.info(\"The format parameter is invalid.\",\"\")}else if(\"colorGradation\"==e){if(null==a&&(a=[\"rgb(99, 190, 123)\",\"rgb(255, 235, 132)\",\"rgb(248, 105, 107)\"]),\"array\"!=ad(a)||a.length<2||a.length>3)return vo.info(\"The format parameter is invalid.\",\"\")}else if(\"icons\"==e){null==a&&(a=\"threeWayArrowMultiColor\");let e=[\"threeWayArrowMultiColor\",\"threeTriangles\",\"fourWayArrowMultiColor\",\"fiveWayArrowMultiColor\",\"threeWayArrowGrayColor\",\"fourWayArrowGrayColor\",\"fiveWayArrowGrayColor\",\"threeColorTrafficLightRimless\",\"threeSigns\",\"greenRedBlackGradient\",\"threeColorTrafficLightBordered\",\"fourColorTrafficLight\",\"threeSymbolsCircled\",\"tricolorFlag\",\"threeSymbolsnoCircle\",\"threeStars\",\"fiveQuadrantDiagram\",\"fiveBoxes\",\"grade4\",\"grade5\"];if(\"string\"!=ad(a)||!e.includes(a))return vo.info(\"The format parameter is invalid.\",\"\");switch(a){case\"threeWayArrowMultiColor\":a={len:3,leftMin:0,top:0};break;case\"threeTriangles\":a={len:3,leftMin:0,top:1};break;case\"fourWayArrowMultiColor\":a={len:4,leftMin:0,top:2};break;case\"fiveWayArrowMultiColor\":a={len:5,leftMin:0,top:3};break;case\"threeWayArrowGrayColor\":a={len:3,leftMin:5,top:0};break;case\"fourWayArrowGrayColor\":a={len:4,leftMin:5,top:1};break;case\"fiveWayArrowGrayColor\":a={len:5,leftMin:5,top:2};break;case\"threeColorTrafficLightRimless\":a={len:3,leftMin:0,top:4};break;case\"threeSigns\":a={len:3,leftMin:0,top:5};break;case\"greenRedBlackGradient\":a={len:4,leftMin:0,top:6};break;case\"threeColorTrafficLightBordered\":a={len:3,leftMin:5,top:4};break;case\"fourColorTrafficLight\":a={len:4,leftMin:5,top:5};break;case\"threeSymbolsCircled\":a={len:3,leftMin:0,top:7};break;case\"tricolorFlag\":a={len:3,leftMin:0,top:8};break;case\"threeSymbolsnoCircle\":a={len:3,leftMin:5,top:7};break;case\"threeStars\":a={len:3,leftMin:0,top:9};break;case\"fiveQuadrantDiagram\":a={len:5,leftMin:0,top:10};break;case\"fiveBoxes\":a={len:5,leftMin:0,top:11};break;case\"grade4\":a={len:4,leftMin:5,top:9};break;case\"grade5\":a={len:5,leftMin:5,top:10}}}if(\"string\"==ad(l)?l=ko.getRangeByTxt(l):\"object\"==ad(l)&&(l=[l]),\"array\"!=ad(l))return vo.info(\"The cellrange parameter is invalid.\",\"\");let s={type:e,cellrange:l,format:a},c=$.extend(!0,[],t.luckysheetfile),u=ko.getHistoryRules(c),d=i.luckysheet_conditionformat_save||[];d.push(s),i.luckysheet_conditionformat_save=d;let h=$.extend(!0,[],t.luckysheetfile),f=ko.getCurrentRules(h);ko.ref(u,f),yo.allowUpdate&&yo.saveParam(\"all\",i.index,d,{k:\"luckysheet_conditionformat_save\"}),o&&\"function\"==typeof o&&o()}function Mc(e,n={}){if(!C(e))return vo.info(\"The itemIndex parameter is invalid.\",\"\");e=Number(e);let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,[],r.luckysheet_conditionformat_save);if(0==o.length)return vo.info(\"This worksheet has no conditional format to delete\",\"\");if(null==o[e])return vo.info(\"The conditional format of the index cannot be found\",\"\");let i=o.splice(e,1),s=$.extend(!0,[],t.luckysheetfile),c=ko.getHistoryRules(s);r.luckysheet_conditionformat_save=o;let u=$.extend(!0,[],t.luckysheetfile),d=ko.getCurrentRules(u);return ko.ref(c,d),yo.allowUpdate&&yo.saveParam(\"all\",r.index,ruleArr,{k:\"luckysheet_conditionformat_save\"}),setTimeout((()=>{l&&\"function\"==typeof l&&l()}),1),i}function Nc(e={}){let{range:n=t.luckysheet_select_save,order:a=Mt(t.currentSheetIndex),success:l}=g({},e);if(n=JSON.parse(JSON.stringify(n)),\"string\"==ad(n)){if(!wi.iscelldata(n))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(n);n=[{row:e.row,column:e.column}]}else if(\"object\"==ad(n)){if(null==n.row||null==n.column)return vo.info(\"The range parameter is invalid.\",\"\");n=[{row:n.row,column:n.column}]}if(\"array\"!=ad(n))return vo.info(\"The range parameter is invalid.\",\"\");let r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.config),i=!1;for(let e=0;e<n.length;e++){if(i=A(o,n[e].row[0],n[e].row[1],n[e].column[0],n[e].column[1]),i)break}if(i)return vo.info(\"Cannot perform this operation on partially merged cells\",\"\");let s=$.extend(!0,[],r.data);0==s.length&&(s=$.extend(!0,[],ki.buildGridData(r)));for(let e=0;e<n.length;e++){let t=n[e].row[0],a=n[e].row[1],l=n[e].column[0],o=n[e].column[1];for(let e=t;e<=a;e++)for(let t=l;t<=o;t++){let n=s[e][t];\"object\"==ad(n)?(delete n.m,delete n.v,null!=n.f&&(delete n.f,wi.delFunctionGroup(e,t,r.index),delete n.spl),null!=n.ct&&\"inlineStr\"==n.ct.t&&delete n.ct):s[e][t]=null}}r.index==t.currentSheetIndex?ao(s,n):r.data=s,l&&\"function\"==typeof l&&l()}function Pc(e,n={}){if(![\"left\",\"up\"].includes(e))return vo.info(\"The move parameter is invalid.\",\"\");let{range:a=t.luckysheet_select_save[t.luckysheet_select_save.length-1],order:l=Mt(t.currentSheetIndex),success:r}=g({},n);if(\"string\"==ad(a)){if(!wi.iscelldata(a))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(a);a={row:e.row,column:e.column}}if(\"object\"!=ad(a)||null==a.row||null==a.column)return vo.info(\"The range parameter is invalid.\",\"\");if(null==t.luckysheetfile[l])return vo.info(\"The order parameter is invalid.\",\"\");let o=a.row[0],i=a.row[1],s=a.column[0],c=a.column[1];\"left\"==e?fl(\"moveLeft\",o,i,s,c,l):\"up\"==e&&fl(\"moveUp\",o,i,s,c,l),r&&\"function\"==typeof r&&r()}function zc(e,n={}){if(!e||[\"flipUpDown\",\"flipLeftRight\",\"flipClockwise\",\"flipCounterClockwise\",\"transpose\",\"deleteZeroByRow\",\"deleteZeroByColumn\",\"removeDuplicateByRow\",\"removeDuplicateByColumn\",\"newMatrix\"].indexOf(e)<0)return vo.info(\"The type parameter is invalid.\",\"\");let a=t.luckysheet_select_save[0],{range:l=a,success:r}=g({},n);if(l instanceof Array&&l.length>1)return void vo.info(X().drag.noMulti,\"\");l&&\"string\"==typeof l&&wi.iscelldata(l)&&(l=wi.getcellrange(l));let o,i,s,c=Ln(l),u=[];if(0!==c.length){switch(e){case\"flipUpDown\":for(let e=c.length-1;e>=0;e--){let t=[];for(let n=0;n<c[0].length;n++){let a=\"\";null!=c[e]&&null!=c[e][n]&&(a=c[e][n]),t.push(a)}u.push(t)}break;case\"flipLeftRight\":for(let e=0;e<c.length;e++){let t=[];for(let n=c[0].length-1;n>=0;n--){let a=\"\";null!=c[e]&&null!=c[e][n]&&(a=c[e][n]),t.push(a)}u.push(t)}break;case\"flipClockwise\":for(let e=0;e<c[0].length;e++){let t=[];for(let n=c.length-1;n>=0;n--){let a=\"\";null!=c[n]&&null!=c[n][e]&&(a=c[n][e]),t.push(a)}u.push(t)}break;case\"flipCounterClockwise\":for(let e=c[0].length-1;e>=0;e--){let t=[];for(let n=0;n<c.length;n++){let a=\"\";null!=c[n]&&null!=c[n][e]&&(a=c[n][e]),t.push(a)}u.push(t)}break;case\"transpose\":for(let e=0;e<c[0].length;e++){let t=[];for(let n=0;n<c.length;n++){let a=\"\";null!=c[n]&&null!=c[n][e]&&(a=c[n][e]),t.push(a)}u.push(t)}break;case\"deleteZeroByRow\":o=c[0].length;for(let e=0;e<c.length;e++){let t=[],n=!0,a=!0;for(let a=0;a<o;a++){let l=\"\";if(null!=c[e]&&null!=c[e][a]){if(l=c[e][a],(\"0\"==l.v||0==l.v)&&n)continue;n=!1}t.push(l)}let l=[];if(t.length==o)l=t;else{for(let e=t.length-1;e>=0;e--){let n=\"\";if(null!=t[e]){if(n=t[e],(\"0\"==n.v||0==n.v)&&a)continue;a=!1}l.unshift(n)}let e=o-l.length;for(let t=0;t<e;t++)l.push(\"\")}u.push(l)}break;case\"deleteZeroByColumn\":o=c.length,i=c[0].length;for(let e=0;e<i;e++){let t=[],n=!0,a=!0;for(let a=0;a<o;a++){let l=\"\";if(null!=c[a]&&null!=c[a][e]){if(l=c[a][e],(\"0\"==l.v||0==l.v)&&n)continue;n=!1}t.push(l)}let l=[];if(t.length==o)l=t;else{for(let e=t.length-1;e>=0;e--){let n=\"\";if(null!=t[e]){if(n=t[e],(\"0\"==n.v||0==n.v)&&a)continue;a=!1}l.unshift(n)}let e=o-l.length;for(let t=0;t<e;t++)l.push(\"\")}u.push(l)}s=[];for(let e=0;e<u[0].length;e++){let t=[];for(let n=0;n<u.length;n++){let a=\"\";null!=u[n]&&null!=u[n][e]&&(a=u[n][e]),t.push(a)}s.push(t)}break;case\"removeDuplicateByRow\":o=c[0].length;for(let e=0;e<c.length;e++){let t=[],n={};for(let t=0;t<o;t++){let a=null;null!=c[e]&&null!=c[e][t]&&(a=c[e][t],a.v in n||(n[a.v]=[]),n[a.v].push(a))}for(let a=0;a<o;a++){let l=null;null!=c[e]&&null!=c[e][a]&&(l=c[e][a],1==n[l.v].length&&t.push(l))}let a=o-t.length;for(let e=0;e<a;e++)t.push(null);u.push(t)}break;case\"removeDuplicateByColumn\":i=c[0].length,o=c.length;for(let e=0;e<i;e++){let t=[],n={};for(let t=0;t<o;t++){let a=null;null!=c[t]&&null!=c[t][e]&&(a=c[t][e],a.v in n||(n[a.v]=[]),n[a.v].push(a))}for(let a=0;a<o;a++){let l=null;null!=c[a]&&null!=c[a][e]&&(l=c[a][e],1==n[l.v].length&&t.push(l))}a1=t;let a=o-a1.length;for(let e=0;e<a;e++)a1.push(null);u.push(a1)}s=[];for(let e=0;e<u[0].length;e++){let t=[];for(let n=0;n<u.length;n++){let a=null;null!=u[n]&&null!=u[n][e]&&(a=u[n][e]),t.push(a)}s.push(t)}break;case\"newMatrix\":console.log(\"TODO\")}mn.controlHandler(u,l),r&&\"function\"==typeof r&&r()}}function Lc(e,n,a={}){if(!e||[\"plus\",\"minus\",\"multiply\",\"divided\",\"power\",\"root\",\"log\"].indexOf(e)<0)return vo.info(\"The type parameter is invalid.\",\"\");if(!C(n))return vo.info(\"The number parameter is invalid.\",\"\");let l=t.luckysheet_select_save[0],{range:r=l,success:o}=g({},a);if(r instanceof Array&&r.length>1)return void vo.info(X().drag.noMulti,\"\");r&&\"string\"==typeof r&&wi.iscelldata(r)&&(r=wi.getcellrange(r));let i=Ln(r);if(0==i.length)return;let s=[];for(let t=0;t<i.length;t++){let a=[];for(let l=0;l<i[0].length;l++){let r=\"\";null!=i[t]&&null!=i[t][l]&&(r=i[t][l],null!=parseInt(r)&&null!=i[t][l].ct&&\"n\"==i[t][l].ct.t&&(\"minus\"==e?r.v=r.v-n:\"multiply\"==e?r.v=r.v*n:\"divided\"==e?r.v=numFormat(r.v/n,4):\"power\"==e?r.v=Math.pow(r.v,n):\"root\"==e?2==n?r.v=numFormat(Math.sqrt(r.v),4):3==n&&Math.cbrt?r.v=numFormat(Math.cbrt(r.v),4):r.v=numFormat(jfnqrt(r.v,n),4):r.v=\"log\"==e?numFormat(1e4*Math.log(r.v)/Math.log(Math.abs(n)),4):r.v+n,null==r.v?r.m=\"\":r.m=r.v.toString())),a.push(r)}s.push(a)}mn.controlHandler(s,r),o&&\"function\"==typeof o&&o()}function Oc(e={}){let n=t.luckysheetfile.length-1,{sheetObject:a={},order:l=n,success:r}=g({},e);if(!C(l))return vo.info(\"Parameter is not a table index\",\"\");l=Number(l);let o=ki.generateRandomSheetIndex();a.calcChain&&a.calcChain.length>0&&a.calcChain.forEach((e=>{e.index=o}));let i=ki.generateRandomSheetName(t.luckysheetfile,!1);if(a.name){let e=!1;for(let n=0;n<t.luckysheetfile.length;n++)if(t.luckysheetfile[n].name==a.name){e=!0;break}e||(i=a.name)}$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:o,active:\"\",name:i,style:\"\",colorset:\"\"}));let s={name:\"\",color:\"\",status:\"0\",order:\"\",index:\"\",celldata:[],row:t.defaultrowNum,column:t.defaultcolumnNum,config:{},pivotTable:null,isPivotTable:!1};if(s=$.extend(!0,s,a),s.index=o,s.name=i,s.order=l,l<=0){let e=t.luckysheetfile[0].index,n=$(\"#luckysheet-sheets-item\"+e);$(\"#luckysheet-sheets-item\"+o).insertBefore(n),t.luckysheetfile.splice(0,0,s)}else{l>t.luckysheetfile.length&&(l=t.luckysheetfile.length);let e=t.luckysheetfile[l-1].index,n=$(\"#luckysheet-sheets-item\"+e);$(\"#luckysheet-sheets-item\"+o).insertAfter(n),t.luckysheetfile.splice(l,0,s)}let c={};if(t.luckysheetfile.forEach(((e,t,n)=>{n[t].order=t,c[e.index.toString()]=t})),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+o).addClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+o+'\" class=\"luckysheet-datavisual-selection-set\"></div>'),$o(!0),yo.saveParam(\"sha\",null,$.extend(!0,{},s)),yo.saveParam(\"shr\",null,c),t.clearjfundo){t.jfundo.length=0;let e={type:\"addSheet\"};e.sheetconfig=$.extend(!0,{},s),e.index=o,e.currentSheetIndex=t.currentSheetIndex,t.jfredo.push(e)}return ki.changeSheetExec(o,!1,!0),r&&\"function\"==typeof r&&r(),s}function Bc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e),l=t.luckysheetfile[n];return null==l?vo.info(\"The order parameter is invalid.\",\"\"):1===t.luckysheetfile.length?vo.info(X().sheetconfig.noMoreSheet,\"\"):(ki.deleteSheet(l.index),setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),l)}function Vc(e={}){let{targetOrder:n,order:a=Mt(t.currentSheetIndex),success:l}=g({},e),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");if(null==n&&(n=a+1),!C(n))return vo.info(\"The targetOrder parameter is invalid.\",\"\");let o=r.index,i=ki.generateRandomSheetIndex(),s=$.extend(!0,{},r);s.order=t.luckysheetfile.length,s.index=i,s.name=ki.generateCopySheetName(t.luckysheetfile,s.name);let c=\"\";null!=s.color&&(c='<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+s.color+';\"></div>');let u=$(\"#luckysheet-sheets-item\"+o);if(C(n)&&(u=$(\"#luckysheet-sheets-item\"+t.luckysheetfile[n-1].index)),$(\"#luckysheet-sheet-container-c\").append(nd(pt,{index:s.index,active:\"\",name:s.name,order:s.order,style:\"\",colorset:c})),$(\"#luckysheet-sheets-item\"+s.index).insertAfter(u),t.luckysheetfile.splice(n,0,s),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+i).addClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-cell-main\").append('<div id=\"luckysheet-datavisual-selection-set-'+i+'\" class=\"luckysheet-datavisual-selection-set\"></div>'),$o(!0),yo.saveParam(\"shc\",i,{copyindex:o,name:s.name}),ki.changeSheetExec(i),ki.reOrderAllSheet(),t.clearjfundo)t.jfredo.push({type:\"copySheet\",copyindex:o,index:s.index,sheetIndex:s.index});else if(t.jfredo.length>0){let e=t.jfredo[t.jfredo.length-1];\"copySheet\"==e.type&&(e.index=s.index,e.sheetIndex=s.index)}return setTimeout((()=>{l&&\"function\"==typeof l&&l()}),1),s}function qc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e),l=t.luckysheetfile[n];return null==l?vo.info(\"The order parameter is invalid.\",\"\"):(ki.setSheetHide(l.index),setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),l)}function Hc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e),l=t.luckysheetfile[n];return null==l?vo.info(\"The order parameter is invalid.\",\"\"):(ki.setSheetShow(l.index),setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),l)}function Uc(e,n={}){if(null==e||!C(e)||null==t.luckysheetfile[e])return vo.info(\"The order parameter is invalid.\",\"\");let a=t.luckysheetfile[e],{success:l}=g({},n);return $(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),$(\"#luckysheet-sheets-item\"+a.index).addClass(\"luckysheet-sheets-item-active\"),ki.changeSheet(a.index),setTimeout((()=>{l&&\"function\"==typeof l&&l()}),1),yo.multipleRangeShow(),a}function jc(e,n={}){if(\"string\"!=ad(e)||0==e.toString().length)return vo.info(\"The name parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=r.name;if(r.name=e,$(\"#luckysheet-sheets-item\"+r.index+\" .luckysheet-sheets-item-name\").text(e),yo.saveParam(\"all\",r.index,e,{k:\"name\"}),t.clearjfundo){let n={type:\"sheetName\"};n.sheetIndex=r.index,n.oldtxt=o,n.txt=e,t.jfundo.length=0,t.jfredo.push(n)}l&&\"function\"==typeof l&&l()}function Gc(e,n={}){if(\"string\"!=ad(e)||0==e.toString().length)return vo.info(\"The color parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=r.color;if(r.color=e,$(\"#luckysheet-sheets-item\"+r.index).find(\".luckysheet-sheets-item-color\").remove(),$(\"#luckysheet-sheets-item\"+r.index).append('<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+e+';\"></div>'),yo.saveParam(\"all\",r.index,e,{k:\"color\"}),t.clearjfundo){let n={type:\"sheetColor\"};n.sheetIndex=r.index,n.oldcolor=o,n.color=e,t.jfundo.length=0,t.jfredo.push(n)}l&&\"function\"==typeof l&&l()}function Wc(e,n={}){if(\"left\"!=e&&\"right\"!=e&&!C(e))return vo.info(\"Type parameter not available\",\"\");C(e)&&(e=parseInt(e));let a=Mt(t.currentSheetIndex),{order:l=a,success:r}=g({},n),o=t.luckysheetfile[l];if(null==o)return vo.info(\"ncorrect worksheet index\",\"\");let i=o.index;if(\"left\"==e){if(0==l)return;let e=t.luckysheetfile[l-1].index;$(\"#luckysheet-sheets-item\"+i).insertBefore($(\"#luckysheet-sheets-item\"+e)),t.luckysheetfile.splice(l,1),t.luckysheetfile.splice(l-1,0,o)}else if(\"right\"==e){if(l==t.luckysheetfile.length-1)return;let e=t.luckysheetfile[l+1].index;$(\"#luckysheet-sheets-item\"+i).insertAfter($(\"#luckysheet-sheets-item\"+e)),t.luckysheetfile.splice(l,1),t.luckysheetfile.splice(l+1,0,o)}else{if(e<0&&(e=0),e>t.luckysheetfile.length-1&&(e=t.luckysheetfile.length-1),e==l)return;if(e<l){let n=t.luckysheetfile[e].index;$(\"#luckysheet-sheets-item\"+i).insertBefore($(\"#luckysheet-sheets-item\"+n))}else{let n=t.luckysheetfile[e].index;$(\"#luckysheet-sheets-item\"+i).insertAfter($(\"#luckysheet-sheets-item\"+n))}t.luckysheetfile.splice(l,1),t.luckysheetfile.splice(e,0,o)}let s={};t.luckysheetfile.forEach(((e,t,n)=>{n[t].order=t,s[e.index.toString()]=t})),yo.saveParam(\"shr\",null,s),r&&\"function\"==typeof r&&r()}function Yc(e,n={}){if(null==e||0==e.length)return vo.info(\"Type orderList not available\",\"\");let a={};e.forEach((e=>{a[e.index.toString()]=e.order})),t.luckysheetfile.sort(((e,t)=>{let n=a[e.index.toString()],l=a[t.index.toString()];return null!=n&&null!=l?n-l:null!=n?-1:1}));let l={};t.luckysheetfile.forEach(((e,t,n)=>{if(n[t].order=t,l[e.index.toString()]=t,t>0){let a=n[t-1].index;$(\"#luckysheet-sheets-item\"+e.index).insertAfter($(\"#luckysheet-sheets-item\"+a))}})),yo.saveParam(\"shr\",null,l);let{success:r}=g({},n);r&&\"function\"==typeof r&&r()}function Xc(e,n={}){if(!C(e)||e<.1||e>4)return vo.info(\"The zoom parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");if(r.zoomRatio=e,yo.saveParam(\"all\",r.index,e,{k:\"zoomRatio\"}),r.index==t.currentSheetIndex){t.zoomRatio=e;let n=ki.getSheetByIndex();rl.images=n.images,rl.allImagesShow(),rl.init(),yi(),pi()}l&&\"function\"==typeof l&&l()}function Kc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e),l=t.luckysheetfile[n];return null==l?vo.info(\"The order parameter is invalid.\",\"\"):(l.showGridLines=!0,l.index==t.currentSheetIndex&&(t.showGridLines=!0,setTimeout((function(){uo()}),1)),setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),l)}function Zc(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e),l=t.luckysheetfile[n];return null==l?vo.info(\"The order parameter is invalid.\",\"\"):(l.showGridLines=!1,l.index==t.currentSheetIndex&&(t.showGridLines=!1,setTimeout((function(){uo()}),1)),setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),l)}function Jc(e={}){ao();let{success:t}=g({},e);t&&\"function\"==typeof t&&t()}function Qc(e={}){let{scrollLeft:n,scrollTop:a,targetRow:l,targetColumn:r,success:o}=g({},e);if(null!=n){if(!C(n))return vo.info(\"The scrollLeft parameter is invalid.\",\"\");$(\"#luckysheet-scrollbar-x\").scrollLeft(n)}else if(null!=r){if(!C(r))return vo.info(\"The targetColumn parameter is invalid.\",\"\");t.visibledatacolumn[r];let e=r<=0?0:t.visibledatacolumn[r-1];$(\"#luckysheet-scrollbar-x\").scrollLeft(e)}if(null!=a){if(!C(a))return vo.info(\"The scrollTop parameter is invalid.\",\"\");$(\"#luckysheet-scrollbar-y\").scrollTop(a)}else if(null!=l){if(!C(l))return vo.info(\"The targetRow parameter is invalid.\",\"\");t.visibledatarow[l];let e=l<=0?0:t.visibledatarow[l-1];$(\"#luckysheet-scrollbar-y\").scrollTop(e)}o&&\"function\"==typeof o&&o()}function eu(e={}){Dl();let{success:t}=g({},e);t&&\"function\"==typeof t&&t()}function tu(e={}){let{range:n=t.luckysheet_select_save[t.luckysheet_select_save.length-1]}=g({},e);if(\"string\"==ad(n)){if(!wi.iscelldata(n))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(n);n={row:e.row,column:e.column}}if(\"object\"!=ad(n)||null==n.row||null==n.column)return vo.info(\"The range parameter is invalid.\",\"\");let a=n.row[0],l=n.row[1],r=n.column[0],o=n.column[1];if(A(t.config,a,l,r,o))return vo.info(\"Cannot perform this operation on partially merged cells\",\"\");let i,s,c,u,d=t.visibledatarow,h=t.visibledatacolumn;a-1<0?(i=0,s=d[l]):(i=d[a-1],s=d[l]-d[a-1]),r-1<0?(c=0,u=h[o]):(c=h[r-1],u=h[o]-h[r-1]);let f=$(\"<canvas>\").attr({width:Math.ceil(u*t.devicePixelRatio),height:Math.ceil(s*t.devicePixelRatio)}).css({width:u,height:s});jr(c,i,u,s,1,1,null,null,f);let m=f.get(0).getContext(\"2d\");return m.beginPath(),m.moveTo(0,0),m.lineTo(0,t.devicePixelRatio*s),m.lineWidth=2*t.devicePixelRatio,m.strokeStyle=Rt.strokeStyle,m.stroke(),m.closePath(),m.beginPath(),m.moveTo(0,0),m.lineTo(t.devicePixelRatio*u,0),m.lineWidth=2*t.devicePixelRatio,m.strokeStyle=Rt.strokeStyle,m.stroke(),m.closePath(),f.get(0).toDataURL(\"image/png\")}function nu(e,t={}){if(null==e||0==e.toString().length)return vo.info(\"The name parameter is invalid.\",\"\");$(\"#luckysheet_info_detail_input\").val(e);let{success:n}=g({},t);n&&\"function\"==typeof n&&n()}function au(e={}){let t=\"\",n=$(\"#luckysheet_info_detail_input\");if(0==n.length)return vo.info(\"Failed to get workbook name, label loading failed!\"),t;t=$.trim(n.val());let{success:a}=g({},e);return setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),t}function lu(e={}){let n=$.extend(!0,{},t.jfredo[t.jfredo.length-1]);Si.redo(new Event(\"custom\")),hd();let{success:a}=g({},e);return setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),n}function ru(e={}){let n=$.extend(!0,{},t.jfundo[t.jfundo.length-1]);Si.undo(new Event(\"custom\")),hd();let{success:a}=g({},e);return setTimeout((()=>{a&&\"function\"==typeof a&&a()}),1),n}function ou(){let e=$.extend(!0,[],t.luckysheetfile);return e.forEach(((e,t,n)=>{null!=e.data&&e.data.length>0&&(e.celldata=ki.getGridData(e.data)),delete e.load,delete e.freezen})),e}function iu(e){let n=$.extend(!0,[],t.luckysheetfile),a={};n.forEach(((e,t,n)=>{e.hasOwnProperty(\"chart\")&&e.chart.length>0&&(a[e.index]={},e.chart.forEach((t=>{let n=document.querySelector(`#${t.chart_id}`),l=echarts.getInstanceByDom(n);l.resize({width:t.width,height:t.height,animation:{duration:0}}),a[e.index][t.chart_id]=l})))})),setTimeout((()=>{for(let e in a)if(Object.hasOwnProperty.call(a,e)){let t=a[e];for(let e in t)if(Object.hasOwnProperty.call(t,e)){let n=t[e];t[e]=n.getDataURL()}}e&&e(a)}),500)}function su(e={}){let{index:n,order:a,name:l}=g({},e);return null!=n?ki.getSheetByIndex(n):null!=a?t.luckysheetfile[a]:null!=l?ki.getSheetByName(l):ki.getSheetByIndex()}function cu(e={}){let{order:n=Mt(t.currentSheetIndex)}=g({},e),a=t.luckysheetfile[n];if(null==a)return vo.info(\"The order parameter is invalid.\",\"\");let l=$.extend(!0,[],a.data);return(null==l||0==l.length)&&(l=$.extend(!0,[],ki.buildGridData(a))),l}function uu(e={}){let{order:n=Mt(t.currentSheetIndex)}=g({},e),a=t.luckysheetfile[n];return null==a?vo.info(\"The order parameter is invalid.\",\"\"):$.extend(!0,{},a.config)}function du(e,n={}){if(\"object\"!=ad(e))return vo.info(\"The cfg parameter is invalid.\",\"\");let{order:a=Mt(t.currentSheetIndex),success:l}=g({},n),r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");r.config=e,r.index==t.currentSheetIndex&&(t.config=e,(\"rowhidden\"in e||\"colhidden\"in e||\"rowlen\"in e||\"columnlen\"in e)&&co(t.flowdata.length,t.flowdata[0].length),setTimeout((function(){uo()}),1)),l&&\"function\"==typeof l&&l()}function hu(){return zt()}function fu(e,n={}){if(\"object\"!=ad(e))return vo.info(\"The optionItem parameter is invalid.\",\"\");let{type:a,type2:l=null,value1:r=\"\",value2:o=\"\",remote:i=!1,prohibitInput:s=!1,hintShow:c=!1,hintText:u=\"\",checked:d=!1}=g({},e),h=[\"bw\",\"nb\",\"eq\",\"ne\",\"gt\",\"lt\",\"gte\",\"lte\"],f=[\"include\",\"exclude\",\"equal\"],m=[\"bw\",\"nb\",\"eq\",\"ne\",\"bf\",\"nbf\",\"af\",\"naf\"];if(![\"dropdown\",\"checkbox\",\"number\",\"number_integer\",\"number_decimal\",\"text_content\",\"text_length\",\"date\",\"validity\"].includes(a))return vo.info(\"The optionItem.type parameter is invalid.\",\"\");let p=X().dataVerification;if(\"dropdown\"==a){if(0==r.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo1)}else if(\"checkbox\"==a){if(0==r.length||0==o.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo2)}else if(\"number\"==a||\"number_integer\"==a||\"number_decimal\"==a){if(!h.includes(l))return vo.info(\"The optionItem.type2 parameter is invalid.\",\"\");if(!C(r))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo3);if(\"bw\"==l||\"nb\"==l){if(!C(o))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo3);if(Number(o)<Number(r))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo4)}}else if(\"text_content\"==a){if(!f.includes(l))return vo.info(\"The optionItem.type2 parameter is invalid.\",\"\");if(0==r.length)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo5)}else if(\"text_length\"==a){if(!h.includes(l))return vo.info(\"The optionItem.type2 parameter is invalid.\",\"\");if(!C(r))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo3);if(\"bw\"==l||\"nb\"==l){if(!C(o))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo3);if(Number(o)<Number(r))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo4)}}else if(\"date\"==a){if(!m.includes(l))return vo.info(\"The optionItem.type2 parameter is invalid.\",\"\");if(!pa(r))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo6);if(\"bw\"==l||\"nb\"==l){if(!pa(o))return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo6);if(ga(r,o)>0)return void vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',p.tooltipInfo7)}}else if(\"validity\"==a&&![\"card\",\"phone\"].includes(l))return vo.info(\"The optionItem.type2 parameter is invalid.\",\"\");if(\"boolean\"!=ad(i))return vo.info(\"The optionItem.remote parameter is invalid.\",\"\");if(\"boolean\"!=ad(s))return vo.info(\"The optionItem.prohibitInput parameter is invalid.\",\"\");if(\"boolean\"!=ad(c))return vo.info(\"The optionItem.hintShow parameter is invalid.\",\"\");let{range:y=t.luckysheet_select_save[t.luckysheet_select_save.length-1],order:v=Mt(t.currentSheetIndex),success:b}=g({},n);if(\"string\"==ad(y)){if(!wi.iscelldata(y))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(y);y={row:e.row,column:e.column}}if(\"object\"!=ad(y)||null==y.row||null==y.column)return vo.info(\"The range parameter is invalid.\",\"\");let k=t.luckysheetfile[v];if(null==k)return vo.info(\"The order parameter is invalid.\",\"\");let w={type:a,type2:l,value1:r,value2:o,checked:d,remote:i,prohibitInput:s,hintShow:c,hintText:u},x=$.extend(!0,{},k.dataVerification),_=$.extend(!0,[],k.data);0==_.length&&(_=ki.buildGridData(k));let T=y.row[0],S=y.row[1],I=y.column[0],R=y.column[1];for(let e=T;e<=S;e++)for(let t=I;t<=R;t++)x[e+\"_\"+t]=w,\"checkbox\"==a&&Na(e,t,_,w.checked?w.value1:w.value2);if(k.index==t.currentSheetIndex){let e=$.extend(!0,{},k.dataVerification);\"checkbox\"==a?sl.refOfCheckbox(e,x,t.currentSheetIndex,_,y):sl.ref(e,x,t.currentSheetIndex)}else k.dataVerification=x,k.data=_;b&&\"function\"==typeof b&&b()}function mu(e={}){let{range:n=t.luckysheet_select_save[t.luckysheet_select_save.length-1],order:a=Mt(t.currentSheetIndex),success:l}=g({},e);if(\"string\"==ad(n)){if(!wi.iscelldata(n))return vo.info(\"The range parameter is invalid.\",\"\");let e=wi.getcellrange(n);n={row:e.row,column:e.column}}if(\"object\"!=ad(n)||null==n.row||null==n.column)return vo.info(\"The range parameter is invalid.\",\"\");let r=t.luckysheetfile[a];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=$.extend(!0,{},r.dataVerification),i=n.row[0],s=n.row[1],c=n.column[0],u=n.column[1];for(let e=i;e<=s;e++)for(let t=c;t<=u;t++)delete o[e+\"_\"+t];if(r.index==t.currentSheetIndex){let e=$.extend(!0,{},r.dataVerification);sl.ref(e,o,t.currentSheetIndex)}else r.dataVerification=o;l&&\"function\"==typeof l&&l()}function pu(e,n={}){let{order:a=Mt(t.currentSheetIndex),rowIndex:l,colIndex:r,success:o}=g({},n),i=t.luckysheetfile[a];if(null==i)return vo.info(\"The order parameter is invalid.\",\"\");if(i.index==t.currentSheetIndex){let n=t.luckysheet_select_save[t.luckysheet_select_save.length-1];null==l&&(l=n.row_focus||0),l<0&&(l=0),l>t.visibledatarow.length&&(l=t.visibledatarow.length),null==r&&(r=n.column_focus||0),r<0&&(r=0),r>t.visibledatacolumn.length&&(r=t.visibledatacolumn.length);let a=0==r?0:t.visibledatacolumn[r-1],i=0==l?0:t.visibledatarow[l-1],s=new Image;s.onload=function(){let t=s.width,n=s.height,l={src:e,left:a,top:i,originWidth:t,originHeight:n};rl.addImgItem(l),o&&\"function\"==typeof o&&o()},s.src=e}else{let n=i.images||{},a=i.config,s=i.zoomRatio||1,c=i.row,u=i.visibledatarow||[];if(0===u.length){let e=0;for(let n=0;n<c;n++){let l=t.defaultrowlen;(null!=a.rowlen&&null!=a.rowlen[n]&&(l=a.rowlen[n]),null==a.rowhidden||null==a.rowhidden[n])?(e+=Math.round((l+1)*s),u.push(e)):u.push(e)}}let d=i.column,h=i.visibledatacolumn||[];if(0===h.length){let e=0;for(let n=0;n<d;n++){let l=t.defaultcollen;(null!=a.columnlen&&null!=a.columnlen[n]&&(l=a.columnlen[n]),null==a.colhidden||null==a.colhidden[n])?(e+=Math.round((l+1)*s),h.push(e)):h.push(e)}}null==l&&(l=0),l<0&&(l=0),l>u.length&&(l=u.length),null==r&&(r=0),r<0&&(r=0),r>h.length&&(r=h.length);let f=0==r?0:h[r-1],m=0==l?0:u[l-1],p=new Image;p.onload=function(){let t,a,l={src:e,left:f,top:m,originWidth:p.width,originHeight:p.height},r=400;l.originHeight<l.originWidth?(a=Math.round(l.originHeight*(r/l.originWidth)),t=r):(t=Math.round(l.originWidth*(r/l.originHeight)),a=r);let s=$.extend(!0,{},rl.imgItem);s.src=l.src,s.originWidth=l.originWidth,s.originHeight=l.originHeight,s.default.width=t,s.default.height=a,s.default.left=l.left,s.default.top=l.top,s.crop.width=t,s.crop.height=a;let c=rl.generateRandomId();n[c]=s,i.images=n,o&&\"function\"==typeof o&&o()},p.src=e}}function gu(e,n={}){let{order:a=Mt(t.currentSheetIndex),rowIndex:l=0,colIndex:r=0,width:o,height:i,success:s}=n,c=t.luckysheetfile[a];if(!c)return vo.info(\"The order parameter is invalid.\",\"\");let u=t.visibledatarow,d=t.visibledatacolumn,h=0===l?0:u[l-1],f=0===r?0:d[r-1],m=new Image;m.onload=function(){let t=o||m.width,n=i||m.height,a=$.extend(!0,{},rl.imgItem);a.src=e,a.originWidth=m.width,a.originHeight=m.height,a.default.width=t,a.default.height=n,a.default.left=f,a.default.top=h,a.crop.width=t,a.crop.height=n;let l=rl.generateRandomId();c.images=c.images||{},c.images[l]=a,\"function\"==typeof s&&s()},m.src=e}function yu(e,n={}){let{order:a=Mt(t.currentSheetIndex),rowIndex:l=0,colIndex:r=0,width:o,height:i,offsetX:s,offsetY:c,success:u}=n,d=t.luckysheetfile[a];if(!d)return vo.info(\"The order parameter is invalid.\",\"\");let h=t.visibledatarow,f=t.visibledatacolumn,m=0===l?0:h[l-1],p=h[l]-m,g=0===r?0:f[r-1],y=f[r]-g,v=new Image;v.onload=function(){let t=o||v.width,n=i||v.height,a=g+(null!=s?s:(y-t)/2),l=m+(null!=c?c:(p-n)/2),r=$.extend(!0,{},rl.imgItem);r.src=e,r.originWidth=v.width,r.originHeight=v.height,r.default.width=t,r.default.height=n,r.default.left=a,r.default.top=l,r.crop.width=t,r.crop.height=n;let h=rl.generateRandomId();d.images=d.images||{},d.images[h]=r,\"function\"==typeof u&&u()},v.src=e}function vu(e={}){let{order:n=Mt(t.currentSheetIndex),idList:a=\"all\",success:l}=g({},e),r=t.luckysheetfile[n];if(null==r)return vo.info(\"The order parameter is invalid.\",\"\");let o=r.images;return null==o?vo.info(\"The worksheet has no pictures to delete.\",\"\"):\"all\"!=a&&\"array\"!=ad(a)?vo.info(\"The idList parameter is invalid.\",\"\"):(\"array\"==ad(a)?a.forEach((e=>{delete o[e]})):o=null,r.images=o,r.index==t.currentSheetIndex&&(null!=rl.currentImgId&&(\"all\"==a||a.includes(rl.currentImgId))&&($(\"#luckysheet-modal-dialog-activeImage\").hide(),$(\"#luckysheet-modal-dialog-cropping\").hide(),$(\"#luckysheet-modal-dialog-slider-imageCtrl\").hide()),rl.images=o,rl.allImagesShow(),rl.init()),void(l&&\"function\"==typeof l&&l()))}function bu(e={}){let{order:n=Mt(t.currentSheetIndex),success:a}=g({},e),l=t.luckysheetfile[n];return null==l?vo.info(\"The order parameter is invalid.\",\"\"):(setTimeout((function(){a&&\"function\"==typeof a&&a()}),1),l.images)}function ku(e,t={}){let{success:n}=g({},t);return setTimeout((()=>{n&&\"function\"==typeof n&&n()}),0),ki.getGridData(e)}function wu(e,t={}){let{success:n}=g({},t);return setTimeout((()=>{n&&\"function\"==typeof n&&n()}),0),ki.buildGridData({celldata:e})}function xu(){let e=t.toJsonOptions;return e.title=$(\"#luckysheet_info_detail_input\").val(),e.data=ou(),zt().forEach(((t,n)=>{null!=t.data&&(e.data[n].row=\"array\"===ad(t.data)?t.data.length:0,e.data[n].column=\"array\"===ad(t.data[0])?t.data[0].length:0)})),e}function _u(e=\"zh\"){if(![\"zh\",\"en\",\"es\"].includes(e))return vo.info(\"The lang parameter is invalid.\",\"\");let t=xu();t.lang=e,luckysheet.create(t)}function Cu(){null!=yo.websocket&&yo.websocket.close(1e3)}function Tu(e){if(null==e)return{column:t.luckysheet_select_save[t.luckysheet_select_save.length-1].column,row:t.luckysheet_select_save[t.luckysheet_select_save.length-1].row};let n=ko.getRangeByTxt(e);return{column:n[0].column,row:n[0].row}}function Su(e=t.luckysheet_select_save){return\"object\"===ad(e)&&(e=[e]),ko.getTxtByRange(e)}function $u(e){let{prevPage:t,nextPage:n,total:a}=X().button;$(\"#luckysheet-bottom-pager\").remove(),$(\"#luckysheet-sheet-content\").after('<div id=\"luckysheet-bottom-pager\" style=\"font-size: 14px; margin-left: 10px; display: inline-block;\"></div>'),$(\"#luckysheet-bottom-pager\").sPage({page:e.pageIndex,total:e.total,selectOption:e.selectOption,pageSize:e.pageSize,showTotal:e.showTotal,showSkip:e.showSkip,showPN:e.showPN,prevPage:e.prevPage||t,nextPage:e.nextPage||n,totalTxt:e.totalTxt||a+e.total,backFun:function(e){e.pageIndex=e.page,yl.createHookFunction(\"onTogglePager\",e)}})}function Iu(e){wi.execFunctionGroupForce(!0),uo(),setTimeout((()=>{e&&\"function\"==typeof e&&e()}))}function Ru(n={}){let{data:a,success:l}=n,r=t.luckysheetfile;for(let e=0;e<a.length;e++)for(let t=0;t<r.length;t++)r[t].index===a[e].index&&(r[t]=a[e]);let o=r[ki.getSheetIndex(t.currentSheetIndex)],i=ki.buildGridData(o);o.data=i,o.isPivotTable?(t.luckysheetcurrentisPivotTable=!0,isPivotInitial||wr.changePivotTable(index)):(t.luckysheetcurrentisPivotTable=!1,$(\"#luckysheet-modal-dialog-slider-pivot\").hide(),Dl(!1)),ki.mergeCalculation(o.index),ki.setSheetParam(),setTimeout((function(){ki.showSheet(),ki.restoreCache(),wi.execFunctionGroupForce(e.forceCalculation),ki.restoreSheetAll(t.currentSheetIndex),uo(),l&&\"function\"==typeof l&&l()}),1),yo.saveParam(\"shs\",null,t.currentSheetIndex)}function Au(e,n,a,l){if(e=e||t.flowdata,null==n&&null==a){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];n=e.row_focus||e.row[0],a=e.column_focus||e.column[0]}Yu.menuButtonFocus(e,n,a),setTimeout((()=>{l&&\"function\"==typeof l&&l()}))}function Du(e,n){return mc().every((({r:a,c:l})=>{let r=t.flowdata[a][l];return null!=r&&r[e]==n}))}function Fu(e=1){Cs.createDialog(e),Cs.init(),$(\"#luckysheet-search-replace #searchInput input\").focus()}b(Is,{cancelFrozen:()=>qs,cancelRangeMerge:()=>Rc,changLang:()=>_u,checkTheStatusOfTheSelectedCells:()=>Du,clearCell:()=>Ds,clearRange:()=>Nc,closeWebsocket:()=>Cu,deleteCell:()=>Fs,deleteColumn:()=>ec,deleteDataVerification:()=>mu,deleteImage:()=>vu,deleteRange:()=>Pc,deleteRangeConditionalFormat:()=>Mc,deleteRow:()=>Qs,deleteRowOrColumn:()=>Js,enterEditMode:()=>zs,exitEditMode:()=>Ps,find:()=>Ms,frozenColumnRange:()=>Vs,frozenFirstColumn:()=>Os,frozenFirstRow:()=>Ls,frozenRowRange:()=>Bs,getAllChartsBase64:()=>iu,getAllSheets:()=>ou,getCellValue:()=>Rs,getColumnWidth:()=>uc,getConfig:()=>uu,getDefaultColWidth:()=>hc,getDefaultRowHeight:()=>dc,getImageOption:()=>bu,getLuckysheetfile:()=>hu,getRange:()=>fc,getRangeArray:()=>bc,getRangeAxis:()=>gc,getRangeBoolean:()=>xc,getRangeByTxt:()=>Tu,getRangeDiagonal:()=>wc,getRangeHtml:()=>vc,getRangeJson:()=>kc,getRangeValue:()=>yc,getRangeValuesWithFlatte:()=>pc,getRangeWithFlatten:()=>mc,getRowHeight:()=>cc,getScreenshot:()=>tu,getSheet:()=>su,getSheetData:()=>cu,getTxtByRange:()=>Su,getWorkbookName:()=>au,hideColumn:()=>rc,hideGridLines:()=>Zc,hideRow:()=>ac,hideRowOrColumn:()=>tc,insertColumn:()=>Ks,insertColumnRight:()=>Zs,insertImage:()=>pu,insertImageWithSize:()=>gu,insertImageWithSizeAndOffset:()=>yu,insertRow:()=>Ys,insertRowBottom:()=>Xs,insertRowBottomOrColumnRight:()=>Ws,insertRowOrColumn:()=>Gs,matrixCalculation:()=>Lc,matrixOperation:()=>zc,openSearchDialog:()=>Fu,pagerInit:()=>$u,redo:()=>ru,refresh:()=>Jc,refreshFormula:()=>Iu,refreshMenuButtonFocus:()=>Au,replace:()=>Ns,resize:()=>eu,scroll:()=>Qc,selectionCopy:()=>Mu,setBothFrozen:()=>js,setCellFormat:()=>Es,setCellValue:()=>As,setColumnWidth:()=>sc,setConfig:()=>du,setDataVerification:()=>fu,setHorizontalFrozen:()=>Hs,setRangeConditionalFormat:()=>Ec,setRangeConditionalFormatDefault:()=>Fc,setRangeFilter:()=>$c,setRangeFormat:()=>Sc,setRangeMerge:()=>Ic,setRangeShow:()=>_c,setRangeSort:()=>Ac,setRangeSortMulti:()=>Dc,setRangeValue:()=>Cc,setRowHeight:()=>ic,setSheetActive:()=>Uc,setSheetAdd:()=>Oc,setSheetColor:()=>Gc,setSheetCopy:()=>Vc,setSheetDelete:()=>Bc,setSheetHide:()=>qc,setSheetMove:()=>Wc,setSheetName:()=>jc,setSheetOrder:()=>Yc,setSheetShow:()=>Hc,setSheetZoom:()=>Xc,setSingleRangeFormat:()=>Tc,setVerticalFrozen:()=>Us,setWorkbookName:()=>nu,showColumn:()=>oc,showGridLines:()=>Kc,showRow:()=>lc,showRowOrColumn:()=>nc,toJson:()=>xu,transToCellData:()=>ku,transToData:()=>wu,undo:()=>lu,updataSheet:()=>Ru});var Eu,Mu,Nu=y((()=>{x(),_d(),qt(),K(),kl(),Ci(),No(),Co(),Qa(),gn(),Ci(),Io(),Ma(),Pa(),Lr(),da(),Yn(),fo(),pl(),E(),ka(),Il(),eo(),Vr(),_o(),ed(),So(),w(),Al(),zl(),_i(),To(),Kn(),Xu(),Et(),ol(),Di(),xi(),cl(),il(),Eu=k(ma()),qt(),Ts(),$s(),Mu=Vu}));function Pu(e=!1){if($(\"#luckysheet-cell-selected-boxs\").show(),$(\"#luckysheet-cell-selected-boxs #luckysheet-cell-selected\").siblings(\".luckysheet-cell-selected\").remove(),t.luckysheet_select_save.length>0){for(let e=0;e<t.luckysheet_select_save.length;e++){let n,a,l=t.luckysheet_select_save[e].row[0],r=t.luckysheet_select_save[e].row[1],o=t.luckysheet_select_save[e].column[0],i=t.luckysheet_select_save[e].column[1];n=null==t.luckysheet_select_save[e].row_focus?l:t.luckysheet_select_save[e].row_focus,a=null==t.luckysheet_select_save[e].column_focus?o:t.luckysheet_select_save[e].column_focus;let s=t.visibledatarow[r],c=l-1==-1?0:t.visibledatarow[l-1],u=t.visibledatacolumn[i],d=o-1==-1?0:t.visibledatacolumn[o-1],h=t.visibledatarow[n],f=n-1==-1?0:t.visibledatarow[n-1],m=t.visibledatacolumn[a],p=a-1==-1?0:t.visibledatacolumn[a-1],g=Yu.mergeborer(t.flowdata,n,a);g&&(h=g.row[1],f=g.row[0],m=g.column[1],p=g.column[0]),t.luckysheet_select_save[e].row=[l,r],t.luckysheet_select_save[e].column=[o,i],t.luckysheet_select_save[e].row_focus=n,t.luckysheet_select_save[e].column_focus=a,t.luckysheet_select_save[e].left=p,t.luckysheet_select_save[e].width=m-p-1,t.luckysheet_select_save[e].top=f,t.luckysheet_select_save[e].height=h-f-1,t.luckysheet_select_save[e].left_move=d,t.luckysheet_select_save[e].width_move=u-d-1,t.luckysheet_select_save[e].top_move=c,t.luckysheet_select_save[e].height_move=s-c-1,0==e?1==t.luckysheet_select_save.length?Gt.mobilecheck()?$(\"#luckysheet-cell-selected-boxs #luckysheet-cell-selected\").css({left:t.luckysheet_select_save[e].left_move,width:t.luckysheet_select_save[e].width_move,top:t.luckysheet_select_save[e].top_move,height:t.luckysheet_select_save[e].height_move,display:\"block\",border:\"1px solid #0188fb\"}).find(\".luckysheet-cs-draghandle\").css(\"display\",\"block\").end().find(\".luckysheet-cs-fillhandle\").css(\"display\",\"none\").end().find(\".luckysheet-cs-touchhandle\").css(\"display\",\"block\"):$(\"#luckysheet-cell-selected-boxs #luckysheet-cell-selected\").css({left:t.luckysheet_select_save[e].left_move,width:t.luckysheet_select_save[e].width_move,top:t.luckysheet_select_save[e].top_move,height:t.luckysheet_select_save[e].height_move,display:\"block\",border:\"1px solid #0188fb\"}).find(\".luckysheet-cs-draghandle\").css(\"display\",\"block\").end().find(\".luckysheet-cs-fillhandle\").css(\"display\",\"block\").end().find(\".luckysheet-cs-touchhandle\").css(\"display\",\"none\"):$(\"#luckysheet-cell-selected-boxs #luckysheet-cell-selected\").css({left:t.luckysheet_select_save[e].left_move,width:t.luckysheet_select_save[e].width_move,top:t.luckysheet_select_save[e].top_move,height:t.luckysheet_select_save[e].height_move,display:\"block\",border:\"1px solid rgba(1, 136, 251, 0.15)\"}).find(\".luckysheet-cs-draghandle\").css(\"display\",\"none\").end().find(\".luckysheet-cs-fillhandle\").css(\"display\",\"none\"):$(\"#luckysheet-cell-selected-boxs\").append('<div class=\"luckysheet-cell-selected\" style=\"left: '+t.luckysheet_select_save[e].left_move+\"px; width: \"+t.luckysheet_select_save[e].width_move+\"px; top: \"+t.luckysheet_select_save[e].top_move+\"px; height: \"+t.luckysheet_select_save[e].height_move+'px; border: 1px solid rgba(1, 136, 251, 0.15); display: block;\"></div>'),e==t.luckysheet_select_save.length-1&&($(\"#luckysheet-cell-selected-focus\").css({left:t.luckysheet_select_save[e].left,width:t.luckysheet_select_save[e].width,top:t.luckysheet_select_save[e].top,height:t.luckysheet_select_save[e].height,display:\"block\"}),qu(t.luckysheet_select_save[e].left_move,t.luckysheet_select_save[e].top_move,t.luckysheet_select_save[e].width_move,t.luckysheet_select_save[e].height_move,[l,r],[o,i]),wi.fucntionboxshow(n,a),sl.cellFocus(n,a))}(function(e){let t=$.extend(!0,[],e),n={},a={};for(let e=0;e<t.length;e++){let l=t[e].row[0],r=t[e].row[1],o=t[e].column[0],i=t[e].column[1];n=zu(n,l,r),a=zu(a,o,i)}$(\"#luckysheet-rows-h-selected\").empty();let l=Lu(n);for(let e=0;e<l.length;e++){let t=l[e][0],n=Zn(l[e][l[e].length-1])[1],a=Zn(t)[0];$(\"#luckysheet-rows-h-selected\").append('<div class=\"luckysheet-rows-h-selected\" style=\"top: '+a+\"px; height: \"+(n-a-1)+'px; display: block; background-color: rgba(76, 76, 76, 0.1);\"></div>')}$(\"#luckysheet-cols-h-selected\").empty();let r=Lu(a);for(let e=0;e<r.length;e++){let t=r[e][0],n=Qn(r[e][r[e].length-1])[1],a=Qn(t)[0];$(\"#luckysheet-cols-h-selected\").append('<div class=\"luckysheet-cols-h-selected\" style=\"left: '+a+\"px; width: \"+(n-a-1)+'px; display: block; background-color: rgba(76, 76, 76, 0.1);\"></div>')}})(t.luckysheet_select_save,e),Hu(),1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]&&function(e,n){let a=null==t.luckysheetfile[Mt(t.currentSheetIndex)].dynamicArray?[]:t.luckysheetfile[Mt(t.currentSheetIndex)].dynamicArray,l=yn(a);if(e+\"_\"+n in l&&\"#SPILL!\"!=l[e+\"_\"+n].v){let r,o,i=l[e+\"_\"+n].r,s=l[e+\"_\"+n].c,c=t.flowdata[i][s].f;for(let e=0;e<a.length;e++)a[e].f==c&&(r=a[e].data.length,o=\"array\"==ad(a[e].data[0])?a[e].data[0].length:1);let u=i+r-1,d=s+o-1,h=t.visibledatarow[u],f=i-1==-1?0:t.visibledatarow[i-1],m=t.visibledatacolumn[d],p=s-1==-1?0:t.visibledatacolumn[s-1];$(\"#luckysheet-dynamicArray-hightShow\").css({left:p,width:m-p-1,top:f,height:h-f-1,display:\"block\"})}else $(\"#luckysheet-dynamicArray-hightShow\").hide()}(t.luckysheet_select_save[0].row[0],t.luckysheet_select_save[0].column[0]),Au()}t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_select_save=t.luckysheet_select_save;let n=JSON.stringify(t.luckysheet_select_save);null==t.luckysheet_select_save_previous|t.luckysheet_select_save_previous!==n&&yl.createHookFunction(\"rangeSelect\",t.luckysheetfile[Mt(t.currentSheetIndex)],t.luckysheet_select_save),t.luckysheet_select_save_previous=n}function zu(e,t,n){let a=$.extend(!0,{},e);for(let e=t;e<=n;e++)e in a||(a[e]=0);return a}function Lu(e){let t=[];for(let n in e)t.push(n);t.sort((function(e,t){return e-t}));let n=[],a=[];if(t.length>1)for(let e=1;e<t.length;e++)t[e]-t[e-1]==1?(a.push(t[e-1]),e==t.length-1&&(a.push(t[e]),n.push(a))):1==e?e==t.length-1?(a.push(t[e-1]),n.push(a),n.push([t[e]])):n.push(t[0]):e==t.length-1?(a.push(t[e-1]),n.push(a),n.push([t[e]])):(a.push(t[e-1]),n.push(a),a=[]);else n.push([t[0]]);return n}function Ou(e){null==e&&(e=t.luckysheet_select_save),e=JSON.parse(JSON.stringify(e));let n=!1,a={};for(let t=0;t<e.length;t++){let l=e[t].row[0],r=e[t].row[1],o=e[t].column[0],i=e[t].column[1];for(let e=l;e<=r;e++)for(let t=o;t<=i;t++){if(e+\"_\"+t in a){n=!0;break}a[e+\"_\"+t]=0}}return n}function Bu(){let e=t.visibledatacolumn,n=t.visibledatarow;t.cooperativeEdit.changeCollaborationSize.forEach((a=>{if(a.i==t.currentSheetIndex){let l=a.v.column,r=e[l[0]]-1;0!==a.v.column[0]&&(r=e[l[1]]-e[l[0]-1]-(l[1]-l[0]+1));let o=a.v.row,i=n[o[0]]-1;0!==a.v.row[0]&&(i=n[o[1]]-n[o[0]-1]-(o[1]-o[0]+1));let s=t.cooperativeEdit.merge_range,c=e[a.v.column[0]-1]-1,u=n[a.v.row[0]-1]-1;if(null!==t.config.columnlen)for(let e in t.config.columnlen)if(a.v.column[0]<=e&&e<=a.v.column[1]){t.luckysheet_cols_change_size_start[1]=e-0;break}if(null!==t.config.rowlen)for(let e in t.config.rowlen)if(a.v.row[0]<=e&&e<=a.v.row[1]){t.luckysheet_rows_change_size_start[1]=e-0;break}if(a.v.column[0]<=t.luckysheet_cols_change_size_start[1]&&t.luckysheet_cols_change_size_start[1]<=a.v.column[1])if(0==t.luckysheet_cols_change_size_start[1])r=e[0]-1;else{let t=a.v.column;r=e[t[1]]-e[t[0]-1]-(t[1]-t[0]+1)}if(a.v.row[0]<=t.luckysheet_rows_change_size_start[1]&&t.luckysheet_rows_change_size_start[1]<=a.v.row[1])if(0==t.luckysheet_rows_change_size_start[1])i=n[0]-1;else{let e=a.v.row;i=n[e[1]]-n[e[0]-1]-(e[1]-e[0]+1)}if(Object.keys(s).length>0){let t=!1;if(s.v.length>1&&(t=null==s.v[1][0]||Object.keys(s.v[1][0]).length>0),s.v[0].length>1&&(t=null==s.v[0][1]||Object.keys(s.v[0][1]).length>0),t){let t=s.column[0]<=a.v.column[0]&&s.column[1]>=a.v.column[1];if(c=e[s.column[0]-1]-1,u=n[s.row[0]-1]-1,r=e[s.column[1]]-1,i=n[s.row[1]]-1,t){if(0!==s.column[0]){let t=s.column;r=e[t[1]]-e[t[0]-1]-(t[1]-t[0]+1)}else c=0;a.v.column=s.column}if(s.row[0]<=a.v.row[0]&&s.row[1]>=a.v.row[1]){if(0!==s.row[0]){let e=s.row;i=n[e[1]]-n[e[0]-1]-(e[1]-e[0]+1)}else u=0;a.v.row=s.row}}else r=e[l[0]]-e[l[0]-1]-1,0===l[0]&&(r=e[l[0]]-1),i=n[o[0]]-n[o[0]-1]-1,0===o[0]&&(i=n[o[0]]-1)}$(\"#luckysheet-multipleRange-show-\"+a.id).css({height:i,width:r,top:u+\"px\",left:c+\"px\"});let d=$(\"#luckysheet-multipleRange-show-\"+a.id)[0].offsetHeight-1;$(\"#luckysheet-multipleRange-show-\"+a.id+\">.username\").css({bottom:d+\"px\"})}}))}function Vu(e){if($(\"#luckysheet-selection-copy\").empty(),null==e&&(e=t.luckysheet_selection_range),(e=JSON.parse(JSON.stringify(e))).length>0)for(let n=0;n<e.length;n++){let a=e[n].row[0],l=e[n].row[1],r=e[n].column[0],o=e[n].column[1],i=t.visibledatarow[l],s=a-1==-1?0:t.visibledatarow[a-1],c=t.visibledatacolumn[o],u=r-1==-1?0:t.visibledatacolumn[r-1],d='<div class=\"luckysheet-selection-copy\" style=\"display: block; left: '+u+\"px; width: \"+(c-u-1)+\"px; top: \"+s+\"px; height: \"+(i-s-1)+'px;\"><div class=\"luckysheet-selection-copy-top luckysheet-copy\"></div><div class=\"luckysheet-selection-copy-right luckysheet-copy\"></div><div class=\"luckysheet-selection-copy-bottom luckysheet-copy\"></div><div class=\"luckysheet-selection-copy-left luckysheet-copy\"></div><div class=\"luckysheet-selection-copy-hc\"></div></div>';$(\"#luckysheet-selection-copy\").append(d)}}function qu(e,n,a,l,r,o){let i=r[1]-r[0]+1,s=o[1]-o[0]+1,c=t.luckysheetTableContentHW[0],u=t.luckysheetTableContentHW[1],d=$(\"#luckysheet-cell-main\").scrollLeft(),h=$(\"#luckysheet-cell-main\").scrollTop(),f=X().info;if(i>=4){let t=e-25;t<0&&(t=e+5),t<d&&(t=d+10);let a=n+l/2;l>u&&(a=h+u/2),$(\"#luckysheet-row-count-show\").css({left:t,top:a,display:\"block\",width:\"11px\"}).html(\"<div>\"+i.toString().split(\"\").join(\"</div><div>\")+\"</div><div>\"+f.row+\"</div>\")}else $(\"#luckysheet-row-count-show\").hide();if(s>=4){let t=n-25;t<0&&(t=n+5),t<h&&(t=h+10);let l=e+a/2;a>c&&(l=d+c/2),$(\"#luckysheet-column-count-show\").css({left:l,top:t,display:\"block\"}).text(s+f.column)}else $(\"#luckysheet-column-count-show\").hide()}function Hu(){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1],n=e.row_focus,a=e.column_focus;null!=t.config.merge&&n+\"_\"+a in t.config.merge?$(\"#luckysheet-helpbox-cell\").text(Nt(t.currentSheetIndex,{column:[a,a],row:[n,n]})):$(\"#luckysheet-helpbox-cell\").text(Nt(t.currentSheetIndex,e))}var Uu,ju,Gu,Wu,Yu,Xu=y((()=>{ed(),Ci(),kn(),na(),Yt(),cl(),qt(),x(),kl(),K(),Nu()})),Ku=y((()=>{_d(),Et(),ed(),gn(),Co(),E(),x(),K(),Uu={moneyFmtList:[{name:\"人民币\",pos:\"before\",value:\"¥\"},{name:\"美元\",pos:\"before\",value:\"$\"},{name:\"欧元\",pos:\"before\",value:\"€\"},{name:\"英镑\",pos:\"before\",value:\"￡\"},{name:\"港元\",pos:\"before\",value:\"$\"},{name:\"日元\",pos:\"before\",value:\"￥\"},{name:\"阿尔巴尼亚列克\",pos:\"before\",value:\"Lek\"},{name:\"阿尔及利亚第纳尔\",pos:\"before\",value:\"din\"},{name:\"阿富汗尼\",pos:\"after\",value:\"Af\"},{name:\"阿根廷比索\",pos:\"before\",value:\"$\"},{name:\"阿拉伯联合酋长国迪拉姆\",pos:\"before\",value:\"dh\"},{name:\"阿鲁巴弗罗林\",pos:\"before\",value:\"Afl\"},{name:\"阿曼里亚尔\",pos:\"before\",value:\"Rial\"},{name:\"阿塞拜疆马纳特\",pos:\"before\",value:\"?\"},{name:\"埃及镑\",pos:\"before\",value:\"￡\"},{name:\"埃塞俄比亚比尔\",pos:\"before\",value:\"Birr\"},{name:\"安哥拉宽扎\",pos:\"before\",value:\"Kz\"},{name:\"澳大利亚元\",pos:\"before\",value:\"$\"},{name:\"澳门元\",pos:\"before\",value:\"MOP\"},{name:\"巴巴多斯元\",pos:\"before\",value:\"$\"},{name:\"巴布亚新几内亚基那\",pos:\"before\",value:\"PGK\"},{name:\"巴哈马元\",pos:\"before\",value:\"$\"},{name:\"巴基斯坦卢比\",pos:\"before\",value:\"Rs\"},{name:\"巴拉圭瓜拉尼\",pos:\"after\",value:\"Gs\"},{name:\"巴林第纳尔\",pos:\"before\",value:\"din\"},{name:\"巴拿马巴波亚\",pos:\"before\",value:\"B/\"},{name:\"巴西里亚伊\",pos:\"before\",value:\"R$\"},{name:\"白俄罗斯卢布\",pos:\"after\",value:\"р\"},{name:\"百慕大元\",pos:\"before\",value:\"$\"},{name:\"保加利亚列弗\",pos:\"before\",value:\"lev\"},{name:\"冰岛克朗\",pos:\"before\",value:\"kr\"},{name:\"波黑可兑换马克\",pos:\"before\",value:\"KM\"},{name:\"波兰兹罗提\",pos:\"after\",value:\"z?\"},{name:\"玻利维亚诺\",pos:\"before\",value:\"Bs\"},{name:\"伯利兹元\",pos:\"before\",value:\"$\"},{name:\"博茨瓦纳普拉\",pos:\"before\",value:\"P\"},{name:\"不丹努扎姆\",pos:\"before\",value:\"Nu\"},{name:\"布隆迪法郎\",pos:\"before\",value:\"FBu\"},{name:\"朝鲜圆\",pos:\"before\",value:\"?KP\"},{name:\"丹麦克朗\",pos:\"after\",value:\"kr\"},{name:\"东加勒比元\",pos:\"before\",value:\"$\"},{name:\"多米尼加比索\",pos:\"before\",value:\"RD$\"},{name:\"俄国卢布\",pos:\"after\",value:\"?\"},{name:\"厄立特里亚纳克法\",pos:\"before\",value:\"Nfk\"},{name:\"非洲金融共同体法郎\",pos:\"before\",value:\"CFA\"},{name:\"菲律宾比索\",pos:\"before\",value:\"?\"},{name:\"斐济元\",pos:\"before\",value:\"$\"},{name:\"佛得角埃斯库多\",pos:\"before\",value:\"CVE\"},{name:\"福克兰群岛镑\",pos:\"before\",value:\"￡\"},{name:\"冈比亚达拉西\",pos:\"before\",value:\"GMD\"},{name:\"刚果法郎\",pos:\"before\",value:\"FrCD\"},{name:\"哥伦比亚比索\",pos:\"before\",value:\"$\"},{name:\"哥斯达黎加科朗\",pos:\"before\",value:\"?\"},{name:\"古巴比索\",pos:\"before\",value:\"$\"},{name:\"古巴可兑换比索\",pos:\"before\",value:\"$\"},{name:\"圭亚那元\",pos:\"before\",value:\"$\"},{name:\"哈萨克斯坦坚戈\",pos:\"before\",value:\"?\"},{name:\"海地古德\",pos:\"before\",value:\"HTG\"},{name:\"韩元\",pos:\"before\",value:\"?\"},{name:\"荷属安的列斯盾\",pos:\"before\",value:\"NAf.\"},{name:\"洪都拉斯拉伦皮拉\",pos:\"before\",value:\"L\"},{name:\"吉布提法郎\",pos:\"before\",value:\"Fdj\"},{name:\"吉尔吉斯斯坦索姆\",pos:\"before\",value:\"KGS\"},{name:\"几内亚法郎\",pos:\"before\",value:\"FG\"},{name:\"加拿大元\",pos:\"before\",value:\"$\"},{name:\"加纳塞地\",pos:\"before\",value:\"GHS\"},{name:\"柬埔寨瑞尔\",pos:\"before\",value:\"Riel\"},{name:\"捷克克朗\",pos:\"after\",value:\"K?\"},{name:\"津巴布韦元\",pos:\"before\",value:\"$\"},{name:\"卡塔尔里亚尔\",pos:\"before\",value:\"Rial\"},{name:\"开曼群岛元\",pos:\"before\",value:\"$\"},{name:\"科摩罗法郎\",pos:\"before\",value:\"CF\"},{name:\"科威特第纳尔\",pos:\"before\",value:\"din\"},{name:\"克罗地亚库纳\",pos:\"before\",value:\"kn\"},{name:\"肯尼亚先令\",pos:\"before\",value:\"Ksh\"},{name:\"莱索托洛蒂\",pos:\"before\",value:\"LSL\"},{name:\"老挝基普\",pos:\"before\",value:\"?\"},{name:\"黎巴嫩镑\",pos:\"before\",value:\"L￡\"},{name:\"立陶宛立特\",pos:\"before\",value:\"Lt\"},{name:\"利比亚第纳尔\",pos:\"before\",value:\"din\"},{name:\"利比亚元\",pos:\"before\",value:\"$\"},{name:\"卢旺达法郎\",pos:\"before\",value:\"RF\"},{name:\"罗马尼亚列伊\",pos:\"before\",value:\"RON\"},{name:\"马达加斯加阿里亚里\",pos:\"before\",value:\"Ar\"},{name:\"马尔代夫拉菲亚\",pos:\"before\",value:\"Rf\"},{name:\"马拉维克瓦查\",pos:\"before\",value:\"MWK\"},{name:\"马来西亚林吉特\",pos:\"before\",value:\"RM\"},{name:\"马其顿戴第纳尔\",pos:\"before\",value:\"din\"},{name:\"毛里求斯卢比\",pos:\"before\",value:\"MURs\"},{name:\"毛里塔尼亚乌吉亚\",pos:\"before\",value:\"MRO\"},{name:\"蒙古图格里克\",pos:\"before\",value:\"?\"},{name:\"孟加拉塔卡\",pos:\"before\",value:\"?\"},{name:\"秘鲁新索尔\",pos:\"before\",value:\"S/\"},{name:\"缅甸开亚特\",pos:\"before\",value:\"K\"},{name:\"摩尔多瓦列伊\",pos:\"before\",value:\"MDL\"},{name:\"摩洛哥迪拉姆\",pos:\"before\",value:\"dh\"},{name:\"莫桑比克梅蒂卡尔\",pos:\"before\",value:\"MTn\"},{name:\"墨西哥比索\",pos:\"before\",value:\"$\"},{name:\"纳米比亚元\",pos:\"before\",value:\"$\"},{name:\"南非兰特\",pos:\"before\",value:\"R\"},{name:\"南苏丹镑\",pos:\"before\",value:\"￡\"},{name:\"尼加拉瓜科多巴\",pos:\"before\",value:\"C$\"},{name:\"尼泊尔卢比\",pos:\"before\",value:\"Rs\"},{name:\"尼日利亚奈拉\",pos:\"before\",value:\"?\"},{name:\"挪威克朗\",pos:\"after\",value:\"kr\"},{name:\"乔治亚拉瑞\",pos:\"before\",value:\"GEL\"},{name:\"人民币（离岸）\",pos:\"before\",value:\"￥\"},{name:\"瑞典克朗\",pos:\"after\",value:\"kr\"},{name:\"瑞士法郎\",pos:\"before\",value:\"CHF\"},{name:\"塞尔维亚第纳尔\",pos:\"before\",value:\"din\"},{name:\"塞拉利昂利昂\",pos:\"before\",value:\"SLL\"},{name:\"塞舌尔卢比\",pos:\"before\",value:\"SCR\"},{name:\"沙特里亚尔\",pos:\"before\",value:\"Rial\"},{name:\"圣多美多布拉\",pos:\"before\",value:\"Db\"},{name:\"圣赫勒拿群岛磅\",pos:\"before\",value:\"￡\"},{name:\"斯里兰卡卢比\",pos:\"before\",value:\"Rs\"},{name:\"斯威士兰里兰吉尼\",pos:\"before\",value:\"SZL\"},{name:\"苏丹镑\",pos:\"before\",value:\"SDG\"},{name:\"苏里南元\",pos:\"before\",value:\"$\"},{name:\"所罗门群岛元\",pos:\"before\",value:\"$\"},{name:\"索马里先令\",pos:\"before\",value:\"SOS\"},{name:\"塔吉克斯坦索莫尼\",pos:\"before\",value:\"Som\"},{name:\"太平洋法郎\",pos:\"after\",value:\"FCFP\"},{name:\"泰国铢\",pos:\"before\",value:\"?\"},{name:\"坦桑尼亚先令\",pos:\"before\",value:\"TSh\"},{name:\"汤加潘加\",pos:\"before\",value:\"T$\"},{name:\"特立尼达和多巴哥元\",pos:\"before\",value:\"$\"},{name:\"突尼斯第纳尔\",pos:\"before\",value:\"din\"},{name:\"土耳其里拉\",pos:\"before\",value:\"?\"},{name:\"瓦努阿图瓦图\",pos:\"before\",value:\"VUV\"},{name:\"危地马拉格查尔\",pos:\"before\",value:\"Q\"},{name:\"委内瑞拉博利瓦\",pos:\"before\",value:\"Bs\"},{name:\"文莱元\",pos:\"before\",value:\"$\"},{name:\"乌干达先令\",pos:\"before\",value:\"UGX\"},{name:\"乌克兰格里夫尼亚\",pos:\"before\",value:\"грн.\"},{name:\"乌拉圭比索\",pos:\"before\",value:\"$\"},{name:\"乌兹别克斯坦苏姆\",pos:\"before\",value:\"so?m\"},{name:\"西萨摩亚塔拉\",pos:\"before\",value:\"WST\"},{name:\"新加坡元\",pos:\"before\",value:\"$\"},{name:\"新台币\",pos:\"before\",value:\"NT$\"},{name:\"新西兰元\",pos:\"before\",value:\"$\"},{name:\"匈牙利福林\",pos:\"before\",value:\"Ft\"},{name:\"叙利亚镑\",pos:\"before\",value:\"￡\"},{name:\"牙买加元\",pos:\"before\",value:\"$\"},{name:\"亚美尼亚德拉姆\",pos:\"before\",value:\"Dram\"},{name:\"也门里亚尔\",pos:\"before\",value:\"Rial\"},{name:\"伊拉克第纳尔\",pos:\"before\",value:\"din\"},{name:\"伊朗里亚尔\",pos:\"before\",value:\"Rial\"},{name:\"以色列新谢克尔\",pos:\"before\",value:\"?\"},{name:\"印度卢比\",pos:\"before\",value:\"?\"},{name:\"印度尼西亚卢比\",pos:\"before\",value:\"Rp\"},{name:\"约旦第纳尔\",pos:\"before\",value:\"din\"},{name:\"越南盾\",pos:\"after\",value:\"?\"},{name:\"赞比亚克瓦查\",pos:\"before\",value:\"ZMW\"},{name:\"直布罗陀镑\",pos:\"before\",value:\"￡\"},{name:\"智利比索\",pos:\"before\",value:\"$\"},{name:\"中非金融合作法郎\",pos:\"before\",value:\"FCFA\"}],dateFmtList:[{name:\"1930-08-05\",value:\"yyyy-MM-dd\"},{name:\"1930/8/5\",value:\"yyyy/MM/dd\"},{name:\"1930年8月5日\",value:'yyyy\"年\"M\"月\"d\"日\"'},{name:\"08-05\",value:\"MM-dd\"},{name:\"8-5\",value:\"M-d\"},{name:\"8月5日\",value:'M\"月\"d\"日\"'},{name:\"13:30:30\",value:\"h:mm:ss\"},{name:\"13:30\",value:\"h:mm\"},{name:\"下午01:30\",value:\"上午/下午 hh:mm\"},{name:\"下午1:30\",value:\"上午/下午 h:mm\"},{name:\"下午1:30:30\",value:\"上午/下午 h:mm:ss\"},{name:\"08-05 下午01:30\",value:\"MM-dd 上午/下午 hh:mm\"}],numFmtList:[{name:\"1235\",value:\"0\"},{name:\"1234.56\",value:\"0.00\"},{name:\"1234.567\",value:\"0.000\"},{name:\"1,235\",value:\"#,##0\"},{name:\"1,234.56\",value:\"#,##0.00\"},{name:\"1,235\",value:\"#,##0_);(#,##0)\"},{name:\"1,235\",value:\"#,##0_);[Red](#,##0)\"},{name:\"1,234.56\",value:\"#,##0.00_);(#,##0.00)\"},{name:\"1,234.56\",value:\"#,##0.00_);[Red](#,##0.00)\"},{name:\"$1,235\",value:\"$#,##0_);($#,##0)\"},{name:\"$1,235\",value:\"$#,##0_);[Red]($#,##0)\"},{name:\"$1,234.56\",value:\"$#,##0.00_);($#,##0.00)\"},{name:\"$1,234.56\",value:\"$#,##0.00_);[Red]($#,##0.00)\"},{name:\"1234.56\",value:\"@\"},{name:\"123456%\",value:\"0%\"},{name:\"123456.00%\",value:\"0.00%\"},{name:\"1.23E+03\",value:\"0.00E+00\"},{name:\"1.2E+3\",value:\"##0.0E+0\"},{name:\"1234 5/9\",value:\"# ?/?\"},{name:\"1234 14/25\",value:\"# ??/??\"},{name:\"$ 1,235\",value:'_($* #,##0_);_(...($* \"-\"_);_(@_)'},{name:\"1,235\",value:'_(* #,##0_);_(*..._(* \"-\"_);_(@_)'},{name:\"$ 1,234.56\",value:'_($* #,##0.00_);_(...($* \"-\"_);_(@_)'},{name:\"1,234.56\",value:'_(* #,##0.00_);...* \"-\"??_);_(@_)'}],createDialog:function(e){let t=this,n=X().currencyDetail,a=X().format,l=X().button;this.moneyFmtList=[{name:n.RMB,pos:\"before\",value:\"¥\"},{name:n.USdollar,pos:\"before\",value:\"$\"},{name:n.EUR,pos:\"before\",value:\"€\"},{name:n.GBP,pos:\"before\",value:\"￡\"},{name:n.HK,pos:\"before\",value:\"$\"},{name:n.JPY,pos:\"before\",value:\"￥\"},{name:n.AlbanianLek,pos:\"before\",value:\"Lek\"},{name:n.AlgerianDinar,pos:\"before\",value:\"din\"},{name:n.Afghani,pos:\"after\",value:\"Af\"},{name:n.ArgentinePeso,pos:\"before\",value:\"$\"},{name:n.UnitedArabEmiratesDirham,pos:\"before\",value:\"dh\"},{name:n.ArubanFlorin,pos:\"before\",value:\"Afl\"},{name:n.OmaniRial,pos:\"before\",value:\"Rial\"},{name:n.Azerbaijanimanat,pos:\"before\",value:\"?\"},{name:n.EgyptianPound,pos:\"before\",value:\"￡\"},{name:n.EthiopianBirr,pos:\"before\",value:\"Birr\"},{name:n.AngolaKwanza,pos:\"before\",value:\"Kz\"},{name:n.AustralianDollar,pos:\"before\",value:\"$\"},{name:n.Patacas,pos:\"before\",value:\"MOP\"},{name:n.BarbadosDollar,pos:\"before\",value:\"$\"},{name:n.PapuaNewGuineaKina,pos:\"before\",value:\"PGK\"},{name:n.BahamianDollar,pos:\"before\",value:\"$\"},{name:n.PakistanRupee,pos:\"before\",value:\"Rs\"},{name:n.ParaguayanGuarani,pos:\"after\",value:\"Gs\"},{name:n.BahrainiDinar,pos:\"before\",value:\"din\"},{name:n.PanamanianBalboa,pos:\"before\",value:\"B/\"},{name:n.Brazilianreal,pos:\"before\",value:\"R$\"},{name:n.Belarusianruble,pos:\"after\",value:\"р\"},{name:n.BermudianDollar,pos:\"before\",value:\"$\"},{name:n.BulgarianLev,pos:\"before\",value:\"lev\"},{name:n.IcelandKrona,pos:\"before\",value:\"kr\"},{name:n.BosniaHerzegovinaConvertibleMark,pos:\"before\",value:\"KM\"},{name:n.PolishZloty,pos:\"after\",value:\"z?\"},{name:n.Boliviano,pos:\"before\",value:\"Bs\"},{name:n.BelizeDollar,pos:\"before\",value:\"$\"},{name:n.BotswanaPula,pos:\"before\",value:\"P\"},{name:n.NotDannuzhamu,pos:\"before\",value:\"Nu\"},{name:n.BurundiFranc,pos:\"before\",value:\"FBu\"},{name:n.NorthKoreanWon,pos:\"before\",value:\"?KP\"},{name:n.DanishKrone,pos:\"after\",value:\"kr\"},{name:n.EastCaribbeanDollar,pos:\"before\",value:\"$\"},{name:n.DominicaPeso,pos:\"before\",value:\"RD$\"},{name:n.RussianRuble,pos:\"after\",value:\"?\"},{name:n.EritreanNakfa,pos:\"before\",value:\"Nfk\"},{name:n.CFAfranc,pos:\"before\",value:\"CFA\"},{name:n.PhilippinePeso,pos:\"before\",value:\"?\"},{name:n.FijiDollar,pos:\"before\",value:\"$\"},{name:n.CapeVerdeEscudo,pos:\"before\",value:\"CVE\"},{name:n.FalklandIslandsPound,pos:\"before\",value:\"￡\"},{name:n.GambianDalasi,pos:\"before\",value:\"GMD\"},{name:n.Congolesefranc,pos:\"before\",value:\"FrCD\"},{name:n.ColombianPeso,pos:\"before\",value:\"$\"},{name:n.CostaRicanColon,pos:\"before\",value:\"?\"},{name:n.CubanPeso,pos:\"before\",value:\"$\"},{name:n.Cubanconvertiblepeso,pos:\"before\",value:\"$\"},{name:n.GuyanaDollar,pos:\"before\",value:\"$\"},{name:n.KazakhstanTenge,pos:\"before\",value:\"?\"},{name:n.Haitiangourde,pos:\"before\",value:\"HTG\"},{name:n.won,pos:\"before\",value:\"?\"},{name:n.NetherlandsAntillesGuilder,pos:\"before\",value:\"NAf.\"},{name:n.Honduraslempiras,pos:\"before\",value:\"L\"},{name:n.DjiboutiFranc,pos:\"before\",value:\"Fdj\"},{name:n.KyrgyzstanSom,pos:\"before\",value:\"KGS\"},{name:n.GuineaFranc,pos:\"before\",value:\"FG\"},{name:n.CanadianDollar,pos:\"before\",value:\"$\"},{name:n.GhanaianCedi,pos:\"before\",value:\"GHS\"},{name:n.Cambodianriel,pos:\"before\",value:\"Riel\"},{name:n.CzechKoruna,pos:\"after\",value:\"K?\"},{name:n.ZimbabweDollar,pos:\"before\",value:\"$\"},{name:n.QatariRiyal,pos:\"before\",value:\"Rial\"},{name:n.CaymanIslandsDollar,pos:\"before\",value:\"$\"},{name:n.Comorianfranc,pos:\"before\",value:\"CF\"},{name:n.KuwaitiDinar,pos:\"before\",value:\"din\"},{name:n.CroatianKuna,pos:\"before\",value:\"kn\"},{name:n.KenyanShilling,pos:\"before\",value:\"Ksh\"},{name:n.LesothoLoti,pos:\"before\",value:\"LSL\"},{name:n.LaoKip,pos:\"before\",value:\"?\"},{name:n.LebanesePound,pos:\"before\",value:\"L￡\"},{name:n.Lithuanianlitas,pos:\"before\",value:\"Lt\"},{name:n.LibyanDinar,pos:\"before\",value:\"din\"},{name:n.LiberianDollar,pos:\"before\",value:\"$\"},{name:n.RwandaFranc,pos:\"before\",value:\"RF\"},{name:n.RomanianLeu,pos:\"before\",value:\"RON\"},{name:n.MalagasyAriary,pos:\"before\",value:\"Ar\"},{name:n.MaldivianRufiyaa,pos:\"before\",value:\"Rf\"},{name:n.MalawiKwacha,pos:\"before\",value:\"MWK\"},{name:n.MalaysianRinggit,pos:\"before\",value:\"RM\"},{name:n.MacedoniawearingDinar,pos:\"before\",value:\"din\"},{name:n.MauritiusRupee,pos:\"before\",value:\"MURs\"},{name:n.MauritanianOuguiya,pos:\"before\",value:\"MRO\"},{name:n.MongolianTugrik,pos:\"before\",value:\"?\"},{name:n.BangladeshiTaka,pos:\"before\",value:\"?\"},{name:n.PeruvianNuevoSol,pos:\"before\",value:\"S/\"},{name:n.MyanmarKyat,pos:\"before\",value:\"K\"},{name:n.MoldovanLeu,pos:\"before\",value:\"MDL\"},{name:n.MoroccanDirham,pos:\"before\",value:\"dh\"},{name:n.MozambiqueMetical,pos:\"before\",value:\"MTn\"},{name:n.MexicanPeso,pos:\"before\",value:\"$\"},{name:n.NamibianDollar,pos:\"before\",value:\"$\"},{name:n.SouthAfricanRand,pos:\"before\",value:\"R\"},{name:n.SouthSudanesePound,pos:\"before\",value:\"￡\"},{name:n.NicaraguaCordoba,pos:\"before\",value:\"C$\"},{name:n.NepaleseRupee,pos:\"before\",value:\"Rs\"},{name:n.NigerianNaira,pos:\"before\",value:\"?\"},{name:n.NorwegianKrone,pos:\"after\",value:\"kr\"},{name:n.GeorgianLari,pos:\"before\",value:\"GEL\"},{name:n.RenminbiOffshore,pos:\"before\",value:\"￥\"},{name:n.SwedishKrona,pos:\"after\",value:\"kr\"},{name:n.SwissFranc,pos:\"before\",value:\"CHF\"},{name:n.SerbianDinar,pos:\"before\",value:\"din\"},{name:n.SierraLeone,pos:\"before\",value:\"SLL\"},{name:n.SeychellesRupee,pos:\"before\",value:\"SCR\"},{name:n.SaudiRiyal,pos:\"before\",value:\"Rial\"},{name:n.SaoTomeDobra,pos:\"before\",value:\"Db\"},{name:n.SaintHelenapound,pos:\"before\",value:\"￡\"},{name:n.SriLankaRupee,pos:\"before\",value:\"Rs\"},{name:n.SwazilandLilangeni,pos:\"before\",value:\"SZL\"},{name:n.SudanesePound,pos:\"before\",value:\"SDG\"},{name:n.Surinamesedollar,pos:\"before\",value:\"$\"},{name:n.SolomonIslandsDollar,pos:\"before\",value:\"$\"},{name:n.SomaliShilling,pos:\"before\",value:\"SOS\"},{name:n.TajikistanSomoni,pos:\"before\",value:\"Som\"},{name:n.PacificFranc,pos:\"after\",value:\"FCFP\"},{name:n.ThaiBaht,pos:\"before\",value:\"?\"},{name:n.TanzanianShilling,pos:\"before\",value:\"TSh\"},{name:n.TonganPaanga,pos:\"before\",value:\"T$\"},{name:n.TrinidadandTobagoDollar,pos:\"before\",value:\"$\"},{name:n.TunisianDinar,pos:\"before\",value:\"din\"},{name:n.TurkishLira,pos:\"before\",value:\"?\"},{name:n.VanuatuVatu,pos:\"before\",value:\"VUV\"},{name:n.GuatemalanQuetzal,pos:\"before\",value:\"Q\"},{name:n.CommissionBolivar,pos:\"before\",value:\"Bs\"},{name:n.BruneiDollar,pos:\"before\",value:\"$\"},{name:n.UgandanShilling,pos:\"before\",value:\"UGX\"},{name:n.UkrainianHryvnia,pos:\"before\",value:\"грн.\"},{name:n.UruguayanPeso,pos:\"before\",value:\"$\"},{name:n.Uzbekistansom,pos:\"before\",value:\"so?m\"},{name:n.WesternSamoaTala,pos:\"before\",value:\"WST\"},{name:n.SingaporeDollar,pos:\"before\",value:\"$\"},{name:n.NT,pos:\"before\",value:\"NT$\"},{name:n.NewZealandDollar,pos:\"before\",value:\"$\"},{name:n.HungarianForint,pos:\"before\",value:\"Ft\"},{name:n.SyrianPound,pos:\"before\",value:\"￡\"},{name:n.JamaicanDollar,pos:\"before\",value:\"$\"},{name:n.ArmenianDram,pos:\"before\",value:\"Dram\"},{name:n.YemeniRial,pos:\"before\",value:\"Rial\"},{name:n.IraqiDinar,pos:\"before\",value:\"din\"},{name:n.IranianRial,pos:\"before\",value:\"Rial\"},{name:n.NewIsraeliShekel,pos:\"before\",value:\"?\"},{name:n.IndianRupee,pos:\"before\",value:\"?\"},{name:n.IndonesianRupiah,pos:\"before\",value:\"Rp\"},{name:n.JordanianDinar,pos:\"before\",value:\"din\"},{name:n.VND,pos:\"after\",value:\"?\"},{name:n.ZambianKwacha,pos:\"before\",value:\"ZMW\"},{name:n.GibraltarPound,pos:\"before\",value:\"￡\"},{name:n.ChileanPeso,pos:\"before\",value:\"$\"},{name:n.CFAFrancBEAC,pos:\"before\",value:\"FCFA\"}],this.dateFmtList=X().dateFmtList,this.numFmtList=[{name:\"1235\",value:\"0\"},{name:\"1234.56\",value:\"0.00\"},{name:\"1234.567\",value:\"0.000\"},{name:\"1,235\",value:\"#,##0\"},{name:\"1,234.56\",value:\"#,##0.00\"},{name:\"1,235\",value:\"#,##0_);(#,##0)\"},{name:\"1,235\",value:\"#,##0_);[Red](#,##0)\"},{name:\"1,234.56\",value:\"#,##0.00_);(#,##0.00)\"},{name:\"1,234.56\",value:\"#,##0.00_);[Red](#,##0.00)\"},{name:\"$1,235\",value:\"$#,##0_);($#,##0)\"},{name:\"$1,235\",value:\"$#,##0_);[Red]($#,##0)\"},{name:\"$1,234.56\",value:\"$#,##0.00_);($#,##0.00)\"},{name:\"$1,234.56\",value:\"$#,##0.00_);[Red]($#,##0.00)\"},{name:\"1234.56\",value:\"@\"},{name:\"123456%\",value:\"0%\"},{name:\"123456.00%\",value:\"0.00%\"},{name:\"1.23E+03\",value:\"0.00E+00\"},{name:\"1.2E+3\",value:\"##0.0E+0\"},{name:\"1234 5/9\",value:\"# ?/?\"},{name:\"1234 14/25\",value:\"# ??/??\"},{name:\"$ 1,235\",value:'_($* #,##0_);_(...($* \"-\"_);_(@_)'},{name:\"1,235\",value:'_(* #,##0_);_(*..._(* \"-\"_);_(@_)'},{name:\"$ 1,234.56\",value:'_($* #,##0.00_);_(...($* \"-\"_);_(@_)'},{name:\"1,234.56\",value:'_(* #,##0.00_);...* \"-\"??_);_(@_)'}],$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-moreFormat-dialog\").remove();let r=\"\",o=\"\";if(\"morecurrency\"==e){r=a.titleCurrency;let e=\"\";for(let n=0;n<t.moneyFmtList.length;n++){let a=t.moneyFmtList[n].name,l=t.moneyFmtList[n].pos;e+='<div class=\"listItem\"><div class=\"name\">'+a+'</div><div class=\"value\">'+t.moneyFmtList[n].value+'</div><input type=\"hidden\" value=\"'+l+'\"/></div>'}o='<div class=\"box\" id=\"morecurrency\"><div class=\"decimal\"><label>'+a.decimalPlaces+'：</label><input type=\"number\" class=\"formulaInputFocus\" value=\"2\" min=\"0\" max=\"9\"/></div><div class=\"listbox\">'+e+\"</div></div>\"}else if(\"moredatetime\"==e){r=a.titleDateTime;let e=\"\";for(let n=0;n<t.dateFmtList.length;n++){e+='<div class=\"listItem\"><div class=\"name\">'+t.dateFmtList[n].name+'</div><div class=\"value\">'+t.dateFmtList[n].value+\"</div></div>\"}o='<div class=\"box\" id=\"moredatetime\"><div class=\"listbox\">'+e+\"</div></div>\"}else if(\"moredigit\"==e){r=a.titleNumber;let e=\"\";for(let n=0;n<t.numFmtList.length;n++){e+='<div class=\"listItem\"><div class=\"name\">'+t.numFmtList[n].name+'</div><div class=\"value\">'+t.numFmtList[n].value+\"</div></div>\"}o='<div class=\"box\" id=\"moredigit\"><div class=\"listbox\">'+e+\"</div></div>\"}$(\"body\").append(nd(kt,{id:\"luckysheet-moreFormat-dialog\",addclass:\"luckysheet-moreFormat-dialog\",title:r,content:o,botton:'<button id=\"luckysheet-moreFormat-dialog-confirm\" class=\"btn btn-primary\">'+l.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+l.cancel+\"</button>\",style:\"z-index:100003\"}));let i=$(\"#luckysheet-moreFormat-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),s=i.outerHeight(),c=i.outerWidth(),u=$(window).width(),d=$(window).height(),h=$(document).scrollLeft(),f=$(document).scrollTop();$(\"#luckysheet-moreFormat-dialog\").css({left:(u+h-c)/2,top:(d+f-s)/3}).show(),$(\"#luckysheet-moreFormat-dialog .listbox .listItem\").eq(0).addClass(\"on\")},init:function(){$(document).on(\"click\",\"#luckysheet-moreFormat-dialog .listbox .listItem\",(function(){$(this).addClass(\"on\").siblings().removeClass(\"on\")})),$(document).off(\"click.moreFormatConfirm\").on(\"click.moreFormatConfirm\",\"#luckysheet-moreFormat-dialog #luckysheet-moreFormat-dialog-confirm\",(function(){$(\"#luckysheet-moreFormat-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide();let e=mn.deepCopyFlowData(t.flowdata),n=$(\"#luckysheet-moreFormat-dialog .listbox .listItem.on .value\").text(),a=$(this).parents(\"#luckysheet-moreFormat-dialog\").find(\".box\").attr(\"id\");if(\"morecurrency\"==a){if(-1!=n.indexOf(\"?\"))return;let t=parseInt($(\"#luckysheet-moreFormat-dialog .decimal input\").val().trim());if(\"NaN\"==t.toString()||t<0||t>9)return void(I()?alert(\"小数位数必须在0-9之间！\"):vo.info(\"小数位数必须在0-9之间！\",\"\"));let a=\"\";if(t>0){for(let e=1;e<=t;e++)a+=\"0\";a=\"0.\"+a}else a=\"#\";let l=$(\"#luckysheet-moreFormat-dialog .listbox .listItem.on input:hidden\").val();\"before\"==l?a='\"'+n+'\" '+a:\"after\"==l&&(a=a+' \"'+n+'\"'),Yu.updateFormat(e,\"ct\",a)}else(\"moredatetime\"==a||\"moredigit\"==a)&&Yu.updateFormat(e,\"ct\",n)}))}}})),Zu=y((()=>{_d(),qt(),E(),E(),Co(),Et(),Xu(),To(),x(),K(),ju={createDialog:function(){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-locationCell-dialog\").remove();let e=X(),t=e.findAndReplace,n=e.button,a='<div class=\"listbox\"><div class=\"listItem\"><input type=\"radio\" name=\"locationType\" checked=\"checked\" id=\"locationConstant\"><label for=\"locationConstant\">'+t.locationConstant+'</label><div class=\"subbox\"><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"date\" id=\"locationConstantDate\"><label for=\"locationConstantDate\">'+t.locationDate+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"number\" id=\"locationConstantNumber\"><label for=\"locationConstantNumber\">'+t.locationDigital+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"string\" id=\"locationConstantString\"><label for=\"locationConstantString\">'+t.locationString+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"boolean\" id=\"locationConstantBoolean\"><label for=\"locationConstantBoolean\">'+t.locationBool+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"error\" id=\"locationConstantError\"><label for=\"locationConstantError\">'+t.locationBool+'</label></div></div></div><div class=\"listItem\"><input type=\"radio\" name=\"locationType\" id=\"locationFormula\"><label for=\"locationFormula\">'+t.locationFormula+'</label><div class=\"subbox\"><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"date\" id=\"locationFormulaDate\" disabled=\"true\"><label for=\"locationFormulaDate\" style=\"color: #666\">'+t.locationDate+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"number\" id=\"locationFormulaNumber\" disabled=\"true\"><label for=\"locationFormulaNumber\" style=\"color: #666\">'+t.locationDigital+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"string\" id=\"locationFormulaString\" disabled=\"true\"><label for=\"locationFormulaString\" style=\"color: #666\">'+t.locationString+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"boolean\" id=\"locationFormulaBoolean\" disabled=\"true\"><label for=\"locationFormulaBoolean\" style=\"color: #666\">'+t.locationBool+'</label></div><div class=\"subItem\"><input type=\"checkbox\" checked=\"checked\" class=\"error\" id=\"locationFormulaError\" disabled=\"true\"><label for=\"locationFormulaError\" style=\"color: #666\">'+t.locationError+'</label></div></div></div><div class=\"listItem\"><input type=\"radio\" name=\"locationType\" id=\"locationNull\"><label for=\"locationNull\">'+t.locationNull+'</label></div><div class=\"listItem\"><input type=\"radio\" name=\"locationType\" id=\"locationCF\"><label for=\"locationCF\">'+t.locationCondition+'</label></div><div class=\"listItem\"><input type=\"radio\" name=\"locationType\" id=\"locationStepRow\"><label for=\"locationStepRow\">'+t.locationRowSpan+'</label></div><div class=\"listItem\"><input type=\"radio\" name=\"locationType\" id=\"locationStepColumn\"><label for=\"locationStepColumn\">'+t.locationColumnSpan+\"</label></div></div>\";$(\"body\").append(nd(kt,{id:\"luckysheet-locationCell-dialog\",addclass:\"luckysheet-locationCell-dialog\",title:t.location,content:a,botton:'<button id=\"luckysheet-locationCell-dialog-confirm\" class=\"btn btn-primary\">'+n.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+n.cancel+\"</button>\",style:\"z-index:100003\"}));let l=$(\"#luckysheet-locationCell-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),r=l.outerHeight(),o=l.outerWidth(),i=$(window).width(),s=$(window).height(),c=$(document).scrollLeft(),u=$(document).scrollTop();$(\"#luckysheet-locationCell-dialog\").css({left:(i+c-o)/2,top:(s+u-r)/3}).show()},init:function(){let e=this,n=X().findAndReplace;$(document).on(\"click\",\"#luckysheet-locationCell-dialog .listItem input:radio\",(function(e){$(\"#luckysheet-locationCell-dialog .listItem input:checkbox\").prop(\"disabled\",!0),$(\"#luckysheet-locationCell-dialog .listItem .subbox label\").css(\"color\",\"#666\"),$(this).siblings(\".subbox\").find(\"input:checkbox\").removeAttr(\"disabled\"),$(this).siblings(\".subbox\").find(\"label\").css(\"color\",\"#000\")})),$(document).off(\"click.locationCellConfirm\").on(\"click.locationCellConfirm\",\"#luckysheet-locationCell-dialog #luckysheet-locationCell-dialog-confirm\",(function(){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-locationCell-dialog\").hide();let a=$(\"#luckysheet-locationCell-dialog .listItem input:radio:checked\"),l=a.attr(\"id\");if(\"locationConstant\"==l||\"locationFormula\"==l){let n,r,o=a.siblings(\".subbox\").find(\"input:checkbox:checked\");if(0==o.length)return;if(5==o.length)n=\"all\";else{let e=[];for(let t=0;t<o.length;t++)$(o[t]).hasClass(\"date\")?e.push(\"d\"):$(o[t]).hasClass(\"number\")?e.push(\"n\"):$(o[t]).hasClass(\"string\")?e.push(\"s,g\"):$(o[t]).hasClass(\"boolean\")?e.push(\"b\"):$(o[t]).hasClass(\"error\")&&e.push(\"e\");n=e.join(\",\")}r=0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]?[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}]:$.extend(!0,[],t.luckysheet_select_save),e.apply(r,l,n)}else if(\"locationStepRow\"==l){if(0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1])return void(I()?alert(n.locationTiplessTwoRow):vo.info(\"\",n.locationTiplessTwoRow));let a=$.extend(!0,[],t.luckysheet_select_save);e.apply(a,\"locationStepRow\")}else if(\"locationStepColumn\"==l){if(0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1])return void(I()?alert(n.locationTiplessTwoColumn):vo.info(\"\",n.locationTiplessTwoColumn));let a=$.extend(!0,[],t.luckysheet_select_save);e.apply(a,\"locationStepColumn\")}else{let n;n=0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1]&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]?[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}]:$.extend(!0,[],t.luckysheet_select_save),e.apply(n,l)}}))},apply:function(e,n,a){let l=X().findAndReplace,r=[];if(\"locationFormula\"==n||\"locationConstant\"==n||\"locationNull\"==n){let l=null,o=null,i=null,s=null,c={};for(let r=0;r<e.length;r++){let u=e[r].row[0],d=e[r].row[1],h=e[r].column[0],f=e[r].column[1];(null==l||l<u)&&(l=u),(null==o||o>d)&&(o=d),(null==i||i<h)&&(i=h),(null==s||s>f)&&(s=f);for(let e=u;e<=d;e++)for(let l=h;l<=f;l++){let r=t.flowdata[e][l];null!=r&&null!=r.mc&&(r=t.flowdata[r.mc.r][r.mc.c]),(\"locationFormula\"==n&&null!=r&&!_(r.v)&&null!=r.f&&(\"all\"==a||null!=r.ct&&a.indexOf(r.ct.t)>-1)||\"locationConstant\"==n&&null!=r&&!_(r.v)&&(\"all\"==a||null!=r.ct&&a.indexOf(r.ct.t)>-1)||\"locationNull\"==n&&(null==r||_(r.v)))&&(c[e+\"_\"+l]=0)}}r=this.getRangeArr(l,o,i,s,c,r)}else if(\"locationCF\"==n){let n=Mt(t.currentSheetIndex),a=t.luckysheetfile[n].luckysheet_conditionformat_save,o=t.luckysheetfile[n].data;if(null==a||0==a.length)return void(I()?alert(l.locationTipNotFindCell):vo.info(\"\",l.locationTipNotFindCell));if(computeMap=ko.compute(a,o),0==Object.keys(computeMap).length)return void(I()?alert(l.locationTipNotFindCell):vo.info(\"\",l.locationTipNotFindCell));let i=null,s=null,c=null,u=null,d={};for(let t=0;t<e.length;t++){let n=e[t].row[0],a=e[t].row[1],l=e[t].column[0],r=e[t].column[1];(null==i||i<n)&&(i=n),(null==s||s>a)&&(s=a),(null==c||c<l)&&(c=l),(null==u||u>r)&&(u=r);for(let e=n;e<=a;e++)for(let t=l;t<=r;t++)e+\"_\"+t in computeMap&&(d[e+\"_\"+t]=0)}r=this.getRangeArr(i,s,c,u,d,r)}else if(\"locationStepRow\"==n)for(let t=0;t<e.length;t++){if(e[t].row[0]==e[t].row[1])continue;let n=e[t].row[0],a=e[t].row[1],l=e[t].column[0],o=e[t].column[1];for(let e=n;e<=a;e++)(e-n)%2==0&&r.push({row:[e,e],column:[l,o]})}else if(\"locationStepColumn\"==n)for(let t=0;t<e.length;t++){if(e[t].column[0]==e[t].column[1])continue;let n=e[t].row[0],a=e[t].row[1],l=e[t].column[0],o=e[t].column[1];for(let e=l;e<=o;e++)(e-l)%2==0&&r.push({row:[n,a],column:[e,e]})}if(0==r.length)I()?alert(l.locationTipNotFindCell):vo.info(\"\",l.locationTipNotFindCell);else{t.luckysheet_select_save=r,Pu();let e=$(\"#luckysheet-cell-main\").scrollLeft(),n=$(\"#luckysheet-cell-main\").scrollTop(),a=$(\"#luckysheet-cell-main\").height(),l=$(\"#luckysheet-cell-main\").width(),o=t.luckysheet_select_save[0].row[0],i=t.luckysheet_select_save[0].row[1],s=t.luckysheet_select_save[0].column[0],c=t.luckysheet_select_save[0].column[1],u=t.visibledatarow[i],d=o-1==-1?0:t.visibledatarow[o-1],h=t.visibledatacolumn[c],f=s-1==-1?0:t.visibledatacolumn[s-1];h-e-l+20>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(h-l+20):f-e-20<0&&$(\"#luckysheet-scrollbar-x\").scrollLeft(f-20),u-n-a+20>0?$(\"#luckysheet-scrollbar-y\").scrollTop(u-a+20):d-n-20<0&&$(\"#luckysheet-scrollbar-y\").scrollTop(d-20)}},getRangeArr(e,n,a,l,r,o){if(0==Object.keys(r).length)return o;let i=this,s=null,c=null,u=null,d=null;for(let h=e;h<=n;h++)for(let f=a;f<=l;f++){let m=t.flowdata[h][f];if(h+\"_\"+f in r){if(null!=m&&null!=m.mc){if(null==u){let t={row:[m.mc.r,m.mc.r+m.mc.rs-1],column:[m.mc.c,m.mc.c+m.mc.cs-1]};return o.push(t),r=i.deleteCellInSave(r,t),i.getRangeArr(e,n,a,l,r,o)}if(f<d){let t={row:[s,c],column:[u,d]};return o.push(t),r=i.deleteCellInSave(r,t),i.getRangeArr(e,n,a,l,r,o)}break}null==u?(u=f,d=f,s=h,c=h):f>d&&(d=f)}else if(null!=u){if(null!=m&&null!=m.mc)break;if(!(f<u)){if(f<=d){let t={row:[s,c],column:[u,d]};return o.push(t),r=i.deleteCellInSave(r,t),i.getRangeArr(e,n,a,l,r,o)}c=h}}}if(null!=u){let t={row:[s,c],column:[u,d]};return o.push(t),r=i.deleteCellInSave(r,t),i.getRangeArr(e,n,a,l,r,o)}},deleteCellInSave(e,t){for(let n=t.row[0];n<=t.row[1];n++)for(let a=t.column[0];a<=t.column[1];a++)delete e[n+\"_\"+a];return e}}})),Ju=y((()=>{Ci(),gn(),Ts(),Et(),_d(),x(),K(),Gu={singleRangeFocus:!1,init:function(){let e=this,n=X(),a=n.formula;n.button;$(document).off(\"focus.IFcompareValue\").on(\"focus.IFcompareValue\",\"#luckysheet-ifFormulaGenerator-dialog #compareValue\",(function(){$(\"#luckysheet-modal-dialog-mask\").hide(),e.singleRangeFocus=!0})),$(document).off(\"click.IFsingRange\").on(\"click.IFsingRange\",\"#luckysheet-ifFormulaGenerator-dialog .singRange\",(function(){let t=$(\"#luckysheet-ifFormulaGenerator-dialog #compareValue\").val().trim();wi.iscelldata(t)?e.singleRangeDialog(t):e.singleRangeDialog()})),$(document).off(\"click.IFsingRangeConfirm\").on(\"click.IFsingRangeConfirm\",\"#luckysheet-ifFormulaGenerator-singleRange-confirm\",(function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").show();let t=$(this).parents(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").find(\"input\").val().trim();$(\"#luckysheet-ifFormulaGenerator-dialog #compareValue\").val(t),e.singleRangeFocus=!1})),$(document).off(\"click.IFsingRangeCancel\").on(\"click.IFsingRangeCancel\",\"#luckysheet-ifFormulaGenerator-singleRange-cancel\",(function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").show(),e.singleRangeFocus=!1})),$(document).off(\"click.IFsingRangeClose\").on(\"click.IFsingRangeClose\",\"#luckysheet-ifFormulaGenerator-singleRange-dialog .luckysheet-modal-dialog-title-close\",(function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").show(),e.singleRangeFocus=!1})),$(document).off(\"click.IFmultiRange\").on(\"click.IFmultiRange\",\"#luckysheet-ifFormulaGenerator-dialog .multiRange\",(function(){e.multiRangeDialog(),e.singleRangeFocus=!1})),$(document).off(\"click.IFmultiRangeConfirm\").on(\"click.IFmultiRangeConfirm\",\"#luckysheet-ifFormulaGenerator-multiRange-confirm\",(function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide(),$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").show();let e=$(this).parents(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").find(\"input\").val().trim(),n=wi.getcellrange(e),a=n.row[0],l=n.row[1],r=n.column[0],o=n.column[1],i=mn.deepCopyFlowData(t.flowdata),s=[];for(let e=a;e<=l;e++)for(let t=r;t<=o;t++)null!=i[e]&&null!=i[e][t]&&null!=i[e][t].ct&&\"n\"==i[e][t].ct.t&&s.push(i[e][t].v);for(let e=0;e<s.length;e++)for(let t=0;t<s.length-1-e;t++)if(s[t]<s[t+1]){let e=s[t];s[t]=s[t+1],s[t+1]=e}let c=s[0],u=s[s.length-1];$(\"#luckysheet-ifFormulaGenerator-dialog #smallRange\").val(u),$(\"#luckysheet-ifFormulaGenerator-dialog #largeRange\").val(c)})),$(document).off(\"click.IFmultiRangeCancel\").on(\"click.IFmultiRangeCancel\",\"#luckysheet-ifFormulaGenerator-multiRange-cancel\",(function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide(),$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").show()})),$(document).off(\"click.IFmultiRangeClose\").on(\"click.IFmultiRangeClose\",\"#luckysheet-ifFormulaGenerator-multiRange-dialog .luckysheet-modal-dialog-title-close\",(function(){$(\"#luckysheet-formula-functionrange-select\").hide(),$(\"#luckysheet-row-count-show\").hide(),$(\"#luckysheet-column-count-show\").hide(),$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").show()})),$(document).on(\"change\",\"#DivisionMethod\",(function(){\"2\"==$(this).find(\"option:selected\").val()?$(\"#DivisionMethodVal\").hide():$(\"#DivisionMethodVal\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog .ifList\").empty()})),$(document).off(\"click.IFcreateBtn\").on(\"click.IFcreateBtn\",\"#luckysheet-ifFormulaGenerator-dialog #createBtn\",(function(){let t=$(this).parents(\"#luckysheet-ifFormulaGenerator-dialog\").find(\"#compareValue\").val().trim();if(\"\"==t)return void e.info(a.ifGenTipNotNullValue);let n=$(this).parents(\"#luckysheet-ifFormulaGenerator-dialog\").find(\"#DivisionMethod option:selected\").val();if(\"2\"==n){let e='<div class=\"item\"><input type=\"number\" class=\"smallNum formulaInputFocus\"/><select class=\"operator\"><option value=\"0\"> <= </option><option value=\"1\"> < </option></select><span class=\"compareValue\">'+t+'</span><select class=\"operator2\"><option value=\"0\"> <= </option><option value=\"1\" selected=\"selected\"> < </option></select><input type=\"number\" class=\"largeNum formulaInputFocus\"/><span>'+a.ifGenTipLableTitile+'：</span><input type=\"text\" class=\"markText formulaInputFocus\" value=\"\"><i class=\"fa fa-remove\" aria-hidden=\"true\"></i></div>';$(\"#luckysheet-ifFormulaGenerator-dialog .ifList\").append(e)}else{let l=$(this).parents(\"#luckysheet-ifFormulaGenerator-dialog\").find(\"#smallRange\").val().trim(),r=$(this).parents(\"#luckysheet-ifFormulaGenerator-dialog\").find(\"#largeRange\").val().trim(),o=$(this).parents(\"#luckysheet-ifFormulaGenerator-dialog\").find(\"#DivisionMethodVal\").val().trim();if(\"\"==l||\"\"==r)return void e.info(a.ifGenTipRangeNotforNull);if(\"\"==o)return void e.info(a.ifGenTipCutValueNotforNull);e.getIfList(t,l,r,n,o)}})),$(document).on(\"click\",\"#luckysheet-ifFormulaGenerator-dialog .item .fa-remove\",(function(){$(this).parents(\".item\").remove()})),$(document).off(\"click.IFconfirmBtn\").on(\"click.IFconfirmBtn\",\"#luckysheet-ifFormulaGenerator-dialog-confirm\",(function(){let n=$(this).parents(\"#luckysheet-ifFormulaGenerator-dialog\").find(\".ifList .item\"),l=\"\";if($(n.toArray().reverse()).each((function(e,t){let r,o,i,s=$(t).find(\".smallNum\").val().trim(),c=$(t).find(\".largeNum\").val().trim(),u=$(t).find(\".operator option:selected\").val(),d=$(t).find(\".operator2 option:selected\").val(),h=$(t).find(\".compareValue\").text(),f=$(t).find(\".markText\").val().trim();if(\"\"==f&&(f=a.ifGenTipLableTitile+(e+1)),\"\"==s&&\"\"==c)return!0;r=\"0\"==u?h+\">=\"+s:h+\">\"+s,o=\"0\"==d?h+\"<=\"+c:h+\"<\"+c,i=0==e&&\"\"==c?r:e==n.length-1&&\"\"==s?o:\"and(\"+r+\",\"+o+\")\",l=0==e?\"if(\"+i+',\"'+f+'\")':\"if(\"+i+',\"'+f+'\",'+l+\")\"})),0==l.length)return void e.info(a.ifGenTipNotGenCondition);$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-ifFormulaGenerator-dialog\").hide();let r=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(r.row_focus,r.column_focus,t.flowdata),$(\"#luckysheet-rich-text-editor\").html(\"=\"+l),$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()),$(\"#luckysheet-wa-functionbox-confirm\").click()})),$(document).on(\"click\",\"#luckysheet-ifFormulaGenerator-info .luckysheet-model-close-btn\",(function(){$(\"#luckysheet-modal-dialog-mask\").show()})),$(document).on(\"click\",\"#luckysheet-ifFormulaGenerator-info .luckysheet-modal-dialog-title-close\",(function(){$(\"#luckysheet-modal-dialog-mask\").show()}))},ifFormulaDialog:function(e){let t=this,n=X(),a=n.formula,l=n.button;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-dialog\").remove();let r=\"\",o=\"\";if(e){let n=e.split(\"if(\");for(let e=1;e<n.length;e++){let l,i,s,c=n[e].replace(\"and(\",\"\").replace(/\\)/g,\"\").replace(/\\\"/g,\"\").split(\",\");c=t.clearArr(c),r=t.splitTxt(c[0])[0],3==c.length?(l=t.splitTxt(c[0])[1],i=t.splitTxt(c[1])[2],s=c[2]):(l=t.splitTxt(c[0])[1],i=t.splitTxt(c[0])[2],s=c[1]),o+='<div class=\"item\"><input type=\"number\" class=\"smallNum formulaInputFocus\" value=\"'+l+'\"/><select class=\"operator\"><option value=\"0\"> <= </option><option value=\"1\"> < </option></select><span class=\"compareValue\">'+r+'</span><select class=\"operator2\"><option value=\"0\"> <= </option><option value=\"1\" selected=\"selected\"> < </option></select><input type=\"number\" class=\"largeNum formulaInputFocus\" value=\"'+i+'\"/><span>'+a.ifGenTipLableTitile+'：</span><input type=\"text\" class=\"markText formulaInputFocus\" value=\"'+s+'\"><i class=\"fa fa-remove\" aria-hidden=\"true\"></i></div>'}}let i='<div class=\"ifAttr\"><div class=\"attrBox\"><label for=\"compareValue\"> '+a.ifGenCompareValueTitle+' </label><div class=\"inpBox\"><input id=\"compareValue\" class=\"formulaInputFocus\" value=\"'+r+'\"/><i class=\"singRange fa fa-table\" aria-hidden=\"true\" title=\"'+a.ifGenSelectCellTitle+'\"></i></div></div><div class=\"attrBox\"><label for=\"smallRange\"> '+a.ifGenRangeTitle+' </label><input type=\"number\" id=\"smallRange\" class=\"formulaInputFocus\"/><span class=\"text\"> '+a.ifGenRangeTo+' </span><input type=\"number\" id=\"largeRange\" class=\"formulaInputFocus\"/><div id=\"rangeAssess\"><span> '+a.ifGenRangeEvaluate+' </span><i class=\"multiRange fa fa-table\" aria-hidden=\"true\" title=\"'+a.ifGenSelectRangeTitle+'\"></i></div></div><div class=\"attrBox\"><label for=\"DivisionMethod\"> '+a.ifGenCutWay+' </label><select id=\"DivisionMethod\"><option value=\"0\"> '+a.ifGenCutSame+' </option><option value=\"1\"> '+a.ifGenCutNpiece+' </option><option value=\"2\"> '+a.ifGenCutCustom+' </option></select><input id=\"DivisionMethodVal\" class=\"formulaInputFocus\"/><div id=\"createBtn\"> '+a.ifGenCutSame+' </div></div></div><div class=\"ifList\">'+o+\"</div>\";$(\"body\").append(nd(kt,{id:\"luckysheet-ifFormulaGenerator-dialog\",addclass:\"luckysheet-ifFormulaGenerator-dialog\",title:a.ifGenerate,content:i,botton:'<button id=\"luckysheet-ifFormulaGenerator-dialog-confirm\" class=\"btn btn-primary\">'+l.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+l.cancel+\"</button>\",style:\"z-index:100003\"}));let s=$(\"#luckysheet-ifFormulaGenerator-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",590).end(),c=s.outerHeight(),u=s.outerWidth(),d=$(window).width(),h=$(window).height(),f=$(document).scrollLeft(),m=$(document).scrollTop();$(\"#luckysheet-ifFormulaGenerator-dialog\").css({left:(d+f-u)/2,top:(h+m-c)/3}).show()},clearArr:function(e){for(let t=0;t<e.length;t++)(\"\"==e[t]||null==e[t]||null==e[t])&&e.splice(t,1);return e},splitTxt:function(e){let t,n,a;return-1!=e.indexOf(\">=\")?(t=e.split(\">=\")[0],n=e.split(\">=\")[1],[t,n,a]):-1!=e.indexOf(\">\")?(t=e.split(\">\")[0],n=e.split(\">\")[1],[t,n,a]):-1!=e.indexOf(\"<=\")?(t=e.split(\"<=\")[0],a=e.split(\"<=\")[1],[t,n,a]):-1!=e.indexOf(\"<\")?(t=e.split(\"<\")[0],a=e.split(\"<\")[1],[t,n,a]):void 0},singleRangeDialog:function(e){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-ifFormulaGenerator-dialog\").hide(),$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").remove();let t=X(),n=t.formula,a=t.button;null==e&&(e=\"\"),$(\"body\").append(nd(kt,{id:\"luckysheet-ifFormulaGenerator-singleRange-dialog\",addclass:\"luckysheet-ifFormulaGenerator-singleRange-dialog\",title:n.ifGenTipSelectCell,content:'<input readonly=\"readonly\" placeholder=\"'+n.ifGenTipSelectCellPlace+'\" value=\"'+e+'\">',botton:'<button id=\"luckysheet-ifFormulaGenerator-singleRange-confirm\" class=\"btn btn-primary\">'+a.confirm+'</button><button id=\"luckysheet-ifFormulaGenerator-singleRange-cancel\" class=\"btn btn-default\">'+a.cancel+\"</button>\",style:\"z-index:100003\"}));let l=$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),r=l.outerHeight(),o=l.outerWidth(),i=$(window).width(),s=$(window).height(),c=$(document).scrollLeft(),u=$(document).scrollTop();$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").css({left:(i+c-o)/2,top:(s+u-r)/3}).show()},multiRangeDialog:function(){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-ifFormulaGenerator-dialog\").hide(),$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").remove();let e=X(),t=e.formula,n=e.button;$(\"body\").append(nd(kt,{id:\"luckysheet-ifFormulaGenerator-multiRange-dialog\",addclass:\"luckysheet-ifFormulaGenerator-multiRange-dialog\",title:t.ifGenTipSelectRange,content:'<input readonly=\"readonly\" placeholder=\"'+t.ifGenTipSelectRangePlace+'\" value=\"\">',botton:'<button id=\"luckysheet-ifFormulaGenerator-multiRange-confirm\" class=\"btn btn-primary\">'+n.confirm+'</button><button id=\"luckysheet-ifFormulaGenerator-multiRange-cancel\" class=\"btn btn-default\">'+n.cancel+\"</button>\",style:\"z-index:100003\"}));let a=$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),l=a.outerHeight(),r=a.outerWidth(),o=$(window).width(),i=$(window).height(),s=$(document).scrollLeft(),c=$(document).scrollTop();$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").css({left:(o+s-r)/2,top:(i+c-l)/3}).show()},getIfList:function(e,t,n,a,l){let r=X().formula;$(\"#luckysheet-ifFormulaGenerator-dialog .ifList\").empty(),t=parseInt(t),n=parseInt(n),l=parseInt(l);let o=[];if(\"0\"==a){let e=Math.ceil((n-t)/l);for(let a=0;a<=e;a++){let e=t+l*a;0==a||e>=n?o.push(\"\"):o.push(e)}}else if(\"1\"==a){let e=Math.ceil((n-t)/l);for(let a=0;a<=l;a++){let l=t+e*a;0==a||l>=n?o.push(\"\"):o.push(l)}}for(let t=0;t<o.length-1;t++){let n;n=0==t?\"小于\"+o[t+1]:t==o.length-2?\"大于等于\"+o[t]:o[t]+\"到\"+o[t+1];let a='<div class=\"item\"><input type=\"number\" class=\"smallNum formulaInputFocus\" value=\"'+o[t]+'\"/><select class=\"operator\"><option value=\"0\"> <= </option><option value=\"1\"> < </option></select><span class=\"compareValue\">'+e+'</span><select class=\"operator2\"><option value=\"0\"> <= </option><option value=\"1\" selected=\"selected\"> < </option></select><input type=\"number\" class=\"largeNum formulaInputFocus\" value=\"'+o[t+1]+'\"/><span>'+r.ifGenTipLableTitile+'：</span><input type=\"text\" class=\"markText formulaInputFocus\" value=\"'+n+'\"><i class=\"fa fa-remove\" aria-hidden=\"true\"></i></div>';$(\"#luckysheet-ifFormulaGenerator-dialog .ifList\").append(a)}},info:function(e){$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-ifFormulaGenerator-info\").remove();let t=X().button;$(\"body\").append(nd(kt,{id:\"luckysheet-ifFormulaGenerator-info\",addclass:\"\",title:e,content:\"\",botton:'<button class=\"btn btn-default luckysheet-model-close-btn\">&nbsp;&nbsp;'+t.close+\"&nbsp;&nbsp;</button>\",style:\"z-index:100003\"}));let n=$(\"#luckysheet-ifFormulaGenerator-info\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),a=n.outerHeight(),l=n.outerWidth(),r=$(window).width(),o=$(window).height(),i=$(document).scrollLeft(),s=$(document).scrollTop();$(\"#luckysheet-ifFormulaGenerator-info\").css({left:(r+i-l)/2,top:(o+s-a)/3}).show()}}})),Qu=y((()=>{Ko(),Ci(),E(),Et(),Xu(),_d(),x(),K(),Wu={init:function(){let e=this,n=X(),a=n.formulaMore,l=n.button;$(document).off(\"keyup.fxSFLI\").on(\"keyup.fxSFLI\",\"#searchFormulaListInput\",(function(){$(\"#formulaTypeList\").empty();let n=$(this).val().toUpperCase(),a=t.functionlist;if(\"\"==n)e.formulaListByType($(\"#formulaTypeSelect option:selected\").val());else for(let e=0;e<a.length;e++)/^[a-zA-Z]+$/.test(n)?\"-1\"!=a[e].n.indexOf(n)&&$('<div class=\"listBox\" name=\"'+a[e].n+'\"><span>'+a[e].n+\"</span><span>\"+a[e].a+\"</span></div>\").appendTo($(\"#formulaTypeList\")):\"-1\"!=a[e].a.indexOf(n)&&$('<div class=\"listBox\" name=\"'+a[e].n+'\"><span>'+a[e].n+\"</span><span>\"+a[e].a+\"</span></div>\").appendTo($(\"#formulaTypeList\"));$(\"#formulaTypeList .listBox:first-child\").addClass(\"on\")})),$(document).off(\"change.fxFormulaTS\").on(\"change.fxFormulaTS\",\"#formulaTypeSelect\",(function(){let t=$(\"#formulaTypeSelect option:selected\").val();e.formulaListByType(t)})),$(document).off(\"click.fxListbox\").on(\"click.fxListbox\",\"#formulaTypeList .listBox\",(function(){$(this).addClass(\"on\").siblings().removeClass(\"on\")})),$(document).off(\"click.fxFormulaCf\").on(\"click.fxFormulaCf\",\"#luckysheet-search-formula-confirm\",(function(){let t=$(\"#luckysheet-search-formula .listBox.on\").attr(\"name\"),n='<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">'+t.toUpperCase()+'</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">(</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">)</span>';$(\"#luckysheet-rich-text-editor\").html(n),$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()),e.formulaParmDialog(t)})),$(document).off(\"focus.fxParamInput\").on(\"focus.fxParamInput\",\"#luckysheet-search-formula-parm .parmBox input\",(function(){let n=$(this).parents(\".parmBox\").index();wi.data_parm_index=n;let l,r,o=$(this).parents(\"#luckysheet-search-formula-parm\").find(\".luckysheet-modal-dialog-title-text\").text(),i=t.luckysheet_function[o].p.length;n>=i?(l=t.luckysheet_function[o].p[i-1].detail,r=t.luckysheet_function[o].p[i-1].repeat):(l=t.luckysheet_function[o].p[n].detail,r=t.luckysheet_function[o].p[n].repeat),e.parmTxtShow($(this).val()),e.functionStrCompute(),$(\"#luckysheet-search-formula-parm .parmDetailsBox\").empty();let s=$(this).parents(\".parmBox\").find(\".name\").text();if($(\"<span>\"+s+\":</span><span>\"+l+\"</span>\").appendTo($(\"#luckysheet-search-formula-parm .parmDetailsBox\")),\"y\"==r){let e=$(\"#luckysheet-search-formula-parm .parmBox\").length;e<5&&n==e-1&&$('<div class=\"parmBox\"><div class=\"name\">'+a.valueTitle+(e+1)+'</div><div class=\"txt\"><input class=\"formulaInputFocus\" /><i class=\"fa fa-table\" aria-hidden=\"true\" title=\"'+a.tipSelectDataRange+'\"></i></div><div class=\"val\">=</div></div>').appendTo($(\"#luckysheet-search-formula-parm .parmListBox\"))}})),$(document).off(\"blur.fxParamInput\").on(\"blur.fxParamInput\",\"#luckysheet-search-formula-parm .parmBox input\",(function(){let t=$(this).val();null==wi.getfunctionParam(t).fn&&!wi.iscelldata(t)&&!C(t)&&\"\"!=t&&t.length<=2&&0!=t.indexOf('\"')&&0!=t.lastIndexOf('\"')&&(t='\"'+t+'\"',$(this).val(t),e.parmTxtShow(t),e.functionStrCompute())})),$(document).off(\"keyup.fxParamInput\").on(\"keyup.fxParamInput\",\"#luckysheet-search-formula-parm .parmBox input\",(function(){e.parmTxtShow($(this).val()),e.functionStrCompute()})),$(document).off(\"click.fxParamI\").on(\"click.fxParamI\",\"#luckysheet-search-formula-parm .parmBox i\",(function(){wi.data_parm_index=$(this).parents(\".parmBox\").index(),$(\"#luckysheet-search-formula-parm\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-search-formula-parm-select\").remove(),\"\"==$(this).parents(\".parmBox\").find(\".txt input\").val()?$(\"body\").append(nd(kt,{id:\"luckysheet-search-formula-parm-select\",addclass:\"luckysheet-search-formula-parm-select\",title:a.tipSelectDataRange,content:\"<input id='luckysheet-search-formula-parm-select-input' class='luckysheet-datavisual-range-container' style='font-size: 14px;padding:5px;max-width:none;' spellcheck='false' aria-label='\"+a.tipDataRangeTile+\"' readonly='true' placeholder='\"+a.tipDataRangeTile+\"'>\",botton:'<button id=\"luckysheet-search-formula-parm-select-confirm\" class=\"btn btn-primary\">'+l.confirm+\"</button>\",style:\"z-index:100003\"})):$(\"body\").append(nd(kt,{id:\"luckysheet-search-formula-parm-select\",addclass:\"luckysheet-search-formula-parm-select\",title:a.tipSelectDataRange,content:\"<input id='luckysheet-search-formula-parm-select-input' class='luckysheet-datavisual-range-container' style='font-size: 14px;padding:5px;max-width:none;' spellcheck='false' aria-label='\"+a.tipDataRangeTile+\"' readonly='true' value='\"+$(this).parents(\".parmBox\").find(\".txt input\").val()+\"'>\",botton:'<button id=\"luckysheet-search-formula-parm-select-confirm\" class=\"btn btn-primary\">'+l.confirm+\"</button>\",style:\"z-index:100003\"}));let t=$(\"#luckysheet-search-formula-parm-select\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),n=t.outerHeight(),r=t.outerWidth(),o=$(window).width(),i=$(window).height(),s=$(document).scrollLeft(),c=$(document).scrollTop();$(\"#luckysheet-search-formula-parm-select\").css({left:(o+s-r)/2,top:(i+c-n)/3}).show(),e.parmTxtShow($(this).parents(\".parmBox\").find(\".txt input\").val())})),$(document).off(\"click.fxParamCf\").on(\"click.fxParamCf\",\"#luckysheet-search-formula-parm-confirm\",(function(){$(\"#luckysheet-wa-functionbox-confirm\").click()})),$(document).off(\"click.fxParamSelectCf\").on(\"click.fxParamSelectCf\",\"#luckysheet-search-formula-parm-select-confirm\",(function(){let e=$(\"#luckysheet-search-formula-parm-select-input\").attr(\"data_parm_index\");$(\"#luckysheet-search-formula-parm-select\").hide(),$(\"#luckysheet-search-formula-parm\").show(),$(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".txt input\").focus()}))},formulaListDialog:function(){let e=X(),t=e.formulaMore,n=e.button;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-search-formula\").remove(),$(\"body\").append(nd(kt,{id:\"luckysheet-search-formula\",addclass:\"luckysheet-search-formula\",title:\"\",content:\"<div class='inpbox'><label for='searchFormulaListInput'>\"+t.findFunctionTitle+\"：</label><input class='formulaInputFocus' id='searchFormulaListInput' placeholder='\"+t.tipInputFunctionName+\"' spellcheck='false'/></div><div class='selbox'><label>\"+t.selectCategory+\"：</label><select id='formulaTypeSelect'><option value='0'>\"+t.Math+\"</option><option value='1'>\"+t.Statistical+\"</option><option value='2'>\"+t.Lookup+\"</option><option value='3'>\"+t.luckysheet+\"</option><option value='4'>\"+t.dataMining+\"</option><option value='5'>\"+t.Database+\"</option><option value='6'>\"+t.Date+\"</option><option value='7'>\"+t.Filter+\"</option><option value='8'>\"+t.Financial+\"</option><option value='9'>\"+t.Engineering+\"</option><option value='10'>\"+t.Logical+\"</option><option value='11'>\"+t.Operator+\"</option><option value='12'>\"+t.Text+\"</option><option value='13'>\"+t.Parser+\"</option><option value='14'>\"+t.Array+\"</option><option value='-1'>\"+t.other+\"</option></select></div><div class='listbox'><label>\"+t.selectFunctionTitle+\"：</label><div id='formulaTypeList'></div></div>\",botton:'<button id=\"luckysheet-search-formula-confirm\" class=\"btn btn-primary\">'+n.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+n.cancel+\"</button>\",style:\"z-index:100003\"}));let a=$(\"#luckysheet-search-formula\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),l=a.outerHeight(),r=a.outerWidth(),o=$(window).width(),i=$(window).height(),s=$(document).scrollLeft(),c=$(document).scrollTop();$(\"#luckysheet-search-formula\").css({left:(o+s-r)/2,top:(i+c-l)/3,\"user-select\":\"none\"}).show(),this.formulaListByType(\"0\"),$(\"#searchFormulaListInput\").focus()},formulaListByType:function(e){$(\"#formulaTypeList\").empty();let n=t.functionlist;for(let t=0;t<n.length;t++)(\"-1\"==e&&n[t].t>14||n[t].t==e)&&$('<div class=\"listBox\" name=\"'+n[t].n+'\"><span>'+n[t].n+\"</span><span>\"+n[t].a+\"</span></div>\").appendTo($(\"#formulaTypeList\"));$(\"#formulaTypeList .listBox:first-child\").addClass(\"on\")},formulaParmDialog:function(e,n){let a=\"\",l=\"\",r=\"\",o=X(),i=o.formulaMore,s=o.button,c=t.functionlist;for(let t=0;t<c.length;t++)if(c[t].n==e.toUpperCase()){a=c[t].n;for(let e=0;e<c[t].p.length;e++)null==n?r+='<div class=\"parmBox\"><div class=\"name\">'+c[t].p[e].name+'</div><div class=\"txt\"><input class=\"formulaInputFocus\" spellcheck=\"false\"/><i class=\"fa fa-table\" aria-hidden=\"true\" title=\"'+i.tipSelectDataRange+'\"></i></div><div class=\"val\">=</div></div>':(null==n[e]&&(n[e]=\"\"),r+='<div class=\"parmBox\"><div class=\"name\">'+c[t].p[e].name+'</div><div class=\"txt\"><input class=\"formulaInputFocus\" value=\"'+n[e]+'\" spellcheck=\"false\"/><i class=\"fa fa-table\" aria-hidden=\"true\" title=\"'+i.tipSelectDataRange+'\"></i></div><div class=\"val\">=</div></div>');l='<div><div class=\"parmListBox\">'+r+'</div><div class=\"formulaDetails\">'+c[t].d+'</div><div class=\"parmDetailsBox\"></div><div class=\"result\">'+i.calculationResult+\" = <span></span></div></div>\"}$(\"#luckysheet-search-formula\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-search-formula-parm\").remove(),$(\"body\").append(nd(kt,{id:\"luckysheet-search-formula-parm\",addclass:\"luckysheet-search-formula-parm\",title:a,content:l,botton:'<button id=\"luckysheet-search-formula-parm-confirm\" class=\"btn btn-primary\">'+s.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+s.cancel+\"</button>\",style:\"z-index:100003\"}));let u=$(\"#luckysheet-search-formula-parm\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),d=u.outerHeight(),h=u.outerWidth(),f=$(window).width(),m=$(window).height(),p=$(document).scrollLeft(),g=$(document).scrollTop();$(\"#luckysheet-search-formula-parm\").css({left:(f+p-h)/2,top:(m+g-d)/3}).show(),$(\"#luckysheet-search-formula-parm .parmBox:eq(0) input\").focus(),$(\"#luckysheet-search-formula-parm .parmBox\").each((function(e,t){let n=$(t).find(\".txt input\").val();if(null==wi.getfunctionParam(n).fn)if(wi.iscelldata(n)){let t=qo(n).data;if(\"array\"==ad(t)){let n=[];for(let e=0;e<t.length;e++)for(let a=0;a<t[e].length;a++){let l=t[e][a];null==l||_(l.v)?n.push(null):n.push(l.v)}$(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".val\").text(\" = {\"+n.join(\",\")+\"}\")}else $(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".val\").text(\" = {\"+t.v+\"}\")}else $(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".val\").text(\" = {\"+n+\"}\");else $(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".val\").text(\" = {\"+new Function(\"return \"+$.trim(wi.functionParserExe(\"=\"+n)))()+\"}\")})),$(\"#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight\").remove(),wi.data_parm_index=0,wi.rangestart=!0},parmTxtShow:function(e){if(null==wi.getfunctionParam(e).fn)if(wi.iscelldata(e)){let n=wi.getcellrange(e),a=n.row[0],l=n.row[1],r=n.column[0],o=n.column[1],i=t.visibledatarow[l],s=a-1==-1?0:t.visibledatarow[a-1],c=t.visibledatacolumn[o],u=r-1==-1?0:t.visibledatacolumn[r-1];$(\"#luckysheet-formula-functionrange-select\").css({left:u,width:c-u-1,top:s,height:i-s-1}).show(),$(\"#luckysheet-formula-help-c\").hide(),qu(u,s,c-u-1,i-s-1,n.row,n.column);let d=qo(e).data;if(\"array\"==ad(d)){let e=[];for(let t=0;t<d.length;t++)for(let n=0;n<d[t].length;n++){let a=d[t][n];null==a||_(a.v)?e.push(null):e.push(a.v)}$(\"#luckysheet-search-formula-parm .parmBox\").eq(wi.data_parm_index).find(\".val\").text(\" = {\"+e.join(\",\")+\"}\")}else $(\"#luckysheet-search-formula-parm .parmBox\").eq(wi.data_parm_index).find(\".val\").text(\" = {\"+d.v+\"}\")}else $(\"#luckysheet-search-formula-parm .parmBox\").eq(wi.data_parm_index).find(\".val\").text(\" = {\"+e+\"}\"),$(\"#luckysheet-formula-functionrange-select\").hide();else{let n;for(let t=0;t<wi.getfunctionParam(e).param.length;t++)if(wi.iscelldata(wi.getfunctionParam(e).param[t])){n=wi.getfunctionParam(e).param[t];break}let a=wi.getcellrange(n),l=a.row[0],r=a.row[1],o=a.column[0],i=a.column[1],s=t.visibledatarow[r],c=l-1==-1?0:t.visibledatarow[l-1],u=t.visibledatacolumn[i],d=o-1==-1?0:t.visibledatacolumn[o-1];$(\"#luckysheet-formula-functionrange-select\").css({left:d,width:u-d-1,top:c,height:s-c-1}).show(),$(\"#luckysheet-formula-help-c\").hide(),qu(d,c,u-d-1,s-c-1,a.row,a.column),$(\"#luckysheet-search-formula-parm .parmBox\").eq(wi.data_parm_index).find(\".val\").text(\" = {\"+new Function(\"return \"+$.trim(wi.functionParserExe(\"=\"+e)))()+\"}\")}},functionStrCompute:function(){let e,n=!0,a=[],l=-1,r=$(\"#luckysheet-search-formula-parm\").find(\".luckysheet-modal-dialog-title-text\").text(),o=t.luckysheet_function[r].p;if($(\"#luckysheet-search-formula-parm .parmBox\").each((function(e,t){let a,r=$(t).find(\".txt input\").val();a=e<o.length?o[e].require:o[o.length-1].require,\"\"==r&&\"m\"==a&&(n=!1),\"\"!=r&&(l=e)})),-1==l)e=\"=\"+$(\"#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text\").text()+\"()\";else if(0==l)e=\"=\"+$(\"#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text\").text()+\"(\"+$(\"#luckysheet-search-formula-parm .parmBox\").eq(0).find(\".txt input\").val()+\")\";else{for(let e=0;e<=l;e++)a.push($(\"#luckysheet-search-formula-parm .parmBox\").eq(e).find(\".txt input\").val());e=\"=\"+$(\"#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text\").text()+\"(\"+a.join(\",\")+\")\"}let i=wi.functionHTMLGenerate(e);if($(\"#luckysheet-rich-text-editor\").html(i),$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()),n){let e=$.trim(wi.functionParserExe($(\"#luckysheet-rich-text-editor\").text())),t=null;try{t=new Function(\"return \"+e)()}catch(e){t=wi.error.n}$(\"#luckysheet-search-formula-parm .result span\").text(t)}}}})),ed=y((()=>{Xu(),Et(),w(),Ku(),Ja(),To(),_o(),Kn(),Al(),zl(),ol(),kl(),$s(),Zu(),Ju(),Ts(),Qu(),_i(),wl(),E(),Co(),gn(),Ma(),fo(),Lr(),Ci(),na(),ka(),da(),Pa(),Yn(),La(),Cn(),qt(),Wt(),zn(),_d(),dr(),x(),K(),Nu(),Yu={menu:'<div class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton ${subclass} luckysheet-mousedown-cancel\" id=\"luckysheet-icon-${id}-menuButton\">${item}</div>',item:'<div itemvalue=\"${value}\" itemname=\"${name}\" class=\"luckysheet-cols-menuitem ${sub} luckysheet-mousedown-cancel\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\" style=\"padding: 3px 0px 3px 1px;\"><span style=\"margin-right:3px;width:13px;display:inline-block;\" class=\"icon luckysheet-mousedown-cancel\"></span> ${name} <span class=\"luckysheet-submenu-arrow luckysheet-mousedown-cancel ${iconClass}\" style=\"user-select: none;\">${example}</span></div></div>',split:'<div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div>',color:'<div class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel luckysheet-menuButton ${sub}\" id=\"${id}\"><div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel luckysheet-color-reset\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${resetColor}</div></div> <div class=\"luckysheet-mousedown-cancel\"> <div class=\"luckysheet-mousedown-cancel\"> <input type=\"text\" class=\"luckysheet-color-selected\" /> </div> </div> <div class=\"luckysheet-menuseparator luckysheet-mousedown-cancel\" role=\"separator\"></div> ${coloritem}</div>',coloritem:'<div class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel ${class}\"><div class=\"luckysheet-cols-menuitem-content luckysheet-mousedown-cancel\">${name}</div></div>',subcolor:'<div id=\"luckysheet-icon-${id}-menuButton\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-menuButton-sub luckysheet-mousedown-cancel\"> <div class=\"luckysheet-mousedown-cancel\"> <div class=\"luckysheet-mousedown-cancel\"> <input type=\"text\" class=\"luckysheet-color-selected\" /> </div> </div></div>',rightclickmenu:null,submenuhide:{},focus:function(e,t){\"luckysheet-icon-font-family-menuButton\"==e.attr(\"id\")&&(ya(t).num&&(null==(t=X().fontarray[parseInt(t)])&&(t=this.defualtFont[itemvalue])),void 0===t&&(t=this.defualtFont[2])),e.find(\".luckysheet-cols-menuitem\").find(\"span.icon\").html(\"\"),null==t?e.find(\".luckysheet-cols-menuitem\").eq(0).find(\"span.icon\").html('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>'):e.find(\".luckysheet-cols-menuitem[itemvalue='\"+t+\"']\").find(\"span.icon\").html('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')},createButtonMenu:function(e){let t=\"\",n=this;for(let a=0;a<e.length;a++){let l=e[a];\"split\"==l.value?t+=n.split:\"more\"==l.example?t+=nd(n.item,{value:l.value,name:l.text,example:\"\",sub:\"luckysheet-cols-submenu\",iconClass:\"iconfont-luckysheet luckysheet-iconfont-youjiantou\"}):t+=nd(n.item,{value:l.value,name:l.text,example:l.example,sub:\"\",iconClass:\"\"})}return t},cancelPaintModel:function(){$(\"#luckysheet-sheettable_0\").removeClass(\"luckysheetPaintCursor\"),t.luckysheet_copy_save.dataSheetIndex==t.currentSheetIndex?(t.luckysheet_selection_range=[],Vu()):t.luckysheetfile[Mt(t.luckysheet_copy_save.dataSheetIndex)].luckysheet_selection_range=[],t.luckysheet_copy_save={},this.luckysheetPaintModelOn=!1,$(\"#luckysheetpopover\").fadeOut(200,(function(){$(\"#luckysheetpopover\").remove()}))},luckysheetPaintModelOn:!1,luckysheetPaintSingle:!1,initialMenuButton:function(){let n=this;$(\"#luckysheet-icon-paintformat\").click((function(e){if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);e.stopPropagation();let a=X(),l=a.paint;if(null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)return void(I()?alert(l.tipSelectRange):vo.info(\"\",l.tipSelectRange));if(t.luckysheet_select_save.length>1)return void(I()?alert(l.tipNotMulti):vo.info(\"\",l.tipNotMulti));let r=!1,o=t.luckysheet_select_save[0].row[0],i=t.luckysheet_select_save[0].row[1],s=t.luckysheet_select_save[0].column[0],c=t.luckysheet_select_save[0].column[1];if(r=A(t.config,o,i,s,c),r)return void vo.info(a.merge.partiallyError,\"\");vo.popover(\"<i class='fa fa-paint-brush'></i> \"+l.start,\"topCenter\",!0,null,l.end,(function(){n.cancelPaintModel()})),$(\"#luckysheet-sheettable_0\").addClass(\"luckysheetPaintCursor\"),t.luckysheet_selection_range=[{row:t.luckysheet_select_save[0].row,column:t.luckysheet_select_save[0].column}],Vu();let u=!1,d=!1;for(let e=t.luckysheet_select_save[0].row[0];e<=t.luckysheet_select_save[0].row[1];e++)if(null==t.config.rowhidden||null==t.config.rowhidden[e]){null!=t.config.rowlen&&e in t.config.rowlen&&(u=!0);for(let n=t.luckysheet_select_save[0].column[0];n<=t.luckysheet_select_save[0].column[1];n++){let a=t.flowdata[e][n];\"object\"==ad(a)&&\"mc\"in a&&null!=a.mc.rs&&(d=!0)}}t.luckysheet_copy_save={dataSheetIndex:t.currentSheetIndex,copyRange:[{row:t.luckysheet_select_save[0].row,column:t.luckysheet_select_save[0].column}],RowlChange:u,HasMC:d},n.luckysheetPaintModelOn=!0,n.luckysheetPaintSingle=!0})),$(\"#luckysheet-icon-paintformat\").dblclick((function(){if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);let e=X().paint;if(null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)return void(I()?alert(e.tipSelectRange):vo.info(\"\",e.tipSelectRange));if(t.luckysheet_select_save.length>1)return void(I()?alert(e.tipNotMulti):vo.info(\"\",e.tipNotMulti));vo.popover(\"<i class='fa fa-paint-brush'></i> \"+e.start,\"topCenter\",!0,null,e.end,(function(){n.cancelPaintModel()})),$(\"#luckysheet-sheettable_0\").addClass(\"luckysheetPaintCursor\"),t.luckysheet_selection_range=[{row:t.luckysheet_select_save[0].row,column:t.luckysheet_select_save[0].column}],Vu();let a=!1,l=!1;for(let e=t.luckysheet_select_save[0].row[0];e<=t.luckysheet_select_save[0].row[1];e++)if(null==t.config.rowhidden||null==t.config.rowhidden[e]){null!=t.config.rowlen&&e in t.config.rowlen&&(a=!0);for(let n=t.luckysheet_select_save[0].column[0];n<=t.luckysheet_select_save[0].column[1];n++){let a=t.flowdata[e][n];\"object\"==ad(a)&&\"mc\"in a&&null!=a.mc.rs&&(l=!0)}}t.luckysheet_copy_save={dataSheetIndex:t.currentSheetIndex,copyRange:[{row:t.luckysheet_select_save[0].row,column:t.luckysheet_select_save[0].column}],RowlChange:a,HasMC:l},n.luckysheetPaintModelOn=!0,n.luckysheetPaintSingle=!1})),$(\"#luckysheet-icon-currency\").click((function(){let e=mn.deepCopyFlowData(t.flowdata);n.updateFormat(e,\"ct\",\"¥ #.00\")})),$(\"#luckysheet-icon-percent\").click((function(){let e=mn.deepCopyFlowData(t.flowdata);n.updateFormat(e,\"ct\",\"0.00%\")})),$(\"#luckysheet-icon-fmt-decimal-decrease\").click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=t.luckysheet_select_save[0].row_focus,l=t.luckysheet_select_save[0].column_focus,r=n.checkstatus(e,a,l,\"ct\"),o=e[a][l];if(null==r||\"n\"!=r.t)return;if(\"General\"==r.fa&&(r=_a(o.v)[1]),/^(w|W)((0?)|(0\\.0+))$/.test(r.fa))return void(r.fa.indexOf(\".\")>-1?\".0\"==r.fa.substr(-2)?n.updateFormat(e,\"ct\",r.fa.split(\".\")[0]):n.updateFormat(e,\"ct\",r.fa.substr(0,r.fa.length-1)):n.updateFormat(e,\"ct\",r.fa));let i=\"\",s=\"\",c=[];if(!(r.fa.indexOf(\".\")>-1))return;c=r.fa.split(\".\"),i=c[0],s=c[1],c=s.split(\"\");let u=\"\";for(let e=c.length-1;e>=0;e--){let t=c[e];if(\"#\"==t||\"0\"==t||\",\"==t||!isNaN(parseInt(t)))break;u=t+u}let d=\"\";if(r.fa.indexOf(\".\")>-1){let e=s;u.length>0&&(e=s.replace(u,\"\"));let t=e.replace(/#/g,\"0\");t=t.substr(0,t.length-1),d=\"\"==t?i+u:i+\".\"+t+u}n.updateFormat(e,\"ct\",d)})),$(\"#luckysheet-icon-fmt-decimal-increase\").click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=t.luckysheet_select_save[0].row_focus,l=t.luckysheet_select_save[0].column_focus,r=n.checkstatus(e,a,l,\"ct\"),o=e[a][l];if(null==r||\"n\"!=r.t)return;if(\"General\"==r.fa&&(r=_a(o.v)[1]),\"General\"==r.fa)return void n.updateFormat(e,\"ct\",\"#.0\");if(/^(w|W)((0?)|(0\\.0+))$/.test(r.fa))return void(r.fa.indexOf(\".\")>-1?n.updateFormat(e,\"ct\",r.fa+\"0\"):\"0\"==r.fa.substr(-1)?n.updateFormat(e,\"ct\",r.fa+\".0\"):n.updateFormat(e,\"ct\",r.fa+\"0.0\"));let i=\"\",s=\"\",c=[];r.fa.indexOf(\".\")>-1?(c=r.fa.split(\".\"),i=c[0],s=c[1]):s=r.fa,c=s.split(\"\");let u=\"\";for(let e=c.length-1;e>=0;e--){let t=c[e];if(\"#\"==t||\"0\"==t||\",\"==t||!isNaN(parseInt(t)))break;u=t+u}let d=\"\";if(r.fa.indexOf(\".\")>-1){let e=s;u.length>0&&(e=s.replace(u,\"\"));let t=e.replace(/#/g,\"0\");t+=\"0\",d=i+\".\"+t+u}else d=u.length>0?s.replace(u,\"\")+\".0\"+u:s+\".0\"+u;n.updateFormat(e,\"ct\",d)})),$(\"#luckysheet-icon-fmt-other\").click((function(){let e=X(),a=e.format,l=e.defaultFmt,r=$(this).attr(\"id\")+\"-menuButton\",o=$(\"#\"+r);if(0==o.length){let e=l,i=n.createButtonMenu(e),s=nd(n.menu,{id:\"fmt-other\",item:i,subclass:\"\",sub:\"\"}),c=[{text:a.moreCurrency+\"...\",value:\"morecurrency\",example:\"\"},{text:a.moreDateTime+\"...\",value:\"moredatetime\",example:\"\"},{text:a.moreNumber+\"...\",value:\"moredigit\",example:\"\"}],u=n.createButtonMenu(c),d=nd(n.menu,{id:\"fmtOtherSelf\",item:u,subclass:\"luckysheet-menuButton-sub\"});$(\"body\").append(s+d),o=$(\"#\"+r).width(250),n.focus(o),o.find(\".luckysheet-cols-menuitem\").click((function(){o.hide(),fd();let e=$(this),a=e.attr(\"itemvalue\"),l=e.attr(\"itemname\");if($(\"#luckysheet-icon-fmt-other\").find(\".luckysheet-toolbar-menu-button-caption\").html(\" \"+l+\" \"),\"fmtOtherSelf\"==a)return;let r=mn.deepCopyFlowData(t.flowdata);n.focus(o,a),n.updateFormat(r,\"ct\",a)})),$(\"#luckysheet-icon-fmtOtherSelf-menuButton\").find(\".luckysheet-cols-menuitem\").click((function(){o.hide(),$(\"#luckysheet-icon-fmtOtherSelf-menuButton\").hide(),fd();let e=$(this).attr(\"itemvalue\");Uu.createDialog(e),Uu.init()}))}else{let e=$(this).find(\".luckysheet-toolbar-menu-button-caption\").text().trim(),t=l.find((t=>t.text===e));t&&n.focus(o,t.value)}let i=$(this).outerWidth(),s=o.outerWidth(),c=$(this).offset().left;s>i&&s+c>$(\"#\"+t.container).width()&&(c=c-s+i),gd(o,c,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-font-family\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=n.createButtonMenu(n.fontSelectList),r=nd(n.menu,{id:\"font-family\",item:l,subclass:\"\",sub:\"\"});$(\"body\").append(r),a=$(\"#\"+e).width(200),n.focus(a),a.on(\"click\",\".luckysheet-cols-menuitem\",(function(){a.hide(),fd();let e=$(this),l=e.attr(\"itemvalue\"),r=e.attr(\"itemname\");n.focus(a,l),$(\"#luckysheet-icon-font-family\").find(\".luckysheet-toolbar-menu-button-caption\").html(\" \"+r+\" \");let o=mn.deepCopyFlowData(t.flowdata);n.updateFormat(o,\"ff\",l)}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-text-color\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=$(this).attr(\"color\");null==a&&(a=\"#000000\"),n.updateFormat(e,\"fc\",a)})),$(\"#luckysheet-icon-text-color-menu\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(){let a=$(this).attr(\"id\")+\"-menuButton\",l=$(\"#\"+a);if(0==l.length){let r=X(),o=r.toolbar,i=r.button,s=r.alternatingColors,c=[{name:o.alternatingColors+\"...\",id:\"luckysheet-color-alternate\",example:\"\"}],u=(n.createButtonMenu(c),\"text-color-self\"),d=nd(n.coloritem,{class:\"luckysheet-icon-alternateformat\",name:o.alternatingColors+\"...\"}),h=nd(n.color,{id:a,coloritem:d,colorself:u,sub:\"\",resetColor:o.resetColor});$(\"body\").append(h),l=$(\"#\"+a),$(\"#\"+a).find(\".luckysheet-color-selected\").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,maxPaletteSize:8,maxSelectionSize:8,cancelText:i.cancel,chooseText:i.confirm,togglePaletteMoreText:o.customColor,togglePaletteLessText:o.collapse,togglePaletteOnly:!0,clearText:o.clearText,color:e.defaultTextColor,noColorSelectedText:o.noColorSelectedText,localStorageKey:\"spectrum.textcolor\"+yo.gridKey,palette:[[\"#000\",\"#444\",\"#666\",\"#999\",\"#ccc\",\"#eee\",\"#f3f3f3\",\"#fff\"],[\"#f00\",\"#f90\",\"#ff0\",\"#0f0\",\"#0ff\",\"#00f\",\"#90f\",\"#f0f\"],[\"#f4cccc\",\"#fce5cd\",\"#fff2cc\",\"#d9ead3\",\"#d0e0e3\",\"#cfe2f3\",\"#d9d2e9\",\"#ead1dc\"],[\"#ea9999\",\"#f9cb9c\",\"#ffe599\",\"#b6d7a8\",\"#a2c4c9\",\"#9fc5e8\",\"#b4a7d6\",\"#d5a6bd\"],[\"#e06666\",\"#f6b26b\",\"#ffd966\",\"#93c47d\",\"#76a5af\",\"#6fa8dc\",\"#8e7cc3\",\"#c27ba0\"],[\"#c00\",\"#e69138\",\"#f1c232\",\"#6aa84f\",\"#45818e\",\"#3d85c6\",\"#674ea7\",\"#a64d79\"],[\"#900\",\"#b45f06\",\"#bf9000\",\"#38761d\",\"#134f5c\",\"#0b5394\",\"#351c75\",\"#741b47\"],[\"#600\",\"#783f04\",\"#7f6000\",\"#274e13\",\"#0c343d\",\"#073763\",\"#20124d\",\"#4c1130\"]],change:function(e){$(this);e=null!=e?e.toHexString():\"#000\";$(\"#luckysheet-icon-text-color .text-color-bar\").css(\"background-color\",e),$(\"#luckysheet-icon-text-color\").attr(\"color\",e);let a=mn.deepCopyFlowData(t.flowdata);n.updateFormat(a,\"fc\",e),l.hide(),fd()}}),l.find(\".luckysheet-color-reset\").click((function(){l.hide(),fd();let e=$(\"#\"+a).find(\".luckysheet-color-selected\");e.val(\"#000000\"),$(\"#luckysheet-icon-text-color\").attr(\"color\",null),e.spectrum(\"set\",\"#000000\"),$(\"#luckysheet-icon-text-color .luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",\"#000000\");let r=mn.deepCopyFlowData(t.flowdata);n.updateFormat(r,\"fc\",null)})),l.find(\".luckysheet-icon-alternateformat\").click((function(){if(l.hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(s.errorInfo):vo.info(s.errorInfo,\"\"));let e=$.extend(!0,{},t.luckysheet_select_save[0]);Xa.rangeIsExists(e)[0]||(Xa.modelfocusIndex=0,Xa.new(e)),Xa.init(),Xa.perfect()}))}let r=$(this).outerWidth(),o=l.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r);let s=$(this).offset().top+26;setTimeout((function(){let e=$(\"#\"+a).find(\".luckysheet-color-selected\");e.spectrum(\"set\",e.val()),gd(l,i-28,s,\"lefttop\")}),1)})),$(\"#luckysheet-icon-cell-color\").click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=$(this).attr(\"color\");null==a&&(a=\"#ffffff\"),n.updateFormat(e,\"bg\",a)})),$(\"#luckysheet-icon-cell-color-menu\").click((function(){let a=$(this).attr(\"id\")+\"-menuButton\",l=$(\"#\"+a);if(0==l.length){let r=\"cell-color-self\",o=X(),i=o.toolbar,s=o.button,c=o.alternatingColors,u=nd(n.coloritem,{class:\"luckysheet-icon-alternateformat\",name:i.alternatingColors+\"...\"}),d=nd(n.color,{id:a,coloritem:u,colorself:r,sub:\"\",resetColor:i.resetColor});$(\"body\").append(d),l=$(\"#\"+a),$(\"#\"+a).find(\".luckysheet-color-selected\").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,maxPaletteSize:8,maxSelectionSize:8,color:e.defaultCellColor,cancelText:s.cancel,chooseText:s.confirm,togglePaletteMoreText:i.customColor,togglePaletteLessText:i.collapse,togglePaletteOnly:!0,clearText:i.clearText,noColorSelectedText:i.noColorSelectedText,localStorageKey:\"spectrum.bgcolor\"+yo.gridKey,palette:[[\"#000\",\"#444\",\"#666\",\"#999\",\"#ccc\",\"#eee\",\"#f3f3f3\",\"#fff\"],[\"#f00\",\"#f90\",\"#ff0\",\"#0f0\",\"#0ff\",\"#00f\",\"#90f\",\"#f0f\"],[\"#f4cccc\",\"#fce5cd\",\"#fff2cc\",\"#d9ead3\",\"#d0e0e3\",\"#cfe2f3\",\"#d9d2e9\",\"#ead1dc\"],[\"#ea9999\",\"#f9cb9c\",\"#ffe599\",\"#b6d7a8\",\"#a2c4c9\",\"#9fc5e8\",\"#b4a7d6\",\"#d5a6bd\"],[\"#e06666\",\"#f6b26b\",\"#ffd966\",\"#93c47d\",\"#76a5af\",\"#6fa8dc\",\"#8e7cc3\",\"#c27ba0\"],[\"#c00\",\"#e69138\",\"#f1c232\",\"#6aa84f\",\"#45818e\",\"#3d85c6\",\"#674ea7\",\"#a64d79\"],[\"#900\",\"#b45f06\",\"#bf9000\",\"#38761d\",\"#134f5c\",\"#0b5394\",\"#351c75\",\"#741b47\"],[\"#600\",\"#783f04\",\"#7f6000\",\"#274e13\",\"#0c343d\",\"#073763\",\"#20124d\",\"#4c1130\"]],change:function(e){$(this);e=null!=e?e.toHexString():\"#fff\";$(\"#luckysheet-icon-cell-color .text-color-bar\").css(\"background-color\",e),$(\"#luckysheet-icon-cell-color\").attr(\"color\",e);let a=mn.deepCopyFlowData(t.flowdata);n.updateFormat(a,\"bg\",e),l.hide(),fd()}}),l.find(\".luckysheet-color-reset\").click((function(){l.hide(),fd();let e=$(\"#\"+a).find(\".luckysheet-color-selected\");e.val(\"#ffffff\"),$(\"#luckysheet-icon-cell-color\").attr(\"color\",null),e.spectrum(\"set\",\"#ffffff\"),$(\"#luckysheet-icon-cell-color .luckysheet-color-menu-button-indicator\").css(\"border-bottom-color\",\"#ffffff\");let r=mn.deepCopyFlowData(t.flowdata);n.updateFormat(r,\"bg\",null)})),l.find(\".luckysheet-icon-alternateformat\").click((function(){if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);if(l.hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(c.errorInfo):vo.info(c.errorInfo,\"\"));let e=$.extend(!0,{},t.luckysheet_select_save[0]);Xa.rangeIsExists(e)[0]||(Xa.modelfocusIndex=0,Xa.new(e)),Xa.init(),Xa.perfect()})),$(\"#\"+a).find(\".luckysheet-color-selected\").val(\"#fff\")}let r=$(this).outerWidth(),o=l.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r);let s=$(this).offset().top+26;setTimeout((function(){let e=$(\"#\"+a).find(\".luckysheet-color-selected\");e.spectrum(\"set\",e.val()),gd(l,i-28,s,\"lefttop\")}),1)}));let a=null;$(\"#luckysheet-icon-font-size\").mousedown((function(e){if(parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0){let e=window.getSelection();if(\"None\"!=e.type){let n=e.getRangeAt(0);n.collapsed||(t.inlineStringEditRange=n.cloneRange())}}xn(e),e.stopPropagation()})).click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",l=$(\"#\"+e);if(0==l.length){let r=[{text:\"9\",value:\"9\",example:\"\"},{text:\"10\",value:\"10\",example:\"\"},{text:\"11\",value:\"11\",example:\"\"},{text:\"12\",value:\"12\",example:\"\"},{text:\"14\",value:\"14\",example:\"\"},{text:\"16\",value:\"16\",example:\"\"},{text:\"18\",value:\"18\",example:\"\"},{text:\"20\",value:\"20\",example:\"\"},{text:\"22\",value:\"22\",example:\"\"},{text:\"24\",value:\"24\",example:\"\"},{text:\"26\",value:\"26\",example:\"\"},{text:\"28\",value:\"28\",example:\"\"},{text:\"36\",value:\"36\",example:\"\"},{text:\"48\",value:\"48\",example:\"\"},{text:\"72\",value:\"72\",example:\"\"}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"font-size\",item:o,subclass:\"\",sub:\"\"});$(\"body\").append(i),l=$(\"#\"+e).width(150),n.focus(l,10),l.find(\".luckysheet-cols-menuitem\").click((function(){l.hide(),fd();let e=$(this).attr(\"itemvalue\"),r=$(\"#luckysheet-icon-font-size input\");$(\"#luckysheet-icon-font-size\").attr(\"itemvalue\",e),n.focus(l,e),r.val(e);let o=mn.deepCopyFlowData(t.flowdata);n.updateFormat(o,\"fs\",e),clearTimeout(a)}))}let r=$(this).outerWidth(),o=l.outerWidth(),i=$(\"#luckysheet-icon-font-size\").attr(\"itemvalue\");null==i&&(i=10),n.focus(l,i);let s=$(this).offset().left;o>r&&o+s>$(\"#\"+t.container).width()&&(s=s-o+r),gd(l,s,$(this).offset().top+25,\"lefttop\")})).find(\"input.luckysheet-toolbar-textinput\").keydown((function(e){xn(e),e.stopPropagation()})).keyup((function(e){if(13!=e.keyCode)return;let l=$(this),r=parseInt(l.val()),o=$(\"#luckysheet-icon-font-size-menuButton\");n.focus(o,r);let i=mn.deepCopyFlowData(t.flowdata);n.updateFormat(i,\"fs\",r),a=setTimeout((function(){o.hide(),l.blur()}),200)})),$(\"#luckysheet-icon-border-all\").click((function(){if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);if(!Jl(t.currentSheetIndex))return;mn.deepCopyFlowData(t.flowdata);let e=$(this).attr(\"type\");null==e&&(e=\"border-all\");let n=$(\"#luckysheet-icon-borderColor-menuButton\").find(\".luckysheet-color-selected\").val(),a=$(\"#luckysheetborderSizepreview\").attr(\"itemvalue\");(null==n||\"\"==n)&&(n=\"#000\"),(null==a||\"\"==a)&&(a=\"1\");let l=$.extend(!0,{},t.config);null==l.borderInfo&&(l.borderInfo=[]);let r={rangeType:\"range\",borderType:e,color:n,style:a,range:$.extend(!0,[],t.luckysheet_select_save)};if(l.borderInfo.push(r),t.clearjfundo){t.jfundo.length=0;let e=[];e.type=\"borderChange\",e.config=$.extend(!0,{},t.config),e.curconfig=$.extend(!0,{},l),e.sheetIndex=t.currentSheetIndex,t.jfredo.push(e)}yo.saveParam(\"cg\",t.currentSheetIndex,l.borderInfo,{k:\"borderInfo\"}),t.config=l,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,setTimeout((function(){uo()}),1)})),$(\"#luckysheet-icon-border-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=10,r=120,o=X(),i=o.border,s=o.toolbar,c=o.button,u=[{text:i.borderTop,value:\"border-top\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-top iconfont-luckysheet luckysheet-iconfont-shangbiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderBottom,value:\"border-bottom\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-bottom iconfont-luckysheet luckysheet-iconfont-xiabiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderLeft,value:\"border-left\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-left iconfont-luckysheet luckysheet-iconfont-zuobiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderRight,value:\"border-right\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-right iconfont-luckysheet luckysheet-iconfont-youbiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:\"\",value:\"split\",example:\"\"},{text:i.borderNone,value:\"border-none\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-none iconfont-luckysheet luckysheet-iconfont-wubiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderAll,value:\"border-all\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all iconfont-luckysheet luckysheet-iconfont-quanjiabiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderOutside,value:\"border-outside\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-outside iconfont-luckysheet luckysheet-iconfont-sizhoujiabiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:\"Reset All Borders\",value:\"border-reset\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-none iconfont-luckysheet luckysheet-iconfont-wubiankuang\" style=\"user-select: none;\"> </div> </div>'},{text:\"\",value:\"split\",example:\"\"},{text:i.borderInside,value:\"border-inside\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-inside iconfont-luckysheet luckysheet-iconfont-neikuangxian\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderHorizontal,value:\"border-horizontal\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-horizontal iconfont-luckysheet luckysheet-iconfont-neikuanghengxian\" style=\"user-select: none;\"> </div> </div>'},{text:i.borderVertical,value:\"border-vertical\",example:'<div class=\"luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-vertical iconfont-luckysheet luckysheet-iconfont-neikuangshuxian\" style=\"user-select: none;\"> </div> </div>'},{text:\"\",value:\"split\",example:\"\"},{text:\"<span id='luckysheet-icon-borderColor-linecolor' class='luckysheet-mousedown-cancel' style='border-bottom:3px solid #000;'>\"+i.borderColor+\"</span>\",value:\"borderColor\",example:\"more\"},{text:i.borderSize+\"<img id='luckysheetborderSizepreview' width=100 height=10 src='data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==' style='position:absolute;bottom:-5px;right:0px;width:100px;height:10px;'>\",value:\"borderSize\",example:\"more\"}],d=Ft.border,h=n.createButtonMenu(u),f=nd(n.menu,{id:\"border-menu\",item:h,subclass:\"\",sub:\"\"}),m=[{text:i.borderNone,value:\"0\",example:\"\"},{text:\"<canvas type='Thin' class='border-Thin' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"1\",example:\"\"},{text:\"<canvas type='Hair' class='border-Hair' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"2\",example:\"\"},{text:\"<canvas type='Dotted' class='border-Dotted' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"3\",example:\"\"},{text:\"<canvas type='Dashed' class='border-Dashed' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"4\",example:\"\"},{text:\"<canvas type='DashDot' class='border-DashDot' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"5\",example:\"\"},{text:\"<canvas type='DashDotDot' class='border-DashDotDot' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"6\",example:\"\"},{text:\"<canvas type='Medium' class='border-Medium' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"8\",example:\"\"},{text:\"<canvas type='MediumDashed' class='border-MediumDashed' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"9\",example:\"\"},{text:\"<canvas type='MediumDashDot' class='border-MediumDashDot' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"10\",example:\"\"},{text:\"<canvas type='MediumDashDotDot' class='border-MediumDashDotDot' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"11\",example:\"\"},{text:\"<canvas type='Thick' class='border-Thick' width=\"+r+\" height=\"+l+\" style='width:\"+r+\"px;height:\"+l+\"px;position:static;'></canvas>\",value:\"13\",example:\"\"}],p=n.createButtonMenu(m),g=nd(n.menu,{id:\"borderSize\",item:p,subclass:\"luckysheet-menuButton-sub\"}),y=\"luckysheet-icon-borderSize-menuButton\",v=\"luckysheet-icon-borderColor-menuButton\",b=nd(n.color,{id:v,coloritem:\"\",colorself:\"\",sub:\"luckysheet-menuButton-sub\",resetColor:s.resetColor});$(\"body\").append(f+b+g),a=$(\"#\"+e).width(170),n.focus(a,\"border-all\"),$(\"#\"+y+\" canvas\").each((function(e){$(this).attr(\"type\");let t=$(this).closest(\".luckysheet-cols-menuitem\").attr(\"itemvalue\"),a=$(this).addClass(\"luckysheet-mousedown-cancel\").get(0).getContext(\"2d\");a.translate(.5,.5),n.setLineDash(a,t,\"h\",0,5,100,5),a.strokeStyle=\"#000000\",a.stroke(),a.closePath()})),$(\"#\"+y+\" .luckysheet-cols-menuitem\").click((function(){$(\"#\"+y).hide();let e=$(this),t=e.attr(\"itemvalue\");if(0==t)$(\"#luckysheetborderSizepreview\").attr(\"src\",\"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==\").attr(\"itemvalue\",null);else{let n=e.find(\"canvas\").get(0).toDataURL(\"image/png\");$(\"#luckysheetborderSizepreview\").attr(\"src\",n).attr(\"itemvalue\",t)}n.focus($(\"#\"+y),t)})),a.find(\".luckysheet-cols-menuitem\").click((function(){if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);a.hide(),fd();let e=$(this).attr(\"itemvalue\");if(\"borderColor\"==e||\"borderSize\"==e||!Jl(t.currentSheetIndex))return;mn.deepCopyFlowData(t.flowdata);let l=$(\"#\"+v).find(\".luckysheet-color-selected\").val(),r=$(\"#luckysheetborderSizepreview\").attr(\"itemvalue\");(null==l||\"\"==l)&&(l=\"#000\"),(null==r||\"\"==r)&&(r=\"1\");let o=$.extend(!0,{},t.config);(null==o.borderInfo||\"border-reset\"==e)&&(o.borderInfo=[]);let i={rangeType:\"range\",borderType:e,color:l,style:r,range:$.extend(!0,[],t.luckysheet_select_save)};if(o.borderInfo.push(i),t.clearjfundo){t.jfundo.length=0;let e=[];e.type=\"borderChange\",e.config=$.extend(!0,{},t.config),e.curconfig=$.extend(!0,{},o),e.sheetIndex=t.currentSheetIndex,t.jfredo.push(e)}yo.saveParam(\"cg\",t.currentSheetIndex,o.borderInfo,{k:\"borderInfo\"}),t.config=o,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,setTimeout((function(){uo()}),1),$(\"#luckysheet-icon-border-all\").attr(\"type\",e);let s=$(\"#luckysheet-icon-border-all\").find(\".luckysheet-icon-img-container\");s.removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-\"+e+d[e]),console.log(s),n.focus(a,e)})),$(\"#\"+v).find(\".luckysheet-color-selected\").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,maxPaletteSize:8,maxSelectionSize:8,color:\"#000\",cancelText:c.cancel,chooseText:c.confirm,togglePaletteMoreText:s.customColor,togglePaletteLessText:s.collapse,togglePaletteOnly:!0,clearText:s.clearText,noColorSelectedText:s.noColorSelectedText,localStorageKey:\"spectrum.bordercolor\"+yo.gridKey,palette:[[\"#000\",\"#444\",\"#666\",\"#999\",\"#ccc\",\"#eee\",\"#f3f3f3\",\"#fff\"],[\"#f00\",\"#f90\",\"#ff0\",\"#0f0\",\"#0ff\",\"#00f\",\"#90f\",\"#f0f\"],[\"#f4cccc\",\"#fce5cd\",\"#fff2cc\",\"#d9ead3\",\"#d0e0e3\",\"#cfe2f3\",\"#d9d2e9\",\"#ead1dc\"],[\"#ea9999\",\"#f9cb9c\",\"#ffe599\",\"#b6d7a8\",\"#a2c4c9\",\"#9fc5e8\",\"#b4a7d6\",\"#d5a6bd\"],[\"#e06666\",\"#f6b26b\",\"#ffd966\",\"#93c47d\",\"#76a5af\",\"#6fa8dc\",\"#8e7cc3\",\"#c27ba0\"],[\"#c00\",\"#e69138\",\"#f1c232\",\"#6aa84f\",\"#45818e\",\"#3d85c6\",\"#674ea7\",\"#a64d79\"],[\"#900\",\"#b45f06\",\"#bf9000\",\"#38761d\",\"#134f5c\",\"#0b5394\",\"#351c75\",\"#741b47\"],[\"#600\",\"#783f04\",\"#7f6000\",\"#274e13\",\"#0c343d\",\"#073763\",\"#20124d\",\"#4c1130\"]],change:function(e){$(this);e=null!=e?e.toHexString():\"#000\";$(\"#luckysheet-icon-borderColor-linecolor\").css(\"border-bottom-color\",e),$(\"#\"+v).find(\".luckysheet-color-selected\").val(e)}}),$(\"#\"+v).find(\".luckysheet-color-reset\").click((function(){let e=$(\"#\"+v).find(\".luckysheet-color-selected\");e.val(\"#000\"),$(\"#luckysheet-icon-cell-color\").attr(\"color\",null),e.spectrum(\"set\",\"#000\"),$(\"#luckysheet-icon-borderColor-linecolor\").css(\"border-bottom-color\",\"#000\")}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o-28,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-merge-button\").click((function(){let e=X().merge;if(!Gl(t.currentSheetIndex))return;if(Ou())return void(I()?alert(e.overlappingError):vo.info(e.overlappingError,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.partiallyError):vo.info(e.partiallyError,\"\"))}let a=mn.deepCopyFlowData(t.flowdata);n.updateFormat_mc(a,\"mergeAll\")})),$(\"#luckysheet-icon-merge-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=X().merge,r=[{text:l.mergeAll,value:\"mergeAll\",example:\"\"},{text:l.mergeV,value:\"mergeV\",example:\"\"},{text:l.mergeH,value:\"mergeH\",example:\"\"},{text:l.mergeCancel,value:\"mergeCancel\",example:\"\"}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"merge-menu\",item:o,subclass:\"\",sub:\"\"});$(\"body\").append(i),a=$(\"#\"+e),n.focus(a),a.find(\".luckysheet-cols-menuitem\").click((function(){if(a.hide(),fd(),Ou())return void(I()?alert(l.overlappingError):vo.info(l.overlappingError,\"\"));if(null!=t.config.merge){let e=!1;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].row[0],l=t.luckysheet_select_save[n].row[1],r=t.luckysheet_select_save[n].column[0],o=t.luckysheet_select_save[n].column[1];if(e=A(t.config,a,l,r,o),e)break}if(e)return void(I()?alert(l.partiallyError):vo.info(l.partiallyError,\"\"))}let e=$(this).attr(\"itemvalue\");n.focus(a,e);let r=mn.deepCopyFlowData(t.flowdata);n.updateFormat_mc(r,e)}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o-28,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-align\").click((function(){let e=$(\"#luckysheet-icon-align\").attr(\"type\");null==e&&(e=\"left\");let a=mn.deepCopyFlowData(t.flowdata);n.updateFormat(a,\"ht\",e)})),$(\"#luckysheet-icon-align-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=X().align,r=[{text:l.left,value:\"left\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left iconfont-luckysheet luckysheet-iconfont-wenbenzuoduiqi\" style=\"user-select: none;\"> </div> </div>'},{text:l.center,value:\"center\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-center iconfont-luckysheet luckysheet-iconfont-wenbenjuzhongduiqi\" style=\"user-select: none;\"> </div> </div>'},{text:l.right,value:\"right\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-right iconfont-luckysheet luckysheet-iconfont-wenbenyouduiqi\" style=\"user-select: none;\"> </div> </div>'}],o=Ft.align,i=n.createButtonMenu(r),s=nd(n.menu,{id:\"align-menu\",item:i,subclass:\"\",sub:\"\"});$(\"body\").append(s),a=$(\"#\"+e).width(120),n.focus(a),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");n.focus(a,e),$(\"#luckysheet-icon-align\").attr(\"type\",e).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-\"+e+o[e]);let l=mn.deepCopyFlowData(t.flowdata);n.updateFormat(l,\"ht\",e)}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o-28,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-valign\").click((function(){let e=$(\"#luckysheet-icon-valign\").attr(\"type\");null==e&&(e=\"bottom\");let a=mn.deepCopyFlowData(t.flowdata);n.updateFormat(a,\"vt\",e)})),$(\"#luckysheet-icon-valign-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e),l=X().align;if(0==a.length){let r=[{text:l.top,value:\"top\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-top iconfont-luckysheet luckysheet-iconfont-dingbuduiqi\" style=\"user-select: none;\"> </div> </div>'},{text:l.middle,value:\"middle\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-middle iconfont-luckysheet luckysheet-iconfont-shuipingduiqi\" style=\"user-select: none;\"> </div> </div>'},{text:l.bottom,value:\"bottom\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom iconfont-luckysheet luckysheet-iconfont-dibuduiqi\" style=\"user-select: none;\"> </div> </div>'}],o=Ft.align,i=n.createButtonMenu(r),s=nd(n.menu,{id:\"valign-menu\",item:i,subclass:\"\",sub:\"\"});$(\"body\").append(s),a=$(\"#\"+e).width(120),n.focus(a,\"bottom\"),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");n.focus(a,e),$(\"#luckysheet-icon-valign\").attr(\"type\",e).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-\"+e+o[e]);let l=mn.deepCopyFlowData(t.flowdata);n.updateFormat(l,\"vt\",e)}))}let r=$(this).outerWidth(),o=a.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r),gd(a,i-28,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-textwrap-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=X().textWrap,r=[{text:l.overflow,value:\"overflow\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-overflow iconfont-luckysheet luckysheet-iconfont-yichu1\" style=\"user-select: none;\"> </div> </div>'},{text:l.wrap,value:\"wrap\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-wrap iconfont-luckysheet luckysheet-iconfont-zidonghuanhang\" style=\"user-select: none;\"> </div> </div>'},{text:l.clip,value:\"clip\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip iconfont-luckysheet luckysheet-iconfont-jieduan\" style=\"user-select: none;\"> </div> </div>'}],o=Ft.textWrap,i=n.createButtonMenu(r),s=nd(n.menu,{id:\"textwrap-menu\",item:i,subclass:\"\",sub:\"\"});$(\"body\").append(s),a=$(\"#\"+e).width(120),n.focus(a,\"clip\"),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");n.focus(a,e),$(\"#luckysheet-icon-textwrap\").attr(\"type\",e).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-\"+e+o[e]);let l=mn.deepCopyFlowData(t.flowdata);n.updateFormat(l,\"tb\",e)}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o-28,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-rotation-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=X().rotation,r=[{text:l.none,value:\"none\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont-luckysheet luckysheet-iconfont-wuxuanzhuang\" style=\"user-select: none;\"> </div> </div>'},{text:l.angleup,value:\"angleup\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angleup iconfont-luckysheet luckysheet-iconfont-xiangshangqingxie\" style=\"user-select: none;\"> </div> </div>'},{text:l.angledown,value:\"angledown\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angledown iconfont-luckysheet luckysheet-iconfont-xiangxiaqingxie\" style=\"user-select: none;\"> </div> </div>'},{text:l.vertical,value:\"vertical\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-vertical iconfont-luckysheet luckysheet-iconfont-shupaiwenzi\" style=\"user-select: none;\"> </div> </div>'},{text:l.rotationUp,value:\"rotation-up\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-up iconfont-luckysheet luckysheet-iconfont-wenbenxiangshang\" style=\"user-select: none;\"> </div> </div>'},{text:l.rotationDown,value:\"rotation-down\",example:'<div class=\"luckysheet-icon luckysheet-inline-block\" style=\"user-select: none;opacity:1;\"> <div aria-hidden=\"true\" class=\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-down iconfont-luckysheet luckysheet-iconfont-xiangxia90\" style=\"user-select: none;\"> </div> </div>'}],o=Ft.rotation,i=n.createButtonMenu(r),s=nd(n.menu,{id:\"rotation-menu\",item:i,subclass:\"\",sub:\"\"});$(\"body\").append(s),a=$(\"#\"+e).width(160),n.focus(a),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");n.focus(a,e),$(\"#luckysheet-icon-rotation\").attr(\"type\",e).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-\"+e+o[e]);let l=mn.deepCopyFlowData(t.flowdata);n.updateFormat(l,\"tr\",e)}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o-28,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-freezen-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=X().freezen,r=[{text:l.freezenRow,value:\"freezenRow\",example:\"\"},{text:l.freezenColumn,value:\"freezenColumn\",example:\"\"},{text:l.freezenRC,value:\"freezenRC\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:l.freezenRowRange,value:\"freezenRowRange\",example:\"\"},{text:l.freezenColumnRange,value:\"freezenColumnRange\",example:\"\"},{text:l.freezenRCRange,value:\"freezenRCRange\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:l.freezenCancel,value:\"freezenCancel\",example:\"\"}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"freezen-menu\",item:o,subclass:\"\",sub:\"\"});$(\"body\").append(i),a=$(\"#\"+e).width(170),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");if(n.focus(a,e),\"freezenCancel\"===e&&a.find(\".fa.fa-check\").remove(),$l.saveFrozen(e),\"freezenRow\"==e)Ls();else if(\"freezenColumn\"==e)Os();else if(\"freezenRC\"==e){if($l.freezenRealFirstRowColumn){let e=0,n=t.visibledatarow[e]-2+t.columnHeaderHeight,a=[t.visibledatarow[e],e+1,0,$l.cutVolumn(t.visibledatarow,e+1),n];$l.saveFreezen(a,n,null,null),$l.createFreezenHorizontal(a,n);let l=0,r=t.visibledatacolumn[l]-2+t.rowHeaderWidth,o=[t.visibledatacolumn[l],l+1,0,$l.cutVolumn(t.visibledatacolumn,l+1),r];$l.saveFreezen(null,null,o,r),$l.createFreezenVertical(o,r)}else{let e=$(\"#luckysheet-cell-main\").scrollTop(),n=Xn(t.visibledatarow,e);-1==n&&(n=0);let a=t.visibledatarow[n]-2-e+t.columnHeaderHeight,l=[t.visibledatarow[n],n+1,e,$l.cutVolumn(t.visibledatarow,n+1),a];$l.saveFreezen(l,a,null,null),$l.createFreezenHorizontal(l,a);let r=$(\"#luckysheet-cell-main\").scrollLeft(),o=Xn(t.visibledatacolumn,r);-1==o&&(o=0);let i=t.visibledatacolumn[o]-2-r+t.rowHeaderWidth,s=[t.visibledatacolumn[o],o+1,r,$l.cutVolumn(t.visibledatacolumn,o+1),i];$l.saveFreezen(null,null,s,i),$l.createFreezenVertical(s,i)}$l.createAssistCanvas(),uo()}else if(\"freezenRowRange\"==e){if(null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)return void(I()?alert(l.noSeletionError):vo.info(l.noSeletionError,\"\"));let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1].top;if($l.freezenRealFirstRowColumn&&e>$(\"#luckysheet-cell-main\").height())return vo.info(l.rangeRCOverErrorTitle,l.rangeRCOverError);let n,a,r=$(\"#luckysheet-cell-main\").scrollTop(),o=Xn(t.visibledatarow,r),i=t.luckysheet_select_save[t.luckysheet_select_save.length-1],s=null==i.row_focus?i.row[0]:i.row_focus;o=Math.max(o-1,s-1,0),$l.freezenRealFirstRowColumn?(n=t.visibledatarow[o]-2+t.columnHeaderHeight,a=[t.visibledatarow[o],o+1,0,$l.cutVolumn(t.visibledatarow,o+1),n]):(n=t.visibledatarow[o]-2-r+t.columnHeaderHeight,a=[t.visibledatarow[o],o+1,r,$l.cutVolumn(t.visibledatarow,o+1),n]),$l.saveFreezen(a,n,null,null),null!=$l.freezenverticaldata&&($l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),$l.createFreezenHorizontal(a,n),$l.createAssistCanvas(),uo()}else if(\"freezenColumnRange\"==e){if(null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)return void(I()?alert(l.noSeletionError):vo.info(l.noSeletionError,\"\"));let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1].left;if($l.freezenRealFirstRowColumn&&e>$(\"#luckysheet-cell-main\").width())return vo.info(l.rangeRCOverErrorTitle,l.rangeRCOverError);let n,a,r=$(\"#luckysheet-cell-main\").scrollLeft(),o=Xn(t.visibledatacolumn,r),i=t.luckysheet_select_save[t.luckysheet_select_save.length-1],s=null==i.column_focus?i.column[0]:i.column_focus;o=Math.max(o-1,s-1,0),$l.freezenRealFirstRowColumn?(n=t.visibledatacolumn[o]-2+t.rowHeaderWidth,a=[t.visibledatacolumn[o],o+1,0,$l.cutVolumn(t.visibledatacolumn,o+1),n]):(n=t.visibledatacolumn[o]-2-r+t.rowHeaderWidth,a=[t.visibledatacolumn[o],o+1,r,$l.cutVolumn(t.visibledatacolumn,o+1),n]),$l.saveFreezen(null,null,a,n),null!=$l.freezenhorizontaldata&&($l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo()),$l.createFreezenVertical(a,n),$l.createAssistCanvas(),uo()}else if(\"freezenRCRange\"==e){if(null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)return void(I()?alert(l.noSeletionError):vo.info(l.noSeletionError,\"\"));let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1].top,n=t.luckysheet_select_save[t.luckysheet_select_save.length-1].left;if($l.freezenRealFirstRowColumn&&(e>$(\"#luckysheet-cell-main\").height()||n>$(\"#luckysheet-cell-main\").width()))return vo.info(l.rangeRCOverErrorTitle,l.rangeRCOverError);let a,r,o=$(\"#luckysheet-cell-main\").scrollTop(),i=Xn(t.visibledatarow,o),s=t.luckysheet_select_save[t.luckysheet_select_save.length-1],c=null==s.row_focus?s.row[0]:s.row_focus;i=Math.max(i-1,c-1,0),$l.freezenRealFirstRowColumn?(a=t.visibledatarow[i]-2+t.columnHeaderHeight,r=[t.visibledatarow[i],i+1,0,$l.cutVolumn(t.visibledatarow,i+1),a],$l.saveFreezen(r,a,null,null)):(a=t.visibledatarow[i]-2-o+t.columnHeaderHeight,r=[t.visibledatarow[i],i+1,o,$l.cutVolumn(t.visibledatarow,i+1),a],$l.saveFreezen(r,a,null,null)),$l.createFreezenHorizontal(r,a);let u,d,h=$(\"#luckysheet-cell-main\").scrollLeft(),f=Xn(t.visibledatacolumn,h),m=null==s.column_focus?s.column[0]:s.column_focus;f=Math.max(f-1,m-1,0),$l.freezenRealFirstRowColumn?(u=t.visibledatacolumn[f]-2+t.rowHeaderWidth,d=[t.visibledatacolumn[f],f+1,0,$l.cutVolumn(t.visibledatacolumn,f+1),u]):(u=t.visibledatacolumn[f]-2-h+t.rowHeaderWidth,d=[t.visibledatacolumn[f],f+1,h,$l.cutVolumn(t.visibledatacolumn,f+1),u]),$l.saveFreezen(null,null,d,u),$l.createFreezenVertical(d,u),$l.createAssistCanvas(),uo()}else\"freezenCancel\"==e&&(null!=$l.freezenverticaldata&&($l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),null!=$l.freezenhorizontaldata&&($l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo()),$l.scrollAdapt());setTimeout((function(){Dl()}),0)}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o-68,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-autofilter\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e);if(0==a.length){let l=X(),r=l.sort,o=l.filter,i=[{text:r.asc,value:\"asc\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-shengxu\" aria-hidden=\"true\"></i>'},{text:r.desc,value:\"desc\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-jiangxu\" aria-hidden=\"true\"></i>'},{text:r.custom+\"...\",value:\"diysort\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-zidingyipaixu\" aria-hidden=\"true\"></i>'},{text:\"\",value:\"split\",example:\"\"},{text:o.filter,value:\"filter\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-shaixuan2\" aria-hidden=\"true\"></i>'},{text:o.clearFilter,value:\"clearfilter\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-qingchushaixuan\" aria-hidden=\"true\"></i>'}],s=n.createButtonMenu(i),c=nd(n.menu,{id:\"autofilter\",item:s,subclass:\"\",sub:\"\"});$(\"body\").append(c),a=$(\"#\"+e).width(150),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");\"diysort\"==e?$(\"#luckysheetorderby\").click():\"asc\"==e?mr(!0):\"desc\"==e?mr(!1):\"filter\"==e?$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex).length>0?$(\"#luckysheet-filter-initial\").click():nl():\"clearfilter\"==e&&$(\"#luckysheet-filter-initial\").click()}))}let l=$(this).outerWidth(),r=a.outerWidth(),o=$(this).offset().left;r>l&&r+o>$(\"#\"+t.container).width()&&(o=o-r+l),gd(a,o,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-seachmore\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e),l=X().findAndReplace;if(0==a.length){let r=[{text:l.find+\" ...\",value:\"search\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-sousuo\" aria-hidden=\"true\"></i>'},{text:l.replace+\" ...\",value:\"replace\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-tihuan\" aria-hidden=\"true\"></i>'},{text:\"\",value:\"split\",example:\"\"},{text:l.location+\" ...\",value:\"location\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-dingwei\" aria-hidden=\"true\"></i>'},{text:l.formula,value:\"locationFormula\",example:l.locationExample},{text:l.date,value:\"locationConstantDate\",example:l.locationExample},{text:l.number,value:\"locationConstantNumber\",example:l.locationExample},{text:l.string,value:\"locationConstantString\",example:l.locationExample},{text:l.error,value:\"locationConstantError\",example:l.locationExample},{text:l.condition,value:\"locationCF\",example:l.locationExample},{text:l.rowSpan,value:\"locationStepRow\",example:l.locationExample},{text:l.columnSpan,value:\"locationStepColumn\",example:l.locationExample}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"seachmore\",item:o,subclass:\"\",sub:\"\"});$(\"body\").append(i),a=$(\"#\"+e).width(180),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");if(\"search\"==e||\"replace\"==e)\"search\"==e?Cs.createDialog(0):\"replace\"==e&&Cs.createDialog(1),Cs.init(),$(\"#luckysheet-search-replace #searchInput input\").focus();else if(\"location\"==e)ju.createDialog(),ju.init();else if(\"locationFormula\"==e||\"locationConstantDate\"==e||\"locationConstantNumber\"==e||\"locationConstantString\"==e||\"locationConstantError\"==e||\"locationCF\"==e){let n,a=t.luckysheet_select_save[0];n=0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&a.row[0]==a.row[1]&&a.column[0]==a.column[1]?[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1]}]:$.extend(!0,[],t.luckysheet_select_save),\"locationFormula\"==e?ju.apply(n,\"locationFormula\",\"all\"):\"locationConstantDate\"==e?ju.apply(n,\"locationConstant\",\"d\"):\"locationConstantNumber\"==e?ju.apply(n,\"locationConstant\",\"n\"):\"locationConstantString\"==e?ju.apply(n,\"locationConstant\",\"s,g\"):\"locationConstantError\"==e?ju.apply(n,\"locationConstant\",\"e\"):\"locationCF\"==e&&ju.apply(n,\"locationCF\")}else if(\"locationStepRow\"==e){if(0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].row[0]==t.luckysheet_select_save[0].row[1])return void(I()?alert(l.lessTwoRowTip):vo.info(\"\",l.lessTwoRowTip));let e=$.extend(!0,[],t.luckysheet_select_save);ju.apply(e,\"locationStepRow\")}else if(\"locationStepColumn\"==e){if(0==t.luckysheet_select_save.length||1==t.luckysheet_select_save.length&&t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1])return void(I()?alert(l.lessTwoColumnTip):vo.info(\"\",l.lessTwoColumnTip));let e=$.extend(!0,[],t.luckysheet_select_save);ju.apply(e,\"locationStepColumn\")}}))}let r=$(this).outerWidth(),o=a.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r),gd(a,i,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-function\").click((function(){n.autoSelectionFormula(\"SUM\")})),$(\"#luckysheet-icon-function-menu\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e),l=X().formula;if(0==a.length){let r=[{text:l.sum,value:\"SUM\",example:\"SUM\"},{text:l.average,value:\"AVERAGE\",example:\"AVERAGE\"},{text:l.count,value:\"COUNT\",example:\"COUNT\"},{text:l.max,value:\"MAX\",example:\"MAX\"},{text:l.min,value:\"MIN\",example:\"MIN\"},{text:\"\",value:\"split\",example:\"\"},{text:l.ifGenerate,value:\"if\",example:\"IF\"},{text:l.find+\" ...\",value:\"formula\",example:\"\"}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"function-menu\",item:o,subclass:\"\",sub:\"\"});$(\"body\").append(i),a=$(\"#\"+e).width(180),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");if(\"if\"==e){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1],n=null==e.row_focus?e.row[0]:e.row_focus,a=null==e.column_focus?e.column[0]:e.column_focus;if(t.flowdata[n]&&t.flowdata[n][a]&&t.flowdata[n][a].f){let e=t.flowdata[n][a].f.toString();if(-1==e.indexOf(\"=if(\"))return void(I()?alert(l.tipNotBelongToIf):vo.info(l.tipNotBelongToIf,\"\"));Gu.ifFormulaDialog(e)}else Gu.ifFormulaDialog();Gu.init()}else if(\"formula\"==e){if(0==t.luckysheet_select_save.length)return void(I()?alert(l.tipSelectCell):vo.info(l.tipSelectCell,\"\"));let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1],n=e.row_focus,a=e.column_focus;ws(n,a,t.flowdata);let r=t.flowdata[n][a];if(null!=r&&null!=r.f){let e=wi.getfunctionParam(r.f);null!=e.fn?Wu.formulaParmDialog(e.fn,e.param):Wu.formulaListDialog()}else $(\"#luckysheet-rich-text-editor\").html('<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span>'),$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()),Wu.formulaListDialog();Wu.init()}else n.autoSelectionFormula(e)}))}let r=$(this).outerWidth(),o=a.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r),gd(a,i-48,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-bold\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(e){let a=mn.deepCopyFlowData(t.flowdata),l=Du(\"bl\",1)?0:1;n.updateFormat(a,\"bl\",l)})),$(\"#luckysheet-icon-italic\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=Du(\"it\",1)?0:1;n.updateFormat(e,\"it\",a)})),$(\"#luckysheet-icon-strikethrough\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=Du(\"cl\",1)?0:1;n.updateFormat(e,\"cl\",a)})),$(\"#luckysheet-icon-underline\").mousedown((function(e){xn(e),e.stopPropagation()})).click((function(){let e=mn.deepCopyFlowData(t.flowdata),a=Du(\"un\",1)?0:1;n.updateFormat(e,\"un\",a)})),$(\"#luckysheet-icon-conditionformat\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e),l=X().conditionformat;if(0==a.length){let r=[{text:l.highlightCellRules,value:\"highlightCellRule\",example:\"more\"},{text:l.itemSelectionRules,value:\"projectSelectRule\",example:\"more\"},{text:l.dataBar,value:\"dataBar\",example:\"more\"},{text:l.colorGradation,value:\"colorGradation\",example:\"more\"},{text:l.icons,value:\"icons\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:l.newRule,value:\"newRule\",example:\"\"},{text:l.deleteRule,value:\"deleteRule\",example:\"more\"},{text:l.manageRules,value:\"administerRule\",example:\"\"}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"conditionformat\",item:o,subclass:\"\",sub:\"\"}),s=[{text:l.greaterThan,value:\"greaterThan\",example:\">\"},{text:l.lessThan,value:\"lessThan\",example:\"<\"},{text:l.between,value:\"betweenness\",example:\"[]\"},{text:l.equal,value:\"equal\",example:\"=\"},{text:l.textContains,value:\"textContains\",example:\"()\"},{text:l.occurrence,value:\"occurrenceDate\",example:l.yesterday},{text:l.duplicateValue,value:\"duplicateValue\",example:\"##\"}],c=n.createButtonMenu(s),u=nd(n.menu,{id:\"highlightCellRule\",item:c,subclass:\"luckysheet-menuButton-sub\"}),d=[{text:l.top10,value:\"top10\",example:l.top10},{text:l.top10_percent,value:\"top10%\",example:l.top10_percent},{text:l.last10,value:\"last10\",example:l.last10},{text:l.last10_percent,value:\"last10%\",example:l.last10_percent},{text:l.aboveAverage,value:\"AboveAverage\",example:l.above},{text:l.belowAverage,value:\"SubAverage\",example:l.below}],h=n.createButtonMenu(d),f=nd(n.menu,{id:\"projectSelectRule\",item:h,subclass:\"luckysheet-menuButton-sub\"}),m=`<div id=\"luckysheet-icon-dataBar-menuButton\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton luckysheet-menuButton-sub luckysheet-mousedown-cancel\" style=\"width: 126px;padding: 5px;top: 118.5px;left: 1321.48px;display: none;\">\\n                                    <div itemvalue=\"0\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 0;\" title=\"${l.gradientDataBar_1}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"1\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px 0;\" title=\"${l.gradientDataBar_2}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"2\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px 0;\" title=\"${l.gradientDataBar_3}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"3\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 -36px;\" title=\"${l.gradientDataBar_4}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"4\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px -36px;\" title=\"${l.gradientDataBar_5}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"5\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px -36px;\" title=\"${l.gradientDataBar_6}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"6\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 -72px;\" title=\"${l.solidColorDataBar_1}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"7\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px -72px;\" title=\"${l.solidColorDataBar_2}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"8\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px -72px;\" title=\"${l.solidColorDataBar_3}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"9\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 -108px;\" title=\"${l.solidColorDataBar_4}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"10\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px -108px;\" title=\"${l.solidColorDataBar_5}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"11\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px -108px;\" title=\"${l.solidColorDataBar_6}\"></div>\\n                                    </div>\\n                                </div>`,p=`<div id=\"luckysheet-icon-colorGradation-menuButton\" class=\"luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton luckysheet-menuButton-sub luckysheet-mousedown-cancel\" style=\"width: 126px;padding: 5px;top: 143.5px;left: 1321.48px;display: none;\">\\n                                    <div itemvalue=\"0\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 0;\" title=\"${l.colorGradation_1}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"1\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px 0;\" title=\"${l.colorGradation_2}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"2\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px 0;\" title=\"${l.colorGradation_3}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"3\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -114px 0;\" title=\"${l.colorGradation_4}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"4\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 -36px;\" title=\"${l.colorGradation_5}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"5\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px -36px;\" title=\"${l.colorGradation_6}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"6\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px -36px;\" title=\"${l.colorGradation_7}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"7\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -114px -36px;\" title=\"${l.colorGradation_8}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"8\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: 0 -72px;\" title=\"${l.colorGradation_9}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"9\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -38px -72px;\" title=\"${l.colorGradation_10}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"10\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -76px -72px;\" title=\"${l.colorGradation_11}\"></div>\\n                                    </div>\\n                                    <div itemvalue=\"11\" class=\"luckysheet-cols-menuitem luckysheet-mousedown-cancel\" style=\"width: 28px; height: 26px;padding: 5px;float: left;\">\\n                                        <div class=\"luckysheet-mousedown-cancel bgImgBox\" style=\"background-position: -114px -72px;\" title=\"${l.colorGradation_12}\"></div>\\n                                    </div>\\n                                </div>`,g=[{text:l.deleteSheetRule,value:\"delSheet\",example:\"\"}],y=n.createButtonMenu(g),v=nd(n.menu,{id:\"deleteRule\",item:y,subclass:\"luckysheet-menuButton-sub\"});$(\"body\").append(i+u+f+m+p+v),a=$(\"#\"+e).width(190),$(\"#luckysheet-icon-highlightCellRule-menuButton\").width(160),$(\"#luckysheet-icon-projectSelectRule-menuButton\").width(180),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");if(\"icons\"==e){if(0==t.luckysheet_select_save.length)return void(I()?alert(l.pleaseSelectRange):vo.info(l.pleaseSelectRange,\"\"));ko.CFiconsDialog(),ko.init()}else if(\"newRule\"==e){if(0==t.luckysheet_select_save.length)return void(I()?alert(l.pleaseSelectRange):vo.info(l.pleaseSelectRange,\"\"));ko.newConditionRuleDialog(0),ko.init()}else if(\"administerRule\"==e){let e=yo.loadSheetUrl,n=zt();if(\"\"!=e&&null!=e){let a=[];for(let e=0;e<n.length;e++)a.push(n[e].index);$.post(e,{gridKey:yo.gridKey,index:a.join(\",\")},(function(e){let a=new Function(\"return \"+e)();setTimeout((function(){t.loadingObj.close()}),500);for(let e in a){if(e==t.currentSheetIndex)continue;let l=n[Mt(e)];l.celldata=a[e.toString()],l.data=ki.buildGridData(l)}jt(n),ko.fileClone=$.extend(!0,[],n),ko.administerRuleDialog(),ko.init()}))}else ko.fileClone=$.extend(!0,[],n),ko.administerRuleDialog(),ko.init()}})),$(document).off(\"click.CFhighlightCellRule\").on(\"click.CFhighlightCellRule\",\"#luckysheet-icon-highlightCellRule-menuButton .luckysheet-cols-menuitem\",(function(){a.hide(),$(\"#luckysheet-icon-highlightCellRule-menuButton\").hide(),fd();let e=$(this).attr(\"itemvalue\");if(0!=t.luckysheet_select_save.length){let t,n,a=ko.textCellColorHtml();switch(e){case\"greaterThan\":t=l.conditionformat_greaterThan,n=`<div class=\"box\" data-itemvalue=\"greaterThan\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_greaterThan_title}：</div>\\n                                                <div class=\"inpbox range\">\\n                                                    <input id=\"conditionVal\" class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${l.selectCell}\"></i>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div> \\n                                                ${a} \\n                                            </div>`;break;case\"lessThan\":t=l.conditionformat_lessThan,n=`<div class=\"box\" data-itemvalue=\"lessThan\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_lessThan_title}：</div>\\n                                                <div class=\"inpbox range\">\\n                                                    <input id=\"conditionVal\" class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${l.selectCell}\"></i>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"betweenness\":t=l.conditionformat_betweenness,n=`<div class=\"box\" data-itemvalue=\"betweenness\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_betweenness_title}：</div>\\n                                                <div style=\"height: 30px;line-height: 30px;\">\\n                                                    <div class=\"inpbox2 range\">\\n                                                        <input id=\"conditionVal\" class=\"formulaInputFocus\"/>\\n                                                        <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${l.selectCell}\"></i>\\n                                                    </div>\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.to}</div>\\n                                                    <div class=\"inpbox2 range\">\\n                                                        <input id=\"conditionVal2\" class=\"formulaInputFocus\"/>\\n                                                        <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${l.selectCell}\"></i>\\n                                                    </div>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"equal\":t=l.conditionformat_equal,n=`<div class=\"box\" data-itemvalue=\"equal\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_equal_title}：</div>\\n                                                <div class=\"inpbox range\">\\n                                                    <input id=\"conditionVal\" class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${l.selectCell}\"></i>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"textContains\":t=l.conditionformat_textContains,n=`<div class=\"box\" data-itemvalue=\"textContains\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_textContains_title}：</div>\\n                                                <div class=\"inpbox range\">\\n                                                    <input id=\"conditionVal\" class=\"formulaInputFocus\"/>\\n                                                    <i class=\"fa fa-table\" aria-hidden=\"true\" title=\"${l.selectCell}\"></i>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"occurrenceDate\":t=l.conditionformat_occurrenceDate,n=`<div class=\"box\" data-itemvalue=\"occurrenceDate\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_occurrenceDate_title}：</div>\\n                                                <div class=\"inpbox\">\\n                                                    <input id=\"daterange-btn\" class=\"formulaInputFocus\" readonly=\"readonly\" placeholder=\"${l.pleaseSelectADate}\"/>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"duplicateValue\":t=l.conditionformat_duplicateValue,n=`<div class=\"box\" data-itemvalue=\"duplicateValue\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_duplicateValue_title}：</div>\\n                                                <select id=\"conditionVal\" class=\"selectbox\">\\n                                                    <option value=\"0\">${l.duplicateValue}</option>\\n                                                    <option value=\"1\">${l.uniqueValue}</option>\\n                                                </select>\\n                                                <div style=\"margin:5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`}ko.conditionformatDialog(t,n)}else I()?alert(l.pleaseSelectRange):vo.info(l.pleaseSelectRange,\"\")})),$(document).off(\"click.CFprojectSelectRule\").on(\"click.CFprojectSelectRule\",\"#luckysheet-icon-projectSelectRule-menuButton .luckysheet-cols-menuitem\",(function(){a.hide(),$(\"#luckysheet-icon-projectSelectRule-menuButton\").hide(),fd();let e=$(this).attr(\"itemvalue\");if(0!=t.luckysheet_select_save.length){let t,n,a=ko.textCellColorHtml();switch(e){case\"top10\":t=l.conditionformat_top10,n=`<div class=\"box\" data-itemvalue=\"top10\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_top10_title}：</div>\\n                                                <div style=\"height: 30px;line-height: 30px;\">\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.top}</div>\\n                                                    <div class=\"inpbox2\">\\n                                                        <input id=\"conditionVal\" class=\"formulaInputFocus\" type=\"number\" value=\"10\"/>\\n                                                    </div>\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.oneself}</div>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"top10%\":t=l.conditionformat_top10_percent,n=`<div class=\"box\" data-itemvalue=\"top10%\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_top10_title}：</div>\\n                                                <div style=\"height: 30px;line-height: 30px;\">\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.top}</div>\\n                                                    <div class=\"inpbox2\">\\n                                                        <input id=\"conditionVal\" class=\"formulaInputFocus\" type=\"number\" value=\"10\"/>\\n                                                    </div>\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">%</div>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"last10\":t=l.conditionformat_last10,n=`<div class=\"box\" data-itemvalue=\"last10\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_last10_title}：</div>\\n                                                <div style=\"height: 30px;line-height: 30px;\">\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.last}</div>\\n                                                    <div class=\"inpbox2\">\\n                                                        <input id=\"conditionVal\" class=\"formulaInputFocus\" type=\"number\" value=\"10\"/>\\n                                                    </div>\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.oneself}</div>\\n                                                </div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAs}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"last10%\":t=l.conditionformat_last10_percent,n=`<div class=\"box\" data-itemvalue=\"last10%\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_last10_title}：</div>\\n                                                <div style=\"height: 30px;line-height: 30px;\">\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">${l.last}</div>\\n                                                    <div class=\"inpbox2\">\\n                                                        <input id=\"conditionVal\" class=\"formulaInputFocus\" type=\"number\" value=\"10\"/>\\n                                                    </div>\\n                                                    <div style=\"float: left;height: 30px;line-height: 30px;margin: 0 5px;\">%</div>\\n                                                </div>\\n                                                <div style=\"margin:5px 0;\">设置为：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"AboveAverage\":t=l.conditionformat_AboveAverage,n=`<div class=\"box\" data-itemvalue=\"AboveAverage\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_AboveAverage_title}：</div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAsByArea}：</div>\\n                                                ${a}\\n                                            </div>`;break;case\"SubAverage\":t=l.conditionformat_SubAverage,n=`<div class=\"box\" data-itemvalue=\"SubAverage\">\\n                                                <div class=\"boxTitleOne\">${l.conditionformat_SubAverage_title}：</div>\\n                                                <div style=\"margin: 5px 0;\">${l.setAsByArea}：</div>\\n                                                ${a}\\n                                            </div>`}ko.conditionformatDialog(t,n)}else I()?alert(l.pleaseSelectRange):vo.info(l.pleaseSelectRange,\"\")})),$(document).off(\"click.CFdataBar\").on(\"click.CFdataBar\",\"#luckysheet-icon-dataBar-menuButton .luckysheet-cols-menuitem\",(function(){a.hide(),$(\"#luckysheet-icon-dataBar-menuButton\").hide(),fd();let e=$(this).attr(\"itemvalue\");if(t.luckysheet_select_save.length>0){let n=$.extend(!0,[],t.luckysheet_select_save),a=ko.dataBarList[e].format;ko.updateItem(\"dataBar\",n,a)}})),$(document).off(\"click.CFcolorGradation\").on(\"click.CFcolorGradation\",\"#luckysheet-icon-colorGradation-menuButton .luckysheet-cols-menuitem\",(function(){a.hide(),$(\"#luckysheet-icon-colorGradation-menuButton\").hide(),fd();let e=$(this).attr(\"itemvalue\");if(t.luckysheet_select_save.length>0){let n=$.extend(!0,[],t.luckysheet_select_save),a=ko.colorGradationList[e].format;ko.updateItem(\"colorGradation\",n,a)}})),$(document).off(\"click.CFdeleteRule\").on(\"click.CFdeleteRule\",\"#luckysheet-icon-deleteRule-menuButton .luckysheet-cols-menuitem\",(function(){a.hide(),$(\"#luckysheet-icon-deleteRule-menuButton\").hide(),fd(),\"delSheet\"==$(this).attr(\"itemvalue\")&&ko.updateItem(\"delSheet\")}))}let r=$(this).outerWidth(),o=a.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r),gd(a,i,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-postil\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e),l=X().comment;a.remove(),vl.removeActivePs();let r=t.luckysheet_select_save[t.luckysheet_select_save.length-1],o=r.row_focus;null==o&&(o=r.row[0]);let i,s=r.column_focus;null==s&&(s=r.column[0]),i=null!=t.flowdata[o][s]&&null!=t.flowdata[o][s].ps?[{text:l.edit,value:\"editPs\",example:\"\"},{text:l.delete,value:\"delPs\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:l.showOne,value:\"showHidePs\",example:\"\"},{text:l.showAll,value:\"showHideAllPs\",example:\"\"}]:[{text:l.insert,value:\"newPs\",example:\"\"},{text:\"\",value:\"split\",example:\"\"},{text:l.showAll,value:\"showHideAllPs\",example:\"\"}];let c=n.createButtonMenu(i),u=nd(n.menu,{id:\"postil\",item:c,subclass:\"\",sub:\"\"});$(\"body\").append(u),a=$(\"#\"+e).width(150),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");\"newPs\"==e?vl.newPs(o,s):\"editPs\"==e?vl.editPs(o,s):\"delPs\"==e?vl.delPs(o,s):\"showHidePs\"==e?vl.showHidePs(o,s):\"showHideAllPs\"==e&&vl.showHideAllPs()}));let d=$(this).outerWidth(),h=a.outerWidth(),f=$(this).offset().left;h>d&&h+f>$(\"#\"+t.container).width()&&(f=f-h+d),gd(a,f,$(this).offset().top+25,\"lefttop\")})),$(\"#luckysheet-icon-protection\").click((function(){ql(ki.getSheetByIndex())})),$(\"#luckysheet-icon-print\").click((function(){let e=$(this).attr(\"id\")+\"-menuButton\",a=$(\"#\"+e),l=X().print;if(0==a.length){let r=[{text:l.menuItemPrint,value:\"print\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-dayin\" aria-hidden=\"true\"></i>'},{text:\"\",value:\"split\",example:\"\"},{text:l.menuItemAreas,value:\"areas\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-tihuan\" aria-hidden=\"true\"></i>'},{text:l.menuItemRows,value:\"rows\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-zhuandao1\" aria-hidden=\"true\"></i>'},{text:l.menuItemColumns,value:\"columns\",example:'<i class=\"iconfont-luckysheet luckysheet-iconfont-dingwei\" aria-hidden=\"true\"></i>'}],o=n.createButtonMenu(r),i=nd(n.menu,{id:\"print\",item:o,subclass:\"\",sub:\"\"});$(\"body\").append(i),a=$(\"#\"+e).width(180),a.find(\".luckysheet-cols-menuitem\").click((function(){a.hide(),fd();let e=$(this).attr(\"itemvalue\");if(\"print\"==e){if(t.luckysheetPrint){luckysheetPrint=t.luckysheetPrint;let e=t.plugins.find((e=>\"print\"===e.name));e&&e.config&&(luckysheetPrint.createDialog(),luckysheetPrint.init(e.config.license))}}else\"areas\"==e&&yl.createHookFunction(\"onPrintAreas\",t,Vu)}))}let r=$(this).outerWidth(),o=a.outerWidth(),i=$(this).offset().left;o>r&&o+i>$(\"#\"+t.container).width()&&(i=i-o+r),gd(a,i,$(this).offset().top+25,\"lefttop\")})),$(\"body\").on(\"mouseover mouseleave\",\".luckysheet-menuButton .luckysheet-cols-submenu\",(function(e){let t=$(this),a=t.attr(\"itemvalue\"),l=$(\"#luckysheet-icon-\"+a+\"-menuButton\");if(\"mouseover\"===e.type){let e=t.parent(),a=$(window).width(),r=$(window).height(),o=e.width(),i=l.height()+25,s=l.width()+5,c=t.offset(),u=c.top,d=c.left+o;d+s>a&&(d=c.left-s),u+i>r&&(u=r-i),l.css({top:u,left:d}).show(),n.rightclickmenu=t}else clearTimeout(n.submenuhide[l.attr(\"id\")]),n.submenuhide[l.attr(\"id\")]=setTimeout((function(){l.hide()}),200)})).on(\"mouseover mouseleave\",\".luckysheet-menuButton-sub\",(function(e){\"mouseover\"===e.type?(n.rightclickmenu.addClass(\"luckysheet-cols-menuitem-hover\"),clearTimeout(n.submenuhide[$(this).attr(\"id\")])):(n.rightclickmenu.removeClass(\"luckysheet-cols-menuitem-hover\"),$(this).hide())}))},getQKBorder:function(e,t,n){let a=\"\";e.indexOf(\"pt\")>-1?(e=parseFloat(e))<1||(a=e<1.5?\"Medium\":\"Thick\"):(e=parseFloat(e))<2||(a=e<3?\"Medium\":\"Thick\");let l=0;return\"double\"==(t=t.toLowerCase())?l=2:\"dotted\"==t?l=\"Medium\"==a||\"Thick\"==a?3:10:\"dashed\"==t?l=\"Medium\"==a||\"Thick\"==a?4:9:\"solid\"==t&&(l=\"Medium\"==a?8:\"Thick\"==a?13:1),[l,n]},updateFormatCell:function(e,n,a,l,r,o,i){if(null!=e&&null!=n)if(\"ct\"==n){for(let n=l;n<=r;n++)if(null==t.config.rowhidden||null==t.config.rowhidden[n])for(let t=o;t<=i;t++){let l=e[n][t],r=null;r=\"object\"==ad(l)?e[n][t].v:e[n][t],\"@\"!=a&&C(r)&&(r=parseFloat(r));let o=Ca(a,r),i=\"n\";Ta(a)||14===a||15===a||16===a||17===a||18===a||19===a||20===a||21===a||22===a||45===a||46===a||47===a?i=\"d\":\"@\"==a||49===a?i=\"s\":(\"General\"==a||0===a)&&(i=C(r)?\"n\":\"g\"),\"object\"==ad(l)?(e[n][t].m=o,null==e[n][t].ct&&(e[n][t].ct={}),e[n][t].ct.fa=a,e[n][t].ct.t=i):e[n][t]={ct:{fa:a,t:i},v:r,m:o}}}else{\"ht\"==n?\"left\"==a?a=\"1\":\"center\"==a?a=\"0\":\"right\"==a&&(a=\"2\"):\"vt\"==n?\"top\"==a?a=\"1\":\"middle\"==a?a=\"0\":\"bottom\"==a&&(a=\"2\"):\"tb\"==n?\"overflow\"==a?a=\"1\":\"clip\"==a?a=\"0\":\"wrap\"==a&&(a=\"2\"):\"tr\"==n&&(\"none\"==a?a=\"0\":\"angleup\"==a?a=\"1\":\"angledown\"==a?a=\"2\":\"vertical\"==a?a=\"3\":\"rotation-up\"==a?a=\"4\":\"rotation-down\"==a&&(a=\"5\"));for(let s=l;s<=r;s++)if(null==t.config.rowhidden||null==t.config.rowhidden[s])for(let t=o;t<=i;t++){let l=e[s][t];\"object\"==ad(l)?(Rn(l,n,a),e[s][t][n]=a):(e[s][t]={v:l},e[s][t][n]=a)}}},updateFormat:function(e,n,a){if(!Jl(t.currentSheetIndex))return;if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);document.createElement(\"canvas\").getContext(\"2d\");if(n in Mn&&parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&\"=\"!=$(\"#luckysheet-input-box\").text().substr(0,1)){e[t.luckysheetCellUpdate[0]][t.luckysheetCellUpdate[1]];$n(0,n,a,wi.rangeResizeTo)}let l=$.extend(!0,{},t.config);null==l.rowlen&&(l.rowlen={});for(let r=0;r<t.luckysheet_select_save.length;r++){let o=t.luckysheet_select_save[r].row[0],i=t.luckysheet_select_save[r].row[1],s=t.luckysheet_select_save[r].column[0],c=t.luckysheet_select_save[r].column[1];this.updateFormatCell(e,n,a,o,i,s,c),(\"tb\"==n||\"tr\"==n||\"fs\"==n)&&(l=aa(e,o,i,l))}let r={};(\"tb\"==n||\"tr\"==n||\"fs\"==n)&&(r={cfg:l,RowlChange:!0}),ao(e,t.luckysheet_select_save,r,!1)},updateFormat_mc:function(e,n){var a;if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);let l=$.extend(!0,{},t.config);if(null==l.merge&&(l.merge={}),!Gl(t.currentSheetIndex))return;if(\"mergeCancel\"==n)for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n],r=a.row[0],o=a.row[1],i=a.column[0],s=a.column[1];if(r==o&&i==s)continue;let c={};for(let t=r;t<=o;t++)for(let n=i;n<=s;n++){let a=e[t][n];if(null!=a&&null!=a.mc){let r=a.mc.r,o=a.mc.c;if(\"rs\"in a.mc)delete a.mc,delete l.merge[r+\"_\"+o],c[r+\"_\"+o]=$.extend(!0,{},a);else{let a=JSON.parse(JSON.stringify(c[r+\"_\"+o]));delete a.v,delete a.m,delete a.ct,delete a.f,delete a.spl,e[t][n]=a}}}}else{let a=!1;for(let n=0;n<t.luckysheet_select_save.length;n++){let l=t.luckysheet_select_save[n],r=l.row[0],o=l.row[1],i=l.column[0],s=l.column[1];for(let t=r;t<=o;t++)for(let n=i;n<=s;n++){let l=e[t][n];if(\"object\"==ad(l)&&\"mc\"in l){a=!0;break}}}if(a)for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n],r=a.row[0],o=a.row[1],i=a.column[0],s=a.column[1];if(r==o&&i==s)continue;let c={};for(let t=r;t<=o;t++)for(let n=i;n<=s;n++){let a=e[t][n];if(null!=a&&null!=a.mc){let r=a.mc.r,o=a.mc.c;if(\"rs\"in a.mc)delete a.mc,delete l.merge[r+\"_\"+o],c[r+\"_\"+o]=$.extend(!0,{},a);else{let a=JSON.parse(JSON.stringify(c[r+\"_\"+o]));delete a.v,delete a.m,delete a.ct,delete a.f,delete a.spl,e[t][n]=a}}}}else for(let a=0;a<t.luckysheet_select_save.length;a++){let r=t.luckysheet_select_save[a],o=r.row[0],i=r.row[1],s=r.column[0],c=r.column[1];if(o!=i||s!=c)if(\"mergeAll\"==n){let t={},n=!1;for(let a=o;a<=i;a++)for(let l=s;l<=c;l++){let r=e[a][l];null!=r&&(Sn(r.ct)||!_(r.v)||null!=r.f)&&!n&&(t=$.extend(!0,{},r),n=!0),e[a][l]={mc:{r:o,c:s}}}e[o][s]=t,e[o][s].mc={r:o,c:s,rs:i-o+1,cs:c-s+1},l.merge[o+\"_\"+s]={r:o,c:s,rs:i-o+1,cs:c-s+1}}else if(\"mergeV\"==n)for(let t=s;t<=c;t++){let n={},a=!1;for(let l=o;l<=i;l++){let r=e[l][t];null!=r&&(!_(r.v)||null!=r.f)&&!a&&(n=$.extend(!0,{},r),a=!0),e[l][t]={mc:{r:o,c:t}}}e[o][t]=n,e[o][t].mc={r:o,c:t,rs:i-o+1,cs:1},l.merge[o+\"_\"+t]={r:o,c:t,rs:i-o+1,cs:1}}else if(\"mergeH\"==n)for(let t=o;t<=i;t++){let n={},a=!1;for(let l=s;l<=c;l++){let r=e[t][l];null!=r&&(!_(r.v)||null!=r.f)&&!a&&(n=$.extend(!0,{},r),a=!0),e[t][l]={mc:{r:t,c:s}}}e[t][s]=n,e[t][s].mc={r:t,c:s,rs:1,cs:c-s+1},l.merge[t+\"_\"+s]={r:t,c:s,rs:1,cs:c-s+1}}}}let r=t.luckysheetfile[Mt(t.currentSheetIndex)],o=null==(a=r.calcChain)?void 0:a.filter((({r:t,c:n})=>{var a;return null==(a=e[t][n])?void 0:a.f})),i=r.hyperlink&&Object.fromEntries(Object.entries(r.hyperlink).filter((([t])=>{var n;let[a,l]=t.split(\"_\");return null==(n=e[a][l])?void 0:n.v})));t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"mergeChange\",sheetIndex:t.currentSheetIndex,data:t.flowdata,curData:e,range:$.extend(!0,[],t.luckysheet_select_save),config:$.extend(!0,{},t.config),curConfig:l,calc:r.calcChain,curCalc:o,hyperlink:r.hyperlink,curHyperlink:i})),t.clearjfundo=!1,ao(e,t.luckysheet_select_save,{cfg:l,calc:o,hyperlink:i}),t.clearjfundo=!0},borderfix:function(e,t,n){return null==e[t][n]||null==e[t][n].bg||\"\"==e[t][n].bg?[-1,0,0,-1]:[-2,-1,1,0]},changeMenuButtonDom:function(e,t,n){let a=this;null==n&&(n=X());let l=n.fontarray;n.fontjson;if(\"bl\"==e)\"0\"!=t?$(\"#luckysheet-icon-bold\").addClass(\"luckysheet-toolbar-button-hover\"):$(\"#luckysheet-icon-bold\").removeClass(\"luckysheet-toolbar-button-hover\");else if(\"it\"==e)\"0\"!=t?$(\"#luckysheet-icon-italic\").addClass(\"luckysheet-toolbar-button-hover\"):$(\"#luckysheet-icon-italic\").removeClass(\"luckysheet-toolbar-button-hover\");else if(\"cl\"==e)\"0\"!=t?$(\"#luckysheet-icon-strikethrough\").addClass(\"luckysheet-toolbar-button-hover\"):$(\"#luckysheet-icon-strikethrough\").removeClass(\"luckysheet-toolbar-button-hover\");else if(\"un\"==e)\"0\"!=t?$(\"#luckysheet-icon-underline\").addClass(\"luckysheet-toolbar-button-hover\"):$(\"#luckysheet-icon-underline\").removeClass(\"luckysheet-toolbar-button-hover\");else if(\"ff\"==e){let e=$(\"#\"+\"luckysheet-icon-font-family-menuButton\"),n=l[0],r=0;null!=t&&(ya(t).num?(r=parseInt(t),n=l[r],null==n&&(r=a.defualtFont[r],n=r,null!=r&&a.addFontTolist(r))):(r=t=t.replace(/\"/g,\"\").replace(/'/g,\"\"),n=t,a.addFontTolist(r))),a.focus(e,r),$(\"#luckysheet-icon-font-family\").find(\".luckysheet-toolbar-menu-button-caption\").html(\" \"+n+\" \")}else if(\"fs\"==e){let e=$(\"#luckysheet-icon-font-size-menuButton\"),n=t,l=$(\"#luckysheet-icon-font-size input\");a.focus(e,n),$(\"#luckysheet-icon-font-size\").attr(\"itemvalue\",n),l.val(n)}else if(\"ht\"==e){let e=$(\"#luckysheet-icon-align-menu-menuButton\"),n=($(\"luckysheet-icon-align\"),\"left\");\"0\"==t?n=\"center\":\"2\"==t&&(n=\"right\"),a.focus(e,n);let l=Ft.align;$(\"#luckysheet-icon-align\").attr(\"type\",n).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-\"+n+l[n]),e.hide()}else if(\"vt\"==e){let e=$(\"#luckysheet-icon-valign-menu-menuButton\"),n=($(\"luckysheet-icon-valign\"),\"bottom\");\"1\"==t?n=\"top\":\"0\"==t&&(n=\"middle\"),a.focus(e,n);let l=Ft.align;$(\"#luckysheet-icon-valign\").attr(\"type\",n).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-\"+n+l[n]),e.hide()}else if(\"tb\"==e){let e=$(\"#luckysheet-icon-textwrap-menu-menuButton\"),n=($(\"luckysheet-icon-textwrap\"),\"clip\");\"1\"==t?n=\"overflow\":\"2\"==t&&(n=\"wrap\"),a.focus(e,n);let l=Ft.textWrap;$(\"#luckysheet-icon-textwrap\").attr(\"type\",n).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-\"+n+l[n]),e.hide()}else if(\"tr\"==e){let e=$(\"#luckysheet-icon-rotation-menu-menuButton\"),n=($(\"luckysheet-icon-rotation\"),\"none\");\"1\"==t?n=\"angleup\":\"2\"==t?n=\"angledown\":\"3\"==t?n=\"vertical\":\"4\"==t?n=\"rotation-up\":\"5\"==t&&(n=\"rotation-down\"),a.focus(e,n);let l=Ft.rotation;$(\"#luckysheet-icon-rotation\").attr(\"type\",n).find(\".luckysheet-icon-img-container\").removeAttr(\"class\").addClass(\"luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-\"+n+l[n]),e.hide()}else if(\"ct\"==e){let e=$(\"#luckysheet-icon-fmt-other\"),n=X().defaultFmt;if(!t)return void e.find(\".luckysheet-toolbar-menu-button-caption\").html(\" \"+n[0].text+\" \");let{fa:a}=t,l=n.find((e=>e.value===a));if(l)e.find(\".luckysheet-toolbar-menu-button-caption\").html(\" \"+l.text+\" \");else{let t=n.find((e=>\"fmtOtherSelf\"===e.value));e.find(\".luckysheet-toolbar-menu-button-caption\").html(\" \"+t.text+\" \")}}},inputMenuButtonFocus:function(e){let n=window.getSelection().getRangeAt(0).startContainer;t.inlineStringEditRange=null;let a=X();if(\"SPAN\"==n.parentNode.tagName){let e=An(n.parentNode.style.cssText);for(let t in e)this.changeMenuButtonDom(t,e[t],a)}},menuButtonFocus:function(e,t,n){let a=this,l=[\"bl\",\"it\",\"cl\",\"ff\",\"ht\",\"vt\",\"fs\",\"tb\",\"tr\",\"ct\",\"un\"],r=X();for(let o=0;o<l.length;o++){let i=l[o],s=a.checkstatus(e,t,n,i);this.changeMenuButtonDom(i,s,r)}},checkstatus:function(e,t,n,a){if(null==e||null==e[t])return console.warn(\"It's incorrect data\",t,n),null;return Gn(e[t][n],a)},setLineDash:function(e,t,n,a,l,r,o){t={0:\"none\",1:\"Thin\",2:\"Hair\",3:\"Dotted\",4:\"Dashed\",5:\"DashDot\",6:\"DashDotDot\",7:\"Double\",8:\"Medium\",9:\"MediumDashed\",10:\"MediumDashDot\",11:\"MediumDashDotDot\",12:\"SlantedDashDot\",13:\"Thick\"}[t.toString()];try{\"Hair\"==t?e.setLineDash([1,2]):t.indexOf(\"DashDotDot\")>-1?e.setLineDash([2,2,5,2,2]):t.indexOf(\"DashDot\")>-1?e.setLineDash([2,5,2]):t.indexOf(\"Dotted\")>-1?e.setLineDash([2]):t.indexOf(\"Dashed\")>-1?e.setLineDash([3]):e.setLineDash([0])}catch(e){console.log(e)}e.beginPath(),t.indexOf(\"Medium\")>-1?(\"h\"==n?(e.moveTo(a,l-.5),e.lineTo(r,o-.5)):(e.moveTo(a-.5,l),e.lineTo(r-.5,o)),e.lineWidth=2):\"Thick\"==t?(e.moveTo(a,l),e.lineTo(r,o),e.lineWidth=3):(e.moveTo(a,l),e.lineTo(r,o),e.lineWidth=1)},moveMergeData:function(e,t,n){if(_(e))return e;let a=[],l=[],r=!1;for(let o=0;o<e.length;o++)for(let i=0;i<e[0].length;i++){let s=e[o][i];\"object\"==ad(s)&&\"mc\"in s&&(null!=s.mc.rs&&(a.push({rs:s.mc.rs,cs:s.mc.cs,r:s.mc.r,c:s.mc.c}),l.push({rs:s.mc.rs,cs:s.mc.cs,r:s.mc.r+t,c:s.mc.c+n}),r=!0),e[o][i].mc.r+=t,e[o][i].mc.c+=n)}return{deleMC:a,insertMC:l,hasMC:r}},getRangeInMerge:function(e,n,a,l,r){let o=[],i=null;if(i=null!=r?$.extend(!0,{},this.getSheetConfig()):$.extend(!0,{},t.config),null!=i&&null!=i.merge)for(let t in i.merge){let r=i.merge[t];!(e+n-1<r.r||e>r.r+r.rs-1)&&!(a+l-1<r.c||a>r.c+r.cs-1)&&o.push(r)}return o},mergeborer:function(e,n,a){if(null==e||null==e[n])return console.warn(\"Merge info is null\",n,a),null;let l=e[n][a];if(\"object\"==ad(l)&&\"mc\"in l){let r=l.mc;if(null==r)return console.warn(\"Merge info is null\",n,a),null;if(a=r.c,null==e[n=r.r][a])return console.warn(\"Main merge Cell info is null\",n,a),null;let o,i,s,c,u,d,h,f,m=e[n][a].mc.cs,p=e[n][a].mc.rs,g=e[n][a].mc;for(let e=n;e<g.rs+n;e++)o=0==e?-1:t.visibledatarow[e-1]-1,i=t.visibledatarow[e],null==c?(c=o,s=i):s+=i-o-1;for(let e=a;e<g.cs+a;e++)u=0==e?0:t.visibledatacolumn[e-1],d=t.visibledatacolumn[e],null==f?(f=u,h=d):h+=d-u;return{row:[c,s,n,n+p-1],column:[f,h,a,a+m-1]}}return null},mergeMoveData:{},mergeMoveMain:function(e,t,n,a,l,r,o){let i=this,s=ki.getSheetMerge();if(null==s)return;let c=[];for(let e in s)c.push(e);t[0]>t[1]&&(t[1]=t[0]),e[0]>e[1]&&(e[1]=e[0]);let u=!0;for(i.mergeMoveData={};u;){u=!1;for(let d=0;d<c.length;d++){let h=c[d],f=s[h];if(h in i.mergeMoveData)continue;let m=i.mergeMove(f,e,t,n,a,l,r,o);null!=m?(i.mergeMoveData[h]=f,e=m[0],t=m[1],a=m[2],l=m[3],r=m[4],o=m[5],u=!0):delete i.mergeMoveData[h]}}return[e,t,a,l,r,o]},mergeMove:function(e,n,a,l,r,o,i,s){let c=this,u=e.r,d=e.r+e.rs-1,h=e.c,f=e.c+e.cs-1,m=!1;if(n[1]<n[0]&&(n[0]=n[1]),a[1]<a[0]&&(a[0]=a[1]),n[0]<=h&&n[1]>=f&&a[0]<=u&&a[1]>=d||!(n[1]<h||n[0]>f)&&!(a[1]<u||a[0]>d)){let p=c.mergeborer(t.flowdata,e.r,e.c);if(p){let e=p.row[1],t=p.row[0],c=(p.row[2],p.column[1]),g=p.column[0];p.column[2];n[1]<h||n[0]>f||(a[0]<=d&&a[0]>=u&&(o+=r-t,r=t,a[0]=u),a[1]>=u&&a[1]<=d&&(l.row_focus>=u&&l.row_focus,o=e-r,a[1]=d)),a[1]<u||a[0]>d||(n[0]<=f&&n[0]>=h&&(s+=i-g,i=g,n[0]=h),n[1]>=h&&n[1]<=f&&(l.column_focus>=h&&l.column_focus,s=c-i,n[1]=f)),m=!0}}return m?[n,a,r,o,i,s]:null},getCellRealSize:function(e,n,a){let l=this,r=t.defaultcollen,o=t.defaultrowlen,i=e[n][a];if(i&&null!=i.mc){let t=i.mc,n=l.mergeborer(e,t.r,t.c);if(n){let e=n.row[1],t=n.row[0],a=(n.row[2],n.row[3],n.column[1]),l=n.column[0];n.column[2],n.column[3];r=a-l-1,o=e-t-1}}else{let e=zt()[Mt(t.currentSheetIndex)].config;null!=e.columnlen&&null!=e.columnlen[a]&&(r=e.columnlen[a]),null!=e.rowlen&&null!=e.rowlen[n]&&(o=e.rowlen[n])}return[r,o]},getTextHeightCache:{},getTextSize:function(e,t){let n=X().fontarray,a=t||\"10pt \"+n[0],l=this;if(a in l.getTextHeightCache)return l.getTextHeightCache[a];0==$(\"#luckysheetTextSizeTest\").length&&$('<span id=\"luckysheetTextSizeTest\" style=\"float:left;white-space:nowrap;visibility:hidden;margin:0;padding:0;\">'+e+\"</span>\").appendTo($(\"body\"));let r=$(\"#luckysheetTextSizeTest\").text(e).css({font:a}),o=r.innerWidth(),i=r.innerHeight();return l.getTextHeightCache[a]=[o,i],[o,i]},activeFormulaInput:function(e,n,a,l,r,o){if(null==o&&(o=!1),ws(e,n,t.flowdata,!0),o){let e='<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">'+r.toUpperCase()+'</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">(</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">)</span>';$(\"#luckysheet-rich-text-editor\").html(e);window.getSelection();let t=$(\"#luckysheet-rich-text-editor\").find(\"span\");return void wi.setCaretPosition(t.get(t.length-2),0,1)}let i=Zn(a[0])[0],s=Zn(a[1])[1],c=Qn(l[0])[0],u=Qn(l[1])[1],d='<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">'+r.toUpperCase()+'</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">(</span><span class=\"luckysheet-formula-functionrange-cell\" rangeindex=\"0\" dir=\"auto\" style=\"color:'+$t[0]+';\">'+Nt(t.currentSheetIndex,{row:a,column:l},t.currentSheetIndex)+'</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">)</span>';$(\"#luckysheet-rich-text-editor\").html(d),wi.israngeseleciton(),wi.rangestart=!0,wi.rangedrag_column_start=!1,wi.rangedrag_row_start=!1,wi.rangechangeindex=0,wi.rangeSetValue({row:a,column:l}),wi.func_selectedrange={left:c,width:u-c-1,top:i,height:s-i-1,left_move:c,width_move:u-c-1,top_move:i,height_move:s-i-1,row:[e,e],column:[n,n]},$(\"#luckysheet-formula-functionrange-select\").css({left:c,width:u-c-1,top:i,height:s-i-1}).show(),$(\"#luckysheet-formula-help-c\").hide()},backFormulaInput:function(e,n,a,l,r,o){let i=\"=\"+o.toUpperCase()+\"(\"+Nt(t.currentSheetIndex,{row:l,column:r},t.currentSheetIndex)+\")\",s=wi.execfunction(i,n,a);Na(n,a,e,{v:s[1],f:s[2]}),wi.execFunctionExist.push({r:n,c:a,i:t.currentSheetIndex}),t.luckysheet_select_save.push({row:[n,n],column:[a,a]}),yo.historyParam(e,t.currentSheetIndex,{row:[n,n],column:[a,a]})},checkNoNullValue:function(e){let t=e;return\"object\"==ad(t)&&(t=t.v),!(_(t)||!ya(t).num||null!=e.ct&&null!=e.ct.t&&\"n\"!=e.ct.t&&\"g\"!=e.ct.t)},checkNoNullValueAll:function(e){let t=e;return\"object\"==ad(t)&&(t=t.v),!_(t)},getNoNullValue:function(e,t,n,a){let l=this,r=null,o=0,i=0;for(let s=n-1;s>=0;s--){let n;if(n=\"c\"==a?e[t][s]:e[s][t],l.checkNoNullValue(n))r=s;else{if(null!=n&&null!=n.v&&\"\"!=n.v)break;if(o++,o>=40){if(!(i<=0))break;i=1}}}return r},singleFormulaInput:function(e,t,n,a,l,r,o,i,s){let c=this;null==o&&(o=\"r\"),null==i&&(i=!0),null==s&&(s=!0);let u=!0,d=!1;for(let t=a;t<=l;t++){let a=null;a=\"c\"==o?e[t][n]:e[n][t],c.checkNoNullValue(a)?(u=!1,d=!0):c.checkNoNullValueAll(a)&&(u=!1)}if(u&&s)if(null==c.getNoNullValue(e,t,n,o))\"c\"==o?c.activeFormulaInput(t,n,null,null,r,!0):c.activeFormulaInput(n,t,null,null,r,!0);else if(t==a)for(let t=a;t<=l;t++){let a=c.getNoNullValue(e,t,n,o);if(null==a)break;\"c\"==o?c.backFormulaInput(e,t,n,[t,t],[a,n-1],r):c.backFormulaInput(e,n,t,[a,n-1],[t,t],r)}else for(let t=l;t>=a;t--){let a=c.getNoNullValue(e,t,n,o);if(null==a)break;\"c\"==o?c.backFormulaInput(e,t,n,[t,t],[a,n-1],r):c.backFormulaInput(e,n,t,[a,n-1],[t,t],r)}else{if(!d||!i)return!0;{let t=null;if(t=\"c\"==o?e[l+1][n]:e[n][l+1],null!=t&&null!=t.v&&t.v.toString().length>0){let i=l+1;for(t=\"c\"==o?e[l+1][n]:e[n][l+1];null!=t&&null!=t.v&&t.v.toString().length>0;){i++;let a=null;if(a=\"c\"==o?e.length:e[0].length,i>=a)return;t=\"c\"==o?e[i][n]:e[n][i]}\"c\"==o?c.backFormulaInput(e,i,n,[a,l],[n,n],r):c.backFormulaInput(e,n,i,[n,n],[a,l],r)}else\"c\"==o?c.backFormulaInput(e,l+1,n,[a,l],[n,n],r):c.backFormulaInput(e,n,l+1,[n,n],[a,l],r)}}},autoSelectionFormula:function(e){let n=this,a=mn.deepCopyFlowData(t.flowdata),l=!0,r=t.luckysheet_select_save.length;wi.execFunctionExist=[];let o=function(e,t,a,l,r,o){let i=n.getNoNullValue(e,t,r,\"c\");null==i?n.activeFormulaInput(t,l,null,null,o,!0):n.activeFormulaInput(t,l,[t,a],[i,r-1],o)},i=function(e,t,a,l,r,i){let s=n.getNoNullValue(e,l,a,\"r\");null==s?o(e,t,a,l,r,i):n.activeFormulaInput(t,l,[s,a-1],[l,r],i)};for(let s=0;s<r;s++){let r=t.luckysheet_select_save[s].row[0],c=t.luckysheet_select_save[s].row[1],u=t.luckysheet_select_save[s].column[0],d=t.luckysheet_select_save[s].column[1],h=t.luckysheet_select_save[s].row_focus,f=t.luckysheet_select_save[s].column_focus;if(r==c&&u==d){if(c-1<0&&d-1<0)return void n.activeFormulaInput(r,u,null,null,e,!0);c-1>=0&&n.checkNoNullValue(a[c-1][u])?i(a,r,c,u,d,e):d-1>=0&&n.checkNoNullValue(a[r][d-1])?o(a,r,c,u,d,e):i(a,r,c,u,d,e)}else if(r==c)l=n.singleFormulaInput(a,f,r,u,d,e,\"r\");else if(u==d)l=n.singleFormulaInput(a,h,u,r,c,e,\"c\");else{let t=!0;for(let l=r;l<=c;l++)t=n.singleFormulaInput(a,f,l,u,d,e,\"r\",!0,!1)&&t;let o=!0;for(let t=u;t<=d;t++)o=n.singleFormulaInput(a,h,t,r,c,e,\"c\",!0,!1)&&o;l=!!t&&!!o}l=l&&l}l||(wi.execFunctionExist.reverse(),wi.execFunctionGroup(null,null,null,null,a),ao(a,t.luckysheet_select_save),clearTimeout(t.jfcountfuncTimeout),t.jfcountfuncTimeout=setTimeout((function(){za()}),500))},getStyleByCell:function(e,t,n){let a=this,l=\"\",r=Xa.getComputeMap(),o=Xa.checksAF(t,n,r),i=ko.getComputeMap(),s=ko.checksCF(t,n,i),c=(X().fontarray,e[t][n]),u=(c.ct,!1);Tn(c)&&(u=!0);for(let r in c){let i=a.checkstatus(e,t,n,r);(null!=o||null!=s&&null!=s.cellColor)&&(null!=s&&null!=s.cellColor?l+=\"background: \"+s.cellColor+\";\":null!=o&&(l+=\"background: \"+o[1]+\";\")),\"object\"!=ad(i)&&((\"bg\"==r||null!=o||null!=s&&null!=s.cellColor)&&(null!=s&&null!=s.cellColor?l+=\"background: \"+s.cellColor+\";\":l+=null!=o?\"background: \"+o[1]+\";\":\"background: \"+i+\";\"),\"ht\"==r&&\"1\"!=i&&(\"0\"==i?l+=\"text-align: center;\":\"2\"==i&&(l+=\"text-align: right;\")),\"vt\"==r&&(\"0\"==i?l+=\"vertical-align: middle;\":\"1\"==i?l+=\"vertical-align: top;\":\"2\"==i&&(l+=\"vertical-align: bottom;\")),\"un\"==r&&i&&(l+=\"text-decoration:underline;\"))}return u||(l+=jn(c,o,s)),l},fontSelectList:[],defualtFont:[\"Times New Roman\",\"Arial\",\"Tahoma\",\"Verdana\",\"微软雅黑\",\"宋体\",\"黑体\",\"楷体\",\"仿宋\",\"新宋体\",\"华文新魏\",\"华文行楷\",\"华文隶书\"],addFontTolist:function(e){e=e.replace(/\"/g,\"\").replace(/'/g,\"\");let t=!0;for(let n=0;n<this.fontSelectList.length;n++)if(this.fontSelectList[n].value==e){t=!1;break}if(e in X().fontjson&&(t=!1),t){let t={};t.value=e,t.index=this.fontSelectList.length,t.type=\"userDefined\",t.text=\"<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:\"+e+\"'>\"+e+\"</span>\",t.example=\"\",this.fontSelectList.push(t);let n=$(\"#luckysheet-icon-font-family-menuButton\"),a=this.createButtonMenu(this.fontSelectList);n.html(a)}},fontInitial:function(e){let t=[],n=X().fontarray;for(let e=0;e<n.length;e++){let a=n[e],l={};l.value=a,l.index=e,l.type=\"inner\",l.text=\"<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:\"+a+\"'>\"+a+\"</span>\",l.example=\"\",t.push(l)}if(null!=e){for(let n=0;n<e.length;n++){let a=e[n],l={};if(l.value=a.fontName,l.index=n,l.type=\"userDefined\",l.text=\"<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:\"+a.fontName+\"'>\"+a.fontName+\"</span>\",l.example=\"\",t.push(l),document.fonts&&!document.fonts.check(\"12px \"+a.fontName)&&a.url){let e=new FontFace(a.fontName,`url(${a.url})`);document.fonts.add(e),e.load()}}document.fonts&&document.fonts.ready.then((function(){}))}this.fontSelectList=t}}}));function td(e,t){let n={};for(let t in e)n[t]=e[t];for(let e in t)null!=t[e]&&(n[e]=t[e]);return n}function nd(e,t){return e.replace(/\\$\\{([\\w]+)\\}/g,(function(e,n){let a=t[n];return void 0!==a?a:e}))}function ad(e){return{\"[object Boolean]\":\"boolean\",\"[object Number]\":\"number\",\"[object String]\":\"string\",\"[object Function]\":\"function\",\"[object Array]\":\"array\",\"[object Date]\":\"date\",\"[object RegExp]\":\"regExp\",\"[object Undefined]\":\"undefined\",\"[object Null]\":\"null\",\"[object Object]\":\"object\"}[Object.prototype.toString.call(e)]}function ld(e){let t=new Date,n=t.getFullYear(),a=t.getMonth(),l=t.getDate(),r=(t.getDay(),t.getHours()),o=t.getMinutes(),i=t.getSeconds();a+=1,a<10&&(a=\"0\"+a),l<10&&(l=\"0\"+l),r<10&&(r=\"0\"+r),o<10&&(o=\"0\"+o),i<10&&(i=\"0\"+i);let s=\"\";return 1==e?s=n+\"-\"+a+\"-\"+l:2==e&&(s=n+\"-\"+a+\"-\"+l+\" \"+r+\":\"+o+\":\"+i),s}function rd(e){let t;return t=e.indexOf(\"rgba\")>-1?e.replace(\"rgba(\",\"\").replace(\")\",\"\").split(\",\"):e.replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),\"#\"+((1<<24)+(parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).slice(1)}function od(e){if(null==e||0==e.length)return NaN;for(var t=e.toLowerCase().split(\"\"),n=t.length,a=0,l=0;l<n;l++)a+=(t[l].charCodeAt()-96)*Math.pow(26,n-l-1);return 0==a?NaN:a-1}function id(e){for(var t=\"a\".charCodeAt(0),n=\"z\".charCodeAt(0)-t+1,a=\"\";e>=0;)a=String.fromCharCode(e%n+t)+a,e=Math.floor(e/n)-1;return a.toUpperCase()}function sd(e,t){if(0===t)return\"\";if(null==e)return 0;let n=0;for(let a=0;a<e.length;a++)if(null!=e.charAt(a).match(/[^\\x00-\\xff]/gi)?n+=2:n+=1,C(t)&&n===~~t)return e.substring(0,a);return n}function cd(e){let t=[],n={};if(e.length>0)for(let a=0;a<e.length;a++){let l=e[a];n[l]||(t.push(l),n[l]=1)}return t}function ud(e){let n=X().fontarray;if(\"object\"==ad(e)){let a=\"\";if(\"0\"==e.it||null==e.it?a+=\"normal \":a+=\"italic \",a+=\"normal \",\"0\"==e.bl||null==e.bl?a+=\"normal \":a+=\"bold \",e.fs?a+=Math.ceil(e.fs)+\"pt \":a+=t.defaultFontSize+\"pt \",e.ff){let t=null;X().fontjson;ya(e.ff).num?t=n[parseInt(e.ff)]:(t=e.ff,t=t.replace(/\"/g,\"\").replace(/'/g,\"\"),t.indexOf(\" \")>-1&&(t='\"'+t+'\"'),null!=t&&document.fonts&&!document.fonts.check(\"12px \"+t)&&Yu.addFontTolist(t)),null==t&&(t=n[0]),a+=t+', \"Helvetica Neue\", Helvetica, Arial, \"PingFang SC\", \"Hiragino Sans GB\", \"Heiti SC\", \"Microsoft YaHei\", \"WenQuanYi Micro Hei\", sans-serif'}else a+=n[0]+', \"Helvetica Neue\", Helvetica, Arial, \"PingFang SC\", \"Hiragino Sans GB\", \"Heiti SC\", \"Microsoft YaHei\", \"WenQuanYi Micro Hei\", sans-serif';return a}return At()}function dd(e,t,n){let a=$(window).height(),l=$(window).width(),r=e.width(),o=e.height(),i=n,s=t;t+r>l&&(s=t-r),n+o>a&&(i=n-o),i<0&&(i=0),e.css({top:i,left:s}).show()}function hd(){t.fullscreenmode&&setTimeout((function(){document.getElementById(\"luckysheet-rich-text-editor\").focus({preventScroll:!0}),$(\"#luckysheet-rich-text-editor\").select()}),50)}function fd(){document.getElementById(t.container).focus({preventScroll:!0})}function md(e,t){if(null==e||isNaN(parseFloat(e))||S(e)||e==-1/0||e==1/0)return null;let n=6,a=!1;null==t||\"auto\"==t?n=e<1?6:1:\"num\"==va(t)?(n=parseInt(t),a=!0):n=6;let l=\"\",r=null;for(let e=0;e<n;e++)l+=\"0\";return a||(l=\"[\"+l+\"]\"),r=e>=1e21?parseFloat((0,wd.default)(e).value()):parseFloat((0,wd.default)(e).format(\"0.\"+l)),r}function pd(e){if(null==e||isNaN(parseFloat(e))||S(e))return null;{let t=(0,wd.default)(e).value().toString().split(\".\");return t=1==t.length?0:t[1].length,t}}function gd(e,t,n,a){let l=$(window).height(),r=($(window).width(),e.width());e.height();null==a&&(a=\"lefttop\"),\"lefttop\"==a?e.css({top:n,left:t}).show():\"righttop\"==a?e.css({top:n,left:t-r}).show():\"leftbottom\"==a?e.css({bottom:l-n-12,left:t}).show():\"rightbottom\"==a&&e.css({bottom:l-n-12,left:t-r}).show()}function yd(e,t){var n=(t=t||document).querySelectorAll(e);return 1==n.length?Array.prototype.slice.call(n)[0]:Array.prototype.slice.call(n)}function vd(e,t=!0){let n=$(\"#\"+e).find(\".luckysheet-modal-dialog-content\").css(\"min-width\",300).end(),a=n.outerHeight(),l=n.outerWidth(),r=$(window).width(),o=$(window).height(),i=$(document).scrollLeft(),s=$(document).scrollTop();n.css({left:(r+i-l)/2,top:(o+s-a)/3}).show(),t&&$(\"#luckysheet-modal-dialog-mask\").show()}function bd(e,t){e.some(((e,n,a)=>{if(e===t)return a.splice(n,1),e===t}))}function kd(e){return e.replace(/([A-Z])/g,(function(e,t){return\"-\"+t.toLowerCase()}))}var wd,xd,_d=y((()=>{Et(),ed(),ka(),E(),x(),K(),wd=k(wa()),xd=(e,t,n)=>{e.hasOwnProperty(t)?\"object\"===ad(e)&&(\"object\"===ad(e[t])||\"array\"===ad(e[t])?function(e,t,n,a){e[t]=new Proxy(n,{set:(e,t,n,l)=>(setTimeout((()=>{a(e,t,n,l)}),0),Reflect.set(e,t,n,l))})}(e,t,e[t],n):function(e,t,n,a){Object.defineProperty(e,t,{enumerable:!0,configurable:!1,get:()=>n,set(e){n!==e&&(console.log(`发现 ${t} 属性 ${n} -> ${e}`),setTimeout((()=>{a(n,e)}),0),n=e)}})}(e,t,e[t],n)):console.info(\"No %s in data\",t)}}));var Cd,Td=y((()=>{na(),Xu(),ed(),Al(),x()})),Sd=y((()=>{_d(),Et(),Xu(),Co(),gn(),Pa(),Yn(),fo(),x(),K(),Cd={createDialog:function(){let e=X(),t=e.splitText,n=e.punctuation,a=e.button;$(\"#luckysheet-modal-dialog-mask\").show(),$(\"#luckysheet-splitColumn-dialog\").remove();let l='<div class=\"box\"><div class=\"boxTitle\">'+t.splitDelimiters+'</div><div class=\"boxMain\"><div style=\"height: 22px;line-height: 22px;\"><input id=\"splitColumn_type_01\" type=\"checkbox\"/><label for=\"splitColumn_type_01\">'+n.tab+'</label></div><div style=\"height: 22px;line-height: 22px;\"><input id=\"splitColumn_type_02\" type=\"checkbox\"/><label for=\"splitColumn_type_02\">'+n.semicolon+'</label></div><div style=\"height: 22px;line-height: 22px;\"><input id=\"splitColumn_type_03\" type=\"checkbox\"/><label for=\"splitColumn_type_03\">'+n.comma+'</label></div><div style=\"height: 22px;line-height: 22px;\"><input id=\"splitColumn_type_04\" type=\"checkbox\"/><label for=\"splitColumn_type_04\">'+n.space+'</label></div><div style=\"height: 22px;line-height: 22px;\"><input id=\"splitColumn_type_05\" type=\"checkbox\"/><label for=\"splitColumn_type_05\">'+t.splitOther+'</label><input type=\"text\" class=\"formulaInputFocus\" maxlength=\"1\"/></div></div><div style=\"height: 22px;line-height: 22px;\"><input id=\"splitColumn_type_06\" type=\"checkbox\"/><label for=\"splitColumn_type_06\">'+t.splitContinueSymbol+'</label></div><div class=\"boxTitle\" style=\"margin-top: 10px;\">'+t.splitDataPreview+'</div><div class=\"boxMain\" id=\"splitColumnData\"></div></div>';$(\"body\").append(nd(kt,{id:\"luckysheet-splitColumn-dialog\",addclass:\"luckysheet-splitColumn-dialog\",title:t.splitTextTitle,content:l,botton:'<button id=\"luckysheet-splitColumn-dialog-confirm\" class=\"btn btn-primary\">'+a.confirm+'</button><button class=\"btn btn-default luckysheet-model-close-btn\">'+a.cancel+\"</button>\",style:\"z-index:100003\"}));let r=$(\"#luckysheet-splitColumn-dialog\").find(\".luckysheet-modal-dialog-content\").css(\"min-width\",400).end(),o=r.outerHeight(),i=r.outerWidth(),s=$(window).width(),c=$(window).height(),u=$(document).scrollLeft(),d=$(document).scrollTop();$(\"#luckysheet-splitColumn-dialog\").css({left:(s+u-i)/2,top:(c+d-o)/3}).show();let h=this.getDataArr();this.dataPreview(h)},init:function(){let e=this,n=X().splitText;$(document).off(\"change.SPCinpcheckbox\").on(\"change.SPCcheckbox\",\"#luckysheet-splitColumn-dialog .box input[type='checkbox']\",(function(){let t=e.getRegStr(),n=e.getDataArr(t);e.dataPreview(n)})),$(document).off(\"keyup.SPCinptext\").on(\"keyup.SPCinptext\",\"#luckysheet-splitColumn-dialog .box input[type='text']\",(function(){if($(this).siblings(\"input[type='checkbox']\").is(\":checked\")){let t=e.getRegStr(),n=e.getDataArr(t);e.dataPreview(n)}})),$(document).off(\"click.SPCconfirm\").on(\"click.SPCconfirm\",\"#luckysheet-splitColumn-dialog #luckysheet-splitColumn-dialog-confirm\",(function(){$(\"#luckysheet-modal-dialog-mask\").hide(),$(\"#luckysheet-splitColumn-dialog\").hide();let a=e.getRegStr(),l=e.getDataArr(a),r=t.luckysheet_select_save[0].row[0],o=t.luckysheet_select_save[0].column[0];if(1==l[0].length)return;let i=!1;for(let e=0;e<l.length;e++)for(let n=1;n<l[0].length;n++){let a=t.flowdata[r+e][o+n];if(null!=a&&null!=a.v){i=!0;break}}if(i){let t=function(){e.update(r,o,l)};vo.confirm(\"\",n.splitConfirmToExe,t)}else e.update(r,o,l)}))},update:function(e,n,a){let l=mn.deepCopyFlowData(t.flowdata);for(let t=0;t<a.length;t++)for(let r=0;r<a[0].length;r++){Na(e+t,n+r,l,a[t][r])}let r=t.luckysheet_select_save[0].row[0],o=t.luckysheet_select_save[0].column[0];ao(l,[{row:[r,r+a.length-1],column:[o,o+a[0].length-1]}]),Pu()},dataPreview:function(e){$(\"#luckysheet-splitColumn-dialog #splitColumnData\").empty();let t=\"\";for(let n=0;n<e.length;n++){let a=\"\";for(let t=0;t<e[0].length;t++)a+=\"<td>\"+e[n][t]+\"</td>\";t+=\"<tr>\"+a+\"</tr>\"}let n=\"<table>\"+t+\"</table>\";$(\"#luckysheet-splitColumn-dialog #splitColumnData\").append(n)},getRegStr:function(){let e=\"\",t=0;return $(\"#luckysheet-splitColumn-dialog .box input[type='checkbox']:checked\").each((function(n,a){let l=$(a).attr(\"id\");if(\"splitColumn_type_01\"==l)e+=\"\\\\t\",t++;else if(\"splitColumn_type_02\"==l)t>0&&(e+=\"|\"),e+=\";\",t++;else if(\"splitColumn_type_03\"==l)t>0&&(e+=\"|\"),e+=\",\",t++;else if(\"splitColumn_type_04\"==l)t>0&&(e+=\"|\"),e+=\"\\\\s\",t++;else if(\"splitColumn_type_05\"==l){let n=$(a).siblings(\"input[type='text']\").val().trim();\"\"!=n&&(t>0&&(e+=\"|\"),e+=n)}else\"splitColumn_type_06\"==l&&(e=\"[\"+e+\"]+\")})),e},getDataArr:function(e){let n=this,a=[],l=t.luckysheet_select_save[0].row[0],r=t.luckysheet_select_save[0].row[1],o=t.luckysheet_select_save[0].column[0];if(null!=e&&\"\"!=e){let i=new RegExp(e,\"g\"),s=[];for(let e=l;e<=r;e++){let n,a=[],l=t.flowdata[e][o];n=null!=l&&null!=l.m?l.m:Vn(e,o,t.flowdata),null==n&&(n=\"\"),a=n.toString().split(i),s.push(a)}let c=s.length,u=0;for(let e=0;e<c;e++)s[e].length>u&&(u=s[e].length);a=n.getNullData(c,u);for(let e=0;e<a.length;e++)for(let t=0;t<a[0].length;t++)null!=s[e][t]&&(a[e][t]=s[e][t])}else for(let e=l;e<=r;e++){let n,l=[],r=t.flowdata[e][o];n=null!=r&&null!=r.m?r.m:Vn(e,o,t.flowdata),null==n&&(n=\"\"),l.push(n),a.push(l)}return a},getNullData:function(e,t){let n=[];for(let a=0;a<e;a++){let e=[];for(let n=0;n<t;n++)e.push(\"\");n.push(e)}return n}}}));function $d(e,n){if(null!=t.luckysheet_select_save&&t.luckysheet_select_save.length>0){let a=ki.getSheetByIndex().data;if(null!=a)for(let n=0;n<t.luckysheet_select_save.length;n++){let l=t.luckysheet_select_save[n],r=l.row,o=l.column;for(let t=r[0];t<=r[1];t++)for(let n=o[0];n<=o[1];n++){let l,r=Yu.mergeborer(a,t,n);if(r){let e=r.row[2],t=r.column[2];l=a[e][t]}else l=a[t][n];e(l,t,n,a)}}else n();return a}}function Id(){if(Rd)return;Rd=!0;let e=X(),t=e.cellFormat,n=e.button;$(\"body\").append(nd(kt,{id:\"luckysheet-cellFormat-config\",addclass:\"luckysheet-cellFormat-config\",title:t.cellFormatTitle,content:`\\n            <div class=\"luckysheet-cellFormat-menu-c\">\\n                <div class=\"luckysheet-cellFormat-menu luckysheet-cellFormat-menu-active\" id=\"luckysheet-cellFormat-protection\">\\n                    ${t.protection}\\n                </div>\\n            </div>\\n            <div id=\"luckysheet-cellFormat-protection-content\" class=\"luckysheet-cellFormat-content\">\\n                <div class=\"luckysheet-cellFormat-protection\">\\n                    <p>\\n                        ${t.protectionTips}\\n                    </p>\\n                    <label for=\"luckysheet-protection-check-locked\"><input id=\"luckysheet-protection-check-locked\" name=\"luckysheet-protection-check-locked\" type=\"checkbox\">${t.locked}</label><span>部分选中</span>\\n                    <br/>\\n                    <label for=\"luckysheet-protection-check-hidden\"><input id=\"luckysheet-protection-check-hidden\" name=\"luckysheet-protection-check-hidden\" type=\"checkbox\">${t.hidden}</label><span>全部选中</span>\\n                </div>\\n            </div>\\n        `,botton:`<button id=\"luckysheet-cellFormat-confirm\" class=\"btn btn-primary\">${n.confirm}</button>\\n                    <button class=\"btn btn-default luckysheet-model-close-btn\">${n.cancel}</button>`,style:\"z-index:100003\"})),function(){let e=X().cellFormat;$(\"#luckysheet-cellFormat-confirm\").click((function(){let t=$(\"#luckysheet-protection-check-locked\").is(\":checked\"),n=$(\"#luckysheet-protection-check-hidden\").is(\":checked\");t=1==t?1:0,n=1==n?1:0,ao($d((function(e,a,l,r){null==e?Na(a,l,r,{lo:t,hi:n}):(e.lo=t,e.hi=n)}),(function(){alert(e.sheetDataIsNullAlert)})),void 0,void 0,!1),$(\"#luckysheet-cellFormat-config\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide()}))}()}var Rd,Ad=y((()=>{x(),_d(),Et(),_i(),ed(),dr(),fo(),K(),Pa(),Rd=!1}));function Dd(e){let t=$(\"#luckysheet-cell-main\"),n=$(\"#luckysheet-scrollbar-x\").scrollLeft(),a=$(\"#luckysheet-scrollbar-y\").scrollTop(),l=$(\"#luckysheetTableContent\").height();return null!=$l.freezenhorizontaldata&&a<$l.freezenhorizontaldata[2]?(a=$l.freezenhorizontaldata[2],void $(\"#luckysheet-scrollbar-y\").scrollTop(a)):null!=$l.freezenverticaldata&&n<$l.freezenverticaldata[2]?(n=$l.freezenverticaldata[2],void $(\"#luckysheet-scrollbar-x\").scrollLeft(n)):($(\"#luckysheet-cols-h-c\").scrollLeft(n),$(\"#luckysheet-rows-h\").scrollTop(a),t.scrollLeft(n).scrollTop(a),$(\"#luckysheet-input-box-index\").css({left:$(\"#luckysheet-input-box\").css(\"left\"),top:parseInt($(\"#luckysheet-input-box\").css(\"top\"))-20+\"px\",\"z-index\":$(\"#luckysheet-input-box\").css(\"z-index\")}).show(),uo(n,a),$(\"#luckysheet-bottom-controll-row\").css(\"left\",n),(null!=$l.freezenhorizontaldata||null!=$l.freezenverticaldata)&&$l.scrollAdapt(),void yl.createHookFunction(\"scroll\",{scrollLeft:n,scrollTop:a,canvasHeight:l}))}var Fd=y((()=>{Al(),Kn(),fo(),x(),kl()}));function Ed(e,n,a){bd(t.asyncLoad,\"exportXlsx\")}var Md=y((()=>{K(),Et(),_d(),Co(),qt(),x()}));function Nd(){Gt.detectOS();Gt.mobilecheck()&&function(){t.cellMainSrollBarSize=0;let e=!1,n={},a=!1,l=null;$(document).on(\"touchstart\",\"#luckysheet-grid-window-1\",(function(t){clearInterval(l),e=!0;let a=t.originalEvent.targetTouches[0];n={x:a.pageX,y:a.pageY,vy:0,moveType:\"y\"}})),$(document).on(\"touchmove\",\"#luckysheet-grid-window-1\",(function(l){if(l.originalEvent.targetTouches.length>1||l.scale&&1!==l.scale)return;let r=l.originalEvent.targetTouches[0];if(e){let e=r.pageX-n.x,t=r.pageY-n.y;n.x=r.pageX,n.y=r.pageY;let a=$(\"#luckysheet-scrollbar-x\").scrollLeft(),l=$(\"#luckysheet-scrollbar-y\").scrollTop();a-=e,l-=t,a<0&&(a=0),l<0&&(l=0),$(\"#luckysheet-scrollbar-y\").scrollTop(l),n.vy_y=t,n.scrollTop=l,$(\"#luckysheet-scrollbar-x\").scrollLeft(a),n.vy_x=e,n.scrollLeft=a}else if(a){let e=ta(r.pageX,r.pageY),n=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),a=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),l=a[1],o=a[0],i=a[2],s=ea(n),c=s[1],u=s[0],d=s[2],h=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),f=0,m=0,p=[];h.top>o?(f=o,m=h.top+h.height-o,h.row[1]>h.row_focus&&(h.row[1]=h.row_focus),p=[i,h.row[1]]):h.top==o?(f=o,m=h.top+h.height-o,p=[i,h.row[0]]):(f=h.top,m=l-h.top-1,h.row[0]<h.row_focus&&(h.row[0]=h.row_focus),p=[h.row[0],i]);let g=0,y=0,v=[];h.left>u?(g=u,y=h.left+h.width-u,h.column[1]>h.column_focus&&(h.column[1]=h.column_focus),v=[d,h.column[1]]):h.left==u?(g=u,y=h.left+h.width-u,v=[d,h.column[0]]):(g=h.left,y=c-h.left-1,h.column[0]<h.column_focus&&(h.column[0]=h.column_focus),v=[h.column[0],d]);let b=Yu.mergeMoveMain(v,p,h,f,m,g,y);null!=b&&(v=b[0],p=b[1],f=b[2],m=b[3],g=b[4],y=b[5]),h.row=p,h.column=v,h.left_move=g,h.width_move=y,h.top_move=f,h.height_move=m,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=h,Pu(),$l.scrollFreezen()}l.stopPropagation()})),$(document).on(\"touchend\",(function(t){if(e){let e=Math.abs(n.vy_x),t=.25*(2*(e>>31)+1),a=Math.abs(n.vy_y),r=.25*(2*(a>>31)+1);(e>0||a>0)&&(l=setInterval((function(){e-=t,a-=r,e<=0&&(e=0),a<=0&&(a=0),n.vy_y>0?n.scrollTop-=a:n.scrollTop+=a,$(\"#luckysheet-scrollbar-y\").scrollTop(n.scrollTop),n.vy_x>0?n.scrollLeft-=e:n.scrollLeft+=e,$(\"#luckysheet-scrollbar-x\").scrollLeft(n.scrollLeft),e<=0&&a<=0&&clearInterval(l)}),20))}e=!1,a=!1})),$(document).on(\"touchstart\",\".luckysheet-cs-touchhandle\",(function(t){a=!0,e=!1,t.stopPropagation()})),document.addEventListener(\"touchmove\",(function(e){e.preventDefault()}),{passive:!1})}(),Date.now||(Date.now=function(){return(new Date).getTime()}),function(){\"use strict\";for(var e=[\"webkit\",\"moz\"],t=0;t<e.length&&!window.requestAnimationFrame;++t){var n=e[t];window.requestAnimationFrame=window[n+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[n+\"CancelAnimationFrame\"]||window[n+\"CancelRequestAnimationFrame\"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var a=0;window.requestAnimationFrame=function(e){var t=Date.now(),n=Math.max(a+16,t);return setTimeout((function(){e(a=n)}),n-t)},window.cancelAnimationFrame=clearTimeout}}(),$(\"#luckysheet-sheet-container-c\").mousewheel((function(e,t){let n=e.deltaFactor<40?1:e.deltaFactor<80?2:3,a=$(this).scrollLeft();0!=e.deltaY?e.deltaY<0?a+=10*n:a-=10*n:0!=e.deltaX&&(e.deltaX>0?a+=10*n:a-=10*n),$(this).scrollLeft(a),e.preventDefault()})),$(\"#luckysheet-cell-main\").scroll((function(){})).mousewheel((function(e,t){e.preventDefault()}));let n,a=X(),l=a.drag,r=a.info;$(\"#luckysheet-grid-window-1\").mousewheel((function(e,a){let l=$(\"#luckysheet-scrollbar-x\").scrollLeft(),r=$(\"#luckysheet-scrollbar-y\").scrollTop(),o=t.visibledatacolumn,i=t.visibledatarow;null!=$l.freezenhorizontaldata&&(i=$l.freezenhorizontaldata[3]),null!=$l.freezenverticaldata&&(o=$l.freezenverticaldata[3]),clearTimeout(n),null!=t.visibledatacolumn_unique?o=t.visibledatacolumn_unique:(o=cd(o),t.visibledatacolumn_unique=o),null!=t.visibledatarow_unique?i=t.visibledatarow_unique:(i=cd(i),t.visibledatarow_unique=i);Xn(o,l);let s=Xn(i,r);null!=$l.freezenhorizontaldata&&(s=Xn(i,r+$l.freezenhorizontaldata[0]));let c=0,u=e.deltaFactor<40?1:e.deltaFactor<80?2:3;if(0!=e.deltaY){let n,a=Math.round(u/t.zoomRatio);a=a<1?1:a,e.deltaY<0?(n=s+a,n>=i.length&&(n=i.length-1)):(n=s-a,n<0&&(n=0)),c=0==n?0:i[n-1],null!=$l.freezenhorizontaldata&&(c-=$l.freezenhorizontaldata[0]),$(\"#luckysheet-scrollbar-y\").scrollTop(c)}else if(0!=e.deltaX){e.deltaX>0?l+=20*t.zoomRatio:l-=20*t.zoomRatio,$(\"#luckysheet-scrollbar-x\").scrollLeft(l)}n=setTimeout((()=>{t.visibledatacolumn_unique=null,t.visibledatarow_unique=null}),500)})),$(\"#luckysheet-scrollbar-x\").scroll((function(){Dd()})).mousewheel((function(e,t){e.preventDefault()})),$(\"#luckysheet-scrollbar-y\").scroll((function(){Dd()})).mousewheel((function(e,t){e.preventDefault()})),$(window).resize((function(){document.getElementById(t.container)&&Dl()})),$(\"#luckysheet-rich-text-editor\").mouseup((function(e){Yu.inputMenuButtonFocus(e.target)})),$(\"#luckysheet-cell-main, #luckysheetTableContent\").mousedown((function(n){if($(n.target).hasClass(\"luckysheet-mousedown-cancel\"))return;(function(){let e=yd(\".luckysheet-multipleRange-show\");void 0===e.length&&(e=[e]),e.forEach((e=>{let n=e.id.replace(\"luckysheet-multipleRange-show-\",\"\");null===t.cooperativeEdit.usernameTimeout[\"user\"+n]&&(yd(\".username\",e).style.display=\"none\")}))})(),$(\"#luckysheet-cell-selected\").find(\".luckysheet-cs-fillhandle\").css(\"cursor\",\"default\").end().find(\".luckysheet-cs-draghandle\").css(\"cursor\",\"default\"),$(\"#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0\").css(\"cursor\",\"default\"),vl.removeActivePs(),($(\"#luckysheet-modal-dialog-activeImage\").is(\":visible\")||$(\"#luckysheet-modal-dialog-cropping\").is(\":visible\"))&&rl.cancelActiveImgItem();let a=ta(n.pageX,n.pageY);if(a[0]>=t.cellmainWidth-t.cellMainSrollBarSize||a[1]>=t.cellmainHeight-t.cellMainSrollBarSize)return;let l=a[0]+$(\"#luckysheet-cell-main\").scrollLeft(),r=a[1]+$(\"#luckysheet-cell-main\").scrollTop();null!=$l.freezenverticaldata&&a[0]<$l.freezenverticaldata[0]-$l.freezenverticaldata[2]&&(l=a[0]+$l.freezenverticaldata[2]),null!=$l.freezenhorizontaldata&&a[1]<$l.freezenhorizontaldata[0]-$l.freezenhorizontaldata[2]&&(r=a[1]+$l.freezenhorizontaldata[2]);let o=ki.getSheetByIndex(),i=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\"),s=Jn(r),c=s[1],u=s[0],d=s[2],h=ea(l),f=h[1],m=h[0],p=h[2],g=d,y=p,v=Yu.mergeborer(t.flowdata,d,p);if(v&&(c=v.row[1],u=v.row[0],d=v.row[2],g=v.row[3],f=v.column[1],m=v.column[0],p=v.column[2],y=v.column[3]),!yl.createHookFunction(\"cellMousedownBefore\",t.flowdata[d][p],{r:d,c:p,start_r:u,start_c:m,end_r:c,end_c:f},o,i))return;if(sl.cellFocus(d,p,!0),wi.cellFocus(d,p),m<$(\"#luckysheet-cell-main\").scrollLeft()&&$(\"#luckysheet-scrollbar-x\").scrollLeft(m),u<$(\"#luckysheet-cell-main\").scrollTop()&&$(\"#luckysheet-scrollbar-y\").scrollTop(u),\"3\"==n.which){$(\"#luckysheet-dataVerification-showHintBox\").hide();let e=!1;for(let n=0;n<t.luckysheet_select_save.length;n++)if(null!=t.luckysheet_select_save[n].row&&d>=t.luckysheet_select_save[n].row[0]&&d<=t.luckysheet_select_save[n].row[1]&&p>=t.luckysheet_select_save[n].column[0]&&p<=t.luckysheet_select_save[n].column[1]){e=!0;break}if(e)return}if(null!=t.flowdata[d]&&null!=t.flowdata[d][p]&&null!=t.flowdata[d][p].dd&&null!=e.fireMousedown&&\"function\"==ad(e.fireMousedown))return void e.fireMousedown(t.flowdata[d][p].dd);if(Qr.hyperlink&&Qr.hyperlink[d+\"_\"+p]&&\"3\"!=n.which)return void Qr.cellFocus(d,p);t.luckysheet_scroll_status=!0;let b=$(\"#luckysheet-input-box\");if(parseInt(b.css(\"top\"))>0){if(wi.rangestart||wi.rangedrag_column_start||wi.rangedrag_row_start||wi.israngeseleciton()){let e=[d,g],t=[p,y],a=m,l=f-m-1,r=u,o=c-u-1;if(n.shiftKey){let e=wi.func_selectedrange,t=0,n=0,a=[];e.top>u?(t=u,n=e.top+e.height-u,e.row[1]>e.row_focus&&(e.row[1]=e.row_focus),a=[d,e.row[1]]):e.top==u?(t=u,n=e.top+e.height-u,a=[d,e.row[0]]):(t=e.top,n=c-e.top-1,e.row[0]<e.row_focus&&(e.row[0]=e.row_focus),a=[e.row[0],d]);let l=0,r=0,o=[];e.left>m?(l=m,r=e.left+e.width-m,e.column[1]>e.column_focus&&(e.column[1]=e.column_focus),o=[p,e.column[1]]):e.left==m?(l=m,r=e.left+e.width-m,o=[p,e.column[0]]):(l=e.left,r=f-e.left-1,e.column[0]<e.column_focus&&(e.column[0]=e.column_focus),o=[e.column[0],p]);let i=Yu.mergeMoveMain(o,a,e,t,n,l,r);null!=i&&(o=i[0],a=i[1],t=i[2],n=i[3],l=i[4],r=i[5]),qu(l,t,r,n,a,o),e.row=a,e.column=o,e.left_move=l,e.width_move=r,e.top_move=t,e.height_move=n,wi.func_selectedrange=e}else if(n.ctrlKey&&\",\"!=$(\"#luckysheet-rich-text-editor\").find(\"span\").last().text()){let n=$(\"#luckysheet-rich-text-editor\").text();if(\")\"===n[n.length-1]&&(n=n.substr(0,n.length-1)),n.length>0){let e=n.substr(n.length-1,1);\",\"!=e&&\"=\"!=e&&\"(\"!=e&&(n+=\",\")}if(n.length>0&&\"=\"==n.substr(0,1)){if(n=wi.functionHTMLGenerate(n),window.getSelection){let e=window.getSelection();wi.functionRangeIndex=[$(e.anchorNode).parent().index(),e.anchorOffset]}else{let e=document.selection.createRange();wi.functionRangeIndex=e}$(\"#luckysheet-rich-text-editor\").html(n+\")\"),wi.canceFunctionrangeSelected(),wi.createRangeHightlight()}wi.rangestart=!1,wi.rangedrag_column_start=!1,wi.rangedrag_row_start=!1,$(\"#luckysheet-functionbox-cell\").html(n+\")\"),wi.rangeHightlightselected($(\"#luckysheet-rich-text-editor\")),wi.israngeseleciton(),wi.func_selectedrange={left:a,width:l,top:r,height:o,left_move:a,width_move:l,top_move:r,height_move:o,row:e,column:t,row_focus:d,column_focus:p}}else wi.func_selectedrange={left:a,width:l,top:r,height:o,left_move:a,width_move:l,top_move:r,height_move:o,row:e,column:t,row_focus:d,column_focus:p};return wi.rangeSetValue({row:e,column:t}),wi.rangestart=!0,wi.rangedrag_column_start=!1,wi.rangedrag_row_start=!1,$(\"#luckysheet-formula-functionrange-select\").css({left:a,width:l,top:r,height:o}).show(),$(\"#luckysheet-formula-help-c\").hide(),qu(a,r,l,o,e,t),void setTimeout((function(){let e,t=window.getSelection().anchorNode;$(\"#luckysheet-search-formula-parm\").is(\":visible\")||$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")?(e=$(\"#luckysheet-rich-text-editor\"),wi.rangechangeindex=wi.data_parm_index):e=$(t).closest(\"div\");let n=e.find(\"span[rangeindex='\"+wi.rangechangeindex+\"']\");n&&null!=n&&null!=n&&n&&n.html().length&&wi.setCaretPosition(n.get(0),0,n.html().length)}),1)}wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),t.luckysheet_select_status=!0,$(\"#luckysheet-info\").is(\":visible\")&&(t.luckysheet_select_status=!1)}else Kl(d,p,t.currentSheetIndex)&&(t.luckysheet_select_status=!0);if($(\"#luckysheet-multiRange-dialog\").is(\":visible\")){if(ko.selectStatus=!0,t.luckysheet_select_status=!1,n.shiftKey){let e=ko.selectRange[ko.selectRange.length-1],t=0,n=0,a=[];e.top>u?(t=u,n=e.top+e.height-u,e.row[1]>e.row_focus&&(e.row[1]=e.row_focus),a=[d,e.row[1]]):e.top==u?(t=u,n=e.top+e.height-u,a=[d,e.row[0]]):(t=e.top,n=c-e.top-1,e.row[0]<e.row_focus&&(e.row[0]=e.row_focus),a=[e.row[0],d]);let l=0,r=0,o=[];e.left>m?(l=m,r=e.left+e.width-m,e.column[1]>e.column_focus&&(e.column[1]=e.column_focus),o=[p,e.column[1]]):e.left==m?(l=m,r=e.left+e.width-m,o=[p,e.column[0]]):(l=e.left,r=f-e.left-1,e.column[0]<e.column_focus&&(e.column[0]=e.column_focus),o=[e.column[0],p]);let i=Yu.mergeMoveMain(o,a,e,t,n,l,r);null!=i&&(o=i[0],a=i[1],t=i[2],n=i[3],l=i[4],r=i[5]),e.row=a,e.column=o,e.left_move=l,e.width_move=r,e.top_move=t,e.height_move=n,ko.selectRange[ko.selectRange.length-1]=e}else n.ctrlKey||(ko.selectRange=[]),ko.selectRange.push({left:m,width:f-m-1,top:u,height:c-u-1,left_move:m,width_move:f-m-1,top_move:u,height_move:c-u-1,row:[d,g],column:[p,y],row_focus:d,column_focus:p});Vu(ko.selectRange);let e=ko.getTxtByRange(ko.selectRange);$(\"#luckysheet-multiRange-dialog input\").val(e)}else if(ko.selectStatus=!1,ko.selectRange=[],$(\"#luckysheet-singleRange-dialog\").is(\":visible\")){t.luckysheet_select_status=!1,Vu([{row:[d,d],column:[p,p]}]);let e=Nt(t.currentSheetIndex,{row:[d,d],column:[p,p]},t.currentSheetIndex);$(\"#luckysheet-singleRange-dialog input\").val(e)}else{if($(\"#luckysheet-dataVerificationRange-dialog\").is(\":visible\")){if(sl.selectStatus=!0,t.luckysheet_select_status=!1,n.shiftKey){let e=sl.selectRange[sl.selectRange.length-1],t=0,n=0,a=[];e.top>u?(t=u,n=e.top+e.height-u,e.row[1]>e.row_focus&&(e.row[1]=e.row_focus),a=[d,e.row[1]]):e.top==u?(t=u,n=e.top+e.height-u,a=[d,e.row[0]]):(t=e.top,n=c-e.top-1,e.row[0]<e.row_focus&&(e.row[0]=e.row_focus),a=[e.row[0],d]);let l=0,r=0,o=[];e.left>m?(l=m,r=e.left+e.width-m,e.column[1]>e.column_focus&&(e.column[1]=e.column_focus),o=[p,e.column[1]]):e.left==m?(l=m,r=e.left+e.width-m,o=[p,e.column[0]]):(l=e.left,r=f-e.left-1,e.column[0]<e.column_focus&&(e.column[0]=e.column_focus),o=[e.column[0],p]);let i=Yu.mergeMoveMain(o,a,e,t,n,l,r);null!=i&&(o=i[0],a=i[1],t=i[2],n=i[3],l=i[4],r=i[5]),e.row=a,e.column=o,e.left_move=l,e.width_move=r,e.top_move=t,e.height_move=n,sl.selectRange[sl.selectRange.length-1]=e}else sl.selectRange=[],sl.selectRange.push({left:m,width:f-m-1,top:u,height:c-u-1,left_move:m,width_move:f-m-1,top_move:u,height_move:c-u-1,row:[d,g],column:[p,y],row_focus:d,column_focus:p});Vu(sl.selectRange);let e=sl.getTxtByRange(sl.selectRange);return wi.rangetosheet&&wi.rangetosheet!=t.currentSheetIndex&&(e=t.luckysheetfile[Mt(t.currentSheetIndex)].name+\"!\"+e),void $(\"#luckysheet-dataVerificationRange-dialog input\").val(e)}if(sl.selectStatus=!1,sl.selectRange=[],Gu.singleRangeFocus&&$(\"#luckysheet-ifFormulaGenerator-dialog .singRange\").click(),$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog\").is(\":visible\")){t.luckysheet_select_status=!1,wi.rangestart=!1,$(\"#luckysheet-formula-functionrange-select\").css({left:m,width:f-m-1,top:u,height:c-u-1}).show(),$(\"#luckysheet-formula-help-c\").hide();let e=Nt(t.currentSheetIndex,{row:[d,d],column:[p,p]},t.currentSheetIndex);$(\"#luckysheet-ifFormulaGenerator-singleRange-dialog input\").val(e)}else{if($(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").is(\":visible\")){t.luckysheet_select_status=!1,wi.func_selectedrange={left:m,width:f-m-1,top:u,height:c-u-1,left_move:m,width_move:f-m-1,top_move:u,height_move:c-u-1,row:[d,d],column:[p,p],row_focus:d,column_focus:p},wi.rangestart=!0,$(\"#luckysheet-formula-functionrange-select\").css({left:m,width:f-m-1,top:u,height:c-u-1}).show(),$(\"#luckysheet-formula-help-c\").hide();let e=Nt(t.currentSheetIndex,{row:[d,d],column:[p,p]},t.currentSheetIndex);return $(\"#luckysheet-ifFormulaGenerator-multiRange-dialog input\").val(e),$(\"#luckysheet-row-count-show\").hide(),void $(\"#luckysheet-column-count-show\").hide()}if(t.luckysheet_select_status){if(n.shiftKey){let e=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),n=0,a=0,l=[];e.top>u?(n=u,a=e.top+e.height-u,e.row[1]>e.row_focus&&(e.row[1]=e.row_focus),l=[d,e.row[1]]):e.top==u?(n=u,a=e.top+e.height-u,l=[d,e.row[0]]):(n=e.top,a=c-e.top-1,e.row[0]<e.row_focus&&(e.row[0]=e.row_focus),l=[e.row[0],d]);let r=0,o=0,i=[];e.left>m?(r=m,o=e.left+e.width-m,e.column[1]>e.column_focus&&(e.column[1]=e.column_focus),i=[p,e.column[1]]):e.left==m?(r=m,o=e.left+e.width-m,i=[p,e.column[0]]):(r=e.left,o=f-e.left-1,e.column[0]<e.column_focus&&(e.column[0]=e.column_focus),i=[e.column[0],p]);let s=Yu.mergeMoveMain(i,l,e,n,a,r,o);null!=s&&(i=s[0],l=s[1],n=s[2],a=s[3],r=s[4],o=s[5]),e.row=l,e.column=i,e.left_move=r,e.width_move=o,e.top_move=n,e.height_move=a,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=e,$(\"#luckysheet-alternateformat-rangeDialog\").is(\":visible\")&&$(\"#luckysheet-alternateformat-rangeDialog input\").val(Nt(t.currentSheetIndex,t.luckysheet_select_save)),wr.luckysheet_pivotTable_select_state&&$(\"#luckysheet-pivotTable-range-selection-input\").val(t.luckysheetfile[Mt(t.currentSheetIndex)].name+\"!\"+id(t.luckysheet_select_save[0].column[0])+(t.luckysheet_select_save[0].row[0]+1)+\":\"+id(t.luckysheet_select_save[0].column[1])+(t.luckysheet_select_save[0].row[1]+1))}else n.ctrlKey?t.luckysheet_select_save.push({left:m,width:f-m-1,top:u,height:c-u-1,left_move:m,width_move:f-m-1,top_move:u,height_move:c-u-1,row:[d,g],column:[p,y],row_focus:d,column_focus:p}):(t.luckysheet_select_save.length=0,t.luckysheet_select_save.push({left:m,width:f-m-1,top:u,height:c-u-1,left_move:m,width_move:f-m-1,top_move:u,height_move:c-u-1,row:[d,g],column:[p,y],row_focus:d,column_focus:p}),Yu.menuButtonFocus(t.flowdata,d,p),wi.fucntionboxshow(d,p));Pu(),(null!=$l.freezenhorizontaldata||null!=$l.freezenverticaldata)&&$l.scrollAdaptOfselect(),Gt.mobilecheck()||hd(),yo.saveParam(\"mv\",t.currentSheetIndex,t.luckysheet_select_save)}Xa.rangefocus&&(Xa.rangefocus=!1,$(\"#luckysheet-alternateformat-range .fa-table\").click()),$(\"#luckysheet-row-count-show, #luckysheet-column-count-show\").hide(),I()||li(),wr.pivotclick(d,p,t.currentSheetIndex),fd(),yl.createHookFunction(\"cellMousedown\",t.flowdata[d][p],{r:d,c:p,start_r:u,start_c:m,end_r:c,end_c:f},o,i)}}})).mouseup((function(n){if(\"3\"==n.which){if(!t.allowEdit||I())return;let a=n.pageX,l=n.pageY,r=(t.flowdata,t.luckysheet_select_save[0]),o=e.cellRightClickConfig;if($(\"#luckysheet-cols-rows-data\").show(),$(\"#luckysheet-cols-rows-handleincell\").show(),$(\"#luckysheet-cols-rows-add, #luckysheet-cols-rows-shift\").hide(),yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"block\",yd(\"#luckysheet-cols-rows-handleincell .luckysheet-menuseparator\").style.display=\"block\",null!=r.row&&0==r.row[0]&&r.row[1]==t.flowdata.length-1){if(!(o.copy||o.copyAs||o.paste||o.insertColumn||o.deleteColumn||o.hideColumn||o.columnWidth||o.clear||o.matrix||o.sort||o.filter||o.chart||o.image||o.link||o.data||o.cellFormat))return;t.luckysheetRightHeadClickIs=\"column\",$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word\").text(X().rightclick.column),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size\").text(X().rightclick.width),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left\").text(X().rightclick.left),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right\").text(X().rightclick.right),$(\"#luckysheet-cols-rows-add\").show(),$(\"#luckysheet-cols-rows-shift\").hide(),$(\"#luckysheet-cols-rows-handleincell\").hide(),t.luckysheet_cols_menu_status=!0,yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"block\",yd(\"#luckysheet-top-left-add-selected\").style.display=o.insertColumn?\"block\":\"none\",yd(\"#luckysheet-bottom-right-add-selected\").style.display=o.insertColumn?\"block\":\"none\",yd(\"#luckysheet-del-selected\").style.display=o.deleteColumn?\"block\":\"none\",yd(\"#luckysheet-hide-selected\").style.display=o.hideColumn?\"block\":\"none\",yd(\"#luckysheet-show-selected\").style.display=o.hideColumn?\"block\":\"none\",yd(\"#luckysheet-column-row-width-selected\").style.display=o.columnWidth?\"block\":\"none\",!o.copy&&!o.copyAs&&!o.paste&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\",!o.insertColumn&&!o.deleteColumn&&!o.hideColumn&&!o.columnWidth&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\")),!o.insertColumn&&!o.deleteColumn&&!o.hideColumn&&!o.columnWidth&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\");let e=$.extend(!0,{},t.config);null==e.columnlen&&(e.columnlen={});let n=null==e.columnlen[t.luckysheet_select_save[0].column[0]]?t.defaultcollen:e.columnlen[t.luckysheet_select_save[0].column[0]],a=!0;for(let l=0;l<t.luckysheet_select_save.length;l++){let r=t.luckysheet_select_save[l],o=r.column[0],i=r.column[1];for(let l=o;l<=i;l++)if((null==e.columnlen[l]?t.defaultcollen:e.columnlen[l])!=n){a=!1;break}}a?$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(n):$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(\"\")}else if(null!=r.column&&0==r.column[0]&&r.column[1]==t.flowdata[0].length-1){if(!(o.copy||o.copyAs||o.paste||o.insertRow||o.deleteRow||o.hideRow||o.rowHeight||o.clear||o.matrix||o.sort||o.filter||o.chart||o.image||o.link||o.data||o.cellFormat))return;t.luckysheetRightHeadClickIs=\"row\",$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word\").text(X().rightclick.row),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size\").text(X().rightclick.height),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left\").text(X().rightclick.top),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right\").text(X().rightclick.bottom),$(\"#luckysheet-cols-rows-add\").show(),$(\"#luckysheet-cols-rows-shift\").hide(),$(\"#luckysheet-cols-rows-handleincell\").hide(),t.luckysheet_cols_menu_status=!0,yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"block\",yd(\"#luckysheet-top-left-add-selected\").style.display=o.insertRow?\"block\":\"none\",yd(\"#luckysheet-bottom-right-add-selected\").style.display=o.insertRow?\"block\":\"none\",yd(\"#luckysheet-del-selected\").style.display=o.deleteRow?\"block\":\"none\",yd(\"#luckysheet-hide-selected\").style.display=o.hideRow?\"block\":\"none\",yd(\"#luckysheet-show-selected\").style.display=o.hideRow?\"block\":\"none\",yd(\"#luckysheet-column-row-width-selected\").style.display=o.rowHeight?\"block\":\"none\",!o.copy&&!o.copyAs&&!o.paste&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\",!o.insertRow&&!o.deleteRow&&!o.hideRow&&!o.rowHeight&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\")),!o.insertRow&&!o.deleteRow&&!o.hideRow&&!o.rowHeight&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\");let e=$.extend(!0,{},t.config);null==e.rowlen&&(e.rowlen={});let n=null==e.rowlen[t.luckysheet_select_save[0].row[0]]?t.defaultrowlen:e.rowlen[t.luckysheet_select_save[0].row[0]],a=!0;for(let l=0;l<t.luckysheet_select_save.length;l++){let r=t.luckysheet_select_save[l],o=r.row[0],i=r.row[1];for(let l=o;l<=i;l++)if((null==e.rowlen[l]?t.defaultrowlen:e.rowlen[l])!=n){a=!1;break}}a?$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(n):$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(\"\")}else{if(!(o.copy||o.copyAs||o.paste||o.insertRow||o.insertColumn||o.deleteRow||o.deleteColumn||o.deleteCell||o.clear||o.matrix||o.sort||o.filter||o.chart||o.image||o.link||o.data||o.cellFormat))return;!o.copy&&!o.copyAs&&!o.paste&&(yd(\"#luckysheet-cols-rows-handleincell .luckysheet-menuseparator\").style.display=\"none\",!o.insertRow&&!o.insertColumn&&!o.deleteRow&&!o.deleteColumn&&!o.deleteCell&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\")),!o.insertRow&&!o.insertColumn&&!o.deleteRow&&!o.deleteColumn&&!o.deleteCell&&(yd(\"#luckysheet-cols-rows-handleincell .luckysheet-menuseparator\").style.display=\"none\")}!o.clear&&!o.matrix&&!o.sort&&!o.filter&&!o.chart&&!o.image&&!o.link&&!o.data&&!o.cellFormat&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\"),dd($(\"#luckysheet-rightclick-menu\"),a,l)}yo.saveParam(\"mv\",t.currentSheetIndex,t.luckysheet_select_save)})).dblclick((function(e){if($(e.target).hasClass(\"luckysheet-mousedown-cancel\")||!t.allowEdit||parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0)return;let n=ta(e.pageX,e.pageY);if(n[0]>=t.cellmainWidth-t.cellMainSrollBarSize||n[1]>=t.cellmainHeight-t.cellMainSrollBarSize)return;let a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=n[0]+a,o=n[1]+l;null!=$l.freezenverticaldata&&n[0]<$l.freezenverticaldata[0]-$l.freezenverticaldata[2]&&(r=n[0]+$l.freezenverticaldata[2]),null!=$l.freezenhorizontaldata&&n[1]<$l.freezenhorizontaldata[0]-$l.freezenhorizontaldata[2]&&(o=n[1]+$l.freezenhorizontaldata[2]);let i=Jn(o)[2],s=ea(r)[2],c=Yu.mergeborer(t.flowdata,i,s);if(c&&(i=c.row[2],s=c.column[2]),wr.isPivotRange(i,s)){if(!((null!=wr.filter&&0!=wr.filter.length||null!=wr.row&&0!=wr.row.length||null!=wr.column&&0!=wr.column.length||null!=wr.values&&0!=wr.values.length)&&null!=wr.values&&0!=wr.values.length&&0!=i&&0!=s))return;if(null!=wr.column&&wr.column.length>0)if(wr.values.length>=2&&\"column\"==wr.showType){if(i<=wr.column.length||s>=wr.pivotDatas[0].length-wr.values.length)return}else if(i<=wr.column.length-1||s>=wr.pivotDatas[0].length-1)return;if(null!=wr.row&&wr.row.length>0)if(wr.values.length>=2&&\"row\"==wr.showType){if(s<=wr.row.length||i>=wr.pivotDatas.length-wr.values.length)return}else if(s<=wr.row.length-1||i>=wr.pivotDatas.length-1)return;return ki.addNewSheet(e),void wr.drillDown(i,s)}if($(\"#luckysheet-search-formula-parm\").is(\":visible\")||$(\"#luckysheet-search-formula-parm-select\").is(\":visible\"))$(\"#luckysheet-cell-selected\").hide();else{if($(\"#luckysheet-conditionformat-dialog\").is(\":visible\")||$(\"#luckysheet-administerRule-dialog\").is(\":visible\")||$(\"#luckysheet-newConditionRule-dialog\").is(\":visible\")||$(\"#luckysheet-editorConditionRule-dialog\").is(\":visible\")||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;if($(\"#luckysheet-modal-dialog-slider-alternateformat\").is(\":visible\")||$(\"#luckysheet-alternateformat-rangeDialog\").is(\":visible\"))return;{Yu.luckysheetPaintModelOn&&Yu.cancelPaintModel();let e=t.luckysheet_select_save[0].column_focus,n=t.luckysheet_select_save[0].row_focus;(e!==s||n!==i)&&(i=n,s=e),ws(i,s,t.flowdata),Pu()}}})),document.getElementById(\"luckysheet-cell-main\").addEventListener(\"drop\",(function(n){n.preventDefault(),n.stopPropagation();let a=n.dataTransfer.files;if(1==a.length&&a[0].type.indexOf(\"image\")>-1){if(!Ql(t.currentSheetIndex,\"editObjects\"))return;rl.insertImg(a[0])}!function(n){if(e&&e.hook&&e.hook.cellDragStop){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),r=l[1],o=l[0],i=l[2],s=ea(a),c=s[1],u=s[0],d=s[2],h=Yu.mergeborer(t.flowdata,i,d);h&&(r=h.row[1],o=h.row[0],i=h.row[2],c=h.column[1],u=h.column[0],d=h.column[2]);let f=ki.getSheetByIndex(),m=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");yl.createHookFunction(\"cellDragStop\",t.flowdata[i][d],{r:i,c:d,start_r:o,start_c:u,end_r:r,end_c:c},f,m,n)}}(n)}),!1),document.getElementById(\"luckysheet-cell-main\").addEventListener(\"dragover\",(function(e){e.preventDefault(),e.stopPropagation()}),!1),$(document).on(\"mousemove.luckysheetEvent\",(function(n){if(vl.overshow(n),Qr.overshow(n),window.cancelAnimationFrame(t.jfautoscrollTimeout),e&&e.hook&&e.hook.sheetMousemove){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),r=l[1],o=l[0],i=l[2],s=ea(a),c=s[1],u=s[0],d=s[2],h=Yu.mergeborer(t.flowdata,i,d);h&&(r=h.row[1],o=h.row[0],i=h.row[2],c=h.column[1],u=h.column[0],d=h.column[2]);let f=ki.getSheetByIndex(),m={functionResizeStatus:wi.functionResizeStatus,horizontalmoveState:!!$l.horizontalmovestate,verticalmoveState:!!$l.verticalmovestate,pivotTableMoveState:!!wr&&wr.movestate,sheetMoveStatus:t.luckysheet_sheet_move_status,scrollStatus:!!t.luckysheet_scroll_status,selectStatus:!!t.luckysheet_select_status,rowsSelectedStatus:!!t.luckysheet_rows_selected_status,colsSelectedStatus:!!t.luckysheet_cols_selected_status,cellSelectedMove:!!t.luckysheet_cell_selected_move,cellSelectedExtend:!!t.luckysheet_cell_selected_extend,colsChangeSize:!!t.luckysheet_cols_change_size,rowsChangeSize:!!t.luckysheet_rows_change_size,chartMove:!!t.chartparam.luckysheetCurrentChartMove,chartResize:!!t.chartparam.luckysheetCurrentChartResize,rangeResize:!!wi.rangeResize,rangeMove:!!wi.rangeMove},p=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");t.flowdata&&t.flowdata[i]&&yl.createHookFunction(\"sheetMousemove\",t.flowdata[i][d],{r:i,c:d,start_r:o,start_c:u,end_r:r,end_c:c},f,m,p)}if(wi.functionResizeStatus){let e=n.pageY-wi.functionResizeData.y,a=wi.functionResizeData.calculatebarHeight+e,l=Math.round($(window).height()/2);if(a<=28){if(a<=20)return;a=28}else if(a>=l){if(a>=l+8)return;a=l}t.calculatebarHeight=a,$(\"#luckysheet-wa-calculate\").css(\"height\",t.calculatebarHeight-2),$(\"#luckysheet-wa-calculate-size\").css({background:\"#5e5e5e\",cursor:\"ns-resize\"}),clearTimeout(wi.functionResizeTimeout),wi.functionResizeTimeout=setTimeout((function(){Dl()}),15)}else if($l.horizontalmovestate){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=(e[0],Jn(e[1]+l)),o=r[1],i=r[0],s=r[2],c=e[1]+t.columnHeaderHeight;c<t.columnHeaderHeight&&(c=t.columnHeaderHeight),c>$l.windowHeight-4&&(c=$l.windowHeight-4),$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-handle\").css({top:c}),c+l-t.columnHeaderHeight>=i+(o-i)/2?(c=o-2-l+t.columnHeaderHeight,$l.freezenhorizontaldata=[o,s+1,l,$l.cutVolumn(t.visibledatarow,s+1),c]):(c=i-2-l+t.columnHeaderHeight,$l.freezenhorizontaldata=[i,s,l,$l.cutVolumn(t.visibledatarow,s),c]),$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-drop\").css({top:c}),$l.saveFreezen($l.freezenhorizontaldata,c,null,null)}else if($l.verticalmovestate){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=e[0]+a,o=(e[1],ea(r)),i=o[1],s=o[0],c=o[2],u=e[0]+t.rowHeaderWidth;u<t.rowHeaderWidth&&(u=t.rowHeaderWidth),u>$l.windowWidth-4&&(u=$l.windowWidth-4),$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-handle\").css({left:u}),u+a-t.rowHeaderWidth>=s+(i-s)/2?(u=i-2-a+t.rowHeaderWidth,$l.freezenverticaldata=[i,c+1,a,$l.cutVolumn(t.visibledatacolumn,c+1),u]):(u=s-2-a+t.rowHeaderWidth,$l.freezenverticaldata=[s,c,a,$l.cutVolumn(t.visibledatacolumn,c),u]),$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-drop\").css({left:u}),$l.saveFreezen(null,null,$l.freezenverticaldata,u),Dl()}else if(wr&&wr.movestate){let e=n.pageX,t=n.pageY;$(\"#luckysheet-modal-dialog-slider-pivot-move\").css({left:e-wr.movesave.width/2,top:t-wr.movesave.height})}else if(t.luckysheet_sheet_move_status){let e=$(\"#luckysheet-sheet-container-c\").scrollLeft(),a=n.pageX+e;if(Math.abs(n.pageX-t.luckysheet_sheet_move_data.pageX)<3)return;let l=$(\"#luckysheet-sheet-container\").width(),r=a-t.luckysheet_sheet_move_data.curleft-$(\"#luckysheet-sheet-container\").offset().left;t.luckysheet_sheet_move_data.activeobject.css({left:r});let o=Xn(t.luckysheet_sheet_move_data.widthlist,r+t.luckysheet_sheet_move_data.curleft);t.luckysheet_sheet_move_data.cursorobject.css({cursor:\"move\"}),r-e<=6&&$(\"#luckysheet-sheets-leftscroll\").click(),r-e>=l-40&&$(\"#luckysheet-sheets-rightscroll\").click(),o!=t.luckysheet_sheet_move_data.curindex&&(-1==o&&r>0?(o=t.luckysheet_sheet_move_data.widthlist.length-1,$(\"#luckysheet-sheets-item-clone\").insertAfter($(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").eq(o))):-1==o&&r<=0?$(\"#luckysheet-sheets-item-clone\").insertBefore($(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").eq(0)):$(\"#luckysheet-sheets-item-clone\").insertAfter($(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").eq(o)),t.luckysheet_sheet_move_data.widthlist=[],$(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").each((function(e){0==e?t.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth())):t.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth())+t.luckysheet_sheet_move_data.widthlist[e-1])})),t.luckysheet_sheet_move_data.curindex=$(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").index($(\"#luckysheet-sheets-item-clone\")))}else if(t.luckysheet_model_move_state){let e=$(document).scrollTop(),a=$(document).scrollLeft(),l=n.pageY+e,r=n.pageX+a,o=$(window).height(),i=$(window).width(),s=t.luckysheet_model_move_obj.height(),c=t.luckysheet_model_move_obj.width(),u=l-t.luckysheet_model_xy[1],d=r-t.luckysheet_model_xy[0];u<0&&(u=0),u+s+62>o&&(u=o-s-62),d<0&&(d=0),d+c+86>i&&(d=i-c-86),t.luckysheet_model_move_obj.css({top:u,left:d}),n.preventDefault()}else if(t.luckysheet_scroll_status||t.luckysheet_select_status||t.luckysheet_rows_selected_status||t.luckysheet_cols_selected_status||t.luckysheet_cell_selected_move||t.luckysheet_cell_selected_extend||t.luckysheet_cols_change_size||t.luckysheet_rows_change_size||t.chartparam.luckysheetCurrentChartMove||t.chartparam.luckysheetCurrentChartResize||wi.rangeResize||wi.rangeMove){let e=function(){if(t.luckysheet_scroll_status&&!t.luckysheet_cols_change_size&&!t.luckysheet_rows_change_size){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-scrollbar-x\").scrollLeft(),l=$(\"#luckysheet-scrollbar-y\").scrollTop(),r=e[0],o=e[1],i=$(\"#luckysheet-cell-main\").height()-20*t.zoomRatio,s=$(\"#luckysheet-cell-main\").width()-60*t.zoomRatio;if(o<0||o>i){let e;e=o<0?l+o/2:l+(o-i)/2,$(\"#luckysheet-scrollbar-y\").scrollTop(e)}if(r<0||r>s){let e;e=r<0?a+r/2:a+(r-s)/2,$(\"#luckysheet-scrollbar-x\").scrollLeft(e)}}if(t.luckysheet_select_status){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),r=l[1],o=l[0],i=l[2],s=ea(a),c=s[1],u=s[0],d=s[2];if(!Kl(i,d,t.currentSheetIndex))return;let h=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),f=0,m=0,p=[];h.top>o?(f=o,m=h.top+h.height-o,h.row[1]>h.row_focus&&(h.row[1]=h.row_focus),p=[i,h.row[1]]):h.top==o?(f=o,m=h.top+h.height-o,p=[i,h.row[0]]):(f=h.top,m=r-h.top-1,h.row[0]<h.row_focus&&(h.row[0]=h.row_focus),p=[h.row[0],i]);let g=0,y=0,v=[];h.left>u?(g=u,y=h.left+h.width-u,h.column[1]>h.column_focus&&(h.column[1]=h.column_focus),v=[d,h.column[1]]):h.left==u?(g=u,y=h.left+h.width-u,v=[d,h.column[0]]):(g=h.left,y=c-h.left-1,h.column[0]<h.column_focus&&(h.column[0]=h.column_focus),v=[h.column[0],d]);let b=Yu.mergeMoveMain(v,p,h,f,m,g,y);null!=b&&(v=b[0],p=b[1],f=b[2],m=b[3],g=b[4],y=b[5]),h.row=p,h.column=v,h.left_move=g,h.width_move=y,h.top_move=f,h.height_move=m,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=h,Pu(),$l.scrollFreezen(),$(\"#luckysheet-alternateformat-rangeDialog\").is(\":visible\")&&$(\"#luckysheet-alternateformat-rangeDialog input\").val(Nt(t.currentSheetIndex,t.luckysheet_select_save[t.luckysheet_select_save.length-1])),wr.luckysheet_pivotTable_select_state&&$(\"#luckysheet-pivotTable-range-selection-input\").val(t.luckysheetfile[Mt(t.currentSheetIndex)].name+\"!\"+id(t.luckysheet_select_save[0].column[0])+(t.luckysheet_select_save[0].row[0]+1)+\":\"+id(t.luckysheet_select_save[0].column[1])+(t.luckysheet_select_save[0].row[1]+1))}else if(ko.selectStatus){let e=ta(n.pageX,n.pageY),t=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),a=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),l=a[1],r=a[0],o=a[2],i=ea(t),s=i[1],c=i[0],u=i[2],d=ko.selectRange[ko.selectRange.length-1],h=0,f=0,m=[];d.top>r?(h=r,f=d.top+d.height-r,d.row[1]>d.row_focus&&(d.row[1]=d.row_focus),m=[o,d.row[1]]):d.top==r?(h=r,f=d.top+d.height-r,m=[o,d.row[0]]):(h=d.top,f=l-d.top-1,d.row[0]<d.row_focus&&(d.row[0]=d.row_focus),m=[d.row[0],o]);let p=0,g=0,y=[];d.left>c?(p=c,g=d.left+d.width-c,d.column[1]>d.column_focus&&(d.column[1]=d.column_focus),y=[u,d.column[1]]):d.left==c?(p=c,g=d.left+d.width-c,y=[u,d.column[0]]):(p=d.left,g=s-d.left-1,d.column[0]<d.column_focus&&(d.column[0]=d.column_focus),y=[d.column[0],u]);let v=Yu.mergeMoveMain(y,m,d,h,f,p,g);null!=v&&(y=v[0],m=v[1],h=v[2],f=v[3],p=v[4],g=v[5]),d.row=m,d.column=y,d.left_move=p,d.width_move=g,d.top_move=h,d.height_move=f,ko.selectRange[ko.selectRange.length-1]=d,Vu(ko.selectRange);let b=ko.getTxtByRange(ko.selectRange);$(\"#luckysheet-multiRange-dialog input\").val(b)}else if(sl.selectStatus){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),r=l[1],o=l[0],i=l[2],s=ea(a),c=s[1],u=s[0],d=s[2],h=sl.selectRange[sl.selectRange.length-1],f=0,m=0,p=[];h.top>o?(f=o,m=h.top+h.height-o,h.row[1]>h.row_focus&&(h.row[1]=h.row_focus),p=[i,h.row[1]]):h.top==o?(f=o,m=h.top+h.height-o,p=[i,h.row[0]]):(f=h.top,m=r-h.top-1,h.row[0]<h.row_focus&&(h.row[0]=h.row_focus),p=[h.row[0],i]);let g=0,y=0,v=[];h.left>u?(g=u,y=h.left+h.width-u,h.column[1]>h.column_focus&&(h.column[1]=h.column_focus),v=[d,h.column[1]]):h.left==u?(g=u,y=h.left+h.width-u,v=[d,h.column[0]]):(g=h.left,y=c-h.left-1,h.column[0]<h.column_focus&&(h.column[0]=h.column_focus),v=[h.column[0],d]);let b=Yu.mergeMoveMain(v,p,h,f,m,g,y);null!=b&&(v=b[0],p=b[1],f=b[2],m=b[3],g=b[4],y=b[5]),h.row=p,h.column=v,h.left_move=g,h.width_move=y,h.top_move=f,h.height_move=m,sl.selectRange[sl.selectRange.length-1]=h,Vu(sl.selectRange);let k=sl.getTxtByRange(sl.selectRange);wi.rangetosheet&&wi.rangetosheet!=t.currentSheetIndex&&(k=t.luckysheetfile[Mt(t.currentSheetIndex)].name+\"!\"+k),$(\"#luckysheet-dataVerificationRange-dialog input\").val(k)}else if(wi.rangestart)wi.rangedrag(n);else if(wi.rangedrag_row_start)wi.rangedrag_row(n);else if(wi.rangedrag_column_start)wi.rangedrag_column(n);else if(t.luckysheet_rows_selected_status){let e=ta(n.pageX,n.pageY)[1]+$(\"#luckysheet-rows-h\").scrollTop();if(e<0)return!1;let a=Jn(e),l=a[1],r=a[0],o=a[2],i=t.visibledatacolumn.length-1,s=(t.visibledatacolumn[i],$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1])),c=0,u=0,d=[];s.top>r?(c=r,u=s.top+s.height-r,s.row[1]>s.row_focus&&(s.row[1]=s.row_focus),d=[o,s.row[1]]):s.top==r?(c=r,u=s.top+s.height-r,d=[o,s.row[0]]):(c=s.top,u=l-s.top-1,s.row[0]<s.row_focus&&(s.row[0]=s.row_focus),d=[s.row[0],o]),s.row=d,s.top_move=c,s.height_move=u,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=s,Pu(),clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500)}else if(t.luckysheet_cols_selected_status){let e=ta(n.pageX,n.pageY)[0]+$(\"#luckysheet-cols-h-c\").scrollLeft();if(e<0)return!1;let a=t.visibledatarow.length-1,l=(t.visibledatarow[a],ea(e)),r=l[1],o=l[0],i=l[2],s=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),c=0,u=0,d=[];s.left>o?(c=o,u=s.left+s.width-o,s.column[1]>s.column_focus&&(s.column[1]=s.column_focus),d=[i,s.column[1]]):s.left==o?(c=o,u=s.left+s.width-o,d=[i,s.column[0]]):(c=s.left,u=r-s.left-1,s.column[0]<s.column_focus&&(s.column[0]=s.column_focus),d=[s.column[0],i]),s.column=d,s.left_move=c,s.width_move=u,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=s,Pu(),clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500)}else if(t.luckysheet_cell_selected_move){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=e[0]+a,o=e[1]+l,i=$(window).height()+l-t.sheetBarHeight-t.statisticBarHeight,s=$(window).width()+a,c=Jn(o),u=c[1],d=c[0],h=c[2],f=ea(r),m=f[1],p=f[0],g=f[2],y=t.luckysheet_cell_selected_move_index[0],v=t.luckysheet_cell_selected_move_index[1],b=t.luckysheet_select_save[0].row[0]-y+h,k=t.luckysheet_select_save[0].row[1]-y+h,w=t.luckysheet_select_save[0].column[0]-v+g,x=t.luckysheet_select_save[0].column[1]-v+g;(b<0||o<0)&&(b=0,k=t.luckysheet_select_save[0].row[1]-t.luckysheet_select_save[0].row[0]),(w<0||r<0)&&(w=0,x=t.luckysheet_select_save[0].column[1]-t.luckysheet_select_save[0].column[0]),(k>=t.visibledatarow[t.visibledatarow.length-1]||o>i)&&(b=t.visibledatarow.length-1-t.luckysheet_select_save[0].row[1]+t.luckysheet_select_save[0].row[0],k=t.visibledatarow.length-1),(x>=t.visibledatacolumn[t.visibledatacolumn.length-1]||r>s)&&(w=t.visibledatacolumn.length-1-t.luckysheet_select_save[0].column[1]+t.luckysheet_select_save[0].column[0],x=t.visibledatacolumn.length-1),p=w-1==-1?0:t.visibledatacolumn[w-1],m=t.visibledatacolumn[x],d=b-1==-1?0:t.visibledatarow[b-1],u=t.visibledatarow[k],$(\"#luckysheet-cell-selected-move\").css({left:p,width:m-p-2,top:d,height:u-d-2,display:\"block\"})}else if(t.luckysheet_cell_selected_extend){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft()-5,l=$(\"#luckysheet-cell-main\").scrollTop()-5,r=e[0]+a,o=e[1]+l,i=$(window).height()+l-t.sheetBarHeight-t.statisticBarHeight,s=$(window).width()+a,c=Jn(o),u=c[1],d=c[0],h=c[2],f=ea(r),m=f[1],p=f[0],g=f[2],y=t.luckysheet_cell_selected_extend_index[0],v=t.luckysheet_cell_selected_extend_index[1],b=t.luckysheet_select_save[0].row[0],k=t.luckysheet_select_save[0].row[1],w=t.luckysheet_select_save[0].column[0],x=t.luckysheet_select_save[0].column[1];(b<0||o<0)&&(b=0,k=t.luckysheet_select_save[0].row[1]-t.luckysheet_select_save[0].row[0]),(w<0||r<0)&&(w=0,x=t.luckysheet_select_save[0].column[1]-t.luckysheet_select_save[0].column[0]),(k>=t.visibledatarow[t.visibledatarow.length-1]||o>i)&&(b=t.visibledatarow.length-1-t.luckysheet_select_save[0].row[1]+t.luckysheet_select_save[0].row[0],k=t.visibledatarow.length-1),(x>=t.visibledatacolumn[t.visibledatacolumn.length-1]||r>s)&&(w=t.visibledatacolumn.length-1-t.luckysheet_select_save[0].column[1]+t.luckysheet_select_save[0].column[0],x=t.visibledatacolumn.length-1);let _=t.luckysheet_select_save[0].top_move,C=t.luckysheet_select_save[0].height_move,T=t.luckysheet_select_save[0].left_move,S=t.luckysheet_select_save[0].width_move;Math.abs(y-h)>Math.abs(v-g)?h>=b&&h<=k||(t.luckysheet_select_save[0].top_move>=d?(_=d,C=t.luckysheet_select_save[0].top_move+t.luckysheet_select_save[0].height_move-d):(_=t.luckysheet_select_save[0].top_move,C=u-t.luckysheet_select_save[0].top_move-1)):g>=w&&g<=x||(t.luckysheet_select_save[0].left_move>=p?(T=p,S=t.luckysheet_select_save[0].left_move+t.luckysheet_select_save[0].width_move-p):(T=t.luckysheet_select_save[0].left_move,S=m-t.luckysheet_select_save[0].left_move-1)),$(\"#luckysheet-cell-selected-extend\").css({left:T,width:S,top:_,height:C,display:\"block\"})}else if(t.luckysheet_cols_change_size){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cols-h-c\").scrollLeft(),l=e[0]+a,r=$(window).width(),o=t.visibledatarow.length-1,i=(t.visibledatarow[o],ea(l));i[1],i[0],i[2];l+3-t.luckysheet_cols_change_size_start[0]>30&&l<r+a-100&&($(\"#luckysheet-change-size-line\").css({left:l}),$(\"#luckysheet-cols-change-size\").css({left:l-2}))}else if(t.luckysheet_rows_change_size){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-rows-h\").scrollTop(),l=e[1]+a,r=$(window).height(),o=Jn(l);o[1],o[0],o[2];l+3-t.luckysheet_rows_change_size_start[0]>19&&l<r+a-200&&($(\"#luckysheet-change-size-line\").css({top:l}),$(\"#luckysheet-rows-change-size\").css({top:l}))}else if(t.chartparam.luckysheetCurrentChartMove){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=e[1]+$(\"#luckysheet-cell-main\").scrollTop(),r=t.chartparam.luckysheetCurrentChartMoveObj.height(),o=t.chartparam.luckysheetCurrentChartMoveObj.width(),i=l-t.chartparam.luckysheetCurrentChartMoveXy[1],s=a-t.chartparam.luckysheetCurrentChartMoveXy[0];if(i<0&&(i=0),i+r+42+6>t.chartparam.luckysheetCurrentChartMoveWinH&&(i=t.chartparam.luckysheetCurrentChartMoveWinH-r-42-6),s<0&&(s=0),s+o+22+36>t.chartparam.luckysheetCurrentChartMoveWinW&&(s=t.chartparam.luckysheetCurrentChartMoveWinW-o-22-36),t.chartparam.luckysheetCurrentChartMoveObj.css({top:i,left:s}),null!=$l.freezenhorizontaldata||null!=$l.freezenverticaldata){$l.scrollAdapt();let e=t.chartparam.luckysheetCurrentChartMoveObj.offset(),a=t.chartparam.luckysheetCurrentChartMoveObj.position();t.chartparam.luckysheetCurrentChartMoveXy=[n.pageX-e.left,n.pageY-e.top,a.left,a.top,$(\"#luckysheet-scrollbar-x\").scrollLeft(),$(\"#luckysheet-scrollbar-y\").scrollTop()]}}else if(t.chartparam.luckysheetCurrentChartResize){let e=$(\"#luckysheet-cell-main\").scrollTop(),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=ta(n.pageX,n.pageY),r=l[0]+a,o=l[1]+e;if(r<0||o<0)return!1;t.chartparam.luckysheetCurrentChartResizeObj.height(),t.chartparam.luckysheetCurrentChartResizeObj.width();let i=o-t.chartparam.luckysheetCurrentChartResizeXy[1],s=r-t.chartparam.luckysheetCurrentChartResizeXy[0],c=t.chartparam.luckysheetCurrentChartResizeXy[5],u=t.chartparam.luckysheetCurrentChartResizeXy[3],d=t.chartparam.luckysheetCurrentChartResizeXy[4],h=t.chartparam.luckysheetCurrentChartResizeXy[2];(\"lm\"==t.chartparam.luckysheetCurrentChartResize||\"lt\"==t.chartparam.luckysheetCurrentChartResize||\"lb\"==t.chartparam.luckysheetCurrentChartResize)&&(d=r,h=t.chartparam.luckysheetCurrentChartResizeXy[2]-s,d>t.chartparam.luckysheetCurrentChartResizeXy[2]+t.chartparam.luckysheetCurrentChartResizeXy[4]-60?(d=t.chartparam.luckysheetCurrentChartResizeXy[2]+t.chartparam.luckysheetCurrentChartResizeXy[4]-60,h=t.chartparam.luckysheetCurrentChartResizeXy[2]-(t.chartparam.luckysheetCurrentChartResizeXy[2]+t.chartparam.luckysheetCurrentChartResizeXy[4]-60-t.chartparam.luckysheetCurrentChartResizeXy[0])):d<=0&&(d=0,h=t.chartparam.luckysheetCurrentChartResizeXy[2]+t.chartparam.luckysheetCurrentChartResizeXy[0])),(\"rm\"==t.chartparam.luckysheetCurrentChartResize||\"rt\"==t.chartparam.luckysheetCurrentChartResize||\"rb\"==t.chartparam.luckysheetCurrentChartResize)&&(h=t.chartparam.luckysheetCurrentChartResizeXy[2]+s,h<60?h=60:h>=t.chartparam.luckysheetCurrentChartResizeWinW-t.chartparam.luckysheetCurrentChartResizeXy[4]-22-36&&(h=t.chartparam.luckysheetCurrentChartResizeWinW-t.chartparam.luckysheetCurrentChartResizeXy[4]-22-36)),(\"mt\"==t.chartparam.luckysheetCurrentChartResize||\"lt\"==t.chartparam.luckysheetCurrentChartResize||\"rt\"==t.chartparam.luckysheetCurrentChartResize)&&(c=o,u=t.chartparam.luckysheetCurrentChartResizeXy[3]-i,c>t.chartparam.luckysheetCurrentChartResizeXy[3]+t.chartparam.luckysheetCurrentChartResizeXy[5]-60?(c=t.chartparam.luckysheetCurrentChartResizeXy[3]+t.chartparam.luckysheetCurrentChartResizeXy[5]-60,u=t.chartparam.luckysheetCurrentChartResizeXy[3]-(t.chartparam.luckysheetCurrentChartResizeXy[3]+t.chartparam.luckysheetCurrentChartResizeXy[5]-60-t.chartparam.luckysheetCurrentChartResizeXy[1])):c<=0&&(c=0,u=t.chartparam.luckysheetCurrentChartResizeXy[3]+t.chartparam.luckysheetCurrentChartResizeXy[1])),(\"mb\"==t.chartparam.luckysheetCurrentChartResize||\"lb\"==t.chartparam.luckysheetCurrentChartResize||\"rb\"==t.chartparam.luckysheetCurrentChartResize)&&(u=t.chartparam.luckysheetCurrentChartResizeXy[3]+i,u<60?u=60:u>=t.chartparam.luckysheetCurrentChartResizeWinH-t.chartparam.luckysheetCurrentChartResizeXy[5]-42-6&&(u=t.chartparam.luckysheetCurrentChartResizeWinH-t.chartparam.luckysheetCurrentChartResizeXy[5]-42-6));let f={top:c,left:d,height:u,width:h};t.chartparam.luckysheetCurrentChartResizeObj.css(f),t.resizeChart(t.chartparam.luckysheetCurrentChart)}else if(rl.move){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=e[1]+$(\"#luckysheet-cell-main\").scrollTop(),r=rl.images[rl.currentImgId];r.isFixedPos&&(a=n.pageX,l=n.pageY);let o=$(\"#luckysheet-modal-dialog-activeImage\").height(),i=$(\"#luckysheet-modal-dialog-activeImage\").width(),s=l-rl.moveXY[1],c=a-rl.moveXY[0],u=0,d=rl.currentWinH-o-42-6,h=0,f=rl.currentWinW-i-22-36;r.isFixedPos&&(u=t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight,d=u+t.cellmainHeight-t.cellMainSrollBarSize-o,h=t.rowHeaderWidth,f=h+t.cellmainWidth-t.cellMainSrollBarSize-i),s<u&&(s=u),s>d&&(s=d),c<h&&(c=h),c>f&&(c=f),$(\"#luckysheet-modal-dialog-activeImage\").css({left:c,top:s})}else if(rl.resize){let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=e[0]+a,o=e[1]+l;if(r<0||o<0)return!1;let i=rl.resizeXY,s=o-i[1],c=r-i[0],u=i[5],d=i[3],h=i[4],f=i[2],m=rl.resize,p=rl.images[rl.currentImgId];if(p.isFixedPos){let e=t.infobarHeight+t.toolbarHeight+t.calculatebarHeight+t.columnHeaderHeight,n=t.rowHeaderWidth;\"lt\"==m?(h=i[4]-i[6]+c,h<n&&(h=n),h>i[4]-i[6]+i[2]-1&&(h=i[4]-i[6]+i[2]-1),f=i[4]-i[6]+i[2]-h,d=Math.round(f*(i[3]/i[2])),u=i[5]-i[7]+i[3]-d,u<e&&(u=e,d=i[5]-i[7]+i[3]-u,f=Math.round(d*(i[2]/i[3])),h=i[4]-i[6]+i[2]-f),u>i[5]-i[7]+i[3]-1&&(u=i[5]-i[7]+i[3]-1,d=i[5]-i[7]+i[3]-u,f=Math.round(d*(i[2]/i[3])),h=i[4]-i[6]+i[2]-f)):\"lm\"==m?(h=i[4]-i[6]+c,h<n&&(h=n),h>i[4]-i[6]+i[2]-1&&(h=i[4]-i[6]+i[2]-1),f=i[4]-i[6]+i[2]-h,u=i[5]-i[7],d=i[3]):\"lb\"==m?(h=i[4]-i[6]+c,h<n&&(h=n),h>i[4]-i[6]+i[2]-1&&(h=i[4]-i[6]+i[2]-1),f=i[4]-i[6]+i[2]-h,d=Math.round(f*(i[3]/i[2])),u=i[5]-i[7],d<1&&(d=1,f=Math.round(d*(i[2]/i[3])),h=i[4]-i[6]+i[2]-f),d>e+t.cellmainHeight-t.cellMainSrollBarSize-u&&(d=e+t.cellmainHeight-t.cellMainSrollBarSize-u,f=Math.round(d*(i[2]/i[3])),h=i[4]-i[6]+i[2]-f)):\"rt\"==m?(h=i[4]-i[6],f=i[2]+c,f<1&&(f=1),f>n+t.cellmainWidth-t.cellMainSrollBarSize-h&&(f=n+t.cellmainWidth-t.cellMainSrollBarSize-h),d=Math.round(f*(i[3]/i[2])),u=i[5]-i[7]+i[3]-d,u<e&&(u=e,d=i[5]-i[7]+i[3]-u,f=Math.round(d*(i[2]/i[3]))),u>i[5]-i[7]+i[3]-1&&(u=i[5]-i[7]+i[3]-1,d=i[5]-i[7]+i[3]-u,f=Math.round(d*(i[2]/i[3])))):\"rm\"==m?(h=i[4]-i[6],f=i[2]+c,f<1&&(f=1),f>n+t.cellmainWidth-t.cellMainSrollBarSize-h&&(f=n+t.cellmainWidth-t.cellMainSrollBarSize-h),u=i[5]-i[7],d=i[3]):\"rb\"==m?(h=i[4]-i[6],f=i[2]+c,f<1&&(f=1),f>n+t.cellmainWidth-t.cellMainSrollBarSize-h&&(f=n+t.cellmainWidth-t.cellMainSrollBarSize-h),d=Math.round(f*(i[3]/i[2])),u=i[5]-i[7],d<1&&(d=1,f=Math.round(d*(i[2]/i[3]))),d>e+t.cellmainHeight-t.cellMainSrollBarSize-u&&(d=e+t.cellmainHeight-t.cellMainSrollBarSize-u,f=Math.round(d*(i[2]/i[3])))):\"mt\"==m?(h=i[4]-i[6],f=i[2],u=i[5]-i[7]+s,u<e&&(u=e),u>i[5]-i[7]+i[3]-1&&(u=i[5]-i[7]+i[3]-1),d=i[5]-i[7]+i[3]-u):\"mb\"==m&&(h=i[4]-i[6],f=i[2],u=i[5]-i[7],d=i[3]+s,d<1&&(d=1),d>e+t.cellmainHeight-t.cellMainSrollBarSize-u&&(d=e+t.cellmainHeight-t.cellMainSrollBarSize-u))}else\"lt\"==m?(h=r,f=i[2]-c,h>i[2]+i[4]-1?(h=i[2]+i[4]-1,f=i[2]+i[0]-(i[2]+i[4]-1)):h<=0&&(h=0,f=i[2]+i[0]),d=Math.round(f*(i[3]/i[2])),u=i[3]+i[1]-d,u>i[3]+i[5]-1?(u=i[3]+i[5]-1,d=i[3]+i[1]-(i[3]+i[5]-1),f=Math.round(d*(i[2]/i[3])),h=i[2]+i[0]-f):u<=0&&(u=0,d=i[3]+i[1],f=Math.round(d*(i[2]/i[3])),h=i[2]+i[0]-f)):\"lm\"==m?(h=r,f=i[2]-c,h>i[2]+i[4]-1?(h=i[2]+i[4]-1,f=i[2]+i[0]-(i[2]+i[4]-1)):h<=0&&(h=0,f=i[2]+i[0])):\"lb\"==m?(h=r,f=i[2]-c,h>i[2]+i[4]-1?(h=i[2]+i[4]-1,f=i[2]+i[0]-(i[2]+i[4]-1)):h<=0&&(h=0,f=i[2]+i[0]),d=Math.round(f*(i[3]/i[2])),d<1?(d=1,f=Math.round(d*(i[2]/i[3])),h=i[2]+i[0]-f):d>=rl.currentWinH-i[5]-42-6&&(d=rl.currentWinH-i[5]-42-6,f=Math.round(d*(i[2]/i[3])),h=i[2]+i[0]-f)):\"rt\"==m?(f=i[2]+c,f<1?f=1:f>=rl.currentWinW-i[4]-22-36&&(f=rl.currentWinW-i[4]-22-36),d=Math.round(f*(i[3]/i[2])),u=i[3]+i[1]-d,u>i[3]+i[5]-1?(u=i[3]+i[5]-1,d=i[3]+i[1]-(i[3]+i[5]-1),f=Math.round(d*(i[2]/i[3]))):u<=0&&(u=0,d=i[3]+i[1],f=Math.round(d*(i[2]/i[3])))):\"rm\"==m?(f=i[2]+c,f<1?f=1:f>=rl.currentWinW-i[4]-22-36&&(f=rl.currentWinW-i[4]-22-36)):\"rb\"==m?(f=i[2]+c,f<1?f=1:f>=rl.currentWinW-i[4]-22-36&&(f=rl.currentWinW-i[4]-22-36),d=Math.round(f*(i[3]/i[2])),d<1?(d=1,f=Math.round(d*(i[2]/i[3]))):d>=rl.currentWinH-i[5]-42-6&&(d=rl.currentWinH-i[5]-42-6,f=Math.round(d*(i[2]/i[3])))):\"mt\"==m?(u=o,d=i[3]-s,u>i[3]+i[5]-1?(u=i[3]+i[5]-1,d=i[3]+i[1]-(i[3]+i[5]-1)):u<=0&&(u=0,d=i[3]+i[1])):\"mb\"==m&&(d=i[3]+s,d<1?d=1:d>=rl.currentWinH-i[5]-42-6&&(d=rl.currentWinH-i[5]-42-6));$(\"#luckysheet-modal-dialog-activeImage\").css({width:f,height:d,left:h,top:u});let g=f/p.crop.width,y=d/p.crop.height,v=Math.round(p.default.width*g),b=Math.round(p.default.height*y),k=Math.round(p.crop.offsetLeft*g),w=Math.round(p.crop.offsetTop*y);$(\"#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content\").css({\"background-size\":v+\"px \"+b+\"px\",\"background-position\":-k+\"px \"+-w+\"px\"})}else if(rl.cropChange){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=e[1]+$(\"#luckysheet-cell-main\").scrollTop();if(a<0||l<0)return!1;let r,o,i,s,c=rl.cropChangeXY,u=l-c[1],d=a-c[0],h=rl.images[rl.currentImgId],f=rl.cropChange;\"lt\"==f?(i=h.crop.offsetLeft+d,i<0&&(i=0),i>h.crop.width+h.crop.offsetLeft-1&&(i=h.crop.width+h.crop.offsetLeft-1),r=h.crop.width+h.crop.offsetLeft-i,s=h.crop.offsetTop+u,s<0&&(s=0),s>h.crop.height+h.crop.offsetTop-1&&(s=h.crop.height+h.crop.offsetTop-1),o=h.crop.height+h.crop.offsetTop-s):\"lm\"==f?(i=h.crop.offsetLeft+d,i<0&&(i=0),i>h.crop.width+h.crop.offsetLeft-1&&(i=h.crop.width+h.crop.offsetLeft-1),r=h.crop.width+h.crop.offsetLeft-i,s=h.crop.offsetTop,o=h.crop.height):\"lb\"==f?(i=h.crop.offsetLeft+d,i<0&&(i=0),i>h.crop.width+h.crop.offsetLeft-1&&(i=h.crop.width+h.crop.offsetLeft-1),r=h.crop.width+h.crop.offsetLeft-i,s=h.crop.offsetTop,o=h.crop.height+u,o<1&&(o=1),o>h.default.height-s&&(o=h.default.height-s)):\"rt\"==f?(i=h.crop.offsetLeft,r=h.crop.width+d,r<1&&(r=1),r>h.default.width-i&&(r=h.default.width-i),s=h.crop.offsetTop+u,s<0&&(s=0),s>h.crop.height+h.crop.offsetTop-1&&(s=h.crop.height+h.crop.offsetTop-1),o=h.crop.height+h.crop.offsetTop-s):\"rm\"==f?(i=h.crop.offsetLeft,r=h.crop.width+d,r<1&&(r=1),r>h.default.width-i&&(r=h.default.width-i),s=h.crop.offsetTop,o=h.crop.height):\"rb\"==f?(i=h.crop.offsetLeft,r=h.crop.width+d,r<1&&(r=1),r>h.default.width-i&&(r=h.default.width-i),s=h.crop.offsetTop,o=h.crop.height+u,o<1&&(o=1),o>h.default.height-s&&(o=h.default.height-s)):\"mt\"==f?(i=h.crop.offsetLeft,r=h.crop.width,s=h.crop.offsetTop+u,s<0&&(s=0),s>h.crop.height+h.crop.offsetTop-1&&(s=h.crop.height+h.crop.offsetTop-1),o=h.crop.height+h.crop.offsetTop-s):\"mb\"==f&&(i=h.crop.offsetLeft,r=h.crop.width,s=h.crop.offsetTop,o=h.crop.height+u,o<1&&(o=1),o>h.default.height-s&&(o=h.default.height-s));let m=h.default.left+i,p=h.default.top+s;h.isFixedPos&&(m=h.fixedLeft+i,p=h.fixedTop+s),$(\"#luckysheet-modal-dialog-cropping\").show().css({width:r,height:o,left:m,top:p});let g=t.toJsonOptions&&t.toJsonOptions.imageUrlHandle,y=\"function\"==typeof g?g(h.src):h.src;$(\"#luckysheet-modal-dialog-cropping .cropping-mask\").css({width:h.default.width,height:h.default.height,\"background-image\":\"url(\"+y+\")\",left:-i,top:-s}),$(\"#luckysheet-modal-dialog-cropping .cropping-content\").css({\"background-image\":\"url(\"+y+\")\",\"background-size\":h.default.width+\"px \"+h.default.height+\"px\",\"background-position\":-i+\"px \"+-s+\"px\"}),rl.cropChangeObj={width:r,height:o,offsetLeft:i,offsetTop:s}}else if(vl.move){let e=ta(n.pageX,n.pageY),t=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),a=e[1]+$(\"#luckysheet-cell-main\").scrollTop(),l=vl.currentObj.outerHeight(),r=vl.currentObj.outerWidth(),o=a-vl.moveXY[1],i=t-vl.moveXY[0];o<0&&(o=0),o+l+42+6>vl.currentWinH&&(o=vl.currentWinH-l-42-6),i<0&&(i=0),i+r+22+36>vl.currentWinW&&(i=vl.currentWinW-r-22-36),vl.currentObj.css({left:i,top:o})}else if(vl.resize){let e=ta(n.pageX,n.pageY),t=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),a=e[1]+$(\"#luckysheet-cell-main\").scrollTop();if(t<0||a<0)return!1;let l=vl.resizeXY,r=a-l[1],o=t-l[0],i=l[5],s=l[3],c=l[4],u=l[2],d=vl.resize;(\"lm\"==d||\"lt\"==d||\"lb\"==d)&&(c=t,u=l[2]-o,c>l[2]+l[4]-60?(c=l[2]+l[4]-60,u=l[2]-(l[2]+l[4]-60-l[0])):c<=0&&(c=0,u=l[2]+l[0])),(\"rm\"==d||\"rt\"==d||\"rb\"==d)&&(u=l[2]+o,u<60?u=60:u>=vl.currentWinW-l[4]-22-36&&(u=vl.currentWinW-l[4]-22-36)),(\"mt\"==d||\"lt\"==d||\"rt\"==d)&&(i=a,s=l[3]-r,i>l[3]+l[5]-60?(i=l[3]+l[5]-60,s=l[3]-(l[3]+l[5]-60-l[1])):i<=0&&(i=0,s=l[3]+l[1])),(\"mb\"==d||\"lb\"==d||\"rb\"==d)&&(s=l[3]+r,s<60?s=60:s>=vl.currentWinH-l[5]-42-6&&(s=vl.currentWinH-l[5]-42-6)),vl.currentObj.css({width:u,height:s,left:c,top:i})}else wi.rangeResize?wi.rangeResizeDraging(n,wi.rangeResizeObj,wi.rangeResizexy,wi.rangeResize,wi.rangeResizeWinW,wi.rangeResizeWinH,t.ch_width,t.rh_height):wi.rangeMove?wi.rangeMoveDraging(n,wi.rangeMovexy,wi.rangeMoveObj.data(\"range\"),wi.rangeMoveObj,t.sheetBarHeight,t.statisticBarHeight):t.chart_selection.rangeResize?t.chart_selection.rangeResizeDraging(n,t.sheetBarHeight,t.statisticBarHeight):t.chart_selection.rangeMove&&t.chart_selection.rangeMoveDraging(n,t.sheetBarHeight,t.statisticBarHeight);t.jfautoscrollTimeout=window.requestAnimationFrame(e)};t.luckysheet_select_status&&(clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500)),t.jfautoscrollTimeout=window.requestAnimationFrame(e)}})),$(document).on(\"mouseup.luckysheetEvent\",(function(n){if(e&&e.hook&&e.hook.sheetMouseup){let e=ta(n.pageX,n.pageY),a=e[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=Jn(e[1]+$(\"#luckysheet-cell-main\").scrollTop()),r=l[1],o=l[0],i=l[2],s=ea(a),c=s[1],u=s[0],d=s[2],h=Yu.mergeborer(t.flowdata,i,d);h&&(r=h.row[1],o=h.row[0],i=h.row[2],c=h.column[1],u=h.column[0],d=h.column[2]);let f=ki.getSheetByIndex(),m={functionResizeStatus:wi.functionResizeStatus,horizontalmoveState:!!$l.horizontalmovestate,verticalmoveState:!!$l.verticalmovestate,pivotTableMoveState:!!wr&&wr.movestate,sheetMoveStatus:t.luckysheet_sheet_move_status,scrollStatus:!!t.luckysheet_scroll_status,selectStatus:!!t.luckysheet_select_status,rowsSelectedStatus:!!t.luckysheet_rows_selected_status,colsSelectedStatus:!!t.luckysheet_cols_selected_status,cellSelectedMove:!!t.luckysheet_cell_selected_move,cellSelectedExtend:!!t.luckysheet_cell_selected_extend,colsChangeSize:!!t.luckysheet_cols_change_size,rowsChangeSize:!!t.luckysheet_rows_change_size,chartMove:!!t.chartparam.luckysheetCurrentChartMove,chartResize:!!t.chartparam.luckysheetCurrentChartResize,rangeResize:!!wi.rangeResize,rangeMove:!!wi.rangeMove},p=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\");yl.createHookFunction(\"sheetMouseup\",t.flowdata[i][d],{r:i,c:d,start_r:o,start_c:u,end_r:r,end_c:c},f,m,p)}if(t.luckysheet_select_status&&(clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),0),Yu.luckysheetPaintModelOn&&(wo.pasteHandlerOfPaintModel(t.luckysheet_copy_save),Yu.luckysheetPaintSingle&&Yu.cancelPaintModel())),t.luckysheet_select_status=!1,window.cancelAnimationFrame(t.jfautoscrollTimeout),t.luckysheet_scroll_status=!1,$(\"#luckysheet-cell-selected\").find(\".luckysheet-cs-fillhandle\").css(\"cursor\",\"crosshair\").end().find(\".luckysheet-cs-draghandle\").css(\"cursor\",\"move\"),$(\"#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0\").css(\"cursor\",\"default\"),t.luckysheet_rows_selected_status=!1,t.luckysheet_cols_selected_status=!1,t.luckysheet_model_move_state=!1,wi.functionResizeStatus&&(wi.functionResizeStatus=!1,$(\"#luckysheet-wa-calculate-size\").removeAttr(\"style\")),$l.horizontalmovestate&&($l.horizontalmovestate=!1,$(\"#luckysheet-freezebar-horizontal\").removeClass(\"luckysheet-freezebar-active\"),$(\"#luckysheet-freezebar-horizontal\").find(\".luckysheet-freezebar-horizontal-handle\").css(\"cursor\",\"-webkit-grab\"),$l.freezenhorizontaldata[4]<=t.columnHeaderHeight&&$l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo()),$l.verticalmovestate&&($l.verticalmovestate=!1,$(\"#luckysheet-freezebar-vertical\").removeClass(\"luckysheet-freezebar-active\"),$(\"#luckysheet-freezebar-vertical\").find(\".luckysheet-freezebar-vertical-handle\").css(\"cursor\",\"-webkit-grab\"),$l.freezenverticaldata[4]<=t.rowHeaderWidth&&$l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),!!wr&&wr.movestate&&($(\"#luckysheet-modal-dialog-slider-pivot-move\").remove(),wr.movestate=!1,$(\"#luckysheet-modal-dialog-pivotTable-list, #luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").css(\"cursor\",\"default\"),\"luckysheet-modal-dialog-pivotTable-list\"!=wr.movesave.containerid&&0==$(n.target).closest(\".luckysheet-modal-dialog-slider-config-list\").length&&(\"luckysheet-modal-dialog-config-value\"==wr.movesave.containerid&&wr.resetOrderby(wr.movesave.obj),wr.movesave.obj.remove(),wr.showvaluecolrow(),$(\"#luckysheet-modal-dialog-pivotTable-list\").find(\".luckysheet-modal-dialog-slider-list-item\").each((function(){$(this).find(\".luckysheet-slider-list-item-selected\").find(\"i\").remove()})),$(\"#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value\").find(\".luckysheet-modal-dialog-slider-config-item\").each((function(){let e=$(this).data(\"index\");$(\"#luckysheet-modal-dialog-pivotTable-list\").find(\".luckysheet-modal-dialog-slider-list-item\").each((function(){let t=$(this).find(\".luckysheet-slider-list-item-selected\");$(this).data(\"index\")==e&&0==t.find(\"i\").length&&t.append('<i class=\"fa fa-check luckysheet-mousedown-cancel\"></i>')}))})),wr.refreshPivotTable())),t.luckysheet_sheet_move_status&&(t.luckysheet_sheet_move_status=!1,t.luckysheet_sheet_move_data.activeobject.insertBefore($(\"#luckysheet-sheets-item-clone\")),t.luckysheet_sheet_move_data.activeobject.removeAttr(\"style\"),$(\"#luckysheet-sheets-item-clone\").remove(),t.luckysheet_sheet_move_data.cursorobject.css({cursor:\"pointer\"}),t.luckysheet_sheet_move_data={},ki.reOrderAllSheet()),clearTimeout(t.chartparam.luckysheetCurrentChartMoveTimeout),t.chartparam.luckysheetCurrentChartMove&&(t.chartparam.luckysheetCurrentChartMove=!1,t.chartparam.luckysheetInsertChartTosheetChange)){var a=t.chartparam.luckysheetCurrentChartMoveObj.css(\"top\"),r=t.chartparam.luckysheetCurrentChartMoveObj.css(\"left\"),o=$(\"#luckysheet-cell-main\").scrollLeft(),i=$(\"#luckysheet-cell-main\").scrollTop(),s=t.chartparam.luckysheetCurrentChartMoveXy[2],c=t.chartparam.luckysheetCurrentChartMoveXy[3],u=t.chartparam.luckysheetCurrentChartMoveXy[4],d=t.chartparam.luckysheetCurrentChartMoveXy[5],h=t.chartparam.luckysheetCurrentChartMoveObj.find(\".luckysheet-modal-dialog-content\").attr(\"id\");t.jfredo.push({type:\"moveChart\",chart_id:h,sheetIndex:t.currentSheetIndex,myTop:a,myLeft:r,scrollTop:i,scrollLeft:o,x:s,y:c,scrollTop1:d,scrollLeft1:u})}if(t.chartparam.luckysheetCurrentChartResize&&(t.chartparam.luckysheetCurrentChartResize=null,t.chartparam.luckysheetInsertChartTosheetChange)){var f=t.chartparam.luckysheetCurrentChartResizeObj.height(),m=t.chartparam.luckysheetCurrentChartResizeObj.width(),p=(o=$(\"#luckysheet-cell-main\").scrollLeft(),i=$(\"#luckysheet-cell-main\").scrollTop(),a=t.chartparam.luckysheetCurrentChartMoveObj.css(\"top\"),r=t.chartparam.luckysheetCurrentChartMoveObj.css(\"left\"),h=t.chartparam.luckysheetCurrentChartResizeObj.find(\".luckysheet-modal-dialog-content\").attr(\"id\"),t.chartparam.luckysheetCurrentChartResizeXy[2]),g=t.chartparam.luckysheetCurrentChartResizeXy[3];s=t.chartparam.luckysheetCurrentChartResizeXy[4],c=t.chartparam.luckysheetCurrentChartResizeXy[5],u=t.chartparam.luckysheetCurrentChartResizeXy[6],d=t.chartparam.luckysheetCurrentChartResizeXy[7];t.jfredo.push({type:\"resizeChart\",chart_id:h,sheetIndex:t.currentSheetIndex,myTop:a,myLeft:r,myHeight:f,myWidth:m,scrollTop:i,scrollLeft:o,x:s,y:c,myWidth1:p,myHeight1:g,scrollTop1:d,scrollLeft1:u})}if(wi.rangeResize&&wi.rangeResizeDragged(n,wi.rangeResizeObj,wi.rangeResize,wi.rangeResizexy,wi.rangeResizeWinW,wi.rangeResizeWinH),rl.move&&rl.moveImgItem(),rl.resize&&rl.resizeImgItem(),rl.cropChange&&rl.cropChangeImgItem(),vl.move){vl.move=!1;let e=vl.currentObj.closest(\".luckysheet-postil-show\").attr(\"id\"),n=e.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],a=e.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],l=mn.deepCopyFlowData(t.flowdata),r=[];l[n][a].ps.left=vl.currentObj.position().left,l[n][a].ps.top=vl.currentObj.position().top,l[n][a].ps.value=vl.currentObj.find(\".formulaInputFocus\").html().replaceAll(\"<div>\",\"\\n\").replaceAll(/<(.*)>.*?|<(.*) \\/>/g,\"\").trim(),r.push(n+\"_\"+a),vl.ref(l,r),$(\"#\"+e).remove(),l[n][a].ps.isshow?(vl.buildPs(n,a,l[n][a].ps),$(\"#\"+e).addClass(\"luckysheet-postil-show-active\"),$(\"#\"+e).find(\".luckysheet-postil-dialog-resize\").show()):vl.editPs(n,a)}if(vl.resize){vl.resize=null;let e=vl.currentObj.closest(\".luckysheet-postil-show\").attr(\"id\"),n=e.split(\"luckysheet-postil-show_\")[1].split(\"_\")[0],a=e.split(\"luckysheet-postil-show_\")[1].split(\"_\")[1],l=mn.deepCopyFlowData(t.flowdata),r=[];l[n][a].ps.left=vl.currentObj.position().left,l[n][a].ps.top=vl.currentObj.position().top,l[n][a].ps.width=vl.currentObj.outerWidth(),l[n][a].ps.height=vl.currentObj.outerHeight(),l[n][a].ps.value=vl.currentObj.find(\".formulaInputFocus\").html().replaceAll(\"<div>\",\"\\n\").replaceAll(/<(.*)>.*?|<(.*) \\/>/g,\"\").trim(),r.push(n+\"_\"+a),vl.ref(l,r),$(\"#\"+e).remove(),l[n][a].ps.isshow?(vl.buildPs(n,a,l[n][a].ps),$(\"#\"+e).addClass(\"luckysheet-postil-show-active\"),$(\"#\"+e).find(\".luckysheet-postil-dialog-resize\").show()):vl.editPs(n,a)}if(t.luckysheet_rows_change_size){t.luckysheet_rows_change_size=!1,$(\"#luckysheet-change-size-line\").hide(),$(\"#luckysheet-rows-change-size\").css(\"opacity\",0),$(\"#luckysheet-sheettable, #luckysheet-rows-h, #luckysheet-rows-h canvas\").css(\"cursor\",\"default\");let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-rows-h\").scrollTop(),l=e[1]+a,r=$(window).height(),o=Jn(l),i=(o[1],o[0],o[2],l+3-t.luckysheet_rows_change_size_start[0]);l+3-t.luckysheet_rows_change_size_start[0]<19&&(i=19),l>=r-200+a&&(i=r-200-t.luckysheet_rows_change_size_start[0]+a);let s=$.extend(!0,{},t.config);null==s.rowlen&&(s.rowlen={}),null==s.customHeight&&(s.customHeight={}),s.customHeight[t.luckysheet_rows_change_size_start[1]]=1;let c=t.luckysheet_rows_change_size_start[1],u=!1;t.luckysheet_select_save.length>0&&t.luckysheet_select_save.filter((e=>e.row_select)).some((e=>(c>=e.row[0]&&c<=e.row[1]&&(u=!0),u))),u?t.luckysheet_select_save.filter((e=>e.row_select)).forEach((e=>{for(let n=e.row[0];n<=e.row[1];n++)s.rowlen[n]=Math.ceil(i/t.zoomRatio)})):s.rowlen[t.luckysheet_rows_change_size_start[1]]=Math.ceil(i/t.zoomRatio);let d=rl.moveChangeSize(\"row\",t.luckysheet_rows_change_size_start[1],i);t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"resize\",ctrlType:\"resizeR\",sheetIndex:t.currentSheetIndex,config:$.extend(!0,{},t.config),curconfig:$.extend(!0,{},s),images:$.extend(!0,{},rl.images),curImages:$.extend(!0,{},d)})),t.config=s,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,s.rowlen,{k:\"rowlen\"}),t.luckysheetfile[Mt(t.currentSheetIndex)].images=d,yo.saveParam(\"all\",t.currentSheetIndex,d,{k:\"images\"}),rl.images=d,rl.allImagesShow(),co(t.flowdata.length,null)}if(t.luckysheet_cols_change_size){t.luckysheet_cols_change_size=!1,$(\"#luckysheet-change-size-line\").hide(),$(\"#luckysheet-cols-change-size\").css(\"opacity\",0),$(\"#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas\").css(\"cursor\",\"default\");let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cols-h-c\").scrollLeft(),l=e[0]+a,r=$(window).width(),o=t.visibledatarow.length-1,i=(t.visibledatarow[o],ea(l)),s=(i[1],i[0],i[2],l+3-t.luckysheet_cols_change_size_start[0]),c=t.defaultcollen;if(null!=t.config.columnlen&&null!=t.config.columnlen[t.luckysheet_cols_change_size_start[1]]&&(c=t.config.columnlen[t.luckysheet_cols_change_size_start[1]]),Math.abs(s-c)<3)return;l+3-t.luckysheet_cols_change_size_start[0]<30&&(s=30),l>=r-100+a&&(s=r-100-t.luckysheet_cols_change_size_start[0]+a);let u=$.extend(!0,{},t.config);null==u.columnlen&&(u.columnlen={}),null==u.customWidth&&(u.customWidth={}),u.customWidth[t.luckysheet_cols_change_size_start[1]]=1;let d=t.luckysheet_cols_change_size_start[1],h=!1;t.luckysheet_select_save.length>0&&t.luckysheet_select_save.filter((e=>e.column_select)).some((e=>(d>=e.column[0]&&d<=e.column[1]&&(h=!0),h))),h?t.luckysheet_select_save.filter((e=>e.column_select)).forEach((e=>{for(let n=e.column[0];n<=e.column[1];n++)u.columnlen[n]=Math.ceil(s/t.zoomRatio)})):u.columnlen[t.luckysheet_cols_change_size_start[1]]=Math.ceil(s/t.zoomRatio);let f=rl.moveChangeSize(\"column\",t.luckysheet_cols_change_size_start[1],s);t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"resize\",ctrlType:\"resizeC\",sheetIndex:t.currentSheetIndex,config:$.extend(!0,{},t.config),curconfig:$.extend(!0,{},u),images:$.extend(!0,{},rl.images),curImages:$.extend(!0,{},f)})),t.config=u,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,u.columnlen,{k:\"columnlen\"}),t.luckysheetfile[Mt(t.currentSheetIndex)].images=f,yo.saveParam(\"all\",t.currentSheetIndex,f,{k:\"images\"}),rl.images=f,rl.allImagesShow(),co(null,t.flowdata[0].length),setTimeout((function(){uo()}),1)}if(wi.rangeMove&&wi.rangeMoveDragged(wi.rangeMoveObj),t.luckysheet_cell_selected_move){$(\"#luckysheet-cell-selected-move\").hide(),t.luckysheet_cell_selected_move=!1;let e=ta(n.pageX,n.pageY);if(!Xl(t.luckysheet_select_save,t.currentSheetIndex))return;let a=$(\"#luckysheet-cell-main\").scrollLeft(),r=$(\"#luckysheet-cell-main\").scrollTop(),o=e[0]+a,i=e[1]+r,s=$(window).height()+r-t.sheetBarHeight-t.statisticBarHeight,c=$(window).width()+a,u=Jn(i)[2],d=ea(o)[2],h=t.luckysheet_cell_selected_move_index[0],f=t.luckysheet_cell_selected_move_index[1];if(u==h&&d==f)return;let m=mn.deepCopyFlowData(t.flowdata),p=t.luckysheet_select_save[t.luckysheet_select_save.length-1],g=Ln(p),y=$.extend(!0,{},t.config);if(null==y.merge&&(y.merge={}),null==y.rowlen&&(y.rowlen={}),A(y,p.row[0],p.row[1],p.column[0],p.column[1]))return void(I()?alert(l.noMerge):vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',l.noMerge));let v=p.row[0]-h+u,b=p.row[1]-h+u,k=p.column[0]-f+d,w=p.column[1]-f+d;if(!Xl([{row:[v,b],column:[k,w]}],t.currentSheetIndex))return;if((v<0||i<0)&&(v=0,b=p.row[1]-p.row[0]),(k<0||o<0)&&(k=0,w=p.column[1]-p.column[0]),(b>=t.visibledatarow[t.visibledatarow.length-1]||i>s)&&(v=t.visibledatarow.length-1-p.row[1]+p.row[0],b=t.visibledatarow.length-1),(w>=t.visibledatacolumn[t.visibledatacolumn.length-1]||o>c)&&(k=t.visibledatacolumn.length-1-p.column[1]+p.column[0],w=t.visibledatacolumn.length-1),A(y,v,b,k,w))return void(I()?alert(l.noMerge):vo.info('<i class=\"fa fa-exclamation-triangle\"></i>',l.noMerge));let x=_l(t.currentSheetIndex),_=null;for(let e=p.row[0];e<=p.row[1];e++){e in y.rowlen&&(_=!0);for(let t=p.column[0];t<=p.column[1];t++){let n=m[e][t];\"object\"==ad(n)&&\"mc\"in n&&n.mc.r+\"_\"+n.mc.c in y.merge&&delete y.merge[n.mc.r+\"_\"+n.mc.c],m[e][t]=null}}if(y.borderInfo&&y.borderInfo.length>0){let e=[];for(let t=0;t<y.borderInfo.length;t++){let n=y.borderInfo[t].rangeType;if(\"range\"==n){let n=y.borderInfo[t].range,a=[];for(let e=0;e<n.length;e++)a=a.concat(ko.CFSplitRange(n[e],{row:p.row,column:p.column},{row:[v,b],column:[k,w]},\"restPart\"));y.borderInfo[t].range=a,e.push(y.borderInfo[t])}else if(\"cell\"==n){let n=y.borderInfo[t].value.row_index,a=y.borderInfo[t].value.col_index;n>=p.row[0]&&n<=p.row[1]&&a>=p.column[0]&&a<=p.column[1]||e.push(y.borderInfo[t])}}y.borderInfo=e}let C={};for(let e=0;e<g.length;e++)for(let t=0;t<g[0].length;t++){if(x[e+p.row[0]+\"_\"+(t+p.column[0])]){let n={rangeType:\"cell\",value:{row_index:e+v,col_index:t+k,l:x[e+p.row[0]+\"_\"+(t+p.column[0])].l,r:x[e+p.row[0]+\"_\"+(t+p.column[0])].r,t:x[e+p.row[0]+\"_\"+(t+p.column[0])].t,b:x[e+p.row[0]+\"_\"+(t+p.column[0])].b}};null==y.borderInfo&&(y.borderInfo=[]),y.borderInfo.push(n)}let n=\"\";if(null!=g[e]&&null!=g[e][t]&&(n=g[e][t]),\"object\"==ad(n)&&\"mc\"in n){let a=$.extend(!0,{},n.mc);\"rs\"in n.mc?(C[a.r+\"_\"+a.c]=[e+v,t+k],n.mc.r=e+v,n.mc.c=t+k,y.merge[e+v+\"_\"+(t+k)]=n.mc):(n.mc.r=C[a.r+\"_\"+a.c][0],n.mc.c=C[a.r+\"_\"+a.c][1])}m[e+v][t+k]=n}_&&(y=aa(m,p.row[0],p.row[1],y),y=aa(m,v,b,y));let T,S,R=$.extend(!0,[],t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save);if(null!=R&&R.length>0)for(let e=0;e<R.length;e++){let t=R[e].cellrange,n=[];for(let e=0;e<t.length;e++){let a=ko.CFSplitRange(t[e],{row:p.row,column:p.column},{row:[v,b],column:[k,w]},\"allPart\");n=n.concat(a)}R[e].cellrange=n}T=t.luckysheet_select_save[0].row_focus==t.luckysheet_select_save[0].row[0]?v:b,S=t.luckysheet_select_save[0].column_focus==t.luckysheet_select_save[0].column[0]?k:w;let D=[];D.push({row:p.row,column:p.column}),D.push({row:[v,b],column:[k,w]}),p.row=[v,b],p.column=[k,w],p.row_focus=T,p.column_focus=S,ao(m,D,{cfg:y,RowlChange:_,cdformat:R}),Pu(),$(\"#luckysheet-sheettable\").css(\"cursor\",\"default\"),clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500)}if(t.chart_selection.rangeMove&&t.chart_selection.rangeMoveDragged(),t.chart_selection.rangeResize&&t.chart_selection.rangeResizeDragged(),t.luckysheet_cell_selected_extend){if(t.luckysheet_cell_selected_extend=!1,$(\"#luckysheet-cell-selected-extend\").hide(),!Xl(t.luckysheet_select_save,t.currentSheetIndex))return;let e=ta(n.pageX,n.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft(),r=$(\"#luckysheet-cell-main\").scrollTop(),o=e[0]+a-5,i=e[1]+r-5,s=$(window).height()+r-t.sheetBarHeight-t.statisticBarHeight,c=$(window).width()+a,u=Jn(i),d=(u[1],u[0]),h=u[2],f=ea(o),m=(f[1],f[0]),p=f[2],g=t.luckysheet_cell_selected_extend_index[0],y=t.luckysheet_cell_selected_extend_index[1],v=t.luckysheet_select_save[t.luckysheet_select_save.length-1],b=v.row[0],k=v.row[1],w=v.column[0],x=v.column[1];(b<0||i<0)&&(b=0,k=v.row[1]-v.row[0]),(w<0||o<0)&&(w=0,x=v.column[1]-v.column[0]),(k>=t.visibledatarow[t.visibledatarow.length-1]||i>s)&&(b=t.visibledatarow.length-1-v.row[1]+v.row[0],k=t.visibledatarow.length-1),(x>=t.visibledatacolumn[t.visibledatacolumn.length-1]||o>c)&&(w=t.visibledatacolumn.length-1-v.column[1]+v.column[0],x=t.visibledatacolumn.length-1),Tl.copyRange={row:$.extend(!0,[],v.row),column:$.extend(!0,[],v.column)};let _=Tl.typeItemHide();if(_[0]||_[1]||_[2]||_[3]||_[4]||_[5]||_[6]?Tl.applyType=\"1\":Tl.applyType=\"0\",Math.abs(g-h)>Math.abs(y-p)){if(h>=b&&h<=k)return;if(t.luckysheet_select_save[0].top_move>=d){if(Tl.applyRange={row:[h,v.row[0]-1],column:v.column},Tl.direction=\"up\",b-=v.row[0]-h,wr.isPivotRange(b,x))return void vo.info(l.affectPivot,\"\")}else if(Tl.applyRange={row:[v.row[1]+1,h],column:v.column},Tl.direction=\"down\",k+=h-v.row[1],wr.isPivotRange(k,x))return void vo.info(l.affectPivot,\"\")}else{if(p>=w&&p<=x)return;if(t.luckysheet_select_save[0].left_move>=m){if(Tl.applyRange={row:v.row,column:[p,v.column[0]-1]},Tl.direction=\"left\",w-=v.column[0]-p,wr.isPivotRange(k,w))return void vo.info(l.affectPivot,\"\")}else if(Tl.applyRange={row:v.row,column:[v.column[1]+1,p]},Tl.direction=\"right\",x+=p-v.column[1],wr.isPivotRange(k,x))return void vo.info(l.affectPivot,\"\")}if(null!=t.config.merge){let e=!1;for(let n=v.row[0];n<=v.row[1];n++)for(let a=v.column[0];a<=v.column[1];a++){let l=t.flowdata[n][a];if(null!=l&&null!=l.mc){e=!0;break}}if(e)return void(I()?alert(l.noMerge):vo.info(l.noMerge,\"\"));for(let n=b;n<=k;n++)for(let a=w;a<=x;a++){let l=t.flowdata[n][a];if(null!=l&&null!=l.mc){e=!0;break}}if(e)return void(I()?alert(l.noMerge):vo.info(l.noMerge,\"\"))}v.row=[b,k],v.column=[w,x],Tl.update(),Tl.createIcon(),$(\"#luckysheet-cell-selected-move\").hide(),$(\"#luckysheet-sheettable\").css(\"cursor\",\"default\"),clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500)}})),$(\".luckysheet-grid-container, #luckysheet-rightclick-menu\").on(\"contextmenu\",(function(e){e.preventDefault()})),$(\"#luckysheet-cell-main div.luckysheet-cs-draghandle\").mousedown((function(e){if(I()||!1===t.allowEdit)return;$(\"#luckysheet-cell-selected\").find(\".luckysheet-cs-fillhandle\").css(\"cursor\",\"move\").end().find(\".luckysheet-cs-draghandle\").css(\"cursor\",\"move\"),$(\"#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0\").css(\"cursor\",\"move\"),t.luckysheet_cell_selected_move=!0,t.luckysheet_scroll_status=!0;let n=ta(e.pageX,e.pageY),a=n[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=Jn(n[1]+$(\"#luckysheet-cell-main\").scrollTop()),r=l[0],o=l[1],i=l[2],s=ea(a),c=s[0],u=s[1],d=s[2];t.luckysheet_cell_selected_move_index=[i,d],$(\"#luckysheet-cell-selected-move\").css({left:c,width:u-c-1,top:r,height:o-r-1,display:\"block\"}),e.stopPropagation()})),$(\"#luckysheet-cell-main div.luckysheet-cs-fillhandle\").mousedown((function(e){I()||!1===t.allowEdit||($(\"#luckysheet-cell-selected\").find(\".luckysheet-cs-fillhandle\").css(\"cursor\",\"crosshair\").end().find(\".luckysheet-cs-draghandle\").css(\"cursor\",\"crosshair\"),$(\"#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0\").css(\"cursor\",\"crosshair\"),t.luckysheet_cell_selected_extend_time=setTimeout((function(){t.luckysheet_cell_selected_extend=!0,t.luckysheet_scroll_status=!0;let n=ta(e.pageX,e.pageY),a=n[0]+$(\"#luckysheet-cell-main\").scrollLeft()-5,l=Jn(n[1]+$(\"#luckysheet-cell-main\").scrollTop()-5),r=l[0],o=l[1],i=l[2],s=ea(a),c=s[0],u=s[1],d=s[2];t.luckysheet_cell_selected_extend_index=[i,d],$(\"#luckysheet-cell-selected-extend\").css({left:c,width:u-c-1,top:r,height:o-r-1,display:\"block\"})}),100),e.stopPropagation())})).click((function(){clearTimeout(t.luckysheet_cell_selected_extend_time),event.stopPropagation()})).dblclick((function(){let e=t.luckysheet_select_save[0],n=e.row[0],a=e.row[1],l=e.column[0],r=e.column[1];if(wr.isPivotRange(n,l))return;let o=!1,i=0;for(let e=a+1;e<t.flowdata.length;e++)if(l-1>=0&&r+1<t.flowdata[0].length){let n=t.flowdata[e][l-1],s=t.flowdata[e][r+1];if(e==a+1){if((null==n||_(n.v))&&(null==s||_(s.v))){o=!1;break}o=!0,i++}else{if((null==n||_(n.v))&&(null==s||_(s.v)))break;i++}}else if(l-1>=0){let n=t.flowdata[e][l-1];if(e==a+1){if(null==n||_(n.v)){o=!1;break}o=!0,i++}else{if(null==n||_(n.v))break;i++}}else if(r+1<t.flowdata[0].length){let n=t.flowdata[e][r+1];if(e==a+1){if(null==n||_(n.v)){o=!1;break}o=!0,i++}else{if(null==n||_(n.v))break;i++}}if(!o||0==i)return void event.stopPropagation();Tl.copyRange={row:[n,a],column:[l,r]};let s=Tl.typeItemHide();s[0]||s[1]||s[2]||s[3]||s[4]||s[5]||s[6]?Tl.applyType=\"1\":Tl.applyType=\"0\",Tl.applyRange={row:[a+1,a+i],column:[l,r]},Tl.direction=\"down\",t.luckysheet_select_save=[{row:[n,a+i],column:[l,r]}],Tl.update(),Tl.createIcon(),$(\"#luckysheet-cell-selected-move\").hide(),$(\"#luckysheet-sheettable\").css(\"cursor\",\"default\"),clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500),event.stopPropagation()})),$(\"#luckysheet-bottom-add-row, #luckysheet-bottom-add-row-input, #luckysheet-bottom-return-top\").on(\"mousedown dblclick mouseup\",(function(e){e.stopPropagation()})),$(\"#luckysheet-bottom-add-row\").on(\"click\",(function(n){$(\"#luckysheet-rightclick-menu\").hide(),fd();$(this);let a=$(\"#luckysheet-bottom-add-row-input\").val();\"\"==a&&(a=e.addRowCount||100),isNaN(parseInt(a))?I()?alert(r.tipInputNumber):vo.info(\"error\",r.tipInputNumber):(a=parseInt(a),a<1||a>100?I()?alert(r.tipInputNumberLimit):vo.info(\"error\",r.tipInputNumberLimit):ul(\"row\",t.flowdata.length-1,a))})),$(\"#luckysheet-bottom-return-top\").on(\"click\",(function(e){$(\"#luckysheet-scrollbar-y\").scrollTop(0)})),$(\"#luckysheet-copy-btn, #luckysheet-cols-copy-btn, #luckysheet-paste-btn-title\").click((function(e){if($(this).parent().hide(),null!=t.config.merge){let e=!1;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].row[0],l=t.luckysheet_select_save[n].row[1],r=t.luckysheet_select_save[n].column[0],o=t.luckysheet_select_save[n].column[1];if(e=A(t.config,a,l,r,o),e)break}if(e)return void(I()?alert(l.noPartMerge):vo.info(l.noPartMerge,\"\"))}let n=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save;if(t.luckysheet_select_save.length>1&&null!=n&&n.length>0){let e=!1,n=ko.getComputeMap();e:for(let a=0;a<t.luckysheet_select_save.length&&!e;a++){let l=t.luckysheet_select_save[a].row[0],r=t.luckysheet_select_save[a].row[1],o=t.luckysheet_select_save[a].column[0],i=t.luckysheet_select_save[a].column[1];for(let t=l;t<=r;t++)for(let a=o;a<=i;a++)if(null!=ko.checksCF(t,a,n)){e=!0;continue e}}if(e)return void(I()?alert(l.noMulti):vo.info(l.noMulti,\"\"))}if(t.luckysheet_select_save.length>1){let e=!0,n=t.luckysheet_select_save[0].row[0],a=t.luckysheet_select_save[0].row[1],r=!0,o=t.luckysheet_select_save[0].column[0],i=t.luckysheet_select_save[0].column[1];for(let l=1;l<t.luckysheet_select_save.length;l++)(t.luckysheet_select_save[l].row[0]!=n||t.luckysheet_select_save[l].row[1]!=a)&&(e=!1),(t.luckysheet_select_save[l].column[0]!=o||t.luckysheet_select_save[l].column[1]!=i)&&(r=!1);if(!e&&!r||Ou())return void(I()?alert(l.noMulti):vo.info(l.noMulti,\"\"))}wo.copy(e)})),$(\"#luckysheet-copy-paste, #luckysheet-cols-paste-btn, #luckysheet-paste-btn-title\").click((function(e){wo.paste(e,\"btn\"),$(this).parent().hide()})),$(\"#luckysheet-chart-btn-title\").click((function(){ei()})),$(\"#luckysheetdatavisual\").click((function(){ei(),$(\"#luckysheet-rightclick-menu\").hide()})),$(\"#luckysheet-pivot-btn-title\").click((function(e){!Ql(t.currentSheetIndex,\"usePivotTablereports\")||wr.createPivotTable(e)})),$(\"#luckysheet-chart-btn-screenshot\").click((function(){let e=a.screenshot;if(0==t.luckysheet_select_save.length)return void(I()?alert(e.screenshotTipNoSelection):vo.info(e.screenshotTipTitle,e.screenshotTipNoSelection));if(t.luckysheet_select_save.length>1)return void(I()?alert(e.screenshotTipHasMulti):vo.info(e.screenshotTipTitle,e.screenshotTipHasMulti));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.screenshotTipHasMerge):vo.info(e.screenshotTipTitle,e.screenshotTipHasMerge))}let n,l,r,o,i=t.luckysheet_select_save[0].row[0],s=t.luckysheet_select_save[0].row[1],c=t.luckysheet_select_save[0].column[0],u=t.luckysheet_select_save[0].column[1];i-1<0?(n=0,l=t.visibledatarow[s]):(n=t.visibledatarow[i-1],l=t.visibledatarow[s]-t.visibledatarow[i-1]),c-1<0?(r=0,o=t.visibledatacolumn[u]):(r=t.visibledatacolumn[c-1],o=t.visibledatacolumn[u]-t.visibledatacolumn[c-1]);let d=$(\"<canvas>\").attr({width:Math.ceil(o*t.devicePixelRatio),height:Math.ceil(l*t.devicePixelRatio)}).css({width:o,height:l});jr(r,n,o,l,1,1,null,null,d);let h=d.get(0).getContext(\"2d\");h.beginPath(),h.moveTo(0,0),h.lineTo(0,t.devicePixelRatio*l),h.lineWidth=2*t.devicePixelRatio,h.strokeStyle=Rt.strokeStyle,h.stroke(),h.closePath(),h.beginPath(),h.moveTo(0,0),h.lineTo(t.devicePixelRatio*o,0),h.lineWidth=2*t.devicePixelRatio,h.strokeStyle=Rt.strokeStyle,h.stroke(),h.closePath();let f=new Image,m=d.get(0).toDataURL(\"image/png\");f.src=m,o>l?f.style.width=\"100%\":f.style.height=\"100%\";let p=$(window).height()-200;vo.screenshot(e.screenshotTipSuccess,'<div id=\"luckysheet-confirm-screenshot-save\" style=\"height:'+p+'px;overflow:auto;\"></div>',m),$(\"#luckysheet-confirm-screenshot-save\").append(f),d.remove()})),$(document).on(\"click.luckysheetEvent\",\"a.download\",(function(){let e=$(\"#luckysheet-confirm-screenshot-save img\").attr(\"src\"),t=a.screenshot,n=atob(e.split(\",\")[1]),l=n.length,r=new Uint8Array(l);for(let e=0;e<l;e++)r[e]=n.charCodeAt(e);let o,i=new Blob([r]),s=document.createElement(\"a\");s.setAttribute(\"href\",URL.createObjectURL(i)),s.setAttribute(\"download\",t.screenshotImageName+\".png\"),s.style.display=\"none\",document.body.appendChild(s),s.click(),s.addEventListener(\"click\",o=function(){requestAnimationFrame((function(){URL.revokeObjectURL(s.href)})),s.removeAttribute(\"href\"),s.removeEventListener(\"click\",o)}),document.body.removeChild(s)})),$(\"#luckysheet-splitColumn-btn-title\").click((function(){if(!Gl(t.currentSheetIndex)||null==t.luckysheet_select_save||0==t.luckysheet_select_save.length)return;let e=a.splitText;t.luckysheet_select_save.length>1?vo.info(e.tipNoMulti,\"\"):t.luckysheet_select_save[0].column[0]==t.luckysheet_select_save[0].column[1]?(Cd.createDialog(),Cd.init()):vo.info(e.tipNoMultiColumn,\"\")})),$(\"#luckysheet-insertImg-btn-title\").click((function(){R()?!Ql(t.currentSheetIndex,\"editObjects\")||$(\"#luckysheet-imgUpload\").click():vo.info(\"\",X().pivotTable.errorNotAllowEdit)})),$(\"#luckysheetInsertImage\").click((function(){!Ql(t.currentSheetIndex,\"editObjects\")||($(\"#luckysheet-imgUpload\").click(),$(\"#luckysheet-rightclick-menu\").hide())})),$(\"#luckysheet-imgUpload\").click((function(e){e.stopPropagation()})),$(\"#luckysheet-imgUpload\").on(\"change\",(function(e){if(!Ql(t.currentSheetIndex,\"editObjects\",!1))return;let n=e.currentTarget.files[0];rl.insertImg(n)})),$(\"#luckysheet-insertLink-btn-title\").click((function(){R()||vo.info(\"\",X().pivotTable.errorNotAllowEdit),Gl(t.currentSheetIndex)&&(Qr.createDialog(),Qr.init())})),$(\"#luckysheetInsertLink\").click((function(){$(\"#luckysheet-insertLink-btn-title\").click(),$(\"#luckysheet-rightclick-menu\").hide()})),$(\"#luckysheet-dataVerification-btn-title\").click((function(){!Gl(t.currentSheetIndex)||null==t.luckysheet_select_save||0==t.luckysheet_select_save.length||(sl.createDialog(),sl.init())})),$(\"#luckysheetDataVerification\").click((function(){$(\"#luckysheet-dataVerification-btn-title\").click(),$(\"#luckysheet-rightclick-menu\").hide()})),$(\"#luckysheetCellFormatRightClickMenu\").click((function(){!function(){Id();let e=X(),n=e.cellFormat;if(e.button,$(\"#luckysheet-rightclick-menu\").hide(),!Gl(t.currentSheetIndex))return;let a=!1,l=!1,r=0,o=0,i=0;if(!(null!=t.luckysheet_select_save&&t.luckysheet_select_save.length>0))return void alert(n.selectionIsNullAlert);$d((function(e){(null==e||null==e.lo||1==e.lo)&&(a=!0,r++),null!=e&&1==e.hi&&(l=!0,o++),i++}),(function(){a=!0}));let s=\"\",c=\"\";a&&(s=r==i?n.tipsAll:n.tipsPart),l&&(c=o==i?n.tipsAll:n.tipsPart),$(\"#luckysheet-protection-check-locked\").prop(\"checked\",a).parent().next().html(s),$(\"#luckysheet-protection-check-hidden\").prop(\"checked\",l).parent().next().html(c),vd(\"luckysheet-cellFormat-config\")}()})),$(\"#luckysheetResetCustomHeight\").click((function(e){let n=t.luckysheet_select_save.map((e=>e.row));if(0===n.length)return void console.log(\"No rows selected to reset.\");let a=$.extend(!0,{},t.config);a.customHeight&&n.forEach((e=>{for(let t=e[0];t<=e[1];t++)delete a.customHeight[t]})),t.config=a,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,a.customHeight,{k:\"customHeight\"}),$(\"#luckysheet-rightclick-menu\").hide(),co(t.flowdata.length,null)})),$(\"#luckysheetResetDefault\").click((function(e){let n=t.luckysheet_select_save.map((e=>e.row));if(0===n.length)return void console.log(\"No rows selected to reset.\");let a=$.extend(!0,{},t.config);a.customHeight&&n.forEach((e=>{for(let n=e[0];n<=e[1];n++)delete a.customHeight[n],a.rowlen&&a.rowlen[n]&&(a.rowlen[n]=t.defaultrowlen)})),t.config=a,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,a.customHeight,{k:\"customHeight\"}),$(\"#luckysheet-rightclick-menu\").hide(),co(t.flowdata.length,null)})),$(\"#luckysheet-freezen-btn-horizontal\").click((function(){$.trim($(this).text())==X().freezen.freezenCancel?($l.saveFrozen(\"freezenCancel\"),null!=$l.freezenverticaldata&&($l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),null!=$l.freezenhorizontaldata&&($l.cancelFreezenHorizontal(),$l.createAssistCanvas(),uo()),$l.scrollAdapt(),$(\"#luckysheet-icon-freezen-menu-menuButton\").find(\".fa.fa-check\").remove()):($l.saveFrozen(\"freezenRow\"),null!=$l.freezenverticaldata&&($l.cancelFreezenVertical(),$l.createAssistCanvas(),uo()),null==$l.freezenhorizontaldata&&($l.createFreezenHorizontal(),$l.createAssistCanvas()))})),$(\"#luckysheet-freezen-btn-vertical\").click((function(){null!=$l.freezenverticaldata?($l.saveFrozen(\"freezenCancel\"),$l.cancelFreezenVertical(),uo()):($l.saveFrozen(\"freezenColumn\"),$l.createFreezenVertical()),$l.createAssistCanvas()})),$(\"#luckysheet-rightclick-menu input\").on(\"keydown\",(function(e){e.stopPropagation()})),$(\"#luckysheet-modal-dialog-mask\").on(\"click dbclick mousedown mousemove mouseup\",(function(e){e.stopPropagation(),e.preventDefault()})),$(\"#luckysheet-exportXlsx-btn-title\").click((function(){let e=t.plugins.find((e=>\"exportXlsx\"===e.name));e?null==e||e.callback(t):tooltip_default.info(a.exportXlsx.notice,\"\")}));$(document).on(\"visibilitychange.luckysheetEvent webkitvisibilitychange.luckysheetEvent msvisibilitychange.luckysheetEvent\",(function(){(document.hidden||document.webkitHidden||document.msHidden)&&(t.iscopyself=!1)})).on(\"mouseleave.luckysheetEvent\",(function(){t.iscopyself=!1})).on(\"mousedown.luckysheetEvent\",(function(e){vl.removeActivePs(),xn(e),$(e.target).closest(\"#luckysheet-wa-editor\").length>0&&parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"down\",0,\"rangeOfSelect\"))})),$(\"#luckysheet-left-top\").click((function(e){!Zl(t.currentSheetIndex)||($(\"#luckysheet-wa-functionbox-confirm\").click(),t.luckysheet_select_status=!1,t.luckysheet_select_save=[{row:[0,t.flowdata.length-1],column:[0,t.flowdata[0].length-1],row_focus:0,column_focus:0,row_select:!0,column_select:!0}],Pu(),clearTimeout(t.countfuncTimeout),t.countfuncTimeout=setTimeout((function(){za()}),500),yo.saveParam(\"mv\",t.currentSheetIndex,t.luckysheet_select_save),e.stopPropagation())})),$(\"#luckysheet-icon-undo\").click((function(e){$(this).hasClass(\"disabled\")||Si.redo(e)})),$(\"#luckysheet-icon-redo\").click((function(e){$(this).hasClass(\"disabled\")||Si.undo(e)})),$(document).on(\"mousedown.luckysheetEvent\",\"div.luckysheet-modal-dialog\",(function(e){if(!$(e.target).is(\".luckysheet-modal-dialog\"))return;t.luckysheet_model_move_state=!0,t.luckysheet_model_move_obj=$(e.currentTarget);let n=t.luckysheet_model_move_obj.offset();t.luckysheet_model_xy=[e.pageX-n.left,e.pageY-n.top]})),$(document).on(\"click.luckysheetEvent\",\".luckysheet-modal-dialog-title-close, .luckysheet-model-close-btn\",(function(e){($(\"#textcolorselect\").is(\":visible\")||$(\"#cellcolorselect\").is(\":visible\"))&&$(\"#luckysheet-conditionformat-dialog\").show(),$(e.currentTarget).parents(\".luckysheet-modal-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide(),$(this).parents(\".luckysheet-modal-dialog\").hasClass(\"luckysheet-search-formula\")&&(wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\")),$(this).parents(\".luckysheet-modal-dialog\").hasClass(\"luckysheet-search-formula-parm\")&&(wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\")),$(this).parents(\".luckysheet-modal-dialog\").hasClass(\"luckysheet-search-formula-parm-select\")&&(wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\")),fd()})),$(\"#luckysheet_info_detail_title\").click((function(){window.open(e.myFolderUrl,\"_self\")})),$(\"#luckysheet-chart-rangeShow\").on(\"mousedown.chartRangeShowMove\",\".luckysheet-chart-rangeShow-move\",(function(e){t.chart_selection.rangeMove=!0,t.luckysheet_scroll_status=!0,t.chart_selection.rangeMoveObj=$(this).parent();let n=t.currentChart,a=$(this).parent().attr(\"id\");if(\"luckysheet-chart-rangeShow-content\"==a){let e=n.rangeArray[0].row[0]+n.rangeSplitArray.content.row[0],a=n.rangeArray[0].column[0]+n.rangeSplitArray.content.column[0];t.chart_selection.rangeMoveIndex=[e,a]}else if(\"luckysheet-chart-rangeShow-rowtitle\"==a){let e=n.rangeArray[0].row[0]+n.rangeSplitArray.rowtitle.row[0],a=n.rangeArray[0].column[0]+n.rangeSplitArray.rowtitle.column[0];t.chart_selection.rangeMoveIndex=[e,a]}else if(\"luckysheet-chart-rangeShow-coltitle\"==a){let e=n.rangeArray[0].row[0]+n.rangeSplitArray.coltitle.row[0],a=n.rangeArray[0].column[0]+n.rangeSplitArray.coltitle.column[0];t.chart_selection.rangeMoveIndex=[e,a]}let l=ta(e.pageX,e.pageY),r=l[0]+$(\"#luckysheet-cell-main\").scrollLeft(),o=l[1]+$(\"#luckysheet-cell-main\").scrollTop(),i=$(this).data(\"type\");\"top\"==i?o+=3:\"right\"==i?r-=3:\"bottom\"==i?o-=3:\"left\"==i&&(r+=3);let s=Jn(o)[2],c=ea(r)[2];t.chart_selection.rangeMovexy=[s,c],e.stopPropagation()})),$(\"#luckysheet-chart-rangeShow\").on(\"mousedown.chartRangeShowResize\",\".luckysheet-chart-rangeShow-resize\",(function(e){t.chart_selection.rangeResize=$(this).data(\"type\"),t.luckysheet_scroll_status=!0,t.chart_selection.rangeResizeObj=$(this).parent();let n,a,l,r,o=t.currentChart,i=$(this).parent().attr(\"id\");if(\"luckysheet-chart-rangeShow-content\"==i)o.rangeRowCheck.exits?(n=o.rangeArray[0].row[0]+o.rangeSplitArray.content.row[0],a=o.rangeArray[0].row[0]+o.rangeSplitArray.content.row[1]):(n=o.rangeSplitArray.content.row[0],a=o.rangeSplitArray.content.row[0]),o.rangeColCheck.exits?(l=o.rangeArray[0].column[0]+o.rangeSplitArray.content.column[0],r=o.rangeArray[0].column[0]+o.rangeSplitArray.content.column[1]):(l=o.rangeSplitArray.content.column[0],r=o.rangeSplitArray.content.column[1]),t.chart_selection.rangeResizeIndex={row:[n,a],column:[l,r]};else if(\"luckysheet-chart-rangeShow-rowtitle\"==i){let e=o.rangeArray[0].row[0]+o.rangeSplitArray.rowtitle.row[0],n=o.rangeArray[0].row[0]+o.rangeSplitArray.rowtitle.row[1],a=o.rangeArray[0].column[0]+o.rangeSplitArray.rowtitle.column[0],l=o.rangeArray[0].column[0]+o.rangeSplitArray.rowtitle.column[1];t.chart_selection.rangeResizeIndex={row:[e,n],column:[a,l]}}else if(\"luckysheet-chart-rangeShow-coltitle\"==i){let e=o.rangeArray[0].row[0]+o.rangeSplitArray.coltitle.row[0],n=o.rangeArray[0].row[0]+o.rangeSplitArray.coltitle.row[1],a=o.rangeArray[0].column[0]+o.rangeSplitArray.coltitle.column[0],l=o.rangeArray[0].column[0]+o.rangeSplitArray.coltitle.column[1];t.chart_selection.rangeResizeIndex={row:[e,n],column:[a,l]}}let s=ta(e.pageX,e.pageY),c=s[0]+$(\"#luckysheet-cell-main\").scrollLeft(),u=s[1]+$(\"#luckysheet-cell-main\").scrollTop();\"lt\"==t.chart_selection.rangeResize?(c+=3,u+=3):\"lb\"==t.chart_selection.rangeResize?(c+=3,u-=3):\"rt\"==t.chart_selection.rangeResize?(c-=3,u+=3):\"rb\"==t.chart_selection.rangeResize&&(c-=3,u-=3);let d=Jn(u)[2],h=ea(c)[2];t.chart_selection.rangeResizexy=[d,h],e.stopPropagation()})),$(\"#luckysheet-wa-calculate-size\").mousedown((function(e){let n=e.pageY;wi.functionResizeData.y=n,wi.functionResizeStatus=!0,wi.functionResizeData.calculatebarHeight=t.calculatebarHeight,wi.rangetosheet&&null!=wi.rangetosheet&&wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1])})),Yu.initialMenuButton();document.getElementById(\"testdpidiv\").offsetWidth,t.devicePixelRatio,document.getElementById(\"testdpidiv\").offsetHeight,t.devicePixelRatio;$(document).on(\"paste.luckysheetEvent\",(function(e){if(!I())if(wo.isPasteAction){$(\"#luckysheet-rich-text-editor\").blur(),wo.isPasteAction=!1;let n=window.clipboardData;n||(n=e.originalEvent.clipboardData);let a=n.getData(\"text/html\")||n.getData(\"text/plain\"),l=!0;if(a.indexOf(\"luckysheet_copy_action_table\")>-1&&null!=t.luckysheet_copy_save.copyRange&&t.luckysheet_copy_save.copyRange.length>0){let e=[],n=new RegExp(\"<tr.*?>(.*?)</tr>\",\"gs\"),r=new RegExp(\"<td.*?>(.*?)</td>\",\"gs\"),o=a.match(n)||[];for(let t=0;t<o.length;t++){let n=[],a=o[t].match(r);if(null!=a)for(let e=0;e<a.length;e++){let t=a[e].replace(/<td.*?>/gs,\"\").replace(/<\\/td>/gs,\"\");n.push(t)}e.push(n)}let i,s=t.luckysheet_copy_save.copyRange[0].row[0],c=t.luckysheet_copy_save.copyRange[0].row[1],u=t.luckysheet_copy_save.copyRange[0].column[0],d=t.luckysheet_copy_save.copyRange[0].column[1],h=t.luckysheet_copy_save.dataSheetIndex;i=h==t.currentSheetIndex?mn.deepCopyFlowData(t.flowdata):t.luckysheetfile[Mt(h)].data;for(let t=s;t<=c&&!(t-s>e.length-1);t++)for(let n=u;n<=d;n++){let a,r=i[t][n],o=!1;if(null==r||null==r.mc||null!=r.mc.rs)if(a=null!=r?null!=r.ct&&r.ct.fa.indexOf(\"w\")>-1?i[t][n].v:i[t][n].m:\"\",null==a&&i[t][n]&&i[t][n].ct&&\"inlineStr\"==i[t][n].ct.t&&(a=i[t][n].ct.s.map((e=>e.v)).join(\"\"),o=!0),null==a&&(a=\"\"),o){if($(e[t-s][n-u]).text().replace(/\\s|\\n/g,\" \")!=a.replace(/\\n/g,\"\").replace(/\\s/g,\" \")){l=!1;break}}else if(e[t-s][n-u]!=a){l=!1;break}}}let r=X().fontjson;if(!yl.createHookFunction(\"rangePasteBefore\",t.luckysheet_select_save,a))return;if(a.indexOf(\"luckysheet_copy_action_table\")>-1&&null!=t.luckysheet_copy_save.copyRange&&t.luckysheet_copy_save.copyRange.length>0&&l)t.luckysheet_paste_iscut?(t.luckysheet_paste_iscut=!1,wo.pasteHandlerOfCutPaste(t.luckysheet_copy_save),wo.clearcopy(e)):wo.pasteHandlerOfCopyPaste(t.luckysheet_copy_save);else if(a.indexOf(\"luckysheet_copy_action_image\")>-1)rl.pasteImgItem();else{if(a.indexOf(\"table\")>-1){$(\"#luckysheet-copy-content\").html(a);let e=new Array($(\"#luckysheet-copy-content\").find(\"table tr\").length),n=0,l=\"th, td\";$(\"#luckysheet-copy-content\").find(\"table tr\").eq(0).find(l).each((function(){let e=parseInt($(this).attr(\"colspan\"));isNaN(e)&&(e=1),n+=e}));for(let t=0;t<e.length;t++)e[t]=new Array(n);let o=0,i={};$(\"#luckysheet-copy-content\").find(\"table tr\").each((function(){let a=$(this),s=0;a.find(l).each((function(){let a=$(this),l={},c=a.text();if(0==$.trim(c).length)l.v=null,l.m=\"\";else{let e=_a(a.text());l.v=e[2],l.ct=e[1],l.m=e[0]}let u=a.css(\"background-color\");\"rgba(0, 0, 0, 0)\"==u&&(u=null),l.bg=u;let d=a.css(\"font-weight\");l.bl=400==d||\"normal\"==d?0:1,-1!=a.css(\"text-decoration\").indexOf(\"underline\")&&(l.un=1),\"normal\"==a.css(\"font-style\")?l.it=0:l.it=1;let h=a.css(\"font-family\").split(\",\");for(let e=0;e<h.length;e++){let t=$.trim(h[e].toLowerCase());if(t=r[t],null!=t){l.ff=t;break}l.ff=0}let f=Math.round(72*parseInt(a.css(\"font-size\"))/96);l.fs=f;let m=a.css(\"color\");l.fc=m;let p=a.css(\"text-align\");l.ht=\"center\"==p?0:\"right\"==p?2:1;let g=a.css(\"vertical-align\");for(l.vt=\"middle\"==g?0:\"top\"==g||\"text-top\"==g?1:2;s<n&&null!=e[o][s];)s++;if(s==n)return!0;if(null==e[o][s]){e[o][s]=l;let n=parseInt(a.attr(\"rowspan\")),r=parseInt(a.attr(\"colspan\"));isNaN(n)&&(n=1),isNaN(r)&&(r=1);let c=t.luckysheet_select_save[0].row[0]+o,u=t.luckysheet_select_save[0].column[0]+s;for(let t=0;t<n;t++)for(let l=0;l<r;l++){if(0==t){let e=a.css(\"border-top\");if(null!=e&&e.length>0&&\"0px\"!=e.substr(0,3).toLowerCase()){let e=a.css(\"border-top-width\"),n=a.css(\"border-top-style\"),r=a.css(\"border-top-color\"),c=Yu.getQKBorder(e,n,r);null==i[o+t+\"_\"+(s+l)]&&(i[o+t+\"_\"+(s+l)]={}),i[o+t+\"_\"+(s+l)].t={style:c[0],color:c[1]}}}if(t==n-1){let e=a.css(\"border-bottom\");if(null!=e&&e.length>0&&\"0px\"!=e.substr(0,3).toLowerCase()){let e=a.css(\"border-bottom-width\"),n=a.css(\"border-bottom-style\"),r=a.css(\"border-bottom-color\"),c=Yu.getQKBorder(e,n,r);null==i[o+t+\"_\"+(s+l)]&&(i[o+t+\"_\"+(s+l)]={}),i[o+t+\"_\"+(s+l)].b={style:c[0],color:c[1]}}}if(0==l){let e=a.css(\"border-left\");if(null!=e&&e.length>0&&\"0px\"!=e.substr(0,3).toLowerCase()){let e=a.css(\"border-left-width\"),n=a.css(\"border-left-style\"),r=a.css(\"border-left-color\"),c=Yu.getQKBorder(e,n,r);null==i[o+t+\"_\"+(s+l)]&&(i[o+t+\"_\"+(s+l)]={}),i[o+t+\"_\"+(s+l)].l={style:c[0],color:c[1]}}}if(l==r-1){let e=a.css(\"border-right\");if(null!=e&&e.length>0&&\"0px\"!=e.substr(0,3).toLowerCase()){let e=a.css(\"border-right-width\"),n=a.css(\"border-right-style\"),r=a.css(\"border-right-color\"),c=Yu.getQKBorder(e,n,r);null==i[o+t+\"_\"+(s+l)]&&(i[o+t+\"_\"+(s+l)]={}),i[o+t+\"_\"+(s+l)].r={style:c[0],color:c[1]}}}0==t&&0==l||(e[o+t][s+l]={mc:{r:c,c:u}})}if(n>1||r>1){let t={rs:n,cs:r,r:c,c:u};e[o][s].mc=t}}return s++,s==n||void 0})),o++})),t.luckysheet_selection_range=[],wo.pasteHandler(e,i),$(\"#luckysheet-copy-content\").empty()}else{if(1==n.files.length&&n.files[0].type.indexOf(\"image\")>-1)return void rl.insertImg(n.files[0]);a=n.getData(\"text/plain\"),wo.pasteHandler(a)}$(\"#luckysheet-copy-content\").empty()}}else if($(e.target).closest(\"#luckysheet-rich-text-editor\").length>0){e.preventDefault();let t=window.clipboardData;t||(t=e.originalEvent.clipboardData);let n=t.getData(\"text/plain\");document.execCommand(\"insertText\",!1,n)}})),e.enablePage&&$(\"#luckysheet-bottom-page-next\").click((function(){let n=e.pageInfo.queryExps,a=e.pageInfo.reportId,l=e.pageInfo.fields,o=e.pageInfo.mobile,i=e.pageInfo.frezon,s=e.pageInfo.currentPage,c=(e.pageInfo.totalPage,e.pageInfo.pageUrl);yl.addDataAjax({queryExps:n,reportId:a,fields:l,mobile:o,frezon:i,pageIndex:s,currentPage:s},t.currentSheetIndex,c,(function(){if(e.pageInfo.currentPage++,e.pageInfo.totalPage==e.pageInfo.currentPage){$(\"#luckysheet-bottom-page-next\").hide();let t=nd(r.pageInfoFull,{total:e.total,totalPage:e.pageInfo.totalPage});$(\"#luckysheet-bottom-page-info\").html(t)}else{let t=nd(r.pageInfo,{total:e.total,totalPage:e.pageInfo.totalPage,currentPage:e.pageInfo.currentPage});$(\"#luckysheet-bottom-page-info\").html(t)}}))})).mousedown((function(e){e.stopPropagation()})),$(\"#luckysheet-bottom-bottom-top\").click((function(){$(\"#luckysheet-scrollbar-y\").scrollTop(0)})).mousedown((function(e){e.stopPropagation()})),$(\"#luckysheet-wa-editor,#luckysheet-icon-morebtn-div,.luckysheet-toolbar-button\").click((function(e){\"luckysheet-icon-paintformat\"!=this.id&&Yu.luckysheetPaintModelOn&&Yu.cancelPaintModel()}))}var Pd=y((()=>{Td(),w(),Al(),Vr(),Rl(),wl(),il(),to(),cl(),ed(),To(),Ja(),Ju(),_i(),_o(),Ts(),Kn(),zl(),Za(),Xu(),So(),Di(),Sd(),Cn(),Et(),dr(),Ad(),_d(),qt(),na(),da(),E(),La(),Yt(),Ci(),pl(),Fd(),fo(),Yn(),Co(),gn(),Ma(),kl(),Il(),eo(),K(),x(),fi(),Ci(),Md()}));var zd=y((()=>{So(),_d(),E(),Yn(),Co(),gn(),K(),x()}));function Ld(){if(!Bd){Bd=!0;let e=X(),n=e.toolbar;$(\"#luckysheetsheetconfigcolorur\").spectrum({showPalette:!0,preferredFormat:\"hex\",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!1,showSelectionPalette:!0,maxPaletteSize:10,cancelText:e.sheetconfig.cancelText,chooseText:e.sheetconfig.chooseText,togglePaletteMoreText:n.toolMore,togglePaletteLessText:n.toolLess,clearText:n.clearText,noColorSelectedText:n.noColorSelectedText,palette:[[\"rgb(0, 0, 0)\",\"rgb(67, 67, 67)\",\"rgb(102, 102, 102)\",\"rgb(204, 204, 204)\",\"rgb(217, 217, 217)\",\"rgb(255, 255, 255)\"],[\"rgb(152, 0, 0)\",\"rgb(255, 0, 0)\",\"rgb(255, 153, 0)\",\"rgb(255, 255, 0)\",\"rgb(0, 255, 0)\",\"rgb(0, 255, 255)\",\"rgb(74, 134, 232)\",\"rgb(0, 0, 255)\",\"rgb(153, 0, 255)\",\"rgb(255, 0, 255)\"],[\"rgb(230, 184, 175)\",\"rgb(244, 204, 204)\",\"rgb(252, 229, 205)\",\"rgb(255, 242, 204)\",\"rgb(217, 234, 211)\",\"rgb(208, 224, 227)\",\"rgb(201, 218, 248)\",\"rgb(207, 226, 243)\",\"rgb(217, 210, 233)\",\"rgb(234, 209, 220)\"],[\"rgb(221, 126, 107)\",\"rgb(234, 153, 153)\",\"rgb(249, 203, 156)\",\"rgb(255, 229, 153)\",\"rgb(182, 215, 168)\",\"rgb(162, 196, 201)\",\"rgb(164, 194, 244)\",\"rgb(159, 197, 232)\",\"rgb(180, 167, 214)\",\"rgb(213, 166, 189)\"],[\"rgb(204, 65, 37)\",\"rgb(224, 102, 102)\",\"rgb(246, 178, 107)\",\"rgb(255, 217, 102)\",\"rgb(147, 196, 125)\",\"rgb(118, 165, 175)\",\"rgb(109, 158, 235)\",\"rgb(111, 168, 220)\",\"rgb(142, 124, 195)\",\"rgb(194, 123, 160)\"],[\"rgb(166, 28, 0)\",\"rgb(204, 0, 0)\",\"rgb(230, 145, 56)\",\"rgb(241, 194, 50)\",\"rgb(106, 168, 79)\",\"rgb(69, 129, 142)\",\"rgb(60, 120, 216)\",\"rgb(61, 133, 198)\",\"rgb(103, 78, 167)\",\"rgb(166, 77, 121)\"],[\"rgb(91, 15, 0)\",\"rgb(102, 0, 0)\",\"rgb(120, 63, 4)\",\"rgb(127, 96, 0)\",\"rgb(39, 78, 19)\",\"rgb(12, 52, 61)\",\"rgb(28, 69, 135)\",\"rgb(7, 55, 99)\",\"rgb(32, 18, 77)\",\"rgb(76, 17, 48)\"],[\"#c1232b\",\"#27727b\",\"#fcce10\",\"#e87c25\",\"#b5c334\",\"#fe8463\",\"#9bca63\",\"#fad860\",\"#f3a43b\",\"#60c0dd\",\"#d7504b\",\"#c6e579\",\"#f4e001\",\"#f0805a\",\"#26c0c0\",\"#c12e34\",\"#e6b600\",\"#0098d9\",\"#2b821d\",\"#005eaa\",\"#339ca8\",\"#cda819\",\"#32a487\",\"#3fb1e3\",\"#6be6c1\",\"#626c91\",\"#a0a7e6\",\"#c4ebad\",\"#96dee8\"]],change:function(e){$(this);e=null!=e?e.toHexString():\"rgb(0, 0, 0)\";let n=null;Vd.find(\".luckysheet-sheets-item-color\").length>0&&(n=Vd.find(\".luckysheet-sheets-item-color\").css(\"background-color\")),Vd.find(\".luckysheet-sheets-item-color\").remove(),Vd.append('<div class=\"luckysheet-sheets-item-color\" style=\" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: '+e+';\"></div>');let a=Mt(t.currentSheetIndex);if(t.luckysheetfile[a].color=e,yo.saveParam(\"all\",t.currentSheetIndex,e,{k:\"color\"}),t.clearjfundo){let a={type:\"sheetColor\"};a.sheetIndex=t.currentSheetIndex,a.oldcolor=n,a.color=e,t.jfundo.length=0,t.jfredo.push(a)}}}),$(\"#luckysheetsheetconfigcolorreset\").click((function(){let e=null;Vd.find(\".luckysheet-sheets-item-color\").length>0&&(e=Vd.find(\".luckysheet-sheets-item-color\").css(\"background-color\")),Vd.find(\".luckysheet-sheets-item-color\").remove();let n=Mt(t.currentSheetIndex);if(t.luckysheetfile[n].color=null,yo.saveParam(\"all\",t.currentSheetIndex,null,{k:\"color\"}),t.clearjfundo){let n={type:\"sheetColor\"};n.sheetIndex=t.currentSheetIndex,n.oldcolor=e,n.color=null,t.jfundo.length=0,t.jfredo.push(n)}}))}let n=Mt(t.currentSheetIndex);null!=t.luckysheetfile[n].color&&t.luckysheetfile[n].color.length>0&&$(\"#luckysheetsheetconfigcolorur\").spectrum(\"set\",t.luckysheetfile[n].color),$(\"#luckysheetsheetconfigcolorur\").parent().find(\"span, div, button, input, a\").addClass(\"luckysheet-mousedown-cancel\");let a=e.sheetRightClickConfig;Object.values(a).every((e=>!e))||setTimeout((function(){gd($(\"#luckysheet-rightclick-sheet-menu\"),Vd.offset().left+Vd.width(),Vd.offset().top-18,\"leftbottom\")}),1)}function Od(){let n=X().sheetconfig;Bd=!1,$(\"#luckysheet-sheet-area\").on(\"mousedown\",\"div.luckysheet-sheets-item\",(function(e){if(I())return;let n=$(this),a=$(e.target),l=a.closest(\".luckysheet-sheets-item\");\"3\"==e.which&&setTimeout((()=>{Ud(n,a,e),Vd=l,Ld()}),0),l.hasClass(\"luckysheet-sheets-item-active\")&&\"false\"==l.find(\".luckysheet-sheets-item-name\").attr(\"contenteditable\")&&(qd=setTimeout((function(){t.luckysheet_sheet_move_status=!0,t.luckysheet_sheet_move_data={},t.luckysheet_sheet_move_data.widthlist=[],$(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").each((function(e){0==e?t.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth())):t.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth())+t.luckysheet_sheet_move_data.widthlist[e-1])})),t.luckysheet_sheet_move_data.curindex=$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").index(l);let n=e.pageX;t.luckysheet_sheet_move_data.curleft=n-l.offset().left,t.luckysheet_sheet_move_data.pageX=n,t.luckysheet_sheet_move_data.activeobject=l,t.luckysheet_sheet_move_data.cursorobject=a;let r=l.clone().css(\"visibility\",\"hidden\").attr(\"id\",\"luckysheet-sheets-item-clone\");l.after(r),l.css({position:\"absolute\",opacity:.8,cursor:\"move\",transition:\"initial\",\"z-index\":10})}),200))})).on(\"click\",\"div.luckysheet-sheets-item\",(function(e){if(I())return;let t=$(this),n=$(e.target);Ud(t,n,e),yo.keepHighLightBox()}));let a=function(n){!1===t.allowEdit||!e.sheetRightClickConfig.rename||(n.attr(\"contenteditable\",\"true\").addClass(\"luckysheet-mousedown-cancel\").data(\"oldtxt\",n.text()),setTimeout((function(){!function(e){if(window.getSelection){let t=document.createRange();t.selectNodeContents(e),t.startContainer&&_n(t.startContainer)&&(window.getSelection().removeAllRanges(),window.getSelection().addRange(t))}else if(document.selection){let t=document.body.createTextRange();t.moveToElementText(e),t.select()}}(n.get(0))}),1))};$(\"#luckysheet-sheet-area\").on(\"dblclick\",\"span.luckysheet-sheets-item-name\",(function(e){a($(this))}));let l=!0;$(\"#luckysheet-sheet-area\").on(\"compositionstart\",\"span.luckysheet-sheets-item-name\",(()=>l=!1)),$(\"#luckysheet-sheet-area\").on(\"compositionend\",\"span.luckysheet-sheets-item-name\",(()=>l=!0)),$(\"#luckysheet-sheet-area\").on(\"input\",\"span.luckysheet-sheets-item-name\",(function(){if(!1===t.allowEdit||!1===t.limitSheetNameLength)return;let e=t.defaultSheetNameMaxLength;0!==e&&setTimeout((()=>{l&&$(this).text().length>=e&&setTimeout((()=>{$(this).text($(this).text().substring(0,e));let t=window.getSelection();t.selectAllChildren(this),t.collapseToEnd()}),0)}),0)})),$(\"#luckysheet-sheet-area\").on(\"blur\",\"span.luckysheet-sheets-item-name\",(function(e){if(!1===t.allowEdit)return;let a=$(this),l=a.text(),r=a.data(\"oldtxt\");if(0===$(this).text().length)return vo.info(\"\",n.sheetNamecannotIsEmptyError),void a.text(r).attr(\"contenteditable\",\"false\");if(l.length>31||\"'\"==l.charAt(0)||\"'\"==l.charAt(l.length-1)||/[：\\:\\\\\\/？\\?\\*\\[\\]]+/.test(l))return vo.info(\"\",n.sheetNameSpecCharError),void a.text(r).attr(\"contenteditable\",\"false\");let o=Mt(t.currentSheetIndex);for(let e=0;e<t.luckysheetfile.length;e++)if(o!=e&&t.luckysheetfile[e].name==l)return I()?alert(n.tipNameRepeat):vo.info(\"\",n.tipNameRepeat),void a.text(r).attr(\"contenteditable\",\"false\");if(ki.sheetArrowShowAndHide(),t.luckysheetfile[o].name=l,yo.saveParam(\"all\",t.currentSheetIndex,l,{k:\"name\"}),a.attr(\"contenteditable\",\"false\").removeClass(\"luckysheet-mousedown-cancel\"),t.clearjfundo){let e={type:\"sheetName\"};e.sheetIndex=t.currentSheetIndex,e.oldtxt=r,e.txt=l,t.jfundo.length=0,t.jfredo.push(e)}yl.createHookFunction(\"sheetEditNameAfter\",{i:t.luckysheetfile[o].index,oldName:r,newName:l})})),$(\"#luckysheet-sheet-area\").on(\"keydown\",\"span.luckysheet-sheets-item-name\",(function(e){if(!1===t.allowEdit)return;let n=e.keyCode,a=$(this);if(n==It.ENTER){let e=Mt(t.currentSheetIndex);Hd=t.luckysheetfile[e].name||Hd,t.luckysheetfile[e].name=a.text(),a.attr(\"contenteditable\",\"false\")}})),$(\"#luckysheetsheetconfigrename\").click((function(){var e=Vd.find(\"span.luckysheet-sheets-item-name\");!yl.createHookFunction(\"sheetEditNameBefore\",{i:Vd.data(\"index\"),name:e.text()})||(a(Vd.find(\"span.luckysheet-sheets-item-name\")),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide())})),$(\"#luckysheetsheetconfigshow\").click((function(){$(\"#luckysheet-sheets-m\").click(),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-rightclick-sheet-menu\").hide()})),$(\"#luckysheetsheetconfigmoveleft\").click((function(){Vd.prevAll(\":visible\").length>0&&(Vd.insertBefore(Vd.prevAll(\":visible\").eq(0)),ki.reOrderAllSheet()),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide()})),$(\"#luckysheetsheetconfigmoveright\").click((function(){Vd.nextAll(\":visible\").length>0&&(Vd.insertAfter(Vd.nextAll(\":visible\").eq(0)),ki.reOrderAllSheet()),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide()})),$(\"#luckysheetsheetconfigdelete\").click((function(e){if($(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide(),$(\"#luckysheet-sheet-container-c .luckysheet-sheets-item:visible\").length<=1)return void(I()?alert(n.noMoreSheet):vo.info(n.noMoreSheet,\"\"));let a=Mt(t.currentSheetIndex);vo.confirm(n.confirmDelete+\"【\"+t.luckysheetfile[a].name+\"】？\",\"<span style='color:#9e9e9e;font-size:12px;'>\"+n.redoDelete+\"</span>\",(function(){ki.deleteSheet(Vd.data(\"index\"))}),null),$(\"#luckysheet-input-box\").removeAttr(\"style\")})),$(\"#luckysheetsheetconfigcopy\").click((function(e){ki.copySheet(Vd.data(\"index\"),e),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide()})),$(\"#luckysheetsheetconfighide\").click((function(){1!=$(\"#luckysheet-sheet-area div.luckysheet-sheets-item:visible\").length?(ki.setSheetHide(Vd.data(\"index\")),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide()):I()?alert(n.noHide):vo.info(\"\",n.noHide)})),$(\"#luckysheet-sheets-add\").click((function(e){parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),ki.addNewSheet(e),ki.locationSheet(),$(\"#luckysheet-input-box\").removeAttr(\"style\")}));let r=null,o=0,i=0;$(\"#luckysheet-sheets-leftscroll\").click((function(){let e=$(\"#luckysheet-sheet-container-c\");o=e.scrollLeft(),i=e.scrollLeft()-150,i<=0&&$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").hide(),$(\"#luckysheet-sheet-container .docs-sheet-fade-right\").show(),clearInterval(r),r=setInterval((function(){o-=4,e.scrollLeft(o),o<=i&&clearInterval(r)}),1)})),$(\"#luckysheet-sheets-rightscroll\").click((function(){let e=$(\"#luckysheet-sheet-container-c\");o=e.scrollLeft(),i=e.scrollLeft()+150,o>0&&$(\"#luckysheet-sheet-container .docs-sheet-fade-right\").hide(),$(\"#luckysheet-sheet-container .docs-sheet-fade-left\").show(),clearInterval(r),r=setInterval((function(){o+=4,e.scrollLeft(o),o>=i&&clearInterval(r)}),1)}));let s=!0;$(\"#luckysheet-sheets-m\").click((function(e){parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),$(\"#luckysheet-sheet-list\").html(\"\");let a=\"\";for(let e=0;e<t.luckysheetfile.length;e++){let n=t.luckysheetfile[e],l=\"\",r=\"\";1==n.status&&(l='<i class=\"fa fa-check\" aria-hidden=\"true\"></i>'),1==n.hide&&(l='<i class=\"fa fa-low-vision\" aria-hidden=\"true\"></i>',r+=\"color:#BBBBBB;\"),null!=n.color&&n.color.length>0&&(r+=\"border-right:4px solid \"+n.color+\";\"),a+=nd(vt,{index:n.index,name:n.name,icon:l,style:r})}s?($(\"#\"+t.container).append(nd(yt,{item:a})),$(\"#luckysheet-sheet-list\").on(\"click\",\".luckysheet-cols-menuitem\",(function(e){if(I())return void alert(n.chartEditNoOpt);let a=$(this),l=a.data(\"index\");a.data(\"index\")!=t.currentSheetIndex&&(ki.setSheetShow(l),ki.locationSheet()),yo.keepHighLightBox()})),s=!1):$(\"#luckysheet-sheet-list\").html(a);let l=$(\"#luckysheet-sheet-list\"),r=$(this).offset().left-$(\"#\"+t.container).offset().left,o=$(this).height()+$(\"#luckysheet-sta-content\").height()+12;l.css({left:r+\"px\",bottom:o+\"px\"}).show(),$(\"#luckysheet-input-box\").removeAttr(\"style\")})),e.pager&&$u(e.pager)}var Bd,Vd,qd,Hd,Ud,jd=y((()=>{_i(),_o(),Et(),_d(),qt(),E(),Ci(),Io(),Co(),Cn(),K(),x(),w(),Nu(),kl(),zl(),dr(),Bd=!1,Vd=null,qd=null,Hd=\"\",Ud=function(e,n,a){$(\"#luckysheet-dataVerificationRange-dialog\").is(\":visible\")?window.alert(\"选择单元格范围窗口打开时，不能切换sheet!\"):(clearTimeout(qd),(!n.hasClass(\"luckysheet-sheets-item-name\")||\"true\"!=n.attr(\"contenteditable\"))&&(wi.rangestart||wi.rangedrag_column_start||wi.rangedrag_row_start||wi.israngeseleciton()?setTimeout((function(){wi.setCaretPosition(wi.rangeSetValueTo.get(0),0,wi.rangeSetValueTo.text().length),wi.createRangeHightlight(),$(\"#luckysheet-input-box-index\").find(\".luckysheet-input-box-index-sheettxt\").remove().end().prepend(\"<span class='luckysheet-input-box-index-sheettxt'>\"+ki.getSheetName(wi.rangetosheet)+\"!</span>\").show(),$(\"#luckysheet-input-box-index\").css({left:$(\"#luckysheet-input-box\").css(\"left\"),top:parseInt($(\"#luckysheet-input-box\").css(\"top\"))-20+\"px\",\"z-index\":$(\"#luckysheet-input-box\").css(\"z-index\")})}),1):(parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),$(\"#luckysheet-input-box\").removeAttr(\"style\"),$(\"#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight\").remove()),$(\"#luckysheet-sheet-area div.luckysheet-sheets-item\").removeClass(\"luckysheet-sheets-item-active\"),e.addClass(\"luckysheet-sheets-item-active\"),$o(a),ki.changeSheet(e.data(\"index\")),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide(),(n.hasClass(\"luckysheet-sheets-item-menu\")||n.hasClass(\"fa-sort-desc\")||\"3\"==a.which)&&(Vd=n.closest(\".luckysheet-sheets-item\"),Ld()),$(\"#luckysheet-modal-dialog-slider-protection\").is(\":visible\")&&function(){let e=ki.getSheetByIndex();ql(e),e.isPivotTable&&(t.luckysheetcurrentisPivotTable=!1,$(\"#luckysheet-modal-dialog-slider-pivot\").hide())}(),Dl()))}}));var Gd=y((()=>{ed(),Ts(),Et(),Za(),Qu(),na(),E(),Ci(),Co(),K(),x()}));function Wd(){$(\"#luckysheet-rows-h\").mousedown((function(e){if(!Zl(t.currentSheetIndex))return;vl.removeActivePs(),($(\"#luckysheet-modal-dialog-activeImage\").is(\":visible\")||$(\"#luckysheet-modal-dialog-cropping\").is(\":visible\"))&&rl.cancelActiveImgItem();let n=Jn(ta(e.pageX,e.pageY)[1]+$(\"#luckysheet-rows-h\").scrollTop()),a=n[1],l=n[0],r=n[2],o=t.visibledatacolumn.length-1,i=t.visibledatacolumn[o];if($(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide(),\"3\"==e.which){let e=!1;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n];if(null!=a.row&&r>=a.row[0]&&r<=a.row[1]&&0==a.column[0]&&a.column[1]==t.flowdata[0].length-1){e=!0;break}}if(e)return}let s=l,c=a-l-1,u=[r,r];t.luckysheet_scroll_status=!0;let d=$(\"#luckysheet-input-box\");if(parseInt(d.css(\"top\"))>0){if(wi.rangestart||wi.rangedrag_column_start||wi.rangedrag_row_start||wi.israngeseleciton()||$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").is(\":visible\")){let n=Yu.mergeMoveMain([0,o],u,{row_focus:r,column_focus:0},s,c,0,i);if(null!=n&&(u=n[1],s=n[2],c=n[3]),e.shiftKey){let e=wi.func_selectedrange,t=0,n=0,s=[];e.top>l?(t=l,n=e.top+e.height-l,e.row[1]>e.row_focus&&(e.row[1]=e.row_focus),s=[r,e.row[1]]):e.top==l?(t=l,n=e.top+e.height-l,s=[r,e.row[0]]):(t=e.top,n=a-e.top-1,e.row[0]<e.row_focus&&(e.row[0]=e.row_focus),s=[e.row[0],r]);let c=Yu.mergeMoveMain([0,o],s,{row_focus:r,column_focus:0},t,n,0,i);null!=c&&(s=c[1],t=c[2],n=c[3]),e.row=s,e.top_move=t,e.height_move=n,wi.func_selectedrange=e}else if(e.ctrlKey&&\",\"!=$(\"#luckysheet-rich-text-editor\").find(\"span\").last().text()){let e=$(\"#luckysheet-rich-text-editor\").text()+\",\";if(e.length>0&&\"=\"==e.substr(0,1)){if(e=wi.functionHTMLGenerate(e),window.getSelection){let e=window.getSelection();wi.functionRangeIndex=[$(e.anchorNode).parent().index(),e.anchorOffset]}else{let e=document.selection.createRange();wi.functionRangeIndex=e}$(\"#luckysheet-rich-text-editor\").html(e),wi.canceFunctionrangeSelected(),wi.createRangeHightlight()}wi.rangestart=!1,wi.rangedrag_column_start=!1,wi.rangedrag_row_start=!1,$(\"#luckysheet-functionbox-cell\").html(e),wi.rangeHightlightselected($(\"#luckysheet-rich-text-editor\")),wi.israngeseleciton(),wi.func_selectedrange={left:Qn(0)[0],width:Qn(0)[1]-Qn(0)[0]-1,top:s,height:c,left_move:0,width_move:i-0-1,top_move:s,height_move:c,row:u,column:[0,o],row_focus:r,column_focus:0}}else wi.func_selectedrange={left:Qn(0)[0],width:Qn(0)[1]-Qn(0)[0]-1,top:s,height:c,left_move:0,width_move:i-0-1,top_move:s,height_move:c,row:u,column:[0,o],row_focus:r,column_focus:0};if(wi.rangestart||wi.rangedrag_column_start||wi.rangedrag_row_start||wi.israngeseleciton())wi.rangeSetValue({row:u,column:[null,null]});else if($(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").is(\":visible\")){let e=Nt(t.currentSheetIndex,{row:u,column:[0,o]},t.currentSheetIndex);$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog input\").val(e)}return wi.rangedrag_row_start=!0,wi.rangestart=!1,wi.rangedrag_column_start=!1,$(\"#luckysheet-formula-functionrange-select\").css({left:0,width:i-0-1,top:s,height:c}).show(),$(\"#luckysheet-formula-help-c\").hide(),qu(0,s,i-0-1,c,u,[0,o]),void setTimeout((function(){let e,t=window.getSelection().anchorNode;$(\"#luckysheet-search-formula-parm\").is(\":visible\")||$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")?(e=$(\"#luckysheet-rich-text-editor\"),wi.rangechangeindex=wi.data_parm_index):e=$(t).closest(\"div\");let n=e.find(\"span[rangeindex='\"+wi.rangechangeindex+\"']\");wi.setCaretPosition(n.get(0),0,n.html().length)}),1)}wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),t.luckysheet_rows_selected_status=!0}else t.luckysheet_rows_selected_status=!0;if(t.luckysheet_rows_selected_status){if(e.shiftKey){let e=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),n=0,o=0,i=[];e.top>l?(n=l,o=e.top+e.height-l,e.row[1]>e.row_focus&&(e.row[1]=e.row_focus),i=[r,e.row[1]]):e.top==l?(n=l,o=e.top+e.height-l,i=[r,e.row[0]]):(n=e.top,o=a-e.top-1,e.row[0]<e.row_focus&&(e.row[0]=e.row_focus),i=[e.row[0],r]),e.row=i,e.top_move=n,e.height_move=o,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=e}else e.ctrlKey||(t.luckysheet_select_save.length=0),t.luckysheet_select_save.push({left:Qn(0)[0],width:Qn(0)[1]-Qn(0)[0]-1,top:s,height:c,left_move:0,width_move:i-0-1,top_move:s,height_move:c,row:u,column:[0,o],row_focus:r,column_focus:0,row_select:!0});Pu(),yo.saveParam(\"mv\",t.currentSheetIndex,t.luckysheet_select_save)}Hu(),setTimeout((function(){clearTimeout(t.countfuncTimeout),za()}),101)})).mousemove((function(e){if(t.luckysheet_rows_selected_status||t.luckysheet_rows_change_size||t.luckysheet_select_status)return void $(\"#luckysheet-rows-h-hover\").hide();let n=ta(e.pageX,e.pageY)[1]+$(\"#luckysheet-rows-h\").scrollTop(),a=Jn(n),l=a[1],r=a[0];a[2];$(\"#luckysheet-rows-h-hover\").css({top:r,height:l-r-1,display:\"block\"}),n<l-1&&n>=l-5?$(\"#luckysheet-rows-change-size\").css({top:l-3,opacity:0}):$(\"#luckysheet-rows-change-size\").css(\"opacity\",0)})).mouseleave((function(e){$(\"#luckysheet-rows-h-hover\").hide(),$(\"#luckysheet-rows-change-size\").css(\"opacity\",0)})).mouseup((function(n){if(3==n.which){if(!R()||I())return;$(\"#luckysheet-cols-rows-shift\").hide(),t.luckysheetRightHeadClickIs=\"row\",$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word\").text(X().rightclick.row),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size\").text(X().rightclick.height),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left\").text(X().rightclick.top),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right\").text(X().rightclick.bottom),$(\"#luckysheet-cols-rows-add\").show(),$(\"#luckysheet-cols-rows-data\").show(),$(\"#luckysheet-cols-rows-shift\").hide(),$(\"#luckysheet-cols-rows-handleincell\").hide(),yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"block\",yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"block\";let a=e.cellRightClickConfig;if(!(a.copy||a.copyAs||a.paste||a.insertRow||a.deleteRow||a.hideRow||a.rowHeight||a.clear||a.matrix||a.sort||a.filter||a.chart||a.image||a.link||a.data||a.cellFormat))return;yd(\"#luckysheet-top-left-add-selected\").style.display=a.insertRow?\"block\":\"none\",yd(\"#luckysheet-bottom-right-add-selected\").style.display=a.insertRow?\"block\":\"none\",yd(\"#luckysheet-del-selected\").style.display=a.deleteRow?\"block\":\"none\",yd(\"#luckysheet-hide-selected\").style.display=a.hideRow?\"block\":\"none\",yd(\"#luckysheet-show-selected\").style.display=a.hideRow?\"block\":\"none\",yd(\"#luckysheet-column-row-width-selected\").style.display=a.rowHeight?\"block\":\"none\",!a.copy&&!a.copyAs&&!a.paste&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\",!a.insertRow&&!a.deleteRow&&!a.hideRow&&!a.rowHeight&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\")),!a.insertRow&&!a.deleteRow&&!a.hideRow&&!a.rowHeight&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\"),!a.clear&&!a.matrix&&!a.sort&&!a.filter&&!a.chart&&!a.image&&!a.link&&!a.data&&!a.cellFormat&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\"),dd($(\"#luckysheet-rightclick-menu\"),$(this).offset().left+46,n.pageY),t.luckysheet_cols_menu_status=!0;let l=$.extend(!0,{},t.config);null==l.rowlen&&(l.rowlen={});let r=null==l.rowlen[t.luckysheet_select_save[0].row[0]]?t.defaultrowlen:l.rowlen[t.luckysheet_select_save[0].row[0]],o=!0;for(let e=0;e<t.luckysheet_select_save.length;e++){let n=t.luckysheet_select_save[e],a=n.row[0],i=n.row[1];for(let e=a;e<=i;e++)if((null==l.rowlen[e]?t.defaultrowlen:l.rowlen[e])!=r){o=!1;break}}o?$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(r):$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(\"\")}})),$(\"#luckysheet-cols-h-c\").mousedown((function(e){if(!Zl(t.currentSheetIndex))return;vl.removeActivePs(),($(\"#luckysheet-modal-dialog-activeImage\").is(\":visible\")||$(\"#luckysheet-modal-dialog-cropping\").is(\":visible\"))&&rl.cancelActiveImgItem();let n=ta(e.pageX,e.pageY)[0]+$(this).scrollLeft(),a=t.visibledatarow.length-1,l=t.visibledatarow[a],r=ea(n),o=r[1],i=r[0],s=r[2];if(t.orderbyindex=s,$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu\").hide(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide(),\"3\"==e.which){let e=!1;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n];if(null!=a.column&&s>=a.column[0]&&s<=a.column[1]&&0==a.row[0]&&a.row[1]==t.flowdata.length-1){e=!0;break}}if(e)return}let c=i,u=o-i-1,d=[s,s];t.luckysheet_scroll_status=!0;let h=$(\"#luckysheet-input-box\");if(parseInt(h.css(\"top\"))>0){if(wi.rangestart||wi.rangedrag_column_start||wi.rangedrag_row_start||wi.israngeseleciton()||$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").is(\":visible\")){let n=Yu.mergeMoveMain(d,[0,a],{row_focus:0,column_focus:s},0,l,c,u);if(null!=n&&(d=n[0],c=n[4],u=n[5]),e.shiftKey){let e=wi.func_selectedrange,t=0,n=0,r=[];e.left>i?(t=i,n=e.left+e.width-i,e.column[1]>e.column_focus&&(e.column[1]=e.column_focus),r=[s,e.column[1]]):e.left==i?(t=i,n=e.left+e.width-i,r=[s,e.column[0]]):(t=e.left,n=o-e.left-1,e.column[0]<e.column_focus&&(e.column[0]=e.column_focus),r=[e.column[0],s]);let c=Yu.mergeMoveMain(r,[0,a],{row_focus:0,column_focus:s},0,l,t,n);null!=c&&(r=c[0],t=c[4],n=c[5]),e.column=r,e.left_move=t,e.width_move=n,wi.func_selectedrange=e}else if(e.ctrlKey&&\",\"!=$(\"#luckysheet-rich-text-editor\").find(\"span\").last().text()){let e=$(\"#luckysheet-rich-text-editor\").text()+\",\";if(e.length>0&&\"=\"==e.substr(0,1)){if(e=wi.functionHTMLGenerate(e),window.getSelection){let e=window.getSelection();wi.functionRangeIndex=[$(e.anchorNode).parent().index(),e.anchorOffset]}else{let e=document.selection.createRange();wi.functionRangeIndex=e}$(\"#luckysheet-rich-text-editor\").html(e),wi.canceFunctionrangeSelected(),wi.createRangeHightlight()}wi.rangestart=!1,wi.rangedrag_column_start=!1,wi.rangedrag_row_start=!1,$(\"#luckysheet-functionbox-cell\").html(e),wi.rangeHightlightselected($(\"#luckysheet-rich-text-editor\")),wi.israngeseleciton(),wi.func_selectedrange={left:c,width:u,top:Zn(0)[0],height:Zn(0)[1]-Zn(0)[0]-1,left_move:c,width_move:u,top_move:0,height_move:l-0-1,row:[0,a],column:d,row_focus:0,column_focus:s}}else wi.func_selectedrange={left:c,width:u,top:Zn(0)[0],height:Zn(0)[1]-Zn(0)[0]-1,left_move:c,width_move:u,top_move:0,height_move:l-0-1,row:[0,a],column:d,row_focus:0,column_focus:s};if(wi.rangestart||wi.rangedrag_column_start||wi.rangedrag_row_start||wi.israngeseleciton())wi.rangeSetValue({row:[null,null],column:d});else if($(\"#luckysheet-ifFormulaGenerator-multiRange-dialog\").is(\":visible\")){let e=Nt(t.currentSheetIndex,{row:[0,a],column:d},t.currentSheetIndex);$(\"#luckysheet-ifFormulaGenerator-multiRange-dialog input\").val(e)}return wi.rangedrag_column_start=!0,wi.rangestart=!1,wi.rangedrag_row_start=!1,$(\"#luckysheet-formula-functionrange-select\").css({left:c,width:u,top:0,height:l-0-1}).show(),$(\"#luckysheet-formula-help-c\").hide(),void qu(c,0,u,l-0-1,[0,a],d)}wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),t.luckysheet_cols_selected_status=!0}else t.luckysheet_cols_selected_status=!0;if(t.luckysheet_cols_selected_status){if(e.shiftKey){let e=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),n=0,a=0,l=[];e.left>i?(n=i,a=e.left+e.width-i,e.column[1]>e.column_focus&&(e.column[1]=e.column_focus),l=[s,e.column[1]]):e.left==i?(n=i,a=e.left+e.width-i,l=[s,e.column[0]]):(n=e.left,a=o-e.left-1,e.column[0]<e.column_focus&&(e.column[0]=e.column_focus),l=[e.column[0],s]),e.column=l,e.left_move=n,e.width_move=a,t.luckysheet_select_save[t.luckysheet_select_save.length-1]=e}else e.ctrlKey||(t.luckysheet_select_save.length=0),t.luckysheet_select_save.push({left:c,width:u,top:Zn(0)[0],height:Zn(0)[1]-Zn(0)[0]-1,left_move:c,width_move:u,top_move:0,height_move:l-0-1,row:[0,a],column:d,row_focus:0,column_focus:s,column_select:!0});Pu(),yo.saveParam(\"mv\",t.currentSheetIndex,t.luckysheet_select_save)}Hu(),setTimeout((function(){clearTimeout(t.countfuncTimeout),za()}),101),t.luckysheet_cols_menu_status&&($(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),t.luckysheet_cols_menu_status=!1),e.stopPropagation()})).mousemove((function(e){if(t.luckysheet_cols_selected_status||t.luckysheet_select_status)return $(\"#luckysheet-cols-h-hover\").hide(),void $(\"#luckysheet-cols-menu-btn\").hide();if(t.luckysheet_cols_menu_status||t.luckysheet_cols_change_size)return;let n=ta(e.pageX,e.pageY)[0]+$(\"#luckysheet-cols-h-c\").scrollLeft(),a=ea(n),l=a[1],r=a[0];a[2];$(\"#luckysheet-cols-h-hover\").css({left:r,width:l-r-1,display:\"block\"}),$(\"#luckysheet-cols-menu-btn\").css({left:l-19,display:\"block\"}),$(\"#luckysheet-cols-change-size\").css({left:l-5}),n<l&&n>=l-5?($(\"#luckysheet-cols-change-size\").css({opacity:0}),$(\"#luckysheet-cols-menu-btn\").hide()):($(\"#luckysheet-change-size-line\").hide(),$(\"#luckysheet-cols-change-size\").css(\"opacity\",0))})).mouseleave((function(e){t.luckysheet_cols_menu_status||t.luckysheet_cols_change_size||($(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),$(\"#luckysheet-cols-change-size\").css(\"opacity\",0))})).mouseup((function(n){if(3==n.which){if(!R()||I())return;t.luckysheetRightHeadClickIs=\"column\",$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word\").text(X().rightclick.column),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size\").text(X().rightclick.width),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left\").text(X().rightclick.left),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right\").text(X().rightclick.right),$(\"#luckysheet-cols-rows-add\").show(),$(\"#luckysheet-cols-rows-data\").show(),$(\"#luckysheet-cols-rows-shift\").hide(),$(\"#luckysheet-cols-rows-handleincell\").hide(),yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"block\",yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"block\";let a=e.cellRightClickConfig;if(!(a.copy||a.copyAs||a.paste||a.insertColumn||a.deleteColumn||a.hideColumn||a.columnWidth||a.clear||a.matrix||a.sort||a.filter||a.chart||a.image||a.link||a.data||a.cellFormat))return;yd(\"#luckysheet-top-left-add-selected\").style.display=a.insertColumn?\"block\":\"none\",yd(\"#luckysheet-bottom-right-add-selected\").style.display=a.insertColumn?\"block\":\"none\",yd(\"#luckysheet-del-selected\").style.display=a.deleteColumn?\"block\":\"none\",yd(\"#luckysheet-hide-selected\").style.display=a.hideColumn?\"block\":\"none\",yd(\"#luckysheet-show-selected\").style.display=a.hideColumn?\"block\":\"none\",yd(\"#luckysheet-column-row-width-selected\").style.display=a.columnWidth?\"block\":\"none\",!a.copy&&!a.copyAs&&!a.paste&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\",!a.insertColumn&&!a.deleteColumn&&!a.hideColumn&&!a.columnWidth&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\")),!a.insertColumn&&!a.deleteColumn&&!a.hideColumn&&!a.columnWidth&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\"),!a.clear&&!a.matrix&&!a.sort&&!a.filter&&!a.chart&&!a.image&&!a.link&&!a.data&&!a.cellFormat&&(yd(\"#luckysheet-cols-rows-data .luckysheet-menuseparator\").style.display=\"none\"),dd($(\"#luckysheet-rightclick-menu\"),n.pageX,$(this).offset().top+18),t.luckysheet_cols_menu_status=!0;let l=$.extend(!0,{},t.config);null==l.columnlen&&(l.columnlen={});let r=null==l.columnlen[t.luckysheet_select_save[0].column[0]]?t.defaultcollen:l.columnlen[t.luckysheet_select_save[0].column[0]],o=!0;for(let e=0;e<t.luckysheet_select_save.length;e++){let n=t.luckysheet_select_save[e],a=n.column[0],i=n.column[1];for(let e=a;e<=i;e++)if((null==l.columnlen[e]?t.defaultcollen:l.columnlen[e])!=r){o=!1;break}}o?$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(r):$(\"#luckysheet-cols-rows-add\").find(\"input[type='number'].rcsize\").val(\"\")}})),$(\"#luckysheet-rows-change-size\").mousedown((function(e){if(!R())return;vl.removeActivePs(),($(\"#luckysheet-modal-dialog-activeImage\").is(\":visible\")||$(\"#luckysheet-modal-dialog-cropping\").is(\":visible\"))&&rl.cancelActiveImgItem(),$(\"#luckysheet-input-box\").hide(),$(\"#luckysheet-rows-change-size\").css({opacity:1});let n=ta(e.pageX,e.pageY)[1]+$(\"#luckysheet-rows-h\").scrollTop(),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").width(),r=Jn(n),o=r[1],i=r[0],s=r[2];t.luckysheet_rows_change_size=!0,t.luckysheet_scroll_status=!0,$(\"#luckysheet-change-size-line\").css({height:\"1px\",\"border-width\":\"0 0px 1px 0\",top:o-3,left:0,width:a+l,display:\"block\",cursor:\"ns-resize\"}),$(\"#luckysheet-sheettable, #luckysheet-rows-h, #luckysheet-rows-h canvas\").css(\"cursor\",\"ns-resize\"),t.luckysheet_rows_change_size_start=[i,s],$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-rows-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),e.stopPropagation()})),$(\"#luckysheet-cols-change-size\").mousedown((function(e){if(!R())return;vl.removeActivePs(),($(\"#luckysheet-modal-dialog-activeImage\").is(\":visible\")||$(\"#luckysheet-modal-dialog-cropping\").is(\":visible\"))&&rl.cancelActiveImgItem(),$(\"#luckysheet-input-box\").hide(),$(\"#luckysheet-cols-change-size\").css({opacity:1});let n=ta(e.pageX,e.pageY),a=$(\"#luckysheet-cols-h-c\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=$(\"#luckysheet-cell-main\").height(),o=n[0]+a,i=t.visibledatarow.length-1,s=(t.visibledatarow[i],ea(o)),c=s[1],u=s[0],d=s[2];t.luckysheet_cols_change_size=!0,t.luckysheet_scroll_status=!0,$(\"#luckysheet-change-size-line\").css({height:r+l,\"border-width\":\"0 1px 0 0\",top:0,left:c-3,width:\"1px\",display:\"block\",cursor:\"ew-resize\"}),$(\"#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas\").css(\"cursor\",\"ew-resize\"),t.luckysheet_cols_change_size_start=[u,d],$(\"#luckysheet-rightclick-menu\").hide(),$(\"#luckysheet-cols-h-hover\").hide(),$(\"#luckysheet-cols-menu-btn\").hide(),t.luckysheet_cols_dbclick_times=0,e.stopPropagation()})).dblclick((function(){!function(){t.luckysheet_cols_change_size=!1,$(\"#luckysheet-change-size-line\").hide(),$(\"#luckysheet-cols-change-size\").css(\"opacity\",0),$(\"#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas\").css(\"cursor\",\"default\");let e=ta(event.pageX,event.pageY),n=$(\"#luckysheet-cols-h-c\").scrollLeft(),a=ea(e[0]+n)[2],l=mn.deepCopyFlowData(t.flowdata),r=$(\"#luckysheetTableContent\").get(0).getContext(\"2d\"),o=$.extend(!0,{},t.config);null==o.columnlen&&(o.columnlen={});let i={},s=$(\"#luckysheet-cell-main\").scrollTop(),c=t.luckysheetTableContentHW[1],u=Xn(t.visibledatarow,s),d=Xn(t.visibledatarow,s+c);d+=d-u,d>=l.length&&(d=l.length-1);for(let e=0;e<t.luckysheet_select_save.length;e++){let n=t.luckysheet_select_save[e].column[0],s=t.luckysheet_select_save[e].column[1];if(a<n||a>s){if(a in i)continue;let e=t.defaultcollen;for(let t=u;t<=d;t++){let n=l[t][a];if(null==n||_(n.v)&&!Tn(n))continue;let o=ca(n,r,{r:t,c:a,cellWidth:Qn(a)[1]-Qn(a)[0]-2}),i=0;null!=o&&(i=o.textWidthAll),i+6>e&&(e=i+6)}e!=t.defaultcollen&&(o.columnlen[a]=e,o.customWidth&&delete o.customWidth[a]),i[a]=1}else for(let e=n;e<=s;e++){if(e in i)continue;let n=t.defaultcollen;for(let t=u;t<=d;t++){let a=l[t][e];if(null==a||_(a.v)&&!Tn(a))continue;let o=ca(a,r,{r:t,c:e,cellWidth:Qn(e)[1]-Qn(e)[0]-2}),i=0;null!=o&&(i=o.textWidthAll),i+6>n&&(n=i+6)}n!=t.defaultcollen&&(o.columnlen[e]=n,o.customWidth&&delete o.customWidth[e]),i[e]=1}}lo(t.flowdata[0].length,t.flowdata.length,t.flowdata,o,t.luckysheet_select_save,\"resizeC\",\"columnlen\")}()})),$(\"#luckysheet-cols-menu-btn\").click((function(n){if(!R())return void vo.info(\"\",X().pivotTable.errorNotAllowEdit);let a=$(\"#luckysheet-rightclick-menu\"),l=$(this).offset();$(\"#luckysheet-cols-rows-shift\").show(),t.luckysheetRightHeadClickIs=\"column\",$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word\").text(X().rightclick.column),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left\").text(X().rightclick.left),$(\"#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right\").text(X().rightclick.right),$(\"#luckysheet-cols-rows-add\").show(),$(\"#luckysheet-cols-rows-data\").hide(),$(\"#luckysheet-cols-rows-shift\").show(),$(\"#luckysheet-cols-rows-handleincell\").hide(),yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"block\",yd(\"#luckysheet-cols-rows-shift .luckysheet-menuseparator\").style.display=\"block\";let r=e.cellRightClickConfig;!r.copy&&!r.copyAs&&!r.paste&&!r.insertColumn&&!r.deleteColumn&&!r.hideColumn&&!r.columnWidth&&!r.sort||(yd(\"#luckysheet-top-left-add-selected\").style.display=r.insertColumn?\"block\":\"none\",yd(\"#luckysheet-bottom-right-add-selected\").style.display=r.insertColumn?\"block\":\"none\",yd(\"#luckysheet-del-selected\").style.display=r.deleteColumn?\"block\":\"none\",yd(\"#luckysheet-hide-selected\").style.display=r.hideColumn?\"block\":\"none\",yd(\"#luckysheet-show-selected\").style.display=r.hideColumn?\"block\":\"none\",yd(\"#luckysheet-column-row-width-selected\").style.display=r.columnWidth?\"block\":\"none\",!r.copy&&!r.copyAs&&!r.paste&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\",!r.insertColumn&&!r.deleteColumn&&!r.hideColumn&&!r.columnWidth&&(yd(\"#luckysheet-cols-rows-shift .luckysheet-menuseparator\").style.display=\"none\")),!r.insertColumn&&!r.deleteColumn&&!r.hideColumn&&!r.columnWidth&&(yd(\"#luckysheet-cols-rows-add .luckysheet-menuseparator\").style.display=\"none\"),r.sort||(yd(\"#luckysheet-cols-rows-shift .luckysheet-menuseparator\").style.display=\"none\"),dd(a,l.left,l.top+18),t.luckysheet_cols_menu_status=!0)})),$(\"#luckysheet-top-left-add-selected\").click((function(e){if(\"INPUT\"===e.target.nodeName)return;$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X(),a=n.drag,l=n.info;if(t.luckysheet_select_save.length>1)return void(I()?alert(a.noMulti):vo.info(a.noMulti,\"\"));let r=$(this).find(\"input\").val();if(!C(r))return void(I()?alert(l.tipInputNumber):vo.info(l.tipInputNumber,\"\"));if(r=parseInt(r),r<1||r>100)return void(I()?alert(l.tipInputNumberLimit):vo.info(l.tipInputNumberLimit,\"\"));let o=t.luckysheet_select_save[0][t.luckysheetRightHeadClickIs][0];!yl.createHookFunction(\"rowInsertBefore\",o,r,\"lefttop\",t.luckysheetRightHeadClickIs)||ul(t.luckysheetRightHeadClickIs,o,r,\"lefttop\")})),$(\"#luckysheetColsRowsHandleAdd_row\").click((function(e){if($(\"#luckysheet-rightclick-menu\").hide(),fd(),!1===t.allowEdit)return;let n=t.luckysheet_select_save[0].row[0];!yl.createHookFunction(\"rowInsertBefore\",n,1,\"lefttop\",t.luckysheetRightHeadClickIs)||ul(\"row\",n,1,\"lefttop\")})),$(\"#luckysheetColsRowsHandleAdd_column\").click((function(e){if($(\"#luckysheet-rightclick-menu\").hide(),fd(),!1===t.allowEdit)return;ul(\"column\",t.luckysheet_select_save[0].column[0],1,\"lefttop\")})),$(\".luckysheetColsRowsHandleAdd_custom\").click((function(n){$(\"#luckysheet-rightclick-menu\").hide();let a=e.cellRightClickConfig,l=t.luckysheet_select_save[0].row[0],r=t.luckysheet_select_save[0].column[0];if(a.customs[Number(n.currentTarget.dataset.index)])try{a.customs[Number(n.currentTarget.dataset.index)].onClick(n,event,{rowIndex:l,columnIndex:r})}catch(e){console.error(\"custom click error\",e)}})),$(\"#luckysheet-bottom-right-add-selected\").click((function(e){if(\"INPUT\"===e.target.nodeName)return;$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X(),a=n.drag,l=n.info;if(t.luckysheet_select_save.length>1)return void(I()?alert(a.noMulti):vo.info(a.noMulti,\"\"));let r=$(this).find(\"input\").val();if(!C(r))return void(I()?alert(l.tipInputNumber):vo.info(l.tipInputNumber,\"\"));if(r=parseInt(r),r<1||r>100)return void(I()?alert(l.tipInputNumberLimit):vo.info(l.tipInputNumberLimit,\"\"));let o=t.luckysheet_select_save[0][t.luckysheetRightHeadClickIs][1];!yl.createHookFunction(\"rowInsertBefore\",o,r,\"rightbottom\",t.luckysheetRightHeadClickIs)||ul(t.luckysheetRightHeadClickIs,o,r,\"rightbottom\")})),$(\"#luckysheet-del-selected, #luckysheet-del-selected_t\").click((function(e){$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X().drag;if(t.luckysheet_select_save.length>1)return void((\"row\"==t.luckysheetRightHeadClickIs||\"column\"==t.luckysheetRightHeadClickIs)&&(I()?alert(n.noMulti):vo.info(n.noMulti,\"\")));let a=t.luckysheet_select_save[0][t.luckysheetRightHeadClickIs][0],l=t.luckysheet_select_save[0][t.luckysheetRightHeadClickIs][1];!yl.createHookFunction(\"rowDeleteBefore\",a,l,t.luckysheetRightHeadClickIs)||hl(t.luckysheetRightHeadClickIs,a,l)})),$(\"#luckysheet-delRows\").click((function(e){$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X().drag;if(t.luckysheet_select_save.length>1)return void((\"row\"==t.luckysheetRightHeadClickIs||\"column\"==t.luckysheetRightHeadClickIs)&&(I()?alert(n.noMulti):vo.info(n.noMulti,\"\")));let a=t.luckysheet_select_save[0].row[0],l=t.luckysheet_select_save[0].row[1];!yl.createHookFunction(\"rowDeleteBefore\",a,l,\"row\")||hl(\"row\",a,l)})),$(\"#luckysheet-delCols\").click((function(e){$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X().drag;t.luckysheet_select_save.length>1?(\"row\"==t.luckysheetRightHeadClickIs||\"column\"==t.luckysheetRightHeadClickIs)&&(I()?alert(n.noMulti):vo.info(n.noMulti,\"\")):hl(\"column\",t.luckysheet_select_save[0].column[0],t.luckysheet_select_save[0].column[1])})),$(\"#luckysheet-hide-selected\").click((function(e){$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X().drag;if(t.luckysheet_select_save.length>1)(\"row\"==t.luckysheetRightHeadClickIs||\"column\"==t.luckysheetRightHeadClickIs)&&(I()?alert(n.noMulti):vo.info(n.noMulti,\"\"));else if(\"row\"==t.luckysheetRightHeadClickIs){if(!Ql(t.currentSheetIndex,\"formatRows\"))return;let e=$.extend(!0,{},t.config);null==e.rowhidden&&(e.rowhidden={});for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].row[0],l=t.luckysheet_select_save[n].row[1];for(let t=a;t<=l;t++)e.rowhidden[t]=0}if(t.clearjfundo){let n={type:\"showHidRows\"};n.sheetIndex=t.currentSheetIndex,n.config=$.extend(!0,{},t.config),n.curconfig=e,t.jfundo.length=0,t.jfredo.push(n)}t.config=e,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,e.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length)}else if(\"column\"==t.luckysheetRightHeadClickIs){if(!Ql(t.currentSheetIndex,\"formatColumns\"))return;let e=$.extend(!0,{},t.config);null==e.colhidden&&(e.colhidden={});for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].column[0],l=t.luckysheet_select_save[n].column[1];for(let t=a;t<=l;t++)e.colhidden[t]=0}if(t.clearjfundo){let n={type:\"showHidCols\"};n.sheetIndex=t.currentSheetIndex,n.config=$.extend(!0,{},t.config),n.curconfig=e,t.jfundo.length=0,t.jfredo.push(n)}t.config=e,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,e.colhidden,{k:\"colhidden\"}),co(t.flowdata.length,t.flowdata[0].length)}})),$(\"#luckysheet-show-selected\").click((function(e){$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=X().drag;if(t.luckysheet_select_save.length>1)(\"row\"==t.luckysheetRightHeadClickIs||\"column\"==t.luckysheetRightHeadClickIs)&&(I()?alert(n.noMulti):vo.info(n.noMulti,\"\"));else if(\"row\"==t.luckysheetRightHeadClickIs){if(!Ql(t.currentSheetIndex,\"formatRows\"))return;let e=$.extend(!0,{},t.config);if(null==e.rowhidden)return;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].row[0],l=t.luckysheet_select_save[n].row[1];for(let t=a;t<=l;t++)delete e.rowhidden[t]}if(t.clearjfundo){let n={type:\"showHidRows\"};n.sheetIndex=t.currentSheetIndex,n.config=$.extend(!0,{},t.config),n.curconfig=e,t.jfundo.length=0,t.jfredo.push(n)}t.config=e,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,e.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length)}else if(\"column\"==t.luckysheetRightHeadClickIs){if(!Ql(t.currentSheetIndex,\"formatColumns\"))return;let e=$.extend(!0,{},t.config);if(null==e.colhidden)return;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].column[0],l=t.luckysheet_select_save[n].column[1];for(let t=a;t<=l;t++)delete e.colhidden[t]}if(t.clearjfundo){let n={type:\"showHidCols\"};n.sheetIndex=t.currentSheetIndex,n.config=$.extend(!0,{},t.config),n.curconfig=e,t.jfundo.length=0,t.jfredo.push(n)}t.config=e,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,e.colhidden,{k:\"colhidden\"}),co(t.flowdata.length,t.flowdata[0].length)}})),$(\"#luckysheet-delCellsMoveLeft\").click((function(e){$(\"body .luckysheet-cols-menu\").hide(),fd();let n=X().drag;t.luckysheet_select_save.length>1?I()?alert(n.noMulti):vo.info(n.noMulti,\"\"):fl(\"moveLeft\",t.luckysheet_select_save[0].row[0],t.luckysheet_select_save[0].row[1],t.luckysheet_select_save[0].column[0],t.luckysheet_select_save[0].column[1])})),$(\"#luckysheet-delCellsMoveUp\").click((function(e){$(\"body .luckysheet-cols-menu\").hide(),fd();let n=X().drag;t.luckysheet_select_save.length>1?I()?alert(n.noMulti):vo.info(n.noMulti,\"\"):fl(\"moveUp\",t.luckysheet_select_save[0].row[0],t.luckysheet_select_save[0].row[1],t.luckysheet_select_save[0].column[0],t.luckysheet_select_save[0].column[1])})),$(\"#luckysheet-delete-text\").click((function(){if(Xl(t.luckysheet_select_save,t.currentSheetIndex)&&($(\"#luckysheet-rightclick-menu\").hide(),fd(),!1!==t.allowEdit&&t.luckysheet_select_save.length>0)){let e=mn.deepCopyFlowData(t.flowdata),n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(A(t.config,a,l,r,o)){n=!0;break}}if(n){let e=X().drag;return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a,l=t.luckysheetfile[Mt(t.currentSheetIndex)],r=l.hyperlink&&$.extend(!0,{},l.hyperlink);for(let n=0;n<t.luckysheet_select_save.length;n++){let l=t.luckysheet_select_save[n].row[0],o=t.luckysheet_select_save[n].row[1],i=t.luckysheet_select_save[n].column[0],s=t.luckysheet_select_save[n].column[1];for(let n=l;n<=o;n++)for(let l=i;l<=s;l++)wr.isPivotRange(n,l)||(\"object\"==ad(e[n][l])?(delete e[n][l].m,delete e[n][l].v,null!=e[n][l].f&&(delete e[n][l].f,wi.delFunctionGroup(n,l,t.currentSheetIndex),delete e[n][l].spl),null!=e[n][l].ct&&\"inlineStr\"==e[n][l].ct.t&&delete e[n][l].ct):e[n][l]=null,(null==r?void 0:r[`${n}_${l}`])&&(delete r[`${n}_${l}`],a=!0))}ao(e,t.luckysheet_select_save,a&&{hyperlink:r}),$(\"#luckysheet-rich-text-editor\").html(\"\")}})),$(\"#luckysheet-column-row-width-selected\").click((function(e){if(\"INPUT\"===e.target.nodeName)return;$(\"#luckysheet-rightclick-menu\").hide(),fd();let n=parseInt($(this).closest(\".luckysheet-cols-menuitem\").find(\"input[type='number']\").val().trim()),a=X().info;if(isNaN(n))return void vo.info(a.tipInputNumber,\"\");let l,r=$.extend(!0,{},t.config),o=null;if(\"row\"==t.luckysheetRightHeadClickIs){if(!Ql(t.currentSheetIndex,\"formatRows\"))return;if(n<0||n>545)return void(I()?alert(a.tipRowHeightLimit):vo.info(a.tipRowHeightLimit,\"\"));l=\"resizeR\",null==r.rowlen&&(r.rowlen={});for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1];for(let e=a;e<=l;e++)r.rowlen[e]=n,o=rl.moveChangeSize(\"row\",e,n)}}else if(\"column\"==t.luckysheetRightHeadClickIs){if(!Ql(t.currentSheetIndex,\"formatColumns\"))return;if(n<0||n>2038)return void(I()?alert(a.tipColumnWidthLimit):vo.info(a.tipColumnWidthLimit,\"\"));l=\"resizeC\",null==r.columnlen&&(r.columnlen={});for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].column[0],l=t.luckysheet_select_save[e].column[1];for(let e=a;e<=l;e++)r.columnlen[e]=n,o=rl.moveChangeSize(\"column\",e,n)}}t.clearjfundo&&(t.jfundo.length=0,t.jfredo.push({type:\"resize\",ctrlType:l,sheetIndex:t.currentSheetIndex,config:$.extend(!0,{},t.config),curconfig:$.extend(!0,{},r),images:$.extend(!0,{},rl.images),curImages:$.extend(!0,{},o)})),t.config=r,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,t.luckysheetfile[Mt(t.currentSheetIndex)].images=o,yo.saveParam(\"all\",t.currentSheetIndex,o,{k:\"images\"}),rl.images=o,rl.allImagesShow(),\"row\"==t.luckysheetRightHeadClickIs?(yo.saveParam(\"cg\",t.currentSheetIndex,r.rowlen,{k:\"rowlen\"}),co(t.flowdata.length,null)):\"column\"==t.luckysheetRightHeadClickIs&&(yo.saveParam(\"cg\",t.currentSheetIndex,r.columnlen,{k:\"columnlen\"}),co(null,t.flowdata[0].length))}))}var Yd=y((()=>{Vr(),wl(),il(),ed(),_o(),kl(),Xu(),_d(),qt(),na(),E(),La(),Ci(),pl(),fo(),Yn(),Co(),gn(),K(),da(),Kn(),zn(),dr(),x(),w()}));function Xd(e,n,a,l){if(!$(\"#luckysheet-formula-search-c\").is(\":visible\")||\"up\"!=e&&\"down\"!=e){if($(\"#luckysheet-formula-functionrange-select\").is(\":visible\")){if(n&&a)Ha(e,\"rangeOfFormula\");else if(n)Va(e,\"rangeOfFormula\");else if(a){let t=e,n=1;\"up\"==e&&(t=\"down\",n=-1),\"left\"==e&&(t=\"right\",n=-1),qa(t,n,\"rangeOfFormula\")}else{let t=e,n=1;\"up\"==e&&(t=\"down\",n=-1),\"left\"==e&&(t=\"right\",n=-1),Ba(t,n,\"rangeOfFormula\")}l.preventDefault()}else if(wi.israngeseleciton()){let r=$(window.getSelection().anchorNode);if(null==r.parent().next().text()||\"\"==r.parent().next().text()){let r=$(\"#luckysheet-input-box #luckysheet-input-box-index\").text(),o=wi.getcellrange(r);null==o&&(o=wi.getcellrange($(\"#luckysheet-input-box-index\").text()));let i=o.row[0],s=o.row[1],c=o.column[0],u=o.column[1],d=t.visibledatarow[s],h=i-1==-1?0:t.visibledatarow[i-1],f=t.visibledatacolumn[u],m=c-1==-1?0:t.visibledatacolumn[c-1];if(wi.func_selectedrange={left:m,width:f-m-1,top:h,height:d-h-1,left_move:m,width_move:f-m-1,top_move:h,height_move:d-h-1,row:[i,s],column:[c,u],row_focus:i,column_focus:c},wi.rangeSetValue({row:[i,s],column:[c,u]}),wi.rangestart=!0,wi.rangedrag_column_start=!1,wi.rangedrag_row_start=!1,n&&a)Ha(e,\"rangeOfFormula\");else if(n)Va(e,\"rangeOfFormula\");else if(a){let t=e,n=1;\"up\"==e&&(t=\"down\",n=-1),\"left\"==e&&(t=\"right\",n=-1),qa(t,n,\"rangeOfFormula\")}else{let t=e,n=1;\"up\"==e&&(t=\"down\",n=-1),\"left\"==e&&(t=\"right\",n=-1),Ba(t,n,\"rangeOfFormula\")}l.preventDefault()}}else if(!n&&!a){let n=$(window.getSelection().anchorNode),a=window.getSelection().anchorOffset;\"up\"==e?(n.parent().is(\"span\")&&0==n.parent().next().length&&a>0||n.is(\"#luckysheet-rich-text-editor\")&&n.context.childElementCount==a||n.parent().is(\"#luckysheet-rich-text-editor\")&&n.context.length==a)&&(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"down\",-1,\"rangeOfSelect\"),l.preventDefault()):\"down\"==e?(n.parent().is(\"span\")&&0==n.parent().next().length&&a>0||n.is(\"#luckysheet-rich-text-editor\")&&n.context.childElementCount==a||n.parent().is(\"#luckysheet-rich-text-editor\")&&n.context.length==a)&&(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"down\",1,\"rangeOfSelect\"),l.preventDefault()):\"left\"==e?n.parent().is(\"span\")&&0==n.parent().prev().length&&0==a||n.is(\"#luckysheet-rich-text-editor\")&&1==a||n.parent().is(\"#luckysheet-rich-text-editor\")&&0==a?(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"right\",-1,\"rangeOfSelect\"),l.preventDefault()):wi.rangeHightlightselected($(\"#luckysheet-rich-text-editor\")):\"right\"==e&&(n.parent().is(\"span\")&&0==n.parent().next().length&&a>0||n.is(\"#luckysheet-rich-text-editor\")&&n.context.childElementCount==a||n.parent().is(\"#luckysheet-rich-text-editor\")&&n.context.length==a?(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"right\",1,\"rangeOfSelect\"),l.preventDefault()):wi.rangeHightlightselected($(\"#luckysheet-rich-text-editor\")))}}else{let t;\"down\"==e?(t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\").next(),0==t.length&&(t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").first())):\"up\"==e&&(t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\").prev(),0==t.length&&(t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").last())),$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").removeClass(\"luckysheet-formula-search-item-active\"),t.addClass(\"luckysheet-formula-search-item-active\"),l.preventDefault()}}function Kd(){let n=X().drag;$(\"#luckysheet-input-box\").click((function(){wi.rangeHightlightselected($(\"#luckysheet-rich-text-editor\"))})).add(\"#\"+t.container).on(\"keydown\",(function(a){let l=a.ctrlKey,r=a.altKey,o=a.shiftKey,i=a.keyCode;if($(\"#luckysheet-modal-dialog-mask\").is(\":visible\")||$(a.target).hasClass(\"luckysheet-mousedown-cancel\")||$(a.target).hasClass(\"sp-input\")||parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0&&$(a.target).closest(\".luckysheet-input-box\").length>0&&i!=It.ENTER&&i!=It.TAB&&i!=It.UP&&i!=It.DOWN&&i!=It.LEFT&&i!=It.RIGHT){let e=$(window.getSelection().anchorNode);if((e.parent().is(\"#luckysheet-helpbox-cell\")||e.is(\"#luckysheet-helpbox-cell\"))&&i==It.ENTER){let e=$(\"#luckysheet-helpbox-cell\").text();if(wi.iscelldata(e)){let n=wi.getcellrange(e);t.luckysheet_select_save=[{row:n.row,column:n.column,row_focus:n.row[0],column_focus:n.column[0]}],Pu(),$(\"#luckysheet-helpbox-cell\").blur();let a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=$(\"#luckysheet-cell-main\").height(),o=$(\"#luckysheet-cell-main\").width(),i=t.visibledatarow[n.row[1]],s=n.row[0]-1==-1?0:t.visibledatarow[n.row[0]-1],c=t.visibledatacolumn[n.column[1]],u=n.column[0]-1==-1?0:t.visibledatacolumn[n.column[0]-1];c-a-o+20>0?$(\"#luckysheet-scrollbar-x\").scrollLeft(c-o+20):u-a-20<0&&$(\"#luckysheet-scrollbar-x\").scrollLeft(u-20),i-l-r+20>0?$(\"#luckysheet-scrollbar-y\").scrollTop(i-r+20):s-l-20<0&&$(\"#luckysheet-scrollbar-y\").scrollTop(s-20)}}return}if($(\"#luckysheet-modal-dialog-mask\").is(\":visible\")||$(a.target).hasClass(\"luckysheet-mousedown-cancel\")||$(a.target).hasClass(\"formulaInputFocus\"))return;let s=$(\"#luckysheet-input-box\");if((r||a.metaKey)&&i==It.ENTER&&parseInt(s.css(\"top\"))>0){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1],n=e.row_focus,l=e.column_focus;In(t.flowdata[n][l]),a.preventDefault()}else if(i==It.ENTER&&parseInt(s.css(\"top\"))>0)$(\"#luckysheet-formula-search-c\").is(\":visible\")&&null!=wi.searchFunctionCell?wi.searchFunctionEnter($(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\")):(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),t.luckysheet_select_save=[{row:[t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[0]],column:[t.luckysheetCellUpdate[1],t.luckysheetCellUpdate[1]],row_focus:t.luckysheetCellUpdate[0],column_focus:t.luckysheetCellUpdate[1]}],Ba(\"down\",1,\"rangeOfSelect\")),$(\"#luckysheet-search-formula-parm\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm\").hide(),$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm-select\").hide(),a.preventDefault();else if(i==It.TAB){if(parseInt(s.css(\"top\"))>0)return;Ba(\"right\",1,\"rangeOfSelect\"),a.preventDefault()}else if(i==It.F2){if(parseInt(s.css(\"top\"))>0)return;let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata),a.preventDefault()}else if(i==It.F4&&parseInt(s.css(\"top\"))>0)wi.setfreezonFuc(a),a.preventDefault();else if(i==It.ESC&&parseInt(s.css(\"top\"))>0)wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\"),a.preventDefault();else if(i==It.ENTER){if($(a.target).hasClass(\"formulaInputFocus\")||$(\"#luckysheet-conditionformat-dialog\").is(\":visible\"))return;if(null!=String.fromCharCode(i)&&$(\"#luckysheet-cell-selected\").is(\":visible\")){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata),a.preventDefault()}}else{if(l||a.metaKey){if(o){if(Zd||(t.luckysheet_shiftpositon=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),t.luckysheet_shiftkeydown=!0),i==It.UP){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ha(\"up\",\"rangeOfSelect\")}else if(i==It.DOWN){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ha(\"down\",\"rangeOfSelect\")}else if(i==It.LEFT){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ha(\"left\",\"rangeOfSelect\")}else if(i==It.RIGHT){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ha(\"right\",\"rangeOfSelect\")}else if(186==i||222==i){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata,!0);let n=ld(2);$(\"#luckysheet-rich-text-editor\").html(n),wn($(\"#luckysheet-rich-text-editor\")[0]),wi.functionInputHanddler($(\"#luckysheet-functionbox-cell\"),$(\"#luckysheet-rich-text-editor\"),i)}}else if(66==i)$(\"#luckysheet-icon-bold\").click();else{if(67==i){if(null!=rl.currentImgId)return void rl.copyImgItem(a);if(Yu.luckysheetPaintModelOn&&Yu.cancelPaintModel(),0==t.luckysheet_select_save.length)return;if(null!=t.config.merge){let e=!1;for(let n=0;n<t.luckysheet_select_save.length;n++){let a=t.luckysheet_select_save[n].row[0],l=t.luckysheet_select_save[n].row[1],r=t.luckysheet_select_save[n].column[0],o=t.luckysheet_select_save[n].column[1];if(e=A(t.config,a,l,r,o),e)break}if(e)return void(I()?alert(n.noMerge):vo.info(n.noMerge,\"\"))}let e=t.luckysheetfile[Mt(t.currentSheetIndex)].luckysheet_conditionformat_save;if(t.luckysheet_select_save.length>1&&null!=e&&e.length>0){let e=!1,a=ko.getComputeMap();e:for(let n=0;n<t.luckysheet_select_save.length&&!e;n++){let l=t.luckysheet_select_save[n].row[0],r=t.luckysheet_select_save[n].row[1],o=t.luckysheet_select_save[n].column[0],i=t.luckysheet_select_save[n].column[1];for(let t=l;t<=r;t++)for(let n=o;n<=i;n++)if(null!=ko.checksCF(t,n,a)){e=!0;continue e}}if(e)return void(I()?alert(n.noMulti):vo.info(n.noMulti,\"\"))}if(t.luckysheet_select_save.length>1){let e=!0,a=t.luckysheet_select_save[0].row[0],l=t.luckysheet_select_save[0].row[1],r=!0,o=t.luckysheet_select_save[0].column[0],i=t.luckysheet_select_save[0].column[1];for(let n=1;n<t.luckysheet_select_save.length;n++)(t.luckysheet_select_save[n].row[0]!=a||t.luckysheet_select_save[n].row[1]!=l)&&(e=!1),(t.luckysheet_select_save[n].column[0]!=o||t.luckysheet_select_save[n].column[1]!=i)&&(r=!1);if(!e&&!r||Ou())return void(I()?alert(n.noMulti):vo.info(n.noMulti,\"\"))}return wo.copy(a),t.luckysheet_paste_iscut=!1,hd(),void a.stopPropagation()}if(70==i)Cs.createDialog(0),Cs.init(),$(\"#luckysheet-search-replace #searchInput input\").focus();else if(72==i)Cs.createDialog(1),Cs.init(),$(\"#luckysheet-search-replace #searchInput input\").focus();else if(73==i)$(\"#luckysheet-icon-italic\").click();else{if(86==i){if(I()||!1===t.allowEdit||$(a.target).hasClass(\"formulaInputFocus\"))return;return t.luckysheet_select_save.length>1?void(I()?alert(n.noPaste):vo.info(n.noPaste,\"\")):(wo.isPasteAction=!0,hd(),void a.stopPropagation())}if(88==i){if(Yu.luckysheetPaintModelOn&&Yu.cancelPaintModel(),0==t.luckysheet_select_save.length)return;if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(e.editMode?alert(_locale_drag.noMerge):vo.info(_locale_drag.noMerge,\"\"))}return t.luckysheet_select_save.length>1?void(I()?alert(n.noMulti):vo.info(n.noMulti,\"\")):(wo.copy(a),t.luckysheet_paste_iscut=!0,hd(),void a.stopPropagation())}if(90==i)return Si.redo(a),hd(),void a.stopPropagation();if(89==i)return Si.undo(a),hd(),void a.stopPropagation();if(i==It.UP){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Va(\"up\",\"rangeOfSelect\")}else if(i==It.DOWN){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Va(\"down\",\"rangeOfSelect\")}else if(i==It.LEFT){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Va(\"left\",\"rangeOfSelect\")}else if(i==It.RIGHT){if(parseInt(s.css(\"top\"))>0||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Va(\"right\",\"rangeOfSelect\")}else if(186==i){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata,!0);let n=ld(1);$(\"#luckysheet-rich-text-editor\").html(n),wn($(\"#luckysheet-rich-text-editor\")[0]),wi.functionInputHanddler($(\"#luckysheet-functionbox-cell\"),$(\"#luckysheet-rich-text-editor\"),i)}else if(222==i){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata,!0);let n=ld(2);$(\"#luckysheet-rich-text-editor\").html(n),wn($(\"#luckysheet-rich-text-editor\")[0]),wi.functionInputHanddler($(\"#luckysheet-functionbox-cell\"),$(\"#luckysheet-rich-text-editor\"),i)}else\"A\"==String.fromCharCode(i).toLocaleUpperCase()&&$(\"#luckysheet-left-top\").click()}}return void a.preventDefault()}if(o&&(i==It.UP||i==It.DOWN||i==It.LEFT||i==It.RIGHT||r&&(53==i||101==i))){if(parseInt(s.css(\"top\"))>0||$(a.target).hasClass(\"formulaInputFocus\"))return;if(Zd||(t.luckysheet_shiftpositon=$.extend(!0,{},t.luckysheet_select_save[t.luckysheet_select_save.length-1]),t.luckysheet_shiftkeydown=!0),i==It.UP){if($(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;qa(\"down\",-1,\"rangeOfSelect\")}else if(i==It.DOWN){if($(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;qa(\"down\",1,\"rangeOfSelect\")}else if(i==It.LEFT){if($(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;qa(\"right\",-1,\"rangeOfSelect\")}else if(i==It.RIGHT){if($(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;qa(\"right\",1,\"rangeOfSelect\")}else r&&(53==i||101==i)&&$(\"#luckysheet-icon-strikethrough\").click();a.preventDefault()}else if(i==It.ESC)Yu.luckysheetPaintModelOn?Yu.cancelPaintModel():($o(a),a.preventDefault()),Pu();else if(i==It.DELETE||i==It.BACKSPACE)null!=rl.currentImgId?rl.removeImgItem():$(\"#luckysheet-delete-text\").click(),a.preventDefault();else if(8==i&&null!=rl.currentImgId)rl.removeImgItem(),a.preventDefault();else if(i==It.UP){if(parseInt(s.css(\"top\"))>0||t.luckysheet_cell_selected_move||t.luckysheet_cell_selected_extend||$(a.target).hasClass(\"formulaInputFocus\")||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ba(\"down\",-1,\"rangeOfSelect\"),a.preventDefault()}else if(i==It.DOWN){if(parseInt(s.css(\"top\"))>0||t.luckysheet_cell_selected_move||t.luckysheet_cell_selected_extend||$(a.target).hasClass(\"formulaInputFocus\")||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ba(\"down\",1,\"rangeOfSelect\"),a.preventDefault()}else if(i==It.LEFT){if(parseInt(s.css(\"top\"))>0||t.luckysheet_cell_selected_move||t.luckysheet_cell_selected_extend||$(a.target).hasClass(\"formulaInputFocus\")||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ba(\"right\",-1,\"rangeOfSelect\"),a.preventDefault()}else if(i==It.RIGHT){if(parseInt(s.css(\"top\"))>0||t.luckysheet_cell_selected_move||t.luckysheet_cell_selected_extend||$(a.target).hasClass(\"formulaInputFocus\")||$(\"#luckysheet-singleRange-dialog\").is(\":visible\")||$(\"#luckysheet-multiRange-dialog\").is(\":visible\"))return;Ba(\"right\",1,\"rangeOfSelect\"),a.preventDefault()}else if((!(i>=112&&i<=123||i<=46||144==i||108==i||a.ctrlKey||a.altKey||a.shiftKey&&(37==i||38==i||39==i||40==i))||8==i||32==i||46==i||0==i||a.ctrlKey&&86==i)&&null!=String.fromCharCode(i)&&$(\"#luckysheet-cell-selected\").is(\":visible\")&&i!=It.CAPSLOCK&&i!=It.WIN&&18!=i){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata,!0),8==i&&$(\"#luckysheet-rich-text-editor\").html(\"<br/>\"),wi.functionInputHanddler($(\"#luckysheet-functionbox-cell\"),$(\"#luckysheet-rich-text-editor\"),i)}}hd(),a.stopPropagation()})),$(\"#\"+t.container).add(\"#luckysheet-input-box\").keydown((function(e){if($(\"#luckysheet-modal-dialog-mask\").is(\":visible\")||$(e.target).hasClass(\"luckysheet-mousedown-cancel\")||$(e.target).hasClass(\"formulaInputFocus\"))return;let n=e.ctrlKey,a=(e.altKey,e.shiftKey),l=e.keyCode,r=$(\"#luckysheet-input-box\");l==It.ESC&&parseInt($(\"#luckysheet-input-box\").css(\"top\"))>0?(wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\"),e.preventDefault()):l==It.ENTER&&parseInt(r.css(\"top\"))>0?$(\"#luckysheet-formula-search-c\").is(\":visible\")&&null!=wi.searchFunctionCell&&(wi.searchFunctionEnter($(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\")),e.preventDefault()):l==It.TAB&&parseInt(r.css(\"top\"))>0?($(\"#luckysheet-formula-search-c\").is(\":visible\")&&null!=wi.searchFunctionCell?wi.searchFunctionEnter($(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\")):(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"right\",1,\"rangeOfSelect\")),e.preventDefault()):l==It.F4&&parseInt(r.css(\"top\"))>0?(wi.setfreezonFuc(e),e.preventDefault()):l==It.UP&&parseInt(r.css(\"top\"))>0?Xd(\"up\",n,a,e):l==It.DOWN&&parseInt(r.css(\"top\"))>0?Xd(\"down\",n,a,e):l==It.LEFT&&parseInt(r.css(\"top\"))>0?Xd(\"left\",n,a,e):l==It.RIGHT&&parseInt(r.css(\"top\"))>0?Xd(\"right\",n,a,e):(!(l>=112&&l<=123||l<=46||144==l||108==l||e.ctrlKey||e.altKey||e.shiftKey&&(37==l||38==l||39==l||40==l||l==It.WIN||l==It.WIN_R||l==It.MENU))||8==l||32==l||46==l||e.ctrlKey&&86==l)&&(wi.functionInputHanddler($(\"#luckysheet-functionbox-cell\"),$(\"#luckysheet-rich-text-editor\"),l),function(e,n,a){if(null==e||null==n)return;let l=a[e][n];if(null==l)return;let r=l.ht;if(null!=l&&\"0\"!=r)return;let o=xs(e,n,a),i=(o.row,o.row_pre,o.col),s=o.col_pre,c=($(window).height(),$(window).width()),u=$(\"#\"+t.container).offset(),d=$(\"#luckysheet-cell-main\").scrollLeft(),h=($(\"#luckysheet-cell-main\").scrollTop(),{\"min-width\":i-s+1-8,\"max-width\":2*c/3,left:s+u.left+t.rowHeaderWidth-d-2}),f=$(\"#luckysheet-input-box\").width();f>h[\"max-width\"]&&(f=h[\"max-width\"]),f<h[\"min-width\"]&&(f=h[\"min-width\"]);let m=h.left-f/2+(i-s)/2;m<2&&(m=2),h.left=m-2,$(\"#luckysheet-input-box\").css(h)}(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1],t.flowdata))})).keyup((function(e){let n=e.keyCode;!e.shiftKey&&16==n&&(t.luckysheet_shiftkeydown=!1,t.luckysheet_shiftpositon=null),parseInt($(\"#luckysheet-input-box\").css(\"top\")),e.preventDefault()})),$(\"#luckysheet_info_detail_input\").val(yo.title).css(\"width\",10*sd(yo.title)).keydown((function(){event.ctrlKey,event.altKey,event.shiftKey;let e=event.keyCode,t=$(this);e==It.ENTER&&t.blur().change()})).bind(\"input propertychange\",(function(){let e=10*sd($(this).val()),n=$(\"#luckysheet_info_detail_update\").outerWidth(),a=$(\"#luckysheet_info_detail_save\").outerWidth(),l=$(\"#luckysheet_info_detail_user\").parent().outerWidth()+60,r=$(\"#\"+t.container).outerWidth()-a-n-l-100;e>r?$(\"#luckysheet_info_detail_input\").css(\"width\",r):$(\"#luckysheet_info_detail_input\").css(\"width\",e)})).change((function(){yo.saveParam(\"na\",null,$(this).val())})),$(\"#\"+t.container).add(\"input.luckysheet-mousedown-cancel\").keydown((function(e){let t=e.target.closest(\".luckysheet-cols-menuitem\");void 0!==t&&null!=t&&13===e.keyCode&&$(t).trigger(\"click\")}))}var Zd,Jd=y((()=>{w(),ed(),To(),_o(),Ts(),Et(),Za(),Xu(),So(),$s(),Di(),il(),_d(),qt(),E(),Cn(),Ci(),Io(),Co(),K(),zn(),x(),Zd=!1}));var Qd=y((()=>{Et(),Xu(),dr(),_d(),da(),E(),Io(),fo(),Yn(),Lr(),Co(),gn(),ka(),x(),K()})),eh=y((()=>{}));function th(e,t,n){e.data}var nh=y((()=>{_d(),eh(),x()}));var ah,lh,rh=y((()=>{fi(),nh(),Md(),ah={chart:Zo,print:th,exportXlsx:Ed},lh=!0}));function oh(e){let t=e.trim().split(\"\\n\").map((e=>e.trim().split(\"\\t\")));return[t[0].map((e=>({v:e}))),...t.slice(1).map((e=>e.map((e=>({v:e})))))]}function ih(e){let t=e.trim().split(\"\\n\").map((e=>e.trim().split(\"\\t\")));return[t[0],...t.slice(1).map((e=>e.map((e=>e))))]}function sh(e,t){let n=function(e,t){let n=e.shift(),a=t.rows,l=t.values,r=[];function o(e,t){switch(e){case\"sum\":return t.reduce(((e,t)=>e+(parseFloat(t)||0)),0);case\"count\":return t.length;default:return null}}let i=e.filter((e=>null!=e[a[0]])).sort(((e,t)=>e[a[0]]<t[a[0]]?-1:e[a[0]]>t[a[0]]?1:0)),s=null,c=-1;return i.forEach((e=>{if(e[a[0]]!==s){c++,s=e[a[0]],r[c]=[{v:s}];for(let e=0;e<l.length;e++)r[c].push({v:\"\"})}for(let t=0;t<l.length;t++){let n=l[t].column,a=o(l[t].type,[e[n]]);\"\"===r[c][t+1].v?r[c][t+1].v=a:r[c][t+1].v+=a}})),r.unshift([{v:n[a[0]]}].concat(l.map((e=>({v:`${n[e.column]}`}))))),r}(e,{rows:[0],values:[{column:e[0].length-2,type:\"sum\"},{column:e[0].length-1,type:\"sum\"},{column:2,type:\"count\"}]});n=function(e){e.sort((function(e,t){return t[1].v=Math.round(t[1].v)||t[1].v||0,e[1].v=Math.round(e[1].v)||e[1].v||0,t[1].v-e[1].v})),e[0].unshift({v:\"排名\"});for(var t=1;t<e.length;t++)e[t].unshift({v:t});return e}(n);let a=!1;return\"分公司\"===n[0][1].v&&(a=!0,n=function(e,t){e[0].splice(1,0,{v:t[0][0]}),e[0].push({v:t[0][2]});let n={};for(let e=1;e<t.length;e++)n[t[e][1]]={area:t[e][0],salesTarget:t[e][2]};for(let t=1;t<e.length;t++){let a=e[t][1].v,l=n[a].area||\"\",r=parseFloat(n[a].salesTarget)||0;e[t].splice(1,0,{v:l}),e[t].push({v:r})}return e}(n,t)),n=a?function(e){let t=e[0].length-1,n=[{v:\"\"},{v:\"合计\"},{v:\"\"}];for(let a=3;a<=t;a++){let t=0;for(let n=1;n<e.length;n++)t+=parseInt(e[n][a].v)||0;n.push({v:parseInt(t)||0})}return e.splice(1,0,n),e}(n):function(e){let t=e[0].length-1,n=[{v:\"\"},{v:\"合计\"}];for(let a=2;a<=t;a++){let t=0;for(let n=1;n<e.length;n++)t+=parseInt(e[n][a].v)||0;n.push({v:parseInt(t)||0})}return e.splice(1,0,n),e}(n),a&&(n=function(e){let t=[];for(let n=3;n<e.length;n++){let a=e[n][1].v;t.includes(a)||t.push(a)}for(let n=0;n<t.length;n++){let a=t[n],l=0,r=0,o=0,i=0;for(let t=3;t<e.length;t++)e[t][1].v===a&&(l+=parseInt(e[t][3].v)||0,r+=parseInt(e[t][4].v)||0,o+=parseInt(e[t][5].v)||0,i+=parseInt(e[t][6].v)||0);let s=[{v:\"\"},{v:a},{v:\"\"},{v:parseInt(l)||0},{v:r},{v:o},{v:i}];e.splice(2,0,s)}return e}(n),n=function(e,t=\"达成率(销售额/销售目标)\"){e[0].push({v:t});for(let t=1;t<e.length;t++){let n=(e[t][3].v/(1e4*e[t][6].v)*100).toFixed(0)+\"%\";e[t].push({v:n})}return e}(n)),!a&&n[0]&&n[0][4]&&\"客户数\"===n[0][4].v&&(n[0][4].v=\"销售员人数\"),n}function ch(e,t={},n,a){$.ajax({url:e,data:t,beforeSend:function(e){e.setRequestHeader(\"Authorization\",`Bearer ${uh}.${dh}`)},success(e){null==n||n(e)},error(e){null==a||a(e)}})}var uh,dh,hh,fh,mh,ph,gh,yh,vh,bh,kh,wh,xh=y((()=>{uh=atob(\"cGF0b0h0bFlqMlJGWThhZks=\"),dh=atob(\"M2Y1ZThmNjNlMWM3OTRjN2Y1YjExOWFmNWJlMTg5MjRkOTIzZjc3YTQ3YjZhYWY5OTk2Y2E3NWMyZDU3YWRjNQ==\"),hh=\"区域\\t分公司\\t销售目标(万元)\\n中心区\\t青岛\\t2360\\n北区\\t内蒙古\\t400\\n中心区\\t佛山\\t450\\n北区\\t安徽\\t1810\\n北区\\t河北\\t2210\\n中心区\\t北京\\t2160\\n省会\\t青海\\t40\\n南区\\t福建\\t1200\\n南区\\t浙江\\t2060\\n南区\\t江西\\t2660\\n南区\\t湖南\\t1460\\n中心区\\t天津\\t750\\n北区\\t山东\\t7280\\n中心区\\t深圳\\t1410\\n省会\\t陕西\\t1000\\n北区\\t辽宁\\t2210\\n中心区\\t上海\\t1000\\n南区\\t江苏\\t2760\\n北区\\t黑龙江\\t5720\\n南区\\t广西\\t1100\\n省会\\t新疆\\t600\\n北区\\t河南\\t2710\\n省会\\t四川\\t7330\\n南区\\t湖北\\t5170\\n北区\\t吉林\\t1560\\n省会\\t重庆\\t1610\\n中心区\\t苏州\\t2060\\n中心区\\t宁波\\t500\\n省会\\t云南\\t1960\\n省会\\t贵州\\t600\\n北区\\t山西\\t1660\\n南区\\t广东\\t3060\\n省会\\t甘肃\\t450\\n中心区\\t大连\\t550\\n省会\\t海南\\t170\\n\",fh=\"区域\\t分公司\\t销售目标(万元)\\n中心区\\t青岛\\t2360\\n北区\\t内蒙古\\t400\\n中心区\\t佛山\\t450\\n北区\\t安徽\\t1810\\n北区\\t河北\\t2210\\n中心区\\t北京\\t2160\\n省会\\t青海\\t40\\n南区\\t福建\\t1200\\n南区\\t浙江\\t2060\\n南区\\t江西\\t2660\\n南区\\t湖南\\t1460\\n中心区\\t天津\\t750\\n北区\\t山东\\t7280\\n中心区\\t深圳\\t1410\\n省会\\t陕西\\t1000\\n北区\\t辽宁\\t2210\\n中心区\\t上海\\t1000\\n南区\\t江苏\\t2760\\n北区\\t黑龙江\\t5720\\n南区\\t广西\\t1100\\n省会\\t新疆\\t600\\n北区\\t河南\\t2710\\n省会\\t四川\\t7330\\n南区\\t湖北\\t5170\\n北区\\t吉林\\t1560\\n省会\\t重庆\\t1610\\n中心区\\t苏州\\t2060\\n中心区\\t宁波\\t500\\n省会\\t云南\\t1960\\n省会\\t贵州\\t600\\n北区\\t山西\\t1660\\n南区\\t广东\\t3060\\n省会\\t甘肃\\t450\\n中心区\\t大连\\t550\\n省会\\t海南\\t170\\n\",mh=\"区域\\t分公司\\t销售目标(万元)\\n中心区\\t青岛\\t3240\\n北区\\t内蒙古\\t1280\\n中心区\\t佛山\\t1330\\n北区\\t安徽\\t2690\\n北区\\t河北\\t3090\\n中心区\\t北京\\t3040\\n省会\\t青海\\t920\\n南区\\t福建\\t2080\\n南区\\t浙江\\t2940\\n南区\\t江西\\t3540\\n南区\\t湖南\\t2340\\n中心区\\t天津\\t1630\\n北区\\t山东\\t8160\\n中心区\\t深圳\\t2290\\n省会\\t陕西\\t1880\\n北区\\t辽宁\\t3090\\n中心区\\t上海\\t1880\\n南区\\t江苏\\t3640\\n北区\\t黑龙江\\t6600\\n南区\\t广西\\t1980\\n省会\\t新疆\\t1480\\n北区\\t河南\\t3590\\n省会\\t四川\\t8210\\n南区\\t湖北\\t6050\\n北区\\t吉林\\t2440\\n省会\\t重庆\\t2490\\n中心区\\t苏州\\t2940\\n中心区\\t宁波\\t1380\\n省会\\t云南\\t2840\\n省会\\t贵州\\t1480\\n北区\\t山西\\t2540\\n南区\\t广东\\t3940\\n省会\\t甘肃\\t1330\\n中心区\\t大连\\t1430\\n省会\\t海南\\t1050\\n\\n\",ph=\"区域\\t分公司\\t销售目标(万元)\\n中心区\\t青岛\\t4760\\n北区\\t内蒙古\\t2800\\n中心区\\t佛山\\t2850\\n北区\\t安徽\\t4210\\n北区\\t河北\\t4610\\n中心区\\t北京\\t4560\\n省会\\t青海\\t2440\\n南区\\t福建\\t3600\\n南区\\t浙江\\t4460\\n南区\\t江西\\t5060\\n南区\\t湖南\\t3860\\n中心区\\t天津\\t3150\\n北区\\t山东\\t9680\\n中心区\\t深圳\\t3810\\n省会\\t陕西\\t3400\\n北区\\t辽宁\\t4610\\n中心区\\t上海\\t3400\\n南区\\t江苏\\t5160\\n北区\\t黑龙江\\t8120\\n南区\\t广西\\t3500\\n省会\\t新疆\\t3000\\n北区\\t河南\\t5110\\n省会\\t四川\\t9730\\n南区\\t湖北\\t7570\\n北区\\t吉林\\t3960\\n省会\\t重庆\\t4010\\n中心区\\t苏州\\t4460\\n中心区\\t宁波\\t2900\\n省会\\t云南\\t4360\\n省会\\t贵州\\t3000\\n北区\\t山西\\t4060\\n南区\\t广东\\t5460\\n省会\\t甘肃\\t2850\\n中心区\\t大连\\t2950\\n省会\\t海南\\t2570\\n\"})),_h=y((()=>{w(),Ko(),Lo(),qt(),ed(),qr(),Ci(),No(),gn(),ka(),E(),fo(),Ma(),Lr(),Yn(),_d(),x(),gh=k(ma()),yh=k(wa()),xh(),Pa(),vh={SUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(C(n))t.push(n);else{if(\"boolean\"!=ad(n))return wi.error.v;\"true\"==n.toString().toLowerCase()?t.push(1):\"false\"==n.toString().toLowerCase()&&t.push(0)}}var a=0;if(t.length>0)for(e=0;e<t.length;e++){if(T(t[e]))return t[e];!C(t[e])||(a=Vo(a,\"+\",t[e]))}return a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},AVERAGE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else t=t.concat(n);else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!0)):t.push(n)}var a=0,l=0;for(e=0;e<t.length;e++){if(T(t[e]))return t[e];if(!C(t[e]))return wi.error.v;a=Vo(a,\"+\",t[e]),l++}return 0==l?wi.error.d:Vo(a,\"/\",l)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},COUNT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else t=t.concat(n);else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!0)):\"boolean\"==ad(n)?\"true\"==n.toString().toLowerCase()?t.push(1):\"false\"==n.toString().toLowerCase()&&t.push(0):t.push(n)}var a=0;for(e=0;e<t.length;e++)C(t[e])&&a++;return a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},COUNTA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n))}else t=t.concat(n);else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!0)):t.push(n)}return t.length}catch(e){return e=wi.errorInfo(e),[wi.error.v,e]}},MAX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else t=t.concat(n);else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}var a=null;for(e=0;e<t.length;e++){if(T(t[e]))return t[e];!C(t[e])||(null==a||parseFloat(t[e])>a)&&(a=parseFloat(t[e]))}return null==a?0:a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},MIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else t=t.concat(n);else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}var a=null;for(e=0;e<t.length;e++){if(T(t[e]))return t[e];!C(t[e])||(null==a||parseFloat(t[e])<a)&&(a=parseFloat(t[e]))}return null==a?0:a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},AGE_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!window.luckysheet_function.ISIDCARD.f(t))return wi.error.v;var n=window.luckysheet_function.BIRTHDAY_BY_IDCARD.f(t);if(T(n))return n;n=(0,gh.default)(n);var a=(0,gh.default)();if(2==arguments.length){if(T(a=Eo.getFirstValue(arguments[1])))return a;a=(0,gh.default)(a)}var l=a.diff(n,\"years\");return l<0||\"NaN\"==l.toString()?wi.error.v:l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},SEX_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]).toString();return T(t)?t:window.luckysheet_function.ISIDCARD.f(t)?parseInt(t.substr(16,1))%2==1?\"男\":\"女\":wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},BIRTHDAY_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]).toString();if(T(t))return t;if(!window.luckysheet_function.ISIDCARD.f(t))return wi.error.v;var n=\"\";if(15==t.length)n=\"19\"+t.substring(6,8)+\"/\"+t.substring(8,10)+\"/\"+t.substring(10,12);else if(18==t.length){n=t.substring(6,10)+\"/\"+t.substring(10,12)+\"/\"+t.substring(12,14)}var a=0;if(null!=arguments[1]&&T(a=Eo.getFirstValue(arguments[1])))return a;if(!C(a))return wi.error.v;if((a=parseInt(a))<0||a>2)return wi.error.v;if(0==parseInt(a))return n;if(1==parseInt(a))return(0,gh.default)(n).format(\"YYYY-MM-DD\");if(2==parseInt(a))return(0,gh.default)(n).format(\"YYYY年M月D日\")}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},PROVINCE_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]).toString();if(T(t))return t;if(!window.luckysheet_function.ISIDCARD.f(t))return wi.error.v;var n=\"未知\",a=wi.classlist.province;return t.substring(0,2)in a&&(n=a[t.substring(0,2)]),n}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},CITY_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]).toString();if(T(t))return t;if(!window.luckysheet_function.ISIDCARD.f(t))return wi.error.v;var n=cityData.length,a=\"未知\";for(e=0;e<n;e++)if(t.substring(0,6)==cityData[e].code){a=cityData[e].title;break}return a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},STAR_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!window.luckysheet_function.ISIDCARD.f(t))return wi.error.v;var n=window.luckysheet_function.BIRTHDAY_BY_IDCARD.f(t);if(T(n))return n;var a=(n=new Date(n)).getMonth(),l=n.getDate(),r=new Date(1999,a,l,0,0,0),o=[];o.push([\"魔羯座\",new Date(1999,0,1,0,0,0)]),o.push([\"水瓶座\",new Date(1999,0,20,0,0,0)]),o.push([\"双鱼座\",new Date(1999,1,19,0,0,0)]),o.push([\"白羊座\",new Date(1999,2,21,0,0,0)]),o.push([\"金牛座\",new Date(1999,3,21,0,0,0)]),o.push([\"双子座\",new Date(1999,4,21,0,0,0)]),o.push([\"巨蟹座\",new Date(1999,5,22,0,0,0)]),o.push([\"狮子座\",new Date(1999,6,23,0,0,0)]),o.push([\"处女座\",new Date(1999,7,23,0,0,0)]),o.push([\"天秤座\",new Date(1999,8,23,0,0,0)]),o.push([\"天蝎座\",new Date(1999,9,23,0,0,0)]),o.push([\"射手座\",new Date(1999,10,22,0,0,0)]),o.push([\"魔羯座\",new Date(1999,11,22,0,0,0)]);for(e=o.length-1;e>=0;e--)if(r>=o[e][1])return o[e][0];return\"未找到匹配星座信息\"}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},ANIMAL_BY_IDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!window.luckysheet_function.ISIDCARD.f(t))return wi.error.v;var n=window.luckysheet_function.BIRTHDAY_BY_IDCARD.f(t);if(T(n))return n;n=new Date(n);var a=new Array(\"猪\",\"鼠\",\"牛\",\"虎\",\"兔\",\"龙\",\"蛇\",\"马\",\"羊\",\"猴\",\"鸡\",\"狗\"),l=(parseInt(n.getFullYear())+9)%12;return null==l||isNaN(l)?\"未找到匹配生肖信息\":a[l]}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},ISIDCARD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;return!!/(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(t)}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},DM_TEXT_CUTWORD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0],\"text\");if(T(r))return r;var o=0;return null!=arguments[1]&&T(o=Eo.getFirstValue(arguments[1]))?o:C(o)?0!=(o=parseInt(o))&&1!=o&&2!=o?wi.error.v:($.post(\"/dataqk/tu/api/cutword\",{text:r,type:o},(function(e){var r=[].concat(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},DM_TEXT_TFIDF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0],\"text\");if(T(r))return r;var o=20;if(null!=arguments[1]&&T(o=Eo.getFirstValue(arguments[1])))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=0;return null!=arguments[2]&&T(i=Eo.getFirstValue(arguments[2]))?i:C(i)?(i=parseInt(i),o<0||0!=i&&1!=i&&2!=i?wi.error.v:($.post(\"/dataqk/tu/api/tfidf\",{text:r,count:o,set:i},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\")):wi.error.v}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},DM_TEXT_TEXTRANK:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0],\"text\");if(T(r))return r;var o=20;if(null!=arguments[1]&&T(o=Eo.getFirstValue(arguments[1])))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=0;return null!=arguments[2]&&T(i=Eo.getFirstValue(arguments[2]))?i:C(i)?(i=parseInt(i),o<0||0!=i&&1!=i&&2!=i?wi.error.v:($.post(\"/dataqk/tu/api/tfidf\",{text:r,count:o,set:i},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\")):wi.error.v}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},DATA_CN_STOCK_CLOSE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);if(T(r))return r;var o=null;if(null!=arguments[1]){var i=arguments[1];if(\"array\"==ad(i))return wi.error.v;if(\"object\"==ad(i)&&null!=i.startCell){if(null==i.data||\"array\"==ad(i.data)||null==i.data.ct||\"d\"!=i.data.ct.t)return wi.error.v;o=Ca(\"yyyy-mm-dd\",i.data.v)}else o=i;if(!pa(o))return[wi.error.v,\"日期错误\"];o=(0,gh.default)(o).format(\"YYYY-MM-DD\")}var s=0;return null!=arguments[2]&&T(s=Eo.getFirstValue(arguments[2]))?s:C(s)?0!=(s=parseInt(s))&&1!=s&&2!=s?wi.error.v:($.post(\"/dataqk/tu/api/getstockinfo\",{stockCode:r,date:o,price:s,type:\"0\"},(function(e){var r=mn.deepCopyFlowData(t.flowdata),o=md(e);null==o&&(o=e),wi.execFunctionGroup(n,a,o),r[n][a]={v:o,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DATA_CN_STOCK_OPEN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);if(T(r))return r;var o=null;if(null!=arguments[1]){var i=arguments[1];if(\"array\"==ad(i))return wi.error.v;if(\"object\"==ad(i)&&null!=i.startCell){if(null==i.data||\"array\"==ad(i.data)||null==i.data.ct||\"d\"!=i.data.ct.t)return wi.error.v;o=Ca(\"yyyy-mm-dd\",i.data.v)}else o=i;if(!pa(o))return[wi.error.v,\"日期错误\"];o=(0,gh.default)(o).format(\"YYYY-MM-DD\")}var s=0;return null!=arguments[2]&&T(s=Eo.getFirstValue(arguments[2]))?s:C(s)?0!=(s=parseInt(s))&&1!=s&&2!=s?wi.error.v:($.post(\"/dataqk/tu/api/getstockinfo\",{stockCode:r,date:o,price:s,type:\"1\"},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DATA_CN_STOCK_MAX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);if(T(r))return r;var o=null;if(null!=arguments[1]){var i=arguments[1];if(\"array\"==ad(i))return wi.error.v;if(\"object\"==ad(i)&&null!=i.startCell){if(null==i.data||\"array\"==ad(i.data)||null==i.data.ct||\"d\"!=i.data.ct.t)return wi.error.v;o=Ca(\"yyyy-mm-dd\",i.data.v)}else o=i;if(!pa(o))return[wi.error.v,\"日期错误\"];o=(0,gh.default)(o).format(\"YYYY-MM-DD\")}var s=0;return null!=arguments[2]&&T(s=Eo.getFirstValue(arguments[2]))?s:C(s)?0!=(s=parseInt(s))&&1!=s&&2!=s?wi.error.v:($.post(\"/dataqk/tu/api/getstockinfo\",{stockCode:r,date:o,price:s,type:\"2\"},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DATA_CN_STOCK_MIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);if(T(r))return r;var o=null;if(null!=arguments[1]){var i=arguments[1];if(\"array\"==ad(i))return wi.error.v;if(\"object\"==ad(i)&&null!=i.startCell){if(null==i.data||\"array\"==ad(i.data)||null==i.data.ct||\"d\"!=i.data.ct.t)return wi.error.v;o=Ca(\"yyyy-mm-dd\",i.data.v)}else o=i;if(!pa(o))return[wi.error.v,\"日期错误\"];o=(0,gh.default)(o).format(\"YYYY-MM-DD\")}var s=0;return null!=arguments[2]&&T(s=Eo.getFirstValue(arguments[2]))?s:C(s)?0!=(s=parseInt(s))&&1!=s&&2!=s?wi.error.v:($.post(\"/dataqk/tu/api/getstockinfo\",{stockCode:r,date:o,price:s,type:\"3\"},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DATA_CN_STOCK_VOLUMN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);if(T(r))return r;var o=null;if(null!=arguments[1]){var i=arguments[1];if(\"array\"==ad(i))return wi.error.v;if(\"object\"==ad(i)&&null!=i.startCell){if(null==i.data||\"array\"==ad(i.data)||null==i.data.ct||\"d\"!=i.data.ct.t)return wi.error.v;o=Ca(\"yyyy-mm-dd\",i.data.v)}else o=i;if(!pa(o))return[wi.error.v,\"日期错误\"];o=(0,gh.default)(o).format(\"YYYY-MM-DD\")}var s=0;return null!=arguments[2]&&T(s=Eo.getFirstValue(arguments[2]))?s:C(s)?0!=(s=parseInt(s))&&1!=s&&2!=s?wi.error.v:($.post(\"/dataqk/tu/api/getstockinfo\",{stockCode:r,date:o,price:s,type:\"4\"},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DATA_CN_STOCK_AMOUNT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);if(T(r))return r;var o=null;if(null!=arguments[1]){var i=arguments[1];if(\"array\"==ad(i))return wi.error.v;if(\"object\"==ad(i)&&null!=i.startCell){if(null==i.data||\"array\"==ad(i.data)||null==i.data.ct||\"d\"!=i.data.ct.t)return wi.error.v;o=Ca(\"yyyy-mm-dd\",i.data.v)}else o=i;if(!pa(o))return[wi.error.v,\"日期错误\"];o=(0,gh.default)(o).format(\"YYYY-MM-DD\")}var s=0;return null!=arguments[2]&&T(s=Eo.getFirstValue(arguments[2]))?s:C(s)?0!=(s=parseInt(s))&&1!=s&&2!=s?wi.error.v:($.post(\"/dataqk/tu/api/getstockinfo\",{stockCode:r,date:o,price:s,type:\"5\"},(function(e){var r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"loading...\"):wi.error.v}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},ISDATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:pa(t)}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},SUMIF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=0,n=arguments[0].data,a=arguments[0].rowl,l=arguments[0].coll,r=Ho(arguments[1]);if(n=wi.getRangeArray(n)[0],arguments[2]){var o=[],i=arguments[2].startCell,s=arguments[2].rowl,c=arguments[2].coll,u=arguments[2].sheetName;if(a==s&&l==c)o=arguments[2].data;else{var d=[],h=[];d[0]=parseInt(i.replace(/[^0-9]/g,\"\"))-1,h[0]=od(i.replace(/[^A-Za-z]/g,\"\")),d[1]=d[0]+a-1,h[1]=h[0]+l-1,o=qo(u+\"!\"+i+\":\"+(id(h[1])+(d[1]+1))).data}o=wi.getRangeArray(o)[0];for(e=0;e<n.length;e++){if((f=n[e])&&wi.acompareb(f,r)){if(!C(o[e]))continue;t=Vo(t,\"+\",o[e])}}}else for(e=0;e<n.length;e++){var f;if((f=n[e])&&wi.acompareb(f,r)){if(!C(f))continue;t=Vo(t,\"\",f)}}return t}catch(e){var m=e;return m=wi.errorInfo(m),[wi.error.v,m]}},TAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.tan(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TANH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Math.exp(2*t);return(n-1)/(n+1)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},CEILING:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?0==(n=parseFloat(n))?0:t>0&&n<0?wi.error.nm:Math.ceil(t/n)*n:wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ATAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.atan(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ASINH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.log(t+Math.sqrt(t*t+1))):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ABS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.abs(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ACOS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<-1||t>1?wi.error.nm:Math.acos(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ACOSH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<1?wi.error.nm:Math.log(t+Math.sqrt(t*t-1)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},MULTINOMIAL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}var a=0,l=1;for(e=0;e<t.length;e++){var r=t[e];if(!C(r))return wi.error.v;if((r=parseFloat(r))<0)return wi.error.nm;a+=r,l*=Eo.factorial(r)}return Eo.factorial(a)/l}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},ATANH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<=-1||t>=1?wi.error.nm:Math.log((1+t)/(1-t))/2:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ATAN2:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseFloat(n),0==t&&0==n?wi.error.d:Math.atan2(n,t)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},COUNTBLANK:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=0;if(\"object\"==ad(t)&&null!=t.startCell){if(null==t.data)return 1;if(\"array\"==ad(t.data))for(var a=0;a<t.data.length;a++)for(var l=0;l<t.data[a].length;l++)(null==t.data[a][l]||_(t.data[a][l].v))&&n++;else _(t.data.v)&&n++}return n}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},COSH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),(Math.exp(t)+Math.exp(-t))/2):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},INT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0];if(\"array\"==ad(t))return\"array\"==ad(t[0])?Eo.isDyadicArr(t)&&C(t[0][0])?Math.floor(parseFloat(t[0][0])):wi.error.v:C(t[0])?Math.floor(parseFloat(t[0])):wi.error.v;if(\"object\"==ad(t)&&null!=t.startCell){if(t.coll>1)return wi.error.v;if(t.rowl>1){var n=wi.getcellrange(t.startCell).row[0];if(window.luckysheetCurrentRow<n||window.luckysheetCurrentRow>n+t.rowl-1)return wi.error.v;var a=t.data[window.luckysheetCurrentRow-n][0]}else a=t.data;return null==a||_(a.v)?0:C(a.v)?Math.floor(parseFloat(a.v)):wi.error.v}if(\"boolean\"==ad(t)){if(\"true\"==t.toString().toLowerCase())return 1;if(\"false\"==t.toString().toLowerCase())return 0}return C(t)?Math.floor(parseFloat(t)):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},ISEVEN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseInt(t),!(1&Math.abs(t))):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ISODD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseInt(t),!!(1&Math.abs(t))):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},LCM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n))}else t=t.concat(n);else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}for(var a=0;a<t.length;a++){var l=t[a];if(!C(l))return wi.error.v;if((l=parseInt(l))<0)return wi.error.nm;t[a]=l}for(var r,o,i,s=1;void 0!==(o=t.pop());)for(0==o&&(s=0);o>1;){if(o%2){for(e=3,r=Math.floor(Math.sqrt(o));e<=r&&o%e;e+=2);i=e<=r?e:o}else i=2;for(o/=i,s*=i,e=t.length;e;t[--e]%i==0&&1==(t[e]/=i)&&t.splice(e,1));}return s>=Math.pow(2,53)?wi.error.nm:s}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},LN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<=0?wi.error.nm:Math.log(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},LOG:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;if((t=parseFloat(t))<=0)return wi.error.nm;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;if((n=parseFloat(n))<=0)return wi.error.nm}else var n=10;return Math.log(t)/Math.log(n)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},LOG10:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<=0?wi.error.nm:Math.log(t)/Math.log(10):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},MOD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;if(0==(n=parseFloat(n)))return wi.error.d;var a=Math.abs(t%n);return n>0?a:-a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},MROUND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t*(n=parseFloat(n))<0?wi.error.nm:Math.round(t/n)*n:wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ODD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Math.ceil(Math.abs(t));return n=1&n?n:n+1,t>=0?n:-n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},SUMSQ:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}var a=0;if(t.length>0)for(e=0;e<t.length;e++){var l=t[e];if(!C(l))return wi.error.v;a+=(l=parseFloat(l))*l}return a}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},COMBIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<0||n<0||t<n?wi.error.nm:Eo.factorial(t)/(Eo.factorial(n)*Eo.factorial(t-n))):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},SUBTOTAL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let s=function(e){switch(e){case 1:case 101:return window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE,r);case 2:case 102:return window.luckysheet_function.COUNT.f.apply(window.luckysheet_function.COUNT,r);case 3:case 103:return window.luckysheet_function.COUNTA.f.apply(window.luckysheet_function.COUNTA,r);case 4:case 104:return window.luckysheet_function.MAX.f.apply(window.luckysheet_function.MAX,r);case 5:case 105:return window.luckysheet_function.MIN.f.apply(window.luckysheet_function.MIN,r);case 6:case 106:return window.luckysheet_function.PRODUCT.f.apply(window.luckysheet_function.PRODUCT,r);case 7:case 107:return window.luckysheet_function.STDEVA.f.apply(window.luckysheet_function.STDEVA,r);case 8:case 108:return window.luckysheet_function.STDEVP.f.apply(window.luckysheet_function.STDEVP,r);case 9:case 109:return window.luckysheet_function.SUM.f.apply(window.luckysheet_function.SUM,r);case 10:case 110:return window.luckysheet_function.VAR_S.f.apply(window.luckysheet_function.VAR_S,r);case 11:case 111:return window.luckysheet_function.VAR_P.f.apply(window.luckysheet_function.VAR_P,r)}};var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=[];for(e=0;e<n.length;e++){for(var a=[],l=0;l<n[e].length;l++)a.push(n[e][l]);t.push(a)}}else{t=[];for(e=0;e<n.length;e++)t.push(n[e])}else t=\"object\"==ad(n)&&null!=n.startCell?Eo.getFirstValue(n):n;var r=Array.prototype.slice.apply(arguments);if(r.shift(),\"array\"==ad(t)){var o=[];if(\"array\"==ad(t[0]))for(e=0;e<t.length;e++){for(a=[],l=0;l<t[e].length;l++){T(i=t[e][l])?a.push(i):C(i)?(i=parseInt(i))<1||i>111||i>11&&i<101?a.push(wi.error.v):a.push(s(i)):a.push(wi.error.v)}o.push(a)}else for(e=0;e<t.length;e++){var i;T(i=t[e])?o.push(i):C(i)?(i=parseInt(i))<1||i>111||i>11&&i<101?o.push(wi.error.v):o.push(s(i)):o.push(wi.error.v)}return o}return T(t)?t:C(t)?(t=parseInt(t))<1||t>111||t>11&&t<101?wi.error.v:s(t):wi.error.v}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},ASIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<-1||t>1?wi.error.nm:Math.asin(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},COUNTIF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let s=function(e,t){/[<>=!*?]/.test(t)||(t='==\"'+t+'\"'),t=t.replace(\"<>\",\"!=\");var n=0;if(\"array\"==ad(e)){for(var a=0;a<e.length;a++)for(var l=0;l<e[a].length;l++)if(null!=e[a][l]&&!_(e[a][l].v)){var r=e[a][l].v;t.indexOf(\"*\")>-1||t.indexOf(\"?\")>-1?wi.isWildcard(r,t)&&n++:\"string\"!=typeof r?new Function(\"return \"+r+t)()&&n++:new Function('return \"'+r+'\"'+t)()&&n++}}else if(null!=e&&!_(e.v)){r=e.v;t.indexOf(\"*\")>-1||t.indexOf(\"?\")>-1?wi.isWildcard(r,t)&&n++:\"string\"!=typeof r?new Function(\"return \"+r+t)()&&n++:new Function('return \"'+r+'\"'+t)()&&n++}return n};var t,n=arguments[0];if(\"object\"!=ad(n)||null==n.startCell)return wi.error.v;t=n.data;var a,l=arguments[1];if(\"array\"==ad(l))if(a=[],\"array\"==ad(l[0])){if(!Eo.isDyadicArr(l))return wi.error.v;for(e=0;e<l.length;e++){for(var r=[],o=0;o<l[e].length;o++)r.push(l[e][o]);a.push(r)}}else for(e=0;e<l.length;e++)a.push(l[e]);else if(\"object\"==ad(l)&&null!=l.startCell){if(l.rowl>1||l.coll>1)return 0;a=l.data.v}else a=l;if(\"array\"==ad(a)){var i=[];if(\"array\"==ad(a[0]))for(e=0;e<a.length;e++){for(r=[],o=0;o<a[e].length;o++)r.push(s(t,a[e][o]));i.push(r)}else for(e=0;e<a.length;e++)i.push(s(t,a[e]));return i}return s(t,a)}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},RADIANS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))*Math.PI/180:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},RAND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;try{return Math.floor(1e9*Math.random())/1e9}catch(t){var e=t;return e=wi.errorInfo(e),[wi.error.v,e]}},COUNTUNIQUE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!0)):t.push(n)}return window.luckysheet_function.UNIQUE.f(t)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DEGREES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?180*(t=parseFloat(t))/Math.PI:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ERFC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),jStat.erfc(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},EVEN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Math.ceil(Math.abs(t));return n=1&n?n+1:n,t>0?n:-n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},EXP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.exp(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},FACT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t)){if(\"boolean\"!=ad(t))return wi.error.v;\"true\"==t.toString().toLowerCase()?t=1:\"false\"==t.toString().toLowerCase()&&(t=0)}return(t=parseInt(t))<0?wi.error.nm:Eo.factorial(t)}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},FACTDOUBLE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t)){if(\"boolean\"!=ad(t))return wi.error.v;\"true\"==t.toString().toLowerCase()?t=1:\"false\"==t.toString().toLowerCase()&&(t=0)}return(t=parseInt(t))<0?wi.error.nm:Eo.factorialDouble(t)}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},PI:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;try{return Math.PI}catch(t){var e=t;return e=wi.errorInfo(e),[wi.error.v,e]}},FLOOR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;if(0==(n=parseFloat(n)))return wi.error.d;if(t>0&&n<0)return wi.error.nm;var a=-Math.floor(Math.log(Math.abs(n))/Math.log(10));return t>=0?Math.floor(t/n)*n*Math.pow(10,a)/Math.pow(10,a):-Math.ceil(Math.abs(t)/n)*n*Math.pow(10,a)/Math.pow(10,a)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},GCD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!1)):t.push(n)}if(!C(t[0]))return wi.error.v;var a=parseInt(t[0]);if(a<0||a>=Math.pow(2,53))return wi.error.nm;for(e=1;e<t.length;e++){var l=t[e];if(!C(l))return wi.error.v;if((l=parseInt(l))<0||l>=Math.pow(2,53))return wi.error.nm;for(;a&&l;)a>l?a%=l:l%=a;a+=l}return a}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},RANDBETWEEN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t>(n=parseInt(n))?wi.error.nm:t+Math.ceil((n-t+1)*Math.random())-1:wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ROUND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),(t>0?1:-1)*Math.round(Math.abs(t)*Math.pow(10,n))/Math.pow(10,n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ROUNDDOWN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),(t>0?1:-1)*Math.floor(Math.abs(t)*Math.pow(10,n))/Math.pow(10,n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ROUNDUP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),(t>0?1:-1)*Math.ceil(Math.abs(t)*Math.pow(10,n))/Math.pow(10,n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},SERIESSUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=arguments[3],r=[];if(\"array\"==ad(l)){if(\"array\"==ad(l[0])&&!Eo.isDyadicArr(l))return wi.error.v;r=r.concat(Eo.getDataArr(l,!1))}else\"object\"==ad(l)&&null!=l.startCell?r=r.concat(Eo.getCellDataArr(l,\"number\",!1)):r.push(l);if(!C(r[0]))return wi.error.v;var o=parseFloat(r[0])*Math.pow(t,n);for(e=1;e<r.length;e++){var i=r[e];if(!C(i))return wi.error.v;o+=(i=parseFloat(i))*Math.pow(t,n+e*a)}return o}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},SIGN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;if((t=parseFloat(t))>0)return 1;if(0==t)return 0;if(t<0)return-1}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},SIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.sin(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},SINH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),(Math.exp(t)-Math.exp(-t))/2):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},SQRT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<0?wi.error.nm:Math.sqrt(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},SQRTPI:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<0?wi.error.nm:Math.sqrt(t*Math.PI):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},GAMMALN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<=0?wi.error.nm:jStat.gammaln(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},COS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t),Math.cos(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TRUNC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;if(t=parseFloat(t),2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}else var n=0;return(t>0?1:-1)*Math.floor(Math.abs(t)*Math.pow(10,n))/Math.pow(10,n)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},QUOTIENT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?0==(n=parseFloat(n))?wi.error.d:parseInt(t/n,10):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},POWER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseFloat(n),0==t&&0==n||t<0&&n.toString().indexOf(\".\")>-1?wi.error.nm:Math.pow(t,n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},SUMIFS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=0,n=arguments;Uo(n);var a=wi.getRangeArray(n[0])[0],l=new Array(a.length);for(e=0;e<l.length;e++)l[e]=!0;for(e=1;e<n.length;e+=2)for(var r=wi.getRangeArray(n[e])[0],o=n[e+1],i=0;i<r.length;i++){var s=r[i];l[i]=l[i]&&!!s&&wi.acompareb(s,o)}for(e=0;e<a.length;e++)l[e]&&(t=Vo(t,\"+\",a[e]));return t}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},GET_TARGET:function(){try{var e=window.luckysheetCurrentIndex,n=t.currentSheetIndex;if(e!==n)return;var a=window.luckysheetCurrentRow,l=window.luckysheetCurrentColumn,r=window.luckysheetCurrentFunction;return setTimeout((()=>{var e=mn.deepCopyFlowData(t.flowdata);let o=oh(hh),i=a+o.length,s=l+o[0].length;if(i>=e.length&&s>=e[0].length?e=qn(e,i-e.length+1,s-e[0].length+1):i>=e.length?e=qn(e,i-e.length+1,0):s>=e[0].length&&(e=qn(e,0,s-e[0].length+1)),o.forEach(((t,n)=>{t.forEach(((t,r)=>{Na(a+n,l+r,e,t)}))})),e[a][l].f=r,delete e[a][l].m,n===t.currentSheetIndex){let n=t.luckysheetfile[Mt(t.currentSheetIndex)];n.row=e.length,n.data=e,lo(e[0].length,e.length,e,null,t.luckysheet_select_save,\"datachangeAll\",void 0,void 0)}else{t.luckysheetfile[Mt(t.currentSheetIndex)].data=e}}),300),\"loading...\"}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},GET_AIRTABLE_DATA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentIndex,a=t.currentSheetIndex;if(n!==a)return;var l=window.luckysheetCurrentRow,r=window.luckysheetCurrentColumn;let e=Eo.getFirstValue(arguments[0]),s=Eo.getFirstValue(arguments[1]),c=Eo.getFirstValue(arguments[2]);var o=window.luckysheetCurrentFunction,i=mn.deepCopyFlowData(t.flowdata);return function(e,t=0,n=1,a,l){let r=\"https://api.airtable.com\",o=e.replace(\"https://airtable.com/\",\"\").split(\"/\"),i=o[0],s=o[1],c=o[2].split(\"?\")[0],u=\"asc\";n||(u=\"desc\"),ch(`${r}/v0/meta/bases/${i}/tables`,{},(e=>{let n=e.tables.find((e=>e.id===s)).fields;ch(`${r}/v0/${i}/${s}`,{view:c,sort:[{field:n[t].name,direction:u}]},(e=>{let t=e.records,l=new Array;l.length=t.length;for(let e=0;e<t.length;e++){l[e]=[];for(let a=0;a<n.length;a++){let r=t[e].fields[n[a].name];r?l[e].push(r):l[e].push(null)}}a&&a(l)}),(e=>{console.dir(e),l&&l(e)}))}),(e=>{console.dir(e),l&&l(e)}))}(e,s,c,(e=>{let n=l+e.length,s=r+e[0].length;if(n>=i.length&&s>=i[0].length?i=qn(i,n-i.length+1,s-i[0].length+1):n>=i.length?i=qn(i,n-i.length+1,0):s>=i[0].length&&(i=qn(i,0,s-i[0].length+1)),e.forEach(((e,t)=>{e.forEach(((e,n)=>{Na(l+t,r+n,i,e)}))})),i[l][r].f=o,delete i[l][r].m,a===t.currentSheetIndex){let e=t.luckysheetfile[Mt(t.currentSheetIndex)];e.row=i.length,e.data=i,lo(i[0].length,i.length,i,null,t.luckysheet_select_save,\"datachangeAll\",void 0,void 0)}else{t.luckysheetfile[Mt(t.currentSheetIndex)].data=i}}),(e=>{var t=e;return t=wi.errorInfo(t),[wi.error.v,t]})),\"loading...\"}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},ASK_AI:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let e=window.luckysheetCurrentIndex,i=t.currentSheetIndex;if(e!==i)return;var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=arguments,o=Eo.getFirstValue(arguments[0]);let s=sh(r[1]?wi.getRangeArrayTwo(r[1].data):ih(hh),ih(hh));return r[1]||(s=-1!==o.indexOf(\"10月\")?oh(fh):-1!==o.indexOf(\"11月\")?oh(mh):-1!==o.indexOf(\"12月\")?oh(ph):oh(mh)),setTimeout((()=>{var e=mn.deepCopyFlowData(t.flowdata);let r=n+s.length,o=a+s[0].length;if(r>=e.length&&o>=e[0].length?e=qn(e,r-e.length+1,o-e[0].length+1):r>=e.length?e=qn(e,r-e.length+1,0):o>=e[0].length&&(e=qn(e,0,o-e[0].length+1)),s.forEach(((t,l)=>{t.forEach(((t,r)=>{Na(n+l,a+r,e,t)}))})),e[n][a].f=l,delete e[n][a].m,i===t.currentSheetIndex){let n=t.luckysheetfile[Mt(t.currentSheetIndex)];n.row=e.length,n.data=e,lo(e[0].length,e.length,e,null,t.luckysheet_select_save,\"datachangeAll\",void 0,void 0)}else{t.luckysheetfile[Mt(t.currentSheetIndex)].data=e}}),300),\"loading...\"}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},COUNTIFS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments;Uo(t);var n=new Array(wi.getRangeArray(t[0])[0].length);for(e=0;e<n.length;e++)n[e]=!0;for(e=0;e<t.length;e+=2)for(var a=wi.getRangeArray(t[e])[0],l=t[e+1],r=0;r<a.length;r++){var o=a[r];n[r]=n[r]&&!!o&&wi.acompareb(o,l)}var i=0;for(e=0;e<n.length;e++)n[e]&&i++;return i}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},PRODUCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}var a=1;for(e=0;e<t.length;e++){var l=t[e];if(!C(l))return wi.error.v;a*=l=parseFloat(l)}return a}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},HARMEAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"number\",!0)):t.push(n)}var a=0,l=0;for(e=0;e<t.length;e++){var r=t[e];if(!C(r))return wi.error.v;if((r=parseFloat(r))<=0)return wi.error.nm;a+=1/r,l++}return l/a}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},HYPGEOMDIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let e=function(e,t,n,a){return Eo.factorial(n)/(Eo.factorial(e)*Eo.factorial(n-e))*(Eo.factorial(a-n)/(Eo.factorial(t-e)*Eo.factorial(a-n-t+e)))/(Eo.factorial(a)/(Eo.factorial(t)*Eo.factorial(a-t)))},o=function(t,n,a,l){for(var r=0,o=0;o<=t;o++)r+=e(o,n,a,l);return r};var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseInt(l);var r=Eo.getCellBoolen(arguments[4]);return T(r)?r:t<0||t>Math.min(n,a)||t<Math.max(0,n-l+a)||n<=0||n>l||a<=0||a>l||l<=0?wi.error.nm:r?o(t,n,a,l):e(t,n,a,l)}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},INTERCEPT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}if(0==Eo.variance_s(o))return wi.error.d;var c=jStat.mean(o),u=jStat.mean(r),d=o.length,h=0,f=0;for(e=0;e<d;e++)h+=(o[e]-c)*(r[e]-u),f+=Math.pow(o[e]-c,2);var m=h/f;return u-m*c+0*m}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},KURT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!0)):t.push(n)}for(var a=[],l=0;l<t.length;l++){var r=t[l];if(!C(r))return wi.error.v;r=parseFloat(r),a.push(r)}if(a.length<4||0==Eo.standardDeviation_s(a))return wi.error.d;var o=jStat.mean(a),i=a.length,s=0;for(e=0;e<i;e++)s+=Math.pow(a[e]-o,4);return i*(i+1)/((i-1)*(i-2)*(i-3))*(s/=Math.pow(jStat.stdev(a,!0),4))-3*(i-1)*(i-1)/((i-2)*(i-3))}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},LARGE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!0))}else\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!0)):t.push(arguments[0]);for(var n=[],a=0;a<t.length;a++){var l=t[a];if(!C(l))return wi.error.v;l=parseFloat(l),n.push(l)}if(\"array\"==ad(arguments[1])){if(\"array\"==ad(arguments[1][0])&&!Eo.isDyadicArr(arguments[1]))return wi.error.v;o=Eo.getDataArr(arguments[1])}else if(\"object\"==ad(arguments[1])&&null!=arguments[1].startCell){if(arguments[1].rowl>1||arguments[1].coll>1)return wi.error.v;var r=arguments[1].data;if(null==r||_(r.v))var o=0;else o=r.v}else o=arguments[1];if(\"array\"==ad(o)){if(0==n.length)return wi.error.nm;var i=[];for(e=0;e<o.length;e++)C(o[e])?(o[e]=Math.ceil(parseFloat(o[e])),o[e]<=0||o[e]>n.length?i.push(wi.error.nm):i.push(t.sort((function(e,t){return t-e}))[o[e]-1])):i.push(wi.error.v);return i}return C(o)?(o=Math.ceil(parseFloat(o)),0==n.length||o<=0||o>n.length?wi.error.nm:t.sort((function(e,t){return t-e}))[o-1]):wi.error.v}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},STDEVA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!1)):t.push(n)}for(var a=[],l=0;l<t.length;l++){var r=t[l];r=C(r)?parseFloat(r):\"true\"==r.toString().toLowerCase()?1:0,a.push(r)}return 0==a.length?0:1==a.length?wi.error.d:Eo.standardDeviation_s(a)}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},STDEVP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?t=t.concat(Eo.getCellDataArr(n,\"text\",!0)):t.push(n)}for(var a=[],l=0;l<t.length;l++){var r=t[l];if(!C(r))return wi.error.v;r=parseFloat(r),a.push(r)}return 0==a.length?0:1==a.length?wi.error.d:Eo.standardDeviation(a)}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},GEOMEAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"text\",!0));else if(\"boolean\"==ad(n))\"true\"==n.toString().toLowerCase()?t.push(1):\"false\"==n.toString().toLowerCase()&&t.push(0);else{if(!C(n))return wi.error.v;t.push(n)}}for(var a=[],l=0;l<t.length;l++){var r=t[l];if(C(r)){if((r=parseFloat(r))<=0)return wi.error.nm;a.push(r)}}return 0==a.length?wi.error.nm:jStat.geomean(a)}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},RANK_EQ:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=arguments[1],a=[];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;a=a.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?a=a.concat(Eo.getCellDataArr(n,\"number\",!0)):a.push(n);for(var l=[],r=0;r<a.length;r++){var o=a[r];if(!C(o))return wi.error.v;o=parseFloat(o),l.push(o)}if(3==arguments.length){if(T(i=Eo.getCellBoolen(arguments[2])))return i}else var i=!1;var s=i?function(e,t){return e-t}:function(e,t){return t-e},c=(l=l.sort(s)).indexOf(t);return-1==c?wi.error.na:c+1}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},RANK_AVG:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=arguments[1],a=[];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;a=a.concat(Eo.getDataArr(n,!0))}else\"object\"==ad(n)&&null!=n.startCell?a=a.concat(Eo.getCellDataArr(n,\"number\",!0)):a.push(n);for(var l=[],r=0;r<a.length;r++){var o=a[r];if(!C(o))return wi.error.v;o=parseFloat(o),l.push(o)}if(3==arguments.length){if(T(i=Eo.getFirstValue(arguments[2])))return i;if(\"boolean\"!=ad(i))if(\"string\"!=ad(i)||\"true\"!=i.toLowerCase()&&\"false\"!=i.toLowerCase()){if(!C(i))return wi.error.v;i=0!=(i=parseFloat(i))}else\"true\"==i.toLowerCase()&&(i=!0),\"false\"==i.toLowerCase()&&(i=!1)}else var i=!1;var s=i?function(e,t){return e-t}:function(e,t){return t-e};l=l.sort(s);var c=0;for(e=0;e<l.length;e++)l[e]==t&&c++;return c>1?(2*l.indexOf(t)+c+1)/2:l.indexOf(t)+1}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},PERCENTRANK_EXC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!0))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!0)):n.push(t);for(var a=[],l=0;l<n.length;l++){var r=n[l];if(!C(r))return wi.error.v;r=parseFloat(r),a.push(r)}var o=Eo.getFirstValue(arguments[1]);if(T(o))return o;if(!C(o))return wi.error.v;if(o=parseFloat(o),3==arguments.length){if(T(i=Eo.getFirstValue(arguments[2])))return i;if(!C(i))return wi.error.v;i=parseInt(i)}else var i=3;if(0==a.length)return wi.error.nm;if(i<1)return wi.error.nm;if(1==a.length&&a[0]==o)return 1;a=a.sort((function(e,t){return e-t}));var s=window.luckysheet_function.UNIQUE.f(a)[0],c=a.length,u=s.length,d=Math.pow(10,i),h=0,f=!1;for(e=0;!f&&e<u;)o===s[e]?(h=(a.indexOf(s[e])+1)/(c+1),f=!0):o>=s[e]&&(o<s[e+1]||e===u-1)&&(h=(a.lastIndexOf(s[e])+1+(o-s[e])/(s[e+1]-s[e]))/(c+1),f=!0),e++;return isNaN(h)?wi.error.na:Math.floor(h*d)/d}catch(e){var m=e;return m=wi.errorInfo(m),[wi.error.v,m]}},PERCENTRANK_INC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!0))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!0)):n.push(t);for(var a=[],l=0;l<n.length;l++){var r=n[l];if(!C(r))return wi.error.v;r=parseFloat(r),a.push(r)}var o=Eo.getFirstValue(arguments[1]);if(T(o))return o;if(!C(o))return wi.error.v;if(o=parseFloat(o),3==arguments.length){if(T(i=Eo.getFirstValue(arguments[2])))return i;if(!C(i))return wi.error.v;i=parseInt(i)}else var i=3;if(0==a.length)return wi.error.nm;if(i<1)return wi.error.nm;if(1==a.length&&a[0]==o)return 1;a=a.sort((function(e,t){return e-t}));var s=window.luckysheet_function.UNIQUE.f(a)[0],c=a.length,u=s.length,d=Math.pow(10,i),h=0,f=!1;for(e=0;!f&&e<u;)o===s[e]?(h=a.indexOf(s[e])/(c-1),f=!0):o>=s[e]&&(o<s[e+1]||e===u-1)&&(h=(a.lastIndexOf(s[e])+(o-s[e])/(s[e+1]-s[e]))/(c-1),f=!0),e++;return isNaN(h)?wi.error.na:Math.floor(h*d)/d}catch(e){var m=e;return m=wi.errorInfo(m),[wi.error.v,m]}},FORECAST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=arguments[1],a=[];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;a=a.concat(Eo.getDataArr(n,!1))}else\"object\"==ad(n)&&null!=n.startCell?a=a.concat(Eo.getCellDataArr(n,\"text\",!1)):a.push(n);var l=arguments[2],r=[];if(\"array\"==ad(l)){if(\"array\"==ad(l[0])&&!Eo.isDyadicArr(l))return wi.error.v;r=r.concat(Eo.getDataArr(l,!1))}else\"object\"==ad(l)&&null!=l.startCell?r=r.concat(Eo.getCellDataArr(l,\"text\",!1)):r.push(l);if(a.length!=r.length)return wi.error.na;var o=[],i=[];for(e=0;e<a.length;e++){var s=a[e],c=r[e];C(s)&&C(c)&&(o.push(parseFloat(s)),i.push(parseFloat(c)))}if(0==Eo.variance_s(i))return wi.error.d;var u=jStat.mean(i),d=jStat.mean(o),h=i.length,f=0,m=0;for(e=0;e<h;e++)f+=(i[e]-u)*(o[e]-d),m+=Math.pow(i[e]-u,2);var p=f/m;return d-p*u+p*t}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},FISHERINV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Math.exp(2*t);return(n-1)/(n+1)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},FISHER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<=-1||t>=1?wi.error.nm:Math.log((1+t)/(1-t))/2:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},MODE_SNGL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}var r,o={},i=[],s=0;for(e=0;e<a.length;e++)o[r=a[e]]=o[r]?o[r]+1:1,o[r]>s&&(s=o[r],i=[]),o[r]==s&&(i[i.length]=r);if(s<=1)return wi.error.na;for(var c=a.indexOf(i[0]),u=0;u<i.length;u++){var d=a.indexOf(i[u]);d<c&&(c=d)}return a[c]}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},WEIBULL_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getCellBoolen(arguments[3]);return T(l)?l:t<0||n<=0||a<=0?wi.error.nm:l?1-Math.exp(-Math.pow(t/a,n)):Math.pow(t,n-1)*Math.exp(-Math.pow(t/a,n))*n/Math.pow(a,n)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},AVEDEV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}return 0==a.length?wi.error.nm:jStat.sum(jStat(a).subtract(jStat.mean(a)).abs()[0])/a.length}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},AVERAGEA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(\"true\"==r.toString.toLowerCase())t.push(1);else if(\"false\"==r.toString.toLowerCase())t.push(0);else{if(!C(n))return wi.error.v;t.push(n)}}var a=0,l=0;for(e=0;e<t.length;e++){var r=t[e];C(r)?a+=parseFloat(r):\"true\"==r.toString().toLowerCase()?a+=1:a+=0,l++}return 0==l?wi.error.d:a/l}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},BINOM_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getCellBoolen(arguments[3]);return T(l)?l:t<0||t>n||a<0||a>1?wi.error.nm:l?jStat.binomial.cdf(t,n,a):jStat.binomial.pdf(t,n,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},BINOM_INV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;if(a=parseFloat(a),t<0)return wi.error.nm;if(n<0||n>1)return wi.error.nm;if(a<0||a>1)return wi.error.nm;for(var l=0;l<=t;){if(jStat.binomial.cdf(l,t,n)>=a)return l;l++}}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},CONFIDENCE_NORM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseInt(a),t<=0||t>=1||n<=0||a<1?wi.error.nm:jStat.normalci(1,t,n,a)[1]-1):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},CORREL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}return 0==r.length||0==o.length||0==Eo.standardDeviation(r)||0==Eo.standardDeviation(o)?wi.error.d:jStat.corrcoeff(r,o)}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},COVARIANCE_P:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}if(0==r.length||0==o.length)return wi.error.d;var c=jStat.mean(r),u=jStat.mean(o),d=0;for(e=0;e<r.length;e++)d+=(r[e]-c)*(o[e]-u);return d/=r.length}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},COVARIANCE_S:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}return 0==r.length||0==o.length?wi.error.d:jStat.covariance(r,o)}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DEVSQ:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(C(n))t.push(n);else{if(\"boolean\"!=ad(n))return wi.error.v;\"true\"==n.toString().toLowerCase()?t.push(1):\"false\"==n.toString().toLowerCase()&&t.push(0)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}var r=jStat.mean(a),o=0;for(e=0;e<a.length;e++)o+=Math.pow(a[e]-r,2);return o}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},EXPON_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getCellBoolen(arguments[2]);return T(a)?a:t<0||n<0?wi.error.nm:a?jStat.exponential.cdf(t,n):jStat.exponential.pdf(t,n)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},AVERAGEIF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=0,n=0,a=arguments[0].data,l=arguments[0].rowl,r=arguments[0].coll,o=Ho(arguments[1]),i=[];if(arguments[2]){var s=arguments[2].startCell,c=arguments[2].rowl,u=arguments[2].coll,d=arguments[2].sheetName;if(l==c&&r==u)i=arguments[2].data;else{var h=[],f=[];h[0]=parseInt(s.replace(/[^0-9]/g,\"\"))-1,f[0]=od(s.replace(/[^A-Za-z]/g,\"\")),h[1]=h[0]+l-1,f[1]=f[0]+r-1,i=qo(d+\"!\"+s+\":\"+(id(f[1])+(h[1]+1))).data}i=wi.getRangeArray(i)[0]}a=wi.getRangeArray(a)[0];for(e=0;e<a.length;e++){var m=a[e];if(m&&wi.acompareb(m,o)){var p=i[e]||m;if(!C(p))continue;t+=parseFloat(p),n++}}return 0==t||0==n?wi.error.d:md(t/n)}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},AVERAGEIFS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=0,n=0,a=arguments;Uo(a);var l=wi.getRangeArray(a[0])[0],r=new Array(l.length);for(e=0;e<r.length;e++)r[e]=!0;for(e=1;e<a.length;e+=2)for(var o=wi.getRangeArray(a[e])[0],i=a[e+1],s=0;s<o.length;s++){var c=o[s];r[s]=r[s]&&!!c&&wi.acompareb(c,i)}for(e=0;e<l.length;e++)r[e]&&C(l[e])&&(t+=parseFloat(l[e]),n++);return 0==t||0==n?wi.error.d:md(t/n)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},PERMUT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<=0||n<0||t<n?wi.error.nm:Eo.factorial(t)/Eo.factorial(t-n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},TRIMMEAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let s=function(e,t){return t=t||1,e&&\"function\"==typeof e.slice?e.slice(t):e},c=function(e,t){return t=t||1,e&&\"function\"==typeof e.slice?e.slice(0,e.length-t):e};var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!1)):n.push(t);var a=[];for(e=0;e<n.length;e++){var l=n[e];C(l)&&a.push(parseFloat(l))}var r=Eo.getFirstValue(arguments[1]);if(T(r))return r;if(!C(r))return wi.error.v;if(r=parseFloat(r),0==a.length)return wi.error.nm;if(r<0||r>1)return wi.error.nm;a.sort((function(e,t){return e-t}));var o=window.luckysheet_function.FLOOR.f(a.length*r,2)/2,i=s(a,o);return i=c(i,o),i=jStat.mean(i)}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},PERCENTILE_EXC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!1)):n.push(t);var a=[];for(e=0;e<n.length;e++){var l=n[e];C(l)&&a.push(parseFloat(l))}var r=Eo.getFirstValue(arguments[1]);if(T(r))return r;if(!C(r))return wi.error.v;if(r=parseFloat(r),0==a.length)return wi.error.nm;if(r<=0||r>=1)return wi.error.nm;var o=(a=a.sort((function(e,t){return e-t}))).length;if(r<1/(o+1)||r>1-1/(o+1))return wi.error.nm;var i=r*(o+1)-1,s=Math.floor(i);return i===s?a[i]:a[s]+(i-s)*(a[s+1]-a[s])}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},PERCENTILE_INC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!1)):n.push(t);var a=[];for(e=0;e<n.length;e++){var l=n[e];C(l)&&a.push(parseFloat(l))}var r=Eo.getFirstValue(arguments[1]);if(T(r))return r;if(!C(r))return wi.error.v;if(r=parseFloat(r),0==a.length)return wi.error.nm;if(r<0||r>1)return wi.error.nm;var o=r*((a=a.sort((function(e,t){return e-t}))).length-1),i=Math.floor(o);return o===i?a[o]:a[i]+(o-i)*(a[i+1]-a[i])}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},PEARSON:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}if(0==o.length||0==r.length)return wi.error.d;var c=jStat.mean(r),u=jStat.mean(o),d=r.length,h=0,f=0,m=0;for(e=0;e<d;e++)h+=(r[e]-c)*(o[e]-u),f+=Math.pow(r[e]-c,2),m+=Math.pow(o[e]-u,2);return h/Math.sqrt(f*m)}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},NORM_S_INV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseFloat(t))<=0||t>=1?wi.error.nm:jStat.normal.inv(t,0,1):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},NORM_S_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getCellBoolen(arguments[1]);return T(n)?n:n?jStat.normal.cdf(t,0,1):jStat.normal.pdf(t,0,1)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},NORM_INV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t)){if(\"boolean\"!=ad(t))return wi.error.v;\"true\"==t.toString().toLowerCase()?t=1:\"false\"==t.toString().toLowerCase()&&(t=0)}t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n)){if(\"boolean\"!=ad(n))return wi.error.v;\"true\"==n.toString().toLowerCase()?n=1:\"false\"==n.toString().toLowerCase()&&(n=0)}n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a)){if(\"boolean\"!=ad(a))return wi.error.v;\"true\"==a.toString().toLowerCase()?a=1:\"false\"==a.toString().toLowerCase()&&(a=0)}return a=parseFloat(a),t<=0||t>=1||a<=0?wi.error.nm:jStat.normal.inv(t,n,a)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},NORM_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t)){if(\"boolean\"!=ad(t))return wi.error.v;\"true\"==t.toString().toLowerCase()?t=1:\"false\"==t.toString().toLowerCase()&&(t=0)}t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getCellBoolen(arguments[3]);return T(l)?l:a<=0?wi.error.nm:l?jStat.normal.cdf(t,n,a):jStat.normal.pdf(t,n,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},NEGBINOM_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getCellBoolen(arguments[3]);return T(l)?l:a<0||a>1||t<0||n<1?wi.error.nm:l?jStat.negbin.cdf(t,n,a):jStat.negbin.pdf(t,n,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},MINA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(\"true\"==l.toString.toLowerCase())t.push(1);else if(\"false\"==l.toString.toLowerCase())t.push(0);else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)?a.push(parseFloat(l)):\"true\"==l.toString().toLowerCase()?a.push(1):a.push(0)}return 0===a.length?0:Math.min.apply(Math,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},MEDIAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}return jStat.median(a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},MAXA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(\"true\"==l.toString.toLowerCase())t.push(1);else if(\"false\"==l.toString.toLowerCase())t.push(0);else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)?a.push(parseFloat(l)):\"true\"==l.toString().toLowerCase()?a.push(1):a.push(0)}return 0===a.length?0:Math.max.apply(Math,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},LOGNORM_INV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseFloat(a),t<=0||t>=1||a<=0?wi.error.nm:jStat.lognormal.inv(t,n,a)):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},LOGNORM_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getCellBoolen(arguments[3]);return T(l)?l:t<=0||a<=0?wi.error.nm:l?jStat.lognormal.cdf(t,n,a):jStat.lognormal.pdf(t,n,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},Z_TEST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!0))}else\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!0)):t.push(arguments[0]);for(var n=[],a=0;a<t.length;a++){var l=t[a];C(l)&&n.push(parseFloat(l))}var r=Eo.getFirstValue(arguments[1]);if(T(r))return r;if(!C(r))return wi.error.v;if(r=parseFloat(r),0==n.length)return wi.error.na;var o=Eo.standardDeviation_s(n);if(3==arguments.length){if(T(o=Eo.getFirstValue(arguments[2])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}var i=n.length,s=window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE,n);return 1-window.luckysheet_function.NORM_S_DIST.f((s-r)/(o/Math.sqrt(i)),\"true\")}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},PROB:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!1))}else\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!1)):t.push(arguments[0]);var n=[];if(\"array\"==ad(arguments[1])){if(\"array\"==ad(arguments[1][0])&&!Eo.isDyadicArr(arguments[1]))return wi.error.v;n=n.concat(Eo.getDataArr(arguments[1],!1))}else\"object\"==ad(arguments[1])&&null!=arguments[1].startCell?n=n.concat(Eo.getCellDataArr(arguments[1],\"text\",!1)):n.push(arguments[1]);if(t.length!=n.length)return wi.error.na;var a=[],l=[],r=0;for(e=0;e<t.length;e++){var o=t[e],i=n[e];if(C(o)&&C(i)&&(a.push(parseFloat(o)),l.push(parseFloat(i)),r+=parseFloat(i),parseFloat(i)<=0||parseFloat(i)>1))return wi.error.nm}if(1!=r)return wi.error.nm;var s=Eo.getFirstValue(arguments[2]);if(T(s))return s;if(!C(s))return wi.error.v;var c=s=parseFloat(s);if(4==arguments.length){if(T(c=Eo.getFirstValue(arguments[3])))return c;if(!C(c))return wi.error.v;c=parseFloat(c)}var u=0;for(e=0;e<a.length;e++)a[e]>=s&&a[e]<=c&&(u+=l[e]);return u}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},QUARTILE_EXC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!0))}else if(\"object\"==ad(arguments[0])&&null!=arguments[0].startCell)t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!0));else{if(!C(arguments[0]))return wi.error.v;t.push(arguments[0])}var n=[];for(e=0;e<t.length;e++){var a=t[e];C(a)&&n.push(parseFloat(a))}var l=Eo.getFirstValue(arguments[1]);if(T(l))return l;if(!C(l))return wi.error.v;if(l=parseInt(l),0==n.length)return wi.error.nm;if(l<=0||l>=4)return wi.error.nm;switch(l){case 1:return window.luckysheet_function.PERCENTILE_EXC.f(n,.25);case 2:return window.luckysheet_function.PERCENTILE_EXC.f(n,.5);case 3:return window.luckysheet_function.PERCENTILE_EXC.f(n,.75)}}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},QUARTILE_INC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!0))}else if(\"object\"==ad(arguments[0])&&null!=arguments[0].startCell)t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!0));else{if(!C(arguments[0]))return wi.error.v;t.push(arguments[0])}var n=[];for(e=0;e<t.length;e++){var a=t[e];C(a)&&n.push(parseFloat(a))}var l=Eo.getFirstValue(arguments[1]);if(T(l))return l;if(!C(l))return wi.error.v;if(l=parseInt(l),0==n.length)return wi.error.nm;if(l<0||l>4)return wi.error.nm;switch(l){case 0:return Math.min.apply(Math,n);case 1:return window.luckysheet_function.PERCENTILE_INC.f(n,.25);case 2:return window.luckysheet_function.PERCENTILE_INC.f(n,.5);case 3:return window.luckysheet_function.PERCENTILE_INC.f(n,.75);case 4:return Math.max.apply(Math,n)}}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},POISSON_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getCellBoolen(arguments[2]);return T(a)?a:t<0||n<0?wi.error.nm:a?jStat.poisson.cdf(t,n):jStat.poisson.pdf(t,n)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},RSQ:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else if(\"object\"==ad(t)&&null!=t.startCell)n=n.concat(Eo.getCellDataArr(t,\"text\",!1));else{if(!C(t))return wi.error.v;n.push(t)}var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else if(\"object\"==ad(a)&&null!=a.startCell)l=l.concat(Eo.getCellDataArr(a,\"text\",!1));else{if(!C(a))return wi.error.v;l.push(a)}if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}return 0==r.length||0==o.length?wi.error.d:Math.pow(window.luckysheet_function.PEARSON.f(r,o),2)}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},T_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getCellBoolen(arguments[2]);return T(a)?a:n<1?wi.error.nm:a?jStat.studentt.cdf(t,n):jStat.studentt.pdf(t,n)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},T_DIST_2T:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<0||n<1?wi.error.nm:2*(1-jStat.studentt.cdf(t,n))):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},T_DIST_RT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n))<1?wi.error.nm:1-jStat.studentt.cdf(t,n):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},T_INV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<=0||t>1||n<1?wi.error.nm:jStat.studentt.inv(t,n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},T_INV_2T:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<=0||t>1||n<1?wi.error.nm:Math.abs(jStat.studentt.inv(t/2,n))):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},T_TEST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!1))}else if(\"object\"==ad(arguments[0])&&null!=arguments[0].startCell)t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!1));else{if(!C(arguments[0]))return wi.error.v;t.push(arguments[0])}var n=t,a=[];if(\"array\"==ad(arguments[1])){if(\"array\"==ad(arguments[1][0])&&!Eo.isDyadicArr(arguments[1]))return wi.error.v;a=a.concat(Eo.getDataArr(arguments[1],!1))}else if(\"object\"==ad(arguments[1])&&null!=arguments[1].startCell)a=a.concat(Eo.getCellDataArr(arguments[1],\"text\",!1));else{if(!C(arguments[1]))return wi.error.v;a.push(arguments[1])}var l=a,r=Eo.getFirstValue(arguments[2]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseInt(r);var o=Eo.getFirstValue(arguments[3]);if(T(o))return o;if(!C(o))return wi.error.v;if(o=parseInt(o),-1==[1,2].indexOf(r))return wi.error.nm;if(-1==[1,2,3].indexOf(o))return wi.error.nm;var i=null,s=null;if(1==o){var c=[];for(e=0;e<n.length;e++)c.push(n[e]-l[e]);i=Math.abs(jStat.mean(c))/(Eo.standardDeviation_s(c)/Math.sqrt(n.length)),s=n.length-1}else{var u=jStat.mean(n),d=jStat.mean(l),h=Eo.variance_s(n),f=Eo.variance_s(l);switch(i=Math.abs(u-d)/Math.sqrt(h/n.length+f/l.length),o){case 2:s=n.length+l.length-2;break;case 3:s=Math.pow(h/n.length+f/l.length,2)/(Math.pow(h/n.length,2)/(n.length-1)+Math.pow(f/l.length,2)/(l.length-1))}}if(1==r)var m=window.luckysheet_function.T_DIST_RT.f(i,s);else if(2==r)m=window.luckysheet_function.T_DIST_2T.f(i,s);return m}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},F_DIST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=Eo.getCellBoolen(arguments[3]);return T(l)?l:t<0||n<1||a<1?wi.error.nm:l?jStat.centralF.cdf(t,n,a):jStat.centralF.pdf(t,n,a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},F_DIST_RT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseInt(a),t<0||n<1||a<1?wi.error.nm:1-jStat.centralF.cdf(t,n,a)):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},VAR_P:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}if(0==a.length)return wi.error.d;var r=a.length,o=0,i=window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE,a);for(e=0;e<r;e++)o+=Math.pow(a[e]-i,2);return o/r}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},VAR_S:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}if(0==a.length)return wi.error.d;var r=a.length,o=0,i=window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE,a);for(e=0;e<r;e++)o+=Math.pow(a[e]-i,2);return o/(r-1)}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},VARA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(\"true\"==l.toString.toLowerCase())t.push(1);else if(\"false\"==l.toString.toLowerCase())t.push(0);else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)?a.push(parseFloat(l)):\"true\"==l.toString().toLowerCase()?a.push(1):a.push(0)}var r=a.length,o=0,i=window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE,a);for(e=0;e<r;e++)o+=Math.pow(a[e]-i,2);return o/(r-1)}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},VARPA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!1))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else if(\"true\"==l.toString.toLowerCase())t.push(1);else if(\"false\"==l.toString.toLowerCase())t.push(0);else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)?a.push(parseFloat(l)):\"true\"==l.toString().toLowerCase()?a.push(1):a.push(0)}var r=a.length,o=0,i=window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE,a);for(e=0;e<r;e++)o+=Math.pow(a[e]-i,2);return o/r}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},STEYX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!1))}else if(\"object\"==ad(arguments[0])&&null!=arguments[0].startCell)t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!1));else{if(!C(arguments[0]))return wi.error.v;t.push(arguments[0])}var n=[];if(\"array\"==ad(arguments[1])){if(\"array\"==ad(arguments[1][0])&&!Eo.isDyadicArr(arguments[1]))return wi.error.v;n=n.concat(Eo.getDataArr(arguments[1],!1))}else if(\"object\"==ad(arguments[1])&&null!=arguments[1].startCell)n=n.concat(Eo.getCellDataArr(arguments[1],\"text\",!1));else{if(!C(arguments[1]))return wi.error.v;n.push(arguments[1])}if(t.length!=n.length)return wi.error.na;var a=[],l=[];for(e=0;e<t.length;e++){var r=t[e],o=n[e];C(r)&&C(o)&&(a.push(parseFloat(r)),l.push(parseFloat(o)))}if(a.length<3||l.length<3)return wi.error.d;var i=jStat.mean(l),s=jStat.mean(a),c=l.length,u=0,d=0,h=0;for(e=0;e<c;e++)u+=Math.pow(a[e]-s,2),d+=(l[e]-i)*(a[e]-s),h+=Math.pow(l[e]-i,2);return Math.sqrt((u-d*d/h)/(c-2))}catch(e){var f=e;return f=wi.errorInfo(f),[wi.error.v,f]}},STANDARDIZE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseFloat(a))<=0?wi.error.nm:(t-n)/a:wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},SMALL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!0))}else if(\"object\"==ad(arguments[0])&&null!=arguments[0].startCell)t=t.concat(Eo.getCellDataArr(arguments[0],\"number\",!0));else{if(!C(arguments[0]))return wi.error.v;t.push(arguments[0])}var n=[];for(e=0;e<t.length;e++){var a=t[e];C(a)&&n.push(parseFloat(a))}var l=Eo.getFirstValue(arguments[1]);return T(l)?l:C(l)?(l=parseInt(l),0==n.length||l<=0||l>n.length?wi.error.nm:n.sort((function(e,t){return e-t}))[l-1]):wi.error.v}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},SLOPE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];if(\"array\"==ad(arguments[0])){if(\"array\"==ad(arguments[0][0])&&!Eo.isDyadicArr(arguments[0]))return wi.error.v;t=t.concat(Eo.getDataArr(arguments[0],!1))}else if(\"object\"==ad(arguments[0])&&null!=arguments[0].startCell)t=t.concat(Eo.getCellDataArr(arguments[0],\"text\",!1));else{if(!C(arguments[0]))return wi.error.v;t.push(arguments[0])}var n=[];if(\"array\"==ad(arguments[1])){if(\"array\"==ad(arguments[1][0])&&!Eo.isDyadicArr(arguments[1]))return wi.error.v;n=n.concat(Eo.getDataArr(arguments[1],!1))}else if(\"object\"==ad(arguments[1])&&null!=arguments[1].startCell)n=n.concat(Eo.getCellDataArr(arguments[1],\"text\",!1));else{if(!C(arguments[1]))return wi.error.v;n.push(arguments[1])}if(t.length!=n.length)return wi.error.na;var a=[],l=[];for(e=0;e<t.length;e++){var r=t[e],o=n[e];C(r)&&C(o)&&(a.push(parseFloat(r)),l.push(parseFloat(o)))}if(a.length<3||l.length<3)return wi.error.d;var i=jStat.mean(l),s=jStat.mean(a),c=l.length,u=0,d=0;for(e=0;e<c;e++)u+=(l[e]-i)*(a[e]-s),d+=Math.pow(l[e]-i,2);return u/d}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},SKEW:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}if(a.length<3||0==Eo.standardDeviation_s(a))return wi.error.d;var r=jStat.mean(a),o=a.length,i=0;for(e=0;e<o;e++)i+=Math.pow(a[e]-r,3);return o*i/((o-1)*(o-2)*Math.pow(jStat.stdev(a,!0),3))}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},SKEW_P:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[];for(e=0;e<arguments.length;e++){var n=arguments[e];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;t=t.concat(Eo.getDataArr(n,!0))}else if(\"object\"==ad(n)&&null!=n.startCell)t=t.concat(Eo.getCellDataArr(n,\"number\",!0));else{if(!C(n))return wi.error.v;t.push(n)}}var a=[];for(e=0;e<t.length;e++){var l=t[e];C(l)&&a.push(parseFloat(l))}if(a.length<3||0==Eo.standardDeviation_s(a))return wi.error.d;var r=jStat.mean(a),o=a.length,i=0,s=0;for(e=0;e<o;e++)s+=Math.pow(a[e]-r,3),i+=Math.pow(a[e]-r,2);return i/=o,(s/=o)/Math.pow(i,1.5)}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},ADDRESS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=1;if(arguments.length>=3){if(T(a=Eo.getFirstValue(arguments[2])))return a;if(!C(a))return wi.error.v;a=parseInt(a)}var l,r=!0;if(arguments.length>=4&&T(r=Eo.getCellBoolen(arguments[3])))return r;if(t<=0||n<=0)return wi.error.v;if(-1==[1,2,3,4].indexOf(a))return wi.error.v;if(r)switch(n=id(n-1),a){case 1:l=\"$\"+n+\"$\"+t;break;case 2:l=n+\"$\"+t;break;case 3:l=\"$\"+n+t;break;case 4:l=n+t}else switch(a){case 1:l=\"R\"+t+\"C\"+n;break;case 2:l=\"R\"+t+\"C[\"+n+\"]\";break;case 3:l=\"R[\"+t+\"]C\"+n;break;case 4:l=\"R[\"+t+\"]C[\"+n+\"]\"}if(5==arguments.length){var o=Eo.getFirstValue(arguments[4]);return T(o)?o:o+\"!\"+l}return l}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},INDIRECT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=Eo.getFirstValue(arguments[0],\"text\");if(T(n))return n;var a=!0;if(2==arguments.length&&T(a=Eo.getCellBoolen(arguments[1])))return a;let e=zt()[Mt(t.calculateSheetIndex)],l=e.data;if(wi.iscelldata(n)){let a=wi.getcellrange(n),r=a.row[0],o=a.column[0];if(r<0||r>=l.length||o<0||o>=l[0].length)return wi.error.r;if(null==l[r][o]||_(l[r][o].v))return 0;let i=l[r][o].v;if(null!=wi.execFunctionGlobalData){let e=wi.execFunctionGlobalData[r+\"_\"+o+\"_\"+t.calculateSheetIndex];null!=e&&(i=e.v)}return{sheetName:e.name,startCell:n,rowl:r,coll:o,data:i}}return wi.error.r}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},ROW:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t;return 1==arguments.length?\"array\"==ad(arguments[0])?wi.error.v:(t=\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?arguments[0].startCell:arguments[0],wi.iscelldata(t)?wi.getcellrange(t).row[0]+1:wi.error.v):window.luckysheetCurrentRow+1}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ROWS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return\"array\"==ad(arguments[0])?\"array\"==ad(arguments[0][0])?arguments[0].length:1:\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?arguments[0].rowl:1}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},COLUMN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t;return 1==arguments.length?\"array\"==ad(arguments[0])?wi.error.v:(t=\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?arguments[0].startCell:arguments[0],wi.iscelldata(t)?wi.getcellrange(t).column[0]+1:wi.error.v):window.luckysheetCurrentColumn+1}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},COLUMNS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return\"array\"==ad(arguments[0])?\"array\"==ad(arguments[0][0])?arguments[0][0].length:arguments[0].length:\"object\"==ad(arguments[0])&&null!=arguments[0].startCell?arguments[0].coll:1}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},OFFSET:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{if(\"object\"!=ad(arguments[0])||null==arguments[0].startCell)return wi.error.v;var n=arguments[0].startCell;let e=arguments[0].sheetName;var a=Eo.getFirstValue(arguments[1]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=Eo.getFirstValue(arguments[2]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseInt(l);var r=arguments[0].rowl;if(arguments.length>=4){if(T(r=Eo.getFirstValue(arguments[3])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}var o=arguments[0].coll;if(5==arguments.length){if(T(o=Eo.getFirstValue(arguments[4])))return o;if(!C(o))return wi.error.v;o=parseInt(o)}if(r<1||o<1)return wi.error.r;var i=wi.getcellrange(n),s=i.row[0],c=i.column[0],u=(s+=a)+r-1,d=(c+=l)+o-1;let g=zt()[Mt(t.calculateSheetIndex)].data;if(s<0||u>=g.length||c<0||d>=g[0].length)return wi.error.r;for(var h=[],f=s;f<=u;f++){for(var m=[],p=c;p<=d;p++)if(null!=wi.execFunctionGlobalData&&null!=wi.execFunctionGlobalData[f+\"_\"+p+\"_\"+t.calculateSheetIndex]){let e=wi.execFunctionGlobalData[f+\"_\"+p+\"_\"+t.calculateSheetIndex];null!=e?m.push(e.v):m.push(0)}else null==g[f][p]||_(g[f][p].v)?m.push(0):m.push(g[f][p].v);h.push(m)}return{sheetName:e,startCell:Nt(t.calculateSheetIndex,{row:[s,u],column:[c,d]}),rowl:s,coll:c,data:h}}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},MATCH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=arguments[1],a=[];if(\"array\"==ad(n)){if(\"array\"==ad(n[0]))return Eo.isDyadicArr(n)?wi.error.na:wi.error.v;for(e=0;e<n.length;e++)a.push(n[e])}else if(\"object\"==ad(n)&&null!=n.startCell){if(n.rowl>1&&n.coll>1)return wi.error.na;if(null!=n.data)if(\"array\"==ad(n.data))for(e=0;e<n.data.length;e++)for(var l=0;l<n.data[e].length;l++)null!=n.data[e][l]&&!_(n.data[e][l].v)&&a.push(n.data[e][l].v);else a.push(n.data.v)}var r=1;if(3==arguments.length){if(T(r=Eo.getFirstValue(arguments[2])))return r;if(!C(r))return wi.error.v;r=Math.ceil(parseFloat(r))}if(-1==[-1,0,1].indexOf(r))return wi.error.na;for(var o,i,s=0;s<a.length;s++)if(1===r){if(a[s]===t)return s+1;a[s]<t&&(i?a[s]>i&&(o=s+1,i=a[s]):(o=s+1,i=a[s]))}else if(0===r){if(\"string\"==typeof t){if(t=t.replace(/\\?/g,\".\"),a[s].toLowerCase().match(t.toLowerCase()))return s+1}else if(a[s]===t)return s+1}else if(-1===r){if(a[s]===t)return s+1;a[s]>t&&(i?a[s]<i&&(o=s+1,i=a[s]):(o=s+1,i=a[s]))}return o||wi.error.na}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},VLOOKUP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;if(\"\"==t.toString().replace(/\\s/g,\"\"))return wi.error.na;var n=arguments[1],a=[];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;for(e=0;e<n.length;e++){for(var l=[],r=0;r<n[e].length;r++)l.push(n[e][r]);a.push(l)}}else{for(l=[],e=0;e<n.length;e++)l.push(n[e]);a.push(l)}else{if(\"object\"!=ad(n)||null==n.startCell)return wi.error.v;a=Eo.getCellDataDyadicArr(n,\"text\")}var o=Eo.getFirstValue(arguments[2]);if(T(o))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=!0;if(4==arguments.length&&T(i=Eo.getCellBoolen(arguments[3])))return i;if(o<1)return wi.error.v;if(o>a[0].length)return wi.error.r;if(!i){var s=null;for(c=0;c<a.length;c++)if(t.toString()==a[c][0].toString()){s=c;break}return null==s?wi.error.na:a[s][o-1]}a=hr(a,0,!0);for(var c=0;c<a.length;c++){var u,d=a[c][0];if(pa(t)&&pa(d)?u=ga(t,d):C(t)&&C(d)?u=(0,yh.default)(t).value()-(0,yh.default)(d).value():C(t)||C(d)?C(t)?C(d)||(u=-1):u=1:u=t.localeCompare(d,\"zh\"),u<0)return 0==c?wi.error.na:a[c-1][o-1];if(c==a.length-1)return a[c][o-1]}}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},HLOOKUP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{window.luckysheetCurrentRow,window.luckysheetCurrentColumn;var t=arguments[0];\"object\"==typeof t&&(\"array\"==ad(t=arguments[0].data)?\"array\"==ad(t=t[r])&&(t=t[i]):t=t.v);var n=arguments[1].data,a=arguments[2],l=!1;if(arguments.length>3&&(l=!!arguments[3]),a>n.rowl)return[wi.error.v,\"索引超过了范围的长度，\"+n[0].length];if(a<1)return[wi.error.v,\"索引必须大于1\"];for(var o=wi.error.na,i=0;i<n[0].length;i++){var s=Vn(0,i,n),c=Vn(a-1,i,n);if(l)s.indexOf(t)>-1&&(o=c);else if(wi.acompareb(s,t))return o=c}return o}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},LOOKUP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let h=function(e,t){return t-e};window.luckysheetCurrentRow,window.luckysheetCurrentColumn;var t=arguments[0];\"object\"==typeof t&&(\"array\"==ad(t=arguments[0].data)?\"array\"==ad(t=t[r])&&(t=t[c]):t=t.v);var n,a=arguments[1].data,l=wi.error.na;if(a=wi.getRangeArray(a)[0],arguments[2]&&(n=arguments[2].data,n=wi.getRangeArray(n)[0]),\"string\"==typeof t)for(e=0;e<a.length;e++){var o=a[e];arguments[2]?(s=n[e],o==t&&(l=s)):wi.acompareb(o,t)&&(l=o)}else if(\"num\"==va(t)){var i=[];for(e=0;e<a.length;e++){var s;o=a[e];if(arguments[2]){if(s=n[e],o==t)return l=s;o!=t&&\"num\"==va(o)&&i.push(o)}else{if(o==t)return l=o;o!=t&&\"num\"==va(o)&&i.push(o)}}if(0!=i.length){i.push(t),i.sort(h);var u=i.indexOf(t);if(u==i.length-1)return[wi.error.na,\"找不到对应参数\"];var d=i[u+1];if(arguments[2])l=n[e=a.indexOf(d)];else l=d}}return l}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},INDEX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=arguments[0],a=[];let e=!1;if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;a=Eo.getDataDyadicArr(n)}else\"object\"==ad(n)&&null!=n.startCell&&(a=Eo.getCellDataDyadicArr(n,\"number\"),e=!0);var l=a.length,r=a[0].length,o=Eo.getFirstValue(arguments[1]);if(T(o))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=Eo.getFirstValue(arguments[2]);if(T(i))return i;if(o<0||C(i)&&i<0)return wi.error.v;if(1==l&&null==i&&(i=o,o=1),o>l||C(i)&&i>r)return wi.error.r;if(e){var s=wi.getcellrange(n.startCell),c=s.row[0],u=s.column[0];let e=a;0==o||0==i?(0==o?(e=a[0],o=1):e=a[o-1],C(i)?0==i?(e=e[0],i=1):e=e[i-1]:i=1):(C(o)||(o=1),C(i)||(i=1),e=a[o-1][i-1]);let l=c+o-1,r=u+i-1;return{sheetName:n.sheetName,startCell:Nt(t.calculateSheetIndex,{row:[l,l],column:[r,r]}),rowl:l,coll:r,data:e}}return C(i)?(i=parseInt(i),o<=0||i<=0?wi.error.v:a[o-1][i-1]):wi.error.v}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},GETPIVOTDATA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return wi.error.v}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},CHOOSE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;if((t=parseInt(t))<1||t>arguments.length-1)return wi.error.v;var n=arguments[t];return\"array\"==ad(n)?\"array\"!=ad(n[0])||Eo.isDyadicArr(n)?n:wi.error.v:\"object\"==ad(n)&&null!=n.startCell?null==n.data?0:\"array\"==ad(n.data)?Eo.getCellDataDyadicArr(n.data,\"number\"):_(n.data.v)?0:n.data.v:n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},HYPERLINK:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return wi.error.v}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},TIME:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;if(a=parseInt(a),t<0||t>32767)return wi.error.nm;if(t>24&&(t%=24),n<0||n>32767)return wi.error.nm;if(a<0||a>32767)return wi.error.nm;var l=(0,gh.default)().set({hour:t,minute:n,second:a});return(0,gh.default)(l).format(\"h:mm:ss a\")}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},TIMEVALUE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(3600*(0,gh.default)(t).get(\"hour\")+60*(0,gh.default)(t).get(\"minute\")+(0,gh.default)(t).get(\"second\"))/86400:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},EOMONTH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;if(n=parseInt(n),!(0,gh.default)(t).isValid())return wi.error.v;var a=(0,gh.default)(t).add(n+1,\"months\").set(\"date\",1).subtract(1,\"days\");return _a((0,gh.default)(a).format(\"YYYY-MM-DD H:mm:ss\"))[2]}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},EDATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;if(n=parseInt(n),!(0,gh.default)(t).isValid())return wi.error.v;var a=(0,gh.default)(t).add(n,\"months\");return _a((0,gh.default)(a).format(\"YYYY-MM-DD h:mm:ss\"))[2]}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},SECOND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).seconds():wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},MINUTE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).minutes():wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},HOUR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).hours():wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},NOW:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return(0,gh.default)().format(\"YYYY-M-D HH:mm\")}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},NETWORKDAYS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{if(3==arguments.length)var t=window.luckysheet_function.NETWORKDAYS_INTL.f(arguments[0],arguments[1],1,arguments[2]);else t=window.luckysheet_function.NETWORKDAYS_INTL.f(arguments[0],arguments[1],1);return t}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},NETWORKDAYS_INTL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[[],[6,0],[0,1],[1,2],[2,3],[3,4],[4,5],[5,6],void 0,void 0,void 0,[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6]],n=Eo.getCellDate(arguments[0]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getCellDate(arguments[1]);if(T(a))return a;if(!(0,gh.default)(a).isValid())return wi.error.v;var l=t[1];if(arguments.length>=3&&(\"string\"!=typeof(l=arguments[2])||\"7\"!=l.length||!/^[0-1]{7}$/g.test(l))){if(T(l=Eo.getFirstValue(arguments[2])))return l;if(!C(l))return wi.error.v;if((l=parseInt(l))<1||l>7&&l<11||l>17)return wi.error.nm;l=t[l]}var r=[];if(4==arguments.length&&T(r=Eo.getCellrangeDate(arguments[3])))return r;for(e=0;e<r.length;e++)if(!(0,gh.default)(r[e]).isValid())return wi.error.v;var o=(0,gh.default)(a).diff((0,gh.default)(n),\"days\")+1,i=o,s=(0,gh.default)(n);for(e=0;e<o;e++){var c=(0,gh.default)(s).weekday(),u=!1;\"array\"==ad(l)?(c===l[0]||c===l[1])&&(u=!0):(0==c&&(c=7),\"0\"==l.charAt(c-1)&&(u=!0));for(var d=0;d<r.length;d++)if(0===(0,gh.default)(s).diff((0,gh.default)(r[d]),\"days\")){u=!0;break}u&&i--,s=(0,gh.default)(s).add(1,\"days\")}return i}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},ISOWEEKNUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).isoWeeks():wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},WEEKNUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=1;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(21==n)return window.luckysheet_function.ISOWEEKNUM.f(arguments[0]);if(-1==[1,2,11,12,13,14,15,16,17].indexOf(n))return wi.error.nm;var a=[void 0,7,1,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,1,2,3,4,5,6,7][n],l=(0,gh.default)(t).isoWeekday()>=a?1:0;return(0,gh.default)(t).isoWeeks()+l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},WEEKDAY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=1;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}return-1==[1,2,3,11,12,13,14,15,16,17].indexOf(n)?wi.error.nm:[[],[1,2,3,4,5,6,7],[7,1,2,3,4,5,6],[6,0,1,2,3,4,5],[],[],[],[],[],[],[],[7,1,2,3,4,5,6],[6,7,1,2,3,4,5],[5,6,7,1,2,3,4],[4,5,6,7,1,2,3],[3,4,5,6,7,1,2],[2,3,4,5,6,7,1],[1,2,3,4,5,6,7]][n][(0,gh.default)(t).day()]}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DAY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).date():wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},DAYS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);return T(n)?n:(0,gh.default)(n).isValid()?(0,gh.default)(t).diff((0,gh.default)(n),\"days\"):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DAYS360:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=!1;if(3==arguments.length&&T(a=Eo.getCellBoolen(arguments[2])))return a;var l,r,o=(0,gh.default)(t).month(),i=(0,gh.default)(n).month();if(a)l=31===(0,gh.default)(t).date()?30:(0,gh.default)(t).date(),r=31===(0,gh.default)(n).date()?30:(0,gh.default)(n).date();else{var s=(0,gh.default)().set({year:(0,gh.default)(t).year(),month:o+1,date:0}).date(),c=(0,gh.default)().set({year:(0,gh.default)(n).year(),month:i+1,date:0}).date();l=(0,gh.default)(t).date()===s?30:(0,gh.default)(t).date(),(0,gh.default)(n).date()===c?l<30?(i++,r=1):r=30:r=(0,gh.default)(n).date()}return 360*(0,gh.default)(n).diff((0,gh.default)(t),\"years\")+30*(i-o)+(r-l)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;if(a=parseInt(a),t<0||t>=1e4)return wi.error.nm;t>=0&&t<=1899&&(t+=1900);var l=(0,gh.default)().set({year:t,month:n-1,date:a});return(0,gh.default)(l).year()<1900?wi.error.nm:(0,gh.default)(l).format(\"YYYY-MM-DD\")}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},DATEVALUE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?_a(t=(0,gh.default)(t).format(\"YYYY-MM-DD\"))[2]:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},DATEDIF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{for(e=0;e<arguments.length-1;e++)if(arguments[e]=Eo.getCellDate(arguments[e]),!pa(arguments[e]))return wi.error.v;var t=(0,gh.default)(arguments[0]),n=(0,gh.default)(arguments[1]),a=arguments[2],l=wi.error.v;if(window.luckysheet_function.DAYS.f(n,t)<0)return wi.error.v;switch(a){case\"Y\":case\"y\":l=n.diff(t,\"years\",!1);break;case\"M\":case\"m\":l=n.diff(t,\"months\",!1);break;case\"D\":case\"d\":l=n.diff(t,\"days\",!1);break;case\"MD\":case\"md\":l=n.format(\"DD\")-t.format(\"DD\");break;case\"YM\":case\"ym\":l=(r=parseInt(t.format(\"M\")))<=(o=parseInt(n.format(\"M\")))?o-r:o+12-r;break;case\"YD\":case\"yd\":let e=`${n.$y}-MM-DD`;var r,o;l=(r=_a(t.format(e))[2])<=(o=_a(n.format(e))[2])?o-r:o+365-r;break;default:l=wi.error.v}return l}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},WORKDAY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{if(3==arguments.length)var t=window.luckysheet_function.WORKDAY_INTL.f(arguments[0],arguments[1],1,arguments[2]);else t=window.luckysheet_function.WORKDAY_INTL.f(arguments[0],arguments[1],1);return t}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},WORKDAY_INTL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=[[],[6,0],[0,1],[1,2],[2,3],[3,4],[4,5],[5,6],void 0,void 0,void 0,[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6]],n=Eo.getCellDate(arguments[0]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[1]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=t[1];if(arguments.length>=3&&(\"string\"!=typeof(l=arguments[2])||\"7\"!=l.length||!/^[0-1]{7}$/g.test(l))){if(T(l=Eo.getFirstValue(arguments[2])))return l;if(!C(l))return wi.error.v;if((l=parseInt(l))<1||l>7&&l<11||l>17)return wi.error.nm;l=t[l]}var r=[];if(4==arguments.length&&T(r=Eo.getCellrangeDate(arguments[3])))return r;for(e=0;e<r.length;e++)if(!(0,gh.default)(r[e]).isValid())return wi.error.v;for(var o=0;o<a;){n=(0,gh.default)(n).add(1,\"days\");var i=(0,gh.default)(n).weekday();if(ad(l)){if(i===l[0]||i===l[1])continue}else if(0==i&&(i=7),\"0\"==l.charAt(i-1))continue;for(var s=0;s<r.length;s++)if(0===(0,gh.default)(n).diff((0,gh.default)(r[s]),\"days\")){o--;break}o++}return(0,gh.default)(n).format(\"YYYY-MM-DD\")}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},YEAR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).year():wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},YEARFRAC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=0;if(3==arguments.length){if(T(a=Eo.getFirstValue(arguments[2])))return a;if(!C(a))return wi.error.v;a=parseInt(a)}if(a<0||a>4)return wi.error.nm;var l,r=(0,gh.default)(t).date(),o=(0,gh.default)(t).month()+1,i=(0,gh.default)(t).year(),s=(0,gh.default)(n).date(),c=(0,gh.default)(n).month()+1,u=(0,gh.default)(n).year();switch(a){case 0:31===r&&31===s?(r=30,s=30):31===r?r=30:30===r&&31===s&&(s=30),l=(s+30*c+360*u-(r+30*o+360*i))/360;break;case 1:var d=365;if(i===u||i+1===u&&(o>c||o===c&&r>=s))return(i===u&&Eo.isLeapYear(i)||Eo.feb29Between(t,n)||1===c&&29===s)&&(d=366),(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/d;var h=u-i+1,f=((0,gh.default)().set({year:u+1,month:0,date:1})-(0,gh.default)().set({year:i,month:0,date:1}))/1e3/60/60/24/h;l=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/f;break;case 2:l=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/360;break;case 3:l=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/365;break;case 4:l=(s+30*c+360*u-(r+30*o+360*i))/360}return l}catch(e){var m=e;return m=wi.errorInfo(m),[wi.error.v,m]}},TODAY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return(0,gh.default)().format(\"YYYY-MM-DD\")}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},MONTH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);return T(t)?t:(0,gh.default)(t).isValid()?(0,gh.default)(t).month()+1:wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},EFFECT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<=0||n<1?wi.error.nm:Math.pow(1+t/n,n)-1):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DOLLAR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=2;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}n>9&&(n=9);for(e=1;e<=n;e++)0;return(t>0?1:-1)*Math.floor(Math.abs(t)*Math.pow(10,n))/Math.pow(10,n)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DOLLARDE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;if((n=parseInt(n))<0)return wi.error.nm;if(0==n)return wi.error.d;var a=parseInt(t,10);a+=t%1*Math.pow(10,Math.ceil(Math.log(n)/Math.LN10))/n;var l=Math.pow(10,Math.ceil(Math.log(n)/Math.LN2)+1);return a=Math.round(a*l)/l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},DOLLARFR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;if((n=parseInt(n))<0)return wi.error.nm;if(0==n)return wi.error.d;var a=parseInt(t,10);return a+=t%1*Math.pow(10,-Math.ceil(Math.log(n)/Math.LN10))*n}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},DB:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseInt(l);var r=12;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(t<0||n<0||a<0||l<0)return wi.error.nm;if(r<1||r>12)return wi.error.nm;if(l>a)return wi.error.nm;if(n>=t)return 0;var o=(1-Math.pow(n/t,1/a)).toFixed(3),i=t*o*r/12,s=i,c=0,u=l===a?a-1:l;for(e=2;e<=u;e++)s+=c=(t-s)*o;if(1===l)var d=i;else if(l===a)d=(t-s)*o;else d=c;return d}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},DDB:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseInt(l);var r=2;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}if(t<0||n<0||a<0||l<0||r<=0)return wi.error.nm;if(l>a)return wi.error.nm;if(n>=t)return 0;var o=0,i=0;for(e=1;e<=l;e++)o+=i=Math.min(r/a*(t-o),t-n-o);return i}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},RATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=0;if(arguments.length>=4){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseFloat(l)}var r=0;if(arguments.length>=5){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}var o=.1;if(6==arguments.length){if(T(o=Eo.getFirstValue(arguments[5])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}if(0!=r&&1!=r)return wi.error.nm;for(var i=0,s=!1,c=o;i<100&&!s;){var u=Math.pow(c+1,t),d=Math.pow(c+1,t-1),h=c-(l+u*a+n*(u-1)*(c*r+1)/c)/(t*d*a-n*(u-1)*(c*r+1)/Math.pow(c,2)+(t*n*d*(c*r+1)/c+n*(u-1)*r/c));Math.abs(h-c)<1e-6&&(s=!0),i++,c=h}return s?c:wi.error.nm}catch(e){var f=e;return f=wi.errorInfo(f),[wi.error.v,f]}},CUMPRINC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseInt(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseInt(r);var o=Eo.getFirstValue(arguments[5]);if(T(o))return o;if(!C(o))return wi.error.v;if(o=parseFloat(o),t<=0||n<=0||a<=0)return wi.error.nm;if(l<1||r<1||l>r)return wi.error.nm;if(0!=o&&1!=o)return wi.error.nm;var i=window.luckysheet_function.PMT.f(t,n,a,0,o),s=0;1===l&&(s=0===o?i+a*t:i,l++);for(e=l;e<=r;e++)s+=o>0?i-(window.luckysheet_function.FV.f(t,e-2,i,a,1)-i)*t:i-window.luckysheet_function.FV.f(t,e-1,i,a,0)*t;return s}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},COUPNUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=0;if(4==arguments.length){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseInt(l)}if(1!=a&&2!=a&&4!=a)return wi.error.nm;if(l<0||l>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var r,o=(0,gh.default)(t).date(),i=(0,gh.default)(t).month()+1,s=(0,gh.default)(t).year(),c=(0,gh.default)(n).date(),u=(0,gh.default)(n).month()+1,d=(0,gh.default)(n).year();switch(l){case 0:31===o&&31===c?(o=30,c=30):31===o?o=30:30===o&&31===c&&(c=30),r=(c+30*u+360*d-(o+30*i+360*s))/(360/a);break;case 1:var h=365;if(s===d||s+1===d&&(i>u||i===u&&o>=c))return(s===d&&Eo.isLeapYear(s)||Eo.feb29Between(t,n)||1===u&&29===c)&&(h=366),(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/(h/a);var f=d-s+1,m=((0,gh.default)().set({year:d+1,month:0,date:1})-(0,gh.default)().set({year:s,month:0,date:1}))/1e3/60/60/24/f;r=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/(m/a);break;case 2:r=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/(360/a);break;case 3:r=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/(365/a);break;case 4:r=(c+30*u+360*d-(o+30*i+360*s))/(360/a)}return Math.round(r)}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},SYD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);return T(l)?l:C(l)?(l=parseInt(l),0==a||l<1||l>a?wi.error.nm:(t-n)*(a-l+1)*2/(a*(a+1))):wi.error.v}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},TBILLEQ:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseFloat(a))<=0||(0,gh.default)(t)-(0,gh.default)(n)>0||(0,gh.default)(n)-(0,gh.default)(t)>31536e6?wi.error.nm:365*a/(360-a*(0,gh.default)(n).diff((0,gh.default)(t),\"days\")):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},TBILLYIELD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseFloat(a))<=0||(0,gh.default)(t)-(0,gh.default)(n)>=0||(0,gh.default)(n)-(0,gh.default)(t)>31536e6?wi.error.nm:(100-a)/a*(360/(0,gh.default)(n).diff((0,gh.default)(t),\"days\")):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},TBILLPRICE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseFloat(a))<=0||(0,gh.default)(t)-(0,gh.default)(n)>0||(0,gh.default)(n)-(0,gh.default)(t)>31536e6?wi.error.nm:100*(1-a*(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/360):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},PV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=0;if(arguments.length>=4){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseFloat(l)}var r=0;if(arguments.length>=5){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}if(0!=r&&1!=r)return wi.error.nm;if(0===t)var o=-a*n-l;else o=((1-Math.pow(1+t,n))/t*a*(1+t*r)-l)/Math.pow(1+t,n);return o}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},ACCRINT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getCellDate(arguments[2]);if(T(a))return a;if(!(0,gh.default)(a).isValid())return wi.error.v;var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseFloat(r);var o=Eo.getFirstValue(arguments[5]);if(T(o))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=0;if(arguments.length>=7){if(T(i=Eo.getFirstValue(arguments[6])))return i;if(!C(i))return wi.error.v;i=parseInt(i)}var s,c=!0;if(8==arguments.length&&T(c=Eo.getCellBoolen(arguments[7])))return c;if(l<=0||r<=0)return wi.error.nm;if(1!=o&&2!=o&&4!=o)return wi.error.nm;if(i<0||i>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(a)>=0)return wi.error.nm;if((0,gh.default)(a)-(0,gh.default)(n)>=0&&!c){var u=(0,gh.default)(n).date(),d=(0,gh.default)(n).month()+1,h=(0,gh.default)(n).year(),f=(0,gh.default)(a).date(),m=(0,gh.default)(a).month()+1,p=(0,gh.default)(a).year();switch(i){case 0:31===u&&31===f?(u=30,f=30):31===u?u=30:30===u&&31===f&&(f=30),s=(f+30*m+360*p-(u+30*d+360*h))/360;break;case 1:var g=365;if(h===p||h+1===p&&(d>m||d===m&&u>=f))return(h===p&&Eo.isLeapYear(h)||Eo.feb29Between(n,a)||1===m&&29===f)&&(g=366),(0,gh.default)(a).diff((0,gh.default)(n),\"days\")/g;var y=p-h+1,v=((0,gh.default)().set({year:p+1,month:0,date:1})-(0,gh.default)().set({year:h,month:0,date:1}))/1e3/60/60/24/y;s=(0,gh.default)(a).diff((0,gh.default)(n),\"days\")/v;break;case 2:s=(0,gh.default)(a).diff((0,gh.default)(n),\"days\")/360;break;case 3:s=(0,gh.default)(a).diff((0,gh.default)(n),\"days\")/365;break;case 4:s=(f+30*m+360*p-(u+30*d+360*h))/360}}else{u=(0,gh.default)(t).date(),d=(0,gh.default)(t).month()+1,h=(0,gh.default)(t).year(),f=(0,gh.default)(a).date(),m=(0,gh.default)(a).month()+1,p=(0,gh.default)(a).year();switch(i){case 0:31===u&&31===f?(u=30,f=30):31===u?u=30:30===u&&31===f&&(f=30),s=(f+30*m+360*p-(u+30*d+360*h))/360;break;case 1:g=365;if(h===p||h+1===p&&(d>m||d===m&&u>=f))return(h===p&&Eo.isLeapYear(h)||Eo.feb29Between(t,a)||1===m&&29===f)&&(g=366),(0,gh.default)(a).diff((0,gh.default)(t),\"days\")/g;y=p-h+1,v=((0,gh.default)().set({year:p+1,month:0,date:1})-(0,gh.default)().set({year:h,month:0,date:1}))/1e3/60/60/24/y;s=(0,gh.default)(a).diff((0,gh.default)(t),\"days\")/v;break;case 2:s=(0,gh.default)(a).diff((0,gh.default)(t),\"days\")/360;break;case 3:s=(0,gh.default)(a).diff((0,gh.default)(t),\"days\")/365;break;case 4:s=(f+30*m+360*p-(u+30*d+360*h))/360}}return r*l*s}catch(e){var b=e;return b=wi.errorInfo(b),[wi.error.v,b]}},ACCRINTM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(a<=0||l<=0)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o,i=(0,gh.default)(t).date(),s=(0,gh.default)(t).month()+1,c=(0,gh.default)(t).year(),u=(0,gh.default)(n).date(),d=(0,gh.default)(n).month()+1,h=(0,gh.default)(n).year();switch(r){case 0:31===i&&31===u?(i=30,u=30):31===i?i=30:30===i&&31===u&&(u=30),o=(u+30*d+360*h-(i+30*s+360*c))/360;break;case 1:var f=365;if(c===h||c+1===h&&(s>d||s===d&&i>=u))return(c===h&&Eo.isLeapYear(c)||Eo.feb29Between(t,n)||1===d&&29===u)&&(f=366),(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/f;var m=h-c+1,p=((0,gh.default)().set({year:h+1,month:0,date:1})-(0,gh.default)().set({year:c,month:0,date:1}))/1e3/60/60/24/m;o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/p;break;case 2:o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/360;break;case 3:o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/365;break;case 4:o=(u+30*d+360*h-(i+30*s+360*c))/360}return l*a*o}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},COUPDAYBS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l,r=0;if(4==arguments.length){if(T(r=Eo.getFirstValue(arguments[3])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(1!=a&&2!=a&&4!=a)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o,i=Math.ceil((0,gh.default)(n).diff((0,gh.default)(t),\"months\")/(12/a))+1;for(e=1;e<=i;e++){var s=(0,gh.default)(n).subtract(12/a*e,\"months\");if(s<=(0,gh.default)(t)){o=s;break}}switch(r){case 0:var c=(0,gh.default)(o).date(),u=(0,gh.default)(o).month()+1,d=(0,gh.default)(o).year(),h=(0,gh.default)(t).date(),f=(0,gh.default)(t).month()+1,m=(0,gh.default)(t).year();31===c&&31===h?(c=30,h=30):31===c?c=30:30===c&&31===h&&(h=30),l=h+30*f+360*m-(c+30*u+360*d);break;case 1:case 2:case 3:l=(0,gh.default)(t).diff((0,gh.default)(o),\"days\");break;case 4:c=(0,gh.default)(o).date(),u=(0,gh.default)(o).month()+1,d=(0,gh.default)(o).year();l=(h=(0,gh.default)(t).date())+30*(f=(0,gh.default)(t).month()+1)+360*(m=(0,gh.default)(t).year())-(c+30*u+360*d)}return l}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},COUPDAYS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l,r=0;if(4==arguments.length){if(T(r=Eo.getFirstValue(arguments[3])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(1!=a&&2!=a&&4!=a)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;switch(r){case 0:case 2:case 4:l=360/a;break;case 1:var o=Math.ceil((0,gh.default)(n).diff((0,gh.default)(t),\"months\")/(12/a))+1;for(e=1;e<=o;e++){var i=(0,gh.default)(n).subtract(12/a*e,\"months\");if(i<=(0,gh.default)(t)){var s=(0,gh.default)(n).subtract(12/a*(e-1),\"months\");l=(0,gh.default)(s).diff((0,gh.default)(i),\"days\");break}}break;case 3:l=365/a}return l}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},COUPDAYSNC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l,r=0;if(4==arguments.length){if(T(r=Eo.getFirstValue(arguments[3])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(1!=a&&2!=a&&4!=a)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o,i=Math.ceil((0,gh.default)(n).diff((0,gh.default)(t),\"months\")/(12/a))+1;for(e=1;e<=i;e++){if((0,gh.default)(n).subtract(12/a*e,\"months\")<=(0,gh.default)(t)){o=(0,gh.default)(n).subtract(12/a*(e-1),\"months\");break}}switch(r){case 0:var s=(0,gh.default)(t).date(),c=(0,gh.default)(t).month()+1,u=(0,gh.default)(t).year(),d=(0,gh.default)(o).date(),h=(0,gh.default)(o).month()+1,f=(0,gh.default)(o).year();31===s&&31===d?(s=30,d=30):31===s?s=30:30===s&&31===d&&(d=30),l=d+30*h+360*f-(s+30*c+360*u);break;case 1:case 2:case 3:l=(0,gh.default)(o).diff((0,gh.default)(t),\"days\");break;case 4:s=(0,gh.default)(t).date(),c=(0,gh.default)(t).month()+1,u=(0,gh.default)(t).year();l=(d=(0,gh.default)(o).date())+30*(h=(0,gh.default)(o).month()+1)+360*(f=(0,gh.default)(o).year())-(s+30*c+360*u)}return l}catch(e){var m=e;return m=wi.errorInfo(m),[wi.error.v,m]}},COUPNCD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=0;if(4==arguments.length){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseInt(l)}if(1!=a&&2!=a&&4!=a)return wi.error.nm;if(l<0||l>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var r,o=Math.ceil((0,gh.default)(n).diff((0,gh.default)(t),\"months\")/(12/a))+1;for(e=1;e<=o;e++){if((0,gh.default)(n).subtract(12/a*e,\"months\")<=(0,gh.default)(t)){r=(0,gh.default)(n).subtract(12/a*(e-1),\"months\");break}}return(0,gh.default)(r).format(\"YYYY-MM-DD\")}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},COUPPCD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=0;if(4==arguments.length){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseInt(l)}if(1!=a&&2!=a&&4!=a)return wi.error.nm;if(l<0||l>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var r,o=Math.ceil((0,gh.default)(n).diff((0,gh.default)(t),\"months\")/(12/a))+1;for(e=1;e<=o;e++){var i=(0,gh.default)(n).subtract(12/a*e,\"months\");if(i<=(0,gh.default)(t)){r=i;break}}return(0,gh.default)(r).format(\"YYYY-MM-DD\")}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},FV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=0;if(arguments.length>=4){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseFloat(l)}var r,o=0;if(arguments.length>=5){if(T(o=Eo.getFirstValue(arguments[4])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}if(0!=o&&1!=o)return wi.error.nm;if(0===t)r=l+a*n;else{var i=Math.pow(1+t,n);r=1===o?l*i+a*(1+t)*(i-1)/t:l*i+a*(i-1)/t}return-r}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},FVSCHEDULE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=arguments[1],a=[];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;a=a.concat(Eo.getDataArr(n,!1))}else\"object\"==ad(n)&&null!=n.startCell?a=a.concat(Eo.getCellDataArr(n,\"number\",!1)):a.push(n);var l=[];for(e=0;e<a.length;e++){var r=a[e];if(!C(r))return wi.error.v;l.push(parseFloat(r))}var o=l.length,i=t;for(e=0;e<o;e++)i*=1+l[e];return i}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},YIELD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseFloat(r);var o=Eo.getFirstValue(arguments[5]);if(T(o))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=0;if(7==arguments.length){if(T(i=Eo.getFirstValue(arguments[6])))return i;if(!C(i))return wi.error.v;i=parseInt(i)}if(a<0)return wi.error.nm;if(l<=0||r<=0)return wi.error.nm;if(1!=o&&2!=o&&4!=o)return wi.error.nm;if(i<0||i>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;if(window.luckysheet_function.COUPNUM.f(t,n,o,i)>1){var s=1,c=0,u=s;for(e=1;e<=100;e++){var d=window.luckysheet_function.PRICE.f(t,n,a,u,r,o,i);if(Math.abs(d-l)<1e-6)break;d>l?c=u:s=u,u=(s+c)/2}var h=u}else{var f=window.luckysheet_function.COUPDAYSNC.f(t,n,o,i),m=window.luckysheet_function.COUPDAYS.f(t,n,o,i),p=l/100+window.luckysheet_function.COUPDAYBS.f(t,n,o,i)/m*(a/o);h=(r/100+a/o-p)/p*(o*m/f)}return h}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},YIELDDISC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}return a<=0||l<=0||(r<0||r>4||(0,gh.default)(t)-(0,gh.default)(n)>=0)?wi.error.nm:(l/a-1)/window.luckysheet_function.YEARFRAC.f(t,n,r)}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},NOMINAL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n),t<=0||n<1?wi.error.nm:(Math.pow(t+1,1/n)-1)*n):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},XIRR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!1)):n.push(t);var a=[];for(e=0;e<n.length;e++){var l=n[e];if(!C(l))return wi.error.v;a.push(parseFloat(l))}var r=Eo.getCellrangeDate(arguments[1]);if(T(r))return r;for(e=0;e<r.length;e++)if(!(0,gh.default)(r[e]).isValid())return wi.error.v;var o=.1;if(3==arguments.length){if(T(o=Eo.getFirstValue(arguments[2])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}var i=!1,s=!1;for(e=0;e<a.length&&(a[e]>0&&(i=!0),a[e]<0&&(s=!0),!i||!s);e++);if(!i||!s)return wi.error.nm;if(a.length!=r.length)return wi.error.nm;var c,u,d,h=function(e,t,n){for(var a=n+1,l=e[0],r=1;r<e.length;r++)l+=e[r]/Math.pow(a,window.luckysheet_function.DAYS.f(t[r],t[0])/365);return l},f=function(e,t,n){for(var a=n+1,l=0,r=1;r<e.length;r++){var o=window.luckysheet_function.DAYS.f(t[r],t[0])/365;l-=o*e[r]/Math.pow(a,o+1)}return l},m=o,p=!0;do{c=m-(d=h(a,r,m))/f(a,r,m),u=Math.abs(c-m),m=c,p=u>1e-10&&Math.abs(d)>1e-10}while(p);return m}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},MIRR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!1)):n.push(t);var a=[];for(e=0;e<n.length;e++){var l=n[e];if(!C(l))return wi.error.v;a.push(parseFloat(l))}var r=Eo.getFirstValue(arguments[1]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseFloat(r);var o=Eo.getFirstValue(arguments[2]);if(T(o))return o;if(!C(o))return wi.error.v;o=parseFloat(o);var i=a.length,s=[],c=[];for(e=0;e<i;e++)a[e]<0?s.push(a[e]):c.push(a[e]);if(0==s.length||0==c.length)return wi.error.d;var u=-window.luckysheet_function.NPV.f(o,c)*Math.pow(1+o,i-1),d=window.luckysheet_function.NPV.f(r,s)*(1+r);return Math.pow(u/d,1/(i-1))-1}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},IRR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"number\",!0)):n.push(t);var a=[];for(e=0;e<n.length;e++){var l=n[e];if(!C(l))return wi.error.v;a.push(parseFloat(l))}var r=.1;if(2==arguments.length){if(T(r=Eo.getFirstValue(arguments[1])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}var o=[],i=!1,s=!1;for(e=0;e<n.length;e++)o[e]=0===e?0:o[e-1]+365,n[e]>0&&(i=!0),n[e]<0&&(s=!0);if(!i||!s)return wi.error.nm;var c,u,d,h=function(e,t,n){for(var a=n+1,l=e[0],r=1;r<e.length;r++)l+=e[r]/Math.pow(a,(t[r]-t[0])/365);return l},f=function(e,t,n){for(var a=n+1,l=0,r=1;r<e.length;r++){var o=(t[r]-t[0])/365;l-=o*e[r]/Math.pow(a,o+1)}return l},m=r,p=!0;do{c=m-(d=h(a,o,m))/f(a,o,m),u=Math.abs(c-m),m=c,p=u>1e-10&&Math.abs(d)>1e-10}while(p);return m}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},NPV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=[];for(e=1;e<arguments.length;e++){var a=arguments[e];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;n=n.concat(Eo.getDataArr(a,!0))}else\"object\"==ad(a)&&null!=a.startCell?n=n.concat(Eo.getCellDataArr(a,\"number\",!0)):n.push(a)}var l=[];for(e=0;e<n.length;e++){var r=n[e];C(r)&&l.push(parseFloat(r))}var o=0;if(l.length>0)for(e=0;e<l.length;e++)o+=l[e]/Math.pow(1+t,e+1);return o}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},XNPV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=arguments[1],a=[];if(\"array\"==ad(n)){if(\"array\"==ad(n[0])&&!Eo.isDyadicArr(n))return wi.error.v;a=a.concat(Eo.getDataArr(n,!1))}else\"object\"==ad(n)&&null!=n.startCell?a=a.concat(Eo.getCellDataArr(n,\"number\",!1)):a.push(n);var l=[];for(e=0;e<a.length;e++){var r=a[e];if(!C(r))return wi.error.v;l.push(parseFloat(r))}var o=Eo.getCellrangeDate(arguments[2]);if(T(o))return o;for(e=0;e<o.length;e++)if(!(0,gh.default)(o[e]).isValid())return wi.error.v;if(l.length!=o.length)return wi.error.nm;var i=0;for(e=0;e<l.length;e++)i+=l[e]/Math.pow(1+t,window.luckysheet_function.DAYS.f(o[e],o[0])/365);return i}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},CUMIPMT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseInt(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseInt(r);var o=Eo.getFirstValue(arguments[5]);if(T(o))return o;if(!C(o))return wi.error.v;if(o=parseFloat(o),t<=0||n<=0||a<=0)return wi.error.nm;if(l<1||r<1||l>r)return wi.error.nm;if(0!=o&&1!=o)return wi.error.nm;var i=window.luckysheet_function.PMT.f(t,n,a,0,o),s=0;1===l&&0===o&&(s=-a,l++);for(e=l;e<=r;e++)s+=1===o?window.luckysheet_function.FV.f(t,e-2,i,a,1)-i:window.luckysheet_function.FV.f(t,e-1,i,a,0);return s*=t}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},PMT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=0;if(arguments.length>=4){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseFloat(l)}var r,o=0;if(5==arguments.length){if(T(o=Eo.getFirstValue(arguments[4])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}if(0!=o&&1!=o)return wi.error.nm;if(0===t)r=(a+l)/n;else{var i=Math.pow(1+t,n);r=1===o?(l*t/(i-1)+a*t/(1-1/i))/(1+t):l*t/(i-1)+a*t/(1-1/i)}return-r}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},IPMT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(arguments.length>=5){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}var o=0;if(arguments.length>=6){if(T(o=Eo.getFirstValue(arguments[5])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}if(n<1||n>a)return wi.error.nm;if(0!=o&&1!=o)return wi.error.nm;var i=window.luckysheet_function.PMT.f(t,a,l,r,o);return(1===n?1===o?0:-l:1===o?window.luckysheet_function.FV.f(t,n-2,i,l,1)-i:window.luckysheet_function.FV.f(t,n-1,i,l,0))*t}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},PPMT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(arguments.length>=5){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}var o=0;if(arguments.length>=6){if(T(o=Eo.getFirstValue(arguments[5])))return o;if(!C(o))return wi.error.v;o=parseFloat(o)}return n<1||n>a||0!=o&&1!=o?wi.error.nm:window.luckysheet_function.PMT.f(t,a,l,r,o)-window.luckysheet_function.IPMT.f(t,n,a,l,r,o)}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},INTRATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(a<=0||l<=0)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o,i=(0,gh.default)(t).date(),s=(0,gh.default)(t).month()+1,c=(0,gh.default)(t).year(),u=(0,gh.default)(n).date(),d=(0,gh.default)(n).month()+1,h=(0,gh.default)(n).year();switch(r){case 0:31===i&&31===u?(i=30,u=30):31===i?i=30:30===i&&31===u&&(u=30),o=360/(u+30*d+360*h-(i+30*s+360*c));break;case 1:var f=365;if(c===h||c+1===h&&(s>d||s===d&&i>=u))return(c===h&&Eo.isLeapYear(c)||Eo.feb29Between(t,n)||1===d&&29===u)&&(f=366),o=f/(0,gh.default)(n).diff((0,gh.default)(t),\"days\"),o*=(l-a)/a;var m=h-c+1;o=((0,gh.default)().set({year:h+1,month:0,date:1})-(0,gh.default)().set({year:c,month:0,date:1}))/1e3/60/60/24/m/(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 2:o=360/(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 3:o=365/(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 4:o=360/(u+30*d+360*h-(i+30*s+360*c))}return o*=(l-a)/a}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},PRICE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseFloat(r);var o=Eo.getFirstValue(arguments[5]);if(T(o))return o;if(!C(o))return wi.error.v;o=parseInt(o);var i=0;if(7==arguments.length){if(T(i=Eo.getFirstValue(arguments[6])))return i;if(!C(i))return wi.error.v;i=parseInt(i)}if(a<0||l<0)return wi.error.nm;if(r<=0)return wi.error.nm;if(1!=o&&2!=o&&4!=o)return wi.error.nm;if(i<0||i>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var s=window.luckysheet_function.COUPDAYSNC.f(t,n,o,i),c=window.luckysheet_function.COUPDAYS.f(t,n,o,i),u=window.luckysheet_function.COUPDAYBS.f(t,n,o,i),d=window.luckysheet_function.COUPNUM.f(t,n,o,i);if(d>1){var h=r/Math.pow(1+l/o,d-1+s/c),f=0;for(e=1;e<=d;e++)f+=100*a/o/Math.pow(1+l/o,e-1+s/c);var m=h+f-a/o*100*(u/c)}else m=(h=a/o*100+r)/(f=l/o*((c-u)/c)+1)-a/o*100*(u/c);return m}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},PRICEDISC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseInt(r)}if(a<=0||l<=0)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o,i=(0,gh.default)(t).date(),s=(0,gh.default)(t).month()+1,c=(0,gh.default)(t).year(),u=(0,gh.default)(n).date(),d=(0,gh.default)(n).month()+1,h=(0,gh.default)(n).year();switch(r){case 0:31===i&&31===u?(i=30,u=30):31===i?i=30:30===i&&31===u&&(u=30),o=(u+30*d+360*h-(i+30*s+360*c))/360;break;case 1:var f=365;if(c===h||c+1===h&&(s>d||s===d&&i>=u))return(c===h&&Eo.isLeapYear(c)||Eo.feb29Between(t,n)||1===d&&29===u)&&(f=366),o=l-a*l*(o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/f);var m=h-c+1,p=((0,gh.default)().set({year:h+1,month:0,date:1})-(0,gh.default)().set({year:c,month:0,date:1}))/1e3/60/60/24/m;o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/p;break;case 2:o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/360;break;case 3:o=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")/365;break;case 4:o=(u+30*d+360*h-(i+30*s+360*c))/360}return o=l-a*l*o}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},PRICEMAT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getCellDate(arguments[2]);if(T(a))return a;if(!(0,gh.default)(a).isValid())return wi.error.v;var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseFloat(r);var o=0;if(6==arguments.length){if(T(o=Eo.getFirstValue(arguments[5])))return o;if(!C(o))return wi.error.v;o=parseInt(o)}if(l<0||r<0)return wi.error.nm;if(o<0||o>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var i=(0,gh.default)(t).date(),s=(0,gh.default)(t).month()+1,c=(0,gh.default)(t).year(),u=(0,gh.default)(n).date(),d=(0,gh.default)(n).month()+1,h=(0,gh.default)(n).year(),f=(0,gh.default)(a).date(),m=(0,gh.default)(a).month()+1,p=(0,gh.default)(a).year();switch(o){case 0:31==i&&(i=30),31==u&&(u=30),31==f&&(f=30);var g=360,y=u+30*d+360*h-(i+30*s+360*c),v=u+30*d+360*h-(f+30*m+360*p),b=i+30*s+360*c-(f+30*m+360*p);break;case 1:var k=365;if(c===h||c+1===h&&(s>d||s===d&&i>=u)){(c===h&&Eo.isLeapYear(c)||Eo.feb29Between(t,n)||1===d&&29===u)&&(k=366);g=k,y=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");return(100+(v=(0,gh.default)(t).diff((0,gh.default)(a),\"days\"))/g*l*100)/(1+y/g*r)-(b=(0,gh.default)(n).diff((0,gh.default)(a),\"days\"))/g*l*100}var w=h-c+1;g=((0,gh.default)().set({year:h+1,month:0,date:1})-(0,gh.default)().set({year:c,month:0,date:1}))/1e3/60/60/24/w,y=(0,gh.default)(n).diff((0,gh.default)(t),\"days\"),v=(0,gh.default)(t).diff((0,gh.default)(a),\"days\"),b=(0,gh.default)(n).diff((0,gh.default)(a),\"days\");break;case 2:g=360,y=(0,gh.default)(n).diff((0,gh.default)(t),\"days\"),v=(0,gh.default)(t).diff((0,gh.default)(a),\"days\"),b=(0,gh.default)(n).diff((0,gh.default)(a),\"days\");break;case 3:g=365,y=(0,gh.default)(n).diff((0,gh.default)(t),\"days\"),v=(0,gh.default)(t).diff((0,gh.default)(a),\"days\"),b=(0,gh.default)(n).diff((0,gh.default)(a),\"days\");break;case 4:g=360,y=u+30*d+360*h-(i+30*s+360*c),v=u+30*d+360*h-(f+30*m+360*p),b=i+30*s+360*c-(f+30*m+360*p)}return(100+v/g*l*100)/(1+y/g*r)-b/g*l*100}catch(e){var x=e;return x=wi.errorInfo(x),[wi.error.v,x]}},RECEIVED:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}if(a<=0||l<=0)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o=(0,gh.default)(t).date(),i=(0,gh.default)(t).month()+1,s=(0,gh.default)(t).year(),c=(0,gh.default)(n).date(),u=(0,gh.default)(n).month()+1,d=(0,gh.default)(n).year();switch(r){case 0:31==o&&(o=30),31==c&&(c=30);var h=360,f=c+30*u+360*d-(o+30*i+360*s);break;case 1:var m=365;if(s===d||s+1===d&&(i>u||i===u&&o>=c)){(s===d&&Eo.isLeapYear(s)||Eo.feb29Between(t,n)||1===u&&29===c)&&(m=366);h=m;return a/(1-l*(f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\"))/h)}var p=d-s+1;h=((0,gh.default)().set({year:d+1,month:0,date:1})-(0,gh.default)().set({year:s,month:0,date:1}))/1e3/60/60/24/p,f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 2:h=360,f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 3:h=365,f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 4:h=360,f=c+30*u+360*d-(o+30*i+360*s)}return a/(1-l*f/h)}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},DISC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=0;if(5==arguments.length){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}if(a<=0||l<=0)return wi.error.nm;if(r<0||r>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var o=(0,gh.default)(t).date(),i=(0,gh.default)(t).month()+1,s=(0,gh.default)(t).year(),c=(0,gh.default)(n).date(),u=(0,gh.default)(n).month()+1,d=(0,gh.default)(n).year();switch(r){case 0:31==o&&(o=30),31==c&&(c=30);var h=360,f=c+30*u+360*d-(o+30*i+360*s);break;case 1:var m=365;if(s===d||s+1===d&&(i>u||i===u&&o>=c))return(s===d&&Eo.isLeapYear(s)||Eo.feb29Between(t,n)||1===u&&29===c)&&(m=366),(l-a)/l*((h=m)/(f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\")));var p=d-s+1;h=((0,gh.default)().set({year:d+1,month:0,date:1})-(0,gh.default)().set({year:s,month:0,date:1}))/1e3/60/60/24/p,f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 2:h=360,f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 3:h=365,f=(0,gh.default)(n).diff((0,gh.default)(t),\"days\");break;case 4:h=360,f=c+30*u+360*d-(o+30*i+360*s)}return(l-a)/l*(h/f)}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},NPER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=0;if(arguments.length>=4){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseFloat(l)}var r=0;if(arguments.length>=5){if(T(r=Eo.getFirstValue(arguments[4])))return r;if(!C(r))return wi.error.v;r=parseFloat(r)}if(0!=r&&1!=r)return wi.error.nm;var o=n*(1+t*r)-l*t,i=a*t+n*(1+t*r);return Math.log(o/i)/Math.log(1+t)}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},SLN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?0==(a=parseFloat(a))?wi.error.d:(t-n)/a:wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},DURATION:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseInt(r);var o=0;if(6==arguments.length){if(T(o=Eo.getFirstValue(arguments[5])))return o;if(!C(o))return wi.error.v;o=parseInt(o)}if(a<0||l<0)return wi.error.nm;if(1!=r&&2!=r&&4!=r)return wi.error.nm;if(o<0||o>4)return wi.error.nm;if((0,gh.default)(t)-(0,gh.default)(n)>=0)return wi.error.nm;var i=window.luckysheet_function.COUPNUM.f(t,n,r,o),s=0,c=0;for(e=1;e<=i;e++)s+=a/r*100*e/Math.pow(1+l/r,e),c+=a/r*100/Math.pow(1+l/r,e);var u=(s+100*i/Math.pow(1+l/r,i))/(c+100/Math.pow(1+l/r,i));return u/=r}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},MDURATION:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellDate(arguments[0]);if(T(t))return t;if(!(0,gh.default)(t).isValid())return wi.error.v;var n=Eo.getCellDate(arguments[1]);if(T(n))return n;if(!(0,gh.default)(n).isValid())return wi.error.v;var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseFloat(a);var l=Eo.getFirstValue(arguments[3]);if(T(l))return l;if(!C(l))return wi.error.v;l=parseFloat(l);var r=Eo.getFirstValue(arguments[4]);if(T(r))return r;if(!C(r))return wi.error.v;r=parseInt(r);var o=0;if(6==arguments.length){if(T(o=Eo.getFirstValue(arguments[5])))return o;if(!C(o))return wi.error.v;o=parseInt(o)}return a<0||l<0||(1!=r&&2!=r&&4!=r||o<0||o>4||(0,gh.default)(t)-(0,gh.default)(n)>=0)?wi.error.nm:window.luckysheet_function.DURATION.f(t,n,a,l,r,o)/(1+l/r)}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},BIN2DEC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!/^[01]{1,10}$/g.test(t))return wi.error.nm;var n=parseInt(t,2),a=t.toString();return 10===a.length&&\"1\"===a.substring(0,1)?parseInt(a.substring(1),2)-512:n}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},BIN2HEX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^[01]{1,10}$/g.test(t))return wi.error.nm;var a=parseInt(t,2).toString(16).toUpperCase();return null==n?a:n<0||n<a.length?wi.error.nm:new Array(n-a.length+1).join(\"0\")+a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},BIN2OCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^[01]{1,10}$/g.test(t))return wi.error.nm;var a=t.toString();if(10===a.length&&\"1\"===a.substring(0,1))return(1073741312+parseInt(a.substring(1),2)).toString(8);var l=parseInt(t,2).toString(8);return null==n?l:n<0||n<l.length?wi.error.nm:new Array(n-l.length+1).join(\"0\")+l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},DEC2BIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^-?[0-9]{1,3}$/.test(t)||t<-512||t>511)return wi.error.nm;if(t<0)return\"1\"+new Array(9-(512+t).toString(2).length).join(\"0\")+(512+t).toString(2);var a=parseInt(t,10).toString(2);return null==n?a:n<0||n<a.length?wi.error.nm:new Array(n-a.length+1).join(\"0\")+a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},DEC2HEX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^-?[0-9]{1,12}$/.test(t)||t<-549755813888||t>549755813887)return wi.error.nm;if(t<0)return(1099511627776+t).toString(16).toUpperCase();var a=parseInt(t,10).toString(16).toUpperCase();return null==n?a:n<0||n<a.length?wi.error.nm:new Array(n-a.length+1).join(\"0\")+a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},DEC2OCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^-?[0-9]{1,9}$/.test(t)||t<-536870912||t>536870911)return wi.error.nm;if(t<0)return(1073741824+t).toString(8);var a=parseInt(t,10).toString(8);return null==n?a:n<0||n<a.length?wi.error.nm:new Array(n-a.length+1).join(\"0\")+a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},HEX2BIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^[0-9A-Fa-f]{1,10}$/.test(t))return wi.error.nm;var a=10===t.length&&\"f\"===t.substring(0,1).toLowerCase(),l=a?parseInt(t,16)-1099511627776:parseInt(t,16);if(l<-512||l>511)return wi.error.nm;if(a)return\"1\"+new Array(9-(512+l).toString(2).length).join(\"0\")+(512+l).toString(2);var r=l.toString(2);return null==n?r:n<0||n<r.length?wi.error.nm:new Array(n-r.length+1).join(\"0\")+r}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},HEX2DEC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!/^[0-9A-Fa-f]{1,10}$/.test(t))return wi.error.nm;var n=parseInt(t,16);return n>=549755813888?n-1099511627776:n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},HEX2OCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^[0-9A-Fa-f]{1,10}$/.test(t))return wi.error.nm;var a=parseInt(t,16);if(a>536870911&&a<0xffe0000000)return wi.error.nm;if(a>=0xffe0000000)return(a-0xffc0000000).toString(8);var l=a.toString(8);return null==n?l:n<0||n<l.length?wi.error.nm:new Array(n-l.length+1).join(\"0\")+l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},OCT2BIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^[0-7]{1,10}$/.test(t))return wi.error.nm;var a=10===(t=t.toString()).length&&\"7\"===t.substring(0,1),l=a?parseInt(t,8)-1073741824:parseInt(t,8);if(l<-512||l>511)return F.num;if(a)return\"1\"+new Array(9-(512+l).toString(2).length).join(\"0\")+(512+l).toString(2);var r=l.toString(2);return null==n?r:n<0||n<r.length?wi.error.nm:new Array(n-r.length+1).join(\"0\")+r}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},OCT2DEC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!/^[0-7]{1,10}$/.test(t))return wi.error.nm;var n=parseInt(t,8);return n>=536870912?n-1073741824:n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},OCT2HEX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=null;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(!/^[0-7]{1,10}$/.test(t))return wi.error.nm;var a=parseInt(t,8);if(a>=536870912)return\"FF\"+(a+3221225472).toString(16).toUpperCase();var l=a.toString(16).toUpperCase();return null==n?l:n<0||n<l.length?wi.error.nm:new Array(n-l.length+1).join(\"0\")+l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},COMPLEX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseFloat(n);var a=\"i\";if(3==arguments.length&&(a=arguments[2].toString()),\"i\"!=a&&\"j\"!=a)return wi.error.v;if(0===t&&0===n)return 0;if(0===t)return 1===n?a:n.toString()+a;if(0===n)return t.toString();var l=n>0?\"+\":\"\";return t.toString()+l+(1===n?a:n.toString()+a)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},IMREAL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(\"true\"==(t=t.toString()).toLowerCase()||\"false\"==t.toLowerCase())return wi.error.v;if(\"0\"==t||[\"i\",\"+i\",\"1i\",\"+1i\",\"-i\",\"-1i\",\"j\",\"+j\",\"1j\",\"+1j\",\"-j\",\"-1j\"].indexOf(t)>=0)return 0;var n=t.indexOf(\"+\"),a=t.indexOf(\"-\");0===n&&(n=t.indexOf(\"+\",1)),0===a&&(a=t.indexOf(\"-\",1));var l=t.substring(t.length-1,t.length),r=\"i\"===l||\"j\"===l;return n>=0||a>=0?r?n>=0?isNaN(t.substring(0,n))||isNaN(t.substring(n+1,t.length-1))?wi.error.nm:Number(t.substring(0,n)):isNaN(t.substring(0,a))||isNaN(t.substring(a+1,t.length-1))?wi.error.nm:Number(t.substring(0,a)):wi.error.nm:r?isNaN(t.substring(0,t.length-1))?wi.error.nm:0:isNaN(t)?wi.error.nm:t}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},IMAGINARY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(\"true\"==(t=t.toString()).toLowerCase()||\"false\"==t.toLowerCase())return wi.error.v;if(\"0\"==t)return 0;if([\"i\",\"j\"].indexOf(t)>=0)return 1;var n=(t=t.replace(\"+i\",\"+1i\").replace(\"-i\",\"-1i\").replace(\"+j\",\"+1j\").replace(\"-j\",\"-1j\")).indexOf(\"+\"),a=t.indexOf(\"-\");0===n&&(n=t.indexOf(\"+\",1)),0===a&&(a=t.indexOf(\"-\",1));var l=t.substring(t.length-1,t.length),r=\"i\"===l||\"j\"===l;return n>=0||a>=0?r?n>=0?isNaN(t.substring(0,n))||isNaN(t.substring(n+1,t.length-1))?wi.error.nm:Number(t.substring(n+1,t.length-1)):isNaN(t.substring(0,a))||isNaN(t.substring(a+1,t.length-1))?wi.error.nm:-Number(t.substring(a+1,t.length-1)):wi.error.nm:r?isNaN(t.substring(0,t.length-1))?wi.error.nm:t.substring(0,t.length-1):isNaN(t)?wi.error.nm:0}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},IMCONJUGATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;t=t.toString();var n=window.luckysheet_function.IMREAL.f(t);if(T(n))return n;var a=window.luckysheet_function.IMAGINARY.f(t);if(T(a))return a;var l=t.substring(t.length-1);return l=\"i\"===l||\"j\"===l?l:\"i\",0!==a?window.luckysheet_function.COMPLEX.f(n,-a,l):t}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},IMABS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=window.luckysheet_function.IMREAL.f(arguments[0]);if(T(t))return t;var n=window.luckysheet_function.IMAGINARY.f(arguments[0]);return T(n)?n:Math.sqrt(Math.pow(t,2)+Math.pow(n,2))}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DELTA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=0;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseFloat(n)}return t===n?1:0}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},IMSUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=window.luckysheet_function.IMREAL.f(arguments[0]);if(T(t))return t;var n=window.luckysheet_function.IMAGINARY.f(arguments[0]);if(T(n))return n;var a=arguments[0];for(e=1;e<arguments.length;e++){var l=window.luckysheet_function.IMREAL.f(a);if(T(l))return l;var r=window.luckysheet_function.IMAGINARY.f(a);if(T(r))return r;var o=window.luckysheet_function.IMREAL.f(arguments[e]);if(T(o))return o;var i=window.luckysheet_function.IMAGINARY.f(arguments[e]);if(T(i))return i;a=window.luckysheet_function.COMPLEX.f(l+o,r+i)}return a}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},IMSUB:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(\"true\"==(t=t.toString()).toLowerCase()||\"false\"==t.toLowerCase())return wi.error.v;var n=window.luckysheet_function.IMREAL.f(t);if(T(n))return n;var a=window.luckysheet_function.IMAGINARY.f(t);if(T(a))return a;var l=Eo.getFirstValue(arguments[1]);if(T(l))return l;if(\"true\"==(l=l.toString()).toLowerCase()||\"false\"==l.toLowerCase())return wi.error.v;var r=window.luckysheet_function.IMREAL.f(l);if(T(r))return r;var o=window.luckysheet_function.IMAGINARY.f(l);if(T(o))return o;var i=t.substring(t.length-1),s=l.substring(l.length-1),c=\"i\";return(\"j\"===i||\"j\"===s)&&(c=\"j\"),window.luckysheet_function.COMPLEX.f(n-r,a-o,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},IMPRODUCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=window.luckysheet_function.IMREAL.f(arguments[0]);if(T(t))return t;var n=window.luckysheet_function.IMAGINARY.f(arguments[0]);if(T(n))return n;var a=arguments[0];for(e=1;e<arguments.length;e++){var l=window.luckysheet_function.IMREAL.f(a);if(T(l))return l;var r=window.luckysheet_function.IMAGINARY.f(a);if(T(r))return r;var o=window.luckysheet_function.IMREAL.f(arguments[e]);if(T(o))return o;var i=window.luckysheet_function.IMAGINARY.f(arguments[e]);if(T(i))return i;a=window.luckysheet_function.COMPLEX.f(l*o-r*i,l*i+r*o)}return a}catch(e){var s=e;return s=wi.errorInfo(s),[wi.error.v,s]}},IMDIV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(\"true\"==(t=t.toString()).toLowerCase()||\"false\"==t.toLowerCase())return wi.error.v;var n=window.luckysheet_function.IMREAL.f(t);if(T(n))return n;var a=window.luckysheet_function.IMAGINARY.f(t);if(T(a))return a;var l=Eo.getFirstValue(arguments[1]);if(T(l))return l;if(\"true\"==(l=l.toString()).toLowerCase()||\"false\"==l.toLowerCase())return wi.error.v;var r=window.luckysheet_function.IMREAL.f(l);if(T(r))return r;var o=window.luckysheet_function.IMAGINARY.f(l);if(T(o))return o;var i=t.substring(t.length-1),s=l.substring(l.length-1),c=\"i\";if((\"j\"===i||\"j\"===s)&&(c=\"j\"),0===r&&0===o)return wi.error.nm;var u=r*r+o*o;return window.luckysheet_function.COMPLEX.f((n*r+a*o)/u,(a*r-n*o)/u,c)}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},NOT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellBoolen(arguments[0]);return T(t)?t:!t}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TRUE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return!0}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},FALSE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return!1}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},AND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=!0;for(e=0;e<arguments.length;e++){var n=Eo.getCellBoolen(arguments[e]);if(T(n))return n;if(!n){t=!1;break}}return t}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},IFERROR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[1],\"text\"),n=Eo.getFirstValue(arguments[0],\"text\");return T(n)||\"string\"===ad(n)&&\"\"===$.trim(n)?t:n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},IF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getCellBoolen(arguments[0]);if(T(t))return t;var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n)&&n!=F.d)return n;var a=\"\";return 3==arguments.length&&(T(a=Eo.getFirstValue(arguments[2],\"text\"))&&a!=F.d)?a:t?n:a}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},OR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=!1;for(e=0;e<arguments.length;e++){var n=Eo.getCellBoolen(arguments[e]);if(T(n))return n;if(n){t=!0;break}}return t}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},NE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=Eo.getFirstValue(arguments[1]);return T(n)?n:t!=n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},EQ:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;var n=Eo.getFirstValue(arguments[1]);return T(n)?n:t==n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},GT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t>(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},GTE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t>=(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},LT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t<(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},LTE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t<=(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ADD:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t+(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},MINUS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t-(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},MULTIPLY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?t*(n=parseFloat(n)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},DIVIDE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?0==(n=parseFloat(n))?wi.error.d:t/n:wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},CONCAT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;var n=Eo.getFirstValue(arguments[1],\"text\");return T(n)?n:t+\"\"+n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},UNARY_PERCENT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;var n=(t=parseFloat(t))/100;return Math.round(100*n)/100}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},CONCATENATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=\"\";for(e=0;e<arguments.length;e++){var n=Eo.getFirstValue(arguments[e],\"text\");if(T(n))return n;t=t+\"\"+n}return t}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},CODE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:\"\"==t?wi.error.v:t.charCodeAt(0)}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},CHAR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?(t=parseInt(t))<1||t>255?wi.error.v:String.fromCharCode(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ARABIC:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;if(t=t.toString().toUpperCase(),!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(t))return wi.error.v;var n=0;return t.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,(function(e){n+={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1}[e]})),n}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ROMAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let e=function(e){var t=[[\"\",\"I\",\"II\",\"III\",\"IV\",\"V\",\"VI\",\"VII\",\"VIII\",\"IX\"],[\"\",\"X\",\"XX\",\"XXX\",\"XL\",\"L\",\"LX\",\"LXX\",\"LXXX\",\"XC\"],[\"\",\"C\",\"CC\",\"CCC\",\"CD\",\"D\",\"DC\",\"DCC\",\"DCCC\",\"CM\"],[\"\",\"M\",\"MM\",\"MMM\"]];return t[3][Math.floor(e/1e3)]+t[2][Math.floor(e%1e3/100)]+t[1][Math.floor(e%100/10)]+t[0][e%10]};var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?0==(t=parseInt(t))?\"\":t<1||t>3999?wi.error.v:e(t):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},REGEXEXTRACT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;var a=t.match(new RegExp(n));return a?a[a.length>1?a.length-1:0]:null}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},REGEXMATCH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;var n=Eo.getFirstValue(arguments[1],\"text\");return T(n)?n:!!t.match(new RegExp(n))}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},REGEXREPLACE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;var a=Eo.getFirstValue(arguments[2],\"text\");return T(a)?a:t.replace(new RegExp(n),a)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},T:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)||\"string\"==ad(t)?t:\"\"}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},FIXED:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=2;if(arguments.length>=2){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}var a=!1;if(3==arguments.length&&T(a=Eo.getCellBoolen(arguments[2])))return a;if(n>127)return wi.error.v;var l=a?\"0\":\"#,##0\";return n<=0?t=Math.round(t*Math.pow(10,n))/Math.pow(10,n):n>0&&(l+=\".\"+new Array(n+1).join(\"0\")),Ca(l,t)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},FIND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;n=n.toString();var a=1;if(3==arguments.length){if(T(a=Eo.getFirstValue(arguments[2])))return a;if(!C(a))return wi.error.v;a=parseFloat(a)}return a<0||a>n.length?wi.error.v:\"\"==t?a:-1==n.indexOf(t)?wi.error.v:n.indexOf(t,a-1)+1}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},FINDB:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;n=n.toString();var a=1;if(3==arguments.length){if(T(a=Eo.getFirstValue(arguments[2])))return a;if(!C(a))return wi.error.v;a=parseFloat(a)}if(a<0||a>n.length)return wi.error.v;if(\"\"==t)return a;if(-1==n.indexOf(t))return wi.error.v;var l=n.split(\"\"),r=n.indexOf(t,a-1),o=0;for(e=0;e<r;e++)/[^\\x00-\\xff]/g.test(l[e])?o+=2:o+=1;return o}catch(e){var i=e;return i=wi.errorInfo(i),[wi.error.v,i]}},JOIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;var n=[];for(e=1;e<arguments.length;e++){var a=arguments[e];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;n=n.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?n=n.concat(Eo.getCellDataArr(a,\"text\",!1)):n.push(a)}return n.join(t)}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},LEFT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=1;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}return n<0?wi.error.v:n>=t.length?t:0==n?\"\":t.substr(0,n)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},RIGHT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=1;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}return n<0?wi.error.v:n>=t.length?t:0==n?\"\":t.substr(-n,n)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},MID:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);return T(a)?a:C(a)?(a=parseInt(a),n<1||a<0?wi.error.v:n>t.length?\"\":n+a>t.length?t.substr(n-1,t.length-n+1):t.substr(n-1,a)):wi.error.v}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},LEN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(t=t.toString()).length}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},LENB:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(t=t.toString()).replace(/[^\\x00-\\xff]/g,\"aa\").length}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},LOWER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(t=t.toString())&&t.toLowerCase()}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},UPPER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(t=t.toString())&&t.toUpperCase()}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},EXACT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1],\"text\");return T(n)?n:t===(n=n.toString())}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},REPLACE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1]);if(T(n))return n;if(!C(n))return wi.error.v;n=parseInt(n);var a=Eo.getFirstValue(arguments[2]);if(T(a))return a;if(!C(a))return wi.error.v;a=parseInt(a);var l=Eo.getFirstValue(arguments[3],\"text\");return T(l)?l:(l=l.toString(),t.substr(0,n-1)+l+t.substr(n-1+a))}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},REPT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1]);return T(n)?n:C(n)?(n=parseInt(n))<0?wi.error.v:(n>100&&(n=100),new Array(n+1).join(t)):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},SEARCH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;n=n.toString();var a=1;if(3==arguments.length){if(T(a=Eo.getFirstValue(arguments[2])))return a;if(!C(a))return wi.error.v;a=parseInt(a)}if(a<=0||a>n.length)return wi.error.v;var l=n.toLowerCase().indexOf(t.toLowerCase(),a-1)+1;return 0===l?wi.error.v:l}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},SUBSTITUTE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;n=n.toString();var a=Eo.getFirstValue(arguments[2],\"text\");if(T(a))return a;a=a.toString();var l=null;if(4==arguments.length){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseInt(l)}var r,o=new RegExp(n,\"g\");if(null==l)r=t.replace(o,a);else{if(l<=0)return wi.error.v;var i=t.match(o);if(null==i||l>i.length)return t;var s=n.length,c=0;for(e=1;e<=l;e++)c=t.indexOf(n,c)+1;r=t.substring(0,c-1)+a+t.substring(c-1+s)}return r}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},CLEAN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");if(T(t))return t;t=t.toString();var n=[];for(e=0;e<t.length;e++){var a=t.charCodeAt(e);(/[\\u4e00-\\u9fa5]/g.test(t.charAt(e))||a>31&&a<127)&&n.push(t.charAt(e))}return n.join(\"\")}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},TEXT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1],\"text\");return T(n)?n:Ca(n=n.toString(),t)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},TRIM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(t=t.toString()).replace(/ +/g,\" \").trim()}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},VALUE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:_a(t=t.toString())[2]}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},PROPER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(t=t.toString().toLowerCase()).replace(/[a-zA-Z]+/g,(function(e){return e.substring(0,1).toUpperCase()+e.substring(1)}))}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},CONVERT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseFloat(t);var n=Eo.getFirstValue(arguments[1],\"text\");if(T(n))return n;n=n.toString();var a=Eo.getFirstValue(arguments[2],\"text\");if(T(a))return a;a=a.toString();var l,r=[[\"a.u. of action\",\"?\",null,\"action\",!1,!1,105457168181818e-48],[\"a.u. of charge\",\"e\",null,\"electric_charge\",!1,!1,160217653141414e-33],[\"a.u. of energy\",\"Eh\",null,\"energy\",!1,!1,435974417757576e-32],[\"a.u. of length\",\"a?\",null,\"length\",!1,!1,529177210818182e-25],[\"a.u. of mass\",\"m?\",null,\"mass\",!1,!1,910938261616162e-45],[\"a.u. of time\",\"?/Eh\",null,\"time\",!1,!1,241888432650516e-31],[\"admiralty knot\",\"admkn\",null,\"speed\",!1,!0,.514773333],[\"ampere\",\"A\",null,\"electric_current\",!0,!1,1],[\"ampere per meter\",\"A/m\",null,\"magnetic_field_intensity\",!0,!1,1],[\"ångström\",\"Å\",[\"ang\"],\"length\",!1,!0,1e-10],[\"are\",\"ar\",null,\"area\",!1,!0,100],[\"astronomical unit\",\"ua\",null,\"length\",!1,!1,149597870691667e-25],[\"bar\",\"bar\",null,\"pressure\",!1,!1,1e5],[\"barn\",\"b\",null,\"area\",!1,!1,1e-28],[\"becquerel\",\"Bq\",null,\"radioactivity\",!0,!1,1],[\"bit\",\"bit\",[\"b\"],\"information\",!1,!0,1],[\"btu\",\"BTU\",[\"btu\"],\"energy\",!1,!0,1055.05585262],[\"byte\",\"byte\",null,\"information\",!1,!0,8],[\"candela\",\"cd\",null,\"luminous_intensity\",!0,!1,1],[\"candela per square metre\",\"cd/m?\",null,\"luminance\",!0,!1,1],[\"coulomb\",\"C\",null,\"electric_charge\",!0,!1,1],[\"cubic ångström\",\"ang3\",[\"ang^3\"],\"volume\",!1,!0,1e-30],[\"cubic foot\",\"ft3\",[\"ft^3\"],\"volume\",!1,!0,.028316846592],[\"cubic inch\",\"in3\",[\"in^3\"],\"volume\",!1,!0,16387064e-12],[\"cubic light-year\",\"ly3\",[\"ly^3\"],\"volume\",!1,!0,846786664623715e-61],[\"cubic metre\",\"m?\",null,\"volume\",!0,!0,1],[\"cubic mile\",\"mi3\",[\"mi^3\"],\"volume\",!1,!0,4168181825.44058],[\"cubic nautical mile\",\"Nmi3\",[\"Nmi^3\"],\"volume\",!1,!0,6352182208],[\"cubic Pica\",\"Pica3\",[\"Picapt3\",\"Pica^3\",\"Picapt^3\"],\"volume\",!1,!0,7.58660370370369e-8],[\"cubic yard\",\"yd3\",[\"yd^3\"],\"volume\",!1,!0,.764554857984],[\"cup\",\"cup\",null,\"volume\",!1,!0,.0002365882365],[\"dalton\",\"Da\",[\"u\"],\"mass\",!1,!1,166053886282828e-41],[\"day\",\"d\",[\"day\"],\"time\",!1,!0,86400],[\"degree\",\"°\",null,\"angle\",!1,!1,.0174532925199433],[\"degrees Rankine\",\"Rank\",null,\"temperature\",!1,!0,.555555555555556],[\"dyne\",\"dyn\",[\"dy\"],\"force\",!1,!0,1e-5],[\"electronvolt\",\"eV\",[\"ev\"],\"energy\",!1,!0,1.60217656514141],[\"ell\",\"ell\",null,\"length\",!1,!0,1.143],[\"erg\",\"erg\",[\"e\"],\"energy\",!1,!0,1e-7],[\"farad\",\"F\",null,\"electric_capacitance\",!0,!1,1],[\"fluid ounce\",\"oz\",null,\"volume\",!1,!0,295735295625e-16],[\"foot\",\"ft\",null,\"length\",!1,!0,.3048],[\"foot-pound\",\"flb\",null,\"energy\",!1,!0,1.3558179483314],[\"gal\",\"Gal\",null,\"acceleration\",!1,!1,.01],[\"gallon\",\"gal\",null,\"volume\",!1,!0,.003785411784],[\"gauss\",\"G\",[\"ga\"],\"magnetic_flux_density\",!1,!0,1],[\"grain\",\"grain\",null,\"mass\",!1,!0,647989e-10],[\"gram\",\"g\",null,\"mass\",!1,!0,.001],[\"gray\",\"Gy\",null,\"absorbed_dose\",!0,!1,1],[\"gross registered ton\",\"GRT\",[\"regton\"],\"volume\",!1,!0,2.8316846592],[\"hectare\",\"ha\",null,\"area\",!1,!0,1e4],[\"henry\",\"H\",null,\"inductance\",!0,!1,1],[\"hertz\",\"Hz\",null,\"frequency\",!0,!1,1],[\"horsepower\",\"HP\",[\"h\"],\"power\",!1,!0,745.69987158227],[\"horsepower-hour\",\"HPh\",[\"hh\",\"hph\"],\"energy\",!1,!0,2684519.538],[\"hour\",\"h\",[\"hr\"],\"time\",!1,!0,3600],[\"imperial gallon (U.K.)\",\"uk_gal\",null,\"volume\",!1,!0,.00454609],[\"imperial hundredweight\",\"lcwt\",[\"uk_cwt\",\"hweight\"],\"mass\",!1,!0,50.802345],[\"imperial quart (U.K)\",\"uk_qt\",null,\"volume\",!1,!0,.0011365225],[\"imperial ton\",\"brton\",[\"uk_ton\",\"LTON\"],\"mass\",!1,!0,1016.046909],[\"inch\",\"in\",null,\"length\",!1,!0,.0254],[\"international acre\",\"uk_acre\",null,\"area\",!1,!0,4046.8564224],[\"IT calorie\",\"cal\",null,\"energy\",!1,!0,4.1868],[\"joule\",\"J\",null,\"energy\",!0,!0,1],[\"katal\",\"kat\",null,\"catalytic_activity\",!0,!1,1],[\"kelvin\",\"K\",[\"kel\"],\"temperature\",!0,!0,1],[\"kilogram\",\"kg\",null,\"mass\",!0,!0,1],[\"knot\",\"kn\",null,\"speed\",!1,!0,.514444444444444],[\"light-year\",\"ly\",null,\"length\",!1,!0,9460730472580800],[\"litre\",\"L\",[\"l\",\"lt\"],\"volume\",!1,!0,.001],[\"lumen\",\"lm\",null,\"luminous_flux\",!0,!1,1],[\"lux\",\"lx\",null,\"illuminance\",!0,!1,1],[\"maxwell\",\"Mx\",null,\"magnetic_flux\",!1,!1,1e-18],[\"measurement ton\",\"MTON\",null,\"volume\",!1,!0,1.13267386368],[\"meter per hour\",\"m/h\",[\"m/hr\"],\"speed\",!1,!0,.00027777777777778],[\"meter per second\",\"m/s\",[\"m/sec\"],\"speed\",!0,!0,1],[\"meter per second squared\",\"m?s??\",null,\"acceleration\",!0,!1,1],[\"parsec\",\"pc\",[\"parsec\"],\"length\",!1,!0,0x6da012f958ee1c],[\"meter squared per second\",\"m?/s\",null,\"kinematic_viscosity\",!0,!1,1],[\"metre\",\"m\",null,\"length\",!0,!0,1],[\"miles per hour\",\"mph\",null,\"speed\",!1,!0,.44704],[\"millimetre of mercury\",\"mmHg\",null,\"pressure\",!1,!1,133.322],[\"minute\",\"?\",null,\"angle\",!1,!1,.000290888208665722],[\"minute\",\"min\",[\"mn\"],\"time\",!1,!0,60],[\"modern teaspoon\",\"tspm\",null,\"volume\",!1,!0,5e-6],[\"mole\",\"mol\",null,\"amount_of_substance\",!0,!1,1],[\"morgen\",\"Morgen\",null,\"area\",!1,!0,2500],[\"n.u. of action\",\"?\",null,\"action\",!1,!1,105457168181818e-48],[\"n.u. of mass\",\"m?\",null,\"mass\",!1,!1,910938261616162e-45],[\"n.u. of speed\",\"c?\",null,\"speed\",!1,!1,299792458],[\"n.u. of time\",\"?/(me?c??)\",null,\"time\",!1,!1,128808866778687e-35],[\"nautical mile\",\"M\",[\"Nmi\"],\"length\",!1,!0,1852],[\"newton\",\"N\",null,\"force\",!0,!0,1],[\"œrsted\",\"Oe \",null,\"magnetic_field_intensity\",!1,!1,79.5774715459477],[\"ohm\",\"Ω\",null,\"electric_resistance\",!0,!1,1],[\"ounce mass\",\"ozm\",null,\"mass\",!1,!0,.028349523125],[\"pascal\",\"Pa\",null,\"pressure\",!0,!1,1],[\"pascal second\",\"Pa?s\",null,\"dynamic_viscosity\",!0,!1,1],[\"pferdestärke\",\"PS\",null,\"power\",!1,!0,735.49875],[\"phot\",\"ph\",null,\"illuminance\",!1,!1,1e-4],[\"pica (1/6 inch)\",\"pica\",null,\"length\",!1,!0,.00035277777777778],[\"pica (1/72 inch)\",\"Pica\",[\"Picapt\"],\"length\",!1,!0,.00423333333333333],[\"poise\",\"P\",null,\"dynamic_viscosity\",!1,!1,.1],[\"pond\",\"pond\",null,\"force\",!1,!0,.00980665],[\"pound force\",\"lbf\",null,\"force\",!1,!0,4.4482216152605],[\"pound mass\",\"lbm\",null,\"mass\",!1,!0,.45359237],[\"quart\",\"qt\",null,\"volume\",!1,!0,.000946352946],[\"radian\",\"rad\",null,\"angle\",!0,!1,1],[\"second\",\"?\",null,\"angle\",!1,!1,484813681109536e-20],[\"second\",\"s\",[\"sec\"],\"time\",!0,!0,1],[\"short hundredweight\",\"cwt\",[\"shweight\"],\"mass\",!1,!0,45.359237],[\"siemens\",\"S\",null,\"electrical_conductance\",!0,!1,1],[\"sievert\",\"Sv\",null,\"equivalent_dose\",!0,!1,1],[\"slug\",\"sg\",null,\"mass\",!1,!0,14.59390294],[\"square ångström\",\"ang2\",[\"ang^2\"],\"area\",!1,!0,1e-20],[\"square foot\",\"ft2\",[\"ft^2\"],\"area\",!1,!0,.09290304],[\"square inch\",\"in2\",[\"in^2\"],\"area\",!1,!0,64516e-8],[\"square light-year\",\"ly2\",[\"ly^2\"],\"area\",!1,!0,895054210748189e17],[\"square meter\",\"m?\",null,\"area\",!0,!0,1],[\"square mile\",\"mi2\",[\"mi^2\"],\"area\",!1,!0,2589988.110336],[\"square nautical mile\",\"Nmi2\",[\"Nmi^2\"],\"area\",!1,!0,3429904],[\"square Pica\",\"Pica2\",[\"Picapt2\",\"Pica^2\",\"Picapt^2\"],\"area\",!1,!0,1792111111111e-17],[\"square yard\",\"yd2\",[\"yd^2\"],\"area\",!1,!0,.83612736],[\"statute mile\",\"mi\",null,\"length\",!1,!0,1609.344],[\"steradian\",\"sr\",null,\"solid_angle\",!0,!1,1],[\"stilb\",\"sb\",null,\"luminance\",!1,!1,1e-4],[\"stokes\",\"St\",null,\"kinematic_viscosity\",!1,!1,1e-4],[\"stone\",\"stone\",null,\"mass\",!1,!0,6.35029318],[\"tablespoon\",\"tbs\",null,\"volume\",!1,!0,147868e-10],[\"teaspoon\",\"tsp\",null,\"volume\",!1,!0,492892e-11],[\"tesla\",\"T\",null,\"magnetic_flux_density\",!0,!0,1],[\"thermodynamic calorie\",\"c\",null,\"energy\",!1,!0,4.184],[\"ton\",\"ton\",null,\"mass\",!1,!0,907.18474],[\"tonne\",\"t\",null,\"mass\",!1,!1,1e3],[\"U.K. pint\",\"uk_pt\",null,\"volume\",!1,!0,.00056826125],[\"U.S. bushel\",\"bushel\",null,\"volume\",!1,!0,.03523907],[\"U.S. oil barrel\",\"barrel\",null,\"volume\",!1,!0,.158987295],[\"U.S. pint\",\"pt\",[\"us_pt\"],\"volume\",!1,!0,.000473176473],[\"U.S. survey mile\",\"survey_mi\",null,\"length\",!1,!0,1609.347219],[\"U.S. survey/statute acre\",\"us_acre\",null,\"area\",!1,!0,4046.87261],[\"volt\",\"V\",null,\"voltage\",!0,!1,1],[\"watt\",\"W\",null,\"power\",!0,!0,1],[\"watt-hour\",\"Wh\",[\"wh\"],\"energy\",!1,!0,3600],[\"weber\",\"Wb\",null,\"magnetic_flux\",!0,!1,1],[\"yard\",\"yd\",null,\"length\",!1,!0,.9144],[\"year\",\"yr\",null,\"time\",!1,!0,31557600]],o={Yi:[\"yobi\",80,12089258196146292e8,\"Yi\",\"yotta\"],Zi:[\"zebi\",70,11805916207174113e5,\"Zi\",\"zetta\"],Ei:[\"exbi\",60,0x1000000000000000,\"Ei\",\"exa\"],Pi:[\"pebi\",50,0x4000000000000,\"Pi\",\"peta\"],Ti:[\"tebi\",40,1099511627776,\"Ti\",\"tera\"],Gi:[\"gibi\",30,1073741824,\"Gi\",\"giga\"],Mi:[\"mebi\",20,1048576,\"Mi\",\"mega\"],ki:[\"kibi\",10,1024,\"ki\",\"kilo\"]},i={Y:[\"yotta\",1e24,\"Y\"],Z:[\"zetta\",1e21,\"Z\"],E:[\"exa\",1e18,\"E\"],P:[\"peta\",1e15,\"P\"],T:[\"tera\",1e12,\"T\"],G:[\"giga\",1e9,\"G\"],M:[\"mega\",1e6,\"M\"],k:[\"kilo\",1e3,\"k\"],h:[\"hecto\",100,\"h\"],e:[\"dekao\",10,\"e\"],d:[\"deci\",.1,\"d\"],c:[\"centi\",.01,\"c\"],m:[\"milli\",.001,\"m\"],u:[\"micro\",1e-6,\"u\"],n:[\"nano\",1e-9,\"n\"],p:[\"pico\",1e-12,\"p\"],f:[\"femto\",1e-15,\"f\"],a:[\"atto\",1e-18,\"a\"],z:[\"zepto\",1e-21,\"z\"],y:[\"yocto\",1e-24,\"y\"]},s=null,c=null,u=n,d=a,h=1,f=1;for(e=0;e<r.length;e++)l=null===r[e][2]?[]:r[e][2],(r[e][1]===u||l.indexOf(u)>=0)&&(s=r[e]),(r[e][1]===d||l.indexOf(d)>=0)&&(c=r[e]);if(null===s){var m=o[n.substring(0,2)],p=i[n.substring(0,1)];\"da\"===n.substring(0,2)&&(p=[\"dekao\",10,\"da\"]),m?(h=m[2],u=n.substring(2)):p&&(h=p[1],u=n.substring(p[2].length));for(var g=0;g<r.length;g++)l=null===r[g][2]?[]:r[g][2],(r[g][1]===u||l.indexOf(u)>=0)&&(s=r[g])}if(null===c){var y=o[a.substring(0,2)],v=i[a.substring(0,1)];\"da\"===a.substring(0,2)&&(v=[\"dekao\",10,\"da\"]),y?(f=y[2],d=a.substring(2)):v&&(f=v[1],d=a.substring(v[2].length));for(var b=0;b<r.length;b++)l=null===r[b][2]?[]:r[b][2],(r[b][1]===d||l.indexOf(d)>=0)&&(c=r[b])}return null===s||null===c||s[3]!==c[3]?wi.error.na:t*s[6]*h/(c[6]*f)}catch(e){var k=e;return k=wi.errorInfo(k),[wi.error.v,k]}},SUMX2MY2:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}var c=0;for(e=0;e<r.length;e++)c+=Math.pow(r[e],2)-Math.pow(o[e],2);return c}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},SUMX2PY2:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}var c=0;for(e=0;e<r.length;e++)c+=Math.pow(r[e],2)+Math.pow(o[e],2);return c}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},SUMXMY2:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!1))}else\"object\"==ad(t)&&null!=t.startCell?n=n.concat(Eo.getCellDataArr(t,\"text\",!1)):n.push(t);var a=arguments[1],l=[];if(\"array\"==ad(a)){if(\"array\"==ad(a[0])&&!Eo.isDyadicArr(a))return wi.error.v;l=l.concat(Eo.getDataArr(a,!1))}else\"object\"==ad(a)&&null!=a.startCell?l=l.concat(Eo.getCellDataArr(a,\"text\",!1)):l.push(a);if(n.length!=l.length)return wi.error.na;var r=[],o=[];for(e=0;e<n.length;e++){var i=n[e],s=l[e];C(i)&&C(s)&&(r.push(parseFloat(i)),o.push(parseFloat(s)))}var c=0;for(e=0;e<r.length;e++)c+=Math.pow(r[e]-o[e],2);return c}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},TRANSPOSE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else\"object\"==ad(t)&&null!=t.startCell&&(n=Eo.getCellDataDyadicArr(t,\"number\"));return n=n[0].map((function(e,t){return n.map((function(e){return e[t]}))}))}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},TREND:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let k=function(e,t){for(var n=0,a=0,l=0,r=0,o=0;o<e.length;o++)for(var i=0;i<e[o].length;i++)n+=e[o][i],a+=t[o][i],l+=e[o][i]*t[o][i],r+=e[o][i]*e[o][i];var s=e.length*e[0].length,c=n/s,u=a/s,d=(l/s-c*u)/(r/s-c*c);return[d,u-d*c]};var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"text\");else{if(!C(t))return wi.error.v;(f=[]).push(parseFloat(t)),n.push(f)}var a=n.length,l=n[0].length;for(e=0;e<a;e++)for(var r=0;r<l;r++){if(!C(n[e][r]))return wi.error.v;n[e][r]=parseFloat(n[e][r])}var o=[];for(e=1;e<=a;e++)for(r=1;r<=l;r++){var i=(e-1)*l+r;o.push(i)}if(arguments.length>=2){var s=arguments[1];if(o=[],\"array\"==ad(s)){if(\"array\"==ad(s[0])&&!Eo.isDyadicArr(s))return wi.error.v;o=Eo.getDataDyadicArr(s)}else if(\"object\"==ad(s)&&null!=s.startCell)o=Eo.getCellDataDyadicArr(s,\"text\");else{if(!C(s))return wi.error.v;(f=[]).push(parseFloat(s)),o.push(f)}for(e=0;e<o.length;e++)for(r=0;r<o[0].length;r++){if(!C(o[e][r]))return wi.error.v;o[e][r]=parseFloat(o[e][r])}}var c=o.length,u=o[0].length,d=o;if(arguments.length>=3){var h=arguments[2];if(d=[],\"array\"==ad(h)){if(\"array\"==ad(h[0])&&!Eo.isDyadicArr(h))return wi.error.v;d=Eo.getDataDyadicArr(h)}else if(\"object\"==ad(h)&&null!=h.startCell)d=Eo.getCellDataDyadicArr(h,\"text\");else{if(!C(h))return wi.error.v;var f;(f=[]).push(parseFloat(h)),d.push(f)}for(e=0;e<d.length;e++)for(r=0;r<d[0].length;r++){if(!C(d[e][r]))return wi.error.v;d[e][r]=parseFloat(d[e][r])}}var m=!0;if(4==arguments.length&&T(m=Eo.getCellBoolen(arguments[3])))return m;if(a!=c||l!=u)return wi.error.r;var p=k(o,n),g=p[0];if(m)var y=p[1];else y=0;var v=[];for(e=0;e<d.length;e++)for(r=0;r<d[e].length;r++){var b=g*d[e][r]+y;v.push(Math.round(1e9*b)/1e9)}return v}catch(e){var k=e;return k=wi.errorInfo(k),[wi.error.v,k]}},FREQUENCY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=n.concat(Eo.getDataArr(t,!0))}else if(\"object\"==ad(t)&&null!=t.startCell)n=n.concat(Eo.getCellDataArr(t,\"number\",!0));else{if(!C(t))return wi.error.v;n.push(t)}var a=[];for(e=0;e<n.length;e++)C(n[e])&&a.push(parseFloat(n[e]));var l=arguments[1],r=[];if(\"array\"==ad(l)){if(\"array\"==ad(l[0])&&!Eo.isDyadicArr(l))return wi.error.v;r=r.concat(Eo.getDataArr(l,!0))}else if(\"object\"==ad(l)&&null!=l.startCell)r=r.concat(Eo.getCellDataArr(l,\"number\",!0));else{if(!C(l))return wi.error.v;r.push(l)}var o=[];for(e=0;e<r.length;e++)C(r[e])&&o.push(parseFloat(r[e]));if(0==a.length&&0==o.length)return[[0],[0]];if(0==a.length){var i=[[0]];for(e=0;e<o.length;e++)i.push([0]);return i}if(0==o.length)return[[0],[a.length]];o.sort((function(e,t){return e-t}));for(i=[],e=0;e<o.length;e++)if(0==e){for(var s=0,c=0;c<a.length;c++)a[c]<=o[0]&&s++;i.push([s])}else if(e==o.length-1){var u=0,d=0;for(c=0;c<a.length;c++)a[c]<=o[e]&&a[c]>o[e-1]&&u++,a[c]>o[e]&&d++;i.push([u]),i.push([d])}else{for(s=0,c=0;c<a.length;c++)a[c]<=o[e]&&a[c]>o[e-1]&&s++;i.push([s])}return i}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},GROWTH:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let w=function(e,t){for(var n=0,a=0,l=0,r=0,o=0;o<e.length;o++)for(var i=0;i<e[o].length;i++)n+=e[o][i],a+=Math.log(t[o][i]),l+=e[o][i]*Math.log(t[o][i]),r+=e[o][i]*e[o][i];var s=e.length*e[0].length,c=n/s,u=a/s,d=(l/s-c*u)/(r/s-c*c),h=u-d*c;return[Math.exp(d),Math.exp(h)]};var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"text\");else{if(!C(t))return wi.error.v;(f=[]).push(parseFloat(t)),n.push(f)}var a=n.length,l=n[0].length;for(e=0;e<a;e++)for(var r=0;r<l;r++){if(!C(n[e][r]))return wi.error.v;n[e][r]=parseFloat(n[e][r])}var o=[];for(e=1;e<=a;e++)for(r=1;r<=l;r++){var i=(e-1)*l+r;o.push(i)}if(arguments.length>=2){var s=arguments[1];if(o=[],\"array\"==ad(s)){if(\"array\"==ad(s[0])&&!Eo.isDyadicArr(s))return wi.error.v;o=Eo.getDataDyadicArr(s)}else if(\"object\"==ad(s)&&null!=s.startCell)o=Eo.getCellDataDyadicArr(s,\"text\");else{if(!C(s))return wi.error.v;(f=[]).push(parseFloat(s)),o.push(f)}for(e=0;e<o.length;e++)for(r=0;r<o[0].length;r++){if(!C(o[e][r]))return wi.error.v;o[e][r]=parseFloat(o[e][r])}}var c=o.length,u=o[0].length,d=o;if(arguments.length>=3){var h=arguments[2];if(d=[],\"array\"==ad(h)){if(\"array\"==ad(h[0])&&!Eo.isDyadicArr(h))return wi.error.v;d=Eo.getDataDyadicArr(h)}else if(\"object\"==ad(h)&&null!=h.startCell)d=Eo.getCellDataDyadicArr(h,\"text\");else{if(!C(h))return wi.error.v;var f;(f=[]).push(parseFloat(h)),d.push(f)}for(e=0;e<d.length;e++)for(r=0;r<d[0].length;r++){if(!C(d[e][r]))return wi.error.v;d[e][r]=parseFloat(d[e][r])}}var m=!0;if(4==arguments.length&&T(m=Eo.getCellBoolen(arguments[3])))return m;if(a!=c||l!=u)return wi.error.r;var p=w(o,n),g=p[0];if(m)var y=p[1];else y=1;var v=[];for(e=0;e<d.length;e++)for(r=0;r<d[e].length;r++){var b=d[e][r],k=y*Math.pow(g,b);v.push(Math.round(1e9*k)/1e9)}return v}catch(e){var w=e;return w=wi.errorInfo(w),[wi.error.v,w]}},LINEST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return wi.error.v}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},LOGEST:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return wi.error.v}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},MDETERM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{let r=function(e,t){var n,a=new Array;if(1==t)return n=e[0][0];if(2==t)return n=e[0][0]*e[1][1]-e[0][1]*e[1][0];if(3==t)return n=e[0][0]*e[1][1]*e[2][2]+e[1][0]*e[2][1]*e[0][2]+e[2][0]*e[0][1]*e[1][2]-e[2][0]*e[1][1]*e[0][2]-e[0][0]*e[2][1]*e[1][2]-e[1][0]*e[0][1]*e[2][2];n=0;for(var l=new Array,r=new Array,o=0;o<t;o++)a[o]=e[o][0]*Math.pow(-1,o+1+1);for(o=0;o<t;o++){r[o]=new Array;for(var i=0;i<t-1;i++)r[o][i]=e[o][i+1]}for(o=0;o<t;o++){for(i=0;i<t;i++){l[i]=new Array;for(var s=0;s<t-1;s++)o>i?l[i][s]=r[i][s]:o<i&&(l[i-1][s]=r[i][s])}n+=a[o]*arguments.callee(l,t-1)}return n};var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"text\");else{var a=[];a.push(t),n.push(a)}for(e=0;e<n.length;e++)for(var l=0;l<n[e].length;l++){if(!C(n[e][l]))return wi.error.v;n[e][l]=parseFloat(n[e][l])}return n.length!=n[0].length?wi.error.v:r(n,n.length)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},MINVERSE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"text\");else{var a=[];a.push(t),n.push(a)}for(e=0;e<n.length;e++)for(var l=0;l<n[e].length;l++){if(!C(n[e][l]))return wi.error.v;n[e][l]=parseFloat(n[e][l])}return n.length!=n[0].length?wi.error.v:Po(n)}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},MMULT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!(f=wi.errorParamCheck(this.p,arguments[e],e))[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"text\");else{(u=[]).push(t),n.push(u)}for(e=0;e<n.length;e++)for(var a=0;a<n[e].length;a++){if(!C(n[e][a]))return wi.error.v;n[e][a]=parseFloat(n[e][a])}var l=arguments[1],r=[];if(\"array\"==ad(l)){if(\"array\"==ad(l[0])&&!Eo.isDyadicArr(l))return wi.error.v;r=Eo.getDataDyadicArr(l)}else if(\"object\"==ad(l)&&null!=l.startCell)r=Eo.getCellDataDyadicArr(l,\"text\");else{(u=[]).push(l),r.push(u)}for(e=0;e<r.length;e++)for(a=0;a<r[e].length;a++){if(!C(r[e][a]))return wi.error.v;r[e][a]=parseFloat(r[e][a])}if(n[0].length!=r.length)return wi.error.v;for(var o=n.length,i=r[0].length,s=[],c=0;c<o;c++){for(var u=[],d=0;d<i;d++){for(var h=0,f=0;f<n[0].length;f++)h+=n[c][f]*r[f][d];u.push(h)}s.push(u)}return s}catch(e){var m=e;return m=wi.errorInfo(m),[wi.error.v,m]}},SUMPRODUCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"text\");else{(s=[]).push(t),n.push(s)}for(e=0;e<n.length;e++)for(var a=0;a<n[e].length;a++)C(n[e][a])?n[e][a]=parseFloat(n[e][a]):n[e][a]=0;var l=n.length,r=n[0].length;if(arguments.length>=2)for(e=1;e<arguments.length;e++){var o=arguments[e],i=[];if(\"array\"==ad(o)){if(\"array\"==ad(o[0])&&!Eo.isDyadicArr(o))return wi.error.v;i=Eo.getDataDyadicArr(o)}else if(\"object\"==ad(o)&&null!=o.startCell)i=Eo.getCellDataDyadicArr(o,\"text\");else{var s;(s=[]).push(o),i.push(s)}if(i.length!=l||i[0].length!=r)return wi.error.v;for(var c=0;c<l;c++)for(var u=0;u<r;u++)C(i[c][u])?n[c][u]=n[c][u]*parseFloat(i[c][u]):n[c][u]=0}var d=0;for(c=0;c<l;c++)for(u=0;u<r;u++)d+=n[c][u];return d}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},ISFORMULA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];return\"object\"==ad(n)&&null!=n.startCell?null!=n.data&&(null!=(t=\"array\"==ad(n.data)?n.data[0][0]:n.data)&&null!=t.f):wi.error.v}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},CELL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n,a=arguments[0];if(\"array\"==ad(a))if(\"array\"==ad(a[0])){if(!Eo.isDyadicArr(a))return wi.error.v;n=a[0][0]}else n=a[0];else if(\"object\"==ad(a)&&null!=a.startCell){if(null==a.data)return wi.error.v;if(\"array\"==ad(a.data))return wi.error.v;if(_(n=a.data.v))return wi.error.v}else n=a;var l,r=arguments[1];if(\"object\"!=ad(r)||null==r.startCell)return wi.error.v;if(l=r.startCell,-1==[\"address\",\"col\",\"color\",\"contents\",\"filename\",\"format\",\"parentheses\",\"prefix\",\"protect\",\"row\",\"type\",\"width\"].indexOf(n))return wi.error.v;var o=zt()[Mt(t.currentSheetIndex)],i=wi.getcellrange(l),s=i.row[0],c=i.column[0];let e,d=zt()[Mt(t.calculateSheetIndex)].data;switch(null!=wi.execFunctionGlobalData&&null!=wi.execFunctionGlobalData[s+\"_\"+c+\"_\"+t.calculateSheetIndex]?e=wi.execFunctionGlobalData[s+\"_\"+c+\"_\"+t.calculateSheetIndex].v:null!=d[s][c]&&null!=d[s][c].v&&\"\"!=d[s][c].v?(e=d[s][c],e instanceof Object&&(e=e.v)):e=0,n){case\"address\":return l;case\"col\":return c+1;case\"color\":case\"protect\":return 0;case\"contents\":return e;case\"filename\":return o.name;case\"format\":return null==d[s][c]||null==d[s][c].ct?\"G\":d[s][c].ct.fa;case\"parentheses\":return null==d[s][c]||null==d[s][c].v||\"\"==d[s][c].v?0:d[s][c].v>0?1:0;case\"prefix\":return 0==e?\"\":0==d[s][c].ht?\"^\":1==d[s][c].ht?\"'\":2==d[s][c].ht?'\"':\"\";case\"row\":return s+1;case\"type\":return 0==e?\"b\":\"l\";case\"width\":var u=o.config;return null!=u.columnlen&&c in u.columnlen?u.columnlen[c]:t.defaultcollen}}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},NA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return wi.error.na}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},ERROR_TYPE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(null==n.data)return wi.error.na;if(\"array\"==ad(n.data)){if(null==(t=n.data[0][0])||_(t.v))return wi.error.na;t=t.v}else{if(_(n.data.v))return wi.error.na;t=n.data.v}}else t=n;var a={\"#NULL!\":1,\"#DIV/0!\":2,\"#VALUE!\":3,\"#REF!\":4,\"#NAME?\":5,\"#NUM!\":6,\"#N/A\":7,\"#GETTING_DATA\":8};return t in a?a[t]:wi.error.na}catch(e){var l=e;return l=wi.errorInfo(l),[wi.error.v,l]}},ISBLANK:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0];return\"object\"==ad(t)&&null!=t.startCell&&null==t.data}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},ISERR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data))return!0;if(null==n.data||_(n.data.v))return!1;t=n.data.v}else t=n;return[\"#VALUE!\",\"#REF!\",\"#DIV/0!\",\"#NUM!\",\"#NAME?\",\"#NULL!\"].indexOf(t)>-1}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ISERROR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data))return!0;if(null==n.data||_(n.data.v))return!1;t=n.data.v}else t=n;return[\"#N/A\",\"#VALUE!\",\"#REF!\",\"#DIV/0!\",\"#NUM!\",\"#NAME?\",\"#NULL!\"].indexOf(t)>-1}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ISLOGICAL:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data)||null==n.data||_(n.data.v))return!1;t=n.data.v}else t=n;return\"true\"==t.toString().toLowerCase()||\"false\"==t.toString().toLowerCase()}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ISNA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data)||null==n.data||_(n.data.v))return!1;t=n.data.v}else t=n;return\"#N/A\"==t.toString()}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ISNONTEXT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data)||null==n.data||_(n.data.v))return!0;t=n.data.v}else t=n;return[\"#N/A\",\"#VALUE!\",\"#REF!\",\"#DIV/0!\",\"#NUM!\",\"#NAME?\",\"#NULL!\"].indexOf(t)>-1||\"true\"==t.toString().toLowerCase()||\"false\"==t.toString().toLowerCase()||!!C(t)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ISNUMBER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data)||null==n.data||_(n.data.v))return!1;t=n.data.v}else t=n;return!!C(t)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},ISREF:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{return\"object\"==ad(arguments[0])&&null!=arguments[0].startCell}catch(e){var t=e;return t=wi.errorInfo(t),[wi.error.v,t]}},ISTEXT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data)||null==n.data||_(n.data.v))return!1;t=n.data.v}else t=n;return!([\"#N/A\",\"#VALUE!\",\"#REF!\",\"#DIV/0!\",\"#NUM!\",\"#NAME?\",\"#NULL!\"].indexOf(t)>-1||\"true\"==t.toString().toLowerCase()||\"false\"==t.toString().toLowerCase())&&!C(t)}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},TYPE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))return 64;if(\"object\"==ad(n)&&null!=n.startCell){if(\"array\"==ad(n.data))return 16;if(null==n.data||_(n.data.v))return 1;t=n.data.v}else t=n;return[\"#N/A\",\"#VALUE!\",\"#REF!\",\"#DIV/0!\",\"#NUM!\",\"#NAME?\",\"#NULL!\"].indexOf(t)>-1?16:\"true\"==t.toString().toLowerCase()||\"false\"==t.toString().toLowerCase()?4:C(t)?1:2}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},N:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t,n=arguments[0];if(\"array\"==ad(n))if(\"array\"==ad(n[0])){if(!Eo.isDyadicArr(n))return wi.error.v;t=n[0][0]}else t=n[0];else if(\"object\"==ad(n)&&null!=n.startCell)if(\"array\"==ad(n.data)){if(null==(t=n.data[0][0])||_(t.v))return 0;t=t.v}else{if(null==n.data||_(n.data.v))return 0;t=n.data.v}else t=n;return[\"#N/A\",\"#VALUE!\",\"#REF!\",\"#DIV/0!\",\"#NUM!\",\"#NAME?\",\"#NULL!\"].indexOf(t)>-1?t:\"true\"==t.toString().toLowerCase()||\"false\"==t.toString().toLowerCase()?\"true\"==t.toString().toLowerCase()?1:0:C(t)?parseFloat(t):0}catch(e){var a=e;return a=wi.errorInfo(a),[wi.error.v,a]}},TO_DATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?Ca(\"yyyy-mm-dd\",t=parseFloat(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TO_PURE_NUMBER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:(0,gh.default)(t).isValid()?_a(t)[2]:null==(0,yh.default)(t).value()?t:(0,yh.default)(t).value()}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TO_TEXT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0],\"text\");return T(t)?t:Ca(\"@\",t)}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TO_DOLLARS:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?Ca(\"$ 0.00\",t=parseFloat(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},TO_PERCENT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);return T(t)?t:C(t)?Ca(\"0%\",t=parseFloat(t)):wi.error.v}catch(e){var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}},DGET:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);return 0===o.length?wi.error.v:o.length>1?wi.error.nm:i[o[0]]}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},DMAX:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=i[o[0]];for(e=1;e<o.length;e++)c<i[o[e]]&&(c=i[o[e]]);return c}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DMIN:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=findField(n,a);i=rest(n[s])}else i=rest(n[a]);var c=i[o[0]];for(e=1;e<o.length;e++)c>i[o[e]]&&(c=i[o[e]]);return c}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DAVERAGE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=0;for(e=0;e<o.length;e++)c+=i[o[e]];return 0===o.length?wi.error.d:c/o.length}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DCOUNT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];return window.luckysheet_function.COUNT.f.apply(window.luckysheet_function.COUNT,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DCOUNTA:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];return window.luckysheet_function.COUNTA.f.apply(window.luckysheet_function.COUNTA,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DPRODUCT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];c=Eo.compact(c);var u=1;for(e=0;e<c.length;e++)u*=c[e];return u}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},DSTDEV:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];return c=Eo.compact(c),window.luckysheet_function.STDEVA.f.apply(window.luckysheet_function.STDEVA,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DSTDEVP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];return c=Eo.compact(c),window.luckysheet_function.STDEVP.f.apply(window.luckysheet_function.STDEVP,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DSUM:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];c=Eo.compact(c);var u=0;for(e=0;e<c.length;e++)u+=c[e];return u}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},DVAR:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];return c=Eo.compact(c),window.luckysheet_function.VAR_S.f.apply(window.luckysheet_function.VAR_S,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},DVARP:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"object\"!=ad(t)||null==t.startCell)return wi.error.v;if(null==t.data)return wi.error.v;n=Eo.getCellDataDyadicArr(t,\"text\");var a=Eo.getFirstValue(arguments[1],\"text\");if(T(a))return a;if(_(a))return wi.error.v;var l=arguments[2],r=[];if(\"object\"!=ad(l)||null==l.startCell)return wi.error.v;if(null==l.data)return wi.error.v;if(r=Eo.getCellDataDyadicArr(l,\"text\"),!C(a)&&\"string\"!==ad(a))return wi.error.v;var o=Eo.findResultIndex(n,r),i=[];if(\"string\"===ad(a)){var s=Eo.findField(n,a);i=Eo.rest(n[s])}else i=Eo.rest(n[a]);var c=[];for(e=0;e<o.length;e++)c[e]=i[o[e]];return c=Eo.compact(c),window.luckysheet_function.VAR_P.f.apply(window.luckysheet_function.VAR_P,c)}catch(e){var u=e;return u=wi.errorInfo(u),[wi.error.v,u]}},LINESPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=arguments[1],i=arguments[2],s=arguments[3],c=arguments[4],u=arguments[5],d=arguments[6],h=arguments[7];let e=zt()[Mt(t.calculateSheetIndex)].data;var f=wi.readCellDataToOneArray(r),m=Yu.getCellRealSize(e,n,a),p=m[0],g=m[1],y={};null==i&&(i=1),y.lineWidth=i,y.offsetY=i+1,y.height=g-(i+1),y.width=p;var v=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),y[e]=t)};if(null==o&&(o=\"#2ec7c9\"),v(\"lineColor\",o),y.fillColor=0,s)if(\"string\"==typeof s){s=s.toLowerCase();var b=null;\"min\"==s?b=window.luckysheet_function.MIN.f({data:f}):\"max\"==s?b=window.luckysheet_function.MAX.f({data:f}):\"avg\"==s||\"mean\"==s?b=window.luckysheet_function.AVERAGE.f({data:f}):\"median\"==s&&(b=window.luckysheet_function.MEDIAN.f({data:f})),b&&(y.normalRangeMin=b,y.normalRangeMax=b)}else y.normalRangeMin=s,y.normalRangeMax=s;return null==c&&(c=\"#000\"),v(\"normalRangeColor\",c),v(\"maxSpotColor\",u),v(\"minSpotColor\",d),null==h&&(h=\"1.5\"),y.spotRadius=h,zr.init(f,y)}catch(e){var k=e;return k=wi.errorInfo(k),[wi.error.v,k]}},AREASPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=arguments[1],i=arguments[2],s=arguments[3],c=arguments[4],u=arguments[5],d=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var h=Yu.getCellRealSize(e,n,a),f=h[0],m=h[1],p={};null==s&&(s=1),p.lineWidth=s,p.offsetY=s+1,p.height=m-(s+1),p.width=f;var g=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),p[e]=t)};if(null==o&&(o=\"#2ec7c9\"),g(\"lineColor\",o),g(\"fillColor\",i),null==s&&(s=\"1\"),p.lineWidth=s,c)if(\"string\"==typeof c){c=c.toLowerCase();var y=null;\"min\"==c?y=window.luckysheet_function.MIN.f({data:d}):\"max\"==c?y=window.luckysheet_function.MAX.f({data:d}):\"avg\"==c||\"mean\"==c?y=window.luckysheet_function.AVERAGE.f({data:d}):\"median\"==c&&(y=window.luckysheet_function.MEDIAN.f({data:d})),y&&(p.normalRangeMin=y,p.normalRangeMax=y)}else p.normalRangeMin=c,p.normalRangeMax=c;return null==u&&(u=\"#000\"),g(\"normalRangeColor\",u),zr.init(d,p)}catch(e){var v=e;return v=wi.errorInfo(v),[wi.error.v,v]}},COLUMNSPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var i=Yu.getCellRealSize(e,n,a),s=i[0],c=i[1],u={};u.height=c,u.width=s;var d=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),u[e]=t)},h=arguments[1],f=arguments[2],m=arguments[3],p=arguments[4];u.type=\"column\",null==h&&(h=\"1\"),u.barSpacing=h,null==f&&(f=\"#fc5c5c\"),d(\"barColor\",f),null==m&&(m=\"#97b552\"),d(\"negBarColor\",m),u.chartRangeMax=null==p||!1===p||\"number\"!=typeof p?void 0:p;var g=wi.sparklinesColorMap(arguments);return g&&(u.colorMap=g),zr.init(o,u)}catch(e){var y=e;return y=wi.errorInfo(y),[wi.error.v,y]}},STACKCOLUMNSPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList,arguments[0]),r=[],o=[];if(null!=l&&null!=l.data&&(o=l.data),\"array\"==ad(o))o=wi.getPureValueByData(o);else{if(\"object\"==ad(o))return[o=o.v];/\\{.*?\\}/.test(o)&&(o=o.replace(/\\{/g,\"[\").replace(/\\}/g,\"]\")),o=new Function(\"return \"+o)()}var i=arguments[1];o.length;if(null==i||i)for(var s=0;s<o[0].length;s++){for(var c=\"\",u=0;u<o.length;u++)c+=o[u][s]+\":\";c=c.substr(0,c.length-1),r.push(c)}else{for(u=0;u<o.length;u++){var d=\"\";for(s=0;s<o[0].length;s++)d+=o[u][s]+\":\";d=d.substr(0,d.length-1),r.push(d)}o[0].length}let e=zt()[Mt(t.calculateSheetIndex)].data;var h=Yu.getCellRealSize(e,n,a),f=h[0],m=h[1],p={};p.height=m,p.width=f;var g=arguments[2],y=arguments[3];p.type=\"column\",null==g&&(g=\"1\"),p.barSpacing=g,p.chartRangeMax=null==y||!1===y||\"number\"!=typeof y?void 0:y;var v=wi.sparklinesColorMap(arguments,4);return v&&(p.colorMap=v),zr.init(r,p)}catch(e){var b=e;return b=wi.errorInfo(b),[wi.error.v,b]}},BARSPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var i=Yu.getCellRealSize(e,n,a),s=i[0],c=i[1],u={};u.height=c,u.width=s;var d=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),u[e]=t)},h=arguments[1],f=arguments[2],m=arguments[3],p=arguments[4];u.type=\"bar\",null==h&&(h=\"1\"),u.barSpacing=h,null==f&&(f=\"#fc5c5c\"),d(\"barColor\",f),null==m&&(m=\"#97b552\"),d(\"negBarColor\",m),u.chartRangeMax=null==p||!1===p||\"number\"!=typeof p?void 0:p;var g=wi.sparklinesColorMap(arguments);return g&&(u.colorMap=g),zr.init(o,u)}catch(e){var y=e;return y=wi.errorInfo(y),[wi.error.v,y]}},STACKBARSPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList,arguments[0]),r=[],o=[];if(null!=l&&null!=l.data&&(o=l.data),\"array\"==ad(o))o=wi.getPureValueByData(o);else{if(\"object\"==ad(o))return[o=o.v];/\\{.*?\\}/.test(o)&&(o=o.replace(/\\{/g,\"[\").replace(/\\}/g,\"]\")),o=new Function(\"return \"+o)()}var i=arguments[1];o.length;if(null==i||i)for(var s=0;s<o[0].length;s++){for(var c=\"\",u=0;u<o.length;u++)c+=o[u][s]+\":\";c=c.substr(0,c.length-1),r.push(c)}else{for(u=0;u<o.length;u++){var d=\"\";for(s=0;s<o[0].length;s++)d+=o[u][s]+\":\";d=d.substr(0,d.length-1),r.push(d)}o[0].length}let e=zt()[Mt(t.calculateSheetIndex)].data;var h=Yu.getCellRealSize(e,n,a),f=h[0],m=h[1],p={};p.height=m,p.width=f;var g=arguments[2],y=arguments[3];p.type=\"bar\",null==g&&(g=\"1\"),p.barSpacing=g,p.chartRangeMax=null==y||!1===y||\"number\"!=typeof y?void 0:y;var v=wi.sparklinesColorMap(arguments,4);return v&&(p.colorMap=v),zr.init(r,p)}catch(e){var b=e;return b=wi.errorInfo(b),[wi.error.v,b]}},DISCRETESPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var i=Yu.getCellRealSize(e,n,a),s=i[0],c=i[1],u={};u.height=c,u.width=s;var d=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),u[e]=t)},h=arguments[1],f=arguments[2],m=arguments[3];return u.type=\"discrete\",null==h&&(h=0),u.thresholdValue=h,null==f&&(f=\"#2ec7c9\"),d(\"lineColor\",f),null==m&&(m=\"#fc5c5c\"),d(\"thresholdColor\",m),zr.init(o,u)}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},TRISTATESPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var i=Yu.getCellRealSize(e,n,a),s=i[0],c=i[1],u={};u.height=c,u.width=s;var d=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),u[e]=t)},h=arguments[1],f=arguments[2],m=arguments[3],p=arguments[4];u.type=\"tristate\",null==h&&(h=\"1\"),u.barSpacing=h,null==f&&(f=\"#fc5c5c\"),d(\"barColor\",f),null==m&&(m=\"#97b552\"),d(\"negBarColor\",m),null==p&&(p=\"#999\"),d(\"zeroBarColor\",p);var g=wi.sparklinesColorMap(arguments);return g&&(u.colorMap=g),zr.init(o,u)}catch(e){var y=e;return y=wi.errorInfo(y),[wi.error.v,y]}},PIESPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var i=Yu.getCellRealSize(e,n,a),s=i[0],c=i[1],u={};u.height=c,u.width=s;var d=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),u[e]=t)},h=arguments[1],f=arguments[2],m=arguments[3];u.type=\"pie\",null==h&&(h=0),u.offset=h,null==f&&(f=0),d(\"borderWidth\",f),null==m&&(m=\"#97b552\"),d(\"borderColor\",m);var p=wi.sparklinesColorMap(arguments,4);return p&&(u.colorMap=p),zr.init(o,u)}catch(e){var g=e;return g=wi.errorInfo(g),[wi.error.v,g]}},BOXSPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=(window.luckysheetCurrentFunction,wi.colorList),r=arguments[0],o=wi.readCellDataToOneArray(r);let e=zt()[Mt(t.calculateSheetIndex)].data;var i=Yu.getCellRealSize(e,n,a),s=i[0],c=i[1],u={};u.height=c,u.width=s;var d=function(e,t){t&&(\"number\"==typeof t&&(t>19&&(t%=20),t=l[t]),u[e]=t)},h=arguments[1],f=arguments[2],m=arguments[3];return u.type=\"box\",null==h&&(h=1.5),u.outlierIQR=h,null==f?f=0:d(\"target\",f),null==m&&(m=1.5),d(\"spotRadius\",m),zr.init(o,u)}catch(e){var p=e;return p=wi.errorInfo(p),[wi.error.v,p]}},BULLETSPLINES:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn;window.luckysheetCurrentFunction,wi.colorList;let d=zt()[Mt(t.calculateSheetIndex)].data;var l=Yu.getCellRealSize(d,n,a),r=l[0],o=l[1],i={};i.height=o,i.width=r;var s=[];Uo(arguments);var c=wi.getValueByFuncData(arguments[0]),u=wi.getValueByFuncData(arguments[1]);s.push(c),s.push(u);for(e=2;e<arguments.length;e++)s.push(wi.getValueByFuncData(arguments[e]));return i.type=\"bullet\",zr.init(s,i)}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},SORT:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[],a=1,l=1;if(\"array\"==ad(t))if(\"array\"==ad(t[0])){if(!Eo.isDyadicArr(t))return wi.error.v;for(e=0;e<t.length;e++){for(var r=[],o=0;o<t[e].length;o++){var i=t[e][o];r.push(i)}n.push(r)}a=n.length,l=n[0].length}else{for(e=0;e<t.length;e++){i=t[e];n.push(i)}a=n.length}else if(\"object\"==ad(t)&&null!=t.startCell)if(null!=t.data)if(\"array\"==ad(t.data)){for(e=0;e<t.data.length;e++){for(r=[],o=0;o<t.data[e].length;o++)if(null!=t.data[e][o]){_(i=t.data[e][o].v)&&(i=0),r.push(i)}else r.push(0);n.push(r)}a=n.length,l=n[0].length}else{_(i=t.data.v)&&(i=0),n.push(i)}else n.push(0);else{i=t;n.push(i)}var s=1;if(arguments.length>=2){if(T(s=Eo.getFirstValue(arguments[1])))return s;if(!C(s))return wi.error.v;s=parseInt(s)}var c=1;if(arguments.length>=3){if(T(c=Eo.getFirstValue(arguments[2])))return c;if(!C(c))return wi.error.v;c=Math.floor(parseFloat(c))}var u=!1;if(4==arguments.length&&T(u=Eo.getCellBoolen(arguments[3])))return u;if(u){if(s<1||s>a)return wi.error.v}else if(s<1||s>l)return wi.error.v;if(1!=c&&-1!=c)return wi.error.v;var d=function(e,t){return\"array\"==ad(e)&&(e=e[s-1]),\"array\"==ad(t)&&(t=t[s-1]),isNaN(e)||isNaN(t)?isNaN(e)?isNaN(t)?e>t?1:e<t?-1:void 0:1:-1:e-t},h=function(e,t){return\"array\"==ad(e)&&(e=e[s-1]),\"array\"==ad(t)&&(t=t[s-1]),isNaN(e)||isNaN(t)?isNaN(e)?isNaN(t)?e>t?-1:e<t?1:void 0:-1:1:t-e};return u?(n=n[0].map((function(e,t){return n.map((function(e){return e[t]}))})),1==c&&n.sort(d),-1==c&&n.sort(h),n=n[0].map((function(e,t){return n.map((function(e){return e[t]}))}))):(1==c&&n.sort(d),-1==c&&n.sort(h)),n}catch(e){var f=e;return f=wi.errorInfo(f),[wi.error.v,f]}},FILTER:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"number\");else{(c=[]).push(parseFloat(t)),n.push(c)}n.length,n[0].length;var a=arguments[1],l=[],r=\"row\";if(\"array\"==ad(a))if(\"array\"==ad(a[0])){if(!Eo.isDyadicArr(a))return wi.error.v;if(a.length>1&&a[0].length>1)return wi.error.v;if(a.length>1){if(a.length!=n.length)return wi.error.v;r=\"row\";for(e=0;e<a.length;e++){if(\"boolean\"!=ad(o=a[e][0]))if(\"string\"!=ad(o)||\"true\"!=o.toLowerCase()&&\"false\"!=o.toLowerCase()){if(!C(o))return wi.error.v;o=0!=(o=parseFloat(o))}else\"true\"==o.toLowerCase()?o=!0:\"false\"==o.toLowerCase()&&(o=!1);l.push(o)}}if(a[0].length>1){if(a[0].length!=n[0].length)return wi.error.v;r=\"col\";for(e=0;e<a[0].length;e++){if(\"boolean\"!=ad(o=a[0][e]))if(\"string\"!=ad(o)||\"true\"!=o.toLowerCase()&&\"false\"!=o.toLowerCase()){if(!C(o))return wi.error.v;o=0!=(o=parseFloat(o))}else\"true\"==o.toLowerCase()?o=!0:\"false\"==o.toLowerCase()&&(o=!1);l.push(o)}}}else{if(a.length!=n[0].length)return wi.error.v;r=\"col\";for(e=0;e<a.length;e++){if(\"boolean\"!=ad(o=a[e]))if(\"string\"!=ad(o)||\"true\"!=o.toLowerCase()&&\"false\"!=o.toLowerCase()){if(!C(o))return wi.error.v;o=0!=(o=parseFloat(o))}else\"true\"==o.toLowerCase()?o=!0:\"false\"==o.toLowerCase()&&(o=!1);l.push(o)}}else{if(\"object\"!=ad(a)||null==a.data||\"array\"!=ad(a.data))return wi.error.v;if(a.data.length>1&&a.data[0].length>1)return wi.error.v;if(a.data.length>1){if(a.data.length!=n.length)return wi.error.v;r=\"row\";for(e=0;e<a.data.length;e++){if(_(o=a.data[e][0].v)&&(o=0),\"boolean\"!=ad(o))if(\"string\"!=ad(o)||\"true\"!=o.toLowerCase()&&\"false\"!=o.toLowerCase()){if(!C(o))return wi.error.v;o=0!=(o=parseFloat(o))}else\"true\"==o.toLowerCase()?o=!0:\"false\"==o.toLowerCase()&&(o=!1);l.push(o)}}if(a.data[0].length>1){if(a.data[0].length!=n[0].length)return wi.error.v;r=\"col\";for(e=0;e<a.data[0].length;e++){var o;if(_(o=a.data[0][e].v)&&(o=0),\"boolean\"!=ad(o))if(\"string\"!=ad(o)||\"true\"!=o.toLowerCase()&&\"false\"!=o.toLowerCase()){if(!C(o))return wi.error.v;o=0!=(o=parseFloat(o))}else\"true\"==o.toLowerCase()?o=!0:\"false\"==o.toLowerCase()&&(o=!1);l.push(o)}}}var i=\"\";if(3==arguments.length&&T(i=Eo.getFirstValue(arguments[2],\"text\")))return i;var s=[];if(\"row\"==r)for(e=0;e<n.length;e++)l[e]&&s.push(n[e]);else for(e=0;e<n.length;e++){for(var c=[],u=0;u<n[0].length;u++)l[u]&&c.push(n[e][u]);c.length>0&&s.push(c)}return 0==s.length?i:s}catch(e){var d=e;return d=wi.errorInfo(d),[wi.error.v,d]}},UNIQUE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=arguments[0],n=[];if(\"array\"==ad(t)){if(\"array\"==ad(t[0])&&!Eo.isDyadicArr(t))return wi.error.v;n=Eo.getDataDyadicArr(t)}else if(\"object\"==ad(t)&&null!=t.startCell)n=Eo.getCellDataDyadicArr(t,\"number\");else{var a=[];a.push(parseFloat(t)),n.push(a)}var l=!1;if(arguments.length>=2&&T(l=Eo.getCellBoolen(arguments[1])))return l;var r=!1;if(3==arguments.length&&T(r=Eo.getCellBoolen(arguments[2])))return r;if(l){n=n[0].map((function(e,t){return n.map((function(e){return e[t]}))}));var o={},i=[],s=[];for(e=0;e<n.length;e++){for(var c=\"\",u=0;u<n[e].length;u++)c+=n[e][u].toString()+\"|||\";i.push(c),c in o||(o[c]=0,s.push(n[e]))}if(r){var d=[];for(e=0;e<i.length;e++)i.indexOf(i[e])==i.lastIndexOf(i[e])&&d.push(n[e]);return d=d[0].map((function(e,t){return d.map((function(e){return e[t]}))}))}return s=s[0].map((function(e,t){return s.map((function(e){return e[t]}))}))}for(o={},i=[],s=[],e=0;e<n.length;e++){for(c=\"\",u=0;u<n[e].length;u++)c+=n[e][u].toString()+\"|||\";i.push(c),c in o||(o[c]=0,s.push(n[e]))}if(r){for(d=[],e=0;e<i.length;e++)i.indexOf(i[e])==i.lastIndexOf(i[e])&&d.push(n[e]);return d}return s}catch(e){var h=e;return h=wi.errorInfo(h),[wi.error.v,h]}},RANDARRAY:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=1;if(arguments.length>=1){if(T(t=Eo.getFirstValue(arguments[0])))return t;if(!C(t))return wi.error.v;t=parseInt(t)}var n=1;if(2==arguments.length){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}if(t<=0||n<=0)return wi.error.v;var a=[];for(e=0;e<t;e++){for(var l=[],r=0;r<n;r++)l.push(Math.random().toFixed(9));a.push(l)}return a}catch(e){var o=e;return o=wi.errorInfo(o),[wi.error.v,o]}},SEQUENCE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=Eo.getFirstValue(arguments[0]);if(T(t))return t;if(!C(t))return wi.error.v;t=parseInt(t);var n=1;if(arguments.length>=2){if(T(n=Eo.getFirstValue(arguments[1])))return n;if(!C(n))return wi.error.v;n=parseInt(n)}var a=1;if(arguments.length>=3){if(T(a=Eo.getFirstValue(arguments[2])))return a;if(!C(a))return wi.error.v;a=parseFloat(a)}var l=1;if(4==arguments.length){if(T(l=Eo.getFirstValue(arguments[3])))return l;if(!C(l))return wi.error.v;l=parseFloat(l)}if(t<=0||n<=0)return wi.error.v;var r=[];for(e=0;e<t;e++){for(var o=[],i=0;i<n;i++){var s=a+l*(i+n*e);o.push(s)}r.push(o)}return r}catch(e){var c=e;return c=wi.errorInfo(c),[wi.error.v,c]}},EVALUATE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;for(var e=0;e<arguments.length;e++){if(!wi.errorParamCheck(this.p,arguments[e],e)[0])return wi.error.v}try{var t=window.luckysheetCurrentRow,n=window.luckysheetCurrentColumn,a=window.luckysheetCurrentIndex,l=Eo.getFirstValue(arguments[0]).toString();return T(l)?l:(0!=l.trim().indexOf(\"=\")&&(l=\"=\"+l),wi.execstringformula(l,t,n,a)[1])}catch(e){var r=e;return r=wi.errorInfo(r),[wi.error.v,r]}},REMOTE:function(){if(arguments.length<this.m[0]||arguments.length>this.m[1])return wi.error.na;try{let n=window.luckysheetCurrentRow,a=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,r=Eo.getFirstValue(arguments[0]);return T(r)?r:(e.remoteFunction(r,(e=>{let r=mn.deepCopyFlowData(t.flowdata);wi.execFunctionGroup(n,a,e),r[n][a]={v:e,f:l},ao(r,[{row:[n,n],column:[a,a]}])})),\"Loading...\")}catch(e){console.log(e);var n=e;return n=wi.errorInfo(n),[wi.error.v,n]}}}})),Ch=y((()=>{bh=[{n:\"SUMIF\",t:0,m:[2,3],p:[{example:\"A1:A10\",require:\"m\",repeat:\"n\",type:\"range\"},{example:'\">20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B1:B10\",require:\"o\",repeat:\"n\",type:\"range\"}]},{n:\"TAN\",t:0,m:[1,1],p:[{example:\"45*PI()/180\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TANH\",t:0,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CEILING\",t:0,m:[2,2],p:[{example:\"23.25\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ATAN\",t:0,m:[1,1],p:[{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ASINH\",t:0,m:[1,1],p:[{example:\"0.9\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ABS\",t:0,m:[1,1],p:[{example:\"-2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ACOS\",t:0,m:[1,1],p:[{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ACOSH\",t:0,m:[1,1],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MULTINOMIAL\",t:0,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"ATANH\",t:0,m:[1,1],p:[{example:\"0.9\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ATAN2\",t:0,m:[2,2],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUNTBLANK\",t:1,m:[1,1],p:[{example:\"A2:C100\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"COSH\",t:0,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"INT\",t:0,m:[1,1],p:[{example:\"99.44\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ISEVEN\",t:0,m:[1,1],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ISODD\",t:0,m:[1,1],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"LCM\",t:0,m:[1,255],p:[{example:\"A2:A5\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"3\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"LN\",t:0,m:[1,1],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"LOG\",t:0,m:[1,2],p:[{example:\"128\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"LOG10\",t:0,m:[1,1],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MOD\",t:0,m:[2,2],p:[{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MROUND\",t:0,m:[2,2],p:[{example:\"21\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"14\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ODD\",t:0,m:[1,1],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUMSQ\",t:0,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"COMBIN\",t:0,m:[2,2],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUM\",t:0,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"SUBTOTAL\",t:0,m:[2,256],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A5\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"B2:B8\",require:\"o\",repeat:\"y\",type:\"range\"}]},{n:\"ASIN\",t:0,m:[1,1],p:[{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUNTIF\",t:1,m:[2,2],p:[{example:\"A1:A10\",require:\"m\",repeat:\"n\",type:\"range\"},{example:'\">20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"RADIANS\",t:0,m:[1,1],p:[{example:\"180\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"RAND\",t:0,m:[0,0],p:[]},{n:\"COUNTUNIQUE\",t:0,m:[1,255],p:[{example:\"A1:C100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DEGREES\",t:0,m:[1,1],p:[{example:\"PI()\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ERFC\",t:9,m:[1,1],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"EVEN\",t:0,m:[1,1],p:[{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"EXP\",t:0,m:[1,1],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FACT\",t:0,m:[1,1],p:[{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FACTDOUBLE\",t:0,m:[1,1],p:[{example:\"6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PI\",t:0,m:[0,0],p:[]},{n:\"FLOOR\",t:0,m:[2,2],p:[{example:\"23.25\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"GCD\",t:0,m:[1,255],p:[{example:\"A2:A5\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"96\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"RANDBETWEEN\",t:0,m:[2,2],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ROUND\",t:0,m:[2,2],p:[{example:\"99.44\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ROUNDDOWN\",t:0,m:[2,2],p:[{example:\"99.44\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ROUNDUP\",t:0,m:[2,2],p:[{example:\"99.44\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SERIESSUM\",t:0,m:[4,4],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"{FACT(0)\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SIGN\",t:0,m:[1,1],p:[{example:\"-42\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SIN\",t:0,m:[1,1],p:[{example:\"PI()\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SINH\",t:0,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SQRT\",t:0,m:[1,1],p:[{example:\"9\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SQRTPI\",t:0,m:[1,1],p:[{example:\"9\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"GAMMALN\",t:1,m:[1,1],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COS\",t:0,m:[1,1],p:[{example:\"PI()\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TRUNC\",t:0,m:[1,2],p:[{example:\"3.141592654\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"QUOTIENT\",t:0,m:[2,2],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"POWER\",t:0,m:[2,2],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUMIFS\",t:0,m:[3,257],p:[{example:\"A1:A10\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\" B1:B10\",require:\"m\",repeat:\"n\",type:\"range\"},{example:' \">20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\" C1:C10\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"GET_TARGET\",t:0,m:[0,0],p:[]},{n:\"GET_AIRTABLE_DATA\",t:0,m:[1,3],p:[{example:\"https://airtable.com/apppqwer/tblpoi/viwmnb\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ASK_AI\",t:0,m:[1,2],p:[{example:\"I need an accountability goal achievement\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B1:B10\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"COUNTIFS\",t:1,m:[2,256],p:[{example:\"A1:A10\",require:\"m\",repeat:\"n\",type:\"range\"},{example:' \">20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\" B1:B10\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"PRODUCT\",t:0,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"HARMEAN\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"HYPGEOMDIST\",t:1,m:[5,5],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"20\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"40\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"INTERCEPT\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"KURT\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"LARGE\",t:1,m:[2,2],p:[{example:\"A2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"STDEVA\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"STDEVP\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"GEOMEAN\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"RANK_EQ\",t:1,m:[2,3],p:[{example:\"A10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A1:A100\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"RANK_AVG\",t:1,m:[2,3],p:[{example:\"A10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A1:A100\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"PERCENTRANK_EXC\",t:1,m:[2,3],p:[{example:\"A1:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PERCENTRANK_INC\",t:1,m:[2,3],p:[{example:\"A1:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\" A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FORECAST\",t:1,m:[3,3],p:[{example:\"A1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FISHERINV\",t:1,m:[1,1],p:[{example:\"0.962\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FISHER\",t:1,m:[1,1],p:[{example:\"0.962\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MODE_SNGL\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"WEIBULL_DIST\",t:1,m:[4,4],p:[{example:\"2.4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"COUNT\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"COUNTA\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"AVEDEV\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"AVERAGE\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"AVERAGEA\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"BINOM_DIST\",t:1,m:[4,4],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.005\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"BINOM_INV\",t:1,m:[3,3],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.005\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.8\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CONFIDENCE_NORM\",t:1,m:[3,3],p:[{example:\"0.05\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1.6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"250\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CORREL\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COVARIANCE_P\",t:1,m:[2,2],p:[{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COVARIANCE_S\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DEVSQ\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"EXPON_DIST\",t:1,m:[3,3],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"AVERAGEIF\",t:1,m:[2,3],p:[{example:\"A1:A10\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\">20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B1:B10\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"AVERAGEIFS\",t:1,m:[2,255],p:[{example:\"A1:A10\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\" B1:B10\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:' \">20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\" C1:C10\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"PERMUT\",t:1,m:[2,2],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TRIMMEAN\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PERCENTILE_EXC\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.25\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PERCENTILE_INC\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.25\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PEARSON\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"NORM_S_INV\",t:1,m:[1,1],p:[{example:\"0.75\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"NORM_S_DIST\",t:1,m:[2,2],p:[{example:\"2.4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"NORM_INV\",t:1,m:[3,3],p:[{example:\"0.75\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"NORM_DIST\",t:1,m:[4,4],p:[{example:\"2.4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"NEGBINOM_DIST\",t:1,m:[4,4],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"MINA\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"MIN\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"MEDIAN\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"MAXA\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"MAX\",t:1,m:[1,255],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"LOGNORM_INV\",t:1,m:[3,3],p:[{example:\"0.4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"LOGNORM_DIST\",t:1,m:[4,4],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"Z_TEST\",t:1,m:[2,3],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"B2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"3\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PROB\",t:1,m:[3,4],p:[{example:\"A3:A6\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"QUARTILE_EXC\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"QUARTILE_INC\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"POISSON_DIST\",t:1,m:[3,3],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"RSQ\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"T_DIST\",t:1,m:[3,3],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"30\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"T_DIST_2T\",t:1,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"30\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"T_DIST_RT\",t:1,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"30\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"T_INV\",t:1,m:[2,2],p:[{example:\"0.35\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"T_INV_2T\",t:1,m:[2,2],p:[{example:\"0.35\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"T_TEST\",t:1,m:[4,4],p:[{example:\"A1:A4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B1:B4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"F_DIST\",t:1,m:[4,4],p:[{example:\"15.35\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"F_DIST_RT\",t:1,m:[3,3],p:[{example:\"15.35\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"VAR_P\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"VAR_S\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"VARA\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"VARPA\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"STEYX\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"STANDARDIZE\",t:1,m:[3,3],p:[{example:\"96\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"80\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"6.7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SMALL\",t:1,m:[2,2],p:[{example:\"A2:B100\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SLOPE\",t:1,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SKEW\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"SKEW_P\",t:1,m:[1,255],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"VLOOKUP\",t:2,m:[3,4],p:[{example:\"10003\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A2:B26\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"HLOOKUP\",t:2,m:[3,4],p:[{example:\"10003\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A2:Z6\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LOOKUP\",t:2,m:[2,3],p:[{example:\"10003\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A1:A100\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"B1:B100\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ADDRESS\",t:2,m:[2,5],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:'\"Sheet2\"',require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"INDIRECT\",t:2,m:[1,2],p:[{example:'\"Sheet2!\"&B10',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ROW\",t:2,m:[0,1],p:[{example:\"A9\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ROWS\",t:2,m:[1,1],p:[{example:\"A9:A62\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COLUMN\",t:2,m:[0,1],p:[{example:\"A9\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"COLUMNS\",t:2,m:[1,1],p:[{example:\"A9:W62\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"OFFSET\",t:2,m:[3,5],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MATCH\",t:2,m:[2,3],p:[{example:'\"Sunday\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A2:A9\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"INDEX\",t:2,m:[2,3],p:[{example:\"A1:C20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"GETPIVOTDATA\",t:2,m:[2,254],p:[{example:'\"SUM of number of units\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"'Pivot table'!A1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"division\"',require:\"o\",repeat:\"y\",type:\"rangeall\"},{example:'\"east\"',require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"CHOOSE\",t:2,m:[2,255],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:'\"A\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"B\"',require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"HYPERLINK\",t:2,p:[{example:'\"http://www.luckysheet.com/\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"luckysheet\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TIME\",t:6,m:[3,3],p:[{example:\"11\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"40\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"59\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TIMEVALUE\",t:6,m:[1,1],p:[{example:'\"2:15 PM\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"EOMONTH\",t:6,m:[2,2],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"EDATE\",t:6,m:[2,2],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SECOND\",t:6,m:[1,1],p:[{example:\"TIME(11\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"MINUTE\",t:6,m:[1,1],p:[{example:\"TIME(11\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"HOUR\",t:6,m:[1,1],p:[{example:\"TIME(11\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"NOW\",t:6,m:[0,0],p:[]},{n:\"NETWORKDAYS\",t:6,m:[2,3],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"16)\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"NETWORKDAYS_INTL\",t:6,m:[2,4],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"16)\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(1969\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISOWEEKNUM\",t:6,m:[1,1],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"WEEKNUM\",t:6,m:[1,2],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"WEEKDAY\",t:6,m:[1,2],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DAY\",t:6,m:[1,1],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DAYS\",t:6,m:[2,2],p:[{example:\"2011-3-15\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2011-2-1\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DAYS360\",t:6,m:[2,3],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DATE\",t:6,m:[3,3],p:[{example:\"1969\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"20\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATEVALUE\",t:6,m:[1,1],p:[{example:'\"1969-7-20\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DATEDIF\",t:6,m:[3,3],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"16)\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"WORKDAY\",t:6,m:[2,3],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"16)\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"WORKDAY_INTL\",t:6,m:[2,4],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"16)\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(1969\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"YEAR\",t:6,m:[1,1],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"YEARFRAC\",t:6,m:[2,3],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"7\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"16)\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TODAY\",t:6,m:[0,0],p:[]},{n:\"MONTH\",t:6,m:[1,1],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"EFFECT\",t:8,m:[2,2],p:[{example:\"0.99\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DOLLAR\",t:12,m:[1,2],p:[{example:\"1.2351\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DOLLARDE\",t:8,m:[2,2],p:[{example:\"100.10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"32\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DOLLARFR\",t:8,m:[2,2],p:[{example:\"100.125\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"32\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DB\",t:8,m:[4,5],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"50\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DDB\",t:8,m:[4,5],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"50\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2.25\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"RATE\",t:8,m:[3,6],p:[{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"-100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"400\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CUMPRINC\",t:8,m:[6,6],p:[{example:\"0.12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUPNUM\",t:8,m:[3,4],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"02\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SYD\",t:8,m:[4,4],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"50\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TBILLEQ\",t:8,m:[3,3],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2)\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TBILLYIELD\",t:8,m:[3,3],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"95\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TBILLPRICE\",t:8,m:[3,3],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.09\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PV\",t:8,m:[3,5],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"D2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ACCRINT\",t:8,m:[6,8],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ACCRINTM\",t:8,m:[4,5],p:[{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(1969\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUPDAYBS\",t:8,m:[3,4],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUPDAYS\",t:8,m:[3,4],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUPDAYSNC\",t:8,m:[3,4],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUPNCD\",t:8,m:[3,4],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"01)\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"DATE(2019\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COUPPCD\",t:8,m:[3,4],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"01)\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"DATE(2019\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FV\",t:8,m:[3,5],p:[{example:\"0.12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"400\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FVSCHEDULE\",t:8,m:[2,2],p:[{example:\"10000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"YIELD\",t:8,m:[6,7],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.057\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"95\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"YIELDDISC\",t:8,m:[4,5],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"95\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"NOMINAL\",t:8,m:[2,2],p:[{example:\"0.85\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"XIRR\",t:8,m:[2,3],p:[{example:\"B2:B25\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"C2:C25\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"250\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MIRR\",t:8,m:[3,3],p:[{example:\"A2:A25\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"IRR\",t:8,m:[1,2],p:[{example:\"A2:A25\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"200\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"NPV\",t:8,m:[2,255],p:[{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"200\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"250\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"XNPV\",t:8,m:[3,3],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B25\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"C2:C25\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"CUMIPMT\",t:8,m:[6,6],p:[{example:\"0.12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PMT\",t:8,m:[3,5],p:[{example:\"0.08\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\" 100000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"D2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"IPMT\",t:8,m:[4,6],p:[{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"80000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"E2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PPMT\",t:8,m:[4,6],p:[{example:\"0.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"3*12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"INTRATE\",t:8,m:[4,5],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"100000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"101200\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PRICE\",t:8,m:[6,7],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.057\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.065\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PRICEDISC\",t:8,m:[4,5],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.0525\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"PRICEMAT\",t:8,m:[5,6],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.061\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.061\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"RECEIVED\",t:8,m:[4,5],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"10000000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.0575\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DISC\",t:8,m:[4,5],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"97.975\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"12\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"NPER\",t:8,m:[3,5],p:[{example:\"0.12\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"500\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"40000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SLN\",t:8,m:[3,3],p:[{example:\"300000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"75000\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DURATION\",t:8,m:[5,6],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.08\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.09\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MDURATION\",t:8,m:[5,6],p:[{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"DATE(2010\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0.08\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0.09\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"BIN2DEC\",t:9,m:[1,1],p:[{example:\"101\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"BIN2HEX\",t:9,m:[1,2],p:[{example:\"101\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"BIN2OCT\",t:9,m:[1,2],p:[{example:\"101\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DEC2BIN\",t:9,m:[1,2],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DEC2HEX\",t:9,m:[1,2],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DEC2OCT\",t:9,m:[1,2],p:[{example:\"100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"HEX2BIN\",t:9,m:[1,2],p:[{example:'\"f3\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"HEX2DEC\",t:9,m:[1,1],p:[{example:'\"f3\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"HEX2OCT\",t:9,m:[1,2],p:[{example:'\"f3\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"OCT2BIN\",t:9,m:[1,2],p:[{example:\"37\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"OCT2DEC\",t:9,m:[1,1],p:[{example:\"37\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"OCT2HEX\",t:9,m:[1,2],p:[{example:\"37\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"COMPLEX\",t:9,m:[2,3],p:[{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:'\"j\"',require:\"o\",repeat:\"n\",type:\"rangestring\"}]},{n:\"IMREAL\",t:9,m:[1,1],p:[{example:'\"4+5i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"IMAGINARY\",t:9,m:[1,1],p:[{example:'\"4+5i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"IMCONJUGATE\",t:9,m:[1,1],p:[{example:'\"3+4i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"IMABS\",t:9,m:[1,1],p:[{example:'\"3+4i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DELTA\",t:9,m:[1,2],p:[{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"IMSUM\",t:9,m:[1,255],p:[{example:'\"3+4i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"5-3i\"',require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"IMSUB\",t:9,m:[2,2],p:[{example:'\"6+5i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"2+3i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"IMPRODUCT\",t:9,m:[1,255],p:[{example:'\"3+4i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"5-3i\"',require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"IMDIV\",t:9,m:[2,2],p:[{example:'\"11+16i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"3+2i\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"NOT\",t:10,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TRUE\",t:10,m:[0,0],p:[]},{n:\"FALSE\",t:10,m:[0,0],p:[]},{n:\"AND\",t:10,m:[1,255],p:[{example:'A2 = \"foo\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'A3 = \"bar\"',require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"IFERROR\",t:10,m:[2,2],p:[{example:\"A1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"Error in cell A1\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"IF\",t:10,m:[2,3],p:[{example:'A2 = \"foo\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"A2 is foo\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"A2 was false\"',require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"OR\",t:10,m:[1,255],p:[{example:'A2 = \"foo\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:' A3 = \"bar\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"NE\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"EQ\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"GT\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"GTE\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LT\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LTE\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ADD\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MINUS\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MULTIPLY\",t:11,m:[2,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DIVIDE\",t:11,m:[2,2],p:[{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CONCAT\",t:11,m:[2,2],p:[{example:'\"de\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"mystify\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"UNARY_PERCENT\",t:11,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CONCATENATE\",t:12,m:[1,255],p:[{example:'\"Super\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"calla\"',require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"CODE\",t:12,m:[1,1],p:[{example:'\"a\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"CHAR\",t:12,m:[1,1],p:[{example:\"97\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ARABIC\",t:12,m:[1,1],p:[{example:'\"XIV\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ROMAN\",t:12,m:[1,1],p:[{example:\"499\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"REGEXEXTRACT\",t:12,m:[2,2],p:[{example:'\"Needle in a haystack\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\".e{2}dle\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"REGEXMATCH\",t:12,m:[2,2],p:[{example:'\"Spreadsheets\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"S.r\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"REGEXREPLACE\",t:12,m:[3,3],p:[{example:'\"Spreadsheets\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"S.*d\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"Bed\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"T\",t:12,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"FIXED\",t:12,m:[1,3],p:[{example:\"3.141592653\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"FIND\",t:12,m:[2,3],p:[{example:'\"n\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"14\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"FINDB\",t:12,m:[2,3],p:[{example:'\"new\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"new year\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"JOIN\",t:12,m:[2,255],p:[{example:'\" and-a \"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"{1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"LEFT\",t:12,m:[1,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"RIGHT\",t:12,m:[1,2],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MID\",t:12,m:[3,3],p:[{example:'\"get this\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"LEN\",t:12,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LENB\",t:12,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LOWER\",t:12,m:[1,1],p:[{example:'\"LOREM IPSUM\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"UPPER\",t:12,m:[1,1],p:[{example:'\"lorem ipsum\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"EXACT\",t:12,m:[2,2],p:[{example:\"A1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"REPLACE\",t:12,m:[4,4],p:[{example:'\"Spreadsheets\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"6\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:'\"Bed\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"REPT\",t:12,m:[2,2],p:[{example:'\"ha\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SEARCH\",t:12,m:[2,3],p:[{example:'\"n\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"14\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUBSTITUTE\",t:12,m:[3,4],p:[{example:'\"search for it\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"search for\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"Google\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"CLEAN\",t:12,m:[1,1],p:[{example:'\"AF\"&CHAR(31)',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TEXT\",t:12,m:[2,2],p:[{example:\"1.23\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:'\"$0.00\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TRIM\",t:12,m:[1,1],p:[{example:'\" lorem ipsum\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"VALUE\",t:12,m:[1,1],p:[{example:'\"123\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"PROPER\",t:12,m:[1,1],p:[{example:'\"united states\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"CONVERT\",t:13,m:[3,3],p:[{example:\"5.1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:'\"g\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"kg\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"SUMX2MY2\",t:14,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUMX2PY2\",t:14,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUMXMY2\",t:14,m:[2,2],p:[{example:\"A2:A100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B100\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TRANSPOSE\",t:14,m:[1,1],p:[{example:\"{1,2}\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"TREND\",t:14,m:[1,4],p:[{example:\"B2:B10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A10\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"A11:A13\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"FREQUENCY\",t:14,m:[2,2],p:[{example:\"A2:A40\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"B2:B5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"GROWTH\",t:14,m:[1,4],p:[{example:\"B2:B10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A10\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"A11:A13\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LINEST\",t:14,m:[1,4],p:[{example:\"B2:B10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A10\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LOGEST\",t:14,m:[1,4],p:[{example:\"B2:B10\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"A2:A10\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"MDETERM\",t:14,m:[1,1],p:[{example:\"A1:D4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MINVERSE\",t:14,m:[1,1],p:[{example:\"A1:D4\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"MMULT\",t:14,m:[2,2],p:[{example:\"A1:B3\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"C1:F2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SUMPRODUCT\",t:14,m:[1,255],p:[{example:\"A2:C5\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"D2:F5\",require:\"o\",repeat:\"y\",type:\"rangenumber\"}]},{n:\"ISFORMULA\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"CELL\",t:15,m:[2,2],p:[{example:'\"type\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"C2\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"NA\",t:15,m:[0,0],p:[]},{n:\"ERROR_TYPE\",t:15,m:[1,1],p:[{example:\"A3\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISBLANK\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"ISERR\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISERROR\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISLOGICAL\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISNA\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISNONTEXT\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISNUMBER\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISREF\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"ISTEXT\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TYPE\",t:15,m:[1,1],p:[{example:\"C4\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"N\",t:15,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TO_DATE\",t:16,m:[1,1],p:[{example:\"25405\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TO_PURE_NUMBER\",t:16,m:[1,1],p:[{example:\"50%\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TO_TEXT\",t:16,m:[1,1],p:[{example:\"24\",require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TO_DOLLARS\",t:16,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"TO_PERCENT\",t:16,m:[1,1],p:[{example:\"A2\",require:\"m\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DGET\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DMAX\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DMIN\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DAVERAGE\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DCOUNT\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DCOUNTA\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DPRODUCT\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DSTDEV\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DSTDEVP\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DSUM\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DVAR\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"DVARP\",t:17,m:[3,3],p:[{example:\"A2:F20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"G2\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"A22:D23\",require:\"m\",repeat:\"n\",type:\"range\"}]},{n:\"AGE_BY_IDCARD\",t:\"3\",m:[1,2],p:[{example:\"A1\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:'\"2017-10-01\"',require:\"o\",repeat:\"n\",type:\"rangedatetime\"}]},{n:\"SEX_BY_IDCARD\",t:\"3\",m:[1,1],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"BIRTHDAY_BY_IDCARD\",t:\"3\",m:[1,2],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"PROVINCE_BY_IDCARD\",t:\"3\",m:[1,1],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"CITY_BY_IDCARD\",t:\"3\",m:[1,1],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"STAR_BY_IDCARD\",t:\"3\",m:[1,1],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ANIMAL_BY_IDCARD\",t:\"3\",m:[1,1],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"ISIDCARD\",t:\"3\",m:[1,1],p:[{example:'\"31033519900101XXXX\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"DM_TEXT_CUTWORD\",t:\"4\",m:[1,2],p:[{example:'\"I came to Beijing Tsinghua University\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DM_TEXT_TFIDF\",t:\"4\",m:[1,3],p:[{example:'\"I came to Beijing Tsinghua University\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"20\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DM_TEXT_TEXTRANK\",t:\"4\",m:[1,3],p:[{example:'\"I came to Beijing Tsinghua University\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"20\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATA_CN_STOCK_CLOSE\",t:\"5\",m:[1,3],p:[{example:'\"000001\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2015-01-08\",require:\"o\",repeat:\"n\",type:\"rangedate\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATA_CN_STOCK_OPEN\",t:\"5\",m:[1,3],p:[{example:'\"000001\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2015-01-08\",require:\"o\",repeat:\"n\",type:\"rangedate\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATA_CN_STOCK_MAX\",t:\"5\",m:[1,3],p:[{example:'\"000001\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2015-01-08\",require:\"o\",repeat:\"n\",type:\"rangedate\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATA_CN_STOCK_MIN\",t:\"5\",m:[1,3],p:[{example:'\"000001\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2015-01-08\",require:\"o\",repeat:\"n\",type:\"rangedate\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATA_CN_STOCK_VOLUMN\",t:\"5\",m:[1,3],p:[{example:'\"000001\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2015-01-08\",require:\"o\",repeat:\"n\",type:\"rangedate\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"DATA_CN_STOCK_AMOUNT\",t:\"5\",m:[1,3],p:[{example:'\"000001\"',require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"2015-01-08\",require:\"o\",repeat:\"n\",type:\"rangedate\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"ISDATE\",t:\"6\",m:[1,1],p:[{example:'\"1990-01-01\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"LINESPLINES\",t:\"3\",m:[1,8],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"#2ec7c9\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"avg\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#000\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#fc5c5c\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#fc5c5c\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"1.5\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"AREASPLINES\",t:\"3\",m:[1,5],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"#2ec7c9\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#CCF3F4\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"avg\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#000\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"COLUMNSPLINES\",t:\"3\",m:[1,6],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#fc5c5c\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"100\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"STACKCOLUMNSPLINES\",t:\"3\",m:[1,5],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"100\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"BARSPLINES\",t:\"3\",m:[1,6],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#fc5c5c\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"100\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"STACKBARSPLINES\",t:\"3\",m:[1,5],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"100\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"DISCRETESPLINES\",t:\"3\",m:[1,4],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#2ec7c9\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#fc5c5c\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"TRISTATESPLINES\",t:\"3\",m:[1,6],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#fc5c5c\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#999\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"PIESPLINES\",t:\"3\",m:[1,5],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"0\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#000\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"#97b552\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"BOXSPLINES\",t:\"3\",m:[1,4],p:[{example:\"A1:A20\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"1.5\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"10\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"1.5\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"BULLETSPLINES\",t:\"3\",m:[2,3],p:[{example:\"10\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"8\",require:\"m\",repeat:\"n\",type:\"rangeall\"},{example:\"12\",require:\"o\",repeat:\"y\",type:\"rangeall\"}]},{n:\"COMPOSESPLINES\",t:\"3\",m:[1,1],p:[{example:\"PIESPLINES(A1:A20)\",require:\"m\",repeat:\"y\",type:\"rangeall\"}]},{n:\"SORT\",t:\"14\",m:[1,4],p:[{example:\"A2:A17\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"-1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"FILTER\",t:\"14\",m:[2,3],p:[{example:\"A5:D20\",require:\"m\",repeat:\"n\",type:\"range\"},{example:\"1\",require:\"m\",repeat:\"n\",type:\"range\"},{example:'\"\"',require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"UNIQUE\",t:\"14\",m:[1,3],p:[{example:\"A2:B26\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"TRUE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"},{example:\"FALSE()\",require:\"o\",repeat:\"n\",type:\"rangeall\"}]},{n:\"RANDARRAY\",t:\"14\",m:[0,2],p:[{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"SEQUENCE\",t:\"14\",m:[1,4],p:[{example:\"1\",require:\"m\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"},{example:\"1\",require:\"o\",repeat:\"n\",type:\"rangenumber\"}]},{n:\"EVALUATE\",t:\"3\",m:[1,1],p:[{example:'\"A1+5*2^2\"',require:\"m\",repeat:\"n\",type:\"rangeall\"}]},{n:\"REMOTE\",t:\"5\",m:[1,1],p:[{example:\"SUM(A1:A10000000)\",require:\"m\",repeat:\"n\",type:\"string\"}]}]})),Th=y((()=>{Ch(),kh=e=>(bh.forEach((t=>{let n=e[t.n];t.d=n.d,t.a=n.a,t.p.forEach(((e,t)=>{Object.assign(e,n.p[t])}))})),bh)})),Sh=y((()=>{_h(),x(),K(),Th(),wh=function(e){let n=X(),a=[...kh(n.functionlist)];for(let e=0;e<a.length;e++){let t=a[e];t.f=vh[t.n]}e&&a.push(...e),t.functionlist=a;let l={};for(let e=0;e<a.length;e++){let t=a[e];l[t.n]=t}window.luckysheet_function=l,t.luckysheet_function=l}})),$h=v(((e,t)=>{var n,a;n=e,a=function(e){\"use strict\";var t=\"undefined\"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},n={weekdays:{shorthand:[\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"],longhand:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"]},months:{shorthand:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],longhand:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"]},rangeSeparator:\" 至 \",weekAbbreviation:\"周\",scrollTitle:\"滚动切换\",toggleTitle:\"点击切换 12/24 小时时制\"};t.l10ns.zh=n;var a=t.l10ns;e.Mandarin=n,e.default=a,Object.defineProperty(e,\"__esModule\",{value:!0})},\"object\"==typeof e&&void 0!==t?a(e):\"function\"==typeof define&&define.amd?define([\"exports\"],a):a((n=\"undefined\"!=typeof globalThis?globalThis:n||self).zh={})}));var Ih,Rh,Ah,Dh=y((()=>{_d(),x(),kl(),qt(),Nu(),Ah=function(){xd(t,\"jfredo\",((e,n,a,l)=>{\"length\"!==n&&yl.createHookFunction(\"updated\",a,t),function(e){clearTimeout(Ih),Ih=setTimeout((()=>{$(\"#luckysheet-icon-undo\")[e?\"removeClass\":\"addClass\"](\"disabled\")}),10)}(t.jfredo.length)})),xd(t,\"jfundo\",((e,n,a,l)=>{!function(e){clearTimeout(Rh),Rh=setTimeout((()=>{$(\"#luckysheet-icon-redo\")[e?\"removeClass\":\"addClass\"](\"disabled\")}),10)}(t.jfundo.length)})),xd(t,\"asyncLoad\",((e,t,n,a)=>{\"length\"===t&&0===n&&yl.createHookFunction(\"workbookCreateAfter\",xu())}))}}));function Fh(){if(!function(){let e=location.host;return!!Eh.includes(e)}())return;let e=document.createElement(\"style\");e.innerText=\"\\nbody {\\n    background-color: #f5f5f5;\\n}\\n\\n#chat-assistant-container {\\n    position: fixed;\\n    right: 40px;\\n    bottom: 86px;\\n    z-index:9990;\\n}\\n\\n#chat-assistant-button {\\n    width: 50px;\\n    height: 50px;\\n    border-radius: 50%;\\n    border: none;\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    cursor: pointer;\\n    background: linear-gradient(135deg, rgb(215 98 150 / 55%),rgb(34 78 139 / 71%), rgb(114 222 172));\\n    box-shadow: 0px 0px 8px 1px rgb(0 0 0 / 22%);\\n    color: #fff;\\n    text-shadow: 1px 1px 3px rgb(0 0 0 / 56%);\\n}\\n\\n\\n#chat-container {\\n    position: fixed;\\n    padding: 10px;\\n    top: 45%;\\n    left: 50%;\\n    z-index:9990;\\n    transform: translate(-50%, -50%);\\n    display: none;\\n    border-radius: 5px;\\n    width: 40%;\\n    background: linear-gradient(135deg, rgb(215 98 150 / 92%),rgb(34 78 139 / 93%), rgb(114 222 172 / 94%));\\n    box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);\\n}\\n\\n\\n\\n#chat-header {\\n    display: flex;\\n    align-items: center;\\n    justify-content: space-between;\\n    padding: 0 10px 10px 0;\\n    border-radius: 5px 5px 0 0;\\n    cursor: move;\\n}\\n\\n#loading-indicator {\\n    width: 14px;\\n    height: 14px;\\n    margin: 0 10px 0 10px;\\n    border: 2px solid #ccc;\\n    border-top-color: #4caf50;\\n    border-radius: 50%;\\n    animation: spin 2s linear infinite;\\n    visibility: hidden;\\n}\\n\\n@keyframes spin {\\n    0% {\\n        transform: rotate(0deg);\\n    }\\n\\n    100% {\\n        transform: rotate(360deg);\\n    }\\n}\\n\\n#chat-header .show-loading {\\n    visibility: visible;\\n}\\n\\n#chat-header .hide-loading {\\n    visibility: hidden;\\n}\\n\\n\\n#circle-button {\\n    padding: 0;\\n    border: none;\\n    background-color: transparent;\\n    font-size: 16px;\\n    user-select: none;\\n    display: flex;\\n    align-items: center;\\n    color: #fff; \\n    text-shadow: 1px 1px 3px black;\\n}\\n\\n#close-button {\\n    cursor: pointer;\\n    padding: 0;\\n    border: none;\\n    background-color: transparent;\\n    font-size: 24px;\\n    color: #fff; \\n    text-shadow: 1px 1px 3px black;\\n}\\n#send-button {\\n    cursor: pointer;\\n    padding: 0;\\n    border: none;\\n    background-color: transparent;\\n    font-size: 16px;\\n}\\n\\n#close-button:hover,\\n#send-button:hover {\\n    color: #888;\\n}\\n\\n#chat-input-container,\\n#chat-input {\\n    border: none;\\n}\\n\\n#chat-input-container {\\n    display: flex;\\n    align-items: center;\\n    border-radius: 5px;\\n    background-color: #fff;\\n    padding: 10px;\\n}\\n\\n#chat-input {\\n    flex: 1;\\n    padding: 0;\\n    margin-right: 5px;\\n    border-radius: 5px;\\n    overflow-y: auto;\\n    height: 24px;\\n    font-size: 1rem;\\n    outline: none;\\n    resize: none;\\n    background: transparent;\\n}\\n\\n#send-button {\\n    background-color: transparent;\\n    border: none;\\n    border-radius: 5px;\\n    cursor: pointer;\\n    padding: 5px;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    height: 32px;\\n    width: 32px;\\n}\\n\\n#send-button>span {\\n    height: 16px;\\n    width: 16px;\\n}\\n\\n#send-button:enabled {\\n    background-color: rgb(120,198,174);\\n}\\n\\n#send-button:enabled svg path {\\n    fill: #fff;\\n}\\n\",document.head.appendChild(e);document.body.insertAdjacentHTML(\"beforeend\",'<div id=\"chat-assistant-container\">\\n            <button id=\"chat-assistant-button\">🤖AI</button>\\n        </div>\\n    \\n        <div id=\"chat-container\">\\n            <div id=\"chat-header\">\\n                <span id=\"circle-button\">Univer AI 助手<div id=\"loading-indicator\"></div></span>\\n    \\n                <button id=\"close-button\">×</button>\\n            </div>\\n            <div id=\"chat-input-container\">\\n                <textarea id=\"chat-input\" placeholder=\"请输入问题\"></textarea>\\n                \\x3c!-- <textarea id=\"chat-input\" placeholder=\"请输入问题\"></textarea> --\\x3e\\n                <button id=\"send-button\" disabled>\\n                    <span><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" class=\"h-4 w-4 m-1 md:m-0\"\\n                            stroke-width=\"2\">\\n                            <path\\n                                d=\"M.5 1.163A1 1 0 0 1 1.97.28l12.868 6.837a1 1 0 0 1 0 1.766L1.969 15.72A1 1 0 0 1 .5 14.836V10.33a1 1 0 0 1 .816-.983L8.5 8 1.316 6.653A1 1 0 0 1 .5 5.67V1.163Z\"\\n                                fill=\"currentColor\"></path>\\n                        </svg></span>\\n                </button>\\n            </div>\\n    \\n        </div>');let t=document.getElementById(\"chat-assistant-button\"),n=document.getElementById(\"chat-container\"),a=document.getElementById(\"close-button\"),l=document.getElementById(\"chat-input\"),r=document.getElementById(\"send-button\"),o=document.getElementById(\"loading-indicator\");function i(e){e.scrollHeight>24&&(e.style.height=\"auto\"),e.style.height=e.scrollHeight+\"px\",e.scrollHeight>200?e.style.overflowY=\"scroll\":e.style.overflowY=\"hidden\",s(e)}function s(e){\"\"!==e.value.trim()?(r.disabled=!1,r.classList.add(\"enabled\")):(e.style.height=\"24px\",r.disabled=!0,r.classList.remove(\"enabled\"))}t.addEventListener(\"click\",(function(){n.style.display=\"block\"})),a.addEventListener(\"click\",(function(){n.style.display=\"none\"})),r.addEventListener(\"click\",(function(){let e=l.value;\"\"!==e.trim()&&(l.value=\"\",s(l),o.classList.add(\"show-loading\"),setTimeout((()=>{(function(e=\"\"){let t=function(e=\"\"){let t=/(https?:\\/\\/(?:www\\.)?airtable\\.com\\/\\S+)/gi,n=e.match(t);return n?n[0]:\"\"}(e);\"\"!==t?function(e){let t=[[{f:'=GET_AIRTABLE_DATA(\"'+e+'\")'}]];luckysheet.setRangeValue(t)}(t):function(e=\"\"){let t=function(e){let t=/([A-Z]+[0-9]*):([A-Z]+[0-9]*)/g,n=e.match(t);return n?n[0]:\"\"}(e);t=\"\"===t?\"\":\",\"+t;let n=[[{f:'=ASK_AI(\"'+e+'\"'+t+\")\"}]];luckysheet.setRangeValue(n)}(e)})(e),o.classList.remove(\"show-loading\")}),1e3))})),l.addEventListener(\"input\",(function(){i(this)}));let c=!1;l.addEventListener(\"compositionstart\",(function(){c=!0})),l.addEventListener(\"compositionend\",(function(){c=!1})),l.addEventListener(\"keydown\",(function(e){let t=navigator.platform.includes(\"Win\"),n=navigator.platform.includes(\"Mac\");e.key;!t||\"Enter\"!==e.key||c||e.altKey?t&&\"Enter\"===e.key&&!c&&e.altKey?(e.preventDefault(),this.value+=\"\\n\"):!n||\"Enter\"!==e.key||c||e.metaKey?n&&\"Enter\"===e.key&&!c&&e.metaKey&&(e.preventDefault(),this.value+=\"\\n\"):(e.preventDefault(),r.click()):(e.preventDefault(),r.click()),i(this)}));let u=!1,d={x:0,y:0};document.getElementById(\"chat-header\").addEventListener(\"mousedown\",(function(e){u=!0,d.x=e.clientX-n.offsetLeft,d.y=e.clientY-n.offsetTop})),document.addEventListener(\"mousemove\",(function(e){u&&(n.style.left=e.clientX-d.x+\"px\",n.style.top=e.clientY-d.y+\"px\")})),document.addEventListener(\"mouseup\",(function(){u=!1}))}var Eh,Mh=y((()=>{Eh=[\"crm.lashuju.com\",\"localhost:3000\"]}));function Nh(){Nd(),function(){let e=null,n=X(),a=n.filter,l=n.button;$(\"#luckysheetfilter\").click(nl);let r=null,o=null;$(\".luckysheet-cols-menu .luckysheet-cols-submenu\").hover((function(){let e=$(this),t=e.attr(\"id\"),n=$(\"#\"+t+\"_sub\"),a=e.parent(),l=$(window).width(),r=$(window).height(),i=a.width(),s=n.height()+25,c=n.width()+5,u=e.offset(),d=u.top,h=u.left+i;h+c>l&&(h=u.left-c),d+s>r&&(d=r-s),n.css({top:d,left:h}).show(),o=e}),(function(){let e=$(this).attr(\"id\"),t=$(\"#\"+e+\"_sub\");r=setTimeout((function(){t.hide()}),200)})),$(\".luckysheet-rightgclick-menu-sub\").hover((function(){o.addClass(\"luckysheet-cols-menuitem-hover\"),clearTimeout(r)}),(function(){o.removeClass(\"luckysheet-cols-menuitem-hover\"),$(this).hide()})),$(\"#luckysheet-filter-menu\").mouseover((function(){clearTimeout(e),e=setTimeout((function(){$(\"#luckysheet-filter-submenu\").hide()}),500)})),$(\"#luckysheet-filter-submenu\").mouseover((function(){clearTimeout(e)})).find(\".luckysheet-cols-menuitem\").click((function(e){$(\"#luckysheet-filter-selected span\").html($(this).find(\".luckysheet-cols-menuitem-content\").text()).data(\"value\",$(this).data(\"value\")),$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").hide();let t=$(this).data(\"type\"),n=$(this).attr(\"data-value\");\"2\"==t?($(\"#luckysheet-filter-selected span\").data(\"type\",\"2\"),$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input2\").show(),$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input input\").prop(\"type\",\"number\")):\"0\"==t?$(\"#luckysheet-filter-selected span\").data(\"type\",\"0\"):($(\"#luckysheet-filter-selected span\").data(\"type\",\"1\"),$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").eq(0).show(),\"dateequal\"==n||\"datelessthan\"==n||\"datemorethan\"==n?$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input input\").prop(\"type\",\"date\"):\"morethan\"==n||\"moreequalthan\"==n||\"lessthan\"==n||\"lessequalthan\"==n||\"equal\"==n||\"noequal\"==n?$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input input\").prop(\"type\",\"number\"):$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input input\").prop(\"type\",\"text\")),$(\"#luckysheet-filter-byvalue\").next().slideUp(),$(\"#luckysheet-filter-submenu\").hide()})),$(\"#luckysheet-filter-bycondition, #luckysheet-filter-byvalue\").click((function(){let e=$(this);e.next().slideToggle(200),setTimeout((function(){\"luckysheet-filter-bycondition\"==e.attr(\"id\")&&$(\"#luckysheet-filter-bycondition\").next().is(\":visible\")&&$(\"#luckysheet-filter-selected span\").text()!=a.filiterInputNone&&$(\"#luckysheet-filter-byvalue\").next().slideUp(200),e.is($(\"#luckysheet-filter-bycondition\"))&&$(\"#luckysheet-filter-bycondition\").next().is(\":hidden\")&&$(\"#luckysheet-filter-byvalue\").next().is(\":hidden\")&&$(\"#luckysheet-filter-byvalue\").next().slideDown(200)}),300)})),$(\"#luckysheet-filter-selected\").click((function(){let t=$(this).offset(),n=$(\"#luckysheet-filter-submenu\");n.hide();let a=$(window).height(),l=$(window).width(),r=n.width(),o=(n.height(),t.top),i=t.left,s=a-t.top-20;t.left+r>l&&(i=t.left-r),t.top>a/2&&(o=a-t.top,o<0&&(o=0),s=t.top-20),n.css({top:o,left:i,height:s}).show(),clearTimeout(e)})),$(\"#luckysheet-cell-main\").on(\"click\",\".luckysheet-filter-options\",(function(e){if(!Ql(t.currentSheetIndex,\"filter\"))return;let n=$(e.currentTarget),l=n.offset(),r=$(\"#luckysheet-filter-menu\"),o=$(window).height(),i=($(window).width(),n.data(\"str\")),s=n.data(\"edr\"),c=n.data(\"cindex\"),u=n.data(\"stc\"),d=n.data(\"edc\"),h=\"\"==n.data(\"rowhidden\")?{}:JSON.parse(n.data(\"rowhidden\").replace(/\\'/g,'\"'));$(\"body .luckysheet-cols-menu\").hide(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide(),$(\"#luckysheet-filter-byvalue-input\").val(\"\"),$(\"#luckysheet-filter-bycondition\").next().hide(),$(\"#luckysheet-filter-byvalue\").next().show(),r.data(\"str\",i),r.data(\"edr\",s),r.data(\"cindex\",c),r.data(\"stc\",u),r.data(\"edc\",d),$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").hide().find(\"input\").val(),$(\"#luckysheet-filter-selected span\").data(\"type\",\"0\").data(\"type\",null).text(a.filiterInputNone);let f=n.data(\"byconditiontype\");if($(\"#luckysheet-filter-selected span\").data(\"value\",n.data(\"byconditionvalue\")).data(\"type\",f).text(n.data(\"byconditiontext\")),\"2\"==f){let e=$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input2\").show().find(\"input\");e.eq(0).val(n.data(\"byconditionvalue1\")),e.eq(1).val(n.data(\"byconditionvalue2\"))}else\"1\"==f&&$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").eq(0).show().find(\"input\").val(n.data(\"byconditionvalue1\"));$(\"#luckysheet-filter-orderby-asc\").off(\"click\").on(\"click\",(function(){tl(i,u,s,d,c,!0)})),$(\"#luckysheet-filter-orderby-desc\").off(\"click\").on(\"click\",(function(){tl(i,u,s,d,c,!1)}));let m=St(\"#luckysheet-filter-byvalue-select\",{text:a.filiterMoreDataTip});$(\"#luckysheet-filter-byvalue-select\").empty().append(m.el);let p={};return $(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").not(this).each((function(){let e=$(this).data(\"rowhidden\");if(\"\"==e)return!0;e=JSON.parse(e.replace(/\\'/g,'\"'));for(let t in e)p[t]=0})),t.flowdata,setTimeout((function(){let e={},n={},r={},u={};for(let a=i+1;a<=s;a++){if(a in p||null==t.flowdata[a])continue;let l=t.flowdata[a][c];if(null==l||_(l.v)||null==l.ct||\"d\"!=l.ct.t){let e,n;if((null==l||_(l.v))&&(null==l?void 0:l.mc)){let{r:a,c:r}=l.mc,o=t.flowdata[a][r];e=o.v,n=o.m}else null==l||_(l.v)?(e=null,n=null):(e=l.v,n=l.m);e in r||(r[e]={}),n in r[e]||(r[e][n]=0),r[e][n]++,a in h&&(u[e+\"#$$$#\"+n]=0)}else{let t=Ca(\"YYYY-MM-DD\",l.v),r=t.split(\"-\")[0],o=t.split(\"-\")[1],i=t.split(\"-\")[2];r in e||(e[r]={}),o in e[r]||(e[r][o]={}),i in e[r][o]||(e[r][o][i]=0),e[r][o][i]++,a in h&&(n[r]=0,n[o]=0,n[i]=0)}}let d=[];if(JSON.stringify(e).length>2)for(let t in e){let l,r=0,o=\"\";for(let l in e[t]){let i,s=0,c=\"\";for(let a in e[t][l]){let r,o,i=e[t][l][a];s+=i,r=Number(l)<10?\"0\"+Number(l):l,o=Number(a)<10?\"0\"+Number(a):a,c+=t in n&&l in n&&a in n?'<div class=\"day luckysheet-mousedown-cancel cf\" data-check=\"false\" title=\"'+t+\"-\"+r+\"-\"+o+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+a+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+i+\" )</span></div>\":'<div class=\"day luckysheet-mousedown-cancel cf\" data-check=\"true\" title=\"'+t+\"-\"+r+\"-\"+o+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+a+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+i+\" )</span></div>\"}r+=s,i=Number(l)<10?\"0\"+Number(l):l,o+=t in n&&l in n?'<div class=\"monthBox luckysheet-mousedown-cancel\"><div class=\"month luckysheet-mousedown-cancel cf\" data-check=\"false\" title=\"'+t+\"-\"+i+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+l+a.filiterMonthText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+s+' )</span></div><div class=\"dayList luckysheet-mousedown-cancel\">'+c+\"</div></div>\":'<div class=\"monthBox luckysheet-mousedown-cancel\"><div class=\"month luckysheet-mousedown-cancel cf\" data-check=\"true\" title=\"'+t+\"-\"+i+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+l+a.filiterMonthText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+s+' )</span></div><div class=\"dayList luckysheet-mousedown-cancel\">'+c+\"</div></div>\"}l=t in n?'<div class=\"yearBox luckysheet-mousedown-cancel\"><div class=\"year luckysheet-mousedown-cancel cf\" data-check=\"false\" title=\"'+t+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+t+a.filiterYearText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+r+' )</span></div><div class=\"monthList luckysheet-mousedown-cancel\">'+o+\"</div></div>\":'<div class=\"yearBox luckysheet-mousedown-cancel\"><div class=\"year luckysheet-mousedown-cancel cf\" data-check=\"true\" title=\"'+t+'\"><i class=\"fa fa-caret-right luckysheet-mousedown-cancel\" aria-hidden=\"true\"></i><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+t+a.filiterYearText+'</label><span class=\"count luckysheet-mousedown-cancel\">( '+r+' )</span></div><div class=\"monthList luckysheet-mousedown-cancel\">'+o+\"</div></div>\",d.unshift(l)}if(JSON.stringify(r).length>2){let e=Object.keys(r);e=fr(e,!0);for(let t=0;t<e.length;t++){let n=e[t];for(let e in r[n]){let t,l;t=n+\"#$$$#\"+e==\"null#$$$#null\"?a.valueBlank:e,l=n+\"#$$$#\"+e in u?'<div class=\"textBox luckysheet-mousedown-cancel cf\" data-check=\"false\" data-filter=\"'+n+\"#$$$#\"+e+'\" title=\"'+t+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/><label class=\"luckysheet-mousedown-cancel\">'+t+'</label><span class=\"luckysheet-mousedown-cancel count\">( '+r[n][e]+\" )</span></div>\":'<div class=\"textBox luckysheet-mousedown-cancel cf\" data-check=\"true\" data-filter=\"'+n+\"#$$$#\"+e+'\" title=\"'+t+'\"><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/><label class=\"luckysheet-mousedown-cancel\">'+t+'</label><span class=\"luckysheet-mousedown-cancel count\">( '+r[n][e]+\" )</span></div>\",d.push(l)}}}let f=o-l.top-350;f<0&&(f=100),$(\"#luckysheet-filter-byvalue-select\").append(\"<div class='ListBox luckysheet-mousedown-cancel' style='min-height: 100px; max-height: \"+f+\"px; overflow-y: auto; overflow-x: hidden;'><table cellspacing='0' style='width:100%;' class='luckysheet-mousedown-cancel'>\"+d.join(\"\")+\"</table></div>\"),m.close()}),1),dd(r,l.left,l.top+20),e.stopPropagation(),!1})),$(\"#luckysheet-filter-orderby-color\").hover((function(){let e=$(\"#luckysheet-filter-menu\"),n=e.data(\"str\"),r=e.data(\"edr\"),o=e.data(\"cindex\"),i=(e.data(\"stc\"),e.data(\"edc\"),{}),s={},c=Xa.getComputeMap(),u=ko.getComputeMap();for(let e=n+1;e<=r;e++){let n=t.flowdata[e][o],a=Yu.checkstatus(t.flowdata,e,o,\"bg\");null==a&&(a=\"#ffffff\");let l=Xa.checksAF(e,o,c);null!=l&&(a=l[1]);let r=ko.checksCF(e,o,u);null!=r&&null!=r.cellColor&&(a=r.cellColor),a.indexOf(\"rgb\")>-1&&(a=rd(a)),4==a.length&&(a=a.substr(0,1)+a.substr(1,1).repeat(2)+a.substr(2,1).repeat(2)+a.substr(3,1).repeat(2));let d=Yu.checkstatus(t.flowdata,e,o,\"fc\");null!=l&&(d=l[0]),null!=r&&null!=r.textColor&&(d=r.textColor),d.indexOf(\"rgb\")>-1&&(d=rd(d)),4==d.length&&(d=d.substr(0,1)+d.substr(1,1).repeat(2)+d.substr(2,1).repeat(2)+d.substr(3,1).repeat(2)),null!=t.config&&null!=t.config.rowhidden&&e in t.config.rowhidden?(i[a]=1,null!=n&&!_(n.v)&&(s[d]=1)):(i[a]=0,null!=n&&!_(n.v)&&(s[d]=0))}let d=\"\";if(JSON.stringify(i).length>2&&Object.keys(i).length>1){let e=\"\";for(let t in i)0==i[t]?e+='<div class=\"item luckysheet-mousedown-cancel\"><label class=\"luckysheet-mousedown-cancel\" style=\"background-color: '+t+'\" title=\"'+t+'\"></label><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/></div>':e+='<div class=\"item luckysheet-mousedown-cancel\"><label class=\"luckysheet-mousedown-cancel\" style=\"background-color: '+t+'\" title=\"'+t+'\"></label><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/></div>';d='<div id=\"filterBgColor\" class=\"box luckysheet-mousedown-cancel\"><div class=\"title luckysheet-mousedown-cancel\">'+a.filiterByColorTip+'</div><div style=\"max-height:128px;overflow:auto;\" class=\"luckysheet-mousedown-cancel\">'+e+\"</div></div>\"}let h,f=\"\";if(JSON.stringify(s).length>2&&Object.keys(s).length>1){let e=\"\";for(let t in s)0==s[t]?e+='<div class=\"item luckysheet-mousedown-cancel\"><label class=\"luckysheet-mousedown-cancel\" style=\"background-color: '+t+'\" title=\"'+t+'\"></label><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\" checked=\"checked\"/></div>':e+='<div class=\"item luckysheet-mousedown-cancel\"><label class=\"luckysheet-mousedown-cancel\" style=\"background-color: '+t+'\" title=\"'+t+'\"></label><input class=\"luckysheet-mousedown-cancel\" type=\"checkbox\"/></div>';f='<div id=\"filterFcColor\" class=\"box luckysheet-mousedown-cancel\"><div class=\"title luckysheet-mousedown-cancel\">'+a.filiterByTextColorTip+'</div><div style=\"max-height:128px;overflow:auto;\" class=\"luckysheet-mousedown-cancel\">'+e+\"</div></div>\"}h=\"\"==d&&\"\"==f?'<div class=\"luckysheet-mousedown-cancel\" style=\"padding: 10px 30px;text-align: center;\">'+a.filterContainerOneColorTip+\"</div>\":d+f+'<div class=\"luckysheet-mousedown-cancel\"><button id=\"luckysheet-filter-orderby-color-confirm\" class=\"btn btn-primary luckysheet-mousedown-cancel\" style=\"margin: 5px 20px;width: 70px;\">'+l.confirm+\"</button></div>\",$(\"#luckysheet-filter-orderby-color-submenu\").remove(),$(\"body\").append('<div id=\"luckysheet-filter-orderby-color-submenu\" class=\"luckysheet-cols-menu luckysheet-mousedown-cancel\">'+h+\"</div>\");let m=$(\"#luckysheet-filter-orderby-color-submenu\").end(),p=$(this).parent(),g=$(window).width(),y=$(window).height(),v=p.width(),b=m.height()+25,k=m.width()+5,w=$(this).offset(),x=w.top,C=w.left+v;C+k>g&&(C=w.left-k),x+b>y&&(x=y-b),$(\"#luckysheet-filter-orderby-color-submenu\").css({top:x,left:C}).show()}),(function(){r=setTimeout((function(){$(\"#luckysheet-filter-orderby-color-submenu\").hide()}),200)})),$(document).on(\"mouseover mouseleave\",\"#luckysheet-filter-orderby-color-submenu\",(function(e){\"mouseover\"===e.type?clearTimeout(r):$(this).hide()})),$(document).on(\"click\",\"#luckysheet-filter-orderby-color-submenu .item label\",(function(){$(this).siblings(\"input[type='checkbox']\").click()})),$(document).off(\"click.orderbyColorConfirm\").on(\"click.orderbyColorConfirm\",\"#luckysheet-filter-orderby-color-submenu #luckysheet-filter-orderby-color-confirm\",(function(){let e,n,a={},l={};$(\"#luckysheet-filter-orderby-color-submenu .item\").each((function(e,t){if($(t).find(\"input[type='checkbox']\").is(\":checked\")){let e=$(this).find(\"label\").attr(\"title\"),t=$(this).closest(\".box\").attr(\"id\");\"filterBgColor\"==t?a[e]=0:\"filterFcColor\"==t&&(l[e]=0)}})),e=$(\"#luckysheet-filter-orderby-color-submenu #filterBgColor\").length>0,n=$(\"#luckysheet-filter-orderby-color-submenu #filterFcColor\").length>0;let r=$(\"#luckysheet-filter-menu\"),o=r.data(\"str\"),i=r.data(\"edr\"),s=r.data(\"cindex\"),c=r.data(\"stc\"),u=r.data(\"edc\"),d={};$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").not($(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").eq(s-c).get(0)).each((function(){let e=$(this).data(\"rowhidden\");if(\"\"==e)return!0;e=JSON.parse(e);for(let t in e)d[t]=0}));let h={},f={},m=Xa.getComputeMap(),p=ko.getComputeMap();for(let r=o+1;r<=i;r++){if(r in d||null==t.flowdata[r])continue;let o=t.flowdata[r][s],i=Yu.checkstatus(t.flowdata,r,s,\"bg\"),c=Xa.checksAF(r,s,m);null!=c&&(i=c[1]);let u=ko.checksCF(r,s,p);null!=u&&null!=u.cellColor&&(i=u.cellColor),i=null==i?\"#ffffff\":i,i.indexOf(\"rgb\")>-1&&(i=rd(i)),4==i.length&&(i=i.substr(0,1)+i.substr(1,1).repeat(2)+i.substr(2,1).repeat(2)+i.substr(3,1).repeat(2));let f=Yu.checkstatus(t.flowdata,r,s,\"fc\");null!=c&&(f=c[0]),null!=u&&null!=u.textColor&&(f=u.textColor),f.indexOf(\"rgb\")>-1&&(f=rd(f)),4==f.length&&(f=f.substr(0,1)+f.substr(1,1).repeat(2)+f.substr(2,1).repeat(2)+f.substr(3,1).repeat(2)),e&&n?!(i in a)&&(!(f in l)||null==o||_(o.v))&&(h[r]=0):e?i in a||(h[r]=0):n&&(!(f in l)||null==o||_(o.v))&&(h[r]=0)}let g=$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").eq(s-c),y=Object.keys(h).length>0,v=$.extend(!0,d,h),b=Ka.parseJsonParm(g.data(\"rowhidden\"));el(g,y,h,f,!0,o,i,s,c,u);let k=$.extend(!0,{},t.config);if(k.rowhidden=v,t.clearjfundo){let e={type:\"datachangeAll_filter\"};e.sheetIndex=t.currentSheetIndex,e.config=$.extend(!0,{},t.config),e.curconfig=k,e.optionstate=y,e.optionsindex=s-c,e.rowhidden=$.extend(!0,{},h),e.rowhidenPre=$.extend(!0,{},b),null!=f&&(e.caljs=f),t.jfundo.length=0,t.jfredo.push(e)}t.config=k,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,k.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu, #luckysheet-filter-orderby-color-submenu\").hide(),$o()})),$(document).off(\"click.filterCheckbox1\").on(\"click.filterCheckbox1\",\"#luckysheet-filter-byvalue-select .textBox\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).find(\"input[type='checkbox']\").prop(\"checked\",!0))})),$(document).off(\"click.filterCheckbox2\").on(\"click.filterCheckbox2\",\"#luckysheet-filter-byvalue-select .year\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".month\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".day\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".month\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".day\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\"input[type='checkbox']\").prop(\"checked\",!0))})),$(document).off(\"click.filterCheckbox3\").on(\"click.filterCheckbox3\",\"#luckysheet-filter-byvalue-select .month\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).parents(\".monthBox\").find(\".day\").attr(\"data-check\",\"false\"),$(this).parents(\".monthBox\").find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).parents(\".monthBox\").find(\".day\").attr(\"data-check\",\"true\"),$(this).parents(\".monthBox\").find(\"input[type='checkbox']\").prop(\"checked\",!0));let e=!0;$(this).parents(\".yearBox\").find(\".day\").each((function(t,n){\"true\"==$(n).attr(\"data-check\")||(e=!1)})),e?($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").prop(\"checked\",!0)):($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").removeAttr(\"checked\"))})),$(document).off(\"click.filterCheckbox4\").on(\"click.filterCheckbox4\",\"#luckysheet-filter-byvalue-select .day\",(function(){\"true\"==$(this).attr(\"data-check\")?($(this).attr(\"data-check\",\"false\"),$(this).find(\"input[type='checkbox']\").removeAttr(\"checked\")):($(this).attr(\"data-check\",\"true\"),$(this).find(\"input[type='checkbox']\").prop(\"checked\",!0));let e=!0;$(this).parents(\".monthBox\").find(\".day\").each((function(t,n){\"true\"==$(n).attr(\"data-check\")||(e=!1)})),e?($(this).parents(\".monthBox\").find(\".month\").attr(\"data-check\",\"true\"),$(this).parents(\".monthBox\").find(\".month input[type='checkbox']\").prop(\"checked\",!0)):($(this).parents(\".monthBox\").find(\".month\").attr(\"data-check\",\"false\"),$(this).parents(\".monthBox\").find(\".month input[type='checkbox']\").removeAttr(\"checked\"));let t=!0;$(this).parents(\".yearBox\").find(\".day\").each((function(e,n){\"true\"==$(n).attr(\"data-check\")||(t=!1)})),t?($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"true\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").prop(\"checked\",!0)):($(this).parents(\".yearBox\").find(\".year\").attr(\"data-check\",\"false\"),$(this).parents(\".yearBox\").find(\".year input[type='checkbox']\").removeAttr(\"checked\"))})),$(document).off(\"click.filterYearDropdown\").on(\"click.filterYearDropdown\",\"#luckysheet-filter-byvalue-select .yearBox .fa-caret-right\",(function(e){let t=$(this).parents(\".luckysheet-mousedown-cancel\");t.hasClass(\"year\")&&$(this).parents(\".yearBox\").find(\".monthList\").slideToggle(),t.hasClass(\"month\")&&$(this).parents(\".monthBox\").find(\".dayList\").slideToggle(),e.stopPropagation()})),$(\"#luckysheet-filter-byvalue-btn-all\").click((function(){$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").prop(\"checked\",!0),$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"true\")})),$(\"#luckysheet-filter-byvalue-btn-clear\").click((function(){$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").removeAttr(\"checked\"),$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"false\")})),$(\"#luckysheet-filter-byvalue-btn-contra\").click((function(){$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").each((function(e,t){$(t).is(\":checked\")?($(t).removeAttr(\"checked\"),$(t).parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"false\")):($(t).prop(\"checked\",!0),$(t).parents(\".luckysheet-mousedown-cancel\").attr(\"data-check\",\"true\"))})),$(\"#luckysheet-filter-byvalue-select .ListBox .monthBox\").each((function(e,t){let n=!0;$(t).find(\".day input[type='checkbox']\").each((function(e,t){$(t).is(\":checked\")||(n=!1)})),n?($(t).find(\".month input[type='checkbox']\").prop(\"checked\",!0),$(t).attr(\"data-check\",\"true\")):($(t).find(\".month input[type='checkbox']\").removeAttr(\"checked\"),$(t).attr(\"data-check\",\"false\"))})),$(\"#luckysheet-filter-byvalue-select .ListBox .yearBox\").each((function(e,t){let n=!0;$(t).find(\".day input[type='checkbox']\").each((function(e,t){$(t).is(\":checked\")||(n=!1)})),n?($(t).find(\".year input[type='checkbox']\").prop(\"checked\",!0),$(t).attr(\"data-check\",\"true\")):($(t).find(\".year input[type='checkbox']\").removeAttr(\"checked\"),$(t).attr(\"data-check\",\"false\"))}))})),$(\"#luckysheet-filter-initial\").click((function(){if(!Ql(t.currentSheetIndex,\"filter\"))return;$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").hide().find(\"input\").val(),$(\"#luckysheet-filter-selected span\").data(\"type\",\"0\").data(\"type\",null).text(a.conditionNone);let e={type:\"datachangeAll_filter_clear\"};e.sheetIndex=t.currentSheetIndex,e.config=$.extend(!0,{},t.config),t.config.rowhidden={},e.curconfig=$.extend(!0,{},t.config),e.filter_save=$.extend(!0,{},t.luckysheet_filter_save);let n=[];$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").each((function(){let e=$(this),t=e.hasClass(\"luckysheet-filter-options-active\"),a=Ka.parseJsonParm(e.data(\"rowhidden\")),l=Ka.parseJsonParm(e.data(\"caljs\"));n.push({optionstate:t,rowhidden:a,caljs:l,str:e.data(\"str\"),edr:e.data(\"edr\"),cindex:e.data(\"cindex\"),stc:e.data(\"stc\"),edc:e.data(\"edc\")})})),e.optiongroups=n,t.jfundo.length=0,t.jfredo.push(e),$(\"#luckysheet-filter-selected-sheet\"+t.currentSheetIndex+\", #luckysheet-filter-options-sheet\"+t.currentSheetIndex).remove(),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide(),t.luckysheetfile[Mt(t.currentSheetIndex)].filter=null,t.luckysheetfile[Mt(t.currentSheetIndex)].filter_select=null,yo.saveParam(\"fsc\",t.currentSheetIndex,null),t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,{},{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length)})),$(\"#luckysheet-filter-byvalue-input\").on(\"input propertychange\",(function(){let e=$(this).val().toString();$(\"#luckysheet-filter-byvalue-select .ListBox .luckysheet-mousedown-cancel\").show(),\"\"!=e&&$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").each((function(t,n){if($(n).closest(\".day\").length>0){let t=$(n).siblings(\"label\").text().toString(),a=$(n).closest(\".monthBox\").find(\".month label\").text().toString();-1==($(n).closest(\".yearBox\").find(\".year label\").text().toString()+\"-\"+a+\"-\"+t).indexOf(e)&&($(n).closest(\".day\").hide(),0==$(n).closest(\".dayList\").find(\".day:visible\").length&&$(n).closest(\".monthBox\").find(\".month\").hide(),0==$(n).closest(\".monthList\").find(\".day:visible\").length&&$(n).closest(\".yearBox\").find(\".year\").hide())}$(n).closest(\".textBox\").length>0&&-1==$(n).siblings(\"label\").text().toString().indexOf(e)&&$(n).parents(\".textBox\").hide()}))})),$(\"#luckysheet-filter-cancel\").click((function(){$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide()})),$(\"#luckysheet-filter-confirm\").click((function(){let e=$(\"#luckysheet-filter-menu\"),n=e.data(\"str\"),l=e.data(\"edr\"),r=e.data(\"cindex\"),o=e.data(\"stc\"),i=e.data(\"edc\"),s={};$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").not($(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").eq(r-o).get(0)).each((function(){let e=$(this).data(\"rowhidden\");if(\"\"==e)return!0;e=JSON.parse(e.replace(/\\'/g,'\"'));for(let t in e)s[t]=0}));let c={},u={},d={};if($(\"#luckysheet-filter-bycondition\").next().is(\":visible\")&&$(\"#luckysheet-filter-byvalue\").next().is(\":hidden\")&&\"null\"!=$(\"#luckysheet-filter-selected span\").data(\"value\")){let e=$(\"#luckysheet-filter-selected span\"),a=e.data(\"type\"),o=e.data(\"value\");if(d.value=o,d.text=e.text(),\"0\"==a)d.type=\"0\";else if(\"2\"==a){let e=$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input2 input\");d.type=\"2\",d.value1=e.eq(0).val(),d.value2=e.eq(1).val()}else d.type=\"1\",d.value1=$(\"#luckysheet-filter-menu .luckysheet-filter-selected-input\").eq(0).find(\"input\").val();for(let e=n+1;e<=l;e++){if(e in s||null==t.flowdata[e])continue;let n=t.flowdata[e][r];if(\"cellnull\"==o)null!=n&&!_(n.v)&&(u[e]=0);else if(\"cellnonull\"==o)(null==n||_(n.v))&&(u[e]=0);else if(\"textinclude\"==o){let t=d.value1;(null==n||_(n.v)||-1==n.m.indexOf(t))&&(u[e]=0)}else if(\"textnotinclude\"==o){let t=d.value1;null==n||_(n.v)||n.m.indexOf(t)>-1&&(u[e]=0)}else if(\"textstart\"==o){let t=d.value1,a=t.length;(null==n||_(n.v)||n.m.substr(0,a)!=t)&&(u[e]=0)}else if(\"textend\"==o){let t=d.value1,a=t.length;(null==n||_(n.v)||a>n.m.length||n.m.substr(n.m.length-a,a)!=t)&&(u[e]=0)}else if(\"textequal\"==o){let t=d.value1;(null==n||_(n.v)||n.m!=t)&&(u[e]=0)}else if(\"dateequal\"==o){let t=_a(d.value1)[2];null==n||_(n.v)?u[e]=0:null!=n.ct&&\"d\"==n.ct.t?parseInt(n.v)!=t&&(u[e]=0):u[e]=0}else if(\"datelessthan\"==o){let t=_a(d.value1)[2];null==n||_(n.v)?u[e]=0:null!=n.ct&&\"d\"==n.ct.t?parseInt(n.v)>=t&&(u[e]=0):u[e]=0}else if(\"datemorethan\"==o){let t=_a(d.value1)[2];null==n||_(n.v)?u[e]=0:null!=n.ct&&\"d\"==n.ct.t?parseInt(n.v)<=t&&(u[e]=0):u[e]=0}else if(\"morethan\"==o){let t=parseFloat(d.value1);null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v<=t&&(u[e]=0):u[e]=0}else if(\"moreequalthan\"==o){let t=parseFloat(d.value1);null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v<t&&(u[e]=0):u[e]=0}else if(\"lessthan\"==o){let t=parseFloat(d.value1);null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v>=t&&(u[e]=0):u[e]=0}else if(\"lessequalthan\"==o){let t=parseFloat(d.value1);null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v>t&&(u[e]=0):u[e]=0}else if(\"equal\"==o){let t=parseFloat(d.value1);null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v!=t&&(u[e]=0):u[e]=0}else if(\"noequal\"==o){let t=parseFloat(d.value1);null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v==t&&(u[e]=0):u[e]=0}else if(\"include\"==o){let t,a,l=parseFloat(d.value1),r=parseFloat(d.value2);l<r?(t=l,a=r):(a=l,t=r),null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?(n.v<t||n.v>a)&&(u[e]=0):u[e]=0}else if(\"noinclude\"==o){let t,a,l=parseFloat(d.value1),r=parseFloat(d.value2);l<r?(t=l,a=r):(a=l,t=r),null==n||_(n.v)?u[e]=0:null!=n.ct&&\"n\"==n.ct.t?n.v>=t&&n.v<=a&&(u[e]=0):u[e]=0}}}else{$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']\").each((function(e,t){if($(t).is(\":visible\")&&$(t).is(\":checked\"))return!0;if($(t).closest(\".day\").length>0){let e=$(t).siblings(\"label\").text();Number(e)<10&&(e=\"0\"+Number(e));let n=$(t).closest(\".monthBox\").find(\".month label\").text().replace(a.filiterMonthText,\"\");Number(n)<10&&(n=\"0\"+Number(n));let l=$(t).closest(\".yearBox\").find(\".year label\").text().replace(a.filiterYearText,\"\"),r=a.filterDateFormatTip+\"#$$$#\"+l+\"-\"+n+\"-\"+e;c[r]=\"1\"}if($(t).closest(\".textBox\").length>0){let e=$(t).closest(\".textBox\").data(\"filter\");c[e]=\"1\"}}));for(let e=n+1;e<=l;e++){if(e in s||null==t.flowdata[e])continue;let n,l=t.flowdata[e][r];if((null==l||_(l.v))&&(null==l?void 0:l.mc)){let{r:e,c:a}=l.mc,r=t.flowdata[e][a];n=r.v+\"#$$$#\"+r.m}else if(null==l||_(l.v))n=\"null#$$$#null\";else if(null!=l.ct&&\"d\"==l.ct.t){let e=Ca(\"YYYY-MM-DD\",l.v);n=a.filterDateFormatTip+\"#$$$#\"+e}else n=l.v+\"#$$$#\"+l.m;n in c&&(u[e]=0)}}let h=$(\"#luckysheet-filter-options-sheet\"+t.currentSheetIndex+\" .luckysheet-filter-options\").eq(r-o),f=$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']:visible:checked\").length<$(\"#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']:visible\").length||$(\"#luckysheet-filter-byvalue-input\").val().length>0||$(\"#luckysheet-filter-bycondition\").next().is(\":visible\")&&$(\"#luckysheet-filter-byvalue\").next().is(\":hidden\")&&\"null\"!=$(\"#luckysheet-filter-selected span\").data(\"value\"),m=$.extend(!0,s,u),p=Ka.parseJsonParm(h.data(\"rowhidden\"));el(h,f,u,d,!0,n,l,r,o,i);let g=$.extend(!0,{},t.config);if(g.rowhidden=m,t.clearjfundo){let e={type:\"datachangeAll_filter\"};e.sheetIndex=t.currentSheetIndex,e.config=$.extend(!0,{},t.config),e.curconfig=g,e.optionstate=f,e.optionsindex=r-o,e.rowhidden=$.extend(!0,{},u),e.rowhidenPre=$.extend(!0,{},p),null!=d&&(e.caljs=d),t.jfundo.length=0,t.jfredo.push(e)}t.config=g,t.luckysheetfile[Mt(t.currentSheetIndex)].config=t.config,yo.saveParam(\"cg\",t.currentSheetIndex,g.rowhidden,{k:\"rowhidden\"}),co(t.flowdata.length,t.flowdata[0].length),$(\"#luckysheet-filter-menu, #luckysheet-filter-submenu\").hide(),$o()}))}(),function(){let e=X().drag;$(\"#luckysheet-copy-json-head\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0!=a.length){if(1==a.length){let e={};for(let t=0;t<a[0].length;t++)e[Vn(0,t,a)]=\"\";l.push(e)}else for(let e=1;e<a.length;e++){let t={};for(let n=0;n<a[0].length;n++)null==Vn(0,n,a)?t[\"\"]=Vn(e,n,a):t[Vn(0,n,a)]=Vn(e,n,a);l.push(t)}wo.copybyformat(n,JSON.stringify(l))}})),$(\"#luckysheet-copy-json-nohead\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0==a.length)return;let r=t.luckysheet_select_save[0].column[0];for(let e=0;e<a.length;e++){let t={};for(let n=0;n<a[0].length;n++)t[id(n+r)]=Vn(e,n,a);l.push(t)}wo.copybyformat(n,JSON.stringify(l))})),$(\"#luckysheet-copy-array1\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0!=a.length){for(let e=0;e<a.length;e++)for(let t=0;t<a[0].length;t++)l.push(Vn(e,t,a));wo.copybyformat(n,JSON.stringify(l))}})),$(\"#luckysheet-copy-array2\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0!=a.length){for(let e=0;e<a.length;e++){let t=[];for(let n=0;n<a[0].length;n++)t.push(Vn(e,n,a));l.push(t)}wo.copybyformat(n,JSON.stringify(l))}})),$(\"#luckysheet-copy-arraymore-confirm\").click((function(n){if(\"INPUT\"===n.target.nodeName)return;if($(\"body .luckysheet-cols-menu\").hide(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0==a.length)return;for(let e=0;e<a.length;e++)for(let t=0;t<a[0].length;t++)l.push(a[e][t]);let r=$(\"#luckysheet-copy-arraymore-row\").val(),o=$(\"#luckysheet-copy-arraymore-col\").val();if(\"\"==r&&\"\"==o)return wo.copybyformat(n,JSON.stringify(l)),void $(\"body .luckysheet-cols-menu\").hide();if(\"\"==r?r=1:(r=parseInt(r),null==r&&(r=1)),\"\"==o?o=1:(o=parseInt(o),null==o&&(o=1)),\"NaN\"==r.toString()||\"NaN\"==o.toString())return void(I()?alert(e.inputCorrect):vo.info(e.inputCorrect,\"\"));if(r<1||o<1)return void(I()?alert(e.notLessOne):vo.info(e.notLessOne,\"\"));let i=l.length,s=0,c=[];for(let e=0;e<r;e++){let e=[];for(let t=0;t<o;t++)if(e.push(l[s++]),s>=i)return wo.copybyformat(n,JSON.stringify(c)),void $(\"body .luckysheet-cols-menu\").hide();c.push(e)}wo.copybyformat(n,JSON.stringify(c))})),$(\"#luckysheet-copy-diagonal\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0==a.length)return;let r=a[0].length;for(let e=0;e<a.length&&!(e>=r);e++)l.push(a[e][e]);wo.copybyformat(n,JSON.stringify(l))})),$(\"#luckysheet-copy-antidiagonal\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0==a.length)return;let r=a[0].length;for(let e=0;e<a.length&&!(e>=r);e++)l.push(a[e][r-e-1]);wo.copybyformat(n,JSON.stringify(l))})),$(\"#luckysheet-copy-diagonaloffset\").click((function(n){if(\"INPUT\"===n.target.nodeName)return;if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0==a.length)return;let r=a[0].length,o=parseInt($(\"#luckysheet-copy-diagonaloffset-value\").val());if(\"NaN\"!=o.toString())if(o<0)I()?alert(e.offsetColumnLessZero):vo.info(e.offsetColumnLessZero,\"\");else{null==o&&(o=1);for(let e=0;e<a.length&&!(e+o>=r);e++)l.push(a[e][e+o]);wo.copybyformat(n,JSON.stringify(l))}else I()?alert(e.inputCorrect):vo.info(e.inputCorrect,\"\")})),$(\"#luckysheet-copy-boolvalue\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));if(null!=t.config.merge){let n=!1;for(let e=0;e<t.luckysheet_select_save.length;e++){let a=t.luckysheet_select_save[e].row[0],l=t.luckysheet_select_save[e].row[1],r=t.luckysheet_select_save[e].column[0],o=t.luckysheet_select_save[e].column[1];if(n=A(t.config,a,l,r,o),n)break}if(n)return void(I()?alert(e.noPartMerge):vo.info(e.noPartMerge,\"\"))}let a=Ln(t.luckysheet_select_save[0]),l=[];if(0!=a.length){for(let e=0;e<a.length;e++){let t=[];for(let n=0;n<a[0].length;n++){let l,r=!1;l=\"object\"==ad(a[e][n])?a[e][n].v:a[e][n],null==l||\"\"==l?r=!1:(l=parseInt(l),r=null==l||l>0),t.push(r)}l.push(t)}wo.copybyformat(n,JSON.stringify(l))}})),$(\"#luckysheet-matrix-turn-up\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[];for(let e=a.length-1;e>=0;e--){let t=[];for(let n=0;n<a[0].length;n++){let l=\"\";null!=a[e]&&null!=a[e][n]&&(l=a[e][n]),t.push(l)}l.push(t)}mn.controlHandler(l)})),$(\"#luckysheet-matrix-turn-left\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[];for(let e=0;e<a.length;e++){let t=[];for(let n=a[0].length-1;n>=0;n--){let l=\"\";null!=a[e]&&null!=a[e][n]&&(l=a[e][n]),t.push(l)}l.push(t)}mn.controlHandler(l)})),$(\"#luckysheet-matrix-turn-cw\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[];for(let e=0;e<a[0].length;e++){let t=[];for(let n=a.length-1;n>=0;n--){let l=\"\";null!=a[n]&&null!=a[n][e]&&(l=a[n][e]),t.push(l)}l.push(t)}mn.controlHandlerD(l)})),$(\"#luckysheet-matrix-turn-anticw\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[];for(let e=a[0].length-1;e>=0;e--){let t=[];for(let n=0;n<a.length;n++){let l=\"\";null!=a[n]&&null!=a[n][e]&&(l=a[n][e]),t.push(l)}l.push(t)}mn.controlHandlerD(l)})),$(\"#luckysheet-matrix-turn-trans\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[];for(let e=0;e<a[0].length;e++){let t=[];for(let n=0;n<a.length;n++){let l=\"\";null!=a[n]&&null!=a[n][e]&&(l=a[n][e]),t.push(l)}l.push(t)}mn.controlHandlerD(l)}));let n=function(e,t){if(0==e)return 0;let n,a;for(n=e,a=(t-1)*n/t+e/(Math.pow(n,t-1)*t);Math.abs(a-n)>1e-6;)n=a,a=(t-1)*n/t+e/(Math.pow(n,t-1)*t);return a};$(\"#luckysheet-matrix-cal-confirm\").click((function(a){if(\"INPUT\"===a.target.nodeName||\"SELECT\"===a.target.nodeName)return;if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let l=Ln(t.luckysheet_select_save[0]);if(0==l.length)return;let r=$(\"#luckysheet-matrix-cal-type\").val(),o=parseInt($(\"#luckysheet-matrix-cal-value\").val());if(\"NaN\"==o.toString())return void(I()?alert(e.inputCorrect):vo.info(e.inputCorrect,\"\"));null==o&&(o=2);let i=[];for(let e=0;e<l.length;e++){let t=[];for(let a=0;a<l[0].length;a++){let i=\"\";null!=l[e]&&null!=l[e][a]&&(i=l[e][a],null!=parseInt(i)&&null!=l[e][a].ct&&\"n\"==l[e][a].ct.t&&(\"minus\"==r?i.v=i.v-o:\"multiply\"==r?i.v=i.v*o:\"divided\"==r?i.v=md(i.v/o,4):\"power\"==r?i.v=Math.pow(i.v,o):\"root\"==r?2==o?i.v=md(Math.sqrt(i.v),4):3==o&&Math.cbrt?i.v=md(Math.cbrt(i.v),4):i.v=md(n(i.v,o),4):i.v=\"log\"==r?md(1e4*Math.log(i.v)/Math.log(Math.abs(o)),4):i.v+o,null==i.v?i.m=\"\":i.m=i.v.toString())),t.push(i)}i.push(t)}mn.controlHandler(i)})),$(\"#luckysheet-matrix-delezero-row\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[],r=a[0].length;for(let e=0;e<a.length;e++){let t=[],n=!0,o=!0;for(let l=0;l<r;l++){let r=\"\";if(null!=a[e]&&null!=a[e][l]){if(r=a[e][l],(\"0\"==r.v||0==r.v)&&n)continue;n=!1}t.push(r)}let i=[];if(t.length==r)i=t;else{for(let e=t.length-1;e>=0;e--){let n=\"\";if(null!=t[e]){if(n=t[e],(\"0\"==n.v||0==n.v)&&o)continue;o=!1}i.unshift(n)}let e=r-i.length;for(let t=0;t<e;t++)i.push(\"\")}l.push(i)}mn.controlHandler(l)})),$(\"#luckysheet-matrix-delezero-column\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[],r=a.length,o=a[0].length;for(let e=0;e<o;e++){let t=[],n=!0,o=!0;for(let l=0;l<r;l++){let r=\"\";if(null!=a[l]&&null!=a[l][e]){if(r=a[l][e],(\"0\"==r.v||0==r.v)&&n)continue;n=!1}t.push(r)}let i=[];if(t.length==r)i=t;else{for(let e=t.length-1;e>=0;e--){let n=\"\";if(null!=t[e]){if(n=t[e],(\"0\"==n.v||0==n.v)&&o)continue;o=!1}i.unshift(n)}let e=r-i.length;for(let t=0;t<e;t++)i.push(\"\")}l.push(i)}let i=[];for(let e=0;e<l[0].length;e++){let t=[];for(let n=0;n<l.length;n++){let a=\"\";null!=l[n]&&null!=l[n][e]&&(a=l[n][e]),t.push(a)}i.push(t)}mn.controlHandler(i)})),$(\"#luckysheet-matrix-delerpt-row\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[],r=a[0].length;for(let e=0;e<a.length;e++){let t=[],n={};for(let t=0;t<r;t++){let l=null;null!=a[e]&&null!=a[e][t]&&(l=a[e][t],l.v in n||(n[l.v]=[]),n[l.v].push(l))}for(let l=0;l<r;l++){let r=null;null!=a[e]&&null!=a[e][l]&&(r=a[e][l],1==n[r.v].length&&t.push(r))}let o=r-t.length;for(let e=0;e<o;e++)t.push(null);l.push(t)}mn.controlHandler(l)})),$(\"#luckysheet-matrix-delerpt-column\").click((function(n){if($(\"body .luckysheet-cols-menu\").hide(),fd(),t.luckysheet_select_save.length>1)return void(I()?alert(e.noMulti):vo.info(e.noMulti,\"\"));let a=Ln(t.luckysheet_select_save[0]);if(0==a.length)return;let l=[],r=a.length,o=a[0].length;for(let e=0;e<o;e++){let t=[],n={};for(let t=0;t<r;t++){let l=null;null!=a[t]&&null!=a[t][e]&&(l=a[t][e],l.v in n||(n[l.v]=[]),n[l.v].push(l))}for(let l=0;l<r;l++){let r=null;null!=a[l]&&null!=a[l][e]&&(r=a[l][e],1==n[r.v].length&&t.push(r))}a1=t;let o=r-a1.length;for(let e=0;e<o;e++)a1.push(null);l.push(a1)}let i=[];for(let e=0;e<l[0].length;e++){let t=[];for(let n=0;n<l.length;n++){let a=null;null!=l[n]&&null!=l[n][e]&&(a=l[n][e]),t.push(a)}i.push(t)}mn.controlHandler(i)}))}(),Od(),function(){let e=X().formula;$(\"#luckysheet-functionbox-cell\").focus((function(){if(!I()&&t.luckysheet_select_save.length>0){let e=t.luckysheet_select_save[t.luckysheet_select_save.length-1];ws(e.row_focus,e.column_focus,t.flowdata,null,!0),wi.rangeResizeTo=$(\"#luckysheet-functionbox-cell\")}})).keydown((function(e){if(I())return;e.ctrlKey,e.altKey,e.shiftKey;let n=e.keyCode,a=$(\"#luckysheet-input-box\");if(n==It.ENTER&&parseInt(a.css(\"top\"))>0)$(\"#luckysheet-formula-search-c\").is(\":visible\")&&null!=wi.searchFunctionCell?wi.searchFunctionEnter($(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\")):(wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),t.luckysheet_select_save=[{row:[t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[0]],column:[t.luckysheetCellUpdate[1],t.luckysheetCellUpdate[1]],row_focus:t.luckysheetCellUpdate[0],column_focus:t.luckysheetCellUpdate[1]}],Ba(\"down\",1,\"rangeOfSelect\"),$(\"#luckysheet-rich-text-editor\").focus()),e.preventDefault();else if(n==It.ESC&&parseInt(a.css(\"top\"))>0)wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\"),$(\"#luckysheet-rich-text-editor\").focus(),e.preventDefault();else if(n==It.F4&&parseInt(a.css(\"top\"))>0)wi.setfreezonFuc(e),e.preventDefault();else if(n==It.UP&&parseInt(a.css(\"top\"))>0){if($(\"#luckysheet-formula-search-c\").is(\":visible\")){let t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\").prev();0==t.length&&(t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").last()),$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").removeClass(\"luckysheet-formula-search-item-active\"),t.addClass(\"luckysheet-formula-search-item-active\"),e.preventDefault()}}else if(n==It.DOWN&&parseInt(a.css(\"top\"))>0){if($(\"#luckysheet-formula-search-c\").is(\":visible\")){let t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item-active\").next();0==t.length&&(t=$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").first()),$(\"#luckysheet-formula-search-c\").find(\".luckysheet-formula-search-item\").removeClass(\"luckysheet-formula-search-item-active\"),t.addClass(\"luckysheet-formula-search-item-active\"),e.preventDefault()}}else n==It.LEFT&&parseInt(a.css(\"top\"))>0||n==It.RIGHT&&parseInt(a.css(\"top\"))>0?wi.rangeHightlightselected($(\"#luckysheet-functionbox-cell\")):(!(n>=112&&n<=123||n<=46||144==n||108==n||e.ctrlKey||e.altKey||e.shiftKey&&(37==n||38==n||39==n||40==n))||8==n||32==n||46==n||e.ctrlKey&&86==n)&&wi.functionInputHanddler($(\"#luckysheet-rich-text-editor\"),$(\"#luckysheet-functionbox-cell\"),n)})).click((function(){I()||wi.rangeHightlightselected($(\"#luckysheet-functionbox-cell\"))})),$(\"#luckysheet-wa-functionbox-cancel\").click((function(){!$(this).hasClass(\"luckysheet-wa-calculate-active\")||($(\"#luckysheet-search-formula-parm\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm\").hide(),$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm-select\").hide(),wi.dontupdate(),Ba(\"down\",0,\"rangeOfSelect\"))})),$(\"#luckysheet-wa-functionbox-confirm\").click((function(){!$(this).hasClass(\"luckysheet-wa-calculate-active\")||($(\"#luckysheet-search-formula-parm\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm\").hide(),$(\"#luckysheet-search-formula-parm-select\").is(\":visible\")&&$(\"#luckysheet-search-formula-parm-select\").hide(),wi.updatecell(t.luckysheetCellUpdate[0],t.luckysheetCellUpdate[1]),Ba(\"down\",0,\"rangeOfSelect\"))})),$(\"#luckysheet-wa-functionbox-fx\").click((function(){if(0==t.luckysheet_select_save.length)return void(I()?alert(e.tipSelectCell):vo.info(e.tipSelectCell,\"\"));let n=t.luckysheet_select_save[t.luckysheet_select_save.length-1],a=n.row_focus,l=n.column_focus;ws(a,l,t.flowdata);let r=t.flowdata[a][l];if(null!=r&&null!=r.f){let e=wi.getfunctionParam(r.f);null!=e.fn?Wu.formulaParmDialog(e.fn,e.param):Wu.formulaListDialog()}else $(\"#luckysheet-rich-text-editor\").html('<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span>'),$(\"#luckysheet-functionbox-cell\").html($(\"#luckysheet-rich-text-editor\").html()),Wu.formulaListDialog();Wu.init()})),$(\"#luckysheet-formula-functionrange\").on(\"mousedown\",\".luckysheet-copy\",(function(e){wi.rangeMove=!0,t.luckysheet_scroll_status=!0,wi.rangeMoveObj=$(this).parent(),wi.rangeMoveIndex=$(this).parent().attr(\"rangeindex\");let n=ta(e.pageX,e.pageY),a=n[0]+$(\"#luckysheet-cell-main\").scrollLeft(),l=n[1]+$(\"#luckysheet-cell-main\").scrollTop();$(\"#luckysheet-formula-functionrange-highlight-\"+wi.rangeMoveIndex).find(\".luckysheet-selection-copy-hc\").css(\"opacity\",.13);let r=$(this).data(\"type\");\"top\"==r?l+=3:\"right\"==r?a-=3:\"bottom\"==r?l-=3:\"left\"==r&&(a+=3);let o=Jn(l)[2],i=ea(a)[2];wi.rangeMovexy=[o,i],$(\"#luckysheet-sheettable\").css(\"cursor\",\"move\"),e.stopPropagation()})),$(\"#luckysheet-formula-functionrange\").on(\"mousedown\",\".luckysheet-highlight\",(function(e){wi.rangeResize=$(this).data(\"type\"),wi.rangeResizeIndex=$(this).parent().attr(\"rangeindex\");let n=ta(e.pageX,e.pageY),a=$(\"#luckysheet-cell-main\").scrollLeft(),l=$(\"#luckysheet-cell-main\").scrollTop(),r=n[0]+a,o=n[1]+l;wi.rangeResizeObj=$(this).parent(),$(\"#luckysheet-formula-functionrange-highlight-\"+wi.rangeResizeIndex).find(\".luckysheet-selection-copy-hc\").css(\"opacity\",.13),\"lt\"==wi.rangeResize?(r+=3,o+=3):\"lb\"==wi.rangeResize?(r+=3,o-=3):\"rt\"==wi.rangeResize?(r-=3,o+=3):\"rb\"==wi.rangeResize&&(r-=3,o-=3);let i=Jn(o),s=i[1],c=i[0],u=(i[2],ea(r)),d=u[1],h=u[0],f=(u[2],wi.rangeResizeObj.position());wi.rangeResizexy=[h,c,wi.rangeResizeObj.width(),wi.rangeResizeObj.height(),f.left+a,f.top+l,d,s],wi.rangeResizeWinH=$(\"#luckysheet-cell-main\")[0].scrollHeight,wi.rangeResizeWinW=$(\"#luckysheet-cell-main\")[0].scrollWidth,t.luckysheet_scroll_status=!0,e.stopPropagation()}))}(),Wd(),Kd(),function(){let e=X();$(\"#luckysheetorderbyasc, #luckysheetorderbyasc_t\").mousedown((function(e){$o(e),pr(t.orderbyindex,!0),Pu()})),$(\"#luckysheetorderbydesc, #luckysheetorderbydesc_t\").click((function(e){$o(e),pr(t.orderbyindex,!1),Pu()}));let n=!0;$(\"#luckysheetorderby\").click((function(){if(!Ql(t.currentSheetIndex,\"sort\"))return;$(\"body .luckysheet-cols-menu\").hide();let a=e.sort;if(t.luckysheet_select_save.length>1)return void(I()?alert(a.noRangeError):vo.info(a.noRangeError,\"\"));let l=t.luckysheet_select_save[0],r=l.row[0],o=l.row[1],i=l.column[0],s=l.column[1];if(n){n=!1;let l=`<div style=\"overflow: hidden;\" class=\"luckysheet-sort-modal\"><div><label><input type=\"checkbox\" id=\"luckysheet-sort-haveheader\"/><span>${a.hasTitle}</span></label></div><div style=\"overflow-y:auto;\" id=\"luckysheet-sort-dialog-tablec\"><table data-itemcount=\"0\" cellspacing=\"0\"> <tr><td>${a.hasTitle} <select name=\"sort_0\"> <option value=\"1\">1</option> <option value=\"2\">2</option> <option value=\"3\">3</option> <option value=\"4\">4</option> </select> </td> <td> <div><label><input value=\"asc\" type=\"radio\" checked=\"checked\" name=\"sort_0\"><span>${a.asc}A-Z</span></label></div> <div><label><input value=\"desc\" type=\"radio\" name=\"sort_0\"><span>${a.desc}Z-A</span></label></div></td></tr></table></div><div style=\"background: #e5e5e5;border-top: 1px solid #f5f5f5; height: 1px; width: 100%;margin:2px 0px;margin-bottom:10px;\"></div> <div> <span style=\"font-weight: bold; text-decoration: underline;text-align:center;color: blue;cursor: pointer;\" class=\"luckysheet-sort-dialog-additem\">+ ${a.addOthers}</span> </div> </div>`;$(\"body\").append(nd(kt,{id:\"luckysheet-sort-dialog\",addclass:\"\",title:e.sort.sortTitle,content:l,botton:`<button id=\"luckysheet-sort-modal-confirm\" class=\"btn btn-primary\">${a.confirm}</button><button class=\"btn btn-default luckysheet-model-close-btn\">${a.close}</button>`})),$(\"#luckysheet-sort-dialog .luckysheet-sort-dialog-additem\").click((function(){let e=t.luckysheet_select_save[0],n=e.row[0],l=(e.row[1],e.column[0]),r=e.column[1],o=\"\",i=$(\"#luckysheet-sort-dialog table\").data(\"itemcount\")+1,s=$(\"#luckysheet-sort-haveheader\").is(\":checked\");for(let e=l;e<=r;e++)if(s){let r=Vn(n,e,t.flowdata,\"m\");null==r&&(r=a.columnOperation+(e-l+1)),o+='<option value=\"'+e+'\">'+r+\"</option>\"}else o+='<option value=\"'+e+'\">'+id(e)+\"</option>\";$(\"#luckysheet-sort-dialog table\").append(`\\n                    <tr class=\"luckysheet-sort-dialog-tr\">\\n                        <td><span class=\"luckysheet-sort-item-close\" onclick=\"$(this).parent().parent().remove();\"><i class=\"fa fa-times\"\\n                                    aria-hidden=\"true\"></i></span>${a.secondaryTitle} <select\\n                                name=\"sort_${i}\">${o}</select> </td>\\n                        <td>\\n                            <div><label><input value=\"asc\" type=\"radio\" checked=\"checked\"\\n                                        name=\"sort_${i}\"><span>${a.asc}A-Z</span></label></div>\\n                            <div><label><input value=\"desc\" type=\"radio\" name=\"sort_${i}\"><span>${a.desc}Z-A</span></label>\\n                            </div>\\n                        </td>\\n                    </tr>\\n                `),$(\"#luckysheet-sort-dialog table\").data(\"itemcount\",i)})),$(\"#luckysheet-sort-haveheader\").change((function(){let e=t.luckysheet_select_save[0],n=e.row[0],l=(e.row[1],e.column[0]),r=e.column[1],o=$(this).is(\":checked\"),i=\"\";for(let e=l;e<=r;e++)if(o){let r=Vn(n,e,t.flowdata,\"m\");null==r&&(r=a.columnOperation+(e-l+1)),i+='<option value=\"'+e+'\">'+r+\"</option>\"}else i+='<option value=\"'+e+'\">'+id(e)+\"</option>\";$(\"#luckysheet-sort-dialog tr select\").each((function(){$(this).html(i)}))})),$(\"#luckysheet-sort-modal-confirm\").click((function(){if(t.luckysheet_select_save.length>1)return void(I()?alert(a.noRangeError):vo.info(a.noRangeError,\"\"));let e,n=mn.deepCopyFlowData(t.flowdata),l=t.luckysheet_select_save[0],r=l.row[0],o=l.row[1],i=l.column[0],s=l.column[1];e=$(\"#luckysheet-sort-haveheader\").is(\":checked\")?r+1:r;let c=!1,u=[];for(let t=e;t<=o;t++){let e=[];for(let a=i;a<=s;a++){if(null!=n[t][a]&&null!=n[t][a].mc){c=!0;break}e.push(n[t][a])}u.push(e)}if(c)return void(I()?alert(a.mergeError):vo.info(a.mergeError,\"\"));$($(\"#luckysheet-sort-dialog table tr\").toArray().reverse()).each((function(){let e=$(this).find(\"select\").val(),t=$(this).find(\"input:radio:checked\").val();e-=i,t=\"asc\"==t,u=hr([].concat(u),e,t)}));for(let t=e;t<=o;t++)for(let a=i;a<=s;a++)n[t][a]=u[t-e][a-i];let d={};if(null!=t.config.rowlen){let a=$.extend(!0,{},t.config);a=aa(n,e,o,a),d={cfg:a,RowlChange:!0}}ao(n,[{row:[e,o],column:[i,s]}],d),$(\"#luckysheet-sort-dialog\").hide(),$(\"#luckysheet-modal-dialog-mask\").hide()}))}let c=\"\";for(let e=i;e<=s;e++)c+='<option value=\"'+e+'\">'+id(e)+\"</option>\";$(\"#luckysheet-sort-dialog select\").html(c),$(\"#luckysheet-sort-dialog .luckysheet-sort-dialog-tr\").remove(),$(\"#luckysheet-sort-haveheader\").prop(\"checked\",!1),$(\"#luckysheet-sort-dialog input:radio:first\").prop(\"checked\",\"checked\"),$(\"#luckysheet-sort-dialog .luckysheet-modal-dialog-title-text\").html(a.sortRangeTitle+\"<span>\"+id(i)+(r+1)+\"</span>\"+a.sortRangeTitleTo+\"<span>\"+id(s)+(o+1)+\"</span>\");let u=$(\"#luckysheet-sort-dialog\"),d=u.outerHeight(),h=u.outerWidth(),f=$(window).width(),m=$(window).height(),p=$(document).scrollLeft(),g=$(document).scrollTop();$(\"#luckysheet-sort-dialog-tablec\").css(\"max-height\",(m-d)/2),$(\"#luckysheet-sort-dialog\").css({left:(f+p-h)/2,top:(m+g-d)/2}).show(),$(\"#luckysheet-modal-dialog-mask\").show(),r<o&&setTimeout((function(){let e=t.flowdata[r],n=t.flowdata[r+1],a=!1;for(let t=i;t<=s;t++)va(e[t])!=va(n[t])&&(a=!0);a&&$(\"#luckysheet-sort-haveheader\").prop(\"checked\",!0).change()}),10)}))}(),function(){let e=.1,n=.1;$(\"#luckysheet-zoom-minus\").click((function(){let a;a=null==t.zoomRatio?t.zoomRatio=1:Math.ceil(10*t.zoomRatio)/10,a-=e,a==t.zoomRatio&&(a-=e),a<=n&&(a=n),mi(a),yi(a)})),$(\"#luckysheet-zoom-plus\").click((function(){let n;n=null==t.zoomRatio?t.zoomRatio=1:Math.floor(10*t.zoomRatio)/10,n+=e,n==t.zoomRatio&&(n+=e),n>=4&&(n=4),mi(n),yi(n)})),$(\"#luckysheet-zoom-slider\").mousedown((function(e){let t=$(this).offset().left,n=gi(e.pageX-t);mi(n),yi(n)})),$(\"#luckysheet-zoom-cursor\").mousedown((function(e){let t=e.pageX,a=parseFloat($(\"#luckysheet-zoom-cursor\").css(\"left\"));$(\"#luckysheet-zoom-cursor\").css(\"transition\",\"none\"),$(document).off(\"mousemove.zoomCursor\").on(\"mousemove.zoomCursor\",(function(e){let l=e.pageX-t,r=a+l,o=gi(r);o>4&&(o=4,r=100),o<n&&(o=n,r=0),mi(o);let i=Math.round(100*o)+\"%\";$(\"#luckysheet-zoom-ratioText\").html(i),$(\"#luckysheet-zoom-cursor\").css(\"left\",r-4)})),$(document).off(\"mouseup.zoomCursor\").on(\"mouseup.zoomCursor\",(function(e){$(document).off(\".zoomCursor\"),$(\"#luckysheet-zoom-cursor\").css(\"transition\",\"all 0.3s\")})),e.stopPropagation()})).click((function(e){e.stopPropagation()})),$(\"#luckysheet-zoom-ratioText\").click((function(){mi(1),yi(1)})),yi(t.zoomRatio),bi=null,document.addEventListener(\"wheel\",(function(e){!e.ctrlKey||!e.deltaY||(null===bi&&(bi=t.zoomRatio||1),(bi+=e.deltaY<0?.02:-.02)>=4?bi=4:bi<n&&(bi=n),mi(bi),yi(bi),e.preventDefault(),e.stopPropagation())}),{capture:!0,passive:!1}),document.addEventListener(\"keydown\",(function(a){if(!a.ctrlKey)return;let l=!1,r=t.zoomRatio||1;\"-\"===a.key||189===a.which?(r-=e,l=!0):\"+\"===a.key||187===a.which?(r+=e,l=!0):(\"0\"===a.key||48===a.which)&&(r=1,l=!0),l&&(a.preventDefault(),r>=4?r=4:r<n&&(r=n),mi(r),yi(r))}),{capture:!0})}(),Ah()}var Ph,zh,Lh=y((()=>{q(),_d(),x(),K(),_o(),w(),_i(),zl(),Pd(),ol(),zd(),jd(),Gd(),Yd(),Jd(),Qd(),rh(),qt(),Wt(),fo(),Sh(),Et(),Yn(),Pa(),Xu(),xi(),da(),kl(),gn(),Nu(),bs(),Ph=k($h()),Dh(),pn(),pl(),Mh(),(zh=td(Is,zh={})).create=function(n){yl.destroy(),t.toJsonOptions={};for(let e in n)\"data\"!==e&&(t.toJsonOptions[e]=n[e]);let a=td(P,n),l=null==n?void 0:n.onReady,r=a.loadUrl,o=a.menu,i=a.title,s=a.container;t.container=s,t.luckysheetfile=a.data,t.defaultcolumnNum=a.column,t.defaultrowNum=a.row,t.defaultFontSize=a.defaultFontSize,t.fullscreenmode=a.fullscreenmode,t.lang=a.lang,t.allowEdit=a.allowEdit,t.limitSheetNameLength=a.limitSheetNameLength,t.defaultSheetNameMaxLength=a.defaultSheetNameMaxLength,t.fontList=a.fontList,yo.gridKey=a.gridKey,yo.loadUrl=a.loadUrl,yo.updateUrl=a.updateUrl,yo.updateImageUrl=a.updateImageUrl,yo.title=a.title,yo.loadSheetUrl=a.loadSheetUrl,yo.allowUpdate=a.allowUpdate,e.autoFormatw=a.autoFormatw,e.accuracy=a.accuracy,e.total=a.data[0].total,e.loading=a.loading,e.allowCopy=a.allowCopy,e.showtoolbar=a.showtoolbar,e.showtoolbarConfig=a.showtoolbarConfig,e.showinfobar=a.showinfobar,e.showsheetbar=a.showsheetbar,e.showsheetbarConfig=a.showsheetbarConfig,e.showstatisticBar=a.showstatisticBar,e.showstatisticBarConfig=a.showstatisticBarConfig,e.sheetFormulaBar=a.sheetFormulaBar,e.cellRightClickConfig=a.cellRightClickConfig,e.sheetRightClickConfig=a.sheetRightClickConfig,e.pointEdit=a.pointEdit,e.pointEditUpdate=a.pointEditUpdate,e.pointEditZoom=a.pointEditZoom,e.userInfo=a.userInfo,e.userMenuItem=a.userMenuItem,e.myFolderUrl=a.myFolderUrl,e.functionButton=a.functionButton,e.showConfigWindowResize=a.showConfigWindowResize,e.enableAddRow=a.enableAddRow,e.enableAddBackTop=a.enableAddBackTop,e.addRowCount=a.addRowCount,e.enablePage=a.enablePage,e.pageInfo=a.pageInfo,e.editMode=a.editMode,e.beforeCreateDom=a.beforeCreateDom,e.workbookCreateBefore=a.workbookCreateBefore,e.workbookCreateAfter=a.workbookCreateAfter,e.remoteFunction=a.remoteFunction,e.customFunctions=a.customFunctions,e.fireMousedown=a.fireMousedown,e.forceCalculation=a.forceCalculation,e.plugins=a.plugins,e.rowHeaderWidth=a.rowHeaderWidth,e.columnHeaderHeight=a.columnHeaderHeight,e.defaultColWidth=a.defaultColWidth,e.defaultRowHeight=a.defaultRowHeight,e.title=a.title,e.container=a.container,e.hook=a.hook,e.pager=a.pager,e.initShowsheetbarConfig=!1,e.imageUpdateMethodConfig=a.imageUpdateMethodConfig,\"zh\"===t.lang&&ps.localize(Ph.default.zh),t.asyncLoad.push(...e.plugins.map((e=>e.name))),function(e,t){e.length&&e.forEach((e=>{ah[e.name](t,e.config,lh)}))}(a.plugins,a),t.plugins=a.plugins,wh(a.customFunctions);let c=a.devicePixelRatio;null==c&&(c=1),t.devicePixelRatio=Math.ceil(c);let u=St(\"#\"+s);t.loadingObj=u,\"\"==r?(ki.initialjfFile(o,i),Nh()):$.post(r,{gridKey:yo.gridKey},(function(e){let n=new Function(\"return \"+e)();t.luckysheetfile=n,ki.initialjfFile(o,i),Nh(),yo.allowUpdate&&(yo.openWebSocket(),console.log(\"WebSocket connection established successfully\"))})),Fh(),\"function\"==typeof l&&l(t,{$:$,rowlenByRange:aa,computeRowlenByContent:la,deepCopyFlowData:mn.deepCopyFlowData,jfrefreshgrid:ao,luckysheetrefreshgrid:uo})},zh.getluckysheetfile=zt,zh.getluckysheet_select_save=Pt,zh.setluckysheet_select_save=Ht,zh.getconfig=Lt,zh.getGridData=ki.getGridData,zh.buildGridData=ki.buildGridData,zh.luckysheetrefreshgrid=uo,zh.jfrefreshgrid=ao,zh.getcellvalue=Vn,zh.setcellvalue=Na,zh.getdatabyselection=Ln,zh.sheetmanage=ki,zh.flowdata=function(){return t.flowdata},zh.selectHightlightShow=Pu,zh.destroy=yl.destroy,zh.destroyElements=yl.destroyElements,zh.handleMoreButtonClick=Fl,zh.hidenMoreMenu=El,zh.showLoadingProgress=hn,zh.hideLoadingProgress=fn,zh.luckysheetextendData=dl,zh.rowlenByRange=aa,zh.deepCopyFlowData=mn.deepCopyFlowData,zh.locales=Y,zh.getConditionFormatCells=Vt}));function Oh(){HTMLElement.prototype.__defineGetter__(\"runtimeStyle\",Bh),window.constructor.prototype.__defineGetter__(\"event\",Vh),Event.prototype.__defineGetter__(\"srcElement\",qh)}function Bh(){return this.style}function Vh(){return Hh()}function qh(){return this.target}function Hh(){if(document.all)return window.event;for(var e=Hh.caller;null!=e;){var t=e.arguments[0];if(t)if(-1!=t.constructor.toString().indexOf(\"Event\"))return t;e=e.caller}return null}var Uh,jh=y((()=>{Uh=Oh}));return v(((e,t)=>{V(),Lh(),jh(),window.addEventListener&&navigator.userAgent.indexOf(\"Firefox\")>0&&Uh(),t.exports=zh}))()})();\n/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LuckyExcel = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n    'use strict'\n\n    exports.byteLength = byteLength\n    exports.toByteArray = toByteArray\n    exports.fromByteArray = fromByteArray\n\n    var lookup = []\n    var revLookup = []\n    var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\n    var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n    for (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\n    revLookup['-'.charCodeAt(0)] = 62\n    revLookup['_'.charCodeAt(0)] = 63\n\n    function 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\n    function 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\n    function _byteLength (b64, validLen, placeHoldersLen) {\n      return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n    }\n\n    function 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\n    function tripletToBase64 (num) {\n      return lookup[num >> 18 & 0x3F] +\n        lookup[num >> 12 & 0x3F] +\n        lookup[num >> 6 & 0x3F] +\n        lookup[num & 0x3F]\n    }\n\n    function 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\n    function 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(\n          uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n        ))\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\n    },{}],2:[function(require,module,exports){\n\n    },{}],3:[function(require,module,exports){\n    (function (Buffer){\n    /*!\n     * The buffer module from node.js, for the browser.\n     *\n     * @author   Feross Aboukhadijeh <https://feross.org>\n     * @license  MIT\n     */\n    /* eslint-disable no-proto */\n\n    'use strict'\n\n    var base64 = require('base64-js')\n    var ieee754 = require('ieee754')\n\n    exports.Buffer = Buffer\n    exports.SlowBuffer = SlowBuffer\n    exports.INSPECT_MAX_BYTES = 50\n\n    var K_MAX_LENGTH = 0x7fffffff\n    exports.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     */\n    Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\n    if (!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\n    function typedArraySupport () {\n      // Can typed array instances can be augmented?\n      try {\n        var arr = new Uint8Array(1)\n        arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n        return arr.foo() === 42\n      } catch (e) {\n        return false\n      }\n    }\n\n    Object.defineProperty(Buffer.prototype, 'parent', {\n      enumerable: true,\n      get: function () {\n        if (!Buffer.isBuffer(this)) return undefined\n        return this.buffer\n      }\n    })\n\n    Object.defineProperty(Buffer.prototype, 'offset', {\n      enumerable: true,\n      get: function () {\n        if (!Buffer.isBuffer(this)) return undefined\n        return this.byteOffset\n      }\n    })\n\n    function 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      var buf = new Uint8Array(length)\n      buf.__proto__ = 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\n    function 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\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    if (typeof Symbol !== 'undefined' && Symbol.species != null &&\n        Buffer[Symbol.species] === Buffer) {\n      Object.defineProperty(Buffer, Symbol.species, {\n        value: null,\n        configurable: true,\n        enumerable: false,\n        writable: false\n      })\n    }\n\n    Buffer.poolSize = 8192 // not used by this implementation\n\n    function from (value, encodingOrOffset, length) {\n      if (typeof value === 'string') {\n        return fromString(value, encodingOrOffset)\n      }\n\n      if (ArrayBuffer.isView(value)) {\n        return fromArrayLike(value)\n      }\n\n      if (value == null) {\n        throw 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 value === 'number') {\n        throw new TypeError(\n          'The \"value\" argument must not be of type number. Received type number'\n        )\n      }\n\n      var valueOf = value.valueOf && value.valueOf()\n      if (valueOf != null && valueOf !== value) {\n        return Buffer.from(valueOf, encodingOrOffset, length)\n      }\n\n      var 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(\n          value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n        )\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     **/\n    Buffer.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\n    Buffer.prototype.__proto__ = Uint8Array.prototype\n    Buffer.__proto__ = Uint8Array\n\n    function 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\n    function 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 interpretted 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     **/\n    Buffer.alloc = function (size, fill, encoding) {\n      return alloc(size, fill, encoding)\n    }\n\n    function 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     * */\n    Buffer.allocUnsafe = function (size) {\n      return allocUnsafe(size)\n    }\n    /**\n     * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n     */\n    Buffer.allocUnsafeSlow = function (size) {\n      return allocUnsafe(size)\n    }\n\n    function 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      var length = byteLength(string, encoding) | 0\n      var buf = createBuffer(length)\n\n      var 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\n    function fromArrayLike (array) {\n      var length = array.length < 0 ? 0 : checked(array.length) | 0\n      var buf = createBuffer(length)\n      for (var i = 0; i < length; i += 1) {\n        buf[i] = array[i] & 255\n      }\n      return buf\n    }\n\n    function 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      var 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      buf.__proto__ = Buffer.prototype\n      return buf\n    }\n\n    function fromObject (obj) {\n      if (Buffer.isBuffer(obj)) {\n        var len = checked(obj.length) | 0\n        var 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\n    function 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\n    function SlowBuffer (length) {\n      if (+length != length) { // eslint-disable-line eqeqeq\n        length = 0\n      }\n      return Buffer.alloc(+length)\n    }\n\n    Buffer.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\n    Buffer.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      var x = a.length\n      var y = b.length\n\n      for (var 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\n    Buffer.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\n    Buffer.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      var 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      var buffer = Buffer.allocUnsafe(length)\n      var pos = 0\n      for (i = 0; i < list.length; ++i) {\n        var buf = list[i]\n        if (isInstance(buf, Uint8Array)) {\n          buf = Buffer.from(buf)\n        }\n        if (!Buffer.isBuffer(buf)) {\n          throw new TypeError('\"list\" argument must be an Array of Buffers')\n        }\n        buf.copy(buffer, pos)\n        pos += buf.length\n      }\n      return buffer\n    }\n\n    function 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      var len = string.length\n      var mustMatch = (arguments.length > 2 && arguments[2] === true)\n      if (!mustMatch && len === 0) return 0\n\n      // Use a for loop to avoid recursion\n      var 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    }\n    Buffer.byteLength = byteLength\n\n    function slowToString (encoding, start, end) {\n      var 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 coersion 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\n    Buffer.prototype._isBuffer = true\n\n    function swap (b, n, m) {\n      var i = b[n]\n      b[n] = b[m]\n      b[m] = i\n    }\n\n    Buffer.prototype.swap16 = function swap16 () {\n      var len = this.length\n      if (len % 2 !== 0) {\n        throw new RangeError('Buffer size must be a multiple of 16-bits')\n      }\n      for (var i = 0; i < len; i += 2) {\n        swap(this, i, i + 1)\n      }\n      return this\n    }\n\n    Buffer.prototype.swap32 = function swap32 () {\n      var len = this.length\n      if (len % 4 !== 0) {\n        throw new RangeError('Buffer size must be a multiple of 32-bits')\n      }\n      for (var 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\n    Buffer.prototype.swap64 = function swap64 () {\n      var len = this.length\n      if (len % 8 !== 0) {\n        throw new RangeError('Buffer size must be a multiple of 64-bits')\n      }\n      for (var 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\n    Buffer.prototype.toString = function toString () {\n      var 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\n    Buffer.prototype.toLocaleString = Buffer.prototype.toString\n\n    Buffer.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\n    Buffer.prototype.inspect = function inspect () {\n      var str = ''\n      var 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 '<Buffer ' + str + '>'\n    }\n\n    Buffer.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      var x = thisEnd - thisStart\n      var y = end - start\n      var len = Math.min(x, y)\n\n      var thisCopy = this.slice(thisStart, thisEnd)\n      var targetCopy = target.slice(start, end)\n\n      for (var 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\n    function 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\n    function arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n      var indexSize = 1\n      var arrLength = arr.length\n      var 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      var i\n      if (dir) {\n        var 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          var found = true\n          for (var 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\n    Buffer.prototype.includes = function includes (val, byteOffset, encoding) {\n      return this.indexOf(val, byteOffset, encoding) !== -1\n    }\n\n    Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n      return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n    }\n\n    Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n      return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n    }\n\n    function hexWrite (buf, string, offset, length) {\n      offset = Number(offset) || 0\n      var 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      var strLen = string.length\n\n      if (length > strLen / 2) {\n        length = strLen / 2\n      }\n      for (var i = 0; i < length; ++i) {\n        var 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\n    function utf8Write (buf, string, offset, length) {\n      return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n    }\n\n    function asciiWrite (buf, string, offset, length) {\n      return blitBuffer(asciiToBytes(string), buf, offset, length)\n    }\n\n    function latin1Write (buf, string, offset, length) {\n      return asciiWrite(buf, string, offset, length)\n    }\n\n    function base64Write (buf, string, offset, length) {\n      return blitBuffer(base64ToBytes(string), buf, offset, length)\n    }\n\n    function ucs2Write (buf, string, offset, length) {\n      return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n    }\n\n    Buffer.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      var 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      var 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            return asciiWrite(this, string, offset, length)\n\n          case 'latin1':\n          case 'binary':\n            return latin1Write(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\n    Buffer.prototype.toJSON = function toJSON () {\n      return {\n        type: 'Buffer',\n        data: Array.prototype.slice.call(this._arr || this, 0)\n      }\n    }\n\n    function 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\n    function utf8Slice (buf, start, end) {\n      end = Math.min(buf.length, end)\n      var res = []\n\n      var i = start\n      while (i < end) {\n        var firstByte = buf[i]\n        var codePoint = null\n        var bytesPerSequence = (firstByte > 0xEF) ? 4\n          : (firstByte > 0xDF) ? 3\n            : (firstByte > 0xBF) ? 2\n              : 1\n\n        if (i + bytesPerSequence <= end) {\n          var 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\n    var MAX_ARGUMENTS_LENGTH = 0x1000\n\n    function decodeCodePointsArray (codePoints) {\n      var 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      var res = ''\n      var 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\n    function asciiSlice (buf, start, end) {\n      var ret = ''\n      end = Math.min(buf.length, end)\n\n      for (var i = start; i < end; ++i) {\n        ret += String.fromCharCode(buf[i] & 0x7F)\n      }\n      return ret\n    }\n\n    function latin1Slice (buf, start, end) {\n      var ret = ''\n      end = Math.min(buf.length, end)\n\n      for (var i = start; i < end; ++i) {\n        ret += String.fromCharCode(buf[i])\n      }\n      return ret\n    }\n\n    function hexSlice (buf, start, end) {\n      var len = buf.length\n\n      if (!start || start < 0) start = 0\n      if (!end || end < 0 || end > len) end = len\n\n      var out = ''\n      for (var i = start; i < end; ++i) {\n        out += toHex(buf[i])\n      }\n      return out\n    }\n\n    function utf16leSlice (buf, start, end) {\n      var bytes = buf.slice(start, end)\n      var res = ''\n      for (var i = 0; i < bytes.length; i += 2) {\n        res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n      }\n      return res\n    }\n\n    Buffer.prototype.slice = function slice (start, end) {\n      var 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      var newBuf = this.subarray(start, end)\n      // Return an augmented `Uint8Array` instance\n      newBuf.__proto__ = Buffer.prototype\n      return newBuf\n    }\n\n    /*\n     * Need to make sure that buffer isn't trying to write out of bounds.\n     */\n    function 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\n    Buffer.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      var val = this[offset]\n      var mul = 1\n      var i = 0\n      while (++i < byteLength && (mul *= 0x100)) {\n        val += this[offset + i] * mul\n      }\n\n      return val\n    }\n\n    Buffer.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      var val = this[offset + --byteLength]\n      var mul = 1\n      while (byteLength > 0 && (mul *= 0x100)) {\n        val += this[offset + --byteLength] * mul\n      }\n\n      return val\n    }\n\n    Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n      offset = offset >>> 0\n      if (!noAssert) checkOffset(offset, 1, this.length)\n      return this[offset]\n    }\n\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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      var val = this[offset]\n      var mul = 1\n      var 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\n    Buffer.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      var i = byteLength\n      var mul = 1\n      var 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\n    Buffer.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\n    Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n      offset = offset >>> 0\n      if (!noAssert) checkOffset(offset, 2, this.length)\n      var val = this[offset] | (this[offset + 1] << 8)\n      return (val & 0x8000) ? val | 0xFFFF0000 : val\n    }\n\n    Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n      offset = offset >>> 0\n      if (!noAssert) checkOffset(offset, 2, this.length)\n      var val = this[offset + 1] | (this[offset] << 8)\n      return (val & 0x8000) ? val | 0xFFFF0000 : val\n    }\n\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    function 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\n    Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n      value = +value\n      offset = offset >>> 0\n      byteLength = byteLength >>> 0\n      if (!noAssert) {\n        var maxBytes = Math.pow(2, 8 * byteLength) - 1\n        checkInt(this, value, offset, byteLength, maxBytes, 0)\n      }\n\n      var mul = 1\n      var 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\n    Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n      value = +value\n      offset = offset >>> 0\n      byteLength = byteLength >>> 0\n      if (!noAssert) {\n        var maxBytes = Math.pow(2, 8 * byteLength) - 1\n        checkInt(this, value, offset, byteLength, maxBytes, 0)\n      }\n\n      var i = byteLength - 1\n      var 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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n      value = +value\n      offset = offset >>> 0\n      if (!noAssert) {\n        var limit = Math.pow(2, (8 * byteLength) - 1)\n\n        checkInt(this, value, offset, byteLength, limit - 1, -limit)\n      }\n\n      var i = 0\n      var mul = 1\n      var 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\n    Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n      value = +value\n      offset = offset >>> 0\n      if (!noAssert) {\n        var limit = Math.pow(2, (8 * byteLength) - 1)\n\n        checkInt(this, value, offset, byteLength, limit - 1, -limit)\n      }\n\n      var i = byteLength - 1\n      var mul = 1\n      var 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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    Buffer.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\n    function 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\n    function 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\n    Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n      return writeFloat(this, value, offset, true, noAssert)\n    }\n\n    Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n      return writeFloat(this, value, offset, false, noAssert)\n    }\n\n    function 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\n    Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n      return writeDouble(this, value, offset, true, noAssert)\n    }\n\n    Buffer.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)\n    Buffer.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      var 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 if (this === target && start < targetStart && targetStart < end) {\n        // descending copy from end\n        for (var i = len - 1; i >= 0; --i) {\n          target[i + targetStart] = this[i + start]\n        }\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])\n    Buffer.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          var 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      }\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      var i\n      if (typeof val === 'number') {\n        for (i = start; i < end; ++i) {\n          this[i] = val\n        }\n      } else {\n        var bytes = Buffer.isBuffer(val)\n          ? val\n          : Buffer.from(val, encoding)\n        var 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    // HELPER FUNCTIONS\n    // ================\n\n    var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\n    function 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\n    function toHex (n) {\n      if (n < 16) return '0' + n.toString(16)\n      return n.toString(16)\n    }\n\n    function utf8ToBytes (string, units) {\n      units = units || Infinity\n      var codePoint\n      var length = string.length\n      var leadSurrogate = null\n      var bytes = []\n\n      for (var 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\n    function asciiToBytes (str) {\n      var byteArray = []\n      for (var 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\n    function utf16leToBytes (str, units) {\n      var c, hi, lo\n      var byteArray = []\n      for (var 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\n    function base64ToBytes (str) {\n      return base64.toByteArray(base64clean(str))\n    }\n\n    function blitBuffer (src, dst, offset, length) {\n      for (var 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\n    function 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    }\n    function numberIsNaN (obj) {\n      // For IE11 support\n      return obj !== obj // eslint-disable-line no-self-compare\n    }\n\n    }).call(this,require(\"buffer\").Buffer)\n    },{\"base64-js\":1,\"buffer\":3,\"ieee754\":6}],4:[function(require,module,exports){\n    (function (Buffer){\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    // NOTE: These type checking functions intentionally don't use `instanceof`\n    // because it is fragile and can be easily faked with `Object.create()`.\n\n    function isArray(arg) {\n      if (Array.isArray) {\n        return Array.isArray(arg);\n      }\n      return objectToString(arg) === '[object Array]';\n    }\n    exports.isArray = isArray;\n\n    function isBoolean(arg) {\n      return typeof arg === 'boolean';\n    }\n    exports.isBoolean = isBoolean;\n\n    function isNull(arg) {\n      return arg === null;\n    }\n    exports.isNull = isNull;\n\n    function isNullOrUndefined(arg) {\n      return arg == null;\n    }\n    exports.isNullOrUndefined = isNullOrUndefined;\n\n    function isNumber(arg) {\n      return typeof arg === 'number';\n    }\n    exports.isNumber = isNumber;\n\n    function isString(arg) {\n      return typeof arg === 'string';\n    }\n    exports.isString = isString;\n\n    function isSymbol(arg) {\n      return typeof arg === 'symbol';\n    }\n    exports.isSymbol = isSymbol;\n\n    function isUndefined(arg) {\n      return arg === void 0;\n    }\n    exports.isUndefined = isUndefined;\n\n    function isRegExp(re) {\n      return objectToString(re) === '[object RegExp]';\n    }\n    exports.isRegExp = isRegExp;\n\n    function isObject(arg) {\n      return typeof arg === 'object' && arg !== null;\n    }\n    exports.isObject = isObject;\n\n    function isDate(d) {\n      return objectToString(d) === '[object Date]';\n    }\n    exports.isDate = isDate;\n\n    function isError(e) {\n      return (objectToString(e) === '[object Error]' || e instanceof Error);\n    }\n    exports.isError = isError;\n\n    function isFunction(arg) {\n      return typeof arg === 'function';\n    }\n    exports.isFunction = isFunction;\n\n    function isPrimitive(arg) {\n      return arg === null ||\n             typeof arg === 'boolean' ||\n             typeof arg === 'number' ||\n             typeof arg === 'string' ||\n             typeof arg === 'symbol' ||  // ES6 symbol\n             typeof arg === 'undefined';\n    }\n    exports.isPrimitive = isPrimitive;\n\n    exports.isBuffer = Buffer.isBuffer;\n\n    function objectToString(o) {\n      return Object.prototype.toString.call(o);\n    }\n\n    }).call(this,{\"isBuffer\":require(\"../../is-buffer/index.js\")})\n    },{\"../../is-buffer/index.js\":9}],5:[function(require,module,exports){\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    var objectCreate = Object.create || objectCreatePolyfill\n    var objectKeys = Object.keys || objectKeysPolyfill\n    var bind = Function.prototype.bind || functionBindPolyfill\n\n    function EventEmitter() {\n      if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n        this._events = objectCreate(null);\n        this._eventsCount = 0;\n      }\n\n      this._maxListeners = this._maxListeners || undefined;\n    }\n    module.exports = EventEmitter;\n\n    // Backwards-compat with node 0.10.x\n    EventEmitter.EventEmitter = EventEmitter;\n\n    EventEmitter.prototype._events = undefined;\n    EventEmitter.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.\n    var defaultMaxListeners = 10;\n\n    var hasDefineProperty;\n    try {\n      var o = {};\n      if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n      hasDefineProperty = o.x === 0;\n    } catch (err) { hasDefineProperty = false }\n    if (hasDefineProperty) {\n      Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n        enumerable: true,\n        get: function() {\n          return defaultMaxListeners;\n        },\n        set: function(arg) {\n          // check whether the input is a positive number (whose value is zero or\n          // greater and not a NaN).\n          if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n            throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n          defaultMaxListeners = arg;\n        }\n      });\n    } else {\n      EventEmitter.defaultMaxListeners = defaultMaxListeners;\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.\n    EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n      if (typeof n !== 'number' || n < 0 || isNaN(n))\n        throw new TypeError('\"n\" argument must be a positive number');\n      this._maxListeners = n;\n      return this;\n    };\n\n    function $getMaxListeners(that) {\n      if (that._maxListeners === undefined)\n        return EventEmitter.defaultMaxListeners;\n      return that._maxListeners;\n    }\n\n    EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n      return $getMaxListeners(this);\n    };\n\n    // These standalone emit* functions are used to optimize calling of event\n    // handlers for fast cases because emit() itself often has a variable number of\n    // arguments and can be deoptimized because of that. These functions always have\n    // the same number of arguments and thus do not get deoptimized, so the code\n    // inside them can execute faster.\n    function emitNone(handler, isFn, self) {\n      if (isFn)\n        handler.call(self);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self);\n      }\n    }\n    function emitOne(handler, isFn, self, arg1) {\n      if (isFn)\n        handler.call(self, arg1);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self, arg1);\n      }\n    }\n    function emitTwo(handler, isFn, self, arg1, arg2) {\n      if (isFn)\n        handler.call(self, arg1, arg2);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self, arg1, arg2);\n      }\n    }\n    function emitThree(handler, isFn, self, arg1, arg2, arg3) {\n      if (isFn)\n        handler.call(self, arg1, arg2, arg3);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self, arg1, arg2, arg3);\n      }\n    }\n\n    function emitMany(handler, isFn, self, args) {\n      if (isFn)\n        handler.apply(self, args);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].apply(self, args);\n      }\n    }\n\n    EventEmitter.prototype.emit = function emit(type) {\n      var er, handler, len, args, i, events;\n      var doError = (type === 'error');\n\n      events = this._events;\n      if (events)\n        doError = (doError && events.error == null);\n      else if (!doError)\n        return false;\n\n      // If there is no 'error' event listener then throw.\n      if (doError) {\n        if (arguments.length > 1)\n          er = arguments[1];\n        if (er instanceof Error) {\n          throw er; // Unhandled 'error' event\n        } else {\n          // At least give some kind of context to the user\n          var err = new Error('Unhandled \"error\" event. (' + er + ')');\n          err.context = er;\n          throw err;\n        }\n        return false;\n      }\n\n      handler = events[type];\n\n      if (!handler)\n        return false;\n\n      var isFn = typeof handler === 'function';\n      len = arguments.length;\n      switch (len) {\n          // fast cases\n        case 1:\n          emitNone(handler, isFn, this);\n          break;\n        case 2:\n          emitOne(handler, isFn, this, arguments[1]);\n          break;\n        case 3:\n          emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n          break;\n        case 4:\n          emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n          break;\n          // slower\n        default:\n          args = new Array(len - 1);\n          for (i = 1; i < len; i++)\n            args[i - 1] = arguments[i];\n          emitMany(handler, isFn, this, args);\n      }\n\n      return true;\n    };\n\n    function _addListener(target, type, listener, prepend) {\n      var m;\n      var events;\n      var existing;\n\n      if (typeof listener !== 'function')\n        throw new TypeError('\"listener\" argument must be a function');\n\n      events = target._events;\n      if (!events) {\n        events = target._events = objectCreate(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) {\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) {\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        } else {\n          // If we've already got an array, just append.\n          if (prepend) {\n            existing.unshift(listener);\n          } else {\n            existing.push(listener);\n          }\n        }\n\n        // Check for listener leak\n        if (!existing.warned) {\n          m = $getMaxListeners(target);\n          if (m && m > 0 && existing.length > m) {\n            existing.warned = true;\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            if (typeof console === 'object' && console.warn) {\n              console.warn('%s: %s', w.name, w.message);\n            }\n          }\n        }\n      }\n\n      return target;\n    }\n\n    EventEmitter.prototype.addListener = function addListener(type, listener) {\n      return _addListener(this, type, listener, false);\n    };\n\n    EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\n    EventEmitter.prototype.prependListener =\n        function prependListener(type, listener) {\n          return _addListener(this, type, listener, true);\n        };\n\n    function onceWrapper() {\n      if (!this.fired) {\n        this.target.removeListener(this.type, this.wrapFn);\n        this.fired = true;\n        switch (arguments.length) {\n          case 0:\n            return this.listener.call(this.target);\n          case 1:\n            return this.listener.call(this.target, arguments[0]);\n          case 2:\n            return this.listener.call(this.target, arguments[0], arguments[1]);\n          case 3:\n            return this.listener.call(this.target, arguments[0], arguments[1],\n                arguments[2]);\n          default:\n            var args = new Array(arguments.length);\n            for (var i = 0; i < args.length; ++i)\n              args[i] = arguments[i];\n            this.listener.apply(this.target, args);\n        }\n      }\n    }\n\n    function _onceWrap(target, type, listener) {\n      var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n      var wrapped = bind.call(onceWrapper, state);\n      wrapped.listener = listener;\n      state.wrapFn = wrapped;\n      return wrapped;\n    }\n\n    EventEmitter.prototype.once = function once(type, listener) {\n      if (typeof listener !== 'function')\n        throw new TypeError('\"listener\" argument must be a function');\n      this.on(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n    EventEmitter.prototype.prependOnceListener =\n        function prependOnceListener(type, listener) {\n          if (typeof listener !== 'function')\n            throw new TypeError('\"listener\" argument must be a function');\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.\n    EventEmitter.prototype.removeListener =\n        function removeListener(type, listener) {\n          var list, events, position, i, originalListener;\n\n          if (typeof listener !== 'function')\n            throw new TypeError('\"listener\" argument must be a function');\n\n          events = this._events;\n          if (!events)\n            return this;\n\n          list = events[type];\n          if (!list)\n            return this;\n\n          if (list === listener || list.listener === listener) {\n            if (--this._eventsCount === 0)\n              this._events = objectCreate(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            if (list.length === 1)\n              events[type] = list[0];\n\n            if (events.removeListener)\n              this.emit('removeListener', type, originalListener || listener);\n          }\n\n          return this;\n        };\n\n    EventEmitter.prototype.removeAllListeners =\n        function removeAllListeners(type) {\n          var listeners, events, i;\n\n          events = this._events;\n          if (!events)\n            return this;\n\n          // not listening for removeListener, no need to emit\n          if (!events.removeListener) {\n            if (arguments.length === 0) {\n              this._events = objectCreate(null);\n              this._eventsCount = 0;\n            } else if (events[type]) {\n              if (--this._eventsCount === 0)\n                this._events = objectCreate(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 = objectKeys(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 = objectCreate(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) {\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\n    function _listeners(target, type, unwrap) {\n      var events = target._events;\n\n      if (!events)\n        return [];\n\n      var evlistener = events[type];\n      if (!evlistener)\n        return [];\n\n      if (typeof evlistener === 'function')\n        return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n      return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n    }\n\n    EventEmitter.prototype.listeners = function listeners(type) {\n      return _listeners(this, type, true);\n    };\n\n    EventEmitter.prototype.rawListeners = function rawListeners(type) {\n      return _listeners(this, type, false);\n    };\n\n    EventEmitter.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\n    EventEmitter.prototype.listenerCount = listenerCount;\n    function listenerCount(type) {\n      var events = this._events;\n\n      if (events) {\n        var evlistener = events[type];\n\n        if (typeof evlistener === 'function') {\n          return 1;\n        } else if (evlistener) {\n          return evlistener.length;\n        }\n      }\n\n      return 0;\n    }\n\n    EventEmitter.prototype.eventNames = function eventNames() {\n      return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n    };\n\n    // About 1.5x faster than the two-arg version of Array#splice().\n    function spliceOne(list, index) {\n      for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n        list[i] = list[k];\n      list.pop();\n    }\n\n    function 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\n    function 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\n    function objectCreatePolyfill(proto) {\n      var F = function() {};\n      F.prototype = proto;\n      return new F;\n    }\n    function objectKeysPolyfill(obj) {\n      var keys = [];\n      for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n        keys.push(k);\n      }\n      return k;\n    }\n    function functionBindPolyfill(context) {\n      var fn = this;\n      return function () {\n        return fn.apply(context, arguments);\n      };\n    }\n\n    },{}],6:[function(require,module,exports){\n    exports.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\n    exports.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\n    },{}],7:[function(require,module,exports){\n    (function (global){\n    'use strict';\n    var Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\n    var scheduleDrain;\n\n    {\n      if (Mutation) {\n        var called = 0;\n        var observer = new Mutation(nextTick);\n        var element = global.document.createTextNode('');\n        observer.observe(element, {\n          characterData: true\n        });\n        scheduleDrain = function () {\n          element.data = (called = ++called % 2);\n        };\n      } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n        var channel = new global.MessageChannel();\n        channel.port1.onmessage = nextTick;\n        scheduleDrain = function () {\n          channel.port2.postMessage(0);\n        };\n      } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n        scheduleDrain = function () {\n\n          // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n          // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n          var scriptEl = global.document.createElement('script');\n          scriptEl.onreadystatechange = function () {\n            nextTick();\n\n            scriptEl.onreadystatechange = null;\n            scriptEl.parentNode.removeChild(scriptEl);\n            scriptEl = null;\n          };\n          global.document.documentElement.appendChild(scriptEl);\n        };\n      } else {\n        scheduleDrain = function () {\n          setTimeout(nextTick, 0);\n        };\n      }\n    }\n\n    var draining;\n    var queue = [];\n    //named nextTick for less confusing stack traces\n    function nextTick() {\n      draining = true;\n      var i, oldQueue;\n      var len = queue.length;\n      while (len) {\n        oldQueue = queue;\n        queue = [];\n        i = -1;\n        while (++i < len) {\n          oldQueue[i]();\n        }\n        len = queue.length;\n      }\n      draining = false;\n    }\n\n    module.exports = immediate;\n    function immediate(task) {\n      if (queue.push(task) === 1 && !draining) {\n        scheduleDrain();\n      }\n    }\n\n    }).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n    },{}],8:[function(require,module,exports){\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\n    },{}],9:[function(require,module,exports){\n    /*!\n     * Determine if an object is a Buffer\n     *\n     * @author   Feross Aboukhadijeh <https://feross.org>\n     * @license  MIT\n     */\n\n    // The _isBuffer check is for Safari 5-7 support, because it's missing\n    // Object.prototype.constructor. Remove this eventually\n    module.exports = function (obj) {\n      return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n    }\n\n    function isBuffer (obj) {\n      return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n    }\n\n    // For Node v0.10 support. Remove this eventually.\n    function isSlowBuffer (obj) {\n      return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n    }\n\n    },{}],10:[function(require,module,exports){\n    var toString = {}.toString;\n\n    module.exports = Array.isArray || function (arr) {\n      return toString.call(arr) == '[object Array]';\n    };\n\n    },{}],11:[function(require,module,exports){\n    'use strict';\n    var utils = require('./utils');\n    var support = require('./support');\n    // private property\n    var _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n    // public method for encoding\n    exports.encode = function(input) {\n        var output = [];\n        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n        var i = 0, len = input.length, remainingBytes = len;\n\n        var isArray = utils.getTypeOf(input) !== \"string\";\n        while (i < input.length) {\n            remainingBytes = len - i;\n\n            if (!isArray) {\n                chr1 = input.charCodeAt(i++);\n                chr2 = i < len ? input.charCodeAt(i++) : 0;\n                chr3 = i < len ? input.charCodeAt(i++) : 0;\n            } else {\n                chr1 = input[i++];\n                chr2 = i < len ? input[i++] : 0;\n                chr3 = i < len ? input[i++] : 0;\n            }\n\n            enc1 = chr1 >> 2;\n            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n            enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n            enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n            output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n        }\n\n        return output.join(\"\");\n    };\n\n    // public method for decoding\n    exports.decode = function(input) {\n        var chr1, chr2, chr3;\n        var enc1, enc2, enc3, enc4;\n        var i = 0, resultIndex = 0;\n\n        var dataUrlPrefix = \"data:\";\n\n        if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n            // This is a common error: people give a data url\n            // (data:image/png;base64,iVBOR...) with a {base64: true} and\n            // wonders why things don't work.\n            // We can detect that the string input looks like a data url but we\n            // *can't* be sure it is one: removing everything up to the comma would\n            // be too dangerous.\n            throw new Error(\"Invalid base64 input, it looks like a data url.\");\n        }\n\n        input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n        var totalLength = input.length * 3 / 4;\n        if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n            totalLength--;\n        }\n        if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n            totalLength--;\n        }\n        if (totalLength % 1 !== 0) {\n            // totalLength is not an integer, the length does not match a valid\n            // base64 content. That can happen if:\n            // - the input is not a base64 content\n            // - the input is *almost* a base64 content, with a extra chars at the\n            //   beginning or at the end\n            // - the input uses a base64 variant (base64url for example)\n            throw new Error(\"Invalid base64 input, bad content length.\");\n        }\n        var output;\n        if (support.uint8array) {\n            output = new Uint8Array(totalLength|0);\n        } else {\n            output = new Array(totalLength|0);\n        }\n\n        while (i < input.length) {\n\n            enc1 = _keyStr.indexOf(input.charAt(i++));\n            enc2 = _keyStr.indexOf(input.charAt(i++));\n            enc3 = _keyStr.indexOf(input.charAt(i++));\n            enc4 = _keyStr.indexOf(input.charAt(i++));\n\n            chr1 = (enc1 << 2) | (enc2 >> 4);\n            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n            chr3 = ((enc3 & 3) << 6) | enc4;\n\n            output[resultIndex++] = chr1;\n\n            if (enc3 !== 64) {\n                output[resultIndex++] = chr2;\n            }\n            if (enc4 !== 64) {\n                output[resultIndex++] = chr3;\n            }\n\n        }\n\n        return output;\n    };\n\n    },{\"./support\":40,\"./utils\":42}],12:[function(require,module,exports){\n    'use strict';\n\n    var external = require(\"./external\");\n    var DataWorker = require('./stream/DataWorker');\n    var DataLengthProbe = require('./stream/DataLengthProbe');\n    var Crc32Probe = require('./stream/Crc32Probe');\n    var DataLengthProbe = require('./stream/DataLengthProbe');\n\n    /**\n     * Represent a compressed object, with everything needed to decompress it.\n     * @constructor\n     * @param {number} compressedSize the size of the data compressed.\n     * @param {number} uncompressedSize the size of the data after decompression.\n     * @param {number} crc32 the crc32 of the decompressed file.\n     * @param {object} compression the type of compression, see lib/compressions.js.\n     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n     */\n    function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n        this.compressedSize = compressedSize;\n        this.uncompressedSize = uncompressedSize;\n        this.crc32 = crc32;\n        this.compression = compression;\n        this.compressedContent = data;\n    }\n\n    CompressedObject.prototype = {\n        /**\n         * Create a worker to get the uncompressed content.\n         * @return {GenericWorker} the worker.\n         */\n        getContentWorker : function () {\n            var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n            .pipe(this.compression.uncompressWorker())\n            .pipe(new DataLengthProbe(\"data_length\"));\n\n            var that = this;\n            worker.on(\"end\", function () {\n                if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n                    throw new Error(\"Bug : uncompressed data size mismatch\");\n                }\n            });\n            return worker;\n        },\n        /**\n         * Create a worker to get the compressed content.\n         * @return {GenericWorker} the worker.\n         */\n        getCompressedWorker : function () {\n            return new DataWorker(external.Promise.resolve(this.compressedContent))\n            .withStreamInfo(\"compressedSize\", this.compressedSize)\n            .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n            .withStreamInfo(\"crc32\", this.crc32)\n            .withStreamInfo(\"compression\", this.compression)\n            ;\n        }\n    };\n\n    /**\n     * Chain the given worker with other workers to compress the content with the\n     * given compression.\n     * @param {GenericWorker} uncompressedWorker the worker to pipe.\n     * @param {Object} compression the compression object.\n     * @param {Object} compressionOptions the options to use when compressing.\n     * @return {GenericWorker} the new worker compressing the content.\n     */\n    CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n        return uncompressedWorker\n        .pipe(new Crc32Probe())\n        .pipe(new DataLengthProbe(\"uncompressedSize\"))\n        .pipe(compression.compressWorker(compressionOptions))\n        .pipe(new DataLengthProbe(\"compressedSize\"))\n        .withStreamInfo(\"compression\", compression);\n    };\n\n    module.exports = CompressedObject;\n\n    },{\"./external\":16,\"./stream/Crc32Probe\":35,\"./stream/DataLengthProbe\":36,\"./stream/DataWorker\":37}],13:[function(require,module,exports){\n    'use strict';\n\n    var GenericWorker = require(\"./stream/GenericWorker\");\n\n    exports.STORE = {\n        magic: \"\\x00\\x00\",\n        compressWorker : function (compressionOptions) {\n            return new GenericWorker(\"STORE compression\");\n        },\n        uncompressWorker : function () {\n            return new GenericWorker(\"STORE decompression\");\n        }\n    };\n    exports.DEFLATE = require('./flate');\n\n    },{\"./flate\":17,\"./stream/GenericWorker\":38}],14:[function(require,module,exports){\n    'use strict';\n\n    var utils = require('./utils');\n\n    /**\n     * The following functions come from pako, from pako/lib/zlib/crc32.js\n     * released under the MIT license, see pako https://github.com/nodeca/pako/\n     */\n\n    // Use ordinary array, since untyped makes no boost here\n    function makeTable() {\n        var c, table = [];\n\n        for(var n =0; n < 256; n++){\n            c = n;\n            for(var k =0; k < 8; k++){\n                c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n            }\n            table[n] = c;\n        }\n\n        return table;\n    }\n\n    // Create table on load. Just 255 signed longs. Not a problem.\n    var crcTable = makeTable();\n\n\n    function crc32(crc, buf, len, pos) {\n        var t = crcTable, end = pos + len;\n\n        crc = crc ^ (-1);\n\n        for (var i = pos; i < end; i++ ) {\n            crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n        }\n\n        return (crc ^ (-1)); // >>> 0;\n    }\n\n    // That's all for the pako functions.\n\n    /**\n     * Compute the crc32 of a string.\n     * This is almost the same as the function crc32, but for strings. Using the\n     * same function for the two use cases leads to horrible performances.\n     * @param {Number} crc the starting value of the crc.\n     * @param {String} str the string to use.\n     * @param {Number} len the length of the string.\n     * @param {Number} pos the starting position for the crc32 computation.\n     * @return {Number} the computed crc32.\n     */\n    function crc32str(crc, str, len, pos) {\n        var t = crcTable, end = pos + len;\n\n        crc = crc ^ (-1);\n\n        for (var i = pos; i < end; i++ ) {\n            crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n        }\n\n        return (crc ^ (-1)); // >>> 0;\n    }\n\n    module.exports = function crc32wrapper(input, crc) {\n        if (typeof input === \"undefined\" || !input.length) {\n            return 0;\n        }\n\n        var isArray = utils.getTypeOf(input) !== \"string\";\n\n        if(isArray) {\n            return crc32(crc|0, input, input.length, 0);\n        } else {\n            return crc32str(crc|0, input, input.length, 0);\n        }\n    };\n\n    },{\"./utils\":42}],15:[function(require,module,exports){\n    'use strict';\n    exports.base64 = false;\n    exports.binary = false;\n    exports.dir = false;\n    exports.createFolders = true;\n    exports.date = null;\n    exports.compression = null;\n    exports.compressionOptions = null;\n    exports.comment = null;\n    exports.unixPermissions = null;\n    exports.dosPermissions = null;\n\n    },{}],16:[function(require,module,exports){\n    /* global Promise */\n    'use strict';\n\n    // load the global object first:\n    // - it should be better integrated in the system (unhandledRejection in node)\n    // - the environment may have a custom Promise implementation (see zone.js)\n    var ES6Promise = null;\n    if (typeof Promise !== \"undefined\") {\n        ES6Promise = Promise;\n    } else {\n        ES6Promise = require(\"lie\");\n    }\n\n    /**\n     * Let the user use/change some implementations.\n     */\n    module.exports = {\n        Promise: ES6Promise\n    };\n\n    },{\"lie\":46}],17:[function(require,module,exports){\n    'use strict';\n    var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\n    var pako = require(\"pako\");\n    var utils = require(\"./utils\");\n    var GenericWorker = require(\"./stream/GenericWorker\");\n\n    var ARRAY_TYPE = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\n    exports.magic = \"\\x08\\x00\";\n\n    /**\n     * Create a worker that uses pako to inflate/deflate.\n     * @constructor\n     * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n     * @param {Object} options the options to use when (de)compressing.\n     */\n    function FlateWorker(action, options) {\n        GenericWorker.call(this, \"FlateWorker/\" + action);\n\n        this._pako = null;\n        this._pakoAction = action;\n        this._pakoOptions = options;\n        // the `meta` object from the last chunk received\n        // this allow this worker to pass around metadata\n        this.meta = {};\n    }\n\n    utils.inherits(FlateWorker, GenericWorker);\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    FlateWorker.prototype.processChunk = function (chunk) {\n        this.meta = chunk.meta;\n        if (this._pako === null) {\n            this._createPako();\n        }\n        this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);\n    };\n\n    /**\n     * @see GenericWorker.flush\n     */\n    FlateWorker.prototype.flush = function () {\n        GenericWorker.prototype.flush.call(this);\n        if (this._pako === null) {\n            this._createPako();\n        }\n        this._pako.push([], true);\n    };\n    /**\n     * @see GenericWorker.cleanUp\n     */\n    FlateWorker.prototype.cleanUp = function () {\n        GenericWorker.prototype.cleanUp.call(this);\n        this._pako = null;\n    };\n\n    /**\n     * Create the _pako object.\n     * TODO: lazy-loading this object isn't the best solution but it's the\n     * quickest. The best solution is to lazy-load the worker list. See also the\n     * issue #446.\n     */\n    FlateWorker.prototype._createPako = function () {\n        this._pako = new pako[this._pakoAction]({\n            raw: true,\n            level: this._pakoOptions.level || -1 // default compression\n        });\n        var self = this;\n        this._pako.onData = function(data) {\n            self.push({\n                data : data,\n                meta : self.meta\n            });\n        };\n    };\n\n    exports.compressWorker = function (compressionOptions) {\n        return new FlateWorker(\"Deflate\", compressionOptions);\n    };\n    exports.uncompressWorker = function () {\n        return new FlateWorker(\"Inflate\", {});\n    };\n\n    },{\"./stream/GenericWorker\":38,\"./utils\":42,\"pako\":47}],18:[function(require,module,exports){\n    'use strict';\n\n    var utils = require('../utils');\n    var GenericWorker = require('../stream/GenericWorker');\n    var utf8 = require('../utf8');\n    var crc32 = require('../crc32');\n    var signature = require('../signature');\n\n    /**\n     * Transform an integer into a string in hexadecimal.\n     * @private\n     * @param {number} dec the number to convert.\n     * @param {number} bytes the number of bytes to generate.\n     * @returns {string} the result.\n     */\n    var decToHex = function(dec, bytes) {\n        var hex = \"\", i;\n        for (i = 0; i < bytes; i++) {\n            hex += String.fromCharCode(dec & 0xff);\n            dec = dec >>> 8;\n        }\n        return hex;\n    };\n\n    /**\n     * Generate the UNIX part of the external file attributes.\n     * @param {Object} unixPermissions the unix permissions or null.\n     * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n     * @return {Number} a 32 bit integer.\n     *\n     * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n     *\n     * TTTTsstrwxrwxrwx0000000000ADVSHR\n     * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n     *     ^^^_________________________ setuid, setgid, sticky\n     *        ^^^^^^^^^________________ permissions\n     *                 ^^^^^^^^^^______ not used ?\n     *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n     */\n    var generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n        var result = unixPermissions;\n        if (!unixPermissions) {\n            // I can't use octal values in strict mode, hence the hexa.\n            //  040775 => 0x41fd\n            // 0100664 => 0x81b4\n            result = isDir ? 0x41fd : 0x81b4;\n        }\n        return (result & 0xFFFF) << 16;\n    };\n\n    /**\n     * Generate the DOS part of the external file attributes.\n     * @param {Object} dosPermissions the dos permissions or null.\n     * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n     * @return {Number} a 32 bit integer.\n     *\n     * Bit 0     Read-Only\n     * Bit 1     Hidden\n     * Bit 2     System\n     * Bit 3     Volume Label\n     * Bit 4     Directory\n     * Bit 5     Archive\n     */\n    var generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n        // the dir flag is already set for compatibility\n        return (dosPermissions || 0)  & 0x3F;\n    };\n\n    /**\n     * Generate the various parts used in the construction of the final zip file.\n     * @param {Object} streamInfo the hash with information about the compressed file.\n     * @param {Boolean} streamedContent is the content streamed ?\n     * @param {Boolean} streamingEnded is the stream finished ?\n     * @param {number} offset the current offset from the start of the zip file.\n     * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n     * @param {Function} encodeFileName the function to encode the file name / comment.\n     * @return {Object} the zip parts.\n     */\n    var generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n        var file = streamInfo['file'],\n        compression = streamInfo['compression'],\n        useCustomEncoding = encodeFileName !== utf8.utf8encode,\n        encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n        utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n        comment = file.comment,\n        encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n        utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n        useUTF8ForComment = utfEncodedComment.length !== comment.length,\n        dosTime,\n        dosDate,\n        extraFields = \"\",\n        unicodePathExtraField = \"\",\n        unicodeCommentExtraField = \"\",\n        dir = file.dir,\n        date = file.date;\n\n\n        var dataInfo = {\n            crc32 : 0,\n            compressedSize : 0,\n            uncompressedSize : 0\n        };\n\n        // if the content is streamed, the sizes/crc32 are only available AFTER\n        // the end of the stream.\n        if (!streamedContent || streamingEnded) {\n            dataInfo.crc32 = streamInfo['crc32'];\n            dataInfo.compressedSize = streamInfo['compressedSize'];\n            dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n        }\n\n        var bitflag = 0;\n        if (streamedContent) {\n            // Bit 3: the sizes/crc32 are set to zero in the local header.\n            // The correct values are put in the data descriptor immediately\n            // following the compressed data.\n            bitflag |= 0x0008;\n        }\n        if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n            // Bit 11: Language encoding flag (EFS).\n            bitflag |= 0x0800;\n        }\n\n\n        var extFileAttr = 0;\n        var versionMadeBy = 0;\n        if (dir) {\n            // dos or unix, we set the dos dir flag\n            extFileAttr |= 0x00010;\n        }\n        if(platform === \"UNIX\") {\n            versionMadeBy = 0x031E; // UNIX, version 3.0\n            extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n        } else { // DOS or other, fallback to DOS\n            versionMadeBy = 0x0014; // DOS, version 2.0\n            extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n        }\n\n        // date\n        // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n        // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n        // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n        dosTime = date.getUTCHours();\n        dosTime = dosTime << 6;\n        dosTime = dosTime | date.getUTCMinutes();\n        dosTime = dosTime << 5;\n        dosTime = dosTime | date.getUTCSeconds() / 2;\n\n        dosDate = date.getUTCFullYear() - 1980;\n        dosDate = dosDate << 4;\n        dosDate = dosDate | (date.getUTCMonth() + 1);\n        dosDate = dosDate << 5;\n        dosDate = dosDate | date.getUTCDate();\n\n        if (useUTF8ForFileName) {\n            // set the unicode path extra field. unzip needs at least one extra\n            // field to correctly handle unicode path, so using the path is as good\n            // as any other information. This could improve the situation with\n            // other archive managers too.\n            // This field is usually used without the utf8 flag, with a non\n            // unicode path in the header (winrar, winzip). This helps (a bit)\n            // with the messy Windows' default compressed folders feature but\n            // breaks on p7zip which doesn't seek the unicode path extra field.\n            // So for now, UTF-8 everywhere !\n            unicodePathExtraField =\n                // Version\n                decToHex(1, 1) +\n                // NameCRC32\n                decToHex(crc32(encodedFileName), 4) +\n                // UnicodeName\n                utfEncodedFileName;\n\n            extraFields +=\n                // Info-ZIP Unicode Path Extra Field\n                \"\\x75\\x70\" +\n                // size\n                decToHex(unicodePathExtraField.length, 2) +\n                // content\n                unicodePathExtraField;\n        }\n\n        if(useUTF8ForComment) {\n\n            unicodeCommentExtraField =\n                // Version\n                decToHex(1, 1) +\n                // CommentCRC32\n                decToHex(crc32(encodedComment), 4) +\n                // UnicodeName\n                utfEncodedComment;\n\n            extraFields +=\n                // Info-ZIP Unicode Path Extra Field\n                \"\\x75\\x63\" +\n                // size\n                decToHex(unicodeCommentExtraField.length, 2) +\n                // content\n                unicodeCommentExtraField;\n        }\n\n        var header = \"\";\n\n        // version needed to extract\n        header += \"\\x0A\\x00\";\n        // general purpose bit flag\n        header += decToHex(bitflag, 2);\n        // compression method\n        header += compression.magic;\n        // last mod file time\n        header += decToHex(dosTime, 2);\n        // last mod file date\n        header += decToHex(dosDate, 2);\n        // crc-32\n        header += decToHex(dataInfo.crc32, 4);\n        // compressed size\n        header += decToHex(dataInfo.compressedSize, 4);\n        // uncompressed size\n        header += decToHex(dataInfo.uncompressedSize, 4);\n        // file name length\n        header += decToHex(encodedFileName.length, 2);\n        // extra field length\n        header += decToHex(extraFields.length, 2);\n\n\n        var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n        var dirRecord = signature.CENTRAL_FILE_HEADER +\n            // version made by (00: DOS)\n            decToHex(versionMadeBy, 2) +\n            // file header (common to file and central directory)\n            header +\n            // file comment length\n            decToHex(encodedComment.length, 2) +\n            // disk number start\n            \"\\x00\\x00\" +\n            // internal file attributes TODO\n            \"\\x00\\x00\" +\n            // external file attributes\n            decToHex(extFileAttr, 4) +\n            // relative offset of local header\n            decToHex(offset, 4) +\n            // file name\n            encodedFileName +\n            // extra field\n            extraFields +\n            // file comment\n            encodedComment;\n\n        return {\n            fileRecord: fileRecord,\n            dirRecord: dirRecord\n        };\n    };\n\n    /**\n     * Generate the EOCD record.\n     * @param {Number} entriesCount the number of entries in the zip file.\n     * @param {Number} centralDirLength the length (in bytes) of the central dir.\n     * @param {Number} localDirLength the length (in bytes) of the local dir.\n     * @param {String} comment the zip file comment as a binary string.\n     * @param {Function} encodeFileName the function to encode the comment.\n     * @return {String} the EOCD record.\n     */\n    var generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n        var dirEnd = \"\";\n        var encodedComment = utils.transformTo(\"string\", encodeFileName(comment));\n\n        // end of central dir signature\n        dirEnd = signature.CENTRAL_DIRECTORY_END +\n            // number of this disk\n            \"\\x00\\x00\" +\n            // number of the disk with the start of the central directory\n            \"\\x00\\x00\" +\n            // total number of entries in the central directory on this disk\n            decToHex(entriesCount, 2) +\n            // total number of entries in the central directory\n            decToHex(entriesCount, 2) +\n            // size of the central directory   4 bytes\n            decToHex(centralDirLength, 4) +\n            // offset of start of central directory with respect to the starting disk number\n            decToHex(localDirLength, 4) +\n            // .ZIP file comment length\n            decToHex(encodedComment.length, 2) +\n            // .ZIP file comment\n            encodedComment;\n\n        return dirEnd;\n    };\n\n    /**\n     * Generate data descriptors for a file entry.\n     * @param {Object} streamInfo the hash generated by a worker, containing information\n     * on the file entry.\n     * @return {String} the data descriptors.\n     */\n    var generateDataDescriptors = function (streamInfo) {\n        var descriptor = \"\";\n        descriptor = signature.DATA_DESCRIPTOR +\n            // crc-32                          4 bytes\n            decToHex(streamInfo['crc32'], 4) +\n            // compressed size                 4 bytes\n            decToHex(streamInfo['compressedSize'], 4) +\n            // uncompressed size               4 bytes\n            decToHex(streamInfo['uncompressedSize'], 4);\n\n        return descriptor;\n    };\n\n\n    /**\n     * A worker to concatenate other workers to create a zip file.\n     * @param {Boolean} streamFiles `true` to stream the content of the files,\n     * `false` to accumulate it.\n     * @param {String} comment the comment to use.\n     * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n     * @param {Function} encodeFileName the function to encode file names and comments.\n     */\n    function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n        GenericWorker.call(this, \"ZipFileWorker\");\n        // The number of bytes written so far. This doesn't count accumulated chunks.\n        this.bytesWritten = 0;\n        // The comment of the zip file\n        this.zipComment = comment;\n        // The platform \"generating\" the zip file.\n        this.zipPlatform = platform;\n        // the function to encode file names and comments.\n        this.encodeFileName = encodeFileName;\n        // Should we stream the content of the files ?\n        this.streamFiles = streamFiles;\n        // If `streamFiles` is false, we will need to accumulate the content of the\n        // files to calculate sizes / crc32 (and write them *before* the content).\n        // This boolean indicates if we are accumulating chunks (it will change a lot\n        // during the lifetime of this worker).\n        this.accumulate = false;\n        // The buffer receiving chunks when accumulating content.\n        this.contentBuffer = [];\n        // The list of generated directory records.\n        this.dirRecords = [];\n        // The offset (in bytes) from the beginning of the zip file for the current source.\n        this.currentSourceOffset = 0;\n        // The total number of entries in this zip file.\n        this.entriesCount = 0;\n        // the name of the file currently being added, null when handling the end of the zip file.\n        // Used for the emitted metadata.\n        this.currentFile = null;\n\n\n\n        this._sources = [];\n    }\n    utils.inherits(ZipFileWorker, GenericWorker);\n\n    /**\n     * @see GenericWorker.push\n     */\n    ZipFileWorker.prototype.push = function (chunk) {\n\n        var currentFilePercent = chunk.meta.percent || 0;\n        var entriesCount = this.entriesCount;\n        var remainingFiles = this._sources.length;\n\n        if(this.accumulate) {\n            this.contentBuffer.push(chunk);\n        } else {\n            this.bytesWritten += chunk.data.length;\n\n            GenericWorker.prototype.push.call(this, {\n                data : chunk.data,\n                meta : {\n                    currentFile : this.currentFile,\n                    percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n                }\n            });\n        }\n    };\n\n    /**\n     * The worker started a new source (an other worker).\n     * @param {Object} streamInfo the streamInfo object from the new source.\n     */\n    ZipFileWorker.prototype.openedSource = function (streamInfo) {\n        this.currentSourceOffset = this.bytesWritten;\n        this.currentFile = streamInfo['file'].name;\n\n        var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n        // don't stream folders (because they don't have any content)\n        if(streamedContent) {\n            var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n            this.push({\n                data : record.fileRecord,\n                meta : {percent:0}\n            });\n        } else {\n            // we need to wait for the whole file before pushing anything\n            this.accumulate = true;\n        }\n    };\n\n    /**\n     * The worker finished a source (an other worker).\n     * @param {Object} streamInfo the streamInfo object from the finished source.\n     */\n    ZipFileWorker.prototype.closedSource = function (streamInfo) {\n        this.accumulate = false;\n        var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n        var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n        this.dirRecords.push(record.dirRecord);\n        if(streamedContent) {\n            // after the streamed file, we put data descriptors\n            this.push({\n                data : generateDataDescriptors(streamInfo),\n                meta : {percent:100}\n            });\n        } else {\n            // the content wasn't streamed, we need to push everything now\n            // first the file record, then the content\n            this.push({\n                data : record.fileRecord,\n                meta : {percent:0}\n            });\n            while(this.contentBuffer.length) {\n                this.push(this.contentBuffer.shift());\n            }\n        }\n        this.currentFile = null;\n    };\n\n    /**\n     * @see GenericWorker.flush\n     */\n    ZipFileWorker.prototype.flush = function () {\n\n        var localDirLength = this.bytesWritten;\n        for(var i = 0; i < this.dirRecords.length; i++) {\n            this.push({\n                data : this.dirRecords[i],\n                meta : {percent:100}\n            });\n        }\n        var centralDirLength = this.bytesWritten - localDirLength;\n\n        var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n        this.push({\n            data : dirEnd,\n            meta : {percent:100}\n        });\n    };\n\n    /**\n     * Prepare the next source to be read.\n     */\n    ZipFileWorker.prototype.prepareNextSource = function () {\n        this.previous = this._sources.shift();\n        this.openedSource(this.previous.streamInfo);\n        if (this.isPaused) {\n            this.previous.pause();\n        } else {\n            this.previous.resume();\n        }\n    };\n\n    /**\n     * @see GenericWorker.registerPrevious\n     */\n    ZipFileWorker.prototype.registerPrevious = function (previous) {\n        this._sources.push(previous);\n        var self = this;\n\n        previous.on('data', function (chunk) {\n            self.processChunk(chunk);\n        });\n        previous.on('end', function () {\n            self.closedSource(self.previous.streamInfo);\n            if(self._sources.length) {\n                self.prepareNextSource();\n            } else {\n                self.end();\n            }\n        });\n        previous.on('error', function (e) {\n            self.error(e);\n        });\n        return this;\n    };\n\n    /**\n     * @see GenericWorker.resume\n     */\n    ZipFileWorker.prototype.resume = function () {\n        if(!GenericWorker.prototype.resume.call(this)) {\n            return false;\n        }\n\n        if (!this.previous && this._sources.length) {\n            this.prepareNextSource();\n            return true;\n        }\n        if (!this.previous && !this._sources.length && !this.generatedError) {\n            this.end();\n            return true;\n        }\n    };\n\n    /**\n     * @see GenericWorker.error\n     */\n    ZipFileWorker.prototype.error = function (e) {\n        var sources = this._sources;\n        if(!GenericWorker.prototype.error.call(this, e)) {\n            return false;\n        }\n        for(var i = 0; i < sources.length; i++) {\n            try {\n                sources[i].error(e);\n            } catch(e) {\n                // the `error` exploded, nothing to do\n            }\n        }\n        return true;\n    };\n\n    /**\n     * @see GenericWorker.lock\n     */\n    ZipFileWorker.prototype.lock = function () {\n        GenericWorker.prototype.lock.call(this);\n        var sources = this._sources;\n        for(var i = 0; i < sources.length; i++) {\n            sources[i].lock();\n        }\n    };\n\n    module.exports = ZipFileWorker;\n\n    },{\"../crc32\":14,\"../signature\":33,\"../stream/GenericWorker\":38,\"../utf8\":41,\"../utils\":42}],19:[function(require,module,exports){\n    'use strict';\n\n    var compressions = require('../compressions');\n    var ZipFileWorker = require('./ZipFileWorker');\n\n    /**\n     * Find the compression to use.\n     * @param {String} fileCompression the compression defined at the file level, if any.\n     * @param {String} zipCompression the compression defined at the load() level.\n     * @return {Object} the compression object to use.\n     */\n    var getCompression = function (fileCompression, zipCompression) {\n\n        var compressionName = fileCompression || zipCompression;\n        var compression = compressions[compressionName];\n        if (!compression) {\n            throw new Error(compressionName + \" is not a valid compression method !\");\n        }\n        return compression;\n    };\n\n    /**\n     * Create a worker to generate a zip file.\n     * @param {JSZip} zip the JSZip instance at the right root level.\n     * @param {Object} options to generate the zip file.\n     * @param {String} comment the comment to use.\n     */\n    exports.generateWorker = function (zip, options, comment) {\n\n        var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n        var entriesCount = 0;\n        try {\n\n            zip.forEach(function (relativePath, file) {\n                entriesCount++;\n                var compression = getCompression(file.options.compression, options.compression);\n                var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n                var dir = file.dir, date = file.date;\n\n                file._compressWorker(compression, compressionOptions)\n                .withStreamInfo(\"file\", {\n                    name : relativePath,\n                    dir : dir,\n                    date : date,\n                    comment : file.comment || \"\",\n                    unixPermissions : file.unixPermissions,\n                    dosPermissions : file.dosPermissions\n                })\n                .pipe(zipFileWorker);\n            });\n            zipFileWorker.entriesCount = entriesCount;\n        } catch (e) {\n            zipFileWorker.error(e);\n        }\n\n        return zipFileWorker;\n    };\n\n    },{\"../compressions\":13,\"./ZipFileWorker\":18}],20:[function(require,module,exports){\n    'use strict';\n\n    /**\n     * Representation a of zip file in js\n     * @constructor\n     */\n    function JSZip() {\n        // if this constructor is used without `new`, it adds `new` before itself:\n        if(!(this instanceof JSZip)) {\n            return new JSZip();\n        }\n\n        if(arguments.length) {\n            throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n        }\n\n        // object containing the files :\n        // {\n        //   \"folder/\" : {...},\n        //   \"folder/data.txt\" : {...}\n        // }\n        this.files = {};\n\n        this.comment = null;\n\n        // Where we are in the hierarchy\n        this.root = \"\";\n        this.clone = function() {\n            var newObj = new JSZip();\n            for (var i in this) {\n                if (typeof this[i] !== \"function\") {\n                    newObj[i] = this[i];\n                }\n            }\n            return newObj;\n        };\n    }\n    JSZip.prototype = require('./object');\n    JSZip.prototype.loadAsync = require('./load');\n    JSZip.support = require('./support');\n    JSZip.defaults = require('./defaults');\n\n    // TODO find a better way to handle this version,\n    // a require('package.json').version doesn't work with webpack, see #327\n    JSZip.version = \"3.5.0\";\n\n    JSZip.loadAsync = function (content, options) {\n        return new JSZip().loadAsync(content, options);\n    };\n\n    JSZip.external = require(\"./external\");\n    module.exports = JSZip;\n\n    },{\"./defaults\":15,\"./external\":16,\"./load\":21,\"./object\":25,\"./support\":40}],21:[function(require,module,exports){\n    'use strict';\n    var utils = require('./utils');\n    var external = require(\"./external\");\n    var utf8 = require('./utf8');\n    var utils = require('./utils');\n    var ZipEntries = require('./zipEntries');\n    var Crc32Probe = require('./stream/Crc32Probe');\n    var nodejsUtils = require(\"./nodejsUtils\");\n\n    /**\n     * Check the CRC32 of an entry.\n     * @param {ZipEntry} zipEntry the zip entry to check.\n     * @return {Promise} the result.\n     */\n    function checkEntryCRC32(zipEntry) {\n        return new external.Promise(function (resolve, reject) {\n            var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n            worker.on(\"error\", function (e) {\n                reject(e);\n            })\n            .on(\"end\", function () {\n                if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n                    reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n                } else {\n                    resolve();\n                }\n            })\n            .resume();\n        });\n    }\n\n    module.exports = function(data, options) {\n        var zip = this;\n        options = utils.extend(options || {}, {\n            base64: false,\n            checkCRC32: false,\n            optimizedBinaryString: false,\n            createFolders: false,\n            decodeFileName: utf8.utf8decode\n        });\n\n        if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n            return external.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\"));\n        }\n\n        return utils.prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n        .then(function(data) {\n            var zipEntries = new ZipEntries(options);\n            zipEntries.load(data);\n            return zipEntries;\n        }).then(function checkCRC32(zipEntries) {\n            var promises = [external.Promise.resolve(zipEntries)];\n            var files = zipEntries.files;\n            if (options.checkCRC32) {\n                for (var i = 0; i < files.length; i++) {\n                    promises.push(checkEntryCRC32(files[i]));\n                }\n            }\n            return external.Promise.all(promises);\n        }).then(function addFiles(results) {\n            var zipEntries = results.shift();\n            var files = zipEntries.files;\n            for (var i = 0; i < files.length; i++) {\n                var input = files[i];\n                zip.file(input.fileNameStr, input.decompressed, {\n                    binary: true,\n                    optimizedBinaryString: true,\n                    date: input.date,\n                    dir: input.dir,\n                    comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n                    unixPermissions : input.unixPermissions,\n                    dosPermissions : input.dosPermissions,\n                    createFolders: options.createFolders\n                });\n            }\n            if (zipEntries.zipComment.length) {\n                zip.comment = zipEntries.zipComment;\n            }\n\n            return zip;\n        });\n    };\n\n    },{\"./external\":16,\"./nodejsUtils\":22,\"./stream/Crc32Probe\":35,\"./utf8\":41,\"./utils\":42,\"./zipEntries\":43}],22:[function(require,module,exports){\n    (function (Buffer){\n    'use strict';\n\n    module.exports = {\n        /**\n         * True if this is running in Nodejs, will be undefined in a browser.\n         * In a browser, browserify won't include this file and the whole module\n         * will be resolved an empty object.\n         */\n        isNode : typeof Buffer !== \"undefined\",\n        /**\n         * Create a new nodejs Buffer from an existing content.\n         * @param {Object} data the data to pass to the constructor.\n         * @param {String} encoding the encoding to use.\n         * @return {Buffer} a new Buffer.\n         */\n        newBufferFrom: function(data, encoding) {\n            if (Buffer.from && Buffer.from !== Uint8Array.from) {\n                return Buffer.from(data, encoding);\n            } else {\n                if (typeof data === \"number\") {\n                    // Safeguard for old Node.js versions. On newer versions,\n                    // Buffer.from(number) / Buffer(number, encoding) already throw.\n                    throw new Error(\"The \\\"data\\\" argument must not be a number\");\n                }\n                return new Buffer(data, encoding);\n            }\n        },\n        /**\n         * Create a new nodejs Buffer with the specified size.\n         * @param {Integer} size the size of the buffer.\n         * @return {Buffer} a new Buffer.\n         */\n        allocBuffer: function (size) {\n            if (Buffer.alloc) {\n                return Buffer.alloc(size);\n            } else {\n                var buf = new Buffer(size);\n                buf.fill(0);\n                return buf;\n            }\n        },\n        /**\n         * Find out if an object is a Buffer.\n         * @param {Object} b the object to test.\n         * @return {Boolean} true if the object is a Buffer, false otherwise.\n         */\n        isBuffer : function(b){\n            return Buffer.isBuffer(b);\n        },\n\n        isStream : function (obj) {\n            return obj &&\n                typeof obj.on === \"function\" &&\n                typeof obj.pause === \"function\" &&\n                typeof obj.resume === \"function\";\n        }\n    };\n\n    }).call(this,require(\"buffer\").Buffer)\n    },{\"buffer\":3}],23:[function(require,module,exports){\n    \"use strict\";\n\n    var utils = require('../utils');\n    var GenericWorker = require('../stream/GenericWorker');\n\n    /**\n     * A worker that use a nodejs stream as source.\n     * @constructor\n     * @param {String} filename the name of the file entry for this stream.\n     * @param {Readable} stream the nodejs stream.\n     */\n    function NodejsStreamInputAdapter(filename, stream) {\n        GenericWorker.call(this, \"Nodejs stream input adapter for \" + filename);\n        this._upstreamEnded = false;\n        this._bindStream(stream);\n    }\n\n    utils.inherits(NodejsStreamInputAdapter, GenericWorker);\n\n    /**\n     * Prepare the stream and bind the callbacks on it.\n     * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.\n     * @param {Stream} stream the nodejs stream to use.\n     */\n    NodejsStreamInputAdapter.prototype._bindStream = function (stream) {\n        var self = this;\n        this._stream = stream;\n        stream.pause();\n        stream\n        .on(\"data\", function (chunk) {\n            self.push({\n                data: chunk,\n                meta : {\n                    percent : 0\n                }\n            });\n        })\n        .on(\"error\", function (e) {\n            if(self.isPaused) {\n                this.generatedError = e;\n            } else {\n                self.error(e);\n            }\n        })\n        .on(\"end\", function () {\n            if(self.isPaused) {\n                self._upstreamEnded = true;\n            } else {\n                self.end();\n            }\n        });\n    };\n    NodejsStreamInputAdapter.prototype.pause = function () {\n        if(!GenericWorker.prototype.pause.call(this)) {\n            return false;\n        }\n        this._stream.pause();\n        return true;\n    };\n    NodejsStreamInputAdapter.prototype.resume = function () {\n        if(!GenericWorker.prototype.resume.call(this)) {\n            return false;\n        }\n\n        if(this._upstreamEnded) {\n            this.end();\n        } else {\n            this._stream.resume();\n        }\n\n        return true;\n    };\n\n    module.exports = NodejsStreamInputAdapter;\n\n    },{\"../stream/GenericWorker\":38,\"../utils\":42}],24:[function(require,module,exports){\n    'use strict';\n\n    var Readable = require('readable-stream').Readable;\n\n    var utils = require('../utils');\n    utils.inherits(NodejsStreamOutputAdapter, Readable);\n\n    /**\n    * A nodejs stream using a worker as source.\n    * @see the SourceWrapper in http://nodejs.org/api/stream.html\n    * @constructor\n    * @param {StreamHelper} helper the helper wrapping the worker\n    * @param {Object} options the nodejs stream options\n    * @param {Function} updateCb the update callback.\n    */\n    function NodejsStreamOutputAdapter(helper, options, updateCb) {\n        Readable.call(this, options);\n        this._helper = helper;\n\n        var self = this;\n        helper.on(\"data\", function (data, meta) {\n            if (!self.push(data)) {\n                self._helper.pause();\n            }\n            if(updateCb) {\n                updateCb(meta);\n            }\n        })\n        .on(\"error\", function(e) {\n            self.emit('error', e);\n        })\n        .on(\"end\", function () {\n            self.push(null);\n        });\n    }\n\n\n    NodejsStreamOutputAdapter.prototype._read = function() {\n        this._helper.resume();\n    };\n\n    module.exports = NodejsStreamOutputAdapter;\n\n    },{\"../utils\":42,\"readable-stream\":26}],25:[function(require,module,exports){\n    'use strict';\n    var utf8 = require('./utf8');\n    var utils = require('./utils');\n    var GenericWorker = require('./stream/GenericWorker');\n    var StreamHelper = require('./stream/StreamHelper');\n    var defaults = require('./defaults');\n    var CompressedObject = require('./compressedObject');\n    var ZipObject = require('./zipObject');\n    var generate = require(\"./generate\");\n    var nodejsUtils = require(\"./nodejsUtils\");\n    var NodejsStreamInputAdapter = require(\"./nodejs/NodejsStreamInputAdapter\");\n\n\n    /**\n     * Add a file in the current folder.\n     * @private\n     * @param {string} name the name of the file\n     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n     * @param {Object} originalOptions the options of the file\n     * @return {Object} the new file.\n     */\n    var fileAdd = function(name, data, originalOptions) {\n        // be sure sub folders exist\n        var dataType = utils.getTypeOf(data),\n            parent;\n\n\n        /*\n         * Correct options.\n         */\n\n        var o = utils.extend(originalOptions || {}, defaults);\n        o.date = o.date || new Date();\n        if (o.compression !== null) {\n            o.compression = o.compression.toUpperCase();\n        }\n\n        if (typeof o.unixPermissions === \"string\") {\n            o.unixPermissions = parseInt(o.unixPermissions, 8);\n        }\n\n        // UNX_IFDIR  0040000 see zipinfo.c\n        if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n            o.dir = true;\n        }\n        // Bit 4    Directory\n        if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n            o.dir = true;\n        }\n\n        if (o.dir) {\n            name = forceTrailingSlash(name);\n        }\n        if (o.createFolders && (parent = parentFolder(name))) {\n            folderAdd.call(this, parent, true);\n        }\n\n        var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n        if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n            o.binary = !isUnicodeString;\n        }\n\n\n        var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n        if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n            o.base64 = false;\n            o.binary = true;\n            data = \"\";\n            o.compression = \"STORE\";\n            dataType = \"string\";\n        }\n\n        /*\n         * Convert content to fit.\n         */\n\n        var zipObjectContent = null;\n        if (data instanceof CompressedObject || data instanceof GenericWorker) {\n            zipObjectContent = data;\n        } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n            zipObjectContent = new NodejsStreamInputAdapter(name, data);\n        } else {\n            zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n        }\n\n        var object = new ZipObject(name, zipObjectContent, o);\n        this.files[name] = object;\n        /*\n        TODO: we can't throw an exception because we have async promises\n        (we can have a promise of a Date() for example) but returning a\n        promise is useless because file(name, data) returns the JSZip\n        object for chaining. Should we break that to allow the user\n        to catch the error ?\n\n        return external.Promise.resolve(zipObjectContent)\n        .then(function () {\n            return object;\n        });\n        */\n    };\n\n    /**\n     * Find the parent folder of the path.\n     * @private\n     * @param {string} path the path to use\n     * @return {string} the parent folder, or \"\"\n     */\n    var parentFolder = function (path) {\n        if (path.slice(-1) === '/') {\n            path = path.substring(0, path.length - 1);\n        }\n        var lastSlash = path.lastIndexOf('/');\n        return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n    };\n\n    /**\n     * Returns the path with a slash at the end.\n     * @private\n     * @param {String} path the path to check.\n     * @return {String} the path with a trailing slash.\n     */\n    var forceTrailingSlash = function(path) {\n        // Check the name ends with a /\n        if (path.slice(-1) !== \"/\") {\n            path += \"/\"; // IE doesn't like substr(-1)\n        }\n        return path;\n    };\n\n    /**\n     * Add a (sub) folder in the current folder.\n     * @private\n     * @param {string} name the folder's name\n     * @param {boolean=} [createFolders] If true, automatically create sub\n     *  folders. Defaults to false.\n     * @return {Object} the new folder.\n     */\n    var folderAdd = function(name, createFolders) {\n        createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders;\n\n        name = forceTrailingSlash(name);\n\n        // Does this folder already exist?\n        if (!this.files[name]) {\n            fileAdd.call(this, name, null, {\n                dir: true,\n                createFolders: createFolders\n            });\n        }\n        return this.files[name];\n    };\n\n    /**\n    * Cross-window, cross-Node-context regular expression detection\n    * @param  {Object}  object Anything\n    * @return {Boolean}        true if the object is a regular expression,\n    * false otherwise\n    */\n    function isRegExp(object) {\n        return Object.prototype.toString.call(object) === \"[object RegExp]\";\n    }\n\n    // return the actual prototype of JSZip\n    var out = {\n        /**\n         * @see loadAsync\n         */\n        load: function() {\n            throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n        },\n\n\n        /**\n         * Call a callback function for each entry at this folder level.\n         * @param {Function} cb the callback function:\n         * function (relativePath, file) {...}\n         * It takes 2 arguments : the relative path and the file.\n         */\n        forEach: function(cb) {\n            var filename, relativePath, file;\n            for (filename in this.files) {\n                if (!this.files.hasOwnProperty(filename)) {\n                    continue;\n                }\n                file = this.files[filename];\n                relativePath = filename.slice(this.root.length, filename.length);\n                if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n                    cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n                }\n            }\n        },\n\n        /**\n         * Filter nested files/folders with the specified function.\n         * @param {Function} search the predicate to use :\n         * function (relativePath, file) {...}\n         * It takes 2 arguments : the relative path and the file.\n         * @return {Array} An array of matching elements.\n         */\n        filter: function(search) {\n            var result = [];\n            this.forEach(function (relativePath, entry) {\n                if (search(relativePath, entry)) { // the file matches the function\n                    result.push(entry);\n                }\n\n            });\n            return result;\n        },\n\n        /**\n         * Add a file to the zip file, or search a file.\n         * @param   {string|RegExp} name The name of the file to add (if data is defined),\n         * the name of the file to find (if no data) or a regex to match files.\n         * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded\n         * @param   {Object} o     File options\n         * @return  {JSZip|Object|Array} this JSZip object (when adding a file),\n         * a file (when searching by string) or an array of files (when searching by regex).\n         */\n        file: function(name, data, o) {\n            if (arguments.length === 1) {\n                if (isRegExp(name)) {\n                    var regexp = name;\n                    return this.filter(function(relativePath, file) {\n                        return !file.dir && regexp.test(relativePath);\n                    });\n                }\n                else { // text\n                    var obj = this.files[this.root + name];\n                    if (obj && !obj.dir) {\n                        return obj;\n                    } else {\n                        return null;\n                    }\n                }\n            }\n            else { // more than one argument : we have data !\n                name = this.root + name;\n                fileAdd.call(this, name, data, o);\n            }\n            return this;\n        },\n\n        /**\n         * Add a directory to the zip file, or search.\n         * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n         * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.\n         */\n        folder: function(arg) {\n            if (!arg) {\n                return this;\n            }\n\n            if (isRegExp(arg)) {\n                return this.filter(function(relativePath, file) {\n                    return file.dir && arg.test(relativePath);\n                });\n            }\n\n            // else, name is a new folder\n            var name = this.root + arg;\n            var newFolder = folderAdd.call(this, name);\n\n            // Allow chaining by returning a new object with this folder as the root\n            var ret = this.clone();\n            ret.root = newFolder.name;\n            return ret;\n        },\n\n        /**\n         * Delete a file, or a directory and all sub-files, from the zip\n         * @param {string} name the name of the file to delete\n         * @return {JSZip} this JSZip object\n         */\n        remove: function(name) {\n            name = this.root + name;\n            var file = this.files[name];\n            if (!file) {\n                // Look for any folders\n                if (name.slice(-1) !== \"/\") {\n                    name += \"/\";\n                }\n                file = this.files[name];\n            }\n\n            if (file && !file.dir) {\n                // file\n                delete this.files[name];\n            } else {\n                // maybe a folder, delete recursively\n                var kids = this.filter(function(relativePath, file) {\n                    return file.name.slice(0, name.length) === name;\n                });\n                for (var i = 0; i < kids.length; i++) {\n                    delete this.files[kids[i].name];\n                }\n            }\n\n            return this;\n        },\n\n        /**\n         * Generate the complete zip file\n         * @param {Object} options the options to generate the zip file :\n         * - compression, \"STORE\" by default.\n         * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n         * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n         */\n        generate: function(options) {\n            throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n        },\n\n        /**\n         * Generate the complete zip file as an internal stream.\n         * @param {Object} options the options to generate the zip file :\n         * - compression, \"STORE\" by default.\n         * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n         * @return {StreamHelper} the streamed zip file.\n         */\n        generateInternalStream: function(options) {\n          var worker, opts = {};\n          try {\n              opts = utils.extend(options || {}, {\n                  streamFiles: false,\n                  compression: \"STORE\",\n                  compressionOptions : null,\n                  type: \"\",\n                  platform: \"DOS\",\n                  comment: null,\n                  mimeType: 'application/zip',\n                  encodeFileName: utf8.utf8encode\n              });\n\n              opts.type = opts.type.toLowerCase();\n              opts.compression = opts.compression.toUpperCase();\n\n              // \"binarystring\" is preferred but the internals use \"string\".\n              if(opts.type === \"binarystring\") {\n                opts.type = \"string\";\n              }\n\n              if (!opts.type) {\n                throw new Error(\"No output type specified.\");\n              }\n\n              utils.checkSupport(opts.type);\n\n              // accept nodejs `process.platform`\n              if(\n                  opts.platform === 'darwin' ||\n                  opts.platform === 'freebsd' ||\n                  opts.platform === 'linux' ||\n                  opts.platform === 'sunos'\n              ) {\n                  opts.platform = \"UNIX\";\n              }\n              if (opts.platform === 'win32') {\n                  opts.platform = \"DOS\";\n              }\n\n              var comment = opts.comment || this.comment || \"\";\n              worker = generate.generateWorker(this, opts, comment);\n          } catch (e) {\n            worker = new GenericWorker(\"error\");\n            worker.error(e);\n          }\n          return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n        },\n        /**\n         * Generate the complete zip file asynchronously.\n         * @see generateInternalStream\n         */\n        generateAsync: function(options, onUpdate) {\n            return this.generateInternalStream(options).accumulate(onUpdate);\n        },\n        /**\n         * Generate the complete zip file asynchronously.\n         * @see generateInternalStream\n         */\n        generateNodeStream: function(options, onUpdate) {\n            options = options || {};\n            if (!options.type) {\n                options.type = \"nodebuffer\";\n            }\n            return this.generateInternalStream(options).toNodejsStream(onUpdate);\n        }\n    };\n    module.exports = out;\n\n    },{\"./compressedObject\":12,\"./defaults\":15,\"./generate\":19,\"./nodejs/NodejsStreamInputAdapter\":23,\"./nodejsUtils\":22,\"./stream/GenericWorker\":38,\"./stream/StreamHelper\":39,\"./utf8\":41,\"./utils\":42,\"./zipObject\":45}],26:[function(require,module,exports){\n    /*\n     * This file is used by module bundlers (browserify/webpack/etc) when\n     * including a stream implementation. We use \"readable-stream\" to get a\n     * consistent behavior between nodejs versions but bundlers often have a shim\n     * for \"stream\". Using this shim greatly improve the compatibility and greatly\n     * reduce the final size of the bundle (only one stream implementation, not\n     * two).\n     */\n    module.exports = require(\"stream\");\n\n    },{\"stream\":80}],27:[function(require,module,exports){\n    'use strict';\n    var DataReader = require('./DataReader');\n    var utils = require('../utils');\n\n    function ArrayReader(data) {\n        DataReader.call(this, data);\n        for(var i = 0; i < this.data.length; i++) {\n            data[i] = data[i] & 0xFF;\n        }\n    }\n    utils.inherits(ArrayReader, DataReader);\n    /**\n     * @see DataReader.byteAt\n     */\n    ArrayReader.prototype.byteAt = function(i) {\n        return this.data[this.zero + i];\n    };\n    /**\n     * @see DataReader.lastIndexOfSignature\n     */\n    ArrayReader.prototype.lastIndexOfSignature = function(sig) {\n        var sig0 = sig.charCodeAt(0),\n            sig1 = sig.charCodeAt(1),\n            sig2 = sig.charCodeAt(2),\n            sig3 = sig.charCodeAt(3);\n        for (var i = this.length - 4; i >= 0; --i) {\n            if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n                return i - this.zero;\n            }\n        }\n\n        return -1;\n    };\n    /**\n     * @see DataReader.readAndCheckSignature\n     */\n    ArrayReader.prototype.readAndCheckSignature = function (sig) {\n        var sig0 = sig.charCodeAt(0),\n            sig1 = sig.charCodeAt(1),\n            sig2 = sig.charCodeAt(2),\n            sig3 = sig.charCodeAt(3),\n            data = this.readData(4);\n        return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n    };\n    /**\n     * @see DataReader.readData\n     */\n    ArrayReader.prototype.readData = function(size) {\n        this.checkOffset(size);\n        if(size === 0) {\n            return [];\n        }\n        var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n    module.exports = ArrayReader;\n\n    },{\"../utils\":42,\"./DataReader\":28}],28:[function(require,module,exports){\n    'use strict';\n    var utils = require('../utils');\n\n    function DataReader(data) {\n        this.data = data; // type : see implementation\n        this.length = data.length;\n        this.index = 0;\n        this.zero = 0;\n    }\n    DataReader.prototype = {\n        /**\n         * Check that the offset will not go too far.\n         * @param {string} offset the additional offset to check.\n         * @throws {Error} an Error if the offset is out of bounds.\n         */\n        checkOffset: function(offset) {\n            this.checkIndex(this.index + offset);\n        },\n        /**\n         * Check that the specified index will not be too far.\n         * @param {string} newIndex the index to check.\n         * @throws {Error} an Error if the index is out of bounds.\n         */\n        checkIndex: function(newIndex) {\n            if (this.length < this.zero + newIndex || newIndex < 0) {\n                throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n            }\n        },\n        /**\n         * Change the index.\n         * @param {number} newIndex The new index.\n         * @throws {Error} if the new index is out of the data.\n         */\n        setIndex: function(newIndex) {\n            this.checkIndex(newIndex);\n            this.index = newIndex;\n        },\n        /**\n         * Skip the next n bytes.\n         * @param {number} n the number of bytes to skip.\n         * @throws {Error} if the new index is out of the data.\n         */\n        skip: function(n) {\n            this.setIndex(this.index + n);\n        },\n        /**\n         * Get the byte at the specified index.\n         * @param {number} i the index to use.\n         * @return {number} a byte.\n         */\n        byteAt: function(i) {\n            // see implementations\n        },\n        /**\n         * Get the next number with a given byte size.\n         * @param {number} size the number of bytes to read.\n         * @return {number} the corresponding number.\n         */\n        readInt: function(size) {\n            var result = 0,\n                i;\n            this.checkOffset(size);\n            for (i = this.index + size - 1; i >= this.index; i--) {\n                result = (result << 8) + this.byteAt(i);\n            }\n            this.index += size;\n            return result;\n        },\n        /**\n         * Get the next string with a given byte size.\n         * @param {number} size the number of bytes to read.\n         * @return {string} the corresponding string.\n         */\n        readString: function(size) {\n            return utils.transformTo(\"string\", this.readData(size));\n        },\n        /**\n         * Get raw data without conversion, <size> bytes.\n         * @param {number} size the number of bytes to read.\n         * @return {Object} the raw data, implementation specific.\n         */\n        readData: function(size) {\n            // see implementations\n        },\n        /**\n         * Find the last occurrence of a zip signature (4 bytes).\n         * @param {string} sig the signature to find.\n         * @return {number} the index of the last occurrence, -1 if not found.\n         */\n        lastIndexOfSignature: function(sig) {\n            // see implementations\n        },\n        /**\n         * Read the signature (4 bytes) at the current position and compare it with sig.\n         * @param {string} sig the expected signature\n         * @return {boolean} true if the signature matches, false otherwise.\n         */\n        readAndCheckSignature: function(sig) {\n            // see implementations\n        },\n        /**\n         * Get the next date.\n         * @return {Date} the date.\n         */\n        readDate: function() {\n            var dostime = this.readInt(4);\n            return new Date(Date.UTC(\n            ((dostime >> 25) & 0x7f) + 1980, // year\n            ((dostime >> 21) & 0x0f) - 1, // month\n            (dostime >> 16) & 0x1f, // day\n            (dostime >> 11) & 0x1f, // hour\n            (dostime >> 5) & 0x3f, // minute\n            (dostime & 0x1f) << 1)); // second\n        }\n    };\n    module.exports = DataReader;\n\n    },{\"../utils\":42}],29:[function(require,module,exports){\n    'use strict';\n    var Uint8ArrayReader = require('./Uint8ArrayReader');\n    var utils = require('../utils');\n\n    function NodeBufferReader(data) {\n        Uint8ArrayReader.call(this, data);\n    }\n    utils.inherits(NodeBufferReader, Uint8ArrayReader);\n\n    /**\n     * @see DataReader.readData\n     */\n    NodeBufferReader.prototype.readData = function(size) {\n        this.checkOffset(size);\n        var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n    module.exports = NodeBufferReader;\n\n    },{\"../utils\":42,\"./Uint8ArrayReader\":31}],30:[function(require,module,exports){\n    'use strict';\n    var DataReader = require('./DataReader');\n    var utils = require('../utils');\n\n    function StringReader(data) {\n        DataReader.call(this, data);\n    }\n    utils.inherits(StringReader, DataReader);\n    /**\n     * @see DataReader.byteAt\n     */\n    StringReader.prototype.byteAt = function(i) {\n        return this.data.charCodeAt(this.zero + i);\n    };\n    /**\n     * @see DataReader.lastIndexOfSignature\n     */\n    StringReader.prototype.lastIndexOfSignature = function(sig) {\n        return this.data.lastIndexOf(sig) - this.zero;\n    };\n    /**\n     * @see DataReader.readAndCheckSignature\n     */\n    StringReader.prototype.readAndCheckSignature = function (sig) {\n        var data = this.readData(4);\n        return sig === data;\n    };\n    /**\n     * @see DataReader.readData\n     */\n    StringReader.prototype.readData = function(size) {\n        this.checkOffset(size);\n        // this will work because the constructor applied the \"& 0xff\" mask.\n        var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n    module.exports = StringReader;\n\n    },{\"../utils\":42,\"./DataReader\":28}],31:[function(require,module,exports){\n    'use strict';\n    var ArrayReader = require('./ArrayReader');\n    var utils = require('../utils');\n\n    function Uint8ArrayReader(data) {\n        ArrayReader.call(this, data);\n    }\n    utils.inherits(Uint8ArrayReader, ArrayReader);\n    /**\n     * @see DataReader.readData\n     */\n    Uint8ArrayReader.prototype.readData = function(size) {\n        this.checkOffset(size);\n        if(size === 0) {\n            // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n            return new Uint8Array(0);\n        }\n        var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n        this.index += size;\n        return result;\n    };\n    module.exports = Uint8ArrayReader;\n\n    },{\"../utils\":42,\"./ArrayReader\":27}],32:[function(require,module,exports){\n    'use strict';\n\n    var utils = require('../utils');\n    var support = require('../support');\n    var ArrayReader = require('./ArrayReader');\n    var StringReader = require('./StringReader');\n    var NodeBufferReader = require('./NodeBufferReader');\n    var Uint8ArrayReader = require('./Uint8ArrayReader');\n\n    /**\n     * Create a reader adapted to the data.\n     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n     * @return {DataReader} the data reader.\n     */\n    module.exports = function (data) {\n        var type = utils.getTypeOf(data);\n        utils.checkSupport(type);\n        if (type === \"string\" && !support.uint8array) {\n            return new StringReader(data);\n        }\n        if (type === \"nodebuffer\") {\n            return new NodeBufferReader(data);\n        }\n        if (support.uint8array) {\n            return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n        }\n        return new ArrayReader(utils.transformTo(\"array\", data));\n    };\n\n    },{\"../support\":40,\"../utils\":42,\"./ArrayReader\":27,\"./NodeBufferReader\":29,\"./StringReader\":30,\"./Uint8ArrayReader\":31}],33:[function(require,module,exports){\n    'use strict';\n    exports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\n    exports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\n    exports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\n    exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\n    exports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\n    exports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n    },{}],34:[function(require,module,exports){\n    'use strict';\n\n    var GenericWorker = require('./GenericWorker');\n    var utils = require('../utils');\n\n    /**\n     * A worker which convert chunks to a specified type.\n     * @constructor\n     * @param {String} destType the destination type.\n     */\n    function ConvertWorker(destType) {\n        GenericWorker.call(this, \"ConvertWorker to \" + destType);\n        this.destType = destType;\n    }\n    utils.inherits(ConvertWorker, GenericWorker);\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    ConvertWorker.prototype.processChunk = function (chunk) {\n        this.push({\n            data : utils.transformTo(this.destType, chunk.data),\n            meta : chunk.meta\n        });\n    };\n    module.exports = ConvertWorker;\n\n    },{\"../utils\":42,\"./GenericWorker\":38}],35:[function(require,module,exports){\n    'use strict';\n\n    var GenericWorker = require('./GenericWorker');\n    var crc32 = require('../crc32');\n    var utils = require('../utils');\n\n    /**\n     * A worker which calculate the crc32 of the data flowing through.\n     * @constructor\n     */\n    function Crc32Probe() {\n        GenericWorker.call(this, \"Crc32Probe\");\n        this.withStreamInfo(\"crc32\", 0);\n    }\n    utils.inherits(Crc32Probe, GenericWorker);\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    Crc32Probe.prototype.processChunk = function (chunk) {\n        this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n        this.push(chunk);\n    };\n    module.exports = Crc32Probe;\n\n    },{\"../crc32\":14,\"../utils\":42,\"./GenericWorker\":38}],36:[function(require,module,exports){\n    'use strict';\n\n    var utils = require('../utils');\n    var GenericWorker = require('./GenericWorker');\n\n    /**\n     * A worker which calculate the total length of the data flowing through.\n     * @constructor\n     * @param {String} propName the name used to expose the length\n     */\n    function DataLengthProbe(propName) {\n        GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n        this.propName = propName;\n        this.withStreamInfo(propName, 0);\n    }\n    utils.inherits(DataLengthProbe, GenericWorker);\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    DataLengthProbe.prototype.processChunk = function (chunk) {\n        if(chunk) {\n            var length = this.streamInfo[this.propName] || 0;\n            this.streamInfo[this.propName] = length + chunk.data.length;\n        }\n        GenericWorker.prototype.processChunk.call(this, chunk);\n    };\n    module.exports = DataLengthProbe;\n\n\n    },{\"../utils\":42,\"./GenericWorker\":38}],37:[function(require,module,exports){\n    'use strict';\n\n    var utils = require('../utils');\n    var GenericWorker = require('./GenericWorker');\n\n    // the size of the generated chunks\n    // TODO expose this as a public variable\n    var DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n    /**\n     * A worker that reads a content and emits chunks.\n     * @constructor\n     * @param {Promise} dataP the promise of the data to split\n     */\n    function DataWorker(dataP) {\n        GenericWorker.call(this, \"DataWorker\");\n        var self = this;\n        this.dataIsReady = false;\n        this.index = 0;\n        this.max = 0;\n        this.data = null;\n        this.type = \"\";\n\n        this._tickScheduled = false;\n\n        dataP.then(function (data) {\n            self.dataIsReady = true;\n            self.data = data;\n            self.max = data && data.length || 0;\n            self.type = utils.getTypeOf(data);\n            if(!self.isPaused) {\n                self._tickAndRepeat();\n            }\n        }, function (e) {\n            self.error(e);\n        });\n    }\n\n    utils.inherits(DataWorker, GenericWorker);\n\n    /**\n     * @see GenericWorker.cleanUp\n     */\n    DataWorker.prototype.cleanUp = function () {\n        GenericWorker.prototype.cleanUp.call(this);\n        this.data = null;\n    };\n\n    /**\n     * @see GenericWorker.resume\n     */\n    DataWorker.prototype.resume = function () {\n        if(!GenericWorker.prototype.resume.call(this)) {\n            return false;\n        }\n\n        if (!this._tickScheduled && this.dataIsReady) {\n            this._tickScheduled = true;\n            utils.delay(this._tickAndRepeat, [], this);\n        }\n        return true;\n    };\n\n    /**\n     * Trigger a tick a schedule an other call to this function.\n     */\n    DataWorker.prototype._tickAndRepeat = function() {\n        this._tickScheduled = false;\n        if(this.isPaused || this.isFinished) {\n            return;\n        }\n        this._tick();\n        if(!this.isFinished) {\n            utils.delay(this._tickAndRepeat, [], this);\n            this._tickScheduled = true;\n        }\n    };\n\n    /**\n     * Read and push a chunk.\n     */\n    DataWorker.prototype._tick = function() {\n\n        if(this.isPaused || this.isFinished) {\n            return false;\n        }\n\n        var size = DEFAULT_BLOCK_SIZE;\n        var data = null, nextIndex = Math.min(this.max, this.index + size);\n        if (this.index >= this.max) {\n            // EOF\n            return this.end();\n        } else {\n            switch(this.type) {\n                case \"string\":\n                    data = this.data.substring(this.index, nextIndex);\n                break;\n                case \"uint8array\":\n                    data = this.data.subarray(this.index, nextIndex);\n                break;\n                case \"array\":\n                case \"nodebuffer\":\n                    data = this.data.slice(this.index, nextIndex);\n                break;\n            }\n            this.index = nextIndex;\n            return this.push({\n                data : data,\n                meta : {\n                    percent : this.max ? this.index / this.max * 100 : 0\n                }\n            });\n        }\n    };\n\n    module.exports = DataWorker;\n\n    },{\"../utils\":42,\"./GenericWorker\":38}],38:[function(require,module,exports){\n    'use strict';\n\n    /**\n     * A worker that does nothing but passing chunks to the next one. This is like\n     * a nodejs stream but with some differences. On the good side :\n     * - it works on IE 6-9 without any issue / polyfill\n     * - it weights less than the full dependencies bundled with browserify\n     * - it forwards errors (no need to declare an error handler EVERYWHERE)\n     *\n     * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n     * object containing anything (`percent` for example), see each worker for more\n     * details. The latter is the real data (String, Uint8Array, etc).\n     *\n     * @constructor\n     * @param {String} name the name of the stream (mainly used for debugging purposes)\n     */\n    function GenericWorker(name) {\n        // the name of the worker\n        this.name = name || \"default\";\n        // an object containing metadata about the workers chain\n        this.streamInfo = {};\n        // an error which happened when the worker was paused\n        this.generatedError = null;\n        // an object containing metadata to be merged by this worker into the general metadata\n        this.extraStreamInfo = {};\n        // true if the stream is paused (and should not do anything), false otherwise\n        this.isPaused = true;\n        // true if the stream is finished (and should not do anything), false otherwise\n        this.isFinished = false;\n        // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n        this.isLocked = false;\n        // the event listeners\n        this._listeners = {\n            'data':[],\n            'end':[],\n            'error':[]\n        };\n        // the previous worker, if any\n        this.previous = null;\n    }\n\n    GenericWorker.prototype = {\n        /**\n         * Push a chunk to the next workers.\n         * @param {Object} chunk the chunk to push\n         */\n        push : function (chunk) {\n            this.emit(\"data\", chunk);\n        },\n        /**\n         * End the stream.\n         * @return {Boolean} true if this call ended the worker, false otherwise.\n         */\n        end : function () {\n            if (this.isFinished) {\n                return false;\n            }\n\n            this.flush();\n            try {\n                this.emit(\"end\");\n                this.cleanUp();\n                this.isFinished = true;\n            } catch (e) {\n                this.emit(\"error\", e);\n            }\n            return true;\n        },\n        /**\n         * End the stream with an error.\n         * @param {Error} e the error which caused the premature end.\n         * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n         */\n        error : function (e) {\n            if (this.isFinished) {\n                return false;\n            }\n\n            if(this.isPaused) {\n                this.generatedError = e;\n            } else {\n                this.isFinished = true;\n\n                this.emit(\"error\", e);\n\n                // in the workers chain exploded in the middle of the chain,\n                // the error event will go downward but we also need to notify\n                // workers upward that there has been an error.\n                if(this.previous) {\n                    this.previous.error(e);\n                }\n\n                this.cleanUp();\n            }\n            return true;\n        },\n        /**\n         * Add a callback on an event.\n         * @param {String} name the name of the event (data, end, error)\n         * @param {Function} listener the function to call when the event is triggered\n         * @return {GenericWorker} the current object for chainability\n         */\n        on : function (name, listener) {\n            this._listeners[name].push(listener);\n            return this;\n        },\n        /**\n         * Clean any references when a worker is ending.\n         */\n        cleanUp : function () {\n            this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n            this._listeners = [];\n        },\n        /**\n         * Trigger an event. This will call registered callback with the provided arg.\n         * @param {String} name the name of the event (data, end, error)\n         * @param {Object} arg the argument to call the callback with.\n         */\n        emit : function (name, arg) {\n            if (this._listeners[name]) {\n                for(var i = 0; i < this._listeners[name].length; i++) {\n                    this._listeners[name][i].call(this, arg);\n                }\n            }\n        },\n        /**\n         * Chain a worker with an other.\n         * @param {Worker} next the worker receiving events from the current one.\n         * @return {worker} the next worker for chainability\n         */\n        pipe : function (next) {\n            return next.registerPrevious(this);\n        },\n        /**\n         * Same as `pipe` in the other direction.\n         * Using an API with `pipe(next)` is very easy.\n         * Implementing the API with the point of view of the next one registering\n         * a source is easier, see the ZipFileWorker.\n         * @param {Worker} previous the previous worker, sending events to this one\n         * @return {Worker} the current worker for chainability\n         */\n        registerPrevious : function (previous) {\n            if (this.isLocked) {\n                throw new Error(\"The stream '\" + this + \"' has already been used.\");\n            }\n\n            // sharing the streamInfo...\n            this.streamInfo = previous.streamInfo;\n            // ... and adding our own bits\n            this.mergeStreamInfo();\n            this.previous =  previous;\n            var self = this;\n            previous.on('data', function (chunk) {\n                self.processChunk(chunk);\n            });\n            previous.on('end', function () {\n                self.end();\n            });\n            previous.on('error', function (e) {\n                self.error(e);\n            });\n            return this;\n        },\n        /**\n         * Pause the stream so it doesn't send events anymore.\n         * @return {Boolean} true if this call paused the worker, false otherwise.\n         */\n        pause : function () {\n            if(this.isPaused || this.isFinished) {\n                return false;\n            }\n            this.isPaused = true;\n\n            if(this.previous) {\n                this.previous.pause();\n            }\n            return true;\n        },\n        /**\n         * Resume a paused stream.\n         * @return {Boolean} true if this call resumed the worker, false otherwise.\n         */\n        resume : function () {\n            if(!this.isPaused || this.isFinished) {\n                return false;\n            }\n            this.isPaused = false;\n\n            // if true, the worker tried to resume but failed\n            var withError = false;\n            if(this.generatedError) {\n                this.error(this.generatedError);\n                withError = true;\n            }\n            if(this.previous) {\n                this.previous.resume();\n            }\n\n            return !withError;\n        },\n        /**\n         * Flush any remaining bytes as the stream is ending.\n         */\n        flush : function () {},\n        /**\n         * Process a chunk. This is usually the method overridden.\n         * @param {Object} chunk the chunk to process.\n         */\n        processChunk : function(chunk) {\n            this.push(chunk);\n        },\n        /**\n         * Add a key/value to be added in the workers chain streamInfo once activated.\n         * @param {String} key the key to use\n         * @param {Object} value the associated value\n         * @return {Worker} the current worker for chainability\n         */\n        withStreamInfo : function (key, value) {\n            this.extraStreamInfo[key] = value;\n            this.mergeStreamInfo();\n            return this;\n        },\n        /**\n         * Merge this worker's streamInfo into the chain's streamInfo.\n         */\n        mergeStreamInfo : function () {\n            for(var key in this.extraStreamInfo) {\n                if (!this.extraStreamInfo.hasOwnProperty(key)) {\n                    continue;\n                }\n                this.streamInfo[key] = this.extraStreamInfo[key];\n            }\n        },\n\n        /**\n         * Lock the stream to prevent further updates on the workers chain.\n         * After calling this method, all calls to pipe will fail.\n         */\n        lock: function () {\n            if (this.isLocked) {\n                throw new Error(\"The stream '\" + this + \"' has already been used.\");\n            }\n            this.isLocked = true;\n            if (this.previous) {\n                this.previous.lock();\n            }\n        },\n\n        /**\n         *\n         * Pretty print the workers chain.\n         */\n        toString : function () {\n            var me = \"Worker \" + this.name;\n            if (this.previous) {\n                return this.previous + \" -> \" + me;\n            } else {\n                return me;\n            }\n        }\n    };\n\n    module.exports = GenericWorker;\n\n    },{}],39:[function(require,module,exports){\n    (function (Buffer){\n    'use strict';\n\n    var utils = require('../utils');\n    var ConvertWorker = require('./ConvertWorker');\n    var GenericWorker = require('./GenericWorker');\n    var base64 = require('../base64');\n    var support = require(\"../support\");\n    var external = require(\"../external\");\n\n    var NodejsStreamOutputAdapter = null;\n    if (support.nodestream) {\n        try {\n            NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter');\n        } catch(e) {}\n    }\n\n    /**\n     * Apply the final transformation of the data. If the user wants a Blob for\n     * example, it's easier to work with an U8intArray and finally do the\n     * ArrayBuffer/Blob conversion.\n     * @param {String} type the name of the final type\n     * @param {String|Uint8Array|Buffer} content the content to transform\n     * @param {String} mimeType the mime type of the content, if applicable.\n     * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n     */\n    function transformZipOutput(type, content, mimeType) {\n        switch(type) {\n            case \"blob\" :\n                return utils.newBlob(utils.transformTo(\"arraybuffer\", content), mimeType);\n            case \"base64\" :\n                return base64.encode(content);\n            default :\n                return utils.transformTo(type, content);\n        }\n    }\n\n    /**\n     * Concatenate an array of data of the given type.\n     * @param {String} type the type of the data in the given array.\n     * @param {Array} dataArray the array containing the data chunks to concatenate\n     * @return {String|Uint8Array|Buffer} the concatenated data\n     * @throws Error if the asked type is unsupported\n     */\n    function concat (type, dataArray) {\n        var i, index = 0, res = null, totalLength = 0;\n        for(i = 0; i < dataArray.length; i++) {\n            totalLength += dataArray[i].length;\n        }\n        switch(type) {\n            case \"string\":\n                return dataArray.join(\"\");\n              case \"array\":\n                return Array.prototype.concat.apply([], dataArray);\n            case \"uint8array\":\n                res = new Uint8Array(totalLength);\n                for(i = 0; i < dataArray.length; i++) {\n                    res.set(dataArray[i], index);\n                    index += dataArray[i].length;\n                }\n                return res;\n            case \"nodebuffer\":\n                return Buffer.concat(dataArray);\n            default:\n                throw new Error(\"concat : unsupported type '\"  + type + \"'\");\n        }\n    }\n\n    /**\n     * Listen a StreamHelper, accumulate its content and concatenate it into a\n     * complete block.\n     * @param {StreamHelper} helper the helper to use.\n     * @param {Function} updateCallback a callback called on each update. Called\n     * with one arg :\n     * - the metadata linked to the update received.\n     * @return Promise the promise for the accumulation.\n     */\n    function accumulate(helper, updateCallback) {\n        return new external.Promise(function (resolve, reject){\n            var dataArray = [];\n            var chunkType = helper._internalType,\n                resultType = helper._outputType,\n                mimeType = helper._mimeType;\n            helper\n            .on('data', function (data, meta) {\n                dataArray.push(data);\n                if(updateCallback) {\n                    updateCallback(meta);\n                }\n            })\n            .on('error', function(err) {\n                dataArray = [];\n                reject(err);\n            })\n            .on('end', function (){\n                try {\n                    var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n                    resolve(result);\n                } catch (e) {\n                    reject(e);\n                }\n                dataArray = [];\n            })\n            .resume();\n        });\n    }\n\n    /**\n     * An helper to easily use workers outside of JSZip.\n     * @constructor\n     * @param {Worker} worker the worker to wrap\n     * @param {String} outputType the type of data expected by the use\n     * @param {String} mimeType the mime type of the content, if applicable.\n     */\n    function StreamHelper(worker, outputType, mimeType) {\n        var internalType = outputType;\n        switch(outputType) {\n            case \"blob\":\n            case \"arraybuffer\":\n                internalType = \"uint8array\";\n            break;\n            case \"base64\":\n                internalType = \"string\";\n            break;\n        }\n\n        try {\n            // the type used internally\n            this._internalType = internalType;\n            // the type used to output results\n            this._outputType = outputType;\n            // the mime type\n            this._mimeType = mimeType;\n            utils.checkSupport(internalType);\n            this._worker = worker.pipe(new ConvertWorker(internalType));\n            // the last workers can be rewired without issues but we need to\n            // prevent any updates on previous workers.\n            worker.lock();\n        } catch(e) {\n            this._worker = new GenericWorker(\"error\");\n            this._worker.error(e);\n        }\n    }\n\n    StreamHelper.prototype = {\n        /**\n         * Listen a StreamHelper, accumulate its content and concatenate it into a\n         * complete block.\n         * @param {Function} updateCb the update callback.\n         * @return Promise the promise for the accumulation.\n         */\n        accumulate : function (updateCb) {\n            return accumulate(this, updateCb);\n        },\n        /**\n         * Add a listener on an event triggered on a stream.\n         * @param {String} evt the name of the event\n         * @param {Function} fn the listener\n         * @return {StreamHelper} the current helper.\n         */\n        on : function (evt, fn) {\n            var self = this;\n\n            if(evt === \"data\") {\n                this._worker.on(evt, function (chunk) {\n                    fn.call(self, chunk.data, chunk.meta);\n                });\n            } else {\n                this._worker.on(evt, function () {\n                    utils.delay(fn, arguments, self);\n                });\n            }\n            return this;\n        },\n        /**\n         * Resume the flow of chunks.\n         * @return {StreamHelper} the current helper.\n         */\n        resume : function () {\n            utils.delay(this._worker.resume, [], this._worker);\n            return this;\n        },\n        /**\n         * Pause the flow of chunks.\n         * @return {StreamHelper} the current helper.\n         */\n        pause : function () {\n            this._worker.pause();\n            return this;\n        },\n        /**\n         * Return a nodejs stream for this helper.\n         * @param {Function} updateCb the update callback.\n         * @return {NodejsStreamOutputAdapter} the nodejs stream.\n         */\n        toNodejsStream : function (updateCb) {\n            utils.checkSupport(\"nodestream\");\n            if (this._outputType !== \"nodebuffer\") {\n                // an object stream containing blob/arraybuffer/uint8array/string\n                // is strange and I don't know if it would be useful.\n                // I you find this comment and have a good usecase, please open a\n                // bug report !\n                throw new Error(this._outputType + \" is not supported by this method\");\n            }\n\n            return new NodejsStreamOutputAdapter(this, {\n                objectMode : this._outputType !== \"nodebuffer\"\n            }, updateCb);\n        }\n    };\n\n\n    module.exports = StreamHelper;\n\n    }).call(this,require(\"buffer\").Buffer)\n    },{\"../base64\":11,\"../external\":16,\"../nodejs/NodejsStreamOutputAdapter\":24,\"../support\":40,\"../utils\":42,\"./ConvertWorker\":34,\"./GenericWorker\":38,\"buffer\":3}],40:[function(require,module,exports){\n    (function (Buffer){\n    'use strict';\n\n    exports.base64 = true;\n    exports.array = true;\n    exports.string = true;\n    exports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n    exports.nodebuffer = typeof Buffer !== \"undefined\";\n    // contains true if JSZip can read/generate Uint8Array, false otherwise.\n    exports.uint8array = typeof Uint8Array !== \"undefined\";\n\n    if (typeof ArrayBuffer === \"undefined\") {\n        exports.blob = false;\n    }\n    else {\n        var buffer = new ArrayBuffer(0);\n        try {\n            exports.blob = new Blob([buffer], {\n                type: \"application/zip\"\n            }).size === 0;\n        }\n        catch (e) {\n            try {\n                var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n                var builder = new Builder();\n                builder.append(buffer);\n                exports.blob = builder.getBlob('application/zip').size === 0;\n            }\n            catch (e) {\n                exports.blob = false;\n            }\n        }\n    }\n\n    try {\n        exports.nodestream = !!require('readable-stream').Readable;\n    } catch(e) {\n        exports.nodestream = false;\n    }\n\n    }).call(this,require(\"buffer\").Buffer)\n    },{\"buffer\":3,\"readable-stream\":26}],41:[function(require,module,exports){\n    'use strict';\n\n    var utils = require('./utils');\n    var support = require('./support');\n    var nodejsUtils = require('./nodejsUtils');\n    var GenericWorker = require('./stream/GenericWorker');\n\n    /**\n     * The following functions come from pako, from pako/lib/utils/strings\n     * released under the MIT license, see pako https://github.com/nodeca/pako/\n     */\n\n    // Table with utf8 lengths (calculated by first byte of sequence)\n    // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n    // because max possible codepoint is 0x10ffff\n    var _utf8len = new Array(256);\n    for (var i=0; i<256; i++) {\n      _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n    }\n    _utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n    // convert string to array (typed, when possible)\n    var string2buf = function (str) {\n        var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n        // count binary size\n        for (m_pos = 0; m_pos < str_len; m_pos++) {\n            c = str.charCodeAt(m_pos);\n            if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n                c2 = str.charCodeAt(m_pos+1);\n                if ((c2 & 0xfc00) === 0xdc00) {\n                    c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                    m_pos++;\n                }\n            }\n            buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n        }\n\n        // allocate buffer\n        if (support.uint8array) {\n            buf = new Uint8Array(buf_len);\n        } else {\n            buf = new Array(buf_len);\n        }\n\n        // convert\n        for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n            c = str.charCodeAt(m_pos);\n            if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n                c2 = str.charCodeAt(m_pos+1);\n                if ((c2 & 0xfc00) === 0xdc00) {\n                    c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                    m_pos++;\n                }\n            }\n            if (c < 0x80) {\n                /* one byte */\n                buf[i++] = c;\n            } else if (c < 0x800) {\n                /* two bytes */\n                buf[i++] = 0xC0 | (c >>> 6);\n                buf[i++] = 0x80 | (c & 0x3f);\n            } else if (c < 0x10000) {\n                /* three bytes */\n                buf[i++] = 0xE0 | (c >>> 12);\n                buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n                buf[i++] = 0x80 | (c & 0x3f);\n            } else {\n                /* four bytes */\n                buf[i++] = 0xf0 | (c >>> 18);\n                buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n                buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n                buf[i++] = 0x80 | (c & 0x3f);\n            }\n        }\n\n        return buf;\n    };\n\n    // Calculate max possible position in utf8 buffer,\n    // that will not break sequence. If that's not possible\n    // - (very small limits) return max size as is.\n    //\n    // buf[] - utf8 bytes array\n    // max   - length limit (mandatory);\n    var utf8border = function(buf, max) {\n        var pos;\n\n        max = max || buf.length;\n        if (max > buf.length) { max = buf.length; }\n\n        // go back from last position, until start of sequence found\n        pos = max-1;\n        while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n        // Fuckup - very small and broken sequence,\n        // return max, because we should return something anyway.\n        if (pos < 0) { return max; }\n\n        // If we came to start of buffer - that means vuffer is too small,\n        // return max too.\n        if (pos === 0) { return max; }\n\n        return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n    };\n\n    // convert array to string\n    var buf2string = function (buf) {\n        var str, i, out, c, c_len;\n        var len = buf.length;\n\n        // Reserve max possible length (2 words per char)\n        // NB: by unknown reasons, Array is significantly faster for\n        //     String.fromCharCode.apply than Uint16Array.\n        var utf16buf = new Array(len*2);\n\n        for (out=0, i=0; i<len;) {\n            c = buf[i++];\n            // quick process ascii\n            if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n            c_len = _utf8len[c];\n            // skip 5 & 6 byte codes\n            if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n            // apply mask on first byte\n            c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n            // join the rest\n            while (c_len > 1 && i < len) {\n                c = (c << 6) | (buf[i++] & 0x3f);\n                c_len--;\n            }\n\n            // terminated by end of string?\n            if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n            if (c < 0x10000) {\n                utf16buf[out++] = c;\n            } else {\n                c -= 0x10000;\n                utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n                utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n            }\n        }\n\n        // shrinkBuf(utf16buf, out)\n        if (utf16buf.length !== out) {\n            if(utf16buf.subarray) {\n                utf16buf = utf16buf.subarray(0, out);\n            } else {\n                utf16buf.length = out;\n            }\n        }\n\n        // return String.fromCharCode.apply(null, utf16buf);\n        return utils.applyFromCharCode(utf16buf);\n    };\n\n\n    // That's all for the pako functions.\n\n\n    /**\n     * Transform a javascript string into an array (typed if possible) of bytes,\n     * UTF-8 encoded.\n     * @param {String} str the string to encode\n     * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n     */\n    exports.utf8encode = function utf8encode(str) {\n        if (support.nodebuffer) {\n            return nodejsUtils.newBufferFrom(str, \"utf-8\");\n        }\n\n        return string2buf(str);\n    };\n\n\n    /**\n     * Transform a bytes array (or a representation) representing an UTF-8 encoded\n     * string into a javascript string.\n     * @param {Array|Uint8Array|Buffer} buf the data de decode\n     * @return {String} the decoded string.\n     */\n    exports.utf8decode = function utf8decode(buf) {\n        if (support.nodebuffer) {\n            return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n        }\n\n        buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n        return buf2string(buf);\n    };\n\n    /**\n     * A worker to decode utf8 encoded binary chunks into string chunks.\n     * @constructor\n     */\n    function Utf8DecodeWorker() {\n        GenericWorker.call(this, \"utf-8 decode\");\n        // the last bytes if a chunk didn't end with a complete codepoint.\n        this.leftOver = null;\n    }\n    utils.inherits(Utf8DecodeWorker, GenericWorker);\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    Utf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n        var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n        // 1st step, re-use what's left of the previous chunk\n        if (this.leftOver && this.leftOver.length) {\n            if(support.uint8array) {\n                var previousData = data;\n                data = new Uint8Array(previousData.length + this.leftOver.length);\n                data.set(this.leftOver, 0);\n                data.set(previousData, this.leftOver.length);\n            } else {\n                data = this.leftOver.concat(data);\n            }\n            this.leftOver = null;\n        }\n\n        var nextBoundary = utf8border(data);\n        var usableData = data;\n        if (nextBoundary !== data.length) {\n            if (support.uint8array) {\n                usableData = data.subarray(0, nextBoundary);\n                this.leftOver = data.subarray(nextBoundary, data.length);\n            } else {\n                usableData = data.slice(0, nextBoundary);\n                this.leftOver = data.slice(nextBoundary, data.length);\n            }\n        }\n\n        this.push({\n            data : exports.utf8decode(usableData),\n            meta : chunk.meta\n        });\n    };\n\n    /**\n     * @see GenericWorker.flush\n     */\n    Utf8DecodeWorker.prototype.flush = function () {\n        if(this.leftOver && this.leftOver.length) {\n            this.push({\n                data : exports.utf8decode(this.leftOver),\n                meta : {}\n            });\n            this.leftOver = null;\n        }\n    };\n    exports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n    /**\n     * A worker to endcode string chunks into utf8 encoded binary chunks.\n     * @constructor\n     */\n    function Utf8EncodeWorker() {\n        GenericWorker.call(this, \"utf-8 encode\");\n    }\n    utils.inherits(Utf8EncodeWorker, GenericWorker);\n\n    /**\n     * @see GenericWorker.processChunk\n     */\n    Utf8EncodeWorker.prototype.processChunk = function (chunk) {\n        this.push({\n            data : exports.utf8encode(chunk.data),\n            meta : chunk.meta\n        });\n    };\n    exports.Utf8EncodeWorker = Utf8EncodeWorker;\n\n    },{\"./nodejsUtils\":22,\"./stream/GenericWorker\":38,\"./support\":40,\"./utils\":42}],42:[function(require,module,exports){\n    'use strict';\n\n    var support = require('./support');\n    var base64 = require('./base64');\n    var nodejsUtils = require('./nodejsUtils');\n    var setImmediate = require('set-immediate-shim');\n    var external = require(\"./external\");\n\n\n    /**\n     * Convert a string that pass as a \"binary string\": it should represent a byte\n     * array but may have > 255 char codes. Be sure to take only the first byte\n     * and returns the byte array.\n     * @param {String} str the string to transform.\n     * @return {Array|Uint8Array} the string in a binary format.\n     */\n    function string2binary(str) {\n        var result = null;\n        if (support.uint8array) {\n          result = new Uint8Array(str.length);\n        } else {\n          result = new Array(str.length);\n        }\n        return stringToArrayLike(str, result);\n    }\n\n    /**\n     * Create a new blob with the given content and the given type.\n     * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n     * an Uint8Array because the stock browser of android 4 won't accept it (it\n     * will be silently converted to a string, \"[object Uint8Array]\").\n     *\n     * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n     * when a large amount of Array is used to create the Blob, the amount of\n     * memory consumed is nearly 100 times the original data amount.\n     *\n     * @param {String} type the mime type of the blob.\n     * @return {Blob} the created blob.\n     */\n    exports.newBlob = function(part, type) {\n        exports.checkSupport(\"blob\");\n\n        try {\n            // Blob constructor\n            return new Blob([part], {\n                type: type\n            });\n        }\n        catch (e) {\n\n            try {\n                // deprecated, browser only, old way\n                var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n                var builder = new Builder();\n                builder.append(part);\n                return builder.getBlob(type);\n            }\n            catch (e) {\n\n                // well, fuck ?!\n                throw new Error(\"Bug : can't construct the Blob.\");\n            }\n        }\n\n\n    };\n    /**\n     * The identity function.\n     * @param {Object} input the input.\n     * @return {Object} the same input.\n     */\n    function identity(input) {\n        return input;\n    }\n\n    /**\n     * Fill in an array with a string.\n     * @param {String} str the string to use.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n     * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n     */\n    function stringToArrayLike(str, array) {\n        for (var i = 0; i < str.length; ++i) {\n            array[i] = str.charCodeAt(i) & 0xFF;\n        }\n        return array;\n    }\n\n    /**\n     * An helper for the function arrayLikeToString.\n     * This contains static information and functions that\n     * can be optimized by the browser JIT compiler.\n     */\n    var arrayToStringHelper = {\n        /**\n         * Transform an array of int into a string, chunk by chunk.\n         * See the performances notes on arrayLikeToString.\n         * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n         * @param {String} type the type of the array.\n         * @param {Integer} chunk the chunk size.\n         * @return {String} the resulting string.\n         * @throws Error if the chunk is too big for the stack.\n         */\n        stringifyByChunk: function(array, type, chunk) {\n            var result = [], k = 0, len = array.length;\n            // shortcut\n            if (len <= chunk) {\n                return String.fromCharCode.apply(null, array);\n            }\n            while (k < len) {\n                if (type === \"array\" || type === \"nodebuffer\") {\n                    result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n                }\n                else {\n                    result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n                }\n                k += chunk;\n            }\n            return result.join(\"\");\n        },\n        /**\n         * Call String.fromCharCode on every item in the array.\n         * This is the naive implementation, which generate A LOT of intermediate string.\n         * This should be used when everything else fail.\n         * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n         * @return {String} the result.\n         */\n        stringifyByChar: function(array){\n            var resultStr = \"\";\n            for(var i = 0; i < array.length; i++) {\n                resultStr += String.fromCharCode(array[i]);\n            }\n            return resultStr;\n        },\n        applyCanBeUsed : {\n            /**\n             * true if the browser accepts to use String.fromCharCode on Uint8Array\n             */\n            uint8array : (function () {\n                try {\n                    return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n                } catch (e) {\n                    return false;\n                }\n            })(),\n            /**\n             * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n             */\n            nodebuffer : (function () {\n                try {\n                    return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n                } catch (e) {\n                    return false;\n                }\n            })()\n        }\n    };\n\n    /**\n     * Transform an array-like object to a string.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @return {String} the result.\n     */\n    function arrayLikeToString(array) {\n        // Performances notes :\n        // --------------------\n        // String.fromCharCode.apply(null, array) is the fastest, see\n        // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n        // but the stack is limited (and we can get huge arrays !).\n        //\n        // result += String.fromCharCode(array[i]); generate too many strings !\n        //\n        // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n        // TODO : we now have workers that split the work. Do we still need that ?\n        var chunk = 65536,\n            type = exports.getTypeOf(array),\n            canUseApply = true;\n        if (type === \"uint8array\") {\n            canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n        } else if (type === \"nodebuffer\") {\n            canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n        }\n\n        if (canUseApply) {\n            while (chunk > 1) {\n                try {\n                    return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n                } catch (e) {\n                    chunk = Math.floor(chunk / 2);\n                }\n            }\n        }\n\n        // no apply or chunk error : slow and painful algorithm\n        // default browser on android 4.*\n        return arrayToStringHelper.stringifyByChar(array);\n    }\n\n    exports.applyFromCharCode = arrayLikeToString;\n\n\n    /**\n     * Copy the data from an array-like to an other array-like.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n     * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n     */\n    function arrayLikeToArrayLike(arrayFrom, arrayTo) {\n        for (var i = 0; i < arrayFrom.length; i++) {\n            arrayTo[i] = arrayFrom[i];\n        }\n        return arrayTo;\n    }\n\n    // a matrix containing functions to transform everything into everything.\n    var transform = {};\n\n    // string to ?\n    transform[\"string\"] = {\n        \"string\": identity,\n        \"array\": function(input) {\n            return stringToArrayLike(input, new Array(input.length));\n        },\n        \"arraybuffer\": function(input) {\n            return transform[\"string\"][\"uint8array\"](input).buffer;\n        },\n        \"uint8array\": function(input) {\n            return stringToArrayLike(input, new Uint8Array(input.length));\n        },\n        \"nodebuffer\": function(input) {\n            return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));\n        }\n    };\n\n    // array to ?\n    transform[\"array\"] = {\n        \"string\": arrayLikeToString,\n        \"array\": identity,\n        \"arraybuffer\": function(input) {\n            return (new Uint8Array(input)).buffer;\n        },\n        \"uint8array\": function(input) {\n            return new Uint8Array(input);\n        },\n        \"nodebuffer\": function(input) {\n            return nodejsUtils.newBufferFrom(input);\n        }\n    };\n\n    // arraybuffer to ?\n    transform[\"arraybuffer\"] = {\n        \"string\": function(input) {\n            return arrayLikeToString(new Uint8Array(input));\n        },\n        \"array\": function(input) {\n            return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n        },\n        \"arraybuffer\": identity,\n        \"uint8array\": function(input) {\n            return new Uint8Array(input);\n        },\n        \"nodebuffer\": function(input) {\n            return nodejsUtils.newBufferFrom(new Uint8Array(input));\n        }\n    };\n\n    // uint8array to ?\n    transform[\"uint8array\"] = {\n        \"string\": arrayLikeToString,\n        \"array\": function(input) {\n            return arrayLikeToArrayLike(input, new Array(input.length));\n        },\n        \"arraybuffer\": function(input) {\n            return input.buffer;\n        },\n        \"uint8array\": identity,\n        \"nodebuffer\": function(input) {\n            return nodejsUtils.newBufferFrom(input);\n        }\n    };\n\n    // nodebuffer to ?\n    transform[\"nodebuffer\"] = {\n        \"string\": arrayLikeToString,\n        \"array\": function(input) {\n            return arrayLikeToArrayLike(input, new Array(input.length));\n        },\n        \"arraybuffer\": function(input) {\n            return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n        },\n        \"uint8array\": function(input) {\n            return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n        },\n        \"nodebuffer\": identity\n    };\n\n    /**\n     * Transform an input into any type.\n     * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n     * If no output type is specified, the unmodified input will be returned.\n     * @param {String} outputType the output type.\n     * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n     * @throws {Error} an Error if the browser doesn't support the requested output type.\n     */\n    exports.transformTo = function(outputType, input) {\n        if (!input) {\n            // undefined, null, etc\n            // an empty string won't harm.\n            input = \"\";\n        }\n        if (!outputType) {\n            return input;\n        }\n        exports.checkSupport(outputType);\n        var inputType = exports.getTypeOf(input);\n        var result = transform[inputType][outputType](input);\n        return result;\n    };\n\n    /**\n     * Return the type of the input.\n     * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n     * @param {Object} input the input to identify.\n     * @return {String} the (lowercase) type of the input.\n     */\n    exports.getTypeOf = function(input) {\n        if (typeof input === \"string\") {\n            return \"string\";\n        }\n        if (Object.prototype.toString.call(input) === \"[object Array]\") {\n            return \"array\";\n        }\n        if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n            return \"nodebuffer\";\n        }\n        if (support.uint8array && input instanceof Uint8Array) {\n            return \"uint8array\";\n        }\n        if (support.arraybuffer && input instanceof ArrayBuffer) {\n            return \"arraybuffer\";\n        }\n    };\n\n    /**\n     * Throw an exception if the type is not supported.\n     * @param {String} type the type to check.\n     * @throws {Error} an Error if the browser doesn't support the requested type.\n     */\n    exports.checkSupport = function(type) {\n        var supported = support[type.toLowerCase()];\n        if (!supported) {\n            throw new Error(type + \" is not supported by this platform\");\n        }\n    };\n\n    exports.MAX_VALUE_16BITS = 65535;\n    exports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n    /**\n     * Prettify a string read as binary.\n     * @param {string} str the string to prettify.\n     * @return {string} a pretty string.\n     */\n    exports.pretty = function(str) {\n        var res = '',\n            code, i;\n        for (i = 0; i < (str || \"\").length; i++) {\n            code = str.charCodeAt(i);\n            res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n        }\n        return res;\n    };\n\n    /**\n     * Defer the call of a function.\n     * @param {Function} callback the function to call asynchronously.\n     * @param {Array} args the arguments to give to the callback.\n     */\n    exports.delay = function(callback, args, self) {\n        setImmediate(function () {\n            callback.apply(self || null, args || []);\n        });\n    };\n\n    /**\n     * Extends a prototype with an other, without calling a constructor with\n     * side effects. Inspired by nodejs' `utils.inherits`\n     * @param {Function} ctor the constructor to augment\n     * @param {Function} superCtor the parent constructor to use\n     */\n    exports.inherits = function (ctor, superCtor) {\n        var Obj = function() {};\n        Obj.prototype = superCtor.prototype;\n        ctor.prototype = new Obj();\n    };\n\n    /**\n     * Merge the objects passed as parameters into a new one.\n     * @private\n     * @param {...Object} var_args All objects to merge.\n     * @return {Object} a new object with the data of the others.\n     */\n    exports.extend = function() {\n        var result = {}, i, attr;\n        for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n            for (attr in arguments[i]) {\n                if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n                    result[attr] = arguments[i][attr];\n                }\n            }\n        }\n        return result;\n    };\n\n    /**\n     * Transform arbitrary content into a Promise.\n     * @param {String} name a name for the content being processed.\n     * @param {Object} inputData the content to process.\n     * @param {Boolean} isBinary true if the content is not an unicode string\n     * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n     * @param {Boolean} isBase64 true if the string content is encoded with base64.\n     * @return {Promise} a promise in a format usable by JSZip.\n     */\n    exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n        // if inputData is already a promise, this flatten it.\n        var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n            var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n            if (isBlob && typeof FileReader !== \"undefined\") {\n                return new external.Promise(function (resolve, reject) {\n                    var reader = new FileReader();\n\n                    reader.onload = function(e) {\n                        resolve(e.target.result);\n                    };\n                    reader.onerror = function(e) {\n                        reject(e.target.error);\n                    };\n                    reader.readAsArrayBuffer(data);\n                });\n            } else {\n                return data;\n            }\n        });\n\n        return promise.then(function(data) {\n            var dataType = exports.getTypeOf(data);\n\n            if (!dataType) {\n                return external.Promise.reject(\n                    new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n                              \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n                );\n            }\n            // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n            if (dataType === \"arraybuffer\") {\n                data = exports.transformTo(\"uint8array\", data);\n            } else if (dataType === \"string\") {\n                if (isBase64) {\n                    data = base64.decode(data);\n                }\n                else if (isBinary) {\n                    // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n                    if (isOptimizedBinaryString !== true) {\n                        // this is a string, not in a base64 format.\n                        // Be sure that this is a correct \"binary string\"\n                        data = string2binary(data);\n                    }\n                }\n            }\n            return data;\n        });\n    };\n\n    },{\"./base64\":11,\"./external\":16,\"./nodejsUtils\":22,\"./support\":40,\"set-immediate-shim\":79}],43:[function(require,module,exports){\n    'use strict';\n    var readerFor = require('./reader/readerFor');\n    var utils = require('./utils');\n    var sig = require('./signature');\n    var ZipEntry = require('./zipEntry');\n    var utf8 = require('./utf8');\n    var support = require('./support');\n    //  class ZipEntries {{{\n    /**\n     * All the entries in the zip file.\n     * @constructor\n     * @param {Object} loadOptions Options for loading the stream.\n     */\n    function ZipEntries(loadOptions) {\n        this.files = [];\n        this.loadOptions = loadOptions;\n    }\n    ZipEntries.prototype = {\n        /**\n         * Check that the reader is on the specified signature.\n         * @param {string} expectedSignature the expected signature.\n         * @throws {Error} if it is an other signature.\n         */\n        checkSignature: function(expectedSignature) {\n            if (!this.reader.readAndCheckSignature(expectedSignature)) {\n                this.reader.index -= 4;\n                var signature = this.reader.readString(4);\n                throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n            }\n        },\n        /**\n         * Check if the given signature is at the given index.\n         * @param {number} askedIndex the index to check.\n         * @param {string} expectedSignature the signature to expect.\n         * @return {boolean} true if the signature is here, false otherwise.\n         */\n        isSignature: function(askedIndex, expectedSignature) {\n            var currentIndex = this.reader.index;\n            this.reader.setIndex(askedIndex);\n            var signature = this.reader.readString(4);\n            var result = signature === expectedSignature;\n            this.reader.setIndex(currentIndex);\n            return result;\n        },\n        /**\n         * Read the end of the central directory.\n         */\n        readBlockEndOfCentral: function() {\n            this.diskNumber = this.reader.readInt(2);\n            this.diskWithCentralDirStart = this.reader.readInt(2);\n            this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n            this.centralDirRecords = this.reader.readInt(2);\n            this.centralDirSize = this.reader.readInt(4);\n            this.centralDirOffset = this.reader.readInt(4);\n\n            this.zipCommentLength = this.reader.readInt(2);\n            // warning : the encoding depends of the system locale\n            // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n            // On a windows machine, this field is encoded with the localized windows code page.\n            var zipComment = this.reader.readData(this.zipCommentLength);\n            var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n            // To get consistent behavior with the generation part, we will assume that\n            // this is utf8 encoded unless specified otherwise.\n            var decodeContent = utils.transformTo(decodeParamType, zipComment);\n            this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n        },\n        /**\n         * Read the end of the Zip 64 central directory.\n         * Not merged with the method readEndOfCentral :\n         * The end of central can coexist with its Zip64 brother,\n         * I don't want to read the wrong number of bytes !\n         */\n        readBlockZip64EndOfCentral: function() {\n            this.zip64EndOfCentralSize = this.reader.readInt(8);\n            this.reader.skip(4);\n            // this.versionMadeBy = this.reader.readString(2);\n            // this.versionNeeded = this.reader.readInt(2);\n            this.diskNumber = this.reader.readInt(4);\n            this.diskWithCentralDirStart = this.reader.readInt(4);\n            this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n            this.centralDirRecords = this.reader.readInt(8);\n            this.centralDirSize = this.reader.readInt(8);\n            this.centralDirOffset = this.reader.readInt(8);\n\n            this.zip64ExtensibleData = {};\n            var extraDataSize = this.zip64EndOfCentralSize - 44,\n                index = 0,\n                extraFieldId,\n                extraFieldLength,\n                extraFieldValue;\n            while (index < extraDataSize) {\n                extraFieldId = this.reader.readInt(2);\n                extraFieldLength = this.reader.readInt(4);\n                extraFieldValue = this.reader.readData(extraFieldLength);\n                this.zip64ExtensibleData[extraFieldId] = {\n                    id: extraFieldId,\n                    length: extraFieldLength,\n                    value: extraFieldValue\n                };\n            }\n        },\n        /**\n         * Read the end of the Zip 64 central directory locator.\n         */\n        readBlockZip64EndOfCentralLocator: function() {\n            this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n            this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n            this.disksCount = this.reader.readInt(4);\n            if (this.disksCount > 1) {\n                throw new Error(\"Multi-volumes zip are not supported\");\n            }\n        },\n        /**\n         * Read the local files, based on the offset read in the central part.\n         */\n        readLocalFiles: function() {\n            var i, file;\n            for (i = 0; i < this.files.length; i++) {\n                file = this.files[i];\n                this.reader.setIndex(file.localHeaderOffset);\n                this.checkSignature(sig.LOCAL_FILE_HEADER);\n                file.readLocalPart(this.reader);\n                file.handleUTF8();\n                file.processAttributes();\n            }\n        },\n        /**\n         * Read the central directory.\n         */\n        readCentralDir: function() {\n            var file;\n\n            this.reader.setIndex(this.centralDirOffset);\n            while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {\n                file = new ZipEntry({\n                    zip64: this.zip64\n                }, this.loadOptions);\n                file.readCentralPart(this.reader);\n                this.files.push(file);\n            }\n\n            if (this.centralDirRecords !== this.files.length) {\n                if (this.centralDirRecords !== 0 && this.files.length === 0) {\n                    // We expected some records but couldn't find ANY.\n                    // This is really suspicious, as if something went wrong.\n                    throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n                } else {\n                    // We found some records but not all.\n                    // Something is wrong but we got something for the user: no error here.\n                    // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n                }\n            }\n        },\n        /**\n         * Read the end of central directory.\n         */\n        readEndOfCentral: function() {\n            var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n            if (offset < 0) {\n                // Check if the content is a truncated zip or complete garbage.\n                // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n                // extractible zip for example) but it can give a good hint.\n                // If an ajax request was used without responseType, we will also\n                // get unreadable data.\n                var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n                if (isGarbage) {\n                    throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n                                    \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n                } else {\n                    throw new Error(\"Corrupted zip: can't find end of central directory\");\n                }\n\n            }\n            this.reader.setIndex(offset);\n            var endOfCentralDirOffset = offset;\n            this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n            this.readBlockEndOfCentral();\n\n\n            /* extract from the zip spec :\n                4)  If one of the fields in the end of central directory\n                    record is too small to hold required data, the field\n                    should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n                    ZIP64 format record should be created.\n                5)  The end of central directory record and the\n                    Zip64 end of central directory locator record must\n                    reside on the same disk when splitting or spanning\n                    an archive.\n             */\n            if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n                this.zip64 = true;\n\n                /*\n                Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n                the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n                all numbers as 64-bit double precision IEEE 754 floating point numbers.\n                So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n                see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n                and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n                */\n\n                // should look for a zip64 EOCD locator\n                offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n                if (offset < 0) {\n                    throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n                }\n                this.reader.setIndex(offset);\n                this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n                this.readBlockZip64EndOfCentralLocator();\n\n                // now the zip64 EOCD record\n                if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n                    // console.warn(\"ZIP64 end of central directory not where expected.\");\n                    this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n                    if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n                        throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n                    }\n                }\n                this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n                this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n                this.readBlockZip64EndOfCentral();\n            }\n\n            var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n            if (this.zip64) {\n                expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n                expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n            }\n\n            var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n            if (extraBytes > 0) {\n                // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n                if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n                    // The offsets seem wrong, but we have something at the specified offset.\n                    // So… we keep it.\n                } else {\n                    // the offset is wrong, update the \"zero\" of the reader\n                    // this happens if data has been prepended (crx files for example)\n                    this.reader.zero = extraBytes;\n                }\n            } else if (extraBytes < 0) {\n                throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n            }\n        },\n        prepareReader: function(data) {\n            this.reader = readerFor(data);\n        },\n        /**\n         * Read a zip file and create ZipEntries.\n         * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n         */\n        load: function(data) {\n            this.prepareReader(data);\n            this.readEndOfCentral();\n            this.readCentralDir();\n            this.readLocalFiles();\n        }\n    };\n    // }}} end of ZipEntries\n    module.exports = ZipEntries;\n\n    },{\"./reader/readerFor\":32,\"./signature\":33,\"./support\":40,\"./utf8\":41,\"./utils\":42,\"./zipEntry\":44}],44:[function(require,module,exports){\n    'use strict';\n    var readerFor = require('./reader/readerFor');\n    var utils = require('./utils');\n    var CompressedObject = require('./compressedObject');\n    var crc32fn = require('./crc32');\n    var utf8 = require('./utf8');\n    var compressions = require('./compressions');\n    var support = require('./support');\n\n    var MADE_BY_DOS = 0x00;\n    var MADE_BY_UNIX = 0x03;\n\n    /**\n     * Find a compression registered in JSZip.\n     * @param {string} compressionMethod the method magic to find.\n     * @return {Object|null} the JSZip compression object, null if none found.\n     */\n    var findCompression = function(compressionMethod) {\n        for (var method in compressions) {\n            if (!compressions.hasOwnProperty(method)) {\n                continue;\n            }\n            if (compressions[method].magic === compressionMethod) {\n                return compressions[method];\n            }\n        }\n        return null;\n    };\n\n    // class ZipEntry {{{\n    /**\n     * An entry in the zip file.\n     * @constructor\n     * @param {Object} options Options of the current file.\n     * @param {Object} loadOptions Options for loading the stream.\n     */\n    function ZipEntry(options, loadOptions) {\n        this.options = options;\n        this.loadOptions = loadOptions;\n    }\n    ZipEntry.prototype = {\n        /**\n         * say if the file is encrypted.\n         * @return {boolean} true if the file is encrypted, false otherwise.\n         */\n        isEncrypted: function() {\n            // bit 1 is set\n            return (this.bitFlag & 0x0001) === 0x0001;\n        },\n        /**\n         * say if the file has utf-8 filename/comment.\n         * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n         */\n        useUTF8: function() {\n            // bit 11 is set\n            return (this.bitFlag & 0x0800) === 0x0800;\n        },\n        /**\n         * Read the local part of a zip file and add the info in this object.\n         * @param {DataReader} reader the reader to use.\n         */\n        readLocalPart: function(reader) {\n            var compression, localExtraFieldsLength;\n\n            // we already know everything from the central dir !\n            // If the central dir data are false, we are doomed.\n            // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.\n            // The less data we get here, the more reliable this should be.\n            // Let's skip the whole header and dash to the data !\n            reader.skip(22);\n            // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n            // Strangely, the filename here is OK.\n            // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n            // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n            // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n            // the internet.\n            //\n            // I think I see the logic here : the central directory is used to display\n            // content and the local directory is used to extract the files. Mixing / and \\\n            // may be used to display \\ to windows users and use / when extracting the files.\n            // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n            this.fileNameLength = reader.readInt(2);\n            localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n            // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n            this.fileName = reader.readData(this.fileNameLength);\n            reader.skip(localExtraFieldsLength);\n\n            if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n                throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n            }\n\n            compression = findCompression(this.compressionMethod);\n            if (compression === null) { // no compression found\n                throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n            }\n            this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n        },\n\n        /**\n         * Read the central part of a zip file and add the info in this object.\n         * @param {DataReader} reader the reader to use.\n         */\n        readCentralPart: function(reader) {\n            this.versionMadeBy = reader.readInt(2);\n            reader.skip(2);\n            // this.versionNeeded = reader.readInt(2);\n            this.bitFlag = reader.readInt(2);\n            this.compressionMethod = reader.readString(2);\n            this.date = reader.readDate();\n            this.crc32 = reader.readInt(4);\n            this.compressedSize = reader.readInt(4);\n            this.uncompressedSize = reader.readInt(4);\n            var fileNameLength = reader.readInt(2);\n            this.extraFieldsLength = reader.readInt(2);\n            this.fileCommentLength = reader.readInt(2);\n            this.diskNumberStart = reader.readInt(2);\n            this.internalFileAttributes = reader.readInt(2);\n            this.externalFileAttributes = reader.readInt(4);\n            this.localHeaderOffset = reader.readInt(4);\n\n            if (this.isEncrypted()) {\n                throw new Error(\"Encrypted zip are not supported\");\n            }\n\n            // will be read in the local part, see the comments there\n            reader.skip(fileNameLength);\n            this.readExtraFields(reader);\n            this.parseZIP64ExtraField(reader);\n            this.fileComment = reader.readData(this.fileCommentLength);\n        },\n\n        /**\n         * Parse the external file attributes and get the unix/dos permissions.\n         */\n        processAttributes: function () {\n            this.unixPermissions = null;\n            this.dosPermissions = null;\n            var madeBy = this.versionMadeBy >> 8;\n\n            // Check if we have the DOS directory flag set.\n            // We look for it in the DOS and UNIX permissions\n            // but some unknown platform could set it as a compatibility flag.\n            this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n            if(madeBy === MADE_BY_DOS) {\n                // first 6 bits (0 to 5)\n                this.dosPermissions = this.externalFileAttributes & 0x3F;\n            }\n\n            if(madeBy === MADE_BY_UNIX) {\n                this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n                // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n            }\n\n            // fail safe : if the name ends with a / it probably means a folder\n            if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n                this.dir = true;\n            }\n        },\n\n        /**\n         * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n         * @param {DataReader} reader the reader to use.\n         */\n        parseZIP64ExtraField: function(reader) {\n\n            if (!this.extraFields[0x0001]) {\n                return;\n            }\n\n            // should be something, preparing the extra reader\n            var extraReader = readerFor(this.extraFields[0x0001].value);\n\n            // I really hope that these 64bits integer can fit in 32 bits integer, because js\n            // won't let us have more.\n            if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n                this.uncompressedSize = extraReader.readInt(8);\n            }\n            if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n                this.compressedSize = extraReader.readInt(8);\n            }\n            if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n                this.localHeaderOffset = extraReader.readInt(8);\n            }\n            if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n                this.diskNumberStart = extraReader.readInt(4);\n            }\n        },\n        /**\n         * Read the central part of a zip file and add the info in this object.\n         * @param {DataReader} reader the reader to use.\n         */\n        readExtraFields: function(reader) {\n            var end = reader.index + this.extraFieldsLength,\n                extraFieldId,\n                extraFieldLength,\n                extraFieldValue;\n\n            if (!this.extraFields) {\n                this.extraFields = {};\n            }\n\n            while (reader.index + 4 < end) {\n                extraFieldId = reader.readInt(2);\n                extraFieldLength = reader.readInt(2);\n                extraFieldValue = reader.readData(extraFieldLength);\n\n                this.extraFields[extraFieldId] = {\n                    id: extraFieldId,\n                    length: extraFieldLength,\n                    value: extraFieldValue\n                };\n            }\n\n            reader.setIndex(end);\n        },\n        /**\n         * Apply an UTF8 transformation if needed.\n         */\n        handleUTF8: function() {\n            var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n            if (this.useUTF8()) {\n                this.fileNameStr = utf8.utf8decode(this.fileName);\n                this.fileCommentStr = utf8.utf8decode(this.fileComment);\n            } else {\n                var upath = this.findExtraFieldUnicodePath();\n                if (upath !== null) {\n                    this.fileNameStr = upath;\n                } else {\n                    // ASCII text or unsupported code page\n                    var fileNameByteArray =  utils.transformTo(decodeParamType, this.fileName);\n                    this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n                }\n\n                var ucomment = this.findExtraFieldUnicodeComment();\n                if (ucomment !== null) {\n                    this.fileCommentStr = ucomment;\n                } else {\n                    // ASCII text or unsupported code page\n                    var commentByteArray =  utils.transformTo(decodeParamType, this.fileComment);\n                    this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n                }\n            }\n        },\n\n        /**\n         * Find the unicode path declared in the extra field, if any.\n         * @return {String} the unicode path, null otherwise.\n         */\n        findExtraFieldUnicodePath: function() {\n            var upathField = this.extraFields[0x7075];\n            if (upathField) {\n                var extraReader = readerFor(upathField.value);\n\n                // wrong version\n                if (extraReader.readInt(1) !== 1) {\n                    return null;\n                }\n\n                // the crc of the filename changed, this field is out of date.\n                if (crc32fn(this.fileName) !== extraReader.readInt(4)) {\n                    return null;\n                }\n\n                return utf8.utf8decode(extraReader.readData(upathField.length - 5));\n            }\n            return null;\n        },\n\n        /**\n         * Find the unicode comment declared in the extra field, if any.\n         * @return {String} the unicode comment, null otherwise.\n         */\n        findExtraFieldUnicodeComment: function() {\n            var ucommentField = this.extraFields[0x6375];\n            if (ucommentField) {\n                var extraReader = readerFor(ucommentField.value);\n\n                // wrong version\n                if (extraReader.readInt(1) !== 1) {\n                    return null;\n                }\n\n                // the crc of the comment changed, this field is out of date.\n                if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {\n                    return null;\n                }\n\n                return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));\n            }\n            return null;\n        }\n    };\n    module.exports = ZipEntry;\n\n    },{\"./compressedObject\":12,\"./compressions\":13,\"./crc32\":14,\"./reader/readerFor\":32,\"./support\":40,\"./utf8\":41,\"./utils\":42}],45:[function(require,module,exports){\n    'use strict';\n\n    var StreamHelper = require('./stream/StreamHelper');\n    var DataWorker = require('./stream/DataWorker');\n    var utf8 = require('./utf8');\n    var CompressedObject = require('./compressedObject');\n    var GenericWorker = require('./stream/GenericWorker');\n\n    /**\n     * A simple object representing a file in the zip file.\n     * @constructor\n     * @param {string} name the name of the file\n     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n     * @param {Object} options the options of the file\n     */\n    var ZipObject = function(name, data, options) {\n        this.name = name;\n        this.dir = options.dir;\n        this.date = options.date;\n        this.comment = options.comment;\n        this.unixPermissions = options.unixPermissions;\n        this.dosPermissions = options.dosPermissions;\n\n        this._data = data;\n        this._dataBinary = options.binary;\n        // keep only the compression\n        this.options = {\n            compression : options.compression,\n            compressionOptions : options.compressionOptions\n        };\n    };\n\n    ZipObject.prototype = {\n        /**\n         * Create an internal stream for the content of this object.\n         * @param {String} type the type of each chunk.\n         * @return StreamHelper the stream.\n         */\n        internalStream: function (type) {\n            var result = null, outputType = \"string\";\n            try {\n                if (!type) {\n                    throw new Error(\"No output type specified.\");\n                }\n                outputType = type.toLowerCase();\n                var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n                if (outputType === \"binarystring\" || outputType === \"text\") {\n                    outputType = \"string\";\n                }\n                result = this._decompressWorker();\n\n                var isUnicodeString = !this._dataBinary;\n\n                if (isUnicodeString && !askUnicodeString) {\n                    result = result.pipe(new utf8.Utf8EncodeWorker());\n                }\n                if (!isUnicodeString && askUnicodeString) {\n                    result = result.pipe(new utf8.Utf8DecodeWorker());\n                }\n            } catch (e) {\n                result = new GenericWorker(\"error\");\n                result.error(e);\n            }\n\n            return new StreamHelper(result, outputType, \"\");\n        },\n\n        /**\n         * Prepare the content in the asked type.\n         * @param {String} type the type of the result.\n         * @param {Function} onUpdate a function to call on each internal update.\n         * @return Promise the promise of the result.\n         */\n        async: function (type, onUpdate) {\n            return this.internalStream(type).accumulate(onUpdate);\n        },\n\n        /**\n         * Prepare the content as a nodejs stream.\n         * @param {String} type the type of each chunk.\n         * @param {Function} onUpdate a function to call on each internal update.\n         * @return Stream the stream.\n         */\n        nodeStream: function (type, onUpdate) {\n            return this.internalStream(type || \"nodebuffer\").toNodejsStream(onUpdate);\n        },\n\n        /**\n         * Return a worker for the compressed content.\n         * @private\n         * @param {Object} compression the compression object to use.\n         * @param {Object} compressionOptions the options to use when compressing.\n         * @return Worker the worker.\n         */\n        _compressWorker: function (compression, compressionOptions) {\n            if (\n                this._data instanceof CompressedObject &&\n                this._data.compression.magic === compression.magic\n            ) {\n                return this._data.getCompressedWorker();\n            } else {\n                var result = this._decompressWorker();\n                if(!this._dataBinary) {\n                    result = result.pipe(new utf8.Utf8EncodeWorker());\n                }\n                return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n            }\n        },\n        /**\n         * Return a worker for the decompressed content.\n         * @private\n         * @return Worker the worker.\n         */\n        _decompressWorker : function () {\n            if (this._data instanceof CompressedObject) {\n                return this._data.getContentWorker();\n            } else if (this._data instanceof GenericWorker) {\n                return this._data;\n            } else {\n                return new DataWorker(this._data);\n            }\n        }\n    };\n\n    var removedMethods = [\"asText\", \"asBinary\", \"asNodeBuffer\", \"asUint8Array\", \"asArrayBuffer\"];\n    var removedFn = function () {\n        throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n    };\n\n    for(var i = 0; i < removedMethods.length; i++) {\n        ZipObject.prototype[removedMethods[i]] = removedFn;\n    }\n    module.exports = ZipObject;\n\n    },{\"./compressedObject\":12,\"./stream/DataWorker\":37,\"./stream/GenericWorker\":38,\"./stream/StreamHelper\":39,\"./utf8\":41}],46:[function(require,module,exports){\n    'use strict';\n    var immediate = require('immediate');\n\n    /* istanbul ignore next */\n    function INTERNAL() {}\n\n    var handlers = {};\n\n    var REJECTED = ['REJECTED'];\n    var FULFILLED = ['FULFILLED'];\n    var PENDING = ['PENDING'];\n\n    module.exports = Promise;\n\n    function Promise(resolver) {\n      if (typeof resolver !== 'function') {\n        throw new TypeError('resolver must be a function');\n      }\n      this.state = PENDING;\n      this.queue = [];\n      this.outcome = void 0;\n      if (resolver !== INTERNAL) {\n        safelyResolveThenable(this, resolver);\n      }\n    }\n\n    Promise.prototype[\"finally\"] = function (callback) {\n      if (typeof callback !== 'function') {\n        return this;\n      }\n      var p = this.constructor;\n      return this.then(resolve, reject);\n\n      function resolve(value) {\n        function yes () {\n          return value;\n        }\n        return p.resolve(callback()).then(yes);\n      }\n      function reject(reason) {\n        function no () {\n          throw reason;\n        }\n        return p.resolve(callback()).then(no);\n      }\n    };\n    Promise.prototype[\"catch\"] = function (onRejected) {\n      return this.then(null, onRejected);\n    };\n    Promise.prototype.then = function (onFulfilled, onRejected) {\n      if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n        typeof onRejected !== 'function' && this.state === REJECTED) {\n        return this;\n      }\n      var promise = new this.constructor(INTERNAL);\n      if (this.state !== PENDING) {\n        var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n        unwrap(promise, resolver, this.outcome);\n      } else {\n        this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n      }\n\n      return promise;\n    };\n    function QueueItem(promise, onFulfilled, onRejected) {\n      this.promise = promise;\n      if (typeof onFulfilled === 'function') {\n        this.onFulfilled = onFulfilled;\n        this.callFulfilled = this.otherCallFulfilled;\n      }\n      if (typeof onRejected === 'function') {\n        this.onRejected = onRejected;\n        this.callRejected = this.otherCallRejected;\n      }\n    }\n    QueueItem.prototype.callFulfilled = function (value) {\n      handlers.resolve(this.promise, value);\n    };\n    QueueItem.prototype.otherCallFulfilled = function (value) {\n      unwrap(this.promise, this.onFulfilled, value);\n    };\n    QueueItem.prototype.callRejected = function (value) {\n      handlers.reject(this.promise, value);\n    };\n    QueueItem.prototype.otherCallRejected = function (value) {\n      unwrap(this.promise, this.onRejected, value);\n    };\n\n    function unwrap(promise, func, value) {\n      immediate(function () {\n        var returnValue;\n        try {\n          returnValue = func(value);\n        } catch (e) {\n          return handlers.reject(promise, e);\n        }\n        if (returnValue === promise) {\n          handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n        } else {\n          handlers.resolve(promise, returnValue);\n        }\n      });\n    }\n\n    handlers.resolve = function (self, value) {\n      var result = tryCatch(getThen, value);\n      if (result.status === 'error') {\n        return handlers.reject(self, result.value);\n      }\n      var thenable = result.value;\n\n      if (thenable) {\n        safelyResolveThenable(self, thenable);\n      } else {\n        self.state = FULFILLED;\n        self.outcome = value;\n        var i = -1;\n        var len = self.queue.length;\n        while (++i < len) {\n          self.queue[i].callFulfilled(value);\n        }\n      }\n      return self;\n    };\n    handlers.reject = function (self, error) {\n      self.state = REJECTED;\n      self.outcome = error;\n      var i = -1;\n      var len = self.queue.length;\n      while (++i < len) {\n        self.queue[i].callRejected(error);\n      }\n      return self;\n    };\n\n    function getThen(obj) {\n      // Make sure we only access the accessor once as required by the spec\n      var then = obj && obj.then;\n      if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n        return function appyThen() {\n          then.apply(obj, arguments);\n        };\n      }\n    }\n\n    function safelyResolveThenable(self, thenable) {\n      // Either fulfill, reject or reject with error\n      var called = false;\n      function onError(value) {\n        if (called) {\n          return;\n        }\n        called = true;\n        handlers.reject(self, value);\n      }\n\n      function onSuccess(value) {\n        if (called) {\n          return;\n        }\n        called = true;\n        handlers.resolve(self, value);\n      }\n\n      function tryToUnwrap() {\n        thenable(onSuccess, onError);\n      }\n\n      var result = tryCatch(tryToUnwrap);\n      if (result.status === 'error') {\n        onError(result.value);\n      }\n    }\n\n    function tryCatch(func, value) {\n      var out = {};\n      try {\n        out.value = func(value);\n        out.status = 'success';\n      } catch (e) {\n        out.status = 'error';\n        out.value = e;\n      }\n      return out;\n    }\n\n    Promise.resolve = resolve;\n    function resolve(value) {\n      if (value instanceof this) {\n        return value;\n      }\n      return handlers.resolve(new this(INTERNAL), value);\n    }\n\n    Promise.reject = reject;\n    function reject(reason) {\n      var promise = new this(INTERNAL);\n      return handlers.reject(promise, reason);\n    }\n\n    Promise.all = all;\n    function all(iterable) {\n      var self = this;\n      if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n        return this.reject(new TypeError('must be an array'));\n      }\n\n      var len = iterable.length;\n      var called = false;\n      if (!len) {\n        return this.resolve([]);\n      }\n\n      var values = new Array(len);\n      var resolved = 0;\n      var i = -1;\n      var promise = new this(INTERNAL);\n\n      while (++i < len) {\n        allResolver(iterable[i], i);\n      }\n      return promise;\n      function allResolver(value, i) {\n        self.resolve(value).then(resolveFromAll, function (error) {\n          if (!called) {\n            called = true;\n            handlers.reject(promise, error);\n          }\n        });\n        function resolveFromAll(outValue) {\n          values[i] = outValue;\n          if (++resolved === len && !called) {\n            called = true;\n            handlers.resolve(promise, values);\n          }\n        }\n      }\n    }\n\n    Promise.race = race;\n    function race(iterable) {\n      var self = this;\n      if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n        return this.reject(new TypeError('must be an array'));\n      }\n\n      var len = iterable.length;\n      var called = false;\n      if (!len) {\n        return this.resolve([]);\n      }\n\n      var i = -1;\n      var promise = new this(INTERNAL);\n\n      while (++i < len) {\n        resolver(iterable[i]);\n      }\n      return promise;\n      function resolver(value) {\n        self.resolve(value).then(function (response) {\n          if (!called) {\n            called = true;\n            handlers.resolve(promise, response);\n          }\n        }, function (error) {\n          if (!called) {\n            called = true;\n            handlers.reject(promise, error);\n          }\n        });\n      }\n    }\n\n    },{\"immediate\":7}],47:[function(require,module,exports){\n    // Top level file is just a mixin of submodules & constants\n    'use strict';\n\n    var assign    = require('./lib/utils/common').assign;\n\n    var deflate   = require('./lib/deflate');\n    var inflate   = require('./lib/inflate');\n    var constants = require('./lib/zlib/constants');\n\n    var pako = {};\n\n    assign(pako, deflate, inflate, constants);\n\n    module.exports = pako;\n\n    },{\"./lib/deflate\":48,\"./lib/inflate\":49,\"./lib/utils/common\":50,\"./lib/zlib/constants\":53}],48:[function(require,module,exports){\n    'use strict';\n\n\n    var zlib_deflate = require('./zlib/deflate');\n    var utils        = require('./utils/common');\n    var strings      = require('./utils/strings');\n    var msg          = require('./zlib/messages');\n    var ZStream      = require('./zlib/zstream');\n\n    var toString = Object.prototype.toString;\n\n    /* Public constants ==========================================================*/\n    /* ===========================================================================*/\n\n    var Z_NO_FLUSH      = 0;\n    var Z_FINISH        = 4;\n\n    var Z_OK            = 0;\n    var Z_STREAM_END    = 1;\n    var Z_SYNC_FLUSH    = 2;\n\n    var Z_DEFAULT_COMPRESSION = -1;\n\n    var Z_DEFAULT_STRATEGY    = 0;\n\n    var Z_DEFLATED  = 8;\n\n    /* ===========================================================================*/\n\n\n    /**\n     * class Deflate\n     *\n     * Generic JS-style wrapper for zlib calls. If you don't need\n     * streaming behaviour - use more simple functions: [[deflate]],\n     * [[deflateRaw]] and [[gzip]].\n     **/\n\n    /* internal\n     * Deflate.chunks -> Array\n     *\n     * Chunks of output data, if [[Deflate#onData]] not overridden.\n     **/\n\n    /**\n     * Deflate.result -> Uint8Array|Array\n     *\n     * Compressed result, generated by default [[Deflate#onData]]\n     * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n     * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n     * push a chunk with explicit flush (call [[Deflate#push]] with\n     * `Z_SYNC_FLUSH` param).\n     **/\n\n    /**\n     * Deflate.err -> Number\n     *\n     * Error code after deflate finished. 0 (Z_OK) on success.\n     * You will not need it in real life, because deflate errors\n     * are possible only on wrong options or bad `onData` / `onEnd`\n     * custom handlers.\n     **/\n\n    /**\n     * Deflate.msg -> String\n     *\n     * Error message, if [[Deflate.err]] != 0\n     **/\n\n\n    /**\n     * new Deflate(options)\n     * - options (Object): zlib deflate options.\n     *\n     * Creates new deflator instance with specified params. Throws exception\n     * on bad params. Supported options:\n     *\n     * - `level`\n     * - `windowBits`\n     * - `memLevel`\n     * - `strategy`\n     * - `dictionary`\n     *\n     * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n     * for more information on these.\n     *\n     * Additional options, for internal needs:\n     *\n     * - `chunkSize` - size of generated data chunks (16K by default)\n     * - `raw` (Boolean) - do raw deflate\n     * - `gzip` (Boolean) - create gzip wrapper\n     * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n     *    (each char code [0..255])\n     * - `header` (Object) - custom header for gzip\n     *   - `text` (Boolean) - true if compressed data believed to be text\n     *   - `time` (Number) - modification time, unix timestamp\n     *   - `os` (Number) - operation system code\n     *   - `extra` (Array) - array of bytes with extra data (max 65536)\n     *   - `name` (String) - file name (binary string)\n     *   - `comment` (String) - comment (binary string)\n     *   - `hcrc` (Boolean) - true if header crc should be added\n     *\n     * ##### Example:\n     *\n     * ```javascript\n     * var pako = require('pako')\n     *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n     *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n     *\n     * var deflate = new pako.Deflate({ level: 3});\n     *\n     * deflate.push(chunk1, false);\n     * deflate.push(chunk2, true);  // true -> last chunk\n     *\n     * if (deflate.err) { throw new Error(deflate.err); }\n     *\n     * console.log(deflate.result);\n     * ```\n     **/\n    function Deflate(options) {\n      if (!(this instanceof Deflate)) return new Deflate(options);\n\n      this.options = utils.assign({\n        level: Z_DEFAULT_COMPRESSION,\n        method: Z_DEFLATED,\n        chunkSize: 16384,\n        windowBits: 15,\n        memLevel: 8,\n        strategy: Z_DEFAULT_STRATEGY,\n        to: ''\n      }, options || {});\n\n      var opt = this.options;\n\n      if (opt.raw && (opt.windowBits > 0)) {\n        opt.windowBits = -opt.windowBits;\n      }\n\n      else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n        opt.windowBits += 16;\n      }\n\n      this.err    = 0;      // error code, if happens (0 = Z_OK)\n      this.msg    = '';     // error message\n      this.ended  = false;  // used to avoid multiple onEnd() calls\n      this.chunks = [];     // chunks of compressed data\n\n      this.strm = new ZStream();\n      this.strm.avail_out = 0;\n\n      var status = zlib_deflate.deflateInit2(\n        this.strm,\n        opt.level,\n        opt.method,\n        opt.windowBits,\n        opt.memLevel,\n        opt.strategy\n      );\n\n      if (status !== Z_OK) {\n        throw new Error(msg[status]);\n      }\n\n      if (opt.header) {\n        zlib_deflate.deflateSetHeader(this.strm, opt.header);\n      }\n\n      if (opt.dictionary) {\n        var dict;\n        // Convert data if needed\n        if (typeof opt.dictionary === 'string') {\n          // If we need to compress text, change encoding to utf8.\n          dict = strings.string2buf(opt.dictionary);\n        } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n          dict = new Uint8Array(opt.dictionary);\n        } else {\n          dict = opt.dictionary;\n        }\n\n        status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n        if (status !== Z_OK) {\n          throw new Error(msg[status]);\n        }\n\n        this._dict_set = true;\n      }\n    }\n\n    /**\n     * Deflate#push(data[, mode]) -> Boolean\n     * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n     *   converted to utf8 byte sequence.\n     * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n     *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n     *\n     * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n     * new compressed chunks. Returns `true` on success. The last data block must have\n     * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n     * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n     * can use mode Z_SYNC_FLUSH, keeping the compression context.\n     *\n     * On fail call [[Deflate#onEnd]] with error code and return false.\n     *\n     * We strongly recommend to use `Uint8Array` on input for best speed (output\n     * array format is detected automatically). Also, don't skip last param and always\n     * use the same type in your code (boolean or number). That will improve JS speed.\n     *\n     * For regular `Array`-s make sure all elements are [0..255].\n     *\n     * ##### Example\n     *\n     * ```javascript\n     * push(chunk, false); // push one of data chunks\n     * ...\n     * push(chunk, true);  // push last chunk\n     * ```\n     **/\n    Deflate.prototype.push = function (data, mode) {\n      var strm = this.strm;\n      var chunkSize = this.options.chunkSize;\n      var status, _mode;\n\n      if (this.ended) { return false; }\n\n      _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n      // Convert data if needed\n      if (typeof data === 'string') {\n        // If we need to compress text, change encoding to utf8.\n        strm.input = strings.string2buf(data);\n      } else if (toString.call(data) === '[object ArrayBuffer]') {\n        strm.input = new Uint8Array(data);\n      } else {\n        strm.input = data;\n      }\n\n      strm.next_in = 0;\n      strm.avail_in = strm.input.length;\n\n      do {\n        if (strm.avail_out === 0) {\n          strm.output = new utils.Buf8(chunkSize);\n          strm.next_out = 0;\n          strm.avail_out = chunkSize;\n        }\n        status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n        if (status !== Z_STREAM_END && status !== Z_OK) {\n          this.onEnd(status);\n          this.ended = true;\n          return false;\n        }\n        if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n          if (this.options.to === 'string') {\n            this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n          } else {\n            this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n          }\n        }\n      } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n      // Finalize on the last chunk.\n      if (_mode === Z_FINISH) {\n        status = zlib_deflate.deflateEnd(this.strm);\n        this.onEnd(status);\n        this.ended = true;\n        return status === Z_OK;\n      }\n\n      // callback interim results if Z_SYNC_FLUSH.\n      if (_mode === Z_SYNC_FLUSH) {\n        this.onEnd(Z_OK);\n        strm.avail_out = 0;\n        return true;\n      }\n\n      return true;\n    };\n\n\n    /**\n     * Deflate#onData(chunk) -> Void\n     * - chunk (Uint8Array|Array|String): output data. Type of array depends\n     *   on js engine support. When string output requested, each chunk\n     *   will be string.\n     *\n     * By default, stores data blocks in `chunks[]` property and glue\n     * those in `onEnd`. Override this handler, if you need another behaviour.\n     **/\n    Deflate.prototype.onData = function (chunk) {\n      this.chunks.push(chunk);\n    };\n\n\n    /**\n     * Deflate#onEnd(status) -> Void\n     * - status (Number): deflate status. 0 (Z_OK) on success,\n     *   other if not.\n     *\n     * Called once after you tell deflate that the input stream is\n     * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n     * or if an error happened. By default - join collected chunks,\n     * free memory and fill `results` / `err` properties.\n     **/\n    Deflate.prototype.onEnd = function (status) {\n      // On success - join\n      if (status === Z_OK) {\n        if (this.options.to === 'string') {\n          this.result = this.chunks.join('');\n        } else {\n          this.result = utils.flattenChunks(this.chunks);\n        }\n      }\n      this.chunks = [];\n      this.err = status;\n      this.msg = this.strm.msg;\n    };\n\n\n    /**\n     * deflate(data[, options]) -> Uint8Array|Array|String\n     * - data (Uint8Array|Array|String): input data to compress.\n     * - options (Object): zlib deflate options.\n     *\n     * Compress `data` with deflate algorithm and `options`.\n     *\n     * Supported options are:\n     *\n     * - level\n     * - windowBits\n     * - memLevel\n     * - strategy\n     * - dictionary\n     *\n     * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n     * for more information on these.\n     *\n     * Sugar (options):\n     *\n     * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n     *   negative windowBits implicitly.\n     * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n     *    (each char code [0..255])\n     *\n     * ##### Example:\n     *\n     * ```javascript\n     * var pako = require('pako')\n     *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n     *\n     * console.log(pako.deflate(data));\n     * ```\n     **/\n    function deflate(input, options) {\n      var deflator = new Deflate(options);\n\n      deflator.push(input, true);\n\n      // That will never happens, if you don't cheat with options :)\n      if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n      return deflator.result;\n    }\n\n\n    /**\n     * deflateRaw(data[, options]) -> Uint8Array|Array|String\n     * - data (Uint8Array|Array|String): input data to compress.\n     * - options (Object): zlib deflate options.\n     *\n     * The same as [[deflate]], but creates raw data, without wrapper\n     * (header and adler32 crc).\n     **/\n    function deflateRaw(input, options) {\n      options = options || {};\n      options.raw = true;\n      return deflate(input, options);\n    }\n\n\n    /**\n     * gzip(data[, options]) -> Uint8Array|Array|String\n     * - data (Uint8Array|Array|String): input data to compress.\n     * - options (Object): zlib deflate options.\n     *\n     * The same as [[deflate]], but create gzip wrapper instead of\n     * deflate one.\n     **/\n    function gzip(input, options) {\n      options = options || {};\n      options.gzip = true;\n      return deflate(input, options);\n    }\n\n\n    exports.Deflate = Deflate;\n    exports.deflate = deflate;\n    exports.deflateRaw = deflateRaw;\n    exports.gzip = gzip;\n\n    },{\"./utils/common\":50,\"./utils/strings\":51,\"./zlib/deflate\":55,\"./zlib/messages\":60,\"./zlib/zstream\":62}],49:[function(require,module,exports){\n    'use strict';\n\n\n    var zlib_inflate = require('./zlib/inflate');\n    var utils        = require('./utils/common');\n    var strings      = require('./utils/strings');\n    var c            = require('./zlib/constants');\n    var msg          = require('./zlib/messages');\n    var ZStream      = require('./zlib/zstream');\n    var GZheader     = require('./zlib/gzheader');\n\n    var toString = Object.prototype.toString;\n\n    /**\n     * class Inflate\n     *\n     * Generic JS-style wrapper for zlib calls. If you don't need\n     * streaming behaviour - use more simple functions: [[inflate]]\n     * and [[inflateRaw]].\n     **/\n\n    /* internal\n     * inflate.chunks -> Array\n     *\n     * Chunks of output data, if [[Inflate#onData]] not overridden.\n     **/\n\n    /**\n     * Inflate.result -> Uint8Array|Array|String\n     *\n     * Uncompressed result, generated by default [[Inflate#onData]]\n     * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n     * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n     * push a chunk with explicit flush (call [[Inflate#push]] with\n     * `Z_SYNC_FLUSH` param).\n     **/\n\n    /**\n     * Inflate.err -> Number\n     *\n     * Error code after inflate finished. 0 (Z_OK) on success.\n     * Should be checked if broken data possible.\n     **/\n\n    /**\n     * Inflate.msg -> String\n     *\n     * Error message, if [[Inflate.err]] != 0\n     **/\n\n\n    /**\n     * new Inflate(options)\n     * - options (Object): zlib inflate options.\n     *\n     * Creates new inflator instance with specified params. Throws exception\n     * on bad params. Supported options:\n     *\n     * - `windowBits`\n     * - `dictionary`\n     *\n     * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n     * for more information on these.\n     *\n     * Additional options, for internal needs:\n     *\n     * - `chunkSize` - size of generated data chunks (16K by default)\n     * - `raw` (Boolean) - do raw inflate\n     * - `to` (String) - if equal to 'string', then result will be converted\n     *   from utf8 to utf16 (javascript) string. When string output requested,\n     *   chunk length can differ from `chunkSize`, depending on content.\n     *\n     * By default, when no options set, autodetect deflate/gzip data format via\n     * wrapper header.\n     *\n     * ##### Example:\n     *\n     * ```javascript\n     * var pako = require('pako')\n     *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n     *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n     *\n     * var inflate = new pako.Inflate({ level: 3});\n     *\n     * inflate.push(chunk1, false);\n     * inflate.push(chunk2, true);  // true -> last chunk\n     *\n     * if (inflate.err) { throw new Error(inflate.err); }\n     *\n     * console.log(inflate.result);\n     * ```\n     **/\n    function Inflate(options) {\n      if (!(this instanceof Inflate)) return new Inflate(options);\n\n      this.options = utils.assign({\n        chunkSize: 16384,\n        windowBits: 0,\n        to: ''\n      }, options || {});\n\n      var opt = this.options;\n\n      // Force window size for `raw` data, if not set directly,\n      // because we have no header for autodetect.\n      if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n        opt.windowBits = -opt.windowBits;\n        if (opt.windowBits === 0) { opt.windowBits = -15; }\n      }\n\n      // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n      if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n          !(options && options.windowBits)) {\n        opt.windowBits += 32;\n      }\n\n      // Gzip header has no info about windows size, we can do autodetect only\n      // for deflate. So, if window size not set, force it to max when gzip possible\n      if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n        // bit 3 (16) -> gzipped data\n        // bit 4 (32) -> autodetect gzip/deflate\n        if ((opt.windowBits & 15) === 0) {\n          opt.windowBits |= 15;\n        }\n      }\n\n      this.err    = 0;      // error code, if happens (0 = Z_OK)\n      this.msg    = '';     // error message\n      this.ended  = false;  // used to avoid multiple onEnd() calls\n      this.chunks = [];     // chunks of compressed data\n\n      this.strm   = new ZStream();\n      this.strm.avail_out = 0;\n\n      var status  = zlib_inflate.inflateInit2(\n        this.strm,\n        opt.windowBits\n      );\n\n      if (status !== c.Z_OK) {\n        throw new Error(msg[status]);\n      }\n\n      this.header = new GZheader();\n\n      zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n      // Setup dictionary\n      if (opt.dictionary) {\n        // Convert data if needed\n        if (typeof opt.dictionary === 'string') {\n          opt.dictionary = strings.string2buf(opt.dictionary);\n        } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n          opt.dictionary = new Uint8Array(opt.dictionary);\n        }\n        if (opt.raw) { //In raw mode we need to set the dictionary early\n          status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n          if (status !== c.Z_OK) {\n            throw new Error(msg[status]);\n          }\n        }\n      }\n    }\n\n    /**\n     * Inflate#push(data[, mode]) -> Boolean\n     * - data (Uint8Array|Array|ArrayBuffer|String): input data\n     * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n     *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n     *\n     * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n     * new output chunks. Returns `true` on success. The last data block must have\n     * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n     * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n     * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n     *\n     * On fail call [[Inflate#onEnd]] with error code and return false.\n     *\n     * We strongly recommend to use `Uint8Array` on input for best speed (output\n     * format is detected automatically). Also, don't skip last param and always\n     * use the same type in your code (boolean or number). That will improve JS speed.\n     *\n     * For regular `Array`-s make sure all elements are [0..255].\n     *\n     * ##### Example\n     *\n     * ```javascript\n     * push(chunk, false); // push one of data chunks\n     * ...\n     * push(chunk, true);  // push last chunk\n     * ```\n     **/\n    Inflate.prototype.push = function (data, mode) {\n      var strm = this.strm;\n      var chunkSize = this.options.chunkSize;\n      var dictionary = this.options.dictionary;\n      var status, _mode;\n      var next_out_utf8, tail, utf8str;\n\n      // Flag to properly process Z_BUF_ERROR on testing inflate call\n      // when we check that all output data was flushed.\n      var allowBufError = false;\n\n      if (this.ended) { return false; }\n      _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n      // Convert data if needed\n      if (typeof data === 'string') {\n        // Only binary strings can be decompressed on practice\n        strm.input = strings.binstring2buf(data);\n      } else if (toString.call(data) === '[object ArrayBuffer]') {\n        strm.input = new Uint8Array(data);\n      } else {\n        strm.input = data;\n      }\n\n      strm.next_in = 0;\n      strm.avail_in = strm.input.length;\n\n      do {\n        if (strm.avail_out === 0) {\n          strm.output = new utils.Buf8(chunkSize);\n          strm.next_out = 0;\n          strm.avail_out = chunkSize;\n        }\n\n        status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n        if (status === c.Z_NEED_DICT && dictionary) {\n          status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n        }\n\n        if (status === c.Z_BUF_ERROR && allowBufError === true) {\n          status = c.Z_OK;\n          allowBufError = false;\n        }\n\n        if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n          this.onEnd(status);\n          this.ended = true;\n          return false;\n        }\n\n        if (strm.next_out) {\n          if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n            if (this.options.to === 'string') {\n\n              next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n              tail = strm.next_out - next_out_utf8;\n              utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n              // move tail\n              strm.next_out = tail;\n              strm.avail_out = chunkSize - tail;\n              if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n              this.onData(utf8str);\n\n            } else {\n              this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n            }\n          }\n        }\n\n        // When no more input data, we should check that internal inflate buffers\n        // are flushed. The only way to do it when avail_out = 0 - run one more\n        // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n        // Here we set flag to process this error properly.\n        //\n        // NOTE. Deflate does not return error in this case and does not needs such\n        // logic.\n        if (strm.avail_in === 0 && strm.avail_out === 0) {\n          allowBufError = true;\n        }\n\n      } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n      if (status === c.Z_STREAM_END) {\n        _mode = c.Z_FINISH;\n      }\n\n      // Finalize on the last chunk.\n      if (_mode === c.Z_FINISH) {\n        status = zlib_inflate.inflateEnd(this.strm);\n        this.onEnd(status);\n        this.ended = true;\n        return status === c.Z_OK;\n      }\n\n      // callback interim results if Z_SYNC_FLUSH.\n      if (_mode === c.Z_SYNC_FLUSH) {\n        this.onEnd(c.Z_OK);\n        strm.avail_out = 0;\n        return true;\n      }\n\n      return true;\n    };\n\n\n    /**\n     * Inflate#onData(chunk) -> Void\n     * - chunk (Uint8Array|Array|String): output data. Type of array depends\n     *   on js engine support. When string output requested, each chunk\n     *   will be string.\n     *\n     * By default, stores data blocks in `chunks[]` property and glue\n     * those in `onEnd`. Override this handler, if you need another behaviour.\n     **/\n    Inflate.prototype.onData = function (chunk) {\n      this.chunks.push(chunk);\n    };\n\n\n    /**\n     * Inflate#onEnd(status) -> Void\n     * - status (Number): inflate status. 0 (Z_OK) on success,\n     *   other if not.\n     *\n     * Called either after you tell inflate that the input stream is\n     * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n     * or if an error happened. By default - join collected chunks,\n     * free memory and fill `results` / `err` properties.\n     **/\n    Inflate.prototype.onEnd = function (status) {\n      // On success - join\n      if (status === c.Z_OK) {\n        if (this.options.to === 'string') {\n          // Glue & convert here, until we teach pako to send\n          // utf8 aligned strings to onData\n          this.result = this.chunks.join('');\n        } else {\n          this.result = utils.flattenChunks(this.chunks);\n        }\n      }\n      this.chunks = [];\n      this.err = status;\n      this.msg = this.strm.msg;\n    };\n\n\n    /**\n     * inflate(data[, options]) -> Uint8Array|Array|String\n     * - data (Uint8Array|Array|String): input data to decompress.\n     * - options (Object): zlib inflate options.\n     *\n     * Decompress `data` with inflate/ungzip and `options`. Autodetect\n     * format via wrapper header by default. That's why we don't provide\n     * separate `ungzip` method.\n     *\n     * Supported options are:\n     *\n     * - windowBits\n     *\n     * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n     * for more information.\n     *\n     * Sugar (options):\n     *\n     * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n     *   negative windowBits implicitly.\n     * - `to` (String) - if equal to 'string', then result will be converted\n     *   from utf8 to utf16 (javascript) string. When string output requested,\n     *   chunk length can differ from `chunkSize`, depending on content.\n     *\n     *\n     * ##### Example:\n     *\n     * ```javascript\n     * var pako = require('pako')\n     *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n     *   , output;\n     *\n     * try {\n     *   output = pako.inflate(input);\n     * } catch (err)\n     *   console.log(err);\n     * }\n     * ```\n     **/\n    function inflate(input, options) {\n      var inflator = new Inflate(options);\n\n      inflator.push(input, true);\n\n      // That will never happens, if you don't cheat with options :)\n      if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n      return inflator.result;\n    }\n\n\n    /**\n     * inflateRaw(data[, options]) -> Uint8Array|Array|String\n     * - data (Uint8Array|Array|String): input data to decompress.\n     * - options (Object): zlib inflate options.\n     *\n     * The same as [[inflate]], but creates raw data, without wrapper\n     * (header and adler32 crc).\n     **/\n    function inflateRaw(input, options) {\n      options = options || {};\n      options.raw = true;\n      return inflate(input, options);\n    }\n\n\n    /**\n     * ungzip(data[, options]) -> Uint8Array|Array|String\n     * - data (Uint8Array|Array|String): input data to decompress.\n     * - options (Object): zlib inflate options.\n     *\n     * Just shortcut to [[inflate]], because it autodetects format\n     * by header.content. Done for convenience.\n     **/\n\n\n    exports.Inflate = Inflate;\n    exports.inflate = inflate;\n    exports.inflateRaw = inflateRaw;\n    exports.ungzip  = inflate;\n\n    },{\"./utils/common\":50,\"./utils/strings\":51,\"./zlib/constants\":53,\"./zlib/gzheader\":56,\"./zlib/inflate\":58,\"./zlib/messages\":60,\"./zlib/zstream\":62}],50:[function(require,module,exports){\n    'use strict';\n\n\n    var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                    (typeof Uint16Array !== 'undefined') &&\n                    (typeof Int32Array !== 'undefined');\n\n    function _has(obj, key) {\n      return Object.prototype.hasOwnProperty.call(obj, key);\n    }\n\n    exports.assign = function (obj /*from1, from2, from3, ...*/) {\n      var sources = Array.prototype.slice.call(arguments, 1);\n      while (sources.length) {\n        var source = sources.shift();\n        if (!source) { continue; }\n\n        if (typeof source !== 'object') {\n          throw new TypeError(source + 'must be non-object');\n        }\n\n        for (var p in source) {\n          if (_has(source, p)) {\n            obj[p] = source[p];\n          }\n        }\n      }\n\n      return obj;\n    };\n\n\n    // reduce buffer size, avoiding mem copy\n    exports.shrinkBuf = function (buf, size) {\n      if (buf.length === size) { return buf; }\n      if (buf.subarray) { return buf.subarray(0, size); }\n      buf.length = size;\n      return buf;\n    };\n\n\n    var fnTyped = {\n      arraySet: function (dest, src, src_offs, len, dest_offs) {\n        if (src.subarray && dest.subarray) {\n          dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n          return;\n        }\n        // Fallback to ordinary array\n        for (var i = 0; i < len; i++) {\n          dest[dest_offs + i] = src[src_offs + i];\n        }\n      },\n      // Join array of chunks to single array.\n      flattenChunks: function (chunks) {\n        var i, l, len, pos, chunk, result;\n\n        // calculate data length\n        len = 0;\n        for (i = 0, l = chunks.length; i < l; i++) {\n          len += chunks[i].length;\n        }\n\n        // join chunks\n        result = new Uint8Array(len);\n        pos = 0;\n        for (i = 0, l = chunks.length; i < l; i++) {\n          chunk = chunks[i];\n          result.set(chunk, pos);\n          pos += chunk.length;\n        }\n\n        return result;\n      }\n    };\n\n    var fnUntyped = {\n      arraySet: function (dest, src, src_offs, len, dest_offs) {\n        for (var i = 0; i < len; i++) {\n          dest[dest_offs + i] = src[src_offs + i];\n        }\n      },\n      // Join array of chunks to single array.\n      flattenChunks: function (chunks) {\n        return [].concat.apply([], chunks);\n      }\n    };\n\n\n    // Enable/Disable typed arrays use, for testing\n    //\n    exports.setTyped = function (on) {\n      if (on) {\n        exports.Buf8  = Uint8Array;\n        exports.Buf16 = Uint16Array;\n        exports.Buf32 = Int32Array;\n        exports.assign(exports, fnTyped);\n      } else {\n        exports.Buf8  = Array;\n        exports.Buf16 = Array;\n        exports.Buf32 = Array;\n        exports.assign(exports, fnUntyped);\n      }\n    };\n\n    exports.setTyped(TYPED_OK);\n\n    },{}],51:[function(require,module,exports){\n    // String encode/decode helpers\n    'use strict';\n\n\n    var utils = require('./common');\n\n\n    // Quick check if we can use fast array to bin string conversion\n    //\n    // - apply(Array) can fail on Android 2.2\n    // - apply(Uint8Array) can fail on iOS 5.1 Safari\n    //\n    var STR_APPLY_OK = true;\n    var STR_APPLY_UIA_OK = true;\n\n    try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\n    try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n    // Table with utf8 lengths (calculated by first byte of sequence)\n    // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n    // because max possible codepoint is 0x10ffff\n    var _utf8len = new utils.Buf8(256);\n    for (var q = 0; q < 256; q++) {\n      _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n    }\n    _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n    // convert string to array (typed, when possible)\n    exports.string2buf = function (str) {\n      var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n      // count binary size\n      for (m_pos = 0; m_pos < str_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n          c2 = str.charCodeAt(m_pos + 1);\n          if ((c2 & 0xfc00) === 0xdc00) {\n            c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n            m_pos++;\n          }\n        }\n        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n      }\n\n      // allocate buffer\n      buf = new utils.Buf8(buf_len);\n\n      // convert\n      for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n          c2 = str.charCodeAt(m_pos + 1);\n          if ((c2 & 0xfc00) === 0xdc00) {\n            c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n            m_pos++;\n          }\n        }\n        if (c < 0x80) {\n          /* one byte */\n          buf[i++] = c;\n        } else if (c < 0x800) {\n          /* two bytes */\n          buf[i++] = 0xC0 | (c >>> 6);\n          buf[i++] = 0x80 | (c & 0x3f);\n        } else if (c < 0x10000) {\n          /* three bytes */\n          buf[i++] = 0xE0 | (c >>> 12);\n          buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n          buf[i++] = 0x80 | (c & 0x3f);\n        } else {\n          /* four bytes */\n          buf[i++] = 0xf0 | (c >>> 18);\n          buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n          buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n          buf[i++] = 0x80 | (c & 0x3f);\n        }\n      }\n\n      return buf;\n    };\n\n    // Helper (used in 2 places)\n    function buf2binstring(buf, len) {\n      // On Chrome, the arguments in a function call that are allowed is `65534`.\n      // If the length of the buffer is smaller than that, we can use this optimization,\n      // otherwise we will take a slower path.\n      if (len < 65534) {\n        if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n          return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n        }\n      }\n\n      var result = '';\n      for (var i = 0; i < len; i++) {\n        result += String.fromCharCode(buf[i]);\n      }\n      return result;\n    }\n\n\n    // Convert byte array to binary string\n    exports.buf2binstring = function (buf) {\n      return buf2binstring(buf, buf.length);\n    };\n\n\n    // Convert binary string (typed, when possible)\n    exports.binstring2buf = function (str) {\n      var buf = new utils.Buf8(str.length);\n      for (var i = 0, len = buf.length; i < len; i++) {\n        buf[i] = str.charCodeAt(i);\n      }\n      return buf;\n    };\n\n\n    // convert array to string\n    exports.buf2string = function (buf, max) {\n      var i, out, c, c_len;\n      var len = max || buf.length;\n\n      // Reserve max possible length (2 words per char)\n      // NB: by unknown reasons, Array is significantly faster for\n      //     String.fromCharCode.apply than Uint16Array.\n      var utf16buf = new Array(len * 2);\n\n      for (out = 0, i = 0; i < len;) {\n        c = buf[i++];\n        // quick process ascii\n        if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n        c_len = _utf8len[c];\n        // skip 5 & 6 byte codes\n        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n        // apply mask on first byte\n        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n        // join the rest\n        while (c_len > 1 && i < len) {\n          c = (c << 6) | (buf[i++] & 0x3f);\n          c_len--;\n        }\n\n        // terminated by end of string?\n        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n        if (c < 0x10000) {\n          utf16buf[out++] = c;\n        } else {\n          c -= 0x10000;\n          utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n          utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n        }\n      }\n\n      return buf2binstring(utf16buf, out);\n    };\n\n\n    // Calculate max possible position in utf8 buffer,\n    // that will not break sequence. If that's not possible\n    // - (very small limits) return max size as is.\n    //\n    // buf[] - utf8 bytes array\n    // max   - length limit (mandatory);\n    exports.utf8border = function (buf, max) {\n      var pos;\n\n      max = max || buf.length;\n      if (max > buf.length) { max = buf.length; }\n\n      // go back from last position, until start of sequence found\n      pos = max - 1;\n      while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n      // Very small and broken sequence,\n      // return max, because we should return something anyway.\n      if (pos < 0) { return max; }\n\n      // If we came to start of buffer - that means buffer is too small,\n      // return max too.\n      if (pos === 0) { return max; }\n\n      return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n    };\n\n    },{\"./common\":50}],52:[function(require,module,exports){\n    'use strict';\n\n    // Note: adler32 takes 12% for level 0 and 2% for level 6.\n    // It isn't worth it to make additional optimizations as in original.\n    // Small size is preferable.\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    function adler32(adler, buf, len, pos) {\n      var s1 = (adler & 0xffff) |0,\n          s2 = ((adler >>> 16) & 0xffff) |0,\n          n = 0;\n\n      while (len !== 0) {\n        // Set limit ~ twice less than 5552, to keep\n        // s2 in 31-bits, because we force signed ints.\n        // in other case %= will fail.\n        n = len > 2000 ? 2000 : len;\n        len -= n;\n\n        do {\n          s1 = (s1 + buf[pos++]) |0;\n          s2 = (s2 + s1) |0;\n        } while (--n);\n\n        s1 %= 65521;\n        s2 %= 65521;\n      }\n\n      return (s1 | (s2 << 16)) |0;\n    }\n\n\n    module.exports = adler32;\n\n    },{}],53:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    module.exports = {\n\n      /* Allowed flush values; see deflate() and inflate() below for details */\n      Z_NO_FLUSH:         0,\n      Z_PARTIAL_FLUSH:    1,\n      Z_SYNC_FLUSH:       2,\n      Z_FULL_FLUSH:       3,\n      Z_FINISH:           4,\n      Z_BLOCK:            5,\n      Z_TREES:            6,\n\n      /* Return codes for the compression/decompression functions. Negative values\n      * are errors, positive values are used for special but normal events.\n      */\n      Z_OK:               0,\n      Z_STREAM_END:       1,\n      Z_NEED_DICT:        2,\n      Z_ERRNO:           -1,\n      Z_STREAM_ERROR:    -2,\n      Z_DATA_ERROR:      -3,\n      //Z_MEM_ERROR:     -4,\n      Z_BUF_ERROR:       -5,\n      //Z_VERSION_ERROR: -6,\n\n      /* compression levels */\n      Z_NO_COMPRESSION:         0,\n      Z_BEST_SPEED:             1,\n      Z_BEST_COMPRESSION:       9,\n      Z_DEFAULT_COMPRESSION:   -1,\n\n\n      Z_FILTERED:               1,\n      Z_HUFFMAN_ONLY:           2,\n      Z_RLE:                    3,\n      Z_FIXED:                  4,\n      Z_DEFAULT_STRATEGY:       0,\n\n      /* Possible values of the data_type field (though see inflate()) */\n      Z_BINARY:                 0,\n      Z_TEXT:                   1,\n      //Z_ASCII:                1, // = Z_TEXT (deprecated)\n      Z_UNKNOWN:                2,\n\n      /* The deflate compression method */\n      Z_DEFLATED:               8\n      //Z_NULL:                 null // Use -1 or null inline, depending on var type\n    };\n\n    },{}],54:[function(require,module,exports){\n    'use strict';\n\n    // Note: we can't get significant speed boost here.\n    // So write code to minimize size - no pregenerated tables\n    // and array tools dependencies.\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    // Use ordinary array, since untyped makes no boost here\n    function makeTable() {\n      var c, table = [];\n\n      for (var n = 0; n < 256; n++) {\n        c = n;\n        for (var k = 0; k < 8; k++) {\n          c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n        }\n        table[n] = c;\n      }\n\n      return table;\n    }\n\n    // Create table on load. Just 255 signed longs. Not a problem.\n    var crcTable = makeTable();\n\n\n    function crc32(crc, buf, len, pos) {\n      var t = crcTable,\n          end = pos + len;\n\n      crc ^= -1;\n\n      for (var i = pos; i < end; i++) {\n        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n      }\n\n      return (crc ^ (-1)); // >>> 0;\n    }\n\n\n    module.exports = crc32;\n\n    },{}],55:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    var utils   = require('../utils/common');\n    var trees   = require('./trees');\n    var adler32 = require('./adler32');\n    var crc32   = require('./crc32');\n    var msg     = require('./messages');\n\n    /* Public constants ==========================================================*/\n    /* ===========================================================================*/\n\n\n    /* Allowed flush values; see deflate() and inflate() below for details */\n    var Z_NO_FLUSH      = 0;\n    var Z_PARTIAL_FLUSH = 1;\n    //var Z_SYNC_FLUSH    = 2;\n    var Z_FULL_FLUSH    = 3;\n    var Z_FINISH        = 4;\n    var Z_BLOCK         = 5;\n    //var Z_TREES         = 6;\n\n\n    /* Return codes for the compression/decompression functions. Negative values\n     * are errors, positive values are used for special but normal events.\n     */\n    var Z_OK            = 0;\n    var Z_STREAM_END    = 1;\n    //var Z_NEED_DICT     = 2;\n    //var Z_ERRNO         = -1;\n    var Z_STREAM_ERROR  = -2;\n    var Z_DATA_ERROR    = -3;\n    //var Z_MEM_ERROR     = -4;\n    var Z_BUF_ERROR     = -5;\n    //var Z_VERSION_ERROR = -6;\n\n\n    /* compression levels */\n    //var Z_NO_COMPRESSION      = 0;\n    //var Z_BEST_SPEED          = 1;\n    //var Z_BEST_COMPRESSION    = 9;\n    var Z_DEFAULT_COMPRESSION = -1;\n\n\n    var Z_FILTERED            = 1;\n    var Z_HUFFMAN_ONLY        = 2;\n    var Z_RLE                 = 3;\n    var Z_FIXED               = 4;\n    var Z_DEFAULT_STRATEGY    = 0;\n\n    /* Possible values of the data_type field (though see inflate()) */\n    //var Z_BINARY              = 0;\n    //var Z_TEXT                = 1;\n    //var Z_ASCII               = 1; // = Z_TEXT\n    var Z_UNKNOWN             = 2;\n\n\n    /* The deflate compression method */\n    var Z_DEFLATED  = 8;\n\n    /*============================================================================*/\n\n\n    var MAX_MEM_LEVEL = 9;\n    /* Maximum value for memLevel in deflateInit2 */\n    var MAX_WBITS = 15;\n    /* 32K LZ77 window */\n    var DEF_MEM_LEVEL = 8;\n\n\n    var LENGTH_CODES  = 29;\n    /* number of length codes, not counting the special END_BLOCK code */\n    var LITERALS      = 256;\n    /* number of literal bytes 0..255 */\n    var L_CODES       = LITERALS + 1 + LENGTH_CODES;\n    /* number of Literal or Length codes, including the END_BLOCK code */\n    var D_CODES       = 30;\n    /* number of distance codes */\n    var BL_CODES      = 19;\n    /* number of codes used to transfer the bit lengths */\n    var HEAP_SIZE     = 2 * L_CODES + 1;\n    /* maximum heap size */\n    var MAX_BITS  = 15;\n    /* All codes must not exceed MAX_BITS bits */\n\n    var MIN_MATCH = 3;\n    var MAX_MATCH = 258;\n    var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\n    var PRESET_DICT = 0x20;\n\n    var INIT_STATE = 42;\n    var EXTRA_STATE = 69;\n    var NAME_STATE = 73;\n    var COMMENT_STATE = 91;\n    var HCRC_STATE = 103;\n    var BUSY_STATE = 113;\n    var FINISH_STATE = 666;\n\n    var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\n    var BS_BLOCK_DONE     = 2; /* block flush performed */\n    var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\n    var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\n    var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\n    function err(strm, errorCode) {\n      strm.msg = msg[errorCode];\n      return errorCode;\n    }\n\n    function rank(f) {\n      return ((f) << 1) - ((f) > 4 ? 9 : 0);\n    }\n\n    function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n    /* =========================================================================\n     * Flush as much pending output as possible. All deflate() output goes\n     * through this function so some applications may wish to modify it\n     * to avoid allocating a large strm->output buffer and copying into it.\n     * (See also read_buf()).\n     */\n    function flush_pending(strm) {\n      var s = strm.state;\n\n      //_tr_flush_bits(s);\n      var len = s.pending;\n      if (len > strm.avail_out) {\n        len = strm.avail_out;\n      }\n      if (len === 0) { return; }\n\n      utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n      strm.next_out += len;\n      s.pending_out += len;\n      strm.total_out += len;\n      strm.avail_out -= len;\n      s.pending -= len;\n      if (s.pending === 0) {\n        s.pending_out = 0;\n      }\n    }\n\n\n    function flush_block_only(s, last) {\n      trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n      s.block_start = s.strstart;\n      flush_pending(s.strm);\n    }\n\n\n    function put_byte(s, b) {\n      s.pending_buf[s.pending++] = b;\n    }\n\n\n    /* =========================================================================\n     * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n     * IN assertion: the stream state is correct and there is enough room in\n     * pending_buf.\n     */\n    function putShortMSB(s, b) {\n    //  put_byte(s, (Byte)(b >> 8));\n    //  put_byte(s, (Byte)(b & 0xff));\n      s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n      s.pending_buf[s.pending++] = b & 0xff;\n    }\n\n\n    /* ===========================================================================\n     * Read a new buffer from the current input stream, update the adler32\n     * and total number of bytes read.  All deflate() input goes through\n     * this function so some applications may wish to modify it to avoid\n     * allocating a large strm->input buffer and copying from it.\n     * (See also flush_pending()).\n     */\n    function read_buf(strm, buf, start, size) {\n      var len = strm.avail_in;\n\n      if (len > size) { len = size; }\n      if (len === 0) { return 0; }\n\n      strm.avail_in -= len;\n\n      // zmemcpy(buf, strm->next_in, len);\n      utils.arraySet(buf, strm.input, strm.next_in, len, start);\n      if (strm.state.wrap === 1) {\n        strm.adler = adler32(strm.adler, buf, len, start);\n      }\n\n      else if (strm.state.wrap === 2) {\n        strm.adler = crc32(strm.adler, buf, len, start);\n      }\n\n      strm.next_in += len;\n      strm.total_in += len;\n\n      return len;\n    }\n\n\n    /* ===========================================================================\n     * Set match_start to the longest match starting at the given string and\n     * return its length. Matches shorter or equal to prev_length are discarded,\n     * in which case the result is equal to prev_length and match_start is\n     * garbage.\n     * IN assertions: cur_match is the head of the hash chain for the current\n     *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n     * OUT assertion: the match length is not greater than s->lookahead.\n     */\n    function longest_match(s, cur_match) {\n      var chain_length = s.max_chain_length;      /* max hash chain length */\n      var scan = s.strstart; /* current string */\n      var match;                       /* matched string */\n      var len;                           /* length of current match */\n      var best_len = s.prev_length;              /* best match length so far */\n      var nice_match = s.nice_match;             /* stop if match long enough */\n      var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n          s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n      var _win = s.window; // shortcut\n\n      var wmask = s.w_mask;\n      var prev  = s.prev;\n\n      /* Stop when cur_match becomes <= limit. To simplify the code,\n       * we prevent matches with the string of window index 0.\n       */\n\n      var strend = s.strstart + MAX_MATCH;\n      var scan_end1  = _win[scan + best_len - 1];\n      var scan_end   = _win[scan + best_len];\n\n      /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n       * It is easy to get rid of this optimization if necessary.\n       */\n      // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n      /* Do not waste too much time if we already have a good match: */\n      if (s.prev_length >= s.good_match) {\n        chain_length >>= 2;\n      }\n      /* Do not look for matches beyond the end of the input. This is necessary\n       * to make deflate deterministic.\n       */\n      if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n      // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n      do {\n        // Assert(cur_match < s->strstart, \"no future\");\n        match = cur_match;\n\n        /* Skip to next match if the match length cannot increase\n         * or if the match length is less than 2.  Note that the checks below\n         * for insufficient lookahead only occur occasionally for performance\n         * reasons.  Therefore uninitialized memory will be accessed, and\n         * conditional jumps will be made that depend on those values.\n         * However the length of the match is limited to the lookahead, so\n         * the output of deflate is not affected by the uninitialized values.\n         */\n\n        if (_win[match + best_len]     !== scan_end  ||\n            _win[match + best_len - 1] !== scan_end1 ||\n            _win[match]                !== _win[scan] ||\n            _win[++match]              !== _win[scan + 1]) {\n          continue;\n        }\n\n        /* The check at best_len-1 can be removed because it will be made\n         * again later. (This heuristic is not always a win.)\n         * It is not necessary to compare scan[2] and match[2] since they\n         * are always equal when the other bytes match, given that\n         * the hash keys are equal and that HASH_BITS >= 8.\n         */\n        scan += 2;\n        match++;\n        // Assert(*scan == *match, \"match[2]?\");\n\n        /* We check for insufficient lookahead only every 8th comparison;\n         * the 256th check will be made at strstart+258.\n         */\n        do {\n          /*jshint noempty:false*/\n        } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 scan < strend);\n\n        // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n        len = MAX_MATCH - (strend - scan);\n        scan = strend - MAX_MATCH;\n\n        if (len > best_len) {\n          s.match_start = cur_match;\n          best_len = len;\n          if (len >= nice_match) {\n            break;\n          }\n          scan_end1  = _win[scan + best_len - 1];\n          scan_end   = _win[scan + best_len];\n        }\n      } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n      if (best_len <= s.lookahead) {\n        return best_len;\n      }\n      return s.lookahead;\n    }\n\n\n    /* ===========================================================================\n     * Fill the window when the lookahead becomes insufficient.\n     * Updates strstart and lookahead.\n     *\n     * IN assertion: lookahead < MIN_LOOKAHEAD\n     * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n     *    At least one byte has been read, or avail_in == 0; reads are\n     *    performed for at least two bytes (required for the zip translate_eol\n     *    option -- not supported here).\n     */\n    function fill_window(s) {\n      var _w_size = s.w_size;\n      var p, n, m, more, str;\n\n      //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n      do {\n        more = s.window_size - s.lookahead - s.strstart;\n\n        // JS ints have 32 bit, block below not needed\n        /* Deal with !@#$% 64K limit: */\n        //if (sizeof(int) <= 2) {\n        //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n        //        more = wsize;\n        //\n        //  } else if (more == (unsigned)(-1)) {\n        //        /* Very unlikely, but possible on 16 bit machine if\n        //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n        //         */\n        //        more--;\n        //    }\n        //}\n\n\n        /* If the window is almost full and there is insufficient lookahead,\n         * move the upper half to the lower one to make room in the upper half.\n         */\n        if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n          utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n          s.match_start -= _w_size;\n          s.strstart -= _w_size;\n          /* we now have strstart >= MAX_DIST */\n          s.block_start -= _w_size;\n\n          /* Slide the hash table (could be avoided with 32 bit values\n           at the expense of memory usage). We slide even when level == 0\n           to keep the hash table consistent if we switch back to level > 0\n           later. (Using level 0 permanently is not an optimal usage of\n           zlib, so we don't care about this pathological case.)\n           */\n\n          n = s.hash_size;\n          p = n;\n          do {\n            m = s.head[--p];\n            s.head[p] = (m >= _w_size ? m - _w_size : 0);\n          } while (--n);\n\n          n = _w_size;\n          p = n;\n          do {\n            m = s.prev[--p];\n            s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n            /* If n is not on any hash chain, prev[n] is garbage but\n             * its value will never be used.\n             */\n          } while (--n);\n\n          more += _w_size;\n        }\n        if (s.strm.avail_in === 0) {\n          break;\n        }\n\n        /* If there was no sliding:\n         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n         *    more == window_size - lookahead - strstart\n         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n         * => more >= window_size - 2*WSIZE + 2\n         * In the BIG_MEM or MMAP case (not yet supported),\n         *   window_size == input_size + MIN_LOOKAHEAD  &&\n         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n         * Otherwise, window_size == 2*WSIZE so more >= 2.\n         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n         */\n        //Assert(more >= 2, \"more < 2\");\n        n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n        s.lookahead += n;\n\n        /* Initialize the hash value now that we have some input: */\n        if (s.lookahead + s.insert >= MIN_MATCH) {\n          str = s.strstart - s.insert;\n          s.ins_h = s.window[str];\n\n          /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n    //#if MIN_MATCH != 3\n    //        Call update_hash() MIN_MATCH-3 more times\n    //#endif\n          while (s.insert) {\n            /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n            s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n            s.prev[str & s.w_mask] = s.head[s.ins_h];\n            s.head[s.ins_h] = str;\n            str++;\n            s.insert--;\n            if (s.lookahead + s.insert < MIN_MATCH) {\n              break;\n            }\n          }\n        }\n        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n         * but this is not important since only literal bytes will be emitted.\n         */\n\n      } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n      /* If the WIN_INIT bytes after the end of the current data have never been\n       * written, then zero those bytes in order to avoid memory check reports of\n       * the use of uninitialized (or uninitialised as Julian writes) bytes by\n       * the longest match routines.  Update the high water mark for the next\n       * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n       * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n       */\n    //  if (s.high_water < s.window_size) {\n    //    var curr = s.strstart + s.lookahead;\n    //    var init = 0;\n    //\n    //    if (s.high_water < curr) {\n    //      /* Previous high water mark below current data -- zero WIN_INIT\n    //       * bytes or up to end of window, whichever is less.\n    //       */\n    //      init = s.window_size - curr;\n    //      if (init > WIN_INIT)\n    //        init = WIN_INIT;\n    //      zmemzero(s->window + curr, (unsigned)init);\n    //      s->high_water = curr + init;\n    //    }\n    //    else if (s->high_water < (ulg)curr + WIN_INIT) {\n    //      /* High water mark at or above current data, but below current data\n    //       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n    //       * to end of window, whichever is less.\n    //       */\n    //      init = (ulg)curr + WIN_INIT - s->high_water;\n    //      if (init > s->window_size - s->high_water)\n    //        init = s->window_size - s->high_water;\n    //      zmemzero(s->window + s->high_water, (unsigned)init);\n    //      s->high_water += init;\n    //    }\n    //  }\n    //\n    //  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n    //    \"not enough room for search\");\n    }\n\n    /* ===========================================================================\n     * Copy without compression as much as possible from the input stream, return\n     * the current block state.\n     * This function does not insert new strings in the dictionary since\n     * uncompressible data is probably not useful. This function is used\n     * only for the level=0 compression option.\n     * NOTE: this function should be optimized to avoid extra copying from\n     * window to pending_buf.\n     */\n    function deflate_stored(s, flush) {\n      /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n       * to pending_buf_size, and each stored block has a 5 byte header:\n       */\n      var max_block_size = 0xffff;\n\n      if (max_block_size > s.pending_buf_size - 5) {\n        max_block_size = s.pending_buf_size - 5;\n      }\n\n      /* Copy as much as possible from input to output: */\n      for (;;) {\n        /* Fill the window as much as possible: */\n        if (s.lookahead <= 1) {\n\n          //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n          //  s->block_start >= (long)s->w_size, \"slide too late\");\n    //      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n    //        s.block_start >= s.w_size)) {\n    //        throw  new Error(\"slide too late\");\n    //      }\n\n          fill_window(s);\n          if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n\n          if (s.lookahead === 0) {\n            break;\n          }\n          /* flush the current block */\n        }\n        //Assert(s->block_start >= 0L, \"block gone\");\n    //    if (s.block_start < 0) throw new Error(\"block gone\");\n\n        s.strstart += s.lookahead;\n        s.lookahead = 0;\n\n        /* Emit a stored block if pending_buf will be full: */\n        var max_start = s.block_start + max_block_size;\n\n        if (s.strstart === 0 || s.strstart >= max_start) {\n          /* strstart == 0 is possible when wraparound on 16-bit machine */\n          s.lookahead = s.strstart - max_start;\n          s.strstart = max_start;\n          /*** FLUSH_BLOCK(s, 0); ***/\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n          /***/\n\n\n        }\n        /* Flush if we may have to slide, otherwise block_start may become\n         * negative and the data will be gone:\n         */\n        if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n          /*** FLUSH_BLOCK(s, 0); ***/\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n          /***/\n        }\n      }\n\n      s.insert = 0;\n\n      if (flush === Z_FINISH) {\n        /*** FLUSH_BLOCK(s, 1); ***/\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        /***/\n        return BS_FINISH_DONE;\n      }\n\n      if (s.strstart > s.block_start) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n      return BS_NEED_MORE;\n    }\n\n    /* ===========================================================================\n     * Compress as much as possible from the input stream, return the current\n     * block state.\n     * This function does not perform lazy evaluation of matches and inserts\n     * new strings in the dictionary only for unmatched strings or for short\n     * matches. It is used only for the fast compression options.\n     */\n    function deflate_fast(s, flush) {\n      var hash_head;        /* head of the hash chain */\n      var bflush;           /* set if current block must be flushed */\n\n      for (;;) {\n        /* Make sure that we always have enough lookahead, except\n         * at the end of the input file. We need MAX_MATCH bytes\n         * for the next match, plus MIN_MATCH bytes to insert the\n         * string following the next match.\n         */\n        if (s.lookahead < MIN_LOOKAHEAD) {\n          fill_window(s);\n          if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) {\n            break; /* flush the current block */\n          }\n        }\n\n        /* Insert the string window[strstart .. strstart+2] in the\n         * dictionary, and set hash_head to the head of the hash chain:\n         */\n        hash_head = 0/*NIL*/;\n        if (s.lookahead >= MIN_MATCH) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n\n        /* Find the longest match, discarding those <= prev_length.\n         * At this point we have always match_length < MIN_MATCH\n         */\n        if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n          /* To simplify the code, we prevent matches with the string\n           * of window index 0 (in particular we have to avoid a match\n           * of the string with itself at the start of the input file).\n           */\n          s.match_length = longest_match(s, hash_head);\n          /* longest_match() sets match_start */\n        }\n        if (s.match_length >= MIN_MATCH) {\n          // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n          /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                         s.match_length - MIN_MATCH, bflush); ***/\n          bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n          s.lookahead -= s.match_length;\n\n          /* Insert new strings in the hash table only if the match length\n           * is not too large. This saves time but degrades compression.\n           */\n          if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n            s.match_length--; /* string at strstart already in table */\n            do {\n              s.strstart++;\n              /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n              s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n              hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n              s.head[s.ins_h] = s.strstart;\n              /***/\n              /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n               * always MIN_MATCH bytes ahead.\n               */\n            } while (--s.match_length !== 0);\n            s.strstart++;\n          } else\n          {\n            s.strstart += s.match_length;\n            s.match_length = 0;\n            s.ins_h = s.window[s.strstart];\n            /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n            s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n    //#if MIN_MATCH != 3\n    //                Call UPDATE_HASH() MIN_MATCH-3 more times\n    //#endif\n            /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n             * matter since it will be recomputed at next deflate call.\n             */\n          }\n        } else {\n          /* No match, output a literal byte */\n          //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n          /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n          bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n          s.lookahead--;\n          s.strstart++;\n        }\n        if (bflush) {\n          /*** FLUSH_BLOCK(s, 0); ***/\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n          /***/\n        }\n      }\n      s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n      if (flush === Z_FINISH) {\n        /*** FLUSH_BLOCK(s, 1); ***/\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        /***/\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n      return BS_BLOCK_DONE;\n    }\n\n    /* ===========================================================================\n     * Same as above, but achieves better compression. We use a lazy\n     * evaluation for matches: a match is finally adopted only if there is\n     * no better match at the next window position.\n     */\n    function deflate_slow(s, flush) {\n      var hash_head;          /* head of hash chain */\n      var bflush;              /* set if current block must be flushed */\n\n      var max_insert;\n\n      /* Process the input block. */\n      for (;;) {\n        /* Make sure that we always have enough lookahead, except\n         * at the end of the input file. We need MAX_MATCH bytes\n         * for the next match, plus MIN_MATCH bytes to insert the\n         * string following the next match.\n         */\n        if (s.lookahead < MIN_LOOKAHEAD) {\n          fill_window(s);\n          if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) { break; } /* flush the current block */\n        }\n\n        /* Insert the string window[strstart .. strstart+2] in the\n         * dictionary, and set hash_head to the head of the hash chain:\n         */\n        hash_head = 0/*NIL*/;\n        if (s.lookahead >= MIN_MATCH) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n\n        /* Find the longest match, discarding those <= prev_length.\n         */\n        s.prev_length = s.match_length;\n        s.prev_match = s.match_start;\n        s.match_length = MIN_MATCH - 1;\n\n        if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n            s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n          /* To simplify the code, we prevent matches with the string\n           * of window index 0 (in particular we have to avoid a match\n           * of the string with itself at the start of the input file).\n           */\n          s.match_length = longest_match(s, hash_head);\n          /* longest_match() sets match_start */\n\n          if (s.match_length <= 5 &&\n             (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n            /* If prev_match is also MIN_MATCH, match_start is garbage\n             * but we will ignore the current match anyway.\n             */\n            s.match_length = MIN_MATCH - 1;\n          }\n        }\n        /* If there was a match at the previous step and the current\n         * match is not better, output the previous match:\n         */\n        if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n          max_insert = s.strstart + s.lookahead - MIN_MATCH;\n          /* Do not insert strings in hash table beyond this. */\n\n          //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n          /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                         s.prev_length - MIN_MATCH, bflush);***/\n          bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n          /* Insert in hash table all strings up to the end of the match.\n           * strstart-1 and strstart are already inserted. If there is not\n           * enough lookahead, the last two strings are not inserted in\n           * the hash table.\n           */\n          s.lookahead -= s.prev_length - 1;\n          s.prev_length -= 2;\n          do {\n            if (++s.strstart <= max_insert) {\n              /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n              s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n              hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n              s.head[s.ins_h] = s.strstart;\n              /***/\n            }\n          } while (--s.prev_length !== 0);\n          s.match_available = 0;\n          s.match_length = MIN_MATCH - 1;\n          s.strstart++;\n\n          if (bflush) {\n            /*** FLUSH_BLOCK(s, 0); ***/\n            flush_block_only(s, false);\n            if (s.strm.avail_out === 0) {\n              return BS_NEED_MORE;\n            }\n            /***/\n          }\n\n        } else if (s.match_available) {\n          /* If there was no match at the previous position, output a\n           * single literal. If there was a match but the current match\n           * is longer, truncate the previous match to a single literal.\n           */\n          //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n          /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n          bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n          if (bflush) {\n            /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n            flush_block_only(s, false);\n            /***/\n          }\n          s.strstart++;\n          s.lookahead--;\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        } else {\n          /* There is no previous match to compare with, wait for\n           * the next step to decide.\n           */\n          s.match_available = 1;\n          s.strstart++;\n          s.lookahead--;\n        }\n      }\n      //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n      if (s.match_available) {\n        //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n        /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n        bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n        s.match_available = 0;\n      }\n      s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n      if (flush === Z_FINISH) {\n        /*** FLUSH_BLOCK(s, 1); ***/\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        /***/\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n      return BS_BLOCK_DONE;\n    }\n\n\n    /* ===========================================================================\n     * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n     * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n     * deflate switches away from Z_RLE.)\n     */\n    function deflate_rle(s, flush) {\n      var bflush;            /* set if current block must be flushed */\n      var prev;              /* byte at distance one to match */\n      var scan, strend;      /* scan goes up to strend for length of run */\n\n      var _win = s.window;\n\n      for (;;) {\n        /* Make sure that we always have enough lookahead, except\n         * at the end of the input file. We need MAX_MATCH bytes\n         * for the longest run, plus one for the unrolled loop.\n         */\n        if (s.lookahead <= MAX_MATCH) {\n          fill_window(s);\n          if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) { break; } /* flush the current block */\n        }\n\n        /* See how many times the previous byte repeats */\n        s.match_length = 0;\n        if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n          scan = s.strstart - 1;\n          prev = _win[scan];\n          if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n            strend = s.strstart + MAX_MATCH;\n            do {\n              /*jshint noempty:false*/\n            } while (prev === _win[++scan] && prev === _win[++scan] &&\n                     prev === _win[++scan] && prev === _win[++scan] &&\n                     prev === _win[++scan] && prev === _win[++scan] &&\n                     prev === _win[++scan] && prev === _win[++scan] &&\n                     scan < strend);\n            s.match_length = MAX_MATCH - (strend - scan);\n            if (s.match_length > s.lookahead) {\n              s.match_length = s.lookahead;\n            }\n          }\n          //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n        }\n\n        /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n        if (s.match_length >= MIN_MATCH) {\n          //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n          /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n          bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n          s.lookahead -= s.match_length;\n          s.strstart += s.match_length;\n          s.match_length = 0;\n        } else {\n          /* No match, output a literal byte */\n          //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n          /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n          bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n          s.lookahead--;\n          s.strstart++;\n        }\n        if (bflush) {\n          /*** FLUSH_BLOCK(s, 0); ***/\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n          /***/\n        }\n      }\n      s.insert = 0;\n      if (flush === Z_FINISH) {\n        /*** FLUSH_BLOCK(s, 1); ***/\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        /***/\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n      return BS_BLOCK_DONE;\n    }\n\n    /* ===========================================================================\n     * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n     * (It will be regenerated if this run of deflate switches away from Huffman.)\n     */\n    function deflate_huff(s, flush) {\n      var bflush;             /* set if current block must be flushed */\n\n      for (;;) {\n        /* Make sure that we have a literal to write. */\n        if (s.lookahead === 0) {\n          fill_window(s);\n          if (s.lookahead === 0) {\n            if (flush === Z_NO_FLUSH) {\n              return BS_NEED_MORE;\n            }\n            break;      /* flush the current block */\n          }\n        }\n\n        /* Output a literal byte */\n        s.match_length = 0;\n        //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n        /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n        bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n        s.lookahead--;\n        s.strstart++;\n        if (bflush) {\n          /*** FLUSH_BLOCK(s, 0); ***/\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n          /***/\n        }\n      }\n      s.insert = 0;\n      if (flush === Z_FINISH) {\n        /*** FLUSH_BLOCK(s, 1); ***/\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        /***/\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n      return BS_BLOCK_DONE;\n    }\n\n    /* Values for max_lazy_match, good_match and max_chain_length, depending on\n     * the desired pack level (0..9). The values given below have been tuned to\n     * exclude worst case performance for pathological files. Better values may be\n     * found for specific files.\n     */\n    function Config(good_length, max_lazy, nice_length, max_chain, func) {\n      this.good_length = good_length;\n      this.max_lazy = max_lazy;\n      this.nice_length = nice_length;\n      this.max_chain = max_chain;\n      this.func = func;\n    }\n\n    var configuration_table;\n\n    configuration_table = [\n      /*      good lazy nice chain */\n      new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n      new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n      new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n      new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n      new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n      new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n      new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n      new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n      new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n      new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n    ];\n\n\n    /* ===========================================================================\n     * Initialize the \"longest match\" routines for a new zlib stream\n     */\n    function lm_init(s) {\n      s.window_size = 2 * s.w_size;\n\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n\n      /* Set the default configuration parameters:\n       */\n      s.max_lazy_match = configuration_table[s.level].max_lazy;\n      s.good_match = configuration_table[s.level].good_length;\n      s.nice_match = configuration_table[s.level].nice_length;\n      s.max_chain_length = configuration_table[s.level].max_chain;\n\n      s.strstart = 0;\n      s.block_start = 0;\n      s.lookahead = 0;\n      s.insert = 0;\n      s.match_length = s.prev_length = MIN_MATCH - 1;\n      s.match_available = 0;\n      s.ins_h = 0;\n    }\n\n\n    function DeflateState() {\n      this.strm = null;            /* pointer back to this zlib stream */\n      this.status = 0;            /* as the name implies */\n      this.pending_buf = null;      /* output still pending */\n      this.pending_buf_size = 0;  /* size of pending_buf */\n      this.pending_out = 0;       /* next pending byte to output to the stream */\n      this.pending = 0;           /* nb of bytes in the pending buffer */\n      this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n      this.gzhead = null;         /* gzip header information to write */\n      this.gzindex = 0;           /* where in extra, name, or comment */\n      this.method = Z_DEFLATED; /* can only be DEFLATED */\n      this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n      this.w_size = 0;  /* LZ77 window size (32K by default) */\n      this.w_bits = 0;  /* log2(w_size)  (8..16) */\n      this.w_mask = 0;  /* w_size - 1 */\n\n      this.window = null;\n      /* Sliding window. Input bytes are read into the second half of the window,\n       * and move to the first half later to keep a dictionary of at least wSize\n       * bytes. With this organization, matches are limited to a distance of\n       * wSize-MAX_MATCH bytes, but this ensures that IO is always\n       * performed with a length multiple of the block size.\n       */\n\n      this.window_size = 0;\n      /* Actual size of window: 2*wSize, except when the user input buffer\n       * is directly used as sliding window.\n       */\n\n      this.prev = null;\n      /* Link to older string with same hash index. To limit the size of this\n       * array to 64K, this link is maintained only for the last 32K strings.\n       * An index in this array is thus a window index modulo 32K.\n       */\n\n      this.head = null;   /* Heads of the hash chains or NIL. */\n\n      this.ins_h = 0;       /* hash index of string to be inserted */\n      this.hash_size = 0;   /* number of elements in hash table */\n      this.hash_bits = 0;   /* log2(hash_size) */\n      this.hash_mask = 0;   /* hash_size-1 */\n\n      this.hash_shift = 0;\n      /* Number of bits by which ins_h must be shifted at each input\n       * step. It must be such that after MIN_MATCH steps, the oldest\n       * byte no longer takes part in the hash key, that is:\n       *   hash_shift * MIN_MATCH >= hash_bits\n       */\n\n      this.block_start = 0;\n      /* Window position at the beginning of the current output block. Gets\n       * negative when the window is moved backwards.\n       */\n\n      this.match_length = 0;      /* length of best match */\n      this.prev_match = 0;        /* previous match */\n      this.match_available = 0;   /* set if previous match exists */\n      this.strstart = 0;          /* start of string to insert */\n      this.match_start = 0;       /* start of matching string */\n      this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n      this.prev_length = 0;\n      /* Length of the best match at previous step. Matches not greater than this\n       * are discarded. This is used in the lazy match evaluation.\n       */\n\n      this.max_chain_length = 0;\n      /* To speed up deflation, hash chains are never searched beyond this\n       * length.  A higher limit improves compression ratio but degrades the\n       * speed.\n       */\n\n      this.max_lazy_match = 0;\n      /* Attempt to find a better match only when the current match is strictly\n       * smaller than this value. This mechanism is used only for compression\n       * levels >= 4.\n       */\n      // That's alias to max_lazy_match, don't use directly\n      //this.max_insert_length = 0;\n      /* Insert new strings in the hash table only if the match length is not\n       * greater than this length. This saves time but degrades compression.\n       * max_insert_length is used only for compression levels <= 3.\n       */\n\n      this.level = 0;     /* compression level (1..9) */\n      this.strategy = 0;  /* favor or force Huffman coding*/\n\n      this.good_match = 0;\n      /* Use a faster search when the previous match is longer than this */\n\n      this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n                  /* used by trees.c: */\n\n      /* Didn't use ct_data typedef below to suppress compiler warning */\n\n      // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n      // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n      // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n      // Use flat array of DOUBLE size, with interleaved fata,\n      // because JS does not support effective\n      this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n      this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n      this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n      zero(this.dyn_ltree);\n      zero(this.dyn_dtree);\n      zero(this.bl_tree);\n\n      this.l_desc   = null;         /* desc. for literal tree */\n      this.d_desc   = null;         /* desc. for distance tree */\n      this.bl_desc  = null;         /* desc. for bit length tree */\n\n      //ush bl_count[MAX_BITS+1];\n      this.bl_count = new utils.Buf16(MAX_BITS + 1);\n      /* number of codes at each bit length for an optimal tree */\n\n      //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n      this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n      zero(this.heap);\n\n      this.heap_len = 0;               /* number of elements in the heap */\n      this.heap_max = 0;               /* element of largest frequency */\n      /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n       * The same heap array is used to build all trees.\n       */\n\n      this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n      zero(this.depth);\n      /* Depth of each subtree used as tie breaker for trees of equal frequency\n       */\n\n      this.l_buf = 0;          /* buffer index for literals or lengths */\n\n      this.lit_bufsize = 0;\n      /* Size of match buffer for literals/lengths.  There are 4 reasons for\n       * limiting lit_bufsize to 64K:\n       *   - frequencies can be kept in 16 bit counters\n       *   - if compression is not successful for the first block, all input\n       *     data is still in the window so we can still emit a stored block even\n       *     when input comes from standard input.  (This can also be done for\n       *     all blocks if lit_bufsize is not greater than 32K.)\n       *   - if compression is not successful for a file smaller than 64K, we can\n       *     even emit a stored file instead of a stored block (saving 5 bytes).\n       *     This is applicable only for zip (not gzip or zlib).\n       *   - creating new Huffman trees less frequently may not provide fast\n       *     adaptation to changes in the input data statistics. (Take for\n       *     example a binary file with poorly compressible code followed by\n       *     a highly compressible string table.) Smaller buffer sizes give\n       *     fast adaptation but have of course the overhead of transmitting\n       *     trees more frequently.\n       *   - I can't count above 4\n       */\n\n      this.last_lit = 0;      /* running index in l_buf */\n\n      this.d_buf = 0;\n      /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n       * the same number of elements. To use different lengths, an extra flag\n       * array would be necessary.\n       */\n\n      this.opt_len = 0;       /* bit length of current block with optimal trees */\n      this.static_len = 0;    /* bit length of current block with static trees */\n      this.matches = 0;       /* number of string matches in current block */\n      this.insert = 0;        /* bytes at end of window left to insert */\n\n\n      this.bi_buf = 0;\n      /* Output buffer. bits are inserted starting at the bottom (least\n       * significant bits).\n       */\n      this.bi_valid = 0;\n      /* Number of valid bits in bi_buf.  All bits above the last valid bit\n       * are always zero.\n       */\n\n      // Used for window memory init. We safely ignore it for JS. That makes\n      // sense only for pointers and memory check tools.\n      //this.high_water = 0;\n      /* High water mark offset in window for initialized bytes -- bytes above\n       * this are set to zero in order to avoid memory check warnings when\n       * longest match routines access bytes past the input.  This is then\n       * updated to the new high water mark.\n       */\n    }\n\n\n    function deflateResetKeep(strm) {\n      var s;\n\n      if (!strm || !strm.state) {\n        return err(strm, Z_STREAM_ERROR);\n      }\n\n      strm.total_in = strm.total_out = 0;\n      strm.data_type = Z_UNKNOWN;\n\n      s = strm.state;\n      s.pending = 0;\n      s.pending_out = 0;\n\n      if (s.wrap < 0) {\n        s.wrap = -s.wrap;\n        /* was made negative by deflate(..., Z_FINISH); */\n      }\n      s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n      strm.adler = (s.wrap === 2) ?\n        0  // crc32(0, Z_NULL, 0)\n      :\n        1; // adler32(0, Z_NULL, 0)\n      s.last_flush = Z_NO_FLUSH;\n      trees._tr_init(s);\n      return Z_OK;\n    }\n\n\n    function deflateReset(strm) {\n      var ret = deflateResetKeep(strm);\n      if (ret === Z_OK) {\n        lm_init(strm.state);\n      }\n      return ret;\n    }\n\n\n    function deflateSetHeader(strm, head) {\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n      strm.state.gzhead = head;\n      return Z_OK;\n    }\n\n\n    function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n      if (!strm) { // === Z_NULL\n        return Z_STREAM_ERROR;\n      }\n      var wrap = 1;\n\n      if (level === Z_DEFAULT_COMPRESSION) {\n        level = 6;\n      }\n\n      if (windowBits < 0) { /* suppress zlib wrapper */\n        wrap = 0;\n        windowBits = -windowBits;\n      }\n\n      else if (windowBits > 15) {\n        wrap = 2;           /* write gzip wrapper instead */\n        windowBits -= 16;\n      }\n\n\n      if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n        windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n        strategy < 0 || strategy > Z_FIXED) {\n        return err(strm, Z_STREAM_ERROR);\n      }\n\n\n      if (windowBits === 8) {\n        windowBits = 9;\n      }\n      /* until 256-byte window bug fixed */\n\n      var s = new DeflateState();\n\n      strm.state = s;\n      s.strm = strm;\n\n      s.wrap = wrap;\n      s.gzhead = null;\n      s.w_bits = windowBits;\n      s.w_size = 1 << s.w_bits;\n      s.w_mask = s.w_size - 1;\n\n      s.hash_bits = memLevel + 7;\n      s.hash_size = 1 << s.hash_bits;\n      s.hash_mask = s.hash_size - 1;\n      s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n      s.window = new utils.Buf8(s.w_size * 2);\n      s.head = new utils.Buf16(s.hash_size);\n      s.prev = new utils.Buf16(s.w_size);\n\n      // Don't need mem init magic for JS.\n      //s.high_water = 0;  /* nothing written to s->window yet */\n\n      s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n      s.pending_buf_size = s.lit_bufsize * 4;\n\n      //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n      //s->pending_buf = (uchf *) overlay;\n      s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n      // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n      //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n      s.d_buf = 1 * s.lit_bufsize;\n\n      //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n      s.l_buf = (1 + 2) * s.lit_bufsize;\n\n      s.level = level;\n      s.strategy = strategy;\n      s.method = method;\n\n      return deflateReset(strm);\n    }\n\n    function deflateInit(strm, level) {\n      return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n    }\n\n\n    function deflate(strm, flush) {\n      var old_flush, s;\n      var beg, val; // for gzip header write only\n\n      if (!strm || !strm.state ||\n        flush > Z_BLOCK || flush < 0) {\n        return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n      }\n\n      s = strm.state;\n\n      if (!strm.output ||\n          (!strm.input && strm.avail_in !== 0) ||\n          (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n        return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n      }\n\n      s.strm = strm; /* just in case */\n      old_flush = s.last_flush;\n      s.last_flush = flush;\n\n      /* Write the header */\n      if (s.status === INIT_STATE) {\n\n        if (s.wrap === 2) { // GZIP header\n          strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n          put_byte(s, 31);\n          put_byte(s, 139);\n          put_byte(s, 8);\n          if (!s.gzhead) { // s->gzhead == Z_NULL\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, s.level === 9 ? 2 :\n                        (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                         4 : 0));\n            put_byte(s, OS_CODE);\n            s.status = BUSY_STATE;\n          }\n          else {\n            put_byte(s, (s.gzhead.text ? 1 : 0) +\n                        (s.gzhead.hcrc ? 2 : 0) +\n                        (!s.gzhead.extra ? 0 : 4) +\n                        (!s.gzhead.name ? 0 : 8) +\n                        (!s.gzhead.comment ? 0 : 16)\n            );\n            put_byte(s, s.gzhead.time & 0xff);\n            put_byte(s, (s.gzhead.time >> 8) & 0xff);\n            put_byte(s, (s.gzhead.time >> 16) & 0xff);\n            put_byte(s, (s.gzhead.time >> 24) & 0xff);\n            put_byte(s, s.level === 9 ? 2 :\n                        (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                         4 : 0));\n            put_byte(s, s.gzhead.os & 0xff);\n            if (s.gzhead.extra && s.gzhead.extra.length) {\n              put_byte(s, s.gzhead.extra.length & 0xff);\n              put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n            }\n            if (s.gzhead.hcrc) {\n              strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n            }\n            s.gzindex = 0;\n            s.status = EXTRA_STATE;\n          }\n        }\n        else // DEFLATE header\n        {\n          var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n          var level_flags = -1;\n\n          if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n            level_flags = 0;\n          } else if (s.level < 6) {\n            level_flags = 1;\n          } else if (s.level === 6) {\n            level_flags = 2;\n          } else {\n            level_flags = 3;\n          }\n          header |= (level_flags << 6);\n          if (s.strstart !== 0) { header |= PRESET_DICT; }\n          header += 31 - (header % 31);\n\n          s.status = BUSY_STATE;\n          putShortMSB(s, header);\n\n          /* Save the adler32 of the preset dictionary: */\n          if (s.strstart !== 0) {\n            putShortMSB(s, strm.adler >>> 16);\n            putShortMSB(s, strm.adler & 0xffff);\n          }\n          strm.adler = 1; // adler32(0L, Z_NULL, 0);\n        }\n      }\n\n    //#ifdef GZIP\n      if (s.status === EXTRA_STATE) {\n        if (s.gzhead.extra/* != Z_NULL*/) {\n          beg = s.pending;  /* start of bytes to update crc */\n\n          while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n            if (s.pending === s.pending_buf_size) {\n              if (s.gzhead.hcrc && s.pending > beg) {\n                strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n              }\n              flush_pending(strm);\n              beg = s.pending;\n              if (s.pending === s.pending_buf_size) {\n                break;\n              }\n            }\n            put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n            s.gzindex++;\n          }\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          if (s.gzindex === s.gzhead.extra.length) {\n            s.gzindex = 0;\n            s.status = NAME_STATE;\n          }\n        }\n        else {\n          s.status = NAME_STATE;\n        }\n      }\n      if (s.status === NAME_STATE) {\n        if (s.gzhead.name/* != Z_NULL*/) {\n          beg = s.pending;  /* start of bytes to update crc */\n          //int val;\n\n          do {\n            if (s.pending === s.pending_buf_size) {\n              if (s.gzhead.hcrc && s.pending > beg) {\n                strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n              }\n              flush_pending(strm);\n              beg = s.pending;\n              if (s.pending === s.pending_buf_size) {\n                val = 1;\n                break;\n              }\n            }\n            // JS specific: little magic to add zero terminator to end of string\n            if (s.gzindex < s.gzhead.name.length) {\n              val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n            } else {\n              val = 0;\n            }\n            put_byte(s, val);\n          } while (val !== 0);\n\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          if (val === 0) {\n            s.gzindex = 0;\n            s.status = COMMENT_STATE;\n          }\n        }\n        else {\n          s.status = COMMENT_STATE;\n        }\n      }\n      if (s.status === COMMENT_STATE) {\n        if (s.gzhead.comment/* != Z_NULL*/) {\n          beg = s.pending;  /* start of bytes to update crc */\n          //int val;\n\n          do {\n            if (s.pending === s.pending_buf_size) {\n              if (s.gzhead.hcrc && s.pending > beg) {\n                strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n              }\n              flush_pending(strm);\n              beg = s.pending;\n              if (s.pending === s.pending_buf_size) {\n                val = 1;\n                break;\n              }\n            }\n            // JS specific: little magic to add zero terminator to end of string\n            if (s.gzindex < s.gzhead.comment.length) {\n              val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n            } else {\n              val = 0;\n            }\n            put_byte(s, val);\n          } while (val !== 0);\n\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          if (val === 0) {\n            s.status = HCRC_STATE;\n          }\n        }\n        else {\n          s.status = HCRC_STATE;\n        }\n      }\n      if (s.status === HCRC_STATE) {\n        if (s.gzhead.hcrc) {\n          if (s.pending + 2 > s.pending_buf_size) {\n            flush_pending(strm);\n          }\n          if (s.pending + 2 <= s.pending_buf_size) {\n            put_byte(s, strm.adler & 0xff);\n            put_byte(s, (strm.adler >> 8) & 0xff);\n            strm.adler = 0; //crc32(0L, Z_NULL, 0);\n            s.status = BUSY_STATE;\n          }\n        }\n        else {\n          s.status = BUSY_STATE;\n        }\n      }\n    //#endif\n\n      /* Flush as much pending output as possible */\n      if (s.pending !== 0) {\n        flush_pending(strm);\n        if (strm.avail_out === 0) {\n          /* Since avail_out is 0, deflate will be called again with\n           * more output space, but possibly with both pending and\n           * avail_in equal to zero. There won't be anything to do,\n           * but this is not an error situation so make sure we\n           * return OK instead of BUF_ERROR at next call of deflate:\n           */\n          s.last_flush = -1;\n          return Z_OK;\n        }\n\n        /* Make sure there is something to do and avoid duplicate consecutive\n         * flushes. For repeated and useless calls with Z_FINISH, we keep\n         * returning Z_STREAM_END instead of Z_BUF_ERROR.\n         */\n      } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n        flush !== Z_FINISH) {\n        return err(strm, Z_BUF_ERROR);\n      }\n\n      /* User must not provide more input after the first FINISH: */\n      if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n        return err(strm, Z_BUF_ERROR);\n      }\n\n      /* Start a new block or continue the current one.\n       */\n      if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n        (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n        var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n          (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n            configuration_table[s.level].func(s, flush));\n\n        if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n          s.status = FINISH_STATE;\n        }\n        if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n          if (strm.avail_out === 0) {\n            s.last_flush = -1;\n            /* avoid BUF_ERROR next call, see above */\n          }\n          return Z_OK;\n          /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n           * of deflate should use the same flush parameter to make sure\n           * that the flush is complete. So we don't have to output an\n           * empty block here, this will be done at next call. This also\n           * ensures that for a very small output buffer, we emit at most\n           * one empty block.\n           */\n        }\n        if (bstate === BS_BLOCK_DONE) {\n          if (flush === Z_PARTIAL_FLUSH) {\n            trees._tr_align(s);\n          }\n          else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n            trees._tr_stored_block(s, 0, 0, false);\n            /* For a full flush, this empty block will be recognized\n             * as a special marker by inflate_sync().\n             */\n            if (flush === Z_FULL_FLUSH) {\n              /*** CLEAR_HASH(s); ***/             /* forget history */\n              zero(s.head); // Fill with NIL (= 0);\n\n              if (s.lookahead === 0) {\n                s.strstart = 0;\n                s.block_start = 0;\n                s.insert = 0;\n              }\n            }\n          }\n          flush_pending(strm);\n          if (strm.avail_out === 0) {\n            s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n            return Z_OK;\n          }\n        }\n      }\n      //Assert(strm->avail_out > 0, \"bug2\");\n      //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n      if (flush !== Z_FINISH) { return Z_OK; }\n      if (s.wrap <= 0) { return Z_STREAM_END; }\n\n      /* Write the trailer */\n      if (s.wrap === 2) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        put_byte(s, (strm.adler >> 16) & 0xff);\n        put_byte(s, (strm.adler >> 24) & 0xff);\n        put_byte(s, strm.total_in & 0xff);\n        put_byte(s, (strm.total_in >> 8) & 0xff);\n        put_byte(s, (strm.total_in >> 16) & 0xff);\n        put_byte(s, (strm.total_in >> 24) & 0xff);\n      }\n      else\n      {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n\n      flush_pending(strm);\n      /* If avail_out is zero, the application will call deflate again\n       * to flush the rest.\n       */\n      if (s.wrap > 0) { s.wrap = -s.wrap; }\n      /* write the trailer only once! */\n      return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n    }\n\n    function deflateEnd(strm) {\n      var status;\n\n      if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n        return Z_STREAM_ERROR;\n      }\n\n      status = strm.state.status;\n      if (status !== INIT_STATE &&\n        status !== EXTRA_STATE &&\n        status !== NAME_STATE &&\n        status !== COMMENT_STATE &&\n        status !== HCRC_STATE &&\n        status !== BUSY_STATE &&\n        status !== FINISH_STATE\n      ) {\n        return err(strm, Z_STREAM_ERROR);\n      }\n\n      strm.state = null;\n\n      return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n    }\n\n\n    /* =========================================================================\n     * Initializes the compression dictionary from the given byte\n     * sequence without producing any compressed output.\n     */\n    function deflateSetDictionary(strm, dictionary) {\n      var dictLength = dictionary.length;\n\n      var s;\n      var str, n;\n      var wrap;\n      var avail;\n      var next;\n      var input;\n      var tmpDict;\n\n      if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n        return Z_STREAM_ERROR;\n      }\n\n      s = strm.state;\n      wrap = s.wrap;\n\n      if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n        return Z_STREAM_ERROR;\n      }\n\n      /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n      if (wrap === 1) {\n        /* adler32(strm->adler, dictionary, dictLength); */\n        strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n      }\n\n      s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n      /* if dictionary would fill window, just replace the history */\n      if (dictLength >= s.w_size) {\n        if (wrap === 0) {            /* already empty otherwise */\n          /*** CLEAR_HASH(s); ***/\n          zero(s.head); // Fill with NIL (= 0);\n          s.strstart = 0;\n          s.block_start = 0;\n          s.insert = 0;\n        }\n        /* use the tail */\n        // dictionary = dictionary.slice(dictLength - s.w_size);\n        tmpDict = new utils.Buf8(s.w_size);\n        utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n        dictionary = tmpDict;\n        dictLength = s.w_size;\n      }\n      /* insert dictionary into window and hash */\n      avail = strm.avail_in;\n      next = strm.next_in;\n      input = strm.input;\n      strm.avail_in = dictLength;\n      strm.next_in = 0;\n      strm.input = dictionary;\n      fill_window(s);\n      while (s.lookahead >= MIN_MATCH) {\n        str = s.strstart;\n        n = s.lookahead - (MIN_MATCH - 1);\n        do {\n          /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n          s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n          s.head[s.ins_h] = str;\n          str++;\n        } while (--n);\n        s.strstart = str;\n        s.lookahead = MIN_MATCH - 1;\n        fill_window(s);\n      }\n      s.strstart += s.lookahead;\n      s.block_start = s.strstart;\n      s.insert = s.lookahead;\n      s.lookahead = 0;\n      s.match_length = s.prev_length = MIN_MATCH - 1;\n      s.match_available = 0;\n      strm.next_in = next;\n      strm.input = input;\n      strm.avail_in = avail;\n      s.wrap = wrap;\n      return Z_OK;\n    }\n\n\n    exports.deflateInit = deflateInit;\n    exports.deflateInit2 = deflateInit2;\n    exports.deflateReset = deflateReset;\n    exports.deflateResetKeep = deflateResetKeep;\n    exports.deflateSetHeader = deflateSetHeader;\n    exports.deflate = deflate;\n    exports.deflateEnd = deflateEnd;\n    exports.deflateSetDictionary = deflateSetDictionary;\n    exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n    /* Not implemented\n    exports.deflateBound = deflateBound;\n    exports.deflateCopy = deflateCopy;\n    exports.deflateParams = deflateParams;\n    exports.deflatePending = deflatePending;\n    exports.deflatePrime = deflatePrime;\n    exports.deflateTune = deflateTune;\n    */\n\n    },{\"../utils/common\":50,\"./adler32\":52,\"./crc32\":54,\"./messages\":60,\"./trees\":61}],56:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    function GZheader() {\n      /* true if compressed data believed to be text */\n      this.text       = 0;\n      /* modification time */\n      this.time       = 0;\n      /* extra flags (not used when writing a gzip file) */\n      this.xflags     = 0;\n      /* operating system */\n      this.os         = 0;\n      /* pointer to extra field or Z_NULL if none */\n      this.extra      = null;\n      /* extra field length (valid if extra != Z_NULL) */\n      this.extra_len  = 0; // Actually, we don't need it in JS,\n                           // but leave for few code modifications\n\n      //\n      // Setup limits is not necessary because in js we should not preallocate memory\n      // for inflate use constant limit in 65536 bytes\n      //\n\n      /* space at extra (only when reading header) */\n      // this.extra_max  = 0;\n      /* pointer to zero-terminated file name or Z_NULL */\n      this.name       = '';\n      /* space at name (only when reading header) */\n      // this.name_max   = 0;\n      /* pointer to zero-terminated comment or Z_NULL */\n      this.comment    = '';\n      /* space at comment (only when reading header) */\n      // this.comm_max   = 0;\n      /* true if there was or will be a header crc */\n      this.hcrc       = 0;\n      /* true when done reading gzip header (not used when writing a gzip file) */\n      this.done       = false;\n    }\n\n    module.exports = GZheader;\n\n    },{}],57:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    // See state defs from inflate.js\n    var BAD = 30;       /* got a data error -- remain here until reset */\n    var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n    /*\n       Decode literal, length, and distance codes and write out the resulting\n       literal and match bytes until either not enough input or output is\n       available, an end-of-block is encountered, or a data error is encountered.\n       When large enough input and output buffers are supplied to inflate(), for\n       example, a 16K input buffer and a 64K output buffer, more than 95% of the\n       inflate execution time is spent in this routine.\n\n       Entry assumptions:\n\n            state.mode === LEN\n            strm.avail_in >= 6\n            strm.avail_out >= 258\n            start >= strm.avail_out\n            state.bits < 8\n\n       On return, state.mode is one of:\n\n            LEN -- ran out of enough output space or enough available input\n            TYPE -- reached end of block code, inflate() to interpret next block\n            BAD -- error in block data\n\n       Notes:\n\n        - The maximum input bits used by a length/distance pair is 15 bits for the\n          length code, 5 bits for the length extra, 15 bits for the distance code,\n          and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n          Therefore if strm.avail_in >= 6, then there is enough input to avoid\n          checking for available input while decoding.\n\n        - The maximum bytes that a single length/distance pair can output is 258\n          bytes, which is the maximum length that can be coded.  inflate_fast()\n          requires strm.avail_out >= 258 for each loop to avoid checking for\n          output space.\n     */\n    module.exports = function inflate_fast(strm, start) {\n      var state;\n      var _in;                    /* local strm.input */\n      var last;                   /* have enough input while in < last */\n      var _out;                   /* local strm.output */\n      var beg;                    /* inflate()'s initial strm.output */\n      var end;                    /* while out < end, enough space available */\n    //#ifdef INFLATE_STRICT\n      var dmax;                   /* maximum distance from zlib header */\n    //#endif\n      var wsize;                  /* window size or zero if not using window */\n      var whave;                  /* valid bytes in the window */\n      var wnext;                  /* window write index */\n      // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n      var s_window;               /* allocated sliding window, if wsize != 0 */\n      var hold;                   /* local strm.hold */\n      var bits;                   /* local strm.bits */\n      var lcode;                  /* local strm.lencode */\n      var dcode;                  /* local strm.distcode */\n      var lmask;                  /* mask for first level of length codes */\n      var dmask;                  /* mask for first level of distance codes */\n      var here;                   /* retrieved table entry */\n      var op;                     /* code bits, operation, extra bits, or */\n                                  /*  window position, window bytes to copy */\n      var len;                    /* match length, unused bytes */\n      var dist;                   /* match distance */\n      var from;                   /* where to copy match from */\n      var from_source;\n\n\n      var input, output; // JS specific, because we have no pointers\n\n      /* copy state to local variables */\n      state = strm.state;\n      //here = state.here;\n      _in = strm.next_in;\n      input = strm.input;\n      last = _in + (strm.avail_in - 5);\n      _out = strm.next_out;\n      output = strm.output;\n      beg = _out - (start - strm.avail_out);\n      end = _out + (strm.avail_out - 257);\n    //#ifdef INFLATE_STRICT\n      dmax = state.dmax;\n    //#endif\n      wsize = state.wsize;\n      whave = state.whave;\n      wnext = state.wnext;\n      s_window = state.window;\n      hold = state.hold;\n      bits = state.bits;\n      lcode = state.lencode;\n      dcode = state.distcode;\n      lmask = (1 << state.lenbits) - 1;\n      dmask = (1 << state.distbits) - 1;\n\n\n      /* decode literals and length/distances until end-of-block or not enough\n         input data or output space */\n\n      top:\n      do {\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n\n        here = lcode[hold & lmask];\n\n        dolen:\n        for (;;) { // Goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n          if (op === 0) {                          /* literal */\n            //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n            //        \"inflate:         literal '%c'\\n\" :\n            //        \"inflate:         literal 0x%02x\\n\", here.val));\n            output[_out++] = here & 0xffff/*here.val*/;\n          }\n          else if (op & 16) {                     /* length base */\n            len = here & 0xffff/*here.val*/;\n            op &= 15;                           /* number of extra bits */\n            if (op) {\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n              len += hold & ((1 << op) - 1);\n              hold >>>= op;\n              bits -= op;\n            }\n            //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n            if (bits < 15) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              hold += input[_in++] << bits;\n              bits += 8;\n            }\n            here = dcode[hold & dmask];\n\n            dodist:\n            for (;;) { // goto emulation\n              op = here >>> 24/*here.bits*/;\n              hold >>>= op;\n              bits -= op;\n              op = (here >>> 16) & 0xff/*here.op*/;\n\n              if (op & 16) {                      /* distance base */\n                dist = here & 0xffff/*here.val*/;\n                op &= 15;                       /* number of extra bits */\n                if (bits < op) {\n                  hold += input[_in++] << bits;\n                  bits += 8;\n                  if (bits < op) {\n                    hold += input[_in++] << bits;\n                    bits += 8;\n                  }\n                }\n                dist += hold & ((1 << op) - 1);\n    //#ifdef INFLATE_STRICT\n                if (dist > dmax) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n    //#endif\n                hold >>>= op;\n                bits -= op;\n                //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n                op = _out - beg;                /* max distance in output */\n                if (dist > op) {                /* see if copy from window */\n                  op = dist - op;               /* distance back in window */\n                  if (op > whave) {\n                    if (state.sane) {\n                      strm.msg = 'invalid distance too far back';\n                      state.mode = BAD;\n                      break top;\n                    }\n\n    // (!) This block is disabled in zlib defaults,\n    // don't enable it for binary compatibility\n    //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n    //                if (len <= op - whave) {\n    //                  do {\n    //                    output[_out++] = 0;\n    //                  } while (--len);\n    //                  continue top;\n    //                }\n    //                len -= op - whave;\n    //                do {\n    //                  output[_out++] = 0;\n    //                } while (--op > whave);\n    //                if (op === 0) {\n    //                  from = _out - dist;\n    //                  do {\n    //                    output[_out++] = output[from++];\n    //                  } while (--len);\n    //                  continue top;\n    //                }\n    //#endif\n                  }\n                  from = 0; // window index\n                  from_source = s_window;\n                  if (wnext === 0) {           /* very common case */\n                    from += wsize - op;\n                    if (op < len) {         /* some from window */\n                      len -= op;\n                      do {\n                        output[_out++] = s_window[from++];\n                      } while (--op);\n                      from = _out - dist;  /* rest from output */\n                      from_source = output;\n                    }\n                  }\n                  else if (wnext < op) {      /* wrap around window */\n                    from += wsize + wnext - op;\n                    op -= wnext;\n                    if (op < len) {         /* some from end of window */\n                      len -= op;\n                      do {\n                        output[_out++] = s_window[from++];\n                      } while (--op);\n                      from = 0;\n                      if (wnext < len) {  /* some from start of window */\n                        op = wnext;\n                        len -= op;\n                        do {\n                          output[_out++] = s_window[from++];\n                        } while (--op);\n                        from = _out - dist;      /* rest from output */\n                        from_source = output;\n                      }\n                    }\n                  }\n                  else {                      /* contiguous in window */\n                    from += wnext - op;\n                    if (op < len) {         /* some from window */\n                      len -= op;\n                      do {\n                        output[_out++] = s_window[from++];\n                      } while (--op);\n                      from = _out - dist;  /* rest from output */\n                      from_source = output;\n                    }\n                  }\n                  while (len > 2) {\n                    output[_out++] = from_source[from++];\n                    output[_out++] = from_source[from++];\n                    output[_out++] = from_source[from++];\n                    len -= 3;\n                  }\n                  if (len) {\n                    output[_out++] = from_source[from++];\n                    if (len > 1) {\n                      output[_out++] = from_source[from++];\n                    }\n                  }\n                }\n                else {\n                  from = _out - dist;          /* copy direct from output */\n                  do {                        /* minimum length is three */\n                    output[_out++] = output[from++];\n                    output[_out++] = output[from++];\n                    output[_out++] = output[from++];\n                    len -= 3;\n                  } while (len > 2);\n                  if (len) {\n                    output[_out++] = output[from++];\n                    if (len > 1) {\n                      output[_out++] = output[from++];\n                    }\n                  }\n                }\n              }\n              else if ((op & 64) === 0) {          /* 2nd level distance code */\n                here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n                continue dodist;\n              }\n              else {\n                strm.msg = 'invalid distance code';\n                state.mode = BAD;\n                break top;\n              }\n\n              break; // need to emulate goto via \"continue\"\n            }\n          }\n          else if ((op & 64) === 0) {              /* 2nd level length code */\n            here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dolen;\n          }\n          else if (op & 32) {                     /* end-of-block */\n            //Tracevv((stderr, \"inflate:         end of block\\n\"));\n            state.mode = TYPE;\n            break top;\n          }\n          else {\n            strm.msg = 'invalid literal/length code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      } while (_in < last && _out < end);\n\n      /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n      len = bits >> 3;\n      _in -= len;\n      bits -= len << 3;\n      hold &= (1 << bits) - 1;\n\n      /* update state and return */\n      strm.next_in = _in;\n      strm.next_out = _out;\n      strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n      strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n      state.hold = hold;\n      state.bits = bits;\n      return;\n    };\n\n    },{}],58:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    var utils         = require('../utils/common');\n    var adler32       = require('./adler32');\n    var crc32         = require('./crc32');\n    var inflate_fast  = require('./inffast');\n    var inflate_table = require('./inftrees');\n\n    var CODES = 0;\n    var LENS = 1;\n    var DISTS = 2;\n\n    /* Public constants ==========================================================*/\n    /* ===========================================================================*/\n\n\n    /* Allowed flush values; see deflate() and inflate() below for details */\n    //var Z_NO_FLUSH      = 0;\n    //var Z_PARTIAL_FLUSH = 1;\n    //var Z_SYNC_FLUSH    = 2;\n    //var Z_FULL_FLUSH    = 3;\n    var Z_FINISH        = 4;\n    var Z_BLOCK         = 5;\n    var Z_TREES         = 6;\n\n\n    /* Return codes for the compression/decompression functions. Negative values\n     * are errors, positive values are used for special but normal events.\n     */\n    var Z_OK            = 0;\n    var Z_STREAM_END    = 1;\n    var Z_NEED_DICT     = 2;\n    //var Z_ERRNO         = -1;\n    var Z_STREAM_ERROR  = -2;\n    var Z_DATA_ERROR    = -3;\n    var Z_MEM_ERROR     = -4;\n    var Z_BUF_ERROR     = -5;\n    //var Z_VERSION_ERROR = -6;\n\n    /* The deflate compression method */\n    var Z_DEFLATED  = 8;\n\n\n    /* STATES ====================================================================*/\n    /* ===========================================================================*/\n\n\n    var    HEAD = 1;       /* i: waiting for magic header */\n    var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\n    var    TIME = 3;       /* i: waiting for modification time (gzip) */\n    var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\n    var    EXLEN = 5;      /* i: waiting for extra length (gzip) */\n    var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\n    var    NAME = 7;       /* i: waiting for end of file name (gzip) */\n    var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\n    var    HCRC = 9;       /* i: waiting for header crc (gzip) */\n    var    DICTID = 10;    /* i: waiting for dictionary check value */\n    var    DICT = 11;      /* waiting for inflateSetDictionary() call */\n    var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n    var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\n    var        STORED = 14;    /* i: waiting for stored size (length and complement) */\n    var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\n    var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\n    var        TABLE = 17;     /* i: waiting for dynamic block table lengths */\n    var        LENLENS = 18;   /* i: waiting for code length code lengths */\n    var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\n    var            LEN_ = 20;      /* i: same as LEN below, but only first time in */\n    var            LEN = 21;       /* i: waiting for length/lit/eob code */\n    var            LENEXT = 22;    /* i: waiting for length extra bits */\n    var            DIST = 23;      /* i: waiting for distance code */\n    var            DISTEXT = 24;   /* i: waiting for distance extra bits */\n    var            MATCH = 25;     /* o: waiting for output space to copy string */\n    var            LIT = 26;       /* o: waiting for output space to write literal */\n    var    CHECK = 27;     /* i: waiting for 32-bit check value */\n    var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\n    var    DONE = 29;      /* finished check, done -- remain here until reset */\n    var    BAD = 30;       /* got a data error -- remain here until reset */\n    var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\n    var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n    /* ===========================================================================*/\n\n\n\n    var ENOUGH_LENS = 852;\n    var ENOUGH_DISTS = 592;\n    //var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\n    var MAX_WBITS = 15;\n    /* 32K LZ77 window */\n    var DEF_WBITS = MAX_WBITS;\n\n\n    function zswap32(q) {\n      return  (((q >>> 24) & 0xff) +\n              ((q >>> 8) & 0xff00) +\n              ((q & 0xff00) << 8) +\n              ((q & 0xff) << 24));\n    }\n\n\n    function InflateState() {\n      this.mode = 0;             /* current inflate mode */\n      this.last = false;          /* true if processing last block */\n      this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n      this.havedict = false;      /* true if dictionary provided */\n      this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n      this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n      this.check = 0;             /* protected copy of check value */\n      this.total = 0;             /* protected copy of output count */\n      // TODO: may be {}\n      this.head = null;           /* where to save gzip header information */\n\n      /* sliding window */\n      this.wbits = 0;             /* log base 2 of requested window size */\n      this.wsize = 0;             /* window size or zero if not using window */\n      this.whave = 0;             /* valid bytes in the window */\n      this.wnext = 0;             /* window write index */\n      this.window = null;         /* allocated sliding window, if needed */\n\n      /* bit accumulator */\n      this.hold = 0;              /* input bit accumulator */\n      this.bits = 0;              /* number of bits in \"in\" */\n\n      /* for string and stored block copying */\n      this.length = 0;            /* literal or length of data to copy */\n      this.offset = 0;            /* distance back to copy string from */\n\n      /* for table and code decoding */\n      this.extra = 0;             /* extra bits needed */\n\n      /* fixed and dynamic code tables */\n      this.lencode = null;          /* starting table for length/literal codes */\n      this.distcode = null;         /* starting table for distance codes */\n      this.lenbits = 0;           /* index bits for lencode */\n      this.distbits = 0;          /* index bits for distcode */\n\n      /* dynamic table building */\n      this.ncode = 0;             /* number of code length code lengths */\n      this.nlen = 0;              /* number of length code lengths */\n      this.ndist = 0;             /* number of distance code lengths */\n      this.have = 0;              /* number of code lengths in lens[] */\n      this.next = null;              /* next available space in codes[] */\n\n      this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n      this.work = new utils.Buf16(288); /* work area for code table building */\n\n      /*\n       because we don't have pointers in js, we use lencode and distcode directly\n       as buffers so we don't need codes\n      */\n      //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n      this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n      this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n      this.sane = 0;                   /* if false, allow invalid distance too far */\n      this.back = 0;                   /* bits back of last unprocessed length/lit */\n      this.was = 0;                    /* initial length of match */\n    }\n\n    function inflateResetKeep(strm) {\n      var state;\n\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      strm.total_in = strm.total_out = state.total = 0;\n      strm.msg = ''; /*Z_NULL*/\n      if (state.wrap) {       /* to support ill-conceived Java test suite */\n        strm.adler = state.wrap & 1;\n      }\n      state.mode = HEAD;\n      state.last = 0;\n      state.havedict = 0;\n      state.dmax = 32768;\n      state.head = null/*Z_NULL*/;\n      state.hold = 0;\n      state.bits = 0;\n      //state.lencode = state.distcode = state.next = state.codes;\n      state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n      state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n      state.sane = 1;\n      state.back = -1;\n      //Tracev((stderr, \"inflate: reset\\n\"));\n      return Z_OK;\n    }\n\n    function inflateReset(strm) {\n      var state;\n\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      state.wsize = 0;\n      state.whave = 0;\n      state.wnext = 0;\n      return inflateResetKeep(strm);\n\n    }\n\n    function inflateReset2(strm, windowBits) {\n      var wrap;\n      var state;\n\n      /* get the state */\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n\n      /* extract wrap request from windowBits parameter */\n      if (windowBits < 0) {\n        wrap = 0;\n        windowBits = -windowBits;\n      }\n      else {\n        wrap = (windowBits >> 4) + 1;\n        if (windowBits < 48) {\n          windowBits &= 15;\n        }\n      }\n\n      /* set number of window bits, free window if different */\n      if (windowBits && (windowBits < 8 || windowBits > 15)) {\n        return Z_STREAM_ERROR;\n      }\n      if (state.window !== null && state.wbits !== windowBits) {\n        state.window = null;\n      }\n\n      /* update state and reset the rest of it */\n      state.wrap = wrap;\n      state.wbits = windowBits;\n      return inflateReset(strm);\n    }\n\n    function inflateInit2(strm, windowBits) {\n      var ret;\n      var state;\n\n      if (!strm) { return Z_STREAM_ERROR; }\n      //strm.msg = Z_NULL;                 /* in case we return an error */\n\n      state = new InflateState();\n\n      //if (state === Z_NULL) return Z_MEM_ERROR;\n      //Tracev((stderr, \"inflate: allocated\\n\"));\n      strm.state = state;\n      state.window = null/*Z_NULL*/;\n      ret = inflateReset2(strm, windowBits);\n      if (ret !== Z_OK) {\n        strm.state = null/*Z_NULL*/;\n      }\n      return ret;\n    }\n\n    function inflateInit(strm) {\n      return inflateInit2(strm, DEF_WBITS);\n    }\n\n\n    /*\n     Return state with length and distance decoding tables and index sizes set to\n     fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n     If BUILDFIXED is defined, then instead this routine builds the tables the\n     first time it's called, and returns those tables the first time and\n     thereafter.  This reduces the size of the code by about 2K bytes, in\n     exchange for a little execution time.  However, BUILDFIXED should not be\n     used for threaded applications, since the rewriting of the tables and virgin\n     may not be thread-safe.\n     */\n    var virgin = true;\n\n    var lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n    function fixedtables(state) {\n      /* build fixed huffman tables if first call (may not be thread safe) */\n      if (virgin) {\n        var sym;\n\n        lenfix = new utils.Buf32(512);\n        distfix = new utils.Buf32(32);\n\n        /* literal/length table */\n        sym = 0;\n        while (sym < 144) { state.lens[sym++] = 8; }\n        while (sym < 256) { state.lens[sym++] = 9; }\n        while (sym < 280) { state.lens[sym++] = 7; }\n        while (sym < 288) { state.lens[sym++] = 8; }\n\n        inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n        /* distance table */\n        sym = 0;\n        while (sym < 32) { state.lens[sym++] = 5; }\n\n        inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n        /* do this just once */\n        virgin = false;\n      }\n\n      state.lencode = lenfix;\n      state.lenbits = 9;\n      state.distcode = distfix;\n      state.distbits = 5;\n    }\n\n\n    /*\n     Update the window with the last wsize (normally 32K) bytes written before\n     returning.  If window does not exist yet, create it.  This is only called\n     when a window is already in use, or when output has been written during this\n     inflate call, but the end of the deflate stream has not been reached yet.\n     It is also called to create a window for dictionary data when a dictionary\n     is loaded.\n\n     Providing output buffers larger than 32K to inflate() should provide a speed\n     advantage, since only the last 32K of output is copied to the sliding window\n     upon return from inflate(), and since all distances after the first 32K of\n     output will fall in the output data, making match copies simpler and faster.\n     The advantage may be dependent on the size of the processor's data caches.\n     */\n    function updatewindow(strm, src, end, copy) {\n      var dist;\n      var state = strm.state;\n\n      /* if it hasn't been done already, allocate space for the window */\n      if (state.window === null) {\n        state.wsize = 1 << state.wbits;\n        state.wnext = 0;\n        state.whave = 0;\n\n        state.window = new utils.Buf8(state.wsize);\n      }\n\n      /* copy state->wsize or less output bytes into the circular window */\n      if (copy >= state.wsize) {\n        utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n        state.wnext = 0;\n        state.whave = state.wsize;\n      }\n      else {\n        dist = state.wsize - state.wnext;\n        if (dist > copy) {\n          dist = copy;\n        }\n        //zmemcpy(state->window + state->wnext, end - copy, dist);\n        utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n        copy -= dist;\n        if (copy) {\n          //zmemcpy(state->window, end - copy, copy);\n          utils.arraySet(state.window, src, end - copy, copy, 0);\n          state.wnext = copy;\n          state.whave = state.wsize;\n        }\n        else {\n          state.wnext += dist;\n          if (state.wnext === state.wsize) { state.wnext = 0; }\n          if (state.whave < state.wsize) { state.whave += dist; }\n        }\n      }\n      return 0;\n    }\n\n    function inflate(strm, flush) {\n      var state;\n      var input, output;          // input/output buffers\n      var next;                   /* next input INDEX */\n      var put;                    /* next output INDEX */\n      var have, left;             /* available input and output */\n      var hold;                   /* bit buffer */\n      var bits;                   /* bits in bit buffer */\n      var _in, _out;              /* save starting available input and output */\n      var copy;                   /* number of stored or match bytes to copy */\n      var from;                   /* where to copy match bytes from */\n      var from_source;\n      var here = 0;               /* current decoding table entry */\n      var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n      //var last;                   /* parent table entry */\n      var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n      var len;                    /* length to copy for repeats, bits to drop */\n      var ret;                    /* return code */\n      var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */\n      var opts;\n\n      var n; // temporary var for NEED_BITS\n\n      var order = /* permutation of code lengths */\n        [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n      if (!strm || !strm.state || !strm.output ||\n          (!strm.input && strm.avail_in !== 0)) {\n        return Z_STREAM_ERROR;\n      }\n\n      state = strm.state;\n      if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n      //--- LOAD() ---\n      put = strm.next_out;\n      output = strm.output;\n      left = strm.avail_out;\n      next = strm.next_in;\n      input = strm.input;\n      have = strm.avail_in;\n      hold = state.hold;\n      bits = state.bits;\n      //---\n\n      _in = have;\n      _out = left;\n      ret = Z_OK;\n\n      inf_leave: // goto emulation\n      for (;;) {\n        switch (state.mode) {\n          case HEAD:\n            if (state.wrap === 0) {\n              state.mode = TYPEDO;\n              break;\n            }\n            //=== NEEDBITS(16);\n            while (bits < 16) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n              state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n              //=== CRC2(state.check, hold);\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              state.check = crc32(state.check, hbuf, 2, 0);\n              //===//\n\n              //=== INITBITS();\n              hold = 0;\n              bits = 0;\n              //===//\n              state.mode = FLAGS;\n              break;\n            }\n            state.flags = 0;           /* expect zlib header */\n            if (state.head) {\n              state.head.done = false;\n            }\n            if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n              (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n              strm.msg = 'incorrect header check';\n              state.mode = BAD;\n              break;\n            }\n            if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n              strm.msg = 'unknown compression method';\n              state.mode = BAD;\n              break;\n            }\n            //--- DROPBITS(4) ---//\n            hold >>>= 4;\n            bits -= 4;\n            //---//\n            len = (hold & 0x0f)/*BITS(4)*/ + 8;\n            if (state.wbits === 0) {\n              state.wbits = len;\n            }\n            else if (len > state.wbits) {\n              strm.msg = 'invalid window size';\n              state.mode = BAD;\n              break;\n            }\n            state.dmax = 1 << len;\n            //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n            strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n            state.mode = hold & 0x200 ? DICTID : TYPE;\n            //=== INITBITS();\n            hold = 0;\n            bits = 0;\n            //===//\n            break;\n          case FLAGS:\n            //=== NEEDBITS(16); */\n            while (bits < 16) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            state.flags = hold;\n            if ((state.flags & 0xff) !== Z_DEFLATED) {\n              strm.msg = 'unknown compression method';\n              state.mode = BAD;\n              break;\n            }\n            if (state.flags & 0xe000) {\n              strm.msg = 'unknown header flags set';\n              state.mode = BAD;\n              break;\n            }\n            if (state.head) {\n              state.head.text = ((hold >> 8) & 1);\n            }\n            if (state.flags & 0x0200) {\n              //=== CRC2(state.check, hold);\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              state.check = crc32(state.check, hbuf, 2, 0);\n              //===//\n            }\n            //=== INITBITS();\n            hold = 0;\n            bits = 0;\n            //===//\n            state.mode = TIME;\n            /* falls through */\n          case TIME:\n            //=== NEEDBITS(32); */\n            while (bits < 32) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            if (state.head) {\n              state.head.time = hold;\n            }\n            if (state.flags & 0x0200) {\n              //=== CRC4(state.check, hold)\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              hbuf[2] = (hold >>> 16) & 0xff;\n              hbuf[3] = (hold >>> 24) & 0xff;\n              state.check = crc32(state.check, hbuf, 4, 0);\n              //===\n            }\n            //=== INITBITS();\n            hold = 0;\n            bits = 0;\n            //===//\n            state.mode = OS;\n            /* falls through */\n          case OS:\n            //=== NEEDBITS(16); */\n            while (bits < 16) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            if (state.head) {\n              state.head.xflags = (hold & 0xff);\n              state.head.os = (hold >> 8);\n            }\n            if (state.flags & 0x0200) {\n              //=== CRC2(state.check, hold);\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              state.check = crc32(state.check, hbuf, 2, 0);\n              //===//\n            }\n            //=== INITBITS();\n            hold = 0;\n            bits = 0;\n            //===//\n            state.mode = EXLEN;\n            /* falls through */\n          case EXLEN:\n            if (state.flags & 0x0400) {\n              //=== NEEDBITS(16); */\n              while (bits < 16) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              state.length = hold;\n              if (state.head) {\n                state.head.extra_len = hold;\n              }\n              if (state.flags & 0x0200) {\n                //=== CRC2(state.check, hold);\n                hbuf[0] = hold & 0xff;\n                hbuf[1] = (hold >>> 8) & 0xff;\n                state.check = crc32(state.check, hbuf, 2, 0);\n                //===//\n              }\n              //=== INITBITS();\n              hold = 0;\n              bits = 0;\n              //===//\n            }\n            else if (state.head) {\n              state.head.extra = null/*Z_NULL*/;\n            }\n            state.mode = EXTRA;\n            /* falls through */\n          case EXTRA:\n            if (state.flags & 0x0400) {\n              copy = state.length;\n              if (copy > have) { copy = have; }\n              if (copy) {\n                if (state.head) {\n                  len = state.head.extra_len - state.length;\n                  if (!state.head.extra) {\n                    // Use untyped array for more convenient processing later\n                    state.head.extra = new Array(state.head.extra_len);\n                  }\n                  utils.arraySet(\n                    state.head.extra,\n                    input,\n                    next,\n                    // extra field is limited to 65536 bytes\n                    // - no need for additional size check\n                    copy,\n                    /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                    len\n                  );\n                  //zmemcpy(state.head.extra + len, next,\n                  //        len + copy > state.head.extra_max ?\n                  //        state.head.extra_max - len : copy);\n                }\n                if (state.flags & 0x0200) {\n                  state.check = crc32(state.check, input, copy, next);\n                }\n                have -= copy;\n                next += copy;\n                state.length -= copy;\n              }\n              if (state.length) { break inf_leave; }\n            }\n            state.length = 0;\n            state.mode = NAME;\n            /* falls through */\n          case NAME:\n            if (state.flags & 0x0800) {\n              if (have === 0) { break inf_leave; }\n              copy = 0;\n              do {\n                // TODO: 2 or 1 bytes?\n                len = input[next + copy++];\n                /* use constant limit because in js we should not preallocate memory */\n                if (state.head && len &&\n                    (state.length < 65536 /*state.head.name_max*/)) {\n                  state.head.name += String.fromCharCode(len);\n                }\n              } while (len && copy < have);\n\n              if (state.flags & 0x0200) {\n                state.check = crc32(state.check, input, copy, next);\n              }\n              have -= copy;\n              next += copy;\n              if (len) { break inf_leave; }\n            }\n            else if (state.head) {\n              state.head.name = null;\n            }\n            state.length = 0;\n            state.mode = COMMENT;\n            /* falls through */\n          case COMMENT:\n            if (state.flags & 0x1000) {\n              if (have === 0) { break inf_leave; }\n              copy = 0;\n              do {\n                len = input[next + copy++];\n                /* use constant limit because in js we should not preallocate memory */\n                if (state.head && len &&\n                    (state.length < 65536 /*state.head.comm_max*/)) {\n                  state.head.comment += String.fromCharCode(len);\n                }\n              } while (len && copy < have);\n              if (state.flags & 0x0200) {\n                state.check = crc32(state.check, input, copy, next);\n              }\n              have -= copy;\n              next += copy;\n              if (len) { break inf_leave; }\n            }\n            else if (state.head) {\n              state.head.comment = null;\n            }\n            state.mode = HCRC;\n            /* falls through */\n          case HCRC:\n            if (state.flags & 0x0200) {\n              //=== NEEDBITS(16); */\n              while (bits < 16) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              if (hold !== (state.check & 0xffff)) {\n                strm.msg = 'header crc mismatch';\n                state.mode = BAD;\n                break;\n              }\n              //=== INITBITS();\n              hold = 0;\n              bits = 0;\n              //===//\n            }\n            if (state.head) {\n              state.head.hcrc = ((state.flags >> 9) & 1);\n              state.head.done = true;\n            }\n            strm.adler = state.check = 0;\n            state.mode = TYPE;\n            break;\n          case DICTID:\n            //=== NEEDBITS(32); */\n            while (bits < 32) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            strm.adler = state.check = zswap32(hold);\n            //=== INITBITS();\n            hold = 0;\n            bits = 0;\n            //===//\n            state.mode = DICT;\n            /* falls through */\n          case DICT:\n            if (state.havedict === 0) {\n              //--- RESTORE() ---\n              strm.next_out = put;\n              strm.avail_out = left;\n              strm.next_in = next;\n              strm.avail_in = have;\n              state.hold = hold;\n              state.bits = bits;\n              //---\n              return Z_NEED_DICT;\n            }\n            strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n            state.mode = TYPE;\n            /* falls through */\n          case TYPE:\n            if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n            /* falls through */\n          case TYPEDO:\n            if (state.last) {\n              //--- BYTEBITS() ---//\n              hold >>>= bits & 7;\n              bits -= bits & 7;\n              //---//\n              state.mode = CHECK;\n              break;\n            }\n            //=== NEEDBITS(3); */\n            while (bits < 3) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            state.last = (hold & 0x01)/*BITS(1)*/;\n            //--- DROPBITS(1) ---//\n            hold >>>= 1;\n            bits -= 1;\n            //---//\n\n            switch ((hold & 0x03)/*BITS(2)*/) {\n              case 0:                             /* stored block */\n                //Tracev((stderr, \"inflate:     stored block%s\\n\",\n                //        state.last ? \" (last)\" : \"\"));\n                state.mode = STORED;\n                break;\n              case 1:                             /* fixed block */\n                fixedtables(state);\n                //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n                //        state.last ? \" (last)\" : \"\"));\n                state.mode = LEN_;             /* decode codes */\n                if (flush === Z_TREES) {\n                  //--- DROPBITS(2) ---//\n                  hold >>>= 2;\n                  bits -= 2;\n                  //---//\n                  break inf_leave;\n                }\n                break;\n              case 2:                             /* dynamic block */\n                //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n                //        state.last ? \" (last)\" : \"\"));\n                state.mode = TABLE;\n                break;\n              case 3:\n                strm.msg = 'invalid block type';\n                state.mode = BAD;\n            }\n            //--- DROPBITS(2) ---//\n            hold >>>= 2;\n            bits -= 2;\n            //---//\n            break;\n          case STORED:\n            //--- BYTEBITS() ---// /* go to byte boundary */\n            hold >>>= bits & 7;\n            bits -= bits & 7;\n            //---//\n            //=== NEEDBITS(32); */\n            while (bits < 32) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n              strm.msg = 'invalid stored block lengths';\n              state.mode = BAD;\n              break;\n            }\n            state.length = hold & 0xffff;\n            //Tracev((stderr, \"inflate:       stored length %u\\n\",\n            //        state.length));\n            //=== INITBITS();\n            hold = 0;\n            bits = 0;\n            //===//\n            state.mode = COPY_;\n            if (flush === Z_TREES) { break inf_leave; }\n            /* falls through */\n          case COPY_:\n            state.mode = COPY;\n            /* falls through */\n          case COPY:\n            copy = state.length;\n            if (copy) {\n              if (copy > have) { copy = have; }\n              if (copy > left) { copy = left; }\n              if (copy === 0) { break inf_leave; }\n              //--- zmemcpy(put, next, copy); ---\n              utils.arraySet(output, input, next, copy, put);\n              //---//\n              have -= copy;\n              next += copy;\n              left -= copy;\n              put += copy;\n              state.length -= copy;\n              break;\n            }\n            //Tracev((stderr, \"inflate:       stored end\\n\"));\n            state.mode = TYPE;\n            break;\n          case TABLE:\n            //=== NEEDBITS(14); */\n            while (bits < 14) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n            //--- DROPBITS(5) ---//\n            hold >>>= 5;\n            bits -= 5;\n            //---//\n            state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n            //--- DROPBITS(5) ---//\n            hold >>>= 5;\n            bits -= 5;\n            //---//\n            state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n            //--- DROPBITS(4) ---//\n            hold >>>= 4;\n            bits -= 4;\n            //---//\n    //#ifndef PKZIP_BUG_WORKAROUND\n            if (state.nlen > 286 || state.ndist > 30) {\n              strm.msg = 'too many length or distance symbols';\n              state.mode = BAD;\n              break;\n            }\n    //#endif\n            //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n            state.have = 0;\n            state.mode = LENLENS;\n            /* falls through */\n          case LENLENS:\n            while (state.have < state.ncode) {\n              //=== NEEDBITS(3);\n              while (bits < 3) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            while (state.have < 19) {\n              state.lens[order[state.have++]] = 0;\n            }\n            // We have separate tables & no pointers. 2 commented lines below not needed.\n            //state.next = state.codes;\n            //state.lencode = state.next;\n            // Switch to use dynamic table\n            state.lencode = state.lendyn;\n            state.lenbits = 7;\n\n            opts = { bits: state.lenbits };\n            ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n            state.lenbits = opts.bits;\n\n            if (ret) {\n              strm.msg = 'invalid code lengths set';\n              state.mode = BAD;\n              break;\n            }\n            //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n            state.have = 0;\n            state.mode = CODELENS;\n            /* falls through */\n          case CODELENS:\n            while (state.have < state.nlen + state.ndist) {\n              for (;;) {\n                here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n                here_bits = here >>> 24;\n                here_op = (here >>> 16) & 0xff;\n                here_val = here & 0xffff;\n\n                if ((here_bits) <= bits) { break; }\n                //--- PULLBYTE() ---//\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n                //---//\n              }\n              if (here_val < 16) {\n                //--- DROPBITS(here.bits) ---//\n                hold >>>= here_bits;\n                bits -= here_bits;\n                //---//\n                state.lens[state.have++] = here_val;\n              }\n              else {\n                if (here_val === 16) {\n                  //=== NEEDBITS(here.bits + 2);\n                  n = here_bits + 2;\n                  while (bits < n) {\n                    if (have === 0) { break inf_leave; }\n                    have--;\n                    hold += input[next++] << bits;\n                    bits += 8;\n                  }\n                  //===//\n                  //--- DROPBITS(here.bits) ---//\n                  hold >>>= here_bits;\n                  bits -= here_bits;\n                  //---//\n                  if (state.have === 0) {\n                    strm.msg = 'invalid bit length repeat';\n                    state.mode = BAD;\n                    break;\n                  }\n                  len = state.lens[state.have - 1];\n                  copy = 3 + (hold & 0x03);//BITS(2);\n                  //--- DROPBITS(2) ---//\n                  hold >>>= 2;\n                  bits -= 2;\n                  //---//\n                }\n                else if (here_val === 17) {\n                  //=== NEEDBITS(here.bits + 3);\n                  n = here_bits + 3;\n                  while (bits < n) {\n                    if (have === 0) { break inf_leave; }\n                    have--;\n                    hold += input[next++] << bits;\n                    bits += 8;\n                  }\n                  //===//\n                  //--- DROPBITS(here.bits) ---//\n                  hold >>>= here_bits;\n                  bits -= here_bits;\n                  //---//\n                  len = 0;\n                  copy = 3 + (hold & 0x07);//BITS(3);\n                  //--- DROPBITS(3) ---//\n                  hold >>>= 3;\n                  bits -= 3;\n                  //---//\n                }\n                else {\n                  //=== NEEDBITS(here.bits + 7);\n                  n = here_bits + 7;\n                  while (bits < n) {\n                    if (have === 0) { break inf_leave; }\n                    have--;\n                    hold += input[next++] << bits;\n                    bits += 8;\n                  }\n                  //===//\n                  //--- DROPBITS(here.bits) ---//\n                  hold >>>= here_bits;\n                  bits -= here_bits;\n                  //---//\n                  len = 0;\n                  copy = 11 + (hold & 0x7f);//BITS(7);\n                  //--- DROPBITS(7) ---//\n                  hold >>>= 7;\n                  bits -= 7;\n                  //---//\n                }\n                if (state.have + copy > state.nlen + state.ndist) {\n                  strm.msg = 'invalid bit length repeat';\n                  state.mode = BAD;\n                  break;\n                }\n                while (copy--) {\n                  state.lens[state.have++] = len;\n                }\n              }\n            }\n\n            /* handle error breaks in while */\n            if (state.mode === BAD) { break; }\n\n            /* check for end-of-block code (better have one) */\n            if (state.lens[256] === 0) {\n              strm.msg = 'invalid code -- missing end-of-block';\n              state.mode = BAD;\n              break;\n            }\n\n            /* build code tables -- note: do not change the lenbits or distbits\n               values here (9 and 6) without reading the comments in inftrees.h\n               concerning the ENOUGH constants, which depend on those values */\n            state.lenbits = 9;\n\n            opts = { bits: state.lenbits };\n            ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n            // We have separate tables & no pointers. 2 commented lines below not needed.\n            // state.next_index = opts.table_index;\n            state.lenbits = opts.bits;\n            // state.lencode = state.next;\n\n            if (ret) {\n              strm.msg = 'invalid literal/lengths set';\n              state.mode = BAD;\n              break;\n            }\n\n            state.distbits = 6;\n            //state.distcode.copy(state.codes);\n            // Switch to use dynamic table\n            state.distcode = state.distdyn;\n            opts = { bits: state.distbits };\n            ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n            // We have separate tables & no pointers. 2 commented lines below not needed.\n            // state.next_index = opts.table_index;\n            state.distbits = opts.bits;\n            // state.distcode = state.next;\n\n            if (ret) {\n              strm.msg = 'invalid distances set';\n              state.mode = BAD;\n              break;\n            }\n            //Tracev((stderr, 'inflate:       codes ok\\n'));\n            state.mode = LEN_;\n            if (flush === Z_TREES) { break inf_leave; }\n            /* falls through */\n          case LEN_:\n            state.mode = LEN;\n            /* falls through */\n          case LEN:\n            if (have >= 6 && left >= 258) {\n              //--- RESTORE() ---\n              strm.next_out = put;\n              strm.avail_out = left;\n              strm.next_in = next;\n              strm.avail_in = have;\n              state.hold = hold;\n              state.bits = bits;\n              //---\n              inflate_fast(strm, _out);\n              //--- LOAD() ---\n              put = strm.next_out;\n              output = strm.output;\n              left = strm.avail_out;\n              next = strm.next_in;\n              input = strm.input;\n              have = strm.avail_in;\n              hold = state.hold;\n              bits = state.bits;\n              //---\n\n              if (state.mode === TYPE) {\n                state.back = -1;\n              }\n              break;\n            }\n            state.back = 0;\n            for (;;) {\n              here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n              here_bits = here >>> 24;\n              here_op = (here >>> 16) & 0xff;\n              here_val = here & 0xffff;\n\n              if (here_bits <= bits) { break; }\n              //--- PULLBYTE() ---//\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n              //---//\n            }\n            if (here_op && (here_op & 0xf0) === 0) {\n              last_bits = here_bits;\n              last_op = here_op;\n              last_val = here_val;\n              for (;;) {\n                here = state.lencode[last_val +\n                        ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n                here_bits = here >>> 24;\n                here_op = (here >>> 16) & 0xff;\n                here_val = here & 0xffff;\n\n                if ((last_bits + here_bits) <= bits) { break; }\n                //--- PULLBYTE() ---//\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n                //---//\n              }\n              //--- DROPBITS(last.bits) ---//\n              hold >>>= last_bits;\n              bits -= last_bits;\n              //---//\n              state.back += last_bits;\n            }\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.back += here_bits;\n            state.length = here_val;\n            if (here_op === 0) {\n              //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n              //        \"inflate:         literal '%c'\\n\" :\n              //        \"inflate:         literal 0x%02x\\n\", here.val));\n              state.mode = LIT;\n              break;\n            }\n            if (here_op & 32) {\n              //Tracevv((stderr, \"inflate:         end of block\\n\"));\n              state.back = -1;\n              state.mode = TYPE;\n              break;\n            }\n            if (here_op & 64) {\n              strm.msg = 'invalid literal/length code';\n              state.mode = BAD;\n              break;\n            }\n            state.extra = here_op & 15;\n            state.mode = LENEXT;\n            /* falls through */\n          case LENEXT:\n            if (state.extra) {\n              //=== NEEDBITS(state.extra);\n              n = state.extra;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n              //--- DROPBITS(state.extra) ---//\n              hold >>>= state.extra;\n              bits -= state.extra;\n              //---//\n              state.back += state.extra;\n            }\n            //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n            state.was = state.length;\n            state.mode = DIST;\n            /* falls through */\n          case DIST:\n            for (;;) {\n              here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n              here_bits = here >>> 24;\n              here_op = (here >>> 16) & 0xff;\n              here_val = here & 0xffff;\n\n              if ((here_bits) <= bits) { break; }\n              //--- PULLBYTE() ---//\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n              //---//\n            }\n            if ((here_op & 0xf0) === 0) {\n              last_bits = here_bits;\n              last_op = here_op;\n              last_val = here_val;\n              for (;;) {\n                here = state.distcode[last_val +\n                        ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n                here_bits = here >>> 24;\n                here_op = (here >>> 16) & 0xff;\n                here_val = here & 0xffff;\n\n                if ((last_bits + here_bits) <= bits) { break; }\n                //--- PULLBYTE() ---//\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n                //---//\n              }\n              //--- DROPBITS(last.bits) ---//\n              hold >>>= last_bits;\n              bits -= last_bits;\n              //---//\n              state.back += last_bits;\n            }\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.back += here_bits;\n            if (here_op & 64) {\n              strm.msg = 'invalid distance code';\n              state.mode = BAD;\n              break;\n            }\n            state.offset = here_val;\n            state.extra = (here_op) & 15;\n            state.mode = DISTEXT;\n            /* falls through */\n          case DISTEXT:\n            if (state.extra) {\n              //=== NEEDBITS(state.extra);\n              n = state.extra;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n              //--- DROPBITS(state.extra) ---//\n              hold >>>= state.extra;\n              bits -= state.extra;\n              //---//\n              state.back += state.extra;\n            }\n    //#ifdef INFLATE_STRICT\n            if (state.offset > state.dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n    //#endif\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n            state.mode = MATCH;\n            /* falls through */\n          case MATCH:\n            if (left === 0) { break inf_leave; }\n            copy = _out - left;\n            if (state.offset > copy) {         /* copy from window */\n              copy = state.offset - copy;\n              if (copy > state.whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break;\n                }\n    // (!) This block is disabled in zlib defaults,\n    // don't enable it for binary compatibility\n    //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n    //          Trace((stderr, \"inflate.c too far\\n\"));\n    //          copy -= state.whave;\n    //          if (copy > state.length) { copy = state.length; }\n    //          if (copy > left) { copy = left; }\n    //          left -= copy;\n    //          state.length -= copy;\n    //          do {\n    //            output[put++] = 0;\n    //          } while (--copy);\n    //          if (state.length === 0) { state.mode = LEN; }\n    //          break;\n    //#endif\n              }\n              if (copy > state.wnext) {\n                copy -= state.wnext;\n                from = state.wsize - copy;\n              }\n              else {\n                from = state.wnext - copy;\n              }\n              if (copy > state.length) { copy = state.length; }\n              from_source = state.window;\n            }\n            else {                              /* copy from output */\n              from_source = output;\n              from = put - state.offset;\n              copy = state.length;\n            }\n            if (copy > left) { copy = left; }\n            left -= copy;\n            state.length -= copy;\n            do {\n              output[put++] = from_source[from++];\n            } while (--copy);\n            if (state.length === 0) { state.mode = LEN; }\n            break;\n          case LIT:\n            if (left === 0) { break inf_leave; }\n            output[put++] = state.length;\n            left--;\n            state.mode = LEN;\n            break;\n          case CHECK:\n            if (state.wrap) {\n              //=== NEEDBITS(32);\n              while (bits < 32) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                // Use '|' instead of '+' to make sure that result is signed\n                hold |= input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              _out -= left;\n              strm.total_out += _out;\n              state.total += _out;\n              if (_out) {\n                strm.adler = state.check =\n                    /*UPDATE(state.check, put - _out, _out);*/\n                    (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n              }\n              _out = left;\n              // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n              if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n                strm.msg = 'incorrect data check';\n                state.mode = BAD;\n                break;\n              }\n              //=== INITBITS();\n              hold = 0;\n              bits = 0;\n              //===//\n              //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n            }\n            state.mode = LENGTH;\n            /* falls through */\n          case LENGTH:\n            if (state.wrap && state.flags) {\n              //=== NEEDBITS(32);\n              while (bits < 32) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              if (hold !== (state.total & 0xffffffff)) {\n                strm.msg = 'incorrect length check';\n                state.mode = BAD;\n                break;\n              }\n              //=== INITBITS();\n              hold = 0;\n              bits = 0;\n              //===//\n              //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n            }\n            state.mode = DONE;\n            /* falls through */\n          case DONE:\n            ret = Z_STREAM_END;\n            break inf_leave;\n          case BAD:\n            ret = Z_DATA_ERROR;\n            break inf_leave;\n          case MEM:\n            return Z_MEM_ERROR;\n          case SYNC:\n            /* falls through */\n          default:\n            return Z_STREAM_ERROR;\n        }\n      }\n\n      // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n      /*\n         Return from inflate(), updating the total counts and the check value.\n         If there was no progress during the inflate() call, return a buffer\n         error.  Call updatewindow() to create and/or update the window state.\n         Note: a memory error from inflate() is non-recoverable.\n       */\n\n      //--- RESTORE() ---\n      strm.next_out = put;\n      strm.avail_out = left;\n      strm.next_in = next;\n      strm.avail_in = have;\n      state.hold = hold;\n      state.bits = bits;\n      //---\n\n      if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                          (state.mode < CHECK || flush !== Z_FINISH))) {\n        if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n          state.mode = MEM;\n          return Z_MEM_ERROR;\n        }\n      }\n      _in -= strm.avail_in;\n      _out -= strm.avail_out;\n      strm.total_in += _in;\n      strm.total_out += _out;\n      state.total += _out;\n      if (state.wrap && _out) {\n        strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n          (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n      }\n      strm.data_type = state.bits + (state.last ? 64 : 0) +\n                        (state.mode === TYPE ? 128 : 0) +\n                        (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n      if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n        ret = Z_BUF_ERROR;\n      }\n      return ret;\n    }\n\n    function inflateEnd(strm) {\n\n      if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n        return Z_STREAM_ERROR;\n      }\n\n      var state = strm.state;\n      if (state.window) {\n        state.window = null;\n      }\n      strm.state = null;\n      return Z_OK;\n    }\n\n    function inflateGetHeader(strm, head) {\n      var state;\n\n      /* check state */\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n      /* save header structure */\n      state.head = head;\n      head.done = false;\n      return Z_OK;\n    }\n\n    function inflateSetDictionary(strm, dictionary) {\n      var dictLength = dictionary.length;\n\n      var state;\n      var dictid;\n      var ret;\n\n      /* check state */\n      if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n      state = strm.state;\n\n      if (state.wrap !== 0 && state.mode !== DICT) {\n        return Z_STREAM_ERROR;\n      }\n\n      /* check for correct dictionary identifier */\n      if (state.mode === DICT) {\n        dictid = 1; /* adler32(0, null, 0)*/\n        /* dictid = adler32(dictid, dictionary, dictLength); */\n        dictid = adler32(dictid, dictionary, dictLength, 0);\n        if (dictid !== state.check) {\n          return Z_DATA_ERROR;\n        }\n      }\n      /* copy dictionary to window using updatewindow(), which will amend the\n       existing dictionary if appropriate */\n      ret = updatewindow(strm, dictionary, dictLength, dictLength);\n      if (ret) {\n        state.mode = MEM;\n        return Z_MEM_ERROR;\n      }\n      state.havedict = 1;\n      // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n      return Z_OK;\n    }\n\n    exports.inflateReset = inflateReset;\n    exports.inflateReset2 = inflateReset2;\n    exports.inflateResetKeep = inflateResetKeep;\n    exports.inflateInit = inflateInit;\n    exports.inflateInit2 = inflateInit2;\n    exports.inflate = inflate;\n    exports.inflateEnd = inflateEnd;\n    exports.inflateGetHeader = inflateGetHeader;\n    exports.inflateSetDictionary = inflateSetDictionary;\n    exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n    /* Not implemented\n    exports.inflateCopy = inflateCopy;\n    exports.inflateGetDictionary = inflateGetDictionary;\n    exports.inflateMark = inflateMark;\n    exports.inflatePrime = inflatePrime;\n    exports.inflateSync = inflateSync;\n    exports.inflateSyncPoint = inflateSyncPoint;\n    exports.inflateUndermine = inflateUndermine;\n    */\n\n    },{\"../utils/common\":50,\"./adler32\":52,\"./crc32\":54,\"./inffast\":57,\"./inftrees\":59}],59:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    var utils = require('../utils/common');\n\n    var MAXBITS = 15;\n    var ENOUGH_LENS = 852;\n    var ENOUGH_DISTS = 592;\n    //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n    var CODES = 0;\n    var LENS = 1;\n    var DISTS = 2;\n\n    var lbase = [ /* Length codes 257..285 base */\n      3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n      35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n    ];\n\n    var lext = [ /* Length codes 257..285 extra */\n      16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n      19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n    ];\n\n    var dbase = [ /* Distance codes 0..29 base */\n      1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n      257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n      8193, 12289, 16385, 24577, 0, 0\n    ];\n\n    var dext = [ /* Distance codes 0..29 extra */\n      16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n      23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n      28, 28, 29, 29, 64, 64\n    ];\n\n    module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n    {\n      var bits = opts.bits;\n          //here = opts.here; /* table entry for duplication */\n\n      var len = 0;               /* a code's length in bits */\n      var sym = 0;               /* index of code symbols */\n      var min = 0, max = 0;          /* minimum and maximum code lengths */\n      var root = 0;              /* number of index bits for root table */\n      var curr = 0;              /* number of index bits for current table */\n      var drop = 0;              /* code bits to drop for sub-table */\n      var left = 0;                   /* number of prefix codes available */\n      var used = 0;              /* code entries in table used */\n      var huff = 0;              /* Huffman code */\n      var incr;              /* for incrementing code, index */\n      var fill;              /* index for replicating entries */\n      var low;               /* low bits for current root entry */\n      var mask;              /* mask for low root bits */\n      var next;             /* next available space in table */\n      var base = null;     /* base value table to use */\n      var base_index = 0;\n    //  var shoextra;    /* extra bits table to use */\n      var end;                    /* use base and extra for symbol > end */\n      var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n      var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n      var extra = null;\n      var extra_index = 0;\n\n      var here_bits, here_op, here_val;\n\n      /*\n       Process a set of code lengths to create a canonical Huffman code.  The\n       code lengths are lens[0..codes-1].  Each length corresponds to the\n       symbols 0..codes-1.  The Huffman code is generated by first sorting the\n       symbols by length from short to long, and retaining the symbol order\n       for codes with equal lengths.  Then the code starts with all zero bits\n       for the first code of the shortest length, and the codes are integer\n       increments for the same length, and zeros are appended as the length\n       increases.  For the deflate format, these bits are stored backwards\n       from their more natural integer increment ordering, and so when the\n       decoding tables are built in the large loop below, the integer codes\n       are incremented backwards.\n\n       This routine assumes, but does not check, that all of the entries in\n       lens[] are in the range 0..MAXBITS.  The caller must assure this.\n       1..MAXBITS is interpreted as that code length.  zero means that that\n       symbol does not occur in this code.\n\n       The codes are sorted by computing a count of codes for each length,\n       creating from that a table of starting indices for each length in the\n       sorted table, and then entering the symbols in order in the sorted\n       table.  The sorted table is work[], with that space being provided by\n       the caller.\n\n       The length counts are used for other purposes as well, i.e. finding\n       the minimum and maximum length codes, determining if there are any\n       codes at all, checking for a valid set of lengths, and looking ahead\n       at length counts to determine sub-table sizes when building the\n       decoding tables.\n       */\n\n      /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n      for (len = 0; len <= MAXBITS; len++) {\n        count[len] = 0;\n      }\n      for (sym = 0; sym < codes; sym++) {\n        count[lens[lens_index + sym]]++;\n      }\n\n      /* bound code lengths, force root to be within code lengths */\n      root = bits;\n      for (max = MAXBITS; max >= 1; max--) {\n        if (count[max] !== 0) { break; }\n      }\n      if (root > max) {\n        root = max;\n      }\n      if (max === 0) {                     /* no symbols to code at all */\n        //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n        //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n        //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n        table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n        //table.op[opts.table_index] = 64;\n        //table.bits[opts.table_index] = 1;\n        //table.val[opts.table_index++] = 0;\n        table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n        opts.bits = 1;\n        return 0;     /* no symbols, but wait for decoding to report error */\n      }\n      for (min = 1; min < max; min++) {\n        if (count[min] !== 0) { break; }\n      }\n      if (root < min) {\n        root = min;\n      }\n\n      /* check for an over-subscribed or incomplete set of lengths */\n      left = 1;\n      for (len = 1; len <= MAXBITS; len++) {\n        left <<= 1;\n        left -= count[len];\n        if (left < 0) {\n          return -1;\n        }        /* over-subscribed */\n      }\n      if (left > 0 && (type === CODES || max !== 1)) {\n        return -1;                      /* incomplete set */\n      }\n\n      /* generate offsets into symbol table for each length for sorting */\n      offs[1] = 0;\n      for (len = 1; len < MAXBITS; len++) {\n        offs[len + 1] = offs[len] + count[len];\n      }\n\n      /* sort symbols by length, by symbol order within each length */\n      for (sym = 0; sym < codes; sym++) {\n        if (lens[lens_index + sym] !== 0) {\n          work[offs[lens[lens_index + sym]]++] = sym;\n        }\n      }\n\n      /*\n       Create and fill in decoding tables.  In this loop, the table being\n       filled is at next and has curr index bits.  The code being used is huff\n       with length len.  That code is converted to an index by dropping drop\n       bits off of the bottom.  For codes where len is less than drop + curr,\n       those top drop + curr - len bits are incremented through all values to\n       fill the table with replicated entries.\n\n       root is the number of index bits for the root table.  When len exceeds\n       root, sub-tables are created pointed to by the root entry with an index\n       of the low root bits of huff.  This is saved in low to check for when a\n       new sub-table should be started.  drop is zero when the root table is\n       being filled, and drop is root when sub-tables are being filled.\n\n       When a new sub-table is needed, it is necessary to look ahead in the\n       code lengths to determine what size sub-table is needed.  The length\n       counts are used for this, and so count[] is decremented as codes are\n       entered in the tables.\n\n       used keeps track of how many table entries have been allocated from the\n       provided *table space.  It is checked for LENS and DIST tables against\n       the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n       the initial root table size constants.  See the comments in inftrees.h\n       for more information.\n\n       sym increments through all symbols, and the loop terminates when\n       all codes of length max, i.e. all codes, have been processed.  This\n       routine permits incomplete codes, so another loop after this one fills\n       in the rest of the decoding tables with invalid code markers.\n       */\n\n      /* set up for code type */\n      // poor man optimization - use if-else instead of switch,\n      // to avoid deopts in old v8\n      if (type === CODES) {\n        base = extra = work;    /* dummy value--not used */\n        end = 19;\n\n      } else if (type === LENS) {\n        base = lbase;\n        base_index -= 257;\n        extra = lext;\n        extra_index -= 257;\n        end = 256;\n\n      } else {                    /* DISTS */\n        base = dbase;\n        extra = dext;\n        end = -1;\n      }\n\n      /* initialize opts for loop */\n      huff = 0;                   /* starting code */\n      sym = 0;                    /* starting code symbol */\n      len = min;                  /* starting code length */\n      next = table_index;              /* current table to fill in */\n      curr = root;                /* current table index bits */\n      drop = 0;                   /* current bits to drop from code for index */\n      low = -1;                   /* trigger new sub-table when len > root */\n      used = 1 << root;          /* use root table entries */\n      mask = used - 1;            /* mask for comparing low */\n\n      /* check available table space */\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* process all codes and make table entries */\n      for (;;) {\n        /* create table entry */\n        here_bits = len - drop;\n        if (work[sym] < end) {\n          here_op = 0;\n          here_val = work[sym];\n        }\n        else if (work[sym] > end) {\n          here_op = extra[extra_index + work[sym]];\n          here_val = base[base_index + work[sym]];\n        }\n        else {\n          here_op = 32 + 64;         /* end of block */\n          here_val = 0;\n        }\n\n        /* replicate for those indices with low len bits equal to huff */\n        incr = 1 << (len - drop);\n        fill = 1 << curr;\n        min = fill;                 /* save offset to next table */\n        do {\n          fill -= incr;\n          table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n        } while (fill !== 0);\n\n        /* backwards increment the len-bit code huff */\n        incr = 1 << (len - 1);\n        while (huff & incr) {\n          incr >>= 1;\n        }\n        if (incr !== 0) {\n          huff &= incr - 1;\n          huff += incr;\n        } else {\n          huff = 0;\n        }\n\n        /* go to next symbol, update count, len */\n        sym++;\n        if (--count[len] === 0) {\n          if (len === max) { break; }\n          len = lens[lens_index + work[sym]];\n        }\n\n        /* create new sub-table if needed */\n        if (len > root && (huff & mask) !== low) {\n          /* if first time, transition to sub-tables */\n          if (drop === 0) {\n            drop = root;\n          }\n\n          /* increment past last table */\n          next += min;            /* here min is 1 << curr */\n\n          /* determine length of next table */\n          curr = len - drop;\n          left = 1 << curr;\n          while (curr + drop < max) {\n            left -= count[curr + drop];\n            if (left <= 0) { break; }\n            curr++;\n            left <<= 1;\n          }\n\n          /* check for enough space */\n          used += 1 << curr;\n          if ((type === LENS && used > ENOUGH_LENS) ||\n            (type === DISTS && used > ENOUGH_DISTS)) {\n            return 1;\n          }\n\n          /* point entry in root table to sub-table */\n          low = huff & mask;\n          /*table.op[low] = curr;\n          table.bits[low] = root;\n          table.val[low] = next - opts.table_index;*/\n          table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n        }\n      }\n\n      /* fill in remaining table entry if code is incomplete (guaranteed to have\n       at most one remaining entry, since if the code is incomplete, the\n       maximum code length that was allowed to get this far is one bit) */\n      if (huff !== 0) {\n        //table.op[next + huff] = 64;            /* invalid code marker */\n        //table.bits[next + huff] = len - drop;\n        //table.val[next + huff] = 0;\n        table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n      }\n\n      /* set return parameters */\n      //opts.table_index += used;\n      opts.bits = root;\n      return 0;\n    };\n\n    },{\"../utils/common\":50}],60:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    module.exports = {\n      2:      'need dictionary',     /* Z_NEED_DICT       2  */\n      1:      'stream end',          /* Z_STREAM_END      1  */\n      0:      '',                    /* Z_OK              0  */\n      '-1':   'file error',          /* Z_ERRNO         (-1) */\n      '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n      '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n      '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n      '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n      '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n    };\n\n    },{}],61:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    /* eslint-disable space-unary-ops */\n\n    var utils = require('../utils/common');\n\n    /* Public constants ==========================================================*/\n    /* ===========================================================================*/\n\n\n    //var Z_FILTERED          = 1;\n    //var Z_HUFFMAN_ONLY      = 2;\n    //var Z_RLE               = 3;\n    var Z_FIXED               = 4;\n    //var Z_DEFAULT_STRATEGY  = 0;\n\n    /* Possible values of the data_type field (though see inflate()) */\n    var Z_BINARY              = 0;\n    var Z_TEXT                = 1;\n    //var Z_ASCII             = 1; // = Z_TEXT\n    var Z_UNKNOWN             = 2;\n\n    /*============================================================================*/\n\n\n    function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n    // From zutil.h\n\n    var STORED_BLOCK = 0;\n    var STATIC_TREES = 1;\n    var DYN_TREES    = 2;\n    /* The three kinds of block type */\n\n    var MIN_MATCH    = 3;\n    var MAX_MATCH    = 258;\n    /* The minimum and maximum match lengths */\n\n    // From deflate.h\n    /* ===========================================================================\n     * Internal compression state.\n     */\n\n    var LENGTH_CODES  = 29;\n    /* number of length codes, not counting the special END_BLOCK code */\n\n    var LITERALS      = 256;\n    /* number of literal bytes 0..255 */\n\n    var L_CODES       = LITERALS + 1 + LENGTH_CODES;\n    /* number of Literal or Length codes, including the END_BLOCK code */\n\n    var D_CODES       = 30;\n    /* number of distance codes */\n\n    var BL_CODES      = 19;\n    /* number of codes used to transfer the bit lengths */\n\n    var HEAP_SIZE     = 2 * L_CODES + 1;\n    /* maximum heap size */\n\n    var MAX_BITS      = 15;\n    /* All codes must not exceed MAX_BITS bits */\n\n    var Buf_size      = 16;\n    /* size of bit buffer in bi_buf */\n\n\n    /* ===========================================================================\n     * Constants\n     */\n\n    var MAX_BL_BITS = 7;\n    /* Bit length codes must not exceed MAX_BL_BITS bits */\n\n    var END_BLOCK   = 256;\n    /* end of block literal code */\n\n    var REP_3_6     = 16;\n    /* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\n    var REPZ_3_10   = 17;\n    /* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\n    var REPZ_11_138 = 18;\n    /* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n    /* eslint-disable comma-spacing,array-bracket-spacing */\n    var extra_lbits =   /* extra bits for each length code */\n      [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\n    var extra_dbits =   /* extra bits for each distance code */\n      [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\n    var extra_blbits =  /* extra bits for each bit length code */\n      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\n    var bl_order =\n      [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n    /* eslint-enable comma-spacing,array-bracket-spacing */\n\n    /* The lengths of the bit length codes are sent in order of decreasing\n     * probability, to avoid transmitting the lengths for unused bit length codes.\n     */\n\n    /* ===========================================================================\n     * Local data. These are initialized only once.\n     */\n\n    // We pre-fill arrays with 0 to avoid uninitialized gaps\n\n    var DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n    // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\n    var static_ltree  = new Array((L_CODES + 2) * 2);\n    zero(static_ltree);\n    /* The static literal tree. Since the bit lengths are imposed, there is no\n     * need for the L_CODES extra codes used during heap construction. However\n     * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n     * below).\n     */\n\n    var static_dtree  = new Array(D_CODES * 2);\n    zero(static_dtree);\n    /* The static distance tree. (Actually a trivial tree since all codes use\n     * 5 bits.)\n     */\n\n    var _dist_code    = new Array(DIST_CODE_LEN);\n    zero(_dist_code);\n    /* Distance codes. The first 256 values correspond to the distances\n     * 3 .. 258, the last 256 values correspond to the top 8 bits of\n     * the 15 bit distances.\n     */\n\n    var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\n    zero(_length_code);\n    /* length code for each normalized match length (0 == MIN_MATCH) */\n\n    var base_length   = new Array(LENGTH_CODES);\n    zero(base_length);\n    /* First normalized length for each code (0 = MIN_MATCH) */\n\n    var base_dist     = new Array(D_CODES);\n    zero(base_dist);\n    /* First normalized distance for each code (0 = distance of 1) */\n\n\n    function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n      this.static_tree  = static_tree;  /* static tree or NULL */\n      this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n      this.extra_base   = extra_base;   /* base index for extra_bits */\n      this.elems        = elems;        /* max number of elements in the tree */\n      this.max_length   = max_length;   /* max bit length for the codes */\n\n      // show if `static_tree` has data or dummy - needed for monomorphic objects\n      this.has_stree    = static_tree && static_tree.length;\n    }\n\n\n    var static_l_desc;\n    var static_d_desc;\n    var static_bl_desc;\n\n\n    function TreeDesc(dyn_tree, stat_desc) {\n      this.dyn_tree = dyn_tree;     /* the dynamic tree */\n      this.max_code = 0;            /* largest code with non zero frequency */\n      this.stat_desc = stat_desc;   /* the corresponding static tree */\n    }\n\n\n\n    function d_code(dist) {\n      return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n    }\n\n\n    /* ===========================================================================\n     * Output a short LSB first on the stream.\n     * IN assertion: there is enough room in pendingBuf.\n     */\n    function put_short(s, w) {\n    //    put_byte(s, (uch)((w) & 0xff));\n    //    put_byte(s, (uch)((ush)(w) >> 8));\n      s.pending_buf[s.pending++] = (w) & 0xff;\n      s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n    }\n\n\n    /* ===========================================================================\n     * Send a value on a given number of bits.\n     * IN assertion: length <= 16 and value fits in length bits.\n     */\n    function send_bits(s, value, length) {\n      if (s.bi_valid > (Buf_size - length)) {\n        s.bi_buf |= (value << s.bi_valid) & 0xffff;\n        put_short(s, s.bi_buf);\n        s.bi_buf = value >> (Buf_size - s.bi_valid);\n        s.bi_valid += length - Buf_size;\n      } else {\n        s.bi_buf |= (value << s.bi_valid) & 0xffff;\n        s.bi_valid += length;\n      }\n    }\n\n\n    function send_code(s, c, tree) {\n      send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n    }\n\n\n    /* ===========================================================================\n     * Reverse the first len bits of a code, using straightforward code (a faster\n     * method would use a table)\n     * IN assertion: 1 <= len <= 15\n     */\n    function bi_reverse(code, len) {\n      var res = 0;\n      do {\n        res |= code & 1;\n        code >>>= 1;\n        res <<= 1;\n      } while (--len > 0);\n      return res >>> 1;\n    }\n\n\n    /* ===========================================================================\n     * Flush the bit buffer, keeping at most 7 bits in it.\n     */\n    function bi_flush(s) {\n      if (s.bi_valid === 16) {\n        put_short(s, s.bi_buf);\n        s.bi_buf = 0;\n        s.bi_valid = 0;\n\n      } else if (s.bi_valid >= 8) {\n        s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n        s.bi_buf >>= 8;\n        s.bi_valid -= 8;\n      }\n    }\n\n\n    /* ===========================================================================\n     * Compute the optimal bit lengths for a tree and update the total bit length\n     * for the current block.\n     * IN assertion: the fields freq and dad are set, heap[heap_max] and\n     *    above are the tree nodes sorted by increasing frequency.\n     * OUT assertions: the field len is set to the optimal bit length, the\n     *     array bl_count contains the frequencies for each bit length.\n     *     The length opt_len is updated; static_len is also updated if stree is\n     *     not null.\n     */\n    function gen_bitlen(s, desc)\n    //    deflate_state *s;\n    //    tree_desc *desc;    /* the tree descriptor */\n    {\n      var tree            = desc.dyn_tree;\n      var max_code        = desc.max_code;\n      var stree           = desc.stat_desc.static_tree;\n      var has_stree       = desc.stat_desc.has_stree;\n      var extra           = desc.stat_desc.extra_bits;\n      var base            = desc.stat_desc.extra_base;\n      var max_length      = desc.stat_desc.max_length;\n      var h;              /* heap index */\n      var n, m;           /* iterate over the tree elements */\n      var bits;           /* bit length */\n      var xbits;          /* extra bits */\n      var f;              /* frequency */\n      var overflow = 0;   /* number of elements with bit length too large */\n\n      for (bits = 0; bits <= MAX_BITS; bits++) {\n        s.bl_count[bits] = 0;\n      }\n\n      /* In a first pass, compute the optimal bit lengths (which may\n       * overflow in the case of the bit length tree).\n       */\n      tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n      for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n        n = s.heap[h];\n        bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n        if (bits > max_length) {\n          bits = max_length;\n          overflow++;\n        }\n        tree[n * 2 + 1]/*.Len*/ = bits;\n        /* We overwrite tree[n].Dad which is no longer needed */\n\n        if (n > max_code) { continue; } /* not a leaf node */\n\n        s.bl_count[bits]++;\n        xbits = 0;\n        if (n >= base) {\n          xbits = extra[n - base];\n        }\n        f = tree[n * 2]/*.Freq*/;\n        s.opt_len += f * (bits + xbits);\n        if (has_stree) {\n          s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n        }\n      }\n      if (overflow === 0) { return; }\n\n      // Trace((stderr,\"\\nbit length overflow\\n\"));\n      /* This happens for example on obj2 and pic of the Calgary corpus */\n\n      /* Find the first bit length which could increase: */\n      do {\n        bits = max_length - 1;\n        while (s.bl_count[bits] === 0) { bits--; }\n        s.bl_count[bits]--;      /* move one leaf down the tree */\n        s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n        s.bl_count[max_length]--;\n        /* The brother of the overflow item also moves one step up,\n         * but this does not affect bl_count[max_length]\n         */\n        overflow -= 2;\n      } while (overflow > 0);\n\n      /* Now recompute all bit lengths, scanning in increasing frequency.\n       * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n       * lengths instead of fixing only the wrong ones. This idea is taken\n       * from 'ar' written by Haruhiko Okumura.)\n       */\n      for (bits = max_length; bits !== 0; bits--) {\n        n = s.bl_count[bits];\n        while (n !== 0) {\n          m = s.heap[--h];\n          if (m > max_code) { continue; }\n          if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n            // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n            s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n            tree[m * 2 + 1]/*.Len*/ = bits;\n          }\n          n--;\n        }\n      }\n    }\n\n\n    /* ===========================================================================\n     * Generate the codes for a given tree and bit counts (which need not be\n     * optimal).\n     * IN assertion: the array bl_count contains the bit length statistics for\n     * the given tree and the field len is set for all tree elements.\n     * OUT assertion: the field code is set for all tree elements of non\n     *     zero code length.\n     */\n    function gen_codes(tree, max_code, bl_count)\n    //    ct_data *tree;             /* the tree to decorate */\n    //    int max_code;              /* largest code with non zero frequency */\n    //    ushf *bl_count;            /* number of codes at each bit length */\n    {\n      var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n      var code = 0;              /* running code value */\n      var bits;                  /* bit index */\n      var n;                     /* code index */\n\n      /* The distribution counts are first used to generate the code values\n       * without bit reversal.\n       */\n      for (bits = 1; bits <= MAX_BITS; bits++) {\n        next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n      }\n      /* Check that the bit counts in bl_count are consistent. The last code\n       * must be all ones.\n       */\n      //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n      //        \"inconsistent bit counts\");\n      //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n      for (n = 0;  n <= max_code; n++) {\n        var len = tree[n * 2 + 1]/*.Len*/;\n        if (len === 0) { continue; }\n        /* Now reverse the bits */\n        tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n        //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n        //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n      }\n    }\n\n\n    /* ===========================================================================\n     * Initialize the various 'constant' tables.\n     */\n    function tr_static_init() {\n      var n;        /* iterates over tree elements */\n      var bits;     /* bit counter */\n      var length;   /* length value */\n      var code;     /* code value */\n      var dist;     /* distance index */\n      var bl_count = new Array(MAX_BITS + 1);\n      /* number of codes at each bit length for an optimal tree */\n\n      // do check in _tr_init()\n      //if (static_init_done) return;\n\n      /* For some embedded targets, global variables are not initialized: */\n    /*#ifdef NO_INIT_GLOBAL_POINTERS\n      static_l_desc.static_tree = static_ltree;\n      static_l_desc.extra_bits = extra_lbits;\n      static_d_desc.static_tree = static_dtree;\n      static_d_desc.extra_bits = extra_dbits;\n      static_bl_desc.extra_bits = extra_blbits;\n    #endif*/\n\n      /* Initialize the mapping length (0..255) -> length code (0..28) */\n      length = 0;\n      for (code = 0; code < LENGTH_CODES - 1; code++) {\n        base_length[code] = length;\n        for (n = 0; n < (1 << extra_lbits[code]); n++) {\n          _length_code[length++] = code;\n        }\n      }\n      //Assert (length == 256, \"tr_static_init: length != 256\");\n      /* Note that the length 255 (match length 258) can be represented\n       * in two different ways: code 284 + 5 bits or code 285, so we\n       * overwrite length_code[255] to use the best encoding:\n       */\n      _length_code[length - 1] = code;\n\n      /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n      dist = 0;\n      for (code = 0; code < 16; code++) {\n        base_dist[code] = dist;\n        for (n = 0; n < (1 << extra_dbits[code]); n++) {\n          _dist_code[dist++] = code;\n        }\n      }\n      //Assert (dist == 256, \"tr_static_init: dist != 256\");\n      dist >>= 7; /* from now on, all distances are divided by 128 */\n      for (; code < D_CODES; code++) {\n        base_dist[code] = dist << 7;\n        for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n          _dist_code[256 + dist++] = code;\n        }\n      }\n      //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n      /* Construct the codes of the static literal tree */\n      for (bits = 0; bits <= MAX_BITS; bits++) {\n        bl_count[bits] = 0;\n      }\n\n      n = 0;\n      while (n <= 143) {\n        static_ltree[n * 2 + 1]/*.Len*/ = 8;\n        n++;\n        bl_count[8]++;\n      }\n      while (n <= 255) {\n        static_ltree[n * 2 + 1]/*.Len*/ = 9;\n        n++;\n        bl_count[9]++;\n      }\n      while (n <= 279) {\n        static_ltree[n * 2 + 1]/*.Len*/ = 7;\n        n++;\n        bl_count[7]++;\n      }\n      while (n <= 287) {\n        static_ltree[n * 2 + 1]/*.Len*/ = 8;\n        n++;\n        bl_count[8]++;\n      }\n      /* Codes 286 and 287 do not exist, but we must include them in the\n       * tree construction to get a canonical Huffman tree (longest code\n       * all ones)\n       */\n      gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n      /* The static distance tree is trivial: */\n      for (n = 0; n < D_CODES; n++) {\n        static_dtree[n * 2 + 1]/*.Len*/ = 5;\n        static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n      }\n\n      // Now data ready and we can init static trees\n      static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n      static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n      static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n      //static_init_done = true;\n    }\n\n\n    /* ===========================================================================\n     * Initialize a new block.\n     */\n    function init_block(s) {\n      var n; /* iterates over tree elements */\n\n      /* Initialize the trees. */\n      for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n      for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n      for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n      s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n      s.opt_len = s.static_len = 0;\n      s.last_lit = s.matches = 0;\n    }\n\n\n    /* ===========================================================================\n     * Flush the bit buffer and align the output on a byte boundary\n     */\n    function bi_windup(s)\n    {\n      if (s.bi_valid > 8) {\n        put_short(s, s.bi_buf);\n      } else if (s.bi_valid > 0) {\n        //put_byte(s, (Byte)s->bi_buf);\n        s.pending_buf[s.pending++] = s.bi_buf;\n      }\n      s.bi_buf = 0;\n      s.bi_valid = 0;\n    }\n\n    /* ===========================================================================\n     * Copy a stored block, storing first the length and its\n     * one's complement if requested.\n     */\n    function copy_block(s, buf, len, header)\n    //DeflateState *s;\n    //charf    *buf;    /* the input data */\n    //unsigned len;     /* its length */\n    //int      header;  /* true if block header must be written */\n    {\n      bi_windup(s);        /* align on byte boundary */\n\n      if (header) {\n        put_short(s, len);\n        put_short(s, ~len);\n      }\n    //  while (len--) {\n    //    put_byte(s, *buf++);\n    //  }\n      utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n      s.pending += len;\n    }\n\n    /* ===========================================================================\n     * Compares to subtrees, using the tree depth as tie breaker when\n     * the subtrees have equal frequency. This minimizes the worst case length.\n     */\n    function smaller(tree, n, m, depth) {\n      var _n2 = n * 2;\n      var _m2 = m * 2;\n      return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n             (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n    }\n\n    /* ===========================================================================\n     * Restore the heap property by moving down the tree starting at node k,\n     * exchanging a node with the smallest of its two sons if necessary, stopping\n     * when the heap property is re-established (each father smaller than its\n     * two sons).\n     */\n    function pqdownheap(s, tree, k)\n    //    deflate_state *s;\n    //    ct_data *tree;  /* the tree to restore */\n    //    int k;               /* node to move down */\n    {\n      var v = s.heap[k];\n      var j = k << 1;  /* left son of k */\n      while (j <= s.heap_len) {\n        /* Set j to the smallest of the two sons: */\n        if (j < s.heap_len &&\n          smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n          j++;\n        }\n        /* Exit if v is smaller than both sons */\n        if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n        /* Exchange v with the smallest son */\n        s.heap[k] = s.heap[j];\n        k = j;\n\n        /* And continue down the tree, setting j to the left son of k */\n        j <<= 1;\n      }\n      s.heap[k] = v;\n    }\n\n\n    // inlined manually\n    // var SMALLEST = 1;\n\n    /* ===========================================================================\n     * Send the block data compressed using the given Huffman trees\n     */\n    function compress_block(s, ltree, dtree)\n    //    deflate_state *s;\n    //    const ct_data *ltree; /* literal tree */\n    //    const ct_data *dtree; /* distance tree */\n    {\n      var dist;           /* distance of matched string */\n      var lc;             /* match length or unmatched char (if dist == 0) */\n      var lx = 0;         /* running index in l_buf */\n      var code;           /* the code to send */\n      var extra;          /* number of extra bits to send */\n\n      if (s.last_lit !== 0) {\n        do {\n          dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n          lc = s.pending_buf[s.l_buf + lx];\n          lx++;\n\n          if (dist === 0) {\n            send_code(s, lc, ltree); /* send a literal byte */\n            //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n          } else {\n            /* Here, lc is the match length - MIN_MATCH */\n            code = _length_code[lc];\n            send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n            extra = extra_lbits[code];\n            if (extra !== 0) {\n              lc -= base_length[code];\n              send_bits(s, lc, extra);       /* send the extra length bits */\n            }\n            dist--; /* dist is now the match distance - 1 */\n            code = d_code(dist);\n            //Assert (code < D_CODES, \"bad d_code\");\n\n            send_code(s, code, dtree);       /* send the distance code */\n            extra = extra_dbits[code];\n            if (extra !== 0) {\n              dist -= base_dist[code];\n              send_bits(s, dist, extra);   /* send the extra distance bits */\n            }\n          } /* literal or match pair ? */\n\n          /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n          //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n          //       \"pendingBuf overflow\");\n\n        } while (lx < s.last_lit);\n      }\n\n      send_code(s, END_BLOCK, ltree);\n    }\n\n\n    /* ===========================================================================\n     * Construct one Huffman tree and assigns the code bit strings and lengths.\n     * Update the total bit length for the current block.\n     * IN assertion: the field freq is set for all tree elements.\n     * OUT assertions: the fields len and code are set to the optimal bit length\n     *     and corresponding code. The length opt_len is updated; static_len is\n     *     also updated if stree is not null. The field max_code is set.\n     */\n    function build_tree(s, desc)\n    //    deflate_state *s;\n    //    tree_desc *desc; /* the tree descriptor */\n    {\n      var tree     = desc.dyn_tree;\n      var stree    = desc.stat_desc.static_tree;\n      var has_stree = desc.stat_desc.has_stree;\n      var elems    = desc.stat_desc.elems;\n      var n, m;          /* iterate over heap elements */\n      var max_code = -1; /* largest code with non zero frequency */\n      var node;          /* new node being created */\n\n      /* Construct the initial heap, with least frequent element in\n       * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n       * heap[0] is not used.\n       */\n      s.heap_len = 0;\n      s.heap_max = HEAP_SIZE;\n\n      for (n = 0; n < elems; n++) {\n        if (tree[n * 2]/*.Freq*/ !== 0) {\n          s.heap[++s.heap_len] = max_code = n;\n          s.depth[n] = 0;\n\n        } else {\n          tree[n * 2 + 1]/*.Len*/ = 0;\n        }\n      }\n\n      /* The pkzip format requires that at least one distance code exists,\n       * and that at least one bit should be sent even if there is only one\n       * possible code. So to avoid special checks later on we force at least\n       * two codes of non zero frequency.\n       */\n      while (s.heap_len < 2) {\n        node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n        tree[node * 2]/*.Freq*/ = 1;\n        s.depth[node] = 0;\n        s.opt_len--;\n\n        if (has_stree) {\n          s.static_len -= stree[node * 2 + 1]/*.Len*/;\n        }\n        /* node is 0 or 1 so it does not have extra bits */\n      }\n      desc.max_code = max_code;\n\n      /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n       * establish sub-heaps of increasing lengths:\n       */\n      for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n      /* Construct the Huffman tree by repeatedly combining the least two\n       * frequent nodes.\n       */\n      node = elems;              /* next internal node of the tree */\n      do {\n        //pqremove(s, tree, n);  /* n = node of least frequency */\n        /*** pqremove ***/\n        n = s.heap[1/*SMALLEST*/];\n        s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n        pqdownheap(s, tree, 1/*SMALLEST*/);\n        /***/\n\n        m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n        s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n        s.heap[--s.heap_max] = m;\n\n        /* Create a new node father of n and m */\n        tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n        s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n        tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n        /* and insert the new node in the heap */\n        s.heap[1/*SMALLEST*/] = node++;\n        pqdownheap(s, tree, 1/*SMALLEST*/);\n\n      } while (s.heap_len >= 2);\n\n      s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n      /* At this point, the fields freq and dad are set. We can now\n       * generate the bit lengths.\n       */\n      gen_bitlen(s, desc);\n\n      /* The field len is now set, we can generate the bit codes */\n      gen_codes(tree, max_code, s.bl_count);\n    }\n\n\n    /* ===========================================================================\n     * Scan a literal or distance tree to determine the frequencies of the codes\n     * in the bit length tree.\n     */\n    function scan_tree(s, tree, max_code)\n    //    deflate_state *s;\n    //    ct_data *tree;   /* the tree to be scanned */\n    //    int max_code;    /* and its largest code of non zero frequency */\n    {\n      var n;                     /* iterates over all tree elements */\n      var prevlen = -1;          /* last emitted length */\n      var curlen;                /* length of current code */\n\n      var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n      var count = 0;             /* repeat count of the current code */\n      var max_count = 7;         /* max repeat count */\n      var min_count = 4;         /* min repeat count */\n\n      if (nextlen === 0) {\n        max_count = 138;\n        min_count = 3;\n      }\n      tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n      for (n = 0; n <= max_code; n++) {\n        curlen = nextlen;\n        nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n        if (++count < max_count && curlen === nextlen) {\n          continue;\n\n        } else if (count < min_count) {\n          s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n        } else if (curlen !== 0) {\n\n          if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n          s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n        } else if (count <= 10) {\n          s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n        } else {\n          s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n        }\n\n        count = 0;\n        prevlen = curlen;\n\n        if (nextlen === 0) {\n          max_count = 138;\n          min_count = 3;\n\n        } else if (curlen === nextlen) {\n          max_count = 6;\n          min_count = 3;\n\n        } else {\n          max_count = 7;\n          min_count = 4;\n        }\n      }\n    }\n\n\n    /* ===========================================================================\n     * Send a literal or distance tree in compressed form, using the codes in\n     * bl_tree.\n     */\n    function send_tree(s, tree, max_code)\n    //    deflate_state *s;\n    //    ct_data *tree; /* the tree to be scanned */\n    //    int max_code;       /* and its largest code of non zero frequency */\n    {\n      var n;                     /* iterates over all tree elements */\n      var prevlen = -1;          /* last emitted length */\n      var curlen;                /* length of current code */\n\n      var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n      var count = 0;             /* repeat count of the current code */\n      var max_count = 7;         /* max repeat count */\n      var min_count = 4;         /* min repeat count */\n\n      /* tree[max_code+1].Len = -1; */  /* guard already set */\n      if (nextlen === 0) {\n        max_count = 138;\n        min_count = 3;\n      }\n\n      for (n = 0; n <= max_code; n++) {\n        curlen = nextlen;\n        nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n        if (++count < max_count && curlen === nextlen) {\n          continue;\n\n        } else if (count < min_count) {\n          do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n        } else if (curlen !== 0) {\n          if (curlen !== prevlen) {\n            send_code(s, curlen, s.bl_tree);\n            count--;\n          }\n          //Assert(count >= 3 && count <= 6, \" 3_6?\");\n          send_code(s, REP_3_6, s.bl_tree);\n          send_bits(s, count - 3, 2);\n\n        } else if (count <= 10) {\n          send_code(s, REPZ_3_10, s.bl_tree);\n          send_bits(s, count - 3, 3);\n\n        } else {\n          send_code(s, REPZ_11_138, s.bl_tree);\n          send_bits(s, count - 11, 7);\n        }\n\n        count = 0;\n        prevlen = curlen;\n        if (nextlen === 0) {\n          max_count = 138;\n          min_count = 3;\n\n        } else if (curlen === nextlen) {\n          max_count = 6;\n          min_count = 3;\n\n        } else {\n          max_count = 7;\n          min_count = 4;\n        }\n      }\n    }\n\n\n    /* ===========================================================================\n     * Construct the Huffman tree for the bit lengths and return the index in\n     * bl_order of the last bit length code to send.\n     */\n    function build_bl_tree(s) {\n      var max_blindex;  /* index of last bit length code of non zero freq */\n\n      /* Determine the bit length frequencies for literal and distance trees */\n      scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n      scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n      /* Build the bit length tree: */\n      build_tree(s, s.bl_desc);\n      /* opt_len now includes the length of the tree representations, except\n       * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n       */\n\n      /* Determine the number of bit length codes to send. The pkzip format\n       * requires that at least 4 bit length codes be sent. (appnote.txt says\n       * 3 but the actual value used is 4.)\n       */\n      for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n        if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n          break;\n        }\n      }\n      /* Update opt_len to include the bit length tree and counts */\n      s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n      //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n      //        s->opt_len, s->static_len));\n\n      return max_blindex;\n    }\n\n\n    /* ===========================================================================\n     * Send the header for a block using dynamic Huffman trees: the counts, the\n     * lengths of the bit length codes, the literal tree and the distance tree.\n     * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n     */\n    function send_all_trees(s, lcodes, dcodes, blcodes)\n    //    deflate_state *s;\n    //    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n    {\n      var rank;                    /* index in bl_order */\n\n      //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n      //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n      //        \"too many codes\");\n      //Tracev((stderr, \"\\nbl counts: \"));\n      send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n      send_bits(s, dcodes - 1,   5);\n      send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n      for (rank = 0; rank < blcodes; rank++) {\n        //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n        send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n      }\n      //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n      send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n      //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n      send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n      //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n    }\n\n\n    /* ===========================================================================\n     * Check if the data type is TEXT or BINARY, using the following algorithm:\n     * - TEXT if the two conditions below are satisfied:\n     *    a) There are no non-portable control characters belonging to the\n     *       \"black list\" (0..6, 14..25, 28..31).\n     *    b) There is at least one printable character belonging to the\n     *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n     * - BINARY otherwise.\n     * - The following partially-portable control characters form a\n     *   \"gray list\" that is ignored in this detection algorithm:\n     *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n     * IN assertion: the fields Freq of dyn_ltree are set.\n     */\n    function detect_data_type(s) {\n      /* black_mask is the bit mask of black-listed bytes\n       * set bits 0..6, 14..25, and 28..31\n       * 0xf3ffc07f = binary 11110011111111111100000001111111\n       */\n      var black_mask = 0xf3ffc07f;\n      var n;\n\n      /* Check for non-textual (\"black-listed\") bytes. */\n      for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n        if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n          return Z_BINARY;\n        }\n      }\n\n      /* Check for textual (\"white-listed\") bytes. */\n      if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n          s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n        return Z_TEXT;\n      }\n      for (n = 32; n < LITERALS; n++) {\n        if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n          return Z_TEXT;\n        }\n      }\n\n      /* There are no \"black-listed\" or \"white-listed\" bytes:\n       * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n       */\n      return Z_BINARY;\n    }\n\n\n    var static_init_done = false;\n\n    /* ===========================================================================\n     * Initialize the tree data structures for a new zlib stream.\n     */\n    function _tr_init(s)\n    {\n\n      if (!static_init_done) {\n        tr_static_init();\n        static_init_done = true;\n      }\n\n      s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n      s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n      s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n      s.bi_buf = 0;\n      s.bi_valid = 0;\n\n      /* Initialize the first block of the first file: */\n      init_block(s);\n    }\n\n\n    /* ===========================================================================\n     * Send a stored block\n     */\n    function _tr_stored_block(s, buf, stored_len, last)\n    //DeflateState *s;\n    //charf *buf;       /* input block */\n    //ulg stored_len;   /* length of input block */\n    //int last;         /* one if this is the last block for a file */\n    {\n      send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n      copy_block(s, buf, stored_len, true); /* with header */\n    }\n\n\n    /* ===========================================================================\n     * Send one empty static block to give enough lookahead for inflate.\n     * This takes 10 bits, of which 7 may remain in the bit buffer.\n     */\n    function _tr_align(s) {\n      send_bits(s, STATIC_TREES << 1, 3);\n      send_code(s, END_BLOCK, static_ltree);\n      bi_flush(s);\n    }\n\n\n    /* ===========================================================================\n     * Determine the best encoding for the current block: dynamic trees, static\n     * trees or store, and output the encoded block to the zip file.\n     */\n    function _tr_flush_block(s, buf, stored_len, last)\n    //DeflateState *s;\n    //charf *buf;       /* input block, or NULL if too old */\n    //ulg stored_len;   /* length of input block */\n    //int last;         /* one if this is the last block for a file */\n    {\n      var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n      var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n      /* Build the Huffman trees unless a stored block is forced */\n      if (s.level > 0) {\n\n        /* Check if the file is binary or text */\n        if (s.strm.data_type === Z_UNKNOWN) {\n          s.strm.data_type = detect_data_type(s);\n        }\n\n        /* Construct the literal and distance trees */\n        build_tree(s, s.l_desc);\n        // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n        //        s->static_len));\n\n        build_tree(s, s.d_desc);\n        // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n        //        s->static_len));\n        /* At this point, opt_len and static_len are the total bit lengths of\n         * the compressed block data, excluding the tree representations.\n         */\n\n        /* Build the bit length tree for the above two trees, and get the index\n         * in bl_order of the last bit length code to send.\n         */\n        max_blindex = build_bl_tree(s);\n\n        /* Determine the best encoding. Compute the block lengths in bytes. */\n        opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n        static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n        // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n        //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n        //        s->last_lit));\n\n        if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n      } else {\n        // Assert(buf != (char*)0, \"lost buf\");\n        opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n      }\n\n      if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n        /* 4: two words for the lengths */\n\n        /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n         * Otherwise we can't have processed more than WSIZE input bytes since\n         * the last block flush, because compression would have been\n         * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n         * transform a block into a stored block.\n         */\n        _tr_stored_block(s, buf, stored_len, last);\n\n      } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n        send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n        compress_block(s, static_ltree, static_dtree);\n\n      } else {\n        send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n        send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n        compress_block(s, s.dyn_ltree, s.dyn_dtree);\n      }\n      // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n      /* The above check is made mod 2^32, for files larger than 512 MB\n       * and uLong implemented on 32 bits.\n       */\n      init_block(s);\n\n      if (last) {\n        bi_windup(s);\n      }\n      // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n      //       s->compressed_len-7*last));\n    }\n\n    /* ===========================================================================\n     * Save the match info and tally the frequency counts. Return true if\n     * the current block must be flushed.\n     */\n    function _tr_tally(s, dist, lc)\n    //    deflate_state *s;\n    //    unsigned dist;  /* distance of matched string */\n    //    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n    {\n      //var out_length, in_length, dcode;\n\n      s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n      s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n      s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n      s.last_lit++;\n\n      if (dist === 0) {\n        /* lc is the unmatched char */\n        s.dyn_ltree[lc * 2]/*.Freq*/++;\n      } else {\n        s.matches++;\n        /* Here, lc is the match length - MIN_MATCH */\n        dist--;             /* dist = match distance - 1 */\n        //Assert((ush)dist < (ush)MAX_DIST(s) &&\n        //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n        //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n        s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n        s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n      }\n\n    // (!) This block is disabled in zlib defaults,\n    // don't enable it for binary compatibility\n\n    //#ifdef TRUNCATE_BLOCK\n    //  /* Try to guess if it is profitable to stop the current block here */\n    //  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n    //    /* Compute an upper bound for the compressed length */\n    //    out_length = s.last_lit*8;\n    //    in_length = s.strstart - s.block_start;\n    //\n    //    for (dcode = 0; dcode < D_CODES; dcode++) {\n    //      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n    //    }\n    //    out_length >>>= 3;\n    //    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n    //    //       s->last_lit, in_length, out_length,\n    //    //       100L - out_length*100L/in_length));\n    //    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n    //      return true;\n    //    }\n    //  }\n    //#endif\n\n      return (s.last_lit === s.lit_bufsize - 1);\n      /* We avoid equality with lit_bufsize because of wraparound at 64K\n       * on 16 bit machines and because stored blocks are restricted to\n       * 64K-1 bytes.\n       */\n    }\n\n    exports._tr_init  = _tr_init;\n    exports._tr_stored_block = _tr_stored_block;\n    exports._tr_flush_block  = _tr_flush_block;\n    exports._tr_tally = _tr_tally;\n    exports._tr_align = _tr_align;\n\n    },{\"../utils/common\":50}],62:[function(require,module,exports){\n    'use strict';\n\n    // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n    // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n    //\n    // This software is provided 'as-is', without any express or implied\n    // warranty. In no event will the authors be held liable for any damages\n    // arising from the use of this software.\n    //\n    // Permission is granted to anyone to use this software for any purpose,\n    // including commercial applications, and to alter it and redistribute it\n    // freely, subject to the following restrictions:\n    //\n    // 1. The origin of this software must not be misrepresented; you must not\n    //   claim that you wrote the original software. If you use this software\n    //   in a product, an acknowledgment in the product documentation would be\n    //   appreciated but is not required.\n    // 2. Altered source versions must be plainly marked as such, and must not be\n    //   misrepresented as being the original software.\n    // 3. This notice may not be removed or altered from any source distribution.\n\n    function ZStream() {\n      /* next input byte */\n      this.input = null; // JS specific, because we have no pointers\n      this.next_in = 0;\n      /* number of bytes available at input */\n      this.avail_in = 0;\n      /* total number of input bytes read so far */\n      this.total_in = 0;\n      /* next output byte should be put there */\n      this.output = null; // JS specific, because we have no pointers\n      this.next_out = 0;\n      /* remaining free space at output */\n      this.avail_out = 0;\n      /* total number of bytes output so far */\n      this.total_out = 0;\n      /* last error message, NULL if no error */\n      this.msg = ''/*Z_NULL*/;\n      /* not visible by applications */\n      this.state = null;\n      /* best guess about the data type: binary or text */\n      this.data_type = 2/*Z_UNKNOWN*/;\n      /* adler32 value of the uncompressed data */\n      this.adler = 0;\n    }\n\n    module.exports = ZStream;\n\n    },{}],63:[function(require,module,exports){\n    (function (process){\n    'use strict';\n\n    if (typeof process === 'undefined' ||\n        !process.version ||\n        process.version.indexOf('v0.') === 0 ||\n        process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n      module.exports = { nextTick: nextTick };\n    } else {\n      module.exports = process\n    }\n\n    function nextTick(fn, arg1, arg2, arg3) {\n      if (typeof fn !== 'function') {\n        throw new TypeError('\"callback\" argument must be a function');\n      }\n      var len = arguments.length;\n      var args, i;\n      switch (len) {\n      case 0:\n      case 1:\n        return process.nextTick(fn);\n      case 2:\n        return process.nextTick(function afterTickOne() {\n          fn.call(null, arg1);\n        });\n      case 3:\n        return process.nextTick(function afterTickTwo() {\n          fn.call(null, arg1, arg2);\n        });\n      case 4:\n        return process.nextTick(function afterTickThree() {\n          fn.call(null, arg1, arg2, arg3);\n        });\n      default:\n        args = new Array(len - 1);\n        i = 0;\n        while (i < args.length) {\n          args[i++] = arguments[i];\n        }\n        return process.nextTick(function afterTick() {\n          fn.apply(null, args);\n        });\n      }\n    }\n\n\n    }).call(this,require('_process'))\n    },{\"_process\":64}],64:[function(require,module,exports){\n    // shim for using process in browser\n    var 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\n    var cachedSetTimeout;\n    var cachedClearTimeout;\n\n    function defaultSetTimout() {\n        throw new Error('setTimeout has not been defined');\n    }\n    function 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    } ())\n    function 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    }\n    function 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    }\n    var queue = [];\n    var draining = false;\n    var currentQueue;\n    var queueIndex = -1;\n\n    function 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\n    function 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\n    process.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\n    function Item(fun, array) {\n        this.fun = fun;\n        this.array = array;\n    }\n    Item.prototype.run = function () {\n        this.fun.apply(null, this.array);\n    };\n    process.title = 'browser';\n    process.browser = true;\n    process.env = {};\n    process.argv = [];\n    process.version = ''; // empty string to avoid regexp issues\n    process.versions = {};\n\n    function noop() {}\n\n    process.on = noop;\n    process.addListener = noop;\n    process.once = noop;\n    process.off = noop;\n    process.removeListener = noop;\n    process.removeAllListeners = noop;\n    process.emit = noop;\n    process.prependListener = noop;\n    process.prependOnceListener = noop;\n\n    process.listeners = function (name) { return [] }\n\n    process.binding = function (name) {\n        throw new Error('process.binding is not supported');\n    };\n\n    process.cwd = function () { return '/' };\n    process.chdir = function (dir) {\n        throw new Error('process.chdir is not supported');\n    };\n    process.umask = function() { return 0; };\n\n    },{}],65:[function(require,module,exports){\n    module.exports = require('./lib/_stream_duplex.js');\n\n    },{\"./lib/_stream_duplex.js\":66}],66:[function(require,module,exports){\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    // 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\n    'use strict';\n\n    /*<replacement>*/\n\n    var pna = require('process-nextick-args');\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var objectKeys = Object.keys || function (obj) {\n      var keys = [];\n      for (var key in obj) {\n        keys.push(key);\n      }return keys;\n    };\n    /*</replacement>*/\n\n    module.exports = Duplex;\n\n    /*<replacement>*/\n    var util = Object.create(require('core-util-is'));\n    util.inherits = require('inherits');\n    /*</replacement>*/\n\n    var Readable = require('./_stream_readable');\n    var Writable = require('./_stream_writable');\n\n    util.inherits(Duplex, Readable);\n\n    {\n      // avoid scope creep, the keys array can then be collected\n      var keys = objectKeys(Writable.prototype);\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\n    function Duplex(options) {\n      if (!(this instanceof Duplex)) return new Duplex(options);\n\n      Readable.call(this, options);\n      Writable.call(this, options);\n\n      if (options && options.readable === false) this.readable = false;\n\n      if (options && options.writable === false) this.writable = false;\n\n      this.allowHalfOpen = true;\n      if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n      this.once('end', onend);\n    }\n\n    Object.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 () {\n        return this._writableState.highWaterMark;\n      }\n    });\n\n    // the no-half-open enforcer\n    function onend() {\n      // if we allow half-open state, or if the writable side ended,\n      // then we're ok.\n      if (this.allowHalfOpen || this._writableState.ended) return;\n\n      // no more data can be written.\n      // But allow more writes to happen in this tick.\n      pna.nextTick(onEndNT, this);\n    }\n\n    function onEndNT(self) {\n      self.end();\n    }\n\n    Object.defineProperty(Duplex.prototype, 'destroyed', {\n      get: function () {\n        if (this._readableState === undefined || this._writableState === undefined) {\n          return false;\n        }\n        return this._readableState.destroyed && this._writableState.destroyed;\n      },\n      set: function (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        }\n\n        // backward compatibility, the user is explicitly\n        // managing destroyed\n        this._readableState.destroyed = value;\n        this._writableState.destroyed = value;\n      }\n    });\n\n    Duplex.prototype._destroy = function (err, cb) {\n      this.push(null);\n      this.end();\n\n      pna.nextTick(cb, err);\n    };\n    },{\"./_stream_readable\":68,\"./_stream_writable\":70,\"core-util-is\":4,\"inherits\":8,\"process-nextick-args\":63}],67:[function(require,module,exports){\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    // a passthrough stream.\n    // basically just the most minimal sort of Transform stream.\n    // Every written chunk gets output as-is.\n\n    'use strict';\n\n    module.exports = PassThrough;\n\n    var Transform = require('./_stream_transform');\n\n    /*<replacement>*/\n    var util = Object.create(require('core-util-is'));\n    util.inherits = require('inherits');\n    /*</replacement>*/\n\n    util.inherits(PassThrough, Transform);\n\n    function PassThrough(options) {\n      if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n      Transform.call(this, options);\n    }\n\n    PassThrough.prototype._transform = function (chunk, encoding, cb) {\n      cb(null, chunk);\n    };\n    },{\"./_stream_transform\":69,\"core-util-is\":4,\"inherits\":8}],68:[function(require,module,exports){\n    (function (process,global){\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    /*<replacement>*/\n\n    var pna = require('process-nextick-args');\n    /*</replacement>*/\n\n    module.exports = Readable;\n\n    /*<replacement>*/\n    var isArray = require('isarray');\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var Duplex;\n    /*</replacement>*/\n\n    Readable.ReadableState = ReadableState;\n\n    /*<replacement>*/\n    var EE = require('events').EventEmitter;\n\n    var EElistenerCount = function (emitter, type) {\n      return emitter.listeners(type).length;\n    };\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var Stream = require('./internal/streams/stream');\n    /*</replacement>*/\n\n    /*<replacement>*/\n\n    var Buffer = require('safe-buffer').Buffer;\n    var OurUint8Array = global.Uint8Array || function () {};\n    function _uint8ArrayToBuffer(chunk) {\n      return Buffer.from(chunk);\n    }\n    function _isUint8Array(obj) {\n      return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n    }\n\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var util = Object.create(require('core-util-is'));\n    util.inherits = require('inherits');\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var debugUtil = require('util');\n    var debug = void 0;\n    if (debugUtil && debugUtil.debuglog) {\n      debug = debugUtil.debuglog('stream');\n    } else {\n      debug = function () {};\n    }\n    /*</replacement>*/\n\n    var BufferList = require('./internal/streams/BufferList');\n    var destroyImpl = require('./internal/streams/destroy');\n    var StringDecoder;\n\n    util.inherits(Readable, Stream);\n\n    var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\n    function 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);\n\n      // 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      if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n    }\n\n    function ReadableState(options, stream) {\n      Duplex = Duplex || require('./_stream_duplex');\n\n      options = options || {};\n\n      // 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      var isDuplex = stream instanceof Duplex;\n\n      // object stream flag. Used to make read(n) ignore n and to\n      // make all the buffer merging and length checks go away\n      this.objectMode = !!options.objectMode;\n\n      if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n      // 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      var hwm = options.highWaterMark;\n      var readableHwm = options.readableHighWaterMark;\n      var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n      if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n      // cast to ints.\n      this.highWaterMark = Math.floor(this.highWaterMark);\n\n      // 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      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;\n\n      // 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      this.sync = true;\n\n      // whenever we return null, then we set a flag to say\n      // that we're awaiting a 'readable' event emission.\n      this.needReadable = false;\n      this.emittedReadable = false;\n      this.readableListening = false;\n      this.resumeScheduled = false;\n\n      // has it been destroyed\n      this.destroyed = false;\n\n      // 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      this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n      // the number of writers that are awaiting a drain event in .pipe()s\n      this.awaitDrain = 0;\n\n      // if true, a maybeReadMore has been scheduled\n      this.readingMore = false;\n\n      this.decoder = null;\n      this.encoding = null;\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\n    function Readable(options) {\n      Duplex = Duplex || require('./_stream_duplex');\n\n      if (!(this instanceof Readable)) return new Readable(options);\n\n      this._readableState = new ReadableState(options, this);\n\n      // legacy\n      this.readable = true;\n\n      if (options) {\n        if (typeof options.read === 'function') this._read = options.read;\n\n        if (typeof options.destroy === 'function') this._destroy = options.destroy;\n      }\n\n      Stream.call(this);\n    }\n\n    Object.defineProperty(Readable.prototype, 'destroyed', {\n      get: function () {\n        if (this._readableState === undefined) {\n          return false;\n        }\n        return this._readableState.destroyed;\n      },\n      set: function (value) {\n        // we ignore the value if the stream\n        // has not been initialized yet\n        if (!this._readableState) {\n          return;\n        }\n\n        // backward compatibility, the user is explicitly\n        // managing destroyed\n        this._readableState.destroyed = value;\n      }\n    });\n\n    Readable.prototype.destroy = destroyImpl.destroy;\n    Readable.prototype._undestroy = destroyImpl.undestroy;\n    Readable.prototype._destroy = function (err, cb) {\n      this.push(null);\n      cb(err);\n    };\n\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    Readable.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          if (encoding !== state.encoding) {\n            chunk = Buffer.from(chunk, encoding);\n            encoding = '';\n          }\n          skipChunkCheck = true;\n        }\n      } else {\n        skipChunkCheck = true;\n      }\n\n      return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n    };\n\n    // Unshift should *always* be something directly out of read()\n    Readable.prototype.unshift = function (chunk) {\n      return readableAddChunk(this, chunk, null, true, false);\n    };\n\n    function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n      var state = stream._readableState;\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        if (er) {\n          stream.emit('error', 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) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n          } else if (state.ended) {\n            stream.emit('error', new Error('stream.push() after EOF'));\n          } else {\n            state.reading = false;\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        }\n      }\n\n      return needMoreData(state);\n    }\n\n    function addChunk(stream, state, chunk, addToFront) {\n      if (state.flowing && state.length === 0 && !state.sync) {\n        stream.emit('data', chunk);\n        stream.read(0);\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\n        if (state.needReadable) emitReadable(stream);\n      }\n      maybeReadMore(stream, state);\n    }\n\n    function chunkInvalid(state, chunk) {\n      var er;\n      if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n        er = new TypeError('Invalid non-string/buffer chunk');\n      }\n      return er;\n    }\n\n    // if it's past the high water mark, we can push in some more.\n    // Also, if we have no data yet, we can stand some\n    // more bytes.  This is to work around cases where hwm=0,\n    // such as the repl.  Also, if the push() triggered a\n    // readable event, and the user called read(largeNumber) such that\n    // needReadable was set, then we ought to push more, so that another\n    // 'readable' event will be triggered.\n    function needMoreData(state) {\n      return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n    }\n\n    Readable.prototype.isPaused = function () {\n      return this._readableState.flowing === false;\n    };\n\n    // backwards compatibility.\n    Readable.prototype.setEncoding = function (enc) {\n      if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n      this._readableState.decoder = new StringDecoder(enc);\n      this._readableState.encoding = enc;\n      return this;\n    };\n\n    // Don't raise the hwm > 8MB\n    var MAX_HWM = 0x800000;\n    function computeNewHighWaterMark(n) {\n      if (n >= MAX_HWM) {\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      return n;\n    }\n\n    // This function is designed to be inlinable, so please take care when making\n    // changes to the function body.\n    function howMuchToRead(n, state) {\n      if (n <= 0 || state.length === 0 && state.ended) return 0;\n      if (state.objectMode) return 1;\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      }\n      // If we're asking for more than the current hwm, then raise the hwm.\n      if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n      if (n <= state.length) return n;\n      // Don't have enough\n      if (!state.ended) {\n        state.needReadable = true;\n        return 0;\n      }\n      return state.length;\n    }\n\n    // you can override either this method, or the async _read(n) below.\n    Readable.prototype.read = function (n) {\n      debug('read', n);\n      n = parseInt(n, 10);\n      var state = this._readableState;\n      var nOrig = n;\n\n      if (n !== 0) state.emittedReadable = false;\n\n      // 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      if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || 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);\n\n      // if we've ended, and we're now clear, then finish it up.\n      if (n === 0 && state.ended) {\n        if (state.length === 0) endReadable(this);\n        return null;\n      }\n\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\n      // if we need a readable event, then we need to do some reading.\n      var doRead = state.needReadable;\n      debug('need readable', doRead);\n\n      // if we currently have less than the highWaterMark, then also read some\n      if (state.length === 0 || state.length - n < state.highWaterMark) {\n        doRead = true;\n        debug('length less than watermark', doRead);\n      }\n\n      // however, if we've ended, then there's no point, and if we're already\n      // reading, then it's unnecessary.\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;\n        // if the length is currently zero, then we *need* a readable event.\n        if (state.length === 0) state.needReadable = true;\n        // call internal read method\n        this._read(state.highWaterMark);\n        state.sync = false;\n        // 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        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 = true;\n        n = 0;\n      } else {\n        state.length -= n;\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;\n\n        // If we tried to read() past the EOF, then emit end on the next tick.\n        if (nOrig !== n && state.ended) endReadable(this);\n      }\n\n      if (ret !== null) this.emit('data', ret);\n\n      return ret;\n    };\n\n    function onEofChunk(stream, state) {\n      if (state.ended) return;\n      if (state.decoder) {\n        var chunk = state.decoder.end();\n        if (chunk && chunk.length) {\n          state.buffer.push(chunk);\n          state.length += state.objectMode ? 1 : chunk.length;\n        }\n      }\n      state.ended = true;\n\n      // emit 'readable' now to make sure it gets picked up.\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    function emitReadable(stream) {\n      var state = stream._readableState;\n      state.needReadable = false;\n      if (!state.emittedReadable) {\n        debug('emitReadable', state.flowing);\n        state.emittedReadable = true;\n        if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n      }\n    }\n\n    function emitReadable_(stream) {\n      debug('emit readable');\n      stream.emit('readable');\n      flow(stream);\n    }\n\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    function maybeReadMore(stream, state) {\n      if (!state.readingMore) {\n        state.readingMore = true;\n        pna.nextTick(maybeReadMore_, stream, state);\n      }\n    }\n\n    function maybeReadMore_(stream, state) {\n      var len = state.length;\n      while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n        debug('maybeReadMore read 0');\n        stream.read(0);\n        if (len === state.length)\n          // didn't get any data, stop spinning.\n          break;else len = state.length;\n      }\n      state.readingMore = false;\n    }\n\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    Readable.prototype._read = function (n) {\n      this.emit('error', new Error('_read() is not implemented'));\n    };\n\n    Readable.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        case 1:\n          state.pipes = [state.pipes, dest];\n          break;\n        default:\n          state.pipes.push(dest);\n          break;\n      }\n      state.pipesCount += 1;\n      debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n      var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n      var endFn = doEnd ? onend : unpipe;\n      if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n      dest.on('unpipe', onunpipe);\n      function onunpipe(readable, unpipeInfo) {\n        debug('onunpipe');\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      }\n\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      var ondrain = pipeOnDrain(src);\n      dest.on('drain', ondrain);\n\n      var cleanedUp = false;\n      function cleanup() {\n        debug('cleanup');\n        // cleanup event handlers once the pipe is broken\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\n        cleanedUp = true;\n\n        // 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        if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n      }\n\n      // If the user pushes more data while we're writing to dest then we'll end up\n      // in ondata again. However, we only want to increase awaitDrain once because\n      // dest will only emit one 'drain' event for the multiple writes.\n      // => Introduce a guard on increasing awaitDrain.\n      var increasedAwaitDrain = false;\n      src.on('data', ondata);\n      function ondata(chunk) {\n        debug('ondata');\n        increasedAwaitDrain = false;\n        var ret = dest.write(chunk);\n        if (false === ret && !increasedAwaitDrain) {\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', src._readableState.awaitDrain);\n            src._readableState.awaitDrain++;\n            increasedAwaitDrain = true;\n          }\n          src.pause();\n        }\n      }\n\n      // if the dest has an error, then stop piping into it.\n      // however, don't suppress the throwing behavior for this.\n      function onerror(er) {\n        debug('onerror', er);\n        unpipe();\n        dest.removeListener('error', onerror);\n        if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n      }\n\n      // Make sure our error handler is attached before userland ones.\n      prependListener(dest, 'error', onerror);\n\n      // Both close and finish should trigger unpipe, but only once.\n      function onclose() {\n        dest.removeListener('finish', onfinish);\n        unpipe();\n      }\n      dest.once('close', onclose);\n      function onfinish() {\n        debug('onfinish');\n        dest.removeListener('close', onclose);\n        unpipe();\n      }\n      dest.once('finish', onfinish);\n\n      function unpipe() {\n        debug('unpipe');\n        src.unpipe(dest);\n      }\n\n      // tell the dest that it's being piped to\n      dest.emit('pipe', src);\n\n      // start the flow if it hasn't been started already.\n      if (!state.flowing) {\n        debug('pipe resume');\n        src.resume();\n      }\n\n      return dest;\n    };\n\n    function pipeOnDrain(src) {\n      return function () {\n        var state = src._readableState;\n        debug('pipeOnDrain', state.awaitDrain);\n        if (state.awaitDrain) state.awaitDrain--;\n        if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n          state.flowing = true;\n          flow(src);\n        }\n      };\n    }\n\n    Readable.prototype.unpipe = function (dest) {\n      var state = this._readableState;\n      var unpipeInfo = { hasUnpiped: false };\n\n      // if we're not piping anywhere, then do nothing.\n      if (state.pipesCount === 0) return this;\n\n      // just one destination.  most common case.\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\n        if (!dest) dest = state.pipes;\n\n        // got a match.\n        state.pipes = null;\n        state.pipesCount = 0;\n        state.flowing = false;\n        if (dest) dest.emit('unpipe', this, unpipeInfo);\n        return this;\n      }\n\n      // slow case. multiple pipe destinations.\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, unpipeInfo);\n        }return this;\n      }\n\n      // try to find the right one.\n      var index = indexOf(state.pipes, dest);\n      if (index === -1) return this;\n\n      state.pipes.splice(index, 1);\n      state.pipesCount -= 1;\n      if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n      dest.emit('unpipe', this, unpipeInfo);\n\n      return this;\n    };\n\n    // set up data events if they are asked for\n    // Ensure readable listeners eventually get something\n    Readable.prototype.on = function (ev, fn) {\n      var res = Stream.prototype.on.call(this, ev, fn);\n\n      if (ev === 'data') {\n        // Start flowing on next tick if stream isn't explicitly paused\n        if (this._readableState.flowing !== false) this.resume();\n      } else if (ev === 'readable') {\n        var state = this._readableState;\n        if (!state.endEmitted && !state.readableListening) {\n          state.readableListening = state.needReadable = true;\n          state.emittedReadable = false;\n          if (!state.reading) {\n            pna.nextTick(nReadingNextTick, this);\n          } else if (state.length) {\n            emitReadable(this);\n          }\n        }\n      }\n\n      return res;\n    };\n    Readable.prototype.addListener = Readable.prototype.on;\n\n    function nReadingNextTick(self) {\n      debug('readable nexttick read 0');\n      self.read(0);\n    }\n\n    // pause() and resume() are remnants of the legacy readable stream API\n    // If the user uses them, then switch into old mode.\n    Readable.prototype.resume = function () {\n      var state = this._readableState;\n      if (!state.flowing) {\n        debug('resume');\n        state.flowing = true;\n        resume(this, state);\n      }\n      return this;\n    };\n\n    function resume(stream, state) {\n      if (!state.resumeScheduled) {\n        state.resumeScheduled = true;\n        pna.nextTick(resume_, stream, state);\n      }\n    }\n\n    function resume_(stream, state) {\n      if (!state.reading) {\n        debug('resume read 0');\n        stream.read(0);\n      }\n\n      state.resumeScheduled = false;\n      state.awaitDrain = 0;\n      stream.emit('resume');\n      flow(stream);\n      if (state.flowing && !state.reading) stream.read(0);\n    }\n\n    Readable.prototype.pause = function () {\n      debug('call pause flowing=%j', this._readableState.flowing);\n      if (false !== this._readableState.flowing) {\n        debug('pause');\n        this._readableState.flowing = false;\n        this.emit('pause');\n      }\n      return this;\n    };\n\n    function flow(stream) {\n      var state = stream._readableState;\n      debug('flow', state.flowing);\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    Readable.prototype.wrap = function (stream) {\n      var _this = this;\n\n      var state = this._readableState;\n      var paused = false;\n\n      stream.on('end', function () {\n        debug('wrapped end');\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\n      stream.on('data', function (chunk) {\n        debug('wrapped data');\n        if (state.decoder) chunk = state.decoder.write(chunk);\n\n        // don't skip over falsy values in objectMode\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        if (!ret) {\n          paused = true;\n          stream.pause();\n        }\n      });\n\n      // proxy all the other methods.\n      // important when wrapping filters and duplexes.\n      for (var i in stream) {\n        if (this[i] === undefined && typeof stream[i] === 'function') {\n          this[i] = function (method) {\n            return function () {\n              return stream[method].apply(stream, arguments);\n            };\n          }(i);\n        }\n      }\n\n      // proxy certain important events.\n      for (var n = 0; n < kProxyEvents.length; n++) {\n        stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n      }\n\n      // when we try to consume some more bytes, simply unpause the\n      // underlying stream.\n      this._read = function (n) {\n        debug('wrapped _read', n);\n        if (paused) {\n          paused = false;\n          stream.resume();\n        }\n      };\n\n      return this;\n    };\n\n    Object.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 () {\n        return this._readableState.highWaterMark;\n      }\n    });\n\n    // exposed for testing purposes only.\n    Readable._fromList = fromList;\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    function fromList(n, state) {\n      // nothing buffered\n      if (state.length === 0) return null;\n\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.head.data;else ret = state.buffer.concat(state.length);\n        state.buffer.clear();\n      } else {\n        // read part of list\n        ret = fromListPartial(n, state.buffer, state.decoder);\n      }\n\n      return ret;\n    }\n\n    // Extracts only enough buffered data to satisfy the amount requested.\n    // This function is designed to be inlinable, so please take care when making\n    // changes to the function body.\n    function fromListPartial(n, list, hasStrings) {\n      var ret;\n      if (n < list.head.data.length) {\n        // slice is the same for buffers and strings\n        ret = list.head.data.slice(0, n);\n        list.head.data = list.head.data.slice(n);\n      } else if (n === list.head.data.length) {\n        // first chunk is a perfect match\n        ret = list.shift();\n      } else {\n        // result spans more than one buffer\n        ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n      }\n      return ret;\n    }\n\n    // Copies a specified amount of characters from the list of buffered data\n    // chunks.\n    // This function is designed to be inlinable, so please take care when making\n    // changes to the function body.\n    function copyFromBufferString(n, list) {\n      var p = list.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\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        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) list.head = p.next;else list.head = list.tail = null;\n          } else {\n            list.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      list.length -= c;\n      return ret;\n    }\n\n    // Copies a specified amount of bytes from the list of buffered data chunks.\n    // This function is designed to be inlinable, so please take care when making\n    // changes to the function body.\n    function copyFromBuffer(n, list) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = list.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\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        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) list.head = p.next;else list.head = list.tail = null;\n          } else {\n            list.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      list.length -= c;\n      return ret;\n    }\n\n    function endReadable(stream) {\n      var state = stream._readableState;\n\n      // If we get here before consuming all the bytes, then that is a\n      // bug in node.  Should never happen.\n      if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n      if (!state.endEmitted) {\n        state.ended = true;\n        pna.nextTick(endReadableNT, state, stream);\n      }\n    }\n\n    function endReadableNT(state, stream) {\n      // Check that we didn't get one last unshift.\n      if (!state.endEmitted && state.length === 0) {\n        state.endEmitted = true;\n        stream.readable = false;\n        stream.emit('end');\n      }\n    }\n\n    function indexOf(xs, x) {\n      for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) return i;\n      }\n      return -1;\n    }\n    }).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n    },{\"./_stream_duplex\":66,\"./internal/streams/BufferList\":71,\"./internal/streams/destroy\":72,\"./internal/streams/stream\":73,\"_process\":64,\"core-util-is\":4,\"events\":5,\"inherits\":8,\"isarray\":10,\"process-nextick-args\":63,\"safe-buffer\":78,\"string_decoder/\":81,\"util\":2}],69:[function(require,module,exports){\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    // 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\n    'use strict';\n\n    module.exports = Transform;\n\n    var Duplex = require('./_stream_duplex');\n\n    /*<replacement>*/\n    var util = Object.create(require('core-util-is'));\n    util.inherits = require('inherits');\n    /*</replacement>*/\n\n    util.inherits(Transform, Duplex);\n\n    function afterTransform(er, data) {\n      var ts = this._transformState;\n      ts.transforming = false;\n\n      var cb = ts.writecb;\n\n      if (!cb) {\n        return this.emit('error', new Error('write callback called multiple times'));\n      }\n\n      ts.writechunk = null;\n      ts.writecb = null;\n\n      if (data != null) // single equals check for both `null` and `undefined`\n        this.push(data);\n\n      cb(er);\n\n      var rs = this._readableState;\n      rs.reading = false;\n      if (rs.needReadable || rs.length < rs.highWaterMark) {\n        this._read(rs.highWaterMark);\n      }\n    }\n\n    function Transform(options) {\n      if (!(this instanceof Transform)) return new Transform(options);\n\n      Duplex.call(this, options);\n\n      this._transformState = {\n        afterTransform: afterTransform.bind(this),\n        needTransform: false,\n        transforming: false,\n        writecb: null,\n        writechunk: null,\n        writeencoding: null\n      };\n\n      // start out asking for a readable event once data is transformed.\n      this._readableState.needReadable = true;\n\n      // 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      this._readableState.sync = false;\n\n      if (options) {\n        if (typeof options.transform === 'function') this._transform = options.transform;\n\n        if (typeof options.flush === 'function') this._flush = options.flush;\n      }\n\n      // When the writable side finishes, then flush out anything remaining.\n      this.on('prefinish', prefinish);\n    }\n\n    function prefinish() {\n      var _this = this;\n\n      if (typeof this._flush === 'function') {\n        this._flush(function (er, data) {\n          done(_this, er, data);\n        });\n      } else {\n        done(this, null, null);\n      }\n    }\n\n    Transform.prototype.push = function (chunk, encoding) {\n      this._transformState.needTransform = false;\n      return Duplex.prototype.push.call(this, chunk, encoding);\n    };\n\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    Transform.prototype._transform = function (chunk, encoding, cb) {\n      throw new Error('_transform() is not implemented');\n    };\n\n    Transform.prototype._write = function (chunk, encoding, cb) {\n      var ts = this._transformState;\n      ts.writecb = cb;\n      ts.writechunk = chunk;\n      ts.writeencoding = encoding;\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    };\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    Transform.prototype._read = function (n) {\n      var ts = this._transformState;\n\n      if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n        ts.transforming = true;\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\n    Transform.prototype._destroy = function (err, cb) {\n      var _this2 = this;\n\n      Duplex.prototype._destroy.call(this, err, function (err2) {\n        cb(err2);\n        _this2.emit('close');\n      });\n    };\n\n    function done(stream, er, data) {\n      if (er) return stream.emit('error', er);\n\n      if (data != null) // single equals check for both `null` and `undefined`\n        stream.push(data);\n\n      // if there's nothing in the write buffer, then that means\n      // that nothing more will ever be provided\n      if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n      if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n      return stream.push(null);\n    }\n    },{\"./_stream_duplex\":66,\"core-util-is\":4,\"inherits\":8}],70:[function(require,module,exports){\n    (function (process,global,setImmediate){\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    // 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\n    'use strict';\n\n    /*<replacement>*/\n\n    var pna = require('process-nextick-args');\n    /*</replacement>*/\n\n    module.exports = Writable;\n\n    /* <replacement> */\n    function WriteReq(chunk, encoding, cb) {\n      this.chunk = chunk;\n      this.encoding = encoding;\n      this.callback = cb;\n      this.next = null;\n    }\n\n    // It seems a linked list but it is not\n    // there will be only 2 of these for each stream\n    function CorkedRequest(state) {\n      var _this = this;\n\n      this.next = null;\n      this.entry = null;\n      this.finish = function () {\n        onCorkedFinish(_this, state);\n      };\n    }\n    /* </replacement> */\n\n    /*<replacement>*/\n    var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var Duplex;\n    /*</replacement>*/\n\n    Writable.WritableState = WritableState;\n\n    /*<replacement>*/\n    var util = Object.create(require('core-util-is'));\n    util.inherits = require('inherits');\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var internalUtil = {\n      deprecate: require('util-deprecate')\n    };\n    /*</replacement>*/\n\n    /*<replacement>*/\n    var Stream = require('./internal/streams/stream');\n    /*</replacement>*/\n\n    /*<replacement>*/\n\n    var Buffer = require('safe-buffer').Buffer;\n    var OurUint8Array = global.Uint8Array || function () {};\n    function _uint8ArrayToBuffer(chunk) {\n      return Buffer.from(chunk);\n    }\n    function _isUint8Array(obj) {\n      return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n    }\n\n    /*</replacement>*/\n\n    var destroyImpl = require('./internal/streams/destroy');\n\n    util.inherits(Writable, Stream);\n\n    function nop() {}\n\n    function WritableState(options, stream) {\n      Duplex = Duplex || require('./_stream_duplex');\n\n      options = options || {};\n\n      // 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      var isDuplex = stream instanceof Duplex;\n\n      // object stream flag to indicate whether or not this stream\n      // contains buffers or objects.\n      this.objectMode = !!options.objectMode;\n\n      if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n      // 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      var hwm = options.highWaterMark;\n      var writableHwm = options.writableHighWaterMark;\n      var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n      if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n      // cast to ints.\n      this.highWaterMark = Math.floor(this.highWaterMark);\n\n      // if _final has been called\n      this.finalCalled = false;\n\n      // drain event flag.\n      this.needDrain = false;\n      // at the start of calling end()\n      this.ending = false;\n      // when end() has been called, and returned\n      this.ended = false;\n      // when 'finish' is emitted\n      this.finished = false;\n\n      // has it been destroyed\n      this.destroyed = false;\n\n      // 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      var noDecode = options.decodeStrings === false;\n      this.decodeStrings = !noDecode;\n\n      // 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      this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n      // 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      this.length = 0;\n\n      // a flag to see when we're in the middle of a write.\n      this.writing = false;\n\n      // when true all writes will be buffered until .uncork() call\n      this.corked = 0;\n\n      // 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      this.sync = true;\n\n      // 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      this.bufferProcessing = false;\n\n      // the callback that's passed to _write(chunk,cb)\n      this.onwrite = function (er) {\n        onwrite(stream, er);\n      };\n\n      // the callback that the user supplies to write(chunk,encoding,cb)\n      this.writecb = null;\n\n      // the amount that is being written when _write is called.\n      this.writelen = 0;\n\n      this.bufferedRequest = null;\n      this.lastBufferedRequest = null;\n\n      // number of pending user-supplied write callbacks\n      // this must be 0 before 'finish' can be emitted\n      this.pendingcb = 0;\n\n      // emit prefinish if the only thing we're waiting for is _write cbs\n      // This is relevant for synchronous Transform streams\n      this.prefinished = false;\n\n      // True if the error was already emitted and should not be thrown again\n      this.errorEmitted = false;\n\n      // count buffered requests\n      this.bufferedRequestCount = 0;\n\n      // allocate the first CorkedRequest, there is always\n      // one allocated and free to use, and we maintain at most two\n      this.corkedRequestsFree = new CorkedRequest(this);\n    }\n\n    WritableState.prototype.getBuffer = function getBuffer() {\n      var current = this.bufferedRequest;\n      var out = [];\n      while (current) {\n        out.push(current);\n        current = current.next;\n      }\n      return out;\n    };\n\n    (function () {\n      try {\n        Object.defineProperty(WritableState.prototype, 'buffer', {\n          get: internalUtil.deprecate(function () {\n            return this.getBuffer();\n          }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n        });\n      } catch (_) {}\n    })();\n\n    // Test _writableState for inheritance to account for Duplex streams,\n    // whose prototype chain only points to Readable.\n    var realHasInstance;\n    if (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 (object) {\n          if (realHasInstance.call(this, object)) return true;\n          if (this !== Writable) return false;\n\n          return object && object._writableState instanceof WritableState;\n        }\n      });\n    } else {\n      realHasInstance = function (object) {\n        return object instanceof this;\n      };\n    }\n\n    function Writable(options) {\n      Duplex = Duplex || require('./_stream_duplex');\n\n      // 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\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      if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n        return new Writable(options);\n      }\n\n      this._writableState = new WritableState(options, this);\n\n      // legacy.\n      this.writable = true;\n\n      if (options) {\n        if (typeof options.write === 'function') this._write = options.write;\n\n        if (typeof options.writev === 'function') this._writev = options.writev;\n\n        if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n        if (typeof options.final === 'function') this._final = options.final;\n      }\n\n      Stream.call(this);\n    }\n\n    // Otherwise people can pipe Writable streams, which is just wrong.\n    Writable.prototype.pipe = function () {\n      this.emit('error', new Error('Cannot pipe, not readable'));\n    };\n\n    function writeAfterEnd(stream, cb) {\n      var er = new Error('write after end');\n      // TODO: defer error events consistently everywhere, not just the cb\n      stream.emit('error', er);\n      pna.nextTick(cb, er);\n    }\n\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    function validChunk(stream, state, chunk, cb) {\n      var valid = true;\n      var er = false;\n\n      if (chunk === null) {\n        er = new TypeError('May not write null values to stream');\n      } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n        er = new TypeError('Invalid non-string/buffer chunk');\n      }\n      if (er) {\n        stream.emit('error', er);\n        pna.nextTick(cb, er);\n        valid = false;\n      }\n      return valid;\n    }\n\n    Writable.prototype.write = function (chunk, encoding, cb) {\n      var state = this._writableState;\n      var ret = false;\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\n      if (typeof cb !== 'function') cb = nop;\n\n      if (state.ended) 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\n      return ret;\n    };\n\n    Writable.prototype.cork = function () {\n      var state = this._writableState;\n\n      state.corked++;\n    };\n\n    Writable.prototype.uncork = function () {\n      var state = this._writableState;\n\n      if (state.corked) {\n        state.corked--;\n\n        if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n      }\n    };\n\n    Writable.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 TypeError('Unknown encoding: ' + encoding);\n      this._writableState.defaultEncoding = encoding;\n      return this;\n    };\n\n    function decodeChunk(state, chunk, encoding) {\n      if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n        chunk = Buffer.from(chunk, encoding);\n      }\n      return chunk;\n    }\n\n    Object.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 () {\n        return this._writableState.highWaterMark;\n      }\n    });\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    function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n      if (!isBuf) {\n        var newChunk = decodeChunk(state, chunk, encoding);\n        if (chunk !== newChunk) {\n          isBuf = true;\n          encoding = 'buffer';\n          chunk = newChunk;\n        }\n      }\n      var len = state.objectMode ? 1 : chunk.length;\n\n      state.length += len;\n\n      var ret = state.length < state.highWaterMark;\n      // we must ensure that previous needDrain will not be reset to false.\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        if (last) {\n          last.next = state.lastBufferedRequest;\n        } else {\n          state.bufferedRequest = state.lastBufferedRequest;\n        }\n        state.bufferedRequestCount += 1;\n      } else {\n        doWrite(stream, state, false, len, chunk, encoding, cb);\n      }\n\n      return ret;\n    }\n\n    function 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 (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n      state.sync = false;\n    }\n\n    function 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        pna.nextTick(cb, er);\n        // this can emit finish, and it will always happen\n        // after error\n        pna.nextTick(finishMaybe, stream, state);\n        stream._writableState.errorEmitted = true;\n        stream.emit('error', 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        stream.emit('error', er);\n        // this can emit finish, but finish must\n        // always follow error\n        finishMaybe(stream, state);\n      }\n    }\n\n    function onwriteStateUpdate(state) {\n      state.writing = false;\n      state.writecb = null;\n      state.length -= state.writelen;\n      state.writelen = 0;\n    }\n\n    function onwrite(stream, er) {\n      var state = stream._writableState;\n      var sync = state.sync;\n      var cb = state.writecb;\n\n      onwriteStateUpdate(state);\n\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);\n\n        if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n          clearBuffer(stream, state);\n        }\n\n        if (sync) {\n          /*<replacement>*/\n          asyncWrite(afterWrite, stream, state, finished, cb);\n          /*</replacement>*/\n        } else {\n          afterWrite(stream, state, finished, cb);\n        }\n      }\n    }\n\n    function afterWrite(stream, state, finished, cb) {\n      if (!finished) onwriteDrain(stream, state);\n      state.pendingcb--;\n      cb();\n      finishMaybe(stream, state);\n    }\n\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    function onwriteDrain(stream, state) {\n      if (state.length === 0 && state.needDrain) {\n        state.needDrain = false;\n        stream.emit('drain');\n      }\n    }\n\n    // if there's something in the buffer waiting, then process it\n    function 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\n        var count = 0;\n        var allBuffers = true;\n        while (entry) {\n          buffer[count] = entry;\n          if (!entry.isBuf) allBuffers = false;\n          entry = entry.next;\n          count += 1;\n        }\n        buffer.allBuffers = allBuffers;\n\n        doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n        // doWrite is almost always async, defer these to save a bit of time\n        // as the hot path ends with doWrite\n        state.pendingcb++;\n        state.lastBufferedRequest = null;\n        if (holder.next) {\n          state.corkedRequestsFree = holder.next;\n          holder.next = null;\n        } else {\n          state.corkedRequestsFree = new CorkedRequest(state);\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\n          doWrite(stream, state, false, len, chunk, encoding, cb);\n          entry = entry.next;\n          state.bufferedRequestCount--;\n          // 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          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\n    Writable.prototype._write = function (chunk, encoding, cb) {\n      cb(new Error('_write() is not implemented'));\n    };\n\n    Writable.prototype._writev = null;\n\n    Writable.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);\n\n      // .end() fully uncorks\n      if (state.corked) {\n        state.corked = 1;\n        this.uncork();\n      }\n\n      // ignore unnecessary end() calls.\n      if (!state.ending && !state.finished) endWritable(this, state, cb);\n    };\n\n    function needFinish(state) {\n      return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n    }\n    function callFinal(stream, state) {\n      stream._final(function (err) {\n        state.pendingcb--;\n        if (err) {\n          stream.emit('error', err);\n        }\n        state.prefinished = true;\n        stream.emit('prefinish');\n        finishMaybe(stream, state);\n      });\n    }\n    function prefinish(stream, state) {\n      if (!state.prefinished && !state.finalCalled) {\n        if (typeof stream._final === 'function') {\n          state.pendingcb++;\n          state.finalCalled = true;\n          pna.nextTick(callFinal, stream, state);\n        } else {\n          state.prefinished = true;\n          stream.emit('prefinish');\n        }\n      }\n    }\n\n    function finishMaybe(stream, state) {\n      var need = needFinish(state);\n      if (need) {\n        prefinish(stream, state);\n        if (state.pendingcb === 0) {\n          state.finished = true;\n          stream.emit('finish');\n        }\n      }\n      return need;\n    }\n\n    function endWritable(stream, state, cb) {\n      state.ending = true;\n      finishMaybe(stream, state);\n      if (cb) {\n        if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n      }\n      state.ended = true;\n      stream.writable = false;\n    }\n\n    function onCorkedFinish(corkReq, state, err) {\n      var entry = corkReq.entry;\n      corkReq.entry = null;\n      while (entry) {\n        var cb = entry.callback;\n        state.pendingcb--;\n        cb(err);\n        entry = entry.next;\n      }\n      if (state.corkedRequestsFree) {\n        state.corkedRequestsFree.next = corkReq;\n      } else {\n        state.corkedRequestsFree = corkReq;\n      }\n    }\n\n    Object.defineProperty(Writable.prototype, 'destroyed', {\n      get: function () {\n        if (this._writableState === undefined) {\n          return false;\n        }\n        return this._writableState.destroyed;\n      },\n      set: function (value) {\n        // we ignore the value if the stream\n        // has not been initialized yet\n        if (!this._writableState) {\n          return;\n        }\n\n        // backward compatibility, the user is explicitly\n        // managing destroyed\n        this._writableState.destroyed = value;\n      }\n    });\n\n    Writable.prototype.destroy = destroyImpl.destroy;\n    Writable.prototype._undestroy = destroyImpl.undestroy;\n    Writable.prototype._destroy = function (err, cb) {\n      this.end();\n      cb(err);\n    };\n    }).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {},require(\"timers\").setImmediate)\n    },{\"./_stream_duplex\":66,\"./internal/streams/destroy\":72,\"./internal/streams/stream\":73,\"_process\":64,\"core-util-is\":4,\"inherits\":8,\"process-nextick-args\":63,\"safe-buffer\":78,\"timers\":82,\"util-deprecate\":83}],71:[function(require,module,exports){\n    'use strict';\n\n    function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n    var Buffer = require('safe-buffer').Buffer;\n    var util = require('util');\n\n    function copyBuffer(src, target, offset) {\n      src.copy(target, offset);\n    }\n\n    module.exports = function () {\n      function BufferList() {\n        _classCallCheck(this, BufferList);\n\n        this.head = null;\n        this.tail = null;\n        this.length = 0;\n      }\n\n      BufferList.prototype.push = function push(v) {\n        var entry = { data: v, next: null };\n        if (this.length > 0) this.tail.next = entry;else this.head = entry;\n        this.tail = entry;\n        ++this.length;\n      };\n\n      BufferList.prototype.unshift = function unshift(v) {\n        var entry = { data: v, next: this.head };\n        if (this.length === 0) this.tail = entry;\n        this.head = entry;\n        ++this.length;\n      };\n\n      BufferList.prototype.shift = 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      BufferList.prototype.clear = function clear() {\n        this.head = this.tail = null;\n        this.length = 0;\n      };\n\n      BufferList.prototype.join = function join(s) {\n        if (this.length === 0) return '';\n        var p = this.head;\n        var ret = '' + p.data;\n        while (p = p.next) {\n          ret += s + p.data;\n        }return ret;\n      };\n\n      BufferList.prototype.concat = function concat(n) {\n        if (this.length === 0) return Buffer.alloc(0);\n        if (this.length === 1) return this.head.data;\n        var ret = Buffer.allocUnsafe(n >>> 0);\n        var p = this.head;\n        var i = 0;\n        while (p) {\n          copyBuffer(p.data, ret, i);\n          i += p.data.length;\n          p = p.next;\n        }\n        return ret;\n      };\n\n      return BufferList;\n    }();\n\n    if (util && util.inspect && util.inspect.custom) {\n      module.exports.prototype[util.inspect.custom] = function () {\n        var obj = util.inspect({ length: this.length });\n        return this.constructor.name + ' ' + obj;\n      };\n    }\n    },{\"safe-buffer\":78,\"util\":2}],72:[function(require,module,exports){\n    'use strict';\n\n    /*<replacement>*/\n\n    var pna = require('process-nextick-args');\n    /*</replacement>*/\n\n    // undocumented cb() API, needed for core, not for public API\n    function 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 && (!this._writableState || !this._writableState.errorEmitted)) {\n          pna.nextTick(emitErrorNT, this, err);\n        }\n        return this;\n      }\n\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      if (this._readableState) {\n        this._readableState.destroyed = true;\n      }\n\n      // if this is a duplex stream mark the writable part as destroyed as well\n      if (this._writableState) {\n        this._writableState.destroyed = true;\n      }\n\n      this._destroy(err || null, function (err) {\n        if (!cb && err) {\n          pna.nextTick(emitErrorNT, _this, err);\n          if (_this._writableState) {\n            _this._writableState.errorEmitted = true;\n          }\n        } else if (cb) {\n          cb(err);\n        }\n      });\n\n      return this;\n    }\n\n    function 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.finished = false;\n        this._writableState.errorEmitted = false;\n      }\n    }\n\n    function emitErrorNT(self, err) {\n      self.emit('error', err);\n    }\n\n    module.exports = {\n      destroy: destroy,\n      undestroy: undestroy\n    };\n    },{\"process-nextick-args\":63}],73:[function(require,module,exports){\n    module.exports = require('events').EventEmitter;\n\n    },{\"events\":5}],74:[function(require,module,exports){\n    module.exports = require('./readable').PassThrough\n\n    },{\"./readable\":75}],75:[function(require,module,exports){\n    exports = module.exports = require('./lib/_stream_readable.js');\n    exports.Stream = exports;\n    exports.Readable = exports;\n    exports.Writable = require('./lib/_stream_writable.js');\n    exports.Duplex = require('./lib/_stream_duplex.js');\n    exports.Transform = require('./lib/_stream_transform.js');\n    exports.PassThrough = require('./lib/_stream_passthrough.js');\n\n    },{\"./lib/_stream_duplex.js\":66,\"./lib/_stream_passthrough.js\":67,\"./lib/_stream_readable.js\":68,\"./lib/_stream_transform.js\":69,\"./lib/_stream_writable.js\":70}],76:[function(require,module,exports){\n    module.exports = require('./readable').Transform\n\n    },{\"./readable\":75}],77:[function(require,module,exports){\n    module.exports = require('./lib/_stream_writable.js');\n\n    },{\"./lib/_stream_writable.js\":70}],78:[function(require,module,exports){\n    /* eslint-disable node/no-deprecated-api */\n    var buffer = require('buffer')\n    var Buffer = buffer.Buffer\n\n    // alternative to using Object.keys for old browsers\n    function copyProps (src, dst) {\n      for (var key in src) {\n        dst[key] = src[key]\n      }\n    }\n    if (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\n    function SafeBuffer (arg, encodingOrOffset, length) {\n      return Buffer(arg, encodingOrOffset, length)\n    }\n\n    // Copy static methods from Buffer\n    copyProps(Buffer, SafeBuffer)\n\n    SafeBuffer.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\n    SafeBuffer.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\n    SafeBuffer.allocUnsafe = function (size) {\n      if (typeof size !== 'number') {\n        throw new TypeError('Argument must be a number')\n      }\n      return Buffer(size)\n    }\n\n    SafeBuffer.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    },{\"buffer\":3}],79:[function(require,module,exports){\n    (function (setImmediate){\n    'use strict';\n    module.exports = typeof setImmediate === 'function' ? setImmediate :\n        function setImmediate() {\n            var args = [].slice.apply(arguments);\n            args.splice(1, 0, 0);\n            setTimeout.apply(null, args);\n        };\n\n    }).call(this,require(\"timers\").setImmediate)\n    },{\"timers\":82}],80:[function(require,module,exports){\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    module.exports = Stream;\n\n    var EE = require('events').EventEmitter;\n    var inherits = require('inherits');\n\n    inherits(Stream, EE);\n    Stream.Readable = require('readable-stream/readable.js');\n    Stream.Writable = require('readable-stream/writable.js');\n    Stream.Duplex = require('readable-stream/duplex.js');\n    Stream.Transform = require('readable-stream/transform.js');\n    Stream.PassThrough = require('readable-stream/passthrough.js');\n\n    // Backwards-compat with node 0.4.x\n    Stream.Stream = Stream;\n\n\n\n    // old-style streams.  Note that the pipe method (the only relevant\n    // part of this class) is overridden in the Readable class.\n\n    function Stream() {\n      EE.call(this);\n    }\n\n    Stream.prototype.pipe = function(dest, options) {\n      var source = this;\n\n      function ondata(chunk) {\n        if (dest.writable) {\n          if (false === dest.write(chunk) && source.pause) {\n            source.pause();\n          }\n        }\n      }\n\n      source.on('data', ondata);\n\n      function ondrain() {\n        if (source.readable && source.resume) {\n          source.resume();\n        }\n      }\n\n      dest.on('drain', ondrain);\n\n      // If the 'end' option is not supplied, dest.end() will be called when\n      // source gets the 'end' or 'close' events.  Only dest.end() once.\n      if (!dest._isStdio && (!options || options.end !== false)) {\n        source.on('end', onend);\n        source.on('close', onclose);\n      }\n\n      var didOnEnd = false;\n      function onend() {\n        if (didOnEnd) return;\n        didOnEnd = true;\n\n        dest.end();\n      }\n\n\n      function onclose() {\n        if (didOnEnd) return;\n        didOnEnd = true;\n\n        if (typeof dest.destroy === 'function') dest.destroy();\n      }\n\n      // don't leave dangling pipes when there are errors.\n      function onerror(er) {\n        cleanup();\n        if (EE.listenerCount(this, 'error') === 0) {\n          throw er; // Unhandled stream error in pipe.\n        }\n      }\n\n      source.on('error', onerror);\n      dest.on('error', onerror);\n\n      // remove all the event listeners that were added.\n      function cleanup() {\n        source.removeListener('data', ondata);\n        dest.removeListener('drain', ondrain);\n\n        source.removeListener('end', onend);\n        source.removeListener('close', onclose);\n\n        source.removeListener('error', onerror);\n        dest.removeListener('error', onerror);\n\n        source.removeListener('end', cleanup);\n        source.removeListener('close', cleanup);\n\n        dest.removeListener('close', cleanup);\n      }\n\n      source.on('end', cleanup);\n      source.on('close', cleanup);\n\n      dest.on('close', cleanup);\n\n      dest.emit('pipe', source);\n\n      // Allow for unix-like usage: A.pipe(B).pipe(C)\n      return dest;\n    };\n\n    },{\"events\":5,\"inherits\":8,\"readable-stream/duplex.js\":65,\"readable-stream/passthrough.js\":74,\"readable-stream/readable.js\":75,\"readable-stream/transform.js\":76,\"readable-stream/writable.js\":77}],81:[function(require,module,exports){\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    /*<replacement>*/\n\n    var Buffer = require('safe-buffer').Buffer;\n    /*</replacement>*/\n\n    var 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\n    function _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\n    function 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.\n    exports.StringDecoder = StringDecoder;\n    function 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\n    StringDecoder.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\n    StringDecoder.prototype.end = utf8End;\n\n    // Returns only complete characters in a Buffer\n    StringDecoder.prototype.text = utf8Text;\n\n    // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n    StringDecoder.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.\n    function 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.\n    function 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.\n    function 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.\n    function 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.\n    function 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.\n    function 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.\n    function 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.\n    function 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\n    function 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\n    function 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)\n    function simpleWrite(buf) {\n      return buf.toString(this.encoding);\n    }\n\n    function simpleEnd(buf) {\n      return buf && buf.length ? this.write(buf) : '';\n    }\n    },{\"safe-buffer\":78}],82:[function(require,module,exports){\n    (function (setImmediate,clearImmediate){\n    var nextTick = require('process/browser.js').nextTick;\n    var apply = Function.prototype.apply;\n    var slice = Array.prototype.slice;\n    var immediateIds = {};\n    var nextImmediateId = 0;\n\n    // DOM APIs, for completeness\n\n    exports.setTimeout = function() {\n      return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n    };\n    exports.setInterval = function() {\n      return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n    };\n    exports.clearTimeout =\n    exports.clearInterval = function(timeout) { timeout.close(); };\n\n    function Timeout(id, clearFn) {\n      this._id = id;\n      this._clearFn = clearFn;\n    }\n    Timeout.prototype.unref = Timeout.prototype.ref = function() {};\n    Timeout.prototype.close = function() {\n      this._clearFn.call(window, this._id);\n    };\n\n    // Does not start the time, just sets up the members needed.\n    exports.enroll = function(item, msecs) {\n      clearTimeout(item._idleTimeoutId);\n      item._idleTimeout = msecs;\n    };\n\n    exports.unenroll = function(item) {\n      clearTimeout(item._idleTimeoutId);\n      item._idleTimeout = -1;\n    };\n\n    exports._unrefActive = exports.active = function(item) {\n      clearTimeout(item._idleTimeoutId);\n\n      var msecs = item._idleTimeout;\n      if (msecs >= 0) {\n        item._idleTimeoutId = setTimeout(function onTimeout() {\n          if (item._onTimeout)\n            item._onTimeout();\n        }, msecs);\n      }\n    };\n\n    // That's not how node.js implements it but the exposed api is the same.\n    exports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n      var id = nextImmediateId++;\n      var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n      immediateIds[id] = true;\n\n      nextTick(function onNextTick() {\n        if (immediateIds[id]) {\n          // fn.call() is faster so we optimize for the common use-case\n          // @see http://jsperf.com/call-apply-segu\n          if (args) {\n            fn.apply(null, args);\n          } else {\n            fn.call(null);\n          }\n          // Prevent ids from leaking\n          exports.clearImmediate(id);\n        }\n      });\n\n      return id;\n    };\n\n    exports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n      delete immediateIds[id];\n    };\n    }).call(this,require(\"timers\").setImmediate,require(\"timers\").clearImmediate)\n    },{\"process/browser.js\":64,\"timers\":82}],83:[function(require,module,exports){\n    (function (global){\n\n    /**\n     * Module exports.\n     */\n\n    module.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\n    function 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\n    function 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    }).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n    },{}],84:[function(require,module,exports){\n    \"use strict\";\n\n    var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n      return mod && mod.__esModule ? mod : {\n        \"default\": mod\n      };\n    };\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.HandleZip = void 0;\n\n    var jszip_1 = __importDefault(require(\"jszip\"));\n\n    var method_1 = require(\"./common/method\");\n\n    var HandleZip =\n    /** @class */\n    function () {\n      function HandleZip(file) {\n        // Support nodejs fs to read files\n        // if(file instanceof File){\n        this.uploadFile = file; // }\n      }\n\n      HandleZip.prototype.unzipFile = function (successFunc, errorFunc) {\n        // var new_zip:JSZip = new JSZip();\n        jszip_1[\"default\"].loadAsync(this.uploadFile) // 1) read the Blob\n        .then(function (zip) {\n          var fileList = {},\n              lastIndex = Object.keys(zip.files).length,\n              index = 0;\n          zip.forEach(function (relativePath, zipEntry) {\n            var fileName = zipEntry.name;\n            var fileNameArr = fileName.split(\".\");\n            var suffix = fileNameArr[fileNameArr.length - 1].toLowerCase();\n            var fileType = \"string\";\n\n            if (suffix in {\n              \"png\": 1,\n              \"jpeg\": 1,\n              \"jpg\": 1,\n              \"gif\": 1,\n              \"bmp\": 1,\n              \"tif\": 1,\n              \"webp\": 1\n            }) {\n              fileType = \"base64\";\n            } else if (suffix == \"emf\") {\n              fileType = \"arraybuffer\";\n            }\n\n            zipEntry.async(fileType).then(function (data) {\n              if (fileType == \"base64\") {\n                data = \"data:image/\" + suffix + \";base64,\" + data;\n              }\n\n              fileList[zipEntry.name] = data; // console.log(lastIndex, index);\n\n              if (lastIndex == index + 1) {\n                successFunc(fileList);\n              }\n\n              index++;\n            });\n          });\n        }, function (e) {\n          errorFunc(e);\n        });\n      };\n\n      HandleZip.prototype.unzipFileByUrl = function (url, successFunc, errorFunc) {\n        var new_zip = new jszip_1[\"default\"]();\n        method_1.getBinaryContent(url, function (err, data) {\n          if (err) {\n            throw err; // or handle err\n          }\n\n          jszip_1[\"default\"].loadAsync(data).then(function (zip) {\n            var fileList = {},\n                lastIndex = Object.keys(zip.files).length,\n                index = 0;\n            zip.forEach(function (relativePath, zipEntry) {\n              var fileName = zipEntry.name;\n              var fileNameArr = fileName.split(\".\");\n              var suffix = fileNameArr[fileNameArr.length - 1].toLowerCase();\n              var fileType = \"string\";\n\n              if (suffix in {\n                \"png\": 1,\n                \"jpeg\": 1,\n                \"jpg\": 1,\n                \"gif\": 1,\n                \"bmp\": 1,\n                \"tif\": 1,\n                \"webp\": 1\n              }) {\n                fileType = \"base64\";\n              } else if (suffix == \"emf\") {\n                fileType = \"arraybuffer\";\n              }\n\n              zipEntry.async(fileType).then(function (data) {\n                if (fileType == \"base64\") {\n                  data = \"data:image/\" + suffix + \";base64,\" + data;\n                }\n\n                fileList[zipEntry.name] = data; // console.log(lastIndex, index);\n\n                if (lastIndex == index + 1) {\n                  successFunc(fileList);\n                }\n\n                index++;\n              });\n            });\n          }, function (e) {\n            errorFunc(e);\n          });\n        });\n      };\n\n      HandleZip.prototype.newZipFile = function () {\n        var zip = new jszip_1[\"default\"]();\n        this.workBook = zip;\n      }; //title:\"nested/hello.txt\", content:\"Hello Worldasdfasfasdfasfasfasfasfasdfas\"\n\n\n      HandleZip.prototype.addToZipFile = function (title, content) {\n        if (this.workBook == null) {\n          var zip = new jszip_1[\"default\"]();\n          this.workBook = zip;\n        }\n\n        this.workBook.file(title, content);\n      };\n\n      return HandleZip;\n    }();\n\n    exports.HandleZip = HandleZip;\n\n    },{\"./common/method\":93,\"jszip\":20}],85:[function(require,module,exports){\n    \"use strict\";\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.LuckyImageBase = exports.LuckysheetCalcChain = exports.LuckySheetConfigMerge = exports.LuckySheetborderInfoCellValueStyle = exports.LuckySheetborderInfoCellValue = exports.LuckySheetborderInfoCellForImp = exports.LuckyConfig = exports.LuckyInlineString = exports.LuckySheetCellFormat = exports.LuckySheetCelldataValue = exports.LuckySheetCelldataBase = exports.LuckyFileInfo = exports.LuckySheetBase = exports.LuckyFileBase = void 0;\n\n    var LuckyFileBase =\n    /** @class */\n    function () {\n      function LuckyFileBase() {}\n\n      return LuckyFileBase;\n    }();\n\n    exports.LuckyFileBase = LuckyFileBase;\n\n    var LuckySheetBase =\n    /** @class */\n    function () {\n      function LuckySheetBase() {}\n\n      return LuckySheetBase;\n    }();\n\n    exports.LuckySheetBase = LuckySheetBase;\n\n    var LuckyFileInfo =\n    /** @class */\n    function () {\n      function LuckyFileInfo() {}\n\n      return LuckyFileInfo;\n    }();\n\n    exports.LuckyFileInfo = LuckyFileInfo;\n\n    var LuckySheetCelldataBase =\n    /** @class */\n    function () {\n      function LuckySheetCelldataBase() {}\n\n      return LuckySheetCelldataBase;\n    }();\n\n    exports.LuckySheetCelldataBase = LuckySheetCelldataBase;\n\n    var LuckySheetCelldataValue =\n    /** @class */\n    function () {\n      function LuckySheetCelldataValue() {}\n\n      return LuckySheetCelldataValue;\n    }();\n\n    exports.LuckySheetCelldataValue = LuckySheetCelldataValue;\n\n    var LuckySheetCellFormat =\n    /** @class */\n    function () {\n      function LuckySheetCellFormat() {}\n\n      return LuckySheetCellFormat;\n    }();\n\n    exports.LuckySheetCellFormat = LuckySheetCellFormat;\n\n    var LuckyInlineString =\n    /** @class */\n    function () {\n      function LuckyInlineString() {}\n\n      return LuckyInlineString;\n    }();\n\n    exports.LuckyInlineString = LuckyInlineString;\n\n    var LuckyConfig =\n    /** @class */\n    function () {\n      function LuckyConfig() {}\n\n      return LuckyConfig;\n    }();\n\n    exports.LuckyConfig = LuckyConfig;\n\n    var LuckySheetborderInfoCellForImp =\n    /** @class */\n    function () {\n      function LuckySheetborderInfoCellForImp() {}\n\n      return LuckySheetborderInfoCellForImp;\n    }();\n\n    exports.LuckySheetborderInfoCellForImp = LuckySheetborderInfoCellForImp;\n\n    var LuckySheetborderInfoCellValue =\n    /** @class */\n    function () {\n      function LuckySheetborderInfoCellValue() {}\n\n      return LuckySheetborderInfoCellValue;\n    }();\n\n    exports.LuckySheetborderInfoCellValue = LuckySheetborderInfoCellValue;\n\n    var LuckySheetborderInfoCellValueStyle =\n    /** @class */\n    function () {\n      function LuckySheetborderInfoCellValueStyle() {}\n\n      return LuckySheetborderInfoCellValueStyle;\n    }();\n\n    exports.LuckySheetborderInfoCellValueStyle = LuckySheetborderInfoCellValueStyle;\n\n    var LuckySheetConfigMerge =\n    /** @class */\n    function () {\n      function LuckySheetConfigMerge() {}\n\n      return LuckySheetConfigMerge;\n    }();\n\n    exports.LuckySheetConfigMerge = LuckySheetConfigMerge;\n\n    var LuckysheetCalcChain =\n    /** @class */\n    function () {\n      function LuckysheetCalcChain() {}\n\n      return LuckysheetCalcChain;\n    }();\n\n    exports.LuckysheetCalcChain = LuckysheetCalcChain;\n\n    var LuckyImageBase =\n    /** @class */\n    function () {\n      function LuckyImageBase() {}\n\n      return LuckyImageBase;\n    }();\n\n    exports.LuckyImageBase = LuckyImageBase;\n\n    },{}],86:[function(require,module,exports){\n    \"use strict\";\n\n    var __extends = void 0 && (void 0).__extends || function () {\n      var _extendStatics = function extendStatics(d, b) {\n        _extendStatics = Object.setPrototypeOf || {\n          __proto__: []\n        } instanceof Array && function (d, b) {\n          d.__proto__ = b;\n        } || function (d, b) {\n          for (var p in b) {\n            if (b.hasOwnProperty(p)) d[p] = b[p];\n          }\n        };\n\n        return _extendStatics(d, b);\n      };\n\n      return function (d, b) {\n        _extendStatics(d, b);\n\n        function __() {\n          this.constructor = d;\n        }\n\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n      };\n    }();\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.LuckySheetCelldata = void 0;\n\n    var ReadXml_1 = require(\"./ReadXml\");\n\n    var method_1 = require(\"../common/method\");\n\n    var constant_1 = require(\"../common/constant\");\n\n    var LuckyBase_1 = require(\"./LuckyBase\");\n\n    var LuckySheetCelldata =\n    /** @class */\n    function (_super) {\n      __extends(LuckySheetCelldata, _super);\n\n      function LuckySheetCelldata(cell, styles, sharedStrings, mergeCells, sheetFile, ReadXml) {\n        var _this = //Private\n        _super.call(this) || this;\n\n        _this.cell = cell;\n        _this.sheetFile = sheetFile;\n        _this.styles = styles;\n        _this.sharedStrings = sharedStrings;\n        _this.readXml = ReadXml;\n        _this.mergeCells = mergeCells;\n        var attrList = cell.attributeList;\n        var r = attrList.r,\n            s = attrList.s,\n            t = attrList.t;\n        var range = method_1.getcellrange(r);\n        _this.r = range.row[0];\n        _this.c = range.column[0];\n        _this.v = _this.generateValue(s, t);\n        return _this;\n      }\n      /**\n      * @param s Style index ,start 1\n      * @param t Cell type, Optional value is ST_CellType, it's found at constat.ts\n      */\n\n\n      LuckySheetCelldata.prototype.generateValue = function (s, t) {\n        var _this = this;\n\n        var v = this.cell.getInnerElements(\"v\");\n        var f = this.cell.getInnerElements(\"f\");\n\n        if (v == null) {\n          v = this.cell.getInnerElements(\"t\");\n        }\n\n        var cellXfs = this.styles[\"cellXfs\"];\n        var cellStyleXfs = this.styles[\"cellStyleXfs\"];\n        var cellStyles = this.styles[\"cellStyles\"];\n        var fonts = this.styles[\"fonts\"];\n        var fills = this.styles[\"fills\"];\n        var borders = this.styles[\"borders\"];\n        var numfmts = this.styles[\"numfmts\"];\n        var clrScheme = this.styles[\"clrScheme\"];\n        var sharedStrings = this.sharedStrings;\n        var cellValue = new LuckyBase_1.LuckySheetCelldataValue();\n        if (f != null) {\n          var formula = f[0],\n              attrList = formula.attributeList;\n          var t_1 = attrList.t,\n              ref = attrList.ref,\n              si = attrList.si;\n          var formulaValue = f[0].value;\n\n          if (t_1 == \"shared\") {\n            this._fomulaRef = ref;\n            this._formulaType = t_1;\n            this._formulaSi = si;\n          } // console.log(ref, t, si);\n\n\n          if (ref != null || formulaValue != null && formulaValue.length > 0) {\n            formulaValue = method_1.escapeCharacter(formulaValue);\n            cellValue.f = \"=\" + formulaValue;\n          }\n        }\n\n        var familyFont = null;\n        var quotePrefix;\n\n        if (s != null) {\n          var sNum = parseInt(s);\n          var cellXf = cellXfs[sNum];\n          var xfId = cellXf.attributeList.xfId;\n          var numFmtId = void 0,\n              fontId = void 0,\n              fillId = void 0,\n              borderId = void 0;\n          var horizontal = void 0,\n              vertical = void 0,\n              wrapText = void 0,\n              textRotation = void 0,\n              shrinkToFit = void 0,\n              indent = void 0,\n              applyProtection = void 0;\n\n          if (xfId != null) {\n            var cellStyleXf = cellStyleXfs[parseInt(xfId)];\n            var attrList = cellStyleXf.attributeList;\n            var applyNumberFormat_1 = attrList.applyNumberFormat;\n            var applyFont_1 = attrList.applyFont;\n            var applyFill_1 = attrList.applyFill;\n            var applyBorder_1 = attrList.applyBorder;\n            var applyAlignment_1 = attrList.applyAlignment; // let applyProtection = attrList.applyProtection;\n\n            applyProtection = attrList.applyProtection;\n            quotePrefix = attrList.quotePrefix;\n\n            if (applyNumberFormat_1 != \"0\" && attrList.numFmtId != null) {\n              // if(attrList.numFmtId!=\"0\"){\n              numFmtId = attrList.numFmtId; // }\n            }\n\n            if (applyFont_1 != \"0\" && attrList.fontId != null) {\n              fontId = attrList.fontId;\n            }\n\n            if (applyFill_1 != \"0\" && attrList.fillId != null) {\n              fillId = attrList.fillId;\n            }\n\n            if (applyBorder_1 != \"0\" && attrList.borderId != null) {\n              borderId = attrList.borderId;\n            }\n\n            if (applyAlignment_1 != null && applyAlignment_1 != \"0\") {\n              var alignment = cellStyleXf.getInnerElements(\"alignment\");\n\n              if (alignment != null) {\n                var attrList_1 = alignment[0].attributeList;\n\n                if (attrList_1.horizontal != null) {\n                  horizontal = attrList_1.horizontal;\n                }\n\n                if (attrList_1.vertical != null) {\n                  vertical = attrList_1.vertical;\n                }\n\n                if (attrList_1.wrapText != null) {\n                  wrapText = attrList_1.wrapText;\n                }\n\n                if (attrList_1.textRotation != null) {\n                  textRotation = attrList_1.textRotation;\n                }\n\n                if (attrList_1.shrinkToFit != null) {\n                  shrinkToFit = attrList_1.shrinkToFit;\n                }\n\n                if (attrList_1.indent != null) {\n                  indent = attrList_1.indent;\n                }\n              }\n            }\n          }\n\n          var applyNumberFormat = cellXf.attributeList.applyNumberFormat;\n          var applyFont = cellXf.attributeList.applyFont;\n          var applyFill = cellXf.attributeList.applyFill;\n          var applyBorder = cellXf.attributeList.applyBorder;\n          var applyAlignment = cellXf.attributeList.applyAlignment;\n\n          if (cellXf.attributeList.applyProtection != null) {\n            applyProtection = cellXf.attributeList.applyProtection;\n          }\n\n          if (cellXf.attributeList.quotePrefix != null) {\n            quotePrefix = cellXf.attributeList.quotePrefix;\n          }\n\n          if (applyNumberFormat != \"0\" && cellXf.attributeList.numFmtId != null) {\n            numFmtId = cellXf.attributeList.numFmtId;\n          }\n\n          if (applyFont != \"0\") {\n            fontId = cellXf.attributeList.fontId;\n          }\n\n          if (applyFill != \"0\") {\n            fillId = cellXf.attributeList.fillId;\n          }\n\n          if (applyBorder != \"0\") {\n            borderId = cellXf.attributeList.borderId;\n          }\n\n          if (applyAlignment != \"0\") {\n            var alignment = cellXf.getInnerElements(\"alignment\");\n\n            if (alignment != null && alignment.length > 0) {\n              var attrList = alignment[0].attributeList;\n\n              if (attrList.horizontal != null) {\n                horizontal = attrList.horizontal;\n              }\n\n              if (attrList.vertical != null) {\n                vertical = attrList.vertical;\n              }\n\n              if (attrList.wrapText != null) {\n                wrapText = attrList.wrapText;\n              }\n\n              if (attrList.textRotation != null) {\n                textRotation = attrList.textRotation;\n              }\n\n              if (attrList.shrinkToFit != null) {\n                shrinkToFit = attrList.shrinkToFit;\n              }\n\n              if (attrList.indent != null) {\n                indent = attrList.indent;\n              }\n            }\n          }\n\n          if (numFmtId != undefined) {\n            var numf = numfmts[parseInt(numFmtId)];\n            var cellFormat = new LuckyBase_1.LuckySheetCellFormat();\n            cellFormat.fa = method_1.escapeCharacter(numf); // console.log(numf, numFmtId, this.v);\n\n            cellFormat.t = t;\n            cellValue.ct = cellFormat;\n          }\n\n          if (fillId != undefined) {\n            var fillIdNum = parseInt(fillId);\n            var fill = fills[fillIdNum]; // console.log(cellValue.v);\n\n            var bg = this.getBackgroundByFill(fill, clrScheme);\n\n            if (bg != null) {\n              cellValue.bg = bg;\n            }\n          }\n\n          if (fontId != undefined) {\n            var fontIdNum = parseInt(fontId);\n            var font = fonts[fontIdNum];\n\n            if (font != null) {\n              var sz = font.getInnerElements(\"sz\"); //font size\n\n              var colors = font.getInnerElements(\"color\"); //font color\n\n              var family = font.getInnerElements(\"name\"); //font family\n\n              var familyOverrides = font.getInnerElements(\"family\"); //font family will be overrided by name\n\n              var charset = font.getInnerElements(\"charset\"); //font charset\n\n              var bolds = font.getInnerElements(\"b\"); //font bold\n\n              var italics = font.getInnerElements(\"i\"); //font italic\n\n              var strikes = font.getInnerElements(\"strike\"); //font italic\n\n              var underlines = font.getInnerElements(\"u\"); //font italic\n\n              if (sz != null && sz.length > 0) {\n                var fs = sz[0].attributeList.val;\n\n                if (fs != null) {\n                  cellValue.fs = parseInt(fs);\n                }\n              }\n\n              if (colors != null && colors.length > 0) {\n                var color = colors[0];\n                var fc = ReadXml_1.getColor(color, this.styles, \"t\");\n\n                if (fc != null) {\n                  cellValue.fc = fc;\n                }\n              }\n\n              if (familyOverrides != null && familyOverrides.length > 0) {\n                var val = familyOverrides[0].attributeList.val;\n\n                if (val != null) {\n                  familyFont = constant_1.fontFamilys[val];\n                }\n              }\n\n              if (family != null && family.length > 0) {\n                var val = family[0].attributeList.val;\n\n                if (val != null) {\n                  cellValue.ff = val;\n                }\n              }\n\n              if (bolds != null && bolds.length > 0) {\n                var bold = bolds[0].attributeList.val;\n\n                if (bold == \"0\") {\n                  cellValue.bl = 0;\n                } else {\n                  cellValue.bl = 1;\n                }\n              }\n\n              if (italics != null && italics.length > 0) {\n                var italic = italics[0].attributeList.val;\n\n                if (italic == \"0\") {\n                  cellValue.it = 0;\n                } else {\n                  cellValue.it = 1;\n                }\n              }\n\n              if (strikes != null && strikes.length > 0) {\n                var strike = strikes[0].attributeList.val;\n\n                if (strike == \"0\") {\n                  cellValue.cl = 0;\n                } else {\n                  cellValue.cl = 1;\n                }\n              }\n\n              if (underlines != null && underlines.length > 0) {\n                var underline = underlines[0].attributeList.val;\n\n                if (underline == \"single\") {\n                  cellValue.un = 1;\n                } else if (underline == \"double\") {\n                  cellValue.un = 2;\n                } else if (underline == \"singleAccounting\") {\n                  cellValue.un = 3;\n                } else if (underline == \"doubleAccounting\") {\n                  cellValue.un = 4;\n                } else {\n                  cellValue.un = 0;\n                }\n              }\n            }\n          } // vt: number | undefined//Vertical alignment, 0 middle, 1 up, 2 down, alignment\n          // ht: number | undefined//Horizontal alignment,0 center, 1 left, 2 right, alignment\n          // tr: number | undefined //Text rotation,0: 0、1: 45 、2: -45、3 Vertical text、4: 90 、5: -90, alignment\n          // tb: number | undefined //Text wrap,0 truncation, 1 overflow, 2 word wrap, alignment\n\n\n          if (horizontal != undefined) {\n            //Horizontal alignment\n            if (horizontal == \"center\") {\n              cellValue.ht = 0;\n            } else if (horizontal == \"centerContinuous\") {\n              cellValue.ht = 0; //luckysheet unsupport\n            } else if (horizontal == \"left\") {\n              cellValue.ht = 1;\n            } else if (horizontal == \"right\") {\n              cellValue.ht = 2;\n            } else if (horizontal == \"distributed\") {\n              cellValue.ht = 0; //luckysheet unsupport\n            } else if (horizontal == \"fill\") {\n              cellValue.ht = 1; //luckysheet unsupport\n            } else if (horizontal == \"general\") {\n              cellValue.ht = 1; //luckysheet unsupport\n            } else if (horizontal == \"justify\") {\n              cellValue.ht = 0; //luckysheet unsupport\n            } else {\n              cellValue.ht = 1;\n            }\n          }\n\n          if (vertical != undefined) {\n            //Vertical alignment\n            if (vertical == \"bottom\") {\n              cellValue.vt = 2;\n            } else if (vertical == \"center\") {\n              cellValue.vt = 0;\n            } else if (vertical == \"distributed\") {\n              cellValue.vt = 0; //luckysheet unsupport\n            } else if (vertical == \"justify\") {\n              cellValue.vt = 0; //luckysheet unsupport\n            } else if (vertical == \"top\") {\n              cellValue.vt = 1;\n            } else {\n              cellValue.vt = 1;\n            }\n          }\n\n          cellValue.tb = (wrapText !== undefined && (wrapText === \"1\" || wrapText === \"true\")) ? 2 : 1;\n\n          if (textRotation != undefined) {\n            // tr: number | undefined //Text rotation,0: 0、1: 45 、2: -45、3 Vertical text、4: 90 、5: -90, alignment\n            if (textRotation == \"255\") {\n              cellValue.tr = 3;\n            } // else if(textRotation==\"45\"){\n            //     cellValue.tr = 1;\n            // }\n            // else if(textRotation==\"90\"){\n            //     cellValue.tr = 4;\n            // }\n            // else if(textRotation==\"135\"){\n            //     cellValue.tr = 2;\n            // }\n            // else if(textRotation==\"180\"){\n            //     cellValue.tr = 5;\n            // }\n            else {\n                cellValue.tr = 0;\n                cellValue.rt = parseInt(textRotation);\n              }\n          }\n\n          if (shrinkToFit != undefined) {//luckysheet unsupport\n          }\n\n          if (indent != undefined) {//luckysheet unsupport\n          }\n\n          if (borderId != undefined) {\n            var borderIdNum = parseInt(borderId);\n            var border = borders[borderIdNum]; // this._borderId = borderIdNum;\n\n            var borderObject = new LuckyBase_1.LuckySheetborderInfoCellForImp();\n            borderObject.rangeType = \"cell\"; // borderObject.cells = [];\n\n            var borderCellValue = new LuckyBase_1.LuckySheetborderInfoCellValue();\n            borderCellValue.row_index = this.r;\n            borderCellValue.col_index = this.c;\n            var lefts = border.getInnerElements(\"left\");\n            var rights = border.getInnerElements(\"right\");\n            var tops = border.getInnerElements(\"top\");\n            var bottoms = border.getInnerElements(\"bottom\");\n            var diagonals = border.getInnerElements(\"diagonal\");\n            var starts = border.getInnerElements(\"start\");\n            var ends = border.getInnerElements(\"end\");\n            var left = this.getBorderInfo(lefts);\n            var right = this.getBorderInfo(rights);\n            var top_1 = this.getBorderInfo(tops);\n            var bottom = this.getBorderInfo(bottoms);\n            var diagonal = this.getBorderInfo(diagonals);\n            var start = this.getBorderInfo(starts);\n            var end = this.getBorderInfo(ends);\n            var isAdd = false;\n\n            if (start != null && start.color != null) {\n              borderCellValue.l = start;\n              isAdd = true;\n            }\n\n            if (end != null && end.color != null) {\n              borderCellValue.r = end;\n              isAdd = true;\n            }\n\n            if (left != null && left.color != null) {\n              borderCellValue.l = left;\n              isAdd = true;\n            }\n\n            if (right != null && right.color != null) {\n              borderCellValue.r = right;\n              isAdd = true;\n            }\n\n            if (top_1 != null && top_1.color != null) {\n              borderCellValue.t = top_1;\n              isAdd = true;\n            }\n\n            if (bottom != null && bottom.color != null) {\n              borderCellValue.b = bottom;\n              isAdd = true;\n            }\n\n            if (isAdd) {\n              borderObject.value = borderCellValue; // this.config._borderInfo[borderId] = borderObject;\n\n              this._borderObject = borderObject;\n            }\n          }\n        } else {\n          cellValue.tb = 1;\n        }\n\n        if (v != null) {\n          var value = v[0].value;\n\n          if (/&#\\d+;/.test(value)) {\n            value = this.htmlDecode(value);\n          }\n\n          if (t == constant_1.ST_CellType[\"SharedString\"]) {\n            var siIndex = parseInt(v[0].value);\n            var sharedSI = sharedStrings[siIndex];\n            var rFlag = sharedSI.getInnerElements(\"r\");\n\n            if (rFlag == null) {\n              var tFlag = sharedSI.getInnerElements(\"t\");\n\n              if (tFlag != null) {\n                var text_1 = \"\";\n                tFlag.forEach(function (t) {\n                  text_1 += t.value;\n                });\n                text_1 = method_1.escapeCharacter(text_1); //isContainMultiType(text) &&\n\n                if (familyFont == \"Roman\" && text_1.length > 0) {\n                  var textArray = text_1.split(\"\");\n                  var preWordType = null,\n                      wordText = \"\",\n                      preWholef = null;\n                  var wholef = \"Times New Roman\";\n\n                  if (cellValue.ff != null) {\n                    wholef = cellValue.ff;\n                  }\n\n                  var cellFormat = cellValue.ct;\n\n                  if (cellFormat == null) {\n                    cellFormat = new LuckyBase_1.LuckySheetCellFormat();\n                  }\n\n                  if (cellFormat.s == null) {\n                    cellFormat.s = [];\n                  }\n\n                  for (var i = 0; i < textArray.length; i++) {\n                    var w = textArray[i];\n                    var type = null,\n                        ff = wholef;\n\n                    if (method_1.isChinese(w)) {\n                      type = \"c\";\n                      ff = \"宋体\";\n                    } else if (method_1.isJapanese(w)) {\n                      type = \"j\";\n                      ff = \"Yu Gothic\";\n                    } else if (method_1.isKoera(w)) {\n                      type = \"k\";\n                      ff = \"Malgun Gothic\";\n                    } else {\n                      type = \"e\";\n                    }\n\n                    if (type != preWordType && preWordType != null || i == textArray.length - 1) {\n                      var InlineString = new LuckyBase_1.LuckyInlineString();\n                      InlineString.ff = preWholef;\n\n                      if (cellValue.fc != null) {\n                        InlineString.fc = cellValue.fc;\n                      }\n\n                      if (cellValue.fs != null) {\n                        InlineString.fs = cellValue.fs;\n                      }\n\n                      if (cellValue.cl != null) {\n                        InlineString.cl = cellValue.cl;\n                      }\n\n                      if (cellValue.un != null) {\n                        InlineString.un = cellValue.un;\n                      }\n\n                      if (cellValue.bl != null) {\n                        InlineString.bl = cellValue.bl;\n                      }\n\n                      if (cellValue.it != null) {\n                        InlineString.it = cellValue.it;\n                      }\n\n                      if (i == textArray.length - 1) {\n                        if (type == preWordType) {\n                          InlineString.ff = ff;\n                          InlineString.v = wordText + w;\n                        } else {\n                          InlineString.ff = preWholef;\n                          InlineString.v = wordText;\n                          cellFormat.s.push(InlineString);\n                          var InlineStringLast = new LuckyBase_1.LuckyInlineString();\n                          InlineStringLast.ff = ff;\n                          InlineStringLast.v = w;\n\n                          if (cellValue.fc != null) {\n                            InlineStringLast.fc = cellValue.fc;\n                          }\n\n                          if (cellValue.fs != null) {\n                            InlineStringLast.fs = cellValue.fs;\n                          }\n\n                          if (cellValue.cl != null) {\n                            InlineStringLast.cl = cellValue.cl;\n                          }\n\n                          if (cellValue.un != null) {\n                            InlineStringLast.un = cellValue.un;\n                          }\n\n                          if (cellValue.bl != null) {\n                            InlineStringLast.bl = cellValue.bl;\n                          }\n\n                          if (cellValue.it != null) {\n                            InlineStringLast.it = cellValue.it;\n                          }\n\n                          cellFormat.s.push(InlineStringLast);\n                          break;\n                        }\n                      } else {\n                        InlineString.v = wordText;\n                      }\n\n                      cellFormat.s.push(InlineString);\n                      wordText = w;\n                    } else {\n                      wordText += w;\n                    }\n\n                    preWordType = type;\n                    preWholef = ff;\n                  }\n\n                  cellFormat.t = \"inlineStr\"; // cellFormat.s = [InlineString];\n\n                  cellValue.ct = cellFormat; // console.log(cellValue);\n                } else {\n                  text_1 = this.replaceSpecialWrap(text_1);\n\n                  if (text_1.indexOf(\"\\r\\n\") > -1 || text_1.indexOf(\"\\n\") > -1) {\n                    var InlineString = new LuckyBase_1.LuckyInlineString();\n                    InlineString.v = text_1;\n                    var cellFormat = cellValue.ct;\n\n                    if (cellFormat == null) {\n                      cellFormat = new LuckyBase_1.LuckySheetCellFormat();\n                    }\n\n                    if (cellValue.ff != null) {\n                      InlineString.ff = cellValue.ff;\n                    }\n\n                    if (cellValue.fc != null) {\n                      InlineString.fc = cellValue.fc;\n                    }\n\n                    if (cellValue.fs != null) {\n                      InlineString.fs = cellValue.fs;\n                    }\n\n                    if (cellValue.cl != null) {\n                      InlineString.cl = cellValue.cl;\n                    }\n\n                    if (cellValue.un != null) {\n                      InlineString.un = cellValue.un;\n                    }\n\n                    if (cellValue.bl != null) {\n                      InlineString.bl = cellValue.bl;\n                    }\n\n                    if (cellValue.it != null) {\n                      InlineString.it = cellValue.it;\n                    }\n\n                    cellFormat.t = \"inlineStr\";\n                    cellFormat.s = [InlineString];\n                    cellValue.ct = cellFormat;\n                  } else {\n                    cellValue.v = text_1;\n                    quotePrefix = \"1\";\n                  }\n                }\n              }\n            } else {\n              var styles_1 = [];\n              rFlag.forEach(function (r) {\n                var tFlag = r.getInnerElements(\"t\");\n                var rPr = r.getInnerElements(\"rPr\");\n                var InlineString = new LuckyBase_1.LuckyInlineString();\n\n                if (tFlag != null && tFlag.length > 0) {\n                  var text = tFlag[0].value;\n                  text = _this.replaceSpecialWrap(text);\n                  text = method_1.escapeCharacter(text);\n                  InlineString.v = text;\n                }\n\n                if (rPr != null && rPr.length > 0) {\n                  var frpr = rPr[0];\n                  var sz = ReadXml_1.getlineStringAttr(frpr, \"sz\"),\n                      rFont = ReadXml_1.getlineStringAttr(frpr, \"rFont\"),\n                      family = ReadXml_1.getlineStringAttr(frpr, \"family\"),\n                      charset = ReadXml_1.getlineStringAttr(frpr, \"charset\"),\n                      scheme = ReadXml_1.getlineStringAttr(frpr, \"scheme\"),\n                      b = ReadXml_1.getlineStringAttr(frpr, \"b\"),\n                      i = ReadXml_1.getlineStringAttr(frpr, \"i\"),\n                      u = ReadXml_1.getlineStringAttr(frpr, \"u\"),\n                      strike = ReadXml_1.getlineStringAttr(frpr, \"strike\"),\n                      vertAlign = ReadXml_1.getlineStringAttr(frpr, \"vertAlign\"),\n                      color = void 0;\n                  var cEle = frpr.getInnerElements(\"color\");\n\n                  if (cEle != null && cEle.length > 0) {\n                    color = ReadXml_1.getColor(cEle[0], _this.styles, \"t\");\n                  }\n\n                  var ff = void 0; // if(family!=null){\n                  //     ff = fontFamilys[family];\n                  // }\n\n                  if (rFont != null) {\n                    ff = rFont;\n                  }\n\n                  if (ff != null) {\n                    InlineString.ff = ff;\n                  } else if (cellValue.ff != null) {\n                    InlineString.ff = cellValue.ff;\n                  }\n\n                  if (color != null) {\n                    InlineString.fc = color;\n                  } else if (cellValue.fc != null) {\n                    InlineString.fc = cellValue.fc;\n                  }\n\n                  if (sz != null) {\n                    InlineString.fs = parseInt(sz);\n                  } else if (cellValue.fs != null) {\n                    InlineString.fs = cellValue.fs;\n                  }\n\n                  if (strike != null) {\n                    InlineString.cl = parseInt(strike);\n                  } else if (cellValue.cl != null) {\n                    InlineString.cl = cellValue.cl;\n                  }\n\n                  if (u != null) {\n                    InlineString.un = parseInt(u);\n                  } else if (cellValue.un != null) {\n                    InlineString.un = cellValue.un;\n                  }\n\n                  if (b != null) {\n                    InlineString.bl = parseInt(b);\n                  } else if (cellValue.bl != null) {\n                    InlineString.bl = cellValue.bl;\n                  }\n\n                  if (i != null) {\n                    InlineString.it = parseInt(i);\n                  } else if (cellValue.it != null) {\n                    InlineString.it = cellValue.it;\n                  }\n\n                  if (vertAlign != null) {\n                    InlineString.va = parseInt(vertAlign);\n                  } // ff:string | undefined //font family\n                  // fc:string | undefined//font color\n                  // fs:number | undefined//font size\n                  // cl:number | undefined//strike\n                  // un:number | undefined//underline\n                  // bl:number | undefined//blod\n                  // it:number | undefined//italic\n                  // v:string | undefined\n\n                } else {\n                  if (InlineString.ff == null && cellValue.ff != null) {\n                    InlineString.ff = cellValue.ff;\n                  }\n\n                  if (InlineString.fc == null && cellValue.fc != null) {\n                    InlineString.fc = cellValue.fc;\n                  }\n\n                  if (InlineString.fs == null && cellValue.fs != null) {\n                    InlineString.fs = cellValue.fs;\n                  }\n\n                  if (InlineString.cl == null && cellValue.cl != null) {\n                    InlineString.cl = cellValue.cl;\n                  }\n\n                  if (InlineString.un == null && cellValue.un != null) {\n                    InlineString.un = cellValue.un;\n                  }\n\n                  if (InlineString.bl == null && cellValue.bl != null) {\n                    InlineString.bl = cellValue.bl;\n                  }\n\n                  if (InlineString.it == null && cellValue.it != null) {\n                    InlineString.it = cellValue.it;\n                  }\n                }\n\n                styles_1.push(InlineString);\n              });\n              var cellFormat = cellValue.ct;\n\n              if (cellFormat == null) {\n                cellFormat = new LuckyBase_1.LuckySheetCellFormat();\n              }\n\n              cellFormat.t = \"inlineStr\";\n              cellFormat.s = styles_1;\n              cellValue.ct = cellFormat;\n            }\n          } // else if(t==ST_CellType[\"InlineString\"] && v!=null){\n          // }\n          else {\n              value = method_1.escapeCharacter(value);\n              cellValue.v = value;\n            }\n        }\n\n        if (quotePrefix != null) {\n          cellValue.qp = parseInt(quotePrefix);\n        }\n\n        return cellValue;\n      };\n\n      LuckySheetCelldata.prototype.replaceSpecialWrap = function (text) {\n        text = text.replace(/_x000D_/g, \"\").replace(/&#13;&#10;/g, \"\\r\\n\").replace(/&#13;/g, \"\\r\").replace(/&#10;/g, \"\\n\");\n        return text;\n      };\n\n      LuckySheetCelldata.prototype.getBackgroundByFill = function (fill, clrScheme) {\n        var patternFills = fill.getInnerElements(\"patternFill\");\n\n        if (patternFills != null) {\n          var patternFill = patternFills[0];\n          var fgColors = patternFill.getInnerElements(\"fgColor\");\n          var bgColors = patternFill.getInnerElements(\"bgColor\");\n          var fg = void 0,\n              bg = void 0;\n\n          if (fgColors != null) {\n            var fgColor = fgColors[0];\n            fg = ReadXml_1.getColor(fgColor, this.styles);\n          }\n\n          if (bgColors != null) {\n            var bgColor = bgColors[0];\n            bg = ReadXml_1.getColor(bgColor, this.styles);\n          } // console.log(fgColors,bgColors,clrScheme);\n\n\n          if (fg != null) {\n            return fg;\n          } else if (bg != null) {\n            return bg;\n          }\n        } else {\n          var gradientfills = fill.getInnerElements(\"gradientFill\");\n\n          if (gradientfills != null) {\n            //graient color fill handler\n            return null;\n          }\n        }\n      };\n\n      LuckySheetCelldata.prototype.getBorderInfo = function (borders) {\n        if (borders == null) {\n          return null;\n        }\n\n        var border = borders[0],\n            attrList = border.attributeList;\n        var clrScheme = this.styles[\"clrScheme\"];\n        var style = attrList.style;\n\n        if (style == null || style == \"none\") {\n          return null;\n        }\n\n        var colors = border.getInnerElements(\"color\");\n        var colorRet = \"#000000\";\n\n        if (colors != null) {\n          var color = colors[0];\n          colorRet = ReadXml_1.getColor(color, this.styles, \"b\");\n\n          if (colorRet == null) {\n            colorRet = \"#000000\";\n          }\n        }\n\n        var ret = new LuckyBase_1.LuckySheetborderInfoCellValueStyle();\n        ret.style = constant_1.borderTypes[style];\n        ret.color = colorRet;\n        return ret;\n      };\n\n      LuckySheetCelldata.prototype.htmlDecode = function (str) {\n        return str.replace(/&#(x)?([^&]{1,5});?/g, function ($, $1, $2) {\n          return String.fromCharCode(parseInt($2, $1 ? 16 : 10));\n        });\n      };\n\n      ;\n      return LuckySheetCelldata;\n    }(LuckyBase_1.LuckySheetCelldataBase);\n\n    exports.LuckySheetCelldata = LuckySheetCelldata;\n\n    },{\"../common/constant\":91,\"../common/method\":93,\"./LuckyBase\":85,\"./ReadXml\":90}],87:[function(require,module,exports){\n    \"use strict\";\n\n    var __extends = void 0 && (void 0).__extends || function () {\n      var _extendStatics = function extendStatics(d, b) {\n        _extendStatics = Object.setPrototypeOf || {\n          __proto__: []\n        } instanceof Array && function (d, b) {\n          d.__proto__ = b;\n        } || function (d, b) {\n          for (var p in b) {\n            if (b.hasOwnProperty(p)) d[p] = b[p];\n          }\n        };\n\n        return _extendStatics(d, b);\n      };\n\n      return function (d, b) {\n        _extendStatics(d, b);\n\n        function __() {\n          this.constructor = d;\n        }\n\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n      };\n    }();\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.LuckyFile = void 0;\n\n    var LuckySheet_1 = require(\"./LuckySheet\");\n\n    var constant_1 = require(\"../common/constant\");\n\n    var ReadXml_1 = require(\"./ReadXml\");\n\n    var method_1 = require(\"../common/method\");\n\n    var LuckyBase_1 = require(\"./LuckyBase\");\n\n    var LuckyImage_1 = require(\"./LuckyImage\");\n\n    var LuckyFile =\n    /** @class */\n    function (_super) {\n      __extends(LuckyFile, _super);\n\n      function LuckyFile(files, fileName) {\n        var _this = _super.call(this) || this;\n\n        _this.columnWidthSet = [];\n        _this.rowHeightSet = [];\n        _this.files = files;\n        _this.fileName = fileName;\n        _this.readXml = new ReadXml_1.ReadXml(files);\n\n        _this.getSheetNameList();\n\n        _this.sharedStrings = _this.readXml.getElementsByTagName(\"sst/si\", constant_1.sharedStringsFile);\n        _this.calcChain = _this.readXml.getElementsByTagName(\"calcChain/c\", constant_1.calcChainFile);\n        _this.styles = {};\n        _this.styles[\"cellXfs\"] = _this.readXml.getElementsByTagName(\"cellXfs/xf\", constant_1.stylesFile);\n        _this.styles[\"cellStyleXfs\"] = _this.readXml.getElementsByTagName(\"cellStyleXfs/xf\", constant_1.stylesFile);\n        _this.styles[\"cellStyles\"] = _this.readXml.getElementsByTagName(\"cellStyles/cellStyle\", constant_1.stylesFile);\n        _this.styles[\"fonts\"] = _this.readXml.getElementsByTagName(\"fonts/font\", constant_1.stylesFile);\n        _this.styles[\"fills\"] = _this.readXml.getElementsByTagName(\"fills/fill\", constant_1.stylesFile);\n        _this.styles[\"borders\"] = _this.readXml.getElementsByTagName(\"borders/border\", constant_1.stylesFile);\n        _this.styles[\"clrScheme\"] = _this.readXml.getElementsByTagName(\"a:clrScheme/a:dk1|a:lt1|a:dk2|a:lt2|a:accent1|a:accent2|a:accent3|a:accent4|a:accent5|a:accent6|a:hlink|a:folHlink\", constant_1.theme1File);\n        _this.styles[\"indexedColors\"] = _this.readXml.getElementsByTagName(\"colors/indexedColors/rgbColor\", constant_1.stylesFile);\n        _this.styles[\"mruColors\"] = _this.readXml.getElementsByTagName(\"colors/mruColors/color\", constant_1.stylesFile);\n        _this.imageList = new LuckyImage_1.ImageList(files);\n\n        var numfmts = _this.readXml.getElementsByTagName(\"numFmt/numFmt\", constant_1.stylesFile);\n\n        var numFmtDefaultC = JSON.parse(JSON.stringify(constant_1.numFmtDefault));\n\n        for (var i = 0; i < numfmts.length; i++) {\n          var attrList = numfmts[i].attributeList;\n          var numfmtid = method_1.getXmlAttibute(attrList, \"numFmtId\", \"49\");\n          var formatcode = method_1.getXmlAttibute(attrList, \"formatCode\", \"@\"); // console.log(numfmtid, formatcode);\n\n          if (!(numfmtid in constant_1.numFmtDefault)) {\n            numFmtDefaultC[numfmtid] = formatcode;\n          }\n        } // console.log(JSON.stringify(numFmtDefaultC), numfmts);\n\n\n        _this.styles[\"numfmts\"] = numFmtDefaultC;\n        return _this;\n      }\n      /**\n      * @return All sheet name of workbook\n      */\n\n\n      LuckyFile.prototype.getSheetNameList = function () {\n        var workbookRelList = this.readXml.getElementsByTagName(\"Relationships/Relationship\", constant_1.workbookRels);\n\n        if (workbookRelList == null) {\n          return;\n        }\n\n        var regex = new RegExp(\"worksheets/[^/]*?.xml\");\n        var sheetNames = {};\n\n        for (var i = 0; i < workbookRelList.length; i++) {\n          var rel = workbookRelList[i],\n              attrList = rel.attributeList;\n          var id = attrList[\"Id\"],\n              target = attrList[\"Target\"];\n\n          if (regex.test(target)) {\n            if (target.startsWith('/xl')) {\n              sheetNames[id] = target.substr(1);\n            } else {\n              sheetNames[id] = \"xl/\" + target;\n            }\n          }\n        }\n\n        this.sheetNameList = sheetNames;\n      };\n      /**\n      * @param sheetName WorkSheet'name\n      * @return sheet file name and path in zip\n      */\n\n\n      LuckyFile.prototype.getSheetFileBysheetId = function (sheetId) {\n        // for(let i=0;i<this.sheetNameList.length;i++){\n        //     let sheetFileName = this.sheetNameList[i];\n        //     if(sheetFileName.indexOf(\"sheet\"+sheetId)>-1){\n        //         return sheetFileName;\n        //     }\n        // }\n        return this.sheetNameList[sheetId];\n      };\n      /**\n      * @return workBook information\n      */\n\n\n      LuckyFile.prototype.getWorkBookInfo = function () {\n        var Company = this.readXml.getElementsByTagName(\"Company\", constant_1.appFile);\n        var AppVersion = this.readXml.getElementsByTagName(\"AppVersion\", constant_1.appFile);\n        var creator = this.readXml.getElementsByTagName(\"dc:creator\", constant_1.coreFile);\n        var lastModifiedBy = this.readXml.getElementsByTagName(\"cp:lastModifiedBy\", constant_1.coreFile);\n        var created = this.readXml.getElementsByTagName(\"dcterms:created\", constant_1.coreFile);\n        var modified = this.readXml.getElementsByTagName(\"dcterms:modified\", constant_1.coreFile);\n        this.info = new LuckyBase_1.LuckyFileInfo();\n        this.info.name = this.fileName;\n        this.info.creator = creator.length > 0 ? creator[0].value : \"\";\n        this.info.lastmodifiedby = lastModifiedBy.length > 0 ? lastModifiedBy[0].value : \"\";\n        this.info.createdTime = created.length > 0 ? created[0].value : \"\";\n        this.info.modifiedTime = modified.length > 0 ? modified[0].value : \"\";\n        this.info.company = Company.length > 0 ? Company[0].value : \"\";\n        this.info.appversion = AppVersion.length > 0 ? AppVersion[0].value : \"\";\n      };\n      /**\n      * @return All sheet , include whole information\n      */\n\n\n      LuckyFile.prototype.getSheetsFull = function (isInitialCell) {\n        if (isInitialCell === void 0) {\n          isInitialCell = true;\n        }\n\n        var sheets = this.readXml.getElementsByTagName(\"sheets/sheet\", constant_1.workBookFile);\n        var sheetList = {};\n\n        for (var key in sheets) {\n          var sheet = sheets[key];\n          sheetList[sheet.attributeList.name] = sheet.attributeList[\"sheetId\"];\n        }\n\n        this.sheets = [];\n        var order = 0;\n\n        for (var key in sheets) {\n          var sheet = sheets[key];\n          var sheetName = sheet.attributeList.name;\n          var sheetId = sheet.attributeList[\"sheetId\"];\n          var rid = sheet.attributeList[\"r:id\"];\n          var sheetFile = this.getSheetFileBysheetId(rid);\n          var drawing = this.readXml.getElementsByTagName(\"worksheet/drawing\", sheetFile),\n              drawingFile = void 0,\n              drawingRelsFile = void 0;\n\n          if (drawing != null && drawing.length > 0) {\n            var attrList = drawing[0].attributeList;\n            var rid_1 = method_1.getXmlAttibute(attrList, \"r:id\", null);\n\n            if (rid_1 != null) {\n              drawingFile = this.getDrawingFile(rid_1, sheetFile);\n              drawingRelsFile = this.getDrawingRelsFile(drawingFile);\n            }\n          }\n\n          if (sheetFile != null) {\n            var sheet_1 = new LuckySheet_1.LuckySheet(sheetName, sheetId, order, isInitialCell, {\n              sheetFile: sheetFile,\n              readXml: this.readXml,\n              sheetList: sheetList,\n              styles: this.styles,\n              sharedStrings: this.sharedStrings,\n              calcChain: this.calcChain,\n              imageList: this.imageList,\n              drawingFile: drawingFile,\n              drawingRelsFile: drawingRelsFile\n            });\n            this.columnWidthSet = [];\n            this.rowHeightSet = [];\n            this.imagePositionCaculation(sheet_1);\n            this.sheets.push(sheet_1);\n            order++;\n          }\n        }\n      };\n\n      LuckyFile.prototype.extendArray = function (index, sets, def, hidden, lens) {\n        if (index < sets.length) {\n          return;\n        }\n\n        var startIndex = sets.length,\n            endIndex = index;\n        var allGap = 0;\n\n        if (startIndex > 0) {\n          allGap = sets[startIndex - 1];\n        } // else{\n        //     sets.push(0);\n        // }\n\n\n        for (var i = startIndex; i <= endIndex; i++) {\n          var gap = def,\n              istring = i.toString();\n\n          if (istring in hidden) {\n            gap = 0;\n          } else if (istring in lens) {\n            gap = lens[istring];\n          }\n\n          allGap += Math.round(gap + 1);\n          sets.push(allGap);\n        }\n      };\n\n      LuckyFile.prototype.imagePositionCaculation = function (sheet) {\n        var images = sheet.images,\n          defaultColWidth = sheet.defaultColWidth,\n          defaultRowHeight = sheet.defaultRowHeight;\n\n        var colhidden = sheet.config.colhidden || {};\n        var columnlen = sheet.config.columnlen || {};\n        var rowhidden = sheet.config.rowhidden || {};\n        var rowlen = sheet.config.rowlen || {};\n\n        for (var key in images) {\n          var imageObject = images[key]; // Image, luckyImage\n\n          var fromCol = imageObject.fromCol;\n          var fromColOff = imageObject.fromColOff || 0;\n          var fromRow = imageObject.fromRow;\n          var fromRowOff = imageObject.fromRowOff || 0;\n          var toCol = imageObject.toCol;\n          var toColOff = imageObject.toColOff || 0;\n          var toRow = imageObject.toRow;\n          var toRowOff = imageObject.toRowOff || 0;\n\n          var x_n = 0, y_n = 0;\n          var cx_n = 0, cy_n = 0;\n\n          // X position (Left)\n          if (fromCol >= this.columnWidthSet.length) {\n            this.extendArray(fromCol, this.columnWidthSet, defaultColWidth, colhidden, columnlen);\n          }\n\n          x_n = fromCol === 0 ? 0 : this.columnWidthSet[fromCol - 1];\n          x_n += fromColOff;\n\n          // Y position (Top)\n          if (fromRow >= this.rowHeightSet.length) {\n            this.extendArray(fromRow, this.rowHeightSet, defaultRowHeight, rowhidden, rowlen);\n          }\n\n          y_n = fromRow === 0 ? 0 : this.rowHeightSet[fromRow - 1];\n          y_n += fromRowOff;\n\n          // Width (cx_n) and Height (cy_n)\n          if (typeof toCol === \"number\" && typeof toRow === \"number\") {\n            // ✅ TwoCellAnchor case\n            if (toCol >= this.columnWidthSet.length) {\n              this.extendArray(toCol, this.columnWidthSet, defaultColWidth, colhidden, columnlen);\n            }\n\n            cx_n = toCol === 0 ? 0 : this.columnWidthSet[toCol - 1];\n            cx_n = cx_n + toColOff - x_n;\n\n            if (toRow >= this.rowHeightSet.length) {\n              this.extendArray(toRow, this.rowHeightSet, defaultRowHeight, rowhidden, rowlen);\n            }\n\n            cy_n = toRow === 0 ? 0 : this.rowHeightSet[toRow - 1];\n            cy_n = cy_n + toRowOff - y_n;\n          } else {\n            // ✅ OneCellAnchor case — use provided width/height (originWidth/originHeight)\n            cx_n = imageObject.originWidth || 0;\n            cy_n = imageObject.originHeight || 0;\n          }\n\n          // Update image object\n          imageObject.originWidth = cx_n;\n          imageObject.originHeight = cy_n;\n\n          imageObject.crop.height = cy_n;\n          imageObject.crop.width = cx_n;\n\n          imageObject[\"default\"].height = cy_n;\n          imageObject[\"default\"].left = x_n;\n          imageObject[\"default\"].top = y_n;\n          imageObject[\"default\"].width = cx_n;\n        }\n      };\n\n      function getTotalSheetHeight(sheet) {\n        const rowHeights = sheet.config?.rowlen || {};\n        const rowHidden = sheet.config?.rowhidden || {};\n        const defaultRowHeight = sheet.defaultRowHeight || 19;\n\n        const maxRow = Math.max(\n          ...Object.keys(rowHeights).map(Number),\n          sheet.data?.length || 0\n        );\n\n        let totalHeight = 0;\n        for (let row = 0; row < maxRow; row++) {\n          if (!rowHidden[row]) {\n            totalHeight += rowHeights[row] ?? defaultRowHeight;\n          }\n        }\n\n        return totalHeight;\n      }\n\n      function getTotalSheetWidth(sheet) {\n        const colWidths = sheet.config?.columnlen || {};\n        const colHidden = sheet.config?.colhidden || {};\n        const defaultColWidth = sheet.defaultColWidth || 100;\n\n        // Get the highest visible column index (either from columnlen or actual data)\n        const maxCol = Math.max(\n          ...Object.keys(colWidths).map(Number),\n          sheet.data?.[0]?.length || 0\n        );\n\n        let totalWidth = 0;\n        for (let col = 0; col < maxCol; col++) {\n          if (!colHidden[col]) {\n            totalWidth += colWidths[col] ?? defaultColWidth;\n          }\n        }\n\n        return totalWidth;\n      }\n\n      /**\n      * @return drawing file string\n      */\n\n\n      LuckyFile.prototype.getDrawingFile = function (rid, sheetFile) {\n        var sheetRelsPath = \"xl/worksheets/_rels/\";\n        var sheetFileArr = sheetFile.split(\"/\");\n        var sheetRelsName = sheetFileArr[sheetFileArr.length - 1];\n        var sheetRelsFile = sheetRelsPath + sheetRelsName + \".rels\";\n        var drawing = this.readXml.getElementsByTagName(\"Relationships/Relationship\", sheetRelsFile);\n\n        if (drawing.length > 0) {\n          for (var i = 0; i < drawing.length; i++) {\n            var relationship = drawing[i];\n            var attrList = relationship.attributeList;\n            var relationshipId = method_1.getXmlAttibute(attrList, \"Id\", null);\n\n            if (relationshipId == rid) {\n              var target = method_1.getXmlAttibute(attrList, \"Target\", null);\n\n              if (target != null) {\n                return target.replace(/\\.\\.\\//g, \"\");\n              }\n            }\n          }\n        }\n\n        return null;\n      };\n\n      LuckyFile.prototype.getDrawingRelsFile = function (drawingFile) {\n        var drawingRelsPath = \"xl/drawings/_rels/\";\n        var drawingFileArr = drawingFile.split(\"/\");\n        var drawingRelsName = drawingFileArr[drawingFileArr.length - 1];\n        var drawingRelsFile = drawingRelsPath + drawingRelsName + \".rels\";\n        return drawingRelsFile;\n      };\n      /**\n      * @return All sheet base information widthout cell and config\n      */\n\n\n      LuckyFile.prototype.getSheetsWithoutCell = function () {\n        this.getSheetsFull(false);\n      };\n      /**\n      * @return LuckySheet file json\n      */\n\n\n      LuckyFile.prototype.Parse = function () {\n        // let xml = this.readXml;\n        // for(let key in this.sheetNameList){\n        //     let sheetName=this.sheetNameList[key];\n        //     let sheetColumns = xml.getElementsByTagName(\"row/c/f\", sheetName);\n        //     console.log(sheetColumns);\n        // }\n        // return \"\";\n        this.getWorkBookInfo();\n        this.getSheetsFull(); // for(let i=0;i<this.sheets.length;i++){\n        //     let sheet = this.sheets[i];\n        //     let _borderInfo = sheet.config._borderInfo;\n        //     if(_borderInfo==null){\n        //         continue;\n        //     }\n        //     let _borderInfoKeys = Object.keys(_borderInfo);\n        //     _borderInfoKeys.sort();\n        //     for(let a=0;a<_borderInfoKeys.length;a++){\n        //         let key = parseInt(_borderInfoKeys[a]);\n        //         let b = _borderInfo[key];\n        //         if(b.cells.length==0){\n        //             continue;\n        //         }\n        //         if(sheet.config.borderInfo==null){\n        //             sheet.config.borderInfo = [];\n        //         }\n        //         sheet.config.borderInfo.push(b);\n        //     }\n        // }\n\n        return this.toJsonString(this);\n      };\n\n      LuckyFile.prototype.toJsonString = function (file) {\n        var LuckyOutPutFile = new LuckyBase_1.LuckyFileBase();\n        LuckyOutPutFile.info = file.info;\n        LuckyOutPutFile.sheets = [];\n\n        const decodeHtmlEntities =(str) =>{\n            const txt = document.createElement(\"textarea\");\n            txt.innerHTML = str;\n            return txt.value;\n        };\n\n        file.sheets.forEach(function (sheet) {\n          var sheetout = new LuckyBase_1.LuckySheetBase(); //let attrName = [\"name\",\"color\",\"config\",\"index\",\"status\",\"order\",\"row\",\"column\",\"luckysheet_select_save\",\"scrollLeft\",\"scrollTop\",\"zoomRatio\",\"showGridLines\",\"defaultColWidth\",\"defaultRowHeight\",\"celldata\",\"chart\",\"isPivotTable\",\"pivotTable\",\"luckysheet_conditionformat_save\",\"freezen\",\"calcChain\"];\n\n          if (sheet.name != null) {\n            sheetout.name = sheet.name;\n          }\n\n          if (sheet.color != null) {\n            sheetout.color = sheet.color;\n          }\n\n          if (sheet.config != null) {\n            sheetout.config = sheet.config; // if(sheetout.config._borderInfo!=null){\n            //     delete sheetout.config._borderInfo;\n            // }\n          }\n\n          if (sheet.index != null) {\n            sheetout.index = sheet.index;\n          }\n\n          if (sheet.status != null) {\n            sheetout.status = sheet.status;\n          }\n\n          if (sheet.order != null) {\n            sheetout.order = sheet.order;\n          }\n\n          if (sheet.row != null) {\n            sheetout.row = sheet.row;\n          }\n\n          if (sheet.column != null) {\n            sheetout.column = sheet.column;\n          }\n\n          if (sheet.luckysheet_select_save != null) {\n            sheetout.luckysheet_select_save = sheet.luckysheet_select_save;\n          }\n\n          if (sheet.scrollLeft != null) {\n            sheetout.scrollLeft = sheet.scrollLeft;\n          }\n\n          if (sheet.scrollTop != null) {\n            sheetout.scrollTop = sheet.scrollTop;\n          }\n\n          if (sheet.zoomRatio != null) {\n            sheetout.zoomRatio = sheet.zoomRatio;\n          }\n\n          if (sheet.showGridLines != null) {\n            sheetout.showGridLines = sheet.showGridLines;\n          }\n\n          if (sheet.defaultColWidth != null) {\n            sheetout.defaultColWidth = sheet.defaultColWidth;\n          }\n\n          if (sheet.defaultRowHeight != null) {\n            sheetout.defaultRowHeight = sheet.defaultRowHeight;\n          }\n\n          if (sheet.celldata != null) {\n            // sheetout.celldata = sheet.celldata;\n            sheetout.celldata = [];\n            sheet.celldata.forEach(function (cell) {\n              var cellout = new LuckyBase_1.LuckySheetCelldataBase();\n              cellout.r = cell.r;\n              cellout.c = cell.c;\n\n               // If value exists and is a string with HTML entities, decode it\n                if (cell.v?.v && typeof cell.v.v === \"string\" && /&[#a-zA-Z0-9]+;/.test(cell.v.v)) {\n                    cellout.v = {\n                        ...cell.v,\n                        v: decodeHtmlEntities(cell.v.v)\n                    };\n                } else {\n                    // Otherwise, assign the original v directly\n                    cellout.v = cell.v;\n                }\n\n              sheetout.celldata.push(cellout);\n            });\n          }\n\n          if (sheet.chart != null) {\n            sheetout.chart = sheet.chart;\n          }\n\n          if (sheet.isPivotTable != null) {\n            sheetout.isPivotTable = sheet.isPivotTable;\n          }\n\n          if (sheet.pivotTable != null) {\n            sheetout.pivotTable = sheet.pivotTable;\n          }\n\n          if (sheet.luckysheet_conditionformat_save != null) {\n            sheetout.luckysheet_conditionformat_save = sheet.luckysheet_conditionformat_save;\n          }\n\n          if (sheet.freezen != null) {\n            sheetout.freezen = sheet.freezen;\n          }\n\n          if (sheet.calcChain != null) {\n            sheetout.calcChain = sheet.calcChain;\n          }\n\n          if (sheet.images != null) {\n            sheetout.images = sheet.images;\n          }\n\n          LuckyOutPutFile.sheets.push(sheetout);\n        });\n        return JSON.stringify(LuckyOutPutFile);\n      };\n\n      return LuckyFile;\n    }(LuckyBase_1.LuckyFileBase);\n\n    exports.LuckyFile = LuckyFile;\n\n    },{\"../common/constant\":91,\"../common/method\":93,\"./LuckyBase\":85,\"./LuckyImage\":88,\"./LuckySheet\":89,\"./ReadXml\":90}],88:[function(require,module,exports){\n    \"use strict\";\n\n    var __extends = void 0 && (void 0).__extends || function () {\n      var _extendStatics = function extendStatics(d, b) {\n        _extendStatics = Object.setPrototypeOf || {\n          __proto__: []\n        } instanceof Array && function (d, b) {\n          d.__proto__ = b;\n        } || function (d, b) {\n          for (var p in b) {\n            if (b.hasOwnProperty(p)) d[p] = b[p];\n          }\n        };\n\n        return _extendStatics(d, b);\n      };\n\n      return function (d, b) {\n        _extendStatics(d, b);\n\n        function __() {\n          this.constructor = d;\n        }\n\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n      };\n    }();\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.ImageList = void 0;\n\n    var LuckyBase_1 = require(\"./LuckyBase\");\n\n    var emf_1 = require(\"../common/emf\");\n\n    var ImageList =\n    /** @class */\n    function () {\n      function ImageList(files) {\n        if (files == null) {\n          return;\n        }\n\n        this.images = {};\n\n        for (var fileKey in files) {\n          // let reg = new RegExp(\"xl/media/image1.png\", \"g\");\n          if (fileKey.indexOf(\"xl/media/\") > -1) {\n            var fileNameArr = fileKey.split(\".\");\n            var suffix = fileNameArr[fileNameArr.length - 1].toLowerCase();\n\n            if (suffix in {\n              \"png\": 1,\n              \"jpeg\": 1,\n              \"jpg\": 1,\n              \"gif\": 1,\n              \"bmp\": 1,\n              \"tif\": 1,\n              \"webp\": 1,\n              \"emf\": 1\n            }) {\n              if (suffix == \"emf\") {\n                var pNum = 0; // number of the page, that you want to render\n\n                var scale = 1; // the scale of the document\n\n                var wrt = new emf_1.ToContext2D(pNum, scale);\n                var inp, out, stt;\n                emf_1.FromEMF.K = [];\n                inp = emf_1.FromEMF.C;\n                out = emf_1.FromEMF.K;\n                stt = 4;\n\n                for (var p in inp) {\n                  out[inp[p]] = p.slice(stt);\n                }\n\n                emf_1.FromEMF.Parse(files[fileKey], wrt);\n                this.images[fileKey] = wrt.canvas.toDataURL(\"image/png\");\n              } else {\n                this.images[fileKey] = files[fileKey];\n              }\n            }\n          }\n        }\n      }\n\n      ImageList.prototype.getImageByName = function (pathName) {\n        if (pathName in this.images) {\n          var base64 = this.images[pathName];\n          return new Image(pathName, base64);\n        }\n\n        return null;\n      };\n\n      return ImageList;\n    }();\n\n    exports.ImageList = ImageList;\n\n    var Image =\n    /** @class */\n    function (_super) {\n      __extends(Image, _super);\n\n      function Image(pathName, base64) {\n        var _this = _super.call(this) || this;\n\n        _this.src = base64;\n        return _this;\n      }\n\n      Image.prototype.setDefault = function () {};\n\n      return Image;\n    }(LuckyBase_1.LuckyImageBase);\n\n    },{\"../common/emf\":92,\"./LuckyBase\":85}],89:[function(require,module,exports){\n    \"use strict\";\n\n    var __extends = void 0 && (void 0).__extends || function () {\n      var _extendStatics = function extendStatics(d, b) {\n        _extendStatics = Object.setPrototypeOf || {\n          __proto__: []\n        } instanceof Array && function (d, b) {\n          d.__proto__ = b;\n        } || function (d, b) {\n          for (var p in b) {\n            if (b.hasOwnProperty(p)) d[p] = b[p];\n          }\n        };\n\n        return _extendStatics(d, b);\n      };\n\n      return function (d, b) {\n        _extendStatics(d, b);\n\n        function __() {\n          this.constructor = d;\n        }\n\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n      };\n    }();\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.LuckySheet = void 0;\n\n    var LuckyCell_1 = require(\"./LuckyCell\");\n\n    var method_1 = require(\"../common/method\");\n\n    var ReadXml_1 = require(\"./ReadXml\");\n\n    var LuckyBase_1 = require(\"./LuckyBase\");\n\n    var LuckySheet =\n    /** @class */\n    function (_super) {\n      __extends(LuckySheet, _super);\n\n      function LuckySheet(sheetName, sheetId, sheetOrder, isInitialCell, allFileOption) {\n        if (isInitialCell === void 0) {\n          isInitialCell = false;\n        }\n\n        var _this = //Private\n        _super.call(this) || this;\n\n        _this.isInitialCell = isInitialCell;\n        _this.readXml = allFileOption.readXml;\n        _this.sheetFile = allFileOption.sheetFile;\n        _this.styles = allFileOption.styles;\n        _this.sharedStrings = allFileOption.sharedStrings;\n        _this.calcChainEles = allFileOption.calcChain;\n        _this.sheetList = allFileOption.sheetList;\n        _this.imageList = allFileOption.imageList; //Output\n\n        _this.name = sheetName;\n        _this.index = sheetId;\n        _this.order = sheetOrder.toString();\n        _this.config = new LuckyBase_1.LuckyConfig();\n        _this.celldata = [];\n        _this.mergeCells = _this.readXml.getElementsByTagName(\"mergeCells/mergeCell\", _this.sheetFile);\n        var clrScheme = _this.styles[\"clrScheme\"];\n\n        var sheetView = _this.readXml.getElementsByTagName(\"sheetViews/sheetView\", _this.sheetFile);\n\n        var showGridLines = \"1\",\n            tabSelected = \"0\",\n            zoomScale = \"100\",\n            activeCell = \"A1\";\n\n        if (sheetView.length > 0) {\n          var attrList = sheetView[0].attributeList;\n          showGridLines = method_1.getXmlAttibute(attrList, \"showGridLines\", \"1\");\n          tabSelected = method_1.getXmlAttibute(attrList, \"tabSelected\", \"0\");\n          zoomScale = method_1.getXmlAttibute(attrList, \"zoomScale\", \"100\"); // let colorId = getXmlAttibute(attrList, \"colorId\", \"0\");\n\n          var selections = sheetView[0].getInnerElements(\"selection\");\n\n          if (selections != null && selections.length > 0) {\n            activeCell = method_1.getXmlAttibute(selections[0].attributeList, \"activeCell\", \"A1\");\n            var range = method_1.getcellrange(activeCell, _this.sheetList, sheetId);\n            _this.luckysheet_select_save = [];\n\n            _this.luckysheet_select_save.push(range);\n          }\n        }\n\n        _this.showGridLines = showGridLines;\n        _this.status = tabSelected;\n        _this.zoomRatio = parseInt(zoomScale) / 100;\n\n        var tabColors = _this.readXml.getElementsByTagName(\"sheetPr/tabColor\", _this.sheetFile);\n\n        if (tabColors != null && tabColors.length > 0) {\n          var tabColor = tabColors[0],\n              attrList = tabColor.attributeList; // if(attrList.rgb!=null){\n\n          var tc = ReadXml_1.getColor(tabColor, _this.styles, \"b\");\n          _this.color = tc; // }\n        }\n\n        var sheetFormatPr = _this.readXml.getElementsByTagName(\"sheetFormatPr\", _this.sheetFile);\n\n        var defaultColWidth, defaultRowHeight;\n\n        if (sheetFormatPr.length > 0) {\n          var attrList = sheetFormatPr[0].attributeList;\n          defaultColWidth = method_1.getXmlAttibute(attrList, \"defaultColWidth\", \"9.21\");\n          defaultRowHeight = method_1.getXmlAttibute(attrList, \"defaultRowHeight\", \"19\");\n        }\n\n        _this.defaultColWidth = method_1.getColumnWidthPixel(parseFloat(defaultColWidth));\n        _this.defaultRowHeight = method_1.getRowHeightPixel(parseFloat(defaultRowHeight));\n\n        _this.generateConfigColumnLenAndHidden();\n\n        var cellOtherInfo = _this.generateConfigRowLenAndHiddenAddCell();\n\n        if (_this.formulaRefList != null) {\n          for (var key in _this.formulaRefList) {\n            var funclist = _this.formulaRefList[key];\n            var mainFunc = funclist[\"mainRef\"],\n                mainCellValue = mainFunc.cellValue;\n            var formulaTxt = mainFunc.fv;\n            var mainR = mainCellValue.r,\n                mainC = mainCellValue.c; // let refRange = getcellrange(ref);\n\n            for (var name_1 in funclist) {\n              if (name_1 == \"mainRef\") {\n                continue;\n              }\n\n              var funcValue = funclist[name_1],\n                  cellValue = funcValue.cellValue;\n\n              if (cellValue == null) {\n                continue;\n              }\n\n              var r = cellValue.r,\n                  c = cellValue.c;\n              var func = formulaTxt;\n              var offsetRow = r - mainR,\n                  offsetCol = c - mainC;\n\n              if (offsetRow > 0) {\n                func = \"=\" + method_1.fromulaRef.functionCopy(func, \"down\", offsetRow);\n              } else if (offsetRow < 0) {\n                func = \"=\" + method_1.fromulaRef.functionCopy(func, \"up\", Math.abs(offsetRow));\n              }\n\n              if (offsetCol > 0) {\n                func = \"=\" + method_1.fromulaRef.functionCopy(func, \"right\", offsetCol);\n              } else if (offsetCol < 0) {\n                func = \"=\" + method_1.fromulaRef.functionCopy(func, \"left\", Math.abs(offsetCol));\n              } // console.log(offsetRow, offsetCol, func);\n\n\n              cellValue.v.f = func;\n            }\n          }\n        }\n\n        if (_this.calcChain == null) {\n          _this.calcChain = [];\n        }\n\n        var formulaListExist = {};\n\n        for (var c = 0; c < _this.calcChainEles.length; c++) {\n          var calcChainEle = _this.calcChainEles[c],\n              attrList = calcChainEle.attributeList;\n\n          if (attrList.i != sheetId) {\n            continue;\n          }\n\n          var r = attrList.r,\n              i = attrList.i,\n              l = attrList.l,\n              s = attrList.s,\n              a = attrList.a,\n              t = attrList.t;\n          var range = method_1.getcellrange(r);\n          var chain = new LuckyBase_1.LuckysheetCalcChain();\n          chain.r = range.row[0];\n          chain.c = range.column[0];\n          chain.index = _this.index;\n\n          _this.calcChain.push(chain);\n\n          formulaListExist[\"r\" + r + \"c\" + c] = null;\n        } //There may be formulas that do not appear in calcChain\n\n\n        for (var key in cellOtherInfo.formulaList) {\n          if (!(key in formulaListExist)) {\n            var formulaListItem = cellOtherInfo.formulaList[key];\n            var chain = new LuckyBase_1.LuckysheetCalcChain();\n            chain.r = formulaListItem.r;\n            chain.c = formulaListItem.c;\n            chain.index = _this.index;\n\n            _this.calcChain.push(chain);\n          }\n        }\n\n        if (_this.mergeCells != null) {\n          for (var i = 0; i < _this.mergeCells.length; i++) {\n            var merge = _this.mergeCells[i],\n                attrList = merge.attributeList;\n            var ref = attrList.ref;\n\n            if (ref == null) {\n              continue;\n            }\n\n            var range = method_1.getcellrange(ref, _this.sheetList, sheetId);\n            var mergeValue = new LuckyBase_1.LuckySheetConfigMerge();\n            mergeValue.r = range.row[0];\n            mergeValue.c = range.column[0];\n            mergeValue.rs = range.row[1] - range.row[0] + 1;\n            mergeValue.cs = range.column[1] - range.column[0] + 1;\n\n            if (_this.config.merge == null) {\n              _this.config.merge = {};\n            }\n\n            _this.config.merge[range.row[0] + \"_\" + range.column[0]] = mergeValue;\n          }\n        }\n\n        var drawingFile = allFileOption.drawingFile,\n            drawingRelsFile = allFileOption.drawingRelsFile;\n\n        if (drawingFile != null && drawingRelsFile != null) {\n          var twoCellAnchors = _this.readXml.getElementsByTagName(\"xdr:twoCellAnchor\", drawingFile);\n          if (twoCellAnchors != null && twoCellAnchors.length > 0) {\n            for (var i = 0; i < twoCellAnchors.length; i++) {\n              var twoCellAnchor = twoCellAnchors[i];\n              var editAs = method_1.getXmlAttibute(twoCellAnchor.attributeList, \"editAs\", \"twoCell\");\n              var xdrFroms = twoCellAnchor.getInnerElements(\"xdr:from\"),\n                  xdrTos = twoCellAnchor.getInnerElements(\"xdr:to\");\n              var xdr_blipfills = twoCellAnchor.getInnerElements(\"a:blip\");\n\n              if (xdrFroms != null && xdr_blipfills != null && xdrFroms.length > 0 && xdr_blipfills.length > 0) {\n                var xdrFrom = xdrFroms[0],\n                    xdrTo = xdrTos[0],\n                    xdr_blipfill = xdr_blipfills[0];\n                var rembed = method_1.getXmlAttibute(xdr_blipfill.attributeList, \"r:embed\", null);\n\n                var imageObject = _this.getBase64ByRid(rembed, drawingRelsFile);\n\n                var x_n = 0,\n                    y_n = 0;\n                var cx_n = 0,\n                    cy_n = 0;\n                imageObject.fromCol = _this.getXdrValue(xdrFrom.getInnerElements(\"xdr:col\"));\n                imageObject.fromColOff = method_1.getPxByEMUs(_this.getXdrValue(xdrFrom.getInnerElements(\"xdr:colOff\")));\n                imageObject.fromRow = _this.getXdrValue(xdrFrom.getInnerElements(\"xdr:row\"));\n                imageObject.fromRowOff = method_1.getPxByEMUs(_this.getXdrValue(xdrFrom.getInnerElements(\"xdr:rowOff\")));\n                imageObject.toCol = _this.getXdrValue(xdrTo.getInnerElements(\"xdr:col\"));\n                imageObject.toColOff = method_1.getPxByEMUs(_this.getXdrValue(xdrTo.getInnerElements(\"xdr:colOff\")));\n                imageObject.toRow = _this.getXdrValue(xdrTo.getInnerElements(\"xdr:row\"));\n                imageObject.toRowOff = method_1.getPxByEMUs(_this.getXdrValue(xdrTo.getInnerElements(\"xdr:rowOff\")));\n                imageObject.originWidth = cx_n;\n                imageObject.originHeight = cy_n;\n                imageObject.context='two-cell-anchor';\n\n                if (editAs == \"absolute\") {\n                  imageObject.type = \"3\";\n                } else if (editAs == \"oneCell\") {\n                  imageObject.type = \"2\";\n                } else {\n                  imageObject.type = \"1\";\n                }\n\n                imageObject.isFixedPos = false;\n                imageObject.fixedLeft = 0;\n                imageObject.fixedTop = 0;\n                var imageBorder = {\n                  color: \"#000\",\n                  radius: 0,\n                  style: \"solid\",\n                  width: 0\n                };\n                imageObject.border = imageBorder;\n                var imageCrop = {\n                  height: cy_n,\n                  offsetLeft: 0,\n                  offsetTop: 0,\n                  width: cx_n\n                };\n                imageObject.crop = imageCrop;\n                var imageDefault = {\n                  height: cy_n,\n                  left: x_n,\n                  top: y_n,\n                  width: cx_n\n                };\n                imageObject[\"default\"] = imageDefault;\n\n                if (_this.images == null) {\n                  _this.images = {};\n                }\n\n                _this.images[method_1.generateRandomIndex(\"image\")] = imageObject;\n              }\n            }\n          }\n          var oneCellAnchors = _this.readXml.getElementsByTagName(\"xdr:oneCellAnchor\", drawingFile);\n\n          if (oneCellAnchors != null && oneCellAnchors.length > 0) {\n              for (var i = 0; i < oneCellAnchors.length; i++) {\n                  var oneCellAnchor = oneCellAnchors[i];\n\n                  var xdrFroms = oneCellAnchor.getInnerElements(\"xdr:from\");\n                  var xdr_blipfills = oneCellAnchor.getInnerElements(\"a:blip\");\n                  var xdr_exts = oneCellAnchor.getInnerElements(\"xdr:ext\");\n\n                  if (xdrFroms && xdr_blipfills && xdrFroms.length > 0 && xdr_blipfills.length > 0) {\n                      var xdrFrom = xdrFroms[0];\n                      var xdr_blipfill = xdr_blipfills[0];\n\n                      // Get image ID from <a:blip r:embed=\"rId1\"/>\n                      var rembed = method_1.getXmlAttibute(xdr_blipfill.attributeList, \"r:embed\", null);\n                      var imageObject = _this.getBase64ByRid(rembed, drawingRelsFile);\n\n                      // Extract original size from <xdr:ext cx=\"...\" cy=\"...\"/>\n                      var cx_n = 0, cy_n = 0;\n                      if (xdr_exts && xdr_exts.length > 0) {\n                          var cx = method_1.getXmlAttibute(xdr_exts[0].attributeList, \"cx\", \"0\");\n                          var cy = method_1.getXmlAttibute(xdr_exts[0].attributeList, \"cy\", \"0\");\n                          cx_n = method_1.getPxByEMUs(cx);\n                          cy_n = method_1.getPxByEMUs(cy);\n                      }\n\n                      // Extract position from <xdr:from>\n                      imageObject.fromCol = _this.getXdrValue(xdrFrom.getInnerElements(\"xdr:col\"));\n                      imageObject.fromColOff = method_1.getPxByEMUs(_this.getXdrValue(xdrFrom.getInnerElements(\"xdr:colOff\")));\n                      imageObject.fromRow = _this.getXdrValue(xdrFrom.getInnerElements(\"xdr:row\"));\n                      imageObject.fromRowOff = method_1.getPxByEMUs(_this.getXdrValue(xdrFrom.getInnerElements(\"xdr:rowOff\")));\n                      // Assign dimensions\n                      imageObject.originWidth = cx_n;\n                      imageObject.originHeight = cy_n;\n\n                      // Set type & position flags\n                      imageObject.type = \"2\"; // oneCellAnchor\n                      imageObject.isFixedPos = false;\n                      imageObject.fixedLeft = 0;\n                      imageObject.fixedTop = 0;\n                      imageObject.context='one-cell-anchor';\n\n                      // Style & cropping\n                      imageObject.border = {\n                          color: \"#000\",\n                          radius: 0,\n                          style: \"solid\",\n                          width: 0\n                      };\n\n                      imageObject.crop = {\n                          height: cy_n,\n                          offsetLeft: 0,\n                          offsetTop: 0,\n                          width: cx_n\n                      };\n\n                      imageObject[\"default\"] = {\n                          height: cy_n,\n                          left: 0,\n                          top: 0,\n                          width: cx_n\n                      };\n\n                      // Store in _this.images\n                      if (!_this.images) {\n                          _this.images = {};\n                      }\n\n                      _this.images[method_1.generateRandomIndex(\"image\")] = imageObject;\n                  }\n              }\n          }\n        }\n\n        return _this;\n      }\n\n      LuckySheet.prototype.getXdrValue = function (ele) {\n        if (ele == null || ele.length == 0) {\n          return null;\n        }\n\n        return parseInt(ele[0].value);\n      };\n\n      LuckySheet.prototype.getBase64ByRid = function (rid, drawingRelsFile) {\n        var Relationships = this.readXml.getElementsByTagName(\"Relationships/Relationship\", drawingRelsFile);\n\n        if (Relationships != null && Relationships.length > 0) {\n          for (var i = 0; i < Relationships.length; i++) {\n            var Relationship = Relationships[i];\n            var attrList = Relationship.attributeList;\n            var Id = method_1.getXmlAttibute(attrList, \"Id\", null);\n            var src = method_1.getXmlAttibute(attrList, \"Target\", null);\n\n            if (Id == rid) {\n              src = src.replace(/\\.\\.\\//g, \"\");\n              src = \"xl/\" + src;\n              var imgage = this.imageList.getImageByName(src);\n              return imgage;\n            }\n          }\n        }\n\n        return null;\n      };\n      /**\n      * @desc This will convert cols/col to luckysheet config of column'width\n      */\n\n\n      LuckySheet.prototype.generateConfigColumnLenAndHidden = function () {\n        var cols = this.readXml.getElementsByTagName(\"cols/col\", this.sheetFile);\n\n        for (var i = 0; i < cols.length; i++) {\n          var col = cols[i],\n              attrList = col.attributeList;\n          var min = method_1.getXmlAttibute(attrList, \"min\", null);\n          var max = method_1.getXmlAttibute(attrList, \"max\", null);\n          var width = method_1.getXmlAttibute(attrList, \"width\", null);\n          var hidden = method_1.getXmlAttibute(attrList, \"hidden\", null);\n          var customWidth = method_1.getXmlAttibute(attrList, \"customWidth\", null);\n\n          if (min == null || max == null) {\n            continue;\n          }\n\n          var minNum = parseInt(min) - 1,\n              maxNum = parseInt(max) - 1,\n              widthNum = parseFloat(width);\n\n          for (var m = minNum; m <= maxNum; m++) {\n            if (width != null) {\n              if (this.config.columnlen == null) {\n                this.config.columnlen = {};\n              }\n\n              this.config.columnlen[m] = method_1.getColumnWidthPixel(widthNum);\n            }\n\n            if (hidden == \"1\") {\n              if (this.config.colhidden == null) {\n                this.config.colhidden = {};\n              }\n\n              this.config.colhidden[m] = 0;\n\n              if (this.config.columnlen) {\n                delete this.config.columnlen[m];\n              }\n            }\n\n            if (customWidth != null) {\n              if (this.config.customWidth == null) {\n                this.config.customWidth = {};\n              }\n\n              this.config.customWidth[m] = 1;\n            }\n          }\n        }\n      };\n      /**\n      * @desc This will convert cols/col to luckysheet config of column'width\n      */\n\n\n      LuckySheet.prototype.generateConfigRowLenAndHiddenAddCell = function () {\n        var rows = this.readXml.getElementsByTagName(\"sheetData/row\", this.sheetFile);\n        var cellOtherInfo = {};\n        var formulaList = {};\n        cellOtherInfo.formulaList = formulaList;\n\n        for (var i = 0; i < rows.length; i++) {\n          var row = rows[i],\n              attrList = row.attributeList;\n          var rowNo = method_1.getXmlAttibute(attrList, \"r\", null);\n          var height = method_1.getXmlAttibute(attrList, \"ht\", null);\n          var hidden = method_1.getXmlAttibute(attrList, \"hidden\", null);\n          var customHeight = method_1.getXmlAttibute(attrList, \"customHeight\", null);\n\n          if (rowNo == null) {\n            continue;\n          }\n\n          var rowNoNum = parseInt(rowNo) - 1;\n\n          if (height != null) {\n            var heightNum = parseFloat(height);\n\n            if (this.config.rowlen == null) {\n              this.config.rowlen = {};\n            }\n\n            this.config.rowlen[rowNoNum] = method_1.getRowHeightPixel(heightNum);\n          }\n\n          if (hidden == \"1\") {\n            if (this.config.rowhidden == null) {\n              this.config.rowhidden = {};\n            }\n\n            this.config.rowhidden[rowNoNum] = 0;\n\n            if (this.config.rowlen) {\n              delete this.config.rowlen[rowNoNum];\n            }\n          }\n\n          if (customHeight != null) {\n            if (this.config.customHeight == null) {\n              this.config.customHeight = {};\n            }\n\n            this.config.customHeight[rowNoNum] = 1;\n          }\n\n          if (this.isInitialCell) {\n            var cells = row.getInnerElements(\"c\");\n\n            for (var key in cells) {\n              var cell = cells[key];\n              var cellValue = new LuckyCell_1.LuckySheetCelldata(cell, this.styles, this.sharedStrings, this.mergeCells, this.sheetFile, this.readXml);\n\n              if (cellValue._borderObject != null) {\n                if (this.config.borderInfo == null) {\n                  this.config.borderInfo = [];\n                }\n\n                this.config.borderInfo.push(cellValue._borderObject);\n                delete cellValue._borderObject;\n              }\n\n              if (cellValue._formulaType == \"shared\") {\n                if (this.formulaRefList == null) {\n                  this.formulaRefList = {};\n                }\n\n                if (this.formulaRefList[cellValue._formulaSi] == null) {\n                  this.formulaRefList[cellValue._formulaSi] = {};\n                }\n\n                var fv = void 0;\n\n                if (cellValue.v != null) {\n                  fv = cellValue.v.f;\n                }\n\n                var refValue = {\n                  t: cellValue._formulaType,\n                  ref: cellValue._fomulaRef,\n                  si: cellValue._formulaSi,\n                  fv: fv,\n                  cellValue: cellValue\n                };\n\n                if (cellValue._fomulaRef != null) {\n                  this.formulaRefList[cellValue._formulaSi][\"mainRef\"] = refValue;\n                } else {\n                  this.formulaRefList[cellValue._formulaSi][cellValue.r + \"_\" + cellValue.c] = refValue;\n                } // console.log(refValue, this.formulaRefList);\n\n              } //There may be formulas that do not appear in calcChain\n\n\n              if (cellValue.v != null && cellValue.v.f != null) {\n                var formulaCell = {\n                  r: cellValue.r,\n                  c: cellValue.c\n                };\n                cellOtherInfo.formulaList[\"r\" + cellValue.r + \"c\" + cellValue.c] = formulaCell;\n              }\n\n              this.celldata.push(cellValue);\n            }\n          }\n        }\n\n        return cellOtherInfo;\n      };\n\n      return LuckySheet;\n    }(LuckyBase_1.LuckySheetBase);\n\n    exports.LuckySheet = LuckySheet;\n\n    },{\"../common/method\":93,\"./LuckyBase\":85,\"./LuckyCell\":86,\"./ReadXml\":90}],90:[function(require,module,exports){\n    \"use strict\";\n\n    var __extends = void 0 && (void 0).__extends || function () {\n      var _extendStatics = function extendStatics(d, b) {\n        _extendStatics = Object.setPrototypeOf || {\n          __proto__: []\n        } instanceof Array && function (d, b) {\n          d.__proto__ = b;\n        } || function (d, b) {\n          for (var p in b) {\n            if (b.hasOwnProperty(p)) d[p] = b[p];\n          }\n        };\n\n        return _extendStatics(d, b);\n      };\n\n      return function (d, b) {\n        _extendStatics(d, b);\n\n        function __() {\n          this.constructor = d;\n        }\n\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n      };\n    }();\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.getlineStringAttr = exports.getColor = exports.Element = exports.ReadXml = void 0;\n\n    var constant_1 = require(\"../common/constant\");\n\n    var method_1 = require(\"../common/method\");\n\n    var xmloperation =\n    /** @class */\n    function () {\n      function xmloperation() {}\n      /**\n      * @param tag Search xml tag name , div,title etc.\n      * @param file Xml string\n      * @return Xml element string\n      */\n\n\n      xmloperation.prototype.getElementsByOneTag = function (tag, file) {\n        //<a:[^/>: ]+?>.*?</a:[^/>: ]+?>\n        var readTagReg;\n\n        if (tag.indexOf(\"|\") > -1) {\n          var tags = tag.split(\"|\"),\n              tagsRegTxt = \"\";\n\n          for (var i = 0; i < tags.length; i++) {\n            var t = tags[i];\n            tagsRegTxt += \"|<\" + t + \" [^>]+?[^/]>[\\\\s\\\\S]*?</\" + t + \">|<\" + t + \" [^>]+?/>|<\" + t + \">[\\\\s\\\\S]*?</\" + t + \">|<\" + t + \"/>\";\n          }\n\n          tagsRegTxt = tagsRegTxt.substr(1, tagsRegTxt.length);\n          readTagReg = new RegExp(tagsRegTxt, \"g\");\n        } else {\n          readTagReg = new RegExp(\"<\" + tag + \" [^>]+?[^/]>[\\\\s\\\\S]*?</\" + tag + \">|<\" + tag + \" [^>]+?/>|<\" + tag + \">[\\\\s\\\\S]*?</\" + tag + \">|<\" + tag + \"/>\", \"g\");\n        }\n\n        var ret = file.match(readTagReg);\n\n        if (ret == null) {\n          return [];\n        } else {\n          return ret;\n        }\n      };\n\n      return xmloperation;\n    }();\n\n    var ReadXml =\n    /** @class */\n    function (_super) {\n      __extends(ReadXml, _super);\n\n      function ReadXml(files) {\n        var _this = _super.call(this) || this;\n\n        _this.originFile = files;\n        return _this;\n      }\n      /**\n      * @param path Search xml tag group , div,title etc.\n      * @param fileName One of uploadfileList, uploadfileList is file group, {key:value}\n      * @return Xml element calss\n      */\n\n\n      ReadXml.prototype.getElementsByTagName = function (path, fileName) {\n        var file = this.getFileByName(fileName);\n        var pathArr = path.split(\"/\"),\n            ret;\n\n        for (var key in pathArr) {\n          var path_1 = pathArr[key];\n\n          if (ret == undefined) {\n            ret = this.getElementsByOneTag(path_1, file);\n          } else {\n            if (ret instanceof Array) {\n              var items = [];\n\n              for (var key_1 in ret) {\n                var item = ret[key_1];\n                items = items.concat(this.getElementsByOneTag(path_1, item));\n              }\n\n              ret = items;\n            } else {\n              ret = this.getElementsByOneTag(path_1, ret);\n            }\n          }\n        }\n\n        var elements = [];\n\n        for (var i = 0; i < ret.length; i++) {\n          var ele = new Element(ret[i]);\n          elements.push(ele);\n        }\n\n        return elements;\n      };\n      /**\n      * @param name One of uploadfileList's name, search for file by this parameter\n      * @retrun Select a file from uploadfileList\n      */\n\n\n      ReadXml.prototype.getFileByName = function (name) {\n        for (var fileKey in this.originFile) {\n          if (fileKey.indexOf(name) > -1) {\n            return this.originFile[fileKey];\n          }\n        }\n\n        return \"\";\n      };\n\n      return ReadXml;\n    }(xmloperation);\n\n    exports.ReadXml = ReadXml;\n\n    var Element =\n    /** @class */\n    function (_super) {\n      __extends(Element, _super);\n\n      function Element(str) {\n        var _this = _super.call(this) || this;\n\n        _this.elementString = str;\n\n        _this.setValue();\n\n        var readAttrReg = new RegExp('[a-zA-Z0-9_:]*?=\".*?\"', \"g\");\n\n        var attrList = _this.container.match(readAttrReg);\n\n        _this.attributeList = {};\n\n        if (attrList != null) {\n          for (var key in attrList) {\n            var attrFull = attrList[key]; // let al= attrFull.split(\"=\");\n\n            if (attrFull.length == 0) {\n              continue;\n            }\n\n            var attrKey = attrFull.substr(0, attrFull.indexOf('='));\n            var attrValue = attrFull.substr(attrFull.indexOf('=') + 1);\n\n            if (attrKey == null || attrValue == null || attrKey.length == 0 || attrValue.length == 0) {\n              continue;\n            }\n\n            _this.attributeList[attrKey] = attrValue.substr(1, attrValue.length - 2);\n          }\n        }\n\n        return _this;\n      }\n      /**\n      * @param name Get attribute by key in element\n      * @return Single attribute\n      */\n\n\n      Element.prototype.get = function (name) {\n        return this.attributeList[name];\n      };\n      /**\n      * @param tag Get elements by tag in elementString\n      * @return Element group\n      */\n\n\n      Element.prototype.getInnerElements = function (tag) {\n        var ret = this.getElementsByOneTag(tag, this.elementString);\n        var elements = [];\n\n        for (var i = 0; i < ret.length; i++) {\n          var ele = new Element(ret[i]);\n          elements.push(ele);\n        }\n\n        if (elements.length == 0) {\n          return null;\n        }\n\n        return elements;\n      };\n      /**\n      * @desc get xml dom value and container, <container>value</container>\n      */\n\n\n      Element.prototype.setValue = function () {\n        var str = this.elementString;\n\n        if (str.substr(str.length - 2, 2) == \"/>\") {\n          this.value = \"\";\n          this.container = str;\n        } else {\n          var firstTag = this.getFirstTag();\n          var firstTagReg = new RegExp(\"(<\" + firstTag + \" [^>]+?[^/]>)([\\\\s\\\\S]*?)</\" + firstTag + \">|(<\" + firstTag + \">)([\\\\s\\\\S]*?)</\" + firstTag + \">\", \"g\");\n          var result = firstTagReg.exec(str);\n\n          if (result != null) {\n            if (result[1] != null) {\n              this.container = result[1];\n              this.value = result[2];\n            } else {\n              this.container = result[3];\n              this.value = result[4];\n            }\n          }\n        }\n      };\n      /**\n      * @desc get xml dom first tag, <a><b></b></a>, get a\n      */\n\n\n      Element.prototype.getFirstTag = function () {\n        var str = this.elementString;\n        var firstTag = str.substr(0, str.indexOf(' '));\n\n        if (firstTag == \"\" || firstTag.indexOf(\">\") > -1) {\n          firstTag = str.substr(0, str.indexOf('>'));\n        }\n\n        firstTag = firstTag.substr(1, firstTag.length);\n        return firstTag;\n      };\n\n      return Element;\n    }(xmloperation);\n\n    exports.Element = Element;\n\n    function combineIndexedColor(indexedColorsInner, indexedColors) {\n      var ret = {};\n\n      if (indexedColorsInner == null || indexedColorsInner.length == 0) {\n        return indexedColors;\n      }\n\n      for (var key in indexedColors) {\n        var value = indexedColors[key],\n            kn = parseInt(key);\n        var inner = indexedColorsInner[kn];\n\n        if (inner == null) {\n          ret[key] = value;\n        } else {\n          var rgb = inner.attributeList.rgb;\n          ret[key] = rgb;\n        }\n      }\n\n      return ret;\n    } //clrScheme:Element[]\n\n\n    function getColor(color, styles, type) {\n      if (type === void 0) {\n        type = \"g\";\n      }\n\n      var attrList = color.attributeList;\n      var clrScheme = styles[\"clrScheme\"];\n      var indexedColorsInner = styles[\"indexedColors\"];\n      var mruColorsInner = styles[\"mruColors\"];\n      var indexedColorsList = combineIndexedColor(indexedColorsInner, constant_1.indexedColors);\n      var indexed = attrList.indexed,\n          rgb = attrList.rgb,\n          theme = attrList.theme,\n          tint = attrList.tint;\n      var bg;\n\n      if (indexed != null) {\n        var indexedNum = parseInt(indexed);\n        bg = indexedColorsList[indexedNum];\n\n        if (bg != null) {\n          bg = bg.substring(bg.length - 6, bg.length);\n          bg = \"#\" + bg;\n        }\n      } else if (rgb != null) {\n        rgb = rgb.substring(rgb.length - 6, rgb.length);\n        bg = \"#\" + rgb;\n      } else if (theme != null) {\n        var themeNum = parseInt(theme);\n\n        if (themeNum == 0) {\n          themeNum = 1;\n        } else if (themeNum == 1) {\n          themeNum = 0;\n        } else if (themeNum == 2) {\n          themeNum = 3;\n        } else if (themeNum == 3) {\n          themeNum = 2;\n        }\n\n        var clrSchemeElement = clrScheme[themeNum];\n\n        if (clrSchemeElement != null) {\n          var clrs = clrSchemeElement.getInnerElements(\"a:sysClr|a:srgbClr\");\n\n          if (clrs != null) {\n            var clr = clrs[0];\n            var clrAttrList = clr.attributeList; // console.log(clr.container, );\n\n            if (clr.container.indexOf(\"sysClr\") > -1) {\n              // if(type==\"g\" && clrAttrList.val==\"windowText\"){\n              //     bg = null;\n              // }\n              // else if((type==\"t\" || type==\"b\") && clrAttrList.val==\"window\"){\n              //     bg = null;\n              // }\n              // else\n              if (clrAttrList.lastClr != null) {\n                bg = \"#\" + clrAttrList.lastClr;\n              } else if (clrAttrList.val != null) {\n                bg = \"#\" + clrAttrList.val;\n              }\n            } else if (clr.container.indexOf(\"srgbClr\") > -1) {\n              // console.log(clrAttrList.val);\n              bg = \"#\" + clrAttrList.val;\n            }\n          }\n        }\n      }\n\n      if (tint != null) {\n        var tintNum = parseFloat(tint);\n\n        if (bg != null) {\n          bg = method_1.LightenDarkenColor(bg, tintNum);\n        }\n      }\n\n      return bg;\n    }\n\n    exports.getColor = getColor;\n    /**\n     * @dom xml attribute object\n     * @attr attribute name\n     * @d if attribute is null, return default value\n     * @return attribute value\n    */\n\n    function getlineStringAttr(frpr, attr) {\n      var attrEle = frpr.getInnerElements(attr),\n          value;\n\n      if (attrEle != null && attrEle.length > 0) {\n        if (attr == \"b\" || attr == \"i\" || attr == \"strike\") {\n          value = \"1\";\n        } else if (attr == \"u\") {\n          var v = attrEle[0].attributeList.val;\n\n          if (v == \"double\") {\n            value = \"2\";\n          } else if (v == \"singleAccounting\") {\n            value = \"3\";\n          } else if (v == \"doubleAccounting\") {\n            value = \"4\";\n          } else {\n            value = \"1\";\n          }\n        } else if (attr == \"vertAlign\") {\n          var v = attrEle[0].attributeList.val;\n\n          if (v == \"subscript\") {\n            value = \"1\";\n          } else if (v == \"superscript\") {\n            value = \"2\";\n          }\n        } else {\n          value = attrEle[0].attributeList.val;\n        }\n      }\n\n      return value;\n    }\n\n    exports.getlineStringAttr = getlineStringAttr;\n\n    },{\"../common/constant\":91,\"../common/method\":93}],91:[function(require,module,exports){\n    \"use strict\";\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.fontFamilys = exports.borderTypes = exports.OEM_CHARSET = exports.indexedColors = exports.numFmtDefault = exports.BuiltInCellStyles = exports.ST_CellType = exports.workbookRels = exports.theme1File = exports.worksheetFilePath = exports.sharedStringsFile = exports.stylesFile = exports.calcChainFile = exports.workBookFile = exports.contentTypesFile = exports.appFile = exports.coreFile = exports.columeHeader_word_index = exports.columeHeader_word = void 0;\n    exports.columeHeader_word = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];\n    exports.columeHeader_word_index = {\n      'A': 0,\n      'B': 1,\n      'C': 2,\n      'D': 3,\n      'E': 4,\n      'F': 5,\n      'G': 6,\n      'H': 7,\n      'I': 8,\n      'J': 9,\n      'K': 10,\n      'L': 11,\n      'M': 12,\n      'N': 13,\n      'O': 14,\n      'P': 15,\n      'Q': 16,\n      'R': 17,\n      'S': 18,\n      'T': 19,\n      'U': 20,\n      'V': 21,\n      'W': 22,\n      'X': 23,\n      'Y': 24,\n      'Z': 25\n    };\n    exports.coreFile = \"docProps/core.xml\";\n    exports.appFile = \"docProps/app.xml\";\n    exports.contentTypesFile = \"[Content_Types].xml\";\n    exports.workBookFile = \"xl/workbook.xml\";\n    exports.calcChainFile = \"xl/calcChain.xml\";\n    exports.stylesFile = \"xl/styles.xml\";\n    exports.sharedStringsFile = \"xl/sharedStrings.xml\";\n    exports.worksheetFilePath = \"xl/worksheets/\";\n    exports.theme1File = \"xl/theme/theme1.xml\";\n    exports.workbookRels = \"xl/_rels/workbook.xml.rels\"; //Excel Built-In cell type\n\n    exports.ST_CellType = {\n      \"Boolean\": \"b\",\n      \"Date\": \"d\",\n      \"Error\": \"e\",\n      \"InlineString\": \"inlineStr\",\n      \"Number\": \"n\",\n      \"SharedString\": \"s\",\n      \"String\": \"str\"\n    }; //Excel Built-In cell style\n\n    exports.BuiltInCellStyles = {\n      \"0\": \"Normal\"\n    };\n    exports.numFmtDefault = {\n      \"0\": 'General',\n      \"1\": '0',\n      \"2\": '0.00',\n      \"3\": '#,##0',\n      \"4\": '#,##0.00',\n      \"9\": '0%',\n      \"10\": '0.00%',\n      \"11\": '0.00E+00',\n      \"12\": '# ?/?',\n      \"13\": '# ??/??',\n      \"14\": 'm/d/yy',\n      \"15\": 'd-mmm-yy',\n      \"16\": 'd-mmm',\n      \"17\": 'mmm-yy',\n      \"18\": 'h:mm AM/PM',\n      \"19\": 'h:mm:ss AM/PM',\n      \"20\": 'h:mm',\n      \"21\": 'h:mm:ss',\n      \"22\": 'm/d/yy h:mm',\n      \"37\": '#,##0 ;(#,##0)',\n      \"38\": '#,##0 ;[Red](#,##0)',\n      \"39\": '#,##0.00;(#,##0.00)',\n      \"40\": '#,##0.00;[Red](#,##0.00)',\n      \"45\": 'mm:ss',\n      \"46\": '[h]:mm:ss',\n      \"47\": 'mmss.0',\n      \"48\": '##0.0E+0',\n      \"49\": '@'\n    };\n    exports.indexedColors = {\n      \"0\": '00000000',\n      \"1\": '00FFFFFF',\n      \"2\": '00FF0000',\n      \"3\": '0000FF00',\n      \"4\": '000000FF',\n      \"5\": '00FFFF00',\n      \"6\": '00FF00FF',\n      \"7\": '0000FFFF',\n      \"8\": '00000000',\n      \"9\": '00FFFFFF',\n      \"10\": '00FF0000',\n      \"11\": '0000FF00',\n      \"12\": '000000FF',\n      \"13\": '00FFFF00',\n      \"14\": '00FF00FF',\n      \"15\": '0000FFFF',\n      \"16\": '00800000',\n      \"17\": '00008000',\n      \"18\": '00000080',\n      \"19\": '00808000',\n      \"20\": '00800080',\n      \"21\": '00008080',\n      \"22\": '00C0C0C0',\n      \"23\": '00808080',\n      \"24\": '009999FF',\n      \"25\": '00993366',\n      \"26\": '00FFFFCC',\n      \"27\": '00CCFFFF',\n      \"28\": '00660066',\n      \"29\": '00FF8080',\n      \"30\": '000066CC',\n      \"31\": '00CCCCFF',\n      \"32\": '00000080',\n      \"33\": '00FF00FF',\n      \"34\": '00FFFF00',\n      \"35\": '0000FFFF',\n      \"36\": '00800080',\n      \"37\": '00800000',\n      \"38\": '00008080',\n      \"39\": '000000FF',\n      \"40\": '0000CCFF',\n      \"41\": '00CCFFFF',\n      \"42\": '00CCFFCC',\n      \"43\": '00FFFF99',\n      \"44\": '0099CCFF',\n      \"45\": '00FF99CC',\n      \"46\": '00CC99FF',\n      \"47\": '00FFCC99',\n      \"48\": '003366FF',\n      \"49\": '0033CCCC',\n      \"50\": '0099CC00',\n      \"51\": '00FFCC00',\n      \"52\": '00FF9900',\n      \"53\": '00FF6600',\n      \"54\": '00666699',\n      \"55\": '00969696',\n      \"56\": '00003366',\n      \"57\": '00339966',\n      \"58\": '00003300',\n      \"59\": '00333300',\n      \"60\": '00993300',\n      \"61\": '00993366',\n      \"62\": '00333399',\n      \"63\": '00333333',\n      \"64\": null,\n      \"65\": null\n    };\n    exports.OEM_CHARSET = {\n      \"0\": \"ANSI_CHARSET\",\n      \"1\": \"DEFAULT_CHARSET\",\n      \"2\": \"SYMBOL_CHARSET\",\n      \"77\": \"MAC_CHARSET\",\n      \"128\": \"SHIFTJIS_CHARSET\",\n      \"129\": \"HANGUL_CHARSET\",\n      \"130\": \"JOHAB_CHARSET\",\n      \"134\": \"GB2312_CHARSET\",\n      \"136\": \"CHINESEBIG5_CHARSET\",\n      \"161\": \"GREEK_CHARSET\",\n      \"162\": \"TURKISH_CHARSET\",\n      \"163\": \"VIETNAMESE_CHARSET\",\n      \"177\": \"HEBREW_CHARSET\",\n      \"178\": \"ARABIC_CHARSET\",\n      \"186\": \"BALTIC_CHARSET\",\n      \"204\": \"RUSSIAN_CHARSET\",\n      \"222\": \"THAI_CHARSET\",\n      \"238\": \"EASTEUROPE_CHARSET\",\n      \"255\": \"OEM_CHARSET\"\n    };\n    exports.borderTypes = {\n      \"none\": 0,\n      \"thin\": 1,\n      \"hair\": 2,\n      \"dotted\": 3,\n      \"dashed\": 4,\n      \"dashDot\": 5,\n      \"dashDotDot\": 6,\n      \"double\": 7,\n      \"medium\": 8,\n      \"mediumDashed\": 9,\n      \"mediumDashDot\": 10,\n      \"mediumDashDotDot\": 11,\n      \"slantDashDot\": 12,\n      \"thick\": 13\n    };\n    exports.fontFamilys = {\n      \"0\": \"defualt\",\n      \"1\": \"Roman\",\n      \"2\": \"Swiss\",\n      \"3\": \"Modern\",\n      \"4\": \"Script\",\n      \"5\": \"Decorative\"\n    };\n\n    },{}],92:[function(require,module,exports){\n    \"use strict\";\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.ToContext2D = exports.FromEMF = exports.UDOC = void 0;\n    exports.UDOC = {};\n    exports.UDOC.G = {\n      concat: function concat(p, r) {\n        for (var i = 0; i < r.cmds.length; i++) {\n          p.cmds.push(r.cmds[i]);\n        }\n\n        for (var i = 0; i < r.crds.length; i++) {\n          p.crds.push(r.crds[i]);\n        }\n      },\n      getBB: function getBB(ps) {\n        var x0 = 1e99,\n            y0 = 1e99,\n            x1 = -x0,\n            y1 = -y0;\n\n        for (var i = 0; i < ps.length; i += 2) {\n          var x = ps[i],\n              y = ps[i + 1];\n          if (x < x0) x0 = x;else if (x > x1) x1 = x;\n          if (y < y0) y0 = y;else if (y > y1) y1 = y;\n        }\n\n        return [x0, y0, x1, y1];\n      },\n      rectToPath: function rectToPath(r) {\n        return {\n          cmds: [\"M\", \"L\", \"L\", \"L\", \"Z\"],\n          crds: [r[0], r[1], r[2], r[1], r[2], r[3], r[0], r[3]]\n        };\n      },\n      // a inside b\n      insideBox: function insideBox(a, b) {\n        return b[0] <= a[0] && b[1] <= a[1] && a[2] <= b[2] && a[3] <= b[3];\n      },\n      isBox: function isBox(p, bb) {\n        var sameCrd8 = function sameCrd8(pcrd, crds) {\n          for (var o = 0; o < 8; o += 2) {\n            var eq = true;\n\n            for (var j = 0; j < 8; j++) {\n              if (Math.abs(crds[j] - pcrd[j + o & 7]) >= 2) {\n                eq = false;\n                break;\n              }\n            }\n\n            if (eq) return true;\n          }\n\n          return false;\n        };\n\n        if (p.cmds.length > 10) return false;\n        var cmds = p.cmds.join(\"\"),\n            crds = p.crds;\n        var sameRect = false;\n\n        if (cmds == \"MLLLZ\" && crds.length == 8 || cmds == \"MLLLLZ\" && crds.length == 10) {\n          if (crds.length == 10) crds = crds.slice(0, 8);\n          var x0 = bb[0],\n              y0 = bb[1],\n              x1 = bb[2],\n              y1 = bb[3];\n          if (!sameRect) sameRect = sameCrd8(crds, [x0, y0, x1, y0, x1, y1, x0, y1]);\n          if (!sameRect) sameRect = sameCrd8(crds, [x0, y1, x1, y1, x1, y0, x0, y0]);\n        }\n\n        return sameRect;\n      },\n      boxArea: function boxArea(a) {\n        var w = a[2] - a[0],\n            h = a[3] - a[1];\n        return w * h;\n      },\n      newPath: function newPath(gst) {\n        gst.pth = {\n          cmds: [],\n          crds: []\n        };\n      },\n      moveTo: function moveTo(gst, x, y) {\n        var p = exports.UDOC.M.multPoint(gst.ctm, [x, y]); //if(gst.cpos[0]==p[0] && gst.cpos[1]==p[1]) return;\n\n        gst.pth.cmds.push(\"M\");\n        gst.pth.crds.push(p[0], p[1]);\n        gst.cpos = p;\n      },\n      lineTo: function lineTo(gst, x, y) {\n        var p = exports.UDOC.M.multPoint(gst.ctm, [x, y]);\n        if (gst.cpos[0] == p[0] && gst.cpos[1] == p[1]) return;\n        gst.pth.cmds.push(\"L\");\n        gst.pth.crds.push(p[0], p[1]);\n        gst.cpos = p;\n      },\n      curveTo: function curveTo(gst, x1, y1, x2, y2, x3, y3) {\n        var p;\n        p = exports.UDOC.M.multPoint(gst.ctm, [x1, y1]);\n        x1 = p[0];\n        y1 = p[1];\n        p = exports.UDOC.M.multPoint(gst.ctm, [x2, y2]);\n        x2 = p[0];\n        y2 = p[1];\n        p = exports.UDOC.M.multPoint(gst.ctm, [x3, y3]);\n        x3 = p[0];\n        y3 = p[1];\n        gst.cpos = p;\n        gst.pth.cmds.push(\"C\");\n        gst.pth.crds.push(x1, y1, x2, y2, x3, y3);\n      },\n      closePath: function closePath(gst) {\n        gst.pth.cmds.push(\"Z\");\n      },\n      arc: function arc(gst, x, y, r, a0, a1, neg) {\n        // circle from a0 counter-clock-wise to a1\n        if (neg) while (a1 > a0) {\n          a1 -= 2 * Math.PI;\n        } else while (a1 < a0) {\n          a1 += 2 * Math.PI;\n        }\n        var th = (a1 - a0) / 4;\n        var x0 = Math.cos(th / 2),\n            y0 = -Math.sin(th / 2);\n        var x1 = (4 - x0) / 3,\n            y1 = y0 == 0 ? y0 : (1 - x0) * (3 - x0) / (3 * y0);\n        var x2 = x1,\n            y2 = -y1;\n        var x3 = x0,\n            y3 = -y0;\n        var p0 = [x0, y0],\n            p1 = [x1, y1],\n            p2 = [x2, y2],\n            p3 = [x3, y3];\n        var pth = {\n          cmds: [gst.pth.cmds.length == 0 ? \"M\" : \"L\", \"C\", \"C\", \"C\", \"C\"],\n          crds: [x0, y0, x1, y1, x2, y2, x3, y3]\n        };\n        var rot = [1, 0, 0, 1, 0, 0];\n        exports.UDOC.M.rotate(rot, -th);\n\n        for (var i = 0; i < 3; i++) {\n          p1 = exports.UDOC.M.multPoint(rot, p1);\n          p2 = exports.UDOC.M.multPoint(rot, p2);\n          p3 = exports.UDOC.M.multPoint(rot, p3);\n          pth.crds.push(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n        }\n\n        var sc = [r, 0, 0, r, x, y];\n        exports.UDOC.M.rotate(rot, -a0 + th / 2);\n        exports.UDOC.M.concat(rot, sc);\n        exports.UDOC.M.multArray(rot, pth.crds);\n        exports.UDOC.M.multArray(gst.ctm, pth.crds);\n        exports.UDOC.G.concat(gst.pth, pth);\n        var y = pth.crds.pop();\n        x = pth.crds.pop();\n        gst.cpos = [x, y];\n      },\n      toPoly: function toPoly(p) {\n        if (p.cmds[0] != \"M\" || p.cmds[p.cmds.length - 1] != \"Z\") return null;\n\n        for (var i = 1; i < p.cmds.length - 1; i++) {\n          if (p.cmds[i] != \"L\") return null;\n        }\n\n        var out = [],\n            cl = p.crds.length;\n        if (p.crds[0] == p.crds[cl - 2] && p.crds[1] == p.crds[cl - 1]) cl -= 2;\n\n        for (var i = 0; i < cl; i += 2) {\n          out.push([p.crds[i], p.crds[i + 1]]);\n        }\n\n        if (exports.UDOC.G.polyArea(p.crds) < 0) out.reverse();\n        return out;\n      },\n      fromPoly: function fromPoly(p) {\n        var o = {\n          cmds: [],\n          crds: []\n        };\n\n        for (var i = 0; i < p.length; i++) {\n          o.crds.push(p[i][0], p[i][1]);\n          o.cmds.push(i == 0 ? \"M\" : \"L\");\n        }\n\n        o.cmds.push(\"Z\");\n        return o;\n      },\n      polyArea: function polyArea(p) {\n        if (p.length < 6) return 0;\n        var l = p.length - 2;\n        var sum = (p[0] - p[l]) * (p[l + 1] + p[1]);\n\n        for (var i = 0; i < l; i += 2) {\n          sum += (p[i + 2] - p[i]) * (p[i + 1] + p[i + 3]);\n        }\n\n        return -sum * 0.5;\n      },\n      polyClip: function polyClip(p0, p1) {\n        var cp1, cp2, s, e;\n\n        var inside = function inside(p) {\n          return (cp2[0] - cp1[0]) * (p[1] - cp1[1]) > (cp2[1] - cp1[1]) * (p[0] - cp1[0]);\n        };\n\n        var isc = function isc() {\n          var dc = [cp1[0] - cp2[0], cp1[1] - cp2[1]],\n              dp = [s[0] - e[0], s[1] - e[1]],\n              n1 = cp1[0] * cp2[1] - cp1[1] * cp2[0],\n              n2 = s[0] * e[1] - s[1] * e[0],\n              n3 = 1.0 / (dc[0] * dp[1] - dc[1] * dp[0]);\n          return [(n1 * dp[0] - n2 * dc[0]) * n3, (n1 * dp[1] - n2 * dc[1]) * n3];\n        };\n\n        var out = p0;\n        cp1 = p1[p1.length - 1];\n\n        for (var j in p1) {\n          var cp2 = p1[j];\n          var inp = out;\n          out = [];\n          s = inp[inp.length - 1]; //last on the input list\n\n          for (var i in inp) {\n            var e = inp[i];\n\n            if (inside(e)) {\n              if (!inside(s)) {\n                out.push(isc());\n              }\n\n              out.push(e);\n            } else if (inside(s)) {\n              out.push(isc());\n            }\n\n            s = e;\n          }\n\n          cp1 = cp2;\n        }\n\n        return out;\n      }\n    };\n    exports.UDOC.M = {\n      getScale: function getScale(m) {\n        return Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2]));\n      },\n      translate: function translate(m, x, y) {\n        exports.UDOC.M.concat(m, [1, 0, 0, 1, x, y]);\n      },\n      rotate: function rotate(m, a) {\n        exports.UDOC.M.concat(m, [Math.cos(a), -Math.sin(a), Math.sin(a), Math.cos(a), 0, 0]);\n      },\n      scale: function scale(m, x, y) {\n        exports.UDOC.M.concat(m, [x, 0, 0, y, 0, 0]);\n      },\n      concat: function concat(m, w) {\n        var a = m[0],\n            b = m[1],\n            c = m[2],\n            d = m[3],\n            tx = m[4],\n            ty = m[5];\n        m[0] = a * w[0] + b * w[2];\n        m[1] = a * w[1] + b * w[3];\n        m[2] = c * w[0] + d * w[2];\n        m[3] = c * w[1] + d * w[3];\n        m[4] = tx * w[0] + ty * w[2] + w[4];\n        m[5] = tx * w[1] + ty * w[3] + w[5];\n      },\n      invert: function invert(m) {\n        var a = m[0],\n            b = m[1],\n            c = m[2],\n            d = m[3],\n            tx = m[4],\n            ty = m[5],\n            adbc = a * d - b * c;\n        m[0] = d / adbc;\n        m[1] = -b / adbc;\n        m[2] = -c / adbc;\n        m[3] = a / adbc;\n        m[4] = (c * ty - d * tx) / adbc;\n        m[5] = (b * tx - a * ty) / adbc;\n      },\n      multPoint: function multPoint(m, p) {\n        var x = p[0],\n            y = p[1];\n        return [x * m[0] + y * m[2] + m[4], x * m[1] + y * m[3] + m[5]];\n      },\n      multArray: function multArray(m, a) {\n        for (var i = 0; i < a.length; i += 2) {\n          var x = a[i],\n              y = a[i + 1];\n          a[i] = x * m[0] + y * m[2] + m[4];\n          a[i + 1] = x * m[1] + y * m[3] + m[5];\n        }\n      }\n    };\n    exports.UDOC.C = {\n      srgbGamma: function srgbGamma(x) {\n        return x < 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1.0 / 2.4) - 0.055;\n      },\n      cmykToRgb: function cmykToRgb(clr) {\n        var c = clr[0],\n            m = clr[1],\n            y = clr[2],\n            k = clr[3]; // return [1-Math.min(1,c+k), 1-Math.min(1, m+k), 1-Math.min(1,y+k)];\n\n        var r = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n        var g = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n        var b = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n        return [Math.max(0, Math.min(1, r / 255)), Math.max(0, Math.min(1, g / 255)), Math.max(0, Math.min(1, b / 255))]; //var iK = 1-c[3];\n        //return [(1-c[0])*iK, (1-c[1])*iK, (1-c[2])*iK];\n      },\n      labToRgb: function labToRgb(lab) {\n        var k = 903.3,\n            e = 0.008856,\n            L = lab[0],\n            a = lab[1],\n            b = lab[2];\n        var fy = (L + 16) / 116,\n            fy3 = fy * fy * fy;\n        var fz = fy - b / 200,\n            fz3 = fz * fz * fz;\n        var fx = a / 500 + fy,\n            fx3 = fx * fx * fx;\n        var zr = fz3 > e ? fz3 : (116 * fz - 16) / k;\n        var yr = fy3 > e ? fy3 : (116 * fy - 16) / k;\n        var xr = fx3 > e ? fx3 : (116 * fx - 16) / k;\n        var X = xr * 96.72,\n            Y = yr * 100,\n            Z = zr * 81.427,\n            xyz = [X / 100, Y / 100, Z / 100];\n        var x2s = [3.1338561, -1.6168667, -0.4906146, -0.9787684, 1.9161415, 0.0334540, 0.0719453, -0.2289914, 1.4052427];\n        var rgb = [x2s[0] * xyz[0] + x2s[1] * xyz[1] + x2s[2] * xyz[2], x2s[3] * xyz[0] + x2s[4] * xyz[1] + x2s[5] * xyz[2], x2s[6] * xyz[0] + x2s[7] * xyz[1] + x2s[8] * xyz[2]];\n\n        for (var i = 0; i < 3; i++) {\n          rgb[i] = Math.max(0, Math.min(1, exports.UDOC.C.srgbGamma(rgb[i])));\n        }\n\n        return rgb;\n      }\n    };\n\n    exports.UDOC.getState = function (crds) {\n      return {\n        font: exports.UDOC.getFont(),\n        dd: {\n          flat: 1\n        },\n        space: \"/DeviceGray\",\n        // fill\n        ca: 1,\n        colr: [0, 0, 0],\n        sspace: \"/DeviceGray\",\n        // stroke\n        CA: 1,\n        COLR: [0, 0, 0],\n        bmode: \"/Normal\",\n        SA: false,\n        OPM: 0,\n        AIS: false,\n        OP: false,\n        op: false,\n        SMask: \"/None\",\n        lwidth: 1,\n        lcap: 0,\n        ljoin: 0,\n        mlimit: 10,\n        SM: 0.1,\n        doff: 0,\n        dash: [],\n        ctm: [1, 0, 0, 1, 0, 0],\n        cpos: [0, 0],\n        pth: {\n          cmds: [],\n          crds: []\n        },\n        cpth: crds ? exports.UDOC.G.rectToPath(crds) : null // clipping path\n\n      };\n    };\n\n    exports.UDOC.getFont = function () {\n      return {\n        Tc: 0,\n        Tw: 0,\n        Th: 100,\n        Tl: 0,\n        Tf: \"Helvetica-Bold\",\n        Tfs: 1,\n        Tmode: 0,\n        Trise: 0,\n        Tk: 0,\n        Tal: 0,\n        Tun: 0,\n        Tm: [1, 0, 0, 1, 0, 0],\n        Tlm: [1, 0, 0, 1, 0, 0],\n        Trm: [1, 0, 0, 1, 0, 0]\n      };\n    };\n\n    exports.FromEMF = function () {};\n\n    exports.FromEMF.Parse = function (buff, genv) {\n      buff = new Uint8Array(buff);\n      var off = 0; //console.log(buff.slice(0,32));\n\n      var prms = {\n        fill: false,\n        strk: false,\n        bb: [0, 0, 1, 1],\n        wbb: [0, 0, 1, 1],\n        fnt: {\n          nam: \"Arial\",\n          hgh: 25,\n          und: false,\n          orn: 0\n        },\n        tclr: [0, 0, 0],\n        talg: 0\n      },\n          gst,\n          tab = [],\n          sts = [];\n      var rI = exports.FromEMF.B.readShort,\n          rU = exports.FromEMF.B.readUshort,\n          rI32 = exports.FromEMF.B.readInt,\n          rU32 = exports.FromEMF.B.readUint,\n          rF32 = exports.FromEMF.B.readFloat;\n      var opn = 0;\n\n      while (true) {\n        var fnc = rU32(buff, off);\n        off += 4;\n        var fnm = exports.FromEMF.K[fnc];\n        var siz = rU32(buff, off);\n        off += 4; //if(gst && isNaN(gst.ctm[0])) throw \"e\";\n        //console.log(fnc,fnm,siz);\n\n        var loff = off; //if(opn++==253) break;\n\n        var obj = null,\n            oid = 0; //console.log(fnm, siz);\n\n        if (false) {} else if (fnm == \"EOF\") {\n          break;\n        } else if (fnm == \"HEADER\") {\n          prms.bb = exports.FromEMF._readBox(buff, loff);\n          loff += 16; //console.log(fnm, prms.bb);\n\n          genv.StartPage(prms.bb[0], prms.bb[1], prms.bb[2], prms.bb[3]);\n          gst = exports.UDOC.getState(prms.bb);\n        } else if (fnm == \"SAVEDC\") sts.push(JSON.stringify(gst), JSON.stringify(prms));else if (fnm == \"RESTOREDC\") {\n          var dif = rI32(buff, loff);\n          loff += 4;\n\n          while (dif < -1) {\n            sts.pop();\n            sts.pop();\n          }\n\n          prms = JSON.parse(sts.pop());\n          gst = JSON.parse(sts.pop());\n        } else if (fnm == \"SELECTCLIPPATH\") {\n          gst.cpth = JSON.parse(JSON.stringify(gst.pth));\n        } else if ([\"SETMAPMODE\", \"SETPOLYFILLMODE\", \"SETBKMODE\"\n        /*,\"SETVIEWPORTEXTEX\"*/\n        , \"SETICMMODE\", \"SETROP2\", \"EXTSELECTCLIPRGN\"].indexOf(fnm) != -1) {} //else if(fnm==\"INTERSECTCLIPRECT\") {  var r=prms.crct=FromEMF._readBox(buff, loff);  /*var y0=r[1],y1=r[3]; if(y0>y1){r[1]=y1; r[3]=y0;}*/ console.log(prms.crct);  }\n        else if (fnm == \"SETMITERLIMIT\") gst.mlimit = rU32(buff, loff);else if (fnm == \"SETTEXTCOLOR\") prms.tclr = [buff[loff] / 255, buff[loff + 1] / 255, buff[loff + 2] / 255];else if (fnm == \"SETTEXTALIGN\") prms.talg = rU32(buff, loff);else if (fnm == \"SETVIEWPORTEXTEX\" || fnm == \"SETVIEWPORTORGEX\") {\n            if (prms.vbb == null) prms.vbb = [];\n            var coff = fnm == \"SETVIEWPORTORGEX\" ? 0 : 2;\n            prms.vbb[coff] = rI32(buff, loff);\n            loff += 4;\n            prms.vbb[coff + 1] = rI32(buff, loff);\n            loff += 4; //console.log(prms.vbb);\n\n            if (fnm == \"SETVIEWPORTEXTEX\") exports.FromEMF._updateCtm(prms, gst);\n          } else if (fnm == \"SETWINDOWEXTEX\" || fnm == \"SETWINDOWORGEX\") {\n            var coff = fnm == \"SETWINDOWORGEX\" ? 0 : 2;\n            prms.wbb[coff] = rI32(buff, loff);\n            loff += 4;\n            prms.wbb[coff + 1] = rI32(buff, loff);\n            loff += 4;\n            if (fnm == \"SETWINDOWEXTEX\") exports.FromEMF._updateCtm(prms, gst);\n          } //else if(fnm==\"SETMETARGN\") {}\n          else if (fnm == \"COMMENT\") {\n              var ds = rU32(buff, loff);\n              loff += 4;\n            } else if (fnm == \"SELECTOBJECT\") {\n              var ind = rU32(buff, loff);\n              loff += 4; //console.log(ind.toString(16), tab, tab[ind]);\n\n              if (ind == 0x80000000) {\n                prms.fill = true;\n                gst.colr = [1, 1, 1];\n              } // white brush\n              else if (ind == 0x80000005) {\n                  prms.fill = false;\n                } // null brush\n                else if (ind == 0x80000007) {\n                    prms.strk = true;\n                    prms.lwidth = 1;\n                    gst.COLR = [0, 0, 0];\n                  } // black pen\n                  else if (ind == 0x80000008) {\n                      prms.strk = false;\n                    } // null  pen\n                    else if (ind == 0x8000000d) {} // system font\n                      else if (ind == 0x8000000e) {} // device default font\n                        else {\n                            var co = tab[ind]; //console.log(ind, co);\n\n                            if (co.t == \"b\") {\n                              prms.fill = co.stl != 1;\n\n                              if (co.stl == 0) {} else if (co.stl == 1) {} else throw co.stl + \" e\";\n\n                              gst.colr = co.clr;\n                            } else if (co.t == \"p\") {\n                              prms.strk = co.stl != 5;\n                              gst.lwidth = co.wid;\n                              gst.COLR = co.clr;\n                            } else if (co.t == \"f\") {\n                              prms.fnt = co;\n                              gst.font.Tf = co.nam;\n                              gst.font.Tfs = Math.abs(co.hgh);\n                              gst.font.Tun = co.und;\n                            } else throw \"e\";\n                          }\n            } else if (fnm == \"DELETEOBJECT\") {\n              var ind = rU32(buff, loff);\n              loff += 4;\n              if (tab[ind] != null) tab[ind] = null;else throw \"e\";\n            } else if (fnm == \"CREATEBRUSHINDIRECT\") {\n              oid = rU32(buff, loff);\n              loff += 4;\n              obj = {\n                t: \"b\"\n              };\n              obj.stl = rU32(buff, loff);\n              loff += 4;\n              obj.clr = [buff[loff] / 255, buff[loff + 1] / 255, buff[loff + 2] / 255];\n              loff += 4;\n              obj.htc = rU32(buff, loff);\n              loff += 4; //console.log(oid, obj);\n            } else if (fnm == \"CREATEPEN\" || fnm == \"EXTCREATEPEN\") {\n              oid = rU32(buff, loff);\n              loff += 4;\n              obj = {\n                t: \"p\"\n              };\n\n              if (fnm == \"EXTCREATEPEN\") {\n                loff += 16;\n                obj.stl = rU32(buff, loff);\n                loff += 4;\n                obj.wid = rU32(buff, loff);\n                loff += 4; //obj.stl = rU32(buff, loff);\n\n                loff += 4;\n              } else {\n                obj.stl = rU32(buff, loff);\n                loff += 4;\n                obj.wid = rU32(buff, loff);\n                loff += 4;\n                loff += 4;\n              }\n\n              obj.clr = [buff[loff] / 255, buff[loff + 1] / 255, buff[loff + 2] / 255];\n              loff += 4;\n            } else if (fnm == \"EXTCREATEFONTINDIRECTW\") {\n              oid = rU32(buff, loff);\n              loff += 4;\n              obj = {\n                t: \"f\",\n                nam: \"\"\n              };\n              obj.hgh = rI32(buff, loff);\n              loff += 4;\n              loff += 4 * 2;\n              obj.orn = rI32(buff, loff) / 10;\n              loff += 4;\n              var wgh = rU32(buff, loff);\n              loff += 4; //console.log(fnm, obj.orn, wgh);\n              //console.log(rU32(buff,loff), rU32(buff,loff+4), buff.slice(loff,loff+8));\n\n              obj.und = buff[loff + 1];\n              obj.stk = buff[loff + 2];\n              loff += 4 * 2;\n\n              while (rU(buff, loff) != 0) {\n                obj.nam += String.fromCharCode(rU(buff, loff));\n                loff += 2;\n              }\n\n              if (wgh > 500) obj.nam += \"-Bold\"; //console.log(wgh, obj.nam);\n            } else if (fnm == \"EXTTEXTOUTW\") {\n              //console.log(buff.slice(loff-8, loff-8+siz));\n              loff += 16;\n              var mod = rU32(buff, loff);\n              loff += 4; //console.log(mod);\n\n              var scx = rF32(buff, loff);\n              loff += 4;\n              var scy = rF32(buff, loff);\n              loff += 4;\n              var rfx = rI32(buff, loff);\n              loff += 4;\n              var rfy = rI32(buff, loff);\n              loff += 4; //console.log(mod, scx, scy,rfx,rfy);\n\n              gst.font.Tm = [1, 0, 0, -1, 0, 0];\n              exports.UDOC.M.rotate(gst.font.Tm, prms.fnt.orn * Math.PI / 180);\n              exports.UDOC.M.translate(gst.font.Tm, rfx, rfy);\n              var alg = prms.talg; //console.log(alg.toString(2));\n\n              if ((alg & 6) == 6) gst.font.Tal = 2;else if ((alg & 7) == 0) gst.font.Tal = 0;else throw alg + \" e\";\n\n              if ((alg & 24) == 24) {} // baseline\n              else if ((alg & 24) == 0) exports.UDOC.M.translate(gst.font.Tm, 0, gst.font.Tfs);else throw \"e\";\n\n              var crs = rU32(buff, loff);\n              loff += 4;\n              var ofs = rU32(buff, loff);\n              loff += 4;\n              var ops = rU32(buff, loff);\n              loff += 4; //if(ops!=0) throw \"e\";\n              //console.log(ofs,ops,crs);\n\n              loff += 16;\n              var ofD = rU32(buff, loff);\n              loff += 4; //console.log(ops, ofD, loff, ofs+off-8);\n\n              ofs += off - 8; //console.log(crs, ops);\n\n              var str = \"\";\n\n              for (var i = 0; i < crs; i++) {\n                var cc = rU(buff, ofs + i * 2);\n                str += String.fromCharCode(cc);\n              }\n\n              ;\n              var oclr = gst.colr;\n              gst.colr = prms.tclr; //console.log(str, gst.colr, gst.font.Tm);\n              //var otfs = gst.font.Tfs;  gst.font.Tfs *= 1/gst.ctm[0];\n\n              genv.PutText(gst, str, str.length * gst.font.Tfs * 0.5);\n              gst.colr = oclr; //gst.font.Tfs = otfs;\n              //console.log(rfx, rfy, scx, ops, rcX, rcY, rcW, rcH, offDx, str);\n            } else if (fnm == \"BEGINPATH\") {\n              exports.UDOC.G.newPath(gst);\n            } else if (fnm == \"ENDPATH\") {} else if (fnm == \"CLOSEFIGURE\") exports.UDOC.G.closePath(gst);else if (fnm == \"MOVETOEX\") {\n              exports.UDOC.G.moveTo(gst, rI32(buff, loff), rI32(buff, loff + 4));\n            } else if (fnm == \"LINETO\") {\n              if (gst.pth.cmds.length == 0) {\n                var im = gst.ctm.slice(0);\n                exports.UDOC.M.invert(im);\n                var p = exports.UDOC.M.multPoint(im, gst.cpos);\n                exports.UDOC.G.moveTo(gst, p[0], p[1]);\n              }\n\n              exports.UDOC.G.lineTo(gst, rI32(buff, loff), rI32(buff, loff + 4));\n            } else if (fnm == \"POLYGON\" || fnm == \"POLYGON16\" || fnm == \"POLYLINE\" || fnm == \"POLYLINE16\" || fnm == \"POLYLINETO\" || fnm == \"POLYLINETO16\") {\n              loff += 16;\n              var ndf = fnm.startsWith(\"POLYGON\"),\n                  isTo = fnm.indexOf(\"TO\") != -1;\n              var cnt = rU32(buff, loff);\n              loff += 4;\n              if (!isTo) exports.UDOC.G.newPath(gst);\n              loff = exports.FromEMF._drawPoly(buff, loff, cnt, gst, fnm.endsWith(\"16\") ? 2 : 4, ndf, isTo);\n              if (!isTo) exports.FromEMF._draw(genv, gst, prms, ndf); //console.log(prms, gst.lwidth);\n              //console.log(JSON.parse(JSON.stringify(gst.pth)));\n            } else if (fnm == \"POLYPOLYGON16\") {\n              loff += 16;\n              var ndf = fnm.startsWith(\"POLYPOLYGON\"),\n                  isTo = fnm.indexOf(\"TO\") != -1;\n              var nop = rU32(buff, loff);\n              loff += 4;\n              loff += 4;\n              var pi = loff;\n              loff += nop * 4;\n              if (!isTo) exports.UDOC.G.newPath(gst);\n\n              for (var i = 0; i < nop; i++) {\n                var ppp = rU(buff, pi + i * 4);\n                loff = exports.FromEMF._drawPoly(buff, loff, ppp, gst, fnm.endsWith(\"16\") ? 2 : 4, ndf, isTo);\n              }\n\n              if (!isTo) exports.FromEMF._draw(genv, gst, prms, ndf);\n            } else if (fnm == \"POLYBEZIER\" || fnm == \"POLYBEZIER16\" || fnm == \"POLYBEZIERTO\" || fnm == \"POLYBEZIERTO16\") {\n              loff += 16;\n              var is16 = fnm.endsWith(\"16\"),\n                  rC = is16 ? rI : rI32,\n                  nl = is16 ? 2 : 4;\n              var cnt = rU32(buff, loff);\n              loff += 4;\n\n              if (fnm.indexOf(\"TO\") == -1) {\n                exports.UDOC.G.moveTo(gst, rC(buff, loff), rC(buff, loff + nl));\n                loff += 2 * nl;\n                cnt--;\n              }\n\n              while (cnt > 0) {\n                exports.UDOC.G.curveTo(gst, rC(buff, loff), rC(buff, loff + nl), rC(buff, loff + 2 * nl), rC(buff, loff + 3 * nl), rC(buff, loff + 4 * nl), rC(buff, loff + 5 * nl));\n                loff += 6 * nl;\n                cnt -= 3;\n              } //console.log(JSON.parse(JSON.stringify(gst.pth)));\n\n            } else if (fnm == \"RECTANGLE\" || fnm == \"ELLIPSE\") {\n              exports.UDOC.G.newPath(gst);\n\n              var bx = exports.FromEMF._readBox(buff, loff);\n\n              if (fnm == \"RECTANGLE\") {\n                exports.UDOC.G.moveTo(gst, bx[0], bx[1]);\n                exports.UDOC.G.lineTo(gst, bx[2], bx[1]);\n                exports.UDOC.G.lineTo(gst, bx[2], bx[3]);\n                exports.UDOC.G.lineTo(gst, bx[0], bx[3]);\n              } else {\n                var x = (bx[0] + bx[2]) / 2,\n                    y = (bx[1] + bx[3]) / 2;\n                exports.UDOC.G.arc(gst, x, y, (bx[2] - bx[0]) / 2, 0, 2 * Math.PI, false);\n              }\n\n              exports.UDOC.G.closePath(gst);\n\n              exports.FromEMF._draw(genv, gst, prms, true); //console.log(prms, gst.lwidth);\n\n            } else if (fnm == \"FILLPATH\") genv.Fill(gst, false);else if (fnm == \"STROKEPATH\") genv.Stroke(gst);else if (fnm == \"STROKEANDFILLPATH\") {\n              genv.Fill(gst, false);\n              genv.Stroke(gst);\n            } else if (fnm == \"SETWORLDTRANSFORM\" || fnm == \"MODIFYWORLDTRANSFORM\") {\n              var mat = [];\n\n              for (var i = 0; i < 6; i++) {\n                mat.push(rF32(buff, loff + i * 4));\n              }\n\n              loff += 24; //console.log(fnm, gst.ctm.slice(0), mat);\n\n              if (fnm == \"SETWORLDTRANSFORM\") gst.ctm = mat;else {\n                var mod = rU32(buff, loff);\n                loff += 4;\n\n                if (mod == 2) {\n                  var om = gst.ctm;\n                  gst.ctm = mat;\n                  exports.UDOC.M.concat(gst.ctm, om);\n                } else throw \"e\";\n              }\n            } else if (fnm == \"SETSTRETCHBLTMODE\") {\n              var sm = rU32(buff, loff);\n              loff += 4;\n            } else if (fnm == \"STRETCHDIBITS\") {\n              var bx = exports.FromEMF._readBox(buff, loff);\n\n              loff += 16;\n              var xD = rI32(buff, loff);\n              loff += 4;\n              var yD = rI32(buff, loff);\n              loff += 4;\n              var xS = rI32(buff, loff);\n              loff += 4;\n              var yS = rI32(buff, loff);\n              loff += 4;\n              var wS = rI32(buff, loff);\n              loff += 4;\n              var hS = rI32(buff, loff);\n              loff += 4;\n              var ofH = rU32(buff, loff) + off - 8;\n              loff += 4;\n              var szH = rU32(buff, loff);\n              loff += 4;\n              var ofB = rU32(buff, loff) + off - 8;\n              loff += 4;\n              var szB = rU32(buff, loff);\n              loff += 4;\n              var usg = rU32(buff, loff);\n              loff += 4;\n              if (usg != 0) throw \"e\";\n              var bop = rU32(buff, loff);\n              loff += 4;\n              var wD = rI32(buff, loff);\n              loff += 4;\n              var hD = rI32(buff, loff);\n              loff += 4; //console.log(bop, wD, hD);\n              //console.log(ofH, szH, ofB, szB, ofH+40);\n              //console.log(bx, xD,yD,wD,hD);\n              //console.log(xS,yS,wS,hS);\n              //console.log(ofH,szH,ofB,szB,usg,bop);\n\n              var hl = rU32(buff, ofH);\n              ofH += 4;\n              var w = rU32(buff, ofH);\n              ofH += 4;\n              var h = rU32(buff, ofH);\n              ofH += 4;\n              if (w != wS || h != hS) throw \"e\";\n              var ps = rU(buff, ofH);\n              ofH += 2;\n              var bc = rU(buff, ofH);\n              ofH += 2;\n              if (bc != 8 && bc != 24 && bc != 32) throw bc + \" e\";\n              var cpr = rU32(buff, ofH);\n              ofH += 4;\n              if (cpr != 0) throw cpr + \" e\";\n              var sz = rU32(buff, ofH);\n              ofH += 4;\n              var xpm = rU32(buff, ofH);\n              ofH += 4;\n              var ypm = rU32(buff, ofH);\n              ofH += 4;\n              var cu = rU32(buff, ofH);\n              ofH += 4;\n              var ci = rU32(buff, ofH);\n              ofH += 4; //console.log(hl, w, h, ps, bc, cpr, sz, xpm, ypm, cu, ci);\n              //console.log(hl,w,h,\",\",xS,yS,wS,hS,\",\",xD,yD,wD,hD,\",\",xpm,ypm);\n\n              var rl = Math.floor((w * ps * bc + 31 & ~31) / 8);\n              var img = new Uint8Array(w * h * 4);\n\n              if (bc == 8) {\n                for (var y = 0; y < h; y++) {\n                  for (var x = 0; x < w; x++) {\n                    var qi = y * w + x << 2,\n                        ind = buff[ofB + (h - 1 - y) * rl + x] << 2;\n                    img[qi] = buff[ofH + ind + 2];\n                    img[qi + 1] = buff[ofH + ind + 1];\n                    img[qi + 2] = buff[ofH + ind + 0];\n                    img[qi + 3] = 255;\n                  }\n                }\n              }\n\n              if (bc == 24) {\n                for (var y = 0; y < h; y++) {\n                  for (var x = 0; x < w; x++) {\n                    var qi = y * w + x << 2,\n                        ti = ofB + (h - 1 - y) * rl + x * 3;\n                    img[qi] = buff[ti + 2];\n                    img[qi + 1] = buff[ti + 1];\n                    img[qi + 2] = buff[ti + 0];\n                    img[qi + 3] = 255;\n                  }\n                }\n              }\n\n              if (bc == 32) {\n                for (var y = 0; y < h; y++) {\n                  for (var x = 0; x < w; x++) {\n                    var qi = y * w + x << 2,\n                        ti = ofB + (h - 1 - y) * rl + x * 4;\n                    img[qi] = buff[ti + 2];\n                    img[qi + 1] = buff[ti + 1];\n                    img[qi + 2] = buff[ti + 0];\n                    img[qi + 3] = buff[ti + 3];\n                  }\n                }\n              }\n\n              var ctm = gst.ctm.slice(0);\n              gst.ctm = [1, 0, 0, 1, 0, 0];\n              exports.UDOC.M.scale(gst.ctm, wD, -hD);\n              exports.UDOC.M.translate(gst.ctm, xD, yD + hD);\n              exports.UDOC.M.concat(gst.ctm, ctm);\n              genv.PutImage(gst, img, w, h);\n              gst.ctm = ctm;\n            } else {\n              console.log(fnm, siz);\n            }\n\n        if (obj != null) tab[oid] = obj;\n        off += siz - 8;\n      } //genv.Stroke(gst);\n\n\n      genv.ShowPage();\n      genv.Done();\n    };\n\n    exports.FromEMF._readBox = function (buff, off) {\n      var b = [];\n\n      for (var i = 0; i < 4; i++) {\n        b[i] = exports.FromEMF.B.readInt(buff, off + i * 4);\n      }\n\n      return b;\n    };\n\n    exports.FromEMF._updateCtm = function (prms, gst) {\n      var mat = [1, 0, 0, 1, 0, 0];\n      var wbb = prms.wbb,\n          bb = prms.bb,\n          vbb = prms.vbb && prms.vbb.length == 4 ? prms.vbb : prms.bb; //var y0 = bb[1], y1 = bb[3];  bb[1]=Math.min(y0,y1);  bb[3]=Math.max(y0,y1);\n\n      exports.UDOC.M.translate(mat, -wbb[0], -wbb[1]);\n      exports.UDOC.M.scale(mat, 1 / wbb[2], 1 / wbb[3]);\n      exports.UDOC.M.scale(mat, vbb[2], vbb[3]); //UDOC.M.scale(mat, vbb[2]/(bb[2]-bb[0]), vbb[3]/(bb[3]-bb[1]));\n      //UDOC.M.scale(mat, bb[2]-bb[0],bb[3]-bb[1]);\n\n      gst.ctm = mat;\n    };\n\n    exports.FromEMF._draw = function (genv, gst, prms, needFill) {\n      if (prms.fill && needFill) genv.Fill(gst, false);\n      if (prms.strk && gst.lwidth != 0) genv.Stroke(gst);\n    };\n\n    exports.FromEMF._drawPoly = function (buff, off, ppp, gst, nl, clos, justLine) {\n      var rS = nl == 2 ? exports.FromEMF.B.readShort : exports.FromEMF.B.readInt;\n\n      for (var j = 0; j < ppp; j++) {\n        var px = rS(buff, off);\n        off += nl;\n        var py = rS(buff, off);\n        off += nl;\n        if (j == 0 && !justLine) exports.UDOC.G.moveTo(gst, px, py);else exports.UDOC.G.lineTo(gst, px, py);\n      }\n\n      if (clos) exports.UDOC.G.closePath(gst);\n      return off;\n    };\n\n    exports.FromEMF.B = {\n      uint8: new Uint8Array(4),\n      readShort: function readShort(buff, p) {\n        var u8 = exports.FromEMF.B.uint8;\n        u8[0] = buff[p];\n        u8[1] = buff[p + 1];\n        return exports.FromEMF.B.int16[0];\n      },\n      readUshort: function readUshort(buff, p) {\n        var u8 = exports.FromEMF.B.uint8;\n        u8[0] = buff[p];\n        u8[1] = buff[p + 1];\n        return exports.FromEMF.B.uint16[0];\n      },\n      readInt: function readInt(buff, p) {\n        var u8 = exports.FromEMF.B.uint8;\n        u8[0] = buff[p];\n        u8[1] = buff[p + 1];\n        u8[2] = buff[p + 2];\n        u8[3] = buff[p + 3];\n        return exports.FromEMF.B.int32[0];\n      },\n      readUint: function readUint(buff, p) {\n        var u8 = exports.FromEMF.B.uint8;\n        u8[0] = buff[p];\n        u8[1] = buff[p + 1];\n        u8[2] = buff[p + 2];\n        u8[3] = buff[p + 3];\n        return exports.FromEMF.B.uint32[0];\n      },\n      readFloat: function readFloat(buff, p) {\n        var u8 = exports.FromEMF.B.uint8;\n        u8[0] = buff[p];\n        u8[1] = buff[p + 1];\n        u8[2] = buff[p + 2];\n        u8[3] = buff[p + 3];\n        return exports.FromEMF.B.flot32[0];\n      },\n      readASCII: function readASCII(buff, p, l) {\n        var s = \"\";\n\n        for (var i = 0; i < l; i++) {\n          s += String.fromCharCode(buff[p + i]);\n        }\n\n        return s;\n      }\n    };\n    exports.FromEMF.B.int16 = new Int16Array(exports.FromEMF.B.uint8.buffer);\n    exports.FromEMF.B.uint16 = new Uint16Array(exports.FromEMF.B.uint8.buffer);\n    exports.FromEMF.B.int32 = new Int32Array(exports.FromEMF.B.uint8.buffer);\n    exports.FromEMF.B.uint32 = new Uint32Array(exports.FromEMF.B.uint8.buffer);\n    exports.FromEMF.B.flot32 = new Float32Array(exports.FromEMF.B.uint8.buffer);\n    exports.FromEMF.C = {\n      EMR_HEADER: 0x00000001,\n      EMR_POLYBEZIER: 0x00000002,\n      EMR_POLYGON: 0x00000003,\n      EMR_POLYLINE: 0x00000004,\n      EMR_POLYBEZIERTO: 0x00000005,\n      EMR_POLYLINETO: 0x00000006,\n      EMR_POLYPOLYLINE: 0x00000007,\n      EMR_POLYPOLYGON: 0x00000008,\n      EMR_SETWINDOWEXTEX: 0x00000009,\n      EMR_SETWINDOWORGEX: 0x0000000A,\n      EMR_SETVIEWPORTEXTEX: 0x0000000B,\n      EMR_SETVIEWPORTORGEX: 0x0000000C,\n      EMR_SETBRUSHORGEX: 0x0000000D,\n      EMR_EOF: 0x0000000E,\n      EMR_SETPIXELV: 0x0000000F,\n      EMR_SETMAPPERFLAGS: 0x00000010,\n      EMR_SETMAPMODE: 0x00000011,\n      EMR_SETBKMODE: 0x00000012,\n      EMR_SETPOLYFILLMODE: 0x00000013,\n      EMR_SETROP2: 0x00000014,\n      EMR_SETSTRETCHBLTMODE: 0x00000015,\n      EMR_SETTEXTALIGN: 0x00000016,\n      EMR_SETCOLORADJUSTMENT: 0x00000017,\n      EMR_SETTEXTCOLOR: 0x00000018,\n      EMR_SETBKCOLOR: 0x00000019,\n      EMR_OFFSETCLIPRGN: 0x0000001A,\n      EMR_MOVETOEX: 0x0000001B,\n      EMR_SETMETARGN: 0x0000001C,\n      EMR_EXCLUDECLIPRECT: 0x0000001D,\n      EMR_INTERSECTCLIPRECT: 0x0000001E,\n      EMR_SCALEVIEWPORTEXTEX: 0x0000001F,\n      EMR_SCALEWINDOWEXTEX: 0x00000020,\n      EMR_SAVEDC: 0x00000021,\n      EMR_RESTOREDC: 0x00000022,\n      EMR_SETWORLDTRANSFORM: 0x00000023,\n      EMR_MODIFYWORLDTRANSFORM: 0x00000024,\n      EMR_SELECTOBJECT: 0x00000025,\n      EMR_CREATEPEN: 0x00000026,\n      EMR_CREATEBRUSHINDIRECT: 0x00000027,\n      EMR_DELETEOBJECT: 0x00000028,\n      EMR_ANGLEARC: 0x00000029,\n      EMR_ELLIPSE: 0x0000002A,\n      EMR_RECTANGLE: 0x0000002B,\n      EMR_ROUNDRECT: 0x0000002C,\n      EMR_ARC: 0x0000002D,\n      EMR_CHORD: 0x0000002E,\n      EMR_PIE: 0x0000002F,\n      EMR_SELECTPALETTE: 0x00000030,\n      EMR_CREATEPALETTE: 0x00000031,\n      EMR_SETPALETTEENTRIES: 0x00000032,\n      EMR_RESIZEPALETTE: 0x00000033,\n      EMR_REALIZEPALETTE: 0x00000034,\n      EMR_EXTFLOODFILL: 0x00000035,\n      EMR_LINETO: 0x00000036,\n      EMR_ARCTO: 0x00000037,\n      EMR_POLYDRAW: 0x00000038,\n      EMR_SETARCDIRECTION: 0x00000039,\n      EMR_SETMITERLIMIT: 0x0000003A,\n      EMR_BEGINPATH: 0x0000003B,\n      EMR_ENDPATH: 0x0000003C,\n      EMR_CLOSEFIGURE: 0x0000003D,\n      EMR_FILLPATH: 0x0000003E,\n      EMR_STROKEANDFILLPATH: 0x0000003F,\n      EMR_STROKEPATH: 0x00000040,\n      EMR_FLATTENPATH: 0x00000041,\n      EMR_WIDENPATH: 0x00000042,\n      EMR_SELECTCLIPPATH: 0x00000043,\n      EMR_ABORTPATH: 0x00000044,\n      EMR_COMMENT: 0x00000046,\n      EMR_FILLRGN: 0x00000047,\n      EMR_FRAMERGN: 0x00000048,\n      EMR_INVERTRGN: 0x00000049,\n      EMR_PAINTRGN: 0x0000004A,\n      EMR_EXTSELECTCLIPRGN: 0x0000004B,\n      EMR_BITBLT: 0x0000004C,\n      EMR_STRETCHBLT: 0x0000004D,\n      EMR_MASKBLT: 0x0000004E,\n      EMR_PLGBLT: 0x0000004F,\n      EMR_SETDIBITSTODEVICE: 0x00000050,\n      EMR_STRETCHDIBITS: 0x00000051,\n      EMR_EXTCREATEFONTINDIRECTW: 0x00000052,\n      EMR_EXTTEXTOUTA: 0x00000053,\n      EMR_EXTTEXTOUTW: 0x00000054,\n      EMR_POLYBEZIER16: 0x00000055,\n      EMR_POLYGON16: 0x00000056,\n      EMR_POLYLINE16: 0x00000057,\n      EMR_POLYBEZIERTO16: 0x00000058,\n      EMR_POLYLINETO16: 0x00000059,\n      EMR_POLYPOLYLINE16: 0x0000005A,\n      EMR_POLYPOLYGON16: 0x0000005B,\n      EMR_POLYDRAW16: 0x0000005C,\n      EMR_CREATEMONOBRUSH: 0x0000005D,\n      EMR_CREATEDIBPATTERNBRUSHPT: 0x0000005E,\n      EMR_EXTCREATEPEN: 0x0000005F,\n      EMR_POLYTEXTOUTA: 0x00000060,\n      EMR_POLYTEXTOUTW: 0x00000061,\n      EMR_SETICMMODE: 0x00000062,\n      EMR_CREATECOLORSPACE: 0x00000063,\n      EMR_SETCOLORSPACE: 0x00000064,\n      EMR_DELETECOLORSPACE: 0x00000065,\n      EMR_GLSRECORD: 0x00000066,\n      EMR_GLSBOUNDEDRECORD: 0x00000067,\n      EMR_PIXELFORMAT: 0x00000068,\n      EMR_DRAWESCAPE: 0x00000069,\n      EMR_EXTESCAPE: 0x0000006A,\n      EMR_SMALLTEXTOUT: 0x0000006C,\n      EMR_FORCEUFIMAPPING: 0x0000006D,\n      EMR_NAMEDESCAPE: 0x0000006E,\n      EMR_COLORCORRECTPALETTE: 0x0000006F,\n      EMR_SETICMPROFILEA: 0x00000070,\n      EMR_SETICMPROFILEW: 0x00000071,\n      EMR_ALPHABLEND: 0x00000072,\n      EMR_SETLAYOUT: 0x00000073,\n      EMR_TRANSPARENTBLT: 0x00000074,\n      EMR_GRADIENTFILL: 0x00000076,\n      EMR_SETLINKEDUFIS: 0x00000077,\n      EMR_SETTEXTJUSTIFICATION: 0x00000078,\n      EMR_COLORMATCHTOTARGETW: 0x00000079,\n      EMR_CREATECOLORSPACEW: 0x0000007A\n    };\n    exports.FromEMF.K = []; // (function() {\n    //     var inp, out, stt;\n    //     inp = FromEMF.C;   out = FromEMF.K;   stt=4;\n    //     for(var p in inp) out[inp[p]] = p.slice(stt);\n    // }  )();\n\n    exports.ToContext2D = function (needPage, scale) {\n      this.canvas = document.createElement(\"canvas\");\n      this.ctx = this.canvas.getContext(\"2d\");\n      this.bb = null;\n      this.currPage = 0;\n      this.needPage = needPage;\n      this.scale = scale;\n    };\n\n    exports.ToContext2D.prototype.StartPage = function (x, y, w, h) {\n      if (this.currPage != this.needPage) return;\n      this.bb = [x, y, w, h];\n      var scl = this.scale,\n          dpr = window.devicePixelRatio;\n      var cnv = this.canvas,\n          ctx = this.ctx;\n      cnv.width = Math.round(w * scl);\n      cnv.height = Math.round(h * scl);\n      ctx.translate(0, h * scl);\n      ctx.scale(scl, -scl);\n      cnv.setAttribute(\"style\", \"border:1px solid; width:\" + cnv.width / dpr + \"px; height:\" + cnv.height / dpr + \"px\");\n    };\n\n    exports.ToContext2D.prototype.Fill = function (gst, evenOdd) {\n      if (this.currPage != this.needPage) return;\n      var ctx = this.ctx;\n      ctx.beginPath();\n\n      this._setStyle(gst, ctx);\n\n      this._draw(gst.pth, ctx);\n\n      ctx.fill();\n    };\n\n    exports.ToContext2D.prototype.Stroke = function (gst) {\n      if (this.currPage != this.needPage) return;\n      var ctx = this.ctx;\n      ctx.beginPath();\n\n      this._setStyle(gst, ctx);\n\n      this._draw(gst.pth, ctx);\n\n      ctx.stroke();\n    };\n\n    exports.ToContext2D.prototype.PutText = function (gst, str, stw) {\n      if (this.currPage != this.needPage) return;\n\n      var scl = this._scale(gst.ctm);\n\n      var ctx = this.ctx;\n\n      this._setStyle(gst, ctx);\n\n      ctx.save();\n      var m = [1, 0, 0, -1, 0, 0];\n\n      this._concat(m, gst.font.Tm);\n\n      this._concat(m, gst.ctm); //console.log(str, m, gst);  throw \"e\";\n\n\n      ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n      ctx.fillText(str, 0, 0);\n      ctx.restore();\n    };\n\n    exports.ToContext2D.prototype.PutImage = function (gst, buff, w, h, msk) {\n      if (this.currPage != this.needPage) return;\n      var ctx = this.ctx;\n\n      if (buff.length == w * h * 4) {\n        buff = buff.slice(0);\n        if (msk && msk.length == w * h * 4) for (var i = 0; i < buff.length; i += 4) {\n          buff[i + 3] = msk[i + 1];\n        }\n        var cnv = document.createElement(\"canvas\"),\n            cctx = cnv.getContext(\"2d\");\n        cnv.width = w;\n        cnv.height = h;\n        var imgd = cctx.createImageData(w, h);\n\n        for (var i = 0; i < buff.length; i++) {\n          imgd.data[i] = buff[i];\n        }\n\n        cctx.putImageData(imgd, 0, 0);\n        ctx.save();\n        var m = [1, 0, 0, 1, 0, 0];\n\n        this._concat(m, [1 / w, 0, 0, -1 / h, 0, 1]);\n\n        this._concat(m, gst.ctm);\n\n        ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n        ctx.drawImage(cnv, 0, 0);\n        ctx.restore();\n      }\n    };\n\n    exports.ToContext2D.prototype.ShowPage = function () {\n      this.currPage++;\n    };\n\n    exports.ToContext2D.prototype.Done = function () {};\n\n    function _flt(n) {\n      return \"\" + parseFloat(n.toFixed(2));\n    }\n\n    exports.ToContext2D.prototype._setStyle = function (gst, ctx) {\n      var scl = this._scale(gst.ctm);\n\n      ctx.fillStyle = this._getFill(gst.colr, gst.ca, ctx);\n      ctx.strokeStyle = this._getFill(gst.COLR, gst.CA, ctx);\n      ctx.lineCap = [\"butt\", \"round\", \"square\"][gst.lcap];\n      ctx.lineJoin = [\"miter\", \"round\", \"bevel\"][gst.ljoin];\n      ctx.lineWidth = gst.lwidth * scl;\n      var dsh = gst.dash.slice(0);\n\n      for (var i = 0; i < dsh.length; i++) {\n        dsh[i] = _flt(dsh[i] * scl);\n      }\n\n      ctx.setLineDash(dsh);\n      ctx.miterLimit = gst.mlimit * scl;\n      var fn = gst.font.Tf,\n          ln = fn.toLowerCase();\n      var p0 = ln.indexOf(\"bold\") != -1 ? \"bold \" : \"\";\n      var p1 = ln.indexOf(\"italic\") != -1 || ln.indexOf(\"oblique\") != -1 ? \"italic \" : \"\";\n      ctx.font = p0 + p1 + gst.font.Tfs + \"px \\\"\" + fn + \"\\\"\";\n    };\n\n    exports.ToContext2D.prototype._getFill = function (colr, ca, ctx) {\n      if (colr.typ == null) return this._colr(colr, ca);else {\n        var grd = colr,\n            crd = grd.crds,\n            mat = grd.mat,\n            scl = this._scale(mat),\n            gf;\n\n        if (grd.typ == \"lin\") {\n          var p0 = this._multPoint(mat, crd.slice(0, 2)),\n              p1 = this._multPoint(mat, crd.slice(2));\n\n          gf = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n        } else if (grd.typ == \"rad\") {\n          var p0 = this._multPoint(mat, crd.slice(0, 2)),\n              p1 = this._multPoint(mat, crd.slice(3));\n\n          gf = ctx.createRadialGradient(p0[0], p0[1], crd[2] * scl, p1[0], p1[1], crd[5] * scl);\n        }\n\n        for (var i = 0; i < grd.grad.length; i++) {\n          gf.addColorStop(grd.grad[i][0], this._colr(grd.grad[i][1], ca));\n        }\n\n        return gf;\n      }\n    };\n\n    exports.ToContext2D.prototype._colr = function (c, a) {\n      return \"rgba(\" + Math.round(c[0] * 255) + \",\" + Math.round(c[1] * 255) + \",\" + Math.round(c[2] * 255) + \",\" + a + \")\";\n    };\n\n    exports.ToContext2D.prototype._scale = function (m) {\n      return Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2]));\n    };\n\n    exports.ToContext2D.prototype._concat = function (m, w) {\n      var a = m[0],\n          b = m[1],\n          c = m[2],\n          d = m[3],\n          tx = m[4],\n          ty = m[5];\n      m[0] = a * w[0] + b * w[2];\n      m[1] = a * w[1] + b * w[3];\n      m[2] = c * w[0] + d * w[2];\n      m[3] = c * w[1] + d * w[3];\n      m[4] = tx * w[0] + ty * w[2] + w[4];\n      m[5] = tx * w[1] + ty * w[3] + w[5];\n    };\n\n    exports.ToContext2D.prototype._multPoint = function (m, p) {\n      var x = p[0],\n          y = p[1];\n      return [x * m[0] + y * m[2] + m[4], x * m[1] + y * m[3] + m[5]];\n    }, exports.ToContext2D.prototype._draw = function (path, ctx) {\n      var c = 0,\n          crds = path.crds;\n\n      for (var j = 0; j < path.cmds.length; j++) {\n        var cmd = path.cmds[j];\n\n        if (cmd == \"M\") {\n          ctx.moveTo(crds[c], crds[c + 1]);\n          c += 2;\n        } else if (cmd == \"L\") {\n          ctx.lineTo(crds[c], crds[c + 1]);\n          c += 2;\n        } else if (cmd == \"C\") {\n          ctx.bezierCurveTo(crds[c], crds[c + 1], crds[c + 2], crds[c + 3], crds[c + 4], crds[c + 5]);\n          c += 6;\n        } else if (cmd == \"Q\") {\n          ctx.quadraticCurveTo(crds[c], crds[c + 1], crds[c + 2], crds[c + 3]);\n          c += 4;\n        } else if (cmd == \"Z\") {\n          ctx.closePath();\n        }\n      }\n    };\n\n    },{}],93:[function(require,module,exports){\n    \"use strict\";\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.getBinaryContent = exports.isContainMultiType = exports.isKoera = exports.isJapanese = exports.isChinese = exports.fromulaRef = exports.escapeCharacter = exports.generateRandomIndex = exports.LightenDarkenColor = exports.getRowHeightPixel = exports.getColumnWidthPixel = exports.getXmlAttibute = exports.getPxByEMUs = exports.getptToPxRatioByDPI = exports.getcellrange = exports.getRangetxt = void 0;\n\n    var constant_1 = require(\"./constant\");\n\n    function getRangetxt(range, sheettxt) {\n      var row0 = range[\"row\"][0],\n          row1 = range[\"row\"][1];\n      var column0 = range[\"column\"][0],\n          column1 = range[\"column\"][1];\n\n      if (row0 == null && row1 == null) {\n        return sheettxt + chatatABC(column0) + \":\" + chatatABC(column1);\n      } else if (column0 == null && column1 == null) {\n        return sheettxt + (row0 + 1) + \":\" + (row1 + 1);\n      } else {\n        if (column0 == column1 && row0 == row1) {\n          return sheettxt + chatatABC(column0) + (row0 + 1);\n        } else {\n          return sheettxt + chatatABC(column0) + (row0 + 1) + \":\" + chatatABC(column1) + (row1 + 1);\n        }\n      }\n    }\n\n    exports.getRangetxt = getRangetxt;\n\n    function getcellrange(txt, sheets, sheetId) {\n      if (sheets === void 0) {\n        sheets = {};\n      }\n\n      if (sheetId === void 0) {\n        sheetId = \"1\";\n      }\n\n      var val = txt.split(\"!\");\n      var sheettxt = \"\",\n          rangetxt = \"\",\n          sheetIndex = -1;\n\n      if (val.length > 1) {\n        sheettxt = val[0];\n        rangetxt = val[1];\n        var si = sheets[sheettxt];\n\n        if (si == null) {\n          sheetIndex = parseInt(sheetId);\n        } else {\n          sheetIndex = parseInt(si);\n        }\n      } else {\n        sheetIndex = parseInt(sheetId);\n        rangetxt = val[0];\n      }\n\n      if (rangetxt.indexOf(\":\") == -1) {\n        var row = parseInt(rangetxt.replace(/[^0-9]/g, \"\")) - 1;\n        var col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, \"\"));\n\n        if (!isNaN(row) && !isNaN(col)) {\n          return {\n            \"row\": [row, row],\n            \"column\": [col, col],\n            \"sheetIndex\": sheetIndex\n          };\n        } else {\n          return null;\n        }\n      } else {\n        var rangetxtArray = rangetxt.split(\":\");\n        var row = [],\n            col = [];\n        row[0] = parseInt(rangetxtArray[0].replace(/[^0-9]/g, \"\")) - 1;\n        row[1] = parseInt(rangetxtArray[1].replace(/[^0-9]/g, \"\")) - 1; // if (isNaN(row[0])) {\n        //     row[0] = 0;\n        // }\n        // if (isNaN(row[1])) {\n        //     row[1] = sheetdata.length - 1;\n        // }\n\n        if (row[0] > row[1]) {\n          return null;\n        }\n\n        col[0] = ABCatNum(rangetxtArray[0].replace(/[^A-Za-z]/g, \"\"));\n        col[1] = ABCatNum(rangetxtArray[1].replace(/[^A-Za-z]/g, \"\")); // if (isNaN(col[0])) {\n        //     col[0] = 0;\n        // }\n        // if (isNaN(col[1])) {\n        //     col[1] = sheetdata[0].length - 1;\n        // }\n\n        if (col[0] > col[1]) {\n          return null;\n        }\n\n        return {\n          \"row\": row,\n          \"column\": col,\n          \"sheetIndex\": sheetIndex\n        };\n      }\n    }\n\n    exports.getcellrange = getcellrange; //列下标  字母转数字\n\n    function ABCatNum(abc) {\n      abc = abc.toUpperCase();\n      var abc_len = abc.length;\n\n      if (abc_len == 0) {\n        return NaN;\n      }\n\n      var abc_array = abc.split(\"\");\n      var wordlen = constant_1.columeHeader_word.length;\n      var ret = 0;\n\n      for (var i = abc_len - 1; i >= 0; i--) {\n        if (i == abc_len - 1) {\n          ret += constant_1.columeHeader_word_index[abc_array[i]];\n        } else {\n          ret += Math.pow(wordlen, abc_len - i - 1) * (constant_1.columeHeader_word_index[abc_array[i]] + 1);\n        }\n      }\n\n      return ret;\n    } //列下标  数字转字母\n\n\n    function chatatABC(index) {\n      var wordlen = constant_1.columeHeader_word.length;\n\n      if (index < wordlen) {\n        return constant_1.columeHeader_word[index];\n      } else {\n        var last = 0,\n            pre = 0,\n            ret = \"\";\n        var i = 1,\n            n = 0;\n\n        while (index >= wordlen / (wordlen - 1) * (Math.pow(wordlen, i++) - 1)) {\n          n = i;\n        }\n\n        var index_ab = index - wordlen / (wordlen - 1) * (Math.pow(wordlen, n - 1) - 1); //970\n\n        last = index_ab + 1;\n\n        for (var x = n; x > 0; x--) {\n          var last1 = last,\n              x1 = x; //-702=268, 3\n\n          if (x == 1) {\n            last1 = last1 % wordlen;\n\n            if (last1 == 0) {\n              last1 = 26;\n            }\n\n            return ret + constant_1.columeHeader_word[last1 - 1];\n          }\n\n          last1 = Math.ceil(last1 / Math.pow(wordlen, x - 1)); //last1 = last1 % wordlen;\n\n          ret += constant_1.columeHeader_word[last1 - 1];\n\n          if (x > 1) {\n            last = last - (last1 - 1) * wordlen;\n          }\n        }\n      }\n    }\n    /**\n     * @return ratio, default 0.75 1in = 2.54cm = 25.4mm = 72pt = 6pc,  pt = 1/72 In, px = 1/dpi In\n    */\n\n\n    function getptToPxRatioByDPI() {\n      return 72 / 96;\n    }\n\n    exports.getptToPxRatioByDPI = getptToPxRatioByDPI;\n    /**\n     * @emus EMUs, Excel drawing unit\n     * @return pixel\n    */\n\n    function getPxByEMUs(emus) {\n      if (emus == null) {\n        return 0;\n      }\n\n      var inch = emus / 914400;\n      var pt = inch * 72;\n      var px = pt / getptToPxRatioByDPI();\n      return px;\n    }\n\n    exports.getPxByEMUs = getPxByEMUs;\n    /**\n     * @dom xml attribute object\n     * @attr attribute name\n     * @d if attribute is null, return default value\n     * @return attribute value\n    */\n\n    function getXmlAttibute(dom, attr, d) {\n      var value = dom[attr];\n      value = value == null ? d : value;\n      return value;\n    }\n\n    exports.getXmlAttibute = getXmlAttibute;\n    /**\n     * @columnWidth Excel column width\n     * @return pixel column width\n    */\n\n    function getColumnWidthPixel(columnWidth) {\n      var pix = Math.round((columnWidth - 0.83) * 8 + 5);\n      return pix;\n    }\n\n    exports.getColumnWidthPixel = getColumnWidthPixel;\n    /**\n     * @rowHeight Excel row height\n     * @return pixel row height\n    */\n\n    function getRowHeightPixel(rowHeight) {\n      var pix = Math.round(rowHeight / getptToPxRatioByDPI());\n      return pix;\n    }\n\n    exports.getRowHeightPixel = getRowHeightPixel;\n\n    function LightenDarkenColor(sixColor, tint) {\n      var hex = sixColor.substring(sixColor.length - 6, sixColor.length);\n      var rgbArray = hexToRgbArray(\"#\" + hex);\n      var hslArray = rgbToHsl(rgbArray[0], rgbArray[1], rgbArray[2]);\n\n      if (tint > 0) {\n        hslArray[2] = hslArray[2] * (1.0 - tint) + tint;\n      } else if (tint < 0) {\n        hslArray[2] = hslArray[2] * (1.0 + tint);\n      } else {\n        return \"#\" + hex;\n      }\n\n      var newRgbArray = hslToRgb(hslArray[0], hslArray[1], hslArray[2]);\n      return rgbToHex(\"RGB(\" + newRgbArray.join(\",\") + \")\");\n    }\n\n    exports.LightenDarkenColor = LightenDarkenColor;\n\n    function rgbToHex(rgb) {\n      //十六进制颜色值的正则表达式\n      var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 如果是rgb颜色表示\n\n      if (/^(rgb|RGB)/.test(rgb)) {\n        var aColor = rgb.replace(/(?:\\(|\\)|rgb|RGB)*/g, \"\").split(\",\");\n        var strHex = \"#\";\n\n        for (var i = 0; i < aColor.length; i++) {\n          var hex = Number(aColor[i]).toString(16);\n\n          if (hex.length < 2) {\n            hex = '0' + hex;\n          }\n\n          strHex += hex;\n        }\n\n        if (strHex.length !== 7) {\n          strHex = rgb;\n        }\n\n        return strHex;\n      } else if (reg.test(rgb)) {\n        var aNum = rgb.replace(/#/, \"\").split(\"\");\n\n        if (aNum.length === 6) {\n          return rgb;\n        } else if (aNum.length === 3) {\n          var numHex = \"#\";\n\n          for (var i = 0; i < aNum.length; i += 1) {\n            numHex += aNum[i] + aNum[i];\n          }\n\n          return numHex;\n        }\n      }\n\n      return rgb;\n    }\n\n    function hexToRgb(hex) {\n      var sColor = hex.toLowerCase(); //十六进制颜色值的正则表达式\n\n      var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 如果是16进制颜色\n\n      if (sColor && reg.test(sColor)) {\n        if (sColor.length === 4) {\n          var sColorNew = \"#\";\n\n          for (var i = 1; i < 4; i += 1) {\n            sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n          }\n\n          sColor = sColorNew;\n        } //处理六位的颜色值\n\n\n        var sColorChange = [];\n\n        for (var i = 1; i < 7; i += 2) {\n          sColorChange.push(parseInt(\"0x\" + sColor.slice(i, i + 2)));\n        }\n\n        return \"RGB(\" + sColorChange.join(\",\") + \")\";\n      }\n\n      return sColor;\n    }\n\n    function hexToRgbArray(hex) {\n      var sColor = hex.toLowerCase(); //十六进制颜色值的正则表达式\n\n      var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 如果是16进制颜色\n\n      if (sColor && reg.test(sColor)) {\n        if (sColor.length === 4) {\n          var sColorNew = \"#\";\n\n          for (var i = 1; i < 4; i += 1) {\n            sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n          }\n\n          sColor = sColorNew;\n        } //处理六位的颜色值\n\n\n        var sColorChange = [];\n\n        for (var i = 1; i < 7; i += 2) {\n          sColorChange.push(parseInt(\"0x\" + sColor.slice(i, i + 2)));\n        }\n\n        return sColorChange;\n      }\n\n      return null;\n    }\n    /**\n     * HSL颜色值转换为RGB.\n     * 换算公式改编自 http://en.wikipedia.org/wiki/HSL_color_space.\n     * h, s, 和 l 设定在 [0, 1] 之间\n     * 返回的 r, g, 和 b 在 [0, 255]之间\n     *\n     * @param   Number  h       色相\n     * @param   Number  s       饱和度\n     * @param   Number  l       亮度\n     * @return  Array           RGB色值数值\n     */\n\n\n    function hslToRgb(h, s, l) {\n      var r, g, b;\n\n      if (s == 0) {\n        r = g = b = l; // achromatic\n      } else {\n        var hue2rgb = function hue2rgb(p, q, t) {\n          if (t < 0) t += 1;\n          if (t > 1) t -= 1;\n          if (t < 1 / 6) return p + (q - p) * 6 * t;\n          if (t < 1 / 2) return q;\n          if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n          return p;\n        };\n\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n      }\n\n      return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n    }\n    /**\n     * RGB 颜色值转换为 HSL.\n     * 转换公式参考自 http://en.wikipedia.org/wiki/HSL_color_space.\n     * r, g, 和 b 需要在 [0, 255] 范围内\n     * 返回的 h, s, 和 l 在 [0, 1] 之间\n     *\n     * @param   Number  r       红色色值\n     * @param   Number  g       绿色色值\n     * @param   Number  b       蓝色色值\n     * @return  Array           HSL各值数组\n     */\n\n\n    function rgbToHsl(r, g, b) {\n      r /= 255, g /= 255, b /= 255;\n      var max = Math.max(r, g, b),\n          min = Math.min(r, g, b);\n      var h,\n          s,\n          l = (max + min) / 2;\n\n      if (max == min) {\n        h = s = 0; // achromatic\n      } else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n        switch (max) {\n          case r:\n            h = (g - b) / d + (g < b ? 6 : 0);\n            break;\n\n          case g:\n            h = (b - r) / d + 2;\n            break;\n\n          case b:\n            h = (r - g) / d + 4;\n            break;\n        }\n\n        h /= 6;\n      }\n\n      return [h, s, l];\n    }\n\n    function generateRandomIndex(prefix) {\n      if (prefix == null) {\n        prefix = \"Sheet\";\n      }\n\n      var userAgent = window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g, \"\").split(\"\");\n      var mid = \"\";\n\n      for (var i = 0; i < 5; i++) {\n        mid += userAgent[Math.round(Math.random() * (userAgent.length - 1))];\n      }\n\n      var time = new Date().getTime();\n      return prefix + \"_\" + mid + \"_\" + time;\n    }\n\n    exports.generateRandomIndex = generateRandomIndex;\n\n    function escapeCharacter(str) {\n      if (str == null || str.length == 0) {\n        return str;\n      }\n\n      return str.replace(/&amp;/g, \"&\").replace(/&quot;/g, '\"').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&nbsp;/g, ' ').replace(/&apos;/g, \"'\").replace(/&iexcl;/g, \"¡\").replace(/&cent;/g, \"¢\").replace(/&pound;/g, \"£\").replace(/&curren;/g, \"¤\").replace(/&yen;/g, \"¥\").replace(/&brvbar;/g, \"¦\").replace(/&sect;/g, \"§\").replace(/&uml;/g, \"¨\").replace(/&copy;/g, \"©\").replace(/&ordf;/g, \"ª\").replace(/&laquo;/g, \"«\").replace(/&not;/g, \"¬\").replace(/&shy;/g, \"­\").replace(/&reg;/g, \"®\").replace(/&macr;/g, \"¯\").replace(/&deg;/g, \"°\").replace(/&plusmn;/g, \"±\").replace(/&sup2;/g, \"²\").replace(/&sup3;/g, \"³\").replace(/&acute;/g, \"´\").replace(/&micro;/g, \"µ\").replace(/&para;/g, \"¶\").replace(/&middot;/g, \"·\").replace(/&cedil;/g, \"¸\").replace(/&sup1;/g, \"¹\").replace(/&ordm;/g, \"º\").replace(/&raquo;/g, \"»\").replace(/&frac14;/g, \"¼\").replace(/&frac12;/g, \"½\").replace(/&frac34;/g, \"¾\").replace(/&iquest;/g, \"¿\").replace(/&times;/g, \"×\").replace(/&divide;/g, \"÷\").replace(/&Agrave;/g, \"À\").replace(/&Aacute;/g, \"Á\").replace(/&Acirc;/g, \"Â\").replace(/&Atilde;/g, \"Ã\").replace(/&Auml;/g, \"Ä\").replace(/&Aring;/g, \"Å\").replace(/&AElig;/g, \"Æ\").replace(/&Ccedil;/g, \"Ç\").replace(/&Egrave;/g, \"È\").replace(/&Eacute;/g, \"É\").replace(/&Ecirc;/g, \"Ê\").replace(/&Euml;/g, \"Ë\").replace(/&Igrave;/g, \"Ì\").replace(/&Iacute;/g, \"Í\").replace(/&Icirc;/g, \"Î\").replace(/&Iuml;/g, \"Ï\").replace(/&ETH;/g, \"Ð\").replace(/&Ntilde;/g, \"Ñ\").replace(/&Ograve;/g, \"Ò\").replace(/&Oacute;/g, \"Ó\").replace(/&Ocirc;/g, \"Ô\").replace(/&Otilde;/g, \"Õ\").replace(/&Ouml;/g, \"Ö\").replace(/&Oslash;/g, \"Ø\").replace(/&Ugrave;/g, \"Ù\").replace(/&Uacute;/g, \"Ú\").replace(/&Ucirc;/g, \"Û\").replace(/&Uuml;/g, \"Ü\").replace(/&Yacute;/g, \"Ý\").replace(/&THORN;/g, \"Þ\").replace(/&szlig;/g, \"ß\").replace(/&agrave;/g, \"à\").replace(/&aacute;/g, \"á\").replace(/&acirc;/g, \"â\").replace(/&atilde;/g, \"ã\").replace(/&auml;/g, \"ä\").replace(/&aring;/g, \"å\").replace(/&aelig;/g, \"æ\").replace(/&ccedil;/g, \"ç\").replace(/&egrave;/g, \"è\").replace(/&eacute;/g, \"é\").replace(/&ecirc;/g, \"ê\").replace(/&euml;/g, \"ë\").replace(/&igrave;/g, \"ì\").replace(/&iacute;/g, \"í\").replace(/&icirc;/g, \"î\").replace(/&iuml;/g, \"ï\").replace(/&eth;/g, \"ð\").replace(/&ntilde;/g, \"ñ\").replace(/&ograve;/g, \"ò\").replace(/&oacute;/g, \"ó\").replace(/&ocirc;/g, \"ô\").replace(/&otilde;/g, \"õ\").replace(/&ouml;/g, \"ö\").replace(/&oslash;/g, \"ø\").replace(/&ugrave;/g, \"ù\").replace(/&uacute;/g, \"ú\").replace(/&ucirc;/g, \"û\").replace(/&uuml;/g, \"ü\").replace(/&yacute;/g, \"ý\").replace(/&thorn;/g, \"þ\").replace(/&yuml;/g, \"ÿ\");\n    }\n\n    exports.escapeCharacter = escapeCharacter;\n\n    var fromulaRef =\n    /** @class */\n    function () {\n      function fromulaRef() {}\n\n      fromulaRef.trim = function (str) {\n        if (str == null) {\n          str = \"\";\n        }\n\n        return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n      };\n\n      fromulaRef.functionCopy = function (txt, mode, step) {\n        var _this = this;\n\n        if (_this.operatorjson == null) {\n          var arr = _this.operator.split(\"|\"),\n              op = {};\n\n          for (var i_1 = 0; i_1 < arr.length; i_1++) {\n            op[arr[i_1].toString()] = 1;\n          }\n\n          _this.operatorjson = op;\n        }\n\n        if (mode == null) {\n          mode = \"down\";\n        }\n\n        if (step == null) {\n          step = 1;\n        }\n\n        if (txt.substr(0, 1) == \"=\") {\n          txt = txt.substr(1);\n        }\n\n        var funcstack = txt.split(\"\");\n        var i = 0,\n            str = \"\",\n            function_str = \"\",\n            ispassby = true;\n        var matchConfig = {\n          \"bracket\": 0,\n          \"comma\": 0,\n          \"squote\": 0,\n          \"dquote\": 0\n        };\n\n        while (i < funcstack.length) {\n          var s = funcstack[i];\n\n          if (s == \"(\" && matchConfig.dquote == 0) {\n            matchConfig.bracket += 1;\n\n            if (str.length > 0) {\n              function_str += str + \"(\";\n            } else {\n              function_str += \"(\";\n            }\n\n            str = \"\";\n          } else if (s == \")\" && matchConfig.dquote == 0) {\n            matchConfig.bracket -= 1;\n            function_str += _this.functionCopy(str, mode, step) + \")\";\n            str = \"\";\n          } else if (s == '\"' && matchConfig.squote == 0) {\n            if (matchConfig.dquote > 0) {\n              function_str += str + '\"';\n              matchConfig.dquote -= 1;\n              str = \"\";\n            } else {\n              matchConfig.dquote += 1;\n              str += '\"';\n            }\n          } else if (s == ',' && matchConfig.dquote == 0) {\n            function_str += _this.functionCopy(str, mode, step) + ',';\n            str = \"\";\n          } else if (s == '&' && matchConfig.dquote == 0) {\n            if (str.length > 0) {\n              function_str += _this.functionCopy(str, mode, step) + \"&\";\n              str = \"\";\n            } else {\n              function_str += \"&\";\n            }\n          } else if (s in _this.operatorjson && matchConfig.dquote == 0) {\n            var s_next = \"\";\n\n            if (i + 1 < funcstack.length) {\n              s_next = funcstack[i + 1];\n            }\n\n            var p = i - 1,\n                s_pre = null;\n\n            if (p >= 0) {\n              do {\n                s_pre = funcstack[p--];\n              } while (p >= 0 && s_pre == \" \");\n            }\n\n            if (s + s_next in _this.operatorjson) {\n              if (str.length > 0) {\n                function_str += _this.functionCopy(str, mode, step) + s + s_next;\n                str = \"\";\n              } else {\n                function_str += s + s_next;\n              }\n\n              i++;\n            } else if (!/[^0-9]/.test(s_next) && s == \"-\" && (s_pre == \"(\" || s_pre == null || s_pre == \",\" || s_pre == \" \" || s_pre in _this.operatorjson)) {\n              str += s;\n            } else {\n              if (str.length > 0) {\n                function_str += _this.functionCopy(str, mode, step) + s;\n                str = \"\";\n              } else {\n                function_str += s;\n              }\n            }\n          } else {\n            str += s;\n          }\n\n          if (i == funcstack.length - 1) {\n            if (_this.iscelldata(_this.trim(str))) {\n              if (mode == \"down\") {\n                function_str += _this.downparam(_this.trim(str), step);\n              } else if (mode == \"up\") {\n                function_str += _this.upparam(_this.trim(str), step);\n              } else if (mode == \"left\") {\n                function_str += _this.leftparam(_this.trim(str), step);\n              } else if (mode == \"right\") {\n                function_str += _this.rightparam(_this.trim(str), step);\n              }\n            } else {\n              function_str += _this.trim(str);\n            }\n          }\n\n          i++;\n        }\n\n        return function_str;\n      };\n\n      fromulaRef.downparam = function (txt, step) {\n        return this.updateparam(\"d\", txt, step);\n      };\n\n      fromulaRef.upparam = function (txt, step) {\n        return this.updateparam(\"u\", txt, step);\n      };\n\n      fromulaRef.leftparam = function (txt, step) {\n        return this.updateparam(\"l\", txt, step);\n      };\n\n      fromulaRef.rightparam = function (txt, step) {\n        return this.updateparam(\"r\", txt, step);\n      };\n\n      fromulaRef.updateparam = function (orient, txt, step) {\n        var _this = this;\n\n        var val = txt.split(\"!\"),\n            rangetxt,\n            prefix = \"\";\n\n        if (val.length > 1) {\n          rangetxt = val[1];\n          prefix = val[0] + \"!\";\n        } else {\n          rangetxt = val[0];\n        }\n\n        if (rangetxt.indexOf(\":\") == -1) {\n          var row = parseInt(rangetxt.replace(/[^0-9]/g, \"\"));\n          var col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, \"\"));\n\n          var freezonFuc = _this.isfreezonFuc(rangetxt);\n\n          var $row = freezonFuc[0] ? \"$\" : \"\",\n              $col = freezonFuc[1] ? \"$\" : \"\";\n\n          if (orient == \"u\" && !freezonFuc[0]) {\n            row -= step;\n          } else if (orient == \"r\" && !freezonFuc[1]) {\n            col += step;\n          } else if (orient == \"l\" && !freezonFuc[1]) {\n            col -= step;\n          } else if (!freezonFuc[0]) {\n            row += step;\n          }\n\n          if (row < 0 || col < 0) {\n            return _this.error.r;\n          }\n\n          if (!isNaN(row) && !isNaN(col)) {\n            return prefix + $col + chatatABC(col) + $row + row;\n          } else if (!isNaN(row)) {\n            return prefix + $row + row;\n          } else if (!isNaN(col)) {\n            return prefix + $col + chatatABC(col);\n          } else {\n            return txt;\n          }\n        } else {\n          rangetxt = rangetxt.split(\":\");\n          var row = [],\n              col = [];\n          row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, \"\"));\n          row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, \"\"));\n\n          if (row[0] > row[1]) {\n            return txt;\n          }\n\n          col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, \"\"));\n          col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, \"\"));\n\n          if (col[0] > col[1]) {\n            return txt;\n          }\n\n          var freezonFuc0 = _this.isfreezonFuc(rangetxt[0]);\n\n          var freezonFuc1 = _this.isfreezonFuc(rangetxt[1]);\n\n          var $row0 = freezonFuc0[0] ? \"$\" : \"\",\n              $col0 = freezonFuc0[1] ? \"$\" : \"\";\n          var $row1 = freezonFuc1[0] ? \"$\" : \"\",\n              $col1 = freezonFuc1[1] ? \"$\" : \"\";\n\n          if (orient == \"u\") {\n            if (!freezonFuc0[0]) {\n              row[0] -= step;\n            }\n\n            if (!freezonFuc1[0]) {\n              row[1] -= step;\n            }\n          } else if (orient == \"r\") {\n            if (!freezonFuc0[1]) {\n              col[0] += step;\n            }\n\n            if (!freezonFuc1[1]) {\n              col[1] += step;\n            }\n          } else if (orient == \"l\") {\n            if (!freezonFuc0[1]) {\n              col[0] -= step;\n            }\n\n            if (!freezonFuc1[1]) {\n              col[1] -= step;\n            }\n          } else {\n            if (!freezonFuc0[0]) {\n              row[0] += step;\n            }\n\n            if (!freezonFuc1[0]) {\n              row[1] += step;\n            }\n          }\n\n          if (row[0] < 0 || col[0] < 0) {\n            return _this.error.r;\n          }\n\n          if (isNaN(col[0]) && isNaN(col[1])) {\n            return prefix + $row0 + row[0] + \":\" + $row1 + row[1];\n          } else if (isNaN(row[0]) && isNaN(row[1])) {\n            return prefix + $col0 + chatatABC(col[0]) + \":\" + $col1 + chatatABC(col[1]);\n          } else {\n            return prefix + $col0 + chatatABC(col[0]) + $row0 + row[0] + \":\" + $col1 + chatatABC(col[1]) + $row1 + row[1];\n          }\n        }\n      };\n\n      fromulaRef.iscelldata = function (txt) {\n        var val = txt.split(\"!\"),\n            rangetxt;\n\n        if (val.length > 1) {\n          rangetxt = val[1];\n        } else {\n          rangetxt = val[0];\n        }\n\n        var reg_cell = /^(([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+))$/g; //增加正则判断单元格为字母+数字的格式：如 A1:B3\n\n        var reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+))))$/g; //增加正则判断单元格为字母+数字或字母的格式：如 A1:B3，A:A\n\n        if (rangetxt.indexOf(\":\") == -1) {\n          var row = parseInt(rangetxt.replace(/[^0-9]/g, \"\")) - 1;\n          var col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, \"\"));\n\n          if (!isNaN(row) && !isNaN(col) && rangetxt.toString().match(reg_cell)) {\n            return true;\n          } else if (!isNaN(row)) {\n            return false;\n          } else if (!isNaN(col)) {\n            return false;\n          } else {\n            return false;\n          }\n        } else {\n          reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+)))|((([0-9]+)|([$][0-9]+s))))$/g;\n          rangetxt = rangetxt.split(\":\");\n          var row = [],\n              col = [];\n          row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, \"\")) - 1;\n          row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, \"\")) - 1;\n\n          if (row[0] > row[1]) {\n            return false;\n          }\n\n          col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, \"\"));\n          col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, \"\"));\n\n          if (col[0] > col[1]) {\n            return false;\n          }\n\n          if (rangetxt[0].toString().match(reg_cellRange) && rangetxt[1].toString().match(reg_cellRange)) {\n            return true;\n          } else {\n            return false;\n          }\n        }\n      };\n\n      fromulaRef.isfreezonFuc = function (txt) {\n        var row = txt.replace(/[^0-9]/g, \"\");\n        var col = txt.replace(/[^A-Za-z]/g, \"\");\n        var row$ = txt.substr(txt.indexOf(row) - 1, 1);\n        var col$ = txt.substr(txt.indexOf(col) - 1, 1);\n        var ret = [false, false];\n\n        if (row$ == \"$\") {\n          ret[0] = true;\n        }\n\n        if (col$ == \"$\") {\n          ret[1] = true;\n        }\n\n        return ret;\n      };\n\n      fromulaRef.operator = '==|!=|<>|<=|>=|=|+|-|>|<|/|*|%|&|^';\n      fromulaRef.error = {\n        v: \"#VALUE!\",\n        n: \"#NAME?\",\n        na: \"#N/A\",\n        r: \"#REF!\",\n        d: \"#DIV/0!\",\n        nm: \"#NUM!\",\n        nl: \"#NULL!\",\n        sp: \"#SPILL!\" //数组范围有其它值\n\n      };\n      fromulaRef.operatorjson = null;\n      return fromulaRef;\n    }();\n\n    exports.fromulaRef = fromulaRef;\n\n    function isChinese(temp) {\n      var re = /[^\\u4e00-\\u9fa5]/;\n      var reg = /[\\u3002|\\uff1f|\\uff01|\\uff0c|\\u3001|\\uff1b|\\uff1a|\\u201c|\\u201d|\\u2018|\\u2019|\\uff08|\\uff09|\\u300a|\\u300b|\\u3008|\\u3009|\\u3010|\\u3011|\\u300e|\\u300f|\\u300c|\\u300d|\\ufe43|\\ufe44|\\u3014|\\u3015|\\u2026|\\u2014|\\uff5e|\\ufe4f|\\uffe5]/;\n      if (reg.test(temp)) return true;\n      if (re.test(temp)) return false;\n      return true;\n    }\n\n    exports.isChinese = isChinese;\n\n    function isJapanese(temp) {\n      var re = /[^\\u0800-\\u4e00]/;\n      if (re.test(temp)) return false;\n      return true;\n    }\n\n    exports.isJapanese = isJapanese;\n\n    function isKoera(chr) {\n      if (chr > 0x3130 && chr < 0x318F || chr >= 0xAC00 && chr <= 0xD7A3) {\n        return true;\n      }\n\n      return false;\n    }\n\n    exports.isKoera = isKoera;\n\n    function isContainMultiType(str) {\n      var isUnicode = false;\n\n      if (escape(str).indexOf(\"%u\") > -1) {\n        isUnicode = true;\n      }\n\n      var isNot = false;\n      var reg = /[0-9a-z]/gi;\n\n      if (reg.test(str)) {\n        isNot = true;\n      }\n\n      var reEnSign = /[\\x00-\\xff]+/g;\n\n      if (reEnSign.test(str)) {\n        isNot = true;\n      }\n\n      if (isUnicode && isNot) {\n        return true;\n      }\n\n      return false;\n    }\n\n    exports.isContainMultiType = isContainMultiType;\n\n    function getBinaryContent(path, options) {\n      var promise, resolve, reject;\n      var callback;\n\n      if (!options) {\n        options = {};\n      } // taken from jQuery\n\n\n      var createStandardXHR = function createStandardXHR() {\n        try {\n          return new window.XMLHttpRequest();\n        } catch (e) {}\n      };\n\n      var createActiveXHR = function createActiveXHR() {\n        try {\n          return new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n        } catch (e) {}\n      }; // Create the request object\n\n\n      var createXHR = typeof window !== \"undefined\" && window.ActiveXObject ?\n      /* Microsoft failed to properly\n      * implement the XMLHttpRequest in IE7 (can't request local files),\n      * so we use the ActiveXObject when it is available\n      * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n      * we need a fallback.\n      */\n      function () {\n        return createStandardXHR() || createActiveXHR();\n      } : // For all other browsers, use the standard XMLHttpRequest object\n      createStandardXHR; // backward compatible callback\n\n      if (typeof options === \"function\") {\n        callback = options;\n        options = {};\n      } else if (typeof options.callback === 'function') {\n        // callback inside options object\n        callback = options.callback;\n      }\n\n      resolve = function resolve(data) {\n        callback(null, data);\n      };\n\n      reject = function reject(err) {\n        callback(err, null);\n      };\n\n      try {\n        var xhr = createXHR();\n        xhr.open('GET', path, true); // recent browsers\n\n        if (\"responseType\" in xhr) {\n          xhr.responseType = \"arraybuffer\";\n        } // older browser\n\n\n        if (xhr.overrideMimeType) {\n          xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n        }\n\n        xhr.onreadystatechange = function (event) {\n          // use `xhr` and not `this`... thanks IE\n          if (xhr.readyState === 4) {\n            if (xhr.status === 200 || xhr.status === 0) {\n              try {\n                resolve(function (xhr) {\n                  // for xhr.responseText, the 0xFF mask is applied by JSZip\n                  return xhr.response || xhr.responseText;\n                }(xhr));\n              } catch (err) {\n                reject(new Error(err));\n              }\n            } else {\n              reject(new Error(\"Ajax error for \" + path + \" : \" + this.status + \" \" + this.statusText));\n            }\n          }\n        };\n\n        if (options.progress) {\n          xhr.onprogress = function (e) {\n            options.progress({\n              path: path,\n              originalEvent: e,\n              percent: e.loaded / e.total * 100,\n              loaded: e.loaded,\n              total: e.total\n            });\n          };\n        }\n\n        xhr.send();\n      } catch (e) {\n        reject(new Error(e), null);\n      } // returns a promise or undefined depending on whether a callback was\n      // provided\n\n\n      return promise;\n    }\n\n    exports.getBinaryContent = getBinaryContent;\n\n    },{\"./constant\":91}],94:[function(require,module,exports){\n    \"use strict\";\n\n    Object.defineProperty(exports, \"__esModule\", {\n      value: true\n    });\n    exports.LuckyExcel = void 0;\n\n    var LuckyFile_1 = require(\"./ToLuckySheet/LuckyFile\"); // import {SecurityDoor,Car} from './content';\n\n\n    var HandleZip_1 = require(\"./HandleZip\"); // //demo\n    // function demoHandler(){\n    //     let upload = document.getElementById(\"Luckyexcel-demo-file\");\n    //     let selectADemo = document.getElementById(\"Luckyexcel-select-demo\");\n    //     let downlodDemo = document.getElementById(\"Luckyexcel-downlod-file\");\n    //     let mask = document.getElementById(\"lucky-mask-demo\");\n    //     if(upload){\n    //         window.onload = () => {\n    //             upload.addEventListener(\"change\", function(evt){\n    //                 var files:FileList = (evt.target as any).files;\n    //                 if(files==null || files.length==0){\n    //                     alert(\"No files wait for import\");\n    //                     return;\n    //                 }\n    //                 let name = files[0].name;\n    //                 let suffixArr = name.split(\".\"), suffix = suffixArr[suffixArr.length-1];\n    //                 if(suffix!=\"xlsx\"){\n    //                     alert(\"Currently only supports the import of xlsx files\");\n    //                     return;\n    //                 }\n    //                 LuckyExcel.transformExcelToLucky(files[0], function(exportJson:any, luckysheetfile:string){\n    //                     if(exportJson.sheets==null || exportJson.sheets.length==0){\n    //                         alert(\"Failed to read the content of the excel file, currently does not support xls files!\");\n    //                         return;\n    //                     }\n    //                     console.log(exportJson, luckysheetfile);\n    //                     window.luckysheet.destroy();\n    //                     window.luckysheet.create({\n    //                         container: 'luckysheet', //luckysheet is the container id\n    //                         showinfobar:false,\n    //                         data:exportJson.sheets,\n    //                         title:exportJson.info.name,\n    //                         userInfo:exportJson.info.name.creator\n    //                     });\n    //                 });\n    //             });\n    //             selectADemo.addEventListener(\"change\", function(evt){\n    //                 var obj:any = selectADemo;\n    //                 var index = obj.selectedIndex;\n    //                 var value = obj.options[index].value;\n    //                 var name = obj.options[index].innerHTML;\n    //                 if(value==\"\"){\n    //                     return;\n    //                 }\n    //                 mask.style.display = \"flex\";\n    //                 LuckyExcel.transformExcelToLuckyByUrl(value, name, function(exportJson:any, luckysheetfile:string){\n    //                     if(exportJson.sheets==null || exportJson.sheets.length==0){\n    //                         alert(\"Failed to read the content of the excel file, currently does not support xls files!\");\n    //                         return;\n    //                     }\n    //                     console.log(exportJson, luckysheetfile);\n    //                     mask.style.display = \"none\";\n    //                     window.luckysheet.destroy();\n    //                     window.luckysheet.create({\n    //                         container: 'luckysheet', //luckysheet is the container id\n    //                         showinfobar:false,\n    //                         data:exportJson.sheets,\n    //                         title:exportJson.info.name,\n    //                         userInfo:exportJson.info.name.creator\n    //                     });\n    //                 });\n    //             });\n    //             downlodDemo.addEventListener(\"click\", function(evt){\n    //                 var obj:any = selectADemo;\n    //                 var index = obj.selectedIndex;\n    //                 var value = obj.options[index].value;\n    //                 if(value.length==0){\n    //                     alert(\"Please select a demo file\");\n    //                     return;\n    //                 }\n    //                 var elemIF:any = document.getElementById(\"Lucky-download-frame\");\n    //                 if(elemIF==null){\n    //                     elemIF = document.createElement(\"iframe\");\n    //                     elemIF.style.display = \"none\";\n    //                     elemIF.id = \"Lucky-download-frame\";\n    //                     document.body.appendChild(elemIF);\n    //                 }\n    //                 elemIF.src = value;\n    //                 // elemIF.parentNode.removeChild(elemIF);\n    //             });\n    //         }\n    //     }\n    // }\n    // demoHandler();\n    // api\n\n\n    var LuckyExcel =\n    /** @class */\n    function () {\n      function LuckyExcel() {}\n\n      LuckyExcel.transformExcelToLucky = function (excelFile, callBack) {\n        var handleZip = new HandleZip_1.HandleZip(excelFile);\n        handleZip.unzipFile(function (files) {\n          var luckyFile = new LuckyFile_1.LuckyFile(files, excelFile.name);\n          var luckysheetfile = luckyFile.Parse();\n          var exportJson = JSON.parse(luckysheetfile);\n\n          if (callBack != undefined) {\n            callBack(exportJson, luckysheetfile);\n          }\n        }, function (err) {\n          console.error(err);\n        });\n      };\n\n      LuckyExcel.transformExcelToLuckyByUrl = function (url, name, callBack) {\n        var handleZip = new HandleZip_1.HandleZip();\n        handleZip.unzipFileByUrl(url, function (files) {\n          var luckyFile = new LuckyFile_1.LuckyFile(files, name);\n          var luckysheetfile = luckyFile.Parse();\n          var exportJson = JSON.parse(luckysheetfile);\n\n          if (callBack != undefined) {\n            callBack(exportJson, luckysheetfile);\n          }\n        }, function (err) {\n          console.error(err);\n        });\n      };\n\n      LuckyExcel.transformLuckyToExcel = function (LuckyFile, callBack) {\n        console.log(LuckyFile)\n      };\n\n      return LuckyExcel;\n    }();\n\n    exports.LuckyExcel = LuckyExcel;\n\n    },{\"./HandleZip\":84,\"./ToLuckySheet/LuckyFile\":87}],95:[function(require,module,exports){\n    \"use strict\";\n\n    var main_1 = require(\"./main\");\n\n    module.exports = main_1.LuckyExcel;\n\n    },{\"./main\":94}]},{},[95])(95)\n    });","define('socketcluster', ['exports'], function (exports) { 'use strict';\n\n\tfunction commonjsRequire () {\n\t\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n\t}\n\n\tfunction unwrapExports (x) {\n\t\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n\t}\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar socketclusterClient_min = createCommonjsModule(function (module, exports) {\n\t/**\n\t * SocketCluster JavaScript client v17.2.2\n\t */\n\t !function(t){module.exports=t();}(function(){return function(){return function t(e,r,n){function o(s,a){if(!r[s]){if(!e[s]){var u=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error(\"Cannot find module '\"+s+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var h=r[s]={exports:{}};e[s][0].call(h.exports,function(t){return o(e[s][1][t]||t)},h,h.exports,t,e,r,n);}return r[s].exports}for(var i=\"function\"==typeof commonjsRequire&&commonjsRequire,s=0;s<n.length;s++)o(n[s]);return o}}()({1:[function(t,e){function r(){this._internalStorage={},this.isLocalStorageEnabled=this._checkLocalStorageEnabled();}r.prototype._checkLocalStorageEnabled=function(){let t;try{localStorage.setItem(\"__scLocalStorageTest\",1),localStorage.removeItem(\"__scLocalStorageTest\");}catch(e){t=e;}return !t},r.prototype.saveToken=function(t,e){return this.isLocalStorageEnabled?localStorage.setItem(t,e):this._internalStorage[t]=e,Promise.resolve(e)},r.prototype.removeToken=function(t){let e=this.loadToken(t);return this.isLocalStorageEnabled?localStorage.removeItem(t):delete this._internalStorage[t],e},r.prototype.loadToken=function(t){let e;return e=this.isLocalStorageEnabled?localStorage.getItem(t):this._internalStorage[t]||null,Promise.resolve(e)},e.exports=r;},{}],2:[function(t,e){const r=t(\"stream-demux\"),n=t(\"async-stream-emitter\"),o=t(\"ag-channel\"),i=t(\"./auth\"),s=t(\"sc-formatter\"),a=t(\"./transport\"),u=t(\"linked-list\"),c=t(\"clone-deep\"),h=t(\"buffer/\").Buffer,l=t(\"./wait\"),f=t(\"sc-errors\"),p=f.InvalidArgumentsError,d=f.InvalidMessageError;f.InvalidActionError;const y=f.SocketProtocolError,m=f.TimeoutError,g=f.BadConnectionError,b=\"undefined\"!=typeof window;function v(t){n.call(this);let e=Object.assign({path:\"/socketcluster/\",secure:!1,protocolScheme:null,socketPath:null,autoConnect:!0,autoReconnect:!0,autoSubscribeOnConnect:!0,connectTimeout:2e4,ackTimeout:1e4,timestampRequests:!1,timestampParam:\"t\",authTokenName:\"socketcluster.authToken\",binaryType:\"arraybuffer\",batchOnHandshake:!1,batchOnHandshakeDuration:100,batchInterval:50,protocolVersion:2,wsOptions:{},cloneData:!1},t);this.id=null,this.version=e.version||null,this.protocolVersion=e.protocolVersion,this.state=this.CLOSED,this.authState=this.UNAUTHENTICATED,this.signedAuthToken=null,this.authToken=null,this.pendingReconnect=!1,this.pendingReconnectTimeout=null,this.preparingPendingSubscriptions=!1,this.clientId=e.clientId,this.wsOptions=e.wsOptions,this.connectTimeout=e.connectTimeout,this.ackTimeout=e.ackTimeout,this.channelPrefix=e.channelPrefix||null,this.disconnectOnUnload=null==e.disconnectOnUnload||e.disconnectOnUnload,this.authTokenName=e.authTokenName,e.pingTimeout=e.connectTimeout,this.pingTimeout=e.pingTimeout,this.pingTimeoutDisabled=!!e.pingTimeoutDisabled;let o=Math.pow(2,31)-1,a=t=>{if(this[t]>o)throw new p(`The ${t} value provided exceeded the maximum amount allowed`)};if(a(\"connectTimeout\"),a(\"ackTimeout\"),a(\"pingTimeout\"),this.connectAttempts=0,this.isBatching=!1,this.batchOnHandshake=e.batchOnHandshake,this.batchOnHandshakeDuration=e.batchOnHandshakeDuration,this._batchingIntervalId=null,this._outboundBuffer=new u,this._channelMap={},this._channelEventDemux=new r,this._channelDataDemux=new r,this._receiverDemux=new r,this._procedureDemux=new r,this.options=e,this._cid=1,this.options.callIdGenerator=(()=>this._cid++),this.options.autoReconnect){null==this.options.autoReconnectOptions&&(this.options.autoReconnectOptions={});let t=this.options.autoReconnectOptions;null==t.initialDelay&&(t.initialDelay=1e4),null==t.randomness&&(t.randomness=1e4),null==t.multiplier&&(t.multiplier=1.5),null==t.maxDelay&&(t.maxDelay=6e4);}if(null==this.options.subscriptionRetryOptions&&(this.options.subscriptionRetryOptions={}),this.options.authEngine?this.auth=this.options.authEngine:this.auth=new i,this.options.codecEngine?this.codec=this.options.codecEngine:this.codec=s,this.options.protocol){let t=new p('The \"protocol\" option does not affect socketcluster-client - If you want to utilize SSL/TLS, use \"secure\" option instead');this._onError(t);}if(this.options.query=e.query||{},\"string\"==typeof this.options.query){let t=new URLSearchParams(this.options.query),e={};for(let[r,n]of t.entries()){let t=e[r];null==t?e[r]=n:(Array.isArray(t)||(e[r]=[t]),e[r].push(n));}this.options.query=e;}b&&this.disconnectOnUnload&&\"undefined\"!=typeof addEventListener&&\"undefined\"!=typeof removeEventListener&&this._handleBrowserUnload(),this.options.autoConnect&&this.connect();}v.prototype=Object.create(n.prototype),v.CONNECTING=v.prototype.CONNECTING=a.prototype.CONNECTING,v.OPEN=v.prototype.OPEN=a.prototype.OPEN,v.CLOSED=v.prototype.CLOSED=a.prototype.CLOSED,v.AUTHENTICATED=v.prototype.AUTHENTICATED=\"authenticated\",v.UNAUTHENTICATED=v.prototype.UNAUTHENTICATED=\"unauthenticated\",v.SUBSCRIBED=v.prototype.SUBSCRIBED=o.SUBSCRIBED,v.PENDING=v.prototype.PENDING=o.PENDING,v.UNSUBSCRIBED=v.prototype.UNSUBSCRIBED=o.UNSUBSCRIBED,v.ignoreStatuses=f.socketProtocolIgnoreStatuses,v.errorStatuses=f.socketProtocolErrorStatuses,Object.defineProperty(v.prototype,\"isBufferingBatch\",{get:function(){return this.transport.isBufferingBatch}}),v.prototype.getBackpressure=function(){return Math.max(this.getAllListenersBackpressure(),this.getAllReceiversBackpressure(),this.getAllProceduresBackpressure(),this.getAllChannelsBackpressure())},v.prototype._handleBrowserUnload=async function(){let t=()=>{this.disconnect();},e=!1;(async()=>{let r=this.listener(\"connecting\").createConsumer();for(;;){if((await r.next()).done)break;e||(e=!0,addEventListener(\"beforeunload\",t,!1));}})(),(async()=>{let r=this.listener(\"close\").createConsumer();for(;;){if((await r.next()).done)break;e&&(e=!1,removeEventListener(\"beforeunload\",t,!1));}})();},v.prototype._setAuthToken=function(t){this._changeToAuthenticatedState(t.token),(async()=>{try{await this.auth.saveToken(this.authTokenName,t.token,{});}catch(t){this._onError(t);}})();},v.prototype._removeAuthToken=function(t){(async()=>{let t;try{t=await this.auth.removeToken(this.authTokenName);}catch(t){return void this._onError(t)}this.emit(\"removeAuthToken\",{oldAuthToken:t});})(),this._changeToUnauthenticatedStateAndClearTokens();},v.prototype._privateDataHandlerMap={\"#publish\":function(t){let e=this._undecorateChannelName(t.channel);this.isSubscribed(e,!0)&&this._channelDataDemux.write(e,t.data);},\"#kickOut\":function(t){let e=this._undecorateChannelName(t.channel),r=this._channelMap[e];r&&(this.emit(\"kickOut\",{channel:e,message:t.message}),this._channelEventDemux.write(`${e}/kickOut`,{message:t.message}),this._triggerChannelUnsubscribe(r));},\"#setAuthToken\":function(t){t&&this._setAuthToken(t);},\"#removeAuthToken\":function(t){this._removeAuthToken(t);}},v.prototype._privateRPCHandlerMap={\"#setAuthToken\":function(t,e){t?(this._setAuthToken(t),e.end()):e.error(new d(\"No token data provided by #setAuthToken event\"));},\"#removeAuthToken\":function(t,e){this._removeAuthToken(t),e.end();}},v.prototype.getState=function(){return this.state},v.prototype.getBytesReceived=function(){return this.transport.getBytesReceived()},v.prototype.deauthenticate=async function(){(async()=>{let t;try{t=await this.auth.removeToken(this.authTokenName);}catch(t){return void this._onError(t)}this.emit(\"removeAuthToken\",{oldAuthToken:t});})(),this.state!==this.CLOSED&&this.transmit(\"#removeAuthToken\"),this._changeToUnauthenticatedStateAndClearTokens(),await l(0);},v.prototype.connect=function(){if(this.state===this.CLOSED){this.pendingReconnect=!1,this.pendingReconnectTimeout=null,clearTimeout(this._reconnectTimeoutRef),this.state=this.CONNECTING,this.emit(\"connecting\",{}),this.transport&&this.transport.clearAllListeners();let t={onOpen:t=>{this.state=this.OPEN,this._onOpen(t);},onOpenAbort:t=>{this.state!==this.CLOSED&&(this.state=this.CLOSED,this._destroy(t.code,t.reason,!0));},onClose:t=>{this.state!==this.CLOSED&&(this.state=this.CLOSED,this._destroy(t.code,t.reason));},onEvent:t=>{this.emit(t.event,t.data);},onError:t=>{this._onError(t.error);},onInboundInvoke:t=>{this._onInboundInvoke(t);},onInboundTransmit:t=>{this._onInboundTransmit(t.event,t.data);}};this.transport=new a(this.auth,this.codec,this.options,this.wsOptions,t);}},v.prototype.reconnect=function(t,e){this.disconnect(t,e),this.connect();},v.prototype.disconnect=function(t,e){if(\"number\"!=typeof(t=t||1e3))throw new p(\"If specified, the code argument must be a number\");let r=this.state===this.CONNECTING;r||this.state===this.OPEN?(this.state=this.CLOSED,this._destroy(t,e,r),this.transport.close(t,e)):(this.pendingReconnect=!1,this.pendingReconnectTimeout=null,clearTimeout(this._reconnectTimeoutRef));},v.prototype._changeToUnauthenticatedStateAndClearTokens=function(){if(this.authState!==this.UNAUTHENTICATED){let t=this.authState,e=this.authToken,r=this.signedAuthToken;this.authState=this.UNAUTHENTICATED,this.signedAuthToken=null,this.authToken=null;let n={oldAuthState:t,newAuthState:this.authState};this.emit(\"authStateChange\",n),this.emit(\"deauthenticate\",{oldSignedAuthToken:r,oldAuthToken:e});}},v.prototype._changeToAuthenticatedState=function(t){if(this.signedAuthToken=t,this.authToken=this._extractAuthTokenData(t),this.authState!==this.AUTHENTICATED){let e=this.authState;this.authState=this.AUTHENTICATED;let r={oldAuthState:e,newAuthState:this.authState,signedAuthToken:t,authToken:this.authToken};this.preparingPendingSubscriptions||this.processPendingSubscriptions(),this.emit(\"authStateChange\",r);}this.emit(\"authenticate\",{signedAuthToken:t,authToken:this.authToken});},v.prototype.decodeBase64=function(t){return h.from(t,\"base64\").toString(\"utf8\")},v.prototype.encodeBase64=function(t){return h.from(t,\"utf8\").toString(\"base64\")},v.prototype._extractAuthTokenData=function(t){let e=(t||\"\").split(\".\")[1];if(null!=e){let t=e;try{return t=this.decodeBase64(t),JSON.parse(t)}catch(e){return t}}return null},v.prototype.getAuthToken=function(){return this.authToken},v.prototype.getSignedAuthToken=function(){return this.signedAuthToken},v.prototype.authenticate=async function(t){let e;try{e=await this.invoke(\"#authenticate\",t);}catch(t){throw \"BadConnectionError\"!==t.name&&\"TimeoutError\"!==t.name&&this._changeToUnauthenticatedStateAndClearTokens(),await l(0),t}return e&&null!=e.isAuthenticated?e.authError&&(e.authError=f.hydrateError(e.authError)):e={isAuthenticated:this.authState,authError:null},e.isAuthenticated?this._changeToAuthenticatedState(t):this._changeToUnauthenticatedStateAndClearTokens(),(async()=>{try{await this.auth.saveToken(this.authTokenName,t,{});}catch(t){this._onError(t);}})(),await l(0),e},v.prototype._tryReconnect=function(t){let e,r=this.connectAttempts++,n=this.options.autoReconnectOptions;if(null==t||r>0){let t=Math.round(n.initialDelay+(n.randomness||0)*Math.random());e=Math.round(t*Math.pow(n.multiplier,r));}else e=t;e>n.maxDelay&&(e=n.maxDelay),clearTimeout(this._reconnectTimeoutRef),this.pendingReconnect=!0,this.pendingReconnectTimeout=e,this._reconnectTimeoutRef=setTimeout(()=>{this.connect();},e);},v.prototype._onOpen=function(t){this.isBatching?this._startBatching():this.batchOnHandshake&&(this._startBatching(),setTimeout(()=>{this.isBatching||this._stopBatching();},this.batchOnHandshakeDuration)),this.preparingPendingSubscriptions=!0,t?(this.id=t.id,this.pingTimeout=t.pingTimeout,t.isAuthenticated?this._changeToAuthenticatedState(t.authToken):this._changeToUnauthenticatedStateAndClearTokens()):this._changeToUnauthenticatedStateAndClearTokens(),this.connectAttempts=0,this.options.autoSubscribeOnConnect&&this.processPendingSubscriptions(),this.emit(\"connect\",{...t,processPendingSubscriptions:()=>{this.processPendingSubscriptions();}}),this.state===this.OPEN&&this._flushOutboundBuffer();},v.prototype._onError=function(t){this.emit(\"error\",{error:t});},v.prototype._suspendSubscriptions=function(){Object.keys(this._channelMap).forEach(t=>{let e=this._channelMap[t];this._triggerChannelUnsubscribe(e,!0);});},v.prototype._abortAllPendingEventsDueToBadConnection=function(t){let e,r=this._outboundBuffer.head;for(;r;){e=r.next;let n=r.data;clearTimeout(n.timeout),delete n.timeout,r.detach(),r=e;let o=n.callback;if(o){delete n.callback;let e=`Event \"${n.event}\" was aborted due to a bad connection`,r=new g(e,t);o.call(n,r,n);}n.cid&&this.transport.cancelPendingResponse(n.cid);}},v.prototype._destroy=function(t,e,r){if(this.id=null,this._cancelBatching(),this.transport&&this.transport.clearAllListeners(),this.pendingReconnect=!1,this.pendingReconnectTimeout=null,clearTimeout(this._reconnectTimeoutRef),this._suspendSubscriptions(),r?this.emit(\"connectAbort\",{code:t,reason:e}):this.emit(\"disconnect\",{code:t,reason:e}),this.emit(\"close\",{code:t,reason:e}),!v.ignoreStatuses[t]){let r;r=e?\"Socket connection closed with status code \"+t+\" and reason: \"+e:\"Socket connection closed with status code \"+t;let n=new y(v.errorStatuses[t]||r,t);this._onError(n);}this._abortAllPendingEventsDueToBadConnection(r?\"connectAbort\":\"disconnect\"),this.options.autoReconnect&&(4e3===t||4001===t||1005===t?this._tryReconnect(0):1e3!==t&&t<4500&&this._tryReconnect());},v.prototype._onInboundTransmit=function(t,e){let r=this._privateDataHandlerMap[t];r?r.call(this,e):this._receiverDemux.write(t,e);},v.prototype._onInboundInvoke=function(t){let{procedure:e,data:r}=t,n=this._privateRPCHandlerMap[e];n?n.call(this,r,t):this._procedureDemux.write(e,t);},v.prototype.decode=function(t){return this.transport.decode(t)},v.prototype.encode=function(t){return this.transport.encode(t)},v.prototype._flushOutboundBuffer=function(){let t,e=this._outboundBuffer.head;for(;e;){t=e.next;let r=e.data;e.detach(),this.transport.transmitObject(r),e=t;}},v.prototype._handleEventAckTimeout=function(t,e){e&&e.detach(),delete t.timeout;let r=t.callback;if(r){delete t.callback;let e=new m(`Event response for \"${t.event}\" timed out`);r.call(t,e,t);}t.cid&&this.transport.cancelPendingResponse(t.cid);},v.prototype._processOutboundEvent=function(t,e,r,n){r=r||{},this.state===this.CLOSED&&this.connect();let o,i={event:t};o=n?new Promise((t,e)=>{i.callback=((r,n)=>{r?e(r):t(n);});}):Promise.resolve();let s=new u.Item;this.options.cloneData?i.data=c(e):i.data=e,s.data=i;let a=null==r.ackTimeout?this.ackTimeout:r.ackTimeout;return i.timeout=setTimeout(()=>{this._handleEventAckTimeout(i,s);},a),this._outboundBuffer.append(s),this.state===this.OPEN&&this._flushOutboundBuffer(),o},v.prototype.send=function(t){this.transport.send(t);},v.prototype.transmit=function(t,e,r){return this._processOutboundEvent(t,e,r)},v.prototype.invoke=function(t,e,r){return this._processOutboundEvent(t,e,r,!0)},v.prototype.transmitPublish=function(t,e){let r={channel:this._decorateChannelName(t),data:e};return this.transmit(\"#publish\",r)},v.prototype.invokePublish=function(t,e){let r={channel:this._decorateChannelName(t),data:e};return this.invoke(\"#publish\",r)},v.prototype._triggerChannelSubscribe=function(t,e){let r=t.name;if(t.state!==o.SUBSCRIBED){let n=t.state;t.state=o.SUBSCRIBED;let i={oldChannelState:n,newChannelState:t.state,subscriptionOptions:e};this._channelEventDemux.write(`${r}/subscribeStateChange`,i),this._channelEventDemux.write(`${r}/subscribe`,{subscriptionOptions:e}),this.emit(\"subscribeStateChange\",{channel:r,...i}),this.emit(\"subscribe\",{channel:r,subscriptionOptions:e});}},v.prototype._triggerChannelSubscribeFail=function(t,e,r){let n=e.name,o=!e.options.waitForAuth||this.authState===this.AUTHENTICATED;!!this._channelMap[n]&&o&&(delete this._channelMap[n],this._channelEventDemux.write(`${n}/subscribeFail`,{error:t,subscriptionOptions:r}),this.emit(\"subscribeFail\",{error:t,channel:n,subscriptionOptions:r}));},v.prototype._cancelPendingSubscribeCallback=function(t){null!=t._pendingSubscriptionCid&&(this.transport.cancelPendingResponse(t._pendingSubscriptionCid),delete t._pendingSubscriptionCid);},v.prototype._decorateChannelName=function(t){return this.channelPrefix&&(t=this.channelPrefix+t),t},v.prototype._undecorateChannelName=function(t){return this.channelPrefix&&0===t.indexOf(this.channelPrefix)?t.replace(this.channelPrefix,\"\"):t},v.prototype.startBatch=function(){this.transport.startBatch();},v.prototype.flushBatch=function(){this.transport.flushBatch();},v.prototype.cancelBatch=function(){this.transport.cancelBatch();},v.prototype._startBatching=function(){null==this._batchingIntervalId&&(this.startBatch(),this._batchingIntervalId=setInterval(()=>{this.flushBatch(),this.startBatch();},this.options.batchInterval));},v.prototype.startBatching=function(){this.isBatching=!0,this._startBatching();},v.prototype._stopBatching=function(){null!=this._batchingIntervalId&&clearInterval(this._batchingIntervalId),this._batchingIntervalId=null,this.flushBatch();},v.prototype.stopBatching=function(){this.isBatching=!1,this._stopBatching();},v.prototype._cancelBatching=function(){null!=this._batchingIntervalId&&clearInterval(this._batchingIntervalId),this._batchingIntervalId=null,this.cancelBatch();},v.prototype.cancelBatching=function(){this.isBatching=!1,this._cancelBatching();},v.prototype._trySubscribe=function(t){let e=!t.options.waitForAuth||this.authState===this.AUTHENTICATED;if(this.state===this.OPEN&&!this.preparingPendingSubscriptions&&null==t._pendingSubscriptionCid&&e){let e={noTimeout:!0},r={};t.options.waitForAuth&&(e.waitForAuth=!0,r.waitForAuth=e.waitForAuth),t.options.data&&(r.data=t.options.data),t._pendingSubscriptionCid=this.transport.invokeRaw(\"#subscribe\",{channel:this._decorateChannelName(t.name),...r},e,e=>{if(e){if(\"BadConnectionError\"===e.name)return;delete t._pendingSubscriptionCid,this._triggerChannelSubscribeFail(e,t,r);}else delete t._pendingSubscriptionCid,this._triggerChannelSubscribe(t,r);}),this.emit(\"subscribeRequest\",{channel:t.name,subscriptionOptions:r});}},v.prototype.subscribe=function(t,e){e=e||{};let r=this._channelMap[t],n={waitForAuth:!!e.waitForAuth};return null!=e.priority&&(n.priority=e.priority),void 0!==e.data&&(n.data=e.data),r?e&&(r.options=n):(r={name:t,state:o.PENDING,options:n},this._channelMap[t]=r,this._trySubscribe(r)),new o(t,this,this._channelEventDemux,this._channelDataDemux)},v.prototype._triggerChannelUnsubscribe=function(t,e){let r=t.name;if(this._cancelPendingSubscribeCallback(t),t.state===o.SUBSCRIBED){let n={oldChannelState:t.state,newChannelState:e?o.PENDING:o.UNSUBSCRIBED};this._channelEventDemux.write(`${r}/subscribeStateChange`,n),this._channelEventDemux.write(`${r}/unsubscribe`,{}),this.emit(\"subscribeStateChange\",{channel:r,...n}),this.emit(\"unsubscribe\",{channel:r});}e?t.state=o.PENDING:delete this._channelMap[r];},v.prototype._tryUnsubscribe=function(t){if(this.state===this.OPEN){let e={noTimeout:!0};this._cancelPendingSubscribeCallback(t);let r=this._decorateChannelName(t.name);this.transport.transmit(\"#unsubscribe\",r,e);}},v.prototype.unsubscribe=function(t){let e=this._channelMap[t];e&&(this._triggerChannelUnsubscribe(e),this._tryUnsubscribe(e));},v.prototype.receiver=function(t){return this._receiverDemux.stream(t)},v.prototype.closeReceiver=function(t){this._receiverDemux.close(t);},v.prototype.closeAllReceivers=function(){this._receiverDemux.closeAll();},v.prototype.killReceiver=function(t){this._receiverDemux.kill(t);},v.prototype.killAllReceivers=function(){this._receiverDemux.killAll();},v.prototype.killReceiverConsumer=function(t){this._receiverDemux.killConsumer(t);},v.prototype.getReceiverConsumerStats=function(t){return this._receiverDemux.getConsumerStats(t)},v.prototype.getReceiverConsumerStatsList=function(t){return this._receiverDemux.getConsumerStatsList(t)},v.prototype.getAllReceiversConsumerStatsList=function(){return this._receiverDemux.getConsumerStatsListAll()},v.prototype.getReceiverBackpressure=function(t){return this._receiverDemux.getBackpressure(t)},v.prototype.getAllReceiversBackpressure=function(){return this._receiverDemux.getBackpressureAll()},v.prototype.getReceiverConsumerBackpressure=function(t){return this._receiverDemux.getConsumerBackpressure(t)},v.prototype.hasReceiverConsumer=function(t,e){return this._receiverDemux.hasConsumer(t,e)},v.prototype.hasAnyReceiverConsumer=function(t){return this._receiverDemux.hasConsumerAll(t)},v.prototype.procedure=function(t){return this._procedureDemux.stream(t)},v.prototype.closeProcedure=function(t){this._procedureDemux.close(t);},v.prototype.closeAllProcedures=function(){this._procedureDemux.closeAll();},v.prototype.killProcedure=function(t){this._procedureDemux.kill(t);},v.prototype.killAllProcedures=function(){this._procedureDemux.killAll();},v.prototype.killProcedureConsumer=function(t){this._procedureDemux.killConsumer(t);},v.prototype.getProcedureConsumerStats=function(t){return this._procedureDemux.getConsumerStats(t)},v.prototype.getProcedureConsumerStatsList=function(t){return this._procedureDemux.getConsumerStatsList(t)},v.prototype.getAllProceduresConsumerStatsList=function(){return this._procedureDemux.getConsumerStatsListAll()},v.prototype.getProcedureBackpressure=function(t){return this._procedureDemux.getBackpressure(t)},v.prototype.getAllProceduresBackpressure=function(){return this._procedureDemux.getBackpressureAll()},v.prototype.getProcedureConsumerBackpressure=function(t){return this._procedureDemux.getConsumerBackpressure(t)},v.prototype.hasProcedureConsumer=function(t,e){return this._procedureDemux.hasConsumer(t,e)},v.prototype.hasAnyProcedureConsumer=function(t){return this._procedureDemux.hasConsumerAll(t)},v.prototype.channel=function(t){this._channelMap[t];return new o(t,this,this._channelEventDemux,this._channelDataDemux)},v.prototype.closeChannel=function(t){this.channelCloseOutput(t),this.channelCloseAllListeners(t);},v.prototype.closeAllChannelOutputs=function(){this._channelDataDemux.closeAll();},v.prototype.closeAllChannelListeners=function(){this._channelEventDemux.closeAll();},v.prototype.closeAllChannels=function(){this.closeAllChannelOutputs(),this.closeAllChannelListeners();},v.prototype.killChannel=function(t){this.channelKillOutput(t),this.channelKillAllListeners(t);},v.prototype.killAllChannelOutputs=function(){this._channelDataDemux.killAll();},v.prototype.killAllChannelListeners=function(){this._channelEventDemux.killAll();},v.prototype.killAllChannels=function(){this.killAllChannelOutputs(),this.killAllChannelListeners();},v.prototype.killChannelOutputConsumer=function(t){this._channelDataDemux.killConsumer(t);},v.prototype.killChannelListenerConsumer=function(t){this._channelEventDemux.killConsumer(t);},v.prototype.getChannelOutputConsumerStats=function(t){return this._channelDataDemux.getConsumerStats(t)},v.prototype.getChannelListenerConsumerStats=function(t){return this._channelEventDemux.getConsumerStats(t)},v.prototype.getAllChannelOutputsConsumerStatsList=function(){return this._channelDataDemux.getConsumerStatsListAll()},v.prototype.getAllChannelListenersConsumerStatsList=function(){return this._channelEventDemux.getConsumerStatsListAll()},v.prototype.getChannelBackpressure=function(t){return Math.max(this.channelGetOutputBackpressure(t),this.channelGetAllListenersBackpressure(t))},v.prototype.getAllChannelOutputsBackpressure=function(){return this._channelDataDemux.getBackpressureAll()},v.prototype.getAllChannelListenersBackpressure=function(){return this._channelEventDemux.getBackpressureAll()},v.prototype.getAllChannelsBackpressure=function(){return Math.max(this.getAllChannelOutputsBackpressure(),this.getAllChannelListenersBackpressure())},v.prototype.getChannelListenerConsumerBackpressure=function(t){return this._channelEventDemux.getConsumerBackpressure(t)},v.prototype.getChannelOutputConsumerBackpressure=function(t){return this._channelDataDemux.getConsumerBackpressure(t)},v.prototype.hasAnyChannelOutputConsumer=function(t){return this._channelDataDemux.hasConsumerAll(t)},v.prototype.hasAnyChannelListenerConsumer=function(t){return this._channelEventDemux.hasConsumerAll(t)},v.prototype.getChannelState=function(t){let e=this._channelMap[t];return e?e.state:o.UNSUBSCRIBED},v.prototype.getChannelOptions=function(t){let e=this._channelMap[t];return e?{...e.options}:{}},v.prototype._getAllChannelStreamNames=function(t){let e=this._channelEventDemux.getConsumerStatsListAll().filter(e=>0===e.stream.indexOf(`${t}/`)).reduce((t,e)=>(t[e.stream]=!0,t),{});return Object.keys(e)},v.prototype.channelCloseOutput=function(t){this._channelDataDemux.close(t);},v.prototype.channelCloseListener=function(t,e){this._channelEventDemux.close(`${t}/${e}`);},v.prototype.channelCloseAllListeners=function(t){this._getAllChannelStreamNames(t).forEach(t=>{this._channelEventDemux.close(t);});},v.prototype.channelKillOutput=function(t){this._channelDataDemux.kill(t);},v.prototype.channelKillListener=function(t,e){this._channelEventDemux.kill(`${t}/${e}`);},v.prototype.channelKillAllListeners=function(t){this._getAllChannelStreamNames(t).forEach(t=>{this._channelEventDemux.kill(t);});},v.prototype.channelGetOutputConsumerStatsList=function(t){return this._channelDataDemux.getConsumerStatsList(t)},v.prototype.channelGetListenerConsumerStatsList=function(t,e){return this._channelEventDemux.getConsumerStatsList(`${t}/${e}`)},v.prototype.channelGetAllListenersConsumerStatsList=function(t){return this._getAllChannelStreamNames(t).map(t=>this._channelEventDemux.getConsumerStatsList(t)).reduce((t,e)=>(e.forEach(e=>{t.push(e);}),t),[])},v.prototype.channelGetOutputBackpressure=function(t){return this._channelDataDemux.getBackpressure(t)},v.prototype.channelGetListenerBackpressure=function(t,e){return this._channelEventDemux.getBackpressure(`${t}/${e}`)},v.prototype.channelGetAllListenersBackpressure=function(t){let e=this._getAllChannelStreamNames(t).map(t=>this._channelEventDemux.getBackpressure(t));return Math.max(...e.concat(0))},v.prototype.channelHasOutputConsumer=function(t,e){return this._channelDataDemux.hasConsumer(t,e)},v.prototype.channelHasListenerConsumer=function(t,e,r){return this._channelEventDemux.hasConsumer(`${t}/${e}`,r)},v.prototype.channelHasAnyListenerConsumer=function(t,e){return this._getAllChannelStreamNames(t).some(t=>this._channelEventDemux.hasConsumer(t,e))},v.prototype.subscriptions=function(t){let e=[];return Object.keys(this._channelMap).forEach(r=>{(t||this._channelMap[r].state===o.SUBSCRIBED)&&e.push(r);}),e},v.prototype.isSubscribed=function(t,e){let r=this._channelMap[t];return e?!!r:!!r&&r.state===o.SUBSCRIBED},v.prototype.processPendingSubscriptions=function(){this.preparingPendingSubscriptions=!1;let t=[];Object.keys(this._channelMap).forEach(e=>{let r=this._channelMap[e];r.state===o.PENDING&&t.push(r);}),t.sort((t,e)=>{let r=t.options.priority||0,n=e.options.priority||0;return r>n?-1:r<n?1:0}),t.forEach(t=>{this._trySubscribe(t);});},e.exports=v;},{\"./auth\":1,\"./transport\":4,\"./wait\":5,\"ag-channel\":7,\"async-stream-emitter\":9,\"buffer/\":12,\"clone-deep\":13,\"linked-list\":20,\"sc-errors\":22,\"sc-formatter\":23,\"stream-demux\":26}],3:[function(t,e,r){const n=t(\"./clientsocket\"),o=t(\"uuid\"),i=t(\"sc-errors\").InvalidArgumentsError;e.exports={create:function(t){if((t=t||{}).host&&!t.host.match(/[^:]+:\\d{2,5}/))throw new i('The host option should include both the hostname and the port number in the format \"hostname:port\"');if(t.host&&t.hostname)throw new i('The host option should already include the hostname and the port number in the format \"hostname:port\" - Because of this, you should never use host and hostname options together');if(t.host&&t.port)throw new i('The host option should already include the hostname and the port number in the format \"hostname:port\" - Because of this, you should never use host and port options together');let e=\"undefined\"!=typeof location&&\"https:\"===location.protocol,r={clientId:o.v4(),port:function(t,e){let r=null==t.secure?e:t.secure;return t.port||(\"undefined\"!=typeof location&&location.port?location.port:r?443:80)}(t,e),hostname:\"undefined\"!=typeof location&&location.hostname||\"localhost\",secure:e};return Object.assign(r,t),new n(r)}};},{\"./clientsocket\":2,\"sc-errors\":22,uuid:27}],4:[function(t,e,r){const n=t(\"ag-request\");let o;if(\"undefined\"!=typeof WebSocket)o=function(t,e){return new WebSocket(t)};else {let e=t(\"ws\");o=function(t,r){return new e(t,[],r)};}const i=t(\"sc-errors\"),s=i.TimeoutError,a=i.BadConnectionError;function u(t,e,r,n,i){this.state=this.CLOSED,this.auth=t,this.codec=e,this.options=r,this.wsOptions=n,this.protocolVersion=r.protocolVersion,this.connectTimeout=r.connectTimeout,this.pingTimeout=r.pingTimeout,this.pingTimeoutDisabled=!!r.pingTimeoutDisabled,this.callIdGenerator=r.callIdGenerator,this.authTokenName=r.authTokenName,this.isBufferingBatch=!1,this._pingTimeoutTicker=null,this._callbackMap={},this._batchBuffer=[],i||(i={}),this._onOpenHandler=i.onOpen||function(){},this._onOpenAbortHandler=i.onOpenAbort||function(){},this._onCloseHandler=i.onClose||function(){},this._onEventHandler=i.onEvent||function(){},this._onErrorHandler=i.onError||function(){},this._onInboundInvokeHandler=i.onInboundInvoke||function(){},this._onInboundTransmitHandler=i.onInboundTransmit||function(){},this.state=this.CONNECTING;let s=this.uri(),a=o(s,n);a.binaryType=this.options.binaryType,this.socket=a,a.onopen=(()=>{this._onOpen();}),a.onclose=(async t=>{let e;e=null==t.code?1005:t.code,this._destroy(e,t.reason);}),a.onmessage=((t,e)=>{this._onMessage(t.data);}),a.onerror=(t=>{this.state===this.CONNECTING&&this._destroy(1006);}),this._connectTimeoutRef=setTimeout(()=>{this._destroy(4007),this.socket.close(4007);},this.connectTimeout),1===this.protocolVersion?this._handlePing=(t=>\"#1\"===t&&(this._resetPingTimeout(),this.socket.readyState===this.socket.OPEN&&this.send(\"#2\"),!0)):this._handlePing=(t=>\"\"===t&&(this._resetPingTimeout(),this.socket.readyState===this.socket.OPEN&&this.send(\"\"),!0));}u.CONNECTING=u.prototype.CONNECTING=\"connecting\",u.OPEN=u.prototype.OPEN=\"open\",u.CLOSED=u.prototype.CLOSED=\"closed\",u.prototype.uri=function(){let t,e=this.options.query||{};t=null==this.options.protocolScheme?this.options.secure?\"wss\":\"ws\":this.options.protocolScheme,this.options.timestampRequests&&(e[this.options.timestampParam]=(new Date).getTime());let r,n,o=new URLSearchParams;for(let[t,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)o.append(t,e);else o.set(t,r);if((e=o.toString()).length&&(e=\"?\"+e),null==this.options.socketPath){if(this.options.host)r=this.options.host;else {let e=\"\";this.options.port&&(\"wss\"===t&&443!==this.options.port||\"ws\"===t&&80!==this.options.port)&&(e=\":\"+this.options.port),r=this.options.hostname+e;}n=this.options.path;}else r=this.options.socketPath,n=`:${this.options.path}`;return t+\"://\"+r+n+e},u.prototype._onOpen=async function(){let t;clearTimeout(this._connectTimeoutRef),this._resetPingTimeout();try{t=await this._handshake();}catch(t){return null==t.statusCode&&(t.statusCode=4003),this._onError(t),this._destroy(t.statusCode,t.toString()),void this.socket.close(t.statusCode)}this.state=this.OPEN,t&&(this.pingTimeout=t.pingTimeout),this._resetPingTimeout(),this._onOpenHandler(t);},u.prototype._handshake=async function(){let t=await this.auth.loadToken(this.authTokenName),e=await this.invoke(\"#handshake\",{authToken:t},{force:!0});return e&&(e.authToken=t,e.authError&&(e.authError=i.hydrateError(e.authError))),e},u.prototype._abortAllPendingEventsDueToBadConnection=function(t){Object.keys(this._callbackMap||{}).forEach(e=>{let r=this._callbackMap[e];delete this._callbackMap[e],clearTimeout(r.timeout),delete r.timeout;let n=`Event \"${r.event}\" was aborted due to a bad connection`,o=new a(n,t),i=r.callback;i&&(delete r.callback,i.call(r,o,r));});},u.prototype._destroy=function(t,e){i.socketProtocolErrorStatuses[t];!e&&i.socketProtocolErrorStatuses[t]&&(e=i.socketProtocolErrorStatuses[t]),delete this.socket.onopen,delete this.socket.onclose,delete this.socket.onmessage,delete this.socket.onerror,clearTimeout(this._connectTimeoutRef),clearTimeout(this._pingTimeoutTicker),this.state===this.OPEN?(this.state=this.CLOSED,this._abortAllPendingEventsDueToBadConnection(\"disconnect\"),this._onCloseHandler({code:t,reason:e})):this.state===this.CONNECTING?(this.state=this.CLOSED,this._abortAllPendingEventsDueToBadConnection(\"connectAbort\"),this._onOpenAbortHandler({code:t,reason:e})):this.state===this.CLOSED&&this._abortAllPendingEventsDueToBadConnection(\"connectAbort\");},u.prototype._processInboundPacket=function(t,e){if(t&&null!=t.event)if(null==t.cid)this._onInboundTransmitHandler({...t});else {let e=new n(this,t.cid,t.event,t.data);this._onInboundInvokeHandler(e);}else if(t&&null!=t.rid){let e=this._callbackMap[t.rid];if(e&&(clearTimeout(e.timeout),delete e.timeout,delete this._callbackMap[t.rid],e.callback)){let r=i.hydrateError(t.error);e.callback(r,t.data);}}else this._onEventHandler({event:\"raw\",data:{message:e}});},u.prototype._onMessage=function(t){if(this._onEventHandler({event:\"message\",data:{message:t}}),this._handlePing(t))return;let e=this.decode(t);if(Array.isArray(e)){let r=e.length;for(let n=0;n<r;n++)this._processInboundPacket(e[n],t);}else this._processInboundPacket(e,t);},u.prototype._onError=function(t){this._onErrorHandler({error:t});},u.prototype._resetPingTimeout=function(){if(this.pingTimeoutDisabled)return;(new Date).getTime();clearTimeout(this._pingTimeoutTicker),this._pingTimeoutTicker=setTimeout(()=>{this._destroy(4e3),this.socket.close(4e3);},this.pingTimeout);},u.prototype.clearAllListeners=function(){this._onOpenHandler=function(){},this._onOpenAbortHandler=function(){},this._onCloseHandler=function(){},this._onEventHandler=function(){},this._onErrorHandler=function(){},this._onInboundInvokeHandler=function(){},this._onInboundTransmitHandler=function(){};},u.prototype.startBatch=function(){this.isBufferingBatch=!0,this._batchBuffer=[];},u.prototype.flushBatch=function(){if(this.isBufferingBatch=!1,!this._batchBuffer.length)return;let t=this.serializeObject(this._batchBuffer);this._batchBuffer=[],this.send(t);},u.prototype.cancelBatch=function(){this.isBufferingBatch=!1,this._batchBuffer=[];},u.prototype.getBytesReceived=function(){return this.socket.bytesReceived},u.prototype.close=function(t,e){this.state!==this.OPEN&&this.state!==this.CONNECTING||(t=t||1e3,this._destroy(t,e),this.socket.close(t,e));},u.prototype.transmitObject=function(t){let e={event:t.event,data:t.data};return t.callback&&(e.cid=t.cid=this.callIdGenerator(),this._callbackMap[t.cid]=t),this.sendObject(e),t.cid||null},u.prototype._handleEventAckTimeout=function(t){t.cid&&delete this._callbackMap[t.cid],delete t.timeout;let e=t.callback;if(e){delete t.callback;let r=new s(`Event response for \"${t.event}\" timed out`);e.call(t,r,t);}},u.prototype.transmit=function(t,e,r){let n={event:t,data:e};return (this.state===this.OPEN||r.force)&&this.transmitObject(n),Promise.resolve()},u.prototype.invokeRaw=function(t,e,r,n){let o={event:t,data:e,callback:n};r.noTimeout||(o.timeout=setTimeout(()=>{this._handleEventAckTimeout(o);},this.options.ackTimeout));let i=null;return (this.state===this.OPEN||r.force)&&(i=this.transmitObject(o)),i},u.prototype.invoke=function(t,e,r){return new Promise((n,o)=>{this.invokeRaw(t,e,r,(t,e)=>{t?o(t):n(e);});})},u.prototype.cancelPendingResponse=function(t){delete this._callbackMap[t];},u.prototype.decode=function(t){return this.codec.decode(t)},u.prototype.encode=function(t){return this.codec.encode(t)},u.prototype.send=function(t){this.socket.readyState!==this.socket.OPEN?this._destroy(1005):this.socket.send(t);},u.prototype.serializeObject=function(t){let e;try{e=this.encode(t);}catch(t){return this._onError(t),null}return e},u.prototype.sendObject=function(t){if(this.isBufferingBatch)return void this._batchBuffer.push(t);let e=this.serializeObject(t);null!=e&&this.send(e);},e.exports=u;},{\"ag-request\":8,\"sc-errors\":22,ws:6}],5:[function(t,e,r){e.exports=function(t){return new Promise(e=>{setTimeout(()=>{e();},t);})};},{}],6:[function(t,e,r){let n;const o=(n=\"undefined\"!=typeof WorkerGlobalScope?self:\"undefined\"!=typeof window&&window||function(){return this}()).WebSocket||n.MozWebSocket;function i(t,e,r){let n;return n=e?new o(t,e):new o(t)}o&&(i.prototype=o.prototype),e.exports=o?i:null;},{}],7:[function(t,e,r){const n=t(\"consumable-stream\");class o extends n{constructor(t,e,r,n){super(),this.PENDING=o.PENDING,this.SUBSCRIBED=o.SUBSCRIBED,this.UNSUBSCRIBED=o.UNSUBSCRIBED,this.name=t,this.client=e,this._eventDemux=r,this._dataStream=n.stream(this.name);}createConsumer(t){return this._dataStream.createConsumer(t)}listener(t){return this._eventDemux.stream(`${this.name}/${t}`)}close(){this.client.closeChannel(this.name);}kill(){this.client.killChannel(this.name);}killOutputConsumer(t){this.hasOutputConsumer(t)&&this.client.killChannelOutputConsumer(t);}killListenerConsumer(t){this.hasAnyListenerConsumer(t)&&this.client.killChannelListenerConsumer(t);}getOutputConsumerStats(t){if(this.hasOutputConsumer(t))return this.client.getChannelOutputConsumerStats(t)}getListenerConsumerStats(t){if(this.hasAnyListenerConsumer(t))return this.client.getChannelListenerConsumerStats(t)}getBackpressure(){return this.client.getChannelBackpressure(this.name)}getListenerConsumerBackpressure(t){return this.hasAnyListenerConsumer(t)?this.client.getChannelListenerConsumerBackpressure(t):0}getOutputConsumerBackpressure(t){return this.hasOutputConsumer(t)?this.client.getChannelOutputConsumerBackpressure(t):0}closeOutput(){this.client.channelCloseOutput(this.name);}closeListener(t){this.client.channelCloseListener(this.name,t);}closeAllListeners(){this.client.channelCloseAllListeners(this.name);}killOutput(){this.client.channelKillOutput(this.name);}killListener(t){this.client.channelKillListener(this.name,t);}killAllListeners(){this.client.channelKillAllListeners(this.name);}getOutputConsumerStatsList(){return this.client.channelGetOutputConsumerStatsList(this.name)}getListenerConsumerStatsList(t){return this.client.channelGetListenerConsumerStatsList(this.name,t)}getAllListenersConsumerStatsList(){return this.client.channelGetAllListenersConsumerStatsList(this.name)}getOutputBackpressure(){return this.client.channelGetOutputBackpressure(this.name)}getListenerBackpressure(t){return this.client.channelGetListenerBackpressure(this.name,t)}getAllListenersBackpressure(){return this.client.channelGetAllListenersBackpressure(this.name)}hasOutputConsumer(t){return this.client.channelHasOutputConsumer(this.name,t)}hasListenerConsumer(t,e){return this.client.channelHasListenerConsumer(this.name,t,e)}hasAnyListenerConsumer(t){return this.client.channelHasAnyListenerConsumer(this.name,t)}get state(){return this.client.getChannelState(this.name)}set state(t){throw new Error(\"Cannot directly set channel state\")}get options(){return this.client.getChannelOptions(this.name)}set options(t){throw new Error(\"Cannot directly set channel options\")}subscribe(t){this.client.subscribe(this.name,t);}unsubscribe(){this.client.unsubscribe(this.name);}isSubscribed(t){return this.client.isSubscribed(this.name,t)}transmitPublish(t){return this.client.transmitPublish(this.name,t)}invokePublish(t){return this.client.invokePublish(this.name,t)}}o.PENDING=\"pending\",o.SUBSCRIBED=\"subscribed\",o.UNSUBSCRIBED=\"unsubscribed\",e.exports=o;},{\"consumable-stream\":14}],8:[function(t,e,r){const n=t(\"sc-errors\"),o=n.InvalidActionError;e.exports=function(t,e,r,i){this.socket=t,this.id=e,this.procedure=r,this.data=i,this.sent=!1,this._respond=((t,e)=>{if(this.sent)throw new o(`Response to request ${this.id} has already been sent`);this.sent=!0,this.socket.sendObject(t,e);}),this.end=((t,e)=>{let r={rid:this.id};void 0!==t&&(r.data=t),this._respond(r,e);}),this.error=((t,e)=>{let r={rid:this.id,error:n.dehydrateError(t)};this._respond(r,e);});};},{\"sc-errors\":22}],9:[function(t,e,r){const n=t(\"stream-demux\");function o(){this._listenerDemux=new n;}o.prototype.emit=function(t,e){this._listenerDemux.write(t,e);},o.prototype.listener=function(t){return this._listenerDemux.stream(t)},o.prototype.closeListener=function(t){this._listenerDemux.close(t);},o.prototype.closeAllListeners=function(){this._listenerDemux.closeAll();},o.prototype.getListenerConsumerStats=function(t){return this._listenerDemux.getConsumerStats(t)},o.prototype.getListenerConsumerStatsList=function(t){return this._listenerDemux.getConsumerStatsList(t)},o.prototype.getAllListenersConsumerStatsList=function(){return this._listenerDemux.getConsumerStatsListAll()},o.prototype.killListener=function(t){this._listenerDemux.kill(t);},o.prototype.killAllListeners=function(){this._listenerDemux.killAll();},o.prototype.killListenerConsumer=function(t){this._listenerDemux.killConsumer(t);},o.prototype.getListenerBackpressure=function(t){return this._listenerDemux.getBackpressure(t)},o.prototype.getAllListenersBackpressure=function(){return this._listenerDemux.getBackpressureAll()},o.prototype.getListenerConsumerBackpressure=function(t){return this._listenerDemux.getConsumerBackpressure(t)},o.prototype.hasListenerConsumer=function(t,e){return this._listenerDemux.hasConsumer(t,e)},o.prototype.hasAnyListenerConsumer=function(t){return this._listenerDemux.hasConsumerAll(t)},e.exports=o;},{\"stream-demux\":26}],10:[function(t,e,r){r.byteLength=function(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n},r.toByteArray=function(t){var e,r,n=c(t),s=n[0],a=n[1],u=new i(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),h=0,l=a>0?s-4:s;for(r=0;r<l;r+=4)e=o[t.charCodeAt(r)]<<18|o[t.charCodeAt(r+1)]<<12|o[t.charCodeAt(r+2)]<<6|o[t.charCodeAt(r+3)],u[h++]=e>>16&255,u[h++]=e>>8&255,u[h++]=255&e;2===a&&(e=o[t.charCodeAt(r)]<<2|o[t.charCodeAt(r+1)]>>4,u[h++]=255&e);1===a&&(e=o[t.charCodeAt(r)]<<10|o[t.charCodeAt(r+1)]<<4|o[t.charCodeAt(r+2)]>>2,u[h++]=e>>8&255,u[h++]=255&e);return u},r.fromByteArray=function(t){for(var e,r=t.length,o=r%3,i=[],s=0,a=r-o;s<a;s+=16383)i.push(h(t,s,s+16383>a?a:s+16383));1===o?(e=t[r-1],i.push(n[e>>2]+n[e<<4&63]+\"==\")):2===o&&(e=(t[r-2]<<8)+t[r-1],i.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return i.join(\"\")};for(var n=[],o=[],i=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=0,u=s.length;a<u;++a)n[a]=s[a],o[s.charCodeAt(a)]=a;function c(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return -1===r&&(r=e),[r,r===e?0:4-r%4]}function h(t,e,r){for(var o,i,s=[],a=e;a<r;a+=3)o=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[a+2]),s.push(n[(i=o)>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return s.join(\"\")}o[\"-\".charCodeAt(0)]=62,o[\"_\".charCodeAt(0)]=63;},{}],11:[function(t,e,r){(function(e){(function(){var e=t(\"base64-js\"),n=t(\"ieee754\");r.Buffer=s,r.SlowBuffer=function(t){+t!=t&&(t=0);return s.alloc(+t)},r.INSPECT_MAX_BYTES=50;var o=2147483647;function i(t){if(t>o)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=s.prototype,e}function s(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return c(t)}return a(t,e,r)}function a(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!s.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return h(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(M(t,ArrayBuffer)||t&&M(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');var n;n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r);return n.__proto__=s.prototype,n}(t,e,r);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return s.from(n,e,r);var o=function(t){if(s.isBuffer(t)){var e=0|l(t.length),r=i(e);return 0===r.length?r:(t.copy(r,0,0,e),r)}if(void 0!==t.length)return \"number\"!=typeof t.length||H(t.length)?i(0):h(t);if(\"Buffer\"===t.type&&Array.isArray(t.data))return h(t.data)}(t);if(o)return o;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return s.from(t[Symbol.toPrimitive](\"string\"),e,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function u(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function c(t){return u(t),i(t<0?0:0|l(t))}function h(t){for(var e=t.length<0?0:0|l(t.length),r=i(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function l(t){if(t>=o)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o.toString(16)+\" bytes\");return 0|t}function f(t,e){if(s.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||M(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var o=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return N(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(t).length;default:if(o)return n?-1:N(t).length;e=(\"\"+e).toLowerCase(),o=!0;}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function d(t,e,r,n,o){if(0===t.length)return -1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),H(r=+r)&&(r=o?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(o)return -1;r=t.length-1;}else if(r<0){if(!o)return -1;r=0;}if(\"string\"==typeof e&&(e=s.from(e,n)),s.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,o);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,o);throw new TypeError(\"val must be string, number or Buffer\")}function y(t,e,r,n,o){var i,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return -1;s=2,a/=2,u/=2,r/=2;}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(o){var h=-1;for(i=r;i<a;i++)if(c(t,i)===c(e,-1===h?0:i-h)){if(-1===h&&(h=i),i-h+1===u)return h*s}else -1!==h&&(i-=i-h),h=-1;}else for(r+u>a&&(r=a-u),i=r;i>=0;i--){for(var l=!0,f=0;f<u;f++)if(c(t,i+f)!==c(e,f)){l=!1;break}if(l)return i}return -1}function m(t,e,r,n){r=Number(r)||0;var o=t.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=e.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(H(a))return s;t[r+s]=a;}return s}function g(t,e,r,n){return R(N(e,t.length-r),t,r,n)}function b(t,e,r,n){return R(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function v(t,e,r,n){return b(t,e,r,n)}function w(t,e,r,n){return R(j(e),t,r,n)}function E(t,e,r,n){return R(function(t,e){for(var r,n,o,i=[],s=0;s<t.length&&!((e-=2)<0);++s)r=t.charCodeAt(s),n=r>>8,o=r%256,i.push(o),i.push(n);return i}(e,t.length-r),t,r,n)}function k(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function _(t,e,r){r=Math.min(t.length,r);for(var n=[],o=e;o<r;){var i,s,a,u,c=t[o],h=null,l=c>239?4:c>223?3:c>191?2:1;if(o+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(i=t[o+1]))&&(u=(31&c)<<6|63&i)>127&&(h=u);break;case 3:i=t[o+1],s=t[o+2],128==(192&i)&&128==(192&s)&&(u=(15&c)<<12|(63&i)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:i=t[o+1],s=t[o+2],a=t[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u);}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),o+=l;}return function(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=C));return r}(n)}r.kMaxLength=o,s.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return !1}}(),s.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(s.prototype,\"parent\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,\"offset\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),\"undefined\"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(t,e,r){return a(t,e,r)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(t,e,r){return function(t,e,r){return u(t),t<=0?i(t):void 0!==e?\"string\"==typeof r?i(t).fill(e,r):i(t).fill(e):i(t)}(t,e,r)},s.allocUnsafe=function(t){return c(t)},s.allocUnsafeSlow=function(t){return c(t)},s.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==s.prototype},s.compare=function(t,e){if(M(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),M(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(t)||!s.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,o=0,i=Math.min(r,n);o<i;++o)if(t[o]!==e[o]){r=t[o],n=e[o];break}return r<n?-1:n<r?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return !0;default:return !1}},s.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=s.allocUnsafe(e),o=0;for(r=0;r<t.length;++r){var i=t[r];if(M(i,Uint8Array)&&(i=s.from(i)),!s.isBuffer(i))throw new TypeError('\"list\" argument must be an Array of Buffers');i.copy(n,o),o+=i.length;}return n},s.byteLength=f,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)p(this,e,e+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)p(this,e,e+3),p(this,e+1,e+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)p(this,e,e+7),p(this,e+1,e+6),p(this,e+2,e+5),p(this,e+3,e+4);return this},s.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?_(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return \"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return \"\";if((r>>>=0)<=(e>>>=0))return \"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return T(this,e,r);case\"utf8\":case\"utf-8\":return _(this,e,r);case\"ascii\":return S(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return k(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return B(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0;}}.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t=\"\",e=r.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,e).replace(/(.{2})/g,\"$1 \").trim(),this.length>e&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},s.prototype.compare=function(t,e,r,n,o){if(M(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),e<0||r>t.length||n<0||o>this.length)throw new RangeError(\"out of range index\");if(n>=o&&e>=r)return 0;if(n>=o)return -1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,o>>>=0,this===t)return 0;for(var i=o-n,a=r-e,u=Math.min(i,a),c=this.slice(n,o),h=t.slice(e,r),l=0;l<u;++l)if(c[l]!==h[l]){i=c[l],a=h[l];break}return i<a?-1:a<i?1:0},s.prototype.includes=function(t,e,r){return -1!==this.indexOf(t,e,r)},s.prototype.indexOf=function(t,e,r){return d(this,t,e,r,!0)},s.prototype.lastIndexOf=function(t,e,r){return d(this,t,e,r,!1)},s.prototype.write=function(t,e,r,n){if(void 0===e)n=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)n=e,r=this.length,e=0;else {if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0);}var o=this.length-e;if((void 0===r||r>o)&&(r=o),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var i=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return g(this,t,e,r);case\"ascii\":return b(this,t,e,r);case\"latin1\":case\"binary\":return v(this,t,e,r);case\"base64\":return w(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,t,e,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),i=!0;}},s.prototype.toJSON=function(){return {type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function S(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var o=e;o<r;++o)n+=String.fromCharCode(127&t[o]);return n}function A(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var o=e;o<r;++o)n+=String.fromCharCode(t[o]);return n}function T(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var o=\"\",i=e;i<r;++i)o+=P(t[i]);return o}function B(t,e,r){for(var n=t.slice(e,r),o=\"\",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function O(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function I(t,e,r,n,o,i){if(!s.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>o||e<i)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function x(t,e,r,n,o,i){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function D(t,e,r,o,i){return e=+e,r>>>=0,i||x(t,0,r,4),n.write(t,e,r,o,23,4),r+4}function L(t,e,r,o,i){return e=+e,r>>>=0,i||x(t,0,r,8),n.write(t,e,r,o,52,8),r+8}s.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,t<0?(t+=r)<0&&(t=0):t>r&&(t=r),e<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return n.__proto__=s.prototype,n},s.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);for(var n=this[t],o=1,i=0;++i<e&&(o*=256);)n+=this[t+i]*o;return n},s.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);for(var n=this[t+--e],o=1;e>0&&(o*=256);)n+=this[t+--e]*o;return n},s.prototype.readUInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);for(var n=this[t],o=1,i=0;++i<e&&(o*=256);)n+=this[t+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*e)),n},s.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);for(var n=e,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*e)),i},s.prototype.readInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){t>>>=0,e||O(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(t,e){t>>>=0,e||O(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,e){return t>>>=0,e||O(t,4,this.length),n.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return t>>>=0,e||O(t,4,this.length),n.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return t>>>=0,e||O(t,8,this.length),n.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return t>>>=0,e||O(t,8,this.length),n.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||I(this,t,e,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[e]=255&t;++i<r&&(o*=256);)this[e+i]=t/o&255;return e+r},s.prototype.writeUIntBE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||I(this,t,e,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+r},s.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,1,255,0),this[e]=255&t,e+1},s.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},s.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);I(this,t,e,r,o-1,-o);}var i=0,s=1,a=0;for(this[e]=255&t;++i<r&&(s*=256);)t<0&&0===a&&0!==this[e+i-1]&&(a=1),this[e+i]=(t/s>>0)-a&255;return e+r},s.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);I(this,t,e,r,o-1,-o);}var i=r-1,s=1,a=0;for(this[e+i]=255&t;--i>=0&&(s*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/s>>0)-a&255;return e+r},s.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},s.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||I(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},s.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},s.prototype.writeDoubleLE=function(t,e,r){return L(this,t,e,!0,r)},s.prototype.writeDoubleBE=function(t,e,r){return L(this,t,e,!1,r)},s.prototype.copy=function(t,e,r,n){if(!s.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var o=n-r;if(this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,r,n);else if(this===t&&r<e&&e<n)for(var i=o-1;i>=0;--i)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return o},s.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!s.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var o=t.charCodeAt(0);(\"utf8\"===n&&o<128||\"latin1\"===n)&&(t=o);}}else \"number\"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;var i;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(i=e;i<r;++i)this[i]=t;else {var a=s.isBuffer(t)?t:s.from(t,n),u=a.length;if(0===u)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(i=0;i<r-e;++i)this[i+e]=a[i%u];}return this};var U=/[^+/0-9A-Za-z-_]/g;function P(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function N(t,e){var r;e=e||1/0;for(var n=t.length,o=null,i=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320);}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((e-=1)<0)break;i.push(r);}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128);}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128);}else {if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128);}}return i}function j(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(U,\"\")).length<2)return \"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function R(t,e,r,n){for(var o=0;o<n&&!(o+r>=e.length||o>=t.length);++o)e[o+r]=t[o];return o}function M(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function H(t){return t!=t}}).call(this);}).call(this,t(\"buffer\").Buffer);},{\"base64-js\":10,buffer:11,ieee754:15}],12:[function(t,e,r){(function(e){(function(){var e=t(\"base64-js\"),n=t(\"ieee754\"),o=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;r.Buffer=a,r.SlowBuffer=function(t){+t!=t&&(t=0);return a.alloc(+t)},r.INSPECT_MAX_BYTES=50;var i=2147483647;function s(t){if(t>i)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,a.prototype),e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return h(t)}return u(t,e,r)}function u(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|d(t,e),n=s(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(M(t,Uint8Array)){var e=new Uint8Array(t);return f(e.buffer,e.byteOffset,e.byteLength)}return l(t)}(t);if(null==t)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(M(t,ArrayBuffer)||t&&M(t.buffer,ArrayBuffer))return f(t,e,r);if(\"undefined\"!=typeof SharedArrayBuffer&&(M(t,SharedArrayBuffer)||t&&M(t.buffer,SharedArrayBuffer)))return f(t,e,r);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return a.from(n,e,r);var o=function(t){if(a.isBuffer(t)){var e=0|p(t.length),r=s(e);return 0===r.length?r:(t.copy(r,0,0,e),r)}if(void 0!==t.length)return \"number\"!=typeof t.length||H(t.length)?s(0):l(t);if(\"Buffer\"===t.type&&Array.isArray(t.data))return l(t.data)}(t);if(o)return o;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return a.from(t[Symbol.toPrimitive](\"string\"),e,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function c(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function h(t){return c(t),s(t<0?0:0|p(t))}function l(t){for(var e=t.length<0?0:0|p(t.length),r=s(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function f(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');var n;return n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r),Object.setPrototypeOf(n,a.prototype),n}function p(t){if(t>=i)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+i.toString(16)+\" bytes\");return 0|t}function d(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||M(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var o=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return N(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(t).length;default:if(o)return n?-1:N(t).length;e=(\"\"+e).toLowerCase(),o=!0;}}function y(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function m(t,e,r,n,o){if(0===t.length)return -1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),H(r=+r)&&(r=o?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(o)return -1;r=t.length-1;}else if(r<0){if(!o)return -1;r=0;}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,o);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,o);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,o){var i,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return -1;s=2,a/=2,u/=2,r/=2;}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(o){var h=-1;for(i=r;i<a;i++)if(c(t,i)===c(e,-1===h?0:i-h)){if(-1===h&&(h=i),i-h+1===u)return h*s}else -1!==h&&(i-=i-h),h=-1;}else for(r+u>a&&(r=a-u),i=r;i>=0;i--){for(var l=!0,f=0;f<u;f++)if(c(t,i+f)!==c(e,f)){l=!1;break}if(l)return i}return -1}function b(t,e,r,n){r=Number(r)||0;var o=t.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=e.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(H(a))return s;t[r+s]=a;}return s}function v(t,e,r,n){return R(N(e,t.length-r),t,r,n)}function w(t,e,r,n){return R(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function E(t,e,r,n){return R(j(e),t,r,n)}function k(t,e,r,n){return R(function(t,e){for(var r,n,o,i=[],s=0;s<t.length&&!((e-=2)<0);++s)r=t.charCodeAt(s),n=r>>8,o=r%256,i.push(o),i.push(n);return i}(e,t.length-r),t,r,n)}function _(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function C(t,e,r){r=Math.min(t.length,r);for(var n=[],o=e;o<r;){var i,s,a,u,c=t[o],h=null,l=c>239?4:c>223?3:c>191?2:1;if(o+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(i=t[o+1]))&&(u=(31&c)<<6|63&i)>127&&(h=u);break;case 3:i=t[o+1],s=t[o+2],128==(192&i)&&128==(192&s)&&(u=(15&c)<<12|(63&i)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:i=t[o+1],s=t[o+2],a=t[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u);}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),o+=l;}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=S));return r}(n)}r.kMaxLength=i,a.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return !1}}(),a.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(a.prototype,\"parent\",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,\"offset\",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}}),a.poolSize=8192,a.from=function(t,e,r){return u(t,e,r)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array),a.alloc=function(t,e,r){return function(t,e,r){return c(t),t<=0?s(t):void 0!==e?\"string\"==typeof r?s(t).fill(e,r):s(t).fill(e):s(t)}(t,e,r)},a.allocUnsafe=function(t){return h(t)},a.allocUnsafeSlow=function(t){return h(t)},a.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==a.prototype},a.compare=function(t,e){if(M(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),M(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(t)||!a.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,o=0,i=Math.min(r,n);o<i;++o)if(t[o]!==e[o]){r=t[o],n=e[o];break}return r<n?-1:n<r?1:0},a.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return !0;default:return !1}},a.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return a.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=a.allocUnsafe(e),o=0;for(r=0;r<t.length;++r){var i=t[r];if(M(i,Uint8Array))o+i.length>n.length?a.from(i).copy(n,o):Uint8Array.prototype.set.call(n,i,o);else {if(!a.isBuffer(i))throw new TypeError('\"list\" argument must be an Array of Buffers');i.copy(n,o);}o+=i.length;}return n},a.byteLength=d,a.prototype._isBuffer=!0,a.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)y(this,e,e+1);return this},a.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)y(this,e,e+3),y(this,e+1,e+2);return this},a.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)y(this,e,e+7),y(this,e+1,e+6),y(this,e+2,e+5),y(this,e+3,e+4);return this},a.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?C(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return \"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return \"\";if((r>>>=0)<=(e>>>=0))return \"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return B(this,e,r);case\"utf8\":case\"utf-8\":return C(this,e,r);case\"ascii\":return A(this,e,r);case\"latin1\":case\"binary\":return T(this,e,r);case\"base64\":return _(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0;}}.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(t){if(!a.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===a.compare(this,t)},a.prototype.inspect=function(){var t=\"\",e=r.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,e).replace(/(.{2})/g,\"$1 \").trim(),this.length>e&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},o&&(a.prototype[o]=a.prototype.inspect),a.prototype.compare=function(t,e,r,n,o){if(M(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),e<0||r>t.length||n<0||o>this.length)throw new RangeError(\"out of range index\");if(n>=o&&e>=r)return 0;if(n>=o)return -1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,o>>>=0,this===t)return 0;for(var i=o-n,s=r-e,u=Math.min(i,s),c=this.slice(n,o),h=t.slice(e,r),l=0;l<u;++l)if(c[l]!==h[l]){i=c[l],s=h[l];break}return i<s?-1:s<i?1:0},a.prototype.includes=function(t,e,r){return -1!==this.indexOf(t,e,r)},a.prototype.indexOf=function(t,e,r){return m(this,t,e,r,!0)},a.prototype.lastIndexOf=function(t,e,r){return m(this,t,e,r,!1)},a.prototype.write=function(t,e,r,n){if(void 0===e)n=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)n=e,r=this.length,e=0;else {if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0);}var o=this.length-e;if((void 0===r||r>o)&&(r=o),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var i=!1;;)switch(n){case\"hex\":return b(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":case\"latin1\":case\"binary\":return w(this,t,e,r);case\"base64\":return E(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return k(this,t,e,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),i=!0;}},a.prototype.toJSON=function(){return {type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function A(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var o=e;o<r;++o)n+=String.fromCharCode(127&t[o]);return n}function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var o=e;o<r;++o)n+=String.fromCharCode(t[o]);return n}function B(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var o=\"\",i=e;i<r;++i)o+=G[t[i]];return o}function O(t,e,r){for(var n=t.slice(e,r),o=\"\",i=0;i<n.length-1;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function I(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function x(t,e,r,n,o,i){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>o||e<i)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function D(t,e,r,n,o,i){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function L(t,e,r,o,i){return e=+e,r>>>=0,i||D(t,0,r,4),n.write(t,e,r,o,23,4),r+4}function U(t,e,r,o,i){return e=+e,r>>>=0,i||D(t,0,r,8),n.write(t,e,r,o,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,t<0?(t+=r)<0&&(t=0):t>r&&(t=r),e<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return Object.setPrototypeOf(n,a.prototype),n},a.prototype.readUintLE=a.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||I(t,e,this.length);for(var n=this[t],o=1,i=0;++i<e&&(o*=256);)n+=this[t+i]*o;return n},a.prototype.readUintBE=a.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||I(t,e,this.length);for(var n=this[t+--e],o=1;e>0&&(o*=256);)n+=this[t+--e]*o;return n},a.prototype.readUint8=a.prototype.readUInt8=function(t,e){return t>>>=0,e||I(t,1,this.length),this[t]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||I(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||I(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||I(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||I(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||I(t,e,this.length);for(var n=this[t],o=1,i=0;++i<e&&(o*=256);)n+=this[t+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||I(t,e,this.length);for(var n=e,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*e)),i},a.prototype.readInt8=function(t,e){return t>>>=0,e||I(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||I(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||I(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||I(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||I(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||I(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||I(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||I(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||I(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||x(this,t,e,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[e]=255&t;++i<r&&(o*=256);)this[e+i]=t/o&255;return e+r},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||x(this,t,e,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);x(this,t,e,r,o-1,-o);}var i=0,s=1,a=0;for(this[e]=255&t;++i<r&&(s*=256);)t<0&&0===a&&0!==this[e+i-1]&&(a=1),this[e+i]=(t/s>>0)-a&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);x(this,t,e,r,o-1,-o);}var i=r-1,s=1,a=0;for(this[e+i]=255&t;--i>=0&&(s*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/s>>0)-a&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return L(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return L(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return U(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return U(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var o=n-r;return this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(e,r,n):Uint8Array.prototype.set.call(t,this.subarray(r,n),e),o},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var o=t.charCodeAt(0);(\"utf8\"===n&&o<128||\"latin1\"===n)&&(t=o);}}else \"number\"==typeof t?t&=255:\"boolean\"==typeof t&&(t=Number(t));if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;var i;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(i=e;i<r;++i)this[i]=t;else {var s=a.isBuffer(t)?t:a.from(t,n),u=s.length;if(0===u)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(i=0;i<r-e;++i)this[i+e]=s[i%u];}return this};var P=/[^+/0-9A-Za-z-_]/g;function N(t,e){var r;e=e||1/0;for(var n=t.length,o=null,i=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320);}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((e-=1)<0)break;i.push(r);}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128);}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128);}else {if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128);}}return i}function j(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(P,\"\")).length<2)return \"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function R(t,e,r,n){for(var o=0;o<n&&!(o+r>=e.length||o>=t.length);++o)e[o+r]=t[o];return o}function M(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function H(t){return t!=t}var G=function(){for(var t=new Array(256),e=0;e<16;++e)for(var r=16*e,n=0;n<16;++n)t[r+n]=\"0123456789abcdef\"[e]+\"0123456789abcdef\"[n];return t}();}).call(this);}).call(this,t(\"buffer\").Buffer);},{\"base64-js\":10,buffer:11,ieee754:15}],13:[function(t,e,r){const n=t(\"shallow-clone\"),o=t(\"kind-of\"),i=t(\"is-plain-object\");function s(t,e){switch(o(t)){case\"object\":return function(t,e){if(\"function\"==typeof e)return e(t);if(e||i(t)){const r=new t.constructor;for(let n in t)r[n]=s(t[n],e);return r}return t}(t,e);case\"array\":return function(t,e){const r=new t.constructor(t.length);for(let n=0;n<t.length;n++)r[n]=s(t[n],e);return r}(t,e);default:return n(t)}}e.exports=s;},{\"is-plain-object\":16,\"kind-of\":18,\"shallow-clone\":24}],14:[function(t,e,r){e.exports=class{async next(t){let e=this.createConsumer(t),r=await e.next();return e.return(),r}async once(t){let e=await this.next(t);return e.done&&await new Promise(()=>{}),e.value}createConsumer(){throw new TypeError(\"Method must be overriden by subclass\")}[Symbol.asyncIterator](){return this.createConsumer()}};},{}],15:[function(t,e,r){r.read=function(t,e,r,n,o){var i,s,a=8*o-n-1,u=(1<<a)-1,c=u>>1,h=-7,l=r?o-1:0,f=r?-1:1,p=t[e+l];for(l+=f,i=p&(1<<-h)-1,p>>=-h,h+=a;h>0;i=256*i+t[e+l],l+=f,h-=8);for(s=i&(1<<-h)-1,i>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===i)i=1-c;else {if(i===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),i-=c;}return (p?-1:1)*s*Math.pow(2,i-n)},r.write=function(t,e,r,n,o,i){var s,a,u,c=8*i-o-1,h=(1<<c)-1,l=h>>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:i-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,o),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,o),s=0));o>=8;t[r+p]=255&a,p+=d,a/=256,o-=8);for(s=s<<o|a,c+=o;c>0;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*y;};},{}],16:[function(t,e,r){var n=t(\"isobject\");function o(t){return !0===n(t)&&\"[object Object]\"===Object.prototype.toString.call(t)}e.exports=function(t){var e,r;return !1!==o(t)&&(\"function\"==typeof(e=t.constructor)&&(!1!==o(r=e.prototype)&&!1!==r.hasOwnProperty(\"isPrototypeOf\")))};},{isobject:17}],17:[function(t,e,r){e.exports=function(t){return null!=t&&\"object\"==typeof t&&!1===Array.isArray(t)};},{}],18:[function(t,e,r){var n=Object.prototype.toString;function o(t){return \"function\"==typeof t.constructor?t.constructor.name:null}e.exports=function(t){if(void 0===t)return \"undefined\";if(null===t)return \"null\";var e=typeof t;if(\"boolean\"===e)return \"boolean\";if(\"string\"===e)return \"string\";if(\"number\"===e)return \"number\";if(\"symbol\"===e)return \"symbol\";if(\"function\"===e)return \"GeneratorFunction\"===o(t)?\"generatorfunction\":\"function\";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(t))return \"array\";if(function(t){if(t.constructor&&\"function\"==typeof t.constructor.isBuffer)return t.constructor.isBuffer(t);return !1}(t))return \"buffer\";if(function(t){try{if(\"number\"==typeof t.length&&\"function\"==typeof t.callee)return !0}catch(t){if(-1!==t.message.indexOf(\"callee\"))return !0}return !1}(t))return \"arguments\";if(function(t){return t instanceof Date||\"function\"==typeof t.toDateString&&\"function\"==typeof t.getDate&&\"function\"==typeof t.setDate}(t))return \"date\";if(function(t){return t instanceof Error||\"string\"==typeof t.message&&t.constructor&&\"number\"==typeof t.constructor.stackTraceLimit}(t))return \"error\";if(function(t){return t instanceof RegExp||\"string\"==typeof t.flags&&\"boolean\"==typeof t.ignoreCase&&\"boolean\"==typeof t.multiline&&\"boolean\"==typeof t.global}(t))return \"regexp\";switch(o(t)){case\"Symbol\":return \"symbol\";case\"Promise\":return \"promise\";case\"WeakMap\":return \"weakmap\";case\"WeakSet\":return \"weakset\";case\"Map\":return \"map\";case\"Set\":return \"set\";case\"Int8Array\":return \"int8array\";case\"Uint8Array\":return \"uint8array\";case\"Uint8ClampedArray\":return \"uint8clampedarray\";case\"Int16Array\":return \"int16array\";case\"Uint16Array\":return \"uint16array\";case\"Int32Array\":return \"int32array\";case\"Uint32Array\":return \"uint32array\";case\"Float32Array\":return \"float32array\";case\"Float64Array\":return \"float64array\"}if(function(t){return \"function\"==typeof t.throw&&\"function\"==typeof t.return&&\"function\"==typeof t.next}(t))return \"generator\";switch(e=n.call(t)){case\"[object Object]\":return \"object\";case\"[object Map Iterator]\":return \"mapiterator\";case\"[object Set Iterator]\":return \"setiterator\";case\"[object String Iterator]\":return \"stringiterator\";case\"[object Array Iterator]\":return \"arrayiterator\"}return e.slice(8,-1).toLowerCase().replace(/\\s/g,\"\")};},{}],19:[function(t,e,r){var n,o;function i(){if(arguments.length)return i.from(arguments)}function s(){}n=\"An argument without append, prepend, or detach methods was given to `List\",o=i.prototype,i.of=function(){return i.from.call(this,arguments)},i.from=function(t){var e,r,n,o=new this;if(t&&(e=t.length))for(r=-1;++r<e;)null!==(n=t[r])&&void 0!==n&&o.append(n);return o},o.head=null,o.tail=null,o.toArray=function(){for(var t=this.head,e=[];t;)e.push(t),t=t.next;return e},o.prepend=function(t){if(!t)return !1;if(!t.append||!t.prepend||!t.detach)throw new Error(n+\"#prepend`.\");var e;return (e=this.head)?e.prepend(t):(t.detach(),t.list=this,this.head=t,t)},o.append=function(t){if(!t)return !1;if(!t.append||!t.prepend||!t.detach)throw new Error(n+\"#append`.\");var e,r;return (r=this.tail)?r.append(t):(e=this.head)?e.append(t):(t.detach(),t.list=this,this.head=t,t)},i.Item=s;var a=s.prototype;a.next=null,a.prev=null,a.list=null,a.detach=function(){var t=this.list,e=this.prev,r=this.next;return t?(t.tail===this&&(t.tail=e),t.head===this&&(t.head=r),t.tail===t.head&&(t.tail=null),e&&(e.next=r),r&&(r.prev=e),this.prev=this.next=this.list=null,this):this},a.prepend=function(t){if(!(t&&t.append&&t.prepend&&t.detach))throw new Error(n+\"Item#prepend`.\");var e=this.list,r=this.prev;return !!e&&(t.detach(),r&&(t.prev=r,r.next=t),t.next=this,t.list=e,this.prev=t,this===e.head&&(e.head=t),e.tail||(e.tail=this),t)},a.append=function(t){if(!(t&&t.append&&t.prepend&&t.detach))throw new Error(n+\"Item#append`.\");var e=this.list,r=this.next;return !!e&&(t.detach(),r&&(t.next=r,r.prev=t),t.prev=this,t.list=e,this.next=t,this!==e.tail&&e.tail||(e.tail=t),t)},e.exports=i;},{}],20:[function(t,e,r){e.exports=t(\"./_source/linked-list.js\");},{\"./_source/linked-list.js\":19}],21:[function(t,e,r){e.exports=function(t){var e=[],r=[];return function t(n,o){var i,s,a;if(!(\"object\"!=typeof n||null===n||n instanceof Boolean||n instanceof Date||n instanceof Number||n instanceof RegExp||n instanceof String)){for(i=0;i<e.length;i+=1)if(e[i]===n)return {$ref:r[i]};if(e.push(n),r.push(o),\"[object Array]\"===Object.prototype.toString.apply(n))for(a=[],i=0;i<n.length;i+=1)a[i]=t(n[i],o+\"[\"+i+\"]\");else for(s in a={},n)Object.prototype.hasOwnProperty.call(n,s)&&(a[s]=t(n[s],o+\"[\"+JSON.stringify(s)+\"]\"));return a}return n}(t,\"$\")};},{}],22:[function(t,e,r){var n=t(\"./decycle\"),o=function(){return !this}();function i(t,e){this.name=\"AuthTokenExpiredError\",this.message=t,this.expiry=e,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function s(t){this.name=\"AuthTokenInvalidError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function a(t,e){this.name=\"AuthTokenNotBeforeError\",this.message=t,this.date=e,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function u(t){this.name=\"AuthTokenError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function c(t){this.name=\"AuthError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function h(t,e){this.name=\"SilentMiddlewareBlockedError\",this.message=t,this.type=e,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function l(t){this.name=\"InvalidActionError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function f(t){this.name=\"InvalidArgumentsError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function p(t){this.name=\"InvalidOptionsError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function d(t){this.name=\"InvalidMessageError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function y(t,e){this.name=\"SocketProtocolError\",this.message=t,this.code=e,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function m(t){this.name=\"ServerProtocolError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function g(t){this.name=\"HTTPServerError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function b(t){this.name=\"ResourceLimitError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function v(t){this.name=\"TimeoutError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function w(t,e){this.name=\"BadConnectionError\",this.message=t,this.type=e,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function E(t){this.name=\"BrokerError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function k(t,e){this.name=\"ProcessExitError\",this.message=t,this.code=e,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}function _(t){this.name=\"UnknownError\",this.message=t,Error.captureStackTrace&&!o?Error.captureStackTrace(this,arguments.callee):this.stack=(new Error).stack;}i.prototype=Object.create(Error.prototype),s.prototype=Object.create(Error.prototype),a.prototype=Object.create(Error.prototype),u.prototype=Object.create(Error.prototype),c.prototype=Object.create(Error.prototype),h.prototype=Object.create(Error.prototype),l.prototype=Object.create(Error.prototype),f.prototype=Object.create(Error.prototype),p.prototype=Object.create(Error.prototype),d.prototype=Object.create(Error.prototype),y.prototype=Object.create(Error.prototype),m.prototype=Object.create(Error.prototype),g.prototype=Object.create(Error.prototype),b.prototype=Object.create(Error.prototype),v.prototype=Object.create(Error.prototype),w.prototype=Object.create(Error.prototype),E.prototype=Object.create(Error.prototype),k.prototype=Object.create(Error.prototype),_.prototype=Object.create(Error.prototype),e.exports={AuthTokenExpiredError:i,AuthTokenInvalidError:s,AuthTokenNotBeforeError:a,AuthTokenError:u,AuthError:c,SilentMiddlewareBlockedError:h,InvalidActionError:l,InvalidArgumentsError:f,InvalidOptionsError:p,InvalidMessageError:d,SocketProtocolError:y,ServerProtocolError:m,HTTPServerError:g,ResourceLimitError:b,TimeoutError:v,BadConnectionError:w,BrokerError:E,ProcessExitError:k,UnknownError:_},e.exports.socketProtocolErrorStatuses={1001:\"Socket was disconnected\",1002:\"A WebSocket protocol error was encountered\",1003:\"Server terminated socket because it received invalid data\",1005:\"Socket closed without status code\",1006:\"Socket hung up\",1007:\"Message format was incorrect\",1008:\"Encountered a policy violation\",1009:\"Message was too big to process\",1010:\"Client ended the connection because the server did not comply with extension requirements\",1011:\"Server encountered an unexpected fatal condition\",4000:\"Server ping timed out\",4001:\"Client pong timed out\",4002:\"Server failed to sign auth token\",4003:\"Failed to complete handshake\",4004:\"Client failed to save auth token\",4005:\"Did not receive #handshake from client before timeout\",4006:\"Failed to bind socket to message broker\",4007:\"Client connection establishment timed out\",4008:\"Server rejected handshake from client\",4009:\"Server received a message before the client handshake\"},e.exports.socketProtocolIgnoreStatuses={1000:\"Socket closed normally\",1001:\"Socket hung up\"};var C={domain:1,domainEmitter:1,domainThrown:1};e.exports.dehydrateError=function(t,e){var r;if(t&&\"object\"==typeof t)for(var o in r={message:t.message},e&&(r.stack=t.stack),t)C[o]||(r[o]=t[o]);else r=\"function\"==typeof t?\"[function \"+(t.name||\"anonymous\")+\"]\":t;return n(r)},e.exports.hydrateError=function(t){var e=null;if(null!=t)if(\"object\"==typeof t)for(var r in e=new Error(t.message),t)t.hasOwnProperty(r)&&(e[r]=t[r]);else e=t;return e},e.exports.decycle=n;},{\"./decycle\":21}],23:[function(t,e,r){(function(t){(function(){const r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",n=/^[ \\n\\r\\t]*[{\\[]/;let o=function(e,n){if(\"undefined\"!=typeof ArrayBuffer&&n instanceof ArrayBuffer)return {base64:!0,data:function(t){let e=new Uint8Array(t),n=e.length,o=\"\";for(let t=0;t<n;t+=3)o+=r[e[t]>>2],o+=r[(3&e[t])<<4|e[t+1]>>4],o+=r[(15&e[t+1])<<2|e[t+2]>>6],o+=r[63&e[t+2]];return n%3==2?o=o.substring(0,o.length-1)+\"=\":n%3==1&&(o=o.substring(0,o.length-2)+\"==\"),o}(n)};if(void 0!==t){if(n instanceof t)return {base64:!0,data:n.toString(\"base64\")};if(n&&\"Buffer\"===n.type&&Array.isArray(n.data)){let e;return {base64:!0,data:(e=t.from?t.from(n.data):new t(n.data)).toString(\"base64\")}}}return n};e.exports.decode=function(t){if(null==t)return null;if(\"#1\"===t||\"#2\"===t)return t;let e=t.toString();if(!n.test(e))return e;try{return JSON.parse(e)}catch(t){}return e},e.exports.encode=function(t){return \"#1\"===t||\"#2\"===t?t:JSON.stringify(t,o)};}).call(this);}).call(this,t(\"buffer\").Buffer);},{buffer:11}],24:[function(t,e,r){(function(r){(function(){const n=Symbol.prototype.valueOf,o=t(\"kind-of\");e.exports=function(t,e){switch(o(t)){case\"array\":return t.slice();case\"object\":return Object.assign({},t);case\"date\":return new t.constructor(Number(t));case\"map\":return new Map(t);case\"set\":return new Set(t);case\"buffer\":return function(t){const e=t.length,n=r.allocUnsafe?r.allocUnsafe(e):r.from(e);return t.copy(n),n}(t);case\"symbol\":return function(t){return n?Object(n.call(t)):{}}(t);case\"arraybuffer\":return function(t){const e=new t.constructor(t.byteLength);return new Uint8Array(e).set(new Uint8Array(t)),e}(t);case\"float32array\":case\"float64array\":case\"int16array\":case\"int32array\":case\"int8array\":case\"uint16array\":case\"uint32array\":case\"uint8clampedarray\":case\"uint8array\":return function(t,e){return new t.constructor(t.buffer,t.byteOffset,t.length)}(t);case\"regexp\":return function(t){const e=void 0!==t.flags?t.flags:/\\w+$/.exec(t)||void 0,r=new t.constructor(t.source,e);return r.lastIndex=t.lastIndex,r}(t);case\"error\":return Object.create(t);default:return t}};}).call(this);}).call(this,t(\"buffer\").Buffer);},{buffer:11,\"kind-of\":18}],25:[function(t,e,r){const n=t(\"consumable-stream\");e.exports=class extends n{constructor(t,e){super(),this.name=e,this._streamDemux=t;}createConsumer(t){return this._streamDemux.createConsumer(this.name,t)}};},{\"consumable-stream\":14}],26:[function(t,e,r){const n=t(\"writable-consumable-stream\"),o=t(\"./demuxed-consumable-stream\");e.exports=class{constructor(){this._mainStream=new n;}write(t,e){this._mainStream.write({stream:t,data:{value:e,done:!1}});}close(t,e){this._mainStream.write({stream:t,data:{value:e,done:!0}});}closeAll(t){this._mainStream.close(t);}writeToConsumer(t,e){this._mainStream.writeToConsumer(t,{consumerId:t,data:{value:e,done:!1}});}closeConsumer(t,e){this._mainStream.closeConsumer(t,{consumerId:t,data:{value:e,done:!0}});}getConsumerStats(t){return this._mainStream.getConsumerStats(t)}getConsumerStatsList(t){return this._mainStream.getConsumerStatsList().filter(e=>e.stream===t)}getConsumerStatsListAll(){return this._mainStream.getConsumerStatsList()}kill(t,e){let r=this.getConsumerStatsList(t),n=r.length;for(let t=0;t<n;t++)this.killConsumer(r[t].id,e);}killAll(t){this._mainStream.kill(t);}killConsumer(t,e){this._mainStream.killConsumer(t,e);}getBackpressure(t){let e=this.getConsumerStatsList(t),r=e.length,n=0;for(let t=0;t<r;t++){let r=e[t];r.backpressure>n&&(n=r.backpressure);}return n}getBackpressureAll(){return this._mainStream.getBackpressure()}getConsumerBackpressure(t){return this._mainStream.getConsumerBackpressure(t)}hasConsumer(t,e){let r=this._mainStream.getConsumerStats(e);return !!r&&r.stream===t}hasConsumerAll(t){return this._mainStream.hasConsumer(t)}createConsumer(t,e){let r=this._mainStream.createConsumer(e),n=r.next;r.next=async function(){for(;;){let e=await n.apply(this,arguments);if(e.value&&(e.value.stream===t||e.value.consumerId===this.id))return e.value.data.done&&this.return(),e.value.data;if(e.done)return e}};let o=r.getStats;r.getStats=function(){let e=o.apply(this,arguments);return e.stream=t,e};let i=r.applyBackpressure;r.applyBackpressure=function(e){!e.value||e.value.stream!==t&&e.value.consumerId!==this.id?e.done&&i.apply(this,arguments):i.apply(this,arguments);};let s=r.releaseBackpressure;return r.releaseBackpressure=function(e){!e.value||e.value.stream!==t&&e.value.consumerId!==this.id?e.done&&s.apply(this,arguments):s.apply(this,arguments);},r}stream(t){return new o(this,t)}};},{\"./demuxed-consumable-stream\":25,\"writable-consumable-stream\":43}],27:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),Object.defineProperty(r,\"v1\",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(r,\"v3\",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(r,\"v4\",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(r,\"v5\",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(r,\"NIL\",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(r,\"version\",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(r,\"validate\",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(r,\"stringify\",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(r,\"parse\",{enumerable:!0,get:function(){return l.default}});var n=f(t(\"./v1.js\")),o=f(t(\"./v3.js\")),i=f(t(\"./v4.js\")),s=f(t(\"./v5.js\")),a=f(t(\"./nil.js\")),u=f(t(\"./version.js\")),c=f(t(\"./validate.js\")),h=f(t(\"./stringify.js\")),l=f(t(\"./parse.js\"));function f(t){return t&&t.__esModule?t:{default:t}}},{\"./nil.js\":29,\"./parse.js\":30,\"./stringify.js\":34,\"./v1.js\":35,\"./v3.js\":36,\"./v4.js\":38,\"./v5.js\":39,\"./validate.js\":40,\"./version.js\":41}],28:[function(t,e,r){function n(t){return 14+(t+64>>>9<<4)+1}function o(t,e){const r=(65535&t)+(65535&e);return (t>>16)+(e>>16)+(r>>16)<<16|65535&r}function i(t,e,r,n,i,s){return o((a=o(o(e,t),o(n,s)))<<(u=i)|a>>>32-u,r);var a,u;}function s(t,e,r,n,o,s,a){return i(e&r|~e&n,t,e,o,s,a)}function a(t,e,r,n,o,s,a){return i(e&n|r&~n,t,e,o,s,a)}function u(t,e,r,n,o,s,a){return i(e^r^n,t,e,o,s,a)}function c(t,e,r,n,o,s,a){return i(r^(e|~n),t,e,o,s,a)}Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var h=function(t){if(\"string\"==typeof t){const e=unescape(encodeURIComponent(t));t=new Uint8Array(e.length);for(let r=0;r<e.length;++r)t[r]=e.charCodeAt(r);}return function(t){const e=[],r=32*t.length;for(let n=0;n<r;n+=8){const r=t[n>>5]>>>n%32&255,o=parseInt(\"0123456789abcdef\".charAt(r>>>4&15)+\"0123456789abcdef\".charAt(15&r),16);e.push(o);}return e}(function(t,e){t[e>>5]|=128<<e%32,t[n(e)-1]=e;let r=1732584193,i=-271733879,h=-1732584194,l=271733878;for(let e=0;e<t.length;e+=16){const n=r,f=i,p=h,d=l;r=s(r,i,h,l,t[e],7,-680876936),l=s(l,r,i,h,t[e+1],12,-389564586),h=s(h,l,r,i,t[e+2],17,606105819),i=s(i,h,l,r,t[e+3],22,-1044525330),r=s(r,i,h,l,t[e+4],7,-176418897),l=s(l,r,i,h,t[e+5],12,1200080426),h=s(h,l,r,i,t[e+6],17,-1473231341),i=s(i,h,l,r,t[e+7],22,-45705983),r=s(r,i,h,l,t[e+8],7,1770035416),l=s(l,r,i,h,t[e+9],12,-1958414417),h=s(h,l,r,i,t[e+10],17,-42063),i=s(i,h,l,r,t[e+11],22,-1990404162),r=s(r,i,h,l,t[e+12],7,1804603682),l=s(l,r,i,h,t[e+13],12,-40341101),h=s(h,l,r,i,t[e+14],17,-1502002290),i=s(i,h,l,r,t[e+15],22,1236535329),r=a(r,i,h,l,t[e+1],5,-165796510),l=a(l,r,i,h,t[e+6],9,-1069501632),h=a(h,l,r,i,t[e+11],14,643717713),i=a(i,h,l,r,t[e],20,-373897302),r=a(r,i,h,l,t[e+5],5,-701558691),l=a(l,r,i,h,t[e+10],9,38016083),h=a(h,l,r,i,t[e+15],14,-660478335),i=a(i,h,l,r,t[e+4],20,-405537848),r=a(r,i,h,l,t[e+9],5,568446438),l=a(l,r,i,h,t[e+14],9,-1019803690),h=a(h,l,r,i,t[e+3],14,-187363961),i=a(i,h,l,r,t[e+8],20,1163531501),r=a(r,i,h,l,t[e+13],5,-1444681467),l=a(l,r,i,h,t[e+2],9,-51403784),h=a(h,l,r,i,t[e+7],14,1735328473),i=a(i,h,l,r,t[e+12],20,-1926607734),r=u(r,i,h,l,t[e+5],4,-378558),l=u(l,r,i,h,t[e+8],11,-2022574463),h=u(h,l,r,i,t[e+11],16,1839030562),i=u(i,h,l,r,t[e+14],23,-35309556),r=u(r,i,h,l,t[e+1],4,-1530992060),l=u(l,r,i,h,t[e+4],11,1272893353),h=u(h,l,r,i,t[e+7],16,-155497632),i=u(i,h,l,r,t[e+10],23,-1094730640),r=u(r,i,h,l,t[e+13],4,681279174),l=u(l,r,i,h,t[e],11,-358537222),h=u(h,l,r,i,t[e+3],16,-722521979),i=u(i,h,l,r,t[e+6],23,76029189),r=u(r,i,h,l,t[e+9],4,-640364487),l=u(l,r,i,h,t[e+12],11,-421815835),h=u(h,l,r,i,t[e+15],16,530742520),i=u(i,h,l,r,t[e+2],23,-995338651),r=c(r,i,h,l,t[e],6,-198630844),l=c(l,r,i,h,t[e+7],10,1126891415),h=c(h,l,r,i,t[e+14],15,-1416354905),i=c(i,h,l,r,t[e+5],21,-57434055),r=c(r,i,h,l,t[e+12],6,1700485571),l=c(l,r,i,h,t[e+3],10,-1894986606),h=c(h,l,r,i,t[e+10],15,-1051523),i=c(i,h,l,r,t[e+1],21,-2054922799),r=c(r,i,h,l,t[e+8],6,1873313359),l=c(l,r,i,h,t[e+15],10,-30611744),h=c(h,l,r,i,t[e+6],15,-1560198380),i=c(i,h,l,r,t[e+13],21,1309151649),r=c(r,i,h,l,t[e+4],6,-145523070),l=c(l,r,i,h,t[e+11],10,-1120210379),h=c(h,l,r,i,t[e+2],15,718787259),i=c(i,h,l,r,t[e+9],21,-343485551),r=o(r,n),i=o(i,f),h=o(h,p),l=o(l,d);}return [r,i,h,l]}(function(t){if(0===t.length)return [];const e=8*t.length,r=new Uint32Array(n(e));for(let n=0;n<e;n+=8)r[n>>5]|=(255&t[n/8])<<n%32;return r}(t),8*t.length))};r.default=h;},{}],29:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;r.default=\"00000000-0000-0000-0000-000000000000\";},{}],30:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,o=(n=t(\"./validate.js\"))&&n.__esModule?n:{default:n};var i=function(t){if(!(0, o.default)(t))throw TypeError(\"Invalid UUID\");let e;const r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=255&e,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=255&e,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=255&e,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=255&e,r};r.default=i;},{\"./validate.js\":40}],31:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;r.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;},{}],32:[function(t,e,r){let n;Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(){if(!n&&!(n=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return n(o)};const o=new Uint8Array(16);},{}],33:[function(t,e,r){function n(t,e,r,n){switch(t){case 0:return e&r^~e&n;case 1:return e^r^n;case 2:return e&r^e&n^r&n;case 3:return e^r^n}}function o(t,e){return t<<e|t>>>32-e}Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var i=function(t){const e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(\"string\"==typeof t){const e=unescape(encodeURIComponent(t));t=[];for(let r=0;r<e.length;++r)t.push(e.charCodeAt(r));}else Array.isArray(t)||(t=Array.prototype.slice.call(t));t.push(128);const i=t.length/4+2,s=Math.ceil(i/16),a=new Array(s);for(let e=0;e<s;++e){const r=new Uint32Array(16);for(let n=0;n<16;++n)r[n]=t[64*e+4*n]<<24|t[64*e+4*n+1]<<16|t[64*e+4*n+2]<<8|t[64*e+4*n+3];a[e]=r;}a[s-1][14]=8*(t.length-1)/Math.pow(2,32),a[s-1][14]=Math.floor(a[s-1][14]),a[s-1][15]=8*(t.length-1)&4294967295;for(let t=0;t<s;++t){const i=new Uint32Array(80);for(let e=0;e<16;++e)i[e]=a[t][e];for(let t=16;t<80;++t)i[t]=o(i[t-3]^i[t-8]^i[t-14]^i[t-16],1);let s=r[0],u=r[1],c=r[2],h=r[3],l=r[4];for(let t=0;t<80;++t){const r=Math.floor(t/20),a=o(s,5)+n(r,u,c,h)+l+e[r]+i[t]>>>0;l=h,h=c,c=o(u,30)>>>0,u=s,s=a;}r[0]=r[0]+s>>>0,r[1]=r[1]+u>>>0,r[2]=r[2]+c>>>0,r[3]=r[3]+h>>>0,r[4]=r[4]+l>>>0;}return [r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]};r.default=i;},{}],34:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,o=(n=t(\"./validate.js\"))&&n.__esModule?n:{default:n};const i=[];for(let t=0;t<256;++t)i.push((t+256).toString(16).substr(1));var s=function(t,e=0){const r=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+\"-\"+i[t[e+4]]+i[t[e+5]]+\"-\"+i[t[e+6]]+i[t[e+7]]+\"-\"+i[t[e+8]]+i[t[e+9]]+\"-\"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!(0, o.default)(r))throw TypeError(\"Stringified UUID is invalid\");return r};r.default=s;},{\"./validate.js\":40}],35:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=i(t(\"./rng.js\")),o=i(t(\"./stringify.js\"));function i(t){return t&&t.__esModule?t:{default:t}}let s,a,u=0,c=0;var h=function(t,e,r){let i=e&&r||0;const h=e||new Array(16);let l=(t=t||{}).node||s,f=void 0!==t.clockseq?t.clockseq:a;if(null==l||null==f){const e=t.random||(t.rng||n.default)();null==l&&(l=s=[1|e[0],e[1],e[2],e[3],e[4],e[5]]),null==f&&(f=a=16383&(e[6]<<8|e[7]));}let p=void 0!==t.msecs?t.msecs:Date.now(),d=void 0!==t.nsecs?t.nsecs:c+1;const y=p-u+(d-c)/1e4;if(y<0&&void 0===t.clockseq&&(f=f+1&16383),(y<0||p>u)&&void 0===t.nsecs&&(d=0),d>=1e4)throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");u=p,c=d,a=f;const m=(1e4*(268435455&(p+=122192928e5))+d)%4294967296;h[i++]=m>>>24&255,h[i++]=m>>>16&255,h[i++]=m>>>8&255,h[i++]=255&m;const g=p/4294967296*1e4&268435455;h[i++]=g>>>8&255,h[i++]=255&g,h[i++]=g>>>24&15|16,h[i++]=g>>>16&255,h[i++]=f>>>8|128,h[i++]=255&f;for(let t=0;t<6;++t)h[i+t]=l[t];return e||(0, o.default)(h)};r.default=h;},{\"./rng.js\":32,\"./stringify.js\":34}],36:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=i(t(\"./v35.js\")),o=i(t(\"./md5.js\"));function i(t){return t&&t.__esModule?t:{default:t}}var s=(0, n.default)(\"v3\",48,o.default);r.default=s;},{\"./md5.js\":28,\"./v35.js\":37}],37:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(t,e,r){function i(t,i,s,a){if(\"string\"==typeof t&&(t=function(t){t=unescape(encodeURIComponent(t));const e=[];for(let r=0;r<t.length;++r)e.push(t.charCodeAt(r));return e}(t)),\"string\"==typeof i&&(i=(0, o.default)(i)),16!==i.length)throw TypeError(\"Namespace must be array-like (16 iterable integer values, 0-255)\");let u=new Uint8Array(16+t.length);if(u.set(i),u.set(t,i.length),(u=r(u))[6]=15&u[6]|e,u[8]=63&u[8]|128,s){a=a||0;for(let t=0;t<16;++t)s[a+t]=u[t];return s}return (0, n.default)(u)}try{i.name=t;}catch(t){}return i.DNS=s,i.URL=a,i},r.URL=r.DNS=void 0;var n=i(t(\"./stringify.js\")),o=i(t(\"./parse.js\"));function i(t){return t&&t.__esModule?t:{default:t}}const s=\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";r.DNS=s;const a=\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";r.URL=a;},{\"./parse.js\":30,\"./stringify.js\":34}],38:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=i(t(\"./rng.js\")),o=i(t(\"./stringify.js\"));function i(t){return t&&t.__esModule?t:{default:t}}var s=function(t,e,r){const i=(t=t||{}).random||(t.rng||n.default)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){r=r||0;for(let t=0;t<16;++t)e[r+t]=i[t];return e}return (0, o.default)(i)};r.default=s;},{\"./rng.js\":32,\"./stringify.js\":34}],39:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=i(t(\"./v35.js\")),o=i(t(\"./sha1.js\"));function i(t){return t&&t.__esModule?t:{default:t}}var s=(0, n.default)(\"v5\",80,o.default);r.default=s;},{\"./sha1.js\":33,\"./v35.js\":37}],40:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,o=(n=t(\"./regex.js\"))&&n.__esModule?n:{default:n};var i=function(t){return \"string\"==typeof t&&o.default.test(t)};r.default=i;},{\"./regex.js\":31}],41:[function(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,o=(n=t(\"./validate.js\"))&&n.__esModule?n:{default:n};var i=function(t){if(!(0, o.default)(t))throw TypeError(\"Invalid UUID\");return parseInt(t.substr(14,1),16)};r.default=i;},{\"./validate.js\":40}],42:[function(t,e,r){e.exports=class{constructor(t,e,r,n){this.id=e,this._backpressure=0,this.stream=t,this.currentNode=r,this.timeout=n,this.isAlive=!0,this.stream.setConsumer(this.id,this);}getStats(){let t={id:this.id,backpressure:this._backpressure};return null!=this.timeout&&(t.timeout=this.timeout),t}_resetBackpressure(){this._backpressure=0;}applyBackpressure(t){this._backpressure++;}releaseBackpressure(t){this._backpressure--;}getBackpressure(){return this._backpressure}write(t){void 0!==this._timeoutId&&(clearTimeout(this._timeoutId),delete this._timeoutId),this.applyBackpressure(t),this._resolve&&(this._resolve(),delete this._resolve);}kill(t){void 0!==this._timeoutId&&(clearTimeout(this._timeoutId),delete this._timeoutId),this._killPacket={value:t,done:!0},this._destroy(),this._resolve&&(this._resolve(),delete this._resolve);}_destroy(){this.isAlive=!1,this._resetBackpressure(),this.stream.removeConsumer(this.id);}async _waitForNextItem(t){return new Promise((e,r)=>{let n;if(this._resolve=e,void 0!==t){let e=new Error(\"Stream consumer iteration timed out\");(async()=>{let o=function(t){let e,r=new Promise(r=>{e=setTimeout(r,t);});return {timeoutId:e,promise:r}}(t);n=o.timeoutId,await o.promise,e.name=\"TimeoutError\",delete this._resolve,r(e);})();}this._timeoutId=n;})}async next(){for(this.stream.setConsumer(this.id,this);;){if(!this.currentNode.next)try{await this._waitForNextItem(this.timeout);}catch(t){throw this._destroy(),t}if(this._killPacket){this._destroy();let t=this._killPacket;return delete this._killPacket,t}if(this.currentNode=this.currentNode.next,this.releaseBackpressure(this.currentNode.data),!this.currentNode.consumerId||this.currentNode.consumerId===this.id)return this.currentNode.data.done&&this._destroy(),this.currentNode.data}}return(){return delete this.currentNode,this._destroy(),{}}[Symbol.asyncIterator](){return this}};},{}],43:[function(t,e,r){const n=t(\"consumable-stream\"),o=t(\"./consumer\");e.exports=class extends n{constructor(){super(),this.nextConsumerId=1,this._consumers={},this._tailNode={next:null,data:{value:void 0,done:!1}};}_write(t,e,r){let n={data:{value:t,done:e},next:null};r&&(n.consumerId=r),this._tailNode.next=n,this._tailNode=n;let o=Object.values(this._consumers),i=o.length;for(let t=0;t<i;t++)o[t].write(n.data);}write(t){this._write(t,!1);}close(t){this._write(t,!0);}writeToConsumer(t,e){this._write(e,!1,t);}closeConsumer(t,e){this._write(e,!0,t);}kill(t){let e=Object.keys(this._consumers),r=e.length;for(let n=0;n<r;n++)this.killConsumer(e[n],t);}killConsumer(t,e){let r=this._consumers[t];r&&r.kill(e);}getBackpressure(){let t=Object.values(this._consumers),e=t.length,r=0;for(let n=0;n<e;n++){let e=t[n].getBackpressure();e>r&&(r=e);}return r}getConsumerBackpressure(t){let e=this._consumers[t];return e?e.getBackpressure():0}hasConsumer(t){return !!this._consumers[t]}setConsumer(t,e){this._consumers[t]=e,e.currentNode||(e.currentNode=this._tailNode);}removeConsumer(t){delete this._consumers[t];}getConsumerStats(t){let e=this._consumers[t];if(e)return e.getStats()}getConsumerStatsList(){let t=[],e=Object.values(this._consumers),r=e.length;for(let n=0;n<r;n++){let r=e[n];t.push(r.getStats());}return t}createConsumer(t){return new o(this,this.nextConsumerId++,this._tailNode,t)}};},{\"./consumer\":42,\"consumable-stream\":14}],\"socketcluster-client\":[function(t,e,r){const n=t(\"./lib/clientsocket\"),o=t(\"./lib/factory\");e.exports.factory=o,e.exports.AGClientSocket=n,e.exports.create=function(t){return o.create({...t,version:\"17.2.1\"})},e.exports.version=\"17.2.1\";},{\"./lib/clientsocket\":2,\"./lib/factory\":3}]},{},[\"socketcluster-client\"])(\"socketcluster-client\")});\n\t});\n\n\tvar socketclusterClient_min$1 = unwrapExports(socketclusterClient_min);\n\n\texports.default = socketclusterClient_min$1;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n});\n","/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nexport function extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nexport var create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, …): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nexport function bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nexport var lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nexport function stamp(obj) {\r\n\tif (!('_leaflet_id' in obj)) {\r\n\t\tobj['_leaflet_id'] = ++lastId;\r\n\t}\r\n\treturn obj._leaflet_id;\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nexport function throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nexport function wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t    min = range[0],\r\n\t    d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nexport function falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, precision?: Number|false): Number\r\n// Returns the number `num` rounded with specified `precision`.\r\n// The default `precision` value is 6 decimal places.\r\n// `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\nexport function formatNum(num, precision) {\r\n\tif (precision === false) { return num; }\r\n\tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nexport function trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nexport function splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nexport function setOptions(obj, options) {\r\n\tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nexport function getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values — they will be evaluated passing `data` as an argument.\r\nexport function template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nexport var isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nexport function indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nexport var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t    timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nexport var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nexport var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nexport function requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nexport function cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n","import * as Util from './Util';\r\n\r\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nexport function Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\tUtil.setOptions(this);\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = Util.create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\tUtil.extend(NewClass, props.statics);\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\tUtil.extend.apply(null, [proto].concat(props.includes));\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\tUtil.extend(proto, props);\r\n\tdelete proto.statics;\r\n\tdelete proto.includes;\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tproto.options = parentProto.options ? Util.create(parentProto.options) : {};\r\n\t\tUtil.extend(proto.options, props.options);\r\n\t}\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\tvar parentOptions = this.prototype.options;\r\n\tUtil.extend(this.prototype, props);\r\n\tif (props.options) {\r\n\t\tthis.prototype.options = parentOptions;\r\n\t\tthis.mergeOptions(props.options);\r\n\t}\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\tUtil.extend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\t/* global L: true */\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = Util.isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\r\n","import {Class} from './Class';\r\nimport * as Util from './Util';\r\n\r\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nexport var Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!arguments.length) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tvar removeAll = arguments.length === 1;\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tif (removeAll) {\r\n\t\t\t\t\tthis._off(types[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context, _once) {\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if fn already there\r\n\t\tif (this._listens(type, fn, context) !== false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar newListener = {fn: fn, ctx: context};\r\n\t\tif (_once) {\r\n\t\t\tnewListener.once = true;\r\n\t\t}\r\n\r\n\t\tthis._events = this._events || {};\r\n\t\tthis._events[type] = this._events[type] || [];\r\n\t\tthis._events[type].push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t    i,\r\n\t\t    len;\r\n\r\n\t\tif (!this._events) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlisteners = this._events[type];\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (arguments.length === 1) { // remove all\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// Set all removed listeners to noop\r\n\t\t\t\t// so they are not called if remove happens in fire\r\n\t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tlisteners[i].fn = Util.falseFn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find fn and remove it\r\n\t\tvar index = this._listens(type, fn, context);\r\n\t\tif (index !== false) {\r\n\t\t\tvar listener = listeners[index];\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\tlistener.fn = Util.falseFn;\r\n\r\n\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t}\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide a data\r\n\t// object — the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = Util.extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n\t\t\t\t\tvar fn = l.fn;\r\n\t\t\t\t\tif (l.once) {\r\n\t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String, propagate?: Boolean): Boolean\r\n\t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n\tlistens: function (type, fn, context, propagate) {\r\n\t\tif (typeof type !== 'string') {\r\n\t\t\tconsole.warn('\"string\" type argument expected');\r\n\t\t}\r\n\r\n\t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n\t\tvar _fn = fn;\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tpropagate = !!fn;\r\n\t\t\t_fn = undefined;\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) {\r\n\t\t\tif (this._listens(type, _fn, context) !== false) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// returns the index (number) or false\r\n\t_listens: function (type, fn, context) {\r\n\t\tif (!this._events) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events[type] || [];\r\n\t\tif (!fn) {\r\n\t\t\treturn !!listeners.length;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t// @method once(…): this\r\n\t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn, true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[Util.stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[Util.stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, Util.extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(…): this\r\n// Alias to [`on(…)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(…): this\r\n// Alias to [`off(…)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(…): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(…): this\r\n// Alias to [`once(…)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(…): this\r\n// Alias to [`fire(…)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(…): Boolean\r\n// Alias to [`listens(…)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nexport var Evented = Class.extend(Events);\r\n","import {isArray, formatNum} from '../core/Util';\r\n\r\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t    y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t       point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t       Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t        formatNum(this.x) + ', ' +\r\n\t\t        formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nexport function toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\r\n","import {Point, toPoint} from './Point';\r\n\r\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: Bounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar min2, max2;\r\n\t\tif (!obj) { return this; }\r\n\r\n\t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n\t\t\tmin2 = max2 = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t\tmin2 = obj.min;\r\n\t\t\tmax2 = obj.max;\r\n\r\n\t\t\tif (!min2 || !max2) { return this; }\r\n\t\t}\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = min2.clone();\r\n\t\t\tthis.max = max2.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn toPoint(\r\n\t\t        (this.min.x + this.max.x) / 2,\r\n\t\t        (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn toPoint(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn toPoint(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t       (max.x <= this.max.x) &&\r\n\t\t       (min.y >= this.min.y) &&\r\n\t\t       (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t    yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t    yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t},\r\n\r\n\r\n\t// @method pad(bufferRatio: Number): Bounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar min = this.min,\r\n\t\tmax = this.max,\r\n\t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n\t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n\t\treturn toBounds(\r\n\t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n\t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n\t},\r\n\r\n\r\n\t// @method equals(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n\tequals: function (bounds) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n\t\t\tthis.max.equals(bounds.getBottomRight());\r\n\t},\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nexport function toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\r\n","import {LatLng, toLatLng} from './LatLng';\r\n\r\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t    widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t        new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t        new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t        (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t        (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t       (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t    lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t    lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t       this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nexport function toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\r\n","import * as Util from '../core/Util';\r\nimport {Earth} from './crs/CRS.Earth';\r\nimport {toLatLngBounds} from './LatLngBounds';\r\n\r\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t        Math.abs(this.lat - obj.lat),\r\n\t\t        Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t        Util.formatNum(this.lat, precision) + ', ' +\r\n\t\t        Util.formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t    lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t        [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t        [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nexport function toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (Util.isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\r\n","\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {LatLng} from '../LatLng';\r\nimport {LatLngBounds} from '../LatLngBounds';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nexport var CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t    scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t    untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t    s = this.scale(zoom),\r\n\t\t    min = this.transformation.transform(b.min, s),\r\n\t\t    max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t    lat = this.wrapLat ? Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t    alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t    newCenter = this.wrapLatLng(center),\r\n\t\t    latShift = center.lat - newCenter.lat,\r\n\t\t    lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t    ne = bounds.getNorthEast(),\r\n\t\t    newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t    newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\r\n","import {CRS} from './CRS';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nexport var Earth = Util.extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see https://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t    lat1 = latlng1.lat * rad,\n\t\t    lat2 = latlng2.lat * rad,\n\t\t    sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t    sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t    a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t    c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nexport var SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    max = this.MAX_LATITUDE,\r\n\t\t    lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t    sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\r\n","import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), //  L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); //  L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nexport function Transformation(a, b, c, d) {\r\n\tif (Util.isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t        (point.x / scale - this._b) / this._a,\r\n\t\t        (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nexport function toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\r\n","import {Earth} from './CRS.Earth';\r\nimport {SphericalMercator} from '../projection/Projection.SphericalMercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nexport var EPSG3857 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nexport var EPSG900913 = Util.extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\r\n","import Browser from '../../core/Browser';\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nexport function svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nexport function pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n\n\n\n","import * as Util from './Util';\r\nimport {svgCreate} from '../layer/vector/SVG.Util';\r\n\r\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n *   alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nvar ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nvar ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nvar edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nvar webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// **Deprecated.** `true` for any browser running on an Android platform.\r\nvar android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\nvar android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\nvar androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nvar opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nvar chrome = !edge && userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nvar gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nvar safari = !chrome && userAgentContains('safari');\r\n\r\nvar phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nvar opera12 = 'OTransition' in style;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nvar win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nvar ie3d = ie && ('transition' in style);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nvar webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nvar gecko3d = 'MozPerspective' in style;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nvar any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nvar mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nvar mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nvar mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nvar msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nvar pointer = !!(window.PointerEvent || msPointer);\r\n\r\n// @property touchNative: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// **This does not necessarily mean** that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nvar touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n// Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\nvar touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nvar mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nvar mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nvar retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nvar passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () { // eslint-disable-line getter-return\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n}());\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nvar canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nvar svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\nvar inlineSvg = !!svg && (function () {\r\n\tvar div = document.createElement('div');\r\n\tdiv.innerHTML = '<svg/>';\r\n\treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n})();\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nvar vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Mac platform\r\nvar mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Linux platform\r\nvar linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n\r\n\r\nexport default {\r\n\tie: ie,\r\n\tielt9: ielt9,\r\n\tedge: edge,\r\n\twebkit: webkit,\r\n\tandroid: android,\r\n\tandroid23: android23,\r\n\tandroidStock: androidStock,\r\n\topera: opera,\r\n\tchrome: chrome,\r\n\tgecko: gecko,\r\n\tsafari: safari,\r\n\tphantom: phantom,\r\n\topera12: opera12,\r\n\twin: win,\r\n\tie3d: ie3d,\r\n\twebkit3d: webkit3d,\r\n\tgecko3d: gecko3d,\r\n\tany3d: any3d,\r\n\tmobile: mobile,\r\n\tmobileWebkit: mobileWebkit,\r\n\tmobileWebkit3d: mobileWebkit3d,\r\n\tmsPointer: msPointer,\r\n\tpointer: pointer,\r\n\ttouch: touch,\r\n\ttouchNative: touchNative,\r\n\tmobileOpera: mobileOpera,\r\n\tmobileGecko: mobileGecko,\r\n\tretina: retina,\r\n\tpassiveEvents: passiveEvents,\r\n\tcanvas: canvas,\r\n\tsvg: svg,\r\n\tvml: vml,\r\n\tinlineSvg: inlineSvg,\r\n\tmac: mac,\r\n\tlinux: linux\r\n};\r\n","import * as DomEvent from './DomEvent';\nimport Browser from '../core/Browser';\nimport {falseFn} from '../core/Util';\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\nvar POINTER_DOWN =   Browser.msPointer ? 'MSPointerDown'   : 'pointerdown';\nvar POINTER_MOVE =   Browser.msPointer ? 'MSPointerMove'   : 'pointermove';\nvar POINTER_UP =     Browser.msPointer ? 'MSPointerUp'     : 'pointerup';\nvar POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\nvar pEvent = {\n\ttouchstart  : POINTER_DOWN,\n\ttouchmove   : POINTER_MOVE,\n\ttouchend    : POINTER_UP,\n\ttouchcancel : POINTER_CANCEL\n};\nvar handle = {\n\ttouchstart  : _onPointerStart,\n\ttouchmove   : _handlePointer,\n\ttouchend    : _handlePointer,\n\ttouchcancel : _handlePointer\n};\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nexport function addPointerListener(obj, type, handler) {\n\tif (type === 'touchstart') {\n\t\t_addPointerDocListener();\n\t}\n\tif (!handle[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn falseFn;\n\t}\n\thandler = handle[type].bind(this, handler);\n\tobj.addEventListener(pEvent[type], handler, false);\n\treturn handler;\n}\n\nexport function removePointerListener(obj, type, handler) {\n\tif (!pEvent[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn;\n\t}\n\tobj.removeEventListener(pEvent[type], handler, false);\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n}\n\nfunction _addPointerDocListener() {\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _handlePointer(handler, e) {\n\tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _onPointerStart(handler, e) {\n\t// IE10 specific: MsTouch needs preventDefault. See #2000\n\tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n\t\tDomEvent.preventDefault(e);\n\t}\n\t_handlePointer(handler, e);\n}\n","import * as DomEvent from './DomEvent';\r\n\r\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\nfunction makeDblclick(event) {\r\n\t// in modern browsers `type` cannot be just overridden:\r\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n\tvar newEvent = {},\r\n\t    prop, i;\r\n\tfor (i in event) {\r\n\t\tprop = event[i];\r\n\t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n\t}\r\n\tevent = newEvent;\r\n\tnewEvent.type = 'dblclick';\r\n\tnewEvent.detail = 2;\r\n\tnewEvent.isTrusted = false;\r\n\tnewEvent._simulated = true; // for debug purposes\r\n\treturn newEvent;\r\n}\r\n\r\nvar delay = 200;\r\nexport function addDoubleTapListener(obj, handler) {\r\n\t// Most browsers handle double tap natively\r\n\tobj.addEventListener('dblclick', handler);\r\n\r\n\t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n\t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n\t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n\tvar last = 0,\r\n\t    detail;\r\n\tfunction simDblclick(e) {\r\n\t\tif (e.detail !== 1) {\r\n\t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.pointerType === 'mouse' ||\r\n\t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When clicking on an <input>, the browser generates a click on its\r\n\t\t// <label> (and vice versa) triggering two clicks in quick succession.\r\n\t\t// This ignores clicks on elements which are a label with a 'for'\r\n\t\t// attribute (or children of such a label), but not children of\r\n\t\t// a <input>.\r\n\t\tvar path = DomEvent.getPropagationPath(e);\r\n\t\tif (path.some(function (el) {\r\n\t\t\treturn el instanceof HTMLLabelElement && el.attributes.for;\r\n\t\t}) &&\r\n\t\t\t!path.some(function (el) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tel instanceof HTMLInputElement ||\r\n\t\t\t\t\tel instanceof HTMLSelectElement\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar now = Date.now();\r\n\t\tif (now - last <= delay) {\r\n\t\t\tdetail++;\r\n\t\t\tif (detail === 2) {\r\n\t\t\t\thandler(makeDblclick(e));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdetail = 1;\r\n\t\t}\r\n\t\tlast = now;\r\n\t}\r\n\r\n\tobj.addEventListener('click', simDblclick);\r\n\r\n\treturn {\r\n\t\tdblclick: handler,\r\n\t\tsimDblclick: simDblclick\r\n\t};\r\n}\r\n\r\nexport function removeDoubleTapListener(obj, handlers) {\r\n\tobj.removeEventListener('dblclick', handlers.dblclick);\r\n\tobj.removeEventListener('click', handlers.simDblclick);\r\n}\r\n","import * as DomEvent from './DomEvent';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\nimport Browser from '../core/Browser';\r\n\r\n/*\r\n * @namespace DomUtil\r\n *\r\n * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n * tree, used by Leaflet internally.\r\n *\r\n * Most functions expecting or returning a `HTMLElement` also work for\r\n * SVG elements. The only difference is that classes refer to CSS classes\r\n * in HTML and SVG classes in SVG.\r\n */\r\n\r\n\r\n// @property TRANSFORM: String\r\n// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\nexport var TRANSFORM = testProp(\r\n\t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n// webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n// the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n// @property TRANSITION: String\r\n// Vendor-prefixed transition style name.\r\nexport var TRANSITION = testProp(\r\n\t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n// @property TRANSITION_END: String\r\n// Vendor-prefixed transitionend event name.\r\nexport var TRANSITION_END =\r\n\tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n// @function get(id: String|HTMLElement): HTMLElement\r\n// Returns an element given its DOM id, or returns the element itself\r\n// if it was passed directly.\r\nexport function get(id) {\r\n\treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n}\r\n\r\n// @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n// Returns the value for a certain style attribute on an element,\r\n// including computed values or values set through CSS.\r\nexport function getStyle(el, style) {\r\n\tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n\tif ((!value || value === 'auto') && document.defaultView) {\r\n\t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n\t\tvalue = css ? css[style] : null;\r\n\t}\r\n\treturn value === 'auto' ? null : value;\r\n}\r\n\r\n// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\nexport function create(tagName, className, container) {\r\n\tvar el = document.createElement(tagName);\r\n\tel.className = className || '';\r\n\r\n\tif (container) {\r\n\t\tcontainer.appendChild(el);\r\n\t}\r\n\treturn el;\r\n}\r\n\r\n// @function remove(el: HTMLElement)\r\n// Removes `el` from its parent element\r\nexport function remove(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent) {\r\n\t\tparent.removeChild(el);\r\n\t}\r\n}\r\n\r\n// @function empty(el: HTMLElement)\r\n// Removes all of `el`'s children elements from `el`\r\nexport function empty(el) {\r\n\twhile (el.firstChild) {\r\n\t\tel.removeChild(el.firstChild);\r\n\t}\r\n}\r\n\r\n// @function toFront(el: HTMLElement)\r\n// Makes `el` the last child of its parent, so it renders in front of the other children.\r\nexport function toFront(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.lastChild !== el) {\r\n\t\tparent.appendChild(el);\r\n\t}\r\n}\r\n\r\n// @function toBack(el: HTMLElement)\r\n// Makes `el` the first child of its parent, so it renders behind the other children.\r\nexport function toBack(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.firstChild !== el) {\r\n\t\tparent.insertBefore(el, parent.firstChild);\r\n\t}\r\n}\r\n\r\n// @function hasClass(el: HTMLElement, name: String): Boolean\r\n// Returns `true` if the element's class attribute contains `name`.\r\nexport function hasClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\treturn el.classList.contains(name);\r\n\t}\r\n\tvar className = getClass(el);\r\n\treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n}\r\n\r\n// @function addClass(el: HTMLElement, name: String)\r\n// Adds `name` to the element's class attribute.\r\nexport function addClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tvar classes = Util.splitWords(name);\r\n\t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n\t\t\tel.classList.add(classes[i]);\r\n\t\t}\r\n\t} else if (!hasClass(el, name)) {\r\n\t\tvar className = getClass(el);\r\n\t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n\t}\r\n}\r\n\r\n// @function removeClass(el: HTMLElement, name: String)\r\n// Removes `name` from the element's class attribute.\r\nexport function removeClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tel.classList.remove(name);\r\n\t} else {\r\n\t\tsetClass(el, Util.trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n\t}\r\n}\r\n\r\n// @function setClass(el: HTMLElement, name: String)\r\n// Sets the element's class.\r\nexport function setClass(el, name) {\r\n\tif (el.className.baseVal === undefined) {\r\n\t\tel.className = name;\r\n\t} else {\r\n\t\t// in case of SVG element\r\n\t\tel.className.baseVal = name;\r\n\t}\r\n}\r\n\r\n// @function getClass(el: HTMLElement): String\r\n// Returns the element's class.\r\nexport function getClass(el) {\r\n\t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n\t// (Required for linked SVG elements in IE11.)\r\n\tif (el.correspondingElement) {\r\n\t\tel = el.correspondingElement;\r\n\t}\r\n\treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n}\r\n\r\n// @function setOpacity(el: HTMLElement, opacity: Number)\r\n// Set the opacity of an element (including old IE support).\r\n// `opacity` must be a number from `0` to `1`.\r\nexport function setOpacity(el, value) {\r\n\tif ('opacity' in el.style) {\r\n\t\tel.style.opacity = value;\r\n\t} else if ('filter' in el.style) {\r\n\t\t_setOpacityIE(el, value);\r\n\t}\r\n}\r\n\r\nfunction _setOpacityIE(el, value) {\r\n\tvar filter = false,\r\n\t    filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n\t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n\ttry {\r\n\t\tfilter = el.filters.item(filterName);\r\n\t} catch (e) {\r\n\t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n\t\t// it isn't needed and breaks transparent pngs.\r\n\t\tif (value === 1) { return; }\r\n\t}\r\n\r\n\tvalue = Math.round(value * 100);\r\n\r\n\tif (filter) {\r\n\t\tfilter.Enabled = (value !== 100);\r\n\t\tfilter.Opacity = value;\r\n\t} else {\r\n\t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n\t}\r\n}\r\n\r\n// @function testProp(props: String[]): String|false\r\n// Goes through the array of style names and returns the first name\r\n// that is a valid style name for an element. If no such name is found,\r\n// it returns false. Useful for vendor-prefixed styles like `transform`.\r\nexport function testProp(props) {\r\n\tvar style = document.documentElement.style;\r\n\r\n\tfor (var i = 0; i < props.length; i++) {\r\n\t\tif (props[i] in style) {\r\n\t\t\treturn props[i];\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n// @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n// and optionally scaled by `scale`. Does not have an effect if the\r\n// browser doesn't support 3D CSS transforms.\r\nexport function setTransform(el, offset, scale) {\r\n\tvar pos = offset || new Point(0, 0);\r\n\r\n\tel.style[TRANSFORM] =\r\n\t\t(Browser.ie3d ?\r\n\t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n\t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n\t\t(scale ? ' scale(' + scale + ')' : '');\r\n}\r\n\r\n// @function setPosition(el: HTMLElement, position: Point)\r\n// Sets the position of `el` to coordinates specified by `position`,\r\n// using CSS translate or top/left positioning depending on the browser\r\n// (used by Leaflet internally to position its layers).\r\nexport function setPosition(el, point) {\r\n\r\n\t/*eslint-disable */\r\n\tel._leaflet_pos = point;\r\n\t/* eslint-enable */\r\n\r\n\tif (Browser.any3d) {\r\n\t\tsetTransform(el, point);\r\n\t} else {\r\n\t\tel.style.left = point.x + 'px';\r\n\t\tel.style.top = point.y + 'px';\r\n\t}\r\n}\r\n\r\n// @function getPosition(el: HTMLElement): Point\r\n// Returns the coordinates of an element previously positioned with setPosition.\r\nexport function getPosition(el) {\r\n\t// this method is only used for elements previously positioned using setPosition,\r\n\t// so it's safe to cache the position for performance\r\n\r\n\treturn el._leaflet_pos || new Point(0, 0);\r\n}\r\n\r\n// @function disableTextSelection()\r\n// Prevents the user from generating `selectstart` DOM events, usually generated\r\n// when the user drags the mouse through a page with text. Used internally\r\n// by Leaflet to override the behaviour of any click-and-drag interaction on\r\n// the map. Affects drag interactions on the whole document.\r\n\r\n// @function enableTextSelection()\r\n// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\nexport var disableTextSelection;\r\nexport var enableTextSelection;\r\nvar _userSelect;\r\nif ('onselectstart' in document) {\r\n\tdisableTextSelection = function () {\r\n\t\tDomEvent.on(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tDomEvent.off(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n} else {\r\n\tvar userSelectProperty = testProp(\r\n\t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n\tdisableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tvar style = document.documentElement.style;\r\n\t\t\t_userSelect = style[userSelectProperty];\r\n\t\t\tstyle[userSelectProperty] = 'none';\r\n\t\t}\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n\t\t\t_userSelect = undefined;\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// @function disableImageDrag()\r\n// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n// for `dragstart` DOM events, usually generated when the user drags an image.\r\nexport function disableImageDrag() {\r\n\tDomEvent.on(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\n// @function enableImageDrag()\r\n// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\nexport function enableImageDrag() {\r\n\tDomEvent.off(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\nvar _outlineElement, _outlineStyle;\r\n// @function preventOutline(el: HTMLElement)\r\n// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n// of the element `el` invisible. Used internally by Leaflet to prevent\r\n// focusable elements from displaying an outline when the user performs a\r\n// drag interaction on them.\r\nexport function preventOutline(element) {\r\n\twhile (element.tabIndex === -1) {\r\n\t\telement = element.parentNode;\r\n\t}\r\n\tif (!element.style) { return; }\r\n\trestoreOutline();\r\n\t_outlineElement = element;\r\n\t_outlineStyle = element.style.outlineStyle;\r\n\telement.style.outlineStyle = 'none';\r\n\tDomEvent.on(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function restoreOutline()\r\n// Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\nexport function restoreOutline() {\r\n\tif (!_outlineElement) { return; }\r\n\t_outlineElement.style.outlineStyle = _outlineStyle;\r\n\t_outlineElement = undefined;\r\n\t_outlineStyle = undefined;\r\n\tDomEvent.off(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n// Finds the closest parent node which size (width and height) is not null.\r\nexport function getSizedParentNode(element) {\r\n\tdo {\r\n\t\telement = element.parentNode;\r\n\t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n\treturn element;\r\n}\r\n\r\n// @function getScale(el: HTMLElement): Object\r\n// Computes the CSS scale currently applied on the element.\r\n// Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\nexport function getScale(element) {\r\n\tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n\treturn {\r\n\t\tx: rect.width / element.offsetWidth || 1,\r\n\t\ty: rect.height / element.offsetHeight || 1,\r\n\t\tboundingClientRect: rect\r\n\t};\r\n}\r\n","import {Point} from '../geometry/Point';\r\nimport * as Util from '../core/Util';\r\nimport Browser from '../core/Browser';\r\nimport {addPointerListener, removePointerListener} from './DomEvent.Pointer';\r\nimport {addDoubleTapListener, removeDoubleTapListener} from './DomEvent.DoubleTap';\r\nimport {getScale} from './DomUtil';\r\n\r\n/*\r\n * @namespace DomEvent\r\n * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n */\r\n\r\n// Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Adds a listener function (`fn`) to a particular DOM event type of the\r\n// element `el`. You can optionally specify the context of the listener\r\n// (object the `this` keyword will point to). You can also pass several\r\n// space-separated types (e.g. `'click dblclick'`).\r\n\r\n// @alternative\r\n// @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nexport function on(obj, types, fn, context) {\r\n\r\n\tif (types && typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\taddOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\taddOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nvar eventsKey = '_leaflet_events';\r\n\r\n// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Removes a previously added listener function.\r\n// Note that if you passed a custom context to on, you must pass the same\r\n// context to `off` in order to remove the listener.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, types: String): this\r\n// Removes all previously added listeners of given types.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement): this\r\n// Removes all previously added listeners from given HTMLElement\r\nexport function off(obj, types, fn, context) {\r\n\r\n\tif (arguments.length === 1) {\r\n\t\tbatchRemove(obj);\r\n\t\tdelete obj[eventsKey];\r\n\r\n\t} else if (types && typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\tremoveOne(obj, type, types[type], fn);\r\n\t\t}\r\n\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tif (arguments.length === 2) {\r\n\t\t\tbatchRemove(obj, function (type) {\r\n\t\t\t\treturn Util.indexOf(types, type) !== -1;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tremoveOne(obj, types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nfunction batchRemove(obj, filterFn) {\r\n\tfor (var id in obj[eventsKey]) {\r\n\t\tvar type = id.split(/\\d/)[0];\r\n\t\tif (!filterFn || filterFn(type)) {\r\n\t\t\tremoveOne(obj, type, null, null, id);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar mouseSubst = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout',\r\n\twheel: !('onwheel' in window) && 'mousewheel'\r\n};\r\n\r\nfunction addOne(obj, type, fn, context) {\r\n\tvar id = type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\r\n\tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n\tvar handler = function (e) {\r\n\t\treturn fn.call(context || obj, e || window.event);\r\n\t};\r\n\r\n\tvar originalHandler = handler;\r\n\r\n\tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\t// Needs DomEvent.Pointer.js\r\n\t\thandler = addPointerListener(obj, type, handler);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick')) {\r\n\t\thandler = addDoubleTapListener(obj, handler);\r\n\r\n\t} else if ('addEventListener' in obj) {\r\n\r\n\t\tif (type === 'touchstart' || type === 'touchmove' || type === 'wheel' ||  type === 'mousewheel') {\r\n\t\t\tobj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n\t\t} else if (type === 'mouseenter' || type === 'mouseleave') {\r\n\t\t\thandler = function (e) {\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tif (isExternalTarget(obj, e)) {\r\n\t\t\t\t\toriginalHandler(e);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tobj.addEventListener(mouseSubst[type], handler, false);\r\n\r\n\t\t} else {\r\n\t\t\tobj.addEventListener(type, originalHandler, false);\r\n\t\t}\r\n\r\n\t} else {\r\n\t\tobj.attachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey] = obj[eventsKey] || {};\r\n\tobj[eventsKey][id] = handler;\r\n}\r\n\r\nfunction removeOne(obj, type, fn, context, id) {\r\n\tid = id || type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\tvar handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n\tif (!handler) { return this; }\r\n\r\n\tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\tremovePointerListener(obj, type, handler);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick')) {\r\n\t\tremoveDoubleTapListener(obj, handler);\r\n\r\n\t} else if ('removeEventListener' in obj) {\r\n\r\n\t\tobj.removeEventListener(mouseSubst[type] || type, handler, false);\r\n\r\n\t} else {\r\n\t\tobj.detachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey][id] = null;\r\n}\r\n\r\n// @function stopPropagation(ev: DOMEvent): this\r\n// Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n// ```js\r\n// L.DomEvent.on(div, 'click', function (ev) {\r\n// \tL.DomEvent.stopPropagation(ev);\r\n// });\r\n// ```\r\nexport function stopPropagation(e) {\r\n\r\n\tif (e.stopPropagation) {\r\n\t\te.stopPropagation();\r\n\t} else if (e.originalEvent) {  // In case of Leaflet event.\r\n\t\te.originalEvent._stopped = true;\r\n\t} else {\r\n\t\te.cancelBubble = true;\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\n// @function disableScrollPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).\r\nexport function disableScrollPropagation(el) {\r\n\taddOne(el, 'wheel', stopPropagation);\r\n\treturn this;\r\n}\r\n\r\n// @function disableClickPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`,\r\n// `'mousedown'` and `'touchstart'` events (plus browser variants).\r\nexport function disableClickPropagation(el) {\r\n\ton(el, 'mousedown touchstart dblclick contextmenu', stopPropagation);\r\n\tel['_leaflet_disable_click'] = true;\r\n\treturn this;\r\n}\r\n\r\n// @function preventDefault(ev: DOMEvent): this\r\n// Prevents the default action of the DOM Event `ev` from happening (such as\r\n// following a link in the href of the a element, or doing a POST request\r\n// with page reload when a `<form>` is submitted).\r\n// Use it inside listener functions.\r\nexport function preventDefault(e) {\r\n\tif (e.preventDefault) {\r\n\t\te.preventDefault();\r\n\t} else {\r\n\t\te.returnValue = false;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\n// @function stop(ev: DOMEvent): this\r\n// Does `stopPropagation` and `preventDefault` at the same time.\r\nexport function stop(e) {\r\n\tpreventDefault(e);\r\n\tstopPropagation(e);\r\n\treturn this;\r\n}\r\n\r\n// @function getPropagationPath(ev: DOMEvent): Array\r\n// Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).\r\n// Returns an array containing the `HTMLElement`s that the given DOM event\r\n// should propagate to (if not stopped).\r\nexport function getPropagationPath(ev) {\r\n\tif (ev.composedPath) {\r\n\t\treturn ev.composedPath();\r\n\t}\r\n\r\n\tvar path = [];\r\n\tvar el = ev.target;\r\n\r\n\twhile (el) {\r\n\t\tpath.push(el);\r\n\t\tel = el.parentNode;\r\n\t}\r\n\treturn path;\r\n}\r\n\r\n\r\n// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n// Gets normalized mouse position from a DOM event relative to the\r\n// `container` (border excluded) or to the whole page if not specified.\r\nexport function getMousePosition(e, container) {\r\n\tif (!container) {\r\n\t\treturn new Point(e.clientX, e.clientY);\r\n\t}\r\n\r\n\tvar scale = getScale(container),\r\n\t    offset = scale.boundingClientRect; // left and top  values are in page scale (like the event clientX/Y)\r\n\r\n\treturn new Point(\r\n\t\t// offset.left/top values are in page scale (like clientX/Y),\r\n\t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n\t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n\t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n\t);\r\n}\r\n\r\n\r\n//  except , Safari and\r\n// We need double the scroll pixels (see #7403 and #4538) for all Browsers\r\n// except OSX (Mac) -> 3x, Chrome running on Linux 1x\r\n\r\nvar wheelPxFactor =\r\n\t(Browser.linux && Browser.chrome) ? window.devicePixelRatio :\r\n\tBrowser.mac ? window.devicePixelRatio * 3 :\r\n\twindow.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;\r\n// @function getWheelDelta(ev: DOMEvent): Number\r\n// Gets normalized wheel delta from a wheel DOM event, in vertical\r\n// pixels scrolled (negative if scrolling down).\r\n// Events from pointing devices without precise scrolling are mapped to\r\n// a best guess of 60 pixels.\r\nexport function getWheelDelta(e) {\r\n\treturn (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n\t       (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n\t       (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n\t       (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n\t       (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n\t       e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n\t       (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n\t       e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n\t       0;\r\n}\r\n\r\n// check if element really left/entered the event target (for mouseenter/mouseleave)\r\nexport function isExternalTarget(el, e) {\r\n\r\n\tvar related = e.relatedTarget;\r\n\r\n\tif (!related) { return true; }\r\n\r\n\ttry {\r\n\t\twhile (related && (related !== el)) {\r\n\t\t\trelated = related.parentNode;\r\n\t\t}\r\n\t} catch (err) {\r\n\t\treturn false;\r\n\t}\r\n\treturn (related !== el);\r\n}\r\n\r\n// @function addListener(…): this\r\n// Alias to [`L.DomEvent.on`](#domevent-on)\r\nexport {on as addListener};\r\n\r\n// @function removeListener(…): this\r\n// Alias to [`L.DomEvent.off`](#domevent-off)\r\nexport {off as removeListener};\r\n","import * as Util from '../core/Util';\nimport {Evented} from '../core/Events';\nimport * as DomUtil from '../dom/DomUtil';\n\n\n/*\n * @class PosAnimation\n * @aka L.PosAnimation\n * @inherits Evented\n * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n *\n * @example\n * ```js\n * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);\n *\n * myPositionMarker.on(\"click\", function() {\n * \tvar pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());\n * \tpos.y -= 25;\n * \tvar fx = new L.PosAnimation();\n *\n * \tfx.once('end',function() {\n * \t\tpos.y += 25;\n * \t\tfx.run(myPositionMarker._icon, pos, 0.8);\n * \t});\n *\n * \tfx.run(myPositionMarker._icon, pos, 0.3);\n * });\n *\n * ```\n *\n * @constructor L.PosAnimation()\n * Creates a `PosAnimation` object.\n *\n */\n\nexport var PosAnimation = Evented.extend({\n\n\t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n\t// Run an animation of a given element to a new position, optionally setting\n\t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n\t// argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1),\n\t// `0.5` by default).\n\trun: function (el, newPos, duration, easeLinearity) {\n\t\tthis.stop();\n\n\t\tthis._el = el;\n\t\tthis._inProgress = true;\n\t\tthis._duration = duration || 0.25;\n\t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n\t\tthis._startPos = DomUtil.getPosition(el);\n\t\tthis._offset = newPos.subtract(this._startPos);\n\t\tthis._startTime = +new Date();\n\n\t\t// @event start: Event\n\t\t// Fired when the animation starts\n\t\tthis.fire('start');\n\n\t\tthis._animate();\n\t},\n\n\t// @method stop()\n\t// Stops the animation (if currently running).\n\tstop: function () {\n\t\tif (!this._inProgress) { return; }\n\n\t\tthis._step(true);\n\t\tthis._complete();\n\t},\n\n\t_animate: function () {\n\t\t// animation loop\n\t\tthis._animId = Util.requestAnimFrame(this._animate, this);\n\t\tthis._step();\n\t},\n\n\t_step: function (round) {\n\t\tvar elapsed = (+new Date()) - this._startTime,\n\t\t    duration = this._duration * 1000;\n\n\t\tif (elapsed < duration) {\n\t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n\t\t} else {\n\t\t\tthis._runFrame(1);\n\t\t\tthis._complete();\n\t\t}\n\t},\n\n\t_runFrame: function (progress, round) {\n\t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n\t\tif (round) {\n\t\t\tpos._round();\n\t\t}\n\t\tDomUtil.setPosition(this._el, pos);\n\n\t\t// @event step: Event\n\t\t// Fired continuously during the animation.\n\t\tthis.fire('step');\n\t},\n\n\t_complete: function () {\n\t\tUtil.cancelAnimFrame(this._animId);\n\n\t\tthis._inProgress = false;\n\t\t// @event end: Event\n\t\t// Fired when the animation ends.\n\t\tthis.fire('end');\n\t},\n\n\t_easeOut: function (t) {\n\t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n\t}\n});\n","import * as Util from '../core/Util';\r\nimport {Evented} from '../core/Events';\r\nimport {EPSG3857} from '../geo/crs/CRS.EPSG3857';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Bounds, toBounds} from '../geometry/Bounds';\r\nimport {LatLng, toLatLng} from '../geo/LatLng';\r\nimport {LatLngBounds, toLatLngBounds} from '../geo/LatLngBounds';\r\nimport Browser from '../core/Browser';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {PosAnimation} from '../dom/PosAnimation';\r\n\r\n/*\r\n * @class Map\r\n * @aka L.Map\r\n * @inherits Evented\r\n *\r\n * The central class of the API — it is used to create a map on a page and manipulate it.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * // initialize the map on the \"map\" div with a given center and zoom\r\n * var map = L.map('map', {\r\n * \tcenter: [51.505, -0.09],\r\n * \tzoom: 13\r\n * });\r\n * ```\r\n *\r\n */\r\n\r\nexport var Map = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section Map State Options\r\n\t\t// @option crs: CRS = L.CRS.EPSG3857\r\n\t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n\t\t// sure what it means.\r\n\t\tcrs: EPSG3857,\r\n\r\n\t\t// @option center: LatLng = undefined\r\n\t\t// Initial geographic center of the map\r\n\t\tcenter: undefined,\r\n\r\n\t\t// @option zoom: Number = undefined\r\n\t\t// Initial map zoom level\r\n\t\tzoom: undefined,\r\n\r\n\t\t// @option minZoom: Number = *\r\n\t\t// Minimum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the lowest of their `minZoom` options will be used instead.\r\n\t\tminZoom: undefined,\r\n\r\n\t\t// @option maxZoom: Number = *\r\n\t\t// Maximum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the highest of their `maxZoom` options will be used instead.\r\n\t\tmaxZoom: undefined,\r\n\r\n\t\t// @option layers: Layer[] = []\r\n\t\t// Array of layers that will be added to the map initially\r\n\t\tlayers: [],\r\n\r\n\t\t// @option maxBounds: LatLngBounds = null\r\n\t\t// When this option is set, the map restricts the view to the given\r\n\t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n\t\t// outside the view. To set the restriction dynamically, use\r\n\t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n\t\tmaxBounds: undefined,\r\n\r\n\t\t// @option renderer: Renderer = *\r\n\t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n\t\t// or `L.Canvas` by default depending on browser support.\r\n\t\trenderer: undefined,\r\n\r\n\r\n\t\t// @section Animation Options\r\n\t\t// @option zoomAnimation: Boolean = true\r\n\t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tzoomAnimation: true,\r\n\r\n\t\t// @option zoomAnimationThreshold: Number = 4\r\n\t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n\t\tzoomAnimationThreshold: 4,\r\n\r\n\t\t// @option fadeAnimation: Boolean = true\r\n\t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tfadeAnimation: true,\r\n\r\n\t\t// @option markerZoomAnimation: Boolean = true\r\n\t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n\t\t// they will disappear for the length of the animation. By default it's\r\n\t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n\t\tmarkerZoomAnimation: true,\r\n\r\n\t\t// @option transform3DLimit: Number = 2^23\r\n\t\t// Defines the maximum size of a CSS translation transform. The default\r\n\t\t// value should not be changed unless a web browser positions layers in\r\n\t\t// the wrong place after doing a large `panBy`.\r\n\t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n\t\t// @section Interaction Options\r\n\t\t// @option zoomSnap: Number = 1\r\n\t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n\t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n\t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n\t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n\t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n\t\tzoomSnap: 1,\r\n\r\n\t\t// @option zoomDelta: Number = 1\r\n\t\t// Controls how much the map's zoom level will change after a\r\n\t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n\t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n\t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n\t\tzoomDelta: 1,\r\n\r\n\t\t// @option trackResize: Boolean = true\r\n\t\t// Whether the map automatically handles browser window resize to update itself.\r\n\t\ttrackResize: true\r\n\t},\r\n\r\n\tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// Make sure to assign internal flags at the beginning,\r\n\t\t// to avoid inconsistent state in some edge cases.\r\n\t\tthis._handlers = [];\r\n\t\tthis._layers = {};\r\n\t\tthis._zoomBoundLayers = {};\r\n\t\tthis._sizeChanged = true;\r\n\r\n\t\tthis._initContainer(id);\r\n\t\tthis._initLayout();\r\n\r\n\t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n\t\tthis._onResize = Util.bind(this._onResize, this);\r\n\r\n\t\tthis._initEvents();\r\n\r\n\t\tif (options.maxBounds) {\r\n\t\t\tthis.setMaxBounds(options.maxBounds);\r\n\t\t}\r\n\r\n\t\tif (options.zoom !== undefined) {\r\n\t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n\t\t}\r\n\r\n\t\tif (options.center && options.zoom !== undefined) {\r\n\t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n\t\t}\r\n\r\n\t\tthis.callInitHooks();\r\n\r\n\t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n\t\tthis._zoomAnimated = DomUtil.TRANSITION && Browser.any3d && !Browser.mobileOpera &&\r\n\t\t\t\tthis.options.zoomAnimation;\r\n\r\n\t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n\t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tthis._createAnimProxy();\r\n\t\t\tDomEvent.on(this._proxy, DomUtil.TRANSITION_END, this._catchTransitionEnd, this);\r\n\t\t}\r\n\r\n\t\tthis._addLayers(this.options.layers);\r\n\t},\r\n\r\n\r\n\t// @section Methods for modifying map state\r\n\r\n\t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) with the given\r\n\t// animation options.\r\n\tsetView: function (center, zoom, options) {\r\n\r\n\t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n\t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n\t\toptions = options || {};\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n\t\t\tif (options.animate !== undefined) {\r\n\t\t\t\toptions.zoom = Util.extend({animate: options.animate}, options.zoom);\r\n\t\t\t\toptions.pan = Util.extend({animate: options.animate, duration: options.duration}, options.pan);\r\n\t\t\t}\r\n\r\n\t\t\t// try animating pan or zoom\r\n\t\t\tvar moved = (this._zoom !== zoom) ?\r\n\t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n\t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n\t\t\tif (moved) {\r\n\t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// animation didn't start, just reset the map view\r\n\t\tthis._resetView(center, zoom, options.pan && options.pan.noMoveStart);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the zoom of the map.\r\n\tsetZoom: function (zoom, options) {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthis._zoom = zoom;\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n\t},\r\n\r\n\t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n\t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomIn: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom + delta, options);\r\n\t},\r\n\r\n\t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n\t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomOut: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom - delta, options);\r\n\t},\r\n\r\n\t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified geographical point on the map\r\n\t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n\t// @alternative\r\n\t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n\tsetZoomAround: function (latlng, zoom, options) {\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n\t\t    centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n\t\t    newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n\t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n\t},\r\n\r\n\t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n\t\t    zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n\t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n\t\tif (zoom === Infinity) {\r\n\t\t\treturn {\r\n\t\t\t\tcenter: bounds.getCenter(),\r\n\t\t\t\tzoom: zoom\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n\t\t    swPoint = this.project(bounds.getSouthWest(), zoom),\r\n\t\t    nePoint = this.project(bounds.getNorthEast(), zoom),\r\n\t\t    center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n\t\treturn {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom\r\n\t\t};\r\n\t},\r\n\r\n\t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets a map view that contains the given geographical bounds with the\r\n\t// maximum zoom level possible.\r\n\tfitBounds: function (bounds, options) {\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthrow new Error('Bounds are not valid.');\r\n\t\t}\r\n\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.setView(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method fitWorld(options?: fitBounds options): this\r\n\t// Sets a map view that mostly contains the whole world with the maximum\r\n\t// zoom level possible.\r\n\tfitWorld: function (options) {\r\n\t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n\t},\r\n\r\n\t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n\t// Pans the map to a given center.\r\n\tpanTo: function (center, options) { // (LatLng)\r\n\t\treturn this.setView(center, this._zoom, {pan: options});\r\n\t},\r\n\r\n\t// @method panBy(offset: Point, options?: Pan options): this\r\n\t// Pans the map by a given number of pixels (animated).\r\n\tpanBy: function (offset, options) {\r\n\t\toffset = toPoint(offset).round();\r\n\t\toptions = options || {};\r\n\r\n\t\tif (!offset.x && !offset.y) {\r\n\t\t\treturn this.fire('moveend');\r\n\t\t}\r\n\t\t// If we pan too far, Chrome gets issues with tiles\r\n\t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n\t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (!this._panAnim) {\r\n\t\t\tthis._panAnim = new PosAnimation();\r\n\r\n\t\t\tthis._panAnim.on({\r\n\t\t\t\t'step': this._onPanTransitionStep,\r\n\t\t\t\t'end': this._onPanTransitionEnd\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\t// don't fire movestart if animating inertia\r\n\t\tif (!options.noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\r\n\t\t// animate pan unless animate: false specified\r\n\t\tif (options.animate !== false) {\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n\t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n\t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n\t\t} else {\r\n\t\t\tthis._rawPanBy(offset);\r\n\t\t\tthis.fire('move').fire('moveend');\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n\t// pan-zoom animation.\r\n\tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tif (options.animate === false || !Browser.any3d) {\r\n\t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tvar from = this.project(this.getCenter()),\r\n\t\t    to = this.project(targetCenter),\r\n\t\t    size = this.getSize(),\r\n\t\t    startZoom = this._zoom;\r\n\r\n\t\ttargetCenter = toLatLng(targetCenter);\r\n\t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n\t\tvar w0 = Math.max(size.x, size.y),\r\n\t\t    w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n\t\t    u1 = (to.distanceTo(from)) || 1,\r\n\t\t    rho = 1.42,\r\n\t\t    rho2 = rho * rho;\r\n\r\n\t\tfunction r(i) {\r\n\t\t\tvar s1 = i ? -1 : 1,\r\n\t\t\t    s2 = i ? w1 : w0,\r\n\t\t\t    t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n\t\t\t    b1 = 2 * s2 * rho2 * u1,\r\n\t\t\t    b = t1 / b1,\r\n\t\t\t    sq = Math.sqrt(b * b + 1) - b;\r\n\r\n\t\t\t    // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n\t\t\t    // thus triggering an infinite loop in flyTo\r\n\t\t\t    var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n\t\t\treturn log;\r\n\t\t}\r\n\r\n\t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n\t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n\t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n\t\tvar r0 = r(0);\r\n\r\n\t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n\t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n\t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n\t\tvar start = Date.now(),\r\n\t\t    S = (r(1) - r0) / rho,\r\n\t\t    duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n\t\tfunction frame() {\r\n\t\t\tvar t = (Date.now() - start) / duration,\r\n\t\t\t    s = easeOut(t) * S;\r\n\r\n\t\t\tif (t <= 1) {\r\n\t\t\t\tthis._flyToFrame = Util.requestAnimFrame(frame, this);\r\n\r\n\t\t\t\tthis._move(\r\n\t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n\t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n\t\t\t\t\t{flyTo: true});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis\r\n\t\t\t\t\t._move(targetCenter, targetZoom)\r\n\t\t\t\t\t._moveEnd(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n\t\tframe.call(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n\t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n\tflyToBounds: function (bounds, options) {\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.flyTo(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method setMaxBounds(bounds: LatLngBounds): this\r\n\t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n\tsetMaxBounds: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this.listens('moveend', this._panInsideMaxBounds)) {\r\n\t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n\t\t}\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthis.options.maxBounds = null;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tthis.options.maxBounds = bounds;\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\tthis._panInsideMaxBounds();\r\n\t\t}\r\n\r\n\t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n\t},\r\n\r\n\t// @method setMinZoom(zoom: Number): this\r\n\t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n\tsetMinZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.minZoom;\r\n\t\tthis.options.minZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() < this.options.minZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setMaxZoom(zoom: Number): this\r\n\t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n\tsetMaxZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.maxZoom;\r\n\t\tthis.options.maxZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n\t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n\tpanInsideBounds: function (bounds, options) {\r\n\t\tthis._enforcingBounds = true;\r\n\t\tvar center = this.getCenter(),\r\n\t\t    newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n\t\tif (!center.equals(newCenter)) {\r\n\t\t\tthis.panTo(newCenter, options);\r\n\t\t}\r\n\r\n\t\tthis._enforcingBounds = false;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInside(latlng: LatLng, options?: padding options): this\r\n\t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n\t// padding options to fit the display to more restricted bounds.\r\n\t// If `latlng` is already within the (optionally padded) display bounds,\r\n\t// the map will not be panned.\r\n\tpanInside: function (latlng, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\t\t    pixelCenter = this.project(this.getCenter()),\r\n\t\t    pixelPoint = this.project(latlng),\r\n\t\t    pixelBounds = this.getPixelBounds(),\r\n\t\t    paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\r\n\t\t    paddedSize = paddedBounds.getSize();\r\n\r\n\t\tif (!paddedBounds.contains(pixelPoint)) {\r\n\t\t\tthis._enforcingBounds = true;\r\n\t\t\tvar centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\r\n\t\t\tvar offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\r\n\t\t\tpixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\r\n\t\t\tpixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\r\n\t\t\tthis.panTo(this.unproject(pixelCenter), options);\r\n\t\t\tthis._enforcingBounds = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method invalidateSize(options: Zoom/pan options): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n\t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n\t// that it doesn't happen often even if the method is called many\r\n\t// times in a row.\r\n\r\n\t// @alternative\r\n\t// @method invalidateSize(animate: Boolean): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default.\r\n\tinvalidateSize: function (options) {\r\n\t\tif (!this._loaded) { return this; }\r\n\r\n\t\toptions = Util.extend({\r\n\t\t\tanimate: false,\r\n\t\t\tpan: true\r\n\t\t}, options === true ? {animate: true} : options);\r\n\r\n\t\tvar oldSize = this.getSize();\r\n\t\tthis._sizeChanged = true;\r\n\t\tthis._lastCenter = null;\r\n\r\n\t\tvar newSize = this.getSize(),\r\n\t\t    oldCenter = oldSize.divideBy(2).round(),\r\n\t\t    newCenter = newSize.divideBy(2).round(),\r\n\t\t    offset = oldCenter.subtract(newCenter);\r\n\r\n\t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n\t\tif (options.animate && options.pan) {\r\n\t\t\tthis.panBy(offset);\r\n\r\n\t\t} else {\r\n\t\t\tif (options.pan) {\r\n\t\t\t\tthis._rawPanBy(offset);\r\n\t\t\t}\r\n\r\n\t\t\tthis.fire('move');\r\n\r\n\t\t\tif (options.debounceMoveend) {\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\tthis._sizeTimer = setTimeout(Util.bind(this.fire, this, 'moveend'), 200);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fire('moveend');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @section Map state change events\r\n\t\t// @event resize: ResizeEvent\r\n\t\t// Fired when the map is resized.\r\n\t\treturn this.fire('resize', {\r\n\t\t\toldSize: oldSize,\r\n\t\t\tnewSize: newSize\r\n\t\t});\r\n\t},\r\n\r\n\t// @section Methods for modifying map state\r\n\t// @method stop(): this\r\n\t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n\tstop: function () {\r\n\t\tthis.setZoom(this._limitZoom(this._zoom));\r\n\t\tif (!this.options.zoomSnap) {\r\n\t\t\tthis.fire('viewreset');\r\n\t\t}\r\n\t\treturn this._stop();\r\n\t},\r\n\r\n\t// @section Geolocation methods\r\n\t// @method locate(options?: Locate options): this\r\n\t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n\t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n\t// and optionally sets the map view to the user's location with respect to\r\n\t// detection accuracy (or to the world view if geolocation failed).\r\n\t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n\t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n\t// See `Locate options` for more details.\r\n\tlocate: function (options) {\r\n\r\n\t\toptions = this._locateOptions = Util.extend({\r\n\t\t\ttimeout: 10000,\r\n\t\t\twatch: false\r\n\t\t\t// setView: false\r\n\t\t\t// maxZoom: <Number>\r\n\t\t\t// maximumAge: 0\r\n\t\t\t// enableHighAccuracy: false\r\n\t\t}, options);\r\n\r\n\t\tif (!('geolocation' in navigator)) {\r\n\t\t\tthis._handleGeolocationError({\r\n\t\t\t\tcode: 0,\r\n\t\t\t\tmessage: 'Geolocation not supported.'\r\n\t\t\t});\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar onResponse = Util.bind(this._handleGeolocationResponse, this),\r\n\t\t    onError = Util.bind(this._handleGeolocationError, this);\r\n\r\n\t\tif (options.watch) {\r\n\t\t\tthis._locationWatchId =\r\n\t\t\t        navigator.geolocation.watchPosition(onResponse, onError, options);\r\n\t\t} else {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method stopLocate(): this\r\n\t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n\t// and aborts resetting the map view if map.locate was called with\r\n\t// `{setView: true}`.\r\n\tstopLocate: function () {\r\n\t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n\t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n\t\t}\r\n\t\tif (this._locateOptions) {\r\n\t\t\tthis._locateOptions.setView = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_handleGeolocationError: function (error) {\r\n\t\tif (!this._container._leaflet_id) { return; }\r\n\r\n\t\tvar c = error.code,\r\n\t\t    message = error.message ||\r\n\t\t            (c === 1 ? 'permission denied' :\r\n\t\t            (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n\t\tif (this._locateOptions.setView && !this._loaded) {\r\n\t\t\tthis.fitWorld();\r\n\t\t}\r\n\r\n\t\t// @section Location events\r\n\t\t// @event locationerror: ErrorEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n\t\tthis.fire('locationerror', {\r\n\t\t\tcode: c,\r\n\t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n\t\t});\r\n\t},\r\n\r\n\t_handleGeolocationResponse: function (pos) {\r\n\t\tif (!this._container._leaflet_id) { return; }\r\n\r\n\t\tvar lat = pos.coords.latitude,\r\n\t\t    lng = pos.coords.longitude,\r\n\t\t    latlng = new LatLng(lat, lng),\r\n\t\t    bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n\t\t    options = this._locateOptions;\r\n\r\n\t\tif (options.setView) {\r\n\t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n\t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\tlatlng: latlng,\r\n\t\t\tbounds: bounds,\r\n\t\t\ttimestamp: pos.timestamp\r\n\t\t};\r\n\r\n\t\tfor (var i in pos.coords) {\r\n\t\t\tif (typeof pos.coords[i] === 'number') {\r\n\t\t\t\tdata[i] = pos.coords[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @event locationfound: LocationEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n\t\t// went successfully.\r\n\t\tthis.fire('locationfound', data);\r\n\t},\r\n\r\n\t// TODO Appropriate docs section?\r\n\t// @section Other Methods\r\n\t// @method addHandler(name: String, HandlerClass: Function): this\r\n\t// Adds a new `Handler` to the map, given its name and constructor function.\r\n\taddHandler: function (name, HandlerClass) {\r\n\t\tif (!HandlerClass) { return this; }\r\n\r\n\t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n\t\tthis._handlers.push(handler);\r\n\r\n\t\tif (this.options[name]) {\r\n\t\t\thandler.enable();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove(): this\r\n\t// Destroys the map and clears all related event listeners.\r\n\tremove: function () {\r\n\r\n\t\tthis._initEvents(true);\r\n\t\tif (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); }\r\n\r\n\t\tif (this._containerId !== this._container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is being reused by another instance');\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// throws error in IE6-8\r\n\t\t\tdelete this._container._leaflet_id;\r\n\t\t\tdelete this._containerId;\r\n\t\t} catch (e) {\r\n\t\t\t/*eslint-disable */\r\n\t\t\tthis._container._leaflet_id = undefined;\r\n\t\t\t/* eslint-enable */\r\n\t\t\tthis._containerId = undefined;\r\n\t\t}\r\n\r\n\t\tif (this._locationWatchId !== undefined) {\r\n\t\t\tthis.stopLocate();\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tDomUtil.remove(this._mapPane);\r\n\r\n\t\tif (this._clearControlPos) {\r\n\t\t\tthis._clearControlPos();\r\n\t\t}\r\n\t\tif (this._resizeRequest) {\r\n\t\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\t\tthis._resizeRequest = null;\r\n\t\t}\r\n\r\n\t\tthis._clearHandlers();\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\t// @section Map state change events\r\n\t\t\t// @event unload: Event\r\n\t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n\t\t\tthis.fire('unload');\r\n\t\t}\r\n\r\n\t\tvar i;\r\n\t\tfor (i in this._layers) {\r\n\t\t\tthis._layers[i].remove();\r\n\t\t}\r\n\t\tfor (i in this._panes) {\r\n\t\t\tDomUtil.remove(this._panes[i]);\r\n\t\t}\r\n\r\n\t\tthis._layers = [];\r\n\t\tthis._panes = [];\r\n\t\tdelete this._mapPane;\r\n\t\tdelete this._renderer;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n\t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n\t// then returns it. The pane is created as a child of `container`, or\r\n\t// as a child of the main map pane if not set.\r\n\tcreatePane: function (name, container) {\r\n\t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n\t\t    pane = DomUtil.create('div', className, container || this._mapPane);\r\n\r\n\t\tif (name) {\r\n\t\t\tthis._panes[name] = pane;\r\n\t\t}\r\n\t\treturn pane;\r\n\t},\r\n\r\n\t// @section Methods for Getting Map State\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the geographical center of the map view\r\n\tgetCenter: function () {\r\n\t\tthis._checkIfLoaded();\r\n\r\n\t\tif (this._lastCenter && !this._moved()) {\r\n\t\t\treturn this._lastCenter.clone();\r\n\t\t}\r\n\t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// @method getZoom(): Number\r\n\t// Returns the current zoom level of the map view\r\n\tgetZoom: function () {\r\n\t\treturn this._zoom;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the geographical bounds visible in the current map view\r\n\tgetBounds: function () {\r\n\t\tvar bounds = this.getPixelBounds(),\r\n\t\t    sw = this.unproject(bounds.getBottomLeft()),\r\n\t\t    ne = this.unproject(bounds.getTopRight());\r\n\r\n\t\treturn new LatLngBounds(sw, ne);\r\n\t},\r\n\r\n\t// @method getMinZoom(): Number\r\n\t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n\tgetMinZoom: function () {\r\n\t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n\t},\r\n\r\n\t// @method getMaxZoom(): Number\r\n\t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n\tgetMaxZoom: function () {\r\n\t\treturn this.options.maxZoom === undefined ?\r\n\t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n\t\t\tthis.options.maxZoom;\r\n\t},\r\n\r\n\t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n\t// Returns the maximum zoom level on which the given bounds fit to the map\r\n\t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n\t// instead returns the minimum zoom level on which the map view fits into\r\n\t// the given bounds in its entirety.\r\n\tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n\t\tvar zoom = this.getZoom() || 0,\r\n\t\t    min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    nw = bounds.getNorthWest(),\r\n\t\t    se = bounds.getSouthEast(),\r\n\t\t    size = this.getSize().subtract(padding),\r\n\t\t    boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n\t\t    snap = Browser.any3d ? this.options.zoomSnap : 1,\r\n\t\t    scalex = size.x / boundsSize.x,\r\n\t\t    scaley = size.y / boundsSize.y,\r\n\t\t    scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n\t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n\t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n\t\t}\r\n\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the current size of the map container (in pixels).\r\n\tgetSize: function () {\r\n\t\tif (!this._size || this._sizeChanged) {\r\n\t\t\tthis._size = new Point(\r\n\t\t\t\tthis._container.clientWidth || 0,\r\n\t\t\t\tthis._container.clientHeight || 0);\r\n\r\n\t\t\tthis._sizeChanged = false;\r\n\t\t}\r\n\t\treturn this._size.clone();\r\n\t},\r\n\r\n\t// @method getPixelBounds(): Bounds\r\n\t// Returns the bounds of the current map view in projected pixel\r\n\t// coordinates (sometimes useful in layer and overlay implementations).\r\n\tgetPixelBounds: function (center, zoom) {\r\n\t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n\t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n\t},\r\n\r\n\t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n\t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n\t// since there can be negative offsets.\r\n\t// @method getPixelOrigin(): Point\r\n\t// Returns the projected pixel coordinates of the top left point of\r\n\t// the map layer (useful in custom layer and overlay implementations).\r\n\tgetPixelOrigin: function () {\r\n\t\tthis._checkIfLoaded();\r\n\t\treturn this._pixelOrigin;\r\n\t},\r\n\r\n\t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n\t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n\t// If `zoom` is omitted, the map's current zoom level is used.\r\n\tgetPixelWorldBounds: function (zoom) {\r\n\t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n\t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n\tgetPane: function (pane) {\r\n\t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n\t},\r\n\r\n\t// @method getPanes(): Object\r\n\t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n\t// the panes as values.\r\n\tgetPanes: function () {\r\n\t\treturn this._panes;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTML element that contains the map.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\r\n\t// @section Conversion Methods\r\n\r\n\t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n\t// Returns the scale factor to be applied to a map transition from zoom level\r\n\t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n\tgetZoomScale: function (toZoom, fromZoom) {\r\n\t\t// TODO replace with universal implementation after refactoring projections\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n\t},\r\n\r\n\t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n\t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n\t// level and everything is scaled by a factor of `scale`. Inverse of\r\n\t// [`getZoomScale`](#map-getZoomScale).\r\n\tgetScaleZoom: function (scale, fromZoom) {\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n\t\treturn isNaN(zoom) ? Infinity : zoom;\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng, zoom: Number): Point\r\n\t// Projects a geographical coordinate `LatLng` according to the projection\r\n\t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n\t// `Transformation`. The result is pixel coordinate relative to\r\n\t// the CRS origin.\r\n\tproject: function (latlng, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n\t},\r\n\r\n\t// @method unproject(point: Point, zoom: Number): LatLng\r\n\t// Inverse of [`project`](#map-project).\r\n\tunproject: function (point, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n\t},\r\n\r\n\t// @method layerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding geographical coordinate (for the current zoom level).\r\n\tlayerPointToLatLng: function (point) {\r\n\t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n\t\treturn this.unproject(projectedPoint);\r\n\t},\r\n\r\n\t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the [origin pixel](#map-getpixelorigin).\r\n\tlatLngToLayerPoint: function (latlng) {\r\n\t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n\t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n\t},\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n\t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n\t// CRS's bounds.\r\n\t// By default this means longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees.\r\n\twrapLatLng: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n\t// its center is within the CRS's bounds.\r\n\t// By default this means the center longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees, and the majority of the bounds\r\n\t// overlaps the CRS's bounds.\r\n\twrapLatLngBounds: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates according to\r\n\t// the map's CRS. By default this measures distance in meters.\r\n\tdistance: function (latlng1, latlng2) {\r\n\t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n\t},\r\n\r\n\t// @method containerPointToLayerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n\t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n\tcontainerPointToLayerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method layerPointToContainerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding pixel coordinate relative to the map container.\r\n\tlayerPointToContainerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).add(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method containerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the map container, returns\r\n\t// the corresponding geographical coordinate (for the current zoom level).\r\n\tcontainerPointToLatLng: function (point) {\r\n\t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n\t\treturn this.layerPointToLatLng(layerPoint);\r\n\t},\r\n\r\n\t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the map container.\r\n\tlatLngToContainerPoint: function (latlng) {\r\n\t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n\t},\r\n\r\n\t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n\t// map container where the event took place.\r\n\tmouseEventToContainerPoint: function (e) {\r\n\t\treturn DomEvent.getMousePosition(e, this._container);\r\n\t},\r\n\r\n\t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n\t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n\tmouseEventToLayerPoint: function (e) {\r\n\t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n\t},\r\n\r\n\t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n\t// Given a MouseEvent object, returns geographical coordinate where the\r\n\t// event took place.\r\n\tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n\t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n\t},\r\n\r\n\r\n\t// map initialization methods\r\n\r\n\t_initContainer: function (id) {\r\n\t\tvar container = this._container = DomUtil.get(id);\r\n\r\n\t\tif (!container) {\r\n\t\t\tthrow new Error('Map container not found.');\r\n\t\t} else if (container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is already initialized.');\r\n\t\t}\r\n\r\n\t\tDomEvent.on(container, 'scroll', this._onScroll, this);\r\n\t\tthis._containerId = Util.stamp(container);\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar container = this._container;\r\n\r\n\t\tthis._fadeAnimated = this.options.fadeAnimation && Browser.any3d;\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-container' +\r\n\t\t\t(Browser.touch ? ' leaflet-touch' : '') +\r\n\t\t\t(Browser.retina ? ' leaflet-retina' : '') +\r\n\t\t\t(Browser.ielt9 ? ' leaflet-oldie' : '') +\r\n\t\t\t(Browser.safari ? ' leaflet-safari' : '') +\r\n\t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n\t\tvar position = DomUtil.getStyle(container, 'position');\r\n\r\n\t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed' && position !== 'sticky') {\r\n\t\t\tcontainer.style.position = 'relative';\r\n\t\t}\r\n\r\n\t\tthis._initPanes();\r\n\r\n\t\tif (this._initControlPos) {\r\n\t\t\tthis._initControlPos();\r\n\t\t}\r\n\t},\r\n\r\n\t_initPanes: function () {\r\n\t\tvar panes = this._panes = {};\r\n\t\tthis._paneRenderers = {};\r\n\r\n\t\t// @section\r\n\t\t//\r\n\t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n\t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n\t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n\t\t// [`map.createPane`](#map-createpane) method.\r\n\t\t//\r\n\t\t// Every map has the following default panes that differ only in zIndex.\r\n\t\t//\r\n\t\t// @pane mapPane: HTMLElement = 'auto'\r\n\t\t// Pane that contains all other map panes\r\n\r\n\t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\t// @pane tilePane: HTMLElement = 200\r\n\t\t// Pane for `GridLayer`s and `TileLayer`s\r\n\t\tthis.createPane('tilePane');\r\n\t\t// @pane overlayPane: HTMLElement = 400\r\n\t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n\t\tthis.createPane('overlayPane');\r\n\t\t// @pane shadowPane: HTMLElement = 500\r\n\t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n\t\tthis.createPane('shadowPane');\r\n\t\t// @pane markerPane: HTMLElement = 600\r\n\t\t// Pane for `Icon`s of `Marker`s\r\n\t\tthis.createPane('markerPane');\r\n\t\t// @pane tooltipPane: HTMLElement = 650\r\n\t\t// Pane for `Tooltip`s.\r\n\t\tthis.createPane('tooltipPane');\r\n\t\t// @pane popupPane: HTMLElement = 700\r\n\t\t// Pane for `Popup`s.\r\n\t\tthis.createPane('popupPane');\r\n\r\n\t\tif (!this.options.markerZoomAnimation) {\r\n\t\t\tDomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\r\n\t\t\tDomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// private methods that modify map state\r\n\r\n\t// @section Map state change events\r\n\t_resetView: function (center, zoom, noMoveStart) {\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\tvar loading = !this._loaded;\r\n\t\tthis._loaded = true;\r\n\t\tzoom = this._limitZoom(zoom);\r\n\r\n\t\tthis.fire('viewprereset');\r\n\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\t\tthis\r\n\t\t\t._moveStart(zoomChanged, noMoveStart)\r\n\t\t\t._move(center, zoom)\r\n\t\t\t._moveEnd(zoomChanged);\r\n\r\n\t\t// @event viewreset: Event\r\n\t\t// Fired when the map needs to redraw its content (this usually happens\r\n\t\t// on map zoom or load). Very useful for creating custom overlays.\r\n\t\tthis.fire('viewreset');\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the map is initialized (when its center and zoom are set\r\n\t\t// for the first time).\r\n\t\tif (loading) {\r\n\t\t\tthis.fire('load');\r\n\t\t}\r\n\t},\r\n\r\n\t_moveStart: function (zoomChanged, noMoveStart) {\r\n\t\t// @event zoomstart: Event\r\n\t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n\t\t// @event movestart: Event\r\n\t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomstart');\r\n\t\t}\r\n\t\tif (!noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_move: function (center, zoom, data, supressEvent) {\r\n\t\tif (zoom === undefined) {\r\n\t\t\tzoom = this._zoom;\r\n\t\t}\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n\t\tthis._zoom = zoom;\r\n\t\tthis._lastCenter = center;\r\n\t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n\t\tif (!supressEvent) {\r\n\t\t\t// @event zoom: Event\r\n\t\t\t// Fired repeatedly during any change in zoom level,\r\n\t\t\t// including zoom and fly animations.\r\n\t\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\t\tthis.fire('zoom', data);\r\n\t\t\t}\r\n\r\n\t\t\t// @event move: Event\r\n\t\t\t// Fired repeatedly during any movement of the map,\r\n\t\t\t// including pan and fly animations.\r\n\t\t\tthis.fire('move', data);\r\n\t\t} else if (data && data.pinch) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\tthis.fire('zoom', data);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_moveEnd: function (zoomChanged) {\r\n\t\t// @event zoomend: Event\r\n\t\t// Fired when the map zoom changed, after any animations.\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomend');\r\n\t\t}\r\n\r\n\t\t// @event moveend: Event\r\n\t\t// Fired when the center of the map stops changing\r\n\t\t// (e.g. user stopped dragging the map or after non-centered zoom).\r\n\t\treturn this.fire('moveend');\r\n\t},\r\n\r\n\t_stop: function () {\r\n\t\tUtil.cancelAnimFrame(this._flyToFrame);\r\n\t\tif (this._panAnim) {\r\n\t\t\tthis._panAnim.stop();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_rawPanBy: function (offset) {\r\n\t\tDomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n\t},\r\n\r\n\t_getZoomSpan: function () {\r\n\t\treturn this.getMaxZoom() - this.getMinZoom();\r\n\t},\r\n\r\n\t_panInsideMaxBounds: function () {\r\n\t\tif (!this._enforcingBounds) {\r\n\t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n\t\t}\r\n\t},\r\n\r\n\t_checkIfLoaded: function () {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthrow new Error('Set map center and zoom first.');\r\n\t\t}\r\n\t},\r\n\r\n\t// DOM event handling\r\n\r\n\t// @section Interaction events\r\n\t_initEvents: function (remove) {\r\n\t\tthis._targets = {};\r\n\t\tthis._targets[Util.stamp(this._container)] = this;\r\n\r\n\t\tvar onOff = remove ? DomEvent.off : DomEvent.on;\r\n\r\n\t\t// @event click: MouseEvent\r\n\t\t// Fired when the user clicks (or taps) the map.\r\n\t\t// @event dblclick: MouseEvent\r\n\t\t// Fired when the user double-clicks (or double-taps) the map.\r\n\t\t// @event mousedown: MouseEvent\r\n\t\t// Fired when the user pushes the mouse button on the map.\r\n\t\t// @event mouseup: MouseEvent\r\n\t\t// Fired when the user releases the mouse button on the map.\r\n\t\t// @event mouseover: MouseEvent\r\n\t\t// Fired when the mouse enters the map.\r\n\t\t// @event mouseout: MouseEvent\r\n\t\t// Fired when the mouse leaves the map.\r\n\t\t// @event mousemove: MouseEvent\r\n\t\t// Fired while the mouse moves over the map.\r\n\t\t// @event contextmenu: MouseEvent\r\n\t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n\t\t// default browser context menu from showing if there are listeners on\r\n\t\t// this event. Also fired on mobile when the user holds a single touch\r\n\t\t// for a second (also called long press).\r\n\t\t// @event keypress: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n\t\t// @event keydown: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n\t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n\t\t// that do not produce a character value.\r\n\t\t// @event keyup: KeyboardEvent\r\n\t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n\t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n\t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n\t\tif (this.options.trackResize) {\r\n\t\t\tonOff(window, 'resize', this._onResize, this);\r\n\t\t}\r\n\r\n\t\tif (Browser.any3d && this.options.transform3DLimit) {\r\n\t\t\t(remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n\t\t}\r\n\t},\r\n\r\n\t_onResize: function () {\r\n\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\tthis._resizeRequest = Util.requestAnimFrame(\r\n\t\t        function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n\t},\r\n\r\n\t_onScroll: function () {\r\n\t\tthis._container.scrollTop  = 0;\r\n\t\tthis._container.scrollLeft = 0;\r\n\t},\r\n\r\n\t_onMoveEnd: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n\t\t\t// a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/\r\n\t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n\t\t}\r\n\t},\r\n\r\n\t_findEventTargets: function (e, type) {\r\n\t\tvar targets = [],\r\n\t\t    target,\r\n\t\t    isHover = type === 'mouseout' || type === 'mouseover',\r\n\t\t    src = e.target || e.srcElement,\r\n\t\t    dragging = false;\r\n\r\n\t\twhile (src) {\r\n\t\t\ttarget = this._targets[Util.stamp(src)];\r\n\t\t\tif (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) {\r\n\t\t\t\t// Prevent firing click after you just dragged an object.\r\n\t\t\t\tdragging = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (target && target.listens(type, true)) {\r\n\t\t\t\tif (isHover && !DomEvent.isExternalTarget(src, e)) { break; }\r\n\t\t\t\ttargets.push(target);\r\n\t\t\t\tif (isHover) { break; }\r\n\t\t\t}\r\n\t\t\tif (src === this._container) { break; }\r\n\t\t\tsrc = src.parentNode;\r\n\t\t}\r\n\t\tif (!targets.length && !dragging && !isHover && this.listens(type, true)) {\r\n\t\t\ttargets = [this];\r\n\t\t}\r\n\t\treturn targets;\r\n\t},\r\n\r\n\t_isClickDisabled: function (el) {\r\n\t\twhile (el && el !== this._container) {\r\n\t\t\tif (el['_leaflet_disable_click']) { return true; }\r\n\t\t\tel = el.parentNode;\r\n\t\t}\r\n\t},\r\n\r\n\t_handleDOMEvent: function (e) {\r\n\t\tvar el = (e.target || e.srcElement);\r\n\t\tif (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar type = e.type;\r\n\r\n\t\tif (type === 'mousedown') {\r\n\t\t\t// prevents outline when clicking on keyboard-focusable element\r\n\t\t\tDomUtil.preventOutline(el);\r\n\t\t}\r\n\r\n\t\tthis._fireDOMEvent(e, type);\r\n\t},\r\n\r\n\t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n\t_fireDOMEvent: function (e, type, canvasTargets) {\r\n\r\n\t\tif (e.type === 'click') {\r\n\t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n\t\t\t// @event preclick: MouseEvent\r\n\t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n\t\t\t// want something to happen on click before any existing click\r\n\t\t\t// handlers start running).\r\n\t\t\tvar synth = Util.extend({}, e);\r\n\t\t\tsynth.type = 'preclick';\r\n\t\t\tthis._fireDOMEvent(synth, synth.type, canvasTargets);\r\n\t\t}\r\n\r\n\t\t// Find the layer the event is propagating from and its parents.\r\n\t\tvar targets = this._findEventTargets(e, type);\r\n\r\n\t\tif (canvasTargets) {\r\n\t\t\tvar filtered = []; // pick only targets with listeners\r\n\t\t\tfor (var i = 0; i < canvasTargets.length; i++) {\r\n\t\t\t\tif (canvasTargets[i].listens(type, true)) {\r\n\t\t\t\t\tfiltered.push(canvasTargets[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttargets = filtered.concat(targets);\r\n\t\t}\r\n\r\n\t\tif (!targets.length) { return; }\r\n\r\n\t\tif (type === 'contextmenu') {\r\n\t\t\tDomEvent.preventDefault(e);\r\n\t\t}\r\n\r\n\t\tvar target = targets[0];\r\n\t\tvar data = {\r\n\t\t\toriginalEvent: e\r\n\t\t};\r\n\r\n\t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n\t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n\t\t\tdata.containerPoint = isMarker ?\r\n\t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n\t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n\t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < targets.length; i++) {\r\n\t\t\ttargets[i].fire(type, data, true);\r\n\t\t\tif (data.originalEvent._stopped ||\r\n\t\t\t\t(targets[i].options.bubblingMouseEvents === false && Util.indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n\t\t}\r\n\t},\r\n\r\n\t_draggableMoved: function (obj) {\r\n\t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n\t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n\t},\r\n\r\n\t_clearHandlers: function () {\r\n\t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n\t\t\tthis._handlers[i].disable();\r\n\t\t}\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method whenReady(fn: Function, context?: Object): this\r\n\t// Runs the given function `fn` when the map gets initialized with\r\n\t// a view (center and zoom) and at least one layer, or immediately\r\n\t// if it's already initialized, optionally passing a function context.\r\n\twhenReady: function (callback, context) {\r\n\t\tif (this._loaded) {\r\n\t\t\tcallback.call(context || this, {target: this});\r\n\t\t} else {\r\n\t\t\tthis.on('load', callback, context);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t// private methods for getting map state\r\n\r\n\t_getMapPanePos: function () {\r\n\t\treturn DomUtil.getPosition(this._mapPane) || new Point(0, 0);\r\n\t},\r\n\r\n\t_moved: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\treturn pos && !pos.equals([0, 0]);\r\n\t},\r\n\r\n\t_getTopLeftPoint: function (center, zoom) {\r\n\t\tvar pixelOrigin = center && zoom !== undefined ?\r\n\t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n\t\t\tthis.getPixelOrigin();\r\n\t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t_getNewPixelOrigin: function (center, zoom) {\r\n\t\tvar viewHalf = this.getSize()._divideBy(2);\r\n\t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n\t},\r\n\r\n\t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n\t},\r\n\r\n\t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn toBounds([\r\n\t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n\t\t]);\r\n\t},\r\n\r\n\t// layer point of the current center\r\n\t_getCenterLayerPoint: function () {\r\n\t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n\t},\r\n\r\n\t// offset of the specified place to the current center in pixels\r\n\t_getCenterOffset: function (latlng) {\r\n\t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// adjust center for view to get inside bounds\r\n\t_limitCenter: function (center, zoom, bounds) {\r\n\r\n\t\tif (!bounds) { return center; }\r\n\r\n\t\tvar centerPoint = this.project(center, zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n\t\t    offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n\t\t// If offset is less than a pixel, ignore.\r\n\t\t// This prevents unstable projections from getting into\r\n\t\t// an infinite loop of tiny offsets.\r\n\t\tif (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\r\n\t\t\treturn center;\r\n\t\t}\r\n\r\n\t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n\t},\r\n\r\n\t// adjust offset for view to get inside bounds\r\n\t_limitOffset: function (offset, bounds) {\r\n\t\tif (!bounds) { return offset; }\r\n\r\n\t\tvar viewBounds = this.getPixelBounds(),\r\n\t\t    newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n\t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n\t},\r\n\r\n\t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n\t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n\t\tvar projectedMaxBounds = toBounds(\r\n\t\t        this.project(maxBounds.getNorthEast(), zoom),\r\n\t\t        this.project(maxBounds.getSouthWest(), zoom)\r\n\t\t    ),\r\n\t\t    minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n\t\t    maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n\t\t    dx = this._rebound(minOffset.x, -maxOffset.x),\r\n\t\t    dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n\t\treturn new Point(dx, dy);\r\n\t},\r\n\r\n\t_rebound: function (left, right) {\r\n\t\treturn left + right > 0 ?\r\n\t\t\tMath.round(left - right) / 2 :\r\n\t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n\t},\r\n\r\n\t_limitZoom: function (zoom) {\r\n\t\tvar min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    snap = Browser.any3d ? this.options.zoomSnap : 1;\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / snap) * snap;\r\n\t\t}\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t_onPanTransitionStep: function () {\r\n\t\tthis.fire('move');\r\n\t},\r\n\r\n\t_onPanTransitionEnd: function () {\r\n\t\tDomUtil.removeClass(this._mapPane, 'leaflet-pan-anim');\r\n\t\tthis.fire('moveend');\r\n\t},\r\n\r\n\t_tryAnimatedPan: function (center, options) {\r\n\t\t// difference between the new and current centers in pixels\r\n\t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n\t\t// don't animate too far unless animate: true specified in options\r\n\t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tthis.panBy(offset, options);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_createAnimProxy: function () {\r\n\r\n\t\tvar proxy = this._proxy = DomUtil.create('div', 'leaflet-proxy leaflet-zoom-animated');\r\n\t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n\t\tthis.on('zoomanim', function (e) {\r\n\t\t\tvar prop = DomUtil.TRANSFORM,\r\n\t\t\t    transform = this._proxy.style[prop];\r\n\r\n\t\t\tDomUtil.setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n\t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n\t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n\t\t\t\tthis._onZoomTransitionEnd();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n\t\tthis._on('unload', this._destroyAnimProxy, this);\r\n\t},\r\n\r\n\t_destroyAnimProxy: function () {\r\n\t\tDomUtil.remove(this._proxy);\r\n\t\tthis.off('load moveend', this._animMoveEnd, this);\r\n\t\tdelete this._proxy;\r\n\t},\r\n\r\n\t_animMoveEnd: function () {\r\n\t\tvar c = this.getCenter(),\r\n\t\t    z = this.getZoom();\r\n\t\tDomUtil.setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n\t},\r\n\r\n\t_catchTransitionEnd: function (e) {\r\n\t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n\t\t\tthis._onZoomTransitionEnd();\r\n\t\t}\r\n\t},\r\n\r\n\t_nothingToAnimate: function () {\r\n\t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n\t},\r\n\r\n\t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n\t\tif (this._animatingZoom) { return true; }\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\t// don't animate if disabled, not supported or zoom difference is too large\r\n\t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n\t\t        Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n\t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n\t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tUtil.requestAnimFrame(function () {\r\n\t\t\tthis\r\n\t\t\t    ._moveStart(true, options.noMoveStart || false)\r\n\t\t\t    ._animateZoom(center, zoom, true);\r\n\t\t}, this);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n\t\tif (!this._mapPane) { return; }\r\n\r\n\t\tif (startAnim) {\r\n\t\t\tthis._animatingZoom = true;\r\n\r\n\t\t\t// remember what center/zoom to set after animation\r\n\t\t\tthis._animateToCenter = center;\r\n\t\t\tthis._animateToZoom = zoom;\r\n\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\t// @section Other Events\r\n\t\t// @event zoomanim: ZoomAnimEvent\r\n\t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n\t\tthis.fire('zoomanim', {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom,\r\n\t\t\tnoUpdate: noUpdate\r\n\t\t});\r\n\r\n\t\tif (!this._tempFireZoomEvent) {\r\n\t\t\tthis._tempFireZoomEvent = this._zoom !== this._animateToZoom;\r\n\t\t}\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n\t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n\t\tsetTimeout(Util.bind(this._onZoomTransitionEnd, this), 250);\r\n\t},\r\n\r\n\t_onZoomTransitionEnd: function () {\r\n\t\tif (!this._animatingZoom) { return; }\r\n\r\n\t\tif (this._mapPane) {\r\n\t\t\tDomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\tthis._animatingZoom = false;\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n\t\tif (this._tempFireZoomEvent) {\r\n\t\t\tthis.fire('zoom');\r\n\t\t}\r\n\t\tdelete this._tempFireZoomEvent;\r\n\r\n\t\tthis.fire('move');\r\n\r\n\t\tthis._moveEnd(true);\r\n\t}\r\n});\r\n\r\n// @section\r\n\r\n// @factory L.map(id: String, options?: Map options)\r\n// Instantiates a map object given the DOM ID of a `<div>` element\r\n// and optionally an object literal with `Map options`.\r\n//\r\n// @alternative\r\n// @factory L.map(el: HTMLElement, options?: Map options)\r\n// Instantiates a map object given an instance of a `<div>` HTML element\r\n// and optionally an object literal with `Map options`.\r\nexport function createMap(id, options) {\r\n\treturn new Map(id, options);\r\n}\r\n","\r\nimport {Class} from '../core/Class';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control\r\n * @aka L.Control\r\n * @inherits Class\r\n *\r\n * L.Control is a base class for implementing map controls. Handles positioning.\r\n * All other controls extend from this class.\r\n */\r\n\r\nexport var Control = Class.extend({\r\n\t// @section\r\n\t// @aka Control Options\r\n\toptions: {\r\n\t\t// @option position: String = 'topright'\r\n\t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n\t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n\t\tposition: 'topright'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\t/* @section\r\n\t * Classes extending L.Control will inherit the following methods:\r\n\t *\r\n\t * @method getPosition: string\r\n\t * Returns the position of the control.\r\n\t */\r\n\tgetPosition: function () {\r\n\t\treturn this.options.position;\r\n\t},\r\n\r\n\t// @method setPosition(position: string): this\r\n\t// Sets the position of the control.\r\n\tsetPosition: function (position) {\r\n\t\tvar map = this._map;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.removeControl(this);\r\n\t\t}\r\n\r\n\t\tthis.options.position = position;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.addControl(this);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTMLElement that contains the control.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method addTo(map: Map): this\r\n\t// Adds the control to the given map.\r\n\taddTo: function (map) {\r\n\t\tthis.remove();\r\n\t\tthis._map = map;\r\n\r\n\t\tvar container = this._container = this.onAdd(map),\r\n\t\t    pos = this.getPosition(),\r\n\t\t    corner = map._controlCorners[pos];\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-control');\r\n\r\n\t\tif (pos.indexOf('bottom') !== -1) {\r\n\t\t\tcorner.insertBefore(container, corner.firstChild);\r\n\t\t} else {\r\n\t\t\tcorner.appendChild(container);\r\n\t\t}\r\n\r\n\t\tthis._map.on('unload', this.remove, this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove: this\r\n\t// Removes the control from the map it is currently active on.\r\n\tremove: function () {\r\n\t\tif (!this._map) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._container);\r\n\r\n\t\tif (this.onRemove) {\r\n\t\t\tthis.onRemove(this._map);\r\n\t\t}\r\n\r\n\t\tthis._map.off('unload', this.remove, this);\r\n\t\tthis._map = null;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_refocusOnMap: function (e) {\r\n\t\t// if map exists and event is not a keyboard event\r\n\t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n\t\t\tthis._map.getContainer().focus();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport var control = function (options) {\r\n\treturn new Control(options);\r\n};\r\n\r\n/* @section Extension methods\r\n * @uninheritable\r\n *\r\n * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n *\r\n * @method onAdd(map: Map): HTMLElement\r\n * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n *\r\n * @method onRemove(map: Map)\r\n * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n */\r\n\r\n/* @namespace Map\r\n * @section Methods for Layers and Controls\r\n */\r\nMap.include({\r\n\t// @method addControl(control: Control): this\r\n\t// Adds the given control to the map\r\n\taddControl: function (control) {\r\n\t\tcontrol.addTo(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeControl(control: Control): this\r\n\t// Removes the given control from the map\r\n\tremoveControl: function (control) {\r\n\t\tcontrol.remove();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initControlPos: function () {\r\n\t\tvar corners = this._controlCorners = {},\r\n\t\t    l = 'leaflet-',\r\n\t\t    container = this._controlContainer =\r\n\t\t            DomUtil.create('div', l + 'control-container', this._container);\r\n\r\n\t\tfunction createCorner(vSide, hSide) {\r\n\t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n\t\t\tcorners[vSide + hSide] = DomUtil.create('div', className, container);\r\n\t\t}\r\n\r\n\t\tcreateCorner('top', 'left');\r\n\t\tcreateCorner('top', 'right');\r\n\t\tcreateCorner('bottom', 'left');\r\n\t\tcreateCorner('bottom', 'right');\r\n\t},\r\n\r\n\t_clearControlPos: function () {\r\n\t\tfor (var i in this._controlCorners) {\r\n\t\t\tDomUtil.remove(this._controlCorners[i]);\r\n\t\t}\r\n\t\tDomUtil.remove(this._controlContainer);\r\n\t\tdelete this._controlCorners;\r\n\t\tdelete this._controlContainer;\r\n\t}\r\n});\r\n","\r\nimport {Control} from './Control';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control.Layers\r\n * @aka L.Control.Layers\r\n * @inherits Control\r\n *\r\n * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var baseLayers = {\r\n * \t\"Mapbox\": mapbox,\r\n * \t\"OpenStreetMap\": osm\r\n * };\r\n *\r\n * var overlays = {\r\n * \t\"Marker\": marker,\r\n * \t\"Roads\": roadsLayer\r\n * };\r\n *\r\n * L.control.layers(baseLayers, overlays).addTo(map);\r\n * ```\r\n *\r\n * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n *\r\n * ```js\r\n * {\r\n *     \"<someName1>\": layer1,\r\n *     \"<someName2>\": layer2\r\n * }\r\n * ```\r\n *\r\n * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n *\r\n * ```js\r\n * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n * ```\r\n */\r\n\r\nexport var Layers = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Layers options\r\n\toptions: {\r\n\t\t// @option collapsed: Boolean = true\r\n\t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation.\r\n\t\tcollapsed: true,\r\n\t\tposition: 'topright',\r\n\r\n\t\t// @option autoZIndex: Boolean = true\r\n\t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n\t\tautoZIndex: true,\r\n\r\n\t\t// @option hideSingleBase: Boolean = false\r\n\t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n\t\thideSingleBase: false,\r\n\r\n\t\t// @option sortLayers: Boolean = false\r\n\t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n\t\t// in which they were added to the control.\r\n\t\tsortLayers: false,\r\n\r\n\t\t// @option sortFunction: Function = *\r\n\t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n\t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n\t\t// The function receives both the `L.Layer` instances and their names, as in\r\n\t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n\t\t// By default, it sorts layers alphabetically by their name.\r\n\t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n\t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n\t\t}\r\n\t},\r\n\r\n\tinitialize: function (baseLayers, overlays, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tthis._layers = [];\r\n\t\tthis._lastZIndex = 0;\r\n\t\tthis._handlingClick = false;\r\n\t\tthis._preventClick = false;\r\n\r\n\t\tfor (var i in baseLayers) {\r\n\t\t\tthis._addLayer(baseLayers[i], i);\r\n\t\t}\r\n\r\n\t\tfor (i in overlays) {\r\n\t\t\tthis._addLayer(overlays[i], i, true);\r\n\t\t}\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._initLayout();\r\n\t\tthis._update();\r\n\r\n\t\tthis._map = map;\r\n\t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\taddTo: function (map) {\r\n\t\tControl.prototype.addTo.call(this, map);\r\n\t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n\t\treturn this._expandIfNotCollapsed();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addBaseLayer(layer: Layer, name: String): this\r\n\t// Adds a base layer (radio button entry) with the given name to the control.\r\n\taddBaseLayer: function (layer, name) {\r\n\t\tthis._addLayer(layer, name);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method addOverlay(layer: Layer, name: String): this\r\n\t// Adds an overlay (checkbox entry) with the given name to the control.\r\n\taddOverlay: function (layer, name) {\r\n\t\tthis._addLayer(layer, name, true);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Remove the given layer from the control.\r\n\tremoveLayer: function (layer) {\r\n\t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(layer));\r\n\t\tif (obj) {\r\n\t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n\t\t}\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method expand(): this\r\n\t// Expand the control container if collapsed.\r\n\texpand: function () {\r\n\t\tDomUtil.addClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\tthis._section.style.height = null;\r\n\t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n\t\tif (acceptableHeight < this._section.clientHeight) {\r\n\t\t\tDomUtil.addClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t}\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method collapse(): this\r\n\t// Collapse the control container if expanded.\r\n\tcollapse: function () {\r\n\t\tDomUtil.removeClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar className = 'leaflet-control-layers',\r\n\t\t    container = this._container = DomUtil.create('div', className),\r\n\t\t    collapsed = this.options.collapsed;\r\n\r\n\t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n\t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(container);\r\n\r\n\t\tvar section = this._section = DomUtil.create('section', className + '-list');\r\n\r\n\t\tif (collapsed) {\r\n\t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n\t\t\tDomEvent.on(container, {\r\n\t\t\t\tmouseenter: this._expandSafely,\r\n\t\t\t\tmouseleave: this.collapse\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\tvar link = this._layersLink = DomUtil.create('a', className + '-toggle', container);\r\n\t\tlink.href = '#';\r\n\t\tlink.title = 'Layers';\r\n\t\tlink.setAttribute('role', 'button');\r\n\r\n\t\tDomEvent.on(link, {\r\n\t\t\tkeydown: function (e) {\r\n\t\t\t\tif (e.keyCode === 13) {\r\n\t\t\t\t\tthis._expandSafely();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t// Certain screen readers intercept the key event and instead send a click event\r\n\t\t\tclick: function (e) {\r\n\t\t\t\tDomEvent.preventDefault(e);\r\n\t\t\t\tthis._expandSafely();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tif (!collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tthis._baseLayersList = DomUtil.create('div', className + '-base', section);\r\n\t\tthis._separator = DomUtil.create('div', className + '-separator', section);\r\n\t\tthis._overlaysList = DomUtil.create('div', className + '-overlays', section);\r\n\r\n\t\tcontainer.appendChild(section);\r\n\t},\r\n\r\n\t_getLayer: function (id) {\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n\t\t\tif (this._layers[i] && Util.stamp(this._layers[i].layer) === id) {\r\n\t\t\t\treturn this._layers[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_addLayer: function (layer, name, overlay) {\r\n\t\tif (this._map) {\r\n\t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\tthis._layers.push({\r\n\t\t\tlayer: layer,\r\n\t\t\tname: name,\r\n\t\t\toverlay: overlay\r\n\t\t});\r\n\r\n\t\tif (this.options.sortLayers) {\r\n\t\t\tthis._layers.sort(Util.bind(function (a, b) {\r\n\t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n\t\t\tthis._lastZIndex++;\r\n\t\t\tlayer.setZIndex(this._lastZIndex);\r\n\t\t}\r\n\r\n\t\tthis._expandIfNotCollapsed();\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._container) { return this; }\r\n\r\n\t\tDomUtil.empty(this._baseLayersList);\r\n\t\tDomUtil.empty(this._overlaysList);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n\t\tfor (i = 0; i < this._layers.length; i++) {\r\n\t\t\tobj = this._layers[i];\r\n\t\t\tthis._addItem(obj);\r\n\t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n\t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n\t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n\t\t}\r\n\r\n\t\t// Hide base layers section if there's only one layer.\r\n\t\tif (this.options.hideSingleBase) {\r\n\t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n\t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n\t\t}\r\n\r\n\t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_onLayerChange: function (e) {\r\n\t\tif (!this._handlingClick) {\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(e.target));\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Layer events\r\n\t\t// @event baselayerchange: LayersControlEvent\r\n\t\t// Fired when the base layer is changed through the [layers control](#control-layers).\r\n\t\t// @event overlayadd: LayersControlEvent\r\n\t\t// Fired when an overlay is selected through the [layers control](#control-layers).\r\n\t\t// @event overlayremove: LayersControlEvent\r\n\t\t// Fired when an overlay is deselected through the [layers control](#control-layers).\r\n\t\t// @namespace Control.Layers\r\n\t\tvar type = obj.overlay ?\r\n\t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n\t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n\t\tif (type) {\r\n\t\t\tthis._map.fire(type, obj);\r\n\t\t}\r\n\t},\r\n\r\n\t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079)\r\n\t_createRadioElement: function (name, checked) {\r\n\r\n\t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n\t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n\t\tvar radioFragment = document.createElement('div');\r\n\t\tradioFragment.innerHTML = radioHtml;\r\n\r\n\t\treturn radioFragment.firstChild;\r\n\t},\r\n\r\n\t_addItem: function (obj) {\r\n\t\tvar label = document.createElement('label'),\r\n\t\t    checked = this._map.hasLayer(obj.layer),\r\n\t\t    input;\r\n\r\n\t\tif (obj.overlay) {\r\n\t\t\tinput = document.createElement('input');\r\n\t\t\tinput.type = 'checkbox';\r\n\t\t\tinput.className = 'leaflet-control-layers-selector';\r\n\t\t\tinput.defaultChecked = checked;\r\n\t\t} else {\r\n\t\t\tinput = this._createRadioElement('leaflet-base-layers_' + Util.stamp(this), checked);\r\n\t\t}\r\n\r\n\t\tthis._layerControlInputs.push(input);\r\n\t\tinput.layerId = Util.stamp(obj.layer);\r\n\r\n\t\tDomEvent.on(input, 'click', this._onInputClick, this);\r\n\r\n\t\tvar name = document.createElement('span');\r\n\t\tname.innerHTML = ' ' + obj.name;\r\n\r\n\t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n\t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n\t\tvar holder = document.createElement('span');\r\n\r\n\t\tlabel.appendChild(holder);\r\n\t\tholder.appendChild(input);\r\n\t\tholder.appendChild(name);\r\n\r\n\t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n\t\tcontainer.appendChild(label);\r\n\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn label;\r\n\t},\r\n\r\n\t_onInputClick: function () {\r\n\t\t// expanding the control on mobile with a click can cause adding a layer - we don't want this\r\n\t\tif (this._preventClick) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input, layer;\r\n\t\tvar addedLayers = [],\r\n\t\t    removedLayers = [];\r\n\r\n\t\tthis._handlingClick = true;\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n\t\t\tif (input.checked) {\r\n\t\t\t\taddedLayers.push(layer);\r\n\t\t\t} else if (!input.checked) {\r\n\t\t\t\tremovedLayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n\t\tfor (i = 0; i < removedLayers.length; i++) {\r\n\t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n\t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (i = 0; i < addedLayers.length; i++) {\r\n\t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n\t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tthis._refocusOnMap();\r\n\t},\r\n\r\n\t_checkDisabledLayers: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input,\r\n\t\t    layer,\r\n\t\t    zoom = this._map.getZoom();\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n\t\t\t                 (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n\t\t}\r\n\t},\r\n\r\n\t_expandIfNotCollapsed: function () {\r\n\t\tif (this._map && !this.options.collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_expandSafely: function () {\r\n\t\tvar section = this._section;\r\n\t\tthis._preventClick = true;\r\n\t\tDomEvent.on(section, 'click', DomEvent.preventDefault);\r\n\t\tthis.expand();\r\n\t\tvar that = this;\r\n\t\tsetTimeout(function () {\r\n\t\t\tDomEvent.off(section, 'click', DomEvent.preventDefault);\r\n\t\t\tthat._preventClick = false;\r\n\t\t});\r\n\t}\r\n\r\n});\r\n\r\n\r\n// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\nexport var layers = function (baseLayers, overlays, options) {\r\n\treturn new Layers(baseLayers, overlays, options);\r\n};\r\n","\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as DomEvent from '../dom/DomEvent';\r\n\r\n/*\r\n * @class Control.Zoom\r\n * @aka L.Control.Zoom\r\n * @inherits Control\r\n *\r\n * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n */\r\n\r\nexport var Zoom = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Zoom options\r\n\toptions: {\r\n\t\tposition: 'topleft',\r\n\r\n\t\t// @option zoomInText: String = '<span aria-hidden=\"true\">+</span>'\r\n\t\t// The text set on the 'zoom in' button.\r\n\t\tzoomInText: '<span aria-hidden=\"true\">+</span>',\r\n\r\n\t\t// @option zoomInTitle: String = 'Zoom in'\r\n\t\t// The title set on the 'zoom in' button.\r\n\t\tzoomInTitle: 'Zoom in',\r\n\r\n\t\t// @option zoomOutText: String = '<span aria-hidden=\"true\">&#x2212;</span>'\r\n\t\t// The text set on the 'zoom out' button.\r\n\t\tzoomOutText: '<span aria-hidden=\"true\">&#x2212;</span>',\r\n\r\n\t\t// @option zoomOutTitle: String = 'Zoom out'\r\n\t\t// The title set on the 'zoom out' button.\r\n\t\tzoomOutTitle: 'Zoom out'\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tvar zoomName = 'leaflet-control-zoom',\r\n\t\t    container = DomUtil.create('div', zoomName + ' leaflet-bar'),\r\n\t\t    options = this.options;\r\n\r\n\t\tthis._zoomInButton  = this._createButton(options.zoomInText, options.zoomInTitle,\r\n\t\t        zoomName + '-in',  container, this._zoomIn);\r\n\t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n\t\t        zoomName + '-out', container, this._zoomOut);\r\n\r\n\t\tthis._updateDisabled();\r\n\t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\t},\r\n\r\n\tdisable: function () {\r\n\t\tthis._disabled = true;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tenable: function () {\r\n\t\tthis._disabled = false;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_zoomIn: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n\t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_zoomOut: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n\t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_createButton: function (html, title, className, container, fn) {\r\n\t\tvar link = DomUtil.create('a', className, container);\r\n\t\tlink.innerHTML = html;\r\n\t\tlink.href = '#';\r\n\t\tlink.title = title;\r\n\r\n\t\t/*\r\n\t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n\t\t */\r\n\t\tlink.setAttribute('role', 'button');\r\n\t\tlink.setAttribute('aria-label', title);\r\n\r\n\t\tDomEvent.disableClickPropagation(link);\r\n\t\tDomEvent.on(link, 'click', DomEvent.stop);\r\n\t\tDomEvent.on(link, 'click', fn, this);\r\n\t\tDomEvent.on(link, 'click', this._refocusOnMap, this);\r\n\r\n\t\treturn link;\r\n\t},\r\n\r\n\t_updateDisabled: function () {\r\n\t\tvar map = this._map,\r\n\t\t    className = 'leaflet-disabled';\r\n\r\n\t\tDomUtil.removeClass(this._zoomInButton, className);\r\n\t\tDomUtil.removeClass(this._zoomOutButton, className);\r\n\t\tthis._zoomInButton.setAttribute('aria-disabled', 'false');\r\n\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'false');\r\n\r\n\t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomOutButton, className);\r\n\t\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'true');\r\n\t\t}\r\n\t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomInButton, className);\r\n\t\t\tthis._zoomInButton.setAttribute('aria-disabled', 'true');\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option zoomControl: Boolean = true\r\n// Whether a [zoom control](#control-zoom) is added to the map by default.\r\nMap.mergeOptions({\r\n\tzoomControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.zoomControl) {\r\n\t\t// @section Controls\r\n\t\t// @property zoomControl: Control.Zoom\r\n\t\t// The default zoom control (only available if the\r\n\t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n\t\tthis.zoomControl = new Zoom();\r\n\t\tthis.addControl(this.zoomControl);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Zoom\r\n// @factory L.control.zoom(options: Control.Zoom options)\r\n// Creates a zoom control\r\nexport var zoom = function (options) {\r\n\treturn new Zoom(options);\r\n};\r\n","\nimport {Control} from './Control';\nimport * as DomUtil from '../dom/DomUtil';\n\n/*\n * @class Control.Scale\n * @aka L.Control.Scale\n * @inherits Control\n *\n * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n *\n * @example\n *\n * ```js\n * L.control.scale().addTo(map);\n * ```\n */\n\nexport var Scale = Control.extend({\n\t// @section\n\t// @aka Control.Scale options\n\toptions: {\n\t\tposition: 'bottomleft',\n\n\t\t// @option maxWidth: Number = 100\n\t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n\t\tmaxWidth: 100,\n\n\t\t// @option metric: Boolean = True\n\t\t// Whether to show the metric scale line (m/km).\n\t\tmetric: true,\n\n\t\t// @option imperial: Boolean = True\n\t\t// Whether to show the imperial scale line (mi/ft).\n\t\timperial: true\n\n\t\t// @option updateWhenIdle: Boolean = false\n\t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n\t},\n\n\tonAdd: function (map) {\n\t\tvar className = 'leaflet-control-scale',\n\t\t    container = DomUtil.create('div', className),\n\t\t    options = this.options;\n\n\t\tthis._addScales(options, className + '-line', container);\n\n\t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t\tmap.whenReady(this._update, this);\n\n\t\treturn container;\n\t},\n\n\tonRemove: function (map) {\n\t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t},\n\n\t_addScales: function (options, className, container) {\n\t\tif (options.metric) {\n\t\t\tthis._mScale = DomUtil.create('div', className, container);\n\t\t}\n\t\tif (options.imperial) {\n\t\t\tthis._iScale = DomUtil.create('div', className, container);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tvar map = this._map,\n\t\t    y = map.getSize().y / 2;\n\n\t\tvar maxMeters = map.distance(\n\t\t\tmap.containerPointToLatLng([0, y]),\n\t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n\t\tthis._updateScales(maxMeters);\n\t},\n\n\t_updateScales: function (maxMeters) {\n\t\tif (this.options.metric && maxMeters) {\n\t\t\tthis._updateMetric(maxMeters);\n\t\t}\n\t\tif (this.options.imperial && maxMeters) {\n\t\t\tthis._updateImperial(maxMeters);\n\t\t}\n\t},\n\n\t_updateMetric: function (maxMeters) {\n\t\tvar meters = this._getRoundNum(maxMeters),\n\t\t    label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n\t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n\t},\n\n\t_updateImperial: function (maxMeters) {\n\t\tvar maxFeet = maxMeters * 3.2808399,\n\t\t    maxMiles, miles, feet;\n\n\t\tif (maxFeet > 5280) {\n\t\t\tmaxMiles = maxFeet / 5280;\n\t\t\tmiles = this._getRoundNum(maxMiles);\n\t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n\t\t} else {\n\t\t\tfeet = this._getRoundNum(maxFeet);\n\t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n\t\t}\n\t},\n\n\t_updateScale: function (scale, text, ratio) {\n\t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n\t\tscale.innerHTML = text;\n\t},\n\n\t_getRoundNum: function (num) {\n\t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n\t\t    d = num / pow10;\n\n\t\td = d >= 10 ? 10 :\n\t\t    d >= 5 ? 5 :\n\t\t    d >= 3 ? 3 :\n\t\t    d >= 2 ? 2 : 1;\n\n\t\treturn pow10 * d;\n\t}\n});\n\n\n// @factory L.control.scale(options?: Control.Scale options)\n// Creates an scale control with the given options.\nexport var scale = function (options) {\n\treturn new Scale(options);\n};\n","\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport Browser from '../core/Browser';\r\n\r\nvar ukrainianFlag = '<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" class=\"leaflet-attribution-flag\"><path fill=\"#4C7BE1\" d=\"M0 0h12v4H0z\"/><path fill=\"#FFD500\" d=\"M0 4h12v3H0z\"/><path fill=\"#E0BC00\" d=\"M0 7h12v1H0z\"/></svg>';\r\n\r\n\r\n/*\r\n * @class Control.Attribution\r\n * @aka L.Control.Attribution\r\n * @inherits Control\r\n *\r\n * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n */\r\n\r\nexport var Attribution = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Attribution options\r\n\toptions: {\r\n\t\tposition: 'bottomright',\r\n\r\n\t\t// @option prefix: String|false = 'Leaflet'\r\n\t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JavaScript library for interactive maps\">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._attributions = {};\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tmap.attributionControl = this;\r\n\t\tthis._container = DomUtil.create('div', 'leaflet-control-attribution');\r\n\t\tDomEvent.disableClickPropagation(this._container);\r\n\r\n\t\t// TODO ugly, refactor\r\n\t\tfor (var i in map._layers) {\r\n\t\t\tif (map._layers[i].getAttribution) {\r\n\t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._update();\r\n\r\n\t\tmap.on('layeradd', this._addAttribution, this);\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('layeradd', this._addAttribution, this);\r\n\t},\r\n\r\n\t_addAttribution: function (ev) {\r\n\t\tif (ev.layer.getAttribution) {\r\n\t\t\tthis.addAttribution(ev.layer.getAttribution());\r\n\t\t\tev.layer.once('remove', function () {\r\n\t\t\t\tthis.removeAttribution(ev.layer.getAttribution());\r\n\t\t\t}, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setPrefix(prefix: String|false): this\r\n\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\tsetPrefix: function (prefix) {\r\n\t\tthis.options.prefix = prefix;\r\n\t\tthis._update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addAttribution(text: String): this\r\n\t// Adds an attribution text (e.g. `'&copy; OpenStreetMap contributors'`).\r\n\taddAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (!this._attributions[text]) {\r\n\t\t\tthis._attributions[text] = 0;\r\n\t\t}\r\n\t\tthis._attributions[text]++;\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeAttribution(text: String): this\r\n\t// Removes an attribution text.\r\n\tremoveAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (this._attributions[text]) {\r\n\t\t\tthis._attributions[text]--;\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar attribs = [];\r\n\r\n\t\tfor (var i in this._attributions) {\r\n\t\t\tif (this._attributions[i]) {\r\n\t\t\t\tattribs.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar prefixAndAttribs = [];\r\n\r\n\t\tif (this.options.prefix) {\r\n\t\t\tprefixAndAttribs.push(this.options.prefix);\r\n\t\t}\r\n\t\tif (attribs.length) {\r\n\t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n\t\t}\r\n\r\n\t\tthis._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden=\"true\">|</span> ');\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option attributionControl: Boolean = true\r\n// Whether a [attribution control](#control-attribution) is added to the map by default.\r\nMap.mergeOptions({\r\n\tattributionControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.attributionControl) {\r\n\t\tnew Attribution().addTo(this);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Attribution\r\n// @factory L.control.attribution(options: Control.Attribution options)\r\n// Creates an attribution control.\r\nexport var attribution = function (options) {\r\n\treturn new Attribution(options);\r\n};\r\n","import {Class} from './Class';\n\n/*\n\tL.Handler is a base class for handler classes that are used internally to inject\n\tinteraction features like dragging to classes like Map and Marker.\n*/\n\n// @class Handler\n// @aka L.Handler\n// Abstract class for map interaction handlers\n\nexport var Handler = Class.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t},\n\n\t// @method enable(): this\n\t// Enables the handler\n\tenable: function () {\n\t\tif (this._enabled) { return this; }\n\n\t\tthis._enabled = true;\n\t\tthis.addHooks();\n\t\treturn this;\n\t},\n\n\t// @method disable(): this\n\t// Disables the handler\n\tdisable: function () {\n\t\tif (!this._enabled) { return this; }\n\n\t\tthis._enabled = false;\n\t\tthis.removeHooks();\n\t\treturn this;\n\t},\n\n\t// @method enabled(): Boolean\n\t// Returns `true` if the handler is enabled\n\tenabled: function () {\n\t\treturn !!this._enabled;\n\t}\n\n\t// @section Extension methods\n\t// Classes inheriting from `Handler` must implement the two following methods:\n\t// @method addHooks()\n\t// Called when the handler is enabled, should add event hooks.\n\t// @method removeHooks()\n\t// Called when the handler is disabled, should remove the event hooks added previously.\n});\n\n// @section There is static function which can be called without instantiating L.Handler:\n// @function addTo(map: Map, name: String): this\n// Adds a new Handler to the given map with the given name.\nHandler.addTo = function (map, name) {\n\tmap.addHandler(name, this);\n\treturn this;\n};\n","import {Control, control} from './Control';\nimport {Layers, layers} from './Control.Layers';\nimport {Zoom, zoom} from './Control.Zoom';\nimport {Scale, scale} from './Control.Scale';\nimport {Attribution, attribution} from './Control.Attribution';\n\nControl.Layers = Layers;\nControl.Zoom = Zoom;\nControl.Scale = Scale;\nControl.Attribution = Attribution;\n\ncontrol.layers = layers;\ncontrol.zoom = zoom;\ncontrol.scale = scale;\ncontrol.attribution = attribution;\n\nexport {Control, control};\n","import Browser from './Browser';\nexport {Browser};\n\nexport {Class} from './Class';\n\nimport {Evented} from './Events';\nimport {Events} from './Events';\nexport {Evented};\nexport var Mixin = {Events: Events};\n\nexport {Handler} from './Handler';\n\nimport * as Util from './Util';\nexport {Util};\nexport {extend, bind, stamp, setOptions} from './Util';\n","import {Evented} from '../core/Events';\r\nimport Browser from '../core/Browser';\r\nimport * as DomEvent from './DomEvent';\r\nimport * as DomUtil from './DomUtil';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\n\r\n/*\r\n * @class Draggable\r\n * @aka L.Draggable\r\n * @inherits Evented\r\n *\r\n * A class for making DOM elements draggable (including touch support).\r\n * Used internally for map and marker dragging. Only works for elements\r\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n *\r\n * @example\r\n * ```js\r\n * var draggable = new L.Draggable(elementToDrag);\r\n * draggable.enable();\r\n * ```\r\n */\r\n\r\nvar START = Browser.touch ? 'touchstart mousedown' : 'mousedown';\r\n\r\nexport var Draggable = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section\r\n\t\t// @aka Draggable options\r\n\t\t// @option clickTolerance: Number = 3\r\n\t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n\t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n\t\tclickTolerance: 3\r\n\t},\r\n\r\n\t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n\t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n\tinitialize: function (element, dragStartTarget, preventOutline, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._dragStartTarget = dragStartTarget || element;\r\n\t\tthis._preventOutline = preventOutline;\r\n\t},\r\n\r\n\t// @method enable()\r\n\t// Enables the dragging ability\r\n\tenable: function () {\r\n\t\tif (this._enabled) { return; }\r\n\r\n\t\tDomEvent.on(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = true;\r\n\t},\r\n\r\n\t// @method disable()\r\n\t// Disables the dragging ability\r\n\tdisable: function () {\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\t// If we're currently dragging this draggable,\r\n\t\t// disabling it counts as first ending the drag.\r\n\t\tif (Draggable._dragging === this) {\r\n\t\t\tthis.finishDrag(true);\r\n\t\t}\r\n\r\n\t\tDomEvent.off(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = false;\r\n\t\tthis._moved = false;\r\n\t},\r\n\r\n\t_onDown: function (e) {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\tthis._moved = false;\r\n\r\n\t\tif (DomUtil.hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length !== 1) {\r\n\t\t\t// Finish dragging to avoid conflict with touchZoom\r\n\t\t\tif (Draggable._dragging === this) {\r\n\t\t\t\tthis.finishDrag();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n\t\tDraggable._dragging = this;  // Prevent dragging multiple objects at once.\r\n\r\n\t\tif (this._preventOutline) {\r\n\t\t\tDomUtil.preventOutline(this._element);\r\n\t\t}\r\n\r\n\t\tDomUtil.disableImageDrag();\r\n\t\tDomUtil.disableTextSelection();\r\n\r\n\t\tif (this._moving) { return; }\r\n\r\n\t\t// @event down: Event\r\n\t\t// Fired when a drag is about to start.\r\n\t\tthis.fire('down');\r\n\r\n\t\tvar first = e.touches ? e.touches[0] : e,\r\n\t\t    sizedParent = DomUtil.getSizedParentNode(this._element);\r\n\r\n\t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n\t\tthis._startPos = DomUtil.getPosition(this._element);\r\n\r\n\t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n\t\tthis._parentScale = DomUtil.getScale(sizedParent);\r\n\r\n\t\tvar mouseevent = e.type === 'mousedown';\r\n\t\tDomEvent.on(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this);\r\n\t\tDomEvent.on(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this);\r\n\t},\r\n\r\n\t_onMove: function (e) {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\tthis._moved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n\t\t    offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n\t\tif (!offset.x && !offset.y) { return; }\r\n\t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n\t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n\t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n\t\t// and we can use the cached value for the scale.\r\n\t\toffset.x /= this._parentScale.x;\r\n\t\toffset.y /= this._parentScale.y;\r\n\r\n\t\tDomEvent.preventDefault(e);\r\n\r\n\t\tif (!this._moved) {\r\n\t\t\t// @event dragstart: Event\r\n\t\t\t// Fired when a drag starts\r\n\t\t\tthis.fire('dragstart');\r\n\r\n\t\t\tthis._moved = true;\r\n\r\n\t\t\tDomUtil.addClass(document.body, 'leaflet-dragging');\r\n\r\n\t\t\tthis._lastTarget = e.target || e.srcElement;\r\n\t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n\t\t\t// if necessary\r\n\t\t\tif (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {\r\n\t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n\t\t\t}\r\n\t\t\tDomUtil.addClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t}\r\n\r\n\t\tthis._newPos = this._startPos.add(offset);\r\n\t\tthis._moving = true;\r\n\r\n\t\tthis._lastEvent = e;\r\n\t\tthis._updatePosition();\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n\t\t// @event predrag: Event\r\n\t\t// Fired continuously during dragging *before* each corresponding\r\n\t\t// update of the element's position.\r\n\t\tthis.fire('predrag', e);\r\n\t\tDomUtil.setPosition(this._element, this._newPos);\r\n\r\n\t\t// @event drag: Event\r\n\t\t// Fired continuously during dragging.\r\n\t\tthis.fire('drag', e);\r\n\t},\r\n\r\n\t_onUp: function () {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\t\tthis.finishDrag();\r\n\t},\r\n\r\n\tfinishDrag: function (noInertia) {\r\n\t\tDomUtil.removeClass(document.body, 'leaflet-dragging');\r\n\r\n\t\tif (this._lastTarget) {\r\n\t\t\tDomUtil.removeClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t\tthis._lastTarget = null;\r\n\t\t}\r\n\r\n\t\tDomEvent.off(document, 'mousemove touchmove', this._onMove, this);\r\n\t\tDomEvent.off(document, 'mouseup touchend touchcancel', this._onUp, this);\r\n\r\n\t\tDomUtil.enableImageDrag();\r\n\t\tDomUtil.enableTextSelection();\r\n\r\n\t\tvar fireDragend = this._moved && this._moving;\r\n\r\n\t\tthis._moving = false;\r\n\t\tDraggable._dragging = false;\r\n\r\n\t\tif (fireDragend) {\r\n\t\t\t// @event dragend: DragEndEvent\r\n\t\t\t// Fired when the drag ends.\r\n\t\t\tthis.fire('dragend', {\r\n\t\t\t\tnoInertia: noInertia,\r\n\t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n});\r\n","import * as LineUtil from './LineUtil';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {toPoint} from './Point';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\n/*\r\n * @namespace PolyUtil\r\n * Various utility functions for polygon geometries.\r\n */\r\n\r\n/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n * performance. Note that polygon points needs different algorithm for clipping\r\n * than polyline, so there's a separate method for it.\r\n */\r\nexport function clipPolygon(points, bounds, round) {\r\n\tvar clippedPoints,\r\n\t    edges = [1, 4, 2, 8],\r\n\t    i, j, k,\r\n\t    a, b,\r\n\t    len, edge, p;\r\n\r\n\tfor (i = 0, len = points.length; i < len; i++) {\r\n\t\tpoints[i]._code = LineUtil._getBitCode(points[i], bounds);\r\n\t}\r\n\r\n\t// for each edge (left, bottom, right, top)\r\n\tfor (k = 0; k < 4; k++) {\r\n\t\tedge = edges[k];\r\n\t\tclippedPoints = [];\r\n\r\n\t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n\t\t\ta = points[i];\r\n\t\t\tb = points[j];\r\n\r\n\t\t\t// if a is inside the clip window\r\n\t\t\tif (!(a._code & edge)) {\r\n\t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n\t\t\t\tif (b._code & edge) {\r\n\t\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\t\tclippedPoints.push(p);\r\n\t\t\t\t}\r\n\t\t\t\tclippedPoints.push(a);\r\n\r\n\t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n\t\t\t} else if (!(b._code & edge)) {\r\n\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\tclippedPoints.push(p);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpoints = clippedPoints;\r\n\t}\r\n\r\n\treturn points;\r\n}\r\n\r\n/* @function polygonCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.\r\n */\r\nexport function polygonCenter(latlngs, crs) {\r\n\tvar i, j, p1, p2, f, area, x, y, center;\r\n\r\n\tif (!latlngs || latlngs.length === 0) {\r\n\t\tthrow new Error('latlngs not passed');\r\n\t}\r\n\r\n\tif (!LineUtil.isFlat(latlngs)) {\r\n\t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n\t\tlatlngs = latlngs[0];\r\n\t}\r\n\r\n\tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n\tvar bounds = toLatLngBounds(latlngs);\r\n\tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n\t// tests showed that below 1700 rounding errors are happening\r\n\tif (areaBounds < 1700) {\r\n\t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n\t\tcentroidLatLng = centroid(latlngs);\r\n\t}\r\n\r\n\tvar len = latlngs.length;\r\n\tvar points = [];\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tvar latlng = toLatLng(latlngs[i]);\r\n\t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n\t}\r\n\r\n\tarea = x = y = 0;\r\n\r\n\t// polygon centroid algorithm;\r\n\tfor (i = 0, j = len - 1; i < len; j = i++) {\r\n\t\tp1 = points[i];\r\n\t\tp2 = points[j];\r\n\r\n\t\tf = p1.y * p2.x - p2.y * p1.x;\r\n\t\tx += (p1.x + p2.x) * f;\r\n\t\ty += (p1.y + p2.y) * f;\r\n\t\tarea += f * 3;\r\n\t}\r\n\r\n\tif (area === 0) {\r\n\t\t// Polygon is so small that all points are on same pixel.\r\n\t\tcenter = points[0];\r\n\t} else {\r\n\t\tcenter = [x / area, y / area];\r\n\t}\r\n\r\n\tvar latlngCenter = crs.unproject(toPoint(center));\r\n\treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n}\r\n\r\n/* @function centroid(latlngs: LatLng[]): LatLng\r\n * Returns the 'center of mass' of the passed LatLngs.\r\n */\r\nexport function centroid(coords) {\r\n\tvar latSum = 0;\r\n\tvar lngSum = 0;\r\n\tvar len = 0;\r\n\tfor (var i = 0; i < coords.length; i++) {\r\n\t\tvar latlng = toLatLng(coords[i]);\r\n\t\tlatSum += latlng.lat;\r\n\t\tlngSum += latlng.lng;\r\n\t\tlen++;\r\n\t}\r\n\treturn toLatLng([latSum / len, lngSum / len]);\r\n}\r\n","import {Point, toPoint} from './Point';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {centroid} from './PolyUtil';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\n\r\n\r\n/*\r\n * @namespace LineUtil\r\n *\r\n * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n */\r\n\r\n// Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n// Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n// @function simplify(points: Point[], tolerance: Number): Point[]\r\n// Dramatically reduces the number of points in a polyline while retaining\r\n// its shape and returns a new array of simplified points, using the\r\n// [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm).\r\n// Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n// each zoom level and also reducing visual noise. tolerance affects the amount of\r\n// simplification (lesser value means higher quality but slower and with more points).\r\n// Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/).\r\nexport function simplify(points, tolerance) {\r\n\tif (!tolerance || !points.length) {\r\n\t\treturn points.slice();\r\n\t}\r\n\r\n\tvar sqTolerance = tolerance * tolerance;\r\n\r\n\t    // stage 1: vertex reduction\r\n\t    points = _reducePoints(points, sqTolerance);\r\n\r\n\t    // stage 2: Douglas-Peucker simplification\r\n\t    points = _simplifyDP(points, sqTolerance);\r\n\r\n\treturn points;\r\n}\r\n\r\n// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n// Returns the distance between point `p` and segment `p1` to `p2`.\r\nexport function pointToSegmentDistance(p, p1, p2) {\r\n\treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n}\r\n\r\n// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n// Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\nexport function closestPointOnSegment(p, p1, p2) {\r\n\treturn _sqClosestPointOnSegment(p, p1, p2);\r\n}\r\n\r\n// Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm\r\nfunction _simplifyDP(points, sqTolerance) {\r\n\r\n\tvar len = points.length,\r\n\t    ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n\t    markers = new ArrayConstructor(len);\r\n\r\n\t    markers[0] = markers[len - 1] = 1;\r\n\r\n\t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n\tvar i,\r\n\t    newPoints = [];\r\n\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tif (markers[i]) {\r\n\t\t\tnewPoints.push(points[i]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn newPoints;\r\n}\r\n\r\nfunction _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n\tvar maxSqDist = 0,\r\n\tindex, i, sqDist;\r\n\r\n\tfor (i = first + 1; i <= last - 1; i++) {\r\n\t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n\t\tif (sqDist > maxSqDist) {\r\n\t\t\tindex = i;\r\n\t\t\tmaxSqDist = sqDist;\r\n\t\t}\r\n\t}\r\n\r\n\tif (maxSqDist > sqTolerance) {\r\n\t\tmarkers[index] = 1;\r\n\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n\t}\r\n}\r\n\r\n// reduce points that are too close to each other to a single point\r\nfunction _reducePoints(points, sqTolerance) {\r\n\tvar reducedPoints = [points[0]];\r\n\r\n\tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n\t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n\t\t\treducedPoints.push(points[i]);\r\n\t\t\tprev = i;\r\n\t\t}\r\n\t}\r\n\tif (prev < len - 1) {\r\n\t\treducedPoints.push(points[len - 1]);\r\n\t}\r\n\treturn reducedPoints;\r\n}\r\n\r\nvar _lastCode;\r\n\r\n// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n// Clips the segment a to b by rectangular bounds with the\r\n// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n// (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n// points that are on the screen or near, increasing performance.\r\nexport function clipSegment(a, b, bounds, useLastCode, round) {\r\n\tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n\t    codeB = _getBitCode(b, bounds),\r\n\r\n\t    codeOut, p, newCode;\r\n\r\n\t    // save 2nd code to avoid calculating it on the next segment\r\n\t    _lastCode = codeB;\r\n\r\n\twhile (true) {\r\n\t\t// if a,b is inside the clip window (trivial accept)\r\n\t\tif (!(codeA | codeB)) {\r\n\t\t\treturn [a, b];\r\n\t\t}\r\n\r\n\t\t// if a,b is outside the clip window (trivial reject)\r\n\t\tif (codeA & codeB) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// other cases\r\n\t\tcodeOut = codeA || codeB;\r\n\t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n\t\tnewCode = _getBitCode(p, bounds);\r\n\r\n\t\tif (codeOut === codeA) {\r\n\t\t\ta = p;\r\n\t\t\tcodeA = newCode;\r\n\t\t} else {\r\n\t\t\tb = p;\r\n\t\t\tcodeB = newCode;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function _getEdgeIntersection(a, b, code, bounds, round) {\r\n\tvar dx = b.x - a.x,\r\n\t    dy = b.y - a.y,\r\n\t    min = bounds.min,\r\n\t    max = bounds.max,\r\n\t    x, y;\r\n\r\n\tif (code & 8) { // top\r\n\t\tx = a.x + dx * (max.y - a.y) / dy;\r\n\t\ty = max.y;\r\n\r\n\t} else if (code & 4) { // bottom\r\n\t\tx = a.x + dx * (min.y - a.y) / dy;\r\n\t\ty = min.y;\r\n\r\n\t} else if (code & 2) { // right\r\n\t\tx = max.x;\r\n\t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n\t} else if (code & 1) { // left\r\n\t\tx = min.x;\r\n\t\ty = a.y + dy * (min.x - a.x) / dx;\r\n\t}\r\n\r\n\treturn new Point(x, y, round);\r\n}\r\n\r\nexport function _getBitCode(p, bounds) {\r\n\tvar code = 0;\r\n\r\n\tif (p.x < bounds.min.x) { // left\r\n\t\tcode |= 1;\r\n\t} else if (p.x > bounds.max.x) { // right\r\n\t\tcode |= 2;\r\n\t}\r\n\r\n\tif (p.y < bounds.min.y) { // bottom\r\n\t\tcode |= 4;\r\n\t} else if (p.y > bounds.max.y) { // top\r\n\t\tcode |= 8;\r\n\t}\r\n\r\n\treturn code;\r\n}\r\n\r\n// square distance (to avoid unnecessary Math.sqrt calls)\r\nfunction _sqDist(p1, p2) {\r\n\tvar dx = p2.x - p1.x,\r\n\t    dy = p2.y - p1.y;\r\n\treturn dx * dx + dy * dy;\r\n}\r\n\r\n// return closest point on segment or distance to that point\r\nexport function _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n\tvar x = p1.x,\r\n\t    y = p1.y,\r\n\t    dx = p2.x - x,\r\n\t    dy = p2.y - y,\r\n\t    dot = dx * dx + dy * dy,\r\n\t    t;\r\n\r\n\tif (dot > 0) {\r\n\t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n\t\tif (t > 1) {\r\n\t\t\tx = p2.x;\r\n\t\t\ty = p2.y;\r\n\t\t} else if (t > 0) {\r\n\t\t\tx += dx * t;\r\n\t\t\ty += dy * t;\r\n\t\t}\r\n\t}\r\n\r\n\tdx = p.x - x;\r\n\tdy = p.y - y;\r\n\r\n\treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n}\r\n\r\n\r\n// @function isFlat(latlngs: LatLng[]): Boolean\r\n// Returns true if `latlngs` is a flat array, false is nested.\r\nexport function isFlat(latlngs) {\r\n\treturn !Util.isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n}\r\n\r\nexport function _flat(latlngs) {\r\n\tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n\treturn isFlat(latlngs);\r\n}\r\n\r\n/* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.\r\n */\r\nexport function polylineCenter(latlngs, crs) {\r\n\tvar i, halfDist, segDist, dist, p1, p2, ratio, center;\r\n\r\n\tif (!latlngs || latlngs.length === 0) {\r\n\t\tthrow new Error('latlngs not passed');\r\n\t}\r\n\r\n\tif (!isFlat(latlngs)) {\r\n\t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n\t\tlatlngs = latlngs[0];\r\n\t}\r\n\r\n\tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n\tvar bounds = toLatLngBounds(latlngs);\r\n\tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n\t// tests showed that below 1700 rounding errors are happening\r\n\tif (areaBounds < 1700) {\r\n\t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n\t\tcentroidLatLng = centroid(latlngs);\r\n\t}\r\n\r\n\tvar len = latlngs.length;\r\n\tvar points = [];\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tvar latlng = toLatLng(latlngs[i]);\r\n\t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n\t}\r\n\r\n\tfor (i = 0, halfDist = 0; i < len - 1; i++) {\r\n\t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\r\n\t}\r\n\r\n\t// The line is so small in the current view that all points are on the same pixel.\r\n\tif (halfDist === 0) {\r\n\t\tcenter = points[0];\r\n\t} else {\r\n\t\tfor (i = 0, dist = 0; i < len - 1; i++) {\r\n\t\t\tp1 = points[i];\r\n\t\t\tp2 = points[i + 1];\r\n\t\t\tsegDist = p1.distanceTo(p2);\r\n\t\t\tdist += segDist;\r\n\r\n\t\t\tif (dist > halfDist) {\r\n\t\t\t\tratio = (dist - halfDist) / segDist;\r\n\t\t\t\tcenter = [\r\n\t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\r\n\t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\r\n\t\t\t\t];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar latlngCenter = crs.unproject(toPoint(center));\r\n\treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n}\r\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @section\r\n * Leaflet comes with a set of already defined Projections out of the box:\r\n *\r\n * @projection L.Projection.LonLat\r\n *\r\n * Equirectangular, or Plate Carree projection — the most simple projection,\r\n * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n * `EPSG:4326` and `Simple` CRS.\r\n */\r\n\r\nexport var LonLat = {\r\n\tproject: function (latlng) {\r\n\t\treturn new Point(latlng.lng, latlng.lat);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\treturn new LatLng(point.y, point.x);\r\n\t},\r\n\r\n\tbounds: new Bounds([-180, -90], [180, 90])\r\n};\r\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.Mercator\r\n *\r\n * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n */\r\n\r\nexport var Mercator = {\r\n\tR: 6378137,\r\n\tR_MINOR: 6356752.314245179,\r\n\r\n\tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    r = this.R,\r\n\t\t    y = latlng.lat * d,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    con = e * Math.sin(y);\r\n\r\n\t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n\t\treturn new Point(latlng.lng * d * r, y);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI,\r\n\t\t    r = this.R,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    ts = Math.exp(-point.y / r),\r\n\t\t    phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n\t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n\t\t\tcon = e * Math.sin(phi);\r\n\t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n\t\t\tphi += dphi;\r\n\t\t}\r\n\r\n\t\treturn new LatLng(phi * d, point.x * d / r);\r\n\t}\r\n};\r\n","import {Earth} from './CRS.Earth';\r\nimport {Mercator} from '../projection/Projection.Mercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3395\r\n *\r\n * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n */\r\nexport var EPSG3395 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3395',\r\n\tprojection: Mercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n","import {Earth} from './CRS.Earth';\r\nimport {LonLat} from '../projection/Projection.LonLat';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG4326\r\n *\r\n * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n *\r\n * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n * which is a breaking change from 0.7.x behaviour.  If you are using a `TileLayer`\r\n * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n */\r\n\r\nexport var EPSG4326 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:4326',\r\n\tprojection: LonLat,\r\n\ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n});\r\n","import {CRS} from './CRS';\nimport {LonLat} from '../projection/Projection.LonLat';\nimport {toTransformation} from '../../geometry/Transformation';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Simple\n *\n * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n * axis should still be inverted (going from bottom to top). `distance()` returns\n * simple euclidean distance.\n */\n\nexport var Simple = Util.extend({}, CRS, {\n\tprojection: LonLat,\n\ttransformation: toTransformation(1, 0, -1, 0),\n\n\tscale: function (zoom) {\n\t\treturn Math.pow(2, zoom);\n\t},\n\n\tzoom: function (scale) {\n\t\treturn Math.log(scale) / Math.LN2;\n\t},\n\n\tdistance: function (latlng1, latlng2) {\n\t\tvar dx = latlng2.lng - latlng1.lng,\n\t\t    dy = latlng2.lat - latlng1.lat;\n\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\n\tinfinite: true\n});\n","import {Evented} from '../core/Events';\nimport {Map} from '../map/Map';\nimport * as Util from '../core/Util';\n\n/*\n * @class Layer\n * @inherits Evented\n * @aka L.Layer\n * @aka ILayer\n *\n * A set of methods from the Layer base class that all Leaflet layers use.\n * Inherits all methods, options and events from `L.Evented`.\n *\n * @example\n *\n * ```js\n * var layer = L.marker(latlng).addTo(map);\n * layer.addTo(map);\n * layer.remove();\n * ```\n *\n * @event add: Event\n * Fired after the layer is added to a map\n *\n * @event remove: Event\n * Fired after the layer is removed from a map\n */\n\n\nexport var Layer = Evented.extend({\n\n\t// Classes extending `L.Layer` will inherit the following options:\n\toptions: {\n\t\t// @option pane: String = 'overlayPane'\n\t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n\t\tpane: 'overlayPane',\n\n\t\t// @option attribution: String = null\n\t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n\t\tattribution: null,\n\n\t\tbubblingMouseEvents: true\n\t},\n\n\t/* @section\n\t * Classes extending `L.Layer` will inherit the following methods:\n\t *\n\t * @method addTo(map: Map|LayerGroup): this\n\t * Adds the layer to the given map or layer group.\n\t */\n\taddTo: function (map) {\n\t\tmap.addLayer(this);\n\t\treturn this;\n\t},\n\n\t// @method remove: this\n\t// Removes the layer from the map it is currently active on.\n\tremove: function () {\n\t\treturn this.removeFrom(this._map || this._mapToAdd);\n\t},\n\n\t// @method removeFrom(map: Map): this\n\t// Removes the layer from the given map\n\t//\n\t// @alternative\n\t// @method removeFrom(group: LayerGroup): this\n\t// Removes the layer from the given `LayerGroup`\n\tremoveFrom: function (obj) {\n\t\tif (obj) {\n\t\t\tobj.removeLayer(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getPane(name? : String): HTMLElement\n\t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n\tgetPane: function (name) {\n\t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n\t},\n\n\taddInteractiveTarget: function (targetEl) {\n\t\tthis._map._targets[Util.stamp(targetEl)] = this;\n\t\treturn this;\n\t},\n\n\tremoveInteractiveTarget: function (targetEl) {\n\t\tdelete this._map._targets[Util.stamp(targetEl)];\n\t\treturn this;\n\t},\n\n\t// @method getAttribution: String\n\t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n\tgetAttribution: function () {\n\t\treturn this.options.attribution;\n\t},\n\n\t_layerAdd: function (e) {\n\t\tvar map = e.target;\n\n\t\t// check in case layer gets added and then removed before the map is ready\n\t\tif (!map.hasLayer(this)) { return; }\n\n\t\tthis._map = map;\n\t\tthis._zoomAnimated = map._zoomAnimated;\n\n\t\tif (this.getEvents) {\n\t\t\tvar events = this.getEvents();\n\t\t\tmap.on(events, this);\n\t\t\tthis.once('remove', function () {\n\t\t\t\tmap.off(events, this);\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.onAdd(map);\n\n\t\tthis.fire('add');\n\t\tmap.fire('layeradd', {layer: this});\n\t}\n});\n\n/* @section Extension methods\n * @uninheritable\n *\n * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n *\n * @method onAdd(map: Map): this\n * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n *\n * @method onRemove(map: Map): this\n * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n *\n * @method getEvents(): Object\n * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n *\n * @method getAttribution(): String\n * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n *\n * @method beforeAdd(map: Map): this\n * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n */\n\n\n/* @namespace Map\n * @section Layer events\n *\n * @event layeradd: LayerEvent\n * Fired when a new layer is added to the map.\n *\n * @event layerremove: LayerEvent\n * Fired when some layer is removed from the map\n *\n * @section Methods for Layers and Controls\n */\nMap.include({\n\t// @method addLayer(layer: Layer): this\n\t// Adds the given layer to the map\n\taddLayer: function (layer) {\n\t\tif (!layer._layerAdd) {\n\t\t\tthrow new Error('The provided object is not a Layer.');\n\t\t}\n\n\t\tvar id = Util.stamp(layer);\n\t\tif (this._layers[id]) { return this; }\n\t\tthis._layers[id] = layer;\n\n\t\tlayer._mapToAdd = this;\n\n\t\tif (layer.beforeAdd) {\n\t\t\tlayer.beforeAdd(this);\n\t\t}\n\n\t\tthis.whenReady(layer._layerAdd, layer);\n\n\t\treturn this;\n\t},\n\n\t// @method removeLayer(layer: Layer): this\n\t// Removes the given layer from the map.\n\tremoveLayer: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (!this._layers[id]) { return this; }\n\n\t\tif (this._loaded) {\n\t\t\tlayer.onRemove(this);\n\t\t}\n\n\t\tdelete this._layers[id];\n\n\t\tif (this._loaded) {\n\t\t\tthis.fire('layerremove', {layer: layer});\n\t\t\tlayer.fire('remove');\n\t\t}\n\n\t\tlayer._map = layer._mapToAdd = null;\n\n\t\treturn this;\n\t},\n\n\t// @method hasLayer(layer: Layer): Boolean\n\t// Returns `true` if the given layer is currently added to the map\n\thasLayer: function (layer) {\n\t\treturn Util.stamp(layer) in this._layers;\n\t},\n\n\t/* @method eachLayer(fn: Function, context?: Object): this\n\t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n\t * ```\n\t * map.eachLayer(function(layer){\n\t *     layer.bindPopup('Hello');\n\t * });\n\t * ```\n\t */\n\teachLayer: function (method, context) {\n\t\tfor (var i in this._layers) {\n\t\t\tmethod.call(context, this._layers[i]);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_addLayers: function (layers) {\n\t\tlayers = layers ? (Util.isArray(layers) ? layers : [layers]) : [];\n\n\t\tfor (var i = 0, len = layers.length; i < len; i++) {\n\t\t\tthis.addLayer(layers[i]);\n\t\t}\n\t},\n\n\t_addZoomLimit: function (layer) {\n\t\tif (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n\t\t\tthis._zoomBoundLayers[Util.stamp(layer)] = layer;\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_removeZoomLimit: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (this._zoomBoundLayers[id]) {\n\t\t\tdelete this._zoomBoundLayers[id];\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_updateZoomLevels: function () {\n\t\tvar minZoom = Infinity,\n\t\t    maxZoom = -Infinity,\n\t\t    oldZoomSpan = this._getZoomSpan();\n\n\t\tfor (var i in this._zoomBoundLayers) {\n\t\t\tvar options = this._zoomBoundLayers[i].options;\n\n\t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n\t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n\t\t}\n\n\t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n\t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n\t\t// @section Map state change events\n\t\t// @event zoomlevelschange: Event\n\t\t// Fired when the number of zoomlevels on the map is changed due\n\t\t// to adding or removing a layer.\n\t\tif (oldZoomSpan !== this._getZoomSpan()) {\n\t\t\tthis.fire('zoomlevelschange');\n\t\t}\n\n\t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n\t\t\tthis.setZoom(this._layersMaxZoom);\n\t\t}\n\t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n\t\t\tthis.setZoom(this._layersMinZoom);\n\t\t}\n\t}\n});\n","import {CRS} from './CRS';\nimport {Earth} from './CRS.Earth';\nimport {EPSG3395} from './CRS.EPSG3395';\nimport {EPSG3857, EPSG900913} from './CRS.EPSG3857';\nimport {EPSG4326} from './CRS.EPSG4326';\nimport {Simple} from './CRS.Simple';\n\nCRS.Earth = Earth;\nCRS.EPSG3395 = EPSG3395;\nCRS.EPSG3857 = EPSG3857;\nCRS.EPSG900913 = EPSG900913;\nCRS.EPSG4326 = EPSG4326;\nCRS.Simple = Simple;\n\nexport {CRS};\n","\r\nimport {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class LayerGroup\r\n * @aka L.LayerGroup\r\n * @inherits Interactive layer\r\n *\r\n * Used to group several layers and handle them as one. If you add it to the map,\r\n * any layers added or removed from the group will be added/removed on the map as\r\n * well. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.layerGroup([marker1, marker2])\r\n * \t.addLayer(polyline)\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var LayerGroup = Layer.extend({\r\n\r\n\tinitialize: function (layers, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (layers) {\r\n\t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n\t\t\t\tthis.addLayer(layers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addLayer(layer: Layer): this\r\n\t// Adds the given layer to the group.\r\n\taddLayer: function (layer) {\r\n\t\tvar id = this.getLayerId(layer);\r\n\r\n\t\tthis._layers[id] = layer;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.addLayer(layer);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Removes the given layer from the group.\r\n\t// @alternative\r\n\t// @method removeLayer(id: Number): this\r\n\t// Removes the layer with the given internal ID from the group.\r\n\tremoveLayer: function (layer) {\r\n\t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n\t\tif (this._map && this._layers[id]) {\r\n\t\t\tthis._map.removeLayer(this._layers[id]);\r\n\t\t}\r\n\r\n\t\tdelete this._layers[id];\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method hasLayer(layer: Layer): Boolean\r\n\t// Returns `true` if the given layer is currently added to the group.\r\n\t// @alternative\r\n\t// @method hasLayer(id: Number): Boolean\r\n\t// Returns `true` if the given internal ID is currently added to the group.\r\n\thasLayer: function (layer) {\r\n\t\tvar layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);\r\n\t\treturn layerId in this._layers;\r\n\t},\r\n\r\n\t// @method clearLayers(): this\r\n\t// Removes all the layers from the group.\r\n\tclearLayers: function () {\r\n\t\treturn this.eachLayer(this.removeLayer, this);\r\n\t},\r\n\r\n\t// @method invoke(methodName: String, …): this\r\n\t// Calls `methodName` on every layer contained in this group, passing any\r\n\t// additional parameters. Has no effect if the layers contained do not\r\n\t// implement `methodName`.\r\n\tinvoke: function (methodName) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n\t\t    i, layer;\r\n\r\n\t\tfor (i in this._layers) {\r\n\t\t\tlayer = this._layers[i];\r\n\r\n\t\t\tif (layer[methodName]) {\r\n\t\t\t\tlayer[methodName].apply(layer, args);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis.eachLayer(map.addLayer, map);\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tthis.eachLayer(map.removeLayer, map);\r\n\t},\r\n\r\n\t// @method eachLayer(fn: Function, context?: Object): this\r\n\t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n\t// ```js\r\n\t// group.eachLayer(function (layer) {\r\n\t// \tlayer.bindPopup('Hello');\r\n\t// });\r\n\t// ```\r\n\teachLayer: function (method, context) {\r\n\t\tfor (var i in this._layers) {\r\n\t\t\tmethod.call(context, this._layers[i]);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getLayer(id: Number): Layer\r\n\t// Returns the layer with the given internal ID.\r\n\tgetLayer: function (id) {\r\n\t\treturn this._layers[id];\r\n\t},\r\n\r\n\t// @method getLayers(): Layer[]\r\n\t// Returns an array of all the layers added to the group.\r\n\tgetLayers: function () {\r\n\t\tvar layers = [];\r\n\t\tthis.eachLayer(layers.push, layers);\r\n\t\treturn layers;\r\n\t},\r\n\r\n\t// @method setZIndex(zIndex: Number): this\r\n\t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n\tsetZIndex: function (zIndex) {\r\n\t\treturn this.invoke('setZIndex', zIndex);\r\n\t},\r\n\r\n\t// @method getLayerId(layer: Layer): Number\r\n\t// Returns the internal ID for a layer\r\n\tgetLayerId: function (layer) {\r\n\t\treturn Util.stamp(layer);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n// Create a layer group, optionally given an initial set of layers and an `options` object.\r\nexport var layerGroup = function (layers, options) {\r\n\treturn new LayerGroup(layers, options);\r\n};\r\n","import {LayerGroup} from './LayerGroup';\r\nimport {LatLngBounds} from '../geo/LatLngBounds';\r\n\r\n/*\r\n * @class FeatureGroup\r\n * @aka L.FeatureGroup\r\n * @inherits LayerGroup\r\n *\r\n * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n *  * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n *  * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n * handler, it will handle events from any of the layers. This includes mouse events\r\n * and custom events.\r\n *  * Has `layeradd` and `layerremove` events\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.featureGroup([marker1, marker2, polyline])\r\n * \t.bindPopup('Hello world!')\r\n * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var FeatureGroup = LayerGroup.extend({\r\n\r\n\taddLayer: function (layer) {\r\n\t\tif (this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlayer.addEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n\t\t// @event layeradd: LayerEvent\r\n\t\t// Fired when a layer is added to this `FeatureGroup`\r\n\t\treturn this.fire('layeradd', {layer: layer});\r\n\t},\r\n\r\n\tremoveLayer: function (layer) {\r\n\t\tif (!this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif (layer in this._layers) {\r\n\t\t\tlayer = this._layers[layer];\r\n\t\t}\r\n\r\n\t\tlayer.removeEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n\t\t// @event layerremove: LayerEvent\r\n\t\t// Fired when a layer is removed from this `FeatureGroup`\r\n\t\treturn this.fire('layerremove', {layer: layer});\r\n\t},\r\n\r\n\t// @method setStyle(style: Path options): this\r\n\t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.invoke('setStyle', style);\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer group to the top of all other layers\r\n\tbringToFront: function () {\r\n\t\treturn this.invoke('bringToFront');\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer group to the back of all other layers\r\n\tbringToBack: function () {\r\n\t\treturn this.invoke('bringToBack');\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n\tgetBounds: function () {\r\n\t\tvar bounds = new LatLngBounds();\r\n\r\n\t\tfor (var id in this._layers) {\r\n\t\t\tvar layer = this._layers[id];\r\n\t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n\t\t}\r\n\t\treturn bounds;\r\n\t}\r\n});\r\n\r\n// @factory L.featureGroup(layers?: Layer[], options?: Object)\r\n// Create a feature group, optionally given an initial set of layers and an `options` object.\r\nexport var featureGroup = function (layers, options) {\r\n\treturn new FeatureGroup(layers, options);\r\n};\r\n","import {Class} from '../../core/Class';\r\nimport {setOptions} from '../../core/Util';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport Browser from '../../core/Browser';\r\n\r\n/*\r\n * @class Icon\r\n * @aka L.Icon\r\n *\r\n * Represents an icon to provide when creating a marker.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var myIcon = L.icon({\r\n *     iconUrl: 'my-icon.png',\r\n *     iconRetinaUrl: 'my-icon@2x.png',\r\n *     iconSize: [38, 95],\r\n *     iconAnchor: [22, 94],\r\n *     popupAnchor: [-3, -76],\r\n *     shadowUrl: 'my-icon-shadow.png',\r\n *     shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n *     shadowSize: [68, 95],\r\n *     shadowAnchor: [22, 94]\r\n * });\r\n *\r\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n * ```\r\n *\r\n * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n *\r\n */\r\n\r\nexport var Icon = Class.extend({\r\n\r\n\t/* @section\r\n\t * @aka Icon options\r\n\t *\r\n\t * @option iconUrl: String = null\r\n\t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n\t *\r\n\t * @option iconRetinaUrl: String = null\r\n\t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n\t * script path). Used for Retina screen devices.\r\n\t *\r\n\t * @option iconSize: Point = null\r\n\t * Size of the icon image in pixels.\r\n\t *\r\n\t * @option iconAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n\t * will be aligned so that this point is at the marker's geographical location. Centered\r\n\t * by default if size is specified, also can be set in CSS with negative margins.\r\n\t *\r\n\t * @option popupAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option tooltipAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option shadowUrl: String = null\r\n\t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n\t *\r\n\t * @option shadowRetinaUrl: String = null\r\n\t *\r\n\t * @option shadowSize: Point = null\r\n\t * Size of the shadow image in pixels.\r\n\t *\r\n\t * @option shadowAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n\t * as iconAnchor if not specified).\r\n\t *\r\n\t * @option className: String = ''\r\n\t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n\t */\r\n\r\n\toptions: {\r\n\t\tpopupAnchor: [0, 0],\r\n\t\ttooltipAnchor: [0, 0],\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n\t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n\t// styled according to the options.\r\n\tcreateIcon: function (oldIcon) {\r\n\t\treturn this._createIcon('icon', oldIcon);\r\n\t},\r\n\r\n\t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n\t// As `createIcon`, but for the shadow beneath it.\r\n\tcreateShadow: function (oldIcon) {\r\n\t\treturn this._createIcon('shadow', oldIcon);\r\n\t},\r\n\r\n\t_createIcon: function (name, oldIcon) {\r\n\t\tvar src = this._getIconUrl(name);\r\n\r\n\t\tif (!src) {\r\n\t\t\tif (name === 'icon') {\r\n\t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n\t\tthis._setIconStyles(img, name);\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\treturn img;\r\n\t},\r\n\r\n\t_setIconStyles: function (img, name) {\r\n\t\tvar options = this.options;\r\n\t\tvar sizeOption = options[name + 'Size'];\r\n\r\n\t\tif (typeof sizeOption === 'number') {\r\n\t\t\tsizeOption = [sizeOption, sizeOption];\r\n\t\t}\r\n\r\n\t\tvar size = point(sizeOption),\r\n\t\t    anchor = point(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n\t\t            size && size.divideBy(2, true));\r\n\r\n\t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n\t\tif (anchor) {\r\n\t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n\t\t\timg.style.marginTop  = (-anchor.y) + 'px';\r\n\t\t}\r\n\r\n\t\tif (size) {\r\n\t\t\timg.style.width  = size.x + 'px';\r\n\t\t\timg.style.height = size.y + 'px';\r\n\t\t}\r\n\t},\r\n\r\n\t_createImg: function (src, el) {\r\n\t\tel = el || document.createElement('img');\r\n\t\tel.src = src;\r\n\t\treturn el;\r\n\t},\r\n\r\n\t_getIconUrl: function (name) {\r\n\t\treturn Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.icon(options: Icon options)\r\n// Creates an icon instance with the given options.\r\nexport function icon(options) {\r\n\treturn new Icon(options);\r\n}\r\n","import {Icon} from './Icon';\nimport * as DomUtil from '../../dom/DomUtil';\n\n/*\n * @miniclass Icon.Default (Icon)\n * @aka L.Icon.Default\n * @section\n *\n * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n * no icon is specified. Points to the blue marker image distributed with Leaflet\n * releases.\n *\n * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n * (which is a set of `Icon options`).\n *\n * If you want to _completely_ replace the default icon, override the\n * `L.Marker.prototype.options.icon` with your own icon instead.\n */\n\nexport var IconDefault = Icon.extend({\n\n\toptions: {\n\t\ticonUrl:       'marker-icon.png',\n\t\ticonRetinaUrl: 'marker-icon-2x.png',\n\t\tshadowUrl:     'marker-shadow.png',\n\t\ticonSize:    [25, 41],\n\t\ticonAnchor:  [12, 41],\n\t\tpopupAnchor: [1, -34],\n\t\ttooltipAnchor: [16, -28],\n\t\tshadowSize:  [41, 41]\n\t},\n\n\t_getIconUrl: function (name) {\n\t\tif (typeof IconDefault.imagePath !== 'string') {\t// Deprecated, backwards-compatibility only\n\t\t\tIconDefault.imagePath = this._detectIconPath();\n\t\t}\n\n\t\t// @option imagePath: String\n\t\t// `Icon.Default` will try to auto-detect the location of the\n\t\t// blue icon images. If you are placing these images in a non-standard\n\t\t// way, set this option to point to the right path.\n\t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n\t},\n\n\t_stripUrl: function (path) {\t// separate function to use in tests\n\t\tvar strip = function (str, re, idx) {\n\t\t\tvar match = re.exec(str);\n\t\t\treturn match && match[idx];\n\t\t};\n\t\tpath = strip(path, /^url\\((['\"])?(.+)\\1\\)$/, 2);\n\t\treturn path && strip(path, /^(.*)marker-icon\\.png$/, 1);\n\t},\n\n\t_detectIconPath: function () {\n\t\tvar el = DomUtil.create('div',  'leaflet-default-icon-path', document.body);\n\t\tvar path = DomUtil.getStyle(el, 'background-image') ||\n\t\t           DomUtil.getStyle(el, 'backgroundImage');\t// IE8\n\n\t\tdocument.body.removeChild(el);\n\t\tpath = this._stripUrl(path);\n\t\tif (path) { return path; }\n\t\tvar link = document.querySelector('link[href$=\"leaflet.css\"]');\n\t\tif (!link) { return ''; }\n\t\treturn link.href.substring(0, link.href.length - 'leaflet.css'.length - 1);\n\t}\n});\n","import {Handler} from '../../core/Handler';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Draggable} from '../../dom/Draggable';\nimport {toBounds} from '../../geometry/Bounds';\nimport {toPoint} from '../../geometry/Point';\nimport {requestAnimFrame, cancelAnimFrame} from '../../core/Util';\n\n/*\n * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n */\n\n\n/* @namespace Marker\n * @section Interaction handlers\n *\n * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n *\n * ```js\n * marker.dragging.disable();\n * ```\n *\n * @property dragging: Handler\n * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n */\n\nexport var MarkerDrag = Handler.extend({\n\tinitialize: function (marker) {\n\t\tthis._marker = marker;\n\t},\n\n\taddHooks: function () {\n\t\tvar icon = this._marker._icon;\n\n\t\tif (!this._draggable) {\n\t\t\tthis._draggable = new Draggable(icon, icon, true);\n\t\t}\n\n\t\tthis._draggable.on({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).enable();\n\n\t\tDomUtil.addClass(icon, 'leaflet-marker-draggable');\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._draggable.off({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).disable();\n\n\t\tif (this._marker._icon) {\n\t\t\tDomUtil.removeClass(this._marker._icon, 'leaflet-marker-draggable');\n\t\t}\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\t_adjustPan: function (e) {\n\t\tvar marker = this._marker,\n\t\t    map = marker._map,\n\t\t    speed = this._marker.options.autoPanSpeed,\n\t\t    padding = this._marker.options.autoPanPadding,\n\t\t    iconPos = DomUtil.getPosition(marker._icon),\n\t\t    bounds = map.getPixelBounds(),\n\t\t    origin = map.getPixelOrigin();\n\n\t\tvar panBounds = toBounds(\n\t\t\tbounds.min._subtract(origin).add(padding),\n\t\t\tbounds.max._subtract(origin).subtract(padding)\n\t\t);\n\n\t\tif (!panBounds.contains(iconPos)) {\n\t\t\t// Compute incremental movement\n\t\t\tvar movement = toPoint(\n\t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n\t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n\t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n\t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n\t\t\t).multiplyBy(speed);\n\n\t\t\tmap.panBy(movement, {animate: false});\n\n\t\t\tthis._draggable._newPos._add(movement);\n\t\t\tthis._draggable._startPos._add(movement);\n\n\t\t\tDomUtil.setPosition(marker._icon, this._draggable._newPos);\n\t\t\tthis._onDrag(e);\n\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDragStart: function () {\n\t\t// @section Dragging events\n\t\t// @event dragstart: Event\n\t\t// Fired when the user starts dragging the marker.\n\n\t\t// @event movestart: Event\n\t\t// Fired when the marker starts moving (because of dragging).\n\n\t\tthis._oldLatLng = this._marker.getLatLng();\n\n\t\t// When using ES6 imports it could not be set when `Popup` was not imported as well\n\t\tthis._marker.closePopup && this._marker.closePopup();\n\n\t\tthis._marker\n\t\t\t.fire('movestart')\n\t\t\t.fire('dragstart');\n\t},\n\n\t_onPreDrag: function (e) {\n\t\tif (this._marker.options.autoPan) {\n\t\t\tcancelAnimFrame(this._panRequest);\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tvar marker = this._marker,\n\t\t    shadow = marker._shadow,\n\t\t    iconPos = DomUtil.getPosition(marker._icon),\n\t\t    latlng = marker._map.layerPointToLatLng(iconPos);\n\n\t\t// update shadow position\n\t\tif (shadow) {\n\t\t\tDomUtil.setPosition(shadow, iconPos);\n\t\t}\n\n\t\tmarker._latlng = latlng;\n\t\te.latlng = latlng;\n\t\te.oldLatLng = this._oldLatLng;\n\n\t\t// @event drag: Event\n\t\t// Fired repeatedly while the user drags the marker.\n\t\tmarker\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_onDragEnd: function (e) {\n\t\t// @event dragend: DragEndEvent\n\t\t// Fired when the user stops dragging the marker.\n\n\t\t cancelAnimFrame(this._panRequest);\n\n\t\t// @event moveend: Event\n\t\t// Fired when the marker stops moving (because of dragging).\n\t\tdelete this._oldLatLng;\n\t\tthis._marker\n\t\t    .fire('moveend')\n\t\t    .fire('dragend', e);\n\t}\n});\n","import {Layer} from '../Layer';\r\nimport {IconDefault} from './Icon.Default';\r\nimport * as Util from '../../core/Util';\r\nimport {toLatLng as latLng} from '../../geo/LatLng';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport {MarkerDrag} from './Marker.Drag';\r\n\r\n/*\r\n * @class Marker\r\n * @inherits Interactive layer\r\n * @aka L.Marker\r\n * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.marker([50.5, 30.5]).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var Marker = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka Marker options\r\n\toptions: {\r\n\t\t// @option icon: Icon = *\r\n\t\t// Icon instance to use for rendering the marker.\r\n\t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n\t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n\t\ticon: new IconDefault(),\r\n\r\n\t\t// Option inherited from \"Interactive layer\" abstract class\r\n\t\tinteractive: true,\r\n\r\n\t\t// @option keyboard: Boolean = true\r\n\t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n\t\tkeyboard: true,\r\n\r\n\t\t// @option title: String = ''\r\n\t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n\t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n\t\ttitle: '',\r\n\r\n\t\t// @option alt: String = 'Marker'\r\n\t\t// Text for the `alt` attribute of the icon image.\r\n\t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n\t\talt: 'Marker',\r\n\r\n\t\t// @option zIndexOffset: Number = 0\r\n\t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n\t\tzIndexOffset: 0,\r\n\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the marker.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option riseOnHover: Boolean = false\r\n\t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n\t\triseOnHover: false,\r\n\r\n\t\t// @option riseOffset: Number = 250\r\n\t\t// The z-index offset used for the `riseOnHover` feature.\r\n\t\triseOffset: 250,\r\n\r\n\t\t// @option pane: String = 'markerPane'\r\n\t\t// `Map pane` where the markers icon will be added.\r\n\t\tpane: 'markerPane',\r\n\r\n\t\t// @option shadowPane: String = 'shadowPane'\r\n\t\t// `Map pane` where the markers shadow will be added.\r\n\t\tshadowPane: 'shadowPane',\r\n\r\n\t\t// @option bubblingMouseEvents: Boolean = false\r\n\t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n\t\tbubblingMouseEvents: false,\r\n\r\n\t\t// @option autoPanOnFocus: Boolean = true\r\n\t\t// When `true`, the map will pan whenever the marker is focused (via\r\n\t\t// e.g. pressing `tab` on the keyboard) to ensure the marker is\r\n\t\t// visible within the map's bounds\r\n\t\tautoPanOnFocus: true,\r\n\r\n\t\t// @section Draggable marker options\r\n\t\t// @option draggable: Boolean = false\r\n\t\t// Whether the marker is draggable with mouse/touch or not.\r\n\t\tdraggable: false,\r\n\r\n\t\t// @option autoPan: Boolean = false\r\n\t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n\t\tautoPan: false,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(50, 50)\r\n\t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n\t\t// map edge to start panning the map.\r\n\t\tautoPanPadding: [50, 50],\r\n\r\n\t\t// @option autoPanSpeed: Number = 10\r\n\t\t// Number of pixels the map should pan by.\r\n\t\tautoPanSpeed: 10\r\n\t},\r\n\r\n\t/* @section\r\n\t *\r\n\t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n\t */\r\n\r\n\tinitialize: function (latlng, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t\tthis._latlng = latLng(latlng);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._initIcon();\r\n\t\tthis.update();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (this.dragging && this.dragging.enabled()) {\r\n\t\t\tthis.options.draggable = true;\r\n\t\t\tthis.dragging.removeHooks();\r\n\t\t}\r\n\t\tdelete this.dragging;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._removeIcon();\r\n\t\tthis._removeShadow();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\treturn {\r\n\t\t\tzoom: this.update,\r\n\t\t\tviewreset: this.update\r\n\t\t};\r\n\t},\r\n\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the current geographical position of the marker.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Changes the marker position to the given point.\r\n\tsetLatLng: function (latlng) {\r\n\t\tvar oldLatLng = this._latlng;\r\n\t\tthis._latlng = latLng(latlng);\r\n\t\tthis.update();\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n\t},\r\n\r\n\t// @method setZIndexOffset(offset: Number): this\r\n\t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n\tsetZIndexOffset: function (offset) {\r\n\t\tthis.options.zIndexOffset = offset;\r\n\t\treturn this.update();\r\n\t},\r\n\r\n\t// @method getIcon: Icon\r\n\t// Returns the current icon used by the marker\r\n\tgetIcon: function () {\r\n\t\treturn this.options.icon;\r\n\t},\r\n\r\n\t// @method setIcon(icon: Icon): this\r\n\t// Changes the marker icon.\r\n\tsetIcon: function (icon) {\r\n\r\n\t\tthis.options.icon = icon;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._initIcon();\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\tif (this._popup) {\r\n\t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetElement: function () {\r\n\t\treturn this._icon;\r\n\t},\r\n\r\n\tupdate: function () {\r\n\r\n\t\tif (this._icon && this._map) {\r\n\t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n\t\t\tthis._setPos(pos);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initIcon: function () {\r\n\t\tvar options = this.options,\r\n\t\t    classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n\t\tvar icon = options.icon.createIcon(this._icon),\r\n\t\t    addIcon = false;\r\n\r\n\t\t// if we're not reusing the icon, remove the old one and init new one\r\n\t\tif (icon !== this._icon) {\r\n\t\t\tif (this._icon) {\r\n\t\t\t\tthis._removeIcon();\r\n\t\t\t}\r\n\t\t\taddIcon = true;\r\n\r\n\t\t\tif (options.title) {\r\n\t\t\t\ticon.title = options.title;\r\n\t\t\t}\r\n\r\n\t\t\tif (icon.tagName === 'IMG') {\r\n\t\t\t\ticon.alt = options.alt || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tDomUtil.addClass(icon, classToAdd);\r\n\r\n\t\tif (options.keyboard) {\r\n\t\t\ticon.tabIndex = '0';\r\n\t\t\ticon.setAttribute('role', 'button');\r\n\t\t}\r\n\r\n\t\tthis._icon = icon;\r\n\r\n\t\tif (options.riseOnHover) {\r\n\t\t\tthis.on({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.options.autoPanOnFocus) {\r\n\t\t\tDomEvent.on(icon, 'focus', this._panOnFocus, this);\r\n\t\t}\r\n\r\n\t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n\t\t    addShadow = false;\r\n\r\n\t\tif (newShadow !== this._shadow) {\r\n\t\t\tthis._removeShadow();\r\n\t\t\taddShadow = true;\r\n\t\t}\r\n\r\n\t\tif (newShadow) {\r\n\t\t\tDomUtil.addClass(newShadow, classToAdd);\r\n\t\t\tnewShadow.alt = '';\r\n\t\t}\r\n\t\tthis._shadow = newShadow;\r\n\r\n\r\n\t\tif (options.opacity < 1) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\r\n\t\tif (addIcon) {\r\n\t\t\tthis.getPane().appendChild(this._icon);\r\n\t\t}\r\n\t\tthis._initInteraction();\r\n\t\tif (newShadow && addShadow) {\r\n\t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeIcon: function () {\r\n\t\tif (this.options.riseOnHover) {\r\n\t\t\tthis.off({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.options.autoPanOnFocus) {\r\n\t\t\tDomEvent.off(this._icon, 'focus', this._panOnFocus, this);\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._icon);\r\n\t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n\t\tthis._icon = null;\r\n\t},\r\n\r\n\t_removeShadow: function () {\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.remove(this._shadow);\r\n\t\t}\r\n\t\tthis._shadow = null;\r\n\t},\r\n\r\n\t_setPos: function (pos) {\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setPosition(this._icon, pos);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setPosition(this._shadow, pos);\r\n\t\t}\r\n\r\n\t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n\t\tthis._resetZIndex();\r\n\t},\r\n\r\n\t_updateZIndex: function (offset) {\r\n\t\tif (this._icon) {\r\n\t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n\t\t}\r\n\t},\r\n\r\n\t_animateZoom: function (opt) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n\t\tthis._setPos(pos);\r\n\t},\r\n\r\n\t_initInteraction: function () {\r\n\r\n\t\tif (!this.options.interactive) { return; }\r\n\r\n\t\tDomUtil.addClass(this._icon, 'leaflet-interactive');\r\n\r\n\t\tthis.addInteractiveTarget(this._icon);\r\n\r\n\t\tif (MarkerDrag) {\r\n\t\t\tvar draggable = this.options.draggable;\r\n\t\t\tif (this.dragging) {\r\n\t\t\t\tdraggable = this.dragging.enabled();\r\n\t\t\t\tthis.dragging.disable();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n\t\t\tif (draggable) {\r\n\t\t\t\tthis.dragging.enable();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Changes the opacity of the marker.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\t\tif (this._map) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tvar opacity = this.options.opacity;\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setOpacity(this._icon, opacity);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setOpacity(this._shadow, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t_bringToFront: function () {\r\n\t\tthis._updateZIndex(this.options.riseOffset);\r\n\t},\r\n\r\n\t_resetZIndex: function () {\r\n\t\tthis._updateZIndex(0);\r\n\t},\r\n\r\n\t_panOnFocus: function () {\r\n\t\tvar map = this._map;\r\n\t\tif (!map) { return; }\r\n\r\n\t\tvar iconOpts = this.options.icon.options;\r\n\t\tvar size = iconOpts.iconSize ? point(iconOpts.iconSize) : point(0, 0);\r\n\t\tvar anchor = iconOpts.iconAnchor ? point(iconOpts.iconAnchor) : point(0, 0);\r\n\r\n\t\tmap.panInside(this._latlng, {\r\n\t\t\tpaddingTopLeft: anchor,\r\n\t\t\tpaddingBottomRight: size.subtract(anchor)\r\n\t\t});\r\n\t},\r\n\r\n\t_getPopupAnchor: function () {\r\n\t\treturn this.options.icon.options.popupAnchor;\r\n\t},\r\n\r\n\t_getTooltipAnchor: function () {\r\n\t\treturn this.options.icon.options.tooltipAnchor;\r\n\t}\r\n});\r\n\r\n\r\n// factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n// @factory L.marker(latlng: LatLng, options? : Marker options)\r\n// Instantiates a Marker object given a geographical point and optionally an options object.\r\nexport function marker(latlng, options) {\r\n\treturn new Marker(latlng, options);\r\n}\r\n","import {Layer} from '../Layer';\nimport * as Util from '../../core/Util';\n\n/*\n * @class Path\n * @aka L.Path\n * @inherits Interactive layer\n *\n * An abstract class that contains options and constants shared between vector\n * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n */\n\nexport var Path = Layer.extend({\n\n\t// @section\n\t// @aka Path options\n\toptions: {\n\t\t// @option stroke: Boolean = true\n\t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n\t\tstroke: true,\n\n\t\t// @option color: String = '#3388ff'\n\t\t// Stroke color\n\t\tcolor: '#3388ff',\n\n\t\t// @option weight: Number = 3\n\t\t// Stroke width in pixels\n\t\tweight: 3,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Stroke opacity\n\t\topacity: 1,\n\n\t\t// @option lineCap: String= 'round'\n\t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n\t\tlineCap: 'round',\n\n\t\t// @option lineJoin: String = 'round'\n\t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n\t\tlineJoin: 'round',\n\n\t\t// @option dashArray: String = null\n\t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashArray: null,\n\n\t\t// @option dashOffset: String = null\n\t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashOffset: null,\n\n\t\t// @option fill: Boolean = depends\n\t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n\t\tfill: false,\n\n\t\t// @option fillColor: String = *\n\t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n\t\tfillColor: null,\n\n\t\t// @option fillOpacity: Number = 0.2\n\t\t// Fill opacity.\n\t\tfillOpacity: 0.2,\n\n\t\t// @option fillRule: String = 'evenodd'\n\t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n\t\tfillRule: 'evenodd',\n\n\t\t// className: '',\n\n\t\t// Option inherited from \"Interactive layer\" abstract class\n\t\tinteractive: true,\n\n\t\t// @option bubblingMouseEvents: Boolean = true\n\t\t// When `true`, a mouse event on this path will trigger the same event on the map\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n\t\tbubblingMouseEvents: true\n\t},\n\n\tbeforeAdd: function (map) {\n\t\t// Renderer is set here because we need to call renderer.getEvents\n\t\t// before this.getEvents.\n\t\tthis._renderer = map.getRenderer(this);\n\t},\n\n\tonAdd: function () {\n\t\tthis._renderer._initPath(this);\n\t\tthis._reset();\n\t\tthis._renderer._addPath(this);\n\t},\n\n\tonRemove: function () {\n\t\tthis._renderer._removePath(this);\n\t},\n\n\t// @method redraw(): this\n\t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._renderer._updatePath(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method setStyle(style: Path options): this\n\t// Changes the appearance of a Path based on the options in the `Path options` object.\n\tsetStyle: function (style) {\n\t\tUtil.setOptions(this, style);\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._updateStyle(this);\n\t\t\tif (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {\n\t\t\t\tthis._updateBounds();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToFront(): this\n\t// Brings the layer to the top of all path layers.\n\tbringToFront: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToFront(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack(): this\n\t// Brings the layer to the bottom of all path layers.\n\tbringToBack: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToBack(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetElement: function () {\n\t\treturn this._path;\n\t},\n\n\t_reset: function () {\n\t\t// defined in child classes\n\t\tthis._project();\n\t\tthis._update();\n\t},\n\n\t_clickTolerance: function () {\n\t\t// used when doing hit detection for Canvas layers\n\t\treturn (this.options.stroke ? this.options.weight / 2 : 0) +\n\t\t  (this._renderer.options.tolerance || 0);\n\t}\n});\n","import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n/*\n * @class CircleMarker\n * @aka L.CircleMarker\n * @inherits Path\n *\n * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n */\n\nexport var CircleMarker = Path.extend({\n\n\t// @section\n\t// @aka CircleMarker options\n\toptions: {\n\t\tfill: true,\n\n\t\t// @option radius: Number = 10\n\t\t// Radius of the circle marker, in pixels\n\t\tradius: 10\n\t},\n\n\tinitialize: function (latlng, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis._radius = this.options.radius;\n\t},\n\n\t// @method setLatLng(latLng: LatLng): this\n\t// Sets the position of a circle marker to a new location.\n\tsetLatLng: function (latlng) {\n\t\tvar oldLatLng = this._latlng;\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis.redraw();\n\n\t\t// @event move: Event\n\t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n\t},\n\n\t// @method getLatLng(): LatLng\n\t// Returns the current geographical position of the circle marker\n\tgetLatLng: function () {\n\t\treturn this._latlng;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle marker. Units are in pixels.\n\tsetRadius: function (radius) {\n\t\tthis.options.radius = this._radius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of the circle\n\tgetRadius: function () {\n\t\treturn this._radius;\n\t},\n\n\tsetStyle : function (options) {\n\t\tvar radius = options && options.radius || this._radius;\n\t\tPath.prototype.setStyle.call(this, options);\n\t\tthis.setRadius(radius);\n\t\treturn this;\n\t},\n\n\t_project: function () {\n\t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._updateBounds();\n\t},\n\n\t_updateBounds: function () {\n\t\tvar r = this._radius,\n\t\t    r2 = this._radiusY || r,\n\t\t    w = this._clickTolerance(),\n\t\t    p = [r + w, r2 + w];\n\t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n\t},\n\n\t_update: function () {\n\t\tif (this._map) {\n\t\t\tthis._updatePath();\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updateCircle(this);\n\t},\n\n\t_empty: function () {\n\t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n\t}\n});\n\n\n// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n// Instantiates a circle marker object given a geographical point, and an optional options object.\nexport function circleMarker(latlng, options) {\n\treturn new CircleMarker(latlng, options);\n}\n","import {CircleMarker} from './CircleMarker';\nimport {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Earth} from '../../geo/crs/CRS.Earth';\n\n\n/*\n * @class Circle\n * @aka L.Circle\n * @inherits CircleMarker\n *\n * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n *\n * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n *\n * @example\n *\n * ```js\n * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n * ```\n */\n\nexport var Circle = CircleMarker.extend({\n\n\tinitialize: function (latlng, options, legacyOptions) {\n\t\tif (typeof options === 'number') {\n\t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n\t\t\toptions = Util.extend({}, legacyOptions, {radius: options});\n\t\t}\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\n\t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n\t\t// @section\n\t\t// @aka Circle options\n\t\t// @option radius: Number; Radius of the circle, in meters.\n\t\tthis._mRadius = this.options.radius;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle. Units are in meters.\n\tsetRadius: function (radius) {\n\t\tthis._mRadius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of a circle. Units are in meters.\n\tgetRadius: function () {\n\t\treturn this._mRadius;\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\tvar half = [this._radius, this._radiusY || this._radius];\n\n\t\treturn new LatLngBounds(\n\t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n\t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n\t},\n\n\tsetStyle: Path.prototype.setStyle,\n\n\t_project: function () {\n\n\t\tvar lng = this._latlng.lng,\n\t\t    lat = this._latlng.lat,\n\t\t    map = this._map,\n\t\t    crs = map.options.crs;\n\n\t\tif (crs.distance === Earth.distance) {\n\t\t\tvar d = Math.PI / 180,\n\t\t\t    latR = (this._mRadius / Earth.R) / d,\n\t\t\t    top = map.project([lat + latR, lng]),\n\t\t\t    bottom = map.project([lat - latR, lng]),\n\t\t\t    p = top.add(bottom).divideBy(2),\n\t\t\t    lat2 = map.unproject(p).lat,\n\t\t\t    lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n\t\t\t            (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n\t\t\tif (isNaN(lngR) || lngR === 0) {\n\t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n\t\t\t}\n\n\t\t\tthis._point = p.subtract(map.getPixelOrigin());\n\t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n\t\t\tthis._radiusY = p.y - top.y;\n\n\t\t} else {\n\t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n\t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n\t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n\t\t}\n\n\t\tthis._updateBounds();\n\t}\n});\n\n// @factory L.circle(latlng: LatLng, options?: Circle options)\n// Instantiates a circle object given a geographical point, and an options object\n// which contains the circle radius.\n// @alternative\n// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n// Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n// Do not use in new applications or plugins.\nexport function circle(latlng, options, legacyOptions) {\n\treturn new Circle(latlng, options, legacyOptions);\n}\n","import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {LatLng, toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\nimport {Point} from '../../geometry/Point';\n\n/*\n * @class Polyline\n * @aka L.Polyline\n * @inherits Path\n *\n * A class for drawing polyline overlays on a map. Extends `Path`.\n *\n * @example\n *\n * ```js\n * // create a red polyline from an array of LatLng points\n * var latlngs = [\n * \t[45.51, -122.68],\n * \t[37.77, -122.43],\n * \t[34.04, -118.2]\n * ];\n *\n * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polyline\n * map.fitBounds(polyline.getBounds());\n * ```\n *\n * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n *\n * ```js\n * // create a red polyline from an array of arrays of LatLng points\n * var latlngs = [\n * \t[[45.51, -122.68],\n * \t [37.77, -122.43],\n * \t [34.04, -118.2]],\n * \t[[40.78, -73.91],\n * \t [41.83, -87.62],\n * \t [32.76, -96.72]]\n * ];\n * ```\n */\n\n\nexport var Polyline = Path.extend({\n\n\t// @section\n\t// @aka Polyline options\n\toptions: {\n\t\t// @option smoothFactor: Number = 1.0\n\t\t// How much to simplify the polyline on each zoom level. More means\n\t\t// better performance and smoother look, and less means more accurate representation.\n\t\tsmoothFactor: 1.0,\n\n\t\t// @option noClip: Boolean = false\n\t\t// Disable polyline clipping.\n\t\tnoClip: false\n\t},\n\n\tinitialize: function (latlngs, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._setLatLngs(latlngs);\n\t},\n\n\t// @method getLatLngs(): LatLng[]\n\t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n\tgetLatLngs: function () {\n\t\treturn this._latlngs;\n\t},\n\n\t// @method setLatLngs(latlngs: LatLng[]): this\n\t// Replaces all the points in the polyline with the given array of geographical points.\n\tsetLatLngs: function (latlngs) {\n\t\tthis._setLatLngs(latlngs);\n\t\treturn this.redraw();\n\t},\n\n\t// @method isEmpty(): Boolean\n\t// Returns `true` if the Polyline has no LatLngs.\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length;\n\t},\n\n\t// @method closestLayerPoint(p: Point): Point\n\t// Returns the point closest to `p` on the Polyline.\n\tclosestLayerPoint: function (p) {\n\t\tvar minDistance = Infinity,\n\t\t    minPoint = null,\n\t\t    closest = LineUtil._sqClosestPointOnSegment,\n\t\t    p1, p2;\n\n\t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n\t\t\tvar points = this._parts[j];\n\n\t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n\t\t\t\tp1 = points[i - 1];\n\t\t\t\tp2 = points[i];\n\n\t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n\t\t\t\tif (sqDist < minDistance) {\n\t\t\t\t\tminDistance = sqDist;\n\t\t\t\t\tminPoint = closest(p, p1, p2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minPoint) {\n\t\t\tminPoint.distance = Math.sqrt(minDistance);\n\t\t}\n\t\treturn minPoint;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\t\treturn LineUtil.polylineCenter(this._defaultShape(), this._map.options.crs);\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\treturn this._bounds;\n\t},\n\n\t// @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this\n\t// Adds a given point to the polyline. By default, adds to the first ring of\n\t// the polyline in case of a multi-polyline, but can be overridden by passing\n\t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n\taddLatLng: function (latlng, latlngs) {\n\t\tlatlngs = latlngs || this._defaultShape();\n\t\tlatlng = toLatLng(latlng);\n\t\tlatlngs.push(latlng);\n\t\tthis._bounds.extend(latlng);\n\t\treturn this.redraw();\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tthis._bounds = new LatLngBounds();\n\t\tthis._latlngs = this._convertLatLngs(latlngs);\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n\t},\n\n\t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = [],\n\t\t    flat = LineUtil.isFlat(latlngs);\n\n\t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n\t\t\tif (flat) {\n\t\t\t\tresult[i] = toLatLng(latlngs[i]);\n\t\t\t\tthis._bounds.extend(result[i]);\n\t\t\t} else {\n\t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t_project: function () {\n\t\tvar pxBounds = new Bounds();\n\t\tthis._rings = [];\n\t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n\t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n\t\t\tthis._rawPxBounds = pxBounds;\n\t\t\tthis._updateBounds();\n\t\t}\n\t},\n\n\t_updateBounds: function () {\n\t\tvar w = this._clickTolerance(),\n\t\t    p = new Point(w, w);\n\n\t\tif (!this._rawPxBounds) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._pxBounds = new Bounds([\n\t\t\tthis._rawPxBounds.min.subtract(p),\n\t\t\tthis._rawPxBounds.max.add(p)\n\t\t]);\n\t},\n\n\t// recursively turns latlngs into a set of rings with projected coordinates\n\t_projectLatlngs: function (latlngs, result, projectedBounds) {\n\t\tvar flat = latlngs[0] instanceof LatLng,\n\t\t    len = latlngs.length,\n\t\t    i, ring;\n\n\t\tif (flat) {\n\t\t\tring = [];\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n\t\t\t\tprojectedBounds.extend(ring[i]);\n\t\t\t}\n\t\t\tresult.push(ring);\n\t\t} else {\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n\t\t\t}\n\t\t}\n\t},\n\n\t// clip polyline by renderer bounds so that we have less to render for performance\n\t_clipPoints: function () {\n\t\tvar bounds = this._renderer._bounds;\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tvar parts = this._parts,\n\t\t    i, j, k, len, len2, segment, points;\n\n\t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n\t\t\tpoints = this._rings[i];\n\n\t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n\t\t\t\tsegment = LineUtil.clipSegment(points[j], points[j + 1], bounds, j, true);\n\n\t\t\t\tif (!segment) { continue; }\n\n\t\t\t\tparts[k] = parts[k] || [];\n\t\t\t\tparts[k].push(segment[0]);\n\n\t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n\t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n\t\t\t\t\tparts[k].push(segment[1]);\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// simplify each clipped part of the polyline for performance\n\t_simplifyPoints: function () {\n\t\tvar parts = this._parts,\n\t\t    tolerance = this.options.smoothFactor;\n\n\t\tfor (var i = 0, len = parts.length; i < len; i++) {\n\t\t\tparts[i] = LineUtil.simplify(parts[i], tolerance);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tif (!this._map) { return; }\n\n\t\tthis._clipPoints();\n\t\tthis._simplifyPoints();\n\t\tthis._updatePath();\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p, closed) {\n\t\tvar i, j, k, len, len2, part,\n\t\t    w = this._clickTolerance();\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// hit detection for polylines\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tif (!closed && (j === 0)) { continue; }\n\n\t\t\t\tif (LineUtil.pointToSegmentDistance(p, part[k], part[j]) <= w) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\n// @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n// Instantiates a polyline object given an array of geographical points and\n// optionally an options object. You can create a `Polyline` object with\n// multiple separate lines (`MultiPolyline`) by passing an array of arrays\n// of geographic points.\nexport function polyline(latlngs, options) {\n\treturn new Polyline(latlngs, options);\n}\n\n// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\nPolyline._flat = LineUtil._flat;\n","import {Polyline} from './Polyline';\nimport {LatLng} from '../../geo/LatLng';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport * as PolyUtil from '../../geometry/PolyUtil';\n\n/*\n * @class Polygon\n * @aka L.Polygon\n * @inherits Polyline\n *\n * A class for drawing polygon overlays on a map. Extends `Polyline`.\n *\n * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n *\n *\n * @example\n *\n * ```js\n * // create a red polygon from an array of LatLng points\n * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n *\n * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polygon\n * map.fitBounds(polygon.getBounds());\n * ```\n *\n * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n *\n * ```js\n * var latlngs = [\n *   [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *   [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ];\n * ```\n *\n * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n *\n * ```js\n * var latlngs = [\n *   [ // first polygon\n *     [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *     [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n *   ],\n *   [ // second polygon\n *     [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n *   ]\n * ];\n * ```\n */\n\nexport var Polygon = Polyline.extend({\n\n\toptions: {\n\t\tfill: true\n\t},\n\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length || !this._latlngs[0].length;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\t\treturn PolyUtil.polygonCenter(this._defaultShape(), this._map.options.crs);\n\t},\n\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n\t\t    len = result.length;\n\n\t\t// remove last point if it equals first one\n\t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n\t\t\tresult.pop();\n\t\t}\n\t\treturn result;\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n\t\tif (LineUtil.isFlat(this._latlngs)) {\n\t\t\tthis._latlngs = [this._latlngs];\n\t\t}\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n\t},\n\n\t_clipPoints: function () {\n\t\t// polygons need a different clipping algorithm so we redefine that\n\n\t\tvar bounds = this._renderer._bounds,\n\t\t    w = this.options.weight,\n\t\t    p = new Point(w, w);\n\n\t\t// increase clip padding by stroke width to avoid stroke on clip edges\n\t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n\t\t\tclipped = PolyUtil.clipPolygon(this._rings[i], bounds, true);\n\t\t\tif (clipped.length) {\n\t\t\t\tthis._parts.push(clipped);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this, true);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\tvar inside = false,\n\t\t    part, p1, p2, i, j, k, len, len2;\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// ray casting algorithm for detecting if point is in polygon\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tp1 = part[j];\n\t\t\t\tp2 = part[k];\n\n\t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n\t\t\t\t\tinside = !inside;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// also check if it's on polygon stroke\n\t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n\t}\n\n});\n\n\n// @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\nexport function polygon(latlngs, options) {\n\treturn new Polygon(latlngs, options);\n}\n","import {LayerGroup} from './LayerGroup';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {Marker} from './marker/Marker';\r\nimport {Circle} from './vector/Circle';\r\nimport {CircleMarker} from './vector/CircleMarker';\r\nimport {Polyline} from './vector/Polyline';\r\nimport {Polygon} from './vector/Polygon';\r\nimport {LatLng} from '../geo/LatLng';\r\nimport * as LineUtil from '../geometry/LineUtil';\r\nimport {toLatLng} from '../geo/LatLng';\r\n\r\n\r\n/*\r\n * @class GeoJSON\r\n * @aka L.GeoJSON\r\n * @inherits FeatureGroup\r\n *\r\n * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.geoJSON(data, {\r\n * \tstyle: function (feature) {\r\n * \t\treturn {color: feature.properties.color};\r\n * \t}\r\n * }).bindPopup(function (layer) {\r\n * \treturn layer.feature.properties.description;\r\n * }).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var GeoJSON = FeatureGroup.extend({\r\n\r\n\t/* @section\r\n\t * @aka GeoJSON options\r\n\t *\r\n\t * @option pointToLayer: Function = *\r\n\t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n\t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n\t * The default is to spawn a default `Marker`:\r\n\t * ```js\r\n\t * function(geoJsonPoint, latlng) {\r\n\t * \treturn L.marker(latlng);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option style: Function = *\r\n\t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n\t * called internally when data is added.\r\n\t * The default value is to not override any defaults:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn {}\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option onEachFeature: Function = *\r\n\t * A `Function` that will be called once for each created `Feature`, after it has\r\n\t * been created and styled. Useful for attaching events and popups to features.\r\n\t * The default is to do nothing with the newly created layers:\r\n\t * ```js\r\n\t * function (feature, layer) {}\r\n\t * ```\r\n\t *\r\n\t * @option filter: Function = *\r\n\t * A `Function` that will be used to decide whether to include a feature or not.\r\n\t * The default is to include all features:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn true;\r\n\t * }\r\n\t * ```\r\n\t * Note: dynamically changing the `filter` option will have effect only on newly\r\n\t * added data. It will _not_ re-evaluate already included features.\r\n\t *\r\n\t * @option coordsToLatLng: Function = *\r\n\t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n\t * The default is the `coordsToLatLng` static method.\r\n\t *\r\n\t * @option markersInheritOptions: Boolean = false\r\n\t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n\t */\r\n\r\n\tinitialize: function (geojson, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tif (geojson) {\r\n\t\t\tthis.addData(geojson);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addData( <GeoJSON> data ): this\r\n\t// Adds a GeoJSON object to the layer.\r\n\taddData: function (geojson) {\r\n\t\tvar features = Util.isArray(geojson) ? geojson : geojson.features,\r\n\t\t    i, len, feature;\r\n\r\n\t\tif (features) {\r\n\t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n\t\t\t\t// only add this if geometry or geometries are set and not null\r\n\t\t\t\tfeature = features[i];\r\n\t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n\t\t\t\t\tthis.addData(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar options = this.options;\r\n\r\n\t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n\t\tvar layer = geometryToLayer(geojson, options);\r\n\t\tif (!layer) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tlayer.feature = asFeature(geojson);\r\n\r\n\t\tlayer.defaultOptions = layer.options;\r\n\t\tthis.resetStyle(layer);\r\n\r\n\t\tif (options.onEachFeature) {\r\n\t\t\toptions.onEachFeature(geojson, layer);\r\n\t\t}\r\n\r\n\t\treturn this.addLayer(layer);\r\n\t},\r\n\r\n\t// @method resetStyle( <Path> layer? ): this\r\n\t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n\t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n\tresetStyle: function (layer) {\r\n\t\tif (layer === undefined) {\r\n\t\t\treturn this.eachLayer(this.resetStyle, this);\r\n\t\t}\r\n\t\t// reset any custom styles\r\n\t\tlayer.options = Util.extend({}, layer.defaultOptions);\r\n\t\tthis._setLayerStyle(layer, this.options.style);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setStyle( <Function> style ): this\r\n\t// Changes styles of GeoJSON vector layers with the given style function.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.eachLayer(function (layer) {\r\n\t\t\tthis._setLayerStyle(layer, style);\r\n\t\t}, this);\r\n\t},\r\n\r\n\t_setLayerStyle: function (layer, style) {\r\n\t\tif (layer.setStyle) {\r\n\t\t\tif (typeof style === 'function') {\r\n\t\t\t\tstyle = style(layer.feature);\r\n\t\t\t}\r\n\t\t\tlayer.setStyle(style);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @section\r\n// There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n// Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// functions if provided as options.\r\nexport function geometryToLayer(geojson, options) {\r\n\r\n\tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n\t    coords = geometry ? geometry.coordinates : null,\r\n\t    layers = [],\r\n\t    pointToLayer = options && options.pointToLayer,\r\n\t    _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n\t    latlng, latlngs, i, len;\r\n\r\n\tif (!coords && !geometry) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (geometry.type) {\r\n\tcase 'Point':\r\n\t\tlatlng = _coordsToLatLng(coords);\r\n\t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n\tcase 'MultiPoint':\r\n\t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n\t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n\t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'LineString':\r\n\tcase 'MultiLineString':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n\t\treturn new Polyline(latlngs, options);\r\n\r\n\tcase 'Polygon':\r\n\tcase 'MultiPolygon':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n\t\treturn new Polygon(latlngs, options);\r\n\r\n\tcase 'GeometryCollection':\r\n\t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n\t\t\tvar geoLayer = geometryToLayer({\r\n\t\t\t\tgeometry: geometry.geometries[i],\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tproperties: geojson.properties\r\n\t\t\t}, options);\r\n\r\n\t\t\tif (geoLayer) {\r\n\t\t\t\tlayers.push(geoLayer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'FeatureCollection':\r\n\t\tfor (i = 0, len = geometry.features.length; i < len; i++) {\r\n\t\t\tvar featureLayer = geometryToLayer(geometry.features[i], options);\r\n\r\n\t\t\tif (featureLayer) {\r\n\t\t\t\tlayers.push(featureLayer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tdefault:\r\n\t\tthrow new Error('Invalid GeoJSON object.');\r\n\t}\r\n}\r\n\r\nfunction _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n\treturn pointToLayerFn ?\r\n\t\tpointToLayerFn(geojson, latlng) :\r\n\t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n}\r\n\r\n// @function coordsToLatLng(coords: Array): LatLng\r\n// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\nexport function coordsToLatLng(coords) {\r\n\treturn new LatLng(coords[1], coords[0], coords[2]);\r\n}\r\n\r\n// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\nexport function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n\tvar latlngs = [];\r\n\r\n\tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n\t\tlatlng = levelsDeep ?\r\n\t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n\t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n\t\tlatlngs.push(latlng);\r\n\t}\r\n\r\n\treturn latlngs;\r\n}\r\n\r\n// @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array\r\n// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\nexport function latLngToCoords(latlng, precision) {\r\n\tlatlng = toLatLng(latlng);\r\n\treturn latlng.alt !== undefined ?\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision), Util.formatNum(latlng.alt, precision)] :\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision)];\r\n}\r\n\r\n// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array\r\n// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\nexport function latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n\tvar coords = [];\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\t// Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion\r\n\t\tcoords.push(levelsDeep ?\r\n\t\t\tlatLngsToCoords(latlngs[i], LineUtil.isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) :\r\n\t\t\tlatLngToCoords(latlngs[i], precision));\r\n\t}\r\n\r\n\tif (!levelsDeep && closed && coords.length > 0) {\r\n\t\tcoords.push(coords[0].slice());\r\n\t}\r\n\r\n\treturn coords;\r\n}\r\n\r\nexport function getFeature(layer, newGeometry) {\r\n\treturn layer.feature ?\r\n\t\tUtil.extend({}, layer.feature, {geometry: newGeometry}) :\r\n\t\tasFeature(newGeometry);\r\n}\r\n\r\n// @function asFeature(geojson: Object): Object\r\n// Normalize GeoJSON geometries/features into GeoJSON features.\r\nexport function asFeature(geojson) {\r\n\tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n\t\treturn geojson;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttype: 'Feature',\r\n\t\tproperties: {},\r\n\t\tgeometry: geojson\r\n\t};\r\n}\r\n\r\nvar PointToGeoJSON = {\r\n\ttoGeoJSON: function (precision) {\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'Point',\r\n\t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// @namespace Marker\r\n// @section Other methods\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\nMarker.include(PointToGeoJSON);\r\n\r\n// @namespace CircleMarker\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\nCircle.include(PointToGeoJSON);\r\nCircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n// @namespace Polyline\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\nPolyline.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar multi = !LineUtil.isFlat(this._latlngs);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n// @namespace Polygon\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\nPolygon.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar holes = !LineUtil.isFlat(this._latlngs),\r\n\t\t    multi = holes && !LineUtil.isFlat(this._latlngs[0]);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n\t\tif (!holes) {\r\n\t\t\tcoords = [coords];\r\n\t\t}\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n// @namespace LayerGroup\r\nLayerGroup.include({\r\n\ttoMultiPoint: function (precision) {\r\n\t\tvar coords = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n\t\t});\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'MultiPoint',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t},\r\n\r\n\t// @method toGeoJSON(precision?: Number|false): Object\r\n\t// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n\t// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n\ttoGeoJSON: function (precision) {\r\n\r\n\t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n\t\tif (type === 'MultiPoint') {\r\n\t\t\treturn this.toMultiPoint(precision);\r\n\t\t}\r\n\r\n\t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n\t\t    jsons = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tif (layer.toGeoJSON) {\r\n\t\t\t\tvar json = layer.toGeoJSON(precision);\r\n\t\t\t\tif (isGeometryCollection) {\r\n\t\t\t\t\tjsons.push(json.geometry);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar feature = asFeature(json);\r\n\t\t\t\t\t// Squash nested feature collections\r\n\t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n\t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tjsons.push(feature);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (isGeometryCollection) {\r\n\t\t\treturn getFeature(this, {\r\n\t\t\t\tgeometries: jsons,\r\n\t\t\t\ttype: 'GeometryCollection'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'FeatureCollection',\r\n\t\t\tfeatures: jsons\r\n\t\t};\r\n\t}\r\n});\r\n\r\n// @namespace GeoJSON\r\n// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n// Creates a GeoJSON layer. Optionally accepts an object in\r\n// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n// (you can alternatively add it later with `addData` method) and an `options` object.\r\nexport function geoJSON(geojson, options) {\r\n\treturn new GeoJSON(geojson, options);\r\n}\r\n\r\n// Backward compatibility.\r\nexport var geoJson = geoJSON;\r\n","import {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\nimport {Bounds} from '../geometry/Bounds';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class ImageOverlay\r\n * @aka L.ImageOverlay\r\n * @inherits Interactive layer\r\n *\r\n * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var ImageOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka ImageOverlay options\r\n\toptions: {\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the image overlay.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the image.\r\n\t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option errorOverlayUrl: String = ''\r\n\t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n\t\terrorOverlayUrl: '',\r\n\r\n\t\t// @option zIndex: Number = 1\r\n\t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n\t\tzIndex: 1,\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom class name to assign to the image. Empty by default.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n\t\tthis._url = url;\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\tonAdd: function () {\r\n\t\tif (!this._image) {\r\n\t\t\tthis._initImage();\r\n\r\n\t\t\tif (this.options.opacity < 1) {\r\n\t\t\t\tthis._updateOpacity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._image, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._image);\r\n\t\t}\r\n\r\n\t\tthis.getPane().appendChild(this._image);\r\n\t\tthis._reset();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tDomUtil.remove(this._image);\r\n\t\tif (this.options.interactive) {\r\n\t\t\tthis.removeInteractiveTarget(this._image);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Sets the opacity of the overlay.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsetStyle: function (styleOpts) {\r\n\t\tif (styleOpts.opacity) {\r\n\t\t\tthis.setOpacity(styleOpts.opacity);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer to the top of all overlays.\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer to the bottom of all overlays.\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setUrl(url: String): this\r\n\t// Changes the URL of the image.\r\n\tsetUrl: function (url) {\r\n\t\tthis._url = url;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._image.src = url;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setBounds(bounds: LatLngBounds): this\r\n\t// Update the bounds that this ImageOverlay covers\r\n\tsetBounds: function (bounds) {\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._reset();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._reset,\r\n\t\t\tviewreset: this._reset\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method setZIndex(value: Number): this\r\n\t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n\tsetZIndex: function (value) {\r\n\t\tthis.options.zIndex = value;\r\n\t\tthis._updateZIndex();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Get the bounds that this ImageOverlay covers\r\n\tgetBounds: function () {\r\n\t\treturn this._bounds;\r\n\t},\r\n\r\n\t// @method getElement(): HTMLElement\r\n\t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n\t// used by this overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._image;\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n\t\tvar img = this._image = wasElementSupplied ? this._url : DomUtil.create('img');\r\n\r\n\t\tDomUtil.addClass(img, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(img, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(img, this.options.className); }\r\n\r\n\t\timg.onselectstart = Util.falseFn;\r\n\t\timg.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the ImageOverlay layer has loaded its image\r\n\t\timg.onload = Util.bind(this.fire, this, 'load');\r\n\t\timg.onerror = Util.bind(this._overlayOnError, this, 'error');\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\tif (this.options.zIndex) {\r\n\t\t\tthis._updateZIndex();\r\n\t\t}\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tthis._url = img.src;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\timg.src = this._url;\r\n\t\timg.alt = this.options.alt;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar scale = this._map.getZoomScale(e.zoom),\r\n\t\t    offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n\t\tDomUtil.setTransform(this._image, offset, scale);\r\n\t},\r\n\r\n\t_reset: function () {\r\n\t\tvar image = this._image,\r\n\t\t    bounds = new Bounds(\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n\t\t    size = bounds.getSize();\r\n\r\n\t\tDomUtil.setPosition(image, bounds.min);\r\n\r\n\t\timage.style.width  = size.x + 'px';\r\n\t\timage.style.height = size.y + 'px';\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tDomUtil.setOpacity(this._image, this.options.opacity);\r\n\t},\r\n\r\n\t_updateZIndex: function () {\r\n\t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n\t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n\t\t}\r\n\t},\r\n\r\n\t_overlayOnError: function () {\r\n\t\t// @event error: Event\r\n\t\t// Fired when the ImageOverlay layer fails to load its image\r\n\t\tthis.fire('error');\r\n\r\n\t\tvar errorUrl = this.options.errorOverlayUrl;\r\n\t\tif (errorUrl && this._url !== errorUrl) {\r\n\t\t\tthis._url = errorUrl;\r\n\t\t\tthis._image.src = errorUrl;\r\n\t\t}\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center of the ImageOverlay.\r\n\tgetCenter: function () {\r\n\t\treturn this._bounds.getCenter();\r\n\t}\r\n});\r\n\r\n// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n// Instantiates an image overlay object given the URL of the image and the\r\n// geographical bounds it is tied to.\r\nexport var imageOverlay = function (url, bounds, options) {\r\n\treturn new ImageOverlay(url, bounds, options);\r\n};\r\n","import {ImageOverlay} from './ImageOverlay';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class VideoOverlay\r\n * @aka L.VideoOverlay\r\n * @inherits ImageOverlay\r\n *\r\n * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n *\r\n * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n * HTML5 element.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var VideoOverlay = ImageOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka VideoOverlay options\r\n\toptions: {\r\n\t\t// @option autoplay: Boolean = true\r\n\t\t// Whether the video starts playing automatically when loaded.\r\n\t\t// On some browsers autoplay will only work with `muted: true`\r\n\t\tautoplay: true,\r\n\r\n\t\t// @option loop: Boolean = true\r\n\t\t// Whether the video will loop back to the beginning when played.\r\n\t\tloop: true,\r\n\r\n\t\t// @option keepAspectRatio: Boolean = true\r\n\t\t// Whether the video will save aspect ratio after the projection.\r\n\t\t// Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)\r\n\t\tkeepAspectRatio: true,\r\n\r\n\t\t// @option muted: Boolean = false\r\n\t\t// Whether the video starts on mute when loaded.\r\n\t\tmuted: false,\r\n\r\n\t\t// @option playsInline: Boolean = true\r\n\t\t// Mobile browsers will play the video right where it is instead of open it up in fullscreen mode.\r\n\t\tplaysInline: true\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n\t\tvar vid = this._image = wasElementSupplied ? this._url : DomUtil.create('video');\r\n\r\n\t\tDomUtil.addClass(vid, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(vid, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(vid, this.options.className); }\r\n\r\n\t\tvid.onselectstart = Util.falseFn;\r\n\t\tvid.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the video has finished loading the first frame\r\n\t\tvid.onloadeddata = Util.bind(this.fire, this, 'load');\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n\t\t\tvar sources = [];\r\n\t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n\t\t\t\tsources.push(sourceElements[j].src);\r\n\t\t\t}\r\n\r\n\t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!Util.isArray(this._url)) { this._url = [this._url]; }\r\n\r\n\t\tif (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {\r\n\t\t\tvid.style['objectFit'] = 'fill';\r\n\t\t}\r\n\t\tvid.autoplay = !!this.options.autoplay;\r\n\t\tvid.loop = !!this.options.loop;\r\n\t\tvid.muted = !!this.options.muted;\r\n\t\tvid.playsInline = !!this.options.playsInline;\r\n\t\tfor (var i = 0; i < this._url.length; i++) {\r\n\t\t\tvar source = DomUtil.create('source');\r\n\t\t\tsource.src = this._url[i];\r\n\t\t\tvid.appendChild(source);\r\n\t\t}\r\n\t}\r\n\r\n\t// @method getElement(): HTMLVideoElement\r\n\t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n\t// used by this overlay.\r\n});\r\n\r\n\r\n// @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n// Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n// geographical bounds it is tied to.\r\n\r\nexport function videoOverlay(video, bounds, options) {\r\n\treturn new VideoOverlay(video, bounds, options);\r\n}\r\n","import {ImageOverlay} from './ImageOverlay';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as Util from '../core/Util';\n\n/*\n * @class SVGOverlay\n * @aka L.SVGOverlay\n * @inherits ImageOverlay\n *\n * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n *\n * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n *\n * @example\n *\n * ```js\n * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n * ```\n */\n\nexport var SVGOverlay = ImageOverlay.extend({\n\t_initImage: function () {\n\t\tvar el = this._image = this._url;\n\n\t\tDomUtil.addClass(el, 'leaflet-image-layer');\n\t\tif (this._zoomAnimated) { DomUtil.addClass(el, 'leaflet-zoom-animated'); }\n\t\tif (this.options.className) { DomUtil.addClass(el, this.options.className); }\n\n\t\tel.onselectstart = Util.falseFn;\n\t\tel.onmousemove = Util.falseFn;\n\t}\n\n\t// @method getElement(): SVGElement\n\t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n\t// used by this overlay.\n});\n\n\n// @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n// Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n// A viewBox attribute is required on the SVG element to zoom in and out properly.\n\nexport function svgOverlay(el, bounds, options) {\n\treturn new SVGOverlay(el, bounds, options);\n}\n","import {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng, LatLng} from '../geo/LatLng';\r\nimport {toPoint} from '../geometry/Point';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class DivOverlay\r\n * @inherits Interactive layer\r\n * @aka L.DivOverlay\r\n * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins.\r\n */\r\n\r\n// @namespace DivOverlay\r\nexport var DivOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka DivOverlay options\r\n\toptions: {\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If true, the popup/tooltip will listen to the mouse events.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option offset: Point = Point(0, 0)\r\n\t\t// The offset of the overlay position.\r\n\t\toffset: [0, 0],\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the overlay.\r\n\t\tclassName: '',\r\n\r\n\t\t// @option pane: String = undefined\r\n\t\t// `Map pane` where the overlay will be added.\r\n\t\tpane: undefined,\r\n\r\n\t\t// @option content: String|HTMLElement|Function = ''\r\n\t\t// Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be\r\n\t\t// passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n\t\tcontent: ''\r\n\t},\r\n\r\n\tinitialize: function (options, source) {\r\n\t\tif (options && (options instanceof LatLng || Util.isArray(options))) {\r\n\t\t\tthis._latlng = toLatLng(options);\r\n\t\t\tUtil.setOptions(this, source);\r\n\t\t} else {\r\n\t\t\tUtil.setOptions(this, options);\r\n\t\t\tthis._source = source;\r\n\t\t}\r\n\t\tif (this.options.content) {\r\n\t\t\tthis._content = this.options.content;\r\n\t\t}\r\n\t},\r\n\r\n\t// @method openOn(map: Map): this\r\n\t// Adds the overlay to the map.\r\n\t// Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`.\r\n\topenOn: function (map) {\r\n\t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\t\tif (!map.hasLayer(this)) {\r\n\t\t\tmap.addLayer(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method close(): this\r\n\t// Closes the overlay.\r\n\t// Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)`\r\n\t// and `layer.closePopup()`/`.closeTooltip()`.\r\n\tclose: function () {\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.removeLayer(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method toggle(layer?: Layer): this\r\n\t// Opens or closes the overlay bound to layer depending on its current state.\r\n\t// Argument may be omitted only for overlay bound to layer.\r\n\t// Alternative to `layer.togglePopup()`/`.toggleTooltip()`.\r\n\ttoggle: function (layer) {\r\n\t\tif (this._map) {\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tif (arguments.length) {\r\n\t\t\t\tthis._source = layer;\r\n\t\t\t} else {\r\n\t\t\t\tlayer = this._source;\r\n\t\t\t}\r\n\t\t\tthis._prepareOpen();\r\n\r\n\t\t\t// open the overlay on the map\r\n\t\t\tthis.openOn(layer._map);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n\t\tif (!this._container) {\r\n\t\t\tthis._initLayout();\r\n\t\t}\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t}\r\n\r\n\t\tclearTimeout(this._removeTimeout);\r\n\t\tthis.getPane().appendChild(this._container);\r\n\t\tthis.update();\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 1);\r\n\t\t}\r\n\r\n\t\tthis.bringToFront();\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t\tthis._removeTimeout = setTimeout(Util.bind(DomUtil.remove, undefined, this._container), 200);\r\n\t\t} else {\r\n\t\t\tDomUtil.remove(this._container);\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\r\n\t\t\tthis.removeInteractiveTarget(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\t// @namespace DivOverlay\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the geographical point of the overlay.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Sets the geographical point where the overlay will open.\r\n\tsetLatLng: function (latlng) {\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t\tif (this._map) {\r\n\t\t\tthis._updatePosition();\r\n\t\t\tthis._adjustPan();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContent: String|HTMLElement\r\n\t// Returns the content of the overlay.\r\n\tgetContent: function () {\r\n\t\treturn this._content;\r\n\t},\r\n\r\n\t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n\t// Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function.\r\n\t// The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n\tsetContent: function (content) {\r\n\t\tthis._content = content;\r\n\t\tthis.update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getElement: String|HTMLElement\r\n\t// Returns the HTML container of the overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method update: null\r\n\t// Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded.\r\n\tupdate: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tthis._container.style.visibility = 'hidden';\r\n\r\n\t\tthis._updateContent();\r\n\t\tthis._updateLayout();\r\n\t\tthis._updatePosition();\r\n\r\n\t\tthis._container.style.visibility = '';\r\n\r\n\t\tthis._adjustPan();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._updatePosition,\r\n\t\t\tviewreset: this._updatePosition\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method isOpen: Boolean\r\n\t// Returns `true` when the overlay is visible on the map.\r\n\tisOpen: function () {\r\n\t\treturn !!this._map && this._map.hasLayer(this);\r\n\t},\r\n\r\n\t// @method bringToFront: this\r\n\t// Brings this overlay in front of other overlays (in the same map pane).\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack: this\r\n\t// Brings this overlay to the back of other overlays (in the same map pane).\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// prepare bound overlay to open: update latlng pos / content source (for FeatureGroup)\r\n\t_prepareOpen: function (latlng) {\r\n\t\tvar source = this._source;\r\n\t\tif (!source._map) { return false; }\r\n\r\n\t\tif (source instanceof FeatureGroup) {\r\n\t\t\tsource = null;\r\n\t\t\tvar layers = this._source._layers;\r\n\t\t\tfor (var id in layers) {\r\n\t\t\t\tif (layers[id]._map) {\r\n\t\t\t\t\tsource = layers[id];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!source) { return false; } // Unable to get source layer.\r\n\r\n\t\t\t// set overlay source to this layer\r\n\t\t\tthis._source = source;\r\n\t\t}\r\n\r\n\t\tif (!latlng) {\r\n\t\t\tif (source.getCenter) {\r\n\t\t\t\tlatlng = source.getCenter();\r\n\t\t\t} else if (source.getLatLng) {\r\n\t\t\t\tlatlng = source.getLatLng();\r\n\t\t\t} else if (source.getBounds) {\r\n\t\t\t\tlatlng = source.getBounds().getCenter();\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.setLatLng(latlng);\r\n\r\n\t\tif (this._map) {\r\n\t\t\t// update the overlay (content, layout, etc...)\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_updateContent: function () {\r\n\t\tif (!this._content) { return; }\r\n\r\n\t\tvar node = this._contentNode;\r\n\t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n\t\tif (typeof content === 'string') {\r\n\t\t\tnode.innerHTML = content;\r\n\t\t} else {\r\n\t\t\twhile (node.hasChildNodes()) {\r\n\t\t\t\tnode.removeChild(node.firstChild);\r\n\t\t\t}\r\n\t\t\tnode.appendChild(content);\r\n\t\t}\r\n\r\n\t\t// @namespace DivOverlay\r\n\t\t// @section DivOverlay events\r\n\t\t// @event contentupdate: Event\r\n\t\t// Fired when the content of the overlay is updated\r\n\t\tthis.fire('contentupdate');\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n\t\t    offset = toPoint(this.options.offset),\r\n\t\t    anchor = this._getAnchor();\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t\t} else {\r\n\t\t\toffset = offset.add(pos).add(anchor);\r\n\t\t}\r\n\r\n\t\tvar bottom = this._containerBottom = -offset.y,\r\n\t\t    left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n\t\t// bottom position the overlay in case the height of the overlay changes (images loading etc)\r\n\t\tthis._container.style.bottom = bottom + 'px';\r\n\t\tthis._container.style.left = left + 'px';\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\treturn [0, 0];\r\n\t}\r\n\r\n});\r\n\r\nMap.include({\r\n\t_initOverlay: function (OverlayClass, content, latlng, options) {\r\n\t\tvar overlay = content;\r\n\t\tif (!(overlay instanceof OverlayClass)) {\r\n\t\t\toverlay = new OverlayClass(options).setContent(content);\r\n\t\t}\r\n\t\tif (latlng) {\r\n\t\t\toverlay.setLatLng(latlng);\r\n\t\t}\r\n\t\treturn overlay;\r\n\t}\r\n});\r\n\r\n\r\nLayer.include({\r\n\t_initOverlay: function (OverlayClass, old, content, options) {\r\n\t\tvar overlay = content;\r\n\t\tif (overlay instanceof OverlayClass) {\r\n\t\t\tUtil.setOptions(overlay, options);\r\n\t\t\toverlay._source = this;\r\n\t\t} else {\r\n\t\t\toverlay = (old && !options) ? old : new OverlayClass(options, this);\r\n\t\t\toverlay.setContent(content);\r\n\t\t}\r\n\t\treturn overlay;\r\n\t}\r\n});\r\n","import {DivOverlay} from './DivOverlay';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport {Path} from './vector/Path';\r\nimport {FeatureGroup} from './FeatureGroup';\r\n\r\n/*\r\n * @class Popup\r\n * @inherits DivOverlay\r\n * @aka L.Popup\r\n * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n * open popups while making sure that only one popup is open at one time\r\n * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n *\r\n * @example\r\n *\r\n * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n *\r\n * ```js\r\n * marker.bindPopup(popupContent).openPopup();\r\n * ```\r\n * Path overlays like polylines also have a `bindPopup` method.\r\n *\r\n * A popup can be also standalone:\r\n *\r\n * ```js\r\n * var popup = L.popup()\r\n * \t.setLatLng(latlng)\r\n * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n * or\r\n * ```js\r\n * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n */\r\n\r\n\r\n// @namespace Popup\r\nexport var Popup = DivOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka Popup options\r\n\toptions: {\r\n\t\t// @option pane: String = 'popupPane'\r\n\t\t// `Map pane` where the popup will be added.\r\n\t\tpane: 'popupPane',\r\n\r\n\t\t// @option offset: Point = Point(0, 7)\r\n\t\t// The offset of the popup position.\r\n\t\toffset: [0, 7],\r\n\r\n\t\t// @option maxWidth: Number = 300\r\n\t\t// Max width of the popup, in pixels.\r\n\t\tmaxWidth: 300,\r\n\r\n\t\t// @option minWidth: Number = 50\r\n\t\t// Min width of the popup, in pixels.\r\n\t\tminWidth: 50,\r\n\r\n\t\t// @option maxHeight: Number = null\r\n\t\t// If set, creates a scrollable container of the given height\r\n\t\t// inside a popup if its content exceeds it.\r\n\t\t// The scrollable container can be styled using the\r\n\t\t// `leaflet-popup-scrolled` CSS class selector.\r\n\t\tmaxHeight: null,\r\n\r\n\t\t// @option autoPan: Boolean = true\r\n\t\t// Set it to `false` if you don't want the map to do panning animation\r\n\t\t// to fit the opened popup.\r\n\t\tautoPan: true,\r\n\r\n\t\t// @option autoPanPaddingTopLeft: Point = null\r\n\t\t// The margin between the popup and the top left corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingTopLeft: null,\r\n\r\n\t\t// @option autoPanPaddingBottomRight: Point = null\r\n\t\t// The margin between the popup and the bottom right corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingBottomRight: null,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(5, 5)\r\n\t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n\t\tautoPanPadding: [5, 5],\r\n\r\n\t\t// @option keepInView: Boolean = false\r\n\t\t// Set it to `true` if you want to prevent users from panning the popup\r\n\t\t// off of the screen while it is open.\r\n\t\tkeepInView: false,\r\n\r\n\t\t// @option closeButton: Boolean = true\r\n\t\t// Controls the presence of a close button in the popup.\r\n\t\tcloseButton: true,\r\n\r\n\t\t// @option autoClose: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the popup closing when another popup is opened.\r\n\t\tautoClose: true,\r\n\r\n\t\t// @option closeOnEscapeKey: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the ESC key for closing of the popup.\r\n\t\tcloseOnEscapeKey: true,\r\n\r\n\t\t// @option closeOnClick: Boolean = *\r\n\t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n\t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method openOn(map: Map): this\r\n\t// Alternative to `map.openPopup(popup)`.\r\n\t// Adds the popup to the map and closes the previous one.\r\n\topenOn: function (map) {\r\n\t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\r\n\t\tif (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) {\r\n\t\t\tmap.removeLayer(map._popup);\r\n\t\t}\r\n\t\tmap._popup = this;\r\n\r\n\t\treturn DivOverlay.prototype.openOn.call(this, map);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupopen: PopupEvent\r\n\t\t// Fired when a popup is opened in the map\r\n\t\tmap.fire('popupopen', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupopen: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is opened\r\n\t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n\t\t\t// For non-path layers, we toggle the popup when clicking\r\n\t\t\t// again the layer, so prevent the map to reopen it.\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.on('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupclose: PopupEvent\r\n\t\t// Fired when a popup in the map is closed\r\n\t\tmap.fire('popupclose', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupclose: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is closed\r\n\t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.off('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n\t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n\t\t\tevents.preclick = this.close;\r\n\t\t}\r\n\r\n\t\tif (this.options.keepInView) {\r\n\t\t\tevents.moveend = this._adjustPan;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar prefix = 'leaflet-popup',\r\n\t\t    container = this._container = DomUtil.create('div',\r\n\t\t\tprefix + ' ' + (this.options.className || '') +\r\n\t\t\t' leaflet-zoom-animated');\r\n\r\n\t\tvar wrapper = this._wrapper = DomUtil.create('div', prefix + '-content-wrapper', container);\r\n\t\tthis._contentNode = DomUtil.create('div', prefix + '-content', wrapper);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(this._contentNode);\r\n\t\tDomEvent.on(container, 'contextmenu', DomEvent.stopPropagation);\r\n\r\n\t\tthis._tipContainer = DomUtil.create('div', prefix + '-tip-container', container);\r\n\t\tthis._tip = DomUtil.create('div', prefix + '-tip', this._tipContainer);\r\n\r\n\t\tif (this.options.closeButton) {\r\n\t\t\tvar closeButton = this._closeButton = DomUtil.create('a', prefix + '-close-button', container);\r\n\t\t\tcloseButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399\r\n\t\t\tcloseButton.setAttribute('aria-label', 'Close popup');\r\n\t\t\tcloseButton.href = '#close';\r\n\t\t\tcloseButton.innerHTML = '<span aria-hidden=\"true\">&#215;</span>';\r\n\r\n\t\t\tDomEvent.on(closeButton, 'click', function (ev) {\r\n\t\t\t\tDomEvent.preventDefault(ev);\r\n\t\t\t\tthis.close();\r\n\t\t\t}, this);\r\n\t\t}\r\n\t},\r\n\r\n\t_updateLayout: function () {\r\n\t\tvar container = this._contentNode,\r\n\t\t    style = container.style;\r\n\r\n\t\tstyle.width = '';\r\n\t\tstyle.whiteSpace = 'nowrap';\r\n\r\n\t\tvar width = container.offsetWidth;\r\n\t\twidth = Math.min(width, this.options.maxWidth);\r\n\t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n\t\tstyle.width = (width + 1) + 'px';\r\n\t\tstyle.whiteSpace = '';\r\n\r\n\t\tstyle.height = '';\r\n\r\n\t\tvar height = container.offsetHeight,\r\n\t\t    maxHeight = this.options.maxHeight,\r\n\t\t    scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n\t\tif (maxHeight && height > maxHeight) {\r\n\t\t\tstyle.height = maxHeight + 'px';\r\n\t\t\tDomUtil.addClass(container, scrolledClass);\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(container, scrolledClass);\r\n\t\t}\r\n\r\n\t\tthis._containerWidth = this._container.offsetWidth;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n\t\t    anchor = this._getAnchor();\r\n\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t},\r\n\r\n\t_adjustPan: function () {\r\n\t\tif (!this.options.autoPan) { return; }\r\n\t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n\t\t// We can endlessly recurse if keepInView is set and the view resets.\r\n\t\t// Let's guard against that by exiting early if we're responding to our own autopan.\r\n\t\tif (this._autopanning) {\r\n\t\t\tthis._autopanning = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar map = this._map,\r\n\t\t    marginBottom = parseInt(DomUtil.getStyle(this._container, 'marginBottom'), 10) || 0,\r\n\t\t    containerHeight = this._container.offsetHeight + marginBottom,\r\n\t\t    containerWidth = this._containerWidth,\r\n\t\t    layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n\t\tlayerPos._add(DomUtil.getPosition(this._container));\r\n\r\n\t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n\t\t    padding = toPoint(this.options.autoPanPadding),\r\n\t\t    paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n\t\t    paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n\t\t    size = map.getSize(),\r\n\t\t    dx = 0,\r\n\t\t    dy = 0;\r\n\r\n\t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n\t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n\t\t}\r\n\t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n\t\t\tdx = containerPos.x - paddingTL.x;\r\n\t\t}\r\n\t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n\t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n\t\t}\r\n\t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n\t\t\tdy = containerPos.y - paddingTL.y;\r\n\t\t}\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event autopanstart: Event\r\n\t\t// Fired when the map starts autopanning when opening a popup.\r\n\t\tif (dx || dy) {\r\n\t\t\t// Track that we're autopanning, as this function will be re-ran on moveend\r\n\t\t\tif (this.options.keepInView) {\r\n\t\t\t\tthis._autopanning = true;\r\n\t\t\t}\r\n\r\n\t\t\tmap\r\n\t\t\t    .fire('autopanstart')\r\n\t\t\t    .panBy([dx, dy]);\r\n\t\t}\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\t// Where should we anchor the popup on the source layer?\r\n\t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n\t}\r\n\r\n});\r\n\r\n// @namespace Popup\r\n// @factory L.popup(options?: Popup options, source?: Layer)\r\n// Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\n// @alternative\r\n// @factory L.popup(latlng: LatLng, options?: Popup options)\r\n// Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.\r\nexport var popup = function (options, source) {\r\n\treturn new Popup(options, source);\r\n};\r\n\r\n\r\n/* @namespace Map\r\n * @section Interaction Options\r\n * @option closePopupOnClick: Boolean = true\r\n * Set it to `false` if you don't want popups to close when user clicks the map.\r\n */\r\nMap.mergeOptions({\r\n\tclosePopupOnClick: true\r\n});\r\n\r\n\r\n// @namespace Map\r\n// @section Methods for Layers and Controls\r\nMap.include({\r\n\t// @method openPopup(popup: Popup): this\r\n\t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n\t// @alternative\r\n\t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n\t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n\topenPopup: function (popup, latlng, options) {\r\n\t\tthis._initOverlay(Popup, popup, latlng, options)\r\n\t\t  .openOn(this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(popup?: Popup): this\r\n\t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n\tclosePopup: function (popup) {\r\n\t\tpopup = arguments.length ? popup : this._popup;\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/*\r\n * @namespace Layer\r\n * @section Popup methods example\r\n *\r\n * All layers share a set of methods convenient for binding popups to it.\r\n *\r\n * ```js\r\n * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n * layer.openPopup();\r\n * layer.closePopup();\r\n * ```\r\n *\r\n * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n */\r\n\r\n// @section Popup methods\r\nLayer.include({\r\n\r\n\t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n\t// Binds a popup to the layer with the passed `content` and sets up the\r\n\t// necessary event listeners. If a `Function` is passed it will receive\r\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n\tbindPopup: function (content, options) {\r\n\t\tthis._popup = this._initOverlay(Popup, this._popup, content, options);\r\n\t\tif (!this._popupHandlersAdded) {\r\n\t\t\tthis.on({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = true;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method unbindPopup(): this\r\n\t// Removes the popup previously bound with `bindPopup`.\r\n\tunbindPopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis.off({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = false;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method openPopup(latlng?: LatLng): this\r\n\t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n\topenPopup: function (latlng) {\r\n\t\tif (this._popup) {\r\n\t\t\tif (!(this instanceof FeatureGroup)) {\r\n\t\t\t\tthis._popup._source = this;\r\n\t\t\t}\r\n\t\t\tif (this._popup._prepareOpen(latlng || this._latlng)) {\r\n\t\t\t\t// open the popup on the map\r\n\t\t\t\tthis._popup.openOn(this._map);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(): this\r\n\t// Closes the popup bound to this layer if it is open.\r\n\tclosePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.close();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method togglePopup(): this\r\n\t// Opens or closes the popup bound to this layer depending on its current state.\r\n\ttogglePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.toggle(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method isPopupOpen(): boolean\r\n\t// Returns `true` if the popup bound to this layer is currently open.\r\n\tisPopupOpen: function () {\r\n\t\treturn (this._popup ? this._popup.isOpen() : false);\r\n\t},\r\n\r\n\t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n\t// Sets the content of the popup bound to this layer.\r\n\tsetPopupContent: function (content) {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getPopup(): Popup\r\n\t// Returns the popup bound to this layer.\r\n\tgetPopup: function () {\r\n\t\treturn this._popup;\r\n\t},\r\n\r\n\t_openPopup: function (e) {\r\n\t\tif (!this._popup || !this._map) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// prevent map click\r\n\t\tDomEvent.stop(e);\r\n\r\n\t\tvar target = e.layer || e.target;\r\n\t\tif (this._popup._source === target && !(target instanceof Path)) {\r\n\t\t\t// treat it like a marker and figure out\r\n\t\t\t// if we should toggle it open/closed\r\n\t\t\tif (this._map.hasLayer(this._popup)) {\r\n\t\t\t\tthis.closePopup();\r\n\t\t\t} else {\r\n\t\t\t\tthis.openPopup(e.latlng);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._popup._source = target;\r\n\t\tthis.openPopup(e.latlng);\r\n\t},\r\n\r\n\t_movePopup: function (e) {\r\n\t\tthis._popup.setLatLng(e.latlng);\r\n\t},\r\n\r\n\t_onKeyPress: function (e) {\r\n\t\tif (e.originalEvent.keyCode === 13) {\r\n\t\t\tthis._openPopup(e);\r\n\t\t}\r\n\t}\r\n});\r\n","import {DivOverlay} from './DivOverlay';\nimport {toPoint} from '../geometry/Point';\nimport {Map} from '../map/Map';\nimport {Layer} from './Layer';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as DomEvent from '../dom/DomEvent';\nimport * as Util from '../core/Util';\nimport {FeatureGroup} from './FeatureGroup';\n\n/*\n * @class Tooltip\n * @inherits DivOverlay\n * @aka L.Tooltip\n * Used to display small texts on top of map layers.\n *\n * @example\n * If you want to just bind a tooltip to marker:\n *\n * ```js\n * marker.bindTooltip(\"my tooltip text\").openTooltip();\n * ```\n * Path overlays like polylines also have a `bindTooltip` method.\n *\n * A tooltip can be also standalone:\n *\n * ```js\n * var tooltip = L.tooltip()\n * \t.setLatLng(latlng)\n * \t.setContent('Hello world!<br />This is a nice tooltip.')\n * \t.addTo(map);\n * ```\n * or\n * ```js\n * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})\n * \t.addTo(map);\n * ```\n *\n *\n * Note about tooltip offset. Leaflet takes two options in consideration\n * for computing tooltip offsetting:\n * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n *   Add a positive x offset to move the tooltip to the right, and a positive y offset to\n *   move it to the bottom. Negatives will move to the left and top.\n * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n *   should adapt this value if you use a custom icon.\n */\n\n\n// @namespace Tooltip\nexport var Tooltip = DivOverlay.extend({\n\n\t// @section\n\t// @aka Tooltip options\n\toptions: {\n\t\t// @option pane: String = 'tooltipPane'\n\t\t// `Map pane` where the tooltip will be added.\n\t\tpane: 'tooltipPane',\n\n\t\t// @option offset: Point = Point(0, 0)\n\t\t// Optional offset of the tooltip position.\n\t\toffset: [0, 0],\n\n\t\t// @option direction: String = 'auto'\n\t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n\t\t// `top`, `bottom`, `center`, `auto`.\n\t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n\t\t// position on the map.\n\t\tdirection: 'auto',\n\n\t\t// @option permanent: Boolean = false\n\t\t// Whether to open the tooltip permanently or only on mouseover.\n\t\tpermanent: false,\n\n\t\t// @option sticky: Boolean = false\n\t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n\t\tsticky: false,\n\n\t\t// @option opacity: Number = 0.9\n\t\t// Tooltip container opacity.\n\t\topacity: 0.9\n\t},\n\n\tonAdd: function (map) {\n\t\tDivOverlay.prototype.onAdd.call(this, map);\n\t\tthis.setOpacity(this.options.opacity);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipopen: TooltipEvent\n\t\t// Fired when a tooltip is opened in the map.\n\t\tmap.fire('tooltipopen', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\tthis.addEventParent(this._source);\n\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipopen: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is opened.\n\t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tonRemove: function (map) {\n\t\tDivOverlay.prototype.onRemove.call(this, map);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipclose: TooltipEvent\n\t\t// Fired when a tooltip in the map is closed.\n\t\tmap.fire('tooltipclose', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\tthis.removeEventParent(this._source);\n\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipclose: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is closed.\n\t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n\t\tif (!this.options.permanent) {\n\t\t\tevents.preclick = this.close;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t_initLayout: function () {\n\t\tvar prefix = 'leaflet-tooltip',\n\t\t    className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n\t\tthis._contentNode = this._container = DomUtil.create('div', className);\n\n\t\tthis._container.setAttribute('role', 'tooltip');\n\t\tthis._container.setAttribute('id', 'leaflet-tooltip-' + Util.stamp(this));\n\t},\n\n\t_updateLayout: function () {},\n\n\t_adjustPan: function () {},\n\n\t_setPosition: function (pos) {\n\t\tvar subX, subY,\n\t\t    map = this._map,\n\t\t    container = this._container,\n\t\t    centerPoint = map.latLngToContainerPoint(map.getCenter()),\n\t\t    tooltipPoint = map.layerPointToContainerPoint(pos),\n\t\t    direction = this.options.direction,\n\t\t    tooltipWidth = container.offsetWidth,\n\t\t    tooltipHeight = container.offsetHeight,\n\t\t    offset = toPoint(this.options.offset),\n\t\t    anchor = this._getAnchor();\n\n\t\tif (direction === 'top') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight;\n\t\t} else if (direction === 'bottom') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = 0;\n\t\t} else if (direction === 'center') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'right') {\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'left') {\n\t\t\tsubX = tooltipWidth;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (tooltipPoint.x < centerPoint.x) {\n\t\t\tdirection = 'right';\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else {\n\t\t\tdirection = 'left';\n\t\t\tsubX = tooltipWidth + (offset.x + anchor.x) * 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t}\n\n\t\tpos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);\n\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-right');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-left');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-top');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-bottom');\n\t\tDomUtil.addClass(container, 'leaflet-tooltip-' + direction);\n\t\tDomUtil.setPosition(container, pos);\n\t},\n\n\t_updatePosition: function () {\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._setPosition(pos);\n\t},\n\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\n\t\tif (this._container) {\n\t\t\tDomUtil.setOpacity(this._container, opacity);\n\t\t}\n\t},\n\n\t_animateZoom: function (e) {\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n\t\tthis._setPosition(pos);\n\t},\n\n\t_getAnchor: function () {\n\t\t// Where should we anchor the tooltip on the source layer?\n\t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n\t}\n\n});\n\n// @namespace Tooltip\n// @factory L.tooltip(options?: Tooltip options, source?: Layer)\n// Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\n// @alternative\n// @factory L.tooltip(latlng: LatLng, options?: Tooltip options)\n// Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.\nexport var tooltip = function (options, source) {\n\treturn new Tooltip(options, source);\n};\n\n// @namespace Map\n// @section Methods for Layers and Controls\nMap.include({\n\n\t// @method openTooltip(tooltip: Tooltip): this\n\t// Opens the specified tooltip.\n\t// @alternative\n\t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n\t// Creates a tooltip with the specified content and options and open it.\n\topenTooltip: function (tooltip, latlng, options) {\n\t\tthis._initOverlay(Tooltip, tooltip, latlng, options)\n\t\t  .openOn(this);\n\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(tooltip: Tooltip): this\n\t// Closes the tooltip given as parameter.\n\tcloseTooltip: function (tooltip) {\n\t\ttooltip.close();\n\t\treturn this;\n\t}\n\n});\n\n/*\n * @namespace Layer\n * @section Tooltip methods example\n *\n * All layers share a set of methods convenient for binding tooltips to it.\n *\n * ```js\n * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n * layer.openTooltip();\n * layer.closeTooltip();\n * ```\n */\n\n// @section Tooltip methods\nLayer.include({\n\n\t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n\t// Binds a tooltip to the layer with the passed `content` and sets up the\n\t// necessary event listeners. If a `Function` is passed it will receive\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\n\tbindTooltip: function (content, options) {\n\n\t\tif (this._tooltip && this.isTooltipOpen()) {\n\t\t\tthis.unbindTooltip();\n\t\t}\n\n\t\tthis._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options);\n\t\tthis._initTooltipInteractions();\n\n\t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n\t\t\tthis.openTooltip();\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method unbindTooltip(): this\n\t// Removes the tooltip previously bound with `bindTooltip`.\n\tunbindTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._initTooltipInteractions(true);\n\t\t\tthis.closeTooltip();\n\t\t\tthis._tooltip = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_initTooltipInteractions: function (remove) {\n\t\tif (!remove && this._tooltipHandlersAdded) { return; }\n\t\tvar onOff = remove ? 'off' : 'on',\n\t\t    events = {\n\t\t\tremove: this.closeTooltip,\n\t\t\tmove: this._moveTooltip\n\t\t    };\n\t\tif (!this._tooltip.options.permanent) {\n\t\t\tevents.mouseover = this._openTooltip;\n\t\t\tevents.mouseout = this.closeTooltip;\n\t\t\tevents.click = this._openTooltip;\n\t\t\tif (this._map) {\n\t\t\t\tthis._addFocusListeners();\n\t\t\t} else {\n\t\t\t\tevents.add = this._addFocusListeners;\n\t\t\t}\n\t\t} else {\n\t\t\tevents.add = this._openTooltip;\n\t\t}\n\t\tif (this._tooltip.options.sticky) {\n\t\t\tevents.mousemove = this._moveTooltip;\n\t\t}\n\t\tthis[onOff](events);\n\t\tthis._tooltipHandlersAdded = !remove;\n\t},\n\n\t// @method openTooltip(latlng?: LatLng): this\n\t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n\topenTooltip: function (latlng) {\n\t\tif (this._tooltip) {\n\t\t\tif (!(this instanceof FeatureGroup)) {\n\t\t\t\tthis._tooltip._source = this;\n\t\t\t}\n\t\t\tif (this._tooltip._prepareOpen(latlng)) {\n\t\t\t\t// open the tooltip on the map\n\t\t\t\tthis._tooltip.openOn(this._map);\n\n\t\t\t\tif (this.getElement) {\n\t\t\t\t\tthis._setAriaDescribedByOnLayer(this);\n\t\t\t\t} else if (this.eachLayer) {\n\t\t\t\t\tthis.eachLayer(this._setAriaDescribedByOnLayer, this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(): this\n\t// Closes the tooltip bound to this layer if it is open.\n\tcloseTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\treturn this._tooltip.close();\n\t\t}\n\t},\n\n\t// @method toggleTooltip(): this\n\t// Opens or closes the tooltip bound to this layer depending on its current state.\n\ttoggleTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.toggle(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method isTooltipOpen(): boolean\n\t// Returns `true` if the tooltip bound to this layer is currently open.\n\tisTooltipOpen: function () {\n\t\treturn this._tooltip.isOpen();\n\t},\n\n\t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n\t// Sets the content of the tooltip bound to this layer.\n\tsetTooltipContent: function (content) {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.setContent(content);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getTooltip(): Tooltip\n\t// Returns the tooltip bound to this layer.\n\tgetTooltip: function () {\n\t\treturn this._tooltip;\n\t},\n\n\t_addFocusListeners: function () {\n\t\tif (this.getElement) {\n\t\t\tthis._addFocusListenersOnLayer(this);\n\t\t} else if (this.eachLayer) {\n\t\t\tthis.eachLayer(this._addFocusListenersOnLayer, this);\n\t\t}\n\t},\n\n\t_addFocusListenersOnLayer: function (layer) {\n\t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n\t\tif (el) {\n\t\t\tDomEvent.on(el, 'focus', function () {\n\t\t\t\tthis._tooltip._source = layer;\n\t\t\t\tthis.openTooltip();\n\t\t\t}, this);\n\t\t\tDomEvent.on(el, 'blur', this.closeTooltip, this);\n\t\t}\n\t},\n\n\t_setAriaDescribedByOnLayer: function (layer) {\n\t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n\t\tif (el) {\n\t\t\tel.setAttribute('aria-describedby', this._tooltip._container.id);\n\t\t}\n\t},\n\n\n\t_openTooltip: function (e) {\n\t\tif (!this._tooltip || !this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the map is moving, we will show the tooltip after it's done.\n\t\tif (this._map.dragging && this._map.dragging.moving() && !this._openOnceFlag) {\n\t\t\tthis._openOnceFlag = true;\n\t\t\tvar that = this;\n\t\t\tthis._map.once('moveend', function () {\n\t\t\t\tthat._openOnceFlag = false;\n\t\t\t\tthat._openTooltip(e);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis._tooltip._source = e.layer || e.target;\n\n\t\tthis.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined);\n\t},\n\n\t_moveTooltip: function (e) {\n\t\tvar latlng = e.latlng, containerPoint, layerPoint;\n\t\tif (this._tooltip.options.sticky && e.originalEvent) {\n\t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n\t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n\t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n\t\t}\n\t\tthis._tooltip.setLatLng(latlng);\n\t}\n});\n","import {Icon} from './Icon';\nimport {toPoint as point} from '../../geometry/Point';\nimport {empty} from '../../dom/DomUtil';\n\n/*\n * @class DivIcon\n * @aka L.DivIcon\n * @inherits Icon\n *\n * Represents a lightweight icon for markers that uses a simple `<div>`\n * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n *\n * @example\n * ```js\n * var myIcon = L.divIcon({className: 'my-div-icon'});\n * // you can set .my-div-icon styles in CSS\n *\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n * ```\n *\n * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n */\n\nexport var DivIcon = Icon.extend({\n\toptions: {\n\t\t// @section\n\t\t// @aka DivIcon options\n\t\ticonSize: [12, 12], // also can be set through CSS\n\n\t\t// iconAnchor: (Point),\n\t\t// popupAnchor: (Point),\n\n\t\t// @option html: String|HTMLElement = ''\n\t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n\t\t// an instance of `HTMLElement`.\n\t\thtml: false,\n\n\t\t// @option bgPos: Point = [0, 0]\n\t\t// Optional relative position of the background, in pixels\n\t\tbgPos: null,\n\n\t\tclassName: 'leaflet-div-icon'\n\t},\n\n\tcreateIcon: function (oldIcon) {\n\t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n\t\t    options = this.options;\n\n\t\tif (options.html instanceof Element) {\n\t\t\tempty(div);\n\t\t\tdiv.appendChild(options.html);\n\t\t} else {\n\t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n\t\t}\n\n\t\tif (options.bgPos) {\n\t\t\tvar bgPos = point(options.bgPos);\n\t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n\t\t}\n\t\tthis._setIconStyles(div, 'icon');\n\n\t\treturn div;\n\t},\n\n\tcreateShadow: function () {\n\t\treturn null;\n\t}\n});\n\n// @factory L.divIcon(options: DivIcon options)\n// Creates a `DivIcon` instance with the given options.\nexport function divIcon(options) {\n\treturn new DivIcon(options);\n}\n","import {Icon} from './Icon';\nexport {icon} from './Icon';\nimport {IconDefault} from './Icon.Default';\nIcon.Default = IconDefault;\nexport {Icon};\n\nexport {DivIcon, divIcon} from './DivIcon';\nexport {Marker, marker} from './Marker';\n","import {Layer} from '../Layer';\nimport Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport {LatLngBounds, toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * @class GridLayer\n * @inherits Layer\n * @aka L.GridLayer\n *\n * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n *\n *\n * @section Synchronous usage\n * @example\n *\n * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords){\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n *         var ctx = tile.getContext('2d');\n *\n *         // return the tile so it can be rendered on screen\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section Asynchronous usage\n * @example\n *\n * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords, done){\n *         var error;\n *\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // draw something asynchronously and pass the tile to the done() callback\n *         setTimeout(function() {\n *             done(error, tile);\n *         }, 1000);\n *\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section\n */\n\n\nexport var GridLayer = Layer.extend({\n\n\t// @section\n\t// @aka GridLayer options\n\toptions: {\n\t\t// @option tileSize: Number|Point = 256\n\t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n\t\ttileSize: 256,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n\t\topacity: 1,\n\n\t\t// @option updateWhenIdle: Boolean = (depends)\n\t\t// Load new tiles only when panning ends.\n\t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n\t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n\t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n\t\tupdateWhenIdle: Browser.mobile,\n\n\t\t// @option updateWhenZooming: Boolean = true\n\t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n\t\tupdateWhenZooming: true,\n\n\t\t// @option updateInterval: Number = 200\n\t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n\t\tupdateInterval: 200,\n\n\t\t// @option zIndex: Number = 1\n\t\t// The explicit zIndex of the tile layer.\n\t\tzIndex: 1,\n\n\t\t// @option bounds: LatLngBounds = undefined\n\t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n\t\tbounds: null,\n\n\t\t// @option minZoom: Number = 0\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n\t\tminZoom: 0,\n\n\t\t// @option maxZoom: Number = undefined\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n\t\tmaxZoom: undefined,\n\n\t\t// @option maxNativeZoom: Number = undefined\n\t\t// Maximum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n\t\t// from `maxNativeZoom` level and auto-scaled.\n\t\tmaxNativeZoom: undefined,\n\n\t\t// @option minNativeZoom: Number = undefined\n\t\t// Minimum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n\t\t// from `minNativeZoom` level and auto-scaled.\n\t\tminNativeZoom: undefined,\n\n\t\t// @option noWrap: Boolean = false\n\t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n\t\t// GridLayer will only be displayed once at low zoom levels. Has no\n\t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n\t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n\t\t// tiles outside the CRS limits.\n\t\tnoWrap: false,\n\n\t\t// @option pane: String = 'tilePane'\n\t\t// `Map pane` where the grid layer will be added.\n\t\tpane: 'tilePane',\n\n\t\t// @option className: String = ''\n\t\t// A custom class name to assign to the tile layer. Empty by default.\n\t\tclassName: '',\n\n\t\t// @option keepBuffer: Number = 2\n\t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n\t\tkeepBuffer: 2\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t},\n\n\tonAdd: function () {\n\t\tthis._initContainer();\n\n\t\tthis._levels = {};\n\t\tthis._tiles = {};\n\n\t\tthis._resetView(); // implicit _update() call\n\t},\n\n\tbeforeAdd: function (map) {\n\t\tmap._addZoomLimit(this);\n\t},\n\n\tonRemove: function (map) {\n\t\tthis._removeAllTiles();\n\t\tDomUtil.remove(this._container);\n\t\tmap._removeZoomLimit(this);\n\t\tthis._container = null;\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t// @method bringToFront: this\n\t// Brings the tile layer to the top of all tile layers.\n\tbringToFront: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toFront(this._container);\n\t\t\tthis._setAutoZIndex(Math.max);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack: this\n\t// Brings the tile layer to the bottom of all tile layers.\n\tbringToBack: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toBack(this._container);\n\t\t\tthis._setAutoZIndex(Math.min);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getContainer: HTMLElement\n\t// Returns the HTML element that contains the tiles for this layer.\n\tgetContainer: function () {\n\t\treturn this._container;\n\t},\n\n\t// @method setOpacity(opacity: Number): this\n\t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\t\tthis._updateOpacity();\n\t\treturn this;\n\t},\n\n\t// @method setZIndex(zIndex: Number): this\n\t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n\tsetZIndex: function (zIndex) {\n\t\tthis.options.zIndex = zIndex;\n\t\tthis._updateZIndex();\n\n\t\treturn this;\n\t},\n\n\t// @method isLoading: Boolean\n\t// Returns `true` if any tile in the grid layer has not finished loading.\n\tisLoading: function () {\n\t\treturn this._loading;\n\t},\n\n\t// @method redraw: this\n\t// Causes the layer to clear all the tiles and request them again.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._removeAllTiles();\n\t\t\tvar tileZoom = this._clampZoom(this._map.getZoom());\n\t\t\tif (tileZoom !== this._tileZoom) {\n\t\t\t\tthis._tileZoom = tileZoom;\n\t\t\t\tthis._updateLevels();\n\t\t\t}\n\t\t\tthis._update();\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewprereset: this._invalidateAll,\n\t\t\tviewreset: this._resetView,\n\t\t\tzoom: this._resetView,\n\t\t\tmoveend: this._onMoveEnd\n\t\t};\n\n\t\tif (!this.options.updateWhenIdle) {\n\t\t\t// update tiles on move, but not more often than once per given interval\n\t\t\tif (!this._onMove) {\n\t\t\t\tthis._onMove = Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n\t\t\t}\n\n\t\t\tevents.move = this._onMove;\n\t\t}\n\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._animateZoom;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t// @section Extension methods\n\t// Layers extending `GridLayer` shall reimplement the following method.\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\n\t// Called only internally, must be overridden by classes extending `GridLayer`.\n\t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n\t// is specified, it must be called when the tile has finished loading and drawing.\n\tcreateTile: function () {\n\t\treturn document.createElement('div');\n\t},\n\n\t// @section\n\t// @method getTileSize: Point\n\t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n\tgetTileSize: function () {\n\t\tvar s = this.options.tileSize;\n\t\treturn s instanceof Point ? s : new Point(s, s);\n\t},\n\n\t_updateZIndex: function () {\n\t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n\t\t\tthis._container.style.zIndex = this.options.zIndex;\n\t\t}\n\t},\n\n\t_setAutoZIndex: function (compare) {\n\t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n\t\tvar layers = this.getPane().children,\n\t\t    edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n\t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n\t\t\tzIndex = layers[i].style.zIndex;\n\n\t\t\tif (layers[i] !== this._container && zIndex) {\n\t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n\t\t\t}\n\t\t}\n\n\t\tif (isFinite(edgeZIndex)) {\n\t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n\t\t\tthis._updateZIndex();\n\t\t}\n\t},\n\n\t_updateOpacity: function () {\n\t\tif (!this._map) { return; }\n\n\t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n\t\tif (Browser.ielt9) { return; }\n\n\t\tDomUtil.setOpacity(this._container, this.options.opacity);\n\n\t\tvar now = +new Date(),\n\t\t    nextFrame = false,\n\t\t    willPrune = false;\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar tile = this._tiles[key];\n\t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n\t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n\t\t\tDomUtil.setOpacity(tile.el, fade);\n\t\t\tif (fade < 1) {\n\t\t\t\tnextFrame = true;\n\t\t\t} else {\n\t\t\t\tif (tile.active) {\n\t\t\t\t\twillPrune = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis._onOpaqueTile(tile);\n\t\t\t\t}\n\t\t\t\ttile.active = true;\n\t\t\t}\n\t\t}\n\n\t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n\t\tif (nextFrame) {\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t}\n\t},\n\n\t_onOpaqueTile: Util.falseFn,\n\n\t_initContainer: function () {\n\t\tif (this._container) { return; }\n\n\t\tthis._container = DomUtil.create('div', 'leaflet-layer ' + (this.options.className || ''));\n\t\tthis._updateZIndex();\n\n\t\tif (this.options.opacity < 1) {\n\t\t\tthis._updateOpacity();\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t},\n\n\t_updateLevels: function () {\n\n\t\tvar zoom = this._tileZoom,\n\t\t    maxZoom = this.options.maxZoom;\n\n\t\tif (zoom === undefined) { return undefined; }\n\n\t\tfor (var z in this._levels) {\n\t\t\tz = Number(z);\n\t\t\tif (this._levels[z].el.children.length || z === zoom) {\n\t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n\t\t\t\tthis._onUpdateLevel(z);\n\t\t\t} else {\n\t\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\t\tthis._removeTilesAtZoom(z);\n\t\t\t\tthis._onRemoveLevel(z);\n\t\t\t\tdelete this._levels[z];\n\t\t\t}\n\t\t}\n\n\t\tvar level = this._levels[zoom],\n\t\t    map = this._map;\n\n\t\tif (!level) {\n\t\t\tlevel = this._levels[zoom] = {};\n\n\t\t\tlevel.el = DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n\t\t\tlevel.el.style.zIndex = maxZoom;\n\n\t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n\t\t\tlevel.zoom = zoom;\n\n\t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n\t\t\t// force the browser to consider the newly added element for transition\n\t\t\tUtil.falseFn(level.el.offsetWidth);\n\n\t\t\tthis._onCreateLevel(level);\n\t\t}\n\n\t\tthis._level = level;\n\n\t\treturn level;\n\t},\n\n\t_onUpdateLevel: Util.falseFn,\n\n\t_onRemoveLevel: Util.falseFn,\n\n\t_onCreateLevel: Util.falseFn,\n\n\t_pruneTiles: function () {\n\t\tif (!this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar key, tile;\n\n\t\tvar zoom = this._map.getZoom();\n\t\tif (zoom > this.options.maxZoom ||\n\t\t\tzoom < this.options.minZoom) {\n\t\t\tthis._removeAllTiles();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\ttile.retain = tile.current;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\tif (tile.current && !tile.active) {\n\t\t\t\tvar coords = tile.coords;\n\t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n\t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\tif (!this._tiles[key].retain) {\n\t\t\t\tthis._removeTile(key);\n\t\t\t}\n\t\t}\n\t},\n\n\t_removeTilesAtZoom: function (zoom) {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (this._tiles[key].coords.z !== zoom) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_removeAllTiles: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_invalidateAll: function () {\n\t\tfor (var z in this._levels) {\n\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\tthis._onRemoveLevel(Number(z));\n\t\t\tdelete this._levels[z];\n\t\t}\n\t\tthis._removeAllTiles();\n\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t_retainParent: function (x, y, z, minZoom) {\n\t\tvar x2 = Math.floor(x / 2),\n\t\t    y2 = Math.floor(y / 2),\n\t\t    z2 = z - 1,\n\t\t    coords2 = new Point(+x2, +y2);\n\t\tcoords2.z = +z2;\n\n\t\tvar key = this._tileCoordsToKey(coords2),\n\t\t    tile = this._tiles[key];\n\n\t\tif (tile && tile.active) {\n\t\t\ttile.retain = true;\n\t\t\treturn true;\n\n\t\t} else if (tile && tile.loaded) {\n\t\t\ttile.retain = true;\n\t\t}\n\n\t\tif (z2 > minZoom) {\n\t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_retainChildren: function (x, y, z, maxZoom) {\n\n\t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n\t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = z + 1;\n\n\t\t\t\tvar key = this._tileCoordsToKey(coords),\n\t\t\t\t    tile = this._tiles[key];\n\n\t\t\t\tif (tile && tile.active) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t} else if (tile && tile.loaded) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t}\n\n\t\t\t\tif (z + 1 < maxZoom) {\n\t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetView: function (e) {\n\t\tvar animating = e && (e.pinch || e.flyTo);\n\t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n\t},\n\n\t_animateZoom: function (e) {\n\t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n\t},\n\n\t_clampZoom: function (zoom) {\n\t\tvar options = this.options;\n\n\t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n\t\t\treturn options.minNativeZoom;\n\t\t}\n\n\t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n\t\t\treturn options.maxNativeZoom;\n\t\t}\n\n\t\treturn zoom;\n\t},\n\n\t_setView: function (center, zoom, noPrune, noUpdate) {\n\t\tvar tileZoom = Math.round(zoom);\n\t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n\t\t    (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n\t\t\ttileZoom = undefined;\n\t\t} else {\n\t\t\ttileZoom = this._clampZoom(tileZoom);\n\t\t}\n\n\t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n\t\tif (!noUpdate || tileZoomChanged) {\n\n\t\t\tthis._tileZoom = tileZoom;\n\n\t\t\tif (this._abortLoading) {\n\t\t\t\tthis._abortLoading();\n\t\t\t}\n\n\t\t\tthis._updateLevels();\n\t\t\tthis._resetGrid();\n\n\t\t\tif (tileZoom !== undefined) {\n\t\t\t\tthis._update(center);\n\t\t\t}\n\n\t\t\tif (!noPrune) {\n\t\t\t\tthis._pruneTiles();\n\t\t\t}\n\n\t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n\t\t\t// a zoom anim or a pinch gesture\n\t\t\tthis._noPrune = !!noPrune;\n\t\t}\n\n\t\tthis._setZoomTransforms(center, zoom);\n\t},\n\n\t_setZoomTransforms: function (center, zoom) {\n\t\tfor (var i in this._levels) {\n\t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n\t\t}\n\t},\n\n\t_setZoomTransform: function (level, center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n\t\t    translate = level.origin.multiplyBy(scale)\n\t\t        .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(level.el, translate, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(level.el, translate);\n\t\t}\n\t},\n\n\t_resetGrid: function () {\n\t\tvar map = this._map,\n\t\t    crs = map.options.crs,\n\t\t    tileSize = this._tileSize = this.getTileSize(),\n\t\t    tileZoom = this._tileZoom;\n\n\t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n\t\tif (bounds) {\n\t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n\t\t}\n\n\t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n\t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n\t\t];\n\t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n\t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n\t\t];\n\t},\n\n\t_onMoveEnd: function () {\n\t\tif (!this._map || this._map._animatingZoom) { return; }\n\n\t\tthis._update();\n\t},\n\n\t_getTiledPixelBounds: function (center) {\n\t\tvar map = this._map,\n\t\t    mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n\t\t    scale = map.getZoomScale(mapZoom, this._tileZoom),\n\t\t    pixelCenter = map.project(center, this._tileZoom).floor(),\n\t\t    halfSize = map.getSize().divideBy(scale * 2);\n\n\t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n\t},\n\n\t// Private method to load tiles in the grid's active zoom level according to map bounds\n\t_update: function (center) {\n\t\tvar map = this._map;\n\t\tif (!map) { return; }\n\t\tvar zoom = this._clampZoom(map.getZoom());\n\n\t\tif (center === undefined) { center = map.getCenter(); }\n\t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n\t\tvar pixelBounds = this._getTiledPixelBounds(center),\n\t\t    tileRange = this._pxBoundsToTileRange(pixelBounds),\n\t\t    tileCenter = tileRange.getCenter(),\n\t\t    queue = [],\n\t\t    margin = this.options.keepBuffer,\n\t\t    noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n\t\t                              tileRange.getTopRight().add([margin, -margin]));\n\n\t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n\t\tif (!(isFinite(tileRange.min.x) &&\n\t\t      isFinite(tileRange.min.y) &&\n\t\t      isFinite(tileRange.max.x) &&\n\t\t      isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar c = this._tiles[key].coords;\n\t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n\t\t\t\tthis._tiles[key].current = false;\n\t\t\t}\n\t\t}\n\n\t\t// _update just loads more tiles. If the tile zoom level differs too much\n\t\t// from the map's, let _setView reset levels and prune old tiles.\n\t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n\t\t// create a queue of coordinates to load tiles from\n\t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n\t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = this._tileZoom;\n\n\t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n\t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n\t\t\t\tif (tile) {\n\t\t\t\t\ttile.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push(coords);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort tile queue to load tiles in order of their distance to center\n\t\tqueue.sort(function (a, b) {\n\t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n\t\t});\n\n\t\tif (queue.length !== 0) {\n\t\t\t// if it's the first batch of tiles to load\n\t\t\tif (!this._loading) {\n\t\t\t\tthis._loading = true;\n\t\t\t\t// @event loading: Event\n\t\t\t\t// Fired when the grid layer starts loading tiles.\n\t\t\t\tthis.fire('loading');\n\t\t\t}\n\n\t\t\t// create DOM fragment to append tiles in one batch\n\t\t\tvar fragment = document.createDocumentFragment();\n\n\t\t\tfor (i = 0; i < queue.length; i++) {\n\t\t\t\tthis._addTile(queue[i], fragment);\n\t\t\t}\n\n\t\t\tthis._level.el.appendChild(fragment);\n\t\t}\n\t},\n\n\t_isValidTile: function (coords) {\n\t\tvar crs = this._map.options.crs;\n\n\t\tif (!crs.infinite) {\n\t\t\t// don't load tile if it's out of bounds and not wrapped\n\t\t\tvar bounds = this._globalTileRange;\n\t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n\t\t\t    (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n\t\t}\n\n\t\tif (!this.options.bounds) { return true; }\n\n\t\t// don't load tile if it doesn't intersect the bounds in options\n\t\tvar tileBounds = this._tileCoordsToBounds(coords);\n\t\treturn latLngBounds(this.options.bounds).overlaps(tileBounds);\n\t},\n\n\t_keyToBounds: function (key) {\n\t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n\t},\n\n\t_tileCoordsToNwSe: function (coords) {\n\t\tvar map = this._map,\n\t\t    tileSize = this.getTileSize(),\n\t\t    nwPoint = coords.scaleBy(tileSize),\n\t\t    sePoint = nwPoint.add(tileSize),\n\t\t    nw = map.unproject(nwPoint, coords.z),\n\t\t    se = map.unproject(sePoint, coords.z);\n\t\treturn [nw, se];\n\t},\n\n\t// converts tile coordinates to its geographical bounds\n\t_tileCoordsToBounds: function (coords) {\n\t\tvar bp = this._tileCoordsToNwSe(coords),\n\t\t    bounds = new LatLngBounds(bp[0], bp[1]);\n\n\t\tif (!this.options.noWrap) {\n\t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n\t\t}\n\t\treturn bounds;\n\t},\n\t// converts tile coordinates to key for the tile cache\n\t_tileCoordsToKey: function (coords) {\n\t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n\t},\n\n\t// converts tile cache key to coordinates\n\t_keyToTileCoords: function (key) {\n\t\tvar k = key.split(':'),\n\t\t    coords = new Point(+k[0], +k[1]);\n\t\tcoords.z = +k[2];\n\t\treturn coords;\n\t},\n\n\t_removeTile: function (key) {\n\t\tvar tile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\tDomUtil.remove(tile.el);\n\n\t\tdelete this._tiles[key];\n\n\t\t// @event tileunload: TileEvent\n\t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n\t\tthis.fire('tileunload', {\n\t\t\ttile: tile.el,\n\t\t\tcoords: this._keyToTileCoords(key)\n\t\t});\n\t},\n\n\t_initTile: function (tile) {\n\t\tDomUtil.addClass(tile, 'leaflet-tile');\n\n\t\tvar tileSize = this.getTileSize();\n\t\ttile.style.width = tileSize.x + 'px';\n\t\ttile.style.height = tileSize.y + 'px';\n\n\t\ttile.onselectstart = Util.falseFn;\n\t\ttile.onmousemove = Util.falseFn;\n\n\t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n\t\tif (Browser.ielt9 && this.options.opacity < 1) {\n\t\t\tDomUtil.setOpacity(tile, this.options.opacity);\n\t\t}\n\t},\n\n\t_addTile: function (coords, container) {\n\t\tvar tilePos = this._getTilePos(coords),\n\t\t    key = this._tileCoordsToKey(coords);\n\n\t\tvar tile = this.createTile(this._wrapCoords(coords), Util.bind(this._tileReady, this, coords));\n\n\t\tthis._initTile(tile);\n\n\t\t// if createTile is defined with a second argument (\"done\" callback),\n\t\t// we know that tile is async and will be ready later; otherwise\n\t\tif (this.createTile.length < 2) {\n\t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n\t\t\tUtil.requestAnimFrame(Util.bind(this._tileReady, this, coords, null, tile));\n\t\t}\n\n\t\tDomUtil.setPosition(tile, tilePos);\n\n\t\t// save tile in cache\n\t\tthis._tiles[key] = {\n\t\t\tel: tile,\n\t\t\tcoords: coords,\n\t\t\tcurrent: true\n\t\t};\n\n\t\tcontainer.appendChild(tile);\n\t\t// @event tileloadstart: TileEvent\n\t\t// Fired when a tile is requested and starts loading.\n\t\tthis.fire('tileloadstart', {\n\t\t\ttile: tile,\n\t\t\tcoords: coords\n\t\t});\n\t},\n\n\t_tileReady: function (coords, err, tile) {\n\t\tif (err) {\n\t\t\t// @event tileerror: TileErrorEvent\n\t\t\t// Fired when there is an error loading a tile.\n\t\t\tthis.fire('tileerror', {\n\t\t\t\terror: err,\n\t\t\t\ttile: tile,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tvar key = this._tileCoordsToKey(coords);\n\n\t\ttile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\ttile.loaded = +new Date();\n\t\tif (this._map._fadeAnimated) {\n\t\t\tDomUtil.setOpacity(tile.el, 0);\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t} else {\n\t\t\ttile.active = true;\n\t\t\tthis._pruneTiles();\n\t\t}\n\n\t\tif (!err) {\n\t\t\tDomUtil.addClass(tile.el, 'leaflet-tile-loaded');\n\n\t\t\t// @event tileload: TileEvent\n\t\t\t// Fired when a tile loads.\n\t\t\tthis.fire('tileload', {\n\t\t\t\ttile: tile.el,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tif (this._noTilesToLoad()) {\n\t\t\tthis._loading = false;\n\t\t\t// @event load: Event\n\t\t\t// Fired when the grid layer loaded all visible tiles.\n\t\t\tthis.fire('load');\n\n\t\t\tif (Browser.ielt9 || !this._map._fadeAnimated) {\n\t\t\t\tUtil.requestAnimFrame(this._pruneTiles, this);\n\t\t\t} else {\n\t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n\t\t\t\t// to trigger a pruning.\n\t\t\t\tsetTimeout(Util.bind(this._pruneTiles, this), 250);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getTilePos: function (coords) {\n\t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n\t},\n\n\t_wrapCoords: function (coords) {\n\t\tvar newCoords = new Point(\n\t\t\tthis._wrapX ? Util.wrapNum(coords.x, this._wrapX) : coords.x,\n\t\t\tthis._wrapY ? Util.wrapNum(coords.y, this._wrapY) : coords.y);\n\t\tnewCoords.z = coords.z;\n\t\treturn newCoords;\n\t},\n\n\t_pxBoundsToTileRange: function (bounds) {\n\t\tvar tileSize = this.getTileSize();\n\t\treturn new Bounds(\n\t\t\tbounds.min.unscaleBy(tileSize).floor(),\n\t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n\t},\n\n\t_noTilesToLoad: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (!this._tiles[key].loaded) { return false; }\n\t\t}\n\t\treturn true;\n\t}\n});\n\n// @factory L.gridLayer(options?: GridLayer options)\n// Creates a new instance of GridLayer with the supplied options.\nexport function gridLayer(options) {\n\treturn new GridLayer(options);\n}\n","import {GridLayer} from './GridLayer';\r\nimport Browser from '../../core/Browser';\r\nimport * as Util from '../../core/Util';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\n\r\n\r\n/*\r\n * @class TileLayer\r\n * @inherits GridLayer\r\n * @aka L.TileLayer\r\n * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'}).addTo(map);\n * ```\r\n *\r\n * @section URL template\r\n * @example\r\n *\r\n * A string of the following form:\r\n *\r\n * ```\r\n * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n * ```\r\n *\r\n * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"&commat;2x\" to the URL to load retina tiles.\r\n *\r\n * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n *\r\n * ```\r\n * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n * ```\r\n */\r\n\r\n\r\nexport var TileLayer = GridLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer options\r\n\toptions: {\r\n\t\t// @option minZoom: Number = 0\r\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n\t\tminZoom: 0,\r\n\r\n\t\t// @option maxZoom: Number = 18\r\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n\t\tmaxZoom: 18,\r\n\r\n\t\t// @option subdomains: String|String[] = 'abc'\r\n\t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n\t\tsubdomains: 'abc',\r\n\r\n\t\t// @option errorTileUrl: String = ''\r\n\t\t// URL to the tile image to show in place of the tile that failed to load.\r\n\t\terrorTileUrl: '',\r\n\r\n\t\t// @option zoomOffset: Number = 0\r\n\t\t// The zoom number used in tile URLs will be offset with this value.\r\n\t\tzoomOffset: 0,\r\n\r\n\t\t// @option tms: Boolean = false\r\n\t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n\t\ttms: false,\r\n\r\n\t\t// @option zoomReverse: Boolean = false\r\n\t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n\t\tzoomReverse: false,\r\n\r\n\t\t// @option detectRetina: Boolean = false\r\n\t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n\t\tdetectRetina: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option referrerPolicy: Boolean|String = false\r\n\t\t// Whether the referrerPolicy attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided.\r\n\t\t// This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer\r\n\t\t// (e.g. to validate an API token).\r\n\t\t// Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values.\r\n\t\treferrerPolicy: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n\t\tif (options.detectRetina && Browser.retina && options.maxZoom > 0) {\r\n\r\n\t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n\t\t\tif (!options.zoomReverse) {\r\n\t\t\t\toptions.zoomOffset++;\r\n\t\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);\r\n\t\t\t} else {\r\n\t\t\t\toptions.zoomOffset--;\r\n\t\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom + 1);\r\n\t\t\t}\r\n\r\n\t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n\t\t} else if (!options.zoomReverse) {\r\n\t\t\t// make sure maxZoom is gte minZoom\r\n\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom);\r\n\t\t} else {\r\n\t\t\t// make sure minZoom is lte maxZoom\r\n\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom);\r\n\t\t}\r\n\r\n\t\tif (typeof options.subdomains === 'string') {\r\n\t\t\toptions.subdomains = options.subdomains.split('');\r\n\t\t}\r\n\r\n\t\tthis.on('tileunload', this._onTileRemove);\r\n\t},\r\n\r\n\t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n\t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n\t// If the URL does not change, the layer will not be redrawn unless\r\n\t// the noRedraw parameter is set to false.\r\n\tsetUrl: function (url, noRedraw) {\r\n\t\tif (this._url === url && noRedraw === undefined) {\r\n\t\t\tnoRedraw = true;\r\n\t\t}\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n\t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n\t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n\t// callback is called when the tile has been loaded.\r\n\tcreateTile: function (coords, done) {\r\n\t\tvar tile = document.createElement('img');\r\n\r\n\t\tDomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));\r\n\t\tDomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\t// for this new option we follow the documented behavior\r\n\t\t// more closely by only setting the property when string\r\n\t\tif (typeof this.options.referrerPolicy === 'string') {\r\n\t\t\ttile.referrerPolicy = this.options.referrerPolicy;\r\n\t\t}\r\n\r\n\t\t// The alt attribute is set to the empty string,\r\n\t\t// allowing screen readers to ignore the decorative image tiles.\r\n\t\t// https://www.w3.org/WAI/tutorials/images/decorative/\r\n\t\t// https://www.w3.org/TR/html-aria/#el-img-empty-alt\r\n\t\ttile.alt = '';\r\n\r\n\t\ttile.src = this.getTileUrl(coords);\r\n\r\n\t\treturn tile;\r\n\t},\r\n\r\n\t// @section Extension methods\r\n\t// @uninheritable\r\n\t// Layers extending `TileLayer` might reimplement the following method.\r\n\t// @method getTileUrl(coords: Object): String\r\n\t// Called only internally, returns the URL for a tile given its coordinates.\r\n\t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n\tgetTileUrl: function (coords) {\r\n\t\tvar data = {\r\n\t\t\tr: Browser.retina ? '@2x' : '',\r\n\t\t\ts: this._getSubdomain(coords),\r\n\t\t\tx: coords.x,\r\n\t\t\ty: coords.y,\r\n\t\t\tz: this._getZoomForUrl()\r\n\t\t};\r\n\t\tif (this._map && !this._map.options.crs.infinite) {\r\n\t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n\t\t\tif (this.options.tms) {\r\n\t\t\t\tdata['y'] = invertedY;\r\n\t\t\t}\r\n\t\t\tdata['-y'] = invertedY;\r\n\t\t}\r\n\r\n\t\treturn Util.template(this._url, Util.extend(data, this.options));\r\n\t},\r\n\r\n\t_tileOnLoad: function (done, tile) {\r\n\t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n\t\tif (Browser.ielt9) {\r\n\t\t\tsetTimeout(Util.bind(done, this, null, tile), 0);\r\n\t\t} else {\r\n\t\t\tdone(null, tile);\r\n\t\t}\r\n\t},\r\n\r\n\t_tileOnError: function (done, tile, e) {\r\n\t\tvar errorUrl = this.options.errorTileUrl;\r\n\t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n\t\t\ttile.src = errorUrl;\r\n\t\t}\r\n\t\tdone(e, tile);\r\n\t},\r\n\r\n\t_onTileRemove: function (e) {\r\n\t\te.tile.onload = null;\r\n\t},\r\n\r\n\t_getZoomForUrl: function () {\r\n\t\tvar zoom = this._tileZoom,\r\n\t\tmaxZoom = this.options.maxZoom,\r\n\t\tzoomReverse = this.options.zoomReverse,\r\n\t\tzoomOffset = this.options.zoomOffset;\r\n\r\n\t\tif (zoomReverse) {\r\n\t\t\tzoom = maxZoom - zoom;\r\n\t\t}\r\n\r\n\t\treturn zoom + zoomOffset;\r\n\t},\r\n\r\n\t_getSubdomain: function (tilePoint) {\r\n\t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n\t\treturn this.options.subdomains[index];\r\n\t},\r\n\r\n\t// stops loading all tiles in the background layer\r\n\t_abortLoading: function () {\r\n\t\tvar i, tile;\r\n\t\tfor (i in this._tiles) {\r\n\t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n\t\t\t\ttile = this._tiles[i].el;\r\n\r\n\t\t\t\ttile.onload = Util.falseFn;\r\n\t\t\t\ttile.onerror = Util.falseFn;\r\n\r\n\t\t\t\tif (!tile.complete) {\r\n\t\t\t\t\ttile.src = Util.emptyImageUrl;\r\n\t\t\t\t\tvar coords = this._tiles[i].coords;\r\n\t\t\t\t\tDomUtil.remove(tile);\r\n\t\t\t\t\tdelete this._tiles[i];\r\n\t\t\t\t\t// @event tileabort: TileEvent\r\n\t\t\t\t\t// Fired when a tile was loading but is now not wanted.\r\n\t\t\t\t\tthis.fire('tileabort', {\r\n\t\t\t\t\t\ttile: tile,\r\n\t\t\t\t\t\tcoords: coords\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_removeTile: function (key) {\r\n\t\tvar tile = this._tiles[key];\r\n\t\tif (!tile) { return; }\r\n\r\n\t\t// Cancels any pending http requests associated with the tile\r\n\t\ttile.el.setAttribute('src', Util.emptyImageUrl);\r\n\r\n\t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n\t},\r\n\r\n\t_tileReady: function (coords, err, tile) {\r\n\t\tif (!this._map || (tile && tile.getAttribute('src') === Util.emptyImageUrl)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n// Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\nexport function tileLayer(url, options) {\r\n\treturn new TileLayer(url, options);\r\n}\r\n","import {TileLayer} from './TileLayer';\r\nimport {extend, setOptions, getParamString} from '../../core/Util';\r\nimport Browser from '../../core/Browser';\r\nimport {EPSG4326} from '../../geo/crs/CRS.EPSG4326';\r\nimport {toBounds} from '../../geometry/Bounds';\r\n\r\n/*\r\n * @class TileLayer.WMS\r\n * @inherits TileLayer\r\n * @aka L.TileLayer.WMS\r\n * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n * \tlayers: 'nexrad-n0r-900913',\r\n * \tformat: 'image/png',\r\n * \ttransparent: true,\r\n * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n * });\r\n * ```\r\n */\r\n\r\nexport var TileLayerWMS = TileLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer.WMS options\r\n\t// If any custom options not documented here are used, they will be sent to the\r\n\t// WMS server as extra parameters in each request URL. This can be useful for\r\n\t// [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n\tdefaultWmsParams: {\r\n\t\tservice: 'WMS',\r\n\t\trequest: 'GetMap',\r\n\r\n\t\t// @option layers: String = ''\r\n\t\t// **(required)** Comma-separated list of WMS layers to show.\r\n\t\tlayers: '',\r\n\r\n\t\t// @option styles: String = ''\r\n\t\t// Comma-separated list of WMS styles.\r\n\t\tstyles: '',\r\n\r\n\t\t// @option format: String = 'image/jpeg'\r\n\t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n\t\tformat: 'image/jpeg',\r\n\r\n\t\t// @option transparent: Boolean = false\r\n\t\t// If `true`, the WMS service will return images with transparency.\r\n\t\ttransparent: false,\r\n\r\n\t\t// @option version: String = '1.1.1'\r\n\t\t// Version of the WMS service to use\r\n\t\tversion: '1.1.1'\r\n\t},\r\n\r\n\toptions: {\r\n\t\t// @option crs: CRS = null\r\n\t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n\t\t// map CRS. Don't change this if you're not sure what it means.\r\n\t\tcrs: null,\r\n\r\n\t\t// @option uppercase: Boolean = false\r\n\t\t// If `true`, WMS request parameter keys will be uppercase.\r\n\t\tuppercase: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n\t\t// all keys that are not TileLayer options go to WMS params\r\n\t\tfor (var i in options) {\r\n\t\t\tif (!(i in this.options)) {\r\n\t\t\t\twmsParams[i] = options[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\tvar realRetina = options.detectRetina && Browser.retina ? 2 : 1;\r\n\t\tvar tileSize = this.getTileSize();\r\n\t\twmsParams.width = tileSize.x * realRetina;\r\n\t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n\t\tthis.wmsParams = wmsParams;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\r\n\t\tthis._crs = this.options.crs || map.options.crs;\r\n\t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n\t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n\t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n\t\tTileLayer.prototype.onAdd.call(this, map);\r\n\t},\r\n\r\n\tgetTileUrl: function (coords) {\r\n\r\n\t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n\t\t    crs = this._crs,\r\n\t\t    bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n\t\t    min = bounds.min,\r\n\t\t    max = bounds.max,\r\n\t\t    bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n\t\t    [min.y, min.x, max.y, max.x] :\r\n\t\t    [min.x, min.y, max.x, max.y]).join(','),\r\n\t\t    url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n\t\treturn url +\r\n\t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n\t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n\t},\r\n\r\n\t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n\t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n\tsetParams: function (params, noRedraw) {\r\n\r\n\t\textend(this.wmsParams, params);\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n// Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\nexport function tileLayerWMS(url, options) {\r\n\treturn new TileLayerWMS(url, options);\r\n}\r\n","export {GridLayer, gridLayer} from './GridLayer';\nimport {TileLayer, tileLayer} from './TileLayer';\nimport {TileLayerWMS, tileLayerWMS} from './TileLayer.WMS';\nTileLayer.WMS = TileLayerWMS;\ntileLayer.wms = tileLayerWMS;\nexport {TileLayer, tileLayer};\n","import {Layer} from '../Layer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport Browser from '../../core/Browser';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n\n/*\n * @class Renderer\n * @inherits Layer\n * @aka L.Renderer\n *\n * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n * DOM container of the renderer, its bounds, and its zoom animation.\n *\n * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n * itself can be added or removed to the map. All paths use a renderer, which can\n * be implicit (the map will decide the type of renderer and use it automatically)\n * or explicit (using the [`renderer`](#path-renderer) option of the path).\n *\n * Do not use this class directly, use `SVG` and `Canvas` instead.\n *\n * @event update: Event\n * Fired when the renderer updates its bounds, center and zoom, for example when\n * its map has moved\n */\n\nexport var Renderer = Layer.extend({\n\n\t// @section\n\t// @aka Renderer options\n\toptions: {\n\t\t// @option padding: Number = 0.1\n\t\t// How much to extend the clip area around the map view (relative to its size)\n\t\t// e.g. 0.1 would be 10% of map view in each direction\n\t\tpadding: 0.1\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t\tUtil.stamp(this);\n\t\tthis._layers = this._layers || {};\n\t},\n\n\tonAdd: function () {\n\t\tif (!this._container) {\n\t\t\tthis._initContainer(); // defined by renderer implementations\n\n\t\t\t// always keep transform-origin as 0 0\n\t\t\tDomUtil.addClass(this._container, 'leaflet-zoom-animated');\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t\tthis._update();\n\t\tthis.on('update', this._updatePaths, this);\n\t},\n\n\tonRemove: function () {\n\t\tthis.off('update', this._updatePaths, this);\n\t\tthis._destroyContainer();\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewreset: this._reset,\n\t\t\tzoom: this._onZoom,\n\t\t\tmoveend: this._update,\n\t\t\tzoomend: this._onZoomEnd\n\t\t};\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._onAnimZoom;\n\t\t}\n\t\treturn events;\n\t},\n\n\t_onAnimZoom: function (ev) {\n\t\tthis._updateTransform(ev.center, ev.zoom);\n\t},\n\n\t_onZoom: function () {\n\t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t},\n\n\t_updateTransform: function (center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n\t\t    viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n\t\t    currentCenterPoint = this._map.project(this._center, zoom),\n\n\t\t    topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint)\n\t\t\t\t  .subtract(this._map._getNewPixelOrigin(center, zoom));\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(this._container, topLeftOffset, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(this._container, topLeftOffset);\n\t\t}\n\t},\n\n\t_reset: function () {\n\t\tthis._update();\n\t\tthis._updateTransform(this._center, this._zoom);\n\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._reset();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._project();\n\t\t}\n\t},\n\n\t_updatePaths: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._update();\n\t\t}\n\t},\n\n\t_update: function () {\n\t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n\t\t// Subclasses are responsible of firing the 'update' event.\n\t\tvar p = this.options.padding,\n\t\t    size = this._map.getSize(),\n\t\t    min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n\t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n\t\tthis._center = this._map.getCenter();\n\t\tthis._zoom = this._map.getZoom();\n\t}\n});\n","import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * @class Canvas\n * @inherits Renderer\n * @aka L.Canvas\n *\n * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not\n * available in all web browsers, notably IE8, and overlapping geometries might\n * not display properly in some edge cases.\n *\n * @example\n *\n * Use Canvas by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.canvas()\n * });\n * ```\n *\n * Use a Canvas renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.canvas({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var Canvas = Renderer.extend({\n\n\t// @section\n\t// @aka Canvas options\n\toptions: {\n\t\t// @option tolerance: Number = 0\n\t\t// How much to extend the click tolerance around a path/object on the map.\n\t\ttolerance: 0\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.viewprereset = this._onViewPreReset;\n\t\treturn events;\n\t},\n\n\t_onViewPreReset: function () {\n\t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n\t\tthis._postponeUpdatePaths = true;\n\t},\n\n\tonAdd: function () {\n\t\tRenderer.prototype.onAdd.call(this);\n\n\t\t// Redraw vectors since canvas is cleared upon removal,\n\t\t// in case of removing the renderer itself from the map.\n\t\tthis._draw();\n\t},\n\n\t_initContainer: function () {\n\t\tvar container = this._container = document.createElement('canvas');\n\n\t\tDomEvent.on(container, 'mousemove', this._onMouseMove, this);\n\t\tDomEvent.on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n\t\tDomEvent.on(container, 'mouseout', this._handleMouseOut, this);\n\t\tcontainer['_leaflet_disable_events'] = true;\n\n\t\tthis._ctx = container.getContext('2d');\n\t},\n\n\t_destroyContainer: function () {\n\t\tUtil.cancelAnimFrame(this._redrawRequest);\n\t\tdelete this._ctx;\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t},\n\n\t_updatePaths: function () {\n\t\tif (this._postponeUpdatePaths) { return; }\n\n\t\tvar layer;\n\t\tthis._redrawBounds = null;\n\t\tfor (var id in this._layers) {\n\t\t\tlayer = this._layers[id];\n\t\t\tlayer._update();\n\t\t}\n\t\tthis._redraw();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    container = this._container,\n\t\t    size = b.getSize(),\n\t\t    m = Browser.retina ? 2 : 1;\n\n\t\tDomUtil.setPosition(container, b.min);\n\n\t\t// set canvas size (also clearing it); use double size on retina\n\t\tcontainer.width = m * size.x;\n\t\tcontainer.height = m * size.y;\n\t\tcontainer.style.width = size.x + 'px';\n\t\tcontainer.style.height = size.y + 'px';\n\n\t\tif (Browser.retina) {\n\t\t\tthis._ctx.scale(2, 2);\n\t\t}\n\n\t\t// translate so we use the same path coordinates after canvas element moves\n\t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n\t\t// Tell paths to redraw themselves\n\t\tthis.fire('update');\n\t},\n\n\t_reset: function () {\n\t\tRenderer.prototype._reset.call(this);\n\n\t\tif (this._postponeUpdatePaths) {\n\t\t\tthis._postponeUpdatePaths = false;\n\t\t\tthis._updatePaths();\n\t\t}\n\t},\n\n\t_initPath: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\n\t\tvar order = layer._order = {\n\t\t\tlayer: layer,\n\t\t\tprev: this._drawLast,\n\t\t\tnext: null\n\t\t};\n\t\tif (this._drawLast) { this._drawLast.next = order; }\n\t\tthis._drawLast = order;\n\t\tthis._drawFirst = this._drawFirst || this._drawLast;\n\t},\n\n\t_addPath: function (layer) {\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar order = layer._order;\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\tthis._drawLast = prev;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\tdelete layer._order;\n\n\t\tdelete this._layers[Util.stamp(layer)];\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updatePath: function (layer) {\n\t\t// Redraw the union of the layer's old pixel\n\t\t// bounds and the new pixel bounds.\n\t\tthis._extendRedrawBounds(layer);\n\t\tlayer._project();\n\t\tlayer._update();\n\t\t// The redraw will extend the redraw bounds\n\t\t// with the new pixel bounds.\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateDashArray: function (layer) {\n\t\tif (typeof layer.options.dashArray === 'string') {\n\t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n\t\t\t    dashArray = [],\n\t\t\t    dashValue,\n\t\t\t    i;\n\t\t\tfor (i = 0; i < parts.length; i++) {\n\t\t\t\tdashValue = Number(parts[i]);\n\t\t\t\t// Ignore dash array containing invalid lengths\n\t\t\t\tif (isNaN(dashValue)) { return; }\n\t\t\t\tdashArray.push(dashValue);\n\t\t\t}\n\t\t\tlayer.options._dashArray = dashArray;\n\t\t} else {\n\t\t\tlayer.options._dashArray = layer.options.dashArray;\n\t\t}\n\t},\n\n\t_requestRedraw: function (layer) {\n\t\tif (!this._map) { return; }\n\n\t\tthis._extendRedrawBounds(layer);\n\t\tthis._redrawRequest = this._redrawRequest || Util.requestAnimFrame(this._redraw, this);\n\t},\n\n\t_extendRedrawBounds: function (layer) {\n\t\tif (layer._pxBounds) {\n\t\t\tvar padding = (layer.options.weight || 0) + 1;\n\t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n\t\t}\n\t},\n\n\t_redraw: function () {\n\t\tthis._redrawRequest = null;\n\n\t\tif (this._redrawBounds) {\n\t\t\tthis._redrawBounds.min._floor();\n\t\t\tthis._redrawBounds.max._ceil();\n\t\t}\n\n\t\tthis._clear(); // clear layers in redraw bounds\n\t\tthis._draw(); // draw layers\n\n\t\tthis._redrawBounds = null;\n\t},\n\n\t_clear: function () {\n\t\tvar bounds = this._redrawBounds;\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t} else {\n\t\t\tthis._ctx.save();\n\t\t\tthis._ctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n\t\t\tthis._ctx.restore();\n\t\t}\n\t},\n\n\t_draw: function () {\n\t\tvar layer, bounds = this._redrawBounds;\n\t\tthis._ctx.save();\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.beginPath();\n\t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t\tthis._ctx.clip();\n\t\t}\n\n\t\tthis._drawing = true;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n\t\t\t\tlayer._updatePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._drawing = false;\n\n\t\tthis._ctx.restore();  // Restore state before clipping.\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tif (!this._drawing) { return; }\n\n\t\tvar i, j, len2, p,\n\t\t    parts = layer._parts,\n\t\t    len = parts.length,\n\t\t    ctx = this._ctx;\n\n\t\tif (!len) { return; }\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n\t\t\t\tp = parts[i][j];\n\t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\tctx.closePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\n\t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n\t},\n\n\t_updateCircle: function (layer) {\n\n\t\tif (!this._drawing || layer._empty()) { return; }\n\n\t\tvar p = layer._point,\n\t\t    ctx = this._ctx,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n\t\tif (s !== 1) {\n\t\t\tctx.save();\n\t\t\tctx.scale(1, s);\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n\t\tif (s !== 1) {\n\t\t\tctx.restore();\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\t},\n\n\t_fillStroke: function (ctx, layer) {\n\t\tvar options = layer.options;\n\n\t\tif (options.fill) {\n\t\t\tctx.globalAlpha = options.fillOpacity;\n\t\t\tctx.fillStyle = options.fillColor || options.color;\n\t\t\tctx.fill(options.fillRule || 'evenodd');\n\t\t}\n\n\t\tif (options.stroke && options.weight !== 0) {\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n\t\t\t}\n\t\t\tctx.globalAlpha = options.opacity;\n\t\t\tctx.lineWidth = options.weight;\n\t\t\tctx.strokeStyle = options.color;\n\t\t\tctx.lineCap = options.lineCap;\n\t\t\tctx.lineJoin = options.lineJoin;\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t// Canvas obviously doesn't have mouse events for individual drawn objects,\n\t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n\t_onClick: function (e) {\n\t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tif (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) {\n\t\t\t\t\tclickedLayer = layer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._fireEvent(clickedLayer ? [clickedLayer] : false, e);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n\t\tvar point = this._map.mouseEventToLayerPoint(e);\n\t\tthis._handleMouseHover(e, point);\n\t},\n\n\n\t_handleMouseOut: function (e) {\n\t\tvar layer = this._hoveredLayer;\n\t\tif (layer) {\n\t\t\t// if we're leaving the layer, fire mouseout\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\n\t\t\tthis._fireEvent([layer], e, 'mouseout');\n\t\t\tthis._hoveredLayer = null;\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}\n\t},\n\n\t_handleMouseHover: function (e, point) {\n\t\tif (this._mouseHoverThrottled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layer, candidateHoveredLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tcandidateHoveredLayer = layer;\n\t\t\t}\n\t\t}\n\n\t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n\t\t\tthis._handleMouseOut(e);\n\n\t\t\tif (candidateHoveredLayer) {\n\t\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive'); // change cursor\n\t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n\t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n\t\t\t}\n\t\t}\n\n\t\tthis._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e);\n\n\t\tthis._mouseHoverThrottled = true;\n\t\tsetTimeout(Util.bind(function () {\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}, this), 32);\n\t},\n\n\t_fireEvent: function (layers, e, type) {\n\t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\t// Already last\n\t\t\treturn;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else if (next) {\n\t\t\t// Update first entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\torder.prev = this._drawLast;\n\t\tthis._drawLast.next = order;\n\n\t\torder.next = null;\n\t\tthis._drawLast = order;\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\t// Already first\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else if (prev) {\n\t\t\t// Update last entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawLast = prev;\n\t\t}\n\n\t\torder.prev = null;\n\n\t\torder.next = this._drawFirst;\n\t\tthis._drawFirst.prev = order;\n\t\tthis._drawFirst = order;\n\n\t\tthis._requestRedraw(layer);\n\t}\n});\n\n// @factory L.canvas(options?: Renderer options)\n// Creates a Canvas renderer with the given options.\nexport function canvas(options) {\n\treturn Browser.canvas ? new Canvas(options) : null;\n}\n","import * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport {Renderer} from './Renderer';\n\n/*\n * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n */\n\n\nexport var vmlCreate = (function () {\n\ttry {\n\t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n\t\t};\n\t} catch (e) {\n\t\t// Do not return fn from catch block so `e` can be garbage collected\n\t\t// See https://github.com/Leaflet/Leaflet/pull/7279\n\t}\n\treturn function (name) {\n\t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n\t};\n})();\n\n\n/*\n * @class SVG\n *\n *\n * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n * with old versions of Internet Explorer.\n */\n\n// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\nexport var vmlMixin = {\n\n\t_initContainer: function () {\n\t\tthis._container = DomUtil.create('div', 'leaflet-vml-container');\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom) { return; }\n\t\tRenderer.prototype._update.call(this);\n\t\tthis.fire('update');\n\t},\n\n\t_initPath: function (layer) {\n\t\tvar container = layer._container = vmlCreate('shape');\n\n\t\tDomUtil.addClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n\t\tcontainer.coordsize = '1 1';\n\n\t\tlayer._path = vmlCreate('path');\n\t\tcontainer.appendChild(layer._path);\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tvar container = layer._container;\n\t\tthis._container.appendChild(container);\n\n\t\tif (layer.options.interactive) {\n\t\t\tlayer.addInteractiveTarget(container);\n\t\t}\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar container = layer._container;\n\t\tDomUtil.remove(container);\n\t\tlayer.removeInteractiveTarget(container);\n\t\tdelete this._layers[Util.stamp(layer)];\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar stroke = layer._stroke,\n\t\t    fill = layer._fill,\n\t\t    options = layer.options,\n\t\t    container = layer._container;\n\n\t\tcontainer.stroked = !!options.stroke;\n\t\tcontainer.filled = !!options.fill;\n\n\t\tif (options.stroke) {\n\t\t\tif (!stroke) {\n\t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n\t\t\t}\n\t\t\tcontainer.appendChild(stroke);\n\t\t\tstroke.weight = options.weight + 'px';\n\t\t\tstroke.color = options.color;\n\t\t\tstroke.opacity = options.opacity;\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tstroke.dashStyle = Util.isArray(options.dashArray) ?\n\t\t\t\t    options.dashArray.join(' ') :\n\t\t\t\t    options.dashArray.replace(/( *, *)/g, ' ');\n\t\t\t} else {\n\t\t\t\tstroke.dashStyle = '';\n\t\t\t}\n\t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n\t\t\tstroke.joinstyle = options.lineJoin;\n\n\t\t} else if (stroke) {\n\t\t\tcontainer.removeChild(stroke);\n\t\t\tlayer._stroke = null;\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tif (!fill) {\n\t\t\t\tfill = layer._fill = vmlCreate('fill');\n\t\t\t}\n\t\t\tcontainer.appendChild(fill);\n\t\t\tfill.color = options.fillColor || options.color;\n\t\t\tfill.opacity = options.fillOpacity;\n\n\t\t} else if (fill) {\n\t\t\tcontainer.removeChild(fill);\n\t\t\tlayer._fill = null;\n\t\t}\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point.round(),\n\t\t    r = Math.round(layer._radius),\n\t\t    r2 = Math.round(layer._radiusY || r);\n\n\t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n\t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.v = path;\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._container);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._container);\n\t}\n};\n","import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport Browser from '../../core/Browser';\nimport {stamp} from '../../core/Util';\nimport {svgCreate, pointsToPath} from './SVG.Util';\nexport {pointsToPath};\nimport {vmlMixin, vmlCreate} from './SVG.VML';\n\nexport var create = Browser.vml ? vmlCreate : svgCreate;\n\n/*\n * @class SVG\n * @inherits Renderer\n * @aka L.SVG\n *\n * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/svg), SVG is not\n * available in all web browsers, notably Android 2.x and 3.x.\n *\n * Although SVG is not available on IE7 and IE8, these browsers support\n * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n * (a now deprecated technology), and the SVG renderer will fall back to VML in\n * this case.\n *\n * @example\n *\n * Use SVG by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.svg()\n * });\n * ```\n *\n * Use a SVG renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.svg({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var SVG = Renderer.extend({\n\n\t_initContainer: function () {\n\t\tthis._container = create('svg');\n\n\t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n\t\tthis._container.setAttribute('pointer-events', 'none');\n\n\t\tthis._rootGroup = create('g');\n\t\tthis._container.appendChild(this._rootGroup);\n\t},\n\n\t_destroyContainer: function () {\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t\tdelete this._rootGroup;\n\t\tdelete this._svgSize;\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    size = b.getSize(),\n\t\t    container = this._container;\n\n\t\t// set size of svg-container if changed\n\t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n\t\t\tthis._svgSize = size;\n\t\t\tcontainer.setAttribute('width', size.x);\n\t\t\tcontainer.setAttribute('height', size.y);\n\t\t}\n\n\t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n\t\tDomUtil.setPosition(container, b.min);\n\t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n\t\tthis.fire('update');\n\t},\n\n\t// methods below are called by vector layers implementations\n\n\t_initPath: function (layer) {\n\t\tvar path = layer._path = create('path');\n\n\t\t// @namespace Path\n\t\t// @option className: String = null\n\t\t// Custom class name set on an element. Only for SVG renderer.\n\t\tif (layer.options.className) {\n\t\t\tDomUtil.addClass(path, layer.options.className);\n\t\t}\n\n\t\tif (layer.options.interactive) {\n\t\t\tDomUtil.addClass(path, 'leaflet-interactive');\n\t\t}\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tif (!this._rootGroup) { this._initContainer(); }\n\t\tthis._rootGroup.appendChild(layer._path);\n\t\tlayer.addInteractiveTarget(layer._path);\n\t},\n\n\t_removePath: function (layer) {\n\t\tDomUtil.remove(layer._path);\n\t\tlayer.removeInteractiveTarget(layer._path);\n\t\tdelete this._layers[stamp(layer)];\n\t},\n\n\t_updatePath: function (layer) {\n\t\tlayer._project();\n\t\tlayer._update();\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar path = layer._path,\n\t\t    options = layer.options;\n\n\t\tif (!path) { return; }\n\n\t\tif (options.stroke) {\n\t\t\tpath.setAttribute('stroke', options.color);\n\t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n\t\t\tpath.setAttribute('stroke-width', options.weight);\n\t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n\t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dasharray');\n\t\t\t}\n\n\t\t\tif (options.dashOffset) {\n\t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dashoffset');\n\t\t\t}\n\t\t} else {\n\t\t\tpath.setAttribute('stroke', 'none');\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n\t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n\t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n\t\t} else {\n\t\t\tpath.setAttribute('fill', 'none');\n\t\t}\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n\t\t    arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n\t\t// drawing a circle with two half-arcs\n\t\tvar d = layer._empty() ? 'M0 0' :\n\t\t\t'M' + (p.x - r) + ',' + p.y +\n\t\t\tarc + (r * 2) + ',0 ' +\n\t\t\tarc + (-r * 2) + ',0 ';\n\n\t\tthis._setPath(layer, d);\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.setAttribute('d', path);\n\t},\n\n\t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._path);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._path);\n\t}\n});\n\nif (Browser.vml) {\n\tSVG.include(vmlMixin);\n}\n\n// @namespace SVG\n// @factory L.svg(options?: Renderer options)\n// Creates a SVG renderer with the given options.\nexport function svg(options) {\n\treturn Browser.svg || Browser.vml ? new SVG(options) : null;\n}\n","import {Map} from '../../map/Map';\nimport {canvas} from './Canvas';\nimport {svg} from './SVG';\n\nMap.include({\n\t// @namespace Map; @method getRenderer(layer: Path): Renderer\n\t// Returns the instance of `Renderer` that should be used to render the given\n\t// `Path`. It will ensure that the `renderer` options of the map and paths\n\t// are respected, and that the renderers do exist on the map.\n\tgetRenderer: function (layer) {\n\t\t// @namespace Path; @option renderer: Renderer\n\t\t// Use this specific instance of `Renderer` for this path. Takes\n\t\t// precedence over the map's [default renderer](#map-renderer).\n\t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n\t\tif (!renderer) {\n\t\t\trenderer = this._renderer = this._createRenderer();\n\t\t}\n\n\t\tif (!this.hasLayer(renderer)) {\n\t\t\tthis.addLayer(renderer);\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_getPaneRenderer: function (name) {\n\t\tif (name === 'overlayPane' || name === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar renderer = this._paneRenderers[name];\n\t\tif (renderer === undefined) {\n\t\t\trenderer = this._createRenderer({pane: name});\n\t\t\tthis._paneRenderers[name] = renderer;\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_createRenderer: function (options) {\n\t\t// @namespace Map; @option preferCanvas: Boolean = false\n\t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n\t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n\t\treturn (this.options.preferCanvas && canvas(options)) || svg(options);\n\t}\n});\n","import {Polygon} from './Polygon';\nimport {toLatLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n */\n\n/*\n * @class Rectangle\n * @aka L.Rectangle\n * @inherits Polygon\n *\n * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n *\n * @example\n *\n * ```js\n * // define rectangle geographical bounds\n * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n *\n * // create an orange rectangle\n * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n *\n * // zoom the map to the rectangle bounds\n * map.fitBounds(bounds);\n * ```\n *\n */\n\n\nexport var Rectangle = Polygon.extend({\n\tinitialize: function (latLngBounds, options) {\n\t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n\t},\n\n\t// @method setBounds(latLngBounds: LatLngBounds): this\n\t// Redraws the rectangle with the passed bounds.\n\tsetBounds: function (latLngBounds) {\n\t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n\t},\n\n\t_boundsToLatLngs: function (latLngBounds) {\n\t\tlatLngBounds = toLatLngBounds(latLngBounds);\n\t\treturn [\n\t\t\tlatLngBounds.getSouthWest(),\n\t\t\tlatLngBounds.getNorthWest(),\n\t\t\tlatLngBounds.getNorthEast(),\n\t\t\tlatLngBounds.getSouthEast()\n\t\t];\n\t}\n});\n\n\n// @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\nexport function rectangle(latLngBounds, options) {\n\treturn new Rectangle(latLngBounds, options);\n}\n","export {Renderer} from './Renderer';\nexport {Canvas, canvas} from './Canvas';\nimport {SVG, create, pointsToPath, svg} from './SVG';\nSVG.create = create;\nSVG.pointsToPath = pointsToPath;\nexport {SVG, svg};\nimport './Renderer.getRenderer';\t// This is a bit of a hack, but needed because circular dependencies\n\nexport {Path} from './Path';\nexport {CircleMarker, circleMarker} from './CircleMarker';\nexport {Circle, circle} from './Circle';\nexport {Polyline, polyline} from './Polyline';\nexport {Polygon, polygon} from './Polygon';\nexport {Rectangle, rectangle} from './Rectangle';\n","export {Layer} from './Layer';\nexport {LayerGroup, layerGroup} from './LayerGroup';\nexport {FeatureGroup, featureGroup} from './FeatureGroup';\nimport {GeoJSON, geoJSON, geoJson, geometryToLayer, coordsToLatLng, coordsToLatLngs, latLngToCoords, latLngsToCoords, getFeature, asFeature} from './GeoJSON';\nGeoJSON.geometryToLayer = geometryToLayer;\nGeoJSON.coordsToLatLng = coordsToLatLng;\nGeoJSON.coordsToLatLngs = coordsToLatLngs;\nGeoJSON.latLngToCoords = latLngToCoords;\nGeoJSON.latLngsToCoords = latLngsToCoords;\nGeoJSON.getFeature = getFeature;\nGeoJSON.asFeature = asFeature;\nexport {GeoJSON, geoJSON, geoJson};\n\nexport {ImageOverlay, imageOverlay} from './ImageOverlay';\nexport {VideoOverlay, videoOverlay} from './VideoOverlay';\nexport {SVGOverlay, svgOverlay} from './SVGOverlay';\n\nexport {DivOverlay} from './DivOverlay';\nexport {Popup, popup} from './Popup';\nexport {Tooltip, tooltip} from './Tooltip';\n\nexport * from './marker/index';\nexport * from './tile/index';\nexport * from './vector/index';\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n * (zoom to a selected bounding box), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option boxZoom: Boolean = true\n\t// Whether the map can be zoomed to a rectangular area specified by\n\t// dragging the mouse while pressing the shift key.\n\tboxZoom: true\n});\n\nexport var BoxZoom = Handler.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t\tthis._container = map._container;\n\t\tthis._pane = map._panes.overlayPane;\n\t\tthis._resetStateTimeout = 0;\n\t\tmap.on('unload', this._destroy, this);\n\t},\n\n\taddHooks: function () {\n\t\tDomEvent.on(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tmoved: function () {\n\t\treturn this._moved;\n\t},\n\n\t_destroy: function () {\n\t\tDomUtil.remove(this._pane);\n\t\tdelete this._pane;\n\t},\n\n\t_resetState: function () {\n\t\tthis._resetStateTimeout = 0;\n\t\tthis._moved = false;\n\t},\n\n\t_clearDeferredResetState: function () {\n\t\tif (this._resetStateTimeout !== 0) {\n\t\t\tclearTimeout(this._resetStateTimeout);\n\t\t\tthis._resetStateTimeout = 0;\n\t\t}\n\t},\n\n\t_onMouseDown: function (e) {\n\t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n\t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n\t\t// will interrupt the interaction and orphan a box element in the container.\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetState();\n\n\t\tDomUtil.disableTextSelection();\n\t\tDomUtil.disableImageDrag();\n\n\t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n\t\tDomEvent.on(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._moved) {\n\t\t\tthis._moved = true;\n\n\t\t\tthis._box = DomUtil.create('div', 'leaflet-zoom-box', this._container);\n\t\t\tDomUtil.addClass(this._container, 'leaflet-crosshair');\n\n\t\t\tthis._map.fire('boxzoomstart');\n\t\t}\n\n\t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n\t\tvar bounds = new Bounds(this._point, this._startPoint),\n\t\t    size = bounds.getSize();\n\n\t\tDomUtil.setPosition(this._box, bounds.min);\n\n\t\tthis._box.style.width  = size.x + 'px';\n\t\tthis._box.style.height = size.y + 'px';\n\t},\n\n\t_finish: function () {\n\t\tif (this._moved) {\n\t\t\tDomUtil.remove(this._box);\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-crosshair');\n\t\t}\n\n\t\tDomUtil.enableTextSelection();\n\t\tDomUtil.enableImageDrag();\n\n\t\tDomEvent.off(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseUp: function (e) {\n\t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n\t\tthis._finish();\n\n\t\tif (!this._moved) { return; }\n\t\t// Postpone to next JS tick so internal click event handling\n\t\t// still see it as \"moved\".\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetStateTimeout = setTimeout(Util.bind(this._resetState, this), 0);\n\n\t\tvar bounds = new LatLngBounds(\n\t\t        this._map.containerPointToLatLng(this._startPoint),\n\t\t        this._map.containerPointToLatLng(this._point));\n\n\t\tthis._map\n\t\t\t.fitBounds(bounds)\n\t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.keyCode === 27) {\n\t\t\tthis._finish();\n\t\t\tthis._clearDeferredResetState();\n\t\t\tthis._resetState();\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property boxZoom: Handler\n// Box (shift-drag with mouse) zoom handler.\nMap.addInitHook('addHandler', 'boxZoom', BoxZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\n\n/*\n * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\n\nMap.mergeOptions({\n\t// @option doubleClickZoom: Boolean|String = true\n\t// Whether the map can be zoomed in by double clicking on it and\n\t// zoomed out by double clicking while holding shift. If passed\n\t// `'center'`, double-click zoom will zoom to the center of the\n\t//  view regardless of where the mouse was.\n\tdoubleClickZoom: true\n});\n\nexport var DoubleClickZoom = Handler.extend({\n\taddHooks: function () {\n\t\tthis._map.on('dblclick', this._onDoubleClick, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._map.off('dblclick', this._onDoubleClick, this);\n\t},\n\n\t_onDoubleClick: function (e) {\n\t\tvar map = this._map,\n\t\t    oldZoom = map.getZoom(),\n\t\t    delta = map.options.zoomDelta,\n\t\t    zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n\t\tif (map.options.doubleClickZoom === 'center') {\n\t\t\tmap.setZoom(zoom);\n\t\t} else {\n\t\t\tmap.setZoomAround(e.containerPoint, zoom);\n\t\t}\n\t}\n});\n\n// @section Handlers\n//\n// Map properties include interaction handlers that allow you to control\n// interaction behavior in runtime, enabling or disabling certain features such\n// as dragging or touch zoom (see `Handler` methods). For example:\n//\n// ```js\n// map.doubleClickZoom.disable();\n// ```\n//\n// @property doubleClickZoom: Handler\n// Double click zoom handler.\nMap.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {Draggable} from '../../dom/Draggable';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\nimport {toBounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option dragging: Boolean = true\n\t// Whether the map is draggable with mouse/touch or not.\n\tdragging: true,\n\n\t// @section Panning Inertia Options\n\t// @option inertia: Boolean = *\n\t// If enabled, panning of the map will have an inertia effect where\n\t// the map builds momentum while dragging and continues moving in\n\t// the same direction for some time. Feels especially nice on touch\n\t// devices. Enabled by default.\n\tinertia: true,\n\n\t// @option inertiaDeceleration: Number = 3000\n\t// The rate with which the inertial movement slows down, in pixels/second².\n\tinertiaDeceleration: 3400, // px/s^2\n\n\t// @option inertiaMaxSpeed: Number = Infinity\n\t// Max speed of the inertial movement, in pixels/second.\n\tinertiaMaxSpeed: Infinity, // px/s\n\n\t// @option easeLinearity: Number = 0.2\n\teaseLinearity: 0.2,\n\n\t// TODO refactor, move to CRS\n\t// @option worldCopyJump: Boolean = false\n\t// With this option enabled, the map tracks when you pan to another \"copy\"\n\t// of the world and seamlessly jumps to the original one so that all overlays\n\t// like markers and vector layers are still visible.\n\tworldCopyJump: false,\n\n\t// @option maxBoundsViscosity: Number = 0.0\n\t// If `maxBounds` is set, this option will control how solid the bounds\n\t// are when dragging the map around. The default value of `0.0` allows the\n\t// user to drag outside the bounds at normal speed, higher values will\n\t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n\t// solid, preventing the user from dragging outside the bounds.\n\tmaxBoundsViscosity: 0.0\n});\n\nexport var Drag = Handler.extend({\n\taddHooks: function () {\n\t\tif (!this._draggable) {\n\t\t\tvar map = this._map;\n\n\t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n\t\t\tthis._draggable.on({\n\t\t\t\tdragstart: this._onDragStart,\n\t\t\t\tdrag: this._onDrag,\n\t\t\t\tdragend: this._onDragEnd\n\t\t\t}, this);\n\n\t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n\t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n\t\t\t\tmap.whenReady(this._onZoomEnd, this);\n\t\t\t}\n\t\t}\n\t\tDomUtil.addClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n\t\tthis._draggable.enable();\n\t\tthis._positions = [];\n\t\tthis._times = [];\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-grab');\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-drag');\n\t\tthis._draggable.disable();\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\tmoving: function () {\n\t\treturn this._draggable && this._draggable._moving;\n\t},\n\n\t_onDragStart: function () {\n\t\tvar map = this._map;\n\n\t\tmap._stop();\n\t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n\t\t\tvar bounds = latLngBounds(this._map.options.maxBounds);\n\n\t\t\tthis._offsetLimit = toBounds(\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n\t\t\t\t\t.add(this._map.getSize()));\n\n\t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n\t\t} else {\n\t\t\tthis._offsetLimit = null;\n\t\t}\n\n\t\tmap\n\t\t    .fire('movestart')\n\t\t    .fire('dragstart');\n\n\t\tif (map.options.inertia) {\n\t\t\tthis._positions = [];\n\t\t\tthis._times = [];\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tif (this._map.options.inertia) {\n\t\t\tvar time = this._lastTime = +new Date(),\n\t\t\t    pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n\t\t\tthis._positions.push(pos);\n\t\t\tthis._times.push(time);\n\n\t\t\tthis._prunePositions(time);\n\t\t}\n\n\t\tthis._map\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_prunePositions: function (time) {\n\t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n\t\t\tthis._positions.shift();\n\t\t\tthis._times.shift();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tvar pxCenter = this._map.getSize().divideBy(2),\n\t\t    pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n\t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n\t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n\t},\n\n\t_viscousLimit: function (value, threshold) {\n\t\treturn value - (value - threshold) * this._viscosity;\n\t},\n\n\t_onPreDragLimit: function () {\n\t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n\t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n\t\tvar limit = this._offsetLimit;\n\t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n\t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n\t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n\t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n\t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n\t},\n\n\t_onPreDragWrap: function () {\n\t\t// TODO refactor to be able to adjust map pane position after zoom\n\t\tvar worldWidth = this._worldWidth,\n\t\t    halfWidth = Math.round(worldWidth / 2),\n\t\t    dx = this._initialWorldOffset,\n\t\t    x = this._draggable._newPos.x,\n\t\t    newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n\t\t    newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n\t\t    newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n\t\tthis._draggable._absPos = this._draggable._newPos.clone();\n\t\tthis._draggable._newPos.x = newX;\n\t},\n\n\t_onDragEnd: function (e) {\n\t\tvar map = this._map,\n\t\t    options = map.options,\n\n\t\t    noInertia = !options.inertia || e.noInertia || this._times.length < 2;\n\n\t\tmap.fire('dragend', e);\n\n\t\tif (noInertia) {\n\t\t\tmap.fire('moveend');\n\n\t\t} else {\n\t\t\tthis._prunePositions(+new Date());\n\n\t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n\t\t\t    duration = (this._lastTime - this._times[0]) / 1000,\n\t\t\t    ease = options.easeLinearity,\n\n\t\t\t    speedVector = direction.multiplyBy(ease / duration),\n\t\t\t    speed = speedVector.distanceTo([0, 0]),\n\n\t\t\t    limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n\t\t\t    limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n\t\t\t    decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n\t\t\t    offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n\t\t\tif (!offset.x && !offset.y) {\n\t\t\t\tmap.fire('moveend');\n\n\t\t\t} else {\n\t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n\t\t\t\tUtil.requestAnimFrame(function () {\n\t\t\t\t\tmap.panBy(offset, {\n\t\t\t\t\t\tduration: decelerationDuration,\n\t\t\t\t\t\teaseLinearity: ease,\n\t\t\t\t\t\tnoMoveStart: true,\n\t\t\t\t\t\tanimate: true\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property dragging: Handler\n// Map dragging handler (by both mouse and touch).\nMap.addInitHook('addHandler', 'dragging', Drag);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {on, off, stop} from '../../dom/DomEvent';\nimport {toPoint} from '../../geometry/Point';\n\n\n/*\n * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n */\n\n// @namespace Map\n// @section Keyboard Navigation Options\nMap.mergeOptions({\n\t// @option keyboard: Boolean = true\n\t// Makes the map focusable and allows users to navigate the map with keyboard\n\t// arrows and `+`/`-` keys.\n\tkeyboard: true,\n\n\t// @option keyboardPanDelta: Number = 80\n\t// Amount of pixels to pan when pressing an arrow key.\n\tkeyboardPanDelta: 80\n});\n\nexport var Keyboard = Handler.extend({\n\n\tkeyCodes: {\n\t\tleft:    [37],\n\t\tright:   [39],\n\t\tdown:    [40],\n\t\tup:      [38],\n\t\tzoomIn:  [187, 107, 61, 171],\n\t\tzoomOut: [189, 109, 54, 173]\n\t},\n\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\n\t\tthis._setPanDelta(map.options.keyboardPanDelta);\n\t\tthis._setZoomDelta(map.options.zoomDelta);\n\t},\n\n\taddHooks: function () {\n\t\tvar container = this._map._container;\n\n\t\t// make the container focusable by tabbing\n\t\tif (container.tabIndex <= 0) {\n\t\t\tcontainer.tabIndex = '0';\n\t\t}\n\n\t\ton(container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.on({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._removeHooks();\n\n\t\toff(this._map._container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.off({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\t_onMouseDown: function () {\n\t\tif (this._focused) { return; }\n\n\t\tvar body = document.body,\n\t\t    docEl = document.documentElement,\n\t\t    top = body.scrollTop || docEl.scrollTop,\n\t\t    left = body.scrollLeft || docEl.scrollLeft;\n\n\t\tthis._map._container.focus();\n\n\t\twindow.scrollTo(left, top);\n\t},\n\n\t_onFocus: function () {\n\t\tthis._focused = true;\n\t\tthis._map.fire('focus');\n\t},\n\n\t_onBlur: function () {\n\t\tthis._focused = false;\n\t\tthis._map.fire('blur');\n\t},\n\n\t_setPanDelta: function (panDelta) {\n\t\tvar keys = this._panKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n\t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n\t\t\tkeys[codes.right[i]] = [panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n\t\t\tkeys[codes.down[i]] = [0, panDelta];\n\t\t}\n\t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n\t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n\t\t}\n\t},\n\n\t_setZoomDelta: function (zoomDelta) {\n\t\tvar keys = this._zoomKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n\t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n\t\t}\n\t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n\t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n\t\t}\n\t},\n\n\t_addHooks: function () {\n\t\ton(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_removeHooks: function () {\n\t\toff(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n\t\tvar key = e.keyCode,\n\t\t    map = this._map,\n\t\t    offset;\n\n\t\tif (key in this._panKeys) {\n\t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n\t\t\t\toffset = this._panKeys[key];\n\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n\t\t\t\t}\n\n\t\t\t\tif (map.options.maxBounds) {\n\t\t\t\t\toffset = map._limitOffset(toPoint(offset), map.options.maxBounds);\n\t\t\t\t}\n\n\t\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\t\tvar newLatLng = map.wrapLatLng(map.unproject(map.project(map.getCenter()).add(offset)));\n\t\t\t\t\tmap.panTo(newLatLng);\n\t\t\t\t} else {\n\t\t\t\t\tmap.panBy(offset);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (key in this._zoomKeys) {\n\t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n\t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n\t\t\tmap.closePopup();\n\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tstop(e);\n\t}\n});\n\n// @section Handlers\n// @section Handlers\n// @property keyboard: Handler\n// Keyboard navigation handler.\nMap.addInitHook('addHandler', 'keyboard', Keyboard);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\n\n/*\n * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Mouse wheel options\n\t// @option scrollWheelZoom: Boolean|String = true\n\t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n\t// it will zoom to the center of the view regardless of where the mouse was.\n\tscrollWheelZoom: true,\n\n\t// @option wheelDebounceTime: Number = 40\n\t// Limits the rate at which a wheel can fire (in milliseconds). By default\n\t// user can't zoom via wheel more often than once per 40 ms.\n\twheelDebounceTime: 40,\n\n\t// @option wheelPxPerZoomLevel: Number = 60\n\t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n\t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n\t// faster (and vice versa).\n\twheelPxPerZoomLevel: 60\n});\n\nexport var ScrollWheelZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'wheel', this._onWheelScroll, this);\n\n\t\tthis._delta = 0;\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'wheel', this._onWheelScroll, this);\n\t},\n\n\t_onWheelScroll: function (e) {\n\t\tvar delta = DomEvent.getWheelDelta(e);\n\n\t\tvar debounce = this._map.options.wheelDebounceTime;\n\n\t\tthis._delta += delta;\n\t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n\t\tif (!this._startTime) {\n\t\t\tthis._startTime = +new Date();\n\t\t}\n\n\t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n\t\tclearTimeout(this._timer);\n\t\tthis._timer = setTimeout(Util.bind(this._performZoom, this), left);\n\n\t\tDomEvent.stop(e);\n\t},\n\n\t_performZoom: function () {\n\t\tvar map = this._map,\n\t\t    zoom = map.getZoom(),\n\t\t    snap = this._map.options.zoomSnap || 0;\n\n\t\tmap._stop(); // stop panning and fly animations if any\n\n\t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n\t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n\t\t    d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n\t\t    d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n\t\t    delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n\t\tthis._delta = 0;\n\t\tthis._startTime = null;\n\n\t\tif (!delta) { return; }\n\n\t\tif (map.options.scrollWheelZoom === 'center') {\n\t\t\tmap.setZoom(zoom + delta);\n\t\t} else {\n\t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property scrollWheelZoom: Handler\n// Scroll wheel zoom handler.\nMap.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {Point} from '../../geometry/Point';\nimport * as Util from '../../core/Util';\nimport Browser from '../../core/Browser';\n\n/*\n * L.Map.TapHold is used to simulate `contextmenu` event on long hold,\n * which otherwise is not fired by mobile Safari.\n */\n\nvar tapHoldDelay = 600;\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option tapHold: Boolean\n\t// Enables simulation of `contextmenu` event, default is `true` for mobile Safari.\n\ttapHold: Browser.touchNative && Browser.safari && Browser.mobile,\n\n\t// @option tapTolerance: Number = 15\n\t// The max number of pixels a user can shift his finger during touch\n\t// for it to be considered a valid tap.\n\ttapTolerance: 15\n});\n\nexport var TapHold = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\t_onDown: function (e) {\n\t\tclearTimeout(this._holdTimeout);\n\t\tif (e.touches.length !== 1) { return; }\n\n\t\tvar first = e.touches[0];\n\t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n\t\tthis._holdTimeout = setTimeout(Util.bind(function () {\n\t\t\tthis._cancel();\n\t\t\tif (!this._isTapValid()) { return; }\n\n\t\t\t// prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events\n\t\t\tDomEvent.on(document, 'touchend', DomEvent.preventDefault);\n\t\t\tDomEvent.on(document, 'touchend touchcancel', this._cancelClickPrevent);\n\t\t\tthis._simulateEvent('contextmenu', first);\n\t\t}, this), tapHoldDelay);\n\n\t\tDomEvent.on(document, 'touchend touchcancel contextmenu', this._cancel, this);\n\t\tDomEvent.on(document, 'touchmove', this._onMove, this);\n\t},\n\n\t_cancelClickPrevent: function cancelClickPrevent() {\n\t\tDomEvent.off(document, 'touchend', DomEvent.preventDefault);\n\t\tDomEvent.off(document, 'touchend touchcancel', cancelClickPrevent);\n\t},\n\n\t_cancel: function () {\n\t\tclearTimeout(this._holdTimeout);\n\t\tDomEvent.off(document, 'touchend touchcancel contextmenu', this._cancel, this);\n\t\tDomEvent.off(document, 'touchmove', this._onMove, this);\n\t},\n\n\t_onMove: function (e) {\n\t\tvar first = e.touches[0];\n\t\tthis._newPos = new Point(first.clientX, first.clientY);\n\t},\n\n\t_isTapValid: function () {\n\t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n\t},\n\n\t_simulateEvent: function (type, e) {\n\t\tvar simulatedEvent = new MouseEvent(type, {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tview: window,\n\t\t\t// detail: 1,\n\t\t\tscreenX: e.screenX,\n\t\t\tscreenY: e.screenY,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\t// button: 2,\n\t\t\t// buttons: 2\n\t\t});\n\n\t\tsimulatedEvent._simulated = true;\n\n\t\te.target.dispatchEvent(simulatedEvent);\n\t}\n});\n\n// @section Handlers\n// @property tapHold: Handler\n// Long tap handler to simulate `contextmenu` event (useful in mobile Safari).\nMap.addInitHook('addHandler', 'tapHold', TapHold);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport Browser from '../../core/Browser';\n\n/*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option touchZoom: Boolean|String = *\n\t// Whether the map can be zoomed by touch-dragging with two fingers. If\n\t// passed `'center'`, it will zoom to the center of the view regardless of\n\t// where the touch events (fingers) were. Enabled for touch-capable web\n\t// browsers.\n\ttouchZoom: Browser.touch,\n\n\t// @option bounceAtZoomLimits: Boolean = true\n\t// Set it to false if you don't want the map to zoom beyond min/max zoom\n\t// and then bounce back when pinch-zooming.\n\tbounceAtZoomLimits: true\n});\n\nexport var TouchZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomUtil.addClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\t_onTouchStart: function (e) {\n\t\tvar map = this._map;\n\t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n\t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n\t\tthis._centerPoint = map.getSize()._divideBy(2);\n\t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n\t\tif (map.options.touchZoom !== 'center') {\n\t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n\t\t}\n\n\t\tthis._startDist = p1.distanceTo(p2);\n\t\tthis._startZoom = map.getZoom();\n\n\t\tthis._moved = false;\n\t\tthis._zooming = true;\n\n\t\tmap._stop();\n\n\t\tDomEvent.on(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.on(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchMove: function (e) {\n\t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n\t\tvar map = this._map,\n\t\t    p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]),\n\t\t    scale = p1.distanceTo(p2) / this._startDist;\n\n\t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n\t\tif (!map.options.bounceAtZoomLimits && (\n\t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n\t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n\t\t\tthis._zoom = map._limitZoom(this._zoom);\n\t\t}\n\n\t\tif (map.options.touchZoom === 'center') {\n\t\t\tthis._center = this._startLatLng;\n\t\t\tif (scale === 1) { return; }\n\t\t} else {\n\t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n\t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n\t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n\t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n\t\t}\n\n\t\tif (!this._moved) {\n\t\t\tmap._moveStart(true, false);\n\t\t\tthis._moved = true;\n\t\t}\n\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tvar moveFn = Util.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);\n\t\tthis._animRequest = Util.requestAnimFrame(moveFn, this, true);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchEnd: function () {\n\t\tif (!this._moved || !this._zooming) {\n\t\t\tthis._zooming = false;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._zooming = false;\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tDomEvent.off(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.off(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n\t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n\t\tif (this._map.options.zoomAnimation) {\n\t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n\t\t} else {\n\t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch zoom handler.\nMap.addInitHook('addHandler', 'touchZoom', TouchZoom);\n","import {Map} from './Map';\nimport {BoxZoom} from './handler/Map.BoxZoom';\nMap.BoxZoom = BoxZoom;\nimport {DoubleClickZoom} from './handler/Map.DoubleClickZoom';\nMap.DoubleClickZoom = DoubleClickZoom;\nimport {Drag} from './handler/Map.Drag';\nMap.Drag = Drag;\nimport {Keyboard} from './handler/Map.Keyboard';\nMap.Keyboard = Keyboard;\nimport {ScrollWheelZoom} from './handler/Map.ScrollWheelZoom';\nMap.ScrollWheelZoom = ScrollWheelZoom;\nimport {TapHold} from './handler/Map.TapHold';\nMap.TapHold = TapHold;\nimport {TouchZoom} from './handler/Map.TouchZoom';\nMap.TouchZoom = TouchZoom;\n\nexport {Map, createMap as map} from './Map';\n","/*\n Leaflet.draw 1.0.4, a plugin that adds drawing and editing tools to Leaflet powered maps.\n (c) 2012-2017, Jacob Toye, Jon West, Smartrak, Leaflet\n\n https://github.com/Leaflet/Leaflet.draw\n http://leafletjs.com\n */\n!function(t,e,i){function o(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}L.drawVersion=\"1.0.4\",L.Draw={},L.drawLocal={draw:{toolbar:{actions:{title:\"Cancel drawing\",text:\"Cancel\"},finish:{title:\"Finish drawing\",text:\"Finish\"},undo:{title:\"Delete last point drawn\",text:\"Delete last point\"},buttons:{polyline:\"Draw a polyline\",polygon:\"Draw a polygon\",rectangle:\"Draw a rectangle\",circle:\"Draw a circle\",marker:\"Draw a marker\",circlemarker:\"Draw a circlemarker\"}},handlers:{circle:{tooltip:{start:\"Click and drag to draw circle.\"},radius:\"Radius\"},circlemarker:{tooltip:{start:\"Click map to place circle marker.\"}},marker:{tooltip:{start:\"Click map to place marker.\"}},polygon:{tooltip:{start:\"Click to start drawing shape.\",cont:\"Click to continue drawing shape.\",end:\"Click first point to close this shape.\"}},polyline:{error:\"<strong>Error:</strong> shape edges cannot cross!\",tooltip:{start:\"Click to start drawing line.\",cont:\"Click to continue drawing line.\",end:\"Click last point to finish line.\"}},rectangle:{tooltip:{start:\"Click and drag to draw rectangle.\"}},simpleshape:{tooltip:{end:\"Release mouse to finish drawing.\"}}}},edit:{toolbar:{actions:{save:{title:\"Save changes\",text:\"Save\"},cancel:{title:\"Cancel editing, discards all changes\",text:\"Cancel\"},clearAll:{title:\"Clear all layers\",text:\"Clear All\"}},buttons:{edit:\"Edit layers\",editDisabled:\"No layers to edit\",remove:\"Delete layers\",removeDisabled:\"No layers to delete\"}},handlers:{edit:{tooltip:{text:\"Drag handles or markers to edit features.\",subtext:\"Click cancel to undo changes.\"}},remove:{tooltip:{text:\"Click on a feature to remove.\"}}}}},L.Draw.Event={},L.Draw.Event.CREATED=\"draw:created\",L.Draw.Event.EDITED=\"draw:edited\",L.Draw.Event.DELETED=\"draw:deleted\",L.Draw.Event.DRAWSTART=\"draw:drawstart\",L.Draw.Event.DRAWSTOP=\"draw:drawstop\",L.Draw.Event.DRAWVERTEX=\"draw:drawvertex\",L.Draw.Event.EDITSTART=\"draw:editstart\",L.Draw.Event.EDITMOVE=\"draw:editmove\",L.Draw.Event.EDITRESIZE=\"draw:editresize\",L.Draw.Event.EDITVERTEX=\"draw:editvertex\",L.Draw.Event.EDITSTOP=\"draw:editstop\",L.Draw.Event.DELETESTART=\"draw:deletestart\",L.Draw.Event.DELETESTOP=\"draw:deletestop\",L.Draw.Event.TOOLBAROPENED=\"draw:toolbaropened\",L.Draw.Event.TOOLBARCLOSED=\"draw:toolbarclosed\",L.Draw.Event.MARKERCONTEXT=\"draw:markercontext\",L.Draw=L.Draw||{},L.Draw.Feature=L.Handler.extend({initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e);var i=L.version.split(\".\");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.Draw.Feature.include(L.Evented.prototype):L.Draw.Feature.include(L.Mixin.Events)},enable:function(){this._enabled||(L.Handler.prototype.enable.call(this),this.fire(\"enabled\",{handler:this.type}),this._map.fire(L.Draw.Event.DRAWSTART,{layerType:this.type}))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DRAWSTOP,{layerType:this.type}),this.fire(\"disabled\",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Draw.Tooltip(this._map),L.DomEvent.on(this._container,\"keyup\",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,\"keyup\",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire(L.Draw.Event.CREATED,{layer:t,layerType:this.type})},_cancelDrawing:function(t){27===t.keyCode&&(this._map.fire(\"draw:canceled\",{layerType:this.type}),this.disable())}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:\"polyline\"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:\"#b00b00\",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:\"leaflet-div-icon leaflet-editing-icon\"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon\"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,feet:!0,nautic:!1,showLength:!0,zIndexOffset:2e3,factor:1,maxPoints:0},initialize:function(t,e){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:\"leaflet-mouse-marker\",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on(\"mouseout\",this._onMouseOut,this).on(\"mousemove\",this._onMouseMove,this).on(\"mousedown\",this._onMouseDown,this).on(\"mouseup\",this._onMouseUp,this).addTo(this._map),this._map.on(\"mouseup\",this._onMouseUp,this).on(\"mousemove\",this._onMouseMove,this).on(\"zoomlevelschange\",this._onZoomEnd,this).on(\"touchstart\",this._onTouch,this).on(\"zoomend\",this._onZoomEnd,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._clearHideErrorTimeout(),this._cleanUpShape(),this._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers,this._map.removeLayer(this._poly),delete this._poly,this._mouseMarker.off(\"mousedown\",this._onMouseDown,this).off(\"mouseout\",this._onMouseOut,this).off(\"mouseup\",this._onMouseUp,this).off(\"mousemove\",this._onMouseMove,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._clearGuides(),this._map.off(\"mouseup\",this._onMouseUp,this).off(\"mousemove\",this._onMouseMove,this).off(\"zoomlevelschange\",this._onZoomEnd,this).off(\"zoomend\",this._onZoomEnd,this).off(\"touchstart\",this._onTouch,this).off(\"click\",this._onTouch,this)},deleteLastVertex:function(){if(!(this._markers.length<=1)){var t=this._markers.pop(),e=this._poly,i=e.getLatLngs(),o=i.splice(-1,1)[0];this._poly.setLatLngs(i),this._markerGroup.removeLayer(t),e.getLatLngs().length<2&&this._map.removeLayer(e),this._vertexChanged(o,!1)}},addVertex:function(t){if(this._markers.length>=2&&!this.options.allowIntersection&&this._poly.newLatLngIntersects(t))return void this._showErrorTooltip();this._errorShown&&this._hideErrorTooltip(),this._markers.push(this._createMarker(t)),this._poly.addLatLng(t),2===this._poly.getLatLngs().length&&this._map.addLayer(this._poly),this._vertexChanged(t,!0)},completeShape:function(){this._markers.length<=1||!this._shapeIsValid()||(this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable())},_finishShape:function(){var t=this._poly._defaultShape?this._poly._defaultShape():this._poly.getLatLngs(),e=this._poly.newLatLngIntersects(t[t.length-1]);if(!this.options.allowIntersection&&e||!this._shapeIsValid())return void this._showErrorTooltip();this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_shapeIsValid:function(){return!0},_onZoomEnd:function(){null!==this._markers&&this._updateGuide()},_onMouseMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent),i=this._map.layerPointToLatLng(e);this._currentLatLng=i,this._updateTooltip(i),this._updateGuide(e),this._mouseMarker.setLatLng(i),L.DomEvent.preventDefault(t.originalEvent)},_vertexChanged:function(t,e){this._map.fire(L.Draw.Event.DRAWVERTEX,{layers:this._markerGroup}),this._updateFinishHandler(),this._updateRunningMeasure(t,e),this._clearGuides(),this._updateTooltip()},_onMouseDown:function(t){if(!this._clickHandled&&!this._touchHandled&&!this._disableMarkers){this._onMouseMove(t),this._clickHandled=!0,this._disableNewMarkers();var e=t.originalEvent,i=e.clientX,o=e.clientY;this._startPoint.call(this,i,o)}},_startPoint:function(t,e){this._mouseDownOrigin=L.point(t,e)},_onMouseUp:function(t){var e=t.originalEvent,i=e.clientX,o=e.clientY;this._endPoint.call(this,i,o,t),this._clickHandled=null},_endPoint:function(e,i,o){if(this._mouseDownOrigin){var a=L.point(e,i).distanceTo(this._mouseDownOrigin),n=this._calculateFinishDistance(o.latlng);this.options.maxPoints>1&&this.options.maxPoints==this._markers.length+1?(this.addVertex(o.latlng),this._finishShape()):n<10&&L.Browser.touch?this._finishShape():Math.abs(a)<9*(t.devicePixelRatio||1)&&this.addVertex(o.latlng),this._enableNewMarkers()}this._mouseDownOrigin=null},_onTouch:function(t){var e,i,o=t.originalEvent;!o.touches||!o.touches[0]||this._clickHandled||this._touchHandled||this._disableMarkers||(e=o.touches[0].clientX,i=o.touches[0].clientY,this._disableNewMarkers(),this._touchHandled=!0,this._startPoint.call(this,e,i),this._endPoint.call(this,e,i,t),this._touchHandled=null),this._clickHandled=null},_onMouseOut:function(){this._tooltip&&this._tooltip._onMouseOut.call(this._tooltip)},_calculateFinishDistance:function(t){var e;if(this._markers.length>0){var i;if(this.type===L.Draw.Polyline.TYPE)i=this._markers[this._markers.length-1];else{if(this.type!==L.Draw.Polygon.TYPE)return 1/0;i=this._markers[0]}var o=this._map.latLngToContainerPoint(i.getLatLng()),a=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset}),n=this._map.latLngToContainerPoint(a.getLatLng());e=o.distanceTo(n)}else e=1/0;return e},_updateFinishHandler:function(){var t=this._markers.length;t>1&&this._markers[t-1].on(\"click\",this._finishShape,this),t>2&&this._markers[t-2].off(\"click\",this._finishShape,this)},_createMarker:function(t){var e=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset});return this._markerGroup.addLayer(e),e},_updateGuide:function(t){var e=this._markers?this._markers.length:0;e>0&&(t=t||this._map.latLngToLayerPoint(this._currentLatLng),this._clearGuides(),this._drawGuide(this._map.latLngToLayerPoint(this._markers[e-1].getLatLng()),t))},_updateTooltip:function(t){var e=this._getTooltipText();t&&this._tooltip.updatePosition(t),this._errorShown||this._tooltip.updateContent(e)},_drawGuide:function(t,e){var i,o,a,n=Math.floor(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))),s=this.options.guidelineDistance,r=this.options.maxGuideLineLength,l=n>r?n-r:s;for(this._guidesContainer||(this._guidesContainer=L.DomUtil.create(\"div\",\"leaflet-draw-guides\",this._overlayPane));l<n;l+=this.options.guidelineDistance)i=l/n,o={x:Math.floor(t.x*(1-i)+i*e.x),y:Math.floor(t.y*(1-i)+i*e.y)},a=L.DomUtil.create(\"div\",\"leaflet-draw-guide-dash\",this._guidesContainer),a.style.backgroundColor=this._errorShown?this.options.drawError.color:this.options.shapeOptions.color,L.DomUtil.setPosition(a,o)},_updateGuideColor:function(t){if(this._guidesContainer)for(var e=0,i=this._guidesContainer.childNodes.length;e<i;e++)this._guidesContainer.childNodes[e].style.backgroundColor=t},_clearGuides:function(){if(this._guidesContainer)for(;this._guidesContainer.firstChild;)this._guidesContainer.removeChild(this._guidesContainer.firstChild)},_getTooltipText:function(){var t,e,i=this.options.showLength;return 0===this._markers.length?t={text:L.drawLocal.draw.handlers.polyline.tooltip.start}:(e=i?this._getMeasurementString():\"\",t=1===this._markers.length?{text:L.drawLocal.draw.handlers.polyline.tooltip.cont,subtext:e}:{text:L.drawLocal.draw.handlers.polyline.tooltip.end,subtext:e}),t},_updateRunningMeasure:function(t,e){var i,o,a=this._markers.length;1===this._markers.length?this._measurementRunningTotal=0:(i=a-(e?2:1),o=L.GeometryUtil.isVersion07x()?t.distanceTo(this._markers[i].getLatLng())*(this.options.factor||1):this._map.distance(t,this._markers[i].getLatLng())*(this.options.factor||1),this._measurementRunningTotal+=o*(e?1:-1))},_getMeasurementString:function(){var t,e=this._currentLatLng,i=this._markers[this._markers.length-1].getLatLng();return t=L.GeometryUtil.isVersion07x()?i&&e&&e.distanceTo?this._measurementRunningTotal+e.distanceTo(i)*(this.options.factor||1):this._measurementRunningTotal||0:i&&e?this._measurementRunningTotal+this._map.distance(e,i)*(this.options.factor||1):this._measurementRunningTotal||0,L.GeometryUtil.readableDistance(t,this.options.metric,this.options.feet,this.options.nautic,this.options.precision)},_showErrorTooltip:function(){this._errorShown=!0,this._tooltip.showAsError().updateContent({text:this.options.drawError.message}),this._updateGuideColor(this.options.drawError.color),this._poly.setStyle({color:this.options.drawError.color}),this._clearHideErrorTimeout(),this._hideErrorTimeout=setTimeout(L.Util.bind(this._hideErrorTooltip,this),this.options.drawError.timeout)},_hideErrorTooltip:function(){this._errorShown=!1,this._clearHideErrorTimeout(),this._tooltip.removeError().updateContent(this._getTooltipText()),this._updateGuideColor(this.options.shapeOptions.color),this._poly.setStyle({color:this.options.shapeOptions.color})},_clearHideErrorTimeout:function(){this._hideErrorTimeout&&(clearTimeout(this._hideErrorTimeout),this._hideErrorTimeout=null)},_disableNewMarkers:function(){this._disableMarkers=!0},_enableNewMarkers:function(){setTimeout(function(){this._disableMarkers=!1}.bind(this),50)},_cleanUpShape:function(){this._markers.length>1&&this._markers[this._markers.length-1].off(\"click\",this._finishShape,this)},_fireCreatedEvent:function(){var t=new this.Poly(this._poly.getLatLngs(),this.options.shapeOptions);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Polygon=L.Draw.Polyline.extend({statics:{TYPE:\"polygon\"},Poly:L.Polygon,options:{showArea:!1,showLength:!1,shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},metric:!0,feet:!0,nautic:!1,precision:{}},initialize:function(t,e){L.Draw.Polyline.prototype.initialize.call(this,t,e),this.type=L.Draw.Polygon.TYPE},_updateFinishHandler:function(){var t=this._markers.length;1===t&&this._markers[0].on(\"click\",this._finishShape,this),t>2&&(this._markers[t-1].on(\"dblclick\",this._finishShape,this),t>3&&this._markers[t-2].off(\"dblclick\",this._finishShape,this))},_getTooltipText:function(){var t,e;return 0===this._markers.length?t=L.drawLocal.draw.handlers.polygon.tooltip.start:this._markers.length<3?(t=L.drawLocal.draw.handlers.polygon.tooltip.cont,e=this._getMeasurementString()):(t=L.drawLocal.draw.handlers.polygon.tooltip.end,e=this._getMeasurementString()),{text:t,subtext:e}},_getMeasurementString:function(){var t=this._area,e=\"\";return t||this.options.showLength?(this.options.showLength&&(e=L.Draw.Polyline.prototype._getMeasurementString.call(this)),t&&(e+=\"<br>\"+L.GeometryUtil.readableArea(t,this.options.metric,this.options.precision)),e):null},_shapeIsValid:function(){return this._markers.length>=3},_vertexChanged:function(t,e){var i;!this.options.allowIntersection&&this.options.showArea&&(i=this._poly.getLatLngs(),this._area=L.GeometryUtil.geodesicArea(i)),L.Draw.Polyline.prototype._vertexChanged.call(this,t,e)},_cleanUpShape:function(){var t=this._markers.length;t>0&&(this._markers[0].off(\"click\",this._finishShape,this),t>2&&this._markers[t-1].off(\"dblclick\",this._finishShape,this))}}),L.SimpleShape={},L.Draw.SimpleShape=L.Draw.Feature.extend({options:{repeatMode:!1},initialize:function(t,e){this._endLabelText=L.drawLocal.draw.handlers.simpleshape.tooltip.end,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._mapDraggable=this._map.dragging.enabled(),this._mapDraggable&&this._map.dragging.disable(),this._container.style.cursor=\"crosshair\",this._tooltip.updateContent({text:this._initialLabelText}),this._map.on(\"mousedown\",this._onMouseDown,this).on(\"mousemove\",this._onMouseMove,this).on(\"touchstart\",this._onMouseDown,this).on(\"touchmove\",this._onMouseMove,this),e.addEventListener(\"touchstart\",L.DomEvent.preventDefault,{passive:!1}))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._mapDraggable&&this._map.dragging.enable(),this._container.style.cursor=\"\",this._map.off(\"mousedown\",this._onMouseDown,this).off(\"mousemove\",this._onMouseMove,this).off(\"touchstart\",this._onMouseDown,this).off(\"touchmove\",this._onMouseMove,this),L.DomEvent.off(e,\"mouseup\",this._onMouseUp,this),L.DomEvent.off(e,\"touchend\",this._onMouseUp,this),e.removeEventListener(\"touchstart\",L.DomEvent.preventDefault),this._shape&&(this._map.removeLayer(this._shape),delete this._shape)),this._isDrawing=!1},_getTooltipText:function(){return{text:this._endLabelText}},_onMouseDown:function(t){this._isDrawing=!0,this._startLatLng=t.latlng,L.DomEvent.on(e,\"mouseup\",this._onMouseUp,this).on(e,\"touchend\",this._onMouseUp,this).preventDefault(t.originalEvent)},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._isDrawing&&(this._tooltip.updateContent(this._getTooltipText()),this._drawShape(e))},_onMouseUp:function(){this._shape&&this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()}}),L.Draw.Rectangle=L.Draw.SimpleShape.extend({statics:{TYPE:\"rectangle\"},options:{shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showArea:!0,metric:!0},initialize:function(t,e){this.type=L.Draw.Rectangle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.rectangle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},disable:function(){this._enabled&&(this._isCurrentlyTwoClickDrawing=!1,L.Draw.SimpleShape.prototype.disable.call(this))},_onMouseUp:function(t){if(!this._shape&&!this._isCurrentlyTwoClickDrawing)return void(this._isCurrentlyTwoClickDrawing=!0);this._isCurrentlyTwoClickDrawing&&!o(t.target,\"leaflet-pane\")||L.Draw.SimpleShape.prototype._onMouseUp.call(this)},_drawShape:function(t){this._shape?this._shape.setBounds(new L.LatLngBounds(this._startLatLng,t)):(this._shape=new L.Rectangle(new L.LatLngBounds(this._startLatLng,t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Rectangle(this._shape.getBounds(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_getTooltipText:function(){var t,e,i,o=L.Draw.SimpleShape.prototype._getTooltipText.call(this),a=this._shape,n=this.options.showArea;return a&&(t=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),e=L.GeometryUtil.geodesicArea(t),i=n?L.GeometryUtil.readableArea(e,this.options.metric):\"\"),{text:o.text,subtext:i}}}),L.Draw.Marker=L.Draw.Feature.extend({statics:{TYPE:\"marker\"},options:{icon:new L.Icon.Default,repeatMode:!1,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.Marker.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.marker.tooltip.start,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._tooltip.updateContent({text:this._initialLabelText}),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:\"leaflet-mouse-marker\",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on(\"click\",this._onClick,this).addTo(this._map),this._map.on(\"mousemove\",this._onMouseMove,this),this._map.on(\"click\",this._onTouch,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._map.off(\"click\",this._onClick,this).off(\"click\",this._onTouch,this),this._marker&&(this._marker.off(\"click\",this._onClick,this),this._map.removeLayer(this._marker),delete this._marker),this._mouseMarker.off(\"click\",this._onClick,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._map.off(\"mousemove\",this._onMouseMove,this))},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._mouseMarker.setLatLng(e),this._marker?(e=this._mouseMarker.getLatLng(),this._marker.setLatLng(e)):(this._marker=this._createMarker(e),this._marker.on(\"click\",this._onClick,this),this._map.on(\"click\",this._onClick,this).addLayer(this._marker))},_createMarker:function(t){return new L.Marker(t,{icon:this.options.icon,zIndexOffset:this.options.zIndexOffset})},_onClick:function(){this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_onTouch:function(t){this._onMouseMove(t),this._onClick()},_fireCreatedEvent:function(){var t=new L.Marker.Touch(this._marker.getLatLng(),{icon:this.options.icon});L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.CircleMarker=L.Draw.Marker.extend({statics:{TYPE:\"circlemarker\"},options:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.CircleMarker.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circlemarker.tooltip.start,L.Draw.Feature.prototype.initialize.call(this,t,e)},_fireCreatedEvent:function(){var t=new L.CircleMarker(this._marker.getLatLng(),this.options);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)},_createMarker:function(t){return new L.CircleMarker(t,this.options)}}),L.Draw.Circle=L.Draw.SimpleShape.extend({statics:{TYPE:\"circle\"},options:{shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showRadius:!0,metric:!0,feet:!0,nautic:!1},initialize:function(t,e){this.type=L.Draw.Circle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){if(L.GeometryUtil.isVersion07x())var e=this._startLatLng.distanceTo(t);else var e=this._map.distance(this._startLatLng,t);this._shape?this._shape.setRadius(e):(this._shape=new L.Circle(this._startLatLng,e,this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Circle(this._startLatLng,this._shape.getRadius(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_onMouseMove:function(t){var e,i=t.latlng,o=this.options.showRadius,a=this.options.metric;if(this._tooltip.updatePosition(i),this._isDrawing){this._drawShape(i),e=this._shape.getRadius().toFixed(1);var n=\"\";o&&(n=L.drawLocal.draw.handlers.circle.radius+\": \"+L.GeometryUtil.readableDistance(e,a,this.options.feet,this.options.nautic)),this._tooltip.updateContent({text:this._endLabelText,subtext:n})}}}),L.Edit=L.Edit||{},L.Edit.Marker=L.Handler.extend({initialize:function(t,e){this._marker=t,L.setOptions(this,e)},addHooks:function(){var t=this._marker;t.dragging.enable(),t.on(\"dragend\",this._onDragEnd,t),this._toggleMarkerHighlight()},removeHooks:function(){var t=this._marker;t.dragging.disable(),t.off(\"dragend\",this._onDragEnd,t),this._toggleMarkerHighlight()},_onDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_toggleMarkerHighlight:function(){var t=this._marker._icon;t&&(t.style.display=\"none\",L.DomUtil.hasClass(t,\"leaflet-edit-marker-selected\")?(L.DomUtil.removeClass(t,\"leaflet-edit-marker-selected\"),this._offsetMarker(t,-4)):(L.DomUtil.addClass(t,\"leaflet-edit-marker-selected\"),this._offsetMarker(t,4)),t.style.display=\"\")},_offsetMarker:function(t,e){var i=parseInt(t.style.marginTop,10)-e,o=parseInt(t.style.marginLeft,10)-e;t.style.marginTop=i+\"px\",t.style.marginLeft=o+\"px\"}}),L.Marker.addInitHook(function(){L.Edit.Marker&&(this.editing=new L.Edit.Marker(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Poly=L.Handler.extend({initialize:function(t){this.latlngs=[t._latlngs],t._holes&&(this.latlngs=this.latlngs.concat(t._holes)),this._poly=t,this._poly.on(\"revert-edited\",this._updateLatLngs,this)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._poly._latlngs)?this._poly._latlngs:this._poly._latlngs[0]:this._poly._latlngs},_eachVertexHandler:function(t){for(var e=0;e<this._verticesHandlers.length;e++)t(this._verticesHandlers[e])},addHooks:function(){this._initHandlers(),this._eachVertexHandler(function(t){t.addHooks()})},removeHooks:function(){this._eachVertexHandler(function(t){t.removeHooks()})},updateMarkers:function(){this._eachVertexHandler(function(t){t.updateMarkers()})},_initHandlers:function(){this._verticesHandlers=[];for(var t=0;t<this.latlngs.length;t++)this._verticesHandlers.push(new L.Edit.PolyVerticesEdit(this._poly,this.latlngs[t],this._poly.options.poly))},_updateLatLngs:function(t){this.latlngs=[t.layer._latlngs],t.layer._holes&&(this.latlngs=this.latlngs.concat(t.layer._holes))}}),L.Edit.PolyVerticesEdit=L.Handler.extend({options:{icon:new L.DivIcon({iconSize:new L.Point(8,8),className:\"leaflet-div-icon leaflet-editing-icon\"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon\"}),drawError:{color:\"#b00b00\",timeout:1e3}},initialize:function(t,e,i){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this._poly=t,i&&i.drawError&&(i.drawError=L.Util.extend({},this.options.drawError,i.drawError)),this._latlngs=e,L.setOptions(this,i)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._latlngs)?this._latlngs:this._latlngs[0]:this._latlngs},addHooks:function(){var t=this._poly,e=t._path;t instanceof L.Polygon||(t.options.fill=!1,t.options.editing&&(t.options.editing.fill=!1)),e&&t.options.editing&&t.options.editing.className&&(t.options.original.className&&t.options.original.className.split(\" \").forEach(function(t){L.DomUtil.removeClass(e,t)}),t.options.editing.className.split(\" \").forEach(function(t){L.DomUtil.addClass(e,t)})),t.setStyle(t.options.editing),this._poly._map&&(this._map=this._poly._map,this._markerGroup||this._initMarkers(),this._poly._map.addLayer(this._markerGroup))},removeHooks:function(){var t=this._poly,e=t._path;e&&t.options.editing&&t.options.editing.className&&(t.options.editing.className.split(\" \").forEach(function(t){L.DomUtil.removeClass(e,t)}),t.options.original.className&&t.options.original.className.split(\" \").forEach(function(t){L.DomUtil.addClass(e,t)})),t.setStyle(t.options.original),t._map&&(t._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers)},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._markers=[];var t,e,i,o,a=this._defaultShape();for(t=0,i=a.length;t<i;t++)o=this._createMarker(a[t],t),o.on(\"click\",this._onMarkerClick,this),o.on(\"contextmenu\",this._onContextMenu,this),this._markers.push(o);var n,s;for(t=0,e=i-1;t<i;e=t++)(0!==t||L.Polygon&&this._poly instanceof L.Polygon)&&(n=this._markers[e],s=this._markers[t],this._createMiddleMarker(n,s),this._updatePrevNext(n,s))},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:this.options.icon});return i._origLatLng=t,i._index=e,i.on(\"dragstart\",this._onMarkerDragStart,this).on(\"drag\",this._onMarkerDrag,this).on(\"dragend\",this._fireEdit,this).on(\"touchmove\",this._onTouchMove,this).on(\"touchend\",this._fireEdit,this).on(\"MSPointerMove\",this._onTouchMove,this).on(\"MSPointerUp\",this._fireEdit,this),this._markerGroup.addLayer(i),i},_onMarkerDragStart:function(){this._poly.fire(\"editstart\")},_spliceLatLngs:function(){var t=this._defaultShape(),e=[].splice.apply(t,arguments);return this._poly._convertLatLngs(t,!0),this._poly.redraw(),e},_removeMarker:function(t){var e=t._index;this._markerGroup.removeLayer(t),this._markers.splice(e,1),this._spliceLatLngs(e,1),this._updateIndexes(e,-1),t.off(\"dragstart\",this._onMarkerDragStart,this).off(\"drag\",this._onMarkerDrag,this).off(\"dragend\",this._fireEdit,this).off(\"touchmove\",this._onMarkerDrag,this).off(\"touchend\",this._fireEdit,this).off(\"click\",this._onMarkerClick,this).off(\"MSPointerMove\",this._onTouchMove,this).off(\"MSPointerUp\",this._fireEdit,this)},_fireEdit:function(){this._poly.edited=!0,this._poly.fire(\"edit\"),this._poly._map.fire(L.Draw.Event.EDITVERTEX,{layers:this._markerGroup,poly:this._poly})},_onMarkerDrag:function(t){var e=t.target,i=this._poly,o=L.LatLngUtil.cloneLatLng(e._origLatLng);if(L.extend(e._origLatLng,e._latlng),i.options.poly){var a=i._map._editTooltip;if(!i.options.poly.allowIntersection&&i.intersects()){L.extend(e._origLatLng,o),e.setLatLng(o);var n=i.options.color;i.setStyle({color:this.options.drawError.color}),a&&a.updateContent({text:L.drawLocal.draw.handlers.polyline.error}),setTimeout(function(){i.setStyle({color:n}),a&&a.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext})},1e3)}}e._middleLeft&&e._middleLeft.setLatLng(this._getMiddleLatLng(e._prev,e)),e._middleRight&&e._middleRight.setLatLng(this._getMiddleLatLng(e,e._next)),this._poly._bounds._southWest=L.latLng(1/0,1/0),this._poly._bounds._northEast=L.latLng(-1/0,-1/0);var s=this._poly.getLatLngs();this._poly._convertLatLngs(s,!0),this._poly.redraw(),this._poly.fire(\"editdrag\")},_onMarkerClick:function(t){var e=L.Polygon&&this._poly instanceof L.Polygon?4:3,i=t.target;this._defaultShape().length<e||(this._removeMarker(i),this._updatePrevNext(i._prev,i._next),i._middleLeft&&this._markerGroup.removeLayer(i._middleLeft),i._middleRight&&this._markerGroup.removeLayer(i._middleRight),i._prev&&i._next?this._createMiddleMarker(i._prev,i._next):i._prev?i._next||(i._prev._middleRight=null):i._next._middleLeft=null,this._fireEdit())},_onContextMenu:function(t){var e=t.target;this._poly;this._poly._map.fire(L.Draw.Event.MARKERCONTEXT,{marker:e,layers:this._markerGroup,poly:this._poly}),L.DomEvent.stopPropagation},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e),o=t.target;L.extend(o._origLatLng,i),o._middleLeft&&o._middleLeft.setLatLng(this._getMiddleLatLng(o._prev,o)),o._middleRight&&o._middleRight.setLatLng(this._getMiddleLatLng(o,o._next)),this._poly.redraw(),this.updateMarkers()},_updateIndexes:function(t,e){this._markerGroup.eachLayer(function(i){i._index>t&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,o,a,n=this._getMiddleLatLng(t,e),s=this._createMarker(n);s.setOpacity(.6),t._middleRight=e._middleLeft=s,o=function(){s.off(\"touchmove\",o,this);var a=e._index;s._index=a,s.off(\"click\",i,this).on(\"click\",this._onMarkerClick,this),n.lat=s.getLatLng().lat,n.lng=s.getLatLng().lng,this._spliceLatLngs(a,0,n),this._markers.splice(a,0,s),s.setOpacity(1),this._updateIndexes(a,1),e._index++,this._updatePrevNext(t,s),this._updatePrevNext(s,e),this._poly.fire(\"editstart\")},a=function(){s.off(\"dragstart\",o,this),s.off(\"dragend\",a,this),s.off(\"touchmove\",o,this),this._createMiddleMarker(t,s),this._createMiddleMarker(s,e)},i=function(){o.call(this),a.call(this),this._fireEdit()},s.on(\"click\",i,this).on(\"dragstart\",o,this).on(\"dragend\",a,this).on(\"touchmove\",o,this),this._markerGroup.addLayer(s)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,o=i.project(t.getLatLng()),a=i.project(e.getLatLng());return i.unproject(o._add(a)._divideBy(2))}}),L.Polyline.addInitHook(function(){this.editing||(L.Edit.Poly&&(this.editing=new L.Edit.Poly(this),this.options.editable&&this.editing.enable()),this.on(\"add\",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on(\"remove\",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()}))}),L.Edit=L.Edit||{},L.Edit.SimpleShape=L.Handler.extend({options:{moveIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-move\"}),resizeIcon:new L.DivIcon({iconSize:new L.Point(8,8),\nclassName:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize\"}),touchMoveIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon\"}),touchResizeIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon\"})},initialize:function(t,e){L.Browser.touch&&(this.options.moveIcon=this.options.touchMoveIcon,this.options.resizeIcon=this.options.touchResizeIcon),this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){var t=this._shape;this._shape._map&&(this._map=this._shape._map,t.setStyle(t.options.editing),t._map&&(this._map=t._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup)))},removeHooks:function(){var t=this._shape;if(t.setStyle(t.options.original),t._map){this._unbindMarker(this._moveMarker);for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._unbindMarker(this._resizeMarkers[e]);this._resizeMarkers=null,this._map.removeLayer(this._markerGroup),delete this._markerGroup}this._map=null},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._createMoveMarker(),this._createResizeMarker()},_createMoveMarker:function(){},_createResizeMarker:function(){},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:e,zIndexOffset:10});return this._bindMarker(i),this._markerGroup.addLayer(i),i},_bindMarker:function(t){t.on(\"dragstart\",this._onMarkerDragStart,this).on(\"drag\",this._onMarkerDrag,this).on(\"dragend\",this._onMarkerDragEnd,this).on(\"touchstart\",this._onTouchStart,this).on(\"touchmove\",this._onTouchMove,this).on(\"MSPointerMove\",this._onTouchMove,this).on(\"touchend\",this._onTouchEnd,this).on(\"MSPointerUp\",this._onTouchEnd,this)},_unbindMarker:function(t){t.off(\"dragstart\",this._onMarkerDragStart,this).off(\"drag\",this._onMarkerDrag,this).off(\"dragend\",this._onMarkerDragEnd,this).off(\"touchstart\",this._onTouchStart,this).off(\"touchmove\",this._onTouchMove,this).off(\"MSPointerMove\",this._onTouchMove,this).off(\"touchend\",this._onTouchEnd,this).off(\"MSPointerUp\",this._onTouchEnd,this)},_onMarkerDragStart:function(t){t.target.setOpacity(0),this._shape.fire(\"editstart\")},_fireEdit:function(){this._shape.edited=!0,this._shape.fire(\"edit\")},_onMarkerDrag:function(t){var e=t.target,i=e.getLatLng();e===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),this._shape.fire(\"editdrag\")},_onMarkerDragEnd:function(t){t.target.setOpacity(1),this._fireEdit()},_onTouchStart:function(t){if(L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t),\"function\"==typeof this._getCorners){var e=this._getCorners(),i=t.target,o=i._cornerIndex;i.setOpacity(0),this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)}this._shape.fire(\"editstart\")},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e);return t.target===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),!1},_onTouchEnd:function(t){t.target.setOpacity(1),this.updateMarkers(),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;e<i;e++)this._resizeMarkers.push(this._createMarker(t[e],this.options.resizeIcon)),this._resizeMarkers[e]._cornerIndex=e},_onMarkerDragStart:function(t){L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t);var e=this._getCorners(),i=t.target,o=i._cornerIndex;this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)},_onMarkerDragEnd:function(t){var e,i,o=t.target;o===this._moveMarker&&(e=this._shape.getBounds(),i=e.getCenter(),o.setLatLng(i)),this._toggleCornerMarkers(1),this._repositionCornerMarkers(),L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this,t)},_move:function(t){for(var e,i=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),o=this._shape.getBounds(),a=o.getCenter(),n=[],s=0,r=i.length;s<r;s++)e=[i[s].lat-a.lat,i[s].lng-a.lng],n.push([t.lat+e[0],t.lng+e[1]]);this._shape.setLatLngs(n),this._repositionCornerMarkers(),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})},_resize:function(t){var e;this._shape.setBounds(L.latLngBounds(t,this._oppositeCorner)),e=this._shape.getBounds(),this._moveMarker.setLatLng(e.getCenter()),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})},_getCorners:function(){var t=this._shape.getBounds();return[t.getNorthWest(),t.getNorthEast(),t.getSouthEast(),t.getSouthWest()]},_toggleCornerMarkers:function(t){for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setOpacity(t)},_repositionCornerMarkers:function(){for(var t=this._getCorners(),e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setLatLng(t[e])}}),L.Rectangle.addInitHook(function(){L.Edit.Rectangle&&(this.editing=new L.Edit.Rectangle(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.CircleMarker=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getLatLng();this._moveMarker=this._createMarker(t,this.options.moveIcon)},_createResizeMarker:function(){this._resizeMarkers=[]},_move:function(t){if(this._resizeMarkers.length){var e=this._getResizeMarkerPoint(t);this._resizeMarkers[0].setLatLng(e)}this._shape.setLatLng(t),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})}}),L.CircleMarker.addInitHook(function(){L.Edit.CircleMarker&&(this.editing=new L.Edit.CircleMarker(this),this.options.editable&&this.editing.enable()),this.on(\"add\",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on(\"remove\",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()})}),L.Edit=L.Edit||{},L.Edit.Circle=L.Edit.CircleMarker.extend({_createResizeMarker:function(){var t=this._shape.getLatLng(),e=this._getResizeMarkerPoint(t);this._resizeMarkers=[],this._resizeMarkers.push(this._createMarker(e,this.options.resizeIcon))},_getResizeMarkerPoint:function(t){var e=this._shape._radius*Math.cos(Math.PI/4),i=this._map.project(t);return this._map.unproject([i.x+e,i.y-e])},_resize:function(t){var e=this._moveMarker.getLatLng();L.GeometryUtil.isVersion07x()?radius=e.distanceTo(t):radius=this._map.distance(e,t),this._shape.setRadius(radius),this._map.editTooltip&&this._map._editTooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.subtext+\"<br />\"+L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.draw.handlers.circle.radius+\": \"+L.GeometryUtil.readableDistance(radius,!0,this.options.feet,this.options.nautic)}),this._shape.setRadius(radius),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})}}),L.Circle.addInitHook(function(){L.Edit.Circle&&(this.editing=new L.Edit.Circle(this),this.options.editable&&this.editing.enable())}),L.Map.mergeOptions({touchExtend:!0}),L.Map.TouchExtend=L.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane},addHooks:function(){L.DomEvent.on(this._container,\"touchstart\",this._onTouchStart,this),L.DomEvent.on(this._container,\"touchend\",this._onTouchEnd,this),L.DomEvent.on(this._container,\"touchmove\",this._onTouchMove,this),this._detectIE()?(L.DomEvent.on(this._container,\"MSPointerDown\",this._onTouchStart,this),L.DomEvent.on(this._container,\"MSPointerUp\",this._onTouchEnd,this),L.DomEvent.on(this._container,\"MSPointerMove\",this._onTouchMove,this),L.DomEvent.on(this._container,\"MSPointerCancel\",this._onTouchCancel,this)):(L.DomEvent.on(this._container,\"touchcancel\",this._onTouchCancel,this),L.DomEvent.on(this._container,\"touchleave\",this._onTouchLeave,this))},removeHooks:function(){L.DomEvent.off(this._container,\"touchstart\",this._onTouchStart,this),L.DomEvent.off(this._container,\"touchend\",this._onTouchEnd,this),L.DomEvent.off(this._container,\"touchmove\",this._onTouchMove,this),this._detectIE()?(L.DomEvent.off(this._container,\"MSPointerDown\",this._onTouchStart,this),L.DomEvent.off(this._container,\"MSPointerUp\",this._onTouchEnd,this),L.DomEvent.off(this._container,\"MSPointerMove\",this._onTouchMove,this),L.DomEvent.off(this._container,\"MSPointerCancel\",this._onTouchCancel,this)):(L.DomEvent.off(this._container,\"touchcancel\",this._onTouchCancel,this),L.DomEvent.off(this._container,\"touchleave\",this._onTouchLeave,this))},_touchEvent:function(t,e){var i={};if(void 0!==t.touches){if(!t.touches.length)return;i=t.touches[0]}else{if(\"touch\"!==t.pointerType)return;if(i=t,!this._filterClick(t))return}var o=this._map.mouseEventToContainerPoint(i),a=this._map.mouseEventToLayerPoint(i),n=this._map.layerPointToLatLng(a);this._map.fire(e,{latlng:n,layerPoint:a,containerPoint:o,pageX:i.pageX,pageY:i.pageY,originalEvent:t})},_filterClick:function(t){var e=t.timeStamp||t.originalEvent.timeStamp,i=L.DomEvent._lastClick&&e-L.DomEvent._lastClick;return i&&i>100&&i<500||t.target._simulatedClick&&!t._simulated?(L.DomEvent.stop(t),!1):(L.DomEvent._lastClick=e,!0)},_onTouchStart:function(t){if(this._map._loaded){this._touchEvent(t,\"touchstart\")}},_onTouchEnd:function(t){if(this._map._loaded){this._touchEvent(t,\"touchend\")}},_onTouchCancel:function(t){if(this._map._loaded){var e=\"touchcancel\";this._detectIE()&&(e=\"pointercancel\"),this._touchEvent(t,e)}},_onTouchLeave:function(t){if(this._map._loaded){this._touchEvent(t,\"touchleave\")}},_onTouchMove:function(t){if(this._map._loaded){this._touchEvent(t,\"touchmove\")}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf(\"MSIE \");if(i>0)return parseInt(e.substring(i+5,e.indexOf(\".\",i)),10);if(e.indexOf(\"Trident/\")>0){var o=e.indexOf(\"rv:\");return parseInt(e.substring(o+3,e.indexOf(\".\",o)),10)}var a=e.indexOf(\"Edge/\");return a>0&&parseInt(e.substring(a+5,e.indexOf(\".\",a)),10)}}),L.Map.addInitHook(\"addHandler\",\"touchExtend\",L.Map.TouchExtend),L.Marker.Touch=L.Marker.extend({_initInteraction:function(){return this.addInteractiveTarget?L.Marker.prototype._initInteraction.apply(this):this._initInteractionLegacy()},_initInteractionLegacy:function(){if(this.options.clickable){var t=this._icon,e=[\"dblclick\",\"mousedown\",\"mouseover\",\"mouseout\",\"contextmenu\",\"touchstart\",\"touchend\",\"touchmove\"];this._detectIE?e.concat([\"MSPointerDown\",\"MSPointerUp\",\"MSPointerMove\",\"MSPointerCancel\"]):e.concat([\"touchcancel\"]),L.DomUtil.addClass(t,\"leaflet-clickable\"),L.DomEvent.on(t,\"click\",this._onMouseClick,this),L.DomEvent.on(t,\"keypress\",this._onKeyPress,this);for(var i=0;i<e.length;i++)L.DomEvent.on(t,e[i],this._fireMouseEvent,this);L.Handler.MarkerDrag&&(this.dragging=new L.Handler.MarkerDrag(this),this.options.draggable&&this.dragging.enable())}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf(\"MSIE \");if(i>0)return parseInt(e.substring(i+5,e.indexOf(\".\",i)),10);if(e.indexOf(\"Trident/\")>0){var o=e.indexOf(\"rv:\");return parseInt(e.substring(o+3,e.indexOf(\".\",o)),10)}var a=e.indexOf(\"Edge/\");return a>0&&parseInt(e.substring(a+5,e.indexOf(\".\",a)),10)}}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;i<o;i++)Array.isArray(t[i])?e.push(L.LatLngUtil.cloneLatLngs(t[i])):e.push(this.cloneLatLng(t[i]));return e},cloneLatLng:function(t){return L.latLng(t.lat,t.lng)}},function(){var t={km:2,ha:2,m:0,mi:2,ac:2,yd:0,ft:0,nm:2};L.GeometryUtil=L.extend(L.GeometryUtil||{},{geodesicArea:function(t){var e,i,o=t.length,a=0,n=Math.PI/180;if(o>2){for(var s=0;s<o;s++)e=t[s],i=t[(s+1)%o],a+=(i.lng-e.lng)*n*(2+Math.sin(e.lat*n)+Math.sin(i.lat*n));a=6378137*a*6378137/2}return Math.abs(a)},formattedNumber:function(t,e){var i=parseFloat(t).toFixed(e),o=L.drawLocal.format&&L.drawLocal.format.numeric,a=o&&o.delimiters,n=a&&a.thousands,s=a&&a.decimal;if(n||s){var r=i.split(\".\");i=n?r[0].replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+n):r[0],s=s||\".\",r.length>1&&(i=i+s+r[1])}return i},readableArea:function(e,i,o){var a,n,o=L.Util.extend({},t,o);return i?(n=[\"ha\",\"m\"],type=typeof i,\"string\"===type?n=[i]:\"boolean\"!==type&&(n=i),a=e>=1e6&&-1!==n.indexOf(\"km\")?L.GeometryUtil.formattedNumber(1e-6*e,o.km)+\" km²\":e>=1e4&&-1!==n.indexOf(\"ha\")?L.GeometryUtil.formattedNumber(1e-4*e,o.ha)+\" ha\":L.GeometryUtil.formattedNumber(e,o.m)+\" m²\"):(e/=.836127,a=e>=3097600?L.GeometryUtil.formattedNumber(e/3097600,o.mi)+\" mi²\":e>=4840?L.GeometryUtil.formattedNumber(e/4840,o.ac)+\" acres\":L.GeometryUtil.formattedNumber(e,o.yd)+\" yd²\"),a},readableDistance:function(e,i,o,a,n){var s,n=L.Util.extend({},t,n);switch(i?\"string\"==typeof i?i:\"metric\":o?\"feet\":a?\"nauticalMile\":\"yards\"){case\"metric\":s=e>1e3?L.GeometryUtil.formattedNumber(e/1e3,n.km)+\" km\":L.GeometryUtil.formattedNumber(e,n.m)+\" m\";break;case\"feet\":e*=3.28083,s=L.GeometryUtil.formattedNumber(e,n.ft)+\" ft\";break;case\"nauticalMile\":e*=.53996,s=L.GeometryUtil.formattedNumber(e/1e3,n.nm)+\" nm\";break;case\"yards\":default:e*=1.09361,s=e>1760?L.GeometryUtil.formattedNumber(e/1760,n.mi)+\" miles\":L.GeometryUtil.formattedNumber(e,n.yd)+\" yd\"}return s},isVersion07x:function(){var t=L.version.split(\".\");return 0===parseInt(t[0],10)&&7===parseInt(t[1],10)}})}(),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._getProjectedPoints(),a=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=a-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return!!this._map&&this.newPointIntersects(this._map.latLngToLayerPoint(t),e)},newPointIntersects:function(t,e){var i=this._getProjectedPoints(),o=i?i.length:0,a=i?i[o-1]:null,n=o-2;return!this._tooFewPointsForIntersection(1)&&this._lineSegmentsIntersectsRange(a,t,n,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._getProjectedPoints(),i=e?e.length:0;return i+=t||0,!e||i<=3},_lineSegmentsIntersectsRange:function(t,e,i,o){var a,n,s=this._getProjectedPoints();o=o||0;for(var r=i;r>o;r--)if(a=s[r-1],n=s[r],L.LineUtil.segmentsIntersect(t,e,a,n))return!0;return!1},_getProjectedPoints:function(){if(!this._defaultShape)return this._originalPoints;for(var t=[],e=this._defaultShape(),i=0;i<e.length;i++)t.push(this._map.latLngToLayerPoint(e[i]));return t}}),L.Polygon.include({intersects:function(){var t,e,i,o,a=this._getProjectedPoints();return!this._tooFewPointsForIntersection()&&(!!L.Polyline.prototype.intersects.call(this)||(t=a.length,e=a[0],i=a[t-1],o=t-2,this._lineSegmentsIntersectsRange(i,e,o,1)))}}),L.Control.Draw=L.Control.extend({options:{position:\"topleft\",draw:{},edit:!1},initialize:function(t){if(L.version<\"0.7\")throw new Error(\"Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/\");L.Control.prototype.initialize.call(this,t);var e;this._toolbars={},L.DrawToolbar&&this.options.draw&&(e=new L.DrawToolbar(this.options.draw),this._toolbars[L.DrawToolbar.TYPE]=e,this._toolbars[L.DrawToolbar.TYPE].on(\"enable\",this._toolbarEnabled,this)),L.EditToolbar&&this.options.edit&&(e=new L.EditToolbar(this.options.edit),this._toolbars[L.EditToolbar.TYPE]=e,this._toolbars[L.EditToolbar.TYPE].on(\"enable\",this._toolbarEnabled,this)),L.toolbar=this},onAdd:function(t){var e,i=L.DomUtil.create(\"div\",\"leaflet-draw\"),o=!1;for(var a in this._toolbars)this._toolbars.hasOwnProperty(a)&&(e=this._toolbars[a].addToolbar(t))&&(o||(L.DomUtil.hasClass(e,\"leaflet-draw-toolbar-top\")||L.DomUtil.addClass(e.childNodes[0],\"leaflet-draw-toolbar-top\"),o=!0),i.appendChild(e));return i},onRemove:function(){for(var t in this._toolbars)this._toolbars.hasOwnProperty(t)&&this._toolbars[t].removeToolbar()},setDrawingOptions:function(t){for(var e in this._toolbars)this._toolbars[e]instanceof L.DrawToolbar&&this._toolbars[e].setOptions(t)},_toolbarEnabled:function(t){var e=t.target;for(var i in this._toolbars)this._toolbars[i]!==e&&this._toolbars[i].disable()}}),L.Map.mergeOptions({drawControlTooltips:!0,drawControl:!1}),L.Map.addInitHook(function(){this.options.drawControl&&(this.drawControl=new L.Control.Draw,this.addControl(this.drawControl))}),L.Toolbar=L.Class.extend({initialize:function(t){L.setOptions(this,t),this._modes={},this._actionButtons=[],this._activeMode=null;var e=L.version.split(\".\");1===parseInt(e[0],10)&&parseInt(e[1],10)>=2?L.Toolbar.include(L.Evented.prototype):L.Toolbar.include(L.Mixin.Events)},enabled:function(){return null!==this._activeMode},disable:function(){this.enabled()&&this._activeMode.handler.disable()},addToolbar:function(t){var e,i=L.DomUtil.create(\"div\",\"leaflet-draw-section\"),o=0,a=this._toolbarClass||\"\",n=this.getModeHandlers(t);for(this._toolbarContainer=L.DomUtil.create(\"div\",\"leaflet-draw-toolbar leaflet-bar\"),this._map=t,e=0;e<n.length;e++)n[e].enabled&&this._initModeHandler(n[e].handler,this._toolbarContainer,o++,a,n[e].title);if(o)return this._lastButtonIndex=--o,this._actionsContainer=L.DomUtil.create(\"ul\",\"leaflet-draw-actions\"),i.appendChild(this._toolbarContainer),i.appendChild(this._actionsContainer),i},removeToolbar:function(){for(var t in this._modes)this._modes.hasOwnProperty(t)&&(this._disposeButton(this._modes[t].button,this._modes[t].handler.enable,this._modes[t].handler),this._modes[t].handler.disable(),this._modes[t].handler.off(\"enabled\",this._handlerActivated,this).off(\"disabled\",this._handlerDeactivated,this));this._modes={};for(var e=0,i=this._actionButtons.length;e<i;e++)this._disposeButton(this._actionButtons[e].button,this._actionButtons[e].callback,this);this._actionButtons=[],this._actionsContainer=null},_initModeHandler:function(t,e,i,o,a){var n=t.type;this._modes[n]={},this._modes[n].handler=t,this._modes[n].button=this._createButton({type:n,title:a,className:o+\"-\"+n,container:e,callback:this._modes[n].handler.enable,context:this._modes[n].handler}),this._modes[n].buttonIndex=i,this._modes[n].handler.on(\"enabled\",this._handlerActivated,this).on(\"disabled\",this._handlerDeactivated,this)},_detectIOS:function(){return/iPad|iPhone|iPod/.test(navigator.userAgent)&&!t.MSStream},_createButton:function(t){var e=L.DomUtil.create(\"a\",t.className||\"\",t.container),i=L.DomUtil.create(\"span\",\"sr-only\",t.container);e.href=\"#\",e.appendChild(i),t.title&&(e.title=t.title,i.innerHTML=t.title),t.text&&(e.innerHTML=t.text,i.innerHTML=t.text);var o=this._detectIOS()?\"touchstart\":\"click\";return L.DomEvent.on(e,\"click\",L.DomEvent.stopPropagation).on(e,\"mousedown\",L.DomEvent.stopPropagation).on(e,\"dblclick\",L.DomEvent.stopPropagation).on(e,\"touchstart\",L.DomEvent.stopPropagation).on(e,\"click\",L.DomEvent.preventDefault).on(e,o,t.callback,t.context),e},_disposeButton:function(t,e){var i=this._detectIOS()?\"touchstart\":\"click\";L.DomEvent.off(t,\"click\",L.DomEvent.stopPropagation).off(t,\"mousedown\",L.DomEvent.stopPropagation).off(t,\"dblclick\",L.DomEvent.stopPropagation).off(t,\"touchstart\",L.DomEvent.stopPropagation).off(t,\"click\",L.DomEvent.preventDefault).off(t,i,e)},_handlerActivated:function(t){this.disable(),this._activeMode=this._modes[t.handler],L.DomUtil.addClass(this._activeMode.button,\"leaflet-draw-toolbar-button-enabled\"),this._showActionsToolbar(),this.fire(\"enable\")},_handlerDeactivated:function(){this._hideActionsToolbar(),L.DomUtil.removeClass(this._activeMode.button,\"leaflet-draw-toolbar-button-enabled\"),this._activeMode=null,this.fire(\"disable\")},_createActions:function(t){var e,i,o,a,n=this._actionsContainer,s=this.getActions(t),r=s.length;for(i=0,o=this._actionButtons.length;i<o;i++)this._disposeButton(this._actionButtons[i].button,this._actionButtons[i].callback);for(this._actionButtons=[];n.firstChild;)n.removeChild(n.firstChild);for(var l=0;l<r;l++)\"enabled\"in s[l]&&!s[l].enabled||(e=L.DomUtil.create(\"li\",\"\",n),a=this._createButton({title:s[l].title,text:s[l].text,container:e,callback:s[l].callback,context:s[l].context}),this._actionButtons.push({button:a,callback:s[l].callback}))},_showActionsToolbar:function(){var t=this._activeMode.buttonIndex,e=this._lastButtonIndex,i=this._activeMode.button.offsetTop-1;this._createActions(this._activeMode.handler),this._actionsContainer.style.top=i+\"px\",0===t&&(L.DomUtil.addClass(this._toolbarContainer,\"leaflet-draw-toolbar-notop\"),L.DomUtil.addClass(this._actionsContainer,\"leaflet-draw-actions-top\")),t===e&&(L.DomUtil.addClass(this._toolbarContainer,\"leaflet-draw-toolbar-nobottom\"),L.DomUtil.addClass(this._actionsContainer,\"leaflet-draw-actions-bottom\")),this._actionsContainer.style.display=\"block\",this._map.fire(L.Draw.Event.TOOLBAROPENED)},_hideActionsToolbar:function(){this._actionsContainer.style.display=\"none\",L.DomUtil.removeClass(this._toolbarContainer,\"leaflet-draw-toolbar-notop\"),L.DomUtil.removeClass(this._toolbarContainer,\"leaflet-draw-toolbar-nobottom\"),L.DomUtil.removeClass(this._actionsContainer,\"leaflet-draw-actions-top\"),L.DomUtil.removeClass(this._actionsContainer,\"leaflet-draw-actions-bottom\"),this._map.fire(L.Draw.Event.TOOLBARCLOSED)}}),L.Draw=L.Draw||{},L.Draw.Tooltip=L.Class.extend({initialize:function(t){this._map=t,this._popupPane=t._panes.popupPane,this._visible=!1,this._container=t.options.drawControlTooltips?L.DomUtil.create(\"div\",\"leaflet-draw-tooltip\",this._popupPane):null,this._singleLineLabel=!1,this._map.on(\"mouseout\",this._onMouseOut,this)},dispose:function(){this._map.off(\"mouseout\",this._onMouseOut,this),this._container&&(this._popupPane.removeChild(this._container),this._container=null)},updateContent:function(t){return this._container?(t.subtext=t.subtext||\"\",0!==t.subtext.length||this._singleLineLabel?t.subtext.length>0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,\"leaflet-draw-tooltip-single\"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,\"leaflet-draw-tooltip-single\"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?'<span class=\"leaflet-draw-tooltip-subtext\">'+t.subtext+\"</span><br />\":\"\")+\"<span>\"+t.text+\"</span>\",t.text||t.subtext?(this._visible=!0,this._container.style.visibility=\"inherit\"):(this._visible=!1,this._container.style.visibility=\"hidden\"),this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(this._visible&&(i.style.visibility=\"inherit\"),L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,\"leaflet-error-draw-tooltip\"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,\"leaflet-error-draw-tooltip\"),this},_onMouseOut:function(){this._container&&(this._container.style.visibility=\"hidden\")}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:\"draw\"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{},circlemarker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass=\"leaflet-draw-draw\",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker},{enabled:this.options.circlemarker,handler:new L.Draw.CircleMarker(t,this.options.circlemarker),title:L.drawLocal.draw.toolbar.buttons.circlemarker}]},getActions:function(t){return[{enabled:t.completeShape,title:L.drawLocal.draw.toolbar.finish.title,text:L.drawLocal.draw.toolbar.finish.text,callback:t.completeShape,context:t},{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:\"edit\"},options:{edit:{selectedPathOptions:{dashArray:\"10, 10\",fill:!0,fillColor:\"#fe57a1\",fillOpacity:.1,maintainColor:!1}},remove:{},poly:null,featureGroup:null},initialize:function(t){t.edit&&(void 0===t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),t.poly&&(t.poly=L.extend({},this.options.poly,t.poly)),this._toolbarClass=\"leaflet-draw-edit\",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions,poly:this.options.poly}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(t){var e=[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this}];return t.removeAllLayers&&e.push({title:L.drawLocal.edit.toolbar.actions.clearAll.title,text:L.drawLocal.edit.toolbar.actions.clearAll.text,callback:this._clearAllLayers,context:this}),e},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on(\"layeradd layerremove\",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off(\"layeradd layerremove\",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode&&this._activeMode.handler.disable()},_clearAllLayers:function(){this._activeMode.handler.removeAllLayers(),this._activeMode&&this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,\"leaflet-disabled\"):L.DomUtil.addClass(t,\"leaflet-disabled\"),t.setAttribute(\"title\",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,\"leaflet-disabled\"):L.DomUtil.addClass(t,\"leaflet-disabled\"),t.setAttribute(\"title\",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:\"edit\"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error(\"options.featureGroup must be a L.FeatureGroup\");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE;var i=L.version.split(\".\");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Edit.include(L.Evented.prototype):L.EditToolbar.Edit.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire(\"enabled\",{handler:this.type}),this._map.fire(L.Draw.Event.EDITSTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on(\"layeradd\",this._enableLayerEdit,this).on(\"layerremove\",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off(\"layeradd\",this._enableLayerEdit,this).off(\"layerremove\",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.EDITSTOP,{handler:this.type}),this.fire(\"disabled\",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),t._editTooltip=this._tooltip,this._updateTooltip(),this._map.on(\"mousemove\",this._onMouseMove,this).on(\"touchmove\",this._onMouseMove,this).on(\"MSPointerMove\",this._onMouseMove,this).on(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off(\"mousemove\",this._onMouseMove,this).off(\"touchmove\",this._onMouseMove,this).off(\"MSPointerMove\",this._onMouseMove,this).off(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire(L.Draw.Event.EDITED,{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:(t instanceof L.Marker||t instanceof L.CircleMarker)&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_getTooltipText:function(){return{text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}},_updateTooltip:function(){this._tooltip.updateContent(this._getTooltipText())},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):(t instanceof L.Marker||t instanceof L.CircleMarker)&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire(\"revert-edited\",{layer:t}))},_enableLayerEdit:function(t){var e,i,o=t.layer||t.target||t;this._backupLayer(o),this.options.poly&&(i=L.Util.extend({},this.options.poly),o.options.poly=i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=o.options.color,e.fillColor=o.options.fillColor),o.options.original=L.extend({},o.options),o.options.editing=e),o instanceof L.Marker?(o.editing&&o.editing.enable(),o.dragging.enable(),o.on(\"dragend\",this._onMarkerDragEnd).on(\"touchmove\",this._onTouchMove,this).on(\"MSPointerMove\",this._onTouchMove,this).on(\"touchend\",this._onMarkerDragEnd,this).on(\"MSPointerUp\",this._onMarkerDragEnd,this)):o.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing&&e.editing.disable(),delete e.options.editing,delete e.options.original,\nthis._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off(\"dragend\",this._onMarkerDragEnd,this).off(\"touchmove\",this._onTouchMove,this).off(\"MSPointerMove\",this._onTouchMove,this).off(\"touchend\",this._onMarkerDragEnd,this).off(\"MSPointerUp\",this._onMarkerDragEnd,this)):e.editing.disable()},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_onTouchMove:function(t){var e=t.originalEvent.changedTouches[0],i=this._map.mouseEventToLayerPoint(e),o=this._map.layerPointToLatLng(i);t.target.setLatLng(o)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:\"remove\"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error(\"options.featureGroup must be a L.FeatureGroup\");this.type=L.EditToolbar.Delete.TYPE;var i=L.version.split(\".\");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Delete.include(L.Evented.prototype):L.EditToolbar.Delete.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire(\"enabled\",{handler:this.type}),this._map.fire(L.Draw.Event.DELETESTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on(\"layeradd\",this._enableLayerDelete,this).on(\"layerremove\",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off(\"layeradd\",this._enableLayerDelete,this).off(\"layerremove\",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DELETESTOP,{handler:this.type}),this.fire(\"disabled\",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on(\"mousemove\",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off(\"mousemove\",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire(\"revert-deleted\",{layer:t})},this)},save:function(){this._map.fire(L.Draw.Event.DELETED,{layers:this._deletedLayers})},removeAllLayers:function(){this._deletableLayers.eachLayer(function(t){this._removeLayer({layer:t})},this),this.save()},_enableLayerDelete:function(t){(t.layer||t.target||t).on(\"click\",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off(\"click\",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire(\"deleted\")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document);","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n\"use strict\";\nvar utils = require(\"./utils\");\nvar support = require(\"./support\");\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n    var output = [];\n    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n    var i = 0, len = input.length, remainingBytes = len;\n\n    var isArray = utils.getTypeOf(input) !== \"string\";\n    while (i < input.length) {\n        remainingBytes = len - i;\n\n        if (!isArray) {\n            chr1 = input.charCodeAt(i++);\n            chr2 = i < len ? input.charCodeAt(i++) : 0;\n            chr3 = i < len ? input.charCodeAt(i++) : 0;\n        } else {\n            chr1 = input[i++];\n            chr2 = i < len ? input[i++] : 0;\n            chr3 = i < len ? input[i++] : 0;\n        }\n\n        enc1 = chr1 >> 2;\n        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n        enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n        output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n    }\n\n    return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n    var chr1, chr2, chr3;\n    var enc1, enc2, enc3, enc4;\n    var i = 0, resultIndex = 0;\n\n    var dataUrlPrefix = \"data:\";\n\n    if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n        // This is a common error: people give a data url\n        // (data:image/png;base64,iVBOR...) with a {base64: true} and\n        // wonders why things don't work.\n        // We can detect that the string input looks like a data url but we\n        // *can't* be sure it is one: removing everything up to the comma would\n        // be too dangerous.\n        throw new Error(\"Invalid base64 input, it looks like a data url.\");\n    }\n\n    input = input.replace(/[^A-Za-z0-9+/=]/g, \"\");\n\n    var totalLength = input.length * 3 / 4;\n    if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if (totalLength % 1 !== 0) {\n        // totalLength is not an integer, the length does not match a valid\n        // base64 content. That can happen if:\n        // - the input is not a base64 content\n        // - the input is *almost* a base64 content, with a extra chars at the\n        //   beginning or at the end\n        // - the input uses a base64 variant (base64url for example)\n        throw new Error(\"Invalid base64 input, bad content length.\");\n    }\n    var output;\n    if (support.uint8array) {\n        output = new Uint8Array(totalLength|0);\n    } else {\n        output = new Array(totalLength|0);\n    }\n\n    while (i < input.length) {\n\n        enc1 = _keyStr.indexOf(input.charAt(i++));\n        enc2 = _keyStr.indexOf(input.charAt(i++));\n        enc3 = _keyStr.indexOf(input.charAt(i++));\n        enc4 = _keyStr.indexOf(input.charAt(i++));\n\n        chr1 = (enc1 << 2) | (enc2 >> 4);\n        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n        chr3 = ((enc3 & 3) << 6) | enc4;\n\n        output[resultIndex++] = chr1;\n\n        if (enc3 !== 64) {\n            output[resultIndex++] = chr2;\n        }\n        if (enc4 !== 64) {\n            output[resultIndex++] = chr3;\n        }\n\n    }\n\n    return output;\n};\n\n},{\"./support\":30,\"./utils\":32}],2:[function(require,module,exports){\n\"use strict\";\n\nvar external = require(\"./external\");\nvar DataWorker = require(\"./stream/DataWorker\");\nvar Crc32Probe = require(\"./stream/Crc32Probe\");\nvar DataLengthProbe = require(\"./stream/DataLengthProbe\");\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nfunction CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n    this.compressedSize = compressedSize;\n    this.uncompressedSize = uncompressedSize;\n    this.crc32 = crc32;\n    this.compression = compression;\n    this.compressedContent = data;\n}\n\nCompressedObject.prototype = {\n    /**\n     * Create a worker to get the uncompressed content.\n     * @return {GenericWorker} the worker.\n     */\n    getContentWorker: function () {\n        var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n            .pipe(this.compression.uncompressWorker())\n            .pipe(new DataLengthProbe(\"data_length\"));\n\n        var that = this;\n        worker.on(\"end\", function () {\n            if (this.streamInfo[\"data_length\"] !== that.uncompressedSize) {\n                throw new Error(\"Bug : uncompressed data size mismatch\");\n            }\n        });\n        return worker;\n    },\n    /**\n     * Create a worker to get the compressed content.\n     * @return {GenericWorker} the worker.\n     */\n    getCompressedWorker: function () {\n        return new DataWorker(external.Promise.resolve(this.compressedContent))\n            .withStreamInfo(\"compressedSize\", this.compressedSize)\n            .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n            .withStreamInfo(\"crc32\", this.crc32)\n            .withStreamInfo(\"compression\", this.compression)\n        ;\n    }\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n    return uncompressedWorker\n        .pipe(new Crc32Probe())\n        .pipe(new DataLengthProbe(\"uncompressedSize\"))\n        .pipe(compression.compressWorker(compressionOptions))\n        .pipe(new DataLengthProbe(\"compressedSize\"))\n        .withStreamInfo(\"compression\", compression);\n};\n\nmodule.exports = CompressedObject;\n\n},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(require,module,exports){\n\"use strict\";\n\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nexports.STORE = {\n    magic: \"\\x00\\x00\",\n    compressWorker : function () {\n        return new GenericWorker(\"STORE compression\");\n    },\n    uncompressWorker : function () {\n        return new GenericWorker(\"STORE decompression\");\n    }\n};\nexports.DEFLATE = require(\"./flate\");\n\n},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"./utils\");\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n    var c, table = [];\n\n    for(var n =0; n < 256; n++){\n        c = n;\n        for(var k =0; k < 8; k++){\n            c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n        }\n        table[n] = c;\n    }\n\n    return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n    var t = crcTable, end = pos + len;\n\n    crc = crc ^ (-1);\n\n    for (var i = pos; i < end; i++ ) {\n        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n    }\n\n    return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n    var t = crcTable, end = pos + len;\n\n    crc = crc ^ (-1);\n\n    for (var i = pos; i < end; i++ ) {\n        crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n    }\n\n    return (crc ^ (-1)); // >>> 0;\n}\n\nmodule.exports = function crc32wrapper(input, crc) {\n    if (typeof input === \"undefined\" || !input.length) {\n        return 0;\n    }\n\n    var isArray = utils.getTypeOf(input) !== \"string\";\n\n    if(isArray) {\n        return crc32(crc|0, input, input.length, 0);\n    } else {\n        return crc32str(crc|0, input, input.length, 0);\n    }\n};\n\n},{\"./utils\":32}],5:[function(require,module,exports){\n\"use strict\";\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = true;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n    ES6Promise = Promise;\n} else {\n    ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n    Promise: ES6Promise\n};\n\n},{\"lie\":37}],7:[function(require,module,exports){\n\"use strict\";\nvar USE_TYPEDARRAY = (typeof Uint8Array !== \"undefined\") && (typeof Uint16Array !== \"undefined\") && (typeof Uint32Array !== \"undefined\");\n\nvar pako = require(\"pako\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nvar ARRAY_TYPE = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nfunction FlateWorker(action, options) {\n    GenericWorker.call(this, \"FlateWorker/\" + action);\n\n    this._pako = null;\n    this._pakoAction = action;\n    this._pakoOptions = options;\n    // the `meta` object from the last chunk received\n    // this allow this worker to pass around metadata\n    this.meta = {};\n}\n\nutils.inherits(FlateWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nFlateWorker.prototype.processChunk = function (chunk) {\n    this.meta = chunk.meta;\n    if (this._pako === null) {\n        this._createPako();\n    }\n    this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);\n};\n\n/**\n * @see GenericWorker.flush\n */\nFlateWorker.prototype.flush = function () {\n    GenericWorker.prototype.flush.call(this);\n    if (this._pako === null) {\n        this._createPako();\n    }\n    this._pako.push([], true);\n};\n/**\n * @see GenericWorker.cleanUp\n */\nFlateWorker.prototype.cleanUp = function () {\n    GenericWorker.prototype.cleanUp.call(this);\n    this._pako = null;\n};\n\n/**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\nFlateWorker.prototype._createPako = function () {\n    this._pako = new pako[this._pakoAction]({\n        raw: true,\n        level: this._pakoOptions.level || -1 // default compression\n    });\n    var self = this;\n    this._pako.onData = function(data) {\n        self.push({\n            data : data,\n            meta : self.meta\n        });\n    };\n};\n\nexports.compressWorker = function (compressionOptions) {\n    return new FlateWorker(\"Deflate\", compressionOptions);\n};\nexports.uncompressWorker = function () {\n    return new FlateWorker(\"Inflate\", {});\n};\n\n},{\"./stream/GenericWorker\":28,\"./utils\":32,\"pako\":38}],8:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"../stream/GenericWorker\");\nvar utf8 = require(\"../utf8\");\nvar crc32 = require(\"../crc32\");\nvar signature = require(\"../signature\");\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n    var hex = \"\", i;\n    for (i = 0; i < bytes; i++) {\n        hex += String.fromCharCode(dec & 0xff);\n        dec = dec >>> 8;\n    }\n    return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n *     ^^^_________________________ setuid, setgid, sticky\n *        ^^^^^^^^^________________ permissions\n *                 ^^^^^^^^^^______ not used ?\n *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n    var result = unixPermissions;\n    if (!unixPermissions) {\n        // I can't use octal values in strict mode, hence the hexa.\n        //  040775 => 0x41fd\n        // 0100664 => 0x81b4\n        result = isDir ? 0x41fd : 0x81b4;\n    }\n    return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0     Read-Only\n * Bit 1     Hidden\n * Bit 2     System\n * Bit 3     Volume Label\n * Bit 4     Directory\n * Bit 5     Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions) {\n    // the dir flag is already set for compatibility\n    return (dosPermissions || 0)  & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n    var file = streamInfo[\"file\"],\n        compression = streamInfo[\"compression\"],\n        useCustomEncoding = encodeFileName !== utf8.utf8encode,\n        encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n        utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n        comment = file.comment,\n        encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n        utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n        useUTF8ForComment = utfEncodedComment.length !== comment.length,\n        dosTime,\n        dosDate,\n        extraFields = \"\",\n        unicodePathExtraField = \"\",\n        unicodeCommentExtraField = \"\",\n        dir = file.dir,\n        date = file.date;\n\n\n    var dataInfo = {\n        crc32 : 0,\n        compressedSize : 0,\n        uncompressedSize : 0\n    };\n\n    // if the content is streamed, the sizes/crc32 are only available AFTER\n    // the end of the stream.\n    if (!streamedContent || streamingEnded) {\n        dataInfo.crc32 = streamInfo[\"crc32\"];\n        dataInfo.compressedSize = streamInfo[\"compressedSize\"];\n        dataInfo.uncompressedSize = streamInfo[\"uncompressedSize\"];\n    }\n\n    var bitflag = 0;\n    if (streamedContent) {\n        // Bit 3: the sizes/crc32 are set to zero in the local header.\n        // The correct values are put in the data descriptor immediately\n        // following the compressed data.\n        bitflag |= 0x0008;\n    }\n    if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n        // Bit 11: Language encoding flag (EFS).\n        bitflag |= 0x0800;\n    }\n\n\n    var extFileAttr = 0;\n    var versionMadeBy = 0;\n    if (dir) {\n        // dos or unix, we set the dos dir flag\n        extFileAttr |= 0x00010;\n    }\n    if(platform === \"UNIX\") {\n        versionMadeBy = 0x031E; // UNIX, version 3.0\n        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n    } else { // DOS or other, fallback to DOS\n        versionMadeBy = 0x0014; // DOS, version 2.0\n        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n    }\n\n    // date\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n    dosTime = date.getUTCHours();\n    dosTime = dosTime << 6;\n    dosTime = dosTime | date.getUTCMinutes();\n    dosTime = dosTime << 5;\n    dosTime = dosTime | date.getUTCSeconds() / 2;\n\n    dosDate = date.getUTCFullYear() - 1980;\n    dosDate = dosDate << 4;\n    dosDate = dosDate | (date.getUTCMonth() + 1);\n    dosDate = dosDate << 5;\n    dosDate = dosDate | date.getUTCDate();\n\n    if (useUTF8ForFileName) {\n        // set the unicode path extra field. unzip needs at least one extra\n        // field to correctly handle unicode path, so using the path is as good\n        // as any other information. This could improve the situation with\n        // other archive managers too.\n        // This field is usually used without the utf8 flag, with a non\n        // unicode path in the header (winrar, winzip). This helps (a bit)\n        // with the messy Windows' default compressed folders feature but\n        // breaks on p7zip which doesn't seek the unicode path extra field.\n        // So for now, UTF-8 everywhere !\n        unicodePathExtraField =\n            // Version\n            decToHex(1, 1) +\n            // NameCRC32\n            decToHex(crc32(encodedFileName), 4) +\n            // UnicodeName\n            utfEncodedFileName;\n\n        extraFields +=\n            // Info-ZIP Unicode Path Extra Field\n            \"\\x75\\x70\" +\n            // size\n            decToHex(unicodePathExtraField.length, 2) +\n            // content\n            unicodePathExtraField;\n    }\n\n    if(useUTF8ForComment) {\n\n        unicodeCommentExtraField =\n            // Version\n            decToHex(1, 1) +\n            // CommentCRC32\n            decToHex(crc32(encodedComment), 4) +\n            // UnicodeName\n            utfEncodedComment;\n\n        extraFields +=\n            // Info-ZIP Unicode Path Extra Field\n            \"\\x75\\x63\" +\n            // size\n            decToHex(unicodeCommentExtraField.length, 2) +\n            // content\n            unicodeCommentExtraField;\n    }\n\n    var header = \"\";\n\n    // version needed to extract\n    header += \"\\x0A\\x00\";\n    // general purpose bit flag\n    header += decToHex(bitflag, 2);\n    // compression method\n    header += compression.magic;\n    // last mod file time\n    header += decToHex(dosTime, 2);\n    // last mod file date\n    header += decToHex(dosDate, 2);\n    // crc-32\n    header += decToHex(dataInfo.crc32, 4);\n    // compressed size\n    header += decToHex(dataInfo.compressedSize, 4);\n    // uncompressed size\n    header += decToHex(dataInfo.uncompressedSize, 4);\n    // file name length\n    header += decToHex(encodedFileName.length, 2);\n    // extra field length\n    header += decToHex(extraFields.length, 2);\n\n\n    var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n    var dirRecord = signature.CENTRAL_FILE_HEADER +\n        // version made by (00: DOS)\n        decToHex(versionMadeBy, 2) +\n        // file header (common to file and central directory)\n        header +\n        // file comment length\n        decToHex(encodedComment.length, 2) +\n        // disk number start\n        \"\\x00\\x00\" +\n        // internal file attributes TODO\n        \"\\x00\\x00\" +\n        // external file attributes\n        decToHex(extFileAttr, 4) +\n        // relative offset of local header\n        decToHex(offset, 4) +\n        // file name\n        encodedFileName +\n        // extra field\n        extraFields +\n        // file comment\n        encodedComment;\n\n    return {\n        fileRecord: fileRecord,\n        dirRecord: dirRecord\n    };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n    var dirEnd = \"\";\n    var encodedComment = utils.transformTo(\"string\", encodeFileName(comment));\n\n    // end of central dir signature\n    dirEnd = signature.CENTRAL_DIRECTORY_END +\n        // number of this disk\n        \"\\x00\\x00\" +\n        // number of the disk with the start of the central directory\n        \"\\x00\\x00\" +\n        // total number of entries in the central directory on this disk\n        decToHex(entriesCount, 2) +\n        // total number of entries in the central directory\n        decToHex(entriesCount, 2) +\n        // size of the central directory   4 bytes\n        decToHex(centralDirLength, 4) +\n        // offset of start of central directory with respect to the starting disk number\n        decToHex(localDirLength, 4) +\n        // .ZIP file comment length\n        decToHex(encodedComment.length, 2) +\n        // .ZIP file comment\n        encodedComment;\n\n    return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n    var descriptor = \"\";\n    descriptor = signature.DATA_DESCRIPTOR +\n        // crc-32                          4 bytes\n        decToHex(streamInfo[\"crc32\"], 4) +\n        // compressed size                 4 bytes\n        decToHex(streamInfo[\"compressedSize\"], 4) +\n        // uncompressed size               4 bytes\n        decToHex(streamInfo[\"uncompressedSize\"], 4);\n\n    return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nfunction ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n    GenericWorker.call(this, \"ZipFileWorker\");\n    // The number of bytes written so far. This doesn't count accumulated chunks.\n    this.bytesWritten = 0;\n    // The comment of the zip file\n    this.zipComment = comment;\n    // The platform \"generating\" the zip file.\n    this.zipPlatform = platform;\n    // the function to encode file names and comments.\n    this.encodeFileName = encodeFileName;\n    // Should we stream the content of the files ?\n    this.streamFiles = streamFiles;\n    // If `streamFiles` is false, we will need to accumulate the content of the\n    // files to calculate sizes / crc32 (and write them *before* the content).\n    // This boolean indicates if we are accumulating chunks (it will change a lot\n    // during the lifetime of this worker).\n    this.accumulate = false;\n    // The buffer receiving chunks when accumulating content.\n    this.contentBuffer = [];\n    // The list of generated directory records.\n    this.dirRecords = [];\n    // The offset (in bytes) from the beginning of the zip file for the current source.\n    this.currentSourceOffset = 0;\n    // The total number of entries in this zip file.\n    this.entriesCount = 0;\n    // the name of the file currently being added, null when handling the end of the zip file.\n    // Used for the emitted metadata.\n    this.currentFile = null;\n\n\n\n    this._sources = [];\n}\nutils.inherits(ZipFileWorker, GenericWorker);\n\n/**\n * @see GenericWorker.push\n */\nZipFileWorker.prototype.push = function (chunk) {\n\n    var currentFilePercent = chunk.meta.percent || 0;\n    var entriesCount = this.entriesCount;\n    var remainingFiles = this._sources.length;\n\n    if(this.accumulate) {\n        this.contentBuffer.push(chunk);\n    } else {\n        this.bytesWritten += chunk.data.length;\n\n        GenericWorker.prototype.push.call(this, {\n            data : chunk.data,\n            meta : {\n                currentFile : this.currentFile,\n                percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n            }\n        });\n    }\n};\n\n/**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\nZipFileWorker.prototype.openedSource = function (streamInfo) {\n    this.currentSourceOffset = this.bytesWritten;\n    this.currentFile = streamInfo[\"file\"].name;\n\n    var streamedContent = this.streamFiles && !streamInfo[\"file\"].dir;\n\n    // don't stream folders (because they don't have any content)\n    if(streamedContent) {\n        var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n        this.push({\n            data : record.fileRecord,\n            meta : {percent:0}\n        });\n    } else {\n        // we need to wait for the whole file before pushing anything\n        this.accumulate = true;\n    }\n};\n\n/**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\nZipFileWorker.prototype.closedSource = function (streamInfo) {\n    this.accumulate = false;\n    var streamedContent = this.streamFiles && !streamInfo[\"file\"].dir;\n    var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n    this.dirRecords.push(record.dirRecord);\n    if(streamedContent) {\n        // after the streamed file, we put data descriptors\n        this.push({\n            data : generateDataDescriptors(streamInfo),\n            meta : {percent:100}\n        });\n    } else {\n        // the content wasn't streamed, we need to push everything now\n        // first the file record, then the content\n        this.push({\n            data : record.fileRecord,\n            meta : {percent:0}\n        });\n        while(this.contentBuffer.length) {\n            this.push(this.contentBuffer.shift());\n        }\n    }\n    this.currentFile = null;\n};\n\n/**\n * @see GenericWorker.flush\n */\nZipFileWorker.prototype.flush = function () {\n\n    var localDirLength = this.bytesWritten;\n    for(var i = 0; i < this.dirRecords.length; i++) {\n        this.push({\n            data : this.dirRecords[i],\n            meta : {percent:100}\n        });\n    }\n    var centralDirLength = this.bytesWritten - localDirLength;\n\n    var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n    this.push({\n        data : dirEnd,\n        meta : {percent:100}\n    });\n};\n\n/**\n * Prepare the next source to be read.\n */\nZipFileWorker.prototype.prepareNextSource = function () {\n    this.previous = this._sources.shift();\n    this.openedSource(this.previous.streamInfo);\n    if (this.isPaused) {\n        this.previous.pause();\n    } else {\n        this.previous.resume();\n    }\n};\n\n/**\n * @see GenericWorker.registerPrevious\n */\nZipFileWorker.prototype.registerPrevious = function (previous) {\n    this._sources.push(previous);\n    var self = this;\n\n    previous.on(\"data\", function (chunk) {\n        self.processChunk(chunk);\n    });\n    previous.on(\"end\", function () {\n        self.closedSource(self.previous.streamInfo);\n        if(self._sources.length) {\n            self.prepareNextSource();\n        } else {\n            self.end();\n        }\n    });\n    previous.on(\"error\", function (e) {\n        self.error(e);\n    });\n    return this;\n};\n\n/**\n * @see GenericWorker.resume\n */\nZipFileWorker.prototype.resume = function () {\n    if(!GenericWorker.prototype.resume.call(this)) {\n        return false;\n    }\n\n    if (!this.previous && this._sources.length) {\n        this.prepareNextSource();\n        return true;\n    }\n    if (!this.previous && !this._sources.length && !this.generatedError) {\n        this.end();\n        return true;\n    }\n};\n\n/**\n * @see GenericWorker.error\n */\nZipFileWorker.prototype.error = function (e) {\n    var sources = this._sources;\n    if(!GenericWorker.prototype.error.call(this, e)) {\n        return false;\n    }\n    for(var i = 0; i < sources.length; i++) {\n        try {\n            sources[i].error(e);\n        } catch(e) {\n            // the `error` exploded, nothing to do\n        }\n    }\n    return true;\n};\n\n/**\n * @see GenericWorker.lock\n */\nZipFileWorker.prototype.lock = function () {\n    GenericWorker.prototype.lock.call(this);\n    var sources = this._sources;\n    for(var i = 0; i < sources.length; i++) {\n        sources[i].lock();\n    }\n};\n\nmodule.exports = ZipFileWorker;\n\n},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(require,module,exports){\n\"use strict\";\n\nvar compressions = require(\"../compressions\");\nvar ZipFileWorker = require(\"./ZipFileWorker\");\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n    var compressionName = fileCompression || zipCompression;\n    var compression = compressions[compressionName];\n    if (!compression) {\n        throw new Error(compressionName + \" is not a valid compression method !\");\n    }\n    return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nexports.generateWorker = function (zip, options, comment) {\n\n    var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n    var entriesCount = 0;\n    try {\n\n        zip.forEach(function (relativePath, file) {\n            entriesCount++;\n            var compression = getCompression(file.options.compression, options.compression);\n            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n            var dir = file.dir, date = file.date;\n\n            file._compressWorker(compression, compressionOptions)\n                .withStreamInfo(\"file\", {\n                    name : relativePath,\n                    dir : dir,\n                    date : date,\n                    comment : file.comment || \"\",\n                    unixPermissions : file.unixPermissions,\n                    dosPermissions : file.dosPermissions\n                })\n                .pipe(zipFileWorker);\n        });\n        zipFileWorker.entriesCount = entriesCount;\n    } catch (e) {\n        zipFileWorker.error(e);\n    }\n\n    return zipFileWorker;\n};\n\n},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nfunction JSZip() {\n    // if this constructor is used without `new`, it adds `new` before itself:\n    if(!(this instanceof JSZip)) {\n        return new JSZip();\n    }\n\n    if(arguments.length) {\n        throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n    }\n\n    // object containing the files :\n    // {\n    //   \"folder/\" : {...},\n    //   \"folder/data.txt\" : {...}\n    // }\n    // NOTE: we use a null prototype because we do not\n    // want filenames like \"toString\" coming from a zip file\n    // to overwrite methods and attributes in a normal Object.\n    this.files = Object.create(null);\n\n    this.comment = null;\n\n    // Where we are in the hierarchy\n    this.root = \"\";\n    this.clone = function() {\n        var newObj = new JSZip();\n        for (var i in this) {\n            if (typeof this[i] !== \"function\") {\n                newObj[i] = this[i];\n            }\n        }\n        return newObj;\n    };\n}\nJSZip.prototype = require(\"./object\");\nJSZip.prototype.loadAsync = require(\"./load\");\nJSZip.support = require(\"./support\");\nJSZip.defaults = require(\"./defaults\");\n\n// TODO find a better way to handle this version,\n// a require('package.json').version doesn't work with webpack, see #327\nJSZip.version = \"3.10.1\";\n\nJSZip.loadAsync = function (content, options) {\n    return new JSZip().loadAsync(content, options);\n};\n\nJSZip.external = require(\"./external\");\nmodule.exports = JSZip;\n\n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(require,module,exports){\n\"use strict\";\nvar utils = require(\"./utils\");\nvar external = require(\"./external\");\nvar utf8 = require(\"./utf8\");\nvar ZipEntries = require(\"./zipEntries\");\nvar Crc32Probe = require(\"./stream/Crc32Probe\");\nvar nodejsUtils = require(\"./nodejsUtils\");\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n    return new external.Promise(function (resolve, reject) {\n        var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n        worker.on(\"error\", function (e) {\n            reject(e);\n        })\n            .on(\"end\", function () {\n                if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n                    reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n                } else {\n                    resolve();\n                }\n            })\n            .resume();\n    });\n}\n\nmodule.exports = function (data, options) {\n    var zip = this;\n    options = utils.extend(options || {}, {\n        base64: false,\n        checkCRC32: false,\n        optimizedBinaryString: false,\n        createFolders: false,\n        decodeFileName: utf8.utf8decode\n    });\n\n    if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n        return external.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\"));\n    }\n\n    return utils.prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n        .then(function (data) {\n            var zipEntries = new ZipEntries(options);\n            zipEntries.load(data);\n            return zipEntries;\n        }).then(function checkCRC32(zipEntries) {\n            var promises = [external.Promise.resolve(zipEntries)];\n            var files = zipEntries.files;\n            if (options.checkCRC32) {\n                for (var i = 0; i < files.length; i++) {\n                    promises.push(checkEntryCRC32(files[i]));\n                }\n            }\n            return external.Promise.all(promises);\n        }).then(function addFiles(results) {\n            var zipEntries = results.shift();\n            var files = zipEntries.files;\n            for (var i = 0; i < files.length; i++) {\n                var input = files[i];\n\n                var unsafeName = input.fileNameStr;\n                var safeName = utils.resolve(input.fileNameStr);\n\n                zip.file(safeName, input.decompressed, {\n                    binary: true,\n                    optimizedBinaryString: true,\n                    date: input.date,\n                    dir: input.dir,\n                    comment: input.fileCommentStr.length ? input.fileCommentStr : null,\n                    unixPermissions: input.unixPermissions,\n                    dosPermissions: input.dosPermissions,\n                    createFolders: options.createFolders\n                });\n                if (!input.dir) {\n                    zip.file(safeName).unsafeOriginalName = unsafeName;\n                }\n            }\n            if (zipEntries.zipComment.length) {\n                zip.comment = zipEntries.zipComment;\n            }\n\n            return zip;\n        });\n};\n\n},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"../stream/GenericWorker\");\n\n/**\n * A worker that use a nodejs stream as source.\n * @constructor\n * @param {String} filename the name of the file entry for this stream.\n * @param {Readable} stream the nodejs stream.\n */\nfunction NodejsStreamInputAdapter(filename, stream) {\n    GenericWorker.call(this, \"Nodejs stream input adapter for \" + filename);\n    this._upstreamEnded = false;\n    this._bindStream(stream);\n}\n\nutils.inherits(NodejsStreamInputAdapter, GenericWorker);\n\n/**\n * Prepare the stream and bind the callbacks on it.\n * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.\n * @param {Stream} stream the nodejs stream to use.\n */\nNodejsStreamInputAdapter.prototype._bindStream = function (stream) {\n    var self = this;\n    this._stream = stream;\n    stream.pause();\n    stream\n        .on(\"data\", function (chunk) {\n            self.push({\n                data: chunk,\n                meta : {\n                    percent : 0\n                }\n            });\n        })\n        .on(\"error\", function (e) {\n            if(self.isPaused) {\n                this.generatedError = e;\n            } else {\n                self.error(e);\n            }\n        })\n        .on(\"end\", function () {\n            if(self.isPaused) {\n                self._upstreamEnded = true;\n            } else {\n                self.end();\n            }\n        });\n};\nNodejsStreamInputAdapter.prototype.pause = function () {\n    if(!GenericWorker.prototype.pause.call(this)) {\n        return false;\n    }\n    this._stream.pause();\n    return true;\n};\nNodejsStreamInputAdapter.prototype.resume = function () {\n    if(!GenericWorker.prototype.resume.call(this)) {\n        return false;\n    }\n\n    if(this._upstreamEnded) {\n        this.end();\n    } else {\n        this._stream.resume();\n    }\n\n    return true;\n};\n\nmodule.exports = NodejsStreamInputAdapter;\n\n},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(require,module,exports){\n\"use strict\";\n\nvar Readable = require(\"readable-stream\").Readable;\n\nvar utils = require(\"../utils\");\nutils.inherits(NodejsStreamOutputAdapter, Readable);\n\n/**\n* A nodejs stream using a worker as source.\n* @see the SourceWrapper in http://nodejs.org/api/stream.html\n* @constructor\n* @param {StreamHelper} helper the helper wrapping the worker\n* @param {Object} options the nodejs stream options\n* @param {Function} updateCb the update callback.\n*/\nfunction NodejsStreamOutputAdapter(helper, options, updateCb) {\n    Readable.call(this, options);\n    this._helper = helper;\n\n    var self = this;\n    helper.on(\"data\", function (data, meta) {\n        if (!self.push(data)) {\n            self._helper.pause();\n        }\n        if(updateCb) {\n            updateCb(meta);\n        }\n    })\n        .on(\"error\", function(e) {\n            self.emit(\"error\", e);\n        })\n        .on(\"end\", function () {\n            self.push(null);\n        });\n}\n\n\nNodejsStreamOutputAdapter.prototype._read = function() {\n    this._helper.resume();\n};\n\nmodule.exports = NodejsStreamOutputAdapter;\n\n},{\"../utils\":32,\"readable-stream\":16}],14:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n    /**\n     * True if this is running in Nodejs, will be undefined in a browser.\n     * In a browser, browserify won't include this file and the whole module\n     * will be resolved an empty object.\n     */\n    isNode : typeof Buffer !== \"undefined\",\n    /**\n     * Create a new nodejs Buffer from an existing content.\n     * @param {Object} data the data to pass to the constructor.\n     * @param {String} encoding the encoding to use.\n     * @return {Buffer} a new Buffer.\n     */\n    newBufferFrom: function(data, encoding) {\n        if (Buffer.from && Buffer.from !== Uint8Array.from) {\n            return Buffer.from(data, encoding);\n        } else {\n            if (typeof data === \"number\") {\n                // Safeguard for old Node.js versions. On newer versions,\n                // Buffer.from(number) / Buffer(number, encoding) already throw.\n                throw new Error(\"The \\\"data\\\" argument must not be a number\");\n            }\n            return new Buffer(data, encoding);\n        }\n    },\n    /**\n     * Create a new nodejs Buffer with the specified size.\n     * @param {Integer} size the size of the buffer.\n     * @return {Buffer} a new Buffer.\n     */\n    allocBuffer: function (size) {\n        if (Buffer.alloc) {\n            return Buffer.alloc(size);\n        } else {\n            var buf = new Buffer(size);\n            buf.fill(0);\n            return buf;\n        }\n    },\n    /**\n     * Find out if an object is a Buffer.\n     * @param {Object} b the object to test.\n     * @return {Boolean} true if the object is a Buffer, false otherwise.\n     */\n    isBuffer : function(b){\n        return Buffer.isBuffer(b);\n    },\n\n    isStream : function (obj) {\n        return obj &&\n            typeof obj.on === \"function\" &&\n            typeof obj.pause === \"function\" &&\n            typeof obj.resume === \"function\";\n    }\n};\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nvar utf8 = require(\"./utf8\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\nvar StreamHelper = require(\"./stream/StreamHelper\");\nvar defaults = require(\"./defaults\");\nvar CompressedObject = require(\"./compressedObject\");\nvar ZipObject = require(\"./zipObject\");\nvar generate = require(\"./generate\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar NodejsStreamInputAdapter = require(\"./nodejs/NodejsStreamInputAdapter\");\n\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n    // be sure sub folders exist\n    var dataType = utils.getTypeOf(data),\n        parent;\n\n\n    /*\n     * Correct options.\n     */\n\n    var o = utils.extend(originalOptions || {}, defaults);\n    o.date = o.date || new Date();\n    if (o.compression !== null) {\n        o.compression = o.compression.toUpperCase();\n    }\n\n    if (typeof o.unixPermissions === \"string\") {\n        o.unixPermissions = parseInt(o.unixPermissions, 8);\n    }\n\n    // UNX_IFDIR  0040000 see zipinfo.c\n    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n        o.dir = true;\n    }\n    // Bit 4    Directory\n    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n        o.dir = true;\n    }\n\n    if (o.dir) {\n        name = forceTrailingSlash(name);\n    }\n    if (o.createFolders && (parent = parentFolder(name))) {\n        folderAdd.call(this, parent, true);\n    }\n\n    var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n    if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n        o.binary = !isUnicodeString;\n    }\n\n\n    var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n    if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n        o.base64 = false;\n        o.binary = true;\n        data = \"\";\n        o.compression = \"STORE\";\n        dataType = \"string\";\n    }\n\n    /*\n     * Convert content to fit.\n     */\n\n    var zipObjectContent = null;\n    if (data instanceof CompressedObject || data instanceof GenericWorker) {\n        zipObjectContent = data;\n    } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n        zipObjectContent = new NodejsStreamInputAdapter(name, data);\n    } else {\n        zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n    }\n\n    var object = new ZipObject(name, zipObjectContent, o);\n    this.files[name] = object;\n    /*\n    TODO: we can't throw an exception because we have async promises\n    (we can have a promise of a Date() for example) but returning a\n    promise is useless because file(name, data) returns the JSZip\n    object for chaining. Should we break that to allow the user\n    to catch the error ?\n\n    return external.Promise.resolve(zipObjectContent)\n    .then(function () {\n        return object;\n    });\n    */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n    if (path.slice(-1) === \"/\") {\n        path = path.substring(0, path.length - 1);\n    }\n    var lastSlash = path.lastIndexOf(\"/\");\n    return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n    // Check the name ends with a /\n    if (path.slice(-1) !== \"/\") {\n        path += \"/\"; // IE doesn't like substr(-1)\n    }\n    return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n *  folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n    createFolders = (typeof createFolders !== \"undefined\") ? createFolders : defaults.createFolders;\n\n    name = forceTrailingSlash(name);\n\n    // Does this folder already exist?\n    if (!this.files[name]) {\n        fileAdd.call(this, name, null, {\n            dir: true,\n            createFolders: createFolders\n        });\n    }\n    return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param  {Object}  object Anything\n* @return {Boolean}        true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n    return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n// return the actual prototype of JSZip\nvar out = {\n    /**\n     * @see loadAsync\n     */\n    load: function() {\n        throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n    },\n\n\n    /**\n     * Call a callback function for each entry at this folder level.\n     * @param {Function} cb the callback function:\n     * function (relativePath, file) {...}\n     * It takes 2 arguments : the relative path and the file.\n     */\n    forEach: function(cb) {\n        var filename, relativePath, file;\n        // ignore warning about unwanted properties because this.files is a null prototype object\n        /* eslint-disable-next-line guard-for-in */\n        for (filename in this.files) {\n            file = this.files[filename];\n            relativePath = filename.slice(this.root.length, filename.length);\n            if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n                cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n            }\n        }\n    },\n\n    /**\n     * Filter nested files/folders with the specified function.\n     * @param {Function} search the predicate to use :\n     * function (relativePath, file) {...}\n     * It takes 2 arguments : the relative path and the file.\n     * @return {Array} An array of matching elements.\n     */\n    filter: function(search) {\n        var result = [];\n        this.forEach(function (relativePath, entry) {\n            if (search(relativePath, entry)) { // the file matches the function\n                result.push(entry);\n            }\n\n        });\n        return result;\n    },\n\n    /**\n     * Add a file to the zip file, or search a file.\n     * @param   {string|RegExp} name The name of the file to add (if data is defined),\n     * the name of the file to find (if no data) or a regex to match files.\n     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded\n     * @param   {Object} o     File options\n     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),\n     * a file (when searching by string) or an array of files (when searching by regex).\n     */\n    file: function(name, data, o) {\n        if (arguments.length === 1) {\n            if (isRegExp(name)) {\n                var regexp = name;\n                return this.filter(function(relativePath, file) {\n                    return !file.dir && regexp.test(relativePath);\n                });\n            }\n            else { // text\n                var obj = this.files[this.root + name];\n                if (obj && !obj.dir) {\n                    return obj;\n                } else {\n                    return null;\n                }\n            }\n        }\n        else { // more than one argument : we have data !\n            name = this.root + name;\n            fileAdd.call(this, name, data, o);\n        }\n        return this;\n    },\n\n    /**\n     * Add a directory to the zip file, or search.\n     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.\n     */\n    folder: function(arg) {\n        if (!arg) {\n            return this;\n        }\n\n        if (isRegExp(arg)) {\n            return this.filter(function(relativePath, file) {\n                return file.dir && arg.test(relativePath);\n            });\n        }\n\n        // else, name is a new folder\n        var name = this.root + arg;\n        var newFolder = folderAdd.call(this, name);\n\n        // Allow chaining by returning a new object with this folder as the root\n        var ret = this.clone();\n        ret.root = newFolder.name;\n        return ret;\n    },\n\n    /**\n     * Delete a file, or a directory and all sub-files, from the zip\n     * @param {string} name the name of the file to delete\n     * @return {JSZip} this JSZip object\n     */\n    remove: function(name) {\n        name = this.root + name;\n        var file = this.files[name];\n        if (!file) {\n            // Look for any folders\n            if (name.slice(-1) !== \"/\") {\n                name += \"/\";\n            }\n            file = this.files[name];\n        }\n\n        if (file && !file.dir) {\n            // file\n            delete this.files[name];\n        } else {\n            // maybe a folder, delete recursively\n            var kids = this.filter(function(relativePath, file) {\n                return file.name.slice(0, name.length) === name;\n            });\n            for (var i = 0; i < kids.length; i++) {\n                delete this.files[kids[i].name];\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * @deprecated This method has been removed in JSZip 3.0, please check the upgrade guide.\n     */\n    generate: function() {\n        throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n    },\n\n    /**\n     * Generate the complete zip file as an internal stream.\n     * @param {Object} options the options to generate the zip file :\n     * - compression, \"STORE\" by default.\n     * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n     * @return {StreamHelper} the streamed zip file.\n     */\n    generateInternalStream: function(options) {\n        var worker, opts = {};\n        try {\n            opts = utils.extend(options || {}, {\n                streamFiles: false,\n                compression: \"STORE\",\n                compressionOptions : null,\n                type: \"\",\n                platform: \"DOS\",\n                comment: null,\n                mimeType: \"application/zip\",\n                encodeFileName: utf8.utf8encode\n            });\n\n            opts.type = opts.type.toLowerCase();\n            opts.compression = opts.compression.toUpperCase();\n\n            // \"binarystring\" is preferred but the internals use \"string\".\n            if(opts.type === \"binarystring\") {\n                opts.type = \"string\";\n            }\n\n            if (!opts.type) {\n                throw new Error(\"No output type specified.\");\n            }\n\n            utils.checkSupport(opts.type);\n\n            // accept nodejs `process.platform`\n            if(\n                opts.platform === \"darwin\" ||\n                opts.platform === \"freebsd\" ||\n                opts.platform === \"linux\" ||\n                opts.platform === \"sunos\"\n            ) {\n                opts.platform = \"UNIX\";\n            }\n            if (opts.platform === \"win32\") {\n                opts.platform = \"DOS\";\n            }\n\n            var comment = opts.comment || this.comment || \"\";\n            worker = generate.generateWorker(this, opts, comment);\n        } catch (e) {\n            worker = new GenericWorker(\"error\");\n            worker.error(e);\n        }\n        return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n    },\n    /**\n     * Generate the complete zip file asynchronously.\n     * @see generateInternalStream\n     */\n    generateAsync: function(options, onUpdate) {\n        return this.generateInternalStream(options).accumulate(onUpdate);\n    },\n    /**\n     * Generate the complete zip file asynchronously.\n     * @see generateInternalStream\n     */\n    generateNodeStream: function(options, onUpdate) {\n        options = options || {};\n        if (!options.type) {\n            options.type = \"nodebuffer\";\n        }\n        return this.generateInternalStream(options).toNodejsStream(onUpdate);\n    }\n};\nmodule.exports = out;\n\n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(require,module,exports){\n\"use strict\";\n/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n\n},{\"stream\":undefined}],17:[function(require,module,exports){\n\"use strict\";\nvar DataReader = require(\"./DataReader\");\nvar utils = require(\"../utils\");\n\nfunction ArrayReader(data) {\n    DataReader.call(this, data);\n    for(var i = 0; i < this.data.length; i++) {\n        data[i] = data[i] & 0xFF;\n    }\n}\nutils.inherits(ArrayReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n    return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n    var sig0 = sig.charCodeAt(0),\n        sig1 = sig.charCodeAt(1),\n        sig2 = sig.charCodeAt(2),\n        sig3 = sig.charCodeAt(3);\n    for (var i = this.length - 4; i >= 0; --i) {\n        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n            return i - this.zero;\n        }\n    }\n\n    return -1;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nArrayReader.prototype.readAndCheckSignature = function (sig) {\n    var sig0 = sig.charCodeAt(0),\n        sig1 = sig.charCodeAt(1),\n        sig2 = sig.charCodeAt(2),\n        sig3 = sig.charCodeAt(3),\n        data = this.readData(4);\n    return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    if(size === 0) {\n        return [];\n    }\n    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = ArrayReader;\n\n},{\"../utils\":32,\"./DataReader\":18}],18:[function(require,module,exports){\n\"use strict\";\nvar utils = require(\"../utils\");\n\nfunction DataReader(data) {\n    this.data = data; // type : see implementation\n    this.length = data.length;\n    this.index = 0;\n    this.zero = 0;\n}\nDataReader.prototype = {\n    /**\n     * Check that the offset will not go too far.\n     * @param {string} offset the additional offset to check.\n     * @throws {Error} an Error if the offset is out of bounds.\n     */\n    checkOffset: function(offset) {\n        this.checkIndex(this.index + offset);\n    },\n    /**\n     * Check that the specified index will not be too far.\n     * @param {string} newIndex the index to check.\n     * @throws {Error} an Error if the index is out of bounds.\n     */\n    checkIndex: function(newIndex) {\n        if (this.length < this.zero + newIndex || newIndex < 0) {\n            throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n        }\n    },\n    /**\n     * Change the index.\n     * @param {number} newIndex The new index.\n     * @throws {Error} if the new index is out of the data.\n     */\n    setIndex: function(newIndex) {\n        this.checkIndex(newIndex);\n        this.index = newIndex;\n    },\n    /**\n     * Skip the next n bytes.\n     * @param {number} n the number of bytes to skip.\n     * @throws {Error} if the new index is out of the data.\n     */\n    skip: function(n) {\n        this.setIndex(this.index + n);\n    },\n    /**\n     * Get the byte at the specified index.\n     * @param {number} i the index to use.\n     * @return {number} a byte.\n     */\n    byteAt: function() {\n        // see implementations\n    },\n    /**\n     * Get the next number with a given byte size.\n     * @param {number} size the number of bytes to read.\n     * @return {number} the corresponding number.\n     */\n    readInt: function(size) {\n        var result = 0,\n            i;\n        this.checkOffset(size);\n        for (i = this.index + size - 1; i >= this.index; i--) {\n            result = (result << 8) + this.byteAt(i);\n        }\n        this.index += size;\n        return result;\n    },\n    /**\n     * Get the next string with a given byte size.\n     * @param {number} size the number of bytes to read.\n     * @return {string} the corresponding string.\n     */\n    readString: function(size) {\n        return utils.transformTo(\"string\", this.readData(size));\n    },\n    /**\n     * Get raw data without conversion, <size> bytes.\n     * @param {number} size the number of bytes to read.\n     * @return {Object} the raw data, implementation specific.\n     */\n    readData: function() {\n        // see implementations\n    },\n    /**\n     * Find the last occurrence of a zip signature (4 bytes).\n     * @param {string} sig the signature to find.\n     * @return {number} the index of the last occurrence, -1 if not found.\n     */\n    lastIndexOfSignature: function() {\n        // see implementations\n    },\n    /**\n     * Read the signature (4 bytes) at the current position and compare it with sig.\n     * @param {string} sig the expected signature\n     * @return {boolean} true if the signature matches, false otherwise.\n     */\n    readAndCheckSignature: function() {\n        // see implementations\n    },\n    /**\n     * Get the next date.\n     * @return {Date} the date.\n     */\n    readDate: function() {\n        var dostime = this.readInt(4);\n        return new Date(Date.UTC(\n            ((dostime >> 25) & 0x7f) + 1980, // year\n            ((dostime >> 21) & 0x0f) - 1, // month\n            (dostime >> 16) & 0x1f, // day\n            (dostime >> 11) & 0x1f, // hour\n            (dostime >> 5) & 0x3f, // minute\n            (dostime & 0x1f) << 1)); // second\n    }\n};\nmodule.exports = DataReader;\n\n},{\"../utils\":32}],19:[function(require,module,exports){\n\"use strict\";\nvar Uint8ArrayReader = require(\"./Uint8ArrayReader\");\nvar utils = require(\"../utils\");\n\nfunction NodeBufferReader(data) {\n    Uint8ArrayReader.call(this, data);\n}\nutils.inherits(NodeBufferReader, Uint8ArrayReader);\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = NodeBufferReader;\n\n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(require,module,exports){\n\"use strict\";\nvar DataReader = require(\"./DataReader\");\nvar utils = require(\"../utils\");\n\nfunction StringReader(data) {\n    DataReader.call(this, data);\n}\nutils.inherits(StringReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n    return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n    return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nStringReader.prototype.readAndCheckSignature = function (sig) {\n    var data = this.readData(4);\n    return sig === data;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    // this will work because the constructor applied the \"& 0xff\" mask.\n    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = StringReader;\n\n},{\"../utils\":32,\"./DataReader\":18}],21:[function(require,module,exports){\n\"use strict\";\nvar ArrayReader = require(\"./ArrayReader\");\nvar utils = require(\"../utils\");\n\nfunction Uint8ArrayReader(data) {\n    ArrayReader.call(this, data);\n}\nutils.inherits(Uint8ArrayReader, ArrayReader);\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    if(size === 0) {\n        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n        return new Uint8Array(0);\n    }\n    var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = Uint8ArrayReader;\n\n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar support = require(\"../support\");\nvar ArrayReader = require(\"./ArrayReader\");\nvar StringReader = require(\"./StringReader\");\nvar NodeBufferReader = require(\"./NodeBufferReader\");\nvar Uint8ArrayReader = require(\"./Uint8ArrayReader\");\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nmodule.exports = function (data) {\n    var type = utils.getTypeOf(data);\n    utils.checkSupport(type);\n    if (type === \"string\" && !support.uint8array) {\n        return new StringReader(data);\n    }\n    if (type === \"nodebuffer\") {\n        return new NodeBufferReader(data);\n    }\n    if (support.uint8array) {\n        return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n    }\n    return new ArrayReader(utils.transformTo(\"array\", data));\n};\n\n},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(require,module,exports){\n\"use strict\";\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\n\nvar GenericWorker = require(\"./GenericWorker\");\nvar utils = require(\"../utils\");\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nfunction ConvertWorker(destType) {\n    GenericWorker.call(this, \"ConvertWorker to \" + destType);\n    this.destType = destType;\n}\nutils.inherits(ConvertWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nConvertWorker.prototype.processChunk = function (chunk) {\n    this.push({\n        data : utils.transformTo(this.destType, chunk.data),\n        meta : chunk.meta\n    });\n};\nmodule.exports = ConvertWorker;\n\n},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(require,module,exports){\n\"use strict\";\n\nvar GenericWorker = require(\"./GenericWorker\");\nvar crc32 = require(\"../crc32\");\nvar utils = require(\"../utils\");\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nfunction Crc32Probe() {\n    GenericWorker.call(this, \"Crc32Probe\");\n    this.withStreamInfo(\"crc32\", 0);\n}\nutils.inherits(Crc32Probe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nCrc32Probe.prototype.processChunk = function (chunk) {\n    this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n    this.push(chunk);\n};\nmodule.exports = Crc32Probe;\n\n},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"./GenericWorker\");\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nfunction DataLengthProbe(propName) {\n    GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n    this.propName = propName;\n    this.withStreamInfo(propName, 0);\n}\nutils.inherits(DataLengthProbe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nDataLengthProbe.prototype.processChunk = function (chunk) {\n    if(chunk) {\n        var length = this.streamInfo[this.propName] || 0;\n        this.streamInfo[this.propName] = length + chunk.data.length;\n    }\n    GenericWorker.prototype.processChunk.call(this, chunk);\n};\nmodule.exports = DataLengthProbe;\n\n\n},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"./GenericWorker\");\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nfunction DataWorker(dataP) {\n    GenericWorker.call(this, \"DataWorker\");\n    var self = this;\n    this.dataIsReady = false;\n    this.index = 0;\n    this.max = 0;\n    this.data = null;\n    this.type = \"\";\n\n    this._tickScheduled = false;\n\n    dataP.then(function (data) {\n        self.dataIsReady = true;\n        self.data = data;\n        self.max = data && data.length || 0;\n        self.type = utils.getTypeOf(data);\n        if(!self.isPaused) {\n            self._tickAndRepeat();\n        }\n    }, function (e) {\n        self.error(e);\n    });\n}\n\nutils.inherits(DataWorker, GenericWorker);\n\n/**\n * @see GenericWorker.cleanUp\n */\nDataWorker.prototype.cleanUp = function () {\n    GenericWorker.prototype.cleanUp.call(this);\n    this.data = null;\n};\n\n/**\n * @see GenericWorker.resume\n */\nDataWorker.prototype.resume = function () {\n    if(!GenericWorker.prototype.resume.call(this)) {\n        return false;\n    }\n\n    if (!this._tickScheduled && this.dataIsReady) {\n        this._tickScheduled = true;\n        utils.delay(this._tickAndRepeat, [], this);\n    }\n    return true;\n};\n\n/**\n * Trigger a tick a schedule an other call to this function.\n */\nDataWorker.prototype._tickAndRepeat = function() {\n    this._tickScheduled = false;\n    if(this.isPaused || this.isFinished) {\n        return;\n    }\n    this._tick();\n    if(!this.isFinished) {\n        utils.delay(this._tickAndRepeat, [], this);\n        this._tickScheduled = true;\n    }\n};\n\n/**\n * Read and push a chunk.\n */\nDataWorker.prototype._tick = function() {\n\n    if(this.isPaused || this.isFinished) {\n        return false;\n    }\n\n    var size = DEFAULT_BLOCK_SIZE;\n    var data = null, nextIndex = Math.min(this.max, this.index + size);\n    if (this.index >= this.max) {\n        // EOF\n        return this.end();\n    } else {\n        switch(this.type) {\n        case \"string\":\n            data = this.data.substring(this.index, nextIndex);\n            break;\n        case \"uint8array\":\n            data = this.data.subarray(this.index, nextIndex);\n            break;\n        case \"array\":\n        case \"nodebuffer\":\n            data = this.data.slice(this.index, nextIndex);\n            break;\n        }\n        this.index = nextIndex;\n        return this.push({\n            data : data,\n            meta : {\n                percent : this.max ? this.index / this.max * 100 : 0\n            }\n        });\n    }\n};\n\nmodule.exports = DataWorker;\n\n},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(require,module,exports){\n\"use strict\";\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nfunction GenericWorker(name) {\n    // the name of the worker\n    this.name = name || \"default\";\n    // an object containing metadata about the workers chain\n    this.streamInfo = {};\n    // an error which happened when the worker was paused\n    this.generatedError = null;\n    // an object containing metadata to be merged by this worker into the general metadata\n    this.extraStreamInfo = {};\n    // true if the stream is paused (and should not do anything), false otherwise\n    this.isPaused = true;\n    // true if the stream is finished (and should not do anything), false otherwise\n    this.isFinished = false;\n    // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n    this.isLocked = false;\n    // the event listeners\n    this._listeners = {\n        \"data\":[],\n        \"end\":[],\n        \"error\":[]\n    };\n    // the previous worker, if any\n    this.previous = null;\n}\n\nGenericWorker.prototype = {\n    /**\n     * Push a chunk to the next workers.\n     * @param {Object} chunk the chunk to push\n     */\n    push : function (chunk) {\n        this.emit(\"data\", chunk);\n    },\n    /**\n     * End the stream.\n     * @return {Boolean} true if this call ended the worker, false otherwise.\n     */\n    end : function () {\n        if (this.isFinished) {\n            return false;\n        }\n\n        this.flush();\n        try {\n            this.emit(\"end\");\n            this.cleanUp();\n            this.isFinished = true;\n        } catch (e) {\n            this.emit(\"error\", e);\n        }\n        return true;\n    },\n    /**\n     * End the stream with an error.\n     * @param {Error} e the error which caused the premature end.\n     * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n     */\n    error : function (e) {\n        if (this.isFinished) {\n            return false;\n        }\n\n        if(this.isPaused) {\n            this.generatedError = e;\n        } else {\n            this.isFinished = true;\n\n            this.emit(\"error\", e);\n\n            // in the workers chain exploded in the middle of the chain,\n            // the error event will go downward but we also need to notify\n            // workers upward that there has been an error.\n            if(this.previous) {\n                this.previous.error(e);\n            }\n\n            this.cleanUp();\n        }\n        return true;\n    },\n    /**\n     * Add a callback on an event.\n     * @param {String} name the name of the event (data, end, error)\n     * @param {Function} listener the function to call when the event is triggered\n     * @return {GenericWorker} the current object for chainability\n     */\n    on : function (name, listener) {\n        this._listeners[name].push(listener);\n        return this;\n    },\n    /**\n     * Clean any references when a worker is ending.\n     */\n    cleanUp : function () {\n        this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n        this._listeners = [];\n    },\n    /**\n     * Trigger an event. This will call registered callback with the provided arg.\n     * @param {String} name the name of the event (data, end, error)\n     * @param {Object} arg the argument to call the callback with.\n     */\n    emit : function (name, arg) {\n        if (this._listeners[name]) {\n            for(var i = 0; i < this._listeners[name].length; i++) {\n                this._listeners[name][i].call(this, arg);\n            }\n        }\n    },\n    /**\n     * Chain a worker with an other.\n     * @param {Worker} next the worker receiving events from the current one.\n     * @return {worker} the next worker for chainability\n     */\n    pipe : function (next) {\n        return next.registerPrevious(this);\n    },\n    /**\n     * Same as `pipe` in the other direction.\n     * Using an API with `pipe(next)` is very easy.\n     * Implementing the API with the point of view of the next one registering\n     * a source is easier, see the ZipFileWorker.\n     * @param {Worker} previous the previous worker, sending events to this one\n     * @return {Worker} the current worker for chainability\n     */\n    registerPrevious : function (previous) {\n        if (this.isLocked) {\n            throw new Error(\"The stream '\" + this + \"' has already been used.\");\n        }\n\n        // sharing the streamInfo...\n        this.streamInfo = previous.streamInfo;\n        // ... and adding our own bits\n        this.mergeStreamInfo();\n        this.previous =  previous;\n        var self = this;\n        previous.on(\"data\", function (chunk) {\n            self.processChunk(chunk);\n        });\n        previous.on(\"end\", function () {\n            self.end();\n        });\n        previous.on(\"error\", function (e) {\n            self.error(e);\n        });\n        return this;\n    },\n    /**\n     * Pause the stream so it doesn't send events anymore.\n     * @return {Boolean} true if this call paused the worker, false otherwise.\n     */\n    pause : function () {\n        if(this.isPaused || this.isFinished) {\n            return false;\n        }\n        this.isPaused = true;\n\n        if(this.previous) {\n            this.previous.pause();\n        }\n        return true;\n    },\n    /**\n     * Resume a paused stream.\n     * @return {Boolean} true if this call resumed the worker, false otherwise.\n     */\n    resume : function () {\n        if(!this.isPaused || this.isFinished) {\n            return false;\n        }\n        this.isPaused = false;\n\n        // if true, the worker tried to resume but failed\n        var withError = false;\n        if(this.generatedError) {\n            this.error(this.generatedError);\n            withError = true;\n        }\n        if(this.previous) {\n            this.previous.resume();\n        }\n\n        return !withError;\n    },\n    /**\n     * Flush any remaining bytes as the stream is ending.\n     */\n    flush : function () {},\n    /**\n     * Process a chunk. This is usually the method overridden.\n     * @param {Object} chunk the chunk to process.\n     */\n    processChunk : function(chunk) {\n        this.push(chunk);\n    },\n    /**\n     * Add a key/value to be added in the workers chain streamInfo once activated.\n     * @param {String} key the key to use\n     * @param {Object} value the associated value\n     * @return {Worker} the current worker for chainability\n     */\n    withStreamInfo : function (key, value) {\n        this.extraStreamInfo[key] = value;\n        this.mergeStreamInfo();\n        return this;\n    },\n    /**\n     * Merge this worker's streamInfo into the chain's streamInfo.\n     */\n    mergeStreamInfo : function () {\n        for(var key in this.extraStreamInfo) {\n            if (!Object.prototype.hasOwnProperty.call(this.extraStreamInfo, key)) {\n                continue;\n            }\n            this.streamInfo[key] = this.extraStreamInfo[key];\n        }\n    },\n\n    /**\n     * Lock the stream to prevent further updates on the workers chain.\n     * After calling this method, all calls to pipe will fail.\n     */\n    lock: function () {\n        if (this.isLocked) {\n            throw new Error(\"The stream '\" + this + \"' has already been used.\");\n        }\n        this.isLocked = true;\n        if (this.previous) {\n            this.previous.lock();\n        }\n    },\n\n    /**\n     *\n     * Pretty print the workers chain.\n     */\n    toString : function () {\n        var me = \"Worker \" + this.name;\n        if (this.previous) {\n            return this.previous + \" -> \" + me;\n        } else {\n            return me;\n        }\n    }\n};\n\nmodule.exports = GenericWorker;\n\n},{}],29:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar ConvertWorker = require(\"./ConvertWorker\");\nvar GenericWorker = require(\"./GenericWorker\");\nvar base64 = require(\"../base64\");\nvar support = require(\"../support\");\nvar external = require(\"../external\");\n\nvar NodejsStreamOutputAdapter = null;\nif (support.nodestream) {\n    try {\n        NodejsStreamOutputAdapter = require(\"../nodejs/NodejsStreamOutputAdapter\");\n    } catch(e) {\n        // ignore\n    }\n}\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n    switch(type) {\n    case \"blob\" :\n        return utils.newBlob(utils.transformTo(\"arraybuffer\", content), mimeType);\n    case \"base64\" :\n        return base64.encode(content);\n    default :\n        return utils.transformTo(type, content);\n    }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n    var i, index = 0, res = null, totalLength = 0;\n    for(i = 0; i < dataArray.length; i++) {\n        totalLength += dataArray[i].length;\n    }\n    switch(type) {\n    case \"string\":\n        return dataArray.join(\"\");\n    case \"array\":\n        return Array.prototype.concat.apply([], dataArray);\n    case \"uint8array\":\n        res = new Uint8Array(totalLength);\n        for(i = 0; i < dataArray.length; i++) {\n            res.set(dataArray[i], index);\n            index += dataArray[i].length;\n        }\n        return res;\n    case \"nodebuffer\":\n        return Buffer.concat(dataArray);\n    default:\n        throw new Error(\"concat : unsupported type '\"  + type + \"'\");\n    }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n    return new external.Promise(function (resolve, reject){\n        var dataArray = [];\n        var chunkType = helper._internalType,\n            resultType = helper._outputType,\n            mimeType = helper._mimeType;\n        helper\n            .on(\"data\", function (data, meta) {\n                dataArray.push(data);\n                if(updateCallback) {\n                    updateCallback(meta);\n                }\n            })\n            .on(\"error\", function(err) {\n                dataArray = [];\n                reject(err);\n            })\n            .on(\"end\", function (){\n                try {\n                    var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n                    resolve(result);\n                } catch (e) {\n                    reject(e);\n                }\n                dataArray = [];\n            })\n            .resume();\n    });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nfunction StreamHelper(worker, outputType, mimeType) {\n    var internalType = outputType;\n    switch(outputType) {\n    case \"blob\":\n    case \"arraybuffer\":\n        internalType = \"uint8array\";\n        break;\n    case \"base64\":\n        internalType = \"string\";\n        break;\n    }\n\n    try {\n        // the type used internally\n        this._internalType = internalType;\n        // the type used to output results\n        this._outputType = outputType;\n        // the mime type\n        this._mimeType = mimeType;\n        utils.checkSupport(internalType);\n        this._worker = worker.pipe(new ConvertWorker(internalType));\n        // the last workers can be rewired without issues but we need to\n        // prevent any updates on previous workers.\n        worker.lock();\n    } catch(e) {\n        this._worker = new GenericWorker(\"error\");\n        this._worker.error(e);\n    }\n}\n\nStreamHelper.prototype = {\n    /**\n     * Listen a StreamHelper, accumulate its content and concatenate it into a\n     * complete block.\n     * @param {Function} updateCb the update callback.\n     * @return Promise the promise for the accumulation.\n     */\n    accumulate : function (updateCb) {\n        return accumulate(this, updateCb);\n    },\n    /**\n     * Add a listener on an event triggered on a stream.\n     * @param {String} evt the name of the event\n     * @param {Function} fn the listener\n     * @return {StreamHelper} the current helper.\n     */\n    on : function (evt, fn) {\n        var self = this;\n\n        if(evt === \"data\") {\n            this._worker.on(evt, function (chunk) {\n                fn.call(self, chunk.data, chunk.meta);\n            });\n        } else {\n            this._worker.on(evt, function () {\n                utils.delay(fn, arguments, self);\n            });\n        }\n        return this;\n    },\n    /**\n     * Resume the flow of chunks.\n     * @return {StreamHelper} the current helper.\n     */\n    resume : function () {\n        utils.delay(this._worker.resume, [], this._worker);\n        return this;\n    },\n    /**\n     * Pause the flow of chunks.\n     * @return {StreamHelper} the current helper.\n     */\n    pause : function () {\n        this._worker.pause();\n        return this;\n    },\n    /**\n     * Return a nodejs stream for this helper.\n     * @param {Function} updateCb the update callback.\n     * @return {NodejsStreamOutputAdapter} the nodejs stream.\n     */\n    toNodejsStream : function (updateCb) {\n        utils.checkSupport(\"nodestream\");\n        if (this._outputType !== \"nodebuffer\") {\n            // an object stream containing blob/arraybuffer/uint8array/string\n            // is strange and I don't know if it would be useful.\n            // I you find this comment and have a good usecase, please open a\n            // bug report !\n            throw new Error(this._outputType + \" is not supported by this method\");\n        }\n\n        return new NodejsStreamOutputAdapter(this, {\n            objectMode : this._outputType !== \"nodebuffer\"\n        }, updateCb);\n    }\n};\n\n\nmodule.exports = StreamHelper;\n\n},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(require,module,exports){\n\"use strict\";\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n    exports.blob = false;\n}\nelse {\n    var buffer = new ArrayBuffer(0);\n    try {\n        exports.blob = new Blob([buffer], {\n            type: \"application/zip\"\n        }).size === 0;\n    }\n    catch (e) {\n        try {\n            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n            var builder = new Builder();\n            builder.append(buffer);\n            exports.blob = builder.getBlob(\"application/zip\").size === 0;\n        }\n        catch (e) {\n            exports.blob = false;\n        }\n    }\n}\n\ntry {\n    exports.nodestream = !!require(\"readable-stream\").Readable;\n} catch(e) {\n    exports.nodestream = false;\n}\n\n},{\"readable-stream\":16}],31:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"./utils\");\nvar support = require(\"./support\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n    _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n    // count binary size\n    for (m_pos = 0; m_pos < str_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n            c2 = str.charCodeAt(m_pos+1);\n            if ((c2 & 0xfc00) === 0xdc00) {\n                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                m_pos++;\n            }\n        }\n        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n    }\n\n    // allocate buffer\n    if (support.uint8array) {\n        buf = new Uint8Array(buf_len);\n    } else {\n        buf = new Array(buf_len);\n    }\n\n    // convert\n    for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n            c2 = str.charCodeAt(m_pos+1);\n            if ((c2 & 0xfc00) === 0xdc00) {\n                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                m_pos++;\n            }\n        }\n        if (c < 0x80) {\n            /* one byte */\n            buf[i++] = c;\n        } else if (c < 0x800) {\n            /* two bytes */\n            buf[i++] = 0xC0 | (c >>> 6);\n            buf[i++] = 0x80 | (c & 0x3f);\n        } else if (c < 0x10000) {\n            /* three bytes */\n            buf[i++] = 0xE0 | (c >>> 12);\n            buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n            buf[i++] = 0x80 | (c & 0x3f);\n        } else {\n            /* four bytes */\n            buf[i++] = 0xf0 | (c >>> 18);\n            buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n            buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n            buf[i++] = 0x80 | (c & 0x3f);\n        }\n    }\n\n    return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nvar utf8border = function(buf, max) {\n    var pos;\n\n    max = max || buf.length;\n    if (max > buf.length) { max = buf.length; }\n\n    // go back from last position, until start of sequence found\n    pos = max-1;\n    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n    // Fuckup - very small and broken sequence,\n    // return max, because we should return something anyway.\n    if (pos < 0) { return max; }\n\n    // If we came to start of buffer - that means vuffer is too small,\n    // return max too.\n    if (pos === 0) { return max; }\n\n    return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n    var i, out, c, c_len;\n    var len = buf.length;\n\n    // Reserve max possible length (2 words per char)\n    // NB: by unknown reasons, Array is significantly faster for\n    //     String.fromCharCode.apply than Uint16Array.\n    var utf16buf = new Array(len*2);\n\n    for (out=0, i=0; i<len;) {\n        c = buf[i++];\n        // quick process ascii\n        if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n        c_len = _utf8len[c];\n        // skip 5 & 6 byte codes\n        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n        // apply mask on first byte\n        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n        // join the rest\n        while (c_len > 1 && i < len) {\n            c = (c << 6) | (buf[i++] & 0x3f);\n            c_len--;\n        }\n\n        // terminated by end of string?\n        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n        if (c < 0x10000) {\n            utf16buf[out++] = c;\n        } else {\n            c -= 0x10000;\n            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n            utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n        }\n    }\n\n    // shrinkBuf(utf16buf, out)\n    if (utf16buf.length !== out) {\n        if(utf16buf.subarray) {\n            utf16buf = utf16buf.subarray(0, out);\n        } else {\n            utf16buf.length = out;\n        }\n    }\n\n    // return String.fromCharCode.apply(null, utf16buf);\n    return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n    if (support.nodebuffer) {\n        return nodejsUtils.newBufferFrom(str, \"utf-8\");\n    }\n\n    return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n    if (support.nodebuffer) {\n        return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n    }\n\n    buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n    return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nfunction Utf8DecodeWorker() {\n    GenericWorker.call(this, \"utf-8 decode\");\n    // the last bytes if a chunk didn't end with a complete codepoint.\n    this.leftOver = null;\n}\nutils.inherits(Utf8DecodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n    var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n    // 1st step, re-use what's left of the previous chunk\n    if (this.leftOver && this.leftOver.length) {\n        if(support.uint8array) {\n            var previousData = data;\n            data = new Uint8Array(previousData.length + this.leftOver.length);\n            data.set(this.leftOver, 0);\n            data.set(previousData, this.leftOver.length);\n        } else {\n            data = this.leftOver.concat(data);\n        }\n        this.leftOver = null;\n    }\n\n    var nextBoundary = utf8border(data);\n    var usableData = data;\n    if (nextBoundary !== data.length) {\n        if (support.uint8array) {\n            usableData = data.subarray(0, nextBoundary);\n            this.leftOver = data.subarray(nextBoundary, data.length);\n        } else {\n            usableData = data.slice(0, nextBoundary);\n            this.leftOver = data.slice(nextBoundary, data.length);\n        }\n    }\n\n    this.push({\n        data : exports.utf8decode(usableData),\n        meta : chunk.meta\n    });\n};\n\n/**\n * @see GenericWorker.flush\n */\nUtf8DecodeWorker.prototype.flush = function () {\n    if(this.leftOver && this.leftOver.length) {\n        this.push({\n            data : exports.utf8decode(this.leftOver),\n            meta : {}\n        });\n        this.leftOver = null;\n    }\n};\nexports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nfunction Utf8EncodeWorker() {\n    GenericWorker.call(this, \"utf-8 encode\");\n}\nutils.inherits(Utf8EncodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8EncodeWorker.prototype.processChunk = function (chunk) {\n    this.push({\n        data : exports.utf8encode(chunk.data),\n        meta : chunk.meta\n    });\n};\nexports.Utf8EncodeWorker = Utf8EncodeWorker;\n\n},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(require,module,exports){\n\"use strict\";\n\nvar support = require(\"./support\");\nvar base64 = require(\"./base64\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar external = require(\"./external\");\nrequire(\"setimmediate\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n    var result = null;\n    if (support.uint8array) {\n        result = new Uint8Array(str.length);\n    } else {\n        result = new Array(str.length);\n    }\n    return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(part, type) {\n    exports.checkSupport(\"blob\");\n\n    try {\n        // Blob constructor\n        return new Blob([part], {\n            type: type\n        });\n    }\n    catch (e) {\n\n        try {\n            // deprecated, browser only, old way\n            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n            var builder = new Builder();\n            builder.append(part);\n            return builder.getBlob(type);\n        }\n        catch (e) {\n\n            // well, fuck ?!\n            throw new Error(\"Bug : can't construct the Blob.\");\n        }\n    }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n    return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n    for (var i = 0; i < str.length; ++i) {\n        array[i] = str.charCodeAt(i) & 0xFF;\n    }\n    return array;\n}\n\n/**\n * An helper for the function arrayLikeToString.\n * This contains static information and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n    /**\n     * Transform an array of int into a string, chunk by chunk.\n     * See the performances notes on arrayLikeToString.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @param {String} type the type of the array.\n     * @param {Integer} chunk the chunk size.\n     * @return {String} the resulting string.\n     * @throws Error if the chunk is too big for the stack.\n     */\n    stringifyByChunk: function(array, type, chunk) {\n        var result = [], k = 0, len = array.length;\n        // shortcut\n        if (len <= chunk) {\n            return String.fromCharCode.apply(null, array);\n        }\n        while (k < len) {\n            if (type === \"array\" || type === \"nodebuffer\") {\n                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n            }\n            else {\n                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n            }\n            k += chunk;\n        }\n        return result.join(\"\");\n    },\n    /**\n     * Call String.fromCharCode on every item in the array.\n     * This is the naive implementation, which generate A LOT of intermediate string.\n     * This should be used when everything else fail.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @return {String} the result.\n     */\n    stringifyByChar: function(array){\n        var resultStr = \"\";\n        for(var i = 0; i < array.length; i++) {\n            resultStr += String.fromCharCode(array[i]);\n        }\n        return resultStr;\n    },\n    applyCanBeUsed : {\n        /**\n         * true if the browser accepts to use String.fromCharCode on Uint8Array\n         */\n        uint8array : (function () {\n            try {\n                return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n            } catch (e) {\n                return false;\n            }\n        })(),\n        /**\n         * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n         */\n        nodebuffer : (function () {\n            try {\n                return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n            } catch (e) {\n                return false;\n            }\n        })()\n    }\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n    // Performances notes :\n    // --------------------\n    // String.fromCharCode.apply(null, array) is the fastest, see\n    // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n    // but the stack is limited (and we can get huge arrays !).\n    //\n    // result += String.fromCharCode(array[i]); generate too many strings !\n    //\n    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n    // TODO : we now have workers that split the work. Do we still need that ?\n    var chunk = 65536,\n        type = exports.getTypeOf(array),\n        canUseApply = true;\n    if (type === \"uint8array\") {\n        canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n    } else if (type === \"nodebuffer\") {\n        canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n    }\n\n    if (canUseApply) {\n        while (chunk > 1) {\n            try {\n                return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n            } catch (e) {\n                chunk = Math.floor(chunk / 2);\n            }\n        }\n    }\n\n    // no apply or chunk error : slow and painful algorithm\n    // default browser on android 4.*\n    return arrayToStringHelper.stringifyByChar(array);\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n    for (var i = 0; i < arrayFrom.length; i++) {\n        arrayTo[i] = arrayFrom[i];\n    }\n    return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n    \"string\": identity,\n    \"array\": function(input) {\n        return stringToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return transform[\"string\"][\"uint8array\"](input).buffer;\n    },\n    \"uint8array\": function(input) {\n        return stringToArrayLike(input, new Uint8Array(input.length));\n    },\n    \"nodebuffer\": function(input) {\n        return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));\n    }\n};\n\n// array to ?\ntransform[\"array\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": identity,\n    \"arraybuffer\": function(input) {\n        return (new Uint8Array(input)).buffer;\n    },\n    \"uint8array\": function(input) {\n        return new Uint8Array(input);\n    },\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(input);\n    }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n    \"string\": function(input) {\n        return arrayLikeToString(new Uint8Array(input));\n    },\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n    },\n    \"arraybuffer\": identity,\n    \"uint8array\": function(input) {\n        return new Uint8Array(input);\n    },\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(new Uint8Array(input));\n    }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return input.buffer;\n    },\n    \"uint8array\": identity,\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(input);\n    }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n    },\n    \"uint8array\": function(input) {\n        return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n    },\n    \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n    if (!input) {\n        // undefined, null, etc\n        // an empty string won't harm.\n        input = \"\";\n    }\n    if (!outputType) {\n        return input;\n    }\n    exports.checkSupport(outputType);\n    var inputType = exports.getTypeOf(input);\n    var result = transform[inputType][outputType](input);\n    return result;\n};\n\n/**\n * Resolve all relative path components, \".\" and \"..\", in a path. If these relative components\n * traverse above the root then the resulting path will only contain the final path component.\n *\n * All empty components, e.g. \"//\", are removed.\n * @param {string} path A path with / or \\ separators\n * @returns {string} The path with all relative path components resolved.\n */\nexports.resolve = function(path) {\n    var parts = path.split(\"/\");\n    var result = [];\n    for (var index = 0; index < parts.length; index++) {\n        var part = parts[index];\n        // Allow the first and last component to be empty for trailing slashes.\n        if (part === \".\" || (part === \"\" && index !== 0 && index !== parts.length - 1)) {\n            continue;\n        } else if (part === \"..\") {\n            result.pop();\n        } else {\n            result.push(part);\n        }\n    }\n    return result.join(\"/\");\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n    if (typeof input === \"string\") {\n        return \"string\";\n    }\n    if (Object.prototype.toString.call(input) === \"[object Array]\") {\n        return \"array\";\n    }\n    if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n        return \"nodebuffer\";\n    }\n    if (support.uint8array && input instanceof Uint8Array) {\n        return \"uint8array\";\n    }\n    if (support.arraybuffer && input instanceof ArrayBuffer) {\n        return \"arraybuffer\";\n    }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n    var supported = support[type.toLowerCase()];\n    if (!supported) {\n        throw new Error(type + \" is not supported by this platform\");\n    }\n};\n\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n    var res = \"\",\n        code, i;\n    for (i = 0; i < (str || \"\").length; i++) {\n        code = str.charCodeAt(i);\n        res += \"\\\\x\" + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n    }\n    return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n    setImmediate(function () {\n        callback.apply(self || null, args || []);\n    });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n    var Obj = function() {};\n    Obj.prototype = superCtor.prototype;\n    ctor.prototype = new Obj();\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n    var result = {}, i, attr;\n    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n        for (attr in arguments[i]) {\n            if (Object.prototype.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n                result[attr] = arguments[i][attr];\n            }\n        }\n    }\n    return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n    // if inputData is already a promise, this flatten it.\n    var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n        var isBlob = support.blob && (data instanceof Blob || [\"[object File]\", \"[object Blob]\"].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n        if (isBlob && typeof FileReader !== \"undefined\") {\n            return new external.Promise(function (resolve, reject) {\n                var reader = new FileReader();\n\n                reader.onload = function(e) {\n                    resolve(e.target.result);\n                };\n                reader.onerror = function(e) {\n                    reject(e.target.error);\n                };\n                reader.readAsArrayBuffer(data);\n            });\n        } else {\n            return data;\n        }\n    });\n\n    return promise.then(function(data) {\n        var dataType = exports.getTypeOf(data);\n\n        if (!dataType) {\n            return external.Promise.reject(\n                new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n                          \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n            );\n        }\n        // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n        if (dataType === \"arraybuffer\") {\n            data = exports.transformTo(\"uint8array\", data);\n        } else if (dataType === \"string\") {\n            if (isBase64) {\n                data = base64.decode(data);\n            }\n            else if (isBinary) {\n                // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n                if (isOptimizedBinaryString !== true) {\n                    // this is a string, not in a base64 format.\n                    // Be sure that this is a correct \"binary string\"\n                    data = string2binary(data);\n                }\n            }\n        }\n        return data;\n    });\n};\n\n},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,\"setimmediate\":54}],33:[function(require,module,exports){\n\"use strict\";\nvar readerFor = require(\"./reader/readerFor\");\nvar utils = require(\"./utils\");\nvar sig = require(\"./signature\");\nvar ZipEntry = require(\"./zipEntry\");\nvar support = require(\"./support\");\n//  class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(loadOptions) {\n    this.files = [];\n    this.loadOptions = loadOptions;\n}\nZipEntries.prototype = {\n    /**\n     * Check that the reader is on the specified signature.\n     * @param {string} expectedSignature the expected signature.\n     * @throws {Error} if it is an other signature.\n     */\n    checkSignature: function(expectedSignature) {\n        if (!this.reader.readAndCheckSignature(expectedSignature)) {\n            this.reader.index -= 4;\n            var signature = this.reader.readString(4);\n            throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n        }\n    },\n    /**\n     * Check if the given signature is at the given index.\n     * @param {number} askedIndex the index to check.\n     * @param {string} expectedSignature the signature to expect.\n     * @return {boolean} true if the signature is here, false otherwise.\n     */\n    isSignature: function(askedIndex, expectedSignature) {\n        var currentIndex = this.reader.index;\n        this.reader.setIndex(askedIndex);\n        var signature = this.reader.readString(4);\n        var result = signature === expectedSignature;\n        this.reader.setIndex(currentIndex);\n        return result;\n    },\n    /**\n     * Read the end of the central directory.\n     */\n    readBlockEndOfCentral: function() {\n        this.diskNumber = this.reader.readInt(2);\n        this.diskWithCentralDirStart = this.reader.readInt(2);\n        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n        this.centralDirRecords = this.reader.readInt(2);\n        this.centralDirSize = this.reader.readInt(4);\n        this.centralDirOffset = this.reader.readInt(4);\n\n        this.zipCommentLength = this.reader.readInt(2);\n        // warning : the encoding depends of the system locale\n        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n        // On a windows machine, this field is encoded with the localized windows code page.\n        var zipComment = this.reader.readData(this.zipCommentLength);\n        var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n        // To get consistent behavior with the generation part, we will assume that\n        // this is utf8 encoded unless specified otherwise.\n        var decodeContent = utils.transformTo(decodeParamType, zipComment);\n        this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n    },\n    /**\n     * Read the end of the Zip 64 central directory.\n     * Not merged with the method readEndOfCentral :\n     * The end of central can coexist with its Zip64 brother,\n     * I don't want to read the wrong number of bytes !\n     */\n    readBlockZip64EndOfCentral: function() {\n        this.zip64EndOfCentralSize = this.reader.readInt(8);\n        this.reader.skip(4);\n        // this.versionMadeBy = this.reader.readString(2);\n        // this.versionNeeded = this.reader.readInt(2);\n        this.diskNumber = this.reader.readInt(4);\n        this.diskWithCentralDirStart = this.reader.readInt(4);\n        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n        this.centralDirRecords = this.reader.readInt(8);\n        this.centralDirSize = this.reader.readInt(8);\n        this.centralDirOffset = this.reader.readInt(8);\n\n        this.zip64ExtensibleData = {};\n        var extraDataSize = this.zip64EndOfCentralSize - 44,\n            index = 0,\n            extraFieldId,\n            extraFieldLength,\n            extraFieldValue;\n        while (index < extraDataSize) {\n            extraFieldId = this.reader.readInt(2);\n            extraFieldLength = this.reader.readInt(4);\n            extraFieldValue = this.reader.readData(extraFieldLength);\n            this.zip64ExtensibleData[extraFieldId] = {\n                id: extraFieldId,\n                length: extraFieldLength,\n                value: extraFieldValue\n            };\n        }\n    },\n    /**\n     * Read the end of the Zip 64 central directory locator.\n     */\n    readBlockZip64EndOfCentralLocator: function() {\n        this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n        this.disksCount = this.reader.readInt(4);\n        if (this.disksCount > 1) {\n            throw new Error(\"Multi-volumes zip are not supported\");\n        }\n    },\n    /**\n     * Read the local files, based on the offset read in the central part.\n     */\n    readLocalFiles: function() {\n        var i, file;\n        for (i = 0; i < this.files.length; i++) {\n            file = this.files[i];\n            this.reader.setIndex(file.localHeaderOffset);\n            this.checkSignature(sig.LOCAL_FILE_HEADER);\n            file.readLocalPart(this.reader);\n            file.handleUTF8();\n            file.processAttributes();\n        }\n    },\n    /**\n     * Read the central directory.\n     */\n    readCentralDir: function() {\n        var file;\n\n        this.reader.setIndex(this.centralDirOffset);\n        while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {\n            file = new ZipEntry({\n                zip64: this.zip64\n            }, this.loadOptions);\n            file.readCentralPart(this.reader);\n            this.files.push(file);\n        }\n\n        if (this.centralDirRecords !== this.files.length) {\n            if (this.centralDirRecords !== 0 && this.files.length === 0) {\n                // We expected some records but couldn't find ANY.\n                // This is really suspicious, as if something went wrong.\n                throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n            } else {\n                // We found some records but not all.\n                // Something is wrong but we got something for the user: no error here.\n                // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n            }\n        }\n    },\n    /**\n     * Read the end of central directory.\n     */\n    readEndOfCentral: function() {\n        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n        if (offset < 0) {\n            // Check if the content is a truncated zip or complete garbage.\n            // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n            // extractible zip for example) but it can give a good hint.\n            // If an ajax request was used without responseType, we will also\n            // get unreadable data.\n            var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n            if (isGarbage) {\n                throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n                                \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n            } else {\n                throw new Error(\"Corrupted zip: can't find end of central directory\");\n            }\n\n        }\n        this.reader.setIndex(offset);\n        var endOfCentralDirOffset = offset;\n        this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n        this.readBlockEndOfCentral();\n\n\n        /* extract from the zip spec :\n            4)  If one of the fields in the end of central directory\n                record is too small to hold required data, the field\n                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n                ZIP64 format record should be created.\n            5)  The end of central directory record and the\n                Zip64 end of central directory locator record must\n                reside on the same disk when splitting or spanning\n                an archive.\n         */\n        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n            this.zip64 = true;\n\n            /*\n            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n            the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n            all numbers as 64-bit double precision IEEE 754 floating point numbers.\n            So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n            */\n\n            // should look for a zip64 EOCD locator\n            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n            if (offset < 0) {\n                throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n            }\n            this.reader.setIndex(offset);\n            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n            this.readBlockZip64EndOfCentralLocator();\n\n            // now the zip64 EOCD record\n            if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n                // console.warn(\"ZIP64 end of central directory not where expected.\");\n                this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n                if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n                    throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n                }\n            }\n            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n            this.readBlockZip64EndOfCentral();\n        }\n\n        var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n        if (this.zip64) {\n            expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n            expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n        }\n\n        var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n        if (extraBytes > 0) {\n            // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n            if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n                // The offsets seem wrong, but we have something at the specified offset.\n                // So… we keep it.\n            } else {\n                // the offset is wrong, update the \"zero\" of the reader\n                // this happens if data has been prepended (crx files for example)\n                this.reader.zero = extraBytes;\n            }\n        } else if (extraBytes < 0) {\n            throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n        }\n    },\n    prepareReader: function(data) {\n        this.reader = readerFor(data);\n    },\n    /**\n     * Read a zip file and create ZipEntries.\n     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n     */\n    load: function(data) {\n        this.prepareReader(data);\n        this.readEndOfCentral();\n        this.readCentralDir();\n        this.readLocalFiles();\n    }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n\n},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(require,module,exports){\n\"use strict\";\nvar readerFor = require(\"./reader/readerFor\");\nvar utils = require(\"./utils\");\nvar CompressedObject = require(\"./compressedObject\");\nvar crc32fn = require(\"./crc32\");\nvar utf8 = require(\"./utf8\");\nvar compressions = require(\"./compressions\");\nvar support = require(\"./support\");\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n    for (var method in compressions) {\n        if (!Object.prototype.hasOwnProperty.call(compressions, method)) {\n            continue;\n        }\n        if (compressions[method].magic === compressionMethod) {\n            return compressions[method];\n        }\n    }\n    return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n    this.options = options;\n    this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n    /**\n     * say if the file is encrypted.\n     * @return {boolean} true if the file is encrypted, false otherwise.\n     */\n    isEncrypted: function() {\n        // bit 1 is set\n        return (this.bitFlag & 0x0001) === 0x0001;\n    },\n    /**\n     * say if the file has utf-8 filename/comment.\n     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n     */\n    useUTF8: function() {\n        // bit 11 is set\n        return (this.bitFlag & 0x0800) === 0x0800;\n    },\n    /**\n     * Read the local part of a zip file and add the info in this object.\n     * @param {DataReader} reader the reader to use.\n     */\n    readLocalPart: function(reader) {\n        var compression, localExtraFieldsLength;\n\n        // we already know everything from the central dir !\n        // If the central dir data are false, we are doomed.\n        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.\n        // The less data we get here, the more reliable this should be.\n        // Let's skip the whole header and dash to the data !\n        reader.skip(22);\n        // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n        // Strangely, the filename here is OK.\n        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n        // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n        // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n        // the internet.\n        //\n        // I think I see the logic here : the central directory is used to display\n        // content and the local directory is used to extract the files. Mixing / and \\\n        // may be used to display \\ to windows users and use / when extracting the files.\n        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n        this.fileNameLength = reader.readInt(2);\n        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n        // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n        this.fileName = reader.readData(this.fileNameLength);\n        reader.skip(localExtraFieldsLength);\n\n        if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n            throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n        }\n\n        compression = findCompression(this.compressionMethod);\n        if (compression === null) { // no compression found\n            throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n        }\n        this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n    },\n\n    /**\n     * Read the central part of a zip file and add the info in this object.\n     * @param {DataReader} reader the reader to use.\n     */\n    readCentralPart: function(reader) {\n        this.versionMadeBy = reader.readInt(2);\n        reader.skip(2);\n        // this.versionNeeded = reader.readInt(2);\n        this.bitFlag = reader.readInt(2);\n        this.compressionMethod = reader.readString(2);\n        this.date = reader.readDate();\n        this.crc32 = reader.readInt(4);\n        this.compressedSize = reader.readInt(4);\n        this.uncompressedSize = reader.readInt(4);\n        var fileNameLength = reader.readInt(2);\n        this.extraFieldsLength = reader.readInt(2);\n        this.fileCommentLength = reader.readInt(2);\n        this.diskNumberStart = reader.readInt(2);\n        this.internalFileAttributes = reader.readInt(2);\n        this.externalFileAttributes = reader.readInt(4);\n        this.localHeaderOffset = reader.readInt(4);\n\n        if (this.isEncrypted()) {\n            throw new Error(\"Encrypted zip are not supported\");\n        }\n\n        // will be read in the local part, see the comments there\n        reader.skip(fileNameLength);\n        this.readExtraFields(reader);\n        this.parseZIP64ExtraField(reader);\n        this.fileComment = reader.readData(this.fileCommentLength);\n    },\n\n    /**\n     * Parse the external file attributes and get the unix/dos permissions.\n     */\n    processAttributes: function () {\n        this.unixPermissions = null;\n        this.dosPermissions = null;\n        var madeBy = this.versionMadeBy >> 8;\n\n        // Check if we have the DOS directory flag set.\n        // We look for it in the DOS and UNIX permissions\n        // but some unknown platform could set it as a compatibility flag.\n        this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n        if(madeBy === MADE_BY_DOS) {\n            // first 6 bits (0 to 5)\n            this.dosPermissions = this.externalFileAttributes & 0x3F;\n        }\n\n        if(madeBy === MADE_BY_UNIX) {\n            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n        }\n\n        // fail safe : if the name ends with a / it probably means a folder\n        if (!this.dir && this.fileNameStr.slice(-1) === \"/\") {\n            this.dir = true;\n        }\n    },\n\n    /**\n     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n     * @param {DataReader} reader the reader to use.\n     */\n    parseZIP64ExtraField: function() {\n        if (!this.extraFields[0x0001]) {\n            return;\n        }\n\n        // should be something, preparing the extra reader\n        var extraReader = readerFor(this.extraFields[0x0001].value);\n\n        // I really hope that these 64bits integer can fit in 32 bits integer, because js\n        // won't let us have more.\n        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n            this.uncompressedSize = extraReader.readInt(8);\n        }\n        if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n            this.compressedSize = extraReader.readInt(8);\n        }\n        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n            this.localHeaderOffset = extraReader.readInt(8);\n        }\n        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n            this.diskNumberStart = extraReader.readInt(4);\n        }\n    },\n    /**\n     * Read the central part of a zip file and add the info in this object.\n     * @param {DataReader} reader the reader to use.\n     */\n    readExtraFields: function(reader) {\n        var end = reader.index + this.extraFieldsLength,\n            extraFieldId,\n            extraFieldLength,\n            extraFieldValue;\n\n        if (!this.extraFields) {\n            this.extraFields = {};\n        }\n\n        while (reader.index + 4 < end) {\n            extraFieldId = reader.readInt(2);\n            extraFieldLength = reader.readInt(2);\n            extraFieldValue = reader.readData(extraFieldLength);\n\n            this.extraFields[extraFieldId] = {\n                id: extraFieldId,\n                length: extraFieldLength,\n                value: extraFieldValue\n            };\n        }\n\n        reader.setIndex(end);\n    },\n    /**\n     * Apply an UTF8 transformation if needed.\n     */\n    handleUTF8: function() {\n        var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n        if (this.useUTF8()) {\n            this.fileNameStr = utf8.utf8decode(this.fileName);\n            this.fileCommentStr = utf8.utf8decode(this.fileComment);\n        } else {\n            var upath = this.findExtraFieldUnicodePath();\n            if (upath !== null) {\n                this.fileNameStr = upath;\n            } else {\n                // ASCII text or unsupported code page\n                var fileNameByteArray =  utils.transformTo(decodeParamType, this.fileName);\n                this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n            }\n\n            var ucomment = this.findExtraFieldUnicodeComment();\n            if (ucomment !== null) {\n                this.fileCommentStr = ucomment;\n            } else {\n                // ASCII text or unsupported code page\n                var commentByteArray =  utils.transformTo(decodeParamType, this.fileComment);\n                this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n            }\n        }\n    },\n\n    /**\n     * Find the unicode path declared in the extra field, if any.\n     * @return {String} the unicode path, null otherwise.\n     */\n    findExtraFieldUnicodePath: function() {\n        var upathField = this.extraFields[0x7075];\n        if (upathField) {\n            var extraReader = readerFor(upathField.value);\n\n            // wrong version\n            if (extraReader.readInt(1) !== 1) {\n                return null;\n            }\n\n            // the crc of the filename changed, this field is out of date.\n            if (crc32fn(this.fileName) !== extraReader.readInt(4)) {\n                return null;\n            }\n\n            return utf8.utf8decode(extraReader.readData(upathField.length - 5));\n        }\n        return null;\n    },\n\n    /**\n     * Find the unicode comment declared in the extra field, if any.\n     * @return {String} the unicode comment, null otherwise.\n     */\n    findExtraFieldUnicodeComment: function() {\n        var ucommentField = this.extraFields[0x6375];\n        if (ucommentField) {\n            var extraReader = readerFor(ucommentField.value);\n\n            // wrong version\n            if (extraReader.readInt(1) !== 1) {\n                return null;\n            }\n\n            // the crc of the comment changed, this field is out of date.\n            if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {\n                return null;\n            }\n\n            return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));\n        }\n        return null;\n    }\n};\nmodule.exports = ZipEntry;\n\n},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(require,module,exports){\n\"use strict\";\n\nvar StreamHelper = require(\"./stream/StreamHelper\");\nvar DataWorker = require(\"./stream/DataWorker\");\nvar utf8 = require(\"./utf8\");\nvar CompressedObject = require(\"./compressedObject\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n    this.name = name;\n    this.dir = options.dir;\n    this.date = options.date;\n    this.comment = options.comment;\n    this.unixPermissions = options.unixPermissions;\n    this.dosPermissions = options.dosPermissions;\n\n    this._data = data;\n    this._dataBinary = options.binary;\n    // keep only the compression\n    this.options = {\n        compression : options.compression,\n        compressionOptions : options.compressionOptions\n    };\n};\n\nZipObject.prototype = {\n    /**\n     * Create an internal stream for the content of this object.\n     * @param {String} type the type of each chunk.\n     * @return StreamHelper the stream.\n     */\n    internalStream: function (type) {\n        var result = null, outputType = \"string\";\n        try {\n            if (!type) {\n                throw new Error(\"No output type specified.\");\n            }\n            outputType = type.toLowerCase();\n            var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n            if (outputType === \"binarystring\" || outputType === \"text\") {\n                outputType = \"string\";\n            }\n            result = this._decompressWorker();\n\n            var isUnicodeString = !this._dataBinary;\n\n            if (isUnicodeString && !askUnicodeString) {\n                result = result.pipe(new utf8.Utf8EncodeWorker());\n            }\n            if (!isUnicodeString && askUnicodeString) {\n                result = result.pipe(new utf8.Utf8DecodeWorker());\n            }\n        } catch (e) {\n            result = new GenericWorker(\"error\");\n            result.error(e);\n        }\n\n        return new StreamHelper(result, outputType, \"\");\n    },\n\n    /**\n     * Prepare the content in the asked type.\n     * @param {String} type the type of the result.\n     * @param {Function} onUpdate a function to call on each internal update.\n     * @return Promise the promise of the result.\n     */\n    async: function (type, onUpdate) {\n        return this.internalStream(type).accumulate(onUpdate);\n    },\n\n    /**\n     * Prepare the content as a nodejs stream.\n     * @param {String} type the type of each chunk.\n     * @param {Function} onUpdate a function to call on each internal update.\n     * @return Stream the stream.\n     */\n    nodeStream: function (type, onUpdate) {\n        return this.internalStream(type || \"nodebuffer\").toNodejsStream(onUpdate);\n    },\n\n    /**\n     * Return a worker for the compressed content.\n     * @private\n     * @param {Object} compression the compression object to use.\n     * @param {Object} compressionOptions the options to use when compressing.\n     * @return Worker the worker.\n     */\n    _compressWorker: function (compression, compressionOptions) {\n        if (\n            this._data instanceof CompressedObject &&\n            this._data.compression.magic === compression.magic\n        ) {\n            return this._data.getCompressedWorker();\n        } else {\n            var result = this._decompressWorker();\n            if(!this._dataBinary) {\n                result = result.pipe(new utf8.Utf8EncodeWorker());\n            }\n            return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n        }\n    },\n    /**\n     * Return a worker for the decompressed content.\n     * @private\n     * @return Worker the worker.\n     */\n    _decompressWorker : function () {\n        if (this._data instanceof CompressedObject) {\n            return this._data.getContentWorker();\n        } else if (this._data instanceof GenericWorker) {\n            return this._data;\n        } else {\n            return new DataWorker(this._data);\n        }\n    }\n};\n\nvar removedMethods = [\"asText\", \"asBinary\", \"asNodeBuffer\", \"asUint8Array\", \"asArrayBuffer\"];\nvar removedFn = function () {\n    throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\nfor(var i = 0; i < removedMethods.length; i++) {\n    ZipObject.prototype[removedMethods[i]] = removedFn;\n}\nmodule.exports = ZipObject;\n\n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(require,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n  if (Mutation) {\n    var called = 0;\n    var observer = new Mutation(nextTick);\n    var element = global.document.createTextNode('');\n    observer.observe(element, {\n      characterData: true\n    });\n    scheduleDrain = function () {\n      element.data = (called = ++called % 2);\n    };\n  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n    var channel = new global.MessageChannel();\n    channel.port1.onmessage = nextTick;\n    scheduleDrain = function () {\n      channel.port2.postMessage(0);\n    };\n  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n    scheduleDrain = function () {\n\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n      var scriptEl = global.document.createElement('script');\n      scriptEl.onreadystatechange = function () {\n        nextTick();\n\n        scriptEl.onreadystatechange = null;\n        scriptEl.parentNode.removeChild(scriptEl);\n        scriptEl = null;\n      };\n      global.document.documentElement.appendChild(scriptEl);\n    };\n  } else {\n    scheduleDrain = function () {\n      setTimeout(nextTick, 0);\n    };\n  }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n  draining = true;\n  var i, oldQueue;\n  var len = queue.length;\n  while (len) {\n    oldQueue = queue;\n    queue = [];\n    i = -1;\n    while (++i < len) {\n      oldQueue[i]();\n    }\n    len = queue.length;\n  }\n  draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n  if (queue.push(task) === 1 && !draining) {\n    scheduleDrain();\n  }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],37:[function(require,module,exports){\n'use strict';\nvar immediate = require('immediate');\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('resolver must be a function');\n  }\n  this.state = PENDING;\n  this.queue = [];\n  this.outcome = void 0;\n  if (resolver !== INTERNAL) {\n    safelyResolveThenable(this, resolver);\n  }\n}\n\nPromise.prototype[\"finally\"] = function (callback) {\n  if (typeof callback !== 'function') {\n    return this;\n  }\n  var p = this.constructor;\n  return this.then(resolve, reject);\n\n  function resolve(value) {\n    function yes () {\n      return value;\n    }\n    return p.resolve(callback()).then(yes);\n  }\n  function reject(reason) {\n    function no () {\n      throw reason;\n    }\n    return p.resolve(callback()).then(no);\n  }\n};\nPromise.prototype[\"catch\"] = function (onRejected) {\n  return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n    typeof onRejected !== 'function' && this.state === REJECTED) {\n    return this;\n  }\n  var promise = new this.constructor(INTERNAL);\n  if (this.state !== PENDING) {\n    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n    unwrap(promise, resolver, this.outcome);\n  } else {\n    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n  }\n\n  return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n  this.promise = promise;\n  if (typeof onFulfilled === 'function') {\n    this.onFulfilled = onFulfilled;\n    this.callFulfilled = this.otherCallFulfilled;\n  }\n  if (typeof onRejected === 'function') {\n    this.onRejected = onRejected;\n    this.callRejected = this.otherCallRejected;\n  }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n  handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n  unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n  handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n  unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n  immediate(function () {\n    var returnValue;\n    try {\n      returnValue = func(value);\n    } catch (e) {\n      return handlers.reject(promise, e);\n    }\n    if (returnValue === promise) {\n      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n    } else {\n      handlers.resolve(promise, returnValue);\n    }\n  });\n}\n\nhandlers.resolve = function (self, value) {\n  var result = tryCatch(getThen, value);\n  if (result.status === 'error') {\n    return handlers.reject(self, result.value);\n  }\n  var thenable = result.value;\n\n  if (thenable) {\n    safelyResolveThenable(self, thenable);\n  } else {\n    self.state = FULFILLED;\n    self.outcome = value;\n    var i = -1;\n    var len = self.queue.length;\n    while (++i < len) {\n      self.queue[i].callFulfilled(value);\n    }\n  }\n  return self;\n};\nhandlers.reject = function (self, error) {\n  self.state = REJECTED;\n  self.outcome = error;\n  var i = -1;\n  var len = self.queue.length;\n  while (++i < len) {\n    self.queue[i].callRejected(error);\n  }\n  return self;\n};\n\nfunction getThen(obj) {\n  // Make sure we only access the accessor once as required by the spec\n  var then = obj && obj.then;\n  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n    return function appyThen() {\n      then.apply(obj, arguments);\n    };\n  }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n  // Either fulfill, reject or reject with error\n  var called = false;\n  function onError(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.reject(self, value);\n  }\n\n  function onSuccess(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.resolve(self, value);\n  }\n\n  function tryToUnwrap() {\n    thenable(onSuccess, onError);\n  }\n\n  var result = tryCatch(tryToUnwrap);\n  if (result.status === 'error') {\n    onError(result.value);\n  }\n}\n\nfunction tryCatch(func, value) {\n  var out = {};\n  try {\n    out.value = func(value);\n    out.status = 'success';\n  } catch (e) {\n    out.status = 'error';\n    out.value = e;\n  }\n  return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n  if (value instanceof this) {\n    return value;\n  }\n  return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n  var promise = new this(INTERNAL);\n  return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var values = new Array(len);\n  var resolved = 0;\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    allResolver(iterable[i], i);\n  }\n  return promise;\n  function allResolver(value, i) {\n    self.resolve(value).then(resolveFromAll, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n    function resolveFromAll(outValue) {\n      values[i] = outValue;\n      if (++resolved === len && !called) {\n        called = true;\n        handlers.resolve(promise, values);\n      }\n    }\n  }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    resolver(iterable[i]);\n  }\n  return promise;\n  function resolver(value) {\n    self.resolve(value).then(function (response) {\n      if (!called) {\n        called = true;\n        handlers.resolve(promise, response);\n      }\n    }, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n  }\n}\n\n},{\"immediate\":36}],38:[function(require,module,exports){\n// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign    = require('./lib/utils/common').assign;\n\nvar deflate   = require('./lib/deflate');\nvar inflate   = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n\n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(require,module,exports){\n'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overriden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n\n},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(require,module,exports){\n'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar c            = require('./zlib/constants');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\nvar GZheader     = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overriden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n  if (!(this instanceof Inflate)) return new Inflate(options);\n\n  this.options = utils.assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status  = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== c.Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n  var dict;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = strings.binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n    if (status === c.Z_NEED_DICT && dictionary) {\n      // Convert data if needed\n      if (typeof dictionary === 'string') {\n        dict = strings.string2buf(dictionary);\n      } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n        dict = new Uint8Array(dictionary);\n      } else {\n        dict = dictionary;\n      }\n\n      status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n    }\n\n    if (status === c.Z_BUF_ERROR && allowBufError === true) {\n      status = c.Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n  if (status === c.Z_STREAM_END) {\n    _mode = c.Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === c.Z_FINISH) {\n    status = zlib_inflate.inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === c.Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === c.Z_SYNC_FLUSH) {\n    this.onEnd(c.Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === c.Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 alligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip  = inflate;\n\n},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(require,module,exports){\n'use strict';\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (source.hasOwnProperty(p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n\n},{}],42:[function(require,module,exports){\n// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safary\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // use fallback for big arrays to avoid stack overflow\n  if (len < 65537) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Fuckup - very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means vuffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n},{\"./common\":41}],43:[function(require,module,exports){\n'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It doesn't worth to make additional optimizationa as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n\n},{}],45:[function(require,module,exports){\n'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n},{}],46:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils   = require('../utils/common');\nvar trees   = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32   = require('./crc32');\nvar msg     = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH      = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\nvar Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\n//var Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\n//var Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\n//var Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION      = 0;\n//var Z_BEST_SPEED          = 1;\n//var Z_BEST_COMPRESSION    = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED            = 1;\nvar Z_HUFFMAN_ONLY        = 2;\nvar Z_RLE                 = 3;\nvar Z_FIXED               = 4;\nvar Z_DEFAULT_STRATEGY    = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY              = 0;\n//var Z_TEXT                = 1;\n//var Z_ASCII               = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES       = 30;\n/* number of distance codes */\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  utils.arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new utils.Buf16(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  trees._tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new utils.Buf8(s.w_size * 2);\n  s.head = new utils.Buf16(s.hash_size);\n  s.prev = new utils.Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n                );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configuration_table[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        trees._tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        trees._tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = new utils.Buf8(s.w_size);\n    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nmodule.exports = GZheader;\n\n},{}],48:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30;       /* got a data error -- remain here until reset */\nvar TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n  var state;\n  var _in;                    /* local strm.input */\n  var last;                   /* have enough input while in < last */\n  var _out;                   /* local strm.output */\n  var beg;                    /* inflate()'s initial strm.output */\n  var end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  var dmax;                   /* maximum distance from zlib header */\n//#endif\n  var wsize;                  /* window size or zero if not using window */\n  var whave;                  /* valid bytes in the window */\n  var wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  var s_window;               /* allocated sliding window, if wsize != 0 */\n  var hold;                   /* local strm.hold */\n  var bits;                   /* local strm.bits */\n  var lcode;                  /* local strm.lencode */\n  var dcode;                  /* local strm.distcode */\n  var lmask;                  /* mask for first level of length codes */\n  var dmask;                  /* mask for first level of distance codes */\n  var here;                   /* retrieved table entry */\n  var op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  var len;                    /* match length, unused bytes */\n  var dist;                   /* match distance */\n  var from;                   /* where to copy match from */\n  var from_source;\n\n\n  var input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n\n},{}],49:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils         = require('../utils/common');\nvar adler32       = require('./adler32');\nvar crc32         = require('./crc32');\nvar inflate_fast  = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH      = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\n//var Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\nvar Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\nvar Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar    HEAD = 1;       /* i: waiting for magic header */\nvar    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\nvar    TIME = 3;       /* i: waiting for modification time (gzip) */\nvar    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\nvar    EXLEN = 5;      /* i: waiting for extra length (gzip) */\nvar    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\nvar    NAME = 7;       /* i: waiting for end of file name (gzip) */\nvar    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\nvar    HCRC = 9;       /* i: waiting for header crc (gzip) */\nvar    DICTID = 10;    /* i: waiting for dictionary check value */\nvar    DICT = 11;      /* waiting for inflateSetDictionary() call */\nvar        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\nvar        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\nvar        STORED = 14;    /* i: waiting for stored size (length and complement) */\nvar        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\nvar        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\nvar        TABLE = 17;     /* i: waiting for dynamic block table lengths */\nvar        LENLENS = 18;   /* i: waiting for code length code lengths */\nvar        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\nvar            LEN_ = 20;      /* i: same as LEN below, but only first time in */\nvar            LEN = 21;       /* i: waiting for length/lit/eob code */\nvar            LENEXT = 22;    /* i: waiting for length extra bits */\nvar            DIST = 23;      /* i: waiting for distance code */\nvar            DISTEXT = 24;   /* i: waiting for distance extra bits */\nvar            MATCH = 25;     /* o: waiting for output space to copy string */\nvar            LIT = 26;       /* o: waiting for output space to write literal */\nvar    CHECK = 27;     /* i: waiting for 32-bit check value */\nvar    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\nvar    DONE = 29;      /* finished check, done -- remain here until reset */\nvar    BAD = 30;       /* got a data error -- remain here until reset */\nvar    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\nvar    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n  this.mode = 0;             /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n  this.work = new utils.Buf16(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK;\n}\n\nfunction inflateReset(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n  var wrap;\n  var state;\n\n  /* get the state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 1;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n  var ret;\n  var state;\n\n  if (!strm) { return Z_STREAM_ERROR; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.window = null/*Z_NULL*/;\n  ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n}\n\nfunction inflateInit(strm) {\n  return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    var sym;\n\n    lenfix = new utils.Buf32(512);\n    distfix = new utils.Buf32(32);\n\n    /* literal/length table */\n    sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n  var dist;\n  var state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new utils.Buf8(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      utils.arraySet(state.window, src, end - copy, copy, 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n}\n\nfunction inflate(strm, flush) {\n  var state;\n  var input, output;          // input/output buffers\n  var next;                   /* next input INDEX */\n  var put;                    /* next output INDEX */\n  var have, left;             /* available input and output */\n  var hold;                   /* bit buffer */\n  var bits;                   /* bits in bit buffer */\n  var _in, _out;              /* save starting available input and output */\n  var copy;                   /* number of stored or match bytes to copy */\n  var from;                   /* where to copy match bytes from */\n  var from_source;\n  var here = 0;               /* current decoding table entry */\n  var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //var last;                   /* parent table entry */\n  var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  var len;                    /* length to copy for repeats, bits to drop */\n  var ret;                    /* return code */\n  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */\n  var opts;\n\n  var n; // temporary var for NEED_BITS\n\n  var order = /* permutation of code lengths */\n    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n  if (!strm || !strm.state || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n    case HEAD:\n      if (state.wrap === 0) {\n        state.mode = TYPEDO;\n        break;\n      }\n      //=== NEEDBITS(16);\n      while (bits < 16) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n        state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n        //=== CRC2(state.check, hold);\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        state.check = crc32(state.check, hbuf, 2, 0);\n        //===//\n\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = FLAGS;\n        break;\n      }\n      state.flags = 0;           /* expect zlib header */\n      if (state.head) {\n        state.head.done = false;\n      }\n      if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n        strm.msg = 'incorrect header check';\n        state.mode = BAD;\n        break;\n      }\n      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n        strm.msg = 'unknown compression method';\n        state.mode = BAD;\n        break;\n      }\n      //--- DROPBITS(4) ---//\n      hold >>>= 4;\n      bits -= 4;\n      //---//\n      len = (hold & 0x0f)/*BITS(4)*/ + 8;\n      if (state.wbits === 0) {\n        state.wbits = len;\n      }\n      else if (len > state.wbits) {\n        strm.msg = 'invalid window size';\n        state.mode = BAD;\n        break;\n      }\n      state.dmax = 1 << len;\n      //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n      state.mode = hold & 0x200 ? DICTID : TYPE;\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      break;\n    case FLAGS:\n      //=== NEEDBITS(16); */\n      while (bits < 16) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      state.flags = hold;\n      if ((state.flags & 0xff) !== Z_DEFLATED) {\n        strm.msg = 'unknown compression method';\n        state.mode = BAD;\n        break;\n      }\n      if (state.flags & 0xe000) {\n        strm.msg = 'unknown header flags set';\n        state.mode = BAD;\n        break;\n      }\n      if (state.head) {\n        state.head.text = ((hold >> 8) & 1);\n      }\n      if (state.flags & 0x0200) {\n        //=== CRC2(state.check, hold);\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        state.check = crc32(state.check, hbuf, 2, 0);\n        //===//\n      }\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = TIME;\n      /* falls through */\n    case TIME:\n      //=== NEEDBITS(32); */\n      while (bits < 32) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if (state.head) {\n        state.head.time = hold;\n      }\n      if (state.flags & 0x0200) {\n        //=== CRC4(state.check, hold)\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        hbuf[2] = (hold >>> 16) & 0xff;\n        hbuf[3] = (hold >>> 24) & 0xff;\n        state.check = crc32(state.check, hbuf, 4, 0);\n        //===\n      }\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = OS;\n      /* falls through */\n    case OS:\n      //=== NEEDBITS(16); */\n      while (bits < 16) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if (state.head) {\n        state.head.xflags = (hold & 0xff);\n        state.head.os = (hold >> 8);\n      }\n      if (state.flags & 0x0200) {\n        //=== CRC2(state.check, hold);\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        state.check = crc32(state.check, hbuf, 2, 0);\n        //===//\n      }\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = EXLEN;\n      /* falls through */\n    case EXLEN:\n      if (state.flags & 0x0400) {\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.length = hold;\n        if (state.head) {\n          state.head.extra_len = hold;\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n      }\n      else if (state.head) {\n        state.head.extra = null/*Z_NULL*/;\n      }\n      state.mode = EXTRA;\n      /* falls through */\n    case EXTRA:\n      if (state.flags & 0x0400) {\n        copy = state.length;\n        if (copy > have) { copy = have; }\n        if (copy) {\n          if (state.head) {\n            len = state.head.extra_len - state.length;\n            if (!state.head.extra) {\n              // Use untyped array for more conveniend processing later\n              state.head.extra = new Array(state.head.extra_len);\n            }\n            utils.arraySet(\n              state.head.extra,\n              input,\n              next,\n              // extra field is limited to 65536 bytes\n              // - no need for additional size check\n              copy,\n              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n              len\n            );\n            //zmemcpy(state.head.extra + len, next,\n            //        len + copy > state.head.extra_max ?\n            //        state.head.extra_max - len : copy);\n          }\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          state.length -= copy;\n        }\n        if (state.length) { break inf_leave; }\n      }\n      state.length = 0;\n      state.mode = NAME;\n      /* falls through */\n    case NAME:\n      if (state.flags & 0x0800) {\n        if (have === 0) { break inf_leave; }\n        copy = 0;\n        do {\n          // TODO: 2 or 1 bytes?\n          len = input[next + copy++];\n          /* use constant limit because in js we should not preallocate memory */\n          if (state.head && len &&\n              (state.length < 65536 /*state.head.name_max*/)) {\n            state.head.name += String.fromCharCode(len);\n          }\n        } while (len && copy < have);\n\n        if (state.flags & 0x0200) {\n          state.check = crc32(state.check, input, copy, next);\n        }\n        have -= copy;\n        next += copy;\n        if (len) { break inf_leave; }\n      }\n      else if (state.head) {\n        state.head.name = null;\n      }\n      state.length = 0;\n      state.mode = COMMENT;\n      /* falls through */\n    case COMMENT:\n      if (state.flags & 0x1000) {\n        if (have === 0) { break inf_leave; }\n        copy = 0;\n        do {\n          len = input[next + copy++];\n          /* use constant limit because in js we should not preallocate memory */\n          if (state.head && len &&\n              (state.length < 65536 /*state.head.comm_max*/)) {\n            state.head.comment += String.fromCharCode(len);\n          }\n        } while (len && copy < have);\n        if (state.flags & 0x0200) {\n          state.check = crc32(state.check, input, copy, next);\n        }\n        have -= copy;\n        next += copy;\n        if (len) { break inf_leave; }\n      }\n      else if (state.head) {\n        state.head.comment = null;\n      }\n      state.mode = HCRC;\n      /* falls through */\n    case HCRC:\n      if (state.flags & 0x0200) {\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (hold !== (state.check & 0xffff)) {\n          strm.msg = 'header crc mismatch';\n          state.mode = BAD;\n          break;\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n      }\n      if (state.head) {\n        state.head.hcrc = ((state.flags >> 9) & 1);\n        state.head.done = true;\n      }\n      strm.adler = state.check = 0;\n      state.mode = TYPE;\n      break;\n    case DICTID:\n      //=== NEEDBITS(32); */\n      while (bits < 32) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      strm.adler = state.check = zswap32(hold);\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = DICT;\n      /* falls through */\n    case DICT:\n      if (state.havedict === 0) {\n        //--- RESTORE() ---\n        strm.next_out = put;\n        strm.avail_out = left;\n        strm.next_in = next;\n        strm.avail_in = have;\n        state.hold = hold;\n        state.bits = bits;\n        //---\n        return Z_NEED_DICT;\n      }\n      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n      state.mode = TYPE;\n      /* falls through */\n    case TYPE:\n      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n      /* falls through */\n    case TYPEDO:\n      if (state.last) {\n        //--- BYTEBITS() ---//\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        state.mode = CHECK;\n        break;\n      }\n      //=== NEEDBITS(3); */\n      while (bits < 3) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      state.last = (hold & 0x01)/*BITS(1)*/;\n      //--- DROPBITS(1) ---//\n      hold >>>= 1;\n      bits -= 1;\n      //---//\n\n      switch ((hold & 0x03)/*BITS(2)*/) {\n      case 0:                             /* stored block */\n        //Tracev((stderr, \"inflate:     stored block%s\\n\",\n        //        state.last ? \" (last)\" : \"\"));\n        state.mode = STORED;\n        break;\n      case 1:                             /* fixed block */\n        fixedtables(state);\n        //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n        //        state.last ? \" (last)\" : \"\"));\n        state.mode = LEN_;             /* decode codes */\n        if (flush === Z_TREES) {\n          //--- DROPBITS(2) ---//\n          hold >>>= 2;\n          bits -= 2;\n          //---//\n          break inf_leave;\n        }\n        break;\n      case 2:                             /* dynamic block */\n        //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n        //        state.last ? \" (last)\" : \"\"));\n        state.mode = TABLE;\n        break;\n      case 3:\n        strm.msg = 'invalid block type';\n        state.mode = BAD;\n      }\n      //--- DROPBITS(2) ---//\n      hold >>>= 2;\n      bits -= 2;\n      //---//\n      break;\n    case STORED:\n      //--- BYTEBITS() ---// /* go to byte boundary */\n      hold >>>= bits & 7;\n      bits -= bits & 7;\n      //---//\n      //=== NEEDBITS(32); */\n      while (bits < 32) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n        strm.msg = 'invalid stored block lengths';\n        state.mode = BAD;\n        break;\n      }\n      state.length = hold & 0xffff;\n      //Tracev((stderr, \"inflate:       stored length %u\\n\",\n      //        state.length));\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = COPY_;\n      if (flush === Z_TREES) { break inf_leave; }\n      /* falls through */\n    case COPY_:\n      state.mode = COPY;\n      /* falls through */\n    case COPY:\n      copy = state.length;\n      if (copy) {\n        if (copy > have) { copy = have; }\n        if (copy > left) { copy = left; }\n        if (copy === 0) { break inf_leave; }\n        //--- zmemcpy(put, next, copy); ---\n        utils.arraySet(output, input, next, copy, put);\n        //---//\n        have -= copy;\n        next += copy;\n        left -= copy;\n        put += copy;\n        state.length -= copy;\n        break;\n      }\n      //Tracev((stderr, \"inflate:       stored end\\n\"));\n      state.mode = TYPE;\n      break;\n    case TABLE:\n      //=== NEEDBITS(14); */\n      while (bits < 14) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n      //--- DROPBITS(5) ---//\n      hold >>>= 5;\n      bits -= 5;\n      //---//\n      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n      //--- DROPBITS(5) ---//\n      hold >>>= 5;\n      bits -= 5;\n      //---//\n      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n      //--- DROPBITS(4) ---//\n      hold >>>= 4;\n      bits -= 4;\n      //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n      if (state.nlen > 286 || state.ndist > 30) {\n        strm.msg = 'too many length or distance symbols';\n        state.mode = BAD;\n        break;\n      }\n//#endif\n      //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n      state.have = 0;\n      state.mode = LENLENS;\n      /* falls through */\n    case LENLENS:\n      while (state.have < state.ncode) {\n        //=== NEEDBITS(3);\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n        //--- DROPBITS(3) ---//\n        hold >>>= 3;\n        bits -= 3;\n        //---//\n      }\n      while (state.have < 19) {\n        state.lens[order[state.have++]] = 0;\n      }\n      // We have separate tables & no pointers. 2 commented lines below not needed.\n      //state.next = state.codes;\n      //state.lencode = state.next;\n      // Switch to use dynamic table\n      state.lencode = state.lendyn;\n      state.lenbits = 7;\n\n      opts = { bits: state.lenbits };\n      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n      state.lenbits = opts.bits;\n\n      if (ret) {\n        strm.msg = 'invalid code lengths set';\n        state.mode = BAD;\n        break;\n      }\n      //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n      state.have = 0;\n      state.mode = CODELENS;\n      /* falls through */\n    case CODELENS:\n      while (state.have < state.nlen + state.ndist) {\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_val < 16) {\n          //--- DROPBITS(here.bits) ---//\n          hold >>>= here_bits;\n          bits -= here_bits;\n          //---//\n          state.lens[state.have++] = here_val;\n        }\n        else {\n          if (here_val === 16) {\n            //=== NEEDBITS(here.bits + 2);\n            n = here_bits + 2;\n            while (bits < n) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            if (state.have === 0) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            len = state.lens[state.have - 1];\n            copy = 3 + (hold & 0x03);//BITS(2);\n            //--- DROPBITS(2) ---//\n            hold >>>= 2;\n            bits -= 2;\n            //---//\n          }\n          else if (here_val === 17) {\n            //=== NEEDBITS(here.bits + 3);\n            n = here_bits + 3;\n            while (bits < n) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            len = 0;\n            copy = 3 + (hold & 0x07);//BITS(3);\n            //--- DROPBITS(3) ---//\n            hold >>>= 3;\n            bits -= 3;\n            //---//\n          }\n          else {\n            //=== NEEDBITS(here.bits + 7);\n            n = here_bits + 7;\n            while (bits < n) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            len = 0;\n            copy = 11 + (hold & 0x7f);//BITS(7);\n            //--- DROPBITS(7) ---//\n            hold >>>= 7;\n            bits -= 7;\n            //---//\n          }\n          if (state.have + copy > state.nlen + state.ndist) {\n            strm.msg = 'invalid bit length repeat';\n            state.mode = BAD;\n            break;\n          }\n          while (copy--) {\n            state.lens[state.have++] = len;\n          }\n        }\n      }\n\n      /* handle error breaks in while */\n      if (state.mode === BAD) { break; }\n\n      /* check for end-of-block code (better have one) */\n      if (state.lens[256] === 0) {\n        strm.msg = 'invalid code -- missing end-of-block';\n        state.mode = BAD;\n        break;\n      }\n\n      /* build code tables -- note: do not change the lenbits or distbits\n         values here (9 and 6) without reading the comments in inftrees.h\n         concerning the ENOUGH constants, which depend on those values */\n      state.lenbits = 9;\n\n      opts = { bits: state.lenbits };\n      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n      // We have separate tables & no pointers. 2 commented lines below not needed.\n      // state.next_index = opts.table_index;\n      state.lenbits = opts.bits;\n      // state.lencode = state.next;\n\n      if (ret) {\n        strm.msg = 'invalid literal/lengths set';\n        state.mode = BAD;\n        break;\n      }\n\n      state.distbits = 6;\n      //state.distcode.copy(state.codes);\n      // Switch to use dynamic table\n      state.distcode = state.distdyn;\n      opts = { bits: state.distbits };\n      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n      // We have separate tables & no pointers. 2 commented lines below not needed.\n      // state.next_index = opts.table_index;\n      state.distbits = opts.bits;\n      // state.distcode = state.next;\n\n      if (ret) {\n        strm.msg = 'invalid distances set';\n        state.mode = BAD;\n        break;\n      }\n      //Tracev((stderr, 'inflate:       codes ok\\n'));\n      state.mode = LEN_;\n      if (flush === Z_TREES) { break inf_leave; }\n      /* falls through */\n    case LEN_:\n      state.mode = LEN;\n      /* falls through */\n    case LEN:\n      if (have >= 6 && left >= 258) {\n        //--- RESTORE() ---\n        strm.next_out = put;\n        strm.avail_out = left;\n        strm.next_in = next;\n        strm.avail_in = have;\n        state.hold = hold;\n        state.bits = bits;\n        //---\n        inflate_fast(strm, _out);\n        //--- LOAD() ---\n        put = strm.next_out;\n        output = strm.output;\n        left = strm.avail_out;\n        next = strm.next_in;\n        input = strm.input;\n        have = strm.avail_in;\n        hold = state.hold;\n        bits = state.bits;\n        //---\n\n        if (state.mode === TYPE) {\n          state.back = -1;\n        }\n        break;\n      }\n      state.back = 0;\n      for (;;) {\n        here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n        here_bits = here >>> 24;\n        here_op = (here >>> 16) & 0xff;\n        here_val = here & 0xffff;\n\n        if (here_bits <= bits) { break; }\n        //--- PULLBYTE() ---//\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n        //---//\n      }\n      if (here_op && (here_op & 0xf0) === 0) {\n        last_bits = here_bits;\n        last_op = here_op;\n        last_val = here_val;\n        for (;;) {\n          here = state.lencode[last_val +\n                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((last_bits + here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        //--- DROPBITS(last.bits) ---//\n        hold >>>= last_bits;\n        bits -= last_bits;\n        //---//\n        state.back += last_bits;\n      }\n      //--- DROPBITS(here.bits) ---//\n      hold >>>= here_bits;\n      bits -= here_bits;\n      //---//\n      state.back += here_bits;\n      state.length = here_val;\n      if (here_op === 0) {\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        state.mode = LIT;\n        break;\n      }\n      if (here_op & 32) {\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.back = -1;\n        state.mode = TYPE;\n        break;\n      }\n      if (here_op & 64) {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break;\n      }\n      state.extra = here_op & 15;\n      state.mode = LENEXT;\n      /* falls through */\n    case LENEXT:\n      if (state.extra) {\n        //=== NEEDBITS(state.extra);\n        n = state.extra;\n        while (bits < n) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n        //--- DROPBITS(state.extra) ---//\n        hold >>>= state.extra;\n        bits -= state.extra;\n        //---//\n        state.back += state.extra;\n      }\n      //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n      state.was = state.length;\n      state.mode = DIST;\n      /* falls through */\n    case DIST:\n      for (;;) {\n        here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n        here_bits = here >>> 24;\n        here_op = (here >>> 16) & 0xff;\n        here_val = here & 0xffff;\n\n        if ((here_bits) <= bits) { break; }\n        //--- PULLBYTE() ---//\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n        //---//\n      }\n      if ((here_op & 0xf0) === 0) {\n        last_bits = here_bits;\n        last_op = here_op;\n        last_val = here_val;\n        for (;;) {\n          here = state.distcode[last_val +\n                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((last_bits + here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        //--- DROPBITS(last.bits) ---//\n        hold >>>= last_bits;\n        bits -= last_bits;\n        //---//\n        state.back += last_bits;\n      }\n      //--- DROPBITS(here.bits) ---//\n      hold >>>= here_bits;\n      bits -= here_bits;\n      //---//\n      state.back += here_bits;\n      if (here_op & 64) {\n        strm.msg = 'invalid distance code';\n        state.mode = BAD;\n        break;\n      }\n      state.offset = here_val;\n      state.extra = (here_op) & 15;\n      state.mode = DISTEXT;\n      /* falls through */\n    case DISTEXT:\n      if (state.extra) {\n        //=== NEEDBITS(state.extra);\n        n = state.extra;\n        while (bits < n) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n        //--- DROPBITS(state.extra) ---//\n        hold >>>= state.extra;\n        bits -= state.extra;\n        //---//\n        state.back += state.extra;\n      }\n//#ifdef INFLATE_STRICT\n      if (state.offset > state.dmax) {\n        strm.msg = 'invalid distance too far back';\n        state.mode = BAD;\n        break;\n      }\n//#endif\n      //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n      state.mode = MATCH;\n      /* falls through */\n    case MATCH:\n      if (left === 0) { break inf_leave; }\n      copy = _out - left;\n      if (state.offset > copy) {         /* copy from window */\n        copy = state.offset - copy;\n        if (copy > state.whave) {\n          if (state.sane) {\n            strm.msg = 'invalid distance too far back';\n            state.mode = BAD;\n            break;\n          }\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n        }\n        if (copy > state.wnext) {\n          copy -= state.wnext;\n          from = state.wsize - copy;\n        }\n        else {\n          from = state.wnext - copy;\n        }\n        if (copy > state.length) { copy = state.length; }\n        from_source = state.window;\n      }\n      else {                              /* copy from output */\n        from_source = output;\n        from = put - state.offset;\n        copy = state.length;\n      }\n      if (copy > left) { copy = left; }\n      left -= copy;\n      state.length -= copy;\n      do {\n        output[put++] = from_source[from++];\n      } while (--copy);\n      if (state.length === 0) { state.mode = LEN; }\n      break;\n    case LIT:\n      if (left === 0) { break inf_leave; }\n      output[put++] = state.length;\n      left--;\n      state.mode = LEN;\n      break;\n    case CHECK:\n      if (state.wrap) {\n        //=== NEEDBITS(32);\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          // Use '|' insdead of '+' to make sure that result is signed\n          hold |= input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        _out -= left;\n        strm.total_out += _out;\n        state.total += _out;\n        if (_out) {\n          strm.adler = state.check =\n              /*UPDATE(state.check, put - _out, _out);*/\n              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n        }\n        _out = left;\n        // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n        if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n          strm.msg = 'incorrect data check';\n          state.mode = BAD;\n          break;\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n      }\n      state.mode = LENGTH;\n      /* falls through */\n    case LENGTH:\n      if (state.wrap && state.flags) {\n        //=== NEEDBITS(32);\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (hold !== (state.total & 0xffffffff)) {\n          strm.msg = 'incorrect length check';\n          state.mode = BAD;\n          break;\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n      }\n      state.mode = DONE;\n      /* falls through */\n    case DONE:\n      ret = Z_STREAM_END;\n      break inf_leave;\n    case BAD:\n      ret = Z_DATA_ERROR;\n      break inf_leave;\n    case MEM:\n      return Z_MEM_ERROR;\n    case SYNC:\n      /* falls through */\n    default:\n      return Z_STREAM_ERROR;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n      state.mode = MEM;\n      return Z_MEM_ERROR;\n    }\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap && _out) {\n    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n}\n\nfunction inflateEnd(strm) {\n\n  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  var state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n  var state;\n\n  /* check state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var state;\n  var dictid;\n  var ret;\n\n  /* check state */\n  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n  var bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  var len = 0;               /* a code's length in bits */\n  var sym = 0;               /* index of code symbols */\n  var min = 0, max = 0;          /* minimum and maximum code lengths */\n  var root = 0;              /* number of index bits for root table */\n  var curr = 0;              /* number of index bits for current table */\n  var drop = 0;              /* code bits to drop for sub-table */\n  var left = 0;                   /* number of prefix codes available */\n  var used = 0;              /* code entries in table used */\n  var huff = 0;              /* Huffman code */\n  var incr;              /* for incrementing code, index */\n  var fill;              /* index for replicating entries */\n  var low;               /* low bits for current root entry */\n  var mask;              /* mask for low root bits */\n  var next;             /* next available space in table */\n  var base = null;     /* base value table to use */\n  var base_index = 0;\n//  var shoextra;    /* extra bits table to use */\n  var end;                    /* use base and extra for symbol > end */\n  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  var extra = null;\n  var extra_index = 0;\n\n  var here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES) {\n    base = extra = work;    /* dummy value--not used */\n    end = 19;\n\n  } else if (type === LENS) {\n    base = lbase;\n    base_index -= 257;\n    extra = lext;\n    extra_index -= 257;\n    end = 256;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    end = -1;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS && used > ENOUGH_LENS) ||\n    (type === DISTS && used > ENOUGH_DISTS)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] < end) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] > end) {\n      here_op = extra[extra_index + work[sym]];\n      here_val = base[base_index + work[sym]];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n\n},{\"../utils/common\":41}],51:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n},{}],52:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED          = 1;\n//var Z_HUFFMAN_ONLY      = 2;\n//var Z_RLE               = 3;\nvar Z_FIXED               = 4;\n//var Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY              = 0;\nvar Z_TEXT                = 1;\n//var Z_ASCII             = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree  = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree  = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code    = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length   = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist     = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\nexports._tr_init  = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block  = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n},{\"../utils/common\":41}],53:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n},{}],54:[function(require,module,exports){\n(function (global){\n(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}]},{},[10])(10)\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\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', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","//! 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 : 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 : 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 : 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 : 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 : 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 : 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","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/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 NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar 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/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar 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","'use strict';\nvar 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/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; })() || this || Function('return this')();\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/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 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","'use strict';\nvar 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.33.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar 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","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar 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","'use strict';\nvar 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/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar 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","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\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","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar 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/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar 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","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar 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","'use strict';\nvar 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 classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar 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","'use strict';\nvar 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/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar 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/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar 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 new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar 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","'use strict';\nmodule.exports = {};\n","'use strict';\nvar path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n  return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar 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","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar 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 new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar 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 new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar 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 new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar 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","'use strict';\nvar 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/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/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 new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nmodule.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 NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\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 new 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  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(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","'use strict';\nvar 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","'use strict';\nvar 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","'use strict';\nmodule.exports = {};\n","'use strict';\nvar 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/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/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","'use strict';\nvar 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","'use strict';\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","'use strict';\nvar 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/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","'use strict';\nvar 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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\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","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n  var Wrapper = function (a, b, c) {\n    if (this instanceof Wrapper) {\n      switch (arguments.length) {\n        case 0: return new NativeConstructor();\n        case 1: return new NativeConstructor(a);\n        case 2: return new NativeConstructor(a, b);\n      } return new NativeConstructor(a, b, c);\n    } return apply(NativeConstructor, this, arguments);\n  };\n  Wrapper.prototype = NativeConstructor.prototype;\n  return Wrapper;\n};\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 PROTO = options.proto;\n\n  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n  var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n  var targetPrototype = target.prototype;\n\n  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n  for (key in source) {\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contains in native\n    USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n    targetProperty = target[key];\n\n    if (USE_NATIVE) if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(nativeSource, key);\n      nativeProperty = descriptor && descriptor.value;\n    } else nativeProperty = nativeSource[key];\n\n    // export native or implementation\n    sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n    if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n    // bind methods to global for calling from export context\n    if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n    // wrap global constructors for prevent changes in this version\n    else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n    // make static versions for prototype methods\n    else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n    // default case\n    else resultProperty = sourceProperty;\n\n    // add a flag to not completely full polyfills\n    if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(resultProperty, 'sham', true);\n    }\n\n    createNonEnumerableProperty(target, key, resultProperty);\n\n    if (PROTO) {\n      VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n      if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n        createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n      }\n      // export virtual prototype methods\n      createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n      // export real prototype methods\n      if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n        createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n      }\n    }\n  }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/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","'use strict';\nvar 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","'use strict';\nvar 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","'use strict';\nvar 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","'use strict';\nvar 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","'use strict';\nvar 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","'use strict';\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","'use strict';\nvar 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/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar 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/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","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\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/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","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\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/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 = !isObject(IteratorPrototype) || 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","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar 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/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","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n  if (options && options.enumerable) target[key] = value;\n  else createNonEnumerableProperty(target, key, value);\n  return target;\n};\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","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n  if (it) {\n    var target = STATIC ? it : it.prototype;\n    if (!hasOwn(target, TO_STRING_TAG)) {\n      defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n    }\n    if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n      createNonEnumerableProperty(target, 'toString', toString);\n    }\n  }\n};\n","'use strict';\nmodule.exports = {};\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar 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 new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\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/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    setter = uncurryThisAccessor(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 $ = 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/iterator-create-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 && KIND in IterablePrototype) return IterablePrototype[KIND];\n\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    }\n\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","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n","'use strict';\nvar 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 anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","'use strict';\nvar 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","'use strict';\nvar 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","'use strict';\nvar 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.test(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","'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","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar 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 new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","'use strict';\nvar 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/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  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\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","'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","'use strict';\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","'use strict';\nvar parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/array/from\");","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return createIterResultObject(undefined, true);\n  }\n  switch (kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n","'use strict';\nrequire('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n    createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n  }\n  Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","'use strict';\nvar parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../full/get-iterator-method');\n","module.exports = require(\"core-js-pure/features/get-iterator-method\");","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n","'use strict';\nrequire('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n  return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","'use strict';\nvar parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/object/define-property');\n","'use strict';\nvar parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nvar 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","'use strict';\nvar 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 fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","'use strict';\nvar 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/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar 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  var n = 0;\n  for (; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n","'use strict';\n/* eslint-disable es/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","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n","'use strict';\nvar 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","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = global.RangeError;\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      var descriptor = createPropertyDescriptor(1, value);\n      try {\n        setSymbolDescriptor(this, tag, descriptor);\n      } catch (error) {\n        if (!(error instanceof RangeError)) throw error;\n        fallbackDefineProperty(this, tag, descriptor);\n      }\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    defineBuiltInAccessor(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n  if (isCallable(replacer)) return replacer;\n  if (!isArray(replacer)) return;\n  var rawLength = replacer.length;\n  var keys = [];\n  for (var i = 0; i < rawLength; i++) {\n    var element = replacer[i];\n    if (typeof element == 'string') push(keys, element);\n    else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n  }\n  var keysLength = keys.length;\n  var root = true;\n  return function (key, value) {\n    if (root) {\n      root = false;\n      return value;\n    }\n    if (isArray(this)) return value;\n    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n  };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')('stringify detection');\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) !== '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) !== '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = getReplacerFunction(replacer);\n  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n  args[1] = function (key, value) {\n    // some old implementations (like WebKit) could pass numbers as keys\n    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n    if (!isSymbol(value)) return value;\n  };\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","'use strict';\nvar parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar METADATA = wellKnownSymbol('metadata');\nvar FunctionPrototype = Function.prototype;\n\n// Function.prototype[@@metadata]\n// https://github.com/tc39/proposal-decorator-metadata\nif (FunctionPrototype[METADATA] === undefined) {\n  defineProperty(FunctionPrototype, METADATA, {\n    value: null\n  });\n}\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n","'use strict';\nvar parent = require('../../stable/symbol');\n\nrequire('../../modules/esnext.function.metadata');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.metadata');\n\nmodule.exports = parent;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Symbol = getBuiltIn('Symbol');\nvar keyFor = Symbol.keyFor;\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\nmodule.exports = Symbol.isRegisteredSymbol || function isRegisteredSymbol(value) {\n  try {\n    return keyFor(thisSymbolValue(value)) !== undefined;\n  } catch (error) {\n    return false;\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true }, {\n  isRegisteredSymbol: isRegisteredSymbol\n});\n","'use strict';\nvar shared = require('../internals/shared');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isSymbol = require('../internals/is-symbol');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar Symbol = getBuiltIn('Symbol');\nvar $isWellKnownSymbol = Symbol.isWellKnownSymbol;\nvar getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames');\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\nvar WellKnownSymbolsStore = shared('wks');\n\nfor (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) {\n  // some old engines throws on access to some keys like `arguments` or `caller`\n  try {\n    var symbolKey = symbolKeys[i];\n    if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);\n  } catch (error) { /* empty */ }\n}\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\nmodule.exports = function isWellKnownSymbol(value) {\n  if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true;\n  try {\n    var symbol = thisSymbolValue(value);\n    for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) {\n      // eslint-disable-next-line eqeqeq -- polyfilled symbols case\n      if (WellKnownSymbolsStore[keys[j]] == symbol) return true;\n    }\n  } catch (error) { /* empty */ }\n  return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, forced: true }, {\n  isWellKnownSymbol: isWellKnownSymbol\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegistered` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true, name: 'isRegisteredSymbol' }, {\n  isRegistered: isRegisteredSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnown` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, name: 'isWellKnownSymbol', forced: true }, {\n  isWellKnown: isWellKnownSymbol\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\ndefineWellKnownSymbol('replaceAll');\n","'use strict';\nvar parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.is-registered-symbol');\nrequire('../../modules/esnext.symbol.is-well-known-symbol');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.is-registered');\nrequire('../../modules/esnext.symbol.is-well-known');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/symbol');\n","'use strict';\nvar parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","'use strict';\nmodule.exports = require('../../full/symbol/iterator');\n","'use strict';\nvar parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _Symbol$iterator from \"core-js-pure/features/symbol/iterator.js\";\nexport default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}","'use strict';\nrequire('../../modules/es.date.to-primitive');\nrequire('../../modules/es.symbol.to-primitive');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('toPrimitive');\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nimport _Symbol$toPrimitive from \"core-js-pure/features/symbol/to-primitive.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[_Symbol$toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    _Object$defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  _Object$defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n","'use strict';\nrequire('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n","'use strict';\nvar parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","'use strict';\nvar path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n  return path[CONSTRUCTOR + 'Prototype'];\n};\n","'use strict';\nrequire('../../../modules/es.array.push');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').push;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/push');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.push;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.push) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/push');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/instance/push');\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === $Array || Constructor === undefined) {\n        return nativeSlice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.slice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/instance/slice');\n","'use strict';\nvar parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","import _sliceInstanceProperty from \"core-js-pure/features/instance/slice.js\";\nimport _Array$from from \"core-js-pure/features/array/from.js\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  var _context;\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import _Array$isArray from \"core-js-pure/features/array/is-array.js\";\nexport default function _arrayWithHoles(arr) {\n  if (_Array$isArray(arr)) return arr;\n}","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _getIteratorMethod from \"core-js-pure/features/get-iterator-method.js\";\nimport _pushInstanceProperty from \"core-js-pure/features/instance/push.js\";\nexport default function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof _Symbol && _getIteratorMethod(r) || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (_pushInstanceProperty(a).call(a, e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import _Array$isArray from \"core-js-pure/features/array/is-array.js\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _getIteratorMethod from \"core-js-pure/features/get-iterator-method.js\";\nimport _Array$from from \"core-js-pure/features/array/from.js\";\nexport default function _iterableToArray(iter) {\n  if (typeof _Symbol !== \"undefined\" && _getIteratorMethod(iter) != null || iter[\"@@iterator\"] != null) return _Array$from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","module.exports = require(\"core-js-pure/stable/symbol\");","'use strict';\nrequire('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.concat;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/slice\");","'use strict';\nvar 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","'use strict';\nvar $ = 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","'use strict';\nrequire('../../modules/es.reflect.own-keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.ownKeys;\n","module.exports = require(\"core-js-pure/stable/array/is-array\");","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.map;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n","'use strict';\nrequire('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Date = Date;\nvar thisTimeValue = uncurryThis($Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return thisTimeValue(new $Date());\n  }\n});\n","'use strict';\nrequire('../../modules/es.date.now');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Date.now;\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    var list = [];\n    var i = 0;\n    for (; 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\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\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","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n","'use strict';\nrequire('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n  var own = it.bind;\n  return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/bind\");","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n  forEach: forEach\n});\n","'use strict';\nrequire('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n","'use strict';\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/for-each');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.forEach;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n","'use strict';\nvar parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/for-each\");","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.reverse');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reverse;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/reverse');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.reverse;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reverse) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/reverse');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/reverse\");","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.splice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').splice;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/splice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.splice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.splice) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/splice');\n\nmodule.exports = parent;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol('assign detection');\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","'use strict';\nrequire('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  // eslint-disable-next-line es/no-array-prototype-includes -- detection\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nrequire('../../../modules/es.array.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').includes;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","'use strict';\nrequire('../../../modules/es.string.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').includes;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar arrayMethod = require('../array/virtual/includes');\nvar stringMethod = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.includes;\n  if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.includes)) return arrayMethod;\n  if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.includes)) {\n    return stringMethod;\n  } return own;\n};\n","'use strict';\nvar parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n","'use strict';\nrequire('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n","'use strict';\nvar parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/object/get-prototype-of\");","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.filter;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-create -- safe\n  var O = Object.create(null);\n  O[2] = 2;\n  return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","'use strict';\nrequire('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt !== $parseInt }, {\n  parseInt: $parseInt\n});\n","'use strict';\nrequire('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.indexOf;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n","'use strict';\nrequire('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n","'use strict';\nrequire('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n  return Object.create(P, D);\n};\n","'use strict';\nvar parent = require('../../es/object/create');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/object/create\");","'use strict';\nrequire('../../modules/es.json.stringify');\nvar path = require('../../internals/path');\nvar apply = require('../../internals/function-apply');\n\n// eslint-disable-next-line es/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n  return apply(path.JSON.stringify, null, arguments);\n};\n","'use strict';\nvar parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n","'use strict';\n/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n  var version = global.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setInterval = schedulersFix(global.setInterval, true);\n\n// Bun / IE9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setTimeout = schedulersFix(global.setTimeout, true);\n\n// Bun / IE9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n","'use strict';\nrequire('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setTimeout;\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nrequire('../../../modules/es.array.fill');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').fill;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/fill');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.fill;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.fill) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/fill');\n\nmodule.exports = parent;\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n\r\n  // Remove event specific arrays for event types that no\r\n  // one is subscribed for to avoid memory leak.\r\n  if (callbacks.length === 0) {\r\n    delete this._callbacks['$' + event];\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  var args = new Array(arguments.length - 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  for (var i = 1; i < arguments.length; i++) {\r\n    args[i - 1] = arguments[i];\r\n  }\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n","/*! Hammer.JS - v2.0.17-rc - 2019-12-16\n * http://naver.github.io/egjs\n *\n * Forked By Naver egjs\n * Copyright (c) hammerjs\n * Licensed under the MIT license */\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\n\nif (typeof Object.assign !== 'function') {\n  assign = function assign(target) {\n    if (target === undefined || target === null) {\n      throw new TypeError('Cannot convert undefined or null to object');\n    }\n\n    var output = Object(target);\n\n    for (var index = 1; index < arguments.length; index++) {\n      var source = arguments[index];\n\n      if (source !== undefined && source !== null) {\n        for (var nextKey in source) {\n          if (source.hasOwnProperty(nextKey)) {\n            output[nextKey] = source[nextKey];\n          }\n        }\n      }\n    }\n\n    return output;\n  };\n} else {\n  assign = Object.assign;\n}\n\nvar assign$1 = assign;\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = typeof document === \"undefined\" ? {\n  style: {}\n} : document.createElement('div');\nvar TYPE_FUNCTION = 'function';\nvar round = Math.round,\n    abs = Math.abs;\nvar now = Date.now;\n\n/**\n * @private\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n\nfunction prefixed(obj, property) {\n  var prefix;\n  var prop;\n  var camelProp = property[0].toUpperCase() + property.slice(1);\n  var i = 0;\n\n  while (i < VENDOR_PREFIXES.length) {\n    prefix = VENDOR_PREFIXES[i];\n    prop = prefix ? prefix + camelProp : property;\n\n    if (prop in obj) {\n      return prop;\n    }\n\n    i++;\n  }\n\n  return undefined;\n}\n\n/* eslint-disable no-new-func, no-nested-ternary */\nvar win;\n\nif (typeof window === \"undefined\") {\n  // window is undefined in node.js\n  win = {};\n} else {\n  win = window;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\nfunction getTouchActionProps() {\n  if (!NATIVE_TOUCH_ACTION) {\n    return false;\n  }\n\n  var touchMap = {};\n  var cssSupports = win.CSS && win.CSS.supports;\n  ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n    // If css.supports is not supported but there is native touch-action assume it supports\n    // all values. This is the case for IE 10 and 11.\n    return touchMap[val] = cssSupports ? win.CSS.supports('touch-action', val) : true;\n  });\n  return touchMap;\n}\n\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\nvar SUPPORT_TOUCH = 'ontouchstart' in win;\nvar SUPPORT_POINTER_EVENTS = prefixed(win, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\nvar COMPUTE_INTERVAL = 25;\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * @private\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n  var i;\n\n  if (!obj) {\n    return;\n  }\n\n  if (obj.forEach) {\n    obj.forEach(iterator, context);\n  } else if (obj.length !== undefined) {\n    i = 0;\n\n    while (i < obj.length) {\n      iterator.call(context, obj[i], i, obj);\n      i++;\n    }\n  } else {\n    for (i in obj) {\n      obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n    }\n  }\n}\n\n/**\n * @private\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n\nfunction boolOrFn(val, args) {\n  if (typeof val === TYPE_FUNCTION) {\n    return val.apply(args ? args[0] || undefined : undefined, args);\n  }\n\n  return val;\n}\n\n/**\n * @private\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n  return str.indexOf(find) > -1;\n}\n\n/**\n * @private\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n\nfunction cleanTouchActions(actions) {\n  // none\n  if (inStr(actions, TOUCH_ACTION_NONE)) {\n    return TOUCH_ACTION_NONE;\n  }\n\n  var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n  var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); // if both pan-x and pan-y are set (different recognizers\n  // for different directions, e.g. horizontal pan but vertical swipe?)\n  // we need none (as otherwise with pan-x pan-y combined none of these\n  // recognizers will work, since the browser would handle all panning\n\n  if (hasPanX && hasPanY) {\n    return TOUCH_ACTION_NONE;\n  } // pan-x OR pan-y\n\n\n  if (hasPanX || hasPanY) {\n    return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n  } // manipulation\n\n\n  if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n    return TOUCH_ACTION_MANIPULATION;\n  }\n\n  return TOUCH_ACTION_AUTO;\n}\n\n/**\n * @private\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n\nvar TouchAction =\n/*#__PURE__*/\nfunction () {\n  function TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n  }\n  /**\n   * @private\n   * set the touchAction value on the element or enable the polyfill\n   * @param {String} value\n   */\n\n\n  var _proto = TouchAction.prototype;\n\n  _proto.set = function set(value) {\n    // find out the touch-action by the event handlers\n    if (value === TOUCH_ACTION_COMPUTE) {\n      value = this.compute();\n    }\n\n    if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n      this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n    }\n\n    this.actions = value.toLowerCase().trim();\n  };\n  /**\n   * @private\n   * just re-set the touchAction value\n   */\n\n\n  _proto.update = function update() {\n    this.set(this.manager.options.touchAction);\n  };\n  /**\n   * @private\n   * compute the value for the touchAction property based on the recognizer's settings\n   * @returns {String} value\n   */\n\n\n  _proto.compute = function compute() {\n    var actions = [];\n    each(this.manager.recognizers, function (recognizer) {\n      if (boolOrFn(recognizer.options.enable, [recognizer])) {\n        actions = actions.concat(recognizer.getTouchAction());\n      }\n    });\n    return cleanTouchActions(actions.join(' '));\n  };\n  /**\n   * @private\n   * this method is called on each input cycle and provides the preventing of the browser behavior\n   * @param {Object} input\n   */\n\n\n  _proto.preventDefaults = function preventDefaults(input) {\n    var srcEvent = input.srcEvent;\n    var direction = input.offsetDirection; // if the touch action did prevented once this session\n\n    if (this.manager.session.prevented) {\n      srcEvent.preventDefault();\n      return;\n    }\n\n    var actions = this.actions;\n    var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n    if (hasNone) {\n      // do not prevent defaults if this is a tap gesture\n      var isTapPointer = input.pointers.length === 1;\n      var isTapMovement = input.distance < 2;\n      var isTapTouchTime = input.deltaTime < 250;\n\n      if (isTapPointer && isTapMovement && isTapTouchTime) {\n        return;\n      }\n    }\n\n    if (hasPanX && hasPanY) {\n      // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n      return;\n    }\n\n    if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n      return this.preventSrc(srcEvent);\n    }\n  };\n  /**\n   * @private\n   * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n   * @param {Object} srcEvent\n   */\n\n\n  _proto.preventSrc = function preventSrc(srcEvent) {\n    this.manager.session.prevented = true;\n    srcEvent.preventDefault();\n  };\n\n  return TouchAction;\n}();\n\n/**\n * @private\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n  while (node) {\n    if (node === parent) {\n      return true;\n    }\n\n    node = node.parentNode;\n  }\n\n  return false;\n}\n\n/**\n * @private\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n\nfunction getCenter(pointers) {\n  var pointersLength = pointers.length; // no need to loop when only one touch\n\n  if (pointersLength === 1) {\n    return {\n      x: round(pointers[0].clientX),\n      y: round(pointers[0].clientY)\n    };\n  }\n\n  var x = 0;\n  var y = 0;\n  var i = 0;\n\n  while (i < pointersLength) {\n    x += pointers[i].clientX;\n    y += pointers[i].clientY;\n    i++;\n  }\n\n  return {\n    x: round(x / pointersLength),\n    y: round(y / pointersLength)\n  };\n}\n\n/**\n * @private\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n\nfunction simpleCloneInputData(input) {\n  // make a simple copy of the pointers because we will get a reference if we don't\n  // we only need clientXY for the calculations\n  var pointers = [];\n  var i = 0;\n\n  while (i < input.pointers.length) {\n    pointers[i] = {\n      clientX: round(input.pointers[i].clientX),\n      clientY: round(input.pointers[i].clientY)\n    };\n    i++;\n  }\n\n  return {\n    timeStamp: now(),\n    pointers: pointers,\n    center: getCenter(pointers),\n    deltaX: input.deltaX,\n    deltaY: input.deltaY\n  };\n}\n\n/**\n * @private\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n\nfunction getDistance(p1, p2, props) {\n  if (!props) {\n    props = PROPS_XY;\n  }\n\n  var x = p2[props[0]] - p1[props[0]];\n  var y = p2[props[1]] - p1[props[1]];\n  return Math.sqrt(x * x + y * y);\n}\n\n/**\n * @private\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n\nfunction getAngle(p1, p2, props) {\n  if (!props) {\n    props = PROPS_XY;\n  }\n\n  var x = p2[props[0]] - p1[props[0]];\n  var y = p2[props[1]] - p1[props[1]];\n  return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * @private\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n\nfunction getDirection(x, y) {\n  if (x === y) {\n    return DIRECTION_NONE;\n  }\n\n  if (abs(x) >= abs(y)) {\n    return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n  }\n\n  return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\nfunction computeDeltaXY(session, input) {\n  var center = input.center; // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session;\n  // jscs throwing error on defalut destructured values and without defaults tests fail\n\n  var offset = session.offsetDelta || {};\n  var prevDelta = session.prevDelta || {};\n  var prevInput = session.prevInput || {};\n\n  if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n    prevDelta = session.prevDelta = {\n      x: prevInput.deltaX || 0,\n      y: prevInput.deltaY || 0\n    };\n    offset = session.offsetDelta = {\n      x: center.x,\n      y: center.y\n    };\n  }\n\n  input.deltaX = prevDelta.x + (center.x - offset.x);\n  input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * @private\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n  return {\n    x: x / deltaTime || 0,\n    y: y / deltaTime || 0\n  };\n}\n\n/**\n * @private\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n\nfunction getScale(start, end) {\n  return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\n/**\n * @private\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n\nfunction getRotation(start, end) {\n  return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * @private\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n\nfunction computeIntervalInputData(session, input) {\n  var last = session.lastInterval || input;\n  var deltaTime = input.timeStamp - last.timeStamp;\n  var velocity;\n  var velocityX;\n  var velocityY;\n  var direction;\n\n  if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n    var deltaX = input.deltaX - last.deltaX;\n    var deltaY = input.deltaY - last.deltaY;\n    var v = getVelocity(deltaTime, deltaX, deltaY);\n    velocityX = v.x;\n    velocityY = v.y;\n    velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n    direction = getDirection(deltaX, deltaY);\n    session.lastInterval = input;\n  } else {\n    // use latest velocity info if it doesn't overtake a minimum period\n    velocity = last.velocity;\n    velocityX = last.velocityX;\n    velocityY = last.velocityY;\n    direction = last.direction;\n  }\n\n  input.velocity = velocity;\n  input.velocityX = velocityX;\n  input.velocityY = velocityY;\n  input.direction = direction;\n}\n\n/**\n* @private\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n\nfunction computeInputData(manager, input) {\n  var session = manager.session;\n  var pointers = input.pointers;\n  var pointersLength = pointers.length; // store the first input to calculate the distance and direction\n\n  if (!session.firstInput) {\n    session.firstInput = simpleCloneInputData(input);\n  } // to compute scale and rotation we need to store the multiple touches\n\n\n  if (pointersLength > 1 && !session.firstMultiple) {\n    session.firstMultiple = simpleCloneInputData(input);\n  } else if (pointersLength === 1) {\n    session.firstMultiple = false;\n  }\n\n  var firstInput = session.firstInput,\n      firstMultiple = session.firstMultiple;\n  var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n  var center = input.center = getCenter(pointers);\n  input.timeStamp = now();\n  input.deltaTime = input.timeStamp - firstInput.timeStamp;\n  input.angle = getAngle(offsetCenter, center);\n  input.distance = getDistance(offsetCenter, center);\n  computeDeltaXY(session, input);\n  input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n  var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n  input.overallVelocityX = overallVelocity.x;\n  input.overallVelocityY = overallVelocity.y;\n  input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n  input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n  input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n  input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n  computeIntervalInputData(session, input); // find the correct target\n\n  var target = manager.element;\n  var srcEvent = input.srcEvent;\n  var srcEventTarget;\n\n  if (srcEvent.composedPath) {\n    srcEventTarget = srcEvent.composedPath()[0];\n  } else if (srcEvent.path) {\n    srcEventTarget = srcEvent.path[0];\n  } else {\n    srcEventTarget = srcEvent.target;\n  }\n\n  if (hasParent(srcEventTarget, target)) {\n    target = srcEventTarget;\n  }\n\n  input.target = target;\n}\n\n/**\n * @private\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n\nfunction inputHandler(manager, eventType, input) {\n  var pointersLen = input.pointers.length;\n  var changedPointersLen = input.changedPointers.length;\n  var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n  var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n  input.isFirst = !!isFirst;\n  input.isFinal = !!isFinal;\n\n  if (isFirst) {\n    manager.session = {};\n  } // source event is the normalized value of the domEvents\n  // like 'touchstart, mouseup, pointerdown'\n\n\n  input.eventType = eventType; // compute scale, rotation etc\n\n  computeInputData(manager, input); // emit secret event\n\n  manager.emit('hammer.input', input);\n  manager.recognize(input);\n  manager.session.prevInput = input;\n}\n\n/**\n * @private\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n  return str.trim().split(/\\s+/g);\n}\n\n/**\n * @private\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n\nfunction addEventListeners(target, types, handler) {\n  each(splitStr(types), function (type) {\n    target.addEventListener(type, handler, false);\n  });\n}\n\n/**\n * @private\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n\nfunction removeEventListeners(target, types, handler) {\n  each(splitStr(types), function (type) {\n    target.removeEventListener(type, handler, false);\n  });\n}\n\n/**\n * @private\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n  var doc = element.ownerDocument || element;\n  return doc.defaultView || doc.parentWindow || window;\n}\n\n/**\n * @private\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n\nvar Input =\n/*#__PURE__*/\nfunction () {\n  function Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget; // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n\n    this.domHandler = function (ev) {\n      if (boolOrFn(manager.options.enable, [manager])) {\n        self.handler(ev);\n      }\n    };\n\n    this.init();\n  }\n  /**\n   * @private\n   * should handle the inputEvent data and trigger the callback\n   * @virtual\n   */\n\n\n  var _proto = Input.prototype;\n\n  _proto.handler = function handler() {};\n  /**\n   * @private\n   * bind the events\n   */\n\n\n  _proto.init = function init() {\n    this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n    this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n    this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n  };\n  /**\n   * @private\n   * unbind the events\n   */\n\n\n  _proto.destroy = function destroy() {\n    this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n    this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n    this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n  };\n\n  return Input;\n}();\n\n/**\n * @private\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n  if (src.indexOf && !findByKey) {\n    return src.indexOf(find);\n  } else {\n    var i = 0;\n\n    while (i < src.length) {\n      if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n        // do not use === here, test fails\n        return i;\n      }\n\n      i++;\n    }\n\n    return -1;\n  }\n}\n\nvar POINTER_INPUT_MAP = {\n  pointerdown: INPUT_START,\n  pointermove: INPUT_MOVE,\n  pointerup: INPUT_END,\n  pointercancel: INPUT_CANCEL,\n  pointerout: INPUT_CANCEL\n}; // in IE10 the pointer types is defined as an enum\n\nvar IE10_POINTER_TYPE_ENUM = {\n  2: INPUT_TYPE_TOUCH,\n  3: INPUT_TYPE_PEN,\n  4: INPUT_TYPE_MOUSE,\n  5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n\n};\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive\n\nif (win.MSPointerEvent && !win.PointerEvent) {\n  POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n  POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n/**\n * @private\n * Pointer events input\n * @constructor\n * @extends Input\n */\n\n\nvar PointerEventInput =\n/*#__PURE__*/\nfunction (_Input) {\n  _inheritsLoose(PointerEventInput, _Input);\n\n  function PointerEventInput() {\n    var _this;\n\n    var proto = PointerEventInput.prototype;\n    proto.evEl = POINTER_ELEMENT_EVENTS;\n    proto.evWin = POINTER_WINDOW_EVENTS;\n    _this = _Input.apply(this, arguments) || this;\n    _this.store = _this.manager.session.pointerEvents = [];\n    return _this;\n  }\n  /**\n   * @private\n   * handle mouse events\n   * @param {Object} ev\n   */\n\n\n  var _proto = PointerEventInput.prototype;\n\n  _proto.handler = function handler(ev) {\n    var store = this.store;\n    var removePointer = false;\n    var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n    var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n    var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n    var isTouch = pointerType === INPUT_TYPE_TOUCH; // get index of the event in the store\n\n    var storeIndex = inArray(store, ev.pointerId, 'pointerId'); // start and mouse must be down\n\n    if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n      if (storeIndex < 0) {\n        store.push(ev);\n        storeIndex = store.length - 1;\n      }\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n      removePointer = true;\n    } // it not found, so the pointer hasn't been down (so it's probably a hover)\n\n\n    if (storeIndex < 0) {\n      return;\n    } // update the event in the store\n\n\n    store[storeIndex] = ev;\n    this.callback(this.manager, eventType, {\n      pointers: store,\n      changedPointers: [ev],\n      pointerType: pointerType,\n      srcEvent: ev\n    });\n\n    if (removePointer) {\n      // remove from the store\n      store.splice(storeIndex, 1);\n    }\n  };\n\n  return PointerEventInput;\n}(Input);\n\n/**\n * @private\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n  return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * @private\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n\nfunction uniqueArray(src, key, sort) {\n  var results = [];\n  var values = [];\n  var i = 0;\n\n  while (i < src.length) {\n    var val = key ? src[i][key] : src[i];\n\n    if (inArray(values, val) < 0) {\n      results.push(src[i]);\n    }\n\n    values[i] = val;\n    i++;\n  }\n\n  if (sort) {\n    if (!key) {\n      results = results.sort();\n    } else {\n      results = results.sort(function (a, b) {\n        return a[key] > b[key];\n      });\n    }\n  }\n\n  return results;\n}\n\nvar TOUCH_INPUT_MAP = {\n  touchstart: INPUT_START,\n  touchmove: INPUT_MOVE,\n  touchend: INPUT_END,\n  touchcancel: INPUT_CANCEL\n};\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n/**\n * @private\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n\nvar TouchInput =\n/*#__PURE__*/\nfunction (_Input) {\n  _inheritsLoose(TouchInput, _Input);\n\n  function TouchInput() {\n    var _this;\n\n    TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS;\n    _this = _Input.apply(this, arguments) || this;\n    _this.targetIds = {}; // this.evTarget = TOUCH_TARGET_EVENTS;\n\n    return _this;\n  }\n\n  var _proto = TouchInput.prototype;\n\n  _proto.handler = function handler(ev) {\n    var type = TOUCH_INPUT_MAP[ev.type];\n    var touches = getTouches.call(this, ev, type);\n\n    if (!touches) {\n      return;\n    }\n\n    this.callback(this.manager, type, {\n      pointers: touches[0],\n      changedPointers: touches[1],\n      pointerType: INPUT_TYPE_TOUCH,\n      srcEvent: ev\n    });\n  };\n\n  return TouchInput;\n}(Input);\n\nfunction getTouches(ev, type) {\n  var allTouches = toArray(ev.touches);\n  var targetIds = this.targetIds; // when there is only one touch, the process can be simplified\n\n  if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n    targetIds[allTouches[0].identifier] = true;\n    return [allTouches, allTouches];\n  }\n\n  var i;\n  var targetTouches;\n  var changedTouches = toArray(ev.changedTouches);\n  var changedTargetTouches = [];\n  var target = this.target; // get target touches from touches\n\n  targetTouches = allTouches.filter(function (touch) {\n    return hasParent(touch.target, target);\n  }); // collect touches\n\n  if (type === INPUT_START) {\n    i = 0;\n\n    while (i < targetTouches.length) {\n      targetIds[targetTouches[i].identifier] = true;\n      i++;\n    }\n  } // filter changed touches to only contain touches that exist in the collected target ids\n\n\n  i = 0;\n\n  while (i < changedTouches.length) {\n    if (targetIds[changedTouches[i].identifier]) {\n      changedTargetTouches.push(changedTouches[i]);\n    } // cleanup removed touches\n\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n      delete targetIds[changedTouches[i].identifier];\n    }\n\n    i++;\n  }\n\n  if (!changedTargetTouches.length) {\n    return;\n  }\n\n  return [// merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n  uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n}\n\nvar MOUSE_INPUT_MAP = {\n  mousedown: INPUT_START,\n  mousemove: INPUT_MOVE,\n  mouseup: INPUT_END\n};\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n/**\n * @private\n * Mouse events input\n * @constructor\n * @extends Input\n */\n\nvar MouseInput =\n/*#__PURE__*/\nfunction (_Input) {\n  _inheritsLoose(MouseInput, _Input);\n\n  function MouseInput() {\n    var _this;\n\n    var proto = MouseInput.prototype;\n    proto.evEl = MOUSE_ELEMENT_EVENTS;\n    proto.evWin = MOUSE_WINDOW_EVENTS;\n    _this = _Input.apply(this, arguments) || this;\n    _this.pressed = false; // mousedown state\n\n    return _this;\n  }\n  /**\n   * @private\n   * handle mouse events\n   * @param {Object} ev\n   */\n\n\n  var _proto = MouseInput.prototype;\n\n  _proto.handler = function handler(ev) {\n    var eventType = MOUSE_INPUT_MAP[ev.type]; // on start we want to have the left mouse button down\n\n    if (eventType & INPUT_START && ev.button === 0) {\n      this.pressed = true;\n    }\n\n    if (eventType & INPUT_MOVE && ev.which !== 1) {\n      eventType = INPUT_END;\n    } // mouse must be down\n\n\n    if (!this.pressed) {\n      return;\n    }\n\n    if (eventType & INPUT_END) {\n      this.pressed = false;\n    }\n\n    this.callback(this.manager, eventType, {\n      pointers: [ev],\n      changedPointers: [ev],\n      pointerType: INPUT_TYPE_MOUSE,\n      srcEvent: ev\n    });\n  };\n\n  return MouseInput;\n}(Input);\n\n/**\n * @private\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction setLastTouch(eventData) {\n  var _eventData$changedPoi = eventData.changedPointers,\n      touch = _eventData$changedPoi[0];\n\n  if (touch.identifier === this.primaryTouch) {\n    var lastTouch = {\n      x: touch.clientX,\n      y: touch.clientY\n    };\n    var lts = this.lastTouches;\n    this.lastTouches.push(lastTouch);\n\n    var removeLastTouch = function removeLastTouch() {\n      var i = lts.indexOf(lastTouch);\n\n      if (i > -1) {\n        lts.splice(i, 1);\n      }\n    };\n\n    setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n  }\n}\n\nfunction recordTouches(eventType, eventData) {\n  if (eventType & INPUT_START) {\n    this.primaryTouch = eventData.changedPointers[0].identifier;\n    setLastTouch.call(this, eventData);\n  } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n    setLastTouch.call(this, eventData);\n  }\n}\n\nfunction isSyntheticEvent(eventData) {\n  var x = eventData.srcEvent.clientX;\n  var y = eventData.srcEvent.clientY;\n\n  for (var i = 0; i < this.lastTouches.length; i++) {\n    var t = this.lastTouches[i];\n    var dx = Math.abs(x - t.x);\n    var dy = Math.abs(y - t.y);\n\n    if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nvar TouchMouseInput =\n/*#__PURE__*/\nfunction () {\n  var TouchMouseInput =\n  /*#__PURE__*/\n  function (_Input) {\n    _inheritsLoose(TouchMouseInput, _Input);\n\n    function TouchMouseInput(_manager, callback) {\n      var _this;\n\n      _this = _Input.call(this, _manager, callback) || this;\n\n      _this.handler = function (manager, inputEvent, inputData) {\n        var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH;\n        var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE;\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n          return;\n        } // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n\n\n        if (isTouch) {\n          recordTouches.call(_assertThisInitialized(_assertThisInitialized(_this)), inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized(_assertThisInitialized(_this)), inputData)) {\n          return;\n        }\n\n        _this.callback(manager, inputEvent, inputData);\n      };\n\n      _this.touch = new TouchInput(_this.manager, _this.handler);\n      _this.mouse = new MouseInput(_this.manager, _this.handler);\n      _this.primaryTouch = null;\n      _this.lastTouches = [];\n      return _this;\n    }\n    /**\n     * @private\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n\n\n    var _proto = TouchMouseInput.prototype;\n\n    /**\n     * @private\n     * remove the event listeners\n     */\n    _proto.destroy = function destroy() {\n      this.touch.destroy();\n      this.mouse.destroy();\n    };\n\n    return TouchMouseInput;\n  }(Input);\n\n  return TouchMouseInput;\n}();\n\n/**\n * @private\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n\nfunction createInputInstance(manager) {\n  var Type; // let inputClass = manager.options.inputClass;\n\n  var inputClass = manager.options.inputClass;\n\n  if (inputClass) {\n    Type = inputClass;\n  } else if (SUPPORT_POINTER_EVENTS) {\n    Type = PointerEventInput;\n  } else if (SUPPORT_ONLY_TOUCH) {\n    Type = TouchInput;\n  } else if (!SUPPORT_TOUCH) {\n    Type = MouseInput;\n  } else {\n    Type = TouchMouseInput;\n  }\n\n  return new Type(manager, inputHandler);\n}\n\n/**\n * @private\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n\nfunction invokeArrayArg(arg, fn, context) {\n  if (Array.isArray(arg)) {\n    each(arg, context[fn], context);\n    return true;\n  }\n\n  return false;\n}\n\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * @private\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n  return _uniqueId++;\n}\n\n/**\n * @private\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n  var manager = recognizer.manager;\n\n  if (manager) {\n    return manager.get(otherRecognizer);\n  }\n\n  return otherRecognizer;\n}\n\n/**\n * @private\n * get a usable string, used as event postfix\n * @param {constant} state\n * @returns {String} state\n */\n\nfunction stateStr(state) {\n  if (state & STATE_CANCELLED) {\n    return 'cancel';\n  } else if (state & STATE_ENDED) {\n    return 'end';\n  } else if (state & STATE_CHANGED) {\n    return 'move';\n  } else if (state & STATE_BEGAN) {\n    return 'start';\n  }\n\n  return '';\n}\n\n/**\n * @private\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\n\n/**\n * @private\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n\nvar Recognizer =\n/*#__PURE__*/\nfunction () {\n  function Recognizer(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.options = _extends({\n      enable: true\n    }, options);\n    this.id = uniqueId();\n    this.manager = null; // default is enable true\n\n    this.state = STATE_POSSIBLE;\n    this.simultaneous = {};\n    this.requireFail = [];\n  }\n  /**\n   * @private\n   * set options\n   * @param {Object} options\n   * @return {Recognizer}\n   */\n\n\n  var _proto = Recognizer.prototype;\n\n  _proto.set = function set(options) {\n    assign$1(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state\n\n    this.manager && this.manager.touchAction.update();\n    return this;\n  };\n  /**\n   * @private\n   * recognize simultaneous with an other recognizer.\n   * @param {Recognizer} otherRecognizer\n   * @returns {Recognizer} this\n   */\n\n\n  _proto.recognizeWith = function recognizeWith(otherRecognizer) {\n    if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n      return this;\n    }\n\n    var simultaneous = this.simultaneous;\n    otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n\n    if (!simultaneous[otherRecognizer.id]) {\n      simultaneous[otherRecognizer.id] = otherRecognizer;\n      otherRecognizer.recognizeWith(this);\n    }\n\n    return this;\n  };\n  /**\n   * @private\n   * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n   * @param {Recognizer} otherRecognizer\n   * @returns {Recognizer} this\n   */\n\n\n  _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) {\n    if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n      return this;\n    }\n\n    otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n    delete this.simultaneous[otherRecognizer.id];\n    return this;\n  };\n  /**\n   * @private\n   * recognizer can only run when an other is failing\n   * @param {Recognizer} otherRecognizer\n   * @returns {Recognizer} this\n   */\n\n\n  _proto.requireFailure = function requireFailure(otherRecognizer) {\n    if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n      return this;\n    }\n\n    var requireFail = this.requireFail;\n    otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n\n    if (inArray(requireFail, otherRecognizer) === -1) {\n      requireFail.push(otherRecognizer);\n      otherRecognizer.requireFailure(this);\n    }\n\n    return this;\n  };\n  /**\n   * @private\n   * drop the requireFailure link. it does not remove the link on the other recognizer.\n   * @param {Recognizer} otherRecognizer\n   * @returns {Recognizer} this\n   */\n\n\n  _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) {\n    if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n      return this;\n    }\n\n    otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n    var index = inArray(this.requireFail, otherRecognizer);\n\n    if (index > -1) {\n      this.requireFail.splice(index, 1);\n    }\n\n    return this;\n  };\n  /**\n   * @private\n   * has require failures boolean\n   * @returns {boolean}\n   */\n\n\n  _proto.hasRequireFailures = function hasRequireFailures() {\n    return this.requireFail.length > 0;\n  };\n  /**\n   * @private\n   * if the recognizer can recognize simultaneous with an other recognizer\n   * @param {Recognizer} otherRecognizer\n   * @returns {Boolean}\n   */\n\n\n  _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) {\n    return !!this.simultaneous[otherRecognizer.id];\n  };\n  /**\n   * @private\n   * You should use `tryEmit` instead of `emit` directly to check\n   * that all the needed recognizers has failed before emitting.\n   * @param {Object} input\n   */\n\n\n  _proto.emit = function emit(input) {\n    var self = this;\n    var state = this.state;\n\n    function emit(event) {\n      self.manager.emit(event, input);\n    } // 'panstart' and 'panmove'\n\n\n    if (state < STATE_ENDED) {\n      emit(self.options.event + stateStr(state));\n    }\n\n    emit(self.options.event); // simple 'eventName' events\n\n    if (input.additionalEvent) {\n      // additional event(panleft, panright, pinchin, pinchout...)\n      emit(input.additionalEvent);\n    } // panend and pancancel\n\n\n    if (state >= STATE_ENDED) {\n      emit(self.options.event + stateStr(state));\n    }\n  };\n  /**\n   * @private\n   * Check that all the require failure recognizers has failed,\n   * if true, it emits a gesture event,\n   * otherwise, setup the state to FAILED.\n   * @param {Object} input\n   */\n\n\n  _proto.tryEmit = function tryEmit(input) {\n    if (this.canEmit()) {\n      return this.emit(input);\n    } // it's failing anyway\n\n\n    this.state = STATE_FAILED;\n  };\n  /**\n   * @private\n   * can we emit?\n   * @returns {boolean}\n   */\n\n\n  _proto.canEmit = function canEmit() {\n    var i = 0;\n\n    while (i < this.requireFail.length) {\n      if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n        return false;\n      }\n\n      i++;\n    }\n\n    return true;\n  };\n  /**\n   * @private\n   * update the recognizer\n   * @param {Object} inputData\n   */\n\n\n  _proto.recognize = function recognize(inputData) {\n    // make a new copy of the inputData\n    // so we can change the inputData without messing up the other recognizers\n    var inputDataClone = assign$1({}, inputData); // is is enabled and allow recognizing?\n\n    if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n      this.reset();\n      this.state = STATE_FAILED;\n      return;\n    } // reset when we've reached the end\n\n\n    if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n      this.state = STATE_POSSIBLE;\n    }\n\n    this.state = this.process(inputDataClone); // the recognizer has recognized a gesture\n    // so trigger an event\n\n    if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n      this.tryEmit(inputDataClone);\n    }\n  };\n  /**\n   * @private\n   * return the state of the recognizer\n   * the actual recognizing happens in this method\n   * @virtual\n   * @param {Object} inputData\n   * @returns {constant} STATE\n   */\n\n  /* jshint ignore:start */\n\n\n  _proto.process = function process(inputData) {};\n  /* jshint ignore:end */\n\n  /**\n   * @private\n   * return the preferred touch-action\n   * @virtual\n   * @returns {Array}\n   */\n\n\n  _proto.getTouchAction = function getTouchAction() {};\n  /**\n   * @private\n   * called when the gesture isn't allowed to recognize\n   * like when another is being recognized or it is disabled\n   * @virtual\n   */\n\n\n  _proto.reset = function reset() {};\n\n  return Recognizer;\n}();\n\n/**\n * @private\n * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n\nvar TapRecognizer =\n/*#__PURE__*/\nfunction (_Recognizer) {\n  _inheritsLoose(TapRecognizer, _Recognizer);\n\n  function TapRecognizer(options) {\n    var _this;\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    _this = _Recognizer.call(this, _extends({\n      event: 'tap',\n      pointers: 1,\n      taps: 1,\n      interval: 300,\n      // max time between the multi-tap taps\n      time: 250,\n      // max time of the pointer to be down (like finger on the screen)\n      threshold: 9,\n      // a minimal movement is ok, but keep it low\n      posThreshold: 10\n    }, options)) || this; // previous time and center,\n    // used for tap counting\n\n    _this.pTime = false;\n    _this.pCenter = false;\n    _this._timer = null;\n    _this._input = null;\n    _this.count = 0;\n    return _this;\n  }\n\n  var _proto = TapRecognizer.prototype;\n\n  _proto.getTouchAction = function getTouchAction() {\n    return [TOUCH_ACTION_MANIPULATION];\n  };\n\n  _proto.process = function process(input) {\n    var _this2 = this;\n\n    var options = this.options;\n    var validPointers = input.pointers.length === options.pointers;\n    var validMovement = input.distance < options.threshold;\n    var validTouchTime = input.deltaTime < options.time;\n    this.reset();\n\n    if (input.eventType & INPUT_START && this.count === 0) {\n      return this.failTimeout();\n    } // we only allow little movement\n    // and we've reached an end event, so a tap is possible\n\n\n    if (validMovement && validTouchTime && validPointers) {\n      if (input.eventType !== INPUT_END) {\n        return this.failTimeout();\n      }\n\n      var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n      var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n      this.pTime = input.timeStamp;\n      this.pCenter = input.center;\n\n      if (!validMultiTap || !validInterval) {\n        this.count = 1;\n      } else {\n        this.count += 1;\n      }\n\n      this._input = input; // if tap count matches we have recognized it,\n      // else it has began recognizing...\n\n      var tapCount = this.count % options.taps;\n\n      if (tapCount === 0) {\n        // no failing requirements, immediately trigger the tap event\n        // or wait as long as the multitap interval to trigger\n        if (!this.hasRequireFailures()) {\n          return STATE_RECOGNIZED;\n        } else {\n          this._timer = setTimeout(function () {\n            _this2.state = STATE_RECOGNIZED;\n\n            _this2.tryEmit();\n          }, options.interval);\n          return STATE_BEGAN;\n        }\n      }\n    }\n\n    return STATE_FAILED;\n  };\n\n  _proto.failTimeout = function failTimeout() {\n    var _this3 = this;\n\n    this._timer = setTimeout(function () {\n      _this3.state = STATE_FAILED;\n    }, this.options.interval);\n    return STATE_FAILED;\n  };\n\n  _proto.reset = function reset() {\n    clearTimeout(this._timer);\n  };\n\n  _proto.emit = function emit() {\n    if (this.state === STATE_RECOGNIZED) {\n      this._input.tapCount = this.count;\n      this.manager.emit(this.options.event, this._input);\n    }\n  };\n\n  return TapRecognizer;\n}(Recognizer);\n\n/**\n * @private\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n\nvar AttrRecognizer =\n/*#__PURE__*/\nfunction (_Recognizer) {\n  _inheritsLoose(AttrRecognizer, _Recognizer);\n\n  function AttrRecognizer(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    return _Recognizer.call(this, _extends({\n      pointers: 1\n    }, options)) || this;\n  }\n  /**\n   * @private\n   * Used to check if it the recognizer receives valid input, like input.distance > 10.\n   * @memberof AttrRecognizer\n   * @param {Object} input\n   * @returns {Boolean} recognized\n   */\n\n\n  var _proto = AttrRecognizer.prototype;\n\n  _proto.attrTest = function attrTest(input) {\n    var optionPointers = this.options.pointers;\n    return optionPointers === 0 || input.pointers.length === optionPointers;\n  };\n  /**\n   * @private\n   * Process the input and return the state for the recognizer\n   * @memberof AttrRecognizer\n   * @param {Object} input\n   * @returns {*} State\n   */\n\n\n  _proto.process = function process(input) {\n    var state = this.state;\n    var eventType = input.eventType;\n    var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n    var isValid = this.attrTest(input); // on cancel input and we've recognized before, return STATE_CANCELLED\n\n    if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n      return state | STATE_CANCELLED;\n    } else if (isRecognized || isValid) {\n      if (eventType & INPUT_END) {\n        return state | STATE_ENDED;\n      } else if (!(state & STATE_BEGAN)) {\n        return STATE_BEGAN;\n      }\n\n      return state | STATE_CHANGED;\n    }\n\n    return STATE_FAILED;\n  };\n\n  return AttrRecognizer;\n}(Recognizer);\n\n/**\n * @private\n * direction cons to string\n * @param {constant} direction\n * @returns {String}\n */\n\nfunction directionStr(direction) {\n  if (direction === DIRECTION_DOWN) {\n    return 'down';\n  } else if (direction === DIRECTION_UP) {\n    return 'up';\n  } else if (direction === DIRECTION_LEFT) {\n    return 'left';\n  } else if (direction === DIRECTION_RIGHT) {\n    return 'right';\n  }\n\n  return '';\n}\n\n/**\n * @private\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar PanRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n  _inheritsLoose(PanRecognizer, _AttrRecognizer);\n\n  function PanRecognizer(options) {\n    var _this;\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    _this = _AttrRecognizer.call(this, _extends({\n      event: 'pan',\n      threshold: 10,\n      pointers: 1,\n      direction: DIRECTION_ALL\n    }, options)) || this;\n    _this.pX = null;\n    _this.pY = null;\n    return _this;\n  }\n\n  var _proto = PanRecognizer.prototype;\n\n  _proto.getTouchAction = function getTouchAction() {\n    var direction = this.options.direction;\n    var actions = [];\n\n    if (direction & DIRECTION_HORIZONTAL) {\n      actions.push(TOUCH_ACTION_PAN_Y);\n    }\n\n    if (direction & DIRECTION_VERTICAL) {\n      actions.push(TOUCH_ACTION_PAN_X);\n    }\n\n    return actions;\n  };\n\n  _proto.directionTest = function directionTest(input) {\n    var options = this.options;\n    var hasMoved = true;\n    var distance = input.distance;\n    var direction = input.direction;\n    var x = input.deltaX;\n    var y = input.deltaY; // lock to axis?\n\n    if (!(direction & options.direction)) {\n      if (options.direction & DIRECTION_HORIZONTAL) {\n        direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n        hasMoved = x !== this.pX;\n        distance = Math.abs(input.deltaX);\n      } else {\n        direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n        hasMoved = y !== this.pY;\n        distance = Math.abs(input.deltaY);\n      }\n    }\n\n    input.direction = direction;\n    return hasMoved && distance > options.threshold && direction & options.direction;\n  };\n\n  _proto.attrTest = function attrTest(input) {\n    return AttrRecognizer.prototype.attrTest.call(this, input) && ( // replace with a super call\n    this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n  };\n\n  _proto.emit = function emit(input) {\n    this.pX = input.deltaX;\n    this.pY = input.deltaY;\n    var direction = directionStr(input.direction);\n\n    if (direction) {\n      input.additionalEvent = this.options.event + direction;\n    }\n\n    _AttrRecognizer.prototype.emit.call(this, input);\n  };\n\n  return PanRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar SwipeRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n  _inheritsLoose(SwipeRecognizer, _AttrRecognizer);\n\n  function SwipeRecognizer(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    return _AttrRecognizer.call(this, _extends({\n      event: 'swipe',\n      threshold: 10,\n      velocity: 0.3,\n      direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n      pointers: 1\n    }, options)) || this;\n  }\n\n  var _proto = SwipeRecognizer.prototype;\n\n  _proto.getTouchAction = function getTouchAction() {\n    return PanRecognizer.prototype.getTouchAction.call(this);\n  };\n\n  _proto.attrTest = function attrTest(input) {\n    var direction = this.options.direction;\n    var velocity;\n\n    if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n      velocity = input.overallVelocity;\n    } else if (direction & DIRECTION_HORIZONTAL) {\n      velocity = input.overallVelocityX;\n    } else if (direction & DIRECTION_VERTICAL) {\n      velocity = input.overallVelocityY;\n    }\n\n    return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n  };\n\n  _proto.emit = function emit(input) {\n    var direction = directionStr(input.offsetDirection);\n\n    if (direction) {\n      this.manager.emit(this.options.event + direction, input);\n    }\n\n    this.manager.emit(this.options.event, input);\n  };\n\n  return SwipeRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar PinchRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n  _inheritsLoose(PinchRecognizer, _AttrRecognizer);\n\n  function PinchRecognizer(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    return _AttrRecognizer.call(this, _extends({\n      event: 'pinch',\n      threshold: 0,\n      pointers: 2\n    }, options)) || this;\n  }\n\n  var _proto = PinchRecognizer.prototype;\n\n  _proto.getTouchAction = function getTouchAction() {\n    return [TOUCH_ACTION_NONE];\n  };\n\n  _proto.attrTest = function attrTest(input) {\n    return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n  };\n\n  _proto.emit = function emit(input) {\n    if (input.scale !== 1) {\n      var inOut = input.scale < 1 ? 'in' : 'out';\n      input.additionalEvent = this.options.event + inOut;\n    }\n\n    _AttrRecognizer.prototype.emit.call(this, input);\n  };\n\n  return PinchRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar RotateRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n  _inheritsLoose(RotateRecognizer, _AttrRecognizer);\n\n  function RotateRecognizer(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    return _AttrRecognizer.call(this, _extends({\n      event: 'rotate',\n      threshold: 0,\n      pointers: 2\n    }, options)) || this;\n  }\n\n  var _proto = RotateRecognizer.prototype;\n\n  _proto.getTouchAction = function getTouchAction() {\n    return [TOUCH_ACTION_NONE];\n  };\n\n  _proto.attrTest = function attrTest(input) {\n    return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n  };\n\n  return RotateRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n\nvar PressRecognizer =\n/*#__PURE__*/\nfunction (_Recognizer) {\n  _inheritsLoose(PressRecognizer, _Recognizer);\n\n  function PressRecognizer(options) {\n    var _this;\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    _this = _Recognizer.call(this, _extends({\n      event: 'press',\n      pointers: 1,\n      time: 251,\n      // minimal time of the pointer to be pressed\n      threshold: 9\n    }, options)) || this;\n    _this._timer = null;\n    _this._input = null;\n    return _this;\n  }\n\n  var _proto = PressRecognizer.prototype;\n\n  _proto.getTouchAction = function getTouchAction() {\n    return [TOUCH_ACTION_AUTO];\n  };\n\n  _proto.process = function process(input) {\n    var _this2 = this;\n\n    var options = this.options;\n    var validPointers = input.pointers.length === options.pointers;\n    var validMovement = input.distance < options.threshold;\n    var validTime = input.deltaTime > options.time;\n    this._input = input; // we only allow little movement\n    // and we've reached an end event, so a tap is possible\n\n    if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n      this.reset();\n    } else if (input.eventType & INPUT_START) {\n      this.reset();\n      this._timer = setTimeout(function () {\n        _this2.state = STATE_RECOGNIZED;\n\n        _this2.tryEmit();\n      }, options.time);\n    } else if (input.eventType & INPUT_END) {\n      return STATE_RECOGNIZED;\n    }\n\n    return STATE_FAILED;\n  };\n\n  _proto.reset = function reset() {\n    clearTimeout(this._timer);\n  };\n\n  _proto.emit = function emit(input) {\n    if (this.state !== STATE_RECOGNIZED) {\n      return;\n    }\n\n    if (input && input.eventType & INPUT_END) {\n      this.manager.emit(this.options.event + \"up\", input);\n    } else {\n      this._input.timeStamp = now();\n      this.manager.emit(this.options.event, this._input);\n    }\n  };\n\n  return PressRecognizer;\n}(Recognizer);\n\nvar defaults = {\n  /**\n   * @private\n   * set if DOM events are being triggered.\n   * But this is slower and unused by simple implementations, so disabled by default.\n   * @type {Boolean}\n   * @default false\n   */\n  domEvents: false,\n\n  /**\n   * @private\n   * The value for the touchAction property/fallback.\n   * When set to `compute` it will magically set the correct value based on the added recognizers.\n   * @type {String}\n   * @default compute\n   */\n  touchAction: TOUCH_ACTION_COMPUTE,\n\n  /**\n   * @private\n   * @type {Boolean}\n   * @default true\n   */\n  enable: true,\n\n  /**\n   * @private\n   * EXPERIMENTAL FEATURE -- can be removed/changed\n   * Change the parent input target element.\n   * If Null, then it is being set the to main element.\n   * @type {Null|EventTarget}\n   * @default null\n   */\n  inputTarget: null,\n\n  /**\n   * @private\n   * force an input class\n   * @type {Null|Function}\n   * @default null\n   */\n  inputClass: null,\n\n  /**\n   * @private\n   * Some CSS properties can be used to improve the working of Hammer.\n   * Add them to this method and they will be set when creating a new Manager.\n   * @namespace\n   */\n  cssProps: {\n    /**\n     * @private\n     * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n     * @type {String}\n     * @default 'none'\n     */\n    userSelect: \"none\",\n\n    /**\n     * @private\n     * Disable the Windows Phone grippers when pressing an element.\n     * @type {String}\n     * @default 'none'\n     */\n    touchSelect: \"none\",\n\n    /**\n     * @private\n     * Disables the default callout shown when you touch and hold a touch target.\n     * On iOS, when you touch and hold a touch target such as a link, Safari displays\n     * a callout containing information about the link. This property allows you to disable that callout.\n     * @type {String}\n     * @default 'none'\n     */\n    touchCallout: \"none\",\n\n    /**\n     * @private\n     * Specifies whether zooming is enabled. Used by IE10>\n     * @type {String}\n     * @default 'none'\n     */\n    contentZooming: \"none\",\n\n    /**\n     * @private\n     * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n     * @type {String}\n     * @default 'none'\n     */\n    userDrag: \"none\",\n\n    /**\n     * @private\n     * Overrides the highlight color shown when the user taps a link or a JavaScript\n     * clickable element in iOS. This property obeys the alpha value, if specified.\n     * @type {String}\n     * @default 'rgba(0,0,0,0)'\n     */\n    tapHighlightColor: \"rgba(0,0,0,0)\"\n  }\n};\n/**\n * @private\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * This is separated with other defaults because of tree-shaking.\n * @type {Array}\n */\n\nvar preset = [[RotateRecognizer, {\n  enable: false\n}], [PinchRecognizer, {\n  enable: false\n}, ['rotate']], [SwipeRecognizer, {\n  direction: DIRECTION_HORIZONTAL\n}], [PanRecognizer, {\n  direction: DIRECTION_HORIZONTAL\n}, ['swipe']], [TapRecognizer], [TapRecognizer, {\n  event: 'doubletap',\n  taps: 2\n}, ['tap']], [PressRecognizer]];\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n/**\n * @private\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n\nfunction toggleCssProps(manager, add) {\n  var element = manager.element;\n\n  if (!element.style) {\n    return;\n  }\n\n  var prop;\n  each(manager.options.cssProps, function (value, name) {\n    prop = prefixed(element.style, name);\n\n    if (add) {\n      manager.oldCssProps[prop] = element.style[prop];\n      element.style[prop] = value;\n    } else {\n      element.style[prop] = manager.oldCssProps[prop] || \"\";\n    }\n  });\n\n  if (!add) {\n    manager.oldCssProps = {};\n  }\n}\n/**\n * @private\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n\n\nfunction triggerDomEvent(event, data) {\n  var gestureEvent = document.createEvent(\"Event\");\n  gestureEvent.initEvent(event, true, true);\n  gestureEvent.gesture = data;\n  data.target.dispatchEvent(gestureEvent);\n}\n/**\n* @private\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n\n\nvar Manager =\n/*#__PURE__*/\nfunction () {\n  function Manager(element, options) {\n    var _this = this;\n\n    this.options = assign$1({}, defaults, options || {});\n    this.options.inputTarget = this.options.inputTarget || element;\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n    toggleCssProps(this, true);\n    each(this.options.recognizers, function (item) {\n      var recognizer = _this.add(new item[0](item[1]));\n\n      item[2] && recognizer.recognizeWith(item[2]);\n      item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n  }\n  /**\n   * @private\n   * set options\n   * @param {Object} options\n   * @returns {Manager}\n   */\n\n\n  var _proto = Manager.prototype;\n\n  _proto.set = function set(options) {\n    assign$1(this.options, options); // Options that need a little more setup\n\n    if (options.touchAction) {\n      this.touchAction.update();\n    }\n\n    if (options.inputTarget) {\n      // Clean up existing event listeners and reinitialize\n      this.input.destroy();\n      this.input.target = options.inputTarget;\n      this.input.init();\n    }\n\n    return this;\n  };\n  /**\n   * @private\n   * stop recognizing for this session.\n   * This session will be discarded, when a new [input]start event is fired.\n   * When forced, the recognizer cycle is stopped immediately.\n   * @param {Boolean} [force]\n   */\n\n\n  _proto.stop = function stop(force) {\n    this.session.stopped = force ? FORCED_STOP : STOP;\n  };\n  /**\n   * @private\n   * run the recognizers!\n   * called by the inputHandler function on every movement of the pointers (touches)\n   * it walks through all the recognizers and tries to detect the gesture that is being made\n   * @param {Object} inputData\n   */\n\n\n  _proto.recognize = function recognize(inputData) {\n    var session = this.session;\n\n    if (session.stopped) {\n      return;\n    } // run the touch-action polyfill\n\n\n    this.touchAction.preventDefaults(inputData);\n    var recognizer;\n    var recognizers = this.recognizers; // this holds the recognizer that is being recognized.\n    // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n    // if no recognizer is detecting a thing, it is set to `null`\n\n    var curRecognizer = session.curRecognizer; // reset when the last recognizer is recognized\n    // or when we're in a new session\n\n    if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n      session.curRecognizer = null;\n      curRecognizer = null;\n    }\n\n    var i = 0;\n\n    while (i < recognizers.length) {\n      recognizer = recognizers[i]; // find out if we are allowed try to recognize the input for this one.\n      // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n      // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n      //      that is being recognized.\n      // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n      //      this can be setup with the `recognizeWith()` method on the recognizer.\n\n      if (session.stopped !== FORCED_STOP && ( // 1\n      !curRecognizer || recognizer === curRecognizer || // 2\n      recognizer.canRecognizeWith(curRecognizer))) {\n        // 3\n        recognizer.recognize(inputData);\n      } else {\n        recognizer.reset();\n      } // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n      // current active recognizer. but only if we don't already have an active recognizer\n\n\n      if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n        session.curRecognizer = recognizer;\n        curRecognizer = recognizer;\n      }\n\n      i++;\n    }\n  };\n  /**\n   * @private\n   * get a recognizer by its event name.\n   * @param {Recognizer|String} recognizer\n   * @returns {Recognizer|Null}\n   */\n\n\n  _proto.get = function get(recognizer) {\n    if (recognizer instanceof Recognizer) {\n      return recognizer;\n    }\n\n    var recognizers = this.recognizers;\n\n    for (var i = 0; i < recognizers.length; i++) {\n      if (recognizers[i].options.event === recognizer) {\n        return recognizers[i];\n      }\n    }\n\n    return null;\n  };\n  /**\n   * @private add a recognizer to the manager\n   * existing recognizers with the same event name will be removed\n   * @param {Recognizer} recognizer\n   * @returns {Recognizer|Manager}\n   */\n\n\n  _proto.add = function add(recognizer) {\n    if (invokeArrayArg(recognizer, \"add\", this)) {\n      return this;\n    } // remove existing\n\n\n    var existing = this.get(recognizer.options.event);\n\n    if (existing) {\n      this.remove(existing);\n    }\n\n    this.recognizers.push(recognizer);\n    recognizer.manager = this;\n    this.touchAction.update();\n    return recognizer;\n  };\n  /**\n   * @private\n   * remove a recognizer by name or instance\n   * @param {Recognizer|String} recognizer\n   * @returns {Manager}\n   */\n\n\n  _proto.remove = function remove(recognizer) {\n    if (invokeArrayArg(recognizer, \"remove\", this)) {\n      return this;\n    }\n\n    var targetRecognizer = this.get(recognizer); // let's make sure this recognizer exists\n\n    if (recognizer) {\n      var recognizers = this.recognizers;\n      var index = inArray(recognizers, targetRecognizer);\n\n      if (index !== -1) {\n        recognizers.splice(index, 1);\n        this.touchAction.update();\n      }\n    }\n\n    return this;\n  };\n  /**\n   * @private\n   * bind event\n   * @param {String} events\n   * @param {Function} handler\n   * @returns {EventEmitter} this\n   */\n\n\n  _proto.on = function on(events, handler) {\n    if (events === undefined || handler === undefined) {\n      return this;\n    }\n\n    var handlers = this.handlers;\n    each(splitStr(events), function (event) {\n      handlers[event] = handlers[event] || [];\n      handlers[event].push(handler);\n    });\n    return this;\n  };\n  /**\n   * @private unbind event, leave emit blank to remove all handlers\n   * @param {String} events\n   * @param {Function} [handler]\n   * @returns {EventEmitter} this\n   */\n\n\n  _proto.off = function off(events, handler) {\n    if (events === undefined) {\n      return this;\n    }\n\n    var handlers = this.handlers;\n    each(splitStr(events), function (event) {\n      if (!handler) {\n        delete handlers[event];\n      } else {\n        handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n      }\n    });\n    return this;\n  };\n  /**\n   * @private emit event to the listeners\n   * @param {String} event\n   * @param {Object} data\n   */\n\n\n  _proto.emit = function emit(event, data) {\n    // we also want to trigger dom events\n    if (this.options.domEvents) {\n      triggerDomEvent(event, data);\n    } // no handlers, so skip it all\n\n\n    var handlers = this.handlers[event] && this.handlers[event].slice();\n\n    if (!handlers || !handlers.length) {\n      return;\n    }\n\n    data.type = event;\n\n    data.preventDefault = function () {\n      data.srcEvent.preventDefault();\n    };\n\n    var i = 0;\n\n    while (i < handlers.length) {\n      handlers[i](data);\n      i++;\n    }\n  };\n  /**\n   * @private\n   * destroy the manager and unbinds all events\n   * it doesn't unbind dom events, that is the user own responsibility\n   */\n\n\n  _proto.destroy = function destroy() {\n    this.element && toggleCssProps(this, false);\n    this.handlers = {};\n    this.session = {};\n    this.input.destroy();\n    this.element = null;\n  };\n\n  return Manager;\n}();\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n  touchstart: INPUT_START,\n  touchmove: INPUT_MOVE,\n  touchend: INPUT_END,\n  touchcancel: INPUT_CANCEL\n};\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n/**\n * @private\n * Touch events input\n * @constructor\n * @extends Input\n */\n\nvar SingleTouchInput =\n/*#__PURE__*/\nfunction (_Input) {\n  _inheritsLoose(SingleTouchInput, _Input);\n\n  function SingleTouchInput() {\n    var _this;\n\n    var proto = SingleTouchInput.prototype;\n    proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    _this = _Input.apply(this, arguments) || this;\n    _this.started = false;\n    return _this;\n  }\n\n  var _proto = SingleTouchInput.prototype;\n\n  _proto.handler = function handler(ev) {\n    var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; // should we handle the touch events?\n\n    if (type === INPUT_START) {\n      this.started = true;\n    }\n\n    if (!this.started) {\n      return;\n    }\n\n    var touches = normalizeSingleTouches.call(this, ev, type); // when done, reset the started state\n\n    if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n      this.started = false;\n    }\n\n    this.callback(this.manager, type, {\n      pointers: touches[0],\n      changedPointers: touches[1],\n      pointerType: INPUT_TYPE_TOUCH,\n      srcEvent: ev\n    });\n  };\n\n  return SingleTouchInput;\n}(Input);\n\nfunction normalizeSingleTouches(ev, type) {\n  var all = toArray(ev.touches);\n  var changed = toArray(ev.changedTouches);\n\n  if (type & (INPUT_END | INPUT_CANCEL)) {\n    all = uniqueArray(all.concat(changed), 'identifier', true);\n  }\n\n  return [all, changed];\n}\n\n/**\n * @private\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n  var deprecationMessage = \"DEPRECATED METHOD: \" + name + \"\\n\" + message + \" AT \\n\";\n  return function () {\n    var e = new Error('get-stack-trace');\n    var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n    var log = window.console && (window.console.warn || window.console.log);\n\n    if (log) {\n      log.call(window.console, deprecationMessage, stack);\n    }\n\n    return method.apply(this, arguments);\n  };\n}\n\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n\nvar extend = deprecate(function (dest, src, merge) {\n  var keys = Object.keys(src);\n  var i = 0;\n\n  while (i < keys.length) {\n    if (!merge || merge && dest[keys[i]] === undefined) {\n      dest[keys[i]] = src[keys[i]];\n    }\n\n    i++;\n  }\n\n  return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * @private\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n\nvar merge = deprecate(function (dest, src) {\n  return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * @private\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n\nfunction inherit(child, base, properties) {\n  var baseP = base.prototype;\n  var childP;\n  childP = child.prototype = Object.create(baseP);\n  childP.constructor = child;\n  childP._super = baseP;\n\n  if (properties) {\n    assign$1(childP, properties);\n  }\n}\n\n/**\n * @private\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n  return function boundFn() {\n    return fn.apply(context, arguments);\n  };\n}\n\n/**\n * @private\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n\nvar Hammer =\n/*#__PURE__*/\nfunction () {\n  var Hammer =\n  /**\n    * @private\n    * @const {string}\n    */\n  function Hammer(element, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    return new Manager(element, _extends({\n      recognizers: preset.concat()\n    }, options));\n  };\n\n  Hammer.VERSION = \"2.0.17-rc\";\n  Hammer.DIRECTION_ALL = DIRECTION_ALL;\n  Hammer.DIRECTION_DOWN = DIRECTION_DOWN;\n  Hammer.DIRECTION_LEFT = DIRECTION_LEFT;\n  Hammer.DIRECTION_RIGHT = DIRECTION_RIGHT;\n  Hammer.DIRECTION_UP = DIRECTION_UP;\n  Hammer.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n  Hammer.DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n  Hammer.DIRECTION_NONE = DIRECTION_NONE;\n  Hammer.DIRECTION_DOWN = DIRECTION_DOWN;\n  Hammer.INPUT_START = INPUT_START;\n  Hammer.INPUT_MOVE = INPUT_MOVE;\n  Hammer.INPUT_END = INPUT_END;\n  Hammer.INPUT_CANCEL = INPUT_CANCEL;\n  Hammer.STATE_POSSIBLE = STATE_POSSIBLE;\n  Hammer.STATE_BEGAN = STATE_BEGAN;\n  Hammer.STATE_CHANGED = STATE_CHANGED;\n  Hammer.STATE_ENDED = STATE_ENDED;\n  Hammer.STATE_RECOGNIZED = STATE_RECOGNIZED;\n  Hammer.STATE_CANCELLED = STATE_CANCELLED;\n  Hammer.STATE_FAILED = STATE_FAILED;\n  Hammer.Manager = Manager;\n  Hammer.Input = Input;\n  Hammer.TouchAction = TouchAction;\n  Hammer.TouchInput = TouchInput;\n  Hammer.MouseInput = MouseInput;\n  Hammer.PointerEventInput = PointerEventInput;\n  Hammer.TouchMouseInput = TouchMouseInput;\n  Hammer.SingleTouchInput = SingleTouchInput;\n  Hammer.Recognizer = Recognizer;\n  Hammer.AttrRecognizer = AttrRecognizer;\n  Hammer.Tap = TapRecognizer;\n  Hammer.Pan = PanRecognizer;\n  Hammer.Swipe = SwipeRecognizer;\n  Hammer.Pinch = PinchRecognizer;\n  Hammer.Rotate = RotateRecognizer;\n  Hammer.Press = PressRecognizer;\n  Hammer.on = addEventListeners;\n  Hammer.off = removeEventListeners;\n  Hammer.each = each;\n  Hammer.merge = merge;\n  Hammer.extend = extend;\n  Hammer.bindFn = bindFn;\n  Hammer.assign = assign$1;\n  Hammer.inherit = inherit;\n  Hammer.bindFn = bindFn;\n  Hammer.prefixed = prefixed;\n  Hammer.toArray = toArray;\n  Hammer.inArray = inArray;\n  Hammer.uniqueArray = uniqueArray;\n  Hammer.splitStr = splitStr;\n  Hammer.boolOrFn = boolOrFn;\n  Hammer.hasParent = hasParent;\n  Hammer.addEventListeners = addEventListeners;\n  Hammer.removeEventListeners = removeEventListeners;\n  Hammer.defaults = assign$1({}, defaults, {\n    preset: preset\n  });\n  return Hammer;\n}();\n\n//  style loader but by script tag, not by the loader.\n\nvar defaults$1 = Hammer.defaults;\n\nexport default Hammer;\nexport { INPUT_START, INPUT_MOVE, INPUT_END, INPUT_CANCEL, STATE_POSSIBLE, STATE_BEGAN, STATE_CHANGED, STATE_ENDED, STATE_RECOGNIZED, STATE_CANCELLED, STATE_FAILED, DIRECTION_NONE, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP, DIRECTION_DOWN, DIRECTION_HORIZONTAL, DIRECTION_VERTICAL, DIRECTION_ALL, Manager, Input, TouchAction, TouchInput, MouseInput, PointerEventInput, TouchMouseInput, SingleTouchInput, Recognizer, AttrRecognizer, TapRecognizer as Tap, PanRecognizer as Pan, SwipeRecognizer as Swipe, PinchRecognizer as Pinch, RotateRecognizer as Rotate, PressRecognizer as Press, addEventListeners as on, removeEventListeners as off, each, merge, extend, assign$1 as assign, inherit, bindFn, prefixed, toArray, inArray, uniqueArray, splitStr, boolOrFn, hasParent, addEventListeners, removeEventListeners, defaults$1 as defaults };\n//# sourceMappingURL=hammer.esm.js.map\n","/**\n * vis-util\n * https://github.com/visjs/vis-util\n *\n * utilitie collection for visjs\n *\n * @version 5.0.5\n * @date    2023-10-03T18:47:58.061Z\n *\n * @copyright (c) 2011-2017 Almende B.V, http://almende.com\n * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs\n *\n * @license\n * vis.js is dual licensed under both\n *\n *   1. The Apache 2.0 License\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n *   and\n *\n *   2. The MIT License\n *      http://opensource.org/licenses/MIT\n *\n * vis.js may be distributed under either license.\n */\n\nimport Emitter from 'component-emitter';\nimport RealHammer from '@egjs/hammerjs';\n\n/**\r\n * Use this symbol to delete properies in deepObjectAssign.\r\n */\r\nconst DELETE = Symbol(\"DELETE\");\r\n/**\r\n * Pure version of deepObjectAssign, it doesn't modify any of it's arguments.\r\n *\r\n * @param base - The base object that fullfils the whole interface T.\r\n * @param updates - Updates that may change or delete props.\r\n * @returns A brand new instance with all the supplied objects deeply merged.\r\n */\r\nfunction pureDeepObjectAssign(base, ...updates) {\r\n    return deepObjectAssign({}, base, ...updates);\r\n}\r\n/**\r\n * Deep version of object assign with additional deleting by the DELETE symbol.\r\n *\r\n * @param values - Objects to be deeply merged.\r\n * @returns The first object from values.\r\n */\r\nfunction deepObjectAssign(...values) {\r\n    const merged = deepObjectAssignNonentry(...values);\r\n    stripDelete(merged);\r\n    return merged;\r\n}\r\n/**\r\n * Deep version of object assign with additional deleting by the DELETE symbol.\r\n *\r\n * @remarks\r\n * This doesn't strip the DELETE symbols so they may end up in the final object.\r\n * @param values - Objects to be deeply merged.\r\n * @returns The first object from values.\r\n */\r\nfunction deepObjectAssignNonentry(...values) {\r\n    if (values.length < 2) {\r\n        return values[0];\r\n    }\r\n    else if (values.length > 2) {\r\n        return deepObjectAssignNonentry(deepObjectAssign(values[0], values[1]), ...values.slice(2));\r\n    }\r\n    const a = values[0];\r\n    const b = values[1];\r\n    if (a instanceof Date && b instanceof Date) {\r\n        a.setTime(b.getTime());\r\n        return a;\r\n    }\r\n    for (const prop of Reflect.ownKeys(b)) {\r\n        if (!Object.prototype.propertyIsEnumerable.call(b, prop)) ;\r\n        else if (b[prop] === DELETE) {\r\n            delete a[prop];\r\n        }\r\n        else if (a[prop] !== null &&\r\n            b[prop] !== null &&\r\n            typeof a[prop] === \"object\" &&\r\n            typeof b[prop] === \"object\" &&\r\n            !Array.isArray(a[prop]) &&\r\n            !Array.isArray(b[prop])) {\r\n            a[prop] = deepObjectAssignNonentry(a[prop], b[prop]);\r\n        }\r\n        else {\r\n            a[prop] = clone(b[prop]);\r\n        }\r\n    }\r\n    return a;\r\n}\r\n/**\r\n * Deep clone given object or array. In case of primitive simply return.\r\n *\r\n * @param a - Anything.\r\n * @returns Deep cloned object/array or unchanged a.\r\n */\r\nfunction clone(a) {\r\n    if (Array.isArray(a)) {\r\n        return a.map((value) => clone(value));\r\n    }\r\n    else if (typeof a === \"object\" && a !== null) {\r\n        if (a instanceof Date) {\r\n            return new Date(a.getTime());\r\n        }\r\n        return deepObjectAssignNonentry({}, a);\r\n    }\r\n    else {\r\n        return a;\r\n    }\r\n}\r\n/**\r\n * Strip DELETE from given object.\r\n *\r\n * @param a - Object which may contain DELETE but won't after this is executed.\r\n */\r\nfunction stripDelete(a) {\r\n    for (const prop of Object.keys(a)) {\r\n        if (a[prop] === DELETE) {\r\n            delete a[prop];\r\n        }\r\n        else if (typeof a[prop] === \"object\" && a[prop] !== null) {\r\n            stripDelete(a[prop]);\r\n        }\r\n    }\r\n}\n\n/**\r\n * Seedable, fast and reasonably good (not crypto but more than okay for our\r\n * needs) random number generator.\r\n *\r\n * @remarks\r\n * Adapted from {@link https://web.archive.org/web/20110429100736/http://baagoe.com:80/en/RandomMusings/javascript}.\r\n * Original algorithm created by Johannes Baagøe \\<baagoe\\@baagoe.com\\> in 2010.\r\n */\r\n/**\r\n * Create a seeded pseudo random generator based on Alea by Johannes Baagøe.\r\n *\r\n * @param seed - All supplied arguments will be used as a seed. In case nothing\r\n * is supplied the current time will be used to seed the generator.\r\n * @returns A ready to use seeded generator.\r\n */\r\nfunction Alea(...seed) {\r\n    return AleaImplementation(seed.length ? seed : [Date.now()]);\r\n}\r\n/**\r\n * An implementation of [[Alea]] without user input validation.\r\n *\r\n * @param seed - The data that will be used to seed the generator.\r\n * @returns A ready to use seeded generator.\r\n */\r\nfunction AleaImplementation(seed) {\r\n    let [s0, s1, s2] = mashSeed(seed);\r\n    let c = 1;\r\n    const random = () => {\r\n        const t = 2091639 * s0 + c * 2.3283064365386963e-10; // 2^-32\r\n        s0 = s1;\r\n        s1 = s2;\r\n        return (s2 = t - (c = t | 0));\r\n    };\r\n    random.uint32 = () => random() * 0x100000000; // 2^32\r\n    random.fract53 = () => random() + ((random() * 0x200000) | 0) * 1.1102230246251565e-16; // 2^-53\r\n    random.algorithm = \"Alea\";\r\n    random.seed = seed;\r\n    random.version = \"0.9\";\r\n    return random;\r\n}\r\n/**\r\n * Turn arbitrary data into values [[AleaImplementation]] can use to generate\r\n * random numbers.\r\n *\r\n * @param seed - Arbitrary data that will be used as the seed.\r\n * @returns Three numbers to use as initial values for [[AleaImplementation]].\r\n */\r\nfunction mashSeed(...seed) {\r\n    const mash = Mash();\r\n    let s0 = mash(\" \");\r\n    let s1 = mash(\" \");\r\n    let s2 = mash(\" \");\r\n    for (let i = 0; i < seed.length; i++) {\r\n        s0 -= mash(seed[i]);\r\n        if (s0 < 0) {\r\n            s0 += 1;\r\n        }\r\n        s1 -= mash(seed[i]);\r\n        if (s1 < 0) {\r\n            s1 += 1;\r\n        }\r\n        s2 -= mash(seed[i]);\r\n        if (s2 < 0) {\r\n            s2 += 1;\r\n        }\r\n    }\r\n    return [s0, s1, s2];\r\n}\r\n/**\r\n * Create a new mash function.\r\n *\r\n * @returns A nonpure function that takes arbitrary [[Mashable]] data and turns\r\n * them into numbers.\r\n */\r\nfunction Mash() {\r\n    let n = 0xefc8249d;\r\n    return function (data) {\r\n        const string = data.toString();\r\n        for (let i = 0; i < string.length; i++) {\r\n            n += string.charCodeAt(i);\r\n            let h = 0.02519603282416938 * n;\r\n            n = h >>> 0;\r\n            h -= n;\r\n            h *= n;\r\n            n = h >>> 0;\r\n            h -= n;\r\n            n += h * 0x100000000; // 2^32\r\n        }\r\n        return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\r\n    };\r\n}\n\n/**\n * Setup a mock hammer.js object, for unit testing.\n *\n * Inspiration: https://github.com/uber/deck.gl/pull/658\n *\n * @returns {{on: noop, off: noop, destroy: noop, emit: noop, get: get}}\n */\nfunction hammerMock() {\n  const noop = () => {};\n\n  return {\n    on: noop,\n    off: noop,\n    destroy: noop,\n    emit: noop,\n\n    get() {\n      return {\n        set: noop,\n      };\n    },\n  };\n}\n\nconst Hammer$1 =\n  typeof window !== \"undefined\"\n    ? window.Hammer || RealHammer\n    : function () {\n        // hammer.js is only available in a browser, not in node.js. Replacing it with a mock object.\n        return hammerMock();\n      };\n\n/**\n * Turn an element into an clickToUse element.\n * When not active, the element has a transparent overlay. When the overlay is\n * clicked, the mode is changed to active.\n * When active, the element is displayed with a blue border around it, and\n * the interactive contents of the element can be used. When clicked outside\n * the element, the elements mode is changed to inactive.\n *\n * @param {Element} container\n * @class Activator\n */\nfunction Activator$1(container) {\n  this._cleanupQueue = [];\n\n  this.active = false;\n\n  this._dom = {\n    container,\n    overlay: document.createElement(\"div\"),\n  };\n\n  this._dom.overlay.classList.add(\"vis-overlay\");\n\n  this._dom.container.appendChild(this._dom.overlay);\n  this._cleanupQueue.push(() => {\n    this._dom.overlay.parentNode.removeChild(this._dom.overlay);\n  });\n\n  const hammer = Hammer$1(this._dom.overlay);\n  hammer.on(\"tap\", this._onTapOverlay.bind(this));\n  this._cleanupQueue.push(() => {\n    hammer.destroy();\n    // FIXME: cleaning up hammer instances doesn't work (Timeline not removed\n    // from memory)\n  });\n\n  // block all touch events (except tap)\n  const events = [\n    \"tap\",\n    \"doubletap\",\n    \"press\",\n    \"pinch\",\n    \"pan\",\n    \"panstart\",\n    \"panmove\",\n    \"panend\",\n  ];\n  events.forEach((event) => {\n    hammer.on(event, (event) => {\n      event.srcEvent.stopPropagation();\n    });\n  });\n\n  // attach a click event to the window, in order to deactivate when clicking outside the timeline\n  if (document && document.body) {\n    this._onClick = (event) => {\n      if (!_hasParent(event.target, container)) {\n        this.deactivate();\n      }\n    };\n    document.body.addEventListener(\"click\", this._onClick);\n    this._cleanupQueue.push(() => {\n      document.body.removeEventListener(\"click\", this._onClick);\n    });\n  }\n\n  // prepare escape key listener for deactivating when active\n  this._escListener = (event) => {\n    if (\n      \"key\" in event\n        ? event.key === \"Escape\"\n        : event.keyCode === 27 /* the keyCode is for IE11 */\n    ) {\n      this.deactivate();\n    }\n  };\n}\n\n// turn into an event emitter\nEmitter(Activator$1.prototype);\n\n// The currently active activator\nActivator$1.current = null;\n\n/**\n * Destroy the activator. Cleans up all created DOM and event listeners\n */\nActivator$1.prototype.destroy = function () {\n  this.deactivate();\n\n  for (const callback of this._cleanupQueue.splice(0).reverse()) {\n    callback();\n  }\n};\n\n/**\n * Activate the element\n * Overlay is hidden, element is decorated with a blue shadow border\n */\nActivator$1.prototype.activate = function () {\n  // we allow only one active activator at a time\n  if (Activator$1.current) {\n    Activator$1.current.deactivate();\n  }\n  Activator$1.current = this;\n\n  this.active = true;\n  this._dom.overlay.style.display = \"none\";\n  this._dom.container.classList.add(\"vis-active\");\n\n  this.emit(\"change\");\n  this.emit(\"activate\");\n\n  // ugly hack: bind ESC after emitting the events, as the Network rebinds all\n  // keyboard events on a 'change' event\n  document.body.addEventListener(\"keydown\", this._escListener);\n};\n\n/**\n * Deactivate the element\n * Overlay is displayed on top of the element\n */\nActivator$1.prototype.deactivate = function () {\n  this.active = false;\n  this._dom.overlay.style.display = \"block\";\n  this._dom.container.classList.remove(\"vis-active\");\n  document.body.removeEventListener(\"keydown\", this._escListener);\n\n  this.emit(\"change\");\n  this.emit(\"deactivate\");\n};\n\n/**\n * Handle a tap event: activate the container\n *\n * @param {Event}  event   The event\n * @private\n */\nActivator$1.prototype._onTapOverlay = function (event) {\n  // activate the container\n  this.activate();\n  event.srcEvent.stopPropagation();\n};\n\n/**\n * Test whether the element has the requested parent element somewhere in\n * its chain of parent nodes.\n *\n * @param {HTMLElement} element\n * @param {HTMLElement} parent\n * @returns {boolean} Returns true when the parent is found somewhere in the\n *                    chain of parent nodes.\n * @private\n */\nfunction _hasParent(element, parent) {\n  while (element) {\n    if (element === parent) {\n      return true;\n    }\n    element = element.parentNode;\n  }\n  return false;\n}\n\n// utility functions\r\n// parse ASP.Net Date pattern,\r\n// for example '/Date(1198908717056)/' or '/Date(1198908717056-0700)/'\r\n// code from http://momentjs.com/\r\nconst ASPDateRegex = /^\\/?Date\\((-?\\d+)/i;\r\n// Color REs\r\nconst fullHexRE = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\r\nconst shortHexRE = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\nconst rgbRE = /^rgb\\( *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *\\)$/i;\r\nconst rgbaRE = /^rgba\\( *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *([01]|0?\\.\\d+) *\\)$/i;\r\n/**\r\n * Test whether given object is a number.\r\n *\r\n * @param value - Input value of unknown type.\r\n * @returns True if number, false otherwise.\r\n */\r\nfunction isNumber(value) {\r\n    return value instanceof Number || typeof value === \"number\";\r\n}\r\n/**\r\n * Remove everything in the DOM object.\r\n *\r\n * @param DOMobject - Node whose child nodes will be recursively deleted.\r\n */\r\nfunction recursiveDOMDelete(DOMobject) {\r\n    if (DOMobject) {\r\n        while (DOMobject.hasChildNodes() === true) {\r\n            const child = DOMobject.firstChild;\r\n            if (child) {\r\n                recursiveDOMDelete(child);\r\n                DOMobject.removeChild(child);\r\n            }\r\n        }\r\n    }\r\n}\r\n/**\r\n * Test whether given object is a string.\r\n *\r\n * @param value - Input value of unknown type.\r\n * @returns True if string, false otherwise.\r\n */\r\nfunction isString(value) {\r\n    return value instanceof String || typeof value === \"string\";\r\n}\r\n/**\r\n * Test whether given object is a object (not primitive or null).\r\n *\r\n * @param value - Input value of unknown type.\r\n * @returns True if not null object, false otherwise.\r\n */\r\nfunction isObject(value) {\r\n    return typeof value === \"object\" && value !== null;\r\n}\r\n/**\r\n * Test whether given object is a Date, or a String containing a Date.\r\n *\r\n * @param value - Input value of unknown type.\r\n * @returns True if Date instance or string date representation, false otherwise.\r\n */\r\nfunction isDate(value) {\r\n    if (value instanceof Date) {\r\n        return true;\r\n    }\r\n    else if (isString(value)) {\r\n        // test whether this string contains a date\r\n        const match = ASPDateRegex.exec(value);\r\n        if (match) {\r\n            return true;\r\n        }\r\n        else if (!isNaN(Date.parse(value))) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Copy property from b to a if property present in a.\r\n * If property in b explicitly set to null, delete it if `allowDeletion` set.\r\n *\r\n * Internal helper routine, should not be exported. Not added to `exports` for that reason.\r\n *\r\n * @param a - Target object.\r\n * @param b - Source object.\r\n * @param prop - Name of property to copy from b to a.\r\n * @param allowDeletion - If true, delete property in a if explicitly set to null in b.\r\n */\r\nfunction copyOrDelete(a, b, prop, allowDeletion) {\r\n    let doDeletion = false;\r\n    if (allowDeletion === true) {\r\n        doDeletion = b[prop] === null && a[prop] !== undefined;\r\n    }\r\n    if (doDeletion) {\r\n        delete a[prop];\r\n    }\r\n    else {\r\n        a[prop] = b[prop]; // Remember, this is a reference copy!\r\n    }\r\n}\r\n/**\r\n * Fill an object with a possibly partially defined other object.\r\n *\r\n * Only copies values for the properties already present in a.\r\n * That means an object is not created on a property if only the b object has it.\r\n *\r\n * @param a - The object that will have it's properties updated.\r\n * @param b - The object with property updates.\r\n * @param allowDeletion - If true, delete properties in a that are explicitly set to null in b.\r\n */\r\nfunction fillIfDefined(a, b, allowDeletion = false) {\r\n    // NOTE: iteration of properties of a\r\n    // NOTE: prototype properties iterated over as well\r\n    for (const prop in a) {\r\n        if (b[prop] !== undefined) {\r\n            if (b[prop] === null || typeof b[prop] !== \"object\") {\r\n                // Note: typeof null === 'object'\r\n                copyOrDelete(a, b, prop, allowDeletion);\r\n            }\r\n            else {\r\n                const aProp = a[prop];\r\n                const bProp = b[prop];\r\n                if (isObject(aProp) && isObject(bProp)) {\r\n                    fillIfDefined(aProp, bProp, allowDeletion);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n/**\r\n * Copy the values of all of the enumerable own properties from one or more source objects to a\r\n * target object. Returns the target object.\r\n *\r\n * @param target - The target object to copy to.\r\n * @param source - The source object from which to copy properties.\r\n * @returns The target object.\r\n */\r\nconst extend = Object.assign;\r\n/**\r\n * Extend object a with selected properties of object b or a series of objects.\r\n *\r\n * @remarks\r\n * Only properties with defined values are copied.\r\n * @param props - Properties to be copied to a.\r\n * @param a - The target.\r\n * @param others - The sources.\r\n * @returns Argument a.\r\n */\r\nfunction selectiveExtend(props, a, ...others) {\r\n    if (!Array.isArray(props)) {\r\n        throw new Error(\"Array with property names expected as first argument\");\r\n    }\r\n    for (const other of others) {\r\n        for (let p = 0; p < props.length; p++) {\r\n            const prop = props[p];\r\n            if (other && Object.prototype.hasOwnProperty.call(other, prop)) {\r\n                a[prop] = other[prop];\r\n            }\r\n        }\r\n    }\r\n    return a;\r\n}\r\n/**\r\n * Extend object a with selected properties of object b.\r\n * Only properties with defined values are copied.\r\n *\r\n * @remarks\r\n * Previous version of this routine implied that multiple source objects could\r\n * be used; however, the implementation was **wrong**. Since multiple (\\>1)\r\n * sources weren't used anywhere in the `vis.js` code, this has been removed\r\n * @param props - Names of first-level properties to copy over.\r\n * @param a - Target object.\r\n * @param b - Source object.\r\n * @param allowDeletion - If true, delete property in a if explicitly set to null in b.\r\n * @returns Argument a.\r\n */\r\nfunction selectiveDeepExtend(props, a, b, allowDeletion = false) {\r\n    // TODO: add support for Arrays to deepExtend\r\n    if (Array.isArray(b)) {\r\n        throw new TypeError(\"Arrays are not supported by deepExtend\");\r\n    }\r\n    for (let p = 0; p < props.length; p++) {\r\n        const prop = props[p];\r\n        if (Object.prototype.hasOwnProperty.call(b, prop)) {\r\n            if (b[prop] && b[prop].constructor === Object) {\r\n                if (a[prop] === undefined) {\r\n                    a[prop] = {};\r\n                }\r\n                if (a[prop].constructor === Object) {\r\n                    deepExtend(a[prop], b[prop], false, allowDeletion);\r\n                }\r\n                else {\r\n                    copyOrDelete(a, b, prop, allowDeletion);\r\n                }\r\n            }\r\n            else if (Array.isArray(b[prop])) {\r\n                throw new TypeError(\"Arrays are not supported by deepExtend\");\r\n            }\r\n            else {\r\n                copyOrDelete(a, b, prop, allowDeletion);\r\n            }\r\n        }\r\n    }\r\n    return a;\r\n}\r\n/**\r\n * Extend object `a` with properties of object `b`, ignoring properties which\r\n * are explicitly specified to be excluded.\r\n *\r\n * @remarks\r\n * The properties of `b` are considered for copying. Properties which are\r\n * themselves objects are are also extended. Only properties with defined\r\n * values are copied.\r\n * @param propsToExclude - Names of properties which should *not* be copied.\r\n * @param a - Object to extend.\r\n * @param b - Object to take properties from for extension.\r\n * @param allowDeletion - If true, delete properties in a that are explicitly\r\n * set to null in b.\r\n * @returns Argument a.\r\n */\r\nfunction selectiveNotDeepExtend(propsToExclude, a, b, allowDeletion = false) {\r\n    // TODO: add support for Arrays to deepExtend\r\n    // NOTE: array properties have an else-below; apparently, there is a problem here.\r\n    if (Array.isArray(b)) {\r\n        throw new TypeError(\"Arrays are not supported by deepExtend\");\r\n    }\r\n    for (const prop in b) {\r\n        if (!Object.prototype.hasOwnProperty.call(b, prop)) {\r\n            continue;\r\n        } // Handle local properties only\r\n        if (propsToExclude.includes(prop)) {\r\n            continue;\r\n        } // In exclusion list, skip\r\n        if (b[prop] && b[prop].constructor === Object) {\r\n            if (a[prop] === undefined) {\r\n                a[prop] = {};\r\n            }\r\n            if (a[prop].constructor === Object) {\r\n                deepExtend(a[prop], b[prop]); // NOTE: allowDeletion not propagated!\r\n            }\r\n            else {\r\n                copyOrDelete(a, b, prop, allowDeletion);\r\n            }\r\n        }\r\n        else if (Array.isArray(b[prop])) {\r\n            a[prop] = [];\r\n            for (let i = 0; i < b[prop].length; i++) {\r\n                a[prop].push(b[prop][i]);\r\n            }\r\n        }\r\n        else {\r\n            copyOrDelete(a, b, prop, allowDeletion);\r\n        }\r\n    }\r\n    return a;\r\n}\r\n/**\r\n * Deep extend an object a with the properties of object b.\r\n *\r\n * @param a - Target object.\r\n * @param b - Source object.\r\n * @param protoExtend - If true, the prototype values will also be extended.\r\n * (That is the options objects that inherit from others will also get the\r\n * inherited options).\r\n * @param allowDeletion - If true, the values of fields that are null will be deleted.\r\n * @returns Argument a.\r\n */\r\nfunction deepExtend(a, b, protoExtend = false, allowDeletion = false) {\r\n    for (const prop in b) {\r\n        if (Object.prototype.hasOwnProperty.call(b, prop) || protoExtend === true) {\r\n            if (typeof b[prop] === \"object\" &&\r\n                b[prop] !== null &&\r\n                Object.getPrototypeOf(b[prop]) === Object.prototype) {\r\n                if (a[prop] === undefined) {\r\n                    a[prop] = deepExtend({}, b[prop], protoExtend); // NOTE: allowDeletion not propagated!\r\n                }\r\n                else if (typeof a[prop] === \"object\" &&\r\n                    a[prop] !== null &&\r\n                    Object.getPrototypeOf(a[prop]) === Object.prototype) {\r\n                    deepExtend(a[prop], b[prop], protoExtend); // NOTE: allowDeletion not propagated!\r\n                }\r\n                else {\r\n                    copyOrDelete(a, b, prop, allowDeletion);\r\n                }\r\n            }\r\n            else if (Array.isArray(b[prop])) {\r\n                a[prop] = b[prop].slice();\r\n            }\r\n            else {\r\n                copyOrDelete(a, b, prop, allowDeletion);\r\n            }\r\n        }\r\n    }\r\n    return a;\r\n}\r\n/**\r\n * Test whether all elements in two arrays are equal.\r\n *\r\n * @param a - First array.\r\n * @param b - Second array.\r\n * @returns True if both arrays have the same length and same elements (1 = '1').\r\n */\r\nfunction equalArray(a, b) {\r\n    if (a.length !== b.length) {\r\n        return false;\r\n    }\r\n    for (let i = 0, len = a.length; i < len; i++) {\r\n        if (a[i] != b[i]) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\n/**\r\n * Get the type of an object, for example exports.getType([]) returns 'Array'.\r\n *\r\n * @param object - Input value of unknown type.\r\n * @returns Detected type.\r\n */\r\nfunction getType(object) {\r\n    const type = typeof object;\r\n    if (type === \"object\") {\r\n        if (object === null) {\r\n            return \"null\";\r\n        }\r\n        if (object instanceof Boolean) {\r\n            return \"Boolean\";\r\n        }\r\n        if (object instanceof Number) {\r\n            return \"Number\";\r\n        }\r\n        if (object instanceof String) {\r\n            return \"String\";\r\n        }\r\n        if (Array.isArray(object)) {\r\n            return \"Array\";\r\n        }\r\n        if (object instanceof Date) {\r\n            return \"Date\";\r\n        }\r\n        return \"Object\";\r\n    }\r\n    if (type === \"number\") {\r\n        return \"Number\";\r\n    }\r\n    if (type === \"boolean\") {\r\n        return \"Boolean\";\r\n    }\r\n    if (type === \"string\") {\r\n        return \"String\";\r\n    }\r\n    if (type === undefined) {\r\n        return \"undefined\";\r\n    }\r\n    return type;\r\n}\r\n/**\r\n * Used to extend an array and copy it. This is used to propagate paths recursively.\r\n *\r\n * @param arr - First part.\r\n * @param newValue - The value to be aadded into the array.\r\n * @returns A new array with all items from arr and newValue (which is last).\r\n */\r\nfunction copyAndExtendArray(arr, newValue) {\r\n    return [...arr, newValue];\r\n}\r\n/**\r\n * Used to extend an array and copy it. This is used to propagate paths recursively.\r\n *\r\n * @param arr - The array to be copied.\r\n * @returns Shallow copy of arr.\r\n */\r\nfunction copyArray(arr) {\r\n    return arr.slice();\r\n}\r\n/**\r\n * Retrieve the absolute left value of a DOM element.\r\n *\r\n * @param elem - A dom element, for example a div.\r\n * @returns The absolute left position of this element in the browser page.\r\n */\r\nfunction getAbsoluteLeft(elem) {\r\n    return elem.getBoundingClientRect().left;\r\n}\r\n/**\r\n * Retrieve the absolute right value of a DOM element.\r\n *\r\n * @param elem - A dom element, for example a div.\r\n * @returns The absolute right position of this element in the browser page.\r\n */\r\nfunction getAbsoluteRight(elem) {\r\n    return elem.getBoundingClientRect().right;\r\n}\r\n/**\r\n * Retrieve the absolute top value of a DOM element.\r\n *\r\n * @param elem - A dom element, for example a div.\r\n * @returns The absolute top position of this element in the browser page.\r\n */\r\nfunction getAbsoluteTop(elem) {\r\n    return elem.getBoundingClientRect().top;\r\n}\r\n/**\r\n * Add a className to the given elements style.\r\n *\r\n * @param elem - The element to which the classes will be added.\r\n * @param classNames - Space separated list of classes.\r\n */\r\nfunction addClassName(elem, classNames) {\r\n    let classes = elem.className.split(\" \");\r\n    const newClasses = classNames.split(\" \");\r\n    classes = classes.concat(newClasses.filter(function (className) {\r\n        return !classes.includes(className);\r\n    }));\r\n    elem.className = classes.join(\" \");\r\n}\r\n/**\r\n * Remove a className from the given elements style.\r\n *\r\n * @param elem - The element from which the classes will be removed.\r\n * @param classNames - Space separated list of classes.\r\n */\r\nfunction removeClassName(elem, classNames) {\r\n    let classes = elem.className.split(\" \");\r\n    const oldClasses = classNames.split(\" \");\r\n    classes = classes.filter(function (className) {\r\n        return !oldClasses.includes(className);\r\n    });\r\n    elem.className = classes.join(\" \");\r\n}\r\n/**\r\n * For each method for both arrays and objects.\r\n * In case of an array, the built-in Array.forEach() is applied (**No, it's not!**).\r\n * In case of an Object, the method loops over all properties of the object.\r\n *\r\n * @param object - An Object or Array to be iterated over.\r\n * @param callback - Array.forEach-like callback.\r\n */\r\nfunction forEach(object, callback) {\r\n    if (Array.isArray(object)) {\r\n        // array\r\n        const len = object.length;\r\n        for (let i = 0; i < len; i++) {\r\n            callback(object[i], i, object);\r\n        }\r\n    }\r\n    else {\r\n        // object\r\n        for (const key in object) {\r\n            if (Object.prototype.hasOwnProperty.call(object, key)) {\r\n                callback(object[key], key, object);\r\n            }\r\n        }\r\n    }\r\n}\r\n/**\r\n * Convert an object into an array: all objects properties are put into the array. The resulting array is unordered.\r\n *\r\n * @param o - Object that contains the properties and methods.\r\n * @returns An array of unordered values.\r\n */\r\nconst toArray = Object.values;\r\n/**\r\n * Update a property in an object.\r\n *\r\n * @param object - The object whose property will be updated.\r\n * @param key - Name of the property to be updated.\r\n * @param value - The new value to be assigned.\r\n * @returns Whether the value was updated (true) or already strictly the same in the original object (false).\r\n */\r\nfunction updateProperty(object, key, value) {\r\n    if (object[key] !== value) {\r\n        object[key] = value;\r\n        return true;\r\n    }\r\n    else {\r\n        return false;\r\n    }\r\n}\r\n/**\r\n * Throttle the given function to be only executed once per animation frame.\r\n *\r\n * @param fn - The original function.\r\n * @returns The throttled function.\r\n */\r\nfunction throttle(fn) {\r\n    let scheduled = false;\r\n    return () => {\r\n        if (!scheduled) {\r\n            scheduled = true;\r\n            requestAnimationFrame(() => {\r\n                scheduled = false;\r\n                fn();\r\n            });\r\n        }\r\n    };\r\n}\r\n/**\r\n * Add and event listener. Works for all browsers.\r\n *\r\n * @param element - The element to bind the event listener to.\r\n * @param action - Same as Element.addEventListener(action, —, —).\r\n * @param listener - Same as Element.addEventListener(—, listener, —).\r\n * @param useCapture - Same as Element.addEventListener(—, —, useCapture).\r\n */\r\nfunction addEventListener(element, action, listener, useCapture) {\r\n    if (element.addEventListener) {\r\n        if (useCapture === undefined) {\r\n            useCapture = false;\r\n        }\r\n        if (action === \"mousewheel\" && navigator.userAgent.includes(\"Firefox\")) {\r\n            action = \"DOMMouseScroll\"; // For Firefox\r\n        }\r\n        element.addEventListener(action, listener, useCapture);\r\n    }\r\n    else {\r\n        // @TODO: IE types? Does anyone care?\r\n        element.attachEvent(\"on\" + action, listener); // IE browsers\r\n    }\r\n}\r\n/**\r\n * Remove an event listener from an element.\r\n *\r\n * @param element - The element to bind the event listener to.\r\n * @param action - Same as Element.removeEventListener(action, —, —).\r\n * @param listener - Same as Element.removeEventListener(—, listener, —).\r\n * @param useCapture - Same as Element.removeEventListener(—, —, useCapture).\r\n */\r\nfunction removeEventListener(element, action, listener, useCapture) {\r\n    if (element.removeEventListener) {\r\n        // non-IE browsers\r\n        if (useCapture === undefined) {\r\n            useCapture = false;\r\n        }\r\n        if (action === \"mousewheel\" && navigator.userAgent.includes(\"Firefox\")) {\r\n            action = \"DOMMouseScroll\"; // For Firefox\r\n        }\r\n        element.removeEventListener(action, listener, useCapture);\r\n    }\r\n    else {\r\n        // @TODO: IE types? Does anyone care?\r\n        element.detachEvent(\"on\" + action, listener); // IE browsers\r\n    }\r\n}\r\n/**\r\n * Cancels the event's default action if it is cancelable, without stopping further propagation of the event.\r\n *\r\n * @param event - The event whose default action should be prevented.\r\n */\r\nfunction preventDefault(event) {\r\n    if (!event) {\r\n        event = window.event;\r\n    }\r\n    if (!event) ;\r\n    else if (event.preventDefault) {\r\n        event.preventDefault(); // non-IE browsers\r\n    }\r\n    else {\r\n        // @TODO: IE types? Does anyone care?\r\n        event.returnValue = false; // IE browsers\r\n    }\r\n}\r\n/**\r\n * Get HTML element which is the target of the event.\r\n *\r\n * @param event - The event.\r\n * @returns The element or null if not obtainable.\r\n */\r\nfunction getTarget(event = window.event) {\r\n    // code from http://www.quirksmode.org/js/events_properties.html\r\n    // @TODO: EventTarget can be almost anything, is it okay to return only Elements?\r\n    let target = null;\r\n    if (!event) ;\r\n    else if (event.target) {\r\n        target = event.target;\r\n    }\r\n    else if (event.srcElement) {\r\n        target = event.srcElement;\r\n    }\r\n    if (!(target instanceof Element)) {\r\n        return null;\r\n    }\r\n    if (target.nodeType != null && target.nodeType == 3) {\r\n        // defeat Safari bug\r\n        target = target.parentNode;\r\n        if (!(target instanceof Element)) {\r\n            return null;\r\n        }\r\n    }\r\n    return target;\r\n}\r\n/**\r\n * Check if given element contains given parent somewhere in the DOM tree.\r\n *\r\n * @param element - The element to be tested.\r\n * @param parent - The ancestor (not necessarily parent) of the element.\r\n * @returns True if parent is an ancestor of the element, false otherwise.\r\n */\r\nfunction hasParent(element, parent) {\r\n    let elem = element;\r\n    while (elem) {\r\n        if (elem === parent) {\r\n            return true;\r\n        }\r\n        else if (elem.parentNode) {\r\n            elem = elem.parentNode;\r\n        }\r\n        else {\r\n            return false;\r\n        }\r\n    }\r\n    return false;\r\n}\r\nconst option = {\r\n    /**\r\n     * Convert a value into a boolean.\r\n     *\r\n     * @param value - Value to be converted intoboolean, a function will be executed as `(() => unknown)`.\r\n     * @param defaultValue - If the value or the return value of the function == null then this will be returned.\r\n     * @returns Corresponding boolean value, if none then the default value, if none then null.\r\n     */\r\n    asBoolean(value, defaultValue) {\r\n        if (typeof value == \"function\") {\r\n            value = value();\r\n        }\r\n        if (value != null) {\r\n            return value != false;\r\n        }\r\n        return defaultValue || null;\r\n    },\r\n    /**\r\n     * Convert a value into a number.\r\n     *\r\n     * @param value - Value to be converted intonumber, a function will be executed as `(() => unknown)`.\r\n     * @param defaultValue - If the value or the return value of the function == null then this will be returned.\r\n     * @returns Corresponding **boxed** number value, if none then the default value, if none then null.\r\n     */\r\n    asNumber(value, defaultValue) {\r\n        if (typeof value == \"function\") {\r\n            value = value();\r\n        }\r\n        if (value != null) {\r\n            return Number(value) || defaultValue || null;\r\n        }\r\n        return defaultValue || null;\r\n    },\r\n    /**\r\n     * Convert a value into a string.\r\n     *\r\n     * @param value - Value to be converted intostring, a function will be executed as `(() => unknown)`.\r\n     * @param defaultValue - If the value or the return value of the function == null then this will be returned.\r\n     * @returns Corresponding **boxed** string value, if none then the default value, if none then null.\r\n     */\r\n    asString(value, defaultValue) {\r\n        if (typeof value == \"function\") {\r\n            value = value();\r\n        }\r\n        if (value != null) {\r\n            return String(value);\r\n        }\r\n        return defaultValue || null;\r\n    },\r\n    /**\r\n     * Convert a value into a size.\r\n     *\r\n     * @param value - Value to be converted intosize, a function will be executed as `(() => unknown)`.\r\n     * @param defaultValue - If the value or the return value of the function == null then this will be returned.\r\n     * @returns Corresponding string value (number + 'px'), if none then the default value, if none then null.\r\n     */\r\n    asSize(value, defaultValue) {\r\n        if (typeof value == \"function\") {\r\n            value = value();\r\n        }\r\n        if (isString(value)) {\r\n            return value;\r\n        }\r\n        else if (isNumber(value)) {\r\n            return value + \"px\";\r\n        }\r\n        else {\r\n            return defaultValue || null;\r\n        }\r\n    },\r\n    /**\r\n     * Convert a value into a DOM Element.\r\n     *\r\n     * @param value - Value to be converted into DOM Element, a function will be executed as `(() => unknown)`.\r\n     * @param defaultValue - If the value or the return value of the function == null then this will be returned.\r\n     * @returns The DOM Element, if none then the default value, if none then null.\r\n     */\r\n    asElement(value, defaultValue) {\r\n        if (typeof value == \"function\") {\r\n            value = value();\r\n        }\r\n        return value || defaultValue || null;\r\n    },\r\n};\r\n/**\r\n * Convert hex color string into RGB color object.\r\n *\r\n * @remarks\r\n * {@link http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb}\r\n * @param hex - Hex color string (3 or 6 digits, with or without #).\r\n * @returns RGB color object.\r\n */\r\nfunction hexToRGB(hex) {\r\n    let result;\r\n    switch (hex.length) {\r\n        case 3:\r\n        case 4:\r\n            result = shortHexRE.exec(hex);\r\n            return result\r\n                ? {\r\n                    r: parseInt(result[1] + result[1], 16),\r\n                    g: parseInt(result[2] + result[2], 16),\r\n                    b: parseInt(result[3] + result[3], 16),\r\n                }\r\n                : null;\r\n        case 6:\r\n        case 7:\r\n            result = fullHexRE.exec(hex);\r\n            return result\r\n                ? {\r\n                    r: parseInt(result[1], 16),\r\n                    g: parseInt(result[2], 16),\r\n                    b: parseInt(result[3], 16),\r\n                }\r\n                : null;\r\n        default:\r\n            return null;\r\n    }\r\n}\r\n/**\r\n * This function takes string color in hex or RGB format and adds the opacity, RGBA is passed through unchanged.\r\n *\r\n * @param color - The color string (hex, RGB, RGBA).\r\n * @param opacity - The new opacity.\r\n * @returns RGBA string, for example 'rgba(255, 0, 127, 0.3)'.\r\n */\r\nfunction overrideOpacity(color, opacity) {\r\n    if (color.includes(\"rgba\")) {\r\n        return color;\r\n    }\r\n    else if (color.includes(\"rgb\")) {\r\n        const rgb = color\r\n            .substr(color.indexOf(\"(\") + 1)\r\n            .replace(\")\", \"\")\r\n            .split(\",\");\r\n        return \"rgba(\" + rgb[0] + \",\" + rgb[1] + \",\" + rgb[2] + \",\" + opacity + \")\";\r\n    }\r\n    else {\r\n        const rgb = hexToRGB(color);\r\n        if (rgb == null) {\r\n            return color;\r\n        }\r\n        else {\r\n            return \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + opacity + \")\";\r\n        }\r\n    }\r\n}\r\n/**\r\n * Convert RGB \\<0, 255\\> into hex color string.\r\n *\r\n * @param red - Red channel.\r\n * @param green - Green channel.\r\n * @param blue - Blue channel.\r\n * @returns Hex color string (for example: '#0acdc0').\r\n */\r\nfunction RGBToHex(red, green, blue) {\r\n    return (\"#\" + ((1 << 24) + (red << 16) + (green << 8) + blue).toString(16).slice(1));\r\n}\r\n/**\r\n * Parse a color property into an object with border, background, and highlight colors.\r\n *\r\n * @param inputColor - Shorthand color string or input color object.\r\n * @param defaultColor - Full color object to fill in missing values in inputColor.\r\n * @returns Color object.\r\n */\r\nfunction parseColor(inputColor, defaultColor) {\r\n    if (isString(inputColor)) {\r\n        let colorStr = inputColor;\r\n        if (isValidRGB(colorStr)) {\r\n            const rgb = colorStr\r\n                .substr(4)\r\n                .substr(0, colorStr.length - 5)\r\n                .split(\",\")\r\n                .map(function (value) {\r\n                return parseInt(value);\r\n            });\r\n            colorStr = RGBToHex(rgb[0], rgb[1], rgb[2]);\r\n        }\r\n        if (isValidHex(colorStr) === true) {\r\n            const hsv = hexToHSV(colorStr);\r\n            const lighterColorHSV = {\r\n                h: hsv.h,\r\n                s: hsv.s * 0.8,\r\n                v: Math.min(1, hsv.v * 1.02),\r\n            };\r\n            const darkerColorHSV = {\r\n                h: hsv.h,\r\n                s: Math.min(1, hsv.s * 1.25),\r\n                v: hsv.v * 0.8,\r\n            };\r\n            const darkerColorHex = HSVToHex(darkerColorHSV.h, darkerColorHSV.s, darkerColorHSV.v);\r\n            const lighterColorHex = HSVToHex(lighterColorHSV.h, lighterColorHSV.s, lighterColorHSV.v);\r\n            return {\r\n                background: colorStr,\r\n                border: darkerColorHex,\r\n                highlight: {\r\n                    background: lighterColorHex,\r\n                    border: darkerColorHex,\r\n                },\r\n                hover: {\r\n                    background: lighterColorHex,\r\n                    border: darkerColorHex,\r\n                },\r\n            };\r\n        }\r\n        else {\r\n            return {\r\n                background: colorStr,\r\n                border: colorStr,\r\n                highlight: {\r\n                    background: colorStr,\r\n                    border: colorStr,\r\n                },\r\n                hover: {\r\n                    background: colorStr,\r\n                    border: colorStr,\r\n                },\r\n            };\r\n        }\r\n    }\r\n    else {\r\n        if (defaultColor) {\r\n            const color = {\r\n                background: inputColor.background || defaultColor.background,\r\n                border: inputColor.border || defaultColor.border,\r\n                highlight: isString(inputColor.highlight)\r\n                    ? {\r\n                        border: inputColor.highlight,\r\n                        background: inputColor.highlight,\r\n                    }\r\n                    : {\r\n                        background: (inputColor.highlight && inputColor.highlight.background) ||\r\n                            defaultColor.highlight.background,\r\n                        border: (inputColor.highlight && inputColor.highlight.border) ||\r\n                            defaultColor.highlight.border,\r\n                    },\r\n                hover: isString(inputColor.hover)\r\n                    ? {\r\n                        border: inputColor.hover,\r\n                        background: inputColor.hover,\r\n                    }\r\n                    : {\r\n                        border: (inputColor.hover && inputColor.hover.border) ||\r\n                            defaultColor.hover.border,\r\n                        background: (inputColor.hover && inputColor.hover.background) ||\r\n                            defaultColor.hover.background,\r\n                    },\r\n            };\r\n            return color;\r\n        }\r\n        else {\r\n            const color = {\r\n                background: inputColor.background || undefined,\r\n                border: inputColor.border || undefined,\r\n                highlight: isString(inputColor.highlight)\r\n                    ? {\r\n                        border: inputColor.highlight,\r\n                        background: inputColor.highlight,\r\n                    }\r\n                    : {\r\n                        background: (inputColor.highlight && inputColor.highlight.background) ||\r\n                            undefined,\r\n                        border: (inputColor.highlight && inputColor.highlight.border) ||\r\n                            undefined,\r\n                    },\r\n                hover: isString(inputColor.hover)\r\n                    ? {\r\n                        border: inputColor.hover,\r\n                        background: inputColor.hover,\r\n                    }\r\n                    : {\r\n                        border: (inputColor.hover && inputColor.hover.border) || undefined,\r\n                        background: (inputColor.hover && inputColor.hover.background) || undefined,\r\n                    },\r\n            };\r\n            return color;\r\n        }\r\n    }\r\n}\r\n/**\r\n * Convert RGB \\<0, 255\\> into HSV object.\r\n *\r\n * @remarks\r\n * {@link http://www.javascripter.net/faq/rgb2hsv.htm}\r\n * @param red - Red channel.\r\n * @param green - Green channel.\r\n * @param blue - Blue channel.\r\n * @returns HSV color object.\r\n */\r\nfunction RGBToHSV(red, green, blue) {\r\n    red = red / 255;\r\n    green = green / 255;\r\n    blue = blue / 255;\r\n    const minRGB = Math.min(red, Math.min(green, blue));\r\n    const maxRGB = Math.max(red, Math.max(green, blue));\r\n    // Black-gray-white\r\n    if (minRGB === maxRGB) {\r\n        return { h: 0, s: 0, v: minRGB };\r\n    }\r\n    // Colors other than black-gray-white:\r\n    const d = red === minRGB ? green - blue : blue === minRGB ? red - green : blue - red;\r\n    const h = red === minRGB ? 3 : blue === minRGB ? 1 : 5;\r\n    const hue = (60 * (h - d / (maxRGB - minRGB))) / 360;\r\n    const saturation = (maxRGB - minRGB) / maxRGB;\r\n    const value = maxRGB;\r\n    return { h: hue, s: saturation, v: value };\r\n}\r\n/**\r\n * Split a string with css styles into an object with key/values.\r\n *\r\n * @param cssText - CSS source code to split into key/value object.\r\n * @returns Key/value object corresponding to {@link cssText}.\r\n */\r\nfunction splitCSSText(cssText) {\r\n    const tmpEllement = document.createElement(\"div\");\r\n    const styles = {};\r\n    tmpEllement.style.cssText = cssText;\r\n    for (let i = 0; i < tmpEllement.style.length; ++i) {\r\n        styles[tmpEllement.style[i]] = tmpEllement.style.getPropertyValue(tmpEllement.style[i]);\r\n    }\r\n    return styles;\r\n}\r\n/**\r\n * Append a string with css styles to an element.\r\n *\r\n * @param element - The element that will receive new styles.\r\n * @param cssText - The styles to be appended.\r\n */\r\nfunction addCssText(element, cssText) {\r\n    const cssStyle = splitCSSText(cssText);\r\n    for (const [key, value] of Object.entries(cssStyle)) {\r\n        element.style.setProperty(key, value);\r\n    }\r\n}\r\n/**\r\n * Remove a string with css styles from an element.\r\n *\r\n * @param element - The element from which styles should be removed.\r\n * @param cssText - The styles to be removed.\r\n */\r\nfunction removeCssText(element, cssText) {\r\n    const cssStyle = splitCSSText(cssText);\r\n    for (const key of Object.keys(cssStyle)) {\r\n        element.style.removeProperty(key);\r\n    }\r\n}\r\n/**\r\n * Convert HSV \\<0, 1\\> into RGB color object.\r\n *\r\n * @remarks\r\n * {@link https://gist.github.com/mjijackson/5311256}\r\n * @param h - Hue.\r\n * @param s - Saturation.\r\n * @param v - Value.\r\n * @returns RGB color object.\r\n */\r\nfunction HSVToRGB(h, s, v) {\r\n    let r;\r\n    let g;\r\n    let b;\r\n    const i = Math.floor(h * 6);\r\n    const f = h * 6 - i;\r\n    const p = v * (1 - s);\r\n    const q = v * (1 - f * s);\r\n    const t = v * (1 - (1 - f) * s);\r\n    switch (i % 6) {\r\n        case 0:\r\n            (r = v), (g = t), (b = p);\r\n            break;\r\n        case 1:\r\n            (r = q), (g = v), (b = p);\r\n            break;\r\n        case 2:\r\n            (r = p), (g = v), (b = t);\r\n            break;\r\n        case 3:\r\n            (r = p), (g = q), (b = v);\r\n            break;\r\n        case 4:\r\n            (r = t), (g = p), (b = v);\r\n            break;\r\n        case 5:\r\n            (r = v), (g = p), (b = q);\r\n            break;\r\n    }\r\n    return {\r\n        r: Math.floor(r * 255),\r\n        g: Math.floor(g * 255),\r\n        b: Math.floor(b * 255),\r\n    };\r\n}\r\n/**\r\n * Convert HSV \\<0, 1\\> into hex color string.\r\n *\r\n * @param h - Hue.\r\n * @param s - Saturation.\r\n * @param v - Value.\r\n * @returns Hex color string.\r\n */\r\nfunction HSVToHex(h, s, v) {\r\n    const rgb = HSVToRGB(h, s, v);\r\n    return RGBToHex(rgb.r, rgb.g, rgb.b);\r\n}\r\n/**\r\n * Convert hex color string into HSV \\<0, 1\\>.\r\n *\r\n * @param hex - Hex color string.\r\n * @returns HSV color object.\r\n */\r\nfunction hexToHSV(hex) {\r\n    const rgb = hexToRGB(hex);\r\n    if (!rgb) {\r\n        throw new TypeError(`'${hex}' is not a valid color.`);\r\n    }\r\n    return RGBToHSV(rgb.r, rgb.g, rgb.b);\r\n}\r\n/**\r\n * Validate hex color string.\r\n *\r\n * @param hex - Unknown string that may contain a color.\r\n * @returns True if the string is valid, false otherwise.\r\n */\r\nfunction isValidHex(hex) {\r\n    const isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);\r\n    return isOk;\r\n}\r\n/**\r\n * Validate RGB color string.\r\n *\r\n * @param rgb - Unknown string that may contain a color.\r\n * @returns True if the string is valid, false otherwise.\r\n */\r\nfunction isValidRGB(rgb) {\r\n    return rgbRE.test(rgb);\r\n}\r\n/**\r\n * Validate RGBA color string.\r\n *\r\n * @param rgba - Unknown string that may contain a color.\r\n * @returns True if the string is valid, false otherwise.\r\n */\r\nfunction isValidRGBA(rgba) {\r\n    return rgbaRE.test(rgba);\r\n}\r\n/**\r\n * This recursively redirects the prototype of JSON objects to the referenceObject.\r\n * This is used for default options.\r\n *\r\n * @param fields - Names of properties to be bridged.\r\n * @param referenceObject - The original object.\r\n * @returns A new object inheriting from the referenceObject.\r\n */\r\nfunction selectiveBridgeObject(fields, referenceObject) {\r\n    if (referenceObject !== null && typeof referenceObject === \"object\") {\r\n        // !!! typeof null === 'object'\r\n        const objectTo = Object.create(referenceObject);\r\n        for (let i = 0; i < fields.length; i++) {\r\n            if (Object.prototype.hasOwnProperty.call(referenceObject, fields[i])) {\r\n                if (typeof referenceObject[fields[i]] == \"object\") {\r\n                    objectTo[fields[i]] = bridgeObject(referenceObject[fields[i]]);\r\n                }\r\n            }\r\n        }\r\n        return objectTo;\r\n    }\r\n    else {\r\n        return null;\r\n    }\r\n}\r\n/**\r\n * This recursively redirects the prototype of JSON objects to the referenceObject.\r\n * This is used for default options.\r\n *\r\n * @param referenceObject - The original object.\r\n * @returns The Element if the referenceObject is an Element, or a new object inheriting from the referenceObject.\r\n */\r\nfunction bridgeObject(referenceObject) {\r\n    if (referenceObject === null || typeof referenceObject !== \"object\") {\r\n        return null;\r\n    }\r\n    if (referenceObject instanceof Element) {\r\n        // Avoid bridging DOM objects\r\n        return referenceObject;\r\n    }\r\n    const objectTo = Object.create(referenceObject);\r\n    for (const i in referenceObject) {\r\n        if (Object.prototype.hasOwnProperty.call(referenceObject, i)) {\r\n            if (typeof referenceObject[i] == \"object\") {\r\n                objectTo[i] = bridgeObject(referenceObject[i]);\r\n            }\r\n        }\r\n    }\r\n    return objectTo;\r\n}\r\n/**\r\n * This method provides a stable sort implementation, very fast for presorted data.\r\n *\r\n * @param a - The array to be sorted (in-place).\r\n * @param compare - An order comparator.\r\n * @returns The argument a.\r\n */\r\nfunction insertSort(a, compare) {\r\n    for (let i = 0; i < a.length; i++) {\r\n        const k = a[i];\r\n        let j;\r\n        for (j = i; j > 0 && compare(k, a[j - 1]) < 0; j--) {\r\n            a[j] = a[j - 1];\r\n        }\r\n        a[j] = k;\r\n    }\r\n    return a;\r\n}\r\n/**\r\n * This is used to set the options of subobjects in the options object.\r\n *\r\n * A requirement of these subobjects is that they have an 'enabled' element\r\n * which is optional for the user but mandatory for the program.\r\n *\r\n * The added value here of the merge is that option 'enabled' is set as required.\r\n *\r\n * @param mergeTarget - Either this.options or the options used for the groups.\r\n * @param options - Options.\r\n * @param option - Option key in the options argument.\r\n * @param globalOptions - Global options, passed in to determine value of option 'enabled'.\r\n */\r\nfunction mergeOptions(mergeTarget, options, option, globalOptions = {}) {\r\n    // Local helpers\r\n    const isPresent = function (obj) {\r\n        return obj !== null && obj !== undefined;\r\n    };\r\n    const isObject = function (obj) {\r\n        return obj !== null && typeof obj === \"object\";\r\n    };\r\n    // https://stackoverflow.com/a/34491287/1223531\r\n    const isEmpty = function (obj) {\r\n        for (const x in obj) {\r\n            if (Object.prototype.hasOwnProperty.call(obj, x)) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    };\r\n    // Guards\r\n    if (!isObject(mergeTarget)) {\r\n        throw new Error(\"Parameter mergeTarget must be an object\");\r\n    }\r\n    if (!isObject(options)) {\r\n        throw new Error(\"Parameter options must be an object\");\r\n    }\r\n    if (!isPresent(option)) {\r\n        throw new Error(\"Parameter option must have a value\");\r\n    }\r\n    if (!isObject(globalOptions)) {\r\n        throw new Error(\"Parameter globalOptions must be an object\");\r\n    }\r\n    //\r\n    // Actual merge routine, separated from main logic\r\n    // Only a single level of options is merged. Deeper levels are ref'd. This may actually be an issue.\r\n    //\r\n    const doMerge = function (target, options, option) {\r\n        if (!isObject(target[option])) {\r\n            target[option] = {};\r\n        }\r\n        const src = options[option];\r\n        const dst = target[option];\r\n        for (const prop in src) {\r\n            if (Object.prototype.hasOwnProperty.call(src, prop)) {\r\n                dst[prop] = src[prop];\r\n            }\r\n        }\r\n    };\r\n    // Local initialization\r\n    const srcOption = options[option];\r\n    const globalPassed = isObject(globalOptions) && !isEmpty(globalOptions);\r\n    const globalOption = globalPassed ? globalOptions[option] : undefined;\r\n    const globalEnabled = globalOption ? globalOption.enabled : undefined;\r\n    /////////////////////////////////////////\r\n    // Main routine\r\n    /////////////////////////////////////////\r\n    if (srcOption === undefined) {\r\n        return; // Nothing to do\r\n    }\r\n    if (typeof srcOption === \"boolean\") {\r\n        if (!isObject(mergeTarget[option])) {\r\n            mergeTarget[option] = {};\r\n        }\r\n        mergeTarget[option].enabled = srcOption;\r\n        return;\r\n    }\r\n    if (srcOption === null && !isObject(mergeTarget[option])) {\r\n        // If possible, explicit copy from globals\r\n        if (isPresent(globalOption)) {\r\n            mergeTarget[option] = Object.create(globalOption);\r\n        }\r\n        else {\r\n            return; // Nothing to do\r\n        }\r\n    }\r\n    if (!isObject(srcOption)) {\r\n        return;\r\n    }\r\n    //\r\n    // Ensure that 'enabled' is properly set. It is required internally\r\n    // Note that the value from options will always overwrite the existing value\r\n    //\r\n    let enabled = true; // default value\r\n    if (srcOption.enabled !== undefined) {\r\n        enabled = srcOption.enabled;\r\n    }\r\n    else {\r\n        // Take from globals, if present\r\n        if (globalEnabled !== undefined) {\r\n            enabled = globalOption.enabled;\r\n        }\r\n    }\r\n    doMerge(mergeTarget, options, option);\r\n    mergeTarget[option].enabled = enabled;\r\n}\r\n/**\r\n * This function does a binary search for a visible item in a sorted list. If we find a visible item, the code that uses\r\n * this function will then iterate in both directions over this sorted list to find all visible items.\r\n *\r\n * @param orderedItems - Items ordered by start.\r\n * @param comparator - -1 is lower, 0 is equal, 1 is higher.\r\n * @param field - Property name on an item (That is item[field]).\r\n * @param field2 - Second property name on an item (That is item[field][field2]).\r\n * @returns Index of the found item or -1 if nothing was found.\r\n */\r\nfunction binarySearchCustom(orderedItems, comparator, field, field2) {\r\n    const maxIterations = 10000;\r\n    let iteration = 0;\r\n    let low = 0;\r\n    let high = orderedItems.length - 1;\r\n    while (low <= high && iteration < maxIterations) {\r\n        const middle = Math.floor((low + high) / 2);\r\n        const item = orderedItems[middle];\r\n        const value = field2 === undefined ? item[field] : item[field][field2];\r\n        const searchResult = comparator(value);\r\n        if (searchResult == 0) {\r\n            // jihaa, found a visible item!\r\n            return middle;\r\n        }\r\n        else if (searchResult == -1) {\r\n            // it is too small --> increase low\r\n            low = middle + 1;\r\n        }\r\n        else {\r\n            // it is too big --> decrease high\r\n            high = middle - 1;\r\n        }\r\n        iteration++;\r\n    }\r\n    return -1;\r\n}\r\n/**\r\n * This function does a binary search for a specific value in a sorted array.\r\n * If it does not exist but is in between of two values, we return either the\r\n * one before or the one after, depending on user input If it is found, we\r\n * return the index, else -1.\r\n *\r\n * @param orderedItems - Sorted array.\r\n * @param target - The searched value.\r\n * @param field - Name of the property in items to be searched.\r\n * @param sidePreference - If the target is between two values, should the index of the before or the after be returned?\r\n * @param comparator - An optional comparator, returning -1, 0, 1 for \\<, ===, \\>.\r\n * @returns The index of found value or -1 if nothing was found.\r\n */\r\nfunction binarySearchValue(orderedItems, target, field, sidePreference, comparator) {\r\n    const maxIterations = 10000;\r\n    let iteration = 0;\r\n    let low = 0;\r\n    let high = orderedItems.length - 1;\r\n    let prevValue;\r\n    let value;\r\n    let nextValue;\r\n    let middle;\r\n    comparator =\r\n        comparator != undefined\r\n            ? comparator\r\n            : function (a, b) {\r\n                return a == b ? 0 : a < b ? -1 : 1;\r\n            };\r\n    while (low <= high && iteration < maxIterations) {\r\n        // get a new guess\r\n        middle = Math.floor(0.5 * (high + low));\r\n        prevValue = orderedItems[Math.max(0, middle - 1)][field];\r\n        value = orderedItems[middle][field];\r\n        nextValue =\r\n            orderedItems[Math.min(orderedItems.length - 1, middle + 1)][field];\r\n        if (comparator(value, target) == 0) {\r\n            // we found the target\r\n            return middle;\r\n        }\r\n        else if (comparator(prevValue, target) < 0 &&\r\n            comparator(value, target) > 0) {\r\n            // target is in between of the previous and the current\r\n            return sidePreference == \"before\" ? Math.max(0, middle - 1) : middle;\r\n        }\r\n        else if (comparator(value, target) < 0 &&\r\n            comparator(nextValue, target) > 0) {\r\n            // target is in between of the current and the next\r\n            return sidePreference == \"before\"\r\n                ? middle\r\n                : Math.min(orderedItems.length - 1, middle + 1);\r\n        }\r\n        else {\r\n            // didnt find the target, we need to change our boundaries.\r\n            if (comparator(value, target) < 0) {\r\n                // it is too small --> increase low\r\n                low = middle + 1;\r\n            }\r\n            else {\r\n                // it is too big --> decrease high\r\n                high = middle - 1;\r\n            }\r\n        }\r\n        iteration++;\r\n    }\r\n    // didnt find anything. Return -1.\r\n    return -1;\r\n}\r\n/*\r\n * Easing Functions.\r\n * Only considering the t value for the range [0, 1] => [0, 1].\r\n *\r\n * Inspiration: from http://gizma.com/easing/\r\n * https://gist.github.com/gre/1650294\r\n */\r\nconst easingFunctions = {\r\n    /**\r\n     * Provides no easing and no acceleration.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    linear(t) {\r\n        return t;\r\n    },\r\n    /**\r\n     * Accelerate from zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInQuad(t) {\r\n        return t * t;\r\n    },\r\n    /**\r\n     * Decelerate to zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeOutQuad(t) {\r\n        return t * (2 - t);\r\n    },\r\n    /**\r\n     * Accelerate until halfway, then decelerate.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInOutQuad(t) {\r\n        return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n    },\r\n    /**\r\n     * Accelerate from zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInCubic(t) {\r\n        return t * t * t;\r\n    },\r\n    /**\r\n     * Decelerate to zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeOutCubic(t) {\r\n        return --t * t * t + 1;\r\n    },\r\n    /**\r\n     * Accelerate until halfway, then decelerate.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInOutCubic(t) {\r\n        return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\r\n    },\r\n    /**\r\n     * Accelerate from zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInQuart(t) {\r\n        return t * t * t * t;\r\n    },\r\n    /**\r\n     * Decelerate to zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeOutQuart(t) {\r\n        return 1 - --t * t * t * t;\r\n    },\r\n    /**\r\n     * Accelerate until halfway, then decelerate.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInOutQuart(t) {\r\n        return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\r\n    },\r\n    /**\r\n     * Accelerate from zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInQuint(t) {\r\n        return t * t * t * t * t;\r\n    },\r\n    /**\r\n     * Decelerate to zero velocity.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeOutQuint(t) {\r\n        return 1 + --t * t * t * t * t;\r\n    },\r\n    /**\r\n     * Accelerate until halfway, then decelerate.\r\n     *\r\n     * @param t - Time.\r\n     * @returns Value at time t.\r\n     */\r\n    easeInOutQuint(t) {\r\n        return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\r\n    },\r\n};\r\n/**\r\n * Experimentaly compute the width of the scrollbar for this browser.\r\n *\r\n * @returns The width in pixels.\r\n */\r\nfunction getScrollBarWidth() {\r\n    const inner = document.createElement(\"p\");\r\n    inner.style.width = \"100%\";\r\n    inner.style.height = \"200px\";\r\n    const outer = document.createElement(\"div\");\r\n    outer.style.position = \"absolute\";\r\n    outer.style.top = \"0px\";\r\n    outer.style.left = \"0px\";\r\n    outer.style.visibility = \"hidden\";\r\n    outer.style.width = \"200px\";\r\n    outer.style.height = \"150px\";\r\n    outer.style.overflow = \"hidden\";\r\n    outer.appendChild(inner);\r\n    document.body.appendChild(outer);\r\n    const w1 = inner.offsetWidth;\r\n    outer.style.overflow = \"scroll\";\r\n    let w2 = inner.offsetWidth;\r\n    if (w1 == w2) {\r\n        w2 = outer.clientWidth;\r\n    }\r\n    document.body.removeChild(outer);\r\n    return w1 - w2;\r\n}\r\n// @TODO: This doesn't work properly.\r\n// It works only for single property objects,\r\n// otherwise it combines all of the types in a union.\r\n// export function topMost<K1 extends string, V1> (\r\n//   pile: Record<K1, undefined | V1>[],\r\n//   accessors: K1 | [K1]\r\n// ): undefined | V1\r\n// export function topMost<K1 extends string, K2 extends string, V1, V2> (\r\n//   pile: Record<K1, undefined | V1 | Record<K2, undefined | V2>>[],\r\n//   accessors: [K1, K2]\r\n// ): undefined | V1 | V2\r\n// export function topMost<K1 extends string, K2 extends string, K3 extends string, V1, V2, V3> (\r\n//   pile: Record<K1, undefined | V1 | Record<K2, undefined | V2 | Record<K3, undefined | V3>>>[],\r\n//   accessors: [K1, K2, K3]\r\n// ): undefined | V1 | V2 | V3\r\n/**\r\n * Get the top most property value from a pile of objects.\r\n *\r\n * @param pile - Array of objects, no required format.\r\n * @param accessors - Array of property names.\r\n * For example `object['foo']['bar']` → `['foo', 'bar']`.\r\n * @returns Value of the property with given accessors path from the first pile item where it's not undefined.\r\n */\r\nfunction topMost(pile, accessors) {\r\n    let candidate;\r\n    if (!Array.isArray(accessors)) {\r\n        accessors = [accessors];\r\n    }\r\n    for (const member of pile) {\r\n        if (member) {\r\n            candidate = member[accessors[0]];\r\n            for (let i = 1; i < accessors.length; i++) {\r\n                if (candidate) {\r\n                    candidate = candidate[accessors[i]];\r\n                }\r\n            }\r\n            if (typeof candidate !== \"undefined\") {\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    return candidate;\r\n}\n\nconst htmlColors = {\n  black: \"#000000\",\n  navy: \"#000080\",\n  darkblue: \"#00008B\",\n  mediumblue: \"#0000CD\",\n  blue: \"#0000FF\",\n  darkgreen: \"#006400\",\n  green: \"#008000\",\n  teal: \"#008080\",\n  darkcyan: \"#008B8B\",\n  deepskyblue: \"#00BFFF\",\n  darkturquoise: \"#00CED1\",\n  mediumspringgreen: \"#00FA9A\",\n  lime: \"#00FF00\",\n  springgreen: \"#00FF7F\",\n  aqua: \"#00FFFF\",\n  cyan: \"#00FFFF\",\n  midnightblue: \"#191970\",\n  dodgerblue: \"#1E90FF\",\n  lightseagreen: \"#20B2AA\",\n  forestgreen: \"#228B22\",\n  seagreen: \"#2E8B57\",\n  darkslategray: \"#2F4F4F\",\n  limegreen: \"#32CD32\",\n  mediumseagreen: \"#3CB371\",\n  turquoise: \"#40E0D0\",\n  royalblue: \"#4169E1\",\n  steelblue: \"#4682B4\",\n  darkslateblue: \"#483D8B\",\n  mediumturquoise: \"#48D1CC\",\n  indigo: \"#4B0082\",\n  darkolivegreen: \"#556B2F\",\n  cadetblue: \"#5F9EA0\",\n  cornflowerblue: \"#6495ED\",\n  mediumaquamarine: \"#66CDAA\",\n  dimgray: \"#696969\",\n  slateblue: \"#6A5ACD\",\n  olivedrab: \"#6B8E23\",\n  slategray: \"#708090\",\n  lightslategray: \"#778899\",\n  mediumslateblue: \"#7B68EE\",\n  lawngreen: \"#7CFC00\",\n  chartreuse: \"#7FFF00\",\n  aquamarine: \"#7FFFD4\",\n  maroon: \"#800000\",\n  purple: \"#800080\",\n  olive: \"#808000\",\n  gray: \"#808080\",\n  skyblue: \"#87CEEB\",\n  lightskyblue: \"#87CEFA\",\n  blueviolet: \"#8A2BE2\",\n  darkred: \"#8B0000\",\n  darkmagenta: \"#8B008B\",\n  saddlebrown: \"#8B4513\",\n  darkseagreen: \"#8FBC8F\",\n  lightgreen: \"#90EE90\",\n  mediumpurple: \"#9370D8\",\n  darkviolet: \"#9400D3\",\n  palegreen: \"#98FB98\",\n  darkorchid: \"#9932CC\",\n  yellowgreen: \"#9ACD32\",\n  sienna: \"#A0522D\",\n  brown: \"#A52A2A\",\n  darkgray: \"#A9A9A9\",\n  lightblue: \"#ADD8E6\",\n  greenyellow: \"#ADFF2F\",\n  paleturquoise: \"#AFEEEE\",\n  lightsteelblue: \"#B0C4DE\",\n  powderblue: \"#B0E0E6\",\n  firebrick: \"#B22222\",\n  darkgoldenrod: \"#B8860B\",\n  mediumorchid: \"#BA55D3\",\n  rosybrown: \"#BC8F8F\",\n  darkkhaki: \"#BDB76B\",\n  silver: \"#C0C0C0\",\n  mediumvioletred: \"#C71585\",\n  indianred: \"#CD5C5C\",\n  peru: \"#CD853F\",\n  chocolate: \"#D2691E\",\n  tan: \"#D2B48C\",\n  lightgrey: \"#D3D3D3\",\n  palevioletred: \"#D87093\",\n  thistle: \"#D8BFD8\",\n  orchid: \"#DA70D6\",\n  goldenrod: \"#DAA520\",\n  crimson: \"#DC143C\",\n  gainsboro: \"#DCDCDC\",\n  plum: \"#DDA0DD\",\n  burlywood: \"#DEB887\",\n  lightcyan: \"#E0FFFF\",\n  lavender: \"#E6E6FA\",\n  darksalmon: \"#E9967A\",\n  violet: \"#EE82EE\",\n  palegoldenrod: \"#EEE8AA\",\n  lightcoral: \"#F08080\",\n  khaki: \"#F0E68C\",\n  aliceblue: \"#F0F8FF\",\n  honeydew: \"#F0FFF0\",\n  azure: \"#F0FFFF\",\n  sandybrown: \"#F4A460\",\n  wheat: \"#F5DEB3\",\n  beige: \"#F5F5DC\",\n  whitesmoke: \"#F5F5F5\",\n  mintcream: \"#F5FFFA\",\n  ghostwhite: \"#F8F8FF\",\n  salmon: \"#FA8072\",\n  antiquewhite: \"#FAEBD7\",\n  linen: \"#FAF0E6\",\n  lightgoldenrodyellow: \"#FAFAD2\",\n  oldlace: \"#FDF5E6\",\n  red: \"#FF0000\",\n  fuchsia: \"#FF00FF\",\n  magenta: \"#FF00FF\",\n  deeppink: \"#FF1493\",\n  orangered: \"#FF4500\",\n  tomato: \"#FF6347\",\n  hotpink: \"#FF69B4\",\n  coral: \"#FF7F50\",\n  darkorange: \"#FF8C00\",\n  lightsalmon: \"#FFA07A\",\n  orange: \"#FFA500\",\n  lightpink: \"#FFB6C1\",\n  pink: \"#FFC0CB\",\n  gold: \"#FFD700\",\n  peachpuff: \"#FFDAB9\",\n  navajowhite: \"#FFDEAD\",\n  moccasin: \"#FFE4B5\",\n  bisque: \"#FFE4C4\",\n  mistyrose: \"#FFE4E1\",\n  blanchedalmond: \"#FFEBCD\",\n  papayawhip: \"#FFEFD5\",\n  lavenderblush: \"#FFF0F5\",\n  seashell: \"#FFF5EE\",\n  cornsilk: \"#FFF8DC\",\n  lemonchiffon: \"#FFFACD\",\n  floralwhite: \"#FFFAF0\",\n  snow: \"#FFFAFA\",\n  yellow: \"#FFFF00\",\n  lightyellow: \"#FFFFE0\",\n  ivory: \"#FFFFF0\",\n  white: \"#FFFFFF\",\n};\n\n/**\n * @param {number} [pixelRatio=1]\n */\nlet ColorPicker$1 = class ColorPicker {\n  /**\n   * @param {number} [pixelRatio=1]\n   */\n  constructor(pixelRatio = 1) {\n    this.pixelRatio = pixelRatio;\n    this.generated = false;\n    this.centerCoordinates = { x: 289 / 2, y: 289 / 2 };\n    this.r = 289 * 0.49;\n    this.color = { r: 255, g: 255, b: 255, a: 1.0 };\n    this.hueCircle = undefined;\n    this.initialColor = { r: 255, g: 255, b: 255, a: 1.0 };\n    this.previousColor = undefined;\n    this.applied = false;\n\n    // bound by\n    this.updateCallback = () => {};\n    this.closeCallback = () => {};\n\n    // create all DOM elements\n    this._create();\n  }\n\n  /**\n   * this inserts the colorPicker into a div from the DOM\n   *\n   * @param {Element} container\n   */\n  insertTo(container) {\n    if (this.hammer !== undefined) {\n      this.hammer.destroy();\n      this.hammer = undefined;\n    }\n    this.container = container;\n    this.container.appendChild(this.frame);\n    this._bindHammer();\n\n    this._setSize();\n  }\n\n  /**\n   * the callback is executed on apply and save. Bind it to the application\n   *\n   * @param {Function} callback\n   */\n  setUpdateCallback(callback) {\n    if (typeof callback === \"function\") {\n      this.updateCallback = callback;\n    } else {\n      throw new Error(\n        \"Function attempted to set as colorPicker update callback is not a function.\"\n      );\n    }\n  }\n\n  /**\n   * the callback is executed on apply and save. Bind it to the application\n   *\n   * @param {Function} callback\n   */\n  setCloseCallback(callback) {\n    if (typeof callback === \"function\") {\n      this.closeCallback = callback;\n    } else {\n      throw new Error(\n        \"Function attempted to set as colorPicker closing callback is not a function.\"\n      );\n    }\n  }\n\n  /**\n   *\n   * @param {string} color\n   * @returns {string}\n   * @private\n   */\n  _isColorString(color) {\n    if (typeof color === \"string\") {\n      return htmlColors[color];\n    }\n  }\n\n  /**\n   * Set the color of the colorPicker\n   * Supported formats:\n   * 'red'                   --> HTML color string\n   * '#ffffff'               --> hex string\n   * 'rgb(255,255,255)'      --> rgb string\n   * 'rgba(255,255,255,1.0)' --> rgba string\n   * {r:255,g:255,b:255}     --> rgb object\n   * {r:255,g:255,b:255,a:1.0} --> rgba object\n   *\n   * @param {string | object} color\n   * @param {boolean} [setInitial=true]\n   */\n  setColor(color, setInitial = true) {\n    if (color === \"none\") {\n      return;\n    }\n\n    let rgba;\n\n    // if a html color shorthand is used, convert to hex\n    const htmlColor = this._isColorString(color);\n    if (htmlColor !== undefined) {\n      color = htmlColor;\n    }\n\n    // check format\n    if (isString(color) === true) {\n      if (isValidRGB(color) === true) {\n        const rgbaArray = color\n          .substr(4)\n          .substr(0, color.length - 5)\n          .split(\",\");\n        rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: 1.0 };\n      } else if (isValidRGBA(color) === true) {\n        const rgbaArray = color\n          .substr(5)\n          .substr(0, color.length - 6)\n          .split(\",\");\n        rgba = {\n          r: rgbaArray[0],\n          g: rgbaArray[1],\n          b: rgbaArray[2],\n          a: rgbaArray[3],\n        };\n      } else if (isValidHex(color) === true) {\n        const rgbObj = hexToRGB(color);\n        rgba = { r: rgbObj.r, g: rgbObj.g, b: rgbObj.b, a: 1.0 };\n      }\n    } else {\n      if (color instanceof Object) {\n        if (\n          color.r !== undefined &&\n          color.g !== undefined &&\n          color.b !== undefined\n        ) {\n          const alpha = color.a !== undefined ? color.a : \"1.0\";\n          rgba = { r: color.r, g: color.g, b: color.b, a: alpha };\n        }\n      }\n    }\n\n    // set color\n    if (rgba === undefined) {\n      throw new Error(\n        \"Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: \" +\n          JSON.stringify(color)\n      );\n    } else {\n      this._setColor(rgba, setInitial);\n    }\n  }\n\n  /**\n   * this shows the color picker.\n   * The hue circle is constructed once and stored.\n   */\n  show() {\n    if (this.closeCallback !== undefined) {\n      this.closeCallback();\n      this.closeCallback = undefined;\n    }\n\n    this.applied = false;\n    this.frame.style.display = \"block\";\n    this._generateHueCircle();\n  }\n\n  // ------------------------------------------ PRIVATE ----------------------------- //\n\n  /**\n   * Hide the picker. Is called by the cancel button.\n   * Optional boolean to store the previous color for easy access later on.\n   *\n   * @param {boolean} [storePrevious=true]\n   * @private\n   */\n  _hide(storePrevious = true) {\n    // store the previous color for next time;\n    if (storePrevious === true) {\n      this.previousColor = Object.assign({}, this.color);\n    }\n\n    if (this.applied === true) {\n      this.updateCallback(this.initialColor);\n    }\n\n    this.frame.style.display = \"none\";\n\n    // call the closing callback, restoring the onclick method.\n    // this is in a setTimeout because it will trigger the show again before the click is done.\n    setTimeout(() => {\n      if (this.closeCallback !== undefined) {\n        this.closeCallback();\n        this.closeCallback = undefined;\n      }\n    }, 0);\n  }\n\n  /**\n   * bound to the save button. Saves and hides.\n   *\n   * @private\n   */\n  _save() {\n    this.updateCallback(this.color);\n    this.applied = false;\n    this._hide();\n  }\n\n  /**\n   * Bound to apply button. Saves but does not close. Is undone by the cancel button.\n   *\n   * @private\n   */\n  _apply() {\n    this.applied = true;\n    this.updateCallback(this.color);\n    this._updatePicker(this.color);\n  }\n\n  /**\n   * load the color from the previous session.\n   *\n   * @private\n   */\n  _loadLast() {\n    if (this.previousColor !== undefined) {\n      this.setColor(this.previousColor, false);\n    } else {\n      alert(\"There is no last color to load...\");\n    }\n  }\n\n  /**\n   * set the color, place the picker\n   *\n   * @param {object} rgba\n   * @param {boolean} [setInitial=true]\n   * @private\n   */\n  _setColor(rgba, setInitial = true) {\n    // store the initial color\n    if (setInitial === true) {\n      this.initialColor = Object.assign({}, rgba);\n    }\n\n    this.color = rgba;\n    const hsv = RGBToHSV(rgba.r, rgba.g, rgba.b);\n\n    const angleConvert = 2 * Math.PI;\n    const radius = this.r * hsv.s;\n    const x =\n      this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h);\n    const y =\n      this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h);\n\n    this.colorPickerSelector.style.left =\n      x - 0.5 * this.colorPickerSelector.clientWidth + \"px\";\n    this.colorPickerSelector.style.top =\n      y - 0.5 * this.colorPickerSelector.clientHeight + \"px\";\n\n    this._updatePicker(rgba);\n  }\n\n  /**\n   * bound to opacity control\n   *\n   * @param {number} value\n   * @private\n   */\n  _setOpacity(value) {\n    this.color.a = value / 100;\n    this._updatePicker(this.color);\n  }\n\n  /**\n   * bound to brightness control\n   *\n   * @param {number} value\n   * @private\n   */\n  _setBrightness(value) {\n    const hsv = RGBToHSV(this.color.r, this.color.g, this.color.b);\n    hsv.v = value / 100;\n    const rgba = HSVToRGB(hsv.h, hsv.s, hsv.v);\n    rgba[\"a\"] = this.color.a;\n    this.color = rgba;\n    this._updatePicker();\n  }\n\n  /**\n   * update the color picker. A black circle overlays the hue circle to mimic the brightness decreasing.\n   *\n   * @param {object} rgba\n   * @private\n   */\n  _updatePicker(rgba = this.color) {\n    const hsv = RGBToHSV(rgba.r, rgba.g, rgba.b);\n    const ctx = this.colorPickerCanvas.getContext(\"2d\");\n    if (this.pixelRation === undefined) {\n      this.pixelRatio =\n        (window.devicePixelRatio || 1) /\n        (ctx.webkitBackingStorePixelRatio ||\n          ctx.mozBackingStorePixelRatio ||\n          ctx.msBackingStorePixelRatio ||\n          ctx.oBackingStorePixelRatio ||\n          ctx.backingStorePixelRatio ||\n          1);\n    }\n    ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n    // clear the canvas\n    const w = this.colorPickerCanvas.clientWidth;\n    const h = this.colorPickerCanvas.clientHeight;\n    ctx.clearRect(0, 0, w, h);\n\n    ctx.putImageData(this.hueCircle, 0, 0);\n    ctx.fillStyle = \"rgba(0,0,0,\" + (1 - hsv.v) + \")\";\n    ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n    ctx.fill();\n\n    this.brightnessRange.value = 100 * hsv.v;\n    this.opacityRange.value = 100 * rgba.a;\n\n    this.initialColorDiv.style.backgroundColor =\n      \"rgba(\" +\n      this.initialColor.r +\n      \",\" +\n      this.initialColor.g +\n      \",\" +\n      this.initialColor.b +\n      \",\" +\n      this.initialColor.a +\n      \")\";\n    this.newColorDiv.style.backgroundColor =\n      \"rgba(\" +\n      this.color.r +\n      \",\" +\n      this.color.g +\n      \",\" +\n      this.color.b +\n      \",\" +\n      this.color.a +\n      \")\";\n  }\n\n  /**\n   * used by create to set the size of the canvas.\n   *\n   * @private\n   */\n  _setSize() {\n    this.colorPickerCanvas.style.width = \"100%\";\n    this.colorPickerCanvas.style.height = \"100%\";\n\n    this.colorPickerCanvas.width = 289 * this.pixelRatio;\n    this.colorPickerCanvas.height = 289 * this.pixelRatio;\n  }\n\n  /**\n   * create all dom elements\n   * TODO: cleanup, lots of similar dom elements\n   *\n   * @private\n   */\n  _create() {\n    this.frame = document.createElement(\"div\");\n    this.frame.className = \"vis-color-picker\";\n\n    this.colorPickerDiv = document.createElement(\"div\");\n    this.colorPickerSelector = document.createElement(\"div\");\n    this.colorPickerSelector.className = \"vis-selector\";\n    this.colorPickerDiv.appendChild(this.colorPickerSelector);\n\n    this.colorPickerCanvas = document.createElement(\"canvas\");\n    this.colorPickerDiv.appendChild(this.colorPickerCanvas);\n\n    if (!this.colorPickerCanvas.getContext) {\n      const noCanvas = document.createElement(\"DIV\");\n      noCanvas.style.color = \"red\";\n      noCanvas.style.fontWeight = \"bold\";\n      noCanvas.style.padding = \"10px\";\n      noCanvas.innerText = \"Error: your browser does not support HTML canvas\";\n      this.colorPickerCanvas.appendChild(noCanvas);\n    } else {\n      const ctx = this.colorPickerCanvas.getContext(\"2d\");\n      this.pixelRatio =\n        (window.devicePixelRatio || 1) /\n        (ctx.webkitBackingStorePixelRatio ||\n          ctx.mozBackingStorePixelRatio ||\n          ctx.msBackingStorePixelRatio ||\n          ctx.oBackingStorePixelRatio ||\n          ctx.backingStorePixelRatio ||\n          1);\n      this.colorPickerCanvas\n        .getContext(\"2d\")\n        .setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n    }\n\n    this.colorPickerDiv.className = \"vis-color\";\n\n    this.opacityDiv = document.createElement(\"div\");\n    this.opacityDiv.className = \"vis-opacity\";\n\n    this.brightnessDiv = document.createElement(\"div\");\n    this.brightnessDiv.className = \"vis-brightness\";\n\n    this.arrowDiv = document.createElement(\"div\");\n    this.arrowDiv.className = \"vis-arrow\";\n\n    this.opacityRange = document.createElement(\"input\");\n    try {\n      this.opacityRange.type = \"range\"; // Not supported on IE9\n      this.opacityRange.min = \"0\";\n      this.opacityRange.max = \"100\";\n    } catch (err) {\n      // TODO: Add some error handling.\n    }\n    this.opacityRange.value = \"100\";\n    this.opacityRange.className = \"vis-range\";\n\n    this.brightnessRange = document.createElement(\"input\");\n    try {\n      this.brightnessRange.type = \"range\"; // Not supported on IE9\n      this.brightnessRange.min = \"0\";\n      this.brightnessRange.max = \"100\";\n    } catch (err) {\n      // TODO: Add some error handling.\n    }\n    this.brightnessRange.value = \"100\";\n    this.brightnessRange.className = \"vis-range\";\n\n    this.opacityDiv.appendChild(this.opacityRange);\n    this.brightnessDiv.appendChild(this.brightnessRange);\n\n    const me = this;\n    this.opacityRange.onchange = function () {\n      me._setOpacity(this.value);\n    };\n    this.opacityRange.oninput = function () {\n      me._setOpacity(this.value);\n    };\n    this.brightnessRange.onchange = function () {\n      me._setBrightness(this.value);\n    };\n    this.brightnessRange.oninput = function () {\n      me._setBrightness(this.value);\n    };\n\n    this.brightnessLabel = document.createElement(\"div\");\n    this.brightnessLabel.className = \"vis-label vis-brightness\";\n    this.brightnessLabel.innerText = \"brightness:\";\n\n    this.opacityLabel = document.createElement(\"div\");\n    this.opacityLabel.className = \"vis-label vis-opacity\";\n    this.opacityLabel.innerText = \"opacity:\";\n\n    this.newColorDiv = document.createElement(\"div\");\n    this.newColorDiv.className = \"vis-new-color\";\n    this.newColorDiv.innerText = \"new\";\n\n    this.initialColorDiv = document.createElement(\"div\");\n    this.initialColorDiv.className = \"vis-initial-color\";\n    this.initialColorDiv.innerText = \"initial\";\n\n    this.cancelButton = document.createElement(\"div\");\n    this.cancelButton.className = \"vis-button vis-cancel\";\n    this.cancelButton.innerText = \"cancel\";\n    this.cancelButton.onclick = this._hide.bind(this, false);\n\n    this.applyButton = document.createElement(\"div\");\n    this.applyButton.className = \"vis-button vis-apply\";\n    this.applyButton.innerText = \"apply\";\n    this.applyButton.onclick = this._apply.bind(this);\n\n    this.saveButton = document.createElement(\"div\");\n    this.saveButton.className = \"vis-button vis-save\";\n    this.saveButton.innerText = \"save\";\n    this.saveButton.onclick = this._save.bind(this);\n\n    this.loadButton = document.createElement(\"div\");\n    this.loadButton.className = \"vis-button vis-load\";\n    this.loadButton.innerText = \"load last\";\n    this.loadButton.onclick = this._loadLast.bind(this);\n\n    this.frame.appendChild(this.colorPickerDiv);\n    this.frame.appendChild(this.arrowDiv);\n    this.frame.appendChild(this.brightnessLabel);\n    this.frame.appendChild(this.brightnessDiv);\n    this.frame.appendChild(this.opacityLabel);\n    this.frame.appendChild(this.opacityDiv);\n    this.frame.appendChild(this.newColorDiv);\n    this.frame.appendChild(this.initialColorDiv);\n\n    this.frame.appendChild(this.cancelButton);\n    this.frame.appendChild(this.applyButton);\n    this.frame.appendChild(this.saveButton);\n    this.frame.appendChild(this.loadButton);\n  }\n\n  /**\n   * bind hammer to the color picker\n   *\n   * @private\n   */\n  _bindHammer() {\n    this.drag = {};\n    this.pinch = {};\n    this.hammer = new Hammer$1(this.colorPickerCanvas);\n    this.hammer.get(\"pinch\").set({ enable: true });\n\n    this.hammer.on(\"hammer.input\", (event) => {\n      if (event.isFirst) {\n        this._moveSelector(event);\n      }\n    });\n    this.hammer.on(\"tap\", (event) => {\n      this._moveSelector(event);\n    });\n    this.hammer.on(\"panstart\", (event) => {\n      this._moveSelector(event);\n    });\n    this.hammer.on(\"panmove\", (event) => {\n      this._moveSelector(event);\n    });\n    this.hammer.on(\"panend\", (event) => {\n      this._moveSelector(event);\n    });\n  }\n\n  /**\n   * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown.\n   *\n   * @private\n   */\n  _generateHueCircle() {\n    if (this.generated === false) {\n      const ctx = this.colorPickerCanvas.getContext(\"2d\");\n      if (this.pixelRation === undefined) {\n        this.pixelRatio =\n          (window.devicePixelRatio || 1) /\n          (ctx.webkitBackingStorePixelRatio ||\n            ctx.mozBackingStorePixelRatio ||\n            ctx.msBackingStorePixelRatio ||\n            ctx.oBackingStorePixelRatio ||\n            ctx.backingStorePixelRatio ||\n            1);\n      }\n      ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n      // clear the canvas\n      const w = this.colorPickerCanvas.clientWidth;\n      const h = this.colorPickerCanvas.clientHeight;\n      ctx.clearRect(0, 0, w, h);\n\n      // draw hue circle\n      let x, y, hue, sat;\n      this.centerCoordinates = { x: w * 0.5, y: h * 0.5 };\n      this.r = 0.49 * w;\n      const angleConvert = (2 * Math.PI) / 360;\n      const hfac = 1 / 360;\n      const sfac = 1 / this.r;\n      let rgb;\n      for (hue = 0; hue < 360; hue++) {\n        for (sat = 0; sat < this.r; sat++) {\n          x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue);\n          y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue);\n          rgb = HSVToRGB(hue * hfac, sat * sfac, 1);\n          ctx.fillStyle = \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\n          ctx.fillRect(x - 0.5, y - 0.5, 2, 2);\n        }\n      }\n      ctx.strokeStyle = \"rgba(0,0,0,1)\";\n      ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n      ctx.stroke();\n\n      this.hueCircle = ctx.getImageData(0, 0, w, h);\n    }\n    this.generated = true;\n  }\n\n  /**\n   * move the selector. This is called by hammer functions.\n   *\n   * @param {Event}  event   The event\n   * @private\n   */\n  _moveSelector(event) {\n    const rect = this.colorPickerDiv.getBoundingClientRect();\n    const left = event.center.x - rect.left;\n    const top = event.center.y - rect.top;\n\n    const centerY = 0.5 * this.colorPickerDiv.clientHeight;\n    const centerX = 0.5 * this.colorPickerDiv.clientWidth;\n\n    const x = left - centerX;\n    const y = top - centerY;\n\n    const angle = Math.atan2(x, y);\n    const radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX);\n\n    const newTop = Math.cos(angle) * radius + centerY;\n    const newLeft = Math.sin(angle) * radius + centerX;\n\n    this.colorPickerSelector.style.top =\n      newTop - 0.5 * this.colorPickerSelector.clientHeight + \"px\";\n    this.colorPickerSelector.style.left =\n      newLeft - 0.5 * this.colorPickerSelector.clientWidth + \"px\";\n\n    // set color\n    let h = angle / (2 * Math.PI);\n    h = h < 0 ? h + 1 : h;\n    const s = radius / this.r;\n    const hsv = RGBToHSV(this.color.r, this.color.g, this.color.b);\n    hsv.h = h;\n    hsv.s = s;\n    const rgba = HSVToRGB(hsv.h, hsv.s, hsv.v);\n    rgba[\"a\"] = this.color.a;\n    this.color = rgba;\n\n    // update previews\n    this.initialColorDiv.style.backgroundColor =\n      \"rgba(\" +\n      this.initialColor.r +\n      \",\" +\n      this.initialColor.g +\n      \",\" +\n      this.initialColor.b +\n      \",\" +\n      this.initialColor.a +\n      \")\";\n    this.newColorDiv.style.backgroundColor =\n      \"rgba(\" +\n      this.color.r +\n      \",\" +\n      this.color.g +\n      \",\" +\n      this.color.b +\n      \",\" +\n      this.color.a +\n      \")\";\n  }\n};\n\n/**\n * Wrap given text (last argument) in HTML elements (all preceding arguments).\n *\n * @param {...any} rest - List of tag names followed by inner text.\n * @returns An element or a text node.\n */\nfunction wrapInTag(...rest) {\n  if (rest.length < 1) {\n    throw new TypeError(\"Invalid arguments.\");\n  } else if (rest.length === 1) {\n    return document.createTextNode(rest[0]);\n  } else {\n    const element = document.createElement(rest[0]);\n    element.appendChild(wrapInTag(...rest.slice(1)));\n    return element;\n  }\n}\n\n/**\n * The way this works is for all properties of this.possible options, you can supply the property name in any form to list the options.\n * Boolean options are recognised as Boolean\n * Number options should be written as array: [default value, min value, max value, stepsize]\n * Colors should be written as array: ['color', '#ffffff']\n * Strings with should be written as array: [option1, option2, option3, ..]\n *\n * The options are matched with their counterparts in each of the modules and the values used in the configuration are\n */\nlet Configurator$1 = class Configurator {\n  /**\n   * @param {object} parentModule        | the location where parentModule.setOptions() can be called\n   * @param {object} defaultContainer    | the default container of the module\n   * @param {object} configureOptions    | the fully configured and predefined options set found in allOptions.js\n   * @param {number} pixelRatio          | canvas pixel ratio\n   * @param {Function} hideOption        | custom logic to dynamically hide options\n   */\n  constructor(\n    parentModule,\n    defaultContainer,\n    configureOptions,\n    pixelRatio = 1,\n    hideOption = () => false\n  ) {\n    this.parent = parentModule;\n    this.changedOptions = [];\n    this.container = defaultContainer;\n    this.allowCreation = false;\n    this.hideOption = hideOption;\n\n    this.options = {};\n    this.initialized = false;\n    this.popupCounter = 0;\n    this.defaultOptions = {\n      enabled: false,\n      filter: true,\n      container: undefined,\n      showButton: true,\n    };\n    Object.assign(this.options, this.defaultOptions);\n\n    this.configureOptions = configureOptions;\n    this.moduleOptions = {};\n    this.domElements = [];\n    this.popupDiv = {};\n    this.popupLimit = 5;\n    this.popupHistory = {};\n    this.colorPicker = new ColorPicker$1(pixelRatio);\n    this.wrapper = undefined;\n  }\n\n  /**\n   * refresh all options.\n   * Because all modules parse their options by themselves, we just use their options. We copy them here.\n   *\n   * @param {object} options\n   */\n  setOptions(options) {\n    if (options !== undefined) {\n      // reset the popup history because the indices may have been changed.\n      this.popupHistory = {};\n      this._removePopup();\n\n      let enabled = true;\n      if (typeof options === \"string\") {\n        this.options.filter = options;\n      } else if (Array.isArray(options)) {\n        this.options.filter = options.join();\n      } else if (typeof options === \"object\") {\n        if (options == null) {\n          throw new TypeError(\"options cannot be null\");\n        }\n        if (options.container !== undefined) {\n          this.options.container = options.container;\n        }\n        if (options.filter !== undefined) {\n          this.options.filter = options.filter;\n        }\n        if (options.showButton !== undefined) {\n          this.options.showButton = options.showButton;\n        }\n        if (options.enabled !== undefined) {\n          enabled = options.enabled;\n        }\n      } else if (typeof options === \"boolean\") {\n        this.options.filter = true;\n        enabled = options;\n      } else if (typeof options === \"function\") {\n        this.options.filter = options;\n        enabled = true;\n      }\n      if (this.options.filter === false) {\n        enabled = false;\n      }\n\n      this.options.enabled = enabled;\n    }\n    this._clean();\n  }\n\n  /**\n   *\n   * @param {object} moduleOptions\n   */\n  setModuleOptions(moduleOptions) {\n    this.moduleOptions = moduleOptions;\n    if (this.options.enabled === true) {\n      this._clean();\n      if (this.options.container !== undefined) {\n        this.container = this.options.container;\n      }\n      this._create();\n    }\n  }\n\n  /**\n   * Create all DOM elements\n   *\n   * @private\n   */\n  _create() {\n    this._clean();\n    this.changedOptions = [];\n\n    const filter = this.options.filter;\n    let counter = 0;\n    let show = false;\n    for (const option in this.configureOptions) {\n      if (Object.prototype.hasOwnProperty.call(this.configureOptions, option)) {\n        this.allowCreation = false;\n        show = false;\n        if (typeof filter === \"function\") {\n          show = filter(option, []);\n          show =\n            show ||\n            this._handleObject(this.configureOptions[option], [option], true);\n        } else if (filter === true || filter.indexOf(option) !== -1) {\n          show = true;\n        }\n\n        if (show !== false) {\n          this.allowCreation = true;\n\n          // linebreak between categories\n          if (counter > 0) {\n            this._makeItem([]);\n          }\n          // a header for the category\n          this._makeHeader(option);\n\n          // get the sub options\n          this._handleObject(this.configureOptions[option], [option]);\n        }\n        counter++;\n      }\n    }\n    this._makeButton();\n    this._push();\n    //~ this.colorPicker.insertTo(this.container);\n  }\n\n  /**\n   * draw all DOM elements on the screen\n   *\n   * @private\n   */\n  _push() {\n    this.wrapper = document.createElement(\"div\");\n    this.wrapper.className = \"vis-configuration-wrapper\";\n    this.container.appendChild(this.wrapper);\n    for (let i = 0; i < this.domElements.length; i++) {\n      this.wrapper.appendChild(this.domElements[i]);\n    }\n\n    this._showPopupIfNeeded();\n  }\n\n  /**\n   * delete all DOM elements\n   *\n   * @private\n   */\n  _clean() {\n    for (let i = 0; i < this.domElements.length; i++) {\n      this.wrapper.removeChild(this.domElements[i]);\n    }\n\n    if (this.wrapper !== undefined) {\n      this.container.removeChild(this.wrapper);\n      this.wrapper = undefined;\n    }\n    this.domElements = [];\n\n    this._removePopup();\n  }\n\n  /**\n   * get the value from the actualOptions if it exists\n   *\n   * @param {Array} path    | where to look for the actual option\n   * @returns {*}\n   * @private\n   */\n  _getValue(path) {\n    let base = this.moduleOptions;\n    for (let i = 0; i < path.length; i++) {\n      if (base[path[i]] !== undefined) {\n        base = base[path[i]];\n      } else {\n        base = undefined;\n        break;\n      }\n    }\n    return base;\n  }\n\n  /**\n   * all option elements are wrapped in an item\n   *\n   * @param {Array} path    | where to look for the actual option\n   * @param {Array.<Element>} domElements\n   * @returns {number}\n   * @private\n   */\n  _makeItem(path, ...domElements) {\n    if (this.allowCreation === true) {\n      const item = document.createElement(\"div\");\n      item.className =\n        \"vis-configuration vis-config-item vis-config-s\" + path.length;\n      domElements.forEach((element) => {\n        item.appendChild(element);\n      });\n      this.domElements.push(item);\n      return this.domElements.length;\n    }\n    return 0;\n  }\n\n  /**\n   * header for major subjects\n   *\n   * @param {string} name\n   * @private\n   */\n  _makeHeader(name) {\n    const div = document.createElement(\"div\");\n    div.className = \"vis-configuration vis-config-header\";\n    div.innerText = name;\n    this._makeItem([], div);\n  }\n\n  /**\n   * make a label, if it is an object label, it gets different styling.\n   *\n   * @param {string} name\n   * @param {Array} path    | where to look for the actual option\n   * @param {string} objectLabel\n   * @returns {HTMLElement}\n   * @private\n   */\n  _makeLabel(name, path, objectLabel = false) {\n    const div = document.createElement(\"div\");\n    div.className =\n      \"vis-configuration vis-config-label vis-config-s\" + path.length;\n    if (objectLabel === true) {\n      while (div.firstChild) {\n        div.removeChild(div.firstChild);\n      }\n      div.appendChild(wrapInTag(\"i\", \"b\", name));\n    } else {\n      div.innerText = name + \":\";\n    }\n    return div;\n  }\n\n  /**\n   * make a dropdown list for multiple possible string optoins\n   *\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _makeDropdown(arr, value, path) {\n    const select = document.createElement(\"select\");\n    select.className = \"vis-configuration vis-config-select\";\n    let selectedValue = 0;\n    if (value !== undefined) {\n      if (arr.indexOf(value) !== -1) {\n        selectedValue = arr.indexOf(value);\n      }\n    }\n\n    for (let i = 0; i < arr.length; i++) {\n      const option = document.createElement(\"option\");\n      option.value = arr[i];\n      if (i === selectedValue) {\n        option.selected = \"selected\";\n      }\n      option.innerText = arr[i];\n      select.appendChild(option);\n    }\n\n    const me = this;\n    select.onchange = function () {\n      me._update(this.value, path);\n    };\n\n    const label = this._makeLabel(path[path.length - 1], path);\n    this._makeItem(path, label, select);\n  }\n\n  /**\n   * make a range object for numeric options\n   *\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _makeRange(arr, value, path) {\n    const defaultValue = arr[0];\n    const min = arr[1];\n    const max = arr[2];\n    const step = arr[3];\n    const range = document.createElement(\"input\");\n    range.className = \"vis-configuration vis-config-range\";\n    try {\n      range.type = \"range\"; // not supported on IE9\n      range.min = min;\n      range.max = max;\n    } catch (err) {\n      // TODO: Add some error handling.\n    }\n    range.step = step;\n\n    // set up the popup settings in case they are needed.\n    let popupString = \"\";\n    let popupValue = 0;\n\n    if (value !== undefined) {\n      const factor = 1.2;\n      if (value < 0 && value * factor < min) {\n        range.min = Math.ceil(value * factor);\n        popupValue = range.min;\n        popupString = \"range increased\";\n      } else if (value / factor < min) {\n        range.min = Math.ceil(value / factor);\n        popupValue = range.min;\n        popupString = \"range increased\";\n      }\n      if (value * factor > max && max !== 1) {\n        range.max = Math.ceil(value * factor);\n        popupValue = range.max;\n        popupString = \"range increased\";\n      }\n      range.value = value;\n    } else {\n      range.value = defaultValue;\n    }\n\n    const input = document.createElement(\"input\");\n    input.className = \"vis-configuration vis-config-rangeinput\";\n    input.value = range.value;\n\n    const me = this;\n    range.onchange = function () {\n      input.value = this.value;\n      me._update(Number(this.value), path);\n    };\n    range.oninput = function () {\n      input.value = this.value;\n    };\n\n    const label = this._makeLabel(path[path.length - 1], path);\n    const itemIndex = this._makeItem(path, label, range, input);\n\n    // if a popup is needed AND it has not been shown for this value, show it.\n    if (popupString !== \"\" && this.popupHistory[itemIndex] !== popupValue) {\n      this.popupHistory[itemIndex] = popupValue;\n      this._setupPopup(popupString, itemIndex);\n    }\n  }\n\n  /**\n   * make a button object\n   *\n   * @private\n   */\n  _makeButton() {\n    if (this.options.showButton === true) {\n      const generateButton = document.createElement(\"div\");\n      generateButton.className = \"vis-configuration vis-config-button\";\n      generateButton.innerText = \"generate options\";\n      generateButton.onclick = () => {\n        this._printOptions();\n      };\n      generateButton.onmouseover = () => {\n        generateButton.className = \"vis-configuration vis-config-button hover\";\n      };\n      generateButton.onmouseout = () => {\n        generateButton.className = \"vis-configuration vis-config-button\";\n      };\n\n      this.optionsContainer = document.createElement(\"div\");\n      this.optionsContainer.className =\n        \"vis-configuration vis-config-option-container\";\n\n      this.domElements.push(this.optionsContainer);\n      this.domElements.push(generateButton);\n    }\n  }\n\n  /**\n   * prepare the popup\n   *\n   * @param {string} string\n   * @param {number} index\n   * @private\n   */\n  _setupPopup(string, index) {\n    if (\n      this.initialized === true &&\n      this.allowCreation === true &&\n      this.popupCounter < this.popupLimit\n    ) {\n      const div = document.createElement(\"div\");\n      div.id = \"vis-configuration-popup\";\n      div.className = \"vis-configuration-popup\";\n      div.innerText = string;\n      div.onclick = () => {\n        this._removePopup();\n      };\n      this.popupCounter += 1;\n      this.popupDiv = { html: div, index: index };\n    }\n  }\n\n  /**\n   * remove the popup from the dom\n   *\n   * @private\n   */\n  _removePopup() {\n    if (this.popupDiv.html !== undefined) {\n      this.popupDiv.html.parentNode.removeChild(this.popupDiv.html);\n      clearTimeout(this.popupDiv.hideTimeout);\n      clearTimeout(this.popupDiv.deleteTimeout);\n      this.popupDiv = {};\n    }\n  }\n\n  /**\n   * Show the popup if it is needed.\n   *\n   * @private\n   */\n  _showPopupIfNeeded() {\n    if (this.popupDiv.html !== undefined) {\n      const correspondingElement = this.domElements[this.popupDiv.index];\n      const rect = correspondingElement.getBoundingClientRect();\n      this.popupDiv.html.style.left = rect.left + \"px\";\n      this.popupDiv.html.style.top = rect.top - 30 + \"px\"; // 30 is the height;\n      document.body.appendChild(this.popupDiv.html);\n      this.popupDiv.hideTimeout = setTimeout(() => {\n        this.popupDiv.html.style.opacity = 0;\n      }, 1500);\n      this.popupDiv.deleteTimeout = setTimeout(() => {\n        this._removePopup();\n      }, 1800);\n    }\n  }\n\n  /**\n   * make a checkbox for boolean options.\n   *\n   * @param {number} defaultValue\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _makeCheckbox(defaultValue, value, path) {\n    const checkbox = document.createElement(\"input\");\n    checkbox.type = \"checkbox\";\n    checkbox.className = \"vis-configuration vis-config-checkbox\";\n    checkbox.checked = defaultValue;\n    if (value !== undefined) {\n      checkbox.checked = value;\n      if (value !== defaultValue) {\n        if (typeof defaultValue === \"object\") {\n          if (value !== defaultValue.enabled) {\n            this.changedOptions.push({ path: path, value: value });\n          }\n        } else {\n          this.changedOptions.push({ path: path, value: value });\n        }\n      }\n    }\n\n    const me = this;\n    checkbox.onchange = function () {\n      me._update(this.checked, path);\n    };\n\n    const label = this._makeLabel(path[path.length - 1], path);\n    this._makeItem(path, label, checkbox);\n  }\n\n  /**\n   * make a text input field for string options.\n   *\n   * @param {number} defaultValue\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _makeTextInput(defaultValue, value, path) {\n    const checkbox = document.createElement(\"input\");\n    checkbox.type = \"text\";\n    checkbox.className = \"vis-configuration vis-config-text\";\n    checkbox.value = value;\n    if (value !== defaultValue) {\n      this.changedOptions.push({ path: path, value: value });\n    }\n\n    const me = this;\n    checkbox.onchange = function () {\n      me._update(this.value, path);\n    };\n\n    const label = this._makeLabel(path[path.length - 1], path);\n    this._makeItem(path, label, checkbox);\n  }\n\n  /**\n   * make a color field with a color picker for color fields\n   *\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _makeColorField(arr, value, path) {\n    const defaultColor = arr[1];\n    const div = document.createElement(\"div\");\n    value = value === undefined ? defaultColor : value;\n\n    if (value !== \"none\") {\n      div.className = \"vis-configuration vis-config-colorBlock\";\n      div.style.backgroundColor = value;\n    } else {\n      div.className = \"vis-configuration vis-config-colorBlock none\";\n    }\n\n    value = value === undefined ? defaultColor : value;\n    div.onclick = () => {\n      this._showColorPicker(value, div, path);\n    };\n\n    const label = this._makeLabel(path[path.length - 1], path);\n    this._makeItem(path, label, div);\n  }\n\n  /**\n   * used by the color buttons to call the color picker.\n   *\n   * @param {number} value\n   * @param {HTMLElement} div\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _showColorPicker(value, div, path) {\n    // clear the callback from this div\n    div.onclick = function () {};\n\n    this.colorPicker.insertTo(div);\n    this.colorPicker.show();\n\n    this.colorPicker.setColor(value);\n    this.colorPicker.setUpdateCallback((color) => {\n      const colorString =\n        \"rgba(\" + color.r + \",\" + color.g + \",\" + color.b + \",\" + color.a + \")\";\n      div.style.backgroundColor = colorString;\n      this._update(colorString, path);\n    });\n\n    // on close of the colorpicker, restore the callback.\n    this.colorPicker.setCloseCallback(() => {\n      div.onclick = () => {\n        this._showColorPicker(value, div, path);\n      };\n    });\n  }\n\n  /**\n   * parse an object and draw the correct items\n   *\n   * @param {object} obj\n   * @param {Array} [path=[]]    | where to look for the actual option\n   * @param {boolean} [checkOnly=false]\n   * @returns {boolean}\n   * @private\n   */\n  _handleObject(obj, path = [], checkOnly = false) {\n    let show = false;\n    const filter = this.options.filter;\n    let visibleInSet = false;\n    for (const subObj in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, subObj)) {\n        show = true;\n        const item = obj[subObj];\n        const newPath = copyAndExtendArray(path, subObj);\n        if (typeof filter === \"function\") {\n          show = filter(subObj, path);\n\n          // if needed we must go deeper into the object.\n          if (show === false) {\n            if (\n              !Array.isArray(item) &&\n              typeof item !== \"string\" &&\n              typeof item !== \"boolean\" &&\n              item instanceof Object\n            ) {\n              this.allowCreation = false;\n              show = this._handleObject(item, newPath, true);\n              this.allowCreation = checkOnly === false;\n            }\n          }\n        }\n\n        if (show !== false) {\n          visibleInSet = true;\n          const value = this._getValue(newPath);\n\n          if (Array.isArray(item)) {\n            this._handleArray(item, value, newPath);\n          } else if (typeof item === \"string\") {\n            this._makeTextInput(item, value, newPath);\n          } else if (typeof item === \"boolean\") {\n            this._makeCheckbox(item, value, newPath);\n          } else if (item instanceof Object) {\n            // skip the options that are not enabled\n            if (!this.hideOption(path, subObj, this.moduleOptions)) {\n              // initially collapse options with an disabled enabled option.\n              if (item.enabled !== undefined) {\n                const enabledPath = copyAndExtendArray(newPath, \"enabled\");\n                const enabledValue = this._getValue(enabledPath);\n                if (enabledValue === true) {\n                  const label = this._makeLabel(subObj, newPath, true);\n                  this._makeItem(newPath, label);\n                  visibleInSet =\n                    this._handleObject(item, newPath) || visibleInSet;\n                } else {\n                  this._makeCheckbox(item, enabledValue, newPath);\n                }\n              } else {\n                const label = this._makeLabel(subObj, newPath, true);\n                this._makeItem(newPath, label);\n                visibleInSet =\n                  this._handleObject(item, newPath) || visibleInSet;\n              }\n            }\n          } else {\n            console.error(\"dont know how to handle\", item, subObj, newPath);\n          }\n        }\n      }\n    }\n    return visibleInSet;\n  }\n\n  /**\n   * handle the array type of option\n   *\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _handleArray(arr, value, path) {\n    if (typeof arr[0] === \"string\" && arr[0] === \"color\") {\n      this._makeColorField(arr, value, path);\n      if (arr[1] !== value) {\n        this.changedOptions.push({ path: path, value: value });\n      }\n    } else if (typeof arr[0] === \"string\") {\n      this._makeDropdown(arr, value, path);\n      if (arr[0] !== value) {\n        this.changedOptions.push({ path: path, value: value });\n      }\n    } else if (typeof arr[0] === \"number\") {\n      this._makeRange(arr, value, path);\n      if (arr[0] !== value) {\n        this.changedOptions.push({ path: path, value: Number(value) });\n      }\n    }\n  }\n\n  /**\n   * called to update the network with the new settings.\n   *\n   * @param {number} value\n   * @param {Array} path    | where to look for the actual option\n   * @private\n   */\n  _update(value, path) {\n    const options = this._constructOptions(value, path);\n\n    if (\n      this.parent.body &&\n      this.parent.body.emitter &&\n      this.parent.body.emitter.emit\n    ) {\n      this.parent.body.emitter.emit(\"configChange\", options);\n    }\n    this.initialized = true;\n    this.parent.setOptions(options);\n  }\n\n  /**\n   *\n   * @param {string | boolean} value\n   * @param {Array.<string>} path\n   * @param {{}} optionsObj\n   * @returns {{}}\n   * @private\n   */\n  _constructOptions(value, path, optionsObj = {}) {\n    let pointer = optionsObj;\n\n    // when dropdown boxes can be string or boolean, we typecast it into correct types\n    value = value === \"true\" ? true : value;\n    value = value === \"false\" ? false : value;\n\n    for (let i = 0; i < path.length; i++) {\n      if (path[i] !== \"global\") {\n        if (pointer[path[i]] === undefined) {\n          pointer[path[i]] = {};\n        }\n        if (i !== path.length - 1) {\n          pointer = pointer[path[i]];\n        } else {\n          pointer[path[i]] = value;\n        }\n      }\n    }\n    return optionsObj;\n  }\n\n  /**\n   * @private\n   */\n  _printOptions() {\n    const options = this.getOptions();\n\n    while (this.optionsContainer.firstChild) {\n      this.optionsContainer.removeChild(this.optionsContainer.firstChild);\n    }\n    this.optionsContainer.appendChild(\n      wrapInTag(\"pre\", \"const options = \" + JSON.stringify(options, null, 2))\n    );\n  }\n\n  /**\n   *\n   * @returns {{}} options\n   */\n  getOptions() {\n    const options = {};\n    for (let i = 0; i < this.changedOptions.length; i++) {\n      this._constructOptions(\n        this.changedOptions[i].value,\n        this.changedOptions[i].path,\n        options\n      );\n    }\n    return options;\n  }\n};\n\n/**\n * Popup is a class to create a popup window with some text\n */\nlet Popup$1 = class Popup {\n  /**\n   * @param {Element} container       The container object.\n   * @param {string}  overflowMethod  How the popup should act to overflowing ('flip' or 'cap')\n   */\n  constructor(container, overflowMethod) {\n    this.container = container;\n    this.overflowMethod = overflowMethod || \"cap\";\n\n    this.x = 0;\n    this.y = 0;\n    this.padding = 5;\n    this.hidden = false;\n\n    // create the frame\n    this.frame = document.createElement(\"div\");\n    this.frame.className = \"vis-tooltip\";\n    this.container.appendChild(this.frame);\n  }\n\n  /**\n   * @param {number} x   Horizontal position of the popup window\n   * @param {number} y   Vertical position of the popup window\n   */\n  setPosition(x, y) {\n    this.x = parseInt(x);\n    this.y = parseInt(y);\n  }\n\n  /**\n   * Set the content for the popup window. This can be HTML code or text.\n   *\n   * @param {string | Element} content\n   */\n  setText(content) {\n    if (content instanceof Element) {\n      while (this.frame.firstChild) {\n        this.frame.removeChild(this.frame.firstChild);\n      }\n      this.frame.appendChild(content);\n    } else {\n      // String containing literal text, element has to be used for HTML due to\n      // XSS risks associated with innerHTML (i.e. prevent XSS by accident).\n      this.frame.innerText = content;\n    }\n  }\n\n  /**\n   * Show the popup window\n   *\n   * @param {boolean} [doShow]    Show or hide the window\n   */\n  show(doShow) {\n    if (doShow === undefined) {\n      doShow = true;\n    }\n\n    if (doShow === true) {\n      const height = this.frame.clientHeight;\n      const width = this.frame.clientWidth;\n      const maxHeight = this.frame.parentNode.clientHeight;\n      const maxWidth = this.frame.parentNode.clientWidth;\n\n      let left = 0,\n        top = 0;\n\n      if (this.overflowMethod == \"flip\") {\n        let isLeft = false,\n          isTop = true; // Where around the position it's located\n\n        if (this.y - height < this.padding) {\n          isTop = false;\n        }\n\n        if (this.x + width > maxWidth - this.padding) {\n          isLeft = true;\n        }\n\n        if (isLeft) {\n          left = this.x - width;\n        } else {\n          left = this.x;\n        }\n\n        if (isTop) {\n          top = this.y - height;\n        } else {\n          top = this.y;\n        }\n      } else {\n        top = this.y - height;\n        if (top + height + this.padding > maxHeight) {\n          top = maxHeight - height - this.padding;\n        }\n        if (top < this.padding) {\n          top = this.padding;\n        }\n\n        left = this.x;\n        if (left + width + this.padding > maxWidth) {\n          left = maxWidth - width - this.padding;\n        }\n        if (left < this.padding) {\n          left = this.padding;\n        }\n      }\n\n      this.frame.style.left = left + \"px\";\n      this.frame.style.top = top + \"px\";\n      this.frame.style.visibility = \"visible\";\n      this.hidden = false;\n    } else {\n      this.hide();\n    }\n  }\n\n  /**\n   * Hide the popup window\n   */\n  hide() {\n    this.hidden = true;\n    this.frame.style.left = \"0\";\n    this.frame.style.top = \"0\";\n    this.frame.style.visibility = \"hidden\";\n  }\n\n  /**\n   * Remove the popup window\n   */\n  destroy() {\n    this.frame.parentNode.removeChild(this.frame); // Remove element from DOM\n  }\n};\n\nlet errorFound = false;\nlet allOptions;\n\nconst VALIDATOR_PRINT_STYLE$1 = \"background: #FFeeee; color: #dd0000\";\n\n/**\n *  Used to validate options.\n */\nlet Validator$1 = class Validator {\n  /**\n   * Main function to be called\n   *\n   * @param {object} options\n   * @param {object} referenceOptions\n   * @param {object} subObject\n   * @returns {boolean}\n   * @static\n   */\n  static validate(options, referenceOptions, subObject) {\n    errorFound = false;\n    allOptions = referenceOptions;\n    let usedOptions = referenceOptions;\n    if (subObject !== undefined) {\n      usedOptions = referenceOptions[subObject];\n    }\n    Validator.parse(options, usedOptions, []);\n    return errorFound;\n  }\n\n  /**\n   * Will traverse an object recursively and check every value\n   *\n   * @param {object} options\n   * @param {object} referenceOptions\n   * @param {Array} path    | where to look for the actual option\n   * @static\n   */\n  static parse(options, referenceOptions, path) {\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option)) {\n        Validator.check(option, options, referenceOptions, path);\n      }\n    }\n  }\n\n  /**\n   * Check every value. If the value is an object, call the parse function on that object.\n   *\n   * @param {string} option\n   * @param {object} options\n   * @param {object} referenceOptions\n   * @param {Array} path    | where to look for the actual option\n   * @static\n   */\n  static check(option, options, referenceOptions, path) {\n    if (\n      referenceOptions[option] === undefined &&\n      referenceOptions.__any__ === undefined\n    ) {\n      Validator.getSuggestion(option, referenceOptions, path);\n      return;\n    }\n\n    let referenceOption = option;\n    let is_object = true;\n\n    if (\n      referenceOptions[option] === undefined &&\n      referenceOptions.__any__ !== undefined\n    ) {\n      // NOTE: This only triggers if the __any__ is in the top level of the options object.\n      //       THAT'S A REALLY BAD PLACE TO ALLOW IT!!!!\n      // TODO: Examine if needed, remove if possible\n\n      // __any__ is a wildcard. Any value is accepted and will be further analysed by reference.\n      referenceOption = \"__any__\";\n\n      // if the any-subgroup is not a predefined object in the configurator,\n      // we do not look deeper into the object.\n      is_object = Validator.getType(options[option]) === \"object\";\n    }\n\n    let refOptionObj = referenceOptions[referenceOption];\n    if (is_object && refOptionObj.__type__ !== undefined) {\n      refOptionObj = refOptionObj.__type__;\n    }\n\n    Validator.checkFields(\n      option,\n      options,\n      referenceOptions,\n      referenceOption,\n      refOptionObj,\n      path\n    );\n  }\n\n  /**\n   *\n   * @param {string}  option           | the option property\n   * @param {object}  options          | The supplied options object\n   * @param {object}  referenceOptions | The reference options containing all options and their allowed formats\n   * @param {string}  referenceOption  | Usually this is the same as option, except when handling an __any__ tag.\n   * @param {string}  refOptionObj     | This is the type object from the reference options\n   * @param {Array}   path             | where in the object is the option\n   * @static\n   */\n  static checkFields(\n    option,\n    options,\n    referenceOptions,\n    referenceOption,\n    refOptionObj,\n    path\n  ) {\n    const log = function (message) {\n      console.error(\n        \"%c\" + message + Validator.printLocation(path, option),\n        VALIDATOR_PRINT_STYLE$1\n      );\n    };\n\n    const optionType = Validator.getType(options[option]);\n    const refOptionType = refOptionObj[optionType];\n\n    if (refOptionType !== undefined) {\n      // if the type is correct, we check if it is supposed to be one of a few select values\n      if (\n        Validator.getType(refOptionType) === \"array\" &&\n        refOptionType.indexOf(options[option]) === -1\n      ) {\n        log(\n          'Invalid option detected in \"' +\n            option +\n            '\".' +\n            \" Allowed values are:\" +\n            Validator.print(refOptionType) +\n            ' not \"' +\n            options[option] +\n            '\". '\n        );\n        errorFound = true;\n      } else if (optionType === \"object\" && referenceOption !== \"__any__\") {\n        path = copyAndExtendArray(path, option);\n        Validator.parse(\n          options[option],\n          referenceOptions[referenceOption],\n          path\n        );\n      }\n    } else if (refOptionObj[\"any\"] === undefined) {\n      // type of the field is incorrect and the field cannot be any\n      log(\n        'Invalid type received for \"' +\n          option +\n          '\". Expected: ' +\n          Validator.print(Object.keys(refOptionObj)) +\n          \". Received [\" +\n          optionType +\n          '] \"' +\n          options[option] +\n          '\"'\n      );\n      errorFound = true;\n    }\n  }\n\n  /**\n   *\n   * @param {object | boolean | number | string | Array.<number> | Date | Node | Moment | undefined | null} object\n   * @returns {string}\n   * @static\n   */\n  static getType(object) {\n    const type = typeof object;\n\n    if (type === \"object\") {\n      if (object === null) {\n        return \"null\";\n      }\n      if (object instanceof Boolean) {\n        return \"boolean\";\n      }\n      if (object instanceof Number) {\n        return \"number\";\n      }\n      if (object instanceof String) {\n        return \"string\";\n      }\n      if (Array.isArray(object)) {\n        return \"array\";\n      }\n      if (object instanceof Date) {\n        return \"date\";\n      }\n      if (object.nodeType !== undefined) {\n        return \"dom\";\n      }\n      if (object._isAMomentObject === true) {\n        return \"moment\";\n      }\n      return \"object\";\n    } else if (type === \"number\") {\n      return \"number\";\n    } else if (type === \"boolean\") {\n      return \"boolean\";\n    } else if (type === \"string\") {\n      return \"string\";\n    } else if (type === undefined) {\n      return \"undefined\";\n    }\n    return type;\n  }\n\n  /**\n   * @param {string} option\n   * @param {object} options\n   * @param {Array.<string>} path\n   * @static\n   */\n  static getSuggestion(option, options, path) {\n    const localSearch = Validator.findInOptions(option, options, path, false);\n    const globalSearch = Validator.findInOptions(option, allOptions, [], true);\n\n    const localSearchThreshold = 8;\n    const globalSearchThreshold = 4;\n\n    let msg;\n    if (localSearch.indexMatch !== undefined) {\n      msg =\n        \" in \" +\n        Validator.printLocation(localSearch.path, option, \"\") +\n        'Perhaps it was incomplete? Did you mean: \"' +\n        localSearch.indexMatch +\n        '\"?\\n\\n';\n    } else if (\n      globalSearch.distance <= globalSearchThreshold &&\n      localSearch.distance > globalSearch.distance\n    ) {\n      msg =\n        \" in \" +\n        Validator.printLocation(localSearch.path, option, \"\") +\n        \"Perhaps it was misplaced? Matching option found at: \" +\n        Validator.printLocation(\n          globalSearch.path,\n          globalSearch.closestMatch,\n          \"\"\n        );\n    } else if (localSearch.distance <= localSearchThreshold) {\n      msg =\n        '. Did you mean \"' +\n        localSearch.closestMatch +\n        '\"?' +\n        Validator.printLocation(localSearch.path, option);\n    } else {\n      msg =\n        \". Did you mean one of these: \" +\n        Validator.print(Object.keys(options)) +\n        Validator.printLocation(path, option);\n    }\n\n    console.error(\n      '%cUnknown option detected: \"' + option + '\"' + msg,\n      VALIDATOR_PRINT_STYLE$1\n    );\n    errorFound = true;\n  }\n\n  /**\n   * traverse the options in search for a match.\n   *\n   * @param {string} option\n   * @param {object} options\n   * @param {Array} path    | where to look for the actual option\n   * @param {boolean} [recursive=false]\n   * @returns {{closestMatch: string, path: Array, distance: number}}\n   * @static\n   */\n  static findInOptions(option, options, path, recursive = false) {\n    let min = 1e9;\n    let closestMatch = \"\";\n    let closestMatchPath = [];\n    const lowerCaseOption = option.toLowerCase();\n    let indexMatch = undefined;\n    for (const op in options) {\n      let distance;\n      if (options[op].__type__ !== undefined && recursive === true) {\n        const result = Validator.findInOptions(\n          option,\n          options[op],\n          copyAndExtendArray(path, op)\n        );\n        if (min > result.distance) {\n          closestMatch = result.closestMatch;\n          closestMatchPath = result.path;\n          min = result.distance;\n          indexMatch = result.indexMatch;\n        }\n      } else {\n        if (op.toLowerCase().indexOf(lowerCaseOption) !== -1) {\n          indexMatch = op;\n        }\n        distance = Validator.levenshteinDistance(option, op);\n        if (min > distance) {\n          closestMatch = op;\n          closestMatchPath = copyArray(path);\n          min = distance;\n        }\n      }\n    }\n    return {\n      closestMatch: closestMatch,\n      path: closestMatchPath,\n      distance: min,\n      indexMatch: indexMatch,\n    };\n  }\n\n  /**\n   * @param {Array.<string>} path\n   * @param {object} option\n   * @param {string} prefix\n   * @returns {string}\n   * @static\n   */\n  static printLocation(path, option, prefix = \"Problem value found at: \\n\") {\n    let str = \"\\n\\n\" + prefix + \"options = {\\n\";\n    for (let i = 0; i < path.length; i++) {\n      for (let j = 0; j < i + 1; j++) {\n        str += \"  \";\n      }\n      str += path[i] + \": {\\n\";\n    }\n    for (let j = 0; j < path.length + 1; j++) {\n      str += \"  \";\n    }\n    str += option + \"\\n\";\n    for (let i = 0; i < path.length + 1; i++) {\n      for (let j = 0; j < path.length - i; j++) {\n        str += \"  \";\n      }\n      str += \"}\\n\";\n    }\n    return str + \"\\n\\n\";\n  }\n\n  /**\n   * @param {object} options\n   * @returns {string}\n   * @static\n   */\n  static print(options) {\n    return JSON.stringify(options)\n      .replace(/(\")|(\\[)|(\\])|(,\"__type__\")/g, \"\")\n      .replace(/(,)/g, \", \");\n  }\n\n  /**\n   *  Compute the edit distance between the two given strings\n   * http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript\n   *\n   * Copyright (c) 2011 Andrei Mackenzie\n   *\n   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n   *\n   * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n   *\n   * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n   *\n   * @param {string} a\n   * @param {string} b\n   * @returns {Array.<Array.<number>>}}\n   * @static\n   */\n  static levenshteinDistance(a, b) {\n    if (a.length === 0) return b.length;\n    if (b.length === 0) return a.length;\n\n    const matrix = [];\n\n    // increment along the first column of each row\n    let i;\n    for (i = 0; i <= b.length; i++) {\n      matrix[i] = [i];\n    }\n\n    // increment each column in the first row\n    let j;\n    for (j = 0; j <= a.length; j++) {\n      matrix[0][j] = j;\n    }\n\n    // Fill in the rest of the matrix\n    for (i = 1; i <= b.length; i++) {\n      for (j = 1; j <= a.length; j++) {\n        if (b.charAt(i - 1) == a.charAt(j - 1)) {\n          matrix[i][j] = matrix[i - 1][j - 1];\n        } else {\n          matrix[i][j] = Math.min(\n            matrix[i - 1][j - 1] + 1, // substitution\n            Math.min(\n              matrix[i][j - 1] + 1, // insertion\n              matrix[i - 1][j] + 1\n            )\n          ); // deletion\n        }\n      }\n    }\n\n    return matrix[b.length][a.length];\n  }\n};\n\nconst Activator = Activator$1;\r\nconst ColorPicker = ColorPicker$1;\r\nconst Configurator = Configurator$1;\r\nconst Hammer = Hammer$1;\r\nconst Popup = Popup$1;\r\nconst VALIDATOR_PRINT_STYLE = VALIDATOR_PRINT_STYLE$1;\r\nconst Validator = Validator$1;\n\nexport { Activator, Alea, ColorPicker, Configurator, DELETE, HSVToHex, HSVToRGB, Hammer, Popup, RGBToHSV, RGBToHex, VALIDATOR_PRINT_STYLE, Validator, addClassName, addCssText, addEventListener, binarySearchCustom, binarySearchValue, bridgeObject, copyAndExtendArray, copyArray, deepExtend, deepObjectAssign, easingFunctions, equalArray, extend, fillIfDefined, forEach, getAbsoluteLeft, getAbsoluteRight, getAbsoluteTop, getScrollBarWidth, getTarget, getType, hasParent, hexToHSV, hexToRGB, insertSort, isDate, isNumber, isObject, isString, isValidHex, isValidRGB, isValidRGBA, mergeOptions, option, overrideOpacity, parseColor, preventDefault, pureDeepObjectAssign, recursiveDOMDelete, removeClassName, removeCssText, removeEventListener, selectiveBridgeObject, selectiveDeepExtend, selectiveExtend, selectiveNotDeepExtend, throttle, toArray, topMost, updateProperty };\n//# sourceMappingURL=vis-util.js.map\n","// DOM utility methods\n\n/**\n * this prepares the JSON container for allocating SVG elements\n * @param {Object} JSONcontainer\n * @private\n */\nexport function prepareElements(JSONcontainer) {\n  // cleanup the redundant svgElements;\n  for (var elementType in JSONcontainer) {\n    if (JSONcontainer.hasOwnProperty(elementType)) {\n      JSONcontainer[elementType].redundant = JSONcontainer[elementType].used;\n      JSONcontainer[elementType].used = [];\n    }\n  }\n}\n\n/**\n * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from\n * which to remove the redundant elements.\n *\n * @param {Object} JSONcontainer\n * @private\n */\nexport function cleanupElements(JSONcontainer) {\n  // cleanup the redundant svgElements;\n  for (var elementType in JSONcontainer) {\n    if (JSONcontainer.hasOwnProperty(elementType)) {\n      if (JSONcontainer[elementType].redundant) {\n        for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) {\n          JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]);\n        }\n        JSONcontainer[elementType].redundant = [];\n      }\n    }\n  }\n}\n\n/**\n * Ensures that all elements are removed first up so they can be recreated cleanly\n * @param {Object} JSONcontainer\n */\nexport function resetElements(JSONcontainer) {\n  prepareElements(JSONcontainer);\n  cleanupElements(JSONcontainer);\n  prepareElements(JSONcontainer);\n}\n\n/**\n * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer\n * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this.\n *\n * @param {string} elementType\n * @param {Object} JSONcontainer\n * @param {Object} svgContainer\n * @returns {Element}\n * @private\n */\nexport function getSVGElement(elementType, JSONcontainer, svgContainer) {\n  var element;\n  // allocate SVG element, if it doesnt yet exist, create one.\n  if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before\n    // check if there is an redundant element\n    if (JSONcontainer[elementType].redundant.length > 0) {\n      element = JSONcontainer[elementType].redundant[0];\n      JSONcontainer[elementType].redundant.shift();\n    }\n    else {\n      // create a new element and add it to the SVG\n      element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n      svgContainer.appendChild(element);\n    }\n  }\n  else {\n    // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it.\n    element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n    JSONcontainer[elementType] = {used: [], redundant: []};\n    svgContainer.appendChild(element);\n  }\n  JSONcontainer[elementType].used.push(element);\n  return element;\n}\n\n\n/**\n * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer\n * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this.\n *\n * @param {string} elementType\n * @param {Object} JSONcontainer\n * @param {Element} DOMContainer\n * @param {Element} insertBefore\n * @returns {*}\n */\nexport function getDOMElement(elementType, JSONcontainer, DOMContainer, insertBefore) {\n  var element;\n  // allocate DOM element, if it doesnt yet exist, create one.\n  if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before\n    // check if there is an redundant element\n    if (JSONcontainer[elementType].redundant.length > 0) {\n      element = JSONcontainer[elementType].redundant[0];\n      JSONcontainer[elementType].redundant.shift();\n    }\n    else {\n      // create a new element and add it to the SVG\n      element = document.createElement(elementType);\n      if (insertBefore !== undefined) {\n        DOMContainer.insertBefore(element, insertBefore);\n      }\n      else {\n        DOMContainer.appendChild(element);\n      }\n    }\n  }\n  else {\n    // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it.\n    element = document.createElement(elementType);\n    JSONcontainer[elementType] = {used: [], redundant: []};\n    if (insertBefore !== undefined) {\n      DOMContainer.insertBefore(element, insertBefore);\n    }\n    else {\n      DOMContainer.appendChild(element);\n    }\n  }\n  JSONcontainer[elementType].used.push(element);\n  return element;\n}\n\n\n\n\n/**\n * Draw a point object. This is a separate function because it can also be called by the legend.\n * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions\n * as well.\n *\n * @param {number} x\n * @param {number} y\n * @param {Object} groupTemplate: A template containing the necessary information to draw the datapoint e.g., {style: 'circle', size: 5, className: 'className' }\n * @param {Object} JSONcontainer\n * @param {Object} svgContainer\n * @param {Object} labelObj\n * @returns {vis.PointItem}\n */\nexport function drawPoint(x, y, groupTemplate, JSONcontainer, svgContainer, labelObj) {\n  var point;\n  if (groupTemplate.style == 'circle') {\n    point = getSVGElement('circle', JSONcontainer, svgContainer);\n    point.setAttributeNS(null, \"cx\", x);\n    point.setAttributeNS(null, \"cy\", y);\n    point.setAttributeNS(null, \"r\", 0.5 * groupTemplate.size);\n  }\n  else {\n    point = getSVGElement('rect', JSONcontainer, svgContainer);\n    point.setAttributeNS(null, \"x\", x - 0.5 * groupTemplate.size);\n    point.setAttributeNS(null, \"y\", y - 0.5 * groupTemplate.size);\n    point.setAttributeNS(null, \"width\", groupTemplate.size);\n    point.setAttributeNS(null, \"height\", groupTemplate.size);\n  }\n\n  if (groupTemplate.styles !== undefined) {\n    point.setAttributeNS(null, \"style\", groupTemplate.styles);\n  }\n  point.setAttributeNS(null, \"class\", groupTemplate.className + \" vis-point\");\n  //handle label\n\n\n  if (labelObj) {\n    var label = getSVGElement('text', JSONcontainer, svgContainer);\n    if (labelObj.xOffset) {\n      x = x + labelObj.xOffset;\n    }\n\n    if (labelObj.yOffset) {\n      y = y + labelObj.yOffset;\n    }\n    if (labelObj.content) {\n      label.textContent = labelObj.content;\n    }\n\n    if (labelObj.className) {\n      label.setAttributeNS(null, \"class\", labelObj.className  + \" vis-label\");\n    }\n    label.setAttributeNS(null, \"x\", x);\n    label.setAttributeNS(null, \"y\", y);\n  }\n\n  return point;\n}\n\n/**\n * draw a bar SVG element centered on the X coordinate\n *\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {string} className\n * @param {Object} JSONcontainer\n * @param {Object} svgContainer\n * @param {string} style\n */\nexport function drawBar (x, y, width, height, className, JSONcontainer, svgContainer, style) {\n  if (height != 0) {\n    if (height < 0) {\n      height *= -1;\n      y -= height;\n    }\n    var rect = getSVGElement('rect',JSONcontainer, svgContainer);\n    rect.setAttributeNS(null, \"x\", x - 0.5 * width);\n    rect.setAttributeNS(null, \"y\", y);\n    rect.setAttributeNS(null, \"width\", width);\n    rect.setAttributeNS(null, \"height\", height);\n    rect.setAttributeNS(null, \"class\", className);\n    if (style) {\n      rect.setAttributeNS(null, \"style\", style);\n    }\n  }\n}\n\n/**\n * get default language\n * @returns {string}\n */\nexport function getNavigatorLanguage() {\n  try {\n    if (!navigator) return 'en';\n    if (navigator.languages && navigator.languages.length) {\n      return navigator.languages;\n    } else {\n      return navigator.userLanguage || navigator.language || navigator.browserLanguage || 'en';\n    }\n  } \n  catch(error) {\n    return 'en';\n  }\n}\n","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","'use strict';\nvar parent = require('../../stable/object/create');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/object/create');\n","'use strict';\nvar $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n","'use strict';\nrequire('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n","'use strict';\nmodule.exports = require('../../full/object/set-prototype-of');\n","'use strict';\nvar parent = require('../../stable/instance/bind');\n\nmodule.exports = parent;\n","import _Object$setPrototypeOf from \"core-js-pure/features/object/set-prototype-of.js\";\nimport _bindInstanceProperty from \"core-js-pure/features/instance/bind.js\";\nexport default function _setPrototypeOf(o, p) {\n  var _context;\n  _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import _Object$create from \"core-js-pure/features/object/create.js\";\nimport _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = _Object$create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  _Object$defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}","'use strict';\nvar parent = require('../../stable/object/get-prototype-of');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/object/get-prototype-of');\n","import _Object$setPrototypeOf from \"core-js-pure/features/object/set-prototype-of.js\";\nimport _bindInstanceProperty from \"core-js-pure/features/instance/bind.js\";\nimport _Object$getPrototypeOf from \"core-js-pure/features/object/get-prototype-of.js\";\nexport default function _getPrototypeOf(o) {\n  var _context;\n  _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n    return o.__proto__ || _Object$getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    _Object$defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","var _Symbol = require(\"core-js-pure/features/symbol/index.js\");\nvar _Symbol$iterator = require(\"core-js-pure/features/symbol/iterator.js\");\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nmodule.exports = require('../../full/instance/for-each');\n","'use strict';\nvar parent = require('../../stable/instance/for-each');\n\nmodule.exports = parent;\n","'use strict';\nvar 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","'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n","'use strict';\nvar 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 new $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","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n  } else {\n    that = isInstance ? this : create(AggregateErrorPrototype);\n    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n  installErrorStack(that, $AggregateError, that.stack, 1);\n  if (arguments.length > 2) installErrorCause(that, arguments[2]);\n  var errorsArray = [];\n  iterate(errors, push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n  constructor: createPropertyDescriptor(1, $AggregateError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n  AggregateError: $AggregateError\n});\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = global.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    global.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\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\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","'use strict';\nvar 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 new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar 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 new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n  && typeof window == 'object'\n  && typeof document == 'object';\n","'use strict';\nvar global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n","'use strict';\nmodule.exports = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  any: function any(iterable) {\n    var C = this;\n    var AggregateError = getBuiltIn('AggregateError');\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromisePrototype['finally'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n  }\n}\n","'use strict';\nrequire('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","'use strict';\nvar parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\n// `Promise.withResolvers` method\n// https://github.com/tc39/proposal-promise-with-resolvers\n$({ target: 'Promise', stat: true }, {\n  withResolvers: function withResolvers() {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    return {\n      promise: promiseCapability.promise,\n      resolve: promiseCapability.resolve,\n      reject: promiseCapability.reject\n    };\n  }\n});\n","'use strict';\nvar parent = require('../../stable/promise');\nrequire('../../modules/esnext.promise.with-resolvers');\n\nmodule.exports = parent;\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true, forced: true }, {\n  'try': function (callbackfn) {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(callbackfn);\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n","'use strict';\nvar parent = require('../../actual/promise');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.aggregate-error');\nrequire('../../modules/esnext.promise.all-settled');\nrequire('../../modules/esnext.promise.try');\nrequire('../../modules/esnext.promise.any');\n\nmodule.exports = parent;\n","'use strict';\nmodule.exports = require('../../full/promise');\n","'use strict';\nmodule.exports = require('../../full/instance/reverse');\n","'use strict';\nvar parent = require('../../stable/instance/reverse');\n\nmodule.exports = parent;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar _Object$defineProperty = require(\"core-js-pure/features/object/define-property.js\");\nvar _Symbol = require(\"core-js-pure/features/symbol/index.js\");\nvar _Object$create = require(\"core-js-pure/features/object/create.js\");\nvar _Object$getPrototypeOf = require(\"core-js-pure/features/object/get-prototype-of.js\");\nvar _forEachInstanceProperty = require(\"core-js-pure/features/instance/for-each.js\");\nvar _pushInstanceProperty = require(\"core-js-pure/features/instance/push.js\");\nvar _Object$setPrototypeOf = require(\"core-js-pure/features/object/set-prototype-of.js\");\nvar _Promise = require(\"core-js-pure/features/promise/index.js\");\nvar _reverseInstanceProperty = require(\"core-js-pure/features/instance/reverse.js\");\nvar _sliceInstanceProperty = require(\"core-js-pure/features/instance/slice.js\");\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n    return e;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  var t,\n    e = {},\n    r = Object.prototype,\n    n = r.hasOwnProperty,\n    o = _Object$defineProperty || function (t, e, r) {\n      t[e] = r.value;\n    },\n    i = \"function\" == typeof _Symbol ? _Symbol : {},\n    a = i.iterator || \"@@iterator\",\n    c = i.asyncIterator || \"@@asyncIterator\",\n    u = i.toStringTag || \"@@toStringTag\";\n  function define(t, e, r) {\n    return _Object$defineProperty(t, e, {\n      value: r,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), t[e];\n  }\n  try {\n    define({}, \"\");\n  } catch (t) {\n    define = function define(t, e, r) {\n      return t[e] = r;\n    };\n  }\n  function wrap(t, e, r, n) {\n    var i = e && e.prototype instanceof Generator ? e : Generator,\n      a = _Object$create(i.prototype),\n      c = new Context(n || []);\n    return o(a, \"_invoke\", {\n      value: makeInvokeMethod(t, r, c)\n    }), a;\n  }\n  function tryCatch(t, e, r) {\n    try {\n      return {\n        type: \"normal\",\n        arg: t.call(e, r)\n      };\n    } catch (t) {\n      return {\n        type: \"throw\",\n        arg: t\n      };\n    }\n  }\n  e.wrap = wrap;\n  var h = \"suspendedStart\",\n    l = \"suspendedYield\",\n    f = \"executing\",\n    s = \"completed\",\n    y = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var p = {};\n  define(p, a, function () {\n    return this;\n  });\n  var d = _Object$getPrototypeOf,\n    v = d && d(d(values([])));\n  v && v !== r && n.call(v, a) && (p = v);\n  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(p);\n  function defineIteratorMethods(t) {\n    var _context;\n    _forEachInstanceProperty(_context = [\"next\", \"throw\", \"return\"]).call(_context, function (e) {\n      define(t, e, function (t) {\n        return this._invoke(e, t);\n      });\n    });\n  }\n  function AsyncIterator(t, e) {\n    function invoke(r, o, i, a) {\n      var c = tryCatch(t[r], t, o);\n      if (\"throw\" !== c.type) {\n        var u = c.arg,\n          h = u.value;\n        return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n          invoke(\"next\", t, i, a);\n        }, function (t) {\n          invoke(\"throw\", t, i, a);\n        }) : e.resolve(h).then(function (t) {\n          u.value = t, i(u);\n        }, function (t) {\n          return invoke(\"throw\", t, i, a);\n        });\n      }\n      a(c.arg);\n    }\n    var r;\n    o(this, \"_invoke\", {\n      value: function value(t, n) {\n        function callInvokeWithMethodAndArg() {\n          return new e(function (e, r) {\n            invoke(t, n, e, r);\n          });\n        }\n        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(e, r, n) {\n    var o = h;\n    return function (i, a) {\n      if (o === f) throw new Error(\"Generator is already running\");\n      if (o === s) {\n        if (\"throw\" === i) throw a;\n        return {\n          value: t,\n          done: !0\n        };\n      }\n      for (n.method = i, n.arg = a;;) {\n        var c = n.delegate;\n        if (c) {\n          var u = maybeInvokeDelegate(c, n);\n          if (u) {\n            if (u === y) continue;\n            return u;\n          }\n        }\n        if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n          if (o === h) throw o = s, n.arg;\n          n.dispatchException(n.arg);\n        } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n        o = f;\n        var p = tryCatch(e, r, n);\n        if (\"normal\" === p.type) {\n          if (o = n.done ? s : l, p.arg === y) continue;\n          return {\n            value: p.arg,\n            done: n.done\n          };\n        }\n        \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(e, r) {\n    var n = r.method,\n      o = e.iterator[n];\n    if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n    var i = tryCatch(o, e.iterator, r.arg);\n    if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n    var a = i.arg;\n    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n  }\n  function pushTryEntry(t) {\n    var _context2;\n    var e = {\n      tryLoc: t[0]\n    };\n    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), _pushInstanceProperty(_context2 = this.tryEntries).call(_context2, e);\n  }\n  function resetTryEntry(t) {\n    var e = t.completion || {};\n    e.type = \"normal\", delete e.arg, t.completion = e;\n  }\n  function Context(t) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], _forEachInstanceProperty(t).call(t, pushTryEntry, this), this.reset(!0);\n  }\n  function values(e) {\n    if (e || \"\" === e) {\n      var r = e[a];\n      if (r) return r.call(e);\n      if (\"function\" == typeof e.next) return e;\n      if (!isNaN(e.length)) {\n        var o = -1,\n          i = function next() {\n            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n            return next.value = t, next.done = !0, next;\n          };\n        return i.next = i;\n      }\n    }\n    throw new TypeError(_typeof(e) + \" is not iterable\");\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), o(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n    var e = \"function\" == typeof t && t.constructor;\n    return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n  }, e.mark = function (t) {\n    return _Object$setPrototypeOf ? _Object$setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = _Object$create(g), t;\n  }, e.awrap = function (t) {\n    return {\n      __await: t\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n    return this;\n  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n    void 0 === i && (i = _Promise);\n    var a = new AsyncIterator(wrap(t, r, n, o), i);\n    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n      return t.done ? t.value : a.next();\n    });\n  }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n    return this;\n  }), define(g, \"toString\", function () {\n    return \"[object Generator]\";\n  }), e.keys = function (t) {\n    var e = Object(t),\n      r = [];\n    for (var n in e) _pushInstanceProperty(r).call(r, n);\n    return _reverseInstanceProperty(r).call(r), function next() {\n      for (; r.length;) {\n        var t = r.pop();\n        if (t in e) return next.value = t, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, e.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(e) {\n      var _context3;\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, _forEachInstanceProperty(_context3 = this.tryEntries).call(_context3, resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+_sliceInstanceProperty(r).call(r, 1)) && (this[r] = t);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var t = this.tryEntries[0].completion;\n      if (\"throw\" === t.type) throw t.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(e) {\n      if (this.done) throw e;\n      var r = this;\n      function handle(n, o) {\n        return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n      }\n      for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n        var i = this.tryEntries[o],\n          a = i.completion;\n        if (\"root\" === i.tryLoc) return handle(\"end\");\n        if (i.tryLoc <= this.prev) {\n          var c = n.call(i, \"catchLoc\"),\n            u = n.call(i, \"finallyLoc\");\n          if (c && u) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          } else if (c) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n          } else {\n            if (!u) throw new Error(\"try statement without catch or finally\");\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(t, e) {\n      for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n        var o = this.tryEntries[r];\n        if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n          var i = o;\n          break;\n        }\n      }\n      i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n      var a = i ? i.completion : {};\n      return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n    },\n    complete: function complete(t, e) {\n      if (\"throw\" === t.type) throw t.arg;\n      return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n    },\n    finish: function finish(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n      }\n    },\n    \"catch\": function _catch(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.tryLoc === t) {\n          var n = r.completion;\n          if (\"throw\" === n.type) {\n            var o = n.arg;\n            resetTryEntry(r);\n          }\n          return o;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(e, r, n) {\n      return this.delegate = {\n        iterator: values(e),\n        resultName: r,\n        nextLoc: n\n      }, \"next\" === this.method && (this.arg = t), y;\n    }\n  }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.reduce');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reduce;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/reduce');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.reduce;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/reduce');\n\nmodule.exports = parent;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        doesNotExceedSafeInteger(targetIndex + 1);\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.flat-map');\nrequire('../../../modules/es.array.unscopables.flat-map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').flatMap;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/flat-map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.flatMap;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.flatMap) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/flat-map');\n\nmodule.exports = parent;\n","'use strict';\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/no-object-isextensible, es/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n","'use strict';\nvar 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/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","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar $ = 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","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar fails = require('../internals/fails');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar defineProperty = require('../internals/object-define-property').f;\nvar forEach = require('../internals/array-iteration').forEach;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\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 exported = {};\n  var Constructor;\n\n  if (!DESCRIPTORS || !isCallable(NativeConstructor)\n    || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n  ) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else {\n    Constructor = wrapper(function (target, iterable) {\n      setInternalState(anInstance(target, Prototype), {\n        type: CONSTRUCTOR_NAME,\n        collection: new NativeConstructor()\n      });\n      if (!isNullOrUndefined(iterable)) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n      var IS_ADDER = KEY === 'add' || KEY === 'set';\n      if (KEY in NativePrototype && !(IS_WEAK && KEY === 'clear')) {\n        createNonEnumerableProperty(Prototype, KEY, function (a, b) {\n          var collection = getInternalState(this).collection;\n          if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY === 'get' ? undefined : false;\n          var result = collection[KEY](a === 0 ? 0 : a, b);\n          return IS_ADDER ? this : result;\n        });\n      }\n    });\n\n    IS_WEAK || defineProperty(Prototype, 'size', {\n      configurable: true,\n      get: function () {\n        return getInternalState(this).collection.size;\n      }\n    });\n  }\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, forced: true }, exported);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) {\n    if (options && options.unsafe && target[key]) target[key] = src[key];\n    else defineBuiltIn(target, key, src[key], options);\n  } return target;\n};\n","'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\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 (!isNullOrUndefined(iterable)) 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) defineBuiltInAccessor(Prototype, 'size', {\n      configurable: true,\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 createIterResultObject(undefined, true);\n      }\n      // return step by kind\n      if (kind === 'keys') return createIterResultObject(entry.key, false);\n      if (kind === 'values') return createIterResultObject(entry.value, false);\n      return createIterResultObject([entry.key, entry.value], 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 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","'use strict';\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.set');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n","module.exports = require(\"core-js-pure/stable/symbol/iterator\");","'use strict';\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIterator = require('../internals/get-iterator');\n\nmodule.exports = getIterator;\n","'use strict';\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","'use strict';\nvar UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = lengthOfArrayLike(items);\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n    return array;\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.sort');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').sort;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/sort');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.sort;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.sort) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/sort');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.some;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.some) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n","'use strict';\nrequire('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').keys;\n","'use strict';\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/keys');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.keys;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n","'use strict';\nvar parent = require('../../../es/array/virtual/keys');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/keys\");","'use strict';\nrequire('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').values;\n","'use strict';\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/values');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.values;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.values)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n","'use strict';\nvar parent = require('../../../es/array/virtual/values');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/values\");","'use strict';\nrequire('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').entries;\n","'use strict';\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/entries');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.entries;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.entries)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n","'use strict';\nvar parent = require('../../../es/array/virtual/entries');\n\nmodule.exports = parent;\n","module.exports = require(\"core-js-pure/stable/instance/entries\");","module.exports = require(\"core-js-pure/stable/object/define-property\");","'use strict';\nvar $ = 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","'use strict';\nrequire('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n","'use strict';\nrequire('../../modules/es.symbol');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n","'use strict';\nrequire('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n  return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n","'use strict';\nrequire('../../modules/es.object.get-own-property-descriptors');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n","'use strict';\nrequire('../../modules/es.object.define-properties');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n  return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","/**\n * vis-data\n * http://visjs.org/\n *\n * Manage unstructured data using DataSet. Add, update, and remove data, and listen for changes in the data.\n *\n * @version 7.1.7\n * @date    2023-09-13T18:13:28.258Z\n *\n * @copyright (c) 2011-2017 Almende B.V, http://almende.com\n * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs\n *\n * @license\n * vis.js is dual licensed under both\n *\n *   1. The Apache 2.0 License\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n *   and\n *\n *   2. The MIT License\n *      http://opensource.org/licenses/MIT\n *\n * vis.js may be distributed under either license.\n */\n\nimport { pureDeepObjectAssign } from 'vis-util/esnext/esm/vis-util.js';\nexport { DELETE } from 'vis-util/esnext/esm/vis-util.js';\nimport { v4 } from 'uuid';\n\n/**\r\n * Create new data pipe.\r\n *\r\n * @param from - The source data set or data view.\r\n * @remarks\r\n * Example usage:\r\n * ```typescript\r\n * interface AppItem {\r\n *   whoami: string;\r\n *   appData: unknown;\r\n *   visData: VisItem;\r\n * }\r\n * interface VisItem {\r\n *   id: number;\r\n *   label: string;\r\n *   color: string;\r\n *   x: number;\r\n *   y: number;\r\n * }\r\n *\r\n * const ds1 = new DataSet<AppItem, \"whoami\">([], { fieldId: \"whoami\" });\r\n * const ds2 = new DataSet<VisItem, \"id\">();\r\n *\r\n * const pipe = createNewDataPipeFrom(ds1)\r\n *   .filter((item): boolean => item.enabled === true)\r\n *   .map<VisItem, \"id\">((item): VisItem => item.visData)\r\n *   .to(ds2);\r\n *\r\n * pipe.start();\r\n * ```\r\n * @returns A factory whose methods can be used to configure the pipe.\r\n */\r\nfunction createNewDataPipeFrom(from) {\r\n    return new DataPipeUnderConstruction(from);\r\n}\r\n/**\r\n * Internal implementation of the pipe. This should be accessible only through\r\n * `createNewDataPipeFrom` from the outside.\r\n *\r\n * @typeParam SI - Source item type.\r\n * @typeParam SP - Source item type's id property name.\r\n * @typeParam TI - Target item type.\r\n * @typeParam TP - Target item type's id property name.\r\n */\r\nclass SimpleDataPipe {\r\n    _source;\r\n    _transformers;\r\n    _target;\r\n    /**\r\n     * Bound listeners for use with `DataInterface['on' | 'off']`.\r\n     */\r\n    _listeners = {\r\n        add: this._add.bind(this),\r\n        remove: this._remove.bind(this),\r\n        update: this._update.bind(this),\r\n    };\r\n    /**\r\n     * Create a new data pipe.\r\n     *\r\n     * @param _source - The data set or data view that will be observed.\r\n     * @param _transformers - An array of transforming functions to be used to\r\n     * filter or transform the items in the pipe.\r\n     * @param _target - The data set or data view that will receive the items.\r\n     */\r\n    constructor(_source, _transformers, _target) {\r\n        this._source = _source;\r\n        this._transformers = _transformers;\r\n        this._target = _target;\r\n    }\r\n    /** @inheritDoc */\r\n    all() {\r\n        this._target.update(this._transformItems(this._source.get()));\r\n        return this;\r\n    }\r\n    /** @inheritDoc */\r\n    start() {\r\n        this._source.on(\"add\", this._listeners.add);\r\n        this._source.on(\"remove\", this._listeners.remove);\r\n        this._source.on(\"update\", this._listeners.update);\r\n        return this;\r\n    }\r\n    /** @inheritDoc */\r\n    stop() {\r\n        this._source.off(\"add\", this._listeners.add);\r\n        this._source.off(\"remove\", this._listeners.remove);\r\n        this._source.off(\"update\", this._listeners.update);\r\n        return this;\r\n    }\r\n    /**\r\n     * Apply the transformers to the items.\r\n     *\r\n     * @param items - The items to be transformed.\r\n     * @returns The transformed items.\r\n     */\r\n    _transformItems(items) {\r\n        return this._transformers.reduce((items, transform) => {\r\n            return transform(items);\r\n        }, items);\r\n    }\r\n    /**\r\n     * Handle an add event.\r\n     *\r\n     * @param _name - Ignored.\r\n     * @param payload - The payload containing the ids of the added items.\r\n     */\r\n    _add(_name, payload) {\r\n        if (payload == null) {\r\n            return;\r\n        }\r\n        this._target.add(this._transformItems(this._source.get(payload.items)));\r\n    }\r\n    /**\r\n     * Handle an update event.\r\n     *\r\n     * @param _name - Ignored.\r\n     * @param payload - The payload containing the ids of the updated items.\r\n     */\r\n    _update(_name, payload) {\r\n        if (payload == null) {\r\n            return;\r\n        }\r\n        this._target.update(this._transformItems(this._source.get(payload.items)));\r\n    }\r\n    /**\r\n     * Handle a remove event.\r\n     *\r\n     * @param _name - Ignored.\r\n     * @param payload - The payload containing the data of the removed items.\r\n     */\r\n    _remove(_name, payload) {\r\n        if (payload == null) {\r\n            return;\r\n        }\r\n        this._target.remove(this._transformItems(payload.oldData));\r\n    }\r\n}\r\n/**\r\n * Internal implementation of the pipe factory. This should be accessible\r\n * only through `createNewDataPipeFrom` from the outside.\r\n *\r\n * @typeParam TI - Target item type.\r\n * @typeParam TP - Target item type's id property name.\r\n */\r\nclass DataPipeUnderConstruction {\r\n    _source;\r\n    /**\r\n     * Array transformers used to transform items within the pipe. This is typed\r\n     * as any for the sake of simplicity.\r\n     */\r\n    _transformers = [];\r\n    /**\r\n     * Create a new data pipe factory. This is an internal constructor that\r\n     * should never be called from outside of this file.\r\n     *\r\n     * @param _source - The source data set or data view for this pipe.\r\n     */\r\n    constructor(_source) {\r\n        this._source = _source;\r\n    }\r\n    /**\r\n     * Filter the items.\r\n     *\r\n     * @param callback - A filtering function that returns true if given item\r\n     * should be piped and false if not.\r\n     * @returns This factory for further configuration.\r\n     */\r\n    filter(callback) {\r\n        this._transformers.push((input) => input.filter(callback));\r\n        return this;\r\n    }\r\n    /**\r\n     * Map each source item to a new type.\r\n     *\r\n     * @param callback - A mapping function that takes a source item and returns\r\n     * corresponding mapped item.\r\n     * @typeParam TI - Target item type.\r\n     * @typeParam TP - Target item type's id property name.\r\n     * @returns This factory for further configuration.\r\n     */\r\n    map(callback) {\r\n        this._transformers.push((input) => input.map(callback));\r\n        return this;\r\n    }\r\n    /**\r\n     * Map each source item to zero or more items of a new type.\r\n     *\r\n     * @param callback - A mapping function that takes a source item and returns\r\n     * an array of corresponding mapped items.\r\n     * @typeParam TI - Target item type.\r\n     * @typeParam TP - Target item type's id property name.\r\n     * @returns This factory for further configuration.\r\n     */\r\n    flatMap(callback) {\r\n        this._transformers.push((input) => input.flatMap(callback));\r\n        return this;\r\n    }\r\n    /**\r\n     * Connect this pipe to given data set.\r\n     *\r\n     * @param target - The data set that will receive the items from this pipe.\r\n     * @returns The pipe connected between given data sets and performing\r\n     * configured transformation on the processed items.\r\n     */\r\n    to(target) {\r\n        return new SimpleDataPipe(this._source, this._transformers, target);\r\n    }\r\n}\n\n/**\r\n * Determine whether a value can be used as an id.\r\n *\r\n * @param value - Input value of unknown type.\r\n * @returns True if the value is valid id, false otherwise.\r\n */\r\nfunction isId(value) {\r\n    return typeof value === \"string\" || typeof value === \"number\";\r\n}\n\n/**\r\n * A queue.\r\n *\r\n * @typeParam T - The type of method names to be replaced by queued versions.\r\n */\r\nclass Queue {\r\n    /** Delay in milliseconds. If defined the queue will be periodically flushed. */\r\n    delay;\r\n    /** Maximum number of entries in the queue before it will be flushed. */\r\n    max;\r\n    _queue = [];\r\n    _timeout = null;\r\n    _extended = null;\r\n    /**\r\n     * Construct a new Queue.\r\n     *\r\n     * @param options - Queue configuration.\r\n     */\r\n    constructor(options) {\r\n        // options\r\n        this.delay = null;\r\n        this.max = Infinity;\r\n        this.setOptions(options);\r\n    }\r\n    /**\r\n     * Update the configuration of the queue.\r\n     *\r\n     * @param options - Queue configuration.\r\n     */\r\n    setOptions(options) {\r\n        if (options && typeof options.delay !== \"undefined\") {\r\n            this.delay = options.delay;\r\n        }\r\n        if (options && typeof options.max !== \"undefined\") {\r\n            this.max = options.max;\r\n        }\r\n        this._flushIfNeeded();\r\n    }\r\n    /**\r\n     * Extend an object with queuing functionality.\r\n     * The object will be extended with a function flush, and the methods provided in options.replace will be replaced with queued ones.\r\n     *\r\n     * @param object - The object to be extended.\r\n     * @param options - Additional options.\r\n     * @returns The created queue.\r\n     */\r\n    static extend(object, options) {\r\n        const queue = new Queue(options);\r\n        if (object.flush !== undefined) {\r\n            throw new Error(\"Target object already has a property flush\");\r\n        }\r\n        object.flush = () => {\r\n            queue.flush();\r\n        };\r\n        const methods = [\r\n            {\r\n                name: \"flush\",\r\n                original: undefined,\r\n            },\r\n        ];\r\n        if (options && options.replace) {\r\n            for (let i = 0; i < options.replace.length; i++) {\r\n                const name = options.replace[i];\r\n                methods.push({\r\n                    name: name,\r\n                    // @TODO: better solution?\r\n                    original: object[name],\r\n                });\r\n                // @TODO: better solution?\r\n                queue.replace(object, name);\r\n            }\r\n        }\r\n        queue._extended = {\r\n            object: object,\r\n            methods: methods,\r\n        };\r\n        return queue;\r\n    }\r\n    /**\r\n     * Destroy the queue. The queue will first flush all queued actions, and in case it has extended an object, will restore the original object.\r\n     */\r\n    destroy() {\r\n        this.flush();\r\n        if (this._extended) {\r\n            const object = this._extended.object;\r\n            const methods = this._extended.methods;\r\n            for (let i = 0; i < methods.length; i++) {\r\n                const method = methods[i];\r\n                if (method.original) {\r\n                    // @TODO: better solution?\r\n                    object[method.name] = method.original;\r\n                }\r\n                else {\r\n                    // @TODO: better solution?\r\n                    delete object[method.name];\r\n                }\r\n            }\r\n            this._extended = null;\r\n        }\r\n    }\r\n    /**\r\n     * Replace a method on an object with a queued version.\r\n     *\r\n     * @param object - Object having the method.\r\n     * @param method - The method name.\r\n     */\r\n    replace(object, method) {\r\n        /* eslint-disable-next-line @typescript-eslint/no-this-alias -- Function this is necessary in the function bellow, so class this has to be saved into a variable here. */\r\n        const me = this;\r\n        const original = object[method];\r\n        if (!original) {\r\n            throw new Error(\"Method \" + method + \" undefined\");\r\n        }\r\n        object[method] = function (...args) {\r\n            // add this call to the queue\r\n            me.queue({\r\n                args: args,\r\n                fn: original,\r\n                context: this,\r\n            });\r\n        };\r\n    }\r\n    /**\r\n     * Queue a call.\r\n     *\r\n     * @param entry - The function or entry to be queued.\r\n     */\r\n    queue(entry) {\r\n        if (typeof entry === \"function\") {\r\n            this._queue.push({ fn: entry });\r\n        }\r\n        else {\r\n            this._queue.push(entry);\r\n        }\r\n        this._flushIfNeeded();\r\n    }\r\n    /**\r\n     * Check whether the queue needs to be flushed.\r\n     */\r\n    _flushIfNeeded() {\r\n        // flush when the maximum is exceeded.\r\n        if (this._queue.length > this.max) {\r\n            this.flush();\r\n        }\r\n        // flush after a period of inactivity when a delay is configured\r\n        if (this._timeout != null) {\r\n            clearTimeout(this._timeout);\r\n            this._timeout = null;\r\n        }\r\n        if (this.queue.length > 0 && typeof this.delay === \"number\") {\r\n            this._timeout = setTimeout(() => {\r\n                this.flush();\r\n            }, this.delay);\r\n        }\r\n    }\r\n    /**\r\n     * Flush all queued calls\r\n     */\r\n    flush() {\r\n        this._queue.splice(0).forEach((entry) => {\r\n            entry.fn.apply(entry.context || entry.fn, entry.args || []);\r\n        });\r\n    }\r\n}\n\n/**\r\n * {@link DataSet} code that can be reused in {@link DataView} or other similar implementations of {@link DataInterface}.\r\n *\r\n * @typeParam Item - Item type that may or may not have an id.\r\n * @typeParam IdProp - Name of the property that contains the id.\r\n */\r\nclass DataSetPart {\r\n    _subscribers = {\r\n        \"*\": [],\r\n        add: [],\r\n        remove: [],\r\n        update: [],\r\n    };\r\n    /**\r\n     * Trigger an event\r\n     *\r\n     * @param event - Event name.\r\n     * @param payload - Event payload.\r\n     * @param senderId - Id of the sender.\r\n     */\r\n    _trigger(event, payload, senderId) {\r\n        if (event === \"*\") {\r\n            throw new Error(\"Cannot trigger event *\");\r\n        }\r\n        [...this._subscribers[event], ...this._subscribers[\"*\"]].forEach((subscriber) => {\r\n            subscriber(event, payload, senderId != null ? senderId : null);\r\n        });\r\n    }\r\n    /**\r\n     * Subscribe to an event, add an event listener.\r\n     *\r\n     * @remarks Non-function callbacks are ignored.\r\n     * @param event - Event name.\r\n     * @param callback - Callback method.\r\n     */\r\n    on(event, callback) {\r\n        if (typeof callback === \"function\") {\r\n            this._subscribers[event].push(callback);\r\n        }\r\n        // @TODO: Maybe throw for invalid callbacks?\r\n    }\r\n    /**\r\n     * Unsubscribe from an event, remove an event listener.\r\n     *\r\n     * @remarks If the same callback was subscribed more than once **all** occurences will be removed.\r\n     * @param event - Event name.\r\n     * @param callback - Callback method.\r\n     */\r\n    off(event, callback) {\r\n        this._subscribers[event] = this._subscribers[event].filter((subscriber) => subscriber !== callback);\r\n    }\r\n    /**\r\n     * @deprecated Use on instead (PS: DataView.subscribe === DataView.on).\r\n     */\r\n    subscribe = DataSetPart.prototype.on;\r\n    /**\r\n     * @deprecated Use off instead (PS: DataView.unsubscribe === DataView.off).\r\n     */\r\n    unsubscribe = DataSetPart.prototype.off;\r\n}\n\n/**\r\n * Data stream\r\n *\r\n * @remarks\r\n * {@link DataStream} offers an always up to date stream of items from a {@link DataSet} or {@link DataView}.\r\n * That means that the stream is evaluated at the time of iteration, conversion to another data type or when {@link cache} is called, not when the {@link DataStream} was created.\r\n * Multiple invocations of for example {@link toItemArray} may yield different results (if the data source like for example {@link DataSet} gets modified).\r\n * @typeParam Item - The item type this stream is going to work with.\r\n */\r\nclass DataStream {\r\n    _pairs;\r\n    /**\r\n     * Create a new data stream.\r\n     *\r\n     * @param pairs - The id, item pairs.\r\n     */\r\n    constructor(pairs) {\r\n        this._pairs = pairs;\r\n    }\r\n    /**\r\n     * Return an iterable of key, value pairs for every entry in the stream.\r\n     */\r\n    *[Symbol.iterator]() {\r\n        for (const [id, item] of this._pairs) {\r\n            yield [id, item];\r\n        }\r\n    }\r\n    /**\r\n     * Return an iterable of key, value pairs for every entry in the stream.\r\n     */\r\n    *entries() {\r\n        for (const [id, item] of this._pairs) {\r\n            yield [id, item];\r\n        }\r\n    }\r\n    /**\r\n     * Return an iterable of keys in the stream.\r\n     */\r\n    *keys() {\r\n        for (const [id] of this._pairs) {\r\n            yield id;\r\n        }\r\n    }\r\n    /**\r\n     * Return an iterable of values in the stream.\r\n     */\r\n    *values() {\r\n        for (const [, item] of this._pairs) {\r\n            yield item;\r\n        }\r\n    }\r\n    /**\r\n     * Return an array containing all the ids in this stream.\r\n     *\r\n     * @remarks\r\n     * The array may contain duplicities.\r\n     * @returns The array with all ids from this stream.\r\n     */\r\n    toIdArray() {\r\n        return [...this._pairs].map((pair) => pair[0]);\r\n    }\r\n    /**\r\n     * Return an array containing all the items in this stream.\r\n     *\r\n     * @remarks\r\n     * The array may contain duplicities.\r\n     * @returns The array with all items from this stream.\r\n     */\r\n    toItemArray() {\r\n        return [...this._pairs].map((pair) => pair[1]);\r\n    }\r\n    /**\r\n     * Return an array containing all the entries in this stream.\r\n     *\r\n     * @remarks\r\n     * The array may contain duplicities.\r\n     * @returns The array with all entries from this stream.\r\n     */\r\n    toEntryArray() {\r\n        return [...this._pairs];\r\n    }\r\n    /**\r\n     * Return an object map containing all the items in this stream accessible by ids.\r\n     *\r\n     * @remarks\r\n     * In case of duplicate ids (coerced to string so `7 == '7'`) the last encoutered appears in the returned object.\r\n     * @returns The object map of all id → item pairs from this stream.\r\n     */\r\n    toObjectMap() {\r\n        const map = Object.create(null);\r\n        for (const [id, item] of this._pairs) {\r\n            map[id] = item;\r\n        }\r\n        return map;\r\n    }\r\n    /**\r\n     * Return a map containing all the items in this stream accessible by ids.\r\n     *\r\n     * @returns The map of all id → item pairs from this stream.\r\n     */\r\n    toMap() {\r\n        return new Map(this._pairs);\r\n    }\r\n    /**\r\n     * Return a set containing all the (unique) ids in this stream.\r\n     *\r\n     * @returns The set of all ids from this stream.\r\n     */\r\n    toIdSet() {\r\n        return new Set(this.toIdArray());\r\n    }\r\n    /**\r\n     * Return a set containing all the (unique) items in this stream.\r\n     *\r\n     * @returns The set of all items from this stream.\r\n     */\r\n    toItemSet() {\r\n        return new Set(this.toItemArray());\r\n    }\r\n    /**\r\n     * Cache the items from this stream.\r\n     *\r\n     * @remarks\r\n     * This method allows for items to be fetched immediatelly and used (possibly multiple times) later.\r\n     * It can also be used to optimize performance as {@link DataStream} would otherwise reevaluate everything upon each iteration.\r\n     *\r\n     * ## Example\r\n     * ```javascript\r\n     * const ds = new DataSet([…])\r\n     *\r\n     * const cachedStream = ds.stream()\r\n     *   .filter(…)\r\n     *   .sort(…)\r\n     *   .map(…)\r\n     *   .cached(…) // Data are fetched, processed and cached here.\r\n     *\r\n     * ds.clear()\r\n     * chachedStream // Still has all the items.\r\n     * ```\r\n     * @returns A new {@link DataStream} with cached items (detached from the original {@link DataSet}).\r\n     */\r\n    cache() {\r\n        return new DataStream([...this._pairs]);\r\n    }\r\n    /**\r\n     * Get the distinct values of given property.\r\n     *\r\n     * @param callback - The function that picks and possibly converts the property.\r\n     * @typeParam T - The type of the distinct value.\r\n     * @returns A set of all distinct properties.\r\n     */\r\n    distinct(callback) {\r\n        const set = new Set();\r\n        for (const [id, item] of this._pairs) {\r\n            set.add(callback(item, id));\r\n        }\r\n        return set;\r\n    }\r\n    /**\r\n     * Filter the items of the stream.\r\n     *\r\n     * @param callback - The function that decides whether an item will be included.\r\n     * @returns A new data stream with the filtered items.\r\n     */\r\n    filter(callback) {\r\n        const pairs = this._pairs;\r\n        return new DataStream({\r\n            *[Symbol.iterator]() {\r\n                for (const [id, item] of pairs) {\r\n                    if (callback(item, id)) {\r\n                        yield [id, item];\r\n                    }\r\n                }\r\n            },\r\n        });\r\n    }\r\n    /**\r\n     * Execute a callback for each item of the stream.\r\n     *\r\n     * @param callback - The function that will be invoked for each item.\r\n     */\r\n    forEach(callback) {\r\n        for (const [id, item] of this._pairs) {\r\n            callback(item, id);\r\n        }\r\n    }\r\n    /**\r\n     * Map the items into a different type.\r\n     *\r\n     * @param callback - The function that does the conversion.\r\n     * @typeParam Mapped - The type of the item after mapping.\r\n     * @returns A new data stream with the mapped items.\r\n     */\r\n    map(callback) {\r\n        const pairs = this._pairs;\r\n        return new DataStream({\r\n            *[Symbol.iterator]() {\r\n                for (const [id, item] of pairs) {\r\n                    yield [id, callback(item, id)];\r\n                }\r\n            },\r\n        });\r\n    }\r\n    /**\r\n     * Get the item with the maximum value of given property.\r\n     *\r\n     * @param callback - The function that picks and possibly converts the property.\r\n     * @returns The item with the maximum if found otherwise null.\r\n     */\r\n    max(callback) {\r\n        const iter = this._pairs[Symbol.iterator]();\r\n        let curr = iter.next();\r\n        if (curr.done) {\r\n            return null;\r\n        }\r\n        let maxItem = curr.value[1];\r\n        let maxValue = callback(curr.value[1], curr.value[0]);\r\n        while (!(curr = iter.next()).done) {\r\n            const [id, item] = curr.value;\r\n            const value = callback(item, id);\r\n            if (value > maxValue) {\r\n                maxValue = value;\r\n                maxItem = item;\r\n            }\r\n        }\r\n        return maxItem;\r\n    }\r\n    /**\r\n     * Get the item with the minimum value of given property.\r\n     *\r\n     * @param callback - The function that picks and possibly converts the property.\r\n     * @returns The item with the minimum if found otherwise null.\r\n     */\r\n    min(callback) {\r\n        const iter = this._pairs[Symbol.iterator]();\r\n        let curr = iter.next();\r\n        if (curr.done) {\r\n            return null;\r\n        }\r\n        let minItem = curr.value[1];\r\n        let minValue = callback(curr.value[1], curr.value[0]);\r\n        while (!(curr = iter.next()).done) {\r\n            const [id, item] = curr.value;\r\n            const value = callback(item, id);\r\n            if (value < minValue) {\r\n                minValue = value;\r\n                minItem = item;\r\n            }\r\n        }\r\n        return minItem;\r\n    }\r\n    /**\r\n     * Reduce the items into a single value.\r\n     *\r\n     * @param callback - The function that does the reduction.\r\n     * @param accumulator - The initial value of the accumulator.\r\n     * @typeParam T - The type of the accumulated value.\r\n     * @returns The reduced value.\r\n     */\r\n    reduce(callback, accumulator) {\r\n        for (const [id, item] of this._pairs) {\r\n            accumulator = callback(accumulator, item, id);\r\n        }\r\n        return accumulator;\r\n    }\r\n    /**\r\n     * Sort the items.\r\n     *\r\n     * @param callback - Item comparator.\r\n     * @returns A new stream with sorted items.\r\n     */\r\n    sort(callback) {\r\n        return new DataStream({\r\n            [Symbol.iterator]: () => [...this._pairs]\r\n                .sort(([idA, itemA], [idB, itemB]) => callback(itemA, itemB, idA, idB))[Symbol.iterator](),\r\n        });\r\n    }\r\n}\n\n/**\r\n * Add an id to given item if it doesn't have one already.\r\n *\r\n * @remarks\r\n * The item will be modified.\r\n * @param item - The item that will have an id after a call to this function.\r\n * @param idProp - The key of the id property.\r\n * @typeParam Item - Item type that may or may not have an id.\r\n * @typeParam IdProp - Name of the property that contains the id.\r\n * @returns true\r\n */\r\nfunction ensureFullItem(item, idProp) {\r\n    if (item[idProp] == null) {\r\n        // generate an id\r\n        item[idProp] = v4();\r\n    }\r\n    return item;\r\n}\r\n/**\r\n * # DataSet\r\n *\r\n * Vis.js comes with a flexible DataSet, which can be used to hold and\r\n * manipulate unstructured data and listen for changes in the data. The DataSet\r\n * is key/value based. Data items can be added, updated and removed from the\r\n * DataSet, and one can subscribe to changes in the DataSet. The data in the\r\n * DataSet can be filtered and ordered. Data can be normalized when appending it\r\n * to the DataSet as well.\r\n *\r\n * ## Example\r\n *\r\n * The following example shows how to use a DataSet.\r\n *\r\n * ```javascript\r\n * // create a DataSet\r\n * var options = {};\r\n * var data = new vis.DataSet(options);\r\n *\r\n * // add items\r\n * // note that the data items can contain different properties and data formats\r\n * data.add([\r\n *   {id: 1, text: 'item 1', date: new Date(2013, 6, 20), group: 1, first: true},\r\n *   {id: 2, text: 'item 2', date: '2013-06-23', group: 2},\r\n *   {id: 3, text: 'item 3', date: '2013-06-25', group: 2},\r\n *   {id: 4, text: 'item 4'}\r\n * ]);\r\n *\r\n * // subscribe to any change in the DataSet\r\n * data.on('*', function (event, properties, senderId) {\r\n *   console.log('event', event, properties);\r\n * });\r\n *\r\n * // update an existing item\r\n * data.update({id: 2, group: 1});\r\n *\r\n * // remove an item\r\n * data.remove(4);\r\n *\r\n * // get all ids\r\n * var ids = data.getIds();\r\n * console.log('ids', ids);\r\n *\r\n * // get a specific item\r\n * var item1 = data.get(1);\r\n * console.log('item1', item1);\r\n *\r\n * // retrieve a filtered subset of the data\r\n * var items = data.get({\r\n *   filter: function (item) {\r\n *     return item.group == 1;\r\n *   }\r\n * });\r\n * console.log('filtered items', items);\r\n * ```\r\n *\r\n * @typeParam Item - Item type that may or may not have an id.\r\n * @typeParam IdProp - Name of the property that contains the id.\r\n */\r\nclass DataSet extends DataSetPart {\r\n    /** Flush all queued calls. */\r\n    flush;\r\n    /** @inheritDoc */\r\n    length;\r\n    /** @inheritDoc */\r\n    get idProp() {\r\n        return this._idProp;\r\n    }\r\n    _options;\r\n    _data;\r\n    _idProp;\r\n    _queue = null;\r\n    /**\r\n     * Construct a new DataSet.\r\n     *\r\n     * @param data - Initial data or options.\r\n     * @param options - Options (type error if data is also options).\r\n     */\r\n    constructor(data, options) {\r\n        super();\r\n        // correctly read optional arguments\r\n        if (data && !Array.isArray(data)) {\r\n            options = data;\r\n            data = [];\r\n        }\r\n        this._options = options || {};\r\n        this._data = new Map(); // map with data indexed by id\r\n        this.length = 0; // number of items in the DataSet\r\n        this._idProp = this._options.fieldId || \"id\"; // name of the field containing id\r\n        // add initial data when provided\r\n        if (data && data.length) {\r\n            this.add(data);\r\n        }\r\n        this.setOptions(options);\r\n    }\r\n    /**\r\n     * Set new options.\r\n     *\r\n     * @param options - The new options.\r\n     */\r\n    setOptions(options) {\r\n        if (options && options.queue !== undefined) {\r\n            if (options.queue === false) {\r\n                // delete queue if loaded\r\n                if (this._queue) {\r\n                    this._queue.destroy();\r\n                    this._queue = null;\r\n                }\r\n            }\r\n            else {\r\n                // create queue and update its options\r\n                if (!this._queue) {\r\n                    this._queue = Queue.extend(this, {\r\n                        replace: [\"add\", \"update\", \"remove\"],\r\n                    });\r\n                }\r\n                if (options.queue && typeof options.queue === \"object\") {\r\n                    this._queue.setOptions(options.queue);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * Add a data item or an array with items.\r\n     *\r\n     * After the items are added to the DataSet, the DataSet will trigger an event `add`. When a `senderId` is provided, this id will be passed with the triggered event to all subscribers.\r\n     *\r\n     * ## Example\r\n     *\r\n     * ```javascript\r\n     * // create a DataSet\r\n     * const data = new vis.DataSet()\r\n     *\r\n     * // add items\r\n     * const ids = data.add([\r\n     *   { id: 1, text: 'item 1' },\r\n     *   { id: 2, text: 'item 2' },\r\n     *   { text: 'item without an id' }\r\n     * ])\r\n     *\r\n     * console.log(ids) // [1, 2, '<UUIDv4>']\r\n     * ```\r\n     *\r\n     * @param data - Items to be added (ids will be generated if missing).\r\n     * @param senderId - Sender id.\r\n     * @returns addedIds - Array with the ids (generated if not present) of the added items.\r\n     * @throws When an item with the same id as any of the added items already exists.\r\n     */\r\n    add(data, senderId) {\r\n        const addedIds = [];\r\n        let id;\r\n        if (Array.isArray(data)) {\r\n            // Array\r\n            const idsToAdd = data.map((d) => d[this._idProp]);\r\n            if (idsToAdd.some((id) => this._data.has(id))) {\r\n                throw new Error(\"A duplicate id was found in the parameter array.\");\r\n            }\r\n            for (let i = 0, len = data.length; i < len; i++) {\r\n                id = this._addItem(data[i]);\r\n                addedIds.push(id);\r\n            }\r\n        }\r\n        else if (data && typeof data === \"object\") {\r\n            // Single item\r\n            id = this._addItem(data);\r\n            addedIds.push(id);\r\n        }\r\n        else {\r\n            throw new Error(\"Unknown dataType\");\r\n        }\r\n        if (addedIds.length) {\r\n            this._trigger(\"add\", { items: addedIds }, senderId);\r\n        }\r\n        return addedIds;\r\n    }\r\n    /**\r\n     * Update existing items. When an item does not exist, it will be created.\r\n     *\r\n     * @remarks\r\n     * The provided properties will be merged in the existing item. When an item does not exist, it will be created.\r\n     *\r\n     * After the items are updated, the DataSet will trigger an event `add` for the added items, and an event `update`. When a `senderId` is provided, this id will be passed with the triggered event to all subscribers.\r\n     *\r\n     * ## Example\r\n     *\r\n     * ```javascript\r\n     * // create a DataSet\r\n     * const data = new vis.DataSet([\r\n     *   { id: 1, text: 'item 1' },\r\n     *   { id: 2, text: 'item 2' },\r\n     *   { id: 3, text: 'item 3' }\r\n     * ])\r\n     *\r\n     * // update items\r\n     * const ids = data.update([\r\n     *   { id: 2, text: 'item 2 (updated)' },\r\n     *   { id: 4, text: 'item 4 (new)' }\r\n     * ])\r\n     *\r\n     * console.log(ids) // [2, 4]\r\n     * ```\r\n     *\r\n     * ## Warning for TypeScript users\r\n     * This method may introduce partial items into the data set. Use add or updateOnly instead for better type safety.\r\n     * @param data - Items to be updated (if the id is already present) or added (if the id is missing).\r\n     * @param senderId - Sender id.\r\n     * @returns updatedIds - The ids of the added (these may be newly generated if there was no id in the item from the data) or updated items.\r\n     * @throws When the supplied data is neither an item nor an array of items.\r\n     */\r\n    update(data, senderId) {\r\n        const addedIds = [];\r\n        const updatedIds = [];\r\n        const oldData = [];\r\n        const updatedData = [];\r\n        const idProp = this._idProp;\r\n        const addOrUpdate = (item) => {\r\n            const origId = item[idProp];\r\n            if (origId != null && this._data.has(origId)) {\r\n                const fullItem = item; // it has an id, therefore it is a fullitem\r\n                const oldItem = Object.assign({}, this._data.get(origId));\r\n                // update item\r\n                const id = this._updateItem(fullItem);\r\n                updatedIds.push(id);\r\n                updatedData.push(fullItem);\r\n                oldData.push(oldItem);\r\n            }\r\n            else {\r\n                // add new item\r\n                const id = this._addItem(item);\r\n                addedIds.push(id);\r\n            }\r\n        };\r\n        if (Array.isArray(data)) {\r\n            // Array\r\n            for (let i = 0, len = data.length; i < len; i++) {\r\n                if (data[i] && typeof data[i] === \"object\") {\r\n                    addOrUpdate(data[i]);\r\n                }\r\n                else {\r\n                    console.warn(\"Ignoring input item, which is not an object at index \" + i);\r\n                }\r\n            }\r\n        }\r\n        else if (data && typeof data === \"object\") {\r\n            // Single item\r\n            addOrUpdate(data);\r\n        }\r\n        else {\r\n            throw new Error(\"Unknown dataType\");\r\n        }\r\n        if (addedIds.length) {\r\n            this._trigger(\"add\", { items: addedIds }, senderId);\r\n        }\r\n        if (updatedIds.length) {\r\n            const props = { items: updatedIds, oldData: oldData, data: updatedData };\r\n            // TODO: remove deprecated property 'data' some day\r\n            //Object.defineProperty(props, 'data', {\r\n            //  'get': (function() {\r\n            //    console.warn('Property data is deprecated. Use DataSet.get(ids) to retrieve the new data, use the oldData property on this object to get the old data');\r\n            //    return updatedData;\r\n            //  }).bind(this)\r\n            //});\r\n            this._trigger(\"update\", props, senderId);\r\n        }\r\n        return addedIds.concat(updatedIds);\r\n    }\r\n    /**\r\n     * Update existing items. When an item does not exist, an error will be thrown.\r\n     *\r\n     * @remarks\r\n     * The provided properties will be deeply merged into the existing item.\r\n     * When an item does not exist (id not present in the data set or absent), an error will be thrown and nothing will be changed.\r\n     *\r\n     * After the items are updated, the DataSet will trigger an event `update`.\r\n     * When a `senderId` is provided, this id will be passed with the triggered event to all subscribers.\r\n     *\r\n     * ## Example\r\n     *\r\n     * ```javascript\r\n     * // create a DataSet\r\n     * const data = new vis.DataSet([\r\n     *   { id: 1, text: 'item 1' },\r\n     *   { id: 2, text: 'item 2' },\r\n     *   { id: 3, text: 'item 3' },\r\n     * ])\r\n     *\r\n     * // update items\r\n     * const ids = data.update([\r\n     *   { id: 2, text: 'item 2 (updated)' }, // works\r\n     *   // { id: 4, text: 'item 4 (new)' }, // would throw\r\n     *   // { text: 'item 4 (new)' }, // would also throw\r\n     * ])\r\n     *\r\n     * console.log(ids) // [2]\r\n     * ```\r\n     * @param data - Updates (the id and optionally other props) to the items in this data set.\r\n     * @param senderId - Sender id.\r\n     * @returns updatedIds - The ids of the updated items.\r\n     * @throws When the supplied data is neither an item nor an array of items, when the ids are missing.\r\n     */\r\n    updateOnly(data, senderId) {\r\n        if (!Array.isArray(data)) {\r\n            data = [data];\r\n        }\r\n        const updateEventData = data\r\n            .map((update) => {\r\n            const oldData = this._data.get(update[this._idProp]);\r\n            if (oldData == null) {\r\n                throw new Error(\"Updating non-existent items is not allowed.\");\r\n            }\r\n            return { oldData, update };\r\n        })\r\n            .map(({ oldData, update, }) => {\r\n            const id = oldData[this._idProp];\r\n            const updatedData = pureDeepObjectAssign(oldData, update);\r\n            this._data.set(id, updatedData);\r\n            return {\r\n                id,\r\n                oldData: oldData,\r\n                updatedData,\r\n            };\r\n        });\r\n        if (updateEventData.length) {\r\n            const props = {\r\n                items: updateEventData.map((value) => value.id),\r\n                oldData: updateEventData.map((value) => value.oldData),\r\n                data: updateEventData.map((value) => value.updatedData),\r\n            };\r\n            // TODO: remove deprecated property 'data' some day\r\n            //Object.defineProperty(props, 'data', {\r\n            //  'get': (function() {\r\n            //    console.warn('Property data is deprecated. Use DataSet.get(ids) to retrieve the new data, use the oldData property on this object to get the old data');\r\n            //    return updatedData;\r\n            //  }).bind(this)\r\n            //});\r\n            this._trigger(\"update\", props, senderId);\r\n            return props.items;\r\n        }\r\n        else {\r\n            return [];\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    get(first, second) {\r\n        // @TODO: Woudn't it be better to split this into multiple methods?\r\n        // parse the arguments\r\n        let id = undefined;\r\n        let ids = undefined;\r\n        let options = undefined;\r\n        if (isId(first)) {\r\n            // get(id [, options])\r\n            id = first;\r\n            options = second;\r\n        }\r\n        else if (Array.isArray(first)) {\r\n            // get(ids [, options])\r\n            ids = first;\r\n            options = second;\r\n        }\r\n        else {\r\n            // get([, options])\r\n            options = first;\r\n        }\r\n        // determine the return type\r\n        const returnType = options && options.returnType === \"Object\" ? \"Object\" : \"Array\";\r\n        // @TODO: WTF is this? Or am I missing something?\r\n        // var returnType\r\n        // if (options && options.returnType) {\r\n        //   var allowedValues = ['Array', 'Object']\r\n        //   returnType =\r\n        //     allowedValues.indexOf(options.returnType) == -1\r\n        //       ? 'Array'\r\n        //       : options.returnType\r\n        // } else {\r\n        //   returnType = 'Array'\r\n        // }\r\n        // build options\r\n        const filter = options && options.filter;\r\n        const items = [];\r\n        let item = undefined;\r\n        let itemIds = undefined;\r\n        let itemId = undefined;\r\n        // convert items\r\n        if (id != null) {\r\n            // return a single item\r\n            item = this._data.get(id);\r\n            if (item && filter && !filter(item)) {\r\n                item = undefined;\r\n            }\r\n        }\r\n        else if (ids != null) {\r\n            // return a subset of items\r\n            for (let i = 0, len = ids.length; i < len; i++) {\r\n                item = this._data.get(ids[i]);\r\n                if (item != null && (!filter || filter(item))) {\r\n                    items.push(item);\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            // return all items\r\n            itemIds = [...this._data.keys()];\r\n            for (let i = 0, len = itemIds.length; i < len; i++) {\r\n                itemId = itemIds[i];\r\n                item = this._data.get(itemId);\r\n                if (item != null && (!filter || filter(item))) {\r\n                    items.push(item);\r\n                }\r\n            }\r\n        }\r\n        // order the results\r\n        if (options && options.order && id == undefined) {\r\n            this._sort(items, options.order);\r\n        }\r\n        // filter fields of the items\r\n        if (options && options.fields) {\r\n            const fields = options.fields;\r\n            if (id != undefined && item != null) {\r\n                item = this._filterFields(item, fields);\r\n            }\r\n            else {\r\n                for (let i = 0, len = items.length; i < len; i++) {\r\n                    items[i] = this._filterFields(items[i], fields);\r\n                }\r\n            }\r\n        }\r\n        // return the results\r\n        if (returnType == \"Object\") {\r\n            const result = {};\r\n            for (let i = 0, len = items.length; i < len; i++) {\r\n                const resultant = items[i];\r\n                // @TODO: Shoudn't this be this._fieldId?\r\n                // result[resultant.id] = resultant\r\n                const id = resultant[this._idProp];\r\n                result[id] = resultant;\r\n            }\r\n            return result;\r\n        }\r\n        else {\r\n            if (id != null) {\r\n                // a single item\r\n                return item ?? null;\r\n            }\r\n            else {\r\n                // just return our array\r\n                return items;\r\n            }\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    getIds(options) {\r\n        const data = this._data;\r\n        const filter = options && options.filter;\r\n        const order = options && options.order;\r\n        const itemIds = [...data.keys()];\r\n        const ids = [];\r\n        if (filter) {\r\n            // get filtered items\r\n            if (order) {\r\n                // create ordered list\r\n                const items = [];\r\n                for (let i = 0, len = itemIds.length; i < len; i++) {\r\n                    const id = itemIds[i];\r\n                    const item = this._data.get(id);\r\n                    if (item != null && filter(item)) {\r\n                        items.push(item);\r\n                    }\r\n                }\r\n                this._sort(items, order);\r\n                for (let i = 0, len = items.length; i < len; i++) {\r\n                    ids.push(items[i][this._idProp]);\r\n                }\r\n            }\r\n            else {\r\n                // create unordered list\r\n                for (let i = 0, len = itemIds.length; i < len; i++) {\r\n                    const id = itemIds[i];\r\n                    const item = this._data.get(id);\r\n                    if (item != null && filter(item)) {\r\n                        ids.push(item[this._idProp]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            // get all items\r\n            if (order) {\r\n                // create an ordered list\r\n                const items = [];\r\n                for (let i = 0, len = itemIds.length; i < len; i++) {\r\n                    const id = itemIds[i];\r\n                    items.push(data.get(id));\r\n                }\r\n                this._sort(items, order);\r\n                for (let i = 0, len = items.length; i < len; i++) {\r\n                    ids.push(items[i][this._idProp]);\r\n                }\r\n            }\r\n            else {\r\n                // create unordered list\r\n                for (let i = 0, len = itemIds.length; i < len; i++) {\r\n                    const id = itemIds[i];\r\n                    const item = data.get(id);\r\n                    if (item != null) {\r\n                        ids.push(item[this._idProp]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return ids;\r\n    }\r\n    /** @inheritDoc */\r\n    getDataSet() {\r\n        return this;\r\n    }\r\n    /** @inheritDoc */\r\n    forEach(callback, options) {\r\n        const filter = options && options.filter;\r\n        const data = this._data;\r\n        const itemIds = [...data.keys()];\r\n        if (options && options.order) {\r\n            // execute forEach on ordered list\r\n            const items = this.get(options);\r\n            for (let i = 0, len = items.length; i < len; i++) {\r\n                const item = items[i];\r\n                const id = item[this._idProp];\r\n                callback(item, id);\r\n            }\r\n        }\r\n        else {\r\n            // unordered\r\n            for (let i = 0, len = itemIds.length; i < len; i++) {\r\n                const id = itemIds[i];\r\n                const item = this._data.get(id);\r\n                if (item != null && (!filter || filter(item))) {\r\n                    callback(item, id);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    map(callback, options) {\r\n        const filter = options && options.filter;\r\n        const mappedItems = [];\r\n        const data = this._data;\r\n        const itemIds = [...data.keys()];\r\n        // convert and filter items\r\n        for (let i = 0, len = itemIds.length; i < len; i++) {\r\n            const id = itemIds[i];\r\n            const item = this._data.get(id);\r\n            if (item != null && (!filter || filter(item))) {\r\n                mappedItems.push(callback(item, id));\r\n            }\r\n        }\r\n        // order items\r\n        if (options && options.order) {\r\n            this._sort(mappedItems, options.order);\r\n        }\r\n        return mappedItems;\r\n    }\r\n    /**\r\n     * Filter the fields of an item.\r\n     *\r\n     * @param item - The item whose fields should be filtered.\r\n     * @param fields - The names of the fields that will be kept.\r\n     * @typeParam K - Field name type.\r\n     * @returns The item without any additional fields.\r\n     */\r\n    _filterFields(item, fields) {\r\n        if (!item) {\r\n            // item is null\r\n            return item;\r\n        }\r\n        return (Array.isArray(fields)\r\n            ? // Use the supplied array\r\n                fields\r\n            : // Use the keys of the supplied object\r\n                Object.keys(fields)).reduce((filteredItem, field) => {\r\n            filteredItem[field] = item[field];\r\n            return filteredItem;\r\n        }, {});\r\n    }\r\n    /**\r\n     * Sort the provided array with items.\r\n     *\r\n     * @param items - Items to be sorted in place.\r\n     * @param order - A field name or custom sort function.\r\n     * @typeParam T - The type of the items in the items array.\r\n     */\r\n    _sort(items, order) {\r\n        if (typeof order === \"string\") {\r\n            // order by provided field name\r\n            const name = order; // field name\r\n            items.sort((a, b) => {\r\n                // @TODO: How to treat missing properties?\r\n                const av = a[name];\r\n                const bv = b[name];\r\n                return av > bv ? 1 : av < bv ? -1 : 0;\r\n            });\r\n        }\r\n        else if (typeof order === \"function\") {\r\n            // order by sort function\r\n            items.sort(order);\r\n        }\r\n        else {\r\n            // TODO: extend order by an Object {field:string, direction:string}\r\n            //       where direction can be 'asc' or 'desc'\r\n            throw new TypeError(\"Order must be a function or a string\");\r\n        }\r\n    }\r\n    /**\r\n     * Remove an item or multiple items by “reference” (only the id is used) or by id.\r\n     *\r\n     * The method ignores removal of non-existing items, and returns an array containing the ids of the items which are actually removed from the DataSet.\r\n     *\r\n     * After the items are removed, the DataSet will trigger an event `remove` for the removed items. When a `senderId` is provided, this id will be passed with the triggered event to all subscribers.\r\n     *\r\n     * ## Example\r\n     * ```javascript\r\n     * // create a DataSet\r\n     * const data = new vis.DataSet([\r\n     *   { id: 1, text: 'item 1' },\r\n     *   { id: 2, text: 'item 2' },\r\n     *   { id: 3, text: 'item 3' }\r\n     * ])\r\n     *\r\n     * // remove items\r\n     * const ids = data.remove([2, { id: 3 }, 4])\r\n     *\r\n     * console.log(ids) // [2, 3]\r\n     * ```\r\n     *\r\n     * @param id - One or more items or ids of items to be removed.\r\n     * @param senderId - Sender id.\r\n     * @returns The ids of the removed items.\r\n     */\r\n    remove(id, senderId) {\r\n        const removedIds = [];\r\n        const removedItems = [];\r\n        // force everything to be an array for simplicity\r\n        const ids = Array.isArray(id) ? id : [id];\r\n        for (let i = 0, len = ids.length; i < len; i++) {\r\n            const item = this._remove(ids[i]);\r\n            if (item) {\r\n                const itemId = item[this._idProp];\r\n                if (itemId != null) {\r\n                    removedIds.push(itemId);\r\n                    removedItems.push(item);\r\n                }\r\n            }\r\n        }\r\n        if (removedIds.length) {\r\n            this._trigger(\"remove\", { items: removedIds, oldData: removedItems }, senderId);\r\n        }\r\n        return removedIds;\r\n    }\r\n    /**\r\n     * Remove an item by its id or reference.\r\n     *\r\n     * @param id - Id of an item or the item itself.\r\n     * @returns The removed item if removed, null otherwise.\r\n     */\r\n    _remove(id) {\r\n        // @TODO: It origianlly returned the item although the docs say id.\r\n        // The code expects the item, so probably an error in the docs.\r\n        let ident;\r\n        // confirm the id to use based on the args type\r\n        if (isId(id)) {\r\n            ident = id;\r\n        }\r\n        else if (id && typeof id === \"object\") {\r\n            ident = id[this._idProp]; // look for the identifier field using ._idProp\r\n        }\r\n        // do the removing if the item is found\r\n        if (ident != null && this._data.has(ident)) {\r\n            const item = this._data.get(ident) || null;\r\n            this._data.delete(ident);\r\n            --this.length;\r\n            return item;\r\n        }\r\n        return null;\r\n    }\r\n    /**\r\n     * Clear the entire data set.\r\n     *\r\n     * After the items are removed, the {@link DataSet} will trigger an event `remove` for all removed items. When a `senderId` is provided, this id will be passed with the triggered event to all subscribers.\r\n     *\r\n     * @param senderId - Sender id.\r\n     * @returns removedIds - The ids of all removed items.\r\n     */\r\n    clear(senderId) {\r\n        const ids = [...this._data.keys()];\r\n        const items = [];\r\n        for (let i = 0, len = ids.length; i < len; i++) {\r\n            items.push(this._data.get(ids[i]));\r\n        }\r\n        this._data.clear();\r\n        this.length = 0;\r\n        this._trigger(\"remove\", { items: ids, oldData: items }, senderId);\r\n        return ids;\r\n    }\r\n    /**\r\n     * Find the item with maximum value of a specified field.\r\n     *\r\n     * @param field - Name of the property that should be searched for max value.\r\n     * @returns Item containing max value, or null if no items.\r\n     */\r\n    max(field) {\r\n        let max = null;\r\n        let maxField = null;\r\n        for (const item of this._data.values()) {\r\n            const itemField = item[field];\r\n            if (typeof itemField === \"number\" &&\r\n                (maxField == null || itemField > maxField)) {\r\n                max = item;\r\n                maxField = itemField;\r\n            }\r\n        }\r\n        return max || null;\r\n    }\r\n    /**\r\n     * Find the item with minimum value of a specified field.\r\n     *\r\n     * @param field - Name of the property that should be searched for min value.\r\n     * @returns Item containing min value, or null if no items.\r\n     */\r\n    min(field) {\r\n        let min = null;\r\n        let minField = null;\r\n        for (const item of this._data.values()) {\r\n            const itemField = item[field];\r\n            if (typeof itemField === \"number\" &&\r\n                (minField == null || itemField < minField)) {\r\n                min = item;\r\n                minField = itemField;\r\n            }\r\n        }\r\n        return min || null;\r\n    }\r\n    /**\r\n     * Find all distinct values of a specified field\r\n     *\r\n     * @param prop - The property name whose distinct values should be returned.\r\n     * @returns Unordered array containing all distinct values. Items without specified property are ignored.\r\n     */\r\n    distinct(prop) {\r\n        const data = this._data;\r\n        const itemIds = [...data.keys()];\r\n        const values = [];\r\n        let count = 0;\r\n        for (let i = 0, len = itemIds.length; i < len; i++) {\r\n            const id = itemIds[i];\r\n            const item = data.get(id);\r\n            const value = item[prop];\r\n            let exists = false;\r\n            for (let j = 0; j < count; j++) {\r\n                if (values[j] == value) {\r\n                    exists = true;\r\n                    break;\r\n                }\r\n            }\r\n            if (!exists && value !== undefined) {\r\n                values[count] = value;\r\n                count++;\r\n            }\r\n        }\r\n        return values;\r\n    }\r\n    /**\r\n     * Add a single item. Will fail when an item with the same id already exists.\r\n     *\r\n     * @param item - A new item to be added.\r\n     * @returns Added item's id. An id is generated when it is not present in the item.\r\n     */\r\n    _addItem(item) {\r\n        const fullItem = ensureFullItem(item, this._idProp);\r\n        const id = fullItem[this._idProp];\r\n        // check whether this id is already taken\r\n        if (this._data.has(id)) {\r\n            // item already exists\r\n            throw new Error(\"Cannot add item: item with id \" + id + \" already exists\");\r\n        }\r\n        this._data.set(id, fullItem);\r\n        ++this.length;\r\n        return id;\r\n    }\r\n    /**\r\n     * Update a single item: merge with existing item.\r\n     * Will fail when the item has no id, or when there does not exist an item with the same id.\r\n     *\r\n     * @param update - The new item\r\n     * @returns The id of the updated item.\r\n     */\r\n    _updateItem(update) {\r\n        const id = update[this._idProp];\r\n        if (id == null) {\r\n            throw new Error(\"Cannot update item: item has no id (item: \" +\r\n                JSON.stringify(update) +\r\n                \")\");\r\n        }\r\n        const item = this._data.get(id);\r\n        if (!item) {\r\n            // item doesn't exist\r\n            throw new Error(\"Cannot update item: no item with id \" + id + \" found\");\r\n        }\r\n        this._data.set(id, { ...item, ...update });\r\n        return id;\r\n    }\r\n    /** @inheritDoc */\r\n    stream(ids) {\r\n        if (ids) {\r\n            const data = this._data;\r\n            return new DataStream({\r\n                *[Symbol.iterator]() {\r\n                    for (const id of ids) {\r\n                        const item = data.get(id);\r\n                        if (item != null) {\r\n                            yield [id, item];\r\n                        }\r\n                    }\r\n                },\r\n            });\r\n        }\r\n        else {\r\n            return new DataStream({\r\n                [Symbol.iterator]: this._data.entries.bind(this._data),\r\n            });\r\n        }\r\n    }\r\n}\n\n/**\r\n * DataView\r\n *\r\n * A DataView offers a filtered and/or formatted view on a DataSet. One can subscribe to changes in a DataView, and easily get filtered or formatted data without having to specify filters and field types all the time.\r\n *\r\n * ## Example\r\n * ```javascript\r\n * // create a DataSet\r\n * var data = new vis.DataSet();\r\n * data.add([\r\n *   {id: 1, text: 'item 1', date: new Date(2013, 6, 20), group: 1, first: true},\r\n *   {id: 2, text: 'item 2', date: '2013-06-23', group: 2},\r\n *   {id: 3, text: 'item 3', date: '2013-06-25', group: 2},\r\n *   {id: 4, text: 'item 4'}\r\n * ]);\r\n *\r\n * // create a DataView\r\n * // the view will only contain items having a property group with value 1,\r\n * // and will only output fields id, text, and date.\r\n * var view = new vis.DataView(data, {\r\n *   filter: function (item) {\r\n *     return (item.group == 1);\r\n *   },\r\n *   fields: ['id', 'text', 'date']\r\n * });\r\n *\r\n * // subscribe to any change in the DataView\r\n * view.on('*', function (event, properties, senderId) {\r\n *   console.log('event', event, properties);\r\n * });\r\n *\r\n * // update an item in the data set\r\n * data.update({id: 2, group: 1});\r\n *\r\n * // get all ids in the view\r\n * var ids = view.getIds();\r\n * console.log('ids', ids); // will output [1, 2]\r\n *\r\n * // get all items in the view\r\n * var items = view.get();\r\n * ```\r\n *\r\n * @typeParam Item - Item type that may or may not have an id.\r\n * @typeParam IdProp - Name of the property that contains the id.\r\n */\r\nclass DataView extends DataSetPart {\r\n    /** @inheritDoc */\r\n    length = 0;\r\n    /** @inheritDoc */\r\n    get idProp() {\r\n        return this.getDataSet().idProp;\r\n    }\r\n    _listener;\r\n    _data; // constructor → setData\r\n    _ids = new Set(); // ids of the items currently in memory (just contains a boolean true)\r\n    _options;\r\n    /**\r\n     * Create a DataView.\r\n     *\r\n     * @param data - The instance containing data (directly or indirectly).\r\n     * @param options - Options to configure this data view.\r\n     */\r\n    constructor(data, options) {\r\n        super();\r\n        this._options = options || {};\r\n        this._listener = this._onEvent.bind(this);\r\n        this.setData(data);\r\n    }\r\n    // TODO: implement a function .config() to dynamically update things like configured filter\r\n    // and trigger changes accordingly\r\n    /**\r\n     * Set a data source for the view.\r\n     *\r\n     * @param data - The instance containing data (directly or indirectly).\r\n     * @remarks\r\n     * Note that when the data view is bound to a data set it won't be garbage\r\n     * collected unless the data set is too. Use `dataView.setData(null)` or\r\n     * `dataView.dispose()` to enable garbage collection before you lose the last\r\n     * reference.\r\n     */\r\n    setData(data) {\r\n        if (this._data) {\r\n            // unsubscribe from current dataset\r\n            if (this._data.off) {\r\n                this._data.off(\"*\", this._listener);\r\n            }\r\n            // trigger a remove of all items in memory\r\n            const ids = this._data.getIds({ filter: this._options.filter });\r\n            const items = this._data.get(ids);\r\n            this._ids.clear();\r\n            this.length = 0;\r\n            this._trigger(\"remove\", { items: ids, oldData: items });\r\n        }\r\n        if (data != null) {\r\n            this._data = data;\r\n            // trigger an add of all added items\r\n            const ids = this._data.getIds({ filter: this._options.filter });\r\n            for (let i = 0, len = ids.length; i < len; i++) {\r\n                const id = ids[i];\r\n                this._ids.add(id);\r\n            }\r\n            this.length = ids.length;\r\n            this._trigger(\"add\", { items: ids });\r\n        }\r\n        else {\r\n            this._data = new DataSet();\r\n        }\r\n        // subscribe to new dataset\r\n        if (this._data.on) {\r\n            this._data.on(\"*\", this._listener);\r\n        }\r\n    }\r\n    /**\r\n     * Refresh the DataView.\r\n     * Useful when the DataView has a filter function containing a variable parameter.\r\n     */\r\n    refresh() {\r\n        const ids = this._data.getIds({\r\n            filter: this._options.filter,\r\n        });\r\n        const oldIds = [...this._ids];\r\n        const newIds = {};\r\n        const addedIds = [];\r\n        const removedIds = [];\r\n        const removedItems = [];\r\n        // check for additions\r\n        for (let i = 0, len = ids.length; i < len; i++) {\r\n            const id = ids[i];\r\n            newIds[id] = true;\r\n            if (!this._ids.has(id)) {\r\n                addedIds.push(id);\r\n                this._ids.add(id);\r\n            }\r\n        }\r\n        // check for removals\r\n        for (let i = 0, len = oldIds.length; i < len; i++) {\r\n            const id = oldIds[i];\r\n            const item = this._data.get(id);\r\n            if (item == null) {\r\n                // @TODO: Investigate.\r\n                // Doesn't happen during tests or examples.\r\n                // Is it really impossible or could it eventually happen?\r\n                // How to handle it if it does? The types guarantee non-nullable items.\r\n                console.error(\"If you see this, report it please.\");\r\n            }\r\n            else if (!newIds[id]) {\r\n                removedIds.push(id);\r\n                removedItems.push(item);\r\n                this._ids.delete(id);\r\n            }\r\n        }\r\n        this.length += addedIds.length - removedIds.length;\r\n        // trigger events\r\n        if (addedIds.length) {\r\n            this._trigger(\"add\", { items: addedIds });\r\n        }\r\n        if (removedIds.length) {\r\n            this._trigger(\"remove\", { items: removedIds, oldData: removedItems });\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    get(first, second) {\r\n        if (this._data == null) {\r\n            return null;\r\n        }\r\n        // parse the arguments\r\n        let ids = null;\r\n        let options;\r\n        if (isId(first) || Array.isArray(first)) {\r\n            ids = first;\r\n            options = second;\r\n        }\r\n        else {\r\n            options = first;\r\n        }\r\n        // extend the options with the default options and provided options\r\n        const viewOptions = Object.assign({}, this._options, options);\r\n        // create a combined filter method when needed\r\n        const thisFilter = this._options.filter;\r\n        const optionsFilter = options && options.filter;\r\n        if (thisFilter && optionsFilter) {\r\n            viewOptions.filter = (item) => {\r\n                return thisFilter(item) && optionsFilter(item);\r\n            };\r\n        }\r\n        if (ids == null) {\r\n            return this._data.get(viewOptions);\r\n        }\r\n        else {\r\n            return this._data.get(ids, viewOptions);\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    getIds(options) {\r\n        if (this._data.length) {\r\n            const defaultFilter = this._options.filter;\r\n            const optionsFilter = options != null ? options.filter : null;\r\n            let filter;\r\n            if (optionsFilter) {\r\n                if (defaultFilter) {\r\n                    filter = (item) => {\r\n                        return defaultFilter(item) && optionsFilter(item);\r\n                    };\r\n                }\r\n                else {\r\n                    filter = optionsFilter;\r\n                }\r\n            }\r\n            else {\r\n                filter = defaultFilter;\r\n            }\r\n            return this._data.getIds({\r\n                filter: filter,\r\n                order: options && options.order,\r\n            });\r\n        }\r\n        else {\r\n            return [];\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    forEach(callback, options) {\r\n        if (this._data) {\r\n            const defaultFilter = this._options.filter;\r\n            const optionsFilter = options && options.filter;\r\n            let filter;\r\n            if (optionsFilter) {\r\n                if (defaultFilter) {\r\n                    filter = function (item) {\r\n                        return defaultFilter(item) && optionsFilter(item);\r\n                    };\r\n                }\r\n                else {\r\n                    filter = optionsFilter;\r\n                }\r\n            }\r\n            else {\r\n                filter = defaultFilter;\r\n            }\r\n            this._data.forEach(callback, {\r\n                filter: filter,\r\n                order: options && options.order,\r\n            });\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    map(callback, options) {\r\n        if (this._data) {\r\n            const defaultFilter = this._options.filter;\r\n            const optionsFilter = options && options.filter;\r\n            let filter;\r\n            if (optionsFilter) {\r\n                if (defaultFilter) {\r\n                    filter = (item) => {\r\n                        return defaultFilter(item) && optionsFilter(item);\r\n                    };\r\n                }\r\n                else {\r\n                    filter = optionsFilter;\r\n                }\r\n            }\r\n            else {\r\n                filter = defaultFilter;\r\n            }\r\n            return this._data.map(callback, {\r\n                filter: filter,\r\n                order: options && options.order,\r\n            });\r\n        }\r\n        else {\r\n            return [];\r\n        }\r\n    }\r\n    /** @inheritDoc */\r\n    getDataSet() {\r\n        return this._data.getDataSet();\r\n    }\r\n    /** @inheritDoc */\r\n    stream(ids) {\r\n        return this._data.stream(ids || {\r\n            [Symbol.iterator]: this._ids.keys.bind(this._ids),\r\n        });\r\n    }\r\n    /**\r\n     * Render the instance unusable prior to garbage collection.\r\n     *\r\n     * @remarks\r\n     * The intention of this method is to help discover scenarios where the data\r\n     * view is being used when the programmer thinks it has been garbage collected\r\n     * already. It's stricter version of `dataView.setData(null)`.\r\n     */\r\n    dispose() {\r\n        if (this._data?.off) {\r\n            this._data.off(\"*\", this._listener);\r\n        }\r\n        const message = \"This data view has already been disposed of.\";\r\n        const replacement = {\r\n            get: () => {\r\n                throw new Error(message);\r\n            },\r\n            set: () => {\r\n                throw new Error(message);\r\n            },\r\n            configurable: false,\r\n        };\r\n        for (const key of Reflect.ownKeys(DataView.prototype)) {\r\n            Object.defineProperty(this, key, replacement);\r\n        }\r\n    }\r\n    /**\r\n     * Event listener. Will propagate all events from the connected data set to the subscribers of the DataView, but will filter the items and only trigger when there are changes in the filtered data set.\r\n     *\r\n     * @param event - The name of the event.\r\n     * @param params - Parameters of the event.\r\n     * @param senderId - Id supplied by the sender.\r\n     */\r\n    _onEvent(event, params, senderId) {\r\n        if (!params || !params.items || !this._data) {\r\n            return;\r\n        }\r\n        const ids = params.items;\r\n        const addedIds = [];\r\n        const updatedIds = [];\r\n        const removedIds = [];\r\n        const oldItems = [];\r\n        const updatedItems = [];\r\n        const removedItems = [];\r\n        switch (event) {\r\n            case \"add\":\r\n                // filter the ids of the added items\r\n                for (let i = 0, len = ids.length; i < len; i++) {\r\n                    const id = ids[i];\r\n                    const item = this.get(id);\r\n                    if (item) {\r\n                        this._ids.add(id);\r\n                        addedIds.push(id);\r\n                    }\r\n                }\r\n                break;\r\n            case \"update\":\r\n                // determine the event from the views viewpoint: an updated\r\n                // item can be added, updated, or removed from this view.\r\n                for (let i = 0, len = ids.length; i < len; i++) {\r\n                    const id = ids[i];\r\n                    const item = this.get(id);\r\n                    if (item) {\r\n                        if (this._ids.has(id)) {\r\n                            updatedIds.push(id);\r\n                            updatedItems.push(params.data[i]);\r\n                            oldItems.push(params.oldData[i]);\r\n                        }\r\n                        else {\r\n                            this._ids.add(id);\r\n                            addedIds.push(id);\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (this._ids.has(id)) {\r\n                            this._ids.delete(id);\r\n                            removedIds.push(id);\r\n                            removedItems.push(params.oldData[i]);\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n            case \"remove\":\r\n                // filter the ids of the removed items\r\n                for (let i = 0, len = ids.length; i < len; i++) {\r\n                    const id = ids[i];\r\n                    if (this._ids.has(id)) {\r\n                        this._ids.delete(id);\r\n                        removedIds.push(id);\r\n                        removedItems.push(params.oldData[i]);\r\n                    }\r\n                }\r\n                break;\r\n        }\r\n        this.length += addedIds.length - removedIds.length;\r\n        if (addedIds.length) {\r\n            this._trigger(\"add\", { items: addedIds }, senderId);\r\n        }\r\n        if (updatedIds.length) {\r\n            this._trigger(\"update\", { items: updatedIds, oldData: oldItems, data: updatedItems }, senderId);\r\n        }\r\n        if (removedIds.length) {\r\n            this._trigger(\"remove\", { items: removedIds, oldData: removedItems }, senderId);\r\n        }\r\n    }\r\n}\n\n/**\r\n * Check that given value is compatible with Vis Data Set interface.\r\n *\r\n * @param idProp - The expected property to contain item id.\r\n * @param v - The value to be tested.\r\n * @returns True if all expected values and methods match, false otherwise.\r\n */\r\nfunction isDataSetLike(idProp, v) {\r\n    return (typeof v === \"object\" &&\r\n        v !== null &&\r\n        idProp === v.idProp &&\r\n        typeof v.add === \"function\" &&\r\n        typeof v.clear === \"function\" &&\r\n        typeof v.distinct === \"function\" &&\r\n        typeof v.forEach === \"function\" &&\r\n        typeof v.get === \"function\" &&\r\n        typeof v.getDataSet === \"function\" &&\r\n        typeof v.getIds === \"function\" &&\r\n        typeof v.length === \"number\" &&\r\n        typeof v.map === \"function\" &&\r\n        typeof v.max === \"function\" &&\r\n        typeof v.min === \"function\" &&\r\n        typeof v.off === \"function\" &&\r\n        typeof v.on === \"function\" &&\r\n        typeof v.remove === \"function\" &&\r\n        typeof v.setOptions === \"function\" &&\r\n        typeof v.stream === \"function\" &&\r\n        typeof v.update === \"function\" &&\r\n        typeof v.updateOnly === \"function\");\r\n}\n\n/**\r\n * Check that given value is compatible with Vis Data View interface.\r\n *\r\n * @param idProp - The expected property to contain item id.\r\n * @param v - The value to be tested.\r\n * @returns True if all expected values and methods match, false otherwise.\r\n */\r\nfunction isDataViewLike(idProp, v) {\r\n    return (typeof v === \"object\" &&\r\n        v !== null &&\r\n        idProp === v.idProp &&\r\n        typeof v.forEach === \"function\" &&\r\n        typeof v.get === \"function\" &&\r\n        typeof v.getDataSet === \"function\" &&\r\n        typeof v.getIds === \"function\" &&\r\n        typeof v.length === \"number\" &&\r\n        typeof v.map === \"function\" &&\r\n        typeof v.off === \"function\" &&\r\n        typeof v.on === \"function\" &&\r\n        typeof v.stream === \"function\" &&\r\n        isDataSetLike(idProp, v.getDataSet()));\r\n}\n\nexport { DataSet, DataStream, DataView, Queue, createNewDataPipeFrom, isDataSetLike, isDataViewLike };\n//# sourceMappingURL=vis-data.js.map\n","// first check if moment.js is already loaded in the browser window, if so,\n// use this instance. Else, load via commonjs.\n//\n// Note: This doesn't work in ESM.\nmodule.exports = (typeof window !== 'undefined') && window['moment'] || require('moment');\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nfunction getDefaultWhiteList () {\n  // 白名单值说明：\n  // true: 允许该属性\n  // Function: function (val) { } 返回true表示允许该属性，其他值均表示不允许\n  // RegExp: regexp.test(val) 返回true表示允许该属性，其他值均表示不允许\n  // 除上面列出的值外均表示不允许\n  var whiteList = {};\n\n  whiteList['align-content'] = false; // default: auto\n  whiteList['align-items'] = false; // default: auto\n  whiteList['align-self'] = false; // default: auto\n  whiteList['alignment-adjust'] = false; // default: auto\n  whiteList['alignment-baseline'] = false; // default: baseline\n  whiteList['all'] = false; // default: depending on individual properties\n  whiteList['anchor-point'] = false; // default: none\n  whiteList['animation'] = false; // default: depending on individual properties\n  whiteList['animation-delay'] = false; // default: 0\n  whiteList['animation-direction'] = false; // default: normal\n  whiteList['animation-duration'] = false; // default: 0\n  whiteList['animation-fill-mode'] = false; // default: none\n  whiteList['animation-iteration-count'] = false; // default: 1\n  whiteList['animation-name'] = false; // default: none\n  whiteList['animation-play-state'] = false; // default: running\n  whiteList['animation-timing-function'] = false; // default: ease\n  whiteList['azimuth'] = false; // default: center\n  whiteList['backface-visibility'] = false; // default: visible\n  whiteList['background'] = true; // default: depending on individual properties\n  whiteList['background-attachment'] = true; // default: scroll\n  whiteList['background-clip'] = true; // default: border-box\n  whiteList['background-color'] = true; // default: transparent\n  whiteList['background-image'] = true; // default: none\n  whiteList['background-origin'] = true; // default: padding-box\n  whiteList['background-position'] = true; // default: 0% 0%\n  whiteList['background-repeat'] = true; // default: repeat\n  whiteList['background-size'] = true; // default: auto\n  whiteList['baseline-shift'] = false; // default: baseline\n  whiteList['binding'] = false; // default: none\n  whiteList['bleed'] = false; // default: 6pt\n  whiteList['bookmark-label'] = false; // default: content()\n  whiteList['bookmark-level'] = false; // default: none\n  whiteList['bookmark-state'] = false; // default: open\n  whiteList['border'] = true; // default: depending on individual properties\n  whiteList['border-bottom'] = true; // default: depending on individual properties\n  whiteList['border-bottom-color'] = true; // default: current color\n  whiteList['border-bottom-left-radius'] = true; // default: 0\n  whiteList['border-bottom-right-radius'] = true; // default: 0\n  whiteList['border-bottom-style'] = true; // default: none\n  whiteList['border-bottom-width'] = true; // default: medium\n  whiteList['border-collapse'] = true; // default: separate\n  whiteList['border-color'] = true; // default: depending on individual properties\n  whiteList['border-image'] = true; // default: none\n  whiteList['border-image-outset'] = true; // default: 0\n  whiteList['border-image-repeat'] = true; // default: stretch\n  whiteList['border-image-slice'] = true; // default: 100%\n  whiteList['border-image-source'] = true; // default: none\n  whiteList['border-image-width'] = true; // default: 1\n  whiteList['border-left'] = true; // default: depending on individual properties\n  whiteList['border-left-color'] = true; // default: current color\n  whiteList['border-left-style'] = true; // default: none\n  whiteList['border-left-width'] = true; // default: medium\n  whiteList['border-radius'] = true; // default: 0\n  whiteList['border-right'] = true; // default: depending on individual properties\n  whiteList['border-right-color'] = true; // default: current color\n  whiteList['border-right-style'] = true; // default: none\n  whiteList['border-right-width'] = true; // default: medium\n  whiteList['border-spacing'] = true; // default: 0\n  whiteList['border-style'] = true; // default: depending on individual properties\n  whiteList['border-top'] = true; // default: depending on individual properties\n  whiteList['border-top-color'] = true; // default: current color\n  whiteList['border-top-left-radius'] = true; // default: 0\n  whiteList['border-top-right-radius'] = true; // default: 0\n  whiteList['border-top-style'] = true; // default: none\n  whiteList['border-top-width'] = true; // default: medium\n  whiteList['border-width'] = true; // default: depending on individual properties\n  whiteList['bottom'] = false; // default: auto\n  whiteList['box-decoration-break'] = true; // default: slice\n  whiteList['box-shadow'] = true; // default: none\n  whiteList['box-sizing'] = true; // default: content-box\n  whiteList['box-snap'] = true; // default: none\n  whiteList['box-suppress'] = true; // default: show\n  whiteList['break-after'] = true; // default: auto\n  whiteList['break-before'] = true; // default: auto\n  whiteList['break-inside'] = true; // default: auto\n  whiteList['caption-side'] = false; // default: top\n  whiteList['chains'] = false; // default: none\n  whiteList['clear'] = true; // default: none\n  whiteList['clip'] = false; // default: auto\n  whiteList['clip-path'] = false; // default: none\n  whiteList['clip-rule'] = false; // default: nonzero\n  whiteList['color'] = true; // default: implementation dependent\n  whiteList['color-interpolation-filters'] = true; // default: auto\n  whiteList['column-count'] = false; // default: auto\n  whiteList['column-fill'] = false; // default: balance\n  whiteList['column-gap'] = false; // default: normal\n  whiteList['column-rule'] = false; // default: depending on individual properties\n  whiteList['column-rule-color'] = false; // default: current color\n  whiteList['column-rule-style'] = false; // default: medium\n  whiteList['column-rule-width'] = false; // default: medium\n  whiteList['column-span'] = false; // default: none\n  whiteList['column-width'] = false; // default: auto\n  whiteList['columns'] = false; // default: depending on individual properties\n  whiteList['contain'] = false; // default: none\n  whiteList['content'] = false; // default: normal\n  whiteList['counter-increment'] = false; // default: none\n  whiteList['counter-reset'] = false; // default: none\n  whiteList['counter-set'] = false; // default: none\n  whiteList['crop'] = false; // default: auto\n  whiteList['cue'] = false; // default: depending on individual properties\n  whiteList['cue-after'] = false; // default: none\n  whiteList['cue-before'] = false; // default: none\n  whiteList['cursor'] = false; // default: auto\n  whiteList['direction'] = false; // default: ltr\n  whiteList['display'] = true; // default: depending on individual properties\n  whiteList['display-inside'] = true; // default: auto\n  whiteList['display-list'] = true; // default: none\n  whiteList['display-outside'] = true; // default: inline-level\n  whiteList['dominant-baseline'] = false; // default: auto\n  whiteList['elevation'] = false; // default: level\n  whiteList['empty-cells'] = false; // default: show\n  whiteList['filter'] = false; // default: none\n  whiteList['flex'] = false; // default: depending on individual properties\n  whiteList['flex-basis'] = false; // default: auto\n  whiteList['flex-direction'] = false; // default: row\n  whiteList['flex-flow'] = false; // default: depending on individual properties\n  whiteList['flex-grow'] = false; // default: 0\n  whiteList['flex-shrink'] = false; // default: 1\n  whiteList['flex-wrap'] = false; // default: nowrap\n  whiteList['float'] = false; // default: none\n  whiteList['float-offset'] = false; // default: 0 0\n  whiteList['flood-color'] = false; // default: black\n  whiteList['flood-opacity'] = false; // default: 1\n  whiteList['flow-from'] = false; // default: none\n  whiteList['flow-into'] = false; // default: none\n  whiteList['font'] = true; // default: depending on individual properties\n  whiteList['font-family'] = true; // default: implementation dependent\n  whiteList['font-feature-settings'] = true; // default: normal\n  whiteList['font-kerning'] = true; // default: auto\n  whiteList['font-language-override'] = true; // default: normal\n  whiteList['font-size'] = true; // default: medium\n  whiteList['font-size-adjust'] = true; // default: none\n  whiteList['font-stretch'] = true; // default: normal\n  whiteList['font-style'] = true; // default: normal\n  whiteList['font-synthesis'] = true; // default: weight style\n  whiteList['font-variant'] = true; // default: normal\n  whiteList['font-variant-alternates'] = true; // default: normal\n  whiteList['font-variant-caps'] = true; // default: normal\n  whiteList['font-variant-east-asian'] = true; // default: normal\n  whiteList['font-variant-ligatures'] = true; // default: normal\n  whiteList['font-variant-numeric'] = true; // default: normal\n  whiteList['font-variant-position'] = true; // default: normal\n  whiteList['font-weight'] = true; // default: normal\n  whiteList['grid'] = false; // default: depending on individual properties\n  whiteList['grid-area'] = false; // default: depending on individual properties\n  whiteList['grid-auto-columns'] = false; // default: auto\n  whiteList['grid-auto-flow'] = false; // default: none\n  whiteList['grid-auto-rows'] = false; // default: auto\n  whiteList['grid-column'] = false; // default: depending on individual properties\n  whiteList['grid-column-end'] = false; // default: auto\n  whiteList['grid-column-start'] = false; // default: auto\n  whiteList['grid-row'] = false; // default: depending on individual properties\n  whiteList['grid-row-end'] = false; // default: auto\n  whiteList['grid-row-start'] = false; // default: auto\n  whiteList['grid-template'] = false; // default: depending on individual properties\n  whiteList['grid-template-areas'] = false; // default: none\n  whiteList['grid-template-columns'] = false; // default: none\n  whiteList['grid-template-rows'] = false; // default: none\n  whiteList['hanging-punctuation'] = false; // default: none\n  whiteList['height'] = true; // default: auto\n  whiteList['hyphens'] = false; // default: manual\n  whiteList['icon'] = false; // default: auto\n  whiteList['image-orientation'] = false; // default: auto\n  whiteList['image-resolution'] = false; // default: normal\n  whiteList['ime-mode'] = false; // default: auto\n  whiteList['initial-letters'] = false; // default: normal\n  whiteList['inline-box-align'] = false; // default: last\n  whiteList['justify-content'] = false; // default: auto\n  whiteList['justify-items'] = false; // default: auto\n  whiteList['justify-self'] = false; // default: auto\n  whiteList['left'] = false; // default: auto\n  whiteList['letter-spacing'] = true; // default: normal\n  whiteList['lighting-color'] = true; // default: white\n  whiteList['line-box-contain'] = false; // default: block inline replaced\n  whiteList['line-break'] = false; // default: auto\n  whiteList['line-grid'] = false; // default: match-parent\n  whiteList['line-height'] = false; // default: normal\n  whiteList['line-snap'] = false; // default: none\n  whiteList['line-stacking'] = false; // default: depending on individual properties\n  whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n  whiteList['line-stacking-shift'] = false; // default: consider-shifts\n  whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n  whiteList['list-style'] = true; // default: depending on individual properties\n  whiteList['list-style-image'] = true; // default: none\n  whiteList['list-style-position'] = true; // default: outside\n  whiteList['list-style-type'] = true; // default: disc\n  whiteList['margin'] = true; // default: depending on individual properties\n  whiteList['margin-bottom'] = true; // default: 0\n  whiteList['margin-left'] = true; // default: 0\n  whiteList['margin-right'] = true; // default: 0\n  whiteList['margin-top'] = true; // default: 0\n  whiteList['marker-offset'] = false; // default: auto\n  whiteList['marker-side'] = false; // default: list-item\n  whiteList['marks'] = false; // default: none\n  whiteList['mask'] = false; // default: border-box\n  whiteList['mask-box'] = false; // default: see individual properties\n  whiteList['mask-box-outset'] = false; // default: 0\n  whiteList['mask-box-repeat'] = false; // default: stretch\n  whiteList['mask-box-slice'] = false; // default: 0 fill\n  whiteList['mask-box-source'] = false; // default: none\n  whiteList['mask-box-width'] = false; // default: auto\n  whiteList['mask-clip'] = false; // default: border-box\n  whiteList['mask-image'] = false; // default: none\n  whiteList['mask-origin'] = false; // default: border-box\n  whiteList['mask-position'] = false; // default: center\n  whiteList['mask-repeat'] = false; // default: no-repeat\n  whiteList['mask-size'] = false; // default: border-box\n  whiteList['mask-source-type'] = false; // default: auto\n  whiteList['mask-type'] = false; // default: luminance\n  whiteList['max-height'] = true; // default: none\n  whiteList['max-lines'] = false; // default: none\n  whiteList['max-width'] = true; // default: none\n  whiteList['min-height'] = true; // default: 0\n  whiteList['min-width'] = true; // default: 0\n  whiteList['move-to'] = false; // default: normal\n  whiteList['nav-down'] = false; // default: auto\n  whiteList['nav-index'] = false; // default: auto\n  whiteList['nav-left'] = false; // default: auto\n  whiteList['nav-right'] = false; // default: auto\n  whiteList['nav-up'] = false; // default: auto\n  whiteList['object-fit'] = false; // default: fill\n  whiteList['object-position'] = false; // default: 50% 50%\n  whiteList['opacity'] = false; // default: 1\n  whiteList['order'] = false; // default: 0\n  whiteList['orphans'] = false; // default: 2\n  whiteList['outline'] = false; // default: depending on individual properties\n  whiteList['outline-color'] = false; // default: invert\n  whiteList['outline-offset'] = false; // default: 0\n  whiteList['outline-style'] = false; // default: none\n  whiteList['outline-width'] = false; // default: medium\n  whiteList['overflow'] = false; // default: depending on individual properties\n  whiteList['overflow-wrap'] = false; // default: normal\n  whiteList['overflow-x'] = false; // default: visible\n  whiteList['overflow-y'] = false; // default: visible\n  whiteList['padding'] = true; // default: depending on individual properties\n  whiteList['padding-bottom'] = true; // default: 0\n  whiteList['padding-left'] = true; // default: 0\n  whiteList['padding-right'] = true; // default: 0\n  whiteList['padding-top'] = true; // default: 0\n  whiteList['page'] = false; // default: auto\n  whiteList['page-break-after'] = false; // default: auto\n  whiteList['page-break-before'] = false; // default: auto\n  whiteList['page-break-inside'] = false; // default: auto\n  whiteList['page-policy'] = false; // default: start\n  whiteList['pause'] = false; // default: implementation dependent\n  whiteList['pause-after'] = false; // default: implementation dependent\n  whiteList['pause-before'] = false; // default: implementation dependent\n  whiteList['perspective'] = false; // default: none\n  whiteList['perspective-origin'] = false; // default: 50% 50%\n  whiteList['pitch'] = false; // default: medium\n  whiteList['pitch-range'] = false; // default: 50\n  whiteList['play-during'] = false; // default: auto\n  whiteList['position'] = false; // default: static\n  whiteList['presentation-level'] = false; // default: 0\n  whiteList['quotes'] = false; // default: text\n  whiteList['region-fragment'] = false; // default: auto\n  whiteList['resize'] = false; // default: none\n  whiteList['rest'] = false; // default: depending on individual properties\n  whiteList['rest-after'] = false; // default: none\n  whiteList['rest-before'] = false; // default: none\n  whiteList['richness'] = false; // default: 50\n  whiteList['right'] = false; // default: auto\n  whiteList['rotation'] = false; // default: 0\n  whiteList['rotation-point'] = false; // default: 50% 50%\n  whiteList['ruby-align'] = false; // default: auto\n  whiteList['ruby-merge'] = false; // default: separate\n  whiteList['ruby-position'] = false; // default: before\n  whiteList['shape-image-threshold'] = false; // default: 0.0\n  whiteList['shape-outside'] = false; // default: none\n  whiteList['shape-margin'] = false; // default: 0\n  whiteList['size'] = false; // default: auto\n  whiteList['speak'] = false; // default: auto\n  whiteList['speak-as'] = false; // default: normal\n  whiteList['speak-header'] = false; // default: once\n  whiteList['speak-numeral'] = false; // default: continuous\n  whiteList['speak-punctuation'] = false; // default: none\n  whiteList['speech-rate'] = false; // default: medium\n  whiteList['stress'] = false; // default: 50\n  whiteList['string-set'] = false; // default: none\n  whiteList['tab-size'] = false; // default: 8\n  whiteList['table-layout'] = false; // default: auto\n  whiteList['text-align'] = true; // default: start\n  whiteList['text-align-last'] = true; // default: auto\n  whiteList['text-combine-upright'] = true; // default: none\n  whiteList['text-decoration'] = true; // default: none\n  whiteList['text-decoration-color'] = true; // default: currentColor\n  whiteList['text-decoration-line'] = true; // default: none\n  whiteList['text-decoration-skip'] = true; // default: objects\n  whiteList['text-decoration-style'] = true; // default: solid\n  whiteList['text-emphasis'] = true; // default: depending on individual properties\n  whiteList['text-emphasis-color'] = true; // default: currentColor\n  whiteList['text-emphasis-position'] = true; // default: over right\n  whiteList['text-emphasis-style'] = true; // default: none\n  whiteList['text-height'] = true; // default: auto\n  whiteList['text-indent'] = true; // default: 0\n  whiteList['text-justify'] = true; // default: auto\n  whiteList['text-orientation'] = true; // default: mixed\n  whiteList['text-overflow'] = true; // default: clip\n  whiteList['text-shadow'] = true; // default: none\n  whiteList['text-space-collapse'] = true; // default: collapse\n  whiteList['text-transform'] = true; // default: none\n  whiteList['text-underline-position'] = true; // default: auto\n  whiteList['text-wrap'] = true; // default: normal\n  whiteList['top'] = false; // default: auto\n  whiteList['transform'] = false; // default: none\n  whiteList['transform-origin'] = false; // default: 50% 50% 0\n  whiteList['transform-style'] = false; // default: flat\n  whiteList['transition'] = false; // default: depending on individual properties\n  whiteList['transition-delay'] = false; // default: 0s\n  whiteList['transition-duration'] = false; // default: 0s\n  whiteList['transition-property'] = false; // default: all\n  whiteList['transition-timing-function'] = false; // default: ease\n  whiteList['unicode-bidi'] = false; // default: normal\n  whiteList['vertical-align'] = false; // default: baseline\n  whiteList['visibility'] = false; // default: visible\n  whiteList['voice-balance'] = false; // default: center\n  whiteList['voice-duration'] = false; // default: auto\n  whiteList['voice-family'] = false; // default: implementation dependent\n  whiteList['voice-pitch'] = false; // default: medium\n  whiteList['voice-range'] = false; // default: medium\n  whiteList['voice-rate'] = false; // default: normal\n  whiteList['voice-stress'] = false; // default: normal\n  whiteList['voice-volume'] = false; // default: medium\n  whiteList['volume'] = false; // default: medium\n  whiteList['white-space'] = false; // default: normal\n  whiteList['widows'] = false; // default: 2\n  whiteList['width'] = true; // default: auto\n  whiteList['will-change'] = false; // default: auto\n  whiteList['word-break'] = true; // default: normal\n  whiteList['word-spacing'] = true; // default: normal\n  whiteList['word-wrap'] = true; // default: normal\n  whiteList['wrap-flow'] = false; // default: auto\n  whiteList['wrap-through'] = false; // default: wrap\n  whiteList['writing-mode'] = false; // default: horizontal-tb\n  whiteList['z-index'] = false; // default: auto\n\n  return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n  // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n  // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n  if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n  return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\n  indexOf: function (arr, item) {\n    var i, j;\n    if (Array.prototype.indexOf) {\n      return arr.indexOf(item);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      if (arr[i] === item) {\n        return i;\n      }\n    }\n    return -1;\n  },\n  forEach: function (arr, fn, scope) {\n    var i, j;\n    if (Array.prototype.forEach) {\n      return arr.forEach(fn, scope);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      fn.call(scope, arr[i], i, arr);\n    }\n  },\n  trim: function (str) {\n    if (String.prototype.trim) {\n      return str.trim();\n    }\n    return str.replace(/(^\\s*)|(\\s*$)/g, '');\n  },\n  trimRight: function (str) {\n    if (String.prototype.trimRight) {\n      return str.trimRight();\n    }\n    return str.replace(/(\\s*$)/g, '');\n  }\n};\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n *   参数格式： function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n  css = _.trimRight(css);\n  if (css[css.length - 1] !== ';') css += ';';\n  var cssLength = css.length;\n  var isParenthesisOpen = false;\n  var lastPos = 0;\n  var i = 0;\n  var retCSS = '';\n\n  function addNewAttr () {\n    // 如果没有正常的闭合圆括号，则直接忽略当前属性\n    if (!isParenthesisOpen) {\n      var source = _.trim(css.slice(lastPos, i));\n      var j = source.indexOf(':');\n      if (j !== -1) {\n        var name = _.trim(source.slice(0, j));\n        var value = _.trim(source.slice(j + 1));\n        // 必须有属性名称\n        if (name) {\n          var ret = onAttr(lastPos, retCSS.length, name, value, source);\n          if (ret) retCSS += ret + '; ';\n        }\n      }\n    }\n    lastPos = i + 1;\n  }\n\n  for (; i < cssLength; i++) {\n    var c = css[i];\n    if (c === '/' && css[i + 1] === '*') {\n      // 备注开始\n      var j = css.indexOf('*/', i + 2);\n      // 如果没有正常的备注结束，则后面的部分全部跳过\n      if (j === -1) break;\n      // 直接将当前位置调到备注结尾，并且初始化状态\n      i = j + 1;\n      lastPos = i + 1;\n      isParenthesisOpen = false;\n    } else if (c === '(') {\n      isParenthesisOpen = true;\n    } else if (c === ')') {\n      isParenthesisOpen = false;\n    } else if (c === ';') {\n      if (isParenthesisOpen) {\n        // 在圆括号里面，忽略\n      } else {\n        addNewAttr();\n      }\n    } else if (c === '\\n') {\n      addNewAttr();\n    }\n  }\n\n  return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n  return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n  var ret = {};\n  for (var i in obj) {\n    ret[i] = obj[i];\n  }\n  return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n *   - {Object} whiteList\n *   - {Function} onAttr\n *   - {Function} onIgnoreAttr\n *   - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n  options = shallowCopyObject(options || {});\n  options.whiteList = options.whiteList || DEFAULT.whiteList;\n  options.onAttr = options.onAttr || DEFAULT.onAttr;\n  options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n  this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n  // 兼容各种奇葩输入\n  css = css || '';\n  css = css.toString();\n  if (!css) return '';\n\n  var me = this;\n  var options = me.options;\n  var whiteList = options.whiteList;\n  var onAttr = options.onAttr;\n  var onIgnoreAttr = options.onIgnoreAttr;\n  var safeAttrValue = options.safeAttrValue;\n\n  var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n    var check = whiteList[name];\n    var isWhite = false;\n    if (check === true) isWhite = check;\n    else if (typeof check === 'function') isWhite = check(value);\n    else if (check instanceof RegExp) isWhite = check.test(value);\n    if (isWhite !== true) isWhite = false;\n\n    // 如果过滤后 value 为空则直接忽略\n    value = safeAttrValue(name, value);\n    if (!value) return;\n\n    var opts = {\n      position: position,\n      sourcePosition: sourcePosition,\n      source: source,\n      isWhite: isWhite\n    };\n\n    if (isWhite) {\n\n      var ret = onAttr(name, value, opts);\n      if (isNull(ret)) {\n        return name + ':' + value;\n      } else {\n        return ret;\n      }\n\n    } else {\n\n      var ret = onIgnoreAttr(name, value, opts);\n      if (!isNull(ret)) {\n        return ret;\n      }\n\n    }\n  });\n\n  return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项：whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n  var xss = new FilterCSS(options);\n  return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n  window.filterCSS = module.exports;\n}\n","module.exports = {\n  indexOf: function (arr, item) {\n    var i, j;\n    if (Array.prototype.indexOf) {\n      return arr.indexOf(item);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      if (arr[i] === item) {\n        return i;\n      }\n    }\n    return -1;\n  },\n  forEach: function (arr, fn, scope) {\n    var i, j;\n    if (Array.prototype.forEach) {\n      return arr.forEach(fn, scope);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      fn.call(scope, arr[i], i, arr);\n    }\n  },\n  trim: function (str) {\n    if (String.prototype.trim) {\n      return str.trim();\n    }\n    return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n  },\n  spaceIndex: function (str) {\n    var reg = /\\s|\\n|\\t/;\n    var match = reg.exec(str);\n    return match ? match.index : -1;\n  },\n};\n","/**\n * default settings\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n  return {\n    a: [\"target\", \"href\", \"title\"],\n    abbr: [\"title\"],\n    address: [],\n    area: [\"shape\", \"coords\", \"href\", \"alt\"],\n    article: [],\n    aside: [],\n    audio: [\n      \"autoplay\",\n      \"controls\",\n      \"crossorigin\",\n      \"loop\",\n      \"muted\",\n      \"preload\",\n      \"src\",\n    ],\n    b: [],\n    bdi: [\"dir\"],\n    bdo: [\"dir\"],\n    big: [],\n    blockquote: [\"cite\"],\n    br: [],\n    caption: [],\n    center: [],\n    cite: [],\n    code: [],\n    col: [\"align\", \"valign\", \"span\", \"width\"],\n    colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n    dd: [],\n    del: [\"datetime\"],\n    details: [\"open\"],\n    div: [],\n    dl: [],\n    dt: [],\n    em: [],\n    figcaption: [],\n    figure: [],\n    font: [\"color\", \"size\", \"face\"],\n    footer: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    header: [],\n    hr: [],\n    i: [],\n    img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n    ins: [\"datetime\"],\n    li: [],\n    mark: [],\n    nav: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    section: [],\n    small: [],\n    span: [],\n    sub: [],\n    summary: [],\n    sup: [],\n    strong: [],\n    strike: [],\n    table: [\"width\", \"border\", \"align\", \"valign\"],\n    tbody: [\"align\", \"valign\"],\n    td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n    tfoot: [\"align\", \"valign\"],\n    th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n    thead: [\"align\", \"valign\"],\n    tr: [\"rowspan\", \"align\", \"valign\"],\n    tt: [],\n    u: [],\n    ul: [],\n    video: [\n      \"autoplay\",\n      \"controls\",\n      \"crossorigin\",\n      \"loop\",\n      \"muted\",\n      \"playsinline\",\n      \"poster\",\n      \"preload\",\n      \"src\",\n      \"height\",\n      \"width\",\n    ],\n  };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n  // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n  // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n  // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n  // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n  return html.replace(REGEXP_LT, \"&lt;\").replace(REGEXP_GT, \"&gt;\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n  // unescape attribute value firstly\n  value = friendlyAttrValue(value);\n\n  if (name === \"href\" || name === \"src\") {\n    // filter `href` and `src` attribute\n    // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n    value = _.trim(value);\n    if (value === \"#\") return \"#\";\n    if (\n      !(\n        value.substr(0, 7) === \"http://\" ||\n        value.substr(0, 8) === \"https://\" ||\n        value.substr(0, 7) === \"mailto:\" ||\n        value.substr(0, 4) === \"tel:\" ||\n        value.substr(0, 11) === \"data:image/\" ||\n        value.substr(0, 6) === \"ftp://\" ||\n        value.substr(0, 2) === \"./\" ||\n        value.substr(0, 3) === \"../\" ||\n        value[0] === \"#\" ||\n        value[0] === \"/\"\n      )\n    ) {\n      return \"\";\n    }\n  } else if (name === \"background\") {\n    // filter `background` attribute (maybe no use)\n    // `javascript:`\n    REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n    if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n      return \"\";\n    }\n  } else if (name === \"style\") {\n    // `expression()`\n    REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n    if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n      return \"\";\n    }\n    // `url()`\n    REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n    if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n      REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n      if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n        return \"\";\n      }\n    }\n    if (cssFilter !== false) {\n      cssFilter = cssFilter || defaultCSSFilter;\n      value = cssFilter.process(value);\n    }\n  }\n\n  // escape `<>\"` before returns\n  value = escapeAttrValue(value);\n  return value;\n}\n\n// RegExp list\nvar REGEXP_LT = /</g;\nvar REGEXP_GT = />/g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /&quot;/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 =\n  /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 =\n  /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n  return str.replace(REGEXP_QUOTE, \"&quot;\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n  return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n  return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n    return code[0] === \"x\" || code[0] === \"X\"\n      ? String.fromCharCode(parseInt(code.substr(1), 16))\n      : String.fromCharCode(parseInt(code, 10));\n  });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n  return str\n    .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n    .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n  var str2 = \"\";\n  for (var i = 0, len = str.length; i < len; i++) {\n    str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n  }\n  return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n  str = unescapeQuote(str);\n  str = escapeHtmlEntities(str);\n  str = escapeDangerHtml5Entities(str);\n  str = clearNonPrintableCharacter(str);\n  return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n  str = escapeQuote(str);\n  str = escapeHtml(str);\n  return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n  return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n  if (typeof next !== \"function\") {\n    next = function () {};\n  }\n\n  var isRemoveAllTag = !Array.isArray(tags);\n  function isRemoveTag(tag) {\n    if (isRemoveAllTag) return true;\n    return _.indexOf(tags, tag) !== -1;\n  }\n\n  var removeList = [];\n  var posStart = false;\n\n  return {\n    onIgnoreTag: function (tag, html, options) {\n      if (isRemoveTag(tag)) {\n        if (options.isClosing) {\n          var ret = \"[/removed]\";\n          var end = options.position + ret.length;\n          removeList.push([\n            posStart !== false ? posStart : options.position,\n            end,\n          ]);\n          posStart = false;\n          return ret;\n        } else {\n          if (!posStart) {\n            posStart = options.position;\n          }\n          return \"[removed]\";\n        }\n      } else {\n        return next(tag, html, options);\n      }\n    },\n    remove: function (html) {\n      var rethtml = \"\";\n      var lastPos = 0;\n      _.forEach(removeList, function (pos) {\n        rethtml += html.slice(lastPos, pos[0]);\n        lastPos = pos[1];\n      });\n      rethtml += html.slice(lastPos);\n      return rethtml;\n    },\n  };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n  var retHtml = \"\";\n  var lastPos = 0;\n  while (lastPos < html.length) {\n    var i = html.indexOf(\"<!--\", lastPos);\n    if (i === -1) {\n      retHtml += html.slice(lastPos);\n      break;\n    }\n    retHtml += html.slice(lastPos, i);\n    var j = html.indexOf(\"-->\", i);\n    if (j === -1) {\n      break;\n    }\n    lastPos = j + 3;\n  }\n  return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n  var chars = html.split(\"\");\n  chars = chars.filter(function (char) {\n    var c = char.charCodeAt(0);\n    if (c === 127) return false;\n    if (c <= 31) {\n      if (c === 10 || c === 13) return true;\n      return false;\n    }\n    return true;\n  });\n  return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '<a hef=\"#\">'\n * @return {String}\n */\nfunction getTagName(html) {\n  var i = _.spaceIndex(html);\n  var tagName;\n  if (i === -1) {\n    tagName = html.slice(1, -1);\n  } else {\n    tagName = html.slice(1, i + 1);\n  }\n  tagName = _.trim(tagName).toLowerCase();\n  if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n  if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n  return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如：'<a hef=\"#\">'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n  return html.slice(0, 2) === \"</\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n  \"use strict\";\n\n  var rethtml = \"\";\n  var lastPos = 0;\n  var tagStart = false;\n  var quoteStart = false;\n  var currentPos = 0;\n  var len = html.length;\n  var currentTagName = \"\";\n  var currentHtml = \"\";\n\n  chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n    var c = html.charAt(currentPos);\n    if (tagStart === false) {\n      if (c === \"<\") {\n        tagStart = currentPos;\n        continue;\n      }\n    } else {\n      if (quoteStart === false) {\n        if (c === \"<\") {\n          rethtml += escapeHtml(html.slice(lastPos, currentPos));\n          tagStart = currentPos;\n          lastPos = currentPos;\n          continue;\n        }\n        if (c === \">\" || currentPos === len - 1) {\n          rethtml += escapeHtml(html.slice(lastPos, tagStart));\n          currentHtml = html.slice(tagStart, currentPos + 1);\n          currentTagName = getTagName(currentHtml);\n          rethtml += onTag(\n            tagStart,\n            rethtml.length,\n            currentTagName,\n            currentHtml,\n            isClosing(currentHtml)\n          );\n          lastPos = currentPos + 1;\n          tagStart = false;\n          continue;\n        }\n        if (c === '\"' || c === \"'\") {\n          var i = 1;\n          var ic = html.charAt(currentPos - i);\n\n          while (ic.trim() === \"\" || ic === \"=\") {\n            if (ic === \"=\") {\n              quoteStart = c;\n              continue chariterator;\n            }\n            ic = html.charAt(currentPos - ++i);\n          }\n        }\n      } else {\n        if (c === quoteStart) {\n          quoteStart = false;\n          continue;\n        }\n      }\n    }\n  }\n  if (lastPos < len) {\n    rethtml += escapeHtml(html.substr(lastPos));\n  }\n\n  return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n  \"use strict\";\n\n  var lastPos = 0;\n  var lastMarkPos = 0;\n  var retAttrs = [];\n  var tmpName = false;\n  var len = html.length;\n\n  function addAttr(name, value) {\n    name = _.trim(name);\n    name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n    if (name.length < 1) return;\n    var ret = onAttr(name, value || \"\");\n    if (ret) retAttrs.push(ret);\n  }\n\n  // 逐个分析字符\n  for (var i = 0; i < len; i++) {\n    var c = html.charAt(i);\n    var v, j;\n    if (tmpName === false && c === \"=\") {\n      tmpName = html.slice(lastPos, i);\n      lastPos = i + 1;\n      lastMarkPos = html.charAt(lastPos) === '\"' || html.charAt(lastPos) === \"'\" ? lastPos : findNextQuotationMark(html, i + 1);\n      continue;\n    }\n    if (tmpName !== false) {\n      if (\n        i === lastMarkPos\n      ) {\n        j = html.indexOf(c, i + 1);\n        if (j === -1) {\n          break;\n        } else {\n          v = _.trim(html.slice(lastMarkPos + 1, j));\n          addAttr(tmpName, v);\n          tmpName = false;\n          i = j;\n          lastPos = i + 1;\n          continue;\n        }\n      }\n    }\n    if (/\\s|\\n|\\t/.test(c)) {\n      html = html.replace(/\\s|\\n|\\t/g, \" \");\n      if (tmpName === false) {\n        j = findNextEqual(html, i);\n        if (j === -1) {\n          v = _.trim(html.slice(lastPos, i));\n          addAttr(v);\n          tmpName = false;\n          lastPos = i + 1;\n          continue;\n        } else {\n          i = j - 1;\n          continue;\n        }\n      } else {\n        j = findBeforeEqual(html, i - 1);\n        if (j === -1) {\n          v = _.trim(html.slice(lastPos, i));\n          v = stripQuoteWrap(v);\n          addAttr(tmpName, v);\n          tmpName = false;\n          lastPos = i + 1;\n          continue;\n        } else {\n          continue;\n        }\n      }\n    }\n  }\n\n  if (lastPos < html.length) {\n    if (tmpName === false) {\n      addAttr(html.slice(lastPos));\n    } else {\n      addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n    }\n  }\n\n  return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n  for (; i < str.length; i++) {\n    var c = str[i];\n    if (c === \" \") continue;\n    if (c === \"=\") return i;\n    return -1;\n  }\n}\n\nfunction findNextQuotationMark(str, i) {\n  for (; i < str.length; i++) {\n    var c = str[i];\n    if (c === \" \") continue;\n    if (c === \"'\" || c === '\"') return i;\n    return -1;\n  }\n}\n\nfunction findBeforeEqual(str, i) {\n  for (; i > 0; i--) {\n    var c = str[i];\n    if (c === \" \") continue;\n    if (c === \"=\") return i;\n    return -1;\n  }\n}\n\nfunction isQuoteWrapString(text) {\n  if (\n    (text[0] === '\"' && text[text.length - 1] === '\"') ||\n    (text[0] === \"'\" && text[text.length - 1] === \"'\")\n  ) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction stripQuoteWrap(text) {\n  if (isQuoteWrapString(text)) {\n    return text.substr(1, text.length - 2);\n  } else {\n    return text;\n  }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * filter xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n  return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n *   - {String} html\n *   - {Boolean} closing\n */\nfunction getAttrs(html) {\n  var i = _.spaceIndex(html);\n  if (i === -1) {\n    return {\n      html: \"\",\n      closing: html[html.length - 2] === \"/\",\n    };\n  }\n  html = _.trim(html.slice(i + 1, -1));\n  var isClosing = html[html.length - 1] === \"/\";\n  if (isClosing) html = _.trim(html.slice(0, -1));\n  return {\n    html: html,\n    closing: isClosing,\n  };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n  var ret = {};\n  for (var i in obj) {\n    ret[i] = obj[i];\n  }\n  return ret;\n}\n\nfunction keysToLowerCase(obj) {\n  var ret = {};\n  for (var i in obj) {\n    if (Array.isArray(obj[i])) {\n      ret[i.toLowerCase()] = obj[i].map(function (item) {\n        return item.toLowerCase();\n      });\n    } else {\n      ret[i.toLowerCase()] = obj[i];\n    }\n  }\n  return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n *        whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n *        onIgnoreTagAttr, safeAttrValue, escapeHtml\n *        stripIgnoreTagBody, allowCommentTag, stripBlankChar\n *        css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n  options = shallowCopyObject(options || {});\n\n  if (options.stripIgnoreTag) {\n    if (options.onIgnoreTag) {\n      console.error(\n        'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n      );\n    }\n    options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n  }\n  if (options.whiteList || options.allowList) {\n    options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n  } else {\n    options.whiteList = DEFAULT.whiteList;\n  }\n\n  options.onTag = options.onTag || DEFAULT.onTag;\n  options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n  options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n  options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n  options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n  this.options = options;\n\n  if (options.css === false) {\n    this.cssFilter = false;\n  } else {\n    options.css = options.css || {};\n    this.cssFilter = new FilterCSS(options.css);\n  }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n  // compatible with the input\n  html = html || \"\";\n  html = html.toString();\n  if (!html) return \"\";\n\n  var me = this;\n  var options = me.options;\n  var whiteList = options.whiteList;\n  var onTag = options.onTag;\n  var onIgnoreTag = options.onIgnoreTag;\n  var onTagAttr = options.onTagAttr;\n  var onIgnoreTagAttr = options.onIgnoreTagAttr;\n  var safeAttrValue = options.safeAttrValue;\n  var escapeHtml = options.escapeHtml;\n  var cssFilter = me.cssFilter;\n\n  // remove invisible characters\n  if (options.stripBlankChar) {\n    html = DEFAULT.stripBlankChar(html);\n  }\n\n  // remove html comments\n  if (!options.allowCommentTag) {\n    html = DEFAULT.stripCommentTag(html);\n  }\n\n  // if enable stripIgnoreTagBody\n  var stripIgnoreTagBody = false;\n  if (options.stripIgnoreTagBody) {\n    stripIgnoreTagBody = DEFAULT.StripTagBody(\n      options.stripIgnoreTagBody,\n      onIgnoreTag\n    );\n    onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n  }\n\n  var retHtml = parseTag(\n    html,\n    function (sourcePosition, position, tag, html, isClosing) {\n      var info = {\n        sourcePosition: sourcePosition,\n        position: position,\n        isClosing: isClosing,\n        isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),\n      };\n\n      // call `onTag()`\n      var ret = onTag(tag, html, info);\n      if (!isNull(ret)) return ret;\n\n      if (info.isWhite) {\n        if (info.isClosing) {\n          return \"</\" + tag + \">\";\n        }\n\n        var attrs = getAttrs(html);\n        var whiteAttrList = whiteList[tag];\n        var attrsHtml = parseAttr(attrs.html, function (name, value) {\n          // call `onTagAttr()`\n          var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n          var ret = onTagAttr(tag, name, value, isWhiteAttr);\n          if (!isNull(ret)) return ret;\n\n          if (isWhiteAttr) {\n            // call `safeAttrValue()`\n            value = safeAttrValue(tag, name, value, cssFilter);\n            if (value) {\n              return name + '=\"' + value + '\"';\n            } else {\n              return name;\n            }\n          } else {\n            // call `onIgnoreTagAttr()`\n            ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n            if (!isNull(ret)) return ret;\n            return;\n          }\n        });\n\n        // build new tag html\n        html = \"<\" + tag;\n        if (attrsHtml) html += \" \" + attrsHtml;\n        if (attrs.closing) html += \" /\";\n        html += \">\";\n        return html;\n      } else {\n        // call `onIgnoreTag()`\n        ret = onIgnoreTag(tag, html, info);\n        if (!isNull(ret)) return ret;\n        return escapeHtml(html);\n      }\n    },\n    escapeHtml\n  );\n\n  // if enable stripIgnoreTagBody\n  if (stripIgnoreTagBody) {\n    retHtml = stripIgnoreTagBody.remove(retHtml);\n  }\n\n  return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n  var xss = new FilterXSS(options);\n  return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\n(function () {\n  for (var i in DEFAULT) {\n    exports[i] = DEFAULT[i];\n  }\n  for (var j in parser) {\n    exports[j] = parser[j];\n  }\n})();\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n  window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n  return (\n    typeof self !== \"undefined\" &&\n    typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n    self instanceof DedicatedWorkerGlobalScope\n  );\n}\nif (isWorkerEnv()) {\n  self.filterXSS = module.exports;\n}\n","// utility functions\n\nexport * from \"vis-util/esnext\";\nimport * as util from \"vis-util/esnext\";\nimport { getType, isNumber, isString } from \"vis-util/esnext\";\nimport { DataSet, createNewDataPipeFrom } from \"vis-data/esnext\";\nimport {isDataViewLike as isDataViewLikeUpstream} from \"vis-data/esnext\";\n\nimport moment from \"moment\";\nimport xssFilter from 'xss';\n\nexport { v4 as randomUUID } from \"uuid\";\n/**\n * Test if an object implements the DataView interface from vis-data.\n * Uses the idProp property instead of expecting a hardcoded id field \"id\".\n */\nexport function isDataViewLike(obj) {\n    if(!obj) {\n        return false;\n    }\n    let idProp = obj.idProp ?? obj._idProp;\n    if(!idProp) {\n        return false;\n    }\n    return isDataViewLikeUpstream(idProp, obj);\n}\n\n// parse ASP.Net Date pattern,\n// for example '/Date(1198908717056)/' or '/Date(1198908717056-0700)/'\n// code from http://momentjs.com/\nconst ASPDateRegex = /^\\/?Date\\((-?\\d+)/i;\nconst NumericRegex = /^\\d+$/;\n/**\n * Convert an object into another type\n *\n * @param object - Value of unknown type.\n * @param type - Name of the desired type.\n *\n * @returns Object in the desired type.\n * @throws Error\n */\nexport function convert(object, type) {\n  let match;\n\n  if (object === undefined) {\n    return undefined;\n  }\n  if (object === null) {\n    return null;\n  }\n\n  if (!type) {\n    return object;\n  }\n  if (!(typeof type === \"string\") && !(type instanceof String)) {\n    throw new Error(\"Type must be a string\");\n  }\n\n  //noinspection FallthroughInSwitchStatementJS\n  switch (type) {\n    case \"boolean\":\n    case \"Boolean\":\n      return Boolean(object);\n\n    case \"number\":\n    case \"Number\":\n      if (isString(object) && !isNaN(Date.parse(object))) {\n        return moment(object).valueOf();\n      } else {\n        // @TODO: I don't think that Number and String constructors are a good idea.\n        // This could also fail if the object doesn't have valueOf method or if it's redefined.\n        // For example: Object.create(null) or { valueOf: 7 }.\n        return Number(object.valueOf());\n      }\n    case \"string\":\n    case \"String\":\n      return String(object);\n\n    case \"Date\":\n      try {\n        return convert(object, \"Moment\").toDate();\n      }\n      catch(e){\n        if (e instanceof TypeError) {\n          throw new TypeError(\n            \"Cannot convert object of type \" + getType(object) + \" to type \" + type\n          );\n        } else {\n          throw e;\n        }\n      }\n\n    case \"Moment\":\n      if (isNumber(object)) {\n        return moment(object);\n      }\n      if (object instanceof Date) {\n        return moment(object.valueOf());\n      } else if (moment.isMoment(object)) {\n        return moment(object);\n      }\n      if (isString(object)) {\n        match = ASPDateRegex.exec(object);\n        if (match) {\n          // object is an ASP date\n          return moment(Number(match[1])); // parse number\n        }\n        match = NumericRegex.exec(object);\n\n        if (match) {\n          return moment(Number(object));\n        }\n\n        return moment(object); // parse string\n      } else {\n        throw new TypeError(\n          \"Cannot convert object of type \" + getType(object) + \" to type \" + type\n        );\n      }\n\n    case \"ISODate\":\n      if (isNumber(object)) {\n        return new Date(object);\n      } else if (object instanceof Date) {\n        return object.toISOString();\n      } else if (moment.isMoment(object)) {\n        return object.toDate().toISOString();\n      } else if (isString(object)) {\n        match = ASPDateRegex.exec(object);\n        if (match) {\n          // object is an ASP date\n          return new Date(Number(match[1])).toISOString(); // parse number\n        } else {\n          return moment(object).format(); // ISO 8601\n        }\n      } else {\n        throw new Error(\n          \"Cannot convert object of type \" +\n            getType(object) +\n            \" to type ISODate\"\n        );\n      }\n\n    case \"ASPDate\":\n      if (isNumber(object)) {\n        return \"/Date(\" + object + \")/\";\n      } else if (object instanceof Date || moment.isMoment(object)) {\n        return \"/Date(\" + object.valueOf() + \")/\";\n      } else if (isString(object)) {\n        match = ASPDateRegex.exec(object);\n        let value;\n        if (match) {\n          // object is an ASP date\n          value = new Date(Number(match[1])).valueOf(); // parse number\n        } else {\n          value = new Date(object).valueOf(); // parse string\n        }\n        return \"/Date(\" + value + \")/\";\n      } else {\n        throw new Error(\n          \"Cannot convert object of type \" +\n            getType(object) +\n            \" to type ASPDate\"\n        );\n      }\n\n    default:\n      throw new Error(`Unknown type ${type}`);\n  }\n}\n\n/**\n * Create a Data Set like wrapper to seamlessly coerce data types.\n *\n * @param rawDS - The Data Set with raw uncoerced data.\n * @param type - A record assigning a data type to property name.\n *\n * @remarks\n * The write operations (`add`, `remove`, `update` and `updateOnly`) write into\n * the raw (uncoerced) data set. These values are then picked up by a pipe\n * which coerces the values using the [[convert]] function and feeds them into\n * the coerced data set. When querying (`forEach`, `get`, `getIds`, `off` and\n * `on`) the values are then fetched from the coerced data set and already have\n * the required data types. The values are coerced only once when inserted and\n * then the same value is returned each time until it is updated or deleted.\n *\n * For example: `typeCoercedDataSet.add({ id: 7, start: \"2020-01-21\" })` would\n * result in `typeCoercedDataSet.get(7)` returning `{ id: 7, start: moment(new\n * Date(\"2020-01-21\")).toDate() }`.\n *\n * Use the dispose method prior to throwing a reference to this away. Otherwise\n * the pipe connecting the two Data Sets will keep the unaccessible coerced\n * Data Set alive and updated as long as the raw Data Set exists.\n *\n * @returns A Data Set like object that saves data into the raw Data Set and\n * retrieves them from the coerced Data Set.\n */\nexport function typeCoerceDataSet(\n  rawDS,\n  type = { start: \"Date\", end: \"Date\" }\n) {\n  const idProp = rawDS._idProp;\n  const coercedDS = new DataSet({ fieldId: idProp });\n\n  const pipe = createNewDataPipeFrom(rawDS)\n    .map(item =>\n      Object.keys(item).reduce((acc, key) => {\n        acc[key] = convert(item[key], type[key]);\n        return acc;\n      }, {})\n    )\n    .to(coercedDS);\n\n  pipe.all().start();\n\n  return {\n    // Write only.\n    add: (...args) => rawDS.getDataSet().add(...args),\n    remove: (...args) => rawDS.getDataSet().remove(...args),\n    update: (...args) => rawDS.getDataSet().update(...args),\n    updateOnly: (...args) => rawDS.getDataSet().updateOnly(...args),\n    clear : (...args) => rawDS.getDataSet().clear(...args),\n\n    // Read only.\n    forEach: coercedDS.forEach.bind(coercedDS),\n    get: coercedDS.get.bind(coercedDS),\n    getIds: coercedDS.getIds.bind(coercedDS),\n    off: coercedDS.off.bind(coercedDS),\n    on: coercedDS.on.bind(coercedDS),\n\n    get length() {\n      return coercedDS.length;\n    },\n\n    // Non standard.\n    idProp,\n    type,\n\n    rawDS,\n    coercedDS,\n    dispose: () => pipe.stop()\n  };\n}\n\n// Configure XSS protection\nconst setupXSSCleaner = (options) => {\n  const customXSS = new xssFilter.FilterXSS(options);\n  return (string) => customXSS.process(string);\n};\nconst setupNoOpCleaner = (string) => string;\n\n// when nothing else is configured: filter XSS with the lib's default options\nlet configuredXSSProtection = setupXSSCleaner();\n\nconst setupXSSProtection = (options) => {\n  // No options? Do nothing.\n  if (!options) {\n    return;\n  }\n\n  // Disable XSS protection completely on request\n  if (options.disabled === true) {\n    configuredXSSProtection = setupNoOpCleaner;\n    console.warn('You disabled XSS protection for vis-Timeline. I sure hope you know what you\\'re doing!');\n  } else {\n    // Configure XSS protection with some custom options.\n    // For a list of valid options check the lib's documentation:\n    // https://github.com/leizongmin/js-xss#custom-filter-rules\n    if (options.filterOptions) {\n      configuredXSSProtection = setupXSSCleaner(options.filterOptions);\n    }\n  }\n};\n\nconst availableUtils = {\n  ...util,\n  convert,\n  setupXSSProtection\n};\n\nObject.defineProperty(availableUtils, 'xss', {\n  get: function() {\n    return configuredXSSProtection;\n  }\n})\n\nexport default availableUtils;\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;\n} : $parseFloat;\n","'use strict';\nvar $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat !== $parseFloat }, {\n  parseFloat: $parseFloat\n});\n","'use strict';\nrequire('../modules/es.parse-float');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseFloat;\n","import util from '../../util';\n\n/** Prototype for visual components */\nexport default class Component {\n  /**\n * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body]\n * @param {Object} [options]\n */\n  constructor(body, options) {  // eslint-disable-line no-unused-vars\n    this.options = null;\n    this.props = null;\n  }\n\n  /**\n   * Set options for the component. The new options will be merged into the\n   * current options.\n   * @param {Object} options\n   */\n  setOptions(options) {\n    if (options) {\n      util.extend(this.options, options);\n    }\n  }\n\n  /**\n   * Repaint the component\n   * @return {boolean} Returns true if the component is resized\n   */\n  redraw() {\n    // should be implemented by the component\n    return false;\n  }\n\n  /**\n   * Destroy the component. Cleanup DOM and event listeners\n   */\n  destroy() {\n    // should be implemented by the component\n  }\n\n  /**\n   * Test whether the component is resized since the last time _isResized() was\n   * called.\n   * @return {Boolean} Returns true if the component is resized\n   * @protected\n   */\n  _isResized() {\n    const resized = (\n      this.props._previousWidth !== this.props.width ||\n      this.props._previousHeight !== this.props.height\n    );\n\n    this.props._previousWidth = this.props.width;\n    this.props._previousHeight = this.props.height;\n\n    return resized;\n  }\n}\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n  repeat: repeat\n});\n","'use strict';\nrequire('../../../modules/es.string.repeat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').repeat;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../string/virtual/repeat');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n  var own = it.repeat;\n  return typeof it == 'string' || it === StringPrototype\n    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.repeat) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/repeat');\n\nmodule.exports = parent;\n","\n/**\n * used in Core to convert the options into a volatile variable\n * \n * @param {function} moment\n * @param {Object} body\n * @param {Array | Object} hiddenDates\n * @returns {number}\n */\nexport function convertHiddenOptions(moment, body, hiddenDates) {\n  if (hiddenDates && !Array.isArray(hiddenDates)) {\n    return convertHiddenOptions(moment, body, [hiddenDates])\n  }\n\n  body.hiddenDates = [];\n  if (hiddenDates) {\n    if (Array.isArray(hiddenDates) == true) {\n      for (let i = 0; i < hiddenDates.length; i++) {\n        if (hiddenDates[i].repeat === undefined) {\n          const dateItem = {};\n          dateItem.start = moment(hiddenDates[i].start).toDate().valueOf();\n          dateItem.end = moment(hiddenDates[i].end).toDate().valueOf();\n          body.hiddenDates.push(dateItem);\n        }\n      }\n      body.hiddenDates.sort((a, b) => a.start - b.start); // sort by start time\n    }\n  }\n}\n\n/**\n * create new entrees for the repeating hidden dates\n *\n * @param {function} moment\n * @param {Object} body\n * @param {Array | Object} hiddenDates\n * @returns {null}\n */\nexport function updateHiddenDates(moment, body, hiddenDates) {\n  if (hiddenDates && !Array.isArray(hiddenDates)) {\n    return updateHiddenDates(moment, body, [hiddenDates])\n  }\n\n  if (hiddenDates && body.domProps.centerContainer.width !== undefined) {\n    convertHiddenOptions(moment, body, hiddenDates);\n\n    const start = moment(body.range.start);\n    const end = moment(body.range.end);\n\n    const totalRange = (body.range.end - body.range.start);\n    const pixelTime = totalRange / body.domProps.centerContainer.width;\n\n    for (let i = 0; i < hiddenDates.length; i++) {\n      if (hiddenDates[i].repeat !== undefined) {\n        const startDate = moment(hiddenDates[i].start);\n        let endDate = moment(hiddenDates[i].end);\n\n        if (startDate._d == \"Invalid Date\") {\n          throw new Error(`Supplied start date is not valid: ${hiddenDates[i].start}`);\n        }\n        if (endDate._d == \"Invalid Date\") {\n          throw new Error(`Supplied end date is not valid: ${hiddenDates[i].end}`);\n        }\n\n        const duration = endDate - startDate;\n        if (duration >= 4 * pixelTime) {\n\n          let offset = 0;\n          const runUntil = end.clone();\n          switch (hiddenDates[i].repeat) {\n            case \"daily\": // case of time\n              if (startDate.day() != endDate.day()) {\n                offset = 1;\n              }\n              startDate.dayOfYear(start.dayOfYear());\n              startDate.year(start.year());\n              startDate.subtract(7,'days');\n\n              endDate.dayOfYear(start.dayOfYear());\n              endDate.year(start.year());\n              endDate.subtract(7 - offset,'days');\n\n              runUntil.add(1, 'weeks');\n              break;\n            case \"weekly\": {\n              const dayOffset = endDate.diff(startDate,'days');\n              const day = startDate.day();\n\n              // set the start date to the range.start\n              startDate.date(start.date());\n              startDate.month(start.month());\n              startDate.year(start.year());\n              endDate = startDate.clone();\n\n              // force\n              startDate.day(day);\n              endDate.day(day);\n              endDate.add(dayOffset,'days');\n\n              startDate.subtract(1,'weeks');\n              endDate.subtract(1,'weeks');\n\n              runUntil.add(1, 'weeks');\n              break;\n            }\n            case \"monthly\":\n              if (startDate.month() != endDate.month()) {\n                offset = 1;\n              }\n              startDate.month(start.month());\n              startDate.year(start.year());\n              startDate.subtract(1,'months');\n\n              endDate.month(start.month());\n              endDate.year(start.year());\n              endDate.subtract(1,'months');\n              endDate.add(offset,'months');\n\n              runUntil.add(1, 'months');\n              break;\n            case \"yearly\":\n              if (startDate.year() != endDate.year()) {\n                offset = 1;\n              }\n              startDate.year(start.year());\n              startDate.subtract(1,'years');\n              endDate.year(start.year());\n              endDate.subtract(1,'years');\n              endDate.add(offset,'years');\n\n              runUntil.add(1, 'years');\n              break;\n            default:\n              console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\", hiddenDates[i].repeat);\n              return;\n          }\n          while (startDate < runUntil) {\n            body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()});\n            switch (hiddenDates[i].repeat) {\n              case \"daily\":\n                startDate.add(1, 'days');\n                endDate.add(1, 'days');\n                break;\n              case \"weekly\":\n                startDate.add(1, 'weeks');\n                endDate.add(1, 'weeks');\n                break;\n              case \"monthly\":\n                startDate.add(1, 'months');\n                endDate.add(1, 'months');\n                break;\n              case \"yearly\":\n                startDate.add(1, 'y');\n                endDate.add(1, 'y');\n                break;\n              default:\n                console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\", hiddenDates[i].repeat);\n                return;\n            }\n          }\n          body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()});\n        }\n      }\n    }\n    // remove duplicates, merge where possible\n    removeDuplicates(body);\n    // ensure the new positions are not on hidden dates\n    const startHidden = getIsHidden(body.range.start, body.hiddenDates);\n    const endHidden = getIsHidden(body.range.end,body.hiddenDates);\n    let rangeStart = body.range.start;\n    let rangeEnd = body.range.end;\n    if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;}\n    if (endHidden.hidden == true)   {rangeEnd   = body.range.endToFront == true ?   endHidden.startDate - 1   : endHidden.endDate + 1;}\n    if (startHidden.hidden == true || endHidden.hidden == true) {\n      body.range._applyRange(rangeStart, rangeEnd);\n    }\n  }\n\n}\n\n/**\n * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up.\n * Scales with N^2\n *\n * @param {Object} body\n */\nexport function removeDuplicates(body) {\n  const hiddenDates = body.hiddenDates;\n  const safeDates = [];\n  for (var i = 0; i < hiddenDates.length; i++) {\n    for (let j = 0; j < hiddenDates.length; j++) {\n      if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) {\n        // j inside i\n        if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) {\n          hiddenDates[j].remove = true;\n        }\n        // j start inside i\n        else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) {\n          hiddenDates[i].end = hiddenDates[j].end;\n          hiddenDates[j].remove = true;\n        }\n        // j end inside i\n        else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) {\n          hiddenDates[i].start = hiddenDates[j].start;\n          hiddenDates[j].remove = true;\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < hiddenDates.length; i++) {\n    if (hiddenDates[i].remove !== true) {\n      safeDates.push(hiddenDates[i]);\n    }\n  }\n\n  body.hiddenDates = safeDates;\n  body.hiddenDates.sort((a, b) => a.start - b.start); // sort by start time\n}\n\n/**\n * Prints dates to console\n * @param {array} dates\n */\nexport function printDates(dates) {\n  for (let i =0; i < dates.length; i++) {\n    console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove);\n  }\n}\n\n/**\n * Used in TimeStep to avoid the hidden times.\n * @param {function} moment\n * @param {TimeStep} timeStep\n * @param {Date} previousTime\n */\nexport function stepOverHiddenDates(moment, timeStep, previousTime) {\n  let stepInHidden = false;\n  const currentValue = timeStep.current.valueOf();\n  for (let i = 0; i < timeStep.hiddenDates.length; i++) {\n    const startDate = timeStep.hiddenDates[i].start;\n    var endDate = timeStep.hiddenDates[i].end;\n    if (currentValue >= startDate && currentValue < endDate) {\n      stepInHidden = true;\n      break;\n    }\n  }\n\n  if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) {\n    const prevValue = moment(previousTime);\n    const newValue = moment(endDate);\n    //check if the next step should be major\n    if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;}\n    else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;}\n    else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;}\n\n    timeStep.current = newValue;\n  }\n}\n\n///**\n// * Used in TimeStep to avoid the hidden times.\n// * @param timeStep\n// * @param previousTime\n// */\n//checkFirstStep = function(timeStep) {\n//  var stepInHidden = false;\n//  var currentValue = timeStep.current.valueOf();\n//  for (var i = 0; i < timeStep.hiddenDates.length; i++) {\n//    var startDate = timeStep.hiddenDates[i].start;\n//    var endDate = timeStep.hiddenDates[i].end;\n//    if (currentValue >= startDate && currentValue < endDate) {\n//      stepInHidden = true;\n//      break;\n//    }\n//  }\n//\n//  if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) {\n//    var newValue = moment(endDate);\n//    timeStep.current = newValue.toDate();\n//  }\n//};\n\n/**\n * replaces the Core toScreen methods\n *\n * @param {timeline.Core} Core\n * @param {Date} time\n * @param {number} width\n * @returns {number}\n */\nexport function toScreen(Core, time, width) {\n  let conversion;\n  if (Core.body.hiddenDates.length == 0) {\n      conversion = Core.range.conversion(width);\n      return (time.valueOf() - conversion.offset) * conversion.scale;\n    } else {\n      const hidden = getIsHidden(time, Core.body.hiddenDates);\n      if (hidden.hidden == true) {\n        time = hidden.startDate;\n      }\n\n      const duration = getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end);\n      if (time < Core.range.start) {\n        conversion = Core.range.conversion(width, duration);\n        const hiddenBeforeStart = getHiddenDurationBeforeStart(Core.body.hiddenDates, time, conversion.offset);\n        time = Core.options.moment(time).toDate().valueOf();\n        time = time + hiddenBeforeStart;\n        return -(conversion.offset - time.valueOf()) * conversion.scale;\n        \n      } else if (time > Core.range.end) {\n        const rangeAfterEnd = {start: Core.range.start, end: time};\n        time = correctTimeForHidden(Core.options.moment, Core.body.hiddenDates, rangeAfterEnd, time);\n        conversion = Core.range.conversion(width, duration);\n        return (time.valueOf() - conversion.offset) * conversion.scale;\n\n      } else {\n        time = correctTimeForHidden(Core.options.moment, Core.body.hiddenDates, Core.range, time);\n        conversion = Core.range.conversion(width, duration);\n        return (time.valueOf() - conversion.offset) * conversion.scale;\n      }\n    }\n  }\n\n/**\n * Replaces the core toTime methods\n *\n * @param {timeline.Core} Core\n * @param {number} x\n * @param {number} width\n * @returns {Date}\n */\nexport function toTime(Core, x, width) {\n  if (Core.body.hiddenDates.length == 0) {\n    const conversion = Core.range.conversion(width);\n    return new Date(x / conversion.scale + conversion.offset);\n  }\n  else {\n    const hiddenDuration = getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end);\n    const totalDuration = Core.range.end - Core.range.start - hiddenDuration;\n    const partialDuration = totalDuration * x / width;\n    const accumulatedHiddenDuration = getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration);\n\n    return new Date(accumulatedHiddenDuration + partialDuration + Core.range.start);\n  }\n}\n\n/**\n * Support function\n *\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @param {number} start\n * @param {number} end\n * @returns {number}\n */\nexport function getHiddenDurationBetween(hiddenDates, start, end) {\n  let duration = 0;\n  for (let i = 0; i < hiddenDates.length; i++) {\n    const startDate = hiddenDates[i].start;\n    const endDate = hiddenDates[i].end;\n    // if time after the cutout, and the\n    if (startDate >= start && endDate < end) {\n      duration += endDate - startDate;\n    }\n  }\n  return duration;\n}\n\n/**\n * Support function\n *\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @param {number} start\n * @param {number} end\n * @returns {number}\n */\nexport function getHiddenDurationBeforeStart(hiddenDates, start, end) {\n  let duration = 0;\n  for (let i = 0; i < hiddenDates.length; i++) {\n    const startDate = hiddenDates[i].start;\n    const endDate = hiddenDates[i].end;\n\n    if (startDate >= start && endDate <= end) {\n      duration += endDate - startDate;\n    }\n  }\n  return duration;\n}\n\n/**\n * Support function\n * @param {function} moment\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @param {{start: number, end: number}} range\n * @param {Date} time\n * @returns {number}\n */\nexport function correctTimeForHidden(moment, hiddenDates, range, time) {\n  time = moment(time).toDate().valueOf();\n  time -= getHiddenDurationBefore(moment, hiddenDates,range,time);\n  return time;\n}\n\n/**\n * Support function\n * @param {function} moment\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @param {{start: number, end: number}} range\n * @param {Date} time\n * @returns {number}\n */\nexport function getHiddenDurationBefore(moment, hiddenDates, range, time) {\n  let timeOffset = 0;\n  time = moment(time).toDate().valueOf();\n\n  for (let i = 0; i < hiddenDates.length; i++) {\n    const startDate = hiddenDates[i].start;\n    const endDate = hiddenDates[i].end;\n    // if time after the cutout, and the\n    if (startDate >= range.start && endDate < range.end) {\n      if (time >= endDate) {\n        timeOffset += (endDate - startDate);\n      }\n    }\n  }\n  return timeOffset;\n}\n\n/**\n * sum the duration from start to finish, including the hidden duration,\n * until the required amount has been reached, return the accumulated hidden duration\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @param {{start: number, end: number}} range\n * @param {number} [requiredDuration=0]\n * @returns {number}\n */\nexport function getAccumulatedHiddenDuration(hiddenDates, range, requiredDuration) {\n  let hiddenDuration = 0;\n  let duration = 0;\n  let previousPoint = range.start;\n  //printDates(hiddenDates)\n  for (let i = 0; i < hiddenDates.length; i++) {\n    const startDate = hiddenDates[i].start;\n    const endDate = hiddenDates[i].end;\n    // if time after the cutout, and the\n    if (startDate >= range.start && endDate < range.end) {\n      duration += startDate - previousPoint;\n      previousPoint = endDate;\n      if (duration >= requiredDuration) {\n        break;\n      }\n      else {\n        hiddenDuration += endDate - startDate;\n      }\n    }\n  }\n\n  return hiddenDuration;\n}\n\n/**\n * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @param {Date} time\n * @param {number} direction\n * @param {boolean} correctionEnabled\n * @returns {Date|number}\n */\nexport function snapAwayFromHidden(hiddenDates, time, direction, correctionEnabled) {\n  const isHidden = getIsHidden(time, hiddenDates);\n  if (isHidden.hidden == true) {\n    if (direction < 0) {\n      if (correctionEnabled == true) {\n        return isHidden.startDate - (isHidden.endDate - time) - 1;\n      }\n      else {\n        return isHidden.startDate - 1;\n      }\n    }\n    else {\n      if (correctionEnabled == true) {\n        return isHidden.endDate + (time - isHidden.startDate) + 1;\n      }\n      else {\n        return isHidden.endDate + 1;\n      }\n    }\n  }\n  else {\n    return time;\n  }\n\n}\n\n/**\n * Check if a time is hidden\n *\n * @param {Date} time\n * @param {Array.<{start: Window.start, end: *}>} hiddenDates\n * @returns {{hidden: boolean, startDate: Window.start, endDate: *}}\n */\nexport function getIsHidden(time, hiddenDates) {\n  for (let i = 0; i < hiddenDates.length; i++) {\n    var startDate = hiddenDates[i].start;\n    var endDate = hiddenDates[i].end;\n\n    if (time >= startDate && time < endDate) { // if the start is entering a hidden zone\n      return {hidden: true, startDate, endDate};\n    }\n  }\n  return {hidden: false, startDate, endDate};\n}\n","import util from '../util';\nimport moment from '../module/moment';\nimport Component from './component/Component';\nimport * as DateUtil  from './DateUtil';\n\n/**\n * A Range controls a numeric range with a start and end value.\n * The Range adjusts the range based on mouse events or programmatic changes,\n * and triggers events when the range is changing or has been changed.\n */\nexport default class Range extends Component {\n  /**\n * @param {{dom: Object, domProps: Object, emitter: Emitter}} body\n * @param {Object} [options]    See description at Range.setOptions\n * @constructor Range\n * @extends Component\n */\n  constructor(body, options) {\n    super();\n    const now = moment().hours(0).minutes(0).seconds(0).milliseconds(0);\n    const start = now.clone().add(-3, 'days').valueOf();\n    const end = now.clone().add(3, 'days').valueOf(); \n    this.millisecondsPerPixelCache = undefined;\n    \n    if(options === undefined) {\n      this.start = start;\n      this.end = end;\n    } else {\n      this.start = options.start || start;\n      this.end = options.end || end\n    }\n\n    this.rolling = false;\n\n    this.body = body;\n    this.deltaDifference = 0;\n    this.scaleOffset = 0;\n    this.startToFront = false;\n    this.endToFront = true;\n\n    // default options\n    this.defaultOptions = {\n      rtl: false,\n      start: null,\n      end: null,\n      moment,\n      direction: 'horizontal', // 'horizontal' or 'vertical'\n      moveable: true,\n      zoomable: true,\n      min: null,\n      max: null,\n      zoomMin: 10,                                // milliseconds\n      zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000,  // milliseconds\n      rollingMode: {\n        follow: false,\n        offset: 0.5\n      }\n    };\n    this.options = util.extend({}, this.defaultOptions);\n    this.props = {\n      touch: {}\n    };\n    this.animationTimer = null;\n\n    // drag listeners for dragging\n    this.body.emitter.on('panstart', this._onDragStart.bind(this));\n    this.body.emitter.on('panmove',  this._onDrag.bind(this));\n    this.body.emitter.on('panend',   this._onDragEnd.bind(this));\n\n    // mouse wheel for zooming\n    this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this));\n\n    // pinch to zoom\n    this.body.emitter.on('touch', this._onTouch.bind(this));\n    this.body.emitter.on('pinch', this._onPinch.bind(this));\n\n    // on click of rolling mode button\n    this.body.dom.rollingModeBtn.addEventListener('click', this.startRolling.bind(this));\n\n    this.setOptions(options);\n  }\n\n  /**\n   * Set options for the range controller\n   * @param {Object} options      Available options:\n   *                              {number | Date | String} start  Start date for the range\n   *                              {number | Date | String} end    End date for the range\n   *                              {number} min    Minimum value for start\n   *                              {number} max    Maximum value for end\n   *                              {number} zoomMin    Set a minimum value for\n   *                                                  (end - start).\n   *                              {number} zoomMax    Set a maximum value for\n   *                                                  (end - start).\n   *                              {boolean} moveable Enable moving of the range\n   *                                                 by dragging. True by default\n   *                              {boolean} zoomable Enable zooming of the range\n   *                                                 by pinching/scrolling. True by default\n   */\n  setOptions(options) {\n    if (options) {\n      // copy the options that we know\n      const fields = [\n        'animation', 'direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable',\n        'moment', 'activate', 'hiddenDates', 'zoomKey', 'zoomFriction', 'rtl', 'showCurrentTime', 'rollingMode', 'horizontalScroll'\n      ];\n      util.selectiveExtend(fields, this.options, options);\n\n      if (options.rollingMode && options.rollingMode.follow) {\n        this.startRolling();\n      }\n      if ('start' in options || 'end' in options) {\n        // apply a new range. both start and end are optional\n        this.setRange(options.start, options.end);\n      }\n    }\n  }\n\n  /**\n   * Start auto refreshing the current time bar\n   */\n  startRolling() {\n    const me = this;\n\n    /**\n     *  Updates the current time.\n     */\n    function update () {\n      me.stopRolling();\n      me.rolling = true;\n\n\n      let interval = me.end - me.start;\n      const t = util.convert(new Date(), 'Date').valueOf();\n      const rollingModeOffset = me.options.rollingMode && me.options.rollingMode.offset || 0.5\n\n      const start = t - interval * (rollingModeOffset);\n      const end = t + interval * (1 - rollingModeOffset);\n\n      const options = {\n        animation: false\n      };\n      me.setRange(start, end, options);\n\n      // determine interval to refresh\n      const scale = me.conversion(me.body.domProps.center.width).scale;\n      interval = 1 / scale / 10;\n      if (interval < 30)   interval = 30;\n      if (interval > 1000) interval = 1000;\n\n      me.body.dom.rollingModeBtn.style.visibility = \"hidden\";\n      // start a renderTimer to adjust for the new time\n      me.currentTimeTimer = setTimeout(update, interval);\n    }\n\n    update();\n  }\n\n  /**\n   * Stop auto refreshing the current time bar\n   */\n  stopRolling() {\n    if (this.currentTimeTimer !== undefined) {\n      clearTimeout(this.currentTimeTimer);\n      this.rolling = false;\n      this.body.dom.rollingModeBtn.style.visibility = \"visible\";\n    }\n  }\n\n  /**\n   * Set a new start and end range\n   * @param {Date | number | string} start\n   * @param {Date | number | string} end\n   * @param {Object} options      Available options:\n   *                              {boolean | {duration: number, easingFunction: string}} [animation=false]\n   *                                    If true, the range is animated\n   *                                    smoothly to the new window. An object can be\n   *                                    provided to specify duration and easing function.\n   *                                    Default duration is 500 ms, and default easing\n   *                                    function is 'easeInOutQuad'.\n   *                              {boolean} [byUser=false]\n   *                              {Event}  event  Mouse event\n   * @param {Function} callback     a callback function to be executed at the end of this function  \n   * @param {Function} frameCallback    a callback function executed each frame of the range animation.\n   *                                    The callback will be passed three parameters:\n   *                                    {number} easeCoefficient    an easing coefficent\n   *                                    {boolean} willDraw          If true the caller will redraw after the callback completes\n   *                                    {boolean} done              If true then animation is ending after the current frame\n   * @return {void}\n   */\n  setRange(start, end, options, callback, frameCallback) {\n    if (!options) {\n      options = {};\n    }\n    if (options.byUser !== true) {\n      options.byUser = false;\n    }\n    const me = this;\n    const finalStart = start != undefined ? util.convert(start, 'Date').valueOf() : null;\n    const finalEnd   = end != undefined   ? util.convert(end, 'Date').valueOf()   : null;\n    this._cancelAnimation();\n    this.millisecondsPerPixelCache = undefined;\n\n    if (options.animation) { // true or an Object\n      const initStart = this.start;\n      const initEnd = this.end;\n      const duration = (typeof options.animation === 'object' && 'duration' in options.animation) ? options.animation.duration : 500;\n      const easingName = (typeof options.animation === 'object' && 'easingFunction' in options.animation) ? options.animation.easingFunction : 'easeInOutQuad';\n      const easingFunction = util.easingFunctions[easingName];\n      if (!easingFunction) {\n        throw new Error(`Unknown easing function ${JSON.stringify(easingName)}. Choose from: ${Object.keys(util.easingFunctions).join(', ')}`);\n      }\n\n      const initTime = Date.now();\n      let anyChanged = false;\n\n      const next = () => {\n        if (!me.props.touch.dragging) {\n          const now = Date.now();\n          const time = now - initTime;\n          const ease = easingFunction(time / duration);\n          const done = time > duration;\n          const s = (done || finalStart === null) ? finalStart : initStart + (finalStart - initStart) * ease;\n          const e = (done || finalEnd   === null) ? finalEnd   : initEnd   + (finalEnd   - initEnd)   * ease;\n\n          changed = me._applyRange(s, e);\n          DateUtil.updateHiddenDates(me.options.moment, me.body, me.options.hiddenDates);\n          anyChanged = anyChanged || changed;\n\n          const params = {\n            start: new Date(me.start), \n            end: new Date(me.end), \n            byUser: options.byUser,\n            event: options.event\n          };\n\n          if (frameCallback) { frameCallback(ease, changed, done); }\n\n          if (changed) {          \n            me.body.emitter.emit('rangechange', params);\n          }\n\n          if (done) {\n            if (anyChanged) {\n              me.body.emitter.emit('rangechanged', params);\n              if (callback) { return callback() }\n            }\n          }\n          else {\n            // animate with as high as possible frame rate, leave 20 ms in between\n            // each to prevent the browser from blocking\n            me.animationTimer = setTimeout(next, 20);\n          }\n        }\n      };\n\n      return next();\n    }\n    else {\n      var changed = this._applyRange(finalStart, finalEnd);\n      DateUtil.updateHiddenDates(this.options.moment, this.body, this.options.hiddenDates);\n      if (changed) {\n        const params = {\n          start: new Date(this.start), \n          end: new Date(this.end), \n          byUser: options.byUser, \n          event: options.event\n        };\n\n        this.body.emitter.emit('rangechange', params);\n        clearTimeout( me.timeoutID );\n        me.timeoutID = setTimeout( () => {\n          me.body.emitter.emit('rangechanged', params);\n        }, 200 );\n        if (callback) { return callback() }\n      }\n    }\n  }\n\n  /**\n   * Get the number of milliseconds per pixel.\n   *\n   * @returns {undefined|number}\n   */\n  getMillisecondsPerPixel() {\n    if (this.millisecondsPerPixelCache === undefined) {\n      this.millisecondsPerPixelCache = (this.end - this.start) / this.body.dom.center.clientWidth;\n    }\n    return this.millisecondsPerPixelCache;\n  }\n\n  /**\n   * Stop an animation\n   * @private\n   */\n  _cancelAnimation() {\n    if (this.animationTimer) {\n      clearTimeout(this.animationTimer);\n      this.animationTimer = null;\n    }\n  }\n\n  /**\n   * Set a new start and end range. This method is the same as setRange, but\n   * does not trigger a range change and range changed event, and it returns\n   * true when the range is changed\n   * @param {number} [start]\n   * @param {number} [end]\n   * @return {boolean} changed\n   * @private\n   */\n  _applyRange(start, end) {\n    let newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start;\n    let newEnd   = (end != null)   ? util.convert(end, 'Date').valueOf()   : this.end;\n    const max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null;\n    const min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null;\n    let diff;\n\n    // check for valid number\n    if (isNaN(newStart) || newStart === null) {\n      throw new Error(`Invalid start \"${start}\"`);\n    }\n    if (isNaN(newEnd) || newEnd === null) {\n      throw new Error(`Invalid end \"${end}\"`);\n    }\n\n    // prevent end < start\n    if (newEnd < newStart) {\n      newEnd = newStart;\n    }\n\n    // prevent start < min\n    if (min !== null) {\n      if (newStart < min) {\n        diff = (min - newStart);\n        newStart += diff;\n        newEnd += diff;\n\n        // prevent end > max\n        if (max != null) {\n          if (newEnd > max) {\n            newEnd = max;\n          }\n        }\n      }\n    }\n\n    // prevent end > max\n    if (max !== null) {\n      if (newEnd > max) {\n        diff = (newEnd - max);\n        newStart -= diff;\n        newEnd -= diff;\n\n        // prevent start < min\n        if (min != null) {\n          if (newStart < min) {\n            newStart = min;\n          }\n        }\n      }\n    }\n\n    // prevent (end-start) < zoomMin\n    if (this.options.zoomMin !== null) {\n      let zoomMin = parseFloat(this.options.zoomMin);\n      if (zoomMin < 0) {\n        zoomMin = 0;\n      }\n      if ((newEnd - newStart) < zoomMin) {\n        // compensate for a scale of 0.5 ms\n        const compensation = 0.5;\n        if ((this.end - this.start) === zoomMin && newStart >= this.start - compensation && newEnd <= this.end) {\n          // ignore this action, we are already zoomed to the minimum\n          newStart = this.start;\n          newEnd = this.end;\n        }\n        else {\n          // zoom to the minimum\n          diff = (zoomMin - (newEnd - newStart));\n          newStart -= diff / 2;\n          newEnd += diff / 2;\n        }\n      }\n    }\n\n    // prevent (end-start) > zoomMax\n    if (this.options.zoomMax !== null) {\n      let zoomMax = parseFloat(this.options.zoomMax);\n      if (zoomMax < 0) {\n        zoomMax = 0;\n      }\n\n      if ((newEnd - newStart) > zoomMax) {\n        if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) {\n          // ignore this action, we are already zoomed to the maximum\n          newStart = this.start;\n          newEnd = this.end;\n        }\n        else {\n          // zoom to the maximum\n          diff = ((newEnd - newStart) - zoomMax);\n          newStart += diff / 2;\n          newEnd -= diff / 2;\n        }\n      }\n    }\n\n    const changed = (this.start != newStart || this.end != newEnd);\n\n    // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range)\n    if (!((newStart >= this.start && newStart   <= this.end) || (newEnd   >= this.start && newEnd   <= this.end)) &&\n        !((this.start >= newStart && this.start <= newEnd)   || (this.end >= newStart   && this.end <= newEnd) )) {\n      this.body.emitter.emit('checkRangedItems');\n    }\n\n    this.start = newStart;\n    this.end = newEnd;\n    return changed;\n  }\n\n  /**\n   * Retrieve the current range.\n   * @return {Object} An object with start and end properties\n   */\n  getRange() {\n    return {\n      start: this.start,\n      end: this.end\n    };\n  }\n\n  /**\n   * Calculate the conversion offset and scale for current range, based on\n   * the provided width\n   * @param {number} width\n   * @param {number} [totalHidden=0]\n   * @returns {{offset: number, scale: number}} conversion\n   */\n  conversion(width, totalHidden) {\n    return Range.conversion(this.start, this.end, width, totalHidden);\n  }\n\n  /**\n   * Static method to calculate the conversion offset and scale for a range,\n   * based on the provided start, end, and width\n   * @param {number} start\n   * @param {number} end\n   * @param {number} width\n   * @param {number} [totalHidden=0]\n   * @returns {{offset: number, scale: number}} conversion\n   */\n  static conversion(start, end, width, totalHidden) {\n    if (totalHidden === undefined) {\n      totalHidden = 0;\n    }\n    if (width != 0 && (end - start != 0)) {\n      return {\n        offset: start,\n        scale: width / (end - start - totalHidden)\n      }\n    }\n    else {\n      return {\n        offset: 0,\n        scale: 1\n      };\n    }\n  }\n\n  /**\n   * Start dragging horizontally or vertically\n   * @param {Event} event\n   * @private\n   */\n  _onDragStart(event) {\n    this.deltaDifference = 0;\n    this.previousDelta = 0;\n\n    // only allow dragging when configured as movable\n    if (!this.options.moveable) return;\n\n    // only start dragging when the mouse is inside the current range\n    if (!this._isInsideRange(event)) return;\n\n    // refuse to drag when we where pinching to prevent the timeline make a jump\n    // when releasing the fingers in opposite order from the touch screen\n    if (!this.props.touch.allowDragging) return;\n\n    this.stopRolling();\n\n    this.props.touch.start = this.start;\n    this.props.touch.end = this.end;\n    this.props.touch.dragging = true;\n\n    if (this.body.dom.root) {\n      this.body.dom.root.style.cursor = 'move';\n    }\n  }\n\n  /**\n   * Perform dragging operation\n   * @param {Event} event\n   * @private\n   */\n  _onDrag(event) {\n    if (!event) return;\n\n    if (!this.props.touch.dragging) return;\n\n    // only allow dragging when configured as movable\n    if (!this.options.moveable) return;\n\n    // TODO: this may be redundant in hammerjs2\n    // refuse to drag when we where pinching to prevent the timeline make a jump\n    // when releasing the fingers in opposite order from the touch screen\n    if (!this.props.touch.allowDragging) return;\n\n    const direction = this.options.direction;\n    validateDirection(direction);\n    let delta = (direction == 'horizontal') ? event.deltaX : event.deltaY;\n    delta -= this.deltaDifference;\n    let interval = (this.props.touch.end - this.props.touch.start);\n\n    // normalize dragging speed if cutout is in between.\n    const duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end);\n    interval -= duration;\n\n    const width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height;\n    let diffRange;\n    if (this.options.rtl) {\n      diffRange = delta / width * interval;\n    } else {\n      diffRange = -delta / width * interval;\n    }\n\n    const newStart = this.props.touch.start + diffRange;\n    const newEnd = this.props.touch.end + diffRange;\n\n    // snapping times away from hidden zones\n    const safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true);\n    const safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true);\n    if (safeStart != newStart || safeEnd != newEnd) {\n      this.deltaDifference += delta;\n      this.props.touch.start = safeStart;\n      this.props.touch.end = safeEnd;\n      this._onDrag(event);\n      return;\n    }\n\n    this.previousDelta = delta;\n    this._applyRange(newStart, newEnd);\n\n\n    const startDate = new Date(this.start);\n    const endDate = new Date(this.end);\n\n    // fire a rangechange event\n    this.body.emitter.emit('rangechange', {\n      start: startDate,\n      end:   endDate,\n      byUser: true,\n      event\n    });\n\n    // fire a panmove event\n    this.body.emitter.emit('panmove');\n  }\n\n  /**\n   * Stop dragging operation\n   * @param {event} event\n   * @private\n   */\n  _onDragEnd(event) {\n    if (!this.props.touch.dragging) return;\n\n    // only allow dragging when configured as movable\n    if (!this.options.moveable) return;\n\n    // TODO: this may be redundant in hammerjs2\n    // refuse to drag when we where pinching to prevent the timeline make a jump\n    // when releasing the fingers in opposite order from the touch screen\n    if (!this.props.touch.allowDragging) return;\n\n    this.props.touch.dragging = false;\n    if (this.body.dom.root) {\n      this.body.dom.root.style.cursor = 'auto';\n    }\n\n    // fire a rangechanged event\n    this.body.emitter.emit('rangechanged', {\n      start: new Date(this.start),\n      end:   new Date(this.end),\n      byUser: true,\n      event\n    });\n  }\n\n  /**\n   * Event handler for mouse wheel event, used to zoom\n   * Code from http://adomas.org/javascript-mouse-wheel/\n   * @param {Event} event\n   * @private\n   */\n  _onMouseWheel(event) {\n    // retrieve delta\n    let delta = 0;\n    if (event.wheelDelta) { /* IE/Opera. */\n      delta = event.wheelDelta / 120;\n    } else if (event.detail) { /* Mozilla case. */\n      // In Mozilla, sign of delta is different than in IE.\n      // Also, delta is multiple of 3.\n      delta = -event.detail / 3;\n    } else if (event.deltaY) {\n      delta = -event.deltaY / 3;\n    } \n\n    // don't allow zoom when the according key is pressed and the zoomKey option or not zoomable but movable\n    if ((this.options.zoomKey && !event[this.options.zoomKey] && this.options.zoomable) \n      || (!this.options.zoomable && this.options.moveable)) {\n      return;\n    }\n\n    // only allow zooming when configured as zoomable and moveable\n    if (!(this.options.zoomable && this.options.moveable)) return;\n    \n    // only zoom when the mouse is inside the current range\n    if (!this._isInsideRange(event)) return;\n\n    // If delta is nonzero, handle it.\n    // Basically, delta is now positive if wheel was scrolled up,\n    // and negative, if wheel was scrolled down.\n    if (delta) {\n      // perform the zoom action. Delta is normally 1 or -1\n\n      // adjust a negative delta such that zooming in with delta 0.1\n      // equals zooming out with a delta -0.1\n\n      const zoomFriction = this.options.zoomFriction || 5;\n      let scale;\n      if (delta < 0) {\n        scale = 1 - (delta / zoomFriction);\n      }\n      else {\n        scale = 1 / (1 + (delta / zoomFriction)) ;\n      }\n\n      // calculate center, the date to zoom around\n      let pointerDate;\n      if (this.rolling) {\n        const rollingModeOffset = this.options.rollingMode && this.options.rollingMode.offset || 0.5;\n        pointerDate = this.start + ((this.end - this.start) * rollingModeOffset);\n      } else {\n        const pointer = this.getPointer({x: event.clientX, y: event.clientY}, this.body.dom.center);\n        pointerDate = this._pointerToDate(pointer);\n      }\n      this.zoom(scale, pointerDate, delta, event);\n\n      // Prevent default actions caused by mouse wheel\n      // (else the page and timeline both scroll)\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * Start of a touch gesture\n   * @param {Event} event\n   * @private\n   */\n  _onTouch(event) {  // eslint-disable-line no-unused-vars\n    this.props.touch.start = this.start;\n    this.props.touch.end = this.end;\n    this.props.touch.allowDragging = true;\n    this.props.touch.center = null;\n    this.props.touch.centerDate = null;\n    this.scaleOffset = 0;\n    this.deltaDifference = 0;\n    // Disable the browser default handling of this event.\n    util.preventDefault(event);\n  }\n\n  /**\n   * Handle pinch event\n   * @param {Event} event\n   * @private\n   */\n  _onPinch(event) {\n    // only allow zooming when configured as zoomable and moveable\n    if (!(this.options.zoomable && this.options.moveable)) return;\n\n    // Disable the browser default handling of this event.\n    util.preventDefault(event);\n\n    this.props.touch.allowDragging = false;\n\n    if (!this.props.touch.center) {\n      this.props.touch.center = this.getPointer(event.center, this.body.dom.center);\n      this.props.touch.centerDate = this._pointerToDate(this.props.touch.center);\n    }\n\n    this.stopRolling();\n    const scale = 1 / (event.scale + this.scaleOffset);\n    const centerDate = this.props.touch.centerDate;\n\n    const hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end);\n    const hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.options.moment, this.body.hiddenDates, this, centerDate);\n    const hiddenDurationAfter = hiddenDuration - hiddenDurationBefore;\n\n    // calculate new start and end\n    let newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale;\n    let newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale;\n\n    // snapping times away from hidden zones\n    this.startToFront = 1 - scale <= 0; // used to do the right auto correction with periodic hidden times\n    this.endToFront = scale - 1 <= 0;   // used to do the right auto correction with periodic hidden times\n    \n    const safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true);\n    const safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true);\n    if (safeStart != newStart || safeEnd != newEnd) {\n      this.props.touch.start = safeStart;\n      this.props.touch.end = safeEnd;\n      this.scaleOffset = 1 - event.scale;\n      newStart = safeStart;\n      newEnd = safeEnd;\n    }\n    \n    const options = {\n      animation: false,\n      byUser: true,\n      event\n    };\n    this.setRange(newStart, newEnd, options);\n\n    this.startToFront = false; // revert to default\n    this.endToFront = true; // revert to default\n  }\n\n  /**\n   * Test whether the mouse from a mouse event is inside the visible window,\n   * between the current start and end date\n   * @param {Object} event\n   * @return {boolean} Returns true when inside the visible window\n   * @private\n   */\n  _isInsideRange(event) {\n    // calculate the time where the mouse is, check whether inside\n    // and no scroll action should happen.\n    const clientX = event.center ? event.center.x : event.clientX;\n    const centerContainerRect = this.body.dom.centerContainer.getBoundingClientRect();\n    const x = this.options.rtl ? clientX - centerContainerRect.left : centerContainerRect.right - clientX;\n    const time = this.body.util.toTime(x);\n\n    return time >= this.start && time <= this.end;\n  }\n\n  /**\n   * Helper function to calculate the center date for zooming\n   * @param {{x: number, y: number}} pointer\n   * @return {number} date\n   * @private\n   */\n  _pointerToDate(pointer) {\n    let conversion;\n    const direction = this.options.direction;\n\n    validateDirection(direction);\n\n    if (direction == 'horizontal') {\n      return this.body.util.toTime(pointer.x).valueOf();\n    }\n    else {\n      const height = this.body.domProps.center.height;\n      conversion = this.conversion(height);\n      return pointer.y / conversion.scale + conversion.offset;\n    }\n  }\n\n  /**\n   * Get the pointer location relative to the location of the dom element\n   * @param {{x: number, y: number}} touch\n   * @param {Element} element   HTML DOM element\n   * @return {{x: number, y: number}} pointer\n   * @private\n   */\n  getPointer(touch, element) {\n    const elementRect = element.getBoundingClientRect();\n    if (this.options.rtl) {\n      return {\n        x: elementRect.right - touch.x,\n        y: touch.y - elementRect.top\n      };\n    } else {\n      return {\n        x: touch.x - elementRect.left,\n        y: touch.y - elementRect.top\n      };\n    }\n  }\n\n  /**\n   * Zoom the range the given scale in or out. Start and end date will\n   * be adjusted, and the timeline will be redrawn. You can optionally give a\n   * date around which to zoom.\n   * For example, try scale = 0.9 or 1.1\n   * @param {number} scale      Scaling factor. Values above 1 will zoom out,\n   *                            values below 1 will zoom in.\n   * @param {number} [center]   Value representing a date around which will\n   *                            be zoomed.\n   * @param {number} delta\n   * @param {Event} event\n   */\n  zoom(scale, center, delta, event) {\n    // if centerDate is not provided, take it half between start Date and end Date\n    if (center == null) {\n      center = (this.start + this.end) / 2;\n    }\n\n    const hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end);\n    const hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.options.moment, this.body.hiddenDates, this, center);\n    const hiddenDurationAfter = hiddenDuration - hiddenDurationBefore;\n\n    // calculate new start and end\n    let newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale;\n    let newEnd   = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale;\n\n    // snapping times away from hidden zones\n    this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times\n    this.endToFront = -delta  > 0 ? false : true; // used to do the right autocorrection with periodic hidden times\n    const safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true);\n    const safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true);\n    if (safeStart != newStart || safeEnd != newEnd) {\n      newStart = safeStart;\n      newEnd = safeEnd;\n    }\n\n    const options = {\n      animation: false,\n      byUser: true,\n      event\n    };\n    this.setRange(newStart, newEnd, options);\n\n    this.startToFront = false; // revert to default\n    this.endToFront = true; // revert to default\n  }\n\n  /**\n   * Move the range with a given delta to the left or right. Start and end\n   * value will be adjusted. For example, try delta = 0.1 or -0.1\n   * @param {number}  delta     Moving amount. Positive value will move right,\n   *                            negative value will move left\n   */\n  move(delta) {\n    // zoom start Date and end Date relative to the centerDate\n    const diff = (this.end - this.start);\n\n    // apply new values\n    const newStart = this.start + diff * delta;\n    const newEnd = this.end + diff * delta;\n\n    // TODO: reckon with min and max range\n\n    this.start = newStart;\n    this.end = newEnd;\n  }\n\n  /**\n   * Move the range to a new center point\n   * @param {number} moveTo      New center point of the range\n   */\n  moveTo(moveTo) {\n    const center = (this.start + this.end) / 2;\n\n    const diff = center - moveTo;\n\n    // calculate new start and end\n    const newStart = this.start - diff;\n    const newEnd = this.end - diff;\n\n    const options = {\n      animation: false,\n      byUser: true,\n      event: null\n    };\n    this.setRange(newStart, newEnd, options);\n  }\n\n  /**\n   * Destroy the Range\n   */\n  destroy() {\n    this.stopRolling();\n  }\n}\n\n/**\n * Test whether direction has a valid value\n * @param {string} direction    'horizontal' or 'vertical'\n */\nfunction validateDirection (direction) {\n  if (direction != 'horizontal' && direction != 'vertical') {\n    throw new TypeError(`Unknown direction \"${direction}\". Choose \"horizontal\" or \"vertical\".`);\n  }\n}\n","'use strict';\nrequire('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setInterval;\n","import PropagatingHammer from 'propagating-hammerjs';\nimport Hammer from '@egjs/hammerjs';\n\n/**\n * Setup a mock hammer.js object, for unit testing.\n *\n * Inspiration: https://github.com/uber/deck.gl/pull/658\n *\n * @returns {{on: noop, off: noop, destroy: noop, emit: noop, get: get}}\n */\nfunction hammerMock() {\n  const noop = () => {};\n\n  return {\n    on: noop,\n    off: noop,\n    destroy: noop,\n    emit: noop,\n\n    get(m) {\t//eslint-disable-line no-unused-vars\n      return {\n        set: noop\n      };\n    }\n  };\n}\n\nlet modifiedHammer\n\nif (typeof window !== 'undefined') {\n  const OurHammer = window['Hammer'] || Hammer;\n  modifiedHammer = PropagatingHammer(OurHammer, {\n    preventDefault: 'mouse'\n  });\n} else {\n  modifiedHammer = () => // hammer.js is only available in a browser, not in node.js. Replacing it with a mock object.\n  hammerMock()\n}\n\nexport default modifiedHammer;\n","'use strict';\n\nvar _firstTarget = null; // singleton, will contain the target element where the touch event started\n\n/**\n * Extend an Hammer.js instance with event propagation.\n *\n * Features:\n * - Events emitted by hammer will propagate in order from child to parent\n *   elements.\n * - Events are extended with a function `event.stopPropagation()` to stop\n *   propagation to parent elements.\n * - An option `preventDefault` to stop all default browser behavior.\n *\n * Usage:\n *   var hammer = propagatingHammer(new Hammer(element));\n *   var hammer = propagatingHammer(new Hammer(element), {preventDefault: true});\n *\n * @param {Hammer.Manager} hammer   An hammer instance.\n * @param {Object} [options]        Available options:\n *                                  - `preventDefault: true | false | 'mouse' | 'touch' | 'pen'`.\n *                                    Enforce preventing the default browser behavior.\n *                                    Cannot be set to `false`.\n * @return {Hammer.Manager} Returns the same hammer instance with extended\n *                          functionality\n */\nexport default function propagating(hammer, options) {\n  var _options = options || {\n    preventDefault: false\n  };\n\n  if (hammer.Manager) {\n    // This looks like the Hammer constructor.\n    // Overload the constructors with our own.\n    var Hammer = hammer;\n\n    var PropagatingHammer = function(element, options) {\n      var o = Object.create(_options);\n      if (options) Hammer.assign(o, options);\n      return propagating(new Hammer(element, o), o);\n    };\n    Hammer.assign(PropagatingHammer, Hammer);\n\n    PropagatingHammer.Manager = function (element, options) {\n      var o = Object.create(_options);\n      if (options) Hammer.assign(o, options);\n      return propagating(new Hammer.Manager(element, o), o);\n    };\n\n    return PropagatingHammer;\n  }\n\n  // create a wrapper object which will override the functions\n  // `on`, `off`, `destroy`, and `emit` of the hammer instance\n  var wrapper = Object.create(hammer);\n\n  // attach to DOM element\n  var element = hammer.element;\n\n  if(!element.hammer) element.hammer = [];\n  element.hammer.push(wrapper);\n\n  // register an event to catch the start of a gesture and store the\n  // target in a singleton\n  hammer.on('hammer.input', function (event) {\n    if (_options.preventDefault === true || (_options.preventDefault === event.pointerType)) {\n      event.preventDefault();\n    }\n    if (event.isFirst) {\n      _firstTarget = event.target;\n    }\n  });\n\n  /** @type {Object.<String, Array.<function>>} */\n  wrapper._handlers = {};\n\n  /**\n   * Register a handler for one or multiple events\n   * @param {String} events    A space separated string with events\n   * @param {function} handler A callback function, called as handler(event)\n   * @returns {Hammer.Manager} Returns the hammer instance\n   */\n  wrapper.on = function (events, handler) {\n    // register the handler\n    split(events).forEach(function (event) {\n      var _handlers = wrapper._handlers[event];\n      if (!_handlers) {\n        wrapper._handlers[event] = _handlers = [];\n\n        // register the static, propagated handler\n        hammer.on(event, propagatedHandler);\n      }\n      _handlers.push(handler);\n    });\n\n    return wrapper;\n  };\n\n  /**\n   * Unregister a handler for one or multiple events\n   * @param {String} events      A space separated string with events\n   * @param {function} [handler] Optional. The registered handler. If not\n   *                             provided, all handlers for given events\n   *                             are removed.\n   * @returns {Hammer.Manager}   Returns the hammer instance\n   */\n  wrapper.off = function (events, handler) {\n    // unregister the handler\n    split(events).forEach(function (event) {\n      var _handlers = wrapper._handlers[event];\n      if (_handlers) {\n        _handlers = handler ? _handlers.filter(function (h) {\n          return h !== handler;\n        }) : [];\n\n        if (_handlers.length > 0) {\n          wrapper._handlers[event] = _handlers;\n        }\n        else {\n          // remove static, propagated handler\n          hammer.off(event, propagatedHandler);\n          delete wrapper._handlers[event];\n        }\n      }\n    });\n\n    return wrapper;\n  };\n\n  /**\n   * Emit to the event listeners\n   * @param {string} eventType\n   * @param {Event} event\n   */\n  wrapper.emit = function(eventType, event) {\n    _firstTarget = event.target;\n    hammer.emit(eventType, event);\n  };\n\n  wrapper.destroy = function () {\n    // Detach from DOM element\n    var hammers = hammer.element.hammer;\n    var idx = hammers.indexOf(wrapper);\n    if(idx !== -1) hammers.splice(idx,1);\n    if(!hammers.length) delete hammer.element.hammer;\n\n    // clear all handlers\n    wrapper._handlers = {};\n\n    // call original hammer destroy\n    hammer.destroy();\n  };\n\n  // split a string with space separated words\n  function split(events) {\n    return events.match(/[^ ]+/g);\n  }\n\n  /**\n   * A static event handler, applying event propagation.\n   * @param {Object} event\n   */\n  function propagatedHandler(event) {\n    // let only a single hammer instance handle this event\n    if (event.type !== 'hammer.input') {\n      // it is possible that the same srcEvent is used with multiple hammer events,\n      // we keep track on which events are handled in an object _handled\n      if (!event.srcEvent._handled) {\n        event.srcEvent._handled = {};\n      }\n\n      if (event.srcEvent._handled[event.type]) {\n        return;\n      }\n      else {\n        event.srcEvent._handled[event.type] = true;\n      }\n    }\n\n    // attach a stopPropagation function to the event\n    var stopped = false;\n    event.stopPropagation = function () {\n      stopped = true;\n    };\n\n    //wrap the srcEvent's stopPropagation to also stop hammer propagation:\n    var srcStop = event.srcEvent.stopPropagation.bind(event.srcEvent);\n    if(typeof srcStop == \"function\") {\n      event.srcEvent.stopPropagation = function(){\n        srcStop();\n        event.stopPropagation();\n      };\n    }\n\n    // attach firstTarget property to the event\n    event.firstTarget = _firstTarget;\n\n    // propagate over all elements (until stopped)\n    var elem = _firstTarget;\n    while (elem && !stopped) {\n      var elemHammer = elem.hammer;\n      if(elemHammer){\n        var _handlers;\n        for(var k = 0; k < elemHammer.length; k++){\n          _handlers = elemHammer[k]._handlers[event.type];\n          if(_handlers) for (var i = 0; i < _handlers.length && !stopped; i++) {\n            _handlers[i](event);\n          }\n        }\n      }\n      elem = elem.parentNode;\n    }\n  }\n\n  return wrapper;\n};\n","/**\n * Register a touch event, taking place before a gesture\n * @param {Hammer} hammer       A hammer instance\n * @param {function} callback   Callback, called as callback(event)\n */\nexport function onTouch (hammer, callback) {\n  callback.inputHandler = function (event) {\n    if (event.isFirst) {\n      callback(event);\n    }\n  };\n\n  hammer.on('hammer.input', callback.inputHandler);\n}\n\n/**\n * Register a release event, taking place after a gesture\n * @param {Hammer} hammer       A hammer instance\n * @param {function} callback   Callback, called as callback(event)\n * @returns {*}\n */\nexport function onRelease (hammer, callback) {\n  callback.inputHandler = function (event) {\n    if (event.isFinal) {\n      callback(event);\n    }\n  };\n\n  return hammer.on('hammer.input', callback.inputHandler);\n}\n\n\n/**\n * Unregister a touch event, taking place before a gesture\n * @param {Hammer} hammer       A hammer instance\n * @param {function} callback   Callback, called as callback(event)\n */\nexport function offTouch (hammer, callback) {\n  hammer.off('hammer.input', callback.inputHandler);\n}\n\n/**\n * Unregister a release event, taking place before a gesture\n * @param {Hammer} hammer       A hammer instance\n * @param {function} callback   Callback, called as callback(event)\n */\n\nexport const offRelease = offTouch;\n\n/**\n * Hack the PinchRecognizer such that it doesn't prevent default behavior\n * for vertical panning.\n *\n * Yeah ... this is quite a hack ... see https://github.com/hammerjs/hammer.js/issues/932\n *\n * @param {Hammer.Pinch} pinchRecognizer\n * @return {Hammer.Pinch} returns the pinchRecognizer\n */\nexport function disablePreventDefaultVertically (pinchRecognizer) {\n  const TOUCH_ACTION_PAN_Y = 'pan-y';\n\n  pinchRecognizer.getTouchAction = function() {\n    // default method returns [TOUCH_ACTION_NONE]\n    return [TOUCH_ACTION_PAN_Y];\n  };\n\n  return pinchRecognizer;\n}\n","import moment from '../module/moment';\nimport * as DateUtil  from './DateUtil';\nimport util from '../util';\n\n/**\n * The class TimeStep is an iterator for dates. You provide a start date and an\n * end date. The class itself determines the best scale (step size) based on the\n * provided start Date, end Date, and minimumStep.\n *\n * If minimumStep is provided, the step size is chosen as close as possible\n * to the minimumStep but larger than minimumStep. If minimumStep is not\n * provided, the scale is set to 1 DAY.\n * The minimumStep should correspond with the onscreen size of about 6 characters\n *\n * Alternatively, you can set a scale by hand.\n * After creation, you can initialize the class by executing first(). Then you\n * can iterate from the start date to the end date via next(). You can check if\n * the end date is reached with the function hasNext(). After each step, you can\n * retrieve the current date via getCurrent().\n * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours,\n * days, to years.\n *\n * Version: 1.2\n *\n */\nclass TimeStep {\n  /**\n    * @param {Date} [start]         The start date, for example new Date(2010, 9, 21)\n    *                               or new Date(2010, 9, 21, 23, 45, 00)\n    * @param {Date} [end]           The end date\n    * @param {number} [minimumStep] Optional. Minimum step size in milliseconds\n    * @param {Date|Array.<Date>} [hiddenDates] Optional.\n    * @param {{showMajorLabels: boolean, showWeekScale: boolean}} [options] Optional.\n    * @constructor  TimeStep\n    */\n  constructor(start, end, minimumStep, hiddenDates, options) {\n    this.moment = (options && options.moment) || moment;\n    this.options = options ? options : {};\n\n    // variables\n    this.current = this.moment();\n    this._start = this.moment();\n    this._end = this.moment();\n\n    this.autoScale  = true;\n    this.scale = 'day';\n    this.step = 1;\n\n    // initialize the range\n    this.setRange(start, end, minimumStep);\n\n    // hidden Dates options\n    this.switchedDay = false;\n    this.switchedMonth = false;\n    this.switchedYear = false;\n    if (Array.isArray(hiddenDates)) {\n      this.hiddenDates = hiddenDates;\n    }\n    else if (hiddenDates != undefined) {\n      this.hiddenDates = [hiddenDates];\n    }\n    else {\n      this.hiddenDates = [];\n    }\n\n    this.format = TimeStep.FORMAT; // default formatting\n  }\n\n  /**\n   * Set custom constructor function for moment. Can be used to set dates\n   * to UTC or to set a utcOffset.\n   * @param {function} moment\n   */\n  setMoment(moment) {\n    this.moment = moment;\n\n    // update the date properties, can have a new utcOffset\n    this.current = this.moment(this.current.valueOf());\n    this._start = this.moment(this._start.valueOf());\n    this._end = this.moment(this._end.valueOf());\n  }\n\n  /**\n   * Set custom formatting for the minor an major labels of the TimeStep.\n   * Both `minorLabels` and `majorLabels` are an Object with properties:\n   * 'millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'week', 'month', 'year'.\n   * @param {{minorLabels: Object, majorLabels: Object}} format\n   */\n  setFormat(format) {\n    const defaultFormat = util.deepExtend({}, TimeStep.FORMAT);\n    this.format = util.deepExtend(defaultFormat, format);\n  }\n\n  /**\n   * Set a new range\n   * If minimumStep is provided, the step size is chosen as close as possible\n   * to the minimumStep but larger than minimumStep. If minimumStep is not\n   * provided, the scale is set to 1 DAY.\n   * The minimumStep should correspond with the onscreen size of about 6 characters\n   * @param {Date} [start]      The start date and time.\n   * @param {Date} [end]        The end date and time.\n   * @param {int} [minimumStep] Optional. Minimum step size in milliseconds\n   */\n  setRange(start, end, minimumStep) {\n    if (!(start instanceof Date) || !(end instanceof Date)) {\n      throw  \"No legal start or end date in method setRange\";\n    }\n\n    this._start = (start != undefined) ? this.moment(start.valueOf()) : Date.now();\n    this._end = (end != undefined) ? this.moment(end.valueOf()) : Date.now();\n\n    if (this.autoScale) {\n      this.setMinimumStep(minimumStep);\n    }\n  }\n\n  /**\n   * Set the range iterator to the start date.\n   */\n  start() {\n    this.current = this._start.clone();\n    this.roundToMinor();\n  }\n\n  /**\n   * Round the current date to the first minor date value\n   * This must be executed once when the current date is set to start Date\n   */\n  roundToMinor() {\n    // round to floor\n    // to prevent year & month scales rounding down to the first day of week we perform this separately\n    if (this.scale == 'week') {\n      this.current.weekday(0);\n    }\n    // IMPORTANT: we have no breaks in this switch! (this is no bug)\n    // noinspection FallThroughInSwitchStatementJS\n    switch (this.scale) {\n      case 'year':\n        this.current.year(this.step * Math.floor(this.current.year() / this.step));\n        this.current.month(0);                            // eslint-disable-line no-fallthrough\n      case 'month':        this.current.date(1);          // eslint-disable-line no-fallthrough\n      case 'week':                                        // eslint-disable-line no-fallthrough\n      case 'day':                                         // eslint-disable-line no-fallthrough\n      case 'weekday':      this.current.hours(0);         // eslint-disable-line no-fallthrough\n      case 'hour':         this.current.minutes(0);       // eslint-disable-line no-fallthrough\n      case 'minute':       this.current.seconds(0);       // eslint-disable-line no-fallthrough\n      case 'second':       this.current.milliseconds(0);  // eslint-disable-line no-fallthrough\n      //case 'millisecond': // nothing to do for milliseconds\n    }\n\n    if (this.step != 1) {\n      // round down to the first minor value that is a multiple of the current step size\n      let  priorCurrent = this.current.clone();\n      switch (this.scale) {        \n        case 'millisecond':  this.current.subtract(this.current.milliseconds() % this.step, 'milliseconds');  break;\n        case 'second':       this.current.subtract(this.current.seconds() % this.step, 'seconds'); break;\n        case 'minute':       this.current.subtract(this.current.minutes() % this.step, 'minutes'); break;\n        case 'hour':         this.current.subtract(this.current.hours() % this.step, 'hours'); break;\n        case 'weekday':      // intentional fall through\n        case 'day':          this.current.subtract((this.current.date() - 1) % this.step, 'day'); break;\n        case 'week':         this.current.subtract(this.current.week() % this.step, 'week'); break;\n        case 'month':        this.current.subtract(this.current.month() % this.step, 'month');  break;\n        case 'year':         this.current.subtract(this.current.year() % this.step, 'year'); break;\n        default: break;\n      }\n      if (!priorCurrent.isSame(this.current)) {\n          this.current = this.moment(DateUtil.snapAwayFromHidden(this.hiddenDates, this.current.valueOf(), -1, true));\n      }\n    }\n  }\n\n  /**\n   * Check if the there is a next step\n   * @return {boolean}  true if the current date has not passed the end date\n   */\n  hasNext() {\n    return (this.current.valueOf() <= this._end.valueOf());\n  }\n\n  /**\n   * Do the next step\n   */\n  next() {\n    const prev = this.current.valueOf();\n\n    // Two cases, needed to prevent issues with switching daylight savings\n    // (end of March and end of October)\n    switch (this.scale) {\n      case 'millisecond':  this.current.add(this.step, 'millisecond'); break;\n      case 'second':       this.current.add(this.step, 'second'); break;\n      case 'minute':       this.current.add(this.step, 'minute'); break;\n      case 'hour':\n        this.current.add(this.step, 'hour');\n\n        if (this.current.month() < 6) {\n          this.current.subtract(this.current.hours() % this.step, 'hour');\n        } else {\n          if (this.current.hours() % this.step !== 0) {\n            this.current.add(this.step - this.current.hours() % this.step, 'hour');\n          }\n        }\n        break;\n      case 'weekday':      // intentional fall through\n      case 'day':          this.current.add(this.step, 'day'); break;\n      case 'week':\n        if (this.current.weekday() !== 0){ // we had a month break not correlating with a week's start before\n          this.current.weekday(0); // switch back to week cycles\n          this.current.add(this.step, 'week');\n        } else if(this.options.showMajorLabels === false) {\n          this.current.add(this.step, 'week'); // the default case\n        } else { // first day of the week\n          const nextWeek = this.current.clone();\n          nextWeek.add(1, 'week');\n          if(nextWeek.isSame(this.current, 'month')){ // is the first day of the next week in the same month?\n            this.current.add(this.step, 'week'); // the default case\n          } else { // inject a step at each first day of the month\n            this.current.add(this.step, 'week');\n            this.current.date(1);\n          }\n        }\n        break;\n      case 'month':        this.current.add(this.step, 'month'); break;\n      case 'year':         this.current.add(this.step, 'year'); break;\n      default: break;\n    }\n\n    if (this.step != 1) {\n      // round down to the correct major value\n      switch (this.scale) {\n        case 'millisecond':  if(this.current.milliseconds() > 0 && this.current.milliseconds() < this.step) this.current.milliseconds(0);  break;\n        case 'second':       if(this.current.seconds() > 0 && this.current.seconds() < this.step) this.current.seconds(0);  break;\n        case 'minute':       if(this.current.minutes() > 0 && this.current.minutes() < this.step) this.current.minutes(0); break;\n        case 'hour':         if(this.current.hours() > 0 && this.current.hours() < this.step) this.current.hours(0);  break;\n        case 'weekday':      // intentional fall through\n        case 'day':          if(this.current.date() < this.step+1) this.current.date(1); break;\n        case 'week':         if(this.current.week() < this.step) this.current.week(1); break; // week numbering starts at 1, not 0\n        case 'month':        if(this.current.month() < this.step) this.current.month(0);  break;\n        case 'year':         break; // nothing to do for year\n        default:             break;\n      }\n    }\n\n    // safety mechanism: if current time is still unchanged, move to the end\n    if (this.current.valueOf() == prev) {\n      this.current = this._end.clone();\n    }\n\n    // Reset switches for year, month and day. Will get set to true where appropriate in DateUtil.stepOverHiddenDates\n    this.switchedDay = false;\n    this.switchedMonth = false;\n    this.switchedYear = false;\n\n    DateUtil.stepOverHiddenDates(this.moment, this, prev);\n  }\n\n  /**\n   * Get the current datetime\n   * @return {Moment}  current The current date\n   */\n  getCurrent() {\n    return this.current.clone();\n  }\n\n  /**\n   * Set a custom scale. Autoscaling will be disabled.\n   * For example setScale('minute', 5) will result\n   * in minor steps of 5 minutes, and major steps of an hour.\n   *\n   * @param {{scale: string, step: number}} params\n   *                               An object containing two properties:\n   *                               - A string 'scale'. Choose from 'millisecond', 'second',\n   *                                 'minute', 'hour', 'weekday', 'day', 'week', 'month', 'year'.\n   *                               - A number 'step'. A step size, by default 1.\n   *                                 Choose for example 1, 2, 5, or 10.\n   */\n  setScale(params) {\n    if (params && typeof params.scale == 'string') {\n      this.scale = params.scale;\n      this.step = params.step > 0 ? params.step : 1;\n      this.autoScale = false;\n    }\n  }\n\n  /**\n   * Enable or disable autoscaling\n   * @param {boolean} enable  If true, autoascaling is set true\n   */\n  setAutoScale(enable) {\n    this.autoScale = enable;\n  }\n\n  /**\n   * Automatically determine the scale that bests fits the provided minimum step\n   * @param {number} [minimumStep]  The minimum step size in milliseconds\n   */\n  setMinimumStep(minimumStep) {\n    if (minimumStep == undefined) {\n      return;\n    }\n\n    //var b = asc + ds;\n\n    const stepYear       = (1000 * 60 * 60 * 24 * 30 * 12);\n    const stepMonth      = (1000 * 60 * 60 * 24 * 30);\n    const stepDay        = (1000 * 60 * 60 * 24);\n    const stepHour       = (1000 * 60 * 60);\n    const stepMinute     = (1000 * 60);\n    const stepSecond     = (1000);\n    const stepMillisecond= (1);\n\n    // find the smallest step that is larger than the provided minimumStep\n    if (stepYear*1000 > minimumStep)        {this.scale = 'year';        this.step = 1000;}\n    if (stepYear*500 > minimumStep)         {this.scale = 'year';        this.step = 500;}\n    if (stepYear*100 > minimumStep)         {this.scale = 'year';        this.step = 100;}\n    if (stepYear*50 > minimumStep)          {this.scale = 'year';        this.step = 50;}\n    if (stepYear*10 > minimumStep)          {this.scale = 'year';        this.step = 10;}\n    if (stepYear*5 > minimumStep)           {this.scale = 'year';        this.step = 5;}\n    if (stepYear > minimumStep)             {this.scale = 'year';        this.step = 1;}\n    if (stepMonth*3 > minimumStep)          {this.scale = 'month';       this.step = 3;}\n    if (stepMonth > minimumStep)            {this.scale = 'month';       this.step = 1;}\n    if (stepDay*7 > minimumStep && this.options.showWeekScale)            {this.scale = 'week';        this.step = 1;}\n    if (stepDay*2 > minimumStep)            {this.scale = 'day';         this.step = 2;}\n    if (stepDay > minimumStep)              {this.scale = 'day';         this.step = 1;}\n    if (stepDay/2 > minimumStep)            {this.scale = 'weekday';     this.step = 1;}\n    if (stepHour*4 > minimumStep)           {this.scale = 'hour';        this.step = 4;}\n    if (stepHour > minimumStep)             {this.scale = 'hour';        this.step = 1;}\n    if (stepMinute*15 > minimumStep)        {this.scale = 'minute';      this.step = 15;}\n    if (stepMinute*10 > minimumStep)        {this.scale = 'minute';      this.step = 10;}\n    if (stepMinute*5 > minimumStep)         {this.scale = 'minute';      this.step = 5;}\n    if (stepMinute > minimumStep)           {this.scale = 'minute';      this.step = 1;}\n    if (stepSecond*15 > minimumStep)        {this.scale = 'second';      this.step = 15;}\n    if (stepSecond*10 > minimumStep)        {this.scale = 'second';      this.step = 10;}\n    if (stepSecond*5 > minimumStep)         {this.scale = 'second';      this.step = 5;}\n    if (stepSecond > minimumStep)           {this.scale = 'second';      this.step = 1;}\n    if (stepMillisecond*200 > minimumStep)  {this.scale = 'millisecond'; this.step = 200;}\n    if (stepMillisecond*100 > minimumStep)  {this.scale = 'millisecond'; this.step = 100;}\n    if (stepMillisecond*50 > minimumStep)   {this.scale = 'millisecond'; this.step = 50;}\n    if (stepMillisecond*10 > minimumStep)   {this.scale = 'millisecond'; this.step = 10;}\n    if (stepMillisecond*5 > minimumStep)    {this.scale = 'millisecond'; this.step = 5;}\n    if (stepMillisecond > minimumStep)      {this.scale = 'millisecond'; this.step = 1;}\n  }\n\n  /**\n   * Snap a date to a rounded value.\n   * The snap intervals are dependent on the current scale and step.\n   * Static function\n   * @param {Date} date    the date to be snapped.\n   * @param {string} scale Current scale, can be 'millisecond', 'second',\n   *                       'minute', 'hour', 'weekday, 'day', 'week', 'month', 'year'.\n   * @param {number} step  Current step (1, 2, 4, 5, ...\n   * @return {Date} snappedDate\n   */\n  static snap(date, scale, step) {\n    const clone = moment(date);\n\n    if (scale == 'year') {\n      const year = clone.year() + Math.round(clone.month() / 12);\n      clone.year(Math.round(year / step) * step);\n      clone.month(0);\n      clone.date(0);\n      clone.hours(0);\n      clone.minutes(0);\n      clone.seconds(0);\n      clone.milliseconds(0);\n    }\n    else if (scale == 'month') {\n      if (clone.date() > 15) {\n        clone.date(1);\n        clone.add(1, 'month');\n        // important: first set Date to 1, after that change the month.\n      }\n      else {\n        clone.date(1);\n      }\n\n      clone.hours(0);\n      clone.minutes(0);\n      clone.seconds(0);\n      clone.milliseconds(0);\n    }\n    else if (scale == 'week') {\n        if (clone.weekday() > 2) { // doing it the momentjs locale aware way\n            clone.weekday(0);\n            clone.add(1, 'week');\n        }\n        else {\n            clone.weekday(0);\n        }\n\n        clone.hours(0);\n        clone.minutes(0);\n        clone.seconds(0);\n        clone.milliseconds(0);\n    }\n    else if (scale == 'day') {\n      //noinspection FallthroughInSwitchStatementJS\n      switch (step) {\n        case 5:\n        case 2:\n          clone.hours(Math.round(clone.hours() / 24) * 24); break;\n        default:\n          clone.hours(Math.round(clone.hours() / 12) * 12); break;\n      }\n      clone.minutes(0);\n      clone.seconds(0);\n      clone.milliseconds(0);\n    }\n    else if (scale == 'weekday') {\n      //noinspection FallthroughInSwitchStatementJS\n      switch (step) {\n        case 5:\n        case 2:\n          clone.hours(Math.round(clone.hours() / 12) * 12); break;\n        default:\n          clone.hours(Math.round(clone.hours() / 6) * 6); break;\n      }\n      clone.minutes(0);\n      clone.seconds(0);\n      clone.milliseconds(0);\n    }\n    else if (scale == 'hour') {\n      switch (step) {\n        case 4:\n          clone.minutes(Math.round(clone.minutes() / 60) * 60); break;\n        default:\n          clone.minutes(Math.round(clone.minutes() / 30) * 30); break;\n      }\n      clone.seconds(0);\n      clone.milliseconds(0);\n    } else if (scale == 'minute') {\n      //noinspection FallthroughInSwitchStatementJS\n      switch (step) {\n        case 15:\n        case 10:\n          clone.minutes(Math.round(clone.minutes() / 5) * 5);\n          clone.seconds(0);\n          break;\n        case 5:\n          clone.seconds(Math.round(clone.seconds() / 60) * 60); break;\n        default:\n          clone.seconds(Math.round(clone.seconds() / 30) * 30); break;\n      }\n      clone.milliseconds(0);\n    }\n    else if (scale == 'second') {\n      //noinspection FallthroughInSwitchStatementJS\n      switch (step) {\n        case 15:\n        case 10:\n          clone.seconds(Math.round(clone.seconds() / 5) * 5);\n          clone.milliseconds(0);\n          break;\n        case 5:\n          clone.milliseconds(Math.round(clone.milliseconds() / 1000) * 1000); break;\n        default:\n          clone.milliseconds(Math.round(clone.milliseconds() / 500) * 500); break;\n      }\n    }\n    else if (scale == 'millisecond') {\n      const _step = step > 5 ? step / 2 : 1;\n      clone.milliseconds(Math.round(clone.milliseconds() / _step) * _step);\n    }\n\n    return clone;\n  }\n\n  /**\n   * Check if the current value is a major value (for example when the step\n   * is DAY, a major value is each first day of the MONTH)\n   * @return {boolean} true if current date is major, else false.\n   */\n  isMajor() {\n    if (this.switchedYear == true) {\n      switch (this.scale) {\n        case 'year':\n        case 'month':\n        case 'week':\n        case 'weekday':\n        case 'day':\n        case 'hour':\n        case 'minute':\n        case 'second':\n        case 'millisecond':\n          return true;\n        default:\n          return false;\n      }\n    }\n    else if (this.switchedMonth == true) {\n      switch (this.scale) {\n        case 'week':\n        case 'weekday':\n        case 'day':\n        case 'hour':\n        case 'minute':\n        case 'second':\n        case 'millisecond':\n          return true;\n        default:\n          return false;\n      }\n    }\n    else if (this.switchedDay == true) {\n      switch (this.scale) {\n        case 'millisecond':\n        case 'second':\n        case 'minute':\n        case 'hour':\n          return true;\n        default:\n          return false;\n      }\n    }\n\n    const date = this.moment(this.current);\n    switch (this.scale) {\n      case 'millisecond':\n        return (date.milliseconds() == 0);\n      case 'second':\n        return (date.seconds() == 0);\n      case 'minute':\n        return (date.hours() == 0) && (date.minutes() == 0);\n      case 'hour':\n        return (date.hours() == 0);\n      case 'weekday': // intentional fall through\n      case 'day':\n        return this.options.showWeekScale ? (date.isoWeekday() == 1) : (date.date() == 1);\n      case 'week':\n        return (date.date() == 1);\n      case 'month':\n        return (date.month() == 0);\n      case 'year':\n        return false;\n      default:\n        return false;\n    }\n  }\n\n  /**\n   * Returns formatted text for the minor axislabel, depending on the current\n   * date and the scale. For example when scale is MINUTE, the current time is\n   * formatted as \"hh:mm\".\n   * @param {Date} [date=this.current] custom date. if not provided, current date is taken\n   * @returns {String}\n   */\n  getLabelMinor(date) {\n    if (date == undefined) {\n      date = this.current;\n    }\n    if (date instanceof Date) {\n      date = this.moment(date)\n    }\n\n    if (typeof(this.format.minorLabels) === \"function\") {\n      return this.format.minorLabels(date, this.scale, this.step);\n    }\n\n    const format = this.format.minorLabels[this.scale];\n    // noinspection FallThroughInSwitchStatementJS\n    switch (this.scale) {\n      case 'week':\n        // Don't draw the minor label if this date is the first day of a month AND if it's NOT the start of the week.\n        // The 'date' variable may actually be the 'next' step when called from TimeAxis' _repaintLabels.\n        if(date.date() === 1 && date.weekday() !== 0){\n            return \"\";\n        }\n      default: // eslint-disable-line no-fallthrough\n        return (format && format.length > 0) ? this.moment(date).format(format) : '';\n    }\n  }\n\n  /**\n   * Returns formatted text for the major axis label, depending on the current\n   * date and the scale. For example when scale is MINUTE, the major scale is\n   * hours, and the hour will be formatted as \"hh\".\n   * @param {Date} [date=this.current] custom date. if not provided, current date is taken\n   * @returns {String}\n   */\n  getLabelMajor(date) {\n    if (date == undefined) {\n      date = this.current;\n    }\n    if (date instanceof Date) {\n      date = this.moment(date)\n    }\n\n    if (typeof(this.format.majorLabels) === \"function\") {\n      return this.format.majorLabels(date, this.scale, this.step);\n    }\n\n    const format = this.format.majorLabels[this.scale];\n    return (format && format.length > 0) ? this.moment(date).format(format) : '';\n  }\n\n  /**\n   * get class name\n   * @return {string} class name\n   */\n  getClassName() {\n    const _moment = this.moment;\n    const m = this.moment(this.current);\n    const current = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function\n    const step = this.step;\n    const classNames = [];\n\n    /**\n     *\n     * @param {number} value\n     * @returns {String}\n     */\n    function even(value) {\n      return (value / step % 2 == 0) ? ' vis-even' : ' vis-odd';\n    }\n\n    /**\n     *\n     * @param {Date} date\n     * @returns {String}\n     */\n    function today(date) {\n      if (date.isSame(Date.now(), 'day')) {\n        return ' vis-today';\n      }\n      if (date.isSame(_moment().add(1, 'day'), 'day')) {\n        return ' vis-tomorrow';\n      }\n      if (date.isSame(_moment().add(-1, 'day'), 'day')) {\n        return ' vis-yesterday';\n      }\n      return '';\n    }\n\n    /**\n     *\n     * @param {Date} date\n     * @returns {String}\n     */\n    function currentWeek(date) {\n      return date.isSame(Date.now(), 'week') ? ' vis-current-week' : '';\n    }\n\n    /**\n     *\n     * @param {Date} date\n     * @returns {String}\n     */\n    function currentMonth(date) {\n      return date.isSame(Date.now(), 'month') ? ' vis-current-month' : '';\n    }\n\n    /**\n     *\n     * @param {Date} date\n     * @returns {String}\n     */\n    function currentYear(date) {\n      return date.isSame(Date.now(), 'year') ? ' vis-current-year' : '';\n    }\n\n    switch (this.scale) {\n      case 'millisecond':\n        classNames.push(today(current));\n        classNames.push(even(current.milliseconds()));\n        break;\n      case 'second':\n        classNames.push(today(current));\n        classNames.push(even(current.seconds()));\n        break;\n      case 'minute':\n        classNames.push(today(current));\n        classNames.push(even(current.minutes()));\n        break;\n      case 'hour':\n        classNames.push(`vis-h${current.hours()}${this.step == 4 ? '-h' + (current.hours() + 4) : ''}`);\n        classNames.push(today(current));\n        classNames.push(even(current.hours()));\n        break;\n      case 'weekday':\n        classNames.push(`vis-${current.format('dddd').toLowerCase()}`);\n        classNames.push(today(current));\n        classNames.push(currentWeek(current));\n        classNames.push(even(current.date()));\n        break;\n      case 'day':\n        classNames.push(`vis-day${current.date()}`);\n        classNames.push(`vis-${current.format('MMMM').toLowerCase()}`);\n        classNames.push(today(current));\n        classNames.push(currentMonth(current));\n        classNames.push(this.step <= 2 ? today(current) : '');\n        classNames.push(this.step <= 2 ? `vis-${current.format('dddd').toLowerCase()}` : '');\n        classNames.push(even(current.date() - 1));\n        break;\n      case 'week':\n        classNames.push(`vis-week${current.format('w')}`);\n        classNames.push(currentWeek(current));\n        classNames.push(even(current.week()));\n        break;\n      case 'month':\n        classNames.push(`vis-${current.format('MMMM').toLowerCase()}`);\n        classNames.push(currentMonth(current));\n        classNames.push(even(current.month()));\n        break;\n      case 'year':\n        classNames.push(`vis-year${current.year()}`);\n        classNames.push(currentYear(current));\n        classNames.push(even(current.year()));\n        break;\n    }\n    return classNames.filter(String).join(\" \");\n  }\n}\n\n// Time formatting\nTimeStep.FORMAT = {\n  minorLabels: {\n    millisecond:'SSS',\n    second:     's',\n    minute:     'HH:mm',\n    hour:       'HH:mm',\n    weekday:    'ddd D',\n    day:        'D',\n    week:       'w',\n    month:      'MMM',\n    year:       'YYYY'\n  },\n  majorLabels: {\n    millisecond:'HH:mm:ss',\n    second:     'D MMMM HH:mm',\n    minute:     'ddd D MMMM',\n    hour:       'ddd D MMMM',\n    weekday:    'MMMM YYYY',\n    day:        'MMMM YYYY',\n    week:       'MMMM YYYY',\n    month:      'YYYY',\n    year:       ''\n  }\n};\n\nexport default TimeStep;\n","import util from '../../util';\nimport Component from'./Component';\nimport TimeStep from '../TimeStep';\nimport * as DateUtil  from '../DateUtil';\nimport moment from '../../module/moment';\n\nimport './css/timeaxis.css';\n\n/** A horizontal time axis */\nclass TimeAxis extends Component {\n/**\n * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body\n * @param {Object} [options]        See TimeAxis.setOptions for the available\n *                                  options.\n * @constructor TimeAxis\n * @extends Component\n */\n  constructor(body, options) {\n    super();\n    this.dom = {\n      foreground: null,\n      lines: [],\n      majorTexts: [],\n      minorTexts: [],\n      redundant: {\n        lines: [],\n        majorTexts: [],\n        minorTexts: []\n      }\n    };\n    this.props = {\n      range: {\n        start: 0,\n        end: 0,\n        minimumStep: 0\n      },\n      lineTop: 0\n    };\n\n    this.defaultOptions = {\n      orientation: {\n        axis: 'bottom'\n      },  // axis orientation: 'top' or 'bottom'\n      showMinorLabels: true,\n      showMajorLabels: true,\n      showWeekScale: false,\n      maxMinorChars: 7,\n      format: util.extend({}, TimeStep.FORMAT),\n      moment,\n      timeAxis: null\n    };\n    this.options = util.extend({}, this.defaultOptions);\n\n    this.body = body;\n\n    // create the HTML DOM\n    this._create();\n\n    this.setOptions(options);\n  }\n\n  /**\n   * Set options for the TimeAxis.\n   * Parameters will be merged in current options.\n   * @param {Object} options  Available options:\n   *                          {string} [orientation.axis]\n   *                          {boolean} [showMinorLabels]\n   *                          {boolean} [showMajorLabels]\n   *                          {boolean} [showWeekScale]\n   */\n  setOptions(options) {\n    if (options) {\n      // copy all options that we know\n      util.selectiveExtend([\n        'showMinorLabels',\n        'showMajorLabels',\n        'showWeekScale',\n        'maxMinorChars',\n        'hiddenDates',\n        'timeAxis',\n        'moment',\n        'rtl'\n      ], this.options, options);\n\n      // deep copy the format options\n      util.selectiveDeepExtend(['format'], this.options, options);\n\n      if ('orientation' in options) {\n        if (typeof options.orientation === 'string') {\n          this.options.orientation.axis = options.orientation;\n        }\n        else if (typeof options.orientation === 'object' && 'axis' in options.orientation) {\n          this.options.orientation.axis = options.orientation.axis;\n        }\n      }\n\n      // apply locale to moment.js\n      // TODO: not so nice, this is applied globally to moment.js\n      if ('locale' in options) {\n        if (typeof moment.locale === 'function') {\n          // moment.js 2.8.1+\n          moment.locale(options.locale);\n        }\n        else {\n          moment.lang(options.locale);\n        }\n      }\n    }\n  }\n\n  /**\n   * Create the HTML DOM for the TimeAxis\n   */\n  _create() {\n    this.dom.foreground = document.createElement('div');\n    this.dom.background = document.createElement('div');\n\n    this.dom.foreground.className = 'vis-time-axis vis-foreground';\n    this.dom.background.className = 'vis-time-axis vis-background';\n  }\n\n  /**\n   * Destroy the TimeAxis\n   */\n  destroy() {\n    // remove from DOM\n    if (this.dom.foreground.parentNode) {\n      this.dom.foreground.parentNode.removeChild(this.dom.foreground);\n    }\n    if (this.dom.background.parentNode) {\n      this.dom.background.parentNode.removeChild(this.dom.background);\n    }\n\n    this.body = null;\n  }\n\n  /**\n   * Repaint the component\n   * @return {boolean} Returns true if the component is resized\n   */\n  redraw() {\n    const props = this.props;\n    const foreground = this.dom.foreground;\n    const background = this.dom.background;\n\n    // determine the correct parent DOM element (depending on option orientation)\n    const parent = (this.options.orientation.axis == 'top') ? this.body.dom.top : this.body.dom.bottom;\n    const parentChanged = (foreground.parentNode !== parent);\n\n    // calculate character width and height\n    this._calculateCharSize();\n\n    // TODO: recalculate sizes only needed when parent is resized or options is changed\n    const showMinorLabels = this.options.showMinorLabels && this.options.orientation.axis !== 'none';\n    const showMajorLabels = this.options.showMajorLabels && this.options.orientation.axis !== 'none';\n\n    // determine the width and height of the elemens for the axis\n    props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0;\n    props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0;\n    props.height = props.minorLabelHeight + props.majorLabelHeight;\n    props.width = foreground.offsetWidth;\n\n    props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight -\n        (this.options.orientation.axis == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height);\n    props.minorLineWidth = 1; // TODO: really calculate width\n    props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight;\n    props.majorLineWidth = 1; // TODO: really calculate width\n\n    //  take foreground and background offline while updating (is almost twice as fast)\n    const foregroundNextSibling = foreground.nextSibling;\n    const backgroundNextSibling = background.nextSibling;\n    foreground.parentNode && foreground.parentNode.removeChild(foreground);\n    background.parentNode && background.parentNode.removeChild(background);\n\n    foreground.style.height = `${this.props.height}px`;\n\n    this._repaintLabels();\n\n    // put DOM online again (at the same place)\n    if (foregroundNextSibling) {\n      parent.insertBefore(foreground, foregroundNextSibling);\n    }\n    else {\n      parent.appendChild(foreground)\n    }\n    if (backgroundNextSibling) {\n      this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling);\n    }\n    else {\n      this.body.dom.backgroundVertical.appendChild(background)\n    }\n    return this._isResized() || parentChanged;\n  }\n\n  /**\n   * Repaint major and minor text labels and vertical grid lines\n   * @private\n   */\n  _repaintLabels() {\n    const orientation = this.options.orientation.axis;\n\n    // calculate range and step (step such that we have space for 7 characters per label)\n    const start = util.convert(this.body.range.start, 'Number');\n    const end = util.convert(this.body.range.end, 'Number');\n    const timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * this.options.maxMinorChars).valueOf();\n    let minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.options.moment, this.body.hiddenDates, this.body.range, timeLabelsize);\n    minimumStep -= this.body.util.toTime(0).valueOf();\n\n    const step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates, this.options);\n    step.setMoment(this.options.moment);\n    if (this.options.format) {\n      step.setFormat(this.options.format);\n    }\n    if (this.options.timeAxis) {\n      step.setScale(this.options.timeAxis);\n    }\n    this.step = step;\n\n    // Move all DOM elements to a \"redundant\" list, where they\n    // can be picked for re-use, and clear the lists with lines and texts.\n    // At the end of the function _repaintLabels, left over elements will be cleaned up\n    const dom = this.dom;\n    dom.redundant.lines = dom.lines;\n    dom.redundant.majorTexts = dom.majorTexts;\n    dom.redundant.minorTexts = dom.minorTexts;\n    dom.lines = [];\n    dom.majorTexts = [];\n    dom.minorTexts = [];\n\n    let current;\n    let next;\n    let x;\n    let xNext;\n    let isMajor;\n    let showMinorGrid;\n    let width = 0;\n    let prevWidth;\n    let line;\n    let xFirstMajorLabel = undefined;\n    let count = 0;\n    const MAX = 1000;\n    let className;\n\n    step.start();\n    next = step.getCurrent();\n    xNext = this.body.util.toScreen(next);\n    while (step.hasNext() && count < MAX) {\n      count++;\n\n      isMajor = step.isMajor();\n      className = step.getClassName();\n\n      current = next;\n      x = xNext;\n\n      step.next();\n      next = step.getCurrent();\n      xNext = this.body.util.toScreen(next);\n\n      prevWidth = width;\n      width = xNext - x;\n      switch (step.scale) {\n        case 'week':         showMinorGrid = true; break;\n        default:             showMinorGrid = (width >= prevWidth * 0.4); break; // prevent displaying of the 31th of the month on a scale of 5 days\n      }\n\n      if (this.options.showMinorLabels && showMinorGrid) {\n        var label = this._repaintMinorText(x, step.getLabelMinor(current), orientation, className);\n        label.style.width = `${width}px`; // set width to prevent overflow\n      }\n\n      if (isMajor && this.options.showMajorLabels) {\n        if (x > 0) {\n          if (xFirstMajorLabel == undefined) {\n            xFirstMajorLabel = x;\n          }\n          label = this._repaintMajorText(x, step.getLabelMajor(current), orientation, className);\n        }\n        line = this._repaintMajorLine(x, width, orientation, className);\n      }\n      else { // minor line\n        if (showMinorGrid) {\n          line = this._repaintMinorLine(x, width, orientation, className);\n        }\n        else {\n          if (line) {\n            // adjust the width of the previous grid\n            line.style.width = `${parseInt(line.style.width) + width}px`;\n          }\n        }\n      }\n    }\n\n    if (count === MAX && !warnedForOverflow) {\n        console.warn(`Something is wrong with the Timeline scale. Limited drawing of grid lines to ${MAX} lines.`);\n        warnedForOverflow = true;\n    }\n\n    // create a major label on the left when needed\n    if (this.options.showMajorLabels) {\n      const leftTime = this.body.util.toTime(0); // upper bound estimation\n      const leftText = step.getLabelMajor(leftTime);\n      const widthText = leftText.length * (this.props.majorCharWidth || 10) + 10;\n\n      if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) {\n        this._repaintMajorText(0, leftText, orientation, className);\n      }\n    }\n\n    // Cleanup leftover DOM elements from the redundant list\n    util.forEach(this.dom.redundant, arr => {\n      while (arr.length) {\n        const elem = arr.pop();\n        if (elem && elem.parentNode) {\n          elem.parentNode.removeChild(elem);\n        }\n      }\n    });\n  }\n\n  /**\n   * Create a minor label for the axis at position x\n   * @param {number} x\n   * @param {string} text\n   * @param {string} orientation   \"top\" or \"bottom\" (default)\n   * @param {string} className\n   * @return {Element} Returns the HTML element of the created label\n   * @private\n   */\n  _repaintMinorText(x, text, orientation, className) {\n    // reuse redundant label\n    let label = this.dom.redundant.minorTexts.shift();\n\n    if (!label) {\n      // create new label\n      const content = document.createTextNode('');\n      label = document.createElement('div');\n      label.appendChild(content);\n      this.dom.foreground.appendChild(label);\n    }\n    this.dom.minorTexts.push(label);\n    label.innerHTML = util.xss(text);\n\n\n    let y = (orientation == 'top') ? this.props.majorLabelHeight : 0;\n    this._setXY(label, x, y);\n\n    label.className = `vis-text vis-minor ${className}`;\n    //label.title = title;  // TODO: this is a heavy operation\n\n    return label;\n  }\n\n  /**\n   * Create a Major label for the axis at position x\n   * @param {number} x\n   * @param {string} text\n   * @param {string} orientation   \"top\" or \"bottom\" (default)\n   * @param {string} className\n   * @return {Element} Returns the HTML element of the created label\n   * @private\n   */\n  _repaintMajorText(x, text, orientation, className) {\n    // reuse redundant label\n    let label = this.dom.redundant.majorTexts.shift();\n\n    if (!label) {\n      // create label\n      const content = document.createElement('div');\n      label = document.createElement('div');\n      label.appendChild(content);\n      this.dom.foreground.appendChild(label);\n    }\n\n    label.childNodes[0].innerHTML = util.xss(text);\n    label.className = `vis-text vis-major ${className}`;\n    //label.title = title; // TODO: this is a heavy operation\n\n    let y = (orientation == 'top') ? 0 : this.props.minorLabelHeight;\n    this._setXY(label, x, y);\n\n    this.dom.majorTexts.push(label);\n    return label;\n  }\n\n  /**\n   * sets xy\n   * @param {string} label\n   * @param {number} x\n   * @param {number} y\n   * @private\n   */\n  _setXY(label, x, y) {\n    // If rtl is true, inverse x.\n    const directionX = this.options.rtl ? (x * -1) : x;\n    label.style.transform = `translate(${directionX}px, ${y}px)`;\n  }\n\n  /**\n   * Create a minor line for the axis at position x\n   * @param {number} left\n   * @param {number} width\n   * @param {string} orientation   \"top\" or \"bottom\" (default)\n   * @param {string} className\n   * @return {Element} Returns the created line\n   * @private\n   */\n  _repaintMinorLine(left, width, orientation, className) {\n    // reuse redundant line\n    let line = this.dom.redundant.lines.shift();\n    if (!line) {\n      // create vertical line\n      line = document.createElement('div');\n      this.dom.background.appendChild(line);\n    }\n    this.dom.lines.push(line);\n\n    const props = this.props;\n    \n    line.style.width = `${width}px`;\n    line.style.height = `${props.minorLineHeight}px`;\n\n    let y = (orientation == 'top') ? props.majorLabelHeight : this.body.domProps.top.height;\n    let x = left - props.minorLineWidth / 2;\n\n    this._setXY(line, x, y);\n    line.className = `vis-grid ${this.options.rtl ?  'vis-vertical-rtl' : 'vis-vertical'} vis-minor ${className}`;\n\n    return line;\n  }\n\n  /**\n   * Create a Major line for the axis at position x\n   * @param {number} left\n   * @param {number} width\n   * @param {string} orientation   \"top\" or \"bottom\" (default)\n   * @param {string} className\n   * @return {Element} Returns the created line\n   * @private\n   */\n  _repaintMajorLine(left, width, orientation, className) {\n    // reuse redundant line\n    let line = this.dom.redundant.lines.shift();\n    if (!line) {\n      // create vertical line\n      line = document.createElement('div');\n      this.dom.background.appendChild(line);\n    }\n    this.dom.lines.push(line);\n\n    const props = this.props;\n    \n    line.style.width = `${width}px`;\n    line.style.height = `${props.majorLineHeight}px`;\n\n    let y = (orientation == 'top') ? 0 : this.body.domProps.top.height;\n    let x = left - props.majorLineWidth / 2;\n\n    this._setXY(line, x, y);\n    line.className = `vis-grid ${this.options.rtl ?  'vis-vertical-rtl' : 'vis-vertical'} vis-major ${className}`;\n\n    return line;\n  }\n\n  /**\n   * Determine the size of text on the axis (both major and minor axis).\n   * The size is calculated only once and then cached in this.props.\n   * @private\n   */\n  _calculateCharSize() {\n    // Note: We calculate char size with every redraw. Size may change, for\n    // example when any of the timelines parents had display:none for example.\n\n    // determine the char width and height on the minor axis\n    if (!this.dom.measureCharMinor) {\n      this.dom.measureCharMinor = document.createElement('DIV');\n      this.dom.measureCharMinor.className = 'vis-text vis-minor vis-measure';\n      this.dom.measureCharMinor.style.position = 'absolute';\n\n      this.dom.measureCharMinor.appendChild(document.createTextNode('0'));\n      this.dom.foreground.appendChild(this.dom.measureCharMinor);\n    }\n    this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight;\n    this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth;\n\n    // determine the char width and height on the major axis\n    if (!this.dom.measureCharMajor) {\n      this.dom.measureCharMajor = document.createElement('DIV');\n      this.dom.measureCharMajor.className = 'vis-text vis-major vis-measure';\n      this.dom.measureCharMajor.style.position = 'absolute';\n\n      this.dom.measureCharMajor.appendChild(document.createTextNode('0'));\n      this.dom.foreground.appendChild(this.dom.measureCharMajor);\n    }\n    this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight;\n    this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth;\n  }\n}\n\n\nvar warnedForOverflow = false;\n\nexport default TimeAxis;\n","/**\r\n * Created by Alex on 11/6/2014.\r\n */\r\nexport default function keycharm(options) {\r\n  var preventDefault = options && options.preventDefault || false;\r\n\r\n  var container = options && options.container || window;\r\n\r\n  var _exportFunctions = {};\r\n  var _bound = {keydown:{}, keyup:{}};\r\n  var _keys = {};\r\n  var i;\r\n\r\n  // a - z\r\n  for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};}\r\n  // A - Z\r\n  for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};}\r\n  // 0 - 9\r\n  for (i = 0;  i <= 9;   i++) {_keys['' + i] = {code:48 + i, shift: false};}\r\n  // F1 - F12\r\n  for (i = 1;  i <= 12;   i++) {_keys['F' + i] = {code:111 + i, shift: false};}\r\n  // num0 - num9\r\n  for (i = 0;  i <= 9;   i++) {_keys['num' + i] = {code:96 + i, shift: false};}\r\n\r\n  // numpad misc\r\n  _keys['num*'] = {code:106, shift: false};\r\n  _keys['num+'] = {code:107, shift: false};\r\n  _keys['num-'] = {code:109, shift: false};\r\n  _keys['num/'] = {code:111, shift: false};\r\n  _keys['num.'] = {code:110, shift: false};\r\n  // arrows\r\n  _keys['left']  = {code:37, shift: false};\r\n  _keys['up']    = {code:38, shift: false};\r\n  _keys['right'] = {code:39, shift: false};\r\n  _keys['down']  = {code:40, shift: false};\r\n  // extra keys\r\n  _keys['space'] = {code:32, shift: false};\r\n  _keys['enter'] = {code:13, shift: false};\r\n  _keys['shift'] = {code:16, shift: undefined};\r\n  _keys['esc']   = {code:27, shift: false};\r\n  _keys['backspace'] = {code:8, shift: false};\r\n  _keys['tab']       = {code:9, shift: false};\r\n  _keys['ctrl']      = {code:17, shift: false};\r\n  _keys['alt']       = {code:18, shift: false};\r\n  _keys['delete']    = {code:46, shift: false};\r\n  _keys['pageup']    = {code:33, shift: false};\r\n  _keys['pagedown']  = {code:34, shift: false};\r\n  // symbols\r\n  _keys['=']     = {code:187, shift: false};\r\n  _keys['-']     = {code:189, shift: false};\r\n  _keys[']']     = {code:221, shift: false};\r\n  _keys['[']     = {code:219, shift: false};\r\n\r\n\r\n\r\n  var down = function(event) {handleEvent(event,'keydown');};\r\n  var up = function(event) {handleEvent(event,'keyup');};\r\n\r\n  // handle the actualy bound key with the event\r\n  var handleEvent = function(event,type) {\r\n    if (_bound[type][event.keyCode] !== undefined) {\r\n      var bound = _bound[type][event.keyCode];\r\n      for (var i = 0; i < bound.length; i++) {\r\n        if (bound[i].shift === undefined) {\r\n          bound[i].fn(event);\r\n        }\r\n        else if (bound[i].shift == true && event.shiftKey == true) {\r\n          bound[i].fn(event);\r\n        }\r\n        else if (bound[i].shift == false && event.shiftKey == false) {\r\n          bound[i].fn(event);\r\n        }\r\n      }\r\n\r\n      if (preventDefault == true) {\r\n        event.preventDefault();\r\n      }\r\n    }\r\n  };\r\n\r\n  // bind a key to a callback\r\n  _exportFunctions.bind = function(key, callback, type) {\r\n    if (type === undefined) {\r\n      type = 'keydown';\r\n    }\r\n    if (_keys[key] === undefined) {\r\n      throw new Error(\"unsupported key: \" + key);\r\n    }\r\n    if (_bound[type][_keys[key].code] === undefined) {\r\n      _bound[type][_keys[key].code] = [];\r\n    }\r\n    _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift});\r\n  };\r\n\r\n\r\n  // bind all keys to a call back (demo purposes)\r\n  _exportFunctions.bindAll = function(callback, type) {\r\n    if (type === undefined) {\r\n      type = 'keydown';\r\n    }\r\n    for (var key in _keys) {\r\n      if (_keys.hasOwnProperty(key)) {\r\n        _exportFunctions.bind(key,callback,type);\r\n      }\r\n    }\r\n  };\r\n\r\n  // get the key label from an event\r\n  _exportFunctions.getKey = function(event) {\r\n    for (var key in _keys) {\r\n      if (_keys.hasOwnProperty(key)) {\r\n        if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) {\r\n          return key;\r\n        }\r\n        else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) {\r\n          return key;\r\n        }\r\n        else if (event.keyCode == _keys[key].code && key == 'shift') {\r\n          return key;\r\n        }\r\n      }\r\n    }\r\n    return \"unknown key, currently not supported\";\r\n  };\r\n\r\n  // unbind either a specific callback from a key or all of them (by leaving callback undefined)\r\n  _exportFunctions.unbind = function(key, callback, type) {\r\n    if (type === undefined) {\r\n      type = 'keydown';\r\n    }\r\n    if (_keys[key] === undefined) {\r\n      throw new Error(\"unsupported key: \" + key);\r\n    }\r\n    if (callback !== undefined) {\r\n      var newBindings = [];\r\n      var bound = _bound[type][_keys[key].code];\r\n      if (bound !== undefined) {\r\n        for (var i = 0; i < bound.length; i++) {\r\n          if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) {\r\n            newBindings.push(_bound[type][_keys[key].code][i]);\r\n          }\r\n        }\r\n      }\r\n      _bound[type][_keys[key].code] = newBindings;\r\n    }\r\n    else {\r\n      _bound[type][_keys[key].code] = [];\r\n    }\r\n  };\r\n\r\n  // reset all bound variables.\r\n  _exportFunctions.reset = function() {\r\n    _bound = {keydown:{}, keyup:{}};\r\n  };\r\n\r\n  // unbind all listeners and reset all variables.\r\n  _exportFunctions.destroy = function() {\r\n    _bound = {keydown:{}, keyup:{}};\r\n    container.removeEventListener('keydown', down, true);\r\n    container.removeEventListener('keyup', up, true);\r\n  };\r\n\r\n  // create listeners.\r\n  container.addEventListener('keydown',down,true);\r\n  container.addEventListener('keyup',up,true);\r\n\r\n  // return the public functions.\r\n  return _exportFunctions;\r\n}\r\n","import keycharm from 'keycharm';\nimport Emitter from 'component-emitter';\nimport Hammer from '../module/hammer';\nimport util from '../util';\n\nimport './activator.css';\n\n/**\n * Turn an element into an clickToUse element.\n * When not active, the element has a transparent overlay. When the overlay is\n * clicked, the mode is changed to active.\n * When active, the element is displayed with a blue border around it, and\n * the interactive contents of the element can be used. When clicked outside\n * the element, the elements mode is changed to inactive.\n * @param {Element} container\n * @constructor Activator\n */\nfunction Activator(container) {\n  this.active = false;\n\n  this.dom = {\n    container: container\n  };\n\n  this.dom.overlay = document.createElement('div');\n  this.dom.overlay.className = 'vis-overlay';\n\n  this.dom.container.appendChild(this.dom.overlay);\n\n  this.hammer = Hammer(this.dom.overlay);\n  this.hammer.on('tap', this._onTapOverlay.bind(this));\n\n  // block all touch events (except tap)\n  var me = this;\n  var events = [\n    'tap', 'doubletap', 'press',\n    'pinch',\n    'pan', 'panstart', 'panmove', 'panend'\n  ];\n  events.forEach(function (event) {\n    me.hammer.on(event, function (event) {\n      event.stopPropagation();\n    });\n  });\n\n  // attach a click event to the window, in order to deactivate when clicking outside the timeline\n  if (document && document.body) {\n    this.onClick = function (event) {\n      if (!_hasParent(event.target, container)) {\n        me.deactivate();\n      }\n    };\n    document.body.addEventListener('click', this.onClick);\n  }\n\n  if (this.keycharm !== undefined) {\n    this.keycharm.destroy();\n  }\n  this.keycharm = keycharm();\n\n  // keycharm listener only bounded when active)\n  this.escListener = this.deactivate.bind(this);\n}\n\n// turn into an event emitter\nEmitter(Activator.prototype);\n\n// The currently active activator\nActivator.current = null;\n\n/**\n * Destroy the activator. Cleans up all created DOM and event listeners\n */\nActivator.prototype.destroy = function () {\n  this.deactivate();\n\n  // remove dom\n  this.dom.overlay.parentNode.removeChild(this.dom.overlay);\n\n  // remove global event listener\n  if (this.onClick) {\n    document.body.removeEventListener('click', this.onClick);\n  }\n  // remove keycharm\n  if (this.keycharm !== undefined) {\n    this.keycharm.destroy();\n  }\n  this.keycharm = null;\n  // cleanup hammer instances\n  this.hammer.destroy();\n  this.hammer = null;\n  // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory)\n};\n\n/**\n * Activate the element\n * Overlay is hidden, element is decorated with a blue shadow border\n */\nActivator.prototype.activate = function () {\n  // we allow only one active activator at a time\n  if (Activator.current) {\n    Activator.current.deactivate();\n  }\n  Activator.current = this;\n\n  this.active = true;\n  this.dom.overlay.style.display = 'none';\n  util.addClassName(this.dom.container, 'vis-active');\n\n  this.emit('change');\n  this.emit('activate');\n\n  // ugly hack: bind ESC after emitting the events, as the Network rebinds all\n  // keyboard events on a 'change' event\n  this.keycharm.bind('esc', this.escListener);\n};\n\n/**\n * Deactivate the element\n * Overlay is displayed on top of the element\n */\nActivator.prototype.deactivate = function () {\n  if (Activator.current === this) {\n    Activator.current = null;\n  }\n\n  this.active = false;\n  this.dom.overlay.style.display = '';\n  util.removeClassName(this.dom.container, 'vis-active');\n  this.keycharm.unbind('esc', this.escListener);\n\n  this.emit('change');\n  this.emit('deactivate');\n};\n\n/**\n * Handle a tap event: activate the container\n * @param {Event}  event   The event\n * @private\n */\nActivator.prototype._onTapOverlay = function (event) {\n  // activate the container\n  this.activate();\n  event.stopPropagation();\n};\n\n/**\n * Test whether the element has the requested parent element somewhere in\n * its chain of parent nodes.\n * @param {HTMLElement} element\n * @param {HTMLElement} parent\n * @returns {boolean} Returns true when the parent is found somewhere in the\n *                    chain of parent nodes.\n * @private\n */\nfunction _hasParent(element, parent) {\n  while (element) {\n    if (element === parent) {\n      return true\n    }\n    element = element.parentNode;\n  }\n  return false;\n}\n\nexport default Activator;\n","/*\n * IMPORTANT: Locales for Moment has to be imported in the legacy and standalone\n * entry points. For the peer build it's users responsibility to do so.\n */\n\n// English\nconst en = {\n  current: 'current',\n  time: 'time',\n  deleteSelected: 'Delete selected',\n};\nconst en_EN = en;\nconst en_US = en;\n\n// Italiano\nconst it = {\n  current: 'attuale',\n  time: 'tempo',\n  deleteSelected: 'Cancella la selezione',\n};\nconst it_IT = it;\nconst it_CH = it;\n\n// Dutch\nconst nl = {\n  current: 'huidige',\n  time: 'tijd',\n  deleteSelected: 'Selectie verwijderen'\n};\nconst nl_NL = nl;\nconst nl_BE = nl;\n\n// German\nconst de = {\n  current: 'Aktuelle',\n  time: 'Zeit',\n  deleteSelected: 'L\\u00f6sche Auswahl',\n};\nconst de_DE = de;\n\n// French\nconst fr = {\n  current: 'actuel',\n  time: 'heure',\n  deleteSelected: 'Effacer la selection',\n};\nconst fr_FR = fr;\nconst fr_CA = fr;\nconst fr_BE = fr;\n\n// Espanol\nconst es = {\n  current: 'corriente',\n  time: 'hora',\n  deleteSelected: 'Eliminar selecci\\u00f3n',\n};\nconst es_ES = es;\n\n// Ukrainian\nconst uk = {\n  current: 'поточний',\n  time: 'час',\n  deleteSelected: 'Видалити обране',\n};\nconst uk_UA = uk;\n\n// Russian\nconst ru = {\n  current: 'текущее',\n  time: 'время',\n  deleteSelected: 'Удалить выбранное',\n};\nconst ru_RU = ru;\n\n// Polish\nconst pl = {\n  current: 'aktualny',\n  time: 'czas',\n  deleteSelected: 'Usuń wybrane',\n};\nconst pl_PL = pl;\n\n// Portuguese\nconst pt = {\n  current: 'atual',\n  time: 'data',\n  deleteSelected: 'Apagar selecionado',\n};\nconst pt_BR = pt;\nconst pt_PT = pt;\n\n// Japanese\nconst ja = {\n  current: '現在',\n  time: '時刻',\n  deleteSelected: '選択されたものを削除',\n};\nconst ja_JP = ja;\n\n// Swedish\nconst sv = {\n  current: 'nuvarande',\n  time: 'tid',\n  deleteSelected: 'Radera valda',\n};\nconst sv_SE = sv;\n\n// Norwegian\nconst nb = {\n  current: 'nåværende',\n  time: 'tid',\n  deleteSelected: 'Slett valgte',\n};\nconst nb_NO = nb;\nconst nn = nb;\nconst nn_NO = nb;\n\n// Lithuanian\nconst lt = {\n  current: 'einamas',\n  time: 'laikas',\n  deleteSelected: 'Pašalinti pasirinktą',\n};\nconst lt_LT = lt;\n\n\nconst locales = {\n  en,\n  en_EN,\n  en_US,\n  it,\n  it_IT,\n  it_CH,\n  nl,\n  nl_NL,\n  nl_BE,\n  de,\n  de_DE,\n  fr,\n  fr_FR,\n  fr_CA,\n  fr_BE,\n  es,\n  es_ES,\n  uk,\n  uk_UA,\n  ru,\n  ru_RU,\n  pl,\n  pl_PL,\n  pt,\n  pt_BR,\n  pt_PT,\n  ja,\n  ja_JP,\n  lt,\n  lt_LT,\n  sv,\n  sv_SE,\n  nb,\n  nn,\n  nb_NO,\n  nn_NO\n}\n\nexport default locales\n","import Hammer from '../../module/hammer';\nimport util from '../../util';\nimport Component from './Component';\nimport moment from '../../module/moment';\nimport locales from '../locales';\n\nimport './css/customtime.css';\n\n/** A custom time bar */\nclass CustomTime extends Component {\n /**\n * @param {{range: Range, dom: Object}} body\n * @param {Object} [options]        Available parameters:\n *                                  {number | string} id\n *                                  {string} locales\n *                                  {string} locale\n * @constructor CustomTime\n * @extends Component\n */\n  constructor(body, options) {\n    super()\n    this.body = body;\n\n    // default options\n    this.defaultOptions = {\n      moment,\n      locales,\n      locale: 'en',\n      id: undefined,\n      title: undefined\n    };\n    this.options = util.extend({}, this.defaultOptions);\n    this.setOptions(options);\n    this.options.locales = util.extend({}, locales, this.options.locales);\n    const defaultLocales = this.defaultOptions.locales[this.defaultOptions.locale];\n    Object.keys(this.options.locales).forEach(locale => {\n      this.options.locales[locale] = util.extend(\n        {},\n        defaultLocales,\n        this.options.locales[locale]\n      );\n    });\n\n    if (options && options.time != null) {\n      this.customTime = options.time;\n    } else {\n      this.customTime = new Date();\n    }\n\n    this.eventParams = {}; // stores state parameters while dragging the bar\n\n    // create the DOM\n    this._create();\n  }\n\n  /**\n   * Set options for the component. Options will be merged in current options.\n   * @param {Object} options  Available parameters:\n   *                                  {number | string} id\n   *                                  {string} locales\n   *                                  {string} locale\n   */\n  setOptions(options) {\n    if (options) {\n      // copy all options that we know\n      util.selectiveExtend(['moment', 'locale', 'locales', 'id', 'title', 'rtl', 'snap'], this.options, options);\n    }\n  }\n\n  /**\n   * Create the DOM for the custom time\n   * @private\n   */\n  _create() {\n    const bar = document.createElement('div');\n    bar['custom-time'] = this;\n    bar.className = `vis-custom-time ${this.options.id || ''}`;\n    bar.style.position = 'absolute';\n    bar.style.top = '0px';\n    bar.style.height = '100%';\n    this.bar = bar;\n\n    const drag = document.createElement('div');\n    drag.style.position = 'relative';\n    drag.style.top = '0px';\n    if(this.options.rtl) {\n      drag.style.right = '-10px';\n    } else  {\n       drag.style.left = '-10px';\n    }\n    drag.style.height = '100%';\n    drag.style.width = '20px';\n\n    /**\n     *\n     * @param {WheelEvent} e\n     */\n    function onMouseWheel (e) {\n      this.body.range._onMouseWheel(e);\n    }\n\n    if (drag.addEventListener) {\n      // IE9, Chrome, Safari, Opera\n      drag.addEventListener(\"mousewheel\", onMouseWheel.bind(this), false);\n      // Firefox\n      drag.addEventListener(\"DOMMouseScroll\", onMouseWheel.bind(this), false);\n    } else {\n      // IE 6/7/8\n      drag.attachEvent(\"onmousewheel\", onMouseWheel.bind(this));\n    }\n\n    bar.appendChild(drag);\n    // attach event listeners\n    this.hammer = new Hammer(drag);\n    this.hammer.on('panstart', this._onDragStart.bind(this));\n    this.hammer.on('panmove',  this._onDrag.bind(this));\n    this.hammer.on('panend',   this._onDragEnd.bind(this));\n    this.hammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_ALL});\n    // delay addition on item click for trackpads...\n    this.hammer.get('press').set({time:10000});\n  }\n\n  /**\n   * Destroy the CustomTime bar\n   */\n  destroy() {\n    this.hide();\n\n    this.hammer.destroy();\n    this.hammer = null;\n\n    this.body = null;\n  }\n\n  /**\n   * Repaint the component\n   * @return {boolean} Returns true if the component is resized\n   */\n  redraw() {\n    const parent = this.body.dom.backgroundVertical;\n    if (this.bar.parentNode != parent) {\n      // attach to the dom\n      if (this.bar.parentNode) {\n        this.bar.parentNode.removeChild(this.bar);\n      }\n      parent.appendChild(this.bar);\n    }\n\n    const x = this.body.util.toScreen(this.customTime);\n\n    let locale = this.options.locales[this.options.locale];\n    if (!locale) {\n      if (!this.warned) {\n        console.warn(`WARNING: options.locales['${this.options.locale}'] not found. See https://visjs.github.io/vis-timeline/docs/timeline/#Localization`);\n        this.warned = true;\n      }\n      locale = this.options.locales['en']; // fall back on english when not available\n    }\n\n    let title = this.options.title;\n    // To hide the title completely use empty string ''.\n    if (title === undefined) {\n      title = `${locale.time}: ${this.options.moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss')}`;\n      title = title.charAt(0).toUpperCase() + title.substring(1);\n    } else if (typeof title === \"function\") {\n      title = title.call(this, this.customTime);\n    }\n\n    this.options.rtl ? this.bar.style.right = `${x}px` : this.bar.style.left = `${x}px`;\n    this.bar.title = title;\n\n    return false;\n  }\n\n  /**\n   * Remove the CustomTime from the DOM\n   */\n  hide() {\n    // remove the line from the DOM\n    if (this.bar.parentNode) {\n      this.bar.parentNode.removeChild(this.bar);\n    }\n  }\n\n  /**\n   * Set custom time.\n   * @param {Date | number | string} time\n   */\n  setCustomTime(time) {\n    this.customTime = util.convert(time, 'Date');\n    this.redraw();\n  }\n\n  /**\n   * Retrieve the current custom time.\n   * @return {Date} customTime\n   */\n  getCustomTime() {\n    return new Date(this.customTime.valueOf());\n  }\n\n  /**\n   * Set custom marker.\n   * @param {string} [title] Title of the custom marker\n   * @param {boolean} [editable] Make the custom marker editable.\n   */\n  setCustomMarker(title, editable) {\n    if (this.marker) {\n      this.bar.removeChild(this.marker);\n    }\n    this.marker = document.createElement('div');\n    this.marker.className = `vis-custom-time-marker`;\n    this.marker.innerHTML = util.xss(title);\n    this.marker.style.position = 'absolute';\n\n    if (editable) {\n      this.marker.setAttribute('contenteditable', 'true');\n      this.marker.addEventListener('pointerdown', function () {\n        this.marker.focus();\n      });\n      this.marker.addEventListener('input', this._onMarkerChange.bind(this));\n      // The editable div element has no change event, so here emulates the change event.\n      this.marker.title = title;\n      this.marker.addEventListener('blur', function (event) {\n        if (this.title != event.target.innerHTML) {\n          this._onMarkerChanged(event);\n          this.title = event.target.innerHTML;\n        }\n      }.bind(this));\n    }\n\n    this.bar.appendChild(this.marker);\n  }\n\n  /**\n    * Set custom title.\n    * @param {Date | number | string} title\n    */\n  setCustomTitle(title) {\n    this.options.title = title;\n  }\n\n  /**\n   * Start moving horizontally\n   * @param {Event} event\n   * @private\n   */\n  _onDragStart(event) {\n    this.eventParams.dragging = true;\n    this.eventParams.customTime = this.customTime;\n\n    event.stopPropagation();\n  }\n\n  /**\n   * Perform moving operating.\n   * @param {Event} event\n   * @private\n   */\n  _onDrag(event) {\n    if (!this.eventParams.dragging) return;\n\n    let deltaX = this.options.rtl ? (-1) * event.deltaX : event.deltaX;\n\n    const x = this.body.util.toScreen(this.eventParams.customTime) + deltaX;\n    const time = this.body.util.toTime(x);\n\n    const scale = this.body.util.getScale();\n    const step = this.body.util.getStep();\n    const snap = this.options.snap;\n\n    const snappedTime = snap ? snap(time, scale, step) : time;\n\n    this.setCustomTime(snappedTime);\n\n    // fire a timechange event\n    this.body.emitter.emit('timechange', {\n      id: this.options.id,\n      time: new Date(this.customTime.valueOf()),\n      event\n    });\n\n    event.stopPropagation();\n  }\n\n  /**\n   * Stop moving operating.\n   * @param {Event} event\n   * @private\n   */\n  _onDragEnd(event) {\n    if (!this.eventParams.dragging) return;\n\n    // fire a timechanged event\n    this.body.emitter.emit('timechanged', {\n      id: this.options.id,\n      time: new Date(this.customTime.valueOf()),\n      event\n    });\n\n    event.stopPropagation();\n  }\n\n  /**\n   * Perform input operating.\n   * @param {Event} event\n   * @private\n   */\n  _onMarkerChange(event) {\n    this.body.emitter.emit('markerchange', {\n      id: this.options.id,\n      title: event.target.innerHTML,\n      event\n    });\n\n    event.stopPropagation();\n  }\n\n  /**\n   * Perform change operating.\n   * @param {Event} event\n   * @private\n   */\n  _onMarkerChanged(event) {\n    this.body.emitter.emit('markerchanged', {\n      id: this.options.id,\n      title: event.target.innerHTML,\n      event\n    });\n\n    event.stopPropagation();\n  }\n\n  /**\n   * Find a custom time from an event target:\n   * searches for the attribute 'custom-time' in the event target's element tree\n   * @param {Event} event\n   * @return {CustomTime | null} customTime\n   */\n  static customTimeFromTarget(event) {\n    let target = event.target;\n    while (target) {\n      if (target.hasOwnProperty('custom-time')) {\n        return target['custom-time'];\n      }\n      target = target.parentNode;\n    }\n\n    return null;\n  }\n}\n\nexport default CustomTime;\n","import Emitter from 'component-emitter';\nimport Hammer from '../module/hammer';\nimport * as hammerUtil from '../hammerUtil';\nimport util from '../util';\nimport TimeAxis from './component/TimeAxis';\nimport Activator from '../shared/Activator';\nimport * as DateUtil from './DateUtil';\nimport CustomTime from './component/CustomTime';\n\nimport './component/css/animation.css';\nimport './component/css/currenttime.css';\nimport './component/css/panel.css';\nimport './component/css/pathStyles.css';\nimport './component/css/timeline.css';\nimport '../shared/bootstrap.css';\n\n/**\n * Create a timeline visualization\n * @constructor Core\n */\nclass Core {\n    /**\n     * Create the main DOM for the Core: a root panel containing left, right,\n     * top, bottom, content, and background panel.\n     * @param {Element} container  The container element where the Core will\n     *                             be attached.\n     * @protected\n     */\n    _create(container) {\n        this.dom = {};\n\n        this.dom.container = container;\n        this.dom.container.style.position = 'relative';\n\n        this.dom.root = document.createElement('div');\n        this.dom.background = document.createElement('div');\n        this.dom.backgroundVertical = document.createElement('div');\n        this.dom.backgroundHorizontal = document.createElement('div');\n        this.dom.centerContainer = document.createElement('div');\n        this.dom.leftContainer = document.createElement('div');\n        this.dom.rightContainer = document.createElement('div');\n        this.dom.center = document.createElement('div');\n        this.dom.left = document.createElement('div');\n        this.dom.right = document.createElement('div');\n        this.dom.top = document.createElement('div');\n        this.dom.bottom = document.createElement('div');\n        this.dom.shadowTop = document.createElement('div');\n        this.dom.shadowBottom = document.createElement('div');\n        this.dom.shadowTopLeft = document.createElement('div');\n        this.dom.shadowBottomLeft = document.createElement('div');\n        this.dom.shadowTopRight = document.createElement('div');\n        this.dom.shadowBottomRight = document.createElement('div');\n        this.dom.rollingModeBtn = document.createElement('div');\n        this.dom.loadingScreen = document.createElement('div');\n\n        this.dom.root.className = 'vis-timeline';\n        this.dom.background.className = 'vis-panel vis-background';\n        this.dom.backgroundVertical.className = 'vis-panel vis-background vis-vertical';\n        this.dom.backgroundHorizontal.className = 'vis-panel vis-background vis-horizontal';\n        this.dom.centerContainer.className = 'vis-panel vis-center';\n        this.dom.leftContainer.className = 'vis-panel vis-left';\n        this.dom.rightContainer.className = 'vis-panel vis-right';\n        this.dom.top.className = 'vis-panel vis-top';\n        this.dom.bottom.className = 'vis-panel vis-bottom';\n        this.dom.left.className = 'vis-content';\n        this.dom.center.className = 'vis-content';\n        this.dom.right.className = 'vis-content';\n        this.dom.shadowTop.className = 'vis-shadow vis-top';\n        this.dom.shadowBottom.className = 'vis-shadow vis-bottom';\n        this.dom.shadowTopLeft.className = 'vis-shadow vis-top';\n        this.dom.shadowBottomLeft.className = 'vis-shadow vis-bottom';\n        this.dom.shadowTopRight.className = 'vis-shadow vis-top';\n        this.dom.shadowBottomRight.className = 'vis-shadow vis-bottom';\n        this.dom.rollingModeBtn.className = 'vis-rolling-mode-btn';\n        this.dom.loadingScreen.className = 'vis-loading-screen';\n\n        this.dom.root.appendChild(this.dom.background);\n        this.dom.root.appendChild(this.dom.backgroundVertical);\n        this.dom.root.appendChild(this.dom.backgroundHorizontal);\n        this.dom.root.appendChild(this.dom.centerContainer);\n        this.dom.root.appendChild(this.dom.leftContainer);\n        this.dom.root.appendChild(this.dom.rightContainer);\n        this.dom.root.appendChild(this.dom.top);\n        this.dom.root.appendChild(this.dom.bottom);\n        this.dom.root.appendChild(this.dom.rollingModeBtn);\n\n        this.dom.centerContainer.appendChild(this.dom.center);\n        this.dom.leftContainer.appendChild(this.dom.left);\n        this.dom.rightContainer.appendChild(this.dom.right);\n        this.dom.centerContainer.appendChild(this.dom.shadowTop);\n        this.dom.centerContainer.appendChild(this.dom.shadowBottom);\n        this.dom.leftContainer.appendChild(this.dom.shadowTopLeft);\n        this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft);\n        this.dom.rightContainer.appendChild(this.dom.shadowTopRight);\n        this.dom.rightContainer.appendChild(this.dom.shadowBottomRight);\n\n        // size properties of each of the panels\n        this.props = {\n            root: {},\n            background: {},\n            centerContainer: {},\n            leftContainer: {},\n            rightContainer: {},\n            center: {},\n            left: {},\n            right: {},\n            top: {},\n            bottom: {},\n            border: {},\n            scrollTop: 0,\n            scrollTopMin: 0\n        };\n\n        this.on('rangechange', () => {\n            if (this.initialDrawDone === true) {\n                this._redraw();\n            }\n        });\n        this.on('rangechanged', () => {\n            if (!this.initialRangeChangeDone) {\n                this.initialRangeChangeDone = true;\n            }\n        });\n        this.on('touch', this._onTouch.bind(this));\n        this.on('panmove', this._onDrag.bind(this));\n\n        const me = this;\n        this._origRedraw = this._redraw.bind(this);\n        this._redraw = util.throttle(this._origRedraw);\n\n        this.on('_change', properties => {\n            if (me.itemSet && me.itemSet.initialItemSetDrawn && properties && properties.queue == true) {\n                me._redraw()\n            } else {\n                me._origRedraw();\n            }\n        });\n\n        // create event listeners for all interesting events, these events will be\n        // emitted via emitter\n        this.hammer = new Hammer(this.dom.root);\n        const pinchRecognizer = this.hammer.get('pinch').set({enable: true});\n        pinchRecognizer && hammerUtil.disablePreventDefaultVertically(pinchRecognizer);\n        this.hammer.get('pan').set({threshold: 5, direction: Hammer.DIRECTION_ALL});\n        this.timelineListeners = {};\n\n        const events = [\n            'tap', 'doubletap', 'press',\n            'pinch',\n            'pan', 'panstart', 'panmove', 'panend'\n            // TODO: cleanup\n            //'touch', 'pinch',\n            //'tap', 'doubletap', 'hold',\n            //'dragstart', 'drag', 'dragend',\n            //'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox\n        ];\n        events.forEach(type => {\n            const listener = event => {\n                if (me.isActive()) {\n                    me.emit(type, event);\n                }\n            };\n            me.hammer.on(type, listener);\n            me.timelineListeners[type] = listener;\n        });\n\n        // emulate a touch event (emitted before the start of a pan, pinch, tap, or press)\n        hammerUtil.onTouch(this.hammer, event => {\n            me.emit('touch', event);\n        });\n\n        // emulate a release event (emitted after a pan, pinch, tap, or press)\n        hammerUtil.onRelease(this.hammer, event => {\n            me.emit('release', event);\n        });\n\n        /**\n         *\n         * @param {WheelEvent} event\n         */\n        function onMouseWheel(event) {\n\n            // Reasonable default wheel deltas\n            const LINE_HEIGHT = 40;\n            const PAGE_HEIGHT = 800;\n\n            if (this.isActive()) {\n                this.emit('mousewheel', event);\n            }\n\n            // deltaX and deltaY normalization from jquery.mousewheel.js\n            let deltaX = 0;\n            let deltaY = 0;\n\n            // Old school scrollwheel delta\n            if ('detail' in event) {\n                deltaY = event.detail * -1;\n            }\n            if ('wheelDelta' in event) {\n                deltaY = event.wheelDelta;\n            }\n            if ('wheelDeltaY' in event) {\n                deltaY = event.wheelDeltaY;\n            }\n            if ('wheelDeltaX' in event) {\n                deltaX = event.wheelDeltaX * -1;\n            }\n\n            // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n            if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n                deltaX = deltaY * -1;\n                deltaY = 0;\n            }\n\n            // New school wheel delta (wheel event)\n            if ('deltaY' in event) {\n                deltaY = event.deltaY * -1;\n            }\n            if ('deltaX' in event) {\n                deltaX = event.deltaX;\n            }\n\n            // Normalize deltas\n            if (event.deltaMode) {\n                if (event.deltaMode === 1) {   // delta in LINE units\n                    deltaX *= LINE_HEIGHT;\n                    deltaY *= LINE_HEIGHT;\n                } else {                       // delta in PAGE units\n                    deltaX *= LINE_HEIGHT;\n                    deltaY *= PAGE_HEIGHT;\n                }\n            }\n            // Prevent scrolling when zooming (no zoom key, or pressing zoom key)\n            if (this.options.preferZoom) {\n                if (!this.options.zoomKey || event[this.options.zoomKey]) return;\n            } else {\n                if (this.options.zoomKey && event[this.options.zoomKey]) return\n            }\n            // Don't preventDefault if you can't scroll\n            if (!this.options.verticalScroll && !this.options.horizontalScroll) return;\n\n            if (this.options.verticalScroll && Math.abs(deltaY) >= Math.abs(deltaX)) {\n                const current = this.props.scrollTop;\n                const adjusted = current + deltaY;\n\n                if (this.isActive()) {\n                    const newScrollTop = this._setScrollTop(adjusted);\n\n                    if (newScrollTop !== current) {\n                        this._redraw();\n                        this.emit('scroll', event);\n\n                        // Prevent default actions caused by mouse wheel\n                        // (else the page and timeline both scroll)\n                        event.preventDefault();\n                    }\n                }\n            } else if (this.options.horizontalScroll) {\n                const delta = Math.abs(deltaX) >= Math.abs(deltaY) ? deltaX : deltaY;\n\n                // calculate a single scroll jump relative to the range scale\n                const diff = (delta / 120) * (this.range.end - this.range.start) / 20;\n                // calculate new start and end\n                const newStart = this.range.start + diff;\n                const newEnd = this.range.end + diff;\n\n                const options = {\n                    animation: false,\n                    byUser: true,\n                    event\n                };\n                this.range.setRange(newStart, newEnd, options);\n\n                event.preventDefault();\n            }\n        }\n\n        // Add modern wheel event listener\n        const wheelType = \"onwheel\" in document.createElement(\"div\") ? \"wheel\" : // Modern browsers support \"wheel\"\n            document.onmousewheel !== undefined ? \"mousewheel\" : // Webkit and IE support at least \"mousewheel\"\n\n                // DOMMouseScroll - Older Firefox versions use \"DOMMouseScroll\"\n                // onmousewheel - All the use \"onmousewheel\"\n                this.dom.centerContainer.addEventListener ? \"DOMMouseScroll\" : \"onmousewheel\"\n        this.dom.top.addEventListener ? \"DOMMouseScroll\" : \"onmousewheel\"\n        this.dom.bottom.addEventListener ? \"DOMMouseScroll\" : \"onmousewheel\"\n        this.dom.centerContainer.addEventListener(wheelType, onMouseWheel.bind(this), false);\n        this.dom.top.addEventListener(wheelType, onMouseWheel.bind(this), false);\n        this.dom.bottom.addEventListener(wheelType, onMouseWheel.bind(this), false);\n\n\n        /**\n         *\n         * @param {scroll} event\n         */\n        function onMouseScrollSide(event) {\n            if (!me.options.verticalScroll) return;\n\n            event.preventDefault();\n            if (me.isActive()) {\n                const adjusted = -event.target.scrollTop;\n                me._setScrollTop(adjusted);\n                me._redraw();\n                me.emit('scrollSide', event);\n            }\n        }\n\n        this.dom.left.parentNode.addEventListener('scroll', onMouseScrollSide.bind(this));\n        this.dom.right.parentNode.addEventListener('scroll', onMouseScrollSide.bind(this));\n\n        let itemAddedToTimeline = false;\n\n        /**\n         *\n         * @param {dragover} event\n         * @returns {boolean}\n         */\n        function handleDragOver(event) {\n            if (event.preventDefault) {\n                me.emit('dragover', me.getEventProperties(event));\n                event.preventDefault(); // Necessary. Allows us to drop.\n            }\n\n            // make sure your target is a timeline element\n            if (!(event.target.className.indexOf(\"timeline\") > -1)) return;\n\n            // make sure only one item is added every time you're over the timeline\n            if (itemAddedToTimeline) return;\n\n            event.dataTransfer.dropEffect = 'move';\n            itemAddedToTimeline = true;\n            return false;\n        }\n\n        /**\n         *\n         * @param {drop} event\n         * @returns {boolean}\n         */\n        function handleDrop(event) {\n            // prevent redirect to blank page - Firefox\n            if (event.preventDefault) {\n                event.preventDefault();\n            }\n            if (event.stopPropagation) {\n                event.stopPropagation();\n            }\n            // return when dropping non-timeline items\n            try {\n                var itemData = JSON.parse(event.dataTransfer.getData(\"text\"))\n                if (!itemData || !itemData.content) return\n            } catch (err) {\n                return false;\n            }\n\n            itemAddedToTimeline = false;\n            event.center = {\n                x: event.clientX,\n                y: event.clientY\n            };\n\n            if (itemData.target !== 'item') {\n                me.itemSet._onAddItem(event);\n            } else {\n                me.itemSet._onDropObjectOnItem(event);\n            }\n            me.emit('drop', me.getEventProperties(event))\n            return false;\n        }\n\n        this.dom.center.addEventListener('dragover', handleDragOver.bind(this), false);\n        this.dom.center.addEventListener('drop', handleDrop.bind(this), false);\n\n        this.customTimes = [];\n\n        // store state information needed for touch events\n        this.touch = {};\n\n        this.redrawCount = 0;\n        this.initialDrawDone = false;\n        this.initialRangeChangeDone = false;\n\n        // attach the root panel to the provided container\n        if (!container) throw new Error('No container provided');\n        container.appendChild(this.dom.root);\n        container.appendChild(this.dom.loadingScreen);\n    }\n\n    /**\n     * Set options. Options will be passed to all components loaded in the Timeline.\n     * @param {Object} [options]\n     *                           {String} orientation\n     *                              Vertical orientation for the Timeline,\n     *                              can be 'bottom' (default) or 'top'.\n     *                           {string | number} width\n     *                              Width for the timeline, a number in pixels or\n     *                              a css string like '1000px' or '75%'. '100%' by default.\n     *                           {string | number} height\n     *                              Fixed height for the Timeline, a number in pixels or\n     *                              a css string like '400px' or '75%'. If undefined,\n     *                              The Timeline will automatically size such that\n     *                              its contents fit.\n     *                           {string | number} minHeight\n     *                              Minimum height for the Timeline, a number in pixels or\n     *                              a css string like '400px' or '75%'.\n     *                           {string | number} maxHeight\n     *                              Maximum height for the Timeline, a number in pixels or\n     *                              a css string like '400px' or '75%'.\n     *                           {number | Date | string} start\n     *                              Start date for the visible window\n     *                           {number | Date | string} end\n     *                              End date for the visible window\n     */\n    setOptions(options) {\n        if (options) {\n            // copy the known options\n            const fields = [\n                'width', 'height', 'minHeight', 'maxHeight', 'autoResize',\n                'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates',\n                'locale', 'locales', 'moment', 'preferZoom', 'rtl', 'zoomKey',\n                'horizontalScroll', 'verticalScroll', 'longSelectPressTime', 'snap'\n            ];\n            util.selectiveExtend(fields, this.options, options);\n            this.dom.rollingModeBtn.style.visibility = 'hidden';\n\n            if (this.options.rtl) {\n                this.dom.container.style.direction = \"rtl\";\n                this.dom.backgroundVertical.className = 'vis-panel vis-background vis-vertical-rtl';\n            }\n\n            if (this.options.verticalScroll) {\n                if (this.options.rtl) {\n                    this.dom.rightContainer.className = 'vis-panel vis-right vis-vertical-scroll';\n                } else {\n                    this.dom.leftContainer.className = 'vis-panel vis-left vis-vertical-scroll';\n                }\n            }\n\n            if (typeof this.options.orientation !== 'object') {\n                this.options.orientation = {item: undefined, axis: undefined};\n            }\n            if ('orientation' in options) {\n                if (typeof options.orientation === 'string') {\n                    this.options.orientation = {\n                        item: options.orientation,\n                        axis: options.orientation\n                    };\n                } else if (typeof options.orientation === 'object') {\n                    if ('item' in options.orientation) {\n                        this.options.orientation.item = options.orientation.item;\n                    }\n                    if ('axis' in options.orientation) {\n                        this.options.orientation.axis = options.orientation.axis;\n                    }\n                }\n            }\n\n            if (this.options.orientation.axis === 'both') {\n                if (!this.timeAxis2) {\n                    const timeAxis2 = this.timeAxis2 = new TimeAxis(this.body, this.options);\n                    timeAxis2.setOptions = options => {\n                        const _options = options ? util.extend({}, options) : {};\n                        _options.orientation = 'top'; // override the orientation option, always top\n                        TimeAxis.prototype.setOptions.call(timeAxis2, _options);\n                    };\n                    this.components.push(timeAxis2);\n                }\n            } else {\n                if (this.timeAxis2) {\n                    const index = this.components.indexOf(this.timeAxis2);\n                    if (index !== -1) {\n                        this.components.splice(index, 1);\n                    }\n                    this.timeAxis2.destroy();\n                    this.timeAxis2 = null;\n                }\n            }\n\n            // if the graph2d's drawPoints is a function delegate the callback to the onRender property\n            if (typeof options.drawPoints == 'function') {\n                options.drawPoints = {\n                    onRender: options.drawPoints\n                };\n            }\n\n            if ('hiddenDates' in this.options) {\n                DateUtil.convertHiddenOptions(this.options.moment, this.body, this.options.hiddenDates);\n            }\n\n            if ('clickToUse' in options) {\n                if (options.clickToUse) {\n                    if (!this.activator) {\n                        this.activator = new Activator(this.dom.root);\n                    }\n                } else {\n                    if (this.activator) {\n                        this.activator.destroy();\n                        delete this.activator;\n                    }\n                }\n            }\n\n            // enable/disable autoResize\n            this._initAutoResize();\n        }\n\n        // propagate options to all components\n        this.components.forEach(component => component.setOptions(options));\n\n        // enable/disable configure\n        if ('configure' in options) {\n            if (!this.configurator) {\n                this.configurator = this._createConfigurator();\n            }\n\n            this.configurator.setOptions(options.configure);\n\n            // collect the settings of all components, and pass them to the configuration system\n            const appliedOptions = util.deepExtend({}, this.options);\n            this.components.forEach(component => {\n                util.deepExtend(appliedOptions, component.options);\n            });\n            this.configurator.setModuleOptions({global: appliedOptions});\n        }\n\n        this._redraw();\n    }\n\n    /**\n     * Returns true when the Timeline is active.\n     * @returns {boolean}\n     */\n    isActive() {\n        return !this.activator || this.activator.active;\n    }\n\n    /**\n     * Destroy the Core, clean up all DOM elements and event listeners.\n     */\n    destroy() {\n        // unbind datasets\n        this.setItems(null);\n        this.setGroups(null);\n\n        // remove all event listeners\n        this.off();\n\n        // stop checking for changed size\n        this._stopAutoResize();\n\n        // remove from DOM\n        if (this.dom.root.parentNode) {\n            this.dom.root.parentNode.removeChild(this.dom.root);\n        }\n        this.dom = null;\n\n        // remove Activator\n        if (this.activator) {\n            this.activator.destroy();\n            delete this.activator;\n        }\n\n        // cleanup hammer touch events\n        for (const event in this.timelineListeners) {\n            if (this.timelineListeners.hasOwnProperty(event)) {\n                delete this.timelineListeners[event];\n            }\n        }\n        this.timelineListeners = null;\n        this.hammer && this.hammer.destroy();\n        this.hammer = null;\n\n        // give all components the opportunity to cleanup\n        this.components.forEach(component => component.destroy());\n\n        this.body = null;\n    }\n\n    /**\n     * Set a custom time bar\n     * @param {Date} time\n     * @param {number} [id=undefined] Optional id of the custom time bar to be adjusted.\n     */\n    setCustomTime(time, id) {\n        const customTimes = this.customTimes.filter(component => id === component.options.id);\n\n        if (customTimes.length === 0) {\n            throw new Error(`No custom time bar found with id ${JSON.stringify(id)}`)\n        }\n\n        if (customTimes.length > 0) {\n            customTimes[0].setCustomTime(time);\n        }\n    }\n\n    /**\n     * Retrieve the current custom time.\n     * @param {number} [id=undefined]    Id of the custom time bar.\n     * @return {Date | undefined} customTime\n     */\n    getCustomTime(id) {\n        const customTimes = this.customTimes.filter(component => component.options.id === id);\n\n        if (customTimes.length === 0) {\n            throw new Error(`No custom time bar found with id ${JSON.stringify(id)}`)\n        }\n        return customTimes[0].getCustomTime();\n    }\n\n    /**\n     * Set a custom marker for the custom time bar.\n     * @param {string} [title] Title of the custom marker.\n     * @param {number} [id=undefined] Id of the custom marker.\n     * @param {boolean} [editable=false] Make the custom marker editable.\n     */\n    setCustomTimeMarker(title, id, editable) {\n        const customTimes = this.customTimes.filter(component => component.options.id === id);\n\n        if (customTimes.length === 0) {\n            throw new Error(`No custom time bar found with id ${JSON.stringify(id)}`)\n        }\n        if (customTimes.length > 0) {\n            customTimes[0].setCustomMarker(title, editable);\n        }\n    }\n\n    /**\n     * Set a custom title for the custom time bar.\n     * @param {string} [title] Custom title\n     * @param {number} [id=undefined]    Id of the custom time bar.\n     * @returns {*}\n     */\n    setCustomTimeTitle(title, id) {\n        const customTimes = this.customTimes.filter(component => component.options.id === id);\n\n        if (customTimes.length === 0) {\n            throw new Error(`No custom time bar found with id ${JSON.stringify(id)}`)\n        }\n        if (customTimes.length > 0) {\n            return customTimes[0].setCustomTitle(title);\n        }\n    }\n\n    /**\n     * Retrieve meta information from an event.\n     * Should be overridden by classes extending Core\n     * @param {Event} event\n     * @return {Object} An object with related information.\n     */\n    getEventProperties(event) {\n        return {event};\n    }\n\n    /**\n     * Add custom vertical bar\n     * @param {Date | string | number} [time]  A Date, unix timestamp, or\n     *                                         ISO date string. Time point where\n     *                                         the new bar should be placed.\n     *                                         If not provided, `new Date()` will\n     *                                         be used.\n     * @param {number | string} [id=undefined] Id of the new bar. Optional\n     * @return {number | string}               Returns the id of the new bar\n     */\n    addCustomTime(time, id) {\n        const timestamp = time !== undefined\n            ? util.convert(time, 'Date')\n            : new Date();\n\n        const exists = this.customTimes.some(customTime => customTime.options.id === id);\n        if (exists) {\n            throw new Error(`A custom time with id ${JSON.stringify(id)} already exists`);\n        }\n\n        const customTime = new CustomTime(this.body, util.extend({}, this.options, {\n            time: timestamp,\n            id,\n            snap: this.itemSet ? this.itemSet.options.snap : this.options.snap\n        }));\n\n        this.customTimes.push(customTime);\n        this.components.push(customTime);\n        this._redraw();\n\n        return id;\n    }\n\n    /**\n     * Remove previously added custom bar\n     * @param {int} id ID of the custom bar to be removed\n     * [at]returns {boolean} True if the bar exists and is removed, false otherwise\n     */\n    removeCustomTime(id) {\n        const customTimes = this.customTimes.filter(bar => bar.options.id === id);\n\n        if (customTimes.length === 0) {\n            throw new Error(`No custom time bar found with id ${JSON.stringify(id)}`)\n        }\n\n        customTimes.forEach(customTime => {\n            this.customTimes.splice(this.customTimes.indexOf(customTime), 1);\n            this.components.splice(this.components.indexOf(customTime), 1);\n            customTime.destroy();\n        })\n    }\n\n    /**\n     * Get the id's of the currently visible items.\n     * @returns {Array} The ids of the visible items\n     */\n    getVisibleItems() {\n        return this.itemSet && this.itemSet.getVisibleItems() || [];\n    }\n\n    /**\n     * Get the id's of the items at specific time, where a click takes place on the timeline.\n     * @returns {Array} The ids of all items in existence at the time of event.\n     */\n    getItemsAtCurrentTime(timeOfEvent) {\n        this.time = timeOfEvent;\n        return this.itemSet && this.itemSet.getItemsAtCurrentTime(this.time) || [];\n    }\n\n    /**\n     * Get the id's of the currently visible groups.\n     * @returns {Array} The ids of the visible groups\n     */\n    getVisibleGroups() {\n        return this.itemSet && this.itemSet.getVisibleGroups() || [];\n    }\n\n    /**\n     * Set Core window such that it fits all items\n     * @param {Object} [options]  Available options:\n     *                                `animation: boolean | {duration: number, easingFunction: string}`\n     *                                    If true (default), the range is animated\n     *                                    smoothly to the new window. An object can be\n     *                                    provided to specify duration and easing function.\n     *                                    Default duration is 500 ms, and default easing\n     *                                    function is 'easeInOutQuad'.\n     * @param {function} [callback] a callback funtion to be executed at the end of this function\n     */\n    fit(options, callback) {\n        const range = this.getDataRange();\n\n        // skip range set if there is no min and max date\n        if (range.min === null && range.max === null) {\n            return;\n        }\n\n        // apply a margin of 1% left and right of the data\n        const interval = range.max - range.min;\n        const min = new Date(range.min.valueOf() - interval * 0.01);\n        const max = new Date(range.max.valueOf() + interval * 0.01);\n        const animation = (options && options.animation !== undefined) ? options.animation : true;\n        this.range.setRange(min, max, {animation}, callback);\n    }\n\n    /**\n     * Calculate the data range of the items start and end dates\n     * [at]returns {{min: [Date], max: [Date]}}\n     * @protected\n     */\n    getDataRange() {\n        // must be implemented by Timeline and Graph2d\n        throw new Error('Cannot invoke abstract method getDataRange');\n    }\n\n    /**\n     * Set the visible window. Both parameters are optional, you can change only\n     * start or only end. Syntax:\n     *\n     *     TimeLine.setWindow(start, end)\n     *     TimeLine.setWindow(start, end, options)\n     *     TimeLine.setWindow(range)\n     *\n     * Where start and end can be a Date, number, or string, and range is an\n     * object with properties start and end.\n     *\n     * @param {Date | number | string | Object} [start] Start date of visible window\n     * @param {Date | number | string} [end]            End date of visible window\n     * @param {Object} [options]  Available options:\n     *                                `animation: boolean | {duration: number, easingFunction: string}`\n     *                                    If true (default), the range is animated\n     *                                    smoothly to the new window. An object can be\n     *                                    provided to specify duration and easing function.\n     *                                    Default duration is 500 ms, and default easing\n     *                                    function is 'easeInOutQuad'.\n     * @param {function} [callback] a callback funtion to be executed at the end of this function\n     */\n    setWindow(start, end, options, callback) {\n        if (typeof arguments[2] == \"function\") {\n            callback = arguments[2];\n            options = {};\n        }\n        let animation;\n        let range;\n        if (arguments.length == 1) {\n            range = arguments[0];\n            animation = (range.animation !== undefined) ? range.animation : true;\n            this.range.setRange(range.start, range.end, {animation});\n        } else if (arguments.length == 2 && typeof arguments[1] == \"function\") {\n            range = arguments[0];\n            callback = arguments[1];\n            animation = (range.animation !== undefined) ? range.animation : true;\n            this.range.setRange(range.start, range.end, {animation}, callback);\n        } else {\n            animation = (options && options.animation !== undefined) ? options.animation : true;\n            this.range.setRange(start, end, {animation}, callback);\n        }\n    }\n\n    /**\n     * Move the window such that given time is centered on screen.\n     * @param {Date | number | string} time\n     * @param {Object} [options]  Available options:\n     *                                `animation: boolean | {duration: number, easingFunction: string}`\n     *                                    If true (default), the range is animated\n     *                                    smoothly to the new window. An object can be\n     *                                    provided to specify duration and easing function.\n     *                                    Default duration is 500 ms, and default easing\n     *                                    function is 'easeInOutQuad'.\n     * @param {function} [callback] a callback funtion to be executed at the end of this function\n     */\n    moveTo(time, options, callback) {\n        if (typeof arguments[1] == \"function\") {\n            callback = arguments[1];\n            options = {};\n        }\n        const interval = this.range.end - this.range.start;\n        const t = util.convert(time, 'Date').valueOf();\n\n        const start = t - interval / 2;\n        const end = t + interval / 2;\n        const animation = (options && options.animation !== undefined) ? options.animation : true;\n\n        this.range.setRange(start, end, {animation}, callback);\n    }\n\n    /**\n     * Get the visible window\n     * @return {{start: Date, end: Date}}   Visible range\n     */\n    getWindow() {\n        const range = this.range.getRange();\n        return {\n            start: new Date(range.start),\n            end: new Date(range.end)\n        };\n    }\n\n    /**\n     * Zoom in the window such that given time is centered on screen.\n     * @param {number} percentage - must be between [0..1]\n     * @param {Object} [options]  Available options:\n     *                                `animation: boolean | {duration: number, easingFunction: string}`\n     *                                    If true (default), the range is animated\n     *                                    smoothly to the new window. An object can be\n     *                                    provided to specify duration and easing function.\n     *                                    Default duration is 500 ms, and default easing\n     *                                    function is 'easeInOutQuad'.\n     * @param {function} [callback] a callback funtion to be executed at the end of this function\n     */\n    zoomIn(percentage, options, callback) {\n        if (!percentage || percentage < 0 || percentage > 1) return;\n        if (typeof arguments[1] == \"function\") {\n            callback = arguments[1];\n            options = {};\n        }\n        const range = this.getWindow();\n        const start = range.start.valueOf();\n        const end = range.end.valueOf();\n        const interval = end - start;\n        const newInterval = interval / (1 + percentage);\n        const distance = (interval - newInterval) / 2;\n        const newStart = start + distance;\n        const newEnd = end - distance;\n\n        this.setWindow(newStart, newEnd, options, callback);\n    }\n\n    /**\n     * Zoom out the window such that given time is centered on screen.\n     * @param {number} percentage - must be between [0..1]\n     * @param {Object} [options]  Available options:\n     *                                `animation: boolean | {duration: number, easingFunction: string}`\n     *                                    If true (default), the range is animated\n     *                                    smoothly to the new window. An object can be\n     *                                    provided to specify duration and easing function.\n     *                                    Default duration is 500 ms, and default easing\n     *                                    function is 'easeInOutQuad'.\n     * @param {function} [callback] a callback funtion to be executed at the end of this function\n     */\n    zoomOut(percentage, options, callback) {\n        if (!percentage || percentage < 0 || percentage > 1) return\n        if (typeof arguments[1] == \"function\") {\n            callback = arguments[1];\n            options = {};\n        }\n        const range = this.getWindow();\n        const start = range.start.valueOf();\n        const end = range.end.valueOf();\n        const interval = end - start;\n        const newStart = start - interval * percentage / 2;\n        const newEnd = end + interval * percentage / 2;\n\n        this.setWindow(newStart, newEnd, options, callback);\n    }\n\n    /**\n     * Force a redraw. Can be overridden by implementations of Core\n     *\n     * Note: this function will be overridden on construction with a trottled version\n     */\n    redraw() {\n        this._redraw();\n    }\n\n    /**\n     * Redraw for internal use. Redraws all components. See also the public\n     * method redraw.\n     * @protected\n     */\n    _redraw() {\n        this.redrawCount++;\n        const dom = this.dom;\n\n        if (!dom || !dom.container || dom.root.offsetWidth == 0) return; // when destroyed, or invisible\n\n        let resized = false;\n        const options = this.options;\n        const props = this.props;\n\n        DateUtil.updateHiddenDates(this.options.moment, this.body, this.options.hiddenDates);\n\n        // update class names\n        if (options.orientation == 'top') {\n            util.addClassName(dom.root, 'vis-top');\n            util.removeClassName(dom.root, 'vis-bottom');\n        } else {\n            util.removeClassName(dom.root, 'vis-top');\n            util.addClassName(dom.root, 'vis-bottom');\n        }\n\n        if (options.rtl) {\n            util.addClassName(dom.root, 'vis-rtl');\n            util.removeClassName(dom.root, 'vis-ltr');\n        } else {\n            util.addClassName(dom.root, 'vis-ltr');\n            util.removeClassName(dom.root, 'vis-rtl');\n        }\n\n        // update root width and height options\n        dom.root.style.maxHeight = util.option.asSize(options.maxHeight, '');\n        dom.root.style.minHeight = util.option.asSize(options.minHeight, '');\n        dom.root.style.width = util.option.asSize(options.width, '');\n        const rootOffsetWidth = dom.root.offsetWidth;\n\n        // calculate border widths\n        props.border.left = 1\n        props.border.right = 1\n        props.border.top = 1\n        props.border.bottom = 1\n\n        // calculate the heights. If any of the side panels is empty, we set the height to\n        // minus the border width, such that the border will be invisible\n        props.center.height = dom.center.offsetHeight;\n        props.left.height = dom.left.offsetHeight;\n        props.right.height = dom.right.offsetHeight;\n        props.top.height = dom.top.clientHeight || -props.border.top;\n        props.bottom.height = Math.round(dom.bottom.getBoundingClientRect().height) || dom.bottom.clientHeight || -props.border.bottom;\n\n        // TODO: compensate borders when any of the panels is empty.\n\n        // apply auto height\n        // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM)\n        const contentHeight = Math.max(props.left.height, props.center.height, props.right.height);\n        const autoHeight = props.top.height + contentHeight + props.bottom.height + props.border.top + props.border.bottom;\n        dom.root.style.height = util.option.asSize(options.height, `${autoHeight}px`);\n\n        // calculate heights of the content panels\n        props.root.height = dom.root.offsetHeight;\n        props.background.height = props.root.height;\n        const containerHeight = props.root.height - props.top.height - props.bottom.height;\n        props.centerContainer.height = containerHeight;\n        props.leftContainer.height = containerHeight;\n        props.rightContainer.height = props.leftContainer.height;\n\n        // calculate the widths of the panels\n        props.root.width = rootOffsetWidth;\n        props.background.width = props.root.width;\n\n        if (!this.initialDrawDone) {\n            props.scrollbarWidth = util.getScrollBarWidth();\n        }\n\n        const leftContainerClientWidth = dom.leftContainer.clientWidth;\n        const rightContainerClientWidth = dom.rightContainer.clientWidth;\n\n        if (options.verticalScroll) {\n            if (options.rtl) {\n                props.left.width = leftContainerClientWidth || -props.border.left;\n                props.right.width = rightContainerClientWidth + props.scrollbarWidth || -props.border.right;\n            } else {\n                props.left.width = leftContainerClientWidth + props.scrollbarWidth || -props.border.left;\n                props.right.width = rightContainerClientWidth || -props.border.right;\n            }\n        } else {\n            props.left.width = leftContainerClientWidth || -props.border.left;\n            props.right.width = rightContainerClientWidth || -props.border.right;\n        }\n\n        this._setDOM();\n\n        // update the scrollTop, feasible range for the offset can be changed\n        // when the height of the Core or of the contents of the center changed\n        let offset = this._updateScrollTop();\n\n        // reposition the scrollable contents\n        if (options.orientation.item != 'top') {\n            offset += Math.max(props.centerContainer.height - props.center.height -\n                props.border.top - props.border.bottom, 0);\n        }\n        dom.center.style.transform = `translateY(${offset}px)`;\n\n        // show shadows when vertical scrolling is available\n        const visibilityTop = props.scrollTop == 0 ? 'hidden' : '';\n        const visibilityBottom = props.scrollTop == props.scrollTopMin ? 'hidden' : '';\n        dom.shadowTop.style.visibility = visibilityTop;\n        dom.shadowBottom.style.visibility = visibilityBottom;\n        dom.shadowTopLeft.style.visibility = visibilityTop;\n        dom.shadowBottomLeft.style.visibility = visibilityBottom;\n        dom.shadowTopRight.style.visibility = visibilityTop;\n        dom.shadowBottomRight.style.visibility = visibilityBottom;\n\n        if (options.verticalScroll) {\n            dom.rightContainer.className = 'vis-panel vis-right vis-vertical-scroll';\n            dom.leftContainer.className = 'vis-panel vis-left vis-vertical-scroll';\n\n            dom.shadowTopRight.style.visibility = \"hidden\";\n            dom.shadowBottomRight.style.visibility = \"hidden\";\n            dom.shadowTopLeft.style.visibility = \"hidden\";\n            dom.shadowBottomLeft.style.visibility = \"hidden\";\n\n            dom.left.style.top = '0px';\n            dom.right.style.top = '0px';\n        }\n\n        if (!options.verticalScroll || props.center.height < props.centerContainer.height) {\n            dom.left.style.top = `${offset}px`;\n            dom.right.style.top = `${offset}px`;\n            dom.rightContainer.className = dom.rightContainer.className.replace(new RegExp('(?:^|\\\\s)' + 'vis-vertical-scroll' + '(?:\\\\s|$)'), ' ');\n            dom.leftContainer.className = dom.leftContainer.className.replace(new RegExp('(?:^|\\\\s)' + 'vis-vertical-scroll' + '(?:\\\\s|$)'), ' ');\n            props.left.width = leftContainerClientWidth || -props.border.left;\n            props.right.width = rightContainerClientWidth || -props.border.right;\n            this._setDOM();\n        }\n\n        // enable/disable vertical panning\n        const contentsOverflow = props.center.height > props.centerContainer.height;\n        this.hammer.get('pan').set({\n            direction: contentsOverflow ? Hammer.DIRECTION_ALL : Hammer.DIRECTION_HORIZONTAL\n        });\n\n        // set the long press time\n        this.hammer.get('press').set({\n            time: this.options.longSelectPressTime\n        });\n\n        // redraw all components\n        this.components.forEach(component => {\n            resized = component.redraw() || resized;\n        });\n        const MAX_REDRAW = 5;\n        if (resized) {\n            if (this.redrawCount < MAX_REDRAW) {\n                this.body.emitter.emit('_change');\n                return;\n            } else {\n                console.log('WARNING: infinite loop in redraw?');\n            }\n        } else {\n            this.redrawCount = 0;\n        }\n\n        //Emit public 'changed' event for UI updates, see issue #1592\n        this.body.emitter.emit(\"changed\");\n    }\n\n    /**\n     * sets the basic DOM components needed for the timeline\\graph2d\n     */\n    _setDOM() {\n        const props = this.props;\n        const dom = this.dom;\n\n        props.leftContainer.width = props.left.width;\n        props.rightContainer.width = props.right.width;\n        const centerWidth = props.root.width - props.left.width - props.right.width;\n        props.center.width = centerWidth;\n        props.centerContainer.width = centerWidth;\n        props.top.width = centerWidth;\n        props.bottom.width = centerWidth;\n\n        // resize the panels\n        dom.background.style.height = `${props.background.height}px`;\n        dom.backgroundVertical.style.height = `${props.background.height}px`;\n        dom.backgroundHorizontal.style.height = `${props.centerContainer.height}px`;\n        dom.centerContainer.style.height = `${props.centerContainer.height}px`;\n        dom.leftContainer.style.height = `${props.leftContainer.height}px`;\n        dom.rightContainer.style.height = `${props.rightContainer.height}px`;\n\n        dom.background.style.width = `${props.background.width}px`;\n        dom.backgroundVertical.style.width = `${props.centerContainer.width}px`;\n        dom.backgroundHorizontal.style.width = `${props.background.width}px`;\n        dom.centerContainer.style.width = `${props.center.width}px`;\n        dom.top.style.width = `${props.top.width}px`;\n        dom.bottom.style.width = `${props.bottom.width}px`;\n\n        // reposition the panels\n        dom.background.style.left = '0';\n        dom.background.style.top = '0';\n        dom.backgroundVertical.style.left = `${props.left.width + props.border.left}px`;\n        dom.backgroundVertical.style.top = '0';\n        dom.backgroundHorizontal.style.left = '0';\n        dom.backgroundHorizontal.style.top = `${props.top.height}px`;\n        dom.centerContainer.style.left = `${props.left.width}px`;\n        dom.centerContainer.style.top = `${props.top.height}px`;\n        dom.leftContainer.style.left = '0';\n        dom.leftContainer.style.top = `${props.top.height}px`;\n        dom.rightContainer.style.left = `${props.left.width + props.center.width}px`;\n        dom.rightContainer.style.top = `${props.top.height}px`;\n        dom.top.style.left = `${props.left.width}px`;\n        dom.top.style.top = '0';\n        dom.bottom.style.left = `${props.left.width}px`;\n        dom.bottom.style.top = `${props.top.height + props.centerContainer.height}px`;\n        dom.center.style.left = '0';\n        dom.left.style.left = '0';\n        dom.right.style.left = '0';\n    }\n\n    /**\n     * Set a current time. This can be used for example to ensure that a client's\n     * time is synchronized with a shared server time.\n     * Only applicable when option `showCurrentTime` is true.\n     * @param {Date | string | number} time     A Date, unix timestamp, or\n     *                                          ISO date string.\n     */\n    setCurrentTime(time) {\n        if (!this.currentTime) {\n            throw new Error('Option showCurrentTime must be true');\n        }\n\n        this.currentTime.setCurrentTime(time);\n    }\n\n    /**\n     * Get the current time.\n     * Only applicable when option `showCurrentTime` is true.\n     * @return {Date} Returns the current time.\n     */\n    getCurrentTime() {\n        if (!this.currentTime) {\n            throw new Error('Option showCurrentTime must be true');\n        }\n\n        return this.currentTime.getCurrentTime();\n    }\n\n    /**\n     * Convert a position on screen (pixels) to a datetime\n     * @param {int}     x    Position on the screen in pixels\n     * @return {Date}   time The datetime the corresponds with given position x\n     * @protected\n     * TODO: move this function to Range\n     */\n    _toTime(x) {\n        return DateUtil.toTime(this, x, this.props.center.width);\n    }\n\n    /**\n     * Convert a position on the global screen (pixels) to a datetime\n     * @param {int}     x    Position on the screen in pixels\n     * @return {Date}   time The datetime the corresponds with given position x\n     * @protected\n     * TODO: move this function to Range\n     */\n    _toGlobalTime(x) {\n        return DateUtil.toTime(this, x, this.props.root.width);\n        //var conversion = this.range.conversion(this.props.root.width);\n        //return new Date(x / conversion.scale + conversion.offset);\n    }\n\n    /**\n     * Convert a datetime (Date object) into a position on the screen\n     * @param {Date}   time A date\n     * @return {int}   x    The position on the screen in pixels which corresponds\n     *                      with the given date.\n     * @protected\n     * TODO: move this function to Range\n     */\n    _toScreen(time) {\n        return DateUtil.toScreen(this, time, this.props.center.width);\n    }\n\n    /**\n     * Convert a datetime (Date object) into a position on the root\n     * This is used to get the pixel density estimate for the screen, not the center panel\n     * @param {Date}   time A date\n     * @return {int}   x    The position on root in pixels which corresponds\n     *                      with the given date.\n     * @protected\n     * TODO: move this function to Range\n     */\n    _toGlobalScreen(time) {\n        return DateUtil.toScreen(this, time, this.props.root.width);\n        //var conversion = this.range.conversion(this.props.root.width);\n        //return (time.valueOf() - conversion.offset) * conversion.scale;\n    }\n\n    /**\n     * Initialize watching when option autoResize is true\n     * @private\n     */\n    _initAutoResize() {\n        if (this.options.autoResize == true) {\n            this._startAutoResize();\n        } else {\n            this._stopAutoResize();\n        }\n    }\n\n    /**\n     * Watch for changes in the size of the container. On resize, the Panel will\n     * automatically redraw itself.\n     * @private\n     */\n    _startAutoResize() {\n        const me = this;\n\n        this._stopAutoResize();\n\n        this._onResize = () => {\n            if (me.options.autoResize != true) {\n                // stop watching when the option autoResize is changed to false\n                me._stopAutoResize();\n                return;\n            }\n\n            if (me.dom.root) {\n                const rootOffsetHeight = me.dom.root.offsetHeight;\n                const rootOffsetWidth = me.dom.root.offsetWidth;\n                // check whether the frame is resized\n                // Note: we compare offsetWidth here, not clientWidth. For some reason,\n                // IE does not restore the clientWidth from 0 to the actual width after\n                // changing the timeline's container display style from none to visible\n                if ((rootOffsetWidth != me.props.lastWidth) ||\n                    (rootOffsetHeight != me.props.lastHeight)) {\n                    me.props.lastWidth = rootOffsetWidth;\n                    me.props.lastHeight = rootOffsetHeight;\n                    me.props.scrollbarWidth = util.getScrollBarWidth();\n\n                    me.body.emitter.emit('_change');\n                }\n            }\n        };\n\n        // add event listener to window resize\n        window.addEventListener('resize', this._onResize);\n\n        //Prevent initial unnecessary redraw\n        if (me.dom.root) {\n            me.props.lastWidth = me.dom.root.offsetWidth;\n            me.props.lastHeight = me.dom.root.offsetHeight;\n        }\n\n        this.watchTimer = setInterval(this._onResize, 1000);\n    }\n\n    /**\n     * Stop watching for a resize of the frame.\n     * @private\n     */\n    _stopAutoResize() {\n        if (this.watchTimer) {\n            clearInterval(this.watchTimer);\n            this.watchTimer = undefined;\n        }\n\n        // remove event listener on window.resize\n        if (this._onResize) {\n            window.removeEventListener('resize', this._onResize);\n            this._onResize = null;\n        }\n    }\n\n    /**\n     * Start moving the timeline vertically\n     * @param {Event} event\n     * @private\n     */\n    _onTouch(event) {  // eslint-disable-line no-unused-vars\n        this.touch.allowDragging = true;\n        this.touch.initialScrollTop = this.props.scrollTop;\n    }\n\n    /**\n     * Start moving the timeline vertically\n     * @param {Event} event\n     * @private\n     */\n    _onPinch(event) {  // eslint-disable-line no-unused-vars\n        this.touch.allowDragging = false;\n    }\n\n    /**\n     * Move the timeline vertically\n     * @param {Event} event\n     * @private\n     */\n    _onDrag(event) {\n        if (!event) return\n        // refuse to drag when we where pinching to prevent the timeline make a jump\n        // when releasing the fingers in opposite order from the touch screen\n        if (!this.touch.allowDragging) return;\n\n        const delta = event.deltaY;\n\n        const oldScrollTop = this._getScrollTop();\n        const newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta);\n\n        if (this.options.verticalScroll) {\n            this.dom.left.parentNode.scrollTop = -this.props.scrollTop;\n            this.dom.right.parentNode.scrollTop = -this.props.scrollTop;\n        }\n\n        if (newScrollTop != oldScrollTop) {\n            this.emit(\"verticalDrag\");\n        }\n    }\n\n    /**\n     * Apply a scrollTop\n     * @param {number} scrollTop\n     * @returns {number} scrollTop  Returns the applied scrollTop\n     * @private\n     */\n    _setScrollTop(scrollTop) {\n        this.props.scrollTop = scrollTop;\n        this._updateScrollTop();\n        return this.props.scrollTop;\n    }\n\n    /**\n     * Update the current scrollTop when the height of  the containers has been changed\n     * @returns {number} scrollTop  Returns the applied scrollTop\n     * @private\n     */\n    _updateScrollTop() {\n        // recalculate the scrollTopMin\n        const scrollTopMin = Math.min(this.props.centerContainer.height - this.props.border.top - this.props.border.bottom - this.props.center.height, 0); // is negative or zero\n        if (scrollTopMin != this.props.scrollTopMin) {\n            // in case of bottom orientation, change the scrollTop such that the contents\n            // do not move relative to the time axis at the bottom\n            if (this.options.orientation.item != 'top') {\n                this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin);\n            }\n            this.props.scrollTopMin = scrollTopMin;\n        }\n\n        // limit the scrollTop to the feasible scroll range\n        if (this.props.scrollTop > 0) this.props.scrollTop = 0;\n        if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin;\n\n        if (this.options.verticalScroll) {\n            this.dom.left.parentNode.scrollTop = -this.props.scrollTop;\n            this.dom.right.parentNode.scrollTop = -this.props.scrollTop;\n        }\n        return this.props.scrollTop;\n    }\n\n    /**\n     * Get the current scrollTop\n     * @returns {number} scrollTop\n     * @private\n     */\n    _getScrollTop() {\n        return this.props.scrollTop;\n    }\n\n    /**\n     * Load a configurator\n     * [at]returns {Object}\n     * @private\n     */\n    _createConfigurator() {\n        throw new Error('Cannot invoke abstract method _createConfigurator');\n    }\n}\n\n// turn Core into an event emitter\nEmitter(Core.prototype);\n\nexport default Core;\n","import util from '../../util';\nimport Component from './Component';\nimport moment from '../../module/moment';\nimport locales from '../locales';\n\n/**\n * A current time bar\n */\nclass CurrentTime extends Component {\n/**\n * @param {{range: Range, dom: Object, domProps: Object}} body\n * @param {Object} [options]        Available parameters:\n *                                  {Boolean} [showCurrentTime]\n *                                  {String}  [alignCurrentTime]\n * @constructor CurrentTime\n * @extends Component\n */\n  constructor(body, options) {\n    super()\n    this.body = body;\n\n    // default options\n    this.defaultOptions = {\n      rtl: false,\n      showCurrentTime: true,\n      alignCurrentTime: undefined,\n\n      moment,\n      locales,\n      locale: 'en'\n    };\n    this.options = util.extend({}, this.defaultOptions);\n    this.setOptions(options);\n    this.options.locales = util.extend({}, locales, this.options.locales);\n    const defaultLocales = this.defaultOptions.locales[this.defaultOptions.locale];\n    Object.keys(this.options.locales).forEach(locale => {\n      this.options.locales[locale] = util.extend(\n        {},\n        defaultLocales,\n        this.options.locales[locale]\n      );\n    });\n    this.offset = 0;\n\n    this._create();\n\n  }\n\n  /**\n   * Create the HTML DOM for the current time bar\n   * @private\n   */\n  _create() {\n    const bar = document.createElement('div');\n    bar.className = 'vis-current-time';\n    bar.style.position = 'absolute';\n    bar.style.top = '0px';\n    bar.style.height = '100%';\n\n    this.bar = bar;\n  }\n\n  /**\n   * Destroy the CurrentTime bar\n   */\n  destroy() {\n    this.options.showCurrentTime = false;\n    this.redraw(); // will remove the bar from the DOM and stop refreshing\n\n    this.body = null;\n  }\n\n  /**\n   * Set options for the component. Options will be merged in current options.\n   * @param {Object} options  Available parameters:\n   *                          {boolean} [showCurrentTime]\n   *                          {String}  [alignCurrentTime]\n   */\n  setOptions(options) {\n    if (options) {\n      // copy all options that we know\n      util.selectiveExtend(['rtl', 'showCurrentTime', 'alignCurrentTime', 'moment', 'locale', 'locales'], this.options, options);\n    }\n  }\n\n  /**\n   * Repaint the component\n   * @return {boolean} Returns true if the component is resized\n   */\n  redraw() {\n    if (this.options.showCurrentTime) {\n      const parent = this.body.dom.backgroundVertical;\n      if (this.bar.parentNode != parent) {\n        // attach to the dom\n        if (this.bar.parentNode) {\n          this.bar.parentNode.removeChild(this.bar);\n        }\n        parent.appendChild(this.bar);\n\n        this.start();\n      }\n\n      let now = this.options.moment(Date.now() + this.offset);\n\n      if (this.options.alignCurrentTime) {\n        now = now.startOf(this.options.alignCurrentTime);\n      }\n\n      const x = this.body.util.toScreen(now);\n\n      let locale = this.options.locales[this.options.locale];\n      if (!locale) {\n        if (!this.warned) {\n          console.warn(`WARNING: options.locales['${this.options.locale}'] not found. See https://visjs.github.io/vis-timeline/docs/timeline/#Localization`);\n          this.warned = true;\n        }\n        locale = this.options.locales['en']; // fall back on english when not available\n      }\n      let title = `${locale.current} ${locale.time}: ${now.format('dddd, MMMM Do YYYY, H:mm:ss')}`;\n      title = title.charAt(0).toUpperCase() + title.substring(1);\n\n      if (this.options.rtl) {\n        this.bar.style.transform = `translateX(${x * -1}px)`;\n      } else {\n        this.bar.style.transform = `translateX(${x}px)`;\n      }\n      this.bar.title = title;\n    }\n    else {\n      // remove the line from the DOM\n      if (this.bar.parentNode) {\n        this.bar.parentNode.removeChild(this.bar);\n      }\n      this.stop();\n    }\n\n    return false;\n  }\n\n  /**\n   * Start auto refreshing the current time bar\n   */\n  start() {\n    const me = this;\n\n      /**\n       *  Updates the current time.\n       */\n      function update () {\n      me.stop();\n\n      // determine interval to refresh\n      const scale = me.body.range.conversion(me.body.domProps.center.width).scale;\n      let interval = 1 / scale / 10;\n      if (interval < 30)   interval = 30;\n      if (interval > 1000) interval = 1000;\n\n      me.redraw();\n      me.body.emitter.emit('currentTimeTick');\n\n      // start a renderTimer to adjust for the new time\n      me.currentTimeTimer = setTimeout(update, interval);\n    }\n\n    update();\n  }\n\n  /**\n   * Stop auto refreshing the current time bar\n   */\n  stop() {\n    if (this.currentTimeTimer !== undefined) {\n      clearTimeout(this.currentTimeTimer);\n      delete this.currentTimeTimer;\n    }\n  }\n\n  /**\n   * Set a current time. This can be used for example to ensure that a client's\n   * time is synchronized with a shared server time.\n   * @param {Date | string | number} time     A Date, unix timestamp, or\n   *                                          ISO date string.\n   */\n  setCurrentTime(time) {\n    const t = util.convert(time, 'Date').valueOf();\n    const now = Date.now();\n    this.offset = t - now;\n    this.redraw();\n  }\n\n  /**\n   * Get the current time.\n   * @return {Date} Returns the current time.\n   */\n  getCurrentTime() {\n    return new Date(Date.now() + this.offset);\n  }\n}\n\nexport default CurrentTime;\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nrequire('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.find;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-findindex -- testing\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nrequire('../../../modules/es.array.find-index');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').findIndex;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find-index');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.findIndex;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findIndex) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/find-index');\n\nmodule.exports = parent;\n","// Utility functions for ordering and stacking of items\nconst EPSILON = 0.001; // used when checking collisions, to prevent round-off errors\n\n/**\n * Order items by their start data\n * @param {Item[]} items\n */\nexport function orderByStart(items) {\n  items.sort((a, b) => a.data.start - b.data.start);\n}\n\n/**\n * Order items by their end date. If they have no end date, their start date\n * is used.\n * @param {Item[]} items\n */\nexport function orderByEnd(items) {\n  items.sort((a, b) => {\n    const aTime = ('end' in a.data) ? a.data.end : a.data.start;\n    const bTime = ('end' in b.data) ? b.data.end : b.data.start;\n\n    return aTime - bTime;\n  });\n}\n\n/**\n * Adjust vertical positions of the items such that they don't overlap each\n * other.\n * @param {Item[]} items\n *            All visible items\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n *            Margins between items and between items and the axis.\n * @param {boolean} [force=false]\n *            If true, all items will be repositioned. If false (default), only\n *            items having a top===null will be re-stacked\n * @param {function} shouldBailItemsRedrawFunction\n *            bailing function\n * @return {boolean} shouldBail\n */\nexport function stack(items, margin, force, shouldBailItemsRedrawFunction) {\n  const stackingResult = performStacking(\n    items,\n    margin.item,\n    false,\n    item => item.stack && (force || item.top === null),\n    item => item.stack,\n    item => margin.axis,\n    shouldBailItemsRedrawFunction\n  );\n\n  // If shouldBail function returned true during stacking calculation\n  return stackingResult === null;\n}\n\n/**\n * Adjust vertical positions of the items within a single subgroup such that they\n * don't overlap each other.\n * @param {Item[]} items\n *            All items withina subgroup\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n *            Margins between items and between items and the axis.\n * @param {subgroup} subgroup\n *            The subgroup that is being stacked\n */\nexport function substack(items, margin, subgroup) {\n  const subgroupHeight = performStacking(\n    items,\n    margin.item,\n    false,\n    item => item.stack,\n    item => true,\n    item => item.baseTop\n  );\n  subgroup.height = subgroupHeight - subgroup.top + 0.5 * margin.item.vertical;\n}\n\n/**\n * Adjust vertical positions of the items without stacking them\n * @param {Item[]} items\n *            All visible items\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n *            Margins between items and between items and the axis.\n * @param {subgroups[]} subgroups\n *            All subgroups\n * @param {boolean} isStackSubgroups\n */\nexport function nostack(items, margin, subgroups, isStackSubgroups) {\n  for (let i = 0; i < items.length; i++) {\n    if (items[i].data.subgroup == undefined) {\n      items[i].top = margin.item.vertical;\n    } else if (items[i].data.subgroup !== undefined && isStackSubgroups) {\n      let newTop = 0;\n      for (const subgroup in subgroups) {\n        if (subgroups.hasOwnProperty(subgroup)) {\n          if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) {\n            newTop += subgroups[subgroup].height;\n            subgroups[items[i].data.subgroup].top = newTop;\n          }\n        }\n      }\n      items[i].top = newTop + 0.5 * margin.item.vertical;\n    }\n  }\n  if (!isStackSubgroups) {\n    stackSubgroups(items, margin, subgroups)\n  }\n}\n\n/**\n * Adjust vertical positions of the subgroups such that they don't overlap each\n * other.\n * @param {Array.<timeline.Item>} items\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin Margins between items and between items and the axis.\n * @param {subgroups[]} subgroups\n *            All subgroups\n */\nexport function stackSubgroups(items, margin, subgroups) {\n  performStacking(\n    Object.values(subgroups).sort((a, b) => {\n      if(a.index > b.index) return 1; \n      if(a.index < b.index) return -1; \n      return 0; \n    }),\n    {\n      vertical: 0\n    },\n    true,\n    item => true,\n    item => true,\n    item => 0\n  );\n\n  for (let i = 0; i < items.length; i++) {\n    if (items[i].data.subgroup !== undefined) {\n      items[i].top = subgroups[items[i].data.subgroup].top + 0.5 * margin.item.vertical;\n    }\n  }\n}\n\n/**\n * Adjust vertical positions of the subgroups such that they don't overlap each\n * other, then stacks the contents of each subgroup individually.\n * @param {Item[]} subgroupItems\n *            All the items in a subgroup\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n *            Margins between items and between items and the axis.\n * @param {subgroups[]} subgroups\n *            All subgroups\n */\nexport function stackSubgroupsWithInnerStack(subgroupItems, margin, subgroups) {\n  let doSubStack = false;\n\n  // Run subgroups in their order (if any)\n  const subgroupOrder = [];\n\n  for(var subgroup in subgroups) {\n    if (subgroups[subgroup].hasOwnProperty(\"index\")) {\n      subgroupOrder[subgroups[subgroup].index] = subgroup;\n    }\n    else {\n      subgroupOrder.push(subgroup);\n    }\n  }\n\n  for(let j = 0; j < subgroupOrder.length; j++) {\n    subgroup = subgroupOrder[j];\n    if (subgroups.hasOwnProperty(subgroup)) {\n\n      doSubStack = doSubStack || subgroups[subgroup].stack;\n      subgroups[subgroup].top = 0;\n\n      for (const otherSubgroup in subgroups) {\n        if (subgroups[otherSubgroup].visible && subgroups[subgroup].index > subgroups[otherSubgroup].index) {\n          subgroups[subgroup].top += subgroups[otherSubgroup].height;\n        }\n      }\n\n      const items = subgroupItems[subgroup];\n      for(let i = 0; i < items.length; i++) {\n        if (items[i].data.subgroup !== undefined) {\n          items[i].top = subgroups[items[i].data.subgroup].top + 0.5 * margin.item.vertical;\n\n          if (subgroups[subgroup].stack) {\n            items[i].baseTop = items[i].top;\n          }\n        }\n      }\n\n      if (doSubStack && subgroups[subgroup].stack) {\n        substack(subgroupItems[subgroup], margin, subgroups[subgroup]);\n      }\n    }\n  }\n}\n\n\n\n/**\n * Reusable stacking function\n * \n * @param {Item[]} items \n * An array of items to consider during stacking.\n * @param {{horizontal: number, vertical: number}} margins\n * Margins to be used for collision checking and placement of items.\n * @param {boolean} compareTimes\n * By default, horizontal collision is checked based on the spatial position of the items (left/right and width).\n * If this argument is true, horizontal collision will instead be checked based on the start/end times of each item.\n * Vertical collision is always checked spatially.\n * @param {(Item) => number | null} shouldStack\n * A callback function which is called before we start to process an item. The return value indicates whether the item will be processed.\n * @param {(Item) => boolean} shouldOthersStack\n * A callback function which indicates whether other items should consider this item when being stacked.\n * @param {(Item) => number} getInitialHeight\n * A callback function which determines the height items are initially placed at\n * @param {() => boolean} shouldBail \n * A callback function which should indicate if the stacking process should be aborted.\n * \n * @returns {null|number}\n * if shouldBail was triggered, returns null\n * otherwise, returns the maximum height\n */\nfunction performStacking(items, margins, compareTimes, shouldStack, shouldOthersStack, getInitialHeight, shouldBail) {\n  // Time-based horizontal comparison\n  let getItemStart = item => item.start;\n  let getItemEnd = item => item.end;\n  if(!compareTimes) {\n    // Spatial horizontal comparisons\n    const rtl = !!(items[0] && items[0].options.rtl);\n    if(rtl) {\n      getItemStart = item => item.right;\n    } else {\n      getItemStart = item => item.left;\n    }\n    getItemEnd = item => getItemStart(item) + item.width + margins.horizontal;\n  }\n\n  const itemsToPosition = [];\n  const itemsAlreadyPositioned = []; // It's vital that this array is kept sorted based on the start of each item\n\n  // If the order we needed to place items was based purely on the start of each item, we could calculate stacking very efficiently.\n  // Unfortunately for us, this is not guaranteed. But the order is often based on the start of items at least to some degree, and\n  // we can use this to make some optimisations. While items are proceeding in order of start, we can keep moving our search indexes\n  // forwards. Then if we encounter an item that's out of order, we reset our indexes and search from the beginning of the array again.\n  let previousStart = null;\n  let insertionIndex = 0;\n\n  // First let's handle any immoveable items\n  for(const item of items) {\n    if(shouldStack(item)) {\n      itemsToPosition.push(item);\n    } else {\n      if(shouldOthersStack(item)) {\n        const itemStart = getItemStart(item);\n\n        // We need to put immoveable items into itemsAlreadyPositioned and ensure that this array is sorted.\n        // We could simply insert them, and then use JavaScript's sort function to sort them afterwards.\n        // This would achieve an average complexity of O(n log n).\n        // \n        // Instead, I'm gambling that the start of each item will usually be the same or later than the\n        // start of the previous item. While this holds (best case), we can insert items in O(n).\n        // In the worst case (where each item starts before the previous item) this grows to O(n^2).\n        // \n        // I am making the assumption that for most datasets, the \"order\" function will have relatively low cardinality,\n        // and therefore this tradeoff should be easily worth it.\n        if(previousStart !== null && itemStart < previousStart - EPSILON) {\n          insertionIndex = 0;\n        }\n        previousStart = itemStart;\n\n        insertionIndex = findIndexFrom(itemsAlreadyPositioned, i => getItemStart(i) - EPSILON > itemStart, insertionIndex);\n\n        itemsAlreadyPositioned.splice(insertionIndex, 0, item);\n        insertionIndex++;\n      }\n    }\n  }\n\n  // Now we can loop through each item (in order) and find a position for them\n  previousStart = null;\n  let previousEnd = null;\n  insertionIndex = 0;\n  let horizontalOverlapStartIndex = 0;\n  let horizontalOverlapEndIndex = 0;\n  let maxHeight = 0;\n  while(itemsToPosition.length > 0) {\n    const item = itemsToPosition.shift();\n\n    item.top = getInitialHeight(item);\n\n    const itemStart = getItemStart(item);\n    const itemEnd = getItemEnd(item);\n    if(previousStart !== null && itemStart < previousStart - EPSILON) {\n      horizontalOverlapStartIndex = 0;\n      horizontalOverlapEndIndex = 0;\n      insertionIndex = 0;\n      previousEnd = null;\n    }\n    previousStart = itemStart;\n\n    // Take advantage of the sorted itemsAlreadyPositioned array to narrow down the search\n    horizontalOverlapStartIndex = findIndexFrom(itemsAlreadyPositioned, i => itemStart < getItemEnd(i) - EPSILON, horizontalOverlapStartIndex);\n    // Since items aren't sorted by end time, it might increase or decrease from one item to the next. In order to keep an efficient search area, we will seek forwards/backwards accordingly.\n    if(previousEnd === null || previousEnd < itemEnd - EPSILON) {\n      horizontalOverlapEndIndex = findIndexFrom(itemsAlreadyPositioned, i => itemEnd < getItemStart(i) - EPSILON, Math.max(horizontalOverlapStartIndex, horizontalOverlapEndIndex));\n    }\n    if(previousEnd !== null && previousEnd - EPSILON > itemEnd) {\n      horizontalOverlapEndIndex = findLastIndexBetween(itemsAlreadyPositioned, i => itemEnd + EPSILON >= getItemStart(i), horizontalOverlapStartIndex, horizontalOverlapEndIndex) + 1;\n    }\n\n    // Sort by vertical position so we don't have to reconsider past items if we move an item\n    const horizontallyCollidingItems = itemsAlreadyPositioned\n      .slice(horizontalOverlapStartIndex, horizontalOverlapEndIndex)\n      .filter(i => itemStart < getItemEnd(i) - EPSILON && itemEnd - EPSILON > getItemStart(i))\n      .sort((a, b) => a.top - b.top);\n\n    // Keep moving the item down until it stops colliding with any other items\n    for(let i2 = 0; i2 < horizontallyCollidingItems.length; i2++) {\n      const otherItem = horizontallyCollidingItems[i2];\n      \n      if(checkVerticalSpatialCollision(item, otherItem, margins)) {\n        item.top = otherItem.top + otherItem.height + margins.vertical;\n      }\n    }\n\n    if(shouldOthersStack(item)) {\n      // Insert the item into itemsAlreadyPositioned, ensuring itemsAlreadyPositioned remains sorted.\n      // In the best case, we can insert an item in constant time O(1). In the worst case, we insert an item in linear time O(n).\n      // In both cases, this is better than doing a naive insert and then sort, which would cost on average O(n log n).\n      insertionIndex = findIndexFrom(itemsAlreadyPositioned, i => getItemStart(i) - EPSILON > itemStart, insertionIndex);\n\n      itemsAlreadyPositioned.splice(insertionIndex, 0, item);\n      insertionIndex++;\n    }\n\n    // Keep track of the tallest item we've seen before\n    const currentHeight = item.top + item.height;\n    if(currentHeight > maxHeight) {\n      maxHeight = currentHeight;\n    }\n\n    if(shouldBail && shouldBail()) { return null; }\n  }\n\n  return maxHeight;\n}\n\n/**\n * Test if the two provided items collide\n * The items must have parameters left, width, top, and height.\n * @param {Item} a          The first item\n * @param {Item} b          The second item\n * @param {{vertical: number}} margin\n *                          An object containing a horizontal and vertical\n *                          minimum required margin.\n * @return {boolean}        true if a and b collide, else false\n */\nfunction checkVerticalSpatialCollision(a, b, margin) {\n  return (a.top - margin.vertical + EPSILON) < (b.top + b.height) &&\n  (a.top + a.height + margin.vertical - EPSILON) > b.top;\n}\n\n\n/**\n * Find index of first item to meet predicate after a certain index.\n * If no such item is found, returns the length of the array.\n * \n * @param {any[]} arr The array\n * @param {(item) => boolean} predicate A function that should return true when a suitable item is found\n * @param {number|undefined} startIndex The index to start search from (inclusive). Optional, if not provided will search from the beginning of the array.\n * \n * @return {number}\n */\nfunction findIndexFrom(arr, predicate, startIndex) {\n  if(!startIndex) {\n    startIndex = 0;\n  }\n  const matchIndex = arr.slice(startIndex).findIndex(predicate);\n  if(matchIndex === -1) {\n    return arr.length;\n  }\n  return matchIndex + startIndex;\n}\n\n/**\n * Find index of last item to meet predicate within a given range.\n * If no such item is found, returns the index prior to the start of the range.\n * \n * @param {any[]} arr The array\n * @param {(item) => boolean} predicate A function that should return true when a suitable item is found\n * @param {number|undefined} startIndex The earliest index to search to (inclusive). Optional, if not provided will continue until the start of the array.\n * @param {number|undefined} endIndex The end of the search range (exclusive). The search will begin on the index prior to this value. Optional, defaults to the end of array.\n * \n * @return {number}\n */\nfunction findLastIndexBetween(arr, predicate, startIndex, endIndex) {\n  if(!startIndex) {\n    startIndex = 0;\n  }\n  if(!endIndex) {\n    endIndex = arr.length;\n  }\n  for(i = endIndex - 1; i >= startIndex; i--) {\n    if(predicate(arr[i])) {\n      return i;\n    }\n  }\n  return startIndex - 1;\n}","import util from '../../util';\nimport * as stack from '../Stack';\n\nconst UNGROUPED = '__ungrouped__';   // reserved group id for ungrouped items\nconst BACKGROUND = '__background__'; // reserved group id for background items without group\n\nexport const ReservedGroupIds = {\n  UNGROUPED,\n  BACKGROUND\n}\n\n\n/**\n * @constructor Group\n */\nclass Group {\n  /**\n * @param {number | string} groupId\n * @param {Object} data\n * @param {ItemSet} itemSet\n * @constructor Group\n */\n  constructor(groupId, data, itemSet) {\n    this.groupId = groupId;\n    this.subgroups = {};\n    this.subgroupStack = {};\n    this.subgroupStackAll = false;\n    this.subgroupVisibility = {};\n    this.doInnerStack = false;\n    this.shouldBailStackItems = false;\n    this.subgroupIndex = 0;\n    this.subgroupOrderer = data && data.subgroupOrder;\n    this.itemSet = itemSet;\n    this.isVisible = null;\n    this.stackDirty = true; // if true, items will be restacked on next redraw\n\n    // This is a stack of functions (`() => void`) that will be executed before\n    // the instance is disposed off (method `dispose`). Anything that needs to\n    // be manually disposed off before garbage collection happens (or so that\n    // garbage collection can happen) should be added to this stack.\n    this._disposeCallbacks = [];\n\n    if (data && data.nestedGroups) {\n      this.nestedGroups = data.nestedGroups;\n      if (data.showNested == false) {\n        this.showNested = false;\n      } else {\n        this.showNested = true;\n      }\n    }\n\n    if (data && data.subgroupStack) {\n      if (typeof data.subgroupStack === \"boolean\") {\n        this.doInnerStack = data.subgroupStack;\n        this.subgroupStackAll = data.subgroupStack;\n      }\n      else {\n        // We might be doing stacking on specific sub groups, but only\n        // if at least one is set to do stacking\n        for(const key in data.subgroupStack) {\n          this.subgroupStack[key] = data.subgroupStack[key];\n          this.doInnerStack = this.doInnerStack || data.subgroupStack[key];\n        }\n      }\n    }\n\n    if (data && data.heightMode) {\n      this.heightMode = data.heightMode;\n    } else {\n      this.heightMode = itemSet.options.groupHeightMode;\n    }\n\n    this.nestedInGroup = null;\n\n    this.dom = {};\n    this.props = {\n      label: {\n        width: 0,\n        height: 0\n      }\n    };\n    this.className = null;\n\n    this.items = {};        // items filtered by groupId of this group\n    this.visibleItems = []; // items currently visible in window\n    this.itemsInRange = []; // items currently in range\n    this.orderedItems = {\n      byStart: [],\n      byEnd: []\n    };\n    this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap.\n\n    const handleCheckRangedItems = () => {\n      this.checkRangedItems = true;\n    };\n    this.itemSet.body.emitter.on(\"checkRangedItems\", handleCheckRangedItems);\n    this._disposeCallbacks.push(() => {\n      this.itemSet.body.emitter.off(\"checkRangedItems\", handleCheckRangedItems);\n    });\n\n    this._create();\n\n    this.setData(data);\n  }\n\n  /**\n   * Create DOM elements for the group\n   * @private\n   */\n  _create() {\n    const label = document.createElement('div');\n    if (this.itemSet.options.groupEditable.order) {\n      label.className = 'vis-label draggable';\n    } else {\n      label.className = 'vis-label';\n    }\n    this.dom.label = label;\n\n    const inner = document.createElement('div');\n    inner.className = 'vis-inner';\n    label.appendChild(inner);\n    this.dom.inner = inner;\n\n    const foreground = document.createElement('div');\n    foreground.className = 'vis-group';\n    foreground['vis-group'] = this;\n    this.dom.foreground = foreground;\n\n    this.dom.background = document.createElement('div');\n    this.dom.background.className = 'vis-group';\n\n    this.dom.axis = document.createElement('div');\n    this.dom.axis.className = 'vis-group';\n\n    // create a hidden marker to detect when the Timelines container is attached\n    // to the DOM, or the style of a parent of the Timeline is changed from\n    // display:none is changed to visible.\n    this.dom.marker = document.createElement('div');\n    this.dom.marker.style.visibility = 'hidden';\n    this.dom.marker.style.position = 'absolute';\n    this.dom.marker.innerHTML = '';\n    this.dom.background.appendChild(this.dom.marker);\n  }\n\n  /**\n   * Set the group data for this group\n   * @param {Object} data   Group data, can contain properties content and className\n   */\n  setData(data) {\n    if (this.itemSet.groupTouchParams.isDragging) return;\n\n    // update contents\n    let content;\n    let templateFunction;\n\n    if (data && data.subgroupVisibility) {\n      for (const key in data.subgroupVisibility) {\n        this.subgroupVisibility[key] = data.subgroupVisibility[key];\n      }\n    }\n\n    if (this.itemSet.options && this.itemSet.options.groupTemplate) {\n      templateFunction = this.itemSet.options.groupTemplate.bind(this);\n      content = templateFunction(data, this.dom.inner);\n    } else {\n      content = data && data.content;\n    }\n\n    if (content instanceof Element) {\n      while (this.dom.inner.firstChild) {\n        this.dom.inner.removeChild(this.dom.inner.firstChild);\n      }\n      this.dom.inner.appendChild(content);\n    } else if (content instanceof Object && content.isReactComponent) {\n      // Do nothing. Component was rendered into the node be ReactDOM.render.\n      // That branch is necessary for evasion of a second call templateFunction.\n      // Supports only React < 16(due to the asynchronous nature of React 16).\n    } else if (content instanceof Object) {\n      templateFunction(data, this.dom.inner);\n    } else if (content !== undefined && content !== null) {\n      this.dom.inner.innerHTML = util.xss(content);\n    } else {\n      this.dom.inner.innerHTML = util.xss(this.groupId || ''); // groupId can be null\n    }\n\n    // update title\n    this.dom.label.title = data && data.title || '';\n    if (!this.dom.inner.firstChild) {\n      util.addClassName(this.dom.inner, 'vis-hidden');\n    }\n    else {\n      util.removeClassName(this.dom.inner, 'vis-hidden');\n    }\n\n    if (data && data.nestedGroups) {\n      if (!this.nestedGroups || this.nestedGroups != data.nestedGroups) {\n        this.nestedGroups = data.nestedGroups;\n      }\n\n      if (data.showNested !== undefined || this.showNested === undefined) {\n        if (data.showNested == false) {\n          this.showNested = false;\n        } else {\n          this.showNested = true;\n        }\n      }\n\n      util.addClassName(this.dom.label, 'vis-nesting-group');\n      if (this.showNested) {\n        util.removeClassName(this.dom.label, 'collapsed');\n        util.addClassName(this.dom.label, 'expanded');\n      } else {\n        util.removeClassName(this.dom.label, 'expanded');\n        util.addClassName(this.dom.label, 'collapsed');\n      }\n    } else if (this.nestedGroups) {\n      this.nestedGroups = null;\n      util.removeClassName(this.dom.label, 'collapsed');\n      util.removeClassName(this.dom.label, 'expanded');\n      util.removeClassName(this.dom.label, 'vis-nesting-group');\n    }\n\n    if (data && (data.treeLevel|| data.nestedInGroup)) {\n      util.addClassName(this.dom.label, 'vis-nested-group');\n      if (data.treeLevel) {\n        util.addClassName(this.dom.label, 'vis-group-level-' + data.treeLevel);\n      } else {\n        // Nesting level is unknown, but we're sure it's at least 1\n        util.addClassName(this.dom.label, 'vis-group-level-unknown-but-gte1');\n      }\n    } else {\n      util.addClassName(this.dom.label, 'vis-group-level-0');\n    }\n    \n    // update className\n    const className = data && data.className || null;\n    if (className != this.className) {\n      if (this.className) {\n        util.removeClassName(this.dom.label, this.className);\n        util.removeClassName(this.dom.foreground, this.className);\n        util.removeClassName(this.dom.background, this.className);\n        util.removeClassName(this.dom.axis, this.className);\n      }\n      util.addClassName(this.dom.label, className);\n      util.addClassName(this.dom.foreground, className);\n      util.addClassName(this.dom.background, className);\n      util.addClassName(this.dom.axis, className);\n      this.className = className;\n    }\n\n    // update style\n    if (this.style) {\n      util.removeCssText(this.dom.label, this.style);\n      this.style = null;\n    }\n    if (data && data.style) {\n      util.addCssText(this.dom.label, data.style);\n      this.style = data.style;\n    }\n  }\n\n  /**\n   * Get the width of the group label\n   * @return {number} width\n   */\n  getLabelWidth() {\n    return this.props.label.width;\n  }\n\n  /**\n   * check if group has had an initial height hange\n   * @returns {boolean} \n   */\n  _didMarkerHeightChange() {\n    const markerHeight = this.dom.marker.clientHeight;\n    if (markerHeight != this.lastMarkerHeight) {\n      this.lastMarkerHeight = markerHeight;\n      const redrawQueue = {};\n      let redrawQueueLength = 0;\n\n      util.forEach(this.items, (item, key) => {\n        item.dirty = true;\n        if (item.displayed) {\n          const returnQueue = true;\n          redrawQueue[key] = item.redraw(returnQueue);\n          redrawQueueLength = redrawQueue[key].length;\n        }\n      })\n\n      const needRedraw = redrawQueueLength > 0;\n      if (needRedraw) {\n        // redraw all regular items\n        for (let i = 0; i < redrawQueueLength; i++) {\n          util.forEach(redrawQueue, fns => {\n            fns[i]();\n          });\n        }\n      }\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * calculate group dimentions and position\n   * @param {number} pixels\n   */\n  _calculateGroupSizeAndPosition() {\n    const { offsetTop, offsetLeft, offsetWidth } = this.dom.foreground;\n    this.top = offsetTop;\n    this.right = offsetLeft;\n    this.width = offsetWidth;\n  }\n\n  /**\n   * checks if should bail redraw of items\n   * @returns {boolean} should bail \n   */\n  _shouldBailItemsRedraw() {\n    const me = this;\n    const timeoutOptions = this.itemSet.options.onTimeout;\n    const bailOptions = {\n      relativeBailingTime: this.itemSet.itemsSettingTime,\n      bailTimeMs: timeoutOptions && timeoutOptions.timeoutMs,\n      userBailFunction: timeoutOptions && timeoutOptions.callback,\n      shouldBailStackItems: this.shouldBailStackItems\n    };\n    let bail = null;\n    if (!this.itemSet.initialDrawDone) {\n      if (bailOptions.shouldBailStackItems) { return true; }\n      if (Math.abs(Date.now() - new Date(bailOptions.relativeBailingTime)) > bailOptions.bailTimeMs) {\n        if (bailOptions.userBailFunction && this.itemSet.userContinueNotBail == null) {\n          bailOptions.userBailFunction(didUserContinue => {\n            me.itemSet.userContinueNotBail = didUserContinue;\n            bail = !didUserContinue;\n          })\n        } else if (me.itemSet.userContinueNotBail == false) {\n          bail = true;\n        } else {\n          bail = false;\n        }\n      }\n    }\n\n    return bail;\n  }\n\n  /**\n   * redraws items\n   * @param {boolean} forceRestack\n   * @param {boolean} lastIsVisible\n   * @param {number} margin\n   * @param {object} range\n   * @private\n   */\n  _redrawItems(forceRestack, lastIsVisible, margin, range) {\n    const restack = forceRestack || this.stackDirty || this.isVisible && !lastIsVisible;\n\n    // if restacking, reposition visible items vertically\n    if (restack) {\n      const orderedItems = {\n        byEnd: this.orderedItems.byEnd.filter(item => !item.isCluster),\n        byStart: this.orderedItems.byStart.filter(item => !item.isCluster)\n      }\n\n      const orderedClusters = {\n        byEnd: [...new Set(this.orderedItems.byEnd.map(item => item.cluster).filter(item => !!item))],\n        byStart: [...new Set(this.orderedItems.byStart.map(item => item.cluster).filter(item => !!item))],\n      }\n\n     /**\n     * Get all visible items in range\n     * @return {array} items\n     */\n      const getVisibleItems = () => {\n        const visibleItems = this._updateItemsInRange(orderedItems, this.visibleItems.filter(item => !item.isCluster), range);\n        const visibleClusters = this._updateClustersInRange(orderedClusters, this.visibleItems.filter(item => item.isCluster), range);\n        return [...visibleItems, ...visibleClusters];\n      }\n\n      /**\n       * Get visible items grouped by subgroup\n       * @param {function} orderFn An optional function to order items inside the subgroups\n       * @return {Object}\n       */\n      const getVisibleItemsGroupedBySubgroup = orderFn => {\n        let visibleSubgroupsItems = {};\n        for (const subgroup in this.subgroups) {\n          const items = this.visibleItems.filter(item => item.data.subgroup === subgroup);\n          visibleSubgroupsItems[subgroup] = orderFn ? items.sort((a, b) => orderFn(a.data, b.data)) : items;\n        }\n        return visibleSubgroupsItems;\n      };\n\n      if (typeof this.itemSet.options.order === 'function') {\n        // a custom order function\n        //show all items\n        const me = this;\n        if (this.doInnerStack && this.itemSet.options.stackSubgroups) {\n          // Order the items within each subgroup\n          const visibleSubgroupsItems = getVisibleItemsGroupedBySubgroup(this.itemSet.options.order);\n          stack.stackSubgroupsWithInnerStack(visibleSubgroupsItems, margin, this.subgroups);\n          this.visibleItems = getVisibleItems();\n          this._updateSubGroupHeights(margin);\n        }\n        else {\n          this.visibleItems = getVisibleItems();\n          this._updateSubGroupHeights(margin);\n          // order all items and force a restacking\n           // order all items outside clusters and force a restacking\n          const customOrderedItems = this.visibleItems\n                                  .slice()\n                                  .filter(item => item.isCluster || (!item.isCluster && !item.cluster))\n                                  .sort((a, b) => {\n                                      return me.itemSet.options.order(a.data, b.data);\n                                  });\n          this.shouldBailStackItems = stack.stack(customOrderedItems, margin, true, this._shouldBailItemsRedraw.bind(this));\n        }\n      } else {\n        // no custom order function, lazy stacking\n        this.visibleItems = getVisibleItems();\n        this._updateSubGroupHeights(margin);\n\n        if (this.itemSet.options.stack) {\n          if (this.doInnerStack && this.itemSet.options.stackSubgroups) {\n            const visibleSubgroupsItems = getVisibleItemsGroupedBySubgroup();\n            stack.stackSubgroupsWithInnerStack(visibleSubgroupsItems, margin, this.subgroups);\n          }\n          else {\n            // TODO: ugly way to access options...\n            this.shouldBailStackItems = stack.stack(this.visibleItems, margin, true, this._shouldBailItemsRedraw.bind(this));\n          }\n        } else {\n          // no stacking\n          stack.nostack(this.visibleItems, margin, this.subgroups, this.itemSet.options.stackSubgroups);\n        }\n      }\n\n      for (let i = 0; i < this.visibleItems.length; i++) {\n        this.visibleItems[i].repositionX();\n        if (this.subgroupVisibility[this.visibleItems[i].data.subgroup] !== undefined) {\n          if (!this.subgroupVisibility[this.visibleItems[i].data.subgroup]) {\n            this.visibleItems[i].hide();\n          }\n        }\n      }\n\n      if (this.itemSet.options.cluster) {\n        util.forEach(this.items, item => {\n          if (item.cluster && item.displayed) {\n            item.hide();\n          }\n        });\n      }\n\n      if (this.shouldBailStackItems) {\n        this.itemSet.body.emitter.emit('destroyTimeline')\n      }\n      this.stackDirty = false;\n    }\n  }\n\n  /**\n   * check if group resized\n   * @param {boolean} resized\n   * @param {number} height\n   * @return {boolean} did resize\n   */\n  _didResize(resized, height) {\n    resized = util.updateProperty(this, 'height', height) || resized;\n    // recalculate size of label\n    const labelWidth = this.dom.inner.clientWidth;\n    const labelHeight = this.dom.inner.clientHeight;\n    resized = util.updateProperty(this.props.label, 'width', labelWidth) || resized;\n    resized = util.updateProperty(this.props.label, 'height', labelHeight) || resized;\n    return resized;\n  }\n\n  /**\n   * apply group height\n   * @param {number} height\n   */\n  _applyGroupHeight(height) {\n    this.dom.background.style.height = `${height}px`;\n    this.dom.foreground.style.height = `${height}px`;\n    this.dom.label.style.height = `${height}px`;\n  }\n\n  /**\n   * update vertical position of items after they are re-stacked and the height of the group is calculated\n   * @param {number} margin\n   */\n  _updateItemsVerticalPosition(margin) {\n    for (let i = 0, ii = this.visibleItems.length; i < ii; i++) {\n      const item = this.visibleItems[i];\n      item.repositionY(margin);\n      if (!this.isVisible && this.groupId != ReservedGroupIds.BACKGROUND) {\n        if (item.displayed) item.hide();\n      }\n    }\n  }\n\n  /**\n   * Repaint this group\n   * @param {{start: number, end: number}} range\n   * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n   * @param {boolean} [forceRestack=false]  Force restacking of all items\n   * @param {boolean} [returnQueue=false]  return the queue or if the group resized\n   * @return {boolean} Returns true if the group is resized or the redraw queue if returnQueue=true\n   */\n  redraw(range, margin, forceRestack, returnQueue) {\n    let resized = false;\n    const lastIsVisible = this.isVisible;\n    let height;\n\n    const queue = [\n      () => {\n        forceRestack = this._didMarkerHeightChange.call(this) || forceRestack;\n      },\n      \n      // recalculate the height of the subgroups\n      this._updateSubGroupHeights.bind(this, margin),\n\n      // calculate actual size and position\n      this._calculateGroupSizeAndPosition.bind(this),\n\n      () => {\n        this.isVisible = this._isGroupVisible.bind(this)(range, margin);\n      },\n      \n      () => {\n        this._redrawItems.bind(this)(forceRestack, lastIsVisible, margin, range)\n      },\n\n      // update subgroups\n      this._updateSubgroupsSizes.bind(this),\n\n      () => {\n        height = this._calculateHeight.bind(this)(margin);\n      },\n\n      // calculate actual size and position again\n      this._calculateGroupSizeAndPosition.bind(this),\n\n      () => {\n        resized = this._didResize.bind(this)(resized, height)\n      },\n\n      () => {\n        this._applyGroupHeight.bind(this)(height)\n      },\n\n      () => {\n        this._updateItemsVerticalPosition.bind(this)(margin)\n      },\n\n      (() => {\n        if (!this.isVisible && this.height) {\n          resized = false;\n        }\n        return resized\n      }).bind(this)\n    ];\n\n    if (returnQueue) {\n      return queue;\n    } else {\n      let result;\n      queue.forEach(fn => {\n        result = fn();\n      });\n      return result;\n    }\n  }\n\n  /**\n   * recalculate the height of the subgroups\n   *\n   * @param {{item: timeline.Item}} margin\n   * @private\n   */\n  _updateSubGroupHeights(margin) {\n    if (Object.keys(this.subgroups).length > 0) {\n      const me = this;\n\n      this._resetSubgroups();\n\n      util.forEach(this.visibleItems, item => {\n        if (item.data.subgroup !== undefined) {\n          me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height, item.height + margin.item.vertical);\n          me.subgroups[item.data.subgroup].visible = typeof this.subgroupVisibility[item.data.subgroup] === 'undefined' ? true : Boolean(this.subgroupVisibility[item.data.subgroup]);\n        }\n      });\n    }\n  }\n\n  /**\n   * check if group is visible\n   *\n   * @param {timeline.Range} range\n   * @param {{axis: timeline.DataAxis}} margin\n   * @returns {boolean} is visible\n   * @private\n   */\n  _isGroupVisible(range, margin) {\n    return (this.top <= range.body.domProps.centerContainer.height - range.body.domProps.scrollTop + margin.axis)\n    && (this.top + this.height + margin.axis >= - range.body.domProps.scrollTop);\n  }\n\n  /**\n   * recalculate the height of the group\n   * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n   * @returns {number} Returns the height\n   * @private\n   */\n  _calculateHeight(margin) {\n    // recalculate the height of the group\n    let height;\n\n    let items;\n\n    if (this.heightMode === 'fixed') {\n      items = util.toArray(this.items);\n    } else {\n      // default or 'auto'\n      items = this.visibleItems;\n    }\n\n    if (items.length > 0) {\n      let min = items[0].top;\n      let max = items[0].top + items[0].height;\n      util.forEach(items, item => {\n        min = Math.min(min, item.top);\n        max = Math.max(max, (item.top + item.height));\n      });\n      if (min > margin.axis) {\n        // there is an empty gap between the lowest item and the axis\n        const offset = min - margin.axis;\n        max -= offset;\n        util.forEach(items, item => {\n          item.top -= offset;\n        });\n      }\n      height = Math.ceil(max + margin.item.vertical / 2);\n      if (this.heightMode !== \"fitItems\") {\n        height = Math.max(height, this.props.label.height);\n      }\n    }\n    else {\n      height = 0 || this.props.label.height;\n    }\n    return height;\n  }\n\n  /**\n   * Show this group: attach to the DOM\n   */\n  show() {\n    if (!this.dom.label.parentNode) {\n      this.itemSet.dom.labelSet.appendChild(this.dom.label);\n    }\n\n    if (!this.dom.foreground.parentNode) {\n      this.itemSet.dom.foreground.appendChild(this.dom.foreground);\n    }\n\n    if (!this.dom.background.parentNode) {\n      this.itemSet.dom.background.appendChild(this.dom.background);\n    }\n\n    if (!this.dom.axis.parentNode) {\n      this.itemSet.dom.axis.appendChild(this.dom.axis);\n    }\n  }\n\n  /**\n   * Hide this group: remove from the DOM\n   */\n  hide() {\n    const label = this.dom.label;\n    if (label.parentNode) {\n      label.parentNode.removeChild(label);\n    }\n\n    const foreground = this.dom.foreground;\n    if (foreground.parentNode) {\n      foreground.parentNode.removeChild(foreground);\n    }\n\n    const background = this.dom.background;\n    if (background.parentNode) {\n      background.parentNode.removeChild(background);\n    }\n\n    const axis = this.dom.axis;\n    if (axis.parentNode) {\n      axis.parentNode.removeChild(axis);\n    }\n  }\n\n  /**\n   * Add an item to the group\n   * @param {Item} item\n   */\n  add(item) {\n    this.items[item.id] = item;\n    item.setParent(this);\n    this.stackDirty = true;\n    // add to\n    if (item.data.subgroup !== undefined) {\n      this._addToSubgroup(item);\n      this.orderSubgroups();\n    }\n\n    if (!this.visibleItems.includes(item)) {\n      const range = this.itemSet.body.range; // TODO: not nice accessing the range like this\n      this._checkIfVisible(item, this.visibleItems, range);\n    }\n  }\n\n  /**\n   * add item to subgroup\n   * @param {object} item\n   * @param {string} subgroupId\n   */\n  _addToSubgroup(item, subgroupId=item.data.subgroup) {\n    if (subgroupId != undefined && this.subgroups[subgroupId] === undefined) {\n      this.subgroups[subgroupId] = {\n        height: 0,\n        top: 0,\n        start: item.data.start,\n        end: item.data.end || item.data.start,\n        visible: false,\n        index: this.subgroupIndex,\n        items: [],\n        stack: this.subgroupStackAll || this.subgroupStack[subgroupId] || false\n      };\n      this.subgroupIndex++;\n    }\n\n\n    if (new Date(item.data.start) < new Date(this.subgroups[subgroupId].start)) {\n      this.subgroups[subgroupId].start = item.data.start;\n    }\n\n    const itemEnd = item.data.end || item.data.start;\n    if (new Date(itemEnd) > new Date(this.subgroups[subgroupId].end)) {\n      this.subgroups[subgroupId].end = itemEnd;\n    }\n\n    this.subgroups[subgroupId].items.push(item);\n  }\n\n  /**\n   * update subgroup sizes\n   */\n  _updateSubgroupsSizes() {\n    const me = this;\n    if (me.subgroups) {\n      for (const subgroup in me.subgroups) {\n        const initialEnd = me.subgroups[subgroup].items[0].data.end || me.subgroups[subgroup].items[0].data.start;\n        let newStart = me.subgroups[subgroup].items[0].data.start;\n        let newEnd = initialEnd - 1;\n\n        me.subgroups[subgroup].items.forEach(item => {\n          if (new Date(item.data.start) < new Date(newStart)) {\n            newStart = item.data.start;\n          }\n\n          const itemEnd = item.data.end || item.data.start;\n          if (new Date(itemEnd) > new Date(newEnd)) {\n            newEnd = itemEnd;\n          }\n        })\n\n        me.subgroups[subgroup].start = newStart;\n        me.subgroups[subgroup].end = new Date(newEnd - 1) // -1 to compensate for colliding end to start subgroups;\n\n      }\n    }\n  }\n\n  /**\n   * order subgroups\n   */\n  orderSubgroups() {\n    if (this.subgroupOrderer !== undefined) {\n      const sortArray = [];\n      if (typeof this.subgroupOrderer == 'string') {\n        for (const subgroup in this.subgroups) {\n          sortArray.push({subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]})\n        }\n        sortArray.sort((a, b) => a.sortField - b.sortField)\n      }\n      else if (typeof this.subgroupOrderer == 'function') {\n        for (const subgroup in this.subgroups) {\n          sortArray.push(this.subgroups[subgroup].items[0].data);\n        }\n        sortArray.sort(this.subgroupOrderer);\n      }\n\n      if (sortArray.length > 0) {\n        for (let i = 0; i < sortArray.length; i++) {\n          this.subgroups[sortArray[i].subgroup].index = i;\n        }\n      }\n    }\n  }\n\n  /**\n   * add item to subgroup\n   */\n  _resetSubgroups() {\n    for (const subgroup in this.subgroups) {\n      if (this.subgroups.hasOwnProperty(subgroup)) {\n        this.subgroups[subgroup].visible = false;\n        this.subgroups[subgroup].height = 0;\n      }\n    }\n  }\n\n  /**\n   * Remove an item from the group\n   * @param {Item} item\n   */\n  remove(item) {\n    delete this.items[item.id];\n    item.setParent(null);\n    this.stackDirty = true;\n\n    // remove from visible items\n    const index = this.visibleItems.indexOf(item);\n    if (index != -1) this.visibleItems.splice(index, 1);\n\n    if(item.data.subgroup !== undefined){\n      this._removeFromSubgroup(item);\n      this.orderSubgroups();\n    }\n  }\n\n  /**\n   * remove item from subgroup\n   * @param {object} item\n   * @param {string} subgroupId\n   */\n  _removeFromSubgroup(item, subgroupId=item.data.subgroup) {\n    if (subgroupId != undefined) {\n      const subgroup = this.subgroups[subgroupId];\n      if (subgroup){\n        const itemIndex = subgroup.items.indexOf(item);\n        //  Check the item is actually in this subgroup. How should items not in the group be handled?\n        if (itemIndex >= 0) {\n          subgroup.items.splice(itemIndex,1);\n          if (!subgroup.items.length){\n            delete this.subgroups[subgroupId];\n          } else {\n            this._updateSubgroupsSizes();\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Remove an item from the corresponding DataSet\n   * @param {Item} item\n   */\n  removeFromDataSet(item) {\n    this.itemSet.removeItem(item.id);\n  }\n\n  /**\n   * Reorder the items\n   */\n  order() {\n    const array = util.toArray(this.items);\n    const startArray = [];\n    const endArray = [];\n\n    for (let i = 0; i < array.length; i++) {\n      if (array[i].data.end !== undefined) {\n        endArray.push(array[i]);\n      }\n      startArray.push(array[i]);\n    }\n    this.orderedItems = {\n      byStart: startArray,\n      byEnd: endArray\n    };\n\n    stack.orderByStart(this.orderedItems.byStart);\n    stack.orderByEnd(this.orderedItems.byEnd);\n  }\n\n  /**\n   * Update the visible items\n   * @param {{byStart: Item[], byEnd: Item[]}} orderedItems   All items ordered by start date and by end date\n   * @param {Item[]} oldVisibleItems                          The previously visible items.\n   * @param {{start: number, end: number}} range              Visible range\n   * @return {Item[]} visibleItems                            The new visible items.\n   * @private\n   */\n  _updateItemsInRange(orderedItems, oldVisibleItems, range) {\n    const visibleItems = [];\n    const visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems\n\n    if (!this.isVisible && this.height !== undefined && this.groupId != ReservedGroupIds.BACKGROUND) {\n      for (let i = 0; i < oldVisibleItems.length; i++) {\n        var item = oldVisibleItems[i];\n        if (item.displayed) item.hide();\n      }\n      return visibleItems;\n    } \n\n    const interval = (range.end - range.start) / 4;\n    const lowerBound = range.start - interval;\n    const upperBound = range.end + interval;\n\n    // this function is used to do the binary search for items having start date only.\n    const startSearchFunction = value => {\n      if      (value < lowerBound)  {return -1;}\n      else if (value <= upperBound) {return  0;}\n      else                          {return  1;}\n    };\n\n    // this function is used to do the binary search for items having start and end dates (range).\n    const endSearchFunction = data => {\n      const {start, end} = data;\n      if      (end < lowerBound)    {return -1;}\n      else if (start <= upperBound) {return  0;}\n      else                          {return  1;}\n    }\n\n    // first check if the items that were in view previously are still in view.\n    // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window!\n    // also cleans up invisible items.\n    if (oldVisibleItems.length > 0) {\n      for (let i = 0; i < oldVisibleItems.length; i++) {\n        this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range);\n      }\n    }\n\n    // we do a binary search for the items that have only start values.\n    const initialPosByStart = util.binarySearchCustom(orderedItems.byStart, startSearchFunction, 'data','start');\n\n    // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values.\n    this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, item => item.data.start < lowerBound || item.data.start > upperBound);\n\n    // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown.\n    // We therefore have to brute force check all items in the byEnd list\n    if (this.checkRangedItems == true) {\n      this.checkRangedItems = false;\n      for (let i = 0; i < orderedItems.byEnd.length; i++) {\n        this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range);\n      }\n    }\n    else {\n      // we do a binary search for the items that have defined end times.\n      const initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, endSearchFunction, 'data');\n\n      // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values.\n      this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, item => item.data.end < lowerBound || item.data.start > upperBound);\n    }\n\n    const redrawQueue = {};\n    let redrawQueueLength = 0;\n\n    for (let i = 0; i < visibleItems.length; i++) {\n      const item = visibleItems[i];\n      if (!item.displayed) {\n        const returnQueue = true;\n        redrawQueue[i] = item.redraw(returnQueue);\n        redrawQueueLength = redrawQueue[i].length;\n      }\n    }\n\n    const needRedraw = redrawQueueLength > 0;\n    if (needRedraw) {\n      // redraw all regular items\n      for (let j = 0; j < redrawQueueLength; j++) {\n        util.forEach(redrawQueue, fns => {\n          fns[j]();\n        });\n      }\n    }\n\n    for (let i = 0; i < visibleItems.length; i++) {\n      visibleItems[i].repositionX();\n    }\n\n    return visibleItems;\n  }\n\n  /**\n   * trace visible items in group\n   * @param {number} initialPos\n   * @param {array} items\n   * @param {aray} visibleItems\n   * @param {object} visibleItemsLookup\n   * @param {function} breakCondition\n   */\n  _traceVisible(initialPos, items, visibleItems, visibleItemsLookup, breakCondition) {\n    if (initialPos != -1) {\n      for (let i = initialPos; i >= 0; i--) {\n        let item = items[i];\n        if (breakCondition(item)) {\n          break;\n        }\n        else {\n          if (!(item.isCluster  && !item.hasItems()) && !item.cluster) {\n            if (visibleItemsLookup[item.id] === undefined) {\n              visibleItemsLookup[item.id] = true;\n              visibleItems.push(item);\n            }\n          }\n        }\n      }\n\n      for (let i = initialPos + 1; i < items.length; i++) {\n        let item = items[i];\n        if (breakCondition(item)) {\n          break;\n        }\n        else {\n          if (!(item.isCluster && !item.hasItems()) && !item.cluster) {\n            if (visibleItemsLookup[item.id] === undefined) {\n              visibleItemsLookup[item.id] = true;\n              visibleItems.push(item);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * this function is very similar to the _checkIfInvisible() but it does not\n   * return booleans, hides the item if it should not be seen and always adds to\n   * the visibleItems.\n   * this one is for brute forcing and hiding.\n   *\n   * @param {Item} item\n   * @param {Array} visibleItems\n   * @param {{start:number, end:number}} range\n   * @private\n   */\n  _checkIfVisible(item, visibleItems, range) {\n      if (item.isVisible(range)) {\n        if (!item.displayed) item.show();\n        // reposition item horizontally\n        item.repositionX();\n        visibleItems.push(item);\n      }\n      else {\n        if (item.displayed) item.hide();\n      }\n  }\n\n  /**\n   * this function is very similar to the _checkIfInvisible() but it does not\n   * return booleans, hides the item if it should not be seen and always adds to\n   * the visibleItems.\n   * this one is for brute forcing and hiding.\n   *\n   * @param {Item} item\n   * @param {Array.<timeline.Item>} visibleItems\n   * @param {Object<number, boolean>} visibleItemsLookup\n   * @param {{start:number, end:number}} range\n   * @private\n   */\n  _checkIfVisibleWithReference(item, visibleItems, visibleItemsLookup, range) {\n    if (item.isVisible(range)) {\n      if (visibleItemsLookup[item.id] === undefined) {\n        visibleItemsLookup[item.id] = true;\n        visibleItems.push(item);\n      }\n    }\n    else {\n      if (item.displayed) item.hide();\n    }\n  }\n\n  /**\n   * Update the visible items\n   * @param {array} orderedClusters \n   * @param {array} oldVisibleClusters                         \n   * @param {{start: number, end: number}} range             \n   * @return {Item[]} visibleItems                            \n   * @private\n   */\n  _updateClustersInRange(orderedClusters, oldVisibleClusters, range) {\n    // Clusters can overlap each other so we cannot use binary search here\n    const visibleClusters = [];\n    const visibleClustersLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems\n  \n    if (oldVisibleClusters.length > 0) {\n      for (let i = 0; i < oldVisibleClusters.length; i++) {\n        this._checkIfVisibleWithReference(oldVisibleClusters[i], visibleClusters, visibleClustersLookup, range);\n      }\n    }\n  \n    for (let i = 0; i < orderedClusters.byStart.length; i++) {\n      this._checkIfVisibleWithReference(orderedClusters.byStart[i], visibleClusters, visibleClustersLookup, range);\n    }\n  \n    for (let i = 0; i < orderedClusters.byEnd.length; i++) {\n      this._checkIfVisibleWithReference(orderedClusters.byEnd[i], visibleClusters, visibleClustersLookup, range);\n    }\n  \n    const redrawQueue = {};\n    let redrawQueueLength = 0;\n  \n    for (let i = 0; i < visibleClusters.length; i++) {\n      const item = visibleClusters[i];\n      if (!item.displayed) {\n        const returnQueue = true;\n        redrawQueue[i] = item.redraw(returnQueue);\n        redrawQueueLength = redrawQueue[i].length;\n      }\n    }\n  \n    const needRedraw = redrawQueueLength > 0;\n    if (needRedraw) {\n      // redraw all regular items\n      for (var j = 0; j < redrawQueueLength; j++) {\n        util.forEach(redrawQueue, function (fns) {\n          fns[j]();\n        });\n      }\n    }\n  \n    for (let i = 0; i < visibleClusters.length; i++) {\n      visibleClusters[i].repositionX();\n    }\n    \n    return visibleClusters;\n  }\n\n  /**\n   * change item subgroup\n   * @param {object} item\n   * @param {string} oldSubgroup\n   * @param {string} newSubgroup\n   */\n  changeSubgroup(item, oldSubgroup, newSubgroup) {\n    this._removeFromSubgroup(item, oldSubgroup);\n    this._addToSubgroup(item, newSubgroup);\n    this.orderSubgroups();\n  }\n\n  /**\n   * Call this method before you lose the last reference to an instance of this.\n   * It will remove listeners etc.\n   */\n  dispose() {\n    this.hide();\n\n    let disposeCallback;\n    while ((disposeCallback = this._disposeCallbacks.pop())) {\n      disposeCallback();\n    }\n  }\n}\n\nexport default Group;\n","import Group from './Group'\n\n/**\n * @constructor BackgroundGroup\n * @extends Group\n */\nclass BackgroundGroup extends Group {\n  /**\n * @param {number | string} groupId\n * @param {Object} data\n * @param {ItemSet} itemSet\n */\n  constructor(groupId, data, itemSet) {\n    super(groupId, data, itemSet)\n    // Group.call(this, groupId, data, itemSet);\n\n    this.width = 0;\n    this.height = 0;\n    this.top = 0;\n    this.left = 0;\n  }\n\n  /**\n   * Repaint this group\n   * @param {{start: number, end: number}} range\n   * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n   * @param {boolean} [forceRestack=false]  Force restacking of all items\n   * @return {boolean} Returns true if the group is resized\n   */\n  redraw(range, margin, forceRestack) {  // eslint-disable-line no-unused-vars\n    const resized = false;\n\n    this.visibleItems = this._updateItemsInRange(this.orderedItems, this.visibleItems, range);\n\n    // calculate actual size\n    this.width = this.dom.background.offsetWidth;\n\n    // apply new height (just always zero for BackgroundGroup\n    this.dom.background.style.height  = '0';\n\n    // update vertical position of items after they are re-stacked and the height of the group is calculated\n    for (let i = 0, ii = this.visibleItems.length; i < ii; i++) {\n      const item = this.visibleItems[i];\n      item.repositionY(margin);\n    }\n\n    return resized;\n  }\n\n  /**\n   * Show this group: attach to the DOM\n   */\n  show() {\n    if (!this.dom.background.parentNode) {\n      this.itemSet.dom.background.appendChild(this.dom.background);\n    }\n  }\n}\n\nexport default BackgroundGroup;","import Hammer from '../../../module/hammer';\nimport util from '../../../util';\nimport moment from '../../../module/moment';\nimport locales from '../../locales';\n\nimport '../css/item.css';\n\n/**\n * Item\n */\nclass Item {\n  /**\n * @constructor Item\n * @param {Object} data             Object containing (optional) parameters type,\n *                                  start, end, content, group, className.\n * @param {{toScreen: function, toTime: function}} conversion\n *                                  Conversion functions from time to screen and vice versa\n * @param {Object} options          Configuration options\n *                                  // TODO: describe available options\n */\n  constructor(data, conversion, options) {\n    this.id = null;\n    this.parent = null;\n    this.data = data;\n    this.dom = null;\n    this.conversion = conversion || {};\n    this.defaultOptions = {\n      locales,\n      locale: 'en'\n    };\n    this.options = util.extend({}, this.defaultOptions, options);\n    this.options.locales = util.extend({}, locales, this.options.locales);\n    const defaultLocales = this.defaultOptions.locales[this.defaultOptions.locale];\n    Object.keys(this.options.locales).forEach(locale => {\n      this.options.locales[locale] = util.extend(\n        {},\n        defaultLocales,\n        this.options.locales[locale]\n      );\n    });\n    this.selected = false;\n    this.displayed = false;\n    this.groupShowing = true;\n    this.selectable = (options && options.selectable) || false;\n    this.dirty = true;\n\n    this.top = null;\n    this.right = null;\n    this.left = null;\n    this.width = null;\n    this.height = null;\n\n    this.setSelectability(data);\n\n    this.editable = null;\n    this._updateEditStatus();\n  }\n\n  /**\n   * Select current item\n   */\n  select() {\n    if (this.selectable) {\n      this.selected = true;\n      this.dirty = true;\n      if (this.displayed) this.redraw();\n    }\n  }\n\n  /**\n   * Unselect current item\n   */\n  unselect() {\n    this.selected = false;\n    this.dirty = true;\n    if (this.displayed) this.redraw();\n  }\n\n  /**\n   * Set data for the item. Existing data will be updated. The id should not\n   * be changed. When the item is displayed, it will be redrawn immediately.\n   * @param {Object} data\n   */\n  setData(data) {\n    const groupChanged = data.group != undefined && this.data.group != data.group;\n    if (groupChanged && this.parent != null) {\n      this.parent.itemSet._moveToGroup(this, data.group);\n    }\n\n    this.setSelectability(data);\n\n    if (this.parent) {\n      this.parent.stackDirty = true;\n    }\n    \n    const subGroupChanged = data.subgroup != undefined && this.data.subgroup != data.subgroup;\n    if (subGroupChanged && this.parent != null) {\n      this.parent.changeSubgroup(this, this.data.subgroup, data.subgroup);\n    }\n\n    this.data = data;\n    this._updateEditStatus();\n    this.dirty = true;\n    if (this.displayed) this.redraw();\n  }\n\n  /**\n   * Set whether the item can be selected.\n   * Can only be set/unset if the timeline's `selectable` configuration option is `true`.\n   * @param {Object} data `data` from `constructor` and `setData`\n   */\n  setSelectability(data) {\n    if (data) {\n      this.selectable = typeof data.selectable === 'undefined' ? true : Boolean(data.selectable);\n    }\n  }\n\n  /**\n   * Set a parent for the item\n   * @param {Group} parent\n   */\n  setParent(parent) {\n    if (this.displayed) {\n      this.hide();\n      this.parent = parent;\n      if (this.parent) {\n        this.show();\n      }\n    }\n    else {\n      this.parent = parent;\n    }\n  }\n\n  /**\n   * Check whether this item is visible inside given range\n   * @param {timeline.Range} range with a timestamp for start and end\n   * @returns {boolean} True if visible\n   */\n  isVisible(range) {  // eslint-disable-line no-unused-vars\n    return false;\n  }\n\n  /**\n   * Show the Item in the DOM (when not already visible)\n   * @return {Boolean} changed\n   */\n  show() {\n    return false;\n  }\n\n  /**\n   * Hide the Item from the DOM (when visible)\n   * @return {Boolean} changed\n   */\n  hide() {\n    return false;\n  }\n\n  /**\n   * Repaint the item\n   */\n  redraw() {\n    // should be implemented by the item\n  }\n\n  /**\n   * Reposition the Item horizontally\n   */\n  repositionX() {\n    // should be implemented by the item\n  }\n\n  /**\n   * Reposition the Item vertically\n   */\n  repositionY() {\n    // should be implemented by the item\n  }\n\n  /**\n   * Repaint a drag area on the center of the item when the item is selected\n   * @protected\n   */\n  _repaintDragCenter() {\n    if (this.selected && this.editable.updateTime && !this.dom.dragCenter) {\n      const me = this;\n      // create and show drag area\n      const dragCenter = document.createElement('div');\n      dragCenter.className = 'vis-drag-center';\n      dragCenter.dragCenterItem = this;\n      this.hammerDragCenter = new Hammer(dragCenter);\n\n      this.hammerDragCenter.on('tap', event => {\n        me.parent.itemSet.body.emitter.emit('click',  {\n          event,\n          item: me.id\n        });\n      });\n      this.hammerDragCenter.on('doubletap', event => {\n        event.stopPropagation();\n        me.parent.itemSet._onUpdateItem(me);\n        me.parent.itemSet.body.emitter.emit('doubleClick', {\n          event,\n          item: me.id\n        });\n      });\n      this.hammerDragCenter.on('panstart', event => {\n        // do not allow this event to propagate to the Range\n        event.stopPropagation();\n        me.parent.itemSet._onDragStart(event);\n      })\n      this.hammerDragCenter.on('panmove',  me.parent.itemSet._onDrag.bind(me.parent.itemSet));\n      this.hammerDragCenter.on('panend',   me.parent.itemSet._onDragEnd.bind(me.parent.itemSet));\n      // delay addition on item click for trackpads...\n      this.hammerDragCenter.get('press').set({time:10000});\n\n      if (this.dom.box) {\n        if (this.dom.dragLeft) {\n          this.dom.box.insertBefore(dragCenter, this.dom.dragLeft);\n        }\n        else {\n          this.dom.box.appendChild(dragCenter);\n        }\n      }\n      else if (this.dom.point) {\n        this.dom.point.appendChild(dragCenter);\n      }\n      \n      this.dom.dragCenter = dragCenter;\n    }\n    else if (!this.selected && this.dom.dragCenter) {\n      // delete drag area\n      if (this.dom.dragCenter.parentNode) {\n        this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter);\n      }\n      this.dom.dragCenter = null;\n      \n      if (this.hammerDragCenter) {\n        this.hammerDragCenter.destroy();\n        this.hammerDragCenter = null;\n      }\n    }\n  }\n\n  /**\n   * Repaint a delete button on the top right of the item when the item is selected\n   * @param {HTMLElement} anchor\n   * @protected\n   */\n  _repaintDeleteButton(anchor) {\n    const editable = ((this.options.editable.overrideItems || this.editable == null) && this.options.editable.remove) ||\n                   (!this.options.editable.overrideItems && this.editable != null && this.editable.remove);\n\n    if (this.selected && editable && !this.dom.deleteButton) {\n      // create and show button\n      const me = this;\n\n      const deleteButton = document.createElement('div');\n\n      if (this.options.rtl) {\n        deleteButton.className = 'vis-delete-rtl';\n      } else {\n        deleteButton.className = 'vis-delete';\n      }\n      let optionsLocale = this.options.locales[this.options.locale];\n      if (!optionsLocale) {\n        if (!this.warned) {\n          console.warn(`WARNING: options.locales['${this.options.locale}'] not found. See https://visjs.github.io/vis-timeline/docs/timeline/#Localization`);\n          this.warned = true;\n        }\n        optionsLocale = this.options.locales['en']; // fall back on english when not available\n      }\n      deleteButton.title = optionsLocale.deleteSelected;\n\n      // TODO: be able to destroy the delete button\n      this.hammerDeleteButton = new Hammer(deleteButton).on('tap', event => {\n        event.stopPropagation();\n        me.parent.removeFromDataSet(me);\n      });\n\n      anchor.appendChild(deleteButton);\n      this.dom.deleteButton = deleteButton;\n    }\n    else if ((!this.selected || !editable) && this.dom.deleteButton) {\n      // remove button\n      if (this.dom.deleteButton.parentNode) {\n        this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton);\n      }\n      this.dom.deleteButton = null;\n\n      if (this.hammerDeleteButton) {\n        this.hammerDeleteButton.destroy();\n        this.hammerDeleteButton = null;\n      }\n    }\n  }\n\n  /**\n   * Repaint a onChange tooltip on the top right of the item when the item is selected\n   * @param {HTMLElement} anchor\n   * @protected\n   */\n  _repaintOnItemUpdateTimeTooltip(anchor) {\n    if (!this.options.tooltipOnItemUpdateTime) return;\n\n    const editable = (this.options.editable.updateTime || \n                    this.data.editable === true) &&\n                   this.data.editable !== false;\n\n    if (this.selected && editable && !this.dom.onItemUpdateTimeTooltip) {\n      const onItemUpdateTimeTooltip = document.createElement('div');\n\n      onItemUpdateTimeTooltip.className = 'vis-onUpdateTime-tooltip';\n      anchor.appendChild(onItemUpdateTimeTooltip);\n      this.dom.onItemUpdateTimeTooltip = onItemUpdateTimeTooltip;\n\n    } else if (!this.selected && this.dom.onItemUpdateTimeTooltip) {\n      // remove button\n      if (this.dom.onItemUpdateTimeTooltip.parentNode) {\n        this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip);\n      }\n      this.dom.onItemUpdateTimeTooltip = null;\n    }\n\n    // position onChange tooltip\n    if (this.dom.onItemUpdateTimeTooltip) {\n\n      // only show when editing\n      this.dom.onItemUpdateTimeTooltip.style.visibility = this.parent.itemSet.touchParams.itemIsDragging ? 'visible' : 'hidden';\n      \n      // position relative to item's content\n      this.dom.onItemUpdateTimeTooltip.style.transform = 'translateX(-50%)';\n      this.dom.onItemUpdateTimeTooltip.style.left = '50%';\n\n      // position above or below the item depending on the item's position in the window\n      const tooltipOffset = 50; // TODO: should be tooltip height (depends on template)\n      const scrollTop = this.parent.itemSet.body.domProps.scrollTop;\n\n        // TODO: this.top for orientation:true is actually the items distance from the bottom... \n        // (should be this.bottom)\n      let itemDistanceFromTop; \n      if (this.options.orientation.item == 'top') {\n        itemDistanceFromTop = this.top;\n      } else {\n        itemDistanceFromTop = (this.parent.height - this.top - this.height)\n      }\n      const isCloseToTop = itemDistanceFromTop + this.parent.top - tooltipOffset < -scrollTop;\n\n      if (isCloseToTop) {\n        this.dom.onItemUpdateTimeTooltip.style.bottom = \"\";\n        this.dom.onItemUpdateTimeTooltip.style.top = `${this.height + 2}px`;\n      } else {\n        this.dom.onItemUpdateTimeTooltip.style.top = \"\";\n        this.dom.onItemUpdateTimeTooltip.style.bottom = `${this.height + 2}px`;\n      }\n      \n      // handle tooltip content\n      let content;\n      let templateFunction;\n\n      if (this.options.tooltipOnItemUpdateTime && this.options.tooltipOnItemUpdateTime.template) {\n        templateFunction = this.options.tooltipOnItemUpdateTime.template.bind(this);\n        content = templateFunction(this.data);\n      } else {\n        content = `start: ${moment(this.data.start).format('MM/DD/YYYY hh:mm')}`;\n        if (this.data.end) { \n          content += `<br> end: ${moment(this.data.end).format('MM/DD/YYYY hh:mm')}`;\n        }\n      }\n      this.dom.onItemUpdateTimeTooltip.innerHTML = util.xss(content);\n    }\n  }\n\n   /**\n   * get item data\n   * @return {object}\n   * @private\n   */\n  _getItemData() {\n    return this.parent.itemSet.itemsData.get(this.id);\n  }\n\n  /**\n   * Set HTML contents for the item\n   * @param {Element} element   HTML element to fill with the contents\n   * @private\n   */\n  _updateContents(element) {\n    let content;\n    let changed;\n    let templateFunction;\n    let itemVisibleFrameContent;\n    let visibleFrameTemplateFunction; \n    const itemData = this._getItemData(); // get a clone of the data from the dataset\n\n    const frameElement = this.dom.box || this.dom.point;\n    const itemVisibleFrameContentElement = frameElement.getElementsByClassName('vis-item-visible-frame')[0];\n\n    if (this.options.visibleFrameTemplate) {\n      visibleFrameTemplateFunction = this.options.visibleFrameTemplate.bind(this);\n      itemVisibleFrameContent = util.xss(visibleFrameTemplateFunction(itemData, itemVisibleFrameContentElement));\n    } else {\n      itemVisibleFrameContent = '';\n    }\n    \n    if (itemVisibleFrameContentElement) {\n      if ((itemVisibleFrameContent instanceof Object) && !(itemVisibleFrameContent instanceof Element)) {\n        visibleFrameTemplateFunction(itemData, itemVisibleFrameContentElement)\n      } else {\n         changed = this._contentToString(this.itemVisibleFrameContent) !== this._contentToString(itemVisibleFrameContent);\n         if (changed) {\n          // only replace the content when changed\n          if (itemVisibleFrameContent instanceof Element) {\n            itemVisibleFrameContentElement.innerHTML = '';\n            itemVisibleFrameContentElement.appendChild(itemVisibleFrameContent);\n          }\n          else if (itemVisibleFrameContent != undefined) {\n            itemVisibleFrameContentElement.innerHTML = util.xss(itemVisibleFrameContent);\n          }\n          else {\n            if (!(this.data.type == 'background' && this.data.content === undefined)) {\n              throw new Error(`Property \"content\" missing in item ${this.id}`);\n            }\n          }\n\n          this.itemVisibleFrameContent = itemVisibleFrameContent;\n         }\n      }\n    }\n\n    if (this.options.template) {\n      templateFunction = this.options.template.bind(this);\n      content = templateFunction(itemData, element, this.data);\n    } else {\n      content = this.data.content;\n    }\n\n    if ((content instanceof Object) && !(content instanceof Element)) {\n      templateFunction(itemData, element)\n    } else {\n      changed = this._contentToString(this.content) !== this._contentToString(content);\n      if (changed) {\n        // only replace the content when changed\n        if (content instanceof Element) {\n          element.innerHTML = '';\n          element.appendChild(content);\n        }\n        else if (content != undefined) {\n          element.innerHTML = util.xss(content);\n        }\n        else {\n          if (!(this.data.type == 'background' && this.data.content === undefined)) {\n            throw new Error(`Property \"content\" missing in item ${this.id}`);\n          }\n        }\n        this.content = content;\n      }\n    }\n  }\n\n  /**\n   * Process dataAttributes timeline option and set as data- attributes on dom.content\n   * @param {Element} element   HTML element to which the attributes will be attached\n   * @private\n   */\n  _updateDataAttributes(element) {\n   if (this.options.dataAttributes && this.options.dataAttributes.length > 0) {\n     let attributes = [];\n\n     if (Array.isArray(this.options.dataAttributes)) {\n       attributes = this.options.dataAttributes;\n     }\n     else if (this.options.dataAttributes == 'all') {\n       attributes = Object.keys(this.data);\n     }\n     else {\n       return;\n     }\n\n     for (const name of attributes) {\n       const value = this.data[name];\n\n       if (value != null) {\n         element.setAttribute(`data-${name}`, value);\n       }\n       else {\n         element.removeAttribute(`data-${name}`);\n       }\n     }\n   }\n }\n\n  /**\n   * Update custom styles of the element\n   * @param {Element} element\n   * @private\n   */\n  _updateStyle(element) {\n    // remove old styles\n    if (this.style) {\n      util.removeCssText(element, this.style);\n      this.style = null;\n    }\n\n    // append new styles\n    if (this.data.style) {\n      util.addCssText(element, this.data.style);\n      this.style = this.data.style;\n    }\n  }\n\n  /**\n   * Stringify the items contents\n   * @param {string | Element | undefined} content\n   * @returns {string | undefined}\n   * @private\n   */\n  _contentToString(content) {\n    if (typeof content === 'string') return content;\n    if (content && 'outerHTML' in content) return content.outerHTML;\n    return content;\n  }\n\n  /**\n   * Update the editability of this item.\n   */\n  _updateEditStatus() {\n    if (this.options) {\n      if(typeof this.options.editable === 'boolean') {\n        this.editable = {\n          updateTime: this.options.editable,\n          updateGroup: this.options.editable,\n          remove: this.options.editable\n        };\n      } else if(typeof this.options.editable === 'object') {\n          this.editable = {};\n          util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, this.options.editable);\n      }\n    }\n    // Item data overrides, except if options.editable.overrideItems is set.\n    if (!this.options || !(this.options.editable) || (this.options.editable.overrideItems !== true)) {\n      if (this.data) {\n        if (typeof this.data.editable === 'boolean') {\n          this.editable = {\n            updateTime: this.data.editable,\n            updateGroup: this.data.editable,\n            remove: this.data.editable\n          }\n        } else if (typeof this.data.editable === 'object') {\n          // TODO: in timeline.js 5.0, we should change this to not reset options from the timeline configuration.\n          // Basically just remove the next line...\n          this.editable = {};\n          util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, this.data.editable);\n        }\n      }\n    }\n  }\n\n  /**\n   * Return the width of the item left from its start date\n   * @return {number}\n   */\n  getWidthLeft() {\n    return 0;\n  }\n\n  /**\n   * Return the width of the item right from the max of its start and end date\n   * @return {number}\n   */\n  getWidthRight() {\n    return 0;\n  }\n\n  /**\n   * Return the title of the item\n   * @return {string | undefined}\n   */\n  getTitle() {\n    if (this.options.tooltip && this.options.tooltip.template) {\n      const templateFunction = this.options.tooltip.template.bind(this);\n      return templateFunction(this._getItemData(), this.data);\n    }\n\n    return this.data.title;\n  }\n}\n\nItem.prototype.stack = true;\n\nexport default Item;\n","import Item from './Item';\n\n/**\n * @constructor BoxItem\n * @extends Item\n */\nclass BoxItem extends Item {\n  /**\n * @param {Object} data             Object containing parameters start\n *                                  content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n *                                  Conversion functions from time to screen and vice versa\n * @param {Object} [options]        Configuration options\n *                                  // TODO: describe available options\n */\n  constructor(data, conversion, options) {\n    super(data, conversion, options)\n    this.props = {\n      dot: {\n        width: 0,\n        height: 0\n      },\n      line: {\n        width: 0,\n        height: 0\n      }\n    };\n    // validate data\n    if (data) {\n      if (data.start == undefined) {\n        throw new Error(`Property \"start\" missing in item ${data}`);\n      }\n    }\n  }\n\n  /**\n   * Check whether this item is visible inside given range\n   * @param {{start: number, end: number}} range with a timestamp for start and end\n   * @returns {boolean} True if visible\n   */\n  isVisible(range) {\n    if (this.cluster) {\n      return false;\n    }\n    // determine visibility\n    let isVisible;\n    const align = this.data.align || this.options.align;\n    const widthInMs = this.width * range.getMillisecondsPerPixel();\n\n    if (align == 'right') {\n      isVisible = (this.data.start.getTime() > range.start) && (this.data.start.getTime() - widthInMs < range.end);\n    }\n    else if (align == 'left') {\n      isVisible = (this.data.start.getTime() + widthInMs > range.start) && (this.data.start.getTime() < range.end);\n    }\n    else {\n      // default or 'center'\n      isVisible = (this.data.start.getTime() + widthInMs / 2 > range.start ) && (this.data.start.getTime() - widthInMs/2 < range.end);\n    }\n    return isVisible;\n  }\n\n   /**\n   * create DOM element\n   * @private\n   */\n  _createDomElement() {\n    if (!this.dom) {\n      // create DOM\n      this.dom = {};\n\n      // create main box\n      this.dom.box = document.createElement('DIV');\n\n      // contents box (inside the background box). used for making margins\n      this.dom.content = document.createElement('DIV');\n      this.dom.content.className = 'vis-item-content';\n      this.dom.box.appendChild(this.dom.content);\n\n      // line to axis\n      this.dom.line = document.createElement('DIV');\n      this.dom.line.className = 'vis-line';\n\n      // dot on axis\n      this.dom.dot = document.createElement('DIV');\n      this.dom.dot.className = 'vis-dot';\n\n      // attach this item as attribute\n      this.dom.box['vis-item'] = this;\n\n      this.dirty = true;\n    }\n  }\n\n  /**\n   * append DOM element\n   * @private\n   */\n  _appendDomElement() {\n    if (!this.parent) {\n      throw new Error('Cannot redraw item: no parent attached');\n    }\n    if (!this.dom.box.parentNode) {\n      const foreground = this.parent.dom.foreground;\n      if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element');\n      foreground.appendChild(this.dom.box);\n    }\n    if (!this.dom.line.parentNode) {\n      var background = this.parent.dom.background;\n      if (!background) throw new Error('Cannot redraw item: parent has no background container element');\n      background.appendChild(this.dom.line);\n    }\n    if (!this.dom.dot.parentNode) {\n      const axis = this.parent.dom.axis;\n      if (!background) throw new Error('Cannot redraw item: parent has no axis container element');\n      axis.appendChild(this.dom.dot);\n    }\n    this.displayed = true;\n  }\n\n  /**\n   * update dirty DOM element\n   * @private\n   */\n  _updateDirtyDomComponents() {\n    // An item is marked dirty when:\n    // - the item is not yet rendered\n    // - the item's data is changed\n    // - the item is selected/deselected\n    if (this.dirty) {\n      this._updateContents(this.dom.content);\n      this._updateDataAttributes(this.dom.box);\n      this._updateStyle(this.dom.box);\n\n      const editable = (this.editable.updateTime || this.editable.updateGroup);\n\n      // update class\n      const className = (this.data.className ? ' ' + this.data.className : '') +\n        (this.selected ? ' vis-selected' : '') +\n        (editable ? ' vis-editable' : ' vis-readonly');\n      this.dom.box.className = `vis-item vis-box${className}`;\n      this.dom.line.className = `vis-item vis-line${className}`;\n      this.dom.dot.className = `vis-item vis-dot${className}`;\n    }\n  }\n\n  /**\n   * get DOM components sizes\n   * @return {object}\n   * @private\n   */\n  _getDomComponentsSizes() {\n    return {\n      previous: {\n        right: this.dom.box.style.right,\n        left: this.dom.box.style.left\n      },\n      dot: {\n        height: this.dom.dot.offsetHeight,\n        width: this.dom.dot.offsetWidth\n      },\n      line: {\n        width: this.dom.line.offsetWidth\n      },\n      box: {\n        width: this.dom.box.offsetWidth,\n        height: this.dom.box.offsetHeight\n      }\n    }\n  }\n\n  /**\n   * update DOM components sizes\n   * @param {object} sizes\n   * @private\n   */\n  _updateDomComponentsSizes(sizes) {\n    if (this.options.rtl) {\n      this.dom.box.style.right = \"0px\";\n    } else {\n      this.dom.box.style.left = \"0px\";\n    }\n\n    // recalculate size\n    this.props.dot.height = sizes.dot.height;\n    this.props.dot.width = sizes.dot.width;\n    this.props.line.width = sizes.line.width;\n    this.width = sizes.box.width;\n    this.height = sizes.box.height;\n\n    // restore previous position\n    if (this.options.rtl) {\n      this.dom.box.style.right = sizes.previous.right;\n    } else {\n      this.dom.box.style.left = sizes.previous.left;\n    }\n\n    this.dirty = false;\n  }\n\n  /**\n   * repaint DOM additionals\n   * @private\n   */\n  _repaintDomAdditionals() {\n    this._repaintOnItemUpdateTimeTooltip(this.dom.box);\n    this._repaintDragCenter();\n    this._repaintDeleteButton(this.dom.box);\n  }\n\n  /**\n   * Repaint the item\n   * @param {boolean} [returnQueue=false]  return the queue\n   * @return {boolean} the redraw queue if returnQueue=true\n   */\n  redraw(returnQueue) {\n    let sizes;\n    const queue = [\n      // create item DOM\n      this._createDomElement.bind(this),\n\n      // append DOM to parent DOM\n      this._appendDomElement.bind(this),\n\n      // update dirty DOM\n      this._updateDirtyDomComponents.bind(this),\n\n      () => {\n        if (this.dirty) {\n          sizes = this._getDomComponentsSizes();\n        }\n      },\n\n      () => {\n        if (this.dirty) {\n          this._updateDomComponentsSizes.bind(this)(sizes);\n        }\n      },\n\n      // repaint DOM additionals\n      this._repaintDomAdditionals.bind(this)\n    ];\n\n    if (returnQueue) {\n      return queue;\n    } else {\n      let result;\n      queue.forEach(fn => {\n        result = fn();\n      });\n      return result;\n    }\n  }\n\n  /**\n   * Show the item in the DOM (when not already visible). The items DOM will\n   * be created when needed.\n   * @param {boolean} [returnQueue=false]  whether to return a queue of functions to execute instead of just executing them\n   * @return {boolean} the redraw queue if returnQueue=true\n   */\n  show(returnQueue) {\n    if (!this.displayed) {\n      return this.redraw(returnQueue);\n    }\n  }\n\n  /**\n   * Hide the item from the DOM (when visible)\n   */\n  hide() {\n    if (this.displayed) {\n      const dom = this.dom;\n\n      if (dom.box.remove) dom.box.remove();\n      else if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); // IE11\n\n      if (dom.line.remove) dom.line.remove();\n      else if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); // IE11\n      \n      if (dom.dot.remove) dom.dot.remove();\n      else if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); // IE11\n\n      this.displayed = false;\n    }\n  }\n\n  /**\n   * Reposition the item XY\n   */\n  repositionXY() {\n    const rtl = this.options.rtl;\n\n    const repositionXY = (element, x, y, rtl = false) => {\n      if (x === undefined && y === undefined) return;\n      // If rtl invert the number.\n      const directionX = rtl ? (x * -1) : x;\n\n      //no y. translate x\n      if (y === undefined) {\n        element.style.transform = `translateX(${directionX}px)`;\n        return;\n      }\n\n      //no x. translate y\n      if (x === undefined) {\n        element.style.transform = `translateY(${y}px)`;\n        return;\n      }\n\n      element.style.transform = `translate(${directionX}px, ${y}px)`;\n    }\n    repositionXY(this.dom.box, this.boxX, this.boxY, rtl);\n    repositionXY(this.dom.dot, this.dotX, this.dotY, rtl);\n    repositionXY(this.dom.line, this.lineX, this.lineY, rtl);\n  }\n\n  /**\n   * Reposition the item horizontally\n   * @Override\n   */\n  repositionX() {\n    const start = this.conversion.toScreen(this.data.start);\n    const align = this.data.align === undefined ? this.options.align : this.data.align\n    const lineWidth = this.props.line.width;\n    const dotWidth = this.props.dot.width;\n    \n    if (align == 'right') {\n      // calculate right position of the box\n      this.boxX = start - this.width;\n      this.lineX = start - lineWidth;\n      this.dotX = start - lineWidth / 2 - dotWidth / 2;\n    }\n    else if (align == 'left') {\n      // calculate left position of the box\n      this.boxX = start;\n      this.lineX = start;\n      this.dotX = start + lineWidth / 2 - dotWidth / 2;\n    }\n    else {\n      // default or 'center'\n      this.boxX = start - this.width / 2;\n      this.lineX = this.options.rtl ? start - lineWidth : start - lineWidth / 2;\n      this.dotX = start - dotWidth / 2;\n    }\n\n    if (this.options.rtl)\n      this.right = this.boxX;\n    else\n      this.left = this.boxX;\n\n    this.repositionXY();\n  }\n\n  /**\n   * Reposition the item vertically\n   * @Override\n   */\n  repositionY() {\n    const orientation = this.options.orientation.item;\n    const lineStyle = this.dom.line.style;\n\n    if (orientation == 'top') {\n      const lineHeight = this.parent.top + this.top + 1;\n\n      this.boxY = this.top || 0;\n      lineStyle.height = `${lineHeight}px`;\n      lineStyle.bottom = '';\n      lineStyle.top = '0';\n    }\n    else { // orientation 'bottom'\n      const itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty\n      const lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top;\n\n      this.boxY = this.parent.height - this.top - (this.height || 0);\n      lineStyle.height = `${lineHeight}px`;\n      lineStyle.top = '';\n      lineStyle.bottom = '0';\n    }\n\n    this.dotY = -this.props.dot.height / 2;\n\n    this.repositionXY();\n  }\n\n  /**\n   * Return the width of the item left from its start date\n   * @return {number}\n   */\n  getWidthLeft() {\n    return this.width / 2;\n  }\n\n  /**\n   * Return the width of the item right from its start date\n   * @return {number}\n   */\n  getWidthRight() {\n    return this.width / 2;\n  }\n}\n\nexport default BoxItem;\n","import Item from './Item';\n\n/**\n * @constructor PointItem\n * @extends Item\n */\nclass PointItem extends Item {\n  /**\n * @param {Object} data             Object containing parameters start\n *                                  content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n *                                  Conversion functions from time to screen and vice versa\n * @param {Object} [options]        Configuration options\n *                                  // TODO: describe available options\n */\n  constructor(data, conversion, options) {\n    super(data, conversion, options)\n    this.props = {\n      dot: {\n        top: 0,\n        width: 0,\n        height: 0\n      },\n      content: {\n        height: 0,\n        marginLeft: 0,\n        marginRight: 0\n      }\n    };\n    // validate data\n    if (data) {\n      if (data.start == undefined) {\n        throw new Error(`Property \"start\" missing in item ${data}`);\n      }\n    }\n  }\n\n  /**\n   * Check whether this item is visible inside given range\n   * @param {{start: number, end: number}} range with a timestamp for start and end\n   * @returns {boolean} True if visible\n   */\n  isVisible(range) {\n    if (this.cluster) {\n      return false;\n    }\n    // determine visibility\n    const widthInMs = this.width * range.getMillisecondsPerPixel();\n\n    return (this.data.start.getTime() + widthInMs > range.start ) && (this.data.start < range.end);\n  }\n\n  /**\n   * create DOM element\n   * @private\n   */\n  _createDomElement() {\n    if (!this.dom) {\n      // create DOM\n      this.dom = {};\n\n      // background box\n      this.dom.point = document.createElement('div');\n      // className is updated in redraw()\n\n      // contents box, right from the dot\n      this.dom.content = document.createElement('div');\n      this.dom.content.className = 'vis-item-content';\n      this.dom.point.appendChild(this.dom.content);\n\n      // dot at start\n      this.dom.dot = document.createElement('div');\n      this.dom.point.appendChild(this.dom.dot);\n\n      // attach this item as attribute\n      this.dom.point['vis-item'] = this;\n\n      this.dirty = true;\n    }\n  }\n\n  /**\n   * append DOM element\n   * @private\n   */\n  _appendDomElement() {\n    if (!this.parent) {\n      throw new Error('Cannot redraw item: no parent attached');\n    }\n    if (!this.dom.point.parentNode) {\n      const foreground = this.parent.dom.foreground;\n      if (!foreground) {\n        throw new Error('Cannot redraw item: parent has no foreground container element');\n      }\n      foreground.appendChild(this.dom.point);\n    }\n    this.displayed = true;\n  }\n\n  /**\n   * update dirty DOM components\n   * @private\n   */\n  _updateDirtyDomComponents() {\n    // An item is marked dirty when:\n    // - the item is not yet rendered\n    // - the item's data is changed\n    // - the item is selected/deselected\n    if (this.dirty) {\n      this._updateContents(this.dom.content);\n      this._updateDataAttributes(this.dom.point);\n      this._updateStyle(this.dom.point);\n\n      const editable = (this.editable.updateTime || this.editable.updateGroup);\n      // update class\n      const className = (this.data.className ? ' ' + this.data.className : '') +\n          (this.selected ? ' vis-selected' : '') +\n          (editable ? ' vis-editable' : ' vis-readonly');\n      this.dom.point.className  = `vis-item vis-point${className}`;\n      this.dom.dot.className  = `vis-item vis-dot${className}`;\n    }\n  }\n\n  /**\n   * get DOM component sizes\n   * @return {object}\n   * @private\n   */\n  _getDomComponentsSizes() {\n    return {\n      dot:  {\n        width: this.dom.dot.offsetWidth,\n        height: this.dom.dot.offsetHeight\n      },\n      content: {\n        width: this.dom.content.offsetWidth,\n        height: this.dom.content.offsetHeight\n      },\n      point: {\n        width: this.dom.point.offsetWidth,\n        height: this.dom.point.offsetHeight\n      }\n    }\n  }\n\n  /**\n   * update DOM components sizes\n   * @param {array} sizes\n   * @private\n   */\n  _updateDomComponentsSizes(sizes) {\n    // recalculate size of dot and contents\n    this.props.dot.width = sizes.dot.width;\n    this.props.dot.height = sizes.dot.height;\n    this.props.content.height = sizes.content.height;\n\n    // resize contents\n    if (this.options.rtl) {\n      this.dom.content.style.marginRight = `${this.props.dot.width / 2}px`;\n    } else {\n      this.dom.content.style.marginLeft = `${this.props.dot.width / 2}px`;\n    }\n    //this.dom.content.style.marginRight = ... + 'px'; // TODO: margin right\n\n    // recalculate size\n    this.width = sizes.point.width;\n    this.height = sizes.point.height;\n\n    // reposition the dot\n    this.dom.dot.style.top = `${(this.height - this.props.dot.height) / 2}px`;\n\n    const dotWidth = this.props.dot.width;\n    const translateX = this.options.rtl ? dotWidth / 2 : (dotWidth / 2) * -1;\n    this.dom.dot.style.transform = `translateX(${translateX}px`;\n    this.dirty = false;\n  }\n\n  /**\n   * Repain DOM additionals\n   * @private\n   */\n  _repaintDomAdditionals() {\n    this._repaintOnItemUpdateTimeTooltip(this.dom.point);\n    this._repaintDragCenter();\n    this._repaintDeleteButton(this.dom.point);\n  }\n\n  /**\n   * Repaint the item\n   * @param {boolean} [returnQueue=false]  return the queue\n   * @return {boolean} the redraw queue if returnQueue=true\n   */\n  redraw(returnQueue) {\n    let sizes;\n    const queue = [\n      // create item DOM\n      this._createDomElement.bind(this),\n\n      // append DOM to parent DOM\n      this._appendDomElement.bind(this),\n\n      // update dirty DOM\n      this._updateDirtyDomComponents.bind(this),\n\n      () => {\n        if (this.dirty) {\n          sizes = this._getDomComponentsSizes();\n        }\n      },\n\n      () => {\n        if (this.dirty) {\n          this._updateDomComponentsSizes.bind(this)(sizes);\n        }\n      },\n\n      // repaint DOM additionals\n      this._repaintDomAdditionals.bind(this)\n    ];\n\n    if (returnQueue) {\n      return queue;\n    } else {\n      let result;\n      queue.forEach(fn => {\n        result = fn();\n      });\n      return result;\n    }\n  }\n\n\n  /**\n   * Reposition XY\n   */\n  repositionXY() {\n    const rtl = this.options.rtl;\n\n    const repositionXY = (element, x, y, rtl = false) => {\n      if (x === undefined && y === undefined) return;\n      // If rtl invert the number.\n      const directionX = rtl ? (x * -1) : x;\n\n      //no y. translate x\n      if (y === undefined) {\n        element.style.transform = `translateX(${directionX}px)`;\n        return;\n      }\n\n      //no x. translate y\n      if (x === undefined) {\n        element.style.transform = `translateY(${y}px)`;\n        return;\n      }\n\n      element.style.transform = `translate(${directionX}px, ${y}px)`;\n    }\n    repositionXY(this.dom.point, this.pointX, this.pointY, rtl);\n  }\n\n  /**\n   * Show the item in the DOM (when not already visible). The items DOM will\n   * be created when needed.\n   * @param {boolean} [returnQueue=false]  whether to return a queue of functions to execute instead of just executing them\n   * @return {boolean} the redraw queue if returnQueue=true\n   */\n  show(returnQueue) {\n    if (!this.displayed) {\n      return this.redraw(returnQueue);\n    }\n  }\n\n  /**\n   * Hide the item from the DOM (when visible)\n   */\n  hide() {\n    if (this.displayed) {\n      if (this.dom.point.parentNode) {\n        this.dom.point.parentNode.removeChild(this.dom.point);\n      }\n\n      this.displayed = false;\n    }\n  }\n\n  /**\n   * Reposition the item horizontally\n   * @Override\n   */\n  repositionX() {\n    const start = this.conversion.toScreen(this.data.start);\n\n    this.pointX = start;\n    if (this.options.rtl) {\n      this.right = start - this.props.dot.width;\n    } else {\n      this.left = start - this.props.dot.width;\n    }\n\n    this.repositionXY();\n  }\n\n  /**\n   * Reposition the item vertically\n   * @Override\n   */\n  repositionY() {\n    const orientation = this.options.orientation.item;\n    if (orientation == 'top') {\n      this.pointY = this.top;\n    }\n    else {\n      this.pointY = this.parent.height - this.top - this.height\n    }\n\n    this.repositionXY();\n  }\n\n  /**\n   * Return the width of the item left from its start date\n   * @return {number}\n   */\n  getWidthLeft() {\n    return this.props.dot.width;\n  }\n\n  /**\n   * Return the width of the item right from  its start date\n   * @return {number}\n   */\n  getWidthRight() {\n    return this.props.dot.width;\n  }\n}\n\nexport default PointItem;\n","import Item from './Item';\n\n/**\n * @constructor RangeItem\n * @extends Item\n */\nclass RangeItem extends Item {\n  /**\n * @param {Object} data             Object containing parameters start, end\n *                                  content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n *                                  Conversion functions from time to screen and vice versa\n * @param {Object} [options]        Configuration options\n *                                  // TODO: describe options\n */\n  constructor(data, conversion, options) {\n    super(data, conversion, options)\n    this.props = {\n      content: {\n        width: 0\n      }\n    };\n    this.overflow = false; // if contents can overflow (css styling), this flag is set to true\n    // validate data\n    if (data) {\n      if (data.start == undefined) {\n        throw new Error(`Property \"start\" missing in item ${data.id}`);\n      }\n      if (data.end == undefined) {\n        throw new Error(`Property \"end\" missing in item ${data.id}`);\n      }\n    }\n  }\n\n  /**\n   * Check whether this item is visible inside given range\n   *\n   * @param {timeline.Range} range with a timestamp for start and end\n   * @returns {boolean} True if visible\n   */\n  isVisible(range) {\n    if (this.cluster) {\n      return false;\n    }\n    // determine visibility\n    return (this.data.start < range.end) && (this.data.end > range.start);\n  }\n\n  /**\n   * create DOM elements\n   * @private\n   */\n  _createDomElement() {\n    if (!this.dom) {\n      // create DOM\n      this.dom = {};\n\n        // background box\n      this.dom.box = document.createElement('div');\n      // className is updated in redraw()\n\n      // frame box (to prevent the item contents from overflowing)\n      this.dom.frame = document.createElement('div');\n      this.dom.frame.className = 'vis-item-overflow';\n      this.dom.box.appendChild(this.dom.frame);\n    \n      // visible frame box (showing the frame that is always visible)\n      this.dom.visibleFrame = document.createElement('div');\n      this.dom.visibleFrame.className = 'vis-item-visible-frame';\n      this.dom.box.appendChild(this.dom.visibleFrame);\n\n      // contents box\n      this.dom.content = document.createElement('div');\n      this.dom.content.className = 'vis-item-content';\n      this.dom.frame.appendChild(this.dom.content);\n\n      // attach this item as attribute\n      this.dom.box['vis-item'] = this;\n\n      this.dirty = true;\n    }\n\n  }\n\n  /**\n   * append element to DOM\n   * @private\n   */\n  _appendDomElement() {\n    if (!this.parent) {\n      throw new Error('Cannot redraw item: no parent attached');\n    }\n    if (!this.dom.box.parentNode) {\n      const foreground = this.parent.dom.foreground;\n      if (!foreground) {\n        throw new Error('Cannot redraw item: parent has no foreground container element');\n      }\n      foreground.appendChild(this.dom.box);\n    }\n    this.displayed = true;\n  }\n\n  /**\n   * update dirty DOM components\n   * @private\n   */\n  _updateDirtyDomComponents() {\n    // update dirty DOM. An item is marked dirty when:\n    // - the item is not yet rendered\n    // - the item's data is changed\n    // - the item is selected/deselected\n    if (this.dirty) {\n      this._updateContents(this.dom.content);\n      this._updateDataAttributes(this.dom.box);\n      this._updateStyle(this.dom.box);\n\n      const editable = (this.editable.updateTime || this.editable.updateGroup);\n\n      // update class\n      const className = (this.data.className ? (' ' + this.data.className) : '') +\n          (this.selected ? ' vis-selected' : '') + \n          (editable ? ' vis-editable' : ' vis-readonly');\n      this.dom.box.className = this.baseClassName + className;\n\n      // turn off max-width to be able to calculate the real width\n      // this causes an extra browser repaint/reflow, but so be it\n      this.dom.content.style.maxWidth = 'none';\n    }\n  }\n\n  /**\n   * get DOM component sizes\n   * @return {object}\n   * @private\n   */\n  _getDomComponentsSizes() {\n    // determine from css whether this box has overflow\n    this.overflow = window.getComputedStyle(this.dom.frame).overflow !== 'hidden';\n    this.whiteSpace = window.getComputedStyle(this.dom.content).whiteSpace !== 'nowrap';\n    return {\n      content: {\n        width: this.dom.content.offsetWidth,\n      },\n      box: {\n        height: this.dom.box.offsetHeight\n      }\n    }\n  }\n\n  /**\n   * update DOM component sizes\n   * @param {array} sizes\n   * @private\n   */\n  _updateDomComponentsSizes(sizes) {\n    this.props.content.width = sizes.content.width;\n    this.height = sizes.box.height;\n    this.dom.content.style.maxWidth = '';\n    this.dirty = false;\n  }\n\n  /**\n   * repaint DOM additional components\n   * @private\n   */\n  _repaintDomAdditionals() {\n    this._repaintOnItemUpdateTimeTooltip(this.dom.box);\n    this._repaintDeleteButton(this.dom.box);\n    this._repaintDragCenter();\n    this._repaintDragLeft();\n    this._repaintDragRight();\n  }\n\n  /**\n   * Repaint the item\n   * @param {boolean} [returnQueue=false]  return the queue\n   * @return {boolean} the redraw queue if returnQueue=true\n   */\n  redraw(returnQueue) {\n    let sizes;\n    const queue = [\n      // create item DOM\n      this._createDomElement.bind(this),\n\n      // append DOM to parent DOM\n      this._appendDomElement.bind(this),\n\n      // update dirty DOM \n      this._updateDirtyDomComponents.bind(this),\n\n      () => {\n        if (this.dirty) {\n          sizes = this._getDomComponentsSizes.bind(this)();\n        }\n      },\n\n      () => {\n        if (this.dirty) {\n          this._updateDomComponentsSizes.bind(this)(sizes);\n        }\n      },\n\n      // repaint DOM additionals\n      this._repaintDomAdditionals.bind(this)\n    ];\n\n    if (returnQueue) {\n      return queue;\n    } else {\n      let result;\n      queue.forEach(fn => {\n        result = fn();\n      });\n      return result;\n    }\n  }\n\n  /**\n   * Show the item in the DOM (when not already visible). The items DOM will\n   * be created when needed.\n   * @param {boolean} [returnQueue=false]  whether to return a queue of functions to execute instead of just executing them\n   * @return {boolean} the redraw queue if returnQueue=true\n   */\n  show(returnQueue) {\n    if (!this.displayed) {\n      return this.redraw(returnQueue);\n    }\n  }\n\n  /**\n   * Hide the item from the DOM (when visible)\n   */\n  hide() {\n    if (this.displayed) {\n      const box = this.dom.box;\n\n      if (box.parentNode) {\n        box.parentNode.removeChild(box);\n      }\n\n      this.displayed = false;\n    }\n  }\n\n  /**\n   * Reposition the item horizontally\n   * @param {boolean} [limitSize=true] If true (default), the width of the range\n   *                                   item will be limited, as the browser cannot\n   *                                   display very wide divs. This means though\n   *                                   that the applied left and width may\n   *                                   not correspond to the ranges start and end\n   * @Override\n   */\n  repositionX(limitSize) {\n    const parentWidth = this.parent.width;\n    let start = this.conversion.toScreen(this.data.start);\n    let end = this.conversion.toScreen(this.data.end);\n    const align = this.data.align === undefined ? this.options.align : this.data.align;\n    let contentStartPosition;\n    let contentWidth;\n\n    // limit the width of the range, as browsers cannot draw very wide divs\n    // unless limitSize: false is explicitly set in item data\n    if (this.data.limitSize !== false && (limitSize === undefined || limitSize === true)) {\n      if (start < -parentWidth) {\n        start = -parentWidth;\n      }\n      if (end > 2 * parentWidth) {\n        end = 2 * parentWidth;\n      }\n    }\n\n    //round to 3 decimals to compensate floating-point values rounding\n    const boxWidth = Math.max(Math.round((end - start) * 1000) / 1000, 1);\n\n    if (this.overflow) {\n      if (this.options.rtl) {\n        this.right = start;\n      } else {\n        this.left = start;\n      }\n      this.width = boxWidth + this.props.content.width;\n      contentWidth = this.props.content.width;\n\n      // Note: The calculation of width is an optimistic calculation, giving\n      //       a width which will not change when moving the Timeline\n      //       So no re-stacking needed, which is nicer for the eye;\n    }\n    else {\n      if (this.options.rtl) {\n        this.right = start;\n      } else {\n        this.left = start;\n      }\n      this.width = boxWidth;\n      contentWidth = Math.min(end - start, this.props.content.width);\n    }\n\n    if (this.options.rtl) {\n      this.dom.box.style.transform = `translateX(${this.right * -1}px)`;\n    } else {\n      this.dom.box.style.transform = `translateX(${this.left}px)`;\n    }\n    this.dom.box.style.width = `${boxWidth}px`;\n    if (this.whiteSpace) {\n        this.height = this.dom.box.offsetHeight;\n    }\n\n    switch (align) {\n      case 'left':\n        this.dom.content.style.transform = 'translateX(0)';\n        break;\n\n      case 'right':\n        if (this.options.rtl) {\n          const translateX = Math.max((boxWidth - contentWidth), 0) * -1;\n          this.dom.content.style.transform = `translateX(${translateX}px)`;\n        } else {\n          this.dom.content.style.transform = `translateX(${Math.max((boxWidth - contentWidth), 0)}px)`;\n        }\n        break;\n\n      case 'center':\n        if (this.options.rtl) {\n          const translateX = Math.max((boxWidth - contentWidth) / 2, 0) * -1;\n          this.dom.content.style.transform = `translateX(${translateX}px)`;\n        } else {\n          this.dom.content.style.transform = `translateX(${Math.max((boxWidth - contentWidth) / 2, 0)}px)`;\n        }\n        \n        break;\n\n      default: // 'auto'\n        // when range exceeds left of the window, position the contents at the left of the visible area\n        if (this.overflow) {\n          if (end > 0) {\n            contentStartPosition = Math.max(-start, 0);\n          }\n          else {\n            contentStartPosition = -contentWidth; // ensure it's not visible anymore\n          }\n        }\n        else {\n          if (start < 0) {\n            contentStartPosition = -start;\n          }\n          else {\n            contentStartPosition = 0;\n          }\n        }\n        if (this.options.rtl) {\n          const translateX = contentStartPosition * -1;\n          this.dom.content.style.transform = `translateX(${translateX}px)`;\n        } else {\n          this.dom.content.style.transform = `translateX(${contentStartPosition}px)`;\n          // this.dom.content.style.width = `calc(100% - ${contentStartPosition}px)`;\n        }\n    }\n  }\n\n  /**\n   * Reposition the item vertically\n   * @Override\n   */\n  repositionY() {\n    const orientation = this.options.orientation.item;\n    const box = this.dom.box;\n\n    if (orientation == 'top') {\n      box.style.top = `${this.top}px`;\n    }\n    else {\n      box.style.top = `${this.parent.height - this.top - this.height}px`;\n    }\n  }\n\n  /**\n   * Repaint a drag area on the left side of the range when the range is selected\n   * @protected\n   */\n  _repaintDragLeft() {\n    if ((this.selected || this.options.itemsAlwaysDraggable.range) && this.editable.updateTime && !this.dom.dragLeft) {\n      // create and show drag area\n      const dragLeft = document.createElement('div');\n      dragLeft.className = 'vis-drag-left';\n      dragLeft.dragLeftItem = this;\n\n      this.dom.box.appendChild(dragLeft);\n      this.dom.dragLeft = dragLeft;\n    }\n    else if (!this.selected && !this.options.itemsAlwaysDraggable.range && this.dom.dragLeft) {\n      // delete drag area\n      if (this.dom.dragLeft.parentNode) {\n        this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft);\n      }\n      this.dom.dragLeft = null;\n    }\n  }\n\n  /**\n   * Repaint a drag area on the right side of the range when the range is selected\n   * @protected\n   */\n  _repaintDragRight() {\n    if ((this.selected || this.options.itemsAlwaysDraggable.range) && this.editable.updateTime && !this.dom.dragRight) {\n      // create and show drag area\n      const dragRight = document.createElement('div');\n      dragRight.className = 'vis-drag-right';\n      dragRight.dragRightItem = this;\n\n      this.dom.box.appendChild(dragRight);\n      this.dom.dragRight = dragRight;\n    }\n    else if (!this.selected && !this.options.itemsAlwaysDraggable.range && this.dom.dragRight) {\n      // delete drag area\n      if (this.dom.dragRight.parentNode) {\n        this.dom.dragRight.parentNode.removeChild(this.dom.dragRight);\n      }\n      this.dom.dragRight = null;\n    }\n  }\n}\n\nRangeItem.prototype.baseClassName = 'vis-item vis-range';\n\nexport default RangeItem;\n","import Item from './Item';\nimport BackgroundGroup from '../BackgroundGroup';\nimport RangeItem from './RangeItem';\n\n/**\n * @constructor BackgroundItem\n * @extends Item\n */\nclass BackgroundItem extends Item {\n  /**\n * @constructor BackgroundItem\n * @param {Object} data             Object containing parameters start, end\n *                                  content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n *                                  Conversion functions from time to screen and vice versa\n * @param {Object} [options]        Configuration options\n *                                  // TODO: describe options\n * // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation\n */\n  constructor(data, conversion, options) {\n    super(data, conversion, options)\n    this.props = {\n      content: {\n        width: 0\n      }\n    };\n    this.overflow = false; // if contents can overflow (css styling), this flag is set to true\n\n    // validate data\n    if (data) {\n      if (data.start == undefined) {\n        throw new Error(`Property \"start\" missing in item ${data.id}`);\n      }\n      if (data.end == undefined) {\n        throw new Error(`Property \"end\" missing in item ${data.id}`);\n      }\n    }\n  }\n\n  /**\n   * Check whether this item is visible inside given range\n   * @param {timeline.Range} range with a timestamp for start and end\n   * @returns {boolean} True if visible\n   */\n  isVisible(range) {\n    // determine visibility\n    return (this.data.start < range.end) && (this.data.end > range.start); \n  }\n\n  /**\n   * create DOM element\n   * @private\n   */\n  _createDomElement() {\n    if (!this.dom) {\n      // create DOM\n      this.dom = {};\n\n      // background box\n      this.dom.box = document.createElement('div');\n      // className is updated in redraw()\n\n      // frame box (to prevent the item contents from overflowing\n      this.dom.frame = document.createElement('div');\n      this.dom.frame.className = 'vis-item-overflow';\n      this.dom.box.appendChild(this.dom.frame);\n\n      // contents box\n      this.dom.content = document.createElement('div');\n      this.dom.content.className = 'vis-item-content';\n      this.dom.frame.appendChild(this.dom.content);\n\n      // Note: we do NOT attach this item as attribute to the DOM,\n      //       such that background items cannot be selected\n      //this.dom.box['vis-item'] = this;\n\n      this.dirty = true;\n    }\n  }\n\n  /**\n   * append DOM element\n   * @private\n   */\n  _appendDomElement() {\n    if (!this.parent) {\n      throw new Error('Cannot redraw item: no parent attached');\n    }\n    if (!this.dom.box.parentNode) {\n      const background = this.parent.dom.background;\n      if (!background) {\n        throw new Error('Cannot redraw item: parent has no background container element');\n      }\n      background.appendChild(this.dom.box);\n    }\n    this.displayed = true;\n  }\n\n  /**\n   * update DOM Dirty components\n   * @private\n   */\n  _updateDirtyDomComponents() {\n    // update dirty DOM. An item is marked dirty when:\n    // - the item is not yet rendered\n    // - the item's data is changed\n    // - the item is selected/deselected\n    if (this.dirty) {\n      this._updateContents(this.dom.content);\n      this._updateDataAttributes(this.dom.content);\n      this._updateStyle(this.dom.box);\n\n      // update class\n      const className = (this.data.className ? (' ' + this.data.className) : '') +\n          (this.selected ? ' vis-selected' : '');\n      this.dom.box.className = this.baseClassName + className;\n    }\n  }\n\n  /**\n   * get DOM components sizes\n   * @return {object}\n   * @private\n   */\n  _getDomComponentsSizes() {\n    // determine from css whether this box has overflow\n    this.overflow = window.getComputedStyle(this.dom.content).overflow !== 'hidden';\n    return {\n      content: {\n        width: this.dom.content.offsetWidth\n      }\n    }\n  }\n\n  /**\n   * update DOM components sizes\n   * @param {object} sizes\n   * @private\n   */\n  _updateDomComponentsSizes(sizes) {\n    // recalculate size\n    this.props.content.width = sizes.content.width;\n    this.height = 0; // set height zero, so this item will be ignored when stacking items\n\n    this.dirty = false;\n  }\n\n  /**\n   * repaint DOM additionals\n   * @private\n   */\n  _repaintDomAdditionals() {\n  }\n\n  /**\n   * Repaint the item\n   * @param {boolean} [returnQueue=false]  return the queue\n   * @return {boolean} the redraw result or the redraw queue if returnQueue=true\n   */\n  redraw(returnQueue) {\n    let sizes;\n    const queue = [\n      // create item DOM\n      this._createDomElement.bind(this),\n\n      // append DOM to parent DOM\n      this._appendDomElement.bind(this),\n\n      this._updateDirtyDomComponents.bind(this),\n\n      () => {\n        if (this.dirty) {\n          sizes = this._getDomComponentsSizes.bind(this)();\n        }\n      },\n\n      () => {\n        if (this.dirty) {\n          this._updateDomComponentsSizes.bind(this)(sizes);\n        }\n      },\n\n      // repaint DOM additionals\n      this._repaintDomAdditionals.bind(this)\n    ];\n\n    if (returnQueue) {\n      return queue;\n    } else {\n      let result;\n      queue.forEach(fn => {\n        result = fn();\n      });\n      return result;\n    }\n  }\n\n  /**\n   * Reposition the item vertically\n   * @Override\n   */\n  repositionY(margin) {  // eslint-disable-line no-unused-vars\n    let height;\n    const orientation = this.options.orientation.item;\n\n    // special positioning for subgroups\n    if (this.data.subgroup !== undefined) {\n      // TODO: instead of calculating the top position of the subgroups here for every BackgroundItem, calculate the top of the subgroup once in Itemset\n      const itemSubgroup = this.data.subgroup;\n\n      this.dom.box.style.height = `${this.parent.subgroups[itemSubgroup].height}px`;\n\n      if (orientation == 'top') { \n        this.dom.box.style.top = `${this.parent.top + this.parent.subgroups[itemSubgroup].top}px`;\n      } else {\n        this.dom.box.style.top = `${this.parent.top + this.parent.height - this.parent.subgroups[itemSubgroup].top - this.parent.subgroups[itemSubgroup].height}px`;\n      }\n      this.dom.box.style.bottom = '';\n    }\n    // and in the case of no subgroups:\n    else {\n      // we want backgrounds with groups to only show in groups.\n      if (this.parent instanceof BackgroundGroup) {\n        // if the item is not in a group:\n        height = Math.max(this.parent.height,\n            this.parent.itemSet.body.domProps.center.height,\n            this.parent.itemSet.body.domProps.centerContainer.height);\n        this.dom.box.style.bottom = orientation == 'bottom' ? '0' : '';\n        this.dom.box.style.top = orientation == 'top' ? '0' : '';\n      }\n      else {\n        height = this.parent.height;\n        // same alignment for items when orientation is top or bottom\n        this.dom.box.style.top = `${this.parent.top}px`;\n        this.dom.box.style.bottom = '';\n      }\n    }\n    this.dom.box.style.height = `${height}px`;\n  }\n}\n\nBackgroundItem.prototype.baseClassName = 'vis-item vis-background';\n\nBackgroundItem.prototype.stack = false;\n\n/**\n * Show the item in the DOM (when not already visible). The items DOM will\n * be created when needed.\n */\nBackgroundItem.prototype.show = RangeItem.prototype.show;\n\n/**\n * Hide the item from the DOM (when visible)\n * @return {Boolean} changed\n */\nBackgroundItem.prototype.hide = RangeItem.prototype.hide;\n\n/**\n * Reposition the item horizontally\n * @Override\n */\nBackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX;\n\nexport default BackgroundItem;\n","import util from '../util';\nimport './tooltip.css';\n\n/**\n * Popup is a class to create a popup window with some text\n */\nclass Popup {\n  /**\n   * @param {Element} container       The container object.\n   * @param {string}  overflowMethod  How the popup should act to overflowing ('flip', 'cap' or 'none')\n   */\n  constructor(container, overflowMethod) {\n    this.container = container;\n    this.overflowMethod = overflowMethod || 'cap';\n\n    this.x = 0;\n    this.y = 0;\n    this.padding = 5;\n    this.hidden = false;\n\n    // create the frame\n    this.frame = document.createElement('div');\n    this.frame.className = 'vis-tooltip';\n    this.container.appendChild(this.frame);\n  }\n\n  /**\n   * @param {number} x   Horizontal position of the popup window\n   * @param {number} y   Vertical position of the popup window\n   */\n  setPosition(x, y) {\n    this.x = parseInt(x);\n    this.y = parseInt(y);\n  }\n\n  /**\n   * Set the content for the popup window. This can be HTML code or text.\n   * @param {string | Element} content\n   */\n  setText(content) {\n    if (content instanceof Element) {\n      this.frame.innerHTML = '';\n      this.frame.appendChild(content);\n    }\n    else {\n      this.frame.innerHTML = util.xss(content); // string containing text or HTML\n    }\n  }\n\n  /**\n   * Show the popup window\n   * @param {boolean} [doShow]    Show or hide the window\n   */\n  show(doShow) {\n    if (doShow === undefined) {\n      doShow = true;\n    }\n\n    if (doShow === true) {\n      var height = this.frame.clientHeight;\n      var width = this.frame.clientWidth;\n      var maxHeight = this.frame.parentNode.clientHeight;\n      var maxWidth = this.frame.parentNode.clientWidth;\n\n      var left = 0, top = 0;\n\n      if (this.overflowMethod == 'flip' || this.overflowMethod == 'none') {\n        let isLeft = false, isTop = true; // Where around the position it's located\n\n        if (this.overflowMethod == 'flip') {\n          if (this.y - height < this.padding) {\n            isTop = false;\n          }\n\n          if (this.x + width > maxWidth - this.padding) {\n            isLeft = true;\n          }\n        }\n\n        if (isLeft) {\n          left = this.x - width;\n        } else {\n          left = this.x;\n        }\n\n        if (isTop) {\n          top = this.y - height;\n        } else {\n          top = this.y;\n        }\n      } else { // this.overflowMethod == 'cap'\n        top = (this.y - height);\n        if (top + height + this.padding > maxHeight) {\n          top = maxHeight - height - this.padding;\n        }\n        if (top < this.padding) {\n          top = this.padding;\n        }\n\n        left = this.x;\n        if (left + width + this.padding > maxWidth) {\n          left = maxWidth - width - this.padding;\n        }\n        if (left < this.padding) {\n          left = this.padding;\n        }\n      }\n\n      this.frame.style.left = left + \"px\";\n      this.frame.style.top = top + \"px\";\n      this.frame.style.visibility = \"visible\";\n      this.hidden = false;\n    }\n    else {\n      this.hide();\n    }\n  }\n\n  /**\n   * Hide the popup window\n   */\n  hide() {\n    this.hidden = true;\n    this.frame.style.left = \"0\";\n    this.frame.style.top = \"0\";\n    this.frame.style.visibility = \"hidden\";\n  }\n\n  /**\n   * Remove the popup window\n   */\n  destroy() {\n    this.frame.parentNode.removeChild(this.frame); // Remove element from DOM\n  }\n}\n\nexport default Popup;\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nrequire('../../../modules/es.array.every');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').every;\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/every');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.every;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.every) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/every');\n\nmodule.exports = parent;\n","import { randomUUID } from \"../../../util\";\nimport Item from './Item';\n\n/**\n * ClusterItem\n */\nclass ClusterItem extends Item {\n  /**\n * @constructor Item\n * @param {Object} data             Object containing (optional) parameters type,\n *                                  start, end, content, group, className.\n * @param {{toScreen: function, toTime: function}} conversion\n *                                  Conversion functions from time to screen and vice versa\n * @param {Object} options          Configuration options\n *                                  // TODO: describe available options\n */\n  constructor(data, conversion, options) {\n    const modifiedOptions = Object.assign({}, {fitOnDoubleClick: true}, options, {editable: false});\n    super(data, conversion, modifiedOptions);\n\n    this.props = {\n      content: {\n        width: 0,\n        height: 0\n      },\n    };\n    \n    if (!data || data.uiItems == undefined) {\n      throw new Error('Property \"uiItems\" missing in item ' + data.id);\n    }\n  \n    this.id = randomUUID();\n    this.group = data.group;\n    this._setupRange();\n  \n    this.emitter = this.data.eventEmitter;\n    this.range = this.data.range;\n    this.attached = false;\n    this.isCluster = true;\n    this.data.isCluster = true;\n  }\n\n  /**\n   * check if there are items\n   * @return {boolean}\n   */\n  hasItems() {\n    return this.data.uiItems && this.data.uiItems.length && this.attached;\n  }\n  \n  /**\n   * set UI items\n   * @param {array} items\n   */\n  setUiItems(items) {\n    this.detach();\n  \n    this.data.uiItems = items;\n  \n    this._setupRange();\n  \n    this.attach();\n  }\n  \n  /**\n   * check is visible\n   * @param {object} range\n   * @return {boolean}\n   */\n  isVisible(range) {\n    const rangeWidth = this.data.end ? this.data.end - this.data.start : 0;\n    const widthInMs = this.width * range.getMillisecondsPerPixel();\n    const end = Math.max(this.data.start.getTime() + rangeWidth, this.data.start.getTime() + widthInMs);\n    return (this.data.start < range.end) && (end > range.start) && this.hasItems();\n  }\n  \n  /**\n   * get cluster data\n   * @return {object}\n   */\n  getData() {\n    return {\n      isCluster: true,\n      id: this.id,\n      items: this.data.items || [],\n      data: this.data\n    }\n  }\n  \n  /**\n   * redraw cluster item\n   * @param {boolean} returnQueue\n   * @return {boolean}\n   */\n  redraw (returnQueue) {\n    var sizes\n    var queue = [\n      // create item DOM\n      this._createDomElement.bind(this),\n  \n      // append DOM to parent DOM\n      this._appendDomElement.bind(this),\n  \n      // update dirty DOM\n      this._updateDirtyDomComponents.bind(this),\n  \n      (function () {\n        if (this.dirty) {\n          sizes = this._getDomComponentsSizes();\n        }\n      }).bind(this),\n  \n      (function () {\n        if (this.dirty) {\n          this._updateDomComponentsSizes.bind(this)(sizes);\n        }\n      }).bind(this),\n  \n      // repaint DOM additionals\n      this._repaintDomAdditionals.bind(this)\n    ];\n  \n    if (returnQueue) {\n      return queue;\n    } else {\n      var result;\n      queue.forEach(function (fn) {\n        result = fn();\n      });\n      return result;\n    }\n  }\n  \n  /**\n   * show cluster item\n   */\n  show() {\n    if (!this.displayed) {\n      this.redraw();\n    }\n  }\n  \n  /**\n   * Hide the item from the DOM (when visible)\n   */\n  hide() {\n    if (this.displayed) {\n      var dom = this.dom;\n      if (dom.box.parentNode) {\n        dom.box.parentNode.removeChild(dom.box);\n      }\n\n      if (this.options.showStipes) {\n        if (dom.line.parentNode)  {\n          dom.line.parentNode.removeChild(dom.line);\n        }\n        if (dom.dot.parentNode)  {\n          dom.dot.parentNode.removeChild(dom.dot);\n        }\n      }\n      this.displayed = false;\n    }\n  }\n  \n  /**\n   * reposition item x axis\n   */\n  repositionX() {\n    let start = this.conversion.toScreen(this.data.start);\n    let end = this.data.end ? this.conversion.toScreen(this.data.end) : 0;\n    if (end) {\n      this.repositionXWithRanges(start, end);\n    } else {\n      let align = this.data.align === undefined ? this.options.align : this.data.align;\n      this.repositionXWithoutRanges(start, align);\n    }\n  \n    if (this.options.showStipes) {\n      this.dom.line.style.display = this._isStipeVisible() ? 'block' : 'none';\n      this.dom.dot.style.display = this._isStipeVisible() ? 'block' : 'none';\n\n      if (this._isStipeVisible()) {\n        this.repositionStype(start, end);\n      }\n    }\n  }\n\n  /**\n   * reposition item stype\n   * @param {date} start\n   * @param {date} end\n   */\n  repositionStype(start, end) {\n    this.dom.line.style.display = 'block';\n    this.dom.dot.style.display = 'block';\n    const lineOffsetWidth = this.dom.line.offsetWidth;\n    const dotOffsetWidth = this.dom.dot.offsetWidth;\n\n    if (end) {\n      const lineOffset = lineOffsetWidth + start + (end - start) / 2;\n      const dotOffset = lineOffset - dotOffsetWidth / 2;\n      const lineOffsetDirection = this.options.rtl ? lineOffset * -1 : lineOffset;\n      const dotOffsetDirection = this.options.rtl ? dotOffset * -1 : dotOffset;\n\n      this.dom.line.style.transform = `translateX(${lineOffsetDirection}px)`;\n      this.dom.dot.style.transform = `translateX(${dotOffsetDirection}px)`;\n    } else {\n      const lineOffsetDirection = this.options.rtl ? (start * -1) : start;\n      const dotOffsetDirection = this.options.rtl ? ((start - dotOffsetWidth / 2) * -1) : (start - dotOffsetWidth / 2);\n\n      this.dom.line.style.transform = `translateX(${lineOffsetDirection}px)`;\n      this.dom.dot.style.transform = `translateX(${dotOffsetDirection}px)`;\n    }\n  }\n  \n  /**\n   * reposition x without ranges\n   * @param {date} start\n   * @param {string} align\n   */\n  repositionXWithoutRanges(start, align) {\n    // calculate left position of the box\n    if (align == 'right') {\n      if (this.options.rtl) {\n        this.right = start - this.width;\n  \n        // reposition box, line, and dot\n        this.dom.box.style.right = this.right + 'px';\n      } else {\n        this.left = start - this.width;\n  \n        // reposition box, line, and dot\n        this.dom.box.style.left = this.left + 'px';\n      }\n    } else if (align == 'left') {\n      if (this.options.rtl) {\n        this.right = start;\n  \n        // reposition box, line, and dot\n        this.dom.box.style.right = this.right + 'px';\n      } else {\n        this.left = start;\n  \n        // reposition box, line, and dot\n        this.dom.box.style.left = this.left + 'px';\n      }\n    } else {\n      // default or 'center'\n      if (this.options.rtl) {\n        this.right = start - this.width / 2;\n  \n        // reposition box, line, and dot\n        this.dom.box.style.right = this.right + 'px';\n      } else {\n        this.left = start - this.width / 2;\n  \n        // reposition box, line, and dot\n        this.dom.box.style.left = this.left + 'px';\n      }\n    }\n  }\n  \n  /**\n   * reposition x with ranges\n   * @param {date} start\n   * @param {date} end\n   */\n  repositionXWithRanges(start, end) {\n    let boxWidth = Math.round(Math.max(end - start + 0.5, 1));\n  \n    if (this.options.rtl) {\n      this.right = start;\n    } else {\n      this.left = start;\n    }\n  \n    this.width = Math.max(boxWidth, this.minWidth || 0);\n  \n    if (this.options.rtl) {\n      this.dom.box.style.right = this.right + 'px';\n    } else {\n      this.dom.box.style.left = this.left + 'px';\n    }\n  \n    this.dom.box.style.width = boxWidth + 'px';\n  }\n  \n  /**\n   * reposition item y axis\n   */\n  repositionY() {\n    var orientation = this.options.orientation.item;\n    var box = this.dom.box;\n    if (orientation == 'top') {\n      box.style.top = (this.top || 0) + 'px';\n    } else { \n      // orientation 'bottom'\n      box.style.top = (this.parent.height - this.top - this.height || 0) + 'px';\n    }\n  \n    if (this.options.showStipes) {\n      if (orientation == 'top') {\n        this.dom.line.style.top    = '0';\n        this.dom.line.style.height = (this.parent.top + this.top + 1) + 'px';\n        this.dom.line.style.bottom = '';\n      }\n      else { \n        // orientation 'bottom'\n        var itemSetHeight = this.parent.itemSet.props.height;\n        var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top;\n        this.dom.line.style.top    = (itemSetHeight - lineHeight) + 'px';\n        this.dom.line.style.bottom = '0';\n      }\n    \n      this.dom.dot.style.top = (-this.dom.dot.offsetHeight / 2) + 'px';\n    }\n  }\n\n  /**\n   * get width left\n   * @return {number}\n   */\n  getWidthLeft() {\n    return this.width / 2;\n  }\n  \n  /**\n   * get width right\n   * @return {number}\n   */\n  getWidthRight() {\n    return this.width / 2;\n  }\n  \n  /**\n   * move cluster item\n   */\n  move() {\n    this.repositionX();\n    this.repositionY();\n  }\n  \n  /**\n   * attach\n   */\n  attach() {\n    for (let item of this.data.uiItems) {\n      item.cluster = this;\n    }\n  \n    this.data.items = this.data.uiItems.map(item => item.data);\n\n    this.attached = true;\n    this.dirty = true;\n  }\n  \n  /**\n   * detach\n   * @param {boolean} detachFromParent\n   * @return {void}\n   */\n  detach(detachFromParent = false) {\n    if (!this.hasItems()) {\n      return;\n    }\n  \n    for (let item of this.data.uiItems) {\n      delete item.cluster;\n    }\n  \n    this.attached = false;\n  \n    if (detachFromParent && this.group) {\n      this.group.remove(this);\n      this.group = null;\n    }\n  \n    this.data.items = [];\n    this.dirty = true;\n  }\n  \n  /**\n   * handle on double click\n   */\n  _onDoubleClick() {\n   this._fit();\n  }\n  \n  /**\n   * set range\n   */\n  _setupRange() {\n    const stats = this.data.uiItems.map(item => ({\n      start: item.data.start.valueOf(),\n      end: item.data.end ? item.data.end.valueOf() : item.data.start.valueOf(),\n    }));\n  \n    this.data.min = Math.min(...stats.map(s => Math.min(s.start, s.end || s.start)));\n    this.data.max = Math.max(...stats.map(s => Math.max(s.start, s.end || s.start)));\n    const centers = this.data.uiItems.map(item => item.center);\n    const avg = centers.reduce((sum, value) => sum + value, 0) / this.data.uiItems.length;\n  \n    if (this.data.uiItems.some(item => item.data.end)) {\n      // contains ranges\n      this.data.start = new Date(this.data.min);\n      this.data.end = new Date(this.data.max);\n    } else {\n      this.data.start = new Date(avg);\n      this.data.end = null;\n    }\n  }\n  \n  /**\n   * get UI items\n   * @return {array}\n   */\n  _getUiItems() {\n    if (this.data.uiItems && this.data.uiItems.length) {\n      return this.data.uiItems.filter(item => item.cluster === this);\n    }\n  \n    return [];\n  }\n  \n  /**\n   * create DOM element\n   */\n  _createDomElement() {\n    if (!this.dom) {\n      // create DOM\n      this.dom = {};\n  \n      // create main box\n      this.dom.box = document.createElement('DIV');\n  \n      // contents box (inside the background box). used for making margins\n      this.dom.content = document.createElement('DIV');\n      this.dom.content.className = 'vis-item-content';\n      \n      this.dom.box.appendChild(this.dom.content);\n  \n      if (this.options.showStipes) {\n        // line to axis\n        this.dom.line = document.createElement('DIV');\n        this.dom.line.className = 'vis-cluster-line';\n        this.dom.line.style.display = 'none';\n  \n        // dot on axis\n        this.dom.dot = document.createElement('DIV');\n        this.dom.dot.className = 'vis-cluster-dot';\n        this.dom.dot.style.display = 'none';\n      }\n  \n      if (this.options.fitOnDoubleClick) {\n        this.dom.box.ondblclick = ClusterItem.prototype._onDoubleClick.bind(this);\n      }\n      \n      // attach this item as attribute\n      this.dom.box['vis-item'] = this;\n  \n      this.dirty = true;\n    }\n  }\n  \n  /**\n   * append element to DOM\n   */\n  _appendDomElement() {\n    if (!this.parent) {\n      throw new Error('Cannot redraw item: no parent attached');\n    }\n  \n    if (!this.dom.box.parentNode) {\n      const foreground = this.parent.dom.foreground;\n      if (!foreground) {\n        throw new Error('Cannot redraw item: parent has no foreground container element');\n      }\n  \n      foreground.appendChild(this.dom.box);\n    }\n  \n    const background = this.parent.dom.background;\n  \n    if (this.options.showStipes) {\n      if (!this.dom.line.parentNode) {\n        if (!background) throw new Error('Cannot redraw item: parent has no background container element');\n        background.appendChild(this.dom.line);\n      }\n    \n      if (!this.dom.dot.parentNode) {\n        var axis = this.parent.dom.axis;\n        if (!background) throw new Error('Cannot redraw item: parent has no axis container element');\n        axis.appendChild(this.dom.dot);\n      }\n    }\n  \n    this.displayed = true;\n  }\n  \n  /**\n   * update dirty DOM components\n   */\n  _updateDirtyDomComponents() {\n    // An item is marked dirty when:\n    // - the item is not yet rendered\n    // - the item's data is changed\n    // - the item is selected/deselected\n    if (this.dirty) {\n      this._updateContents(this.dom.content);\n      this._updateDataAttributes(this.dom.box);\n      this._updateStyle(this.dom.box);\n  \n      // update class\n      const className = this.baseClassName + ' ' + (this.data.className ? ' ' + this.data.className : '') +\n        (this.selected ? ' vis-selected' : '') + ' vis-readonly';\n      this.dom.box.className = 'vis-item ' + className;\n  \n      if (this.options.showStipes) {\n        this.dom.line.className = 'vis-item vis-cluster-line ' +  (this.selected ? ' vis-selected' : '');\n        this.dom.dot.className  = 'vis-item vis-cluster-dot ' +  (this.selected ? ' vis-selected' : '');\n      }\n  \n      if (this.data.end) {\n        // turn off max-width to be able to calculate the real width\n        // this causes an extra browser repaint/reflow, but so be it\n        this.dom.content.style.maxWidth = 'none';\n      }\n    }\n  }\n  \n  /**\n   * get DOM components sizes\n   * @return {object}\n   */\n  _getDomComponentsSizes() {\n    const sizes = {\n      previous: {\n        right: this.dom.box.style.right,\n        left: this.dom.box.style.left\n      },\n      box: {\n        width: this.dom.box.offsetWidth,\n        height: this.dom.box.offsetHeight\n      },\n    };\n\n    if (this.options.showStipes) {\n      sizes.dot = {\n        height: this.dom.dot.offsetHeight,\n        width: this.dom.dot.offsetWidth\n      };\n      sizes.line = {\n        width: this.dom.line.offsetWidth\n      };\n    }\n\n    return sizes;\n  }\n  \n  /**\n   * update DOM components sizes\n   * @param {object} sizes\n   */\n  _updateDomComponentsSizes(sizes) {\n    if (this.options.rtl) {\n      this.dom.box.style.right = \"0px\";\n    } else {\n      this.dom.box.style.left = \"0px\";\n    }\n  \n    // recalculate size\n    if (!this.data.end) {\n      this.width = sizes.box.width;\n    } else {\n      this.minWidth = sizes.box.width;\n    }\n  \n    this.height = sizes.box.height;\n  \n    // restore previous position\n    if (this.options.rtl) {\n      this.dom.box.style.right = sizes.previous.right;\n    } else {\n      this.dom.box.style.left = sizes.previous.left;\n    }\n  \n    this.dirty = false;\n  }\n  \n  /**\n   * repaint DOM additional components\n   */\n  _repaintDomAdditionals() {\n    this._repaintOnItemUpdateTimeTooltip(this.dom.box);\n  }\n  \n  /**\n   * check is stripe visible\n   * @return {number}\n   * @private\n   */\n  _isStipeVisible() {\n    return this.minWidth >= this.width || !this.data.end;\n  }\n  \n  /**\n   * get fit range\n   * @return {object}\n   * @private\n   */\n  _getFitRange() {\n    const offset = 0.05*(this.data.max - this.data.min) / 2;\n      return {\n        fitStart: this.data.min - offset,\n        fitEnd: this.data.max + offset\n      };\n  }\n  \n   /**\n   * fit\n   * @private\n   */\n  _fit() {\n    if (this.emitter) {\n      const {fitStart, fitEnd} = this._getFitRange();\n  \n      const fitArgs = {\n        start: new Date(fitStart),\n        end: new Date(fitEnd),\n        animation: true\n      };\n  \n      this.emitter.emit('fit', fitArgs);\n    }\n  }\n\n   /**\n   * get item data\n   * @return {object}\n   * @private\n   */\n  _getItemData() {\n    return this.data;\n  }\n}\n\nClusterItem.prototype.baseClassName = 'vis-item vis-range vis-cluster';\nexport default ClusterItem;\n","import ClusterItem from './item/ClusterItem';\n\nconst UNGROUPED = '__ungrouped__';   // reserved group id for ungrouped items\nconst BACKGROUND = '__background__'; // reserved group id for background items without group\n\nexport const ReservedGroupIds = {\n  UNGROUPED,\n  BACKGROUND\n}\n\n/**\n * An Cluster generator generates cluster items\n */\nexport default class ClusterGenerator {\n    /**\n     * @param {ItemSet} itemSet itemsSet instance\n     * @constructor ClusterGenerator\n    */\n    constructor(itemSet) {\n        this.itemSet = itemSet;\n        this.groups = {};\n        this.cache = {};\n        this.cache[-1] = [];\n    }\n\n    /**\n     * @param {Object} itemData             Object containing parameters start content, className.\n     * @param {{toScreen: function, toTime: function}} conversion\n     *                                  Conversion functions from time to screen and vice versa\n     * @param {Object} [options]        Configuration options\n     * @return {Object} newItem\n    */\n    createClusterItem(itemData, conversion, options) {\n        const newItem = new ClusterItem(itemData, conversion, options);\n        return newItem;\n    }\n\n    /**\n     * Set the items to be clustered.\n     * This will clear cached clusters.\n     * @param {Item[]} items\n     * @param {Object} [options]  Available options:\n     *                            {boolean} applyOnChangedLevel\n     *                                If true (default), the changed data is applied\n     *                                as soon the cluster level changes. If false,\n     *                                The changed data is applied immediately\n     */\n    setItems(items, options) {\n        this.items = items || [];\n        this.dataChanged = true;\n        this.applyOnChangedLevel = false;\n\n        if (options && options.applyOnChangedLevel) {\n            this.applyOnChangedLevel = options.applyOnChangedLevel;\n        }\n    }\n\n    /**\n     * Update the current data set: clear cache, and recalculate the clustering for\n     * the current level\n     */\n    updateData() {\n        this.dataChanged = true;\n        this.applyOnChangedLevel = false;\n    }\n\n    /**\n     * Cluster the items which are too close together\n     * @param {array} oldClusters \n     * @param {number} scale      The scale of the current window : (windowWidth / (endDate - startDate)) \n     * @param {{maxItems: number, clusterCriteria: function, titleTemplate: string}} options             \n     * @return {array} clusters\n    */\n    getClusters(oldClusters, scale, options) {\n        let { maxItems, clusterCriteria } = typeof options === \"boolean\" ? {} : options;\n    \n        if (!clusterCriteria) {\n            clusterCriteria = () => true;\n        }\n\n        maxItems = maxItems || 1;\n\n        let level = -1;\n        let granularity = 2;\n        let timeWindow = 0;\n\n        if (scale > 0) {\n            if (scale >= 1) {\n                return [];\n            }\n\n            level = Math.abs(Math.round(Math.log(100 / scale) / Math.log(granularity)));\n            timeWindow = Math.abs(Math.pow(granularity, level));\n        }\n\n        // clear the cache when and re-generate groups the data when needed.\n        if (this.dataChanged) {\n            const levelChanged = (level != this.cacheLevel);\n            const applyDataNow = this.applyOnChangedLevel ? levelChanged : true;\n            if (applyDataNow) {\n                this._dropLevelsCache();\n                this._filterData();\n            }\n        }\n\n        this.cacheLevel = level;\n        let clusters = this.cache[level];\n        if (!clusters) {\n            clusters = [];\n            for (let groupName in this.groups) {\n                if (this.groups.hasOwnProperty(groupName)) {\n                    const items = this.groups[groupName];\n                    const iMax = items.length;\n                    let i = 0;\n                    while (i < iMax) {\n                        // find all items around current item, within the timeWindow\n                        let item = items[i];\n                        let neighbors = 1; // start at 1, to include itself)\n\n                        // loop through items left from the current item\n                        let j = i - 1;\n                        while (j >= 0 && (item.center - items[j].center) < timeWindow / 2) {\n                            if (!items[j].cluster && clusterCriteria(item.data, items[j].data)) {\n                                neighbors++;\n                            }\n                            j--;\n                        }\n\n                        // loop through items right from the current item\n                        let k = i + 1;\n                        while (k < items.length && (items[k].center - item.center) < timeWindow / 2) {\n                            if (clusterCriteria(item.data, items[k].data)) {\n                                neighbors++;\n                            }\n                            k++;\n                        }\n\n                        // loop through the created clusters\n                        let l = clusters.length - 1;\n                        while (l >= 0 && (item.center - clusters[l].center) < timeWindow) {\n                            if (item.group == clusters[l].group && clusterCriteria(item.data, clusters[l].data)) {\n                                neighbors++;\n                            }\n                            l--;\n                        }\n\n                        // aggregate until the number of items is within maxItems\n                        if (neighbors > maxItems) {\n                            // too busy in this window.\n                            const num = neighbors - maxItems + 1;\n                            const clusterItems = [];\n\n                            // append the items to the cluster,\n                            // and calculate the average start for the cluster\n                            let m = i;\n                            while (clusterItems.length < num && m < items.length) {\n                                if (clusterCriteria(items[i].data, items[m].data)) {\n                                    clusterItems.push(items[m]);\n                                }\n                                m++;\n                            }\n\n                            const groupId = this.itemSet.getGroupId(item.data);\n                            const group = this.itemSet.groups[groupId] || this.itemSet.groups[ReservedGroupIds.UNGROUPED];\n                            let cluster = this._getClusterForItems(clusterItems, group, oldClusters, options);\n                            clusters.push(cluster);\n\n                            i += num;\n                        } else {\n                            delete item.cluster;\n                            i += 1;\n                        }\n                    }\n                }\n            }\n\n            this.cache[level] = clusters;\n        }\n\n        return clusters;\n    }\n\n    /**\n     * Filter the items per group.\n     * @private\n     */\n    _filterData() {\n        // filter per group\n        const groups = {};\n        this.groups = groups;\n\n        // split the items per group\n        for (const item of Object.values(this.items)) {\n            // put the item in the correct group\n            const groupName = item.parent ? item.parent.groupId : '';\n            let group = groups[groupName];\n            if (!group) {\n                group = [];\n                groups[groupName] = group;\n            }\n            group.push(item);\n\n            // calculate the center of the item\n            if (item.data.start) {\n                if (item.data.end) {\n                    // range\n                    item.center = (item.data.start.valueOf() + item.data.end.valueOf()) / 2;\n                } else {\n                    // box, dot\n                    item.center = item.data.start.valueOf();\n                }\n            }\n        }\n\n        // sort the items per group\n        for (let currentGroupName in groups) {\n            if (groups.hasOwnProperty(currentGroupName)) {\n                groups[currentGroupName].sort((a, b) => a.center - b.center);\n            }\n        }\n\n        this.dataChanged = false;\n    }\n\n    /**\n     * Create new cluster or return existing\n     * @private\n     * @param {array} clusterItems    \n     * @param {object} group \n     * @param {array} oldClusters \n     * @param {object} options \n     * @returns {object} cluster\n     */\n    _getClusterForItems(clusterItems, group, oldClusters, options) {\n        const oldClustersLookup = (oldClusters || []).map(cluster => ({\n            cluster,\n            itemsIds: new Set(cluster.data.uiItems.map(item => item.id))\n        }));\n        let cluster;\n        if (oldClustersLookup.length) {\n            for (let oldClusterData of oldClustersLookup) {\n                if (oldClusterData.itemsIds.size === clusterItems.length \n                    && clusterItems.every(clusterItem => oldClusterData.itemsIds.has(clusterItem.id))) {\n                    cluster = oldClusterData.cluster;\n                    break;\n                }\n            }\n        }\n\n        if (cluster) {\n            cluster.setUiItems(clusterItems);\n            if (cluster.group !== group) {\n                if (cluster.group) {\n                    cluster.group.remove(cluster);    \n                }\n\n                if (group) {\n                    group.add(cluster);    \n                    cluster.group = group;\n                }\n            }\n            return cluster;\n        }\n\n        let titleTemplate = options.titleTemplate || '';\n        const conversion = {\n            toScreen: this.itemSet.body.util.toScreen,\n            toTime: this.itemSet.body.util.toTime\n        };\n\n        const title = titleTemplate.replace(/{count}/, clusterItems.length);\n        const clusterContent = '<div title=\"' + title + '\">' + clusterItems.length + '</div>';\n        const clusterOptions = Object.assign({}, options, this.itemSet.options);\n        const data = {\n            'content': clusterContent,\n            'title': title,\n            'group': group,\n            'uiItems': clusterItems,\n            'eventEmitter': this.itemSet.body.emitter,\n            'range': this.itemSet.body.range\n        };\n        cluster = this.createClusterItem(data,\n        conversion,\n        clusterOptions);\n\n        if (group) {\n            group.add(cluster);\n            cluster.group = group;\n        }\n\n        cluster.attach();\n\n        return cluster;\n    }\n\n    /**\n     * Drop cache\n     * @private\n     */\n    _dropLevelsCache() {\n        this.cache = {};\n        this.cacheLevel = -1;\n        this.cache[this.cacheLevel] = [];\n    }\n}\n","import Hammer from '../../module/hammer';\nimport util, { typeCoerceDataSet, randomUUID, isDataViewLike } from '../../util';\nimport { DataSet, DataView } from 'vis-data/esnext';\nimport TimeStep from '../TimeStep';\nimport Component from './Component';\nimport Group from './Group';\nimport BackgroundGroup from './BackgroundGroup';\nimport BoxItem from './item/BoxItem';\nimport PointItem from './item/PointItem';\nimport RangeItem from './item/RangeItem';\nimport BackgroundItem from './item/BackgroundItem';\nimport Popup from '../../shared/Popup';\nimport ClusterGenerator from './ClusterGenerator';\n\nimport './css/itemset.css';\nimport './css/labelset.css';\n\nconst UNGROUPED = '__ungrouped__';   // reserved group id for ungrouped items\nconst BACKGROUND = '__background__'; // reserved group id for background items without group\n\nexport const ReservedGroupIds = {\n  UNGROUPED,\n  BACKGROUND\n}\n\n/**\n * An ItemSet holds a set of items and ranges which can be displayed in a\n * range. The width is determined by the parent of the ItemSet, and the height\n * is determined by the size of the items.\n */\nclass ItemSet extends Component {\n  /**\n * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body\n * @param {Object} [options]      See ItemSet.setOptions for the available options.\n * @constructor ItemSet\n * @extends Component\n */\n  constructor(body, options) {\n    super()\n    this.body = body;\n    this.defaultOptions = {\n      type: null,  // 'box', 'point', 'range', 'background'\n      orientation: {\n        item: 'bottom'   // item orientation: 'top' or 'bottom'\n      },\n      align: 'auto', // alignment of box items\n      stack: true,\n      stackSubgroups: true,\n      groupOrderSwap(fromGroup, toGroup, groups) {  // eslint-disable-line no-unused-vars\n        const targetOrder = toGroup.order;\n        toGroup.order = fromGroup.order;\n        fromGroup.order = targetOrder;\n      },\n      groupOrder: 'order',\n\n      selectable: true,\n      multiselect: false,\n      longSelectPressTime: 251,\n      itemsAlwaysDraggable: {\n        item: false,\n        range: false,\n      },\n\n      editable: {\n        updateTime: false,\n        updateGroup: false,\n        add: false,\n        remove: false,\n        overrideItems: false\n      },\n\n      groupEditable: {\n        order: false,\n        add: false,\n        remove: false\n      },\n\n      snap: TimeStep.snap,\n\n      // Only called when `objectData.target === 'item'.\n      onDropObjectOnItem(objectData, item, callback) {\n        callback(item)\n      },\n      onAdd(item, callback) {\n        callback(item);\n      },\n      onUpdate(item, callback) {\n        callback(item);\n      },\n      onMove(item, callback) {\n        callback(item);\n      },\n      onRemove(item, callback) {\n        callback(item);\n      },\n      onMoving(item, callback) {\n        callback(item);\n      },\n      onAddGroup(item, callback) {\n        callback(item);\n      },\n      onMoveGroup(item, callback) {\n        callback(item);\n      },\n      onRemoveGroup(item, callback) {\n        callback(item);\n      },\n\n      margin: {\n        item: {\n          horizontal: 10,\n          vertical: 10\n        },\n        axis: 20\n      },\n\n      showTooltips: true,\n\n      tooltip: {\n        followMouse: false,\n        overflowMethod: 'flip',\n        delay: 500\n      },\n\n      tooltipOnItemUpdateTime: false\n    };\n\n    // options is shared by this ItemSet and all its items\n    this.options = util.extend({}, this.defaultOptions);\n    this.options.rtl = options.rtl;\n    this.options.onTimeout = options.onTimeout;\n\n    this.conversion = {\n      toScreen: body.util.toScreen,\n      toTime: body.util.toTime\n    };\n    this.dom = {};\n    this.props = {};\n    this.hammer = null;\n    \n    const me = this;\n    this.itemsData = null;    // DataSet\n    this.groupsData = null;   // DataSet\n    this.itemsSettingTime = null;\n    this.initialItemSetDrawn = false;\n    this.userContinueNotBail = null;  \n\n    this.sequentialSelection = false;\n    \n    // listeners for the DataSet of the items\n    this.itemListeners = {\n      'add'(event, params, senderId) {  // eslint-disable-line no-unused-vars\n        me._onAdd(params.items);\n        if (me.options.cluster) {\n          me.clusterGenerator.setItems(me.items, { applyOnChangedLevel: false });\n        }\n        me.redraw();\n      },\n      'update'(event, params, senderId) {  // eslint-disable-line no-unused-vars\n        me._onUpdate(params.items);\n        if (me.options.cluster) {\n          me.clusterGenerator.setItems(me.items, { applyOnChangedLevel: false });\n        }\n        me.redraw();\n      },\n      'remove'(event, params, senderId) {  // eslint-disable-line no-unused-vars\n        me._onRemove(params.items);\n        if (me.options.cluster) {\n          me.clusterGenerator.setItems(me.items, { applyOnChangedLevel: false });\n        }\n        me.redraw();\n      }\n    };\n\n    // listeners for the DataSet of the groups\n    this.groupListeners = {\n      'add'(event, params, senderId) {  // eslint-disable-line no-unused-vars\n        me._onAddGroups(params.items);\n        \n        if (me.groupsData && me.groupsData.length > 0) {\n            const groupsData = me.groupsData.getDataSet();\n            groupsData.get().forEach(groupData => {\n            if (groupData.nestedGroups) {\n              if (groupData.showNested != false) {\n                groupData.showNested = true;\n              }\n              let updatedGroups = [];\n              groupData.nestedGroups.forEach(nestedGroupId => {\n                const updatedNestedGroup = groupsData.get(nestedGroupId);\n                if (!updatedNestedGroup) { return; }\n                updatedNestedGroup.nestedInGroup = groupData.id;\n                if (groupData.showNested == false) {\n                  updatedNestedGroup.visible = false;\n                }\n                updatedGroups = updatedGroups.concat(updatedNestedGroup);\n              });\n              groupsData.update(updatedGroups, senderId);\n            }\n          });\n        }\n      },\n      'update'(event, params, senderId) {  // eslint-disable-line no-unused-vars\n        me._onUpdateGroups(params.items);\n      },\n      'remove'(event, params, senderId) {  // eslint-disable-line no-unused-vars\n        me._onRemoveGroups(params.items);\n      }\n    };\n\n    this.items = {};      // object with an Item for every data item\n    this.groups = {};     // Group object for every group\n    this.groupIds = [];\n\n    this.selection = [];  // list with the ids of all selected nodes\n\n    this.popup = null;\n    this.popupTimer = null;\n\n    this.touchParams = {}; // stores properties while dragging\n    this.groupTouchParams = {\n      group: null,\n      isDragging: false\n    };\n  \n    // create the HTML DOM\n    this._create();\n\n    this.setOptions(options);\n    this.clusters = [];\n  }\n\n  /**\n   * Create the HTML DOM for the ItemSet\n   */\n  _create() {\n    const frame = document.createElement('div');\n    frame.className = 'vis-itemset';\n    frame['vis-itemset'] = this;\n    this.dom.frame = frame;\n\n    // create background panel\n    const background = document.createElement('div');\n    background.className = 'vis-background';\n    frame.appendChild(background);\n    this.dom.background = background;\n\n    // create foreground panel\n    const foreground = document.createElement('div');\n    foreground.className = 'vis-foreground';\n    frame.appendChild(foreground);\n    this.dom.foreground = foreground;\n\n    // create axis panel\n    const axis = document.createElement('div');\n    axis.className = 'vis-axis';\n    this.dom.axis = axis;\n\n    // create labelset\n    const labelSet = document.createElement('div');\n    labelSet.className = 'vis-labelset';\n    this.dom.labelSet = labelSet;\n\n    // create ungrouped Group\n    this._updateUngrouped();\n\n    // create background Group\n    const backgroundGroup = new BackgroundGroup(BACKGROUND, null, this);\n    backgroundGroup.show();\n    this.groups[BACKGROUND] = backgroundGroup;\n\n    // attach event listeners\n    // Note: we bind to the centerContainer for the case where the height\n    //       of the center container is larger than of the ItemSet, so we\n    //       can click in the empty area to create a new item or deselect an item.\n    this.hammer = new Hammer(this.body.dom.centerContainer);\n\n    // drag items when selected\n    this.hammer.on('hammer.input', event => {\n      if (event.isFirst) {\n        this._onTouch(event);\n      }\n    });\n    this.hammer.on('panstart', this._onDragStart.bind(this));\n    this.hammer.on('panmove',  this._onDrag.bind(this));\n    this.hammer.on('panend',   this._onDragEnd.bind(this));\n    this.hammer.get('pan').set({threshold:5, direction: Hammer.ALL});\n    // delay addition on item click for trackpads...\n    this.hammer.get('press').set({time:10000});\n\n    // single select (or unselect) when tapping an item\n    this.hammer.on('tap',  this._onSelectItem.bind(this));\n\n    // multi select when holding mouse/touch, or on ctrl+click\n    this.hammer.on('press', this._onMultiSelectItem.bind(this));\n    // delay addition on item click for trackpads...\n    this.hammer.get('press').set({time:10000});\n\n    // add item on doubletap\n    this.hammer.on('doubletap', this._onAddItem.bind(this));\n\n    if (this.options.rtl) {\n      this.groupHammer = new Hammer(this.body.dom.rightContainer);\n    } else {\n      this.groupHammer = new Hammer(this.body.dom.leftContainer);\n    }\n    \n    this.groupHammer.on('tap',      this._onGroupClick.bind(this));\n    this.groupHammer.on('panstart', this._onGroupDragStart.bind(this));\n    this.groupHammer.on('panmove',  this._onGroupDrag.bind(this));\n    this.groupHammer.on('panend',   this._onGroupDragEnd.bind(this));\n    this.groupHammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_VERTICAL});\n    \n    this.body.dom.centerContainer.addEventListener('mouseover', this._onMouseOver.bind(this));\n    this.body.dom.centerContainer.addEventListener('mouseout', this._onMouseOut.bind(this));\n    this.body.dom.centerContainer.addEventListener('mousemove', this._onMouseMove.bind(this));\n    // right-click on timeline \n    this.body.dom.centerContainer.addEventListener('contextmenu', this._onDragEnd.bind(this));\n\n    this.body.dom.centerContainer.addEventListener('mousewheel', this._onMouseWheel.bind(this));\n\n    // attach to the DOM\n    this.show();\n  }\n\n  /**\n   * Set options for the ItemSet. Existing options will be extended/overwritten.\n   * @param {Object} [options] The following options are available:\n   *                           {string} type\n   *                              Default type for the items. Choose from 'box'\n   *                              (default), 'point', 'range', or 'background'.\n   *                              The default style can be overwritten by\n   *                              individual items.\n   *                           {string} align\n   *                              Alignment for the items, only applicable for\n   *                              BoxItem. Choose 'center' (default), 'left', or\n   *                              'right'.\n   *                           {string} orientation.item\n   *                              Orientation of the item set. Choose 'top' or\n   *                              'bottom' (default).\n   *                           {Function} groupOrder\n   *                              A sorting function for ordering groups\n   *                           {boolean} stack\n   *                              If true (default), items will be stacked on\n   *                              top of each other.\n   *                           {number} margin.axis\n   *                              Margin between the axis and the items in pixels.\n   *                              Default is 20.\n   *                           {number} margin.item.horizontal\n   *                              Horizontal margin between items in pixels.\n   *                              Default is 10.\n   *                           {number} margin.item.vertical\n   *                              Vertical Margin between items in pixels.\n   *                              Default is 10.\n   *                           {number} margin.item\n   *                              Margin between items in pixels in both horizontal\n   *                              and vertical direction. Default is 10.\n   *                           {number} margin\n   *                              Set margin for both axis and items in pixels.\n   *                           {boolean} selectable\n   *                              If true (default), items can be selected.\n   *                           {boolean} multiselect\n   *                              If true, multiple items can be selected.\n   *                              False by default.\n   *                           {boolean} editable\n   *                              Set all editable options to true or false\n   *                           {boolean} editable.updateTime\n   *                              Allow dragging an item to an other moment in time\n   *                           {boolean} editable.updateGroup\n   *                              Allow dragging an item to an other group\n   *                           {boolean} editable.add\n   *                              Allow creating new items on double tap\n   *                           {boolean} editable.remove\n   *                              Allow removing items by clicking the delete button\n   *                              top right of a selected item.\n   *                           {Function(item: Item, callback: Function)} onAdd\n   *                              Callback function triggered when an item is about to be added:\n   *                              when the user double taps an empty space in the Timeline.\n   *                           {Function(item: Item, callback: Function)} onUpdate\n   *                              Callback function fired when an item is about to be updated.\n   *                              This function typically has to show a dialog where the user\n   *                              change the item. If not implemented, nothing happens.\n   *                           {Function(item: Item, callback: Function)} onMove\n   *                              Fired when an item has been moved. If not implemented,\n   *                              the move action will be accepted.\n   *                           {Function(item: Item, callback: Function)} onRemove\n   *                              Fired when an item is about to be deleted.\n   *                              If not implemented, the item will be always removed.\n   */\n  setOptions(options) {\n    if (options) {\n      // copy all options that we know\n      const fields = [\n        'type', 'rtl', 'align', 'order', 'stack', 'stackSubgroups', 'selectable', 'multiselect', 'sequentialSelection',\n        'multiselectPerGroup', 'longSelectPressTime', 'groupOrder', 'dataAttributes', 'template', 'groupTemplate', 'visibleFrameTemplate',\n        'hide', 'snap', 'groupOrderSwap', 'showTooltips', 'tooltip', 'tooltipOnItemUpdateTime', 'groupHeightMode', 'onTimeout'\n      ];\n      util.selectiveExtend(fields, this.options, options);\n\n      if ('itemsAlwaysDraggable' in options) {\n        if (typeof options.itemsAlwaysDraggable === 'boolean') {\n          this.options.itemsAlwaysDraggable.item = options.itemsAlwaysDraggable;\n          this.options.itemsAlwaysDraggable.range = false;\n        }\n        else if (typeof options.itemsAlwaysDraggable === 'object') {\n          util.selectiveExtend(['item', 'range'], this.options.itemsAlwaysDraggable, options.itemsAlwaysDraggable);\n          // only allow range always draggable when item is always draggable as well\n          if (! this.options.itemsAlwaysDraggable.item) {\n            this.options.itemsAlwaysDraggable.range = false;\n          }\n        }\n      }\n\n      if ('sequentialSelection' in options) {\n        if (typeof options.sequentialSelection === 'boolean') {\n          this.options.sequentialSelection = options.sequentialSelection;\n        }\n      }\n\n      if ('orientation' in options) {\n        if (typeof options.orientation === 'string') {\n          this.options.orientation.item = options.orientation === 'top' ? 'top' : 'bottom';\n        }\n        else if (typeof options.orientation === 'object' && 'item' in options.orientation) {\n          this.options.orientation.item = options.orientation.item;\n        }\n      }\n\n      if ('margin' in options) {\n        if (typeof options.margin === 'number') {\n          this.options.margin.axis = options.margin;\n          this.options.margin.item.horizontal = options.margin;\n          this.options.margin.item.vertical = options.margin;\n        }\n        else if (typeof options.margin === 'object') {\n          util.selectiveExtend(['axis'], this.options.margin, options.margin);\n          if ('item' in options.margin) {\n            if (typeof options.margin.item === 'number') {\n              this.options.margin.item.horizontal = options.margin.item;\n              this.options.margin.item.vertical = options.margin.item;\n            }\n            else if (typeof options.margin.item === 'object') {\n              util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item);\n            }\n          }\n        }\n      }\n\n      ['locale', 'locales'].forEach(key => {\n        if (key in options) {\n          this.options[key] = options[key];\n        }\n      });\n\n      if ('editable' in options) {\n        if (typeof options.editable === 'boolean') {\n          this.options.editable.updateTime    = options.editable;\n          this.options.editable.updateGroup   = options.editable;\n          this.options.editable.add           = options.editable;\n          this.options.editable.remove        = options.editable;\n          this.options.editable.overrideItems = false;\n        }\n        else if (typeof options.editable === 'object') {\n          util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove', 'overrideItems'], this.options.editable, options.editable);\n        }\n      }\n\n      if ('groupEditable' in options) {\n        if (typeof options.groupEditable === 'boolean') {\n          this.options.groupEditable.order  = options.groupEditable;\n          this.options.groupEditable.add    = options.groupEditable;\n          this.options.groupEditable.remove = options.groupEditable;\n        }\n        else if (typeof options.groupEditable === 'object') {\n          util.selectiveExtend(['order', 'add', 'remove'], this.options.groupEditable, options.groupEditable);\n        }\n      }\n\n      // callback functions\n      const addCallback = name => {\n        const fn = options[name];\n        if (fn) {\n          if (!(typeof fn === 'function')) {\n            throw new Error(`option ${name} must be a function ${name}(item, callback)`);\n          }\n          this.options[name] = fn;\n        }\n      };\n      ['onDropObjectOnItem', 'onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving', 'onAddGroup', 'onMoveGroup', 'onRemoveGroup'].forEach(addCallback);\n\n      if (options.cluster) {\n        Object.assign(this.options, {\n          cluster: options.cluster\n        });\n        if (!this.clusterGenerator) {\n          this.clusterGenerator = new ClusterGenerator(this);\n        } \n        this.clusterGenerator.setItems(this.items, { applyOnChangedLevel: false });\n        this.markDirty({ refreshItems: true, restackGroups: true });\n\n        this.redraw();\n      } else if (this.clusterGenerator) {\n        this._detachAllClusters();\n        this.clusters = [];\n        this.clusterGenerator = null;\n        this.options.cluster = undefined;\n        this.markDirty({ refreshItems: true, restackGroups: true });\n\n        this.redraw();\n      } else {\n        // force the itemSet to refresh: options like orientation and margins may be changed\n        this.markDirty();\n      }\n    }\n  }\n\n  /**\n   * Mark the ItemSet dirty so it will refresh everything with next redraw.\n   * Optionally, all items can be marked as dirty and be refreshed.\n   * @param {{refreshItems: boolean}} [options]\n   */\n  markDirty(options) {\n    this.groupIds = [];\n\n    if (options) {\n      if (options.refreshItems) {\n        util.forEach(this.items, item => {\n          item.dirty = true;\n          if (item.displayed) item.redraw();\n        });\n      }\n      \n      if (options.restackGroups) {\n        util.forEach(this.groups, (group, key) => {\n          if (key === BACKGROUND) return;\n          group.stackDirty = true;\n        });\n      }\n    }\n  }\n\n  /**\n   * Destroy the ItemSet\n   */\n  destroy() {\n    this.clearPopupTimer();\n    this.hide();\n    this.setItems(null);\n    this.setGroups(null);\n\n    this.hammer && this.hammer.destroy();\n    this.groupHammer && this.groupHammer.destroy();\n    this.hammer = null;\n\n    this.body = null;\n    this.conversion = null;\n  }\n\n  /**\n   * Hide the component from the DOM\n   */\n  hide() {\n    // remove the frame containing the items\n    if (this.dom.frame.parentNode) {\n      this.dom.frame.parentNode.removeChild(this.dom.frame);\n    }\n\n    // remove the axis with dots\n    if (this.dom.axis.parentNode) {\n      this.dom.axis.parentNode.removeChild(this.dom.axis);\n    }\n\n    // remove the labelset containing all group labels\n    if (this.dom.labelSet.parentNode) {\n      this.dom.labelSet.parentNode.removeChild(this.dom.labelSet);\n    }\n  }\n\n  /**\n   * Show the component in the DOM (when not already visible).\n   */\n  show() {\n    // show frame containing the items\n    if (!this.dom.frame.parentNode) {\n      this.body.dom.center.appendChild(this.dom.frame);\n    }\n\n    // show axis with dots\n    if (!this.dom.axis.parentNode) {\n      this.body.dom.backgroundVertical.appendChild(this.dom.axis);\n    }\n\n    // show labelset containing labels\n    if (!this.dom.labelSet.parentNode) {\n      if (this.options.rtl) {\n        this.body.dom.right.appendChild(this.dom.labelSet);\n      } else {\n        this.body.dom.left.appendChild(this.dom.labelSet);\n      }\n    }\n  }\n\n  /**\n   * Activates the popup timer to show the given popup after a fixed time.\n   * @param {Popup} popup\n   */\n  setPopupTimer(popup) {\n    this.clearPopupTimer();\n    if (popup) {\n      const delay = this.options.tooltip.delay || typeof this.options.tooltip.delay === 'number' ?\n            this.options.tooltip.delay :\n            500;\n      this.popupTimer = setTimeout(\n        function () {\n          popup.show()\n        }, delay);\n    }\n  }\n\n  /**\n   * Clears the popup timer for the tooltip.\n   */\n  clearPopupTimer() {\n    if (this.popupTimer != null) {\n        clearTimeout(this.popupTimer);\n        this.popupTimer = null;\n    }\n  }\n  \n  /**\n   * Set selected items by their id. Replaces the current selection\n   * Unknown id's are silently ignored.\n   * @param {string[] | string} [ids] An array with zero or more id's of the items to be\n   *                                  selected, or a single item id. If ids is undefined\n   *                                  or an empty array, all items will be unselected.\n   */\n  setSelection(ids) {\n    if (ids == undefined) { \n      ids = [];\n    }\n    \n    if (!Array.isArray(ids)) {\n      ids = [ids];\n    }\n  \n\n    const idsToDeselect = this.selection.filter(id => ids.indexOf(id) === -1);\n\n    // unselect currently selected items\n    for (let selectedId of idsToDeselect) {\n      const item = this.getItemById(selectedId);\n      if (item) {\n        item.unselect();\n      }\n    }\n  \n    // select items\n    this.selection = [ ...ids ];\n    for (let id of ids) {\n      const item = this.getItemById(id);\n      if (item) {\n        item.select();\n      }\n    }\n  }\n\n  /**\n   * Get the selected items by their id\n   * @return {Array} ids  The ids of the selected items\n   */\n  getSelection() {\n    return this.selection.concat([]);\n  }\n\n  /**\n   * Get the id's of the currently visible items.\n   * @returns {Array} The ids of the visible items\n   */\n  getVisibleItems() {\n    const range = this.body.range.getRange();\n    let right;\n    let left;\n\n    if (this.options.rtl) { \n      right  = this.body.util.toScreen(range.start);\n      left = this.body.util.toScreen(range.end);\n    } else {\n      left  = this.body.util.toScreen(range.start);\n      right = this.body.util.toScreen(range.end);\n    }\n\n    const ids = [];\n    for (const groupId in this.groups) {\n      if (this.groups.hasOwnProperty(groupId)) {\n        const group = this.groups[groupId];\n        const rawVisibleItems = group.isVisible ? group.visibleItems : [];\n\n        // filter the \"raw\" set with visibleItems into a set which is really\n        // visible by pixels\n        for (const item of rawVisibleItems) {\n          // TODO: also check whether visible vertically\n          if (this.options.rtl) { \n            if ((item.right < left) && (item.right + item.width > right)) {\n              ids.push(item.id);\n            }\n          } else {\n            if ((item.left < right) && (item.left + item.width > left)) {\n              ids.push(item.id);\n            }\n          }\n        }\n      }\n    }\n\n    return ids;\n  }\n\n    /**\n   * Get the id's of the items at specific time, where a click takes place on the timeline.\n   * @returns {Array} The ids of all items in existence at the time of click event on the timeline.\n   */\n  getItemsAtCurrentTime(timeOfEvent) {\n    let right;\n    let left;\n\n    if (this.options.rtl) { \n      right  = this.body.util.toScreen(timeOfEvent);\n      left = this.body.util.toScreen(timeOfEvent);\n    } else {\n      left  = this.body.util.toScreen(timeOfEvent);\n      right = this.body.util.toScreen(timeOfEvent);\n    }\n\n    const ids = [];\n    for (const groupId in this.groups) {\n      if (this.groups.hasOwnProperty(groupId)) {\n        const group = this.groups[groupId];\n        const rawVisibleItems = group.isVisible ? group.visibleItems : [];\n\n        // filter the \"raw\" set with visibleItems into a set which is really\n        // visible by pixels\n        for (const item of rawVisibleItems) {\n          if (this.options.rtl) { \n            if ((item.right < left) && (item.right + item.width > right)) {\n              ids.push(item.id);\n            }\n          } else {\n            if ((item.left < right) && (item.left + item.width > left)) {\n              ids.push(item.id);\n            }\n          }\n        }\n      }\n    }\n    return ids;\n  }\n\n  /**\n   * Get the id's of the currently visible groups.\n   * @returns {Array} The ids of the visible groups\n   */\n  getVisibleGroups() {\n    const ids = [];\n\n    for (const groupId in this.groups) {\n      if (this.groups.hasOwnProperty(groupId)) {\n        const group = this.groups[groupId];\n        if (group.isVisible) {\n          ids.push(groupId)\n        }\n      }\n    }\n\n    return ids;\n  }\n  \n  /**\n   * get item by id\n   * @param {string} id\n   * @return {object} item\n   */\n  getItemById(id) {\n    return this.items[id] || this.clusters.find(cluster => cluster.id === id);\n  } \n\n  /**\n   * Deselect a selected item\n   * @param {string | number} id\n   * @private\n   */\n  _deselect(id) {\n    const selection = this.selection;\n    for (let i = 0, ii = selection.length; i < ii; i++) {\n      if (selection[i] == id) { // non-strict comparison!\n        selection.splice(i, 1);\n        break;\n      }\n    }\n  }\n\n  /**\n   * Repaint the component\n   * @return {boolean} Returns true if the component is resized\n   */\n  redraw() {\n    const margin = this.options.margin;\n    const range = this.body.range;\n    const asSize = util.option.asSize;\n    const options = this.options;\n    const orientation = options.orientation.item;\n    let resized = false;\n    const frame = this.dom.frame;\n\n    // recalculate absolute position (before redrawing groups)\n    this.props.top = this.body.domProps.top.height + this.body.domProps.border.top;\n\n    if (this.options.rtl) {\n      this.props.right = this.body.domProps.right.width + this.body.domProps.border.right;\n    } else {\n      this.props.left = this.body.domProps.left.width + this.body.domProps.border.left;\n    }\n\n    // update class name\n    frame.className = 'vis-itemset';\n\n    if (this.options.cluster) {\n      this._clusterItems();\n    }\n\n    // reorder the groups (if needed)\n    resized = this._orderGroups() || resized;\n\n    // check whether zoomed (in that case we need to re-stack everything)\n    // TODO: would be nicer to get this as a trigger from Range\n    const visibleInterval = range.end - range.start;\n    const zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth);\n    const scrolled = range.start != this.lastRangeStart;\n    const changedStackOption = options.stack != this.lastStack;\n    const changedStackSubgroupsOption = options.stackSubgroups != this.lastStackSubgroups;\n    const forceRestack = (zoomed || scrolled || changedStackOption || changedStackSubgroupsOption);\n    this.lastVisibleInterval = visibleInterval;\n    this.lastRangeStart = range.start;\n    this.lastStack = options.stack;\n    this.lastStackSubgroups = options.stackSubgroups;\n\n    this.props.lastWidth = this.props.width;\n    const firstGroup = this._firstGroup();\n    const firstMargin = {\n      item: margin.item,\n      axis: margin.axis\n    };\n    const nonFirstMargin = {\n      item: margin.item,\n      axis: margin.item.vertical / 2\n    };\n    let height = 0;\n    const minHeight = margin.axis + margin.item.vertical;\n\n    // redraw the background group\n    this.groups[BACKGROUND].redraw(range, nonFirstMargin, forceRestack);\n\n    const redrawQueue = {};\n    let redrawQueueLength = 0;\n\n    // collect redraw functions\n    util.forEach(this.groups, (group, key) => {\n      if (key === BACKGROUND) return;\n      const groupMargin = group == firstGroup ? firstMargin : nonFirstMargin;\n      const returnQueue = true;\n      redrawQueue[key] = group.redraw(range, groupMargin, forceRestack, returnQueue);\n      redrawQueueLength = redrawQueue[key].length;\n    });\n\n    const needRedraw = redrawQueueLength > 0;\n    if (needRedraw) {\n      const redrawResults = {};\n\n      for (let i = 0; i < redrawQueueLength; i++) {\n        util.forEach(redrawQueue, (fns, key) => {\n          redrawResults[key] = fns[i]();\n        });\n      }\n\n      // redraw all regular groups\n      util.forEach(this.groups, (group, key) => {\n        if (key === BACKGROUND) return;\n        const groupResized = redrawResults[key];\n        resized = groupResized || resized;\n        height += group.height;\n      });\n      height = Math.max(height, minHeight);\n    }\n\n    height = Math.max(height, minHeight);\n\n    // update frame height\n    frame.style.height  = asSize(height);\n\n    // calculate actual size\n    this.props.width = frame.offsetWidth;\n    this.props.height = height;\n\n    // reposition axis\n    this.dom.axis.style.top = asSize((orientation == 'top') ?\n        (this.body.domProps.top.height + this.body.domProps.border.top) :\n        (this.body.domProps.top.height + this.body.domProps.centerContainer.height));\n    if (this.options.rtl) {\n      this.dom.axis.style.right = '0';\n    } else {\n      this.dom.axis.style.left = '0';\n    }\n\n    this.hammer.get('press').set({time: this.options.longSelectPressTime});\n\n    this.initialItemSetDrawn = true;\n    // check if this component is resized\n    resized = this._isResized() || resized;\n\n    return resized;\n  }\n\n  /**\n   * Get the first group, aligned with the axis\n   * @return {Group | null} firstGroup\n   * @private\n   */\n  _firstGroup() {\n    const firstGroupIndex = (this.options.orientation.item == 'top') ? 0 : (this.groupIds.length - 1);\n    const firstGroupId = this.groupIds[firstGroupIndex];\n    const firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED];\n\n    return firstGroup || null;\n  }\n\n  /**\n   * Create or delete the group holding all ungrouped items. This group is used when\n   * there are no groups specified.\n   * @protected\n   */\n  _updateUngrouped() {\n    let ungrouped = this.groups[UNGROUPED];\n    let item;\n    let itemId;\n\n    if (this.groupsData) {\n      // remove the group holding all ungrouped items\n      if (ungrouped) {\n        ungrouped.dispose();\n        delete this.groups[UNGROUPED];\n\n        for (itemId in this.items) {\n          if (this.items.hasOwnProperty(itemId)) {\n            item = this.items[itemId];\n            item.parent && item.parent.remove(item);\n            const groupId = this.getGroupId(item.data);\n            const group = this.groups[groupId];\n            group && group.add(item) || item.hide();\n          }\n        }\n      }\n    }\n    else {\n      // create a group holding all (unfiltered) items\n      if (!ungrouped) {\n        const id = null;\n        const data = null;\n        ungrouped = new Group(id, data, this);\n        this.groups[UNGROUPED] = ungrouped;\n\n        for (itemId in this.items) {\n          if (this.items.hasOwnProperty(itemId)) {\n            item = this.items[itemId];\n            ungrouped.add(item);\n          }\n        }\n\n        ungrouped.show();\n      }\n    }\n  }\n\n  /**\n   * Get the element for the labelset\n   * @return {HTMLElement} labelSet\n   */\n  getLabelSet() {\n    return this.dom.labelSet;\n  }\n\n  /**\n   * Set items\n   * @param {vis.DataSet | null} items\n   */\n  setItems(items) {\n    this.itemsSettingTime = new Date();\n    const me = this;\n    let ids;\n    const oldItemsData = this.itemsData;\n\n    // replace the dataset\n    if (!items) {\n      this.itemsData = null;\n    }\n    else if (isDataViewLike(items)) {\n      this.itemsData = typeCoerceDataSet(items);\n    }\n    else {\n      throw new TypeError('Data must implement the interface of DataSet or DataView');\n    }\n\n    if (oldItemsData) {\n      // unsubscribe from old dataset\n      util.forEach(this.itemListeners, (callback, event) => {\n        oldItemsData.off(event, callback);\n      });\n\n      // stop maintaining a coerced version of the old data set\n      oldItemsData.dispose()\n\n      // remove all drawn items\n      ids = oldItemsData.getIds();\n      this._onRemove(ids);\n    }\n\n    if (this.itemsData) {\n      // subscribe to new dataset\n      const id = this.id;\n      util.forEach(this.itemListeners, (callback, event) => {\n        me.itemsData.on(event, callback, id);\n      });\n\n      // add all new items\n      ids = this.itemsData.getIds();\n      this._onAdd(ids);\n\n      // update the group holding all ungrouped items\n      this._updateUngrouped();\n    }\n\n    this.body.emitter.emit('_change', {queue: true});\n  }\n\n  /**\n   * Get the current items\n   * @returns {vis.DataSet | null}\n   */\n  getItems() {\n    return this.itemsData != null ? this.itemsData.rawDS : null;\n  }\n\n  /**\n   * Set groups\n   * @param {vis.DataSet} groups\n   */\n  setGroups(groups) {\n    const me = this;\n    let ids;\n\n    // unsubscribe from current dataset\n    if (this.groupsData) {\n      util.forEach(this.groupListeners, (callback, event) => {\n        me.groupsData.off(event, callback);\n      });\n\n      // remove all drawn groups\n      ids = this.groupsData.getIds();\n      this.groupsData = null;\n      this._onRemoveGroups(ids); // note: this will cause a redraw\n    }\n\n    // replace the dataset\n    if (!groups) {\n      this.groupsData = null;\n    }\n    else if (isDataViewLike(groups)) {\n      this.groupsData = groups;\n    }\n    else {\n      throw new TypeError('Data must implement the interface of DataSet or DataView');\n    }\n\n    if (this.groupsData) {\n      // go over all groups nesting\n      const groupsData = this.groupsData.getDataSet()\n\n      groupsData.get().forEach(group => {\n        if (group.nestedGroups) {\n          group.nestedGroups.forEach(nestedGroupId => {\n            const updatedNestedGroup = groupsData.get(nestedGroupId);\n            updatedNestedGroup.nestedInGroup = group.id;\n            if (group.showNested == false) {\n              updatedNestedGroup.visible = false;\n            }\n            groupsData.update(updatedNestedGroup);\n          })\n        }\n      });\n\n      // subscribe to new dataset\n      const id = this.id;\n      util.forEach(this.groupListeners, (callback, event) => {\n        me.groupsData.on(event, callback, id);\n      });\n\n      // draw all ms\n      ids = this.groupsData.getIds();\n      this._onAddGroups(ids);\n    }\n\n    // update the group holding all ungrouped items\n    this._updateUngrouped();\n\n    // update the order of all items in each group\n    this._order();\n\n    if (this.options.cluster) {\n      this.clusterGenerator.updateData();\n      this._clusterItems();\n      this.markDirty({ refreshItems: true, restackGroups: true });\n    }\n\n    this.body.emitter.emit('_change', {queue: true});\n  }\n\n  /**\n   * Get the current groups\n   * @returns {vis.DataSet | null} groups\n   */\n  getGroups() {\n    return this.groupsData;\n  }\n\n  /**\n   * Remove an item by its id\n   * @param {string | number} id\n   */\n  removeItem(id) {\n    const item = this.itemsData.get(id);\n\n    if (item) {\n      // confirm deletion\n      this.options.onRemove(item, item => {\n        if (item) {\n          // remove by id here, it is possible that an item has no id defined\n          // itself, so better not delete by the item itself\n          this.itemsData.remove(id);\n        }\n      });\n    }\n  }\n\n  /**\n   * Get the time of an item based on it's data and options.type\n   * @param {Object} itemData\n   * @returns {string} Returns the type\n   * @private\n   */\n  _getType(itemData) {\n    return itemData.type || this.options.type || (itemData.end ? 'range' : 'box');\n  }\n\n  /**\n   * Get the group id for an item\n   * @param {Object} itemData\n   * @returns {string} Returns the groupId\n   * @private\n   */\n  getGroupId(itemData) {\n    const type = this._getType(itemData);\n    if (type == 'background' && itemData.group == undefined) {\n     return BACKGROUND;\n    }\n    else {\n      return this.groupsData ? itemData.group : UNGROUPED;\n    }\n  }\n\n  /**\n   * Handle updated items\n   * @param {number[]} ids\n   * @protected\n   */\n  _onUpdate(ids) {\n    const me = this;\n\n    ids.forEach(id => {\n      const itemData = me.itemsData.get(id);\n      let item = me.items[id];\n      const type = itemData ? me._getType(itemData) : null;\n\n      const constructor = ItemSet.types[type];\n      let selected;\n\n      if (item) {\n        // update item   \t\n        if (!constructor || !(item instanceof constructor)) {\n          // item type has changed, delete the item and recreate it\n          selected = item.selected; // preserve selection of this item\n          me._removeItem(item);\n          item = null;\n        }\n        else {\n          me._updateItem(item, itemData);\n        }\n      }\n\n      if (!item && itemData) {\n        // create item\n        if (constructor) {\n          item = new constructor(itemData, me.conversion, me.options);\n          item.id = id; // TODO: not so nice setting id afterwards\n\n          me._addItem(item);\n          if (selected) {\n            this.selection.push(id);\n            item.select();\n          }\n        }\n        else {\n          throw new TypeError(`Unknown item type \"${type}\"`);\n        }\n      }\n    });\n\n    this._order();\n    \n    if (this.options.cluster) {\n      this.clusterGenerator.setItems(this.items, { applyOnChangedLevel: false });\n      this._clusterItems();\n    }\n\n    this.body.emitter.emit('_change', {queue: true});\n  }\n\n  /**\n   * Handle removed items\n   * @param {number[]} ids\n   * @protected\n   */\n  _onRemove(ids) {\n    let count = 0;\n    const me = this;\n    ids.forEach(id => {\n      const item = me.items[id];\n      if (item) {\n        count++;\n        me._removeItem(item);\n      }\n    });\n\n    if (count) {\n      // update order\n      this._order();\n      this.body.emitter.emit('_change', {queue: true});\n    }\n  }\n\n  /**\n   * Update the order of item in all groups\n   * @private\n   */\n  _order() {\n    // reorder the items in all groups\n    // TODO: optimization: only reorder groups affected by the changed items\n    util.forEach(this.groups, group => {\n      group.order();\n    });\n  }\n\n  /**\n   * Handle updated groups\n   * @param {number[]} ids\n   * @private\n   */\n  _onUpdateGroups(ids) {\n    this._onAddGroups(ids);\n  }\n\n  /**\n   * Handle changed groups (added or updated)\n   * @param {number[]} ids\n   * @private\n   */\n  _onAddGroups(ids) {\n    const me = this;\n\n    ids.forEach(id => {\n      const groupData = me.groupsData.get(id);\n      let group = me.groups[id];\n\n      if (!group) {\n        // check for reserved ids\n        if (id == UNGROUPED || id == BACKGROUND) {\n          throw new Error(`Illegal group id. ${id} is a reserved id.`);\n        }\n\n        const groupOptions = Object.create(me.options);\n        util.extend(groupOptions, {\n          height: null\n        });\n\n        group = new Group(id, groupData, me);\n        me.groups[id] = group;\n\n        // add items with this groupId to the new group\n        for (const itemId in me.items) {\n          if (me.items.hasOwnProperty(itemId)) {\n            const item = me.items[itemId];\n            if (item.data.group == id) {\n              group.add(item);\n            }\n          }\n        }\n\n        group.order();\n        group.show();\n      }\n      else {\n        // update group\n        group.setData(groupData);\n      }\n    });\n\n    this.body.emitter.emit('_change', {queue: true});\n  }\n\n  /**\n   * Handle removed groups\n   * @param {number[]} ids\n   * @private\n   */\n  _onRemoveGroups(ids) {\n    ids.forEach(id => {\n      const group = this.groups[id];\n\n      if (group) {\n        group.dispose();\n        delete this.groups[id];\n      }\n    });\n\n    if (this.options.cluster) {\n      this.clusterGenerator.updateData();\n      this._clusterItems();\n    } \n\n    this.markDirty({ restackGroups: !!this.options.cluster });\n    this.body.emitter.emit('_change', {queue: true});\n  }\n\n  /**\n   * Reorder the groups if needed\n   * @return {boolean} changed\n   * @private\n   */\n  _orderGroups() {\n    if (this.groupsData) {\n      // reorder the groups\n      let groupIds = this.groupsData.getIds({\n        order: this.options.groupOrder\n      });\n\n      groupIds = this._orderNestedGroups(groupIds);\n\n      const changed = !util.equalArray(groupIds, this.groupIds);\n      if (changed) {\n        // hide all groups, removes them from the DOM\n        const groups = this.groups;\n        groupIds.forEach(groupId => {\n          groups[groupId].hide();\n        });\n\n        // show the groups again, attach them to the DOM in correct order\n        groupIds.forEach(groupId => {\n          groups[groupId].show();\n        });\n\n        this.groupIds = groupIds;\n      }\n\n      return changed;\n    }\n    else {\n      return false;\n    }\n  }\n\n  /**\n   * Reorder the nested groups\n   *\n   * @param {Array.<number>} groupIds\n   * @returns {Array.<number>}\n   * @private\n   */\n  _orderNestedGroups(groupIds) {\n    /**\n     * Recursively order nested groups\n     *\n     * @param {ItemSet} t\n     * @param {Array.<number>} groupIds\n     * @returns {Array.<number>}\n     * @private\n     */\n    function getOrderedNestedGroups(t, groupIds) {\n      let result = [];\n      groupIds.forEach(groupId => {\n        result.push(groupId);\n        const groupData = t.groupsData.get(groupId);\n        if (groupData.nestedGroups) {\n          const nestedGroupIds = t.groupsData.get({\n            filter(nestedGroup) {\n              return nestedGroup.nestedInGroup == groupId;\n            },\n            order: t.options.groupOrder\n          }).map(nestedGroup => nestedGroup.id);\n          result = result.concat(getOrderedNestedGroups(t, nestedGroupIds));\n        }\n      });\n\n      return result;\n    }\n\n    const topGroupIds = groupIds.filter(groupId => !this.groupsData.get(groupId).nestedInGroup);\n\n    return getOrderedNestedGroups(this, topGroupIds);\n  }\n\n  /**\n   * Add a new item\n   * @param {Item} item\n   * @private\n   */\n  _addItem(item) {\n    this.items[item.id] = item;\n\n    // add to group\n    const groupId = this.getGroupId(item.data);\n    const group = this.groups[groupId];\n\n    if (!group) {\n      item.groupShowing = false;\n    } else if (group && group.data && group.data.showNested) {\n      item.groupShowing = true;\n    }\n\n    if (group) group.add(item);\n  }\n\n  /**\n   * Update an existing item\n   * @param {Item} item\n   * @param {Object} itemData\n   * @private\n   */\n  _updateItem(item, itemData) {\n    // update the items data (will redraw the item when displayed)\n    item.setData(itemData);\n\n    const groupId = this.getGroupId(item.data);\n    const group = this.groups[groupId];\n    if (!group) {\n      item.groupShowing = false;\n    } else if (group && group.data && group.data.showNested) {\n      item.groupShowing = true;\n    }\n  }\n\n  /**\n   * Delete an item from the ItemSet: remove it from the DOM, from the map\n   * with items, and from the map with visible items, and from the selection\n   * @param {Item} item\n   * @private\n   */\n  _removeItem(item) {\n    // remove from DOM\n    item.hide();\n\n    // remove from items\n    delete this.items[item.id];\n\n    // remove from selection\n    const index = this.selection.indexOf(item.id);\n    if (index != -1) this.selection.splice(index, 1);\n\n    // remove from group\n    item.parent && item.parent.remove(item);\n\n    // remove Tooltip from DOM\n    if (this.popup != null) {\n      this.popup.hide();\n    }\n  }\n\n  /**\n   * Create an array containing all items being a range (having an end date)\n   * @param {Array.<Object>} array\n   * @returns {Array}\n   * @private\n   */\n  _constructByEndArray(array) {\n    const endArray = [];\n\n    for (let i = 0; i < array.length; i++) {\n      if (array[i] instanceof RangeItem) {\n        endArray.push(array[i]);\n      }\n    }\n    return endArray;\n  }\n\n  /**\n   * Register the clicked item on touch, before dragStart is initiated.\n   *\n   * dragStart is initiated from a mousemove event, AFTER the mouse/touch is\n   * already moving. Therefore, the mouse/touch can sometimes be above an other\n   * DOM element than the item itself.\n   *\n   * @param {Event} event\n   * @private\n   */\n  _onTouch(event) {\n    // store the touched item, used in _onDragStart\n    this.touchParams.item = this.itemFromTarget(event);\n    this.touchParams.dragLeftItem = event.target.dragLeftItem || false;\n    this.touchParams.dragRightItem = event.target.dragRightItem || false;\n    this.touchParams.itemProps = null;\n  }\n\n  /**\n   * Given an group id, returns the index it has.\n   *\n   * @param {number} groupId\n   * @returns {number} index / groupId\n   * @private\n   */\n  _getGroupIndex(groupId) {\n      for (let i = 0; i < this.groupIds.length; i++) {\n          if (groupId == this.groupIds[i])\n              return i;\n      }\n  }\n\n  /**\n   * Start dragging the selected events\n   * @param {Event} event\n   * @private\n   */\n  _onDragStart(event) {\n    if (this.touchParams.itemIsDragging) { return; }\n    const item = this.touchParams.item || null;\n    const me = this;\n    let props;\n\n    if (item && (item.selected || this.options.itemsAlwaysDraggable.item)) {\n\n      if (this.options.editable.overrideItems &&\n          !this.options.editable.updateTime &&\n          !this.options.editable.updateGroup) {\n        return;\n      }\n\n      // override options.editable\n      if ((item.editable != null && !item.editable.updateTime && !item.editable.updateGroup)\n          && !this.options.editable.overrideItems) {\n        return;\n      }\n\n      const dragLeftItem = this.touchParams.dragLeftItem;\n      const dragRightItem = this.touchParams.dragRightItem;\n      this.touchParams.itemIsDragging = true;\n      this.touchParams.selectedItem = item;\n\n      if (dragLeftItem) {\n        props = {\n          item: dragLeftItem,\n          initialX: event.center.x,\n          dragLeft:  true,\n          data: this._cloneItemData(item.data)\n        };\n\n        this.touchParams.itemProps = [props];\n      } else if (dragRightItem) {\n        props = {\n          item: dragRightItem,\n          initialX: event.center.x,\n          dragRight: true,\n          data: this._cloneItemData(item.data)\n        };\n\n        this.touchParams.itemProps = [props];\n      } else if (this.options.editable.add && (event.srcEvent.ctrlKey || event.srcEvent.metaKey)) {\n        // create a new range item when dragging with ctrl key down\n        this._onDragStartAddItem(event);\n      } else {\n        if(this.groupIds.length < 1) {\n          // Mitigates a race condition if _onDragStart() is\n          // called after markDirty() without redraw() being called between.\n          this.redraw();\n        }\n        \n        const baseGroupIndex = this._getGroupIndex(item.data.group);\n\n        const itemsToDrag = (this.options.itemsAlwaysDraggable.item && !item.selected) ? [item.id] : this.getSelection();\n\n        this.touchParams.itemProps = itemsToDrag.map(id => {\n          const item = me.items[id];\n          const groupIndex = me._getGroupIndex(item.data.group);\n          return {\n            item,\n            initialX: event.center.x,\n            groupOffset: baseGroupIndex-groupIndex,\n            data: this._cloneItemData(item.data)\n          };\n        });\n      }\n\n      event.stopPropagation();\n    } else if (this.options.editable.add && (event.srcEvent.ctrlKey || event.srcEvent.metaKey)) {\n      // create a new range item when dragging with ctrl key down\n      this._onDragStartAddItem(event);\n    }\n  }\n\n  /**\n   * Start creating a new range item by dragging.\n   * @param {Event} event\n   * @private\n   */\n  _onDragStartAddItem(event) {\n    const snap = this.options.snap || null;\n    const frameRect = this.dom.frame.getBoundingClientRect()\n\n    // plus (if rtl) 10 to compensate for the drag starting as soon as you've moved 10px\n    const x = this.options.rtl ? frameRect.right - event.center.x  + 10 : event.center.x - frameRect.left - 10;\n\n    const time = this.body.util.toTime(x);\n    const scale = this.body.util.getScale();\n    const step = this.body.util.getStep();\n    const start = snap ? snap(time, scale, step) : time;\n    const end = start;\n\n    const itemData = {\n      type: 'range',\n      start,\n      end,\n      content: 'new item'\n    };\n\n    const id = randomUUID();\n    itemData[this.itemsData.idProp] = id;\n\n    const group = this.groupFromTarget(event);\n    if (group) {\n      itemData.group = group.groupId;\n    }\n    const newItem = new RangeItem(itemData, this.conversion, this.options);\n    newItem.id = id; // TODO: not so nice setting id afterwards\n    newItem.data = this._cloneItemData(itemData);\n    this._addItem(newItem);\n    this.touchParams.selectedItem = newItem;\n    \n    const props = {\n      item: newItem,\n      initialX: event.center.x,\n      data: newItem.data\n    };\n\n    if (this.options.rtl) {\n      props.dragLeft = true;\n    } else {\n      props.dragRight = true;\n    }\n    this.touchParams.itemProps = [props];\n\n    event.stopPropagation();\n  }\n\n  /**\n   * Drag selected items\n   * @param {Event} event\n   * @private\n   */\n  _onDrag(event) {\n    if (this.popup != null && this.options.showTooltips && !this.popup.hidden) {\n      // this.popup.hide();\n      const container = this.body.dom.centerContainer;\n      const containerRect = container.getBoundingClientRect()\n      this.popup.setPosition(\n        event.center.x - containerRect.left + container.offsetLeft,\n        event.center.y - containerRect.top + container.offsetTop\n      );\n      this.popup.show(); // redraw\n    }\n    \n    if (this.touchParams.itemProps) {\n      event.stopPropagation();\n\n      const me = this;\n      const snap = this.options.snap || null;\n      const domRootOffsetLeft = this.body.dom.root.offsetLeft;\n      const xOffset = this.options.rtl ? domRootOffsetLeft + this.body.domProps.right.width : domRootOffsetLeft + this.body.domProps.left.width;\n      const scale = this.body.util.getScale();\n      const step = this.body.util.getStep();\n\n      //only calculate the new group for the item that's actually dragged\n      const selectedItem = this.touchParams.selectedItem;\n      const updateGroupAllowed = ((this.options.editable.overrideItems || selectedItem.editable == null) && this.options.editable.updateGroup) ||\n                               (!this.options.editable.overrideItems && selectedItem.editable != null && selectedItem.editable.updateGroup);\n      let newGroupBase = null;\n      if (updateGroupAllowed && selectedItem) {\n        if (selectedItem.data.group != undefined) {\n          // drag from one group to another\n          const group = me.groupFromTarget(event);\n          if (group) {\n            //we know the offset for all items, so the new group for all items\n            //will be relative to this one.\n            newGroupBase = this._getGroupIndex(group.groupId);\n          }\n        }\n      }\n\n      // move\n      this.touchParams.itemProps.forEach(props => {\n        const current = me.body.util.toTime(event.center.x - xOffset);\n        const initial = me.body.util.toTime(props.initialX - xOffset);\n        let offset;\n        let initialStart;\n        let initialEnd;\n        let start;\n        let end;\n\n        if (this.options.rtl) {\n          offset = -(current - initial); // ms\n        } else {\n          offset = (current - initial); // ms\n        }\n\n        let itemData = this._cloneItemData(props.item.data); // clone the data\n        if (props.item.editable != null\n          && !props.item.editable.updateTime\n          && !props.item.editable.updateGroup\n          && !me.options.editable.overrideItems) {\n          return;\n        }\n\n        const updateTimeAllowed = ((this.options.editable.overrideItems || selectedItem.editable == null) && this.options.editable.updateTime) ||\n                                 (!this.options.editable.overrideItems && selectedItem.editable != null && selectedItem.editable.updateTime);\n        if (updateTimeAllowed) {\n          if (props.dragLeft) {\n            // drag left side of a range item\n            if (this.options.rtl) {\n              if (itemData.end != undefined) {\n                initialEnd = util.convert(props.data.end, 'Date');\n                end = new Date(initialEnd.valueOf() + offset);\n                // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n                itemData.end = snap ? snap(end, scale, step) : end;\n              }\n            } else {\n              if (itemData.start != undefined) {\n                initialStart = util.convert(props.data.start, 'Date');\n                start = new Date(initialStart.valueOf() + offset);\n                // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n                itemData.start = snap ? snap(start, scale, step) : start;\n              }\n            }\n          }\n          else if (props.dragRight) {\n            // drag right side of a range item\n            if (this.options.rtl) {\n              if (itemData.start != undefined) {\n                initialStart = util.convert(props.data.start, 'Date');\n                start = new Date(initialStart.valueOf() + offset);\n                // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n                itemData.start = snap ? snap(start, scale, step) : start;\n              }\n            } else {\n              if (itemData.end != undefined) {\n                initialEnd = util.convert(props.data.end, 'Date');\n                end = new Date(initialEnd.valueOf() + offset);\n                // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n                itemData.end = snap ? snap(end, scale, step) : end;\n              }\n            }\n          }\n          else {\n            // drag both start and end\n            if (itemData.start != undefined) {\n\n              initialStart = util.convert(props.data.start, 'Date').valueOf();\n              start = new Date(initialStart + offset);\n\n              if (itemData.end != undefined) {\n                initialEnd = util.convert(props.data.end, 'Date');\n                const duration  = initialEnd.valueOf() - initialStart.valueOf();\n\n                // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n                itemData.start = snap ? snap(start, scale, step) : start;\n                itemData.end   = new Date(itemData.start.valueOf() + duration);\n              }\n              else {\n                // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n                itemData.start = snap ? snap(start, scale, step) : start;\n              }\n            }\n          }\n        }\n\n        if (updateGroupAllowed && (!props.dragLeft && !props.dragRight) && newGroupBase!=null) {\n          if (itemData.group != undefined) {\n            let newOffset = newGroupBase - props.groupOffset;\n\n            //make sure we stay in bounds\n            newOffset = Math.max(0, newOffset);\n            newOffset = Math.min(me.groupIds.length-1, newOffset);\n            itemData.group = me.groupIds[newOffset];\n          }\n        }\n\n        // confirm moving the item\n        itemData = this._cloneItemData(itemData);  // convert start and end to the correct type\n        me.options.onMoving(itemData, itemData => {\n          if (itemData) {\n            props.item.setData(this._cloneItemData(itemData, 'Date'));\n          }\n        });\n      });\n      \n      this.body.emitter.emit('_change');\n    }\n  }\n\n  /**\n   * Move an item to another group\n   * @param {Item} item\n   * @param {string | number} groupId\n   * @private\n   */\n  _moveToGroup(item, groupId) {\n    const group = this.groups[groupId];\n    if (group && group.groupId != item.data.group) {\n      const oldGroup = item.parent;\n      oldGroup.remove(item);\n      oldGroup.order();\n      \n      item.data.group = group.groupId;\n      \n      group.add(item);\n      group.order();\n    }\n  }\n\n  /**\n   * End of dragging selected items\n   * @param {Event} event\n   * @private\n   */\n  _onDragEnd(event) {\n    this.touchParams.itemIsDragging = false;\n    if (this.touchParams.itemProps) {\n      event.stopPropagation();\n\n      const me = this;\n      const itemProps = this.touchParams.itemProps;\n      this.touchParams.itemProps = null;\n\n      itemProps.forEach(props => {\n        const id = props.item.id;\n        const exists = me.itemsData.get(id) != null;\n\n        if (!exists) {\n          // add a new item\n          me.options.onAdd(props.item.data, itemData => {\n            me._removeItem(props.item); // remove temporary item\n            if (itemData) {\n              me.itemsData.add(itemData);\n            }\n\n            // force re-stacking of all items next redraw\n            me.body.emitter.emit('_change');\n          });\n        }\n        else {\n          // update existing item\n          const itemData = this._cloneItemData(props.item.data); // convert start and end to the correct type\n          me.options.onMove(itemData, itemData => {\n            if (itemData) {\n              // apply changes\n              itemData[this.itemsData.idProp] = id; // ensure the item contains its id (can be undefined)\n              this.itemsData.update(itemData);\n            }\n            else {\n              // restore original values\n              props.item.setData(props.data);\n\n              me.body.emitter.emit('_change');\n            }\n          });\n        }\n      });\n    }\n  }\n\n  /**\n   * On group click\n   * @param {Event} event\n   * @private\n   */\n  _onGroupClick(event) {\n    const group = this.groupFromTarget(event);\n    setTimeout(() => {\n      this.toggleGroupShowNested(group);\n    }, 1)\n  }\n  \n  /**\n   * Toggle show nested\n   * @param {object} group\n   * @param {boolean} force\n   */\n  toggleGroupShowNested(group, force = undefined) {\n\n    if (!group || !group.nestedGroups) return;\n\n    const groupsData = this.groupsData.getDataSet();\n\n    if (force != undefined) {\n      group.showNested = !!force;\n    } else {\n      group.showNested = !group.showNested;\n    }\n\n    let nestingGroup = groupsData.get(group.groupId);\n    nestingGroup.showNested = group.showNested;\n\n    let fullNestedGroups = group.nestedGroups;\n    let nextLevel = fullNestedGroups;\n    while (nextLevel.length > 0) {\n      let current = nextLevel;\n      nextLevel = [];\n      for (let i = 0; i < current.length; i++) {\n        let node = groupsData.get(current[i]);\n        if (node.nestedGroups) {\n          nextLevel = nextLevel.concat(node.nestedGroups);\n        }\n      }\n      if (nextLevel.length > 0) {\n        fullNestedGroups = fullNestedGroups.concat(nextLevel);\n      }\n    }\n    var nestedGroups;\n    if (nestingGroup.showNested) {\n      var showNestedGroups = groupsData.get(nestingGroup.nestedGroups);\n      for (let i = 0; i < showNestedGroups.length; i++) {\n        let group = showNestedGroups[i];\n        if (\n          group.nestedGroups &&\n          group.nestedGroups.length > 0 &&\n          (group.showNested == undefined || group.showNested == true)\n        ) {\n          showNestedGroups.push(...groupsData.get(group.nestedGroups));\n        }        \n      }\n      nestedGroups = showNestedGroups.map(function (nestedGroup) {\n        if (nestedGroup.visible == undefined) {\n          nestedGroup.visible = true;\n        }\n        nestedGroup.visible = !!nestingGroup.showNested;\n\n        return nestedGroup;\n      });\n    } else {\n      nestedGroups = groupsData\n        .get(fullNestedGroups)\n        .map(function (nestedGroup) {\n          if (nestedGroup.visible == undefined) {\n            nestedGroup.visible = true;\n          }\n          nestedGroup.visible = !!nestingGroup.showNested;\n          return nestedGroup;\n        });\n    }\n\n    groupsData.update(nestedGroups.concat(nestingGroup));\n\n    if (nestingGroup.showNested) {\n      util.removeClassName(group.dom.label, 'collapsed');\n      util.addClassName(group.dom.label, 'expanded');\n    } else {\n      util.removeClassName(group.dom.label, 'expanded');\n      util.addClassName(group.dom.label, 'collapsed');\n    }\n  }\n  \n  /**\n   * Toggle group drag classname\n   * @param {object} group\n   */\n  toggleGroupDragClassName(group) {\n    group.dom.label.classList.toggle('vis-group-is-dragging');\n    group.dom.foreground.classList.toggle('vis-group-is-dragging');\n  }\n  \n  /**\n   * on drag start\n   * @param {Event} event\n   * @return {void}   \n   * @private\n   */\n  _onGroupDragStart(event) {\n    if (this.groupTouchParams.isDragging) return;\n\n    if (this.options.groupEditable.order) {\n      this.groupTouchParams.group = this.groupFromTarget(event);\n      \n      if (this.groupTouchParams.group) {\n        event.stopPropagation();      \n        \n        this.groupTouchParams.isDragging = true;\n        this.toggleGroupDragClassName(this.groupTouchParams.group);\n        \n        this.groupTouchParams.originalOrder = this.groupsData.getIds({\n          order: this.options.groupOrder\n        });\n      }\n    }\n  }\n\n  /**\n   * on drag\n   * @param {Event} event\n   * @return {void}\n   * @private\n   */\n  _onGroupDrag(event) {\n      if (this.options.groupEditable.order && this.groupTouchParams.group) {\n          event.stopPropagation();\n          \n      const groupsData = this.groupsData.getDataSet()\n          // drag from one group to another\n          const group = this.groupFromTarget(event);\n          \n          // try to avoid toggling when groups differ in height\n          if (group && group.height != this.groupTouchParams.group.height) {\n              const movingUp = (group.top < this.groupTouchParams.group.top);\n              const clientY = event.center ? event.center.y : event.clientY;\n              const targetGroup = group.dom.foreground.getBoundingClientRect()\n              const draggedGroupHeight = this.groupTouchParams.group.height;\n              if (movingUp) {\n                  // skip swapping the groups when the dragged group is not below clientY afterwards\n                  if (targetGroup.top + draggedGroupHeight < clientY) {\n                      return;\n                  }\n              } else {\n                  const targetGroupHeight = group.height;\n                  // skip swapping the groups when the dragged group is not below clientY afterwards\n                  if (targetGroup.top + targetGroupHeight - draggedGroupHeight > clientY) {\n                      return;\n                  }\n              }\n          }\n          \n          if (group && group != this.groupTouchParams.group) {\n              const targetGroup = groupsData.get(group.groupId);\n              const draggedGroup = groupsData.get(this.groupTouchParams.group.groupId);\n              \n              // switch groups\n              if (draggedGroup && targetGroup) {\n                  this.options.groupOrderSwap(draggedGroup, targetGroup, groupsData);\n                  groupsData.update(draggedGroup);\n                  groupsData.update(targetGroup);\n              }\n              \n              // fetch current order of groups\n              const newOrder = groupsData.getIds({\n                order: this.options.groupOrder\n              });\n\n              \n              // in case of changes since _onGroupDragStart\n              if (!util.equalArray(newOrder, this.groupTouchParams.originalOrder)) {\n                  const origOrder = this.groupTouchParams.originalOrder;\n                  const draggedId = this.groupTouchParams.group.groupId;\n                  const numGroups = Math.min(origOrder.length, newOrder.length);\n                  let curPos = 0;\n                  let newOffset = 0;\n                  let orgOffset = 0;\n                  while (curPos < numGroups) {\n                      // as long as the groups are where they should be step down along the groups order\n                      while ((curPos+newOffset) < numGroups \n                          && (curPos+orgOffset) < numGroups \n                          && newOrder[curPos+newOffset] == origOrder[curPos+orgOffset]) {\n                          curPos++;\n                      }\n                      \n                      // all ok\n                      if (curPos+newOffset >= numGroups) {\n                          break;\n                      }\n                      \n                      // not all ok\n                      // if dragged group was move upwards everything below should have an offset\n                      if (newOrder[curPos+newOffset] == draggedId) {\n                          newOffset = 1;\n\n                      }\n                      // if dragged group was move downwards everything above should have an offset\n                      else if (origOrder[curPos+orgOffset] == draggedId) {\n                          orgOffset = 1;\n\n                      } \n                      // found a group (apart from dragged group) that has the wrong position -> switch with the \n                      // group at the position where other one should be, fix index arrays and continue\n                      else {\n                          const slippedPosition = newOrder.indexOf(origOrder[curPos+orgOffset]);\n                          const switchGroup = groupsData.get(newOrder[curPos+newOffset]);\n                          const shouldBeGroup = groupsData.get(origOrder[curPos+orgOffset]);\n                          this.options.groupOrderSwap(switchGroup, shouldBeGroup, groupsData);\n                          groupsData.update(switchGroup);\n                          groupsData.update(shouldBeGroup);\n                          \n                          const switchGroupId = newOrder[curPos+newOffset];\n                          newOrder[curPos+newOffset] = origOrder[curPos+orgOffset];\n                          newOrder[slippedPosition] = switchGroupId;\n                          \n                          curPos++;\n                      }\n                  }\n              }\n              \n          }\n      }\n  }\n\n  /**\n   * on drag end\n   * @param {Event} event\n   * @return {void}\n   * @private\n   */\n  _onGroupDragEnd(event) {\n    this.groupTouchParams.isDragging = false;\n\n    if (this.options.groupEditable.order && this.groupTouchParams.group) {\n      event.stopPropagation();\n          \n      // update existing group\n      const me = this;\n      const id = me.groupTouchParams.group.groupId;\n      const dataset = me.groupsData.getDataSet();\n      const groupData = util.extend({}, dataset.get(id)); // clone the data\n      me.options.onMoveGroup(groupData, groupData => {\n        if (groupData) {\n          // apply changes\n          groupData[dataset._idProp] = id; // ensure the group contains its id (can be undefined)\n          dataset.update(groupData);\n        }\n        else {\n\n          // fetch current order of groups\n          const newOrder = dataset.getIds({\n              order: me.options.groupOrder\n          });\n\n          // restore original order\n          if (!util.equalArray(newOrder, me.groupTouchParams.originalOrder)) {\n            const origOrder = me.groupTouchParams.originalOrder;\n            const numGroups = Math.min(origOrder.length, newOrder.length);\n            let curPos = 0;\n            while (curPos < numGroups) {\n              // as long as the groups are where they should be step down along the groups order\n              while (curPos < numGroups && newOrder[curPos] == origOrder[curPos]) {\n                curPos++;\n              }\n\n              // all ok\n              if (curPos >= numGroups) {\n                break;\n              }\n\n              // found a group that has the wrong position -> switch with the\n              // group at the position where other one should be, fix index arrays and continue\n              const slippedPosition = newOrder.indexOf(origOrder[curPos]);\n              const switchGroup = dataset.get(newOrder[curPos]);\n              const shouldBeGroup = dataset.get(origOrder[curPos]);\n              me.options.groupOrderSwap(switchGroup, shouldBeGroup, dataset);\n              dataset.update(switchGroup);\n              dataset.update(shouldBeGroup);\n\n              const switchGroupId = newOrder[curPos];\n              newOrder[curPos] = origOrder[curPos];\n              newOrder[slippedPosition] = switchGroupId;\n\n              curPos++;\n            }\n          }\n        }\n      });\n\n      me.body.emitter.emit('groupDragged', { groupId: id });\n      this.toggleGroupDragClassName(this.groupTouchParams.group);\n      this.groupTouchParams.group = null;\n    }\n  }\n\n  /**\n   * Handle selecting/deselecting an item when tapping it\n   * @param {Event} event\n   * @private\n   */\n  _onSelectItem(event) {\n    if (!this.options.selectable) return;\n\n    const ctrlKey  = event.srcEvent && (event.srcEvent.ctrlKey || event.srcEvent.metaKey);\n    const shiftKey = event.srcEvent && event.srcEvent.shiftKey;\n    if (ctrlKey || shiftKey) {\n      this._onMultiSelectItem(event);\n      return;\n    }\n\n    const oldSelection = this.getSelection();\n\n    const item = this.itemFromTarget(event);\n    const selection = item && item.selectable ? [item.id] : [];\n    this.setSelection(selection);\n\n    const newSelection = this.getSelection();\n\n    // emit a select event,\n    // except when old selection is empty and new selection is still empty\n    if (newSelection.length > 0 || oldSelection.length > 0) {\n      this.body.emitter.emit('select', {\n        items: newSelection,\n        event\n      });\n    }\n  }\n\n  /**\n   * Handle hovering an item\n   * @param {Event} event\n   * @private\n   */\n  _onMouseOver(event) {\n    const item = this.itemFromTarget(event);\n    if (!item) return;\n\n    // Item we just left\n    const related = this.itemFromRelatedTarget(event);\n    if (item === related) {\n      // We haven't changed item, just element in the item\n      return;\n    }\n\n    const title = item.getTitle();\n    if (this.options.showTooltips && title) {\n      if (this.popup == null) {\n        this.popup = new Popup(this.body.dom.root,\n            this.options.tooltip.overflowMethod || 'flip');\n      }\n\n      this.popup.setText(title);\n      const container = this.body.dom.centerContainer;\n      const containerRect = container.getBoundingClientRect()\n      this.popup.setPosition(\n        event.clientX - containerRect.left + container.offsetLeft,\n        event.clientY - containerRect.top + container.offsetTop\n      );\n      this.setPopupTimer(this.popup);\n    } else {\n      // Hovering over item without a title, hide popup\n      // Needed instead of _just_ in _onMouseOut due to #2572\n      this.clearPopupTimer();\n      if (this.popup != null) {\n        this.popup.hide();\n      }\n    }\n\n    this.body.emitter.emit('itemover', {\n      item: item.id,\n      event\n    });\n  }\n\n  /**\n   * on mouse start\n   * @param {Event} event\n   * @return {void}   \n   * @private\n   */\n  _onMouseOut(event) {\n    const item = this.itemFromTarget(event);\n    if (!item) return;\n\n    // Item we are going to\n    const related = this.itemFromRelatedTarget(event);\n    if (item === related) {\n      // We aren't changing item, just element in the item\n      return;\n    }\n\n    this.clearPopupTimer();\n    if (this.popup != null) {\n      this.popup.hide();\n    }\n\n    this.body.emitter.emit('itemout', {\n      item: item.id,\n      event\n    });\n  }\n\n  /**\n   * on mouse move\n   * @param {Event} event\n   * @return {void}   \n   * @private\n   */\n  _onMouseMove(event) {\n    const item = this.itemFromTarget(event);\n    if (!item) return;\n\n    if (this.popupTimer != null) {\n      // restart timer\n      this.setPopupTimer(this.popup);\n    }\n    \n    if (this.options.showTooltips && this.options.tooltip.followMouse && this.popup && !this.popup.hidden) {\n      const container = this.body.dom.centerContainer;\n      const containerRect = container.getBoundingClientRect()\n      this.popup.setPosition(\n        event.clientX - containerRect.left + container.offsetLeft,\n        event.clientY - containerRect.top + container.offsetTop\n      );\n      this.popup.show(); // Redraw\n    }\n  }\n\n  /**\n   * Handle mousewheel\n   * @param {Event}  event   The event\n   * @private\n   */\n  _onMouseWheel(event) {\n    if (this.touchParams.itemIsDragging) {\n      this._onDragEnd(event);\n    }\n  }\n\n  /**\n   * Handle updates of an item on double tap\n   * @param {timeline.Item}  item   The item\n   * @private\n   */\n  _onUpdateItem(item) {\n    if (!this.options.selectable) return;\n    if (!this.options.editable.updateTime && !this.options.editable.updateGroup) return;\n\n    const me = this;\n   \n    if (item) {\n      // execute async handler to update the item (or cancel it)\n      const itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset\n      this.options.onUpdate(itemData, itemData => {\n        if (itemData) {\n          me.itemsData.update(itemData);\n        }\n      });\n    }\n  }\n\n  /**\n   * Handle drop event of data on item\n   * Only called when `objectData.target === 'item'.\n   * @param {Event} event The event \n   * @private\n   */\n  _onDropObjectOnItem(event) {\n    const item = this.itemFromTarget(event);\n    const objectData = JSON.parse(event.dataTransfer.getData(\"text\"));\n    this.options.onDropObjectOnItem(objectData, item)\n  }\n\n  /**\n   * Handle creation of an item on double tap or drop of a drag event\n   * @param {Event} event   The event\n   * @private\n   */\n  _onAddItem(event) {\n    if (!this.options.selectable) return;\n    if (!this.options.editable.add) return;\n\n    const me = this;\n    const snap = this.options.snap || null;\n\n    // add item\n    const frameRect = this.dom.frame.getBoundingClientRect()\n    const x = this.options.rtl ? frameRect.right - event.center.x : event.center.x - frameRect.left;\n    const start = this.body.util.toTime(x);\n    const scale = this.body.util.getScale();\n    const step = this.body.util.getStep();\n    let end;\n\n    let newItemData;\n    if (event.type == 'drop') {\n      newItemData = JSON.parse(event.dataTransfer.getData(\"text\"));\n      newItemData.content = newItemData.content ? newItemData.content : 'new item';\n      newItemData.start = newItemData.start ? newItemData.start : (snap ? snap(start, scale, step) : start);\n      newItemData.type = newItemData.type || 'box';\n      newItemData[this.itemsData.idProp] = newItemData.id || randomUUID();\n\n      if (newItemData.type == 'range' && !newItemData.end) {\n        end = this.body.util.toTime(x + this.props.width / 5);\n        newItemData.end = snap ? snap(end, scale, step) : end;\n      }\n    } else {\n      newItemData = {\n        start: snap ? snap(start, scale, step) : start,\n        content: 'new item'\n      };\n      newItemData[this.itemsData.idProp] = randomUUID();\n\n      // when default type is a range, add a default end date to the new item\n      if (this.options.type === 'range') {\n        end = this.body.util.toTime(x + this.props.width / 5);\n        newItemData.end = snap ? snap(end, scale, step) : end;\n      }\n    }\n\n    const group = this.groupFromTarget(event);\n    if (group) {\n      newItemData.group = group.groupId;\n    }\n\n    // execute async handler to customize (or cancel) adding an item\n    newItemData = this._cloneItemData(newItemData);     // convert start and end to the correct type\n    this.options.onAdd(newItemData, item => {\n      if (item) {\n        me.itemsData.add(item);\n        if (event.type == 'drop') {\n          me.setSelection([item.id]);\n        }\n        // TODO: need to trigger a redraw?\n      }\n    });\n  }\n\n  /**\n   * Handle selecting/deselecting multiple items when holding an item\n   * @param {Event} event\n   * @private\n   */\n  _onMultiSelectItem(event) {\n    if (!this.options.selectable) return;\n\n    const item = this.itemFromTarget(event);\n\n    if (item) {\n      // multi select items (if allowed)\n\n      let selection = this.options.multiselect\n        ? this.getSelection() // take current selection\n        : [];                 // deselect current selection\n\n      const shiftKey = event.srcEvent && event.srcEvent.shiftKey || false;\n\n      if ((shiftKey || this.options.sequentialSelection) && this.options.multiselect) {\n        // select all items between the old selection and the tapped item\n        const itemGroup = this.itemsData.get(item.id).group;\n\n        // when filtering get the group of the last selected item\n        let lastSelectedGroup = undefined;\n        if (this.options.multiselectPerGroup) {\n          if (selection.length > 0) {\n            lastSelectedGroup = this.itemsData.get(selection[0]).group;\n          }\n        }\n\n        // determine the selection range\n        if (!this.options.multiselectPerGroup || lastSelectedGroup == undefined || lastSelectedGroup == itemGroup) {\n          selection.push(item.id);\n        }\n        const range = ItemSet._getItemRange(this.itemsData.get(selection));\n        \n        if (!this.options.multiselectPerGroup || lastSelectedGroup == itemGroup) {\n          // select all items within the selection range\n          selection = [];\n          for (const id in this.items) {\n            if (this.items.hasOwnProperty(id)) {\n              const _item = this.items[id];\n              const start = _item.data.start;\n              const end = (_item.data.end !== undefined) ? _item.data.end : start;\n\n              if (start >= range.min &&\n                  end <= range.max &&\n                  (!this.options.multiselectPerGroup || lastSelectedGroup == this.itemsData.get(_item.id).group) &&\n                  !(_item instanceof BackgroundItem)) {\n                selection.push(_item.id); // do not use id but item.id, id itself is stringified\n              }\n            }\n          }\n        }\n      }\n      else {\n        // add/remove this item from the current selection\n        const index = selection.indexOf(item.id);\n        if (index == -1) {\n          // item is not yet selected -> select it\n          selection.push(item.id);\n        }\n        else {\n          // item is already selected -> deselect it\n          selection.splice(index, 1);\n        }\n      }\n\n      const filteredSelection = selection.filter(item => this.getItemById(item).selectable);\n\n      this.setSelection(filteredSelection);\n\n      this.body.emitter.emit('select', {\n        items: this.getSelection(),\n        event\n      });\n    }\n  }\n\n  /**\n   * Calculate the time range of a list of items\n   * @param {Array.<Object>} itemsData\n   * @return {{min: Date, max: Date}} Returns the range of the provided items\n   * @private\n   */\n  static _getItemRange(itemsData) {\n    let max = null;\n    let min = null;\n\n    itemsData.forEach(data => {\n      if (min == null || data.start < min) {\n        min = data.start;\n      }\n\n      if (data.end != undefined) {\n        if (max == null || data.end > max) {\n          max = data.end;\n        }\n      }\n      else {\n        if (max == null || data.start > max) {\n          max = data.start;\n        }\n      }\n    });\n\n    return {\n      min,\n      max\n    }\n  }\n\n  /**\n   * Find an item from an element:\n   * searches for the attribute 'vis-item' in the element's tree\n   * @param {HTMLElement} element\n   * @return {Item | null} item\n   */\n  itemFromElement(element) {\n    let cur = element;\n    while (cur) {\n      if (cur.hasOwnProperty('vis-item')) {\n        return cur['vis-item'];\n      }\n      cur = cur.parentNode;\n    }\n\n    return null;\n  }\n\n  /**\n   * Find an item from an event target:\n   * searches for the attribute 'vis-item' in the event target's element tree\n   * @param {Event} event\n   * @return {Item | null} item\n   */\n  itemFromTarget(event) {\n    return this.itemFromElement(event.target);\n  }\n\n  /**\n   * Find an item from an event's related target:\n   * searches for the attribute 'vis-item' in the related target's element tree\n   * @param {Event} event\n   * @return {Item | null} item\n   */\n  itemFromRelatedTarget(event) {\n    return this.itemFromElement(event.relatedTarget);\n  }\n\n  /**\n   * Find the Group from an event target:\n   * searches for the attribute 'vis-group' in the event target's element tree\n   * @param {Event} event\n   * @return {Group | null} group\n   */\n  groupFromTarget(event) {\n    const clientY = event.center ? event.center.y : event.clientY;\n    let groupIds = this.groupIds;\n    \n    if (groupIds.length <= 0 && this.groupsData) {\n      groupIds = this.groupsData.getIds({\n        order: this.options.groupOrder\n      });\n    }\n    \n    for (let i = 0; i < groupIds.length; i++) {\n      const groupId = groupIds[i];\n      const group = this.groups[groupId];\n      const foreground = group.dom.foreground;\n      const foregroundRect = foreground.getBoundingClientRect()\n      if (clientY >= foregroundRect.top && clientY < foregroundRect.top + foreground.offsetHeight) {\n        return group;\n      }\n\n      if (this.options.orientation.item === 'top') {\n        if (i === this.groupIds.length - 1 && clientY > foregroundRect.top) {\n          return group;\n        }\n      }\n      else {\n        if (i === 0 && clientY < foregroundRect.top + foreground.offset) {\n          return group;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  /**\n   * Find the ItemSet from an event target:\n   * searches for the attribute 'vis-itemset' in the event target's element tree\n   * @param {Event} event\n   * @return {ItemSet | null} item\n   */\n  static itemSetFromTarget(event) {\n    let target = event.target;\n    while (target) {\n      if (target.hasOwnProperty('vis-itemset')) {\n        return target['vis-itemset'];\n      }\n      target = target.parentNode;\n    }\n\n    return null;\n  }\n\n  /**\n   * Clone the data of an item, and \"normalize\" it: convert the start and end date\n   * to the type (Date, Moment, ...) configured in the DataSet. If not configured,\n   * start and end are converted to Date.\n   * @param {Object} itemData, typically `item.data`\n   * @param {string} [type]  Optional Date type. If not provided, the type from the DataSet is taken\n   * @return {Object} The cloned object\n   * @private\n   */\n  _cloneItemData(itemData, type) {\n    const clone = util.extend({}, itemData);\n\n    if (!type) {\n      // convert start and end date to the type (Date, Moment, ...) configured in the DataSet\n      type = this.itemsData.type;\n    }\n\n    if (clone.start != undefined) {\n      clone.start = util.convert(clone.start, type && type.start || 'Date');\n    }\n    if (clone.end != undefined) {\n      clone.end = util.convert(clone.end , type && type.end || 'Date');\n    }\n\n    return clone;\n  }\n\n  /**\n   * cluster items\n   * @return {void}   \n   * @private\n   */\n  _clusterItems() {\n    if (!this.options.cluster) {\n      return;\n    }\n\n    const { scale } = this.body.range.conversion(this.body.domProps.center.width);\n    const clusters = this.clusterGenerator.getClusters(this.clusters, scale, this.options.cluster);\n\n    if (this.clusters != clusters) {\n      this._detachAllClusters();\n\n      if (clusters) {\n        for (let cluster of clusters) {\n          cluster.attach();\n        }\n        this.clusters = clusters;\n      }\n\n      this._updateClusters(clusters);\n    }\n  }\n\n  /**\n   * detach all cluster items\n   * @private\n   */\n  _detachAllClusters() {\n    if (this.options.cluster) {\n      if (this.clusters && this.clusters.length) {\n        for (let cluster of this.clusters) {\n          cluster.detach();\n        }\n      }\n    }\n  }\n\n  /**\n   * update clusters\n   * @param {array} clusters\n   * @private\n   */\n  _updateClusters(clusters) {\n    if (this.clusters && this.clusters.length) {\n      const newClustersIds = new Set(clusters.map(cluster => cluster.id));\n      const clustersToUnselect = this.clusters.filter(cluster => !newClustersIds.has(cluster.id));\n      let selectionChanged = false;\n      for (let cluster of clustersToUnselect) {\n        const selectedIdx = this.selection.indexOf(cluster.id);\n        if (selectedIdx !== -1) {\n          cluster.unselect();\n          this.selection.splice(selectedIdx, 1);\n          selectionChanged = true;\n        }\n      }\n\n      if (selectionChanged) {\n        const newSelection = this.getSelection();\n        this.body.emitter.emit('select', {\n          items: newSelection,\n          event: event\n        });\n      }\n    }\n\n    this.clusters = clusters || [];\n  }\n}\n\n// available item types will be registered here\nItemSet.types = {\n  background: BackgroundItem,\n  box: BoxItem,\n  range: RangeItem,\n  point: PointItem\n};\n\n/**\n * Handle added items\n * @param {number[]} ids\n * @protected\n */\nItemSet.prototype._onAdd = ItemSet.prototype._onUpdate;\n\nexport default ItemSet;\n","import util from '../util';\n\nlet errorFound = false;\nlet allOptions;\nlet printStyle = 'background: #FFeeee; color: #dd0000';\n/**\n *  Used to validate options.\n */\nclass Validator {\n  /**\n   * @ignore\n   */\n  constructor() {\n  }\n\n  /**\n   * Main function to be called\n   * @param {Object} options\n   * @param {Object} referenceOptions\n   * @param {Object} subObject\n   * @returns {boolean}\n   * @static\n   */\n  static validate(options, referenceOptions, subObject) {\n    errorFound = false;\n    allOptions = referenceOptions;\n    let usedOptions = referenceOptions;\n    if (subObject !== undefined) {\n      usedOptions = referenceOptions[subObject];\n    }\n    Validator.parse(options, usedOptions, []);\n    return errorFound;\n  }\n\n\n  /**\n   * Will traverse an object recursively and check every value\n   * @param {Object} options\n   * @param {Object} referenceOptions\n   * @param {array} path    | where to look for the actual option\n   * @static\n   */\n  static parse(options, referenceOptions, path) {\n    for (let option in options) {\n      if (options.hasOwnProperty(option)) {\n        Validator.check(option, options, referenceOptions, path);\n      }\n    }\n  }\n\n\n  /**\n   * Check every value. If the value is an object, call the parse function on that object.\n   * @param {string} option\n   * @param {Object} options\n   * @param {Object} referenceOptions\n   * @param {array} path    | where to look for the actual option\n   * @static\n   */\n  static check(option, options, referenceOptions, path) {\n    if (referenceOptions[option] === undefined && referenceOptions.__any__ === undefined) {\n      Validator.getSuggestion(option, referenceOptions, path);\n      return;\n    }\n\n    let referenceOption = option;\n    let is_object = true;\n\n    if (referenceOptions[option] === undefined && referenceOptions.__any__ !== undefined) {\n      // NOTE: This only triggers if the __any__ is in the top level of the options object.\n      //       THAT'S A REALLY BAD PLACE TO ALLOW IT!!!!\n      // TODO: Examine if needed, remove if possible\n\n      // __any__ is a wildcard. Any value is accepted and will be further analysed by reference.\n      referenceOption = '__any__';\n\n      // if the any-subgroup is not a predefined object in the configurator,\n      // we do not look deeper into the object.\n      is_object = (Validator.getType(options[option]) === 'object');\n    }\n    else {\n      // Since all options in the reference are objects, we can check whether \n      // they are supposed to be the object to look for the __type__ field.\n      // if this is an object, we check if the correct type has been supplied to account for shorthand options.\n    }\n\n    let refOptionObj = referenceOptions[referenceOption];\n    if (is_object && refOptionObj.__type__ !== undefined) {\n      refOptionObj = refOptionObj.__type__;\n    }\n\n    Validator.checkFields(option, options, referenceOptions, referenceOption, refOptionObj, path);\n  }\n\n  /**\n   *\n   * @param {string}  option           | the option property\n   * @param {Object}  options          | The supplied options object\n   * @param {Object}  referenceOptions | The reference options containing all options and their allowed formats\n   * @param {string}  referenceOption  | Usually this is the same as option, except when handling an __any__ tag.\n   * @param {string}  refOptionObj     | This is the type object from the reference options\n   * @param {Array}   path             | where in the object is the option\n   * @static\n   */\n  static checkFields(option, options, referenceOptions, referenceOption, refOptionObj, path) {\n    let log = function(message) {\n      console.log('%c' + message + Validator.printLocation(path, option), printStyle);\n    };\n\n    let optionType = Validator.getType(options[option]);\n    let refOptionType = refOptionObj[optionType];\n\n    if (refOptionType !== undefined) {\n      // if the type is correct, we check if it is supposed to be one of a few select values\n      if (Validator.getType(refOptionType) === 'array' && refOptionType.indexOf(options[option]) === -1) {\n        log('Invalid option detected in \"' + option + '\".' +\n          ' Allowed values are:' + Validator.print(refOptionType) +\n          ' not \"' + options[option] + '\". ');\n        errorFound = true;\n      }\n      else if (optionType === 'object' && referenceOption !== \"__any__\") {\n        path = util.copyAndExtendArray(path, option);\n        Validator.parse(options[option], referenceOptions[referenceOption], path);\n      }\n    }\n    else if (refOptionObj['any'] === undefined) {\n      // type of the field is incorrect and the field cannot be any\n      log('Invalid type received for \"' + option +\n        '\". Expected: ' + Validator.print(Object.keys(refOptionObj)) +\n        '. Received ['  + optionType + '] \"' + options[option] + '\"');\n      errorFound = true;\n    }\n  }\n\n  /**\n   *\n   * @param {Object|boolean|number|string|Array.<number>|Date|Node|Moment|undefined|null} object\n   * @returns {string}\n   * @static\n   */\n  static getType(object) {\n    var type = typeof object;\n\n    if (type === 'object') {\n      if (object === null) {\n        return 'null';\n      }\n      if (object instanceof Boolean) {\n        return 'boolean';\n      }\n      if (object instanceof Number) {\n        return 'number';\n      }\n      if (object instanceof String) {\n        return 'string';\n      }\n      if (Array.isArray(object)) {\n        return 'array';\n      }\n      if (object instanceof Date) {\n        return 'date';\n      }\n      if (object.nodeType !== undefined) {\n        return 'dom';\n      }\n      if (object._isAMomentObject === true) {\n        return 'moment';\n      }\n      return 'object';\n    }\n    else if (type === 'number') {\n      return 'number';\n    }\n    else if (type === 'boolean') {\n      return 'boolean';\n    }\n    else if (type === 'string') {\n      return 'string';\n    }\n    else if (type === undefined) {\n      return 'undefined';\n    }\n    return type;\n  }\n\n  /**\n   * @param {string} option\n   * @param {Object} options\n   * @param {Array.<string>} path\n   * @static\n   */\n  static getSuggestion(option, options, path) {\n    let localSearch = Validator.findInOptions(option,options,path,false);\n    let globalSearch = Validator.findInOptions(option,allOptions,[],true);\n\n    let localSearchThreshold = 8;\n    let globalSearchThreshold = 4;\n\n    let msg;\n    if (localSearch.indexMatch !== undefined) {\n      msg = ' in ' + Validator.printLocation(localSearch.path, option,'') +\n        'Perhaps it was incomplete? Did you mean: \"' + localSearch.indexMatch + '\"?\\n\\n';\n    }\n    else if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) {\n      msg = ' in ' + Validator.printLocation(localSearch.path, option,'') +\n        'Perhaps it was misplaced? Matching option found at: ' +\n        Validator.printLocation(globalSearch.path, globalSearch.closestMatch,'');\n    }\n    else if (localSearch.distance <= localSearchThreshold) {\n      msg = '. Did you mean \"' + localSearch.closestMatch + '\"?' +\n        Validator.printLocation(localSearch.path, option);\n    }\n    else {\n      msg = '. Did you mean one of these: ' + Validator.print(Object.keys(options)) +\n      Validator.printLocation(path, option);\n    }\n\n    console.log('%cUnknown option detected: \"' + option + '\"' + msg, printStyle);\n    errorFound = true;\n  }\n\n  /**\n   * traverse the options in search for a match.\n   * @param {string} option\n   * @param {Object} options\n   * @param {Array} path    | where to look for the actual option\n   * @param {boolean} [recursive=false]\n   * @returns {{closestMatch: string, path: Array, distance: number}}\n   * @static\n   */\n  static findInOptions(option, options, path, recursive = false) {\n    let min = 1e9;\n    let closestMatch = '';\n    let closestMatchPath = [];\n    let lowerCaseOption = option.toLowerCase();\n    let indexMatch = undefined;\n    for (let op in options) {  // eslint-disable-line guard-for-in\n      let distance;\n      if (options[op].__type__ !== undefined && recursive === true) {\n        let result = Validator.findInOptions(option, options[op], util.copyAndExtendArray(path,op));\n        if (min > result.distance) {\n          closestMatch = result.closestMatch;\n          closestMatchPath = result.path;\n          min = result.distance;\n          indexMatch = result.indexMatch;\n        }\n      }\n      else {\n        if (op.toLowerCase().indexOf(lowerCaseOption) !== -1) {\n          indexMatch = op;\n        }\n        distance = Validator.levenshteinDistance(option, op);\n        if (min > distance) {\n          closestMatch = op;\n          closestMatchPath = util.copyArray(path);\n          min = distance;\n        }\n      }\n    }\n    return {closestMatch:closestMatch, path:closestMatchPath, distance:min, indexMatch: indexMatch};\n  }\n\n  /**\n   * @param {Array.<string>} path\n   * @param {Object} option\n   * @param {string} prefix\n   * @returns {String}\n   * @static\n   */\n  static printLocation(path, option, prefix = 'Problem value found at: \\n') {\n    let str = '\\n\\n' + prefix + 'options = {\\n';\n    for (let i = 0; i < path.length; i++) {\n      for (let j = 0; j < i + 1; j++) {\n        str += '  ';\n      }\n      str += path[i] + ': {\\n'\n    }\n    for (let j = 0; j < path.length + 1; j++) {\n      str += '  ';\n    }\n    str += option + '\\n';\n    for (let i = 0; i < path.length + 1; i++) {\n      for (let j = 0; j < path.length - i; j++) {\n        str += '  ';\n      }\n      str += '}\\n'\n    }\n    return str + '\\n\\n';\n  }\n\n  /**\n   * @param {Object} options\n   * @returns {String}\n   * @static\n   */\n  static print(options) {\n    return JSON.stringify(options).replace(/(\\\")|(\\[)|(\\])|(,\"__type__\")/g, \"\").replace(/(\\,)/g, ', ')\n  }\n\n\n  /**\n   *  Compute the edit distance between the two given strings\n   * http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript\n   *\n   * Copyright (c) 2011 Andrei Mackenzie\n   *\n   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n   *\n   * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n   *\n   * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n   *\n   * @param {string} a\n   * @param {string} b\n   * @returns {Array.<Array.<number>>}}\n   * @static\n   */\n  static levenshteinDistance(a, b) {\n    if (a.length === 0) return b.length;\n    if (b.length === 0) return a.length;\n\n    var matrix = [];\n\n    // increment along the first column of each row\n    var i;\n    for (i = 0; i <= b.length; i++) {\n      matrix[i] = [i];\n    }\n\n    // increment each column in the first row\n    var j;\n    for (j = 0; j <= a.length; j++) {\n      matrix[0][j] = j;\n    }\n\n    // Fill in the rest of the matrix\n    for (i = 1; i <= b.length; i++) {\n      for (j = 1; j <= a.length; j++) {\n        if (b.charAt(i - 1) == a.charAt(j - 1)) {\n          matrix[i][j] = matrix[i - 1][j - 1];\n        } else {\n          matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution\n            Math.min(matrix[i][j - 1] + 1, // insertion\n              matrix[i - 1][j] + 1)); // deletion\n        }\n      }\n    }\n\n    return matrix[b.length][a.length];\n  }\n}\n\n\nexport {\n  Validator,\n  printStyle\n};\n","/**\n * This object contains all possible options. It will check if the types are correct, if required if the option is one\n * of the allowed values.\n *\n * __any__ means that the name of the property does not matter.\n * __type__ is a required field for all objects and contains the allowed types of all objects\n */\nlet string = 'string';\nlet bool = 'boolean';\nlet number = 'number';\nlet array = 'array';\nlet date = 'date';\nlet object = 'object'; // should only be in a __type__ property\nlet dom = 'dom';\nlet moment = 'moment';\nlet any = 'any';\n\nlet allOptions = {\n  configure: {\n    enabled: { 'boolean': bool},\n    filter: { 'boolean': bool,'function': 'function'},\n    container: {dom},\n    __type__: {object, 'boolean': bool,'function': 'function'}\n  },\n\n  //globals :\n  align: {string},\n  alignCurrentTime: {string, 'undefined': 'undefined'},\n  rtl: { 'boolean': bool, 'undefined': 'undefined'},\n  rollingMode: {\n    follow: { 'boolean': bool },\n    offset: {number,'undefined': 'undefined'},\n    __type__: {object}\n  },\n  onTimeout: {\n    timeoutMs: {number},\n    callback: {'function': 'function'},\n    __type__: {object}\n  },\n  verticalScroll: { 'boolean': bool, 'undefined': 'undefined'},\n  horizontalScroll: { 'boolean': bool, 'undefined': 'undefined'},\n  autoResize: { 'boolean': bool},\n  throttleRedraw: {number}, // TODO: DEPRICATED see https://github.com/almende/vis/issues/2511\n  clickToUse: { 'boolean': bool},\n  dataAttributes: {string, array},\n  editable: {\n    add: { 'boolean': bool, 'undefined': 'undefined'},\n    remove: { 'boolean': bool, 'undefined': 'undefined'},\n    updateGroup: { 'boolean': bool, 'undefined': 'undefined'},\n    updateTime: { 'boolean': bool, 'undefined': 'undefined'},\n    overrideItems: { 'boolean': bool, 'undefined': 'undefined'},\n    __type__: { 'boolean': bool, object}\n  },\n  end: {number, date, string, moment},\n  format: {\n    minorLabels: {\n      millisecond: {string,'undefined': 'undefined'},\n      second: {string,'undefined': 'undefined'},\n      minute: {string,'undefined': 'undefined'},\n      hour: {string,'undefined': 'undefined'},\n      weekday: {string,'undefined': 'undefined'},\n      day: {string,'undefined': 'undefined'},\n      week: {string,'undefined': 'undefined'},\n      month: {string,'undefined': 'undefined'},\n      year: {string,'undefined': 'undefined'},\n      __type__: {object, 'function': 'function'}\n    },\n    majorLabels: {\n      millisecond: {string,'undefined': 'undefined'},\n      second: {string,'undefined': 'undefined'},\n      minute: {string,'undefined': 'undefined'},\n      hour: {string,'undefined': 'undefined'},\n      weekday: {string,'undefined': 'undefined'},\n      day: {string,'undefined': 'undefined'},\n      week: {string,'undefined': 'undefined'},\n      month: {string,'undefined': 'undefined'},\n      year: {string,'undefined': 'undefined'},\n      __type__: {object, 'function': 'function'}\n    },\n    __type__: {object}\n  },\n  moment: {'function': 'function'},\n  groupHeightMode: {string},\n  groupOrder: {string, 'function': 'function'},\n  groupEditable: {\n    add: { 'boolean': bool, 'undefined': 'undefined'},\n    remove: { 'boolean': bool, 'undefined': 'undefined'},\n    order: { 'boolean': bool, 'undefined': 'undefined'},\n    __type__: { 'boolean': bool, object}\n  },\n  groupOrderSwap: {'function': 'function'},\n  height: {string, number},\n  hiddenDates: {\n    start: {date, number, string, moment},\n    end: {date, number, string, moment},\n    repeat: {string},\n    __type__: {object, array}\n  },\n  itemsAlwaysDraggable: {\n    item: { 'boolean': bool, 'undefined': 'undefined'},\n    range: { 'boolean': bool, 'undefined': 'undefined'},\n    __type__: { 'boolean': bool, object}\n  },\n  limitSize: {'boolean': bool},\n  locale:{string},\n  locales:{\n    __any__: {any},\n    __type__: {object}\n  },\n  longSelectPressTime: {number},\n  margin: {\n    axis: {number},\n    item: {\n      horizontal: {number,'undefined': 'undefined'},\n      vertical: {number,'undefined': 'undefined'},\n      __type__: {object,number}\n    },\n    __type__: {object,number}\n  },\n  max: {date, number, string, moment},\n  maxHeight: {number, string},\n  maxMinorChars: {number},\n  min: {date, number, string, moment},\n  minHeight: {number, string},\n  moveable: { 'boolean': bool},\n  multiselect: { 'boolean': bool},\n  multiselectPerGroup: { 'boolean': bool},\n  onAdd: {'function': 'function'},\n  onDropObjectOnItem: {'function': 'function'},\n  onUpdate: {'function': 'function'},\n  onMove: {'function': 'function'},\n  onMoving: {'function': 'function'},\n  onRemove: {'function': 'function'},\n  onAddGroup: {'function': 'function'},\n  onMoveGroup: {'function': 'function'},\n  onRemoveGroup: {'function': 'function'},\n  onInitialDrawComplete: {'function': 'function'},\n  order: {'function': 'function'},\n  orientation: {\n    axis: {string,'undefined': 'undefined'},\n    item: {string,'undefined': 'undefined'},\n    __type__: {string, object}\n  },\n  selectable: { 'boolean': bool},\n  sequentialSelection: { 'boolean': bool },\n  showCurrentTime: { 'boolean': bool},\n  showMajorLabels: { 'boolean': bool},\n  showMinorLabels: { 'boolean': bool},\n  showWeekScale: { 'boolean': bool},\n  stack: { 'boolean': bool},\n  stackSubgroups: { 'boolean': bool},\n  cluster: {\n    maxItems: {'number': number, 'undefined': 'undefined'},\n    titleTemplate: {'string': string, 'undefined': 'undefined'},\n    clusterCriteria: { 'function': 'function', 'undefined': 'undefined'},\n    showStipes: {'boolean': bool, 'undefined': 'undefined'},\n    fitOnDoubleClick: {'boolean': bool, 'undefined': 'undefined'},\n    __type__: {'boolean': bool, object}\n  },\n  snap: {'function': 'function', 'null': 'null'},\n  start: {date, number, string, moment},\n  template: {'function': 'function'},\n  loadingScreenTemplate: {'function': 'function'},\n  groupTemplate: {'function': 'function'},\n  visibleFrameTemplate: {string, 'function': 'function'},\n  showTooltips: { 'boolean': bool},\n  tooltip: {\n    followMouse: { 'boolean': bool },\n    overflowMethod: { 'string': ['cap', 'flip', 'none'] },\n    delay: {number},\n    template: {'function': 'function'},\n    __type__: {object}\n  },\n  tooltipOnItemUpdateTime: {\n    template: {'function': 'function'},\n    __type__: { 'boolean': bool, object}\n  },\n  timeAxis: {\n    scale: {string,'undefined': 'undefined'},\n    step: {number,'undefined': 'undefined'},\n    __type__: {object}\n  },\n  type: {string},\n  width: {string, number},\n  preferZoom: { 'boolean': bool},\n  zoomable: { 'boolean': bool},\n  zoomKey: {string: ['ctrlKey', 'altKey', 'shiftKey', 'metaKey', '']},\n  zoomFriction: {number},\n  zoomMax: {number},\n  zoomMin: {number},\n  xss: {\n    disabled: { boolean: bool },\n    filterOptions: {\n      __any__: { any },\n      __type__: { object }\n    },\n    __type__: { object }\n  },\n  __type__: {object}\n};\n\nlet configureOptions = {\n  global: {\n    align:  ['center', 'left', 'right'],\n    alignCurrentTime: ['none', 'year', 'month', 'quarter', 'week', 'isoWeek', 'day', 'date', 'hour', 'minute', 'second'],\n    direction:  false,\n    autoResize: true,\n    clickToUse: false,\n    // dataAttributes: ['all'], // FIXME: can be 'all' or string[]\n      editable: {\n      add: false,\n      remove: false,\n      updateGroup: false,\n      updateTime: false\n    },\n    end: '',\n    format: {\n      minorLabels: {\n        millisecond:'SSS',\n        second:     's',\n        minute:     'HH:mm',\n        hour:       'HH:mm',\n        weekday:    'ddd D',\n        day:        'D',\n        week:       'w',\n        month:      'MMM',\n        year:       'YYYY'\n      },\n      majorLabels: {\n        millisecond:'HH:mm:ss',\n        second:     'D MMMM HH:mm',\n        minute:     'ddd D MMMM',\n        hour:       'ddd D MMMM',\n        weekday:    'MMMM YYYY',\n        day:        'MMMM YYYY',\n        week:       'MMMM YYYY',\n        month:      'YYYY',\n        year:       ''\n      }\n    },\n    groupHeightMode: ['auto', 'fixed', 'fitItems'],\n    //groupOrder: {string, 'function': 'function'},\n    groupsDraggable: false,\n    height: '',\n    //hiddenDates: {object, array},\n    locale: '',\n    longSelectPressTime: 251,\n    margin: {\n      axis: [20, 0, 100, 1],\n      item: {\n        horizontal: [10, 0, 100, 1],\n        vertical: [10, 0, 100, 1]\n      }\n    },\n    max: '',\n    maxHeight: '',\n    maxMinorChars: [7, 0, 20, 1],\n    min: '',\n    minHeight: '',\n    moveable: false,\n    multiselect: false,\n    multiselectPerGroup: false,\n    //onAdd: {'function': 'function'},\n    //onUpdate: {'function': 'function'},\n    //onMove: {'function': 'function'},\n    //onMoving: {'function': 'function'},\n    //onRename: {'function': 'function'},\n    //order: {'function': 'function'},\n    orientation: {\n      axis: ['both', 'bottom', 'top'],\n      item: ['bottom', 'top']\n    },\n    preferZoom: false,\n    selectable: true,\n    showCurrentTime: false,\n    showMajorLabels: true,\n    showMinorLabels: true,\n    stack: true,\n    stackSubgroups: true,\n    cluster: false,\n    //snap: {'function': 'function', nada},\n    start: '',\n    //template: {'function': 'function'},\n    //timeAxis: {\n    //  scale: ['millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'week', 'month', 'year'],\n    //  step: [1, 1, 10, 1]\n    //},\n    showTooltips: true,\n    tooltip: {\n      followMouse: false,\n      overflowMethod: 'flip',\n      delay: [500, 0, 99999, 100],\n    },\n    tooltipOnItemUpdateTime: false,\n    type: ['box', 'point', 'range', 'background'],\n    width: '100%',\n    zoomable: true,\n    zoomKey: ['ctrlKey', 'altKey', 'shiftKey', 'metaKey', ''],\n    zoomMax: [315360000000000, 10, 315360000000000, 1],\n    zoomMin: [10, 10, 315360000000000, 1],\n    xss: { disabled: false }\n  }\n};\n\nexport {allOptions, configureOptions};\n","import Hammer from '../module/hammer';\nimport * as hammerUtil from '../hammerUtil';\nimport util from '../util';\n\n\nvar htmlColors = {black: '#000000', navy: '#000080', darkblue: '#00008B', mediumblue: '#0000CD', blue: '#0000FF', darkgreen: '#006400', green: '#008000', teal: '#008080', darkcyan: '#008B8B', deepskyblue: '#00BFFF', darkturquoise: '#00CED1', mediumspringgreen: '#00FA9A', lime: '#00FF00', springgreen: '#00FF7F', aqua: '#00FFFF', cyan: '#00FFFF', midnightblue: '#191970', dodgerblue: '#1E90FF', lightseagreen: '#20B2AA', forestgreen: '#228B22', seagreen: '#2E8B57', darkslategray: '#2F4F4F', limegreen: '#32CD32', mediumseagreen: '#3CB371', turquoise: '#40E0D0', royalblue: '#4169E1', steelblue: '#4682B4', darkslateblue: '#483D8B', mediumturquoise: '#48D1CC', indigo: '#4B0082', darkolivegreen: '#556B2F', cadetblue: '#5F9EA0', cornflowerblue: '#6495ED', mediumaquamarine: '#66CDAA', dimgray: '#696969', slateblue: '#6A5ACD', olivedrab: '#6B8E23', slategray: '#708090', lightslategray: '#778899', mediumslateblue: '#7B68EE', lawngreen: '#7CFC00', chartreuse: '#7FFF00', aquamarine: '#7FFFD4', maroon: '#800000', purple: '#800080', olive: '#808000', gray: '#808080', skyblue: '#87CEEB', lightskyblue: '#87CEFA', blueviolet: '#8A2BE2', darkred: '#8B0000', darkmagenta: '#8B008B', saddlebrown: '#8B4513', darkseagreen: '#8FBC8F', lightgreen: '#90EE90', mediumpurple: '#9370D8', darkviolet: '#9400D3', palegreen: '#98FB98', darkorchid: '#9932CC', yellowgreen: '#9ACD32', sienna: '#A0522D', brown: '#A52A2A', darkgray: '#A9A9A9', lightblue: '#ADD8E6', greenyellow: '#ADFF2F', paleturquoise: '#AFEEEE', lightsteelblue: '#B0C4DE', powderblue: '#B0E0E6', firebrick: '#B22222', darkgoldenrod: '#B8860B', mediumorchid: '#BA55D3', rosybrown: '#BC8F8F', darkkhaki: '#BDB76B', silver: '#C0C0C0', mediumvioletred: '#C71585', indianred: '#CD5C5C', peru: '#CD853F', chocolate: '#D2691E', tan: '#D2B48C', lightgrey: '#D3D3D3', palevioletred: '#D87093', thistle: '#D8BFD8', orchid: '#DA70D6', goldenrod: '#DAA520', crimson: '#DC143C', gainsboro: '#DCDCDC', plum: '#DDA0DD', burlywood: '#DEB887', lightcyan: '#E0FFFF', lavender: '#E6E6FA', darksalmon: '#E9967A', violet: '#EE82EE', palegoldenrod: '#EEE8AA', lightcoral: '#F08080', khaki: '#F0E68C', aliceblue: '#F0F8FF', honeydew: '#F0FFF0', azure: '#F0FFFF', sandybrown: '#F4A460', wheat: '#F5DEB3', beige: '#F5F5DC', whitesmoke: '#F5F5F5', mintcream: '#F5FFFA', ghostwhite: '#F8F8FF', salmon: '#FA8072', antiquewhite: '#FAEBD7', linen: '#FAF0E6', lightgoldenrodyellow: '#FAFAD2', oldlace: '#FDF5E6', red: '#FF0000', fuchsia: '#FF00FF', magenta: '#FF00FF', deeppink: '#FF1493', orangered: '#FF4500', tomato: '#FF6347', hotpink: '#FF69B4', coral: '#FF7F50', darkorange: '#FF8C00', lightsalmon: '#FFA07A', orange: '#FFA500', lightpink: '#FFB6C1', pink: '#FFC0CB', gold: '#FFD700', peachpuff: '#FFDAB9', navajowhite: '#FFDEAD', moccasin: '#FFE4B5', bisque: '#FFE4C4', mistyrose: '#FFE4E1', blanchedalmond: '#FFEBCD', papayawhip: '#FFEFD5', lavenderblush: '#FFF0F5', seashell: '#FFF5EE', cornsilk: '#FFF8DC', lemonchiffon: '#FFFACD', floralwhite: '#FFFAF0', snow: '#FFFAFA', yellow: '#FFFF00', lightyellow: '#FFFFE0', ivory: '#FFFFF0', white: '#FFFFFF'};\n\n/**\n * @param {number} [pixelRatio=1]\n */\nclass ColorPicker {\n  /**\n   * @param {number} [pixelRatio=1]\n   */\n  constructor(pixelRatio = 1) {\n    this.pixelRatio = pixelRatio;\n    this.generated = false;\n    this.centerCoordinates = {x:289/2, y:289/2};\n    this.r = 289 * 0.49;\n    this.color = {r:255,g:255,b:255,a:1.0};\n    this.hueCircle = undefined;\n    this.initialColor = {r:255,g:255,b:255,a:1.0};\n    this.previousColor= undefined;\n    this.applied = false;\n\n    // bound by\n    this.updateCallback = () => {};\n    this.closeCallback = () => {};\n\n    // create all DOM elements\n    this._create();\n  }\n\n\n  /**\n   * this inserts the colorPicker into a div from the DOM\n   * @param {Element} container\n   */\n  insertTo(container) {\n    if (this.hammer !== undefined) {\n      this.hammer.destroy();\n      this.hammer = undefined;\n    }\n    this.container = container;\n    this.container.appendChild(this.frame);\n    this._bindHammer();\n\n    this._setSize();\n  }\n\n  /**\n   * the callback is executed on apply and save. Bind it to the application\n   * @param {function} callback\n   */\n  setUpdateCallback(callback) {\n    if (typeof callback === 'function') {\n      this.updateCallback = callback;\n    }\n    else {\n      throw new Error(\"Function attempted to set as colorPicker update callback is not a function.\");\n    }\n  }\n\n  /**\n   * the callback is executed on apply and save. Bind it to the application\n   * @param {function} callback\n   */\n  setCloseCallback(callback) {\n    if (typeof callback === 'function') {\n      this.closeCallback = callback;\n    }\n    else {\n      throw new Error(\"Function attempted to set as colorPicker closing callback is not a function.\");\n    }\n  }\n\n  /**\n   *\n   * @param {string} color\n   * @returns {String}\n   * @private\n   */\n  _isColorString(color) {\n    if (typeof color === 'string') {\n      return htmlColors[color];\n    }\n  }\n\n\n  /**\n   * Set the color of the colorPicker\n   * Supported formats:\n   * 'red'                   --> HTML color string\n   * '#ffffff'               --> hex string\n   * 'rgb(255,255,255)'      --> rgb string\n   * 'rgba(255,255,255,1.0)' --> rgba string\n   * {r:255,g:255,b:255}     --> rgb object\n   * {r:255,g:255,b:255,a:1.0} --> rgba object\n   * @param {string|Object} color\n   * @param {boolean} [setInitial=true]\n   */\n  setColor(color, setInitial = true) {\n    if (color === 'none') {\n      return;\n    }\n\n    let rgba;\n\n    // if a html color shorthand is used, convert to hex\n    var htmlColor = this._isColorString(color);\n    if (htmlColor !== undefined) {\n      color = htmlColor;\n    }\n\n    // check format\n    if (util.isString(color) === true) {\n      if (util.isValidRGB(color) === true) {\n        let rgbaArray = color.substr(4).substr(0, color.length - 5).split(',');\n        rgba = {r:rgbaArray[0], g:rgbaArray[1], b:rgbaArray[2], a:1.0};\n      }\n      else if (util.isValidRGBA(color) === true) {\n        let rgbaArray = color.substr(5).substr(0, color.length - 6).split(',');\n        rgba = {r:rgbaArray[0], g:rgbaArray[1], b:rgbaArray[2], a:rgbaArray[3]};\n      }\n      else if (util.isValidHex(color) === true) {\n        let rgbObj = util.hexToRGB(color);\n        rgba = {r:rgbObj.r, g:rgbObj.g, b:rgbObj.b, a:1.0};\n      }\n    }\n    else {\n      if (color instanceof Object) {\n        if (color.r !== undefined && color.g !== undefined && color.b !== undefined) {\n          let alpha = color.a !== undefined ? color.a : '1.0';\n          rgba = {r:color.r, g:color.g, b:color.b, a:alpha};\n        }\n      }\n    }\n\n    // set color\n    if (rgba === undefined) {\n      throw new Error(\"Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: \" + JSON.stringify(color));\n    }\n    else {\n      this._setColor(rgba, setInitial);\n    }\n  }\n\n\n  /**\n   * this shows the color picker.\n   * The hue circle is constructed once and stored.\n   */\n  show() {\n    if (this.closeCallback !== undefined) {\n      this.closeCallback();\n      this.closeCallback = undefined;\n    }\n\n    this.applied = false;\n    this.frame.style.display = 'block';\n    this._generateHueCircle();\n  }\n\n  // ------------------------------------------ PRIVATE ----------------------------- //\n\n  /**\n   * Hide the picker. Is called by the cancel button.\n   * Optional boolean to store the previous color for easy access later on.\n   * @param {boolean} [storePrevious=true]\n   * @private\n   */\n  _hide(storePrevious = true) {\n    // store the previous color for next time;\n    if (storePrevious === true) {\n      this.previousColor = util.extend({}, this.color);\n    }\n\n    if (this.applied === true) {\n      this.updateCallback(this.initialColor);\n    }\n\n    this.frame.style.display = 'none';\n\n    // call the closing callback, restoring the onclick method.\n    // this is in a setTimeout because it will trigger the show again before the click is done.\n    setTimeout(() => {\n      if (this.closeCallback !== undefined) {\n        this.closeCallback();\n        this.closeCallback = undefined;\n      }\n    },0);\n  }\n\n\n  /**\n   * bound to the save button. Saves and hides.\n   * @private\n   */\n  _save() {\n    this.updateCallback(this.color);\n    this.applied = false;\n    this._hide();\n  }\n\n\n  /**\n   * Bound to apply button. Saves but does not close. Is undone by the cancel button.\n   * @private\n   */\n  _apply() {\n    this.applied = true;\n    this.updateCallback(this.color);\n    this._updatePicker(this.color);\n  }\n\n\n  /**\n   * load the color from the previous session.\n   * @private\n   */\n  _loadLast() {\n    if (this.previousColor !== undefined) {\n      this.setColor(this.previousColor, false);\n    }\n    else {\n      alert(\"There is no last color to load...\");\n    }\n  }\n\n\n  /**\n   * set the color, place the picker\n   * @param {Object} rgba\n   * @param {boolean} [setInitial=true]\n   * @private\n   */\n  _setColor(rgba, setInitial = true) {\n    // store the initial color\n    if (setInitial === true) {\n      this.initialColor = util.extend({}, rgba);\n    }\n\n    this.color = rgba;\n    let hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b);\n\n    let angleConvert = 2 * Math.PI;\n    let radius = this.r * hsv.s;\n    let x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h);\n    let y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h);\n\n    this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + 'px';\n    this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + 'px';\n\n    this._updatePicker(rgba);\n  }\n\n\n  /**\n   * bound to opacity control\n   * @param {number} value\n   * @private\n   */\n  _setOpacity(value) {\n    this.color.a = value / 100;\n    this._updatePicker(this.color);\n  }\n\n\n  /**\n   * bound to brightness control\n   * @param {number} value\n   * @private\n   */\n  _setBrightness(value) {\n    let hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b);\n    hsv.v = value / 100;\n    let rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v);\n    rgba['a'] = this.color.a;\n    this.color = rgba;\n    this._updatePicker();\n  }\n\n\n  /**\n   * update the color picker. A black circle overlays the hue circle to mimic the brightness decreasing.\n   * @param {Object} rgba\n   * @private\n   */\n  _updatePicker(rgba = this.color) {\n    let hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b);\n    let ctx = this.colorPickerCanvas.getContext('2d');\n    if (this.pixelRation === undefined) {\n      this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n      ctx.mozBackingStorePixelRatio ||\n      ctx.msBackingStorePixelRatio ||\n      ctx.oBackingStorePixelRatio ||\n      ctx.backingStorePixelRatio || 1);\n    }\n    ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n    // clear the canvas\n    let w = this.colorPickerCanvas.clientWidth;\n    let h = this.colorPickerCanvas.clientHeight;\n    ctx.clearRect(0, 0, w, h);\n\n    ctx.putImageData(this.hueCircle, 0,0);\n    ctx.fillStyle = 'rgba(0,0,0,' + (1- hsv.v) + ')';\n    ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n    ctx.fill();\n\n    this.brightnessRange.value = 100 * hsv.v;\n    this.opacityRange.value    = 100 * rgba.a;\n\n    this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')';\n    this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')';\n  }\n\n\n  /**\n   * used by create to set the size of the canvas.\n   * @private\n   */\n  _setSize() {\n    this.colorPickerCanvas.style.width = '100%';\n    this.colorPickerCanvas.style.height = '100%';\n\n    this.colorPickerCanvas.width = 289 * this.pixelRatio;\n    this.colorPickerCanvas.height = 289 * this.pixelRatio;\n  }\n\n\n  /**\n   * create all dom elements\n   * TODO: cleanup, lots of similar dom elements\n   * @private\n   */\n  _create() {\n    this.frame = document.createElement('div');\n    this.frame.className = 'vis-color-picker';\n\n    this.colorPickerDiv = document.createElement('div');\n    this.colorPickerSelector = document.createElement('div');\n    this.colorPickerSelector.className = 'vis-selector';\n    this.colorPickerDiv.appendChild(this.colorPickerSelector);\n\n    this.colorPickerCanvas = document.createElement('canvas');\n    this.colorPickerDiv.appendChild(this.colorPickerCanvas);\n\n    if (!this.colorPickerCanvas.getContext) {\n      let noCanvas = document.createElement( 'DIV' );\n      noCanvas.style.color = 'red';\n      noCanvas.style.fontWeight =  'bold' ;\n      noCanvas.style.padding =  '10px';\n      noCanvas.innerHTML =  'Error: your browser does not support HTML canvas';\n      this.colorPickerCanvas.appendChild(noCanvas);\n    }\n    else {\n      let ctx = this.colorPickerCanvas.getContext(\"2d\");\n      this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n      ctx.mozBackingStorePixelRatio ||\n      ctx.msBackingStorePixelRatio ||\n      ctx.oBackingStorePixelRatio ||\n      ctx.backingStorePixelRatio || 1);\n      this.colorPickerCanvas.getContext(\"2d\").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n    }\n\n    this.colorPickerDiv.className = 'vis-color';\n\n    this.opacityDiv = document.createElement('div');\n    this.opacityDiv.className = 'vis-opacity';\n\n    this.brightnessDiv = document.createElement('div');\n    this.brightnessDiv.className = 'vis-brightness';\n\n    this.arrowDiv = document.createElement('div');\n    this.arrowDiv.className = 'vis-arrow';\n\n    this.opacityRange = document.createElement('input');\n    try {\n      this.opacityRange.type = 'range'; // Not supported on IE9\n      this.opacityRange.min = '0';\n      this.opacityRange.max = '100';\n    }\n    // TODO: Add some error handling and remove this lint exception\n    catch (err) {}  // eslint-disable-line no-empty\n    this.opacityRange.value = '100';\n    this.opacityRange.className = 'vis-range';\n\n    this.brightnessRange = document.createElement('input');\n    try {\n      this.brightnessRange.type = 'range'; // Not supported on IE9\n      this.brightnessRange.min = '0';\n      this.brightnessRange.max = '100';\n    }\n    // TODO: Add some error handling and remove this lint exception\n    catch (err) {}  // eslint-disable-line no-empty\n    this.brightnessRange.value = '100';\n    this.brightnessRange.className = 'vis-range';\n\n    this.opacityDiv.appendChild(this.opacityRange);\n    this.brightnessDiv.appendChild(this.brightnessRange);\n\n    var me = this;\n    this.opacityRange.onchange = function () {me._setOpacity(this.value);};\n    this.opacityRange.oninput  = function () {me._setOpacity(this.value);};\n    this.brightnessRange.onchange = function () {me._setBrightness(this.value);};\n    this.brightnessRange.oninput  = function () {me._setBrightness(this.value);};\n\n    this.brightnessLabel = document.createElement(\"div\");\n    this.brightnessLabel.className = \"vis-label vis-brightness\";\n    this.brightnessLabel.innerHTML = 'brightness:';\n\n    this.opacityLabel = document.createElement(\"div\");\n    this.opacityLabel.className = \"vis-label vis-opacity\";\n    this.opacityLabel.innerHTML = 'opacity:';\n\n    this.newColorDiv = document.createElement(\"div\");\n    this.newColorDiv.className = \"vis-new-color\";\n    this.newColorDiv.innerHTML = 'new';\n\n    this.initialColorDiv = document.createElement(\"div\");\n    this.initialColorDiv.className = \"vis-initial-color\";\n    this.initialColorDiv.innerHTML = 'initial';\n\n    this.cancelButton = document.createElement(\"div\");\n    this.cancelButton.className = \"vis-button vis-cancel\";\n    this.cancelButton.innerHTML = 'cancel';\n    this.cancelButton.onclick = this._hide.bind(this, false);\n\n    this.applyButton = document.createElement(\"div\");\n    this.applyButton.className = \"vis-button vis-apply\";\n    this.applyButton.innerHTML = 'apply';\n    this.applyButton.onclick = this._apply.bind(this);\n\n    this.saveButton = document.createElement(\"div\");\n    this.saveButton.className = \"vis-button vis-save\";\n    this.saveButton.innerHTML = 'save';\n    this.saveButton.onclick = this._save.bind(this);\n\n    this.loadButton = document.createElement(\"div\");\n    this.loadButton.className = \"vis-button vis-load\";\n    this.loadButton.innerHTML = 'load last';\n    this.loadButton.onclick = this._loadLast.bind(this);\n\n    this.frame.appendChild(this.colorPickerDiv);\n    this.frame.appendChild(this.arrowDiv);\n    this.frame.appendChild(this.brightnessLabel);\n    this.frame.appendChild(this.brightnessDiv);\n    this.frame.appendChild(this.opacityLabel);\n    this.frame.appendChild(this.opacityDiv);\n    this.frame.appendChild(this.newColorDiv);\n    this.frame.appendChild(this.initialColorDiv);\n\n    this.frame.appendChild(this.cancelButton);\n    this.frame.appendChild(this.applyButton);\n    this.frame.appendChild(this.saveButton);\n    this.frame.appendChild(this.loadButton);\n  }\n\n\n  /**\n   * bind hammer to the color picker\n   * @private\n   */\n  _bindHammer() {\n    this.drag = {};\n    this.pinch = {};\n    this.hammer = new Hammer(this.colorPickerCanvas);\n    this.hammer.get('pinch').set({enable: true});\n\n    hammerUtil.onTouch(this.hammer, (event) => {this._moveSelector(event)});\n    this.hammer.on('tap',       (event) => {this._moveSelector(event)});\n    this.hammer.on('panstart',  (event) => {this._moveSelector(event)});\n    this.hammer.on('panmove',   (event) => {this._moveSelector(event)});\n    this.hammer.on('panend',    (event) => {this._moveSelector(event)});\n  }\n\n\n  /**\n   * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown.\n   * @private\n   */\n  _generateHueCircle() {\n    if (this.generated === false) {\n      let ctx = this.colorPickerCanvas.getContext('2d');\n      if (this.pixelRation === undefined) {\n        this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n        ctx.mozBackingStorePixelRatio ||\n        ctx.msBackingStorePixelRatio ||\n        ctx.oBackingStorePixelRatio ||\n        ctx.backingStorePixelRatio || 1);\n      }\n      ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n      // clear the canvas\n      let w = this.colorPickerCanvas.clientWidth;\n      let h = this.colorPickerCanvas.clientHeight;\n      ctx.clearRect(0, 0, w, h);\n\n\n      // draw hue circle\n      let x, y, hue, sat;\n      this.centerCoordinates = {x: w * 0.5, y: h * 0.5};\n      this.r = 0.49 * w;\n      let angleConvert = (2 * Math.PI) / 360;\n      let hfac = 1 / 360;\n      let sfac = 1 / this.r;\n      let rgb;\n      for (hue = 0; hue < 360; hue++) {\n        for (sat = 0; sat < this.r; sat++) {\n          x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue);\n          y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue);\n          rgb = util.HSVToRGB(hue * hfac, sat * sfac, 1);\n          ctx.fillStyle = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')';\n          ctx.fillRect(x - 0.5, y - 0.5, 2, 2);\n        }\n      }\n      ctx.strokeStyle = 'rgba(0,0,0,1)';\n      ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n      ctx.stroke();\n\n      this.hueCircle = ctx.getImageData(0,0,w,h);\n    }\n    this.generated = true;\n  }\n\n\n  /**\n   * move the selector. This is called by hammer functions.\n   *\n   * @param {Event}  event   The event\n   * @private\n   */\n  _moveSelector(event) {\n    let rect = this.colorPickerDiv.getBoundingClientRect();\n    let left = event.center.x - rect.left;\n    let top = event.center.y - rect.top;\n\n    let centerY = 0.5 * this.colorPickerDiv.clientHeight;\n    let centerX = 0.5 * this.colorPickerDiv.clientWidth;\n\n    let x = left - centerX;\n    let y = top - centerY;\n\n    let angle = Math.atan2(x,y);\n    let radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX);\n\n    let newTop = Math.cos(angle) * radius + centerY;\n    let newLeft = Math.sin(angle) * radius + centerX;\n\n    this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + 'px';\n    this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + 'px';\n\n    // set color\n    let h = angle / (2 * Math.PI);\n    h = h < 0 ? h + 1 : h;\n    let s = radius / this.r;\n    let hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b);\n    hsv.h = h;\n    hsv.s = s;\n    let rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v);\n    rgba['a'] = this.color.a;\n    this.color = rgba;\n\n    // update previews\n    this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')';\n    this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')';\n  }\n}\n\nexport default ColorPicker;\n","import util from '../util';\nimport ColorPicker from './ColorPicker';\n\nimport './configuration.css';\n\n/**\n * The way this works is for all properties of this.possible options, you can supply the property name in any form to list the options.\n * Boolean options are recognised as Boolean\n * Number options should be written as array: [default value, min value, max value, stepsize]\n * Colors should be written as array: ['color', '#ffffff']\n * Strings with should be written as array: [option1, option2, option3, ..]\n *\n * The options are matched with their counterparts in each of the modules and the values used in the configuration are\n */\nclass Configurator {\n  /**\n   * @param {Object} parentModule        | the location where parentModule.setOptions() can be called\n   * @param {Object} defaultContainer    | the default container of the module\n   * @param {Object} configureOptions    | the fully configured and predefined options set found in allOptions.js\n   * @param {number} pixelRatio          | canvas pixel ratio\n   */\n  constructor(parentModule, defaultContainer, configureOptions, pixelRatio = 1) {\n    this.parent = parentModule;\n    this.changedOptions = [];\n    this.container = defaultContainer;\n    this.allowCreation = false;\n\n    this.options = {};\n    this.initialized = false;\n    this.popupCounter = 0;\n    this.defaultOptions = {\n      enabled: false,\n      filter: true,\n      container: undefined,\n      showButton: true\n    };\n    util.extend(this.options, this.defaultOptions);\n\n    this.configureOptions = configureOptions;\n    this.moduleOptions = {};\n    this.domElements = [];\n    this.popupDiv = {};\n    this.popupLimit = 5;\n    this.popupHistory = {};\n    this.colorPicker = new ColorPicker(pixelRatio);\n    this.wrapper = undefined;\n  }\n\n\n  /**\n   * refresh all options.\n   * Because all modules parse their options by themselves, we just use their options. We copy them here.\n   *\n   * @param {Object} options\n   */\n  setOptions(options) {\n    if (options !== undefined) {\n      // reset the popup history because the indices may have been changed.\n      this.popupHistory = {};\n      this._removePopup();\n\n      let enabled = true;\n      if (typeof options === 'string') {\n        this.options.filter = options;\n      }\n      else if (Array.isArray(options)) {\n        this.options.filter = options.join();\n      }\n      else if (typeof options === 'object') {\n        if (options == null) {\n          throw new TypeError('options cannot be null');\n        }\n        if (options.container !== undefined) {\n          this.options.container = options.container;\n        }\n        if (options.filter !== undefined) {\n          this.options.filter = options.filter;\n        }\n        if (options.showButton !== undefined) {\n          this.options.showButton = options.showButton;\n        }\n        if (options.enabled !== undefined) {\n          enabled = options.enabled;\n        }\n      }\n      else if (typeof options === 'boolean') {\n        this.options.filter = true;\n        enabled = options;\n      }\n      else if (typeof options === 'function') {\n        this.options.filter = options;\n        enabled = true;\n      }\n      if (this.options.filter === false) {\n        enabled = false;\n      }\n\n      this.options.enabled = enabled;\n    }\n    this._clean();\n  }\n\n  /**\n   *\n   * @param {Object} moduleOptions\n   */\n  setModuleOptions(moduleOptions) {\n    this.moduleOptions = moduleOptions;\n    if (this.options.enabled === true) {\n      this._clean();\n      if (this.options.container !== undefined) {\n        this.container = this.options.container;\n      }\n      this._create();\n    }\n  }\n\n  /**\n   * Create all DOM elements\n   * @private\n   */\n  _create() {\n    this._clean();\n    this.changedOptions = [];\n\n    let filter = this.options.filter;\n    let counter = 0;\n    let show = false;\n    for (let option in this.configureOptions) {\n      if (this.configureOptions.hasOwnProperty(option)) {\n        this.allowCreation = false;\n        show = false;\n        if (typeof filter === 'function') {\n          show = filter(option,[]);\n          show = show || this._handleObject(this.configureOptions[option], [option], true);\n        }\n        else if (filter === true || filter.indexOf(option) !== -1) {\n          show = true;\n        }\n\n        if (show !== false) {\n          this.allowCreation = true;\n\n          // linebreak between categories\n          if (counter > 0) {\n            this._makeItem([]);\n          }\n          // a header for the category\n          this._makeHeader(option);\n\n          // get the sub options\n          this._handleObject(this.configureOptions[option], [option]);\n        }\n        counter++;\n      }\n    }\n    this._makeButton();\n    this._push();\n    //~ this.colorPicker.insertTo(this.container);\n  }\n\n\n  /**\n   * draw all DOM elements on the screen\n   * @private\n   */\n  _push() {\n    this.wrapper = document.createElement('div');\n    this.wrapper.className = 'vis-configuration-wrapper';\n    this.container.appendChild(this.wrapper);\n    for (var i = 0; i < this.domElements.length; i++) {\n      this.wrapper.appendChild(this.domElements[i]);\n    }\n\n    this._showPopupIfNeeded()\n  }\n\n\n  /**\n   * delete all DOM elements\n   * @private\n   */\n  _clean() {\n    for (var i = 0; i < this.domElements.length; i++) {\n      this.wrapper.removeChild(this.domElements[i]);\n    }\n\n    if (this.wrapper !== undefined) {\n      this.container.removeChild(this.wrapper);\n      this.wrapper = undefined;\n    }\n    this.domElements = [];\n\n    this._removePopup();\n  }\n\n\n  /**\n   * get the value from the actualOptions if it exists\n   * @param {array} path    | where to look for the actual option\n   * @returns {*}\n   * @private\n   */\n  _getValue(path) {\n    let base = this.moduleOptions;\n    for (let i = 0; i < path.length; i++) {\n      if (base[path[i]] !== undefined) {\n        base = base[path[i]];\n      }\n      else {\n        base = undefined;\n        break;\n      }\n    }\n    return base;\n  }\n\n\n  /**\n   * all option elements are wrapped in an item\n   * @param {Array} path    | where to look for the actual option\n   * @param {Array.<Element>} domElements\n   * @returns {number}\n   * @private\n   */\n  _makeItem(path, ...domElements) {\n    if (this.allowCreation === true) {\n      let item = document.createElement('div');\n      item.className = 'vis-configuration vis-config-item vis-config-s' + path.length;\n      domElements.forEach((element) => {\n        item.appendChild(element);\n      });\n      this.domElements.push(item);\n      return this.domElements.length;\n    }\n    return 0;\n  }\n\n\n  /**\n   * header for major subjects\n   * @param {string} name\n   * @private\n   */\n  _makeHeader(name) {\n    let div = document.createElement('div');\n    div.className = 'vis-configuration vis-config-header';\n    div.innerHTML = util.xss(name);\n    this._makeItem([],div);\n  }\n\n\n  /**\n   * make a label, if it is an object label, it gets different styling.\n   * @param {string} name\n   * @param {array} path    | where to look for the actual option\n   * @param {string} objectLabel\n   * @returns {HTMLElement}\n   * @private\n   */\n  _makeLabel(name, path, objectLabel = false) {\n    let div = document.createElement('div');\n    div.className = 'vis-configuration vis-config-label vis-config-s' + path.length;\n    if (objectLabel === true) {\n      div.innerHTML = util.xss('<i><b>' + name + ':</b></i>');\n    }\n    else {\n      div.innerHTML = util.xss(name + ':');\n    }\n    return div;\n  }\n\n\n  /**\n   * make a dropdown list for multiple possible string optoins\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _makeDropdown(arr, value, path) {\n    let select = document.createElement('select');\n    select.className = 'vis-configuration vis-config-select';\n    let selectedValue = 0;\n    if (value !== undefined) {\n      if (arr.indexOf(value) !== -1) {\n        selectedValue = arr.indexOf(value);\n      }\n    }\n\n    for (let i = 0; i < arr.length; i++) {\n      let option = document.createElement('option');\n      option.value = arr[i];\n      if (i === selectedValue) {\n        option.selected = 'selected';\n      }\n      option.innerHTML = arr[i];\n      select.appendChild(option);\n    }\n\n    let me = this;\n    select.onchange = function () {me._update(this.value, path);};\n\n    let label = this._makeLabel(path[path.length-1], path);\n    this._makeItem(path, label, select);\n  }\n\n\n  /**\n   * make a range object for numeric options\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _makeRange(arr, value, path) {\n    let defaultValue = arr[0];\n    let min = arr[1];\n    let max = arr[2];\n    let step = arr[3];\n    let range = document.createElement('input');\n    range.className = 'vis-configuration vis-config-range';\n    try {\n      range.type = 'range'; // not supported on IE9\n      range.min = min;\n      range.max = max;\n    }\n    // TODO: Add some error handling and remove this lint exception\n    catch (err) {}  // eslint-disable-line no-empty\n    range.step = step;\n\n    // set up the popup settings in case they are needed.\n    let popupString = '';\n    let popupValue = 0;\n\n    if (value !== undefined) {\n      let factor = 1.20;\n      if (value < 0 && value * factor < min) {\n        range.min = Math.ceil(value * factor);\n        popupValue = range.min;\n        popupString = 'range increased';\n      }\n      else if (value / factor < min) {\n        range.min = Math.ceil(value / factor);\n        popupValue = range.min;\n        popupString = 'range increased';\n      }\n      if (value * factor > max && max !== 1) {\n        range.max = Math.ceil(value * factor);\n        popupValue = range.max;\n        popupString = 'range increased';\n      }\n      range.value = value;\n    }\n    else {\n      range.value = defaultValue;\n    }\n\n    let input = document.createElement('input');\n    input.className = 'vis-configuration vis-config-rangeinput';\n    input.value = Number(range.value);\n\n    var me = this;\n    range.onchange = function () {input.value = this.value; me._update(Number(this.value), path);};\n    range.oninput  = function () {input.value = this.value; };\n\n    let label = this._makeLabel(path[path.length-1], path);\n    let itemIndex = this._makeItem(path, label, range, input);\n\n    // if a popup is needed AND it has not been shown for this value, show it.\n    if (popupString !== '' && this.popupHistory[itemIndex] !== popupValue) {\n      this.popupHistory[itemIndex] = popupValue;\n      this._setupPopup(popupString, itemIndex);\n    }\n  }\n\n  /**\n   * make a button object\n   * @private\n   */\n  _makeButton() {\n    if (this.options.showButton === true) {\n      let generateButton = document.createElement('div');\n      generateButton.className = 'vis-configuration vis-config-button';\n      generateButton.innerHTML = 'generate options';\n      generateButton.onclick =     () => {this._printOptions();};\n      generateButton.onmouseover = () => {generateButton.className = 'vis-configuration vis-config-button hover';};\n      generateButton.onmouseout =  () => {generateButton.className = 'vis-configuration vis-config-button';};\n\n      this.optionsContainer = document.createElement('div');\n      this.optionsContainer.className = 'vis-configuration vis-config-option-container';\n\n      this.domElements.push(this.optionsContainer);\n      this.domElements.push(generateButton);\n    }\n  }\n\n\n  /**\n   * prepare the popup\n   * @param {string} string\n   * @param {number} index\n   * @private\n   */\n  _setupPopup(string, index) {\n    if (this.initialized === true && this.allowCreation === true && this.popupCounter < this.popupLimit) {\n      let div = document.createElement(\"div\");\n      div.id = \"vis-configuration-popup\";\n      div.className = \"vis-configuration-popup\";\n      div.innerHTML = util.xss(string);\n      div.onclick = () => {this._removePopup()};\n      this.popupCounter += 1;\n      this.popupDiv = {html:div, index:index};\n    }\n  }\n\n\n  /**\n   * remove the popup from the dom\n   * @private\n   */\n  _removePopup() {\n    if (this.popupDiv.html !== undefined) {\n      this.popupDiv.html.parentNode.removeChild(this.popupDiv.html);\n      clearTimeout(this.popupDiv.hideTimeout);\n      clearTimeout(this.popupDiv.deleteTimeout);\n      this.popupDiv = {};\n    }\n  }\n\n\n  /**\n   * Show the popup if it is needed.\n   * @private\n   */\n  _showPopupIfNeeded() {\n    if (this.popupDiv.html !== undefined) {\n      let correspondingElement = this.domElements[this.popupDiv.index];\n      let rect = correspondingElement.getBoundingClientRect();\n      this.popupDiv.html.style.left = rect.left + \"px\";\n      this.popupDiv.html.style.top = rect.top - 30 + \"px\"; // 30 is the height;\n      document.body.appendChild(this.popupDiv.html)\n      this.popupDiv.hideTimeout = setTimeout(() => {\n        this.popupDiv.html.style.opacity = 0;\n      },1500);\n      this.popupDiv.deleteTimeout = setTimeout(() => {\n        this._removePopup();\n      },1800)\n    }\n  }\n\n  /**\n   * make a checkbox for boolean options.\n   * @param {number} defaultValue\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _makeCheckbox(defaultValue, value, path) {\n    var checkbox = document.createElement('input');\n    checkbox.type = 'checkbox';\n    checkbox.className = 'vis-configuration vis-config-checkbox';\n    checkbox.checked = defaultValue;\n    if (value !== undefined) {\n      checkbox.checked = value;\n      if (value !== defaultValue) {\n        if (typeof defaultValue === 'object') {\n          if (value !== defaultValue.enabled) {\n            this.changedOptions.push({path:path, value:value});\n          }\n        }\n        else {\n          this.changedOptions.push({path:path, value:value});\n        }\n      }\n    }\n\n    let me = this;\n    checkbox.onchange = function() {me._update(this.checked, path)};\n\n    let label = this._makeLabel(path[path.length-1], path);\n    this._makeItem(path, label, checkbox);\n  }\n\n  /**\n   * make a text input field for string options.\n   * @param {number} defaultValue\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _makeTextInput(defaultValue, value, path) {\n    var checkbox = document.createElement('input');\n    checkbox.type = 'text';\n    checkbox.className = 'vis-configuration vis-config-text';\n    checkbox.value = value;\n    if (value !== defaultValue) {\n      this.changedOptions.push({path:path, value:value});\n    }\n\n    let me = this;\n    checkbox.onchange = function() {me._update(this.value, path)};\n\n    let label = this._makeLabel(path[path.length-1], path);\n    this._makeItem(path, label, checkbox);\n  }\n\n\n  /**\n   * make a color field with a color picker for color fields\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _makeColorField(arr, value, path) {\n    let defaultColor = arr[1];\n    let div = document.createElement('div');\n    value = value === undefined ? defaultColor : value;\n\n    if (value !== 'none') {\n      div.className = 'vis-configuration vis-config-colorBlock';\n      div.style.backgroundColor = value;\n    }\n    else {\n      div.className = 'vis-configuration vis-config-colorBlock none';\n    }\n\n    value = value === undefined ? defaultColor : value;\n    div.onclick = () => {\n      this._showColorPicker(value,div,path);\n    };\n\n    let label = this._makeLabel(path[path.length-1], path);\n    this._makeItem(path,label, div);\n  }\n\n\n  /**\n   * used by the color buttons to call the color picker.\n   * @param {number} value\n   * @param {HTMLElement} div\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _showColorPicker(value, div, path) {\n    // clear the callback from this div\n    div.onclick = function() {};\n\n    this.colorPicker.insertTo(div);\n    this.colorPicker.show();\n\n    this.colorPicker.setColor(value);\n    this.colorPicker.setUpdateCallback((color) => {\n      let colorString = 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + color.a + ')';\n      div.style.backgroundColor = colorString;\n      this._update(colorString,path);\n    });\n\n    // on close of the colorpicker, restore the callback.\n    this.colorPicker.setCloseCallback(() => {\n      div.onclick = () => {\n        this._showColorPicker(value,div,path);\n      };\n    });\n  }\n\n\n  /**\n   * parse an object and draw the correct items\n   * @param {Object} obj\n   * @param {array} [path=[]]    | where to look for the actual option\n   * @param {boolean} [checkOnly=false]\n   * @returns {boolean}\n   * @private\n   */\n  _handleObject(obj, path = [], checkOnly = false) {\n    let show = false;\n    let filter = this.options.filter;\n    let visibleInSet = false;\n    for (let subObj in obj) {\n      if (obj.hasOwnProperty(subObj)) {\n        show = true;\n        let item = obj[subObj];\n        let newPath = util.copyAndExtendArray(path, subObj);\n        if (typeof filter === 'function') {\n          show = filter(subObj,path);\n\n          // if needed we must go deeper into the object.\n          if (show === false) {\n            if (!Array.isArray(item) && typeof item !== 'string' && typeof item !== 'boolean' && item instanceof Object) {\n              this.allowCreation = false;\n              show = this._handleObject(item, newPath, true);\n              this.allowCreation = checkOnly === false;\n            }\n          }\n        }\n\n        if (show !== false) {\n          visibleInSet = true;\n          let value = this._getValue(newPath);\n\n          if (Array.isArray(item)) {\n            this._handleArray(item, value, newPath);\n          }\n          else if (typeof item === 'string') {\n            this._makeTextInput(item, value, newPath);\n          }\n          else if (typeof item === 'boolean') {\n            this._makeCheckbox(item, value, newPath);\n          }\n          else if (item instanceof Object) {\n            // collapse the physics options that are not enabled\n            let draw = true;\n            if (path.indexOf('physics') !== -1) {\n              if (this.moduleOptions.physics.solver !== subObj) {\n                draw = false;\n              }\n            }\n\n            if (draw === true) {\n              // initially collapse options with an disabled enabled option.\n              if (item.enabled !== undefined) {\n                let enabledPath = util.copyAndExtendArray(newPath, 'enabled');\n                let enabledValue = this._getValue(enabledPath);\n                if (enabledValue === true) {\n                  let label = this._makeLabel(subObj, newPath, true);\n                  this._makeItem(newPath, label);\n                  visibleInSet = this._handleObject(item, newPath) || visibleInSet;\n                }\n                else {\n                  this._makeCheckbox(item, enabledValue, newPath);\n                }\n              }\n              else {\n                let label = this._makeLabel(subObj, newPath, true);\n                this._makeItem(newPath, label);\n                visibleInSet = this._handleObject(item, newPath) || visibleInSet;\n              }\n            }\n          }\n          else {\n            console.error('dont know how to handle', item, subObj, newPath);\n          }\n        }\n      }\n    }\n    return visibleInSet;\n  }\n\n\n  /**\n   * handle the array type of option\n   * @param {Array.<number>} arr\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _handleArray(arr, value, path) {\n    if (typeof arr[0] === 'string' && arr[0] === 'color') {\n      this._makeColorField(arr, value, path);\n      if (arr[1] !== value) {this.changedOptions.push({path:path, value:value});}\n    }\n    else if (typeof arr[0] === 'string') {\n      this._makeDropdown(arr, value, path);\n      if (arr[0] !== value) {this.changedOptions.push({path:path, value:value});}\n    }\n    else if (typeof arr[0] === 'number') {\n      this._makeRange(arr, value, path);\n      if (arr[0] !== value) {this.changedOptions.push({path:path, value:Number(value)});}\n    }\n  }\n\n\n\n  /**\n   * called to update the network with the new settings.\n   * @param {number} value\n   * @param {array} path    | where to look for the actual option\n   * @private\n   */\n  _update(value, path) {\n    let options = this._constructOptions(value,path);\n\n    if (this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit) {\n      this.parent.body.emitter.emit(\"configChange\", options);\n    }\n    this.initialized = true;\n    this.parent.setOptions(options);\n  }\n\n\n  /**\n   *\n   * @param {string|Boolean} value\n   * @param {Array.<string>} path\n   * @param {{}} optionsObj\n   * @returns {{}}\n   * @private\n   */\n  _constructOptions(value, path, optionsObj = {}) {\n    let pointer = optionsObj;\n\n    // when dropdown boxes can be string or boolean, we typecast it into correct types\n    value = value === 'true'  ? true  : value;\n    value = value === 'false' ? false : value;\n\n    for (let i = 0; i < path.length; i++) {\n      if (path[i] !== 'global') {\n        if (pointer[path[i]] === undefined) {\n          pointer[path[i]] = {};\n        }\n        if (i !== path.length - 1) {\n          pointer = pointer[path[i]];\n        }\n        else {\n          pointer[path[i]] = value;\n        }\n      }\n    }\n    return optionsObj;\n  }\n\n  /**\n   * @private\n   */\n  _printOptions() {\n    let options = this.getOptions();\n    this.optionsContainer.innerHTML = '<pre>var options = ' + JSON.stringify(options, null, 2) + '</pre>';\n  }\n\n  /**\n   *\n   * @returns {{}} options\n   */\n  getOptions() {\n    let options = {};\n    for (var i = 0; i < this.changedOptions.length; i++) {\n      this._constructOptions(this.changedOptions[i].value, this.changedOptions[i].path, options)\n    }\n    return options;\n  }\n}\n\n\nexport default Configurator;\n","import moment from '../module/moment';\nimport util, { typeCoerceDataSet, isDataViewLike } from '../util';\nimport { DataSet, DataView } from 'vis-data/esnext';\nimport Range from './Range';\nimport Core from './Core';\nimport TimeAxis from './component/TimeAxis';\nimport CurrentTime from './component/CurrentTime';\nimport CustomTime from './component/CustomTime';\nimport ItemSet from './component/ItemSet';\n\nimport { Validator } from '../shared/Validator';\nimport { printStyle } from '../shared/Validator';\nimport { allOptions } from './optionsTimeline';\nimport { configureOptions } from './optionsTimeline';\n\nimport Configurator from '../shared/Configurator';\n\n/**\n * Create a timeline visualization\n * @extends Core\n */\nexport default class Timeline extends Core {\n  /**\n * @param {HTMLElement} container\n * @param {vis.DataSet | vis.DataView | Array} [items]\n * @param {vis.DataSet | vis.DataView | Array} [groups]\n * @param {Object} [options]  See Timeline.setOptions for the available options.\n * @constructor Timeline\n */\n  constructor(container, items, groups, options) {\n    super()\n    this.initTime = new Date();\n    this.itemsDone = false;\n\n    if (!(this instanceof Timeline)) {\n      throw new SyntaxError('Constructor must be called with the new operator');\n    }\n\n    // if the third element is options, the forth is groups (optionally);\n    if (!(Array.isArray(groups) || isDataViewLike(groups)) && groups instanceof Object) {\n      const forthArgument = options;\n      options = groups;\n      groups = forthArgument;\n    }\n\n    // TODO: REMOVE THIS in the next MAJOR release\n    // see https://github.com/almende/vis/issues/2511\n    if (options && options.throttleRedraw) {\n      console.warn(\"Timeline option \\\"throttleRedraw\\\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.\");\n    }\n\n    const me = this;\n    this.defaultOptions = {\n      autoResize: true,\n      longSelectPressTime: 251,\n      orientation: {\n        axis: 'bottom',   // axis orientation: 'bottom', 'top', or 'both'\n        item: 'bottom'    // not relevant\n      },\n      moment,\n    };\n    this.options = util.deepExtend({}, this.defaultOptions);\n    options && util.setupXSSProtection(options.xss);\n\n    // Create the DOM, props, and emitter\n    this._create(container);\n    if (!options || (options && typeof options.rtl == \"undefined\")) {\n      this.dom.root.style.visibility = 'hidden';\n      let directionFromDom;\n      let domNode = this.dom.root;\n      while (!directionFromDom && domNode) {\n        directionFromDom = window.getComputedStyle(domNode, null).direction;\n        domNode = domNode.parentElement;\n      }\n      this.options.rtl = (directionFromDom && (directionFromDom.toLowerCase() == \"rtl\"));\n    } else {\n      this.options.rtl = options.rtl;\n    }\n\n    if (options) {\n      if (options.rollingMode) { this.options.rollingMode = options.rollingMode; }\n      if (options.onInitialDrawComplete) { this.options.onInitialDrawComplete = options.onInitialDrawComplete; }\n      if (options.onTimeout) { this.options.onTimeout = options.onTimeout; }\n      if (options.loadingScreenTemplate) { this.options.loadingScreenTemplate = options.loadingScreenTemplate; }\n    }\n\n    // Prepare loading screen\n    const loadingScreenFragment = document.createElement('div');\n    if (this.options.loadingScreenTemplate) {\n      const templateFunction = this.options.loadingScreenTemplate.bind(this);\n      const loadingScreen = templateFunction(this.dom.loadingScreen);\n      if ((loadingScreen instanceof Object) && !(loadingScreen instanceof Element)) {\n        templateFunction(loadingScreenFragment)\n      } else {\n        if (loadingScreen instanceof Element) {\n          loadingScreenFragment.innerHTML = '';\n          loadingScreenFragment.appendChild(loadingScreen);\n        }\n        else if (loadingScreen != undefined) {\n          loadingScreenFragment.innerHTML = util.xss(loadingScreen);\n        }\n      }\n    }\n    this.dom.loadingScreen.appendChild(loadingScreenFragment);\n\n    // all components listed here will be repainted automatically\n    this.components = [];\n\n    this.body = {\n      dom: this.dom,\n      domProps: this.props,\n      emitter: {\n        on: this.on.bind(this),\n        off: this.off.bind(this),\n        emit: this.emit.bind(this)\n      },\n      hiddenDates: [],\n      util: {\n        getScale() {\n          return me.timeAxis.step.scale;\n        },\n        getStep() {\n          return me.timeAxis.step.step;\n        },\n\n        toScreen: me._toScreen.bind(me),\n        toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width\n        toTime: me._toTime.bind(me),\n        toGlobalTime : me._toGlobalTime.bind(me)\n      }\n    };\n\n    // range\n    this.range = new Range(this.body, this.options);\n    this.components.push(this.range);\n    this.body.range = this.range;\n\n    // time axis\n    this.timeAxis = new TimeAxis(this.body, this.options);\n    this.timeAxis2 = null; // used in case of orientation option 'both'\n    this.components.push(this.timeAxis);\n\n    // current time bar\n    this.currentTime = new CurrentTime(this.body, this.options);\n    this.components.push(this.currentTime);\n\n    // item set\n    this.itemSet = new ItemSet(this.body, this.options);\n    this.components.push(this.itemSet);\n\n    this.itemsData = null;      // DataSet\n    this.groupsData = null;     // DataSet\n\n    function emit(eventName, event) {\n      if (!me.hasListeners(eventName)) {\n        return;\n      }\n\n      me.emit(eventName, me.getEventProperties(event));\n    }\n\n    this.dom.root.onclick = event => {\n      emit('click', event)\n    };\n    this.dom.root.ondblclick = event => {\n      emit('doubleClick', event)\n    };\n    this.dom.root.oncontextmenu = event => {\n      emit('contextmenu', event)\n    };\n    this.dom.root.onmouseover = event => {\n      emit('mouseOver', event)\n    };\n    if(window.PointerEvent) {\n      this.dom.root.onpointerdown = event => {\n        emit('mouseDown', event)\n      };\n      this.dom.root.onpointermove = event => {\n        emit('mouseMove', event)\n      };\n      this.dom.root.onpointerup = event => {\n        emit('mouseUp', event)\n      };\n    } else {\n      this.dom.root.onmousemove = event => {\n        emit('mouseMove', event)\n      };\n      this.dom.root.onmousedown = event => {\n        emit('mouseDown', event)\n      };\n      this.dom.root.onmouseup = event => {\n        emit('mouseUp', event)\n      };\n    }\n\n    //Single time autoscale/fit\n    this.initialFitDone = false;\n    this.on('changed', () => {\n      if (me.itemsData == null) return;\n      if (!me.initialFitDone && !me.options.rollingMode) {\n        me.initialFitDone = true;\n        if (me.options.start != undefined || me.options.end != undefined) {\n          if (me.options.start == undefined || me.options.end == undefined) {\n            var range = me.getItemRange();\n          }\n\n          const start = me.options.start != undefined ? me.options.start : range.min;\n          const end   = me.options.end   != undefined ? me.options.end   : range.max;\n          me.setWindow(start, end, {animation: false});\n        } else {\n          me.fit({animation: false});\n        }\n      }\n\n      if (!me.initialDrawDone && (me.initialRangeChangeDone || (!me.options.start && !me.options.end)\n        || me.options.rollingMode)) {\n        me.initialDrawDone = true;\n        me.itemSet.initialDrawDone = true;\n        me.dom.root.style.visibility = 'visible';\n        me.dom.loadingScreen.parentNode.removeChild(me.dom.loadingScreen);\n        if (me.options.onInitialDrawComplete) {\n          setTimeout(() => {\n            return me.options.onInitialDrawComplete();\n          }, 0)\n        }\n      }\n    });\n\n    this.on('destroyTimeline', () => {\n      me.destroy()\n    });\n\n    // apply options\n    if (options) {\n      this.setOptions(options);\n    }\n\n    this.body.emitter.on('fit', (args) => {\n      this._onFit(args);\n      this.redraw();\n    });\n\n    // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS!\n    if (groups) {\n      this.setGroups(groups);\n    }\n\n    // create itemset\n    if (items) {\n      this.setItems(items);\n    }\n\n    // draw for the first time\n    this._redraw();\n  }\n\n  /**\n   * Load a configurator\n   * @return {Object}\n   * @private\n   */\n  _createConfigurator() {\n    return new Configurator(this, this.dom.container, configureOptions);\n  }\n\n  /**\n   * Force a redraw. The size of all items will be recalculated.\n   * Can be useful to manually redraw when option autoResize=false and the window\n   * has been resized, or when the items CSS has been changed.\n   *\n   * Note: this function will be overridden on construction with a trottled version\n   */\n  redraw() {\n    this.itemSet && this.itemSet.markDirty({refreshItems: true});\n    this._redraw();\n  }\n\n  /**\n   * Remove an item from the group\n   * @param {object} options\n   */\n  setOptions(options) {\n    // validate options\n    let errorFound = Validator.validate(options, allOptions);\n\n    if (errorFound === true) {\n      console.log('%cErrors have been found in the supplied options object.', printStyle);\n    }\n\n    Core.prototype.setOptions.call(this, options);\n\n    if ('type' in options) {\n      if (options.type !== this.options.type) {\n        this.options.type = options.type;\n\n        // force recreation of all items\n        const itemsData = this.itemsData;\n        if (itemsData) {\n          const selection = this.getSelection();\n          this.setItems(null);            // remove all\n          this.setItems(itemsData.rawDS); // add all\n          this.setSelection(selection);   // restore selection\n        }\n      }\n    }\n  }\n\n  /**\n   * Set items\n   * @param {vis.DataSet | Array | null} items\n   */\n  setItems(items) {\n    this.itemsDone = false;\n\n    // convert to type DataSet when needed\n    let newDataSet;\n    if (!items) {\n      newDataSet = null;\n    }\n    else if (isDataViewLike(items)) {\n      newDataSet = typeCoerceDataSet(items);\n    }\n    else {\n      // turn an array into a dataset\n      newDataSet = typeCoerceDataSet(new DataSet(items));\n    }\n\n    // set items\n    if (this.itemsData) {\n      // stop maintaining a coerced version of the old data set\n      this.itemsData.dispose();\n    }\n    this.itemsData = newDataSet;\n    this.itemSet && this.itemSet.setItems(newDataSet != null ? newDataSet.rawDS : null);\n  }\n\n  /**\n   * Set groups\n   * @param {vis.DataSet | Array} groups\n   */\n  setGroups(groups) {\n    // convert to type DataSet when needed\n    let newDataSet;\n    const filter = group => group.visible !== false;\n\n    if (!groups) {\n      newDataSet = null;\n    }\n    else {\n      // If groups is array, turn to DataSet & build dataview from that\n      if (Array.isArray(groups)) groups = new DataSet(groups);\n\n      newDataSet = new DataView(groups,{filter});\n    }\n\n    // This looks weird but it's necessary to prevent memory leaks.\n    //\n    // The problem is that the DataView will exist as long as the DataSet it's\n    // connected to. This will force it to swap the groups DataSet for it's own\n    // DataSet. In this arrangement it will become unreferenced from the outside\n    // and garbage collected.\n    //\n    // IMPORTANT NOTE: If `this.groupsData` is a DataView was created in this\n    // method. Even if the original is a DataView already a new one has been\n    // created and assigned to `this.groupsData`. In case this changes in the\n    // future it will be necessary to rework this!!!!\n    if (this.groupsData != null && typeof this.groupsData.setData === \"function\") {\n      this.groupsData.setData(null);\n    }\n    this.groupsData = newDataSet;\n    this.itemSet.setGroups(newDataSet);\n  }\n\n  /**\n   * Set both items and groups in one go\n   * @param {{items: (Array | vis.DataSet), groups: (Array | vis.DataSet)}} data\n   */\n  setData(data) {\n    if (data && data.groups) {\n      this.setGroups(data.groups);\n    }\n\n    if (data && data.items) {\n      this.setItems(data.items);\n    }\n  }\n\n  /**\n   * Set selected items by their id. Replaces the current selection\n   * Unknown id's are silently ignored.\n   * @param {string[] | string} [ids]  An array with zero or more id's of the items to be\n   *                                selected. If ids is an empty array, all items will be\n   *                                unselected.\n   * @param {Object} [options]      Available options:\n   *                                `focus: boolean`\n   *                                    If true, focus will be set to the selected item(s)\n   *                                `animation: boolean | {duration: number, easingFunction: string}`\n   *                                    If true (default), the range is animated\n   *                                    smoothly to the new window. An object can be\n   *                                    provided to specify duration and easing function.\n   *                                    Default duration is 500 ms, and default easing\n   *                                    function is 'easeInOutQuad'.\n   *                                    Only applicable when option focus is true.\n   */\n  setSelection(ids, options) {\n    this.itemSet && this.itemSet.setSelection(ids);\n\n    if (options && options.focus) {\n      this.focus(ids, options);\n    }\n  }\n\n  /**\n   * Get the selected items by their id\n   * @return {Array} ids  The ids of the selected items\n   */\n  getSelection() {\n    return this.itemSet && this.itemSet.getSelection() || [];\n  }\n\n  /**\n   * Adjust the visible window such that the selected item (or multiple items)\n   * are centered on screen.\n   * @param {string | String[]} id     An item id or array with item ids\n   * @param {Object} [options]      Available options:\n   *                                `animation: boolean | {duration: number, easingFunction: string}`\n   *                                    If true (default), the range is animated\n   *                                    smoothly to the new window. An object can be\n   *                                    provided to specify duration and easing function.\n   *                                    Default duration is 500 ms, and default easing\n   *                                    function is 'easeInOutQuad'.\n   *                                `zoom: boolean`\n   *                                    If true (default), the timeline will\n   *                                    zoom on the element after focus it.\n   */\n  focus(id, options) {\n    if (!this.itemsData || id == undefined) return;\n\n    const ids = Array.isArray(id) ? id : [id];\n\n    // get the specified item(s)\n    const itemsData = this.itemsData.get(ids);\n\n    // calculate minimum start and maximum end of specified items\n    let start = null;\n    let end = null;\n    itemsData.forEach(itemData => {\n      const s = itemData.start.valueOf();\n      const e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf();\n\n      if (start === null || s < start) {\n        start = s;\n      }\n\n      if (end === null || e > end) {\n        end = e;\n      }\n    });\n\n\n    if (start !== null && end !== null) {\n      const me = this;\n      // Use the first item for the vertical focus\n      const item = this.itemSet.items[ids[0]];\n      let startPos = this._getScrollTop() * -1;\n      let initialVerticalScroll = null;\n\n      // Setup a handler for each frame of the vertical scroll\n      const verticalAnimationFrame = (ease, willDraw, done) => {\n        const verticalScroll = getItemVerticalScroll(me, item);\n\n        if (verticalScroll === false) {\n          return; // We don't need to scroll, so do nothing\n        }\n\n        if(!initialVerticalScroll) {\n          initialVerticalScroll = verticalScroll;\n        }\n\n        if(initialVerticalScroll.itemTop == verticalScroll.itemTop && !initialVerticalScroll.shouldScroll) {\n          return; // We don't need to scroll, so do nothing\n        }\n        else if(initialVerticalScroll.itemTop != verticalScroll.itemTop && verticalScroll.shouldScroll) {\n          // The redraw shifted elements, so reset the animation to correct\n          initialVerticalScroll = verticalScroll;\n          startPos = me._getScrollTop() * -1;\n        }\n\n        const from = startPos;\n        const to = initialVerticalScroll.scrollOffset;\n        const scrollTop = done ? to : (from + (to - from) * ease);\n\n        me._setScrollTop(-scrollTop);\n\n        if(!willDraw) {\n          me._redraw();\n        }\n      };\n\n      // Enforces the final vertical scroll position\n      const setFinalVerticalPosition = () => {\n        const finalVerticalScroll = getItemVerticalScroll(me, item);\n\n        if (finalVerticalScroll.shouldScroll && finalVerticalScroll.itemTop != initialVerticalScroll.itemTop) {\n          me._setScrollTop(-finalVerticalScroll.scrollOffset);\n          me._redraw();\n        }\n      };\n\n      // Perform one last check at the end to make sure the final vertical\n      // position is correct\n      const finalVerticalCallback = () => {\n        // Double check we ended at the proper scroll position\n        setFinalVerticalPosition();\n\n        // Let the redraw settle and finalize the position.\n        setTimeout(setFinalVerticalPosition, 100);\n      };\n\n      // calculate the new middle and interval for the window\n      const zoom = options && options.zoom !== undefined ? options.zoom : true;\n      const middle = (start + end) / 2;\n      const interval = zoom ? (end - start) * 1.1 : Math.max(this.range.end - this.range.start, (end - start) * 1.1);\n\n      const animation = options && options.animation !== undefined ? options.animation : true;\n\n      if (!animation) {\n        // We aren't animating so set a default so that the final callback forces the vertical location\n        initialVerticalScroll = { shouldScroll: false, scrollOffset: -1, itemTop: -1 };\n      }\n\n      this.range.setRange(middle - interval / 2, middle + interval / 2, { animation }, finalVerticalCallback, verticalAnimationFrame);\n    }\n  }\n\n  /**\n   * Set Timeline window such that it fits all items\n   * @param {Object} [options]  Available options:\n   *                                `animation: boolean | {duration: number, easingFunction: string}`\n   *                                    If true (default), the range is animated\n   *                                    smoothly to the new window. An object can be\n   *                                    provided to specify duration and easing function.\n   *                                    Default duration is 500 ms, and default easing\n   *                                    function is 'easeInOutQuad'.\n   * @param {function} [callback]\n   */\n  fit(options, callback) {\n    const animation = (options && options.animation !== undefined) ? options.animation : true;\n    let range;\n\n    if (this.itemsData.length === 1 && this.itemsData.get()[0].end === undefined) {\n      // a single item -> don't fit, just show a range around the item from -4 to +3 days\n      range = this.getDataRange();\n      this.moveTo(range.min.valueOf(), {animation}, callback);\n    }\n    else {\n      // exactly fit the items (plus a small margin)\n      range = this.getItemRange();\n      this.range.setRange(range.min, range.max, { animation }, callback);\n    }\n  }\n\n  /**\n   * Determine the range of the items, taking into account their actual width\n   * and a margin of 10 pixels on both sides.\n   *\n   * @returns {{min: Date, max: Date}}\n   */\n  getItemRange() {\n    // get a rough approximation for the range based on the items start and end dates\n    const range = this.getDataRange();\n    let min = range.min !== null ? range.min.valueOf() : null;\n    let max = range.max !== null ? range.max.valueOf() : null;\n    let minItem = null;\n    let maxItem = null;\n\n    if (min != null && max != null) {\n      let interval = (max - min); // ms\n      if (interval <= 0) {\n        interval = 10;\n      }\n      const factor = interval / this.props.center.width;\n\n      const redrawQueue = {};\n      let redrawQueueLength = 0;\n\n      // collect redraw functions\n      util.forEach(this.itemSet.items, (item, key) => {\n        if (item.groupShowing) {\n          const returnQueue = true;\n          redrawQueue[key] = item.redraw(returnQueue);\n          redrawQueueLength = redrawQueue[key].length;\n        }\n      })\n\n      const needRedraw = redrawQueueLength > 0;\n      if (needRedraw) {\n        // redraw all regular items\n        for (let i = 0; i < redrawQueueLength; i++) {\n          util.forEach(redrawQueue, fns => {\n            fns[i]();\n          });\n        }\n      }\n\n       // calculate the date of the left side and right side of the items given\n      util.forEach(this.itemSet.items, item => {\n        const start = getStart(item);\n        const end = getEnd(item);\n        let startSide;\n        let endSide;\n\n        if (this.options.rtl) {\n          startSide  = start - (item.getWidthRight()  + 10) * factor;\n          endSide = end   + (item.getWidthLeft() + 10) * factor;\n        } else {\n          startSide  = start - (item.getWidthLeft()  + 10) * factor;\n          endSide = end   + (item.getWidthRight() + 10) * factor;\n        }\n\n        if (startSide < min) {\n          min = startSide;\n          minItem = item;\n        }\n        if (endSide > max) {\n          max = endSide;\n          maxItem = item;\n        }\n      });\n\n      if (minItem && maxItem) {\n        const lhs = minItem.getWidthLeft() + 10;\n        const rhs = maxItem.getWidthRight() + 10;\n        const delta = this.props.center.width - lhs - rhs;  // px\n\n        if (delta > 0) {\n          if (this.options.rtl) {\n            min = getStart(minItem) - rhs * interval / delta; // ms\n            max = getEnd(maxItem)   + lhs * interval / delta; // ms\n          } else {\n            min = getStart(minItem) - lhs * interval / delta; // ms\n            max = getEnd(maxItem)   + rhs * interval / delta; // ms\n          }\n        }\n      }\n    }\n\n    return {\n      min: min != null ? new Date(min) : null,\n      max: max != null ? new Date(max) : null\n    }\n  }\n\n  /**\n   * Calculate the data range of the items start and end dates\n   * @returns {{min: Date, max: Date}}\n   */\n  getDataRange() {\n    let min = null;\n    let max = null;\n\n    if (this.itemsData) {\n      this.itemsData.forEach(item => {\n        const start = util.convert(item.start, 'Date').valueOf();\n        const end   = util.convert(item.end != undefined ? item.end : item.start, 'Date').valueOf();\n        if (min === null || start < min) {\n          min = start;\n        }\n        if (max === null || end > max) {\n          max = end;\n        }\n      });\n    }\n\n    return {\n      min: min != null ? new Date(min) : null,\n      max: max != null ? new Date(max) : null\n    }\n  }\n\n  /**\n   * Generate Timeline related information from an event\n   * @param {Event} event\n   * @return {Object} An object with related information, like on which area\n   *                  The event happened, whether clicked on an item, etc.\n   */\n  getEventProperties(event) {\n    const clientX = event.center ? event.center.x : event.clientX;\n    const clientY = event.center ? event.center.y : event.clientY;\n    const centerContainerRect = this.dom.centerContainer.getBoundingClientRect();\n    const x = this.options.rtl ? centerContainerRect.right - clientX : clientX - centerContainerRect.left;\n    const y = clientY - centerContainerRect.top;\n\n    const item  = this.itemSet.itemFromTarget(event);\n    const group = this.itemSet.groupFromTarget(event);\n    const customTime = CustomTime.customTimeFromTarget(event);\n\n    const snap = this.itemSet.options.snap || null;\n    const scale = this.body.util.getScale();\n    const step = this.body.util.getStep();\n    const time = this._toTime(x);\n    const snappedTime = snap ? snap(time, scale, step) : time;\n\n    const element = util.getTarget(event);\n    let what = null;\n    if (item != null)                                                    {what = 'item';}\n    else if (customTime != null)                                         {what = 'custom-time';}\n    else if (util.hasParent(element, this.timeAxis.dom.foreground))      {what = 'axis';}\n    else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';}\n    else if (util.hasParent(element, this.itemSet.dom.labelSet))         {what = 'group-label';}\n    else if (util.hasParent(element, this.currentTime.bar))              {what = 'current-time';}\n    else if (util.hasParent(element, this.dom.center))                   {what = 'background';}\n\n    return {\n      event,\n      item: item ? item.id : null,\n      isCluster: item ? !!item.isCluster: false,\n      items: item ? item.items || []: null,\n      group: group ? group.groupId : null,\n      customTime: customTime ? customTime.options.id : null,\n      what,\n      pageX: event.srcEvent ? event.srcEvent.pageX : event.pageX,\n      pageY: event.srcEvent ? event.srcEvent.pageY : event.pageY,\n      x,\n      y,\n      time,\n      snappedTime\n    }\n  }\n\n  /**\n   * Toggle Timeline rolling mode\n   */\n  toggleRollingMode() {\n    if (this.range.rolling) {\n      this.range.stopRolling();\n    } else {\n      if (this.options.rollingMode == undefined) {\n        this.setOptions(this.options)\n      }\n      this.range.startRolling();\n    }\n  }\n\n  /**\n   * redraw\n   * @private\n   */\n  _redraw() {\n    Core.prototype._redraw.call(this);\n  }\n\n  /**\n   * on fit callback\n   * @param {object} args\n   * @private\n   */\n  _onFit(args) {\n    const { start, end, animation } = args;\n    if (!end) {\n      this.moveTo(start.valueOf(), {\n        animation\n      });\n    } else {\n      this.range.setRange(start, end, {\n        animation: animation\n      });\n    }\n  }\n}\n\n/**\n *\n * @param {timeline.Item} item\n * @returns {number}\n */\nfunction getStart(item) {\n  return util.convert(item.data.start, 'Date').valueOf()\n}\n\n/**\n *\n * @param {timeline.Item} item\n * @returns {number}\n */\nfunction getEnd(item) {\n  const end = item.data.end != undefined ? item.data.end : item.data.start;\n  return util.convert(end, 'Date').valueOf();\n}\n\n/**\n * @param {vis.Timeline} timeline\n * @param {timeline.Item} item\n * @return {{shouldScroll: bool, scrollOffset: number, itemTop: number}}\n */\nfunction getItemVerticalScroll(timeline, item) {\n  if (!item.parent) {\n    // The item no longer exists, so ignore this focus.\n    return false;\n  }\n\n  const itemsetHeight = timeline.options.rtl ? timeline.props.rightContainer.height : timeline.props.leftContainer.height;\n  const contentHeight = timeline.props.center.height;\n\n  const group = item.parent;\n  let offset = group.top;\n  let shouldScroll = true;\n  const orientation = timeline.timeAxis.options.orientation.axis;\n\n  const itemTop = () => {\n  if (orientation == \"bottom\") {\n      return group.height - item.top - item.height;\n    }\n    else {\n      return item.top;\n    }\n  };\n\n  const currentScrollHeight = timeline._getScrollTop() * -1;\n  const targetOffset = offset + itemTop();\n  const height = item.height;\n\n  if (targetOffset < currentScrollHeight) {\n    if (offset + itemsetHeight <= offset + itemTop() + height) {\n      offset += itemTop() - timeline.itemSet.options.margin.item.vertical;\n    }\n  }\n  else if (targetOffset + height > currentScrollHeight + itemsetHeight) {\n    offset += itemTop() + height - itemsetHeight + timeline.itemSet.options.margin.item.vertical;\n  }\n  else {\n    shouldScroll = false;\n  }\n\n  offset = Math.min(offset, contentHeight - itemsetHeight);\n\n  return { shouldScroll, scrollOffset: offset, itemTop: targetOffset };\n}\n","/** DataScale */\nclass DataScale {\n  /**\n   *\n   * @param {number} start\n   * @param {number} end\n   * @param {boolean} autoScaleStart\n   * @param {boolean} autoScaleEnd\n   * @param {number} containerHeight\n   * @param {number} majorCharHeight\n   * @param {boolean} zeroAlign\n   * @param {function} formattingFunction\n   * @constructor DataScale\n   */\n  constructor(\n    start,\n    end,\n    autoScaleStart,\n    autoScaleEnd,\n    containerHeight,\n    majorCharHeight,\n    zeroAlign = false,\n    formattingFunction=false) {\n    this.majorSteps = [1, 2, 5, 10];\n    this.minorSteps = [0.25, 0.5, 1, 2];\n    this.customLines = null;\n\n    this.containerHeight = containerHeight;\n    this.majorCharHeight = majorCharHeight;\n    this._start = start;\n    this._end = end;\n\n    this.scale = 1;\n    this.minorStepIdx = -1;\n    this.magnitudefactor = 1;\n    this.determineScale();\n\n    this.zeroAlign = zeroAlign;\n    this.autoScaleStart = autoScaleStart;\n    this.autoScaleEnd = autoScaleEnd;\n\n    this.formattingFunction = formattingFunction;\n\n    if (autoScaleStart || autoScaleEnd) {\n      const me = this;\n      const roundToMinor = value => {\n        const rounded = value - (value % (me.magnitudefactor * me.minorSteps[me.minorStepIdx]));\n        if (value % (me.magnitudefactor * me.minorSteps[me.minorStepIdx]) > 0.5 * (me.magnitudefactor * me.minorSteps[me.minorStepIdx])) {\n          return rounded + (me.magnitudefactor * me.minorSteps[me.minorStepIdx]);\n        }\n        else {\n          return rounded;\n        }\n      };\n      if (autoScaleStart) {\n        this._start -= this.magnitudefactor * 2 * this.minorSteps[this.minorStepIdx];\n        this._start = roundToMinor(this._start);\n      }\n\n      if (autoScaleEnd) {\n        this._end += this.magnitudefactor * this.minorSteps[this.minorStepIdx];\n        this._end = roundToMinor(this._end);\n      }\n      this.determineScale();\n    }\n  }\n\n  /**\n   * set chart height\n   * @param {number} majorCharHeight \n   */\n  setCharHeight(majorCharHeight) {\n    this.majorCharHeight = majorCharHeight;\n  }\n\n  /**\n   * set height\n   * @param {number} containerHeight \n   */\n  setHeight(containerHeight) {\n    this.containerHeight = containerHeight;\n  }\n\n  /**\n   * determine scale\n   */\n  determineScale() {\n    const range = this._end - this._start;\n    this.scale = this.containerHeight / range;\n    const minimumStepValue = this.majorCharHeight / this.scale;\n    const orderOfMagnitude = (range > 0)\n        ? Math.round(Math.log(range) / Math.LN10)\n        : 0;\n\n    this.minorStepIdx = -1;\n    this.magnitudefactor = Math.pow(10, orderOfMagnitude);\n\n    let start = 0;\n    if (orderOfMagnitude < 0) {\n      start = orderOfMagnitude;\n    }\n\n    let solutionFound = false;\n    for (let l = start; Math.abs(l) <= Math.abs(orderOfMagnitude); l++) {\n      this.magnitudefactor = Math.pow(10, l);\n      for (let j = 0; j < this.minorSteps.length; j++) {\n        const stepSize = this.magnitudefactor * this.minorSteps[j];\n        if (stepSize >= minimumStepValue) {\n          solutionFound = true;\n          this.minorStepIdx = j;\n          break;\n        }\n      }\n      if (solutionFound === true) {\n        break;\n      }\n    }\n  }\n\n  /**\n   * returns if value is major\n   * @param {number} value\n   * @returns {boolean} \n   */\n  is_major(value) {\n    return (value % (this.magnitudefactor * this.majorSteps[this.minorStepIdx]) === 0);\n  }\n\n  /**\n   * returns step size\n   * @returns {number} \n   */\n  getStep() {\n    return this.magnitudefactor * this.minorSteps[this.minorStepIdx];\n  }\n\n  /**\n   * returns first major\n   * @returns {number} \n   */\n  getFirstMajor() {\n    const majorStep = this.magnitudefactor * this.majorSteps[this.minorStepIdx];\n    return this.convertValue(this._start + ((majorStep - (this._start % majorStep)) % majorStep));\n  }\n\n  /**\n   * returns first major\n   * @param {date} current\n   * @returns {date} formatted date\n   */\n  formatValue(current) {\n    let returnValue = current.toPrecision(5);\n    if (typeof this.formattingFunction === 'function') {\n      returnValue = this.formattingFunction(current);\n    }\n\n    if (typeof returnValue === 'number') {\n      return `${returnValue}`;\n    }\n    else if (typeof returnValue === 'string') {\n      return returnValue;\n    }\n    else {\n      return current.toPrecision(5);\n    }\n\n  }\n\n  /**\n   * returns lines\n   * @returns {object} lines\n   */\n  getLines() {\n    const lines = [];\n    const step = this.getStep();\n    const bottomOffset = (step - (this._start % step)) % step;\n    for (let i = (this._start + bottomOffset); this._end-i > 0.00001; i += step) {\n      if (i != this._start) { //Skip the bottom line\n        lines.push({major: this.is_major(i), y: this.convertValue(i), val: this.formatValue(i)});\n      }\n    }\n    return lines;\n  }\n\n  /**\n   * follow scale\n   * @param {object} other\n   */\n  followScale(other) {\n    const oldStepIdx = this.minorStepIdx;\n    const oldStart = this._start;\n    const oldEnd = this._end;\n\n    const me = this;\n    const increaseMagnitude = () => {\n      me.magnitudefactor *= 2;\n    };\n    const decreaseMagnitude = () => {\n      me.magnitudefactor /= 2;\n    };\n\n    if ((other.minorStepIdx <= 1 && this.minorStepIdx <= 1) || (other.minorStepIdx > 1 && this.minorStepIdx > 1)) {\n      //easy, no need to change stepIdx nor multiplication factor\n    } else if (other.minorStepIdx < this.minorStepIdx) {\n      //I'm 5, they are 4 per major.\n      this.minorStepIdx = 1;\n      if (oldStepIdx == 2) {\n        increaseMagnitude();\n      } else {\n        increaseMagnitude();\n        increaseMagnitude();\n      }\n    } else {\n      //I'm 4, they are 5 per major\n      this.minorStepIdx = 2;\n      if (oldStepIdx == 1) {\n        decreaseMagnitude();\n      } else {\n        decreaseMagnitude();\n        decreaseMagnitude();\n      }\n    }\n\n    //Get masters stats:\n    const otherZero = other.convertValue(0);\n    const otherStep = other.getStep() * other.scale;\n\n    let done = false;\n    let count = 0;\n    //Loop until magnitude is correct for given constrains.\n    while (!done && count++ <5) {\n\n      //Get my stats:\n      this.scale = otherStep / (this.minorSteps[this.minorStepIdx] * this.magnitudefactor);\n      const newRange = this.containerHeight / this.scale;\n\n      //For the case the magnitudefactor has changed:\n      this._start = oldStart;\n      this._end = this._start + newRange;\n\n      const myOriginalZero = this._end * this.scale;\n      const majorStep = this.magnitudefactor * this.majorSteps[this.minorStepIdx];\n      const majorOffset = this.getFirstMajor() - other.getFirstMajor();\n\n      if (this.zeroAlign) {\n        const zeroOffset = otherZero - myOriginalZero;\n        this._end += (zeroOffset / this.scale);\n        this._start = this._end - newRange;\n      } else {\n        if (!this.autoScaleStart) {\n          this._start += majorStep - (majorOffset / this.scale);\n          this._end = this._start + newRange;\n        } else {\n          this._start -= majorOffset / this.scale;\n          this._end = this._start + newRange;\n        }\n      }\n      if (!this.autoScaleEnd && this._end > oldEnd+0.00001) {\n        //Need to decrease magnitude to prevent scale overshoot! (end)\n        decreaseMagnitude();\n        done = false;\n        continue;\n      }\n      if (!this.autoScaleStart && this._start < oldStart-0.00001) {\n        if (this.zeroAlign && oldStart >= 0) {\n          console.warn(\"Can't adhere to given 'min' range, due to zeroalign\");\n        } else {\n          //Need to decrease magnitude to prevent scale overshoot! (start)\n          decreaseMagnitude();\n          done = false;\n          continue;\n        }\n      }\n      if (this.autoScaleStart && this.autoScaleEnd && newRange < (oldEnd-oldStart)){\n        increaseMagnitude();\n        done = false;\n        continue;\n      }\n      done = true;\n    }\n  }\n\n  /**\n   * convert value\n   * @param {number} value\n   * @returns {number} \n   */\n  convertValue(value) {\n    return this.containerHeight - ((value - this._start) * this.scale);\n  }\n\n  /**\n   * returns screen to value\n   * @param {number} pixels\n   * @returns {number} \n   */\n  screenToValue(pixels) {\n    return ((this.containerHeight - pixels) / this.scale) + this._start;\n  }\n}\n\nexport default DataScale;","import util, { randomUUID } from '../../util';\nimport * as DOMutil from '../../DOMutil';\nimport Component from './Component';\nimport DataScale from './DataScale';\n\nimport './css/dataaxis.css';\n\n/** A horizontal time axis */\nclass DataAxis extends Component {\n  /**\n * @param {Object} body\n * @param {Object} [options]        See DataAxis.setOptions for the available\n *                                  options.\n * @param {SVGElement} svg\n * @param {timeline.LineGraph.options} linegraphOptions\n * @constructor DataAxis\n * @extends Component\n */\n  constructor(body, options, svg, linegraphOptions) {\n    super()\n    this.id = randomUUID();\n    this.body = body;\n\n    this.defaultOptions = {\n      orientation: 'left',  // supported: 'left', 'right'\n      showMinorLabels: true,\n      showMajorLabels: true,\n      showWeekScale: false,\n      icons: false,\n      majorLinesOffset: 7,\n      minorLinesOffset: 4,\n      labelOffsetX: 10,\n      labelOffsetY: 2,\n      iconWidth: 20,\n      width: '40px',\n      visible: true,\n      alignZeros: true,\n      left: {\n        range: {min: undefined, max: undefined},\n        format(value) {\n          return `${parseFloat(value.toPrecision(3))}`;\n        },\n        title: {text: undefined, style: undefined}\n      },\n      right: {\n        range: {min: undefined, max: undefined},\n        format(value) {\n          return `${parseFloat(value.toPrecision(3))}`;\n        },\n        title: {text: undefined, style: undefined}\n      }\n    };\n\n    this.linegraphOptions = linegraphOptions;\n    this.linegraphSVG = svg;\n    this.props = {};\n    this.DOMelements = { // dynamic elements\n      lines: {},\n      labels: {},\n      title: {}\n    };\n\n    this.dom = {};\n    this.scale = undefined;\n    this.range = {start: 0, end: 0};\n\n    this.options = util.extend({}, this.defaultOptions);\n    this.conversionFactor = 1;\n\n    this.setOptions(options);\n    this.width = Number((`${this.options.width}`).replace(\"px\", \"\"));\n    this.minWidth = this.width;\n    this.height = this.linegraphSVG.getBoundingClientRect().height;\n    this.hidden = false;\n\n    this.stepPixels = 25;\n    this.zeroCrossing = -1;\n    this.amountOfSteps = -1;\n\n    this.lineOffset = 0;\n    this.master = true;\n    this.masterAxis = null;\n    this.svgElements = {};\n    this.iconsRemoved = false;\n\n    this.groups = {};\n    this.amountOfGroups = 0;\n\n    // create the HTML DOM\n    this._create();\n    if (this.scale == undefined) {\n      this._redrawLabels();\n    }\n    this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups};\n\n    const me = this;\n    this.body.emitter.on(\"verticalDrag\", () => {\n      me.dom.lineContainer.style.top = `${me.body.domProps.scrollTop}px`;\n    });\n  }\n\n  /**\n   * Adds group to data axis\n   * @param {string} label \n   * @param {object} graphOptions\n   */\n  addGroup(label, graphOptions) {\n    if (!this.groups.hasOwnProperty(label)) {\n      this.groups[label] = graphOptions;\n    }\n    this.amountOfGroups += 1;\n  }\n\n  /**\n   * updates group of data axis\n   * @param {string} label \n   * @param {object} graphOptions\n   */\n  updateGroup(label, graphOptions) {\n    if (!this.groups.hasOwnProperty(label)) {\n      this.amountOfGroups += 1;\n    }\n    this.groups[label] = graphOptions;\n  }\n\n  /**\n   * removes group of data axis\n   * @param {string} label \n   */\n  removeGroup(label) {\n    if (this.groups.hasOwnProperty(label)) {\n      delete this.groups[label];\n      this.amountOfGroups -= 1;\n    }\n  }\n\n  /**\n   * sets options\n   * @param {object} options\n   */\n  setOptions(options) {\n    if (options) {\n      let redraw = false;\n      if (this.options.orientation != options.orientation && options.orientation !== undefined) {\n        redraw = true;\n      }\n      const fields = [\n        'orientation',\n        'showMinorLabels',\n        'showMajorLabels',\n        'icons',\n        'majorLinesOffset',\n        'minorLinesOffset',\n        'labelOffsetX',\n        'labelOffsetY',\n        'iconWidth',\n        'width',\n        'visible',\n        'left',\n        'right',\n        'alignZeros'\n      ];\n      util.selectiveDeepExtend(fields, this.options, options);\n\n      this.minWidth = Number((`${this.options.width}`).replace(\"px\", \"\"));\n      if (redraw === true && this.dom.frame) {\n        this.hide();\n        this.show();\n      }\n    }\n  }\n\n  /**\n   * Create the HTML DOM for the DataAxis\n   */\n  _create() {\n    this.dom.frame = document.createElement('div');\n    this.dom.frame.style.width = this.options.width;\n    this.dom.frame.style.height = this.height;\n\n    this.dom.lineContainer = document.createElement('div');\n    this.dom.lineContainer.style.width = '100%';\n    this.dom.lineContainer.style.height = this.height;\n    this.dom.lineContainer.style.position = 'relative';\n    this.dom.lineContainer.style.visibility = 'visible';\n    this.dom.lineContainer.style.display = 'block';\n\n    // create svg element for graph drawing.\n    this.svg = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n    this.svg.style.position = \"absolute\";\n    this.svg.style.top = '0px';\n    this.svg.style.height = '100%';\n    this.svg.style.width = '100%';\n    this.svg.style.display = \"block\";\n    this.dom.frame.appendChild(this.svg);\n  }\n\n  /**\n   * redraws groups icons\n   */\n  _redrawGroupIcons() {\n    DOMutil.prepareElements(this.svgElements);\n\n    let x;\n    const iconWidth = this.options.iconWidth;\n    const iconHeight = 15;\n    const iconOffset = 4;\n    let y = iconOffset + 0.5 * iconHeight;\n\n    if (this.options.orientation === 'left') {\n      x = iconOffset;\n    }\n    else {\n      x = this.width - iconWidth - iconOffset;\n    }\n\n    const groupArray = Object.keys(this.groups);\n    groupArray.sort((a, b) => a < b ? -1 : 1)\n\n    for (const groupId of groupArray) {\n      if (this.groups[groupId].visible === true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] === true)) {\n        this.groups[groupId].getLegend(iconWidth, iconHeight, this.framework, x, y);\n        y += iconHeight + iconOffset;\n      }\n    }\n\n    DOMutil.cleanupElements(this.svgElements);\n    this.iconsRemoved = false;\n  }\n\n  /**\n   * Cleans up icons\n   */\n  _cleanupIcons() {\n    if (this.iconsRemoved === false) {\n      DOMutil.prepareElements(this.svgElements);\n      DOMutil.cleanupElements(this.svgElements);\n      this.iconsRemoved = true;\n    }\n  }\n\n  /**\n   * Create the HTML DOM for the DataAxis\n   */\n  show() {\n    this.hidden = false;\n    if (!this.dom.frame.parentNode) {\n      if (this.options.orientation === 'left') {\n        this.body.dom.left.appendChild(this.dom.frame);\n      }\n      else {\n        this.body.dom.right.appendChild(this.dom.frame);\n      }\n    }\n\n    if (!this.dom.lineContainer.parentNode) {\n      this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer);\n    }\n    this.dom.lineContainer.style.display = 'block';\n  }\n\n  /**\n   * Create the HTML DOM for the DataAxis\n   */\n  hide() {\n    this.hidden = true;\n    if (this.dom.frame.parentNode) {\n      this.dom.frame.parentNode.removeChild(this.dom.frame);\n    }\n\n    this.dom.lineContainer.style.display = 'none';\n  }\n\n  /**\n   * Set a range (start and end)\n   * @param {number} start\n   * @param {number} end\n   */\n  setRange(start, end) {\n    this.range.start = start;\n    this.range.end = end;\n  }\n\n  /**\n   * Repaint the component\n   * @return {boolean} Returns true if the component is resized\n   */\n  redraw() {\n    let resized = false;\n    let activeGroups = 0;\n\n    // Make sure the line container adheres to the vertical scrolling.\n    this.dom.lineContainer.style.top = `${this.body.domProps.scrollTop}px`;\n\n    for (const groupId in this.groups) {\n      if (this.groups.hasOwnProperty(groupId)) {\n        if (this.groups[groupId].visible === true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] === true)) {\n          activeGroups++;\n        }\n      }\n    }\n    if (this.amountOfGroups === 0 || activeGroups === 0) {\n      this.hide();\n    }\n    else {\n      this.show();\n      this.height = Number(this.linegraphSVG.style.height.replace(\"px\", \"\"));\n\n      // svg offsetheight did not work in firefox and explorer...\n      this.dom.lineContainer.style.height = `${this.height}px`;\n      this.width = this.options.visible === true ? Number((`${this.options.width}`).replace(\"px\", \"\")) : 0;\n\n      const props = this.props;\n      const frame = this.dom.frame;\n\n      // update classname\n      frame.className = 'vis-data-axis';\n\n      // calculate character width and height\n      this._calculateCharSize();\n\n      const orientation = this.options.orientation;\n      const showMinorLabels = this.options.showMinorLabels;\n      const showMajorLabels = this.options.showMajorLabels;\n\n      const backgroundHorizontalOffsetWidth = this.body.dom.backgroundHorizontal.offsetWidth;\n\n      // determine the width and height of the elements for the axis\n      props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0;\n      props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0;\n\n      props.minorLineWidth = backgroundHorizontalOffsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset;\n      props.minorLineHeight = 1;\n      props.majorLineWidth = backgroundHorizontalOffsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset;\n      props.majorLineHeight = 1;\n\n      //  take frame offline while updating (is almost twice as fast)\n      if (orientation === 'left') {\n        frame.style.top = '0';\n        frame.style.left = '0';\n        frame.style.bottom = '';\n        frame.style.width = `${this.width}px`;\n        frame.style.height = `${this.height}px`;\n        this.props.width = this.body.domProps.left.width;\n        this.props.height = this.body.domProps.left.height;\n      }\n      else { // right\n        frame.style.top = '';\n        frame.style.bottom = '0';\n        frame.style.left = '0';\n        frame.style.width = `${this.width}px`;\n        frame.style.height = `${this.height}px`;\n        this.props.width = this.body.domProps.right.width;\n        this.props.height = this.body.domProps.right.height;\n      }\n\n      resized = this._redrawLabels();\n      resized = this._isResized() || resized;\n\n      if (this.options.icons === true) {\n        this._redrawGroupIcons();\n      }\n      else {\n        this._cleanupIcons();\n      }\n\n      this._redrawTitle(orientation);\n    }\n    return resized;\n  }\n\n  /**\n   * Repaint major and minor text labels and vertical grid lines\n   *\n   * @returns {boolean}\n   * @private\n   */\n  _redrawLabels() {\n    let resized = false;\n    DOMutil.prepareElements(this.DOMelements.lines);\n    DOMutil.prepareElements(this.DOMelements.labels);\n    const orientation = this.options['orientation'];\n    const customRange = this.options[orientation].range != undefined ? this.options[orientation].range : {};\n\n    //Override range with manual options:\n    let autoScaleEnd = true;\n    if (customRange.max != undefined) {\n      this.range.end = customRange.max;\n      autoScaleEnd = false;\n    }\n    let autoScaleStart = true;\n    if (customRange.min != undefined) {\n      this.range.start = customRange.min;\n      autoScaleStart = false;\n    }\n\n    this.scale = new DataScale(\n      this.range.start,\n      this.range.end,\n      autoScaleStart,\n      autoScaleEnd,\n      this.dom.frame.offsetHeight,\n      this.props.majorCharHeight,\n      this.options.alignZeros,\n      this.options[orientation].format\n    );\n\n    if (this.master === false && this.masterAxis != undefined) {\n      this.scale.followScale(this.masterAxis.scale);\n      this.dom.lineContainer.style.display = 'none';\n    } else {\n      this.dom.lineContainer.style.display = 'block';\n    }\n\n    //Is updated in side-effect of _redrawLabel():\n    this.maxLabelSize = 0;\n\n    const lines = this.scale.getLines();\n    lines.forEach(\n      line=> {\n        const y = line.y;\n        const isMajor = line.major;\n        if (this.options['showMinorLabels'] && isMajor === false) {\n          this._redrawLabel(y - 2, line.val, orientation, 'vis-y-axis vis-minor', this.props.minorCharHeight);\n        }\n        if (isMajor) {\n          if (y >= 0) {\n            this._redrawLabel(y - 2, line.val, orientation, 'vis-y-axis vis-major', this.props.majorCharHeight);\n          }\n        }\n        if (this.master === true) {\n          if (isMajor) {\n            this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-major', this.options.majorLinesOffset, this.props.majorLineWidth);\n          }\n          else {\n            this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-minor', this.options.minorLinesOffset, this.props.minorLineWidth);\n          }\n        }\n      });\n\n    // Note that title is rotated, so we're using the height, not width!\n    let titleWidth = 0;\n    if (this.options[orientation].title !== undefined && this.options[orientation].title.text !== undefined) {\n      titleWidth = this.props.titleCharHeight;\n    }\n    const offset = this.options.icons === true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15;\n\n    // this will resize the yAxis to accommodate the labels.\n    if (this.maxLabelSize > (this.width - offset) && this.options.visible === true) {\n      this.width = this.maxLabelSize + offset;\n      this.options.width = `${this.width}px`;\n      DOMutil.cleanupElements(this.DOMelements.lines);\n      DOMutil.cleanupElements(this.DOMelements.labels);\n      this.redraw();\n      resized = true;\n    }\n    // this will resize the yAxis if it is too big for the labels.\n    else if (this.maxLabelSize < (this.width - offset) && this.options.visible === true && this.width > this.minWidth) {\n      this.width = Math.max(this.minWidth, this.maxLabelSize + offset);\n      this.options.width = `${this.width}px`;\n      DOMutil.cleanupElements(this.DOMelements.lines);\n      DOMutil.cleanupElements(this.DOMelements.labels);\n      this.redraw();\n      resized = true;\n    }\n    else {\n      DOMutil.cleanupElements(this.DOMelements.lines);\n      DOMutil.cleanupElements(this.DOMelements.labels);\n      resized = false;\n    }\n\n    return resized;\n  }\n\n  /**\n   * converts value\n   * @param {number} value\n   * @returns {number} converted number\n   */\n  convertValue(value) {\n    return this.scale.convertValue(value);\n  }\n\n  /**\n   * converts value\n   * @param {number} x\n   * @returns {number} screen value\n   */\n  screenToValue(x) {\n    return this.scale.screenToValue(x);\n  }\n\n  /**\n   * Create a label for the axis at position x\n   *\n   * @param {number} y\n   * @param {string} text\n   * @param {'top'|'right'|'bottom'|'left'} orientation\n   * @param {string} className\n   * @param {number} characterHeight\n   * @private\n   */\n  _redrawLabel(y, text, orientation, className, characterHeight) {\n    // reuse redundant label\n    const label = DOMutil.getDOMElement('div', this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift();\n    label.className = className;\n    label.innerHTML = util.xss(text);\n    if (orientation === 'left') {\n      label.style.left = `-${this.options.labelOffsetX}px`;\n      label.style.textAlign = \"right\";\n    }\n    else {\n      label.style.right = `-${this.options.labelOffsetX}px`;\n      label.style.textAlign = \"left\";\n    }\n\n    label.style.top = `${y - 0.5 * characterHeight + this.options.labelOffsetY}px`;\n\n    text += '';\n\n    const largestWidth = Math.max(this.props.majorCharWidth, this.props.minorCharWidth);\n    if (this.maxLabelSize < text.length * largestWidth) {\n      this.maxLabelSize = text.length * largestWidth;\n    }\n  }\n\n  /**\n   * Create a minor line for the axis at position y\n   * @param {number} y\n   * @param {'top'|'right'|'bottom'|'left'} orientation\n   * @param {string} className\n   * @param {number} offset\n   * @param {number} width\n   */\n  _redrawLine(y, orientation, className, offset, width) {\n    if (this.master === true) {\n      const line = DOMutil.getDOMElement('div', this.DOMelements.lines, this.dom.lineContainer);  //this.dom.redundant.lines.shift();\n      line.className = className;\n      line.innerHTML = '';\n\n      if (orientation === 'left') {\n        line.style.left = `${this.width - offset}px`;\n      }\n      else {\n        line.style.right = `${this.width - offset}px`;\n      }\n\n      line.style.width = `${width}px`;\n      line.style.top = `${y}px`;\n    }\n  }\n\n  /**\n   * Create a title for the axis\n   * @private\n   * @param {'top'|'right'|'bottom'|'left'} orientation\n   */\n  _redrawTitle(orientation) {\n    DOMutil.prepareElements(this.DOMelements.title);\n\n    // Check if the title is defined for this axes\n    if (this.options[orientation].title !== undefined && this.options[orientation].title.text !== undefined) {\n      const title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame);\n      title.className = `vis-y-axis vis-title vis-${orientation}`;\n      title.innerHTML = util.xss(this.options[orientation].title.text);\n\n      // Add style - if provided\n      if (this.options[orientation].title.style !== undefined) {\n        util.addCssText(title, this.options[orientation].title.style);\n      }\n\n      if (orientation === 'left') {\n        title.style.left = `${this.props.titleCharHeight}px`;\n      }\n      else {\n        title.style.right = `${this.props.titleCharHeight}px`;\n      }\n\n      title.style.width = `${this.height}px`;\n    }\n\n    // we need to clean up in case we did not use all elements.\n    DOMutil.cleanupElements(this.DOMelements.title);\n  }\n\n  /**\n   * Determine the size of text on the axis (both major and minor axis).\n   * The size is calculated only once and then cached in this.props.\n   * @private\n   */\n  _calculateCharSize() {\n    // determine the char width and height on the minor axis\n    if (!('minorCharHeight' in this.props)) {\n      const textMinor = document.createTextNode('0');\n      const measureCharMinor = document.createElement('div');\n      measureCharMinor.className = 'vis-y-axis vis-minor vis-measure';\n      measureCharMinor.appendChild(textMinor);\n      this.dom.frame.appendChild(measureCharMinor);\n\n      this.props.minorCharHeight = measureCharMinor.clientHeight;\n      this.props.minorCharWidth = measureCharMinor.clientWidth;\n\n      this.dom.frame.removeChild(measureCharMinor);\n    }\n\n    if (!('majorCharHeight' in this.props)) {\n      const textMajor = document.createTextNode('0');\n      const measureCharMajor = document.createElement('div');\n      measureCharMajor.className = 'vis-y-axis vis-major vis-measure';\n      measureCharMajor.appendChild(textMajor);\n      this.dom.frame.appendChild(measureCharMajor);\n\n      this.props.majorCharHeight = measureCharMajor.clientHeight;\n      this.props.majorCharWidth = measureCharMajor.clientWidth;\n\n      this.dom.frame.removeChild(measureCharMajor);\n    }\n\n    if (!('titleCharHeight' in this.props)) {\n      const textTitle = document.createTextNode('0');\n      const measureCharTitle = document.createElement('div');\n      measureCharTitle.className = 'vis-y-axis vis-title vis-measure';\n      measureCharTitle.appendChild(textTitle);\n      this.dom.frame.appendChild(measureCharTitle);\n\n      this.props.titleCharHeight = measureCharTitle.clientHeight;\n      this.props.titleCharWidth = measureCharTitle.clientWidth;\n\n      this.dom.frame.removeChild(measureCharTitle);\n    }\n  }\n}\n\nexport default DataAxis;\n","import * as DOMutil from '../../../DOMutil';\n\n/**\n *\n * @param {number | string} groupId\n * @param {Object} options   // TODO: Describe options\n *\n * @constructor Points\n */\nfunction Points(groupId, options) {  // eslint-disable-line no-unused-vars\n}\n\n/**\n * draw the data points\n *\n * @param {Array} dataset\n * @param {GraphGroup} group\n * @param {Object} framework            | SVG DOM element\n * @param {number} [offset]\n */\nPoints.draw = function (dataset, group, framework, offset) {\n  offset = offset || 0;\n  var callback = getCallback(framework, group);\n\n  for (var i = 0; i < dataset.length; i++) {\n    if (!callback) {\n      // draw the point the simple way.\n      DOMutil.drawPoint(dataset[i].screen_x + offset, dataset[i].screen_y, getGroupTemplate(group), framework.svgElements, framework.svg, dataset[i].label);\n    }\n    else {\n      var callbackResult = callback(dataset[i], group); // result might be true, false or an object\n      if (callbackResult === true || typeof callbackResult === 'object') {\n        DOMutil.drawPoint(dataset[i].screen_x + offset, dataset[i].screen_y, getGroupTemplate(group, callbackResult), framework.svgElements, framework.svg, dataset[i].label);\n      }\n    }\n  }\n};\n\nPoints.drawIcon = function (group, x, y, iconWidth, iconHeight, framework) {\n  var fillHeight = iconHeight * 0.5;\n\n  var outline = DOMutil.getSVGElement(\"rect\", framework.svgElements, framework.svg);\n  outline.setAttributeNS(null, \"x\", x);\n  outline.setAttributeNS(null, \"y\", y - fillHeight);\n  outline.setAttributeNS(null, \"width\", iconWidth);\n  outline.setAttributeNS(null, \"height\", 2 * fillHeight);\n  outline.setAttributeNS(null, \"class\", \"vis-outline\");\n\n  //Don't call callback on icon\n  DOMutil.drawPoint(x + 0.5 * iconWidth, y, getGroupTemplate(group), framework.svgElements, framework.svg);\n};\n\n/**\n *\n * @param {vis.Group} group\n * @param {any} callbackResult\n * @returns {{style: *, styles: (*|string), size: *, className: *}}\n */\nfunction getGroupTemplate(group, callbackResult) {\n  callbackResult = (typeof callbackResult === 'undefined') ? {} : callbackResult;\n  return {\n    style: callbackResult.style || group.options.drawPoints.style,\n    styles: callbackResult.styles || group.options.drawPoints.styles,\n    size: callbackResult.size || group.options.drawPoints.size,\n    className: callbackResult.className || group.className\n  };\n}\n\n/**\n *\n * @param {Object} framework            | SVG DOM element\n * @param {vis.Group} group\n * @returns {function}\n */\nfunction getCallback(framework, group) {\n  var callback = undefined;\n  // check for the graph2d onRender\n  if (framework.options && framework.options.drawPoints && framework.options.drawPoints.onRender && typeof framework.options.drawPoints.onRender == 'function') {\n    callback = framework.options.drawPoints.onRender;\n  }\n\n  // override it with the group onRender if defined\n  if (group.group.options && group.group.options.drawPoints && group.group.options.drawPoints.onRender && typeof group.group.options.drawPoints.onRender == 'function') {\n    callback = group.group.options.drawPoints.onRender;\n  }\n  return callback;\n}\n\nexport default Points;\n","import * as DOMutil from '../../../DOMutil';\nimport Points from './points';\n\n/**\n *\n * @param {vis.GraphGroup.id} groupId\n * @param {Object} options   // TODO: Describe options\n * @constructor Bargraph\n */\nfunction Bargraph(groupId, options) {  // eslint-disable-line no-unused-vars\n}\n\nBargraph.drawIcon = function (group, x, y, iconWidth, iconHeight, framework) {\n  var fillHeight = iconHeight * 0.5;\n  var outline = DOMutil.getSVGElement(\"rect\", framework.svgElements, framework.svg);\n  outline.setAttributeNS(null, \"x\", x);\n  outline.setAttributeNS(null, \"y\", y - fillHeight);\n  outline.setAttributeNS(null, \"width\", iconWidth);\n  outline.setAttributeNS(null, \"height\", 2 * fillHeight);\n  outline.setAttributeNS(null, \"class\", \"vis-outline\");\n\n  var barWidth = Math.round(0.3 * iconWidth);\n  var originalWidth = group.options.barChart.width;\n  var scale = originalWidth / barWidth;\n  var bar1Height = Math.round(0.4 * iconHeight);\n  var bar2Height = Math.round(0.75 * iconHeight);\n\n  var offset = Math.round((iconWidth - (2 * barWidth)) / 3);\n\n  DOMutil.drawBar(x + 0.5 * barWidth + offset, y + fillHeight - bar1Height - 1, barWidth, bar1Height, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style);\n  DOMutil.drawBar(x + 1.5 * barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style);\n\n  if (group.options.drawPoints.enabled == true) {\n    var groupTemplate = {\n      style: group.options.drawPoints.style,\n      styles: group.options.drawPoints.styles,\n      size: (group.options.drawPoints.size / scale),\n      className: group.className\n    };\n    DOMutil.drawPoint(x + 0.5 * barWidth + offset, y + fillHeight - bar1Height - 1, groupTemplate, framework.svgElements, framework.svg);\n    DOMutil.drawPoint(x + 1.5 * barWidth + offset + 2, y + fillHeight - bar2Height - 1, groupTemplate, framework.svgElements, framework.svg);\n  }\n};\n\n/**\n * draw a bar graph\n *\n * @param {Array.<vis.GraphGroup.id>} groupIds\n * @param {Object} processedGroupData\n * @param {{svg: Object, svgElements: Array.<Object>, options: Object, groups: Array.<vis.Group>}} framework\n */\nBargraph.draw = function (groupIds, processedGroupData, framework) {\n  var combinedData = [];\n  var intersections = {};\n  var coreDistance;\n  var key, drawData;\n  var group;\n  var i, j;\n  var barPoints = 0;\n\n  // combine all barchart data\n  for (i = 0; i < groupIds.length; i++) {\n    group = framework.groups[groupIds[i]];\n    if (group.options.style === 'bar') {\n      if (group.visible === true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] === true)) {\n        for (j = 0; j < processedGroupData[groupIds[i]].length; j++) {\n          combinedData.push({\n            screen_x: processedGroupData[groupIds[i]][j].screen_x,\n            screen_end: processedGroupData[groupIds[i]][j].screen_end,\n            screen_y: processedGroupData[groupIds[i]][j].screen_y,\n            x: processedGroupData[groupIds[i]][j].x,\n            end: processedGroupData[groupIds[i]][j].end,\n            y: processedGroupData[groupIds[i]][j].y,\n            groupId: groupIds[i],\n            label: processedGroupData[groupIds[i]][j].label\n          });\n          barPoints += 1;\n        }\n      }\n    }\n  }\n\n  if (barPoints === 0) {\n    return;\n  }\n\n  // sort by time and by group\n  combinedData.sort(function (a, b) {\n    if (a.screen_x === b.screen_x) {\n      return a.groupId < b.groupId ? -1 : 1;\n    }\n    else {\n      return a.screen_x - b.screen_x;\n    }\n  });\n\n  // get intersections\n  Bargraph._getDataIntersections(intersections, combinedData);\n\n  // plot barchart\n  for (i = 0; i < combinedData.length; i++) {\n    group = framework.groups[combinedData[i].groupId];\n    var minWidth = group.options.barChart.minWidth != undefined ? group.options.barChart.minWidth : 0.1 * group.options.barChart.width;\n\n    key = combinedData[i].screen_x;\n    var heightOffset = 0;\n    if (intersections[key] === undefined) {\n      if (i + 1 < combinedData.length) {\n        coreDistance = Math.abs(combinedData[i + 1].screen_x - key);\n      }\n      drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth);\n    }\n    else {\n      var nextKey = i + (intersections[key].amount - intersections[key].resolved);\n      if (nextKey < combinedData.length) {\n        coreDistance = Math.abs(combinedData[nextKey].screen_x - key);\n      }\n      drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth);\n      intersections[key].resolved += 1;\n\n      if (group.options.stack === true && group.options.excludeFromStacking !== true) {\n        if (combinedData[i].screen_y < group.zeroPosition) {\n          heightOffset = intersections[key].accumulatedNegative;\n          intersections[key].accumulatedNegative += group.zeroPosition - combinedData[i].screen_y;\n        }\n        else {\n          heightOffset = intersections[key].accumulatedPositive;\n          intersections[key].accumulatedPositive += group.zeroPosition - combinedData[i].screen_y;\n        }\n      }\n      else if (group.options.barChart.sideBySide === true) {\n        drawData.width = drawData.width / intersections[key].amount;\n        drawData.offset += (intersections[key].resolved) * drawData.width - (0.5 * drawData.width * (intersections[key].amount + 1));\n      }\n    }\n    \n    let dataWidth = drawData.width;\n    let start = combinedData[i].screen_x;\n\n    // are we drawing explicit boxes? (we supplied an end value)\n    if (combinedData[i].screen_end != undefined){\n      dataWidth = combinedData[i].screen_end - combinedData[i].screen_x;\n      start += (dataWidth * 0.5);\n    }\n    else {\n      start += drawData.offset\n    }\n\n    DOMutil.drawBar(start, combinedData[i].screen_y - heightOffset, dataWidth, group.zeroPosition - combinedData[i].screen_y, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style);\n\n    // draw points\n    if (group.options.drawPoints.enabled === true) {\n      let pointData = {\n        screen_x: combinedData[i].screen_x,\n        screen_y: combinedData[i].screen_y - heightOffset,\n        x: combinedData[i].x,\n        y: combinedData[i].y,\n        groupId: combinedData[i].groupId,\n        label: combinedData[i].label\n      };\n      Points.draw([pointData], group, framework, drawData.offset);\n      //DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg);\n    }\n  }\n};\n\n\n/**\n * Fill the intersections object with counters of how many datapoints share the same x coordinates\n * @param {Object} intersections\n * @param {Array.<Object>} combinedData\n * @private\n */\nBargraph._getDataIntersections = function (intersections, combinedData) {\n  // get intersections\n  var coreDistance;\n  for (var i = 0; i < combinedData.length; i++) {\n    if (i + 1 < combinedData.length) {\n      coreDistance = Math.abs(combinedData[i + 1].screen_x - combinedData[i].screen_x);\n    }\n    if (i > 0) {\n      coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].screen_x - combinedData[i].screen_x));\n    }\n    if (coreDistance === 0) {\n      if (intersections[combinedData[i].screen_x] === undefined) {\n        intersections[combinedData[i].screen_x] = {\n          amount: 0,\n          resolved: 0,\n          accumulatedPositive: 0,\n          accumulatedNegative: 0\n        };\n      }\n      intersections[combinedData[i].screen_x].amount += 1;\n    }\n  }\n};\n\n\n/**\n * Get the width and offset for bargraphs based on the coredistance between datapoints\n *\n * @param {number} coreDistance\n * @param {vis.Group} group\n * @param {number} minWidth\n * @returns {{width: number, offset: number}}\n * @private\n */\nBargraph._getSafeDrawData = function (coreDistance, group, minWidth) {\n  var width, offset;\n  if (coreDistance < group.options.barChart.width && coreDistance > 0) {\n    width = coreDistance < minWidth ? minWidth : coreDistance\n\n    offset = 0; // recalculate offset with the new width;\n    if (group.options.barChart.align === 'left') {\n      offset -= 0.5 * coreDistance;\n    }\n    else if (group.options.barChart.align === 'right') {\n      offset += 0.5 * coreDistance;\n    }\n  }\n  else {\n    // default settings\n    width = group.options.barChart.width;\n    offset = 0;\n    if (group.options.barChart.align === 'left') {\n      offset -= 0.5 * group.options.barChart.width;\n    }\n    else if (group.options.barChart.align === 'right') {\n      offset += 0.5 * group.options.barChart.width;\n    }\n  }\n\n  return {width: width, offset: offset};\n};\n\nBargraph.getStackedYRange = function (combinedData, groupRanges, groupIds, groupLabel, orientation) {\n  if (combinedData.length > 0) {\n    // sort by time and by group\n    combinedData.sort(function (a, b) {\n      if (a.screen_x === b.screen_x) {\n        return a.groupId < b.groupId ? -1 : 1;\n      }\n      else {\n        return a.screen_x - b.screen_x;\n      }\n    });\n    var intersections = {};\n\n    Bargraph._getDataIntersections(intersections, combinedData);\n    groupRanges[groupLabel] = Bargraph._getStackedYRange(intersections, combinedData);\n    groupRanges[groupLabel].yAxisOrientation = orientation;\n    groupIds.push(groupLabel);\n  }\n};\n\nBargraph._getStackedYRange = function (intersections, combinedData) {\n  var key;\n  var yMin = combinedData[0].screen_y;\n  var yMax = combinedData[0].screen_y;\n  for (var i = 0; i < combinedData.length; i++) {\n    key = combinedData[i].screen_x;\n    if (intersections[key] === undefined) {\n      yMin = yMin > combinedData[i].screen_y ? combinedData[i].screen_y : yMin;\n      yMax = yMax < combinedData[i].screen_y ? combinedData[i].screen_y : yMax;\n    }\n    else {\n      if (combinedData[i].screen_y < 0) {\n        intersections[key].accumulatedNegative += combinedData[i].screen_y;\n      }\n      else {\n        intersections[key].accumulatedPositive += combinedData[i].screen_y;\n      }\n    }\n  }\n  for (var xpos in intersections) {\n    if (intersections.hasOwnProperty(xpos)) {\n      yMin = yMin > intersections[xpos].accumulatedNegative ? intersections[xpos].accumulatedNegative : yMin;\n      yMin = yMin > intersections[xpos].accumulatedPositive ? intersections[xpos].accumulatedPositive : yMin;\n      yMax = yMax < intersections[xpos].accumulatedNegative ? intersections[xpos].accumulatedNegative : yMax;\n      yMax = yMax < intersections[xpos].accumulatedPositive ? intersections[xpos].accumulatedPositive : yMax;\n    }\n  }\n\n  return {min: yMin, max: yMax};\n};\n\nexport default Bargraph;","import * as DOMutil from '../../../DOMutil';\n\n/**\n *\n * @param {vis.GraphGroup.id} groupId\n * @param {Object} options   // TODO: Describe options\n * @constructor Line\n */\nfunction Line(groupId, options) {  // eslint-disable-line no-unused-vars\n}\n\nLine.calcPath = function (dataset, group) {\n    if (dataset != null) {\n        if (dataset.length > 0) {\n            var d = [];\n\n            // construct path from dataset\n            if (group.options.interpolation.enabled == true) {\n                d = Line._catmullRom(dataset, group);\n            }\n            else {\n                d = Line._linear(dataset);\n            }\n            return d;\n        }\n    }\n};\n\nLine.drawIcon = function (group, x, y, iconWidth, iconHeight, framework) {\n    var fillHeight = iconHeight * 0.5;\n    var path, fillPath;\n\n    var outline = DOMutil.getSVGElement(\"rect\", framework.svgElements, framework.svg);\n    outline.setAttributeNS(null, \"x\", x);\n    outline.setAttributeNS(null, \"y\", y - fillHeight);\n    outline.setAttributeNS(null, \"width\", iconWidth);\n    outline.setAttributeNS(null, \"height\", 2 * fillHeight);\n    outline.setAttributeNS(null, \"class\", \"vis-outline\");\n\n    path = DOMutil.getSVGElement(\"path\", framework.svgElements, framework.svg);\n    path.setAttributeNS(null, \"class\", group.className);\n    if (group.style !== undefined) {\n        path.setAttributeNS(null, \"style\", group.style);\n    }\n\n    path.setAttributeNS(null, \"d\", \"M\" + x + \",\" + y + \" L\" + (x + iconWidth) + \",\" + y + \"\");\n    if (group.options.shaded.enabled == true) {\n        fillPath = DOMutil.getSVGElement(\"path\", framework.svgElements, framework.svg);\n        if (group.options.shaded.orientation == 'top') {\n            fillPath.setAttributeNS(null, \"d\", \"M\" + x + \", \" + (y - fillHeight) +\n              \"L\" + x + \",\" + y + \" L\" + (x + iconWidth) + \",\" + y + \" L\" + (x + iconWidth) + \",\" + (y - fillHeight));\n        }\n        else {\n            fillPath.setAttributeNS(null, \"d\", \"M\" + x + \",\" + y + \" \" +\n              \"L\" + x + \",\" + (y + fillHeight) + \" \" +\n              \"L\" + (x + iconWidth) + \",\" + (y + fillHeight) +\n              \"L\" + (x + iconWidth) + \",\" + y);\n        }\n        fillPath.setAttributeNS(null, \"class\", group.className + \" vis-icon-fill\");\n        if (group.options.shaded.style !== undefined && group.options.shaded.style !== \"\") {\n            fillPath.setAttributeNS(null, \"style\", group.options.shaded.style);\n        }\n    }\n\n    if (group.options.drawPoints.enabled == true) {\n        var groupTemplate = {\n            style: group.options.drawPoints.style,\n            styles: group.options.drawPoints.styles,\n            size: group.options.drawPoints.size,\n            className: group.className\n        };\n        DOMutil.drawPoint(x + 0.5 * iconWidth, y, groupTemplate, framework.svgElements, framework.svg);\n    }\n};\n\nLine.drawShading = function (pathArray, group, subPathArray, framework) {\n    // append shading to the path\n    if (group.options.shaded.enabled == true) {\n        var svgHeight = Number(framework.svg.style.height.replace('px',''));\n        var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg);\n        var type = \"L\";\n        if (group.options.interpolation.enabled == true){\n            type = \"C\";\n        }\n        var dFill;\n        var zero = 0;\n        if (group.options.shaded.orientation == 'top') {\n            zero = 0;\n        }\n        else if (group.options.shaded.orientation == 'bottom') {\n            zero = svgHeight;\n        }\n        else {\n            zero = Math.min(Math.max(0, group.zeroPosition), svgHeight);\n        }\n        if (group.options.shaded.orientation == 'group' && (subPathArray != null && subPathArray != undefined)) {\n            dFill = 'M' + pathArray[0][0]+ \",\"+pathArray[0][1] + \" \" +\n                    this.serializePath(pathArray,type,false) +\n                    ' L'+ subPathArray[subPathArray.length-1][0]+ \",\" + subPathArray[subPathArray.length-1][1] + \" \" +\n                    this.serializePath(subPathArray,type,true) +\n                    subPathArray[0][0]+ \",\"+subPathArray[0][1] + \" Z\";\n        }\n        else {\n            dFill = 'M' + pathArray[0][0]+ \",\"+pathArray[0][1] + \" \" +\n                    this.serializePath(pathArray,type,false) +\n                    ' V' + zero + ' H'+ pathArray[0][0] + \" Z\";\n        }\n\n        fillPath.setAttributeNS(null, 'class', group.className + ' vis-fill');\n        if (group.options.shaded.style !== undefined) {\n            fillPath.setAttributeNS(null, 'style', group.options.shaded.style);\n        }\n        fillPath.setAttributeNS(null, 'd', dFill);\n    }\n};\n\n/**\n * draw a line graph\n *\n * @param {Array.<Object>} pathArray\n * @param {vis.Group} group\n * @param {{svg: Object, svgElements: Array.<Object>, options: Object, groups: Array.<vis.Group>}} framework\n */\nLine.draw = function (pathArray, group, framework) {\n    if (pathArray != null && pathArray != undefined) {\n        var path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg);\n        path.setAttributeNS(null, \"class\", group.className);\n        if (group.style !== undefined) {\n            path.setAttributeNS(null, \"style\", group.style);\n        }\n\n        var type = \"L\";\n        if (group.options.interpolation.enabled == true){\n            type = \"C\";\n        }\n        // copy properties to path for drawing.\n        path.setAttributeNS(null, 'd', 'M' + pathArray[0][0]+ \",\"+pathArray[0][1] + \" \" + this.serializePath(pathArray,type,false));\n    }\n};\n\nLine.serializePath = function(pathArray,type,inverse){\n    if (pathArray.length < 2){\n        //Too little data to create a path.\n        return \"\";\n    }\n    var d = type;\n    var i;\n    if (inverse){\n        for (i = pathArray.length-2; i > 0; i--){\n            d += pathArray[i][0] + \",\" + pathArray[i][1] + \" \";\n        }\n    }\n    else {\n        for (i = 1; i < pathArray.length; i++){\n            d += pathArray[i][0] + \",\" + pathArray[i][1] + \" \";\n        }\n    }\n    return d;\n};\n\n/**\n * This uses an uniform parametrization of the interpolation algorithm:\n * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al.\n * @param {Array.<Object>} data\n * @returns {string}\n * @private\n */\nLine._catmullRomUniform = function (data) {\n    // catmull rom\n    var p0, p1, p2, p3, bp1, bp2;\n    var d = [];\n    d.push( [ Math.round(data[0].screen_x) , Math.round(data[0].screen_y) ]);\n    var normalization = 1 / 6;\n    var length = data.length;\n    for (var i = 0; i < length - 1; i++) {\n\n        p0 = (i == 0) ? data[0] : data[i - 1];\n        p1 = data[i];\n        p2 = data[i + 1];\n        p3 = (i + 2 < length) ? data[i + 2] : p2;\n\n\n        // Catmull-Rom to Cubic Bezier conversion matrix\n        //    0       1       0       0\n        //  -1/6      1      1/6      0\n        //    0      1/6      1     -1/6\n        //    0       0       1       0\n\n        //    bp0 = { x: p1.x,                               y: p1.y };\n        bp1 = {\n            screen_x: ((-p0.screen_x + 6 * p1.screen_x + p2.screen_x) * normalization),\n            screen_y: ((-p0.screen_y + 6 * p1.screen_y + p2.screen_y) * normalization)\n        };\n        bp2 = {\n            screen_x: (( p1.screen_x + 6 * p2.screen_x - p3.screen_x) * normalization),\n            screen_y: (( p1.screen_y + 6 * p2.screen_y - p3.screen_y) * normalization)\n        };\n        //    bp0 = { x: p2.x,                               y: p2.y };\n\n        d.push( [ bp1.screen_x , bp1.screen_y ]);\n        d.push( [ bp2.screen_x , bp2.screen_y ]);\n        d.push( [ p2.screen_x  , p2.screen_y  ]);\n    }\n\n    return d;\n};\n\n/**\n * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm.\n * By default, the centripetal parameterization is used because this gives the nicest results.\n * These parameterizations are relatively heavy because the distance between 4 points have to be calculated.\n *\n * One optimization can be used to reuse distances since this is a sliding window approach.\n * @param {Array.<Object>} data\n * @param {vis.GraphGroup} group\n * @returns {string}\n * @private\n */\nLine._catmullRom = function (data, group) {\n    var alpha = group.options.interpolation.alpha;\n    if (alpha == 0 || alpha === undefined) {\n        return this._catmullRomUniform(data);\n    }\n    else {\n        var p0, p1, p2, p3, bp1, bp2, d1, d2, d3, A, B, N, M;\n        var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA;\n        var d = [];\n        d.push( [ Math.round(data[0].screen_x) , Math.round(data[0].screen_y) ]);\n        var length = data.length;\n        for (var i = 0; i < length - 1; i++) {\n\n            p0 = (i == 0) ? data[0] : data[i - 1];\n            p1 = data[i];\n            p2 = data[i + 1];\n            p3 = (i + 2 < length) ? data[i + 2] : p2;\n\n            d1 = Math.sqrt(Math.pow(p0.screen_x - p1.screen_x, 2) + Math.pow(p0.screen_y - p1.screen_y, 2));\n            d2 = Math.sqrt(Math.pow(p1.screen_x - p2.screen_x, 2) + Math.pow(p1.screen_y - p2.screen_y, 2));\n            d3 = Math.sqrt(Math.pow(p2.screen_x - p3.screen_x, 2) + Math.pow(p2.screen_y - p3.screen_y, 2));\n\n            // Catmull-Rom to Cubic Bezier conversion matrix\n\n            // A = 2d1^2a + 3d1^a * d2^a + d3^2a\n            // B = 2d3^2a + 3d3^a * d2^a + d2^2a\n\n            // [   0             1            0          0          ]\n            // [   -d2^2a /N     A/N          d1^2a /N   0          ]\n            // [   0             d3^2a /M     B/M        -d2^2a /M  ]\n            // [   0             0            1          0          ]\n\n            d3powA = Math.pow(d3, alpha);\n            d3pow2A = Math.pow(d3, 2 * alpha);\n            d2powA = Math.pow(d2, alpha);\n            d2pow2A = Math.pow(d2, 2 * alpha);\n            d1powA = Math.pow(d1, alpha);\n            d1pow2A = Math.pow(d1, 2 * alpha);\n\n            A = 2 * d1pow2A + 3 * d1powA * d2powA + d2pow2A;\n            B = 2 * d3pow2A + 3 * d3powA * d2powA + d2pow2A;\n            N = 3 * d1powA * (d1powA + d2powA);\n            if (N > 0) {\n                N = 1 / N;\n            }\n            M = 3 * d3powA * (d3powA + d2powA);\n            if (M > 0) {\n                M = 1 / M;\n            }\n\n            bp1 = {\n                screen_x: ((-d2pow2A * p0.screen_x + A * p1.screen_x + d1pow2A * p2.screen_x) * N),\n                screen_y: ((-d2pow2A * p0.screen_y + A * p1.screen_y + d1pow2A * p2.screen_y) * N)\n            };\n\n            bp2 = {\n                screen_x: (( d3pow2A * p1.screen_x + B * p2.screen_x - d2pow2A * p3.screen_x) * M),\n                screen_y: (( d3pow2A * p1.screen_y + B * p2.screen_y - d2pow2A * p3.screen_y) * M)\n            };\n\n            if (bp1.screen_x == 0 && bp1.screen_y == 0) {\n                bp1 = p1;\n            }\n            if (bp2.screen_x == 0 && bp2.screen_y == 0) {\n                bp2 = p2;\n            }\n            d.push( [ bp1.screen_x , bp1.screen_y ]);\n            d.push( [ bp2.screen_x , bp2.screen_y ]);\n            d.push( [ p2.screen_x  , p2.screen_y  ]);\n        }\n\n        return d;\n    }\n};\n\n/**\n * this generates the SVG path for a linear drawing between datapoints.\n * @param {Array.<Object>} data\n * @returns {string}\n * @private\n */\nLine._linear = function (data) {\n    // linear\n    var d = [];\n    for (var i = 0; i < data.length; i++) {\n        d.push([ data[i].screen_x , data[i].screen_y ]);\n    }\n    return d;\n};\n\nexport default Line;\n","import util from '../../util';\nimport Bars from './graph2d_types/bar';\nimport Lines from './graph2d_types/line';\nimport Points from './graph2d_types/points';\n\n/**\n * /**\n * @param {object} group            | the object of the group from the dataset\n * @param {string} groupId          | ID of the group\n * @param {object} options          | the default options\n * @param {array} groupsUsingDefaultStyles  | this array has one entree.\n *                                            It is passed as an array so it is passed by reference.\n *                                            It enumerates through the default styles\n * @constructor GraphGroup\n */\nfunction GraphGroup(group, groupId, options, groupsUsingDefaultStyles) {\n  this.id = groupId;\n  var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'drawPoints', 'shaded', 'interpolation', 'zIndex','excludeFromStacking', 'excludeFromLegend'];\n  this.options = util.selectiveBridgeObject(fields, options);\n  this.usingDefaultStyle = group.className === undefined;\n  this.groupsUsingDefaultStyles = groupsUsingDefaultStyles;\n  this.zeroPosition = 0;\n  this.update(group);\n  if (this.usingDefaultStyle == true) {\n    this.groupsUsingDefaultStyles[0] += 1;\n  }\n  this.itemsData = [];\n  this.visible = group.visible === undefined ? true : group.visible;\n}\n\n/**\n * this loads a reference to all items in this group into this group.\n * @param {array} items\n */\nGraphGroup.prototype.setItems = function (items) {\n  if (items != null) {\n    this.itemsData = items;\n    if (this.options.sort == true) {\n      util.insertSort(this.itemsData,function (a, b) {\n        return a.x > b.x ? 1 : -1;\n      });\n    }\n  }\n  else {\n    this.itemsData = [];\n  }\n};\n\nGraphGroup.prototype.getItems = function () {\n  return this.itemsData;\n};\n\n/**\n * this is used for barcharts and shading, this way, we only have to calculate it once.\n * @param {number} pos\n */\nGraphGroup.prototype.setZeroPosition = function (pos) {\n  this.zeroPosition = pos;\n};\n\n/**\n * set the options of the graph group over the default options.\n * @param {Object} options\n */\nGraphGroup.prototype.setOptions = function (options) {\n  if (options !== undefined) {\n    var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'zIndex','excludeFromStacking', 'excludeFromLegend'];\n    util.selectiveDeepExtend(fields, this.options, options);\n\n    // if the group's drawPoints is a function delegate the callback to the onRender property\n    if (typeof options.drawPoints == 'function') {\n      options.drawPoints = {\n        onRender: options.drawPoints\n      }\n    }\n\n    util.mergeOptions(this.options, options, 'interpolation');\n    util.mergeOptions(this.options, options, 'drawPoints');\n    util.mergeOptions(this.options, options, 'shaded');\n\n    if (options.interpolation) {\n      if (typeof options.interpolation == 'object') {\n        if (options.interpolation.parametrization) {\n          if (options.interpolation.parametrization == 'uniform') {\n            this.options.interpolation.alpha = 0;\n          }\n          else if (options.interpolation.parametrization == 'chordal') {\n            this.options.interpolation.alpha = 1.0;\n          }\n          else {\n            this.options.interpolation.parametrization = 'centripetal';\n            this.options.interpolation.alpha = 0.5;\n          }\n        }\n      }\n    }\n  }\n};\n\n\n/**\n * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph\n * @param {vis.Group} group\n */\nGraphGroup.prototype.update = function (group) {\n  this.group = group;\n  this.content = group.content || 'graph';\n  this.className = group.className || this.className || 'vis-graph-group' + this.groupsUsingDefaultStyles[0] % 10;\n  this.visible = group.visible === undefined ? true : group.visible;\n  this.style = group.style;\n  this.setOptions(group.options);\n};\n\n/**\n * return the legend entree for this group.\n *\n * @param {number} iconWidth\n * @param {number} iconHeight\n * @param {{svg: (*|Element), svgElements: Object, options: Object, groups: Array.<Object>}} framework\n * @param {number} x\n * @param {number} y\n * @returns {{icon: (*|Element), label: (*|string), orientation: *}}\n */\nGraphGroup.prototype.getLegend = function (iconWidth, iconHeight, framework, x, y) {\n  if (framework == undefined || framework == null) {\n    var svg = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n    framework = {svg: svg, svgElements:{}, options: this.options, groups: [this]}\n  }\n  if (x == undefined || x == null){\n    x = 0;\n  }\n  if (y == undefined || y == null){\n    y = 0.5 * iconHeight;\n  }\n  switch (this.options.style){\n    case \"line\":\n      Lines.drawIcon(this, x, y, iconWidth, iconHeight, framework);\n      break;\n    case \"points\": //explicit no break\n    case \"point\":\n      Points.drawIcon(this, x, y, iconWidth, iconHeight, framework);\n      break;\n    case \"bar\":\n      Bars.drawIcon(this, x, y, iconWidth, iconHeight, framework);\n      break;\n  }\n  return {icon: framework.svg, label: this.content, orientation: this.options.yAxisOrientation};\n};\n\nGraphGroup.prototype.getYRange = function (groupData) {\n  var yMin = groupData[0].y;\n  var yMax = groupData[0].y;\n  for (var j = 0; j < groupData.length; j++) {\n    yMin = yMin > groupData[j].y ? groupData[j].y : yMin;\n    yMax = yMax < groupData[j].y ? groupData[j].y : yMax;\n  }\n  return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation};\n};\n\nexport default GraphGroup;\n","import util from '../../util';\nimport * as DOMutil from '../../DOMutil';\nimport Component from './Component';\n\n/**\n * Legend for Graph2d\n *\n * @param {vis.Graph2d.body} body\n * @param {vis.Graph2d.options} options\n * @param {number} side\n * @param {vis.LineGraph.options} linegraphOptions\n * @constructor Legend\n * @extends Component\n */\nfunction Legend(body, options, side, linegraphOptions) {\n  this.body = body;\n  this.defaultOptions = {\n    enabled: false,\n    icons: true,\n    iconSize: 20,\n    iconSpacing: 6,\n    left: {\n      visible: true,\n      position: 'top-left' // top/bottom - left,center,right\n    },\n    right: {\n      visible: true,\n      position: 'top-right' // top/bottom - left,center,right\n    }\n  };\n\n  this.side = side;\n  this.options = util.extend({}, this.defaultOptions);\n  this.linegraphOptions = linegraphOptions;\n\n  this.svgElements = {};\n  this.dom = {};\n  this.groups = {};\n  this.amountOfGroups = 0;\n  this._create();\n  this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups};\n\n  this.setOptions(options);\n}\n\nLegend.prototype = new Component();\n\nLegend.prototype.clear = function() {\n  this.groups = {};\n  this.amountOfGroups = 0;\n};\n\nLegend.prototype.addGroup = function(label, graphOptions) {\n\n  // Include a group only if the group option 'excludeFromLegend: false' is not set.\n  if (graphOptions.options.excludeFromLegend != true) {\n    if (!this.groups.hasOwnProperty(label)) {\n      this.groups[label] = graphOptions;\n    }\n    this.amountOfGroups += 1;\n  }\n};\n\nLegend.prototype.updateGroup = function(label, graphOptions) {\n  this.groups[label] = graphOptions;\n};\n\nLegend.prototype.removeGroup = function(label) {\n  if (this.groups.hasOwnProperty(label)) {\n    delete this.groups[label];\n    this.amountOfGroups -= 1;\n  }\n};\n\nLegend.prototype._create = function() {\n  this.dom.frame = document.createElement('div');\n  this.dom.frame.className = 'vis-legend';\n  this.dom.frame.style.position = \"absolute\";\n  this.dom.frame.style.top = \"10px\";\n  this.dom.frame.style.display = \"block\";\n\n  this.dom.textArea = document.createElement('div');\n  this.dom.textArea.className = 'vis-legend-text';\n  this.dom.textArea.style.position = \"relative\";\n  this.dom.textArea.style.top = \"0px\";\n\n  this.svg = document.createElementNS('http://www.w3.org/2000/svg',\"svg\");\n  this.svg.style.position = 'absolute';\n  this.svg.style.top = 0 +'px';\n  this.svg.style.width = this.options.iconSize + 5 + 'px';\n  this.svg.style.height = '100%';\n\n  this.dom.frame.appendChild(this.svg);\n  this.dom.frame.appendChild(this.dom.textArea);\n};\n\n/**\n * Hide the component from the DOM\n */\nLegend.prototype.hide = function() {\n  // remove the frame containing the items\n  if (this.dom.frame.parentNode) {\n    this.dom.frame.parentNode.removeChild(this.dom.frame);\n  }\n};\n\n/**\n * Show the component in the DOM (when not already visible).\n */\nLegend.prototype.show = function() {\n  // show frame containing the items\n  if (!this.dom.frame.parentNode) {\n    this.body.dom.center.appendChild(this.dom.frame);\n  }\n};\n\nLegend.prototype.setOptions = function(options) {\n  var fields = ['enabled','orientation','icons','left','right'];\n  util.selectiveDeepExtend(fields, this.options, options);\n};\n\nLegend.prototype.redraw = function() {\n  var activeGroups = 0;\n  var groupArray = Object.keys(this.groups);\n  groupArray.sort(function (a,b) {\n    return (a < b ? -1 : 1);\n  })\n\n  for (var i = 0; i < groupArray.length; i++) {\n    var groupId = groupArray[i];\n    if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) {\n      activeGroups++;\n    }\n  }\n\n  if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) {\n    this.hide();\n  }\n  else {\n    this.show();\n    if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') {\n      this.dom.frame.style.left = '4px';\n      this.dom.frame.style.textAlign = \"left\";\n      this.dom.textArea.style.textAlign = \"left\";\n      this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px';\n      this.dom.textArea.style.right = '';\n      this.svg.style.left = 0 +'px';\n      this.svg.style.right = '';\n    }\n    else {\n      this.dom.frame.style.right = '4px';\n      this.dom.frame.style.textAlign = \"right\";\n      this.dom.textArea.style.textAlign = \"right\";\n      this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px';\n      this.dom.textArea.style.left = '';\n      this.svg.style.right = 0 +'px';\n      this.svg.style.left = '';\n    }\n\n    if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') {\n      this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace(\"px\",\"\")) + 'px';\n      this.dom.frame.style.bottom = '';\n    }\n    else {\n      var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height;\n      this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace(\"px\",\"\")) + 'px';\n      this.dom.frame.style.top = '';\n    }\n\n    if (this.options.icons == false) {\n      this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px';\n      this.dom.textArea.style.right = '';\n      this.dom.textArea.style.left = '';\n      this.svg.style.width = '0px';\n    }\n    else {\n      this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px'\n      this.drawLegendIcons();\n    }\n\n    var content = '';\n    for (i = 0; i < groupArray.length; i++) {\n      groupId = groupArray[i];\n      if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) {\n        content += this.groups[groupId].content + '<br />';\n      }\n    }\n    this.dom.textArea.innerHTML = util.xss(content);\n    this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px';\n  }\n};\n\nLegend.prototype.drawLegendIcons = function() {\n  if (this.dom.frame.parentNode) {\n    var groupArray = Object.keys(this.groups);\n    groupArray.sort(function (a,b) {\n      return (a < b ? -1 : 1);\n    });\n\n    // this resets the elements so the order is maintained\n    DOMutil.resetElements(this.svgElements);\n\n    var padding = window.getComputedStyle(this.dom.frame).paddingTop;\n    var iconOffset = Number(padding.replace('px',''));\n    var x = iconOffset;\n    var iconWidth = this.options.iconSize;\n    var iconHeight = 0.75 * this.options.iconSize;\n    var y = iconOffset + 0.5 * iconHeight + 3;\n\n    this.svg.style.width = iconWidth + 5 + iconOffset + 'px';\n\n    for (var i = 0; i < groupArray.length; i++) {\n      var groupId = groupArray[i];\n      if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) {\n        this.groups[groupId].getLegend(iconWidth, iconHeight, this.framework, x, y);\n        y += iconHeight + this.options.iconSpacing;\n      }\n    }\n  }\n};\n\nexport default Legend;\n","import util, { typeCoerceDataSet, randomUUID, isDataViewLike } from '../../util';\nimport * as DOMutil from '../../DOMutil';\nimport { DataSet, DataView } from 'vis-data/esnext';\nimport Component from './Component';\nimport DataAxis from './DataAxis';\nimport GraphGroup from './GraphGroup';\nimport Legend from './Legend';\nimport Bars from './graph2d_types/bar';\nimport Lines from './graph2d_types/line';\nimport Points from './graph2d_types/points';\n\nvar UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items\n\n/**\n * This is the constructor of the LineGraph. It requires a Timeline body and options.\n *\n * @param {vis.Timeline.body} body\n * @param {Object} options\n * @constructor LineGraph\n * @extends Component\n */\nfunction LineGraph(body, options) {\n  this.id = randomUUID();\n  this.body = body;\n\n  this.defaultOptions = {\n    yAxisOrientation: 'left',\n    defaultGroup: 'default',\n    sort: true,\n    sampling: true,\n    stack: false,\n    graphHeight: '400px',\n    shaded: {\n      enabled: false,\n      orientation: 'bottom' // top, bottom, zero\n    },\n    style: 'line', // line, bar\n    barChart: {\n      width: 50,\n      sideBySide: false,\n      align: 'center' // left, center, right\n    },\n    interpolation: {\n      enabled: true,\n      parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5)\n      alpha: 0.5\n    },\n    drawPoints: {\n      enabled: true,\n      size: 6,\n      style: 'square' // square, circle\n    },\n    dataAxis: {}, //Defaults are done on DataAxis level\n    legend: {}, //Defaults are done on Legend level\n    groups: {\n      visibility: {}\n    }\n  };\n\n  // options is shared by this lineGraph and all its items\n  this.options = util.extend({}, this.defaultOptions);\n  this.dom = {};\n  this.props = {};\n  this.hammer = null;\n  this.groups = {};\n  this.abortedGraphUpdate = false;\n  this.updateSVGheight = false;\n  this.updateSVGheightOnResize = false;\n  this.forceGraphUpdate = true;\n\n  var me = this;\n  this.itemsData = null;    // DataSet\n  this.groupsData = null;   // DataSet\n\n  // listeners for the DataSet of the items\n  this.itemListeners = {\n    'add': function (event, params, senderId) {  // eslint-disable-line no-unused-vars\n      me._onAdd(params.items);\n    },\n    'update': function (event, params, senderId) {  // eslint-disable-line no-unused-vars\n      me._onUpdate(params.items);\n    },\n    'remove': function (event, params, senderId) {  // eslint-disable-line no-unused-vars\n      me._onRemove(params.items);\n    }\n  };\n\n  // listeners for the DataSet of the groups\n  this.groupListeners = {\n    'add': function (event, params, senderId) {  // eslint-disable-line no-unused-vars\n      me._onAddGroups(params.items);\n    },\n    'update': function (event, params, senderId) {  // eslint-disable-line no-unused-vars\n      me._onUpdateGroups(params.items);\n    },\n    'remove': function (event, params, senderId) {  // eslint-disable-line no-unused-vars\n      me._onRemoveGroups(params.items);\n    }\n  };\n\n  this.items = {};      // object with an Item for every data item\n  this.selection = [];  // list with the ids of all selected nodes\n  this.lastStart = this.body.range.start;\n  this.touchParams = {}; // stores properties while dragging\n\n  this.svgElements = {};\n  this.setOptions(options);\n  this.groupsUsingDefaultStyles = [0];\n  this.body.emitter.on('rangechanged', function () {\n    me.svg.style.left = util.option.asSize(-me.props.width);\n\n    me.forceGraphUpdate = true;\n    //Is this local redraw necessary? (Core also does a change event!)\n    me.redraw.call(me);\n  });\n\n  // create the HTML DOM\n  this._create();\n  this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups};\n}\n\nLineGraph.prototype = new Component();\n\n/**\n * Create the HTML DOM for the ItemSet\n */\nLineGraph.prototype._create = function () {\n  var frame = document.createElement('div');\n  frame.className = 'vis-line-graph';\n  this.dom.frame = frame;\n\n  // create svg element for graph drawing.\n  this.svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n  this.svg.style.position = 'relative';\n  this.svg.style.height = ('' + this.options.graphHeight).replace('px', '') + 'px';\n  this.svg.style.display = 'block';\n  frame.appendChild(this.svg);\n\n  // data axis\n  this.options.dataAxis.orientation = 'left';\n  this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups);\n\n  this.options.dataAxis.orientation = 'right';\n  this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups);\n  delete this.options.dataAxis.orientation;\n\n  // legends\n  this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups);\n  this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups);\n\n  this.show();\n};\n\n/**\n * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element.\n * @param {object} options\n */\nLineGraph.prototype.setOptions = function (options) {\n  if (options) {\n    var fields = ['sampling', 'defaultGroup', 'stack', 'height', 'graphHeight', 'yAxisOrientation', 'style', 'barChart', 'dataAxis', 'sort', 'groups'];\n    if (options.graphHeight === undefined && options.height !== undefined) {\n      this.updateSVGheight = true;\n      this.updateSVGheightOnResize = true;\n    }\n    else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) {\n      if (parseInt((options.graphHeight + '').replace(\"px\", '')) < this.body.domProps.centerContainer.height) {\n        this.updateSVGheight = true;\n      }\n    }\n    util.selectiveDeepExtend(fields, this.options, options);\n    util.mergeOptions(this.options, options, 'interpolation');\n    util.mergeOptions(this.options, options, 'drawPoints');\n    util.mergeOptions(this.options, options, 'shaded');\n    util.mergeOptions(this.options, options, 'legend');\n\n    if (options.interpolation) {\n      if (typeof options.interpolation == 'object') {\n        if (options.interpolation.parametrization) {\n          if (options.interpolation.parametrization == 'uniform') {\n            this.options.interpolation.alpha = 0;\n          }\n          else if (options.interpolation.parametrization == 'chordal') {\n            this.options.interpolation.alpha = 1.0;\n          }\n          else {\n            this.options.interpolation.parametrization = 'centripetal';\n            this.options.interpolation.alpha = 0.5;\n          }\n        }\n      }\n    }\n\n    if (this.yAxisLeft) {\n      if (options.dataAxis !== undefined) {\n        this.yAxisLeft.setOptions(this.options.dataAxis);\n        this.yAxisRight.setOptions(this.options.dataAxis);\n      }\n    }\n\n    if (this.legendLeft) {\n      if (options.legend !== undefined) {\n        this.legendLeft.setOptions(this.options.legend);\n        this.legendRight.setOptions(this.options.legend);\n      }\n    }\n\n    if (this.groups.hasOwnProperty(UNGROUPED)) {\n      this.groups[UNGROUPED].setOptions(options);\n    }\n  }\n\n  // this is used to redraw the graph if the visibility of the groups is changed.\n  if (this.dom.frame) { //not on initial run?\n    this.forceGraphUpdate=true;\n    this.body.emitter.emit(\"_change\",{queue: true});\n  }\n};\n\n/**\n * Hide the component from the DOM\n */\nLineGraph.prototype.hide = function () {\n  // remove the frame containing the items\n  if (this.dom.frame.parentNode) {\n    this.dom.frame.parentNode.removeChild(this.dom.frame);\n  }\n};\n\n\n/**\n * Show the component in the DOM (when not already visible).\n */\nLineGraph.prototype.show = function () {\n  // show frame containing the items\n  if (!this.dom.frame.parentNode) {\n    this.body.dom.center.appendChild(this.dom.frame);\n  }\n};\n\n\n/**\n * Set items\n * @param {vis.DataSet | null} items\n */\nLineGraph.prototype.setItems = function (items) {\n  var me = this,\n    ids,\n    oldItemsData = this.itemsData;\n\n  // replace the dataset\n  if (!items) {\n    this.itemsData = null;\n  }\n  else if (isDataViewLike(items)) {\n    this.itemsData = typeCoerceDataSet(items);\n  }\n  else {\n    throw new TypeError('Data must implement the interface of DataSet or DataView');\n  }\n\n  if (oldItemsData) {\n    // unsubscribe from old dataset\n    util.forEach(this.itemListeners, function (callback, event) {\n      oldItemsData.off(event, callback);\n    });\n\n    // stop maintaining a coerced version of the old data set\n    oldItemsData.dispose()\n\n    // remove all drawn items\n    ids = oldItemsData.getIds();\n    this._onRemove(ids);\n  }\n\n  if (this.itemsData) {\n    // subscribe to new dataset\n    var id = this.id;\n    util.forEach(this.itemListeners, function (callback, event) {\n      me.itemsData.on(event, callback, id);\n    });\n\n    // add all new items\n    ids = this.itemsData.getIds();\n    this._onAdd(ids);\n  }\n};\n\n\n/**\n * Set groups\n * @param {vis.DataSet} groups\n */\nLineGraph.prototype.setGroups = function (groups) {\n  var me = this;\n  var ids;\n\n  // unsubscribe from current dataset\n  if (this.groupsData) {\n    util.forEach(this.groupListeners, function (callback, event) {\n      me.groupsData.off(event, callback);\n    });\n\n    // remove all drawn groups\n    ids = this.groupsData.getIds();\n    this.groupsData = null;\n    for (var i = 0; i < ids.length; i++) {\n      this._removeGroup(ids[i]);\n    }\n  }\n\n  // replace the dataset\n  if (!groups) {\n    this.groupsData = null;\n  }\n  else if (isDataViewLike(groups)) {\n    this.groupsData = groups;\n  }\n  else {\n    throw new TypeError('Data must implement the interface of DataSet or DataView');\n  }\n\n  if (this.groupsData) {\n    // subscribe to new dataset\n    var id = this.id;\n    util.forEach(this.groupListeners, function (callback, event) {\n      me.groupsData.on(event, callback, id);\n    });\n\n    // draw all ms\n    ids = this.groupsData.getIds();\n    this._onAddGroups(ids);\n  }\n};\n\nLineGraph.prototype._onUpdate = function (ids) {\n  this._updateAllGroupData(ids);\n};\nLineGraph.prototype._onAdd = function (ids) {\n  this._onUpdate(ids);\n};\nLineGraph.prototype._onRemove = function (ids) {\n  this._onUpdate(ids);\n};\nLineGraph.prototype._onUpdateGroups = function (groupIds) {\n  this._updateAllGroupData(null, groupIds);\n};\nLineGraph.prototype._onAddGroups = function (groupIds) {\n  this._onUpdateGroups(groupIds);\n};\n\n/**\n * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph\n * @param {Array} groupIds\n * @private\n */\nLineGraph.prototype._onRemoveGroups = function (groupIds) {\n  for (var i = 0; i < groupIds.length; i++) {\n    this._removeGroup(groupIds[i]);\n  }\n  this.forceGraphUpdate = true;\n  this.body.emitter.emit(\"_change\",{queue: true});\n};\n\n/**\n * this cleans the group out off the legends and the dataaxis\n * @param {vis.GraphGroup.id} groupId\n * @private\n */\nLineGraph.prototype._removeGroup = function (groupId) {\n  if (this.groups.hasOwnProperty(groupId)) {\n    if (this.groups[groupId].options.yAxisOrientation == 'right') {\n      this.yAxisRight.removeGroup(groupId);\n      this.legendRight.removeGroup(groupId);\n      this.legendRight.redraw();\n    }\n    else {\n      this.yAxisLeft.removeGroup(groupId);\n      this.legendLeft.removeGroup(groupId);\n      this.legendLeft.redraw();\n    }\n    delete this.groups[groupId];\n  }\n};\n\n/**\n * update a group object with the group dataset entree\n *\n * @param {vis.GraphGroup} group\n * @param {vis.GraphGroup.id} groupId\n * @private\n */\nLineGraph.prototype._updateGroup = function (group, groupId) {\n  if (!this.groups.hasOwnProperty(groupId)) {\n    this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles);\n    if (this.groups[groupId].options.yAxisOrientation == 'right') {\n      this.yAxisRight.addGroup(groupId, this.groups[groupId]);\n      this.legendRight.addGroup(groupId, this.groups[groupId]);\n    }\n    else {\n      this.yAxisLeft.addGroup(groupId, this.groups[groupId]);\n      this.legendLeft.addGroup(groupId, this.groups[groupId]);\n    }\n  }\n  else {\n    this.groups[groupId].update(group);\n    if (this.groups[groupId].options.yAxisOrientation == 'right') {\n      this.yAxisRight.updateGroup(groupId, this.groups[groupId]);\n      this.legendRight.updateGroup(groupId, this.groups[groupId]);\n      //If yAxisOrientation changed, clean out the group from the other axis.\n      this.yAxisLeft.removeGroup(groupId);\n      this.legendLeft.removeGroup(groupId);\n    }\n    else {\n      this.yAxisLeft.updateGroup(groupId, this.groups[groupId]);\n      this.legendLeft.updateGroup(groupId, this.groups[groupId]);\n      //If yAxisOrientation changed, clean out the group from the other axis.\n      this.yAxisRight.removeGroup(groupId);\n      this.legendRight.removeGroup(groupId);\n    }\n  }\n  this.legendLeft.redraw();\n  this.legendRight.redraw();\n};\n\n\n/**\n * this updates all groups, it is used when there is an update the the itemset.\n *\n * @param  {Array} ids\n * @param  {Array} groupIds\n * @private\n */\nLineGraph.prototype._updateAllGroupData = function (ids, groupIds) {\n  if (this.itemsData != null) {\n    var groupsContent = {};\n    var items = this.itemsData.get();\n    var fieldId = this.itemsData.idProp;\n    var idMap = {};\n    if (ids){\n      ids.map(function (id) {\n        idMap[id] = id;\n      });\n    }\n\n    //pre-Determine array sizes, for more efficient memory claim\n    var groupCounts = {};\n    for (var i = 0; i < items.length; i++) {\n      var item = items[i];\n      var groupId = item.group;\n      if (groupId === null || groupId === undefined) {\n        groupId = UNGROUPED;\n      }\n      groupCounts.hasOwnProperty(groupId) ? groupCounts[groupId]++ : groupCounts[groupId] = 1;\n    }\n\n    //Pre-load arrays from existing groups if items are not changed (not in ids)\n    var existingItemsMap = {};\n    if (!groupIds && ids) {\n      for (groupId in this.groups) {\n        if (this.groups.hasOwnProperty(groupId)) {\n          group = this.groups[groupId];\n          var existing_items = group.getItems();\n\n          groupsContent[groupId] = existing_items.filter(function (item) {\n            existingItemsMap[item[fieldId]] = item[fieldId];\n            return (item[fieldId] !== idMap[item[fieldId]]);\n          });\n          var newLength = groupCounts[groupId];\n          groupCounts[groupId] -= groupsContent[groupId].length;\n          if (groupsContent[groupId].length < newLength) {\n            groupsContent[groupId][newLength - 1] = {};\n          }\n        }\n      }\n    }\n\n    //Now insert data into the arrays.\n    for (i = 0; i < items.length; i++) {\n      item = items[i];\n      groupId = item.group;\n      if (groupId === null || groupId === undefined) {\n        groupId = UNGROUPED;\n      }\n      if (!groupIds && ids && (item[fieldId] !== idMap[item[fieldId]]) && existingItemsMap.hasOwnProperty(item[fieldId])) {\n        continue;\n      }\n      if (!groupsContent.hasOwnProperty(groupId)) {\n        groupsContent[groupId] = new Array(groupCounts[groupId]);\n      }\n      //Copy data (because of unmodifiable DataView input.\n      var extended = util.bridgeObject(item);\n      extended.x = util.convert(item.x, 'Date');\n      extended.end = util.convert(item.end, 'Date');\n      extended.orginalY = item.y; //real Y\n      extended.y = Number(item.y);\n      extended[fieldId] = item[fieldId];\n\n      var index= groupsContent[groupId].length - groupCounts[groupId]--;\n      groupsContent[groupId][index] = extended;\n    }\n\n    //Make sure all groups are present, to allow removal of old groups\n    for (groupId in this.groups){\n      if (this.groups.hasOwnProperty(groupId)){\n        if (!groupsContent.hasOwnProperty(groupId)) {\n          groupsContent[groupId] = new Array(0);\n        }\n      }\n    }\n\n    //Update legendas, style and axis\n    for (groupId in groupsContent) {\n      if (groupsContent.hasOwnProperty(groupId)) {\n        if (groupsContent[groupId].length == 0) {\n          if (this.groups.hasOwnProperty(groupId)) {\n            this._removeGroup(groupId);\n          }\n        } else {\n          var group = undefined;\n          if (this.groupsData != undefined) {\n            group = this.groupsData.get(groupId);\n          }\n          if (group == undefined) {\n            group = {id: groupId, content: this.options.defaultGroup + groupId};\n          }\n          this._updateGroup(group, groupId);\n          this.groups[groupId].setItems(groupsContent[groupId]);\n        }\n      }\n    }\n    this.forceGraphUpdate = true;\n    this.body.emitter.emit(\"_change\",{queue: true});\n  }\n};\n\n/**\n * Redraw the component, mandatory function\n * @return {boolean} Returns true if the component is resized\n */\nLineGraph.prototype.redraw = function () {\n  var resized = false;\n\n  // calculate actual size and position\n  this.props.width = this.dom.frame.offsetWidth;\n  this.props.height = this.body.domProps.centerContainer.height\n    - this.body.domProps.border.top\n    - this.body.domProps.border.bottom;\n\n  // check if this component is resized\n  resized = this._isResized() || resized;\n\n  // check whether zoomed (in that case we need to re-stack everything)\n  var visibleInterval = this.body.range.end - this.body.range.start;\n  var zoomed = (visibleInterval != this.lastVisibleInterval);\n  this.lastVisibleInterval = visibleInterval;\n\n\n  // the svg element is three times as big as the width, this allows for fully dragging left and right\n  // without reloading the graph. the controls for this are bound to events in the constructor\n  if (resized == true) {\n    this.svg.style.width = util.option.asSize(3 * this.props.width);\n    this.svg.style.left = util.option.asSize(-this.props.width);\n\n    // if the height of the graph is set as proportional, change the height of the svg\n    if ((this.options.height + '').indexOf(\"%\") != -1 || this.updateSVGheightOnResize == true) {\n      this.updateSVGheight = true;\n    }\n  }\n\n  // update the height of the graph on each redraw of the graph.\n  if (this.updateSVGheight == true) {\n    if (this.options.graphHeight != this.props.height + 'px') {\n      this.options.graphHeight = this.props.height + 'px';\n      this.svg.style.height = this.props.height + 'px';\n    }\n    this.updateSVGheight = false;\n  }\n  else {\n    this.svg.style.height = ('' + this.options.graphHeight).replace('px', '') + 'px';\n  }\n\n  // zoomed is here to ensure that animations are shown correctly.\n  if (resized == true || zoomed == true || this.abortedGraphUpdate == true || this.forceGraphUpdate == true) {\n    resized = this._updateGraph() || resized;\n    this.forceGraphUpdate = false;\n    this.lastStart = this.body.range.start;\n    this.svg.style.left = (-this.props.width) + 'px';\n  }\n  else {\n    // move the whole svg while dragging\n    if (this.lastStart != 0) {\n      var offset = this.body.range.start - this.lastStart;\n      var range = this.body.range.end - this.body.range.start;\n      if (this.props.width != 0) {\n        var rangePerPixelInv = this.props.width / range;\n        var xOffset = offset * rangePerPixelInv;\n        this.svg.style.left = (-this.props.width - xOffset) + 'px';\n      }\n    }\n  }\n  this.legendLeft.redraw();\n  this.legendRight.redraw();\n  return resized;\n};\n\n\nLineGraph.prototype._getSortedGroupIds = function(){\n  // getting group Ids\n  var grouplist = [];\n  for (var groupId in this.groups) {\n    if (this.groups.hasOwnProperty(groupId)) {\n      var group = this.groups[groupId];\n      if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) {\n        grouplist.push({id:groupId,zIndex:group.options.zIndex});\n      }\n    }\n  }\n  util.insertSort(grouplist,function(a,b){\n    var az = a.zIndex;\n    var bz = b.zIndex;\n    if (az === undefined) az=0;\n    if (bz === undefined) bz=0;\n    return az==bz? 0: (az<bz ? -1: 1);\n  });\n  var groupIds = new Array(grouplist.length);\n  for (var i=0; i< grouplist.length; i++){\n    groupIds[i] = grouplist[i].id;\n  }\n  return groupIds;\n};\n\n/**\n * Update and redraw the graph.\n *\n * @returns {boolean}\n * @private\n */\nLineGraph.prototype._updateGraph = function () {\n  // reset the svg elements\n  DOMutil.prepareElements(this.svgElements);\n  if (this.props.width != 0 && this.itemsData != null) {\n    var group, i;\n    var groupRanges = {};\n    var changeCalled = false;\n    // this is the range of the SVG canvas\n    var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width);\n    var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width);\n\n    // getting group Ids\n    var groupIds = this._getSortedGroupIds();\n    if (groupIds.length > 0) {\n      var groupsData = {};\n\n      // fill groups data, this only loads the data we require based on the timewindow\n      this._getRelevantData(groupIds, groupsData, minDate, maxDate);\n\n      // apply sampling, if disabled, it will pass through this function.\n      this._applySampling(groupIds, groupsData);\n\n      // we transform the X coordinates to detect collisions\n      for (i = 0; i < groupIds.length; i++) {\n        this._convertXcoordinates(groupsData[groupIds[i]]);\n      }\n\n      // now all needed data has been collected we start the processing.\n      this._getYRanges(groupIds, groupsData, groupRanges);\n\n      // update the Y axis first, we use this data to draw at the correct Y points\n      changeCalled = this._updateYAxis(groupIds, groupRanges);\n\n      //  at changeCalled, abort this update cycle as the graph needs another update with new Width input from the Redraw container.\n      //  Cleanup SVG elements on abort.\n      if (changeCalled == true) {\n        DOMutil.cleanupElements(this.svgElements);\n        this.abortedGraphUpdate = true;\n        return true;\n      }\n      this.abortedGraphUpdate = false;\n\n      // With the yAxis scaled correctly, use this to get the Y values of the points.\n      var below = undefined;\n      for (i = 0; i < groupIds.length; i++) {\n        group = this.groups[groupIds[i]];\n        if (this.options.stack === true && this.options.style === 'line') {\n          if (group.options.excludeFromStacking == undefined || !group.options.excludeFromStacking) {\n            if (below != undefined) {\n              this._stack(groupsData[group.id], groupsData[below.id]);\n              if (group.options.shaded.enabled == true && group.options.shaded.orientation !== \"group\"){\n                if (group.options.shaded.orientation == \"top\" && below.options.shaded.orientation !== \"group\"){\n                  below.options.shaded.orientation=\"group\";\n                  below.options.shaded.groupId=group.id;\n                } else {\n                  group.options.shaded.orientation=\"group\";\n                  group.options.shaded.groupId=below.id;\n                }\n              }\n            }\n            below = group;\n          }\n        }\n        this._convertYcoordinates(groupsData[groupIds[i]], group);\n      }\n\n      //Precalculate paths and draw shading if appropriate. This will make sure the shading is always behind any lines.\n      var paths = {};\n      for (i = 0; i < groupIds.length; i++) {\n        group = this.groups[groupIds[i]];\n        if (group.options.style === 'line' && group.options.shaded.enabled == true) {\n          var dataset = groupsData[groupIds[i]];\n          if (dataset == null || dataset.length == 0) {\n            continue;\n          }\n          if (!paths.hasOwnProperty(groupIds[i])) {\n            paths[groupIds[i]] = Lines.calcPath(dataset, group);\n          }\n          if (group.options.shaded.orientation === \"group\") {\n            var subGroupId = group.options.shaded.groupId;\n            if (groupIds.indexOf(subGroupId) === -1) {\n              console.log(group.id + \": Unknown shading group target given:\" + subGroupId);\n              continue;\n            }\n            if (!paths.hasOwnProperty(subGroupId)) {\n              paths[subGroupId] = Lines.calcPath(groupsData[subGroupId], this.groups[subGroupId]);\n            }\n            Lines.drawShading(paths[groupIds[i]], group, paths[subGroupId], this.framework);\n          }\n          else {\n            Lines.drawShading(paths[groupIds[i]], group, undefined, this.framework);\n          }\n        }\n      }\n\n      // draw the groups, calculating paths if still necessary.\n      Bars.draw(groupIds, groupsData, this.framework);\n      for (i = 0; i < groupIds.length; i++) {\n        group = this.groups[groupIds[i]];\n        if (groupsData[groupIds[i]].length > 0) {\n          switch (group.options.style) {\n            case \"line\":\n              if (!paths.hasOwnProperty(groupIds[i])) {\n                paths[groupIds[i]] = Lines.calcPath(groupsData[groupIds[i]], group);\n              }\n              Lines.draw(paths[groupIds[i]], group, this.framework);\n            // eslint-disable-line no-fallthrough\n            case \"point\":\n            // eslint-disable-line no-fallthrough\n            case \"points\":\n              if (group.options.style == \"point\" || group.options.style == \"points\" || group.options.drawPoints.enabled == true) {\n                Points.draw(groupsData[groupIds[i]], group, this.framework);\n              }\n              break;\n            case \"bar\":\n            // bar needs to be drawn enmasse\n            // eslint-disable-line no-fallthrough\n            default:\n            //do nothing...\n          }\n        }\n\n      }\n    }\n  }\n\n  // cleanup unused svg elements\n  DOMutil.cleanupElements(this.svgElements);\n  return false;\n};\n\nLineGraph.prototype._stack = function (data, subData) {\n  var index, dx, dy, subPrevPoint, subNextPoint;\n  index = 0;\n  // for each data point we look for a matching on in the set below\n  for (var j = 0; j < data.length; j++) {\n    subPrevPoint = undefined;\n    subNextPoint = undefined;\n    // we look for time matches or a before-after point\n    for (var k = index; k < subData.length; k++) {\n      // if times match exactly\n      if (subData[k].x === data[j].x) {\n        subPrevPoint = subData[k];\n        subNextPoint = subData[k];\n        index = k;\n        break;\n      }\n      else if (subData[k].x > data[j].x) { // overshoot\n        subNextPoint = subData[k];\n        if (k == 0) {\n          subPrevPoint = subNextPoint;\n        }\n        else {\n          subPrevPoint = subData[k - 1];\n        }\n        index = k;\n        break;\n      }\n    }\n    // in case the last data point has been used, we assume it stays like this.\n    if (subNextPoint === undefined) {\n      subPrevPoint = subData[subData.length - 1];\n      subNextPoint = subData[subData.length - 1];\n    }\n    // linear interpolation\n    dx = subNextPoint.x - subPrevPoint.x;\n    dy = subNextPoint.y - subPrevPoint.y;\n    if (dx == 0) {\n      data[j].y = data[j].orginalY + subNextPoint.y;\n    }\n    else {\n      data[j].y = data[j].orginalY + (dy / dx) * (data[j].x - subPrevPoint.x) + subPrevPoint.y; // ax + b where b is data[j].y\n    }\n  }\n}\n\n\n/**\n * first select and preprocess the data from the datasets.\n * the groups have their preselection of data, we now loop over this data to see\n * what data we need to draw. Sorted data is much faster.\n * more optimization is possible by doing the sampling before and using the binary search\n * to find the end date to determine the increment.\n *\n * @param {array}  groupIds\n * @param {object} groupsData\n * @param {date}   minDate\n * @param {date}   maxDate\n * @private\n */\nLineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) {\n  var group, i, j, item;\n  if (groupIds.length > 0) {\n    for (i = 0; i < groupIds.length; i++) {\n      group = this.groups[groupIds[i]];\n      var itemsData = group.getItems();\n      // optimization for sorted data\n      if (group.options.sort == true) {\n        var dateComparator = function (a, b) {\n          return a.getTime() == b.getTime() ? 0 : a < b ? -1 : 1\n        };\n        var first = Math.max(0, util.binarySearchValue(itemsData, minDate, 'x', 'before', dateComparator));\n        var last = Math.min(itemsData.length, util.binarySearchValue(itemsData, maxDate, 'x', 'after', dateComparator) + 1);\n        if (last <= 0) {\n          last = itemsData.length;\n        }\n        var dataContainer = new Array(last-first);\n        for (j = first; j < last; j++) {\n          item = group.itemsData[j];\n          dataContainer[j-first] = item;\n        }\n        groupsData[groupIds[i]] = dataContainer;\n      }\n      else {\n        // If unsorted data, all data is relevant, just returning entire structure\n        groupsData[groupIds[i]] = group.itemsData;\n      }\n    }\n  }\n};\n\n\n/**\n *\n * @param {Array.<vis.GraphGroup.id>} groupIds\n * @param {vis.DataSet} groupsData\n * @private\n */\nLineGraph.prototype._applySampling = function (groupIds, groupsData) {\n  var group;\n  if (groupIds.length > 0) {\n    for (var i = 0; i < groupIds.length; i++) {\n      group = this.groups[groupIds[i]];\n      if (group.options.sampling == true) {\n        var dataContainer = groupsData[groupIds[i]];\n        if (dataContainer.length > 0) {\n          var increment = 1;\n          var amountOfPoints = dataContainer.length;\n\n          // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop\n          // of width changing of the yAxis.\n          //TODO: This assumes sorted data, but that's not guaranteed!\n          var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x);\n          var pointsPerPixel = amountOfPoints / xDistance;\n          increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel)));\n\n          var sampledData = new Array(amountOfPoints);\n          for (var j = 0; j < amountOfPoints; j += increment) {\n            var idx = Math.round(j/increment);\n            sampledData[idx]=dataContainer[j];\n          }\n          groupsData[groupIds[i]] = sampledData.splice(0,Math.round(amountOfPoints/increment));\n        }\n      }\n    }\n  }\n};\n\n\n/**\n *\n * @param {Array.<vis.GraphGroup.id>} groupIds\n * @param {vis.DataSet} groupsData\n * @param {object} groupRanges  | this is being filled here\n * @private\n */\nLineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) {\n  var groupData, group, i;\n  var combinedDataLeft = [];\n  var combinedDataRight = [];\n  var options;\n  if (groupIds.length > 0) {\n    for (i = 0; i < groupIds.length; i++) {\n      groupData = groupsData[groupIds[i]];\n      options = this.groups[groupIds[i]].options;\n      if (groupData.length > 0) {\n        group = this.groups[groupIds[i]];\n        // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups.\n        if (options.stack === true && options.style === 'bar') {\n          if (options.yAxisOrientation === 'left') {\n            combinedDataLeft = combinedDataLeft.concat(groupData);\n          }\n          else {\n            combinedDataRight = combinedDataRight.concat(groupData);\n          }\n        }\n        else {\n          groupRanges[groupIds[i]] = group.getYRange(groupData, groupIds[i]);\n        }\n      }\n    }\n\n    // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups.\n    Bars.getStackedYRange(combinedDataLeft, groupRanges, groupIds, '__barStackLeft', 'left');\n    Bars.getStackedYRange(combinedDataRight, groupRanges, groupIds, '__barStackRight', 'right');\n  }\n};\n\n\n/**\n * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden.\n * @param {Array.<vis.GraphGroup.id>} groupIds\n * @param {Object} groupRanges\n * @returns {boolean} resized\n * @private\n */\nLineGraph.prototype._updateYAxis = function (groupIds, groupRanges) {\n  var resized = false;\n  var yAxisLeftUsed = false;\n  var yAxisRightUsed = false;\n  var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal;\n  // if groups are present\n  if (groupIds.length > 0) {\n    // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop.\n    for (var i = 0; i < groupIds.length; i++) {\n      var group = this.groups[groupIds[i]];\n      if (group && group.options.yAxisOrientation != 'right') {\n        yAxisLeftUsed = true;\n        minLeft = 1e9;\n        maxLeft = -1e9;\n      }\n      else if (group && group.options.yAxisOrientation) {\n        yAxisRightUsed = true;\n        minRight = 1e9;\n        maxRight = -1e9;\n      }\n    }\n\n    // if there are items:\n    for (i = 0; i < groupIds.length; i++) {\n      if (groupRanges.hasOwnProperty(groupIds[i])) {\n        if (groupRanges[groupIds[i]].ignore !== true) {\n          minVal = groupRanges[groupIds[i]].min;\n          maxVal = groupRanges[groupIds[i]].max;\n\n          if (groupRanges[groupIds[i]].yAxisOrientation != 'right') {\n            yAxisLeftUsed = true;\n            minLeft = minLeft > minVal ? minVal : minLeft;\n            maxLeft = maxLeft < maxVal ? maxVal : maxLeft;\n          }\n          else {\n            yAxisRightUsed = true;\n            minRight = minRight > minVal ? minVal : minRight;\n            maxRight = maxRight < maxVal ? maxVal : maxRight;\n          }\n        }\n      }\n    }\n\n    if (yAxisLeftUsed == true) {\n      this.yAxisLeft.setRange(minLeft, maxLeft);\n    }\n    if (yAxisRightUsed == true) {\n      this.yAxisRight.setRange(minRight, maxRight);\n    }\n  }\n  resized = this._toggleAxisVisiblity(yAxisLeftUsed, this.yAxisLeft) || resized;\n  resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized;\n\n  if (yAxisRightUsed == true && yAxisLeftUsed == true) {\n    this.yAxisLeft.drawIcons = true;\n    this.yAxisRight.drawIcons = true;\n  }\n  else {\n    this.yAxisLeft.drawIcons = false;\n    this.yAxisRight.drawIcons = false;\n  }\n  this.yAxisRight.master = !yAxisLeftUsed;\n  this.yAxisRight.masterAxis = this.yAxisLeft;\n\n  if (this.yAxisRight.master == false) {\n    if (yAxisRightUsed == true) {\n      this.yAxisLeft.lineOffset = this.yAxisRight.width;\n    }\n    else {\n      this.yAxisLeft.lineOffset = 0;\n    }\n\n    resized = this.yAxisLeft.redraw() || resized;\n    resized = this.yAxisRight.redraw() || resized;\n  }\n  else {\n    resized = this.yAxisRight.redraw() || resized;\n  }\n\n  // clean the accumulated lists\n  var tempGroups = ['__barStackLeft', '__barStackRight', '__lineStackLeft', '__lineStackRight'];\n  for (i = 0; i < tempGroups.length; i++) {\n    if (groupIds.indexOf(tempGroups[i]) != -1) {\n      groupIds.splice(groupIds.indexOf(tempGroups[i]), 1);\n    }\n  }\n\n  return resized;\n};\n\n\n/**\n * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function\n *\n * @param {boolean} axisUsed\n * @param {vis.DataAxis}  axis\n * @returns {boolean}\n * @private\n */\nLineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) {\n  var changed = false;\n  if (axisUsed == false) {\n    if (axis.dom.frame.parentNode && axis.hidden == false) {\n      axis.hide();\n      changed = true;\n    }\n  }\n  else {\n    if (!axis.dom.frame.parentNode && axis.hidden == true) {\n      axis.show();\n      changed = true;\n    }\n  }\n  return changed;\n};\n\n\n/**\n * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the\n * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for\n * the yAxis.\n *\n * @param {Array.<Object>} datapoints\n * @private\n */\nLineGraph.prototype._convertXcoordinates = function (datapoints) {\n  var toScreen = this.body.util.toScreen;\n  for (var i = 0; i < datapoints.length; i++) {\n    datapoints[i].screen_x = toScreen(datapoints[i].x) + this.props.width;\n    datapoints[i].screen_y = datapoints[i].y; //starting point for range calculations\n    if (datapoints[i].end != undefined) {\n      datapoints[i].screen_end = toScreen(datapoints[i].end) + this.props.width;\n    }\n    else {\n      datapoints[i].screen_end = undefined;\n    }\n  }\n};\n\n\n/**\n * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the\n * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for\n * the yAxis.\n *\n * @param {Array.<Object>} datapoints\n * @param {vis.GraphGroup} group\n * @private\n */\nLineGraph.prototype._convertYcoordinates = function (datapoints, group) {\n  var axis = this.yAxisLeft;\n  var svgHeight = Number(this.svg.style.height.replace('px', ''));\n  if (group.options.yAxisOrientation == 'right') {\n    axis = this.yAxisRight;\n  }\n  for (var i = 0; i < datapoints.length; i++) {\n    datapoints[i].screen_y = Math.round(axis.convertValue(datapoints[i].y));\n  }\n  group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0)));\n};\n\n\nexport default LineGraph;\n","/**\n * This object contains all possible options. It will check if the types are correct, if required if the option is one\n * of the allowed values.\n *\n * __any__ means that the name of the property does not matter.\n * __type__ is a required field for all objects and contains the allowed types of all objects\n */\nlet string = 'string';\nlet bool = 'boolean';\nlet number = 'number';\nlet array = 'array';\nlet date = 'date';\nlet object = 'object'; // should only be in a __type__ property\nlet dom = 'dom';\nlet moment = 'moment';\nlet any = 'any';\n\n\nlet allOptions = {\n  configure: {\n    enabled: {'boolean': bool},\n    filter: {'boolean': bool,'function': 'function'},\n    container: {dom},\n    __type__: {object,'boolean': bool,'function': 'function'}\n  },\n\n  //globals :\n  alignCurrentTime: {string, 'undefined': 'undefined'},  \n  yAxisOrientation: {string:['left','right']},\n  defaultGroup: {string},\n  sort: {'boolean': bool},\n  sampling: {'boolean': bool},\n  stack:{'boolean': bool},\n  graphHeight: {string, number},\n  shaded: {\n    enabled: {'boolean': bool},\n    orientation: {string:['bottom','top','zero','group']}, // top, bottom, zero, group\n    groupId: {object},\n    __type__: {'boolean': bool,object}\n  },\n  style: {string:['line','bar','points']}, // line, bar\n  barChart: {\n    width: {number},\n    minWidth: {number},\n    sideBySide: {'boolean': bool},\n    align: {string:['left','center','right']},\n    __type__: {object}\n  },\n  interpolation: {\n    enabled: {'boolean': bool},\n    parametrization: {string:['centripetal', 'chordal','uniform']}, // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5)\n    alpha: {number},\n    __type__: {object,'boolean': bool}\n  },\n  drawPoints: {\n    enabled: {'boolean': bool},\n    onRender: { 'function': 'function' },\n    size: {number},\n    style: {string:['square','circle']}, // square, circle\n    __type__: {object,'boolean': bool,'function': 'function'}\n  },\n  dataAxis: {\n    showMinorLabels: {'boolean': bool},\n    showMajorLabels: {'boolean': bool},\n    showWeekScale: {'boolean': bool},\n    icons: {'boolean': bool},\n    width: {string, number},\n    visible: {'boolean': bool},\n    alignZeros: {'boolean': bool},\n    left:{\n      range: {min:{number,'undefined': 'undefined'},max:{number,'undefined': 'undefined'},__type__: {object}},\n      format: {'function': 'function'},\n      title: {text:{string,number,'undefined': 'undefined'},style:{string,'undefined': 'undefined'},__type__: {object}},\n      __type__: {object}\n    },\n    right:{\n      range: {min:{number,'undefined': 'undefined'},max:{number,'undefined': 'undefined'},__type__: {object}},\n      format: {'function': 'function'},\n      title: {text:{string,number,'undefined': 'undefined'},style:{string,'undefined': 'undefined'},__type__: {object}},\n      __type__: {object}\n    },\n    __type__: {object}\n  },\n  legend: {\n    enabled: {'boolean': bool},\n    icons: {'boolean': bool},\n    left: {\n      visible: {'boolean': bool},\n      position: {string:['top-right','bottom-right','top-left','bottom-left']},\n      __type__: {object}\n    },\n    right: {\n      visible: {'boolean': bool},\n      position: {string:['top-right','bottom-right','top-left','bottom-left']},\n      __type__: {object}\n    },\n    __type__: {object,'boolean': bool}\n  },\n  groups: {\n    visibility: {any},\n    __type__: {object}\n  },\n\n  autoResize: {'boolean': bool},\n  throttleRedraw: {number}, // TODO: DEPRICATED see https://github.com/almende/vis/issues/2511\n  clickToUse: {'boolean': bool},\n  end: {number, date, string, moment},\n  format: {\n    minorLabels: {\n      millisecond: {string,'undefined': 'undefined'},\n      second: {string,'undefined': 'undefined'},\n      minute: {string,'undefined': 'undefined'},\n      hour: {string,'undefined': 'undefined'},\n      weekday: {string,'undefined': 'undefined'},\n      day: {string,'undefined': 'undefined'},\n      week: {string,'undefined': 'undefined'},\n      month: {string,'undefined': 'undefined'},\n      quarter: {string,'undefined': 'undefined'},\n      year: {string,'undefined': 'undefined'},\n      __type__: {object}\n    },\n    majorLabels: {\n      millisecond: {string,'undefined': 'undefined'},\n      second: {string,'undefined': 'undefined'},\n      minute: {string,'undefined': 'undefined'},\n      hour: {string,'undefined': 'undefined'},\n      weekday: {string,'undefined': 'undefined'},\n      day: {string,'undefined': 'undefined'},\n      week: {string,'undefined': 'undefined'},\n      month: {string,'undefined': 'undefined'},\n      quarter: {string,'undefined': 'undefined'},\n      year: {string,'undefined': 'undefined'},\n      __type__: {object}\n    },\n    __type__: {object}\n  },\n  moment: {'function': 'function'},\n  height: {string, number},\n  hiddenDates: {\n    start: {date, number, string, moment},\n    end: {date, number, string, moment},\n    repeat: {string},\n    __type__: {object, array}\n  },\n  locale:{string},\n  locales:{\n    __any__: {any},\n    __type__: {object}\n  },\n  max: {date, number, string, moment},\n  maxHeight: {number, string},\n  maxMinorChars: {number},\n  min: {date, number, string, moment},\n  minHeight: {number, string},\n  moveable: {'boolean': bool},\n  multiselect: {'boolean': bool},\n  orientation: {string},\n  showCurrentTime: {'boolean': bool},\n  showMajorLabels: {'boolean': bool},\n  showMinorLabels: {'boolean': bool},\n  showWeekScale: {'boolean': bool},\n  snap: {'function': 'function', 'null': 'null'},\n  start: {date, number, string, moment},\n  timeAxis: {\n    scale: {string,'undefined': 'undefined'},\n    step: {number,'undefined': 'undefined'},\n    __type__: {object}\n  },\n  width: {string, number},\n  zoomable: {'boolean': bool},\n  zoomKey: {string: ['ctrlKey', 'altKey', 'metaKey', '']},\n  zoomMax: {number},\n  zoomMin: {number},\n  zIndex: {number},\n  __type__: {object}\n};\n\nlet configureOptions = {\n  global: {\n    alignCurrentTime: ['none', 'year', 'month', 'quarter', 'week', 'isoWeek', 'day', 'date', 'hour', 'minute', 'second'],   \n    //yAxisOrientation: ['left','right'], // TDOO: enable as soon as Grahp2d doesn't crash when changing this on the fly\n    sort: true,\n    sampling: true,\n    stack:false,\n    shaded: {\n      enabled: false,\n      orientation: ['zero','top','bottom','group'] // zero, top, bottom\n    },\n    style: ['line','bar','points'], // line, bar\n    barChart: {\n      width: [50,5,100,5],\n      minWidth: [50,5,100,5],\n      sideBySide: false,\n      align: ['left','center','right'] // left, center, right\n    },\n    interpolation: {\n      enabled: true,\n      parametrization: ['centripetal','chordal','uniform'] // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5)\n    },\n    drawPoints: {\n      enabled: true,\n      size: [6,2,30,1],\n      style: ['square', 'circle'] // square, circle\n    },\n    dataAxis: {\n      showMinorLabels: true,\n      showMajorLabels: true,\n      showWeekScale: false,\n      icons: false,\n      width: [40,0,200,1],\n      visible: true,\n      alignZeros: true,\n      left:{\n        //range: {min:'undefined': 'undefined'ined,max:'undefined': 'undefined'ined},\n        //format: function (value) {return value;},\n        title: {text:'',style:''}\n      },\n      right:{\n        //range: {min:'undefined': 'undefined'ined,max:'undefined': 'undefined'ined},\n        //format: function (value) {return value;},\n        title: {text:'',style:''}\n      }\n    },\n    legend: {\n      enabled: false,\n      icons: true,\n      left: {\n        visible: true,\n        position: ['top-right','bottom-right','top-left','bottom-left'] // top/bottom - left,right\n      },\n      right: {\n        visible: true,\n        position: ['top-right','bottom-right','top-left','bottom-left'] // top/bottom - left,right\n      }\n    },\n\n    autoResize: true,\n    clickToUse: false,\n    end: '',\n    format: {\n      minorLabels: {\n        millisecond:'SSS',\n        second:     's',\n        minute:     'HH:mm',\n        hour:       'HH:mm',\n        weekday:    'ddd D',\n        day:        'D',\n        week:       'w',\n        month:      'MMM',\n        quarter:    '[Q]Q',\n        year:       'YYYY'\n      },\n      majorLabels: {\n        millisecond:'HH:mm:ss',\n        second:     'D MMMM HH:mm',\n        minute:     'ddd D MMMM',\n        hour:       'ddd D MMMM',\n        weekday:    'MMMM YYYY',\n        day:        'MMMM YYYY',\n        week:       'MMMM YYYY',\n        month:      'YYYY',\n        quarter:    'YYYY',\n        year:       ''\n      }\n    },\n\n    height: '',\n    locale: '',\n    max: '',\n    maxHeight: '',\n    maxMinorChars: [7, 0, 20, 1],\n    min: '',\n    minHeight: '',\n    moveable:true,\n    orientation: ['both', 'bottom', 'top'],\n    showCurrentTime: false,\n    showMajorLabels: true,\n    showMinorLabels: true,\n    showWeekScale: false,\n    start: '',\n    width: '100%',\n    zoomable: true,\n    zoomKey: ['ctrlKey', 'altKey', 'metaKey', ''],\n    zoomMax: [315360000000000, 10, 315360000000000, 1],\n    zoomMin: [10, 10, 315360000000000, 1],\n    zIndex: 0\n  }\n};\n\nexport {allOptions, configureOptions};\n","import moment from '../module/moment';\nimport util, { typeCoerceDataSet, isDataViewLike } from '../util';\nimport { DataSet, DataView } from 'vis-data/esnext';\nimport Range from './Range';\nimport Core from './Core';\nimport TimeAxis from './component/TimeAxis';\nimport CurrentTime from './component/CurrentTime';\nimport CustomTime from './component/CustomTime';\nimport LineGraph from './component/LineGraph';\n\nimport { Validator } from '../shared/Validator';\nimport { printStyle } from '../shared/Validator';\nimport { allOptions } from './optionsGraph2d';\nimport { configureOptions } from './optionsGraph2d';\n\nimport Configurator from '../shared/Configurator';\n\n/**\n * Create a timeline visualization\n * @param {HTMLElement} container\n * @param {vis.DataSet | Array} [items]\n * @param {vis.DataSet | Array | vis.DataView | Object} [groups]\n * @param {Object} [options]  See Graph2d.setOptions for the available options.\n * @constructor Graph2d\n * @extends Core\n */\nfunction Graph2d (container, items, groups, options) {\n  // if the third element is options, the forth is groups (optionally);\n  if (!(Array.isArray(groups) || isDataViewLike(groups)) && groups instanceof Object) {\n    var forthArgument = options;\n    options = groups;\n    groups = forthArgument;\n  }\n\n  // TODO: REMOVE THIS in the next MAJOR release\n  // see https://github.com/almende/vis/issues/2511\n  if (options && options.throttleRedraw) {\n    console.warn(\"Graph2d option \\\"throttleRedraw\\\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.\");\n  }\n\n  var me = this;\n  this.defaultOptions = {\n    start: null,\n    end:   null,\n\n    autoResize: true,\n\n    orientation: {\n      axis: 'bottom',   // axis orientation: 'bottom', 'top', or 'both'\n      item: 'bottom'    // not relevant for Graph2d\n    },\n\n    moment: moment,\n\n    width: null,\n    height: null,\n    maxHeight: null,\n    minHeight: null\n  };\n  this.options = util.deepExtend({}, this.defaultOptions);\n\n  // Create the DOM, props, and emitter\n  this._create(container);\n\n  // all components listed here will be repainted automatically\n  this.components = [];\n\n  this.body = {\n    dom: this.dom,\n    domProps: this.props,\n    emitter: {\n      on: this.on.bind(this),\n      off: this.off.bind(this),\n      emit: this.emit.bind(this)\n    },\n    hiddenDates: [],\n    util: {\n      getScale() {\n        return me.timeAxis.step.scale;\n      },\n      getStep() {\n        return me.timeAxis.step.step;\n      },\n\n      toScreen: me._toScreen.bind(me),\n      toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width\n      toTime: me._toTime.bind(me),\n      toGlobalTime : me._toGlobalTime.bind(me)\n    }\n  };\n\n  // range\n  this.range = new Range(this.body);\n  this.components.push(this.range);\n  this.body.range = this.range;\n\n  // time axis\n  this.timeAxis = new TimeAxis(this.body);\n  this.components.push(this.timeAxis);\n  //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis);\n\n  // current time bar\n  this.currentTime = new CurrentTime(this.body);\n  this.components.push(this.currentTime);\n\n  // item set\n  this.linegraph = new LineGraph(this.body);\n\n  this.components.push(this.linegraph);\n\n  this.itemsData = null;      // DataSet\n  this.groupsData = null;     // DataSet\n\n\n  this.on('tap', function (event) {\n    me.emit('click', me.getEventProperties(event))\n  });\n  this.on('doubletap', function (event) {\n    me.emit('doubleClick', me.getEventProperties(event))\n  });\n  this.dom.root.oncontextmenu = function (event) {\n    me.emit('contextmenu', me.getEventProperties(event))\n  };\n  \n  //Single time autoscale/fit\n  this.initialFitDone = false;\n  this.on('changed', function (){\n    if (me.itemsData == null) return;\n    if (!me.initialFitDone && !me.options.rollingMode) {\n      me.initialFitDone = true;\n      if (me.options.start != undefined || me.options.end != undefined) {\n        if (me.options.start == undefined || me.options.end == undefined) {\n          var range = me.getItemRange();\n        }\n\n        var start = me.options.start != undefined ? me.options.start : range.min;\n        var end   = me.options.end   != undefined ? me.options.end   : range.max;\n        me.setWindow(start, end, {animation: false});\n      } else {\n        me.fit({animation: false});\n      }\n    }\n\n    if (!me.initialDrawDone && (me.initialRangeChangeDone || (!me.options.start && !me.options.end) \n      || me.options.rollingMode)) {\n      me.initialDrawDone = true;\n      me.dom.root.style.visibility = 'visible';\n      me.dom.loadingScreen.parentNode.removeChild(me.dom.loadingScreen);\n      if (me.options.onInitialDrawComplete) {\n        setTimeout(() => {\n          return me.options.onInitialDrawComplete();\n        }, 0)\n      }\n    }\n  });\n  \n  // apply options\n  if (options) {\n    this.setOptions(options);\n  }\n\n  // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS!\n  if (groups) {\n    this.setGroups(groups);\n  }\n\n  // create itemset\n  if (items) {\n    this.setItems(items);\n  }\n\n  // draw for the first time\n  this._redraw();\n}\n\n// Extend the functionality from Core\nGraph2d.prototype = new Core();\n\nGraph2d.prototype.setOptions = function (options) {\n  // validate options\n  let errorFound = Validator.validate(options, allOptions);\n  if (errorFound === true) {\n    console.log('%cErrors have been found in the supplied options object.', printStyle);\n  }\n\n  Core.prototype.setOptions.call(this, options);\n};\n\n/**\n * Set items\n * @param {vis.DataSet | Array | null} items\n */\nGraph2d.prototype.setItems = function(items) {\n  var initialLoad = (this.itemsData == null);\n\n  // convert to type DataSet when needed\n  var newDataSet;\n  if (!items) {\n    newDataSet = null;\n  }\n  else if (isDataViewLike(items)) {\n    newDataSet = typeCoerceDataSet(items);\n  }\n  else {\n    // turn an array into a dataset\n    newDataSet = typeCoerceDataSet(new DataSet(items));\n  }\n\n  // set items\n  if (this.itemsData) {\n    // stop maintaining a coerced version of the old data set\n    this.itemsData.dispose()\n  }\n  this.itemsData = newDataSet;\n  this.linegraph && this.linegraph.setItems(newDataSet != null ? newDataSet.rawDS : null);\n\n  if (initialLoad) {\n    if (this.options.start != undefined || this.options.end != undefined) {\n      var start = this.options.start != undefined ? this.options.start : null;\n      var end   = this.options.end != undefined   ? this.options.end : null;\n      this.setWindow(start, end, {animation: false});\n    }\n    else {\n      this.fit({animation: false});\n    }\n  }\n};\n\n/**\n * Set groups\n * @param {vis.DataSet | Array} groups\n */\nGraph2d.prototype.setGroups = function(groups) {\n  // convert to type DataSet when needed\n  var newDataSet;\n  if (!groups) {\n    newDataSet = null;\n  }\n  else if (isDataViewLike(groups)) {\n    newDataSet = groups;\n  }\n  else {\n    // turn an array into a dataset\n    newDataSet = new DataSet(groups);\n  }\n\n  this.groupsData = newDataSet;\n  this.linegraph.setGroups(newDataSet);\n};\n\n/**\n * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right).\n * @param {vis.GraphGroup.id} groupId\n * @param {number} width\n * @param {number} height\n * @returns {{icon: SVGElement, label: string, orientation: string}|string}\n */\nGraph2d.prototype.getLegend = function(groupId, width, height) {\n  if (width  === undefined) {width  = 15;}\n  if (height === undefined) {height = 15;}\n  if (this.linegraph.groups[groupId] !== undefined) {\n    return this.linegraph.groups[groupId].getLegend(width,height);\n  }\n  else {\n    return \"cannot find group:'\" +  groupId + \"'\";\n  }\n};\n\n/**\n * This checks if the visible option of the supplied group (by ID) is true or false.\n * @param {vis.GraphGroup.id} groupId\n * @returns {boolean}\n */\nGraph2d.prototype.isGroupVisible = function(groupId) {\n  if (this.linegraph.groups[groupId] !== undefined) {\n    return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true));\n  }\n  else {\n    return false;\n  }\n};\n\n\n/**\n * Get the data range of the item set.\n * @returns {{min: Date, max: Date}} range  A range with a start and end Date.\n *                                          When no minimum is found, min==null\n *                                          When no maximum is found, max==null\n */\nGraph2d.prototype.getDataRange = function() {\n  var min = null;\n  var max = null;\n\n  // calculate min from start filed\n  for (var groupId in this.linegraph.groups) {\n    if (this.linegraph.groups.hasOwnProperty(groupId)) {\n      if (this.linegraph.groups[groupId].visible == true) {\n        for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) {\n          var item = this.linegraph.groups[groupId].itemsData[i];\n          var value = util.convert(item.x, 'Date').valueOf();\n          min = min == null ? value : min > value ? value : min;\n          max = max == null ? value : max < value ? value : max;\n        }\n      }\n    }\n  }\n\n  return {\n    min: (min != null) ? new Date(min) : null,\n    max: (max != null) ? new Date(max) : null\n  };\n};\n\n\n/**\n * Generate Timeline related information from an event\n * @param {Event} event\n * @return {Object} An object with related information, like on which area\n *                  The event happened, whether clicked on an item, etc.\n */\nGraph2d.prototype.getEventProperties = function (event) {\n  var clientX = event.center ? event.center.x : event.clientX;\n  var clientY = event.center ? event.center.y : event.clientY;\n  var x = clientX - util.getAbsoluteLeft(this.dom.centerContainer);\n  var y = clientY - util.getAbsoluteTop(this.dom.centerContainer);\n  var time = this._toTime(x);\n\n  var customTime = CustomTime.customTimeFromTarget(event);\n\n  var element = util.getTarget(event);\n  var what = null;\n  if (util.hasParent(element, this.timeAxis.dom.foreground))              {what = 'axis';}\n  else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';}\n  else if (util.hasParent(element, this.linegraph.yAxisLeft.dom.frame))   {what = 'data-axis';}\n  else if (util.hasParent(element, this.linegraph.yAxisRight.dom.frame))  {what = 'data-axis';}\n  else if (util.hasParent(element, this.linegraph.legendLeft.dom.frame))  {what = 'legend';}\n  else if (util.hasParent(element, this.linegraph.legendRight.dom.frame)) {what = 'legend';}\n  else if (customTime != null)                {what = 'custom-time';}\n  else if (util.hasParent(element, this.currentTime.bar))                 {what = 'current-time';}\n  else if (util.hasParent(element, this.dom.center))                      {what = 'background';}\n\n  var value = [];\n  var yAxisLeft = this.linegraph.yAxisLeft;\n  var yAxisRight = this.linegraph.yAxisRight;\n  if (!yAxisLeft.hidden && this.itemsData.length > 0) {\n    value.push(yAxisLeft.screenToValue(y));\n  }\n  if (!yAxisRight.hidden && this.itemsData.length > 0) {\n    value.push(yAxisRight.screenToValue(y));\n  }\n\n  return {\n    event: event,\n    customTime: customTime ? customTime.options.id : null,\n    what: what,\n    pageX: event.srcEvent ? event.srcEvent.pageX : event.pageX,\n    pageY: event.srcEvent ? event.srcEvent.pageY : event.pageY,\n    x: x,\n    y: y,\n    time: time,\n    value: value\n  }\n};\n\n/**\n * Load a configurator\n * @return {Object}\n * @private\n */\nGraph2d.prototype._createConfigurator = function () {\n  return new Configurator(this, this.dom.container, configureOptions);\n};\n\n\nexport default Graph2d;\n","console.warn(\n  [\n    \"This build has been deprecated.\",\n    \"\",\n    \"In case you are importing this through a URL it will result in a 404 eventually.\",\n    \"In case you are importing this through Node it will be replaced by the peer build eventually.\",\n    \"\",\n    \"Please use the peer or standalone build instead.\",\n    \"Peer: https://visjs.github.io/vis-timeline/examples/timeline/peer-build.html\",\n    \"Standalone: https://visjs.github.io/vis-timeline/examples/timeline/standalone-build.html\"\n  ].join(\"\\n\")\n);\n\n// locales\nimport \"moment/locale/de\";\nimport \"moment/locale/es\";\nimport \"moment/locale/fr\";\nimport \"moment/locale/it\";\nimport \"moment/locale/ja\";\nimport \"moment/locale/nl\";\nimport \"moment/locale/pl\";\nimport \"moment/locale/ru\";\nimport \"moment/locale/uk\";\n\n// utils\nimport * as util from \"vis-util/esnext\";\nimport * as DOMutil from \"./DOMutil\";\n\n// data\nimport { DataSet, DataView, Queue } from \"vis-data/esnext\";\n\n// Timeline\nimport Timeline from \"./timeline/Timeline\";\nimport Graph2d from \"./timeline/Graph2d\";\n\nimport Core from \"./timeline/Core\";\nimport * as DateUtil from \"./timeline/DateUtil\";\nimport Range from \"./timeline/Range\";\nimport * as stack from \"./timeline/Stack\";\nimport TimeStep from \"./timeline/TimeStep\";\n\nimport Item from \"./timeline/component/item/Item\";\nimport BackgroundItem from \"./timeline/component/item/BackgroundItem\";\nimport BoxItem from \"./timeline/component/item/BoxItem\";\nimport ClusterItem from \"./timeline/component/item/ClusterItem\";\nimport PointItem from \"./timeline/component/item/PointItem\";\nimport RangeItem from \"./timeline/component/item/RangeItem\";\n\nimport BackgroundGroup from \"./timeline/component/BackgroundGroup\";\nimport Component from \"./timeline/component/Component\";\nimport CurrentTime from \"./timeline/component/CurrentTime\";\nimport CustomTime from \"./timeline/component/CustomTime\";\nimport DataAxis from \"./timeline/component/DataAxis\";\nimport DataScale from \"./timeline/component/DataScale\";\nimport GraphGroup from \"./timeline/component/GraphGroup\";\nimport Group from \"./timeline/component/Group\";\nimport ItemSet from \"./timeline/component/ItemSet\";\nimport Legend from \"./timeline/component/Legend\";\nimport LineGraph from \"./timeline/component/LineGraph\";\nimport TimeAxis from \"./timeline/component/TimeAxis\";\n\n// bundled external libraries\nimport moment from \"./module/moment\";\nimport Hammer from \"./module/hammer\";\nimport keycharm from \"keycharm\";\n\nconst defaultLanguage = DOMutil.getNavigatorLanguage();\nmoment.locale(defaultLanguage);\n\nconst timeline = {\n  Core,\n  DateUtil,\n  Range,\n  stack,\n  TimeStep,\n\n  components: {\n    items: {\n      Item,\n      BackgroundItem,\n      BoxItem,\n      ClusterItem,\n      PointItem,\n      RangeItem\n    },\n\n    BackgroundGroup,\n    Component,\n    CurrentTime,\n    CustomTime,\n    DataAxis,\n    DataScale,\n    GraphGroup,\n    Group,\n    ItemSet,\n    Legend,\n    LineGraph,\n    TimeAxis\n  }\n};\n\nexport {\n  util,\n  DOMutil,\n\n  DataSet,\n  DataView,\n  Queue,\n\n  Timeline,\n  Graph2d,\n\n  timeline,\n\n  moment,\n  Hammer,\n  keycharm\n};\nexport default {\n  util,\n  DOMutil,\n\n  DataSet,\n  DataView,\n  Queue,\n\n  Timeline,\n  Graph2d,\n\n  timeline,\n\n  moment,\n  Hammer,\n  keycharm\n};\n","define(\"@ember-decorators/utils/-private/class-field-descriptor\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isDescriptor = isDescriptor;\n  _exports.isFieldDescriptor = isFieldDescriptor;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function isClassDescriptor(possibleDesc) {\n    var _possibleDesc = _slicedToArray(possibleDesc, 1),\n      target = _possibleDesc[0];\n    return possibleDesc.length === 1 && typeof target === 'function' && 'prototype' in target && !target.__isComputedDecorator;\n  }\n  function isFieldDescriptor(possibleDesc) {\n    var _possibleDesc2 = _slicedToArray(possibleDesc, 3),\n      target = _possibleDesc2[0],\n      key = _possibleDesc2[1],\n      desc = _possibleDesc2[2];\n    return possibleDesc.length === 3 && _typeof(target) === 'object' && target !== null && typeof key === 'string' && (_typeof(desc) === 'object' && desc !== null && 'enumerable' in desc && 'configurable' in desc || desc === undefined) // TS compatibility\n    ;\n  }\n  function isDescriptor(possibleDesc) {\n    return isFieldDescriptor(possibleDesc) || isClassDescriptor(possibleDesc);\n  }\n});","define(\"@ember-decorators/utils/collapse-proto\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = collapseProto;\n  function collapseProto(target) {\n    // We must collapse the superclass prototype to make sure that the `actions`\n    // object will exist. Since collapsing doesn't generally happen until a class is\n    // instantiated, we have to do it manually.\n    if (typeof target.constructor.proto === 'function') {\n      target.constructor.proto();\n    }\n  }\n});","define(\"@ember-decorators/utils/decorator\", [\"exports\", \"@ember/debug\", \"@ember-decorators/utils/-private/class-field-descriptor\"], function (_exports, _debug, _classFieldDescriptor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.decoratorWithParams = decoratorWithParams;\n  _exports.decoratorWithRequiredParams = decoratorWithRequiredParams;\n  /**\n   * A macro that takes a decorator function and allows it to optionally\n   * receive parameters\n   *\n   * ```js\n   * let foo = decoratorWithParams((target, desc, key, params) => {\n   *   console.log(params);\n   * });\n   *\n   * class {\n   *   @foo bar; // undefined\n   *   @foo('bar') baz; // ['bar']\n   * }\n   * ```\n   *\n   * @param {Function} fn - decorator function\n   */\n  function decoratorWithParams(fn) {\n    return function () {\n      for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n        params[_key] = arguments[_key];\n      }\n      // determine if user called as @computed('blah', 'blah') or @computed\n      if ((0, _classFieldDescriptor.isDescriptor)(params)) {\n        return fn.apply(void 0, params);\n      } else {\n        return function () {\n          for (var _len2 = arguments.length, desc = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            desc[_key2] = arguments[_key2];\n          }\n          return fn.apply(void 0, desc.concat([params]));\n        };\n      }\n    };\n  }\n\n  /**\n   * A macro that takes a decorator function and requires it to receive\n   * parameters:\n   *\n   * ```js\n   * let foo = decoratorWithRequiredParams((target, desc, key, params) => {\n   *   console.log(params);\n   * });\n   *\n   * class {\n   *   @foo('bar') baz; // ['bar']\n   *   @foo bar; // Error\n   * }\n   * ```\n   *\n   * @param {Function} fn - decorator function\n   */\n  function decoratorWithRequiredParams(fn, name) {\n    return function () {\n      for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        params[_key3] = arguments[_key3];\n      }\n      (true && !(!(0, _classFieldDescriptor.isDescriptor)(params) && params.length > 0) && (0, _debug.assert)(\"The @\".concat(name || fn.name, \" decorator requires parameters\"), !(0, _classFieldDescriptor.isDescriptor)(params) && params.length > 0));\n      return function () {\n        for (var _len4 = arguments.length, desc = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n          desc[_key4] = arguments[_key4];\n        }\n        return fn.apply(void 0, desc.concat([params]));\n      };\n    };\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@ember/render-modifiers/modifiers/did-insert\", [\"exports\", \"@ember/modifier\"], function (_exports, _modifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n    The `{{did-insert}}` element modifier is activated when an element is\n    inserted into the DOM.\n  \n    In this example, the `fadeIn` function receives the `div` DOM element as its\n    first argument and is executed after the element is inserted into the DOM.\n  \n    ```handlebars\n    <div {{did-insert this.fadeIn}} class=\"alert\">\n      {{yield}}\n    </div>\n    ```\n  \n    ```js\n    export default Component.extend({\n      fadeIn(element) {\n        element.classList.add('fade-in');\n      }\n    });\n    ```\n  \n    By default, the executed function will be unbound. If you would like to access\n    the component context in your function, use the `action` decorator as follows:\n  \n    ```handlebars\n    <div {{did-insert this.incrementCount}}>first</div>\n    <div {{did-insert this.incrementCount}}>second</div>\n  \n    <p>{{this.count}} elements were rendered</p>\n    ```\n  \n    ```js\n    export default Component.extend({\n      count: tracked({ value: 0 }),\n  \n      incrementCount: action(function() {\n        this.count++;\n      })\n    });\n    ```\n  \n    @method did-insert\n    @public\n  */\n  var _default = _exports.default = (0, _modifier.setModifierManager)(function () {\n    return {\n      capabilities: (0, _modifier.capabilities)('3.22', {\n        disableAutoTracking: true\n      }),\n      createModifier: function createModifier() {},\n      installModifier: function installModifier(_state, element, _ref) {\n        var _ref$positional = _toArray(_ref.positional),\n          fn = _ref$positional[0],\n          args = _ref$positional.slice(1),\n          named = _ref.named;\n        fn(element, args, named);\n      },\n      updateModifier: function updateModifier() {},\n      destroyModifier: function destroyModifier() {}\n    };\n  }, /*#__PURE__*/_createClass(function DidInsertModifier() {\n    _classCallCheck(this, DidInsertModifier);\n  }));\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@ember/render-modifiers/modifiers/did-update\", [\"exports\", \"@ember/modifier\", \"@embroider/macros/es-compat2\"], function (_exports, _modifier, _esCompat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var untrack = function () {\n    {\n      // ember-source@3.27 shipped \"real modules\" by default, so we can just use\n      // importSync to get @glimmer/validator directly\n      return (0, _esCompat.default)(require(\"@glimmer/validator\")).untrack;\n    }\n  }();\n\n  /**\n    The `{{did-update}}` element modifier is activated when any of its arguments\n    are updated. It does not run on initial render.\n  \n    In this example, the `resize` function receives the `textarea` DOM element as its\n    first argument and is executed anytime the `@text` argument changes.\n  \n    ```handlebars\n    <textarea {{did-update this.resize @text}} readonly style=\"padding: 0px;\">\n      {{@text}}\n    </textarea>\n    ```\n  \n    ```js\n    export default Component.extend({\n      resize(element) {\n        element.style.height = `${element.scrollHeight}px`;\n      }\n    });\n    ```\n  \n    In addition to the `element`, both named and positional arguments are passed to the\n    executed function:\n  \n    ```handlebars\n    <div {{did-update this.logArguments @first @second third=@third}} />\n    ```\n  \n    ```js\n    export default Component.extend({\n      logArguments(element, [first, second], { third }) {\n        console.log('element', element);\n        console.log('positional args', first, second);\n        console.log('names args', third);\n      }\n    });\n    ```\n  \n    By default, the executed function will be unbound. If you would like to access\n    the component context in your function, use the `action` decorator as follows:\n  \n    ```handlebars\n    <div {{did-update this.someFunction @someArg} />\n    ```\n  \n    ```js\n    export default Component.extend({\n      someFunction: action(function(element, [someArg]) {\n        // the `this` context will be the component instance\n      })\n    });\n    ```\n  \n    @method did-update\n    @public\n  */\n  var _default = _exports.default = (0, _modifier.setModifierManager)(function () {\n    return {\n      capabilities: (0, _modifier.capabilities)('3.22', {\n        disableAutoTracking: false\n      }),\n      createModifier: function createModifier() {\n        return {\n          element: null\n        };\n      },\n      installModifier: function installModifier(state, element, args) {\n        // save element into state bucket\n        state.element = element;\n        {\n          // Consume individual properties to entangle tracking.\n          // https://github.com/emberjs/ember.js/issues/19277\n          // https://github.com/ember-modifier/ember-modifier/pull/63#issuecomment-815908201\n          args.positional.forEach(function () {});\n          args.named && Object.values(args.named);\n        }\n      },\n      updateModifier: function updateModifier(_ref, args) {\n        var element = _ref.element;\n        var _args$positional = _toArray(args.positional),\n          fn = _args$positional[0],\n          positional = _args$positional.slice(1);\n        {\n          // Consume individual properties to entangle tracking.\n          // https://github.com/emberjs/ember.js/issues/19277\n          // https://github.com/ember-modifier/ember-modifier/pull/63#issuecomment-815908201\n          args.positional.forEach(function () {});\n          args.named && Object.values(args.named);\n          untrack(function () {\n            fn(element, positional, args.named);\n          });\n        }\n      },\n      destroyModifier: function destroyModifier() {}\n    };\n  }, /*#__PURE__*/_createClass(function DidUpdateModifier() {\n    _classCallCheck(this, DidUpdateModifier);\n  }));\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@ember/render-modifiers/modifiers/will-destroy\", [\"exports\", \"@ember/modifier\"], function (_exports, _modifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n    The `{{will-destroy}}` element modifier is activated immediately before the element\n    is removed from the DOM.\n  \n    ```handlebars\n    <div {{will-destroy this.teardownPlugin}}>\n      {{yield}}\n    </div>\n    ```\n  \n    ```js\n    export default Component.extend({\n      teardownPlugin(element) {\n        // teardown logic here\n      }\n    });\n    ```\n  \n    By default, the executed function will be unbound. If you would like to access\n    the component context in your function, use the `action` decorator as follows:\n  \n    ```handlebars\n    <div {{will-destroy this.teardownPlugin}}>\n      {{yield}}\n    </div>\n    ```\n  \n    ```js\n    export default Component.extend({\n      teardownPlugin: action(function(element) {\n        // the `this` context will be the component instance\n      })\n    });\n    ```\n  \n    @method will-destroy\n    @public\n  */\n  var _default = _exports.default = (0, _modifier.setModifierManager)(function () {\n    return {\n      capabilities: (0, _modifier.capabilities)('3.22', {\n        disableAutoTracking: true\n      }),\n      createModifier: function createModifier() {\n        return {\n          element: null\n        };\n      },\n      installModifier: function installModifier(state, element) {\n        state.element = element;\n      },\n      updateModifier: function updateModifier() {},\n      destroyModifier: function destroyModifier(_ref, args) {\n        var element = _ref.element;\n        var _args$positional = _toArray(args.positional),\n          fn = _args$positional[0],\n          positional = _args$positional.slice(1);\n        fn(element, positional, args.named);\n      }\n    };\n  }, /*#__PURE__*/_createClass(function WillDestroyModifier() {\n    _classCallCheck(this, WillDestroyModifier);\n  }));\n});","define(\"@ember/test-waiters/build-waiter\", [\"exports\", \"@ember/debug\", \"@ember/test-waiters/token\", \"@ember/test-waiters/waiter-manager\"], function (_exports, _debug, _token, _waiterManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports._resetWaiterNames = _resetWaiterNames;\n  _exports.default = buildWaiter;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var WAITER_NAME_PATTERN = /^[^:]*:?.*/;\n  var WAITER_NAMES = true /* DEBUG */ ? new Set() : undefined;\n  function _resetWaiterNames() {\n    WAITER_NAMES = new Set();\n  }\n  function getNextToken() {\n    return new _token.default();\n  }\n  var TestWaiterImpl = /*#__PURE__*/function () {\n    function TestWaiterImpl(name, nextToken) {\n      _classCallCheck(this, TestWaiterImpl);\n      _defineProperty(this, \"isRegistered\", false);\n      _defineProperty(this, \"items\", new Map());\n      _defineProperty(this, \"completedOperationsForTokens\", new WeakMap());\n      _defineProperty(this, \"completedOperationsForPrimitives\", new Map());\n      this.name = name; // @ts-ignore\n\n      this.nextToken = nextToken || getNextToken;\n    }\n    return _createClass(TestWaiterImpl, [{\n      key: \"beginAsync\",\n      value: function beginAsync() {\n        var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.nextToken();\n        var label = arguments.length > 1 ? arguments[1] : undefined;\n        this._register();\n        if (this.items.has(token)) {\n          throw new Error(\"beginAsync called for \".concat(token, \" but it is already pending.\"));\n        }\n        var error = new Error();\n        this.items.set(token, {\n          get stack() {\n            return error.stack;\n          },\n          label: label\n        });\n        return token;\n      }\n    }, {\n      key: \"endAsync\",\n      value: function endAsync(token) {\n        if (!this.items.has(token) && !this._getCompletedOperations(token).has(token)) {\n          throw new Error(\"testWaiter.endAsync called with no preceding testWaiter.beginAsync call.\\n        Test waiter calls should always be paired. This can occur when a test waiter's paired calls are invoked in a non-deterministic order.\\n\\n        See https://github.com/emberjs/ember-test-waiters#keep-beginasyncendasync-in-same-block-scope for more information.\");\n        }\n        this.items.delete(token); // Mark when a waiter operation has completed so we can distinguish\n        // whether endAsync is being called before a prior beginAsync call above.\n\n        this._getCompletedOperations(token).set(token, true);\n      }\n    }, {\n      key: \"waitUntil\",\n      value: function waitUntil() {\n        return this.items.size === 0;\n      }\n    }, {\n      key: \"debugInfo\",\n      value: function debugInfo() {\n        var result = [];\n        this.items.forEach(function (value) {\n          result.push(value);\n        });\n        return result;\n      }\n    }, {\n      key: \"reset\",\n      value: function reset() {\n        this.items.clear();\n      }\n    }, {\n      key: \"_register\",\n      value: function _register() {\n        if (!this.isRegistered) {\n          (0, _waiterManager.register)(this);\n          this.isRegistered = true;\n        }\n      }\n    }, {\n      key: \"_getCompletedOperations\",\n      value: function _getCompletedOperations(token) {\n        var type = _typeof(token);\n        var isFunction = type === 'function';\n        var isObject = token !== null && type === 'object';\n        var isPrimitive = !isFunction && !isObject;\n        return isPrimitive ? this.completedOperationsForPrimitives : this.completedOperationsForTokens;\n      }\n    }]);\n  }();\n  var NoopTestWaiter = /*#__PURE__*/function () {\n    function NoopTestWaiter(name) {\n      _classCallCheck(this, NoopTestWaiter);\n      this.name = name;\n    }\n    return _createClass(NoopTestWaiter, [{\n      key: \"beginAsync\",\n      value: function beginAsync() {\n        return this;\n      }\n    }, {\n      key: \"endAsync\",\n      value: function endAsync() {}\n    }, {\n      key: \"waitUntil\",\n      value: function waitUntil() {\n        return true;\n      }\n    }, {\n      key: \"debugInfo\",\n      value: function debugInfo() {\n        return [];\n      }\n    }, {\n      key: \"reset\",\n      value: function reset() {}\n    }]);\n  }();\n  /**\n   * Builds and returns a test waiter. The type of the\n   * returned waiter is dependent on whether the app or\n   * addon is in `DEBUG` mode or not.\n   *\n   * @public\n   *\n   * @param name {string} The name of the test waiter\n   * @returns {TestWaiter}\n   *\n   * @example\n   *\n   * import Component from '@ember/component';\n   * import { buildWaiter } from '@ember/test-waiters';\n   *\n   * if (DEBUG) {\n   *   let waiter = buildWaiter('friend-waiter');\n   * }\n   *\n   * export default class Friendz extends Component {\n   *   didInsertElement() {\n   *     let token = waiter.beginAsync(this);\n   *\n   *     someAsyncWork().then(() => {\n   *       waiter.endAsync(token);\n   *     });\n   *   }\n   * }\n   */\n  function buildWaiter(name) {\n    if (true /* DEBUG */) {\n      (true && (0, _debug.warn)(\"The waiter name '\".concat(name, \"' is already in use\"), !WAITER_NAMES.has(name), {\n        id: '@ember/test-waiters.duplicate-waiter-name'\n      }));\n      WAITER_NAMES.add(name);\n    }\n    if (!true /* DEBUG */) {\n      return new NoopTestWaiter(name);\n    } else {\n      (true && (0, _debug.warn)(\"You must provide a name that contains a descriptive prefix separated by a colon.\\n\\n        Example: ember-fictitious-addon:some-file\\n\\n        You passed: \".concat(name), WAITER_NAME_PATTERN.test(name), {\n        id: '@ember/test-waiters.invalid-waiter-name'\n      }));\n      return new TestWaiterImpl(name);\n    }\n  }\n});","define(\"@ember/test-waiters/index\", [\"exports\", \"@ember/test-waiters/waiter-manager\", \"@ember/test-waiters/build-waiter\", \"@ember/test-waiters/wait-for-promise\", \"@ember/test-waiters/wait-for\"], function (_exports, _waiterManager, _buildWaiter, _waitForPromise, _waitFor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"_reset\", {\n    enumerable: true,\n    get: function get() {\n      return _waiterManager._reset;\n    }\n  });\n  Object.defineProperty(_exports, \"_resetWaiterNames\", {\n    enumerable: true,\n    get: function get() {\n      return _buildWaiter._resetWaiterNames;\n    }\n  });\n  Object.defineProperty(_exports, \"buildWaiter\", {\n    enumerable: true,\n    get: function get() {\n      return _buildWaiter.default;\n    }\n  });\n  Object.defineProperty(_exports, \"getPendingWaiterState\", {\n    enumerable: true,\n    get: function get() {\n      return _waiterManager.getPendingWaiterState;\n    }\n  });\n  Object.defineProperty(_exports, \"getWaiters\", {\n    enumerable: true,\n    get: function get() {\n      return _waiterManager.getWaiters;\n    }\n  });\n  Object.defineProperty(_exports, \"hasPendingWaiters\", {\n    enumerable: true,\n    get: function get() {\n      return _waiterManager.hasPendingWaiters;\n    }\n  });\n  Object.defineProperty(_exports, \"register\", {\n    enumerable: true,\n    get: function get() {\n      return _waiterManager.register;\n    }\n  });\n  Object.defineProperty(_exports, \"unregister\", {\n    enumerable: true,\n    get: function get() {\n      return _waiterManager.unregister;\n    }\n  });\n  Object.defineProperty(_exports, \"waitFor\", {\n    enumerable: true,\n    get: function get() {\n      return _waitFor.default;\n    }\n  });\n  Object.defineProperty(_exports, \"waitForPromise\", {\n    enumerable: true,\n    get: function get() {\n      return _waitForPromise.default;\n    }\n  });\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@ember/test-waiters/token\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  /**\n   * A class representing a test waiter token.\n   *\n   * @public\n   * @class\n   */\n  var Token = _exports.default = /*#__PURE__*/_createClass(function Token() {\n    _classCallCheck(this, Token);\n  });\n});","define(\"@ember/test-waiters/types/index\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n});","define(\"@ember/test-waiters/wait-for-promise\", [\"exports\", \"@ember/test-waiters/build-waiter\"], function (_exports, _buildWaiter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = waitForPromise;\n  var PROMISE_WAITER = (0, _buildWaiter.default)('@ember/test-waiters:promise-waiter');\n  /**\n   * A convenient utility function to simplify waiting for a promise.\n   *\n   * @public\n   * @param promise {Promise<T> | RSVP.Promise<T>} The promise to track async operations for\n   * @param label {string} An optional string to identify the promise\n   *\n   * @example\n   *\n   * import Component from '@ember/component';\n   * import { waitForPromise } from '@ember/test-waiters';\n   *\n   * export default class Friendz extends Component {\n   *   didInsertElement() {\n   *     waitForPromise(new Promise(resolve => {\n   *       doSomeWork();\n   *       resolve();\n   *     }));\n   *   }\n   * }\n   */\n\n  function waitForPromise(promise, label) {\n    var result = promise;\n    if (true /* DEBUG */) {\n      PROMISE_WAITER.beginAsync(promise, label);\n      result = promise.then(function (value) {\n        PROMISE_WAITER.endAsync(promise);\n        return value;\n      }, function (error) {\n        PROMISE_WAITER.endAsync(promise);\n        throw error;\n      });\n    }\n    return result;\n  }\n});","define(\"@ember/test-waiters/wait-for\", [\"exports\", \"@ember/test-waiters/wait-for-promise\", \"@ember/test-waiters/build-waiter\"], function (_exports, _waitForPromise, _buildWaiter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = waitFor;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function waitFor() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var isFunction = args.length < 3;\n    if (isFunction) {\n      var fn = args[0],\n        label = args[1];\n      return wrapFunction(fn, label);\n    } else {\n      var descriptor = args[2],\n        _label = args[3];\n      if (!true /* DEBUG */) {\n        return descriptor;\n      }\n      var _fn = descriptor.value;\n      descriptor.value = wrapFunction(_fn, _label);\n      return descriptor;\n    }\n  }\n  function wrapFunction(fn, label) {\n    if (!true /* DEBUG */) {\n      return fn;\n    }\n    return function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      var result = fn.call.apply(fn, [this].concat(args));\n      if (isThenable(result)) {\n        return (0, _waitForPromise.default)(result, label);\n      } else if (isGenerator(result)) {\n        return waitForGenerator(result, label);\n      } else {\n        return result;\n      }\n    };\n  }\n  function isThenable(maybePromise) {\n    var type = _typeof(maybePromise);\n    return (maybePromise !== null && type === 'object' || type === 'function') && typeof maybePromise.then === 'function';\n  }\n  function isGenerator(maybeGenerator) {\n    // Because we don't have Symbol.iterator in IE11\n    return typeof maybeGenerator.next === 'function' && typeof maybeGenerator.return === 'function' && typeof maybeGenerator.throw === 'function';\n  }\n  var GENERATOR_WAITER = (0, _buildWaiter.default)('@ember/test-waiters:generator-waiter');\n  function waitForGenerator(generator, label) {\n    GENERATOR_WAITER.beginAsync(generator, label);\n    var isWaiting = true;\n    function stopWaiting() {\n      if (isWaiting) {\n        GENERATOR_WAITER.endAsync(generator);\n        isWaiting = false;\n      }\n    }\n    return {\n      next: function next() {\n        var hasErrored = true;\n        try {\n          var val = generator.next.apply(generator, arguments);\n          hasErrored = false;\n          if (val.done) {\n            stopWaiting();\n          }\n          return val;\n        } finally {\n          // If generator.next() throws, we need to stop waiting. But if we catch\n          // and re-throw exceptions, it could move the location from which the\n          // uncaught exception is thrown, interfering with the developer\n          // debugging experience if they have break-on-exceptions enabled. So we\n          // use a boolean flag and a finally block to emulate a catch block.\n          if (hasErrored) {\n            stopWaiting();\n          }\n        }\n      },\n      return: function _return() {\n        stopWaiting();\n        return generator.return.apply(generator, arguments);\n      },\n      throw: function _throw() {\n        stopWaiting();\n        return generator.throw.apply(generator, arguments);\n      }\n    };\n  }\n});","define(\"@ember/test-waiters/waiter-manager\", [\"exports\", \"ember\", \"@ember/test\"], function (_exports, _ember, _test) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports._reset = _reset;\n  _exports.getPendingWaiterState = getPendingWaiterState;\n  _exports.getWaiters = getWaiters;\n  _exports.hasPendingWaiters = hasPendingWaiters;\n  _exports.register = register;\n  _exports.unregister = unregister;\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  // this ensures that if @ember/test-waiters exists in multiple places in the\n  // build output we will still use a single map of waiters (there really should\n  // only be one of them, or else `settled` will not work at all)\n  var WAITERS = function () {\n    var HAS_SYMBOL = typeof Symbol !== 'undefined';\n    var symbolName = 'TEST_WAITERS';\n    var symbol = HAS_SYMBOL ? Symbol.for(symbolName) : symbolName;\n    var global = getGlobal();\n    var waiters = global[symbol];\n    if (waiters === undefined) {\n      waiters = global[symbol] = new Map();\n    }\n    return waiters;\n  }();\n  function indexable(input) {\n    return input;\n  }\n  function getGlobal() {\n    // eslint-disable-next-line node/no-unsupported-features/es-builtins\n    if (typeof globalThis !== 'undefined') return indexable(globalThis);\n    if (typeof self !== 'undefined') return indexable(self);\n    if (typeof window !== 'undefined') return indexable(window);\n    if (typeof global !== 'undefined') return indexable(global);\n    throw new Error('unable to locate global object');\n  }\n  /**\n   * Backwards compatibility with legacy waiters system.\n   *\n   * We want to always register a waiter using the legacy waiter system, as right\n   * now if consumers are not on the right version of @ember/test-helpers, using\n   * this addon will result in none of these waiters waiting.\n   */\n  // eslint-disable-next-line ember/new-module-imports\n\n  if (_ember.default.Test) {\n    (0, _test.registerWaiter)(function () {\n      return !hasPendingWaiters();\n    });\n  }\n  /**\n   * Registers a waiter.\n   *\n   * @public\n   * @param waiter {Waiter} A test waiter instance\n   */\n\n  function register(waiter) {\n    WAITERS.set(waiter.name, waiter);\n  }\n  /**\n   * Un-registers a waiter.\n   *\n   * @public\n   * @param waiter {Waiter} A test waiter instance\n   */\n\n  function unregister(waiter) {\n    WAITERS.delete(waiter.name);\n  }\n  /**\n   * Gets an array of all waiters current registered.\n   *\n   * @public\n   * @returns {Waiter[]}\n   */\n\n  function getWaiters() {\n    var result = [];\n    WAITERS.forEach(function (value) {\n      result.push(value);\n    });\n    return result;\n  }\n  /**\n   * Clears all waiters.\n   *\n   * @private\n   */\n\n  function _reset() {\n    var _iterator = _createForOfIteratorHelper(getWaiters()),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var waiter = _step.value;\n        waiter.isRegistered = false;\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n    WAITERS.clear();\n  }\n  /**\n   * Gets the current state of all waiters. Any waiters whose\n   * `waitUntil` method returns false will be considered `pending`.\n   *\n   * @returns {PendingWaiterState} An object containing a count of all waiters\n   * pending and a `waiters` object containing the name of all pending waiters\n   * and their debug info.\n   */\n\n  function getPendingWaiterState() {\n    var result = {\n      pending: 0,\n      waiters: {}\n    };\n    WAITERS.forEach(function (waiter) {\n      if (!waiter.waitUntil()) {\n        result.pending++;\n        var debugInfo = waiter.debugInfo();\n        result.waiters[waiter.name] = debugInfo || true;\n      }\n    });\n    return result;\n  }\n  /**\n   * Determines if there are any pending waiters.\n   *\n   * @returns {boolean} `true` if there are pending waiters, otherwise `false`.\n   */\n\n  function hasPendingWaiters() {\n    var state = getPendingWaiterState();\n    return state.pending > 0;\n  }\n});","define(\"@embroider/macros/es-compat2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = esCompat;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function esCompat(m) {\n    return m !== null && m !== void 0 && m.__esModule ? m : _objectSpread({\n      default: m\n    }, m);\n  }\n});","define(\"@embroider/macros/runtime\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.config = config;\n  _exports.each = each;\n  _exports.getGlobalConfig = getGlobalConfig;\n  _exports.isTesting = isTesting;\n  _exports.macroCondition = macroCondition;\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  /*\n    These are the runtime implementations for the javascript macros that have\n    runtime implementations.\n  \n    Not every macro has a runtime implementation, some only make sense in the\n    build and always run there.\n  \n    Even when we have runtime implementations, we are still careful to emit static\n    errors during the build wherever possible, and runtime errors when necessary,\n    so that you're not surprised when you switch from runtime-mode to compile-time\n    mode.\n  */\n\n  /*\n    CAUTION: in classic builds, this file gets shared by all present copies of\n    @embroider/macros. If you want to change its public API, you need to rename it\n    and update `pathToRuntime` in ../babel/state.ts to point at it, so that your\n    babel plugin and runtime will match.\n  */\n\n  function each(array) {\n    if (!Array.isArray(array)) {\n      throw new Error(\"the argument to the each() macro must be an array\");\n    }\n    return array;\n  }\n  function macroCondition(predicate) {\n    return predicate;\n  }\n\n  // This is here as a compile target for `getConfig` and `getOwnConfig` when\n  // we're in runtime mode. This is not public API to call from your own code.\n  function config(packageRoot) {\n    return runtimeConfig.packages[packageRoot];\n  }\n  function getGlobalConfig() {\n    return runtimeConfig.global;\n  }\n  function isTesting() {\n    var g = runtimeConfig.global;\n    var e = g && g['@embroider/macros'];\n    return Boolean(e && e.isTesting);\n  }\n  var runtimeConfig = initializeRuntimeMacrosConfig();\n\n  // this exists to be targeted by our babel plugin\n  function initializeRuntimeMacrosConfig() {\n    return {\n      \"packages\": {\n        \"/opt/atlassian/pipelines/agent/build/node_modules/.pnpm/ember-get-config@2.1.1/node_modules/ember-get-config\": {\n          \"modulePrefix\": \"@opswiz/frontend\"\n        },\n        \"/opt/atlassian/pipelines/agent/build/node_modules/.pnpm/ember-bootstrap@6.4.2_@babel+core@7.26.0_@ember+string@4.0.0_@glimmer+component@1.1.2_@_7e62056da39721e7e59d5b1f97db6f7e/node_modules/ember-bootstrap\": {\n          \"isBS4\": true,\n          \"isBS5\": false,\n          \"isNotBS5\": true,\n          \"version\": \"6.4.2\"\n        },\n        \"/opt/atlassian/pipelines/agent/build/node_modules/.pnpm/ember-froala-editor@4.4.0_ember-source@5.12.0_@glimmer+component@1.1.2_@babel+core@7.26_db70803d62be8245b5215fe1ee3e80e4/node_modules/ember-froala-editor\": {\n          \"languages\": [\"es.js\"],\n          \"plugins\": {\n            \"css\": [\"char_counter.min.css\", \"table.min.css\", \"colors.min.css\"],\n            \"js\": [\"align.min.js\", \"char_counter.min.js\", \"paragraph_format.min.js\", \"table.min.js\", \"inline_style.min.js\", \"colors.min.js\", \"font_family.min.js\"]\n          },\n          \"third_party\": {\n            \"css\": [],\n            \"js\": []\n          },\n          \"themes\": [\"royal.min.css\"]\n        }\n      },\n      \"global\": {\n        \"@embroider/macros\": {\n          \"isTesting\": false\n        },\n        \"WarpDrive\": {\n          \"debug\": {\n            \"LOG_GRAPH\": false,\n            \"LOG_IDENTIFIERS\": false,\n            \"LOG_INSTANCE_CACHE\": false,\n            \"LOG_MUTATIONS\": false,\n            \"LOG_NOTIFICATIONS\": false,\n            \"LOG_OPERATIONS\": false,\n            \"LOG_PAYLOADS\": false,\n            \"LOG_REQUESTS\": false,\n            \"LOG_REQUEST_STATUS\": false\n          },\n          \"polyfillUUID\": false,\n          \"includeDataAdapter\": true,\n          \"compatWith\": null,\n          \"deprecations\": {\n            \"DEPRECATE_CATCH_ALL\": true,\n            \"DEPRECATE_COMPUTED_CHAINS\": true,\n            \"DEPRECATE_EMBER_INFLECTOR\": true,\n            \"DEPRECATE_LEGACY_IMPORTS\": true,\n            \"DEPRECATE_MANY_ARRAY_DUPLICATES\": true,\n            \"DEPRECATE_NON_STRICT_ID\": true,\n            \"DEPRECATE_NON_STRICT_TYPES\": true,\n            \"DEPRECATE_NON_UNIQUE_PAYLOADS\": true,\n            \"DEPRECATE_RELATIONSHIP_REMOTE_UPDATE_CLEARING_LOCAL_STATE\": true,\n            \"DEPRECATE_STORE_EXTENDS_EMBER_OBJECT\": true,\n            \"ENABLE_LEGACY_SCHEMA_SERVICE\": true\n          },\n          \"features\": {\n            \"SAMPLE_FEATURE_FLAG\": false\n          },\n          \"env\": {\n            \"TESTING\": true,\n            \"PRODUCTION\": false,\n            \"DEBUG\": true,\n            \"IS_RECORDING\": false,\n            \"IS_CI\": true,\n            \"SHOULD_RECORD\": false\n          }\n        }\n      }\n    };\n  }\n  function updaterMethods() {\n    return {\n      config: config,\n      getGlobalConfig: getGlobalConfig,\n      setConfig: function setConfig(packageRoot, value) {\n        runtimeConfig.packages[packageRoot] = value;\n      },\n      setGlobalConfig: function setGlobalConfig(key, value) {\n        runtimeConfig.global[key] = value;\n      }\n    };\n  }\n\n  // this is how runtime config can get injected at boot. I'm not sure yet if this\n  // should be public API, but we certainly need it internally to set things like\n  // the global fastboot.isRunning.\n  //\n  // consumers of this API push a function onto\n  // window._embroider_macros_runtime_config. The function is given four methods\n  // which allow it to read and write the per-package and global configs. The\n  // reason for allowing both read & write is that merging strategies are up to\n  // each consumers -- read first, then merge, then write.\n  //\n  // For an example user of this API, see where we generate\n  // embroider_macros_fastboot_init.js' in @embroider/core.\n  var updaters = typeof window !== 'undefined' ? window._embroider_macros_runtime_config : undefined;\n  if (updaters) {\n    var methods = updaterMethods();\n    var _iterator = _createForOfIteratorHelper(updaters),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var updater = _step.value;\n        updater(methods);\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n  }\n});","define(\"@embroider/util/ember-private-api\", [\"exports\", \"@embroider/macros/es-compat2\"], function (_exports, _esCompat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isCurriedComponentDefinition = void 0;\n  _exports.lookupCurriedComponentDefinition = lookupCurriedComponentDefinition;\n  var runtime;\n  {\n    // new enough ember has a real module we can import\n    runtime = (0, _esCompat.default)(require(\"@glimmer/runtime\"));\n  }\n  var _runtime = runtime,\n    isCurriedComponentDefinition = _exports.isCurriedComponentDefinition = _runtime.isCurriedComponentDefinition,\n    CurriedComponentDefinition = _runtime.CurriedComponentDefinition,\n    curry = _runtime.curry,\n    CurriedValue = _runtime.CurriedValue;\n\n  // older embers have isCurriedComponentDefinition, new ones have CurriedValue\n  // and instanceof CurriedValue seems good enough.\n  if (!isCurriedComponentDefinition) {\n    _exports.isCurriedComponentDefinition = isCurriedComponentDefinition = function isCurriedComponentDefinition(value) {\n      return value instanceof CurriedValue;\n    };\n  }\n  function runtimeResolver(owner) {\n    var resolver = owner.lookup('renderer:-dom')._runtimeResolver;\n    if (resolver) {\n      return resolver;\n    }\n    var entry = Object.entries(owner.__container__.cache).find(function (e) {\n      return e[0].startsWith('template-compiler:main-');\n    });\n    if (entry) {\n      return entry[1].resolver.resolver;\n    }\n    throw new Error(\"@embroider/util couldn't locate the runtime resolver on this ember version\");\n  }\n  function lookupCurriedComponentDefinition(name, owner) {\n    var resolver = runtimeResolver(owner);\n    if (typeof resolver.lookupComponentHandle === 'function') {\n      var handle = resolver.lookupComponentHandle(name, contextForLookup(owner));\n      if (handle != null) {\n        return new CurriedComponentDefinition(resolver.resolve(handle), null);\n      }\n    }\n\n    // here we're doing the same thing the internal currying does, in order to\n    // generate a sane error message (even though we don't actually use\n    // resolvedDefinition as part of our return value).\n    var resolvedDefinition = resolver.lookupComponent(name, owner);\n    if (!resolvedDefinition) {\n      throw new Error(\"Attempted to resolve `\".concat(name, \"` via ensureSafeComponent, but nothing was found.\"));\n    }\n    return curry(0, name, owner, {\n      named: {},\n      positional: []\n    });\n  }\n  function contextForLookup(owner) {\n    {\n      return owner;\n    }\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@embroider/util/index\", [\"exports\", \"@ember/debug\", \"@ember/application\", \"@embroider/util/ember-private-api\", \"@ember/component/helper\"], function (_exports, _debug, _application, _emberPrivateApi, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.EnsureSafeComponentHelper = void 0;\n  _exports.ensureSafeComponent = ensureSafeComponent;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function ensureSafeComponent(value, thingWithOwner) {\n    if (typeof value === 'string') {\n      return handleString(value, thingWithOwner);\n    } else if ((0, _emberPrivateApi.isCurriedComponentDefinition)(value)) {\n      return value;\n    } else if (value == null) {\n      return value;\n    } else {\n      return handleClass(value, thingWithOwner);\n    }\n  }\n  var EnsureSafeComponentHelper = _exports.EnsureSafeComponentHelper = /*#__PURE__*/function (_Helper) {\n    function EnsureSafeComponentHelper() {\n      _classCallCheck(this, EnsureSafeComponentHelper);\n      return _callSuper(this, EnsureSafeComponentHelper, arguments);\n    }\n    _inherits(EnsureSafeComponentHelper, _Helper);\n    return _createClass(EnsureSafeComponentHelper, [{\n      key: \"compute\",\n      value: function compute(_ref) {\n        var _ref2 = _slicedToArray(_ref, 1),\n          value = _ref2[0];\n        return ensureSafeComponent(value, this);\n      }\n    }]);\n  }(_helper.default);\n  function handleString(name, thingWithOwner) {\n    (true && !(false) && (0, _debug.deprecate)(\"You're trying to invoke the component \\\"\".concat(name, \"\\\" by passing its name as a string. This won't work under Embroider.\"), false, {\n      id: 'ensure-safe-component.string',\n      url: 'https://github.com/embroider-build/embroider/blob/main/docs/replacing-component-helper.md#when-youre-passing-a-component-to-someone-else',\n      until: 'embroider',\n      for: '@embroider/util',\n      since: '0.27.0'\n    }));\n    var owner = (0, _application.getOwner)(thingWithOwner);\n    return (0, _emberPrivateApi.lookupCurriedComponentDefinition)(name, owner);\n  }\n  function ensureRegistered(klass, owner) {\n    var service = owner.lookup('service:-ensure-registered');\n    (true && !(service) && (0, _debug.assert)('Could not lookup private -ensure-registered service', service));\n    return service.register(klass, owner);\n  }\n  function handleClass(klass, thingWithOwner) {\n    {\n      return klass;\n    }\n  }\n});","define(\"@embroider/util/services/ensure-registered\", [\"exports\", \"@ember/service\", \"@ember/application\"], function (_exports, _service, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var EnsureRegisteredService = _exports.default = /*#__PURE__*/function (_Service) {\n    function EnsureRegisteredService() {\n      var _this;\n      _classCallCheck(this, EnsureRegisteredService);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, EnsureRegisteredService, [].concat(args));\n      _defineProperty(_this, \"classNonces\", new WeakMap());\n      _defineProperty(_this, \"nonceCounter\", 0);\n      return _this;\n    }\n    _inherits(EnsureRegisteredService, _Service);\n    return _createClass(EnsureRegisteredService, [{\n      key: \"register\",\n      value: function register(klass) {\n        var owner = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _application.getOwner)(this);\n        var nonce = this.classNonces.get(klass);\n        if (nonce == null) {\n          nonce = \"-ensure\".concat(this.nonceCounter++);\n          this.classNonces.set(klass, nonce);\n          owner.register(\"component:\".concat(nonce), klass);\n        }\n        return nonce;\n      }\n    }]);\n  }(_service.default);\n});","define(\"@fortawesome/ember-fontawesome/components/fa-icon\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@fortawesome/fontawesome-svg-core\", \"@ember/template\", \"ember-get-config\", \"@ember/template-factory\"], function (_exports, _component, _component2, _fontawesomeSvgCore, _template, _emberGetConfig, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@fortawesome/fontawesome-svg-core\",0,\"@ember/template\",0,\"ember-get-config\",0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{~#if this.iconExists~}}\n      <svg\n          style={{this.safeStyle}}\n          class={{this.iconAttributes.class}}\n          data-prefix={{this.dataPrefix}}\n          data-icon={{this.dataIcon}}\n          data-fa-transform={{this.dataFaTransform}}\n          data-fa-mask={{this.dataFaMask}}\n          data-fa-processed={{this.dataFaProcessed}}\n          aria-hidden={{this.ariaHidden}}\n          aria-labelledby={{this.ariaLabelledBy}}\n          focusable={{this.iconAttributes.focusable}}\n          role={{this.iconAttributes.role}}\n          xmlns={{this.iconAttributes.xmlns}}\n          viewBox={{this.viewBox}}\n          ...attributes\n      >\n          {{this.content}}\n      </svg>\n  {{~/if~}}\n  \n  */\n  {\n    \"id\": \"mCLM3HnH\",\n    \"block\": \"[[[41,[30,0,[\\\"iconExists\\\"]],[[[11,\\\"svg\\\"],[16,5,[30,0,[\\\"safeStyle\\\"]]],[16,0,[30,0,[\\\"iconAttributes\\\",\\\"class\\\"]]],[16,\\\"data-prefix\\\",[30,0,[\\\"dataPrefix\\\"]]],[16,\\\"data-icon\\\",[30,0,[\\\"dataIcon\\\"]]],[16,\\\"data-fa-transform\\\",[30,0,[\\\"dataFaTransform\\\"]]],[16,\\\"data-fa-mask\\\",[30,0,[\\\"dataFaMask\\\"]]],[16,\\\"data-fa-processed\\\",[30,0,[\\\"dataFaProcessed\\\"]]],[16,\\\"aria-hidden\\\",[30,0,[\\\"ariaHidden\\\"]]],[16,\\\"aria-labelledby\\\",[30,0,[\\\"ariaLabelledBy\\\"]]],[16,\\\"focusable\\\",[30,0,[\\\"iconAttributes\\\",\\\"focusable\\\"]]],[16,\\\"role\\\",[30,0,[\\\"iconAttributes\\\",\\\"role\\\"]]],[16,\\\"xmlns\\\",[30,0,[\\\"iconAttributes\\\",\\\"xmlns\\\"]],\\\"http://www.w3.org/2000/xmlns/\\\"],[16,\\\"viewBox\\\",[30,0,[\\\"viewBox\\\"]]],[17,1],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"content\\\"]]],[1,\\\"\\\\n    \\\"],[13]],[]],null]],[\\\"&attrs\\\"],false,[\\\"if\\\",\\\"svg\\\"]]\",\n    \"moduleName\": \"@fortawesome/ember-fontawesome/components/fa-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  function objectWithKey(key, value) {\n    return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n  }\n  function normalizeIconArgs(prefix, icon) {\n    var _appConfig$fontawesom, _appConfig$fontawesom2;\n    var defaultPrefix = (_appConfig$fontawesom = _emberGetConfig.default === null || _emberGetConfig.default === void 0 || (_appConfig$fontawesom2 = _emberGetConfig.default.fontawesome) === null || _appConfig$fontawesom2 === void 0 ? void 0 : _appConfig$fontawesom2.defaultPrefix) !== null && _appConfig$fontawesom !== void 0 ? _appConfig$fontawesom : 'fas';\n    if (!icon) {\n      return {\n        prefix: defaultPrefix,\n        iconName: null\n      };\n    }\n    if (_typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n      return icon;\n    }\n    if (_fontawesomeSvgCore.parse.icon) {\n      if (typeof prefix === 'string' && typeof icon === 'string') {\n        return _fontawesomeSvgCore.parse.icon({\n          prefix: prefix,\n          iconName: icon\n        });\n      }\n      if (typeof icon === 'string') {\n        return _fontawesomeSvgCore.parse.icon({\n          prefix: defaultPrefix,\n          iconName: icon\n        });\n      }\n    }\n    if (typeof prefix === 'string' && typeof icon === 'string') {\n      return {\n        prefix: prefix,\n        iconName: icon\n      };\n    }\n    if (typeof icon === 'string') {\n      return {\n        prefix: defaultPrefix,\n        iconName: icon\n      };\n    }\n  }\n  var FaIconComponent = _exports.default = /*#__PURE__*/function (_Component) {\n    function FaIconComponent() {\n      _classCallCheck(this, FaIconComponent);\n      return _callSuper(this, FaIconComponent, arguments);\n    }\n    _inherits(FaIconComponent, _Component);\n    return _createClass(FaIconComponent, [{\n      key: \"content\",\n      get: function get() {\n        var _this$abstractIcon$ch, _this$abstractIcon;\n        var children = (_this$abstractIcon$ch = (_this$abstractIcon = this.abstractIcon) === null || _this$abstractIcon === void 0 ? void 0 : _this$abstractIcon.children) !== null && _this$abstractIcon$ch !== void 0 ? _this$abstractIcon$ch : [];\n        var html = children.reduce(function (acc, cur) {\n          return \"\".concat(acc).concat((0, _fontawesomeSvgCore.toHtml)(cur));\n        }, '');\n        return (0, _template.htmlSafe)(html);\n      }\n    }, {\n      key: \"safeStyle\",\n      get: function get() {\n        return this.iconAttributes.style ? (0, _template.htmlSafe)(\"\".concat(this.iconAttributes.style)) : undefined;\n      }\n    }, {\n      key: \"iconExists\",\n      get: function get() {\n        return Boolean(this.abstractIcon);\n      }\n    }, {\n      key: \"flipHorizontal\",\n      get: function get() {\n        return this.args.flip === 'horizontal' || this.args.flip === 'both';\n      }\n    }, {\n      key: \"flipVertical\",\n      get: function get() {\n        return this.args.flip === 'vertical' || this.args.flip === 'both';\n      }\n    }, {\n      key: \"classList\",\n      get: function get() {\n        var classes = _defineProperty(_defineProperty(_defineProperty({\n          'fa-spin': this.args.spin,\n          'fa-pulse': this.args.pulse,\n          'fa-fw': this.args.fixedWidth,\n          'fa-border': this.args.border,\n          'fa-li': this.args.listItem,\n          'fa-flip-horizontal': this.flipHorizontal,\n          'fa-flip-vertical': this.flipVertical\n        }, \"fa-\".concat(this.args.size), this.args.size), \"fa-rotate-\".concat(this.args.rotation), this.args.rotation), \"fa-pull-\".concat(this.args.pull), this.args.pull);\n        return Object.keys(classes).filter(function (key) {\n          return classes[key];\n        });\n      }\n    }, {\n      key: \"abstractIcon\",\n      get: function get() {\n        var _this$args$symbol;\n        var iconLookup = normalizeIconArgs(this.args.prefix, this.args.icon);\n        var classes = objectWithKey('classes', this.classList);\n        var transform = objectWithKey('transform', typeof this.args.transform === 'string' ? _fontawesomeSvgCore.parse.transform(this.args.transform) : this.args.transform);\n        var mask = objectWithKey('mask', normalizeIconArgs(null, this.args.mask));\n        var symbol = (_this$args$symbol = this.args.symbol) !== null && _this$args$symbol !== void 0 ? _this$args$symbol : false;\n        var title = this.args.title ? \"\".concat(this.args.title) : null;\n        var o = Object.assign({}, classes, transform, mask, {\n          symbol: symbol,\n          title: title\n        });\n        var renderedIcon = (0, _fontawesomeSvgCore.icon)(iconLookup, o);\n        if (!renderedIcon) {\n          console.warn(\"Could not find icon: iconName=\".concat(iconLookup.iconName, \", prefix=\").concat(iconLookup.prefix, \". You may need to add it to your icons.js.\"));\n          return null;\n        }\n        return renderedIcon.abstract[0];\n      }\n    }, {\n      key: \"iconAttributes\",\n      get: function get() {\n        var _this$abstractIcon$at, _this$abstractIcon2;\n        return (_this$abstractIcon$at = (_this$abstractIcon2 = this.abstractIcon) === null || _this$abstractIcon2 === void 0 ? void 0 : _this$abstractIcon2.attributes) !== null && _this$abstractIcon$at !== void 0 ? _this$abstractIcon$at : {};\n      }\n    }, {\n      key: \"dataPrefix\",\n      get: function get() {\n        return this.iconAttributes['data-prefix'];\n      }\n    }, {\n      key: \"dataIcon\",\n      get: function get() {\n        return this.iconAttributes['data-icon'];\n      }\n    }, {\n      key: \"dataFaTransform\",\n      get: function get() {\n        return this.iconAttributes['data-fa-transform'];\n      }\n    }, {\n      key: \"dataFaMask\",\n      get: function get() {\n        return this.iconAttributes['data-fa-mask'];\n      }\n    }, {\n      key: \"dataFaProcessed\",\n      get: function get() {\n        return this.iconAttributes['data-fa-processed'];\n      }\n    }, {\n      key: \"ariaHidden\",\n      get: function get() {\n        return this.iconAttributes['aria-hidden'];\n      }\n    }, {\n      key: \"ariaLabelledBy\",\n      get: function get() {\n        return this.iconAttributes['aria-labelledby'];\n      }\n    }, {\n      key: \"viewBox\",\n      get: function get() {\n        var _this$abstractIcon$at2, _this$abstractIcon3;\n        return (_this$abstractIcon$at2 = (_this$abstractIcon3 = this.abstractIcon) === null || _this$abstractIcon3 === void 0 || (_this$abstractIcon3 = _this$abstractIcon3.attributes) === null || _this$abstractIcon3 === void 0 ? void 0 : _this$abstractIcon3.viewBox) !== null && _this$abstractIcon$at2 !== void 0 ? _this$abstractIcon$at2 : '0 0 448 512';\n      }\n    }]);\n  }(_component2.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FaIconComponent);\n});","define(\"@glimmer/component/-private/base-component-manager\", [\"exports\", \"@glimmer/component/-private/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = BaseComponentManager;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  /**\n   * This factory function returns a component manager class with common behavior\n   * that can be extend to add Glimmer.js- or Ember.js-specific functionality. As\n   * these environments converge, the need for two component manager\n   * implementations (and thus this factory) should go away.\n   */\n  function BaseComponentManager(setOwner, getOwner, capabilities) {\n    return /*#__PURE__*/function () {\n      function _class(owner) {\n        _classCallCheck(this, _class);\n        _defineProperty(this, \"capabilities\", capabilities);\n        setOwner(this, owner);\n      }\n      return _createClass(_class, [{\n        key: \"createComponent\",\n        value: function createComponent(ComponentClass, args) {\n          if (true /* DEBUG */) {\n            _component.ARGS_SET.set(args.named, true);\n          }\n          return new ComponentClass(getOwner(this), args.named);\n        }\n      }, {\n        key: \"getContext\",\n        value: function getContext(component) {\n          return component;\n        }\n      }], [{\n        key: \"create\",\n        value: function create(attrs) {\n          var owner = getOwner(attrs);\n          return new this(owner);\n        }\n      }]);\n    }();\n  }\n});","define(\"@glimmer/component/-private/component\", [\"exports\", \"@glimmer/component/-private/owner\", \"@glimmer/component/-private/destroyables\"], function (_exports, _owner, _destroyables) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.ARGS_SET = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  // This provides a type-safe `WeakMap`: the getter and setter link the key to a\n  // specific value. This is how `WeakMap`s actually behave, but the TS type\n  // system does not (yet!) have a good way to capture that for types like\n  // `WeakMap` where the type is generic over another generic type (here, `Args`).\n\n  // SAFETY: this only holds because we *only* acces this when `DEBUG` is `true`.\n  // There is not a great way to connect that data in TS at present.\n  var ARGS_SET;\n  if (true /* DEBUG */) {\n    _exports.ARGS_SET = ARGS_SET = new WeakMap();\n  }\n\n  // --- Type utilities for component signatures --- //\n  // Type-only \"symbol\" to use with `EmptyObject` below, so that it is *not*\n  // equivalent to an empty interface.\n\n  /**\n   * This provides us a way to have a \"fallback\" which represents an empty object,\n   * without the downsides of how TS treats `{}`. Specifically: this will\n   * correctly leverage \"excess property checking\" so that, given a component\n   * which has no named args, if someone invokes it with any named args, they will\n   * get a type error.\n   *\n   * @internal This is exported so declaration emit works (if it were not emitted,\n   *   declarations which fall back to it would not work). It is *not* intended for\n   *   public usage, and the specific mechanics it uses may change at any time.\n   *   The location of this export *is* part of the public API, because moving it\n   *   will break existing declarations, but is not legal for end users to import\n   *   themselves, so ***DO NOT RELY ON IT***.\n   */\n\n  /** Given a signature `S`, get back the `Args` type. */\n\n  /**\n   * Given any allowed shorthand form of a signature, desugars it to its full\n   * expanded type.\n   *\n   * @internal This is only exported so we can avoid duplicating it in\n   *   [Glint](https://github.com/typed-ember/glint) or other such tooling. It is\n   *   *not* intended for public usage, and the specific mechanics it uses may\n   *   change at any time. Although the signature produced by is part of Glimmer's\n   *   public API the existence and mechanics of this specific symbol are *not*,\n   *   so ***DO NOT RELY ON IT***.\n   */\n  // The conditional type here is because TS applies conditional types\n  // distributively. This means that for union types, checks like `keyof T` get\n  // all the keys from all elements of the union, instead of ending up as `never`\n  // and then always falling into the `Signature` path instead of falling back to\n  // the legacy args handling path.\n\n  /**\n   * @internal we use this type for convenience internally; inference means users\n   *   should not normally need to name it\n   */\n  /**\n   * The `Component` class defines an encapsulated UI element that is rendered to\n   * the DOM. A component is made up of a template and, optionally, this component\n   * object.\n   *\n   * ## Defining a Component\n   *\n   * To define a component, subclass `Component` and add your own properties,\n   * methods and lifecycle hooks:\n   *\n   * ```ts\n   * import Component from '@glimmer/component';\n   *\n   * export default class extends Component {\n   * }\n   * ```\n   *\n   * ## Lifecycle Hooks\n   *\n   * Lifecycle hooks allow you to respond to changes to a component, such as when\n   * it gets created, rendered, updated or destroyed. To add a lifecycle hook to a\n   * component, implement the hook as a method on your component subclass.\n   *\n   * For example, to be notified when Glimmer has rendered your component so you\n   * can attach a legacy jQuery plugin, implement the `didInsertElement()` method:\n   *\n   * ```ts\n   * import Component from '@glimmer/component';\n   *\n   * export default class extends Component {\n   *   didInsertElement() {\n   *     $(this.element).pickadate();\n   *   }\n   * }\n   * ```\n   *\n   * ## Data for Templates\n   *\n   * `Component`s have two different kinds of data, or state, that can be\n   * displayed in templates:\n   *\n   * 1. Arguments\n   * 2. Properties\n   *\n   * Arguments are data that is passed in to a component from its parent\n   * component. For example, if I have a `UserGreeting` component, I can pass it\n   * a name and greeting to use:\n   *\n   * ```hbs\n   * <UserGreeting @name=\"Ricardo\" @greeting=\"Olá\" />\n   * ```\n   *\n   * Inside my `UserGreeting` template, I can access the `@name` and `@greeting`\n   * arguments that I've been given:\n   *\n   * ```hbs\n   * {{@greeting}}, {{@name}}!\n   * ```\n   *\n   * Arguments are also available inside my component:\n   *\n   * ```ts\n   * console.log(this.args.greeting); // prints \"Olá\"\n   * ```\n   *\n   * Properties, on the other hand, are internal to the component and declared in\n   * the class. You can use properties to store data that you want to show in the\n   * template, or pass to another component as an argument.\n   *\n   * ```ts\n   * import Component from '@glimmer/component';\n   *\n   * export default class extends Component {\n   *   user = {\n   *     name: 'Robbie'\n   *   }\n   * }\n   * ```\n   *\n   * In the above example, we've defined a component with a `user` property that\n   * contains an object with its own `name` property.\n   *\n   * We can render that property in our template:\n   *\n   * ```hbs\n   * Hello, {{user.name}}!\n   * ```\n   *\n   * We can also take that property and pass it as an argument to the\n   * `UserGreeting` component we defined above:\n   *\n   * ```hbs\n   * <UserGreeting @greeting=\"Hello\" @name={{user.name}} />\n   * ```\n   *\n   * ## Arguments vs. Properties\n   *\n   * Remember, arguments are data that was given to your component by its parent\n   * component, and properties are data your component has defined for itself.\n   *\n   * You can tell the difference between arguments and properties in templates\n   * because arguments always start with an `@` sign (think \"A is for arguments\"):\n   *\n   * ```hbs\n   * {{@firstName}}\n   * ```\n   *\n   * We know that `@firstName` came from the parent component, not the current\n   * component, because it starts with `@` and is therefore an argument.\n   *\n   * On the other hand, if we see:\n   *\n   * ```hbs\n   * {{name}}\n   * ```\n   *\n   * We know that `name` is a property on the component. If we want to know where\n   * the data is coming from, we can go look at our component class to find out.\n   *\n   * Inside the component itself, arguments always show up inside the component's\n   * `args` property. For example, if `{{@firstName}}` is `Tom` in the template,\n   * inside the component `this.args.firstName` would also be `Tom`.\n   */\n  var BaseComponent = _exports.default = /*#__PURE__*/function () {\n    /**\n     * Constructs a new component and assigns itself the passed properties. You\n     * should not construct new components yourself. Instead, Glimmer will\n     * instantiate new components automatically as it renders.\n     *\n     * @param owner\n     * @param args\n     */\n    function BaseComponent(owner, args) {\n      _classCallCheck(this, BaseComponent);\n      /**\n       * Named arguments passed to the component from its parent component.\n       * They can be accessed in JavaScript via `this.args.argumentName` and in the template via `@argumentName`.\n       *\n       * Say you have the following component, which will have two `args`, `firstName` and `lastName`:\n       *\n       * ```hbs\n       * <my-component @firstName=\"Arthur\" @lastName=\"Dent\" />\n       * ```\n       *\n       * If you needed to calculate `fullName` by combining both of them, you would do:\n       *\n       * ```ts\n       * didInsertElement() {\n       *   console.log(`Hi, my full name is ${this.args.firstName} ${this.args.lastName}`);\n       * }\n       * ```\n       *\n       * While in the template you could do:\n       *\n       * ```hbs\n       * <p>Welcome, {{@firstName}} {{@lastName}}!</p>\n       * ```\n       */\n      _defineProperty(this, \"args\", void 0);\n      if (true /* DEBUG */ && !(owner !== null && _typeof(owner) === 'object' && ARGS_SET.has(args))) {\n        throw new Error(\"You must pass both the owner and args to super() in your component: \".concat(this.constructor.name, \". You can pass them directly, or use ...arguments to pass all arguments through.\"));\n      }\n      this.args = args;\n      (0, _owner.setOwner)(this, owner);\n    }\n    return _createClass(BaseComponent, [{\n      key: \"isDestroying\",\n      get: function get() {\n        return (0, _destroyables.isDestroying)(this);\n      }\n    }, {\n      key: \"isDestroyed\",\n      get: function get() {\n        return (0, _destroyables.isDestroyed)(this);\n      }\n\n      /**\n       * Called before the component has been removed from the DOM.\n       */\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {}\n    }]);\n  }();\n});","define(\"@glimmer/component/-private/destroyables\", [\"exports\", \"ember\"], function (_exports, _ember) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isDestroying = _exports.isDestroyed = void 0;\n  var isDestroying = _exports.isDestroying = _ember.default._isDestroying;\n  var isDestroyed = _exports.isDestroyed = _ember.default._isDestroyed;\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@glimmer/component/-private/ember-component-manager\", [\"exports\", \"ember\", \"@ember/object\", \"@ember/application\", \"@ember/component\", \"@ember/runloop\", \"@glimmer/component/-private/base-component-manager\", \"@glimmer/component/-private/destroyables\"], function (_exports, _ember, _object, _application, _component, _runloop, _baseComponentManager, destroyables) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _this = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var setDestroyed = destroyables.setDestroyed,\n    setDestroying = destroyables.setDestroying;\n  var CAPABILITIES = true // @ts-ignore\n  // @ts-ignore\n  ? (0, _component.capabilities)('3.13', {\n    destructor: true,\n    asyncLifecycleCallbacks: false,\n    updateHook: false\n  }) : (0, _component.capabilities)('3.4', {\n    destructor: true,\n    asyncLifecycleCallbacks: false\n  });\n  var scheduledDestroyComponent = true ? undefined : function (component, meta) {\n    if (component.isDestroyed) {\n      return;\n    }\n    _ember.default.destroy(component);\n    meta.setSourceDestroyed();\n    setDestroyed(component);\n  };\n  var destroy = true ? _ember.default.destroy : function (component) {\n    if (component.isDestroying) {\n      return;\n    }\n    var meta = _ember.default.meta(component);\n    meta.setSourceDestroying();\n    setDestroying(component);\n    (0, _runloop.schedule)('actions', component, component.willDestroy);\n    (0, _runloop.schedule)('destroy', _this, scheduledDestroyComponent, component, meta);\n  };\n  var registerDestructor = true ? _ember.default._registerDestructor : true ? _ember.default.__loader.require('@glimmer/runtime').registerDestructor : undefined;\n\n  /**\n   * This component manager runs in Ember.js environments and extends the base component manager to:\n   *\n   * 1. Properly destroy the component's associated `meta` data structure\n   * 2. Schedule destruction using Ember's runloop\n   */\n  var EmberGlimmerComponentManager = /*#__PURE__*/function (_BaseComponentManager) {\n    function EmberGlimmerComponentManager() {\n      _classCallCheck(this, EmberGlimmerComponentManager);\n      return _callSuper(this, EmberGlimmerComponentManager, arguments);\n    }\n    _inherits(EmberGlimmerComponentManager, _BaseComponentManager);\n    return _createClass(EmberGlimmerComponentManager, [{\n      key: \"createComponent\",\n      value: function createComponent(ComponentClass, args) {\n        var component = _superPropGet(EmberGlimmerComponentManager, \"createComponent\", this, 3)([ComponentClass, args]);\n        if (true) {\n          registerDestructor(component, function () {\n            component.willDestroy();\n          });\n        }\n        return component;\n      }\n    }, {\n      key: \"destroyComponent\",\n      value: function destroyComponent(component) {\n        destroy(component);\n      }\n    }]);\n  }((0, _baseComponentManager.default)(_application.setOwner, _application.getOwner, CAPABILITIES));\n  // In Ember 3.12 and earlier, the updateComponent hook was mandatory.\n  // As of Ember 3.13, the `args` object is stable and each property of the\n  // object participates in the autotrack stack on its own. This means we do not\n  // need to set the `args` property on the component instance to invalidate\n  // tracked getters that rely on `args`, and therefore don't require the `updateComponent`\n  // hook at all.\n  if (!true) {\n    EmberGlimmerComponentManager.prototype.updateComponent = function updateComponent(component, args) {\n      var argSnapshot = args.named;\n      if (true /* DEBUG */) {\n        argSnapshot = Object.freeze(argSnapshot);\n      }\n      (0, _object.set)(component, 'args', argSnapshot);\n    };\n  }\n  var _default = _exports.default = EmberGlimmerComponentManager;\n});","define(\"@glimmer/component/-private/owner\", [\"exports\", \"@ember/application\"], function (_exports, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"setOwner\", {\n    enumerable: true,\n    get: function get() {\n      return _application.setOwner;\n    }\n  });\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"@glimmer/component/index\", [\"exports\", \"@ember/component\", \"@glimmer/component/-private/ember-component-manager\", \"@glimmer/component/-private/component\"], function (_exports, _component, _emberComponentManager, _component2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } // Hax because the old version of `@types/ember__component` the `1.x` branch\n  // uses does not provide any types for `setComponentManager` *and* because we\n  // are using a very old version of `setComponentManager` for versions before\n  // Ember 3.8.\n  var GlimmerComponent = _component2.default;\n  if (true /* DEBUG */) {\n    // Add assertions against using Glimmer.js only APIs\n\n    // TODO: Add GlimmerComponent API docs link to these messages once API docs are live\n    function throwMethodUseError(methodName) {\n      throw new Error(\"You attempted to define the '\".concat(methodName, \"' method on a Glimmer Component, but that lifecycle hook does not exist in Ember.js applications, it only exists in Glimmer.js apps. You can rename this method, and you can trigger it using a modifier such as {{did-insert}} from '@ember/render-modifiers': https://github.com/emberjs/ember-render-modifiers.\"));\n    }\n    function throwPropertyUseError(propertyName) {\n      throw new Error(\"You attempted to access the '\".concat(propertyName, \"' property on a Glimmer Component, but that property does not exist in Ember.js applications, it only exists in Glimmer.js apps. You define a class field with the same name on your component class and it will overwrite this error message, but it will not be used by the framework.\"));\n    }\n    GlimmerComponent = /*#__PURE__*/function (_GlimmerComponent) {\n      function GlimmerDebugComponent(owner, args) {\n        var _this;\n        _classCallCheck(this, GlimmerDebugComponent);\n        _this = _callSuper(this, GlimmerDebugComponent, [owner, args]);\n        if (typeof _this['didInsertElement'] === 'function') {\n          throwMethodUseError('didInsertElement');\n        }\n        if (typeof _this['didUpdate'] === 'function') {\n          throwMethodUseError('didUpdate');\n        }\n        return _this;\n      }\n      _inherits(GlimmerDebugComponent, _GlimmerComponent);\n      return _createClass(GlimmerDebugComponent);\n    }(GlimmerComponent);\n    var proto = GlimmerComponent.prototype;\n    function defineErrorProp(proto, key, getterMethod) {\n      Object.defineProperty(proto, key, {\n        get: function get() {\n          return getterMethod(key);\n        },\n        set: function set(value) {\n          Object.defineProperty(this, key, {\n            value: value\n          });\n        }\n      });\n    }\n\n    // Methods should still throw whenever they are accessed\n    defineErrorProp(proto, 'bounds', throwPropertyUseError);\n    defineErrorProp(proto, 'element', throwPropertyUseError);\n    defineErrorProp(proto, 'debugName', throwPropertyUseError);\n  }\n  if (true) {\n    (0, _component.setComponentManager)(function (owner) {\n      return new _emberComponentManager.default(owner);\n    }, GlimmerComponent);\n  } else {\n    (0, _component.setComponentManager)('glimmer', GlimmerComponent);\n  }\n  var _default = _exports.default = GlimmerComponent;\n});","define('@html-next/vertical-collection/-private', ['exports', '@ember/object', '@ember/debug', '@ember/object/internals', '@ember/array', '@ember/runloop', 'ember-raf-scheduler'], (function (exports, object, debug, internals, array, runloop, emberRafScheduler) { 'use strict';\n\n  function identity(item) {\n    var key;\n    var type = typeof item;\n    if (type === 'string' || type === 'number') {\n      key = item;\n    } else {\n      key = internals.guidFor(item);\n    }\n    return key;\n  }\n\n  function keyForItem(item, keyPath, index) {\n    var key;\n    (!(typeof keyPath === 'string') && debug.assert(\"keyPath must be a string, received: \" + keyPath, typeof keyPath === 'string'));\n    switch (keyPath) {\n      case '@index':\n        (!(typeof index === 'number') && debug.assert(\"A numerical index must be supplied for keyForItem when keyPath is @index, received: \" + index, typeof index === 'number'));\n        key = index;\n        break;\n      case '@identity':\n        key = identity(item);\n        break;\n      default:\n        key = object.get(item, keyPath);\n    }\n    if (typeof key === 'number') {\n      key = String(key);\n    }\n    return key;\n  }\n\n  var VENDOR_MATCH_FNS = ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'];\n  var ELEMENT_MATCH_FN;\n  function setElementMatchFn(el) {\n    VENDOR_MATCH_FNS.forEach(function (fn) {\n      if (ELEMENT_MATCH_FN === undefined && typeof el[fn] === 'function') {\n        ELEMENT_MATCH_FN = fn;\n      }\n    });\n  }\n  function closest(el, selector) {\n    if (ELEMENT_MATCH_FN === undefined) {\n      setElementMatchFn(el);\n    }\n    while (el) {\n      // TODO add explicit test\n      if (el[ELEMENT_MATCH_FN](selector)) {\n        return el;\n      }\n      el = el.parentElement;\n    }\n    return null;\n  }\n\n  var document$1 = window ? window.document : undefined;\n\n  function _defineProperties$4(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey$4(o.key), o); } }\n  function _createClass$4(e, r, t) { return r && _defineProperties$4(e.prototype, r), t && _defineProperties$4(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey$4(t) { var i = _toPrimitive$4(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive$4(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var VC_IDENTITY = 0;\n  var VirtualComponent = /*#__PURE__*/function () {\n    function VirtualComponent(content, index) {\n      if (content === void 0) {\n        content = null;\n      }\n      if (index === void 0) {\n        index = null;\n      }\n      this.id = \"VC-\" + VC_IDENTITY++;\n      this.content = content;\n      this.index = index;\n\n      // We check to see if the document exists in Fastboot. Since RAF won't run in\n      // Fastboot, we'll never have to use these text nodes for measurements, so they\n      // can be empty\n      this.upperBound = document$1 !== undefined ? document$1.createTextNode('') : null;\n      this.lowerBound = document$1 !== undefined ? document$1.createTextNode('') : null;\n      this.rendered = false;\n      {\n        Object.preventExtensions(this);\n      }\n    }\n    var _proto = VirtualComponent.prototype;\n    _proto.getBoundingClientRect = function getBoundingClientRect() {\n      var upperBound = this.upperBound,\n        lowerBound = this.lowerBound;\n      var top = Infinity;\n      var bottom = -Infinity;\n      while (upperBound !== lowerBound) {\n        upperBound = upperBound.nextSibling;\n        if (upperBound instanceof Element) {\n          top = Math.min(top, upperBound.getBoundingClientRect().top);\n          bottom = Math.max(bottom, upperBound.getBoundingClientRect().bottom);\n        }\n        {\n          if (upperBound instanceof Element) {\n            continue;\n          }\n          var text = upperBound.textContent;\n          (!(text === '' || text.match(/^\\s+$/)) && debug.assert(\"All content inside of vertical-collection must be wrapped in an element. Detected a text node with content: \" + text, text === '' || text.match(/^\\s+$/)));\n        }\n      }\n      (!(top !== Infinity && bottom !== -Infinity) && debug.assert('Items in a vertical collection require atleast one element in them', top !== Infinity && bottom !== -Infinity));\n      var height = bottom - top;\n      return {\n        top: top,\n        bottom: bottom,\n        height: height\n      };\n    };\n    _proto.recycle = function recycle(newContent, newIndex) {\n      (!(newContent) && debug.assert(\"You cannot set an item's content to undefined\", newContent));\n      if (this.index !== newIndex) {\n        object.set(this, 'index', newIndex);\n      }\n      if (this.content !== newContent) {\n        object.set(this, 'content', newContent);\n      }\n    };\n    _proto.destroy = function destroy() {\n      object.set(this, 'upperBound', null);\n      object.set(this, 'lowerBound', null);\n      object.set(this, 'content', null);\n      object.set(this, 'index', null);\n    };\n    return _createClass$4(VirtualComponent, [{\n      key: \"realUpperBound\",\n      get: function get() {\n        return this.upperBound;\n      }\n    }, {\n      key: \"realLowerBound\",\n      get: function get() {\n        return this.lowerBound;\n      }\n    }]);\n  }();\n\n  function _defineProperties$3(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey$3(o.key), o); } }\n  function _createClass$3(e, r, t) { return r && _defineProperties$3(e.prototype, r), t && _defineProperties$3(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey$3(t) { var i = _toPrimitive$3(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive$3(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var OC_IDENTITY = 0;\n  var OccludedContent = /*#__PURE__*/function () {\n    function OccludedContent(tagName) {\n      this.id = \"OC-\" + OC_IDENTITY++;\n      this.isOccludedContent = true;\n\n      // We check to see if the document exists in Fastboot. Since RAF won't run in\n      // Fastboot, we'll never have to use these text nodes for measurements, so they\n      // can be empty\n      if (document$1 !== undefined) {\n        this.element = document$1.createElement(tagName);\n        this.element.className += 'occluded-content';\n        this.upperBound = document$1.createTextNode('');\n        this.lowerBound = document$1.createTextNode('');\n      } else {\n        this.element = null;\n      }\n      this.isOccludedContent = true;\n      this.rendered = false;\n      {\n        Object.preventExtensions(this);\n      }\n    }\n    var _proto = OccludedContent.prototype;\n    _proto.getBoundingClientRect = function getBoundingClientRect() {\n      if (this.element !== null) {\n        return this.element.getBoundingClientRect();\n      }\n    };\n    _proto.addEventListener = function addEventListener(event, listener) {\n      if (this.element !== null) {\n        this.element.addEventListener(event, listener);\n      }\n    };\n    _proto.removeEventListener = function removeEventListener(event, listener) {\n      if (this.element !== null) {\n        this.element.removeEventListener(event, listener);\n      }\n    };\n    _proto.destroy = function destroy() {\n      object.set(this, 'element', null);\n    };\n    return _createClass$3(OccludedContent, [{\n      key: \"realUpperBound\",\n      get: function get() {\n        return this.upperBound;\n      }\n    }, {\n      key: \"realLowerBound\",\n      get: function get() {\n        return this.lowerBound;\n      }\n    }, {\n      key: \"parentNode\",\n      get: function get() {\n        return this.element !== null ? this.element.parentNode : null;\n      }\n    }, {\n      key: \"style\",\n      get: function get() {\n        return this.element !== null ? this.element.style : {};\n      }\n    }, {\n      key: \"innerHTML\",\n      set: function set(value) {\n        if (this.element !== null) {\n          this.element.innerHTML = value;\n        }\n      }\n    }]);\n  }();\n\n  function insertRangeBefore(parent, element, firstNode, lastNode) {\n    var nextNode;\n    while (firstNode) {\n      nextNode = firstNode.nextSibling;\n      parent.insertBefore(firstNode, element);\n      if (firstNode === lastNode) {\n        break;\n      }\n      firstNode = nextNode;\n    }\n  }\n\n  function objectAt(arr, index) {\n    (!(Array.isArray(arr) || typeof arr.objectAt === 'function') && debug.assert('arr must be an instance of a Javascript Array or implement `objectAt`', Array.isArray(arr) || typeof arr.objectAt === 'function'));\n    return arr.objectAt ? arr.objectAt(index) : arr[index];\n  }\n\n  function roundTo(number, decimal) {\n    if (decimal === void 0) {\n      decimal = 2;\n    }\n    var exp = Math.pow(10, decimal);\n    return Math.round(number * exp) / exp;\n  }\n\n  function isPrepend(lenDiff, newItems, key, oldFirstKey, oldLastKey) {\n    var newItemsLength = object.get(newItems, 'length');\n    if (lenDiff <= 0 || lenDiff >= newItemsLength || newItemsLength === 0) {\n      return false;\n    }\n    var newFirstKey = keyForItem(objectAt(newItems, lenDiff), key, lenDiff);\n    var newLastKey = keyForItem(objectAt(newItems, newItemsLength - 1), key, newItemsLength - 1);\n    return oldFirstKey === newFirstKey && oldLastKey === newLastKey;\n  }\n  function isAppend(lenDiff, newItems, key, oldFirstKey, oldLastKey) {\n    var newItemsLength = object.get(newItems, 'length');\n    if (lenDiff <= 0 || lenDiff >= newItemsLength || newItemsLength === 0) {\n      return false;\n    }\n    var newFirstKey = keyForItem(objectAt(newItems, 0), key, 0);\n    var newLastKey = keyForItem(objectAt(newItems, newItemsLength - lenDiff - 1), key, newItemsLength - lenDiff - 1);\n    return oldFirstKey === newFirstKey && oldLastKey === newLastKey;\n  }\n\n  var supportsPassive = false;\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supportsPassive = true;\n        return supportsPassive;\n      }\n    });\n    window.addEventListener('test', null, opts);\n  } catch (e) {\n    // do nothing\n  }\n  var SUPPORTS_PASSIVE = supportsPassive;\n\n  var DEFAULT_ARRAY_SIZE = 10;\n  var UNDEFINED_VALUE = Object.create(null);\n  var ScrollHandler = /*#__PURE__*/function () {\n    function ScrollHandler() {\n      this.elements = new Array(DEFAULT_ARRAY_SIZE);\n      this.maxLength = DEFAULT_ARRAY_SIZE;\n      this.length = 0;\n      this.handlers = new Array(DEFAULT_ARRAY_SIZE);\n      this.isPolling = false;\n      this.isUsingPassive = SUPPORTS_PASSIVE;\n    }\n    var _proto = ScrollHandler.prototype;\n    _proto.addScrollHandler = function addScrollHandler(element, handler) {\n      var index = this.elements.indexOf(element);\n      var handlers, cache;\n      if (index === -1) {\n        index = this.length++;\n        if (index === this.maxLength) {\n          this.maxLength *= 2;\n          this.elements.length = this.maxLength;\n          this.handlers.length = this.maxLength;\n        }\n        handlers = [handler];\n        this.elements[index] = element;\n        cache = this.handlers[index] = {\n          top: element.scrollTop,\n          left: element.scrollLeft,\n          handlers: handlers\n        };\n        // TODO add explicit test\n        if (SUPPORTS_PASSIVE) {\n          cache.passiveHandler = function () {\n            ScrollHandler.triggerElementHandlers(element, cache);\n          };\n        } else {\n          cache.passiveHandler = UNDEFINED_VALUE;\n        }\n      } else {\n        cache = this.handlers[index];\n        handlers = cache.handlers;\n        handlers.push(handler);\n      }\n\n      // TODO add explicit test\n      if (this.isUsingPassive && handlers.length === 1) {\n        element.addEventListener('scroll', cache.passiveHandler, {\n          capture: true,\n          passive: true\n        });\n\n        // TODO add explicit test\n      } else if (!this.isPolling) {\n        this.poll();\n      }\n    };\n    _proto.removeScrollHandler = function removeScrollHandler(element, handler) {\n      var index = this.elements.indexOf(element);\n      var elementCache = this.handlers[index];\n      // TODO add explicit test\n      if (elementCache && elementCache.handlers) {\n        var _index = elementCache.handlers.indexOf(handler);\n        if (_index === -1) {\n          throw new Error('Attempted to remove an unknown handler');\n        }\n        elementCache.handlers.splice(_index, 1);\n\n        // cleanup element entirely if needed\n        // TODO add explicit test\n        if (!elementCache.handlers.length) {\n          _index = this.elements.indexOf(element);\n          this.handlers.splice(_index, 1);\n          this.elements.splice(_index, 1);\n          this.length--;\n          this.maxLength--;\n          if (this.length === 0) {\n            this.isPolling = false;\n          }\n\n          // TODO add explicit test\n          if (this.isUsingPassive) {\n            element.removeEventListener('scroll', elementCache.passiveHandler, {\n              capture: true,\n              passive: true\n            });\n          }\n        }\n      } else {\n        throw new Error('Attempted to remove a handler from an unknown element or an element with no handlers');\n      }\n    };\n    ScrollHandler.triggerElementHandlers = function triggerElementHandlers(element, meta) {\n      var cachedTop = element.scrollTop;\n      var cachedLeft = element.scrollLeft;\n      var topChanged = cachedTop !== meta.top;\n      var leftChanged = cachedLeft !== meta.left;\n      meta.top = cachedTop;\n      meta.left = cachedLeft;\n      var event = {\n        top: cachedTop,\n        left: cachedLeft\n      };\n\n      // TODO add explicit test\n      if (topChanged || leftChanged) {\n        runloop.begin();\n        for (var j = 0; j < meta.handlers.length; j++) {\n          meta.handlers[j](event);\n        }\n        runloop.end();\n      }\n    };\n    _proto.poll = function poll() {\n      var _this = this;\n      this.isPolling = true;\n      emberRafScheduler.scheduler.schedule('sync', function () {\n        // TODO add explicit test\n        if (!_this.isPolling) {\n          return;\n        }\n        for (var i = 0; i < _this.length; i++) {\n          var element = _this.elements[i];\n          var info = _this.handlers[i];\n          ScrollHandler.triggerElementHandlers(element, info);\n        }\n        _this.isPolling = _this.length > 0;\n        // TODO add explicit test\n        if (_this.isPolling) {\n          _this.poll();\n        }\n      });\n    };\n    return ScrollHandler;\n  }();\n  var instance = new ScrollHandler();\n  function addScrollHandler(element, handler) {\n    instance.addScrollHandler(element, handler);\n  }\n  function removeScrollHandler(element, handler) {\n    instance.removeScrollHandler(element, handler);\n  }\n\n  /*\n   * There are significant differences between browsers\n   * in how they implement \"scroll\" on document.body\n   *\n   * The only cross-browser listener for scroll on body\n   * is to listen on window with capture.\n   *\n   * They also implement different standards for how to\n   * access the scroll position.\n   *\n   * This singleton class provides a cross-browser way\n   * to access and set the scrollTop and scrollLeft properties.\n   *\n   */\n  function ViewportContainer() {\n    // A bug occurs in Chrome when we reload the browser at a lower\n    // scrollTop, window.scrollY becomes stuck on a single value.\n    Object.defineProperty(this, 'scrollTop', {\n      get: function get() {\n        return document.body.scrollTop || document.documentElement.scrollTop;\n      },\n      set: function set(v) {\n        document.body.scrollTop = document.documentElement.scrollTop = v;\n      }\n    });\n    Object.defineProperty(this, 'scrollLeft', {\n      get: function get() {\n        return window.scrollX || window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;\n      },\n      set: function set(v) {\n        window.scrollX = window.pageXOffset = document.body.scrollLeft = document.documentElement.scrollLeft = v;\n      }\n    });\n    Object.defineProperty(this, 'offsetHeight', {\n      get: function get() {\n        return window.innerHeight;\n      }\n    });\n  }\n  ViewportContainer.prototype.addEventListener = function addEventListener(event, handler, options) {\n    return window.addEventListener(event, handler, options);\n  };\n  ViewportContainer.prototype.removeEventListener = function addEventListener(event, handler, options) {\n    return window.removeEventListener(event, handler, options);\n  };\n  ViewportContainer.prototype.getBoundingClientRect = function getBoundingClientRect() {\n    return {\n      height: window.innerHeight,\n      width: window.innerWidth,\n      top: 0,\n      left: 0,\n      right: window.innerWidth,\n      bottom: window.innerHeight\n    };\n  };\n  var ViewportContainer$1 = new ViewportContainer();\n\n  function estimateElementHeight(element, fallbackHeight) {\n    (!(fallbackHeight) && debug.assert(\"You called estimateElement height without a fallbackHeight\", fallbackHeight));\n    (!(element) && debug.assert(\"You called estimateElementHeight without an element\", element));\n    if (fallbackHeight.indexOf('%') !== -1) {\n      return getPercentageHeight(element, fallbackHeight);\n    }\n    if (fallbackHeight.indexOf('em') !== -1) {\n      return getEmHeight(element, fallbackHeight);\n    }\n    return parseInt(fallbackHeight, 10);\n  }\n  function getPercentageHeight(element, fallbackHeight) {\n    // We use offsetHeight here to get the element's true height, rather than the\n    // bounding rect which may be scaled with transforms\n    var parentHeight = element.offsetHeight;\n    var percent = parseFloat(fallbackHeight);\n    return percent * parentHeight / 100.0;\n  }\n  function getEmHeight(element, fallbackHeight) {\n    var fontSizeElement = fallbackHeight.indexOf('rem') !== -1 ? document.documentElement : element;\n    var fontSize = window.getComputedStyle(fontSizeElement).getPropertyValue('font-size');\n    return parseFloat(fallbackHeight) * parseFloat(fontSize);\n  }\n\n  function getScaledClientRect(element, scale) {\n    var rect = element.getBoundingClientRect();\n    if (scale === 1) {\n      return rect;\n    }\n    var scaled = {};\n    for (var key in rect) {\n      scaled[key] = rect[key] * scale;\n    }\n    return scaled;\n  }\n\n  function _defineProperties$2(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey$2(o.key), o); } }\n  function _createClass$2(e, r, t) { return r && _defineProperties$2(e.prototype, r), t && _defineProperties$2(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey$2(t) { var i = _toPrimitive$2(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive$2(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var Radar = /*#__PURE__*/function () {\n    function Radar(parentToken, _ref) {\n      var _this = this;\n      var bufferSize = _ref.bufferSize,\n        containerSelector = _ref.containerSelector,\n        estimateHeight = _ref.estimateHeight,\n        initialRenderCount = _ref.initialRenderCount,\n        items = _ref.items,\n        key = _ref.key,\n        renderAll = _ref.renderAll,\n        renderFromLast = _ref.renderFromLast,\n        shouldRecycle = _ref.shouldRecycle,\n        startingIndex = _ref.startingIndex,\n        occlusionTagName = _ref.occlusionTagName;\n      this.token = new emberRafScheduler.Token(parentToken);\n\n      // Public API\n      this.bufferSize = bufferSize;\n      this.containerSelector = containerSelector;\n      this.estimateHeight = estimateHeight;\n      this.initialRenderCount = initialRenderCount;\n      this.items = items;\n      this.key = key;\n      this.renderAll = renderAll;\n      this.renderFromLast = renderFromLast;\n      this.shouldRecycle = shouldRecycle;\n      this.startingIndex = startingIndex;\n\n      // defaults to a no-op intentionally, actions will only be sent if they\n      // are passed into the component\n      this.sendAction = function () {};\n\n      // Calculated constants\n      this._itemContainer = null;\n      this._scrollContainer = null;\n      this._prependOffset = 0;\n      this._calculatedEstimateHeight = 0;\n      this._collectionOffset = 0;\n      this._calculatedScrollContainerHeight = 0;\n      this._transformScale = 1;\n\n      // Event handler\n      this._scrollHandler = function (_ref2) {\n        var top = _ref2.top;\n        // debounce scheduling updates by checking to make sure we've moved a minimum amount\n        if (_this._didEarthquake(Math.abs(_this._scrollTop - top))) {\n          _this.scheduleUpdate();\n        }\n      };\n      this._resizeHandler = this.scheduleUpdate.bind(this);\n\n      // Run state\n      this._nextUpdate = null;\n      this._nextLayout = null;\n      this._started = false;\n      this._didReset = true;\n      this._didUpdateItems = false;\n\n      // Cache state\n      this._scrollTop = 0;\n\n      // Setting these values to infinity starts us in a guaranteed good state for the radar,\n      // so it knows that it needs to run certain measurements, etc.\n      this._prevFirstItemIndex = Infinity;\n      this._prevLastItemIndex = -Infinity;\n      this._prevFirstVisibleIndex = 0;\n      this._prevLastVisibleIndex = 0;\n      this._firstReached = false;\n      this._lastReached = false;\n      this._prevTotalItems = 0;\n      this._prevFirstKey = 0;\n      this._prevLastKey = 0;\n      this._componentPool = [];\n      this._prependComponentPool = [];\n      this._appendComponentPool = []; // https://github.com/html-next/vertical-collection/issues/296\n\n      // Boundaries\n      this._occludedContentBefore = new OccludedContent(occlusionTagName);\n      this._occludedContentAfter = new OccludedContent(occlusionTagName);\n      this._pageUpHandler = this.pageUp.bind(this);\n      this._occludedContentBefore.addEventListener('click', this._pageUpHandler);\n      this._pageDownHandler = this.pageDown.bind(this);\n      this._occludedContentAfter.addEventListener('click', this._pageDownHandler);\n\n      // Element to hold pooled component DOM when not in use\n      if (document$1) {\n        this._domPool = document$1.createDocumentFragment();\n      }\n\n      // Initialize virtual components\n      this.virtualComponents = array.A([this._occludedContentBefore, this._occludedContentAfter]);\n      this.orderedComponents = [];\n      this._updateVirtualComponents();\n\n      // In older versions of Ember/IE, binding anything on an object in the template\n      // adds observers which creates __ember_meta__\n      this.__ember_meta__ = null; // eslint-disable-line camelcase\n\n      {\n        this._debugDidUpdate = null;\n      }\n    }\n    var _proto = Radar.prototype;\n    _proto.destroy = function destroy() {\n      this.token.cancel();\n      for (var i = 0; i < this.orderedComponents.length; i++) {\n        this.orderedComponents[i].destroy();\n      }\n\n      // Boundaries\n      this._occludedContentBefore.removeEventListener('click', this._pageUpHandler);\n      this._occludedContentAfter.removeEventListener('click', this._pageDownHandler);\n      this._occludedContentBefore.destroy();\n      this._occludedContentAfter.destroy();\n      this.orderedComponents = null;\n      object.set(this, 'virtualComponents', null);\n      if (this._started) {\n        removeScrollHandler(this._scrollContainer, this._scrollHandler);\n        ViewportContainer$1.removeEventListener('resize', this._resizeHandler);\n      }\n    };\n    _proto.schedule = function schedule(queueName, job) {\n      return emberRafScheduler.scheduler.schedule(queueName, job, this.token);\n    }\n\n    /**\n     * Start the Radar. Does initial measurements, adds event handlers,\n     * sets up initial scroll state, and\n     */;\n    _proto.start = function start() {\n      var startingIndex = this.startingIndex,\n        containerSelector = this.containerSelector,\n        _occludedContentBefore = this._occludedContentBefore;\n\n      // Use the occluded content element, which has been inserted into the DOM,\n      // to find the item container and the scroll container\n      this._itemContainer = _occludedContentBefore.element.parentNode;\n      this._scrollContainer = containerSelector === 'body' ? ViewportContainer$1 : closest(this._itemContainer, containerSelector);\n      this._updateConstants();\n\n      // Setup initial scroll state\n      if (startingIndex !== 0) {\n        var renderFromLast = this.renderFromLast,\n          _calculatedEstimateHeight = this._calculatedEstimateHeight,\n          _collectionOffset = this._collectionOffset,\n          _calculatedScrollContainerHeight = this._calculatedScrollContainerHeight;\n        var startingScrollTop = startingIndex * _calculatedEstimateHeight;\n        if (renderFromLast) {\n          startingScrollTop -= _calculatedScrollContainerHeight - _calculatedEstimateHeight;\n        }\n\n        // initialize the scrollTop value, which will be applied to the\n        // scrollContainer after the collection has been initialized\n        this._scrollTop = startingScrollTop + _collectionOffset;\n        this._prevFirstVisibleIndex = startingIndex;\n      } else {\n        this._scrollTop = this._scrollContainer.scrollTop;\n      }\n      this._started = true;\n      this.update();\n\n      // Setup event handlers\n      addScrollHandler(this._scrollContainer, this._scrollHandler);\n      ViewportContainer$1.addEventListener('resize', this._resizeHandler);\n    }\n\n    /*\n     * Schedules an update for the next RAF\n     *\n     * This will first run _updateVirtualComponents in the sync phase, which figures out what\n     * components need to be rerendered and updates the appropriate VCs and moves their associated\n     * DOM. At the end of the `sync` phase the runloop is flushed and Glimmer renders the changes.\n     *\n     * By the `affect` phase the Radar should have had time to measure, meaning it has all of the\n     * current info and we can send actions for any changes.\n     *\n     * @private\n     */;\n    _proto.scheduleUpdate = function scheduleUpdate(didUpdateItems, promiseResolve) {\n      var _this2 = this;\n      if (didUpdateItems === true) {\n        // Set the update items flag first, in case scheduleUpdate has already been called\n        // but the RAF hasn't yet run\n        this._didUpdateItems = true;\n      }\n      if (this._nextUpdate !== null || this._started === false) {\n        return;\n      }\n      this._nextUpdate = this.schedule('sync', function () {\n        _this2._nextUpdate = null;\n        _this2._scrollTop = _this2._scrollContainer.scrollTop;\n        _this2.update(promiseResolve);\n      });\n    };\n    _proto.update = function update(promiseResolve) {\n      var _this3 = this;\n      if (this._didUpdateItems === true) {\n        this._determineUpdateType();\n        this._didUpdateItems = false;\n      }\n      this._updateConstants();\n      this._updateIndexes();\n      this._updateVirtualComponents();\n      this.schedule('measure', function () {\n        if (promiseResolve) {\n          promiseResolve();\n        }\n        _this3.afterUpdate();\n      });\n    };\n    _proto.afterUpdate = function afterUpdate() {\n      var totalItems = this._prevTotalItems;\n      var scrollDiff = this._calculateScrollDiff();\n      if (scrollDiff !== 0) {\n        this._scrollContainer.scrollTop += scrollDiff;\n      }\n\n      // Re-sync scrollTop, since Chrome may have intervened\n      this._scrollTop = this._scrollContainer.scrollTop;\n\n      // Unset prepend offset, we're done with any prepend changes at this point\n      this._prependOffset = 0;\n      if (totalItems !== 0) {\n        this._sendActions();\n      }\n\n      // Cache previous values\n      this._prevFirstItemIndex = this.firstItemIndex;\n      this._prevLastItemIndex = this.lastItemIndex;\n      this._prevFirstVisibleIndex = this.firstVisibleIndex;\n      this._prevLastVisibleIndex = this.lastVisibleIndex;\n\n      // Clear the reset flag\n      this._didReset = false;\n      if (this._debugDidUpdate !== null) {\n        // Hook to update the visual debugger\n        this._debugDidUpdate(this);\n      }\n    }\n\n    /*\n     * The scroll diff is the difference between where we want the container's scrollTop to be,\n     * and where it actually is right now. By default it accounts for the `_prependOffset`, which\n     * is set when items are added to the front of the collection, as well as any discrepancies\n     * that may have arisen between the cached `_scrollTop` value and the actually container's\n     * scrollTop. The container's scrollTop may be modified by the browser when we manipulate DOM\n     * (Chrome specifically does this a lot), so `_scrollTop` should be considered the canonical\n     * scroll top.\n     *\n     * Subclasses should override this method to provide any difference between expected item size\n     * pre-render and actual item size post-render.\n     */;\n    _proto._calculateScrollDiff = function _calculateScrollDiff() {\n      return this._prependOffset + this._scrollTop - this._scrollContainer.scrollTop;\n    };\n    _proto._determineUpdateType = function _determineUpdateType() {\n      var items = this.items,\n        key = this.key,\n        totalItems = this.totalItems,\n        _prevTotalItems = this._prevTotalItems,\n        _prevFirstKey = this._prevFirstKey,\n        _prevLastKey = this._prevLastKey;\n      var lenDiff = totalItems - _prevTotalItems;\n      if (isPrepend(lenDiff, items, key, _prevFirstKey, _prevLastKey) === true) {\n        this.prepend(lenDiff);\n      } else if (isAppend(lenDiff, items, key, _prevFirstKey, _prevLastKey) === true) {\n        this.append(lenDiff);\n      } else {\n        this.reset();\n      }\n      var firstItem = objectAt(this.items, 0);\n      var lastItem = objectAt(this.items, this.totalItems - 1);\n      this._prevTotalItems = totalItems;\n      this._prevFirstKey = totalItems > 0 ? keyForItem(firstItem, key, 0) : 0;\n      this._prevLastKey = totalItems > 0 ? keyForItem(lastItem, key, totalItems - 1) : 0;\n    };\n    _proto._updateConstants = function _updateConstants() {\n      var estimateHeight = this.estimateHeight,\n        _occludedContentBefore = this._occludedContentBefore,\n        _itemContainer = this._itemContainer,\n        _scrollContainer = this._scrollContainer;\n      (!(estimateHeight !== null) && debug.assert('Must provide a `estimateHeight` value to vertical-collection', estimateHeight !== null));\n      (!(_itemContainer !== null) && debug.assert('itemContainer must be set on Radar before scheduling an update', _itemContainer !== null));\n      (!(_scrollContainer !== null) && debug.assert('scrollContainer must be set on Radar before scheduling an update', _scrollContainer !== null)); // The scroll container's offsetHeight will reflect the actual height of the element, while\n      // it's measured height via bounding client rect will reflect the height with any transformations\n      // applied. We use this to find out the scale of the items so we can store measurements at the\n      // correct heights.\n      var scrollContainerOffsetHeight = _scrollContainer.offsetHeight;\n      var _scrollContainer$getB = _scrollContainer.getBoundingClientRect(),\n        scrollContainerRenderedHeight = _scrollContainer$getB.height;\n      var transformScale;\n\n      // transformScale represents the opposite of the scale, if any, applied to the collection. Check for equality\n      // to guard against floating point errors, and check to make sure we're not dividing by zero (default to scale 1 if so)\n      if (scrollContainerOffsetHeight === scrollContainerRenderedHeight || scrollContainerRenderedHeight === 0) {\n        transformScale = 1;\n      } else {\n        transformScale = scrollContainerOffsetHeight / scrollContainerRenderedHeight;\n      }\n      var _getScaledClientRect = getScaledClientRect(_occludedContentBefore, transformScale),\n        scrollContentTop = _getScaledClientRect.top;\n      var _getScaledClientRect2 = getScaledClientRect(_scrollContainer, transformScale),\n        scrollContainerTop = _getScaledClientRect2.top;\n      var scrollContainerMaxHeight = 0;\n      if (_scrollContainer instanceof Element) {\n        var maxHeightStyle = window.getComputedStyle(_scrollContainer).maxHeight;\n        if (maxHeightStyle !== 'none') {\n          scrollContainerMaxHeight = estimateElementHeight(_scrollContainer.parentElement, maxHeightStyle);\n        }\n      }\n      var calculatedEstimateHeight = typeof estimateHeight === 'string' ? estimateElementHeight(_itemContainer, estimateHeight) : estimateHeight;\n      (!(calculatedEstimateHeight > 0) && debug.assert(\"calculatedEstimateHeight must be greater than 0, instead was \\\"\" + calculatedEstimateHeight + \"\\\" based on estimateHeight: \" + estimateHeight, calculatedEstimateHeight > 0));\n      this._transformScale = transformScale;\n      this._calculatedEstimateHeight = calculatedEstimateHeight;\n      this._calculatedScrollContainerHeight = roundTo(Math.max(scrollContainerOffsetHeight, scrollContainerMaxHeight));\n\n      // The offset between the top of the collection and the top of the scroll container. Determined by finding\n      // the distance from the collection is from the top of the scroll container's content (scrollTop + actual position)\n      // and subtracting the scroll containers actual top.\n      this._collectionOffset = roundTo(_scrollContainer.scrollTop + scrollContentTop - scrollContainerTop);\n    }\n\n    /*\n     * Updates virtualComponents, which is meant to be a static pool of components that we render to.\n     * In order to decrease the time spent rendering and diffing, we pull the {{each}} out of the DOM\n     * and only replace the content of _virtualComponents which are removed/added.\n     *\n     * For instance, if we start with the following and scroll down, items 2 and 3 do not need to be\n     * rerendered, only item 1 needs to be removed and only item 4 needs to be added. So we replace\n     * item 1 with item 4, and then manually move the DOM:\n     *\n     *   1                        4                         2\n     *   2 -> replace 1 with 4 -> 2 -> manually move DOM -> 3\n     *   3                        3                         4\n     *\n     * However, _virtualComponents is still out of order. Rather than keep track of the state of\n     * things in _virtualComponents, we track the visually ordered components in the\n     * _orderedComponents array. This is possible because all of our operations are relatively simple,\n     * popping some number of components off one end and pushing them onto the other.\n     *\n     * @private\n     */;\n    _proto._updateVirtualComponents = function _updateVirtualComponents() {\n      var _this4 = this;\n      var items = this.items,\n        orderedComponents = this.orderedComponents,\n        virtualComponents = this.virtualComponents,\n        _componentPool = this._componentPool,\n        shouldRecycle = this.shouldRecycle,\n        renderAll = this.renderAll,\n        _started = this._started,\n        _didReset = this._didReset,\n        _occludedContentBefore = this._occludedContentBefore,\n        _occludedContentAfter = this._occludedContentAfter,\n        totalItems = this.totalItems;\n      var renderedFirstItemIndex, renderedLastItemIndex, renderedTotalBefore, renderedTotalAfter;\n      if (renderAll === true) {\n        // All items should be rendered, set indexes based on total item count\n        renderedFirstItemIndex = 0;\n        renderedLastItemIndex = totalItems - 1;\n        renderedTotalBefore = 0;\n        renderedTotalAfter = 0;\n      } else if (_started === false) {\n        // The Radar hasn't been started yet, render the initialRenderCount if it exists\n        renderedFirstItemIndex = this.startingIndex;\n        renderedLastItemIndex = this.startingIndex + this.initialRenderCount - 1;\n        renderedTotalBefore = 0;\n        renderedTotalAfter = 0;\n      } else {\n        renderedFirstItemIndex = this.firstItemIndex;\n        renderedLastItemIndex = this.lastItemIndex;\n        renderedTotalBefore = this.totalBefore;\n        renderedTotalAfter = this.totalAfter;\n      }\n\n      // If there are less items available than rendered, we drop the last rendered item index\n      renderedLastItemIndex = Math.min(renderedLastItemIndex, totalItems - 1);\n\n      // Add components to be recycled to the pool\n      while (orderedComponents.length > 0 && orderedComponents[0].index < renderedFirstItemIndex) {\n        _componentPool.push(orderedComponents.shift());\n      }\n      while (orderedComponents.length > 0 && orderedComponents[orderedComponents.length - 1].index > renderedLastItemIndex) {\n        _componentPool.unshift(orderedComponents.pop());\n      }\n      if (_didReset) {\n        if (shouldRecycle === true) {\n          for (var i = 0; i < orderedComponents.length; i++) {\n            // If the underlying array has changed, the indexes could be the same but\n            // the content may have changed, so recycle the remaining components\n            var component = orderedComponents[i];\n            component.recycle(objectAt(items, component.index), component.index);\n          }\n        } else {\n          while (orderedComponents.length > 0) {\n            // If recycling is disabled we need to delete all components and clear the array\n            _componentPool.push(orderedComponents.shift());\n          }\n        }\n      }\n      var firstIndexInList = orderedComponents.length > 0 ? orderedComponents[0].index : renderedFirstItemIndex;\n      var lastIndexInList = orderedComponents.length > 0 ? orderedComponents[orderedComponents.length - 1].index : renderedFirstItemIndex - 1;\n\n      // Append as many items as needed to the rendered components\n      while (lastIndexInList < renderedLastItemIndex) {\n        var _component = void 0;\n        if (shouldRecycle === true) {\n          _component = _componentPool.pop() || new VirtualComponent();\n        } else {\n          _component = new VirtualComponent();\n        }\n        var itemIndex = ++lastIndexInList;\n        _component.recycle(objectAt(items, itemIndex), itemIndex);\n        this._appendComponent(_component);\n        orderedComponents.push(_component);\n      }\n\n      // Prepend as many items as needed to the rendered components\n      while (firstIndexInList > renderedFirstItemIndex) {\n        var _component2 = void 0;\n        if (shouldRecycle === true) {\n          _component2 = _componentPool.pop() || new VirtualComponent();\n        } else {\n          _component2 = new VirtualComponent();\n        }\n        var _itemIndex = --firstIndexInList;\n        _component2.recycle(objectAt(items, _itemIndex), _itemIndex);\n        this._prependComponent(_component2);\n        orderedComponents.unshift(_component2);\n      }\n\n      // If there are any items remaining in the pool, remove them\n      if (_componentPool.length > 0) {\n        if (shouldRecycle === true) {\n          var _loop = function _loop() {\n            var component = _componentPool[_i];\n            var item = objectAt(items, component.index);\n            if (item) {\n              insertRangeBefore(_this4._domPool, null, component.realUpperBound, component.realLowerBound);\n            } else {\n              // Insert the virtual component bound back to make sure Glimmer is\n              // not confused about the state of the DOM.\n              insertRangeBefore(_this4._itemContainer, null, component.realUpperBound, component.realLowerBound);\n              runloop.run(function () {\n                virtualComponents.removeObject(component);\n              });\n              _componentPool.splice(_i, 1);\n            }\n          };\n          // Grab the DOM of the remaining components and move it to temporary node disconnected from\n          // the body if the item can be reused later otherwise delete the component to avoid virtual re-rendering of the\n          // deleted item. If we end up using these components again, we'll grab their DOM and put it back\n          for (var _i = _componentPool.length - 1; _i >= 0; _i--) {\n            _loop();\n          }\n        } else {\n          virtualComponents.removeObjects(_componentPool);\n          _componentPool.length = 0;\n        }\n      }\n      var totalItemsBefore = renderedFirstItemIndex;\n      var totalItemsAfter = totalItems - renderedLastItemIndex - 1;\n      var beforeItemsText = totalItemsBefore === 1 ? 'item' : 'items';\n      var afterItemsText = totalItemsAfter === 1 ? 'item' : 'items';\n\n      // Set padding element heights.\n      _occludedContentBefore.style.height = Math.max(renderedTotalBefore, 0) + \"px\";\n      _occludedContentBefore.innerHTML = totalItemsBefore > 0 ? \"And \" + totalItemsBefore + \" \" + beforeItemsText + \" before\" : '';\n      _occludedContentAfter.style.height = Math.max(renderedTotalAfter, 0) + \"px\";\n      _occludedContentAfter.innerHTML = totalItemsAfter > 0 ? \"And \" + totalItemsAfter + \" \" + afterItemsText + \" after\" : '';\n    };\n    _proto._appendComponent = function _appendComponent(component) {\n      var _this5 = this;\n      var virtualComponents = this.virtualComponents,\n        _occludedContentAfter = this._occludedContentAfter,\n        _appendComponentPool = this._appendComponentPool,\n        shouldRecycle = this.shouldRecycle,\n        _itemContainer = this._itemContainer;\n      var relativeNode = _occludedContentAfter.realUpperBound;\n      if (component.rendered === true) {\n        insertRangeBefore(_itemContainer, relativeNode, component.realUpperBound, component.realLowerBound);\n      } else {\n        virtualComponents.insertAt(virtualComponents.length - 1, component);\n        component.rendered = true;\n\n        // shouldRecycle=false breaks UI when scrolling the elements fast. \n        // Reference https://github.com/html-next/vertical-collection/issues/296\n        // Components that are both new and appended still need to be rendered at the end because Glimmer.\n        // We have to move them _after_ they render, so we schedule that if they exist\n        if (!shouldRecycle) {\n          _appendComponentPool.unshift(component);\n          if (this._nextLayout === null) {\n            this._nextLayout = this.schedule('layout', function () {\n              _this5._nextLayout = null;\n              while (_appendComponentPool.length > 0) {\n                var _component3 = _appendComponentPool.pop();\n\n                // Changes with each inserted component\n                var _relativeNode = _occludedContentAfter.realUpperBound;\n                insertRangeBefore(_this5._itemContainer, _relativeNode, _component3.realUpperBound, _component3.realLowerBound);\n              }\n            });\n          }\n        }\n      }\n    };\n    _proto._prependComponent = function _prependComponent(component) {\n      var _this6 = this;\n      var virtualComponents = this.virtualComponents,\n        _occludedContentBefore = this._occludedContentBefore,\n        _prependComponentPool = this._prependComponentPool,\n        _itemContainer = this._itemContainer;\n      var relativeNode = _occludedContentBefore.realLowerBound.nextSibling;\n      if (component.rendered === true) {\n        insertRangeBefore(_itemContainer, relativeNode, component.realUpperBound, component.realLowerBound);\n      } else {\n        virtualComponents.insertAt(virtualComponents.length - 1, component);\n        component.rendered = true;\n\n        // Components that are both new and prepended still need to be rendered at the end because Glimmer.\n        // We have to move them _after_ they render, so we schedule that if they exist\n        _prependComponentPool.unshift(component);\n        if (this._nextLayout === null) {\n          this._nextLayout = this.schedule('layout', function () {\n            _this6._nextLayout = null;\n            while (_prependComponentPool.length > 0) {\n              var _component4 = _prependComponentPool.pop();\n\n              // Changes with each inserted component\n              var _relativeNode2 = _occludedContentBefore.realLowerBound.nextSibling;\n              insertRangeBefore(_itemContainer, _relativeNode2, _component4.realUpperBound, _component4.realLowerBound);\n            }\n          });\n        }\n      }\n    };\n    _proto._sendActions = function _sendActions() {\n      var firstItemIndex = this.firstItemIndex,\n        lastItemIndex = this.lastItemIndex,\n        firstVisibleIndex = this.firstVisibleIndex,\n        lastVisibleIndex = this.lastVisibleIndex,\n        _prevFirstVisibleIndex = this._prevFirstVisibleIndex,\n        _prevLastVisibleIndex = this._prevLastVisibleIndex,\n        totalItems = this.totalItems,\n        _firstReached = this._firstReached,\n        _lastReached = this._lastReached,\n        _didReset = this._didReset;\n      if (_didReset || firstVisibleIndex !== _prevFirstVisibleIndex) {\n        this.sendAction('firstVisibleChanged', firstVisibleIndex);\n      }\n      if (_didReset || lastVisibleIndex !== _prevLastVisibleIndex) {\n        this.sendAction('lastVisibleChanged', lastVisibleIndex);\n      }\n      if (_firstReached === false && firstItemIndex === 0) {\n        this.sendAction('firstReached', firstItemIndex);\n        this._firstReached = true;\n      }\n      if (_lastReached === false && lastItemIndex === totalItems - 1) {\n        this.sendAction('lastReached', lastItemIndex);\n        this._lastReached = true;\n      }\n    };\n    _proto.prepend = function prepend(numPrepended) {\n      this._prevFirstItemIndex += numPrepended;\n      this._prevLastItemIndex += numPrepended;\n      this.orderedComponents.forEach(function (c) {\n        return object.set(c, 'index', object.get(c, 'index') + numPrepended);\n      });\n      this._firstReached = false;\n      this._prependOffset = numPrepended * this._calculatedEstimateHeight;\n    };\n    _proto.append = function append() {\n      this._lastReached = false;\n    };\n    _proto.reset = function reset() {\n      this._firstReached = false;\n      this._lastReached = false;\n      this._didReset = true;\n    };\n    _proto.pageUp = function pageUp() {\n      if (this.renderAll) {\n        return; // All items rendered, no need to page up\n      }\n      var bufferSize = this.bufferSize,\n        firstItemIndex = this.firstItemIndex,\n        totalComponents = this.totalComponents;\n      if (firstItemIndex !== 0) {\n        var newFirstItemIndex = Math.max(firstItemIndex - totalComponents + bufferSize, 0);\n        var offset = this.getOffsetForIndex(newFirstItemIndex);\n        this._scrollContainer.scrollTop = offset + this._collectionOffset;\n        this.scheduleUpdate();\n      }\n    };\n    _proto.pageDown = function pageDown() {\n      if (this.renderAll) {\n        return; // All items rendered, no need to page down\n      }\n      var bufferSize = this.bufferSize,\n        lastItemIndex = this.lastItemIndex,\n        totalComponents = this.totalComponents,\n        totalItems = this.totalItems;\n      if (lastItemIndex !== totalItems - 1) {\n        var newFirstItemIndex = Math.min(lastItemIndex + bufferSize + 1, totalItems - totalComponents);\n        var offset = this.getOffsetForIndex(newFirstItemIndex);\n        this._scrollContainer.scrollTop = offset + this._collectionOffset;\n        this.scheduleUpdate();\n      }\n    };\n    return _createClass$2(Radar, [{\n      key: \"totalComponents\",\n      get: function get() {\n        return Math.min(this.totalItems, this.lastItemIndex - this.firstItemIndex + 1);\n      }\n\n      /*\n       * `prependOffset` exists because there are times when we need to do the following in this exact\n       * order:\n       *\n       * 1. Prepend, which means we need to adjust the scroll position by `estimateHeight * numPrepended`\n       * 2. Calculate the items that will be displayed after the prepend, and move VCs around as\n       *    necessary (`scheduleUpdate`).\n       * 3. Actually add the amount prepended to `scrollContainer.scrollTop`\n       *\n       * This is due to some strange behavior in Chrome where it will modify `scrollTop` on it's own\n       * when prepending item elements. We seem to avoid this behavior by doing these things in a RAF\n       * in this exact order.\n       */\n    }, {\n      key: \"visibleTop\",\n      get: function get() {\n        return Math.max(this._scrollTop - this._collectionOffset + this._prependOffset, 0);\n      }\n    }, {\n      key: \"visibleMiddle\",\n      get: function get() {\n        return this.visibleTop + this._calculatedScrollContainerHeight / 2;\n      }\n    }, {\n      key: \"visibleBottom\",\n      get: function get() {\n        // There is a case where the container of this vertical collection could have height 0 at\n        // initial render step but will be updated later. We want to return visibleBottom to be 0 rather\n        // than -1.\n        return Math.max(this.visibleTop + this._calculatedScrollContainerHeight - 1, 0);\n      }\n    }, {\n      key: \"totalItems\",\n      get: function get() {\n        return this.items ? object.get(this.items, 'length') : 0;\n      }\n    }]);\n  }();\n\n  /*\n   * `SkipList` is a data structure designed with two main uses in mind:\n   *\n   * - Given a target value, find the index i in the list such that\n   * `sum(list[0]..list[i]) <= value < sum(list[0]..list[i + 1])`\n   *\n   * - Given the index i (the fulcrum point) from above, get `sum(list[0]..list[i])`\n   *   and `sum(list[i + 1]..list[-1])`\n   *\n   * The idea is that given a list of arbitrary heights or widths in pixels, we want to find\n   * the index of the item such that when all of the items before it are added together, it will\n   * be as close to the target (scrollTop of our container) as possible.\n   *\n   * This data structure acts somewhat like a Binary Search Tree. Given a list of size n, the\n   * retreival time for the index is O(log n) and the update time should any values change is\n   * O(log n). The space complexity is O(n log n) in bytes (using Float32Arrays helps a lot\n   * here), and the initialization time is O(n log n).\n   *\n   * It works by constructing layer arrays, each of which is setup such that\n   * `layer[i] = prevLayer[i * 2] + prevLayer[(i * 2) + 1]`. This allows us to traverse the layers\n   * downward using a binary search to arrive at the index we want. We also add the values up as we\n   * traverse to get the total value before and after the final index.\n   */\n\n  function fill(array, value, start, end) {\n    if (start === void 0) {\n      start = 0;\n    }\n    if (end === void 0) {\n      end = array.length;\n    }\n    if (typeof array.fill === 'function') {\n      array.fill(value, start, end);\n    } else {\n      for (; start < end; start++) {\n        array[start] = value;\n      }\n      return array;\n    }\n  }\n  function subarray(array, start, end) {\n    if (typeof array.subarray === 'function') {\n      return array.subarray(start, end);\n    } else {\n      return array.slice(start, end);\n    }\n  }\n  var SkipList = /*#__PURE__*/function () {\n    function SkipList(length, defaultValue) {\n      var values = new Float32Array(new ArrayBuffer(length * 4));\n      fill(values, defaultValue);\n      this.length = length;\n      this.defaultValue = defaultValue;\n      this._initializeLayers(values, defaultValue);\n      {\n        Object.preventExtensions(this);\n      }\n    }\n    var _proto = SkipList.prototype;\n    _proto._initializeLayers = function _initializeLayers(values, defaultValue) {\n      var layers = [values];\n      var i, length, layer, prevLayer, left, right;\n      prevLayer = layer = values;\n      length = values.length;\n      while (length > 2) {\n        length = Math.ceil(length / 2);\n        layer = new Float32Array(new ArrayBuffer(length * 4));\n        if (defaultValue !== undefined) {\n          // If given a default value we assume that we can fill each\n          // layer of the skip list with the previous layer's value * 2.\n          // This allows us to use the `fill` method on Typed arrays, which\n          // an order of magnitude faster than manually calculating each value.\n          defaultValue = defaultValue * 2;\n          fill(layer, defaultValue);\n          left = prevLayer[(length - 1) * 2] || 0;\n          right = prevLayer[(length - 1) * 2 + 1] || 0;\n\n          // Layers are not powers of 2, and sometimes they may by odd sizes.\n          // Only the last value of a layer will be different, so we calculate\n          // its value manually.\n          layer[length - 1] = left + right;\n        } else {\n          for (i = 0; i < length; i++) {\n            left = prevLayer[i * 2];\n            right = prevLayer[i * 2 + 1];\n            layer[i] = right ? left + right : left;\n          }\n        }\n        layers.unshift(layer);\n        prevLayer = layer;\n      }\n      this.total = layer.length > 0 ? layer.length > 1 ? layer[0] + layer[1] : layer[0] : 0;\n      (!(typeof this.total === 'number') && debug.assert('total must be a number', typeof this.total === 'number'));\n      this.layers = layers;\n      this.values = values;\n    };\n    _proto.find = function find(targetValue) {\n      var layers = this.layers,\n        total = this.total,\n        length = this.length,\n        values = this.values;\n      var numLayers = layers.length;\n      if (length === 0) {\n        return {\n          index: 0,\n          totalBefore: 0,\n          totalAfter: 0\n        };\n      }\n      var i, layer, left, leftIndex, rightIndex;\n      var index = 0;\n      var totalBefore = 0;\n      var totalAfter = 0;\n      targetValue = Math.min(total - 1, targetValue);\n      (!(typeof targetValue === 'number') && debug.assert('targetValue must be a number', typeof targetValue === 'number'));\n      (!(targetValue >= 0) && debug.assert('targetValue must be greater than or equal to 0', targetValue >= 0));\n      (!(targetValue < total) && debug.assert('targetValue must be no more than total', targetValue < total));\n      for (i = 0; i < numLayers; i++) {\n        layer = layers[i];\n        leftIndex = index;\n        rightIndex = index + 1;\n        left = layer[leftIndex];\n        if (targetValue >= totalBefore + left) {\n          totalBefore = totalBefore + left;\n          index = rightIndex * 2;\n        } else {\n          index = leftIndex * 2;\n        }\n      }\n      index = index / 2;\n      (!(typeof index === 'number') && debug.assert('index must be a number', typeof index === 'number'));\n      (!(index >= 0 && index < this.values.length) && debug.assert('index must be within bounds', index >= 0 && index < this.values.length));\n      totalAfter = total - (totalBefore + values[index]);\n      return {\n        index: index,\n        totalBefore: totalBefore,\n        totalAfter: totalAfter\n      };\n    };\n    _proto.getOffset = function getOffset(targetIndex) {\n      var layers = this.layers,\n        length = this.length,\n        values = this.values;\n      var numLayers = layers.length;\n      if (length === 0) {\n        return 0;\n      }\n      var index = 0;\n      var offset = 0;\n      for (var i = 0; i < numLayers - 1; i++) {\n        var layer = layers[i];\n        var leftIndex = index;\n        var rightIndex = index + 1;\n        if (targetIndex >= rightIndex * Math.pow(2, numLayers - i - 1)) {\n          offset = offset + layer[leftIndex];\n          index = rightIndex * 2;\n        } else {\n          index = leftIndex * 2;\n        }\n      }\n      if (index + 1 === targetIndex) {\n        offset += values[index];\n      }\n      return offset;\n    };\n    _proto.set = function set(index, value) {\n      (!(typeof value === 'number') && debug.assert('value must be a number', typeof value === 'number'));\n      (!(value >= 0) && debug.assert('value must non-negative', value >= 0));\n      (!(typeof index === 'number') && debug.assert('index must be a number', typeof index === 'number'));\n      (!(index >= 0 && index < this.values.length) && debug.assert('index must be within bounds', index >= 0 && index < this.values.length));\n      var layers = this.layers;\n      var oldValue = layers[layers.length - 1][index];\n      var delta = roundTo(value - oldValue);\n      if (delta === 0) {\n        return delta;\n      }\n      var i, layer;\n      for (i = layers.length - 1; i >= 0; i--) {\n        layer = layers[i];\n        layer[index] += delta;\n        index = Math.floor(index / 2);\n      }\n      this.total += delta;\n      return delta;\n    };\n    _proto.prepend = function prepend(numPrepended) {\n      var oldValues = this.values,\n        oldLength = this.length,\n        defaultValue = this.defaultValue;\n      var newLength = numPrepended + oldLength;\n      var newValues = new Float32Array(new ArrayBuffer(newLength * 4));\n      newValues.set(oldValues, numPrepended);\n      fill(newValues, defaultValue, 0, numPrepended);\n      this.length = newLength;\n      this._initializeLayers(newValues);\n    };\n    _proto.append = function append(numAppended) {\n      var oldValues = this.values,\n        oldLength = this.length,\n        defaultValue = this.defaultValue;\n      var newLength = numAppended + oldLength;\n      var newValues = new Float32Array(new ArrayBuffer(newLength * 4));\n      newValues.set(oldValues);\n      fill(newValues, defaultValue, oldLength);\n      this.length = newLength;\n      this._initializeLayers(newValues);\n    };\n    _proto.reset = function reset(newLength) {\n      var oldValues = this.values,\n        oldLength = this.length,\n        defaultValue = this.defaultValue;\n      if (oldLength === newLength) {\n        return;\n      }\n      var newValues = new Float32Array(new ArrayBuffer(newLength * 4));\n      if (oldLength < newLength) {\n        newValues.set(oldValues);\n        fill(newValues, defaultValue, oldLength);\n      } else {\n        newValues.set(subarray(oldValues, 0, newLength));\n      }\n      this.length = newLength;\n      if (oldLength === 0) {\n        this._initializeLayers(newValues, defaultValue);\n      } else {\n        this._initializeLayers(newValues);\n      }\n    };\n    return SkipList;\n  }();\n\n  function _defineProperties$1(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey$1(o.key), o); } }\n  function _createClass$1(e, r, t) { return r && _defineProperties$1(e.prototype, r), t && _defineProperties$1(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey$1(t) { var i = _toPrimitive$1(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive$1(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _inheritsLoose$1(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf$1(t, o); }\n  function _setPrototypeOf$1(t, e) { return _setPrototypeOf$1 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf$1(t, e); }\n  var DynamicRadar = /*#__PURE__*/function (_Radar) {\n    function DynamicRadar(parentToken, options) {\n      var _this;\n      _this = _Radar.call(this, parentToken, options) || this;\n      _this._firstItemIndex = 0;\n      _this._lastItemIndex = 0;\n      _this._totalBefore = 0;\n      _this._totalAfter = 0;\n      _this._minHeight = Infinity;\n      _this._nextIncrementalRender = null;\n      _this.skipList = null;\n      {\n        Object.preventExtensions(_this);\n      }\n      return _this;\n    }\n    _inheritsLoose$1(DynamicRadar, _Radar);\n    var _proto = DynamicRadar.prototype;\n    _proto.destroy = function destroy() {\n      _Radar.prototype.destroy.call(this);\n      this.skipList = null;\n    };\n    _proto.scheduleUpdate = function scheduleUpdate(didUpdateItems, promiseResolve) {\n      // Cancel incremental render check, since we'll be remeasuring anyways\n      if (this._nextIncrementalRender !== null) {\n        this._nextIncrementalRender.cancel();\n        this._nextIncrementalRender = null;\n      }\n      _Radar.prototype.scheduleUpdate.call(this, didUpdateItems, promiseResolve);\n    };\n    _proto.afterUpdate = function afterUpdate() {\n      var _this2 = this;\n      // Schedule a check to see if we should rerender\n      if (this._nextIncrementalRender === null && this._nextUpdate === null) {\n        this._nextIncrementalRender = this.schedule('sync', function () {\n          _this2._nextIncrementalRender = null;\n          if (_this2._shouldScheduleRerender()) {\n            _this2.update();\n          }\n        });\n      }\n      _Radar.prototype.afterUpdate.call(this);\n    };\n    _proto._updateConstants = function _updateConstants() {\n      _Radar.prototype._updateConstants.call(this);\n      if (this._calculatedEstimateHeight < this._minHeight) {\n        this._minHeight = this._calculatedEstimateHeight;\n      }\n\n      // Create the SkipList only after the estimateHeight has been calculated the first time\n      if (this.skipList === null) {\n        this.skipList = new SkipList(this.totalItems, this._calculatedEstimateHeight);\n      } else {\n        this.skipList.defaultValue = this._calculatedEstimateHeight;\n      }\n    };\n    _proto._updateIndexes = function _updateIndexes() {\n      var bufferSize = this.bufferSize,\n        skipList = this.skipList,\n        visibleTop = this.visibleTop,\n        visibleBottom = this.visibleBottom,\n        totalItems = this.totalItems,\n        _didReset = this._didReset;\n      if (totalItems === 0) {\n        this._firstItemIndex = 0;\n        this._lastItemIndex = -1;\n        this._totalBefore = 0;\n        this._totalAfter = 0;\n        return;\n      }\n\n      // Don't measure if the radar has just been instantiated or reset, as we are rendering with a\n      // completely new set of items and won't get an accurate measurement until after they render the\n      // first time.\n      if (_didReset === false) {\n        this._measure();\n      }\n      var values = skipList.values;\n      var _this$skipList$find = this.skipList.find(visibleTop),\n        totalBefore = _this$skipList$find.totalBefore,\n        firstVisibleIndex = _this$skipList$find.index;\n      var _this$skipList$find2 = this.skipList.find(visibleBottom),\n        totalAfter = _this$skipList$find2.totalAfter,\n        lastVisibleIndex = _this$skipList$find2.index;\n      var maxIndex = totalItems - 1;\n      var firstItemIndex = firstVisibleIndex;\n      var lastItemIndex = lastVisibleIndex;\n\n      // Add buffers\n      for (var i = bufferSize; i > 0 && firstItemIndex > 0; i--) {\n        firstItemIndex--;\n        totalBefore -= values[firstItemIndex];\n      }\n      for (var _i = bufferSize; _i > 0 && lastItemIndex < maxIndex; _i--) {\n        lastItemIndex++;\n        totalAfter -= values[lastItemIndex];\n      }\n      this._firstItemIndex = firstItemIndex;\n      this._lastItemIndex = lastItemIndex;\n      this._totalBefore = totalBefore;\n      this._totalAfter = totalAfter;\n    };\n    _proto._calculateScrollDiff = function _calculateScrollDiff() {\n      var firstItemIndex = this.firstItemIndex,\n        _prevFirstVisibleIndex = this._prevFirstVisibleIndex,\n        _prevFirstItemIndex = this._prevFirstItemIndex;\n      var beforeVisibleDiff = 0;\n      if (firstItemIndex < _prevFirstItemIndex) {\n        // Measurement only items that could affect scrollTop. This will necesarilly be the\n        // minimum of the either the total number of items that are rendered up to the first\n        // visible item, OR the number of items that changed before the first visible item\n        // (the delta). We want to measure the delta of exactly this number of items, because\n        // items that are after the first visible item should not affect the scroll position,\n        // and neither should items already rendered before the first visible item.\n        var measureLimit = Math.min(Math.abs(firstItemIndex - _prevFirstItemIndex), _prevFirstVisibleIndex - firstItemIndex);\n        beforeVisibleDiff = Math.round(this._measure(measureLimit));\n      }\n      return beforeVisibleDiff + _Radar.prototype._calculateScrollDiff.call(this);\n    };\n    _proto._shouldScheduleRerender = function _shouldScheduleRerender() {\n      var firstItemIndex = this.firstItemIndex,\n        lastItemIndex = this.lastItemIndex;\n      this._updateConstants();\n      this._measure();\n\n      // These indexes could change after the measurement, and in the incremental render\n      // case we want to check them _after_ the change.\n      var firstVisibleIndex = this.firstVisibleIndex,\n        lastVisibleIndex = this.lastVisibleIndex;\n      return firstVisibleIndex < firstItemIndex || lastVisibleIndex > lastItemIndex;\n    };\n    _proto._measure = function _measure(measureLimit) {\n      if (measureLimit === void 0) {\n        measureLimit = null;\n      }\n      var orderedComponents = this.orderedComponents,\n        skipList = this.skipList,\n        _occludedContentBefore = this._occludedContentBefore,\n        _transformScale = this._transformScale;\n      var numToMeasure = measureLimit !== null ? Math.min(measureLimit, orderedComponents.length) : orderedComponents.length;\n      var totalDelta = 0;\n      for (var i = 0; i < numToMeasure; i++) {\n        var currentItem = orderedComponents[i];\n        var previousItem = orderedComponents[i - 1];\n        var itemIndex = currentItem.index;\n        var _getScaledClientRect = getScaledClientRect(currentItem, _transformScale),\n          currentItemTop = _getScaledClientRect.top,\n          currentItemHeight = _getScaledClientRect.height;\n        var margin = void 0;\n        if (previousItem !== undefined) {\n          margin = currentItemTop - getScaledClientRect(previousItem, _transformScale).bottom;\n        } else {\n          margin = currentItemTop - getScaledClientRect(_occludedContentBefore, _transformScale).bottom;\n        }\n        var newHeight = roundTo(currentItemHeight + margin);\n        var itemDelta = skipList.set(itemIndex, newHeight);\n        if (newHeight < this._minHeight) {\n          this._minHeight = newHeight;\n        }\n        if (itemDelta !== 0) {\n          totalDelta += itemDelta;\n        }\n      }\n      return totalDelta;\n    };\n    _proto._didEarthquake = function _didEarthquake(scrollDiff) {\n      return scrollDiff > this._minHeight / 2;\n    };\n    _proto.prepend = function prepend(numPrepended) {\n      _Radar.prototype.prepend.call(this, numPrepended);\n      this.skipList.prepend(numPrepended);\n    };\n    _proto.append = function append(numAppended) {\n      _Radar.prototype.append.call(this, numAppended);\n      this.skipList.append(numAppended);\n    };\n    _proto.reset = function reset() {\n      _Radar.prototype.reset.call(this);\n      this.skipList.reset(this.totalItems);\n    }\n\n    /*\n     * Public API to query the skiplist for the offset of an item\n     */;\n    _proto.getOffsetForIndex = function getOffsetForIndex(index) {\n      this._measure();\n      return this.skipList.getOffset(index);\n    };\n    return _createClass$1(DynamicRadar, [{\n      key: \"total\",\n      get: function get() {\n        return this.skipList.total;\n      }\n    }, {\n      key: \"totalBefore\",\n      get: function get() {\n        return this._totalBefore;\n      }\n    }, {\n      key: \"totalAfter\",\n      get: function get() {\n        return this._totalAfter;\n      }\n    }, {\n      key: \"firstItemIndex\",\n      get: function get() {\n        return this._firstItemIndex;\n      }\n    }, {\n      key: \"lastItemIndex\",\n      get: function get() {\n        return this._lastItemIndex;\n      }\n    }, {\n      key: \"firstVisibleIndex\",\n      get: function get() {\n        var visibleTop = this.visibleTop;\n        var _this$skipList$find3 = this.skipList.find(visibleTop),\n          index = _this$skipList$find3.index;\n        return index;\n      }\n    }, {\n      key: \"lastVisibleIndex\",\n      get: function get() {\n        var visibleBottom = this.visibleBottom,\n          totalItems = this.totalItems;\n        var _this$skipList$find4 = this.skipList.find(visibleBottom),\n          index = _this$skipList$find4.index;\n        return Math.min(index, totalItems - 1);\n      }\n    }]);\n  }(Radar);\n\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var StaticRadar = /*#__PURE__*/function (_Radar) {\n    function StaticRadar(parentToken, options) {\n      var _this;\n      _this = _Radar.call(this, parentToken, options) || this;\n      _this._firstItemIndex = 0;\n      _this._lastItemIndex = 0;\n      {\n        Object.preventExtensions(_this);\n      }\n      return _this;\n    }\n    _inheritsLoose(StaticRadar, _Radar);\n    var _proto = StaticRadar.prototype;\n    _proto._updateIndexes = function _updateIndexes() {\n      var bufferSize = this.bufferSize,\n        totalItems = this.totalItems,\n        visibleMiddle = this.visibleMiddle,\n        _calculatedEstimateHeight = this._calculatedEstimateHeight,\n        _calculatedScrollContainerHeight = this._calculatedScrollContainerHeight;\n      if (totalItems === 0) {\n        this._firstItemIndex = 0;\n        this._lastItemIndex = -1;\n        return;\n      }\n      var maxIndex = totalItems - 1;\n      var middleItemIndex = Math.floor(visibleMiddle / _calculatedEstimateHeight);\n      var shouldRenderCount = Math.min(Math.ceil(_calculatedScrollContainerHeight / _calculatedEstimateHeight), totalItems);\n      var firstItemIndex = middleItemIndex - Math.floor(shouldRenderCount / 2);\n      var lastItemIndex = middleItemIndex + Math.ceil(shouldRenderCount / 2) - 1;\n      if (firstItemIndex < 0) {\n        firstItemIndex = 0;\n        lastItemIndex = shouldRenderCount - 1;\n      }\n      if (lastItemIndex > maxIndex) {\n        lastItemIndex = maxIndex;\n        firstItemIndex = maxIndex - (shouldRenderCount - 1);\n      }\n      firstItemIndex = Math.max(firstItemIndex - bufferSize, 0);\n      lastItemIndex = Math.min(lastItemIndex + bufferSize, maxIndex);\n      this._firstItemIndex = firstItemIndex;\n      this._lastItemIndex = lastItemIndex;\n    };\n    _proto._didEarthquake = function _didEarthquake(scrollDiff) {\n      return scrollDiff > this._calculatedEstimateHeight / 2;\n    };\n    /*\n     * Public API to query for the offset of an item\n     */\n    _proto.getOffsetForIndex = function getOffsetForIndex(index) {\n      return index * this._calculatedEstimateHeight + 1;\n    };\n    return _createClass(StaticRadar, [{\n      key: \"total\",\n      get: function get() {\n        return this.totalItems * this._calculatedEstimateHeight;\n      }\n    }, {\n      key: \"totalBefore\",\n      get: function get() {\n        return this.firstItemIndex * this._calculatedEstimateHeight;\n      }\n    }, {\n      key: \"totalAfter\",\n      get: function get() {\n        return this.total - (this.lastItemIndex + 1) * this._calculatedEstimateHeight;\n      }\n    }, {\n      key: \"firstItemIndex\",\n      get: function get() {\n        return this._firstItemIndex;\n      }\n    }, {\n      key: \"lastItemIndex\",\n      get: function get() {\n        return this._lastItemIndex;\n      }\n    }, {\n      key: \"firstVisibleIndex\",\n      get: function get() {\n        return Math.ceil(this.visibleTop / this._calculatedEstimateHeight);\n      }\n    }, {\n      key: \"lastVisibleIndex\",\n      get: function get() {\n        return Math.min(Math.ceil(this.visibleBottom / this._calculatedEstimateHeight), this.totalItems) - 1;\n      }\n    }]);\n  }(Radar);\n\n  exports.DynamicRadar = DynamicRadar;\n  exports.ScrollHandler = ScrollHandler;\n  exports.StaticRadar = StaticRadar;\n  exports.ViewportContainer = ViewportContainer$1;\n  exports.addScrollHandler = addScrollHandler;\n  exports.closestElement = closest;\n  exports.keyForItem = keyForItem;\n  exports.objectAt = objectAt;\n  exports.removeScrollHandler = removeScrollHandler;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","define(\"@html-next/vertical-collection/components/vertical-collection/component\", [\"exports\", \"@ember/debug\", \"@ember/object/computed\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"@html-next/vertical-collection/components/vertical-collection/template\", \"@html-next/vertical-collection/-private\", \"ember-raf-scheduler\"], function (_exports, _debug, _computed, _component, _object, _runloop, _template, _private, _emberRafScheduler) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /*\n   * BEGIN DEBUG HELPERS\n   *\n   * These methods and the Visualization class are used by DEBUG code paths.\n   */\n  function isNonZero(value) {\n    var int = parseInt(value, 10);\n    var float = parseFloat(value);\n    return !isNaN(int) && (int !== 0 || float !== 0);\n  }\n  function hasStyleValue(styles, key, value) {\n    return styles[key] === value;\n  }\n  function hasStyleWithNonZeroValue(styles, key) {\n    return isNonZero(styles[key]);\n  }\n  function styleIsOneOf(styles, key, values) {\n    return styles[key] && values.indexOf(styles[key]) !== -1;\n  }\n  function applyVerticalStyles(element, geography) {\n    element.style.height = geography.height + \"px\";\n    element.style.top = geography.top + \"px\";\n  }\n  var Visualization = /*#__PURE__*/function () {\n    function Visualization(radar) {\n      this.radar = radar;\n      this.satellites = [];\n      this.cache = [];\n      this.wrapper = document.createElement('div');\n      this.wrapper.className = 'vertical-collection-visual-debugger';\n      this.container = document.createElement('div');\n      this.container.className = 'vc_visualization-container';\n      this.wrapper.appendChild(this.container);\n      this.itemContainer = document.createElement('div');\n      this.itemContainer.className = 'vc_visualization-item-container';\n      this.container.appendChild(this.itemContainer);\n      this.scrollContainer = document.createElement('div');\n      this.scrollContainer.className = 'vc_visualization-scroll-container';\n      this.container.appendChild(this.scrollContainer);\n      this.screen = document.createElement('div');\n      this.screen.className = 'vc_visualization-screen';\n      this.container.appendChild(this.screen);\n      document.body.appendChild(this.wrapper);\n    }\n    var _proto = Visualization.prototype;\n    _proto.render = function render() {\n      this.styleViewport();\n      this.updateSatellites();\n    };\n    _proto.styleViewport = function styleViewport() {\n      var _scrollContainer = this.radar._scrollContainer;\n      this.container.style.height = _scrollContainer.getBoundingClientRect().height + \"px\";\n      applyVerticalStyles(this.scrollContainer, _scrollContainer.getBoundingClientRect());\n      applyVerticalStyles(this.screen, _private.ViewportContainer.getBoundingClientRect());\n    };\n    _proto.makeSatellite = function makeSatellite() {\n      var satellite;\n      if (this.cache.length) {\n        satellite = this.cache.pop();\n      } else {\n        satellite = document.createElement('div');\n        satellite.className = 'vc_visualization-virtual-component';\n      }\n      this.satellites.push(satellite);\n      this.itemContainer.append(satellite);\n    };\n    _proto.updateSatellites = function updateSatellites() {\n      var sats = this.satellites;\n      var _this$radar = this.radar,\n        firstItemIndex = _this$radar.firstItemIndex,\n        lastItemIndex = _this$radar.lastItemIndex,\n        totalItems = _this$radar.totalItems,\n        totalBefore = _this$radar.totalBefore,\n        totalAfter = _this$radar.totalAfter,\n        skipList = _this$radar.skipList,\n        _calculatedEstimateHeight = _this$radar._calculatedEstimateHeight;\n      var isDynamic = !!skipList;\n      var itemHeights = isDynamic && skipList.values;\n      var firstVisualizedIndex = Math.max(firstItemIndex - 10, 0);\n      var lastVisualizedIndex = Math.min(lastItemIndex + 10, totalItems - 1);\n      var lengthWithBuffer = lastVisualizedIndex - firstVisualizedIndex + 1;\n      var isShrinking = sats.length > lengthWithBuffer;\n      while (sats.length !== lengthWithBuffer) {\n        if (isShrinking) {\n          var satellite = sats.pop();\n          satellite.parentNode.removeChild(satellite);\n          this.cache.push(satellite);\n        } else {\n          this.makeSatellite();\n        }\n      }\n      for (var itemIndex = firstVisualizedIndex, i = 0; itemIndex <= lastVisualizedIndex; itemIndex++, i++) {\n        var element = sats[i];\n        var itemHeight = isDynamic ? itemHeights[itemIndex] : _calculatedEstimateHeight;\n        element.style.height = itemHeight + \"px\";\n        element.setAttribute('index', String(itemIndex));\n        element.innerText = String(itemIndex);\n        if (itemIndex < firstItemIndex) {\n          element.classList.add('culled');\n          totalBefore -= itemHeight;\n        } else if (itemIndex > lastItemIndex) {\n          element.classList.add('culled');\n          totalAfter -= itemHeight;\n        } else {\n          element.classList.remove('culled');\n        }\n      }\n      this.itemContainer.style.paddingTop = totalBefore + \"px\";\n      this.itemContainer.style.paddingBottom = totalAfter + \"px\";\n    };\n    _proto.destroy = function destroy() {\n      this.wrapper.parentNode.removeChild(this.wrapper);\n      this.wrapper = null;\n      this.radar = null;\n      this.component = null;\n      this.satellites.forEach(function (satellite) {\n        if (satellite.parentNode) {\n          satellite.parentNode.removeChild(satellite);\n        }\n      });\n      this.satellites = null;\n      this.cache = null;\n    };\n    return Visualization;\n  }();\n  /*\n   * END DEBUG HELPERS\n   */\n  var VerticalCollection = _component.default.extend({\n    layout: _template.default,\n    tagName: '',\n    /**\n     * Property name used for storing references to each item in items. Accessing this attribute for each item\n     * should yield a unique result for every item in the list.\n     *\n     * @property key\n     * @type String\n     * @default '@identity'\n     */\n    key: '@identity',\n    // –––––––––––––– Required Settings\n\n    /**\n     * Estimated height of an item to be rendered. Use best guess as this will be used to determine how many items\n     * are displayed virtually, before and after the vertical-collection viewport.\n     *\n     * @property estimateHeight\n     * @type Number\n     * @required\n     */\n    estimateHeight: null,\n    /**\n     * List of objects to svelte-render.\n     * Can be called like `<VerticalCollection @items={{itemsArray}} />`.\n     *\n     * @property items\n     * @type Array\n     * @required\n     */\n    items: null,\n    // –––––––––––––– Optional Settings\n    /**\n     * Indicates if the occluded items' heights will change or not.\n     * If true, the vertical-collection will assume that items' heights are always equal to estimateHeight;\n     * this is more performant, but less flexible.\n     *\n     * @property staticHeight\n     * @type Boolean\n     */\n    staticHeight: false,\n    /**\n     * Indicates whether or not list items in the Radar should be reused on update of virtual components (e.g. scroll).\n     * This yields performance benefits because it is not necessary to repopulate the component pool of the radar.\n     * Set to false when recycling a component instance has undesirable ramifications including:\n     *  - When using `unbound` in a component or sub-component\n     *  - When using init for instance state that differs between instances of a component or sub-component\n     *      (can move to didInitAttrs to fix this)\n     *  - When templates for individual items vary widely or are based on conditionals that are likely to change\n     *      (i.e. would defeat any benefits of DOM recycling anyway)\n     *\n     * @property shouldRecycle\n     * @type Boolean\n     */\n    shouldRecycle: true,\n    /*\n     * A selector string that will select the element from\n     * which to calculate the viewable height and needed offsets.\n     *\n     * This element will also have the `scroll` event handler added to it.\n     *\n     * Usually this element will be the component's immediate parent element,\n     * if so, you can leave this null.\n     *\n     * Set this to \"body\" to scroll the entire web page.\n     */\n    containerSelector: '*',\n    // –––––––––––––– Performance Tuning\n    /**\n     * The amount of extra items to keep visible on either side of the viewport -- must be greater than 0.\n     * Increasing this value is useful when doing infinite scrolling and loading data from a remote service,\n     * with the desire to allow records to show as the user scrolls and the backend API takes time to respond.\n     *\n     * @property bufferSize\n     * @type Number\n     * @default 1\n     */\n    bufferSize: 1,\n    // –––––––––––––– Initial Scroll State\n    /**\n     * If set, upon initialization the scroll\n     * position will be set such that the item\n     * with the provided id is at the top left\n     * on screen.\n     *\n     * If the item cannot be found, scrollTop\n     * is set to 0.\n     * @property idForFirstItem\n     */\n    idForFirstItem: null,\n    /**\n     * If set, if scrollPosition is empty\n     * at initialization, the component will\n     * render starting at the bottom.\n     * @property renderFromLast\n     * @type Boolean\n     * @default false\n     */\n    renderFromLast: false,\n    /**\n     * If set to true, the collection will render all of the items passed into the component.\n     * This counteracts the performance benefits of using vertical collection, but has several potential applications,\n     * including but not limited to:\n     *\n     * - It allows for improved accessibility since all elements are rendered and can be picked up by a screen reader.\n     * - Can be applied in SEO solutions (i.e. fastboot) where rendering every item is desirable.\n     * - Can be used to respond to the keyboard input for Find (i.e. ctrl+F/cmd+F) to show all elements, which then\n     *    allows the list items to be searchable\n     *\n     * @property renderAll\n     * @type Boolean\n     * @default false\n     */\n    renderAll: false,\n    /**\n     * The tag name used in DOM elements before and after the rendered list. By default, it is set to\n     * 'occluded-content' to avoid any confusion with user's CSS settings. However, it could be\n     * overriden to provide custom behavior (for example, in table user wants to set it to 'tr' to\n     * comply with table semantics).\n     */\n    occlusionTagName: 'occluded-content',\n    isEmpty: (0, _computed.empty)('items'),\n    shouldYieldToInverse: (0, _computed.readOnly)('isEmpty'),\n    virtualComponents: (0, _object.computed)('items.[]', 'renderAll', 'estimateHeight', 'bufferSize', function () {\n      var _radar = this._radar;\n      var items = this.items;\n      _radar.items = items === null || items === undefined ? [] : items;\n      _radar.estimateHeight = this.estimateHeight;\n      _radar.renderAll = this.renderAll;\n      _radar.bufferSize = this.bufferSize;\n      _radar.scheduleUpdate(true);\n      this._clearScheduledActions();\n      return _radar.virtualComponents;\n    }),\n    schedule: function schedule(queueName, job) {\n      return _emberRafScheduler.scheduler.schedule(queueName, job, this.token);\n    },\n    _clearScheduledActions: function _clearScheduledActions() {\n      clearTimeout(this._nextSendActions);\n      this._nextSendActions = null;\n      this._scheduledActions.length = 0;\n    },\n    _scheduleSendAction: function _scheduleSendAction(action, index) {\n      var _this = this;\n      this._scheduledActions.push([action, index]);\n      if (this._nextSendActions === null) {\n        this._nextSendActions = setTimeout(function () {\n          _this._nextSendActions = null;\n          (0, _runloop.run)(function () {\n            var items = _this.items;\n            var keyPath = _this.key;\n            _this._scheduledActions.forEach(function (_ref) {\n              var action = _ref[0],\n                index = _ref[1];\n              var item = (0, _private.objectAt)(items, index);\n              var key = (0, _private.keyForItem)(item, keyPath, index);\n\n              // this.sendAction will be deprecated in ember 4.0\n              var _action = (0, _object.get)(_this, action);\n              if (typeof _action == 'function') {\n                _action(item, index, key);\n              } else if (typeof _action === 'string') {\n                _this.sendAction(action, item, index, key);\n              }\n            });\n            _this._scheduledActions.length = 0;\n          });\n        });\n      }\n    },\n    /* Public API Methods\n       @index => number\n       This will return offset height of the indexed item.\n    */\n    scrollToItem: function scrollToItem(index) {\n      var _radar = this._radar;\n      // Getting the offset height from Radar\n      var scrollTop = _radar.getOffsetForIndex(index);\n      _radar._scrollContainer.scrollTop = scrollTop;\n      // To scroll exactly to specified index, we are changing the prevIndex values to specified index\n      _radar._prevFirstVisibleIndex = _radar._prevFirstItemIndex = index;\n      // Components will be rendered after schedule 'measure' inside 'update' method.\n      // In our case, we need to focus the element after component is rendered. So passing the promise.\n      return new Promise(function (resolve) {\n        _radar.scheduleUpdate(false, resolve);\n      });\n    },\n    // –––––––––––––– Setup/Teardown\n    didInsertElement: function didInsertElement() {\n      var _this2 = this;\n      this.schedule('sync', function () {\n        _this2._radar.start();\n      });\n    },\n    willDestroy: function willDestroy() {\n      this.token.cancel();\n      this._radar.destroy();\n      var registerAPI = this.registerAPI;\n      if (registerAPI) {\n        registerAPI(null);\n      }\n      clearTimeout(this._nextSendActions);\n      if (true /* DEBUG */) {\n        if (this.__visualization) {\n          console.info('destroying visualization'); // eslint-disable-line no-console\n          this.__visualization.destroy();\n          this.__visualization = null;\n        }\n      }\n    },\n    init: function init() {\n      var _this3 = this;\n      this._super();\n      this.token = new _emberRafScheduler.Token();\n      var RadarClass = this.staticHeight ? _private.StaticRadar : _private.DynamicRadar;\n      var items = this.items || [];\n      var bufferSize = this.bufferSize,\n        containerSelector = this.containerSelector,\n        estimateHeight = this.estimateHeight,\n        initialRenderCount = this.initialRenderCount,\n        renderAll = this.renderAll,\n        renderFromLast = this.renderFromLast,\n        shouldRecycle = this.shouldRecycle,\n        occlusionTagName = this.occlusionTagName,\n        idForFirstItem = this.idForFirstItem,\n        key = this.key;\n      var startingIndex = calculateStartingIndex(items, idForFirstItem, key, renderFromLast);\n      this._radar = new RadarClass(this.token, {\n        bufferSize: bufferSize,\n        containerSelector: containerSelector,\n        estimateHeight: estimateHeight,\n        initialRenderCount: initialRenderCount,\n        items: items,\n        key: key,\n        renderAll: renderAll,\n        renderFromLast: renderFromLast,\n        shouldRecycle: shouldRecycle,\n        startingIndex: startingIndex,\n        occlusionTagName: occlusionTagName\n      });\n      this._prevItemsLength = 0;\n      this._prevFirstKey = null;\n      this._prevLastKey = null;\n      this._hasAction = null;\n      this._scheduledActions = [];\n      this._nextSendActions = null;\n      var a = !!this.lastReached;\n      var b = !!this.firstReached;\n      var c = !!this.lastVisibleChanged;\n      var d = !!this.firstVisibleChanged;\n      var any = a || b || c || d;\n      if (any) {\n        this._hasAction = {\n          lastReached: a,\n          firstReached: b,\n          lastVisibleChanged: c,\n          firstVisibleChanged: d\n        };\n        this._radar.sendAction = function (action, index) {\n          if (_this3._hasAction[action]) {\n            _this3._scheduleSendAction(action, index);\n          }\n        };\n      }\n\n      /* Public methods to Expose to parent\n        \n        Usage:\n         Template:\n         <VerticalCollection @registerAPI={{action \"registerAPI\"}} />\n         Component:\n        \n        export default Component.extend({\n          actions: {\n            registerAPI(api) {\n                this.set('collectionAPI', api);\n            }\n          },\n          scrollToItem() {\n            let collectionAPI = this.collectionAPI;\n            collectionAPI.scrollToItem(index);\n          }\n        });\n          \n        Need to pass this property in the vertical-collection template\n        Listen in the component actions and do your custom logic\n         This API will have below methods.\n          1. scrollToItem\n      */\n\n      var registerAPI = (0, _object.get)(this, 'registerAPI');\n      if (registerAPI) {\n        /* List of methods to be exposed to public should be added here */\n        var publicAPI = {\n          scrollToItem: this.scrollToItem.bind(this)\n        };\n        registerAPI(publicAPI);\n      }\n      if (true /* DEBUG */) {\n        this.__visualization = null;\n        this._radar._debugDidUpdate = function () {\n          // Update visualization\n          //\n          // This debugging mode can be controlled via the argument\n          // `@debugVis={{true}}` at component invocation.\n          //\n          if (_this3.debugVis !== true) {\n            if (_this3.__visualization !== null) {\n              console.info('tearing down existing visualization'); // eslint-disable-line no-console\n              _this3.__visualization.destroy();\n              _this3.__visualization = null;\n            }\n            return;\n          }\n          if (_this3.__visualization === null) {\n            _this3.__visualization = new Visualization(_this3._radar);\n          }\n          _this3.__visualization.render();\n\n          // Detect issues with CSS\n          //\n          // This debugging mode can be controlled via the argument\n          // `@debugCSS={{true}}` at component invocation.\n          //\n          if (_this3.debugCSS !== true) {\n            return;\n          }\n          var radar = _this3._radar;\n          var styles;\n\n          // check telescope\n          if (radar.scrollContainer !== _private.ViewportContainer) {\n            styles = window.getComputedStyle(radar.scrollContainer);\n          } else {\n            styles = window.getComputedStyle(document.body);\n          }\n          (true && !(styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])) && (0, _debug.assert)(\"scrollContainer cannot be inline.\", styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])));\n          (true && !(styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])) && (0, _debug.assert)(\"scrollContainer must define position\", styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])));\n          (true && !(hasStyleWithNonZeroValue(styles, 'height') || hasStyleWithNonZeroValue(styles, 'max-height')) && (0, _debug.assert)(\"scrollContainer must define height or max-height\", hasStyleWithNonZeroValue(styles, 'height') || hasStyleWithNonZeroValue(styles, 'max-height'))); // conditional perf check for non-body scrolling\n          if (radar.scrollContainer !== _private.ViewportContainer) {\n            (true && !(hasStyleValue(styles, 'overflow-y', 'scroll') || hasStyleValue(styles, 'overflow', 'scroll')) && (0, _debug.assert)(\"scrollContainer must define overflow-y\", hasStyleValue(styles, 'overflow-y', 'scroll') || hasStyleValue(styles, 'overflow', 'scroll')));\n          }\n\n          // check itemContainer\n          styles = window.getComputedStyle(radar.itemContainer);\n          (true && !(styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])) && (0, _debug.assert)(\"itemContainer cannot be inline.\", styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])));\n          (true && !(styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])) && (0, _debug.assert)(\"itemContainer must define position\", styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute']))); // check item defaults\n          (true && !(_this3.items.length) && (0, _debug.assert)(\"You must supply at least one item to the collection to debug it's CSS.\", _this3.items.length));\n          var element = radar._itemContainer.firstElementChild;\n          styles = window.getComputedStyle(element);\n          (true && !(styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])) && (0, _debug.assert)(\"Item cannot be inline.\", styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])));\n          (true && !(styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])) && (0, _debug.assert)(\"Item must define position\", styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])));\n        };\n      }\n    }\n  });\n  function calculateStartingIndex(items, idForFirstItem, key, renderFromLast) {\n    var totalItems = (0, _object.get)(items, 'length');\n    var startingIndex = 0;\n    if (idForFirstItem !== undefined && idForFirstItem !== null) {\n      for (var i = 0; i < totalItems; i++) {\n        if ((0, _private.keyForItem)((0, _private.objectAt)(items, i), key, i) === idForFirstItem) {\n          startingIndex = i;\n          break;\n        }\n      }\n    } else if (renderFromLast === true) {\n      // If no id was set and `renderFromLast` is true, start from the bottom\n      startingIndex = totalItems - 1;\n    }\n    return startingIndex;\n  }\n  var _default = _exports.default = VerticalCollection;\n});","define(\"@html-next/vertical-collection/components/vertical-collection/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.virtualComponents key=\"id\" as |virtualComponent| ~}}\n    {{~unbound virtualComponent.upperBound~}}\n    {{~#if virtualComponent.isOccludedContent ~}}\n      {{{unbound virtualComponent.element}}}\n    {{~else~}}\n      {{~yield virtualComponent.content virtualComponent.index ~}}\n    {{~/if~}}\n    {{~unbound virtualComponent.lowerBound~}}\n  {{~/each}}\n  \n  {{#if this.shouldYieldToInverse}}\n    {{yield to=\"inverse\"}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"JTfU4LBg\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"virtualComponents\\\"]]],null]],null],\\\"id\\\",[[[1,[28,[35,2],[[30,1,[\\\"upperBound\\\"]]],null]],[41,[30,1,[\\\"isOccludedContent\\\"]],[[[2,[28,[37,2],[[30,1,[\\\"element\\\"]]],null]]],[]],[[[18,2,[[30,1,[\\\"content\\\"]],[30,1,[\\\"index\\\"]]]]],[]]],[1,[28,[35,2],[[30,1,[\\\"lowerBound\\\"]]],null]]],[1]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldYieldToInverse\\\"]],[[[1,\\\"  \\\"],[18,3,null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"virtualComponent\\\",\\\"&default\\\",\\\"&else\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"unbound\\\",\\\"if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"@html-next/vertical-collection/components/vertical-collection/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"accounting/format-column\", [\"exports\", \"accounting/settings\", \"accounting/utils\", \"accounting/format-number\", \"accounting/unformat\"], function (_exports, _settings, _utils, _formatNumber, _unformat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Format a list of numbers into an accounting column, padding with whitespace\n   * to line up currency symbols, thousand separators and decimals places\n   *\n   * Second parameter can be an object containing keys that match the params\n   *\n   * NB: `white-space:pre` CSS rule is required on the list container to prevent\n   * browsers from collapsing the whitespace in the output strings.\n   *\n   * ```js\n   * accounting.formatColumn([123.5, 3456.49, 777888.99, 12345678, -5432], \"$ \");\n   * ```\n   *\n   * @method formatColumn\n   * @for accounting\n   * @param {Array<Number>} list An array of numbers to format\n   * @param {Object|String} [symbol=\"$\"] String with the currency symbol. For conveniency if can be an object containing all the options of the method.\n   * @param {Integer}       [precision=2] Number of decimal digits\n   * @param {String}        [thousand=','] String with the thousands separator.\n   * @param {String}        [decimal=\".\"] String with the decimal separator.\n   * @param {String}        [format=\"%s%v\"] String with the format to apply, where %s is the currency symbol and %v is the value.\n   * @return {Array<String>} array of accouting-formatted number strings of same length\n   */\n  function formatColumn(list, symbol, precision, thousand, decimal, format) {\n    if (!list) {\n      return [];\n    }\n\n    // Build options object from second param (if object) or all params, extending defaults:\n    var opts = (0, _utils.defaults)((0, _utils.isObject)(symbol) ? symbol : {\n      symbol: symbol,\n      precision: precision,\n      thousand: thousand,\n      decimal: decimal,\n      format: format\n    }, _settings.currency);\n\n    // Check format (returns object with pos, neg and zero), only need pos for now:\n    var formats = (0, _utils.checkCurrencyFormat)(opts.format);\n\n    // Whether to pad at start of string or after currency symbol:\n    var padAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\");\n\n    // Store value for the length of the longest string in the column:\n    var maxLength = 0;\n\n    // Format the list according to options, store the length of the longest string:\n    var formatted = list.map(function (val) {\n      if (Array.isArray(val)) {\n        // Recursively format columns if list is a multi-dimensional array:\n        return formatColumn(val, opts);\n      } else {\n        // Clean up the value\n        val = (0, _unformat.default)(val);\n\n        // Choose which format to use for this value (pos, neg or zero):\n        var useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero;\n\n        // Format this value, push into formatted list and save the length:\n        var fVal = useFormat.replace('%s', opts.symbol).replace('%v', (0, _formatNumber.default)(Math.abs(val), (0, _utils.checkPrecision)(opts.precision), opts.thousand, opts.decimal));\n        if (fVal.length > maxLength) {\n          maxLength = fVal.length;\n        }\n        return fVal;\n      }\n    });\n\n    // Pad each number in the list and send back the column of numbers:\n    return formatted.map(function (val) {\n      // Only if this is a string (not a nested array, which would have already been padded):\n      if (typeof val === \"string\" && val.length < maxLength) {\n        // Depending on symbol position, pad after symbol or at index 0:\n        return padAfterSymbol ? val.replace(opts.symbol, opts.symbol + new Array(maxLength - val.length + 1).join(\" \")) : new Array(maxLength - val.length + 1).join(\" \") + val;\n      }\n      return val;\n    });\n  }\n  var _default = _exports.default = formatColumn;\n});","define(\"accounting/format-money\", [\"exports\", \"accounting/unformat\", \"accounting/format-number\", \"accounting/settings\", \"accounting/utils\", \"accounting/to-fixed\"], function (_exports, _unformat, _formatNumber, _settings, _utils, _toFixed) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Format a number into currency\n   *\n   * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n   * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n   *\n   * Localise by overriding the symbol, precision, thousand / decimal separators and format\n   * Second param can be an object matching `settings.currency` which is the easiest way.\n   *\n   * ```js\n   * // Default usage:\n   * accounting.formatMoney(12345678); // $12,345,678.00\n   *\n   * // European formatting (custom symbol and separators), can also use options object as second parameter:\n   * accounting.formatMoney(4999.99, \"€\", 2, \".\", \",\"); // €4.999,99\n   *\n   * // Negative values can be formatted nicely:\n   * accounting.formatMoney(-500000, \"£ \", 0); // £ -500,000\n   *\n   * // Simple `format` string allows control of symbol position (%v = value, %s = symbol):\n   * accounting.formatMoney(5318008, { symbol: \"GBP\",  format: \"%v %s\" }); // 5,318,008.00 GBP\n   * ```\n   *\n   * @method formatMoney\n   * @for accounting\n   * @param {Number}        number Number to be formatted.\n   * @param {Object|String} [symbol=\"$\"] String with the currency symbol. For conveniency if can be an object containing all the options of the method.\n   * @param {Integer}       [precision=2] Number of decimal digits\n   * @param {String}        [thousand=','] String with the thousands separator.\n   * @param {String}        [decimal=\".\"] String with the decimal separator.\n   * @param {String}        [format=\"%s%v\"] String with the format to apply, where %s is the currency symbol and %v is the value.\n   * @return {String} The given number properly formatted as money.\n   */\n  function formatMoney(number, symbol, precision, thousand, decimal, format) {\n    // Resursively format arrays:\n    if (Array.isArray(number)) {\n      return number.map(function (val) {\n        return formatMoney(val, symbol, precision, thousand, decimal, format);\n      });\n    }\n\n    // Clean up number:\n    number = (0, _unformat.default)(number);\n\n    // Build options object from second param (if object) or all params, extending defaults:\n    var opts = (0, _utils.defaults)((0, _utils.isObject)(symbol) ? symbol : {\n      symbol: symbol,\n      precision: precision,\n      thousand: thousand,\n      decimal: decimal,\n      format: format\n    }, _settings.currency);\n\n    // Check format (returns object with pos, neg and zero):\n    var formats = (0, _utils.checkCurrencyFormat)(opts.format);\n\n    // Clean up precision\n    var usePrecision = (0, _utils.checkPrecision)(opts.precision);\n\n    // fixedNumber's value is not really used, just used to determine negative or not\n    var fixedNumber = (0, _toFixed.default)(number || 0, usePrecision);\n    // Choose which format to use for this value:\n    var useFormat = fixedNumber > 0 ? formats.pos : fixedNumber < 0 ? formats.neg : formats.zero;\n\n    // Return with currency symbol added:\n    return useFormat.replace('%s', opts.symbol).replace('%v', (0, _formatNumber.default)(Math.abs(number), (0, _utils.checkPrecision)(opts.precision), opts.thousand, opts.decimal));\n  }\n  var _default = _exports.default = formatMoney;\n});","define(\"accounting/format-number\", [\"exports\", \"accounting/settings\", \"accounting/utils\", \"accounting/unformat\", \"accounting/to-fixed\"], function (_exports, _settings, _utils, _unformat, _toFixed) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var numberSettings = _settings.number;\n\n  /**\n   * Format a number, with comma-separated thousands and custom precision/decimal places\n   * Alias: `accounting.format()`\n   *\n   * Localise by overriding the precision and thousand / decimal separators\n   * 2nd parameter `precision` can be an object matching `settings.number`\n   *\n   * ```js\n   * accounting.formatNumber(5318008);              // 5,318,008\n   * accounting.formatNumber(9876543.21, 3, \" \"); // 9 876 543.210\n   * ```\n   *\n   * @method formatNumber\n   * @for accounting\n   * @param {Number}        number The number to be formatted.\n   * @param {Integer}       [precision=2] Number of decimal digits\n   * @param {String}        [thousand=','] String with the thousands separator.\n   * @param {String}        [decimal=\".\"] String with the decimal separator.\n   * @return {String} The given number properly formatted.\n   */\n  function formatNumber(number, precision, thousand, decimal) {\n    // Resursively format arrays:\n    if (Array.isArray(number)) {\n      return number.map(function (val) {\n        return formatNumber(val, precision, thousand, decimal);\n      });\n    }\n\n    // Clean up number:\n    number = (0, _unformat.default)(number);\n\n    // Build options object from second param (if object) or all params, extending defaults:\n    var opts = (0, _utils.defaults)((0, _utils.isObject)(precision) ? precision : {\n      precision: precision,\n      thousand: thousand,\n      decimal: decimal\n    }, numberSettings);\n\n    // Clean up precision\n    var usePrecision = (0, _utils.checkPrecision)(opts.precision);\n\n    // Do some calc:\n    var fixedNumber = (0, _toFixed.default)(number || 0, usePrecision);\n    var negative = fixedNumber < 0 ? \"-\" : \"\";\n    var base = String(parseInt(Math.abs(fixedNumber), 10));\n    var mod = base.length > 3 ? base.length % 3 : 0;\n\n    // Format the number:\n    return negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + (0, _toFixed.default)(Math.abs(number), usePrecision).split('.')[1] : \"\");\n  }\n  var _default = _exports.default = formatNumber;\n});","define(\"accounting/format\", [\"exports\", \"accounting/format-number\"], function (_exports, _formatNumber) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Alias of formatNumber\n   *\n   * @method format\n   * @for accounting\n   */\n  var _default = _exports.default = _formatNumber.default;\n});","define(\"accounting/helpers/format-money\", [\"exports\", \"accounting/format-money\", \"ember\"], function (_exports, _formatMoney, _ember) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _ember.default.Helper.helper(function (params, options) {\n    var value = params[0];\n    return (0, _formatMoney.default)(value, options);\n  });\n});","define(\"accounting/helpers/format-number\", [\"exports\", \"accounting/format-number\", \"ember\"], function (_exports, _formatNumber, _ember) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _ember.default.Helper.helper(function (params, options) {\n    var value = params[0];\n    return (0, _formatNumber.default)(value, options);\n  });\n});","define(\"accounting/index\", [\"exports\", \"accounting/format\", \"accounting/format-column\", \"accounting/format-money\", \"accounting/format-number\", \"accounting/parse\", \"accounting/settings\", \"accounting/to-fixed\", \"accounting/unformat\", \"accounting/version\"], function (_exports, _format, _formatColumn, _formatMoney, _formatNumber, _parse, _settings, _toFixed, _unformat, _version) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  Object.defineProperty(_exports, \"format\", {\n    enumerable: true,\n    get: function get() {\n      return _format.default;\n    }\n  });\n  Object.defineProperty(_exports, \"formatColumn\", {\n    enumerable: true,\n    get: function get() {\n      return _formatColumn.default;\n    }\n  });\n  Object.defineProperty(_exports, \"formatMoney\", {\n    enumerable: true,\n    get: function get() {\n      return _formatMoney.default;\n    }\n  });\n  Object.defineProperty(_exports, \"formatNumber\", {\n    enumerable: true,\n    get: function get() {\n      return _formatNumber.default;\n    }\n  });\n  Object.defineProperty(_exports, \"parse\", {\n    enumerable: true,\n    get: function get() {\n      return _parse.default;\n    }\n  });\n  Object.defineProperty(_exports, \"settings\", {\n    enumerable: true,\n    get: function get() {\n      return _settings.default;\n    }\n  });\n  Object.defineProperty(_exports, \"toFixed\", {\n    enumerable: true,\n    get: function get() {\n      return _toFixed.default;\n    }\n  });\n  Object.defineProperty(_exports, \"unformat\", {\n    enumerable: true,\n    get: function get() {\n      return _unformat.default;\n    }\n  });\n  Object.defineProperty(_exports, \"version\", {\n    enumerable: true,\n    get: function get() {\n      return _version.default;\n    }\n  });\n  var _default = _exports.default = {\n    format: _format.default,\n    formatColumn: _formatColumn.default,\n    formatMoney: _formatMoney.default,\n    formatNumber: _formatNumber.default,\n    parse: _parse.default,\n    settings: _settings.default,\n    toFixed: _toFixed.default,\n    unformat: _unformat.default,\n    version: _version.default\n  };\n});","define(\"accounting/parse\", [\"exports\", \"accounting/unformat\"], function (_exports, _unformat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Alias of unformat\n   *\n   * @method parse\n   * @for accounting\n   */\n  var _default = _exports.default = _unformat.default;\n});","define(\"accounting/settings\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.number = _exports.currency = void 0;\n  var currency = _exports.currency = {\n    symbol: \"$\",\n    // default currency symbol is '$'\n    format: \"%s%v\",\n    // controls output: %s = symbol, %v = value (can be object, see docs)\n    decimal: \".\",\n    // decimal point separator\n    thousand: \",\",\n    // thousands separator\n    precision: 2,\n    // decimal places\n    grouping: 3 // digit grouping (not implemented yet)\n  };\n  var number = _exports.number = {\n    precision: 0,\n    // default precision on numbers is 0\n    grouping: 3,\n    // digit grouping (not implemented yet)\n    thousand: \",\",\n    decimal: \".\"\n  };\n});","define(\"accounting/to-fixed\", [\"exports\", \"accounting/utils\", \"accounting/settings\", \"accounting/unformat\"], function (_exports, _utils, _settings, _unformat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = toFixed;\n  /**\n   * Implementation of toFixed() that treats floats more like decimals\n   *\n   * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n   * problems for accounting- and finance-related software.\n   *\n   * ```js\n   *  (0.615).toFixed(2);           // \"0.61\" (native toFixed has rounding issues)\n   *  accounting.toFixed(0.615, 2); // \"0.62\"\n   * ```\n   *\n   * @method toFixed\n   * @for accounting\n   * @param Float}   value         The float to be treated as a decimal number.\n   * @param {Number} [precision=2] The number of decimal digits to keep.\n   * @return {String} The given number transformed into a string with the given precission\n   */\n  function toFixed(value, precision) {\n    precision = (0, _utils.checkPrecision)(precision, _settings.number.precision);\n    var power = Math.pow(10, precision);\n\n    // Multiply up by precision, round accurately, then divide and use native toFixed():\n    return (Math.round((0, _unformat.default)(value) * power) / power).toFixed(precision);\n  }\n});","define(\"accounting/unformat\", [\"exports\", \"accounting/settings\"], function (_exports, _settings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n   * Alias: `accounting.parse(string)`\n   *\n   * Decimal must be included in the regular expression to match floats (defaults to\n   * accounting.settings.number.decimal), so if the number uses a non-standard decimal\n   * separator, provide it as the second argument.\n   *\n   * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n   *\n   * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n   *\n   * ```js\n   *  accounting.unformat(\"£ 12,345,678.90 GBP\"); // 12345678.9\n   * ```\n   *\n   * @method unformat\n   * @for accounting\n   * @param {String|Array<String>} value The string or array of strings containing the number/s to parse.\n   * @param {Number}               decimal Number of decimal digits of the resultant number\n   * @return {Float} The parsed number\n   */\n  function unformat(value, decimal) {\n    // Recursively unformat arrays:\n    if (Array.isArray(value)) {\n      return value.map(function (val) {\n        return unformat(val, decimal);\n      });\n    }\n\n    // Fails silently (need decent errors):\n    value = value || 0;\n\n    // Return the value as-is if it's already a number:\n    if (typeof value === \"number\") {\n      return value;\n    }\n\n    // Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n    decimal = decimal || _settings.number.decimal;\n\n    // Build regex to strip out everything except digits, decimal point and minus sign:\n    var regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]);\n    var unformatted = parseFloat((\"\" + value).replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n    .replace(regex, '') // strip out any cruft\n    .replace(decimal, '.') // make sure decimal point is standard\n    );\n\n    // This will fail silently which may cause trouble, let's wait and see:\n    return !isNaN(unformatted) ? unformatted : 0;\n  }\n  var _default = _exports.default = unformat;\n});","define(\"accounting/utils\", [\"exports\", \"accounting/settings\", \"ember\"], function (_exports, _settings, _ember) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.checkCurrencyFormat = checkCurrencyFormat;\n  _exports.checkPrecision = checkPrecision;\n  _exports.default = void 0;\n  _exports.defaults = defaults;\n  _exports.isObject = isObject;\n  var assign = _ember.default.assign || _ember.default.merge;\n\n  /**\n   * Extends an object with a defaults object, similar to underscore's _.defaults\n   *\n   * Used for abstracting parameter handling from API methods\n   */\n  function defaults(object, defs) {\n    var key;\n    object = assign({}, object);\n    defs = defs || {};\n    // Iterate over object non-prototype properties:\n    for (key in defs) {\n      if (defs.hasOwnProperty(key)) {\n        // Replace values with defaults only if undefined (allow empty/zero values):\n        if (object[key] == null) {\n          object[key] = defs[key];\n        }\n      }\n    }\n    return object;\n  }\n\n  /**\n   * Check and normalise the value of precision (must be positive integer)\n   */\n  function checkPrecision(val, base) {\n    val = Math.round(Math.abs(val));\n    return isNaN(val) ? base : val;\n  }\n\n  /**\n   * Returns the toString representation of an object even when the object \n   * does not support `toString` out of the box, i.e. `EmptyObject`.\n   */\n  function toString(obj) {\n    return Object.prototype.toString.call(obj);\n  }\n\n  /**\n   * Tests whether supplied parameter is a true object\n   */\n  function isObject(obj) {\n    return obj && toString(obj) === '[object Object]';\n  }\n\n  /**\n   * Parses a format string or object and returns format obj for use in rendering\n   *\n   * `format` is either a string with the default (positive) format, or object\n   * containing `pos` (required), `neg` and `zero` values (or a function returning\n   * either a string or object)\n   *\n   * Either string or format.pos must contain \"%v\" (value) to be valid\n   */\n  function checkCurrencyFormat(format) {\n    var defaults = _settings.currency.format;\n\n    // Allow function as format parameter (should return string or object):\n    if (typeof format === \"function\") {\n      format = format();\n    }\n\n    // Format can be a string, in which case `value` (\"%v\") must be present:\n    if (typeof format === \"string\" && format.match(\"%v\")) {\n      // Create and return positive, negative and zero formats:\n      return {\n        pos: format,\n        neg: format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n        zero: format\n      };\n\n      // If no format, or object is missing valid positive value, use defaults:\n    } else if (!format || !format.pos || !format.pos.match(\"%v\")) {\n      // If defaults is a string, casts it to an object for faster checking next time:\n      if (typeof defaults !== \"string\") {\n        return defaults;\n      } else {\n        return _settings.currency.format = {\n          pos: defaults,\n          neg: defaults.replace(\"%v\", \"-%v\"),\n          zero: defaults\n        };\n      }\n    }\n    // Otherwise, assume format was fine:\n    return format;\n  }\n  var _default = _exports.default = {\n    defaults: defaults,\n    checkPrecision: checkPrecision,\n    isObject: isObject,\n    checkCurrencyFormat: checkCurrencyFormat\n  };\n});","define(\"accounting/version\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = '0.4.1';\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/alert\", [\"exports\", \"@ember/component\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\", \"@ember/template-factory\"], function (_exports, _component, _base, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropClose={{@options.backdropClose}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @keyboard={{@options.keyboard}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{@options.closeButton}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n          confirm=modal.submit\n        }}\n      {{else}}\n        <p>{{@options.footer}}</p>\n        <BsButton\n          @type={{@options.confirmButtonType}}\n          @defaultText={{@options.confirmButtonDefaultText}}\n          @fulfilledText={{@options.confirmButtonFulfilledText}}\n          @pendingText={{@options.confirmButtonPendingText}}\n          @rejectedText={{@options.confirmButtonRejectedText}}\n          @active={{@options.confirmIsActive}}\n          @iconActive={{@options.confirmIconActive}}\n          @iconInactive={{@options.confirmIconInactive}}\n          @size={{@options.confirmButtonSize}}\n          @onClick={{modal.submit}} />\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"UB0IKUFS\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@backdropTransitionDuration\\\",\\\"@keyboard\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropClose\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"keyboard\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[[30,1,[\\\"closeButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\",\\\"confirm\\\"],[[30,1],[30,3,[\\\"submit\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"footer\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"confirmButtonType\\\"]],[30,1,[\\\"confirmButtonDefaultText\\\"]],[30,1,[\\\"confirmButtonFulfilledText\\\"]],[30,1,[\\\"confirmButtonPendingText\\\"]],[30,1,[\\\"confirmButtonRejectedText\\\"]],[30,1,[\\\"confirmIsActive\\\"]],[30,1,[\\\"confirmIconActive\\\"]],[30,1,[\\\"confirmIconInactive\\\"]],[30,1,[\\\"confirmButtonSize\\\"]],[30,3,[\\\"submit\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"bs-button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/alert.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * @category Default Modals\n   */\n  var AlertModal = _exports.default = /*#__PURE__*/function (_BaseModal) {\n    function AlertModal() {\n      _classCallCheck(this, AlertModal);\n      return _callSuper(this, AlertModal, arguments);\n    }\n    _inherits(AlertModal, _BaseModal);\n    return _createClass(AlertModal);\n  }(_base.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AlertModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    Override me!\n  {{yield}}\n  */\n  {\n    \"id\": \"cgbcvnva\",\n    \"block\": \"[[[1,\\\"Override me!\\\\n\\\"],[18,1,null]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/base.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n   * @category Default Modals\n   */\n  var BaseModal = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function BaseModal() {\n      _classCallCheck(this, BaseModal);\n      return _callSuper(this, BaseModal, arguments);\n    }\n    _inherits(BaseModal, _Component);\n    return _createClass(BaseModal, [{\n      key: \"confirm\",\n      value:\n      /**\n       * @category Action Handlers\n       */\n      function confirm(v) {\n        this.args.onConfirm(v);\n      }\n\n      /**\n       * @category Action Handlers\n       */\n    }, {\n      key: \"decline\",\n      value: function decline(v) {\n        this.args.onDecline(v);\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"confirm\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"confirm\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"decline\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"decline\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BaseModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/check-confirm\", [\"exports\", \"@ember/component\", \"@glimmer/tracking\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _prompt, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/tracking\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropClose={{@options.backdropClose}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @keyboard={{@options.keyboard}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{@options.closeButton}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n          updatePromptValue=this.updatePromptValue\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n        <BsForm\n          @model={{this}}\n          @onSubmit={{this.confirm}}\n        as |form|>\n          <form.element\n            @controlType=\"checkbox\"\n            @property=\"promptValue\"\n            @label={{@options.inputLabel}} />\n        </BsForm>\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n          confirmDisabled=this.confirmDisabled\n          confirm=modal.submit\n          decline=modal.close\n        }}\n      {{else}}\n        <p>{{@options.footer}}</p>\n        <BsButton\n          @type={{@options.declineButtonType}}\n          @defaultText={{@options.declineButtonDefaultText}}\n          @fulfilledText={{@options.declineButtonFulfilledText}}\n          @pendingText={{@options.declineButtonPendingText}}\n          @rejectedText={{@options.declineButtonRejectedText}}\n          @active={{@options.declineIsActive}}\n          @iconActive={{@options.declineIconActive}}\n          @iconInactive={{@options.declineIconInactive}}\n          @size={{@options.declineButtonSize}}\n          @onClick={{modal.close}} />\n        <BsButton\n          @type={{@options.confirmButtonType}}\n          disabled={{this.confirmDisabled}}\n          @defaultText={{@options.confirmButtonDefaultText}}\n          @fulfilledText={{@options.confirmButtonFulfilledText}}\n          @pendingText={{@options.confirmButtonPendingText}}\n          @rejectedText={{@options.confirmButtonRejectedText}}\n          @active={{@options.confirmIsActive}}\n          @size={{@options.confirmButtonSize}}\n          @iconActive={{@options.confirmIconActive}}\n          @iconInactive={{@options.confirmIconInactive}}\n          @onClick={{modal.submit}} />\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"XlwlHx03\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@backdropTransitionDuration\\\",\\\"@keyboard\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropClose\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"keyboard\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[[30,1,[\\\"closeButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\",\\\"updatePromptValue\\\"],[[30,1],[30,0,[\\\"updatePromptValue\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@onSubmit\\\"],[[30,0],[30,0,[\\\"confirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,4,[\\\"element\\\"]],null,[[\\\"@controlType\\\",\\\"@property\\\",\\\"@label\\\"],[\\\"checkbox\\\",\\\"promptValue\\\",[30,1,[\\\"inputLabel\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\",\\\"confirmDisabled\\\",\\\"confirm\\\",\\\"decline\\\"],[[30,1],[30,0,[\\\"confirmDisabled\\\"]],[30,3,[\\\"submit\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"footer\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"declineButtonType\\\"]],[30,1,[\\\"declineButtonDefaultText\\\"]],[30,1,[\\\"declineButtonFulfilledText\\\"]],[30,1,[\\\"declineButtonPendingText\\\"]],[30,1,[\\\"declineButtonRejectedText\\\"]],[30,1,[\\\"declineIsActive\\\"]],[30,1,[\\\"declineIconActive\\\"]],[30,1,[\\\"declineIconInactive\\\"]],[30,1,[\\\"declineButtonSize\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,7],[[16,\\\"disabled\\\",[30,0,[\\\"confirmDisabled\\\"]]]],[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@size\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@onClick\\\"],[[30,1,[\\\"confirmButtonType\\\"]],[30,1,[\\\"confirmButtonDefaultText\\\"]],[30,1,[\\\"confirmButtonFulfilledText\\\"]],[30,1,[\\\"confirmButtonPendingText\\\"]],[30,1,[\\\"confirmButtonRejectedText\\\"]],[30,1,[\\\"confirmIsActive\\\"]],[30,1,[\\\"confirmButtonSize\\\"]],[30,1,[\\\"confirmIconActive\\\"]],[30,1,[\\\"confirmIconInactive\\\"]],[30,3,[\\\"submit\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\",\\\"form\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"bs-form\\\",\\\"bs-button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/check-confirm.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * @category Default Modals\n   */\n  var CheckConfirmModal = _exports.default = (_class = /*#__PURE__*/function (_PromptModal) {\n    function CheckConfirmModal() {\n      var _this;\n      _classCallCheck(this, CheckConfirmModal);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, CheckConfirmModal, [].concat(args));\n      _initializerDefineProperty(_this, \"promptValue\", _descriptor, _this);\n      _defineProperty(_this, \"simplifiedInput\", true);\n      return _this;\n    }\n    _inherits(CheckConfirmModal, _PromptModal);\n    return _createClass(CheckConfirmModal, [{\n      key: \"confirmDisabled\",\n      get: function get() {\n        return !this.promptValue;\n      }\n    }]);\n  }(_prompt.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"promptValue\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CheckConfirmModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/confirm\", [\"exports\", \"@ember/component\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\", \"@ember/template-factory\"], function (_exports, _component, _base, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropClose={{@options.backdropClose}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @keyboard={{@options.keyboard}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{@options.closeButton}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n          confirm=modal.submit\n          decline=modal.close\n        }}\n      {{else}}\n        <p>{{@options.footer}}</p>\n        <BsButton\n          @type={{@options.declineButtonType}}\n          @defaultText={{@options.declineButtonDefaultText}}\n          @fulfilledText={{@options.declineButtonFulfilledText}}\n          @pendingText={{@options.declineButtonPendingText}}\n          @rejectedText={{@options.declineButtonRejectedText}}\n          @active={{@options.declineIsActive}}\n          @iconActive={{@options.declineIconActive}}\n          @iconInactive={{@options.declineIconInactive}}\n          @size={{@options.declineButtonSize}}\n          @onClick={{modal.close}} />\n        <BsButton\n          @type={{@options.confirmButtonType}}\n          @defaultText={{@options.confirmButtonDefaultText}}\n          @fulfilledText={{@options.confirmButtonFulfilledText}}\n          @pendingText={{@options.confirmButtonPendingText}}\n          @rejectedText={{@options.confirmButtonRejectedText}}\n          @active={{@options.confirmIsActive}}\n          @iconActive={{@options.confirmIconActive}}\n          @size={{@options.confirmButtonSize}}\n          @iconInactive={{@options.confirmIconInactive}}\n          @onClick={{modal.submit}} />\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"IhT1e77G\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@backdropTransitionDuration\\\",\\\"@keyboard\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropClose\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"keyboard\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[[30,1,[\\\"closeButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\",\\\"confirm\\\",\\\"decline\\\"],[[30,1],[30,3,[\\\"submit\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"footer\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"declineButtonType\\\"]],[30,1,[\\\"declineButtonDefaultText\\\"]],[30,1,[\\\"declineButtonFulfilledText\\\"]],[30,1,[\\\"declineButtonPendingText\\\"]],[30,1,[\\\"declineButtonRejectedText\\\"]],[30,1,[\\\"declineIsActive\\\"]],[30,1,[\\\"declineIconActive\\\"]],[30,1,[\\\"declineIconInactive\\\"]],[30,1,[\\\"declineButtonSize\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@size\\\",\\\"@iconInactive\\\",\\\"@onClick\\\"],[[30,1,[\\\"confirmButtonType\\\"]],[30,1,[\\\"confirmButtonDefaultText\\\"]],[30,1,[\\\"confirmButtonFulfilledText\\\"]],[30,1,[\\\"confirmButtonPendingText\\\"]],[30,1,[\\\"confirmButtonRejectedText\\\"]],[30,1,[\\\"confirmIsActive\\\"]],[30,1,[\\\"confirmIconActive\\\"]],[30,1,[\\\"confirmButtonSize\\\"]],[30,1,[\\\"confirmIconInactive\\\"]],[30,3,[\\\"submit\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"bs-button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/confirm.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * @category Default Modals\n   */\n  var ConfirmModal = _exports.default = /*#__PURE__*/function (_BaseModal) {\n    function ConfirmModal() {\n      _classCallCheck(this, ConfirmModal);\n      return _callSuper(this, ConfirmModal, arguments);\n    }\n    _inherits(ConfirmModal, _BaseModal);\n    return _createClass(ConfirmModal);\n  }(_base.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ConfirmModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/process\", [\"exports\", \"@ember/component\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\", \"@ember/template-factory\"], function (_exports, _component, _base, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @keyboard={{false}}\n    @backdropClose={{false}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{false}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n        {{#if @options.iconClass}}\n          <p class=\"text-center\"><i class={{@options.iconClass}}></i></p>\n        {{/if}}\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n        }}\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"P5S6NcBx\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropTransitionDuration\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@keyboard\\\",\\\"@backdropClose\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],false,false,[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[false]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"iconClass\\\"]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"text-center\\\"],[12],[10,\\\"i\\\"],[15,0,[30,1,[\\\"iconClass\\\"]]],[12],[13],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/process.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * @category Default Modals\n   */\n  var ProcessModal = _exports.default = /*#__PURE__*/function (_Base) {\n    function ProcessModal(owner, args) {\n      var _this;\n      _classCallCheck(this, ProcessModal);\n      _this = _callSuper(this, ProcessModal, [owner, args]);\n      _this.initProcess();\n      return _this;\n    }\n    _inherits(ProcessModal, _Base);\n    return _createClass(ProcessModal, [{\n      key: \"initProcess\",\n      value: function initProcess() {\n        var _this2 = this;\n        var process = this.args.options.process;\n        if (process) {\n          process().then(function (v) {\n            return _this2.confirm(v);\n          }).catch(function (e) {\n            return _this2.decline(e);\n          });\n        }\n      }\n    }]);\n  }(_base.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ProcessModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/progress\", [\"exports\", \"@ember/component\", \"tracked-built-ins\", \"@ember/object\", \"@ember/array\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\", \"ember-lifeline\", \"@ember/template-factory\"], function (_exports, _component, _trackedBuiltIns, _object, _array, _base, _emberLifeline, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"tracked-built-ins\",0,\"@ember/object\",0,\"@ember/array\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\",0,\"ember-lifeline\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @keyboard={{false}}\n    @backdropClose={{false}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{false}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n          progress=this.progress\n          done=this.done\n          overall=this.promisesCount\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n        {{#if this.promisesCount}}\n          <BsProgress as |p|>\n            <p.bar\n              @value={{this.progress}}\n              @showLabel={{@options.showLabel}}\n              @striped={{@options.striped}}\n              @animate={{@options.animate}}\n              @type={{@options.type}} />\n          </BsProgress>\n        {{/if}}\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n        }}\n      {{else}}\n        {{#if @options.cancelable}}\n          <BsButton\n            @onClick={{this.cancel}}\n            @defaultText={{@options.cancel}}\n            disabled={{this.canceled}} />\n        {{/if}}\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"8ruK9xGd\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropTransitionDuration\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@keyboard\\\",\\\"@backdropClose\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],false,false,[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[false]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\",\\\"progress\\\",\\\"done\\\",\\\"overall\\\"],[[30,1],[30,0,[\\\"progress\\\"]],[30,0,[\\\"done\\\"]],[30,0,[\\\"promisesCount\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"promisesCount\\\"]],[[[1,\\\"        \\\"],[8,[39,6],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[30,4,[\\\"bar\\\"]],null,[[\\\"@value\\\",\\\"@showLabel\\\",\\\"@striped\\\",\\\"@animate\\\",\\\"@type\\\"],[[30,0,[\\\"progress\\\"]],[30,1,[\\\"showLabel\\\"]],[30,1,[\\\"striped\\\"]],[30,1,[\\\"animate\\\"]],[30,1,[\\\"type\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,1,[\\\"cancelable\\\"]],[[[1,\\\"        \\\"],[8,[39,7],[[16,\\\"disabled\\\",[30,0,[\\\"canceled\\\"]]]],[[\\\"@onClick\\\",\\\"@defaultText\\\"],[[30,0,[\\\"cancel\\\"]],[30,1,[\\\"cancel\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\",\\\"p\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"bs-progress\\\",\\\"bs-button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/progress.hbs\",\n    \"isStrictMode\": false\n  });\n  var noResult = Symbol('no-result');\n\n  /**\n   * @category Default Modals\n   */\n  var ProgressModal = _exports.default = (_class = /*#__PURE__*/function (_Base) {\n    function ProgressModal(owner, args) {\n      var _this;\n      _classCallCheck(this, ProgressModal);\n      _this = _callSuper(this, ProgressModal, [owner, args]);\n      /**\n       * Number of fulfilled promises\n       */\n      _initializerDefineProperty(_this, \"done\", _descriptor, _this);\n      /**\n       * Number of promises\n       *\n       * This value is set initially and must be used instead of `promises.length`,\n       * because `promises`-array is changed while execution\n       */\n      _initializerDefineProperty(_this, \"promisesCount\", _descriptor2, _this);\n      _initializerDefineProperty(_this, \"canceled\", _descriptor3, _this);\n      _initializerDefineProperty(_this, \"errors\", _descriptor4, _this);\n      _initializerDefineProperty(_this, \"results\", _descriptor5, _this);\n      _this.initProgress();\n      return _this;\n    }\n\n    /**\n     * @category Action Handlers\n     */\n    _inherits(ProgressModal, _Base);\n    return _createClass(ProgressModal, [{\n      key: \"settled\",\n      get: function get() {\n        return this.args.options.settled ? this.args.options.settled : false;\n      }\n    }, {\n      key: \"promises\",\n      get: function get() {\n        return this.args.options.promises ? this.args.options.promises : (0, _array.A)([]);\n      }\n    }, {\n      key: \"progress\",\n      get: function get() {\n        if (!this.promisesCount) {\n          return 100;\n        }\n        return this.done / this.promisesCount * 100;\n      }\n    }, {\n      key: \"cancel\",\n      value: function cancel() {\n        this.canceled = true;\n      }\n    }, {\n      key: \"initProgress\",\n      value: function initProgress() {\n        this.promisesCount = this.promises.length;\n        var promise = this.promises.shift();\n        if (promise) {\n          void this.next(promise);\n        }\n      }\n    }, {\n      key: \"next\",\n      value: function next(promiseFactory) {\n        var _this2 = this;\n        if (this.canceled) {\n          return this._complete();\n        }\n        return promiseFactory().then(function (result) {\n          _this2._next(result);\n          return result;\n        }).catch(function (error) {\n          if (_this2.settled) {\n            _this2.errors.push(error);\n            _this2._next(noResult);\n          } else {\n            _this2.decline([_this2.results, error]);\n          }\n          return error;\n        });\n      }\n    }, {\n      key: \"_next\",\n      value: function _next(result) {\n        var _this3 = this;\n        (0, _emberLifeline.runTask)(this, function () {\n          if (result !== noResult) {\n            _this3.results.push(result);\n          }\n          _this3.done++;\n        });\n        var promise = this.promises.shift();\n        if (promise) {\n          void this.next(promise);\n        } else {\n          // wait for last \"tick\" animation\n          this._complete();\n        }\n      }\n    }, {\n      key: \"_complete\",\n      value: function _complete() {\n        var _this4 = this;\n        (0, _emberLifeline.runTask)(this, function () {\n          return _this4.confirm(_this4.settled ? [_this4.results, _this4.errors] : _this4.results);\n        }, 500);\n      }\n    }]);\n  }(_base.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"done\", [_trackedBuiltIns.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 0;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"promisesCount\", [_trackedBuiltIns.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 0;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"canceled\", [_trackedBuiltIns.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"errors\", [_trackedBuiltIns.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return new _trackedBuiltIns.TrackedArray([]);\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"results\", [_trackedBuiltIns.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return new _trackedBuiltIns.TrackedArray([]);\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"cancel\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"cancel\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ProgressModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt-confirm\", [\"exports\", \"@ember/component\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\", \"@ember/template-factory\"], function (_exports, _component, _prompt, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropClose={{@options.backdropClose}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @keyboard={{@options.keyboard}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{@options.closeButton}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n          updatePromptValue=this.updatePromptValue\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n        <BsForm\n          @model={{this}}\n          @onSubmit={{this.confirm}}\n        as |form|>\n          <form.element\n            @property=\"promptValue\"\n            @label={{@options.inputLabel}} />\n        </BsForm>\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n          confirmDisabled=this.confirmDisabled\n          confirm=modal.submit\n          decline=modal.close\n        }}\n      {{else}}\n        <p>{{@options.footer}}</p>\n        <BsButton\n          @type={{@options.declineButtonType}}\n          @defaultText={{@options.declineButtonDefaultText}}\n          @fulfilledText={{@options.declineButtonFulfilledText}}\n          @pendingText={{@options.declineButtonPendingText}}\n          @rejectedText={{@options.declineButtonRejectedText}}\n          @active={{@options.declineIsActive}}\n          @iconActive={{@options.declineIconActive}}\n          @iconInactive={{@options.declineIconInactive}}\n          @size={{@options.declineButtonSize}}\n          @onClick={{modal.close}} />\n        <BsButton\n          @type={{@options.confirmButtonType}}\n          @defaultText={{@options.confirmButtonDefaultText}}\n          @fulfilledText={{@options.confirmButtonFulfilledText}}\n          @pendingText={{@options.confirmButtonPendingText}}\n          @rejectedText={{@options.confirmButtonRejectedText}}\n          disabled={{this.confirmDisabled}}\n          @active={{@options.confirmIsActive}}\n          @iconActive={{@options.confirmIconActive}}\n          @iconInactive={{@options.confirmIconInactive}}\n          @size={{@options.confirmButtonSize}}\n          @onClick={{modal.submit}} />\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"xUP/UFLR\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@backdropTransitionDuration\\\",\\\"@keyboard\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropClose\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"keyboard\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[[30,1,[\\\"closeButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\",\\\"updatePromptValue\\\"],[[30,1],[30,0,[\\\"updatePromptValue\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@onSubmit\\\"],[[30,0],[30,0,[\\\"confirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,4,[\\\"element\\\"]],null,[[\\\"@property\\\",\\\"@label\\\"],[\\\"promptValue\\\",[30,1,[\\\"inputLabel\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\",\\\"confirmDisabled\\\",\\\"confirm\\\",\\\"decline\\\"],[[30,1],[30,0,[\\\"confirmDisabled\\\"]],[30,3,[\\\"submit\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"footer\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"declineButtonType\\\"]],[30,1,[\\\"declineButtonDefaultText\\\"]],[30,1,[\\\"declineButtonFulfilledText\\\"]],[30,1,[\\\"declineButtonPendingText\\\"]],[30,1,[\\\"declineButtonRejectedText\\\"]],[30,1,[\\\"declineIsActive\\\"]],[30,1,[\\\"declineIconActive\\\"]],[30,1,[\\\"declineIconInactive\\\"]],[30,1,[\\\"declineButtonSize\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,7],[[16,\\\"disabled\\\",[30,0,[\\\"confirmDisabled\\\"]]]],[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"confirmButtonType\\\"]],[30,1,[\\\"confirmButtonDefaultText\\\"]],[30,1,[\\\"confirmButtonFulfilledText\\\"]],[30,1,[\\\"confirmButtonPendingText\\\"]],[30,1,[\\\"confirmButtonRejectedText\\\"]],[30,1,[\\\"confirmIsActive\\\"]],[30,1,[\\\"confirmIconActive\\\"]],[30,1,[\\\"confirmIconInactive\\\"]],[30,1,[\\\"confirmButtonSize\\\"]],[30,3,[\\\"submit\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\",\\\"form\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"bs-form\\\",\\\"bs-button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt-confirm.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * @category Default Modals\n   */\n  var PromptConfirmModal = _exports.default = /*#__PURE__*/function (_PromptModal) {\n    function PromptConfirmModal() {\n      _classCallCheck(this, PromptConfirmModal);\n      return _callSuper(this, PromptConfirmModal, arguments);\n    }\n    _inherits(PromptConfirmModal, _PromptModal);\n    return _createClass(PromptConfirmModal, [{\n      key: \"confirmDisabled\",\n      get: function get() {\n        return this.promptValue !== this.args.options.promptValue;\n      }\n    }]);\n  }(_prompt.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PromptConfirmModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\", [\"exports\", \"@ember/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/utils\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _utils, _base, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/utils\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/base\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <BsModal\n    @position={{@options.position}}\n    @scrollable={{@options.scrollable}}\n    @size={{@options.size}}\n    @backdropClose={{@options.backdropClose}}\n    @backdropTransitionDuration={{@options.backdropTransitionDuration}}\n    @keyboard={{@options.keyboard}}\n    @renderInPlace={{@options.renderInPlace}}\n    @transitionDuration={{@options.transitionDuration}}\n    @open={{@modalIsOpened}}\n    @onSubmit={{this.confirm}}\n    @onHidden={{this.decline}}\n    class={{@options.modalClass}}\n  as |modal|>\n    <modal.header @closeButton={{@options.closeButton}}>\n      {{#if @options.titleComponent}}\n        {{component\n          (ensure-safe-component @options.titleComponent)\n          options=@options\n        }}\n      {{else}}\n        <BsModal::Header::Title>{{@options.title}}</BsModal::Header::Title>\n      {{/if}}\n    </modal.header>\n    <modal.body>\n      {{#if @options.bodyComponent}}\n        {{component\n          (ensure-safe-component @options.bodyComponent)\n          options=@options\n          updatePromptValue=this.updatePromptValue\n        }}\n      {{else}}\n        <p>{{@options.body}}</p>\n        <BsForm\n          @model={{this}}\n          @onSubmit={{this.confirm}}\n        as |form|>\n          <form.element\n            @property=\"promptValue\"\n            @label={{@options.inputLabel}} />\n        </BsForm>\n      {{/if}}\n    </modal.body>\n    <modal.footer>\n      {{#if @options.footerComponent}}\n        {{component\n          (ensure-safe-component @options.footerComponent)\n          options=@options\n          confirmDisabled=this.confirmDisabled\n          confirm=modal.submit\n          decline=modal.close\n        }}\n      {{else}}\n        <p>{{@options.footer}}</p>\n        <BsButton\n          @type={{@options.declineButtonType}}\n          @defaultText={{@options.declineButtonDefaultText}}\n          @fulfilledText={{@options.declineButtonFulfilledText}}\n          @pendingText={{@options.declineButtonPendingText}}\n          @rejectedText={{@options.declineButtonRejectedText}}\n          @active={{@options.declineIsActive}}\n          @iconActive={{@options.declineIconActive}}\n          @iconInactive={{@options.declineIconInactive}}\n          @size={{@options.declineButtonSize}}\n          @onClick={{modal.close}} />\n        <BsButton\n          @type={{@options.confirmButtonType}}\n          @defaultText={{@options.confirmButtonDefaultText}}\n          @fulfilledText={{@options.confirmButtonFulfilledText}}\n          @pendingText={{@options.confirmButtonPendingText}}\n          @rejectedText={{@options.confirmButtonRejectedText}}\n          disabled={{this.confirmDisabled}}\n          @active={{@options.confirmIsActive}}\n          @iconActive={{@options.confirmIconActive}}\n          @iconInactive={{@options.confirmIconInactive}}\n          @size={{@options.confirmButtonSize}}\n          @onClick={{modal.submit}} />\n      {{/if}}\n    </modal.footer>\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"llhikSCy\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1,[\\\"modalClass\\\"]]]],[[\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@backdropTransitionDuration\\\",\\\"@keyboard\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@open\\\",\\\"@onSubmit\\\",\\\"@onHidden\\\"],[[30,1,[\\\"position\\\"]],[30,1,[\\\"scrollable\\\"]],[30,1,[\\\"size\\\"]],[30,1,[\\\"backdropClose\\\"]],[30,1,[\\\"backdropTransitionDuration\\\"]],[30,1,[\\\"keyboard\\\"]],[30,1,[\\\"renderInPlace\\\"]],[30,1,[\\\"transitionDuration\\\"]],[30,2],[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"header\\\"]],null,[[\\\"@closeButton\\\"],[[30,1,[\\\"closeButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"titleComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"titleComponent\\\"]]],null],null,[[\\\"options\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"title\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"bodyComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"bodyComponent\\\"]]],null],null,[[\\\"options\\\",\\\"updatePromptValue\\\"],[[30,1],[30,0,[\\\"updatePromptValue\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"body\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@onSubmit\\\"],[[30,0],[30,0,[\\\"confirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,4,[\\\"element\\\"]],null,[[\\\"@property\\\",\\\"@label\\\"],[\\\"promptValue\\\",[30,1,[\\\"inputLabel\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,3,[\\\"footer\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"footerComponent\\\"]],[[[1,\\\"      \\\"],[46,[28,[37,3],[[30,1,[\\\"footerComponent\\\"]]],null],null,[[\\\"options\\\",\\\"confirmDisabled\\\",\\\"confirm\\\",\\\"decline\\\"],[[30,1],[30,0,[\\\"confirmDisabled\\\"]],[30,3,[\\\"submit\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,[30,1,[\\\"footer\\\"]]],[13],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"declineButtonType\\\"]],[30,1,[\\\"declineButtonDefaultText\\\"]],[30,1,[\\\"declineButtonFulfilledText\\\"]],[30,1,[\\\"declineButtonPendingText\\\"]],[30,1,[\\\"declineButtonRejectedText\\\"]],[30,1,[\\\"declineIsActive\\\"]],[30,1,[\\\"declineIconActive\\\"]],[30,1,[\\\"declineIconInactive\\\"]],[30,1,[\\\"declineButtonSize\\\"]],[30,3,[\\\"close\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,7],[[16,\\\"disabled\\\",[30,0,[\\\"confirmDisabled\\\"]]]],[[\\\"@type\\\",\\\"@defaultText\\\",\\\"@fulfilledText\\\",\\\"@pendingText\\\",\\\"@rejectedText\\\",\\\"@active\\\",\\\"@iconActive\\\",\\\"@iconInactive\\\",\\\"@size\\\",\\\"@onClick\\\"],[[30,1,[\\\"confirmButtonType\\\"]],[30,1,[\\\"confirmButtonDefaultText\\\"]],[30,1,[\\\"confirmButtonFulfilledText\\\"]],[30,1,[\\\"confirmButtonPendingText\\\"]],[30,1,[\\\"confirmButtonRejectedText\\\"]],[30,1,[\\\"confirmIsActive\\\"]],[30,1,[\\\"confirmIconActive\\\"]],[30,1,[\\\"confirmIconInactive\\\"]],[30,1,[\\\"confirmButtonSize\\\"]],[30,3,[\\\"submit\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[\\\"@options\\\",\\\"@modalIsOpened\\\",\\\"modal\\\",\\\"form\\\"],false,[\\\"bs-modal\\\",\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-modal/header/title\\\",\\\"p\\\",\\\"bs-form\\\",\\\"bs-button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * @category Default Modals\n   */\n  var PromptModal = _exports.default = (_class = /*#__PURE__*/function (_BaseModal) {\n    function PromptModal() {\n      var _this;\n      _classCallCheck(this, PromptModal);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, PromptModal, [].concat(args));\n      _initializerDefineProperty(_this, \"promptValue\", _descriptor, _this);\n      _defineProperty(_this, \"inputType\", 'text');\n      return _this;\n    }\n    _inherits(PromptModal, _BaseModal);\n    return _createClass(PromptModal, [{\n      key: \"confirmDisabled\",\n      get: function get() {\n        return this.args.options.disallowEmpty ? (0, _utils.isEmpty)(this.promptValue) : false;\n      }\n\n      /**\n       * @category Action Handlers\n       */\n    }, {\n      key: \"confirm\",\n      value: function confirm() {\n        _superPropGet(PromptModal, \"confirm\", this, 3)([this.promptValue]);\n      }\n\n      /**\n       * @category Action Handlers\n       */\n    }, {\n      key: \"updatePromptValue\",\n      value: function updatePromptValue(val) {\n        this.promptValue = val;\n      }\n    }]);\n  }(_base.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"promptValue\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return '';\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"confirm\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"confirm\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updatePromptValue\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updatePromptValue\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PromptModal);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/components/modals-container\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.modalsManager.modalIsOpened}}\n    {{component\n      (ensure-safe-component this.modalsManager.componentToRender)\n      modalIsOpened=this.modalsManager.modalIsOpened\n      options=this.modalsManager.options\n      onConfirm=this.confirm\n      onDecline=this.decline\n    }}\n  {{/if}}\n  {{yield}}\n  */\n  {\n    \"id\": \"xJlJXdVl\",\n    \"block\": \"[[[41,[30,0,[\\\"modalsManager\\\",\\\"modalIsOpened\\\"]],[[[1,\\\"  \\\"],[46,[28,[37,2],[[30,0,[\\\"modalsManager\\\",\\\"componentToRender\\\"]]],null],null,[[\\\"modalIsOpened\\\",\\\"options\\\",\\\"onConfirm\\\",\\\"onDecline\\\"],[[30,0,[\\\"modalsManager\\\",\\\"modalIsOpened\\\"]],[30,0,[\\\"modalsManager\\\",\\\"options\\\"]],[30,0,[\\\"confirm\\\"]],[30,0,[\\\"decline\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[18,1,null]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap-modals-manager/components/modals-container.hbs\",\n    \"isStrictMode\": false\n  });\n  var ModalsContainer = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function ModalsContainer() {\n      var _this;\n      _classCallCheck(this, ModalsContainer);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, ModalsContainer, [].concat(args));\n      _initializerDefineProperty(_this, \"modalsManager\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(ModalsContainer, _Component);\n    return _createClass(ModalsContainer, [{\n      key: \"confirm\",\n      value:\n      /**\n       * @category Action Handlers\n       */\n      function confirm(v) {\n        this.modalsManager.onConfirmClick(v);\n      }\n\n      /**\n       * @category Action Handlers\n       */\n    }, {\n      key: \"decline\",\n      value: function decline(v) {\n        this.modalsManager.onDeclineClick(v);\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"modalsManager\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"confirm\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"confirm\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"decline\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"decline\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ModalsContainer);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap-modals-manager/services/modals-manager\", [\"exports\", \"@glimmer/tracking\", \"@ember/debug\", \"@ember/service\", \"@ember/array\", \"rsvp\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/alert\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/confirm\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt-confirm\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/check-confirm\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/process\", \"ember-bootstrap-modals-manager/components/ebmm-modals-container/progress\"], function (_exports, _tracking, _debug, _service, _array, _rsvp, _alert, _confirm, _prompt, _promptConfirm, _checkConfirm, _process, _progress) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/tracking\",0,\"@ember/debug\",0,\"@ember/service\",0,\"@ember/array\",0,\"rsvp\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/alert\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/confirm\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/prompt-confirm\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/check-confirm\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/process\",0,\"ember-bootstrap-modals-manager/components/ebmm-modals-container/progress\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  // eslint-disable-line @typescript-eslint/no-explicit-any\n  // eslint-disable-line @typescript-eslint/no-explicit-any\n  // eslint-disable-line @typescript-eslint/no-explicit-any\n  /**\n   * @category Services\n   */\n  var ModalsManager = _exports.default = (_class = /*#__PURE__*/function (_Service) {\n    function ModalsManager() {\n      var _this;\n      _classCallCheck(this, ModalsManager);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, ModalsManager, [].concat(args));\n      _initializerDefineProperty(_this, \"modalIsOpened\", _descriptor, _this);\n      _initializerDefineProperty(_this, \"modalDefer\", _descriptor2, _this);\n      _initializerDefineProperty(_this, \"defaultOptions\", _descriptor3, _this);\n      _initializerDefineProperty(_this, \"options\", _descriptor4, _this);\n      _initializerDefineProperty(_this, \"componentToRender\", _descriptor5, _this);\n      return _this;\n    }\n    _inherits(ModalsManager, _Service);\n    return _createClass(ModalsManager, [{\n      key: \"show\",\n      value:\n      /**\n       * @throws {Error} if some modal is already opened\n       * @param componentToRender Component's child-class represents needed modal\n       * @param options options passed to the rendered modal\n       */\n      function show(componentToRender, options) {\n        (true && !(!this.modalIsOpened) && (0, _debug.assert)('Only one modal may be opened in the same time!', !this.modalIsOpened));\n        var component = componentToRender;\n        var opts = Object.assign({}, this.defaultOptions, options);\n        this.componentToRender = component;\n        this.modalIsOpened = true;\n        this.options = opts;\n        var modalDefer = (0, _rsvp.defer)();\n        this.modalDefer = modalDefer;\n        return modalDefer.promise;\n      }\n\n      /**\n       * @category Default Modals\n       */\n    }, {\n      key: \"alert\",\n      value: function alert(options) {\n        return this.show(_alert.default, options);\n      }\n\n      /**\n       * @category Default Modals\n       */\n    }, {\n      key: \"confirm\",\n      value: function confirm(options) {\n        return this.show(_confirm.default, options);\n      }\n\n      /**\n       * @category Default Modals\n       */\n    }, {\n      key: \"prompt\",\n      value: function prompt(options) {\n        return this.show(_prompt.default, options);\n      }\n\n      /**\n       * @category Default Modals\n       * @throws {Error} if `options.promptValue` is not provided\n       */\n    }, {\n      key: \"promptConfirm\",\n      value: function promptConfirm(options) {\n        (true && !(!!options.promptValue) && (0, _debug.assert)('\"options.promptValue\" must be defined and not empty', !!options.promptValue));\n        return this.show(_promptConfirm.default, options);\n      }\n\n      /**\n       * @category Default Modals\n       */\n    }, {\n      key: \"checkConfirm\",\n      value: function checkConfirm(options) {\n        return this.show(_checkConfirm.default, options);\n      }\n\n      /**\n       * @category Default Modals\n       * @throws {Error} if `options.promises` is not an array\n       */\n    }, {\n      key: \"progress\",\n      value: function progress(options) {\n        (true && !(options && (0, _array.isArray)(options.promises)) && (0, _debug.assert)('`options.promises` must be an array', options && (0, _array.isArray)(options.promises)));\n        return this.show(_progress.default, options);\n      }\n\n      /**\n       * @category Default Modals\n       * @throws {Error} if `options.process` is not defined\n       */\n    }, {\n      key: \"process\",\n      value: function process(options) {\n        (true && !(!!(options && options !== null && options !== void 0 && options.process)) && (0, _debug.assert)('`options.process` must be defined', !!(options && options !== null && options !== void 0 && options.process)));\n        return this.show(_process.default, options);\n      }\n\n      /**\n       * @category Action Handlers\n       */\n    }, {\n      key: \"onConfirmClick\",\n      value: function onConfirmClick(v) {\n        this.modalIsOpened = false;\n        this.modalDefer && this.modalDefer.resolve(v);\n        this.clearOptions();\n      }\n\n      /**\n       * @category Action Handlers\n       */\n    }, {\n      key: \"onDeclineClick\",\n      value: function onDeclineClick(v) {\n        this.modalIsOpened = false;\n        // eslint-disable-next-line ember/no-array-prototype-extensions\n        this.modalDefer && this.modalDefer.reject(v);\n        this.clearOptions();\n      }\n    }, {\n      key: \"clearOptions\",\n      value: function clearOptions() {\n        this.options = {};\n      }\n    }]);\n  }(_service.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"modalIsOpened\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"modalDefer\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"defaultOptions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return {\n        title: ' ',\n        body: ' ',\n        footer: ' ',\n        confirmButtonDefaultText: 'Yes',\n        confirmButtonFulfilledText: 'Yes',\n        confirmButtonPendingText: 'Yes',\n        confirmButtonRejectedText: 'Yes',\n        declineButtonDefaultText: 'No',\n        declineButtonFulfilledText: 'No',\n        declineButtonPendingText: 'No',\n        declineButtonRejectedText: 'No',\n        cancel: 'Cancel',\n        backdrop: true,\n        backdropClose: true,\n        backdropTransitionDuration: 150,\n        fade: true,\n        keyboard: true,\n        position: 'top',\n        renderInPlace: false,\n        scrollable: false,\n        size: null,\n        transitionDuration: 300,\n        confirmIsActive: false,\n        confirmButtonSize: 'md',\n        confirmButtonType: 'primary',\n        confirmIconActive: '',\n        confirmIconInactive: '',\n        declineIsActive: false,\n        declineButtonSize: 'md',\n        declineButtonType: 'secondary',\n        declineIconActive: '',\n        declineIconInactive: '',\n        modalClass: ''\n      };\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"options\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return {};\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"componentToRender\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _class);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-accordion\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    class=\"accordion\"\n    ...attributes\n  >\n    {{yield\n      (hash\n        item=(component (ensure-safe-component (bs-default @itemComponent (component \"bs-accordion/item\"))) selected=this.isSelected onClick=this.doChange)\n        change=this.doChange\n      )\n    }}\n  </div>\n  \n  */\n  {\n    \"id\": \"itRmQGB8\",\n    \"block\": \"[[[11,0],[24,0,\\\"accordion\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,3,[[28,[37,2],null,[[\\\"item\\\",\\\"change\\\"],[[50,[28,[37,4],[[28,[37,5],[[30,2],[50,\\\"bs-accordion/item\\\",0,null,null]],null]],null],0,null,[[\\\"selected\\\",\\\"onClick\\\"],[[30,0,[\\\"isSelected\\\"]],[30,0,[\\\"doChange\\\"]]]]],[30,0,[\\\"doChange\\\"]]]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@itemComponent\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-accordion.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Bootstrap-style [accordion group](http://getbootstrap.com/javascript/#collapse-example-accordion),\n    with collapsible/expandable items.\n  \n    ### Usage\n  \n    Use as a block level component with any number of yielded [Components.AccordionItem](Components.AccordionItem.html)\n    components as children:\n  \n    ```handlebars\n    <BsAccordion as |acc|>\n      <acc.item @value={{1}} @title=\"First item\">\n        <p>Lorem ipsum...</p>\n        <button {{on \"click\" (fn acc.change 2)}}>\n          Next\n        </button>\n      </acc.item>\n      <acc.item @value={{2}} @title=\"Second item\">\n        <p>Lorem ipsum...</p>\n      </acc.item>\n      <acc.item @value={{3}} @title=\"Third item\">\n        <p>Lorem ipsum...</p>\n      </acc.item>\n    </BsAccordion>\n    ```\n  \n    In the example above the first accordion item utilizes the yielded `change` action to add some custom behaviour.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Accordion\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var Accordion = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function Accordion() {\n      var _this;\n      _classCallCheck(this, Accordion);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Accordion, [].concat(args));\n      /**\n       * The value of the currently selected accordion item. Set this to change selection programmatically.\n       *\n       * When the selection is changed by user interaction this property will not update by using two-way bindings in order\n       * to follow DDAU best practices. If you want to react to such changes, subscribe to the `onChange` action\n       *\n       * @property selected\n       * @public\n       */\n      /**\n       * @property itemComponent\n       * @type {String}\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_isSelected\", _descriptor, _this);\n      _defineProperty(_this, \"_isSelectedNonTracked\", _this.args.selected);\n      _defineProperty(_this, \"_prevSelected\", _this.args.selected);\n      return _this;\n    }\n    _inherits(Accordion, _Component);\n    return _createClass(Accordion, [{\n      key: \"isSelected\",\n      get:\n      /**\n       * The value of the currently selected accordion item\n       *\n       * @property isSelected\n       * @private\n       */\n      function get() {\n        // ideally we would have used @localCopy here, but unfortunately this fails for Ember 3.16 in this special case\n        // see https://github.com/pzuraq/tracked-toolbox/issues/17\n        // So don't look at this, it is going to get ugly...\n        this._isSelected; // just consume this to invalidate the getter when this changes\n\n        if (this.args.selected && this._prevSelected !== this.args.selected) {\n          // eslint-disable-next-line ember/no-side-effects\n          this._isSelectedNonTracked = this._prevSelected = this.args.selected;\n        }\n        return this._isSelectedNonTracked;\n      },\n      set: function set(value) {\n        this._isSelectedNonTracked = value;\n        this._isSelected = value;\n      }\n\n      /**\n       * Action when the selected accordion item is about to be changed.\n       *\n       * You can return false to prevent changing the active item, and do that in your action by\n       * setting the `selected` accordingly.\n       *\n       * @event onChange\n       * @param newValue\n       * @param oldValue\n       * @public\n       */\n    }, {\n      key: \"doChange\",\n      value: function doChange(newValue) {\n        var _this$args$onChange, _this$args;\n        var oldValue = this.isSelected;\n        if (oldValue === newValue) {\n          newValue = null;\n        }\n        if (((_this$args$onChange = (_this$args = this.args).onChange) === null || _this$args$onChange === void 0 ? void 0 : _this$args$onChange.call(_this$args, newValue, oldValue)) !== false) {\n          this.isSelected = newValue;\n        }\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_isSelected\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.args.selected;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"doChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"doChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Accordion);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-accordion/item\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#let\n    (component (ensure-safe-component (bs-default @titleComponent (component \"bs-accordion/item/title\"))) collapsed=this.collapsed disabled=@disabled onClick=(fn (bs-default @onClick (bs-noop)) this.value))\n    (component (ensure-safe-component (bs-default @bodyComponent (component \"bs-accordion/item/body\"))) collapsed=this.collapsed)\n    (unique-id)\n    (unique-id)\n  as |Title Body titleId collapsableId|\n  }}\n    <div\n      class=\"{{if @disabled \"disabled\"}} {{this.typeClass}} {{if (macroCondition (macroGetOwnConfig \"isBS4\")) \"card\"}} {{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"accordion-item\"}}\"\n      ...attributes\n    >\n      {{#if (has-block-params)}}\n        {{yield\n          (hash\n            title=Title\n            body=Body\n          )\n        }}\n      {{else}}\n        <Title id={{titleId}} @controls={{collapsableId}}>\n          {{@title}}\n        </Title>\n        <Body @collapsableId={{collapsableId}} @describedby={{titleId}}>\n          {{yield}}\n        </Body>\n      {{/if}}\n    </div>\n  {{/let}}\n  */\n  {\n    \"id\": \"rGQpDEss\",\n    \"block\": \"[[[44,[[50,[28,[37,2],[[28,[37,3],[[30,1],[50,\\\"bs-accordion/item/title\\\",0,null,null]],null]],null],0,null,[[\\\"collapsed\\\",\\\"disabled\\\",\\\"onClick\\\"],[[30,0,[\\\"collapsed\\\"]],[30,2],[28,[37,4],[[28,[37,3],[[30,3],[28,[37,5],null,null]],null],[30,0,[\\\"value\\\"]]],null]]]],[50,[28,[37,2],[[28,[37,3],[[30,4],[50,\\\"bs-accordion/item/body\\\",0,null,null]],null]],null],0,null,[[\\\"collapsed\\\"],[[30,0,[\\\"collapsed\\\"]]]]],[28,[37,6],null,null],[28,[37,6],null,null]],[[[1,\\\"  \\\"],[11,0],[16,0,[29,[[52,[30,2],\\\"disabled\\\"],\\\" \\\",[30,0,[\\\"typeClass\\\"]],\\\" \\\",\\\"card\\\",\\\" \\\",[27]]]],[17,9],[12],[1,\\\"\\\\n\\\"],[41,[49,[30,11]],[[[1,\\\"      \\\"],[18,11,[[28,[37,11],null,[[\\\"title\\\",\\\"body\\\"],[[30,5],[30,6]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[30,5],[[16,1,[30,7]]],[[\\\"@controls\\\"],[[30,8]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[1,[30,10]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[30,6],null,[[\\\"@collapsableId\\\",\\\"@describedby\\\"],[[30,8],[30,7]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,11,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[5,6,7,8]]]],[\\\"@titleComponent\\\",\\\"@disabled\\\",\\\"@onClick\\\",\\\"@bodyComponent\\\",\\\"Title\\\",\\\"Body\\\",\\\"titleId\\\",\\\"collapsableId\\\",\\\"&attrs\\\",\\\"@title\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"fn\\\",\\\"bs-noop\\\",\\\"unique-id\\\",\\\"div\\\",\\\"if\\\",\\\"has-block-params\\\",\\\"yield\\\",\\\"hash\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-accordion/item.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   A collapsible/expandable item within an accordion\n  \n   See [Components.Accordion](Components.Accordion.html) for examples.\n  \n   @class AccordionItem\n   @namespace Components\n   @extends Ember.Component\n   @public\n   */\n  var AccordionItem = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function AccordionItem() {\n      var _this;\n      _classCallCheck(this, AccordionItem);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, AccordionItem, [].concat(args));\n      /**\n       * The title of the accordion item, displayed as a .panel-title element\n       *\n       * @property title\n       * @type string\n       * @public\n       */\n      /**\n       * The value of the accordion item, which is used as the value of the `selected` property of the parent [Components.Accordion](Components.Accordion.html) component\n       *\n       * @property value\n       * @public\n       */\n      _initializerDefineProperty(_this, \"value\", _descriptor, _this);\n      /**\n       * @property disabled\n       * @type boolean\n       * @public\n       */\n      /**\n       * Property for type styling\n       *\n       * For the available types see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/navbar/#color-schemes)\n       *\n       * @property type\n       * @type String\n       * @default 'default'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"type\", _descriptor2, _this);\n      return _this;\n    }\n    _inherits(AccordionItem, _Component);\n    return _createClass(AccordionItem, [{\n      key: \"collapsed\",\n      get:\n      /**\n       * @property selected\n       * @private\n       */\n\n      /**\n       * @property titleComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property bodyComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property collapsed\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      function get() {\n        return this.value !== this.args.selected;\n      }\n    }, {\n      key: \"typeClass\",\n      get: function get() {\n        return \"bg-\".concat(this.type);\n      }\n\n      /**\n       * Reference to the parent `Components.Accordion` class.\n       *\n       * @property accordion\n       * @private\n       */\n\n      /**\n       * @event onClick\n       * @public\n       */\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"value\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return (0, _internals.guidFor)(this);\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"type\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'default';\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AccordionItem);\n});","define(\"ember-bootstrap/components/bs-accordion/item/body\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <BsCollapse @collapsed={{@collapsed}} class=\"accordion-collapse\" id={{@collapsableId}} aria-describedby={{@describedby}}>\n    <div class=\"{{if (macroCondition (macroGetOwnConfig \"isBS4\")) \"card-body\"}} {{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"accordion-body\"}}\">\n      {{yield}}\n    </div>\n  </BsCollapse>\n  */\n  {\n    \"id\": \"RRfk7WXa\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"accordion-collapse\\\"],[16,1,[30,1]],[16,\\\"aria-describedby\\\",[30,2]]],[[\\\"@collapsed\\\"],[[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[15,0,[29,[\\\"card-body\\\",\\\" \\\",[27]]]],[12],[1,\\\"\\\\n    \\\"],[18,4,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@collapsableId\\\",\\\"@describedby\\\",\\\"@collapsed\\\",\\\"&default\\\"],false,[\\\"bs-collapse\\\",\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-accordion/item/body.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n   Component for an accordion item body.\n  \n   See [Components.Accordion](Components.Accordion.html) for examples.\n  \n   @class AccordionItemBody\n   @namespace Components\n   @extends Ember.Component\n   @public\n   */\n\n  /**\n   * @property collapsed\n   * @type boolean\n   * @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-accordion/item/title\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{!-- template-lint-disable no-nested-interactive --}}\n  {{!-- @todo fix this, see https://github.com/kaliber5/ember-bootstrap/issues/999 --}}\n  {{#if (macroCondition (macroGetOwnConfig \"isBS5\"))}}\n    <h2\n      class=\"accordion-header\"\n      ...attributes\n    >\n      <button\n        class=\"accordion-button {{if @disabled \"disabled\"}} {{if @collapsed \"collapsed\"}}\"\n        type=\"button\"\n        disabled={{@disabled}}\n        aria-controls={{@controls}}\n        aria-expanded={{if @collapsed \"false\" \"true\"}}\n        {{on \"click\" this.handleClick}}\n      >\n        {{yield}}\n      </button>\n    </h2>\n  {{else}}\n    <div\n      class=\"card-header\"\n    >\n      <h2\n        class=\"mb-0\"\n        ...attributes\n      >\n        <button\n          class=\"btn btn-link {{if @disabled \"disabled\"}} {{if @collapsed \"collapsed\" \"expanded\"}}\"\n          type=\"button\"\n          disabled={{@disabled}}\n          aria-controls={{@controls}}\n          aria-expanded={{if @collapsed \"false\" \"true\"}}\n          {{on \"click\" this.handleClick}}\n        >\n          {{yield}}\n        </button>\n      </h2>\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"L1xQW3JS\",\n    \"block\": \"[[[1,\\\"  \\\"],[10,0],[14,0,\\\"card-header\\\"],[12],[1,\\\"\\\\n    \\\"],[11,\\\"h2\\\"],[24,0,\\\"mb-0\\\"],[17,1],[12],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"btn btn-link \\\",[52,[30,2],\\\"disabled\\\"],\\\" \\\",[52,[30,3],\\\"collapsed\\\",\\\"expanded\\\"]]]],[16,\\\"disabled\\\",[30,2]],[16,\\\"aria-controls\\\",[30,4]],[16,\\\"aria-expanded\\\",[52,[30,3],\\\"false\\\",\\\"true\\\"]],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[18,5,null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@disabled\\\",\\\"@collapsed\\\",\\\"@controls\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"button\\\",\\\"if\\\",\\\"on\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-accordion/item/title.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Component for an accordion item title.\n  \n   See [Components.Accordion](Components.Accordion.html) for examples.\n  \n   @class AccordionItemTitle\n   @namespace Components\n   @extends Glimmer.Component\n   @public\n   */\n  var AccordionItemTitle = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function AccordionItemTitle() {\n      _classCallCheck(this, AccordionItemTitle);\n      return _callSuper(this, AccordionItemTitle, arguments);\n    }\n    _inherits(AccordionItemTitle, _Component);\n    return _createClass(AccordionItemTitle, [{\n      key: \"handleClick\",\n      value:\n      /**\n       * @property collapsed\n       * @type boolean\n       * @public\n       */\n\n      /**\n       * @property disabled\n       * @type boolean\n       * @private\n       */\n\n      /**\n       * @event onClick\n       * @public\n       */\n\n      function handleClick(e) {\n        e.preventDefault();\n        if (!this.args.disabled) {\n          var _this$args$onClick, _this$args;\n          (_this$args$onClick = (_this$args = this.args).onClick) === null || _this$args$onClick === void 0 || _this$args$onClick.call(_this$args);\n        }\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AccordionItemTitle);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-alert\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/runloop\", \"ember-bootstrap/utils/decorators/uses-transition\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _tracking, _runloop, _usesTransition, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/runloop\",0,\"ember-bootstrap/utils/decorators/uses-transition\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    class=\"{{unless this.hidden \"alert\"}} {{if this.fade \"fade\"}} {{if this.dismissible \"alert-dismissible\"}} {{bs-type-class \"alert\" @type}} {{if this.showAlert \"show\"}}\"\n    ...attributes\n    {{did-update this.showOrHide this._visible}}\n    {{did-update this.updateVisibility @visible}}\n  >\n    {{#unless this.hidden}}\n      {{#if this.dismissible}}\n        <button type=\"button\" class={{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"btn-close\" \"close\"}} aria-label=\"Close\" {{on \"click\" this.dismiss}}>\n          {{#if (macroCondition (macroGetOwnConfig \"isBS4\"))}}<span aria-hidden=\"true\">&times;</span>{{/if}}\n        </button>\n      {{/if}}\n  \n      {{#if (has-block \"header\")}}\n        {{#let (element (bs-default @headerTag \"h4\")) as |Tag|}}\n          <Tag class=\"alert-heading\">\n            {{yield to=\"header\"}}\n          </Tag>\n        {{/let}}\n      {{/if}}\n  \n      {{#if (has-block \"body\")}}\n        {{yield to=\"body\"}}\n      {{else}}\n        {{yield}}\n      {{/if}}\n    {{/unless}}\n  </div>\n  */\n  {\n    \"id\": \"04pPKj5X\",\n    \"block\": \"[[[11,0],[16,0,[29,[[52,[51,[30,0,[\\\"hidden\\\"]]],\\\"alert\\\"],\\\" \\\",[52,[30,0,[\\\"fade\\\"]],\\\"fade\\\"],\\\" \\\",[52,[30,0,[\\\"dismissible\\\"]],\\\"alert-dismissible\\\"],\\\" \\\",[28,[37,3],[\\\"alert\\\",[30,1]],null],\\\" \\\",[52,[30,0,[\\\"showAlert\\\"]],\\\"show\\\"]]]],[17,2],[4,[38,4],[[30,0,[\\\"showOrHide\\\"]],[30,0,[\\\"_visible\\\"]]],null],[4,[38,4],[[30,0,[\\\"updateVisibility\\\"]],[30,3]],null],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"hidden\\\"]]],[[[41,[30,0,[\\\"dismissible\\\"]],[[[1,\\\"      \\\"],[11,\\\"button\\\"],[24,0,\\\"close\\\"],[24,\\\"aria-label\\\",\\\"Close\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"dismiss\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"×\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[44,[[28,[37,10],[[28,[37,11],[[30,4],\\\"h4\\\"],null]],null]],[[[1,\\\"        \\\"],[8,[30,5],[[24,0,\\\"alert-heading\\\"]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,6,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[5]]]],[]],null],[1,\\\"\\\\n\\\"],[41,[48,[30,7]],[[[1,\\\"      \\\"],[18,7,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[18,8,null],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[13]],[\\\"@type\\\",\\\"&attrs\\\",\\\"@visible\\\",\\\"@headerTag\\\",\\\"Tag\\\",\\\"&header\\\",\\\"&body\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"unless\\\",\\\"if\\\",\\\"bs-type-class\\\",\\\"did-update\\\",\\\"button\\\",\\\"on\\\",\\\"span\\\",\\\"has-block\\\",\\\"let\\\",\\\"element\\\",\\\"bs-default\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-alert.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Implements [Bootstrap alerts](http://getbootstrap.com/components/#alerts)\n  \n    ### Usage\n  \n    By default, it is a user dismissible alert with a fade out animation, both of which can be disabled. Be sure to set the\n    `type` property for proper styling.\n  \n    ```hbs\n    <BsAlert @type=\"success\">\n      <strong>Well done!</strong> You successfully read this important alert message.\n    </BsAlert>\n    ```\n  \n    Optionally you can render a header for the alert using named blocks syntax:\n  \n    ```hbs\n    <BsAlert>\n      <:header>\n        Well done!\n      </:header>\n      <:body>\n        You successfully read this important alert message.\n      </:body>\n    </BsAlert>\n    ```\n  \n    The header is rendered using a `<h4>` element by default. You can customize\n    that one by setting `@headerTag` argument of `<BsAlert>`.\n  \n    Using named block syntax as shown above may require installing\n    [ember-named-blocks-polyfill](https://github.com/ember-polyfills/ember-named-blocks-polyfill)\n    in your project depending on the Ember version used.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Alert\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var Alert = _exports.default = (_dec = (0, _usesTransition.default)('fade'), _class = /*#__PURE__*/function (_Component) {\n    function Alert() {\n      var _this;\n      _classCallCheck(this, Alert);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Alert, [].concat(args));\n      /**\n       * A dismissible alert will have a close button in the upper right corner, that the user can click to dismiss\n       * the alert.\n       *\n       * @property dismissible\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"dismissible\", _descriptor, _this);\n      /**\n       * If true the alert is completely hidden. Will be set when the fade animation has finished.\n       *\n       * @property hidden\n       * @type boolean\n       * @default false\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"hidden\", _descriptor2, _this);\n      /**\n       * @property _visible\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_visible\", _descriptor3, _this);\n      /**\n       * Set to false to disable the fade out animation when hiding the alert.\n       *\n       * @property fade\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"fade\", _descriptor4, _this);\n      /**\n       * The duration of the fade out animation\n       *\n       * @property fadeDuration\n       * @type number\n       * @default 150\n       * @public\n       */\n      _initializerDefineProperty(_this, \"fadeDuration\", _descriptor5, _this);\n      /**\n       * Property for type styling\n       *\n       * For the available types see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/alerts/)\n       *\n       * @property type\n       * @type String\n       * @public\n       */\n      /**\n       * Use CSS transitions?\n       *\n       * @property usesTransition\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"usesTransition\", _descriptor6, _this);\n      return _this;\n    }\n    _inherits(Alert, _Component);\n    return _createClass(Alert, [{\n      key: \"visible\",\n      get:\n      /**\n       * This property controls if the alert should be visible. If false it might still be in the DOM until the fade animation\n       * has completed.\n       *\n       * When the alert is dismissed by user interaction this property will not update by using two-way bindings in order\n       * to follow DDAU best practices. If you want to react to such changes, subscribe to the `onDismiss` action\n       *\n       * @property visible\n       * @type boolean\n       * @default true\n       * @public\n       */\n      function get() {\n        var _this$_visible;\n        return (_this$_visible = this._visible) !== null && _this$_visible !== void 0 ? _this$_visible : true;\n      }\n    }, {\n      key: \"showAlert\",\n      get: function get() {\n        return this.visible && this.args.fade !== false;\n      }\n    }, {\n      key: \"dismiss\",\n      value:\n      /**\n       * The action to be sent after the alert has been dismissed (including the CSS transition).\n       *\n       * @event onDismissed\n       * @public\n       */\n\n      /**\n       * The action is called when the close button is clicked.\n       *\n       * You can return false to prevent closing the alert automatically, and do that in your action by\n       * setting `visible` to false.\n       *\n       * @event onDismiss\n       * @public\n       */\n\n      function dismiss() {\n        var _this$args$onDismiss, _this$args;\n        if (((_this$args$onDismiss = (_this$args = this.args).onDismiss) === null || _this$args$onDismiss === void 0 ? void 0 : _this$args$onDismiss.call(_this$args)) !== false) {\n          this._visible = false;\n        }\n      }\n\n      /**\n       * Call to make the alert visible again after it has been hidden\n       *\n       * @method show\n       * @private\n       */\n    }, {\n      key: \"show\",\n      value: function show() {\n        this.hidden = false;\n      }\n\n      /**\n       * Call to hide the alert. If the `fade` property is true, this will fade out the alert before being finally\n       * dismissed.\n       *\n       * @method hide\n       * @private\n       */\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        if (this.hidden) {\n          return;\n        }\n        if (this.usesTransition) {\n          (0, _runloop.later)(this, function () {\n            if (!this.isDestroyed) {\n              var _this$args$onDismisse, _this$args2;\n              this.hidden = true;\n              (_this$args$onDismisse = (_this$args2 = this.args).onDismissed) === null || _this$args$onDismisse === void 0 || _this$args$onDismisse.call(_this$args2);\n            }\n          }, this.fadeDuration);\n        } else {\n          var _this$args$onDismisse2, _this$args3;\n          this.hidden = true;\n          (_this$args$onDismisse2 = (_this$args3 = this.args).onDismissed) === null || _this$args$onDismisse2 === void 0 || _this$args$onDismisse2.call(_this$args3);\n        }\n      }\n    }, {\n      key: \"showOrHide\",\n      value: function showOrHide() {\n        if (this.visible) {\n          this.show();\n        } else {\n          this.hide();\n        }\n      }\n    }, {\n      key: \"updateVisibility\",\n      value: function updateVisibility() {\n        this._visible = this.args.visible;\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"dismissible\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"hidden\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return !this.visible;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"_visible\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.args.visible;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"fade\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"fadeDuration\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 150;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"usesTransition\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"dismiss\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"dismiss\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"showOrHide\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"showOrHide\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateVisibility\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateVisibility\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Alert);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-button-group\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/array\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _array, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/array\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"{{if @vertical \"btn-group-vertical\" \"btn-group\"}} {{bs-size-class \"btn-group\" @size}}\" role=\"group\" ...attributes>\n    {{yield\n      (hash\n        button=(component (ensure-safe-component (bs-default @buttonComponent (component \"bs-button-group/button\"))) buttonGroupType=@type groupValue=@value onClick=this.buttonPressed)\n      )\n    }}\n  </div>\n  */\n  {\n    \"id\": \"Is5vefqV\",\n    \"block\": \"[[[11,0],[16,0,[29,[[52,[30,1],\\\"btn-group-vertical\\\",\\\"btn-group\\\"],\\\" \\\",[28,[37,2],[\\\"btn-group\\\",[30,2]],null]]]],[24,\\\"role\\\",\\\"group\\\"],[17,3],[12],[1,\\\"\\\\n  \\\"],[18,7,[[28,[37,4],null,[[\\\"button\\\"],[[50,[28,[37,6],[[28,[37,7],[[30,4],[50,\\\"bs-button-group/button\\\",0,null,null]],null]],null],0,null,[[\\\"buttonGroupType\\\",\\\"groupValue\\\",\\\"onClick\\\"],[[30,5],[30,6],[30,0,[\\\"buttonPressed\\\"]]]]]]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@vertical\\\",\\\"@size\\\",\\\"&attrs\\\",\\\"@buttonComponent\\\",\\\"@type\\\",\\\"@value\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"bs-size-class\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-button-group.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Bootstrap-style button group, that visually groups buttons, and optionally adds radio/checkbox like behaviour.\n    See http://getbootstrap.com/components/#btn-groups\n  \n    Use as a block level component with any number of [Components.Button](Components.Button.html) components provided as\n    a yielded pre-configured contextual component:\n  \n    ```handlebars\n    <BsButtonGroup as |bg|>\n      <bg.button>1</bg.button>\n      <bg.button>2</bg.button>\n      <bg.button>3</bg.button>\n    </BsButtonGroup>\n    ```\n  \n    ### Radio-like behaviour\n  \n    Use the `type` property set to \"radio\" to make the child buttons toggle like radio buttons, i.e. only one button can be active.\n    Set the `value` property of the buttons to something meaningful. The `value` property of the button group will then reflect\n    the value of the active button:\n  \n    ```handlebars\n    <BsButtonGroup @value={{this.buttonGroupValue}} @type=\"radio\" @onChange={{fn (mut this.buttonGroupValue}} as |bg|>\n      <bg.button @type=\"default\" @value={{1}}>1</bg.button>\n      <bg.button @type=\"default\" @value={{2}}>2</bg.button>\n      <bg.button @type=\"default\" @value={{3}}>3</bg.button>\n    </BsButtonGroup>\n  \n    You selected: {{this.buttonGroupValue}}!\n    ```\n  \n    ### Checkbox-like behaviour\n  \n    Set `type` to \"checkbox\" to make any number of child buttons selectable. The `value` property will be an array\n    of all the values of the active buttons:\n  \n    ```handlebars\n    <BsButtonGroup @value={{this.buttonGroupValue}} @type=\"checkbox\" @onChange={{fn (mut this.buttonGroupValue}} as |bg|>\n      <bg.button @type=\"default\" @value={{1}}>1</bg.button>\n      <bg.button @type=\"default\" @value={{2}}>2</bg.button>\n      <bg.button @type=\"default\" @value={{3}}>3</bg.button>\n    </BsButtonGroup>\n  \n    You selected:\n    <ul>\n      {{#each value in this.buttonGroupValue}}\n        <li>{{value}}</li>\n      {{/each}}\n    </ul>\n    ```\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class ButtonGroup\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var ButtonGroup = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function ButtonGroup() {\n      _classCallCheck(this, ButtonGroup);\n      return _callSuper(this, ButtonGroup, arguments);\n    }\n    _inherits(ButtonGroup, _Component);\n    return _createClass(ButtonGroup, [{\n      key: \"buttonPressed\",\n      value:\n      /**\n       * @property buttonComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * Set to true for a vertically stacked button group, see http://getbootstrap.com/components/#btn-groups-vertical\n       *\n       * @property vertical\n       * @type boolean\n       * @default false\n       * @public\n       */\n\n      /**\n       * The type of the button group specifies how child buttons behave and how the `value` property will be computed:\n       *\n       * ### null\n       * If `type` is not set (null), the button group will add no functionality besides Bootstrap styling\n       *\n       * ### radio\n       * if `type` is set to \"radio\", the buttons will behave like radio buttons:\n       * * the `value` property of the button group will reflect the `value` property of the active button\n       * * thus only one button may be active\n       *\n       * ### checkbox\n       * if `type` is set to \"checkbox\", the buttons will behave like checkboxes:\n       * * any number of buttons may be active\n       * * the `value` property of the button group will be an array containing the `value` properties of all active buttons\n       *\n       * @property type\n       * @type string\n       * @default null\n       * @public\n       */\n\n      /**\n       * The value of the button group, computed by its child buttons.\n       * See the `type` property for how the value property is constructed.\n       *\n       * When you set the value, the corresponding buttons will be activated:\n       * * use a single value for a radio button group to activate the button with the same value\n       * * use an array of values for a checkbox button group to activate all the buttons with values contained in the array\n       *\n       * @property value\n       * @type array\n       * @public\n       */\n\n      /**\n       * Property for size styling, set to 'lg', 'sm' or 'xs'\n       *\n       * Also see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/button-group/#sizing)\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n\n      /**\n       * This action is called whenever the button group's value should be changed because the user clicked a button.\n       * You will receive the new value of the button group (based on the `type` property), which you should use to update the\n       * `value` property.\n       *\n       * @event onChange\n       * @param {*} value\n       * @public\n       */\n\n      function buttonPressed(pressedValue) {\n        if (!this.args.onChange) {\n          return;\n        }\n        var newValue;\n        if (this.args.type === 'radio') {\n          if (pressedValue === this.args.value) {\n            return;\n          }\n          newValue = pressedValue;\n        } else {\n          if (!(0, _array.isArray)(this.args.value)) {\n            newValue = [pressedValue];\n          } else {\n            if (this.args.value.includes(pressedValue)) {\n              newValue = this.args.value.filter(function (v) {\n                return v !== pressedValue;\n              });\n            } else {\n              newValue = [].concat(_toConsumableArray(this.args.value), [pressedValue]);\n            }\n          }\n\n          // For compatibility we continue to return an EmberArray instance for now\n          // @todo this should be changed for the next major release!\n          newValue = (0, _array.A)(newValue);\n        }\n        this.args.onChange(newValue);\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"buttonPressed\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"buttonPressed\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ButtonGroup);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-button-group/button\", [\"exports\", \"@ember/component\", \"@ember/array\", \"ember-bootstrap/components/bs-button\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _array, _bsButton, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"ember-bootstrap/components/bs-button\",0,\"@ember/object/internals\",0,\"@embroider/macros\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if this.isBS5ToggleButton}}\n    <input\n      type={{@buttonGroupType}}\n      class=\"btn-check\"\n      id={{this.formId}}\n      autocomplete=\"off\"\n      checked={{this.active}}\n      ...attributes\n      {{on \"click\" this.handleClick}}\n      {{did-update this.resetState @reset}}\n    >\n    <label\n      class=\"btn {{bs-size-class \"btn\" @size}} {{bs-type-class \"btn\" @type default=\"secondary\" outline=@outline}}\"\n      for={{this.formId}}\n    >\n      {{#if this.icon}}\n        <i class={{this.icon}}></i>\n      {{/if}}\n      {{this.text}}\n      {{yield\n        (hash\n          isFulfilled=this.isFulfilled\n          isPending=this.isPending\n          isRejected=this.isRejected\n          isSettled=this.isSettled\n        )\n      }}\n    </label>\n  {{else}}\n    <button\n      disabled={{this.__disabled}}\n      type=\"button\"\n      class=\"btn {{if this.active \"active\"}} {{if this.block \"btn-block\"}} {{bs-size-class \"btn\" @size}} {{bs-type-class \"btn\" @type default=\"secondary\" outline=@outline}}\"\n      ...attributes\n      {{on \"click\" this.handleClick}}\n      {{did-update this.resetState @reset}}\n    >\n      {{#if this.icon}}\n        <i class={{this.icon}}></i>\n      {{/if}}\n      {{this.text}}\n      {{yield\n        (hash\n          isFulfilled=this.isFulfilled\n          isPending=this.isPending\n          isRejected=this.isRejected\n          isSettled=this.isSettled\n        )\n      }}\n    </button>\n  {{/if}}\n  */\n  {\n    \"id\": \"lXLpL3N5\",\n    \"block\": \"[[[41,[30,0,[\\\"isBS5ToggleButton\\\"]],[[[1,\\\"  \\\"],[11,\\\"input\\\"],[16,4,[30,1]],[24,0,\\\"btn-check\\\"],[16,1,[30,0,[\\\"formId\\\"]]],[24,\\\"autocomplete\\\",\\\"off\\\"],[16,\\\"checked\\\",[30,0,[\\\"active\\\"]]],[17,2],[4,[38,2],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[4,[38,3],[[30,0,[\\\"resetState\\\"]],[30,3]],null],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"btn \\\",[28,[37,5],[\\\"btn\\\",[30,4]],null],\\\" \\\",[28,[37,6],[\\\"btn\\\",[30,5]],[[\\\"default\\\",\\\"outline\\\"],[\\\"secondary\\\",[30,6]]]]]]],[15,\\\"for\\\",[30,0,[\\\"formId\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"icon\\\"]],[[[1,\\\"      \\\"],[10,\\\"i\\\"],[15,0,[30,0,[\\\"icon\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[1,[30,0,[\\\"text\\\"]]],[1,\\\"\\\\n    \\\"],[18,7,[[28,[37,9],null,[[\\\"isFulfilled\\\",\\\"isPending\\\",\\\"isRejected\\\",\\\"isSettled\\\"],[[30,0,[\\\"isFulfilled\\\"]],[30,0,[\\\"isPending\\\"]],[30,0,[\\\"isRejected\\\"]],[30,0,[\\\"isSettled\\\"]]]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[16,\\\"disabled\\\",[30,0,[\\\"__disabled\\\"]]],[24,4,\\\"button\\\"],[16,0,[29,[\\\"btn \\\",[52,[30,0,[\\\"active\\\"]],\\\"active\\\"],\\\" \\\",[52,[30,0,[\\\"block\\\"]],\\\"btn-block\\\"],\\\" \\\",[28,[37,5],[\\\"btn\\\",[30,4]],null],\\\" \\\",[28,[37,6],[\\\"btn\\\",[30,5]],[[\\\"default\\\",\\\"outline\\\"],[\\\"secondary\\\",[30,6]]]]]]],[17,2],[4,[38,2],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[4,[38,3],[[30,0,[\\\"resetState\\\"]],[30,3]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"icon\\\"]],[[[1,\\\"      \\\"],[10,\\\"i\\\"],[15,0,[30,0,[\\\"icon\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[1,[30,0,[\\\"text\\\"]]],[1,\\\"\\\\n    \\\"],[18,7,[[28,[37,9],null,[[\\\"isFulfilled\\\",\\\"isPending\\\",\\\"isRejected\\\",\\\"isSettled\\\"],[[30,0,[\\\"isFulfilled\\\"]],[30,0,[\\\"isPending\\\"]],[30,0,[\\\"isRejected\\\"]],[30,0,[\\\"isSettled\\\"]]]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@buttonGroupType\\\",\\\"&attrs\\\",\\\"@reset\\\",\\\"@size\\\",\\\"@type\\\",\\\"@outline\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"input\\\",\\\"on\\\",\\\"did-update\\\",\\\"label\\\",\\\"bs-size-class\\\",\\\"bs-type-class\\\",\\\"i\\\",\\\"yield\\\",\\\"hash\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-button-group/button.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Internal component for button-group buttons\n  \n   @class ButtonGroupButton\n   @namespace Components\n   @extends Components.Button\n   @private\n   */\n  var ButtonGroupButton = _exports.default = /*#__PURE__*/function (_Button) {\n    function ButtonGroupButton() {\n      var _this;\n      _classCallCheck(this, ButtonGroupButton);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, ButtonGroupButton, [].concat(args));\n      _defineProperty(_this, \"formId\", (0, _internals.guidFor)(_this));\n      return _this;\n    }\n    _inherits(ButtonGroupButton, _Button);\n    return _createClass(ButtonGroupButton, [{\n      key: \"active\",\n      get:\n      /**\n       * @property groupValue\n       * @private\n       */\n\n      /**\n       * @property buttonGroupType\n       * @type string\n       * @private\n       */\n\n      /**\n       * @property active\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      function get() {\n        var _this$args = this.args,\n          value = _this$args.value,\n          groupValue = _this$args.groupValue;\n        if (this.args.buttonGroupType === 'radio') {\n          return value === groupValue;\n        } else {\n          if ((0, _array.isArray)(groupValue)) {\n            return groupValue.indexOf(value) !== -1;\n          }\n        }\n        return false;\n      }\n    }, {\n      key: \"isBS5ToggleButton\",\n      get: function get() {\n        {\n          return false;\n        }\n      }\n    }]);\n  }(_bsButton.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ButtonGroupButton);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-button\", [\"exports\", \"@ember/component\", \"@glimmer/tracking\", \"@ember/object\", \"@glimmer/component\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _tracking, _object, _component2, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@glimmer/component\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <button\n    disabled={{this.__disabled}}\n    type={{if @attrTypePrivateWorkaround @attrTypePrivateWorkaround \"button\"}}\n    class=\"btn {{if @active 'active'}} {{if (macroCondition (macroGetOwnConfig 'isNotBS5')) (if this.block 'btn-block')}} {{bs-size-class 'btn' @size}} {{bs-type-class 'btn' @type default=\"secondary\" outline=@outline}}\"\n    ...attributes\n    {{on \"click\" this.handleClick}}\n    {{did-update this.resetState @reset}}\n  >\n    {{#if this.icon}}<i class={{this.icon}}></i> {{/if}}{{this.text}}{{yield\n      (hash\n        isFulfilled=this.isFulfilled\n        isPending=this.isPending\n        isRejected=this.isRejected\n        isSettled=this.isSettled\n      )\n    }}\n  </button>\n  */\n  {\n    \"id\": \"4Wjd1LWu\",\n    \"block\": \"[[[11,\\\"button\\\"],[16,\\\"disabled\\\",[30,0,[\\\"__disabled\\\"]]],[16,4,[52,[30,1],[30,1],\\\"button\\\"]],[16,0,[29,[\\\"btn \\\",[52,[30,2],\\\"active\\\"],\\\" \\\",[52,[30,0,[\\\"block\\\"]],\\\"btn-block\\\"],\\\" \\\",[28,[37,2],[\\\"btn\\\",[30,3]],null],\\\" \\\",[28,[37,3],[\\\"btn\\\",[30,4]],[[\\\"default\\\",\\\"outline\\\"],[\\\"secondary\\\",[30,5]]]]]]],[17,6],[4,[38,4],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[4,[38,5],[[30,0,[\\\"resetState\\\"]],[30,7]],null],[12],[1,\\\"\\\\n  \\\"],[41,[30,0,[\\\"icon\\\"]],[[[10,\\\"i\\\"],[15,0,[30,0,[\\\"icon\\\"]]],[12],[13],[1,\\\" \\\"]],[]],null],[1,[30,0,[\\\"text\\\"]]],[18,8,[[28,[37,8],null,[[\\\"isFulfilled\\\",\\\"isPending\\\",\\\"isRejected\\\",\\\"isSettled\\\"],[[30,0,[\\\"isFulfilled\\\"]],[30,0,[\\\"isPending\\\"]],[30,0,[\\\"isRejected\\\"]],[30,0,[\\\"isSettled\\\"]]]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@attrTypePrivateWorkaround\\\",\\\"@active\\\",\\\"@size\\\",\\\"@type\\\",\\\"@outline\\\",\\\"&attrs\\\",\\\"@reset\\\",\\\"&default\\\"],false,[\\\"button\\\",\\\"if\\\",\\\"bs-size-class\\\",\\\"bs-type-class\\\",\\\"on\\\",\\\"did-update\\\",\\\"i\\\",\\\"yield\\\",\\\"hash\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-button.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n    Implements a HTML button element, with support for all [Bootstrap button CSS styles](http://getbootstrap.com/css/#buttons)\n    as well as advanced functionality such as button states.\n  \n    ### Basic Usage\n  \n    ```hbs\n    <BsButton @type=\"primary\" @icon=\"glyphicon glyphicon-download\">\n      Downloads\n    </BsButton>\n    ```\n  \n    ### Actions\n  \n    Use the `onClick` property of the component to send an action to your controller. It will receive the button's value\n    (see the `value` property) as an argument.\n  \n    ```hbs\n    <BsButton @type=\"primary\" @icon=\"glyphicon glyphicon-download\" @onClick=(action \"download\")>\n      Downloads\n    </BsButton>\n    ```\n  \n    ### Promise support for automatic state change\n  \n    When returning a Promise for any asynchronous operation from the `onClick` closure action the button will\n    manage an internal state (\"default\" > \"pending\" > \"fulfilled\"/\"rejected\") automatically.\n  \n    The button is disabled by default if it's in pending state. You could override this behavior by passing\n    the `disabled` HTML attribute or by setting `@preventConcurrency` to false.\n  \n    ```hbs\n    <BsButton\n      disabled={{false}}\n    />\n    ```\n  \n    ```hbs\n    <BsButton\n      @preventConcurrency={{false}}\n    />\n    ```\n  \n    The label could be changed automatically according to the state of the promise with `@defaultText`,\n    `@pendingText`, `@fulfilledText` and `@rejectedText` arguments:\n  \n    ```hbs\n    <BsButton\n      @type=\"primary\"\n      @icon=\"glyphicon glyphicon-download\"\n      @defaultText=\"Download\"\n      @pendingText=\"Loading...\"\n      @fulfilledText=\"Completed!\"\n      @rejectedText=\"Oups!?\"\n      @onClick={{this.download}}\n    />\n    ```\n  \n    ```js\n    // controller.js\n    import { Controller } from '@ember/controller';\n    import { action } from '@ember/object';\n  \n    export default class MyController extends Controller {\n      @action\n      download(value) {\n        return new Promise(...);\n      }\n    });\n    ```\n  \n    For further customization `isPending`, `isFulfilled`, `isRejected` and `isSettled` properties are yielded:\n  \n    ```hbs\n    <BsButton @onClick=(action \"download\") as |button|>\n      Download\n      {{#if button.isPending}}\n        <span class=\"loading-spinner\"></span>\n      {{/if}}\n    </BsButton>\n    ```\n  \n    You can `reset` the state represented by these properties and used for button's text by setting `reset` property to\n    `true`.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Button\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var Button = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function Button() {\n      var _this;\n      _classCallCheck(this, Button);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Button, [].concat(args));\n      /**\n       * Set the 'active' class to apply active/pressed CSS styling\n       *\n       * @property active\n       * @type boolean\n       * @default false\n       * @public\n       */\n      /**\n       * Property for block level buttons (BS3 and BS4 only!)\n       *\n       * See the [Bootstrap docs](http://getbootstrap.com/css/#buttons-sizes)\n       * @property block\n       * @type boolean\n       * @default false\n       * @public\n       */\n      _initializerDefineProperty(_this, \"block\", _descriptor, _this);\n      /**\n       * Supply a value that will be associated with this button. This will be sent\n       * as a parameter of the default action triggered when clicking the button\n       *\n       * @property value\n       * @type any\n       * @public\n       */\n      /**\n       * Controls if `onClick` action is fired concurrently. If `true` clicking button multiple times will not trigger\n       * `onClick` action if a Promise returned by previous click is not settled yet.\n       *\n       * This does not affect event bubbling.\n       *\n       * @property preventConcurrency\n       * @type Boolean\n       * @default true\n       * @public\n       */\n      /**\n       * State of the button. The button's label (if not used as a block component) will be set to the\n       * `<state>Text` property.\n       * This property will automatically be set when using a click action that supplies the callback with a promise.\n       * Possible values are: \"default\" > \"pending\" > \"fulfilled\" / \"rejected\".\n       * It could be resetted by `reset` property.\n       *\n       * @property state\n       * @type String\n       * @default 'default'\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_state\", _descriptor2, _this);\n      return _this;\n    }\n    _inherits(Button, _Component);\n    return _createClass(Button, [{\n      key: \"__disabled\",\n      get:\n      /**\n       * Default label of the button. Not need if used as a block component\n       *\n       * @property defaultText\n       * @type string\n       * @public\n       */\n\n      /**\n       * Label of the button used if `onClick` event has returned a Promise which is pending.\n       * Not considered if used as a block component.\n       *\n       * @property pendingText\n       * @type string\n       * @public\n       */\n\n      /**\n       * Label of the button used if `onClick` event has returned a Promise which succeeded.\n       * Not considered if used as a block component.\n       *\n       * @property fulfilledText\n       * @type string\n       * @public\n       */\n\n      /**\n       * Label of the button used if `onClick` event has returned a Promise which failed.\n       * Not considered if used as a block component.\n       *\n       * @property rejectedText\n       * @type string\n       * @public\n       */\n\n      /**\n       * Property to disable the button only used in internal communication\n       * between Ember Boostrap components.\n       *\n       * @property _disabled\n       * @type ?boolean\n       * @default null\n       * @private\n       */\n      function get() {\n        if (this.args._disabled !== undefined) {\n          return this.args._disabled;\n        }\n        return this.isPending && this.args.preventConcurrency !== false;\n      }\n    }, {\n      key: \"icon\",\n      get:\n      /**\n       * A click event on a button will not bubble up the DOM tree if it has an `onClick` action handler. Set to true to\n       * enable the event to bubble\n       *\n       * @property bubble\n       * @type boolean\n       * @default false\n       * @public\n       */\n\n      /**\n       * If button is active and this is set, the icon property will match this property\n       *\n       * @property iconActive\n       * @type String\n       * @public\n       */\n\n      /**\n       * If button is inactive and this is set, the icon property will match this property\n       *\n       * @property iconInactive\n       * @type String\n       * @public\n       */\n\n      /**\n       * Class(es) (e.g. glyphicons or font awesome) to use as a button icon\n       * This will render a <i class=\"{{icon}}\"></i> element in front of the button's label\n       *\n       * @property icon\n       * @type String\n       * @public\n       */\n      function get() {\n        return this.args.icon || (this.args.active ? this.args.iconActive : this.args.iconInactive);\n      }\n    }, {\n      key: \"state\",\n      get: function get() {\n        var _this$args$state;\n        return (_this$args$state = this.args.state) !== null && _this$args$state !== void 0 ? _this$args$state : this._state;\n      },\n      set: function set(state) {\n        this._state = state;\n      }\n\n      /**\n       * Promise returned by `onClick` event is pending.\n       *\n       * @property isPending\n       * @type Boolean\n       * @private\n       */\n    }, {\n      key: \"isPending\",\n      get: function get() {\n        return this.state === 'pending';\n      }\n\n      /**\n       * Promise returned by `onClick` event has been succeeded.\n       *\n       * @property isFulfilled\n       * @type Boolean\n       * @private\n       */\n    }, {\n      key: \"isFulfilled\",\n      get: function get() {\n        return this.state === 'fulfilled';\n      }\n\n      /**\n       * Promise returned by `onClick` event has been rejected.\n       *\n       * @property isRejected\n       * @type Boolean\n       * @private\n       */\n    }, {\n      key: \"isRejected\",\n      get: function get() {\n        return this.state === 'rejected';\n      }\n\n      /**\n       * Promise returned by `onClick` event has been succeeded or rejected.\n       *\n       * @property isSettled\n       * @type Boolean\n       * @private\n       */\n    }, {\n      key: \"isSettled\",\n      get: function get() {\n        return this.isFulfilled || this.isRejected;\n      }\n\n      /**\n       * Set this to `true` to reset the `state`. A typical use case is to bind this attribute with ember-data isDirty flag.\n       *\n       * The old value is not taken into consideration. Setting a `true` value to `true` again will also reset `state`.\n       * In that case it's even to notify the observer system that the property has changed by calling\n       * [`notifyPropertyChange()`](https://www.emberjs.com/api/ember/3.2/classes/EmberObject/methods/notifyPropertyChange?anchor=notifyPropertyChange).\n       *\n       * @property reset\n       * @type boolean\n       * @public\n       */\n\n      /**\n       * Property for size styling, set to 'lg', 'sm' or 'xs'\n       *\n       * Also see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/buttons/#sizes)\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n\n      /**\n       * Property for type styling\n       *\n       * For the available types see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/buttons/)\n       *\n       * @property type\n       * @type String\n       * @default 'secondary'\n       * @public\n       */\n\n      /**\n       * Property to create outline buttons (BS4+ only)\n       *\n       * @property outline\n       * @type boolean\n       * @default false\n       * @public\n       */\n\n      /**\n       * When clicking the button this action is called with the value of the button (that is the value of the \"value\" property).\n       *\n       * Return a promise object, and the buttons state will automatically set to \"pending\", \"resolved\" and/or \"rejected\".\n       * This could be used to automatically set the button's text depending on promise state (`defaultText`, `pendingText`,\n       * `fulfilledText`, `rejectedText`) and for further customization using the yielded `isPending`, `isFulfilled`,\n       * `isRejected` properties.\n       *\n       * The click event will not bubble up, unless you set `bubble` to true.\n       *\n       * @event onClick\n       * @param {*} value\n       * @public\n       */\n\n      /**\n       * This will reset the state property to 'default', and with that the button's label to defaultText\n       *\n       * @method resetState\n       * @private\n       */\n    }, {\n      key: \"resetState\",\n      value: function resetState() {\n        this.state = 'default';\n      }\n    }, {\n      key: \"text\",\n      get: function get() {\n        return this.args[\"\".concat(this.state, \"Text\")] || this.args.defaultText;\n      }\n\n      /**\n       * @method click\n       * @private\n       */\n    }, {\n      key: \"handleClick\",\n      value: (function () {\n        var _handleClick = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(e) {\n          var _this$args, bubble, onClick, preventConcurrency;\n          return _regeneratorRuntime().wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _this$args = this.args, bubble = _this$args.bubble, onClick = _this$args.onClick, preventConcurrency = _this$args.preventConcurrency;\n                if (!(typeof onClick !== 'function')) {\n                  _context.next = 3;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 3:\n                // Shouldn't we prevent propagation regardless if `@onClick` is a function?\n                if (!bubble) {\n                  e.stopPropagation();\n                }\n                if (!(preventConcurrency && this.isPending)) {\n                  _context.next = 6;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 6:\n                this.state = 'pending';\n                _context.prev = 7;\n                _context.next = 10;\n                return onClick(this.args.value);\n              case 10:\n                if (!this.isDestroyed) {\n                  this.state = 'fulfilled';\n                }\n                _context.next = 17;\n                break;\n              case 13:\n                _context.prev = 13;\n                _context.t0 = _context[\"catch\"](7);\n                if (!this.isDestroyed) {\n                  this.state = 'rejected';\n                }\n                throw _context.t0;\n              case 17:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[7, 13]]);\n        }));\n        function handleClick(_x) {\n          return _handleClick.apply(this, arguments);\n        }\n        return handleClick;\n      }())\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"block\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"_state\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'default';\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"resetState\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resetState\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Button);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-carousel\", [\"exports\", \"@ember/component\", \"@ember/object\", \"ember-bootstrap/components/bs-carousel/slide\", \"@glimmer/component\", \"@ember/runloop\", \"ember-concurrency\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _object, _slide, _component2, _runloop, _emberConcurrency, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-bootstrap/components/bs-carousel/slide\",0,\"@glimmer/component\",0,\"@ember/runloop\",0,\"ember-concurrency\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    {{!-- template-lint-disable no-positive-tabindex --}}\n    tabindex={{this.tabindex}}\n    class=\"carousel slide {{if this.carouselFade \"carousel-fade\"}}\"\n    ...attributes\n    {{on \"keydown\" this.handleKeyDown}}\n    {{on \"mouseenter\" this.handleMouseEnter}}\n    {{on \"mouseleave\" this.handleMouseLeave}}\n    {{did-update this.childSlidesObserver this.childSlides this.autoPlay}}\n    {{did-update this.indexObserver this.index}}\n  >\n    {{#if this.showIndicators}}\n      {{#if (macroCondition (macroGetOwnConfig \"isBS5\"))}}\n        <div class=\"carousel-indicators\">\n          {{#each this.indicators as |indicator _index|}}\n            <button\n              data-bs-target\n              type=\"button\"\n              class={{if (bs-eq this.currentIndex _index) \"active\"}}\n              aria-current=\"{{bs-eq this.currentIndex _index}}\"\n              {{on \"click\" (fn this.toSlide _index)}}\n            />\n          {{/each}}\n        </div>\n      {{else}}\n        <ol class=\"carousel-indicators\">\n          {{#each this.indicators as |indicator _index|}}\n            <li\n              role=\"button\"\n              class={{if (bs-eq this.currentIndex _index) \"active\"}}\n              {{on \"click\" (fn this.toSlide _index)}}\n            />\n          {{/each}}\n        </ol>\n      {{/if}}\n  \n    {{/if}}\n  \n    <div class=\"carousel-inner\" role=\"listbox\">\n      {{yield\n        (hash\n          slide=(component (ensure-safe-component (bs-default @slideComponent (component \"bs-carousel/slide\")))\n            currentSlide=this.currentSlide\n            directionalClassName=this.directionalClassName\n            followingSlide=this.followingSlide\n            orderClassName=this.orderClassName\n            presentationState=this.presentationState\n            registerChild=this.registerChild\n            unregisterChild=this.unregisterChild\n          )\n        )\n      }}\n    </div>\n  \n    {{#if this.showControls}}\n      <button class=\"carousel-control-prev\" type=\"button\" {{on \"click\" this.toPrevSlide}}>\n        <span aria-hidden=\"true\" class=\"carousel-control-prev-icon\"></span>\n        <span class={{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"visually-hidden\" \"sr-only\"}}>{{this.prevControlLabel}}</span>\n      </button>\n      <button class=\"carousel-control-next\" type=\"button\" {{on \"click\" this.toNextSlide}}>\n        <span aria-hidden=\"true\" class=\"carousel-control-next-icon\"></span>\n        <span class={{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"visually-hidden\" \"sr-only\"}}>{{this.nextControlLabel}}</span>\n      </button>\n    {{/if}}\n  \n  </div>\n  */\n  {\n    \"id\": \"S5ECEBty\",\n    \"block\": \"[[[11,0],[16,\\\"tabindex\\\",[30,0,[\\\"tabindex\\\"]]],[16,0,[29,[\\\"carousel slide \\\",[52,[30,0,[\\\"carouselFade\\\"]],\\\"carousel-fade\\\"]]]],[17,1],[4,[38,2],[\\\"keydown\\\",[30,0,[\\\"handleKeyDown\\\"]]],null],[4,[38,2],[\\\"mouseenter\\\",[30,0,[\\\"handleMouseEnter\\\"]]],null],[4,[38,2],[\\\"mouseleave\\\",[30,0,[\\\"handleMouseLeave\\\"]]],null],[4,[38,3],[[30,0,[\\\"childSlidesObserver\\\"]],[30,0,[\\\"childSlides\\\"]],[30,0,[\\\"autoPlay\\\"]]],null],[4,[38,3],[[30,0,[\\\"indexObserver\\\"]],[30,0,[\\\"index\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showIndicators\\\"]],[[[1,\\\"      \\\"],[10,\\\"ol\\\"],[14,0,\\\"carousel-indicators\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,0,[\\\"indicators\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[11,\\\"li\\\"],[24,\\\"role\\\",\\\"button\\\"],[16,0,[52,[28,[37,8],[[30,0,[\\\"currentIndex\\\"]],[30,3]],null],\\\"active\\\"]],[4,[38,2],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"toSlide\\\"]],[30,3]],null]],null],[12],[13],[1,\\\"\\\\n\\\"]],[2,3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"carousel-inner\\\"],[14,\\\"role\\\",\\\"listbox\\\"],[12],[1,\\\"\\\\n    \\\"],[18,5,[[28,[37,11],null,[[\\\"slide\\\"],[[50,[28,[37,13],[[28,[37,14],[[30,4],[50,\\\"bs-carousel/slide\\\",0,null,null]],null]],null],0,null,[[\\\"currentSlide\\\",\\\"directionalClassName\\\",\\\"followingSlide\\\",\\\"orderClassName\\\",\\\"presentationState\\\",\\\"registerChild\\\",\\\"unregisterChild\\\"],[[30,0,[\\\"currentSlide\\\"]],[30,0,[\\\"directionalClassName\\\"]],[30,0,[\\\"followingSlide\\\"]],[30,0,[\\\"orderClassName\\\"]],[30,0,[\\\"presentationState\\\"]],[30,0,[\\\"registerChild\\\"]],[30,0,[\\\"unregisterChild\\\"]]]]]]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showControls\\\"]],[[[1,\\\"    \\\"],[11,\\\"button\\\"],[24,0,\\\"carousel-control-prev\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[30,0,[\\\"toPrevSlide\\\"]]],null],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,0,\\\"carousel-control-prev-icon\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,[30,0,[\\\"prevControlLabel\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,0,\\\"carousel-control-next\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[30,0,[\\\"toNextSlide\\\"]]],null],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,0,\\\"carousel-control-next-icon\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,[30,0,[\\\"nextControlLabel\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"indicator\\\",\\\"_index\\\",\\\"@slideComponent\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"on\\\",\\\"did-update\\\",\\\"ol\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"bs-eq\\\",\\\"fn\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"button\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-carousel.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Ember implementation of Bootstrap's Carousel. Supports all original features but API is partially different:\n  \n    | Description | Original | Component |\n    | ------ | ------ | ------ |\n    | Autoplays after first user event or on page load. | ride='carousel'\\|false | autoPlay=false\\|true |\n    | Disable automatic cycle. | interval=false | interval=0 |\n    | If first slide should follow last slide on \"previous\" event, the opposite will also be true for \"next\" event. | wrap=false\\|true | wrap=false\\|true |\n    | Jumps into specific slide index | data-slide-to=n | index=n |\n    | Keyboard events. | keyboard=false\\|true | keyboard=false\\|true |\n    | Left-to-right or right-to-left sliding. | N/A |  ltr=false\\|true |\n    | Pause current cycle on mouse enter. | pause='hover'\\|null | pauseOnMouseEnter=false\\|true |\n    | Show or hide controls  | Tag manipulation. | showControls=false\\|true |\n    | Show or hide indicators  | Tag manipulation. | showIndicators=false\\|true |\n    | Waiting time of slides in an automatic cycle. | interval=n | interval=n |\n  \n    Default settings are the same as the original, so you don't have to worry about changing parameters.\n  \n    ```hbs\n    <BsCarousel as |car|>\n      <car.slide>\n        <img alt=\"First slide\" src=\"slide1.jpg\">\n      </car.slide>\n      <car.slide>\n        <img alt=\"Second slide\" src=\"slide2.jpg\">\n      </car.slide>\n      <car.slide>\n        <img alt=\"Third slide\" src=\"slide3.jpg\">\n      </car.slide>\n    </BsCarousel>\n    ```\n  \n    To better understand the whole documentation, you should be aware of the following operations:\n  \n    | Operation | Description |\n    | ------ | ------ |\n    | Transition | Swaps two slides. |\n    | Interval | Waiting time after a transition. |\n    | Presentation | Represents a single transition, or a single interval, or the union of both. |\n    | Cycle | Presents all slides until it reaches first or last slide. |\n    | Wrap | wrap slides, cycles without stopping at first or last slide. |\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Carousel\n    @namespace Components\n    @extends Component\n    @public\n  */\n  var Carousel = _exports.default = (_dec = (0, _emberConcurrency.task)({\n    restartable: true\n  }), _dec2 = (0, _emberConcurrency.task)({\n    drop: true\n  }), _dec3 = (0, _emberConcurrency.task)({\n    restartable: true\n  }), _class = /*#__PURE__*/function (_Component) {\n    function Carousel() {\n      var _this;\n      _classCallCheck(this, Carousel);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Carousel, [].concat(args));\n      _defineProperty(_this, \"tabindex\", '1');\n      _initializerDefineProperty(_this, \"children\", _descriptor, _this);\n      /**\n       * Indicates the current index of the current slide.\n       *\n       * @property currentIndex\n       * @private\n       */\n      _initializerDefineProperty(_this, \"currentIndex\", _descriptor2, _this);\n      /**\n       * Bootstrap style to indicate that a given slide should be moving to left/right.\n       *\n       * @property directionalClassName\n       * @private\n       * @type { 'left' | 'right' | null }\n       */\n      _initializerDefineProperty(_this, \"directionalClassName\", _descriptor3, _this);\n      /**\n       * Indicates the next slide index to move into.\n       *\n       * @property followingIndex\n       * @private\n       * @type number\n       */\n      _initializerDefineProperty(_this, \"followingIndex\", _descriptor4, _this);\n      /**\n       * If user is hovering its cursor on component.\n       * This property is only manipulated when 'pauseOnMouseEnter' is true.\n       *\n       * @property isMouseHovering\n       * @private\n       * @type boolean\n       */\n      _initializerDefineProperty(_this, \"isMouseHovering\", _descriptor5, _this);\n      /**\n       * The class name to append to the next control link element.\n       *\n       * @property nextControlClassName\n       * @type string\n       * @private\n       */\n      /**\n       * Bootstrap style to indicate the next/previous slide.\n       *\n       * @property orderClassName\n       * @private\n       * @type string\n       */\n      _initializerDefineProperty(_this, \"orderClassName\", _descriptor6, _this);\n      /**\n       * The current state of the current presentation, can be either \"didTransition\"\n       * or \"willTransit\".\n       *\n       * @private\n       * @property presentationState\n       * @type { 'didTransition' | 'willTransit' | null }\n       */\n      _initializerDefineProperty(_this, \"presentationState\", _descriptor7, _this);\n      return _this;\n    }\n    _inherits(Carousel, _Component);\n    return _createClass(Carousel, [{\n      key: \"canTurnToLeft\",\n      get:\n      /**\n       * @property slideComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * If a slide can turn to left, including corners.\n       *\n       * @private\n       * @property canTurnToLeft\n       */\n      function get() {\n        return this.wrap || this.currentIndex > 0;\n      }\n\n      /**\n       * If a slide can turn to right, including corners.\n       *\n       * @private\n       * @property canTurnToRight\n       */\n    }, {\n      key: \"canTurnToRight\",\n      get: function get() {\n        return this.wrap || this.currentIndex < this.childSlides.length - 1;\n      }\n    }, {\n      key: \"childSlides\",\n      get:\n      /**\n       * All `CarouselSlide` child components.\n       *\n       * @private\n       * @property childSlides\n       * @readonly\n       * @type array\n       */\n      function get() {\n        return this.children.filter(function (view) {\n          return view instanceof _slide.default;\n        });\n      }\n\n      /**\n       * This observer is the entry point for real time insertion and removing of slides.\n       *\n       * @private\n       * @property childSlidesObserver\n       */\n    }, {\n      key: \"childSlidesObserver\",\n      value: function childSlidesObserver() {\n        var childSlides = this.childSlides;\n        if (childSlides.length === 0) {\n          return;\n        }\n        // Sets new current index\n        var currentIndex = this.currentIndex;\n        if (currentIndex >= childSlides.length) {\n          currentIndex = childSlides.length - 1;\n          this.currentIndex = currentIndex;\n        }\n        // Automatic sliding\n        if (this.autoPlay) {\n          this.waitIntervalToInitCycle.perform();\n        }\n        // Initial slide state\n        this.presentationState = null;\n      }\n    }, {\n      key: \"currentSlide\",\n      get:\n      /**\n       * The current slide object that is going to be used by the nested slides components.\n       *\n       * @property currentSlide\n       * @private\n       *\n       */\n      function get() {\n        return this.childSlides[this.currentIndex];\n      }\n    }, {\n      key: \"followingSlide\",\n      get:\n      /**\n       * The following slide object that is going to be used by the nested slides components.\n       *\n       * @property followingIndex\n       * @private\n       */\n      function get() {\n        return this.childSlides[this.followingIndex];\n      }\n\n      /**\n       * @private\n       * @property hasInterval\n       * @type boolean\n       */\n    }, {\n      key: \"hasInterval\",\n      get: function get() {\n        return this.interval > 0;\n      }\n\n      /**\n       * This observer is the entry point for programmatically slide changing.\n       *\n       * @property indexObserver\n       * @private\n       */\n    }, {\n      key: \"indexObserver\",\n      value: function indexObserver() {\n        this.toSlide(this.index);\n      }\n\n      /**\n       * @property indicators\n       * @private\n       */\n    }, {\n      key: \"indicators\",\n      get: function get() {\n        return _toConsumableArray(Array(this.childSlides.length));\n      }\n    }, {\n      key: \"shouldNotDoPresentation\",\n      get:\n      /**\n       * The class name to append to the previous control link element.\n       *\n       * @property prevControlClassName\n       * @type string\n       * @private\n       */\n\n      /**\n       * @private\n       * @property shouldNotDoPresentation\n       * @type boolean\n       */\n      function get() {\n        return this.childSlides.length <= 1;\n      }\n\n      /**\n       * @private\n       * @property shouldRunAutomatically\n       * @type boolean\n       */\n    }, {\n      key: \"shouldRunAutomatically\",\n      get: function get() {\n        return this.hasInterval;\n      }\n\n      /**\n       * Starts automatic sliding on page load.\n       * This parameter has no effect if interval is less than or equal to zero.\n       *\n       * @default false\n       * @property autoPlay\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"autoPlay\",\n      get: function get() {\n        var _this$args$autoPlay;\n        return (_this$args$autoPlay = this.args.autoPlay) !== null && _this$args$autoPlay !== void 0 ? _this$args$autoPlay : false;\n      }\n\n      /**\n       * If false will hard stop on corners, i.e., first slide won't make a transition to the\n       * last slide and vice versa.\n       *\n       * @default true\n       * @property wrap\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"wrap\",\n      get: function get() {\n        var _this$args$wrap;\n        return (_this$args$wrap = this.args.wrap) !== null && _this$args$wrap !== void 0 ? _this$args$wrap : true;\n      }\n\n      /**\n       * Index of starting slide.\n       *\n       * @default 0\n       * @property index\n       * @public\n       * @type number\n       */\n    }, {\n      key: \"index\",\n      get: function get() {\n        var _this$args$index;\n        return (_this$args$index = this.args.index) !== null && _this$args$index !== void 0 ? _this$args$index : 0;\n      }\n\n      /**\n       * Waiting time before automatically show another slide.\n       * Automatic sliding is canceled if interval is less than or equal to zero.\n       *\n       * @default 5000\n       * @property interval\n       * @public\n       * @type number\n       */\n    }, {\n      key: \"interval\",\n      get: function get() {\n        var _this$args$interval;\n        return (_this$args$interval = this.args.interval) !== null && _this$args$interval !== void 0 ? _this$args$interval : 5000;\n      }\n\n      /**\n       * Should bind keyboard events into sliding.\n       *\n       * @default true\n       * @property keyboard\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"keyboard\",\n      get: function get() {\n        var _this$args$keyboard;\n        return (_this$args$keyboard = this.args.keyboard) !== null && _this$args$keyboard !== void 0 ? _this$args$keyboard : true;\n      }\n\n      /**\n       * If automatic sliding should be left-to-right or right-to-left.\n       * This parameter has no effect if interval is less than or equal to zero.\n       *\n       * @default true\n       * @property ltr\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"ltr\",\n      get: function get() {\n        var _this$args$ltr;\n        return (_this$args$ltr = this.args.ltr) !== null && _this$args$ltr !== void 0 ? _this$args$ltr : true;\n      }\n\n      /**\n       * The next control icon to be displayed.\n       *\n       * @default null\n       * @property nextControlIcon\n       * @type string\n       * @public\n       */\n\n      /**\n       * Label for screen readers, defaults to 'Next'.\n       *\n       * @default 'Next'\n       * @property nextControlLabel\n       * @type string\n       * @public\n       */\n    }, {\n      key: \"nextControlLabel\",\n      get: function get() {\n        var _this$args$nextContro;\n        return (_this$args$nextContro = this.args.nextControlLabel) !== null && _this$args$nextContro !== void 0 ? _this$args$nextContro : 'Next';\n      }\n\n      /**\n       * Pauses automatic sliding if mouse cursor is hovering the component.\n       * This parameter has no effect if interval is less than or equal to zero.\n       *\n       * @default true\n       * @property pauseOnMouseEnter\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"pauseOnMouseEnter\",\n      get: function get() {\n        var _this$args$pauseOnMou;\n        return (_this$args$pauseOnMou = this.args.pauseOnMouseEnter) !== null && _this$args$pauseOnMou !== void 0 ? _this$args$pauseOnMou : true;\n      }\n\n      /**\n       * The previous control icon to be displayed.\n       *\n       * @default null\n       * @property prevControlIcon\n       * @type string\n       * @public\n       */\n\n      /**\n       * Label for screen readers, defaults to 'Previous'.\n       *\n       * @default 'Previous'\n       * @property prevControlLabel\n       * @type string\n       * @public\n       */\n    }, {\n      key: \"prevControlLabel\",\n      get: function get() {\n        var _this$args$prevContro;\n        return (_this$args$prevContro = this.args.prevControlLabel) !== null && _this$args$prevContro !== void 0 ? _this$args$prevContro : 'Previous';\n      }\n\n      /**\n       * Show or hide controls.\n       *\n       * @default true\n       * @property showControls\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"showControls\",\n      get: function get() {\n        var _this$args$showContro;\n        return (_this$args$showContro = this.args.showControls) !== null && _this$args$showContro !== void 0 ? _this$args$showContro : true;\n      }\n\n      /**\n       * Show or hide indicators.\n       *\n       * @default true\n       * @property showIndicators\n       * @public\n       * @type boolean\n       */\n    }, {\n      key: \"showIndicators\",\n      get: function get() {\n        var _this$args$showIndica;\n        return (_this$args$showIndica = this.args.showIndicators) !== null && _this$args$showIndica !== void 0 ? _this$args$showIndica : true;\n      }\n\n      /**\n       * The duration of the slide transition.\n       * You should also change this parameter in Bootstrap CSS file.\n       *\n       * @default 600\n       * @property transitionDuration\n       * @public\n       * @type number\n       */\n    }, {\n      key: \"transitionDuration\",\n      get: function get() {\n        var _this$args$transition;\n        return (_this$args$transition = this.args.transitionDuration) !== null && _this$args$transition !== void 0 ? _this$args$transition : 600;\n      }\n\n      /**\n       * The type slide transition to perform.\n       * Options are 'fade' or 'slide'. Note: BS4 only\n       *\n       * @default 'slide'\n       * @property transition\n       * @public\n       * @type string\n       */\n    }, {\n      key: \"transition\",\n      get: function get() {\n        var _this$args$transition2;\n        return (_this$args$transition2 = this.args.transition) !== null && _this$args$transition2 !== void 0 ? _this$args$transition2 : 'slide';\n      }\n    }, {\n      key: \"carouselFade\",\n      get: function get() {\n        return this.transition === 'fade';\n      }\n\n      /**\n       * Action called after the slide has changed.\n       *\n       * @event onSlideChanged\n       * @param toIndex\n       * @public\n       */\n\n      /**\n       * Do a presentation and calls itself to perform a cycle.\n       *\n       * @method cycle\n       * @this Carousel\n       * @private\n       */\n    }, {\n      key: \"cycle\",\n      value:\n      /*#__PURE__*/\n      _regeneratorRuntime().mark(function cycle() {\n        return _regeneratorRuntime().wrap(function cycle$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return this.transitioner.perform();\n            case 2:\n              _context.next = 4;\n              return (0, _emberConcurrency.timeout)(this.interval);\n            case 4:\n              this.toAppropriateSlide();\n            case 5:\n            case \"end\":\n              return _context.stop();\n          }\n        }, cycle, this);\n      })\n      /**\n       * @method transitioner\n       * @this Carousel\n       * @private\n       */\n    }, {\n      key: \"transitioner\",\n      value:\n      /*#__PURE__*/\n      _regeneratorRuntime().mark(function transitioner() {\n        var _this2 = this;\n        return _regeneratorRuntime().wrap(function transitioner$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              this.presentationState = 'willTransit';\n              _context2.next = 3;\n              return (0, _emberConcurrency.timeout)(this.transitionDuration);\n            case 3:\n              this.presentationState = 'didTransition';\n              // Must change current index after execution of 'presentationStateObserver' method\n              // from child components.\n              _context2.next = 6;\n              return new Promise(function (resolve) {\n                (0, _runloop.schedule)('afterRender', _this2, function () {\n                  _this2.currentIndex = _this2.followingIndex;\n                  resolve();\n                });\n              });\n            case 6:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, transitioner, this);\n      })\n      /**\n       * Waits an interval time to start a cycle.\n       *\n       * @method waitIntervalToInitCycle\n       * @this Carousel\n       * @private\n       */\n    }, {\n      key: \"waitIntervalToInitCycle\",\n      value:\n      /*#__PURE__*/\n      _regeneratorRuntime().mark(function waitIntervalToInitCycle() {\n        return _regeneratorRuntime().wrap(function waitIntervalToInitCycle$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              if (!(this.shouldRunAutomatically === false)) {\n                _context3.next = 2;\n                break;\n              }\n              return _context3.abrupt(\"return\");\n            case 2:\n              _context3.next = 4;\n              return (0, _emberConcurrency.timeout)(this.interval);\n            case 4:\n              this.toAppropriateSlide();\n            case 5:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, waitIntervalToInitCycle, this);\n      })\n    }, {\n      key: \"toSlide\",\n      value: function toSlide(toIndex) {\n        var _this$args$onSlideCha, _this$args;\n        if (this.currentIndex === toIndex || this.shouldNotDoPresentation) {\n          return;\n        }\n        this.assignClassNameControls(toIndex);\n        this.setFollowingIndex(toIndex);\n        if (this.shouldRunAutomatically === false || this.isMouseHovering) {\n          this.transitioner.perform();\n        } else {\n          this.cycle.perform();\n        }\n        (_this$args$onSlideCha = (_this$args = this.args).onSlideChanged) === null || _this$args$onSlideCha === void 0 || _this$args$onSlideCha.call(_this$args, toIndex);\n      }\n    }, {\n      key: \"toNextSlide\",\n      value: function toNextSlide() {\n        if (this.canTurnToRight) {\n          this.toSlide(this.currentIndex + 1);\n        }\n      }\n    }, {\n      key: \"toPrevSlide\",\n      value: function toPrevSlide() {\n        if (this.canTurnToLeft) {\n          this.toSlide(this.currentIndex - 1);\n        }\n      }\n\n      /**\n       * Indicates what class names should be applicable to the current transition slides.\n       *\n       * @method assignClassNameControls\n       * @private\n       */\n    }, {\n      key: \"assignClassNameControls\",\n      value: function assignClassNameControls(toIndex) {\n        if (toIndex < this.currentIndex) {\n          this.directionalClassName = 'right';\n          this.orderClassName = 'prev';\n        } else {\n          this.directionalClassName = 'left';\n          this.orderClassName = 'next';\n        }\n      }\n    }, {\n      key: \"handleMouseEnter\",\n      value: function handleMouseEnter() {\n        if (this.pauseOnMouseEnter) {\n          this.isMouseHovering = true;\n          this.cycle.cancelAll();\n          this.waitIntervalToInitCycle.cancelAll();\n        }\n      }\n    }, {\n      key: \"handleMouseLeave\",\n      value: function handleMouseLeave() {\n        if (this.pauseOnMouseEnter && (this.transitioner.last !== null || this.waitIntervalToInitCycle.last !== null)) {\n          this.isMouseHovering = false;\n          this.waitIntervalToInitCycle.perform();\n        }\n      }\n    }, {\n      key: \"handleKeyDown\",\n      value: function handleKeyDown(e) {\n        var code = e.keyCode || e.which;\n        if (this.keyboard === false || /input|textarea/i.test(e.target.tagName)) {\n          return;\n        }\n        switch (code) {\n          case 37:\n            this.toPrevSlide();\n            break;\n          case 39:\n            this.toNextSlide();\n            break;\n          default:\n            break;\n        }\n      }\n\n      /**\n       * Sets the following slide index within the lower and upper bounds.\n       *\n       * @method setFollowingIndex\n       * @private\n       */\n    }, {\n      key: \"setFollowingIndex\",\n      value: function setFollowingIndex(toIndex) {\n        var slidesLengthMinusOne = this.childSlides.length - 1;\n        if (toIndex > slidesLengthMinusOne) {\n          this.followingIndex = 0;\n        } else if (toIndex < 0) {\n          this.followingIndex = slidesLengthMinusOne;\n        } else {\n          this.followingIndex = toIndex;\n        }\n      }\n\n      /**\n       * Coordinates the correct slide movement direction.\n       *\n       * @method toAppropriateSlide\n       * @private\n       */\n    }, {\n      key: \"toAppropriateSlide\",\n      value: function toAppropriateSlide() {\n        if (this.ltr) {\n          this.toNextSlide();\n        } else {\n          this.toPrevSlide();\n        }\n      }\n    }, {\n      key: \"registerChild\",\n      value: function registerChild(element) {\n        var _this3 = this;\n        (0, _runloop.schedule)('actions', this, function () {\n          _this3.children = [].concat(_toConsumableArray(_this3.children), [element]);\n        });\n      }\n    }, {\n      key: \"unregisterChild\",\n      value: function unregisterChild(element) {\n        var _this4 = this;\n        (0, _runloop.schedule)('actions', this, function () {\n          _this4.children = _this4.children.filter(function (value) {\n            return value !== element;\n          });\n        });\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"children\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"childSlidesObserver\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"childSlidesObserver\"), _class.prototype), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"currentIndex\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.index;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"directionalClassName\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"followingIndex\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"indexObserver\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"indexObserver\"), _class.prototype), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"isMouseHovering\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"orderClassName\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"presentationState\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"cycle\", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, \"cycle\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"transitioner\", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, \"transitioner\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"waitIntervalToInitCycle\", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, \"waitIntervalToInitCycle\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toSlide\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toSlide\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toNextSlide\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toNextSlide\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toPrevSlide\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toPrevSlide\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleMouseEnter\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleMouseEnter\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleMouseLeave\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleMouseLeave\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleKeyDown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleKeyDown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"registerChild\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"registerChild\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"unregisterChild\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"unregisterChild\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Carousel);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-carousel/slide\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/runloop\", \"ember-ref-bucket\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/destroyable\", \"@ember/template-factory\"], function (_exports, _component, _component2, _runloop, _emberRefBucket, _tracking, _object, _destroyable, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/runloop\",0,\"ember-ref-bucket\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/destroyable\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    class=\"carousel-item {{if this.active \"active\"}} {{if this.left (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"carousel-item-start\" \"carousel-item-left\")}} {{if this.next \"carousel-item-next\"}} {{if this.prev \"carousel-item-prev\"}} {{if this.right (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"carousel-item-end\" \"carousel-item-right\")}}\"\n    ...attributes\n    {{create-ref \"mainNode\"}}\n    {{did-update this.presentationStateObserver @presentationState @currentSlide}}\n  >\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"uQ88up8G\",\n    \"block\": \"[[[11,0],[16,0,[29,[\\\"carousel-item \\\",[52,[30,0,[\\\"active\\\"]],\\\"active\\\"],\\\" \\\",[52,[30,0,[\\\"left\\\"]],\\\"carousel-item-left\\\"],\\\" \\\",[52,[30,0,[\\\"next\\\"]],\\\"carousel-item-next\\\"],\\\" \\\",[52,[30,0,[\\\"prev\\\"]],\\\"carousel-item-prev\\\"],\\\" \\\",[52,[30,0,[\\\"right\\\"]],\\\"carousel-item-right\\\"]]]],[17,1],[4,[38,2],[\\\"mainNode\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[4,[38,3],[[30,0,[\\\"presentationStateObserver\\\"]],[30,2],[30,3]],null],[12],[1,\\\"\\\\n  \\\"],[18,4,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@presentationState\\\",\\\"@currentSlide\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"create-ref\\\",\\\"did-update\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-carousel/slide.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    A visible user-defined slide.\n  \n    See [Components.Carousel](Components.Carousel.html) for examples.\n  \n    @class CarouselSlide\n    @namespace Components\n    @extends Component\n    @public\n   */\n  var CarouselSlide = _exports.default = (_dec = (0, _emberRefBucket.ref)('mainNode'), _class = /*#__PURE__*/function (_Component) {\n    function CarouselSlide(owner, args) {\n      var _args$registerChild;\n      var _this;\n      _classCallCheck(this, CarouselSlide);\n      _this = _callSuper(this, CarouselSlide, [owner, args]);\n      /**\n       * @property _element\n       * @type null | HTMLElement\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_element\", _descriptor, _this);\n      /**\n       * Defines slide visibility.\n       *\n       * @property active\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"active\", _descriptor2, _this);\n      /**\n       * Slide is moving to the left.\n       *\n       * @property left\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"left\", _descriptor3, _this);\n      /**\n       * Next to appear in a left sliding.\n       *\n       * @property next\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"next\", _descriptor4, _this);\n      /**\n       * Next to appear in a right sliding.\n       *\n       * @property prev\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"prev\", _descriptor5, _this);\n      /**\n       * Slide is moving to the right.\n       *\n       * @property right\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"right\", _descriptor6, _this);\n      (_args$registerChild = args.registerChild) === null || _args$registerChild === void 0 || _args$registerChild.call(args, _this);\n      (0, _destroyable.registerDestructor)(_this, function () {\n        var _this$args$unregister, _this$args;\n        (_this$args$unregister = (_this$args = _this.args).unregisterChild) === null || _this$args$unregister === void 0 || _this$args$unregister.call(_this$args, _this);\n      });\n      return _this;\n    }\n\n    /**\n     * Coordinates the execution of a presentation.\n     *\n     * @method presentationStateObserver\n     * @private\n     */\n    _inherits(CarouselSlide, _Component);\n    return _createClass(CarouselSlide, [{\n      key: \"isCurrentSlide\",\n      get:\n      /**\n       * @private\n       * @property isCurrentSlide\n       * @type boolean\n       */\n      function get() {\n        return this.args.currentSlide === this;\n      }\n\n      /**\n       * @private\n       * @property isFollowingSlide\n       * @type boolean\n       */\n    }, {\n      key: \"isFollowingSlide\",\n      get: function get() {\n        return this.args.followingSlide === this;\n      }\n    }, {\n      key: \"presentationStateObserver\",\n      value: function presentationStateObserver() {\n        if (!this.active) {\n          this.active = this.isCurrentSlide && this.args.presentationState === null;\n        }\n        var presentationState = this.args.presentationState;\n        if (this.isCurrentSlide) {\n          switch (presentationState) {\n            case 'didTransition':\n              this.currentSlideDidTransition();\n              break;\n            case 'willTransit':\n              this.currentSlideWillTransit();\n              break;\n          }\n        }\n        if (this.isFollowingSlide) {\n          switch (presentationState) {\n            case 'didTransition':\n              this.followingSlideDidTransition();\n              break;\n            case 'willTransit':\n              this.followingSlideWillTransit();\n              break;\n          }\n        }\n      }\n\n      /**\n       * @method currentSlideDidTransition\n       * @private\n       */\n    }, {\n      key: \"currentSlideDidTransition\",\n      value: function currentSlideDidTransition() {\n        this[this.args.directionalClassName] = false;\n        this.active = false;\n      }\n\n      /**\n       * @method currentSlideWillTransit\n       * @private\n       */\n    }, {\n      key: \"currentSlideWillTransit\",\n      value: function currentSlideWillTransit() {\n        this.active = true;\n        (0, _runloop.next)(this, function () {\n          this[this.args.directionalClassName] = true;\n        });\n      }\n\n      /**\n       * @method followingSlideDidTransition\n       * @private\n       */\n    }, {\n      key: \"followingSlideDidTransition\",\n      value: function followingSlideDidTransition() {\n        this.active = true;\n        this[this.args.directionalClassName] = false;\n        this[this.args.orderClassName] = false;\n      }\n\n      /**\n       * @method followingSlideWillTransit\n       * @private\n       */\n    }, {\n      key: \"followingSlideWillTransit\",\n      value: function followingSlideWillTransit() {\n        var _this2 = this;\n        this[this.args.orderClassName] = true;\n        (0, _runloop.next)(this, function () {\n          _this2.reflow();\n          _this2[_this2.args.directionalClassName] = true;\n        });\n      }\n\n      /**\n       * Makes things more stable, especially when fast changing.\n       */\n    }, {\n      key: \"reflow\",\n      value: function reflow() {\n        this._element.offsetHeight;\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"active\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.isCurrentSlide && this.args.presentationState === null;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"left\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"next\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"prev\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"right\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"presentationStateObserver\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"presentationStateObserver\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CarouselSlide);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-collapse\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/utils\", \"@ember/runloop\", \"ember-bootstrap/utils/transition-end\", \"ember-ref-bucket\", \"ember-bootstrap/utils/decorators/arg\", \"@glimmer/tracking\", \"@ember/debug\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _utils, _runloop, _transitionEnd, _emberRefBucket, _arg, _tracking, _debug, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/utils\",0,\"@ember/runloop\",0,\"ember-bootstrap/utils/transition-end\",0,\"ember-ref-bucket\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@glimmer/tracking\",0,\"@ember/debug\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class=\"{{if this.collapse \"collapse\"}} {{if this.transitioning \"collapsing\"}} {{if this.showContent \"show\"}}\"\n    ...attributes\n    {{create-ref \"mainNode\"}}\n    {{style this.cssStyle}}\n    {{did-update this._onCollapsedChange this.collapsed}}\n    {{did-update this._updateCollapsedSize this.collapsedSize}}\n    {{did-update this._updateExpandedSize this.expandedSize}}\n  >\n    {{yield}}\n  </div>\n  \n  */\n  {\n    \"id\": \"Bd/rMHtK\",\n    \"block\": \"[[[11,0],[16,0,[29,[[52,[30,0,[\\\"collapse\\\"]],\\\"collapse\\\"],\\\" \\\",[52,[30,0,[\\\"transitioning\\\"]],\\\"collapsing\\\"],\\\" \\\",[52,[30,0,[\\\"showContent\\\"]],\\\"show\\\"]]]],[17,1],[4,[38,2],[\\\"mainNode\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[4,[38,3],[[30,0,[\\\"cssStyle\\\"]]],null],[4,[38,4],[[30,0,[\\\"_onCollapsedChange\\\"]],[30,0,[\\\"collapsed\\\"]]],null],[4,[38,4],[[30,0,[\\\"_updateCollapsedSize\\\"]],[30,0,[\\\"collapsedSize\\\"]]],null],[4,[38,4],[[30,0,[\\\"_updateExpandedSize\\\"]],[30,0,[\\\"expandedSize\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"create-ref\\\",\\\"style\\\",\\\"did-update\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-collapse.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n    An Ember component that mimics the behaviour of [Bootstrap's collapse.js plugin](http://getbootstrap.com/javascript/#collapse)\n  \n    ### Usage\n  \n    ```hbs\n    <BsCollapse @collapsed={{this.collapsed}}>\n      <div class=\"well\">\n        <h2>Collapse</h2>\n        <p>This is collapsible content</p>\n      </div>\n    </BsCollapse>\n    ```\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Collapse\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var Collapse = _exports.default = (_dec = (0, _emberRefBucket.ref)('mainNode'), _class = /*#__PURE__*/function (_Component) {\n    function Collapse() {\n      var _this;\n      _classCallCheck(this, Collapse);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Collapse, [].concat(args));\n      /**\n       * @property _element\n       * @type null | HTMLElement\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_element\", _descriptor, _this);\n      /**\n       * Collapsed/expanded state\n       *\n       * @property collapsed\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"collapsed\", _descriptor2, _this);\n      /**\n       * True if this item is expanded\n       *\n       * @property active\n       * @private\n       */\n      _defineProperty(_this, \"active\", !_this.collapsed);\n      /**\n       * true if the component is currently transitioning\n       *\n       * @property transitioning\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"transitioning\", _descriptor3, _this);\n      /**\n       * The size of the element when collapsed. Defaults to 0.\n       *\n       * @property collapsedSize\n       * @type number\n       * @default 0\n       * @public\n       */\n      _initializerDefineProperty(_this, \"collapsedSize\", _descriptor4, _this);\n      /**\n       * The size of the element when expanded. When null the value is calculated automatically to fit the containing elements.\n       *\n       * @property expandedSize\n       * @type number\n       * @default null\n       * @public\n       */\n      _initializerDefineProperty(_this, \"expandedSize\", _descriptor5, _this);\n      /**\n       * Usually the size (height) of the element is only set while transitioning, and reseted afterwards. Set to true to always set a size.\n       *\n       * @property resetSizeWhenNotCollapsing\n       * @type boolean\n       * @default true\n       * @private\n       */\n      _defineProperty(_this, \"resetSizeWhenNotCollapsing\", true);\n      /**\n       * The direction (height/width) of the collapse animation.\n       * When setting this to 'width' you should also define custom CSS transitions for the width property, as the Bootstrap\n       * CSS does only support collapsible elements for the height direction.\n       *\n       * @property collapseDimension\n       * @type string\n       * @default 'height'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"collapseDimension\", _descriptor6, _this);\n      /**\n       * The duration of the fade transition\n       *\n       * @property transitionDuration\n       * @type number\n       * @default 350\n       * @public\n       */\n      _initializerDefineProperty(_this, \"transitionDuration\", _descriptor7, _this);\n      _initializerDefineProperty(_this, \"collapseSize\", _descriptor8, _this);\n      return _this;\n    }\n    _inherits(Collapse, _Component);\n    return _createClass(Collapse, [{\n      key: \"collapse\",\n      get: function get() {\n        return !this.transitioning;\n      }\n    }, {\n      key: \"showContent\",\n      get: function get() {\n        return this.collapse && this.active;\n      }\n    }, {\n      key: \"cssStyle\",\n      get:\n      /**\n       * Calculates a hash for style attribute.\n       */\n      function get() {\n        if ((0, _utils.isNone)(this.collapseSize)) {\n          return {};\n        }\n        return _defineProperty({}, this.collapseDimension, \"\".concat(this.collapseSize, \"px\"));\n      }\n    }, {\n      key: \"show\",\n      value:\n      /**\n       * The action to be sent when the element is about to be hidden.\n       *\n       * @event onHide\n       * @public\n       */\n\n      /**\n       * The action to be sent after the element has been completely hidden (including the CSS transition).\n       *\n       * @event onHidden\n       * @public\n       */\n\n      /**\n       * The action to be sent when the element is about to be shown.\n       *\n       * @event onShow\n       * @public\n       */\n\n      /**\n       * The action to be sent after the element has been completely shown (including the CSS transition).\n       *\n       * @event onShown\n       * @public\n       */\n\n      /**\n       * Triggers the show transition\n       *\n       * @method show\n       * @protected\n       */\n      function show() {\n        var _this$args$onShow,\n          _this$args,\n          _this2 = this;\n        (true && !(this._element) && (0, _debug.assert)('Reference to collapse div element exists.', this._element));\n        (_this$args$onShow = (_this$args = this.args).onShow) === null || _this$args$onShow === void 0 || _this$args$onShow.call(_this$args);\n        this.transitioning = true;\n        this.active = true;\n        this.collapseSize = this.collapsedSize;\n        (0, _transitionEnd.default)(this._element, this.transitionDuration).then(function () {\n          var _this2$args$onShown, _this2$args;\n          if (_this2.isDestroyed) {\n            return;\n          }\n          _this2.transitioning = false;\n          if (_this2.resetSizeWhenNotCollapsing) {\n            _this2.collapseSize = null;\n          }\n          (_this2$args$onShown = (_this2$args = _this2.args).onShown) === null || _this2$args$onShown === void 0 || _this2$args$onShown.call(_this2$args);\n        });\n        (0, _runloop.next)(this, function () {\n          if (!this.isDestroyed) {\n            this.collapseSize = this.getExpandedSize('show');\n          }\n        });\n      }\n\n      /**\n       * Get the size of the element when expanded\n       *\n       * @method getExpandedSize\n       * @param action\n       * @return {Number}\n       * @private\n       */\n    }, {\n      key: \"getExpandedSize\",\n      value: function getExpandedSize(action) {\n        (true && !(this._element) && (0, _debug.assert)('Reference to collapse div element exists.', this._element));\n        var expandedSize = this.expandedSize;\n        if (expandedSize != null) {\n          return expandedSize;\n        }\n        var collapseElement = this._element;\n        var prefix = action === 'show' ? 'scroll' : 'offset';\n        var measureProperty = \"\".concat(prefix).concat(this.collapseDimension.substring(0, 1).toUpperCase()).concat(this.collapseDimension.substring(1));\n        return collapseElement[measureProperty];\n      }\n\n      /**\n       * Triggers the hide transition\n       *\n       * @method hide\n       * @protected\n       */\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var _this$args$onHide,\n          _this$args2,\n          _this3 = this;\n        (true && !(this._element) && (0, _debug.assert)('Reference to collapse div element exists.', this._element));\n        (_this$args$onHide = (_this$args2 = this.args).onHide) === null || _this$args$onHide === void 0 || _this$args$onHide.call(_this$args2);\n        this.transitioning = true;\n        this.active = false;\n        this.collapseSize = this.getExpandedSize('hide');\n        (0, _transitionEnd.default)(this._element, this.transitionDuration).then(function () {\n          var _this3$args$onHidden, _this3$args;\n          if (_this3.isDestroyed) {\n            return;\n          }\n          _this3.transitioning = false;\n          if (_this3.resetSizeWhenNotCollapsing) {\n            _this3.collapseSize = null;\n          }\n          (_this3$args$onHidden = (_this3$args = _this3.args).onHidden) === null || _this3$args$onHidden === void 0 || _this3$args$onHidden.call(_this3$args);\n        });\n        (0, _runloop.next)(this, function () {\n          if (!this.isDestroyed) {\n            this.collapseSize = this.collapsedSize;\n          }\n        });\n      }\n    }, {\n      key: \"_onCollapsedChange\",\n      value: function _onCollapsedChange() {\n        var collapsed = this.collapsed;\n        var active = this.active;\n        if (collapsed !== active) {\n          return;\n        }\n        if (collapsed === false) {\n          this.show();\n        } else {\n          this.hide();\n        }\n      }\n    }, {\n      key: \"_updateCollapsedSize\",\n      value: function _updateCollapsedSize() {\n        if (!this.resetSizeWhenNotCollapsing && this.collapsed && !this.transitioning) {\n          this.collapseSize = this.collapsedSize;\n        }\n      }\n    }, {\n      key: \"_updateExpandedSize\",\n      value: function _updateExpandedSize() {\n        if (!this.resetSizeWhenNotCollapsing && !this.collapsed && !this.transitioning) {\n          this.collapseSize = this.expandedSize;\n        }\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"collapsed\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"transitioning\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"collapsedSize\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 0;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"expandedSize\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"collapseDimension\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'height';\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"transitionDuration\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 350;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"collapseSize\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"_onCollapsedChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_onCollapsedChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"_updateCollapsedSize\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_updateCollapsedSize\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"_updateExpandedSize\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_updateExpandedSize\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Collapse);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-contextual-help\", [\"exports\", \"@glimmer/component\", \"@ember/array\", \"@ember/object\", \"@ember/runloop\", \"ember-bootstrap/utils/transition-end\", \"ember-bootstrap/utils/dom\", \"ember-bootstrap/utils/decorators/uses-transition\", \"@ember/debug\", \"ember\", \"ember-bootstrap/utils/decorators/arg\", \"@glimmer/tracking\", \"ember-ref-bucket\"], function (_exports, _component, _array, _object, _runloop, _transitionEnd, _dom, _usesTransition, _debug, _ember, _arg, _tracking, _emberRefBucket) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/array\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"ember-bootstrap/utils/transition-end\",0,\"ember-bootstrap/utils/dom\",0,\"ember-bootstrap/utils/decorators/uses-transition\",0,\"@ember/debug\",0,\"ember\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@glimmer/tracking\",0,\"ember-ref-bucket\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var HOVERSTATE_NONE = 'none';\n  var HOVERSTATE_IN = 'in';\n  var HOVERSTATE_OUT = 'out';\n  function noop() {}\n\n  /**\n    @class ContextualHelp\n    @namespace Components\n    @extends Glimmer.Component\n    @private\n  */\n  var ContextualHelp = _exports.default = (_dec = (0, _usesTransition.default)('fade'), _dec2 = (0, _emberRefBucket.ref)('overlayElement'), _class = /*#__PURE__*/function (_Component) {\n    function ContextualHelp() {\n      var _this;\n      _classCallCheck(this, ContextualHelp);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, ContextualHelp, [].concat(args));\n      /**\n       * @property title\n       * @type string\n       * @public\n       */\n      /**\n       * How to position the tooltip/popover - top | bottom | left | right\n       *\n       * @property title\n       * @type string\n       * @default 'top'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"placement\", _descriptor, _this);\n      /**\n       * By default it will dynamically reorient the tooltip/popover based on the available space in the viewport. For\n       * example, if `placement` is \"left\", the tooltip/popover will display to the left when possible, otherwise it will\n       * display right. Set to `false` to force placement according to the `placement` property\n       *\n       * @property autoPlacement\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"autoPlacement\", _descriptor2, _this);\n      /**\n       * You can programmatically show the tooltip/popover by setting this to `true`\n       *\n       * @property visible\n       * @type boolean\n       * @default false\n       * @public\n       */\n      _initializerDefineProperty(_this, \"visible\", _descriptor3, _this);\n      /**\n       * @property inDom\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_inDom\", _descriptor4, _this);\n      /**\n       * Set to false to disable fade animations.\n       *\n       * @property fade\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"fade\", _descriptor5, _this);\n      /**\n       * Used to apply Bootstrap's visibility class\n       *\n       * @property showHelp\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"showHelp\", _descriptor6, _this);\n      /**\n       * Delay showing and hiding the tooltip/popover (ms). Individual delays for showing and hiding can be specified by using the\n       * `delayShow` and `delayHide` properties.\n       *\n       * @property delay\n       * @type number\n       * @default 0\n       * @public\n       */\n      _initializerDefineProperty(_this, \"delay\", _descriptor7, _this);\n      /**\n       * Delay showing the tooltip/popover. This property overrides the general delay set with the `delay` property.\n       *\n       * @property delayShow\n       * @type number\n       * @default 0\n       * @public\n       */\n      _initializerDefineProperty(_this, \"delayShow\", _descriptor8, _this);\n      /**\n       * Delay hiding the tooltip/popover. This property overrides the general delay set with the `delay` property.\n       *\n       * @property delayHide\n       * @type number\n       * @default 0\n       * @public\n       */\n      _initializerDefineProperty(_this, \"delayHide\", _descriptor9, _this);\n      /**\n       * The duration of the fade transition\n       *\n       * @property transitionDuration\n       * @type number\n       * @default 150\n       * @public\n       */\n      _initializerDefineProperty(_this, \"transitionDuration\", _descriptor10, _this);\n      /**\n       * Keeps the tooltip/popover within the bounds of this element when `autoPlacement` is true. Can be any valid CSS selector.\n       *\n       * @property viewportSelector\n       * @type string\n       * @default 'body'\n       * @see viewportPadding\n       * @see autoPlacement\n       * @public\n       */\n      _initializerDefineProperty(_this, \"viewportSelector\", _descriptor11, _this);\n      /**\n       * Take a padding into account for keeping the tooltip/popover within the bounds of the element given by `viewportSelector`.\n       *\n       * @property viewportPadding\n       * @type number\n       * @default 0\n       * @see viewportSelector\n       * @see autoPlacement\n       * @public\n       */\n      _initializerDefineProperty(_this, \"viewportPadding\", _descriptor12, _this);\n      _defineProperty(_this, \"_parentFinder\", self.document ? self.document.createTextNode('') : '');\n      /**\n       * The DOM element that triggers the tooltip/popover. By default it is the parent element of this component.\n       * You can set this to any CSS selector to have any other element trigger the tooltip/popover.\n       *\n       * @property triggerElement\n       * @type string | null\n       * @public\n       */\n      _initializerDefineProperty(_this, \"triggerElement\", _descriptor13, _this);\n      /**\n       * The event(s) that should trigger the tooltip/popover - click | hover | focus.\n       * You can set this to a single event or multiple events, given as an array or a string separated by spaces.\n       *\n       * @property triggerEvents\n       * @type array|string\n       * @default 'hover focus'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"triggerEvents\", _descriptor14, _this);\n      /**\n       * Current hover state, 'in', 'out' or null\n       *\n       * @property hoverState\n       * @type number\n       * @private\n       */\n      _defineProperty(_this, \"hoverState\", HOVERSTATE_NONE);\n      /**\n       * Current state for events\n       */\n      _defineProperty(_this, \"hover\", false);\n      _defineProperty(_this, \"focus\", false);\n      _defineProperty(_this, \"click\", false);\n      /**\n       * Ember.run timer\n       *\n       * @property timer\n       * @private\n       */\n      _defineProperty(_this, \"timer\", null);\n      /**\n       * Use CSS transitions?\n       *\n       * @property usesTransition\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"usesTransition\", _descriptor15, _this);\n      /**\n       * The DOM element of the overlay element.\n       *\n       * @property overlayElement\n       * @type object\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"overlayElement\", _descriptor16, _this);\n      return _this;\n    }\n    _inherits(ContextualHelp, _Component);\n    return _createClass(ContextualHelp, [{\n      key: \"inDom\",\n      get: function get() {\n        var _this$_inDom;\n        return (_this$_inDom = this._inDom) !== null && _this$_inDom !== void 0 ? _this$_inDom : !!(this.visible && this.triggerTargetElement);\n      },\n      set: function set(value) {\n        if (this._inDom === value) {\n          return;\n        }\n        this._inDom = value;\n      }\n    }, {\n      key: \"destinationElement\",\n      get:\n      /**\n       * The DOM element of the arrow element.\n       *\n       * @property arrowElement\n       * @type object\n       * @readonly\n       * @private\n       */\n\n      /**\n       * The wormhole destinationElement\n       *\n       * @property destinationElement\n       * @type object\n       * @readonly\n       * @private\n       */\n      function get() {\n        return (0, _dom.getDestinationElement)(this);\n      }\n\n      /**\n       * The DOM element of the viewport element.\n       *\n       * @property viewportElement\n       * @type object\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"viewportElement\",\n      get: function get() {\n        return document.querySelector(this.viewportSelector);\n      }\n    }, {\n      key: \"getTriggerTargetElement\",\n      value:\n      /**\n       * @method getTriggerTargetElement\n       * @private\n       */\n      function getTriggerTargetElement() {\n        var triggerElement = this.triggerElement;\n        var el;\n        if (!triggerElement) {\n          el = this._parent;\n        } else {\n          el = document.querySelector(triggerElement);\n        }\n        (true && !(el) && (0, _debug.assert)('Could not find trigger element for tooltip/popover component', el));\n        return el;\n      }\n    }, {\n      key: \"_triggerEvents\",\n      get: function get() {\n        var events = this.triggerEvents;\n        if (!(0, _array.isArray)(events)) {\n          events = events.split(' ');\n        }\n        return events.map(function (event) {\n          switch (event) {\n            case 'hover':\n              return ['mouseenter', 'mouseleave'];\n            case 'focus':\n              return ['focusin', 'focusout'];\n            default:\n              return event;\n          }\n        });\n      }\n\n      /**\n       * If true component will render in place, rather than be wormholed.\n       *\n       * @property renderInPlace\n       * @type boolean\n       * @default false\n       * @public\n       */\n\n      /**\n       * @property _renderInPlace\n       * @type boolean\n       * @private\n       */\n    }, {\n      key: \"_renderInPlace\",\n      get: function get() {\n        return this.args.renderInPlace || !this.destinationElement;\n      }\n    }, {\n      key: \"shouldShowHelp\",\n      get: function get() {\n        return this.hover || this.focus || this.click;\n      }\n    }, {\n      key: \"enter\",\n      value:\n      /**\n       * This action is called immediately when the tooltip/popover is about to be shown.\n       *\n       * @event onShow\n       * @public\n       */\n\n      /**\n       * This action will be called when the tooltip/popover has been made visible to the user (will wait for CSS transitions to complete).\n       *\n       * @event onShown\n       * @public\n       */\n\n      /**\n       * This action is called immediately when the tooltip/popover is about to be hidden.\n       *\n       * @event onHide\n       * @public\n       */\n\n      /**\n       * This action is called when the tooltip/popover has finished being hidden from the user (will wait for CSS transitions to complete).\n       *\n       * @event onHidden\n       * @public\n       */\n\n      /**\n       * Called when a show event has been received\n       *\n       * @method enter\n       * @param e\n       * @private\n       */\n      function enter(e) {\n        if (e) {\n          var eventType = e.type === 'focusin' ? 'focus' : 'hover';\n          this[eventType] = true;\n        }\n        if (this.showHelp || this.hoverState === HOVERSTATE_IN) {\n          this.hoverState = HOVERSTATE_IN;\n          return;\n        }\n        (0, _runloop.cancel)(this.timer);\n        this.hoverState = HOVERSTATE_IN;\n        if (!this.delayShow) {\n          return this.show();\n        }\n        this.timer = (0, _runloop.later)(this, function () {\n          if (this.hoverState === HOVERSTATE_IN) {\n            this.show();\n          }\n        }, this.delayShow);\n      }\n\n      /**\n       * Called when a hide event has been received\n       *\n       * @method leave\n       * @param e\n       * @private\n       */\n    }, {\n      key: \"leave\",\n      value: function leave(e) {\n        var _this2 = this;\n        if (e) {\n          var eventType = e.type === 'focusout' ? 'focus' : 'hover';\n          this[eventType] = false;\n        }\n        if (this.shouldShowHelp) {\n          return;\n        }\n        (0, _runloop.cancel)(this.timer);\n        this.hoverState = HOVERSTATE_OUT;\n        if (!this.delayHide) {\n          return this.hide();\n        }\n        this.timer = (0, _runloop.later)(function () {\n          if (_this2.hoverState === HOVERSTATE_OUT) {\n            _this2.hide();\n          }\n        }, this.delayHide);\n      }\n\n      /**\n       * Called for a click event\n       *\n       * @method toggle\n       * @private\n       */\n    }, {\n      key: \"toggle\",\n      value: function toggle() {\n        this.click = !this.click;\n        if (this.shouldShowHelp) {\n          this.enter();\n        } else {\n          this.leave();\n        }\n      }\n\n      /**\n       * Show the tooltip/popover\n       *\n       * @method show\n       * @private\n       */\n    }, {\n      key: \"show\",\n      value: function show() {\n        var _this$args$onShow, _this$args;\n        if (this.isDestroyed || this.isDestroying) {\n          return;\n        }\n        if (false === ((_this$args$onShow = (_this$args = this.args).onShow) === null || _this$args$onShow === void 0 ? void 0 : _this$args$onShow.call(_this$args, this))) {\n          return;\n        }\n        this.inDom = true;\n        (0, _runloop.schedule)('afterRender', this, this._show);\n      }\n    }, {\n      key: \"_show\",\n      value: function _show() {\n        var _this3 = this;\n        var skipTransition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n        if (this.isDestroyed || this.isDestroying) {\n          return;\n        }\n        this.showHelp = true;\n\n        // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        // See https://github.com/twbs/bootstrap/pull/22481\n        if ('ontouchstart' in document.documentElement) {\n          var children = document.body.children;\n          for (var i = 0; i < children.length; i++) {\n            children[i].addEventListener('mouseover', noop);\n          }\n        }\n        var tooltipShowComplete = function tooltipShowComplete() {\n          var _this3$args$onShown, _this3$args;\n          if (_this3.isDestroyed) {\n            return;\n          }\n          var prevHoverState = _this3.hoverState;\n          (_this3$args$onShown = (_this3$args = _this3.args).onShown) === null || _this3$args$onShown === void 0 || _this3$args$onShown.call(_this3$args, _this3);\n          _this3.hoverState = HOVERSTATE_NONE;\n          if (prevHoverState === HOVERSTATE_OUT) {\n            _this3.leave();\n          }\n        };\n        if (skipTransition === false && this.usesTransition) {\n          (0, _transitionEnd.default)(this.overlayElement, this.transitionDuration).then(tooltipShowComplete);\n        } else {\n          tooltipShowComplete();\n        }\n      }\n\n      /**\n       * Position the tooltip/popover's arrow\n       *\n       * @method replaceArrow\n       * @param delta\n       * @param dimension\n       * @param isVertical\n       * @private\n       */\n    }, {\n      key: \"replaceArrow\",\n      value: function replaceArrow(delta, dimension, isVertical) {\n        var el = this.arrowElement;\n        el.style[isVertical ? 'left' : 'top'] = \"\".concat(50 * (1 - delta / dimension), \"%\");\n        el.style[isVertical ? 'top' : 'left'] = null;\n      }\n\n      /**\n       * Hide the tooltip/popover\n       *\n       * @method hide\n       * @private\n       */\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var _this$args$onHide,\n          _this$args2,\n          _this4 = this;\n        if (this.isDestroyed) {\n          return;\n        }\n        if (false === ((_this$args$onHide = (_this$args2 = this.args).onHide) === null || _this$args$onHide === void 0 ? void 0 : _this$args$onHide.call(_this$args2, this))) {\n          return;\n        }\n        var tooltipHideComplete = function tooltipHideComplete() {\n          var _this4$args$onHidden, _this4$args;\n          if (_this4.isDestroyed) {\n            return;\n          }\n          if (_this4.hoverState !== HOVERSTATE_IN) {\n            _this4.inDom = false;\n          }\n          (_this4$args$onHidden = (_this4$args = _this4.args).onHidden) === null || _this4$args$onHidden === void 0 || _this4$args$onHidden.call(_this4$args, _this4);\n        };\n        this.showHelp = false;\n\n        // if this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n        if ('ontouchstart' in document.documentElement) {\n          var children = document.body.children;\n          for (var i = 0; i < children.length; i++) {\n            children[i].removeEventListener('mouseover', noop);\n          }\n        }\n        if (this.usesTransition) {\n          (0, _transitionEnd.default)(this.overlayElement, this.transitionDuration).then(tooltipHideComplete);\n        } else {\n          tooltipHideComplete();\n        }\n        this.hoverState = HOVERSTATE_NONE;\n      }\n\n      /**\n       * @method addListeners\n       * @private\n       */\n    }, {\n      key: \"addListeners\",\n      value: function addListeners() {\n        var _this5 = this;\n        var target = this.triggerTargetElement;\n        this._triggerEvents.forEach(function (event) {\n          if ((0, _array.isArray)(event)) {\n            var _event = _slicedToArray(event, 2),\n              inEvent = _event[0],\n              outEvent = _event[1];\n            target.addEventListener(inEvent, _this5._handleEnter);\n            target.addEventListener(outEvent, _this5._handleLeave);\n          } else {\n            target.addEventListener(event, _this5._handleToggle);\n          }\n        });\n      }\n\n      /**\n       * @method removeListeners\n       * @private\n       */\n    }, {\n      key: \"removeListeners\",\n      value: function removeListeners() {\n        var _this6 = this;\n        try {\n          var target = this.triggerTargetElement;\n          this._triggerEvents.forEach(function (event) {\n            if ((0, _array.isArray)(event)) {\n              var _event2 = _slicedToArray(event, 2),\n                inEvent = _event2[0],\n                outEvent = _event2[1];\n              target.removeEventListener(inEvent, _this6._handleEnter);\n              target.removeEventListener(outEvent, _this6._handleLeave);\n            } else {\n              target.removeEventListener(event, _this6._handleToggle);\n            }\n          });\n        } catch (e) {} // eslint-disable-line no-empty\n      }\n\n      /**\n       * @method handleTriggerEvent\n       * @private\n       */\n    }, {\n      key: \"handleTriggerEvent\",\n      value: function handleTriggerEvent(handler, e) {\n        var overlayElement = this.overlayElement;\n        if (overlayElement && overlayElement.contains(e.target)) {\n          return;\n        }\n        return handler.call(this, e);\n      }\n    }, {\n      key: \"_handleEnter\",\n      value: function _handleEnter(e) {\n        this.handleTriggerEvent(this.enter, e);\n      }\n    }, {\n      key: \"_handleLeave\",\n      value: function _handleLeave(e) {\n        this.handleTriggerEvent(this.leave, e);\n      }\n    }, {\n      key: \"_handleToggle\",\n      value: function _handleToggle(e) {\n        this.handleTriggerEvent(this.toggle, e);\n      }\n    }, {\n      key: \"close\",\n      value: function close() {\n        // Make sure our click state is off, otherwise the next click would\n        // close the already-closed tooltip/popover. We don't need to worry\n        // about this for hover/focus because those aren't \"stateful\" toggle\n        // events like click.\n        this.click = false;\n        this.hide();\n      }\n    }, {\n      key: \"setup\",\n      value: function setup() {\n        var _this7 = this;\n        if (typeof FastBoot !== 'undefined') {\n          // ember-render-helpers calls this also in FastBoot, so guard against this\n          return;\n        }\n        var parent = this._parentFinder.parentNode;\n        // In the rare case of using FastBoot w/ rehydration, the parent finder TextNode rendered by FastBoot will be reused,\n        // so our own instance on the component is not rendered, only exists here as detached from DOM and thus has no parent.\n        // In this case we try to use Ember's private API as a fallback.\n        // Related: https://github.com/emberjs/rfcs/issues/168\n        if (!parent) {\n          try {\n            parent = _ember.default.ViewUtils.getViewBounds(this).parentElement;\n          } catch (e) {\n            // we catch the possibly broken private API call, the component can still work if the trigger element is defined\n            // using a CSS selector.\n          }\n        }\n        this._parent = parent;\n\n        // Look for target element after rendering has finished, in case the target DOM element is rendered *after* us\n        // see https://github.com/kaliber5/ember-bootstrap/issues/1329\n        (0, _runloop.schedule)('afterRender', function () {\n          _this7.triggerTargetElement = _this7.getTriggerTargetElement();\n          _this7.addListeners();\n          if (_this7.visible) {\n            (0, _runloop.next)(_this7, _this7.show);\n          }\n        });\n      }\n    }, {\n      key: \"showOrHide\",\n      value: function showOrHide() {\n        if (this.args.visible) {\n          (0, _runloop.next)(this, this.show);\n        } else {\n          (0, _runloop.next)(this, this.hide);\n        }\n      }\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        _superPropGet(ContextualHelp, \"willDestroy\", this, 3)(arguments);\n        this.removeListeners();\n      }\n    }]);\n  }(_component.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"placement\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'top';\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"autoPlacement\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"visible\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"_inDom\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"fade\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"showHelp\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.visible;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"delay\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 0;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"delayShow\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      var _this$args$delay;\n      return (_this$args$delay = this.args.delay) !== null && _this$args$delay !== void 0 ? _this$args$delay : 0;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"delayHide\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      var _this$args$delay2;\n      return (_this$args$delay2 = this.args.delay) !== null && _this$args$delay2 !== void 0 ? _this$args$delay2 : 0;\n    }\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"transitionDuration\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 150;\n    }\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"viewportSelector\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'body';\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"viewportPadding\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 0;\n    }\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"triggerElement\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"triggerEvents\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'hover focus';\n    }\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"usesTransition\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"overlayElement\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"_handleEnter\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_handleEnter\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"_handleLeave\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_handleLeave\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"_handleToggle\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_handleToggle\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"close\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"close\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setup\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setup\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"showOrHide\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"showOrHide\"), _class.prototype), _class);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-contextual-help/element\", [\"exports\", \"@ember/object\", \"@glimmer/component\", \"ember-bootstrap/utils/decorators/arg\", \"@glimmer/tracking\", \"ember-ref-bucket\"], function (_exports, _object, _component, _arg, _tracking, _emberRefBucket) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@glimmer/tracking\",0,\"@embroider/macros\",0,\"ember-ref-bucket\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   Internal (abstract) component for contextual help markup. Should not be used directly.\n  \n   @class ContextualHelpElement\n   @namespace Components\n   @extends Glimmer.Component\n   @private\n   */\n  var ContextualHelpElement = _exports.default = (_dec = (0, _emberRefBucket.trackedRef)('popperElement'), _class = /*#__PURE__*/function (_Component) {\n    function ContextualHelpElement() {\n      var _this;\n      _classCallCheck(this, ContextualHelpElement);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, ContextualHelpElement, [].concat(args));\n      /**\n       * @property placement\n       * @type string\n       * @default 'top'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"placement\", _descriptor, _this);\n      _initializerDefineProperty(_this, \"actualPlacement\", _descriptor2, _this);\n      /**\n       * @property fade\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"fade\", _descriptor3, _this);\n      /**\n       * @property showHelp\n       * @type boolean\n       * @default false\n       * @public\n       */\n      _initializerDefineProperty(_this, \"showHelp\", _descriptor4, _this);\n      /**\n       * If true component will render in place, rather than be wormholed.\n       *\n       * @property renderInPlace\n       * @type boolean\n       * @default true\n       * @public\n       */\n      /**\n       * Which element to align to\n       *\n       * @property popperTarget\n       * @type {string|HTMLElement}\n       * @public\n       */\n      /**\n       * @property autoPlacement\n       * @type boolean\n       * @default true\n       * @public\n       */\n      /**\n       * The DOM element of the viewport element.\n       *\n       * @property viewportElement\n       * @type object\n       * @public\n       */\n      /**\n       * Take a padding into account for keeping the tooltip/popover within the bounds of the element given by `viewportElement`.\n       *\n       * @property viewportPadding\n       * @type number\n       * @default 0\n       * @public\n       */\n      /**\n       * @property arrowClass\n       * @private\n       */\n      _defineProperty(_this, \"arrowClass\", 'arrow');\n      _defineProperty(_this, \"placementClassPrefix\", '');\n      _defineProperty(_this, \"offset\", [0, 0]);\n      _initializerDefineProperty(_this, \"popperElement\", _descriptor5, _this);\n      return _this;\n    }\n    _inherits(ContextualHelpElement, _Component);\n    return _createClass(ContextualHelpElement, [{\n      key: \"popperOptions\",\n      get:\n      /**\n       * popper.js modifier config\n       *\n       * @property popperModifiers\n       * @type {object}\n       * @private\n       */\n      function get() {\n        var options = {\n          placement: this.placement,\n          onFirstUpdate: this.updatePlacement\n        };\n\n        // We need popperElement, so we wait for this getter to recompute once it's available\n        if (!this.popperElement) {\n          return options;\n        }\n        options.modifiers = [{\n          name: 'arrow',\n          options: {\n            element: this.popperElement.querySelector(\".\".concat(this.arrowClass)),\n            padding: 4\n          }\n        }, {\n          name: 'offset',\n          options: {\n            offset: this.offset\n          }\n        }, {\n          name: 'preventOverflow',\n          enabled: this.args.autoPlacement,\n          options: {\n            boundary: this.args.viewportElement,\n            padding: this.args.viewportPadding\n          }\n        }, {\n          name: 'flip',\n          enabled: this.args.autoPlacement\n        }, {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: this.updatePlacement\n        }];\n        return options;\n      }\n    }, {\n      key: \"actualPlacementClass\",\n      get: function get() {\n        var ending = this.actualPlacement;\n        return this.placementClassPrefix + ending;\n      }\n    }, {\n      key: \"updatePlacement\",\n      value: function updatePlacement(state) {\n        var _state$state;\n        // normalize argument\n        state = (_state$state = state.state) !== null && _state$state !== void 0 ? _state$state : state;\n        if (this.actualPlacement === state.placement) {\n          return;\n        }\n        this.actualPlacement = state.placement;\n      }\n    }]);\n  }(_component.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"placement\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'top';\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"actualPlacement\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.args.placement;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"fade\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"showHelp\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"popperElement\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"updatePlacement\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updatePlacement\"), _class.prototype), _class);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-dropdown\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/debug\", \"@glimmer/tracking\", \"@ember/runloop\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _debug, _tracking, _runloop, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/debug\",0,\"@embroider/macros\",0,\"@glimmer/tracking\",0,\"@ember/runloop\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#let (element this.htmlTag) as |Tag|}}\n    <Tag\n      class=\"{{this.containerClass}}\n        {{if this.inNav \"nav-item\"}}\n        {{if this.isOpen \"show\"}}\"\n      ...attributes\n      {{did-update this.updateIsOpen @open}}\n    >\n      {{yield\n        (hash\n          button=(component (ensure-safe-component (bs-default @buttonComponent (component \"bs-dropdown/button\")))\n            isOpen=this.isOpen\n            onClick=this.toggleDropdown\n            onKeyDown=this.handleKeyEvent\n            registerChildElement=this.registerChildElement\n            unregisterChildElement=this.unregisterChildElement\n          )\n          toggle=(component (ensure-safe-component (bs-default @toggleComponent (component \"bs-dropdown/toggle\")))\n            isOpen=this.isOpen\n            inNav=@inNav\n            onClick=this.toggleDropdown\n            onKeyDown=this.handleKeyEvent\n            registerChildElement=this.registerChildElement\n            unregisterChildElement=this.unregisterChildElement\n          )\n          menu=(component (ensure-safe-component (bs-default @menuComponent (component \"bs-dropdown/menu\")))\n            isOpen=this.isOpen\n            inNav=@inNav\n            direction=this.direction\n            toggleElement=this.toggleElement\n            registerChildElement=this.registerChildElement\n            unregisterChildElement=this.unregisterChildElement\n          )\n          toggleDropdown=this.toggleDropdown\n          openDropdown=this.openDropdown\n          closeDropdown=this.closeDropdown\n          isOpen=this.isOpen\n        )\n      }}\n      {{#if this.isOpen}}\n        {{on-document \"keydown\" this.handleKeyEvent}}\n        {{on-document \"click\" this.closeHandler capture=true}}\n        {{on-document \"keyup\" this.closeHandler}}\n      {{/if}}\n  \n    </Tag>\n  {{/let}}\n  */\n  {\n    \"id\": \"cC1Fwavo\",\n    \"block\": \"[[[44,[[28,[37,1],[[30,0,[\\\"htmlTag\\\"]]],null]],[[[1,\\\"  \\\"],[8,[30,1],[[16,0,[29,[[30,0,[\\\"containerClass\\\"]],\\\"\\\\n      \\\",[52,[30,0,[\\\"inNav\\\"]],\\\"nav-item\\\"],\\\"\\\\n      \\\",[52,[30,0,[\\\"isOpen\\\"]],\\\"show\\\"]]]],[17,2],[4,[38,3],[[30,0,[\\\"updateIsOpen\\\"]],[30,3]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,8,[[28,[37,5],null,[[\\\"button\\\",\\\"toggle\\\",\\\"menu\\\",\\\"toggleDropdown\\\",\\\"openDropdown\\\",\\\"closeDropdown\\\",\\\"isOpen\\\"],[[50,[28,[37,7],[[28,[37,8],[[30,4],[50,\\\"bs-dropdown/button\\\",0,null,null]],null]],null],0,null,[[\\\"isOpen\\\",\\\"onClick\\\",\\\"onKeyDown\\\",\\\"registerChildElement\\\",\\\"unregisterChildElement\\\"],[[30,0,[\\\"isOpen\\\"]],[30,0,[\\\"toggleDropdown\\\"]],[30,0,[\\\"handleKeyEvent\\\"]],[30,0,[\\\"registerChildElement\\\"]],[30,0,[\\\"unregisterChildElement\\\"]]]]],[50,[28,[37,7],[[28,[37,8],[[30,5],[50,\\\"bs-dropdown/toggle\\\",0,null,null]],null]],null],0,null,[[\\\"isOpen\\\",\\\"inNav\\\",\\\"onClick\\\",\\\"onKeyDown\\\",\\\"registerChildElement\\\",\\\"unregisterChildElement\\\"],[[30,0,[\\\"isOpen\\\"]],[30,6],[30,0,[\\\"toggleDropdown\\\"]],[30,0,[\\\"handleKeyEvent\\\"]],[30,0,[\\\"registerChildElement\\\"]],[30,0,[\\\"unregisterChildElement\\\"]]]]],[50,[28,[37,7],[[28,[37,8],[[30,7],[50,\\\"bs-dropdown/menu\\\",0,null,null]],null]],null],0,null,[[\\\"isOpen\\\",\\\"inNav\\\",\\\"direction\\\",\\\"toggleElement\\\",\\\"registerChildElement\\\",\\\"unregisterChildElement\\\"],[[30,0,[\\\"isOpen\\\"]],[30,6],[30,0,[\\\"direction\\\"]],[30,0,[\\\"toggleElement\\\"]],[30,0,[\\\"registerChildElement\\\"]],[30,0,[\\\"unregisterChildElement\\\"]]]]],[30,0,[\\\"toggleDropdown\\\"]],[30,0,[\\\"openDropdown\\\"]],[30,0,[\\\"closeDropdown\\\"]],[30,0,[\\\"isOpen\\\"]]]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isOpen\\\"]],[[[1,\\\"      \\\"],[1,[28,[35,9],[\\\"keydown\\\",[30,0,[\\\"handleKeyEvent\\\"]]],null]],[1,\\\"\\\\n      \\\"],[1,[28,[35,9],[\\\"click\\\",[30,0,[\\\"closeHandler\\\"]]],[[\\\"capture\\\"],[true]]]],[1,\\\"\\\\n      \\\"],[1,[28,[35,9],[\\\"keyup\\\",[30,0,[\\\"closeHandler\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]],[\\\"Tag\\\",\\\"&attrs\\\",\\\"@open\\\",\\\"@buttonComponent\\\",\\\"@toggleComponent\\\",\\\"@inNav\\\",\\\"@menuComponent\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"element\\\",\\\"if\\\",\\\"did-update\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"on-document\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-dropdown.hbs\",\n    \"isStrictMode\": false\n  });\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var SUPPORTED_KEYCODES = [ESCAPE_KEYCODE, ARROW_DOWN_KEYCODE, ARROW_UP_KEYCODE];\n\n  /**\n    Bootstrap style [dropdown menus](http://getbootstrap.com/components/#dropdowns), consisting\n    of a toggle element, and the dropdown menu itself.\n  \n    ### Usage\n  \n    Use this component together with the yielded contextual components:\n    * [Components.DropdownToggle](Components.DropdownToggle.html)\n    * [Components.DropdownButton](Components.DropdownButton.html)\n    * [Components.DropdownMenu](Components.DropdownMenu.html)\n      * [Components.DropdownMenuItem](Components.DropdownMenuItem.html)\n      * [Components.DropdownMenuDivider](Components.DropdownMenuDivider.html)\n      * [Components.DropdownMenuLinkTo](Components.DropdownMenuLinkTo.html)\n  \n    Furthermore references to the following actions are yielded:\n  \n    * `toggleDropdown`\n    * `openDropdown`\n    * `closeDropdown`\n  \n    ```hbs\n    <BsDropdown as |dd|>\n      <dd.toggle>Dropdown <span class=\"caret\"></span></dd.toggle>\n      <dd.menu as |ddm|>\n        <ddm.item>\n          <ddm.linkTo @route=\"index\">Something</ddm.linkTo>\n        </ddm.item>\n        <ddm.item>\n          <ddm.linkTo @route=\"index\">Something different</ddm.linkTo>\n        </ddm.item>\n      </dd.menu>\n    </BsDropdown>\n    ```\n  \n    If you need to use dropdowns in a [nav](Components.Nav.html), use the `bs-nav.dropdown`\n    contextual component rather than a standalone dropdown to ensure the correct styling\n    regardless of your Bootstrap version.\n  \n    > Note: the use of angle brackets `<ddm.linkTo>` as shown above is only supported for Ember >= 3.10, as it relies on its\n    > Ember's native implementation of the [`LinkComponent`](https://api.emberjs.com/ember/3.12/classes/Ember.Templates.helpers/methods/link-to?anchor=link-to).\n    > For older Ember versions please use the legacy syntax with positional arguments:\n    > `{{#ddm.link-to \"bar\" this.model}}Bar{{/ddm.link-to}}`\n  \n    ### Button dropdowns\n  \n    To use a button as the dropdown toggle element (see http://getbootstrap.com/components/#btn-dropdowns), use the\n    `Components.DropdownButton` component as the toggle:\n  \n    ```hbs\n    <BsDropdown as |dd|>\n      <dd.button>Dropdown <span class=\"caret\"></span></dd.button>\n      <dd.menu as |ddm|>\n        <ddm.item>\n          <ddm.linkTo @route=\"index\">Something</ddm.linkTo>\n        </ddm.item>\n        <ddm.item>\n          <ddm.linkTo @route=\"index\">Something different</ddm.linkTo>\n        </ddm.item>\n      </dd.menu>\n    </BsDropdown>\n    ```\n  \n    It has all the functionality of a `Components.Button` with additional dropdown support.\n  \n    ### Split button dropdowns\n  \n    To have a regular button with a dropdown button as in http://getbootstrap.com/components/#btn-dropdowns-split, use a\n    `Components.Button` component and a `Components.DropdownButton`:\n  \n    ```hbs\n    <BsDropdown as |dd|>\n      <BsButton>Dropdown</BsButton>\n      <dd.button>Dropdown <span class=\"caret\"></span></dd.button>\n      <dd.menu as |ddm|>\n        <ddm.item>\n          <ddm.linkTo @route=\"index\">Something</ddm.linkTo>\n        </ddm.item>\n        <ddm.item>\n          <ddm.linkTo @route=\"index\">Something different</ddm.linkTo>\n        </ddm.item>\n      </dd.menu>\n    </BsDropdown>\n    ```\n  \n    ### Dropup style\n  \n    Set the `direction` property to \"up\" to switch to a \"dropup\" style:\n  \n    ```hbs\n    <BsDropdown @direction=\"up\" as |dd|>\n      ...\n    </BsDropdown>\n    ```\n  \n    ### Open, close or toggle the dropdown programmatically\n  \n    If you wanted to control when the dropdown opens and closes programmatically, the `bs-dropdown` component yields the\n    `openDropdown`, `closeDropdown` and `toggleDropdown` actions which you can then pass to your own handlers. For example:\n  \n    ```hbs\n    <BsDropdown @closeOnMenuClick={{false}} as |dd|>\n      <BsButton>Dropdown</BsButton>\n      <dd.button>Dropdown <span class=\"caret\"></span></dd.button>\n      <dd.menu as |ddm|>\n        {{#each this.items as |item|}}\n          <ddm.item>\n            <a href {{on \"click\" (fn this.changeItems item dd.closeDropdown)}}>\n              {{item.text}}\n            </a>\n          </ddm.item>\n        {{/each}}\n      </dd.menu>\n    </BsDropdown>\n    ```\n  \n    Then in your controller or component, optionally close the dropdown:\n  \n    ```js\n    ...\n    actions: {\n      handleDropdownClicked(item, closeDropdown) {\n        if(item.isTheRightOne) {\n          this.chosenItems.pushObject(item);\n          closeDropdown();\n        } else {\n          this.set('item', this.getRandomItems());\n        }\n      },\n    }\n    ```\n  \n  \n    ### Bootstrap 3/4 Notes\n  \n    If you need to use dropdowns in a [nav](Components.Nav.html), use the `bs-nav.dropdown`\n    contextual component rather than a standalone dropdown to ensure the correct styling\n    regardless of your Bootstrap version.\n  \n    If you use the [dropdown divider](Components.DropdownMenuDivider), you don't have to worry\n    about differences in the markup between versions.\n  \n    Be sure to use the [dropdown menu link-to](Component.DropdownMenuLinkTo), for in-application\n    links as dropdown menu items. This is essential for proper styling regardless of Bootstrap\n    version and will also provide automatic `active` highlighting on dropdown menu items. If you\n    wish to have a dropdown menu item refer to an external link, be sure to apply the `dropdown-item`\n    class to the `<a>` tag for Bootstrap 4 compatibility.\n  \n    The dropdown menu will be positioned using the `popper.js` library, just as the original Bootstrap\n    version does. This also allows you to set `renderInPlace=false` on the menu component to render it in a wormhole,\n    which you might want to do if you experience clipping issues by an outer `overflow: hidden` element.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Dropdown\n    @namespace Components\n    @extends Component\n    @public\n  s*/\n  var Dropdown = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function Dropdown() {\n      var _this;\n      _classCallCheck(this, Dropdown);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Dropdown, [].concat(args));\n      /**\n       * This property reflects the state of the dropdown, whether it is open or closed.\n       *\n       * @property isOpen\n       * @default false\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"isOpen\", _descriptor, _this);\n      /**\n       * @property toggleElement\n       * @private\n       */\n      _initializerDefineProperty(_this, \"toggleElement\", _descriptor2, _this);\n      /**\n       * The DOM element of the `.dropdown-menu` element\n       * @type object\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"menuElement\", _descriptor3, _this);\n      return _this;\n    }\n    _inherits(Dropdown, _Component);\n    return _createClass(Dropdown, [{\n      key: \"htmlTag\",\n      get:\n      /**\n       * The tag name used for the dropdown element.\n       *\n       * @property htmlTag\n       * @default 'div'\n       * @type {string}\n       * @public\n       */\n      function get() {\n        var _this$args$htmlTag;\n        return (_this$args$htmlTag = this.args.htmlTag) !== null && _this$args$htmlTag !== void 0 ? _this$args$htmlTag : 'div';\n      }\n    }, {\n      key: \"closeOnMenuClick\",\n      get:\n      /**\n       * By default, clicking on an open dropdown menu will close it. Set this property to false for the menu to stay open.\n       *\n       * @property closeOnMenuClick\n       * @default true\n       * @type boolean\n       * @public\n       */\n      function get() {\n        var _this$args$closeOnMen;\n        return (_this$args$closeOnMen = this.args.closeOnMenuClick) !== null && _this$args$closeOnMen !== void 0 ? _this$args$closeOnMen : true;\n      }\n\n      /**\n       * By default, the dropdown menu will expand downwards. Other options include, 'up', 'left' and 'right'\n       *\n       * @property direction\n       * @type string\n       * @default 'down'\n       * @public\n       */\n    }, {\n      key: \"direction\",\n      get: function get() {\n        var _this$args$direction;\n        return (_this$args$direction = this.args.direction) !== null && _this$args$direction !== void 0 ? _this$args$direction : 'down';\n      }\n\n      /**\n       * Indicates the dropdown is being used as a navigation item dropdown.\n       *\n       * @property inNav\n       * @type boolean\n       * @default false\n       * @private\n       */\n\n      /**\n       * A computed property to generate the suiting class for the dropdown container, either\n       *\n       * - \"dropdown\"\n       * - \"dropup\"\n       * - \"dropstart\" (BS5) or \"dropleft\" (BS4)\n       * - \"dropend\" (BS5) or \"dropright\" (BS4)\n       *\n       * @property containerClass\n       * @type string\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"containerClass\",\n      get: function get() {\n        return \"drop\".concat(this.direction);\n      }\n    }, {\n      key: \"toggleDropdown\",\n      value:\n      /**\n       * Action is called when dropdown is about to be shown\n       *\n       * @event onShow\n       * @param {*} value\n       * @public\n       */\n\n      /**\n       * Action is called when dropdown is about to be hidden\n       * Returning `false` will block closing the dropdown\n       *\n       * @event onHide\n       * @param {*} value\n       * @public\n       */\n\n      function toggleDropdown() {\n        if (this.isOpen) {\n          this.closeDropdown();\n        } else {\n          this.openDropdown();\n        }\n      }\n    }, {\n      key: \"openDropdown\",\n      value: function openDropdown() {\n        var _this$args$onShow, _this$args;\n        this.isOpen = true;\n        (_this$args$onShow = (_this$args = this.args).onShow) === null || _this$args$onShow === void 0 || _this$args$onShow.call(_this$args);\n      }\n    }, {\n      key: \"closeDropdown\",\n      value: function closeDropdown() {\n        var _this$args$onHide,\n          _this$args2,\n          _this2 = this;\n        if (((_this$args$onHide = (_this$args2 = this.args).onHide) === null || _this$args$onHide === void 0 ? void 0 : _this$args$onHide.call(_this$args2)) === false) return;\n\n        // When closing the dropdown immediately, any click event from dropdown items will be discarded.\n        // By deferring the close action to the next render cycle, we ensure that no events get lost.\n        (0, _runloop.next)(this, function () {\n          _this2.isOpen = false;\n        });\n      }\n\n      /**\n       * Handler for click events to close the dropdown\n       *\n       * @method closeOnClickHandler\n       * @param e\n       * @protected\n       */\n    }, {\n      key: \"closeHandler\",\n      value: function closeHandler(e) {\n        var target = e.target;\n        var toggleElement = this.toggleElement,\n          menuElement = this.menuElement;\n        if (!this.isDestroyed && (e.type === 'keyup' && e.which === TAB_KEYCODE && menuElement && !menuElement.contains(target) || e.type === 'click' && toggleElement && !toggleElement.contains(target) && (menuElement && !menuElement.contains(target) || this.closeOnMenuClick))) {\n          this.closeDropdown();\n        }\n      }\n    }, {\n      key: \"handleKeyEvent\",\n      value: function handleKeyEvent(event) {\n        // If not input/textarea:\n        //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n        // If input/textarea:\n        //  - If space key => not a dropdown command\n        //  - If key is other than escape\n        //    - If key is not up or down => not a dropdown command\n        //    - If trigger inside the menu => not a dropdown command\n        if (['input', 'textarea'].includes(event.target.tagName.toLowerCase()) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || this.menuElement.contains(event.target)) : !SUPPORTED_KEYCODES.includes(event.which)) {\n          return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        if (!this.isOpen) {\n          this.openDropdown();\n          return;\n        } else if (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n          this.closeDropdown();\n          this.toggleElement.focus();\n          return;\n        }\n        var items = [].slice.call(this.menuElement.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'));\n        if (items.length === 0) {\n          return;\n        }\n        var index = items.indexOf(event.target);\n        if (event.which === ARROW_UP_KEYCODE && index > 0) {\n          // Up\n          index--;\n        }\n        if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n          // Down\n          index++;\n        }\n        if (index < 0) {\n          index = 0;\n        }\n        items[index].focus();\n      }\n    }, {\n      key: \"registerChildElement\",\n      value: function registerChildElement(element, _ref) {\n        var _ref2 = _slicedToArray(_ref, 1),\n          type = _ref2[0];\n        (true && !(type === 'toggle' || type === 'menu') && (0, _debug.assert)(\"Unknown child element type \\\"\".concat(type, \"\\\"\"), type === 'toggle' || type === 'menu'));\n        (true && !(element instanceof HTMLElement) && (0, _debug.assert)(\"Registered \".concat(type, \" element must be an HTMLElement\"), element instanceof HTMLElement));\n        this[\"\".concat(type, \"Element\")] = element;\n      }\n    }, {\n      key: \"unregisterChildElement\",\n      value: function unregisterChildElement(element, _ref3) {\n        var _ref4 = _slicedToArray(_ref3, 1),\n          type = _ref4[0];\n        (true && !(type === 'toggle' || type === 'menu') && (0, _debug.assert)(\"Unknown child element type \\\"\".concat(type, \"\\\"\"), type === 'toggle' || type === 'menu'));\n        this[\"\".concat(type, \"Element\")] = null;\n      }\n    }, {\n      key: \"updateIsOpen\",\n      value: function updateIsOpen(open) {\n        this.isOpen = open;\n      }\n\n      /**\n       * @property buttonComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property toggleComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property menuComponent\n       * @type {String}\n       * @private\n       */\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"isOpen\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      var _this$args$isOpen;\n      return (_this$args$isOpen = this.args.isOpen) !== null && _this$args$isOpen !== void 0 ? _this$args$isOpen : false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"toggleElement\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"menuElement\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"openDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeHandler\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeHandler\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleKeyEvent\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleKeyEvent\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"registerChildElement\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"registerChildElement\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"unregisterChildElement\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"unregisterChildElement\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateIsOpen\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateIsOpen\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Dropdown);\n});","define(\"ember-bootstrap/components/bs-dropdown/button\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <BsButton\n    {{! cannot pass @block directly because that triggers reserved keyword assertion when compiling the template }}\n    {{! template-lint-disable no-capital-arguments no-args-paths }}\n    @block={{this.args.block}}\n    @onClick={{@onClick}}\n    @active={{@active}}\n    @size={{@size}}\n    @type={{@type}}\n    @outline={{@outline}}\n    aria-expanded={{if @isOpen \"true\" \"false\"}}\n    class=\"dropdown-toggle\"\n    ...attributes\n    {{on \"keydown\" @onKeyDown}}\n    {{did-insert @registerChildElement \"toggle\"}}\n    {{will-destroy @unregisterChildElement \"toggle\"}}\n  >\n    {{yield}}\n  </BsButton>\n  \n  */\n  {\n    \"id\": \"B4G8xXbP\",\n    \"block\": \"[[[8,[39,0],[[16,\\\"aria-expanded\\\",[52,[30,1],\\\"true\\\",\\\"false\\\"]],[24,0,\\\"dropdown-toggle\\\"],[17,2],[4,[38,2],[\\\"keydown\\\",[30,8]],null],[4,[38,3],[[30,9],\\\"toggle\\\"],null],[4,[38,4],[[30,10],\\\"toggle\\\"],null]],[[\\\"@block\\\",\\\"@onClick\\\",\\\"@active\\\",\\\"@size\\\",\\\"@type\\\",\\\"@outline\\\"],[[30,0,[\\\"args\\\",\\\"block\\\"]],[30,3],[30,4],[30,5],[30,6],[30,7]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[18,11,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"@isOpen\\\",\\\"&attrs\\\",\\\"@onClick\\\",\\\"@active\\\",\\\"@size\\\",\\\"@type\\\",\\\"@outline\\\",\\\"@onKeyDown\\\",\\\"@registerChildElement\\\",\\\"@unregisterChildElement\\\",\\\"&default\\\"],false,[\\\"bs-button\\\",\\\"if\\\",\\\"on\\\",\\\"did-insert\\\",\\\"will-destroy\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-dropdown/button.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Button component with that can act as a dropdown toggler.\n  \n   See [Components.Dropdown](Components.Dropdown.html) for examples.\n  \n   @class DropdownButton\n   @namespace Components\n   @extends Components.Button\n   @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-dropdown/menu\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/runloop\", \"ember-bootstrap/utils/dom\", \"ember-ref-bucket\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _runloop, _dom, _emberRefBucket, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/runloop\",0,\"ember-bootstrap/utils/dom\",0,\"ember-ref-bucket\",0,\"@glimmer/tracking\",0,\"@embroider/macros\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @isOpen}}\n    {{#if this._renderInPlace}}\n      <div\n        data-bs-popper\n        class=\"dropdown-menu {{this.alignClass}} {{if this.isOpen \"show\"}}\"\n        tabindex=\"-1\"\n        ...attributes\n        {{popper-tooltip @toggleElement this.popperOptions}}\n        {{did-insert @registerChildElement \"menu\"}}\n        {{will-destroy @unregisterChildElement \"menu\"}}\n        {{did-update this.updateIsOpen @open}}\n        {{create-ref \"menuElement\"}}\n      >\n        {{yield\n          (hash\n            item=(ensure-safe-component (bs-default @itemComponent (component \"bs-dropdown/menu/item\")))\n            link-to=(ensure-safe-component (bs-default @linkToComponent (component \"bs-link-to\" attrClassInternal=\"dropdown-item\")))\n            linkTo=(ensure-safe-component (bs-default @linkToComponent (component \"bs-link-to\" attrClassInternal=\"dropdown-item\")))\n            divider=(ensure-safe-component (bs-default @dividerComponent (component \"bs-dropdown/menu/divider\")))\n          )\n        }}\n      </div>\n    {{else}}\n      {{#in-element this.destinationElement insertBefore=null}}\n        <div\n          data-bs-popper\n          class=\"dropdown-menu {{this.alignClass}} {{if this.isOpen \"show\"}}\"\n          tabindex=\"-1\"\n          ...attributes\n          {{popper-tooltip @toggleElement this.popperOptions}}\n          {{did-insert @registerChildElement \"menu\"}}\n          {{will-destroy @unregisterChildElement \"menu\"}}\n          {{did-update this.updateIsOpen @open}}\n          {{create-ref \"menuElement\"}}\n        >\n          {{yield\n            (hash\n              item=(ensure-safe-component (bs-default @itemComponent (component \"bs-dropdown/menu/item\")))\n              link-to=(ensure-safe-component (bs-default @linkToComponent (component \"bs-link-to\" attrClassInternal=\"dropdown-item\")))\n              linkTo=(ensure-safe-component (bs-default @linkToComponent (component \"bs-link-to\" attrClassInternal=\"dropdown-item\")))\n              divider=(ensure-safe-component (bs-default @dividerComponent (component \"bs-dropdown/menu/divider\")))\n            )\n          }}\n        </div>\n      {{/in-element}}\n    {{/if}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"+TlKP9iL\",\n    \"block\": \"[[[41,[30,1],[[[41,[30,0,[\\\"_renderInPlace\\\"]],[[[1,\\\"    \\\"],[11,0],[24,\\\"data-bs-popper\\\",\\\"\\\"],[16,0,[29,[\\\"dropdown-menu \\\",[30,0,[\\\"alignClass\\\"]],\\\" \\\",[52,[30,0,[\\\"isOpen\\\"]],\\\"show\\\"]]]],[24,\\\"tabindex\\\",\\\"-1\\\"],[17,2],[4,[38,2],[[30,3],[30,0,[\\\"popperOptions\\\"]]],null],[4,[38,3],[[30,4],\\\"menu\\\"],null],[4,[38,4],[[30,5],\\\"menu\\\"],null],[4,[38,5],[[30,0,[\\\"updateIsOpen\\\"]],[30,6]],null],[4,[38,6],[\\\"menuElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n      \\\"],[18,10,[[28,[37,8],null,[[\\\"item\\\",\\\"link-to\\\",\\\"linkTo\\\",\\\"divider\\\"],[[28,[37,9],[[28,[37,10],[[30,7],[50,\\\"bs-dropdown/menu/item\\\",0,null,null]],null]],null],[28,[37,9],[[28,[37,10],[[30,8],[50,\\\"bs-link-to\\\",0,null,[[\\\"attrClassInternal\\\"],[\\\"dropdown-item\\\"]]]],null]],null],[28,[37,9],[[28,[37,10],[[30,8],[50,\\\"bs-link-to\\\",0,null,[[\\\"attrClassInternal\\\"],[\\\"dropdown-item\\\"]]]],null]],null],[28,[37,9],[[28,[37,10],[[30,9],[50,\\\"bs-dropdown/menu/divider\\\",0,null,null]],null]],null]]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[40,[[[1,\\\"      \\\"],[11,0],[24,\\\"data-bs-popper\\\",\\\"\\\"],[16,0,[29,[\\\"dropdown-menu \\\",[30,0,[\\\"alignClass\\\"]],\\\" \\\",[52,[30,0,[\\\"isOpen\\\"]],\\\"show\\\"]]]],[24,\\\"tabindex\\\",\\\"-1\\\"],[17,2],[4,[38,2],[[30,3],[30,0,[\\\"popperOptions\\\"]]],null],[4,[38,3],[[30,4],\\\"menu\\\"],null],[4,[38,4],[[30,5],\\\"menu\\\"],null],[4,[38,5],[[30,0,[\\\"updateIsOpen\\\"]],[30,6]],null],[4,[38,6],[\\\"menuElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n        \\\"],[18,10,[[28,[37,8],null,[[\\\"item\\\",\\\"link-to\\\",\\\"linkTo\\\",\\\"divider\\\"],[[28,[37,9],[[28,[37,10],[[30,7],[50,\\\"bs-dropdown/menu/item\\\",0,null,null]],null]],null],[28,[37,9],[[28,[37,10],[[30,8],[50,\\\"bs-link-to\\\",0,null,[[\\\"attrClassInternal\\\"],[\\\"dropdown-item\\\"]]]],null]],null],[28,[37,9],[[28,[37,10],[[30,8],[50,\\\"bs-link-to\\\",0,null,[[\\\"attrClassInternal\\\"],[\\\"dropdown-item\\\"]]]],null]],null],[28,[37,9],[[28,[37,10],[[30,9],[50,\\\"bs-dropdown/menu/divider\\\",0,null,null]],null]],null]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],\\\"%cursor:0%\\\",[28,[37,13],[[30,0,[\\\"destinationElement\\\"]]],null],null]],[]]]],[]],null]],[\\\"@isOpen\\\",\\\"&attrs\\\",\\\"@toggleElement\\\",\\\"@registerChildElement\\\",\\\"@unregisterChildElement\\\",\\\"@open\\\",\\\"@itemComponent\\\",\\\"@linkToComponent\\\",\\\"@dividerComponent\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"popper-tooltip\\\",\\\"did-insert\\\",\\\"will-destroy\\\",\\\"did-update\\\",\\\"create-ref\\\",\\\"yield\\\",\\\"hash\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"component\\\",\\\"in-element\\\",\\\"-in-el-null\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-dropdown/menu.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Component for the dropdown menu.\n  \n   See [Components.Dropdown](Components.Dropdown.html) for examples.\n  \n   @class DropdownMenu\n   @namespace Components\n   @extends Component\n   @public\n   */\n  var DropdownMenu = _exports.default = (_dec = (0, _emberRefBucket.ref)('menuElement'), _class = /*#__PURE__*/function (_Component) {\n    function DropdownMenu() {\n      var _this;\n      _classCallCheck(this, DropdownMenu);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, DropdownMenu, [].concat(args));\n      /**\n       * @property _element\n       * @type null | HTMLElement\n       * @private\n       */\n      _initializerDefineProperty(_this, \"menuElement\", _descriptor, _this);\n      _initializerDefineProperty(_this, \"isOpen\", _descriptor2, _this);\n      _defineProperty(_this, \"flip\", true);\n      return _this;\n    }\n    _inherits(DropdownMenu, _Component);\n    return _createClass(DropdownMenu, [{\n      key: \"align\",\n      get:\n      /**\n       * Alignment of the menu, either \"left\" or \"right\"\n       *\n       * @property align\n       * @type string\n       * @default left\n       * @public\n       */\n      function get() {\n        var _this$args$align;\n        return (_this$args$align = this.args.align) !== null && _this$args$align !== void 0 ? _this$args$align : 'left';\n      }\n\n      /**\n       * @property direction\n       * @default 'down'\n       * @type string\n       * @private\n       */\n    }, {\n      key: \"direction\",\n      get: function get() {\n        var _this$args$direction;\n        return (_this$args$direction = this.args.direction) !== null && _this$args$direction !== void 0 ? _this$args$direction : 'down';\n      }\n\n      /**\n       * By default, the menu is rendered in the same place as the dropdown. If you experience clipping\n       * issues, you can set this to false to render the menu in a wormhole at the top of the DOM.\n       *\n       * @property renderInPlace\n       * @type boolean\n       * @default true\n       * @public\n       */\n    }, {\n      key: \"renderInPlace\",\n      get: function get() {\n        var _this$args$renderInPl;\n        return (_this$args$renderInPl = this.args.renderInPlace) !== null && _this$args$renderInPl !== void 0 ? _this$args$renderInPl : true;\n      }\n\n      /**\n       * @property inNav\n       * @type {boolean}\n       * @private\n       */\n    }, {\n      key: \"inNav\",\n      get: function get() {\n        var _this$args$inNav;\n        return (_this$args$inNav = this.args.inNav) !== null && _this$args$inNav !== void 0 ? _this$args$inNav : false;\n      }\n\n      /**\n       * @property _renderInPlace\n       * @type boolean\n       * @private\n       */\n    }, {\n      key: \"_renderInPlace\",\n      get: function get() {\n        return this.renderInPlace || !this.destinationElement;\n      }\n\n      /**\n       * The wormhole destinationElement\n       *\n       * @property destinationElement\n       * @type object\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"destinationElement\",\n      get: function get() {\n        return (0, _dom.getDestinationElement)(this);\n      }\n    }, {\n      key: \"alignClass\",\n      get: function get() {\n        if (this.align === 'right') {\n          var alignClass = 'right';\n          return \"dropdown-menu-\".concat(alignClass);\n        }\n        return undefined;\n      }\n    }, {\n      key: \"updateIsOpen\",\n      value: function updateIsOpen(value) {\n        var _this2 = this;\n        // delay removing the menu from DOM to allow (delegated Ember) event to fire for the menu's children\n        // Fixes https://github.com/kaliber5/ember-bootstrap/issues/660\n        (0, _runloop.next)(function () {\n          if (_this2.isDestroying || _this2.isDestroyed) {\n            return;\n          }\n          _this2.isOpen = value;\n        });\n      }\n    }, {\n      key: \"popperPlacement\",\n      get: function get() {\n        var placement = 'bottom-start';\n        var direction = this.direction,\n          align = this.align;\n        if (direction === 'up') {\n          placement = 'top-start';\n          if (align === 'right') {\n            placement = 'top-end';\n          }\n        } else if (direction === 'left') {\n          placement = 'left-start';\n        } else if (direction === 'right') {\n          placement = 'right-start';\n        } else if (align === 'right') {\n          placement = 'bottom-end';\n        }\n        return placement;\n      }\n    }, {\n      key: \"setFocus\",\n      value: function setFocus() {\n        // when the dropdown menu is rendered in place, focus can stay on the toggle element\n        if (this._renderInPlace) {\n          return;\n        }\n        if (this.menuElement) {\n          this.menuElement.focus();\n        }\n      }\n    }, {\n      key: \"popperOptions\",\n      get: function get() {\n        var _this3 = this;\n        return {\n          placement: this.popperPlacement,\n          onFirstUpdate: function onFirstUpdate() {\n            return _this3.setFocus();\n          },\n          modifiers: [{\n            name: 'flip',\n            enabled: this.flip\n          }, {\n            name: 'applyStyles',\n            enabled: !this.inNav\n          }]\n        };\n      }\n\n      /**\n       * @property itemComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property linkToComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property dividerComponent\n       * @type {String}\n       * @private\n       */\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"menuElement\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"isOpen\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.args.isOpen;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"updateIsOpen\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateIsOpen\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setFocus\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setFocus\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DropdownMenu);\n});","define(\"ember-bootstrap/components/bs-dropdown/menu/divider\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"dropdown-divider\" ...attributes>\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"SlmRX0G0\",\n    \"block\": \"[[[11,0],[24,0,\\\"dropdown-divider\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-dropdown/menu/divider.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Component for a dropdown menu divider.\n  \n   See [Components.Dropdown](Components.Dropdown.html) for examples.\n  \n   @class DropdownMenuDivider\n   @namespace Components\n   @extends Component\n   @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-dropdown/menu/item\", [\"exports\", \"@ember/component/template-only\"], function (_exports, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\"eaimeta@70e063a35619d71f\n  /**\n   Component for a dropdown menu item.\n  \n   See [Components.Dropdown](Components.Dropdown.html) for examples.\n  \n   @class DropdownMenuItem\n   @namespace Components\n   @extends Component\n   @public\n   */\n  var _default = _exports.default = (0, _templateOnly.default)();\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-dropdown/toggle\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <a\n    href=\"#\"\n    class=\"dropdown-toggle {{if @inNav \"nav-link\"}}\"\n    aria-expanded={{this.aria-expanded}}\n    role=\"button\"\n    ...attributes\n    {{on \"keydown\" this.handleKeyDown}}\n    {{on \"click\" this.handleClick}}\n    {{did-insert @registerChildElement \"toggle\"}}\n    {{will-destroy @unregisterChildElement \"toggle\"}}\n  >\n    {{yield}}\n  </a>\n  */\n  {\n    \"id\": \"+vP1OMxI\",\n    \"block\": \"[[[11,3],[24,6,\\\"#\\\"],[16,0,[29,[\\\"dropdown-toggle \\\",[52,[30,1],\\\"nav-link\\\"]]]],[16,\\\"aria-expanded\\\",[30,0,[\\\"aria-expanded\\\"]]],[24,\\\"role\\\",\\\"button\\\"],[17,2],[4,[38,2],[\\\"keydown\\\",[30,0,[\\\"handleKeyDown\\\"]]],null],[4,[38,2],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[4,[38,3],[[30,3],\\\"toggle\\\"],null],[4,[38,4],[[30,4],\\\"toggle\\\"],null],[12],[1,\\\"\\\\n  \\\"],[18,5,null],[1,\\\"\\\\n\\\"],[13]],[\\\"@inNav\\\",\\\"&attrs\\\",\\\"@registerChildElement\\\",\\\"@unregisterChildElement\\\",\\\"&default\\\"],false,[\\\"a\\\",\\\"if\\\",\\\"on\\\",\\\"did-insert\\\",\\\"will-destroy\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-dropdown/toggle.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Anchor element that triggers the parent dropdown to open.\n   Use [Components.DropdownButton](Components.DropdownButton.html) if you want a button instead of an anchor tag.\n  \n   See [Components.Dropdown](Components.Dropdown.html) for examples.\n  \n   @class DropdownToggle\n   @namespace Components\n   @extends Component\n   @publicø\n   */\n  var DropdownToggle = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function DropdownToggle() {\n      _classCallCheck(this, DropdownToggle);\n      return _callSuper(this, DropdownToggle, arguments);\n    }\n    _inherits(DropdownToggle, _Component);\n    return _createClass(DropdownToggle, [{\n      key: \"inNav\",\n      get:\n      /**\n       * @property inNav\n       * @type {boolean}\n       * @private\n       */\n      function get() {\n        var _this$args$inNav;\n        return (_this$args$inNav = this.args.inNav) !== null && _this$args$inNav !== void 0 ? _this$args$inNav : false;\n      }\n    }, {\n      key: 'aria-expanded',\n      get: function get() {\n        return this.args.isOpen ? 'true' : 'false';\n      }\n\n      /**\n       * When clicking the toggle this action is called.\n       *\n       * @event onClick\n       * @param {*} value\n       * @public\n       */\n    }, {\n      key: \"handleClick\",\n      value: function handleClick(e) {\n        var _this$args$onClick, _this$args;\n        e.preventDefault();\n        (_this$args$onClick = (_this$args = this.args).onClick) === null || _this$args$onClick === void 0 || _this$args$onClick.call(_this$args);\n      }\n    }, {\n      key: \"handleKeyDown\",\n      value: function handleKeyDown(e) {\n        this.args.onKeyDown(e);\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleKeyDown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleKeyDown\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DropdownToggle);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/debug\", \"@ember/utils\", \"@ember/runloop\", \"ember-bootstrap/utils/decorators/arg\", \"@glimmer/tracking\", \"ember-ref-bucket\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _debug, _utils, _runloop, _arg, _tracking, _emberRefBucket, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/debug\",0,\"@ember/utils\",0,\"@ember/runloop\",0,\"@embroider/macros\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@glimmer/tracking\",0,\"ember-ref-bucket\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{!-- template-lint-disable no-invalid-interactive --}}\n  <form\n    novalidate={{this.hasValidator}}\n    class={{this.layoutClass}}\n    ...attributes\n    {{on \"keypress\" this.handleKeyPress}}\n    {{on \"submit\" this.handleSubmit}}\n    {{create-ref \"formElement\"}}\n  >\n    {{yield\n      (hash\n        element=(component (ensure-safe-component (bs-default @elementComponent (component \"bs-form/element\")))\n          model=this.model\n          formLayout=this.formLayout\n          horizontalLabelGridClass=this.horizontalLabelGridClass\n          showAllValidations=this.showAllValidations\n          _disabled=@disabled\n          _readonly=@readonly\n          onChange=this.elementChanged\n          _onChange=this.resetSubmissionState\n        )\n        isSubmitting=this.isSubmitting\n        isSubmitted=this.isSubmitted\n        isRejected=this.isRejected\n        model=this.model\n        resetSubmissionState=this.resetSubmissionState\n        submit=this.doSubmit\n        submitButton=(component (ensure-safe-component (bs-default @submitButtonComponent (component \"bs-button\")))\n          type=\"primary\"\n          state=this.submitButtonState\n          _disabled=this.isSubmitting\n          attrTypePrivateWorkaround=\"submit\"\n        )\n      )\n    }}\n  </form>\n  \n  */\n  {\n    \"id\": \"QFf3O6KO\",\n    \"block\": \"[[[11,\\\"form\\\"],[16,\\\"novalidate\\\",[30,0,[\\\"hasValidator\\\"]]],[16,0,[30,0,[\\\"layoutClass\\\"]]],[17,1],[4,[38,1],[\\\"keypress\\\",[30,0,[\\\"handleKeyPress\\\"]]],null],[4,[38,1],[\\\"submit\\\",[30,0,[\\\"handleSubmit\\\"]]],null],[4,[38,2],[\\\"formElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n  \\\"],[18,6,[[28,[37,4],null,[[\\\"element\\\",\\\"isSubmitting\\\",\\\"isSubmitted\\\",\\\"isRejected\\\",\\\"model\\\",\\\"resetSubmissionState\\\",\\\"submit\\\",\\\"submitButton\\\"],[[50,[28,[37,6],[[28,[37,7],[[30,2],[50,\\\"bs-form/element\\\",0,null,null]],null]],null],0,null,[[\\\"model\\\",\\\"formLayout\\\",\\\"horizontalLabelGridClass\\\",\\\"showAllValidations\\\",\\\"_disabled\\\",\\\"_readonly\\\",\\\"onChange\\\",\\\"_onChange\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"formLayout\\\"]],[30,0,[\\\"horizontalLabelGridClass\\\"]],[30,0,[\\\"showAllValidations\\\"]],[30,3],[30,4],[30,0,[\\\"elementChanged\\\"]],[30,0,[\\\"resetSubmissionState\\\"]]]]],[30,0,[\\\"isSubmitting\\\"]],[30,0,[\\\"isSubmitted\\\"]],[30,0,[\\\"isRejected\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"resetSubmissionState\\\"]],[30,0,[\\\"doSubmit\\\"]],[50,[28,[37,6],[[28,[37,7],[[30,5],[50,\\\"bs-button\\\",0,null,null]],null]],null],0,null,[[\\\"type\\\",\\\"state\\\",\\\"_disabled\\\",\\\"attrTypePrivateWorkaround\\\"],[\\\"primary\\\",[30,0,[\\\"submitButtonState\\\"]],[30,0,[\\\"isSubmitting\\\"]],\\\"submit\\\"]]]]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@elementComponent\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@submitButtonComponent\\\",\\\"&default\\\"],false,[\\\"form\\\",\\\"on\\\",\\\"create-ref\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Render a form with the appropriate Bootstrap layout class (see `formLayout`).\n    Allows setting a `model` that nested `Components.FormElement`s can access, and that can provide form validation (see below)\n  \n    You can use whatever markup you like within the form.\n    However, to benefit from features such as automatic form markup, validations and validation markup, use `Components.FormElement`\n    as nested components. See below for an example.\n  \n    ### Submitting the form\n  \n    The form yields a `submitButton` component, which is a preconfigured `<BsButton>` with `@type=\"primary\"` and `type=\"submit\"`.\n    The button is disabled while a form submission is pending. Additionally, the button state is bound to the form submission state.\n  \n    ```hbs\n    <BsForm as |form|>\n      <form.submitButton>Submit</form.submitButton>\n    </BsForm>\n    ```\n  \n    When the form is submitted (e.g. by clicking the submit button), the event will be intercepted and the `onSubmit` action\n    will be sent to the controller or parent component.\n    In case the form supports validation (see \"Form validation\" below), the `onBefore` action is called (which allows you to\n    do e.g. model data normalization), then the available validation rules are evaluated, and if those fail, the `onInvalid`\n    action is sent instead of `onSubmit`.\n  \n    ### Use with Components.FormElement\n  \n    When using `Components.FormElement`s with their `property` set to property names of the form's validation enabled\n    `model`, you gain some additional powerful features:\n    * the appropriate Bootstrap markup for the given `formLayout` and the form element's `controlType` is automatically generated\n    * markup for validation states and error messages is generated based on the model's validation (if available), when submitting the form\n    with an invalid validation, or when focusing out of invalid inputs\n  \n    ```handlebars\n    <BsForm @formLayout=\"horizontal\" @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @controlType=\"email\" @label=\"Email\" @placeholder=\"Email\" @property=\"email\" />\n      <form.element @controlType=\"password\" @label=\"Password\" @placeholder=\"Password\" @property=\"password\" />\n      <form.element @controlType=\"checkbox\" @label=\"Remember me\" @property=\"rememberMe\" />\n      <form.submitButton>Submit</form.submitButton>\n    </BsForm>\n    ```\n  \n    See the [Components.FormElement](Components.FormElement.html) API docs for further information.\n  \n    ### Form validation\n  \n    All version of ember-bootstrap beginning from 0.7.0 do not come with built-in support for validation engines anymore.\n    Instead, support is added usually by additional Ember addons, for example:\n  \n    * [ember-bootstrap-validations](https://github.com/kaliber5/ember-bootstrap-validations): adds support for [ember-validations](https://github.com/DockYard/ember-validations)\n    * [ember-bootstrap-cp-validations](https://github.com/offirgolan/ember-bootstrap-cp-validations): adds support for [ember-cp-validations](https://github.com/offirgolan/ember-cp-validations)\n    * [ember-bootstrap-changeset-validations](https://github.com/kaliber5/ember-bootstrap-changeset-validations): adds support for [ember-changeset](https://github.com/poteto/ember-changeset)\n  \n    To add your own validation support, you have to:\n  \n    * extend this component, setting `hasValidator` to true if validations are available (by means of a computed property for example), and implementing the `validate` method\n    * extend the [Components.FormElement](Components.FormElement.html) component and implement the `setupValidations` hook or simply override the `errors` property to add the validation error messages to be displayed\n  \n    When validation fails, the appropriate Bootstrap markup is added automatically, i.e. the error classes are applied and\n    the validation messages are shown for each form element. In case the validation library supports it, also warning messages\n    are shown. See the [Components.FormElement](Components.FormElement.html) documentation for further details.\n  \n    See the above-mentioned addons for examples.\n  \n    The `novalidate` HTML attribute is set by default for forms that have validation.\n  \n    ### Submission state\n  \n    A `isSubmitting` property is yielded, which is `true` after submit has been triggered and before the Promise returned\n    by `onSubmit` is fulfilled. It could be used to show a loading spinner instead of the form while it's submitting for example:\n  \n    ```hbs\n    <BsForm @onSubmit={{this.save}} as |form|>\n      {{#if form.isSubmitting}}\n        <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n        Logging in...\n      {{else}}\n        <form.element @property=\"email\" @label=\"email\" />\n        <form.element @property=\"password\" @label=\"password\" @controlType=\"password\" />\n        <form.submitButton>Login</form.submitButton>\n      {{/if}}\n    </BsForm>\n    ```\n  \n    Additionaly `isSubmitted` and `isRejected` properties are yielded. `isSubmitted` is `true` if last submission was successful.\n    `isRejected` is `true` if last submission was rejected due to validation errors or by an action bound to `onSubmit` event, returning a rejected promise.\n    It could be used for visual feedback about last submission:\n  \n    ```hbs\n    <BsForm @onSubmit={{this.save}} as |form|>\n      <form.submitButton @type={{if form.isRejected \"danger\" \"primary\"}}>\n        Save\n      </form.submitButton>\n    </BsForm>\n    ```\n  \n    The submission state is reset as soon as any value of a form element changes. Additionally, it can be reset programmatically by\n    calling the yielded `resetSubmissionState` function.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Form\n    @namespace Components\n    @extends Ember.Component\n    @public\n  */\n  var Form = _exports.default = (_dec = (0, _emberRefBucket.ref)('formElement'), _class = /*#__PURE__*/function (_Component) {\n    function Form() {\n      var _this;\n      _classCallCheck(this, Form);\n      _this = _callSuper(this, Form, arguments);\n      /**\n       * @property _element\n       * @type null | HTMLFormElement\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_element\", _descriptor, _this);\n      /**\n       * Set the layout of the form to either \"vertical\", \"horizontal\" or \"inline\". See http://getbootstrap.com/css/#forms-inline and http://getbootstrap.com/css/#forms-horizontal\n       *\n       * @property formLayout\n       * @type string\n       * @public\n       */\n      _initializerDefineProperty(_this, \"formLayout\", _descriptor2, _this);\n      /**\n       * Check if validating the model is supported. This needs to be implemented by another addon.\n       *\n       * @property hasValidator\n       * @type boolean\n       * @readonly\n       * @protected\n       */\n      /**\n       * The Bootstrap grid classes for form labels. This is used by the `Components.FormElement` class as a default for the\n       * whole form.\n       *\n       * @property horizontalLabelGridClass\n       * @type string\n       * @default 'col-md-4'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"horizontalLabelGridClass\", _descriptor3, _this);\n      /**\n       * `isSubmitted` is `true` if last submission was successful.\n       * A change to any form element resets its value to `false`.\n       *\n       * If not using `Components.FormElement`, `resetSubmissionState` action must be triggered on each change to reset\n       * form's submission state.\n       *\n       * @property isSubmitted\n       * @type {Boolean}\n       * @private\n       */\n      _initializerDefineProperty(_this, \"isSubmitted\", _descriptor4, _this);\n      /**\n       * `isRejected` is `true` if last submission was rejected.\n       * A submission is considered as rejected if form is invalid as well as if `onSubmit` rejects.\n       * A change to any form element resets its value to `false`.\n       *\n       * If not using `Components.FormElement`, `resetSubmissionState` action must be triggered on each change to reset\n       * form's submission state.\n       *\n       * @property isRejected\n       * @type {Boolean}\n       * @private\n       */\n      _initializerDefineProperty(_this, \"isRejected\", _descriptor5, _this);\n      /**\n       * Count of pending submissions.\n       *\n       * @property pendingSubmissions\n       * @type {Integer}\n       * @private\n       */\n      _initializerDefineProperty(_this, \"pendingSubmissions\", _descriptor6, _this);\n      /**\n       * If set to true pressing enter will submit the form, even if no submit button is present\n       *\n       * @property submitOnEnter\n       * @type boolean\n       * @default false\n       * @public\n       */\n      /**\n       * Controls if `onSubmit` action is fired concurrently. If `true` submitting form multiple\n       * times will not trigger `onSubmit` action if a Promise returned by previous submission is\n       * not settled yet.\n       *\n       * Dropping a submission also prevents rerunning validation and `onBefore` hook.\n       *\n       * @property preventConcurrency\n       * @type Boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"preventConcurrency\", _descriptor7, _this);\n      // eslint-disable-line no-unused-vars\n      /**\n       * @property _showAllValidations\n       * @type boolean\n       * @default undefined\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_showAllValidations\", _descriptor8, _this);\n      /**\n       * Controls visibility of validation errors. If `null` (default) validation errors are shown after user\n       * interactions like form submission, focus out event of input fields etc. If `true` all validation errors are shown\n       * immediately independently of user interactions. If `false` validation errors are not shown in any case (but\n       * prevent form submission if form is invalid).\n       *\n       * @property showValidations\n       * @type Boolean|null\n       * @default null\n       * @public\n       */\n      _initializerDefineProperty(_this, \"showValidations\", _descriptor9, _this);\n      var formLayout = _this.formLayout;\n      (true && !(['vertical', 'horizontal', 'inline'].indexOf(formLayout) >= 0) && (0, _debug.assert)(\"Invalid formLayout property given: \".concat(formLayout), ['vertical', 'horizontal', 'inline'].indexOf(formLayout) >= 0));\n      return _this;\n    }\n    _inherits(Form, _Component);\n    return _createClass(Form, [{\n      key: \"layoutClass\",\n      get:\n      /**\n       * Bootstrap form class name (computed)\n       *\n       * @property layoutClass\n       * @type string\n       * @readonly\n       * @protected\n       *\n       */\n      function get() {\n        var layout = this.formLayout;\n        {\n          return layout === 'inline' ? 'form-inline' : null;\n        }\n      }\n\n      /**\n       * Set a model that this form should represent. This serves several purposes:\n       *\n       * * child `Components.FormElement`s can access and bind to this model by their `property`\n       * * when the model supports validation by using the [ember-validations](https://github.com/dockyard/ember-validations) mixin,\n       * child `Components.FormElement`s will look at the validation information of their `property` and render their form group accordingly.\n       * Moreover, the form's `submit` event handler will validate the model and deny submitting if the model is not validated successfully.\n       *\n       * `<BsForm>` yields the form's model as `form` property:\n       *\n       * ```hbs\n       * <BsForm @model={{this.formModel}} as |form|>\n       *   {{! this.formModel === form.model }}\n       * </BsForm>\n       * ```\n       *\n       * @property model\n       * @type object\n       * @public\n       */\n    }, {\n      key: \"model\",\n      get: function get() {\n        var _this$args$model;\n        return (_this$args$model = this.args.model) !== null && _this$args$model !== void 0 ? _this$args$model : {};\n      }\n    }, {\n      key: \"isSubmitting\",\n      get:\n      /**\n       * @property elementComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property submitButtonComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * `isSubmitting` is `true` after `submit` event has been triggered and until Promise returned by `onSubmit` is\n       * fulfilled. If `validate` returns a Promise that one is also taken into consideration.\n       *\n       * If multiple concurrent submit events are fired, it stays `true` until all submit events have been fulfilled.\n       *\n       * @property isSubmitting\n       * @type {Boolean}\n       * @readonly\n       * @private\n       */\n      function get() {\n        return this.pendingSubmissions > 0;\n      }\n    }, {\n      key: \"submitButtonState\",\n      get:\n      /**\n       * State of the form expressed as state values expected by `<BsButton>`.\n       *\n       * @property submitButtonState\n       * @type {String}\n       * @private\n       */\n      function get() {\n        if (this.isSubmitting) {\n          return 'pending';\n        }\n        if (this.isSubmitted) {\n          return 'fulfilled';\n        }\n        if (this.isRejected) {\n          return 'rejected';\n        }\n        return 'default';\n      }\n    }, {\n      key: \"validate\",\n      value:\n      /**\n       * If true, after successful validation and upon submitting the form, all current element validations will be hidden.\n       * If the form remains visible, the user would have to focus out of elements of submit the form again for the\n       * validations to show up again, as if a fresh new form component had been rendered.\n       *\n       * @property hideValidationsOnSubmit\n       * @type {Boolean}\n       * @default false\n       * @public\n       */\n\n      /**\n       * If set to true the `readonly` property of all yielded form elements will be set, making their form controls read-only.\n       *\n       * @property readonly\n       * @type boolean\n       * @default false\n       * @public\n       */\n\n      /**\n       * If set to true the `disabled` property of all yielded form elements will be set, making their form controls disabled.\n       *\n       * @property disabled\n       * @type boolean\n       * @default false\n       * @public\n       */\n\n      /**\n       * Validate hook which will return a promise that will either resolve if the model is valid\n       * or reject if it's not. This should be overridden to add validation support.\n       *\n       * @method validate\n       * @param {Object} model\n       * @param {HTMLFormElement} form\n       * @return {Promise}\n       * @public\n       */\n      function validate(model, form) {}\n    }, {\n      key: \"showAllValidations\",\n      get: function get() {\n        var _this$showValidations;\n        return (_this$showValidations = this.showValidations) !== null && _this$showValidations !== void 0 ? _this$showValidations : this._showAllValidations;\n      },\n      set: function set(showAllValidations) {\n        this._showAllValidations = showAllValidations;\n      }\n    }, {\n      key: \"submitHandler\",\n      value:\n      /**\n       * Action is called before the form is validated (if possible) and submitted.\n       *\n       * @event onBefore\n       * @param { Object } model  The form's `model`\n       * @public\n       */\n\n      /**\n       * Action is called when submit has been triggered and the model has passed all validations (if present).\n       *\n       * @event onSubmit\n       * @param { Object } model  The form's `model`\n       * @param { Object } result The returned result from the validate method, if validation is available\n       * @public\n       */\n\n      /**\n       * Action is called when validation of the model has failed.\n       *\n       * @event onInvalid\n       * @param { Object } model  The form's `model`\n       * @param { Object } error\n       * @public\n       */\n\n      /**\n       * Submit handler that will send the default action (\"action\") to the controller when submitting the form.\n       *\n       * If there is a supplied `model` that supports validation (`hasValidator`) the model will be validated before, and\n       * only if validation is successful the default action will be sent. Otherwise, an \"invalid\" action will be sent, and\n       * all the `showValidation` property of all child `Components.FormElement`s will be set to true, so error state and\n       * messages will be shown automatically.\n       *\n       * @method submit\n       * @private\n       */\n      function submitHandler(e) {\n        var _this$args$onBefore,\n          _this$args,\n          _this2 = this;\n        var throwValidationErrors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        if (e) {\n          e.preventDefault();\n        }\n        if (this.preventConcurrency && this.isSubmitting) {\n          return Promise.resolve();\n        }\n        var model = this.model;\n        this.pendingSubmissions++;\n        (_this$args$onBefore = (_this$args = this.args).onBefore) === null || _this$args$onBefore === void 0 || _this$args$onBefore.call(_this$args, model);\n        return Promise.resolve().then(function () {\n          return _this2.hasValidator ? _this2.validate(model, _this2._element) : null;\n        }).then(function (record) {\n          if (_this2.args.hideValidationsOnSubmit === true) {\n            _this2.showAllValidations = false;\n          }\n          return Promise.resolve().then(function () {\n            var _this2$args$onSubmit, _this2$args;\n            return (_this2$args$onSubmit = (_this2$args = _this2.args).onSubmit) === null || _this2$args$onSubmit === void 0 ? void 0 : _this2$args$onSubmit.call(_this2$args, model, record);\n          }).then(function () {\n            if (_this2.isDestroyed) {\n              return;\n            }\n            _this2.isSubmitted = true;\n          }).catch(function (error) {\n            if (_this2.isDestroyed) {\n              return;\n            }\n            _this2.isRejected = true;\n            throw error;\n          }).finally(function () {\n            if (_this2.isDestroyed) {\n              return;\n            }\n            _this2.pendingSubmissions--;\n\n            // reset forced hiding of validations\n            if (_this2.showAllValidations === false) {\n              (0, _runloop.next)(function () {\n                return _this2.showAllValidations = undefined;\n              });\n            }\n          });\n        }, function (error) {\n          return Promise.resolve().then(function () {\n            var _this2$args$onInvalid, _this2$args2;\n            return (_this2$args$onInvalid = (_this2$args2 = _this2.args).onInvalid) === null || _this2$args$onInvalid === void 0 ? void 0 : _this2$args$onInvalid.call(_this2$args2, model, error);\n          }).finally(function () {\n            if (_this2.isDestroyed) {\n              return;\n            }\n            _this2.showAllValidations = true;\n            _this2.isRejected = true;\n            _this2.pendingSubmissions = _this2.pendingSubmissions - 1;\n            if (throwValidationErrors) {\n              throw error;\n            }\n          });\n        });\n      }\n    }, {\n      key: \"handleSubmit\",\n      value: function handleSubmit(event) {\n        this.submitHandler(event, false);\n      }\n    }, {\n      key: \"handleKeyPress\",\n      value: function handleKeyPress(event) {\n        var code = event.keyCode || event.which;\n        if (code === 13 && this.args.submitOnEnter) {\n          this.submitHandler();\n        }\n      }\n    }, {\n      key: \"elementChanged\",\n      value: function elementChanged(value, model, property) {\n        (true && !((0, _utils.isPresent)(model) && (0, _utils.isPresent)(property)) && (0, _debug.assert)(\"You cannot use the form element's default onChange action for form elements if not using a model or setting the value directly on a form element. You must add your own onChange action to the form element in this case!\", (0, _utils.isPresent)(model) && (0, _utils.isPresent)(property)));\n        if (typeof model.set === 'function') {\n          model.set(property, value);\n        } else {\n          (0, _object.set)(model, property, value);\n        }\n      }\n    }, {\n      key: \"resetSubmissionState\",\n      value: function resetSubmissionState() {\n        this.isSubmitted = false;\n        this.isRejected = false;\n      }\n    }, {\n      key: \"doSubmit\",\n      value: function doSubmit() {\n        return this.submitHandler();\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"model\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"model\"), _class.prototype), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"formLayout\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'vertical';\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"horizontalLabelGridClass\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'col-md-4';\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"isSubmitted\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"isRejected\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"pendingSubmissions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 0;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"preventConcurrency\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"_showAllValidations\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return undefined;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"showValidations\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleSubmit\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleSubmit\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleKeyPress\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleKeyPress\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"elementChanged\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"elementChanged\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"resetSubmissionState\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resetSubmissionState\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"doSubmit\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"doSubmit\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Form);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/debug\", \"@ember/utils\", \"@ember/array\", \"@ember/application\", \"@ember/object/internals\", \"ember-ref-bucket\", \"ember-bootstrap/components/bs-form/element/control/input\", \"ember-bootstrap/components/bs-form/element/control/checkbox\", \"ember-bootstrap/components/bs-form/element/control/textarea\", \"ember-bootstrap/components/bs-form/element/control/radio\", \"ember-bootstrap/components/bs-form/element/control/switch\", \"ember-bootstrap/utils/decorators/arg\", \"tracked-toolbox\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _debug, _utils, _array, _application, _internals, _emberRefBucket, _input, _checkbox, _textarea, _radio, _switch, _arg, _trackedToolbox, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/debug\",0,\"@ember/utils\",0,\"@ember/array\",0,\"@ember/application\",0,\"@ember/object/internals\",0,\"ember-ref-bucket\",0,\"ember-bootstrap/components/bs-form/element/control/input\",0,\"ember-bootstrap/components/bs-form/element/control/checkbox\",0,\"ember-bootstrap/components/bs-form/element/control/textarea\",0,\"ember-bootstrap/components/bs-form/element/control/radio\",0,\"ember-bootstrap/components/bs-form/element/control/switch\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"tracked-toolbox\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{!-- template-lint-disable no-invalid-interactive --}}\n  <div\n    class=\"{{if (macroCondition (macroGetOwnConfig \"isNotBS5\")) \"form-group\"}} {{if (macroCondition (macroGetOwnConfig \"isBS5\")) (if (bs-eq @formLayout \"vertical\") \"mb-3\")}} {{if (bs-eq @formLayout \"horizontal\") (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"row mb-3\" \"row\")}}\"\n    ...attributes\n    {{create-ref \"mainNode\"}}\n    {{on \"focusout\" this.showValidationOnHandler}}\n    {{on \"change\" this.showValidationOnHandler}}\n    {{on \"input\" this.showValidationOnHandler}}\n    {{did-update this.handleShowAllValidationsChange this.showAllValidations}}\n  >\n    {{#component\n      (ensure-safe-component\n        (bs-default\n          @layoutComponent\n          (if\n            (bs-contains (array \"checkbox\" \"switch\") this.controlType)\n            (if\n              (bs-eq @formLayout \"inline\")\n              (component \"bs-form/element/layout/inline/checkbox\" controlType=this.controlType)\n              (if\n                (bs-eq @formLayout \"horizontal\")\n                (component \"bs-form/element/layout/horizontal/checkbox\" controlType=this.controlType)\n                (component \"bs-form/element/layout/vertical/checkbox\" controlType=this.controlType)\n              )\n            )\n            (if\n              (bs-eq @formLayout \"inline\")\n              (component \"bs-form/element/layout/inline\")\n              (if\n                (bs-eq @formLayout \"horizontal\")\n                (component \"bs-form/element/layout/horizontal\")\n                (component \"bs-form/element/layout/vertical\")\n              )\n            )\n          )\n        )\n      )\n      hasLabel=(if @label true false)\n      formElementId=this.formElementId\n      horizontalLabelGridClass=@horizontalLabelGridClass\n      errorsComponent=(component (ensure-safe-component (bs-default @errorsComponent (component \"bs-form/element/errors\")))\n        messages=this.validationMessages\n        show=this.showValidationMessages\n        showMultipleErrors=this.showMultipleErrors\n      )\n      feedbackIconComponent=(component (ensure-safe-component (bs-default @feedbackIconComponent (component \"bs-form/element/feedback-icon\")))\n        iconName=@iconName\n        show=this.hasFeedback\n      )\n      labelComponent=(component\n        (ensure-safe-component\n          (bs-default\n            @labelComponent\n            (if\n              (bs-eq this.controlType \"radio\")\n              (component \"bs-form/element/legend\")\n              (component \"bs-form/element/label\")\n            )\n          )\n        )\n        label=@label\n        invisibleLabel=@invisibleLabel\n        formElementId=this.formElementId\n        controlType=this.controlType\n        formLayout=@formLayout\n        size=@size\n      )\n      helpTextComponent=(if @helpText\n        (component (ensure-safe-component (bs-default @helpTextComponent (component \"bs-form/element/help-text\")))\n          text=@helpText\n          id=this.ariaDescribedBy\n        )\n      )\n    }}\n      {{!\n        Ember does not allow to access a variable with `@` in template if its name start with an underscore.\n        `@_disabled` and `@_readonly` are affected by this. As a work-a-round we access them on `this.args`.\n      }}\n      {{!-- template-lint-disable no-args-paths --}}\n      {{#let\n        (component\n          (ensure-safe-component\n            (bs-default\n              @controlComponent\n              this.controlComponent\n            )\n          )\n          value=this.value\n          id=this.formElementId\n          type=this.controlType\n          label=@label\n          disabled=this.args._disabled\n          readonly=this.args._readonly\n          required=@required\n          options=@options\n          optionLabelPath=@optionLabelPath\n          ariaDescribedBy=(if @helpText this.ariaDescribedBy)\n          onChange=this.doChange\n          validationType=this.validation\n          size=@size\n      ) as |Control|}}\n      {{!-- template-lint-enable no-args-paths --}}\n        {{#if (has-block)}}\n          {{yield\n            (hash\n              value=this.value\n              setValue=this.doChange\n              id=this.formElementId\n              validation=this.validation\n              control=Control\n            )\n          }}\n        {{else}}\n          <Control />\n        {{/if}}\n      {{/let}}\n    {{/component}}\n  </div>\n  \n  */\n  {\n    \"id\": \"gEst6NDv\",\n    \"block\": \"[[[11,0],[16,0,[29,[\\\"form-group\\\",\\\" \\\",[27],\\\" \\\",[52,[28,[37,2],[[30,1],\\\"horizontal\\\"],null],\\\"row\\\"]]]],[17,2],[4,[38,3],[\\\"mainNode\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[4,[38,4],[\\\"focusout\\\",[30,0,[\\\"showValidationOnHandler\\\"]]],null],[4,[38,4],[\\\"change\\\",[30,0,[\\\"showValidationOnHandler\\\"]]],null],[4,[38,4],[\\\"input\\\",[30,0,[\\\"showValidationOnHandler\\\"]]],null],[4,[38,5],[[30,0,[\\\"handleShowAllValidationsChange\\\"]],[30,0,[\\\"showAllValidations\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[46,[28,[37,7],[[28,[37,8],[[30,3],[52,[28,[37,9],[[28,[37,10],[\\\"checkbox\\\",\\\"switch\\\"],null],[30,0,[\\\"controlType\\\"]]],null],[52,[28,[37,2],[[30,1],\\\"inline\\\"],null],[50,\\\"bs-form/element/layout/inline/checkbox\\\",0,null,[[\\\"controlType\\\"],[[30,0,[\\\"controlType\\\"]]]]],[52,[28,[37,2],[[30,1],\\\"horizontal\\\"],null],[50,\\\"bs-form/element/layout/horizontal/checkbox\\\",0,null,[[\\\"controlType\\\"],[[30,0,[\\\"controlType\\\"]]]]],[50,\\\"bs-form/element/layout/vertical/checkbox\\\",0,null,[[\\\"controlType\\\"],[[30,0,[\\\"controlType\\\"]]]]]]],[52,[28,[37,2],[[30,1],\\\"inline\\\"],null],[50,\\\"bs-form/element/layout/inline\\\",0,null,null],[52,[28,[37,2],[[30,1],\\\"horizontal\\\"],null],[50,\\\"bs-form/element/layout/horizontal\\\",0,null,null],[50,\\\"bs-form/element/layout/vertical\\\",0,null,null]]]]],null]],null],null,[[\\\"hasLabel\\\",\\\"formElementId\\\",\\\"horizontalLabelGridClass\\\",\\\"errorsComponent\\\",\\\"feedbackIconComponent\\\",\\\"labelComponent\\\",\\\"helpTextComponent\\\"],[[52,[30,4],true,false],[30,0,[\\\"formElementId\\\"]],[30,5],[50,[28,[37,7],[[28,[37,8],[[30,6],[50,\\\"bs-form/element/errors\\\",0,null,null]],null]],null],0,null,[[\\\"messages\\\",\\\"show\\\",\\\"showMultipleErrors\\\"],[[30,0,[\\\"validationMessages\\\"]],[30,0,[\\\"showValidationMessages\\\"]],[30,0,[\\\"showMultipleErrors\\\"]]]]],[50,[28,[37,7],[[28,[37,8],[[30,7],[50,\\\"bs-form/element/feedback-icon\\\",0,null,null]],null]],null],0,null,[[\\\"iconName\\\",\\\"show\\\"],[[30,8],[30,0,[\\\"hasFeedback\\\"]]]]],[50,[28,[37,7],[[28,[37,8],[[30,9],[52,[28,[37,2],[[30,0,[\\\"controlType\\\"]],\\\"radio\\\"],null],[50,\\\"bs-form/element/legend\\\",0,null,null],[50,\\\"bs-form/element/label\\\",0,null,null]]],null]],null],0,null,[[\\\"label\\\",\\\"invisibleLabel\\\",\\\"formElementId\\\",\\\"controlType\\\",\\\"formLayout\\\",\\\"size\\\"],[[30,4],[30,10],[30,0,[\\\"formElementId\\\"]],[30,0,[\\\"controlType\\\"]],[30,1],[30,11]]]],[52,[30,12],[50,[28,[37,7],[[28,[37,8],[[30,13],[50,\\\"bs-form/element/help-text\\\",0,null,null]],null]],null],0,null,[[\\\"text\\\",\\\"id\\\"],[[30,12],[30,0,[\\\"ariaDescribedBy\\\"]]]]]]]],[[\\\"default\\\"],[[[[44,[[50,[28,[37,7],[[28,[37,8],[[30,14],[30,0,[\\\"controlComponent\\\"]]],null]],null],0,null,[[\\\"value\\\",\\\"id\\\",\\\"type\\\",\\\"label\\\",\\\"disabled\\\",\\\"readonly\\\",\\\"required\\\",\\\"options\\\",\\\"optionLabelPath\\\",\\\"ariaDescribedBy\\\",\\\"onChange\\\",\\\"validationType\\\",\\\"size\\\"],[[30,0,[\\\"value\\\"]],[30,0,[\\\"formElementId\\\"]],[30,0,[\\\"controlType\\\"]],[30,4],[30,0,[\\\"args\\\",\\\"_disabled\\\"]],[30,0,[\\\"args\\\",\\\"_readonly\\\"]],[30,15],[30,16],[30,17],[52,[30,12],[30,0,[\\\"ariaDescribedBy\\\"]]],[30,0,[\\\"doChange\\\"]],[30,0,[\\\"validation\\\"]],[30,11]]]]],[[[41,[48,[30,19]],[[[1,\\\"        \\\"],[18,19,[[28,[37,14],null,[[\\\"value\\\",\\\"setValue\\\",\\\"id\\\",\\\"validation\\\",\\\"control\\\"],[[30,0,[\\\"value\\\"]],[30,0,[\\\"doChange\\\"]],[30,0,[\\\"formElementId\\\"]],[30,0,[\\\"validation\\\"]],[30,18]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[30,18],null,null,null],[1,\\\"\\\\n\\\"]],[]]]],[18]]]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[\\\"@formLayout\\\",\\\"&attrs\\\",\\\"@layoutComponent\\\",\\\"@label\\\",\\\"@horizontalLabelGridClass\\\",\\\"@errorsComponent\\\",\\\"@feedbackIconComponent\\\",\\\"@iconName\\\",\\\"@labelComponent\\\",\\\"@invisibleLabel\\\",\\\"@size\\\",\\\"@helpText\\\",\\\"@helpTextComponent\\\",\\\"@controlComponent\\\",\\\"@required\\\",\\\"@options\\\",\\\"@optionLabelPath\\\",\\\"Control\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"bs-eq\\\",\\\"create-ref\\\",\\\"on\\\",\\\"did-update\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"bs-contains\\\",\\\"array\\\",\\\"let\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Subclass of `Components.FormGroup` that adds automatic form layout markup and form validation features.\n  \n    ### Form layout\n  \n    The appropriate Bootstrap markup for the given `formLayout` and `controlType` is automatically generated to easily\n    create forms without coding the default Bootstrap form markup by hand:\n  \n    ```handlebars\n    <BsForm @formLayout=\"horizontal\" @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @controlType=\"email\" @label=\"Email\" @value={{this.email}} />\n      <form.element @controlType=\"password\" @label=\"Password\" @value={{this.password}} />\n      <form.element @controlType=\"checkbox\" @label=\"Remember me\" @value={{this.rememberMe}} />\n      <BsButton @defaultText=\"Submit\" @type=\"primary\" type=\"submit\" />\n    </BsForm>\n    ```\n  \n    ### Control types\n  \n    The following control types are supported out of the box:\n  \n    * Inputs (simple `text`, or any other HTML5 supported input types like `password`, `email` etc.)\n    * Checkbox (single)\n    * Radio Button (group)\n    * Textarea\n    * Switch (BS4 Only)\n  \n    #### Radio Buttons\n  \n    For a group of mutually exclusive radio buttons to work, you must supply the `options` property with an array of\n    options, each of which will be rendered with an appropriate radio button and its label. It can be either a simple array\n    of strings or objects. In the latter case, you would have to set `optionLabelPath` to the property, that contains the\n    label on these objects.\n  \n    ```hbs\n    <BsForm @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @controlType=\"radio\" @label=\"Gender\" @options={{this.genderOptions}} @optionLabelPath=\"title\" @property=\"gender\" />\n    </BsForm>\n    ```\n  \n    The default layout for radios is stacked, but Bootstrap's inline layout is also supported using the `inline` property\n    of the yielded control component:\n  \n    ```hbs\n    <BsForm @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @controlType=\"radio\" @label=\"Gender\" @options={{this.genderOptions}} @property=\"gender\" as |el|>\n        <el.control @inline={{true}} />\n      </form.element>\n    </BsForm>\n    ```\n  \n    #### Custom controls\n  \n    Apart from the standard built-in browser controls (see the `controlType` property), you can use any custom control simply\n    by invoking the component with a block template. Use whatever control you might want, for example a `<PikadayInput>`\n    component (from the [ember-pikaday addon](https://github.com/adopted-ember-addons/ember-pikaday)):\n  \n    ```hbs\n    <BsForm @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @label=\"Select-2\" @property=\"gender\" as |el|>\n        <PikadayInput @value={{el.value}} @onSelection={{el.setValue}} id={{el.id}} />\n      </form.element>\n    </BsForm>\n    ```\n  \n    The component yields a hash with the following properties:\n    * `control`: the component that would be used for rendering the form control based on the given `controlType`\n    * `id`: id to be used for the form control, so it matches the labels `for` attribute\n    * `value`: the value of the form element\n    * `setValue`: function to change the value of the form element\n    * `validation`: the validation state of the element, `null` if no validation is to be shown, otherwise 'success', 'error' or 'warning'\n  \n    If you just want to customize the existing control component, you can use the aforementioned yielded `control` component\n    to customize that existing component:\n  \n    ```hbs\n    <BsForm @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @label=\"Email\" @property=\"email\" as |el|>\n        <el.control class=\"input-lg\" placeholder=\"Email\" />\n      </form.element>\n    </BsForm>\n    ```\n  \n    If you are using the custom control quite often, you should consider writing an integration plugin like\n    [`ember-bootstrap-power-select`](https://github.com/kaliber5/ember-bootstrap-power-select).\n    To do so, you need to provide a component `{{bs-form/element/control/my-custom-control}}` which extends\n    [`Components.FormElementControl`](Components.FormElementControl.html).\n  \n    ### Form validation\n  \n    In the following example the control elements of the three form elements value will be bound to the properties\n    (given by `property`) of the form's `model`, which in this case is its controller (see `model=this`):\n  \n    ```handlebars\n    <BsForm @formLayout=\"horizontal\" @model={{this}} @onSubmit={{this.submit}} as |form|>\n      <form.element @controlType=\"email\" @label=\"Email\" @property=\"email\" />\n      <form.element @controlType=\"password\" @label=\"Password\" @property=\"password\" />\n      <form.element @controlType=\"checkbox\" @label=\"Remember me\" @property=\"rememberMe\" />\n      <form.submitButton>Submit</form.submitButton>\n    </BsForm>\n    ```\n  \n    By using this indirection in comparison to directly binding the `value` property, you get the benefit of automatic\n    form validation, given that your `model` has a supported means of validating itself.\n    See [Components.Form](Components.Form.html) for details on how to enable form validation.\n  \n    In the example above the `model` was our controller itself, so the control elements were bound to the appropriate\n    properties of our controller. A controller implementing validations on those properties could look like this:\n  \n    ```js\n    import Ember from 'ember';\n    import EmberValidations from 'ember-validations';\n  \n    export default Ember.Controller.extend(EmberValidations,{\n      email: null,\n      password: null,\n      rememberMe: false,\n      validations: {\n        email: {\n          presence: true,\n          format: {\n            with: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/\n          }\n        },\n        password: {\n          presence: true,\n          length: { minimum: 6, maximum: 10}\n        },\n        comments: {\n          length: { minimum: 5, maximum: 20}\n        }\n      }\n    });\n    ```\n  \n    If the `showValidation` property is `true` (which is automatically the case if a `focusOut` event is captured from the\n    control element or the containing `Components.Form` was submitted with its `model` failing validation) and there are\n    validation errors for the `model`'s `property`, the appropriate Bootstrap validation markup (see\n    http://getbootstrap.com/css/#forms-control-validation) is applied:\n  \n    * `validation` is set to 'error', which will set the `has-error` CSS class\n    * the `errorIcon` feedback icon is displayed if `controlType` is a text field\n    * the validation messages are displayed as Bootstrap `help-block`s in BS3 and `form-control-feedback` in BS4\n  \n    The same applies for warning messages, if the used validation library supports this. (Currently only\n    [ember-cp-validations](https://github.com/offirgolan/ember-cp-validations))\n  \n    As soon as the validation is successful again...\n  \n    * `validation` is set to 'success', which will set the `has-success` CSS class\n    * the `successIcon` feedback icon is displayed if `controlType` is a text field\n    * the validation messages are removed\n  \n    In case you want to display some error or warning message that is independent of the model's validation, for\n    example to display a failure message on a login form after a failed authentication attempt (so not coming from\n    the validation library), you can use the `customError` or `customWarning` properties to do so.\n  \n    ### HTML attributes\n  \n    To set HTML attributes on the control element provided by this component when using the modern angle bracket invocation,\n    you can pass them to the yielded `control` component:\n  \n    ```hbs\n    <BsForm @formLayout=\"horizontal\" @model={{this}} @onSubmit={{this.submit}} as |form|>\n    <form.element @controlType=\"email\" @label=\"Email\" @property=\"email\" as |el|>\n      <el.control\n        placeholder=\"Email\"\n        tabindex={{5}}\n        multiple\n        required\n      />\n    </form.element>\n    ...\n    </BsForm>\n    ```\n  \n    @class FormElement\n    @namespace Components\n    @extends Components.FormGroup\n    @public\n  */\n  var FormElement = _exports.default = (_dec = (0, _emberRefBucket.ref)('mainNode'), _class = /*#__PURE__*/function (_Component) {\n    /**\n     * @property errorsComponent\n     * @type {String}\n     * @private\n     */\n\n    /**\n     * @property feedbackIconComponent\n     * @type {String}\n     * @private\n     */\n\n    /**\n     * @property labelComponent\n     * @type {String}\n     * @private\n     */\n\n    /**\n     * @property helpTextComponent\n     * @type {String}\n     * @private\n     */\n\n    /**\n     * Setup validation properties. This method acts as a hook for external validation\n     * libraries to overwrite. In case of failed validations the `errors` property should contain an array of error messages.\n     *\n     * @method setupValidations\n     * @private\n     */\n\n    /**\n     * The action is called whenever the input value is changed, e.g. by typing text\n     *\n     * @event onChange\n     * @param {String} value The new value of the form control\n     * @param {Object} model The form element's model\n     * @param {String} property The value of `property`\n     * @public\n     */\n\n    /**\n     * Private duplicate of onChange event used for internal state handling between form and it's elements.\n     *\n     * @event _onChange\n     * @private\n     */\n\n    function FormElement() {\n      var _this;\n      _classCallCheck(this, FormElement);\n      _this = _callSuper(this, FormElement, arguments);\n      /**\n       * @property _element\n       * @type null | HTMLElement\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_element\", _descriptor, _this);\n      /**\n       * Text to display within a `<label>` tag.\n       *\n       * You should include a label for every form input cause otherwise screen readers\n       * will have trouble with your forms. Use `invisibleLabel` property if you want\n       * to hide them.\n       *\n       * @property label\n       * @type string\n       * @public\n       */\n      /**\n       * Controls label visibility by adding 'sr-only' class.\n       *\n       * @property invisibleLabel\n       * @type boolean\n       * @default false\n       * @public\n       */\n      /**\n       * The type of the control widget.\n       * Supported types:\n       *\n       * * 'text'\n       * * 'checkbox'\n       * * 'radio'\n       * * 'switch'\n       * * 'textarea'\n       * * any other type will use an input tag with the `controlType` value as the type attribute (for e.g. HTML5 input\n       * types like 'email'), and the same layout as the 'text' type\n       *\n       * @property controlType\n       * @type string\n       * @default 'text'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"controlType\", _descriptor2, _this);\n      /**\n       The property name of the form element's `model` (by default the `model` of its parent `Components.Form`) that this\n       form element should represent. The control element's value will automatically be bound to the model property's\n       value.\n        Using this property enables form validation on this element.\n        @property property\n       @type string\n       @public\n       */\n      /**\n       * The model used for validation. Defaults to the parent `Components.Form`'s `model`\n       *\n       * @property model\n       * @public\n       */\n      /**\n       * Show a help text next to the control\n       *\n       * @property helpText\n       * @type {string}\n       * @public\n       */\n      /**\n       * Only if there is a validator, this property makes all errors to be displayed at once\n       * inside a scrollable container.\n       *\n       * @default false\n       * @property showMultipleErrors\n       * @public\n       * @type {Boolean}\n       */\n      _initializerDefineProperty(_this, \"showMultipleErrors\", _descriptor3, _this);\n      /**\n       * Array of options for control types that show a selection (e.g. radio button groups)\n       * Can be an array of simple strings or objects. For objects use `optionLabelPath` to specify the path containing the\n       * label.\n       *\n       * @property options\n       * @type {Array}\n       * @public\n       */\n      /**\n       * Property path (e.g. 'title' or 'related.name') to render the label of a selection option. See `options`.\n       *\n       * @property optionLabelPath\n       * @type {String}\n       * @public\n       */\n      /**\n       * The array of error messages from the `model`'s validation.\n       *\n       * @property errors\n       * @type array\n       * @protected\n       */\n      // This shouldn't be an argument. It's only an argument because tests rely on\n      // setting it as an argument. See https://github.com/kaliber5/ember-bootstrap/issues/1338\n      // for details.\n      _initializerDefineProperty(_this, \"errors\", _descriptor4, _this);\n      /**\n       * The array of warning messages from the `model`'s validation.\n       *\n       * @property warnings\n       * @type array\n       * @protected\n       */\n      // This shouldn't be an argument. It's only an argument because tests rely on\n      // setting it as an argument. See https://github.com/kaliber5/ember-bootstrap/issues/1338\n      // for details.\n      _initializerDefineProperty(_this, \"warnings\", _descriptor5, _this);\n      /**\n       * Set a validating state for async validations\n       *\n       * @property isValidating\n       * @type boolean\n       * @default false\n       * @protected\n       */\n      _initializerDefineProperty(_this, \"isValidating\", _descriptor6, _this);\n      /**\n       * @property showOwnValidation\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"showOwnValidation\", _descriptor7, _this);\n      /**\n       * @property showAllValidations\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"showAllValidations\", _descriptor8, _this);\n      /**\n       * Event or list of events which enable form validation markup rendering.\n       * Supported events: ['focusout', 'change', 'input']\n       *\n       * @property showValidationOn\n       * @type string|array\n       * @default ['focusout']\n       * @public\n       */\n      _initializerDefineProperty(_this, \"showValidationOn\", _descriptor9, _this);\n      /**\n       * Controls if validation should be shown for specified event targets.\n       *\n       * It expects an array of query selectors. If event target is a children of an event that matches\n       * these selectors, an event triggered for it will not trigger validation errors to be shown.\n       *\n       * By default, events fired on elements inside an input group are skipped.\n       *\n       * If `null` or an empty array is passed validation errors are shown for all events regardless\n       * of event target.\n       *\n       * @property doNotShowValidationForEventTargets\n       * @type ?array\n       * @public\n       */\n      _initializerDefineProperty(_this, \"doNotShowValidationForEventTargets\", _descriptor10, _this);\n      /**\n       * The form layout used for the markup generation (see http://getbootstrap.com/css/#forms):\n       *\n       * * 'horizontal'\n       * * 'vertical'\n       * * 'inline'\n       *\n       * Defaults to the parent `form`'s `formLayout` property.\n       *\n       * @property formLayout\n       * @type string\n       * @default 'vertical'\n       * @public\n       */\n      /**\n       * The Bootstrap grid classes for form labels within a horizontal layout form. Defaults to the value of the same\n       * property of the parent form. The corresponding grid classes for form controls are automatically computed.\n       *\n       * @property horizontalLabelGridClass\n       * @type string\n       * @public\n       */\n      _defineProperty(_this, \"_elementId\", (0, _internals.guidFor)(_this));\n      if (!(0, _utils.isBlank)(_this.args.property)) {\n        var _this$setupValidation, _this2;\n        (_this$setupValidation = (_this2 = _this).setupValidations) === null || _this$setupValidation === void 0 || _this$setupValidation.call(_this2);\n      }\n      return _this;\n    }\n    _inherits(FormElement, _Component);\n    return _createClass(FormElement, [{\n      key: \"value\",\n      get:\n      /**\n       * The value of the control element is bound to this property:\n       *\n       * ```hbs\n       * <form.element @controlType=\"email\" @label=\"Email\" @value={{this.email}} />\n       * ```\n       *\n       * Note two things:\n       * * the binding is uni-directional (DDAU), so you would have to use the `onChange` action to subscribe to changes.\n       * * you lose the ability to validate this form element by directly binding to its value. It is recommended\n       * to use the `property` feature instead.\n       *\n       * @property value\n       * @public\n       */\n      function get() {\n        (true && !((0, _utils.isBlank)(this.args.property) || (0, _utils.isBlank)(this.args.value)) && (0, _debug.assert)('You can not set both property and value on a form element', (0, _utils.isBlank)(this.args.property) || (0, _utils.isBlank)(this.args.value)));\n        if (this.args.property && this.args.model) {\n          return (0, _object.get)(this.args.model, this.args.property);\n        }\n        return this.args.value;\n      }\n    }, {\n      key: \"hasErrors\",\n      get:\n      /**\n       * @property hasErrors\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      function get() {\n        return Array.isArray(this.errors) && this.errors.length > 0;\n      }\n    }, {\n      key: \"hasWarnings\",\n      get:\n      /**\n       * @property hasWarnings\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      function get() {\n        return Array.isArray(this.warnings) && this.warnings.length > 0;\n      }\n\n      /**\n       * Show a custom error message that does not come from the model's validation. Will be immediately shown, regardless\n       * of any user interaction (i.e. no `focusOut` event required)\n       *\n       * @property customError\n       * @type string\n       * @public\n       */\n\n      /**\n       * @property hasCustomError\n       * @type boolean\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"hasCustomError\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.args.customError);\n      }\n\n      /**\n       * Show a custom warning message that does not come from the model's validation. Will be immediately shown, regardless\n       * of any user interaction (i.e. no `focusOut` event required). If the model's validation has an error then the error\n       * will be shown in place of this warning.\n       *\n       * @property customWarning\n       * @type string\n       * @public\n       */\n\n      /**\n       * @property hasCustomWarning\n       * @type boolean\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"hasCustomWarning\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.args.customWarning);\n      }\n\n      /**\n       * Property for size styling, set to 'lg', 'sm' or 'xs' (the latter only for BS3)\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n\n      /**\n       * The array of validation messages (either errors or warnings) from either custom error/warnings or , if we are showing model validation messages, the model's validation\n       *\n       * @property validationMessages\n       * @type array\n       * @private\n       */\n    }, {\n      key: \"validationMessages\",\n      get: function get() {\n        if (this.hasCustomError) {\n          return (0, _array.A)([this.args.customError]);\n        }\n        if (this.hasErrors && this.showModelValidation) {\n          return (0, _array.A)(this.errors);\n        }\n        if (this.hasCustomWarning) {\n          return (0, _array.A)([this.args.customWarning]);\n        }\n        if (this.hasWarnings && this.showModelValidation) {\n          return (0, _array.A)(this.warnings);\n        }\n        return null;\n      }\n\n      /**\n       * @property hasValidationMessages\n       * @type boolean\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"hasValidationMessages\",\n      get: function get() {\n        return Array.isArray(this.validationMessages) && this.validationMessages.length > 0;\n      }\n    }, {\n      key: \"showValidation\",\n      get:\n      /**\n       * If `true` form validation markup is rendered (requires a validatable `model`).\n       *\n       * @property showValidation\n       * @type boolean\n       * @default false\n       * @private\n       */\n      function get() {\n        return this.showOwnValidation || this.showAllValidations || this.hasCustomError || this.hasCustomWarning;\n      }\n    }, {\n      key: \"handleShowAllValidationsChange\",\n      value:\n      /*\n       * Resets `showOwnValidation` if `@showAllValidations` argument is changed to `false`.\n       * Must be called whenever `@showAllValidations` argument changes.\n       */\n      function handleShowAllValidationsChange() {\n        if (this.args.showAllValidations === false) {\n          this.showOwnValidation = false;\n        }\n      }\n\n      /**\n       * @property showModelValidations\n       * @type boolean\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"showModelValidation\",\n      get: function get() {\n        return this.showOwnValidation || this.showAllValidations;\n      }\n\n      /**\n       * @property showValidationMessages\n       * @type boolean\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"showValidationMessages\",\n      get: function get() {\n        return this.showValidation && this.hasValidationMessages;\n      }\n    }, {\n      key: \"_showValidationOn\",\n      get:\n      /**\n       * @property _showValidationOn\n       * @type array\n       * @readonly\n       * @private\n       */\n      function get() {\n        var showValidationOn = this.showValidationOn;\n        (true && !((0, _array.isArray)(showValidationOn) || (0, _utils.typeOf)(showValidationOn) === 'string') && (0, _debug.assert)('showValidationOn must be a String or an Array', (0, _array.isArray)(showValidationOn) || (0, _utils.typeOf)(showValidationOn) === 'string'));\n        if ((0, _array.isArray)(showValidationOn)) {\n          return showValidationOn.map(function (type) {\n            return type.toLowerCase();\n          });\n        }\n        if (typeof showValidationOn.toString === 'function') {\n          return [showValidationOn.toLowerCase()];\n        }\n        return [];\n      }\n\n      /**\n       * @method showValidationOnHandler\n       * @param {Event} event\n       * @private\n       */\n    }, {\n      key: \"showValidationOnHandler\",\n      value: function showValidationOnHandler(_ref) {\n        var target = _ref.target,\n          type = _ref.type;\n        // Should not do anything if\n        if (\n        // validations should not be shown for this event type or\n        this._showValidationOn.indexOf(type) === -1 ||\n        // validation should not be shown for this event target\n        (0, _array.isArray)(this.doNotShowValidationForEventTargets) && this.doNotShowValidationForEventTargets.length > 0 && this._element && _toConsumableArray(this._element.querySelectorAll(this.doNotShowValidationForEventTargets.join(','))).some(function (el) {\n          return el.contains(target);\n        })) {\n          return;\n        }\n        this.showOwnValidation = true;\n      }\n    }, {\n      key: \"validation\",\n      get:\n      /**\n       * The validation (\"error\" (BS3)/\"danger\" (BS4), \"warning\", or \"success\") or null if no validation is to be shown. Automatically computed from the\n       * model's validation state.\n       *\n       * @property validation\n       * @readonly\n       * @type string\n       * @private\n       */\n      function get() {\n        var shouldShowValidationState = this.showModelValidation && this.hasValidator && !this.isValidating && !this.args._disabled;\n        if (/* custom errors should be always shown */\n        this.hasCustomError || (/* validation error should be shown in preference to warnings */\n        shouldShowValidationState && this.hasErrors)) {\n          return 'error';\n        }\n        if (/* custom warning should be always shown unless there is a validation error */\n        this.hasCustomWarning || shouldShowValidationState && this.hasWarnings) {\n          return 'warning';\n        }\n        if (shouldShowValidationState) {\n          return 'success';\n        }\n        return null;\n      }\n    }, {\n      key: \"formElementId\",\n      get:\n      /**\n       * ID for input field and the corresponding label's \"for\" attribute\n       *\n       * @property formElementId\n       * @type string\n       * @private\n       */\n      function get() {\n        return \"\".concat(this._elementId, \"-field\");\n      }\n\n      /**\n       * ID of the helpText, used for aria-describedby attribute of the control element\n       *\n       * @property ariaDescribedBy\n       * @type string\n       * @private\n       */\n    }, {\n      key: \"ariaDescribedBy\",\n      get: function get() {\n        return \"\".concat(this._elementId, \"-help\");\n      }\n\n      /**\n       * @property layoutComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property controlComponent\n       * @private\n       */\n    }, {\n      key: \"controlComponent\",\n      get: function get() {\n        var owner = (0, _application.getOwner)(this);\n        var componentClass = owner.resolveRegistration(\"component:bs-form/element/control/\".concat(this.controlType));\n        if (componentClass) {\n          return componentClass;\n        }\n        if (this.controlType === 'checkbox') {\n          return _checkbox.default;\n        } else if (this.controlType === 'textarea') {\n          return _textarea.default;\n        } else if (this.controlType === 'radio') {\n          return _radio.default;\n        } else if (this.controlType === 'switch') {\n          return _switch.default;\n        } else {\n          return _input.default;\n        }\n      }\n    }, {\n      key: \"doChange\",\n      value: function doChange(value) {\n        var _this$args = this.args,\n          onChange = _this$args.onChange,\n          model = _this$args.model,\n          property = _this$args.property,\n          _onChange = _this$args._onChange;\n        onChange === null || onChange === void 0 || onChange(value, model, property);\n        _onChange === null || _onChange === void 0 || _onChange();\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"controlType\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'text';\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"showMultipleErrors\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"errors\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"warnings\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"isValidating\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"showOwnValidation\", [_trackedToolbox.dedupeTracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"showAllValidations\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleShowAllValidationsChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleShowAllValidationsChange\"), _class.prototype), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"showValidationOn\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return ['focusOut'];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"showValidationOnHandler\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"showValidationOnHandler\"), _class.prototype), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"doNotShowValidationForEventTargets\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return ['.input-group-append', '.input-group-prepend'];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"doChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"doChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElement);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/control\", [\"exports\", \"@glimmer/component\", \"ember-bootstrap/utils/form-validation-class\"], function (_exports, _component, _formValidationClass) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"ember-bootstrap/utils/form-validation-class\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  /**\n  \n   @class FormElementControl\n   @namespace Components\n   @extends Ember.Component\n   @private\n   */\n  var FormElementControl = _exports.default = /*#__PURE__*/function (_Component) {\n    function FormElementControl() {\n      _classCallCheck(this, FormElementControl);\n      return _callSuper(this, FormElementControl, arguments);\n    }\n    _inherits(FormElementControl, _Component);\n    return _createClass(FormElementControl, [{\n      key: \"formValidationClass\",\n      get:\n      /**\n       * @property value\n       * @public\n       */\n\n      function get() {\n        return (0, _formValidationClass.default)(this.args.validationType);\n      }\n\n      /**\n       * This action is called whenever the `value` changes\n       *\n       * @event onChange\n       * @param {*} value\n       * @public\n       */\n    }]);\n  }(_component.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/control/checkbox\", [\"exports\", \"@ember/component\", \"@ember/object\", \"ember-bootstrap/components/bs-form/element/control\", \"@ember/template-factory\"], function (_exports, _component, _object, _control, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-bootstrap/components/bs-form/element/control\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <input\n    type=\"checkbox\"\n    id={{@id}}\n    disabled={{@disabled}}\n    readonly={{@readonly}}\n    aria-describedby={{@ariaDescribedBy}}\n    checked={{@value}}\n    class=\"form-check-input {{this.formValidationClass}}\"\n    ...attributes\n    {{on \"click\" this.handleClick}}\n  >\n  \n  \n  */\n  {\n    \"id\": \"kggVqlM7\",\n    \"block\": \"[[[11,\\\"input\\\"],[24,4,\\\"checkbox\\\"],[16,1,[30,1]],[16,\\\"disabled\\\",[30,2]],[16,\\\"readonly\\\",[30,3]],[16,\\\"aria-describedby\\\",[30,4]],[16,\\\"checked\\\",[30,5]],[16,0,[29,[\\\"form-check-input \\\",[30,0,[\\\"formValidationClass\\\"]]]]],[17,6],[4,[38,1],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\\n\\\"]],[\\\"@id\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@ariaDescribedBy\\\",\\\"@value\\\",\\\"&attrs\\\"],false,[\\\"input\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/control/checkbox.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n  \n   @class FormElementControlCheckbox\n   @namespace Components\n   @extends Components.FormElementControl\n   @private\n   */\n  var FormElementControlCheckbox = _exports.default = (_class = /*#__PURE__*/function (_Control) {\n    function FormElementControlCheckbox() {\n      _classCallCheck(this, FormElementControlCheckbox);\n      return _callSuper(this, FormElementControlCheckbox, arguments);\n    }\n    _inherits(FormElementControlCheckbox, _Control);\n    return _createClass(FormElementControlCheckbox, [{\n      key: \"handleClick\",\n      value: function handleClick(event) {\n        this.args.onChange(event.target.checked);\n      }\n    }]);\n  }(_control.default), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementControlCheckbox);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/control/input\", [\"exports\", \"@ember/component\", \"@ember/object\", \"ember-bootstrap/components/bs-form/element/control\", \"ember-bootstrap/utils/size-class\", \"@ember/template-factory\"], function (_exports, _component, _object, _control, _sizeClass, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-bootstrap/components/bs-form/element/control\",0,\"ember-bootstrap/utils/size-class\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <input\n    type={{bs-default @type \"text\"}}\n    id={{@id}}\n    disabled={{@disabled}}\n    readonly={{@readonly}}\n    aria-describedby={{@ariaDescribedBy}}\n    value={{@value}}\n    class=\"form-control {{this.formValidationClass}} {{this.sizeClass}}\"\n    ...attributes\n    {{on \"change\" this.handleChange}}\n    {{on \"input\" this.handleInput}}\n  >\n  */\n  {\n    \"id\": \"acC9dqrr\",\n    \"block\": \"[[[11,\\\"input\\\"],[16,4,[28,[37,1],[[30,1],\\\"text\\\"],null]],[16,1,[30,2]],[16,\\\"disabled\\\",[30,3]],[16,\\\"readonly\\\",[30,4]],[16,\\\"aria-describedby\\\",[30,5]],[16,2,[30,6]],[16,0,[29,[\\\"form-control \\\",[30,0,[\\\"formValidationClass\\\"]],\\\" \\\",[30,0,[\\\"sizeClass\\\"]]]]],[17,7],[4,[38,2],[\\\"change\\\",[30,0,[\\\"handleChange\\\"]]],null],[4,[38,2],[\\\"input\\\",[30,0,[\\\"handleInput\\\"]]],null],[12],[13]],[\\\"@type\\\",\\\"@id\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@ariaDescribedBy\\\",\\\"@value\\\",\\\"&attrs\\\"],false,[\\\"input\\\",\\\"bs-default\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/control/input.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n  \n   @class FormElementControlInput\n   @namespace Components\n   @extends Components.FormElementControl\n   @private\n   */\n  var FormElementControlInput = _exports.default = (_class = /*#__PURE__*/function (_Control) {\n    function FormElementControlInput() {\n      _classCallCheck(this, FormElementControlInput);\n      return _callSuper(this, FormElementControlInput, arguments);\n    }\n    _inherits(FormElementControlInput, _Control);\n    return _createClass(FormElementControlInput, [{\n      key: \"handleChange\",\n      value:\n      /**\n       * @property type\n       * @type {String}\n       * @public\n       */\n\n      function handleChange(event) {\n        this.args.onChange(event.target.value);\n      }\n    }, {\n      key: \"handleInput\",\n      value: function handleInput(event) {\n        this.args.onChange(event.target.value);\n      }\n\n      /**\n       * [BS4 only] Property for size styling, set to 'lg', 'sm' or 'xs'\n       *\n       * Also see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/forms/#sizing)\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n    }, {\n      key: \"sizeClass\",\n      get: function get() {\n        return (0, _sizeClass.default)('form-control', this.args.size);\n      }\n    }]);\n  }(_control.default), _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleInput\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleInput\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementControlInput);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/control/radio\", [\"exports\", \"@ember/component\", \"ember-bootstrap/components/bs-form/element/control\", \"@ember/template-factory\"], function (_exports, _component, _control, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{!-- template-lint-disable no-positive-tabindex no-autofocus-attribute --}}\n  {{#each @options as |option index|}}\n    {{#let (concat @id \"-\" index) as |id|}}\n      <div class=\"form-check{{if @inline \" form-check-inline\"}}\">\n        <input\n          type=\"radio\"\n          class=\"form-check-input\"\n          id={{id}}\n          checked={{bs-eq option @value}}\n          onclick={{fn @onChange option}}\n          name={{@name}}\n          required={{@required}}\n          disabled={{@disabled}}\n          autofocus={{@autofocus}}\n          tabindex={{@tabindex}}\n          form={{@form}}\n          title={{@title}}\n          ...attributes\n        >\n        <label\n          for={{id}}\n          class=\"form-check-label\"\n        >\n          {{#if (has-block)}}\n            {{yield option index}}\n          {{else}}\n            {{#if @optionLabelPath}}\n              {{get option @optionLabelPath}}\n            {{else}}\n              {{option}}\n            {{/if}}\n          {{/if}}\n        </label>\n      </div>\n    {{/let}}\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"92wcpLoW\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,1]],null]],null],null,[[[44,[[28,[37,3],[[30,4],\\\"-\\\",[30,3]],null]],[[[1,\\\"    \\\"],[10,0],[15,0,[29,[\\\"form-check\\\",[52,[30,6],\\\" form-check-inline\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[11,\\\"input\\\"],[24,4,\\\"radio\\\"],[24,0,\\\"form-check-input\\\"],[16,1,[30,5]],[16,\\\"checked\\\",[28,[37,7],[[30,2],[30,7]],null]],[16,\\\"onclick\\\",[28,[37,8],[[30,8],[30,2]],null]],[16,3,[30,9]],[16,\\\"required\\\",[30,10]],[16,\\\"disabled\\\",[30,11]],[16,\\\"autofocus\\\",[30,12]],[16,\\\"tabindex\\\",[30,13]],[16,\\\"form\\\",[30,14]],[16,\\\"title\\\",[30,15]],[17,16],[12],[13],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[30,5]],[14,0,\\\"form-check-label\\\"],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,18]],[[[1,\\\"          \\\"],[18,18,[[30,2],[30,3]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,17],[[[1,\\\"            \\\"],[1,[28,[35,12],[[30,2],[30,17]],null]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[5]]]],[2,3]],null]],[\\\"@options\\\",\\\"option\\\",\\\"index\\\",\\\"@id\\\",\\\"id\\\",\\\"@inline\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@name\\\",\\\"@required\\\",\\\"@disabled\\\",\\\"@autofocus\\\",\\\"@tabindex\\\",\\\"@form\\\",\\\"@title\\\",\\\"&attrs\\\",\\\"@optionLabelPath\\\",\\\"&default\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"let\\\",\\\"concat\\\",\\\"div\\\",\\\"if\\\",\\\"input\\\",\\\"bs-eq\\\",\\\"fn\\\",\\\"label\\\",\\\"has-block\\\",\\\"yield\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/control/radio.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n  \n   @class FormElementControlRadio\n   @namespace Components\n   @extends Components.FormElementControl\n   @private\n   */\n  var FormElementControlRadio = _exports.default = /*#__PURE__*/function (_Control) {\n    function FormElementControlRadio() {\n      _classCallCheck(this, FormElementControlRadio);\n      return _callSuper(this, FormElementControlRadio, arguments);\n    }\n    _inherits(FormElementControlRadio, _Control);\n    return _createClass(FormElementControlRadio);\n  }(_control.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementControlRadio);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/control/switch\", [\"exports\", \"@ember/component\", \"@ember/object\", \"ember-bootstrap/components/bs-form/element/control\", \"@ember/template-factory\"], function (_exports, _component, _object, _control, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-bootstrap/components/bs-form/element/control\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <input\n    type=\"checkbox\"\n    id={{@id}}\n    disabled={{@disabled}}\n    readonly={{@readonly}}\n    aria-describedby={{@ariaDescribedBy}}\n    checked={{@value}}\n    class=\"{{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"form-check-input\" \"custom-control-input\"}} {{this.formValidationClass}}\"\n    ...attributes\n    {{on \"click\" this.handleClick}}\n  >\n  \n  */\n  {\n    \"id\": \"tgiPbQlQ\",\n    \"block\": \"[[[11,\\\"input\\\"],[24,4,\\\"checkbox\\\"],[16,1,[30,1]],[16,\\\"disabled\\\",[30,2]],[16,\\\"readonly\\\",[30,3]],[16,\\\"aria-describedby\\\",[30,4]],[16,\\\"checked\\\",[30,5]],[16,0,[29,[\\\"custom-control-input\\\",\\\" \\\",[30,0,[\\\"formValidationClass\\\"]]]]],[17,6],[4,[38,1],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\"]],[\\\"@id\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@ariaDescribedBy\\\",\\\"@value\\\",\\\"&attrs\\\"],false,[\\\"input\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/control/switch.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n  \n   @class FormElementControlSwitch\n   @namespace Components\n   @extends Components.FormElementControl\n   @private\n   */\n  var FormElementControlSwitch = _exports.default = (_class = /*#__PURE__*/function (_Control) {\n    function FormElementControlSwitch() {\n      _classCallCheck(this, FormElementControlSwitch);\n      return _callSuper(this, FormElementControlSwitch, arguments);\n    }\n    _inherits(FormElementControlSwitch, _Control);\n    return _createClass(FormElementControlSwitch, [{\n      key: \"handleClick\",\n      value: function handleClick(event) {\n        this.args.onChange(event.target.checked);\n      }\n    }]);\n  }(_control.default), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementControlSwitch);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/control/textarea\", [\"exports\", \"@ember/component\", \"@ember/object\", \"ember-bootstrap/components/bs-form/element/control\", \"@ember/template-factory\"], function (_exports, _component, _object, _control, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-bootstrap/components/bs-form/element/control\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <textarea\n    id={{@id}}\n    disabled={{@disabled}}\n    readonly={{@readonly}}\n    aria-describedby={{@ariaDescribedBy}}\n    value={{@value}}\n    class=\"form-control {{this.formValidationClass}}\"\n    ...attributes\n    {{on \"change\" this.handleChange}}\n    {{on \"input\" this.handleInput}}>\n  </textarea>\n  */\n  {\n    \"id\": \"aXgMkAsp\",\n    \"block\": \"[[[11,\\\"textarea\\\"],[16,1,[30,1]],[16,\\\"disabled\\\",[30,2]],[16,\\\"readonly\\\",[30,3]],[16,\\\"aria-describedby\\\",[30,4]],[16,2,[30,5]],[16,0,[29,[\\\"form-control \\\",[30,0,[\\\"formValidationClass\\\"]]]]],[17,6],[4,[38,1],[\\\"change\\\",[30,0,[\\\"handleChange\\\"]]],null],[4,[38,1],[\\\"input\\\",[30,0,[\\\"handleInput\\\"]]],null],[12],[1,\\\"\\\"],[13]],[\\\"@id\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@ariaDescribedBy\\\",\\\"@value\\\",\\\"&attrs\\\"],false,[\\\"textarea\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/control/textarea.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n  \n   @class FormElementControlTextarea\n   @namespace Components\n   @extends Components.FormElementControl\n   @private\n   */\n  var FormElementControlTextarea = _exports.default = (_class = /*#__PURE__*/function (_Control) {\n    function FormElementControlTextarea() {\n      _classCallCheck(this, FormElementControlTextarea);\n      return _callSuper(this, FormElementControlTextarea, arguments);\n    }\n    _inherits(FormElementControlTextarea, _Control);\n    return _createClass(FormElementControlTextarea, [{\n      key: \"handleChange\",\n      value: function handleChange(event) {\n        this.args.onChange(event.target.value);\n      }\n    }, {\n      key: \"handleInput\",\n      value: function handleInput(event) {\n        this.args.onChange(event.target.value);\n      }\n    }]);\n  }(_control.default), _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleInput\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleInput\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementControlTextarea);\n});","define(\"ember-bootstrap/components/bs-form/element/errors\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @show}}\n    {{#if @showMultipleErrors}}\n      <div class=\"pre-scrollable\">\n        {{#each @messages as |message|}}\n          <div class=\"invalid-feedback d-block\">{{message}}</div>\n        {{/each}}\n      </div>\n    {{else}}\n      <div class=\"invalid-feedback d-block\">{{get @messages \"0\"}}</div>\n    {{/if}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"pNBSk0kO\",\n    \"block\": \"[[[41,[30,1],[[[41,[30,2],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"pre-scrollable\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,3]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"invalid-feedback d-block\\\"],[12],[1,[30,4]],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"invalid-feedback d-block\\\"],[12],[1,[28,[35,4],[[30,3],\\\"0\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[\\\"@show\\\",\\\"@showMultipleErrors\\\",\\\"@messages\\\",\\\"message\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/errors.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/feedback-icon\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @show}}\n    <span class=\"form-control-feedback {{@iconName}}\" aria-hidden=\"true\"></span>\n  {{/if}}\n  */\n  {\n    \"id\": \"VTQzmjr3\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,1],[15,0,[29,[\\\"form-control-feedback \\\",[30,2]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@show\\\",\\\"@iconName\\\"],false,[\\\"if\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/feedback-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/help-text\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    id={{@id}}\n    class=\"form-text\"\n    ...attributes\n  >\n    {{@text}}\n  </div>\n  */\n  {\n    \"id\": \"pukHwtLV\",\n    \"block\": \"[[[11,0],[16,1,[30,1]],[24,0,\\\"form-text\\\"],[17,2],[12],[1,\\\"\\\\n  \\\"],[1,[30,3]],[1,\\\"\\\\n\\\"],[13]],[\\\"@id\\\",\\\"&attrs\\\",\\\"@text\\\"],false,[\\\"div\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/help-text.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/label\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _component2, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <label\n    class=\"\n      {{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"form-label\"}}\n      {{if @invisibleLabel (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"visually-hidden\" \"sr-only\")}}\n      {{@labelClass}}\n      {{if this.isHorizontalAndNotCheckbox \"col-form-label\"}}\n      {{if this.isCheckbox \"form-check-label\"}}\n      {{if (bs-eq \"switch\" @controlType) (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"form-check-label\" \"custom-control-label\")}}\n      {{if this.isHorizontal (bs-size-class \"col-form-label\" @size)}}\"\n    for={{@formElementId}}\n    ...attributes\n  >\n    {{#if (has-block)}}\n      {{yield}}\n    {{/if}}\n    {{@label}}\n  </label>\n  \n  */\n  {\n    \"id\": \"Sx5LKLbw\",\n    \"block\": \"[[[11,\\\"label\\\"],[16,0,[29,[\\\"\\\\n    \\\",[27],\\\"\\\\n    \\\",[52,[30,1],\\\"sr-only\\\"],\\\"\\\\n    \\\",[30,2],\\\"\\\\n    \\\",[52,[30,0,[\\\"isHorizontalAndNotCheckbox\\\"]],\\\"col-form-label\\\"],\\\"\\\\n    \\\",[52,[30,0,[\\\"isCheckbox\\\"]],\\\"form-check-label\\\"],\\\"\\\\n    \\\",[52,[28,[37,2],[\\\"switch\\\",[30,3]],null],\\\"custom-control-label\\\"],\\\"\\\\n    \\\",[52,[30,0,[\\\"isHorizontal\\\"]],[28,[37,3],[\\\"col-form-label\\\",[30,4]],null]]]]],[16,\\\"for\\\",[30,5]],[17,6],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,8]],[[[1,\\\"    \\\"],[18,8,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[1,[30,7]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@invisibleLabel\\\",\\\"@labelClass\\\",\\\"@controlType\\\",\\\"@size\\\",\\\"@formElementId\\\",\\\"&attrs\\\",\\\"@label\\\",\\\"&default\\\"],false,[\\\"label\\\",\\\"if\\\",\\\"bs-eq\\\",\\\"bs-size-class\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/label.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n  \n   @class FormElementLabel\n   @namespace Components\n   @extends Ember.Component\n   @private\n   */\n  var FormElementLabel = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function FormElementLabel() {\n      var _this;\n      _classCallCheck(this, FormElementLabel);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, FormElementLabel, [].concat(args));\n      /**\n       * [BS4 only] Property for size styling, set to 'lg', 'sm'\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n      /**\n       * @property formElementId\n       * @type {String}\n       * @public\n       */\n      /**\n       * @property labelClass\n       * @type {String}\n       * @public\n       */\n      /**\n       * The form layout used for the markup generation (see http://getbootstrap.com/css/#forms):\n       *\n       * * 'horizontal'\n       * * 'vertical'\n       * * 'inline'\n       *\n       * Defaults to the parent `form`'s `formLayout` property.\n       *\n       * @property formLayout\n       * @type string\n       * @default 'vertical'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"formLayout\", _descriptor, _this);\n      /**\n       * The type of the control widget.\n       * Supported types:\n       *\n       * * 'text'\n       * * 'checkbox'\n       * * 'textarea'\n       * * any other type will use an input tag with the `controlType` value as the type attribute (for e.g. HTML5 input\n       * types like 'email'), and the same layout as the 'text' type\n       *\n       * @property controlType\n       * @type string\n       * @default 'text'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"controlType\", _descriptor2, _this);\n      return _this;\n    }\n    _inherits(FormElementLabel, _Component);\n    return _createClass(FormElementLabel, [{\n      key: \"isHorizontalAndNotCheckbox\",\n      get:\n      /**\n       * @property label\n       * @type string\n       * @public\n       */\n\n      /**\n       * @property invisibleLabel\n       * @type boolean\n       * @public\n       */\n\n      function get() {\n        return this.isHorizontal && !this.isCheckbox;\n      }\n    }, {\n      key: \"isCheckbox\",\n      get:\n      /**\n       * Indicates whether the type of the control widget equals `checkbox`\n       *\n       * @property isCheckbox\n       * @type boolean\n       * @private\n       */\n      function get() {\n        return this.args.controlType === 'checkbox';\n      }\n\n      /**\n       * Indicates whether the form type equals `horizontal`\n       *\n       * @property isHorizontal\n       * @type boolean\n       * @private\n       */\n    }, {\n      key: \"isHorizontal\",\n      get: function get() {\n        return this.args.formLayout === 'horizontal';\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"formLayout\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'vertical';\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"controlType\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'text';\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementLabel);\n});","define(\"ember-bootstrap/components/bs-form/element/layout/horizontal\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @hasLabel}}\n    <@labelComponent @labelClass={{@horizontalLabelGridClass}}/>\n    <div class={{bs-form-horiz-input-class @horizontalLabelGridClass}}>\n      {{yield}}\n      <@errorsComponent/>\n      <@helpTextComponent/>\n    </div>\n  {{else}}\n    <div class=\"{{bs-form-horiz-input-class @horizontalLabelGridClass}} {{bs-form-horiz-offset-class @horizontalLabelGridClass}}\">\n      {{yield}}\n      <@errorsComponent/>\n      <@helpTextComponent/>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"yvcLiQKp\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[30,2],null,[[\\\"@labelClass\\\"],[[30,3]]],null],[1,\\\"\\\\n  \\\"],[10,0],[15,0,[28,[37,2],[[30,3]],null]],[12],[1,\\\"\\\\n    \\\"],[18,6,null],[1,\\\"\\\\n    \\\"],[8,[30,4],null,null,null],[1,\\\"\\\\n    \\\"],[8,[30,5],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[[28,[37,2],[[30,3]],null],\\\" \\\",[28,[37,4],[[30,3]],null]]]],[12],[1,\\\"\\\\n    \\\"],[18,6,null],[1,\\\"\\\\n    \\\"],[8,[30,4],null,null,null],[1,\\\"\\\\n    \\\"],[8,[30,5],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@hasLabel\\\",\\\"@labelComponent\\\",\\\"@horizontalLabelGridClass\\\",\\\"@errorsComponent\\\",\\\"@helpTextComponent\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"bs-form-horiz-input-class\\\",\\\"yield\\\",\\\"bs-form-horiz-offset-class\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/layout/horizontal.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/layout/horizontal/checkbox\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"{{bs-form-horiz-input-class @horizontalLabelGridClass}} {{bs-form-horiz-offset-class @horizontalLabelGridClass}}\">\n    <div class=\"{{if (bs-eq \"switch\" @controlType) (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"form-check form-switch\" \"custom-control custom-switch\") \"form-check\"}}\">\n      {{yield}}\n      <@labelComponent/>\n      <@errorsComponent/>\n      <@helpTextComponent/>\n    </div>\n  </div>\n  \n  */\n  {\n    \"id\": \"QNs5OJ43\",\n    \"block\": \"[[[10,0],[15,0,[29,[[28,[37,1],[[30,1]],null],\\\" \\\",[28,[37,2],[[30,1]],null]]]],[12],[1,\\\"\\\\n  \\\"],[10,0],[15,0,[29,[[52,[28,[37,4],[\\\"switch\\\",[30,2]],null],\\\"custom-control custom-switch\\\",\\\"form-check\\\"]]]],[12],[1,\\\"\\\\n    \\\"],[18,6,null],[1,\\\"\\\\n    \\\"],[8,[30,3],null,null,null],[1,\\\"\\\\n    \\\"],[8,[30,4],null,null,null],[1,\\\"\\\\n    \\\"],[8,[30,5],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@horizontalLabelGridClass\\\",\\\"@controlType\\\",\\\"@labelComponent\\\",\\\"@errorsComponent\\\",\\\"@helpTextComponent\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"bs-form-horiz-input-class\\\",\\\"bs-form-horiz-offset-class\\\",\\\"if\\\",\\\"bs-eq\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/layout/horizontal/checkbox.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/layout/inline\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @hasLabel}}\n    <@labelComponent/>\n  {{/if}}\n  {{yield}}\n  <@errorsComponent/>\n  <@helpTextComponent/>\n  */\n  {\n    \"id\": \"+Tqw45qJ\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[30,2],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[18,5,null],[1,\\\"\\\\n\\\"],[8,[30,3],null,null,null],[1,\\\"\\\\n\\\"],[8,[30,4],null,null,null]],[\\\"@hasLabel\\\",\\\"@labelComponent\\\",\\\"@errorsComponent\\\",\\\"@helpTextComponent\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/layout/inline.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/layout/inline/checkbox\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"{{if (bs-eq \"switch\" @controlType) (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"form-check form-switch\" \"custom-control custom-switch\") \"form-check\"}}\">\n    {{yield}}\n    <@labelComponent/>\n    <@errorsComponent/>\n    <@helpTextComponent/>\n  </div>\n  \n  */\n  {\n    \"id\": \"Ya+vwsb1\",\n    \"block\": \"[[[10,0],[15,0,[29,[[52,[28,[37,2],[\\\"switch\\\",[30,1]],null],\\\"custom-control custom-switch\\\",\\\"form-check\\\"]]]],[12],[1,\\\"\\\\n  \\\"],[18,5,null],[1,\\\"\\\\n  \\\"],[8,[30,2],null,null,null],[1,\\\"\\\\n  \\\"],[8,[30,3],null,null,null],[1,\\\"\\\\n  \\\"],[8,[30,4],null,null,null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@controlType\\\",\\\"@labelComponent\\\",\\\"@errorsComponent\\\",\\\"@helpTextComponent\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"bs-eq\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/layout/inline/checkbox.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/layout/vertical\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @hasLabel}}\n    <@labelComponent/>\n  {{/if}}\n  {{yield}}\n  <@errorsComponent/>\n  <@helpTextComponent/>\n  */\n  {\n    \"id\": \"7Kb27cj4\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[30,2],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[18,5,null],[1,\\\"\\\\n\\\"],[8,[30,3],null,null,null],[1,\\\"\\\\n\\\"],[8,[30,4],null,null,null]],[\\\"@hasLabel\\\",\\\"@labelComponent\\\",\\\"@errorsComponent\\\",\\\"@helpTextComponent\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/layout/vertical.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-form/element/layout/vertical/checkbox\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"{{if (bs-eq \"switch\" @controlType) (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"form-check form-switch\" \"custom-control custom-switch\") \"form-check\"}}\">\n    {{yield}}\n    <@labelComponent/>\n    <@errorsComponent/>\n    <@helpTextComponent/>\n  </div>\n  \n  */\n  {\n    \"id\": \"KdoQFHDH\",\n    \"block\": \"[[[10,0],[15,0,[29,[[52,[28,[37,2],[\\\"switch\\\",[30,1]],null],\\\"custom-control custom-switch\\\",\\\"form-check\\\"]]]],[12],[1,\\\"\\\\n  \\\"],[18,5,null],[1,\\\"\\\\n  \\\"],[8,[30,2],null,null,null],[1,\\\"\\\\n  \\\"],[8,[30,3],null,null,null],[1,\\\"\\\\n  \\\"],[8,[30,4],null,null,null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@controlType\\\",\\\"@labelComponent\\\",\\\"@errorsComponent\\\",\\\"@helpTextComponent\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"bs-eq\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/layout/vertical/checkbox.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-form/element/legend\", [\"exports\", \"@ember/component\", \"ember-bootstrap/components/bs-form/element/label\", \"@ember/template-factory\"], function (_exports, _component, _label, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/label\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <legend\n    class=\"\n      {{if @invisibleLabel (if (macroCondition (macroGetOwnConfig \"isBS5\")) \"visually-hidden\" \"sr-only\")}}\n      {{@labelClass}}\n      {{if this.isHorizontalAndNotCheckbox \"col-form-label\"}}\n      {{if this.isHorizontal (bs-size-class \"col-form-label\" @size)}}\"\n  >\n    {{#if (has-block)}}\n      {{yield}}\n    {{/if}}\n    {{@label}}\n  </legend>\n  */\n  {\n    \"id\": \"LXyodheF\",\n    \"block\": \"[[[10,\\\"legend\\\"],[15,0,[29,[\\\"\\\\n    \\\",[52,[30,1],\\\"sr-only\\\"],\\\"\\\\n    \\\",[30,2],\\\"\\\\n    \\\",[52,[30,0,[\\\"isHorizontalAndNotCheckbox\\\"]],\\\"col-form-label\\\"],\\\"\\\\n    \\\",[52,[30,0,[\\\"isHorizontal\\\"]],[28,[37,2],[\\\"col-form-label\\\",[30,3]],null]]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,5]],[[[1,\\\"    \\\"],[18,5,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[1,[30,4]],[1,\\\"\\\\n\\\"],[13]],[\\\"@invisibleLabel\\\",\\\"@labelClass\\\",\\\"@size\\\",\\\"@label\\\",\\\"&default\\\"],false,[\\\"legend\\\",\\\"if\\\",\\\"bs-size-class\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-form/element/legend.hbs\",\n    \"isStrictMode\": false\n  });\n  var FormElementLegend = _exports.default = /*#__PURE__*/function (_FormElementLabel) {\n    function FormElementLegend() {\n      _classCallCheck(this, FormElementLegend);\n      return _callSuper(this, FormElementLegend, arguments);\n    }\n    _inherits(FormElementLegend, _FormElementLabel);\n    return _createClass(FormElementLegend);\n  }(_label.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormElementLegend);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-link-to\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/debug\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _debug, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/debug\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LinkTo\n    @route={{@route}}\n    @models={{this.models}}\n    @query={{this.query}}\n    @disabled={{@disabled}}\n    class={{@attrClassInternal}}\n    ...attributes\n  >\n    {{yield}}\n  </LinkTo>\n  */\n  {\n    \"id\": \"cXT3cfe8\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1]],[17,2]],[[\\\"@route\\\",\\\"@models\\\",\\\"@query\\\",\\\"@disabled\\\"],[[30,3],[30,0,[\\\"models\\\"]],[30,0,[\\\"query\\\"]],[30,4]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[18,5,null],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@attrClassInternal\\\",\\\"&attrs\\\",\\\"@route\\\",\\\"@disabled\\\",\\\"&default\\\"],false,[\\\"link-to\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-link-to.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n   This is largely copied from Ember.LinkComponent. It is used as extending from Ember.LinkComponent has been deprecated.\n   We need this to\n   * register ourselves to a parent component that needs to know `active` state due to Bootstrap markup requirements, see Nav/LinkTo\n   * continue supporting positional params until we can remove support\n  \n   @class LinkComponent\n   @namespace Components\n   @extends Component\n   @private\n  */\n  var LinkComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function LinkComponent() {\n      var _this;\n      _classCallCheck(this, LinkComponent);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, LinkComponent, [].concat(args));\n      _initializerDefineProperty(_this, \"router\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(LinkComponent, _Component);\n    return _createClass(LinkComponent, [{\n      key: \"active\",\n      get: function get() {\n        var _this$router;\n        if (!this.args.route) {\n          return false;\n        }\n        return (_this$router = this.router).isActive.apply(_this$router, [this.args.route].concat(_toConsumableArray(this.models), [{\n          queryParams: this.query\n        }]));\n      }\n    }, {\n      key: \"models\",\n      get: function get() {\n        var _this$args = this.args,\n          model = _this$args.model,\n          models = _this$args.models;\n        if (model !== undefined) {\n          return [model];\n        } else if (models !== undefined) {\n          (true && !(Array.isArray(models)) && (0, _debug.assert)('The `@models` argument must be an array.', Array.isArray(models)));\n          return models;\n        } else {\n          return [];\n        }\n      }\n    }, {\n      key: \"query\",\n      get: function get() {\n        var _this$args$query;\n        return (_this$args$query = this.args.query) !== null && _this$args$query !== void 0 ? _this$args$query : {};\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, LinkComponent);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-list-group\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _component2, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#let (element this.htmlTag) as |Tag|}}\n    <Tag\n      class=\"list-group {{this.horizontalClass}} {{if this.numbered \"list-group-numbered\"}} {{if this.flush \"list-group-flush\"}}\"\n      ...attributes>\n      {{yield\n        (hash\n          item=(component (ensure-safe-component (bs-default @listGroupItemComponent (component \"bs-list-group/item\"))))\n        )\n      }}\n    </Tag>\n  {{/let}}\n  */\n  {\n    \"id\": \"7RcCkdZP\",\n    \"block\": \"[[[44,[[28,[37,1],[[30,0,[\\\"htmlTag\\\"]]],null]],[[[1,\\\"  \\\"],[8,[30,1],[[16,0,[29,[\\\"list-group \\\",[30,0,[\\\"horizontalClass\\\"]],\\\" \\\",[52,[30,0,[\\\"numbered\\\"]],\\\"list-group-numbered\\\"],\\\" \\\",[52,[30,0,[\\\"flush\\\"]],\\\"list-group-flush\\\"]]]],[17,2]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,4,[[28,[37,4],null,[[\\\"item\\\"],[[50,[28,[37,6],[[28,[37,7],[[30,3],[50,\\\"bs-list-group/item\\\",0,null,null]],null]],null],0,null,null]]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]],[\\\"Tag\\\",\\\"&attrs\\\",\\\"@listGroupItemComponent\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"element\\\",\\\"if\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-list-group.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Component for creating [Bootstrap List Groups](https://getbootstrap.com/docs/5.2/components/list-group/) with custom markup.\n  \n   ### Usage\n  \n   ```hbs\n   <BsListGroup as |ListGroup|>\n    <ListGroup.item>An item</ListGroup.item>\n    <ListGroup.item>A second item</ListGroup.item>\n    <ListGroup.item>A third item</ListGroup.item>\n   </BsListGroup>\n   ```\n  \n   ### Advanced Usage\n  \n   ```hbs\n   <BsListGroup as |ListGroup|>\n    {{#let (component ListGroup.item htmlTag=\"a\" actionable=true) as |ListGroupItem|}}\n      <ListGroupItem @active={{true}}>An item</ListGroupItem>\n      <ListGroupItem>A second item</ListGroupItem>\n      <ListGroupItem @disabled={{true}}>A third item</ListGroupItem>\n    {{/let}}\n   </BsListGroup>\n   ```\n  \n   The component yields references to the following contextual components, that you can use to further customize the output:\n  \n   * [ListGroup.item](Components.ListGroupItem.html)\n  \n   @class ListGroup\n   @namespace Components\n   @extends Glimmer.Component\n   @public\n   */\n  var BsListGroupComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function BsListGroupComponent() {\n      var _this;\n      _classCallCheck(this, BsListGroupComponent);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, BsListGroupComponent, [].concat(args));\n      /**\n       * Determines if list should be numbered (e.g. `ol` or `ul` should be used)\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#numbered)\n       *\n       * @default false\n       * @type boolean\n       * @public\n       */\n      _initializerDefineProperty(_this, \"numbered\", _descriptor, _this);\n      /**\n       * If `true` then some borders and rounded corners are removed\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#flush)\n       *\n       * @default false\n       * @type boolean\n       * @public\n       */\n      _initializerDefineProperty(_this, \"flush\", _descriptor2, _this);\n      /**\n       * If `true` list group layout will be horizontal\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#horizontal)\n       *\n       * @default false\n       * @type boolean\n       * @public\n       */\n      _initializerDefineProperty(_this, \"horizontal\", _descriptor3, _this);\n      /**\n       * Determines the responsive variant to make a list group horizontal starting at that breakpoint’s `min-width`.\n       *\n       * Supported values are `{sm|md|lg|xl|xxl}`\n       *\n       * Live this property empty to change the layout of list group items to horizontal across all breakpoints.\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#horizontal)\n       *\n       * @default ''\n       * @type string\n       * @public\n       */\n      _initializerDefineProperty(_this, \"horizontalSize\", _descriptor4, _this);\n      _defineProperty(_this, \"htmlTag\", _this.numbered ? 'ol' : 'ul');\n      return _this;\n    }\n    _inherits(BsListGroupComponent, _Component);\n    return _createClass(BsListGroupComponent, [{\n      key: \"horizontalClass\",\n      get: function get() {\n        if (this.horizontal) {\n          return this.horizontalSize ? \"list-group-horizontal-\".concat(this.horizontalSize) : 'list-group-horizontal';\n        }\n        return '';\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"numbered\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"flush\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"horizontal\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"horizontalSize\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return '';\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BsListGroupComponent);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-list-group/item\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _component2, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#let (element this.htmlTag) as |Tag|}}\n    <Tag\n      class=\"list-group-item {{if @type (bs-type-class \"list-group-item\" @type default=\"\")}} {{if @actionable \"list-group-item-action\"}} {{if @disabled \"disabled\"}} {{if @active \"active\"}}\"\n      aria-current=\"{{if @active true}}\"\n      aria-disabled=\"{{if @disabled true}}\"\n      type=\"{{if (bs-eq this.htmlTag \"button\") \"button\"}}\"\n       ...attributes>\n      {{yield}}\n    </Tag>\n  {{/let}}\n  */\n  {\n    \"id\": \"uHi0tqrN\",\n    \"block\": \"[[[44,[[28,[37,1],[[30,0,[\\\"htmlTag\\\"]]],null]],[[[1,\\\"  \\\"],[8,[30,1],[[16,0,[29,[\\\"list-group-item \\\",[52,[30,2],[28,[37,3],[\\\"list-group-item\\\",[30,2]],[[\\\"default\\\"],[\\\"\\\"]]]],\\\" \\\",[52,[30,3],\\\"list-group-item-action\\\"],\\\" \\\",[52,[30,4],\\\"disabled\\\"],\\\" \\\",[52,[30,5],\\\"active\\\"]]]],[16,\\\"aria-current\\\",[29,[[52,[30,5],true]]]],[16,\\\"aria-disabled\\\",[29,[[52,[30,4],true]]]],[16,4,[29,[[52,[28,[37,4],[[30,0,[\\\"htmlTag\\\"]],\\\"button\\\"],null],\\\"button\\\"]]]],[17,6]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,7,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]],[\\\"Tag\\\",\\\"@type\\\",\\\"@actionable\\\",\\\"@disabled\\\",\\\"@active\\\",\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"element\\\",\\\"if\\\",\\\"bs-type-class\\\",\\\"bs-eq\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-list-group/item.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Component to create the items for [List Group](Components.ListGroup.html).\n   *\n   * @class ListGroupItem\n   * @namespace Components\n   * @extends Glimmer.Component\n   * @public\n   */\n  var BsListGroupItemComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function BsListGroupItemComponent() {\n      var _this;\n      _classCallCheck(this, BsListGroupItemComponent);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, BsListGroupItemComponent, [].concat(args));\n      /**\n       * On of the allowed bs-types, e.g. `primary`, `secondary` etc.\n       *\n       * Used to add contextual classes to style list items with a stateful background and color.\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#contextual-classes)\n       *\n       * @default ''\n       * @type string\n       * @public\n       */\n      _initializerDefineProperty(_this, \"type\", _descriptor, _this);\n      /**\n       * Used to create actionable list group items with hover, disabled, and active states.\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#links-and-buttons)\n       *\n       * @default false\n       * @type boolean\n       * @public\n       */\n      _initializerDefineProperty(_this, \"actionable\", _descriptor2, _this);\n      /**\n       * Indicate the current active selection.\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#active-items)\n       *\n       * @default false\n       * @type boolean\n       * @public\n       */\n      _initializerDefineProperty(_this, \"active\", _descriptor3, _this);\n      /**\n       * Set `true` to make list group item appear disabled.\n       *\n       * Also see the [Bootstrap Docs](https://getbootstrap.com/docs/5.2/components/list-group/#disabled-items)\n       *\n       * @default false\n       * @type boolean\n       * @public\n       */\n      _initializerDefineProperty(_this, \"disabled\", _descriptor4, _this);\n      return _this;\n    }\n    _inherits(BsListGroupItemComponent, _Component);\n    return _createClass(BsListGroupItemComponent, [{\n      key: \"htmlTag\",\n      get:\n      /**\n       * HTML-tag used for list-group item\n       *\n       * It depends on `actionable`.\n       *\n       * @type string\n       * @default 'li'\n       * @public\n       */\n      function get() {\n        return this.args.actionable ? 'button' : 'li';\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"type\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return '';\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"actionable\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"active\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"disabled\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BsListGroupItemComponent);\n});","define(\"ember-bootstrap/components/bs-modal-simple\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <BsModal\n    @open={{@open}}\n    @fade={{@fade}}\n    @backdrop={{@backdrop}}\n    @keyboard={{@keyboard}}\n    @position={{@position}}\n    @scrollable={{@scrollable}}\n    @size={{@size}}\n    @backdropClose={{@backdropClose}}\n    @renderInPlace={{@renderInPlace}}\n    @transitionDuration={{@transitionDuration}}\n    @backdropTransitionDuration={{@backdropTransitionDuration}}\n    @onSubmit={{@onSubmit}}\n    @onHide={{@onHide}}\n    @onHidden={{@onHidden}}\n    @onShow={{@onShow}}\n    @onShown={{@onShown}}\n    ...attributes\n    as |modal|\n  >\n    <modal.header @title={{@title}} @closeButton={{@closeButton}} />\n    <modal.body>\n      {{yield\n        (hash\n          close=modal.close\n          submit=modal.submit\n        )\n      }}\n    </modal.body>\n    <modal.footer\n      @closeTitle={{@closeTitle}}\n      @submitTitle={{@submitTitle}}\n      @submitButtonType={{@submitButtonType}}\n    />\n  </BsModal>\n  \n  */\n  {\n    \"id\": \"iZMJEKKu\",\n    \"block\": \"[[[8,[39,0],[[17,1]],[[\\\"@open\\\",\\\"@fade\\\",\\\"@backdrop\\\",\\\"@keyboard\\\",\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@backdropTransitionDuration\\\",\\\"@onSubmit\\\",\\\"@onHide\\\",\\\"@onHidden\\\",\\\"@onShow\\\",\\\"@onShown\\\"],[[30,2],[30,3],[30,4],[30,5],[30,6],[30,7],[30,8],[30,9],[30,10],[30,11],[30,12],[30,13],[30,14],[30,15],[30,16],[30,17]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,18,[\\\"header\\\"]],null,[[\\\"@title\\\",\\\"@closeButton\\\"],[[30,19],[30,20]]],null],[1,\\\"\\\\n  \\\"],[8,[30,18,[\\\"body\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,24,[[28,[37,2],null,[[\\\"close\\\",\\\"submit\\\"],[[30,18,[\\\"close\\\"]],[30,18,[\\\"submit\\\"]]]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,18,[\\\"footer\\\"]],null,[[\\\"@closeTitle\\\",\\\"@submitTitle\\\",\\\"@submitButtonType\\\"],[[30,21],[30,22],[30,23]]],null],[1,\\\"\\\\n\\\"]],[18]]]]],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@open\\\",\\\"@fade\\\",\\\"@backdrop\\\",\\\"@keyboard\\\",\\\"@position\\\",\\\"@scrollable\\\",\\\"@size\\\",\\\"@backdropClose\\\",\\\"@renderInPlace\\\",\\\"@transitionDuration\\\",\\\"@backdropTransitionDuration\\\",\\\"@onSubmit\\\",\\\"@onHide\\\",\\\"@onHidden\\\",\\\"@onShow\\\",\\\"@onShown\\\",\\\"modal\\\",\\\"@title\\\",\\\"@closeButton\\\",\\\"@closeTitle\\\",\\\"@submitTitle\\\",\\\"@submitButtonType\\\",\\\"&default\\\"],false,[\\\"bs-modal\\\",\\\"yield\\\",\\\"hash\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal-simple.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n    Component for creating [Bootstrap modals](http://getbootstrap.com/javascript/#modals) with a some common default markup\n    including a header, footer and body. Creating a simple modal is easy:\n  \n    ```hbs\n    <BsModalSimple @title=\"Simple Dialog\">\n      Hello world!\n    </BsModalSimple>\n    ```\n  \n    This will automatically create the appropriate markup, with a modal header containing the title, and a footer containing\n    a default \"Ok\" button, that will close the modal automatically (unless you return `false` from `onHide`).\n  \n    A modal created this way will be visible at once. You can use the `{{#if ...}}` helper to hide all modal elements from\n    the DOM until needed. Or you can bind the `open` argument to trigger showing and hiding the modal:\n  \n    ```hbs\n    <BsModalSimple @open={{this.openModal}} @title=\"Simple Dialog\">\n      Hello world!\n    </BsModalSimple>\n    ```\n  \n    ### Custom Markup\n  \n    To customize the markup within the modal you can use the [<BsModal>](Components.Modal.html) component.\n  \n    ### Modals with forms\n  \n    There is a special case when you have a form inside your modals body: you probably do not want to have a submit button\n    within your form but instead in your modal footer. Hover pressing the submit button outside your form would not\n    trigger the form data to be submitted. In the example below this would not trigger the submit action of the form, and\n    thus bypass the form validation feature of the form component.\n  \n    ```hbs\n    <BsModalSimple @title=\"Form Example\" @closeTitle=\"Cancel\" @submitTitle=\"Ok\">\n      <BsForm @model={{this}} @onSubmit={{this.submit}} @submitOnEnter={{true}} as |Form|>\n        <Form.element @label=\"first name\" @property=\"firstname\" />\n        <Form.element @label=\"last name\" @property=\"lastname\" />\n      </BsForm>\n    </BsModalSimple>\n    ```\n  \n    The modal component supports this common case by triggering the submit event programmatically on the body's form if\n    present whenever the footer's submit button is pressed. To allow the form to be submitted by pressing the enter key\n    also, you must either set `@submitOnEnter={{true}}` on the `<BsForm>` or include an invisible submit button in the\n    form (`<button type=\"submit\" class=\"d-hidden\">Submit</button>`).\n  \n    ### Auto-focus\n  \n    In order to allow key handling to function, the modal's root element is given focus once the modal is shown. If your\n    modal contains an element such as a text input and you would like it to be given focus rather than the modal element,\n    then give it the HTML5 autofocus attribute:\n  \n    ```hbs\n    <BsModalSimple @title=\"Form Example\" @closeTitle=\"Cancel\" @submitTitle=\"Ok\">\n      <BsForm @model={{this}} @onSubmit={{this.submit}} @submitOnEnter={{true}} as |Form|>\n        <Form.element @label=\"first name\" @property=\"firstname\" @autofocus={{true}} />\n        <Form.element @label=\"last name\" @property=\"lastname\" />\n      </BsForm>\n    </BsModalSimple>\n    ```\n  \n    ### Modals inside wormhole\n  \n    Modals make use of the [ember-wormhole](https://github.com/yapplabs/ember-wormhole) addon, which will be installed\n    automatically alongside ember-bootstrap. This is used to allow the modal to be placed in deeply nested\n    components/templates where it belongs to logically, but to have the actual DOM elements within a special container\n    element, which is a child of ember's root element. This will make sure that modals always overlay the whole app, and\n    are not effected by parent elements with `overflow: hidden` for example.\n  \n    If you want the modal to render in place, rather than being wormholed, you can set `@renderInPlace={{true}}`.\n  \n    @class ModalSimple\n    @namespace Components\n    @public\n  */\n\n  /**\n   * The title of the modal, visible in the modal header. Is ignored if `header` is false.\n   *\n   * @property title\n   * @type string\n   * @public\n   */\n\n  /**\n   * Visibility of the modal. Toggle to show/hide with CSS transitions.\n   *\n   * When the modal is closed by user interaction this property will not update by using two-way bindings in order\n   * to follow DDAU best practices. If you want to react to such changes, subscribe to the `onHide` action\n   *\n   * @property open\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * Set to false to disable fade animations.\n   *\n   * @property fade\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * Use a semi-transparent modal background to hide the rest of the page.\n   *\n   * @property backdrop\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * Closes the modal when escape key is pressed.\n   *\n   * @property keyboard\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * [BS4 only!] Vertical position, either 'top' (default) or 'center'\n   * 'center' will apply the `modal-dialog-centered` class\n   *\n   * @property position\n   * @type {string}\n   * @default 'top'\n   * @public\n   */\n\n  /**\n   * [BS4 only!] Allows scrolling within the modal body\n   * 'true' will apply the `modal-dialog-scrollable` class\n   *\n   * @property scrollable\n   * @type boolean\n   * @default false\n   * @public\n   */\n\n  /**\n   * Property for size styling, set to null (default), 'lg' or 'sm'\n   *\n   * Also see the [Bootstrap docs](http://getbootstrap.com/javascript/#modals-sizes)\n   *\n   * @property size\n   * @type String\n   * @public\n   */\n\n  /**\n   * If true clicking on the backdrop will close the modal.\n   *\n   * @property backdropClose\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * If true component will render in place, rather than be wormholed.\n   *\n   * @property renderInPlace\n   * @type boolean\n   * @default false\n   * @public\n   */\n\n  /**\n   * The duration of the fade transition\n   *\n   * @property transitionDuration\n   * @type number\n   * @default 300\n   * @public\n   */\n\n  /**\n   * The duration of the backdrop fade transition\n   *\n   * @property backdropTransitionDuration\n   * @type number\n   * @default 150\n   * @public\n   */\n\n  /**\n   * The action to be sent when the modal footer's submit button (if present) is pressed.\n   * Note that if your modal body contains a form (e.g. [Components.Form](Components.Form.html)) this action will\n   * not be triggered. Instead, a submit event will be triggered on the form itself. See the class description for an\n   * example.\n   *\n   * @property onSubmit\n   * @type function\n   * @public\n   */\n\n  /**\n   * The action to be sent when the modal is closing.\n   * This will be triggered by pressing the modal header's close button (x button) or the modal footer's close button.\n   * Note that this will happen before the modal is hidden from the DOM, as the fade transitions will still need some\n   * time to finish. Use the `onHidden` if you need the modal to be hidden when the action triggers.\n   *\n   * You can return `false` to prevent closing the modal automatically, and do that in your action by\n   * setting `@open` to `false`.\n   *\n   * @property onHide\n   * @type function\n   * @public\n   */\n\n  /**\n   * The action to be sent after the modal has been completely hidden (including the CSS transition).\n   *\n   * @property onHidden\n   * @type function\n   * @default null\n   * @public\n   */\n\n  /**\n   * The action to be sent when the modal is opening.\n   * This will be triggered immediately after the modal is shown (so it's safe to access the DOM for\n   * size calculations and the like). This means that if `@fade={{true}}`, it will be shown in between the\n   * backdrop animation and the fade animation.\n   *\n   * @property onShow\n   * @type function\n   * @default null\n   * @public\n   */\n\n  /**\n   * The action to be sent after the modal has been completely shown (including the CSS transition).\n   *\n   * @property onShown\n   * @type function\n   * @public\n   */\n\n  /**\n   * Display a close button (x icon) in the corner of the modal header.\n   *\n   * @property closeButton\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * The title of the default close button.\n   *\n   * @property closeTitle\n   * @type string\n   * @default 'Ok'\n   * @public\n   */\n\n  /**\n   * The type of the submit button (primary button).\n   *\n   * @property submitButtonType\n   * @type string\n   * @default 'primary'\n   * @public\n   */\n\n  /**\n   * The title of the submit button (primary button). Will be ignored (i.e. no button) if set to null.\n   *\n   * @property submitTitle\n   * @type string\n   * @default null\n   * @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-modal\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/debug\", \"@glimmer/component\", \"@ember/runloop\", \"@ember/service\", \"ember-bootstrap/utils/transition-end\", \"ember-bootstrap/utils/dom\", \"ember-bootstrap/utils/decorators/uses-transition\", \"ember-bootstrap/utils/is-fastboot\", \"ember-bootstrap/utils/decorators/arg\", \"@glimmer/tracking\", \"ember-ref-bucket\", \"@ember/template-factory\"], function (_exports, _component, _object, _debug, _component2, _runloop, _service, _transitionEnd, _dom, _usesTransition, _isFastboot, _arg, _tracking, _emberRefBucket, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/debug\",0,\"@glimmer/component\",0,\"@ember/runloop\",0,\"@ember/service\",0,\"ember-bootstrap/utils/transition-end\",0,\"ember-bootstrap/utils/dom\",0,\"ember-bootstrap/utils/decorators/uses-transition\",0,\"ember-bootstrap/utils/is-fastboot\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@glimmer/tracking\",0,\"ember-ref-bucket\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{did-insert-helper this.handleVisibilityChanges}}\n  {{did-update-helper this.handleVisibilityChanges @open}}\n  \n  {{#if this.inDom}}\n    {{!\n      ember-on-helper do not support FastBoot yet. This guard can be removed as\n      soon as ember-on-helper guards for FastBoot itself. It is tracked in this\n      GitHub issue: https://github.com/buschtoens/ember-on-helper/issues/3\n    }}\n    {{#unless this.isFastBoot}}\n      {{on-window \"resize\" this.adjustDialog}}\n    {{/unless}}\n  \n    {{#let (component (ensure-safe-component (bs-default @dialogComponent (component \"bs-modal/dialog\")))\n      onClose=this.close\n      fade=this._fade\n      showModal=this.showModal\n      keyboard=this.keyboard\n      size=@size\n      backdropClose=this.backdropClose\n      inDom=this.inDom\n      paddingLeft=this.paddingLeft\n      paddingRight=this.paddingRight\n      centered=(bs-eq this.position \"center\")\n      scrollable=this.scrollable\n      fullscreen=@fullscreen\n    ) as |Dialog|}}\n      {{#if this._renderInPlace}}\n        <Dialog\n          {{create-ref \"modalElement\"}}\n          ...attributes\n        >\n          {{yield\n            (hash\n              header=(component (ensure-safe-component (bs-default @headerComponent (component \"bs-modal/header\"))) onClose=this.close)\n              body=(ensure-safe-component (bs-default @bodyComponent (component \"bs-modal/body\")))\n              footer=(component (ensure-safe-component (bs-default @footerComponent (component \"bs-modal/footer\"))) onClose=this.close onSubmit=this.doSubmit)\n              close=this.close\n              submit=this.doSubmit\n            )\n          }}\n        </Dialog>\n        <div>\n          {{#if this.shouldShowBackdrop}}\n            <div class=\"modal-backdrop {{if this._fade \"fade\"}} {{if this.showModal \"show\"}}\" {{create-ref \"backdropElement\"}}></div>\n          {{/if}}\n        </div>\n      {{else}}\n        {{#in-element this.destinationElement insertBefore=null}}\n          <Dialog\n            {{create-ref \"modalElement\"}}\n            ...attributes\n          >\n            {{yield\n              (hash\n                header=(component (ensure-safe-component (bs-default @headerComponent (component \"bs-modal/header\"))) onClose=this.close)\n                body=(ensure-safe-component (bs-default @bodyComponent (component \"bs-modal/body\")))\n                footer=(component (ensure-safe-component (bs-default @footerComponent (component \"bs-modal/footer\"))) onClose=this.close onSubmit=this.doSubmit)\n                close=this.close\n                submit=this.doSubmit\n              )\n            }}\n          </Dialog>\n          <div>\n            {{#if this.shouldShowBackdrop}}\n              <div class=\"modal-backdrop {{if this._fade \"fade\"}} {{if this.showModal \"show\"}}\" {{create-ref \"backdropElement\"}}></div>\n            {{/if}}\n          </div>\n        {{/in-element}}\n      {{/if}}\n    {{/let}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"9GMLlEN/\",\n    \"block\": \"[[[1,[28,[35,0],[[30,0,[\\\"handleVisibilityChanges\\\"]]],null]],[1,\\\"\\\\n\\\"],[1,[28,[35,1],[[30,0,[\\\"handleVisibilityChanges\\\"]],[30,1]],null]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"inDom\\\"]],[[[41,[51,[30,0,[\\\"isFastBoot\\\"]]],[[[1,\\\"    \\\"],[1,[28,[35,4],[\\\"resize\\\",[30,0,[\\\"adjustDialog\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[44,[[50,[28,[37,7],[[28,[37,8],[[30,2],[50,\\\"bs-modal/dialog\\\",0,null,null]],null]],null],0,null,[[\\\"onClose\\\",\\\"fade\\\",\\\"showModal\\\",\\\"keyboard\\\",\\\"size\\\",\\\"backdropClose\\\",\\\"inDom\\\",\\\"paddingLeft\\\",\\\"paddingRight\\\",\\\"centered\\\",\\\"scrollable\\\",\\\"fullscreen\\\"],[[30,0,[\\\"close\\\"]],[30,0,[\\\"_fade\\\"]],[30,0,[\\\"showModal\\\"]],[30,0,[\\\"keyboard\\\"]],[30,3],[30,0,[\\\"backdropClose\\\"]],[30,0,[\\\"inDom\\\"]],[30,0,[\\\"paddingLeft\\\"]],[30,0,[\\\"paddingRight\\\"]],[28,[37,9],[[30,0,[\\\"position\\\"]],\\\"center\\\"],null],[30,0,[\\\"scrollable\\\"]],[30,4]]]]],[[[41,[30,0,[\\\"_renderInPlace\\\"]],[[[1,\\\"      \\\"],[8,[30,5],[[17,6],[4,[38,10],[\\\"modalElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,10,[[28,[37,12],null,[[\\\"header\\\",\\\"body\\\",\\\"footer\\\",\\\"close\\\",\\\"submit\\\"],[[50,[28,[37,7],[[28,[37,8],[[30,7],[50,\\\"bs-modal/header\\\",0,null,null]],null]],null],0,null,[[\\\"onClose\\\"],[[30,0,[\\\"close\\\"]]]]],[28,[37,7],[[28,[37,8],[[30,8],[50,\\\"bs-modal/body\\\",0,null,null]],null]],null],[50,[28,[37,7],[[28,[37,8],[[30,9],[50,\\\"bs-modal/footer\\\",0,null,null]],null]],null],0,null,[[\\\"onClose\\\",\\\"onSubmit\\\"],[[30,0,[\\\"close\\\"]],[30,0,[\\\"doSubmit\\\"]]]]],[30,0,[\\\"close\\\"]],[30,0,[\\\"doSubmit\\\"]]]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldShowBackdrop\\\"]],[[[1,\\\"          \\\"],[11,0],[16,0,[29,[\\\"modal-backdrop \\\",[52,[30,0,[\\\"_fade\\\"]],\\\"fade\\\"],\\\" \\\",[52,[30,0,[\\\"showModal\\\"]],\\\"show\\\"]]]],[4,[38,10],[\\\"backdropElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[40,[[[1,\\\"        \\\"],[8,[30,5],[[17,6],[4,[38,10],[\\\"modalElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,10,[[28,[37,12],null,[[\\\"header\\\",\\\"body\\\",\\\"footer\\\",\\\"close\\\",\\\"submit\\\"],[[50,[28,[37,7],[[28,[37,8],[[30,7],[50,\\\"bs-modal/header\\\",0,null,null]],null]],null],0,null,[[\\\"onClose\\\"],[[30,0,[\\\"close\\\"]]]]],[28,[37,7],[[28,[37,8],[[30,8],[50,\\\"bs-modal/body\\\",0,null,null]],null]],null],[50,[28,[37,7],[[28,[37,8],[[30,9],[50,\\\"bs-modal/footer\\\",0,null,null]],null]],null],0,null,[[\\\"onClose\\\",\\\"onSubmit\\\"],[[30,0,[\\\"close\\\"]],[30,0,[\\\"doSubmit\\\"]]]]],[30,0,[\\\"close\\\"]],[30,0,[\\\"doSubmit\\\"]]]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldShowBackdrop\\\"]],[[[1,\\\"            \\\"],[11,0],[16,0,[29,[\\\"modal-backdrop \\\",[52,[30,0,[\\\"_fade\\\"]],\\\"fade\\\"],\\\" \\\",[52,[30,0,[\\\"showModal\\\"]],\\\"show\\\"]]]],[4,[38,10],[\\\"backdropElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],\\\"%cursor:0%\\\",[28,[37,15],[[30,0,[\\\"destinationElement\\\"]]],null],null]],[]]]],[5]]]],[]],null]],[\\\"@open\\\",\\\"@dialogComponent\\\",\\\"@size\\\",\\\"@fullscreen\\\",\\\"Dialog\\\",\\\"&attrs\\\",\\\"@headerComponent\\\",\\\"@bodyComponent\\\",\\\"@footerComponent\\\",\\\"&default\\\"],false,[\\\"did-insert-helper\\\",\\\"did-update-helper\\\",\\\"if\\\",\\\"unless\\\",\\\"on-window\\\",\\\"let\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"bs-eq\\\",\\\"create-ref\\\",\\\"yield\\\",\\\"hash\\\",\\\"div\\\",\\\"in-element\\\",\\\"-in-el-null\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal.hbs\",\n    \"isStrictMode\": false\n  });\n  function nextRunloop() {\n    return new Promise(function (resolve) {\n      return (0, _runloop.next)(resolve);\n    });\n  }\n  function afterRender() {\n    return new Promise(function (resolve) {\n      return (0, _runloop.schedule)('afterRender', resolve);\n    });\n  }\n\n  /**\n    Component for creating [Bootstrap modals](http://getbootstrap.com/javascript/#modals) with custom markup.\n  \n    ### Usage\n  \n    ```hbs\n    <BsModal @onSubmit={{this.submit}} as |modal|>\n      <modal.header>\n        <h4 class=\"modal-title\"><i class=\"glyphicon glyphicon-alert\"></i> Alert</h4>\n      </modal.header>\n      <modal.body>\n        Are you absolutely sure you want to do that???\n      </modal.body>\n      <modal.footer as |footer|>\n        <BsButton @onClick={{modal.close}} @type=\"danger\">Oh no, forget it!</BsButton>\n        <BsButton @onClick={{modal.submit}} @type=\"success\">Yeah!</BsButton>\n      </modal.footer>\n    </BsModal>\n    ```\n  \n    The component yields references to the following contextual components, that you can use to further customize the output:\n  \n    * [modal.body](Components.ModalBody.html)\n    * [modal.header](Components.ModalHeader.html)\n    * [modal.footer](Components.ModalFooter.html)\n  \n    Furthermore references to the following actions are yielded:\n  \n    * `close`: triggers the `onHide` action and closes the modal\n    * `submit`: triggers the `onSubmit` action (or the submit event on a form if present in the body element)\n  \n    ### Further reading\n  \n    See the documentation of the [bs-modal-simple](Components.ModalSimple.html) component for further examples.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Modal\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var Modal = _exports.default = (_dec = (0, _service.inject)('-document'), _dec2 = (0, _usesTransition.default)('_fade'), _dec3 = (0, _emberRefBucket.ref)('modalElement'), _dec4 = (0, _emberRefBucket.ref)('backdropElement'), _class = /*#__PURE__*/function (_Component) {\n    function Modal() {\n      var _this;\n      _classCallCheck(this, Modal);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Modal, [].concat(args));\n      _initializerDefineProperty(_this, \"document\", _descriptor, _this);\n      /**\n       * @property _isOpen\n       * @private\n       */\n      _defineProperty(_this, \"_isOpen\", false);\n      /**\n       * Used to apply Bootstrap's visibility classes.\n       *\n       * @property showModal\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"showModal\", _descriptor2, _this);\n      /**\n       * Render modal markup?\n       *\n       * @property inDom\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"inDom\", _descriptor3, _this);\n      /**\n       * @property paddingLeft\n       * @type number|undefined\n       * @private\n       */\n      _initializerDefineProperty(_this, \"paddingLeft\", _descriptor4, _this);\n      /**\n       * @property paddingRight\n       * @type number|undefined\n       * @private\n       */\n      _initializerDefineProperty(_this, \"paddingRight\", _descriptor5, _this);\n      /**\n       * Visibility of the modal. Toggle to show/hide with CSS transitions.\n       *\n       * When the modal is closed by user interaction this property will not update by using two-way bindings in order\n       * to follow DDAU best practices. If you want to react to such changes, subscribe to the `onHide` action\n       *\n       * @property open\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"open\", _descriptor6, _this);\n      /**\n       * Use a semi-transparent modal background to hide the rest of the page.\n       *\n       * @property backdrop\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"backdrop\", _descriptor7, _this);\n      /**\n       * @property shouldShowBackdrop\n       * @type boolean\n       * @private\n       */\n      _initializerDefineProperty(_this, \"shouldShowBackdrop\", _descriptor8, _this);\n      /**\n       * Closes the modal when escape key is pressed.\n       *\n       * @property keyboard\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"keyboard\", _descriptor9, _this);\n      /**\n       * [BS4 only!] Vertical position, either 'top' (default) or 'center'\n       * 'center' will apply the `modal-dialog-centered` class\n       *\n       * @property position\n       * @type {string}\n       * @default 'top'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"position\", _descriptor10, _this);\n      /**\n       * [BS4 only!] Allows scrolling within the modal body\n       * 'true' will apply the `modal-dialog-scrollable` class\n       *\n       * @property scrollable\n       * @type boolean\n       * @default false\n       * @public\n       */\n      _initializerDefineProperty(_this, \"scrollable\", _descriptor11, _this);\n      /**\n       *  [BS5 only!] Allows adding fullscreen mode for modals. It will\n       *  apply the `modal-fullscreen` class when using `true` and\n       *  `modal-fullscreen-[x]-down` class when using BS breakpoints\n       *   ([x] = `sm`, `md`, `lg`, `xl`, `xxl`).\n       *\n       * Also see the [Bootstrap docs](https://getbootstrap.com/docs/5.1/components/modal/#fullscreen-modal)\n       *\n       * @property fullscreen\n       * @type {(Boolean|String)}\n       * @default false\n       * @public\n       */\n      /**\n       * @property dialogComponent\n       * @type {String}\n       * @private\n       */\n      /**\n       * @property headerComponent\n       * @type {String}\n       * @private\n       */\n      /**\n       * @property bodyComponent\n       * @type {String}\n       * @private\n       */\n      /**\n       * @property footerComponent\n       * @type {String}\n       * @private\n       */\n      /**\n       * Property for size styling, set to null (default), 'lg' or 'sm'\n       *\n       * Also see the [Bootstrap docs](http://getbootstrap.com/javascript/#modals-sizes)\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n      /**\n       * If true clicking on the backdrop will close the modal.\n       *\n       * @property backdropClose\n       * @type boolean\n       * @default true\n       * @public\n       */\n      _initializerDefineProperty(_this, \"backdropClose\", _descriptor12, _this);\n      /**\n       * If true component will render in place, rather than be wormholed.\n       *\n       * @property renderInPlace\n       * @type boolean\n       * @default false\n       * @public\n       */\n      _initializerDefineProperty(_this, \"renderInPlace\", _descriptor13, _this);\n      /**\n       * The duration of the fade transition\n       *\n       * @property transitionDuration\n       * @type number\n       * @default 300\n       * @public\n       */\n      _initializerDefineProperty(_this, \"transitionDuration\", _descriptor14, _this);\n      /**\n       * The duration of the backdrop fade transition\n       *\n       * @property backdropTransitionDuration\n       * @type number\n       * @default 150\n       * @public\n       */\n      _initializerDefineProperty(_this, \"backdropTransitionDuration\", _descriptor15, _this);\n      /**\n       * Use CSS transitions?\n       *\n       * @property usesTransition\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"usesTransition\", _descriptor16, _this);\n      _defineProperty(_this, \"destinationElement\", (0, _dom.getDestinationElement)(_this));\n      /**\n       * The DOM element of the `.modal` element.\n       *\n       * @property modalElement\n       * @type HTMLElement\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"modalElement\", _descriptor17, _this);\n      /**\n       * The DOM element of the backdrop element.\n       *\n       * @property backdropElement\n       * @type HTMLElement\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"backdropElement\", _descriptor18, _this);\n      /**\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      _defineProperty(_this, \"isFastBoot\", (0, _isFastboot.default)(_this));\n      return _this;\n    }\n    _inherits(Modal, _Component);\n    return _createClass(Modal, [{\n      key: \"_fade\",\n      get:\n      /**\n       * Set to false to disable fade animations.\n       *\n       * @property fade\n       * @type boolean\n       * @default true\n       * @public\n       */\n\n      function get() {\n        var isFB = (0, _isFastboot.default)(this);\n        return this.args.fade === undefined ? !isFB : this.args.fade;\n      }\n    }, {\n      key: \"_renderInPlace\",\n      get:\n      /**\n       * @property _renderInPlace\n       * @type boolean\n       * @private\n       */\n      function get() {\n        return this.renderInPlace || !this.destinationElement;\n      }\n    }, {\n      key: \"close\",\n      value:\n      /**\n       * The action to be sent when the modal footer's submit button (if present) is pressed.\n       * Note that if your modal body contains a form (e.g. [Components.Form](Components.Form.html)) this action will\n       * not be triggered. Instead, a submit event will be triggered on the form itself. See the class description for an\n       * example.\n       *\n       * @property onSubmit\n       * @type function\n       * @public\n       */\n\n      /**\n       * The action to be sent when the modal is closing.\n       * This will be triggered by pressing the modal header's close button (x button) or the modal footer's close button.\n       * Note that this will happen before the modal is hidden from the DOM, as the fade transitions will still need some\n       * time to finish. Use the `onHidden` if you need the modal to be hidden when the action triggers.\n       *\n       * You can return false to prevent closing the modal automatically, and do that in your action by\n       * setting `open` to false.\n       *\n       * @property onHide\n       * @type function\n       * @public\n       */\n\n      /**\n       * The action to be sent after the modal has been completely hidden (including the CSS transition).\n       *\n       * @property onHidden\n       * @type function\n       * @default null\n       * @public\n       */\n\n      /**\n       * The action to be sent when the modal is opening.\n       * This will be triggered immediately after the modal is shown (so it's safe to access the DOM for\n       * size calculations and the like). This means that if fade=true, it will be shown in between the\n       * backdrop animation and the fade animation.\n       *\n       * @property onShow\n       * @type function\n       * @default null\n       * @public\n       */\n\n      /**\n       * The action to be sent after the modal has been completely shown (including the CSS transition).\n       *\n       * @property onShown\n       * @type function\n       * @public\n       */\n\n      function close() {\n        var _this$args$onHide, _this$args;\n        if (((_this$args$onHide = (_this$args = this.args).onHide) === null || _this$args$onHide === void 0 ? void 0 : _this$args$onHide.call(_this$args)) !== false) {\n          this.hide();\n        }\n      }\n    }, {\n      key: \"doSubmit\",\n      value: function doSubmit() {\n        var forms = this.modalElement.querySelectorAll('.modal-body form');\n        if (forms.length > 0) {\n          // trigger submit event on body forms\n          var event = document.createEvent('Events');\n          event.initEvent('submit', true, true);\n          Array.prototype.slice.call(forms).forEach(function (form) {\n            return form.dispatchEvent(event);\n          });\n        } else {\n          var _this$args$onSubmit, _this$args2;\n          // if we have no form, we send a submit action\n          (_this$args$onSubmit = (_this$args2 = this.args).onSubmit) === null || _this$args$onSubmit === void 0 || _this$args$onSubmit.call(_this$args2);\n        }\n      }\n\n      /**\n       * Show the modal\n       *\n       * @method show\n       * @private\n       */\n    }, {\n      key: \"show\",\n      value: (function () {\n        var _show = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n          var _this$args$onShow, _this$args3, _this$args$onShown, _this$args4;\n          var modalElement;\n          return _regeneratorRuntime().wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (!this._isOpen) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 2:\n                this._isOpen = true;\n                this.addBodyClass();\n                this.inDom = true;\n                _context.next = 7;\n                return this.showBackdrop();\n              case 7:\n                if (!this.isDestroyed) {\n                  _context.next = 9;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 9:\n                if (!(0, _isFastboot.default)(this)) {\n                  this.checkScrollbar();\n                  this.setScrollbar();\n                }\n                _context.next = 12;\n                return afterRender();\n              case 12:\n                modalElement = this.modalElement;\n                if (modalElement) {\n                  _context.next = 15;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 15:\n                if (!(0, _isFastboot.default)(this)) {\n                  modalElement.scrollTop = 0;\n                  this.adjustDialog();\n                }\n                this.showModal = true;\n                (_this$args$onShow = (_this$args3 = this.args).onShow) === null || _this$args$onShow === void 0 || _this$args$onShow.call(_this$args3);\n                if (!this.usesTransition) {\n                  _context.next = 21;\n                  break;\n                }\n                _context.next = 21;\n                return (0, _transitionEnd.default)(modalElement, this.transitionDuration);\n              case 21:\n                (_this$args$onShown = (_this$args4 = this.args).onShown) === null || _this$args$onShown === void 0 || _this$args$onShown.call(_this$args4);\n              case 22:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function show() {\n          return _show.apply(this, arguments);\n        }\n        return show;\n      }()\n      /**\n       * Hide the modal\n       *\n       * @method hide\n       * @private\n       */\n      )\n    }, {\n      key: \"hide\",\n      value: (function () {\n        var _hide = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n          return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (this._isOpen) {\n                  _context2.next = 2;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 2:\n                this._isOpen = false;\n                this.showModal = false;\n                if (!this.usesTransition) {\n                  _context2.next = 7;\n                  break;\n                }\n                _context2.next = 7;\n                return (0, _transitionEnd.default)(this.modalElement, this.transitionDuration);\n              case 7:\n                _context2.next = 9;\n                return this.hideModal();\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        function hide() {\n          return _hide.apply(this, arguments);\n        }\n        return hide;\n      }()\n      /**\n       * Clean up after modal is hidden and call onHidden\n       *\n       * @method hideModal\n       * @private\n       */\n      )\n    }, {\n      key: \"hideModal\",\n      value: (function () {\n        var _hideModal = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n          var _this$args$onHidden, _this$args5;\n          return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                if (!this.isDestroyed) {\n                  _context3.next = 2;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 2:\n                _context3.next = 4;\n                return this.hideBackdrop();\n              case 4:\n                this.removeBodyClass();\n                if (!(0, _isFastboot.default)(this)) {\n                  this.resetAdjustments();\n                  this.resetScrollbar();\n                }\n                this.inDom = false;\n                (_this$args$onHidden = (_this$args5 = this.args).onHidden) === null || _this$args$onHidden === void 0 || _this$args$onHidden.call(_this$args5);\n              case 8:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        function hideModal() {\n          return _hideModal.apply(this, arguments);\n        }\n        return hideModal;\n      }()\n      /**\n       * Show the backdrop\n       *\n       * @method showBackdrop\n       * @async\n       * @private\n       */\n      )\n    }, {\n      key: \"showBackdrop\",\n      value: (function () {\n        var _showBackdrop = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n          var backdropElement;\n          return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                if (!(!this.backdrop || !this.usesTransition)) {\n                  _context4.next = 2;\n                  break;\n                }\n                return _context4.abrupt(\"return\");\n              case 2:\n                this.shouldShowBackdrop = true;\n                _context4.next = 5;\n                return nextRunloop();\n              case 5:\n                backdropElement = this.backdropElement;\n                (true && !(backdropElement) && (0, _debug.assert)('Backdrop element should be in DOM', backdropElement));\n                _context4.next = 9;\n                return (0, _transitionEnd.default)(backdropElement, this.backdropTransitionDuration);\n              case 9:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this);\n        }));\n        function showBackdrop() {\n          return _showBackdrop.apply(this, arguments);\n        }\n        return showBackdrop;\n      }()\n      /**\n       * Hide the backdrop\n       *\n       * @method hideBackdrop\n       * @async\n       * @private\n       */\n      )\n    }, {\n      key: \"hideBackdrop\",\n      value: (function () {\n        var _hideBackdrop = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n          var backdropElement;\n          return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                if (this.backdrop) {\n                  _context5.next = 2;\n                  break;\n                }\n                return _context5.abrupt(\"return\");\n              case 2:\n                if (!this.usesTransition) {\n                  _context5.next = 7;\n                  break;\n                }\n                backdropElement = this.backdropElement;\n                (true && !(backdropElement) && (0, _debug.assert)('Backdrop element should be in DOM', backdropElement));\n                _context5.next = 7;\n                return (0, _transitionEnd.default)(backdropElement, this.backdropTransitionDuration);\n              case 7:\n                if (!this.isDestroyed) {\n                  _context5.next = 9;\n                  break;\n                }\n                return _context5.abrupt(\"return\");\n              case 9:\n                this.shouldShowBackdrop = false;\n              case 10:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        function hideBackdrop() {\n          return _hideBackdrop.apply(this, arguments);\n        }\n        return hideBackdrop;\n      }()\n      /**\n       * @method adjustDialog\n       * @private\n       */\n      )\n    }, {\n      key: \"adjustDialog\",\n      value: function adjustDialog() {\n        var modalIsOverflowing = this.modalElement.scrollHeight > document.documentElement.clientHeight;\n        this.paddingLeft = !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : undefined;\n        this.paddingRight = this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : undefined;\n      }\n\n      /**\n       * @method resetAdjustments\n       * @private\n       */\n    }, {\n      key: \"resetAdjustments\",\n      value: function resetAdjustments() {\n        this.paddingLeft = undefined;\n        this.paddingRight = undefined;\n      }\n\n      /**\n       * @method checkScrollbar\n       * @private\n       */\n    }, {\n      key: \"checkScrollbar\",\n      value: function checkScrollbar() {\n        var fullWindowWidth = window.innerWidth;\n        this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth;\n      }\n\n      /**\n       * @method setScrollbar\n       * @private\n       */\n    }, {\n      key: \"setScrollbar\",\n      value: function setScrollbar() {\n        var bodyPad = parseInt(document.body.style.paddingRight || 0, 10);\n        this._originalBodyPad = document.body.style.paddingRight || '';\n        if (this.bodyIsOverflowing) {\n          document.body.style.paddingRight = bodyPad + this.scrollbarWidth;\n        }\n      }\n\n      /**\n       * @method resetScrollbar\n       * @private\n       */\n    }, {\n      key: \"resetScrollbar\",\n      value: function resetScrollbar() {\n        document.body.style.paddingRight = this._originalBodyPad;\n      }\n    }, {\n      key: \"addBodyClass\",\n      value: function addBodyClass() {\n        // special handling for FastBoot, where real `document` is not available\n        if ((0, _isFastboot.default)(this)) {\n          // a SimpleDOM instance with just a subset of the DOM API!\n          var _document = this.document;\n          var existingClasses = _document.body.getAttribute('class') || '';\n          if (!existingClasses.includes('modal-open')) {\n            _document.body.setAttribute('class', \"modal-open \".concat(existingClasses));\n          }\n        } else {\n          document.body.classList.add('modal-open');\n        }\n      }\n    }, {\n      key: \"removeBodyClass\",\n      value: function removeBodyClass() {\n        if ((0, _isFastboot.default)(this)) {\n          // no need for FastBoot support here\n          return;\n        }\n        document.body.classList.remove('modal-open');\n      }\n\n      /**\n       * @property scrollbarWidth\n       * @type number\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"scrollbarWidth\",\n      get: function get() {\n        var scrollDiv = document.createElement('div');\n        scrollDiv.className = 'modal-scrollbar-measure';\n        var modalEl = this.modalElement;\n        modalEl.parentNode.insertBefore(scrollDiv, modalEl.nextSibling);\n        var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n        scrollDiv.parentNode.removeChild(scrollDiv);\n        return scrollbarWidth;\n      }\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        _superPropGet(Modal, \"willDestroy\", this, 3)(arguments);\n        this.removeBodyClass();\n        if (!(0, _isFastboot.default)(this)) {\n          this.resetScrollbar();\n        }\n      }\n    }, {\n      key: \"handleVisibilityChanges\",\n      value: function handleVisibilityChanges() {\n        if (this.open) {\n          this.show();\n        } else {\n          this.hide();\n        }\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"document\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showModal\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.open && (!this._fade || (0, _isFastboot.default)(this));\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"inDom\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.open;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"paddingLeft\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"paddingRight\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"open\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"backdrop\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"shouldShowBackdrop\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return this.open && this.backdrop;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"keyboard\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"position\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'top';\n    }\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"scrollable\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"backdropClose\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return true;\n    }\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"renderInPlace\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"transitionDuration\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 300;\n    }\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"backdropTransitionDuration\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 150;\n    }\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"usesTransition\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"modalElement\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"backdropElement\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"close\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"close\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"doSubmit\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"doSubmit\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"adjustDialog\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"adjustDialog\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"scrollbarWidth\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"scrollbarWidth\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleVisibilityChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleVisibilityChanges\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Modal);\n});","define(\"ember-bootstrap/components/bs-modal/body\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"modal-body\" ...attributes>\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"LxLYUoML\",\n    \"block\": \"[[[11,0],[24,0,\\\"modal-body\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal/body.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n  \n   Modal body element used within [Components.Modal](Components.Modal.html) components. See there for examples.\n  \n   @class ModalBody\n   @namespace Components\n   @extends Glimmer.Component\n   @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-modal/dialog\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/utils\", \"@glimmer/component\", \"@ember/runloop\", \"ember-ref-bucket\", \"@glimmer/tracking\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _object, _utils, _component2, _runloop, _emberRefBucket, _tracking, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/utils\",0,\"@glimmer/component\",0,\"@ember/runloop\",0,\"ember-ref-bucket\",0,\"@glimmer/tracking\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    role=\"dialog\"\n    tabindex=\"-1\"\n    aria-labelledby={{this.titleId}}\n    class=\"modal {{if @fade \"fade\"}} {{if @showModal \"show\"}} {{if @inDom \"d-block\"}}\"\n    ...attributes\n    {{on \"keydown\" this.handleKeyDown}}\n    {{on \"mousedown\" this.handleMouseDown}}\n    {{on \"mouseup\" this.handleMouseUp}}\n    {{on \"click\" this.handleClick}}\n    {{style\n      paddingLeft=(concat @paddingLeft \"px\")\n      paddingRight=(concat @paddingRight \"px\")\n      display=(if @inDom \"block\" \"\")\n    }}\n    {{create-ref \"mainNode\"}}\n    {{did-insert this.getOrSetTitleId}}\n    {{did-insert this.setInitialFocus}}\n  >\n    <div\n      class=\"modal-dialog\n        {{this.sizeClass}}\n        {{if @centered \"modal-dialog-centered\"}}\n        {{if @scrollable \"modal-dialog-scrollable\"}}\n        {{if\n          (macroCondition (macroGetOwnConfig \"isBS5\"))\n          (if\n            @fullscreen (if (bs-eq @fullscreen true) \"modal-fullscreen\" (concat \"modal-fullscreen-\" @fullscreen \"-down\"))\n          )\n        }}\n        \"\n      role=\"document\"\n    >\n      <div\n        class=\"modal-content\"\n        tabindex=\"-1\"\n        {{focus-trap shouldSelfFocus=true focusTrapOptions=(hash clickOutsideDeactivates=@backdropClose fallbackFocus=\".modal\" escapeDeactivates=@keyboard)}}\n      >\n        {{yield}}\n      </div>\n    </div>\n  </div>\n  \n  */\n  {\n    \"id\": \"FzKxHPD8\",\n    \"block\": \"[[[11,0],[24,\\\"role\\\",\\\"dialog\\\"],[24,\\\"tabindex\\\",\\\"-1\\\"],[16,\\\"aria-labelledby\\\",[30,0,[\\\"titleId\\\"]]],[16,0,[29,[\\\"modal \\\",[52,[30,1],\\\"fade\\\"],\\\" \\\",[52,[30,2],\\\"show\\\"],\\\" \\\",[52,[30,3],\\\"d-block\\\"]]]],[17,4],[4,[38,2],[\\\"keydown\\\",[30,0,[\\\"handleKeyDown\\\"]]],null],[4,[38,2],[\\\"mousedown\\\",[30,0,[\\\"handleMouseDown\\\"]]],null],[4,[38,2],[\\\"mouseup\\\",[30,0,[\\\"handleMouseUp\\\"]]],null],[4,[38,2],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[4,[38,3],null,[[\\\"paddingLeft\\\",\\\"paddingRight\\\",\\\"display\\\"],[[28,[37,4],[[30,5],\\\"px\\\"],null],[28,[37,4],[[30,6],\\\"px\\\"],null],[52,[30,3],\\\"block\\\",\\\"\\\"]]]],[4,[38,5],[\\\"mainNode\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[4,[38,6],[[30,0,[\\\"getOrSetTitleId\\\"]]],null],[4,[38,6],[[30,0,[\\\"setInitialFocus\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,0],[15,0,[29,[\\\"modal-dialog\\\\n      \\\",[30,0,[\\\"sizeClass\\\"]],\\\"\\\\n      \\\",[52,[30,7],\\\"modal-dialog-centered\\\"],\\\"\\\\n      \\\",[52,[30,8],\\\"modal-dialog-scrollable\\\"],\\\"\\\\n      \\\",[27],\\\"\\\\n      \\\"]]],[14,\\\"role\\\",\\\"document\\\"],[12],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"modal-content\\\"],[24,\\\"tabindex\\\",\\\"-1\\\"],[4,[38,7],null,[[\\\"shouldSelfFocus\\\",\\\"focusTrapOptions\\\"],[true,[28,[37,8],null,[[\\\"clickOutsideDeactivates\\\",\\\"fallbackFocus\\\",\\\"escapeDeactivates\\\"],[[30,9],\\\".modal\\\",[30,10]]]]]]],[12],[1,\\\"\\\\n      \\\"],[18,11,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@fade\\\",\\\"@showModal\\\",\\\"@inDom\\\",\\\"&attrs\\\",\\\"@paddingLeft\\\",\\\"@paddingRight\\\",\\\"@centered\\\",\\\"@scrollable\\\",\\\"@backdropClose\\\",\\\"@keyboard\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"on\\\",\\\"style\\\",\\\"concat\\\",\\\"create-ref\\\",\\\"did-insert\\\",\\\"focus-trap\\\",\\\"hash\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal/dialog.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Internal component for modal's markup and event handling. Should not be used directly.\n  \n   @class ModalDialog\n   @namespace Components\n   @extends Glimmer.Component\n   @private\n   */\n  var ModalDialog = _exports.default = (_dec = (0, _emberRefBucket.ref)('mainNode'), _class = /*#__PURE__*/function (_Component) {\n    function ModalDialog() {\n      var _this;\n      _classCallCheck(this, ModalDialog);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, ModalDialog, [].concat(args));\n      /**\n       * @property id\n       * @type null | HTMLElement\n       */\n      _initializerDefineProperty(_this, \"_element\", _descriptor, _this);\n      /**\n       * The id of the `.modal-title` element\n       *\n       * @property titleId\n       * @type string\n       * @default null\n       * @private\n       */\n      _initializerDefineProperty(_this, \"titleId\", _descriptor2, _this);\n      /**\n       * If true clicking on the backdrop will be ignored and will not close modal.\n       *\n       * @property ignoreBackdropClick\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _defineProperty(_this, \"ignoreBackdropClick\", false);\n      /**\n       * The target DOM element of mouse down event.\n       *\n       * @property mouseDownElement\n       * @type object\n       * @default null\n       * @private\n       */\n      _defineProperty(_this, \"mouseDownElement\", null);\n      return _this;\n    }\n    _inherits(ModalDialog, _Component);\n    return _createClass(ModalDialog, [{\n      key: \"sizeClass\",\n      get:\n      /**\n       * Name of the size class\n       *\n       * @property sizeClass\n       * @type string\n       * @readOnly\n       * @private\n       */\n      function get() {\n        var size = this.args.size;\n        return (0, _utils.isBlank)(size) ? null : \"modal-\".concat(size);\n      }\n    }, {\n      key: \"getOrSetTitleId\",\n      value:\n      /**\n       * Gets or sets the id of the title element for aria accessibility tags\n       *\n       * @method getSetTitleID\n       * @private\n       */\n      function getOrSetTitleId(modalNode) {\n        //Title element may be set by user so we have to try and find it to set the id\n        var nodeId = null;\n        if (modalNode) {\n          var titleNode = modalNode.querySelector('.modal-title');\n          if (titleNode) {\n            //Get title id of .modal-title\n            nodeId = titleNode.id;\n            if (!nodeId) {\n              //no title id so we set one\n              nodeId = \"\".concat((0, _internals.guidFor)(this), \"-title\");\n              titleNode.id = nodeId;\n            }\n          }\n        }\n        this.titleId = nodeId;\n      }\n    }, {\n      key: \"setInitialFocus\",\n      value: function setInitialFocus(element) {\n        var autofocus = element && element.querySelector('[autofocus]');\n        if (autofocus) {\n          (0, _runloop.next)(function () {\n            return autofocus.focus();\n          });\n        }\n      }\n    }, {\n      key: \"handleKeyDown\",\n      value:\n      /**\n       * @event onClose\n       * @public\n       */\n\n      function handleKeyDown(e) {\n        var code = e.keyCode || e.which;\n        if (code === 27 && this.args.keyboard) {\n          var _this$args$onClose, _this$args;\n          (_this$args$onClose = (_this$args = this.args).onClose) === null || _this$args$onClose === void 0 || _this$args$onClose.call(_this$args);\n        }\n      }\n    }, {\n      key: \"handleClick\",\n      value: function handleClick(e) {\n        var _this$args$onClose2, _this$args2;\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false;\n          return;\n        }\n        if (e.target !== this._element || !this.args.backdropClose) {\n          return;\n        }\n        (_this$args$onClose2 = (_this$args2 = this.args).onClose) === null || _this$args$onClose2 === void 0 || _this$args$onClose2.call(_this$args2);\n      }\n    }, {\n      key: \"handleMouseDown\",\n      value: function handleMouseDown(e) {\n        this.mouseDownElement = e.target;\n      }\n    }, {\n      key: \"handleMouseUp\",\n      value: function handleMouseUp(e) {\n        if (this.mouseDownElement !== this._element && e.target === this._element) {\n          this.ignoreBackdropClick = true;\n        }\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"titleId\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"getOrSetTitleId\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"getOrSetTitleId\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setInitialFocus\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setInitialFocus\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleKeyDown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleKeyDown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleMouseDown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleMouseDown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleMouseUp\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleMouseUp\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ModalDialog);\n});","define(\"ember-bootstrap/components/bs-modal/footer\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#let (ensure-safe-component (bs-default @buttonComponent (component \"bs-button\"))) as |Button|}}\n    <div class=\"modal-footer\" ...attributes {{on \"submit\" (bs-default @onSubmit (bs-noop))}}>\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{#if @submitTitle}}\n          <Button @onClick={{@onClose}}>{{bs-default @closeTitle \"Ok\"}}</Button>\n          <Button\n            @type={{bs-default @submitButtonType \"primary\"}}\n            @onClick={{@onSubmit}}\n            {{bs-conditional-attribute \"disabled\" @submitDisabled @submitDisabled}}\n          >\n            {{@submitTitle}}\n          </Button>\n        {{else}}\n          <Button @type=\"primary\" @onClick={{@onClose}}>{{bs-default @closeTitle \"Ok\"}}</Button>\n        {{/if}}\n      {{/if}}\n    </div>\n  {{/let}}\n  */\n  {\n    \"id\": \"ACTvDEpv\",\n    \"block\": \"[[[44,[[28,[37,1],[[28,[37,2],[[30,1],[50,\\\"bs-button\\\",0,null,null]],null]],null]],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"modal-footer\\\"],[17,3],[4,[38,5],[\\\"submit\\\",[28,[37,2],[[30,4],[28,[37,6],null,null]],null]],null],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,10]],[[[1,\\\"      \\\"],[18,10,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,5],[[[1,\\\"        \\\"],[8,[30,2],null,[[\\\"@onClick\\\"],[[30,6]]],[[\\\"default\\\"],[[[[1,[28,[35,2],[[30,7],\\\"Ok\\\"],null]]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[30,2],[[4,[38,10],[\\\"disabled\\\",[30,9],[30,9]],null]],[[\\\"@type\\\",\\\"@onClick\\\"],[[28,[37,2],[[30,8],\\\"primary\\\"],null],[30,4]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[30,5]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[30,2],null,[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[30,6]]],[[\\\"default\\\"],[[[[1,[28,[35,2],[[30,7],\\\"Ok\\\"],null]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[2]]]],[\\\"@buttonComponent\\\",\\\"Button\\\",\\\"&attrs\\\",\\\"@onSubmit\\\",\\\"@submitTitle\\\",\\\"@onClose\\\",\\\"@closeTitle\\\",\\\"@submitButtonType\\\",\\\"@submitDisabled\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"component\\\",\\\"div\\\",\\\"on\\\",\\\"bs-noop\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"bs-conditional-attribute\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal/footer.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n  \n   Modal footer element used within [Components.Modal](Components.Modal.html) components. See there for examples.\n  \n   @class ModalFooter\n   @namespace Components\n   @extends Glimmer.Component\n   @public\n   */\n\n  /**\n   * The title of the default close button. Will be ignored (i.e. no close button) if you provide your own block\n   * template.\n   *\n   * @property closeTitle\n   * @type string\n   * @default 'Ok'\n   * @public\n   */\n\n  /**\n   * The title of the submit button (primary button). Will be ignored (i.e. no button) if set to `null` or if you provide\n   * your own block template.\n   *\n   * @property submitTitle\n   * @type string\n   * @default null\n   * @public\n   */\n\n  /**\n   * Set to `true` to disable the submit button. If you bind this to some property that indicates if submitting is allowed\n   * (form validation for example) this can be used to prevent the user from pressing the submit button.\n   *\n   * @property submitDisabled\n   * @type boolean\n   * @default false\n   * @public\n   */\n\n  /**\n   * The type of the submit button (primary button).\n   *\n   * @property submitButtonType\n   * @type string\n   * @default 'primary'\n   * @public\n   */\n\n  /**\n   * @property buttonComponent\n   * @type {String}\n   * @private\n   */\n\n  /**\n   * The action to send to the parent modal component when the modal footer's form is submitted\n   *\n   * @event onSubmit\n   * @public\n   */\n\n  /**\n   * @event onClose\n   * @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-modal/header\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#let\n    (ensure-safe-component (bs-default @titleComponent (component \"bs-modal/header/title\")))\n    (component (ensure-safe-component (bs-default @closeComponent (component \"bs-modal/header/close\"))) onClick=@onClose)\n  as |Title Close|\n  }}\n    <div class=\"modal-header\" ...attributes>\n      {{#if (has-block-params)}}\n        {{yield\n          (hash\n            title=Title\n            close=Close\n          )\n        }}\n      {{else}}\n        {{#if (has-block)}}\n          {{yield}}\n        {{else}}\n          <Title>{{@title}}</Title>\n        {{/if}}\n        {{#if (bs-default @closeButton true)}}\n          <Close/>\n        {{/if}}\n      {{/if}}\n    </div>\n  {{/let}}\n  */\n  {\n    \"id\": \"xU8FGRrD\",\n    \"block\": \"[[[44,[[28,[37,1],[[28,[37,2],[[30,1],[50,\\\"bs-modal/header/title\\\",0,null,null]],null]],null],[50,[28,[37,1],[[28,[37,2],[[30,2],[50,\\\"bs-modal/header/close\\\",0,null,null]],null]],null],0,null,[[\\\"onClick\\\"],[[30,3]]]]],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"modal-header\\\"],[17,6],[12],[1,\\\"\\\\n\\\"],[41,[49,[30,9]],[[[1,\\\"      \\\"],[18,9,[[28,[37,8],null,[[\\\"title\\\",\\\"close\\\"],[[30,4],[30,5]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,9]],[[[1,\\\"        \\\"],[18,9,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[30,4],null,null,[[\\\"default\\\"],[[[[1,[30,7]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[41,[28,[37,2],[[30,8],true],null],[[[1,\\\"        \\\"],[8,[30,5],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[4,5]]]],[\\\"@titleComponent\\\",\\\"@closeComponent\\\",\\\"@onClose\\\",\\\"Title\\\",\\\"Close\\\",\\\"&attrs\\\",\\\"@title\\\",\\\"@closeButton\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"component\\\",\\\"div\\\",\\\"if\\\",\\\"has-block-params\\\",\\\"yield\\\",\\\"hash\\\",\\\"has-block\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal/header.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n  \n   Modal header element used within [Components.Modal](Components.Modal.html) components. See there for examples.\n  \n   @class ModalHeader\n   @namespace Components\n   @extends Glimmer.Component\n   @public\n   */\n\n  /**\n   * Show a close button (x icon)\n   *\n   * @property closeButton\n   * @type boolean\n   * @default true\n   * @public\n   */\n\n  /**\n   * The title to display in the modal header\n   *\n   * @property title\n   * @type string\n   * @default null\n   * @public\n   */\n\n  /**\n   * @property titleComponent\n   * @type {String}\n   * @private\n   */\n\n  /**\n   * @property closeComponent\n   * @type {String}\n   * @private\n   */\n\n  /**\n   * @event onClose\n   * @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-modal/header/close\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <button type=\"button\" aria-label=\"Close\" class={{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"btn-close\" \"close\"}} ...attributes {{on \"click\" (bs-default @onClick (bs-noop))}}>\n    {{#if (macroCondition (macroGetOwnConfig \"isBS4\"))}}<span aria-hidden=\"true\">&times;</span>{{/if}}\n  </button>\n  */\n  {\n    \"id\": \"06EXU/r8\",\n    \"block\": \"[[[11,\\\"button\\\"],[24,4,\\\"button\\\"],[24,\\\"aria-label\\\",\\\"Close\\\"],[24,0,\\\"close\\\"],[17,1],[4,[38,1],[\\\"click\\\",[28,[37,2],[[30,2],[28,[37,3],null,null]],null]],null],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"×\\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@onClick\\\"],false,[\\\"button\\\",\\\"on\\\",\\\"bs-default\\\",\\\"bs-noop\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal/header/close.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n  \n   @class ModalHeaderClose\n   @namespace Components\n   @extends Glimmer.Component\n   @private\n   */\n\n  /**\n   * @event onClick\n   * @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-bootstrap/components/bs-modal/header/title\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <h5 class=\"modal-title\" ...attributes>\n    {{yield}}\n  </h5>\n  \n  */\n  {\n    \"id\": \"CTRjE56V\",\n    \"block\": \"[[[11,\\\"h5\\\"],[24,0,\\\"modal-title\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"h5\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-modal/header/title.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n  \n   @class ModalHeaderTitle\n   @namespace Components\n   @extends Glimmer.Component\n   @private\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-nav\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <ul class=\"nav {{this.typeClass}} {{this.additionalClass}} {{if this.justified \"nav-justified\"}} {{if this.stacked \"flex-column\"}} {{if this.fill \"nav-fill\"}}\" ...attributes>\n    {{yield\n      (hash\n        item=(ensure-safe-component (bs-default @itemComponent (component \"bs-nav/item\")))\n        link-to=(ensure-safe-component (bs-default @linkToComponent (component \"bs-link-to\" attrClassInternal=\"nav-link\")))\n        linkTo=(ensure-safe-component (bs-default @linkToComponent (component \"bs-link-to\" attrClassInternal=\"nav-link\")))\n        dropdown=(component (ensure-safe-component (bs-default @dropdownComponent (component \"bs-dropdown\"))) inNav=true htmlTag=\"li\")\n      )\n    }}\n  </ul>\n  */\n  {\n    \"id\": \"ln9xq0fE\",\n    \"block\": \"[[[11,\\\"ul\\\"],[16,0,[29,[\\\"nav \\\",[30,0,[\\\"typeClass\\\"]],\\\" \\\",[30,0,[\\\"additionalClass\\\"]],\\\" \\\",[52,[30,0,[\\\"justified\\\"]],\\\"nav-justified\\\"],\\\" \\\",[52,[30,0,[\\\"stacked\\\"]],\\\"flex-column\\\"],\\\" \\\",[52,[30,0,[\\\"fill\\\"]],\\\"nav-fill\\\"]]]],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,5,[[28,[37,3],null,[[\\\"item\\\",\\\"link-to\\\",\\\"linkTo\\\",\\\"dropdown\\\"],[[28,[37,4],[[28,[37,5],[[30,2],[50,\\\"bs-nav/item\\\",0,null,null]],null]],null],[28,[37,4],[[28,[37,5],[[30,3],[50,\\\"bs-link-to\\\",0,null,[[\\\"attrClassInternal\\\"],[\\\"nav-link\\\"]]]],null]],null],[28,[37,4],[[28,[37,5],[[30,3],[50,\\\"bs-link-to\\\",0,null,[[\\\"attrClassInternal\\\"],[\\\"nav-link\\\"]]]],null]],null],[50,[28,[37,4],[[28,[37,5],[[30,4],[50,\\\"bs-dropdown\\\",0,null,null]],null]],null],0,null,[[\\\"inNav\\\",\\\"htmlTag\\\"],[true,\\\"li\\\"]]]]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@itemComponent\\\",\\\"@linkToComponent\\\",\\\"@dropdownComponent\\\",\\\"&default\\\"],false,[\\\"ul\\\",\\\"if\\\",\\\"yield\\\",\\\"hash\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"component\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-nav.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Component to generate [bootstrap navs](http://getbootstrap.com/components/#nav)\n  \n    ### Usage\n  \n    Use in combination with the yielded components\n  \n    * [Components.NavItem](Components.NavItem.html)\n    * [`nav.dropdown`](Components.Dropdown.html)\n  \n    ```hbs\n    <BsNav @type=\"pills\" as |nav|>\n      <nav.item>\n        <nav.linkTo @route=\"foo\">\n          Foo\n        </nav.linkTo>\n      </nav.item>\n      <nav.item>\n        <nav.linkTo @route=\"bar\" @model={{this.model}}>\n          Bar\n        </nav.linkTo>\n      </nav.item>\n    </BsNav>\n    ```\n  \n    > Note: the use of angle brackets `<nav.linkTo>` as shown above is only supported for Ember >= 3.10, as it relies on\n    > Ember's native implementation of the [`LinkComponent`](https://api.emberjs.com/ember/3.12/classes/Ember.Templates.helpers/methods/link-to?anchor=link-to).\n    > For older Ember versions please use the legacy syntax with positional arguments: `{{#nav.link-to \"bar\" this.model}}Bar{{/nav.link-to}}`\n  \n    ### Nav styles\n  \n    The component supports the default bootstrap nav styling options \"pills\" and \"tabs\" through the `type`\n    property, as well as the `justified`, `fill` and `stacked` properties.\n  \n    ### Active items\n  \n    Bootstrap 3 expects to have the `active` class on the `<li>` element that should be the active (highlighted)\n    navigation item. To achieve that use the `@route` and optionally `@model` (or `@models`) and `@query` properties\n    of the yielded `nav.linkTo` component just as you would for Ember's `<LinkTo>` component to create a link with proper\n    `active` class support.\n  \n    ### Dropdowns\n  \n    Use the `nav.dropdown` contextual version of the [Components.Dropdown](Components.Dropdown.html) component\n    with a `tagName` of \"li\" to integrate a dropdown into your nav:\n  \n    ```hbs\n    <BsNav @type=\"pills\" as |nav|>\n      <nav.item>\n        <nav.linkTo @route=\"index\">\n          Home\n        </nav.linkTo>\n      </nav.item>\n      <nav.dropdown as |dd|>\n        <dd.toggle>Dropdown <span class=\"caret\"></span></dd.toggle>\n        <dd.menu as |ddm|>\n          <ddm.item><ddm.linkTo @route=\"foo\">Foo</ddm.linkTo></ddm.item>\n          <ddm.item><ddm.linkTo @route=\"bar\">Bar</ddm.linkTo></ddm.item>\n        </dd.menu>\n      </nav.dropdown>\n    </BsNav>\n    ```\n  \n    ### Bootstrap 3/4 Notes\n  \n    Use [`nav.linkTo`](Components.NavLinkTo.html) for in-app links to ensure proper styling regardless of\n    Bootstrap version. Explicit use of `<a>` tags in Bootstrap 4 must apply the `nav-link` class and manage\n    the `active` state explicitly.\n  \n    The `fill` styling is only available with Bootstrap 4\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Nav\n    @namespace Components\n    @extends Component\n    @public\n  \n   */\n  var Nav = _exports.default = /*#__PURE__*/function (_Component) {\n    function Nav() {\n      _classCallCheck(this, Nav);\n      return _callSuper(this, Nav, arguments);\n    }\n    _inherits(Nav, _Component);\n    return _createClass(Nav, [{\n      key: \"typeClass\",\n      get: function get() {\n        var type = this.type;\n        return type ? \"nav-\".concat(type) : undefined;\n      }\n\n      /**\n       * Special type of nav, either \"pills\" or \"tabs\"\n       *\n       * @property type\n       * @type String\n       * @default null\n       * @public\n       */\n    }, {\n      key: \"type\",\n      get: function get() {\n        var _this$args$type;\n        return (_this$args$type = this.args.type) !== null && _this$args$type !== void 0 ? _this$args$type : null;\n      }\n\n      /**\n       * Make the nav justified, see [bootstrap docs](http://getbootstrap.com/components/#nav-justified)\n       *\n       * @property justified\n       * @type boolean\n       * @default false\n       * @public\n       */\n    }, {\n      key: \"justified\",\n      get: function get() {\n        var _this$args$justified;\n        return (_this$args$justified = this.args.justified) !== null && _this$args$justified !== void 0 ? _this$args$justified : false;\n      }\n\n      /**\n       * Make the nav pills stacked, see [bootstrap docs](http://getbootstrap.com/components/#nav-pills)\n       *\n       * @property stacked\n       * @type boolean\n       * @default false\n       * @public\n       */\n    }, {\n      key: \"stacked\",\n      get: function get() {\n        var _this$args$stacked;\n        return (_this$args$stacked = this.args.stacked) !== null && _this$args$stacked !== void 0 ? _this$args$stacked : false;\n      }\n\n      /**\n       * Make the nav flex fill (BS4 only), see [bootstrap docs](http://getbootstrap.com/docs/4.1/components/navs/#fill-and-justify)\n       *\n       * @property fill\n       * @type boolean\n       * @default false\n       * @public\n       */\n    }, {\n      key: \"fill\",\n      get: function get() {\n        var _this$args$fill;\n        return (_this$args$fill = this.args.fill) !== null && _this$args$fill !== void 0 ? _this$args$fill : false;\n      }\n\n      /**\n       * @property itemComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property linkToComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property dropdownComponent\n       * @type {String}\n       * @private\n       */\n    }]);\n  }(_component2.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Nav);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-nav/item\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/debug\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _debug, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/debug\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{!-- template-lint-disable no-invalid-interactive --}}\n  <li class=\"nav-item\" ...attributes {{on \"click\" this.handleClick}}>\n    {{yield}}\n  </li>\n  \n  */\n  {\n    \"id\": \"6wRb+OhH\",\n    \"block\": \"[[[11,\\\"li\\\"],[24,0,\\\"nav-item\\\"],[17,1],[4,[38,1],[\\\"click\\\",[30,0,[\\\"handleClick\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[18,2,null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"li\\\",\\\"on\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-nav/item.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Component for each item within a [Components.Nav](Components.Nav.html) component. Have a look there for examples.\n  \n   @class NavItem\n   @namespace Components\n   @extends Component\n   @public\n   */\n  var NavItem = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function NavItem(owner, args) {\n      var _this;\n      _classCallCheck(this, NavItem);\n      _this = _callSuper(this, NavItem, [owner, args]);\n      var _this2 = _this,\n        model = _this2.model,\n        models = _this2.models;\n      (true && !(!model || !models) && (0, _debug.assert)('You cannot pass both `@model` and `@models` to a nav item component!', !model || !models));\n      return _this;\n    }\n    _inherits(NavItem, _Component);\n    return _createClass(NavItem, [{\n      key: \"handleClick\",\n      value:\n      /**\n       * Called when clicking the nav item\n       *\n       * @event onClick\n       * @public\n       */\n\n      function handleClick() {\n        var _this$args$onClick, _this$args;\n        (_this$args$onClick = (_this$args = this.args).onClick) === null || _this$args$onClick === void 0 || _this$args$onClick.call(_this$args);\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"handleClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, NavItem);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-navbar\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/debug\", \"@ember/utils\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _tracking, _debug, _utils, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/debug\",0,\"@ember/utils\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{!-- template-lint-disable no-duplicate-landmark-elements --}}\n  {{#let\n    (hash\n      toggle=(component (ensure-safe-component (bs-default @toggleComponent (component \"bs-navbar/toggle\"))) onClick=this.toggleNavbar collapsed=this.collapsed)\n      content=(component (ensure-safe-component (bs-default @contentComponent (component \"bs-navbar/content\"))) collapsed=this.collapsed onHidden=this.onCollapsed onShown=this.onExpanded)\n      nav=(component\n        (ensure-safe-component (bs-default @navComponent (component \"bs-navbar/nav\")))\n        linkToComponent=(component \"bs-navbar/link-to\" onCollapse=this.collapse attrClassInternal=\"nav-link\")\n      )\n      collapse=this.collapse\n      expand=this.expand\n      toggleNavbar=this.toggleNavbar\n    ) as |yieldedHash|}}\n    <nav class=\"navbar {{this.positionClass}} {{this.typeClass}} {{this.breakpointClass}} {{this.backgroundClass}}\" ...attributes>\n      {{#if (macroCondition (macroGetOwnConfig \"isBS4\"))}}\n        {{#if this.fluid}}\n          {{yield yieldedHash}}\n        {{else}}\n          <div class=\"container\">\n            {{yield yieldedHash}}\n          </div>\n        {{/if}}\n      {{else}}\n        <div class={{this.containerClass}}>\n          {{yield yieldedHash}}\n        </div>\n      {{/if}}\n    </nav>\n  {{/let}}\n  */\n  {\n    \"id\": \"LQzRnXy0\",\n    \"block\": \"[[[44,[[28,[37,1],null,[[\\\"toggle\\\",\\\"content\\\",\\\"nav\\\",\\\"collapse\\\",\\\"expand\\\",\\\"toggleNavbar\\\"],[[50,[28,[37,3],[[28,[37,4],[[30,1],[50,\\\"bs-navbar/toggle\\\",0,null,null]],null]],null],0,null,[[\\\"onClick\\\",\\\"collapsed\\\"],[[30,0,[\\\"toggleNavbar\\\"]],[30,0,[\\\"collapsed\\\"]]]]],[50,[28,[37,3],[[28,[37,4],[[30,2],[50,\\\"bs-navbar/content\\\",0,null,null]],null]],null],0,null,[[\\\"collapsed\\\",\\\"onHidden\\\",\\\"onShown\\\"],[[30,0,[\\\"collapsed\\\"]],[30,0,[\\\"onCollapsed\\\"]],[30,0,[\\\"onExpanded\\\"]]]]],[50,[28,[37,3],[[28,[37,4],[[30,3],[50,\\\"bs-navbar/nav\\\",0,null,null]],null]],null],0,null,[[\\\"linkToComponent\\\"],[[50,\\\"bs-navbar/link-to\\\",0,null,[[\\\"onCollapse\\\",\\\"attrClassInternal\\\"],[[30,0,[\\\"collapse\\\"]],\\\"nav-link\\\"]]]]]],[30,0,[\\\"collapse\\\"]],[30,0,[\\\"expand\\\"]],[30,0,[\\\"toggleNavbar\\\"]]]]]],[[[1,\\\"  \\\"],[11,\\\"nav\\\"],[16,0,[29,[\\\"navbar \\\",[30,0,[\\\"positionClass\\\"]],\\\" \\\",[30,0,[\\\"typeClass\\\"]],\\\" \\\",[30,0,[\\\"breakpointClass\\\"]],\\\" \\\",[30,0,[\\\"backgroundClass\\\"]]]]],[17,5],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"fluid\\\"]],[[[1,\\\"        \\\"],[18,6,[[30,4]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"container\\\"],[12],[1,\\\"\\\\n          \\\"],[18,6,[[30,4]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[4]]]],[\\\"@toggleComponent\\\",\\\"@contentComponent\\\",\\\"@navComponent\\\",\\\"yieldedHash\\\",\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"nav\\\",\\\"if\\\",\\\"yield\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-navbar.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Component to generate [Bootstrap navbars](http://getbootstrap.com/components/#navbar).\n  \n    ### Usage\n  \n    Uses the following components by a contextual reference:\n  \n    ```hbs\n    <BsNavbar as |navbar|>\n      <div class=\"navbar-header\">\n        <navbar.toggle />\n        <a class=\"navbar-brand\" href=\"#\">Brand</a>\n      </div>\n      <navbar.content>\n        <navbar.nav as |nav|>\n          <nav.item>\n            <nav.linkTo @route=\"home\">Home</nav.linkTo>\n          </nav.item>\n          <nav.item>\n            <nav.linkTo @route=\"navbars\">Navbars</nav.linkTo>\n          </nav.item>\n        </navbar.nav>\n      </navbar.content>\n    </BsNavbar>\n    ```\n  \n    **Note:** the `<div class=\"navbar-header\">` is required for BS3 to hold the elements visible on a mobile breakpoint,\n    when the actual content is collapsed. It should *not* be used for BS4!\n  \n    The component yields references to the following contextual components:\n  \n    * [Components.NavbarContent](Components.NavbarContent.html)\n    * [Components.NavbarToggle](Components.NavbarToggle.html)\n    * [Components.NavbarNav](Components.NavbarNav.html)\n  \n    Furthermore, references to the following actions are yielded:\n  \n    * `collapse`: triggers the `onCollapse` action and collapses the navbar (mobile)\n    * `expand`: triggers the `onExpand` action and expands the navbar (mobile)\n    * `toggleNavbar`: triggers the `toggleNavbar` action and toggles the navbar (mobile)\n  \n    ### Responsive Design\n  \n    For the mobile breakpoint the Bootstrap styles will hide the navbar content (`{{navbar.content}}`). Clicking on the\n    navbar toggle button (`{{navbar.toggle}}`) will expand the menu. By default, all nav links (`<nav.linkTo @route=\"...\">`) are already\n    wired up to call the navbar's `collapse` action, so clicking any of them will collapse the navbar. To selectively\n    prevent that, you can set its `collapseNavbar` property to false:\n  \n    ```hbs\n    <nav.item>\n      <nav.linkTo @route=\"index\" @collapseNavbar={{false}}>Don't collapse</nav.linkTo>\n    </nav.item>\n    ```\n  \n    To collapse the navbar when clicking on some nav items that are not internal links, you can use the yielded `collapse`\n    action:\n  \n    ```hbs\n    <BsNavbar as |navbar|>\n      <navbar.content>\n        <navbar.nav as |nav|>\n          <nav.item>\n            <a {{on \"click\" navbar.collapse}}>Collapse</a>\n          </nav.item>\n        </navbar.nav>\n      </navbar.content>\n    </BsNavbar>\n    ```\n  \n    ### Navbar styles\n  \n    The component supports the default bootstrap navbar styling options through the `type`\n    property. Bootstrap navbars [do not currently support justified nav links](http://getbootstrap.com/components/#navbar-default),\n    so those are explicitly disallowed.\n  \n    Other bootstrap navbar variations, such as forms, buttons, etc. can be supported through direct use of\n    bootstrap styles applied through the `class` attribute on the components.\n  \n    ### Bootstrap 3/4 Notes\n  \n    Bootstrap 4 changed the default navbar styling option from `navbar-default` to `navbar-light`.\n    If you explicitly specified \"default\" in Bootstrap 3 and are migrating, you will need to change\n    this in your code. Bootstrap 4 changes `navbar-inverse` to `navbar-dark`.\n  \n    Bootstrap 4 navbars are fluid by default without the need for an additional container. An\n    additional container is added like with Bootstrap 3 if `fluid` is `false`.\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Navbar\n    @namespace Components\n    @extends Component\n    @public\n  */\n  var Navbar = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function Navbar() {\n      var _this;\n      _classCallCheck(this, Navbar);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Navbar, [].concat(args));\n      /**\n       * @property _toggledCollapse\n       * @private\n       */\n      _initializerDefineProperty(_this, \"_toggledCollapse\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(Navbar, _Component);\n    return _createClass(Navbar, [{\n      key: \"collapsed\",\n      get:\n      /**\n       * Manages the state for the responsive menu between the toggle and the content.\n       *\n       * @property collapsed\n       * @type boolean\n       * @default true\n       * @public\n       */\n      function get() {\n        var _ref, _this$_toggledCollaps;\n        return (_ref = (_this$_toggledCollaps = this._toggledCollapse) !== null && _this$_toggledCollaps !== void 0 ? _this$_toggledCollaps : this.args.collapsed) !== null && _ref !== void 0 ? _ref : true;\n      }\n    }, {\n      key: \"fluid\",\n      get:\n      /**\n       * Controls whether the wrapping div is a fluid container or not.\n       *\n       * @property fluid\n       * @type boolean\n       * @default true\n       * @public\n       */\n      function get() {\n        var _this$args$fluid;\n        return (_this$args$fluid = this.args.fluid) !== null && _this$args$fluid !== void 0 ? _this$args$fluid : true;\n      }\n\n      /**\n       * BS5 only: Allows to override the container layout, see https://getbootstrap.com/docs/5.0/components/navbar/#containers.\n       * Allowed values: `'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'`, `'fluid'`, see https://getbootstrap.com/docs/5.0/layout/containers/.\n       * By default, it is `.container-fluid`, or `.container` if the `@fluid` argument is set to false.\n       *\n       * @property container\n       * @type string\n       * @public\n       */\n    }, {\n      key: \"containerClass\",\n      get: function get() {\n        var container = this.args.container;\n        if (container) {\n          return \"container-\".concat(container);\n        }\n        return this.fluid ? 'container-fluid' : 'container';\n      }\n\n      /**\n       * Specifies the position classes for the navbar, currently supporting none, \"fixed-top\", \"fixed-bottom\", and\n       * either \"static-top\" (BS3) or \"sticky-top\" (BS4).\n       * See the [bootstrap docs](http://getbootstrap.com/components/#navbar-fixed-top) for details.\n       *\n       * @property position\n       * @type String\n       * @default null\n       * @public\n       */\n    }, {\n      key: \"position\",\n      get: function get() {\n        var _this$args$position;\n        return (_this$args$position = this.args.position) !== null && _this$args$position !== void 0 ? _this$args$position : null;\n      }\n    }, {\n      key: \"positionClass\",\n      get: function get() {\n        var position = this.position;\n        var validPositions = ['fixed-top', 'fixed-bottom', 'sticky-top'];\n        if (validPositions.indexOf(position) === -1) {\n          return null;\n        }\n        return position;\n      }\n\n      /**\n       * Property for type styling\n       *\n       * For the available types see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/navbar/#color-schemes)\n       *\n       * @property type\n       * @type String\n       * @default 'light'\n       * @public\n       */\n    }, {\n      key: \"type\",\n      get: function get() {\n        var _this$args$type;\n        return (_this$args$type = this.args.type) !== null && _this$args$type !== void 0 ? _this$args$type : 'light';\n      }\n    }, {\n      key: \"typeClass\",\n      get: function get() {\n        var type = this.type || 'light';\n        (true && !(typeof type === 'string' && type !== '') && (0, _debug.assert)('The value of `type` must be a string', typeof type === 'string' && type !== ''));\n        return \"navbar-\".concat(type);\n      }\n\n      /**\n       * The action to be sent when the navbar is about to be collapsed.\n       *\n       * You can return false to prevent collapsing the navbar automatically, and do that in your action by\n       * setting `collapsed` to true.\n       *\n       * @event onCollapse\n       * @public\n       */\n\n      /**\n       * The action to be sent after the navbar has been collapsed (including the CSS transition).\n       *\n       * @event onCollapsed\n       * @public\n       */\n    }, {\n      key: \"onCollapsed\",\n      get: function get() {\n        var _this$args$onCollapse;\n        return (_this$args$onCollapse = this.args.onCollapsed) !== null && _this$args$onCollapse !== void 0 ? _this$args$onCollapse : function () {};\n      }\n\n      /**\n       * The action to be sent when the navbar is about to be expanded.\n       *\n       * You can return false to prevent expanding the navbar automatically, and do that in your action by\n       * setting `collapsed` to false.\n       *\n       * @event onExpand\n       * @public\n       */\n\n      /**\n       * The action to be sent after the navbar has been expanded (including the CSS transition).\n       *\n       * @event onExpanded\n       * @public\n       */\n    }, {\n      key: \"onExpanded\",\n      get: function get() {\n        var _this$args$onExpanded;\n        return (_this$args$onExpanded = this.args.onExpanded) !== null && _this$args$onExpanded !== void 0 ? _this$args$onExpanded : function () {};\n      }\n\n      /**\n       * @method expand\n       * @private\n       */\n    }, {\n      key: \"expand\",\n      value: function expand() {\n        var _this$args$onExpand, _this$args;\n        if (((_this$args$onExpand = (_this$args = this.args).onExpand) === null || _this$args$onExpand === void 0 ? void 0 : _this$args$onExpand.call(_this$args)) === false) {\n          return;\n        }\n        this._toggledCollapse = false;\n      }\n\n      /**\n       * @method collapse\n       * @private\n       */\n    }, {\n      key: \"collapse\",\n      value: function collapse() {\n        var _this$args$onCollapse2, _this$args2;\n        if (((_this$args$onCollapse2 = (_this$args2 = this.args).onCollapse) === null || _this$args$onCollapse2 === void 0 ? void 0 : _this$args$onCollapse2.call(_this$args2)) === false) {\n          return;\n        }\n        this._toggledCollapse = true;\n      }\n    }, {\n      key: \"toggleNavbar\",\n      value: function toggleNavbar() {\n        if (this.collapsed) {\n          this.expand();\n        } else {\n          this.collapse();\n        }\n      }\n\n      /**\n       * Bootstrap 4 Only: Defines the responsive toggle breakpoint size. Options are the standard\n       * two character Bootstrap size abbreviations. Used to set the `navbar-expand-*`\n       * class. Set to `null` to disable collapsing.\n       *\n       * @property toggleBreakpoint\n       * @type String\n       * @default 'lg'\n       * @public\n       */\n    }, {\n      key: \"toggleBreakpoint\",\n      get: function get() {\n        if (this.args.toggleBreakpoint === undefined) {\n          return 'lg';\n        }\n        return this.args.toggleBreakpoint;\n      }\n\n      /**\n       * Bootstrap 4 Only: Sets the background color for the navbar. Can be any color\n       * in the set that composes the `bg-*` classes and can be extended by creating your\n       * own `bg-*` classes.\n       *\n       * @property backgroundColor\n       * @type String\n       * @default 'light'\n       * @public\n       */\n    }, {\n      key: \"backgroundColor\",\n      get: function get() {\n        var _this$args$background;\n        return (_this$args$background = this.args.backgroundColor) !== null && _this$args$background !== void 0 ? _this$args$background : 'light';\n      }\n    }, {\n      key: \"breakpointClass\",\n      get: function get() {\n        var toggleBreakpoint = this.toggleBreakpoint;\n        if ((0, _utils.isBlank)(toggleBreakpoint)) {\n          return 'navbar-expand';\n        } else {\n          return \"navbar-expand-\".concat(toggleBreakpoint);\n        }\n      }\n    }, {\n      key: \"backgroundClass\",\n      get: function get() {\n        return \"bg-\".concat(this.backgroundColor);\n      }\n\n      /**\n       * @property toggleComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property contentComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property navComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property linkToComponent\n       * @type {String}\n       * @private\n       */\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_toggledCollapse\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"expand\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"expand\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"collapse\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"collapse\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleNavbar\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleNavbar\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Navbar);\n});","define(\"ember-bootstrap/components/bs-navbar/content\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <BsCollapse\n    @collapsed={{@collapsed}}\n    @onHidden={{@onHidden}}\n    @onShown={{@onShown}}\n    class=\"navbar-collapse\"\n    ...attributes\n  >\n    {{yield}}\n  </BsCollapse>\n  \n  */\n  {\n    \"id\": \"UA5o+uis\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"navbar-collapse\\\"],[17,1]],[[\\\"@collapsed\\\",\\\"@onHidden\\\",\\\"@onShown\\\"],[[30,2],[30,3],[30,4]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[18,5,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@collapsed\\\",\\\"@onHidden\\\",\\\"@onShown\\\",\\\"&default\\\"],false,[\\\"bs-collapse\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-navbar/content.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Component to wrap the collapsible content of a [Components.Navbar](Components.Navbar.html) component.\n   * Have a look there for examples.\n   *\n   * @class NavbarContent\n   * @namespace Components\n   * @extends Components.Collapse\n   * @public\n   */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-navbar/link-to\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <BsLinkTo\n    @route={{@route}}\n    @model={{@model}}\n    @models={{@models}}\n    @query={{@query}}\n    @disabled={{@disabled}}\n    {{on 'click' this.onClick}}\n    class={{@attrClassInternal}}\n    ...attributes\n  >\n    {{yield}}\n  </BsLinkTo>\n  */\n  {\n    \"id\": \"JGa2+8r5\",\n    \"block\": \"[[[8,[39,0],[[16,0,[30,1]],[17,2],[4,[38,1],[\\\"click\\\",[30,0,[\\\"onClick\\\"]]],null]],[[\\\"@route\\\",\\\"@model\\\",\\\"@models\\\",\\\"@query\\\",\\\"@disabled\\\"],[[30,3],[30,4],[30,5],[30,6],[30,7]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[18,8,null],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@attrClassInternal\\\",\\\"&attrs\\\",\\\"@route\\\",\\\"@model\\\",\\\"@models\\\",\\\"@query\\\",\\\"@disabled\\\",\\\"&default\\\"],false,[\\\"bs-link-to\\\",\\\"on\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-navbar/link-to.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Extended `{{link-to}}` component for use within Navbars.\n   *\n   * @class NavbarLinkTo\n   * @namespace Components\n   * @extends Components.NavLinkTo\n   * @public\n   */\n  var NavbarLinkTo = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function NavbarLinkTo() {\n      _classCallCheck(this, NavbarLinkTo);\n      return _callSuper(this, NavbarLinkTo, arguments);\n    }\n    _inherits(NavbarLinkTo, _Component);\n    return _createClass(NavbarLinkTo, [{\n      key: \"onClick\",\n      value:\n      /**\n       * @property collapseNavbar\n       * @type {Boolean}\n       * @default true\n       * @public\n       */\n\n      function onClick() {\n        var _this$args$collapseNa;\n        if ((_this$args$collapseNa = this.args.collapseNavbar) !== null && _this$args$collapseNa !== void 0 ? _this$args$collapseNa : true) {\n          this.args.onCollapse();\n        }\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"onClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, NavbarLinkTo);\n});","define(\"ember-bootstrap/components/bs-navbar/nav\", [\"exports\", \"ember-bootstrap/components/bs-nav\"], function (_exports, _bsNav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-nav\"eaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  /**\n   * Component for the `.nav` element within a [Components.Navbar](Components.Navbar.html)\n   * component. Have a look there for examples.\n   *\n   * Per [the bootstrap docs](http://getbootstrap.com/components/#navbar),\n   * justified navbar nav links are not supported.\n   *\n   * @class NavbarNav\n   * @namespace Components\n   * @extends Components.Nav\n   * @public\n   */\n  var NavbarNav = _exports.default = /*#__PURE__*/function (_BsNavComponent) {\n    function NavbarNav() {\n      var _this;\n      _classCallCheck(this, NavbarNav);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, NavbarNav, [].concat(args));\n      _defineProperty(_this, \"additionalClass\", 'navbar-nav');\n      return _this;\n    }\n    _inherits(NavbarNav, _BsNavComponent);\n    return _createClass(NavbarNav, [{\n      key: \"justified\",\n      get: function get() {\n        var _this$args$justified;\n        return (_this$args$justified = this.args.justified) !== null && _this$args$justified !== void 0 ? _this$args$justified : false;\n      }\n    }]);\n  }(_bsNav.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-navbar/toggle\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/modifier\", \"@ember/template-factory\"], function (_exports, _component, _component2, _modifier, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/modifier\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <button\n    type=\"button\"\n    class=\"navbar-toggler\n    {{if (bs-default @collapsed true) \"collapsed\"}}\"\n    ...attributes\n    {{(if @onClick (modifier this.on \"click\" @onClick))}}\n  >\n    {{#if (has-block)}}\n      {{yield}}\n    {{else}}\n      <span class=\"navbar-toggler-icon\"></span>\n    {{/if}}\n  </button>\n  \n  */\n  {\n    \"id\": \"BywmEww5\",\n    \"block\": \"[[[11,\\\"button\\\"],[24,4,\\\"button\\\"],[16,0,[29,[\\\"navbar-toggler\\\\n  \\\",[52,[28,[37,2],[[30,1],true],null],\\\"collapsed\\\"]]]],[17,2],[4,[52,[30,3],[50,[28,[37,4],[[30,0,[\\\"on\\\"]]],[[\\\"type\\\",\\\"loc\\\",\\\"original\\\"],[\\\"modifier\\\",\\\"('ember-bootstrap/components/bs-navbar/toggle.hbs' @ L7:C17) \\\",\\\"this.on\\\"]]],2,[\\\"click\\\",[30,3]],null]],null,null],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,4]],[[[1,\\\"    \\\"],[18,4,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"navbar-toggler-icon\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\"]],[\\\"@collapsed\\\",\\\"&attrs\\\",\\\"@onClick\\\",\\\"&default\\\"],false,[\\\"button\\\",\\\"if\\\",\\\"bs-default\\\",\\\"modifier\\\",\\\"-disallow-dynamic-resolution\\\",\\\"has-block\\\",\\\"yield\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-navbar/toggle.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Component to implement the responsive menu toggle behavior in a [Components.Navbar](Components.Navbar.html)\n   * component. Have a look there for examples.\n   *\n   * ### Bootstrap 3/4 Notes\n   *\n   * The inline version of the component uses the triple `icon-bar` styling for Bootstrap 3 and the\n   * `navbar-toggler-icon` styling for Bootstrap 4.\n   *\n   * @class NavbarToggle\n   * @namespace Components\n   * @extends Ember.Component\n   * @public\n   */\n  var NavbarToggle = _exports.default = /*#__PURE__*/function (_Component) {\n    function NavbarToggle() {\n      var _this;\n      _classCallCheck(this, NavbarToggle);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, NavbarToggle, [].concat(args));\n      _defineProperty(_this, \"on\", _modifier.on);\n      return _this;\n    }\n    _inherits(NavbarToggle, _Component);\n    return _createClass(NavbarToggle);\n  }(_component2.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, NavbarToggle);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-popover\", [\"exports\", \"@ember/component\", \"ember-bootstrap/components/bs-contextual-help\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _bsContextualHelp, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-contextual-help\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{! template-lint-disable no-unbound }}\n  {{unbound this._parentFinder}}\n  {{#if this.inDom}}\n    {{#let (ensure-safe-component (bs-default @elementComponent (component \"bs-popover/element\"))) as |Element|}}\n      <Element\n        @placement={{this.placement}}\n        @fade={{this.fade}}\n        @showHelp={{this.showHelp}}\n        @title={{@title}}\n        @renderInPlace={{this._renderInPlace}}\n        @popperTarget={{this.triggerTargetElement}}\n        @destinationElement={{this.destinationElement}}\n        @autoPlacement={{this.autoPlacement}}\n        @viewportElement={{this.viewportElement}}\n        @viewportPadding={{this.viewportPadding}}\n  \n        {{create-ref \"overlayElement\"}}\n        ...attributes\n      >\n        {{yield\n          (hash\n            close=this.close\n          )\n        }}\n      </Element>\n    {{/let}}\n  {{/if}}\n  {{did-insert-helper this.setup}}\n  {{did-update-helper this.showOrHide @visible}}\n  */\n  {\n    \"id\": \"rcbcoADK\",\n    \"block\": \"[[[1,[28,[35,0],[[30,0,[\\\"_parentFinder\\\"]]],null]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"inDom\\\"]],[[[44,[[28,[37,3],[[28,[37,4],[[30,1],[50,\\\"bs-popover/element\\\",0,null,null]],null]],null]],[[[1,\\\"    \\\"],[8,[30,2],[[17,3],[4,[38,6],[\\\"overlayElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]]],[[\\\"@placement\\\",\\\"@fade\\\",\\\"@showHelp\\\",\\\"@title\\\",\\\"@renderInPlace\\\",\\\"@popperTarget\\\",\\\"@destinationElement\\\",\\\"@autoPlacement\\\",\\\"@viewportElement\\\",\\\"@viewportPadding\\\"],[[30,0,[\\\"placement\\\"]],[30,0,[\\\"fade\\\"]],[30,0,[\\\"showHelp\\\"]],[30,4],[30,0,[\\\"_renderInPlace\\\"]],[30,0,[\\\"triggerTargetElement\\\"]],[30,0,[\\\"destinationElement\\\"]],[30,0,[\\\"autoPlacement\\\"]],[30,0,[\\\"viewportElement\\\"]],[30,0,[\\\"viewportPadding\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[18,6,[[28,[37,8],null,[[\\\"close\\\"],[[30,0,[\\\"close\\\"]]]]]]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]]]],[]],null],[1,[28,[35,9],[[30,0,[\\\"setup\\\"]]],null]],[1,\\\"\\\\n\\\"],[1,[28,[35,10],[[30,0,[\\\"showOrHide\\\"]],[30,5]],null]]],[\\\"@elementComponent\\\",\\\"Element\\\",\\\"&attrs\\\",\\\"@title\\\",\\\"@visible\\\",\\\"&default\\\"],false,[\\\"unbound\\\",\\\"if\\\",\\\"let\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"component\\\",\\\"create-ref\\\",\\\"yield\\\",\\\"hash\\\",\\\"did-insert-helper\\\",\\\"did-update-helper\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-popover.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Component that implements Bootstrap [popovers](http://getbootstrap.com/javascript/#popovers).\n  \n    By default, it will attach its listeners (click) to the parent DOM element to trigger\n    the popover:\n  \n    ```hbs\n    <button class=\"btn\">\n      <BsPopover @title=\"this is a title\">and this the body</BsPopover>\n    </button>\n    ```\n  \n    ### Trigger\n  \n    The trigger element is the DOM element that will cause the popover to be shown when one of the trigger events occur on\n    that element. By default, the trigger element is the parent DOM element of the component, and the trigger event will be\n    \"click\".\n  \n    The `triggerElement` property accepts any CSS selector to attach the popover to any other existing DOM element.\n  \n    To customize the events that will trigger the popover use the `triggerEvents` property, that accepts an array or a\n    string of events, with \"hover\", \"focus\" and \"click\" being supported.\n  \n    ### Placement options\n  \n    By default, the popover will show up to the right of the trigger element. Use the `placement` property to change that\n    (\"top\", \"bottom\", \"left\" and \"right\"). To make sure the popover will not exceed the viewport (see Advanced customization)\n    you can set `autoPlacement` to true. A popover with `placement=\"right\" will be placed to the right if there is enough\n    space, otherwise to the left.\n  \n    ### Advanced customization\n  \n    Several other properties allow for some advanced customization:\n    * `visible` to show/hide the popover programmatically\n    * `fade` to disable the fade in transition\n    * `delay` (or `delayShow` and `delayHide`) to add a delay\n    * `viewportSelector` and `viewportPadding` to customize the viewport that affects `autoPlacement`\n    *  a `close` action is yielded, that allows you to close the tooltip:\n  \n    ```hbs\n    <BsPopover as |po| >This is a popover <button {{on \"click\" po.close}}>Close</button></BsPopover>\n    ```\n  \n    See the individual API docs for each property.\n  \n    ### Actions\n  \n    When you want to react on the popover being shown or hidden, you can use one of the following supported actions:\n    * `onShow`\n    * `onShown`\n    * `onHide`\n    * `onHidden`\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Popover\n    @namespace Components\n    @extends Components.ContextualHelp\n    @public\n  */\n  var Popover = _exports.default = (_class = /*#__PURE__*/function (_ContextualHelp) {\n    function Popover() {\n      var _this;\n      _classCallCheck(this, Popover);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Popover, [].concat(args));\n      /**\n       * @property placement\n       * @type string\n       * @default 'right'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"placement\", _descriptor, _this);\n      /**\n       * @property triggerEvents\n       * @type array|string\n       * @default 'click'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"triggerEvents\", _descriptor2, _this);\n      return _this;\n    }\n    _inherits(Popover, _ContextualHelp);\n    return _createClass(Popover, [{\n      key: \"arrowElement\",\n      get:\n      /**\n       * @property elementComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * The DOM element of the arrow element.\n       *\n       * @property arrowElement\n       * @type object\n       * @readonly\n       * @private\n       */\n      function get() {\n        return this.overlayElement.querySelector('.arrow');\n      }\n    }]);\n  }(_bsContextualHelp.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"placement\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'right';\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"triggerEvents\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'click';\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Popover);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-popover/element\", [\"exports\", \"@ember/component\", \"ember-bootstrap/components/bs-contextual-help/element\", \"@ember/template-factory\"], function (_exports, _component, _element, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-contextual-help/element\",0,\"@embroider/macros\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @renderInPlace}}\n    <div\n      class=\"popover {{if this.fade \"fade\"}} {{this.actualPlacementClass}} {{if this.showHelp \"show\"}}\"\n      role=\"tooltip\"\n      ...attributes\n      {{popper-tooltip @popperTarget this.popperOptions}}\n      {{create-ref \"popperElement\"}}\n    >\n      <div class={{this.arrowClass}}></div>\n      {{#if @title}}\n        <h3 class=\"popover-header\">{{@title}}</h3>\n      {{/if}}\n      <div class=\"popover-body\">{{yield}}</div>\n    </div>\n  {{else}}\n    {{#in-element @destinationElement insertBefore=null}}\n      <div\n        class=\"popover {{if this.fade \"fade\"}} {{this.actualPlacementClass}} {{if this.showHelp \"show\"}}\"\n        role=\"tooltip\"\n        ...attributes\n        {{popper-tooltip @popperTarget this.popperOptions}}\n        {{create-ref \"popperElement\"}}\n      >\n        <div class={{this.arrowClass}}></div>\n        {{#if @title}}\n          <h3 class=\"popover-header\">{{@title}}</h3>\n        {{/if}}\n        <div class=\"popover-body\">{{yield}}</div>\n      </div>\n    {{/in-element}}\n  {{/if}}\n  \n  \n  */\n  {\n    \"id\": \"LXUo+xLT\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,0],[16,0,[29,[\\\"popover \\\",[52,[30,0,[\\\"fade\\\"]],\\\"fade\\\"],\\\" \\\",[30,0,[\\\"actualPlacementClass\\\"]],\\\" \\\",[52,[30,0,[\\\"showHelp\\\"]],\\\"show\\\"]]]],[24,\\\"role\\\",\\\"tooltip\\\"],[17,2],[4,[38,2],[[30,3],[30,0,[\\\"popperOptions\\\"]]],null],[4,[38,3],[\\\"popperElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[30,0,[\\\"arrowClass\\\"]]],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,4],[[[1,\\\"      \\\"],[10,\\\"h3\\\"],[14,0,\\\"popover-header\\\"],[12],[1,[30,4]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[10,0],[14,0,\\\"popover-body\\\"],[12],[18,6,null],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[40,[[[1,\\\"    \\\"],[11,0],[16,0,[29,[\\\"popover \\\",[52,[30,0,[\\\"fade\\\"]],\\\"fade\\\"],\\\" \\\",[30,0,[\\\"actualPlacementClass\\\"]],\\\" \\\",[52,[30,0,[\\\"showHelp\\\"]],\\\"show\\\"]]]],[24,\\\"role\\\",\\\"tooltip\\\"],[17,2],[4,[38,2],[[30,3],[30,0,[\\\"popperOptions\\\"]]],null],[4,[38,3],[\\\"popperElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[30,0,[\\\"arrowClass\\\"]]],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,4],[[[1,\\\"        \\\"],[10,\\\"h3\\\"],[14,0,\\\"popover-header\\\"],[12],[1,[30,4]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,0,\\\"popover-body\\\"],[12],[18,6,null],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],\\\"%cursor:0%\\\",[28,[37,7],[[30,5]],null],null]],[]]],[1,\\\"\\\\n\\\"]],[\\\"@renderInPlace\\\",\\\"&attrs\\\",\\\"@popperTarget\\\",\\\"@title\\\",\\\"@destinationElement\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"popper-tooltip\\\",\\\"create-ref\\\",\\\"h3\\\",\\\"yield\\\",\\\"in-element\\\",\\\"-in-el-null\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-popover/element.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Internal component for popover's markup. Should not be used directly.\n  \n   @class PopoverElement\n   @namespace Components\n   @extends Components.ContextualHelpElement\n   @private\n   */\n  var PopoverElement = _exports.default = /*#__PURE__*/function (_ContextualHelpElemen) {\n    function PopoverElement() {\n      var _this;\n      _classCallCheck(this, PopoverElement);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, PopoverElement, [].concat(args));\n      /**\n       * @property title\n       * @type string\n       * @public\n       */\n      _defineProperty(_this, \"arrowClass\", 'arrow');\n      _defineProperty(_this, \"placementClassPrefix\", 'bs-popover-');\n      _defineProperty(_this, \"offset\", [0, 8]);\n      return _this;\n    }\n    _inherits(PopoverElement, _ContextualHelpElemen);\n    return _createClass(PopoverElement);\n  }(_element.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PopoverElement);\n});","define(\"ember-bootstrap/components/bs-progress\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div class=\"progress\" ...attributes>\n    {{yield\n      (hash\n        bar=(bs-default @progressBarComponent (component \"bs-progress/bar\"))\n      )\n    }}\n  </div>\n  */\n  {\n    \"id\": \"L9yyWvg2\",\n    \"block\": \"[[[11,0],[24,0,\\\"progress\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[18,3,[[28,[37,2],null,[[\\\"bar\\\"],[[28,[37,3],[[30,2],[50,\\\"bs-progress/bar\\\",0,null,null]],null]]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@progressBarComponent\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"yield\\\",\\\"hash\\\",\\\"bs-default\\\",\\\"component\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-progress.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Component to display a Bootstrap progress bar, see http://getbootstrap.com/components/#progress.\n  \n    ### Usage\n  \n    The component yields a [Components.ProgressBar](Components.ProgressBar.html) component that represents a single bar.\n    Use the `value` property to control the progress bar's width. To apply the different styling options supplied by\n    Bootstrap, use the appropriate properties like `type`, `showLabel`, `striped` or `animate`.\n  \n    ```hbs\n    <BsProgress as |pg| >\n      <pg.bar @value={{this.progressValue}} @minValue={{0}} @maxValue={{10}} @showLabel={{true}} @type=\"danger\" aria-label=\"Loading\" />\n    </BsProgress>\n    ```\n  \n    > Don't forget to add a `aria-label` attribute to the progress bar for accessibility!\n  \n    ### Stacked\n  \n    You can place multiple progress bar components in a single progress component to\n    create a stack of progress bars as seen in http://getbootstrap.com/components/#progress-stacked.\n  \n    ```hbs\n    <BsProgress as |pg| >\n      <pg.bar @value={{this.progressValue1}} @type=\"success\" />\n      <pg.bar @value={{this.progressValue2}} @type=\"warning\" />\n      <pg.bar @value={{this.progressValue3}} @type=\"danger\" />\n    </BsProgress>\n    ```\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Progress\n    @namespace Components\n    @extends Ember.Component\n    @public\n  */\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n  /**\n   * @property progressBarComponent\n   * @type {String}\n   * @private\n   */\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-progress/bar\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    role=\"progressbar\"\n    aria-valuenow={{this.value}}\n    aria-valuemin={{this.minValue}}\n    aria-valuemax={{this.maxValue}}\n    class=\"progress-bar {{if this.striped \"progress-bar-striped\"}} {{this.typeClass}} {{if this.animate \"progress-bar-animated\"}}\"\n    ...attributes\n    {{style width=this.percentStyleValue}}\n  >\n    {{#if this.showLabel}}\n      {{#if (has-block)}}\n        {{yield this.percentRounded}}\n      {{else}}\n        {{this.percentRounded}}%\n      {{/if}}\n    {{else}}\n      {{#if (has-block)}}\n        <span class={{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"visually-hidden\" \"sr-only\"}}>{{yield this.percentRounded}}</span>\n      {{else}}\n        <span class={{if (macroCondition (macroGetOwnConfig \"isBS5\")) \"visually-hidden\" \"sr-only\"}}>{{this.percentRounded}}%</span>\n      {{/if}}\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"rqQv8lfR\",\n    \"block\": \"[[[11,0],[24,\\\"role\\\",\\\"progressbar\\\"],[16,\\\"aria-valuenow\\\",[30,0,[\\\"value\\\"]]],[16,\\\"aria-valuemin\\\",[30,0,[\\\"minValue\\\"]]],[16,\\\"aria-valuemax\\\",[30,0,[\\\"maxValue\\\"]]],[16,0,[29,[\\\"progress-bar \\\",[52,[30,0,[\\\"striped\\\"]],\\\"progress-bar-striped\\\"],\\\" \\\",[30,0,[\\\"typeClass\\\"]],\\\" \\\",[52,[30,0,[\\\"animate\\\"]],\\\"progress-bar-animated\\\"]]]],[17,1],[4,[38,2],null,[[\\\"width\\\"],[[30,0,[\\\"percentStyleValue\\\"]]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showLabel\\\"]],[[[41,[48,[30,2]],[[[1,\\\"      \\\"],[18,2,[[30,0,[\\\"percentRounded\\\"]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"percentRounded\\\"]]],[1,\\\"%\\\\n\\\"]],[]]]],[]],[[[41,[48,[30,2]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[18,2,[[30,0,[\\\"percentRounded\\\"]]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,[30,0,[\\\"percentRounded\\\"]]],[1,\\\"%\\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]],[13]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"style\\\",\\\"has-block\\\",\\\"yield\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-progress/bar.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Component for a single progress bar, see [Components.Progress](Components.Progress.html) for more examples.\n  \n   @class ProgressBar\n   @namespace Components\n   @extends Ember.Component\n   @public\n   */\n  var ProgressBar = _exports.default = /*#__PURE__*/function (_Component) {\n    function ProgressBar() {\n      _classCallCheck(this, ProgressBar);\n      return _callSuper(this, ProgressBar, arguments);\n    }\n    _inherits(ProgressBar, _Component);\n    return _createClass(ProgressBar, [{\n      key: \"minValue\",\n      get:\n      /**\n       * The lower limit of the value range\n       *\n       * @property minValue\n       * @type number\n       * @default 0\n       * @public\n       */\n      function get() {\n        var _this$args$minValue;\n        return (_this$args$minValue = this.args.minValue) !== null && _this$args$minValue !== void 0 ? _this$args$minValue : 0;\n      }\n\n      /**\n       * The upper limit of the value range\n       *\n       * @property maxValue\n       * @type number\n       * @default 100\n       * @public\n       */\n    }, {\n      key: \"maxValue\",\n      get: function get() {\n        var _this$args$maxValue;\n        return (_this$args$maxValue = this.args.maxValue) !== null && _this$args$maxValue !== void 0 ? _this$args$maxValue : 100;\n      }\n\n      /**\n       * The value the progress bar should represent\n       *\n       * @property value\n       * @type number\n       * @default 0\n       * @public\n       */\n    }, {\n      key: \"value\",\n      get: function get() {\n        var _this$args$value;\n        return (_this$args$value = this.args.value) !== null && _this$args$value !== void 0 ? _this$args$value : 0;\n      }\n\n      /**\n       If true a label will be shown inside the progress bar.\n        By default it will be the percentage corresponding to the `value` property, rounded to `roundDigits` digits.\n       You can customize it by using the component with a block template, which the component yields the percentage\n       value to:\n        ```hbs\n       {{#bs-progress}}\n       {{#bs-progress-bar value=progressValue as |percent|}}{{progressValue}} ({{percent}}%){{/bs-progress-bar}}\n       {{/bs-progress}}\n       ```\n        @property showLabel\n       @type boolean\n       @default false\n       @public\n       */\n    }, {\n      key: \"showLabel\",\n      get: function get() {\n        var _this$args$showLabel;\n        return (_this$args$showLabel = this.args.showLabel) !== null && _this$args$showLabel !== void 0 ? _this$args$showLabel : false;\n      }\n\n      /**\n       * Create a striped effect, see http://getbootstrap.com/components/#progress-striped\n       *\n       * @property striped\n       * @type boolean\n       * @default false\n       * @public\n       */\n    }, {\n      key: \"striped\",\n      get: function get() {\n        var _this$args$striped;\n        return (_this$args$striped = this.args.striped) !== null && _this$args$striped !== void 0 ? _this$args$striped : false;\n      }\n\n      /**\n       * Animate the stripes, see http://getbootstrap.com/components/#progress-animated\n       *\n       * @property animate\n       * @type boolean\n       * @default false\n       * @public\n       */\n    }, {\n      key: \"animate\",\n      get: function get() {\n        var _this$args$animate;\n        return (_this$args$animate = this.args.animate) !== null && _this$args$animate !== void 0 ? _this$args$animate : false;\n      }\n\n      /**\n       * Specify to how many digits the progress bar label should be rounded.\n       *\n       * @property roundDigits\n       * @type number\n       * @default 0\n       * @public\n       */\n    }, {\n      key: \"roundDigits\",\n      get: function get() {\n        var _this$args$roundDigit;\n        return (_this$args$roundDigit = this.args.roundDigits) !== null && _this$args$roundDigit !== void 0 ? _this$args$roundDigit : 0;\n      }\n\n      /**\n       * Property for type styling\n       *\n       * For the available types see the [Bootstrap docs](https://getbootstrap.com/docs/4.3/components/progress/#backgrounds)\n       *\n       * @property type\n       * @type String\n       * @default 'default'\n       * @public\n       */\n    }, {\n      key: \"type\",\n      get: function get() {\n        var _this$args$type;\n        return (_this$args$type = this.args.type) !== null && _this$args$type !== void 0 ? _this$args$type : 'default';\n      }\n    }, {\n      key: \"typeClass\",\n      get: function get() {\n        return \"bg-\".concat(this.type);\n      }\n\n      /**\n       * The percentage of `value`\n       *\n       * @property percent\n       * @type number\n       * @protected\n       * @readonly\n       */\n    }, {\n      key: \"percent\",\n      get: function get() {\n        var value = parseFloat(this.value);\n        var minValue = parseFloat(this.minValue);\n        var maxValue = parseFloat(this.maxValue);\n        return Math.min(Math.max((value - minValue) / (maxValue - minValue), 0), 1) * 100;\n      }\n\n      /**\n       * The percentage of `value`, rounded to `roundDigits` digits\n       *\n       * @property percentRounded\n       * @type number\n       * @protected\n       * @readonly\n       */\n    }, {\n      key: \"percentRounded\",\n      get: function get() {\n        var roundFactor = Math.pow(10, this.roundDigits);\n        return Math.round(this.percent * roundFactor) / roundFactor;\n      }\n    }, {\n      key: \"percentStyleValue\",\n      get: function get() {\n        var percent = this.percent;\n        return !isNaN(percent) ? \"\".concat(percent, \"%\") : '';\n      }\n    }]);\n  }(_component2.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ProgressBar);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-spinner\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"ember-bootstrap/utils/decorators/arg\", \"@ember/template-factory\"], function (_exports, _component, _component2, _arg, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"ember-bootstrap/utils/decorators/arg\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class=\"{{this.spinnerClass}} {{if @size (bs-size-class this.spinnerClass @size)}} {{bs-type-class 'text' @type default=\"primary\" outline=false}}\"\n    role=\"status\"\n    ...attributes\n  >\n    {{#if (has-block)}}\n      <span\n        class={{if\n          (macroCondition (macroGetOwnConfig \"isBS5\"))\n          \"visually-hidden\"\n          \"sr-only\"\n        }}\n      >{{yield}}</span>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"5XMAjtdW\",\n    \"block\": \"[[[11,0],[16,0,[29,[[30,0,[\\\"spinnerClass\\\"]],\\\" \\\",[52,[30,1],[28,[37,2],[[30,0,[\\\"spinnerClass\\\"]],[30,1]],null]],\\\" \\\",[28,[37,3],[\\\"text\\\",[30,2]],[[\\\"default\\\",\\\"outline\\\"],[\\\"primary\\\",false]]]]]],[24,\\\"role\\\",\\\"status\\\"],[17,3],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,4]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[18,4,null],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@size\\\",\\\"@type\\\",\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"bs-size-class\\\",\\\"bs-type-class\\\",\\\"has-block\\\",\\\"span\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-spinner.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n    Implements a [Spinner element](https://getbootstrap.com/docs/5.2/components/spinners/).\n  \n    ### Basic Usage\n  \n    ```hbs\n    <BsSpinner/>\n    <BsSpinner>Loading...</BsSpinner>\n    ```\n  \n    The (optional) component's block will render as visually invisible but accessible text for assistive technology like screen readers.\n  \n    ### Advanced Usage\n  \n    ```hbs\n    <BsSpinner @spinnerType=\"grow\" @size=\"sm\" @type=\"warning\"/>\n    ```\n  \n    ### Usage with `BsButton`\n  \n    ```hbs\n    <BsButton @onClick={{this.download}} as |button|>\n      Download\n      {{#if button.isPending}}\n        <BsSpinner @size=\"sm\"/>\n      {{/if}}\n    </BsButton>\n    ```\n  \n    @class Spinner\n    @namespace Components\n    @extends Glimmer.Component\n    @public\n  */\n  var BsSpinner = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function BsSpinner() {\n      var _this;\n      _classCallCheck(this, BsSpinner);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, BsSpinner, [].concat(args));\n      /**\n       * Property for size styling, set to 'sm'\n       *\n       * Also see the [Bootstrap docs](https://getbootstrap.com/docs/5.2/components/spinners/#size)\n       *\n       * @property size\n       * @type String\n       * @public\n       */\n      /**\n       * Property for type styling\n       *\n       * For the available types see the [Bootstrap docs](https://getbootstrap.com/docs/5.2/components/spinners/#colors)\n       *\n       * @property type\n       * @type String\n       * @default 'primary'\n       * @public\n       */\n      /**\n       * Spinner type - 'border' or 'grow'\n       *\n       * @property spinnerType\n       * @type string\n       * @default 'border'\n       * @public\n       */\n      _initializerDefineProperty(_this, \"spinnerType\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(BsSpinner, _Component);\n    return _createClass(BsSpinner, [{\n      key: \"spinnerClass\",\n      get: function get() {\n        return \"spinner-\".concat(this.spinnerType);\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"spinnerType\", [_arg.default], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return 'border';\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BsSpinner);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-tab\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/utils\", \"ember-bootstrap/components/bs-tab/pane\", \"@glimmer/tracking\", \"@ember/runloop\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _utils, _pane, _tracking, _runloop, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/utils\",0,\"ember-bootstrap/components/bs-tab/pane\",0,\"@glimmer/tracking\",0,\"@ember/runloop\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div ...attributes {{did-update this.listenToActiveId @activeId}}>\n    {{#if this.customTabs}}\n      {{yield\n        (hash\n          pane=(component (ensure-safe-component (bs-default @paneComponent (component \"bs-tab/pane\"))) parent=this activeId=this.activeId fade=this.fade fadeTransition=this.fadeTransition registerChild=this.registerChild unregisterChild=this.unregisterChild)\n          activeId=this.activeId\n          select=this.select\n        )\n      }}\n    {{else}}\n      {{#let (ensure-safe-component (bs-default @navComponent (component \"bs-nav\"))) as |NavComponent|}}\n        <NavComponent @type={{this.type}} role=\"tablist\" as |Nav|>\n          {{#each this.navItems as |item|}}\n            {{#if item.isGroup}}\n              <Nav.dropdown class={{if (bs-contains item.childIds this.activeId) \"active\"}} role=\"presentation\" as |DD|>\n                <DD.toggle>{{item.groupTitle}} <span class=\"caret\"></span></DD.toggle>\n                <DD.menu as |Menu|>\n                  {{#each item.children as |subItem|}}\n                    <Menu.item>\n                      {{!-- template-lint-disable require-context-role --}}\n                      <a\n                        href=\"#{{subItem.id}}\"\n                        role=\"tab\"\n                        class=\"dropdown-item {{if (bs-eq this.activeId subItem.id) \"active\"}}\"\n                        {{on \"click\" (fn this.select subItem.id)}}\n                      >\n                        {{subItem.title}}\n                      </a>\n                    </Menu.item>\n                  {{/each}}\n                </DD.menu>\n              </Nav.dropdown>\n            {{else}}\n              <Nav.item @active={{bs-eq item.id this.activeId}} role=\"presentation\">\n                <a\n                  href=\"#{{item.id}}\"\n                  role=\"tab\"\n                  class=\"nav-link {{if (bs-eq this.activeId item.id) \"active\"}}\"\n                  aria-selected={{if (bs-eq this.activeId item.id) \"true\" \"false\"}}\n                  {{on \"click\" (fn this.select item.id)}}\n                >\n                  {{item.title}}\n                </a>\n              </Nav.item>\n            {{/if}}\n          {{/each}}\n        </NavComponent>\n      {{/let}}\n  \n      <div class=\"tab-content\">\n        {{yield\n          (hash\n            pane=(component (ensure-safe-component (bs-default @paneComponent (component \"bs-tab/pane\"))) parent=this activeId=this.activeId fade=this.fade fadeTransition=this.fadeTransition registerChild=this.registerChild unregisterChild=this.unregisterChild)\n            activeId=this.activeId\n            select=this.select\n          )\n        }}\n      </div>\n    {{/if}}\n  \n  </div>\n  \n  */\n  {\n    \"id\": \"NHFpKOHz\",\n    \"block\": \"[[[11,0],[17,1],[4,[38,1],[[30,0,[\\\"listenToActiveId\\\"]],[30,2]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"customTabs\\\"]],[[[1,\\\"    \\\"],[18,11,[[28,[37,4],null,[[\\\"pane\\\",\\\"activeId\\\",\\\"select\\\"],[[50,[28,[37,6],[[28,[37,7],[[30,3],[50,\\\"bs-tab/pane\\\",0,null,null]],null]],null],0,null,[[\\\"parent\\\",\\\"activeId\\\",\\\"fade\\\",\\\"fadeTransition\\\",\\\"registerChild\\\",\\\"unregisterChild\\\"],[[30,0],[30,0,[\\\"activeId\\\"]],[30,0,[\\\"fade\\\"]],[30,0,[\\\"fadeTransition\\\"]],[30,0,[\\\"registerChild\\\"]],[30,0,[\\\"unregisterChild\\\"]]]]],[30,0,[\\\"activeId\\\"]],[30,0,[\\\"select\\\"]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[44,[[28,[37,6],[[28,[37,7],[[30,4],[50,\\\"bs-nav\\\",0,null,null]],null]],null]],[[[1,\\\"      \\\"],[8,[30,5],[[24,\\\"role\\\",\\\"tablist\\\"]],[[\\\"@type\\\"],[[30,0,[\\\"type\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"navItems\\\"]]],null]],null],null,[[[41,[30,7,[\\\"isGroup\\\"]],[[[1,\\\"            \\\"],[8,[30,6,[\\\"dropdown\\\"]],[[16,0,[52,[28,[37,11],[[30,7,[\\\"childIds\\\"]],[30,0,[\\\"activeId\\\"]]],null],\\\"active\\\"]],[24,\\\"role\\\",\\\"presentation\\\"]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[30,8,[\\\"toggle\\\"]],null,null,[[\\\"default\\\"],[[[[1,[30,7,[\\\"groupTitle\\\"]]],[1,\\\" \\\"],[10,1],[14,0,\\\"caret\\\"],[12],[13]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[30,8,[\\\"menu\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,7,[\\\"children\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[30,9,[\\\"item\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"                    \\\"],[11,3],[16,6,[29,[\\\"#\\\",[30,10,[\\\"id\\\"]]]]],[24,\\\"role\\\",\\\"tab\\\"],[16,0,[29,[\\\"dropdown-item \\\",[52,[28,[37,14],[[30,0,[\\\"activeId\\\"]],[30,10,[\\\"id\\\"]]],null],\\\"active\\\"]]]],[4,[38,15],[\\\"click\\\",[28,[37,16],[[30,0,[\\\"select\\\"]],[30,10,[\\\"id\\\"]]],null]],null],[12],[1,\\\"\\\\n                      \\\"],[1,[30,10,[\\\"title\\\"]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[10]],null],[1,\\\"              \\\"]],[9]]]]],[1,\\\"\\\\n            \\\"]],[8]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[30,6,[\\\"item\\\"]],[[24,\\\"role\\\",\\\"presentation\\\"]],[[\\\"@active\\\"],[[28,[37,14],[[30,7,[\\\"id\\\"]],[30,0,[\\\"activeId\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,3],[16,6,[29,[\\\"#\\\",[30,7,[\\\"id\\\"]]]]],[24,\\\"role\\\",\\\"tab\\\"],[16,0,[29,[\\\"nav-link \\\",[52,[28,[37,14],[[30,0,[\\\"activeId\\\"]],[30,7,[\\\"id\\\"]]],null],\\\"active\\\"]]]],[16,\\\"aria-selected\\\",[52,[28,[37,14],[[30,0,[\\\"activeId\\\"]],[30,7,[\\\"id\\\"]]],null],\\\"true\\\",\\\"false\\\"]],[4,[38,15],[\\\"click\\\",[28,[37,16],[[30,0,[\\\"select\\\"]],[30,7,[\\\"id\\\"]]],null]],null],[12],[1,\\\"\\\\n                \\\"],[1,[30,7,[\\\"title\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[7]],null],[1,\\\"      \\\"]],[6]]]]],[1,\\\"\\\\n\\\"]],[5]]],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"tab-content\\\"],[12],[1,\\\"\\\\n      \\\"],[18,11,[[28,[37,4],null,[[\\\"pane\\\",\\\"activeId\\\",\\\"select\\\"],[[50,[28,[37,6],[[28,[37,7],[[30,3],[50,\\\"bs-tab/pane\\\",0,null,null]],null]],null],0,null,[[\\\"parent\\\",\\\"activeId\\\",\\\"fade\\\",\\\"fadeTransition\\\",\\\"registerChild\\\",\\\"unregisterChild\\\"],[[30,0],[30,0,[\\\"activeId\\\"]],[30,0,[\\\"fade\\\"]],[30,0,[\\\"fadeTransition\\\"]],[30,0,[\\\"registerChild\\\"]],[30,0,[\\\"unregisterChild\\\"]]]]],[30,0,[\\\"activeId\\\"]],[30,0,[\\\"select\\\"]]]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@activeId\\\",\\\"@paneComponent\\\",\\\"@navComponent\\\",\\\"NavComponent\\\",\\\"Nav\\\",\\\"item\\\",\\\"DD\\\",\\\"Menu\\\",\\\"subItem\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"did-update\\\",\\\"if\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"let\\\",\\\"each\\\",\\\"-track-array\\\",\\\"bs-contains\\\",\\\"span\\\",\\\"a\\\",\\\"bs-eq\\\",\\\"on\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-tab.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Tab component for dynamic tab functionality that mimics the behaviour of Bootstrap's tab.js plugin,\n    see http://getbootstrap.com/javascript/#tabs\n  \n    ### Usage\n  \n    Just nest any number of yielded [Components.TabPane](Components.TabPane.html) components that hold the tab content.\n    The tab navigation is automatically generated from the tab panes' `title` property:\n  \n    ```hbs\n    <BsTab as |tab|>\n      <tab.pane @title=\"Tab 1\">\n        <p> ... </p>\n      </tab.pane>\n      <tab.pane @title=\"Tab 2\">\n        <p> ... </p>\n      </tab.pane>\n    </BsTab>\n    ```\n  \n    ### Groupable (dropdown) tabs\n  \n    Bootstrap's support for dropdown menus as tab navigation is mimiced by the use of the `groupTitle` property.\n    All panes with the same `groupTitle` will be put inside the menu of a [Components.Dropdown](Components.Dropdown.html)\n    component with `groupTitle` being the dropdown's title:\n  \n    ```hbs\n    <BsTab as |tab|>\n      <tab.pane @title=\"Tab 1\">\n        <p> ... </p>\n      </tab.pane>\n      <tab.pane @title=\"Tab 2\">\n        <p> ... </p>\n      </tab.pane>\n      <tab.pane @title=\"Tab 3\" @groupTitle=\"Dropdown\">\n        <p> ... </p>\n      </tab.pane>\n      <tab.pane @title=\"Tab 4\" @groupTitle=\"Dropdown\">\n        <p> ... </p>\n      </tab.pane>\n    </BsTab>\n    ```\n  \n    ### Custom tabs\n  \n    When having the tab pane's `title` as the tab navigation title is not sufficient, for example because you want to\n    integrate some other dynamic content, maybe even other components in the tab navigation item, then you have to set up\n    your navigation by yourself.\n  \n    Set `customTabs` to true to deactivate the automatic tab navigation generation. Then set up your navigation, probably\n    using a [Components.Nav](Components.Nav.html) component. The tab component yields the `activeId` property as well as\n    its `select` action, which you would have to use to manually set the `active` state of the navigation items and to\n    trigger the selection of the different tab panes, using their ids:\n  \n    ```hbs\n    <BsTab @customTabs={{true}} as |tab|>\n      <BsNav @type=\"tabs\" as |nav|>\n        <nav.item @active={{bs-eq tab.activeId \"pane1\"}}><a href=\"#pane1\" role=\"tab\" {{on \"click\" (fn tab.select \"pane1\")}}>Tab 1</a></nav.item>\n        <nav.item @active={{bs-eq tab.activeId \"pane2\"}}><a href=\"#pane2\" role=\"tab\" {{on \"click\" (fn tab.select \"pane2\")}}>Tab 2 <span class=\"badge\">{{badge}}</span></a></nav.item>\n      </BsNav>\n      <div class=\"tab-content\">\n        <tab.pane @id=\"pane1\" @title=\"Tab 1\">\n          <p> ... </p>\n        </tab.pane>\n        <tab.pane @id=\"pane2\" @title=\"Tab 2\">\n          <p> ... </p>\n        </tab.pane>\n      </div>\n    </BsTab>\n    ```\n  \n    Note that the `bs-eq` helper used in the example above is a private helper, which is not guaranteed to be available for\n    the future. Better use the corresponding `eq` helper of the\n    [ember-truth-helpers](https://github.com/jmurphyau/ember-truth-helpers) addon for example!\n  \n    ### Routable tabs\n  \n    The tab component purpose is to have panes of content, that are all in DOM at the same time and that are activated and\n    deactivated dynamically, just as the  original Bootstrap implementation.\n  \n    If you want to have the content delivered through individual sub routes, just use\n    the [Components.Nav](Components.Nav.html) component and an `{{outlet}}` that show the nested routes' content:\n  \n    ```hbs\n    <div>\n      <BsNav @type=\"tabs\" as |nav|>\n        <nav.item>\n          <nav.linkTo @route=\"tabs.index\">Tab 1</nav.linkTo>\n        </nav.item>\n        <nav.item>\n          <nav.linkTo @route=\"tabs.other\">Tab 3</nav.linkTo>\n        </nav.item>\n      </BsNav>\n    </div>\n    ```\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Tab\n    @namespace Components\n    @extends Component\n    @public\n  */\n  var Tab = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function Tab() {\n      var _this;\n      _classCallCheck(this, Tab);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, Tab, [].concat(args));\n      _initializerDefineProperty(_this, \"children\", _descriptor, _this);\n      /**\n       * @property selectedId\n       * @private\n       */\n      _initializerDefineProperty(_this, \"selectedId\", _descriptor2, _this);\n      return _this;\n    }\n    _inherits(Tab, _Component);\n    return _createClass(Tab, [{\n      key: \"type\",\n      get:\n      /**\n       * Type of nav, either \"pills\" or \"tabs\"\n       *\n       * @property type\n       * @type String\n       * @default 'tabs'\n       * @public\n       */\n      function get() {\n        var _this$args$type;\n        return (_this$args$type = this.args.type) !== null && _this$args$type !== void 0 ? _this$args$type : 'tabs';\n      }\n\n      /**\n       * @property paneComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * @property navComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * By default, the tabs will be automatically generated using the available [TabPane](Components.TabPane.html)\n       * components. If set to true, you can deactivate this and set up the tabs manually. See the example above.\n       *\n       * @property customTabs\n       * @type boolean\n       * @default false\n       * @public\n       */\n    }, {\n      key: \"customTabs\",\n      get: function get() {\n        var _this$args$customTabs;\n        return (_this$args$customTabs = this.args.customTabs) !== null && _this$args$customTabs !== void 0 ? _this$args$customTabs : false;\n      }\n    }, {\n      key: \"activeId\",\n      get:\n      /**\n       * The id (`id`) of the active [TabPane](Components.TabPane.html).\n       * By default, the first tab will be active, but this can be changed by setting this property\n       *\n       * ```hbs\n       * {{#bs-tab activeId=\"pane2\"}}\n       *   {{#tab.pane id=\"pane1\" title=\"Tab 1\"}}\n       *      ...\n       *   {{/tab.pane}}\n       *   {{#tab.pane id=\"pane1\" title=\"Tab 1\"}}\n       *     ...\n       *   {{/tab.pane}}\n       * {{/bs-tab}}\n       * ```\n       *\n       * When the selection is changed by user interaction this property will not update by using two-way bindings in order\n       * to follow DDAU best practices. If you want to react to such changes, subscribe to the `onChange` action\n       *\n       * @property activeId\n       * @type string\n       * @public\n       */\n      function get() {\n        var _this$selectedId, _this$childPanes$;\n        return (_this$selectedId = this.selectedId) !== null && _this$selectedId !== void 0 ? _this$selectedId : (_this$childPanes$ = this.childPanes[0]) === null || _this$childPanes$ === void 0 ? void 0 : _this$childPanes$.id;\n      }\n    }, {\n      key: \"fade\",\n      get:\n      /**\n       * Set to false to disable the fade animation when switching tabs.\n       *\n       * @property fade\n       * @type boolean\n       * @default true\n       * @public\n       */\n      function get() {\n        var _this$args$fade;\n        return (_this$args$fade = this.args.fade) !== null && _this$args$fade !== void 0 ? _this$args$fade : true;\n      }\n\n      /**\n       * The duration of the fade animation\n       *\n       * @property fadeDuration\n       * @type number\n       * @default 150\n       * @public\n       */\n    }, {\n      key: \"fadeDuration\",\n      get: function get() {\n        var _this$args$fadeDurati;\n        return (_this$args$fadeDurati = this.args.fadeDuration) !== null && _this$args$fadeDurati !== void 0 ? _this$args$fadeDurati : 150;\n      }\n\n      /**\n       * This action is called when switching the active tab, with the new and previous pane id\n       *\n       * You can return false to prevent changing the active tab automatically, and do that in your action by\n       * setting `activeId`.\n       *\n       * @event onChange\n       * @public\n       */\n\n      /**\n       * All `TabPane` child components\n       *\n       * @property childPanes\n       * @type array\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"childPanes\",\n      get: function get() {\n        return this.children.filter(function (child) {\n          return child instanceof _pane.default;\n        });\n      }\n\n      /**\n       * Array of objects that define the tab structure\n       *\n       * @property navItems\n       * @type array\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"navItems\",\n      get: function get() {\n        var items = [];\n        this.childPanes.forEach(function (pane) {\n          var groupTitle = pane.groupTitle;\n          var item = {\n            id: pane.id,\n            title: pane.title\n          };\n          if ((0, _utils.isPresent)(groupTitle)) {\n            var group = items.find(function (item) {\n              return item.groupTitle === groupTitle;\n            });\n            if (group) {\n              group.children.push(item);\n              group.childIds.push(item.id);\n            } else {\n              items.push({\n                isGroup: true,\n                groupTitle: groupTitle,\n                children: [item],\n                childIds: [item.id]\n              });\n            }\n          } else {\n            items.push(item);\n          }\n        });\n        return items;\n      }\n    }, {\n      key: \"select\",\n      value: function select(id) {\n        var _this$args$onChange, _this$args;\n        var previous = this.activeId;\n        if (((_this$args$onChange = (_this$args = this.args).onChange) === null || _this$args$onChange === void 0 ? void 0 : _this$args$onChange.call(_this$args, id, previous)) !== false) {\n          // change active tab when `onChange` does not return false\n          this.selectedId = id;\n        }\n      }\n    }, {\n      key: \"registerChild\",\n      value: function registerChild(element) {\n        var _this2 = this;\n        (0, _runloop.schedule)('actions', this, function () {\n          _this2.children = [].concat(_toConsumableArray(_this2.children), [element]);\n        });\n      }\n    }, {\n      key: \"unregisterChild\",\n      value: function unregisterChild(element) {\n        var _this3 = this;\n        (0, _runloop.schedule)('actions', this, function () {\n          _this3.children = _this3.children.filter(function (value) {\n            return value !== element;\n          });\n        });\n      }\n    }, {\n      key: \"listenToActiveId\",\n      value: function listenToActiveId() {\n        this.selectedId = this.args.activeId;\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"children\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return [];\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"selectedId\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"select\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"select\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"registerChild\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"registerChild\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"unregisterChild\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"unregisterChild\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"listenToActiveId\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"listenToActiveId\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Tab);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-tab/pane\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/runloop\", \"ember-bootstrap/utils/transition-end\", \"ember-bootstrap/utils/decorators/uses-transition\", \"@ember/object/internals\", \"ember-ref-bucket\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _runloop, _transitionEnd, _usesTransition, _internals, _emberRefBucket, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/runloop\",0,\"ember-bootstrap/utils/transition-end\",0,\"ember-bootstrap/utils/decorators/uses-transition\",0,\"@ember/object/internals\",0,\"ember-ref-bucket\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  <div\n    class=\"tab-pane {{if this.showContent \"show\"}} {{if this.active \"active\"}} {{if this.usesTransition \"fade\"}}\"\n    role=\"tabpanel\"\n    ...attributes\n    {{create-ref \"mainNode\"}}\n    {{did-insert this.updateActive @active}}\n    {{did-update this.showHide this.isActive}}\n  >\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"+TPblSlN\",\n    \"block\": \"[[[11,0],[16,0,[29,[\\\"tab-pane \\\",[52,[30,0,[\\\"showContent\\\"]],\\\"show\\\"],\\\" \\\",[52,[30,0,[\\\"active\\\"]],\\\"active\\\"],\\\" \\\",[52,[30,0,[\\\"usesTransition\\\"]],\\\"fade\\\"]]]],[24,\\\"role\\\",\\\"tabpanel\\\"],[17,1],[4,[38,2],[\\\"mainNode\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[4,[38,3],[[30,0,[\\\"updateActive\\\"]],[30,2]],null],[4,[38,4],[[30,0,[\\\"showHide\\\"]],[30,0,[\\\"isActive\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[18,3,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@active\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"create-ref\\\",\\\"did-insert\\\",\\\"did-update\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-tab/pane.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   The tab pane of a tab component.\n   See [Components.Tab](Components.Tab.html) for examples.\n  \n   @class TabPane\n   @namespace Components\n   @extends Component\n   @public\n   */\n  var TabPane = _exports.default = (_dec = (0, _emberRefBucket.ref)('mainNode'), _dec2 = (0, _usesTransition.default)('fade'), _class = /*#__PURE__*/function (_Component) {\n    function TabPane(owner, args) {\n      var _args$registerChild;\n      var _this;\n      _classCallCheck(this, TabPane);\n      _this = _callSuper(this, TabPane, [owner, args]);\n      /**\n       * @property id\n       * @type null | HTMLElement\n       */\n      _initializerDefineProperty(_this, \"_element\", _descriptor, _this);\n      /**\n       * Used to apply Bootstrap's \"active\" class\n       *\n       * @property active\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"active\", _descriptor2, _this);\n      /**\n       * Used to trigger the Bootstrap visibility classes.\n       *\n       * @property showContent\n       * @type boolean\n       * @default false\n       * @private\n       */\n      _initializerDefineProperty(_this, \"showContent\", _descriptor3, _this);\n      /**\n       * Use CSS transitions?\n       *\n       * @property usesTransition\n       * @type boolean\n       * @readonly\n       * @private\n       */\n      _initializerDefineProperty(_this, \"usesTransition\", _descriptor4, _this);\n      (_args$registerChild = args.registerChild) === null || _args$registerChild === void 0 || _args$registerChild.call(args, _this);\n\n      // isActive comes from parent component, so only available after render...\n      (0, _runloop.scheduleOnce)('afterRender', _this, _this._setActive);\n      return _this;\n    }\n    _inherits(TabPane, _Component);\n    return _createClass(TabPane, [{\n      key: \"id\",\n      get:\n      /**\n       * @property id\n       * @type string\n       * @public\n       */\n      function get() {\n        var _this$args$id;\n        return (_this$args$id = this.args.id) !== null && _this$args$id !== void 0 ? _this$args$id : (0, _internals.guidFor)(this);\n      }\n\n      /**\n       * @property activeId\n       * @private\n       */\n    }, {\n      key: \"activeId\",\n      get: function get() {\n        var _this$args$activeId;\n        return (_this$args$activeId = this.args.activeId) !== null && _this$args$activeId !== void 0 ? _this$args$activeId : null;\n      }\n\n      /**\n       * True if this pane is active (visible)\n       *\n       * @property isActive\n       * @type boolean\n       * @readonly\n       * @private\n       */\n    }, {\n      key: \"isActive\",\n      get: function get() {\n        return this.activeId === this.id;\n      }\n    }, {\n      key: \"title\",\n      get:\n      /**\n       * The title for this tab pane. This is used by the `bs-tab` component to automatically generate\n       * the tab navigation.\n       * See the [Components.Tab](Components.Tab.html) for examples.\n       *\n       * @property title\n       * @type string\n       * @default null\n       * @public\n       */\n      function get() {\n        var _this$args$title;\n        return (_this$args$title = this.args.title) !== null && _this$args$title !== void 0 ? _this$args$title : null;\n      }\n\n      /**\n       * An optional group title used by the `bs-tab` component to group all panes with the same group title\n       * under a common drop down in the tab navigation.\n       * See the [Components.Tab](Components.Tab.html) for examples.\n       *\n       * @property groupTitle\n       * @type string\n       * @default null\n       * @public\n       */\n    }, {\n      key: \"groupTitle\",\n      get: function get() {\n        var _this$args$groupTitle;\n        return (_this$args$groupTitle = this.args.groupTitle) !== null && _this$args$groupTitle !== void 0 ? _this$args$groupTitle : null;\n      }\n\n      /**\n       * Use fade animation when switching tabs.\n       *\n       * @property fade\n       * @type boolean\n       * @private\n       */\n    }, {\n      key: \"fade\",\n      get: function get() {\n        var _this$args$fade;\n        return (_this$args$fade = this.args.fade) !== null && _this$args$fade !== void 0 ? _this$args$fade : true;\n      }\n\n      /**\n       * The duration of the fade out animation\n       *\n       * @property fadeDuration\n       * @type number\n       * @default 150\n       * @private\n       */\n    }, {\n      key: \"fadeDuration\",\n      get: function get() {\n        var _this$args$fadeDurati;\n        return (_this$args$fadeDurati = this.args.fadeDuration) !== null && _this$args$fadeDurati !== void 0 ? _this$args$fadeDurati : 150;\n      }\n    }, {\n      key: \"show\",\n      value:\n      /**\n       * Show the pane\n       *\n       * @method show\n       * @protected\n       */\n      function show() {\n        var _this2 = this;\n        if (this.usesTransition) {\n          if (!this._element) {\n            // _element is initially set by `{{create-ref}}` which happens in next run loop, so can be undefined here.\n            this.active = true;\n            this.showContent = true;\n          } else {\n            (0, _transitionEnd.default)(this._element, this.fadeDuration).then(function () {\n              if (!_this2.isDestroyed) {\n                _this2.active = true;\n                _this2.showContent = true;\n              }\n            });\n          }\n        } else {\n          this.active = true;\n        }\n      }\n\n      /**\n       * Hide the pane\n       *\n       * @method hide\n       * @protected\n       */\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var _this3 = this;\n        if (this.usesTransition) {\n          (0, _transitionEnd.default)(this._element, this.fadeDuration).then(function () {\n            if (!_this3.isDestroyed) {\n              _this3.active = false;\n            }\n          });\n          this.showContent = false;\n        } else {\n          this.active = false;\n        }\n      }\n    }, {\n      key: \"showHide\",\n      value: function showHide() {\n        if (this.isActive) {\n          this.show();\n        } else {\n          this.hide();\n        }\n      }\n    }, {\n      key: \"_setActive\",\n      value: function _setActive() {\n        this.active = this.isActive;\n        this.showContent = this.isActive && this.fade;\n      }\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        var _this$args$unregister, _this$args;\n        _superPropGet(TabPane, \"willDestroy\", this, 3)([]);\n        (_this$args$unregister = (_this$args = this.args).unregisterChild) === null || _this$args$unregister === void 0 || _this$args$unregister.call(_this$args, this);\n      }\n    }, {\n      key: \"updateActive\",\n      value: function updateActive() {\n        this.active = this.args.active;\n      }\n    }, {\n      key: \"updateShowContent\",\n      value: function updateShowContent() {\n        this.showContent = this.args.showContent;\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"active\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      var _this$args$active;\n      return (_this$args$active = this.args.active) !== null && _this$args$active !== void 0 ? _this$args$active : false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"showContent\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      var _this$args$showConten;\n      return (_this$args$showConten = this.args.showContent) !== null && _this$args$showConten !== void 0 ? _this$args$showConten : false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"usesTransition\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"showHide\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"showHide\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateActive\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateActive\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateShowContent\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateShowContent\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TabPane);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-tooltip\", [\"exports\", \"@ember/component\", \"ember-bootstrap/components/bs-contextual-help\", \"@ember/template-factory\"], function (_exports, _component, _bsContextualHelp, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-contextual-help\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{! template-lint-disable no-unbound }}\n  {{unbound this._parentFinder}}\n  {{#if this.inDom}}\n    {{#let (ensure-safe-component (bs-default @elementComponent (component \"bs-tooltip/element\"))) as |Element|}}\n      <Element\n        @placement={{this.placement}}\n        @fade={{this.fade}}\n        @showHelp={{this.showHelp}}\n        @renderInPlace={{this._renderInPlace}}\n        @destinationElement={{this.destinationElement}}\n        @popperTarget={{this.triggerTargetElement}}\n        @autoPlacement={{this.autoPlacement}}\n        @viewportElement={{this.viewportElement}}\n        @viewportPadding={{this.viewportPadding}}\n  \n        {{create-ref \"overlayElement\"}}\n        ...attributes\n      >\n        {{#if (has-block)}}\n          {{yield\n            (hash\n              close=this.close\n            )\n          }}\n        {{else}}\n          {{@title}}\n        {{/if}}\n      </Element>\n    {{/let}}\n  {{/if}}\n  {{did-insert-helper this.setup}}\n  {{did-update-helper this.showOrHide @visible}}\n  */\n  {\n    \"id\": \"HWb4QJAN\",\n    \"block\": \"[[[1,[28,[35,0],[[30,0,[\\\"_parentFinder\\\"]]],null]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"inDom\\\"]],[[[44,[[28,[37,3],[[28,[37,4],[[30,1],[50,\\\"bs-tooltip/element\\\",0,null,null]],null]],null]],[[[1,\\\"    \\\"],[8,[30,2],[[17,3],[4,[38,6],[\\\"overlayElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]]],[[\\\"@placement\\\",\\\"@fade\\\",\\\"@showHelp\\\",\\\"@renderInPlace\\\",\\\"@destinationElement\\\",\\\"@popperTarget\\\",\\\"@autoPlacement\\\",\\\"@viewportElement\\\",\\\"@viewportPadding\\\"],[[30,0,[\\\"placement\\\"]],[30,0,[\\\"fade\\\"]],[30,0,[\\\"showHelp\\\"]],[30,0,[\\\"_renderInPlace\\\"]],[30,0,[\\\"destinationElement\\\"]],[30,0,[\\\"triggerTargetElement\\\"]],[30,0,[\\\"autoPlacement\\\"]],[30,0,[\\\"viewportElement\\\"]],[30,0,[\\\"viewportPadding\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"        \\\"],[18,6,[[28,[37,9],null,[[\\\"close\\\"],[[30,0,[\\\"close\\\"]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[30,4]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]]]],[]],null],[1,[28,[35,10],[[30,0,[\\\"setup\\\"]]],null]],[1,\\\"\\\\n\\\"],[1,[28,[35,11],[[30,0,[\\\"showOrHide\\\"]],[30,5]],null]]],[\\\"@elementComponent\\\",\\\"Element\\\",\\\"&attrs\\\",\\\"@title\\\",\\\"@visible\\\",\\\"&default\\\"],false,[\\\"unbound\\\",\\\"if\\\",\\\"let\\\",\\\"ensure-safe-component\\\",\\\"bs-default\\\",\\\"component\\\",\\\"create-ref\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\",\\\"did-insert-helper\\\",\\\"did-update-helper\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-tooltip.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n    Component that implements Bootstrap [tooltips](http://getbootstrap.com/javascript/#tooltips).\n  \n    By default, it will attach its listeners (mouseover and focus) to the parent DOM element to trigger\n    the tooltip:\n  \n    ```hbs\n    <button class=\"btn\">\n      <BsTooltip @title=\"This is a tooltip\" />\n    </button>\n    ```\n  \n    You can also use the component in a block form to set the title:\n  \n    ```hbs\n    <button class=\"btn\">\n      <BsTooltip>\n        This is a tooltip\n      </BsTooltip>\n    </button>\n    ```\n  \n    ### Trigger\n  \n    The trigger element is the DOM element that will cause the tooltip to be shown when one of the trigger events occur on\n    that element. By default, the trigger element is the parent DOM element of the component, and the trigger events will be\n    \"hover\" and \"focus\".\n  \n    The `triggerElement` property accepts any CSS selector to attach the tooltip to any other existing DOM element.\n  \n    To customize the events that will trigger the tooltip use the `triggerEvents` property, that accepts an array or a\n    string of events, with \"hover\", \"focus\" and \"click\" being supported.\n  \n    ### Placement options\n  \n    By default, the tooltip will show up on top of the trigger element. Use the `placement` property to change that\n    (\"top\", \"bottom\", \"left\" and \"right\"). To make sure the tooltip will not exceed the viewport (see Advanced customization)\n    you can set `autoPlacement` to true. A tooltip with `placement=\"right\" will be placed to the right if there is enough\n    space, otherwise to the left.\n  \n    ### Advanced customization\n  \n    Several other properties allow for some advanced customization:\n    * `visible` to show/hide the tooltip programmatically\n    * `fade` to disable the fade in transition\n    * `delay` (or `delayShow` and `delayHide`) to add a delay\n    * `viewportSelector` and `viewportPadding` to customize the viewport that affects `autoPlacement`\n    * a `close` action is yielded, that allows you to close the tooltip:\n  \n    ```hbs\n    <BsTooltip as |tt|>This is a tooltip <button {{on \"click\" tt.close}}>Close</button></BsTooltip>\n    ```\n  \n    See the individual API docs for each property.\n  \n    ### Actions\n  \n    When you want to react on the tooltip being shown or hidden, you can use one of the following supported actions:\n    * `onShow`\n    * `onShown`\n    * `onHide`\n    * `onHidden`\n  \n    *Note that only invoking the component in a template as shown above is considered part of its public API. Extending from it (subclassing) is generally not supported, and may break at any time.*\n  \n    @class Tooltip\n    @namespace Components\n    @extends Components.ContextualHelp\n    @public\n  */\n  var Tooltip = _exports.default = /*#__PURE__*/function (_ContextualHelp) {\n    function Tooltip() {\n      _classCallCheck(this, Tooltip);\n      return _callSuper(this, Tooltip, arguments);\n    }\n    _inherits(Tooltip, _ContextualHelp);\n    return _createClass(Tooltip, [{\n      key: \"arrowElement\",\n      get:\n      /**\n       * @property elementComponent\n       * @type {String}\n       * @private\n       */\n\n      /**\n       * The DOM element of the arrow element.\n       *\n       * @property arrowElement\n       * @type object\n       * @readonly\n       * @private\n       */\n      function get() {\n        return this.overlayElement.querySelector('.tooltip-arrow');\n      }\n    }]);\n  }(_bsContextualHelp.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, Tooltip);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/components/bs-tooltip/element\", [\"exports\", \"@ember/component\", \"ember-bootstrap/components/bs-contextual-help/element\", \"@ember/template-factory\"], function (_exports, _component, _element, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-contextual-help/element\",0,\"@embroider/macros\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! @glint-nocheck }}\n  {{#if @renderInPlace}}\n    <div\n      class=\"tooltip {{if this.fade \"fade\"}} {{this.actualPlacementClass}} {{if this.showHelp \"show\"}}\"\n      role=\"tooltip\"\n      ...attributes\n      {{popper-tooltip @popperTarget this.popperOptions}}\n      {{create-ref \"popperElement\"}}\n    >\n      <div class={{this.arrowClass}}></div>\n      <div class=\"tooltip-inner\">\n        {{yield}}\n      </div>\n    </div>\n  {{else}}\n    {{#in-element @destinationElement insertBefore=null}}\n      <div\n        class=\"tooltip {{if this.fade \"fade\"}} {{this.actualPlacementClass}} {{if this.showHelp \"show\"}}\"\n        role=\"tooltip\"\n        ...attributes\n        {{popper-tooltip @popperTarget this.popperOptions}}\n        {{create-ref \"popperElement\"}}\n      >\n        <div class={{this.arrowClass}}></div>\n        <div class=\"tooltip-inner\">\n          {{yield}}\n        </div>\n      </div>\n    {{/in-element}}\n  {{/if}}\n  \n  \n  */\n  {\n    \"id\": \"K4fAHetq\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,0],[16,0,[29,[\\\"tooltip \\\",[52,[30,0,[\\\"fade\\\"]],\\\"fade\\\"],\\\" \\\",[30,0,[\\\"actualPlacementClass\\\"]],\\\" \\\",[52,[30,0,[\\\"showHelp\\\"]],\\\"show\\\"]]]],[24,\\\"role\\\",\\\"tooltip\\\"],[17,2],[4,[38,2],[[30,3],[30,0,[\\\"popperOptions\\\"]]],null],[4,[38,3],[\\\"popperElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[30,0,[\\\"arrowClass\\\"]]],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"tooltip-inner\\\"],[12],[1,\\\"\\\\n      \\\"],[18,5,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[40,[[[1,\\\"    \\\"],[11,0],[16,0,[29,[\\\"tooltip \\\",[52,[30,0,[\\\"fade\\\"]],\\\"fade\\\"],\\\" \\\",[30,0,[\\\"actualPlacementClass\\\"]],\\\" \\\",[52,[30,0,[\\\"showHelp\\\"]],\\\"show\\\"]]]],[24,\\\"role\\\",\\\"tooltip\\\"],[17,2],[4,[38,2],[[30,3],[30,0,[\\\"popperOptions\\\"]]],null],[4,[38,3],[\\\"popperElement\\\"],[[\\\"debugName\\\",\\\"bucket\\\"],[\\\"create-ref\\\",[30,0]]]],[12],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[30,0,[\\\"arrowClass\\\"]]],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"tooltip-inner\\\"],[12],[1,\\\"\\\\n        \\\"],[18,5,null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],\\\"%cursor:0%\\\",[28,[37,6],[[30,4]],null],null]],[]]],[1,\\\"\\\\n\\\"]],[\\\"@renderInPlace\\\",\\\"&attrs\\\",\\\"@popperTarget\\\",\\\"@destinationElement\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"popper-tooltip\\\",\\\"create-ref\\\",\\\"yield\\\",\\\"in-element\\\",\\\"-in-el-null\\\"]]\",\n    \"moduleName\": \"ember-bootstrap/components/bs-tooltip/element.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   Internal component for tooltip's markup. Should not be used directly.\n  \n   @class TooltipElement\n   @namespace Components\n   @extends Components.ContextualHelpElement\n   @private\n   */\n  var TooltipElement = _exports.default = /*#__PURE__*/function (_ContextualHelpElemen) {\n    function TooltipElement() {\n      var _this;\n      _classCallCheck(this, TooltipElement);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, TooltipElement, [].concat(args));\n      _defineProperty(_this, \"arrowClass\", 'arrow');\n      _defineProperty(_this, \"placementClassPrefix\", 'bs-tooltip-');\n      _defineProperty(_this, \"offset\", [0, 6]);\n      return _this;\n    }\n    _inherits(TooltipElement, _ContextualHelpElemen);\n    return _createClass(TooltipElement);\n  }(_element.default);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TooltipElement);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-bootstrap/config\", [\"exports\", \"@ember/object\"], function (_exports, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var Config = /*#__PURE__*/function (_EmberObject) {\n    function Config() {\n      _classCallCheck(this, Config);\n      return _callSuper(this, Config, arguments);\n    }\n    _inherits(Config, _EmberObject);\n    return _createClass(Config);\n  }(_object.default);\n  Config.reopenClass({\n    formValidationSuccessIcon: 'glyphicon glyphicon-ok',\n    formValidationErrorIcon: 'glyphicon glyphicon-remove',\n    formValidationWarningIcon: 'glyphicon glyphicon-warning-sign',\n    formValidationInfoIcon: 'glyphicon glyphicon-info-sign',\n    insertEmberWormholeElementToDom: true,\n    load: function load() {\n      var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      for (var property in config) {\n        if (Object.prototype.hasOwnProperty.call(this, property) && typeof this[property] !== 'function') {\n          this[property] = config[property];\n        }\n      }\n    }\n  });\n  var _default = _exports.default = Config;\n});","define(\"ember-bootstrap/helpers/bs-contains\", [\"exports\", \"@ember/component/helper\", \"@ember/array\"], function (_exports, _helper, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.bsContains = bsContains;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/array\"eaimeta@70e063a35619d71f\n  function bsContains(params /* , hash*/) {\n    return (0, _array.isArray)(params[0]) ? (0, _array.A)(params[0]).includes(params[1]) : false;\n  }\n  var _default = _exports.default = (0, _helper.helper)(bsContains);\n});","define(\"ember-bootstrap/helpers/bs-default\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.bsDefault = bsDefault;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function bsDefault(params) {\n    var _params$;\n    return (_params$ = params[0]) !== null && _params$ !== void 0 ? _params$ : params[1];\n  }\n  var _default = _exports.default = (0, _helper.helper)(bsDefault);\n});","define(\"ember-bootstrap/helpers/bs-eq\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.eq = eq;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function eq(params) {\n    return params[0] === params[1];\n  }\n  var _default = _exports.default = (0, _helper.helper)(eq);\n});","define(\"ember-bootstrap/helpers/bs-form-horiz-input-class\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\", \"@ember/utils\"], function (_exports, _helper, _debug, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/debug\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var _default = _exports.default = (0, _helper.helper)(function bsFormHorizInputClass(_ref /*, named*/) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      horizontalLabelGridClass = _ref2[0];\n    if ((0, _utils.isBlank)(horizontalLabelGridClass)) {\n      return undefined;\n    }\n    var originalClasses = horizontalLabelGridClass.split(' ');\n    var inputClasses = originalClasses.map(function (originalClass) {\n      var parts = originalClass.split('-');\n      (true && !(parts.length === 3) && (0, _debug.assert)('horizontalInputGridClass must match format bootstrap grid column class', parts.length === 3));\n      parts[2] = 12 - parts[2];\n      return parts.join('-');\n    });\n    return inputClasses.join(' ');\n  });\n});","define(\"ember-bootstrap/helpers/bs-form-horiz-offset-class\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var _default = _exports.default = (0, _helper.helper)(function bsFormHorizOffsetClass(_ref /*, named*/) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      horizontalLabelGridClass = _ref2[0];\n    if ((0, _utils.isBlank)(horizontalLabelGridClass)) {\n      return undefined;\n    }\n    var originalClasses = horizontalLabelGridClass.split(' ');\n    var offsetClasses = originalClasses.map(function (originalClass) {\n      var parts = originalClass.split('-');\n      parts.splice(0, 1, 'offset');\n      return parts.join('-');\n    });\n    return offsetClasses.join(' ');\n  });\n});","define(\"ember-bootstrap/helpers/bs-noop\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.bsNoop = bsNoop;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  var noop = function noop() {};\n  function bsNoop() {\n    return noop;\n  }\n  var _default = _exports.default = (0, _helper.helper)(bsNoop);\n});","define(\"ember-bootstrap/helpers/bs-size-class\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sizeClassHelper = sizeClassHelper;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function sizeClassHelper(_ref, _ref2) {\n    var _ref3 = _slicedToArray(_ref, 2),\n      prefix = _ref3[0],\n      size = _ref3[1];\n    var defaultValue = _ref2.default;\n    size = size !== null && size !== void 0 ? size : defaultValue;\n    return (0, _utils.isBlank)(size) ? null : \"\".concat(prefix, \"-\").concat(size);\n  }\n  var _default = _exports.default = (0, _helper.helper)(sizeClassHelper);\n});","define(\"ember-bootstrap/helpers/bs-type-class\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.typeClassHelper = typeClassHelper;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function typeClassHelper(_ref, _ref2) {\n    var _ref3 = _slicedToArray(_ref, 2),\n      prefix = _ref3[0],\n      type = _ref3[1];\n    var defaultValue = _ref2.default,\n      _ref2$outline = _ref2.outline,\n      outline = _ref2$outline === void 0 ? false : _ref2$outline;\n    type = type !== null && type !== void 0 ? type : defaultValue;\n    if (outline) {\n      return \"\".concat(prefix, \"-outline-\").concat(type);\n    }\n    return \"\".concat(prefix, \"-\").concat(type);\n  }\n  var _default = _exports.default = (0, _helper.helper)(typeClassHelper);\n});","define(\"ember-bootstrap/modifiers/bs-conditional-attribute\", [\"exports\", \"ember-modifier\"], function (_exports, _emberModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-modifier\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var _default = _exports.default = (0, _emberModifier.modifier)(function (element, _ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      attribute = _ref2[0],\n      condition = _ref2[1],\n      value = _ref2[2];\n    if (condition) {\n      element.setAttribute(attribute, value);\n    } else {\n      element.removeAttribute(attribute);\n    }\n  });\n});","define(\"ember-bootstrap/template-registry\", [], function () {\n  \"use strict\";\n\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n});","define(\"ember-bootstrap/utils/decorators/arg\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * @internal\n   */\n\n  function arg(target, key, descriptor) {\n    return {\n      get: function get() {\n        var argValue = this.args[key];\n        return argValue !== undefined ? argValue : descriptor.initializer ? descriptor.initializer.call(this) : undefined;\n      }\n    };\n  }\n  var _default = _exports.default = arg;\n});","define(\"ember-bootstrap/utils/decorators/uses-transition\", [\"exports\", \"ember-bootstrap/utils/is-fastboot\", \"@ember/debug\"], function (_exports, _isFastboot, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = arg;\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/utils/is-fastboot\",0,\"@ember/debug\"eaimeta@70e063a35619d71f\n  function arg(fadeProperty) {\n    (true && !(typeof fadeProperty === 'string') && (0, _debug.assert)('You have to provide a fadeProperty for typeClass', typeof fadeProperty === 'string'));\n    return function () {\n      return {\n        get: function get() {\n          return !(0, _isFastboot.default)(this) && this.args[fadeProperty] !== false;\n        }\n      };\n    };\n  }\n});","define(\"ember-bootstrap/utils/dom\", [\"exports\", \"@ember/application\", \"require\", \"@ember/debug\"], function (_exports, _application, _require, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.findElemementByIdInShadowDom = findElemementByIdInShadowDom;\n  _exports.findElementById = findElementById;\n  _exports.getDOM = getDOM;\n  _exports.getDestinationElement = getDestinationElement;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/application\",0,\"@glimmer/env\",0,\"require\",0,\"@ember/debug\"eaimeta@70e063a35619d71f\n  /*\n   * Implement some helpers methods for interacting with the DOM,\n   * be it Fastboot's SimpleDOM or the browser's version.\n   *\n   * Credit to https://github.com/yapplabs/ember-wormhole, from where this has been shamelessly stolen.\n   */\n  function childNodesOfElement(element) {\n    var children = [];\n    var child = element.firstChild;\n    while (child) {\n      children.push(child);\n      child = child.nextSibling;\n    }\n    return children;\n  }\n  function findElementById(doc, id) {\n    if (doc.getElementById) {\n      return doc.getElementById(id);\n    }\n    var nodes = childNodesOfElement(doc);\n    var node;\n    while (nodes.length) {\n      node = nodes.shift();\n      if (node.getAttribute && node.getAttribute('id') === id) {\n        return node;\n      }\n      nodes = childNodesOfElement(node).concat(nodes);\n    }\n  }\n\n  // Private Ember API usage. Get the dom implementation used by the current\n  // renderer, be it native browser DOM or Fastboot SimpleDOM\n  function getDOM(context) {\n    var _renderer;\n    var renderer = context.renderer;\n    if (!((_renderer = renderer) !== null && _renderer !== void 0 && _renderer._dom)) {\n      // pre glimmer2\n      var container = _application.getOwner ? (0, _application.getOwner)(context) : context.container;\n      var documentService = container.lookup('service:-document');\n      if (documentService) {\n        return documentService;\n      }\n      renderer = container.lookup('renderer:-dom');\n    }\n    if (renderer._dom && renderer._dom.document) {\n      return renderer._dom.document;\n    } else {\n      throw new Error('Could not get DOM');\n    }\n  }\n  function getDestinationElement(context) {\n    var dom = getDOM(context);\n    var id = 'ember-bootstrap-wormhole';\n    var destinationElement = findElementById(dom, id) || findElemementByIdInShadowDom(context, id);\n    if (true /* DEBUG */ && !destinationElement) {\n      var config = (0, _application.getOwner)(context).resolveRegistration('config:environment');\n      if (config.environment === 'test' && typeof FastBoot === 'undefined') {\n        var _id;\n        if (_require.default.has('@ember/test-helpers/dom/get-root-element')) {\n          try {\n            _id = (0, _require.default)('@ember/test-helpers/dom/get-root-element').default().id;\n          } catch (ex) {\n            // no op\n          }\n        }\n        if (!_id) {\n          return document.querySelector('#ember-testing');\n        }\n        return document.getElementById(_id);\n      }\n      (true && (0, _debug.warn)(\"No wormhole destination element found for component \".concat(context, \". Add `<div id=\\\"ember-bootstrap-wormhole\\\"></div>` to `app/index.html` or `app/templates/application.hbs`!\"), false, {\n        id: 'ember-bootstrap.no-destination-element'\n      }));\n    }\n    return destinationElement;\n  }\n  function findElemementByIdInShadowDom(context, id) {\n    var owner = (0, _application.getOwner)(context);\n    return owner.rootElement.querySelector && owner.rootElement.querySelector(\"[id=\\\"\".concat(id, \"\\\"]\"));\n  }\n});","define(\"ember-bootstrap/utils/form-validation-class\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = formValidationClass;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function formValidationClass(validationType) {\n    switch (validationType) {\n      case 'error':\n        return 'is-invalid';\n      case 'success':\n        return 'is-valid';\n      case 'warning':\n        return 'is-warning';\n      // not officially supported in BS4 :(\n      default:\n        return undefined;\n    }\n  }\n});","define(\"ember-bootstrap/utils/is-fastboot\", [\"exports\", \"@ember/application\"], function (_exports, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isFastBoot;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/application\"eaimeta@70e063a35619d71f\n  function isFastBoot(context) {\n    var owner = (0, _application.getOwner)(context);\n    var fastbootService = owner.lookup('service:fastboot');\n    return fastbootService ? fastbootService.get('isFastBoot') : false;\n  }\n});","define(\"ember-bootstrap/utils/size-class\", [\"exports\", \"@ember/utils\", \"@ember/debug\"], function (_exports, _utils, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = sizeClass;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/debug\"eaimeta@70e063a35619d71f\n  function sizeClass(prefix, size) {\n    (true && !(typeof prefix === 'string') && (0, _debug.assert)('You have to provide a prefix for sizeClass', typeof prefix === 'string'));\n    (true && !(!size || typeof size === 'string' && size !== '') && (0, _debug.assert)('The value of `size` must be a string', !size || typeof size === 'string' && size !== ''));\n    return (0, _utils.isBlank)(size) ? null : \"\".concat(prefix, \"-\").concat(size);\n  }\n});","define(\"ember-bootstrap/utils/transition-end\", [\"exports\", \"ember\", \"@ember/runloop\"], function (_exports, _ember, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = waitForTransitionEnd;\n  _exports.skipTransition = skipTransition;\n  0; //eaimeta@70e063a35619d71f0,\"ember\",0,\"@ember/runloop\"eaimeta@70e063a35619d71f\n  var _skipTransition;\n  function skipTransition(bool) {\n    _skipTransition = bool;\n  }\n  function _isSkipped() {\n    return _skipTransition === true || _skipTransition !== false && _ember.default.testing;\n  }\n  function waitForTransitionEnd(node) {\n    var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    if (!node) {\n      return Promise.reject();\n    }\n    var backup;\n    if (_isSkipped()) {\n      duration = 0;\n    }\n    return new Promise(function (resolve) {\n      var _done = function done() {\n        if (backup) {\n          (0, _runloop.cancel)(backup);\n          backup = null;\n        }\n        node.removeEventListener('transitionend', _done);\n        resolve();\n      };\n      node.addEventListener('transitionend', _done, false);\n      backup = (0, _runloop.later)(this, _done, duration);\n    });\n  }\n});","define(\"ember-bootstrap/version\", [\"exports\", \"ember\", \"@embroider/macros/runtime\"], function (_exports, _ember, _runtime) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.VERSION = void 0;\n  _exports.registerLibrary = registerLibrary;\n  0; //eaimeta@70e063a35619d71f0,\"@embroider/macros\",0,\"ember\"eaimeta@70e063a35619d71f\n  var VERSION = _exports.VERSION = (0, _runtime.config)(\"/opt/atlassian/pipelines/agent/build/node_modules/.pnpm/ember-bootstrap@6.4.2_@babel+core@7.26.0_@ember+string@4.0.0_@glimmer+component@1.1.2_@_7e62056da39721e7e59d5b1f97db6f7e/node_modules/ember-bootstrap\").version;\n  function registerLibrary() {\n    _ember.default.libraries.register('Ember Bootstrap', VERSION);\n  }\n});","define(\"ember-cached-decorator-polyfill/index\", [\"exports\", \"@glimmer/tracking/primitives/cache\", \"@ember/debug\"], function (_exports, _cache, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.cached = cached;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function cached() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var target = args[0],\n      key = args[1],\n      descriptor = args[2];\n\n    // Error on `@cached()`, `@cached(...args)`, and `@cached propName = value;`\n    (true && !(target !== undefined) && (0, _debug.assert)('You attempted to use @cached(), which is not necessary nor supported. Remove the parentheses and you will be good to go!', target !== undefined));\n    (true && !(_typeof(target) === 'object' && typeof key === 'string' && _typeof(descriptor) === 'object' && args.length === 3) && (0, _debug.assert)(\"You attempted to use @cached on with \".concat(args.length > 1 ? 'arguments' : 'an argument', \" ( @cached(\").concat(args.map(function (d) {\n      return \"'\".concat(d, \"'\");\n    }).join(', '), \"), which is not supported. Dependencies are automatically tracked, so you can just use \", '`@cached`'), _typeof(target) === 'object' && typeof key === 'string' && _typeof(descriptor) === 'object' && args.length === 3));\n    (true && !(typeof descriptor.get == 'function') && (0, _debug.assert)(\"The @cached decorator must be applied to getters. '\".concat(key, \"' is not a getter.\"), typeof descriptor.get == 'function'));\n    var caches = new WeakMap();\n    var getter = descriptor.get;\n    descriptor.get = function () {\n      if (!caches.has(this)) caches.set(this, (0, _cache.createCache)(getter.bind(this)));\n      return (0, _cache.getValue)(caches.get(this));\n    };\n  }\n});","define(\"ember-changeset-validations/index\", [\"exports\", \"validated-changeset\"], function (_exports, _validatedChangeset) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"validated-changeset\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _validatedChangeset.lookupValidator;\n});","define(\"ember-changeset-validations/utils/get-messages\", [\"exports\", \"@ember/array\", \"@ember/utils\", \"ember-get-config\", \"ember-changeset-validations/utils/messages\", \"ember-changeset-validations/utils/with-defaults\"], function (_exports, _array, _utils, _emberGetConfig, _messages, _withDefaults) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = getMessages;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/utils\",0,\"ember-get-config\",0,\"ember-changeset-validations/utils/messages\",0,\"ember-changeset-validations/utils/with-defaults\"eaimeta@70e063a35619d71f\n  /* globals requirejs, requireModule */\n  var keys = Object.keys;\n  var moduleName = \"\".concat(_emberGetConfig.default.modulePrefix, \"/validations/messages\");\n  var cachedRef = null;\n\n  /**\n   * Find and load messages module on consuming app. Defaults to addon messages.\n   * To define a custom message map, create `my-app/app/validations/messages.js`\n   * and export an object.\n   *\n   * @param  {Object} moduleMap\n   * @param  {Boolean} useCache Pass `false` to ignore cached key\n   * @return {Object}\n   */\n  function getMessages() {\n    var moduleMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : requirejs.entries;\n    var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    var messagesModule = _messages.default;\n    if (useCache && (0, _utils.isPresent)(cachedRef)) {\n      return cachedRef;\n    }\n    var moduleKey = (0, _array.A)(keys(moduleMap)).find(function (key) {\n      return key === moduleName;\n    });\n    if ((0, _utils.isPresent)(moduleKey)) {\n      // Merge the user specified messages with the defaults\n      messagesModule = (0, _withDefaults.default)(requireModule(moduleKey).default, messagesModule);\n    }\n    cachedRef = messagesModule;\n    return messagesModule;\n  }\n});","define(\"ember-changeset-validations/utils/handle-multiple-validations\", [\"exports\", \"@ember/array\", \"rsvp\", \"@ember/utils\", \"validated-changeset\"], function (_exports, _array, _rsvp, _utils, _validatedChangeset) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = handleMultipleValidations;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"rsvp\",0,\"@ember/utils\",0,\"validated-changeset\"eaimeta@70e063a35619d71f\n  /**\n   * Rejects `true` values from an array of validations. Returns `true` when there\n   * are no errors, or the error object if there are errors.\n   *\n   * @private\n   * @param  {Array} validations\n   * @return {Boolean|Any}\n   */\n  function handleValidations() {\n    var validations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var rejectedValidations = (0, _array.A)(validations).reject(function (validation) {\n      return (0, _utils.typeOf)(validation) === 'boolean' && validation;\n    });\n    return rejectedValidations.length === 0 || rejectedValidations;\n  }\n\n  /**\n   * Handles an array of validators and returns Promise.all if any value is a\n   * Promise.\n   *\n   * @public\n   * @param  {Array} validators Array of validator functions\n   * @param  {String} options.key\n   * @param  {Any} options.newValue\n   * @param  {Any} options.oldValue\n   * @param  {Object} options.changes\n   * @param  {Object} options.content\n   * @return {Promise|Boolean|Any}\n   */\n  function handleMultipleValidations(validators, _ref) {\n    var key = _ref.key,\n      newValue = _ref.newValue,\n      oldValue = _ref.oldValue,\n      changes = _ref.changes,\n      content = _ref.content;\n    var validations = (0, _array.A)(validators.map(function (validator) {\n      return validator(key, newValue, oldValue, changes, content);\n    }));\n    if ((0, _array.A)(validations).any(_validatedChangeset.isPromise)) {\n      return (0, _rsvp.all)(validations).then(handleValidations);\n    }\n    return handleValidations(validations);\n  }\n});","define(\"ember-changeset-validations/utils/messages\", [\"exports\", \"ember-validators/messages\", \"@ember/string\"], function (_exports, _messages, _string) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-validators/messages\",0,\"@ember/string\"eaimeta@70e063a35619d71f\n  var Messages = Object.assign({}, _messages.default);\n  var _default = _exports.default = Object.assign(Messages, {\n    // Blank and present are flipped in ember-validators. Need to flip them back here\n    blank: _messages.default.present,\n    present: _messages.default.blank,\n    getDescriptionFor: function getDescriptionFor() {\n      var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      return (0, _string.capitalize)((0, _string.dasherize)(key).split(/[._-]/g).join(' '));\n    }\n  });\n});","define(\"ember-changeset-validations/utils/to-date\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = toDate;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  /**\n   * @name toDate\n   * @param {Date|Number} argument - the value to convert\n   * @returns {Date} the parsed date in the local time zone\n   * @throws {TypeError} 1 argument required\n   */\n  function toDate(argument) {\n    var argStr = Object.prototype.toString.call(argument);\n    if (typeof argument === 'function') {\n      argument = argument();\n    }\n    if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n      return argument;\n    } else if (typeof argument === 'number' || argStr === '[object Number]') {\n      return new Date(argument);\n    } else {\n      if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n        // eslint-disable-next-line no-console\n        console.warn('Please use `Date.parse` to parse strings.');\n        // eslint-disable-next-line no-console\n        console.warn(new Error().stack);\n      }\n      return new Date(NaN);\n    }\n  }\n});","define(\"ember-changeset-validations/utils/validation-errors\", [\"exports\", \"@ember/object\", \"@ember/debug\", \"ember-get-config\", \"ember-changeset-validations/utils/get-messages\"], function (_exports, _object, _debug, _emberGetConfig, _getMessages) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = buildMessage;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/debug\",0,\"ember-get-config\",0,\"ember-changeset-validations/utils/get-messages\"eaimeta@70e063a35619d71f\n  /**\n   * For code taken from ember-cp-validations\n   * Copyright 2016, Yahoo! Inc.\n   * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n   */\n  function buildMessage(key, result) {\n    var _config$changesetVal;\n    var returnsRaw = ((_config$changesetVal = _emberGetConfig.default['changeset-validations']) === null || _config$changesetVal === void 0 ? void 0 : _config$changesetVal.rawOutput) || false;\n    var messages = (0, _getMessages.default)();\n    var description = messages.getDescriptionFor(key);\n    if (result.message) {\n      return result.message;\n    }\n    var type = result.type,\n      value = result.value,\n      _result$context = result.context,\n      context = _result$context === void 0 ? {} : _result$context;\n    var message = (0, _object.get)(messages, type);\n    if (returnsRaw) {\n      context = Object.assign({}, context, {\n        description: description\n      });\n      return {\n        value: value,\n        type: type,\n        message: message,\n        context: context\n      };\n    }\n    if (context.message) {\n      var _message = context.message;\n      if (typeof _message === 'function') {\n        var builtMessage = _message(key, type, value, context);\n        (true && !(typeof builtMessage === 'string') && (0, _debug.assert)('Custom message function must return a string', typeof builtMessage === 'string'));\n        return builtMessage;\n      }\n      return messages.formatMessage(_message, Object.assign({\n        description: description\n      }, context));\n    }\n    return messages.formatMessage(message, Object.assign({\n      description: description\n    }, context));\n  }\n});","define(\"ember-changeset-validations/utils/with-defaults\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = withDefaults;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * Create a new object with defaults\n   *\n   * @public\n   * @param  {Object} obj\n   * @param  {Object} defaults\n   * @return {Object}\n   */\n  function withDefaults() {\n    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    return Object.assign(Object.assign({}, defaults), obj);\n  }\n});","define(\"ember-changeset-validations/utils/wrap\", [\"exports\", \"@ember/array\"], function (_exports, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = wrapInArray;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\"eaimeta@70e063a35619d71f\n  /**\n   * Wraps a value in an Ember.Array.\n   *\n   * @public\n   * @param  {Any} value\n   * @return {Ember.Array}\n   */\n  function wrapInArray(value) {\n    if ((0, _array.isArray)(value)) {\n      return (0, _array.A)(value);\n    }\n    return (0, _array.A)([value]);\n  }\n});","define(\"ember-changeset-validations/validators/confirmation\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-validators/confirmation\"], function (_exports, _validationErrors, _confirmation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateConfirmation;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-validators/confirmation\"eaimeta@70e063a35619d71f\n  function validateConfirmation() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return function (key, newValue, _oldValue, changes) {\n      var content = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n      // Combine the changes on top of the content so that we evaluate against both default values\n      // and valid changes. `changes` only has valid changes that have been made and won't include\n      // default values\n      var model = Object.assign({}, content, changes);\n      var result = (0, _confirmation.default)(newValue, options, model, key);\n      return result === true ? true : (0, _validationErrors.default)(key, result);\n    };\n  }\n});","define(\"ember-changeset-validations/validators/date\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-changeset-validations/utils/with-defaults\", \"ember-changeset-validations/utils/to-date\"], function (_exports, _validationErrors, _withDefaults, _toDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateDate;\n  _exports.errorFormat = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-changeset-validations/utils/with-defaults\",0,\"ember-changeset-validations/utils/to-date\"eaimeta@70e063a35619d71f\n  var errorFormat = _exports.errorFormat = 'MMM Do, YYYY';\n  function isValidDate(d) {\n    return d instanceof Date && !isNaN(d);\n  }\n  function validateDate() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    options = (0, _withDefaults.default)(options, {\n      allowBlank: false,\n      errorFormat: errorFormat\n    });\n    return function (key, value) {\n      var _options = options,\n        allowBlank = _options.allowBlank;\n      var _options2 = options,\n        before = _options2.before,\n        onOrBefore = _options2.onOrBefore,\n        after = _options2.after,\n        onOrAfter = _options2.onOrAfter,\n        message = _options2.message;\n      var type = 'date';\n      if (allowBlank && (typeof value === 'undefined' || value === null)) {\n        return true;\n      }\n      var date = (0, _toDate.default)(value);\n      if (!isValidDate(date)) {\n        return (0, _validationErrors.default)(key, {\n          type: type,\n          value: 'not a date',\n          context: {\n            value: value,\n            message: message\n          }\n        });\n      }\n      if (before) {\n        before = (0, _toDate.default)(before);\n        message = message || \"[BEFORE] date is NOT before \".concat(value);\n        type = 'before';\n        if (date >= before) {\n          return (0, _validationErrors.default)(key, {\n            type: type,\n            value: value,\n            context: {\n              before: before,\n              message: message\n            }\n          });\n        }\n      }\n      if (onOrBefore) {\n        onOrBefore = (0, _toDate.default)(onOrBefore);\n        message = message || \"[ON OR BEFORE] date is NOT on or before \".concat(value);\n        type = 'onOrBefore';\n        if (date > onOrBefore) {\n          return (0, _validationErrors.default)(key, {\n            type: type,\n            value: value,\n            context: {\n              onOrBefore: onOrBefore,\n              message: message\n            }\n          });\n        }\n      }\n      if (after) {\n        after = (0, _toDate.default)(after);\n        message = message || \"[AFTER] date is NOT after \".concat(value);\n        type = 'after';\n        if (date <= after) {\n          return (0, _validationErrors.default)(key, {\n            type: type,\n            value: value,\n            context: {\n              after: after,\n              message: message\n            }\n          });\n        }\n      }\n      if (onOrAfter) {\n        onOrAfter = (0, _toDate.default)(onOrAfter);\n        message = message || \"[ON OR AFTER] date is NOT on or after \".concat(value);\n        type = 'onOrAfter';\n        if (date < onOrAfter) {\n          return (0, _validationErrors.default)(key, {\n            type: type,\n            value: value,\n            context: {\n              onOrAfter: onOrAfter,\n              message: message\n            }\n          });\n        }\n      }\n      return true;\n    };\n  }\n});","define(\"ember-changeset-validations/validators/exclusion\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-validators/exclusion\"], function (_exports, _validationErrors, _exclusion) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateExclusion;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-validators/exclusion\"eaimeta@70e063a35619d71f\n  function validateExclusion() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (options.list) {\n      options.in = options.list;\n    }\n    return function (key, value) {\n      var result = (0, _exclusion.default)(value, options, null, key);\n      return result === true ? true : (0, _validationErrors.default)(key, result);\n    };\n  }\n});","define(\"ember-changeset-validations/validators/format\", [\"exports\", \"@ember/utils\", \"ember-changeset-validations/utils/validation-errors\", \"ember-validators/format\"], function (_exports, _utils, _validationErrors, _format) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateFormat;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-validators/format\"eaimeta@70e063a35619d71f\n  function validateFormat() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var hasOptions = !(0, _utils.isEmpty)(Object.keys(options));\n    return function (key, value) {\n      if (!hasOptions) {\n        return true;\n      }\n      var result = (0, _format.default)(value, options, null, key);\n      return result === true ? true : (0, _validationErrors.default)(key, result);\n    };\n  }\n});","define(\"ember-changeset-validations/validators/inclusion\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-validators/inclusion\"], function (_exports, _validationErrors, _inclusion) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateInclusion;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-validators/inclusion\"eaimeta@70e063a35619d71f\n  function validateInclusion() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (options.list) {\n      options.in = options.list;\n    }\n    return function (key, value) {\n      var result = (0, _inclusion.default)(value, options, null, key);\n      return result === true ? true : (0, _validationErrors.default)(key, result);\n    };\n  }\n});","define(\"ember-changeset-validations/validators/index\", [\"exports\", \"ember-changeset-validations/validators/date\", \"ember-changeset-validations/validators/presence\", \"ember-changeset-validations/validators/length\", \"ember-changeset-validations/validators/number\", \"ember-changeset-validations/validators/format\", \"ember-changeset-validations/validators/inclusion\", \"ember-changeset-validations/validators/exclusion\", \"ember-changeset-validations/validators/confirmation\"], function (_exports, _date, _presence, _length, _number, _format, _inclusion, _exclusion, _confirmation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"validateConfirmation\", {\n    enumerable: true,\n    get: function get() {\n      return _confirmation.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validateDate\", {\n    enumerable: true,\n    get: function get() {\n      return _date.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validateExclusion\", {\n    enumerable: true,\n    get: function get() {\n      return _exclusion.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validateFormat\", {\n    enumerable: true,\n    get: function get() {\n      return _format.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validateInclusion\", {\n    enumerable: true,\n    get: function get() {\n      return _inclusion.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validateLength\", {\n    enumerable: true,\n    get: function get() {\n      return _length.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validateNumber\", {\n    enumerable: true,\n    get: function get() {\n      return _number.default;\n    }\n  });\n  Object.defineProperty(_exports, \"validatePresence\", {\n    enumerable: true,\n    get: function get() {\n      return _presence.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/validators/date\",0,\"ember-changeset-validations/validators/presence\",0,\"ember-changeset-validations/validators/length\",0,\"ember-changeset-validations/validators/number\",0,\"ember-changeset-validations/validators/format\",0,\"ember-changeset-validations/validators/inclusion\",0,\"ember-changeset-validations/validators/exclusion\",0,\"ember-changeset-validations/validators/confirmation\"eaimeta@70e063a35619d71f\n});","define(\"ember-changeset-validations/validators/length\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-changeset-validations/utils/with-defaults\", \"ember-validators/length\"], function (_exports, _validationErrors, _withDefaults, _length) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateLength;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-changeset-validations/utils/with-defaults\",0,\"ember-validators/length\"eaimeta@70e063a35619d71f\n  function validateLength() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    options = (0, _withDefaults.default)(options, {\n      useBetweenMessage: true\n    });\n    return function (key, value) {\n      var result = (0, _length.default)(value, options, null, key);\n      return result === true ? true : (0, _validationErrors.default)(key, result);\n    };\n  }\n});","define(\"ember-changeset-validations/validators/number\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-changeset-validations/utils/with-defaults\", \"ember-validators/number\"], function (_exports, _validationErrors, _withDefaults, _number) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateNumber;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-changeset-validations/utils/with-defaults\",0,\"ember-validators/number\"eaimeta@70e063a35619d71f\n  function validateNumber() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    options = (0, _withDefaults.default)(options, {\n      allowString: true,\n      allowNone: false\n    });\n    if (options.allowBlank) {\n      options.allowNone = true;\n    }\n    return function (key, value) {\n      var result = (0, _number.default)(value, options, null, key);\n      return result === true ? true : (0, _validationErrors.default)(key, result);\n    };\n  }\n});","define(\"ember-changeset-validations/validators/presence\", [\"exports\", \"ember-changeset-validations/utils/validation-errors\", \"ember-validators/presence\", \"@ember/object\"], function (_exports, _validationErrors, _presence, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validatePresence;\n  0; //eaimeta@70e063a35619d71f0,\"ember-changeset-validations/utils/validation-errors\",0,\"ember-validators/presence\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function validatePresence(options) {\n    var targets;\n    if (typeof options === 'boolean') {\n      options = {\n        presence: options\n      };\n    } else if (options && options.on !== undefined) {\n      if (typeof options.on === 'string') {\n        targets = [options.on];\n      } else if (Array.isArray(options.on)) {\n        targets = options.on;\n      }\n      delete options.on;\n    }\n    return function (key, value, _oldValue, changes, content) {\n      if (targets && !targets.some(function (target) {\n        var change = (0, _object.get)(changes, target);\n        return change || change === undefined && (0, _object.get)(content, target);\n      })) {\n        return true;\n      }\n      var result = (0, _presence.default)(value, options, null, key);\n      if (typeof result === 'boolean' || typeof result === 'string') {\n        return result;\n      } else {\n        // We flipped the meaning behind `present` and `blank` so switch the two\n        if (result.type === 'present') {\n          result.type = 'blank';\n        } else if (result.type === 'blank') {\n          result.type = 'present';\n        }\n        return (0, _validationErrors.default)(key, result);\n      }\n    };\n  }\n});","define(\"ember-changeset/helpers/changeset-get\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.changesetGet = changesetGet;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function changesetGet(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      changeset = _ref2[0],\n      fieldPath = _ref2[1];\n    return changeset.get(fieldPath);\n  }\n  var _default = _exports.default = (0, _helper.helper)(changesetGet);\n});","define(\"ember-changeset/helpers/changeset-set\", [\"exports\", \"@ember/component/helper\", \"validated-changeset\"], function (_exports, _helper, _validatedChangeset) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.changesetSet = changesetSet;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"validated-changeset\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n   * This is a drop in replacement for the `mut` helper\n   *\n   * @method changesetSet\n   * @param params\n   */\n  function changesetSet(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      obj = _ref2[0],\n      path = _ref2[1];\n    if ((0, _validatedChangeset.isChangeset)(obj)) {\n      return function (value) {\n        return obj.set(path, value);\n      };\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(changesetSet);\n});","define(\"ember-changeset/helpers/changeset\", [\"exports\", \"@ember/component/helper\", \"ember-changeset\", \"validated-changeset\"], function (_exports, _helper, _emberChangeset, _validatedChangeset) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.changeset = changeset;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"ember-changeset\",0,\"validated-changeset\"eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function changeset(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      obj = _ref2[0],\n      validations = _ref2[1];\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (!obj) {\n      // route transitions may trigger this\n      return;\n    }\n    if ((0, _validatedChangeset.isChangeset)(obj)) {\n      return obj;\n    }\n    if ((0, _validatedChangeset.isObject)(validations)) {\n      if ((0, _validatedChangeset.isPromise)(obj)) {\n        return obj.then(function (resolved) {\n          return (0, _emberChangeset.Changeset)(resolved, (0, _validatedChangeset.lookupValidator)(validations), validations, options);\n        });\n      }\n      return (0, _emberChangeset.Changeset)(obj, (0, _validatedChangeset.lookupValidator)(validations), validations, options);\n    }\n    if ((0, _validatedChangeset.isPromise)(obj)) {\n      return Promise.resolve(obj).then(function (resolved) {\n        return (0, _emberChangeset.Changeset)(resolved, validations, {}, options);\n      });\n    }\n    return (0, _emberChangeset.Changeset)(obj, validations, {}, options);\n  }\n  var _default = _exports.default = (0, _helper.helper)(changeset);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-changeset/index\", [\"exports\", \"@ember/debug\", \"@ember/object/compat\", \"validated-changeset\", \"ember-changeset/validated-changeset\", \"@ember/array/proxy\", \"@ember/object/proxy\", \"@ember/object\", \"ember-changeset/utils/merge-deep\", \"ember-changeset/utils/is-object\", \"@glimmer/tracking\", \"@embroider/macros/es-compat2\"], function (_exports, _debug, _compat, _validatedChangeset, _validatedChangeset2, _proxy, _proxy2, _object, _mergeDeep, _isObject, _tracking, _esCompat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Changeset = Changeset;\n  _exports.EmberChangeset = void 0;\n  Object.defineProperty(_exports, \"ValidatedChangeset\", {\n    enumerable: true,\n    get: function get() {\n      return _validatedChangeset2.Changeset;\n    }\n  });\n  _exports.buildOldValues = buildOldValues;\n  _exports.changeset = changeset;\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember/object/compat\",0,\"validated-changeset\",0,\"ember-changeset/validated-changeset\",0,\"@ember/array/proxy\",0,\"@ember/object/proxy\",0,\"@ember/object\",0,\"ember-changeset/utils/merge-deep\",0,\"ember-changeset/utils/is-object\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@embroider/macros\",0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var CHANGES = '_changes';\n  var PREVIOUS_CONTENT = '_previousContent';\n  var CONTENT = '_content';\n  var defaultValidatorFn = function defaultValidatorFn() {\n    return true;\n  };\n  function buildOldValues(content, changes, getDeep) {\n    var obj = Object.create(null);\n    var _iterator = _createForOfIteratorHelper(changes),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var change = _step.value;\n        obj[change.key] = getDeep(content, change.key);\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n    return obj;\n  }\n  function isProxy(o) {\n    return !!(o && (o instanceof _proxy2.default || o instanceof _proxy.default));\n  }\n  function maybeUnwrapProxy(o) {\n    return isProxy(o) ? maybeUnwrapProxy((0, _object.get)(o, 'content')) : o;\n  }\n  var Model;\n  {\n    Model = (0, _esCompat.default)(require(\"@ember-data/model\")).default;\n  }\n  var EmberChangeset = _exports.EmberChangeset = (_class = /*#__PURE__*/function (_BufferedChangeset) {\n    function EmberChangeset() {\n      var _this;\n      _classCallCheck(this, EmberChangeset);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, EmberChangeset, [].concat(args));\n      _initializerDefineProperty(_this, \"_changes\", _descriptor, _this);\n      _initializerDefineProperty(_this, \"_errors\", _descriptor2, _this);\n      _initializerDefineProperty(_this, \"_content\", _descriptor3, _this);\n      _defineProperty(_this, \"isObject\", _isObject.default);\n      _defineProperty(_this, \"maybeUnwrapProxy\", maybeUnwrapProxy);\n      // DO NOT override setDeep. Ember.set does not work wth empty hash and nested\n      // key Ember.set({}, 'user.name', 'foo');\n      // override base class\n      // DO NOT override setDeep. Ember.set does not work with Ember.set({}, 'user.name', 'foo');\n      _defineProperty(_this, \"getDeep\", _object.get);\n      _defineProperty(_this, \"mergeDeep\", _mergeDeep.default);\n      return _this;\n    }\n    _inherits(EmberChangeset, _BufferedChangeset);\n    return _createClass(EmberChangeset, [{\n      key: \"safeGet\",\n      value: function safeGet(obj, key) {\n        var _obj$relationshipFor;\n        if (Model && ((_obj$relationshipFor = obj.relationshipFor) === null || _obj$relationshipFor === void 0 || (_obj$relationshipFor = _obj$relationshipFor.call(obj, key)) === null || _obj$relationshipFor === void 0 || (_obj$relationshipFor = _obj$relationshipFor.meta) === null || _obj$relationshipFor === void 0 ? void 0 : _obj$relationshipFor.kind) == 'belongsTo') {\n          return obj.belongsTo(key).value();\n        }\n        return (0, _object.get)(obj, key);\n      }\n    }, {\n      key: \"safeSet\",\n      value: function safeSet(obj, key, value) {\n        return (0, _object.set)(obj, key, value);\n      }\n\n      /**\n       * @property isValid\n       * @type {Array}\n       */\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return _superPropGet(EmberChangeset, \"isValid\", this, 1);\n      }\n\n      /**\n       * @property isInvalid\n       * @type {Boolean}\n       */\n    }, {\n      key: \"isInvalid\",\n      get: function get() {\n        return _superPropGet(EmberChangeset, \"isInvalid\", this, 1);\n      }\n\n      /**\n       * @property isPristine\n       * @type {Boolean}\n       */\n    }, {\n      key: \"isPristine\",\n      get: function get() {\n        return _superPropGet(EmberChangeset, \"isPristine\", this, 1);\n      }\n\n      /**\n       * @property isDirty\n       * @type {Boolean}\n       */\n    }, {\n      key: \"isDirty\",\n      get: function get() {\n        return _superPropGet(EmberChangeset, \"isDirty\", this, 1);\n      }\n    }, {\n      key: \"pendingData\",\n      get: function get() {\n        var content = this[CONTENT];\n        var changes = this[CHANGES];\n        var pendingChanges = this.mergeDeep(Object.create(Object.getPrototypeOf(content)), content, {\n          safeGet: _object.get,\n          safeSet: _object.set\n        });\n        return this.mergeDeep(pendingChanges, changes, {\n          safeGet: _object.get,\n          safeSet: _object.set\n        });\n      }\n\n      /**\n       * Manually add an error to the changeset. If there is an existing\n       * error or change for `key`, it will be overwritten.\n       *\n       * @method addError\n       */\n    }, {\n      key: \"addError\",\n      value: function addError(key, error) {\n        _superPropGet(EmberChangeset, \"addError\", this, 3)([key, error]);\n        (0, _object.notifyPropertyChange)(this, key);\n        // Return passed-in `error`.\n        return error;\n      }\n\n      /**\n       * Manually push multiple errors to the changeset as an array.\n       *\n       * @method pushErrors\n       */\n    }, {\n      key: \"pushErrors\",\n      value: function pushErrors(key) {\n        for (var _len2 = arguments.length, newErrors = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          newErrors[_key2 - 1] = arguments[_key2];\n        }\n        var _superPropGet2 = _superPropGet(EmberChangeset, \"pushErrors\", this, 3)([key].concat(newErrors)),\n          value = _superPropGet2.value,\n          validation = _superPropGet2.validation;\n        (0, _object.notifyPropertyChange)(this, key);\n        return {\n          value: value,\n          validation: validation\n        };\n      }\n\n      /**\n       * Sets property or error on the changeset.\n       * Returns value or error\n       */\n    }, {\n      key: \"_setProperty\",\n      value: function _setProperty(_ref) {\n        var key = _ref.key,\n          value = _ref.value,\n          oldValue = _ref.oldValue;\n        _superPropGet(EmberChangeset, \"_setProperty\", this, 3)([{\n          key: key,\n          value: value,\n          oldValue: oldValue\n        }]);\n        (0, _object.notifyPropertyChange)(this, key);\n      }\n\n      /**\n       * Notifies virtual properties set on the changeset of a change.\n       * You can specify which keys are notified by passing in an array.\n       *\n       * @private\n       * @param {Array} keys\n       * @return {Void}\n       */\n    }, {\n      key: \"_notifyVirtualProperties\",\n      value: function _notifyVirtualProperties(keys) {\n        var _this2 = this;\n        keys = _superPropGet(EmberChangeset, \"_notifyVirtualProperties\", this, 3)([keys]);\n        (keys || []).forEach(function (key) {\n          return (0, _object.notifyPropertyChange)(_this2, key);\n        });\n        return;\n      }\n\n      /**\n       * Deletes a key off an object and notifies observers.\n       */\n    }, {\n      key: \"_deleteKey\",\n      value: function _deleteKey(objName) {\n        var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n        var result = _superPropGet(EmberChangeset, \"_deleteKey\", this, 3)([objName, key]);\n        (0, _object.notifyPropertyChange)(this, key);\n        return result;\n      }\n\n      /**\n       * Executes the changeset if in a valid state.\n       *\n       * @method execute\n       */\n    }, {\n      key: \"execute\",\n      value: function execute() {\n        var oldContent;\n        if (this.isValid && this.isDirty) {\n          var content = this[CONTENT];\n          var changes = this[CHANGES];\n\n          // keep old values in case of error and we want to rollback\n          oldContent = buildOldValues(content, this.changes, this.getDeep);\n\n          // we want mutation on original object\n          // @tracked\n          this[CONTENT] = this.mergeDeep(content, changes, {\n            safeGet: _object.get,\n            safeSet: _object.set\n          });\n        }\n        this[PREVIOUS_CONTENT] = oldContent;\n        return this;\n      }\n    }]);\n  }(_validatedChangeset.BufferedChangeset), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_changes\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"_errors\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"_content\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"isValid\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isValid\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"isInvalid\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isInvalid\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"isPristine\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isPristine\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"isDirty\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isDirty\"), _class.prototype), _class);\n  /**\n   * Creates new changesets.\n   */\n  function changeset(obj) {\n    var validateFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultValidatorFn;\n    var validationMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    (true && !(Boolean(obj)) && (0, _debug.assert)('Underlying object for changeset is missing', Boolean(obj)));\n    (true && !(!Array.isArray(obj)) && (0, _debug.assert)('Array is not a valid type to pass as the first argument to `changeset`', !Array.isArray(obj)));\n    if (options.changeset) {\n      return new options.changeset(obj, validateFn, validationMap, options);\n    }\n    var c = new EmberChangeset(obj, validateFn, validationMap, options);\n    return c;\n  }\n\n  /**\n   * Creates new changesets.\n   * @function Changeset\n   */\n  function Changeset(obj) {\n    var validateFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultValidatorFn;\n    var validationMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var c = changeset(obj, validateFn, validationMap, options);\n    return new Proxy(c, {\n      get: function get(targetBuffer, key /*, receiver*/) {\n        var res = targetBuffer.get(key.toString());\n        return res;\n      },\n      set: function set(targetBuffer, key, value /*, receiver*/) {\n        targetBuffer.set(key.toString(), value);\n        return true;\n      }\n    });\n  }\n  var ChangesetKlass = _exports.default = /*#__PURE__*/_createClass(\n  /**\n   * Changeset factory\n   * TODO: deprecate in favor of factory function\n   *\n   * @class ChangesetKlass\n   * @constructor\n   */\n  function ChangesetKlass(obj) {\n    var validateFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultValidatorFn;\n    var validationMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    _classCallCheck(this, ChangesetKlass);\n    var c = changeset(obj, validateFn, validationMap, options);\n    return new Proxy(c, {\n      get: function get(targetBuffer, key /*, receiver*/) {\n        var res = targetBuffer.get(key.toString());\n        return res;\n      },\n      set: function set(targetBuffer, key, value /*, receiver*/) {\n        targetBuffer.set(key.toString(), value);\n        return true;\n      }\n    });\n  });\n});","define(\"ember-changeset/utils/is-object\", [\"exports\", \"@ember/array\"], function (_exports, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isObject;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\"eaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  /**\n   * Employ Ember strategies for isObject detection\n   * @method isObject\n   */\n  function isObject(val) {\n    return val !== null && _typeof(val) === 'object' && !(val instanceof Date || val instanceof RegExp) && !(0, _array.isArray)(val);\n  }\n});","define(\"ember-changeset/utils/merge-deep\", [\"exports\", \"validated-changeset\"], function (_exports, _validatedChangeset) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = mergeDeep;\n  0; //eaimeta@70e063a35619d71f0,\"validated-changeset\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function isMergeableObject(value) {\n    return isNonNullObject(value) && !isSpecial(value);\n  }\n  function isNonNullObject(value) {\n    return !!value && _typeof(value) === 'object' && value !== null;\n  }\n  function isSpecial(value) {\n    var stringValue = Object.prototype.toString.call(value);\n    return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n  }\n\n  // Reconsider when enumerable symbols are removed - https://github.com/emberjs/ember.js/commit/ef0e277533b3eab01e58d68b79d7e37d8b11ee34\n  // function getEnumerableOwnPropertySymbols(target) {\n  //   return Object.getOwnPropertySymbols\n  //     ? Object.getOwnPropertySymbols(target).filter(symbol => {\n  //       return Object.prototype.propertyIsEnumerable.call(target, symbol)\n  //     })\n  //     : [];\n  // }\n\n  function getKeys(target) {\n    return Object.keys(target);\n    // .concat(getEnumerableOwnPropertySymbols(target))\n  }\n  function propertyIsOnObject(object, property) {\n    try {\n      return property in object;\n    } catch (_) {\n      return false;\n    }\n  }\n\n  // Ember Data models don't respond as expected to foo.hasOwnProperty, so we do a special check\n  function hasEmberDataProperty(target, key, options) {\n    var fields = options.safeGet(target, 'constructor.fields');\n    return fields instanceof Map && fields.has(key);\n  }\n\n  // Protects from prototype poisoning and unexpected merging up the prototype chain.\n  function propertyIsUnsafe(target, key, options) {\n    if (hasEmberDataProperty(target, key, options)) {\n      return false;\n    }\n    return propertyIsOnObject(target, key) &&\n    // Properties are safe to merge if they don't exist in the target yet,\n    !(Object.prototype.hasOwnProperty.call(target, key) && Object.prototype.propertyIsEnumerable.call(target, key) // unsafe if they exist up the prototype chain,\n    ); // and also unsafe if they're nonenumerable.\n  }\n\n  /**\n   * DFS - traverse depth first until find object with `value`.  Then go back up tree and try on next key\n   * Need to exhaust all possible avenues.\n   *\n   * @method buildPathToValue\n   */\n  function buildPathToValue(source, options, kv, possibleKeys) {\n    Object.keys(source).forEach(function (key) {\n      var possible = source[key];\n      if (possible && (0, _validatedChangeset.isChange)(possible)) {\n        kv[[].concat(_toConsumableArray(possibleKeys), [key]).join('.')] = (0, _validatedChangeset.getChangeValue)(possible);\n        return;\n      }\n      if (possible && _typeof(possible) === 'object') {\n        buildPathToValue(possible, options, kv, [].concat(_toConsumableArray(possibleKeys), [key]));\n      }\n    });\n    return kv;\n  }\n\n  /**\n   * `source` will always have a leaf key `value` with the property we want to set\n   *\n   * @method mergeTargetAndSource\n   */\n  function mergeTargetAndSource(target, source, options) {\n    getKeys(source).forEach(function (key) {\n      // proto poisoning.  So can set by nested key path 'person.name'\n      if (propertyIsUnsafe(target, key, options)) {\n        // if safeSet, we will find keys leading up to value and set\n        if (options.safeSet) {\n          var kv = buildPathToValue(source, options, {}, []);\n          // each key will be a path nested to the value `person.name.other`\n          if (Object.keys(kv).length > 0) {\n            // we found some keys!\n            for (key in kv) {\n              var val = kv[key];\n              options.safeSet(target, key, val);\n            }\n          }\n        }\n        return;\n      }\n\n      // else safe key on object\n      if (propertyIsOnObject(target, key) && isMergeableObject(source[key]) && !(0, _validatedChangeset.isChange)(source[key])) {\n        options.safeSet(target, key, mergeDeep(options.safeGet(target, key), options.safeGet(source, key), options));\n      } else {\n        var next = source[key];\n        if ((0, _validatedChangeset.isChange)(next)) {\n          return options.safeSet(target, key, (0, _validatedChangeset.getChangeValue)(next));\n        }\n\n        // if just some normal leaf value, then set\n        return options.safeSet(target, key, (0, _validatedChangeset.normalizeObject)(next));\n      }\n    });\n    return target;\n  }\n\n  /**\n   * goal is to mutate target with source's properties, ensuring we dont encounter\n   * pitfalls of { ..., ... } spread syntax overwriting keys on objects that we merged\n   *\n   * This is also adjusted for Ember peculiarities.  Specifically `options.safeSet` will allows us\n   * to handle properties on Proxy objects (that aren't the target's own property)\n   *\n   * @method mergeDeep\n   */\n  function mergeDeep(target, source) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    options.safeGet = options.safeGet || function (obj, key) {\n      return obj[key];\n    };\n    options.safeSet = options.safeSet || function (obj, key, value) {\n      return obj[key] = value;\n    };\n    var sourceIsArray = Array.isArray(source);\n    var targetIsArray = Array.isArray(target);\n    var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n    if (!sourceAndTargetTypesMatch) {\n      var sourceIsArrayLike = (0, _validatedChangeset.isArrayObject)(source);\n      if (targetIsArray && sourceIsArrayLike) {\n        return (0, _validatedChangeset.objectToArray)(mergeTargetAndSource((0, _validatedChangeset.arrayToObject)(target), source, options));\n      }\n      return source;\n    } else if (sourceIsArray) {\n      return source;\n    } else if (target === null || target === undefined) {\n      /**\n       * If the target was set to null or undefined, we always want to return the source.\n       * There is nothing to merge.\n       *\n       * Without this explicit check, typeof null === typeof {any object-like thing}\n       * which means that mergeTargetAndSource will be called, and you can't merge with null\n       */\n      return source;\n    } else {\n      try {\n        return mergeTargetAndSource(target, source, options);\n      } catch (e) {\n        // this is very unlikely to be hit but lets throw an error otherwise\n        throw new Error('Unable to `mergeDeep` with your data. Are you trying to merge two ember-data objects? Please file an issue with ember-changeset.');\n      }\n    }\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-changeset/validated-changeset\", [\"exports\", \"@ember/debug\", \"@ember/object/compat\", \"validated-changeset\", \"@ember/array/proxy\", \"@ember/object/proxy\", \"@ember/object\", \"ember-changeset/utils/merge-deep\", \"ember-changeset/utils/is-object\", \"@glimmer/tracking\", \"@embroider/macros/es-compat2\"], function (_exports, _debug, _compat, _validatedChangeset, _proxy, _proxy2, _object, _mergeDeep, _isObject, _tracking, _esCompat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Changeset = Changeset;\n  _exports.EmberValidationChangeset = void 0;\n  _exports.buildOldValues = buildOldValues;\n  _exports.changeset = changeset;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember/object/compat\",0,\"validated-changeset\",0,\"@ember/array/proxy\",0,\"@ember/object/proxy\",0,\"@ember/object\",0,\"ember-changeset/utils/merge-deep\",0,\"ember-changeset/utils/is-object\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@embroider/macros\",0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var CHANGES = '_changes';\n  var PREVIOUS_CONTENT = '_previousContent';\n  var CONTENT = '_content';\n  function buildOldValues(content, changes, getDeep) {\n    var obj = Object.create(null);\n    var _iterator = _createForOfIteratorHelper(changes),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var change = _step.value;\n        obj[change.key] = getDeep(content, change.key);\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n    return obj;\n  }\n  function isProxy(o) {\n    return !!(o && (o instanceof _proxy2.default || o instanceof _proxy.default));\n  }\n  function maybeUnwrapProxy(o) {\n    return isProxy(o) ? maybeUnwrapProxy((0, _object.get)(o, 'content')) : o;\n  }\n  var Model;\n  {\n    Model = (0, _esCompat.default)(require(\"@ember-data/model\")).default;\n  }\n  var EmberValidationChangeset = _exports.EmberValidationChangeset = (_class = /*#__PURE__*/function (_ValidationChangeset) {\n    function EmberValidationChangeset() {\n      var _this;\n      _classCallCheck(this, EmberValidationChangeset);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, EmberValidationChangeset, [].concat(args));\n      _initializerDefineProperty(_this, \"_changes\", _descriptor, _this);\n      _initializerDefineProperty(_this, \"_errors\", _descriptor2, _this);\n      _initializerDefineProperty(_this, \"_content\", _descriptor3, _this);\n      _defineProperty(_this, \"isObject\", _isObject.default);\n      _defineProperty(_this, \"maybeUnwrapProxy\", maybeUnwrapProxy);\n      // DO NOT override setDeep. Ember.set does not work wth empty hash and nested\n      // key Ember.set({}, 'user.name', 'foo');\n      // override base class\n      // DO NOT override setDeep. Ember.set does not work with Ember.set({}, 'user.name', 'foo');\n      _defineProperty(_this, \"getDeep\", _object.get);\n      _defineProperty(_this, \"mergeDeep\", _mergeDeep.default);\n      return _this;\n    }\n    _inherits(EmberValidationChangeset, _ValidationChangeset);\n    return _createClass(EmberValidationChangeset, [{\n      key: \"safeGet\",\n      value: function safeGet(obj, key) {\n        var _obj$relationshipFor;\n        if (Model && ((_obj$relationshipFor = obj.relationshipFor) === null || _obj$relationshipFor === void 0 || (_obj$relationshipFor = _obj$relationshipFor.call(obj, key)) === null || _obj$relationshipFor === void 0 || (_obj$relationshipFor = _obj$relationshipFor.meta) === null || _obj$relationshipFor === void 0 ? void 0 : _obj$relationshipFor.kind) == 'belongsTo') {\n          return obj.belongsTo(key).value();\n        }\n        return (0, _object.get)(obj, key);\n      }\n    }, {\n      key: \"safeSet\",\n      value: function safeSet(obj, key, value) {\n        return (0, _object.set)(obj, key, value);\n      }\n\n      /**\n       * @property isValid\n       * @type {Array}\n       */\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return _superPropGet(EmberValidationChangeset, \"isValid\", this, 1);\n      }\n\n      /**\n       * @property isInvalid\n       * @type {Boolean}\n       */\n    }, {\n      key: \"isInvalid\",\n      get: function get() {\n        return _superPropGet(EmberValidationChangeset, \"isInvalid\", this, 1);\n      }\n\n      /**\n       * @property isPristine\n       * @type {Boolean}\n       */\n    }, {\n      key: \"isPristine\",\n      get: function get() {\n        return _superPropGet(EmberValidationChangeset, \"isPristine\", this, 1);\n      }\n\n      /**\n       * @property isDirty\n       * @type {Boolean}\n       */\n    }, {\n      key: \"isDirty\",\n      get: function get() {\n        return _superPropGet(EmberValidationChangeset, \"isDirty\", this, 1);\n      }\n    }, {\n      key: \"pendingData\",\n      get: function get() {\n        var content = this[CONTENT];\n        var changes = this[CHANGES];\n        var pendingChanges = this.mergeDeep(Object.create(Object.getPrototypeOf(content)), content, {\n          safeGet: _object.get,\n          safeSet: _object.set\n        });\n        return this.mergeDeep(pendingChanges, changes, {\n          safeGet: _object.get,\n          safeSet: _object.set\n        });\n      }\n\n      /**\n       * Manually add an error to the changeset. If there is an existing\n       * error or change for `key`, it will be overwritten.\n       *\n       * @method addError\n       */\n    }, {\n      key: \"addError\",\n      value: function addError(key, error) {\n        _superPropGet(EmberValidationChangeset, \"addError\", this, 3)([key, error]);\n        (0, _object.notifyPropertyChange)(this, key);\n        // Return passed-in `error`.\n        return error;\n      }\n\n      /**\n       * Manually push multiple errors to the changeset as an array.\n       *\n       * @method pushErrors\n       */\n    }, {\n      key: \"pushErrors\",\n      value: function pushErrors(key) {\n        for (var _len2 = arguments.length, newErrors = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          newErrors[_key2 - 1] = arguments[_key2];\n        }\n        var _superPropGet2 = _superPropGet(EmberValidationChangeset, \"pushErrors\", this, 3)([key].concat(newErrors)),\n          value = _superPropGet2.value,\n          validation = _superPropGet2.validation;\n        (0, _object.notifyPropertyChange)(this, key);\n        return {\n          value: value,\n          validation: validation\n        };\n      }\n\n      /**\n       * Sets property or error on the changeset.\n       * Returns value or error\n       */\n    }, {\n      key: \"_setProperty\",\n      value: function _setProperty(_ref) {\n        var key = _ref.key,\n          value = _ref.value,\n          oldValue = _ref.oldValue;\n        _superPropGet(EmberValidationChangeset, \"_setProperty\", this, 3)([{\n          key: key,\n          value: value,\n          oldValue: oldValue\n        }]);\n        (0, _object.notifyPropertyChange)(this, key);\n      }\n\n      /**\n       * Notifies virtual properties set on the changeset of a change.\n       * You can specify which keys are notified by passing in an array.\n       *\n       * @private\n       * @param {Array} keys\n       * @return {Void}\n       */\n    }, {\n      key: \"_notifyVirtualProperties\",\n      value: function _notifyVirtualProperties(keys) {\n        var _this2 = this;\n        keys = _superPropGet(EmberValidationChangeset, \"_notifyVirtualProperties\", this, 3)([keys]);\n        (keys || []).forEach(function (key) {\n          return (0, _object.notifyPropertyChange)(_this2, key);\n        });\n        return;\n      }\n\n      /**\n       * Deletes a key off an object and notifies observers.\n       */\n    }, {\n      key: \"_deleteKey\",\n      value: function _deleteKey(objName) {\n        var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n        var result = _superPropGet(EmberValidationChangeset, \"_deleteKey\", this, 3)([objName, key]);\n        (0, _object.notifyPropertyChange)(this, key);\n        return result;\n      }\n\n      /**\n       * Executes the changeset if in a valid state.\n       *\n       * @method execute\n       */\n    }, {\n      key: \"execute\",\n      value: function execute() {\n        var oldContent;\n        if (this.isValid && this.isDirty) {\n          var content = this[CONTENT];\n          var changes = this[CHANGES];\n\n          // keep old values in case of error and we want to rollback\n          oldContent = buildOldValues(content, (0, _validatedChangeset.getKeyValues)(changes), this.getDeep);\n\n          // we want mutation on original object\n          // @tracked\n          this[CONTENT] = this.mergeDeep(content, changes, {\n            safeGet: _object.get,\n            safeSet: _object.set\n          });\n        }\n        this[PREVIOUS_CONTENT] = oldContent;\n        return this;\n      }\n    }]);\n  }(_validatedChangeset.ValidationChangeset), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_changes\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"_errors\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"_content\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"isValid\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isValid\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"isInvalid\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isInvalid\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"isPristine\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isPristine\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"isDirty\", [_compat.dependentKeyCompat], Object.getOwnPropertyDescriptor(_class.prototype, \"isDirty\"), _class.prototype), _class);\n  /**\n   * Creates new changesets.\n   */\n  function changeset(obj) {\n    (true && !(Boolean(obj)) && (0, _debug.assert)('Underlying object for changeset is missing', Boolean(obj)));\n    (true && !(!Array.isArray(obj)) && (0, _debug.assert)('Array is not a valid type to pass as the first argument to `changeset`', !Array.isArray(obj)));\n    var c = new EmberValidationChangeset(obj);\n    return c;\n  }\n\n  /**\n   * Creates new changesets.\n   * @function Changeset\n   */\n  function Changeset(obj) {\n    var c = changeset(obj);\n    return new Proxy(c, {\n      get: function get(targetBuffer, key /*, receiver*/) {\n        var res = targetBuffer.get(key.toString());\n        return res;\n      },\n      set: function set(targetBuffer, key, value /*, receiver*/) {\n        targetBuffer.set(key.toString(), value);\n        return true;\n      }\n    });\n  }\n});","define(\"ember-cli-app-version/initializer-factory\", [\"exports\", \"@ember/-internals/metal\"], function (_exports, _metal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = initializerFactory;\n  function initializerFactory(name, version) {\n    var registered = false;\n    return function () {\n      if (!registered && name && version) {\n        _metal.libraries.register(name, version);\n        registered = true;\n      }\n    };\n  }\n});","define(\"ember-cli-app-version/utils/regexp\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.versionRegExp = _exports.versionExtendedRegExp = _exports.shaRegExp = void 0;\n  var versionRegExp = _exports.versionRegExp = /\\d+[.]\\d+[.]\\d+/; // Match any number of 3 sections of digits separated by .\n  var versionExtendedRegExp = _exports.versionExtendedRegExp = /\\d+[.]\\d+[.]\\d+-[a-z]*([.]\\d+)?/; // Match the above but also hyphen followed by any number of lowercase letters, then optionally period and digits\n  var shaRegExp = _exports.shaRegExp = /[a-z\\d]{8}$/; // Match 8 lowercase letters and digits, at the end of the string only (to avoid matching with version extended part)\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-cli-pagination/components/page-numbers\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/object/computed\", \"ember-cli-pagination/util\", \"ember-cli-pagination/lib/page-items\", \"ember-cli-pagination/validate\", \"ember-cli-pagination/components/page-numbers\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _computed, _util, _pageItems, _validate, _pageNumbers, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/object/computed\",0,\"ember-cli-pagination/util\",0,\"ember-cli-pagination/lib/page-items\",0,\"ember-cli-pagination/validate\",0,\"ember-cli-pagination/components/page-numbers\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class='pagination-centered'>\n    <ul class='pagination'>\n      {{#if this.canStepBackward}}\n        <li class='page-item arrow prev enabled-arrow'>\n          <a\n            href='#'\n            {{on 'click' (fn this.incrementPage -1)}}\n            class='page-link'\n          >&laquo;</a>\n        </li>\n      {{else}}\n        <li class='page-item arrow prev disabled'>\n          <a\n            href='#'\n            {{on 'click' (fn this.incrementPage -1)}}\n            class='page-link'\n          >&laquo;</a>\n        </li>\n      {{/if}}\n  \n      {{#each this.pageItems as |item|}}\n        {{#if item.dots}}\n          <li class='page-item dots disabled'>\n            <span>...</span>\n          </li>\n        {{/if}}\n        {{#if item.current}}\n          <li class='page-item active page-number'>\n            <a href='#' class='page-link'>{{item.page}}</a>\n          </li>\n        {{else}}\n          <li class='page-item page-number'>\n            <a\n              href='#'\n              {{on 'click' (fn this.pageClicked item.page)}}\n              class='page-link'\n            >{{item.page}}</a>\n          </li>\n        {{/if}}\n      {{/each}}\n  \n      {{#if this.canStepForward}}\n        <li class='page-item arrow next enabled-arrow'>\n          <a\n            href='#'\n            {{on 'click' (fn this.incrementPage 1)}}\n            class='page-link'\n          >&raquo;</a>\n        </li>\n      {{else}}\n        <li class='page-item arrow next disabled'>\n          <a\n            href='#'\n            {{on 'click' (fn this.incrementPage 1)}}\n            class='page-link'\n          >&raquo;</a>\n        </li>\n      {{/if}}\n    </ul>\n  </div>\n  */\n  {\n    \"id\": \"mVeoa8G6\",\n    \"block\": \"[[[10,0],[14,0,\\\"pagination-centered\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"ul\\\"],[14,0,\\\"pagination\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canStepBackward\\\"]],[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item arrow prev enabled-arrow\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"page-link\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0,[\\\"incrementPage\\\"]],-1],null]],null],[12],[1,\\\"«\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item arrow prev disabled\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"page-link\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0,[\\\"incrementPage\\\"]],-1],null]],null],[12],[1,\\\"«\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"pageItems\\\"]]],null]],null],null,[[[41,[30,1,[\\\"dots\\\"]],[[[1,\\\"        \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item dots disabled\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[1,\\\"...\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"current\\\"]],[[[1,\\\"        \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item active page-number\\\"],[12],[1,\\\"\\\\n          \\\"],[10,3],[14,6,\\\"#\\\"],[14,0,\\\"page-link\\\"],[12],[1,[30,1,[\\\"page\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item page-number\\\"],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"page-link\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0,[\\\"pageClicked\\\"]],[30,1,[\\\"page\\\"]]],null]],null],[12],[1,[30,1,[\\\"page\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[1]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canStepForward\\\"]],[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item arrow next enabled-arrow\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"page-link\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0,[\\\"incrementPage\\\"]],1],null]],null],[12],[1,\\\"»\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,0,\\\"page-item arrow next disabled\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"page-link\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0,[\\\"incrementPage\\\"]],1],null]],null],[12],[1,\\\"»\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"item\\\"],false,[\\\"div\\\",\\\"ul\\\",\\\"if\\\",\\\"li\\\",\\\"a\\\",\\\"on\\\",\\\"fn\\\",\\\"each\\\",\\\"-track-array\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"ember-cli-pagination/components/page-numbers.hbs\",\n    \"isStrictMode\": false\n  });\n  var PageNumbersComponent = _exports.default = (_dec = (0, _computed.alias)('args.content.page'), _dec2 = (0, _computed.alias)('args.content.totalPages'), _class = /*#__PURE__*/function (_Component) {\n    function PageNumbersComponent() {\n      var _this;\n      _classCallCheck(this, PageNumbersComponent);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, PageNumbersComponent, [].concat(args));\n      _defineProperty(_this, \"layout\", '');\n      _initializerDefineProperty(_this, \"currentPage\", _descriptor, _this);\n      _initializerDefineProperty(_this, \"totalPages\", _descriptor2, _this);\n      _defineProperty(_this, \"truncatePages\", true);\n      _defineProperty(_this, \"numPagesToShow\", 10);\n      return _this;\n    }\n    _inherits(PageNumbersComponent, _Component);\n    return _createClass(PageNumbersComponent, [{\n      key: \"hasPages\",\n      get: function get() {\n        if (this.totalpages > 1) {\n          return true;\n        }\n        return false;\n      }\n    }, {\n      key: \"watchInvalidPage\",\n      value: function watchInvalidPage() {\n        var _this2 = this;\n        var c = this.args.content;\n        if (c && c.on) {\n          c.on('invalidPage', function (e) {\n            _this2._runAction('invalidPageAction', e);\n          });\n        }\n      }\n\n      // only run if a closure action has been passed\n    }, {\n      key: \"_runAction\",\n      value: function _runAction(key) {\n        var action = (0, _object.get)(this, key);\n        if (typeof action === 'function') {\n          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n          action.apply(void 0, args);\n        }\n      }\n    }, {\n      key: \"validate\",\n      value: function validate() {\n        if (_util.default.isBlank(this.currentPage)) {\n          _validate.default.internalError('no currentPage for page-numbers');\n        }\n        if (_util.default.isBlank(this.totalPages)) {\n          _validate.default.internalError('no totalPages for page-numbers');\n        }\n      }\n    }, {\n      key: \"pageItemsObj\",\n      get: function get() {\n        var result = _pageItems.default.create({\n          parent: this\n        });\n        (0, _object.defineProperty)(result, 'currentPage', (0, _computed.alias)('parent.currentPage'));\n        (0, _object.defineProperty)(result, 'totalPages', (0, _computed.alias)('parent.totalPages'));\n        (0, _object.defineProperty)(result, 'truncatePages', (0, _computed.alias)('parent.truncatePages'));\n        (0, _object.defineProperty)(result, 'numPagesToShow', (0, _computed.alias)('parent.numPagesToShow'));\n        (0, _object.defineProperty)(result, 'showFL', (0, _computed.alias)('parent.showFL'));\n        return result;\n      }\n    }, {\n      key: \"pageItems\",\n      get: function get() {\n        this.validate();\n        return this.pageItemsObj.pageItems;\n      }\n    }, {\n      key: \"canStepForward\",\n      get: function get() {\n        var page = Number(this.currentPage);\n        var totalPages = Number(this.totalPages);\n        return page < totalPages;\n      }\n    }, {\n      key: \"canStepBackward\",\n      get: function get() {\n        var page = Number(this.currentPage);\n        return page > 1;\n      }\n    }, {\n      key: \"pageClicked\",\n      value: function pageClicked(number) {\n        _util.default.log('PageNumbers#pageClicked number ' + number);\n        this.currentPage = number;\n        this._runAction('action', number);\n      }\n    }, {\n      key: \"incrementPage\",\n      value: function incrementPage(num) {\n        var currentPage = Number(this.currentPage),\n          totalPages = Number(this.totalPages);\n        if (currentPage === totalPages && num === 1) {\n          return false;\n        }\n        if (currentPage <= 1 && num === -1) {\n          return false;\n        }\n        this.currentPage = this.currentPage + num;\n        var newPage = this.currentPage;\n        this._runAction('action', newPage);\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"currentPage\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"totalPages\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"pageClicked\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"pageClicked\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"incrementPage\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"incrementPage\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PageNumbersComponent);\n});","define(\"ember-cli-pagination/computed/paged-array\", [\"exports\", \"@ember/array\", \"@ember/object/computed\", \"@ember/object\", \"ember\", \"ember-cli-pagination/local/paged-array\", \"ember-cli-pagination/infinite/paged-infinite-array\"], function (_exports, _array, _computed, _object, _ember, _pagedArray, _pagedInfiniteArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/object/computed\",0,\"@ember/object\",0,\"ember\",0,\"ember-cli-pagination/local/paged-array\",0,\"ember-cli-pagination/infinite/paged-infinite-array\"eaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function makeLocal(contentProperty, ops) {\n    return (0, _object.computed)('', function () {\n      var instanceOpts = {\n        parent: this\n      };\n      var classOpts = {\n        content: (0, _computed.alias)('parent.' + contentProperty)\n      };\n\n      // update the old binding method to the new alias method\n      // converts {pageBinding: 'page'} to {page: Ember.computed.alias('parent.page')}\n      for (var key in ops) {\n        if (ops.hasOwnProperty(key)) {\n          var _alias = key.replace(/Binding$/, '');\n          var value = ops[key];\n          if (_alias !== key) {\n            //          pagedOps[alias] = Ember.computed.alias('parent.' + value);\n            classOpts[_alias] = _alias('parent.' + value);\n            _ember.default.deprecate('Using Binding is deprecated, use Ember.computed.alias or Ember.computed.oneWay instead', false, {\n              id: 'addon.ember-cli-pagination.paged-array',\n              until: '3.0.0',\n              url: 'http://emberjs.com/deprecations/v2.x#toc_ember-binding' // @TODO change this to our changelog entry\n            });\n            // ^ deprecation warning based off of https://github.com/emberjs/ember.js/pull/13920/files\n          } else {\n            if ((0, _array.isArray)(value) || _typeof(value) == 'object' && (!value || typeof value.get !== 'function')) {\n              instanceOpts[key] = value;\n            } else {\n              classOpts[key] = value;\n            }\n          }\n        }\n      }\n      var paged = _pagedArray.default.extend(classOpts).create(instanceOpts);\n\n      // paged.lockToRange();\n      return paged;\n    });\n  }\n  function makeInfiniteWithPagedSource(contentProperty /*, ops */) {\n    return (0, _object.computed)(contentProperty, function () {\n      return _pagedInfiniteArray.default.create({\n        all: this.get(contentProperty)\n      });\n    });\n  }\n  function makeInfiniteWithUnpagedSource(contentProperty, ops) {\n    return (0, _object.computed)(contentProperty, function () {\n      var all = this.get(contentProperty);\n      if (all) {\n        all = (0, _array.A)(all);\n      }\n      ops.all = all;\n      return _pagedInfiniteArray.default.createFromUnpaged(ops);\n    });\n  }\n  function _default(contentProperty, ops) {\n    ops = ops || {};\n    if (ops.infinite === true) {\n      return makeInfiniteWithPagedSource(contentProperty, ops);\n    } else if (ops.infinite) {\n      return makeInfiniteWithUnpagedSource(contentProperty, ops);\n    } else {\n      return makeLocal(contentProperty, ops);\n    }\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-cli-pagination/divide-into-pages\", [\"exports\", \"@ember/array\", \"@ember/object\"], function (_exports, _array, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var DivideIntoPages = _exports.default = /*#__PURE__*/function (_EmberObject) {\n    function DivideIntoPages() {\n      _classCallCheck(this, DivideIntoPages);\n      return _callSuper(this, DivideIntoPages, arguments);\n    }\n    _inherits(DivideIntoPages, _EmberObject);\n    return _createClass(DivideIntoPages, [{\n      key: \"objsForPage\",\n      value: function objsForPage(page) {\n        var range = this.range(page);\n        var all = (0, _array.A)(this.all);\n        return (0, _array.A)(all.slice(range.start, range.end + 1));\n      }\n    }, {\n      key: \"totalPages\",\n      value: function totalPages() {\n        var allLength = parseInt(this.get('all.length'));\n        var perPage = parseInt(this.perPage);\n        return Math.ceil(allLength / perPage);\n      }\n    }, {\n      key: \"range\",\n      value: function range(page) {\n        var perPage = parseInt(this.perPage);\n        var s = (parseInt(page) - 1) * perPage;\n        var e = s + perPage - 1;\n        return {\n          start: s,\n          end: e\n        };\n      }\n    }]);\n  }(_object.default);\n});","define(\"ember-cli-pagination/factory\", [\"exports\", \"@ember/object\", \"ember-cli-pagination/remote/controller-mixin\", \"ember-cli-pagination/local/controller-local-mixin\", \"ember-cli-pagination/remote/route-mixin\", \"ember-cli-pagination/local/route-local-mixin\"], function (_exports, _object, _controllerMixin, _controllerLocalMixin, _routeMixin, _routeLocalMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-cli-pagination/remote/controller-mixin\",0,\"ember-cli-pagination/local/controller-local-mixin\",0,\"ember-cli-pagination/remote/route-mixin\",0,\"ember-cli-pagination/local/route-local-mixin\"eaimeta@70e063a35619d71f\n  var Factory = _object.default.extend({\n    paginationTypeInner: function paginationTypeInner() {\n      var res = this.config.paginationType;\n      if (res) {\n        return res;\n      }\n      var ops = this.config.pagination;\n      if (ops) {\n        return ops.type;\n      }\n      return null;\n    },\n    paginationType: function paginationType() {\n      var res = this.paginationTypeInner();\n      if (!(res === 'local' || res === 'remote')) {\n        throw 'unknown pagination type';\n      }\n      return res;\n    },\n    controllerMixin: function controllerMixin() {\n      return {\n        local: _controllerLocalMixin.default,\n        remote: _controllerMixin.default\n      }[this.paginationType()];\n    },\n    routeMixin: function routeMixin() {\n      return {\n        local: _routeLocalMixin.default,\n        remote: _routeMixin.default\n      }[this.paginationType()];\n    }\n  });\n  Factory.reopenClass({\n    controllerMixin: function controllerMixin(config) {\n      return Factory.create({\n        config: config\n      }).controllerMixin();\n    },\n    routeMixin: function routeMixin(config) {\n      return Factory.create({\n        config: config\n      }).routeMixin();\n    }\n  });\n  var _default = _exports.default = Factory;\n});","define(\"ember-cli-pagination/infinite/paged-infinite-array\", [\"exports\", \"@ember/array\", \"@ember/object/computed\", \"@ember/array/proxy\", \"ember-cli-pagination/local/paged-array\"], function (_exports, _array, _computed, _proxy, _pagedArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/object/computed\",0,\"@ember/array/proxy\",0,\"ember-cli-pagination/local/paged-array\"eaimeta@70e063a35619d71f\n  // import PagedRemoteArray from 'ember-cli-pagination/remote/paged-remote-array';\n\n  var toArray = function toArray(a) {\n    var res = [];\n    if (a.forEach) {\n      a.forEach(function (obj) {\n        res.push(obj);\n      });\n    } else {\n      res = a;\n    }\n    return res;\n  };\n  var pushPromiseObjects = function pushPromiseObjects(base, promise) {\n    if (!base) {\n      throw 'pushPromiseObjects no base';\n    }\n    if (!promise) {\n      throw 'pushPromiseObjects no promise';\n    }\n    if (!promise.then) {\n      throw 'pushPromiseObjects no promise.then';\n    }\n    if (!base.pushObjects) {\n      throw 'pushPromiseObjects no base.pushObjects';\n    }\n    promise.then(function (r) {\n      base.pushObjects(toArray(r));\n    });\n    return promise;\n  };\n  var InfiniteBase = _proxy.default.extend({\n    page: 1,\n    arrangedContent: (0, _computed.reads)('content'),\n    init: function init() {\n      this.set('content', (0, _array.A)([]));\n      this._super.apply(this, arguments);\n      this.addRecordsForPage(1);\n    },\n    loadNextPage: function loadNextPage() {\n      this.incrementProperty('page');\n      var page = this.page;\n      return this.addRecordsForPage(page);\n    },\n    addRecordsForPage: function addRecordsForPage(page) {\n      var arr = this.getRecordsForPage(page);\n      return pushPromiseObjects(this.content, arr);\n    },\n    getRecordsForPage: function getRecordsForPage(/* page */\n    ) {\n      throw 'Not Implemented';\n    }\n  });\n  var c = InfiniteBase.extend({\n    getRecordsForPage: function getRecordsForPage(page) {\n      var c = this.all;\n      c.set('page', page);\n      return c;\n    },\n    then: function then(f, f2) {\n      return this.all.then(f, f2);\n    }\n  });\n  c.reopenClass({\n    createFromUnpaged: function createFromUnpaged(ops) {\n      var unpaged = (0, _array.A)(ops.all);\n      var perPage = ops.perPage || 10;\n      var paged = _pagedArray.default.create({\n        perPage: perPage,\n        content: unpaged\n      });\n      return this.create({\n        all: paged\n      });\n    }\n  });\n  var _default = _exports.default = c;\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-cli-pagination/lib/page-items\", [\"exports\", \"@ember/array\", \"@ember/object\", \"ember-cli-pagination/util\", \"ember-cli-pagination/lib/truncate-pages\", \"ember-cli-pagination/util/safe-get\"], function (_exports, _array, _object, _util, _truncatePages, _safeGet) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/object\",0,\"ember-cli-pagination/util\",0,\"ember-cli-pagination/lib/truncate-pages\",0,\"ember-cli-pagination/util/safe-get\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var PageItemsObject = _exports.default = /*#__PURE__*/function (_EmberObject$extend) {\n    function PageItemsObject() {\n      _classCallCheck(this, PageItemsObject);\n      return _callSuper(this, PageItemsObject, arguments);\n    }\n    _inherits(PageItemsObject, _EmberObject$extend);\n    return _createClass(PageItemsObject, [{\n      key: \"pageItemsAll\",\n      get: function get() {\n        var currentPage = this.getInt('currentPage');\n        var totalPages = this.getInt('totalPages');\n        _util.default.log(\"PageNumbers#pageItems, currentPage \".concat(currentPage, \", totalPages \").concat(totalPages));\n        var res = (0, _array.A)([]);\n        for (var i = 1; i <= totalPages; i++) {\n          res.push({\n            page: i,\n            current: currentPage === i,\n            dots: false\n          });\n        }\n        return res;\n      }\n    }, {\n      key: \"pageItemsTruncated\",\n      get: function get() {\n        var currentPage = this.getInt('currentPage');\n        var totalPages = this.getInt('totalPages');\n        var toShow = this.getInt('numPagesToShow');\n        var showFL = this.showFL;\n        var t = _truncatePages.default.create({\n          currentPage: currentPage,\n          totalPages: totalPages,\n          numPagesToShow: toShow,\n          showFL: showFL\n        });\n        var pages = t.get('pagesToShow');\n        var next = pages[0];\n        return pages.map(function (page) {\n          var h = {\n            page: page,\n            current: currentPage === page,\n            dots: next !== page\n          };\n          next = page + 1;\n          return h;\n        });\n      }\n    }, {\n      key: \"pageItems\",\n      get: function get() {\n        if (this.truncatePages) {\n          return this.pageItemsTruncated;\n        } else {\n          return this.pageItemsAll;\n        }\n      }\n    }]);\n  }(_object.default.extend(_safeGet.default));\n});","define(\"ember-cli-pagination/lib/truncate-pages\", [\"exports\", \"@ember/array\", \"@ember/object\", \"ember-cli-pagination/util/safe-get\"], function (_exports, _array, _object, _safeGet) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/object\",0,\"ember-cli-pagination/util/safe-get\"eaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var TruncatePagesObject = _exports.default = /*#__PURE__*/function (_EmberObject$extend) {\n    function TruncatePagesObject() {\n      var _this;\n      _classCallCheck(this, TruncatePagesObject);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, TruncatePagesObject, [].concat(args));\n      _defineProperty(_this, \"numPagesToShow\", 10);\n      _defineProperty(_this, \"showFL\", false);\n      _defineProperty(_this, \"currentPage\", null);\n      _defineProperty(_this, \"totalPages\", null);\n      return _this;\n    }\n    _inherits(TruncatePagesObject, _EmberObject$extend);\n    return _createClass(TruncatePagesObject, [{\n      key: \"isValidPage\",\n      value: function isValidPage(page) {\n        page = parseInt(page);\n        var totalPages = this.getInt('totalPages');\n        return page > 0 && page <= totalPages;\n      }\n    }, {\n      key: \"pagesToShow\",\n      get: function get() {\n        var res = [];\n        var numPages = this.getInt('numPagesToShow');\n        var currentPage = this.getInt('currentPage');\n        var totalPages = this.getInt('totalPages');\n        var showFL = this.showFL;\n        var before = parseInt(numPages / 2);\n        if (currentPage - before < 1) {\n          before = currentPage - 1;\n        }\n        var after = numPages - before - 1;\n        if (totalPages - currentPage < after) {\n          after = totalPages - currentPage;\n          before = numPages - after - 1;\n        }\n\n        // add one page if no first or last is added\n        if (showFL) {\n          if (currentPage - before < 2) {\n            after++;\n          }\n          if (totalPages - currentPage - 1 < after) {\n            before++;\n          }\n        }\n\n        // add each prior page\n        for (var i = before; i > 0; i--) {\n          var possiblePage = currentPage - i;\n          if (this.isValidPage(possiblePage)) {\n            res.push(possiblePage);\n          }\n        }\n        res.push(currentPage);\n\n        // add each following page\n        for (i = 1; i <= after; i++) {\n          var possiblePage2 = currentPage + i;\n          if (this.isValidPage(possiblePage2)) {\n            res.push(possiblePage2);\n          }\n        }\n\n        // add first and last page\n        if (showFL) {\n          if (res.length > 0) {\n            // add first page if not already there\n            if (res[0] !== 1) {\n              res = [1].concat(res);\n            }\n\n            // add last page if not already there\n            if (res[res.length - 1] !== totalPages && totalPages !== 0) {\n              res.push(totalPages);\n            }\n          }\n        }\n        return (0, _array.A)(res);\n      }\n    }]);\n  }(_object.default.extend(_safeGet.default));\n});","define(\"ember-cli-pagination/local/controller-local-mixin\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _mixin.default.create({});\n});","define(\"ember-cli-pagination/local/paged-array\", [\"exports\", \"rsvp\", \"@ember/array\", \"@ember/object\", \"@ember/object/evented\", \"@ember/array/proxy\", \"ember-cli-pagination/util\", \"ember-cli-pagination/divide-into-pages\", \"ember-cli-pagination/watch/lock-to-range\"], function (_exports, _rsvp, _array, _object, _evented, _proxy, _util, _divideIntoPages, _lockToRange) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/array\",0,\"@ember/object\",0,\"@ember/object/evented\",0,\"@ember/array/proxy\",0,\"ember-cli-pagination/util\",0,\"ember-cli-pagination/divide-into-pages\",0,\"ember-cli-pagination/watch/lock-to-range\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _proxy.default.extend(_evented.default, {\n    page: 1,\n    perPage: 10,\n    divideObj: function divideObj() {\n      return _divideIntoPages.default.create({\n        perPage: this.perPage,\n        all: this.content\n      });\n    },\n    arrangedContent: (0, _object.computed)('content.[]', 'page', 'perPage', function () {\n      return this.divideObj().objsForPage(this.page);\n    }),\n    totalPages: (0, _object.computed)('content.[]', 'perPage', function () {\n      return this.divideObj().totalPages();\n    }),\n    setPage: function setPage(page) {\n      _util.default.log('setPage ' + page);\n      return this.set('page', page);\n    },\n    watchPage: (0, _object.observer)('page', 'totalPages', function () {\n      var page = this.page;\n      var totalPages = this.totalPages;\n      this.trigger('pageChanged', page);\n      if (page < 1 || page > totalPages) {\n        this.trigger('invalidPage', {\n          page: page,\n          totalPages: totalPages,\n          array: this\n        });\n      }\n    }),\n    then: function then(success, failure) {\n      var content = (0, _array.A)(this.content);\n      var me = this;\n      var promise;\n      if (content.then) {\n        promise = content.then(function () {\n          return success(me);\n        }, failure);\n      } else {\n        promise = new _rsvp.Promise(function (resolve) {\n          resolve(success(me));\n        });\n      }\n      return promise;\n    },\n    lockToRange: function lockToRange() {\n      _lockToRange.default.watch(this);\n    }\n  });\n});","define(\"ember-cli-pagination/local/route-local-mixin\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _mixin.default.create({\n    findPaged: function findPaged(name) {\n      return this.store.find(name);\n    }\n  });\n});","define(\"ember-cli-pagination/page-mixin\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _mixin.default.create({\n    getPage: function getPage() {\n      return parseInt(this.page || 1);\n    },\n    getPerPage: function getPerPage() {\n      return parseInt(this.perPage);\n    }\n  });\n});","define(\"ember-cli-pagination/remote/controller-mixin\", [\"exports\", \"@ember/object/computed\", \"@ember/object/mixin\"], function (_exports, _computed, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _mixin.default.create({\n    queryParams: ['page', 'perPage'],\n    page: (0, _computed.alias)('model.page'),\n    totalPages: (0, _computed.alias)('model.totalPages'),\n    pagedContent: (0, _computed.alias)('model')\n  });\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-cli-pagination/remote/mapping\", [\"exports\", \"@ember/object\", \"ember-cli-pagination/validate\", \"ember-cli-pagination/util\"], function (_exports, _object, _validate, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.QueryParamsForBackend = _exports.ChangeMeta = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-cli-pagination/validate\",0,\"ember-cli-pagination/util\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var QueryParamsForBackend = _exports.QueryParamsForBackend = /*#__PURE__*/function (_EmberObject) {\n    function QueryParamsForBackend() {\n      _classCallCheck(this, QueryParamsForBackend);\n      return _callSuper(this, QueryParamsForBackend, arguments);\n    }\n    _inherits(QueryParamsForBackend, _EmberObject);\n    return _createClass(QueryParamsForBackend, [{\n      key: \"defaultKeyFor\",\n      value: function defaultKeyFor(key) {\n        if (key === 'perPage') {\n          return 'per_page';\n        }\n        return null;\n      }\n    }, {\n      key: \"paramKeyFor\",\n      value: function paramKeyFor(key) {\n        return this.getSuppliedParamMapping(key) || this.defaultKeyFor(key) || key;\n      }\n    }, {\n      key: \"getSuppliedParamMapping\",\n      value: function getSuppliedParamMapping(key) {\n        var h = this.paramMapping || {};\n        return h[key];\n      }\n    }, {\n      key: \"accumParams\",\n      value: function accumParams(key, accum) {\n        var val = this.get(key);\n        var mappedKey = this.paramKeyFor(key);\n        if (Array.isArray(mappedKey)) {\n          this.accumParamsComplex(key, mappedKey, accum);\n        } else {\n          accum[mappedKey] = val;\n        }\n      }\n    }, {\n      key: \"accumParamsComplex\",\n      value: function accumParamsComplex(key, mapArr, accum) {\n        var mappedKey = mapArr[0];\n        var mapFunc = mapArr[1];\n        var val = mapFunc({\n          page: this.page,\n          perPage: this.perPage\n        });\n        accum[mappedKey] = val;\n      }\n    }, {\n      key: \"make\",\n      value: function make() {\n        var res = {};\n        this.accumParams('page', res);\n        this.accumParams('perPage', res);\n        return res;\n      }\n    }]);\n  }(_object.default);\n  var ChangeMeta = _exports.ChangeMeta = /*#__PURE__*/function (_EmberObject2) {\n    function ChangeMeta() {\n      _classCallCheck(this, ChangeMeta);\n      return _callSuper(this, ChangeMeta, arguments);\n    }\n    _inherits(ChangeMeta, _EmberObject2);\n    return _createClass(ChangeMeta, [{\n      key: \"getSuppliedParamMapping\",\n      value: function getSuppliedParamMapping(targetVal) {\n        var h = this.paramMapping || {};\n\n        // have to do this gross thing because mapping looks like this:\n        // {total_pages: ['num_pages',function() ...]}\n        //\n        // but the way the code works, we need to check for an entry where val[0] == num_pages\n        // and then return ['total_pages',function() ...]\n        //\n        // Gross, but that's how it's working for now\n        for (var key in h) {\n          var val = h[key];\n          if (targetVal === val) {\n            return key;\n          } else if (Array.isArray(val) && val[0] === targetVal) {\n            return [key, val[1]];\n          }\n        }\n        return null;\n      }\n    }, {\n      key: \"finalKeyFor\",\n      value: function finalKeyFor(key) {\n        return this.getSuppliedParamMapping(key) || key;\n      }\n    }, {\n      key: \"makeSingleComplex\",\n      value: function makeSingleComplex(key, mapArr, rawVal, accum) {\n        var mappedKey = mapArr[0];\n        var mapFunc = mapArr[1];\n        var ops = {\n          rawVal: rawVal,\n          page: this.page,\n          perPage: this.perPage\n        };\n        var mappedVal = mapFunc(ops);\n        accum[mappedKey] = mappedVal;\n      }\n    }, {\n      key: \"make\",\n      value: function make() {\n        var res = {};\n        var meta = this.meta;\n        for (var key in meta) {\n          var mappedKey = this.finalKeyFor(key);\n          var val = meta[key];\n          if (Array.isArray(mappedKey)) {\n            this.makeSingleComplex(key, mappedKey, val, res);\n          } else {\n            res[mappedKey] = val;\n          }\n        }\n        this.validate(res);\n        return res;\n      }\n    }, {\n      key: \"validate\",\n      value: function validate(meta) {\n        if (_util.default.isBlank(meta.total_pages)) {\n          _validate.default.internalError('no total_pages in meta response', meta);\n        }\n      }\n    }]);\n  }(_object.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-cli-pagination/remote/paged-remote-array\", [\"exports\", \"@ember/runloop\", \"@ember/object/computed\", \"@ember/object\", \"@ember/object/evented\", \"@ember/array/proxy\", \"@ember/object/promise-proxy-mixin\", \"@ember/object/mixin\", \"ember-cli-pagination/util\", \"ember-cli-pagination/watch/lock-to-range\", \"ember-cli-pagination/remote/mapping\", \"ember-cli-pagination/page-mixin\"], function (_exports, _runloop, _computed, _object, _evented, _proxy, _promiseProxyMixin, _mixin, _util, _lockToRange, _mapping, _pageMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/object/evented\",0,\"@ember/array/proxy\",0,\"@ember/object/promise-proxy-mixin\",0,\"@ember/object/mixin\",0,\"ember-cli-pagination/util\",0,\"ember-cli-pagination/watch/lock-to-range\",0,\"ember-cli-pagination/remote/mapping\",0,\"ember-cli-pagination/page-mixin\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var ArrayProxyPromiseMixin = _mixin.default.create(_promiseProxyMixin.default, {\n    then: function then(success, failure) {\n      var promise = this.promise;\n      var me = this;\n      return promise.then(function () {\n        return success(me);\n      }, failure);\n    }\n  });\n  var ExtendedArrayProxy = _proxy.default.extend(_pageMixin.default, _evented.default, ArrayProxyPromiseMixin);\n  var PagedRemoteArray = _exports.default = (_dec = (0, _computed.alias)('meta.total_pages'), _class = /*#__PURE__*/function (_ExtendedArrayProxy) {\n    function PagedRemoteArray() {\n      var _this;\n      _classCallCheck(this, PagedRemoteArray);\n      // this._super(...arguments);\n      _this = _callSuper(this, PagedRemoteArray);\n      _defineProperty(_this, \"page\", 1);\n      _defineProperty(_this, \"contentUpdated\", 0);\n      _initializerDefineProperty(_this, \"totalPages\", _descriptor, _this);\n      _defineProperty(_this, \"lastPage\", null);\n      var initCallback = _this.initCallback;\n      if (initCallback) {\n        initCallback(_this);\n      }\n      // Array observers are not working anymore\n      /*this.addArrayObserver({\n        arrayWillChange(me) {\n          me.trigger('contentWillChange');\n        },\n        arrayDidChange(me) {\n          me.incrementProperty('contentUpdated');\n          me.trigger('contentUpdated');\n        },\n      });*/\n\n      try {\n        _this.promise;\n      } catch (e) {\n        _this.set('promise', _this.fetchContent());\n      }\n      return _this;\n    }\n    _inherits(PagedRemoteArray, _ExtendedArrayProxy);\n    return _createClass(PagedRemoteArray, [{\n      key: \"paramMapping\",\n      get: function get() {\n        return {};\n      }\n    }, {\n      key: \"addParamMapping\",\n      value: function addParamMapping(key, mappedKey, mappingFunc) {\n        var paramMapping = this.paramMapping || {};\n        if (mappingFunc) {\n          paramMapping[key] = [mappedKey, mappingFunc];\n        } else {\n          paramMapping[key] = mappedKey;\n        }\n        this.set('paramMapping', paramMapping);\n        this.incrementProperty('paramsForBackendCounter');\n        //this.pageChanged();\n      }\n    }, {\n      key: \"addQueryParamMapping\",\n      value: function addQueryParamMapping(key, mappedKey, mappingFunc) {\n        return this.addParamMapping(key, mappedKey, mappingFunc);\n      }\n    }, {\n      key: \"addMetaResponseMapping\",\n      value: function addMetaResponseMapping(key, mappedKey, mappingFunc) {\n        return this.addParamMapping(key, mappedKey, mappingFunc);\n      }\n    }, {\n      key: \"paramsForBackend\",\n      value: function paramsForBackend() {\n        var page = this.getPage();\n        if (this.zeroBasedIndex) {\n          page--;\n        }\n        var paramsObj = _mapping.QueryParamsForBackend.create({\n          page: page,\n          perPage: this.getPerPage(),\n          paramMapping: this.paramMapping\n        });\n        var ops = paramsObj.make();\n\n        // take the otherParams hash and add the values at the same level as page/perPage\n        ops = _util.default.mergeHashes(ops, this.otherParams || {});\n        return ops;\n      }\n    }, {\n      key: \"rawFindFromStore\",\n      value: function rawFindFromStore() {\n        // Store is not inherited anymore, this breaks the whole thing on ember 4\n\n        var store = this.store;\n        var modelName = this.modelName;\n        var ops = this.paramsForBackend;\n        var res = store.query(modelName, Object.assign({}, ops)); // always create a shallow copy of `ops` in case adapter would mutate the original object\n\n        return res;\n      }\n    }, {\n      key: \"fetchContent\",\n      value: function fetchContent() {\n        this.set('loading', true);\n        var res = this.rawFindFromStore();\n        this.incrementProperty('numRemoteCalls');\n        var me = this;\n        res.then(function (rows) {\n          var metaObj = _mapping.ChangeMeta.create({\n            paramMapping: me.get('paramMapping'),\n            meta: rows.meta,\n            page: me.getPage(),\n            perPage: me.getPerPage()\n          });\n          me.set('loading', false);\n          return me.set('meta', metaObj.make());\n        }, function (error) {\n          _util.default.log('PagedRemoteArray#fetchContent error ' + error);\n          me.set('loading', false);\n        });\n        return res;\n      }\n    }, {\n      key: \"pageChanged\",\n      get: function get() {\n        var page = this.page;\n        var lastPage = this.lastPage;\n        if (lastPage != page) {\n          this.set('lastPage', page);\n          this.set('promise', this.fetchContent());\n        }\n      }\n    }, {\n      key: \"lockToRange\",\n      value: function lockToRange() {\n        _lockToRange.default.watch(this);\n      }\n    }, {\n      key: \"watchPage\",\n      get: function get() {\n        var page = this.page;\n        var totalPages = this.totalPages;\n        if (parseInt(totalPages) <= 0) {\n          return;\n        }\n        this.trigger('pageChanged', page);\n        if (page < 1 || page > totalPages) {\n          this.trigger('invalidPage', {\n            page: page,\n            totalPages: totalPages,\n            array: this\n          });\n        }\n      }\n    }, {\n      key: \"reload\",\n      value: function reload() {\n        var promise = this.fetchContent();\n        this.set('promise', promise);\n        return promise;\n      }\n    }, {\n      key: \"setOtherParam\",\n      value: function setOtherParam(k, v) {\n        if (!this.otherParams) {\n          this.set('otherParams', {});\n        }\n        this.otherParams[k] = v;\n        this.incrementProperty('paramsForBackendCounter');\n        (0, _runloop.once)(this, 'pageChanged');\n      }\n    }]);\n  }(ExtendedArrayProxy), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"totalPages\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"ember-cli-pagination/remote/route-mixin\", [\"exports\", \"@ember/object/mixin\", \"ember-cli-pagination/remote/paged-remote-array\", \"ember-cli-pagination/util\", \"@ember/string\", \"ember-inflector\"], function (_exports, _mixin, _pagedRemoteArray, _util, _string, _emberInflector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\",0,\"ember-cli-pagination/remote/paged-remote-array\",0,\"ember-cli-pagination/util\",0,\"@ember/string\",0,\"ember-inflector\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _mixin.default.create({\n    perPage: 10,\n    startingPage: 1,\n    model: function model(params) {\n      return this.findPaged(this._findModelName(this.routeName), params);\n    },\n    _findModelName: function _findModelName(routeName) {\n      return (0, _emberInflector.singularize)((0, _string.camelize)(routeName));\n    },\n    findPaged: function findPaged(name, params, options, callback) {\n      var opt = options || {};\n      var mainOps = {\n        page: params.page || this.startingPage,\n        perPage: params.perPage || this.perPage,\n        modelName: name,\n        zeroBasedIndex: opt.zeroBasedIndex || false,\n        store: this.store\n      };\n      if (params.paramMapping) {\n        mainOps.paramMapping = params.paramMapping;\n      }\n      var otherOps = _util.default.paramsOtherThan(params, ['page', 'perPage', 'paramMapping', 'zeroBasedIndex']);\n      mainOps.otherParams = otherOps;\n      mainOps.initCallback = callback;\n      return _pagedRemoteArray.default.create(mainOps);\n    }\n  });\n});","define(\"ember-cli-pagination/test-helpers\", [\"exports\", \"@ember/object\", \"ember-cli-pagination/divide-into-pages\"], function (_exports, _object, _divideIntoPages) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"ember-cli-pagination/divide-into-pages\"eaimeta@70e063a35619d71f\n  var TestHelpers = _object.default.extend({\n    responseHash: function responseHash() {\n      var page = this.pageFromRequest(this.request);\n      var k = '' + this.name + 's';\n      var res = {};\n      res[k] = this.objsForPage(page);\n      res.meta = {\n        total_pages: this.totalPages()\n      };\n      return res;\n    },\n    divideObj: function divideObj() {\n      var perPage = this.perPageFromRequest(this.request);\n      return _divideIntoPages.default.create({\n        perPage: perPage,\n        all: this.all\n      });\n    },\n    objsForPage: function objsForPage(page) {\n      return this.divideObj().objsForPage(page);\n    },\n    pageFromRequest: function pageFromRequest(request) {\n      var res = request.queryParams.page;\n      return parseInt(res);\n    },\n    perPageFromRequest: function perPageFromRequest(request) {\n      var res = request.queryParams.per_page;\n      return parseInt(res);\n    },\n    totalPages: function totalPages() {\n      return this.divideObj().totalPages();\n    }\n  });\n  TestHelpers.reopenClass({\n    responseHash: function responseHash(request, all, name) {\n      return this.create({\n        request: request,\n        all: all,\n        name: name\n      }).responseHash();\n    }\n  });\n  var _default = _exports.default = TestHelpers;\n});","define(\"ember-cli-pagination/util\", [\"exports\", \"@ember/array\", \"@ember/object\"], function (_exports, _array, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  var Util = _object.default.extend();\n  Util.reopenClass({\n    log: function log() {},\n    isBlank: function isBlank(obj) {\n      if (obj === 0) {\n        return false;\n      }\n      return !obj || obj === '';\n    },\n    keysOtherThan: function keysOtherThan(params, excludeKeys) {\n      excludeKeys = (0, _array.A)(excludeKeys);\n      var res = [];\n      for (var key in params) {\n        if (!excludeKeys.includes(key)) {\n          res.push(key);\n        }\n      }\n      return res;\n    },\n    paramsOtherThan: function paramsOtherThan(params, excludeKeys) {\n      var res = {};\n      var keys = this.keysOtherThan(params, excludeKeys);\n      for (var i = 0; i < keys.length; i++) {\n        var key = keys[i];\n        var val = params[key];\n        res[key] = val;\n      }\n      return res;\n    },\n    mergeHashes: function mergeHashes(a, b) {\n      var res = {};\n      var val;\n      var key;\n      for (key in a) {\n        val = a[key];\n        res[key] = val;\n      }\n      for (key in b) {\n        val = b[key];\n        res[key] = val;\n      }\n      return res;\n    },\n    isFunction: function isFunction(obj) {\n      return typeof obj === 'function';\n    },\n    getHashKeyForValue: function getHashKeyForValue(hash, targetVal) {\n      for (var k in hash) {\n        var val = hash[k];\n        if (val === targetVal) {\n          return k;\n        } else if (Util.isFunction(targetVal) && targetVal(val)) {\n          return k;\n        }\n      }\n      return undefined;\n    }\n  });\n  var _default = _exports.default = Util;\n});","define(\"ember-cli-pagination/util/safe-get\", [\"exports\", \"ember-cli-pagination/validate\", \"ember-cli-pagination/util\"], function (_exports, _validate, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getInt = getInt;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-pagination/validate\",0,\"ember-cli-pagination/util\"eaimeta@70e063a35619d71f\n  function getInt(prop) {\n    var raw = this.get(prop);\n    if (raw === 0 || raw === '0') {\n      // do nothing\n    } else if (_util.default.isBlank(raw)) {\n      _validate.default.internalError('no int for ' + prop + ' val is ' + raw);\n    }\n    return parseInt(raw);\n  }\n});","define(\"ember-cli-pagination/validate\", [\"exports\", \"@ember/object\"], function (_exports, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\"eaimeta@70e063a35619d71f\n  var Validate = _object.default.extend();\n  Validate.reopenClass({\n    internalErrors: [],\n    internalError: function internalError(str, obj) {\n      this.internalErrors.push(str);\n      console.warn(str);\n      if (obj) {\n        console.warn(obj);\n      }\n    },\n    getLastInternalError: function getLastInternalError() {\n      return this.internalErrors[this.internalErrors.length - 1];\n    }\n  });\n  var _default = _exports.default = Validate;\n});","define(\"ember-cli-pagination/watch/lock-to-range\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    watch: function watch(paged) {\n      paged.on('invalidPage', function (event) {\n        if (event.page < 1) {\n          paged.set('page', 1);\n        } else if (event.page > event.totalPages) {\n          paged.set('page', event.totalPages);\n        }\n      });\n    }\n  };\n});","define(\"ember-cli-string-helpers/-private/create-string-helper\", [\"exports\", \"@ember/template\"], function (_exports, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _default(stringFunction) {\n    return function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 1),\n        string = _ref2[0];\n      if ((0, _template.isHTMLSafe)(string)) {\n        string = string.string;\n      }\n      string = string || '';\n      return stringFunction(string);\n    };\n  }\n});","define(\"ember-cli-string-helpers/helpers/camelize\", [\"exports\", \"@ember/component/helper\", \"@ember/string\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _string, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.camelize = void 0;\n  var camelize = _exports.camelize = (0, _createStringHelper.default)(_string.camelize);\n  var _default = _exports.default = (0, _helper.helper)(camelize);\n});","define(\"ember-cli-string-helpers/helpers/capitalize\", [\"exports\", \"@ember/component/helper\", \"@ember/string\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _string, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.capitalize = void 0;\n  var capitalize = _exports.capitalize = (0, _createStringHelper.default)(_string.capitalize);\n  var _default = _exports.default = (0, _helper.helper)(capitalize);\n});","define(\"ember-cli-string-helpers/helpers/classify\", [\"exports\", \"@ember/component/helper\", \"@ember/string\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _string, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.classify = void 0;\n  var classify = _exports.classify = (0, _createStringHelper.default)(_string.classify);\n  var _default = _exports.default = (0, _helper.helper)(classify);\n});","define(\"ember-cli-string-helpers/helpers/dasherize\", [\"exports\", \"@ember/component/helper\", \"@ember/string\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _string, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.dasherize = void 0;\n  var dasherize = _exports.dasherize = (0, _createStringHelper.default)(_string.dasherize);\n  var _default = _exports.default = (0, _helper.helper)(dasherize);\n});","define(\"ember-cli-string-helpers/helpers/html-safe\", [\"exports\", \"@ember/component/helper\", \"@ember/template\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _template, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.htmlSafe = _exports.default = void 0;\n  var htmlSafe = _exports.htmlSafe = (0, _createStringHelper.default)(_template.htmlSafe);\n  var _default = _exports.default = (0, _helper.helper)(htmlSafe);\n});","define(\"ember-cli-string-helpers/helpers/humanize\", [\"exports\", \"@ember/component/helper\", \"@ember/template\"], function (_exports, _helper, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.humanize = humanize;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var regex = /_+|-+/g;\n  var replacement = ' ';\n\n  // The substituted value will be contained in the result variable\n  function humanize(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      string = _ref2[0];\n    if ((0, _template.isHTMLSafe)(string)) {\n      string = string.string;\n    }\n    if (string === undefined || string === null) {\n      return '';\n    }\n    var result = string.toLowerCase().replace(regex, replacement);\n    return result.charAt(0).toUpperCase() + result.slice(1);\n  }\n  var _default = _exports.default = (0, _helper.helper)(humanize);\n});","define(\"ember-cli-string-helpers/helpers/lowercase\", [\"exports\", \"@ember/component/helper\", \"ember-cli-string-helpers/utils/lowercase\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _lowercase, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.lowercase = _exports.default = void 0;\n  var lowercase = _exports.lowercase = (0, _createStringHelper.default)(_lowercase.default);\n  var _default = _exports.default = (0, _helper.helper)(lowercase);\n});","define(\"ember-cli-string-helpers/helpers/titleize\", [\"exports\", \"@ember/component/helper\", \"ember-cli-string-helpers/utils/titleize\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _titleize, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.titleize = _exports.default = void 0;\n  var titleize = _exports.titleize = (0, _createStringHelper.default)(_titleize.default);\n  var _default = _exports.default = (0, _helper.helper)(titleize);\n});","define(\"ember-cli-string-helpers/helpers/trim\", [\"exports\", \"@ember/component/helper\", \"ember-cli-string-helpers/utils/trim\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _trim, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.trim = _exports.default = void 0;\n  var trim = _exports.trim = (0, _createStringHelper.default)(_trim.default);\n  var _default = _exports.default = (0, _helper.helper)(trim);\n});","define(\"ember-cli-string-helpers/helpers/truncate\", [\"exports\", \"@ember/component/helper\", \"@ember/template\"], function (_exports, _helper, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.truncate = truncate;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function truncate(_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      string = _ref2[0],\n      _ref2$ = _ref2[1],\n      characterLimit = _ref2$ === void 0 ? 140 : _ref2$,\n      _ref2$2 = _ref2[2],\n      useEllipsis = _ref2$2 === void 0 ? true : _ref2$2;\n    var limit = useEllipsis ? characterLimit - 3 : characterLimit;\n    if ((0, _template.isHTMLSafe)(string)) {\n      string = string.string;\n    }\n    if (string && string.length > limit) {\n      return useEllipsis ? \"\".concat(string.substring(0, limit), \"...\") : string.substring(0, limit);\n    } else {\n      return string;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(truncate);\n});","define(\"ember-cli-string-helpers/helpers/underscore\", [\"exports\", \"@ember/component/helper\", \"@ember/string\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _string, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.underscore = _exports.default = void 0;\n  var underscore = _exports.underscore = (0, _createStringHelper.default)(_string.underscore);\n  var _default = _exports.default = (0, _helper.helper)(underscore);\n});","define(\"ember-cli-string-helpers/helpers/uppercase\", [\"exports\", \"@ember/component/helper\", \"ember-cli-string-helpers/utils/uppercase\", \"ember-cli-string-helpers/-private/create-string-helper\"], function (_exports, _helper, _uppercase, _createStringHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.uppercase = _exports.default = void 0;\n  var uppercase = _exports.uppercase = (0, _createStringHelper.default)(_uppercase.default);\n  var _default = _exports.default = (0, _helper.helper)(uppercase);\n});","define(\"ember-cli-string-helpers/helpers/w\", [\"exports\", \"@ember/component/helper\", \"@ember/string\"], function (_exports, _helper, _string) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.w = w;\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function w(_ref) {\n    var _ref2 = _toArray(_ref),\n      wordStrings = _ref2.slice(0);\n    return wordStrings.map(_string.w).reduce(function (words, moreWords) {\n      return words.concat(moreWords);\n    }, []);\n  }\n  var _default = _exports.default = (0, _helper.helper)(w);\n});","define(\"ember-cli-string-helpers/utils/lowercase\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = lowercase;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function lowercase() {\n    var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    if (typeof string !== 'string') {\n      throw new TypeError(\"Expected a string, got a \".concat(_typeof(string)));\n    }\n    return string.toLowerCase();\n  }\n});","define(\"ember-cli-string-helpers/utils/titleize\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = titleize;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function titleize() {\n    var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    if (typeof string !== 'string') {\n      throw new TypeError(\"Expected a string, got a \".concat(_typeof(string)));\n    }\n    return string.toLowerCase().replace(/(?:^|\\s|-|\\/)\\S/g, function (m) {\n      return m.toUpperCase();\n    });\n  }\n});","define(\"ember-cli-string-helpers/utils/trim\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = trim;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function trim() {\n    var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    if (typeof string !== 'string') {\n      throw new TypeError(\"Expected a string, got a \".concat(_typeof(string)));\n    }\n    return string.trim();\n  }\n});","define(\"ember-cli-string-helpers/utils/uppercase\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = uppercase;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function uppercase() {\n    var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    if (typeof string !== 'string') {\n      throw new TypeError(\"Expected a string, got a \".concat(_typeof(string)));\n    }\n    return string.toUpperCase();\n  }\n});","define(\"ember-collapsible-panel/components/cp-panel-body/component\", [\"exports\", \"@embroider/util\", \"@ember/component\", \"@ember/object\", \"@ember/debug\", \"ember-collapsible-panel/components/cp-panel-body/template\"], function (_exports, _util, _component, _object, _debug, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components, prettier/prettier */\n\n  var LiquidIf, hasRealLiquidIf;\n  {\n    hasRealLiquidIf = false;\n  }\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    classNames: ['cp-Panel-body'],\n    classNameBindings: ['isOpen:cp-is-open'],\n    // ideally we'd use a getter here, but that requires Ember 3.16+\n    'liquidif': (0, _object.computed)(function () {\n      (true && !(hasRealLiquidIf) && (0, _debug.assert)('ember-collapsible-panel\\'s cp-panel-body component requires liquid-fire to be present if `shouldAnimate` is used', hasRealLiquidIf));\n      return (0, _util.ensureSafeComponent)(LiquidIf, this);\n    })\n  });\n});","define(\"ember-collapsible-panel/components/cp-panel-body/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @shouldAnimate}}\n  \n    {{#this.liquidif @isOpen use='crossFade'}}\n      <div class=\"cp-Panel-body-inner\">\n        {{yield}}\n      </div>\n    {{/this.liquidif}}\n  \n  {{else}}\n  \n    {{#if @isOpen}}\n      <div class=\"cp-Panel-body-inner\">\n        {{yield}}\n      </div>\n    {{/if}}\n  \n  {{/if}}\n  \n  */\n  {\n    \"id\": \"10wajhQD\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"\\\\n\\\"],[6,[30,0,[\\\"liquidif\\\"]],[[30,2]],[[\\\"use\\\"],[\\\"crossFade\\\"]],[[\\\"default\\\"],[[[[1,\\\"    \\\"],[10,0],[14,0,\\\"cp-Panel-body-inner\\\"],[12],[1,\\\"\\\\n      \\\"],[18,3,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"cp-Panel-body-inner\\\"],[12],[1,\\\"\\\\n      \\\"],[18,3,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@shouldAnimate\\\",\\\"@isOpen\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-collapsible-panel/components/cp-panel-body/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-collapsible-panel/components/cp-panel-toggle/component\", [\"exports\", \"@ember/component\", \"@ember/object\"], function (_exports, _component, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/no-get, ember/require-tagless-components, prettier/prettier */\n  var _default = _exports.default = _component.default.extend({\n    tagName: 'a',\n    classNames: ['cp-Panel-toggle'],\n    classNameBindings: ['isOpen:cp-is-open'],\n    // So taps register in iOS\n    attributeBindings: ['href', 'ariaExpanded:aria-expanded'],\n    href: '#',\n    ariaExpanded: (0, _object.computed)('isOpen', function () {\n      return (0, _object.get)(this, 'isOpen') ? 'true' : 'false';\n    }),\n    click: function click(e) {\n      e.preventDefault();\n      this.get('on-click')();\n    }\n  });\n});","define(\"ember-collapsible-panel/components/cp-panel/component\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/object/computed\", \"@ember/service\", \"@ember/component\", \"ember-collapsible-panel/components/cp-panel/template\"], function (_exports, _runloop, _object, _computed, _service, _component, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-actions-hash, ember/no-classic-classes, ember/no-classic-components, ember/no-component-lifecycle-hooks, ember/no-get, ember/no-incorrect-calls-with-inline-anonymous-functions, ember/require-tagless-components, prettier/prettier */\n\n  var hasLiquidFireDep;\n  {\n    hasLiquidFireDep = false;\n  }\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    panelActions: (0, _service.inject)(),\n    shouldAnimate: (0, _computed.and)('hasLiquidFireDep', 'animate'),\n    disabled: false,\n    hasLiquidFireDep: hasLiquidFireDep,\n    group: null,\n    // passed in if rendered as part of a {{cp-panels}} group\n\n    classNames: ['cp-Panel'],\n    classNameBindings: ['isOpen:cp-is-open:cp-is-closed', 'disabled:cp-is-disabled'],\n    // Caller can overwrite\n    name: (0, _computed.oneWay)('elementId'),\n    panelState: (0, _object.computed)('name', function () {\n      var name = this.get('name');\n      return this.get(\"panelActions.state.\".concat(name));\n    }),\n    isOpen: (0, _computed.readOnly)('panelState.isOpen'),\n    isClosed: (0, _computed.not)('isOpen'),\n    panelsWrapper: null,\n    animate: true,\n    didReceiveAttrs: function didReceiveAttrs() {\n      this._super.apply(this, arguments);\n\n      // If caller passes in open=, use it\n      if (this.get('open') !== undefined) {\n        this.set('panelState.boundOpenState', this.get('open'));\n      }\n    },\n    // Register with parent panels component\n    didInsertElement: function didInsertElement() {\n      var _this = this;\n      this._super.apply(this, arguments);\n      (0, _runloop.scheduleOnce)('afterRender', function () {\n        var group = _this.get('group');\n        if (group) {\n          _this.get('panelState').set('group', group);\n        }\n      });\n    },\n    // Custom action called when toggling that can be provided by caller\n    didToggle: function didToggle() {},\n    actions: {\n      toggleIsOpen: function toggleIsOpen() {\n        if (this.get(\"disabled\")) {\n          return;\n        }\n        var name = this.get('name');\n        this.get('panelActions').toggle(name);\n        this.didToggle(name);\n      }\n    }\n  });\n});","define(\"ember-collapsible-panel/components/cp-panel/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! template-lint-disable no-action }}\n  {{yield (hash\n    toggle=(component 'cp-panel-toggle' on-click=(action 'toggleIsOpen') isOpen=this.isOpen)\n    body=(component 'cp-panel-body' shouldAnimate=this.shouldAnimate isOpen=this.isOpen)\n    name=this.name\n    isOpen=this.isOpen\n  )}}\n  \n  */\n  {\n    \"id\": \"616lOKfN\",\n    \"block\": \"[[[18,1,[[28,[37,1],null,[[\\\"toggle\\\",\\\"body\\\",\\\"name\\\",\\\"isOpen\\\"],[[50,\\\"cp-panel-toggle\\\",0,null,[[\\\"on-click\\\",\\\"isOpen\\\"],[[28,[37,3],[[30,0],\\\"toggleIsOpen\\\"],null],[30,0,[\\\"isOpen\\\"]]]]],[50,\\\"cp-panel-body\\\",0,null,[[\\\"shouldAnimate\\\",\\\"isOpen\\\"],[[30,0,[\\\"shouldAnimate\\\"]],[30,0,[\\\"isOpen\\\"]]]]],[30,0,[\\\"name\\\"]],[30,0,[\\\"isOpen\\\"]]]]]]],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"ember-collapsible-panel/components/cp-panel/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-collapsible-panel/components/cp-panels/component\", [\"exports\", \"@ember/object/computed\", \"@ember/component\", \"ember-collapsible-panel/components/cp-panels/template\"], function (_exports, _computed, _component, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components, prettier/prettier */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    classNames: 'cp-Panels',\n    accordion: false,\n    animate: true,\n    _cpPanels: true,\n    name: (0, _computed.oneWay)('elementId')\n  });\n});","define(\"ember-collapsible-panel/components/cp-panels/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield (hash\n    panel=(component 'cp-panel' group=this)\n    name=@name\n  )}}\n  \n  */\n  {\n    \"id\": \"sH3MmCgU\",\n    \"block\": \"[[[18,2,[[28,[37,1],null,[[\\\"panel\\\",\\\"name\\\"],[[50,\\\"cp-panel\\\",0,null,[[\\\"group\\\"],[[30,0]]]],[30,1]]]]]],[1,\\\"\\\\n\\\"]],[\\\"@name\\\",\\\"&default\\\"],false,[\\\"yield\\\",\\\"hash\\\",\\\"component\\\"]]\",\n    \"moduleName\": \"ember-collapsible-panel/components/cp-panels/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-collapsible-panel/services/panel-actions\", [\"exports\", \"@ember/object/computed\", \"@ember/array\", \"@ember/service\", \"@ember/object\"], function (_exports, _computed, _array, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-assignment-of-untracked-properties-used-in-tracking-contexts, ember/no-classic-classes, ember/no-get, prettier/prettier */\n\n  var State = _object.default.extend({\n    name: null,\n    boundOpenState: false,\n    apiOpenState: false,\n    apiWasUsed: false,\n    isOpen: (0, _object.computed)('boundOpenState', 'apiOpenState', 'apiWasUsed', function () {\n      if (this.get('apiWasUsed')) {\n        return this.get('apiOpenState');\n      } else {\n        return this.get('boundOpenState');\n      }\n    }),\n    animate: true,\n    group: null\n  });\n  var Registry = _object.default.extend({\n    init: function init() {\n      this._super.apply(this, arguments);\n      this.keys = (0, _array.A)([]);\n    },\n    unknownProperty: function unknownProperty(name) {\n      if (name === 'setUnknownProperty') {\n        // For failing ember-default testing scenario\n        // https://travis-ci.org/adopted-ember-addons/ember-collapsible-panel/builds/626881977\n        return;\n      }\n      var state = State.create();\n      this.get('keys').addObject(name);\n      this.set(name, state); // eslint-disable-line ember/no-side-effects\n\n      return state;\n    },\n    // probably not too safe, should only be used in tests\n    reset: function reset() {\n      var _this = this;\n      this.get('keys').slice() // copy, so we dont mess with binding/loops\n      .forEach(function (key) {\n        delete _this[key];\n      });\n      this.get('keys').clear();\n    }\n  });\n  var _default = _exports.default = _service.default.extend({\n    init: function init() {\n      this._super.apply(this, arguments);\n      this._registry = Registry.create();\n    },\n    state: (0, _computed.readOnly)('_registry'),\n    _panelFor: function _panelFor(name) {\n      return this.get(\"state.\".concat(name));\n    },\n    _panels: (0, _object.computed)('state.keys.[]', function () {\n      var keys = this.get('state.keys'),\n        state = this.get('state');\n      return keys.reduce(function (result, key) {\n        return result.addObject(state.get(key));\n      }, (0, _array.A)([]));\n    }),\n    _panelsInGroup: function _panelsInGroup(name) {\n      return this.get('_panels').filterBy('group.name', name);\n    },\n    open: function open(name) {\n      var panel = this._panelFor(name),\n        group = panel.get('group');\n      if (group && group.get('accordion')) {\n        // if this is part of an accordion close\n        // everything else\n        this.closeAll(group.get('name'));\n      }\n      panel.set('apiOpenState', true);\n      panel.set('apiWasUsed', true);\n    },\n    close: function close(name) {\n      this._panelFor(name).set('apiOpenState', false);\n      this._panelFor(name).set('apiWasUsed', true);\n    },\n    toggle: function toggle(name) {\n      var panel = this._panelFor(name);\n      return panel.get('isOpen') ? this.close(name) : this.open(name);\n    },\n    openAll: function openAll(group) {\n      this._panelsInGroup(group).forEach(function (panel) {\n        panel.set('apiOpenState', true);\n        panel.set('apiWasUsed', true);\n      });\n    },\n    closeAll: function closeAll(group) {\n      this._panelsInGroup(group).forEach(function (panel) {\n        panel.set('apiOpenState', false);\n        panel.set('apiWasUsed', true);\n      });\n    }\n  });\n});","define(\"ember-composable-helpers/-private/closure-action\", [\"exports\", \"ember\"], function (_exports, _ember) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var __loader = _ember.default.__loader;\n  var ClosureActionModule = {\n    ACTION: null\n  };\n  if ('ember-htmlbars/keywords/closure-action' in __loader.registry) {\n    ClosureActionModule = __loader.require('ember-htmlbars/keywords/closure-action');\n  } else if ('ember-routing-htmlbars/keywords/closure-action' in __loader.registry) {\n    ClosureActionModule = __loader.require('ember-routing-htmlbars/keywords/closure-action');\n  }\n  var _default = _exports.default = ClosureActionModule.ACTION;\n});","define(\"ember-composable-helpers/-private/get-value-array-and-use-deep-equal-from-params\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = getValueArrayAndUseDeepEqualFromParams;\n  function getValueArrayAndUseDeepEqualFromParams(params) {\n    var currentValue = params[0];\n    var array;\n    var useDeepEqual = false;\n    if (params.length === 2) {\n      array = params[1];\n    } else {\n      useDeepEqual = params[1];\n      array = params[2];\n    }\n    return {\n      currentValue: currentValue,\n      array: array,\n      useDeepEqual: useDeepEqual\n    };\n  }\n});","define(\"ember-composable-helpers/helpers/append\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.append = append;\n  _exports.default = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function append(_ref) {\n    var _ref3;\n    var _ref2 = _toArray(_ref),\n      arrays = _ref2.slice(0);\n    return (_ref3 = []).concat.apply(_ref3, _toConsumableArray(arrays));\n  }\n  var _default = _exports.default = (0, _helper.helper)(append);\n});","define(\"ember-composable-helpers/helpers/call\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.call = call;\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n   * Calls a function passed within a template and returns its value.\n   * In order to pass arguments to the function being called, you must\n   * curry the function using the `fn` helper.\n   *\n   ```example\n      <div data-metrics={{call (fn this.myMetrics (hash item=@item))}}\n    ```\n   *\n   * @function apply\n   * @param {Array<Function>} fn - The function to be called\n   * @param {*=} thisArg - An optional `this` context\n   */\n  function call(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      fn = _ref2[0],\n      thisArg = _ref2[1];\n    if (fn) {\n      if (thisArg) {\n        return fn.apply(thisArg);\n      } else {\n        return fn();\n      }\n    }\n  }\n  var _default = _exports.default = _helper.default.helper(call);\n});","define(\"ember-composable-helpers/helpers/chunk\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _array, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.chunk = chunk;\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var max = Math.max,\n    ceil = Math.ceil;\n  function chunk(num, array) {\n    var integer = parseInt(num, 10);\n    var size = max(integer, 0);\n    var length = 0;\n    if ((0, _array.isArray)(array)) {\n      length = array.length;\n    }\n    array = (0, _asArray.default)(array);\n    if (!length || size < 1) {\n      return [];\n    } else {\n      var index = 0;\n      var resultIndex = -1;\n      var result = new Array(ceil(length / size));\n      while (index < length) {\n        result[++resultIndex] = array.slice(index, index += size);\n      }\n      return result;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      num = _ref2[0],\n      array = _ref2[1];\n    return chunk(num, array);\n  });\n});","define(\"ember-composable-helpers/helpers/compact\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"@ember/array\"], function (_exports, _helper, _utils, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.compact = compact;\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function compact(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      value = _ref2[0];\n    var array;\n    if (Array.isArray(value) || (0, _array.isArray)(value)) {\n      array = value;\n    } else {\n      array = [value];\n    }\n    return array.filter(function (item) {\n      return (0, _utils.isPresent)(item);\n    });\n  }\n  var _default = _exports.default = (0, _helper.helper)(compact);\n});","define(\"ember-composable-helpers/helpers/compute\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.compute = compute;\n  _exports.default = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function compute(_ref) {\n    var _ref2 = _toArray(_ref),\n      action = _ref2[0],\n      params = _ref2.slice(1);\n    return action.apply(void 0, _toConsumableArray(params));\n  }\n  var _default = _exports.default = (0, _helper.helper)(compute);\n});","define(\"ember-composable-helpers/helpers/contains\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/helpers/includes\", \"@ember/debug\"], function (_exports, _helper, _includes, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.contains = contains;\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function contains(needleOrNeedles, haystack) {\n    (true && !(false) && (0, _debug.deprecate)('{{contains}} helper provided by ember-composable-helpers has been renamed to {{includes}}.', false, {\n      id: 'ember-composable-helpers.contains-helper',\n      until: '5.0.0'\n    }));\n    return (0, _includes.includes)(needleOrNeedles, haystack);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      needle = _ref2[0],\n      haystack = _ref2[1];\n    return contains(needle, haystack);\n  });\n});","define(\"ember-composable-helpers/helpers/dec\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.dec = dec;\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function dec(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      step = _ref2[0],\n      val = _ref2[1];\n    if ((0, _utils.isEmpty)(val)) {\n      val = step;\n      step = undefined;\n    }\n    val = Number(val);\n    if (isNaN(val)) {\n      return;\n    }\n    if (step === undefined) {\n      step = 1;\n    }\n    return val - step;\n  }\n  var _default = _exports.default = (0, _helper.helper)(dec);\n});","define(\"ember-composable-helpers/helpers/drop\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.drop = drop;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function drop(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      dropAmount = _ref2[0],\n      array = _ref2[1];\n    return (0, _asArray.default)(array).slice(dropAmount);\n  }\n  var _default = _exports.default = (0, _helper.helper)(drop);\n});","define(\"ember-composable-helpers/helpers/entries\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.entries = entries;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function entries(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      object = _ref2[0];\n    if (!object) {\n      return object;\n    }\n    return Object.entries(object);\n  }\n  var _default = _exports.default = (0, _helper.helper)(entries);\n});","define(\"ember-composable-helpers/helpers/filter-by\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"@ember/utils\", \"@ember/object\", \"ember-composable-helpers/utils/is-equal\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _array, _utils, _object, _isEqual, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.filterBy = filterBy;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function filterBy(_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      byPath = _ref2[0],\n      value = _ref2[1],\n      array = _ref2[2];\n    if (!(0, _array.isArray)(array) && (0, _array.isArray)(value)) {\n      array = value;\n      value = undefined;\n    }\n    array = (0, _asArray.default)(array);\n    if ((0, _utils.isEmpty)(byPath) || (0, _utils.isEmpty)(array)) {\n      return [];\n    }\n    var filterFn;\n    if ((0, _utils.isPresent)(value)) {\n      if (typeof value === 'function') {\n        filterFn = function filterFn(item) {\n          return value((0, _object.get)(item, byPath));\n        };\n      } else {\n        filterFn = function filterFn(item) {\n          return (0, _isEqual.default)((0, _object.get)(item, byPath), value);\n        };\n      }\n    } else {\n      filterFn = function filterFn(item) {\n        return !!(0, _object.get)(item, byPath);\n      };\n    }\n    return array.filter(filterFn);\n  }\n  var _default = _exports.default = (0, _helper.helper)(filterBy);\n});","define(\"ember-composable-helpers/helpers/filter\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _utils, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.filter = filter;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function filter(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      callback = _ref2[0],\n      array = _ref2[1];\n    if ((0, _utils.isEmpty)(callback) || !array) {\n      return [];\n    }\n    return (0, _asArray.default)(array).filter(callback);\n  }\n  var _default = _exports.default = (0, _helper.helper)(filter);\n});","define(\"ember-composable-helpers/helpers/find-by\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"@ember/array\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _utils, _array, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.findBy = findBy;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function findBy(_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      byPath = _ref2[0],\n      value = _ref2[1],\n      array = _ref2[2];\n    if ((0, _utils.isEmpty)(byPath)) {\n      return [];\n    }\n    return (0, _array.A)((0, _asArray.default)(array)).findBy(byPath, value);\n  }\n  var _default = _exports.default = (0, _helper.helper)(findBy);\n});","define(\"ember-composable-helpers/helpers/flatten\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _array, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.flatten = flatten;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function flatten(array) {\n    if (!(0, _array.isArray)(array)) {\n      return array;\n    }\n    return (0, _asArray.default)(array).reduce(function (flattened, el) {\n      return flattened.concat(flatten(el));\n    }, []);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      array = _ref2[0];\n    return flatten(array);\n  });\n});","define(\"ember-composable-helpers/helpers/from-entries\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.fromEntries = fromEntries;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function fromEntries(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      entries = _ref2[0];\n    if (!entries) {\n      return entries;\n    }\n    return Object.fromEntries(entries);\n  }\n  var _default = _exports.default = (0, _helper.helper)(fromEntries);\n});","define(\"ember-composable-helpers/helpers/group-by\", [\"exports\", \"@ember/component/helper\", \"@ember/object\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _object, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.groupBy = groupBy;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function groupBy(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      byPath = _ref2[0],\n      array = _ref2[1];\n    var groups = {};\n    (0, _asArray.default)(array).forEach(function (item) {\n      var groupName = (0, _object.get)(item, byPath);\n      var group = groups[groupName];\n      if (!Array.isArray(group)) {\n        group = [];\n        groups[groupName] = group;\n      }\n      group.push(item);\n    });\n    return groups;\n  }\n  var _default = _exports.default = (0, _helper.helper)(groupBy);\n});","define(\"ember-composable-helpers/helpers/has-next\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"ember-composable-helpers/helpers/next\", \"ember-composable-helpers/utils/is-equal\", \"ember-composable-helpers/-private/get-value-array-and-use-deep-equal-from-params\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _utils, _next, _isEqual, _getValueArrayAndUseDeepEqualFromParams, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.hasNext = hasNext;\n  function hasNext(currentValue, maybeArray) {\n    var useDeepEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var array = (0, _asArray.default)(maybeArray);\n    var nextValue = (0, _next.next)(currentValue, array, useDeepEqual);\n    var isNotSameValue = !(0, _isEqual.default)(nextValue, currentValue, useDeepEqual);\n    return isNotSameValue && (0, _utils.isPresent)(nextValue);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (params) {\n    var _getValueArrayAndUseD = (0, _getValueArrayAndUseDeepEqualFromParams.default)(params),\n      currentValue = _getValueArrayAndUseD.currentValue,\n      array = _getValueArrayAndUseD.array,\n      useDeepEqual = _getValueArrayAndUseD.useDeepEqual;\n    return hasNext(currentValue, array, useDeepEqual);\n  });\n});","define(\"ember-composable-helpers/helpers/has-previous\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"ember-composable-helpers/helpers/previous\", \"ember-composable-helpers/utils/is-equal\", \"ember-composable-helpers/-private/get-value-array-and-use-deep-equal-from-params\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _utils, _previous, _isEqual, _getValueArrayAndUseDeepEqualFromParams, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.hasPrevious = hasPrevious;\n  function hasPrevious(currentValue, maybeArray) {\n    var useDeepEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var array = (0, _asArray.default)(maybeArray);\n    var previousValue = (0, _previous.previous)(currentValue, array, useDeepEqual);\n    var isNotSameValue = !(0, _isEqual.default)(previousValue, currentValue, useDeepEqual);\n    return isNotSameValue && (0, _utils.isPresent)(previousValue);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (params) {\n    var _getValueArrayAndUseD = (0, _getValueArrayAndUseDeepEqualFromParams.default)(params),\n      currentValue = _getValueArrayAndUseD.currentValue,\n      array = _getValueArrayAndUseD.array,\n      useDeepEqual = _getValueArrayAndUseD.useDeepEqual;\n    return hasPrevious(currentValue, array, useDeepEqual);\n  });\n});","define(\"ember-composable-helpers/helpers/inc\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.inc = inc;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function inc(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      step = _ref2[0],\n      val = _ref2[1];\n    if ((0, _utils.isEmpty)(val)) {\n      val = step;\n      step = undefined;\n    }\n    val = Number(val);\n    if (isNaN(val)) {\n      return;\n    }\n    if (step === undefined) {\n      step = 1;\n    }\n    return val + step;\n  }\n  var _default = _exports.default = (0, _helper.helper)(inc);\n});","define(\"ember-composable-helpers/helpers/includes\", [\"exports\", \"@ember/array\", \"@ember/component/helper\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _array, _helper, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.includes = includes;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function includes(needleOrNeedles, haystack) {\n    if (!(0, _array.isArray)(haystack)) {\n      return false;\n    }\n    var needles = (0, _array.isArray)(needleOrNeedles) ? needleOrNeedles : [needleOrNeedles];\n    var haystackAsEmberArray = (0, _array.A)((0, _asArray.default)(haystack));\n    return (0, _asArray.default)(needles).every(function (needle) {\n      return haystackAsEmberArray.includes(needle);\n    });\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      needle = _ref2[0],\n      haystack = _ref2[1];\n    return includes(needle, haystack);\n  });\n});","define(\"ember-composable-helpers/helpers/intersect\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _array, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.intersect = intersect;\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function intersect(_ref) {\n    var _ref2 = _toArray(_ref),\n      arrays = _ref2.slice(0);\n    var confirmedArrays = (0, _asArray.default)(arrays).map(function (array) {\n      return (0, _array.isArray)(array) ? array : [];\n    });\n    // copied from https://github.com/emberjs/ember.js/blob/315ec6472ff542ac714432036cc96fe4bd62bd1f/packages/%40ember/object/lib/computed/reduce_computed_macros.js#L1063-L1100\n    var results = confirmedArrays.pop().filter(function (candidate) {\n      for (var i = 0; i < confirmedArrays.length; i++) {\n        var found = false;\n        var array = confirmedArrays[i];\n        for (var j = 0; j < array.length; j++) {\n          if (array[j] === candidate) {\n            found = true;\n            break;\n          }\n        }\n        if (found === false) {\n          return false;\n        }\n      }\n      return true;\n    });\n    return results;\n  }\n  var _default = _exports.default = (0, _helper.helper)(intersect);\n});","define(\"ember-composable-helpers/helpers/invoke\", [\"exports\", \"@ember/array\", \"@ember/component/helper\", \"@ember/utils\", \"rsvp\"], function (_exports, _array, _helper, _utils, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.invoke = invoke;\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var all = _rsvp.default.all;\n  function invoke(_ref) {\n    var _ref2 = _toArray(_ref),\n      methodName = _ref2[0],\n      args = _ref2.slice(1);\n    var obj = args.pop();\n    if ((0, _array.isArray)(obj)) {\n      return function () {\n        var promises = obj.map(function (item) {\n          return (0, _utils.tryInvoke)(item, methodName, args);\n        });\n        return all(promises);\n      };\n    }\n    return function () {\n      return (0, _utils.tryInvoke)(obj, methodName, args);\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(invoke);\n});","define(\"ember-composable-helpers/helpers/join\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _array, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.join = join;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function join(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      separator = _ref2[0],\n      rawArray = _ref2[1];\n    var array = (0, _asArray.default)(rawArray);\n    if ((0, _array.isArray)(separator)) {\n      array = separator;\n      separator = ',';\n    }\n    return array.join(separator);\n  }\n  var _default = _exports.default = (0, _helper.helper)(join);\n});","define(\"ember-composable-helpers/helpers/keys\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.keys = keys;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function keys(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      object = _ref2[0];\n    if (!object) {\n      return object;\n    }\n    return Object.keys(object);\n  }\n  var _default = _exports.default = (0, _helper.helper)(keys);\n});","define(\"ember-composable-helpers/helpers/map-by\", [\"exports\", \"@ember/component/helper\", \"@ember/object\", \"@ember/utils\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _object, _utils, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.mapBy = mapBy;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function mapBy(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      byPath = _ref2[0],\n      array = _ref2[1];\n    if ((0, _utils.isEmpty)(byPath)) {\n      return [];\n    }\n    return (0, _asArray.default)(array).map(function (item) {\n      return (0, _object.get)(item, byPath);\n    });\n  }\n  var _default = _exports.default = (0, _helper.helper)(mapBy);\n});","define(\"ember-composable-helpers/helpers/map\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _utils, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.map = map;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function map(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      callback = _ref2[0],\n      array = _ref2[1];\n    if ((0, _utils.isEmpty)(callback)) {\n      return [];\n    }\n    return (0, _asArray.default)(array).map(callback);\n  }\n  var _default = _exports.default = (0, _helper.helper)(map);\n});","define(\"ember-composable-helpers/helpers/next\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/get-index\", \"@ember/utils\", \"@ember/array\", \"ember-composable-helpers/-private/get-value-array-and-use-deep-equal-from-params\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _getIndex, _utils, _array, _getValueArrayAndUseDeepEqualFromParams, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.next = next;\n  function next(currentValue, maybeArray) {\n    var useDeepEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var array = (0, _asArray.default)(maybeArray);\n    var currentIndex = (0, _getIndex.default)(array, currentValue, useDeepEqual);\n    var lastIndex = array.length - 1;\n    if ((0, _utils.isEmpty)(currentIndex)) {\n      return;\n    }\n    return currentIndex === lastIndex ? currentValue : (0, _array.A)(array).objectAt(currentIndex + 1);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (params) {\n    var _getValueArrayAndUseD = (0, _getValueArrayAndUseDeepEqualFromParams.default)(params),\n      currentValue = _getValueArrayAndUseD.currentValue,\n      array = _getValueArrayAndUseD.array,\n      useDeepEqual = _getValueArrayAndUseD.useDeepEqual;\n    return next(currentValue, array, useDeepEqual);\n  });\n});","define(\"ember-composable-helpers/helpers/noop\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.noop = noop;\n  function noop() {\n    return function () {};\n  }\n  var _default = _exports.default = (0, _helper.helper)(noop);\n});","define(\"ember-composable-helpers/helpers/object-at\", [\"exports\", \"@ember/component/helper\", \"@ember/array\"], function (_exports, _helper, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.objectAt = objectAt;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function objectAt(index, array) {\n    if (!(0, _array.isArray)(array)) {\n      return undefined;\n    }\n    index = parseInt(index, 10);\n    return (0, _array.A)(array).objectAt(index);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      index = _ref2[0],\n      array = _ref2[1];\n    return objectAt(index, array);\n  });\n});","define(\"ember-composable-helpers/helpers/optional\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.optional = optional;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function optional(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      action = _ref2[0];\n    if (typeof action === 'function') {\n      return action;\n    }\n    return function (i) {\n      return i;\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(optional);\n});","define(\"ember-composable-helpers/helpers/pick\", [\"exports\", \"@ember/component/helper\", \"@ember/object\"], function (_exports, _helper, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.pick = pick;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function pick(_ref /*, hash*/) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      path = _ref2[0],\n      action = _ref2[1];\n    return function (event) {\n      var value = (0, _object.get)(event, path);\n      if (!action) {\n        return value;\n      }\n      action(value);\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(pick);\n});","define(\"ember-composable-helpers/helpers/pipe-action\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/helpers/pipe\", \"ember-composable-helpers/-private/closure-action\"], function (_exports, _helper, _pipe, _closureAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var closurePipe = _pipe.pipe;\n  if (_closureAction.default) {\n    closurePipe[_closureAction.default] = true;\n  }\n  var _default = _exports.default = (0, _helper.helper)(closurePipe);\n});","define(\"ember-composable-helpers/helpers/pipe\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/is-promise\"], function (_exports, _helper, _isPromise) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.invokeFunction = invokeFunction;\n  _exports.pipe = pipe;\n  function invokeFunction(acc, curr) {\n    if ((0, _isPromise.default)(acc)) {\n      return acc.then(curr);\n    }\n    return curr(acc);\n  }\n  function pipe() {\n    var actions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    return function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return actions.reduce(function (acc, curr, idx) {\n        if (idx === 0) {\n          return curr.apply(void 0, args);\n        }\n        return invokeFunction(acc, curr);\n      }, undefined);\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(pipe);\n});","define(\"ember-composable-helpers/helpers/previous\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/get-index\", \"@ember/utils\", \"@ember/array\", \"ember-composable-helpers/-private/get-value-array-and-use-deep-equal-from-params\"], function (_exports, _helper, _getIndex, _utils, _array, _getValueArrayAndUseDeepEqualFromParams) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.previous = previous;\n  function previous(currentValue, array) {\n    var useDeepEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var currentIndex = (0, _getIndex.default)(array, currentValue, useDeepEqual);\n    if ((0, _utils.isEmpty)(currentIndex)) {\n      return;\n    }\n    return currentIndex === 0 ? currentValue : (0, _array.A)(array).objectAt(currentIndex - 1);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (params) {\n    var _getValueArrayAndUseD = (0, _getValueArrayAndUseDeepEqualFromParams.default)(params),\n      currentValue = _getValueArrayAndUseD.currentValue,\n      array = _getValueArrayAndUseD.array,\n      useDeepEqual = _getValueArrayAndUseD.useDeepEqual;\n    return previous(currentValue, array, useDeepEqual);\n  });\n});","define(\"ember-composable-helpers/helpers/queue\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/is-promise\"], function (_exports, _helper, _isPromise) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.queue = queue;\n  function queue() {\n    var actions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    return function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      var invokeWithArgs = function invokeWithArgs(acc, curr) {\n        if ((0, _isPromise.default)(acc)) {\n          return acc.then(function () {\n            return curr.apply(void 0, args);\n          });\n        }\n        return curr.apply(void 0, args);\n      };\n      return actions.reduce(function (acc, curr, idx) {\n        if (idx === 0) {\n          return curr.apply(void 0, args);\n        }\n        return invokeWithArgs(acc, curr);\n      }, undefined);\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(queue);\n});","define(\"ember-composable-helpers/helpers/range\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"ember-composable-helpers/utils/comparison\"], function (_exports, _helper, _utils, _comparison) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.range = range;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function range(_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      min = _ref2[0],\n      max = _ref2[1],\n      isInclusive = _ref2[2];\n    isInclusive = (0, _utils.typeOf)(isInclusive) === 'boolean' ? isInclusive : false;\n    var numbers = [];\n    if (min < max) {\n      var testFn = isInclusive ? _comparison.lte : _comparison.lt;\n      for (var i = min; testFn(i, max); i++) {\n        numbers.push(i);\n      }\n    }\n    if (min > max) {\n      var _testFn = isInclusive ? _comparison.gte : _comparison.gt;\n      for (var _i = min; _testFn(_i, max); _i--) {\n        numbers.push(_i);\n      }\n    }\n    if (min === max && isInclusive) {\n      numbers.push(max);\n    }\n    return numbers;\n  }\n  var _default = _exports.default = (0, _helper.helper)(range);\n});","define(\"ember-composable-helpers/helpers/reduce\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _utils, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.reduce = reduce;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function reduce(_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      callback = _ref2[0],\n      initialValue = _ref2[1],\n      array = _ref2[2];\n    if ((0, _utils.isEmpty)(callback)) {\n      return [];\n    }\n    return (0, _asArray.default)(array).reduce(callback, initialValue);\n  }\n  var _default = _exports.default = (0, _helper.helper)(reduce);\n});","define(\"ember-composable-helpers/helpers/reject-by\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"@ember/utils\", \"@ember/object\", \"ember-composable-helpers/utils/is-equal\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _array, _utils, _object, _isEqual, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.rejectBy = rejectBy;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function rejectBy(_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      byPath = _ref2[0],\n      value = _ref2[1],\n      array = _ref2[2];\n    if (!(0, _array.isArray)(array) && (0, _array.isArray)(value)) {\n      array = value;\n      value = undefined;\n    }\n    array = (0, _asArray.default)(array);\n    var filterFn;\n    if ((0, _utils.isPresent)(value)) {\n      if (typeof value === 'function') {\n        filterFn = function filterFn(item) {\n          return !value((0, _object.get)(item, byPath));\n        };\n      } else {\n        filterFn = function filterFn(item) {\n          return !(0, _isEqual.default)((0, _object.get)(item, byPath), value);\n        };\n      }\n    } else {\n      filterFn = function filterFn(item) {\n        return !(0, _object.get)(item, byPath);\n      };\n    }\n    return array.filter(filterFn);\n  }\n  var _default = _exports.default = (0, _helper.helper)(rejectBy);\n});","define(\"ember-composable-helpers/helpers/repeat\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.repeat = repeat;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function repeat(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      length = _ref2[0],\n      value = _ref2[1];\n    if ((0, _utils.typeOf)(length) !== 'number') {\n      return [value];\n    }\n    return Array.apply(null, {\n      length: length\n    }).map(function () {\n      return value;\n    }); // eslint-disable-line\n  }\n  var _default = _exports.default = (0, _helper.helper)(repeat);\n});","define(\"ember-composable-helpers/helpers/reverse\", [\"exports\", \"@ember/component/helper\", \"@ember/array\"], function (_exports, _helper, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.reverse = reverse;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function reverse(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      array = _ref2[0];\n    if (!(0, _array.isArray)(array)) {\n      return [array];\n    }\n    return (0, _array.A)(array).slice(0).reverse();\n  }\n  var _default = _exports.default = (0, _helper.helper)(reverse);\n});","define(\"ember-composable-helpers/helpers/shuffle\", [\"exports\", \"@ember/component/helper\", \"@ember/array\", \"@ember/utils\"], function (_exports, _helper, _array, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.shuffle = shuffle;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function shuffle(array, randomizer) {\n    array = array.slice(0);\n    var count = array.length;\n    var rand, temp;\n    randomizer = (0, _utils.typeOf)(randomizer) === 'function' && randomizer || Math.random;\n    while (count > 1) {\n      rand = Math.floor(randomizer() * count--);\n      temp = array[count];\n      array[count] = array[rand];\n      array[rand] = temp;\n    }\n    return array;\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      randomizer = _ref2[0],\n      array = _ref2[1];\n    if (array === undefined) {\n      array = randomizer;\n      randomizer = undefined;\n    }\n    if (!(0, _array.isArray)(array)) {\n      return [array];\n    }\n    return shuffle(array, randomizer);\n  });\n});","define(\"ember-composable-helpers/helpers/slice\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.slice = slice;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function slice(_ref) {\n    var _array;\n    var _ref2 = _toArray(_ref),\n      args = _ref2.slice(0);\n    var array = args.pop();\n    array = (0, _asArray.default)(array);\n    return (_array = array).slice.apply(_array, _toConsumableArray(args));\n  }\n  var _default = _exports.default = (0, _helper.helper)(slice);\n});","define(\"ember-composable-helpers/helpers/sort-by\", [\"exports\", \"@ember/object\", \"@ember/utils\", \"@ember/component/helper\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _object, _utils, _helper, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sortBy = sortBy;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function normalizeToBoolean(val) {\n    if (typeof val === 'boolean') {\n      return val;\n    }\n    if (typeof val === 'number') {\n      if (val > 0) {\n        return false;\n      } else if (val < 0) {\n        return true;\n      }\n    }\n    return val;\n  }\n  function safeValueForKey(ctx, key) {\n    if (ctx === null || ctx === undefined) {\n      return ctx;\n    }\n    return (0, _object.get)(ctx, key);\n  }\n  function sortDesc(key, a, b) {\n    if ((0, _utils.isEmpty)(key)) {\n      return 0;\n    }\n    var aValue = safeValueForKey(a, key);\n    var bValue = safeValueForKey(b, key);\n    var isANullable = typeof aValue == 'undefined' || aValue === null;\n    var isBNullable = typeof bValue == 'undefined' || bValue === null;\n    if (isANullable && isBNullable) {\n      //both values are nullable\n      return 0;\n    }\n    if (isBNullable) {\n      // keep bValue last\n      return -1;\n    }\n    if (isANullable) {\n      // put aValue last\n      return 1;\n    }\n    if (aValue.toLowerCase && bValue.toLowerCase) {\n      return bValue.localeCompare(aValue, undefined, {\n        sensitivity: 'base'\n      });\n    }\n    if (aValue < bValue) {\n      return 1;\n    } else if (aValue > bValue) {\n      return -1;\n    }\n    return 0;\n  }\n  function sortAsc(key, a, b) {\n    if ((0, _utils.isEmpty)(key)) {\n      return 0;\n    }\n    var aValue = safeValueForKey(a, key);\n    var bValue = safeValueForKey(b, key);\n    var isANullable = typeof aValue == 'undefined' || aValue === null;\n    var isBNullable = typeof bValue == 'undefined' || bValue === null;\n    if (isANullable && isBNullable) {\n      //both values are nullable\n      return 0;\n    }\n    if (isBNullable) {\n      // keep bValue last\n      return -1;\n    }\n    if (isANullable) {\n      // put aValue last\n      return 1;\n    }\n    if (aValue.toLowerCase && bValue.toLowerCase) {\n      return aValue.localeCompare(bValue, undefined, {\n        sensitivity: 'base'\n      });\n    }\n    if (aValue < bValue) {\n      return -1;\n    } else if (aValue > bValue) {\n      return 1;\n    }\n    return 0;\n  }\n  var SortBy = /*#__PURE__*/function () {\n    function SortBy() {\n      _classCallCheck(this, SortBy);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      var array = args[0];\n      if (typeof array.toArray === \"function\") {\n        array = array.toArray();\n      }\n      this.array = _toConsumableArray(array);\n    }\n    return _createClass(SortBy, [{\n      key: \"comparator\",\n      value: function comparator(key) {\n        return typeof key === 'function' ? key : this.defaultSort(key);\n      }\n    }, {\n      key: \"defaultSort\",\n      value: function defaultSort(sortKey) {\n        var func = sortAsc;\n        if (sortKey.match(':desc')) {\n          func = sortDesc;\n        }\n        return function (a, b) {\n          return func(sortKey.replace(/:desc|:asc/, ''), a, b);\n        };\n      }\n    }]);\n  }();\n  /**\n   * best O(n); worst O(n^2)\n   * If we feel like swapping with something more performant like QuickSort or MergeSort\n   * then it should be easy\n   *\n   * @class BubbleSort\n   * @extends SortBy\n   */\n  var BubbleSort = /*#__PURE__*/function (_SortBy) {\n    function BubbleSort() {\n      _classCallCheck(this, BubbleSort);\n      return _callSuper(this, BubbleSort, arguments);\n    }\n    _inherits(BubbleSort, _SortBy);\n    return _createClass(BubbleSort, [{\n      key: \"perform\",\n      value: function perform() {\n        var _this = this;\n        var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n        var swapped = false;\n        var compFuncs = keys.map(function (key) {\n          return _this.comparator(key);\n        });\n        var compFunc = function compFunc(a, b) {\n          for (var i = 0; i < compFuncs.length; i += 1) {\n            var result = compFuncs[i](a, b);\n            if (result === 0) {\n              continue;\n            }\n            return result;\n          }\n          return 0;\n        };\n        for (var i = 1; i < this.array.length; i += 1) {\n          for (var j = 0; j < this.array.length - i; j += 1) {\n            var shouldSwap = normalizeToBoolean(compFunc(this.array[j + 1], this.array[j]));\n            if (shouldSwap) {\n              var _ref = [this.array[j + 1], this.array[j]];\n              this.array[j] = _ref[0];\n              this.array[j + 1] = _ref[1];\n              swapped = true;\n            }\n          }\n\n          // no need to continue sort if not swapped in any inner iteration\n          if (!swapped) {\n            return this.array;\n          }\n        }\n      }\n    }]);\n  }(SortBy);\n  function sortBy(params) {\n    // slice params to avoid mutating the provided params\n    var sortParams = params.slice();\n    var array = (0, _asArray.default)(sortParams.pop());\n    var sortKeys = sortParams;\n    if (!array || !sortKeys || sortKeys.length === 0) {\n      return [];\n    }\n    if (sortKeys.length === 1 && Array.isArray(sortKeys[0])) {\n      sortKeys = sortKeys[0];\n    }\n    var sortKlass = new BubbleSort(array);\n    sortKlass.perform(sortKeys);\n    return sortKlass.array;\n  }\n  var _default = _exports.default = (0, _helper.helper)(sortBy);\n});","define(\"ember-composable-helpers/helpers/take\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.take = take;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function take(_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      takeAmount = _ref2[0],\n      array = _ref2[1];\n    return (0, _asArray.default)(array).slice(0, takeAmount);\n  }\n  var _default = _exports.default = (0, _helper.helper)(take);\n});","define(\"ember-composable-helpers/helpers/toggle-action\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/helpers/toggle\", \"ember-composable-helpers/-private/closure-action\"], function (_exports, _helper, _toggle, _closureAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var closureToggle = _toggle.toggle;\n  if (_closureAction.default) {\n    closureToggle[_closureAction.default] = true;\n  }\n  var _default = _exports.default = (0, _helper.helper)(closureToggle);\n});","define(\"ember-composable-helpers/helpers/toggle\", [\"exports\", \"@ember/component/helper\", \"@ember/object\", \"@ember/utils\"], function (_exports, _helper, _object, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.toggle = toggle;\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function nextIndex(length, currentIdx) {\n    if (currentIdx === -1 || currentIdx + 1 === length) {\n      return 0;\n    }\n    return currentIdx + 1;\n  }\n  function toggle(_ref) {\n    var _ref2 = _toArray(_ref),\n      prop = _ref2[0],\n      obj = _ref2[1],\n      values = _ref2.slice(2);\n    return function () {\n      var currentValue = (0, _object.get)(obj, prop);\n      if ((0, _utils.isPresent)(values)) {\n        var currentIdx = values.indexOf(currentValue);\n        var nextIdx = nextIndex(values.length, currentIdx);\n        return (0, _object.set)(obj, prop, values[nextIdx]);\n      }\n      return (0, _object.set)(obj, prop, !currentValue);\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(toggle);\n});","define(\"ember-composable-helpers/helpers/union\", [\"exports\", \"@ember/component/helper\", \"ember-composable-helpers/utils/as-array\"], function (_exports, _helper, _asArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.union = union;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function union(_ref) {\n    var _ref3;\n    var _ref2 = _toArray(_ref),\n      arrays = _ref2.slice(0);\n    var items = (_ref3 = []).concat.apply(_ref3, _toConsumableArray(arrays));\n    return items.filter(function (value, index, array) {\n      return (0, _asArray.default)(array).indexOf(value) === index;\n    });\n  }\n  var _default = _exports.default = (0, _helper.helper)(union);\n});","define(\"ember-composable-helpers/helpers/values\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.values = values;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function values(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      object = _ref2[0];\n    if (!object) {\n      return object;\n    }\n    return Object.values(object);\n  }\n  var _default = _exports.default = (0, _helper.helper)(values);\n});","define(\"ember-composable-helpers/helpers/without\", [\"exports\", \"@ember/component/helper\", \"@ember/array\"], function (_exports, _helper, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.without = without;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function contains(needle, haystack) {\n    return (0, _array.A)(haystack).includes(needle);\n  }\n  function without(needle, haystack) {\n    if (!(0, _array.isArray)(haystack)) {\n      return false;\n    }\n    if ((0, _array.isArray)(needle) && needle.length) {\n      return haystack.reduce(function (acc, val) {\n        return contains(val, needle) ? acc : acc.concat(val);\n      }, []);\n    }\n    return (0, _array.A)(haystack).without(needle);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      needle = _ref2[0],\n      haystack = _ref2[1];\n    return without(needle, haystack);\n  });\n});","define(\"ember-composable-helpers/index\", [\"exports\", \"ember-composable-helpers/helpers/append\", \"ember-composable-helpers/helpers/chunk\", \"ember-composable-helpers/helpers/compact\", \"ember-composable-helpers/helpers/compute\", \"ember-composable-helpers/helpers/contains\", \"ember-composable-helpers/helpers/dec\", \"ember-composable-helpers/helpers/drop\", \"ember-composable-helpers/helpers/filter-by\", \"ember-composable-helpers/helpers/filter\", \"ember-composable-helpers/helpers/find-by\", \"ember-composable-helpers/helpers/flatten\", \"ember-composable-helpers/helpers/group-by\", \"ember-composable-helpers/helpers/has-next\", \"ember-composable-helpers/helpers/has-previous\", \"ember-composable-helpers/helpers/inc\", \"ember-composable-helpers/helpers/intersect\", \"ember-composable-helpers/helpers/invoke\", \"ember-composable-helpers/helpers/join\", \"ember-composable-helpers/helpers/map-by\", \"ember-composable-helpers/helpers/map\", \"ember-composable-helpers/helpers/next\", \"ember-composable-helpers/helpers/object-at\", \"ember-composable-helpers/helpers/optional\", \"ember-composable-helpers/helpers/pipe-action\", \"ember-composable-helpers/helpers/pipe\", \"ember-composable-helpers/helpers/previous\", \"ember-composable-helpers/helpers/queue\", \"ember-composable-helpers/helpers/range\", \"ember-composable-helpers/helpers/reduce\", \"ember-composable-helpers/helpers/reject-by\", \"ember-composable-helpers/helpers/repeat\", \"ember-composable-helpers/helpers/reverse\", \"ember-composable-helpers/helpers/shuffle\", \"ember-composable-helpers/helpers/slice\", \"ember-composable-helpers/helpers/sort-by\", \"ember-composable-helpers/helpers/take\", \"ember-composable-helpers/helpers/toggle-action\", \"ember-composable-helpers/helpers/toggle\", \"ember-composable-helpers/helpers/union\", \"ember-composable-helpers/helpers/without\"], function (_exports, _append, _chunk, _compact, _compute, _contains, _dec, _drop, _filterBy, _filter, _findBy, _flatten, _groupBy, _hasNext, _hasPrevious, _inc, _intersect, _invoke, _join, _mapBy, _map, _next, _objectAt, _optional, _pipeAction, _pipe, _previous, _queue, _range, _reduce, _rejectBy, _repeat, _reverse, _shuffle, _slice, _sortBy, _take, _toggleAction, _toggle, _union, _without) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"AppendHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _append.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ChunkHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _chunk.default;\n    }\n  });\n  Object.defineProperty(_exports, \"CompactHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _compact.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ComputeHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _compute.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ContainsHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _contains.default;\n    }\n  });\n  Object.defineProperty(_exports, \"DecHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _dec.default;\n    }\n  });\n  Object.defineProperty(_exports, \"DropHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _drop.default;\n    }\n  });\n  Object.defineProperty(_exports, \"FilterByHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _filterBy.default;\n    }\n  });\n  Object.defineProperty(_exports, \"FilterHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _filter.default;\n    }\n  });\n  Object.defineProperty(_exports, \"FindByHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _findBy.default;\n    }\n  });\n  Object.defineProperty(_exports, \"FlattenHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _flatten.default;\n    }\n  });\n  Object.defineProperty(_exports, \"GroupByHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _groupBy.default;\n    }\n  });\n  Object.defineProperty(_exports, \"HasNextHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _hasNext.default;\n    }\n  });\n  Object.defineProperty(_exports, \"HasPreviousHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _hasPrevious.default;\n    }\n  });\n  Object.defineProperty(_exports, \"IncHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _inc.default;\n    }\n  });\n  Object.defineProperty(_exports, \"IntersectHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _intersect.default;\n    }\n  });\n  Object.defineProperty(_exports, \"InvokeHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _invoke.default;\n    }\n  });\n  Object.defineProperty(_exports, \"JoinHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _join.default;\n    }\n  });\n  Object.defineProperty(_exports, \"MapByHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _mapBy.default;\n    }\n  });\n  Object.defineProperty(_exports, \"MapHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _map.default;\n    }\n  });\n  Object.defineProperty(_exports, \"NextHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _next.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ObjectAtHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _objectAt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"OptionalHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _optional.default;\n    }\n  });\n  Object.defineProperty(_exports, \"PipeActionHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _pipeAction.default;\n    }\n  });\n  Object.defineProperty(_exports, \"PipeHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _pipe.default;\n    }\n  });\n  Object.defineProperty(_exports, \"PreviousHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _previous.default;\n    }\n  });\n  Object.defineProperty(_exports, \"QueueHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _queue.default;\n    }\n  });\n  Object.defineProperty(_exports, \"RangeHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _range.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ReduceHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _reduce.default;\n    }\n  });\n  Object.defineProperty(_exports, \"RejectByHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _rejectBy.default;\n    }\n  });\n  Object.defineProperty(_exports, \"RepeatHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _repeat.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ReverseHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _reverse.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ShuffleHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _shuffle.default;\n    }\n  });\n  Object.defineProperty(_exports, \"SliceHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _slice.default;\n    }\n  });\n  Object.defineProperty(_exports, \"SortByHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _sortBy.default;\n    }\n  });\n  Object.defineProperty(_exports, \"TakeHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _take.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ToggleActionHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _toggleAction.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ToggleHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.default;\n    }\n  });\n  Object.defineProperty(_exports, \"UnionHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _union.default;\n    }\n  });\n  Object.defineProperty(_exports, \"WithoutHelper\", {\n    enumerable: true,\n    get: function get() {\n      return _without.default;\n    }\n  });\n});","define(\"ember-composable-helpers/utils/as-array\", [\"exports\", \"@ember/array\", \"@ember/object\"], function (_exports, _array, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = asArray;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function isIterable(value) {\n    return Symbol.iterator in Object(value);\n  }\n\n  // from https://github.com/flexyford/ember-power-select/blob/78a5430c1ac89daf315d0801fd5201e444e82434/addon/components/power-select.ts\n  function isArrayable(thing) {\n    return typeof thing.toArray === 'function';\n  }\n  function isPromiseLike(thing) {\n    return typeof thing.then === 'function';\n  }\n  function isPromiseProxyLike(thing) {\n    return isPromiseLike(thing) && Object.hasOwnProperty.call(thing, 'content');\n  }\n  function toExtendable(array) {\n    if (!Object.isExtensible(array)) {\n      return Array.from(array);\n    } else {\n      return array;\n    }\n  }\n  function asArray(maybeArray) {\n    return toExtendable(_asArray(maybeArray));\n  }\n  function _asArray(maybeArray) {\n    if (typeof maybeArray === 'number') {\n      throw new Error('Numbers not supported as arrays [ember-composable-helpers]');\n    }\n    if (typeof maybeArray === 'string') {\n      return maybeArray.split('');\n    }\n    // for perf-reasons falling back to e-array, instead of using it first\n    if (Array.isArray(maybeArray)) {\n      return maybeArray;\n    } else if ((0, _array.isArray)(maybeArray)) {\n      return maybeArray;\n    } else if (_typeof(maybeArray) === 'object' && maybeArray === null) {\n      return [];\n    } else if (typeof maybeArray === 'undefined') {\n      return [];\n    } else if (maybeArray instanceof Set) {\n      return Array.from(maybeArray.values());\n    } else if (maybeArray instanceof Map) {\n      return Array.from(maybeArray.values());\n    } else if (maybeArray instanceof WeakMap) {\n      throw new Error('WeakMaps is not supported as arrays [ember-composable-helpers]');\n    } else if (maybeArray instanceof WeakSet) {\n      throw new Error('WeakSets is not supported as arrays [ember-composable-helpers]');\n    }\n    if (_typeof(maybeArray) === 'object') {\n      if (isPromiseProxyLike(maybeArray)) {\n        var content = (0, _object.get)(maybeArray, 'content');\n        if (_typeof(content) !== 'object' || content === null) {\n          throw new Error('Unknown content type in array-like object [ember-composable-helpers]');\n        }\n        if (isArrayable(content)) {\n          return content.toArray();\n        } else {\n          return _asArray(content);\n        }\n      }\n      if (isPromiseLike(maybeArray)) {\n        throw new Error('Promise-like objects is not supported as arrays [ember-composable-helpers]');\n      }\n      if (isArrayable(maybeArray)) {\n        return maybeArray.toArray();\n      }\n      if (maybeArray instanceof _object.default) {\n        throw new Error('EmberObjects is not supported as arrays [ember-composable-helpers]');\n      }\n      return Array.from(Object.values(maybeArray));\n    }\n    if (!maybeArray) {\n      return [];\n    }\n    if (!isIterable(maybeArray)) {\n      throw new Error('Argument, passed as array is not iterable [ember-composable-helpers]');\n    }\n    return maybeArray;\n  }\n});","define(\"ember-composable-helpers/utils/comparison\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.gt = gt;\n  _exports.gte = gte;\n  _exports.lt = lt;\n  _exports.lte = lte;\n  function lte(a, b) {\n    return a <= b;\n  }\n  function lt(a, b) {\n    return a < b;\n  }\n  function gte(a, b) {\n    return a >= b;\n  }\n  function gt(a, b) {\n    return a > b;\n  }\n});","define(\"ember-composable-helpers/utils/get-index\", [\"exports\", \"@ember/array\", \"ember-composable-helpers/utils/is-equal\"], function (_exports, _array, _isEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = getIndex;\n  function getIndex(array, currentValue, useDeepEqual) {\n    var needle = currentValue;\n    if (useDeepEqual) {\n      needle = (0, _array.A)(array).find(function (object) {\n        return (0, _isEqual.default)(object, currentValue, useDeepEqual);\n      });\n    }\n    var index = (0, _array.A)(array).indexOf(needle);\n    return index >= 0 ? index : null;\n  }\n});","define(\"ember-composable-helpers/utils/is-equal\", [\"exports\", \"@ember/utils\"], function (_exports, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isEqual;\n  function isEqual(firstValue, secondValue) {\n    var useDeepEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    if (useDeepEqual) {\n      return JSON.stringify(firstValue) === JSON.stringify(secondValue);\n    } else {\n      return (0, _utils.isEqual)(firstValue, secondValue) || (0, _utils.isEqual)(secondValue, firstValue);\n    }\n  }\n});","define(\"ember-composable-helpers/utils/is-object\", [\"exports\", \"@ember/utils\"], function (_exports, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isObject;\n  function isObject(val) {\n    return (0, _utils.typeOf)(val) === 'object' || (0, _utils.typeOf)(val) === 'instance';\n  }\n});","define(\"ember-composable-helpers/utils/is-promise\", [\"exports\", \"@ember/utils\", \"ember-composable-helpers/utils/is-object\"], function (_exports, _utils, _isObject) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isPromise;\n  function isPromiseLike() {\n    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return (0, _utils.typeOf)(obj.then) === 'function' && (0, _utils.typeOf)(obj.catch) === 'function';\n  }\n  function isPromise(obj) {\n    return (0, _isObject.default)(obj) && isPromiseLike(obj);\n  }\n});","define(\"ember-concurrency-decorators/index\", [\"exports\", \"@ember-decorators/utils/decorator\", \"@ember/debug\", \"ember-concurrency\", \"ember-concurrency-decorators/last-value\"], function (_exports, _decorator, _debug, _emberConcurrency, _lastValue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.keepLatestTaskGroup = _exports.keepLatestTask = _exports.enqueueTaskGroup = _exports.enqueueTask = _exports.dropTaskGroup = _exports.dropTask = void 0;\n  Object.defineProperty(_exports, \"lastValue\", {\n    enumerable: true,\n    get: function get() {\n      return _lastValue.default;\n    }\n  });\n  _exports.taskGroup = _exports.task = _exports.restartableTaskGroup = _exports.restartableTask = void 0;\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n  /**\n   * This utility function assures compatibility with the Ember object model style\n   * and initializer syntax required by Babel 6.\n   *\n   * For native classes using the method shorthand style (TypeScript & Babel 7),\n   * this function will access the `value`. For legacy code it will get the value\n   * from the initializer.\n   *\n   * // Ember object model\n   * export default EmberObject.extend({\n   *   @task\n   *   someTask: function*() {}\n   * });\n   *\n   * // Class syntax with initializers\n   * export default class extends EmberObject {\n   *   @task\n   *   someTask = function*() {}\n   * }\n   *\n   * @param desc\n   * @returns {object|null}\n   * @private\n   */\n  function extractValue(desc) {\n    if (typeof desc.initializer === 'function') {\n      return desc.initializer.call(undefined);\n    }\n    if (typeof desc.get === 'function') {\n      return desc.get.call(undefined);\n    }\n    if (desc.value) {\n      return desc.value;\n    }\n    return undefined;\n  }\n  function isTaskFunction(value) {\n    return typeof value === 'function';\n  }\n  function isEncapsulatedTask(value) {\n    return _typeof(value) === 'object' && value !== null && isTaskFunction(value.perform);\n  }\n\n  /**\n   * Takes a `PropertyDescriptor` and turns it into an ember-concurrency\n   * `TaskProperty`.\n   *\n   * @param desc\n   * @returns {TaskProperty}\n   * @private\n   */\n  function createTaskFromDescriptor(desc) {\n    var value = extractValue(desc);\n    if (isTaskFunction(value)) {\n      return (0, _emberConcurrency.task)(value);\n    }\n    if (isEncapsulatedTask(value)) {\n      return (0, _emberConcurrency.task)(value);\n    }\n    (true && !(false) && (0, _debug.assert)('ember-concurrency-decorators: Can only decorate a generator function as a task or an object with a generator method `perform` as an encapsulated task.'));\n  }\n\n  /**\n   * Takes a `PropertyDescriptor` and turns it into an ember-concurrency\n   * `TaskGroupProperty`.\n   *\n   * @param desc\n   * @returns {TaskGroupProperty}\n   * @private\n   */\n  function createTaskGroupFromDescriptor(_desc) {\n    return (0, _emberConcurrency.taskGroup)();\n  }\n\n  /**\n   * Applies the `options` provided using the chaining API on the given `task`.\n   *\n   * @param options\n   * @param {TaskProperty|TaskGroupProperty} task\n   * @private\n   */\n\n  function applyOptions(options, task) {\n    var keys = Object.keys(options);\n    for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n      var key = _keys[_i];\n      var value = options[key];\n      (true && !(value !== undefined) && (0, _debug.assert)(\"ember-concurrency-decorators: Option '\".concat(key, \"' is not a valid value\"), value !== undefined));\n      (true && !(typeof task[key] === 'function') && (0, _debug.assert)(\"ember-concurrency-decorators: Option '\".concat(key, \"' is not a valid function\"), typeof task[key] === 'function'));\n      if (value === true) {\n        task[key]();\n      } else {\n        task[key](value);\n      }\n    }\n\n    // The CP decorator gets executed in `createDecorator`\n    return task;\n  }\n\n  /**\n   * Creates a decorator function that transforms the decorated property using the\n   * given `propertyCreator` and accepts an optional user provided options hash,\n   * that that will be merged with the `baseOptions`.\n   *\n   * @param {function} propertyCreator\n   * @param {object} [baseOptions={}]\n   * @private\n   */\n\n  function createDecorator(propertyCreator) {\n    var baseOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    return (0, _decorator.decoratorWithParams)(function (target, key, desc) {\n      var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [],\n        _ref2 = _slicedToArray(_ref, 1),\n        userOptions = _ref2[0];\n      var initializer = desc.initializer,\n        value = desc.value;\n      delete desc.initializer;\n      delete desc.value;\n      return applyOptions(_objectSpread(_objectSpread({}, baseOptions), userOptions), propertyCreator(_objectSpread(_objectSpread({}, desc), {}, {\n        initializer: initializer,\n        value: value\n      })))(target, key, desc);\n    });\n  }\n\n  /**\n   * Turns the decorated generator function into a task.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task. For instance `maxConcurrency`, `on`, `group` or `keepLatest`.\n   *\n   * ```js\n   * import EmberObject from '@ember/object';\n   * import { task } from 'ember-concurrency-decorators';\n   *\n   * class extends EmberObject {\n   *   @task\n   *   *plainTask() {}\n   *\n   *   @task({ maxConcurrency: 5, keepLatest: true, cancelOn: 'click' })\n   *   *taskWithModifiers() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskProperty}\n   */\n  var task = _exports.task = createDecorator(createTaskFromDescriptor);\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `restartable` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskProperty}\n   */\n  var restartableTask = _exports.restartableTask = createDecorator(createTaskFromDescriptor, {\n    restartable: true\n  });\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `drop` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskProperty}\n   */\n  var dropTask = _exports.dropTask = createDecorator(createTaskFromDescriptor, {\n    drop: true\n  });\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `keepLatest` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskProperty}\n   */\n  var keepLatestTask = _exports.keepLatestTask = createDecorator(createTaskFromDescriptor, {\n    keepLatest: true\n  });\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `enqueue` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskProperty}\n   */\n  var enqueueTask = _exports.enqueueTask = createDecorator(createTaskFromDescriptor, {\n    enqueue: true\n  });\n\n  /**\n   * Turns the decorated property into a task group.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task group. For instance `maxConcurrency` or `keepLatest`.\n   *\n   * ```js\n   * import EmberObject from '@ember/object';\n   * import { task taskGroup } from 'ember-concurrency-decorators';\n   *\n   * class extends EmberObject {\n   *   @taskGroup({ maxConcurrency: 5 }) someTaskGroup;\n   *\n   *   @task({ group: 'someTaskGroup' })\n   *   *someTask() {}\n   *\n   *   @task({ group: 'someTaskGroup' })\n   *   *anotherTask() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskGroupProperty}\n   */\n  var taskGroup = _exports.taskGroup = createDecorator(createTaskGroupFromDescriptor);\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `restartable` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskGroupProperty}\n   */\n  var restartableTaskGroup = _exports.restartableTaskGroup = createDecorator(createTaskGroupFromDescriptor, {\n    restartable: true\n  });\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `drop` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskGroupProperty}\n   */\n  var dropTaskGroup = _exports.dropTaskGroup = createDecorator(createTaskGroupFromDescriptor, {\n    drop: true\n  });\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `keepLatest` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskGroupProperty}\n   */\n  var keepLatestTaskGroup = _exports.keepLatestTaskGroup = createDecorator(createTaskGroupFromDescriptor, {\n    keepLatest: true\n  });\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `enqueue` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}]\n   * @return {TaskGroupProperty}\n   */\n  var enqueueTaskGroup = _exports.enqueueTaskGroup = createDecorator(createTaskGroupFromDescriptor, {\n    enqueue: true\n  });\n});","define(\"ember-concurrency-decorators/last-value\", [\"exports\", \"@ember-decorators/utils/decorator\", \"@ember/debug\", \"@ember/object\"], function (_exports, _decorator, _debug, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n   * This decorator allows you to alias a property to the result of a task. You can also provide a default value to use before the task has completed.\n   *\n   * ```js\n   * import Component from '@ember/component';\n   * import { task } from 'ember-concurrency-decorators';\n   * import { lastValue } from 'ember-concurrency-decorators';\n   *\n   * export default class ExampleComponent extends Component {\n   *   @task\n   *   someTask = function*() {\n   *     // ...\n   *   };\n   *\n   *   @lastValue('someTask')\n   *   someTaskValue;\n   *\n   *   @lastValue('someTask')\n   *   someTaskValueWithDefault = 'A default value';\n   * }\n   * ```\n   *\n   * @function\n   * @param {string} taskName the name of the task to read a value from\n   */\n  // eslint-disable-next-line func-names\n  var _default = _exports.default = (0, _decorator.decoratorWithRequiredParams)(function lastValue(target, key, desc, _ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      taskName = _ref2[0];\n    (true && !(typeof taskName === 'string') && (0, _debug.assert)(\"ember-concurrency-decorators: @lastValue expects a task name as the first parameter.\", typeof taskName === 'string'));\n    var initializer = desc.initializer;\n    delete desc.initializer;\n    var cp = (0, _object.computed)(\"\".concat(taskName, \".lastSuccessful\"), function () {\n      var lastInstance = (0, _object.get)(this, \"\".concat(taskName, \".lastSuccessful\"));\n      if (lastInstance) {\n        return (0, _object.get)(lastInstance, 'value');\n      }\n      if (initializer) {\n        return initializer.call(this);\n      }\n      return undefined;\n    });\n\n    // @ts-ignore\n    return cp(target, key, desc);\n  });\n});","define(\"ember-concurrency-ts/async\", [], function () {\n  \"use strict\";\n});","define(\"ember-concurrency-ts/index\", [\"exports\", \"@ember/debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.perform = perform;\n  _exports.taskFor = taskFor;\n  function taskFor(task) {\n    (true && !(task && (typeof task === 'function' || typeof task.perform === 'function')) && (0, _debug.assert)(\"\".concat(task, \" does not appear to be a task!\"), task && (typeof task === 'function' || typeof task.perform === 'function')));\n    return task;\n  }\n  function perform(task) {\n    (true && !(task && typeof task.perform === 'function') && (0, _debug.assert)(\"\".concat(task, \" does not appear to be a task!\"), task && typeof task.perform === 'function'));\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return task.perform.apply(task, args);\n  }\n});","define(\"ember-concurrency/-private/async-arrow-runtime\", [\"exports\", \"ember-concurrency/-private/task-factory\"], function (_exports, _taskFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.buildTask = buildTask;\n  /**\n   * This builder function is called by the transpiled code from\n   * `task(async () => {})`. See lib/babel-plugin-transform-ember-concurrency-async-tasks.js\n   *\n   * @private\n   */\n  function buildTask(contextFn, options, taskName, bufferPolicyName) {\n    var optionsWithBufferPolicy = options;\n    if (bufferPolicyName) {\n      optionsWithBufferPolicy = Object.assign({}, optionsWithBufferPolicy);\n      optionsWithBufferPolicy[bufferPolicyName] = true;\n    }\n    var result = contextFn();\n    var taskFactory = new _taskFactory.TaskFactory(taskName || '<unknown>', result.generator, optionsWithBufferPolicy);\n    return taskFactory.createTask(result.context);\n  }\n});","define(\"ember-concurrency/-private/cancelable-promise-helpers\", [\"exports\", \"@ember/debug\", \"rsvp\", \"ember-concurrency/-private/task-instance\", \"ember-concurrency/-private/external/yieldables\"], function (_exports, _debug, _rsvp, _taskInstance, _yieldables) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.race = _exports.hashSettled = _exports.hash = _exports.allSettled = _exports.all = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  /**\n   * A cancelation-aware variant of [Promise.all](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all).\n   * The normal version of a `Promise.all` just returns a regular, uncancelable\n   * Promise. The `ember-concurrency` variant of `all()` has the following\n   * additional behavior:\n   *\n   * - if the task that `yield`ed `all()` is canceled, any of the\n   *   {@linkcode TaskInstance}s passed in to `all` will be canceled\n   * - if any of the {@linkcode TaskInstance}s (or regular promises) passed in reject (or\n   *   are canceled), all of the other unfinished `TaskInstance`s will\n   *   be automatically canceled.\n   *\n   * [Check out the \"Awaiting Multiple Child Tasks example\"](/docs/examples/joining-tasks)\n   */\n  var all = _exports.all = taskAwareVariantOf(_rsvp.default.Promise, 'all', identity);\n\n  /**\n   * A cancelation-aware variant of [RSVP.allSettled](https://api.emberjs.com/ember/release/functions/rsvp/allSettled).\n   * The normal version of a `RSVP.allSettled` just returns a regular, uncancelable\n   * Promise. The `ember-concurrency` variant of `allSettled()` has the following\n   * additional behavior:\n   *\n   * - if the task that `yield`ed `allSettled()` is canceled, any of the\n   *   {@linkcode TaskInstance}s passed in to `allSettled` will be canceled\n   */\n  var allSettled = _exports.allSettled = taskAwareVariantOf(_rsvp.default, 'allSettled', identity);\n\n  /**\n   * A cancelation-aware variant of [Promise.race](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race).\n   * The normal version of a `Promise.race` just returns a regular, uncancelable\n   * Promise. The `ember-concurrency` variant of `race()` has the following\n   * additional behavior:\n   *\n   * - if the task that `yield`ed `race()` is canceled, any of the\n   *   {@linkcode TaskInstance}s passed in to `race` will be canceled\n   * - once any of the tasks/promises passed in complete (either success, failure,\n   *   or cancelation), any of the {@linkcode TaskInstance}s passed in will be canceled\n   *\n   * [Check out the \"Awaiting Multiple Child Tasks example\"](/docs/examples/joining-tasks)\n   */\n  var race = _exports.race = taskAwareVariantOf(_rsvp.Promise, 'race', identity);\n\n  /**\n   * A cancelation-aware variant of [RSVP.hash](https://api.emberjs.com/ember/release/functions/rsvp/hash).\n   * The normal version of a `RSVP.hash` just returns a regular, uncancelable\n   * Promise. The `ember-concurrency` variant of `hash()` has the following\n   * additional behavior:\n   *\n   * - if the task that `yield`ed `hash()` is canceled, any of the\n   *   {@linkcode TaskInstance}s passed in to `hash` will be canceled\n   * - if any of the items rejects/cancels, all other cancelable items\n   *   (e.g. {@linkcode TaskInstance}s) will be canceled\n   */\n  var hash = _exports.hash = taskAwareVariantOf(_rsvp.default, 'hash', getValues);\n\n  /**\n   * A cancelation-aware variant of [RSVP.hashSettled](https://api.emberjs.com/ember/release/functions/rsvp/hashSettled).\n   * The normal version of a `RSVP.hashSettled` just returns a regular, uncancelable\n   * Promise. The `ember-concurrency` variant of `hashSettled()` has the following\n   * additional behavior:\n   *\n   * - if the task that `yield`ed `hashSettled()` is canceled, any of the\n   *   {@linkcode TaskInstance}s passed in to `hashSettled` will be canceled\n   */\n  var hashSettled = _exports.hashSettled = taskAwareVariantOf(_rsvp.default, 'hashSettled', getValues);\n  function identity(obj) {\n    return obj;\n  }\n  function getValues(obj) {\n    return Object.keys(obj).map(function (k) {\n      return obj[k];\n    });\n  }\n  function castForPromiseHelper(castable) {\n    if (castable) {\n      if (castable instanceof _taskInstance.TaskInstance) {\n        // Mark TaskInstances, including those that performed synchronously and\n        // have finished already, as having their errors handled, as if they had\n        // been then'd, which this is emulating.\n        castable.executor.asyncErrorsHandled = true;\n      } else if (castable instanceof _yieldables.Yieldable) {\n        // Cast to promise\n        return castable._toPromise();\n      }\n    }\n    return castable;\n  }\n  function castAwaitables(arrOrHash, callback) {\n    if (Array.isArray(arrOrHash)) {\n      return arrOrHash.map(callback);\n    } else if (_typeof(arrOrHash) === 'object' && arrOrHash !== null) {\n      var obj = {};\n      Object.keys(arrOrHash).forEach(function (key) {\n        obj[key] = callback(arrOrHash[key]);\n      });\n      return obj;\n    } else {\n      // :shruggie:\n      return arrOrHash;\n    }\n  }\n  function taskAwareVariantOf(obj, method, getItems) {\n    return function (awaitable) {\n      var awaitables = castAwaitables(awaitable, castForPromiseHelper);\n      var items = getItems(awaitables);\n      (true && !(Array.isArray(items)) && (0, _debug.assert)(\"'\".concat(method, \"' expects an array.\"), Array.isArray(items)));\n      var defer = _rsvp.default.defer();\n      obj[method](awaitables).then(defer.resolve, defer.reject);\n      var hasCancelled = false;\n      var cancelAll = function cancelAll() {\n        if (hasCancelled) {\n          return;\n        }\n        hasCancelled = true;\n        items.forEach(function (it) {\n          if (it) {\n            if (it instanceof _taskInstance.TaskInstance) {\n              it.cancel();\n            } else if (typeof it[_yieldables.cancelableSymbol] === 'function') {\n              it[_yieldables.cancelableSymbol]();\n            }\n          }\n        });\n      };\n      var promise = defer.promise.finally(cancelAll);\n      promise[_yieldables.cancelableSymbol] = cancelAll;\n      return promise;\n    };\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/ember-environment\", [\"exports\", \"ember\", \"rsvp\", \"ember-concurrency/-private/external/environment\", \"@ember/debug\", \"@ember/runloop\"], function (_exports, _ember, _rsvp, _environment, _debug, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.EmberEnvironment = _exports.EMBER_ENVIRONMENT = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var EmberEnvironment = _exports.EmberEnvironment = /*#__PURE__*/function (_Environment) {\n    function EmberEnvironment() {\n      _classCallCheck(this, EmberEnvironment);\n      return _callSuper(this, EmberEnvironment, arguments);\n    }\n    _inherits(EmberEnvironment, _Environment);\n    return _createClass(EmberEnvironment, [{\n      key: \"assert\",\n      value: function assert() {\n        (true && !(false) && _debug.assert.apply(void 0, arguments));\n      }\n    }, {\n      key: \"async\",\n      value: function async(callback) {\n        (0, _runloop.join)(function () {\n          return (0, _runloop.schedule)('actions', callback);\n        });\n      }\n    }, {\n      key: \"reportUncaughtRejection\",\n      value: function reportUncaughtRejection(error) {\n        (0, _runloop.next)(null, function () {\n          if (_ember.default.onerror) {\n            _ember.default.onerror(error);\n          } else {\n            throw error;\n          }\n        });\n      }\n    }, {\n      key: \"defer\",\n      value: function defer() {\n        return (0, _rsvp.defer)();\n      }\n    }, {\n      key: \"globalDebuggingEnabled\",\n      value: function globalDebuggingEnabled() {\n        return _ember.default.ENV.DEBUG_TASKS;\n      }\n    }]);\n  }(_environment.Environment);\n  var EMBER_ENVIRONMENT = _exports.EMBER_ENVIRONMENT = new EmberEnvironment();\n});","define(\"ember-concurrency/-private/external/environment\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Environment = _exports.DEFAULT_ENVIRONMENT = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var Environment = _exports.Environment = /*#__PURE__*/function () {\n    function Environment() {\n      _classCallCheck(this, Environment);\n    }\n    return _createClass(Environment, [{\n      key: \"assert\",\n      value: function assert() {}\n    }, {\n      key: \"async\",\n      value: function async(callback) {\n        Promise.resolve().then(callback);\n      }\n    }, {\n      key: \"reportUncaughtRejection\",\n      value: function reportUncaughtRejection() {\n        this.async(function (error) {\n          throw error;\n        });\n      }\n    }, {\n      key: \"defer\",\n      value: function defer() {\n        var deferable = {\n          promise: null,\n          resolve: null,\n          reject: null\n        };\n        var promise = new Promise(function (resolve, reject) {\n          deferable.resolve = resolve;\n          deferable.reject = reject;\n        });\n        deferable.promise = promise;\n        return deferable;\n      }\n    }, {\n      key: \"globalDebuggingEnabled\",\n      value: function globalDebuggingEnabled() {\n        return false;\n      }\n    }]);\n  }();\n  var DEFAULT_ENVIRONMENT = _exports.DEFAULT_ENVIRONMENT = new Environment();\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/external/generator-state\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.GeneratorStepResult = _exports.GeneratorState = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  var GeneratorStepResult = _exports.GeneratorStepResult = /*#__PURE__*/_createClass(function GeneratorStepResult(value, done, errored) {\n    _classCallCheck(this, GeneratorStepResult);\n    this.value = value;\n    this.done = done;\n    this.errored = errored;\n  });\n  var GeneratorState = _exports.GeneratorState = /*#__PURE__*/function () {\n    function GeneratorState(generatorFactory) {\n      _classCallCheck(this, GeneratorState);\n      this.done = false;\n      this.generatorFactory = generatorFactory;\n      this.iterator = null;\n    }\n    return _createClass(GeneratorState, [{\n      key: \"step\",\n      value: function step(resolvedValue, iteratorMethod) {\n        try {\n          var iterator = this.getIterator();\n          var _iterator$iteratorMet = iterator[iteratorMethod](resolvedValue),\n            value = _iterator$iteratorMet.value,\n            done = _iterator$iteratorMet.done;\n          if (done) {\n            return this.finalize(value, false);\n          } else {\n            return new GeneratorStepResult(value, false, false);\n          }\n        } catch (e) {\n          return this.finalize(e, true);\n        }\n      }\n    }, {\n      key: \"getIterator\",\n      value: function getIterator() {\n        if (!this.iterator && !this.done) {\n          this.iterator = this.generatorFactory();\n        }\n        return this.iterator;\n      }\n    }, {\n      key: \"finalize\",\n      value: function finalize(value, errored) {\n        this.done = true;\n        this.iterator = null;\n        return new GeneratorStepResult(value, true, errored);\n      }\n    }]);\n  }();\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/external/scheduler/policies/bounded-policy\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  var BoundedPolicy = /*#__PURE__*/_createClass(function BoundedPolicy(maxConcurrency) {\n    _classCallCheck(this, BoundedPolicy);\n    this.maxConcurrency = maxConcurrency || 1;\n  });\n  var _default = _exports.default = BoundedPolicy;\n});","define(\"ember-concurrency/-private/external/scheduler/policies/drop-policy\", [\"exports\", \"ember-concurrency/-private/external/scheduler/policies/bounded-policy\", \"ember-concurrency/-private/external/scheduler/policies/execution-states\"], function (_exports, _boundedPolicy, _executionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var CANCELLED = (0, _executionStates.makeCancelState)(\"it belongs to a 'drop' Task that was already running\");\n  var DropReducer = /*#__PURE__*/function () {\n    function DropReducer(remainingSlots) {\n      _classCallCheck(this, DropReducer);\n      this.remainingSlots = remainingSlots;\n    }\n    return _createClass(DropReducer, [{\n      key: \"step\",\n      value: function step() {\n        if (this.remainingSlots > 0) {\n          this.remainingSlots--;\n          return _executionStates.STARTED;\n        }\n        return CANCELLED;\n      }\n    }]);\n  }();\n  var DropPolicy = /*#__PURE__*/function (_BoundedPolicy) {\n    function DropPolicy() {\n      _classCallCheck(this, DropPolicy);\n      return _callSuper(this, DropPolicy, arguments);\n    }\n    _inherits(DropPolicy, _BoundedPolicy);\n    return _createClass(DropPolicy, [{\n      key: \"makeReducer\",\n      value: function makeReducer() {\n        return new DropReducer(this.maxConcurrency);\n      }\n    }]);\n  }(_boundedPolicy.default);\n  var _default = _exports.default = DropPolicy;\n});","define(\"ember-concurrency/-private/external/scheduler/policies/enqueued-policy\", [\"exports\", \"ember-concurrency/-private/external/scheduler/policies/bounded-policy\", \"ember-concurrency/-private/external/scheduler/policies/execution-states\"], function (_exports, _boundedPolicy, _executionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var EnqueuedReducer = /*#__PURE__*/function () {\n    function EnqueuedReducer(remainingSlots) {\n      _classCallCheck(this, EnqueuedReducer);\n      this.remainingSlots = remainingSlots;\n    }\n    return _createClass(EnqueuedReducer, [{\n      key: \"step\",\n      value: function step() {\n        if (this.remainingSlots > 0) {\n          this.remainingSlots--;\n          return _executionStates.STARTED;\n        } else {\n          return _executionStates.QUEUED;\n        }\n      }\n    }]);\n  }();\n  var EnqueuedPolicy = /*#__PURE__*/function (_BoundedPolicy) {\n    function EnqueuedPolicy() {\n      _classCallCheck(this, EnqueuedPolicy);\n      return _callSuper(this, EnqueuedPolicy, arguments);\n    }\n    _inherits(EnqueuedPolicy, _BoundedPolicy);\n    return _createClass(EnqueuedPolicy, [{\n      key: \"makeReducer\",\n      value: function makeReducer() {\n        return new EnqueuedReducer(this.maxConcurrency);\n      }\n    }]);\n  }(_boundedPolicy.default);\n  var _default = _exports.default = EnqueuedPolicy;\n});","define(\"ember-concurrency/-private/external/scheduler/policies/execution-states\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.makeCancelState = _exports.TYPE_STARTED = _exports.TYPE_QUEUED = _exports.TYPE_CANCELLED = _exports.STARTED = _exports.QUEUED = void 0;\n  var TYPE_CANCELLED = _exports.TYPE_CANCELLED = 'CANCELLED';\n  var TYPE_STARTED = _exports.TYPE_STARTED = 'STARTED';\n  var TYPE_QUEUED = _exports.TYPE_QUEUED = 'QUEUED';\n  var STARTED = _exports.STARTED = {\n    type: TYPE_STARTED\n  };\n  var QUEUED = _exports.QUEUED = {\n    type: TYPE_QUEUED\n  };\n  var makeCancelState = _exports.makeCancelState = function makeCancelState(reason) {\n    return {\n      type: TYPE_CANCELLED,\n      reason: reason\n    };\n  };\n});","define(\"ember-concurrency/-private/external/scheduler/policies/keep-latest-policy\", [\"exports\", \"ember-concurrency/-private/external/scheduler/policies/bounded-policy\", \"ember-concurrency/-private/external/scheduler/policies/execution-states\"], function (_exports, _boundedPolicy, _executionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var CANCELLED = (0, _executionStates.makeCancelState)(\"it belongs to a 'keepLatest' Task that was already running\");\n\n  // Given:\n  // - started tasks: [a,b,_]\n  // - queued tasks:  [c,d,e,f]\n  // KeepLatest will cancel all but the last queued task instance, producing:\n  // - started tasks: [a,b,c]\n  // - queued tasks: [f]\n\n  // TODO: perhaps we should expose another config for the number to keep enqueued.\n  //       this would also make sense for enqueued, e.g. perform a max of maxConcurrency\n  //       concurrent task instances, but after a number of queued instances has been\n  //       reached, they should be cancelled.\n  var KeepLatestReducer = /*#__PURE__*/function () {\n    function KeepLatestReducer(remainingSlots, numToCancel) {\n      _classCallCheck(this, KeepLatestReducer);\n      this.remainingSlots = remainingSlots;\n      this.numToCancel = numToCancel;\n    }\n    return _createClass(KeepLatestReducer, [{\n      key: \"step\",\n      value: function step() {\n        if (this.remainingSlots > 0) {\n          this.remainingSlots--;\n          return _executionStates.STARTED;\n        } else {\n          if (this.numToCancel > 0) {\n            this.numToCancel--;\n            return CANCELLED;\n          } else {\n            return _executionStates.QUEUED;\n          }\n        }\n      }\n    }]);\n  }();\n  var KeepLatestPolicy = /*#__PURE__*/function (_BoundedPolicy) {\n    function KeepLatestPolicy() {\n      _classCallCheck(this, KeepLatestPolicy);\n      return _callSuper(this, KeepLatestPolicy, arguments);\n    }\n    _inherits(KeepLatestPolicy, _BoundedPolicy);\n    return _createClass(KeepLatestPolicy, [{\n      key: \"makeReducer\",\n      value: function makeReducer(numRunning, numQueued) {\n        var maxEnqueued = 1;\n        var totalRunning = numRunning + numQueued;\n        return new KeepLatestReducer(this.maxConcurrency, totalRunning - this.maxConcurrency - maxEnqueued);\n      }\n    }]);\n  }(_boundedPolicy.default);\n  var _default = _exports.default = KeepLatestPolicy;\n});","define(\"ember-concurrency/-private/external/scheduler/policies/restartable-policy\", [\"exports\", \"ember-concurrency/-private/external/scheduler/policies/bounded-policy\", \"ember-concurrency/-private/external/scheduler/policies/execution-states\"], function (_exports, _boundedPolicy, _executionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var CANCELLED = (0, _executionStates.makeCancelState)(\"it belongs to a 'restartable' Task that was .perform()ed again\");\n  var RestartableReducer = /*#__PURE__*/function () {\n    function RestartableReducer(numToCancel) {\n      _classCallCheck(this, RestartableReducer);\n      this.numToCancel = numToCancel;\n    }\n    return _createClass(RestartableReducer, [{\n      key: \"step\",\n      value: function step() {\n        if (this.numToCancel > 0) {\n          this.numToCancel--;\n          return CANCELLED;\n        } else {\n          return _executionStates.STARTED;\n        }\n      }\n    }]);\n  }();\n  var RestartablePolicy = /*#__PURE__*/function (_BoundedPolicy) {\n    function RestartablePolicy() {\n      _classCallCheck(this, RestartablePolicy);\n      return _callSuper(this, RestartablePolicy, arguments);\n    }\n    _inherits(RestartablePolicy, _BoundedPolicy);\n    return _createClass(RestartablePolicy, [{\n      key: \"makeReducer\",\n      value: function makeReducer(numRunning, numQueued) {\n        return new RestartableReducer(numRunning + numQueued - this.maxConcurrency);\n      }\n    }]);\n  }(_boundedPolicy.default);\n  var _default = _exports.default = RestartablePolicy;\n});","define(\"ember-concurrency/-private/external/scheduler/policies/unbounded-policy\", [\"exports\", \"ember-concurrency/-private/external/scheduler/policies/execution-states\"], function (_exports, _executionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var UnboundedReducer = /*#__PURE__*/function () {\n    function UnboundedReducer() {\n      _classCallCheck(this, UnboundedReducer);\n    }\n    return _createClass(UnboundedReducer, [{\n      key: \"step\",\n      value: function step() {\n        return _executionStates.STARTED;\n      }\n    }]);\n  }();\n  var SINGLETON_REDUCER = new UnboundedReducer();\n  var UnboundedPolicy = /*#__PURE__*/function () {\n    function UnboundedPolicy() {\n      _classCallCheck(this, UnboundedPolicy);\n    }\n    return _createClass(UnboundedPolicy, [{\n      key: \"makeReducer\",\n      value: function makeReducer() {\n        return SINGLETON_REDUCER;\n      }\n    }]);\n  }();\n  var _default = _exports.default = UnboundedPolicy;\n});","define(\"ember-concurrency/-private/external/scheduler/refresh\", [\"exports\", \"ember-concurrency/-private/external/scheduler/policies/execution-states\"], function (_exports, _executionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var LAST_APPLIED_TAGS = new Map();\n  var Refresh = /*#__PURE__*/function () {\n    function Refresh(schedulerPolicy, stateTracker, taskInstances) {\n      _classCallCheck(this, Refresh);\n      this.stateTracker = stateTracker;\n      this.schedulerPolicy = schedulerPolicy;\n      this.initialTaskInstances = taskInstances;\n      this.startingInstances = [];\n    }\n    return _createClass(Refresh, [{\n      key: \"process\",\n      value: function process() {\n        var _this = this;\n        var _this$filterFinishedT = this.filterFinishedTaskInstances(),\n          _this$filterFinishedT2 = _slicedToArray(_this$filterFinishedT, 3),\n          taskInstances = _this$filterFinishedT2[0],\n          numRunning = _this$filterFinishedT2[1],\n          numQueued = _this$filterFinishedT2[2];\n        var reducer = this.schedulerPolicy.makeReducer(numRunning, numQueued);\n        var finalTaskInstances = taskInstances.filter(function (taskInstance) {\n          return _this.setTaskInstanceExecutionState(taskInstance, reducer.step());\n        });\n        this.stateTracker.computeFinalStates(function (state) {\n          return _this.applyState(state);\n        });\n        this.startingInstances.forEach(function (taskInstance) {\n          return taskInstance.start();\n        });\n        return finalTaskInstances;\n      }\n    }, {\n      key: \"filterFinishedTaskInstances\",\n      value: function filterFinishedTaskInstances() {\n        var _this2 = this;\n        var numRunning = 0,\n          numQueued = 0;\n        var taskInstances = this.initialTaskInstances.filter(function (taskInstance) {\n          var taskState = _this2.stateTracker.stateFor(taskInstance.task);\n          var executorState = taskInstance.executor.state;\n          if (executorState.isFinished) {\n            taskState.onCompletion(taskInstance);\n            return false;\n          }\n          if (executorState.hasStarted) {\n            numRunning += 1;\n          } else {\n            numQueued += 1;\n          }\n          return true;\n        });\n        return [taskInstances, numRunning, numQueued];\n      }\n    }, {\n      key: \"setTaskInstanceExecutionState\",\n      value: function setTaskInstanceExecutionState(taskInstance, desiredState) {\n        var taskState = this.stateTracker.stateFor(taskInstance.task);\n        if (!taskInstance.executor.counted) {\n          taskInstance.executor.counted = true;\n          taskState.onPerformed(taskInstance);\n        }\n        switch (desiredState.type) {\n          case _executionStates.TYPE_CANCELLED:\n            // this will cause a follow up flush which will detect and recompute cancellation state\n            taskInstance.cancel(desiredState.reason);\n            return false;\n          case _executionStates.TYPE_STARTED:\n            if (!taskInstance.executor.state.hasStarted) {\n              this.startingInstances.push(taskInstance);\n              taskState.onStart(taskInstance);\n            }\n            taskState.onRunning(taskInstance);\n            return true;\n          case _executionStates.TYPE_QUEUED:\n            taskState.onQueued(taskInstance);\n            // TODO: assert taskInstance hasn't started?\n            // Or perhaps this can be a way to pause a task?\n            return true;\n        }\n      }\n    }, {\n      key: \"applyState\",\n      value: function applyState(state) {\n        var taskable = state.taskable;\n        if (!taskable.onState) {\n          return;\n        }\n        var guid = taskable.guid;\n        if (LAST_APPLIED_TAGS.has(guid) && state.tag < LAST_APPLIED_TAGS.get(guid)) {\n          return;\n        }\n        var props = Object.assign({\n          numRunning: state.numRunning,\n          numQueued: state.numQueued,\n          numPerformedInc: state.numPerformedInc\n        }, state.attrs);\n        taskable.onState(props, taskable);\n        LAST_APPLIED_TAGS.set(guid, state.tag);\n      }\n    }]);\n  }();\n  var _default = _exports.default = Refresh;\n});","define(\"ember-concurrency/-private/external/scheduler/scheduler\", [\"exports\", \"ember-concurrency/-private/external/scheduler/refresh\", \"ember-concurrency/-private/external/scheduler/state-tracker/state-tracker\", \"ember-concurrency/-private/external/scheduler/state-tracker/null-state-tracker\"], function (_exports, _refresh, _stateTracker, _nullStateTracker) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  // Scheduler base class\n  // When a Task is performed, it creates an unstarted TaskInstance and\n  // passes it to the Scheduler to determine when it should run. The\n  // scheduler consults the schedulerPolicy (e.g. DropPolicy, RestartablePolicy, etc)\n  // to determine whether the task instance should start executing, be enqueued\n  // for later execution, or be immediately cancelled. As TaskInstances start\n  // and run to completion, the Scheduler's `refresh()` method is called to\n  // give it an opportunity to start (or cancel) previously enqueued task instances,\n  // as well as update the derived state on Tasks and TaskGroups.\n  // Every Task has its own Scheduler instance, unless it is part of a group,\n  // in which case all the Tasks in a group share a single Scheduler.\n  var Scheduler = /*#__PURE__*/function () {\n    function Scheduler(schedulerPolicy, stateTrackingEnabled) {\n      _classCallCheck(this, Scheduler);\n      this.schedulerPolicy = schedulerPolicy;\n      this.stateTrackingEnabled = stateTrackingEnabled;\n      this.taskInstances = [];\n    }\n    return _createClass(Scheduler, [{\n      key: \"cancelAll\",\n      value: function cancelAll(guid, cancelRequest) {\n        var cancelations = this.taskInstances.map(function (taskInstance) {\n          if (taskInstance.task.guids[guid]) {\n            taskInstance.executor.cancel(cancelRequest);\n          }\n        }).filter(function (cancelation) {\n          return !!cancelation;\n        });\n        return Promise.all(cancelations);\n      }\n    }, {\n      key: \"perform\",\n      value: function perform(taskInstance) {\n        var _this = this;\n        taskInstance.onFinalize(function () {\n          return _this.scheduleRefresh();\n        });\n        this.taskInstances.push(taskInstance);\n        this.refresh();\n      }\n    }, {\n      key: \"scheduleRefresh\",\n      value: function scheduleRefresh() {\n        var _this2 = this;\n        Promise.resolve().then(function () {\n          return _this2.refresh();\n        });\n      }\n    }, {\n      key: \"refresh\",\n      value: function refresh() {\n        var stateTracker = this.stateTrackingEnabled ? new _stateTracker.default() : new _nullStateTracker.default();\n        var refresh = new _refresh.default(this.schedulerPolicy, stateTracker, this.taskInstances);\n        this.taskInstances = refresh.process();\n      }\n    }]);\n  }();\n  var _default = _exports.default = Scheduler;\n});","define(\"ember-concurrency/-private/external/scheduler/state-tracker/null-state-tracker\", [\"exports\", \"ember-concurrency/-private/external/scheduler/state-tracker/null-state\"], function (_exports, _nullState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var NULL_STATE = new _nullState.default();\n  var NullStateTracker = /*#__PURE__*/function () {\n    function NullStateTracker() {\n      _classCallCheck(this, NullStateTracker);\n    }\n    return _createClass(NullStateTracker, [{\n      key: \"stateFor\",\n      value: function stateFor() {\n        return NULL_STATE;\n      }\n    }, {\n      key: \"computeFinalStates\",\n      value: function computeFinalStates() {}\n    }]);\n  }();\n  var _default = _exports.default = NullStateTracker;\n});","define(\"ember-concurrency/-private/external/scheduler/state-tracker/null-state\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var NullState = /*#__PURE__*/function () {\n    function NullState() {\n      _classCallCheck(this, NullState);\n    }\n    return _createClass(NullState, [{\n      key: \"onCompletion\",\n      value: function onCompletion() {}\n    }, {\n      key: \"onPerformed\",\n      value: function onPerformed() {}\n    }, {\n      key: \"onStart\",\n      value: function onStart() {}\n    }, {\n      key: \"onRunning\",\n      value: function onRunning() {}\n    }, {\n      key: \"onQueued\",\n      value: function onQueued() {}\n    }]);\n  }();\n  var _default = _exports.default = NullState;\n});","define(\"ember-concurrency/-private/external/scheduler/state-tracker/state-tracker\", [\"exports\", \"ember-concurrency/-private/external/scheduler/state-tracker/state\"], function (_exports, _state) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var CURRENT_REFRESH_TAGS = new Map();\n  var StateTracker = /*#__PURE__*/function () {\n    function StateTracker() {\n      _classCallCheck(this, StateTracker);\n      this.states = new Map();\n    }\n    return _createClass(StateTracker, [{\n      key: \"stateFor\",\n      value: function stateFor(taskable) {\n        var guid = taskable.guid;\n        var taskState = this.states.get(guid);\n        if (!taskState) {\n          var currentTag = CURRENT_REFRESH_TAGS.has(guid) ? CURRENT_REFRESH_TAGS.get(guid) : 0;\n          taskState = new _state.default(taskable, ++currentTag);\n          this.states.set(guid, taskState);\n          CURRENT_REFRESH_TAGS.set(guid, currentTag);\n        }\n        return taskState;\n      }\n\n      // After cancelling/queueing task instances, we have to recompute the derived state\n      // of all the tasks that had/have task instances in this scheduler. We do this by\n      // looping through all the Tasks that we've accumulated state for, and then recursively\n      // applying/adding to the state of any TaskGroups they belong to.\n    }, {\n      key: \"computeFinalStates\",\n      value: function computeFinalStates(callback) {\n        this.computeRecursiveState();\n        this.forEachState(function (state) {\n          return callback(state);\n        });\n      }\n    }, {\n      key: \"computeRecursiveState\",\n      value: function computeRecursiveState() {\n        var _this = this;\n        this.forEachState(function (taskState) {\n          var lastState = taskState;\n          taskState.recurseTaskGroups(function (taskGroup) {\n            var state = _this.stateFor(taskGroup);\n            state.applyStateFrom(lastState);\n            lastState = state;\n          });\n        });\n      }\n    }, {\n      key: \"forEachState\",\n      value: function forEachState(callback) {\n        this.states.forEach(function (state) {\n          return callback(state);\n        });\n      }\n    }]);\n  }();\n  var _default = _exports.default = StateTracker;\n});","define(\"ember-concurrency/-private/external/scheduler/state-tracker/state\", [\"exports\", \"ember-concurrency/-private/external/task-instance/completion-states\"], function (_exports, _completionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var RefreshState = /*#__PURE__*/function () {\n    function RefreshState(taskable, tag) {\n      _classCallCheck(this, RefreshState);\n      this.taskable = taskable;\n      this.group = taskable.group;\n      this.numRunning = 0;\n      this.numQueued = 0;\n      this.numPerformedInc = 0;\n      this.attrs = {};\n      this.tag = tag;\n    }\n    return _createClass(RefreshState, [{\n      key: \"onCompletion\",\n      value: function onCompletion(taskInstance) {\n        var state = taskInstance.completionState;\n        this.attrs.lastRunning = null;\n        this.attrs.lastComplete = taskInstance;\n        if (state === _completionStates.COMPLETION_SUCCESS) {\n          this.attrs.lastSuccessful = taskInstance;\n        } else {\n          if (state === _completionStates.COMPLETION_ERROR) {\n            this.attrs.lastErrored = taskInstance;\n          } else if (state === _completionStates.COMPLETION_CANCEL) {\n            this.attrs.lastCanceled = taskInstance;\n          }\n          this.attrs.lastIncomplete = taskInstance;\n        }\n      }\n    }, {\n      key: \"onPerformed\",\n      value: function onPerformed(taskInstance) {\n        this.numPerformedInc += 1;\n        this.attrs.lastPerformed = taskInstance;\n      }\n    }, {\n      key: \"onStart\",\n      value: function onStart(taskInstance) {\n        this.attrs.last = taskInstance;\n      }\n    }, {\n      key: \"onRunning\",\n      value: function onRunning(taskInstance) {\n        this.attrs.lastRunning = taskInstance;\n        this.numRunning += 1;\n      }\n    }, {\n      key: \"onQueued\",\n      value: function onQueued() {\n        this.numQueued += 1;\n      }\n    }, {\n      key: \"recurseTaskGroups\",\n      value: function recurseTaskGroups(callback) {\n        var group = this.group;\n        while (group) {\n          callback(group);\n          group = group.group;\n        }\n      }\n    }, {\n      key: \"applyStateFrom\",\n      value: function applyStateFrom(other) {\n        Object.assign(this.attrs, other.attrs);\n        this.numRunning += other.numRunning;\n        this.numQueued += other.numQueued;\n        this.numPerformedInc += other.numPerformedInc;\n      }\n    }]);\n  }();\n  var _default = _exports.default = RefreshState;\n});","define(\"ember-concurrency/-private/external/task-decorators\", [\"exports\", \"ember-concurrency/-private/external/task-factory\"], function (_exports, _taskFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.createTaskDecorator = createTaskDecorator;\n  _exports.createTaskGroupDecorator = createTaskGroupDecorator;\n  _exports.decoratorWithParams = decoratorWithParams;\n  _exports.lastValue = void 0;\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function taskFromPropertyDescriptor(target, key, descriptor) {\n    var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n    var factoryClass = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _taskFactory.TaskFactory;\n    var initializer = descriptor.initializer,\n      get = descriptor.get,\n      value = descriptor.value;\n    var taskFn;\n    if (initializer) {\n      taskFn = initializer.call(undefined);\n    } else if (get) {\n      taskFn = get.call(undefined);\n    } else if (value) {\n      taskFn = value;\n    }\n    taskFn.displayName = \"\".concat(key, \" (task)\");\n    var tasks = new WeakMap();\n    var options = params[0] || {};\n    var factory = new factoryClass(key, taskFn, options);\n    factory._setupEmberKVO(target);\n    return {\n      get: function get() {\n        var task = tasks.get(this);\n        if (!task) {\n          task = factory.createTask(this);\n          tasks.set(this, task);\n        }\n        return task;\n      }\n    };\n  }\n  function taskGroupPropertyDescriptor(_target, key, _descriptor) {\n    var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n    var factoryClass = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _taskFactory.TaskFactory;\n    var taskGroups = new WeakMap();\n    var options = params[0] || {};\n    var factory = new factoryClass(key, null, options);\n    return {\n      get: function get() {\n        var task = taskGroups.get(this);\n        if (!task) {\n          task = factory.createTaskGroup(this);\n          taskGroups.set(this, task);\n        }\n        return task;\n      }\n    };\n  }\n\n  // Cribbed from @ember-decorators/utils\n  function isFieldDescriptor(possibleDesc) {\n    var _possibleDesc = _slicedToArray(possibleDesc, 3),\n      target = _possibleDesc[0],\n      key = _possibleDesc[1],\n      desc = _possibleDesc[2];\n    return possibleDesc.length === 3 && _typeof(target) === 'object' && target !== null && typeof key === 'string' && (_typeof(desc) === 'object' && desc !== null && 'enumerable' in desc && 'configurable' in desc || desc === undefined) // TS compatibility ???\n    ;\n  }\n  function decoratorWithParams(descriptorFn) {\n    return function () {\n      for (var _len = arguments.length, params = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n        params[_key2] = arguments[_key2];\n      }\n      if (isFieldDescriptor(params)) {\n        return descriptorFn.apply(void 0, params);\n      } else {\n        return function () {\n          for (var _len2 = arguments.length, desc = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n            desc[_key3] = arguments[_key3];\n          }\n          return descriptorFn.apply(void 0, desc.concat([params]));\n        };\n      }\n    };\n  }\n  function createDecorator(fn) {\n    var baseOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var factoryClass = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _taskFactory.TaskFactory;\n    return decoratorWithParams(function (target, key, descriptor) {\n      var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [],\n        _ref2 = _slicedToArray(_ref, 1),\n        userOptions = _ref2[0];\n      var mergedOptions = Object.assign({}, _objectSpread(_objectSpread({}, baseOptions), userOptions));\n      return fn(target, key, descriptor, [mergedOptions], factoryClass);\n    });\n  }\n  function createTaskDecorator() {\n    var baseOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var factoryClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _taskFactory.TaskFactory;\n    return createDecorator(taskFromPropertyDescriptor, baseOptions, factoryClass);\n  }\n  function createTaskGroupDecorator() {\n    var baseOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var factoryClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _taskFactory.TaskFactory;\n    return createDecorator(taskGroupPropertyDescriptor, baseOptions, factoryClass);\n  }\n  var lastValue = _exports.lastValue = decoratorWithParams(function (_target, _key, descriptor) {\n    var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [],\n      _ref4 = _slicedToArray(_ref3, 1),\n      taskName = _ref4[0];\n    var initializer = descriptor.initializer;\n    delete descriptor.initializer;\n    return {\n      get: function get() {\n        var lastInstance = this[taskName].lastSuccessful;\n        if (lastInstance) {\n          return lastInstance.value;\n        }\n        if (initializer) {\n          return initializer.call(this);\n        }\n        return undefined;\n      }\n    };\n  });\n});","define(\"ember-concurrency/-private/external/task-factory\", [\"exports\", \"ember-concurrency/-private/external/scheduler/scheduler\", \"ember-concurrency/-private/external/scheduler/policies/unbounded-policy\", \"ember-concurrency/-private/external/scheduler/policies/enqueued-policy\", \"ember-concurrency/-private/external/scheduler/policies/drop-policy\", \"ember-concurrency/-private/external/scheduler/policies/keep-latest-policy\", \"ember-concurrency/-private/external/scheduler/policies/restartable-policy\", \"ember-concurrency/-private/external/task/task\", \"ember-concurrency/-private/external/task/task-group\", \"ember-concurrency/-private/external/environment\"], function (_exports, _scheduler, _unboundedPolicy, _enqueuedPolicy, _dropPolicy, _keepLatestPolicy, _restartablePolicy, _task, _taskGroup, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TaskFactory = void 0;\n  _exports.getModifier = getModifier;\n  _exports.hasModifier = hasModifier;\n  _exports.registerModifier = registerModifier;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function assertModifiersNotMixedWithGroup(obj) {\n    if (obj._hasSetConcurrencyConstraint && obj._taskGroupPath) {\n      throw new Error(\"Cannot use both 'group' and other concurrency-constraining task modifiers (e.g. 'drop', 'enqueue', 'restartable')\");\n    }\n  }\n  function assertUnsetBufferPolicy(obj) {\n    if (obj._hasSetBufferPolicy) {\n      throw new Error(\"Cannot set multiple buffer policies on a task or task group. \".concat(obj._schedulerPolicyClass, \" has already been set for task or task group '\").concat(obj.name, \"'\"));\n    }\n  }\n  var MODIFIER_REGISTRY = {\n    enqueue: function enqueue(factory, value) {\n      return value && factory.setBufferPolicy(_enqueuedPolicy.default);\n    },\n    evented: function evented(factory, value) {\n      return value && factory.setEvented(value);\n    },\n    debug: function debug(factory, value) {\n      return value && factory.setDebug(value);\n    },\n    drop: function drop(factory, value) {\n      return value && factory.setBufferPolicy(_dropPolicy.default);\n    },\n    group: function group(factory, groupName) {\n      return factory.setGroup(groupName);\n    },\n    keepLatest: function keepLatest(factory, value) {\n      return value && factory.setBufferPolicy(_keepLatestPolicy.default);\n    },\n    maxConcurrency: function maxConcurrency(factory, _maxConcurrency) {\n      return factory.setMaxConcurrency(_maxConcurrency);\n    },\n    onState: function onState(factory, onStateCallback) {\n      return factory.setOnState(onStateCallback);\n    },\n    restartable: function restartable(factory, value) {\n      return value && factory.setBufferPolicy(_restartablePolicy.default);\n    }\n  };\n\n  /**\n   * Callback type defining a task modifier\n   *\n   * @callback TaskFactory~TaskModifier\n   * @param {TaskFactory} factory\n   * @param {*} taskModifierOption\n   */\n\n  /**\n   * Registers a new modifier with the modifier registry\n   *\n   * @param {string} name Name of the modifier\n   * @param {TaskFactory~TaskModifier} callback\n   */\n  function registerModifier(name, callback) {\n    if (MODIFIER_REGISTRY[name]) {\n      throw new Error(\"A modifier with the name '\".concat(name, \"' has already been defined.\"));\n    }\n    MODIFIER_REGISTRY[name] = callback;\n  }\n\n  /**\n   * Returns a specified modifier, if it exists in the registry\n   *\n   * @param {string} name Name of the modifier\n   * @returns {TaskFactory~TaskModifier?}\n   */\n  function getModifier(name) {\n    return MODIFIER_REGISTRY[name];\n  }\n\n  /**\n   * Returns whether a specified modifier exists in the registry\n   *\n   * @param {string} name Name of the modifier\n   * @returns {boolean}\n   */\n  function hasModifier(name) {\n    return name in MODIFIER_REGISTRY;\n  }\n\n  /**\n   * Factory used for instantiating Tasks and Task Groups. Mostly for internal\n   * use, but some public APIs exposed via the Task Modifier APIs.\n   *\n   * <style>\n   *  .ignore-this--this-is-here-to-hide-constructor,\n   *  #TaskFactory { display: none }\n   * </style>\n   *\n   * @class TaskFactory\n   */\n  var TaskFactory = _exports.TaskFactory = /*#__PURE__*/function () {\n    function TaskFactory() {\n      var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '<unknown>';\n      var taskDefinition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      _classCallCheck(this, TaskFactory);\n      _defineProperty(this, \"env\", _environment.DEFAULT_ENVIRONMENT);\n      _defineProperty(this, \"_debug\", null);\n      _defineProperty(this, \"_enabledModifiers\", []);\n      _defineProperty(this, \"_hasSetConcurrencyConstraint\", false);\n      _defineProperty(this, \"_hasSetBufferPolicy\", false);\n      _defineProperty(this, \"_hasEnabledEvents\", false);\n      _defineProperty(this, \"_maxConcurrency\", null);\n      _defineProperty(this, \"_onStateCallback\", function (state, taskable) {\n        return taskable.setState(state);\n      });\n      _defineProperty(this, \"_schedulerPolicyClass\", _unboundedPolicy.default);\n      _defineProperty(this, \"_taskGroupPath\", null);\n      this.name = name;\n      this.taskDefinition = taskDefinition;\n      this.options = options;\n      this._processModifierOptions(options);\n    }\n\n    /**\n     * Returns a new Task bound to the given context\n     *\n     * @protected\n     * @param {*} context\n     * @returns {Task}\n     */\n    return _createClass(TaskFactory, [{\n      key: \"createTask\",\n      value: function createTask(context) {\n        var _this = this;\n        var options = this.getTaskOptions(context);\n        return new _task.Task(Object.assign({\n          generatorFactory: function generatorFactory(args) {\n            return _this.taskDefinition.apply(context, args);\n          }\n        }, options));\n      }\n\n      /**\n       * Returns a new TaskGroup bound to the given context\n       *\n       * @protected\n       * @param {*} context\n       * @returns {Task}\n       */\n    }, {\n      key: \"createTaskGroup\",\n      value: function createTaskGroup(context) {\n        var options = this.getTaskOptions(context);\n        return new _taskGroup.TaskGroup(options);\n      }\n\n      /**\n       * Returns a modifier callback with the given name bound to this TaskFactory,\n       * if registered.\n       *\n       * @protected\n       * @param {string} name\n       * @returns {TaskFactory~TaskModifier?}\n       */\n    }, {\n      key: \"getModifier\",\n      value: function getModifier(name) {\n        if (hasModifier(name)) {\n          return MODIFIER_REGISTRY[name].bind(null, this);\n        }\n      }\n\n      /**\n       * Returns the options provided to TaskFactory\n       *\n       * @public\n       * @returns {object}\n       */\n    }, {\n      key: \"getOptions\",\n      value: function getOptions() {\n        return this.options;\n      }\n\n      /**\n       * Returns a new Scheduler instance\n       *\n       * @protected\n       * @param {*} schedulerPolicy\n       * @param {boolean} stateTrackingEnabled\n       * @returns {Scheduler}\n       */\n    }, {\n      key: \"getScheduler\",\n      value: function getScheduler(schedulerPolicy, stateTrackingEnabled) {\n        return new _scheduler.default(schedulerPolicy, stateTrackingEnabled);\n      }\n\n      /**\n       * Returns the options to pass to a Task or TaskGroup constructor\n       *\n       * @protected\n       * @param {*} context\n       * @returns {object}\n       */\n    }, {\n      key: \"getTaskOptions\",\n      value: function getTaskOptions(context) {\n        var group, scheduler;\n        var onStateCallback = this._onStateCallback;\n        if (this._taskGroupPath) {\n          group = context[this._taskGroupPath];\n          if (!(group instanceof _taskGroup.TaskGroup)) {\n            throw new Error(\"Expected group '\".concat(this._taskGroupPath, \"' to be defined but was not found.\"));\n          }\n          scheduler = group.scheduler;\n        } else {\n          var schedulerPolicy = new this._schedulerPolicyClass(this._maxConcurrency);\n          scheduler = this.getScheduler(schedulerPolicy, onStateCallback && typeof onStateCallback === 'function');\n        }\n        return {\n          context: context,\n          debug: this._debug,\n          env: this.env,\n          name: this.name,\n          group: group,\n          scheduler: scheduler,\n          hasEnabledEvents: this._hasEnabledEvents,\n          onStateCallback: onStateCallback,\n          enabledModifiers: this._enabledModifiers,\n          modifierOptions: this.getOptions()\n        };\n      }\n\n      /**\n       * Sets the Scheduler buffer policy class to the specified value.\n       *\n       * Will raise an assertion if a buffer policy has already been specified\n       *\n       * @param {*} policy\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setBufferPolicy\",\n      value: function setBufferPolicy(policy) {\n        assertUnsetBufferPolicy(this);\n        this._hasSetBufferPolicy = true;\n        this._hasSetConcurrencyConstraint = true;\n        this._schedulerPolicyClass = policy;\n        assertModifiersNotMixedWithGroup(this);\n        return this;\n      }\n\n      /**\n       * Sets debug mode\n       *\n       * @param {boolean} enabled\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setDebug\",\n      value: function setDebug(enabled) {\n        this._debug = enabled;\n        return this;\n      }\n\n      /**\n       * Sets whether Task will dispatch Task events or not\n       *\n       * @param {boolean} enabled\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setEvented\",\n      value: function setEvented(enabled) {\n        this._hasEnabledEvents = enabled;\n        return this;\n      }\n\n      /**\n       * Sets Scheduling policy's `maxConcurrency`\n       *\n       * @param {number} maxConcurrency\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setMaxConcurrency\",\n      value: function setMaxConcurrency(maxConcurrency) {\n        this._hasSetConcurrencyConstraint = true;\n        this._maxConcurrency = maxConcurrency;\n        return this;\n      }\n\n      /**\n       * Assigns Task created from this factory to the specified group name\n       *\n       * @param {string} group\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setGroup\",\n      value: function setGroup(group) {\n        this._taskGroupPath = group;\n        return this;\n      }\n\n      /**\n       * Sets the name of tasks created from this factory\n       *\n       * @param {string} name\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setName\",\n      value: function setName(name) {\n        this.name = name;\n        return this;\n      }\n\n      /**\n       * Sets the callback used on state updates. Can be set to null to disable\n       * state tracking on tasks.\n       *\n       * @param {function} onStateCallback\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setOnState\",\n      value: function setOnState(onStateCallback) {\n        this._onStateCallback = onStateCallback;\n        return this;\n      }\n\n      /**\n       * Sets the definition for tasks created from this factory\n       *\n       * @param {*} taskDefinition\n       * @returns {TaskFactory}\n       */\n    }, {\n      key: \"setTaskDefinition\",\n      value: function setTaskDefinition(taskDefinition) {\n        this.taskDefinition = taskDefinition;\n        return this;\n      }\n    }, {\n      key: \"_processModifierOptions\",\n      value: function _processModifierOptions(options) {\n        if (!options) {\n          return;\n        }\n        for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) {\n          var key = _Object$keys[_i];\n          var value = options[key];\n          var modifier = this.getModifier(key);\n          if (typeof modifier === 'function' && modifier(value)) {\n            this._enabledModifiers.push(key);\n          }\n        }\n      }\n    }]);\n  }();\n});","define(\"ember-concurrency/-private/external/task-instance/base\", [\"exports\", \"ember-concurrency/-private/external/task-instance/initial-state\", \"ember-concurrency/-private/external/yieldables\", \"ember-concurrency/-private/external/task-instance/cancelation\"], function (_exports, _initialState, _yieldables, _cancelation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.BaseTaskInstance = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var EXPLICIT_CANCEL_REASON = '.cancel() was explicitly called';\n  var BaseTaskInstance = _exports.BaseTaskInstance = /*#__PURE__*/function () {\n    function BaseTaskInstance(_ref) {\n      var task = _ref.task,\n        args = _ref.args,\n        executor = _ref.executor,\n        performType = _ref.performType,\n        hasEnabledEvents = _ref.hasEnabledEvents;\n      _classCallCheck(this, BaseTaskInstance);\n      this.task = task;\n      this.args = args;\n      this.performType = performType;\n      this.executor = executor;\n      this.executor.taskInstance = this;\n      this.hasEnabledEvents = hasEnabledEvents;\n    }\n    return _createClass(BaseTaskInstance, [{\n      key: \"setState\",\n      value: function setState() {}\n    }, {\n      key: \"onStarted\",\n      value: function onStarted() {}\n    }, {\n      key: \"onSuccess\",\n      value: function onSuccess() {}\n    }, {\n      key: \"onError\",\n      value: function onError() {}\n    }, {\n      key: \"onCancel\",\n      value: function onCancel() {}\n    }, {\n      key: \"formatCancelReason\",\n      value: function formatCancelReason() {}\n    }, {\n      key: \"selfCancelLoopWarning\",\n      value: function selfCancelLoopWarning() {}\n    }, {\n      key: \"onFinalize\",\n      value: function onFinalize(callback) {\n        this.executor.onFinalize(callback);\n      }\n    }, {\n      key: \"proceed\",\n      value: function proceed(index, yieldResumeType, value) {\n        this.executor.proceedChecked(index, yieldResumeType, value);\n      }\n    }, {\n      key: _yieldables.yieldableSymbol,\n      value: function value(parentTaskInstance, resumeIndex) {\n        return this.executor.onYielded(parentTaskInstance, resumeIndex);\n      }\n    }, {\n      key: \"cancel\",\n      value: function cancel() {\n        var cancelReason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EXPLICIT_CANCEL_REASON;\n        this.executor.cancel(new _cancelation.CancelRequest(_cancelation.CANCEL_KIND_EXPLICIT, cancelReason));\n      }\n    }, {\n      key: \"then\",\n      value: function then() {\n        var _this$executor$promis;\n        return (_this$executor$promis = this.executor.promise()).then.apply(_this$executor$promis, arguments);\n      }\n    }, {\n      key: \"catch\",\n      value: function _catch() {\n        var _this$executor$promis2;\n        return (_this$executor$promis2 = this.executor.promise()).catch.apply(_this$executor$promis2, arguments);\n      }\n    }, {\n      key: \"finally\",\n      value: function _finally() {\n        var _this$executor$promis3;\n        return (_this$executor$promis3 = this.executor.promise()).finally.apply(_this$executor$promis3, arguments);\n      }\n    }, {\n      key: \"toString\",\n      value: function toString() {\n        return \"\".concat(this.task, \" TaskInstance\");\n      }\n    }, {\n      key: \"start\",\n      value: function start() {\n        this.executor.start();\n        return this;\n      }\n    }]);\n  }();\n  Object.assign(BaseTaskInstance.prototype, _initialState.INITIAL_STATE);\n  Object.assign(BaseTaskInstance.prototype, {\n    state: 'waiting',\n    isDropped: false,\n    isRunning: true\n  });\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/external/task-instance/cancelation\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TASK_CANCELATION_NAME = _exports.CancelRequest = _exports.CANCEL_KIND_YIELDABLE_CANCEL = _exports.CANCEL_KIND_PARENT_CANCEL = _exports.CANCEL_KIND_LIFESPAN_END = _exports.CANCEL_KIND_EXPLICIT = void 0;\n  _exports.didCancel = didCancel;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  var TASK_CANCELATION_NAME = _exports.TASK_CANCELATION_NAME = 'TaskCancelation';\n\n  /**\n   * Returns true if the object passed to it is a TaskCancelation error.\n   * If you call `someTask.perform().catch(...)` or otherwise treat\n   * a {@linkcode TaskInstance} like a promise, you may need to\n   * handle the cancelation of a TaskInstance differently from\n   * other kinds of errors it might throw, and you can use this\n   * convenience function to distinguish cancelation from errors.\n   *\n   * ```js\n   * click() {\n   *   this.myTask.perform().catch(e => {\n   *     if (!didCancel(e)) { throw e; }\n   *   });\n   * }\n   * ```\n   *\n   * @param {object} error the caught error, which might be a TaskCancelation\n   * @returns {boolean}\n   */\n  function didCancel(e) {\n    return e && e.name === TASK_CANCELATION_NAME;\n  }\n  var CANCEL_KIND_EXPLICIT = _exports.CANCEL_KIND_EXPLICIT = 'explicit';\n  var CANCEL_KIND_YIELDABLE_CANCEL = _exports.CANCEL_KIND_YIELDABLE_CANCEL = 'yielded';\n  var CANCEL_KIND_LIFESPAN_END = _exports.CANCEL_KIND_LIFESPAN_END = 'lifespan_end';\n  var CANCEL_KIND_PARENT_CANCEL = _exports.CANCEL_KIND_PARENT_CANCEL = 'parent_cancel';\n  var CancelRequest = _exports.CancelRequest = /*#__PURE__*/_createClass(function CancelRequest(kind, reason) {\n    var _this = this;\n    _classCallCheck(this, CancelRequest);\n    this.kind = kind;\n    this.reason = reason;\n    this.promise = new Promise(function (resolve) {\n      _this.finalize = resolve;\n    });\n  });\n});","define(\"ember-concurrency/-private/external/task-instance/completion-states\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.COMPLETION_SUCCESS = _exports.COMPLETION_PENDING = _exports.COMPLETION_ERROR = _exports.COMPLETION_CANCEL = void 0;\n  var COMPLETION_PENDING = _exports.COMPLETION_PENDING = 0;\n  var COMPLETION_SUCCESS = _exports.COMPLETION_SUCCESS = 1;\n  var COMPLETION_ERROR = _exports.COMPLETION_ERROR = 2;\n  var COMPLETION_CANCEL = _exports.COMPLETION_CANCEL = 3;\n});","define(\"ember-concurrency/-private/external/task-instance/executor\", [\"exports\", \"ember-concurrency/-private/external/generator-state\", \"ember-concurrency/-private/external/task-instance/initial-state\", \"ember-concurrency/-private/external/yieldables\", \"ember-concurrency/-private/external/task-instance/completion-states\", \"ember-concurrency/-private/external/task-instance/cancelation\"], function (_exports, _generatorState, _initialState, _yieldables, _completionStates, _cancelation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TaskInstanceExecutor = _exports.PERFORM_TYPE_UNLINKED = _exports.PERFORM_TYPE_LINKED = _exports.PERFORM_TYPE_DEFAULT = void 0;\n  _exports.getRunningInstance = getRunningInstance;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var PERFORM_TYPE_DEFAULT = _exports.PERFORM_TYPE_DEFAULT = 'PERFORM_TYPE_DEFAULT';\n  var PERFORM_TYPE_UNLINKED = _exports.PERFORM_TYPE_UNLINKED = 'PERFORM_TYPE_UNLINKED';\n  var PERFORM_TYPE_LINKED = _exports.PERFORM_TYPE_LINKED = 'PERFORM_TYPE_LINKED';\n  var CANCEL_RETURN_VALUE_SENTINEL = {};\n  var TASK_INSTANCE_STACK = [];\n  function getRunningInstance() {\n    return TASK_INSTANCE_STACK[TASK_INSTANCE_STACK.length - 1];\n  }\n  var TaskInstanceExecutor = _exports.TaskInstanceExecutor = /*#__PURE__*/function () {\n    function TaskInstanceExecutor(_ref) {\n      var generatorFactory = _ref.generatorFactory,\n        env = _ref.env,\n        debug = _ref.debug;\n      _classCallCheck(this, TaskInstanceExecutor);\n      this.generatorState = new _generatorState.GeneratorState(generatorFactory);\n      this.state = Object.assign({}, _initialState.INITIAL_STATE);\n      this.index = 1;\n      this.disposers = [];\n      this.finalizeCallbacks = [];\n      this.env = env;\n      this.debug = debug;\n      this.cancelRequest = null;\n    }\n    return _createClass(TaskInstanceExecutor, [{\n      key: \"start\",\n      value: function start() {\n        if (this.state.hasStarted || this.cancelRequest) {\n          return;\n        }\n        this.setState({\n          hasStarted: true\n        });\n        this.proceedSync(_yieldables.YIELDABLE_CONTINUE, undefined);\n        this.taskInstance.onStarted();\n      }\n    }, {\n      key: \"cancel\",\n      value: function cancel(cancelRequest) {\n        if (!this.requestCancel(cancelRequest)) {\n          cancelRequest.finalize();\n          return cancelRequest.promise;\n        }\n        if (this.state.hasStarted) {\n          this.proceedWithCancelAsync();\n        } else {\n          this.finalizeWithCancel();\n        }\n        return this.cancelRequest.promise;\n      }\n    }, {\n      key: \"setState\",\n      value: function setState(state) {\n        Object.assign(this.state, state);\n        this.taskInstance.setState(this.state);\n      }\n    }, {\n      key: \"proceedChecked\",\n      value: function proceedChecked(index, yieldResumeType, value) {\n        if (this.state.isFinished) {\n          return;\n        }\n        if (!this.advanceIndex(index)) {\n          return;\n        }\n        if (yieldResumeType === _yieldables.YIELDABLE_CANCEL) {\n          this.requestCancel(new _cancelation.CancelRequest(_cancelation.CANCEL_KIND_YIELDABLE_CANCEL), value);\n          this.proceedWithCancelAsync();\n        } else {\n          this.proceedAsync(yieldResumeType, value);\n        }\n      }\n    }, {\n      key: \"proceedWithCancelAsync\",\n      value: function proceedWithCancelAsync() {\n        this.proceedAsync(_yieldables.YIELDABLE_RETURN, CANCEL_RETURN_VALUE_SENTINEL);\n      }\n    }, {\n      key: \"proceedAsync\",\n      value: function proceedAsync(yieldResumeType, value) {\n        var _this = this;\n        this.advanceIndex(this.index);\n        this.env.async(function () {\n          return _this.proceedSync(yieldResumeType, value);\n        });\n      }\n    }, {\n      key: \"proceedSync\",\n      value: function proceedSync(yieldResumeType, value) {\n        if (this.state.isFinished) {\n          return;\n        }\n        this.dispose();\n        if (this.generatorState.done) {\n          this.handleResolvedReturnedValue(yieldResumeType, value);\n        } else {\n          this.handleResolvedContinueValue(yieldResumeType, value);\n        }\n      }\n\n      /**\n       * This method is called when a previously yielded value from\n       * the generator has been resolved, and now it's time to pass\n       * it back into the generator. There are 3 ways to \"resume\" a\n       * generator:\n       *\n       * - call `.next(value)` on it, which is used to pass in a resolved\n       *   value (the fulfilled value of a promise), e.g. if a task generator fn\n       *   does `yield Promise.resolve(5)`, then we take that promise yielded\n       *   by the generator, detect that it's a promise, resolve it, and then\n       *   pass its fulfilled value `5` back into the generator function so\n       *   that it can continue executing.\n       * - call `.throw(error)` on it, which throw an exception from where the\n       *   the generator previously yielded. We do this when the previously\n       *   yielded value resolves to an error value (e.g. a rejected promise\n       *   or a TaskInstance that finished with an error). Note that when you\n       *   resume a generator with a `.throw()`, it can still recover from that\n       *   thrown error and continue executing normally so long as the `yield`\n       *   was inside a `try/catch` statement.\n       * - call `.return(value)` on it, causes the generator function to return\n       *   from where it previously `yield`ed. We use `.return()` when cancelling\n       *   a TaskInstance; by `.return`ing, rather than `.throw`ing, it allows\n       *   the generator function to skip `catch(e) {}` blocks, which is usually\n       *   reserved for actual errors/exceptions; if we `.throw`'d cancellations,\n       *   it would require all tasks that used try/catch to conditionally ignore\n       *   cancellations, which is annoying. So we `.return()` from generator functions\n       *   in the case of errors as a matter of convenience.\n       *\n       * @private\n       */\n    }, {\n      key: \"handleResolvedContinueValue\",\n      value: function handleResolvedContinueValue(iteratorMethod, resumeValue) {\n        var beforeIndex = this.index;\n        var stepResult = this.generatorStep(resumeValue, iteratorMethod);\n\n        // TODO: what is this doing? write breaking test.\n        if (!this.advanceIndex(beforeIndex)) {\n          return;\n        }\n        if (stepResult.errored) {\n          this.finalize(stepResult.value, _completionStates.COMPLETION_ERROR);\n          return;\n        }\n        this.handleYieldedValue(stepResult);\n      }\n\n      /**\n       * This method is called when the generator function is all\n       * out of values, and the last value returned from the function\n       * (possible a thenable/yieldable/promise/etc) has been resolved.\n       *\n       * Possible cases:\n       * - `return \"simple value\";` // resolved value is \"simple value\"\n       * - `return undefined;` // (or omitted return) resolved value is undefined\n       * - `return someTask.perform()` // resolved value is the value returned/resolved from someTask\n       *\n       * @private\n       */\n    }, {\n      key: \"handleResolvedReturnedValue\",\n      value: function handleResolvedReturnedValue(yieldResumeType, value) {\n        switch (yieldResumeType) {\n          case _yieldables.YIELDABLE_CONTINUE:\n          case _yieldables.YIELDABLE_RETURN:\n            this.finalize(value, _completionStates.COMPLETION_SUCCESS);\n            break;\n          case _yieldables.YIELDABLE_THROW:\n            this.finalize(value, _completionStates.COMPLETION_ERROR);\n            break;\n        }\n      }\n    }, {\n      key: \"handleYieldedUnknownThenable\",\n      value: function handleYieldedUnknownThenable(thenable) {\n        var _this2 = this;\n        var resumeIndex = this.index;\n        thenable.then(function (value) {\n          _this2.proceedChecked(resumeIndex, _yieldables.YIELDABLE_CONTINUE, value);\n        }, function (error) {\n          _this2.proceedChecked(resumeIndex, _yieldables.YIELDABLE_THROW, error);\n        });\n      }\n\n      /**\n       * The TaskInstance internally tracks an index/sequence number\n       * (the `index` property) which gets incremented every time the\n       * task generator function iterator takes a step. When a task\n       * function is paused at a `yield`, there are two events that\n       * cause the TaskInstance to take a step: 1) the yielded value\n       * \"resolves\", thus resuming the TaskInstance's execution, or\n       * 2) the TaskInstance is canceled. We need some mechanism to prevent\n       * stale yielded value resolutions from resuming the TaskFunction\n       * after the TaskInstance has already moved on (either because\n       * the TaskInstance has since been canceled or because an\n       * implementation of the Yieldable API tried to resume the\n       * TaskInstance more than once). The `index` serves as\n       * that simple mechanism: anyone resuming a TaskInstance\n       * needs to pass in the `index` they were provided that acts\n       * as a ticket to resume the TaskInstance that expires once\n       * the TaskInstance has moved on.\n       *\n       * @private\n       */\n    }, {\n      key: \"advanceIndex\",\n      value: function advanceIndex(index) {\n        if (this.index === index) {\n          return ++this.index;\n        }\n      }\n    }, {\n      key: \"handleYieldedValue\",\n      value: function handleYieldedValue(stepResult) {\n        var yieldedValue = stepResult.value;\n        if (!yieldedValue) {\n          this.proceedWithSimpleValue(yieldedValue);\n          return;\n        }\n        this.addDisposer(yieldedValue[_yieldables.cancelableSymbol]);\n        if (yieldedValue[_yieldables.yieldableSymbol]) {\n          this.invokeYieldable(yieldedValue);\n        } else if (typeof yieldedValue.then === 'function') {\n          this.handleYieldedUnknownThenable(yieldedValue);\n        } else {\n          this.proceedWithSimpleValue(yieldedValue);\n        }\n      }\n    }, {\n      key: \"proceedWithSimpleValue\",\n      value: function proceedWithSimpleValue(yieldedValue) {\n        this.proceedAsync(_yieldables.YIELDABLE_CONTINUE, yieldedValue);\n      }\n    }, {\n      key: \"addDisposer\",\n      value: function addDisposer(maybeDisposer) {\n        if (typeof maybeDisposer !== 'function') {\n          return;\n        }\n        this.disposers.push(maybeDisposer);\n      }\n\n      /**\n       * Runs any disposers attached to the task's most recent `yield`.\n       * For instance, when a task yields a TaskInstance, it registers that\n       * child TaskInstance's disposer, so that if the parent task is canceled,\n       * dispose() will run that disposer and cancel the child TaskInstance.\n       *\n       * @private\n       */\n    }, {\n      key: \"dispose\",\n      value: function dispose() {\n        var disposers = this.disposers;\n        if (disposers.length === 0) {\n          return;\n        }\n        this.disposers = [];\n        disposers.forEach(function (disposer) {\n          return disposer();\n        });\n      }\n\n      /**\n       * Calls .next()/.throw()/.return() on the task's generator function iterator,\n       * essentially taking a single step of execution on the task function.\n       *\n       * @private\n       */\n    }, {\n      key: \"generatorStep\",\n      value: function generatorStep(nextValue, iteratorMethod) {\n        TASK_INSTANCE_STACK.push(this);\n        var stepResult = this.generatorState.step(nextValue, iteratorMethod);\n        TASK_INSTANCE_STACK.pop();\n\n        // TODO: fix this!\n        if (this._expectsLinkedYield) {\n          var value = stepResult.value;\n          if (!value || value.performType !== PERFORM_TYPE_LINKED) {\n            // eslint-disable-next-line no-console\n            console.warn('You performed a .linked() task without immediately yielding/returning it. This is currently unsupported (but might be supported in future version of ember-concurrency).');\n          }\n          this._expectsLinkedYield = false;\n        }\n        return stepResult;\n      }\n    }, {\n      key: \"maybeResolveDefer\",\n      value: function maybeResolveDefer() {\n        if (!this.defer || !this.state.isFinished) {\n          return;\n        }\n        if (this.state.completionState === _completionStates.COMPLETION_SUCCESS) {\n          this.defer.resolve(this.state.value);\n        } else {\n          this.defer.reject(this.state.error);\n        }\n      }\n    }, {\n      key: \"onFinalize\",\n      value: function onFinalize(callback) {\n        this.finalizeCallbacks.push(callback);\n        if (this.state.isFinished) {\n          this.runFinalizeCallbacks();\n        }\n      }\n    }, {\n      key: \"runFinalizeCallbacks\",\n      value: function runFinalizeCallbacks() {\n        this.finalizeCallbacks.forEach(function (cb) {\n          return cb();\n        });\n        this.finalizeCallbacks = [];\n        this.maybeResolveDefer();\n        this.maybeThrowUnhandledTaskErrorLater();\n      }\n    }, {\n      key: \"promise\",\n      value: function promise() {\n        if (!this.defer) {\n          this.defer = this.env.defer();\n          this.asyncErrorsHandled = true;\n          this.maybeResolveDefer();\n        }\n        return this.defer.promise;\n      }\n    }, {\n      key: \"maybeThrowUnhandledTaskErrorLater\",\n      value: function maybeThrowUnhandledTaskErrorLater() {\n        var _this3 = this;\n        if (!this.asyncErrorsHandled && this.state.completionState === _completionStates.COMPLETION_ERROR && !(0, _cancelation.didCancel)(this.state.error)) {\n          this.env.async(function () {\n            if (!_this3.asyncErrorsHandled) {\n              _this3.env.reportUncaughtRejection(_this3.state.error);\n            }\n          });\n        }\n      }\n    }, {\n      key: \"requestCancel\",\n      value: function requestCancel(request) {\n        if (this.cancelRequest || this.state.isFinished) {\n          return false;\n        }\n        this.cancelRequest = request;\n        return true;\n      }\n    }, {\n      key: \"finalize\",\n      value: function finalize(value, completionState) {\n        if (this.cancelRequest) {\n          return this.finalizeWithCancel();\n        }\n        var state = {\n          completionState: completionState\n        };\n        if (completionState === _completionStates.COMPLETION_SUCCESS) {\n          state.isSuccessful = true;\n          state.value = value;\n        } else if (completionState === _completionStates.COMPLETION_ERROR) {\n          state.isError = true;\n          state.error = value;\n        } else if (completionState === _completionStates.COMPLETION_CANCEL) {\n          state.error = value;\n        }\n        this.finalizeShared(state);\n      }\n    }, {\n      key: \"finalizeWithCancel\",\n      value: function finalizeWithCancel() {\n        var cancelReason = this.taskInstance.formatCancelReason(this.cancelRequest.reason);\n        var error = new Error(cancelReason);\n        if (this.debugEnabled()) {\n          // eslint-disable-next-line no-console\n          console.log(cancelReason);\n        }\n        error.name = _cancelation.TASK_CANCELATION_NAME;\n        this.finalizeShared({\n          isCanceled: true,\n          completionState: _completionStates.COMPLETION_CANCEL,\n          error: error,\n          cancelReason: cancelReason\n        });\n        this.cancelRequest.finalize();\n      }\n    }, {\n      key: \"debugEnabled\",\n      value: function debugEnabled() {\n        return this.debug || this.env.globalDebuggingEnabled();\n      }\n    }, {\n      key: \"finalizeShared\",\n      value: function finalizeShared(state) {\n        this.index++;\n        state.isFinished = true;\n        this.setState(state);\n        this.runFinalizeCallbacks();\n        this.dispatchFinalizeEvents(state.completionState);\n      }\n    }, {\n      key: \"dispatchFinalizeEvents\",\n      value: function dispatchFinalizeEvents(completionState) {\n        switch (completionState) {\n          case _completionStates.COMPLETION_SUCCESS:\n            this.taskInstance.onSuccess();\n            break;\n          case _completionStates.COMPLETION_ERROR:\n            this.taskInstance.onError(this.state.error);\n            break;\n          case _completionStates.COMPLETION_CANCEL:\n            this.taskInstance.onCancel(this.state.cancelReason);\n            break;\n        }\n      }\n    }, {\n      key: \"invokeYieldable\",\n      value: function invokeYieldable(yieldedValue) {\n        try {\n          var maybeDisposer = yieldedValue[_yieldables.yieldableSymbol](this.taskInstance, this.index);\n          this.addDisposer(maybeDisposer);\n        } catch (e) {\n          this.env.reportUncaughtRejection(e);\n        }\n      }\n\n      /**\n       * `onYielded` is called when this task instance has been\n       * yielded in another task instance's execution. We take\n       * this opportunity to conditionally link up the tasks\n       * so that when the parent or child cancels, the other\n       * is cancelled.\n       *\n       * Given the following case:\n       *\n       * ```js\n       * parentTask: task(function * () {\n       *   yield otherTask.perform();\n       * })\n       * ```\n       *\n       * Then the `parent` param is the task instance that is executing, `this`\n       * is the `otherTask` task instance that was yielded.\n       *\n       * @private\n       */\n    }, {\n      key: \"onYielded\",\n      value: function onYielded(parent, resumeIndex) {\n        var _this4 = this;\n        this.asyncErrorsHandled = true;\n        this.onFinalize(function () {\n          var completionState = _this4.state.completionState;\n          if (completionState === _completionStates.COMPLETION_SUCCESS) {\n            parent.proceed(resumeIndex, _yieldables.YIELDABLE_CONTINUE, _this4.state.value);\n          } else if (completionState === _completionStates.COMPLETION_ERROR) {\n            parent.proceed(resumeIndex, _yieldables.YIELDABLE_THROW, _this4.state.error);\n          } else if (completionState === _completionStates.COMPLETION_CANCEL) {\n            parent.proceed(resumeIndex, _yieldables.YIELDABLE_CANCEL, null);\n          }\n        });\n        var performType = this.getPerformType();\n        if (performType === PERFORM_TYPE_UNLINKED) {\n          return;\n        }\n        return function () {\n          _this4.detectSelfCancelLoop(performType, parent);\n          _this4.cancel(new _cancelation.CancelRequest(_cancelation.CANCEL_KIND_PARENT_CANCEL));\n        };\n      }\n    }, {\n      key: \"getPerformType\",\n      value: function getPerformType() {\n        return this.taskInstance.performType || PERFORM_TYPE_DEFAULT;\n      }\n    }, {\n      key: \"detectSelfCancelLoop\",\n      value: function detectSelfCancelLoop(performType, parent) {\n        if (performType !== PERFORM_TYPE_DEFAULT) {\n          return;\n        }\n        var parentCancelRequest = parent.executor && parent.executor.cancelRequest;\n\n        // Detect that the parent was cancelled by a lifespan ending and\n        // that the child is still running and not cancelled.\n        if (parentCancelRequest && parentCancelRequest.kind === _cancelation.CANCEL_KIND_LIFESPAN_END && !this.cancelRequest && !this.state.isFinished) {\n          this.taskInstance.selfCancelLoopWarning(parent);\n        }\n      }\n    }]);\n  }();\n});","define(\"ember-concurrency/-private/external/task-instance/initial-state\", [\"exports\", \"ember-concurrency/-private/external/task-instance/completion-states\"], function (_exports, _completionStates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.INITIAL_STATE = void 0;\n  var INITIAL_STATE = _exports.INITIAL_STATE = {\n    completionState: _completionStates.COMPLETION_PENDING,\n    /**\n     * If this TaskInstance runs to completion by returning a property\n     * other than a rejecting promise, this property will be set\n     * with that value.\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    value: null,\n    /**\n     * If this TaskInstance is canceled or throws an error (or yields\n     * a promise that rejects), this property will be set with that error.\n     * Otherwise, it is null.\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    error: null,\n    /**\n     * True if the task instance is fulfilled.\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    isSuccessful: false,\n    /**\n     * True if the task instance resolves to a rejection.\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    isError: false,\n    /**\n     * True if the task instance is canceled\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    isCanceled: false,\n    /**\n     * True if the task instance has started, else false.\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    hasStarted: false,\n    /**\n     * True if the task has run to completion.\n     *\n     * @memberof TaskInstance\n     * @instance\n     * @readOnly\n     */\n    isFinished: false\n  };\n});","define(\"ember-concurrency/-private/external/task/default-state\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.DEFAULT_STATE = void 0;\n  var DEFAULT_STATE = _exports.DEFAULT_STATE = {\n    last: null,\n    lastRunning: null,\n    lastPerformed: null,\n    lastSuccessful: null,\n    lastComplete: null,\n    lastErrored: null,\n    lastCanceled: null,\n    lastIncomplete: null,\n    performCount: 0\n  };\n  Object.freeze(DEFAULT_STATE);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/external/task/task-group\", [\"exports\", \"ember-concurrency/-private/external/task/taskable\"], function (_exports, _taskable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TaskGroup = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var TaskGroup = _exports.TaskGroup = /*#__PURE__*/function (_Taskable) {\n    function TaskGroup() {\n      _classCallCheck(this, TaskGroup);\n      return _callSuper(this, TaskGroup, arguments);\n    }\n    _inherits(TaskGroup, _Taskable);\n    return _createClass(TaskGroup);\n  }(_taskable.Taskable);\n});","define(\"ember-concurrency/-private/external/task/task\", [\"exports\", \"ember-concurrency/-private/external/task/taskable\", \"ember-concurrency/-private/external/task-instance/executor\"], function (_exports, _taskable, _executor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Task = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var TaskLinkProxy = /*#__PURE__*/function () {\n    function TaskLinkProxy(task, performType, linkedObject) {\n      _classCallCheck(this, TaskLinkProxy);\n      this.task = task;\n      this.performType = performType;\n      this.linkedObject = linkedObject;\n    }\n    return _createClass(TaskLinkProxy, [{\n      key: \"perform\",\n      value: function perform() {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        return this.task._performShared(args, this.performType, this.linkedObject);\n      }\n    }]);\n  }();\n  var Task = _exports.Task = /*#__PURE__*/function (_Taskable) {\n    function Task(options) {\n      var _this;\n      _classCallCheck(this, Task);\n      _this = _callSuper(this, Task, [options]);\n      _this.generatorFactory = options.generatorFactory;\n      _this.perform = _this._perform.bind(_this);\n      return _this;\n    }\n    _inherits(Task, _Taskable);\n    return _createClass(Task, [{\n      key: \"linked\",\n      value: function linked() {\n        var linkedObject = (0, _executor.getRunningInstance)();\n        if (!linkedObject) {\n          throw new Error(\"You can only call .linked() from within a task.\");\n        }\n        return new TaskLinkProxy(this, _executor.PERFORM_TYPE_LINKED, linkedObject);\n      }\n    }, {\n      key: \"unlinked\",\n      value: function unlinked() {\n        return new TaskLinkProxy(this, _executor.PERFORM_TYPE_UNLINKED, null);\n      }\n    }, {\n      key: \"toString\",\n      value: function toString() {\n        return \"<Task:\".concat(this.name, \">\");\n      }\n    }, {\n      key: \"_clone\",\n      value: function _clone() {\n        return new Task({\n          context: this.context,\n          debug: this.debug,\n          env: this.env,\n          generatorFactory: this.generatorFactory,\n          group: this.group,\n          hasEnabledEvents: this.hasEnabledEvents,\n          name: this.name,\n          onStateCallback: this.onStateCallback,\n          scheduler: this.scheduler\n        });\n      }\n    }, {\n      key: \"_curry\",\n      value: function _curry() {\n        var task = this._clone();\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        task._curryArgs = [].concat(_toConsumableArray(this._curryArgs || []), args);\n        return task;\n      }\n    }, {\n      key: \"_perform\",\n      value: function _perform() {\n        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n          args[_key3] = arguments[_key3];\n        }\n        return this._performShared(args, _executor.PERFORM_TYPE_DEFAULT, null);\n      }\n    }, {\n      key: \"_performShared\",\n      value: function _performShared(args, performType, linkedObject) {\n        var fullArgs = this._curryArgs ? [].concat(_toConsumableArray(this._curryArgs), _toConsumableArray(args)) : args;\n        var taskInstance = this._taskInstanceFactory(fullArgs, performType, linkedObject);\n        if (performType === _executor.PERFORM_TYPE_LINKED) {\n          linkedObject._expectsLinkedYield = true;\n        }\n        if (!this._isAlive) {\n          // a task linked to a dead lifetime should immediately cancel.\n          taskInstance.cancel();\n        }\n        this.scheduler.perform(taskInstance);\n        return taskInstance;\n      }\n\n      // eslint-disable-next-line no-unused-vars\n    }, {\n      key: \"_taskInstanceOptions\",\n      value: function _taskInstanceOptions(args, performType, _linkedObject) {\n        var _this2 = this;\n        var generatorFactory = function generatorFactory() {\n          return _this2.generatorFactory(args);\n        };\n        var taskInstanceOptions = {\n          task: this,\n          args: args,\n          executor: new _executor.TaskInstanceExecutor({\n            generatorFactory: generatorFactory,\n            env: this.env,\n            debug: this.debug\n          }),\n          performType: performType,\n          hasEnabledEvents: this.hasEnabledEvents\n        };\n        return taskInstanceOptions;\n      }\n    }]);\n  }(_taskable.Taskable);\n});","define(\"ember-concurrency/-private/external/task/taskable\", [\"exports\", \"ember-concurrency/-private/external/task/default-state\", \"ember-concurrency/-private/external/task-instance/cancelation\"], function (_exports, _defaultState, _cancelation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Taskable = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var guidId = 0;\n  function makeGuid() {\n    return \"ec_\".concat(guidId++);\n  }\n  var Taskable = _exports.Taskable = /*#__PURE__*/function () {\n    function Taskable(options) {\n      _classCallCheck(this, Taskable);\n      this.context = options.context;\n      this.debug = options.debug || false;\n      this.enabledModifiers = options.enabledModifiers;\n      this.env = options.env;\n      this.group = options.group;\n      this.hasEnabledEvents = options.hasEnabledEvents;\n      this.modifierOptions = options.modifierOptions;\n      this.name = options.name;\n      this.onStateCallback = options.onStateCallback;\n      this.scheduler = options.scheduler;\n      this.guid = makeGuid();\n      this.guids = {};\n      this.guids[this.guid] = true;\n      if (this.group) {\n        Object.assign(this.guids, this.group.guids);\n      }\n    }\n    return _createClass(Taskable, [{\n      key: \"cancelAll\",\n      value: function cancelAll(options) {\n        var _this = this;\n        var _ref = options || {},\n          reason = _ref.reason,\n          cancelRequestKind = _ref.cancelRequestKind,\n          resetState = _ref.resetState;\n        reason = reason || '.cancelAll() was explicitly called on the Task';\n        var cancelRequest = new _cancelation.CancelRequest(cancelRequestKind || _cancelation.CANCEL_KIND_EXPLICIT, reason);\n        return this.scheduler.cancelAll(this.guid, cancelRequest).then(function () {\n          if (resetState) {\n            _this._resetState();\n          }\n        });\n      }\n    }, {\n      key: \"_isAlive\",\n      get: function get() {\n        return true;\n      }\n    }, {\n      key: \"_resetState\",\n      value: function _resetState() {\n        this.setState(_defaultState.DEFAULT_STATE);\n      }\n\n      // override\n    }, {\n      key: \"setState\",\n      value: function setState() {}\n    }]);\n  }();\n  Object.assign(Taskable.prototype, _defaultState.DEFAULT_STATE);\n  Object.assign(Taskable.prototype, {\n    numRunning: 0,\n    numQueued: 0,\n    isRunning: false,\n    isQueued: false,\n    isIdle: true,\n    state: 'idle'\n  });\n});","define(\"ember-concurrency/-private/external/yieldables\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Yieldable = _exports.YIELDABLE_THROW = _exports.YIELDABLE_RETURN = _exports.YIELDABLE_CONTINUE = _exports.YIELDABLE_CANCEL = void 0;\n  _exports.animationFrame = animationFrame;\n  _exports.forever = _exports.cancelableSymbol = void 0;\n  _exports.rawTimeout = rawTimeout;\n  _exports.yieldableSymbol = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var cancelableSymbol = _exports.cancelableSymbol = '__ec_cancel__';\n  var yieldableSymbol = _exports.yieldableSymbol = '__ec_yieldable__';\n  var YIELDABLE_CONTINUE = _exports.YIELDABLE_CONTINUE = 'next';\n  var YIELDABLE_THROW = _exports.YIELDABLE_THROW = 'throw';\n  var YIELDABLE_RETURN = _exports.YIELDABLE_RETURN = 'return';\n  var YIELDABLE_CANCEL = _exports.YIELDABLE_CANCEL = 'cancel';\n\n  /**\n   * @class YieldableState\n   * @hideconstructor\n   */\n  var YieldableState = /*#__PURE__*/function () {\n    function YieldableState(taskInstance, resumeIndex) {\n      _classCallCheck(this, YieldableState);\n      this._taskInstance = taskInstance;\n      this._resumeIndex = resumeIndex;\n    }\n\n    /**\n     * Return yielded TaskInstance. Useful for introspection on instance state.\n     * @method getTaskInstance\n     * @memberof YieldableState\n     * @public\n     * @instance\n     */\n    return _createClass(YieldableState, [{\n      key: \"getTaskInstance\",\n      value: function getTaskInstance() {\n        return this._taskInstance;\n      }\n\n      /**\n       * Cancel the yielded TaskInstance.\n       * @method cancel\n       * @memberof YieldableState\n       * @public\n       * @instance\n       */\n    }, {\n      key: \"cancel\",\n      value: function cancel() {\n        var taskInstance = this._taskInstance;\n        taskInstance.proceed.call(taskInstance, this._resumeIndex, YIELDABLE_CANCEL);\n      }\n\n      /**\n       * Cause the TaskInstance to return from its yield with an optional value,\n       * and continue executing.\n       * @method next\n       * @memberof YieldableState\n       * @param value\n       * @public\n       * @instance\n       */\n    }, {\n      key: \"next\",\n      value: function next(value) {\n        var taskInstance = this._taskInstance;\n        taskInstance.proceed.call(taskInstance, this._resumeIndex, YIELDABLE_CONTINUE, value);\n      }\n\n      /**\n       * Short-circuit TaskInstance execution and have it return with an optional\n       * value.\n       * @method return\n       * @memberof YieldableState\n       * @param value\n       * @public\n       * @instance\n       */\n    }, {\n      key: \"return\",\n      value: function _return(value) {\n        var taskInstance = this._taskInstance;\n        taskInstance.proceed.call(taskInstance, this._resumeIndex, YIELDABLE_RETURN, value);\n      }\n\n      /**\n       * Raise a given error within the given task instance and halt execution\n       * @method throw\n       * @memberof YieldableState\n       * @param error\n       * @public\n       * @instance\n       */\n    }, {\n      key: \"throw\",\n      value: function _throw(error) {\n        var taskInstance = this._taskInstance;\n        taskInstance.proceed.call(taskInstance, this._resumeIndex, YIELDABLE_THROW, error);\n      }\n    }]);\n  }();\n  /**\n   * Yieldables are a primitive for building safe, cancelation-aware ways to\n   * instrument and introspect the runtime of a task. Many Yieldables are built-in\n   * to ember-concurrency today, such as `timeout`, `animationFrame`, and\n   * `rawTimeout`.\n   *\n   * For example, if I wanted to implement a yieldable for `requestIdleCallback`,\n   * I could do the following:\n   *\n   * ```javascript\n   * import Component from '@glimmer/component';\n   * import { task, Yieldable } from 'ember-concurrency';\n   *\n   * class IdleCallbackYieldable extends Yieldable {\n   *   onYield(state) {\n   *     let callbackId = requestIdleCallback(() => state.next());\n   *\n   *     return () => cancelIdleCallback(callbackId);\n   *   }\n   * }\n   *\n   * const idleCallback = () => new IdleCallbackYieldable();\n   *\n   * class MyComponent extends Component {\n   *   &#64;task *backgroundTask() {\n   *     while (1) {\n   *       yield idleCallback();\n   *\n   *       const data = this.complicatedNumberCrunching();\n   *       yield this.sendData(data);\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * In general, `Yieldable` instances **should** be reusable across calls, and thus\n   * care should be taken to ensure that teardown is provided and state not\n   * intended to be shared across calls stay inside `onYield`.\n   *\n   * `Yieldable` also provides automatic Promise-casting.\n   *\n   * <style>\n   *   .ignore-this--this-is-here-to-hide-constructor,\n   *   #Yieldable { display: none }\n   * </style>\n   *\n   * @class Yieldable\n   */\n  var Yieldable = _exports.Yieldable = /*#__PURE__*/function () {\n    function Yieldable() {\n      _classCallCheck(this, Yieldable);\n      this[yieldableSymbol] = this[yieldableSymbol].bind(this);\n    }\n\n    /**\n     * Defines what happens when the task encounters `yield myYieldable` and returns\n     * a disposer function that handles any cleanup.\n     *\n     * The state parameter is provided by the runtime, and provides operations for\n     * interacting with the yielding task instance and advancing, returning,\n     * throwing, or canceling its execution.\n     *\n     * @method onYield\n     * @memberof Yieldable\n     * @param {YieldableState} state\n     * @instance\n     * @public\n     */\n    return _createClass(Yieldable, [{\n      key: \"onYield\",\n      value: function onYield() {}\n    }, {\n      key: \"_deferable\",\n      value: function _deferable() {\n        var def = {\n          resolve: undefined,\n          reject: undefined\n        };\n        def.promise = new Promise(function (resolve, reject) {\n          def.resolve = resolve;\n          def.reject = reject;\n        });\n        return def;\n      }\n    }, {\n      key: \"_toPromise\",\n      value: function _toPromise() {\n        var def = this._deferable();\n        var thinInstance = {\n          proceed: function proceed(_index, resumeType, value) {\n            if (resumeType == YIELDABLE_CONTINUE || resumeType == YIELDABLE_RETURN) {\n              def.resolve(value);\n            } else {\n              def.reject(value);\n            }\n          }\n        };\n        var maybeDisposer = this[yieldableSymbol](thinInstance, 0);\n        def.promise[cancelableSymbol] = maybeDisposer;\n        return def.promise;\n      }\n\n      /**\n       * Returns a promise that resolves with the value yielded back to or returned\n       * to the yielded task, or rejects with either the exception thrown from the\n       * Yieldable, or an error with a `.name` property with value `\"TaskCancelation\"`.\n       *\n       * @method then\n       * @memberof Yieldable\n       * @instance\n       * @return {Promise}\n       */\n    }, {\n      key: \"then\",\n      value: function then() {\n        var _this$_toPromise;\n        return (_this$_toPromise = this._toPromise()).then.apply(_this$_toPromise, arguments);\n      }\n\n      /**\n       * @method catch\n       * @memberof Yieldable\n       * @instance\n       * @return {Promise}\n       */\n    }, {\n      key: \"catch\",\n      value: function _catch() {\n        var _this$_toPromise2;\n        return (_this$_toPromise2 = this._toPromise()).catch.apply(_this$_toPromise2, arguments);\n      }\n\n      /**\n       * @method finally\n       * @memberof Yieldable\n       * @instance\n       * @return {Promise}\n       */\n    }, {\n      key: \"finally\",\n      value: function _finally() {\n        var _this$_toPromise3;\n        return (_this$_toPromise3 = this._toPromise()).finally.apply(_this$_toPromise3, arguments);\n      }\n    }, {\n      key: yieldableSymbol,\n      value: function value(taskInstance, resumeIndex) {\n        var state = new YieldableState(taskInstance, resumeIndex);\n        return this.onYield(state);\n      }\n    }]);\n  }();\n  var AnimationFrameYieldable = /*#__PURE__*/function (_Yieldable) {\n    function AnimationFrameYieldable() {\n      _classCallCheck(this, AnimationFrameYieldable);\n      return _callSuper(this, AnimationFrameYieldable, arguments);\n    }\n    _inherits(AnimationFrameYieldable, _Yieldable);\n    return _createClass(AnimationFrameYieldable, [{\n      key: \"onYield\",\n      value: function onYield(state) {\n        var timerId = requestAnimationFrame(function () {\n          return state.next();\n        });\n        return function () {\n          return cancelAnimationFrame(timerId);\n        };\n      }\n    }]);\n  }(Yieldable);\n  var ForeverYieldable = /*#__PURE__*/function (_Yieldable2) {\n    function ForeverYieldable() {\n      _classCallCheck(this, ForeverYieldable);\n      return _callSuper(this, ForeverYieldable, arguments);\n    }\n    _inherits(ForeverYieldable, _Yieldable2);\n    return _createClass(ForeverYieldable, [{\n      key: \"onYield\",\n      value: function onYield() {}\n    }]);\n  }(Yieldable);\n  var RawTimeoutYieldable = /*#__PURE__*/function (_Yieldable3) {\n    function RawTimeoutYieldable(ms) {\n      var _this;\n      _classCallCheck(this, RawTimeoutYieldable);\n      _this = _callSuper(this, RawTimeoutYieldable);\n      _this.ms = ms;\n      return _this;\n    }\n    _inherits(RawTimeoutYieldable, _Yieldable3);\n    return _createClass(RawTimeoutYieldable, [{\n      key: \"onYield\",\n      value: function onYield(state) {\n        var timerId = setTimeout(function () {\n          return state.next();\n        }, this.ms);\n        return function () {\n          return clearTimeout(timerId);\n        };\n      }\n    }]);\n  }(Yieldable);\n  /**\n   * Yielding `animationFrame()` will pause a task until after the next animation\n   * frame using the native `requestAnimationFrame()` browser API.\n   *\n   * The task below, when performed, will print the time since the last loop run\n   * for every animation frame.\n   *\n   * ```js\n   * export default class MyComponent extends Component {\n   *   &#64;task *myTask() {\n   *     let lastNow = performance.now();\n   *     while (true) {\n   *       yield animationFrame();\n   *\n   *       let now = performance.now();\n   *       let dt = now - lastNow;\n   *       lastNow = now;\n   *\n   *       console.log(dt);\n   *     }\n   *   }\n   * }\n   * ```\n   */\n  function animationFrame() {\n    return new AnimationFrameYieldable();\n  }\n\n  /**\n   *\n   * Yielding `forever` will pause a task indefinitely until\n   * it is cancelled (i.e. via host object destruction, the restartable modifier,\n   * or manual cancellation).\n   *\n   * This is often useful in cases involving animation: if you're\n   * using Liquid Fire, or some other animation scheme, sometimes you'll\n   * notice buttons visibly reverting to their inactive states during\n   * a route transition. By yielding `forever` in a Component task that drives a\n   * button's active state, you can keep a task indefinitely running\n   * until the animation runs to completion.\n   *\n   * NOTE: Liquid Fire also includes a useful `waitUntilIdle()` method\n   * on the `liquid-fire-transitions` service that you can use in a lot\n   * of these cases, but it won't cover cases of asynchrony that are\n   * unrelated to animation, in which case `forever` might be better suited\n   * to your needs.\n   *\n   * ```js\n   * import { task, forever } from 'ember-concurrency';\n   * export default class MyComponent extends Component {\n   *   &#64;service myService;\n   *   &#64;task *myTask() {\n   *     yield this.myService.doSomethingThatCausesATransition();\n   *     yield forever;\n   *   }\n   * }\n   * ```\n   */\n  var forever = _exports.forever = new ForeverYieldable();\n\n  /**\n   *\n   * Yielding `rawTimeout(ms)` will pause a task for the duration\n   * of time passed in, in milliseconds.\n   *\n   * The timeout will use the native `setTimeout()` browser API,\n   * instead of the Ember runloop, which means that test helpers\n   * will *not* wait for it to complete.\n   *\n   * The task below, when performed, will print a message to the\n   * console every second.\n   *\n   * ```js\n   * export default class MyComponent extends Component {\n   *   &#64;task *myTask() {\n   *     while (true) {\n   *       console.log(\"Hello!\");\n   *       yield rawTimeout(1000);\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @param {number} ms - the amount of time to sleep before resuming\n   *   the task, in milliseconds\n   */\n  function rawTimeout(ms) {\n    return new RawTimeoutYieldable(ms);\n  }\n});","define(\"ember-concurrency/-private/helpers\", [\"exports\", \"@ember/object\", \"@ember/debug\"], function (_exports, _object, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.taskHelperClosure = taskHelperClosure;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function taskHelperClosure(helperName, taskMethod, _args, hash) {\n    var task = _args[0];\n    var outerArgs = _args.slice(1);\n    return function () {\n      if (!task || typeof task[taskMethod] !== 'function') {\n        (true && !(false) && (0, _debug.assert)(\"The first argument passed to the `\".concat(helperName, \"` helper should be a Task object (without quotes); you passed \").concat(task), false));\n        return;\n      }\n      for (var _len = arguments.length, innerArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n        innerArgs[_key] = arguments[_key];\n      }\n      if (hash && hash.value) {\n        var event = innerArgs.pop();\n        innerArgs.push((0, _object.get)(event, hash.value));\n      }\n      return task[taskMethod].apply(task, _toConsumableArray(outerArgs).concat(innerArgs));\n    };\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/scheduler/ember-scheduler\", [\"exports\", \"ember-concurrency/-private/external/scheduler/scheduler\", \"@ember/runloop\"], function (_exports, _scheduler, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var EmberScheduler = /*#__PURE__*/function (_Scheduler) {\n    function EmberScheduler() {\n      _classCallCheck(this, EmberScheduler);\n      return _callSuper(this, EmberScheduler, arguments);\n    }\n    _inherits(EmberScheduler, _Scheduler);\n    return _createClass(EmberScheduler, [{\n      key: \"scheduleRefresh\",\n      value: function scheduleRefresh() {\n        (0, _runloop.once)(this, this.refresh);\n      }\n    }]);\n  }(_scheduler.default);\n  var _default = _exports.default = EmberScheduler;\n});","define(\"ember-concurrency/-private/task-decorators\", [\"exports\", \"@ember/object\", \"ember-concurrency/-private/external/task-decorators\", \"ember-concurrency/-private/task-factory\", \"ember-concurrency/-private/utils\"], function (_exports, _object, _taskDecorators, _taskFactory, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.taskGroup = _exports.task = _exports.restartableTaskGroup = _exports.restartableTask = _exports.lastValue = _exports.keepLatestTaskGroup = _exports.keepLatestTask = _exports.enqueueTaskGroup = _exports.enqueueTask = _exports.dropTaskGroup = _exports.dropTask = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  var computedLastValue = (0, _taskDecorators.decoratorWithParams)(function (target, key, descriptor) {\n    var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [],\n      _ref2 = _slicedToArray(_ref, 1),\n      taskName = _ref2[0];\n    var initializer = descriptor.initializer;\n    delete descriptor.initializer;\n    var cp = (0, _object.computed)(\"\".concat(taskName, \".lastSuccessful\"), function () {\n      var lastInstance = (0, _object.get)(this, \"\".concat(taskName, \".lastSuccessful\"));\n      if (lastInstance) {\n        // eslint-disable-next-line ember/no-get\n        return (0, _object.get)(lastInstance, 'value');\n      }\n      if (initializer) {\n        return initializer.call(this);\n      }\n      return undefined;\n    });\n    return cp(target, key, descriptor);\n  });\n  var lastValue = _exports.lastValue = _utils.USE_TRACKED ? _taskDecorators.lastValue : computedLastValue;\n\n  /**\n   * A Task is a cancelable, restartable, asynchronous operation that\n   * is driven by a generator function. Tasks are automatically canceled\n   * when the object they live on is destroyed (e.g. a Component\n   * is unrendered).\n   *\n   * Turns the decorated generator function into a task.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task. For instance `maxConcurrency`, `on`, `group` or `keepLatest`.\n   *\n   * By default, tasks have no concurrency constraints\n   * (multiple instances of a task can be running at the same time)\n   * but much of a power of tasks lies in proper usage of Task Modifiers\n   * that you can apply to a task.\n   *\n   * You can also define an\n   * <a href=\"/docs/advanced/encapsulated-task\">Encapsulated Task</a>\n   * by decorating an object that defines a `perform` generator\n   * method.\n   *\n   * ```js\n   * import Component from '@ember/component';\n   * import { task } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;task\n   *   *plainTask() {}\n   *\n   *   &#64;task({ maxConcurrency: 5, keepLatest: true, cancelOn: 'click' })\n   *   *taskWithModifiers() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}] Task modifier options\n   * @param {string|string[]} [options.cancelOn] Events to cancel task on. Applies only to `&#64;ember/component`\n   * @param {boolean} [options.enqueue] Sets `enqueue` modifier on task if `true`\n   * @param {boolean} [options.evented] Enables [task lifecycle events](/docs/advanced/lifecycle-events) for this Task, if `true`\n   * @param {boolean} [options.debug] Enables task debugging if `true`\n   * @param {boolean} [options.drop] Sets `drop` modifier on task if `true`\n   * @param {string} [options.group] Associates task with the group specified\n   * @param {boolean} [options.keepLatest] Sets `keepLatest` modifier on task if `true`\n   * @param {number} [options.maxConcurrency] Sets the maximum number of running task instances for the task\n   * @param {string|string[]} [options.observes] Properties to watch and cause task to be performed when they change\n   * @param {string|string[]} [options.on] Events to perform task on. Applies only to `&#64;ember/component`\n   * @param {function?} [options.onState] Callback to use for state tracking. May be set to `null` to disable state tracking.\n   * @param {boolean} [options.restartable] Sets `restartable` modifier on task if `true`\n   * @return {Task}\n   */\n  var task = _exports.task = (0, _taskDecorators.createTaskDecorator)({}, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `drop` modifier.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task. For instance `maxConcurrency`, `on`, or `group`.\n   *\n   * You can also define an\n   * <a href=\"/docs/advanced/encapsulated-task\">Encapsulated Task</a>\n   * by decorating an object that defines a `perform` generator\n   * method.\n   *\n   * ```js\n   * import Component from '@ember/component';\n   * import { task, dropTask } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;task\n   *   *plainTask() {}\n   *\n   *   &#64;dropTask({ cancelOn: 'click' })\n   *   *myDropTask() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}] Task modifier options. See {@link task} for list.\n   * @return {Task}\n   */\n  var dropTask = _exports.dropTask = (0, _taskDecorators.createTaskDecorator)({\n    drop: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `enqueue` modifier.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task. For instance `maxConcurrency`, `on`, or `group`.\n   *\n   * You can also define an\n   * <a href=\"/docs/advanced/encapsulated-task\">Encapsulated Task</a>\n   * by decorating an object that defines a `perform` generator\n   * method.\n   *\n   * ```js\n   * import Component from '@ember/component';\n   * import { task, enqueueTask } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;task\n   *   *plainTask() {}\n   *\n   *   &#64;enqueueTask({ cancelOn: 'click' })\n   *   *myEnqueueTask() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}] Task modifier options. See {@link task} for list.\n   * @return {Task}\n   */\n  var enqueueTask = _exports.enqueueTask = (0, _taskDecorators.createTaskDecorator)({\n    enqueue: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `keepLatest` modifier.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task. For instance `maxConcurrency`, `on`, or `group`.\n   *\n   * You can also define an\n   * <a href=\"/docs/advanced/encapsulated-task\">Encapsulated Task</a>\n   * by decorating an object that defines a `perform` generator\n   * method.\n   *\n   * ```js\n   * import Component from '@ember/component';\n   * import { task, keepLatestTask } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;task\n   *   *plainTask() {}\n   *\n   *   &#64;keepLatestTask({ cancelOn: 'click' })\n   *   *myKeepLatestTask() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}] Task modifier options. See {@link task} for list.\n   * @return {Task}\n   */\n  var keepLatestTask = _exports.keepLatestTask = (0, _taskDecorators.createTaskDecorator)({\n    keepLatest: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated generator function into a task and applies the\n   * `restartable` modifier.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task. For instance `maxConcurrency`, `on`, or `group`.\n   *\n   * You can also define an\n   * <a href=\"/docs/advanced/encapsulated-task\">Encapsulated Task</a>\n   * by decorating an object that defines a `perform` generator\n   * method.\n   *\n   * ```js\n   * import Component from '@ember/component';\n   * import { task, restartableTask } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;task\n   *   *plainTask() {}\n   *\n   *   &#64;restartableTask({ cancelOn: 'click' })\n   *   *myRestartableTask() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}] Task modifier options. See {@link task} for list.\n   * @return {Task}\n   */\n  var restartableTask = _exports.restartableTask = (0, _taskDecorators.createTaskDecorator)({\n    restartable: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * \"Task Groups\" provide a means for applying\n   * task modifiers to groups of tasks. Once a {@linkcode Task} is declared\n   * as part of a group task, modifiers like `drop` or `restartable`\n   * will no longer affect the individual `Task`. Instead those\n   * modifiers can be applied to the entire group.\n   *\n   * Turns the decorated property into a task group.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task group. For instance `maxConcurrency` or `keepLatest`.\n   *\n   * ```js\n   * import Component from '@glimmer/component';\n   * import { task, taskGroup } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;taskGroup({ maxConcurrency: 5 }) chores;\n   *\n   *   &#64;task({ group: 'chores' })\n   *   *mowLawn() {}\n   *\n   *   &#64;task({ group: 'chores' })\n   *   *doDishes() {}\n   * }\n   * ```\n   *\n   * @function\n   * @param {object?} [options={}] Task group modifier options. See {@link task} for list.\n   * @return {TaskGroup}\n   */\n  var taskGroup = _exports.taskGroup = (0, _taskDecorators.createTaskGroupDecorator)({}, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `drop` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}] Task group modifier options. See {@link task} for list.\n   * @return {TaskGroup}\n   */\n  var dropTaskGroup = _exports.dropTaskGroup = (0, _taskDecorators.createTaskGroupDecorator)({\n    drop: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `enqueue` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}] Task group modifier options. See {@link task} for list.\n   * @return {TaskGroup}\n   */\n  var enqueueTaskGroup = _exports.enqueueTaskGroup = (0, _taskDecorators.createTaskGroupDecorator)({\n    enqueue: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `keepLatest` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}] Task group modifier options. See {@link task} for list.\n   * @return {TaskGroup}\n   */\n  var keepLatestTaskGroup = _exports.keepLatestTaskGroup = (0, _taskDecorators.createTaskGroupDecorator)({\n    keepLatest: true\n  }, _taskFactory.TaskFactory);\n\n  /**\n   * Turns the decorated property into a task group and applies the\n   * `restartable` modifier.\n   *\n   * Optionally takes a hash of further options that will be applied as modifiers\n   * to the task group.\n   *\n   * @function\n   * @param {object?} [options={}] Task group modifier options. See {@link task} for list.\n   * @return {TaskGroup}\n   */\n  var restartableTaskGroup = _exports.restartableTaskGroup = (0, _taskDecorators.createTaskGroupDecorator)({\n    restartable: true\n  }, _taskFactory.TaskFactory);\n});","define(\"ember-concurrency/-private/task-factory\", [\"exports\", \"@ember/debug\", \"@ember/object\", \"@ember/object/events\", \"@ember/object/observers\", \"@ember/runloop\", \"ember-concurrency/-private/external/task-factory\", \"ember-concurrency/-private/task\", \"ember-concurrency/-private/task-properties\", \"ember-concurrency/-private/task-group\", \"ember-concurrency/-private/scheduler/ember-scheduler\", \"ember-concurrency/-private/ember-environment\"], function (_exports, _debug, _object, _events, _observers, _runloop, _taskFactory, _task, _taskProperties, _taskGroup, _emberScheduler, _emberEnvironment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TaskFactory = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var handlerCounter = 0;\n  function registerOnPrototype(addListenerOrObserver, proto, names, taskName, taskMethod, once) {\n    if (names && names.length > 0) {\n      for (var i = 0; i < names.length; ++i) {\n        var name = names[i];\n        var handlerName = \"__ember_concurrency_handler_\".concat(handlerCounter++);\n        proto[handlerName] = makeTaskCallback(taskName, taskMethod, once);\n        addListenerOrObserver(proto, name, null, handlerName);\n      }\n    }\n  }\n  function makeTaskCallback(taskName, method, once) {\n    return function () {\n      var task = (0, _object.get)(this, taskName);\n      if (once) {\n        _runloop.scheduleOnce.apply(void 0, ['actions', task, method].concat(Array.prototype.slice.call(arguments)));\n      } else {\n        task[method].apply(task, arguments);\n      }\n    };\n  }\n  var ensureArray = function ensureArray(possibleArr) {\n    return Array.isArray(possibleArr) ? possibleArr : [possibleArr];\n  };\n  (0, _taskFactory.registerModifier)('cancelOn', function (factory, eventNames) {\n    return factory.addCancelEvents.apply(factory, _toConsumableArray(ensureArray(eventNames)));\n  });\n  (0, _taskFactory.registerModifier)('observes', function (factory, propertyPaths) {\n    return factory.addObserverKeys.apply(factory, _toConsumableArray(ensureArray(propertyPaths)));\n  });\n  (0, _taskFactory.registerModifier)('on', function (factory, eventNames) {\n    return factory.addPerformEvents.apply(factory, _toConsumableArray(ensureArray(eventNames)));\n  });\n  var TaskFactory = _exports.TaskFactory = /*#__PURE__*/function (_BaseTaskFactory) {\n    function TaskFactory() {\n      var _this;\n      _classCallCheck(this, TaskFactory);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, TaskFactory, [].concat(args));\n      _defineProperty(_this, \"env\", _emberEnvironment.EMBER_ENVIRONMENT);\n      return _this;\n    }\n    _inherits(TaskFactory, _BaseTaskFactory);\n    return _createClass(TaskFactory, [{\n      key: \"createTask\",\n      value: function createTask(context) {\n        var _this2 = this;\n        (true && !(this.taskDefinition) && (0, _debug.assert)(\"Cannot create task if a task definition is not provided as generator function or encapsulated task.\", this.taskDefinition));\n        var options = this.getTaskOptions(context);\n        if (_typeof(this.taskDefinition) === 'object') {\n          return new _task.EncapsulatedTask(Object.assign({\n            taskObj: this.taskDefinition\n          }, options));\n        } else {\n          return new _task.Task(Object.assign({\n            generatorFactory: function generatorFactory(args) {\n              return _this2.taskDefinition.apply(context, args);\n            }\n          }, options));\n        }\n      }\n    }, {\n      key: \"createTaskGroup\",\n      value: function createTaskGroup(context) {\n        (true && !(!this.taskDefinition) && (0, _debug.assert)(\"A task definition is not expected for a task group.\", !this.taskDefinition));\n        var options = this.getTaskOptions(context);\n        return new _taskGroup.TaskGroup(options);\n      }\n    }, {\n      key: \"addCancelEvents\",\n      value: function addCancelEvents() {\n        var _this$_cancelEventNam;\n        this._cancelEventNames = this._cancelEventNames || [];\n        (_this$_cancelEventNam = this._cancelEventNames).push.apply(_this$_cancelEventNam, arguments);\n        return this;\n      }\n    }, {\n      key: \"addObserverKeys\",\n      value: function addObserverKeys() {\n        var _this$_observes;\n        this._observes = this._observes || [];\n        (_this$_observes = this._observes).push.apply(_this$_observes, arguments);\n        return this;\n      }\n    }, {\n      key: \"addPerformEvents\",\n      value: function addPerformEvents() {\n        var _this$_eventNames;\n        this._eventNames = this._eventNames || [];\n        (_this$_eventNames = this._eventNames).push.apply(_this$_eventNames, arguments);\n        return this;\n      }\n    }, {\n      key: \"getModifier\",\n      value: function getModifier(name) {\n        var modifier = _superPropGet(TaskFactory, \"getModifier\", this, 3)([name]);\n        if (!modifier && typeof _taskProperties.TaskProperty.prototype[name] === 'function') {\n          // Shim for compatibility with user-defined TaskProperty prototype\n          // extensions. To be removed when replaced with proper public API.\n          modifier = _taskProperties.TaskProperty.prototype[name].bind(this);\n        }\n        (true && !(modifier) && (0, _debug.assert)(\"Task option '\".concat(name, \"' is not recognized as a supported option.\"), modifier));\n        return modifier;\n      }\n    }, {\n      key: \"getScheduler\",\n      value: function getScheduler(schedulerPolicy, stateTrackingEnabled) {\n        return new _emberScheduler.default(schedulerPolicy, stateTrackingEnabled);\n      }\n    }, {\n      key: \"_setupEmberKVO\",\n      value: function _setupEmberKVO(proto) {\n        // TODO: Does this make sense in a post-Ember object world?\n\n        registerOnPrototype(_events.addListener, proto, this._eventNames, this.name, 'perform', false);\n        registerOnPrototype(_events.addListener, proto, this._cancelEventNames, this.name, 'cancelAll', false);\n        registerOnPrototype(_observers.addObserver, proto, this._observes, this.name, 'perform', true);\n      }\n\n      // Provided for compatibility with ember-concurrency TaskProperty extension\n      // methods\n    }, {\n      key: \"taskFn\",\n      get: function get() {\n        return this.taskDefinition;\n      },\n      set: function set(fn) {\n        this.setTaskDefinition(fn);\n      }\n    }]);\n  }(_taskFactory.TaskFactory);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/task-group\", [\"exports\", \"ember-concurrency/-private/external/task/task-group\", \"ember-concurrency/-private/taskable-mixin\", \"ember-concurrency/-private/tracked-state\"], function (_exports, _taskGroup, _taskableMixin, _trackedState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TaskGroup = void 0;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  /**\n   * \"Task Groups\" provide a means for applying\n   * task modifiers to groups of tasks. Once a {@linkcode Task} is declared\n   * as part of a group task, modifiers like `drop` or `restartable`\n   * will no longer affect the individual `Task`. Instead those\n   * modifiers can be applied to the entire group.\n   *\n   * Turns the decorated property into a task group.\n   *\n   * Optionally takes a hash of options that will be applied as modifiers to the\n   * task group. For instance `maxConcurrency` or `keepLatest`.\n   *\n   * ```js\n   * import Component from '@glimmer/component';\n   * import { task, taskGroup } from 'ember-concurrency';\n   *\n   * class MyComponent extends Component {\n   *   &#64;taskGroup({ maxConcurrency: 5 }) chores;\n   *\n   *   &#64;task({ group: 'chores' })\n   *   *mowLawn() {}\n   *\n   *   &#64;task({ group: 'chores' })\n   *   *doDishes() {}\n   * }\n   * ```\n   *\n   * <style>\n   *  .ignore-this--this-is-here-to-hide-constructor,\n   *  #TaskGroup { display: none }\n   * </style>\n   *\n   * @class TaskGroup\n   */\n  var TaskGroup = _exports.TaskGroup = /*#__PURE__*/function (_TaskGroupBase) {\n    function TaskGroup() {\n      _classCallCheck(this, TaskGroup);\n      return _callSuper(this, TaskGroup, arguments);\n    }\n    _inherits(TaskGroup, _TaskGroupBase);\n    return _createClass(TaskGroup);\n  }(_taskGroup.TaskGroup);\n  if (_trackedState.TRACKED_INITIAL_TASK_STATE) {\n    Object.defineProperties(TaskGroup.prototype, _trackedState.TRACKED_INITIAL_TASK_STATE);\n  }\n  Object.assign(TaskGroup.prototype, _taskableMixin.TASKABLE_MIXIN);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/task-instance\", [\"exports\", \"ember-concurrency/-private/external/task-instance/base\", \"ember-concurrency/-private/tracked-state\", \"ember-concurrency/-private/utils\"], function (_exports, _base, _trackedState, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TaskInstance = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  /**\n    A `TaskInstance` represent a single execution of a\n    {@linkcode Task}. Every call to {@linkcode Task#perform} returns\n    a `TaskInstance`.\n  \n    `TaskInstance`s are cancelable, either explicitly\n    via {@linkcode TaskInstance#cancel} or {@linkcode Task#cancelAll},\n    or automatically due to the host object being destroyed, or\n    because concurrency policy enforced by a\n    {@linkcode TaskProperty Task Modifier} canceled the task instance.\n  \n    <style>\n      .ignore-this--this-is-here-to-hide-constructor,\n      #TaskInstance { display: none }\n    </style>\n  \n    @class TaskInstance\n  */\n  var TaskInstance = _exports.TaskInstance = /*#__PURE__*/function (_BaseTaskInstance) {\n    function TaskInstance() {\n      _classCallCheck(this, TaskInstance);\n      return _callSuper(this, TaskInstance, arguments);\n    }\n    _inherits(TaskInstance, _BaseTaskInstance);\n    return _createClass(TaskInstance, [{\n      key: \"setState\",\n      value: function setState(props) {\n        var state = this._recomputeState(props);\n        (0, _utils.assignProperties)(this, _objectSpread(_objectSpread({}, props), {}, {\n          isRunning: !props.isFinished,\n          isDropped: state === 'dropped',\n          state: state\n        }));\n      }\n    }, {\n      key: \"_recomputeState\",\n      value: function _recomputeState(props) {\n        if (props.isDropped) {\n          return 'dropped';\n        } else if (props.isCanceled) {\n          if (props.hasStarted) {\n            return 'canceled';\n          } else {\n            return 'dropped';\n          }\n        } else if (props.isFinished) {\n          return 'finished';\n        } else if (props.hasStarted) {\n          return 'running';\n        } else {\n          return 'waiting';\n        }\n      }\n    }, {\n      key: \"onStarted\",\n      value: function onStarted() {\n        this.triggerEvent('started', this);\n      }\n    }, {\n      key: \"onSuccess\",\n      value: function onSuccess() {\n        this.triggerEvent('succeeded', this);\n      }\n    }, {\n      key: \"onError\",\n      value: function onError(error) {\n        this.triggerEvent('errored', this, error);\n      }\n    }, {\n      key: \"onCancel\",\n      value: function onCancel(cancelReason) {\n        this.triggerEvent('canceled', this, cancelReason);\n      }\n    }, {\n      key: \"formatCancelReason\",\n      value: function formatCancelReason(reason) {\n        return \"TaskInstance '\".concat(this.getName(), \"' was canceled because \").concat(reason, \". For more information, see: http://ember-concurrency.com/docs/task-cancelation-help\");\n      }\n    }, {\n      key: \"getName\",\n      value: function getName() {\n        if (!this.name) {\n          this.name = this.task && this.task.name || '<unknown>';\n        }\n        return this.name;\n      }\n    }, {\n      key: \"selfCancelLoopWarning\",\n      value: function selfCancelLoopWarning(parent) {\n        var parentName = \"`\".concat(parent.getName(), \"`\");\n        var childName = \"`\".concat(this.getName(), \"`\");\n        // eslint-disable-next-line no-console\n        console.warn(\"ember-concurrency detected a potentially hazardous \\\"self-cancel loop\\\" between parent task \".concat(parentName, \" and child task \").concat(childName, \". If you want child task \").concat(childName, \" to be canceled when parent task \").concat(parentName, \" is canceled, please change `.perform()` to `.linked().perform()`. If you want child task \").concat(childName, \" to keep running after parent task \").concat(parentName, \" is canceled, change it to `.unlinked().perform()`\"));\n      }\n    }, {\n      key: \"triggerEvent\",\n      value: function triggerEvent() {\n        if (!this.hasEnabledEvents) {\n          return;\n        }\n        var taskInstance = this;\n        var task = taskInstance.task;\n        var host = task.context;\n        var eventNamespace = task && task.name;\n        if (host && host.trigger && eventNamespace) {\n          for (var _len = arguments.length, allArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n            allArgs[_key] = arguments[_key];\n          }\n          var eventType = allArgs[0],\n            args = allArgs.slice(1);\n          host.trigger.apply(host, [\"\".concat(eventNamespace, \":\").concat(eventType)].concat(_toConsumableArray(args)));\n        }\n      }\n\n      /**\n       * Describes the state that the task instance is in. Can be used for debugging,\n       * or potentially driving some UI state. Possible values are:\n       *\n       * - `\"dropped\"`: task instance was canceled before it started\n       * - `\"canceled\"`: task instance was canceled before it could finish\n       * - `\"finished\"`: task instance ran to completion (even if an exception was thrown)\n       * - `\"running\"`: task instance is currently running (returns true even if\n       *     is paused on a yielded promise)\n       * - `\"waiting\"`: task instance hasn't begun running yet (usually\n       *     because the task is using the {@linkcode TaskProperty#enqueue enqueue}\n       *     task modifier)\n       *\n       * The animated timeline examples on the [Task Concurrency](/docs/task-concurrency)\n       * docs page make use of this property.\n       *\n       * @name state\n       * @memberof TaskInstance\n       * @instance\n       * @readOnly\n       */\n\n      /**\n       * True if the TaskInstance was canceled before it could\n       * ever start running. For example, calling\n       * {@linkcode Task#perform .perform()} twice on a\n       * task with the {@linkcode TaskProperty#drop drop} modifier applied\n       * will result in the second task instance being dropped.\n       *\n       * @name isDropped\n       * @memberof TaskInstance\n       * @instance\n       * @readOnly\n       */\n\n      /**\n       * True if the task is still running.\n       *\n       * @name isRunning\n       * @memberof TaskInstance\n       * @instance\n       * @readOnly\n       */\n\n      /**\n       * Event emitted when a new {@linkcode TaskInstance} starts executing.\n       *\n       * `on` from `@ember/object/evented` may be used to create a binding on the host object to the event.\n       *\n       * ```js\n       * export default Component.extend({\n       *   doSomething: task(function * () {\n       *     // ... does something\n       *   }),\n       *\n       *   onDoSomethingStarted: on('doSomething:started', function (taskInstance) {\n       *     // ...\n       *   })\n       * });\n       * ```\n       *\n       * @event TaskInstance#TASK_NAME:started\n       * @param {TaskInstance} taskInstance - Task instance that was started\n       */\n\n      /**\n       * Event emitted when a {@linkcode TaskInstance} succeeds.\n       *\n       * `on` from `@ember/object/evented` may be used to create a binding on the host object to the event.\n       *\n       * ```js\n       * export default Component.extend({\n       *   doSomething: task(function * () {\n       *     // ... does something\n       *   }),\n       *\n       *   onDoSomethingSucceeded: on('doSomething:succeeded', function (taskInstance) {\n       *     // ...\n       *   })\n       * });\n       * ```\n       *\n       * @event TaskInstance#TASK_NAME:succeeded\n       * @param {TaskInstance} taskInstance - Task instance that was succeeded\n       */\n\n      /**\n       * Event emitted when a {@linkcode TaskInstance} throws an an error that is\n       * not handled within the task itself.\n       *\n       * `on` from `@ember/object/evented` may be used to create a binding on the host object to the event.\n       *\n       * ```js\n       * export default Component.extend({\n       *   doSomething: task(function * () {\n       *     // ... does something\n       *   }),\n       *\n       *   onDoSomethingErrored: on('doSomething:errored', function (taskInstance, error) {\n       *     // ...\n       *   })\n       * });\n       * ```\n       *\n       * @event TaskInstance#TASK_NAME:errored\n       * @param {TaskInstance} taskInstance - Task instance that was started\n       * @param {Error} error - Error that was thrown by the task instance\n       */\n\n      /**\n       * Event emitted when a {@linkcode TaskInstance} is canceled.\n       *\n       * `on` from `@ember/object/evented` may be used to create a binding on the host object to the event.\n       *\n       * ```js\n       * export default Component.extend({\n       *   doSomething: task(function * () {\n       *     // ... does something\n       *   }),\n       *\n       *   onDoSomethingCanceled: on('doSomething:canceled', function (taskInstance, cancelationReason) {\n       *     // ...\n       *   })\n       * });\n       * ```\n       *\n       * @event TaskInstance#TASK_NAME:canceled\n       * @param {TaskInstance} taskInstance - Task instance that was started\n       * @param {string} cancelationReason - Cancelation reason that was was provided to {@linkcode TaskInstance#cancel}\n       */\n\n      /**\n       * Cancels the task instance. Has no effect if the task instance has\n       * already been canceled or has already finished running.\n       *\n       * @method cancel\n       * @memberof TaskInstance\n       * @instance\n       * @async\n       */\n\n      /**\n       * Returns a promise that resolves with the value returned\n       * from the task's (generator) function, or rejects with\n       * either the exception thrown from the task function, or\n       * an error with a `.name` property with value `\"TaskCancelation\"`.\n       *\n       * @method then\n       * @memberof TaskInstance\n       * @instance\n       * @return {Promise}\n       */\n\n      /**\n       * @method catch\n       * @memberof TaskInstance\n       * @instance\n       * @return {Promise}\n       */\n\n      /**\n       * @method finally\n       * @memberof TaskInstance\n       * @instance\n       * @return {Promise}\n       */\n    }]);\n  }(_base.BaseTaskInstance);\n  if (_trackedState.TRACKED_INITIAL_INSTANCE_STATE) {\n    Object.defineProperties(TaskInstance.prototype, _trackedState.TRACKED_INITIAL_INSTANCE_STATE);\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/task-properties\", [\"exports\", \"ember\", \"@ember/object\", \"@ember/object/computed\", \"ember-concurrency/-private/external/scheduler/policies/enqueued-policy\", \"ember-concurrency/-private/external/scheduler/policies/drop-policy\", \"ember-concurrency/-private/external/scheduler/policies/keep-latest-policy\", \"ember-concurrency/-private/external/scheduler/policies/restartable-policy\"], function (_exports, _ember, _object, _computed, _enqueuedPolicy, _dropPolicy, _keepLatestPolicy, _restartablePolicy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.propertyModifiers = _exports.TaskProperty = _exports.TaskGroupProperty = void 0;\n  _exports.taskComputed = taskComputed;\n  _exports.taskFactorySymbol = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  var taskFactorySymbol = _exports.taskFactorySymbol = '__ec_task_factory';\n  var propertyModifiers = _exports.propertyModifiers = {\n    /**\n     * Configures the task to cancel old currently task instances\n     * to make room for a new one to perform. Sets default\n     * maxConcurrency to 1.\n     *\n     * [See the Live Example](/docs/examples/route-tasks/1)\n     *\n     * @method restartable\n     * @memberof TaskProperty\n     * @instance\n     */\n    restartable: function restartable() {\n      this[taskFactorySymbol].setBufferPolicy(_restartablePolicy.default);\n      return this;\n    },\n    /**\n     * Configures the task to run task instances one-at-a-time in\n     * the order they were `.perform()`ed. Sets default\n     * maxConcurrency to 1.\n     *\n     * @method enqueue\n     * @memberof TaskProperty\n     * @instance\n     */\n    enqueue: function enqueue() {\n      this[taskFactorySymbol].setBufferPolicy(_enqueuedPolicy.default);\n      return this;\n    },\n    /**\n     * Configures the task to immediately cancel (i.e. drop) any\n     * task instances performed when the task is already running\n     * at maxConcurrency. Sets default maxConcurrency to 1.\n     *\n     * @method drop\n     * @memberof TaskProperty\n     * @instance\n     */\n    drop: function drop() {\n      this[taskFactorySymbol].setBufferPolicy(_dropPolicy.default);\n      return this;\n    },\n    /**\n     * Configures the task to drop all but the most recently\n     * performed {@linkcode TaskInstance }.\n     *\n     * @method keepLatest\n     * @memberof TaskProperty\n     * @instance\n     */\n    keepLatest: function keepLatest() {\n      this[taskFactorySymbol].setBufferPolicy(_keepLatestPolicy.default);\n      return this;\n    },\n    /**\n     * Sets the maximum number of task instances that are allowed\n     * to run at the same time. By default, with no task modifiers\n     * applied, this number is Infinity (there is no limit\n     * to the number of tasks that can run at the same time).\n     * {@linkcode TaskProperty#restartable .restartable},\n     * {@linkcode TaskProperty#enqueue .enqueue}, and\n     * {@linkcode TaskProperty#drop .drop} set the default\n     * maxConcurrency to 1, but you can override this value\n     * to set the maximum number of concurrently running tasks\n     * to a number greater than 1.\n     *\n     * [See the AJAX Throttling example](/docs/examples/ajax-throttling)\n     *\n     * The example below uses a task with `maxConcurrency(3)` to limit\n     * the number of concurrent AJAX requests (for anyone using this task)\n     * to 3.\n     *\n     * ```js\n     * doSomeAjax: task(function * (url) {\n     *   return fetch(url);\n     * }).maxConcurrency(3),\n     *\n     * elsewhere() {\n     *   this.doSomeAjax.perform(\"http://www.example.com/json\");\n     * },\n     * ```\n     *\n     * @method maxConcurrency\n     * @memberof TaskProperty\n     * @param {Number} n The maximum number of concurrently running tasks\n     * @instance\n     */\n    maxConcurrency: function maxConcurrency(n) {\n      this[taskFactorySymbol].setMaxConcurrency(n);\n      return this;\n    },\n    /**\n     * Adds this task to a TaskGroup so that concurrency constraints\n     * can be shared between multiple tasks.\n     *\n     * [See the Task Group docs for more information](/docs/task-groups)\n     *\n     * @method group\n     * @memberof TaskProperty\n     * @param {String} groupPath A path to the TaskGroup property\n     * @instance\n     */\n    group: function group(taskGroupPath) {\n      this[taskFactorySymbol].setGroup(taskGroupPath);\n      return this;\n    },\n    /**\n     * Activates lifecycle events, allowing Evented host objects to react to task state\n     * changes.\n     *\n     * ```js\n     *\n     * export default Component.extend({\n     *   uploadTask: task(function* (file) {\n     *     // ... file upload stuff\n     *   }).evented(),\n     *\n     *   uploadedStarted: on('uploadTask:started', function(taskInstance) {\n     *     this.analytics.track(\"User Photo: upload started\");\n     *   }),\n     * });\n     * ```\n     *\n     * @method evented\n     * @memberof TaskProperty\n     * @instance\n     */\n    evented: function evented() {\n      this[taskFactorySymbol].setEvented(true);\n      return this;\n    },\n    /**\n     * Logs lifecycle events to aid in debugging unexpected Task behavior.\n     * Presently only logs cancelation events and the reason for the cancelation,\n     * e.g. \"TaskInstance 'doStuff' was canceled because the object it lives on was destroyed or unrendered\"\n     *\n     * @method debug\n     * @memberof TaskProperty\n     * @instance\n     */\n    debug: function debug() {\n      this[taskFactorySymbol].setDebug(true);\n      return this;\n    },\n    /**\n     * Configures the task to call the passed in callback for derived state updates,\n     * overriding the default derived state tracking. You may call with `null` to\n     * completely opt-out of derived state tracking.\n     *\n     * @method onState\n     * @memberof TaskProperty\n     * @param {function?} callback Callback to be called. Receives an object argument with the new state.\n     * @instance\n     */\n    onState: function onState(callback) {\n      this[taskFactorySymbol].setOnState(callback);\n      return this;\n    }\n  };\n\n  /**\n    A {@link TaskProperty} is the Computed Property-like object returned\n    from the {@linkcode task} function. You can call Task Modifier methods\n    on this object to configure the behavior of the {@link Task}.\n  \n    See [Managing Task Concurrency](/docs/task-concurrency) for an\n    overview of all the different task modifiers you can use and how\n    they impact automatic cancelation / enqueueing of task instances.\n  \n    {@link TaskProperty} is only used for supporting \"classic\" Ember objects.\n    When using Native JavaScript or TypeScript classes, you will use [task decorators](/docs/task-decorators)\n    on methods instead.\n  \n    @class TaskProperty\n  */\n  var TaskProperty;\n  var TaskGroupProperty;\n  if (true) {\n    _exports.TaskProperty = TaskProperty = /*#__PURE__*/_createClass(function TaskProperty() {\n      _classCallCheck(this, TaskProperty);\n    });\n    _exports.TaskGroupProperty = TaskGroupProperty = /*#__PURE__*/_createClass(function TaskGroupProperty() {\n      _classCallCheck(this, TaskGroupProperty);\n    });\n  } else {\n    // Prior to the 3.10.0 refactors, we had to extend the _ComputedProperty class\n    // for a classic decorator/descriptor to run correctly.\n    _exports.TaskProperty = TaskProperty = /*#__PURE__*/function (_ComputedProperty) {\n      function TaskProperty() {\n        _classCallCheck(this, TaskProperty);\n        return _callSuper(this, TaskProperty, arguments);\n      }\n      _inherits(TaskProperty, _ComputedProperty);\n      return _createClass(TaskProperty, [{\n        key: \"callSuperSetup\",\n        value: function callSuperSetup() {\n          if (_superPropGet(TaskProperty, \"setup\", this, 1)) {\n            _superPropGet(TaskProperty, \"setup\", this, 3)(arguments);\n          }\n        }\n      }]);\n    }(_computed.default);\n    _exports.TaskGroupProperty = TaskGroupProperty = /*#__PURE__*/function (_ComputedProperty2) {\n      function TaskGroupProperty() {\n        _classCallCheck(this, TaskGroupProperty);\n        return _callSuper(this, TaskGroupProperty, arguments);\n      }\n      _inherits(TaskGroupProperty, _ComputedProperty2);\n      return _createClass(TaskGroupProperty);\n    }(_computed.default);\n  }\n  Object.assign(TaskGroupProperty.prototype, propertyModifiers);\n  Object.assign(TaskProperty.prototype, propertyModifiers, {\n    setup: function setup(proto, key) {\n      if (this.callSuperSetup) {\n        this.callSuperSetup.apply(this, arguments);\n      }\n      this[taskFactorySymbol].setName(key);\n      this[taskFactorySymbol]._setupEmberKVO(proto);\n    },\n    /**\n     * Calling `task(...).on(eventName)` configures the task to be\n     * automatically performed when the specified events fire. In\n     * this way, it behaves like\n     * [Ember.on](http://emberjs.com/api/classes/Ember.html#method_on).\n     *\n     * You can use `task(...).on('init')` to perform the task\n     * when the host object is initialized.\n     *\n     * ```js\n     * export default Component.extend({\n     *   pollForUpdates: task(function * () {\n     *     // ... this runs when the Component is first created\n     *     // because we specified .on('init')\n     *   }).on('init'),\n     *\n     *   handleFoo: task(function * (a, b, c) {\n     *     // this gets performed automatically if the 'foo'\n     *     // event fires on this Component,\n     *     // e.g., if someone called component.trigger('foo')\n     *   }).on('foo'),\n     * });\n     * ```\n     *\n     * [See the Writing Tasks Docs for more info](/docs/writing-tasks)\n     *\n     * @method on\n     * @memberof TaskProperty\n     * @param {String} eventNames*\n     * @instance\n     */\n    on: function on() {\n      var _this$taskFactorySymb;\n      (_this$taskFactorySymb = this[taskFactorySymbol]).addPerformEvents.apply(_this$taskFactorySymb, arguments);\n      return this;\n    },\n    /**\n     * This behaves like the {@linkcode TaskProperty#on task(...).on() modifier},\n     * but instead will cause the task to be canceled if any of the\n     * specified events fire on the parent object.\n     *\n     * [See the Live Example](/docs/examples/route-tasks/1)\n     *\n     * @method cancelOn\n     * @memberof TaskProperty\n     * @param {String} eventNames*\n     * @instance\n     */\n    cancelOn: function cancelOn() {\n      var _this$taskFactorySymb2;\n      (_this$taskFactorySymb2 = this[taskFactorySymbol]).addCancelEvents.apply(_this$taskFactorySymb2, arguments);\n      return this;\n    },\n    /**\n     * This behaves like the {@linkcode TaskProperty#on task(...).on() modifier},\n     * but instead will cause the task to be performed if any of the\n     * specified properties on the parent object change.\n     *\n     * @method observes\n     * @memberof TaskProperty\n     * @param {String} keys*\n     * @instance\n     */\n    observes: function observes() {\n      var _this$taskFactorySymb3;\n      (_this$taskFactorySymb3 = this[taskFactorySymbol]).addObserverKeys.apply(_this$taskFactorySymb3, arguments);\n      return this;\n    }\n  });\n  var setDecorator = _ember.default._setClassicDecorator || _ember.default._setComputedDecorator;\n  function taskComputed(fn) {\n    if (true) {\n      var _cp = function cp(proto, key) {\n        if (_cp.setup !== undefined) {\n          _cp.setup(proto, key);\n        }\n        return (0, _object.computed)(fn).apply(void 0, arguments);\n      };\n      setDecorator(_cp);\n      return _cp;\n    } else {\n      return (0, _object.computed)(fn);\n    }\n  }\n});","define(\"ember-concurrency/-private/task-public-api\", [\"exports\", \"ember-concurrency/-private/task-factory\", \"ember-concurrency/-private/task-properties\", \"ember-concurrency/-private/task-decorators\", \"@ember/debug\"], function (_exports, _taskFactory, _taskProperties, _taskDecorators, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.task = task;\n  _exports.taskGroup = taskGroup;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  /**\n   * TODO: update docs to reflect both old and new ES6 styles\n   *\n   * A Task is a cancelable, restartable, asynchronous operation that\n   * is driven by a generator function. Tasks are automatically canceled\n   * when the object they live on is destroyed (e.g. a Component\n   * is unrendered).\n   *\n   * To define a task, use the `task(...)` function, and pass in\n   * a generator function, which will be invoked when the task\n   * is performed. The reason generator functions are used is\n   * that they (like the proposed ES7 async-await syntax) can\n   * be used to elegantly express asynchronous, cancelable\n   * operations.\n   *\n   * You can also define an\n   * <a href=\"/docs/advanced/encapsulated-task\">Encapsulated Task</a>\n   * by passing in an object that defined a `perform` generator\n   * function property.\n   *\n   * The following Component defines a task called `myTask` that,\n   * when performed, prints a message to the console, sleeps for 1 second,\n   * prints a final message to the console, and then completes.\n   *\n   * ```js\n   * import { task, timeout } from 'ember-concurrency';\n   * export default Component.extend({\n   *   myTask: task(function * () {\n   *     console.log(\"Pausing for a second...\");\n   *     yield timeout(1000);\n   *     console.log(\"Done!\");\n   *   })\n   * });\n   * ```\n   *\n   * ```hbs\n   * <button {{action myTask.perform}}>Perform Task</button>\n   * ```\n   *\n   * By default, tasks have no concurrency constraints\n   * (multiple instances of a task can be running at the same time)\n   * but much of a power of tasks lies in proper usage of Task Modifiers\n   * that you can apply to a task.\n   *\n   * @param {function} generatorFunction the generator function backing the task.\n   * @returns {TaskProperty}\n   */\n  function task(taskFnOrProtoOrDecoratorOptions, key, descriptor) {\n    (true && !(!isUntranspiledAsyncFn(arguments[arguments.length - 1])) && (0, _debug.assert)(\"It appears you're attempting to use the new task(async () => { ... }) syntax, but the async arrow task function you've provided is not being properly compiled by Babel.\\n\\nPossible causes / remedies:\\n\\n1. You must pass the async function expression directly to the task() function (it is not currently supported to pass in a variable containing the async arrow fn, or any other kind of indirection)\\n2. The new task syntax is only supported by native classes. Ensure that this is one.\\n3. If this code is in an addon, please ensure the addon specifies ember-concurrency \\\"2.3.0\\\" or higher in \\\"dependencies\\\" (not \\\"devDependencies\\\")\\n4. Ensure that there is only one version of ember-concurrency v2.3.0+ being used in your project (including nested dependencies) and consider using npm/yarn/pnpm resolutions to enforce a single version is used\", !isUntranspiledAsyncFn(arguments[arguments.length - 1])));\n    if (isDecoratorOptions(taskFnOrProtoOrDecoratorOptions) || key && descriptor) {\n      return _taskDecorators.task.apply(void 0, arguments);\n    } else {\n      return buildClassicTaskProperty(taskFnOrProtoOrDecoratorOptions);\n    }\n  }\n  function isUntranspiledAsyncFn(obj) {\n    return obj && obj.constructor && obj.constructor.name === 'AsyncFunction';\n  }\n\n  /**\n   * Build and return a \"classic\" TaskProperty, which is essentially a subclass of a Computed Property\n   * descriptor that can be used to define Tasks on classic Ember.Objects.\n   *\n   * @private\n   */\n  function buildClassicTaskProperty(taskFn) {\n    var taskProperty = (0, _taskProperties.taskComputed)(function () {\n      taskProperty[_taskProperties.taskFactorySymbol].setTaskDefinition(taskProperty.taskFn);\n      return taskProperty[_taskProperties.taskFactorySymbol].createTask(this);\n    });\n    taskProperty.taskFn = taskFn;\n    taskProperty[_taskProperties.taskFactorySymbol] = new _taskFactory.TaskFactory();\n    Object.setPrototypeOf(taskProperty, _taskProperties.TaskProperty.prototype);\n    return taskProperty;\n  }\n\n  /**\n   * \"Task Groups\" provide a means for applying\n   * task modifiers to groups of tasks. Once a {@linkcode Task} is declared\n   * as part of a group task, modifiers like `drop` or `restartable`\n   * will no longer affect the individual `Task`. Instead those\n   * modifiers can be applied to the entire group.\n   *\n   * ```js\n   * import { task, taskGroup } from 'ember-concurrency';\n   *\n   * export default class MyController extends Controller {\n   *   &#64;taskGroup({ drop: true }) chores;\n   *\n   *   &#64;task({ group: 'chores' }) mowLawn = taskFn;\n   *   &#64;task({ group: 'chores' }) doDishes = taskFn;\n   *   &#64;task({ group: 'chores' }) changeDiapers = taskFn;\n   * }\n   * ```\n   *\n   * @returns {TaskGroup}\n   */\n  function taskGroup(possibleDecoratorOptions, key, descriptor) {\n    if (isDecoratorOptions(possibleDecoratorOptions) || key && descriptor) {\n      return _taskDecorators.taskGroup.apply(void 0, arguments);\n    } else {\n      var tp = (0, _taskProperties.taskComputed)(function (key) {\n        tp[_taskProperties.taskFactorySymbol].setName(key);\n        return tp[_taskProperties.taskFactorySymbol].createTaskGroup(this);\n      });\n      tp[_taskProperties.taskFactorySymbol] = new _taskFactory.TaskFactory();\n      Object.setPrototypeOf(tp, _taskProperties.TaskGroupProperty.prototype);\n      return tp;\n    }\n  }\n  function isDecoratorOptions(possibleOptions) {\n    if (!possibleOptions) {\n      return false;\n    }\n    if (typeof possibleOptions === 'function') {\n      return false;\n    }\n    if (_typeof(possibleOptions) === 'object' && 'perform' in possibleOptions && typeof possibleOptions.perform === 'function') {\n      return false;\n    }\n    return Object.getPrototypeOf(possibleOptions) === Object.prototype;\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/task\", [\"exports\", \"@ember/application\", \"@ember/object\", \"@ember/destroyable\", \"ember-concurrency/-private/external/task/task\", \"ember-concurrency/-private/task-instance\", \"ember-concurrency/-private/external/task-instance/executor\", \"ember-concurrency/-private/taskable-mixin\", \"ember-concurrency/-private/tracked-state\", \"ember-concurrency/-private/external/task-instance/cancelation\"], function (_exports, _application, _object, _destroyable, _task, _taskInstance, _executor, _taskableMixin, _trackedState, _cancelation) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.Task = _exports.EncapsulatedTask = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  /**\n    The `Task` object lives on a host Ember object (e.g.\n    a Component, Route, or Controller). You call the\n    {@linkcode Task#perform .perform()} method on this object\n    to create run individual {@linkcode TaskInstance}s,\n    and at any point, you can call the {@linkcode Task#cancelAll .cancelAll()}\n    method on this object to cancel all running or enqueued\n    {@linkcode TaskInstance}s.\n  \n    <style>\n      .ignore-this--this-is-here-to-hide-constructor,\n      #Task { display: none }\n    </style>\n  \n    @class Task\n  */\n  var Task = _exports.Task = /*#__PURE__*/function (_BaseTask) {\n    /**\n     * `true` if any current task instances are running.\n     *\n     * @memberof Task\n     * @member {boolean} isRunning\n     * @instance\n     * @readOnly\n     */\n    /**\n     * `true` if any future task instances are queued.\n     *\n     * @memberof Task\n     * @member {boolean} isQueued\n     * @instance\n     * @readOnly\n     */\n    /**\n     * `true` if the task is not in the running or queued state.\n     *\n     * @memberof Task\n     * @member {boolean} isIdle\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The current state of the task: `\"running\"`, `\"queued\"` or `\"idle\"`.\n     *\n     * @memberof Task\n     * @member {string} state\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recently started task instance.\n     *\n     * @memberof Task\n     * @member {TaskInstance} last\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recent task instance that is currently running.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastRunning\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recently performed task instance.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastPerformed\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recent task instance that succeeded.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastSuccessful\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recently completed task instance.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastComplete\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recent task instance that errored.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastErrored\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recently canceled task instance.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastCanceled\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The most recent task instance that is incomplete.\n     *\n     * @memberof Task\n     * @member {TaskInstance} lastIncomplete\n     * @instance\n     * @readOnly\n     */\n    /**\n     * The number of times this task has been performed.\n     *\n     * @memberof Task\n     * @member {number} performCount\n     * @instance\n     * @readOnly\n     */\n\n    function Task(options) {\n      var _this;\n      _classCallCheck(this, Task);\n      _this = _callSuper(this, Task, [options]);\n      if (!(0, _destroyable.isDestroying)(_this.context)) {\n        (0, _destroyable.registerDestructor)(_this.context, function () {\n          _this.cancelAll({\n            reason: 'the object it lives on was destroyed or unrendered',\n            cancelRequestKind: _cancelation.CANCEL_KIND_LIFESPAN_END\n          });\n        });\n      }\n      return _this;\n    }\n\n    /**\n     * Flags the task as linked to the parent task's lifetime. Must be called\n     * within another task's perform function. The task will be cancelled if the\n     * parent task is canceled as well.\n     *\n     * ember-concurrency will indicate when this may be needed.\n     *\n     * @method linked\n     * @memberof Task\n     * @instance\n     *\n     */\n\n    /**\n     * Flags the task as not linked to the parent task's lifetime. Must be called\n     * within another task's perform function. The task will NOT be cancelled if the\n     * parent task is canceled.\n     *\n     * This is useful for avoiding the so-called \"self-cancel loop\" for tasks.\n     * ember-concurrency will indicate when this may be needed.\n     *\n     * @method unlinked\n     * @memberof Task\n     * @instance\n     *\n     */\n\n    /**\n     * Creates a new {@linkcode TaskInstance} and attempts to run it right away.\n     * If running this task instance would increase the task's concurrency\n     * to a number greater than the task's maxConcurrency, this task\n     * instance might be immediately canceled (dropped), or enqueued\n     * to run at later time, after the currently running task(s) have finished.\n     *\n     * @method perform\n     * @memberof Task\n     * @param {*} arg* - args to pass to the task function\n     * @instance\n     *\n     * @fires TaskInstance#TASK_NAME:started\n     * @fires TaskInstance#TASK_NAME:succeeded\n     * @fires TaskInstance#TASK_NAME:errored\n     * @fires TaskInstance#TASK_NAME:canceled\n     *\n     */\n\n    /**\n     * Cancels all running or queued `TaskInstance`s for this Task.\n     * If you're trying to cancel a specific TaskInstance (rather\n     * than all of the instances running under this task) call\n     * `.cancel()` on the specific TaskInstance.\n     *\n     * @method cancelAll\n     * @memberof Task\n     * @param options.reason A descriptive reason the task was\n     *   cancelled. Defaults to `\".cancelAll() was explicitly called\n     *   on the Task\"`.\n     * @param options.resetState If true, will clear the task state\n     *   (`last*` and `performCount` properties will be set to initial\n     *   values). Defaults to false.\n     * @instance\n     * @async\n     *\n     */\n    _inherits(Task, _BaseTask);\n    return _createClass(Task, [{\n      key: \"_isAlive\",\n      get: function get() {\n        return !(0, _destroyable.isDestroying)(this.context);\n      }\n    }, {\n      key: \"_taskInstanceFactory\",\n      value: function _taskInstanceFactory(args, performType, linkedObject) {\n        var options = this._taskInstanceOptions(args, performType, linkedObject);\n        var taskInstance = new _taskInstance.TaskInstance(options);\n        return taskInstance;\n      }\n    }, {\n      key: \"_clone\",\n      value: function _clone() {\n        return new Task({\n          context: this.context,\n          debug: this.debug,\n          env: this.env,\n          generatorFactory: this.generatorFactory,\n          group: this.group,\n          hasEnabledEvents: this.hasEnabledEvents,\n          name: this.name,\n          onStateCallback: this.onStateCallback,\n          scheduler: this.scheduler\n        });\n      }\n    }]);\n  }(_task.Task);\n  if (_trackedState.TRACKED_INITIAL_TASK_STATE) {\n    Object.defineProperties(Task.prototype, _trackedState.TRACKED_INITIAL_TASK_STATE);\n  }\n  Object.assign(Task.prototype, _taskableMixin.TASKABLE_MIXIN);\n  var currentTaskInstanceSymbol = '__ec__encap_current_ti';\n  var EncapsulatedTask = _exports.EncapsulatedTask = /*#__PURE__*/function (_Task) {\n    function EncapsulatedTask(options) {\n      var _this2;\n      _classCallCheck(this, EncapsulatedTask);\n      _this2 = _callSuper(this, EncapsulatedTask, [options]);\n      _this2.taskObj = options.taskObj;\n      _this2._encapsulatedTaskStates = new WeakMap();\n      _this2._encapsulatedTaskInstanceProxies = new WeakMap();\n      return _this2;\n    }\n    _inherits(EncapsulatedTask, _Task);\n    return _createClass(EncapsulatedTask, [{\n      key: \"_getEncapsulatedTaskClass\",\n      value: function _getEncapsulatedTaskClass() {\n        var encapsulatedTaskImplClass = this._encapsulatedTaskImplClass;\n        if (!encapsulatedTaskImplClass) {\n          // eslint-disable-next-line ember/no-classic-classes\n          encapsulatedTaskImplClass = _object.default.extend(this.taskObj, {\n            unknownProperty: function unknownProperty(key) {\n              var currentInstance = this[currentTaskInstanceSymbol];\n              return currentInstance ? currentInstance[key] : undefined;\n            }\n          });\n        }\n        return encapsulatedTaskImplClass;\n      }\n    }, {\n      key: \"_taskInstanceFactory\",\n      value: function _taskInstanceFactory(args, performType) {\n        var owner = (0, _application.getOwner)(this.context);\n        var taskInstanceProxy;\n        var encapsulatedTaskImpl = this._getEncapsulatedTaskClass().create({\n          context: this.context\n        });\n        (0, _application.setOwner)(encapsulatedTaskImpl, owner);\n        var generatorFactory = function generatorFactory() {\n          return encapsulatedTaskImpl.perform.apply(taskInstanceProxy, args);\n        };\n        var taskInstance = new _taskInstance.TaskInstance({\n          task: this,\n          args: args,\n          executor: new _executor.TaskInstanceExecutor({\n            generatorFactory: generatorFactory,\n            env: this.env,\n            debug: this.debug\n          }),\n          performType: performType,\n          hasEnabledEvents: this.hasEnabledEvents\n        });\n        encapsulatedTaskImpl[currentTaskInstanceSymbol] = taskInstance;\n        this._encapsulatedTaskStates.set(taskInstance, encapsulatedTaskImpl);\n        taskInstanceProxy = this._wrappedEncapsulatedTaskInstance(taskInstance);\n        return taskInstanceProxy;\n      }\n    }, {\n      key: \"_wrappedEncapsulatedTaskInstance\",\n      value: function _wrappedEncapsulatedTaskInstance(taskInstance) {\n        if (!taskInstance) {\n          return null;\n        }\n        var _encapsulatedTaskInstanceProxies = this._encapsulatedTaskInstanceProxies;\n        var proxy = _encapsulatedTaskInstanceProxies.get(taskInstance);\n        if (!proxy) {\n          var encapsulatedTaskImpl = this._encapsulatedTaskStates.get(taskInstance);\n          proxy = new Proxy(taskInstance, {\n            get: function get(obj, prop) {\n              return prop in obj ? obj[prop] : (0, _object.get)(encapsulatedTaskImpl, prop.toString());\n            },\n            set: function set(obj, prop, value) {\n              if (prop in obj) {\n                obj[prop] = value;\n              } else {\n                (0, _object.set)(encapsulatedTaskImpl, prop.toString(), value);\n              }\n              return true;\n            },\n            has: function has(obj, prop) {\n              return prop in obj || prop in encapsulatedTaskImpl;\n            },\n            ownKeys: function ownKeys(obj) {\n              return Reflect.ownKeys(obj).concat(Reflect.ownKeys(encapsulatedTaskImpl));\n            },\n            defineProperty: function defineProperty(obj, prop, descriptor) {\n              // Ember < 3.16 uses a WeakMap for value storage, keyed to the proxy.\n              // We need to ensure that when we use setProperties to update it, and\n              // it creates Meta, that it uses the proxy to key, otherwise we'll\n              // have two different values stores in Meta, one which won't render.\n              var proxy = _encapsulatedTaskInstanceProxies.get(taskInstance);\n              if (proxy) {\n                if (descriptor.get) {\n                  descriptor.get = descriptor.get.bind(proxy);\n                } else if (proxy && descriptor.set) {\n                  descriptor.set = descriptor.set.bind(proxy);\n                }\n              }\n              return Reflect.defineProperty(encapsulatedTaskImpl, prop, descriptor);\n            },\n            getOwnPropertyDescriptor: function getOwnPropertyDescriptor(obj, prop) {\n              return prop in obj ? Reflect.getOwnPropertyDescriptor(obj, prop) : Reflect.getOwnPropertyDescriptor(encapsulatedTaskImpl, prop);\n            }\n          });\n          _encapsulatedTaskInstanceProxies.set(taskInstance, proxy);\n        }\n        return proxy;\n      }\n    }]);\n  }(Task);\n});","define(\"ember-concurrency/-private/taskable-mixin\", [\"exports\", \"ember-concurrency/-private/utils\"], function (_exports, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TASKABLE_MIXIN = void 0;\n  var TASKABLE_MIXIN = _exports.TASKABLE_MIXIN = {\n    _performCount: 0,\n    setState: function setState(state) {\n      this._performCount = this._performCount + (state.numPerformedInc || 0);\n      var isRunning = state.numRunning > 0;\n      var isQueued = state.numQueued > 0;\n      var derivedState = Object.assign({}, state, {\n        performCount: this._performCount,\n        isRunning: isRunning,\n        isQueued: isQueued,\n        isIdle: !isRunning && !isQueued,\n        state: isRunning ? 'running' : 'idle'\n      });\n      (0, _utils.assignProperties)(this, derivedState);\n    },\n    onState: function onState(state, task) {\n      if (task.onStateCallback) {\n        task.onStateCallback(state, task);\n      }\n    }\n  };\n});","define(\"ember-concurrency/-private/tracked-state\", [\"exports\", \"@glimmer/tracking\", \"ember-concurrency/-private/external/task/default-state\", \"ember-concurrency/-private/external/task-instance/initial-state\", \"ember-concurrency/-private/utils\"], function (_exports, _tracking, _defaultState, _initialState, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TRACKED_INITIAL_TASK_STATE = _exports.TRACKED_INITIAL_INSTANCE_STATE = void 0;\n  function trackMixin(proto, obj, key) {\n    var propDesc = Object.getOwnPropertyDescriptor(proto, key);\n    propDesc.initializer = propDesc.initializer || function () {\n      return proto[key];\n    };\n    delete propDesc.value;\n    var desc = (0, _tracking.tracked)(obj, key, propDesc);\n    obj[key] = desc;\n    return obj;\n  }\n  function applyTracked(proto, initial) {\n    return Object.keys(proto).reduce(function (acc, key) {\n      return trackMixin(proto, acc, key);\n    }, initial);\n  }\n  var TRACKED_INITIAL_TASK_STATE;\n  var TRACKED_INITIAL_INSTANCE_STATE;\n  if (_utils.USE_TRACKED) {\n    _exports.TRACKED_INITIAL_TASK_STATE = TRACKED_INITIAL_TASK_STATE = applyTracked(_defaultState.DEFAULT_STATE, {});\n    _exports.TRACKED_INITIAL_TASK_STATE = TRACKED_INITIAL_TASK_STATE = applyTracked({\n      numRunning: 0,\n      numQueued: 0,\n      isRunning: false,\n      isQueued: false,\n      isIdle: true,\n      state: 'idle'\n    }, TRACKED_INITIAL_TASK_STATE);\n    _exports.TRACKED_INITIAL_INSTANCE_STATE = TRACKED_INITIAL_INSTANCE_STATE = applyTracked(_initialState.INITIAL_STATE, {});\n    _exports.TRACKED_INITIAL_INSTANCE_STATE = TRACKED_INITIAL_INSTANCE_STATE = applyTracked({\n      state: 'waiting',\n      isDropped: false,\n      isRunning: false\n    }, TRACKED_INITIAL_INSTANCE_STATE);\n    Object.freeze(TRACKED_INITIAL_TASK_STATE);\n    Object.freeze(TRACKED_INITIAL_INSTANCE_STATE);\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/utils\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"ember-concurrency/-private/ember-environment\", \"ember-concurrency/-private/external/yieldables\"], function (_exports, _object, _runloop, _emberEnvironment, _yieldables) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.assignProperties = _exports.USE_TRACKED = _exports.EmberYieldable = void 0;\n  _exports.deprecatePrivateModule = deprecatePrivateModule;\n  _exports.isEventedObject = isEventedObject;\n  _exports.timeout = timeout;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var USE_TRACKED = _exports.USE_TRACKED = true;\n  var assignProperties = _exports.assignProperties = USE_TRACKED ? Object.assign : _object.setProperties;\n  function isEventedObject(c) {\n    return c && (typeof c.one === 'function' && typeof c.off === 'function' || typeof c.on === 'function' && typeof c.off === 'function' || typeof c.addEventListener === 'function' && typeof c.removeEventListener === 'function');\n  }\n  var EmberYieldable = _exports.EmberYieldable = /*#__PURE__*/function (_Yieldable) {\n    function EmberYieldable() {\n      _classCallCheck(this, EmberYieldable);\n      return _callSuper(this, EmberYieldable, arguments);\n    }\n    _inherits(EmberYieldable, _Yieldable);\n    return _createClass(EmberYieldable, [{\n      key: \"_deferable\",\n      value: function _deferable() {\n        return _emberEnvironment.EMBER_ENVIRONMENT.defer();\n      }\n    }]);\n  }(_yieldables.Yieldable);\n  var TimeoutYieldable = /*#__PURE__*/function (_EmberYieldable) {\n    function TimeoutYieldable(ms) {\n      var _this;\n      _classCallCheck(this, TimeoutYieldable);\n      _this = _callSuper(this, TimeoutYieldable);\n      _this.ms = ms;\n      return _this;\n    }\n    _inherits(TimeoutYieldable, _EmberYieldable);\n    return _createClass(TimeoutYieldable, [{\n      key: \"onYield\",\n      value: function onYield(state) {\n        var timerId = (0, _runloop.later)(function () {\n          return state.next();\n        }, this.ms);\n        return function () {\n          return (0, _runloop.cancel)(timerId);\n        };\n      }\n    }]);\n  }(EmberYieldable);\n  /**\n   *\n   * Yielding `timeout(ms)` will pause a task for the duration\n   * of time passed in, in milliseconds.\n   *\n   * This timeout will be scheduled on the Ember runloop, which\n   * means that test helpers will wait for it to complete before\n   * continuing with the test. See `rawTimeout()` if you need\n   * different behavior.\n   *\n   * The task below, when performed, will print a message to the\n   * console every second.\n   *\n   * ```js\n   * export default class MyComponent extends Component {\n   *   &#64;task *myTask() {\n   *     while (true) {\n   *       console.log(\"Hello!\");\n   *       yield timeout(1000);\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @param {number} ms - the amount of time to sleep before resuming\n   *   the task, in milliseconds\n   */\n  function timeout(ms) {\n    return new TimeoutYieldable(ms);\n  }\n  function deprecatePrivateModule(moduleName) {\n    // eslint-disable-next-line no-console\n    console.warn(\"an Ember addon is importing a private ember-concurrency module '\".concat(moduleName, \"' that has moved\"));\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-concurrency/-private/wait-for\", [\"exports\", \"@ember/debug\", \"@ember/runloop\", \"@ember/object\", \"@ember/object/observers\", \"ember-concurrency/-private/utils\"], function (_exports, _debug, _runloop, _object, _observers, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.waitForEvent = waitForEvent;\n  _exports.waitForProperty = waitForProperty;\n  _exports.waitForQueue = waitForQueue;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var WaitForQueueYieldable = /*#__PURE__*/function (_EmberYieldable) {\n    function WaitForQueueYieldable(queueName) {\n      var _this;\n      _classCallCheck(this, WaitForQueueYieldable);\n      _this = _callSuper(this, WaitForQueueYieldable);\n      _this.queueName = queueName;\n      return _this;\n    }\n    _inherits(WaitForQueueYieldable, _EmberYieldable);\n    return _createClass(WaitForQueueYieldable, [{\n      key: \"onYield\",\n      value: function onYield(state) {\n        var timerId;\n        try {\n          timerId = (0, _runloop.schedule)(this.queueName, function () {\n            return state.next();\n          });\n        } catch (error) {\n          state.throw(error);\n        }\n        return function () {\n          return (0, _runloop.cancel)(timerId);\n        };\n      }\n    }]);\n  }(_utils.EmberYieldable);\n  var WaitForEventYieldable = /*#__PURE__*/function (_EmberYieldable2) {\n    function WaitForEventYieldable(object, eventName) {\n      var _this2;\n      _classCallCheck(this, WaitForEventYieldable);\n      _this2 = _callSuper(this, WaitForEventYieldable);\n      _this2.object = object;\n      _this2.eventName = eventName;\n      _this2.usesDOMEvents = false;\n      return _this2;\n    }\n    _inherits(WaitForEventYieldable, _EmberYieldable2);\n    return _createClass(WaitForEventYieldable, [{\n      key: \"on\",\n      value: function on(callback) {\n        if (typeof this.object.addEventListener === 'function') {\n          // assume that we're dealing with a DOM `EventTarget`.\n          this.usesDOMEvents = true;\n          this.object.addEventListener(this.eventName, callback);\n        } else {\n          this.object.on(this.eventName, callback);\n        }\n      }\n    }, {\n      key: \"off\",\n      value: function off(callback) {\n        if (this.usesDOMEvents) {\n          this.object.removeEventListener(this.eventName, callback);\n        } else {\n          this.object.off(this.eventName, callback);\n        }\n      }\n    }, {\n      key: \"onYield\",\n      value: function onYield(state) {\n        var _this3 = this;\n        var fn = null;\n        var disposer = function disposer() {\n          fn && _this3.off(fn);\n          fn = null;\n        };\n        fn = function fn(event) {\n          disposer();\n          state.next(event);\n        };\n        this.on(fn);\n        return disposer;\n      }\n    }]);\n  }(_utils.EmberYieldable);\n  var WaitForPropertyYieldable = /*#__PURE__*/function (_EmberYieldable3) {\n    function WaitForPropertyYieldable(object, key) {\n      var _this4;\n      var predicateCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Boolean;\n      _classCallCheck(this, WaitForPropertyYieldable);\n      _this4 = _callSuper(this, WaitForPropertyYieldable);\n      _this4.object = object;\n      _this4.key = key;\n      if (typeof predicateCallback === 'function') {\n        _this4.predicateCallback = predicateCallback;\n      } else {\n        _this4.predicateCallback = function (v) {\n          return v === predicateCallback;\n        };\n      }\n      return _this4;\n    }\n    _inherits(WaitForPropertyYieldable, _EmberYieldable3);\n    return _createClass(WaitForPropertyYieldable, [{\n      key: \"onYield\",\n      value: function onYield(state) {\n        var _this5 = this;\n        var observerBound = false;\n        var observerFn = function observerFn() {\n          var value = (0, _object.get)(_this5.object, _this5.key);\n          var predicateValue = _this5.predicateCallback(value);\n          if (predicateValue) {\n            state.next(value);\n            return true;\n          }\n        };\n        if (!observerFn()) {\n          // eslint-disable-next-line ember/no-observers\n          (0, _observers.addObserver)(this.object, this.key, null, observerFn);\n          observerBound = true;\n        }\n        return function () {\n          if (observerBound && observerFn) {\n            (0, _observers.removeObserver)(_this5.object, _this5.key, null, observerFn);\n          }\n        };\n      }\n    }]);\n  }(_utils.EmberYieldable);\n  /**\n   * Use `waitForQueue` to pause the task until a certain run loop queue is reached.\n   *\n   * ```js\n   * import { task, waitForQueue } from 'ember-concurrency';\n   * export default class MyComponent extends Component {\n   *   &#64;task *myTask() {\n   *     yield waitForQueue('afterRender');\n   *     console.log(\"now we're in the afterRender queue\");\n   *   }\n   * }\n   * ```\n   *\n   * @param {string} queueName the name of the Ember run loop queue\n   */\n  function waitForQueue(queueName) {\n    return new WaitForQueueYieldable(queueName);\n  }\n\n  /**\n   * Use `waitForEvent` to pause the task until an event is fired. The event\n   * can either be a jQuery event or an Ember.Evented event (or any event system\n   * where the object supports `.on()` `.one()` and `.off()`).\n   *\n   * ```js\n   * import { task, waitForEvent } from 'ember-concurrency';\n   * export default class MyComponent extends Component {\n   *   &#64;task *myTask() {\n   *     console.log(\"Please click anywhere..\");\n   *     let clickEvent = yield waitForEvent($('body'), 'click');\n   *     console.log(\"Got event\", clickEvent);\n   *\n   *     let emberEvent = yield waitForEvent(this, 'foo');\n   *     console.log(\"Got foo event\", emberEvent);\n   *\n   *     // somewhere else: component.trigger('foo', { value: 123 });\n   *   }\n   * }\n   * ```\n   *\n   * @param {object} object the Ember Object, jQuery element, or other object with .on() and .off() APIs\n   *                 that the event fires from\n   * @param {function} eventName the name of the event to wait for\n   */\n  function waitForEvent(object, eventName) {\n    (true && !((0, _utils.isEventedObject)(object)) && (0, _debug.assert)(\"\".concat(object, \" must include Ember.Evented (or support `.on()` and `.off()`) or DOM EventTarget (or support `addEventListener` and  `removeEventListener`) to be able to use `waitForEvent`\"), (0, _utils.isEventedObject)(object)));\n    return new WaitForEventYieldable(object, eventName);\n  }\n\n  /**\n   * Use `waitForProperty` to pause the task until a property on an object\n   * changes to some expected value. This can be used for a variety of use\n   * cases, including synchronizing with another task by waiting for it\n   * to become idle, or change state in some other way. If you omit the\n   * callback, `waitForProperty` will resume execution when the observed\n   * property becomes truthy. If you provide a callback, it'll be called\n   * immediately with the observed property's current value, and multiple\n   * times thereafter whenever the property changes, until you return\n   * a truthy value from the callback, or the current task is canceled.\n   * You can also pass in a non-Function value in place of the callback,\n   * in which case the task will continue executing when the property's\n   * value becomes the value that you passed in.\n   *\n   * ```js\n   * import { task, waitForProperty } from 'ember-concurrency';\n   * export default class MyComponent extends Component {\n   *   &#64;tracked foo = 0;\n   *\n   *   &#64;task *myTask() {\n   *     console.log(\"Waiting for `foo` to become 5\");\n   *\n   *     yield waitForProperty(this, 'foo', v => v === 5);\n   *     // alternatively: yield waitForProperty(this, 'foo', 5);\n   *\n   *     // somewhere else: this.foo = 5;\n   *\n   *     console.log(\"`foo` is 5!\");\n   *\n   *     // wait for another task to be idle before running:\n   *     yield waitForProperty(this, 'otherTask.isIdle');\n   *     console.log(\"otherTask is idle!\");\n   *   }\n   * }\n   * ```\n   *\n   * @param {object} object an object (most likely an Ember Object)\n   * @param {string} key the property name that is observed for changes\n   * @param {function} callbackOrValue a Function that should return a truthy value\n   *                                   when the task should continue executing, or\n   *                                   a non-Function value that the watched property\n   *                                   needs to equal before the task will continue running\n   */\n  function waitForProperty(object, key, predicateCallback) {\n    return new WaitForPropertyYieldable(object, key, predicateCallback);\n  }\n});","define(\"ember-concurrency/-task-instance\", [\"exports\", \"ember-concurrency/-private/task-instance\", \"ember-concurrency/-private/utils\"], function (_exports, _taskInstance, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  (0, _utils.deprecatePrivateModule)('ember-concurrency/-task-instance');\n  var _default = _exports.default = _taskInstance.TaskInstance;\n});","define(\"ember-concurrency/-task-property\", [\"exports\", \"ember-concurrency/-private/task\", \"ember-concurrency/-private/task-properties\", \"ember-concurrency/-private/utils\"], function (_exports, _task, _taskProperties, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"Task\", {\n    enumerable: true,\n    get: function get() {\n      return _task.Task;\n    }\n  });\n  Object.defineProperty(_exports, \"TaskProperty\", {\n    enumerable: true,\n    get: function get() {\n      return _taskProperties.TaskProperty;\n    }\n  });\n  (0, _utils.deprecatePrivateModule)('ember-concurrency/-task-property');\n});","define(\"ember-concurrency/helpers/cancel-all\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\", \"ember-concurrency/-private/helpers\"], function (_exports, _helper, _debug, _helpers) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.cancelHelper = cancelHelper;\n  _exports.default = void 0;\n  var CANCEL_REASON = \"the 'cancel-all' template helper was invoked\";\n  function cancelHelper(args) {\n    var cancelable = args[0];\n    if (!cancelable || typeof cancelable.cancelAll !== 'function') {\n      (true && !(false) && (0, _debug.assert)(\"The first argument passed to the `cancel-all` helper should be a Task or TaskGroup (without quotes); you passed \".concat(cancelable), false));\n    }\n    return (0, _helpers.taskHelperClosure)('cancel-all', 'cancelAll', [cancelable, {\n      reason: CANCEL_REASON\n    }]);\n  }\n  var _default = _exports.default = (0, _helper.helper)(cancelHelper);\n});","define(\"ember-concurrency/helpers/perform\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\", \"ember-concurrency/-private/helpers\"], function (_exports, _helper, _debug, _helpers) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.performHelper = performHelper;\n  function maybeReportError(onError) {\n    return function (e) {\n      if (typeof onError === 'function') {\n        onError(e);\n      } else if (onError === null) {\n        // Do nothing\n      } else {\n        (true && !(false) && (0, _debug.assert)(\"The onError argument passed to the `perform` helper should be a function or null; you passed \".concat(onError), false));\n      }\n    };\n  }\n  function performHelper(args, hash) {\n    var perform = (0, _helpers.taskHelperClosure)('perform', 'perform', args, hash);\n    if (hash && typeof hash.onError !== 'undefined') {\n      return function () {\n        try {\n          var taskInstance = perform.apply(void 0, arguments);\n          return taskInstance.catch(maybeReportError(hash.onError));\n          // eslint-disable-next-line no-empty\n        } catch (_unused) {\n          maybeReportError(hash.onError);\n        }\n      };\n    } else {\n      return perform;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(performHelper);\n});","define(\"ember-concurrency/helpers/task\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function taskHelper(_ref) {\n    var _ref2 = _toArray(_ref),\n      task = _ref2[0],\n      args = _ref2.slice(1);\n    return task._curry.apply(task, _toConsumableArray(args));\n  }\n  var _default = _exports.default = (0, _helper.helper)(taskHelper);\n});","define(\"ember-concurrency/index\", [\"exports\", \"ember-concurrency/-private/utils\", \"ember-concurrency/-private/task-properties\", \"ember-concurrency/-private/task-public-api\", \"ember-concurrency/-private/task-instance\", \"ember-concurrency/-private/cancelable-promise-helpers\", \"ember-concurrency/-private/wait-for\", \"ember-concurrency/-private/external/task-instance/cancelation\", \"ember-concurrency/-private/external/yieldables\", \"ember-concurrency/-private/task\", \"ember-concurrency/-private/task-group\", \"ember-concurrency/-private/task-decorators\", \"ember-concurrency/-private/external/task-factory\"], function (_exports, _utils, _taskProperties, _taskPublicApi, _taskInstance, _cancelablePromiseHelpers, _waitFor, _cancelation, _yieldables, _task, _taskGroup, _taskDecorators, _taskFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"Task\", {\n    enumerable: true,\n    get: function get() {\n      return _task.Task;\n    }\n  });\n  Object.defineProperty(_exports, \"TaskGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _taskGroup.TaskGroup;\n    }\n  });\n  Object.defineProperty(_exports, \"TaskGroupProperty\", {\n    enumerable: true,\n    get: function get() {\n      return _taskProperties.TaskGroupProperty;\n    }\n  });\n  Object.defineProperty(_exports, \"TaskInstance\", {\n    enumerable: true,\n    get: function get() {\n      return _taskInstance.TaskInstance;\n    }\n  });\n  Object.defineProperty(_exports, \"TaskProperty\", {\n    enumerable: true,\n    get: function get() {\n      return _taskProperties.TaskProperty;\n    }\n  });\n  Object.defineProperty(_exports, \"Yieldable\", {\n    enumerable: true,\n    get: function get() {\n      return _utils.EmberYieldable;\n    }\n  });\n  Object.defineProperty(_exports, \"all\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelablePromiseHelpers.all;\n    }\n  });\n  Object.defineProperty(_exports, \"allSettled\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelablePromiseHelpers.allSettled;\n    }\n  });\n  Object.defineProperty(_exports, \"animationFrame\", {\n    enumerable: true,\n    get: function get() {\n      return _yieldables.animationFrame;\n    }\n  });\n  Object.defineProperty(_exports, \"didCancel\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelation.didCancel;\n    }\n  });\n  Object.defineProperty(_exports, \"dropTask\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.dropTask;\n    }\n  });\n  Object.defineProperty(_exports, \"dropTaskGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.dropTaskGroup;\n    }\n  });\n  Object.defineProperty(_exports, \"enqueueTask\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.enqueueTask;\n    }\n  });\n  Object.defineProperty(_exports, \"enqueueTaskGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.enqueueTaskGroup;\n    }\n  });\n  Object.defineProperty(_exports, \"forever\", {\n    enumerable: true,\n    get: function get() {\n      return _yieldables.forever;\n    }\n  });\n  Object.defineProperty(_exports, \"getModifier\", {\n    enumerable: true,\n    get: function get() {\n      return _taskFactory.getModifier;\n    }\n  });\n  Object.defineProperty(_exports, \"hasModifier\", {\n    enumerable: true,\n    get: function get() {\n      return _taskFactory.hasModifier;\n    }\n  });\n  Object.defineProperty(_exports, \"hash\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelablePromiseHelpers.hash;\n    }\n  });\n  Object.defineProperty(_exports, \"hashSettled\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelablePromiseHelpers.hashSettled;\n    }\n  });\n  Object.defineProperty(_exports, \"keepLatestTask\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.keepLatestTask;\n    }\n  });\n  Object.defineProperty(_exports, \"keepLatestTaskGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.keepLatestTaskGroup;\n    }\n  });\n  Object.defineProperty(_exports, \"lastValue\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.lastValue;\n    }\n  });\n  Object.defineProperty(_exports, \"race\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelablePromiseHelpers.race;\n    }\n  });\n  Object.defineProperty(_exports, \"rawTimeout\", {\n    enumerable: true,\n    get: function get() {\n      return _yieldables.rawTimeout;\n    }\n  });\n  Object.defineProperty(_exports, \"registerModifier\", {\n    enumerable: true,\n    get: function get() {\n      return _taskFactory.registerModifier;\n    }\n  });\n  Object.defineProperty(_exports, \"restartableTask\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.restartableTask;\n    }\n  });\n  Object.defineProperty(_exports, \"restartableTaskGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _taskDecorators.restartableTaskGroup;\n    }\n  });\n  Object.defineProperty(_exports, \"task\", {\n    enumerable: true,\n    get: function get() {\n      return _taskPublicApi.task;\n    }\n  });\n  Object.defineProperty(_exports, \"taskGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _taskPublicApi.taskGroup;\n    }\n  });\n  Object.defineProperty(_exports, \"timeout\", {\n    enumerable: true,\n    get: function get() {\n      return _utils.timeout;\n    }\n  });\n  Object.defineProperty(_exports, \"waitForEvent\", {\n    enumerable: true,\n    get: function get() {\n      return _waitFor.waitForEvent;\n    }\n  });\n  Object.defineProperty(_exports, \"waitForProperty\", {\n    enumerable: true,\n    get: function get() {\n      return _waitFor.waitForProperty;\n    }\n  });\n  Object.defineProperty(_exports, \"waitForQueue\", {\n    enumerable: true,\n    get: function get() {\n      return _waitFor.waitForQueue;\n    }\n  });\n});","define(\"ember-copy/copy\", [\"exports\", \"@ember/debug\", \"@ember/object\", \"ember-copy/copyable\"], function (_exports, _debug, _object, _copyable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = copy;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _copy(obj, deep, seen, copies) {\n    // primitive data types are immutable, just return them.\n    if (_typeof(obj) !== 'object' || obj === null) {\n      return obj;\n    }\n    var ret, loc;\n\n    // avoid cyclical loops\n    if (deep && (loc = seen.indexOf(obj)) >= 0) {\n      return copies[loc];\n    }\n    if (deep) {\n      seen.push(obj);\n    }\n\n    // IMPORTANT: this specific test will detect a native array only. Any other\n    // object will need to implement Copyable.\n    if (Array.isArray(obj)) {\n      ret = obj.slice();\n      if (deep) {\n        copies.push(ret);\n        loc = ret.length;\n        while (--loc >= 0) {\n          ret[loc] = _copy(ret[loc], deep, seen, copies);\n        }\n      }\n    } else if (_copyable.default.detect(obj)) {\n      ret = obj.copy(deep, seen, copies);\n      if (deep) {\n        copies.push(ret);\n      }\n    } else if (obj instanceof Date) {\n      ret = new Date(obj.getTime());\n      if (deep) {\n        copies.push(ret);\n      }\n    } else {\n      (true && !(!(obj instanceof _object.default) || _copyable.default.detect(obj)) && (0, _debug.assert)('Cannot clone an EmberObject that does not implement Copyable', !(obj instanceof _object.default) || _copyable.default.detect(obj)));\n      ret = {};\n      if (deep) {\n        copies.push(ret);\n      }\n      var key;\n      for (key in obj) {\n        // support Null prototype\n        if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n          continue;\n        }\n\n        // Prevents browsers that don't respect non-enumerability from\n        // copying internal Ember properties\n        if (key.substring(0, 2) === '__') {\n          continue;\n        }\n        ret[key] = deep ? _copy(obj[key], deep, seen, copies) : obj[key];\n      }\n    }\n    return ret;\n  }\n\n  /**\n    Creates a shallow copy of the passed object. A deep copy of the object is\n    returned if the optional `deep` argument is `true`.\n  \n    If the passed object implements the `Copyable` interface, then this\n    function will delegate to the object's `copy()` method and return the\n    result. See `Copyable` for further details.\n  \n    For primitive values (which are immutable in JavaScript), the passed object\n    is simply returned.\n  \n    @function copy\n    @param {Object} obj The object to clone\n    @param {Boolean} [deep=false] If true, a deep copy of the object is made.\n    @return {Object} The copied object\n  */\n  function copy(obj, deep) {\n    // fast paths\n    if ('object' !== _typeof(obj) || obj === null) {\n      return obj; // can't copy primitives\n    }\n    if (!Array.isArray(obj) && _copyable.default.detect(obj)) {\n      return obj.copy(deep);\n    }\n    return _copy(obj, deep, deep ? [] : null, deep ? [] : null);\n  }\n});","define(\"ember-copy/copyable\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n    Implements some standard methods for copying an object. Add this mixin to\n    any object you create that can create a copy of itself. This mixin is\n    added automatically to the built-in array.\n  \n    You should generally implement the `copy()` method to return a copy of the\n    receiver.\n  \n    @class Copyable\n  */\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    /**\n      __Required.__ You must implement this method to apply this mixin.\n       Override to return a copy of the receiver. Default implementation raises\n      an exception.\n       @method copy\n      @param {Boolean} deep if `true`, a deep copy of the object should be made\n      @return {Object} copy of receiver\n    */\n    copy: null\n  });\n});","define(\"ember-copy/index\", [\"exports\", \"ember-copy/copy\", \"ember-copy/copyable\"], function (_exports, _copy, _copyable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"Copyable\", {\n    enumerable: true,\n    get: function get() {\n      return _copyable.default;\n    }\n  });\n  Object.defineProperty(_exports, \"copy\", {\n    enumerable: true,\n    get: function get() {\n      return _copy.default;\n    }\n  });\n});","define(\"ember-drag-drop/components/draggable-object-target\", [\"exports\", \"@ember/application\", \"@ember/component\", \"ember-drag-drop/mixins/droppable\"], function (_exports, _application, _component, _droppable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _component.default.extend(_droppable.default, {\n    classNameBindings: ['overrideClass'],\n    overrideClass: 'draggable-object-target',\n    isOver: false,\n    // idea taken from https://github.com/emberjs/rfcs/blob/master/text/0680-implicit-injection-deprecation.md#stage-1\n    get coordinator() {\n      if (this._coordinator === undefined) {\n        this._coordinator = (0, _application.getOwner)(this).lookup('drag:coordinator');\n      }\n      return this._coordinator;\n    },\n    set coordinator(value) {\n      this._coordinator = value;\n    },\n    handlePayload: function handlePayload(payload, event) {\n      var obj = this.get('coordinator').getObject(payload, {\n        target: this\n      });\n      this.get('action')(obj, {\n        target: this,\n        event: event\n      });\n    },\n    handleDrop: function handleDrop(event) {\n      var dataTransfer = event.dataTransfer;\n      var payload = dataTransfer.getData(\"Text\");\n      if (payload === '') {\n        return;\n      }\n      this.handlePayload(payload, event);\n    },\n    acceptDrop: function acceptDrop(event) {\n      this.handleDrop(event);\n      //Firefox is navigating to a url on drop sometimes, this prevents that from happening\n      event.preventDefault();\n    },\n    handleDragOver: function handleDragOver(event) {\n      if (!this.get('isOver')) {\n        //only send once per hover event\n        this.set('isOver', true);\n        if (this.get('dragOverAction')) {\n          this.get('dragOverAction')(event);\n        }\n      }\n    },\n    handleDragOut: function handleDragOut(event) {\n      this.set('isOver', false);\n      if (this.get('dragOutAction')) {\n        this.get('dragOutAction')(event);\n      }\n    },\n    click: function click(e) {\n      var onClick = this.get('onClick');\n      if (onClick) {\n        onClick(e);\n      }\n    },\n    mouseDown: function mouseDown(e) {\n      var mouseDown = this.get('onMouseDown');\n      if (mouseDown) {\n        mouseDown(e);\n      }\n    },\n    handleMouseEnter: function handleMouseEnter(e) {\n      var mouseEnter = this.get('onMouseEnter');\n      if (mouseEnter) {\n        mouseEnter(e);\n      }\n    },\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      this.element.addEventListener('mouseenter', this.boundHandleMouseEnter);\n    },\n    willDestroyElement: function willDestroyElement() {\n      this._super.apply(this, arguments);\n      this.element.removeEventListener('mouseenter', this.boundHandleMouseEnter);\n    },\n    actions: {\n      acceptForDrop: function acceptForDrop() {\n        var hashId = this.get('coordinator.clickedId');\n        this.handlePayload(hashId);\n      }\n    },\n    init: function init() {\n      this._super.apply(this, arguments);\n      this.set('boundHandleMouseEnter', this.handleMouseEnter.bind(this));\n    }\n  });\n});","define(\"ember-drag-drop/components/draggable-object\", [\"exports\", \"@ember/application\", \"@ember/component\", \"@ember/service\", \"@ember/object/computed\", \"@ember/object\", \"@ember/runloop\", \"ember-drag-drop/utils/proxy-unproxy-objects\"], function (_exports, _application, _component, _service, _computed, _object, _runloop, _proxyUnproxyObjects) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  var _default = _exports.default = _component.default.extend({\n    dragCoordinator: (0, _service.inject)('drag-coordinator'),\n    overrideClass: 'draggable-object',\n    classNameBindings: [':js-draggableObject', 'isDraggingObject:is-dragging-object:', 'overrideClass'],\n    attributeBindings: ['dragReady:draggable'],\n    isDraggable: true,\n    dragReady: true,\n    isSortable: false,\n    sortingScope: 'drag-objects',\n    title: (0, _computed.alias)('content.title'),\n    // idea taken from https://github.com/emberjs/rfcs/blob/master/text/0680-implicit-injection-deprecation.md#stage-1\n    get coordinator() {\n      if (this._coordinator === undefined) {\n        this._coordinator = (0, _application.getOwner)(this).lookup('drag:coordinator');\n      }\n      return this._coordinator;\n    },\n    set coordinator(value) {\n      this._coordinator = value;\n    },\n    draggable: (0, _object.computed)('isDraggable', function () {\n      var isDraggable = this.get('isDraggable');\n      return isDraggable || null;\n    }),\n    proxyContent: (0, _object.computed)('content', function () {\n      return (0, _proxyUnproxyObjects.wrapper)(this.get('content'));\n    }),\n    init: function init() {\n      this._super.apply(this, arguments);\n      if (this.get('dragHandle')) {\n        this.set('dragReady', false);\n      }\n      this.mouseOverHandler = function () {\n        this.set('dragReady', true);\n      }.bind(this);\n      this.mouseOutHandler = function () {\n        this.set('dragReady', false);\n      }.bind(this);\n    },\n    didInsertElement: function didInsertElement() {\n      var _this = this;\n      (0, _runloop.scheduleOnce)('afterRender', function () {\n        //if there is a drag handle watch the mouse up and down events to trigger if drag is allowed\n        var dragHandle = _this.get('dragHandle');\n        if (dragHandle) {\n          //only start when drag handle is activated\n          if (_this.element.querySelector(dragHandle)) {\n            _this.element.querySelector(dragHandle).addEventListener('mouseover', _this.mouseOverHandler);\n            _this.element.querySelector(dragHandle).addEventListener('mouseout', _this.mouseOutHandler);\n          }\n        }\n      });\n    },\n    willDestroyElement: function willDestroyElement() {\n      var dragHandle = this.get('dragHandle');\n      if (this.element.querySelector(dragHandle)) {\n        this.element.querySelector(dragHandle).removeEventListener('mouseover', this.mouseOverHandler);\n        this.element.querySelector(dragHandle).removeEventListener('mouseout', this.mouseOutHandler);\n      }\n    },\n    dragStart: function dragStart(event) {\n      var _this2 = this;\n      if (!this.get('isDraggable') || !this.get('dragReady')) {\n        event.preventDefault();\n        return;\n      }\n      var dataTransfer = event.dataTransfer;\n      var obj = this.get('proxyContent');\n      var id = null;\n      var coordinator = this.get('coordinator');\n      if (coordinator) {\n        id = coordinator.setObject(obj, {\n          source: this\n        });\n      }\n      dataTransfer.setData('Text', id);\n      if (obj && _typeof(obj) === 'object') {\n        (0, _object.set)(obj, 'isDraggingObject', true);\n      }\n      this.set('isDraggingObject', true);\n      if (!this.get('dragCoordinator.enableSort') && this.get('dragCoordinator.sortComponentController')) {\n        //disable drag if sorting is disabled this is not used for regular\n        event.preventDefault();\n        return;\n      } else {\n        (0, _runloop.next)(function () {\n          _this2.dragStartHook(event);\n        });\n        this.get('dragCoordinator').dragStarted(obj, event, this);\n      }\n      if (this.get('dragStartAction')) {\n        this.get('dragStartAction')(obj, event);\n      }\n      if (this.get('isSortable') && this.get('draggingSortItem')) {\n        this.get('draggingSortItem')(obj, event);\n      }\n    },\n    dragEnd: function dragEnd(event) {\n      if (!this.get('isDraggingObject')) {\n        return;\n      }\n      var obj = this.get('proxyContent');\n      if (obj && _typeof(obj) === 'object') {\n        (0, _object.set)(obj, 'isDraggingObject', false);\n      }\n      this.set('isDraggingObject', false);\n      this.dragEndHook(event);\n      this.get('dragCoordinator').dragEnded();\n      if (this.get('dragEndAction')) {\n        this.get('dragEndAction')(obj, event);\n      }\n      if (this.get('dragHandle')) {\n        this.set('dragReady', false);\n      }\n    },\n    drag: function drag(event) {\n      if (this.get('dragMoveAction')) {\n        this.get('dragMoveAction')(event);\n      }\n    },\n    dragOver: function dragOver(event) {\n      if (this.get('isSortable')) {\n        this.get('dragCoordinator').draggingOver(event, this);\n      }\n      return false;\n    },\n    dragStartHook: function dragStartHook(event) {\n      event.target.style.opacity = '0.5';\n    },\n    dragEndHook: function dragEndHook(event) {\n      event.target.style.opacity = '1';\n    },\n    drop: function drop(event) {\n      //Firefox is navigating to a url on drop, this prevents that from happening\n      event.preventDefault();\n    },\n    actions: {\n      selectForDrag: function selectForDrag() {\n        var obj = this.get('proxyContent');\n        var hashId = this.get('coordinator').setObject(obj, {\n          source: this\n        });\n        this.set('coordinator.clickedId', hashId);\n      }\n    }\n  });\n});","define(\"ember-drag-drop/components/sortable-objects\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@ember/array\"], function (_exports, _component, _service, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _component.default.extend({\n    dragCoordinator: (0, _service.inject)('drag-coordinator'),\n    overrideClass: 'sortable-objects',\n    classNameBindings: ['overrideClass'],\n    enableSort: true,\n    useSwap: true,\n    inPlace: false,\n    sortingScope: 'drag-objects',\n    sortableObjectList: (0, _array.A)(),\n    init: function init() {\n      this._super.apply(this, arguments);\n      if (this.get('enableSort')) {\n        this.get('dragCoordinator').pushSortComponent(this);\n      }\n    },\n    willDestroyElement: function willDestroyElement() {\n      if (this.get('enableSort')) {\n        this.get('dragCoordinator').removeSortComponent(this);\n      }\n    },\n    dragStart: function dragStart(event) {\n      event.stopPropagation();\n      if (!this.get('enableSort')) {\n        return false;\n      }\n      this.set('dragCoordinator.sortComponentController', this);\n    },\n    dragEnter: function dragEnter(event) {\n      //needed so drop event will fire\n      event.stopPropagation();\n      return false;\n    },\n    dragOver: function dragOver(event) {\n      //needed so drop event will fire\n      event.stopPropagation();\n      return false;\n    },\n    drop: function drop(event) {\n      event.stopPropagation();\n      event.preventDefault();\n      this.set('dragCoordinator.sortComponentController', undefined);\n      if (this.get('enableSort') && this.get('sortEndAction')) {\n        this.get('sortEndAction')(event);\n      }\n    }\n  });\n});","define(\"ember-drag-drop/mixins/droppable\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Wraps the native drop events to make your components droppable.\n   *\n   * @mixin Droppable\n   */\n\n  var Droppable = _mixin.default.create({\n    _currentDrag: null,\n    classNameBindings: ['accepts-drag', 'self-drop'],\n    /**\n     * Read-only className property that is set to true when the component is\n     * receiving a valid drag event. You can style your element with\n     * `.accepts-drag`.\n     *\n     * @property accepts-drag\n     * @private\n     */\n\n    'accepts-drag': false,\n    /**\n     * Will be true when the component is dragged over itself. Can use\n     * `.self-drop` in your css to style (or more common, unstyle) the component.\n     *\n     * @property self-drop\n     * @private\n     */\n\n    'self-drop': false,\n    /**\n      * Validates drag events. Override this to restrict which data types your\n      * component accepts.\n      *\n      * Example:\n      *\n      * ```js\n      * validateDragEvent(event) {\n      *   return event.dataTransfer.types.contains('text/x-foo');\n      * }\n      * ```\n      *\n      * @method validateDragEvent\n      * @public\n      */\n    validateDragEvent: function validateDragEvent() {\n      return true;\n    },\n    /**\n     * Called when a valid drag event is dropped on the component. Override to\n     * actually make something happen.\n     *\n     * ```js\n     * acceptDrop: function(event) {\n     *   var data = event.dataTransfer.getData('text/plain');\n     *   doSomethingWith(data);\n     * }\n     * ```\n     *\n     * @method acceptDrop\n     * @public\n     */\n    acceptDrop: function acceptDrop() {},\n    handleDragOver: function handleDragOver() {},\n    handleDragOut: function handleDragOut() {},\n    /**\n     * @method dragOver\n     * @private\n     */\n    dragOver: function dragOver(event) {\n      if (this._droppableIsDraggable(event)) {\n        this.set('self-drop', true);\n      }\n      if (this.get('accepts-drag')) {\n        return this._allowDrop(event);\n      }\n      if (this.validateDragEvent(event)) {\n        this.set('accepts-drag', true);\n        this._allowDrop(event);\n      } else {\n        this._resetDroppability();\n      }\n    },\n    /**\n     * @method dragEnter\n     * @private\n     */\n    dragEnter: function dragEnter() {\n      return false;\n    },\n    /**\n     * @method drop\n     * @private\n     */\n    drop: function drop(event) {\n      // have to validate on drop because you may have nested sortables the\n      // parent allows the drop but the child receives it, revalidating allows\n      // the event to bubble up to the parent to handle it\n      if (!this.validateDragEvent(event)) {\n        return;\n      }\n      this.acceptDrop(event);\n      this._resetDroppability();\n      // TODO: might not need this? I can't remember why its here\n      event.stopPropagation();\n      return false;\n    },\n    /**\n     * Tells the browser we have an acceptable drag event.\n     *\n     * @method _allowDrop\n     * @private\n     */\n    _allowDrop: function _allowDrop(event) {\n      this.handleDragOver(event);\n      event.stopPropagation();\n      event.preventDefault();\n      return false;\n    },\n    /**\n     * We want to be able to know if the current drop target is the original\n     * element being dragged or a child of it.\n     *\n     * @method _droppableIsDraggable\n     * @private\n     */\n    _droppableIsDraggable: function _droppableIsDraggable(event) {\n      return Droppable._currentDrag && (Droppable._currentDrag === event.target || Droppable._currentDrag.contains(event.target));\n    },\n    /**\n     * @method _resetDroppability\n     * @private\n     */\n    _resetDroppability: function _resetDroppability(event) {\n      this.handleDragOut(event);\n      this.set('accepts-drag', false);\n      this.set('self-drop', false);\n    },\n    dragLeave: function dragLeave() {\n      this._resetDroppability();\n    },\n    // Need to track this so we can determine `self-drop`.\n    // It's on `Droppable` so we can test :\\\n    dragStart: function dragStart(event) {\n      this.set('_currentDrag', event.target);\n    }\n  });\n  var _default = _exports.default = Droppable;\n});","define(\"ember-drag-drop/services/drag-coordinator\", [\"exports\", \"@ember/service\", \"@ember/object/computed\", \"@ember/array\", \"@ember/utils\"], function (_exports, _service, _computed, _array, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function indexOf(items, a) {\n    return items.findIndex(function (element) {\n      return (0, _utils.isEqual)(element, a);\n    });\n  }\n  function swapInPlace(items, a, b) {\n    var aPos = indexOf(items, a);\n    var bPos = indexOf(items, b);\n    items.replace(aPos, 1, [b]);\n    items.replace(bPos, 1, [a]);\n  }\n  function shiftInPlace(items, a, b) {\n    var aPos = indexOf(items, a);\n    var bPos = indexOf(items, b);\n    items.removeAt(aPos);\n    items.insertAt(bPos, a);\n  }\n  var _default = _exports.default = _service.default.extend({\n    sortComponentController: null,\n    currentDragObject: null,\n    currentDragEvent: null,\n    currentDragItem: null,\n    currentOffsetItem: null,\n    isMoving: false,\n    lastEvent: null,\n    init: function init() {\n      this._super.apply(this, arguments);\n      // Use object for sortComponents so that we can scope per sortingScope\n      this.set('sortComponents', {});\n    },\n    arrayList: (0, _computed.alias)('sortComponentController.sortableObjectList'),\n    enableSort: (0, _computed.alias)('sortComponentController.enableSort'),\n    useSwap: (0, _computed.alias)('sortComponentController.useSwap'),\n    inPlace: (0, _computed.alias)('sortComponentController.inPlace'),\n    pushSortComponent: function pushSortComponent(component) {\n      var sortingScope = component.get('sortingScope');\n      if (!this.get('sortComponents')[sortingScope]) {\n        this.get('sortComponents')[sortingScope] = (0, _array.A)();\n      }\n      this.get('sortComponents')[sortingScope].pushObject(component);\n    },\n    removeSortComponent: function removeSortComponent(component) {\n      var sortingScope = component.get('sortingScope');\n      this.get('sortComponents')[sortingScope].removeObject(component);\n    },\n    dragStarted: function dragStarted(object, event, emberObject) {\n      this.set('currentDragObject', object);\n      this.set('currentDragEvent', event);\n      this.set('currentDragItem', emberObject);\n      event.dataTransfer.effectAllowed = 'move';\n    },\n    dragEnded: function dragEnded() {\n      this.set('currentDragObject', null);\n      this.set('currentDragEvent', null);\n      this.set('currentDragItem', null);\n      this.set('currentOffsetItem', null);\n    },\n    draggingOver: function draggingOver(event, emberObject) {\n      var currentOffsetItem = this.get('currentOffsetItem');\n      var pos = this.relativeClientPosition(emberObject.element, event);\n      var hasSameSortingScope = this.get('currentDragItem.sortingScope') === emberObject.get('sortingScope');\n      var moveDirections = [];\n      if (!this.get('lastEvent')) {\n        this.set('lastEvent', event);\n      }\n      if (event.clientY < this.get('lastEvent').clientY) {\n        moveDirections.push('up');\n      }\n      if (event.clientY > this.get('lastEvent').clientY) {\n        moveDirections.push('down');\n      }\n      if (event.clientX < this.get('lastEvent').clientX) {\n        moveDirections.push('left');\n      }\n      if (event.clientX > this.get('lastEvent').clientX) {\n        moveDirections.push('right');\n      }\n      this.set('lastEvent', event);\n      if (!this.get('isMoving') && this.get('currentDragEvent')) {\n        if (event.target !== this.get('currentDragEvent').target && hasSameSortingScope) {\n          //if not dragging over self\n          if (currentOffsetItem !== emberObject) {\n            if (pos.py < 0.67 && moveDirections.indexOf('up') >= 0 || pos.py > 0.33 && moveDirections.indexOf('down') >= 0 || pos.px < 0.67 && moveDirections.indexOf('left') >= 0 || pos.px > 0.33 && moveDirections.indexOf('right') >= 0) {\n              this.moveElements(emberObject);\n              this.set('currentOffsetItem', emberObject);\n            }\n          }\n        } else {\n          //reset because the node moved under the mouse with a move\n          this.set('currentOffsetItem', null);\n        }\n      }\n    },\n    moveObjectPositions: function moveObjectPositions(a, b, sortComponents) {\n      var aSortable = sortComponents.find(function (component) {\n        return component.get('sortableObjectList').find(function (sortable) {\n          return (0, _utils.isEqual)(sortable, a);\n        });\n      });\n      var bSortable = sortComponents.find(function (component) {\n        return component.get('sortableObjectList').find(function (sortable) {\n          return (0, _utils.isEqual)(sortable, b);\n        });\n      });\n      var swap = aSortable === bSortable;\n      if (swap) {\n        var list = aSortable.get('sortableObjectList');\n        if (!this.get('inPlace')) {\n          list = (0, _array.A)(list.toArray());\n        }\n        if (this.get('useSwap')) {\n          swapInPlace(list, a, b);\n        } else {\n          shiftInPlace(list, a, b);\n        }\n        if (!this.get('inPlace')) {\n          aSortable.set('sortableObjectList', list);\n        }\n      } else {\n        // Move if items are in different sortable-objects component\n        var aList = aSortable.get('sortableObjectList');\n        var bList = bSortable.get('sortableObjectList');\n\n        // Remove from aList and insert into bList\n        aList.removeObject(a);\n        bList.insertAt(indexOf(bList, b), a);\n      }\n    },\n    moveElements: function moveElements(overElement) {\n      var isEnabled = Object.keys(this.get('sortComponents')).length;\n      var draggingItem = this.get('currentDragItem');\n      var sortComponents = this.get('sortComponents')[draggingItem.get('sortingScope')];\n      if (!isEnabled) {\n        return;\n      }\n      this.moveObjectPositions(draggingItem.get('content'), overElement.get('content'), sortComponents);\n      sortComponents.forEach(function (component) {\n        component.rerender();\n      });\n    },\n    relativeClientPosition: function relativeClientPosition(el, event) {\n      var rect = el.getBoundingClientRect();\n      var x = event.clientX - rect.left;\n      var y = event.clientY - rect.top;\n      return {\n        x: x,\n        y: y,\n        px: x / rect.width,\n        py: y / rect.height\n      };\n    }\n  });\n});","define(\"ember-drag-drop/utils/proxy-unproxy-objects\", [\"exports\", \"@ember/utils\", \"@ember/object/internals\"], function (_exports, _utils, _internals) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.unwrapper = unwrapper;\n  _exports.wrapper = wrapper;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  /**\n   * On drag action we need to provide a property `isDraggingObject` to the UI.\n   * This utility is used to create a wrapper object around the object passed to the proxy function.\n   * We use this wrapper to prevent the `draggable-object` from mutating the original object by appending\n   * `isDraggingObject` to the content.\n   * \n   * This unexpected mutation causes problems when the targeted content is not prepared to handle\n   * the additional property, and potentially leaks local state onto an object that likely holds state\n   * for the route or application more generally.\n   */\n\n  /**\n   * @access public\n   * Returns the passed object wrapped within new object.\n   * Used to proxy draggable objects.\n   * @param objectToProxy Object to proxy.\n   * @returns {Object} Proxy object.\n   */\n  function wrapper(objectToProxy) {\n    // If we do not have any content for the object to proxy, \n    // we do not wish to render that item.\n    if (!(0, _utils.isNone)(objectToProxy)) {\n      var guidKey = (0, _internals.guidFor)(objectToProxy);\n      return _defineProperty(_defineProperty(_defineProperty({}, guidKey, objectToProxy), \"unwrappingKey\", guidKey), \"id\", objectToProxy.id);\n    }\n    return null;\n  }\n\n  /**\n   * @access public\n   * Returns the content of the passed object.\n   * Used to un-proxy draggable objects.\n   * @param objectToUnproxy Object to un-proxy.\n   * @returns {Object} Content of the proxy object.\n   */\n  function unwrapper(objectToUnproxy) {\n    if (!(0, _utils.isNone)(objectToUnproxy)) {\n      return objectToUnproxy[objectToUnproxy.unwrappingKey];\n    }\n    return null;\n  }\n});","define(\"ember-drag-sort/components/drag-sort-item\", [\"exports\", \"@ember/component\", \"@ember/debug\", \"@ember/service\", \"@ember/object/computed\", \"@ember/object\", \"@ember/runloop\", \"ember-drag-sort/templates/components/drag-sort-item\"], function (_exports, _component, _debug, _service, _computed, _object, _runloop, _dragSortItem) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // ----- Ember modules -----\n\n  // ----- Own modules -----\n\n  function getComputedStyleInt(element, cssProp) {\n    var computedStyle = window.getComputedStyle(element, null);\n    var valueStr = computedStyle.getPropertyValue(cssProp);\n    return parseInt(valueStr, 10);\n  }\n  var _default = _exports.default = _component.default.extend({\n    // ----- Arguments -----\n    item: undefined,\n    index: undefined,\n    items: undefined,\n    group: undefined,\n    childTagName: 'div',\n    draggingEnabled: undefined,\n    handle: null,\n    isHorizontal: false,\n    isRtl: false,\n    sourceOnly: false,\n    dragEndAction: undefined,\n    dragStartAction: undefined,\n    determineForeignPositionAction: undefined,\n    // ----- Services -----\n    dragSort: (0, _service.inject)(),\n    // ----- Overridden properties -----\n    layout: _dragSortItem.default,\n    classNameBindings: [':dragSortItem', 'isDragged2:-isDragged', 'isDraggingOver:-isDraggingOver', 'shouldShowPlaceholderBefore2:-placeholderBefore', 'shouldShowPlaceholderAfter2:-placeholderAfter', 'isTarget:-isTarget:-isTargetNOT', 'index', 'targetIndex'],\n    attributeBindings: ['draggable'],\n    // ----- Static properties -----\n    isDragged2: false,\n    originalHeight: null,\n    shouldShowPlaceholderBefore2: undefined,\n    shouldShowPlaceholderAfter2: undefined,\n    isVertical: (0, _computed.not)('dragSort.isHorizontal'),\n    // ----- Aliases -----\n    isDraggingUp: (0, _computed.reads)('dragSort.isDraggingUp'),\n    sourceList: (0, _computed.reads)('dragSort.sourceList'),\n    sourceIndex: (0, _computed.reads)('dragSort.sourceIndex'),\n    targetIndex: (0, _computed.reads)('dragSort.targetIndex'),\n    targetList: (0, _computed.reads)('dragSort.targetList'),\n    // ----- Computed properties -----\n    draggable: (0, _object.computed)('draggingEnabled', 'handle', function () {\n      var handle = this.get('handle');\n      var draggingEnabled = this.get('draggingEnabled');\n      return !handle && draggingEnabled ? true : null;\n    }),\n    isDragged: (0, _object.computed)('dragSort.isDragging', 'items', 'sourceList', 'index', 'sourceIndex', function () {\n      var isDragging = this.get('dragSort.isDragging');\n      var items = this.get('items');\n      var sourceList = this.get('sourceList');\n      var index = this.get('index');\n      var sourceIndex = this.get('sourceIndex');\n      return isDragging && items === sourceList && index === sourceIndex;\n    }),\n    isDraggingOver: (0, _object.computed)('dragSort.isDragging', 'items', 'targetList', 'index', 'targetIndex', 'isDragged', 'sourceOnly', function () {\n      var isDragging = this.get('dragSort.isDragging');\n      var items = this.get('items');\n      var targetList = this.get('targetList');\n      var index = this.get('index');\n      var targetIndex = this.get('targetIndex');\n      var isDragged = this.get('isDragged');\n      var sourceOnly = this.get('sourceOnly');\n      return !sourceOnly && isDragging && items === targetList && index === targetIndex && !isDragged;\n    }),\n    isLast: (0, _object.computed)('index', 'items.[]', function () {\n      var index = this.get('index');\n      var count = this.get('items.length');\n      return index === count - 1;\n    }),\n    shouldShowPlaceholderBefore: (0, _object.computed)('isDraggingOver', 'isDraggingUp', 'sourceOnly', function () {\n      var isDraggingOver = this.get('isDraggingOver');\n      var isDraggingUp = this.get('isDraggingUp');\n      var sourceOnly = this.get('sourceOnly');\n      return !sourceOnly && isDraggingOver && isDraggingUp;\n    }),\n    shouldShowPlaceholderAfter: (0, _object.computed)('isDraggingOver', 'isDraggingUp', 'sourceOnly', function () {\n      var isDraggingOver = this.get('isDraggingOver');\n      var isDraggingUp = this.get('isDraggingUp');\n      var sourceOnly = this.get('sourceOnly');\n      return !sourceOnly && isDraggingOver && !isDraggingUp;\n    }),\n    // ----- Overridden methods -----\n    didInsertElement: function didInsertElement() {\n      // Consume properties for observers to act\n      this.getProperties('shouldShowPlaceholderBefore', 'shouldShowPlaceholderAfter');\n    },\n    dragStart: function dragStart(event) {\n      // Ignore irrelevant drags\n      if (!this.get('draggingEnabled')) return;\n      if (!this.isHandleUsed(event.target)) {\n        event.preventDefault();\n        return;\n      }\n      event.stopPropagation();\n\n      // Required for Firefox. http://stackoverflow.com/a/32592759/901944\n      if (event.dataTransfer) {\n        if (event.dataTransfer.setData) event.dataTransfer.setData('text', '');\n        if (event.dataTransfer.setDragImage) event.dataTransfer.setDragImage(this.element, 0, 0);\n      }\n      var dragStartAction = this.get('dragStartAction');\n      if (dragStartAction) {\n        var element = this.get('element');\n        var item = this.get('item');\n        dragStartAction({\n          event: event,\n          element: element,\n          draggedItem: item\n        });\n      }\n      this.startDragging(event);\n    },\n    dragEnd: function dragEnd(event) {\n      // Ignore irrelevant drags\n      if (!this.get('dragSort.isDragging')) return;\n      event.stopPropagation();\n      event.preventDefault();\n      this.endDragging(event);\n    },\n    // Required for Firefox. http://stackoverflow.com/a/32592759/901944\n    drop: function drop(event) {\n      event.preventDefault();\n    },\n    dragOver: function dragOver(event) {\n      // Ignore irrelevant drags\n      if (!this.get('dragSort.isDragging') || this.get('determineForeignPositionAction') || this.get('sourceOnly')) return;\n      var group = this.get('group');\n      var activeGroup = this.get('dragSort.group');\n      if (group !== activeGroup) return;\n      event.stopPropagation();\n      event.preventDefault();\n      this.draggingOver(event);\n    },\n    dragEnter: function dragEnter(event) {\n      if (!this.get('dragSort.isDragging')) return;\n      // Without this, dragOver would not fire in IE11. http://mereskin.github.io/dnd/\n      event.preventDefault();\n    },\n    // ----- Custom methods -----\n    startDragging: function startDragging() {\n      this.collapse();\n      var additionalArgs = this.get('additionalArgs');\n      var item = this.get('item');\n      var index = this.get('index');\n      var items = this.get('items');\n      var group = this.get('group');\n      var dragSort = this.get('dragSort');\n      var isHorizontal = this.get('isHorizontal');\n      dragSort.startDragging({\n        additionalArgs: additionalArgs,\n        item: item,\n        index: index,\n        items: items,\n        group: group,\n        isHorizontal: isHorizontal\n      });\n    },\n    endDragging: function endDragging() {\n      this.restore();\n      var action = this.get('dragEndAction');\n      var dragSort = this.get('dragSort');\n      dragSort.endDragging({\n        action: action\n      });\n    },\n    draggingOver: function draggingOver(event) {\n      var sourceOnly = this.get('sourceOnly');\n      if (sourceOnly) {\n        event.preventDefault();\n        return;\n      }\n      var group = this.get('group');\n      var index = this.get('index');\n      var items = this.get('items');\n      var element = this.get('element');\n      var isHorizontal = this.get('dragSort.isHorizontal');\n      var isRtl = this.get('isRtl') && isHorizontal;\n      var isPlaceholderBefore = this.get('shouldShowPlaceholderBefore2');\n      var isPlaceholderAfter = this.get('shouldShowPlaceholderAfter2');\n      var dragSort = this.get('dragSort');\n      var placeholderModifier = isRtl ? -1 : 1;\n      var beforeAttribute = 'padding-top';\n      var afterAttribute = 'padding-bottom';\n      if (isHorizontal) {\n        beforeAttribute = isRtl ? 'padding-right' : 'padding-left';\n        afterAttribute = isRtl ? 'padding-left' : 'padding-right';\n      }\n      var placeholderCorrection = isPlaceholderBefore ? getComputedStyleInt(element, beforeAttribute) * placeholderModifier : isPlaceholderAfter ? -getComputedStyleInt(element, afterAttribute) * placeholderModifier : 0; // eslint-disable-line indent\n\n      var offset = isHorizontal ? element.getBoundingClientRect().left : element.getBoundingClientRect().top;\n      var itemSize = isHorizontal ? element.offsetWidth : element.offsetHeight;\n      var mousePosition = isHorizontal ? event.clientX : event.clientY;\n      var isDraggingUp = isRtl ? mousePosition - offset > (itemSize + placeholderCorrection) / 2 : mousePosition - offset < (itemSize + placeholderCorrection) / 2;\n      dragSort.draggingOver({\n        group: group,\n        index: index,\n        items: items,\n        isDraggingUp: isDraggingUp\n      });\n    },\n    collapse: function collapse() {\n      var _this = this;\n      // The delay is necessary for HTML classes to update with a delay.\n      // Otherwise, dragging is finished immediately.\n      (0, _runloop.next)(function () {\n        if (_this.get('isDestroying') || _this.get('isDestroyed')) return;\n        _this.set('isDragged2', true);\n      });\n    },\n    restore: function restore() {\n      var _this2 = this;\n      // The delay is necessary for HTML class to update with a delay.\n      // Otherwise, dragging is finished immediately.\n      (0, _runloop.next)(function () {\n        if (_this2.get('isDestroying') || _this2.get('isDestroyed')) return;\n        _this2.set('isDragged2', false);\n      });\n    },\n    isHandleUsed: function isHandleUsed(target) {\n      var handle = this.get('handle');\n      var element = this.get('element');\n      if (!handle) return true;\n      var handleElement = element.querySelector(handle);\n      (true && !(!!handleElement) && (0, _debug.assert)('Handle not found', !!handleElement));\n      return handleElement === target || handleElement.contains(target);\n    },\n    // ----- Observers -----\n    setPlaceholderBefore: (0, _object.observer)('shouldShowPlaceholderBefore', function () {\n      var _this3 = this;\n      // The delay is necessary for HTML class to update with a delay.\n      // Otherwise, dragging is finished immediately.\n      (0, _runloop.next)(function () {\n        if (_this3.get('isDestroying') || _this3.get('isDestroyed')) return;\n        _this3.set('shouldShowPlaceholderBefore2', _this3.get('shouldShowPlaceholderBefore'));\n      });\n    }),\n    setPlaceholderAfter: (0, _object.observer)('shouldShowPlaceholderAfter', function () {\n      var _this4 = this;\n      // The delay is necessary for HTML class to update with a delay.\n      // Otherwise, dragging is finished immediately.\n      (0, _runloop.next)(function () {\n        if (_this4.get('isDestroying') || _this4.get('isDestroyed')) return;\n        _this4.set('shouldShowPlaceholderAfter2', _this4.get('shouldShowPlaceholderAfter'));\n      });\n    })\n  });\n});","define(\"ember-drag-sort/components/drag-sort-list\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@ember/object/computed\", \"@ember/object\", \"@ember/runloop\", \"@ember/array\", \"ember-drag-sort/templates/components/drag-sort-list\"], function (_exports, _component, _service, _computed, _object, _runloop, _array, _dragSortList) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // ----- Ember modules -----\n  // ----- Ember addons -----\n  // ----- Own modules -----\n  var _default = _exports.default = _component.default.extend({\n    // ----- Arguments -----\n    additionalArgs: undefined,\n    items: undefined,\n    group: undefined,\n    draggingEnabled: true,\n    childClass: '',\n    childTagName: 'div',\n    handle: null,\n    sourceOnly: false,\n    isHorizontal: false,\n    isRtl: false,\n    dragEndAction: undefined,\n    dragStartAction: undefined,\n    determineForeignPositionAction: undefined,\n    // ----- Services -----\n    dragSort: (0, _service.inject)(),\n    // ----- Overridden properties -----\n    layout: _dragSortList.default,\n    classNameBindings: [':dragSortList', 'draggingEnabled:-draggingEnabled', 'isHorizontal:-horizontal', 'isVertical:-vertical', 'isRtl:-rtl', 'isDragging:-isDragging', 'isDraggingOver:-isDraggingOver', 'isExpanded2:-isExpanded', 'isEmpty:-isEmpty', 'sourceOnly:-sourceOnlyList'],\n    // ----- Static properties -----\n\n    // ----- Aliases -----\n    sourceList: (0, _computed.reads)('dragSort.sourceList'),\n    targetList: (0, _computed.reads)('dragSort.targetList'),\n    sourceIndex: (0, _computed.reads)('dragSort.sourceIndex'),\n    draggedItem: (0, _computed.reads)('dragSort.draggedItem'),\n    lastDragEnteredList: (0, _computed.reads)('dragSort.lastDragEnteredList'),\n    isVertical: (0, _computed.not)('isHorizontal'),\n    // ----- Computed properties -----\n    isDragging: (0, _object.computed)('dragSort.{isDragging,group}', 'group', function () {\n      var isDragging = this.get('dragSort.isDragging');\n      var group = this.get('group');\n      var groupFromService = this.get('dragSort.group');\n      return isDragging && group === groupFromService;\n    }),\n    isDraggingOver: (0, _object.computed)('isDragging', 'items', 'targetList', function () {\n      var isDragging = this.get('isDragging');\n      var items = this.get('items');\n      var targetList = this.get('targetList');\n      return isDragging && items === targetList;\n    }),\n    isExpanded: (0, _object.computed)('isDragging', 'isEmpty', 'isOnlyElementDragged', function () {\n      var isDragging = this.get('isDragging');\n      var isEmpty = this.get('isEmpty');\n      var isOnlyElementDragged = this.get('isOnlyElementDragged');\n      return isDragging && (isEmpty || isOnlyElementDragged);\n    }),\n    isExpanded2: (0, _computed.reads)('isExpanded'),\n    isEmpty: (0, _object.computed)('items.[]', function () {\n      var count = this.get('items.length');\n      return !count;\n    }),\n    isOnlyElementDragged: (0, _object.computed)('items.length', 'items', 'sourceList', 'sourceIndex', function () {\n      var count = this.get('items.length');\n      var items = this.get('items');\n      var sourceList = this.get('sourceList');\n      var sourceIndex = this.get('sourceIndex');\n      return count === 1 && items === sourceList && !sourceIndex;\n    }),\n    // ----- Overridden methods -----\n    dragEnter: function dragEnter(event) {\n      // Ignore irrelevant drags\n      if (!this.get('dragSort.isDragging')) return;\n\n      // Ignore irrelevant groups\n      var group = this.get('group');\n      var activeGroup = this.get('dragSort.group');\n      if (group !== activeGroup) return;\n      event.stopPropagation();\n\n      // Ignore duplicate events (explanation: https://github.com/lolmaus/jquery.dragbetter#what-this-is-all-about )\n      var items = this.get('items');\n      var lastDragEnteredList = this.get('lastDragEnteredList');\n      if (items === lastDragEnteredList) return;\n      this.dragEntering(event);\n      if (this.get('determineForeignPositionAction')) {\n        this.forceDraggingOver();\n      }\n    },\n    dragOver: function dragOver(event) {\n      // This event is only used for placing the dragged element into the end of a horizontal list\n      if (this.get('isVertical')) {\n        return;\n      }\n\n      // Ignore irrelevant drags\n      if (!this.get('dragSort.isDragging') || this.get('determineForeignPositionAction')) return;\n      var group = this.get('group');\n      var activeGroup = this.get('dragSort.group');\n      if (group !== activeGroup) return;\n      event.stopPropagation();\n      this.isDraggingOverHorizontal(event);\n    },\n    // ----- Custom methods -----\n    dragEntering: function dragEntering(event) {\n      var group = this.get('group');\n      var items = this.get('items');\n      var dragSort = this.get('dragSort');\n      var isHorizontal = this.get('isHorizontal');\n      var targetArgs = this.get('additionalArgs');\n      var targetIndex = 0;\n      if (isHorizontal) {\n        targetIndex = this.getClosestHorizontalIndex(event);\n        dragSort.set('isDraggingUp', false);\n      }\n      dragSort.dragEntering({\n        group: group,\n        items: items,\n        isHorizontal: isHorizontal,\n        targetArgs: targetArgs,\n        targetIndex: targetIndex\n      });\n    },\n    getClosestHorizontalIndex: function getClosestHorizontalIndex(event) {\n      // Calculate which item is closest and make that the target\n      var itemsNodeList = this.get('element').querySelectorAll('.dragSortItem');\n      var draggableItems = (0, _array.A)(Array.prototype.slice.call(itemsNodeList));\n      var positions = (0, _array.A)(draggableItems.map(function (draggableItem) {\n        return draggableItem.getBoundingClientRect();\n      }));\n      var rows = positions.uniqBy('top').mapBy('top').sort();\n      var currentRowPosition = rows.filter(function (row) {\n        return row < event.clientY;\n      }).pop();\n      var closestItem = positions.filterBy('top', currentRowPosition).pop();\n      return closestItem ? positions.indexOf(closestItem) : 0;\n    },\n    forceDraggingOver: function forceDraggingOver() {\n      var determineForeignPositionAction = this.get('determineForeignPositionAction');\n      var group = this.get('group');\n      var items = this.get('items');\n      var itemsLength = (0, _object.get)(items, 'length');\n      var draggedItem = this.get('draggedItem');\n      var sourceList = this.get('sourceList');\n      var dragSort = this.get('dragSort');\n      var isDraggingUp = true;\n      var index = items === sourceList ? items.indexOf(draggedItem) + 1 : determineForeignPositionAction({\n        draggedItem: draggedItem,\n        items: items\n      });\n      if (index >= itemsLength) {\n        index = itemsLength - 1;\n        isDraggingUp = false;\n      }\n      dragSort.draggingOver({\n        group: group,\n        index: index,\n        items: items,\n        isDraggingUp: isDraggingUp\n      });\n    },\n    isDraggingOverHorizontal: function isDraggingOverHorizontal(event) {\n      var dragSort = this.get('dragSort');\n      var group = this.get('group');\n      var items = this.get('items');\n      var index = this.getClosestHorizontalIndex(event);\n      var isDraggingUp = false;\n      dragSort.draggingOver({\n        group: group,\n        index: index,\n        items: items,\n        isDraggingUp: isDraggingUp\n      });\n    },\n    // ----- Observers -----\n    setIsExpanded2: (0, _object.observer)('isExpanded', function () {\n      var _this = this;\n      // The delay is necessary for HTML class to update with a delay.\n      // Otherwise, dragging is finished immediately.\n      (0, _runloop.next)(function () {\n        if (_this.get('isDestroying') || _this.get('isDestroyed')) return;\n        _this.set('isExpanded2', _this.get('isExpanded'));\n      });\n    })\n  });\n});","define(\"ember-drag-sort/services/drag-sort\", [\"exports\", \"@ember/service\", \"@ember/object/evented\", \"@ember/runloop\"], function (_exports, _service, _evented, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // ----- Ember modules -----\n  var _default = _exports.default = _service.default.extend(_evented.default, {\n    // ----- Static properties -----\n    isDragging: false,\n    isDraggingUp: null,\n    draggedItem: null,\n    group: null,\n    sourceList: null,\n    targetList: null,\n    sourceIndex: null,\n    targetIndex: null,\n    lastDragEnteredList: null,\n    isHorizontal: false,\n    // ----- Custom methods -----\n    startDragging: function startDragging(_ref) {\n      var _this = this;\n      var additionalArgs = _ref.additionalArgs,\n        item = _ref.item,\n        index = _ref.index,\n        items = _ref.items,\n        group = _ref.group,\n        isHorizontal = _ref.isHorizontal;\n      this.setProperties({\n        isDragging: true,\n        isDraggingUp: false,\n        draggedItem: item,\n        group: group,\n        isHorizontal: isHorizontal,\n        sourceArgs: additionalArgs,\n        sourceList: items,\n        targetArgs: additionalArgs,\n        targetList: items,\n        sourceIndex: index,\n        targetIndex: index\n      });\n      if (items.length > 1) {\n        if (index === 0) {\n          this.set('targetIndex', index + 1);\n          this.set('isDraggingUp', true);\n        } else {\n          this.set('targetIndex', index - 1);\n        }\n      }\n      (0, _runloop.next)(function () {\n        _this.trigger('start', {\n          group: group,\n          draggedItem: item,\n          sourceList: items,\n          sourceIndex: index\n        });\n      });\n    },\n    draggingOver: function draggingOver(_ref2) {\n      var _this2 = this;\n      var group = _ref2.group,\n        index = _ref2.index,\n        items = _ref2.items,\n        isDraggingUp = _ref2.isDraggingUp;\n      // Ignore hovers over irrelevant groups\n      if (group !== this.get('group')) return;\n\n      // Ignore hovers over irrelevant lists\n      if (items !== this.get('targetList')) return;\n      if (index !== this.get('targetIndex')) {\n        (0, _runloop.next)(function () {\n          _this2.trigger('sort', {\n            group: group,\n            sourceArgs: _this2.get('sourceArgs'),\n            sourceList: _this2.get('sourceList'),\n            sourceIndex: _this2.get('sourceIndex'),\n            draggedItem: _this2.get('draggedItem'),\n            targetArgs: _this2.get('targetArgs'),\n            targetList: _this2.get('targetList'),\n            oldTargetIndex: _this2.get('targetIndex'),\n            newTargetIndex: index\n          });\n        });\n      }\n\n      // Remember current index and direction\n      this.setProperties({\n        targetIndex: index,\n        isDraggingUp: isDraggingUp\n      });\n    },\n    dragEntering: function dragEntering(_ref3) {\n      var _this3 = this;\n      var group = _ref3.group,\n        items = _ref3.items,\n        isHorizontal = _ref3.isHorizontal,\n        targetArgs = _ref3.targetArgs,\n        _ref3$targetIndex = _ref3.targetIndex,\n        targetIndex = _ref3$targetIndex === void 0 ? 0 : _ref3$targetIndex;\n      // Ignore entering irrelevant groups\n      if (group !== this.get('group')) return;\n\n      // Reset index when entering a new list\n      if (items !== this.get('targetList')) {\n        (0, _runloop.next)(function () {\n          _this3.trigger('move', {\n            group: group,\n            sourceArgs: _this3.get('sourceArgs'),\n            sourceList: _this3.get('sourceList'),\n            sourceIndex: _this3.get('sourceIndex'),\n            draggedItem: _this3.get('draggedItem'),\n            oldTargetList: _this3.get('targetList'),\n            newTargetList: items,\n            targetArgs: targetArgs,\n            targetIndex: targetIndex\n          });\n        });\n        this.set('targetArgs', targetArgs);\n        this.set('targetIndex', targetIndex);\n      }\n\n      // Remember entering a new list\n      this.setProperties({\n        targetList: items,\n        lastDragEnteredList: items,\n        isHorizontal: isHorizontal\n      });\n    },\n    endDragging: function endDragging(_ref4) {\n      var _this4 = this;\n      var action = _ref4.action;\n      var sourceArgs = this.get('sourceArgs');\n      var sourceList = this.get('sourceList');\n      var sourceIndex = this.get('sourceIndex');\n      var targetArgs = this.get('targetArgs');\n      var targetList = this.get('targetList');\n      var targetIndex = this.get('targetIndex');\n      var isDraggingUp = this.get('isDraggingUp');\n      var group = this.get('group');\n      var draggedItem = this.get('draggedItem');\n      if (sourceList !== targetList || sourceIndex !== targetIndex) {\n        // Account for dragged item shifting indexes by one\n        if (sourceList === targetList && targetIndex > sourceIndex) targetIndex--;\n\n        // Account for dragging down\n        if (\n        // Dragging down\n        !isDraggingUp\n\n        // Target index is not after the last item\n        && targetIndex < targetList.get('length')\n\n        // The only element in target list is not the one dragged\n        && !(targetList.get('length') === 1 && targetList.get('firstObject') === draggedItem)) targetIndex++;\n        if ((sourceList !== targetList || sourceIndex !== targetIndex) && typeof action === 'function') {\n          (0, _runloop.next)(function () {\n            action({\n              group: group,\n              draggedItem: draggedItem,\n              sourceArgs: sourceArgs,\n              sourceList: sourceList,\n              sourceIndex: sourceIndex,\n              targetArgs: targetArgs,\n              targetList: targetList,\n              targetIndex: targetIndex\n            });\n          });\n        }\n      }\n      this._reset();\n      (0, _runloop.next)(function () {\n        _this4.trigger('end', {\n          group: group,\n          draggedItem: draggedItem,\n          sourceArgs: sourceArgs,\n          sourceList: sourceList,\n          sourceIndex: sourceIndex,\n          targetArgs: targetArgs,\n          targetList: targetList,\n          targetIndex: targetIndex\n        });\n      });\n    },\n    _reset: function _reset() {\n      this.setProperties({\n        isDragging: false,\n        isDraggingUp: null,\n        draggedItem: null,\n        group: null,\n        sourceArgs: null,\n        sourceList: null,\n        targetArgs: null,\n        targetList: null,\n        sourceIndex: null,\n        targetIndex: null,\n        lastDragEnteredList: null\n      });\n    }\n  });\n});","define(\"ember-drag-sort/templates/components/drag-sort-item\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  \n  */\n  {\n    \"id\": \"jgCDu+2M\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-drag-sort/templates/components/drag-sort-item.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-drag-sort/templates/components/drag-sort-list\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.items as |item index|}}\n    <DragSortItem\n      @additionalArgs                 = {{this.additionalArgs}}\n      @item                           = {{item}}\n      @index                          = {{index}}\n      @items                          = {{this.items}}\n      @group                          = {{this.group}}\n      @handle                         = {{this.handle}}\n      @tagName                        = {{this.childTagName}}\n      @isHorizontal                   = {{this.isHorizontal}}\n      @isRtl                          = {{this.isRtl}}\n      @draggingEnabled                = {{this.draggingEnabled}}\n      @sourceOnly                     = {{this.sourceOnly}}\n  \n      @dragEndAction                  = {{this.dragEndAction}}\n      @dragStartAction                = {{this.dragStartAction}}\n      @determineForeignPositionAction = {{this.determineForeignPositionAction}}\n  \n      class = {{this.childClass}}\n    >\n      {{yield item index}}\n    </DragSortItem>\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"sj2McIAn\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"items\\\"]]],null]],null],null,[[[1,\\\"  \\\"],[8,[39,2],[[16,0,[30,0,[\\\"childClass\\\"]]]],[[\\\"@additionalArgs\\\",\\\"@item\\\",\\\"@index\\\",\\\"@items\\\",\\\"@group\\\",\\\"@handle\\\",\\\"@tagName\\\",\\\"@isHorizontal\\\",\\\"@isRtl\\\",\\\"@draggingEnabled\\\",\\\"@sourceOnly\\\",\\\"@dragEndAction\\\",\\\"@dragStartAction\\\",\\\"@determineForeignPositionAction\\\"],[[30,0,[\\\"additionalArgs\\\"]],[30,1],[30,2],[30,0,[\\\"items\\\"]],[30,0,[\\\"group\\\"]],[30,0,[\\\"handle\\\"]],[30,0,[\\\"childTagName\\\"]],[30,0,[\\\"isHorizontal\\\"]],[30,0,[\\\"isRtl\\\"]],[30,0,[\\\"draggingEnabled\\\"]],[30,0,[\\\"sourceOnly\\\"]],[30,0,[\\\"dragEndAction\\\"]],[30,0,[\\\"dragStartAction\\\"]],[30,0,[\\\"determineForeignPositionAction\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,3,[[30,1],[30,2]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1,2]],null]],[\\\"item\\\",\\\"index\\\",\\\"&default\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"drag-sort-item\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-drag-sort/templates/components/drag-sort-list.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-drag-sort/utils/trigger\", [\"exports\", \"@ember/debug\", \"@ember/test-helpers\"], function (_exports, _debug, _testHelpers) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = trigger;\n  _exports.move = move;\n  _exports.sort = sort;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  // // https://github.com/jgwhite/ember-sortable/blob/21d2c513f96796f9b1a56983d34cf501a1f169c2/tests/integration/components/sortable-group-test.js#L35-L40\n  // export function triggerEvent (elementOrSelector, eventName, params) {\n  //   run(() => {\n  //     const element =\n  //       (elementOrSelector instanceof Element)\n  //         ? elementOrSelector\n  //         : find(elementOrSelector)\n\n  //     if (typeof params === 'function') params = params(element)\n\n  //     const event = new CustomEvent(eventName, params)\n\n  //     element.dispatchEvent(event)\n  //   })\n  // }\n\n  function trigger(elementOrSelector, eventName, isDraggingUp) {\n    var element = elementOrSelector instanceof Element ? elementOrSelector : find(elementOrSelector);\n    var params = {};\n    if (isDraggingUp != null) {\n      var modifier = isDraggingUp ? 0.25 : 0.75;\n      var inner = element.offsetHeight * modifier;\n      var outer = element.getBoundingClientRect().top;\n      params.clientY = inner + outer;\n    }\n    return (0, _testHelpers.triggerEvent)(elementOrSelector, eventName, params);\n  }\n  function sort(_x, _x2, _x3, _x4, _x5) {\n    return _sort.apply(this, arguments);\n  }\n  function _sort() {\n    _sort = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(sourceList, sourceIndex, targetIndex, above, handleSelector) {\n      var sourceItem, targetItem;\n      return _regeneratorRuntime().wrap(function _callee$(_context) {\n        while (1) switch (_context.prev = _context.next) {\n          case 0:\n            sourceItem = sourceList.children[sourceIndex];\n            (true && !(sourceItem) && (0, _debug.assert)(\"source item not exist at index \".concat(sourceIndex), sourceItem));\n            if (handleSelector) sourceItem = sourceItem.querySelector(handleSelector);\n            (true && !(!handleSelector || sourceItem) && (0, _debug.assert)('handle does not exist', !handleSelector || sourceItem));\n            targetItem = sourceList.children[targetIndex];\n            (true && !(targetItem) && (0, _debug.assert)(\"target item not exist at index \".concat(targetIndex), targetItem));\n            _context.next = 8;\n            return trigger(sourceItem, 'dragstart');\n          case 8:\n            _context.next = 10;\n            return trigger(targetItem, 'dragover', above);\n          case 10:\n            _context.next = 12;\n            return trigger(sourceItem, 'dragend');\n          case 12:\n            return _context.abrupt(\"return\", (0, _testHelpers.settled)());\n          case 13:\n          case \"end\":\n            return _context.stop();\n        }\n      }, _callee);\n    }));\n    return _sort.apply(this, arguments);\n  }\n  function move(_x6, _x7, _x8, _x9, _x10, _x11) {\n    return _move.apply(this, arguments);\n  }\n  function _move() {\n    _move = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(sourceList, sourceIndex, targetList, targetIndex, above, handleSelector) {\n      var sourceItem, targetListLength, targetItem;\n      return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n        while (1) switch (_context2.prev = _context2.next) {\n          case 0:\n            sourceItem = sourceList.children[sourceIndex];\n            (true && !(sourceItem) && (0, _debug.assert)(\"source item not exist at index \".concat(sourceIndex), sourceItem));\n            if (handleSelector) sourceItem = sourceItem.querySelector(handleSelector);\n            (true && !(!handleSelector || sourceItem) && (0, _debug.assert)('handle does not exist', !handleSelector || sourceItem));\n            targetListLength = targetList.childElementCount;\n            if (!targetListLength) {\n              _context2.next = 19;\n              break;\n            }\n            if (targetIndex == null) {\n              targetIndex = targetListLength - 1;\n              above = false;\n            }\n            targetItem = targetList.children[targetIndex];\n            (true && !(targetItem) && (0, _debug.assert)(\"target item not exist at index \".concat(targetIndex), targetItem));\n            _context2.next = 11;\n            return trigger(sourceItem, 'dragstart');\n          case 11:\n            _context2.next = 13;\n            return trigger(targetList, 'dragenter');\n          case 13:\n            _context2.next = 15;\n            return trigger(targetItem, 'dragover', above);\n          case 15:\n            _context2.next = 17;\n            return trigger(sourceItem, 'dragend');\n          case 17:\n            _context2.next = 26;\n            break;\n          case 19:\n            (true && !(!targetIndex) && (0, _debug.assert)(\"target list is empty, the only available target index is 0, but target index \".concat(targetIndex, \" was provided\"), !targetIndex));\n            _context2.next = 22;\n            return trigger(sourceItem, 'dragstart');\n          case 22:\n            _context2.next = 24;\n            return trigger(targetList, 'dragenter');\n          case 24:\n            _context2.next = 26;\n            return trigger(sourceItem, 'dragend');\n          case 26:\n            return _context2.abrupt(\"return\", (0, _testHelpers.settled)());\n          case 27:\n          case \"end\":\n            return _context2.stop();\n        }\n      }, _callee2);\n    }));\n    return _move.apply(this, arguments);\n  }\n});","define(\"ember-fetch/errors\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isAbortError = isAbortError;\n  _exports.isBadRequestResponse = isBadRequestResponse;\n  _exports.isConflictResponse = isConflictResponse;\n  _exports.isForbiddenResponse = isForbiddenResponse;\n  _exports.isGoneResponse = isGoneResponse;\n  _exports.isInvalidResponse = isInvalidResponse;\n  _exports.isNotFoundResponse = isNotFoundResponse;\n  _exports.isServerErrorResponse = isServerErrorResponse;\n  _exports.isUnauthorizedResponse = isUnauthorizedResponse;\n  /**\n   * Checks if the given response represents an unauthorized request error\n   */\n  function isUnauthorizedResponse(response) {\n    return response.status === 401;\n  }\n\n  /**\n   * Checks if the given response represents a forbidden request error\n   */\n  function isForbiddenResponse(response) {\n    return response.status === 403;\n  }\n\n  /**\n   * Checks if the given response represents an invalid request error\n   */\n  function isInvalidResponse(response) {\n    return response.status === 422;\n  }\n\n  /**\n   * Checks if the given response represents a bad request error\n   */\n  function isBadRequestResponse(response) {\n    return response.status === 400;\n  }\n\n  /**\n   * Checks if the given response represents a \"not found\" error\n   */\n  function isNotFoundResponse(response) {\n    return response.status === 404;\n  }\n\n  /**\n   * Checks if the given response represents a \"gone\" error\n   */\n  function isGoneResponse(response) {\n    return response.status === 410;\n  }\n\n  /**\n   * Checks if the given error is an \"abort\" error\n   */\n  function isAbortError(error) {\n    return error.name == 'AbortError';\n  }\n\n  /**\n   * Checks if the given response represents a conflict error\n   */\n  function isConflictResponse(response) {\n    return response.status === 409;\n  }\n\n  /**\n   * Checks if the given response represents a server error\n   */\n  function isServerErrorResponse(response) {\n    return response.status >= 500 && response.status < 600;\n  }\n});","define(\"ember-fetch/types\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isPlainObject = isPlainObject;\n  function isPlainObject(obj) {\n    return Object.prototype.toString.call(obj) === '[object Object]';\n  }\n});","define(\"ember-fetch/utils/determine-body-promise\", [\"exports\", \"@ember/debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = determineBodyPromise;\n  /**\n   * Function that always attempts to parse the response as json, and if an error is thrown,\n   * returns `undefined` if the response is successful and has a status code of 204 (No Content),\n   * or 205 (Reset Content) or if the request method was 'HEAD', and the plain payload otherwise.\n   */\n  function determineBodyPromise(response, requestData) {\n    return response.text().then(function (payload) {\n      var ret = payload;\n      try {\n        ret = JSON.parse(payload);\n      } catch (error) {\n        if (!(error instanceof SyntaxError)) {\n          throw error;\n        }\n        var status = response.status;\n        if (response.ok && (status === 204 || status === 205 || requestData.method === 'HEAD')) {\n          ret = undefined;\n        } else {\n          (0, _debug.debug)(\"This response was unable to be parsed as json: \".concat(payload));\n        }\n      }\n      return ret;\n    });\n  }\n});","define(\"ember-fetch/utils/mung-options-for-fetch\", [\"exports\", \"@ember/polyfills\", \"ember-fetch/utils/serialize-query-params\", \"ember-fetch/types\"], function (_exports, _polyfills, _serializeQueryParams, _types) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = mungOptionsForFetch;\n  /**\n   * Helper function that translates the options passed to `jQuery.ajax` into a format that `fetch` expects.\n   */\n  function mungOptionsForFetch(options) {\n    var hash = (0, _polyfills.assign)({\n      credentials: 'same-origin'\n    }, options);\n\n    // Default to 'GET' in case `type` is not passed in (mimics jQuery.ajax).\n    hash.method = (hash.method || hash.type || 'GET').toUpperCase();\n    if (hash.data) {\n      // GET and HEAD requests can't have a `body`\n      if (hash.method === 'GET' || hash.method === 'HEAD') {\n        // If no options are passed, Ember Data sets `data` to an empty object, which we test for.\n        if (Object.keys(hash.data).length) {\n          // Test if there are already query params in the url (mimics jQuey.ajax).\n          var queryParamDelimiter = hash.url.indexOf('?') > -1 ? '&' : '?';\n          hash.url += \"\".concat(queryParamDelimiter).concat((0, _serializeQueryParams.serializeQueryParams)(hash.data));\n        }\n      } else {\n        // NOTE: a request's body cannot be a POJO, so we stringify it if it is.\n        // JSON.stringify removes keys with values of `undefined` (mimics jQuery.ajax).\n        // If the data is not a POJO (it's a String, FormData, etc), we just set it.\n        // If the data is a string, we assume it's a stringified object.\n        if ((0, _types.isPlainObject)(hash.data)) {\n          hash.body = JSON.stringify(hash.data);\n        } else {\n          hash.body = hash.data;\n        }\n      }\n    }\n    return hash;\n  }\n});","define(\"ember-fetch/utils/serialize-query-params\", [\"exports\", \"ember-fetch/types\"], function (_exports, _types) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.serializeQueryParams = serializeQueryParams;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  var RBRACKET = /\\[\\]$/;\n\n  /**\n   * Helper function that turns the data/body of a request into a query param string.\n   * This is directly copied from jQuery.param.\n   */\n  function serializeQueryParams(queryParamsObject) {\n    var s = [];\n    function buildParams(prefix, obj) {\n      var i, len, key;\n      if (prefix) {\n        if (Array.isArray(obj)) {\n          for (i = 0, len = obj.length; i < len; i++) {\n            if (RBRACKET.test(prefix)) {\n              add(s, prefix, obj[i]);\n            } else {\n              buildParams(prefix + '[' + (_typeof(obj[i]) === 'object' ? i : '') + ']', obj[i]);\n            }\n          }\n        } else if ((0, _types.isPlainObject)(obj)) {\n          for (key in obj) {\n            buildParams(prefix + '[' + key + ']', obj[key]);\n          }\n        } else {\n          add(s, prefix, obj);\n        }\n      } else if (Array.isArray(obj)) {\n        for (i = 0, len = obj.length; i < len; i++) {\n          add(s, obj[i].name, obj[i].value);\n        }\n      } else {\n        for (key in obj) {\n          buildParams(key, obj[key]);\n        }\n      }\n      return s;\n    }\n    return buildParams('', queryParamsObject).join('&').replace(/%20/g, '+');\n  }\n\n  /**\n   * Part of the `serializeQueryParams` helper function.\n   */\n  function add(s, k, v) {\n    // Strip out keys with undefined value and replace null values with\n    // empty strings (mimics jQuery.ajax)\n    if (v === undefined) {\n      return;\n    } else if (v === null) {\n      v = '';\n    }\n    v = typeof v === 'function' ? v() : v;\n    s[s.length] = \"\".concat(encodeURIComponent(k), \"=\").concat(encodeURIComponent(v));\n  }\n  var _default = _exports.default = serializeQueryParams;\n});","define(\"ember-froala-editor/components/froala-content\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"froala-editor/css/froala_style.min.css\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _froala_styleMin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"froala-editor/css/froala_style.min.css\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div ...attributes class=\"fr-view\">\n    {{@content}}\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"3AfIdk0A\",\n    \"block\": \"[[[11,0],[17,1],[24,0,\\\"fr-view\\\"],[12],[1,\\\"\\\\n  \\\"],[1,[30,2]],[1,\\\"\\\\n  \\\"],[18,3,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@content\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-froala-editor/components/froala-content.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"ember-froala-editor/components/froala-editor\", [\"exports\", \"@ember/component\", \"@ember/application\", \"@ember/debug\", \"@ember/object\", \"@ember/template\", \"@glimmer/component\", \"ember-froala-editor/helpers/froala-arg\", \"ember-froala-editor/helpers/froala-html\", \"froala-editor\", \"froala-editor/css/froala_editor.min.css\", \"@ember/template-factory\", \"@embroider/macros/runtime\"], function (_exports, _component, _application, _debug, _object, _template, _component2, _froalaArg, _froalaHtml, _froalaEditor, _froala_editorMin, _templateFactory, _runtime) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"FroalaEditor\", {\n    enumerable: true,\n    get: function get() {\n      return _froalaEditor.default;\n    }\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/application\",0,\"@ember/debug\",0,\"@ember/object\",0,\"@ember/template\",0,\"@embroider/macros\",0,\"@glimmer/component\",0,\"ember-froala-editor/helpers/froala-arg\",0,\"ember-froala-editor/helpers/froala-html\",0,\"froala-editor\",0,\"froala-editor/css/froala_editor.min.css\",0,\"@ember/template-factory\",2,[\"froala-editor/js/plugins/\",\"\"],[\"plugin\"],2,[\"froala-editor/css/plugins/\",\"\"],[\"_plugin\"],2,[\"froala-editor/js/third_party/\",\"\"],[\"_plugin2\"],2,[\"froala-editor/css/third_party/\",\"\"],[\"_plugin3\"],2,[\"froala-editor/js/languages/\",\"\"],[\"language\"],2,[\"froala-editor/css/themes/\",\"\"],[\"theme\"]eaimeta@70e063a35619d71f\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{!-- template-lint-disable no-at-ember-render-modifiers --}}\n  <div\n    ...attributes\n    {{did-insert this.createEditor this.optionsWithInitEvent}}\n    {{did-update this.updateEditorContent @content}}\n    {{did-update this.updateDisabledState @disabled}}\n    {{will-destroy this.destroyEditor}}\n  >\n    {{#if this.fastboot.isFastboot}}\n      {{@content}}\n    {{else}}\n      {{! template-lint-disable no-unbound }}\n      {{unbound @content}}\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"YdCAR9bb\",\n    \"block\": \"[[[11,0],[17,1],[4,[38,1],[[30,0,[\\\"createEditor\\\"]],[30,0,[\\\"optionsWithInitEvent\\\"]]],null],[4,[38,2],[[30,0,[\\\"updateEditorContent\\\"]],[30,2]],null],[4,[38,2],[[30,0,[\\\"updateDisabledState\\\"]],[30,3]],null],[4,[38,3],[[30,0,[\\\"destroyEditor\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"fastboot\\\",\\\"isFastboot\\\"]],[[[1,\\\"    \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[1,[28,[35,5],[[30,2]],null]],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"&attrs\\\",\\\"@content\\\",\\\"@disabled\\\"],false,[\\\"div\\\",\\\"did-insert\\\",\\\"did-update\\\",\\\"will-destroy\\\",\\\"if\\\",\\\"unbound\\\"]]\",\n    \"moduleName\": \"ember-froala-editor/components/froala-editor.hbs\",\n    \"isStrictMode\": false\n  });\n\n  // Import optional Froala Editor assets\n  // Note: Importing this way to minimize ember-auto-import from including\n  //       more assets than what might be needed into the build output\n  //       because `import()` and `importSync()` will include all files\n  //       beyond the static part of the path.\n  var config = (0, _runtime.config)(\"/opt/atlassian/pipelines/agent/build/node_modules/.pnpm/ember-froala-editor@4.4.0_ember-source@5.12.0_@glimmer+component@1.1.2_@babel+core@7.26_db70803d62be8245b5215fe1ee3e80e4/node_modules/ember-froala-editor\");\n  var _iterator = _createForOfIteratorHelper(config.plugins.js),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var plugin = _step.value;\n      emberAutoImportSync(\"froala-editor/js/plugins/${e}\", plugin);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  var _iterator2 = _createForOfIteratorHelper(config.plugins.css),\n    _step2;\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var _plugin = _step2.value;\n      emberAutoImportSync(\"froala-editor/css/plugins/${e}\", _plugin);\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n  var _iterator3 = _createForOfIteratorHelper(config.third_party.js),\n    _step3;\n  try {\n    for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n      var _plugin2 = _step3.value;\n      emberAutoImportSync(\"froala-editor/js/third_party/${e}\", _plugin2);\n    }\n  } catch (err) {\n    _iterator3.e(err);\n  } finally {\n    _iterator3.f();\n  }\n  var _iterator4 = _createForOfIteratorHelper(config.third_party.css),\n    _step4;\n  try {\n    for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n      var _plugin3 = _step4.value;\n      emberAutoImportSync(\"froala-editor/css/third_party/${e}\", _plugin3);\n    }\n  } catch (err) {\n    _iterator4.e(err);\n  } finally {\n    _iterator4.f();\n  }\n  var _iterator5 = _createForOfIteratorHelper(config.languages),\n    _step5;\n  try {\n    for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n      var language = _step5.value;\n      emberAutoImportSync(\"froala-editor/js/languages/${e}\", language);\n    }\n  } catch (err) {\n    _iterator5.e(err);\n  } finally {\n    _iterator5.f();\n  }\n  var _iterator6 = _createForOfIteratorHelper(config.themes),\n    _step6;\n  try {\n    for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n      var theme = _step6.value;\n      emberAutoImportSync(\"froala-editor/css/themes/${e}\", theme);\n    }\n\n    // Re-export FroalaEditor so those who extend the component\n    // can also access the FroalaEditor class at the same time\n  } catch (err) {\n    _iterator6.e(err);\n  } finally {\n    _iterator6.f();\n  }\n  var FroalaEditorComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function FroalaEditorComponent(owner, args) {\n      var _this;\n      _classCallCheck(this, FroalaEditorComponent);\n      _this = _callSuper(this, FroalaEditorComponent, [owner, args]);\n      _defineProperty(_this, \"options\", {});\n      _defineProperty(_this, \"editor\", null);\n      (true && !((0, _template.isHTMLSafe)(args.content) || args.content === null || typeof args.content === 'undefined') && (0, _debug.assert)('<FroalaEditor> @content argument must be a SafeString from htmlSafe()', (0, _template.isHTMLSafe)(args.content) || args.content === null || typeof args.content === 'undefined'));\n      (true && !(typeof args.update === 'function' || typeof args.update === 'undefined') && (0, _debug.assert)('<FroalaEditor> @update argument must be a function', typeof args.update === 'function' || typeof args.update === 'undefined'));\n      (true && !(typeof args.updateEvent === 'string' || typeof args.updateEvent === 'undefined') && (0, _debug.assert)('<FroalaEditor> @updateEvent argument must be a string', typeof args.updateEvent === 'string' || typeof args.updateEvent === 'undefined'));\n      (true && !(_typeof(args.options) === 'object' || typeof args.options === 'undefined') && (0, _debug.assert)('<FroalaEditor> @options argument must be an object', _typeof(args.options) === 'object' || typeof args.options === 'undefined'));\n      return _this;\n    }\n    _inherits(FroalaEditorComponent, _Component);\n    return _createClass(FroalaEditorComponent, [{\n      key: \"update\",\n      get: function get() {\n        return this.args.update;\n      }\n    }, {\n      key: \"updateEvent\",\n      get: function get() {\n        return this.args.updateEvent || 'contentChanged';\n      }\n    }, {\n      key: \"fastboot\",\n      get: function get() {\n        return (0, _application.getOwner)(this).lookup('service:fastboot');\n      }\n    }, {\n      key: \"propertyOptions\",\n      get: function get() {\n        var options = {};\n        for (var propertyName in this) {\n          if (Object.prototype.hasOwnProperty.call(_froalaEditor.default.DEFAULTS, propertyName)) {\n            options[propertyName] = this[propertyName];\n          }\n        }\n        return options;\n      }\n    }, {\n      key: \"argumentOptions\",\n      get: function get() {\n        var options = {};\n        for (var argumentName in this.args) {\n          if (Object.prototype.hasOwnProperty.call(_froalaEditor.default.DEFAULTS, argumentName)) {\n            options[argumentName] = this.args[argumentName];\n          }\n        }\n        return options;\n      }\n    }, {\n      key: \"propertyCallbacks\",\n      get: function get() {\n        var callbacks = {};\n\n        // Regex's used for replacing things in the name\n        var regexOnPrefix = /^on-/g;\n        var regexHyphens = /-/g;\n        var regexDots = /\\./g;\n\n        // Class methods are not available in a `for (name in this)` loop\n        var propertyNames = Object.getOwnPropertyNames(this.__proto__);\n        var _iterator7 = _createForOfIteratorHelper(propertyNames),\n          _step7;\n        try {\n          for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n            var propertyName = _step7.value;\n            // Only names that start with on- are callbacks\n            if (propertyName.indexOf('on-') !== 0) {\n              continue;\n            }\n            (true && !(typeof this[propertyName] === 'function') && (0, _debug.assert)(\"<FroalaEditor> \".concat(propertyName, \" event callback property must be a function\"), typeof this[propertyName] === 'function')); // Convert the name to what the event name would be\n            var eventName = propertyName;\n            eventName = eventName.replace(regexOnPrefix, '');\n            eventName = eventName.replace(regexHyphens, '.');\n\n            // Special use case for the 'popups.hide.[id]' event\n            // Ember usage would be '@on-popups-hide-id=(fn)'\n            // https://www.froala.com/wysiwyg-editor/docs/events#popups.show.[id]\n            if (eventName.indexOf('popups.hide.') === 0) {\n              var id = eventName.replace('popups.hide.', '');\n              id = id.replace(regexDots, '-'); // Convert back to hyphens\n              eventName = \"popups.hide.[\".concat(id, \"]\");\n            }\n\n            // Wrap the callback to pass the editor in as the first argument\n            callbacks[eventName] = this[propertyName];\n          }\n        } catch (err) {\n          _iterator7.e(err);\n        } finally {\n          _iterator7.f();\n        }\n        return callbacks;\n      }\n    }, {\n      key: \"argumentCallbacks\",\n      get: function get() {\n        var callbacks = {};\n\n        // Regex's used for replacing things in the name\n        var regexOnPrefix = /^on-/g;\n        var regexHyphens = /-/g;\n        var regexDots = /\\./g;\n        for (var argumentName in this.args) {\n          // Only names that start with on- are callbacks\n          if (argumentName.indexOf('on-') !== 0) {\n            continue;\n          }\n          (true && !(typeof this.args[argumentName] === 'function') && (0, _debug.assert)(\"<FroalaEditor> @\".concat(argumentName, \" event callback argument must be a function\"), typeof this.args[argumentName] === 'function')); // Convert the name to what the event name would be\n          var eventName = argumentName;\n          eventName = eventName.replace(regexOnPrefix, '');\n          eventName = eventName.replace(regexHyphens, '.');\n\n          // Special use case for the 'popups.hide.[id]' event\n          // Ember usage would be '@on-popups-hide-id=(fn)'\n          // https://www.froala.com/wysiwyg-editor/docs/events#popups.show.[id]\n          if (eventName.indexOf('popups.hide.') === 0) {\n            var id = eventName.replace('popups.hide.', '');\n            id = id.replace(regexDots, '-'); // Convert back to hyphens\n            eventName = \"popups.hide.[\".concat(id, \"]\");\n          }\n\n          // Wrap the callback to pass the editor in as the first argument\n          callbacks[eventName] = this.args[argumentName];\n        }\n        return callbacks;\n      }\n    }, {\n      key: \"combinedOptions\",\n      get: function get() {\n        var config = (0, _application.getOwner)(this).resolveRegistration('config:environment');\n        return Object.assign({}, config['ember-froala-editor'], this.options, this.propertyOptions, this.args.options, this.argumentOptions);\n      }\n    }, {\n      key: \"combinedCallbacks\",\n      get: function get() {\n        return Object.assign({}, this.propertyCallbacks, this.argumentCallbacks);\n      }\n    }, {\n      key: \"optionsWithInitEvent\",\n      get: function get() {\n        var options = this.combinedOptions;\n\n        // Determine which event will be called first\n        var initEventName = options.initOnClick ? 'initializationDelayed' : 'initialized';\n\n        // Ensure the events object exists\n        options.events = options.events || {};\n\n        // Grab the current init callback before overriding\n        var initEventCallback = options.events[initEventName];\n\n        // Add the created callback to the proper initialization event\n        options.events[initEventName] = (0, _froalaArg.froalaArg)(this.setupEditor, initEventName, initEventCallback);\n        return options;\n      }\n    }, {\n      key: \"createEditor\",\n      value: function createEditor(element, _ref) {\n        var _ref2 = _slicedToArray(_ref, 1),\n          options = _ref2[0];\n        new _froalaEditor.default(element, options);\n      }\n    }, {\n      key: \"setupEditor\",\n      value: function setupEditor(editor, initEventName, initEventCallback) {\n        // Add a reference to each other so they accessible from either\n        editor.component = this;\n        this.editor = editor;\n\n        // Handle the initial @disabled state\n        // Note: Run before the event callbacks are added,\n        //       so the @on-edit-off callback isn't triggered\n        if (this.args.disabled) {\n          this.editor.edit.off();\n        }\n\n        // Call the combinedCallbacks getter once\n        var callbacks = this.combinedCallbacks;\n\n        // Add event handler callbacks, passing in the editor as the first arg\n        for (var eventName in callbacks) {\n          this.editor.events.on(eventName, (0, _froalaArg.froalaArg)(callbacks[eventName]));\n        }\n\n        // Add update callback when a setter is passed in\n        if (this.update) {\n          this.editor.events.on(this.updateEvent, (0, _froalaHtml.froalaHtml)(this.update), true); // true = run first\n        }\n\n        // Add destroyed callback so the editor can be unreferenced\n        this.editor.events.on('destroy', (0, _froalaArg.froalaArg)(this.teardownEditor), false); // false = run last\n\n        // Since we overrode this event callback,\n        // call the passed in callback(s) if there are any\n        for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n          args[_key - 3] = arguments[_key];\n        }\n        if (typeof initEventCallback === 'function') {\n          // Mimic default behavior by binding the editor instance to the called context\n          initEventCallback.bind(editor).apply(void 0, args);\n        }\n        if (typeof callbacks[initEventName] === 'function') {\n          // Mimic a typical on-* callback by passing in the editor as the first arg\n          callbacks[initEventName].apply(callbacks, [editor].concat(args));\n        }\n      }\n    }, {\n      key: \"updateEditorContent\",\n      value: function updateEditorContent(element, _ref3) {\n        var _ref4 = _slicedToArray(_ref3, 1),\n          content = _ref4[0];\n        (true && !((0, _template.isHTMLSafe)(content) || content === null || typeof content === 'undefined') && (0, _debug.assert)('<FroalaEditor> updated @content argument must be a SafeString from htmlSafe()', (0, _template.isHTMLSafe)(content) || content === null || typeof content === 'undefined')); // content should be undefined or a SafeString\n        var html = (0, _template.isHTMLSafe)(content) ? content.toString() : '';\n\n        // When the editor is available,\n        // updates should go through `editor.html.set()`\n        if (this.editor) {\n          // Avoid recursive loop, check for changed content\n          if (this.editor.html.get() !== html) {\n            this.editor.html.set(html);\n          }\n\n          // When the editor is NOT available,\n          // updates should go through the DOM (directly)\n        } else {\n          // Avoid recursive loop, check for changed content\n          if (element.innerHTML !== html) {\n            element.innerHTML = html;\n          }\n        }\n      }\n    }, {\n      key: \"updateDisabledState\",\n      value: function updateDisabledState(element, _ref5) {\n        var _ref6 = _slicedToArray(_ref5, 1),\n          disabled = _ref6[0];\n        // Ignore when the editor is not available\n        if (!this.editor) {\n          return;\n        }\n\n        // Change the editor to the appropriate state\n        if (disabled && !this.editor.edit.isDisabled()) {\n          this.editor.edit.off();\n        } else if (!disabled && this.editor.edit.isDisabled()) {\n          this.editor.edit.on();\n        }\n      }\n    }, {\n      key: \"destroyEditor\",\n      value: function destroyEditor(/*element*/\n      ) {\n        // Guard against someone calling editor.destroy()\n        // from an event callback, which teardownEditor()\n        // would still trigger and unreference the editor\n        // before this callback had a chance to run\n        if (this.editor) {\n          this.editor.destroy();\n        }\n      }\n    }, {\n      key: \"teardownEditor\",\n      value: function teardownEditor(editor /*, ...args*/) {\n        delete editor.component;\n        this.editor = null;\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"createEditor\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"createEditor\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setupEditor\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setupEditor\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateEditorContent\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateEditorContent\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateDisabledState\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateDisabledState\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"destroyEditor\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"destroyEditor\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"teardownEditor\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"teardownEditor\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FroalaEditorComponent);\n});","define(\"ember-froala-editor/helpers/froala-arg\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\"], function (_exports, _helper, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.froalaArg = froalaArg;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/debug\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function froalaArg(callback) {\n    for (var _len = arguments.length, partial = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      partial[_key - 1] = arguments[_key];\n    }\n    (true && !(typeof callback === 'function') && (0, _debug.assert)('{{froala-arg}} helper requires a function as the first parameter', typeof callback === 'function'));\n    var wrapper = function froalaArgClosure() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      return callback.apply(void 0, [this].concat(partial, args));\n    };\n    (true && !(wrapper.toString() !== callback.toString()) && (0, _debug.assert)('{{froala-arg}} helper should not be call twice on the same callback', wrapper.toString() !== callback.toString()));\n    return wrapper;\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _toArray(_ref),\n      callback = _ref2[0],\n      partial = _ref2.slice(1);\n    return froalaArg.apply(void 0, [callback].concat(_toConsumableArray(partial)));\n  });\n});","define(\"ember-froala-editor/helpers/froala-html\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\", \"@ember/template\"], function (_exports, _helper, _debug, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.froalaHtml = froalaHtml;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/debug\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function froalaHtml(callback) {\n    var returnSafeString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    for (var _len = arguments.length, partial = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      partial[_key - 2] = arguments[_key];\n    }\n    (true && !(typeof callback === 'function') && (0, _debug.assert)('{{froala-html}} helper requires a function as the first parameter', typeof callback === 'function'));\n    return function froalaHtmlClosure() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      // Editor might be passed in as the first arg if also wrapped with {{froala-arg}}\n      // Note: Shift editor off args so it isn't \"double passed\" when args are spread on the callback\n      var editor = _typeof(args[0]) === 'object' && args[0].component ? args.shift() : this;\n      (true && !(editor.html && typeof editor.html.get === 'function') && (0, _debug.assert)('{{froala-html}} helper cannot determine the editor instance', editor.html && typeof editor.html.get === 'function')); // Get the html content from the editor, making it a SafeString if needed\n      var html = returnSafeString ? (0, _template.htmlSafe)(editor.html.get()) : editor.html.get();\n\n      // Call the setter, passing in the html first then all others\n      return callback.apply(void 0, [html, editor].concat(partial, args));\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref, _ref2) {\n    var _ref3 = _toArray(_ref),\n      callback = _ref3[0],\n      partial = _ref3.slice(1);\n    var _ref2$returnSafeStrin = _ref2.returnSafeString,\n      returnSafeString = _ref2$returnSafeStrin === void 0 ? true : _ref2$returnSafeStrin;\n    return froalaHtml.apply(void 0, [callback, returnSafeString].concat(_toConsumableArray(partial)));\n  });\n});","define(\"ember-froala-editor/helpers/froala-method\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\", \"@ember/object\"], function (_exports, _helper, _debug, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.froalaMethod = froalaMethod;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/debug\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function froalaMethod(methodName) {\n    var helperHash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    for (var _len = arguments.length, helperParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      helperParams[_key - 2] = arguments[_key];\n    }\n    (true && !(typeof methodName === 'string' && methodName.length > 0) && (0, _debug.assert)('{{froala-method}} helper needs a string method path as the first argument', typeof methodName === 'string' && methodName.length > 0)); // Create a closure to pass back as the \"action\" to be triggered\n    return function froalaMethodClosure() {\n      for (var _len2 = arguments.length, closureParams = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        closureParams[_key2] = arguments[_key2];\n      }\n      // Editor might be passed in as the first arg if also wrapped with {{froala-arg}}\n      var editor = _typeof(closureParams[0]) === 'object' && closureParams[0].component ? closureParams[0] : this;\n      (true && !(_typeof(editor) === 'object' && editor.component) && (0, _debug.assert)('{{froala-method}} helper cannot determine the editor instance', _typeof(editor) === 'object' && editor.component)); // Get the actual method using ember.get() so that nested paths work here\n      var method = (0, _object.get)(editor, methodName);\n      (true && !(typeof method === 'function') && (0, _debug.assert)('{{froala-method}} helper needs a valid method path as the first argument', typeof method === 'function')); // Copy helperParams to pass into the method\n      var methodParams = [].concat(helperParams);\n\n      // The helper hash can be used to \"replace\" the param\n      // values with params received from the event...\n      for (var propName in helperHash) {\n        // Determine the positions within each params arrays\n        // which should be used for replacing. parseInt() in\n        // case the value is a string integer, ex: \"2\".\n        var helperPos = helperParams.indexOf(propName);\n        var eventPos = parseInt(helperHash[propName]);\n\n        // If the parameter \"name\" was found in the helperParams,\n        // and the relative arguments contains something at that position,\n        // then go ahead and replace the param value...\n        if (helperPos !== -1 && closureParams.length >= eventPos) {\n          methodParams[helperPos] = closureParams[eventPos - 1];\n        }\n      }\n\n      // Trigger the Froala Editor method\n      return method.apply(void 0, _toConsumableArray(methodParams));\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref, hash) {\n    var _ref2 = _toArray(_ref),\n      methodName = _ref2[0],\n      partial = _ref2.slice(1);\n    return froalaMethod.apply(void 0, [methodName, hash].concat(_toConsumableArray(partial)));\n  });\n});","define(\"ember-froala-editor/helpers/html-safe\", [\"exports\", \"@ember/component/helper\", \"@ember/template\"], function (_exports, _helper, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.htmlSafe = htmlSafe;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function htmlSafe(context) {\n    for (var _len = arguments.length, partial = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      partial[_key - 1] = arguments[_key];\n    }\n    // @on-eventName={{html-safe (fn (mut this.content))}}\n    if (typeof context === 'function') {\n      return function toStringClosure(content) {\n        var contentSafeString = (0, _template.isHTMLSafe)(content) ? content : (0, _template.htmlSafe)(content);\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        return context.apply(void 0, [contentSafeString].concat(partial, args));\n      };\n\n      // @content={{html-safe this.content}}\n    } else {\n      return (0, _template.isHTMLSafe)(context) ? context : (0, _template.htmlSafe)(context);\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _toArray(_ref),\n      context = _ref2[0],\n      partial = _ref2.slice(1);\n    return htmlSafe.apply(void 0, [context].concat(_toConsumableArray(partial)));\n  });\n});","define(\"ember-froala-editor/helpers/merged-hash\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.mergedHash = mergedHash;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function mergedHash() {\n    for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n      objects[_key] = arguments[_key];\n    }\n    // Assumes all params are objects\n    return Object.assign.apply(Object, [{}].concat(objects));\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (params, hash) {\n    return mergedHash.apply(void 0, _toConsumableArray(params).concat([hash]));\n  });\n});","define(\"ember-froala-editor/helpers/to-string\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.toString = toString;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function toString(context) {\n    for (var _len = arguments.length, partial = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      partial[_key - 1] = arguments[_key];\n    }\n    // @update={{to-string (fn (mut this.content))}}\n    if (typeof context === 'function') {\n      return function toStringClosure(content) {\n        var contentString = content && typeof content.toString === 'function' ? content.toString() : content;\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        return context.apply(void 0, [contentString].concat(partial, args));\n      };\n\n      // {{to-string this.content}}\n    } else {\n      return context && typeof context.toString === 'function' ? context.toString() : context;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(function (_ref) {\n    var _ref2 = _toArray(_ref),\n      context = _ref2[0],\n      partial = _ref2.slice(1);\n    return toString.apply(void 0, [context].concat(_toConsumableArray(partial)));\n  });\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-gesture-modifiers/modifiers/did-pan\", [\"exports\", \"ember-modifier\", \"ember-gesture-modifiers/utils/parse-touch-data\", \"@ember/object\"], function (_exports, _emberModifier, _parseTouchData, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var _fn = function _fn() {};\n  var DidPanModifier = _exports.default = (_class = /*#__PURE__*/function (_Modifier) {\n    function DidPanModifier() {\n      var _this;\n      _classCallCheck(this, DidPanModifier);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, DidPanModifier, [].concat(args));\n      _defineProperty(_this, \"threshold\", void 0);\n      _defineProperty(_this, \"axis\", void 0);\n      _defineProperty(_this, \"capture\", void 0);\n      _defineProperty(_this, \"preventScroll\", void 0);\n      _defineProperty(_this, \"pointerTypes\", void 0);\n      _defineProperty(_this, \"currentTouches\", new Map());\n      _defineProperty(_this, \"dragging\", false);\n      return _this;\n    }\n    _inherits(DidPanModifier, _Modifier);\n    return _createClass(DidPanModifier, [{\n      key: \"addEventListeners\",\n      value: function addEventListeners() {\n        // By default, CSS rule `touch-action` is `auto`, enabling panning on both directions.\n        // We override panning on a given direction, so we need to disable default browser behavior\n        // on that diretion, but we need to keep the other direction pannable.\n        // Thus, we set `touch-action` to `pan-y` when we pan horizontally and vice versa.\n        if (this.axis === 'horizontal') {\n          this.element.style.touchAction = 'pan-y';\n        } else if (this.axis === 'vertical') {\n          this.element.style.touchAction = 'pan-x';\n        } else if (this.axis === 'both') {\n          this.element.style.touchAction = 'none';\n        }\n        this.element.addEventListener('pointerdown', this.didTouchStart, {\n          capture: this.capture,\n          passive: true\n        });\n        document.addEventListener('pointermove', this.documentPointerMove, {\n          capture: this.capture,\n          passive: !this.preventScroll\n        });\n        document.addEventListener('pointercancel', this.documentPointerUp, {\n          capture: this.capture,\n          passive: true\n        });\n        document.addEventListener('pointerup', this.documentPointerUp, {\n          capture: this.capture,\n          passive: true\n        });\n      }\n    }, {\n      key: \"removeEventListeners\",\n      value: function removeEventListeners() {\n        this.element.style.touchAction = null;\n        this.element.removeEventListener('pointerdown', this.didTouchStart, {\n          capture: this.capture,\n          passive: true\n        });\n        document.removeEventListener('pointermove', this.documentPointerMove, {\n          capture: this.capture,\n          passive: !this.preventScroll\n        });\n        document.removeEventListener('pointercancel', this.documentPointerUp, {\n          capture: this.capture,\n          passive: true\n        });\n        document.removeEventListener('pointerup', this.documentPointerUp, {\n          capture: this.capture,\n          passive: true\n        });\n      }\n    }, {\n      key: \"didTouchStart\",\n      value: function didTouchStart(e) {\n        if (!this.dragging && this.pointerTypes.includes(e.pointerType)) {\n          var touchData = (0, _parseTouchData.parseInitialTouchData)(e);\n          this.currentTouches.set(e.pointerId, touchData);\n          this.dragging = true;\n        }\n      }\n    }, {\n      key: \"documentPointerMove\",\n      value: function documentPointerMove(e) {\n        if (this.dragging && this.pointerTypes.includes(e.pointerType)) {\n          this.handlePointerMove(e);\n        }\n      }\n    }, {\n      key: \"documentPointerUp\",\n      value: function documentPointerUp(e) {\n        if (this.dragging && this.pointerTypes.includes(e.pointerType)) {\n          this.handlePointerEnd(e);\n        }\n      }\n    }, {\n      key: \"handlePointerMove\",\n      value: function handlePointerMove(e) {\n        if (this.dragging && this.currentTouches.has(e.pointerId)) {\n          var previousTouchData = this.currentTouches.get(e.pointerId);\n          var touchData = (0, _parseTouchData.parseTouchData)(previousTouchData, e);\n          if (touchData.panStarted) {\n            // prevent scroll if a pan is still busy\n            if (this.preventScroll) {\n              e.preventDefault();\n            }\n            this.didPan(touchData.data);\n          } else {\n            // only pan when the threshold for the given axis is achieved\n            if (!touchData.panDenied && (this.axis === 'horizontal' && Math.abs(touchData.data.current.distanceX) > this.threshold || this.axis === 'vertical' && Math.abs(touchData.data.current.distanceY) > this.threshold || this.axis === 'both' && Math.abs(touchData.data.current.distance) > this.threshold)) {\n              // test if axis matches with data else deny the pan\n              if (this.axis === 'horizontal' && (0, _parseTouchData.isHorizontal)(touchData) || this.axis === 'vertical' && (0, _parseTouchData.isVertical)(touchData) || this.axis === 'both') {\n                // prevent scroll if a pan is detected\n                if (this.preventScroll) {\n                  e.preventDefault();\n                }\n                touchData.panStarted = true;\n\n                // trigger panStart hook\n                this.didPanStart(touchData.data);\n              } else {\n                touchData.panDenied = true;\n              }\n            }\n          }\n          this.currentTouches.set(e.pointerId, touchData);\n        }\n      }\n    }, {\n      key: \"handlePointerEnd\",\n      value: function handlePointerEnd(e) {\n        if (this.dragging && this.currentTouches.has(e.pointerId)) {\n          this.dragging = false;\n          var previousTouchData = this.currentTouches.get(e.pointerId);\n          var touchData = (0, _parseTouchData.parseTouchData)(previousTouchData, e);\n          if (touchData.panStarted) {\n            this.didPanEnd(touchData.data);\n          }\n          this.currentTouches.delete(e.pointerId);\n        }\n      }\n    }, {\n      key: \"didReceiveArguments\",\n      value: function didReceiveArguments() {\n        var _this$args$named$thre, _this$args$named$axis, _this$args$named$capt, _this$args$named$prev, _this$args$named$poin, _this$args$named$onPa, _this$args$named$onPa2, _this$args$named$onPa3;\n        this.removeEventListeners();\n        this.threshold = (_this$args$named$thre = this.args.named.threshold) !== null && _this$args$named$thre !== void 0 ? _this$args$named$thre : 10;\n        this.axis = (_this$args$named$axis = this.args.named.axis) !== null && _this$args$named$axis !== void 0 ? _this$args$named$axis : 'horizontal';\n        this.capture = (_this$args$named$capt = this.args.named.capture) !== null && _this$args$named$capt !== void 0 ? _this$args$named$capt : false;\n        this.preventScroll = (_this$args$named$prev = this.args.named.preventScroll) !== null && _this$args$named$prev !== void 0 ? _this$args$named$prev : true;\n        this.pointerTypes = (_this$args$named$poin = this.args.named.pointerTypes) !== null && _this$args$named$poin !== void 0 ? _this$args$named$poin : ['touch'];\n        this.didPanStart = (_this$args$named$onPa = this.args.named.onPanStart) !== null && _this$args$named$onPa !== void 0 ? _this$args$named$onPa : _fn;\n        this.didPan = (_this$args$named$onPa2 = this.args.named.onPan) !== null && _this$args$named$onPa2 !== void 0 ? _this$args$named$onPa2 : _fn;\n        this.didPanEnd = (_this$args$named$onPa3 = this.args.named.onPanEnd) !== null && _this$args$named$onPa3 !== void 0 ? _this$args$named$onPa3 : _fn;\n        this.addEventListeners();\n      }\n    }, {\n      key: \"willRemove\",\n      value: function willRemove() {\n        this.removeEventListeners();\n        this.currentTouches.clear();\n      }\n    }]);\n  }(_emberModifier.default), _applyDecoratedDescriptor(_class.prototype, \"didTouchStart\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"didTouchStart\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"documentPointerMove\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"documentPointerMove\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"documentPointerUp\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"documentPointerUp\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handlePointerMove\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handlePointerMove\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handlePointerEnd\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handlePointerEnd\"), _class.prototype), _class);\n});","define(\"ember-gesture-modifiers/utils/parse-touch-data\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isHorizontal = isHorizontal;\n  _exports.isVertical = isVertical;\n  _exports.parseInitialTouchData = parseInitialTouchData;\n  _exports.parseTouchData = parseTouchData;\n  /**\n   * Generate initial touch data for passed Touch\n   *\n   * @function parseInitialTouchData\n   * @param {Touch} touch A Touch instance\n   * @param {TouchEvent} e The touch{start,move,end} event\n   * @return {Object} Returns a TouchData object\n   * @private\n   */\n  function parseInitialTouchData(e) {\n    return {\n      data: {\n        initial: {\n          x: e.clientX,\n          y: e.clientY,\n          timeStamp: e.timeStamp\n        },\n        cache: {\n          velocity: {\n            distanceX: 0,\n            distanceY: 0,\n            timeStamp: e.timeStamp\n          }\n        },\n        timeStamp: e.timeStamp,\n        originalEvent: e\n      },\n      panStarted: false,\n      panDenied: false\n    };\n  }\n\n  /**\n   * Generates useful touch data from current event based on previously generated data\n   *\n   * @function parseTouchData\n   * @param {Object} previousTouchData Previous data returned by this or the parseInitialTouchData function\n   * @param {Touch} touch A Touch instance\n   * @param {TouchEvent} e The touch{start,move,end} event\n   * @return {Object} The new touch data\n   * @private\n   */\n  function parseTouchData(previousTouchData, e) {\n    var touchData = JSON.parse(JSON.stringify(previousTouchData));\n    var data = touchData.data;\n    if (data.current) {\n      data.current.deltaX = e.clientX - data.current.x;\n      data.current.deltaY = e.clientY - data.current.y;\n    } else {\n      data.current = {};\n      data.current.deltaX = e.clientX - data.initial.x;\n      data.current.deltaY = e.clientY - data.initial.y;\n    }\n    data.current.x = e.clientX;\n    data.current.y = e.clientY;\n    data.current.distance = getPointDistance(data.initial.x, e.clientX, data.initial.y, e.clientY);\n    data.current.distanceX = e.clientX - data.initial.x;\n    data.current.distanceY = e.clientY - data.initial.y;\n    data.current.angle = getAngle(data.initial.x, data.initial.y, e.clientX, e.clientY);\n\n    // overallVelocity can be calculated continuously\n    var overallDeltaTime = e.timeStamp - data.initial.timeStamp;\n    data.current.overallVelocityX = data.current.distanceX / overallDeltaTime || 0;\n    data.current.overallVelocityY = data.current.distanceY / overallDeltaTime || 0;\n    data.current.overallVelocity = Math.abs(data.current.overallVelocityX) > Math.abs(data.current.overallVelocityY) ? data.current.overallVelocityX : data.current.overallVelocityY;\n\n    // we don't update the velocity on the final touchend event as nothing but the timestamp has changed\n    // which always results in a velocity of 0\n    if (e.type !== 'touchend') {\n      var deltaTime = e.timeStamp - data.cache.velocity.timeStamp;\n      data.current.velocityX = (data.current.distanceX - data.cache.velocity.distanceX) / deltaTime || 0;\n      data.current.velocityY = (data.current.distanceY - data.cache.velocity.distanceY) / deltaTime || 0;\n      data.current.velocity = Math.abs(data.current.velocityX) > Math.abs(data.current.velocityY) ? data.current.velocityX : data.current.velocityY;\n      data.cache.velocity = {\n        distanceX: data.current.distanceX,\n        distanceY: data.current.distanceY,\n        timeStamp: e.timeStamp\n      };\n    }\n    data.originalEvent = e;\n    data.timeStamp = e.timeStamp;\n    touchData.data = data;\n    return touchData;\n  }\n\n  /**\n   * Calculates whether or not the movement went left or right\n   *\n   * @function isHorizontal\n   * @param {TouchData} touchData A POJO as returned from `parseInitialTouchData` or `parseTouchData`\n   * @return {boolean} True if horizontal\n   * @private\n   */\n  function isHorizontal(touchData) {\n    var direction = getDirection(touchData.data.current.distanceX, touchData.data.current.distanceY);\n    return direction === 'left' || direction === 'right';\n  }\n\n  /**\n   * Calculates whether or not the movement went up or down\n   *\n   * @function isVertical\n   * @param {TouchData} touchData A POJO as returned from `parseInitialTouchData` or `parseTouchData`\n   * @return {boolean} true if vertical\n   * @private\n   */\n  function isVertical(touchData) {\n    var direction = getDirection(touchData.data.current.distanceX, touchData.data.current.distanceY);\n    return direction === 'down' || direction === 'up';\n  }\n\n  /**\n   * Calculates the direction of the touch movement\n   *\n   * @function getDirection\n   * @param {Number} x The distance moved from the origin on the X axis\n   * @param {Number} y The the distance moved from the origin on the Y axis\n   * @return {string} The direction of the pan event. One of 'left', 'right', 'up', 'down'.\n   * @private\n   */\n  function getDirection(x, y) {\n    if (x === y) {\n      return 'none';\n    } else if (Math.abs(x) >= Math.abs(y)) {\n      return x < 0 ? 'left' : 'right';\n    } else {\n      return y < 0 ? 'down' : 'up';\n    }\n  }\n\n  /**\n   * Calculates the distance between two points\n   *\n   * @function getPointDistance\n   * @param {number} x0 X coordinate of the origin\n   * @param {number} x1 X coordinate of the current position\n   * @param {number} y0 Y coordinate of the origin\n   * @param {number} y1 Y coordinate of the current position\n   * @return {number} Distance between the two points\n   * @private\n   */\n  function getPointDistance(x0, x1, y0, y1) {\n    return Math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0));\n  }\n\n  /**\n   * Calculates the angle between two points.\n   *\n   * @function getAngle\n   * @param {number} originX\n   * @param {number} originY\n   * @param {number} projectionX\n   * @param {number} projectionY\n   * @return {number} Angle between the two points\n   * @private\n   */\n  function getAngle(originX, originY, projectionX, projectionY) {\n    var angle = Math.atan2(projectionY - originY, projectionX - originX) * (180 / Math.PI);\n    return 360 - (angle < 0 ? 360 + angle : angle);\n  }\n});","define(\"ember-get-config/index\", [\"exports\", \"@embroider/macros/runtime\"], function (_exports, _runtime) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* global require */\n\n  var configModulePath = \"\".concat((0, _runtime.config)(\"/opt/atlassian/pipelines/agent/build/node_modules/.pnpm/ember-get-config@2.1.1/node_modules/ember-get-config\").modulePrefix, \"/config/environment\");\n  var _default = _exports.default = require(configModulePath).default;\n});","define(\"ember-load-initializers/index\", [\"exports\", \"require\"], function (_exports, _require) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = loadInitializers;\n  function resolveInitializer(moduleName) {\n    var module = (0, _require.default)(moduleName, null, null, true);\n    if (!module) {\n      throw new Error(moduleName + ' must export an initializer.');\n    }\n    var initializer = module['default'];\n    if (!initializer) {\n      throw new Error(moduleName + ' must have a default export');\n    }\n    if (!initializer.name) {\n      initializer.name = moduleName.slice(moduleName.lastIndexOf('/') + 1);\n    }\n    return initializer;\n  }\n  function registerInitializers(app, moduleNames) {\n    for (var i = 0; i < moduleNames.length; i++) {\n      app.initializer(resolveInitializer(moduleNames[i]));\n    }\n  }\n  function registerInstanceInitializers(app, moduleNames) {\n    for (var i = 0; i < moduleNames.length; i++) {\n      app.instanceInitializer(resolveInitializer(moduleNames[i]));\n    }\n  }\n  function _endsWith(str, suffix) {\n    return str.indexOf(suffix, str.length - suffix.length) !== -1;\n  }\n\n  /**\n   * Configure your application as it boots\n   */\n  function loadInitializers(app, prefix) {\n    var initializerPrefix = prefix + '/initializers/';\n    var instanceInitializerPrefix = prefix + '/instance-initializers/';\n    var initializers = [];\n    var instanceInitializers = [];\n    // this is 2 pass because generally the first pass is the problem\n    // and is reduced, and resolveInitializer has potential to deopt\n    var moduleNames = Object.keys(requirejs._eak_seen);\n    for (var i = 0; i < moduleNames.length; i++) {\n      var moduleName = moduleNames[i];\n      if (moduleName.lastIndexOf(initializerPrefix, 0) === 0) {\n        if (!_endsWith(moduleName, '-test')) {\n          initializers.push(moduleName);\n        }\n      } else if (moduleName.lastIndexOf(instanceInitializerPrefix, 0) === 0) {\n        if (!_endsWith(moduleName, '-test')) {\n          instanceInitializers.push(moduleName);\n        }\n      }\n    }\n    registerInitializers(app, initializers);\n    registerInstanceInitializers(app, instanceInitializers);\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-loading/components/while-loading\", [\"exports\", \"@ember/component\", \"ember-loading/templates/components/while-loading\", \"@ember/service\"], function (_exports, _component, _whileLoading, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor; // @ts-ignore: Ignore import of compiled template\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var WhileLoading = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function WhileLoading() {\n      var _this;\n      _classCallCheck(this, WhileLoading);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, WhileLoading, [].concat(args));\n      _defineProperty(_this, \"layout\", _whileLoading.default);\n      _defineProperty(_this, \"tagName\", '');\n      _initializerDefineProperty(_this, \"loading\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(WhileLoading, _Component);\n    return _createClass(WhileLoading);\n  }(_component.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  ;\n});","define(\"ember-loading/decorator\", [\"exports\", \"@ember/debug\", \"@ember/application\"], function (_exports, _debug, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = loading;\n  function loading(_target, _propertyKey, desc) {\n    var orig = desc.value;\n    (true && !(typeof orig === 'function') && (0, _debug.assert)('The @loading decorator must be applied to methods', typeof orig === 'function'));\n    desc.value = function () {\n      var owner = (0, _application.getOwner)(this);\n      (true && !(!!owner) && (0, _debug.assert)('The target of the @loading decorator must have an owner.', !!owner));\n      var service = owner.lookup('service:loading');\n      return service.run.apply(service, [this, orig].concat(Array.prototype.slice.call(arguments)));\n    };\n  }\n  ;\n});","define(\"ember-loading/index\", [\"exports\", \"ember-loading/decorator\"], function (_exports, _decorator) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"loading\", {\n    enumerable: true,\n    get: function get() {\n      return _decorator.default;\n    }\n  });\n});","define(\"ember-loading/services/loading\", [\"exports\", \"@ember/service\", \"@ember/object\", \"ember-concurrency\", \"@ember/application\", \"rsvp\", \"ember-concurrency-ts\"], function (_exports, _service, _object, _emberConcurrency, _application, _rsvp, _emberConcurrencyTs) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function parseArgs() {\n    var length = arguments.length;\n    var args;\n    var method;\n    var target;\n    if (length === 1) {\n      target = null;\n      method = arguments[0];\n    } else if (length > 1) {\n      var argsIndex = 2;\n      var methodOrTarget = arguments[0];\n      var methodOrArgs = arguments[1];\n      var type = _typeof(methodOrArgs);\n      if (type === 'function') {\n        target = methodOrTarget;\n        method = methodOrArgs;\n      } else if (methodOrTarget !== null && type === 'string' && methodOrArgs in methodOrTarget) {\n        target = methodOrTarget;\n        method = target[methodOrArgs];\n      } else if (typeof methodOrTarget === 'function') {\n        argsIndex = 1;\n        target = null;\n        method = methodOrTarget;\n      }\n      if (length > argsIndex) {\n        var len = length - argsIndex;\n        args = new Array(len);\n        for (var i = 0; i < len; i++) {\n          args[i] = arguments[i + argsIndex];\n        }\n      }\n    }\n    return [target, method, args];\n  }\n  var LoadingService = _exports.default = (_class = /*#__PURE__*/function (_Service) {\n    function LoadingService() {\n      var _this;\n      _classCallCheck(this, LoadingService);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, LoadingService, [].concat(args));\n      _initializerDefineProperty(_this, \"router\", _descriptor, _this);\n      _defineProperty(_this, \"postDelay\", 0);\n      _defineProperty(_this, \"preDelay\", 0);\n      _defineProperty(_this, \"watchTransitions\", true);\n      _defineProperty(_this, \"_routerTransitionDeferred\", void 0);\n      return _this;\n    }\n    _inherits(LoadingService, _Service);\n    return _createClass(LoadingService, [{\n      key: \"isLoading\",\n      get: function get() {\n        return (0, _emberConcurrencyTs.taskFor)(this._runJob).isRunning;\n      }\n    }, {\n      key: \"showLoading\",\n      get: function get() {\n        return !(0, _emberConcurrencyTs.taskFor)(this.preDelayTask).isRunning && (this.isLoading || (0, _emberConcurrencyTs.taskFor)(this.postDelayTask).isRunning);\n      }\n    }, {\n      key: \"_routeWillChange\",\n      value: function _routeWillChange() {\n        var deferred = (0, _rsvp.defer)();\n        if (this._routerTransitionDeferred) {\n          this._routerTransitionDeferred.resolve();\n        }\n        this._routerTransitionDeferred = deferred;\n        this.run(function () {\n          return deferred.promise;\n        });\n      }\n    }, {\n      key: \"_routeDidChange\",\n      value: function _routeDidChange() {\n        if (this._routerTransitionDeferred) {\n          this._routerTransitionDeferred.resolve();\n          this._routerTransitionDeferred = undefined;\n        }\n      }\n    }, {\n      key: \"init\",\n      value: function init() {\n        _superPropGet(LoadingService, \"init\", this, 3)([]);\n        var config = (0, _application.getOwner)(this).resolveRegistration('config:environment')['ember-loading'];\n        if (config) {\n          this.preDelay = config.preDelay || 0;\n          this.postDelay = config.postDelay || 0;\n          this.watchTransitions = config.watchTransitions !== false;\n        }\n        if (this.watchTransitions) {\n          this.router.on('routeWillChange', this._routeWillChange);\n          this.router.on('routeDidChange', this._routeDidChange);\n        }\n      }\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        _superPropGet(LoadingService, \"willDestroy\", this, 3)([]);\n        if (this.watchTransitions) {\n          this.router.off('routeWillChange', this._routeWillChange);\n          this.router.off('routeDidChange', this._routeDidChange);\n        }\n      }\n\n      // @todo Revisit this stronger typing when https://github.com/typed-ember/ember-cli-typescript/issues/590 is resolved\n      //\n      // run<T, P1, P2, P3, P4, P5, P6, R>(target: T, fn: ((p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6) => R) | keyof T, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6): Promise<R>;\n      // run<T, P1, P2, P3, P4, P5, R>(target: T, fn: ((p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R) | keyof T, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5): Promise<R>;\n      // run<T, P1, P2, P3, P4, R>(target: T, fn: ((p1: P1, p2: P2, p3: P3, p4: P4) => R) | keyof T, p1: P1, p2: P2, p3: P3, p4: P4): Promise<R>;\n      // run<T, P1, P2, P3, R>(target: T, fn: ((p1: P1, p2: P2, p3: P3) => R) | keyof T, p1: P1, p2: P2, p3: P3): Promise<R>;\n      // run<T, P1, P2, R>(target: T, fn: ((p1: P1, p2: P2) => R) | keyof T, p1: P1, p2: P2): Promise<R>;\n      // run<T, P1, R>(target: T, fn: ((p1: P1) => R) | keyof T, p1: P1): Promise<R>;\n      // run<T, R>(target: T, fn: (() => R) | keyof T): Promise<R>\n      // run<P1, P2, P3, P4, P5, P6, R>(fn: (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6) => R, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6): Promise<R>;\n      // run<P1, P2, P3, P4, P5, R>(fn: (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5): Promise<R>;\n      // run<P1, P2, P3, P4, R>(fn: (p1: P1, p2: P2, p3: P3, p4: P4) => R, p1: P1, p2: P2, p3: P3, p4: P4): Promise<R>;\n      // run<P1, P2, P3, R>(fn: (p1: P1, p2: P2, p3: P3) => R, p1: P1, p2: P2, p3: P3): Promise<R>;\n      // run<P1, P2, R>(fn: (p1: P1, p2: P2) => R, p1: P1, p2: P2): Promise<R>;\n      // run<P1, R>(fn: (p1: P1) => R, p1: P1): Promise<R>;\n      // run<R>(fn: () => R): Promise<R>;\n      // run<T, R>(target: T, fn: ((...args: any[]) => R) | keyof T, ...args: any[]): Promise<R>;\n      // run<T, R>(target: T, fn: (() => R) | keyof T): Promise<R>;\n      // run<R>(fn: (...args: any[]) => R, ...args: any[]): Promise<R>;\n      // run<R>(fn: () => R): Promise<R>;\n    }, {\n      key: \"run\",\n      value: function () {\n        var _run = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n          var _taskFor;\n          var result,\n            _args = arguments;\n          return _regeneratorRuntime().wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (this.preDelay > 0) {\n                  (0, _emberConcurrencyTs.taskFor)(this.preDelayTask).perform(this.preDelay);\n                }\n                _context.next = 3;\n                return (_taskFor = (0, _emberConcurrencyTs.taskFor)(this._runJob)).perform.apply(_taskFor, _args);\n              case 3:\n                result = _context.sent;\n                if (this.postDelay > 0) {\n                  (0, _emberConcurrencyTs.taskFor)(this.postDelayTask).perform(this.postDelay);\n                }\n                return _context.abrupt(\"return\", result);\n              case 6:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function run() {\n          return _run.apply(this, arguments);\n        }\n        return run;\n      }()\n    }, {\n      key: \"_runJob\",\n      value: /*#__PURE__*/_regeneratorRuntime().mark(function _runJob() {\n        var _parseArgs,\n          _parseArgs2,\n          target,\n          method,\n          realArgs,\n          _args2 = arguments;\n        return _regeneratorRuntime().wrap(function _runJob$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _parseArgs = parseArgs.apply(void 0, _args2), _parseArgs2 = _slicedToArray(_parseArgs, 3), target = _parseArgs2[0], method = _parseArgs2[1], realArgs = _parseArgs2[2];\n              _context2.next = 3;\n              return method.apply(target, realArgs);\n            case 3:\n              return _context2.abrupt(\"return\", _context2.sent);\n            case 4:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _runJob);\n      })\n    }, {\n      key: \"preDelayTask\",\n      value: /*#__PURE__*/_regeneratorRuntime().mark(function preDelayTask(delay) {\n        return _regeneratorRuntime().wrap(function preDelayTask$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              _context3.next = 2;\n              return (0, _emberConcurrency.timeout)(delay);\n            case 2:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, preDelayTask);\n      })\n    }, {\n      key: \"postDelayTask\",\n      value: /*#__PURE__*/_regeneratorRuntime().mark(function postDelayTask(delay) {\n        return _regeneratorRuntime().wrap(function postDelayTask$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              _context4.next = 2;\n              return (0, _emberConcurrency.timeout)(delay);\n            case 2:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, postDelayTask);\n      })\n    }]);\n  }(_service.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"_routeWillChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_routeWillChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"_routeDidChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"_routeDidChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"_runJob\", [_emberConcurrency.task], Object.getOwnPropertyDescriptor(_class.prototype, \"_runJob\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"preDelayTask\", [_emberConcurrency.restartableTask], Object.getOwnPropertyDescriptor(_class.prototype, \"preDelayTask\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"postDelayTask\", [_emberConcurrency.restartableTask], Object.getOwnPropertyDescriptor(_class.prototype, \"postDelayTask\"), _class.prototype), _class); // DO NOT DELETE: this is how TypeScript knows how to look up your services.\n});","define(\"ember-loading/templates/components/while-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)({\n    \"id\": \"c8x8flf2\",\n    \"block\": \"[[[41,[30,0,[\\\"loading\\\",\\\"showLoading\\\"]],[[[1,\\\"  \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-loading/templates/components/while-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-local-storage/adapters/adapter\", [\"exports\", \"ember-local-storage/adapters/local\"], function (_exports, _local) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _local.default;\n    }\n  });\n});","define(\"ember-local-storage/adapters/base\", [\"exports\", \"rsvp\", \"@ember/runloop\", \"@ember/utils\", \"@ember/object\", \"@ember-data/adapter/json-api\", \"ember-local-storage/helpers/import-export\", \"ember-local-storage/helpers/storage\", \"ember-inflector\"], function (_exports, _rsvp, _runloop, _utils, _object, _jsonApi, _importExport, _storage, _emberInflector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // Ember data ships with ember-inflector\n  var _default = _exports.default = _jsonApi.default.extend({\n    _debug: false,\n    _indices: (0, _object.computed)(function () {\n      return {};\n    }),\n    coalesceFindRequests: false,\n    // TODO: v2.0 - What are the defaults now? What versions to support?\n    isNewSerializerAPI: true,\n    // TODO: v2.0 - Can we deprecate or remove that? What are the defaults now? What versions to support?\n    // Reload behavior\n    shouldReloadRecord: function shouldReloadRecord() {\n      return true;\n    },\n    shouldReloadAll: function shouldReloadAll() {\n      return true;\n    },\n    shouldBackgroundReloadRecord: function shouldBackgroundReloadRecord() {\n      return true;\n    },\n    shouldBackgroundReloadAll: function shouldBackgroundReloadAll() {\n      return true;\n    },\n    generateIdForRecord: function generateIdForRecord() {\n      return Math.random().toString(32).slice(2).substr(0, 8);\n    },\n    // Import & Export\n    importData: function importData(store, content, options) {\n      return (0, _importExport.importData)(store, content, options);\n    },\n    exportData: function exportData(store, types, options) {\n      return (0, _importExport.exportData)(store, types, options);\n    },\n    // Relationship sugar\n    createRecord: function createRecord(store, type, snapshot) {\n      snapshot.eachRelationship(function (name, relationship) {\n        var kind = relationship.kind,\n          options = relationship.options;\n        if (kind === 'belongsTo' && options.autoSave) {\n          snapshot.record.get(name).then(function (record) {\n            if (record) {\n              record.save();\n            }\n          });\n        }\n      });\n      return this._super.apply(this, arguments);\n    },\n    deleteRecord: function deleteRecord(store, type, snapshot) {\n      snapshot.eachRelationship(function (name, relationship) {\n        var kind = relationship.kind,\n          options = relationship.options;\n        if (kind === 'hasMany' && options.dependent === 'destroy') {\n          snapshot.record.get(name).then(function (records) {\n            records.forEach(function (record) {\n              record.destroyRecord();\n            });\n          });\n        }\n        if (kind === 'belongsTo' && options.autoSave) {\n          snapshot.record.get(name).then(function (record) {\n            if (record) {\n              record.save();\n            }\n          });\n        }\n      });\n      return this._super.apply(this, arguments);\n    },\n    // Polyfill queryRecord\n    queryRecord: function queryRecord(store, type, query) {\n      var records = this._super.apply(this, arguments);\n      if (!records) {\n        var url = this.buildURL(type.modelName, null, null, 'queryRecord', query);\n\n        // TODO: Document why this is needed or remove it!\n        if (this.sortQueryParams) {\n          query = this.sortQueryParams(query);\n        }\n        records = this.ajax(url, 'GET', {\n          data: query\n        });\n      }\n      return records.then(function (result) {\n        return {\n          data: result.data[0] || null\n        };\n      });\n    },\n    // TODO: v2.0 - What are the defaults now? What versions to support?\n    // Delegate to _handleStorageRequest\n    ajax: function ajax() {\n      return this._handleStorageRequest.apply(this, arguments);\n    },\n    // Delegate to _handleStorageRequest\n    makeRequest: function makeRequest(request) {\n      return this._handleStorageRequest(request.url, request.method, {\n        data: request.data\n      });\n    },\n    // Work arround ds-improved-ajax Feature Flag\n    _makeRequest: function _makeRequest() {\n      return this.makeRequest.apply(this, arguments);\n    },\n    // Remove the ajax() deprecation warning\n    _hasCustomizedAjax: function _hasCustomizedAjax() {\n      return false;\n    },\n    // Delegate to _handle${type}Request\n    _handleStorageRequest: function _handleStorageRequest(url, type) {\n      var _this = this;\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      if (this._debug) {\n        console.log(url, type, options); // eslint-disable-line no-console\n      }\n      return new _rsvp.default.Promise(function (resolve, reject) {\n        var handler = _this[\"_handle\".concat(type, \"Request\")];\n        if (handler) {\n          var data = handler.call(_this, url, options.data);\n          (0, _runloop.run)(null, resolve, {\n            data: data\n          });\n        } else {\n          (0, _runloop.run)(null, reject, \"There is nothing to handle _handle\".concat(type, \"Request\"));\n        }\n      }, 'DS: LocalStorageAdapter#_handleStorageRequest ' + type + ' to ' + url);\n    },\n    _handleGETRequest: function _handleGETRequest(url, query) {\n      var _this2 = this;\n      var _this$_urlParts = this._urlParts(url),\n        type = _this$_urlParts.type,\n        id = _this$_urlParts.id;\n      var storage = (0, _object.get)(this, '_storage');\n      var storageKey = this._storageKey(type, id);\n      if (id) {\n        if (!storage[storageKey]) {\n          throw this.handleResponse(404, {}, 'Not found', {\n            url: url,\n            method: 'GET'\n          });\n        }\n        return JSON.parse(storage[storageKey]);\n      }\n      var records = this._getIndex(type).filter(function (storageKey) {\n        return storage[storageKey];\n      }).map(function (storageKey) {\n        return JSON.parse(storage[storageKey]);\n      });\n      if (query && query.filter) {\n        var serializer = this.store.serializerFor((0, _emberInflector.singularize)(type));\n        return records.filter(function (record) {\n          return _this2._queryFilter(record, serializer, query.filter);\n        });\n      }\n      return records;\n    },\n    _handlePOSTRequest: function _handlePOSTRequest(url, record) {\n      var _record$data = record.data,\n        type = _record$data.type,\n        id = _record$data.id;\n      var storageKey = this._storageKey(type, id);\n      this._addToIndex(type, storageKey);\n      (0, _object.get)(this, '_storage')[storageKey] = JSON.stringify(record.data);\n      return null;\n    },\n    _handlePATCHRequest: function _handlePATCHRequest(url, record) {\n      var _record$data2 = record.data,\n        type = _record$data2.type,\n        id = _record$data2.id;\n      var storageKey = this._storageKey(type, id);\n      this._addToIndex(type, storageKey);\n      (0, _object.get)(this, '_storage')[storageKey] = JSON.stringify(record.data);\n      return null;\n    },\n    _handleDELETERequest: function _handleDELETERequest(url) {\n      var _this$_urlParts2 = this._urlParts(url),\n        type = _this$_urlParts2.type,\n        id = _this$_urlParts2.id;\n      var storageKey = this._storageKey(type, id);\n      this._removeFromIndex(type, storageKey);\n      delete (0, _object.get)(this, '_storage')[storageKey];\n      return null;\n    },\n    // TODO: Extract into utility functions in private/query.js\n    _queryFilter: function _queryFilter(data, serializer) {\n      var _this3 = this;\n      var query = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var queryType = (0, _utils.typeOf)(query);\n      var dataType = (0, _utils.typeOf)(data);\n      if (queryType === 'object' && dataType === 'object') {\n        return Object.keys(query).every(function (key) {\n          var queryValue = query[key],\n            recordValue;\n\n          // normalize type\n          if (key === 'type' && (0, _utils.typeOf)(queryValue) === 'string') {\n            queryValue = (0, _emberInflector.pluralize)(queryValue);\n          }\n\n          // Attributes\n          if (key === 'id' || key === 'type') {\n            recordValue = data[key];\n          } else {\n            key = serializer.keyForAttribute(key);\n            recordValue = data.attributes ? data.attributes[key] : undefined;\n          }\n          if (recordValue !== undefined) {\n            return _this3._matches(recordValue, queryValue);\n          }\n\n          // Relationships\n          key = serializer.keyForRelationship(key);\n          if (data.relationships && data.relationships[key]) {\n            if ((0, _utils.isEmpty)(data.relationships[key].data)) {\n              return;\n            }\n            return _this3._queryFilter(data.relationships[key].data, serializer, queryValue);\n          }\n        });\n      } else if (queryType === 'array') {\n        // belongsTo\n        if (dataType === 'object') {\n          var queryMessage = query.map(function (item) {\n            return Object.keys(item).map(function (key) {\n              return key + ': ' + item[key];\n            });\n          }).join(', ');\n          throw new Error('You can not provide an array with a belongsTo relation. ' + 'Query: ' + queryMessage);\n\n          // hasMany\n        } else {\n          return query.every(function (queryValue) {\n            return _this3._queryFilter(data, serializer, queryValue);\n          });\n        }\n      } else {\n        // belongsTo\n        if (dataType === 'object') {\n          return this._matches(data.id, query);\n\n          // hasMany\n        } else {\n          return data.some(function (record) {\n            return _this3._queryFilter(record, serializer, query);\n          });\n        }\n      }\n    },\n    _matches: function _matches(recordValue, queryValue) {\n      if ((0, _utils.typeOf)(queryValue) === 'regexp') {\n        return queryValue.test(recordValue);\n      }\n      return recordValue === queryValue;\n    },\n    _urlParts: function _urlParts(url) {\n      var parts = url.split('/');\n\n      // remove empty part\n      parts.shift();\n      var type = parts.shift();\n      var id = parts.shift();\n      if (type === this.modelNamespace) {\n        type = \"\".concat(type, \"/\").concat(id);\n        id = parts.shift();\n      }\n      return {\n        type: type,\n        id: id\n      };\n    },\n    _storageKey: function _storageKey(type, id) {\n      return (0, _storage._buildKey)(this, type + '-' + id);\n    },\n    // Should be overwriten\n    // Signature: _getIndex(type)\n    _getIndex: function _getIndex() {},\n    _indexHasKey: function _indexHasKey(type, id) {\n      return this._getIndex(type).indexOf(id) !== -1;\n    },\n    _addToIndex: function _addToIndex(type, id) {\n      if (!this._indexHasKey(type, id)) {\n        this._getIndex(type).addObject(id);\n      }\n    },\n    _removeFromIndex: function _removeFromIndex(type, id) {\n      this._getIndex(type).removeObject(id);\n    }\n  });\n});","define(\"ember-local-storage/adapters/local\", [\"exports\", \"@ember/object\", \"ember-local-storage/adapters/base\", \"ember-local-storage/helpers/storage\", \"ember-local-storage/local/array\", \"@ember/application\"], function (_exports, _object, _base, _storage, _array, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _base.default.extend({\n    _storage: (0, _storage.getStorage)('local'),\n    _getIndex: function _getIndex(type) {\n      var indices = (0, _object.get)(this, '_indices');\n      if (!indices[type]) {\n        var storageKey = (0, _storage._buildKey)(this, 'index-' + type);\n        var owner = (0, _application.getOwner)(this);\n        indices[type] = _array.default.extend({\n          _storageKey: storageKey\n        }).create(owner.ownerInjection());\n      }\n      return indices[type];\n    }\n  });\n});","define(\"ember-local-storage/adapters/session\", [\"exports\", \"@ember/object\", \"ember-local-storage/adapters/base\", \"ember-local-storage/helpers/storage\", \"ember-local-storage/session/array\", \"@ember/application\"], function (_exports, _object, _base, _storage, _array, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _base.default.extend({\n    _storage: (0, _storage.getStorage)('session'),\n    _getIndex: function _getIndex(type) {\n      var indices = (0, _object.get)(this, '_indices');\n      if (!indices[type]) {\n        var storageKey = (0, _storage._buildKey)(this, 'index-' + type);\n        var owner = (0, _application.getOwner)(this);\n        indices[type] = _array.default.extend({\n          _storageKey: storageKey\n        }).create(owner.ownerInjection());\n      }\n      return indices[type];\n    }\n  });\n});","define(\"ember-local-storage/helpers/import-export\", [\"exports\", \"rsvp\", \"@ember/object\", \"@ember/runloop\", \"ember-inflector\", \"@ember/array\"], function (_exports, _rsvp, _object, _runloop, _emberInflector, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.exportData = exportData;\n  _exports.importData = importData;\n  function importData(store, content, options) {\n    // merge defaults\n    options = Object.assign({\n      json: true,\n      truncate: true\n    }, options || {});\n    var truncateTypes = (0, _array.A)(),\n      reloadTypes = (0, _array.A)();\n    content = options.json ? JSON.parse(content) : content;\n    if (options.truncate) {\n      content.data.forEach(function (record) {\n        truncateTypes.addObject(record.type);\n      });\n      truncateTypes.forEach(function (type) {\n        var singularType = (0, _emberInflector.singularize)(type);\n        var adapter = store.adapterFor(singularType);\n        adapter._getIndex(type).forEach(function (storageKey) {\n          delete (0, _object.get)(adapter, '_storage')[storageKey];\n        });\n        adapter._getIndex(type).reset();\n\n        // unload from store\n        store.unloadAll(singularType);\n      });\n    }\n    var promises = content.data.map(function (record) {\n      var adapter = store.adapterFor((0, _emberInflector.singularize)(record.type));\n\n      // collect types to reload\n      reloadTypes.addObject((0, _emberInflector.singularize)(record.type));\n      return adapter._handleStorageRequest(null, 'POST', {\n        data: {\n          data: record\n        }\n      });\n    });\n    return (0, _rsvp.all)(promises).then(function () {\n      // reload from store\n      reloadTypes.forEach(function (type) {\n        store.findAll(type);\n      });\n    });\n  }\n  function exportData(store, types, options) {\n    // merge defaults\n    options = Object.assign({\n      json: true,\n      download: false,\n      filename: 'ember-data.json'\n    }, options || {});\n    var json, data;\n\n    // collect data\n    data = types.reduce(function (records, type) {\n      var adapter = store.adapterFor((0, _emberInflector.singularize)(type));\n      var url = adapter.buildURL(type);\n      var exportData = adapter._handleGETRequest(url);\n      records.data = records.data.concat(exportData);\n      return records;\n    }, {\n      data: []\n    });\n    if (options.json || options.download) {\n      json = JSON.stringify(data);\n    }\n    if (options.json) {\n      data = json;\n    }\n    if (options.download) {\n      window.saveAs(new Blob([json], {\n        type: 'application/json;charset=utf-8'\n      }), options.filename);\n    }\n    return new _rsvp.Promise(function (resolve) {\n      (0, _runloop.run)(null, resolve, data);\n    }, 'DS: LocalStorageAdapter#exportData');\n  }\n});","define(\"ember-local-storage/helpers/storage\", [\"exports\", \"@ember/debug\", \"@ember/object\", \"@ember/application\", \"@ember/string\"], function (_exports, _debug, _object, _application, _string) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports._buildKey = _buildKey;\n  _exports._resetStorages = _resetStorages;\n  _exports.getStorage = getStorage;\n  _exports.storageFor = storageFor;\n  _exports.tryStorage = tryStorage;\n  var storage = {};\n  function tryStorage(name) {\n    var nativeStorage;\n\n    // safari private mode exposes xStorage but fails on setItem\n    try {\n      nativeStorage = name === 'local' ? localStorage : sessionStorage;\n      nativeStorage.setItem('emberlocalstorage.test', 'ok');\n      nativeStorage.removeItem('emberlocalstorage.test');\n    } catch (e) {\n      nativeStorage = undefined;\n    }\n    return nativeStorage;\n  }\n  function getStorage(name) {\n    if (storage[name]) {\n      return storage[name];\n    } else {\n      return storage[name] = tryStorage(name) || {};\n    }\n  }\n  var storages = {};\n  function storageFor(key, modelName) {\n    // Normalize key\n    key = (0, _string.dasherize)(key);\n    if (!modelName) {\n      return (0, _object.computed)(function () {\n        if (!storages[key]) {\n          storages[key] = createStorage(this, key, null);\n        }\n        return storages[key];\n      });\n    }\n    (true && !(typeof modelName === 'string') && (0, _debug.assert)('The second argument must be a string', typeof modelName === 'string')); // TODO: Allow callbacks to delete the storage if model gets deleted\n    return (0, _object.computed)(modelName, function () {\n      var model = (0, _object.get)(this, modelName);\n\n      // If the propertyValue is null/undefined we simply return null/undefined\n      if (!model || typeof model === 'undefined') {\n        return model;\n      }\n      var modelKey = _modelKey(model);\n      var storageKey = \"\".concat(key, \":\").concat(modelKey);\n      if (!storages[storageKey]) {\n        storages[storageKey] = createStorage(this, key, modelKey);\n      }\n      return storages[storageKey];\n    });\n  }\n\n  /*\n   * Looks up the storage factory on the container and sets initial state\n   * on the instance if desired.\n   */\n  function createStorage(context, key, modelKey) {\n    var owner = (0, _application.getOwner)(context);\n    var factoryType = 'storage';\n    var storageFactory = \"\".concat(factoryType, \":\").concat(key);\n    var storageKey = modelKey ? \"\".concat(storageFactory, \":\").concat(modelKey) : storageFactory;\n    var defaultState = {\n      _storageKey: _buildKey(context, storageKey)\n    };\n    var StorageFactory = owner.factoryFor(storageFactory);\n    if (!StorageFactory) {\n      throw new TypeError(\"Unknown StorageFactory: \".concat(storageFactory));\n    }\n    var StorageFactoryClass = StorageFactory.class;\n    if (typeof StorageFactoryClass.initialState === 'function') {\n      defaultState._initialContent = StorageFactoryClass.initialState.call(StorageFactoryClass, context);\n    } else if (StorageFactoryClass.initialState) {\n      throw new TypeError('initialState property must be a function');\n    }\n    if (_object.default.detect(StorageFactoryClass)) {\n      return StorageFactoryClass.create(owner.ownerInjection(), defaultState);\n    }\n    return _object.default.create(owner.ownerInjection(), StorageFactoryClass);\n  }\n  function _modelKey(model) {\n    var modelName = model.modelName || model.constructor.typeKey || model.constructor.modelName;\n    var id = model.get('id');\n    if (!modelName || !id) {\n      throw new TypeError('The model must have a `modelName` and `id` on it');\n    }\n    return \"\".concat(modelName, \":\").concat(id);\n  }\n\n  // TODO: v2.0 - Make modulePrefix the default - needs a warning/error\n  function _getNamespace(appConfig, addonConfig) {\n    // For backward compatibility this is a opt-in feature\n    var namespace = addonConfig.namespace;\n\n    // Shortcut for modulePrefix\n    if (namespace === true) {\n      namespace = appConfig.modulePrefix;\n    }\n    return namespace;\n  }\n\n  // TODO: Add migration helper\n  function _buildKey(context, key) {\n    var appConfig = (0, _application.getOwner)(context).resolveRegistration('config:environment');\n    var addonConfig = appConfig && appConfig['ember-local-storage'] || {};\n    var namespace = _getNamespace(appConfig, addonConfig);\n    var delimiter = addonConfig.keyDelimiter || ':';\n    return namespace ? \"\".concat(namespace).concat(delimiter).concat(key) : key;\n  }\n\n  // Testing helper\n  function _resetStorages() {\n    storages = {};\n  }\n});","define(\"ember-local-storage/helpers/utils\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.save = save;\n  _exports.saveIfChanged = saveIfChanged;\n  function save() {\n    this._super.apply(this, arguments);\n    this._save();\n  }\n  function saveIfChanged(key) {\n    this._super.apply(this, arguments);\n    if (key !== '_isInitialContent') {\n      this._save();\n    }\n  }\n});","define(\"ember-local-storage/index\", [\"exports\", \"ember-local-storage/helpers/storage\"], function (_exports, _storage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"storageFor\", {\n    enumerable: true,\n    get: function get() {\n      return _storage.storageFor;\n    }\n  });\n});","define(\"ember-local-storage/local/array\", [\"exports\", \"@ember/array/proxy\", \"ember-local-storage/mixins/array\"], function (_exports, _proxy, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _proxy.default.extend(_array.default, {\n    _storageType: 'local'\n  });\n});","define(\"ember-local-storage/local/object\", [\"exports\", \"@ember/object/proxy\", \"ember-local-storage/mixins/object\"], function (_exports, _proxy, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _proxy.default.extend(_object.default, {\n    _storageType: 'local'\n  });\n});","define(\"ember-local-storage/mixins/adapters/import-export\", [\"exports\", \"@ember/debug\", \"@ember/object/mixin\", \"ember-local-storage/helpers/import-export\"], function (_exports, _debug, _mixin, _importExport) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _mixin.default.create({\n    importData: function importData(store, content, options) {\n      (true && !(false) && (0, _debug.deprecate)('Using the import-export mixin has been deprecated and will be removed in version 3.0.0', false, {\n        for: 'ember-local-storage',\n        id: 'ember-local-storage.mixins.adapters.import-export',\n        since: '2.0.5',\n        until: '3.0.0',\n        url: 'https://github.com/funkensturm/ember-local-storage#deprecations'\n      }));\n      return (0, _importExport.importData)(store, content, options);\n    },\n    exportData: function exportData(store, types, options) {\n      (true && !(false) && (0, _debug.deprecate)('Using the import-export mixin has been deprecated and will be removed in version 3.0.0', false, {\n        for: 'ember-local-storage',\n        id: 'ember-local-storage.mixins.adapters.import-export',\n        since: '2.0.5',\n        until: '3.0.0',\n        url: 'https://github.com/funkensturm/ember-local-storage#deprecations'\n      }));\n      return (0, _importExport.exportData)(store, types, options);\n    }\n  });\n});","define(\"ember-local-storage/mixins/array\", [\"exports\", \"@ember/array\", \"@ember/object/mixin\", \"@ember/object\", \"ember-local-storage/mixins/storage\", \"ember-local-storage/helpers/utils\"], function (_exports, _array, _mixin, _object, _storage, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _mixin.default.create(_storage.default, {\n    _initialContent: (0, _array.A)(),\n    _clear: function _clear() {\n      (0, _object.set)(this, 'content', (0, _array.A)());\n    },\n    replaceContent: _utils.save,\n    reset: _utils.save\n  });\n});","define(\"ember-local-storage/mixins/object\", [\"exports\", \"@ember/object/mixin\", \"@ember/object\", \"ember-local-storage/mixins/storage\", \"ember-local-storage/helpers/utils\"], function (_exports, _mixin, _object, _storage, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _mixin.default.create(_storage.default, {\n    _initialContent: {},\n    _clear: function _clear() {\n      (0, _object.set)(this, 'content', {});\n    },\n    setUnknownProperty: _utils.saveIfChanged,\n    set: _utils.saveIfChanged,\n    setProperties: _utils.save\n  });\n});","define(\"ember-local-storage/mixins/storage\", [\"exports\", \"@ember/object/mixin\", \"@ember/object\", \"@ember/array\", \"ember-local-storage/helpers/storage\", \"ember-copy\", \"@ember/application\", \"@ember/destroyable\"], function (_exports, _mixin, _object, _array, _storage2, _emberCopy, _application, _destroyable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _mixin.default.create({\n    _storageKey: null,\n    _initialContent: null,\n    _initialContentString: null,\n    _isInitialContent: true,\n    // we need it for storage event testing\n    _testing: false,\n    // Shorthand for the storage\n    _storage: function _storage() {\n      return (0, _storage2.getStorage)((0, _object.get)(this, '_storageType'));\n    },\n    init: function init() {\n      var storage = this._storage();\n      var storageKey = (0, _object.get)(this, '_storageKey');\n      var initialContent = (0, _object.get)(this, '_initialContent');\n      var serialized, content;\n      (0, _object.set)(this, '_initialContentString', JSON.stringify(initialContent));\n\n      // Merge the serialized version into defaults.\n      content = this._getInitialContentCopy();\n\n      // Retrieve the serialized version from storage.\n      serialized = storage[storageKey];\n      if (serialized) {\n        Object.assign(content, JSON.parse(serialized));\n      }\n\n      // Do not change to set(this, 'content', content)\n      this.set('content', content);\n\n      // Keep in sync with other windows\n      this._addStorageListener();\n      this._super.apply(this, arguments);\n      var owner = (0, _application.getOwner)(this);\n      (0, _destroyable.associateDestroyableChild)(owner, this);\n    },\n    _getInitialContentCopy: function _getInitialContentCopy() {\n      var initialContent = (0, _object.get)(this, '_initialContent');\n      var content = (0, _emberCopy.copy)(initialContent, true);\n\n      // copy returns a normal array when prototype extensions are off\n      // This ensures that we wrap it in an Ember Array.\n      return (0, _array.isArray)(content) ? (0, _array.A)(content) : content;\n    },\n    _addStorageListener: function _addStorageListener() {\n      var _this = this;\n      var storage = this._storage();\n      var storageKey = (0, _object.get)(this, '_storageKey');\n      if (window.addEventListener) {\n        this._storageEventHandler = function (event) {\n          if (_this.isDestroying) {\n            return;\n          }\n          if (event.storageArea === storage && event.key === storageKey) {\n            if ('hidden' in document && !document.hidden && !_this._testing || event.newValue === event.oldValue || event.newValue === JSON.stringify(_this.get('content'))) {\n              return;\n            }\n            if (event.newValue) {\n              // TODO: Why do we use this.set here? I guess it's the loop bug...\n              _this.set('content', JSON.parse(event.newValue));\n            } else {\n              _this.clear();\n            }\n          }\n        };\n        window.addEventListener('storage', this._storageEventHandler, false);\n      }\n    },\n    _save: function _save() {\n      if (this.isDestroying || this.isDestroyed) return;\n      var storage = this._storage();\n      var content = (0, _object.get)(this, 'content');\n      var storageKey = (0, _object.get)(this, '_storageKey');\n      var initialContentString = (0, _object.get)(this, '_initialContentString');\n\n      // TODO: Why is it needed?\n      if (storageKey) {\n        var json = JSON.stringify(content);\n        if (json !== initialContentString) {\n          (0, _object.set)(this, '_isInitialContent', false);\n        }\n        storage[storageKey] = json;\n      }\n    },\n    willDestroy: function willDestroy() {\n      if (this._storageEventHandler) {\n        window.removeEventListener('storage', this._storageEventHandler, false);\n      }\n      this._super.apply(this, arguments);\n    },\n    // Public API\n    // returns boolean\n    isInitialContent: function isInitialContent() {\n      return (0, _object.get)(this, '_isInitialContent');\n    },\n    // reset the content\n    // returns void\n    reset: function reset() {\n      var content = this._getInitialContentCopy();\n\n      // Do not change to set(this, 'content', content)\n      this.set('content', content);\n      (0, _object.set)(this, '_isInitialContent', true);\n    },\n    // clear the content\n    // returns void\n    clear: function clear() {\n      this._clear();\n      delete this._storage()[(0, _object.get)(this, '_storageKey')];\n    }\n  });\n});","define(\"ember-local-storage/serializers/serializer\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _jsonApi.default.extend({\n    shouldSerializeHasMany: function shouldSerializeHasMany() {\n      return true;\n    },\n    serializeBelongsTo: function serializeBelongsTo() {\n      this._fixSerializeBelongsTo.apply(this, arguments);\n    },\n    serializeHasMany: function serializeHasMany() {\n      this._fixSerializeHasMany.apply(this, arguments);\n    },\n    _fixSerializeBelongsTo: function _fixSerializeBelongsTo(snapshot, json, relationship) {\n      var key = relationship.key;\n      if (this._canSerialize(key)) {\n        var belongsTo = snapshot.belongsTo(key);\n        var belongsToIsNotNew = belongsTo && belongsTo.record && belongsTo.record.get('id');\n        if (belongsTo === null || belongsToIsNotNew) {\n          json.relationships = json.relationships || {};\n          var modelType = this.store.modelFor(snapshot.modelName);\n          var payloadKey = this._getMappedKey(key, modelType);\n          if (payloadKey === key) {\n            payloadKey = this.keyForRelationship(key, 'belongsTo', 'serialize');\n          }\n          var data = null;\n          if (belongsTo) {\n            var payloadType = this.payloadKeyFromModelName(belongsTo.modelName);\n            data = {\n              type: payloadType,\n              id: belongsTo.id\n            };\n          }\n          json.relationships[payloadKey] = {\n            data: data\n          };\n        }\n      }\n    },\n    _fixSerializeHasMany: function _fixSerializeHasMany(snapshot, json, relationship) {\n      var key = relationship.key;\n      if (this.shouldSerializeHasMany(snapshot, key, relationship)) {\n        var hasMany = snapshot.hasMany(key);\n        if (hasMany !== undefined) {\n          json.relationships = json.relationships || {};\n          var modelType = this.store.modelFor(snapshot.modelName);\n          var payloadKey = this._getMappedKey(key, modelType);\n          if (payloadKey === key && this.keyForRelationship) {\n            payloadKey = this.keyForRelationship(key, 'hasMany', 'serialize');\n          }\n\n          // only serialize has many relationships that are not new\n          var nonNewHasMany = hasMany.filter(function (item) {\n            return item.record && item.record.get('id');\n          });\n          var data = new Array(nonNewHasMany.length);\n          for (var i = 0; i < nonNewHasMany.length; i++) {\n            var item = hasMany[i];\n            var payloadType = this.payloadKeyFromModelName(item.modelName);\n            data[i] = {\n              type: payloadType,\n              id: item.id\n            };\n          }\n          json.relationships[payloadKey] = {\n            data: data\n          };\n        }\n      }\n    }\n  });\n});","define(\"ember-local-storage/session/array\", [\"exports\", \"@ember/array/proxy\", \"ember-local-storage/mixins/array\"], function (_exports, _proxy, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _proxy.default.extend(_array.default, {\n    _storageType: 'session'\n  });\n});","define(\"ember-local-storage/session/object\", [\"exports\", \"@ember/object/proxy\", \"ember-local-storage/mixins/object\"], function (_exports, _proxy, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _proxy.default.extend(_object.default, {\n    _storageType: 'session'\n  });\n});","define(\"ember-modifier/-private/class/modifier-manager\", [\"exports\", \"@ember/modifier\", \"@ember/destroyable\", \"ember-modifier/-private/class/modifier\", \"ember-modifier/-private/compat\"], function (_exports, _modifier, _destroyable, _modifier2, _compat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function destroyModifier(modifier) {\n    modifier.willRemove();\n    modifier.willDestroy();\n  }\n\n  /**\n   * The state bucket used throughout the life-cycle of the modifier. Basically a\n   * state *machine*, where the framework calls us with the version we hand back\n   * to it at each phase. The two states are the two `extends` versions of this\n   * below.\n   *\n   * @internal\n   */\n\n  /**\n   * The `State` after calling `createModifier`, and therefore the state available\n   * at the start of `InstallModifier`.\n   * @internal\n   */\n\n  /**\n   * The `State` after calling `installModifier`, and therefore the state\n   * available in all `updateModifier` calls and in `destroyModifier`.\n   * @internal\n   */\n\n  // Wraps the unsafe (b/c it mutates, rather than creating new state) code that\n  // TS does not yet understand.\n  function installElement(state, element) {\n    // SAFETY: this cast represents how we are actually handling the state machine\n    // transition: from this point forward in the lifecycle of the modifier, it\n    // always behaves as `InstalledState<S>`. It is safe because, and *only*\n    // because, we immediately initialize `element`. (We cannot create a new state\n    // from the old one because the modifier manager API expects mutation of a\n    // single state bucket rather than updating it at hook calls.)\n    var installedState = state;\n    installedState.element = element;\n    return installedState;\n  }\n  function installElementOnInstance(instance, element) {\n    // SAFETY: we use the internal API for all class-based modifiers to set this\n    // in a way which lets us issue the deprecation warning for anyone accessing\n    // `element` as a getter while allowing types to continue working for any\n    // existing subclasses (see the discussion on the class definition).\n    instance[_modifier2.Element] = element;\n  }\n  function updateArgsOnInstance(instance, args) {\n    // SAFETY: we use the internal API for all class-based modifiers to set this\n    // in a way which lets us issue the deprecation warning for anyone accessing\n    // `args` as a getter while allowing types to continue working for any\n    // existing subclasses (see the discussion on the class definition).\n    instance[_modifier2.Args] = args;\n  }\n  var ClassBasedModifierManager = _exports.default = /*#__PURE__*/function () {\n    function ClassBasedModifierManager(owner) {\n      _classCallCheck(this, ClassBasedModifierManager);\n      _defineProperty(this, \"capabilities\", (0, _modifier.capabilities)(true ? '3.22' : '3.13'));\n      this.owner = owner;\n    }\n    return _createClass(ClassBasedModifierManager, [{\n      key: \"createModifier\",\n      value: function createModifier(factoryOrClass, args) {\n        var Modifier = (0, _compat.isFactory)(factoryOrClass) ? factoryOrClass.class : factoryOrClass;\n        var modifier = new Modifier(this.owner, args);\n        (0, _destroyable.registerDestructor)(modifier, destroyModifier);\n        return {\n          instance: modifier,\n          implementsModify: (0, _modifier2._implementsModify)(modifier),\n          element: null\n        };\n      }\n    }, {\n      key: \"installModifier\",\n      value: function installModifier(createdState, element, args) {\n        var state = installElement(createdState, element);\n\n        // TODO: this can be deleted entirely at v4.\n        var instance = state.instance;\n        installElementOnInstance(instance, element);\n        if (state.implementsModify) {\n          instance.modify(element, args.positional, args.named);\n        } else {\n          // The `consumeArgs()` call provides backwards compatibility on v3 for the\n          // deprecated legacy lifecycle hooks (`didInstall`, `didReceiveArguments`,\n          // and `didUpdateArguments`), which accidentally had eager consumption\n          // semantics prior to Ember 3.22. The new, recommended `modify` hook has\n          // the updated lazy semantics associated with normal auto-tracking.\n          if (true) {\n            (0, _compat.consumeArgs)(args);\n          }\n          instance.didReceiveArguments();\n          instance.didInstall();\n        }\n      }\n    }, {\n      key: \"updateModifier\",\n      value: function updateModifier(state, args) {\n        var instance = state.instance;\n\n        // TODO: remove at 4.0\n        updateArgsOnInstance(state.instance, args);\n        if (state.implementsModify) {\n          instance.modify(state.element, args.positional, args.named);\n        } else {\n          // The `consumeArgs()` call provides backwards compatibility on v3 for the\n          // deprecated legacy lifecycle hooks (`didInstall`, `didReceiveArguments`,\n          // and `didUpdateArguments`), which accidentally had eager consumption\n          // semantics prior to Ember 3.22. The new, recommended `modify` hook has\n          // the updated lazy semantics associated with normal auto-tracking.\n          if (true) {\n            (0, _compat.consumeArgs)(args);\n          }\n          instance.didUpdateArguments();\n          instance.didReceiveArguments();\n        }\n      }\n    }, {\n      key: \"destroyModifier\",\n      value: function destroyModifier(state) {\n        (0, _destroyable.destroy)(state.instance);\n      }\n    }]);\n  }();\n});","define(\"ember-modifier/-private/class/modifier\", [\"exports\", \"@ember/application\", \"@ember/modifier\", \"ember-modifier/-private/class/modifier-manager\", \"@ember/destroyable\", \"@ember/debug\"], function (_exports, _application, _modifier, _modifierManager, _destroyable, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports._implementsModify = _exports._implementsLegacyHooks = _exports.Element = _exports.Args = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  // SAFETY: these sets are dev-only code to avoid showing deprecations for the\n  // same class more than once.\n\n  var SEEN_CLASSES_FOR_LIFECYCLE;\n  if (true /* DEBUG */) {\n    SEEN_CLASSES_FOR_LIFECYCLE = new Set();\n  }\n  var SEEN_CLASSES_FOR_DESTROYABLES;\n  if (true /* DEBUG */) {\n    SEEN_CLASSES_FOR_DESTROYABLES = new Set();\n  }\n  var SEEN_CLASSES_FOR_ARGS;\n  if (true /* DEBUG */) {\n    SEEN_CLASSES_FOR_ARGS = new Set();\n  }\n  var SEEN_CLASSES_FOR_ELEMENTS;\n  if (true /* DEBUG */) {\n    SEEN_CLASSES_FOR_ELEMENTS = new Set();\n  }\n\n  /** @internal */\n  var _implementsModify = _exports._implementsModify = function _implementsModify(instance) {\n    return instance.modify !== ClassBasedModifier.prototype.modify;\n  };\n\n  /** @internal */\n  var _implementsLegacyHooks = _exports._implementsLegacyHooks = function _implementsLegacyHooks(instance) {\n    return instance.didInstall !== ClassBasedModifier.prototype.didInstall || instance.didUpdateArguments !== ClassBasedModifier.prototype.didUpdateArguments || instance.didReceiveArguments !== ClassBasedModifier.prototype.didReceiveArguments;\n  };\n\n  /** @internal */\n  var Element = _exports.Element = Symbol('Element');\n\n  /** @internal */\n  var Args = _exports.Args = Symbol('Args');\n\n  // Preserve the signature on a class-based modifier so it can be plucked off\n  // later (by e.g. Glint), using interface merging with an opaque item to\n  // preserve it in the type system. The fact that it's an empty interface is\n  // actually the point: it *only* hooks the type parameter into the opaque\n  // (nominal) type. Note that this is distinct from the function-based modifier\n  // type intentionally, because it is actually the static class side of a\n  // class-based modifier which corresponds to the result of calling `modifier()`\n  // with a callback defining a function-based modifier.\n  // eslint-disable-next-line @typescript-eslint/no-empty-interface\n  /**\n   * A base class for modifiers which need more capabilities than function-based\n   * modifiers. Useful if, for example:\n   *\n   * 1. You need to inject services and access them\n   * 2. You need fine-grained control of updates, either for performance or\n   *    convenience reasons, and don't want to teardown the state of your modifier\n   *    every time only to set it up again.\n   * 3. You need to store some local state within your modifier.\n   *\n   * The lifecycle hooks of class modifiers are tracked. When they run, they any\n   * values they access will be added to the modifier, and the modifier will\n   * update if any of those values change.\n   */\n  var ClassBasedModifier = _exports.default = /*#__PURE__*/function () {\n    // Done this way with the weird combination of `declare` and `defineProperty`\n    // so that subclasses which are overriding this by writing their own `args`\n    // field type declarations continue to type check correctly. (If we introduced\n    // a getter here, existing classes defining their args via a `declare args:`\n    // would stop type checking, because TS -- correctly! -- differentiates\n    // between class fields and getters).\n    /**\n     * The arguments passed to the modifier. `args.positional` is an array of\n     * positional arguments, and `args.named` is an object containing the named\n     * arguments.\n     *\n     * @deprecated Until 4.0. Access positional and named arguments directly in\n     *   the `modify` hook instead.\n     */\n\n    // Done this way with the weird combination of `declare` and `defineProperty`\n    // so that subclasses which are overriding this by writing their own `element`\n    // field declarations continue to type check correctly.\n    /**\n     * The element the modifier is applied to.\n     *\n     * @warning `element` is ***not*** available during `constructor` or\n     *   `willDestroy`.\n     * @deprecated Until 4.0. Access the `element` as an argument in the `modify`\n     *   hook instead.\n     */\n\n    function ClassBasedModifier(owner, args) {\n      _classCallCheck(this, ClassBasedModifier);\n      (0, _application.setOwner)(this, owner);\n\n      // SAFETY: the point here is (for the period where we are providing `args`\n      // and `element`) to provide an internal-only way of setting and update the\n      // `args` for the modifier instance; we use the `InternalClassBasedModifier`\n      // interface to represent the internal-only API in a way that end users do\n      // *not* have access to when subclassing `ClassBasedModifier`.\n      this[Args] = args;\n      (true && !(!(_implementsModify(this) && _implementsLegacyHooks(this))) && (0, _debug.assert)('ember-modifier: You cannot implement both `modify` and any of the deprecated legacy lifecycle hooks (`didInstall`, `didReceiveArguments`, and `didUpdateArguments`)', !(_implementsModify(this) && _implementsLegacyHooks(this))));\n      (true && !(this.willDestroy === ClassBasedModifier.prototype.willDestroy || SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor)) && (0, _debug.deprecate)(\"ember-modifier (in \".concat(this.constructor.name, \" at \").concat(new Error().stack, \"): `willDestroy`, `isDestroyed`, and `isDestroyed` are deprecated. Use the corresponding API from '@ember/destroyable' instead.\"), this.willDestroy === ClassBasedModifier.prototype.willDestroy || SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor), {\n        id: 'ember-modifier.use-destroyables',\n        until: '4.0.0',\n        for: 'ember-modifier',\n        since: {\n          available: '3.2.0',\n          enabled: '3.2.0'\n        }\n      }));\n      if (true /* DEBUG */ && !SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor)) {\n        SEEN_CLASSES_FOR_DESTROYABLES.add(this.constructor);\n      }\n      (true && !(_implementsModify(this) || SEEN_CLASSES_FOR_LIFECYCLE.has(this.constructor)) && (0, _debug.deprecate)(\"ember-modifier (in \".concat(this.constructor.name, \" at \").concat(new Error().stack, \"): The `didInstall`, `didReceiveArguments`, and `didUpdateArguments` hooks are deprecated. Use the new `modify` hook instead.\"), _implementsModify(this) || SEEN_CLASSES_FOR_LIFECYCLE.has(this.constructor), {\n        id: 'ember-modifier.use-modify',\n        until: '4.0.0',\n        for: 'ember-modifier',\n        since: {\n          available: '3.2.0',\n          enabled: '3.2.0'\n        }\n      }));\n      if (true /* DEBUG */ && !SEEN_CLASSES_FOR_LIFECYCLE.has(this.constructor)) {\n        SEEN_CLASSES_FOR_LIFECYCLE.add(this.constructor);\n      }\n    }\n\n    /**\n     * Called when the modifier is installed and any time any tracked state used\n     * in the modifier changes.\n     *\n     * If you need to do first-time-only setup, create a class field representing\n     * the initialization state and check it when running the hook. That is also\n     * where and when you should use `registerDestructor` for any teardown you\n     * need to do. For example:\n     *\n     * ```js\n     * function disconnect(instance) {\n     *  instance.observer?.disconnect();\n     * }\n     *\n     * class IntersectionObserver extends Modifier {\n     *   observer;\n     *\n     *   constructor(owner, args) {\n     *     super(owner, args);\n     *     registerDestructor(this, disconnect);\n     *   }\n     *\n     *   modify(element, callback, options) {\n     *     disconnect(this);\n     *\n     *     this.observer = new IntersectionObserver(callback, options);\n     *     this.observer.observe(element);\n     *   }\n     * }\n     * ```\n     *\n     * @param element The element to which the modifier is applied.\n     * @param positional The positional arguments to the modifier.\n     * @param named The named arguments to the modifier.\n     */\n    return _createClass(ClassBasedModifier, [{\n      key: \"modify\",\n      value: function modify(/* eslint-disable @typescript-eslint/no-unused-vars */\n      element, positional, named) {\n        /* no op, for subclassing */\n      }\n\n      /**\n       * Called when the modifier is installed **and** anytime the arguments are\n       * updated.\n       *\n       * @deprecated Until 4.0. Use `modify()`.\n       */\n    }, {\n      key: \"didReceiveArguments\",\n      value: function didReceiveArguments() {\n        /* no op, for subclassing */\n      }\n\n      /**\n       * Called anytime the arguments are updated but **not** on the initial\n       * install. Called before `didReceiveArguments`.\n       *\n       * @deprecated Until 4.0. Use `modify()`.\n       */\n    }, {\n      key: \"didUpdateArguments\",\n      value: function didUpdateArguments() {\n        /* no op, for subclassing */\n      }\n\n      /**\n       * Called when the modifier is installed on the DOM element. Called after\n       * `didReceiveArguments`.\n       *\n       * @deprecated Until 4.0. Use `modify()`.\n       */\n    }, {\n      key: \"didInstall\",\n      value: function didInstall() {\n        /* no op, for subclassing */\n      }\n\n      /**\n       * Called when the DOM element is about to be destroyed; use for removing\n       * event listeners on the element and other similar clean-up tasks.\n       *\n       * @deprecated since 2.0.0: prefer to use `willDestroy`, since both it and\n       *   `willRemove` can perform all the same operations, including on the\n       *   `element`.\n       */\n    }, {\n      key: \"willRemove\",\n      value: function willRemove() {\n        /* no op, for subclassing */\n      }\n\n      /**\n       * Called when the modifier itself is about to be destroyed; use for teardown\n       * code. Called after `willRemove`.\n       *\n       * @deprecated Until 4.0. Use `registerDestructor` from `@ember/destroyables`.\n       */\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        /* no op, for subclassing */\n      }\n\n      /**\n       * @deprecated Until 4.0. Use `isDestroying` from `@ember/destroyables`.\n       */\n    }, {\n      key: \"isDestroying\",\n      get: function get() {\n        (true && !(SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor)) && (0, _debug.deprecate)('Modifier.isDestroying is deprecated', SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor), {\n          id: 'ember-modifier.use-destroyables',\n          until: '4.0.0',\n          for: 'ember-modifier',\n          since: {\n            available: '3.2.0',\n            enabled: '3.2.0'\n          }\n        }));\n        if (true /* DEBUG */ && !SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor)) {\n          SEEN_CLASSES_FOR_DESTROYABLES.add(this.constructor);\n        }\n        return (0, _destroyable.isDestroying)(this);\n      }\n\n      /**\n       * @deprecated Until 4.0. Use `isDestroyed` from `@ember/destroyables`.\n       */\n    }, {\n      key: \"isDestroyed\",\n      get: function get() {\n        (true && !(SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor)) && (0, _debug.deprecate)('Modifier.isDestroyed is deprecated', SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor), {\n          id: 'ember-modifier.use-destroyables',\n          until: '4.0.0',\n          for: 'ember-modifier',\n          since: {\n            available: '3.2.0',\n            enabled: '3.2.0'\n          }\n        }));\n        if (true /* DEBUG */ && !SEEN_CLASSES_FOR_DESTROYABLES.has(this.constructor)) {\n          SEEN_CLASSES_FOR_DESTROYABLES.add(this.constructor);\n        }\n        return (0, _destroyable.isDestroyed)(this);\n      }\n    }]);\n  }(); // We apply these here, against the prototype, so that there is only one of\n  // these, rather than one per instance. We also only issue the deprecation once\n  // per class for each of `args` and `element`.\n  Object.defineProperty(ClassBasedModifier.prototype, 'args', {\n    enumerable: true,\n    get: function get() {\n      (true && !(SEEN_CLASSES_FOR_ARGS.has(this.constructor)) && (0, _debug.deprecate)(\"ember-modifier (in \".concat(this.constructor.name, \" at \").concat(new Error().stack, \"): using `this.args` is deprecated. Access positional and named arguments directly in the `modify` hook instead.\"), SEEN_CLASSES_FOR_ARGS.has(this.constructor), {\n        id: 'ember-modifier.no-args-property',\n        for: 'ember-modifier',\n        since: {\n          available: '3.2.0',\n          enabled: '3.2.0'\n        },\n        until: '4.0.0'\n      }));\n      if (true /* DEBUG */ && !SEEN_CLASSES_FOR_ARGS.has(this.constructor)) {\n        SEEN_CLASSES_FOR_ARGS.add(this.constructor);\n      }\n      return this[Args];\n    }\n  });\n  Object.defineProperty(ClassBasedModifier.prototype, 'element', {\n    enumerable: true,\n    get: function get() {\n      var _this$Element;\n      (true && !(SEEN_CLASSES_FOR_ELEMENTS.has(this.constructor)) && (0, _debug.deprecate)(\"ember-modifier (in \".concat(this.constructor.name, \" at \").concat(new Error().stack, \"): using `this.element` is deprecated. Access the `element` as an argument in the `modify` hook instead.\"), SEEN_CLASSES_FOR_ELEMENTS.has(this.constructor), {\n        id: 'ember-modifier.no-element-property',\n        for: 'ember-modifier',\n        since: {\n          available: '3.2.0',\n          enabled: '3.2.0'\n        },\n        until: '4.0.0'\n      }));\n      if (true /* DEBUG */ && !SEEN_CLASSES_FOR_ELEMENTS.has(this.constructor)) {\n        SEEN_CLASSES_FOR_ELEMENTS.add(this.constructor);\n      }\n      return (_this$Element = this[Element]) !== null && _this$Element !== void 0 ? _this$Element : null;\n    }\n  });\n\n  /**\n   * @internal This provides an interface we can use to backwards-compatibly set\n   *   up the element in a way that external callers will not have access to or\n   *   even see.\n   */\n\n  (0, _modifier.setModifierManager)(function (owner) {\n    return new _modifierManager.default(owner);\n  }, ClassBasedModifier);\n});","define(\"ember-modifier/-private/compat\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.consumeArgs = void 0;\n  _exports.isFactory = isFactory;\n  function isFactory(\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  _factoryOrClass) {\n    return !true;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  var noop = function noop() {};\n\n  /**\n   * Consume each positional and named argument to entangle it in autotracking and\n   * enable updates.\n   *\n   * This is a temporary workaround for a change in the autotracking semantics of\n   * the args proxy introduced in `v3.22`. What changed is that arguments are no\n   * longer eagerly consumed. Didn’t use an argument? Then updates won’t be run\n   * when its value changes. This workaround reproduces the previous behaviour to\n   * avoid introducing a breaking change until a suitable transition path is made\n   * available.\n   */\n  var consumeArgs = _exports.consumeArgs = noop;\n  if (true) {\n    _exports.consumeArgs = consumeArgs = function consumeArgs(_ref2) {\n      var positional = _ref2.positional,\n        named = _ref2.named;\n      // SAFETY: TS before 4.6 does not correctly/fully resolve the type in a way\n      // that allows the type checker to see that `positional` must *always* be\n      // something which `extends unknown[]` here, because the underlying\n      // machinery is fairly complicated and relies on a fair bit of type\n      // recursion. It will stop mattering when we cut v4.0, because we won't be\n      // doing this anyway.\n      var pos = positional;\n      for (var i = 0; i < pos.length; i++) {\n        pos[i];\n      }\n\n      // SAFETY: TS 4.7 does not see that `named` will always be an object here.\n      // However, it is guaranteed to be resolved as such by the types. This *may*\n      // be a bug (https://github.com/microsoft/TypeScript/issues/48468), but it\n      // *should* also stop being relevant once we ship 4.0.\n      Object.values(named);\n    };\n  }\n});","define(\"ember-modifier/-private/function-based/modifier-manager\", [\"exports\", \"@ember/modifier\", \"ember-modifier/-private/compat\"], function (_exports, _modifier, _compat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  // Wraps the unsafe (b/c it mutates, rather than creating new state) code that\n  // TS does not yet understand.\n  function installElement(state, element) {\n    // SAFETY: this cast represents how we are actually handling the state machine\n    // transition: from this point forward in the lifecycle of the modifier, it\n    // always behaves as `InstalledState<S>`. It is safe because, and *only*\n    // because, we immediately initialize `element`. (We cannot create a new state\n    // from the old one because the modifier manager API expects mutation of a\n    // single state bucket rather than updating it at hook calls.)\n    var installedState = state;\n    installedState.element = element;\n    return installedState;\n  }\n  var FunctionBasedModifierManager = _exports.default = /*#__PURE__*/function () {\n    function FunctionBasedModifierManager(options) {\n      var _options$eager;\n      _classCallCheck(this, FunctionBasedModifierManager);\n      _defineProperty(this, \"capabilities\", (0, _modifier.capabilities)(true ? '3.22' : '3.13'));\n      _defineProperty(this, \"options\", void 0);\n      this.options = {\n        eager: (_options$eager = options === null || options === void 0 ? void 0 : options.eager) !== null && _options$eager !== void 0 ? _options$eager : true\n      };\n    }\n    return _createClass(FunctionBasedModifierManager, [{\n      key: \"createModifier\",\n      value: function createModifier(factoryOrClass) {\n        var instance = (0, _compat.isFactory)(factoryOrClass) ? factoryOrClass.class : factoryOrClass;\n        return {\n          element: null,\n          instance: instance\n        };\n      }\n    }, {\n      key: \"installModifier\",\n      value: function installModifier(createdState, element, args) {\n        var state = installElement(createdState, element);\n        var positional = args.positional,\n          named = args.named;\n        var teardown = createdState.instance(element, positional, named);\n        if (typeof teardown === 'function') {\n          state.teardown = teardown;\n        }\n        if (true && this.options.eager) {\n          (0, _compat.consumeArgs)(args);\n        }\n      }\n    }, {\n      key: \"updateModifier\",\n      value: function updateModifier(state, args) {\n        if (state.teardown) {\n          state.teardown();\n        }\n        var teardown = state.instance(state.element, args.positional, args.named);\n        if (typeof teardown === 'function') {\n          state.teardown = teardown;\n        }\n        if (true && this.options.eager) {\n          (0, _compat.consumeArgs)(args);\n        }\n      }\n    }, {\n      key: \"destroyModifier\",\n      value: function destroyModifier(state) {\n        if (typeof state.teardown === 'function') {\n          state.teardown();\n        }\n      }\n    }]);\n  }();\n});","define(\"ember-modifier/-private/function-based/modifier\", [\"exports\", \"@ember/debug\", \"@ember/modifier\", \"ember-modifier/-private/class/modifier\", \"ember-modifier/-private/function-based/modifier-manager\"], function (_exports, _debug, _modifier, _modifier2, _modifierManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = modifier;\n  // Provide a singleton manager for each of the options. (If we extend this to\n  // many more options in the future, we can revisit, but for now this means we\n  // only ever allocate two managers.)\n  var EAGER_MANAGER = new _modifierManager.default({\n    eager: true\n  });\n  var LAZY_MANAGER = new _modifierManager.default({\n    eager: false\n  });\n\n  // This type exists to provide a non-user-constructible, non-subclassable\n  // type representing the conceptual \"instance type\" of a function modifier.\n  // The abstract field of type `never` prevents subclassing in userspace of\n  // the value returned from `modifier()`. By extending `Modifier<S>`, any\n  // augmentations of the `Modifier` type performed by tools like Glint will\n  // also apply to function-based modifiers as well.\n\n  // This provides a type whose only purpose here is to represent the runtime\n  // type of a function-based modifier: a virtually opaque item. The fact that it's\n  // a bare constructor type allows `modifier()` to preserve type parameters from\n  // a generic function it's passed, and by making it abstract and impossible to\n  // subclass (see above) we prevent users from attempting to instantiate the return\n  // value from a `modifier()` call.\n\n  /**\n   * The (optional) return type for a modifier which needs to perform some kind of\n   * cleanup or teardown -- for example, removing an event listener from an\n   * element besides the one passed into the modifier.\n   */\n\n  /**\n   * An API for writing simple modifiers.\n   *\n   * This function runs the first time when the element the modifier was applied\n   * to is inserted into the DOM, and it *autotracks* while running. Any values\n   * that it accesses will be tracked, and if any of them changes, the function\n   * will run again.\n   *\n   * **Note:** this will rerun if any of its arguments change, *whether or not you\n   * access them*. This is legacy behavior and you should switch to using the\n   * `{ eager: false }` variant, which has normal auto-tracking semantics.\n   *\n   * The modifier can also optionally return a *destructor*. The destructor\n   * function will be run just before the next update, and when the element is\n   * being removed entirely. It should generally clean up the changes that the\n   * modifier made in the first place.\n   *\n   * @deprecated Until 4.0. Calling `modifier()` without an options argument is\n   *   deprecated. It is supported until 4.0 so that existing modifiers can be\n   *   migrated individually. Please update your function-based modifiers to pass\n   *   `{ eager: false }`.\n   *\n   * @param fn The function which defines the modifier.\n   */\n  // This overload allows users to write types directly on the callback passed to\n  // the `modifier` function and infer the resulting type correctly.\n\n  /**\n   * An API for writing simple modifiers.\n   *\n   * This function runs the first time when the element the modifier was applied\n   * to is inserted into the DOM, and it *autotracks* while running. Any values\n   * that it accesses will be tracked, and if any of them changes, the function\n   * will run again.\n   *\n   * **Note:** this will rerun if any of its arguments change, *whether or not you\n   * access them*. This is legacy behavior and you should switch to using the\n   * `{ eager: false }` variant, which has normal auto-tracking semantics.\n   *\n   * The modifier can also optionally return a *destructor*. The destructor\n   * function will be run just before the next update, and when the element is\n   * being removed entirely. It should generally clean up the changes that the\n   * modifier made in the first place.\n   *\n   * @deprecated Until 4.0. Calling `modifier()` with `{ eager: true }` is\n   *   deprecated. It is supported until 4.0 so that existing modifiers can be\n   *   migrated individually. Please update your function-based modifiers to pass\n   *   `{ eager: false }`.\n   *\n   * @param fn The function which defines the modifier.\n   * @param options Configuration for the modifier.\n   */\n  // This overload allows users to write types directly on the callback passed to\n  // the `modifier` function and infer the resulting type correctly.\n\n  /**\n   * An API for writing simple modifiers.\n   *\n   * This function runs the first time when the element the modifier was applied\n   * to is inserted into the DOM, and it *autotracks* while running. Any values\n   * that it accesses will be tracked, including any of its arguments that it\n   * accesses, and if any of them changes, the function will run again.\n   *\n   * **Note:** this will *not* automatically rerun because an argument changes. It\n   * will only rerun if it is *using* that argument (the same as with auto-tracked\n   * state in general).\n   *\n   * The modifier can also optionally return a *destructor*. The destructor\n   * function will be run just before the next update, and when the element is\n   * being removed entirely. It should generally clean up the changes that the\n   * modifier made in the first place.\n   *\n   * @param fn The function which defines the modifier.\n   * @param options Configuration for the modifier.\n   */\n  // This overload allows users to write types directly on the callback passed to\n  // the `modifier` function and infer the resulting type correctly.\n\n  /**\n   * An API for writing simple modifiers.\n   *\n   * This function runs the first time when the element the modifier was applied\n   * to is inserted into the DOM, and it *autotracks* while running. Any values\n   * that it accesses will be tracked, including any of its arguments that it\n   * accesses, and if any of them changes, the function will run again.\n   *\n   * **Note:** this will *not* automatically rerun because an argument changes. It\n   * will only rerun if it is *using* that argument (the same as with auto-tracked\n   * state in general).\n   *\n   * The modifier can also optionally return a *destructor*. The destructor\n   * function will be run just before the next update, and when the element is\n   * being removed entirely. It should generally clean up the changes that the\n   * modifier made in the first place.\n   *\n   * @param fn The function which defines the modifier.\n   * @param options Configuration for the modifier.\n   */\n  // This overload allows users to provide a `Signature` type explicitly at the\n  // modifier definition site, e.g. `modifier<Sig>((el, pos, named) => {...})`.\n  // **Note:** this overload must appear second, since TS' inference engine will\n  // not correctly infer the type of `S` here from the types on the supplied\n  // callback.\n\n  // This is the runtime signature; it performs no inference whatsover and just\n  // uses the simplest version of the invocation possible since, for the case of\n  // setting it on the modifier manager, we don't *need* any of that info, and\n  // the two previous overloads capture all invocations from a type perspective.\n  function modifier(fn) {\n    var _fn$name, _fn$name2;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      eager: true\n    };\n    (true && !(options !== undefined) && (0, _debug.deprecate)(\"ember-modifier (for \".concat((_fn$name = fn.name) !== null && _fn$name !== void 0 ? _fn$name : fn, \" at \").concat(new Error().stack, \"): creating a function-based modifier without options is deprecated and will be removed at v4.0\"), options !== undefined, {\n      id: 'ember-modifier.function-based-options',\n      for: 'ember-modifier',\n      since: {\n        available: '3.2.0',\n        enabled: '3.2.0'\n      },\n      until: '4.0.0'\n    }));\n    (true && !((options === null || options === void 0 ? void 0 : options.eager) === false) && (0, _debug.deprecate)(\"ember-modifier (for \".concat((_fn$name2 = fn.name) !== null && _fn$name2 !== void 0 ? _fn$name2 : fn, \" at \").concat(new Error().stack, \"): creating a function-based modifier with `{ eager: true }` is deprecated and will be removed at v4.0\"), (options === null || options === void 0 ? void 0 : options.eager) === false, {\n      id: 'ember-modifier.function-based-options',\n      for: 'ember-modifier',\n      since: {\n        available: '3.2.0',\n        enabled: '3.2.0'\n      },\n      until: '4.0.0'\n    })); // SAFETY: the cast here is a *lie*, but it is a useful one. The actual return\n    // type of `setModifierManager` today is `void`; we pretend it actually\n    // returns an opaque `Modifier` type so that we can provide a result from this\n    // type which is useful to TS-aware tooling (e.g. Glint).\n    return (0, _modifier.setModifierManager)(function () {\n      return options.eager ? EAGER_MANAGER : LAZY_MANAGER;\n    }, fn);\n  }\n\n  /**\n   * @internal\n   */\n\n  /**\n   * @deprecated Instead of defining a function to match this type, simply define\n   *   a function-based modifier either using a `Signature` or by defining the\n   *   types on the callback passed to the `modifier`.\n   */\n});","define(\"ember-modifier/-private/functional/modifier-manager\", [\"exports\", \"@ember/modifier\"], function (_exports, _modifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var MODIFIER_ELEMENTS = new WeakMap();\n  var MODIFIER_TEARDOWNS = new WeakMap();\n  function teardown(modifier) {\n    var teardown = MODIFIER_TEARDOWNS.get(modifier);\n    if (teardown && typeof teardown === 'function') {\n      teardown();\n    }\n  }\n  function setup(modifier, element, args) {\n    var positional = args.positional,\n      named = args.named;\n    var teardown = modifier(element, positional, named);\n    MODIFIER_TEARDOWNS.set(modifier, teardown);\n  }\n  var FunctionalModifierManager = _exports.default = /*#__PURE__*/function () {\n    function FunctionalModifierManager() {\n      _classCallCheck(this, FunctionalModifierManager);\n      _defineProperty(this, \"capabilities\", (0, _modifier.capabilities)('3.13'));\n    }\n    return _createClass(FunctionalModifierManager, [{\n      key: \"createModifier\",\n      value: function createModifier(factory) {\n        var fn = factory.class;\n\n        // This looks superfluous, but this is creating a new instance\n        // of a function -- this is important so that each instance of the\n        // created modifier can have its own state which is stored in\n        // the MODIFIER_ELEMENTS and MODIFIER_TEARDOWNS WeakMaps\n        return function () {\n          return fn.apply(void 0, arguments);\n        };\n      }\n    }, {\n      key: \"installModifier\",\n      value: function installModifier(modifier, element, args) {\n        MODIFIER_ELEMENTS.set(modifier, element);\n        setup(modifier, element, args);\n      }\n    }, {\n      key: \"updateModifier\",\n      value: function updateModifier(modifier, args) {\n        var element = MODIFIER_ELEMENTS.get(modifier);\n        teardown(modifier);\n        setup(modifier, element, args);\n      }\n    }, {\n      key: \"destroyModifier\",\n      value: function destroyModifier(modifier) {\n        teardown(modifier);\n      }\n    }]);\n  }();\n});","define(\"ember-modifier/-private/functional/modifier\", [\"exports\", \"@ember/modifier\", \"ember-modifier/-private/functional/modifier-manager\"], function (_exports, _modifier, _modifierManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = modifier;\n  var MANAGERS = new WeakMap();\n  function managerFor(owner) {\n    var manager = MANAGERS.get(owner);\n    if (manager === undefined) {\n      manager = new _modifierManager.default(owner);\n    }\n    return manager;\n  }\n  function modifier(fn) {\n    return (0, _modifier.setModifierManager)(managerFor, fn);\n  }\n});","define(\"ember-modifier/-private/interfaces\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n});","define(\"ember-modifier/-private/opaque\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n});","define(\"ember-modifier/-private/signature\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n});","define(\"ember-modifier/-private/utils/symbol\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.symbol = void 0;\n  /**\n   * This symbol provides a Symbol replacement for browsers that do not have it\n   * (eg. IE 11).\n   *\n   * The replacement is different from the native Symbol in some ways. It is a\n   * function that produces an output:\n   * - iterable;\n   * - that is a string, not a symbol.\n   *\n   * This is inspired by:\n   * https://github.com/emberjs/data/blob/master/packages/store/addon/-private/ts-interfaces/utils/symbol.ts\n   *\n   */\n  var symbol = _exports.symbol = typeof Symbol !== 'undefined' ? Symbol : function (key) {\n    return \"__\".concat(key).concat(Math.floor(Math.random() * Date.now()), \"__\");\n  };\n});","define(\"ember-modifier/index\", [\"exports\", \"ember-modifier/-private/class/modifier\", \"ember-modifier/-private/function-based/modifier\"], function (_exports, _modifier, _modifier2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _modifier.default;\n    }\n  });\n  Object.defineProperty(_exports, \"modifier\", {\n    enumerable: true,\n    get: function get() {\n      return _modifier2.default;\n    }\n  });\n});","define(\"ember-on-helper/helpers/on-document\", [\"exports\", \"ember-on-helper/helpers/on\"], function (_exports, _on) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var _default = _exports.default = _on.default.extend({\n    compute: function compute(positional, named) {\n      return this._super([document].concat(_toConsumableArray(positional)), named);\n    }\n  });\n});","define(\"ember-on-helper/helpers/on-window\", [\"exports\", \"ember-on-helper/helpers/on\"], function (_exports, _on) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var _default = _exports.default = _on.default.extend({\n    compute: function compute(positional, named) {\n      return this._super([window].concat(_toConsumableArray(positional)), named);\n    }\n  });\n});","define(\"ember-on-helper/helpers/on\", [\"exports\", \"@ember/component/helper\", \"ember-on-helper/utils/event-listener\", \"@ember/debug\"], function (_exports, _helper, _eventListener, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.__counts = __counts;\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /* eslint no-param-reassign: \"off\" */\n  /**\n   * These are private API and only used for testing instrumentation.\n   */\n  var adds = 0;\n  var removes = 0;\n  function __counts() {\n    return {\n      adds: adds,\n      removes: removes\n    };\n  }\n  var assertValidEventOptions = true /* DEBUG */ && function () {\n    var ALLOWED_EVENT_OPTIONS = ['capture', 'once', 'passive'];\n    var joinOptions = function joinOptions(options) {\n      return options.map(function (o) {\n        return \"'\".concat(o, \"'\");\n      }).join(', ');\n    };\n    return function (eventOptions, eventName) {\n      var invalidOptions = Object.keys(eventOptions).filter(function (o) {\n        return !ALLOWED_EVENT_OPTIONS.includes(o);\n      });\n      (true && !(invalidOptions.length === 0) && (0, _debug.assert)(\"ember-on-helper: Provided invalid event options (\".concat(joinOptions(invalidOptions), \") to '\").concat(eventName, \"' event listener. Only these options are valid: \").concat(joinOptions(ALLOWED_EVENT_OPTIONS)), invalidOptions.length === 0));\n    };\n  }();\n  function setupListener(eventTarget, eventName, callback, eventOptions) {\n    if (true /* DEBUG */) assertValidEventOptions(eventOptions, eventName);\n    (true && !(eventTarget && typeof eventTarget.addEventListener === 'function' && typeof eventTarget.removeEventListener === 'function') && (0, _debug.assert)(\"ember-on-helper: '\".concat(eventTarget, \"' is not a valid event target. It has to be an Element or an object that conforms to the EventTarget interface.\"), eventTarget && typeof eventTarget.addEventListener === 'function' && typeof eventTarget.removeEventListener === 'function'));\n    (true && !(typeof eventName === 'string' && eventName.length > 1) && (0, _debug.assert)(\"ember-on-helper: '\".concat(eventName, \"' is not a valid event name. It has to be a string with a minimum length of 1 character.\"), typeof eventName === 'string' && eventName.length > 1));\n    (true && !(typeof callback === 'function') && (0, _debug.assert)(\"ember-on-helper: '\".concat(callback, \"' is not a valid callback. Provide a function.\"), typeof callback === 'function'));\n    adds++;\n    (0, _eventListener.addEventListener)(eventTarget, eventName, callback, eventOptions);\n    return callback;\n  }\n  function destroyListener(eventTarget, eventName, callback, eventOptions) {\n    if (eventTarget && eventName && callback) {\n      removes++;\n      (0, _eventListener.removeEventListener)(eventTarget, eventName, callback, eventOptions);\n    }\n  }\n  var _default = _exports.default = _helper.default.extend({\n    eventTarget: null,\n    eventName: undefined,\n    callback: undefined,\n    eventOptions: undefined,\n    compute: function compute(_ref, eventOptions) {\n      var _ref2 = _slicedToArray(_ref, 3),\n        eventTarget = _ref2[0],\n        eventName = _ref2[1],\n        callback = _ref2[2];\n      destroyListener(this.eventTarget, this.eventName, this.callback, this.eventOptions);\n      this.eventTarget = eventTarget;\n      this.callback = setupListener(this.eventTarget, eventName, callback, eventOptions);\n      this.eventName = eventName;\n      this.eventOptions = eventOptions;\n    },\n    willDestroy: function willDestroy() {\n      this._super();\n      destroyListener(this.eventTarget, this.eventName, this.callback, this.eventOptions);\n    }\n  });\n});","define(\"ember-on-helper/utils/event-listener\", [\"exports\", \"@ember/debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.SUPPORTS_EVENT_OPTIONS = void 0;\n  _exports.addEventListener = addEventListener;\n  _exports.addEventListenerOnce = addEventListenerOnce;\n  _exports.removeEventListener = removeEventListener;\n  /* eslint no-param-reassign: \"off\" */\n\n  /**\n   * Internet Explorer 11 does not support `once` and also does not support\n   * passing `eventOptions`. In some situations it then throws a weird script\n   * error, like:\n   *\n   * ```\n   * Could not complete the operation due to error 80020101\n   * ```\n   *\n   * This flag determines, whether `{ once: true }` and thus also event options in\n   * general are supported.\n   */\n  var SUPPORTS_EVENT_OPTIONS = _exports.SUPPORTS_EVENT_OPTIONS = function () {\n    try {\n      var div = document.createElement('div');\n      var counter = 0;\n      div.addEventListener('click', function () {\n        return counter++;\n      }, {\n        once: true\n      });\n      var event;\n      if (typeof Event === 'function') {\n        event = new Event('click');\n      } else {\n        event = document.createEvent('Event');\n        event.initEvent('click', true, true);\n      }\n      div.dispatchEvent(event);\n      div.dispatchEvent(event);\n      return counter === 1;\n    } catch (error) {\n      return false;\n    }\n  }();\n\n  /**\n   * Registers an event for an `element` that is called exactly once and then\n   * unregistered again. This is effectively a polyfill for `{ once: true }`.\n   *\n   * It also accepts a fourth optional argument `useCapture`, that will be passed\n   * through to `addEventListener`.\n   *\n   * @param {Element} element\n   * @param {string} eventName\n   * @param {Function} callback\n   * @param {boolean} [useCapture=false]\n   */\n  function addEventListenerOnce(element, eventName, callback) {\n    var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n    function listener() {\n      element.removeEventListener(eventName, listener, useCapture);\n      callback();\n    }\n    element.addEventListener(eventName, listener, useCapture);\n  }\n\n  /**\n   * Safely invokes `addEventListener` for IE11 and also polyfills the\n   * `{ once: true }` and `{ capture: true }` options.\n   *\n   * All other options are discarded for IE11. Currently this is only `passive`.\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n   *\n   * @param {Element} element\n   * @param {string} eventName\n   * @param {Function} callback\n   * @param {object} [eventOptions]\n   */\n  function addEventListener(element, eventName, callback, eventOptions) {\n    var _callback = true /* DEBUG */ && eventOptions && eventOptions.passive ? function (event) {\n      event.preventDefault = function () {\n        (true && !(false) && (0, _debug.assert)(\"ember-on-helper: You marked this listener as 'passive', meaning that you must not call 'event.preventDefault()'.\"));\n      };\n      return callback.call(this, event);\n    } : callback;\n    if (SUPPORTS_EVENT_OPTIONS) {\n      element.addEventListener(eventName, _callback, eventOptions);\n    } else if (eventOptions && eventOptions.once) {\n      addEventListenerOnce(element, eventName, _callback, Boolean(eventOptions.capture));\n    } else {\n      element.addEventListener(eventName, _callback, Boolean(eventOptions && eventOptions.capture));\n    }\n  }\n\n  /**\n   * Since the same `capture` event option that was used to add the event listener\n   * needs to be used when removing the listener, it needs to be polyfilled as\n   * `useCapture` for IE11.\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n   *\n   * @param {Element} element\n   * @param {string} eventName\n   * @param {Function} callback\n   * @param {object} [eventOptions]\n   */\n  function removeEventListener(element, eventName, callback, eventOptions) {\n    if (SUPPORTS_EVENT_OPTIONS) {\n      element.removeEventListener(eventName, callback, eventOptions);\n    } else {\n      element.removeEventListener(eventName, callback, Boolean(eventOptions && eventOptions.capture));\n    }\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-on-resize-modifier/modifiers/on-resize\", [\"exports\", \"ember-modifier\", \"@ember/service\", \"@ember/object\", \"@ember/debug\"], function (_exports, _emberModifier, _service, _object, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var OnResizeModifier = _exports.default = (_class = /*#__PURE__*/function (_Modifier) {\n    function OnResizeModifier() {\n      var _this;\n      _classCallCheck(this, OnResizeModifier);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, OnResizeModifier, [].concat(args));\n      _initializerDefineProperty(_this, \"resizeObserver\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(OnResizeModifier, _Modifier);\n    return _createClass(OnResizeModifier, [{\n      key: \"callback\",\n      get: function get() {\n        return this.args.positional[0];\n      }\n    }, {\n      key: \"didReceiveArguments\",\n      value: function didReceiveArguments() {\n        (true && !(typeof this.callback === 'function') && (0, _debug.assert)(\"on-resize-modifier: callback must be a function, but was \".concat(this.callback), typeof this.callback === 'function'));\n      }\n    }, {\n      key: \"didInstall\",\n      value: function didInstall() {\n        this.resizeObserver.observe(this.element, this.handleResize);\n      }\n    }, {\n      key: \"willRemove\",\n      value: function willRemove() {\n        this.resizeObserver.unobserve(this.element, this.handleResize);\n      }\n    }, {\n      key: \"handleResize\",\n      value: function handleResize() {\n        this.callback.apply(this, arguments);\n      }\n    }]);\n  }(_emberModifier.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"resizeObserver\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleResize\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleResize\"), _class.prototype), _class);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-popper-modifier/-base-popper-modifier\", [\"exports\", \"ember-modifier\", \"@ember/destroyable\", \"@ember/array\", \"@ember/utils\", \"@popperjs/core\", \"ember-popper-modifier/index\", \"ember-popper-modifier/in-runloop-modifier\"], function (_exports, _emberModifier, _destroyable, _array, _utils, _core, _index, _inRunloopModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-modifier\",0,\"@ember/destroyable\",0,\"@ember/array\",0,\"@ember/utils\",0,\"@popperjs/core\",0,\"ember-popper-modifier/index\",0,\"ember-popper-modifier/in-runloop-modifier\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError(\"Cannot destructure \" + t); }\n  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n  function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function getPopperOptions(positional, named) {\n    var _options$modifiers;\n    // Get an array of just positional \"options\"; first item is an element reference\n    var _positional = _toArray(positional),\n      positionalArguments = _positional.slice(1);\n\n    // Positional args that are not modifiers should be treated as full \"options\" objects\n    var allPositionalOptions = positionalArguments.filter(function (arg) {\n      return !(0, _index.isModifier)(arg);\n    });\n\n    // Positional args that are modifiers will extend the rest of the configuration\n    var allPositionalModifiers = positionalArguments.filter(function (arg) {\n      return (0, _index.isModifier)(arg);\n    });\n    var namedOptions = _extends({}, (_objectDestructuringEmpty(named), named));\n    var customOptions = _objectSpread(_objectSpread({}, allPositionalOptions.reduce(function (acc, curr) {\n      return _objectSpread(_objectSpread({}, acc), curr);\n    }, {})), namedOptions);\n    var options = _objectSpread(_objectSpread({}, customOptions), {}, {\n      // Ensure that the `modifiers` is always an array\n      modifiers: customOptions.modifiers === undefined || (0, _utils.isEmpty)(customOptions.modifiers) ? [] : (0, _array.isArray)(customOptions.modifiers) ? customOptions.modifiers : [customOptions.modifiers]\n    });\n\n    // Add runloop integration and positional modifiers to the array of modifiers\n    (_options$modifiers = options.modifiers) === null || _options$modifiers === void 0 || _options$modifiers.push.apply(_options$modifiers, _toConsumableArray(allPositionalModifiers).concat([_inRunloopModifier.beginRunLoopModifier, _inRunloopModifier.endRunLoopModifier]));\n    return options;\n  }\n  var PopperModifier = _exports.default = /*#__PURE__*/function (_Modifier) {\n    function PopperModifier(owner, args) {\n      var _this;\n      _classCallCheck(this, PopperModifier);\n      _this = _callSuper(this, PopperModifier, [owner, args]);\n      _defineProperty(_this, \"popper\", null);\n      _defineProperty(_this, \"primaryElement\", null);\n      _defineProperty(_this, \"secondaryElement\", null);\n      _defineProperty(_this, \"cleanup\", function () {\n        var _this$popper;\n        (_this$popper = _this.popper) === null || _this$popper === void 0 || _this$popper.destroy();\n      });\n      (0, _destroyable.registerDestructor)(_this, _this.cleanup);\n      return _this;\n    }\n    _inherits(PopperModifier, _Modifier);\n    return _createClass(PopperModifier, [{\n      key: \"modify\",\n      value: function modify(element, positionalArgs, namedArgs) {\n        var _this$popper2;\n        this.primaryElement = element;\n        this.secondaryElement = positionalArgs[0];\n        var popperOptions = getPopperOptions(positionalArgs, namedArgs);\n\n        // Create the popper once all required arguments are present\n        if (!this.popper && this.referenceElement && this.tooltipElement) {\n          this.popper = (0, _core.createPopper)(this.referenceElement, this.tooltipElement, popperOptions);\n          (0, _index.setPopperForElement)(this.primaryElement, this.popper);\n        }\n        (_this$popper2 = this.popper) === null || _this$popper2 === void 0 || _this$popper2.setOptions(popperOptions);\n      }\n    }]);\n  }(_emberModifier.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-popper-modifier/helpers/popper-modifier\", [\"exports\", \"@ember/component/helper\", \"ember-popper-modifier/index\"], function (_exports, _helper, _index) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.buildPopperModifier = buildPopperModifier;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"ember-popper-modifier/index\"eaimeta@70e063a35619d71f\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function buildPopperModifier(_ref, optionsHash) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      name = _ref2[0],\n      positionalOptions = _ref2[1];\n    var options = _objectSpread(_objectSpread({}, positionalOptions), optionsHash);\n    return (0, _index.createModifier)({\n      name: name,\n      options: options\n    });\n  }\n  var _default = _exports.default = (0, _helper.helper)(buildPopperModifier);\n});","define(\"ember-popper-modifier/in-runloop-modifier\", [\"exports\", \"@ember/runloop\"], function (_exports, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.endRunLoopModifier = _exports.beginRunLoopModifier = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\"eaimeta@70e063a35619d71f\n  // This set keeps track of whether a particular Popper instance is currently in an update\n  // loop that is tracked by the Ember Run Loop\n  //\n  // This is necessary in order to ensure that Popper changes are known to the Ember run loop,\n  // and helps make sure that, for example, Ember's test helpers wait for any re-positioning to\n  // take place before advancing\n  //\n  // We need to keep track of whether a run loop has already been started for an update cycle\n  // because the number of \"starts\" and \"ends\" of the Popper update look do not always match;\n  // if we \"start\" again before we have \"ended\", then we can open an Ember run loop that is never\n  // closed, which will cause our application to hang.\n  var POPPER_IN_RUN_LOOP = new WeakSet();\n  var FIRST_PHASE = 'beforeRead';\n  var LAST_PHASE = 'afterWrite';\n  var beginRunLoopModifier = _exports.beginRunLoopModifier = {\n    name: 'ember-runloop-begin',\n    phase: FIRST_PHASE,\n    enabled: true,\n    fn: function fn(_ref) {\n      var instance = _ref.instance;\n      if (!POPPER_IN_RUN_LOOP.has(instance)) {\n        POPPER_IN_RUN_LOOP.add(instance);\n        (0, _runloop.begin)();\n      }\n    }\n  };\n  var endRunLoopModifier = _exports.endRunLoopModifier = {\n    name: 'ember-runloop-end',\n    phase: LAST_PHASE,\n    enabled: true,\n    fn: function fn(_ref2) {\n      var instance = _ref2.instance;\n      if (POPPER_IN_RUN_LOOP.has(instance)) {\n        POPPER_IN_RUN_LOOP.delete(instance);\n        (0, _runloop.end)();\n      }\n    }\n  };\n});","define(\"ember-popper-modifier/index\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.createModifier = createModifier;\n  _exports.getPopperForElement = getPopperForElement;\n  _exports.isModifier = isModifier;\n  _exports.setPopperForElement = setPopperForElement;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var ELEMENT_TO_POPPER = new WeakMap();\n  var IS_POPPER_MODIFIER = Symbol('is-popper-modifier');\n  function getPopperForElement(element) {\n    var popperInstance = ELEMENT_TO_POPPER.get(element);\n    if (!popperInstance) {\n      throw new Error('Popper instance for element does not exist in cache');\n    }\n    return popperInstance;\n  }\n  function setPopperForElement(element, popperInstance) {\n    ELEMENT_TO_POPPER.set(element, popperInstance);\n  }\n\n  /**\n   * Mark an object as a Popper modifier\n   *\n   * @param {object} configuration\n   * @return {object}\n   */\n  function createModifier(configuration) {\n    return _objectSpread(_defineProperty({}, IS_POPPER_MODIFIER, true), configuration);\n  }\n\n  /**\n   * Check whether an object is a Popper modifier\n   *\n   * @param {object} configuration\n   * @return {boolean}\n   */\n  function isModifier(configuration) {\n    return _typeof(configuration) === 'object' && configuration !== null && IS_POPPER_MODIFIER in configuration && configuration[IS_POPPER_MODIFIER] === true;\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-popper-modifier/modifiers/popper-tooltip\", [\"exports\", \"ember-popper-modifier/-base-popper-modifier\"], function (_exports, _basePopperModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-popper-modifier/-base-popper-modifier\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var PopperModifier = _exports.default = /*#__PURE__*/function (_BasePopperModifier) {\n    function PopperModifier() {\n      _classCallCheck(this, PopperModifier);\n      return _callSuper(this, PopperModifier, arguments);\n    }\n    _inherits(PopperModifier, _BasePopperModifier);\n    return _createClass(PopperModifier, [{\n      key: \"tooltipElement\",\n      get: function get() {\n        return this.primaryElement;\n      }\n    }, {\n      key: \"referenceElement\",\n      get: function get() {\n        return this.secondaryElement;\n      }\n    }]);\n  }(_basePopperModifier.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-popper-modifier/modifiers/popper\", [\"exports\", \"ember-popper-modifier/-base-popper-modifier\"], function (_exports, _basePopperModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-popper-modifier/-base-popper-modifier\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var PopperModifier = _exports.default = /*#__PURE__*/function (_BasePopperModifier) {\n    function PopperModifier() {\n      _classCallCheck(this, PopperModifier);\n      return _callSuper(this, PopperModifier, arguments);\n    }\n    _inherits(PopperModifier, _BasePopperModifier);\n    return _createClass(PopperModifier, [{\n      key: \"tooltipElement\",\n      get: function get() {\n        return this.secondaryElement;\n      }\n    }, {\n      key: \"referenceElement\",\n      get: function get() {\n        return this.primaryElement;\n      }\n    }]);\n  }(_basePopperModifier.default);\n});","define(\"ember-popper-modifier/template-registry\", [], function () {\n  \"use strict\";\n\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/await\", [\"exports\", \"@ember/component/helper\", \"rsvp\"], function (_exports, _helper, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_Helper) {\n    /**\n     * @property valueBeforeSettled\n     * @default null\n     *\n     * This is the value that gets returned synchronously as the helper's return\n     * value before the promise is settled. For example `{{async promise}}` will return\n     * null, before the promise is resolved or rejected.\n     */\n    function _default() {\n      var _this;\n      _classCallCheck(this, _default);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, _default, [].concat(args));\n      _this.valueBeforeSettled = null;\n      return _this;\n    }\n\n    /**\n     * @method compute\n     * @public\n     * @param params Array a list of arguments passed to the Helper.\n     * @param hash Object a list of configuration options passed to the helper.\n     * This parameter is currently unused by Await.\n     */\n    _inherits(_default, _Helper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(_ref) {\n        var _this2 = this;\n        var _ref2 = _slicedToArray(_ref, 1),\n          maybePromise = _ref2[0];\n        if (!maybePromise || typeof maybePromise.then !== 'function') {\n          return maybePromise;\n        }\n        return this.ensureLatestPromise(maybePromise, /*#__PURE__*/function () {\n          var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(promise) {\n            var value;\n            return _regeneratorRuntime().wrap(function _callee$(_context) {\n              while (1) switch (_context.prev = _context.next) {\n                case 0:\n                  _context.prev = 0;\n                  _context.next = 3;\n                  return promise;\n                case 3:\n                  value = _context.sent;\n                  _this2.setValue(value, maybePromise);\n                  _context.next = 10;\n                  break;\n                case 7:\n                  _context.prev = 7;\n                  _context.t0 = _context[\"catch\"](0);\n                  _this2.setValue(null, maybePromise);\n                case 10:\n                case \"end\":\n                  return _context.stop();\n              }\n            }, _callee, null, [[0, 7]]);\n          }));\n          return function (_x) {\n            return _ref3.apply(this, arguments);\n          };\n        }());\n      }\n\n      /**\n       * @method ensureLatestPromise\n       * @public\n       * @param promise Promise the new promise coming\n       * @param callback Function function to be called with a wrapped promise\n       *\n       * Method to set the latest promise. This gets called by `compute` (which in\n       * turn gets called by `recompute`). If the promise being passed in is the\n       * same as before, then just return the value to `compute`. Otherwise, call\n       * the callback so the user can call `then`, `catch`, or `finally` on the\n       * promise to update the value using `setValue` later.\n       */\n    }, {\n      key: \"ensureLatestPromise\",\n      value: function ensureLatestPromise(promise, callback) {\n        if (this._wasSettled && promise === this._promise) {\n          return this._value;\n        } else {\n          this._unsettle();\n        }\n        this._promise = promise;\n        callback.call(this, _rsvp.Promise.resolve(promise));\n        return this.valueBeforeSettled;\n      }\n\n      /**\n       * @method _settle\n       * @private\n       */\n    }, {\n      key: \"_settle\",\n      value: function _settle(promise) {\n        if (this.allowUpdates(promise)) {\n          this._wasSettled = true;\n          this.recompute();\n        }\n      }\n\n      /**\n       * @private\n       * @method _unsettle\n       *\n       * Resets the promise to null and calls recompute. Designed to be used\n       * when a new promise is passed to the `compute` method. This would happen\n       * when the value changes in Handlebars.\n       */\n    }, {\n      key: \"_unsettle\",\n      value: function _unsettle() {\n        this._wasSettled = false;\n        this._promise = null;\n      }\n\n      /**\n       * @method setValue\n       * @public\n       * @param value Any the value to return to the helper\n       * @param promise Promise the promise the `setValue` call is coming from.\n       *\n       * `setValue` is how you should set the value to be returned to the helper\n       * in the app. It exists to prevent race conditions between promises.\n       * For example, you may have two promises:\n       *\n       * ```javascript\n       * let promise1 = new Ember.RSVP.Promise((resolve, reject) => {resolve(\"hello\");});\n       * let promise2 = new Ember.RSVP.Promise((resolve, reject) => {(resolve(\"goodbye\")});\n       * ```\n       *\n       * And a template:\n       *\n       * ```handlebars\n       * {{await promise}}\n       * ```\n       *\n       * If you set the value of `promise` to be `promise1` via your component,\n       * controller, or route, when the promise resolves, it will render the value\n       * of `promise1`, which is \"hello\".\n       *\n       * If you set the avlue of `promise` to `promise2`, you would see \"goodbye\".\n       *\n       * But what happens if `promise1` resolves asynchronously, e.g., using `Ember.run.later`?\n       *\n       * ```javascript\n       * Ember.run.later(function() {\n       *  resolve(\"hello\");\n       * }, 200);\n       * ```\n       *\n       * Even though `promise2` already resolved with \"goodbye\", the template would\n       * render \"hello\", which is not the intended behavior. So, `setValue` makes you pass\n       * the promise so the internal book-keeping can ensure the last-set promise always wins.\n       */\n    }, {\n      key: \"setValue\",\n      value: function setValue(value, promise) {\n        if (this.allowUpdates(promise)) {\n          this._value = value;\n          this._settle(promise);\n        }\n      }\n    }, {\n      key: \"allowUpdates\",\n      value: function allowUpdates(promise) {\n        return this._promise === promise;\n      }\n    }]);\n  }(_helper.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/is-fulfilled\", [\"exports\", \"ember-promise-helpers/helpers/await\"], function (_exports, _await) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_AwaitHelper) {\n    function _default() {\n      _classCallCheck(this, _default);\n      return _callSuper(this, _default, arguments);\n    }\n    _inherits(_default, _AwaitHelper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(params) {\n        var _this = this;\n        var maybePromise = params[0];\n        return this.ensureLatestPromise(maybePromise, /*#__PURE__*/function () {\n          var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(promise) {\n            return _regeneratorRuntime().wrap(function _callee$(_context) {\n              while (1) switch (_context.prev = _context.next) {\n                case 0:\n                  _context.prev = 0;\n                  _context.next = 3;\n                  return promise;\n                case 3:\n                  _this.setValue(true, maybePromise);\n                  _context.next = 9;\n                  break;\n                case 6:\n                  _context.prev = 6;\n                  _context.t0 = _context[\"catch\"](0);\n                  _this.setValue(false, maybePromise);\n                case 9:\n                case \"end\":\n                  return _context.stop();\n              }\n            }, _callee, null, [[0, 6]]);\n          }));\n          return function (_x) {\n            return _ref.apply(this, arguments);\n          };\n        }());\n      }\n    }]);\n  }(_await.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/is-pending\", [\"exports\", \"ember-promise-helpers/helpers/await\"], function (_exports, _await) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_AwaitHelper) {\n    function _default() {\n      var _this;\n      _classCallCheck(this, _default);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, _default, [].concat(args));\n      _this.valueBeforeSettled = true;\n      return _this;\n    }\n    _inherits(_default, _AwaitHelper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(params) {\n        var _this2 = this;\n        var maybePromise = params[0];\n        return this.ensureLatestPromise(maybePromise, /*#__PURE__*/function () {\n          var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(promise) {\n            return _regeneratorRuntime().wrap(function _callee$(_context) {\n              while (1) switch (_context.prev = _context.next) {\n                case 0:\n                  _context.prev = 0;\n                  _context.next = 3;\n                  return promise;\n                case 3:\n                  _context.next = 7;\n                  break;\n                case 5:\n                  _context.prev = 5;\n                  _context.t0 = _context[\"catch\"](0);\n                case 7:\n                  _context.prev = 7;\n                  _this2.setValue(false, maybePromise);\n                  return _context.finish(7);\n                case 10:\n                case \"end\":\n                  return _context.stop();\n              }\n            }, _callee, null, [[0, 5, 7, 10]]);\n          }));\n          return function (_x) {\n            return _ref.apply(this, arguments);\n          };\n        }());\n      }\n    }]);\n  }(_await.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/is-rejected\", [\"exports\", \"ember-promise-helpers/helpers/await\"], function (_exports, _await) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_AwaitHelper) {\n    function _default() {\n      _classCallCheck(this, _default);\n      return _callSuper(this, _default, arguments);\n    }\n    _inherits(_default, _AwaitHelper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(params) {\n        var _this = this;\n        var maybePromise = params[0];\n        return this.ensureLatestPromise(maybePromise, /*#__PURE__*/function () {\n          var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(promise) {\n            return _regeneratorRuntime().wrap(function _callee$(_context) {\n              while (1) switch (_context.prev = _context.next) {\n                case 0:\n                  _context.prev = 0;\n                  _context.next = 3;\n                  return promise;\n                case 3:\n                  _this.setValue(false, maybePromise);\n                  _context.next = 9;\n                  break;\n                case 6:\n                  _context.prev = 6;\n                  _context.t0 = _context[\"catch\"](0);\n                  _this.setValue(true, maybePromise);\n                case 9:\n                case \"end\":\n                  return _context.stop();\n              }\n            }, _callee, null, [[0, 6]]);\n          }));\n          return function (_x) {\n            return _ref.apply(this, arguments);\n          };\n        }());\n      }\n    }]);\n  }(_await.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/promise-all\", [\"exports\", \"@ember/component/helper\", \"rsvp\"], function (_exports, _helper, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_Helper) {\n    function _default() {\n      _classCallCheck(this, _default);\n      return _callSuper(this, _default, arguments);\n    }\n    _inherits(_default, _Helper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(params) {\n        var args = Array.isArray(params[0]) ? params[0] : params;\n        return _rsvp.default.all(args);\n      }\n    }]);\n  }(_helper.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/promise-hash\", [\"exports\", \"@ember/component/helper\", \"rsvp\"], function (_exports, _helper, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_Helper) {\n    function _default() {\n      _classCallCheck(this, _default);\n      return _callSuper(this, _default, arguments);\n    }\n    _inherits(_default, _Helper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(params, hash) {\n        return _rsvp.default.hash(hash);\n      }\n    }]);\n  }(_helper.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-promise-helpers/helpers/promise-rejected-reason\", [\"exports\", \"ember-promise-helpers/helpers/await\"], function (_exports, _await) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  var _default = _exports.default = /*#__PURE__*/function (_AwaitHelper) {\n    function _default() {\n      _classCallCheck(this, _default);\n      return _callSuper(this, _default, arguments);\n    }\n    _inherits(_default, _AwaitHelper);\n    return _createClass(_default, [{\n      key: \"compute\",\n      value: function compute(params) {\n        var _this = this;\n        var maybePromise = params[0];\n        return this.ensureLatestPromise(maybePromise, /*#__PURE__*/function () {\n          var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(promise) {\n            return _regeneratorRuntime().wrap(function _callee$(_context) {\n              while (1) switch (_context.prev = _context.next) {\n                case 0:\n                  _context.prev = 0;\n                  _context.next = 3;\n                  return promise;\n                case 3:\n                  _this.setValue(null, maybePromise);\n                  _context.next = 9;\n                  break;\n                case 6:\n                  _context.prev = 6;\n                  _context.t0 = _context[\"catch\"](0);\n                  _this.setValue(_context.t0, maybePromise);\n                case 9:\n                case \"end\":\n                  return _context.stop();\n              }\n            }, _callee, null, [[0, 6]]);\n          }));\n          return function (_x) {\n            return _ref.apply(this, arguments);\n          };\n        }());\n      }\n    }]);\n  }(_await.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-radio-button/components/radio-button-input\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@glimmer/component\", \"@ember/runloop\", \"@ember/object\"], function (_exports, _component, _templateFactory, _component2, _runloop, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <input ...attributes type=\"radio\" checked={{@checked}} aria-checked={{this.checkedStr}} value={{@value}} {{on \"change\" this.change}} />\n  \n  */\n  {\n    \"id\": \"kirPF2iu\",\n    \"block\": \"[[[11,\\\"input\\\"],[17,1],[24,4,\\\"radio\\\"],[16,\\\"checked\\\",[30,2]],[16,\\\"aria-checked\\\",[30,0,[\\\"checkedStr\\\"]]],[16,2,[30,3]],[4,[38,1],[\\\"change\\\",[30,0,[\\\"change\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@checked\\\",\\\"@value\\\"],false,[\\\"input\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"ember-radio-button/components/radio-button-input.hbs\",\n    \"isStrictMode\": false\n  });\n  var RadioButtonInputComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function RadioButtonInputComponent() {\n      _classCallCheck(this, RadioButtonInputComponent);\n      return _callSuper(this, RadioButtonInputComponent, arguments);\n    }\n    _inherits(RadioButtonInputComponent, _Component);\n    return _createClass(RadioButtonInputComponent, [{\n      key: \"checkedStr\",\n      get: function get() {\n        var checked = this.args.checked;\n        if (typeof checked === 'boolean') {\n          return checked.toString();\n        }\n        return null;\n      }\n    }, {\n      key: \"change\",\n      value: function change() {\n        if (this.args.groupValue !== this.args.value) {\n          // this.set('groupValue', value);\n          (0, _runloop.once)(this.args, 'changed', this.args.value);\n        }\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"change\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"change\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, RadioButtonInputComponent);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-radio-button/components/radio-button\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@glimmer/component\", \"@ember/object\", \"@ember/utils\"], function (_exports, _component, _templateFactory, _component2, _object, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (has-block)}}\n    <label class=\"ember-radio-button {{if this.checked this.checkedClass}} {{this.joinedClassNames}}\" for={{@radioId}}>\n      <RadioButtonInput\n        class={{@radioClass}}\n        id={{@radioId}}\n        autofocus={{@autofocus}}\n        disabled={{@disabled}}\n        name={{@name}}\n        required={{@required}}\n        tabindex={{@tabindex}}\n        @groupValue={{@groupValue}}\n        @checked={{this.checked}}\n        @value={{@value}}\n        aria-labelledby={{@ariaLabelledby}}\n        aria-describedby={{@ariaDescribedby}}\n        @changed={{this.changed}}\n      />\n      {{yield}}\n    </label>\n  {{else}}\n    <RadioButtonInput\n      class={{@radioClass}}\n      id={{@radioId}}\n      autofocus={{@autofocus}}\n      disabled={{@disabled}}\n      name={{@name}}\n      required={{@required}}\n      tabindex={{@tabindex}}\n      @groupValue={{@groupValue}}\n      @checked={{this.checked}}\n      @value={{@value}}\n      aria-labelledby={{@ariaLabelledby}}\n      aria-describedby={{@ariaDescribedby}}\n      @changed={{this.changed}}\n    />\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"9wr2UjsT\",\n    \"block\": \"[[[41,[48,[30,12]],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"ember-radio-button \\\",[52,[30,0,[\\\"checked\\\"]],[30,0,[\\\"checkedClass\\\"]]],\\\" \\\",[30,0,[\\\"joinedClassNames\\\"]]]]],[15,\\\"for\\\",[30,1]],[12],[1,\\\"\\\\n    \\\"],[8,[39,3],[[16,0,[30,2]],[16,1,[30,1]],[16,\\\"autofocus\\\",[30,3]],[16,\\\"disabled\\\",[30,4]],[16,3,[30,5]],[16,\\\"required\\\",[30,6]],[16,\\\"tabindex\\\",[30,7]],[16,\\\"aria-labelledby\\\",[30,8]],[16,\\\"aria-describedby\\\",[30,9]]],[[\\\"@groupValue\\\",\\\"@checked\\\",\\\"@value\\\",\\\"@changed\\\"],[[30,10],[30,0,[\\\"checked\\\"]],[30,11],[30,0,[\\\"changed\\\"]]]],null],[1,\\\"\\\\n    \\\"],[18,12,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[8,[39,3],[[16,0,[30,2]],[16,1,[30,1]],[16,\\\"autofocus\\\",[30,3]],[16,\\\"disabled\\\",[30,4]],[16,3,[30,5]],[16,\\\"required\\\",[30,6]],[16,\\\"tabindex\\\",[30,7]],[16,\\\"aria-labelledby\\\",[30,8]],[16,\\\"aria-describedby\\\",[30,9]]],[[\\\"@groupValue\\\",\\\"@checked\\\",\\\"@value\\\",\\\"@changed\\\"],[[30,10],[30,0,[\\\"checked\\\"]],[30,11],[30,0,[\\\"changed\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@radioId\\\",\\\"@radioClass\\\",\\\"@autofocus\\\",\\\"@disabled\\\",\\\"@name\\\",\\\"@required\\\",\\\"@tabindex\\\",\\\"@ariaLabelledby\\\",\\\"@ariaDescribedby\\\",\\\"@groupValue\\\",\\\"@value\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"has-block\\\",\\\"label\\\",\\\"radio-button-input\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-radio-button/components/radio-button.hbs\",\n    \"isStrictMode\": false\n  });\n  var RadioButtonComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function RadioButtonComponent() {\n      _classCallCheck(this, RadioButtonComponent);\n      return _callSuper(this, RadioButtonComponent, arguments);\n    }\n    _inherits(RadioButtonComponent, _Component);\n    return _createClass(RadioButtonComponent, [{\n      key: \"joinedClassNames\",\n      get:\n      // value - passed in, required, the value for this radio button\n      // groupValue - passed in, required, the currently selected value\n\n      // optionally passed in:\n      // disabled - boolean\n      // required - boolean\n      // name - string\n      // radioClass - string\n      // radioId - string\n      // ariaLabelledby - string\n      // ariaDescribedby - string\n\n      function get() {\n        var classNames = this.args.classNames;\n        if (classNames && classNames.length && classNames.join) {\n          return classNames.join(' ');\n        }\n        return classNames;\n      }\n    }, {\n      key: \"checkedClass\",\n      get: function get() {\n        return this.args.checkedClass || 'checked';\n      }\n    }, {\n      key: \"checked\",\n      get: function get() {\n        return (0, _utils.isEqual)(this.args.groupValue, this.args.value);\n      }\n    }, {\n      key: \"changed\",\n      value: function changed(newValue) {\n        var changedAction = this.args.changed;\n\n        // providing a closure action is optional\n        if (changedAction) {\n          changedAction(newValue);\n        }\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"changed\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"changed\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, RadioButtonComponent);\n});","define(\"ember-raf-scheduler/index\", [\"exports\", \"@ember/runloop\", \"@ember/debug\"], function (_exports, _runloop, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.scheduler = _exports.default = _exports.Token = _exports.Scheduler = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var Token = _exports.Token = /*#__PURE__*/function () {\n    function Token(parent) {\n      _classCallCheck(this, Token);\n      this._parent = parent;\n      this._cancelled = false;\n      if (true /* DEBUG */) {\n        Object.seal(this);\n      }\n    }\n    return _createClass(Token, [{\n      key: \"cancelled\",\n      get: function get() {\n        return this._cancelled || (this._cancelled = this._parent ? this._parent.cancelled : false);\n      }\n    }, {\n      key: \"cancel\",\n      value: function cancel() {\n        this._cancelled = true;\n      }\n    }]);\n  }();\n  function job(cb, token) {\n    return function execJob() {\n      if (token.cancelled === false) {\n        cb();\n      }\n    };\n  }\n  var Scheduler = _exports.Scheduler = /*#__PURE__*/function () {\n    function Scheduler() {\n      _classCallCheck(this, Scheduler);\n      this.sync = [];\n      this.layout = [];\n      this.measure = [];\n      this.affect = [];\n      this.jobs = 0;\n      this._nextFlush = null;\n      this.ticks = 0;\n      if (true /* DEBUG */) {\n        Object.seal(this);\n      }\n    }\n    return _createClass(Scheduler, [{\n      key: \"schedule\",\n      value: function schedule(queueName, cb, parent) {\n        (true && !(queueName in this) && (0, _debug.assert)(\"Attempted to schedule to unknown queue: \".concat(queueName), queueName in this));\n        this.jobs++;\n        var token = new Token(parent);\n        this[queueName].push(job(cb, token));\n        this._flush();\n        return token;\n      }\n    }, {\n      key: \"forget\",\n      value: function forget(token) {\n        // TODO add explicit test\n        if (token) {\n          token.cancel();\n        }\n      }\n    }, {\n      key: \"_flush\",\n      value: function _flush() {\n        var _this = this;\n        if (this._nextFlush !== null) {\n          return;\n        }\n        this._nextFlush = requestAnimationFrame(function () {\n          _this.flush();\n        });\n      }\n    }, {\n      key: \"flush\",\n      value: function flush() {\n        var i, q;\n        this.jobs = 0;\n        if (this.sync.length > 0) {\n          (0, _runloop.begin)();\n          q = this.sync;\n          this.sync = [];\n          for (i = 0; i < q.length; i++) {\n            q[i]();\n          }\n          (0, _runloop.end)();\n        }\n        if (this.layout.length > 0) {\n          q = this.layout;\n          this.layout = [];\n          for (i = 0; i < q.length; i++) {\n            q[i]();\n          }\n        }\n        if (this.measure.length > 0) {\n          q = this.measure;\n          this.measure = [];\n          for (i = 0; i < q.length; i++) {\n            q[i]();\n          }\n        }\n        if (this.affect.length > 0) {\n          q = this.affect;\n          this.affect = [];\n          for (i = 0; i < q.length; i++) {\n            q[i]();\n          }\n        }\n        this._nextFlush = null;\n        if (this.jobs > 0) {\n          this._flush();\n        }\n      }\n    }]);\n  }();\n  var scheduler = _exports.scheduler = new Scheduler();\n  var _default = _exports.default = scheduler;\n});","define(\"ember-ref-bucket/helpers/ref-to\", [\"exports\", \"@ember/component/helper\", \"ember-ref-bucket/utils/ref\", \"@ember/destroyable\", \"@ember/application\"], function (_exports, _helper, _ref4, _destroyable, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"ember-ref-bucket/utils/ref\",0,\"@ember/destroyable\",0,\"@ember/application\"eaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var RefToHelper = _exports.default = /*#__PURE__*/function (_Helper) {\n    function RefToHelper() {\n      var _this;\n      _classCallCheck(this, RefToHelper);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, RefToHelper, [].concat(args));\n      _defineProperty(_this, \"_watcher\", null);\n      return _this;\n    }\n    _inherits(RefToHelper, _Helper);\n    return _createClass(RefToHelper, [{\n      key: \"compute\",\n      value: function compute(_ref, _ref2) {\n        var _this2 = this;\n        var _ref3 = _slicedToArray(_ref, 1),\n          name = _ref3[0];\n        var bucket = _ref2.bucket,\n          tracked = _ref2.tracked;\n        var bucketRef = bucket || (0, _application.getOwner)(this);\n        if (this._name !== name) {\n          if (this._watcher) {\n            (0, _destroyable.unregisterDestructor)(this, this._watcher);\n          }\n          this._watcher = (0, _ref4.watchFor)(name, bucketRef, function () {\n            _this2.recompute();\n          });\n          (0, _destroyable.registerDestructor)(this, this._watcher);\n          this._name = name;\n        }\n        if (tracked) {\n          return (0, _ref4.bucketFor)(bucketRef).getTracked(name);\n        } else {\n          return (0, _ref4.bucketFor)(bucketRef).get(name);\n        }\n      }\n    }]);\n  }(_helper.default);\n});","define(\"ember-ref-bucket/index\", [\"exports\", \"ember-ref-bucket/utils/ref\", \"@ember/application\", \"ember-ref-bucket/utils/prototype-reference\"], function (_exports, _ref, _application, _prototypeReference) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.globalRef = globalRef;\n  _exports.nodeFor = nodeFor;\n  _exports.ref = ref;\n  Object.defineProperty(_exports, \"registerNodeDestructor\", {\n    enumerable: true,\n    get: function get() {\n      return _ref.registerNodeDestructor;\n    }\n  });\n  Object.defineProperty(_exports, \"resolveGlobalRef\", {\n    enumerable: true,\n    get: function get() {\n      return _ref.resolveGlobalRef;\n    }\n  });\n  _exports.trackedGlobalRef = trackedGlobalRef;\n  _exports.trackedRef = trackedRef;\n  Object.defineProperty(_exports, \"unregisterNodeDestructor\", {\n    enumerable: true,\n    get: function get() {\n      return _ref.unregisterNodeDestructor;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-ref-bucket/utils/ref\",0,\"@ember/application\",0,\"ember-ref-bucket/utils/ref\",0,\"ember-ref-bucket/utils/prototype-reference\"eaimeta@70e063a35619d71f\n  function nodeFor(context, name) {\n    return (0, _ref.bucketFor)(context).get(name);\n  }\n  function maybeReturnCreated(value, createdValues, fn, ctx) {\n    if (value === null || value === undefined) {\n      return null;\n    }\n    if (typeof fn === 'function') {\n      if (!createdValues.has(value)) {\n        createdValues.set(value, fn.call(ctx, value));\n      }\n      return createdValues.get(value);\n    } else {\n      return value;\n    }\n  }\n  function ref(name, fn) {\n    return function (klass, objectKey) {\n      var createdValues = new WeakMap();\n      if (typeof fn === 'function') {\n        (0, _prototypeReference.addPrototypeReference)(klass, objectKey, name);\n      }\n      return {\n        get: function get() {\n          var value = (0, _ref.bucketFor)(this).get(name);\n          return maybeReturnCreated(value, createdValues, fn, this);\n        },\n        configurable: true\n      };\n    };\n  }\n  function globalRef(name, fn) {\n    return function (klass, objectKey) {\n      var createdValues = new WeakMap();\n      if (typeof fn === 'function') {\n        (0, _prototypeReference.addPrototypeReference)(klass, objectKey, name);\n      }\n      return {\n        get: function get() {\n          var value = (0, _ref.bucketFor)((0, _application.getOwner)(this) || (0, _ref.resolveGlobalRef)()).get(name);\n          return maybeReturnCreated(value, createdValues, fn, this);\n        },\n        configurable: true\n      };\n    };\n  }\n  function trackedRef(name, fn) {\n    return function (klass, objectKey) {\n      var createdValues = new WeakMap();\n      if (typeof fn === 'function') {\n        (0, _prototypeReference.addPrototypeReference)(klass, objectKey, name);\n      }\n      return {\n        get: function get() {\n          var value = (0, _ref.bucketFor)(this).getTracked(name);\n          return maybeReturnCreated(value, createdValues, fn, this);\n        },\n        configurable: true\n      };\n    };\n  }\n  function trackedGlobalRef(name, fn) {\n    return function (klass, objectKey) {\n      var createdValues = new WeakMap();\n      if (typeof fn === 'function') {\n        (0, _prototypeReference.addPrototypeReference)(klass, objectKey, name);\n      }\n      return {\n        get: function get() {\n          var value = (0, _ref.bucketFor)((0, _application.getOwner)(this) || (0, _ref.resolveGlobalRef)()).getTracked(name);\n          return maybeReturnCreated(value, createdValues, fn, this);\n        },\n        configurable: true\n      };\n    };\n  }\n});","define(\"ember-ref-bucket/instance-initializers/global-ref-cleanup\", [\"exports\", \"@ember/destroyable\", \"ember-ref-bucket/utils/ref\"], function (_exports, _destroyable, _ref) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/destroyable\",0,\"ember-ref-bucket/utils/ref\"eaimeta@70e063a35619d71f\n  function initialize(appInstance) {\n    (0, _destroyable.registerDestructor)(appInstance, function () {\n      (0, _ref.cleanGlobalRef)();\n    });\n  }\n  var _default = _exports.default = {\n    initialize: initialize\n  };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-ref-bucket/modifiers/create-ref\", [\"exports\", \"ember-modifier\", \"@ember/application\", \"@ember/object\", \"@ember/debug\", \"ember-ref-bucket/utils/ref\", \"ember-ref-bucket/utils/prototype-reference\", \"@ember/destroyable\"], function (_exports, _emberModifier, _application, _object, _debug, _ref, _prototypeReference, _destroyable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"ember-modifier\",0,\"@ember/application\",0,\"@ember/object\",0,\"@ember/debug\",0,\"ember-ref-bucket/utils/ref\",0,\"ember-ref-bucket/utils/prototype-reference\",0,\"@ember/destroyable\"eaimeta@70e063a35619d71f\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var RefModifier = _exports.default = (_class = /*#__PURE__*/function (_Modifier) {\n    function RefModifier() {\n      var _this;\n      _classCallCheck(this, RefModifier);\n      _this = _callSuper(this, RefModifier, arguments);\n      _defineProperty(_this, \"_key\", void 0);\n      _defineProperty(_this, \"_ctx\", void 0);\n      _defineProperty(_this, \"_element\", void 0);\n      // to minimise overhead, user should be specific about\n      // what they want to observe\n      _defineProperty(_this, \"defaultMutationObserverOptions\", {\n        attributes: false,\n        characterData: false,\n        childList: false,\n        subtree: false\n      });\n      (0, _ref.setGlobalRef)((0, _application.getOwner)(_this));\n      (0, _destroyable.registerDestructor)(_this, function () {\n        var element = _this._element;\n        _this.cleanMutationObservers();\n        _this.cleanResizeObservers();\n        (0, _ref.getNodeDestructors)(element).forEach(function (cb) {\n          return cb();\n        });\n        if (element === (0, _ref.bucketFor)(_this._ctx).get(_this._key)) {\n          (0, _ref.bucketFor)(_this._ctx).add(_this._key, null);\n        }\n        delete _this._element;\n      });\n      return _this;\n    }\n    _inherits(RefModifier, _Modifier);\n    return _createClass(RefModifier, [{\n      key: \"markDirty\",\n      value: function markDirty() {\n        (0, _ref.bucketFor)(this._ctx).dirtyTrackedCell(this._key);\n      }\n    }, {\n      key: \"cleanMutationObservers\",\n      value: function cleanMutationObservers() {\n        if (this._mutationsObserver) {\n          this._mutationsObserver.disconnect();\n        }\n      }\n    }, {\n      key: \"cleanResizeObservers\",\n      value: function cleanResizeObservers() {\n        if (this._resizeObserver) {\n          this._resizeObserver.unobserve(this._element);\n        }\n      }\n    }, {\n      key: \"installMutationObservers\",\n      value: function installMutationObservers() {\n        var named = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        this._mutationsObserver = new MutationObserver(this.markDirty);\n        var opts = this.getObserverOptions(named);\n        delete opts.resize;\n        if (opts.attributes || opts.characterData || opts.childList || opts.subtree) {\n          // mutations observer throws if observe is attempted\n          // with all these options disabled\n          this._mutationsObserver.observe(this._element, opts);\n        }\n      }\n    }, {\n      key: \"validateTrackedOptions\",\n      value: function validateTrackedOptions() {\n        var named = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var args = ['subtree', 'attributes', 'children', 'resize', 'character'];\n        if (args.some(function (name) {\n          return name in named;\n        })) {\n          (true && !(this.isTracked(named)) && (0, _debug.assert)(\"\\\"ember-ref-modifier\\\", looks like you trying to use {{\".concat(named.debugName, \"}} without tracked flag or alias, but, with properties, related to tracked modifier (\").concat(args.join(', '), \")\"), this.isTracked(named)));\n        }\n      }\n    }, {\n      key: \"getObserverOptions\",\n      value: function getObserverOptions() {\n        var named = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        // to minimise overhead user\n        // should be specific about\n        // what they want to observe\n        var resize = false;\n        var subtree = this.defaultMutationObserverOptions.subtree;\n        var attributes = this.defaultMutationObserverOptions.attributes;\n        var character = this.defaultMutationObserverOptions.characterData;\n        var children = this.defaultMutationObserverOptions.childList;\n        if ('subtree' in named) {\n          subtree = named.subtree;\n        }\n        if ('attributes' in named) {\n          attributes = named.attributes;\n        }\n        if ('children' in named) {\n          children = named.children;\n        }\n        if ('resize' in named) {\n          resize = named.resize;\n        }\n        if ('character' in named) {\n          character = named.character;\n        }\n        return {\n          subtree: subtree,\n          attributes: attributes,\n          childList: children,\n          resize: resize,\n          characterData: character\n        };\n      }\n    }, {\n      key: \"installResizeObservers\",\n      value: function installResizeObservers(element) {\n        this._resizeObserver = new ResizeObserver(this.markDirty);\n        this._resizeObserver.observe(element);\n      }\n    }, {\n      key: \"modify\",\n      value: function modify(element, positional, named) {\n        var name = this.name(positional);\n        var ctx = this.ctx(named, positional);\n        this._key = name;\n        this._ctx = ctx;\n        this._element = element;\n        (true && (0, _debug.warn)(\"Preprocessor was not executed on create-ref modifier. If the reference is not set, check that ember-ref-bucket is included in the dependencies (not devDependencies) in package.json.\", typeof named.debugName === 'string' || !!named.bucket, {\n          id: 'ember-ref-bucket.no-preprocessor'\n        }));\n        (true && !(typeof name === 'string' && name.length > 0) && (0, _debug.assert)(\"You must provide string as first positional argument for {{\".concat(named.debugName, \"}}\"), typeof name === 'string' && name.length > 0));\n        this.validateTrackedOptions(named);\n        this.cleanMutationObservers();\n        this.cleanResizeObservers();\n        if (name !== this._key || this._ctx !== ctx) {\n          (0, _ref.bucketFor)(this._ctx).add(this._key, null);\n        }\n        (0, _ref.watchFor)(name, ctx, function () {\n          var keys = (0, _prototypeReference.getReferencedKeys)(ctx, name);\n          keys.forEach(function (keyName) {\n            // consume keys with callbacks\n            ctx[keyName];\n          });\n        });\n        (0, _ref.bucketFor)(ctx).add(name, element);\n        if (this.isTracked(named)) {\n          this.installMutationObservers(named);\n          if (this.getObserverOptions(named).resize) {\n            this.installResizeObservers(element);\n          }\n        }\n      }\n    }, {\n      key: \"ctx\",\n      value: function ctx() {\n        var named = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var positional = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [undefined];\n        (true && !(named.bucket !== null) && (0, _debug.assert)(\"ember-ref-bucket: You trying to use {{\".concat(named.debugName, \"}} as local reference for template-only component. Replace it to {{global-ref \\\"\").concat(positional[0], \"\\\"}}\"), named.bucket !== null));\n        return named.bucket || (0, _application.getOwner)(this);\n      }\n    }, {\n      key: \"isTracked\",\n      value: function isTracked() {\n        var named = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        return named.tracked || false;\n      }\n    }, {\n      key: \"name\",\n      value: function name(positional) {\n        return positional[0];\n      }\n    }]);\n  }(_emberModifier.default), _applyDecoratedDescriptor(_class.prototype, \"markDirty\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"markDirty\"), _class.prototype), _class);\n});","define(\"ember-ref-bucket/utils/prototype-reference\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.addPrototypeReference = addPrototypeReference;\n  _exports.getReferencedKeys = getReferencedKeys;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var PrototypeReferences = new WeakMap();\n  function addPrototypeReference(klass, objectKey, referenceName) {\n    if (!PrototypeReferences.has(klass)) {\n      PrototypeReferences.set(klass, {});\n    }\n    var obj = PrototypeReferences.get(klass);\n    if (!(referenceName in obj)) {\n      obj[referenceName] = new Set();\n    }\n    obj[referenceName].add(objectKey);\n  }\n  function getReferencedKeys(klassInstance, referenceName) {\n    var proto = klassInstance;\n    while (proto.__proto__) {\n      proto = proto.__proto__;\n      if (PrototypeReferences.has(proto)) {\n        var maybeData = PrototypeReferences.get(proto);\n        if (referenceName in maybeData) {\n          return Array.from(maybeData[referenceName]);\n        }\n      }\n    }\n    return [];\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-ref-bucket/utils/ref\", [\"exports\", \"@ember/destroyable\", \"@glimmer/tracking\"], function (_exports, _destroyable, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.bucketFor = bucketFor;\n  _exports.cleanGlobalRef = cleanGlobalRef;\n  _exports.getNodeDestructors = getNodeDestructors;\n  _exports.registerNodeDestructor = registerNodeDestructor;\n  _exports.resolveGlobalRef = resolveGlobalRef;\n  _exports.setGlobalRef = setGlobalRef;\n  _exports.unregisterNodeDestructor = unregisterNodeDestructor;\n  _exports.watchFor = watchFor;\n  var _class, _descriptor; // @ts-check\n  /*eslint no-undef: \"warn\"*/\n  0; //eaimeta@70e063a35619d71f0,\"@ember/destroyable\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * @type {object | null}\n   */\n  var lastGlobalRef = null;\n  /**\n   * @type {WeakMap<object, ReturnType<typeof createBucket>>}\n   */\n  var buckets = new WeakMap();\n  /**\n   * @type {WeakMap<HTMLElement, Array<() => void>>}\n   */\n  var nodeDestructors = new WeakMap();\n  var hasWeakRef = typeof WeakRef !== 'undefined';\n  function fromWeakRefIfSupported(node) {\n    if (hasWeakRef && node instanceof WeakRef) {\n      var _node$deref;\n      return (_node$deref = node.deref()) !== null && _node$deref !== void 0 ? _node$deref : null;\n    }\n    return node;\n  }\n\n  /**\n   *\n   * @param {null | undefined | WeakRef | HTMLElement } node\n   * @returns\n   */\n  function toWeakRefIfSupported(node) {\n    if (node === null || node === undefined) {\n      return null;\n    }\n    if (hasWeakRef) {\n      if (node instanceof WeakRef) {\n        return node;\n      }\n      return new WeakRef(node);\n    }\n    return node;\n  }\n  var FieldCell = (_class = /*#__PURE__*/function () {\n    function FieldCell() {\n      _classCallCheck(this, FieldCell);\n      /**\n      /**\n       * @type {null | (WeakRef<HTMLElement> | HTMLElement)}\n       */\n      _initializerDefineProperty(this, \"_element\", _descriptor, this);\n    }\n    return _createClass(FieldCell, [{\n      key: \"value\",\n      get: function get() {\n        if (this._element) {\n          return fromWeakRefIfSupported(this._element);\n        } else {\n          return null;\n        }\n      },\n      set: function set(element) {\n        if (element) {\n          this._element = toWeakRefIfSupported(element);\n        } else {\n          this._element = null;\n        }\n      }\n    }]);\n  }(), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_element\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return null;\n    }\n  }), _class);\n  function setGlobalRef(value) {\n    lastGlobalRef = value;\n  }\n  function cleanGlobalRef() {\n    lastGlobalRef = null;\n  }\n  function resolveGlobalRef() {\n    return lastGlobalRef;\n  }\n  function createBucket() {\n    return {\n      /**\n       * @type { Record<string, HTMLElement> }\n       */\n      bucket: {},\n      /**\n       * @type { Record<string, FieldCell> }\n       */\n      keys: {},\n      /**\n       * @param {string} key\n       */\n      createTrackedCell: function createTrackedCell(key) {\n        if (!(key in this.keys)) {\n          this.keys[key] = new FieldCell();\n        }\n      },\n      /**\n       * @param {string} name\n       * @returns { HTMLElement | null }\n       */\n      get: function get(name) {\n        this.createTrackedCell(name);\n        return fromWeakRefIfSupported(this.bucket[name]) || null;\n      },\n      /**\n       * @param {string} name\n       */\n      dirtyTrackedCell: function dirtyTrackedCell(name) {\n        this.createTrackedCell(name);\n        var val = this.keys[name].value;\n        this.keys[name].value = val;\n      },\n      /**\n       * @param {string} name\n       */\n      getTracked: function getTracked(name) {\n        this.createTrackedCell(name);\n        return this.keys[name].value;\n      },\n      /**\n       * @param {string} name\n       * @param {HTMLElement} value\n       */\n      add: function add(name, value) {\n        this.createTrackedCell(name);\n        this.keys[name].value = value;\n        this.bucket[name] = toWeakRefIfSupported(value);\n        if (!(name in this.notificationsFor)) {\n          this.notificationsFor[name] = [];\n        }\n        this.notificationsFor[name].forEach(function (fn) {\n          return fn();\n        });\n      },\n      /**\n       * @param {string} name\n       * @param {() => void} fn\n       */\n      addNotificationFor: function addNotificationFor(name, fn) {\n        var _this = this;\n        if (!(name in this.notificationsFor)) {\n          this.notificationsFor[name] = [];\n        }\n        this.notificationsFor[name].push(fn);\n        return function () {\n          _this.notificationsFor[name] = _this.notificationsFor[name].filter(function (cb) {\n            return cb !== cb;\n          });\n        };\n      },\n      /**\n       * @type { Record<string, Array<() => void>> }\n       */\n      notificationsFor: {}\n    };\n  }\n\n  /**\n   *\n   * @param {HTMLElement} node\n   * @returns {Array<() => void>}\n   */\n  function getNodeDestructors(node) {\n    return nodeDestructors.get(node) || [];\n  }\n\n  /**\n   * @param {HTMLElement} node\n   * @param {() => void} cb\n   */\n  function registerNodeDestructor(node, cb) {\n    var _nodeDestructors$get;\n    if (!nodeDestructors.has(node)) {\n      nodeDestructors.set(node, []);\n    }\n    (_nodeDestructors$get = nodeDestructors.get(node)) === null || _nodeDestructors$get === void 0 || _nodeDestructors$get.push(cb);\n  }\n  /**\n   *\n   * @param {HTMLElement} node\n   * @param {()=> void} cb\n   */\n  function unregisterNodeDestructor(node, cb) {\n    var destructors = nodeDestructors.get(node) || [];\n    nodeDestructors.set(node, destructors.filter(function (el) {\n      return el !== cb;\n    }));\n  }\n  /**\n   *\n   * @param {object} rawCtx\n   * @returns {ReturnType<typeof createBucket> | undefined}\n   */\n  function bucketFor(rawCtx) {\n    var ctx = rawCtx;\n    if (!buckets.has(ctx)) {\n      buckets.set(ctx, createBucket());\n      if ((0, _destroyable.isDestroyed)(ctx) || (0, _destroyable.isDestroying)(ctx)) {\n        try {\n          return buckets.get(ctx);\n        } finally {\n          buckets.delete(ctx);\n        }\n      }\n      (0, _destroyable.registerDestructor)(ctx, function () {\n        buckets.delete(ctx);\n      });\n    }\n    return buckets.get(ctx);\n  }\n  /**\n   *\n   * @param {string} name\n   * @param {object} bucketRef\n   * @param {()=>void} cb\n   * @returns\n   */\n  function watchFor(name, bucketRef, cb) {\n    var bucket = bucketFor(bucketRef);\n    return bucket === null || bucket === void 0 ? void 0 : bucket.addNotificationFor(name, cb);\n  }\n});","define(\"ember-resize-modifier/modifiers/did-resize\", [\"exports\", \"ember-modifier\", \"@ember/destroyable\"], function (_exports, _emberModifier, _destroyable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-modifier\",0,\"@ember/destroyable\"eaimeta@70e063a35619d71f\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var DidResizeModifier = _exports.default = /*#__PURE__*/function (_Modifier) {\n    function DidResizeModifier() {\n      var _this;\n      _classCallCheck(this, DidResizeModifier);\n      _this = _callSuper(this, DidResizeModifier, arguments);\n      // Public API\n      _defineProperty(_this, \"element\", void 0);\n      _defineProperty(_this, \"handler\", void 0);\n      _defineProperty(_this, \"options\", {});\n      if (!('ResizeObserver' in window)) {\n        return _possibleConstructorReturn(_this);\n      }\n      if (!DidResizeModifier.observer) {\n        DidResizeModifier.handlers = new WeakMap();\n        DidResizeModifier.observer = new ResizeObserver(function (entries, observer) {\n          window.requestAnimationFrame(function () {\n            var _iterator = _createForOfIteratorHelper(entries),\n              _step;\n            try {\n              for (_iterator.s(); !(_step = _iterator.n()).done;) {\n                var entry = _step.value;\n                var handler = DidResizeModifier.handlers.get(entry.target);\n                if (handler) handler(entry, observer);\n              }\n            } catch (err) {\n              _iterator.e(err);\n            } finally {\n              _iterator.f();\n            }\n          });\n        });\n      }\n      (0, _destroyable.registerDestructor)(_this, unobserve);\n      return _this;\n    }\n    _inherits(DidResizeModifier, _Modifier);\n    return _createClass(DidResizeModifier, [{\n      key: \"modify\",\n      value: function modify(element, positional /*, named*/) {\n        unobserve(this);\n        this.element = element;\n        var _positional = _slicedToArray(positional, 2),\n          handler = _positional[0],\n          options = _positional[1];\n\n        // Save arguments for when we need them\n        this.handler = handler;\n        this.options = options || this.options;\n        this.observe();\n      }\n    }, {\n      key: \"observe\",\n      value: function observe() {\n        if (DidResizeModifier.observer) {\n          this.addHandler();\n          DidResizeModifier.observer.observe(this.element, this.options);\n        }\n      }\n    }, {\n      key: \"addHandler\",\n      value: function addHandler() {\n        DidResizeModifier.handlers.set(this.element, this.handler);\n      }\n    }, {\n      key: \"removeHandler\",\n      value: function removeHandler() {\n        DidResizeModifier.handlers.delete(this.element);\n      }\n    }]);\n  }(_emberModifier.default);\n  /**\n   *\n   * @param {DidResizeModifier} instance\n   */\n  // Private API\n  _defineProperty(DidResizeModifier, \"observer\", null);\n  _defineProperty(DidResizeModifier, \"handlers\", null);\n  function unobserve(instance) {\n    if (instance.element && DidResizeModifier.observer) {\n      DidResizeModifier.observer.unobserve(instance.element);\n      instance.removeHandler();\n    }\n  }\n});","define(\"ember-resize-observer-polyfill/initializers/resize-observer-polyfill\", [\"exports\", \"resize-observer-polyfill\"], function (_exports, _resizeObserverPolyfill) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  function initialize() {\n    if (typeof FastBoot === 'undefined' && !window.ResizeObserver) {\n      window.ResizeObserver = _resizeObserverPolyfill.default;\n    }\n  }\n  var _default = _exports.default = {\n    initialize: initialize\n  };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-resize-observer-service/services/resize-observer\", [\"exports\", \"@ember/service\", \"@ember/object\", \"@ember/debug\", \"ember-resize-observer-service/utils/ignore-ro-error\"], function (_exports, _service, _object, _debug, _ignoreRoError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var addonName = 'resize-observer-service';\n\n  /**\n   * ResizeObserverService allows to use a single ResizeObserver instance\n   * for observing multiple elements to achieve better performance.\n   */\n  var ResizeObserverService = _exports.default = (_class = /*#__PURE__*/function (_Service) {\n    function ResizeObserverService() {\n      _classCallCheck(this, ResizeObserverService);\n      return _callSuper(this, ResizeObserverService, arguments);\n    }\n    _inherits(ResizeObserverService, _Service);\n    return _createClass(ResizeObserverService, [{\n      key: \"init\",\n      value: function init() {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        _superPropGet(ResizeObserverService, \"init\", this, 3)(args);\n        this.setup();\n      }\n    }, {\n      key: \"setup\",\n      value: function setup() {\n        this.callbacks = null;\n        this.observer = null;\n        if (typeof FastBoot !== 'undefined' || typeof window === 'undefined') {\n          return;\n        }\n        if (!window.ResizeObserver) {\n          (true && (0, _debug.warn)(\"\".concat(addonName, \": ResizeObserver is not available\"), {\n            id: addonName\n          }));\n          return;\n        }\n        (0, _ignoreRoError.default)();\n        this.callbacks = new WeakMap();\n        this.observer = new window.ResizeObserver(this.handleResize);\n      }\n\n      /**\n       * `isEnabled` is `true` if the ResizeObserver API is available,\n       * otherwise the service will ignore any method calls.\n       */\n    }, {\n      key: \"isEnabled\",\n      get: function get() {\n        return !!this.observer;\n      }\n\n      /**\n       * Initiate the observing of the `element` or add an additional `callback`\n       * if the `element` is already observed.\n       *\n       * @param {object} element\n       * @param {function} callback The `callback` is called whenever the size of\n       *    the `element` changes. It is called with `ResizeObserverEntry` object\n       *    for the particular `element`.\n       */\n    }, {\n      key: \"observe\",\n      value: function observe(element, callback) {\n        if (!this.isEnabled) {\n          return;\n        }\n        var callbacks = this.callbacks.get(element);\n        if (callbacks) {\n          callbacks.add(callback);\n        } else {\n          this.callbacks.set(element, new Set([callback]));\n          this.observer.observe(element);\n        }\n      }\n\n      /**\n       * End the observing of the `element` or just remove the provided `callback`.\n       *\n       * It will unobserve the `element` if the `callback` is not provided\n       * or there are no more callbacks left for this `element`.\n       *\n       * @param {object} element\n       * @param {function?} callback - The `callback` to remove from the listeners\n       *   of the `element` size changes.\n       */\n    }, {\n      key: \"unobserve\",\n      value: function unobserve(element, callback) {\n        if (!this.isEnabled) {\n          return;\n        }\n        var callbacks = this.callbacks.get(element);\n        if (!callbacks) {\n          return;\n        }\n        callbacks.delete(callback);\n        if (!callback || !callbacks.size) {\n          this.callbacks.delete(element);\n          this.observer.unobserve(element);\n        }\n      }\n\n      /**\n       * Unobserve all observed elements.\n       */\n    }, {\n      key: \"clear\",\n      value: function clear() {\n        if (!this.isEnabled) {\n          return;\n        }\n        this.callbacks = new WeakMap();\n        this.observer.disconnect();\n      }\n    }, {\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        this.clear();\n      }\n    }, {\n      key: \"handleResize\",\n      value: function handleResize(entries) {\n        var _iterator = _createForOfIteratorHelper(entries),\n          _step;\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var entry = _step.value;\n            var callbacks = this.callbacks.get(entry.target);\n            if (callbacks) {\n              var _iterator2 = _createForOfIteratorHelper(callbacks),\n                _step2;\n              try {\n                for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n                  var callback = _step2.value;\n                  callback(entry);\n                }\n              } catch (err) {\n                _iterator2.e(err);\n              } finally {\n                _iterator2.f();\n              }\n            }\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      }\n    }]);\n  }(_service.default), _applyDecoratedDescriptor(_class.prototype, \"handleResize\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleResize\"), _class.prototype), _class);\n});","define(\"ember-resize-observer-service/utils/ignore-ro-error\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = ignoreROError;\n  var errorMessage = 'ResizeObserver loop limit exceeded';\n\n  /**\n   * Ignores \"ResizeObserver loop limit exceeded\" error in Ember tests.\n   *\n   * This \"error\" is safe to ignore as it is just a warning message,\n   * telling that the \"looping\" observation will be skipped in the current frame,\n   * and will be delivered in the next one.\n   *\n   * For some reason, it is fired as an `error` event at `window` failing Ember\n   * tests and exploding Sentry with errors that must be ignored.\n   */\n  function ignoreROError() {\n    if (typeof window.onerror !== 'function') {\n      return;\n    }\n    var onError = window.onerror;\n    window.onerror = function (message) {\n      if (message === errorMessage) {\n        return true;\n      } else {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        onError.apply(void 0, [message].concat(args));\n      }\n    };\n  }\n});","define(\"ember-resolver/container-debug-adapter\", [\"exports\", \"@ember/array\", \"@ember/debug/container-debug-adapter\", \"ember-resolver/index\", \"@ember/application\"], function (_exports, _array, _containerDebugAdapter, _index, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function getPod(type, key, prefix) {\n    var match = key.match(new RegExp('^/?' + prefix + '/(.+)/' + type + '$'));\n    if (match !== null) {\n      return match[1];\n    }\n  }\n\n  /*\n   * This module defines a subclass of Ember.ContainerDebugAdapter that adds\n   * support for resolving from modules.\n   *\n   */\n\n  /* eslint-disable ember/no-classic-classes */\n  var _default = _exports.default = _containerDebugAdapter.default.extend({\n    _moduleRegistry: null,\n    init: function init() {\n      this._super.apply(this, arguments);\n      this.namespace = (0, _application.getOwner)(this).lookup('application:main');\n      if (!this._moduleRegistry) {\n        this._moduleRegistry = new _index.ModuleRegistry();\n      }\n    },\n    /**\n        The container of the application being debugged.\n        This property will be injected\n        on creation.\n         @property container\n        @default null\n        */\n    /**\n        The resolver instance of the application\n        being debugged. This property will be injected\n        on creation.\n         @property resolver\n        @default null\n        */\n    /**\n        Returns true if it is possible to catalog a list of available\n        classes in the resolver for a given type.\n         @method canCatalogEntriesByType\n        @param {string} type The type. e.g. \"model\", \"controller\", \"route\"\n        @return {boolean} whether a list is available for this type.\n        */\n    canCatalogEntriesByType: function canCatalogEntriesByType(type) {\n      if (type === 'model') {\n        return true;\n      }\n      return this._super.apply(this, arguments);\n    },\n    /**\n        Returns the available classes a given type.\n         @method catalogEntriesByType\n        @param {string} type The type. e.g. \"model\", \"controller\", \"route\"\n        @return {Array} An array of classes.\n        */\n    catalogEntriesByType: function catalogEntriesByType(type) {\n      var moduleNames = this._moduleRegistry.moduleNames();\n      var types = (0, _array.A)();\n      var prefix = this.namespace.modulePrefix;\n      for (var i = 0, l = moduleNames.length; i < l; i++) {\n        var key = moduleNames[i];\n        if (key.indexOf(type) !== -1) {\n          // Check if it's a pod module\n          var name = getPod(type, key, this.namespace.podModulePrefix || prefix);\n          if (!name) {\n            // Not pod\n            name = key.split(type + 's/').pop();\n\n            // Support for different prefix (such as ember-cli addons).\n            // Uncomment the code below when\n            // https://github.com/ember-cli/ember-resolver/pull/80 is merged.\n\n            //let match = key.match('^/?(.+)/' + type);\n            //if (match && match[1] !== prefix) {\n            // Different prefix such as an addon\n            //name = match[1] + '@' + name;\n            //}\n          }\n          types.addObject(name);\n        }\n      }\n      return types;\n    }\n  });\n});","/*\n * This is a stub file, it must be on disk b/c babel-plugin-debug-macros\n * does not strip the module require when the transpiled variable usage is\n * stripped.\n */\ndefine(\"ember-resolver/features\", [], function () {\n  \"use strict\";\n});","define(\"ember-resolver/index\", [\"exports\", \"@ember/debug\", \"@ember/object\", \"ember-resolver/string\", \"ember-resolver/utils/class-factory\", \"@ember/owner\"], function (_exports, _debug, _object, _string, _classFactory, _owner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.ModuleRegistry = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /* globals requirejs, require */\n  if (typeof requirejs.entries === 'undefined') {\n    requirejs.entries = requirejs._eak_seen;\n  }\n  var ModuleRegistry = _exports.ModuleRegistry = /*#__PURE__*/function () {\n    function ModuleRegistry(entries) {\n      _classCallCheck(this, ModuleRegistry);\n      this._entries = entries || requirejs.entries;\n    }\n    return _createClass(ModuleRegistry, [{\n      key: \"moduleNames\",\n      value: function moduleNames() {\n        return Object.keys(this._entries);\n      }\n    }, {\n      key: \"has\",\n      value: function has(moduleName) {\n        return moduleName in this._entries;\n      }\n    }, {\n      key: \"get\",\n      value: function get() {\n        return require.apply(void 0, arguments);\n      }\n    }]);\n  }();\n  /**\n   * This module defines a subclass of Ember.DefaultResolver that adds two\n   * important features:\n   *\n   *  1) The resolver makes the container aware of es6 modules via the AMD\n   *     output. The loader's _moduleEntries is consulted so that classes can be\n   *     resolved directly via the module loader, without needing a manual\n   *     `import`.\n   *  2) is able to provide injections to classes that implement `extend`\n   *     (as is typical with Ember).\n   */\n  var Resolver = /*#__PURE__*/function (_EmberObject) {\n    function Resolver() {\n      var _this;\n      _classCallCheck(this, Resolver);\n      _this = _callSuper(this, Resolver, arguments);\n      _defineProperty(_this, \"moduleBasedResolver\", true);\n      _defineProperty(_this, \"_deprecatedPodModulePrefix\", false);\n      _defineProperty(_this, \"_normalizeCache\", Object.create(null));\n      /**\n       A listing of functions to test for moduleName's based on the provided\n       `parsedName`. This allows easy customization of additional module based\n       lookup patterns.\n        @property moduleNameLookupPatterns\n       @returns {Ember.Array}\n       */\n      _defineProperty(_this, \"moduleNameLookupPatterns\", [_this.podBasedModuleName, _this.podBasedComponentsInSubdir, _this.mainModuleName, _this.defaultModuleName, _this.nestedColocationComponentModuleName]);\n      if (!_this._moduleRegistry) {\n        _this._moduleRegistry = new ModuleRegistry();\n      }\n      _this.pluralizedTypes = _this.pluralizedTypes || Object.create(null);\n      if (!_this.pluralizedTypes.config) {\n        _this.pluralizedTypes.config = 'config';\n      }\n      return _this;\n    }\n    _inherits(Resolver, _EmberObject);\n    return _createClass(Resolver, [{\n      key: \"makeToString\",\n      value: function makeToString(factory, fullName) {\n        return '' + this.namespace.modulePrefix + '@' + fullName + ':';\n      }\n    }, {\n      key: \"shouldWrapInClassFactory\",\n      value: function shouldWrapInClassFactory(/* module, parsedName */\n      ) {\n        return false;\n      }\n    }, {\n      key: \"parseName\",\n      value: function parseName(fullName) {\n        if (fullName.parsedName === true) {\n          return fullName;\n        }\n        var prefix, type, name;\n        var fullNameParts = fullName.split('@');\n        if (fullNameParts.length === 3) {\n          if (fullNameParts[0].length === 0) {\n            // leading scoped namespace: `@scope/pkg@type:name`\n            prefix = \"@\".concat(fullNameParts[1]);\n            var prefixParts = fullNameParts[2].split(':');\n            type = prefixParts[0];\n            name = prefixParts[1];\n          } else {\n            // interweaved scoped namespace: `type:@scope/pkg@name`\n            prefix = \"@\".concat(fullNameParts[1]);\n            type = fullNameParts[0].slice(0, -1);\n            name = fullNameParts[2];\n          }\n          if (type === 'template:components') {\n            name = \"components/\".concat(name);\n            type = 'template';\n          }\n        } else if (fullNameParts.length === 2) {\n          var _prefixParts = fullNameParts[0].split(':');\n          if (_prefixParts.length === 2) {\n            if (_prefixParts[1].length === 0) {\n              type = _prefixParts[0];\n              name = \"@\".concat(fullNameParts[1]);\n            } else {\n              prefix = _prefixParts[1];\n              type = _prefixParts[0];\n              name = fullNameParts[1];\n            }\n          } else {\n            var nameParts = fullNameParts[1].split(':');\n            prefix = fullNameParts[0];\n            type = nameParts[0];\n            name = nameParts[1];\n          }\n          if (type === 'template' && prefix.lastIndexOf('components/', 0) === 0) {\n            name = \"components/\".concat(name);\n            prefix = prefix.slice(11);\n          }\n        } else {\n          fullNameParts = fullName.split(':');\n          type = fullNameParts[0];\n          name = fullNameParts[1];\n        }\n        var fullNameWithoutType = name;\n        var namespace = this.namespace;\n        var root = namespace;\n        return {\n          parsedName: true,\n          fullName: fullName,\n          prefix: prefix || this.prefix({\n            type: type\n          }),\n          type: type,\n          fullNameWithoutType: fullNameWithoutType,\n          name: name,\n          root: root,\n          resolveMethodName: 'resolve' + (0, _string.classify)(type)\n        };\n      }\n    }, {\n      key: \"resolveOther\",\n      value: function resolveOther(parsedName) {\n        (true && !(this.namespace.modulePrefix) && (0, _debug.assert)('`modulePrefix` must be defined', this.namespace.modulePrefix));\n        var normalizedModuleName = this.findModuleName(parsedName);\n        if (normalizedModuleName) {\n          var defaultExport = this._extractDefaultExport(normalizedModuleName, parsedName);\n          if (defaultExport === undefined) {\n            throw new Error(\" Expected to find: '\".concat(parsedName.fullName, \"' within '\").concat(normalizedModuleName, \"' but got 'undefined'. Did you forget to 'export default' within '\").concat(normalizedModuleName, \"'?\"));\n          }\n          if (this.shouldWrapInClassFactory(defaultExport, parsedName)) {\n            defaultExport = (0, _classFactory.default)(defaultExport);\n          }\n          return defaultExport;\n        }\n      }\n    }, {\n      key: \"normalize\",\n      value: function normalize(fullName) {\n        return this._normalizeCache[fullName] || (this._normalizeCache[fullName] = this._normalize(fullName));\n      }\n    }, {\n      key: \"resolve\",\n      value: function resolve(fullName) {\n        var parsedName = this.parseName(fullName);\n        var resolveMethodName = parsedName.resolveMethodName;\n        var resolved;\n        if (typeof this[resolveMethodName] === 'function') {\n          resolved = this[resolveMethodName](parsedName);\n        }\n        if (resolved == null) {\n          resolved = this.resolveOther(parsedName);\n        }\n        return resolved;\n      }\n    }, {\n      key: \"_normalize\",\n      value: function _normalize(fullName) {\n        // A) Convert underscores to dashes\n        // B) Convert camelCase to dash-case, except for components (their\n        //    templates) and helpers where we want to avoid shadowing camelCase\n        //    expressions\n        // C) replace `.` with `/` in order to make nested controllers work in the following cases\n        //      1. `needs: ['posts/post']`\n        //      2. `{{render \"posts/post\"}}`\n        //      3. `this.render('posts/post')` from Route\n\n        var split = fullName.split(':');\n        if (split.length > 1) {\n          var type = split[0];\n          if (type === 'component' || type === 'helper' || type === 'modifier' || type === 'template' && split[1].indexOf('components/') === 0) {\n            return type + ':' + split[1].replace(/_/g, '-');\n          } else {\n            return type + ':' + (0, _string.dasherize)(split[1].replace(/\\./g, '/'));\n          }\n        } else {\n          return fullName;\n        }\n      }\n    }, {\n      key: \"pluralize\",\n      value: function pluralize(type) {\n        return this.pluralizedTypes[type] || (this.pluralizedTypes[type] = type + 's');\n      }\n    }, {\n      key: \"podBasedLookupWithPrefix\",\n      value: function podBasedLookupWithPrefix(podPrefix, parsedName) {\n        var fullNameWithoutType = parsedName.fullNameWithoutType;\n        if (parsedName.type === 'template') {\n          fullNameWithoutType = fullNameWithoutType.replace(/^components\\//, '');\n        }\n        return podPrefix + '/' + fullNameWithoutType + '/' + parsedName.type;\n      }\n    }, {\n      key: \"podBasedModuleName\",\n      value: function podBasedModuleName(parsedName) {\n        var podPrefix = this.namespace.podModulePrefix || this.namespace.modulePrefix;\n        return this.podBasedLookupWithPrefix(podPrefix, parsedName);\n      }\n    }, {\n      key: \"podBasedComponentsInSubdir\",\n      value: function podBasedComponentsInSubdir(parsedName) {\n        var podPrefix = this.namespace.podModulePrefix || this.namespace.modulePrefix;\n        podPrefix = podPrefix + '/components';\n        if (parsedName.type === 'component' || /^components/.test(parsedName.fullNameWithoutType)) {\n          return this.podBasedLookupWithPrefix(podPrefix, parsedName);\n        }\n      }\n    }, {\n      key: \"resolveEngine\",\n      value: function resolveEngine(parsedName) {\n        var engineName = parsedName.fullNameWithoutType;\n        var engineModule = engineName + '/engine';\n        if (this._moduleRegistry.has(engineModule)) {\n          return this._extractDefaultExport(engineModule);\n        }\n      }\n    }, {\n      key: \"resolveRouteMap\",\n      value: function resolveRouteMap(parsedName) {\n        var engineName = parsedName.fullNameWithoutType;\n        var engineRoutesModule = engineName + '/routes';\n        if (this._moduleRegistry.has(engineRoutesModule)) {\n          var routeMap = this._extractDefaultExport(engineRoutesModule);\n          (true && !(routeMap.isRouteMap) && (0, _debug.assert)(\"The route map for \".concat(engineName, \" should be wrapped by 'buildRoutes' before exporting.\"), routeMap.isRouteMap));\n          return routeMap;\n        }\n      }\n    }, {\n      key: \"resolveTemplate\",\n      value: function resolveTemplate(parsedName) {\n        return this.resolveOther(parsedName);\n      }\n    }, {\n      key: \"mainModuleName\",\n      value: function mainModuleName(parsedName) {\n        if (parsedName.fullNameWithoutType === 'main') {\n          // if router:main or adapter:main look for a module with just the type first\n          return parsedName.prefix + '/' + parsedName.type;\n        }\n      }\n    }, {\n      key: \"defaultModuleName\",\n      value: function defaultModuleName(parsedName) {\n        return parsedName.prefix + '/' + this.pluralize(parsedName.type) + '/' + parsedName.fullNameWithoutType;\n      }\n    }, {\n      key: \"nestedColocationComponentModuleName\",\n      value: function nestedColocationComponentModuleName(parsedName) {\n        if (parsedName.type === 'component') {\n          return parsedName.prefix + '/' + this.pluralize(parsedName.type) + '/' + parsedName.fullNameWithoutType + '/index';\n        }\n      }\n    }, {\n      key: \"prefix\",\n      value: function prefix(parsedName) {\n        var tmpPrefix = this.namespace.modulePrefix;\n        if (this.namespace[parsedName.type + 'Prefix']) {\n          tmpPrefix = this.namespace[parsedName.type + 'Prefix'];\n        }\n        return tmpPrefix;\n      }\n    }, {\n      key: \"findModuleName\",\n      value: function findModuleName(parsedName, loggingDisabled) {\n        var moduleNameLookupPatterns = this.moduleNameLookupPatterns;\n        var moduleName;\n        for (var index = 0, length = moduleNameLookupPatterns.length; index < length; index++) {\n          var item = moduleNameLookupPatterns[index];\n          var tmpModuleName = item.call(this, parsedName);\n\n          // allow treat all dashed and all underscored as the same thing\n          // supports components with dashes and other stuff with underscores.\n          if (tmpModuleName) {\n            tmpModuleName = this.chooseModuleName(tmpModuleName, parsedName);\n          }\n          if (tmpModuleName && this._moduleRegistry.has(tmpModuleName)) {\n            moduleName = tmpModuleName;\n          }\n          if (!loggingDisabled) {\n            this._logLookup(moduleName, parsedName, tmpModuleName);\n          }\n          if (moduleName) {\n            return moduleName;\n          }\n        }\n      }\n    }, {\n      key: \"chooseModuleName\",\n      value: function chooseModuleName(moduleName, parsedName) {\n        var underscoredModuleName = (0, _string.underscore)(moduleName);\n        if (moduleName !== underscoredModuleName && this._moduleRegistry.has(moduleName) && this._moduleRegistry.has(underscoredModuleName)) {\n          throw new TypeError(\"Ambiguous module names: '\".concat(moduleName, \"' and '\").concat(underscoredModuleName, \"'\"));\n        }\n        if (this._moduleRegistry.has(moduleName)) {\n          return moduleName;\n        } else if (this._moduleRegistry.has(underscoredModuleName)) {\n          return underscoredModuleName;\n        }\n        // workaround for dasherized partials:\n        // something/something/-something => something/something/_something\n        var partializedModuleName = moduleName.replace(/\\/-([^/]*)$/, '/_$1');\n        if (this._moduleRegistry.has(partializedModuleName)) {\n          (true && !(false) && (0, _debug.deprecate)('Modules should not contain underscores. ' + 'Attempted to lookup \"' + moduleName + '\" which ' + 'was not found. Please rename \"' + partializedModuleName + '\" ' + 'to \"' + moduleName + '\" instead.', false, {\n            id: 'ember-resolver.underscored-modules',\n            until: '3.0.0',\n            for: 'ember-resolver',\n            since: '0.1.0'\n          }));\n          return partializedModuleName;\n        }\n        if (true /* DEBUG */) {\n          var isCamelCaseHelper = parsedName.type === 'helper' && /[a-z]+[A-Z]+/.test(moduleName);\n          if (isCamelCaseHelper) {\n            this._camelCaseHelperWarnedNames = this._camelCaseHelperWarnedNames || [];\n            var alreadyWarned = this._camelCaseHelperWarnedNames.indexOf(parsedName.fullName) > -1;\n            if (!alreadyWarned && this._moduleRegistry.has((0, _string.dasherize)(moduleName))) {\n              this._camelCaseHelperWarnedNames.push(parsedName.fullName);\n              (true && (0, _debug.warn)('Attempted to lookup \"' + parsedName.fullName + '\" which ' + 'was not found. In previous versions of ember-resolver, a bug would have ' + 'caused the module at \"' + (0, _string.dasherize)(moduleName) + '\" to be ' + 'returned for this camel case helper name. This has been fixed. ' + 'Use the dasherized name to resolve the module that would have been ' + 'returned in previous versions.', false, {\n                id: 'ember-resolver.camelcase-helper-names',\n                until: '3.0.0'\n              }));\n            }\n          }\n        }\n      }\n\n      // used by Ember.DefaultResolver.prototype._logLookup\n    }, {\n      key: \"lookupDescription\",\n      value: function lookupDescription(fullName) {\n        var parsedName = this.parseName(fullName);\n        var moduleName = this.findModuleName(parsedName, true);\n        return moduleName;\n      }\n\n      // only needed until 1.6.0-beta.2 can be required\n    }, {\n      key: \"_logLookup\",\n      value: function _logLookup(found, parsedName, description) {\n        var _owner$resolveRegistr;\n        var owner = (0, _owner.getOwner)(this);\n        var env = owner === null || owner === void 0 || (_owner$resolveRegistr = owner.resolveRegistration) === null || _owner$resolveRegistr === void 0 ? void 0 : _owner$resolveRegistr.call(owner, 'config:environment');\n        if (!(env !== null && env !== void 0 && env.LOG_MODULE_RESOLVER) && !parsedName.root.LOG_RESOLVER) {\n          return;\n        }\n        var padding;\n        var symbol = found ? '[✓]' : '[ ]';\n        if (parsedName.fullName.length > 60) {\n          padding = '.';\n        } else {\n          padding = new Array(60 - parsedName.fullName.length).join('.');\n        }\n        if (!description) {\n          description = this.lookupDescription(parsedName);\n        }\n\n        /* eslint-disable no-console */\n        if (console && console.info) {\n          console.info(symbol, parsedName.fullName, padding, description);\n        }\n      }\n    }, {\n      key: \"knownForType\",\n      value: function knownForType(type) {\n        var moduleKeys = this._moduleRegistry.moduleNames();\n        var items = Object.create(null);\n        for (var index = 0, length = moduleKeys.length; index < length; index++) {\n          var moduleName = moduleKeys[index];\n          var fullname = this.translateToContainerFullname(type, moduleName);\n          if (fullname) {\n            items[fullname] = true;\n          }\n        }\n        return items;\n      }\n    }, {\n      key: \"translateToContainerFullname\",\n      value: function translateToContainerFullname(type, moduleName) {\n        var prefix = this.prefix({\n          type: type\n        });\n\n        // Note: using string manipulation here rather than regexes for better performance.\n        // pod modules\n        // '^' + prefix + '/(.+)/' + type + '$'\n        var podPrefix = prefix + '/';\n        var podSuffix = '/' + type;\n        var start = moduleName.indexOf(podPrefix);\n        var end = moduleName.indexOf(podSuffix);\n        if (start === 0 && end === moduleName.length - podSuffix.length && moduleName.length > podPrefix.length + podSuffix.length) {\n          return type + ':' + moduleName.slice(start + podPrefix.length, end);\n        }\n\n        // non-pod modules\n        // '^' + prefix + '/' + pluralizedType + '/(.+)$'\n        var pluralizedType = this.pluralize(type);\n        var nonPodPrefix = prefix + '/' + pluralizedType + '/';\n        if (moduleName.indexOf(nonPodPrefix) === 0 && moduleName.length > nonPodPrefix.length) {\n          return type + ':' + moduleName.slice(nonPodPrefix.length);\n        }\n      }\n    }, {\n      key: \"_extractDefaultExport\",\n      value: function _extractDefaultExport(normalizedModuleName) {\n        var module = this._moduleRegistry.get(normalizedModuleName, null, null, true /* force sync */);\n        if (module && module['default']) {\n          module = module['default'];\n        }\n        return module;\n      }\n    }]);\n  }(_object.default);\n  _defineProperty(Resolver, \"moduleBasedResolver\", true);\n  var _default = _exports.default = Resolver;\n});","define(\"ember-resolver/string/cache\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  var Cache = _exports.default = /*#__PURE__*/function () {\n    function Cache(limit, func, store) {\n      _classCallCheck(this, Cache);\n      this.limit = limit;\n      this.func = func;\n      this.store = store;\n      this.size = 0;\n      this.misses = 0;\n      this.hits = 0;\n      this.store = store || new Map();\n    }\n    return _createClass(Cache, [{\n      key: \"get\",\n      value: function get(key) {\n        var value = this.store.get(key);\n        if (this.store.has(key)) {\n          this.hits++;\n          return this.store.get(key);\n        } else {\n          this.misses++;\n          value = this.set(key, this.func(key));\n        }\n        return value;\n      }\n    }, {\n      key: \"set\",\n      value: function set(key, value) {\n        if (this.limit > this.size) {\n          this.size++;\n          this.store.set(key, value);\n        }\n        return value;\n      }\n    }, {\n      key: \"purge\",\n      value: function purge() {\n        this.store.clear();\n        this.size = 0;\n        this.hits = 0;\n        this.misses = 0;\n      }\n    }]);\n  }();\n});","define(\"ember-resolver/string/index\", [\"exports\", \"ember-resolver/string/cache\"], function (_exports, _cache) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.classify = classify;\n  _exports.dasherize = dasherize;\n  _exports.decamelize = decamelize;\n  _exports.getString = getString;\n  _exports.getStrings = getStrings;\n  _exports.setStrings = setStrings;\n  _exports.underscore = underscore;\n  /* eslint-disable no-useless-escape */\n\n  var STRINGS = {};\n  function setStrings(strings) {\n    STRINGS = strings;\n  }\n  function getStrings() {\n    return STRINGS;\n  }\n  function getString(name) {\n    return STRINGS[name];\n  }\n  var STRING_DASHERIZE_REGEXP = /[ _]/g;\n  var STRING_DASHERIZE_CACHE = new _cache.default(1000, function (key) {\n    return decamelize(key).replace(STRING_DASHERIZE_REGEXP, '-');\n  });\n  var STRING_CLASSIFY_REGEXP_1 = /^(\\-|_)+(.)?/;\n  var STRING_CLASSIFY_REGEXP_2 = /(.)(\\-|\\_|\\.|\\s)+(.)?/g;\n  var STRING_CLASSIFY_REGEXP_3 = /(^|\\/|\\.)([a-z])/g;\n  var CLASSIFY_CACHE = new _cache.default(1000, function (str) {\n    var replace1 = function replace1(_match, _separator, chr) {\n      return chr ? \"_\".concat(chr.toUpperCase()) : '';\n    };\n    var replace2 = function replace2(_match, initialChar, _separator, chr) {\n      return initialChar + (chr ? chr.toUpperCase() : '');\n    };\n    var parts = str.split('/');\n    for (var i = 0; i < parts.length; i++) {\n      parts[i] = parts[i].replace(STRING_CLASSIFY_REGEXP_1, replace1).replace(STRING_CLASSIFY_REGEXP_2, replace2);\n    }\n    return parts.join('/').replace(STRING_CLASSIFY_REGEXP_3, function (match /*, separator, chr */) {\n      return match.toUpperCase();\n    });\n  });\n  var STRING_UNDERSCORE_REGEXP_1 = /([a-z\\d])([A-Z]+)/g;\n  var STRING_UNDERSCORE_REGEXP_2 = /\\-|\\s+/g;\n  var UNDERSCORE_CACHE = new _cache.default(1000, function (str) {\n    return str.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2').replace(STRING_UNDERSCORE_REGEXP_2, '_').toLowerCase();\n  });\n  var STRING_DECAMELIZE_REGEXP = /([a-z\\d])([A-Z])/g;\n  var DECAMELIZE_CACHE = new _cache.default(1000, function (str) {\n    return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase();\n  });\n  /**\n    Converts a camelized string into all lower case separated by underscores.\n  \n    ```javascript\n    import { decamelize } from '@ember/string';\n  \n    decamelize('innerHTML');          // 'inner_html'\n    decamelize('action_name');        // 'action_name'\n    decamelize('css-class-name');     // 'css-class-name'\n    decamelize('my favorite items');  // 'my favorite items'\n    ```\n  \n    @method decamelize\n    @param {String} str The string to decamelize.\n    @return {String} the decamelized string.\n    @public\n  */\n  function decamelize(str) {\n    return DECAMELIZE_CACHE.get(str);\n  }\n  /**\n    Replaces underscores, spaces, or camelCase with dashes.\n  \n    ```javascript\n    import { dasherize } from '@ember/string';\n  \n    dasherize('innerHTML');                // 'inner-html'\n    dasherize('action_name');              // 'action-name'\n    dasherize('css-class-name');           // 'css-class-name'\n    dasherize('my favorite items');        // 'my-favorite-items'\n    dasherize('privateDocs/ownerInvoice';  // 'private-docs/owner-invoice'\n    ```\n  \n    @method dasherize\n    @param {String} str The string to dasherize.\n    @return {String} the dasherized string.\n    @public\n  */\n  function dasherize(str) {\n    return STRING_DASHERIZE_CACHE.get(str);\n  }\n  /**\n    Returns the UpperCamelCase form of a string.\n  \n    ```javascript\n    import { classify } from '@ember/string';\n  \n    classify('innerHTML');                   // 'InnerHTML'\n    classify('action_name');                 // 'ActionName'\n    classify('css-class-name');              // 'CssClassName'\n    classify('my favorite items');           // 'MyFavoriteItems'\n    classify('private-docs/owner-invoice');  // 'PrivateDocs/OwnerInvoice'\n    ```\n  \n    @method classify\n    @param {String} str the string to classify\n    @return {String} the classified string\n    @public\n  */\n  function classify(str) {\n    return CLASSIFY_CACHE.get(str);\n  }\n  /**\n    More general than decamelize. Returns the lower\\_case\\_and\\_underscored\n    form of a string.\n  \n    ```javascript\n    import { underscore } from '@ember/string';\n  \n    underscore('innerHTML');                 // 'inner_html'\n    underscore('action_name');               // 'action_name'\n    underscore('css-class-name');            // 'css_class_name'\n    underscore('my favorite items');         // 'my_favorite_items'\n    underscore('privateDocs/ownerInvoice');  // 'private_docs/owner_invoice'\n    ```\n  \n    @method underscore\n    @param {String} str The string to underscore.\n    @return {String} the underscored string.\n    @public\n  */\n  function underscore(str) {\n    return UNDERSCORE_CACHE.get(str);\n  }\n});","define(\"ember-resolver/utils/class-factory\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = classFactory;\n  function classFactory(klass) {\n    return {\n      create: function create(injections) {\n        if (typeof klass.extend === 'function') {\n          return klass.extend(injections);\n        } else {\n          return klass;\n        }\n      }\n    };\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-responsive/helpers/media\", [\"exports\", \"@ember/component/helper\", \"@ember/service\", \"@ember/object\"], function (_exports, _helper, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var MediaHelper = _exports.default = (_dec = (0, _service.inject)(), _class = /*#__PURE__*/function (_Helper) {\n    function MediaHelper() {\n      var _this;\n      _classCallCheck(this, MediaHelper);\n      _this = _callSuper(this, MediaHelper, arguments);\n      _initializerDefineProperty(_this, \"media\", _descriptor, _this);\n      _this.media.on('mediaChanged', function () {\n        _this.recompute();\n      });\n      return _this;\n    }\n    _inherits(MediaHelper, _Helper);\n    return _createClass(MediaHelper, [{\n      key: \"compute\",\n      value: function compute(_ref) {\n        var _ref2 = _slicedToArray(_ref, 1),\n          prop = _ref2[0];\n        return (0, _object.get)(this, \"media.\".concat(prop));\n      }\n    }]);\n  }(_helper.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"media\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"ember-responsive/initializers/responsive\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  /**\n   * Ember responsive initializer\n   *\n   * Supports auto injecting media service app-wide.\n   * Generated by the ember-responsive addon.\n   */\n  function initialize(application) {\n    application.registerOptionsForType('breakpoints', {\n      instantiate: false\n    });\n  }\n  var _default = _exports.default = {\n    name: 'ember-responsive-breakpoints',\n    initialize: initialize\n  };\n});","define(\"ember-responsive/null-match-media\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n  /**\n   * Stub function that is `matchMedia` API compatible but always returns\n   * `false`. Useful for server-side environments like FastBoot where there\n   * is no viewport.\n   */\n  function _default() {\n    return {\n      matches: false\n    };\n  }\n});","define(\"ember-responsive/services/media\", [\"exports\", \"ember\", \"@glimmer/tracking\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"@ember/string\", \"ember-responsive/null-match-media\", \"@ember/application\", \"@ember/object/evented\", \"@ember/object/compat\"], function (_exports, _ember, _tracking, _runloop, _object, _service, _string, _nullMatchMedia, _application, _evented, _compat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  /**\n  * Handles detecting and responding to media queries.\n  *\n  * **Adding media query matchers**\n  *\n  * The first step to using the class is to add media queries that you\n  * want it to listen to. Each media query has a name that you can\n  * use to reference it by.\n  *\n  * ```javascript\n  * media = Ember.Responsive.Media.create();\n  * media.match('mobile', '(max-width: 767px)');\n  * media.match('desktop', '(min-width: 768px)');\n  * ```\n  *\n  * **Testing the media query matchers**\n  *\n  * Now that you've added a few matchers, you can access those media queries as\n  * if they were properties on your object. The nice thing is that whenever the\n  * media queries change, this class will automatically update the relevant\n  * properties (and so will the rest of your application, thanks to the power\n  * of two-way data-binding).\n  *\n  * ```javascript\n  * media = Ember.Responsive.Media.create();\n  * media.match('mobile', '(max-width: 767px)');\n  * media.match('desktop', '(min-width: 768px)');\n  *\n  * // There are convenient \"isser\" properties defined...\n  * if (media.get('isMobile')) {\n  *   console.log('mobile!');\n  * }\n  *\n  * // As well as access to the matchMedia API...\n  * if (media.get('desktop.matches')) {\n  *   console.log('desktop!');\n  * }\n  * ```\n  *\n  * **Retrieving a list of matching media queries**\n  *\n  * It's also nice to be able to see which media queries are matching, since\n  * some applications might have many matches at the same time.\n  *\n  * ```javascript\n  * media = Ember.Responsive.Media.create();\n  * media.match('desktop', 'all');\n  * media.match('mobile', 'all');\n  *\n  * console.log(media.matches);\n  * // => Ember.Set(['desktop', 'mobile']);\n  * ```\n  *\n  * This class can also return that list as a string of dasherized class names,\n  * which is useful for placing on your app's rootElement. By default, these\n  * class names are prefixed with `media-`, so as not to clash with any other\n  * classes your app might use.\n  *\n  * ```javascript\n  * App.ApplicationView = Ember.View.extend({\n  *   classNameBindings: ['media.classNames']\n  * });\n  * ```\n  *\n  * @module    ember-responsive\n  * @namespace Ember.Responsive\n  * @class     Media\n  * @extends   Ember.Object\n  */\n  var MediaService = _exports.default = (_class = /*#__PURE__*/function (_Service$extend) {\n    /**\n     * Initialize the service based on the breakpoints config\n     *\n     * @method init\n     *\n     */\n    function MediaService() {\n      var _this;\n      _classCallCheck(this, MediaService);\n      _this = _callSuper(this, MediaService, arguments);\n      // Ember only sets Ember.testing when tests are starting\n      // eslint-disable-next-line ember/no-ember-testing-in-module-scope\n      _defineProperty(_this, \"_mocked\", _ember.default.testing);\n      _defineProperty(_this, \"_mockedBreakpoint\", 'desktop');\n      /**\n      * @property  _matches\n      * @type      Array\n      */\n      _initializerDefineProperty(_this, \"_matches\", _descriptor, _this);\n      /**\n      * A hash of listeners indexed by their matcher's names\n      *\n      * @property\n      * @type Object\n      */\n      _defineProperty(_this, \"listeners\", {});\n      /**\n       * A hash of matchers by breakpoint name\n       */\n      _defineProperty(_this, \"matchers\", {});\n      /**\n      * The matcher to use for testing media queries.\n      *\n      * @property  matcher\n      * @type      matchMedia\n      * @default   window.matchMedia\n      * @private\n      */\n      _defineProperty(_this, \"mql\", detectMatchMedia());\n      var breakpoints = (0, _application.getOwner)(_this).lookup('breakpoints:main');\n      if (breakpoints) {\n        Object.keys(breakpoints).forEach(function (name) {\n          var cpName = \"is\".concat((0, _string.classify)(name));\n          (0, _object.defineProperty)(_this, cpName, (0, _compat.dependentKeyCompat)({\n            get: function get() {\n              return this.matches.indexOf(name) > -1;\n            }\n          }));\n          (0, _object.defineProperty)(_this, name, (0, _compat.dependentKeyCompat)({\n            get: function get() {\n              return this[cpName];\n            }\n          }));\n          _this.match(name, breakpoints[name]);\n        });\n      }\n      return _this;\n    }\n\n    /**\n    * A string composed of all the matching matchers' names, turned into\n    * friendly, dasherized class-names that are prefixed with `media-`.\n    *\n    * @property  classNames\n    * @type      string\n    */\n    _inherits(MediaService, _Service$extend);\n    return _createClass(MediaService, [{\n      key: \"matches\",\n      get:\n      /**\n      * A set of matching matchers.\n      *\n      * @property  matches\n      * @type      Array\n      */\n      function get() {\n        if (this._matches) {\n          return this._matches;\n        }\n        return _ember.default.testing && this._mocked ? [this._mockedBreakpoint] : [];\n      },\n      set: function set(value) {\n        this._matches = value;\n      }\n    }, {\n      key: \"classNames\",\n      get: function get() {\n        return this.matches.map(function (name) {\n          return \"media-\".concat((0, _string.dasherize)(name));\n        }).join(' ');\n      }\n    }, {\n      key: \"_triggerMediaChanged\",\n      value: function _triggerMediaChanged() {\n        this.trigger('mediaChanged', {});\n      }\n    }, {\n      key: \"_triggerEvent\",\n      value: function _triggerEvent() {\n        (0, _runloop.once)(this, this._triggerMediaChanged);\n      }\n\n      /**\n      * Adds a new matcher to the list.\n      *\n      * After this method is called, you will be able to access the result\n      * of the matcher as a property on this object.\n      *\n      * **Adding a new matcher**\n      *\n      * ```javascript\n      * media = Ember.Responsive.Media.create();\n      * media.match('all', 'all');\n      * media.get('all');\n      *   // => instanceof window.matchMedia\n      * media.get('all.matches');\n      *   // => true\n      * ```\n      *\n      * @param   string  name   The name of the matcher\n      * @param   string  query  The media query to match against\n      * @method  match\n      */\n    }, {\n      key: \"match\",\n      value: function match(name, query) {\n        var _this2 = this;\n        // see https://github.com/ember-cli/eslint-plugin-ember/pull/272\n        if (_ember.default.testing && this._mocked) {\n          return;\n        }\n        var mql = this.mql;\n        var matcher = mql(query);\n        var listener = function listener(matcher) {\n          if (_this2.isDestroyed) {\n            return;\n          }\n          (0, _object.set)(_this2, \"matchers.\".concat(name), matcher);\n          if (matcher.matches) {\n            _this2.matches = Array.from(new Set([].concat(_toConsumableArray(_this2.matches), [name])));\n          } else {\n            _this2.matches = Array.from(new Set(_this2.matches.filter(function (key) {\n              return key !== name;\n            })));\n          }\n          _this2._triggerEvent();\n        };\n        this.listeners[name] = listener;\n        if (matcher.addListener) {\n          matcher.addListener(function (matcher) {\n            (0, _runloop.run)(null, listener, matcher);\n          });\n        }\n        listener(matcher);\n      }\n    }]);\n  }(_service.default.extend(_evented.default)), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_matches\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  function detectMatchMedia() {\n    if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && window.matchMedia) {\n      return window.matchMedia;\n    }\n    return _nullMatchMedia.default;\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-steps/-private/state-machine/-base\", [\"exports\", \"tracked-maps-and-sets\", \"@glimmer/tracking\", \"@ember/debug\", \"@ember/utils\", \"ember-steps/-private/step-node\"], function (_exports, _trackedMapsAndSets, _tracking, _debug, _utils, _stepNode) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * Keeps track of the order of the steps in the step manager, as well as\n   * the current step.\n   *\n   * @class BaseStateMachine\n   * @private\n   * @hide\n   */\n  var BaseStateMachine = _exports.default = (_class = /*#__PURE__*/function () {\n    function BaseStateMachine(initialStep) {\n      _classCallCheck(this, BaseStateMachine);\n      /** @type {TrackedSet<StepNode>} **/\n      _initializerDefineProperty(this, \"nodes\", _descriptor, this);\n      /** @type {string} **/\n      _initializerDefineProperty(this, \"currentStep\", _descriptor2, this);\n      this.currentStep = initialStep;\n    }\n    return _createClass(BaseStateMachine, [{\n      key: \"length\",\n      get: function get() {\n        return this.nodes.size;\n      }\n    }, {\n      key: \"firstStepName\",\n      get: function get() {\n        var firstNode = this.nodeArray[0];\n        return firstNode && firstNode.name;\n      }\n    }, {\n      key: \"currentStepNode\",\n      get: function get() {\n        var _this = this;\n        return this.nodeArray.find(function (stepNode) {\n          return stepNode.name === _this.currentStep;\n        });\n      }\n    }, {\n      key: \"nodeArray\",\n      get: function get() {\n        return _toConsumableArray(this.nodes);\n      }\n    }, {\n      key: \"addStep\",\n      value: function addStep(stepComponent) {\n        var node = new _stepNode.default(this, stepComponent);\n        this.nodes.add(node);\n        if (typeof this.currentStep === 'undefined') {\n          this.currentStep = stepComponent.name;\n        }\n      }\n    }, {\n      key: \"removeStep\",\n      value: function removeStep(stepComponent) {\n        var node = this.nodeArray.find(function (step) {\n          return step.component === stepComponent;\n        });\n        (true && !(node) && (0, _debug.assert)(\"Could not find a step with name: \".concat(node.name), node));\n        this.nodes.delete(node);\n      }\n    }, {\n      key: \"updateStepNode\",\n      value: function updateStepNode(name, field, value) {\n        var node = this.nodeArray.find(function (node) {\n          return node.name === name;\n        });\n        (true && !(node) && (0, _debug.assert)(\"\\\"\".concat(name, \"\\\" does not match an existing step\"), node));\n        node[field] = value;\n      }\n    }, {\n      key: \"pickNext\",\n      value: function pickNext() {\n        throw new Error('Must implement method');\n      }\n    }, {\n      key: \"pickPrevious\",\n      value: function pickPrevious() {\n        throw new Error('Must implement method');\n      }\n    }, {\n      key: \"activate\",\n      value: function activate(step) {\n        var name = step instanceof _stepNode.default ? step.name : step;\n        (true && !(!(0, _utils.isNone)(step)) && (0, _debug.assert)('No step name was provided', !(0, _utils.isNone)(step)));\n        (true && !(this.nodeArray.map(function (node) {\n          return node.name;\n        }).includes(name)) && (0, _debug.assert)(\"\\\"\".concat(name, \"\\\" does not match an existing step\"), this.nodeArray.map(function (node) {\n          return node.name;\n        }).includes(name)));\n        this.currentStep = name;\n      }\n    }]);\n  }(), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"nodes\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return new _trackedMapsAndSets.TrackedSet();\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"currentStep\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-steps/-private/state-machine/circular\", [\"exports\", \"ember-steps/-private/state-machine/-base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  /**\n   * Keeps track of the order of the steps in the step manager, as well as\n   * the current step.\n   *\n   * @class CircularStateMachine\n   * @extends BaseStateMachine\n   * @private\n   * @hide\n   */\n  var CircularStateMachine = _exports.default = /*#__PURE__*/function (_BaseStateMachine) {\n    function CircularStateMachine() {\n      _classCallCheck(this, CircularStateMachine);\n      return _callSuper(this, CircularStateMachine, arguments);\n    }\n    _inherits(CircularStateMachine, _BaseStateMachine);\n    return _createClass(CircularStateMachine, [{\n      key: \"pickNext\",\n      value: function pickNext() {\n        var currentStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currentStep;\n        var currentIndex = this.nodeArray.map(function (node) {\n          return node.name;\n        }).indexOf(currentStep);\n        var nextValue = this.nodeArray[currentIndex + 1];\n        if (nextValue) {\n          return nextValue.name;\n        }\n        var firstObject = this.nodeArray[0];\n        if (firstObject) {\n          return firstObject.name;\n        }\n        return undefined;\n      }\n    }, {\n      key: \"pickPrevious\",\n      value: function pickPrevious() {\n        var currentStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currentStep;\n        var currentIndex = this.nodeArray.map(function (node) {\n          return node.name;\n        }).indexOf(currentStep);\n        var previousValue = this.nodeArray[currentIndex - 1];\n        if (previousValue) {\n          return previousValue.name;\n        }\n        var lastIndex = this.length - 1;\n        var lastObject = this.nodeArray[lastIndex];\n        if (lastObject) {\n          return lastObject.name;\n        }\n        return undefined;\n      }\n    }]);\n  }(_base.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-steps/-private/state-machine/linear\", [\"exports\", \"ember-steps/-private/state-machine/-base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  /**\n   * Keeps track of the order of the steps in the step manager, as well as\n   * the current step.\n   *\n   * @class CircularStateMachine\n   * @extends BaseStateMachine\n   * @private\n   * @hide\n   */\n  var LinearStateMachine = _exports.default = /*#__PURE__*/function (_BaseStateMachine) {\n    function LinearStateMachine() {\n      _classCallCheck(this, LinearStateMachine);\n      return _callSuper(this, LinearStateMachine, arguments);\n    }\n    _inherits(LinearStateMachine, _BaseStateMachine);\n    return _createClass(LinearStateMachine, [{\n      key: \"pickNext\",\n      value: function pickNext() {\n        var currentStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currentStep;\n        var currentIndex = this.nodeArray.map(function (node) {\n          return node.name;\n        }).indexOf(currentStep);\n        var currentNode = this.nodeArray[currentIndex + 1];\n        if (currentNode) {\n          return currentNode.name;\n        }\n        return undefined;\n      }\n    }, {\n      key: \"pickPrevious\",\n      value: function pickPrevious() {\n        var currentStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currentStep;\n        var currentIndex = this.nodeArray.map(function (node) {\n          return node.name;\n        }).indexOf(currentStep);\n        var currentNode = this.nodeArray[currentIndex - 1];\n        if (currentNode) {\n          return currentNode.name;\n        }\n        return undefined;\n      }\n    }]);\n  }(_base.default);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-steps/-private/step-node\", [\"exports\", \"@glimmer/tracking\", \"@ember/utils\"], function (_exports, _tracking, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var StepNode = _exports.default = (_class = /*#__PURE__*/function () {\n    function StepNode(sm, component) {\n      _classCallCheck(this, StepNode);\n      /** @private */\n      _initializerDefineProperty(this, \"sm\", _descriptor, this);\n      /** @private */\n      _initializerDefineProperty(this, \"component\", _descriptor2, this);\n      this.sm = sm;\n      this.component = component;\n    }\n\n    /** @type {string} */\n    return _createClass(StepNode, [{\n      key: \"name\",\n      get: function get() {\n        return this.component.name;\n      }\n\n      /** @type {any} */\n    }, {\n      key: \"context\",\n      get: function get() {\n        return this.component.args.context;\n      }\n\n      /** @type {boolean} */\n    }, {\n      key: \"hasNext\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.sm.pickNext(this.name));\n      }\n\n      /** @type {boolean} */\n    }, {\n      key: \"hasPrevious\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.sm.pickPrevious(this.name));\n      }\n\n      /** @type {boolean} */\n    }, {\n      key: \"isActive\",\n      get: function get() {\n        return this.sm.currentStep === this.name;\n      }\n    }]);\n  }(), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"sm\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"component\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-steps/components/step-manager\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/utils\", \"@ember/runloop\", \"@ember/debug\", \"@ember/object\", \"ember-steps/-private/state-machine/circular\", \"ember-steps/-private/state-machine/linear\", \"ember-steps/-private/step-node\"], function (_exports, _component, _templateFactory, _component2, _tracking, _utils, _runloop, _debug, _object, _circular, _linear, _stepNode) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield\n    (hash\n      Step=(component \"step-manager/step\"\n        register-step=this.registerStepComponent\n        remove-step=this.removeStepComponent\n        update-step-node=this.updateStepNode\n        currentStep=this.currentStep\n        transitions=this.transitions\n      )\n      hasNextStep=this.hasNextStep\n      hasPreviousStep=this.hasPreviousStep\n      currentStep=this.currentStep\n      steps=this.transitions.nodeArray\n      transition-to=this.transitionTo\n      transition-to-next=this.transitionToNext\n      transition-to-previous=this.transitionToPrevious\n    )\n  }}\n  \n  */\n  {\n    \"id\": \"kAHUJZF1\",\n    \"block\": \"[[[18,1,[[28,[37,1],null,[[\\\"Step\\\",\\\"hasNextStep\\\",\\\"hasPreviousStep\\\",\\\"currentStep\\\",\\\"steps\\\",\\\"transition-to\\\",\\\"transition-to-next\\\",\\\"transition-to-previous\\\"],[[50,\\\"step-manager/step\\\",0,null,[[\\\"register-step\\\",\\\"remove-step\\\",\\\"update-step-node\\\",\\\"currentStep\\\",\\\"transitions\\\"],[[30,0,[\\\"registerStepComponent\\\"]],[30,0,[\\\"removeStepComponent\\\"]],[30,0,[\\\"updateStepNode\\\"]],[30,0,[\\\"currentStep\\\"]],[30,0,[\\\"transitions\\\"]]]]],[30,0,[\\\"hasNextStep\\\"]],[30,0,[\\\"hasPreviousStep\\\"]],[30,0,[\\\"currentStep\\\"]],[30,0,[\\\"transitions\\\",\\\"nodeArray\\\"]],[30,0,[\\\"transitionTo\\\"]],[30,0,[\\\"transitionToNext\\\"]],[30,0,[\\\"transitionToPrevious\\\"]]]]]]],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\",\\\"hash\\\",\\\"component\\\"]]\",\n    \"moduleName\": \"ember-steps/components/step-manager.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n   * ```hbs\n   * <StepManager as |w|>\n   *   <w.Step @name=\"first\">\n   *     <h1>First Step</h1>\n   *   </w.Step>\n   *   <w.Step @name=\"second\">\n   *     <h1>Second Step</h1>\n   *   </w.Step>\n   * </StepManager>\n   * ```\n   *\n   * @class StepManagerComponent\n   * @yield {Hash} w Wizard Properties\n   * @yield {StepComponent} w.Step The component to create steps\n   * @yield {boolean} w.hasNextStep Whether or not the current step has a \"next\" step\n   * @yield {boolean} w.hasPreviousStep Whether or not the current step has a \"previous\" step\n   * @yield {string} w.currentStep Reflects the name of the active step\n   * @yield {Array<StepNode>} w.steps The steps registered to the step manager\n   * @yield {Action} w.transition-to Transition to a step by name\n   * @yield {Action} w.transition-to-next Transition to the \"next\" step\n   * @yield {Action} w.transition-to-previous Transition to the \"previous\" step\n   */\n  var StepManagerComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function StepManagerComponent() {\n      var _this;\n      _classCallCheck(this, StepManagerComponent);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, StepManagerComponent, [].concat(args));\n      /** @type {BaseStateMachine} state machine for transitions */\n      _initializerDefineProperty(_this, \"transitions\", _descriptor, _this);\n      var _this$args = _this.args,\n        initialStep = _this$args.initialStep,\n        currentStep = _this$args.currentStep;\n      _this._watchCurrentStep = (0, _utils.isPresent)(currentStep);\n      var startingStep = (0, _utils.isNone)(initialStep) ? currentStep : initialStep;\n      var StateMachine = _this.linear ? _linear.default : _circular.default;\n      _this.transitions = new StateMachine(startingStep);\n      (0, _runloop.schedule)('afterRender', _this, function () {\n        this._initialRegistrationComplete = true;\n      });\n      return _this;\n    }\n\n    /**\n     * Whether to use a \"Circular\" or \"Linear\" state machine\n     * @type {boolean}\n     * @private\n     */\n    _inherits(StepManagerComponent, _Component);\n    return _createClass(StepManagerComponent, [{\n      key: \"linear\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.args.linear) ? this.args.linear : true;\n      }\n\n      /**\n       * Whether or not the current step has a \"next\" step\n       * @type {boolean}\n       */\n    }, {\n      key: \"hasNextStep\",\n      get: function get() {\n        return !(0, _utils.isNone)(this.transitions.pickNext());\n      }\n\n      /**\n       * Whether or not the current step has a \"previous\" step\n       * @type {boolean}\n       */\n    }, {\n      key: \"hasPreviousStep\",\n      get: function get() {\n        return !(0, _utils.isNone)(this.transitions.pickPrevious());\n      }\n\n      /**\n       * Reflects the name of the active step\n       * @type {string}\n       */\n    }, {\n      key: \"currentStep\",\n      get: function get() {\n        var newStep = typeof this.args.currentStep !== 'undefined' ? this.args.currentStep : this.transitions.firstStepName;\n        var currentStep = this.transitions.currentStep;\n        if (this._watchCurrentStep && this._initialRegistrationComplete && newStep !== currentStep) {\n          (0, _runloop.schedule)('actions', this, function () {\n            this.transitionTo(newStep);\n          });\n        }\n        return this.transitions.currentStep;\n      }\n    }, {\n      key: \"registerStepComponent\",\n      value: function registerStepComponent(stepComponent) {\n        var _this2 = this;\n        stepComponent.transitions = this.transitions;\n        (0, _runloop.schedule)('actions', function () {\n          _this2.transitions.addStep(stepComponent);\n        });\n      }\n    }, {\n      key: \"removeStepComponent\",\n      value: function removeStepComponent(stepComponent) {\n        var _this3 = this;\n        (0, _runloop.schedule)('actions', function () {\n          _this3.transitions.removeStep(stepComponent);\n        });\n      }\n    }, {\n      key: \"updateStepNode\",\n      value: function updateStepNode(stepComponent, field, value) {\n        var name = stepComponent.name;\n        this.transitions.updateStepNode(name, field, value);\n      }\n    }, {\n      key: \"transitionTo\",\n      value: function transitionTo(to) {\n        var destination = to instanceof _stepNode.default ? to.name : to;\n        if (to !== this.transitions.currentStep) {\n          this.transitions.activate(destination);\n          if (this.args.onTransition) {\n            this.args.onTransition(destination);\n          }\n        }\n      }\n    }, {\n      key: \"transitionToNext\",\n      value: function transitionToNext() {\n        var to = this.transitions.pickNext();\n        (true && !(!(0, _utils.isNone)(to)) && (0, _debug.assert)('There is no next step', !(0, _utils.isNone)(to)));\n        this.transitionTo(to);\n      }\n    }, {\n      key: \"transitionToPrevious\",\n      value: function transitionToPrevious() {\n        var to = this.transitions.pickPrevious();\n        (true && !(!(0, _utils.isNone)(to)) && (0, _debug.assert)('There is no previous step', !(0, _utils.isNone)(to)));\n        this.transitionTo(to);\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"transitions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"registerStepComponent\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"registerStepComponent\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeStepComponent\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeStepComponent\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateStepNode\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateStepNode\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"transitionTo\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"transitionTo\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"transitionToNext\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"transitionToNext\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"transitionToPrevious\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"transitionToPrevious\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, StepManagerComponent);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-steps/components/step-manager/step\", [\"exports\", \"@ember/component\", \"@ember/template-factory\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/utils\", \"@ember/debug\", \"@ember/object/internals\"], function (_exports, _component, _templateFactory, _component2, _tracking, _utils, _debug, _internals) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.isActive}}\n    {{yield\n      (hash\n        hasNext=this.hasNext\n        hasPrevious=this.hasPrevious\n      )\n    }}\n  {{else if (has-block \"inverse\")}}\n    {{yield to=\"inverse\"}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"KezsGIfJ\",\n    \"block\": \"[[[41,[30,0,[\\\"isActive\\\"]],[[[1,\\\"  \\\"],[18,1,[[28,[37,2],null,[[\\\"hasNext\\\",\\\"hasPrevious\\\"],[[30,0,[\\\"hasNext\\\"]],[30,0,[\\\"hasPrevious\\\"]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,2]],[[[1,\\\"  \\\"],[18,2,null],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[\\\"&default\\\",\\\"&else\\\"],false,[\\\"if\\\",\\\"yield\\\",\\\"hash\\\",\\\"has-block\\\"]]\",\n    \"moduleName\": \"ember-steps/components/step-manager/step.hbs\",\n    \"isStrictMode\": false\n  });\n  /**\n   * ```hbs\n   * <w.Step @name=\"first\">\n   *   <h1>First Step</h1>\n   * </w.Step>\n   * ```\n   *\n   * @class StepComponent\n   * @yield {Hash} step Step Properties\n   * @yield {boolean} step.hasPrevious Whether this step has a \"previous\" step\n   * @yield {boolean} step.hasNext Whether this step has a \"next\" step\n   */\n  var StepComponent = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function StepComponent() {\n      var _this;\n      _classCallCheck(this, StepComponent);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, StepComponent, [].concat(args));\n      /** Set directly by manager through JS **/\n      _initializerDefineProperty(_this, \"transitions\", _descriptor, _this);\n      _this.args['register-step'](_this);\n      return _this;\n    }\n    _inherits(StepComponent, _Component);\n    return _createClass(StepComponent, [{\n      key: \"willDestroy\",\n      value: function willDestroy() {\n        this.args['remove-step'](this);\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        _superPropGet(StepComponent, \"willDestroy\", this, 3)(args);\n      }\n\n      /**\n       * @type {string|number|Symbol}\n       * @private\n       */\n    }, {\n      key: \"name\",\n      get: function get() {\n        var initialName = !(0, _utils.isNone)(this.args.name) ? this.args.name : (0, _internals.guidFor)(this);\n        if (this._hasSetName) {\n          (true && !(this._initialName === initialName) && (0, _debug.assert)('The `name` property should never change', this._initialName === initialName));\n        }\n        this._hasSetName = true;\n        this._initialName = initialName;\n        return initialName;\n      }\n\n      /**\n       * Whether this state is currently the active one\n       * @property {boolean} isActive\n       * @private\n       */\n    }, {\n      key: \"isActive\",\n      get: function get() {\n        return this.args.currentStep === this.name;\n      }\n    }, {\n      key: \"hasNext\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.transitions.pickNext(this.name));\n      }\n    }, {\n      key: \"hasPrevious\",\n      get: function get() {\n        return (0, _utils.isPresent)(this.transitions.pickPrevious(this.name));\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"transitions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, StepComponent);\n});","define(\"ember-steps/helpers/validate-transition\", [\"exports\", \"@ember/component/helper\", \"rsvp\"], function (_exports, _helper, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.validateTransition = validateTransition;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /** @hide */\n  function validateTransition(_ref, _ref2) {\n    var _ref3 = _slicedToArray(_ref, 1),\n      transition = _ref3[0];\n    var validator = _ref2.with;\n    return function () {\n      return new _rsvp.Promise(function (resolve) {\n        validator(resolve);\n      }).then(function () {\n        transition();\n      });\n    };\n  }\n  var _default = _exports.default = (0, _helper.helper)(validateTransition);\n});","define(\"ember-svg-jar/helpers/svg-jar\", [\"exports\", \"@ember/component/helper\", \"ember-svg-jar/utils/make-svg\", \"@embroider/macros/es-compat2\"], function (_exports, _helper, _makeSvg, _esCompat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.svgJar = svgJar;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function getInlineAsset(assetId) {\n    var result = null;\n    try {\n      result = require(\"ember-svg-jar/inlined/\".concat(assetId)).default;\n    } catch (err) {\n      // skip\n    }\n    try {\n      result = (0, _esCompat.default)(require(\"../inlined/\".concat(assetId))).default;\n    } catch (err) {\n      // skip\n    }\n    return result;\n  }\n  function svgJar(assetId, svgAttrs) {\n    return (0, _makeSvg.default)(assetId, svgAttrs, getInlineAsset);\n  }\n  var _default = _exports.default = (0, _helper.helper)(function svgJarHelper(_ref, svgAttrs) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      assetId = _ref2[0];\n    return svgJar(assetId, svgAttrs);\n  });\n});","define(\"ember-svg-jar/inlined/activity\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 12h-4l-3 9L9 3l-3 9H2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-activity\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/airplay\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 17H4a2 2 0 01-2-2V5a2 2 0 012-2h16a2 2 0 012 2v10a2 2 0 01-2 2h-1\\\"/><path d=\\\"M12 15l5 6H7l5-6z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-airplay\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/alert-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M12 8v4M12 16h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-alert-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/alert-octagon\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7.86 2h8.28L22 7.86v8.28L16.14 22H7.86L2 16.14V7.86L7.86 2zM12 8v4M12 16h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-alert-octagon\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/alert-triangle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0zM12 9v4M12 17h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-alert-triangle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/align-center\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 10H6M21 6H3M21 14H3M18 18H6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-align-center\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/align-justify\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 10H3M21 6H3M21 14H3M21 18H3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-align-justify\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/align-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 10H3M21 6H3M21 14H3M17 18H3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-align-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/align-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 10H7M21 6H3M21 14H3M21 18H7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-align-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/anchor\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"3\\\"/><path d=\\\"M12 22V8M5 12H2a10 10 0 0020 0h-3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-anchor\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/aperture\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M14.31 8l5.74 9.94M9.69 8h11.48M7.38 12l5.74-9.94M9.69 16L3.95 6.06M14.31 16H2.83M16.62 12l-5.74 9.94\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-aperture\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/app-list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M2.25 0A2.25 2.25 0 000 2.25v2.5A2.25 2.25 0 002.25 7h2.5A2.25 2.25 0 007 4.75v-2.5A2.25 2.25 0 004.75 0h-2.5zM1.5 2.25a.75.75 0 01.75-.75h2.5a.75.75 0 01.75.75v2.5a.75.75 0 01-.75.75h-2.5a.75.75 0 01-.75-.75v-2.5zM9.25 1a.75.75 0 000 1.5h10a.75.75 0 100-1.5h-10zm0 3a.75.75 0 000 1.5h7a.75.75 0 100-1.5h-7zm-7 5A2.25 2.25 0 000 11.25v2.5A2.25 2.25 0 002.25 16h2.5A2.25 2.25 0 007 13.75v-2.5A2.25 2.25 0 004.75 9h-2.5zm-.75 2.25a.75.75 0 01.75-.75h2.5a.75.75 0 01.75.75v2.5a.75.75 0 01-.75.75h-2.5a.75.75 0 01-.75-.75v-2.5zM9.25 10a.75.75 0 100 1.5h10a.75.75 0 100-1.5h-10zm0 3a.75.75 0 100 1.5h7a.75.75 0 100-1.5h-7z\\\" fill=\\\"#4482E1\\\"/>\",\n    \"attrs\": {\n      \"width\": \"20\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 20 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/archive\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 8v13H3V8M1 3h22v5H1zM10 12h4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-archive\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-down-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M8 12l4 4 4-4M12 8v8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-down-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-down-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 7L7 17M17 17H7V7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-down-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-down-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7 7l10 10M17 7v10H7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-down-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 5v14M19 12l-7 7-7-7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-left-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M12 8l-4 4 4 4M16 12H8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-left-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 12H5M12 19l-7-7 7-7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-right-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M12 16l4-4-4-4M8 12h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-right-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 12h14M12 5l7 7-7 7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-top\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 11l3-3m0 0l3 3m-3-3v8m0-13a9 9 0 110 18.001A9 9 0 0112 3z\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"2.016\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-up-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M16 12l-4-4-4 4M12 16V8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-up-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-up-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 17L7 7M7 17V7h10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-up-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-up-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7 17L17 7M7 7h10v10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-up-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/arrow-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 19V5M5 12l7-7 7 7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-arrow-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/at-sign\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"/><path d=\\\"M16 8v5a3 3 0 006 0v-1a10 10 0 10-3.92 7.94\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-at-sign\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/award\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path d=\\\"M8.21 13.89L7 23l5-3 5 3-1.21-9.12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-award\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bar-chart-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 20V10M12 20V4M6 20v-6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bar-chart-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bar-chart\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 20V10M18 20V4M6 20v-4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bar-chart\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/battery-charging\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 18H3a2 2 0 01-2-2V8a2 2 0 012-2h3.19M15 6h2a2 2 0 012 2v8a2 2 0 01-2 2h-3.19M23 13v-2M11 6l-4 6h6l-4 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-battery-charging\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/battery\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"1\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M23 13v-2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-battery\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bell-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M13.73 21a2 2 0 01-3.46 0M18.63 13A17.89 17.89 0 0118 8M6.26 6.26A5.86 5.86 0 006 8c0 7-3 9-3 9h14M18 8a6 6 0 00-9.33-5M1 1l22 22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bell-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bell\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 01-3.46 0\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bell\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bluetooth\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6.5 6.5l11 11L12 23V1l5.5 5.5-11 11\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bluetooth\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bold\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 4h8a4 4 0 014 4 4 4 0 01-4 4H6zM6 12h9a4 4 0 014 4 4 4 0 01-4 4H6z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bold\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/book-open\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M2 3h6a4 4 0 014 4v14a3 3 0 00-3-3H2zM22 3h-6a4 4 0 00-4 4v14a3 3 0 013-3h7z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-book-open\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/book\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 19.5A2.5 2.5 0 016.5 17H20\\\"/><path d=\\\"M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-book\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/bookmark\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 21l-7-5-7 5V5a2 2 0 012-2h10a2 2 0 012 2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-bookmark\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/box\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z\\\"/><path d=\\\"M3.27 6.96L12 12.01l8.73-5.05M12 22.08V12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-box\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/briefcase\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M16 21V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v16\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-briefcase\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/calendar-16px\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 2.167a.5.5 0 01.5.5v1.116h.833a1.5 1.5 0 011.5 1.5v7.05a1.5 1.5 0 01-1.5 1.5H3.667a1.5 1.5 0 01-1.5-1.5v-7.05a1.5 1.5 0 011.5-1.5h.88V2.667a.5.5 0 011 0v1.116H10.5V2.667a.5.5 0 01.5-.5zm-.5 2.616H5.548v.646a.5.5 0 11-1 0v-.646h-.881a.5.5 0 00-.5.5v1.943h9.666V5.283a.5.5 0 00-.5-.5H11.5v.646a.5.5 0 01-1 0v-.646zm2.333 3.443H3.167v4.107a.5.5 0 00.5.5h8.666a.5.5 0 00.5-.5V8.226z\\\" fill=\\\"#A0A0A0\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/calendar-plus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 19h6M16 2v4M19 16v6M21 12.598V6a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h8.5M3 10h18M8 2v4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"lucide lucide-calendar-plus-icon lucide-calendar-plus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/calendar\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M13.33 7.727V5.284a1 1 0 00-1-1h-1.333m2.334 3.443v4.608a1 1 0 01-1 1H3.664a1 1 0 01-1-1V7.727m10.667 0H2.664m0 0V5.284a1 1 0 011-1h1.381m0 0V2.668m0 1.616h5.952m-5.952 0V5.43m5.952-1.146V2.668m0 1.616V5.43\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/camera-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 1l22 22M21 21H3a2 2 0 01-2-2V8a2 2 0 012-2h3m3-3h6l2 3h4a2 2 0 012 2v9.34m-7.72-2.06a4 4 0 11-5.56-5.56\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-camera-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/camera\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 19a2 2 0 01-2 2H3a2 2 0 01-2-2V8a2 2 0 012-2h4l2-3h6l2 3h4a2 2 0 012 2z\\\"/><circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-camera\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cancel\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 0C4.05 0 0 4.05 0 9s4.05 9 9 9 9-4.05 9-9-4.05-9-9-9zm0 2c1.55 0 3 .55 4.2 1.4l-9.8 9.8C2.55 12 2 10.55 2 9c0-3.85 3.15-7 7-7zm0 14c-1.55 0-3-.55-4.2-1.4l9.8-9.8C15.45 6 16 7.45 16 9c0 3.85-3.15 7-7 7z\\\" fill=\\\"#F90A0A\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cargo-ship\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<g fill=\\\"#b0b6bb\\\"><path d=\\\"M164.791 216.903c-19.144 0-34.712-15.568-34.712-34.712 0-4.79 3.879-8.678 8.678-8.678s8.678 3.888 8.678 8.678c0 9.572 7.784 17.356 17.356 17.356 9.572 0 17.356-7.784 17.356-17.356 0-9.572-7.784-17.356-17.356-17.356-4.799 0-8.678-3.888-8.678-8.678s3.879-8.678 8.678-8.678c19.144 0 34.712 15.568 34.712 34.712s-15.568 34.712-34.712 34.712\\\"/><path d=\\\"M164.791 164.835a8.676 8.676 0 01-8.678-8.678V104.09a8.676 8.676 0 018.678-8.678 8.676 8.676 0 018.678 8.678v52.068a8.675 8.675 0 01-8.678 8.677\\\"/></g><path fill=\\\"#434c6d\\\" d=\\\"M494.55 295.005H373.058v-86.78h86.78z\\\"/><g fill=\\\"#6d7ca0\\\"><path d=\\\"M390.414 208.225h52.068v-43.39h-52.068zM470.251 234.259h-36.447v34.712h50.332zM406.462 451.208H55.117c-6.526 0-11.819-5.294-11.819-11.819v-22.892L1.392 318.713c-4.808-11.221 3.428-23.708 15.638-23.708h477.522c4.79 0 8.678 3.888 8.678 8.678v65.562a8.675 8.675 0 01-2.872 6.448l-76.479 68.834a26.031 26.031 0 01-17.417 6.681\\\"/></g><g fill=\\\"#434c6d\\\"><path d=\\\"M43.3 416.496v22.892c0 6.526 5.294 11.819 11.819 11.819h351.345c6.43 0 12.635-2.378 17.417-6.682l31.137-28.03H43.3zM277.605 355.751c0-14.379-11.655-26.034-26.034-26.034s-26.034 11.654-26.034 26.034c0 14.379 11.655 26.034 26.034 26.034s26.034-11.655 26.034-26.034M425.13 355.751c0-14.379-11.655-26.034-26.034-26.034s-26.034 11.654-26.034 26.034c0 14.379 11.655 26.034 26.034 26.034s26.034-11.655 26.034-26.034M130.079 355.751c0-14.379-11.655-26.034-26.034-26.034s-26.034 11.654-26.034 26.034c0 14.379 11.655 26.034 26.034 26.034s26.034-11.655 26.034-26.034M347.029 295.005H242.893l17.425-92.143c2.82-16.939 17.477-29.349 34.642-29.349 17.165 0 31.822 12.409 34.642 29.349l17.427 92.143zM190.823 78.056c0-14.379-11.655-26.034-26.034-26.034s-26.034 11.655-26.034 26.034 11.654 26.034 26.034 26.034 26.034-11.655 26.034-26.034\\\"/></g><path d=\\\"M259.081 209.396l1.232-6.534c2.829-16.939 17.477-29.349 34.651-29.349 3.22 0 6.3.564 9.285 1.388L190.82 78.046v.009c0 13.191-9.841 23.969-22.563 25.687l90.824 105.654z\\\" fill=\\\"#6d7ca0\\\"/><path fill=\\\"#ee8472\\\" d=\\\"M25.948 295.005h104.136v-69.424H25.948z\\\"/><g fill=\\\"#db776a\\\"><path d=\\\"M95.368 260.293c4.79 0 8.678-3.888 8.678-8.678v-26.034H86.69v26.034a8.68 8.68 0 008.678 8.678M60.656 260.293c4.79 0 8.678-3.888 8.678-8.678v-26.034H51.978v26.034a8.68 8.68 0 008.678 8.678\\\"/></g>\",\n    \"attrs\": {\n      \"height\": \"800\",\n      \"width\": \"800\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"viewBox\": \"0 0 503.23 503.23\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cast\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M2 16.1A5 5 0 015.9 20M2 12.05A9 9 0 019.95 20M2 8V6a2 2 0 012-2h16a2 2 0 012 2v12a2 2 0 01-2 2h-6M2 20h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cast\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/check-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 11.08V12a10 10 0 11-5.93-9.14\\\"/><path d=\\\"M22 4L12 14.01l-3-3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-check-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/check-square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 11l3 3L22 4\\\"/><path d=\\\"M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-check-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/check\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20 6L9 17l-5-5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-check\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevron-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 9l6 6 6-6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-chevron-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevron-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12.5 5l-5 5.105 5 4.895\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"20\",\n      \"height\": \"20\",\n      \"viewBox\": \"0 0 20 20\",\n      \"fill\": \"none\",\n      \"class\": \"w-4 h-4\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevron-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7.5 5l5 5.105L7.5 15\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"20\",\n      \"height\": \"20\",\n      \"viewBox\": \"0 0 20 20\",\n      \"fill\": \"none\",\n      \"class\": \"w-4 h-4\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevron-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 15l-6-6-6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-chevron-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevrons-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7 13l5 5 5-5M7 6l5 5 5-5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-chevrons-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevrons-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M11 17l-5-5 5-5M18 17l-5-5 5-5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"lucide w-4 h-4 lucide-chevrons-left-icon lucide-chevrons-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevrons-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 17l5-5-5-5M13 17l5-5-5-5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"class\": \"lucide w-4 h-4 lucide-chevrons-right-icon lucide-chevrons-right\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chevrons-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 11l-5-5-5 5M17 18l-5-5-5 5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-chevrons-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/chrome\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"/><path d=\\\"M21.17 8H12M3.95 6.06L8.54 14M10.88 21.94L15.46 14\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-chrome\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/clipboard\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2\\\"/><rect x=\\\"8\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-clipboard\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/clock\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M12 6v6l4 2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-clock\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/clone\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 13H3a2 2 0 01-2-2V3a2 2 0 012-2h8a2 2 0 012 2v2M7 17h8a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v8a2 2 0 002 2z\\\" stroke=\\\"#4482E1\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/close\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.293 5.293a1 1 0 011.414 0L12 10.586l5.293-5.293a1 1 0 111.414 1.414L13.414 12l5.293 5.293a1 1 0 01-1.414 1.414L12 13.414l-5.293 5.293a1 1 0 01-1.414-1.414L10.586 12 5.293 6.707a1 1 0 010-1.414z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cloud-drizzle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8 19v2M8 13v2M16 19v2M16 13v2M12 21v2M12 15v2M20 16.58A5 5 0 0018 7h-1.26A8 8 0 104 15.25\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cloud-drizzle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cloud-lightning\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 16.9A5 5 0 0018 7h-1.26a8 8 0 10-11.62 9\\\"/><path d=\\\"M13 11l-4 6h6l-4 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cloud-lightning\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cloud-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22.61 16.95A5 5 0 0018 10h-1.26a8 8 0 00-7.05-6M5 5a8 8 0 004 15h9a5 5 0 001.7-.3M1 1l22 22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cloud-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cloud-rain\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 13v8M8 13v8M12 15v8M20 16.58A5 5 0 0018 7h-1.26A8 8 0 104 15.25\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cloud-rain\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cloud-snow\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20 17.58A5 5 0 0018 8h-1.26A8 8 0 104 16.25M8 16h.01M8 20h.01M12 18h.01M12 22h.01M16 16h.01M16 20h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cloud-snow\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cloud\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 10h-1.26A8 8 0 109 20h9a5 5 0 000-10z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cloud\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/code\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 18l6-6-6-6M8 6l-6 6 6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-code\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/codepen\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 2l10 6.5v7L12 22 2 15.5v-7L12 2zM12 22v-6.5\\\"/><path d=\\\"M22 8.5l-10 7-10-7\\\"/><path d=\\\"M2 15.5l10-7 10 7M12 2v6.5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-codepen\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/codesandbox\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z\\\"/><path d=\\\"M7.5 4.21l4.5 2.6 4.5-2.6M7.5 19.79V14.6L3 12M21 12l-4.5 2.6v5.19M3.27 6.96L12 12.01l8.73-5.05M12 22.08V12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-codesandbox\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/coffee\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 8h1a4 4 0 010 8h-1M2 8h16v9a4 4 0 01-4 4H6a4 4 0 01-4-4V8zM6 1v3M10 1v3M14 1v3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-coffee\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/columns\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 3h7a2 2 0 012 2v14a2 2 0 01-2 2h-7m0-18H5a2 2 0 00-2 2v14a2 2 0 002 2h7m0-18v18\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-columns\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/command\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 3a3 3 0 00-3 3v12a3 3 0 003 3 3 3 0 003-3 3 3 0 00-3-3H6a3 3 0 00-3 3 3 3 0 003 3 3 3 0 003-3V6a3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3h12a3 3 0 003-3 3 3 0 00-3-3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-command\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/compass\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M16.24 7.76l-2.12 6.36-6.36 2.12 2.12-6.36 6.36-2.12z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-compass\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/copy\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"13\\\" height=\\\"13\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-copy\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-down-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 10l-5 5 5 5\\\"/><path d=\\\"M20 4v7a4 4 0 01-4 4H4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-down-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-down-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15 10l5 5-5 5\\\"/><path d=\\\"M4 4v7a4 4 0 004 4h12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-down-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-left-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 15l-5 5-5-5\\\"/><path d=\\\"M20 4h-7a4 4 0 00-4 4v12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-left-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-left-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 9L9 4 4 9\\\"/><path d=\\\"M20 20h-7a4 4 0 01-4-4V4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-left-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-right-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10 15l5 5 5-5\\\"/><path d=\\\"M4 4h7a4 4 0 014 4v12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-right-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-right-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10 9l5-5 5 5\\\"/><path d=\\\"M4 20h7a4 4 0 004-4V4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-right-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-up-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 14L4 9l5-5\\\"/><path d=\\\"M20 20v-7a4 4 0 00-4-4H4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-up-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/corner-up-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15 14l5-5-5-5\\\"/><path d=\\\"M4 20v-7a4 4 0 014-4h12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-corner-up-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/cpu\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"4\\\" y=\\\"4\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M9 9h6v6H9zM9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-cpu\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/crane-port\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<g fill=\\\"#e6e7e8\\\"><path d=\\\"M364.475 121.492c-4.79 0-8.678-3.888-8.678-8.678v-43.39c0-4.79 3.888-8.678 8.678-8.678 4.79 0 8.678 3.888 8.678 8.678v43.39c0 4.79-3.888 8.678-8.678 8.678\\\"/><path d=\\\"M321.089 156.203a8.644 8.644 0 01-6.777-3.254c-2.994-3.749-2.395-9.207 1.354-12.201l43.39-34.712c3.732-2.985 9.207-2.386 12.193 1.354 2.994 3.749 2.395 9.207-1.354 12.201l-43.39 34.712a8.66 8.66 0 01-5.416 1.9\\\"/><path d=\\\"M407.86 156.203c-1.9 0-3.818-.625-5.415-1.9l-43.39-34.712c-3.749-2.994-4.348-8.452-1.354-12.201 2.994-3.749 8.461-4.339 12.193-1.354l43.39 34.712c3.749 2.994 4.348 8.452 1.354 12.201a8.644 8.644 0 01-6.778 3.254M295.051 503.322h147.525l55.079-89.262c11.03-15.933 5.389-37.94-11.941-46.609l-96.62-50.888c-10.006-4.799-28.004-6.283-41.932 0l-94.755 51.356c-17.877 8.34-23.943 30.763-12.713 46.983l55.357 88.42z\\\"/></g><path d=\\\"M270.071 358.346l77.095-41.784c13.919-6.283 31.926-4.799 41.932 0l77.798 40.986 10.388-88.533H260.335l9.659 89.331h.077z\\\" fill=\\\"#b0b6bb\\\"/><path fill=\\\"#6d7ca0\\\" d=\\\"M43.394 503.322h138.848V364.475H43.394z\\\"/><path fill=\\\"#434c6d\\\" d=\\\"M182.237 364.475H43.39l26.034-69.424h86.779z\\\"/><path fill=\\\"#8697cb\\\" d=\\\"M104.136 251.661h-86.78L0 225.627v-52.068h104.136z\\\"/><path d=\\\"M399.186 34.712C399.186 15.542 383.644 0 364.475 0s-34.712 15.542-34.712 34.712 15.542 34.712 34.712 34.712 34.711-15.543 34.711-34.712\\\" fill=\\\"#6d7ca0\\\"/><path d=\\\"M390.508 412.587c-13.451-6.456-28.334-6.135-41.932 0l-84.072 41.949 30.546 48.788h147.525l30.477-49.395-82.544-41.342z\\\" fill=\\\"#b0b6bb\\\"/><path fill=\\\"#e6e7e8\\\" d=\\\"M242.987 269.017H485.97v-52.068H242.987z\\\"/><path fill=\\\"#6d7ca0\\\" d=\\\"M104.136 225.627v26.034H69.424v43.39h86.779v-69.424z\\\"/><g fill=\\\"#434c6d\\\"><path d=\\\"M329.763 34.712L104.136 173.559v52.068h52.068L364.475 69.424c-19.17 0-34.712-15.543-34.712-34.712M373.153 34.712c0-4.79-3.888-8.678-8.678-8.678-4.79 0-8.678 3.888-8.678 8.678s3.888 8.678 8.678 8.678c4.79 0 8.678-3.888 8.678-8.678\\\"/></g><path fill=\\\"#ee8472\\\" d=\\\"M312.411 216.949h104.136v-69.424H312.411z\\\"/><g fill=\\\"#db776a\\\"><path d=\\\"M338.441 199.593c-4.79 0-8.678-3.888-8.678-8.678v-17.356c0-4.79 3.888-8.678 8.678-8.678 4.79 0 8.678 3.888 8.678 8.678v17.356c0 4.79-3.888 8.678-8.678 8.678M364.475 199.593c-4.79 0-8.678-3.888-8.678-8.678v-17.356c0-4.79 3.888-8.678 8.678-8.678 4.79 0 8.678 3.888 8.678 8.678v17.356c0 4.79-3.888 8.678-8.678 8.678M390.508 199.593c-4.79 0-8.678-3.888-8.678-8.678v-17.356c0-4.79 3.888-8.678 8.678-8.678 4.79 0 8.678 3.888 8.678 8.678v17.356a8.68 8.68 0 01-8.678 8.678\\\"/></g><g fill=\\\"#434c6d\\\"><path d=\\\"M95.458 477.288c4.79 0 8.678-3.888 8.678-8.678s-3.888-8.678-8.678-8.678H43.39v17.356h52.068zM78.102 442.576c4.79 0 8.678-3.888 8.678-8.678s-3.888-8.678-8.678-8.678H43.39v17.356h34.712z\\\"/></g>\",\n    \"attrs\": {\n      \"height\": \"800\",\n      \"width\": \"800\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"viewBox\": \"0 0 503.324 503.324\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/credit-card\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"1\\\" y=\\\"4\\\" width=\\\"22\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M1 10h22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-credit-card\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/crop\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6.13 1L6 16a2 2 0 002 2h15\\\"/><path d=\\\"M1 6.13L16 6a2 2 0 012 2v15\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-crop\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/crosshair\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M22 12h-4M6 12H2M12 6V2M12 22v-4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-crosshair\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-agents\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2 16a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2H2zM14.833 5H16a1 1 0 011 1v8a1 1 0 01-1 1h-1.167V5zm-1 0v10H4.167V5h9.666zM3.167 5H2a1 1 0 00-1 1v8a1 1 0 001 1h1.167V5zM7 2.5a.5.5 0 00-.5.5v1h-1V3A1.5 1.5 0 017 1.5h4A1.5 1.5 0 0112.5 3v1h-1V3a.5.5 0 00-.5-.5H7z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-brokers\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13 4a4 4 0 11-8 0 4 4 0 018 0zM9 7a3 3 0 100-6 3 3 0 000 6z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.444 12.72v2.058A3.222 3.222 0 0113.222 18h-8A3.222 3.222 0 012 14.778V12.72a5.609 5.609 0 015.609-5.609h3.226a5.609 5.609 0 015.61 5.61zm-1 0v2.058A2.222 2.222 0 0113.222 17h-8A2.222 2.222 0 013 14.778V12.72a4.609 4.609 0 014.609-4.609h3.226a4.609 4.609 0 014.61 4.61z\\\" fill=\\\"#505152\\\"/><path d=\\\"M8.156 8.644v-.533h2.133v.533a1.067 1.067 0 01-2.133 0z\\\" fill=\\\"#505152\\\"/><path d=\\\"M7.688 13.359l1.068-4.274c.122-.485.81-.485.932 0l1.068 4.274a.48.48 0 01-.126.455l-1.068 1.069a.48.48 0 01-.68 0l-1.068-1.069a.48.48 0 01-.126-.455z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-cargo-grades\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10.661 1.984C10.153 1.404 9.695.89 9.339.46c-.017-.033-.05-.05-.068-.066a.44.44 0 00-.61.066c-.356.43-.814.944-1.322 1.524C5.102 4.518 2 8.029 2 10.96c0 1.888.78 3.594 2.05 4.836A7.123 7.123 0 009 17.8a7.05 7.05 0 004.95-2.004A6.732 6.732 0 0016 10.96c0-2.931-3.102-6.442-5.339-8.976zm2.678 13.2A6.183 6.183 0 019 16.954 6.24 6.24 0 014.661 15.2a5.928 5.928 0 01-1.797-4.24c0-2.617 2.983-5.995 5.136-8.43.356-.414.695-.795 1-1.159.305.364.644.745 1 1.143 2.152 2.434 5.136 5.796 5.136 8.43 0 1.656-.695 3.146-1.797 4.24z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.271.394a.2.2 0 00.02.015.153.153 0 01.048.051c.283.342.63.737 1.016 1.176l.306.348.004.005C12.902 4.522 16 8.03 16 10.96c0 1.888-.78 3.594-2.05 4.836A7.05 7.05 0 019 17.8a7.123 7.123 0 01-4.95-2.004A6.731 6.731 0 012 10.96C2 8.03 5.098 4.522 7.335 1.99l.004-.005.306-.348C8.03 1.197 8.378.802 8.66.46a.44.44 0 01.61-.066zM7.19 1.852l-.008.009C6.066 3.124 4.726 4.64 3.665 6.21 2.605 7.779 1.8 9.431 1.8 10.96c0 1.944.803 3.7 2.111 4.978l.001.001A7.323 7.323 0 009 18a7.251 7.251 0 005.089-2.06 6.932 6.932 0 002.111-4.98c0-1.528-.805-3.181-1.865-4.75s-2.4-3.086-3.516-4.35l-.008-.008-.307-.35c-.381-.433-.722-.82-1-1.157a.333.333 0 00-.097-.098L9.404.244 9.396.238a.64.64 0 00-.888.094h-.001c-.28.34-.625.732-1.011 1.17l-.307.35zM8 2.53c-2.152 2.435-5.136 5.813-5.136 8.43 0 1.656.695 3.163 1.797 4.24a6.24 6.24 0 004.34 1.755c1.694 0 3.22-.679 4.338-1.772 1.102-1.093 1.797-2.583 1.797-4.24 0-2.62-2.957-5.965-5.107-8.397L10 2.514A54.053 54.053 0 019 1.37a25.36 25.36 0 01-.13.155c-.152.177-.31.36-.474.547L8 2.53zm1-.85c-.146.172-.298.347-.455.527l-.393.454-.002.002C7.072 3.882 5.797 5.326 4.79 6.79c-1.012 1.472-1.726 2.927-1.726 4.17 0 1.6.671 3.055 1.736 4.096a6.04 6.04 0 004.2 1.7c1.64 0 3.116-.657 4.199-1.715 1.066-1.059 1.737-2.5 1.737-4.097 0-1.252-.714-2.707-1.726-4.176-.999-1.451-2.262-2.88-3.334-4.093l-.025-.028A55.32 55.32 0 019 1.68z\\\" fill=\\\"#505152\\\"/><path d=\\\"M9.075 14.161c-.97 0-1.848-.42-2.474-1.09a3.88 3.88 0 01-1.018-2.652c0-.234-.172-.419-.391-.419-.22 0-.392.185-.392.42 0 1.275.486 2.416 1.253 3.255A4.144 4.144 0 009.075 15c.22 0 .392-.185.392-.42 0-.234-.173-.419-.392-.419z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.905 13.81A5.006 5.006 0 014.6 10.42c0-.333.25-.62.592-.62.342 0 .591.287.591.62 0 .99.373 1.88.964 2.514a3.177 3.177 0 002.328 1.027c.343 0 .592.287.592.62 0 .332-.25.619-.592.619a4.344 4.344 0 01-3.168-1.389l-.002-.002zm.148-.136A4.806 4.806 0 014.8 10.42c0-.234.172-.419.392-.419.219 0 .391.185.391.42 0 1.04.392 1.98 1.018 2.65a3.377 3.377 0 002.474 1.091c.22 0 .392.185.392.42S9.294 15 9.075 15c-1.19 0-2.27-.52-3.022-1.325z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-charterer\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.224 12.053a.5.5 0 01.223.67l-2.5 5a.5.5 0 01-.917-.051l-1.037-2.835-3.332 1.136a.5.5 0 01-.56-.775l3.795-5a.5.5 0 11.797.604L1.888 14.5l2.245-.766a.5.5 0 01.631.301l.807 2.205 1.982-3.963a.5.5 0 01.67-.223zM10.293 11.545a.5.5 0 00-.248.662l2.5 5.5a.5.5 0 00.93-.049l.867-2.604 3.087.441a.5.5 0 00.48-.782l-3.5-5a.5.5 0 10-.819.574l2.839 4.055-2.772-.396-.729 2.188-1.973-4.34a.5.5 0 00-.662-.25zM9 4.357a2.143 2.143 0 100 4.286 2.143 2.143 0 000-4.286zM6 6.5a3 3 0 116 0 3 3 0 01-6 0z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.445 1.254a.607.607 0 00-.877.005c-.234.255-.499.527-.753.756-.24.216-.521.441-.783.546-.224.09-.5.13-.758.148-.268.02-.56.02-.841.011-.39-.012-.747.368-.7.795.025.22.04.449.034.66a1.758 1.758 0 01-.121.637c-.1.23-.296.467-.484.67-.2.215-.44.44-.676.65-.285.254-.271.762.059 1.016.397.305.862.708 1.082 1.113.138.253.169.571.172.836.004.283-.025.594-.065.885-.056.405.274.764.64.752.3-.009.614-.011.89.002.258.012.544.04.754.117.25.092.546.291.807.485.275.205.563.445.811.66a.581.581 0 00.747.008c.46-.385 1.104-.89 1.585-1.13.241-.121.556-.167.835-.187.297-.022.627-.019.942-.005.4.017.739-.37.668-.767-.05-.28-.093-.57-.109-.832-.014-.238-.014-.53.075-.763.092-.241.297-.465.474-.636.194-.188.43-.38.66-.556a.646.646 0 00.049-.973 10.5 10.5 0 01-.667-.652c-.194-.21-.386-.445-.497-.67a1.453 1.453 0 01-.126-.635 3.8 3.8 0 01.06-.634c.079-.461-.289-.87-.675-.859-.302.009-.612.01-.888-.008-.26-.016-.546-.05-.764-.138-.261-.105-.546-.33-.79-.547-.26-.23-.53-.505-.77-.76zM7.833.581a1.607 1.607 0 012.34-.012c.23.245.479.495.706.697.244.216.414.333.498.367.058.023.205.052.454.068.234.014.511.015.797.007 1.097-.032 1.86 1.024 1.69 2.025a2.84 2.84 0 00-.046.464c0 .063.005.112.011.148.006.033.012.047.012.047.044.09.154.24.335.436.173.188.385.39.602.587.754.682.687 1.902-.112 2.51a6.71 6.71 0 00-.572.48c-.078.075-.137.14-.18.194-.039.049-.052.075-.055.079a.48.48 0 00-.013.093 1.97 1.97 0 00.002.253c.013.206.048.455.095.716.184 1.025-.653 1.988-1.696 1.943a7.382 7.382 0 00-.825.003c-.26.02-.406.057-.461.084-.362.18-.92.611-1.392 1.004a1.581 1.581 0 01-2.042-.02c-.239-.207-.507-.43-.754-.614-.261-.195-.453-.312-.553-.348-.052-.02-.2-.045-.458-.057a10.72 10.72 0 00-.812-.001c-1.027.031-1.796-.914-1.66-1.89.036-.265.058-.52.055-.734-.003-.232-.035-.342-.05-.371-.108-.198-.41-.489-.814-.798-.8-.615-.893-1.863-.114-2.556.224-.2.438-.402.609-.585.182-.196.273-.327.299-.387a.845.845 0 00.038-.268 3.791 3.791 0 00-.027-.52c-.111-.992.688-1.938 1.725-1.904.261.008.516.007.736-.009.23-.017.38-.048.46-.08.08-.032.247-.146.484-.36.223-.2.464-.447.688-.69z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-charterparty\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8 12.5a.5.5 0 01.5.5v4.138l3-1.714 3 1.714V13a.5.5 0 011 0v4.138a1 1 0 01-1.496.869L11.5 16.576l-2.504 1.43a1 1 0 01-1.496-.868V13a.5.5 0 01.5-.5z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M.5 16.5H8v-1H1.5V1h11v3.281h1V0H.5v16.5z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.5 6.5a2 2 0 100 4 2 2 0 000-4zm-3 2a3 3 0 116 0 3 3 0 01-6 0z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.897 4.058a.605.605 0 00-.794 0c-.18.158-.376.324-.563.467-.179.136-.38.274-.564.353-.189.082-.434.141-.667.186-.242.047-.505.085-.75.115a.612.612 0 00-.528.582 8.503 8.503 0 01-.051.695 2.617 2.617 0 01-.143.634 3.21 3.21 0 01-.378.63c-.154.211-.332.431-.497.627a.571.571 0 00-.025.712c.36.469.841 1.12 1.044 1.522.089.176.14.384.172.573.033.196.053.408.065.61.02.353.315.628.64.627.22 0 .447.004.65.02.189.016.409.044.582.112.323.128.8.44 1.138.67.183.126.415.131.59.024.472-.287 1.131-.684 1.508-.887.173-.093.381-.146.567-.18.194-.034.404-.055.605-.068.36-.022.636-.327.626-.654a9.009 9.009 0 01.003-.706c.011-.207.034-.443.1-.626a2.26 2.26 0 01.318-.55c.13-.174.283-.355.43-.52a.6.6 0 00.033-.766c-.328-.414-.75-.974-.921-1.346a1.56 1.56 0 01-.121-.51 3.642 3.642 0 01-.004-.508c.022-.387-.245-.7-.554-.737a12.71 12.71 0 01-.752-.111 3.16 3.16 0 01-.632-.17 2.924 2.924 0 01-.564-.353 10.153 10.153 0 01-.563-.467zm-1.457-.75a1.605 1.605 0 012.12 0c.17.15.346.3.505.42.169.129.29.204.355.232.06.026.199.064.417.104.207.038.449.073.691.102.907.11 1.479.95 1.433 1.785-.008.14-.008.264 0 .367.01.11.027.164.035.18.11.24.45.704.796 1.14a1.6 1.6 0 01-.071 2.054 6.72 6.72 0 00-.372.45 1.413 1.413 0 00-.18.288 1.552 1.552 0 00-.043.343c-.01.184-.009.402-.002.626.027.9-.7 1.629-1.565 1.682a4.337 4.337 0 00-.489.054c-.15.027-.235.057-.27.076-.349.187-.985.57-1.46.86a1.546 1.546 0 01-1.677-.052c-.357-.245-.74-.487-.94-.566H9.72l-.004-.002a2.391 2.391 0 00-.288-.043 7.056 7.056 0 00-.566-.017c-.884.003-1.593-.713-1.642-1.569a4.59 4.59 0 00-.053-.499 1.151 1.151 0 00-.079-.291c-.152-.302-.57-.876-.944-1.364a1.571 1.571 0 01.054-1.967c.157-.186.319-.386.453-.57.142-.194.227-.336.26-.415.023-.06.052-.185.076-.38.023-.186.037-.4.045-.612a1.612 1.612 0 011.406-1.538c.232-.028.47-.063.681-.104.22-.042.376-.085.461-.122.065-.028.186-.103.355-.231.16-.122.335-.27.505-.42z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"19\",\n      \"viewBox\": \"0 0 18 19\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-claims\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.5 16.5A1.5 1.5 0 003 18h10a1.5 1.5 0 001.5-1.5V9h-1v7.5a.5.5 0 01-.5.5H3a.5.5 0 01-.5-.5V5.662a.5.5 0 01.135-.342l1.728-1.842.002-.003 2.202-2.32A.5.5 0 016.93 1H13a.5.5 0 01.5.5v3.767h1V1.5A1.5 1.5 0 0013 0H6.93a1.5 1.5 0 00-1.088.467L3.635 2.791l-1.73 1.845A1.5 1.5 0 001.5 5.662V16.5z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.5 1v4.5H2v-1h3.5V1h1zM15.461 5.68a.5.5 0 00-.692-.064l-7.04 5.668a.5.5 0 00-.149.197l-.734 1.762 1.885-.479a.5.5 0 00.19-.095l7.016-5.648a.5.5 0 00.065-.716l-.541-.626zm-1.32-.843a1.5 1.5 0 012.077.189l.54.626a1.5 1.5 0 01-.194 2.148l-7.016 5.648a1.5 1.5 0 01-.571.285l-3.823.97 1.503-3.606a1.5 1.5 0 01.444-.592l7.04-5.668z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-clients\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13 4a4 4 0 11-8 0 4 4 0 018 0zM9 7a3 3 0 100-6 3 3 0 000 6z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.597 3.573C14.76 3.146 16 4.693 16 6.04c0 1.35-1.116 2.459-2.51 2.459a.5.5 0 100 1C15.42 9.5 17 7.96 17 6.041c0-1.92-1.76-4.009-4.597-3.45a.5.5 0 10.194.982zM5.403 3.573C3.24 3.146 2 4.693 2 6.04 2 7.391 3.115 8.5 4.51 8.5a.5.5 0 010 1C2.58 9.5 1 7.96 1 6.041c0-1.92 1.76-4.009 4.597-3.45a.5.5 0 01-.194.982z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14 18H4v-7.037A3.963 3.963 0 017.963 7h2.074A3.963 3.963 0 0114 10.963V18zm-1-7.037V17H5v-6.037A2.963 2.963 0 017.963 8h2.074A2.963 2.963 0 0113 10.963z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.26 9.5A2.74 2.74 0 0117 12.24v3.26a1.5 1.5 0 01-1.5 1.5h-5v1h5a2.5 2.5 0 002.5-2.5v-3.26a3.74 3.74 0 00-3.74-3.74H13v1h1.26zM3.74 9.5A2.74 2.74 0 001 12.24v3.26A1.5 1.5 0 002.5 17h2v1h-2A2.5 2.5 0 010 15.5v-3.26A3.74 3.74 0 013.74 8.5H5v1H3.74z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-dashboard\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17 1h-6v5h6V1zm-6-1a1 1 0 00-1 1v5a1 1 0 001 1h6a1 1 0 001-1V1a1 1 0 00-1-1h-6zM7 13H1v4h6v-4zm-6-1a1 1 0 00-1 1v4a1 1 0 001 1h6a1 1 0 001-1v-4a1 1 0 00-1-1H1zM17 10h-6v7h6v-7zm-6-1a1 1 0 00-1 1v7a1 1 0 001 1h6a1 1 0 001-1v-7a1 1 0 00-1-1h-6zM7 1H1v8h6V1zM1 0a1 1 0 00-1 1v8a1 1 0 001 1h6a1 1 0 001-1V1a1 1 0 00-1-1H1z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-employees\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13 4a4 4 0 11-8 0 4 4 0 018 0zM9 7a3 3 0 100-6 3 3 0 000 6z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.098 2.573c2.12-.425 3.347 1.112 3.347 2.468A2.464 2.464 0 0112.977 7.5a.5.5 0 000 1 3.464 3.464 0 003.468-3.459c0-1.912-1.732-4.011-4.543-3.449a.5.5 0 00.196.98zM5.847 2.573C3.727 2.148 2.5 3.685 2.5 5.04A2.464 2.464 0 004.968 7.5a.5.5 0 110 1A3.464 3.464 0 011.5 5.041c0-1.912 1.732-4.011 4.543-3.449a.5.5 0 11-.196.98z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M15 18H3v-6.296A4.704 4.704 0 017.704 7h2.592A4.704 4.704 0 0115 11.704V18zm-1-6.296V17H4v-5.296A3.704 3.704 0 017.704 8h2.592A3.704 3.704 0 0114 11.704z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.76 8.5A2.24 2.24 0 0117 10.74v4.76a1.5 1.5 0 01-1.5 1.5H11v1h4.5a2.5 2.5 0 002.5-2.5v-4.76a3.24 3.24 0 00-3.24-3.24H12.5v1h2.26zM3.24 8.5A2.24 2.24 0 001 10.74v4.76A1.5 1.5 0 002.5 17H7v1H2.5A2.5 2.5 0 010 15.5v-4.76A3.24 3.24 0 013.24 7.5H5.5v1H3.24z\\\" fill=\\\"#505152\\\"/><path d=\\\"M8 8v-.5h2V8a1 1 0 01-2 0z\\\" fill=\\\"#505152\\\"/><path d=\\\"M7.555 12.78l1.057-4.228c.1-.404.675-.404.776 0l1.057 4.228a.4.4 0 01-.105.38l-1.057 1.057a.4.4 0 01-.566 0L7.66 13.16a.4.4 0 01-.105-.38z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-finance\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.443 1a.5.5 0 00-.407.79L7.257 3.5h3.013l1.435-1.675a.5.5 0 00-.38-.825H6.444zm5.065 2.592l.957-1.116c.834-.973.142-2.476-1.14-2.476H6.444c-1.22 0-1.93 1.38-1.22 2.372l.86 1.204A5.502 5.502 0 001.5 9v6.5A2.5 2.5 0 004 18h9.5a2.5 2.5 0 002.5-2.5V9a5.502 5.502 0 00-4.492-5.408zM7 4.5A4.5 4.5 0 002.5 9v6.5A1.5 1.5 0 004 17h9.5a1.5 1.5 0 001.5-1.5V9a4.5 4.5 0 00-4.5-4.5H7z\\\" fill=\\\"#505152\\\"/><path d=\\\"M11 11.923c0 .52-.186.948-.557 1.286-.37.337-.907.545-1.607.624V15h-.698v-1.135c-.869-.014-1.581-.15-2.138-.409v-1.135c.301.15.653.278 1.056.382.402.1.763.152 1.082.156v-2.012l-.442-.167c-.574-.226-.994-.495-1.26-.807-.263-.315-.394-.704-.394-1.167 0-.495.187-.902.562-1.221.378-.32.89-.513 1.534-.581V6h.698v.888a5.67 5.67 0 012.022.44l-.383.985a5.522 5.522 0 00-1.639-.398v1.958l.4.156c.665.262 1.125.538 1.38.829.256.29.384.645.384 1.065zm-1.24.08a.665.665 0 00-.215-.51c-.14-.137-.376-.268-.709-.393v1.716c.616-.097.925-.368.925-.812zM7.277 8.696c0 .205.062.375.184.511.126.136.352.271.678.404V7.937c-.28.043-.494.13-.641.263a.64.64 0 00-.22.495z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-operations\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.32 11.745c.007.722.468 1.255.993 1.255h5.285c.756 0 1.348.322 1.742.813.383.478.56 1.094.56 1.687s-.177 1.21-.56 1.688c-.394.49-.986.812-1.742.812H4a.5.5 0 010-1h11.598c.446 0 .754-.178.96-.438.218-.271.341-.655.341-1.062 0-.407-.123-.79-.34-1.063-.207-.258-.515-.437-.96-.437h-5.286c-1.288 0-1.983-1.217-1.994-2.245-.005-.542.166-1.113.581-1.552.422-.445 1.045-.703 1.842-.703H14a.5.5 0 010 1h-3.258c-.574 0-.916.18-1.115.39-.206.218-.311.522-.308.855z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.26 14.557C6.204 13.517 7 12.221 7 10.871 7 9.316 5.688 8 4 8s-3 1.316-3 2.871c0 1.35.796 2.647 1.74 3.686.456.501.914.908 1.26 1.19.346-.282.804-.689 1.26-1.19zM4 17s4-2.679 4-6.129C8 8.733 6.21 7 4 7s-4 1.733-4 3.871C0 14.321 4 17 4 17zM15.26 7.557C16.204 6.517 17 5.221 17 3.871 17 2.316 15.688 1 14 1s-3 1.316-3 2.871c0 1.35.796 2.647 1.74 3.686.456.501.914.908 1.26 1.19.346-.282.804-.689 1.26-1.19zM14 10s4-2.679 4-6.129C18 1.733 16.21 0 14 0s-4 1.733-4 3.871C10 7.321 14 10 14 10z\\\" fill=\\\"#505152\\\"/><path d=\\\"M5 11a1 1 0 11-2 0 1 1 0 012 0zM15 4a1 1 0 11-2 0 1 1 0 012 0z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-ports\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.532 2.566c0 .872-.7 1.566-1.547 1.566A1.556 1.556 0 018.44 2.566c0-.872.7-1.566 1.546-1.566.847 0 1.547.694 1.547 1.566zm-1.05 2.517a2.562 2.562 0 002.05-2.517A2.556 2.556 0 009.985 0 2.556 2.556 0 007.44 2.566c0 1.246.88 2.284 2.049 2.517a.505.505 0 00-.003.049v1.21H6.59a.5.5 0 100 1h2.895v9.637c-3.432-.167-5.661-2.623-5.728-5.01l.78.785a.5.5 0 00.71-.704l-1.698-1.71-.355-.358-.355.357-1.698 1.711a.5.5 0 10.71.704l.905-.912v.017c0 3.147 2.945 6.13 7.102 6.13 2.082 0 3.97-.743 5.345-1.869 1.302-1.066 2.177-2.51 2.26-4.028l.656.662a.5.5 0 00.71-.704l-1.698-1.71-.354-.358-.355.357-1.698 1.711a.5.5 0 00.71.704l1.069-1.077a.498.498 0 00-.034.182c0 1.224-.695 2.5-1.9 3.488-1.061.87-2.49 1.486-4.084 1.616v-9.62h2.896a.5.5 0 000-1h-2.896V5.132c0-.017 0-.033-.002-.049z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"19\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 19 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-regions\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.404 3.84a.198.198 0 00-.09.017c-.195.082-.434.2-.617.329a.992.992 0 00-.195.17c.006.021.02.043.06.088l.023.026c.075.082.234.258.29.525a.984.984 0 01-.03.46 1.482 1.482 0 00-.048.231.643.643 0 00.104.007c.17 0 .366-.15.548-.51.174-.346.25-.727.25-.868 0-.11 0-.192-.008-.265a.374.374 0 00-.028-.124c-.005-.01-.011-.02-.035-.034a.54.54 0 00-.224-.053zm-.374-.764a.931.931 0 01.429-.074c.41.03.726.193.894.527.13.26.13.568.129.754v.032c0 .308-.122.826-.345 1.267-.214.426-.612.95-1.236.95-.178 0-.351-.028-.502-.109a.711.711 0 01-.338-.4 1.019 1.019 0 01-.04-.441 2.336 2.336 0 01.082-.402.287.287 0 00.004-.017c-.007-.019-.024-.039-.12-.15a1.007 1.007 0 01-.27-.698c0-.23.111-.41.206-.523.1-.12.225-.224.346-.309.245-.171.539-.314.76-.408zM4.674 4.567a7.707 7.707 0 011.528 1.256c.256.29.297.594.304.794.13.036.243.105.335.18.137.11.252.253.344.4.177.283.314.657.314.99 0 .215-.1.377-.189.481a1.57 1.57 0 01-.304.263 7.593 7.593 0 01-.449.277 13.38 13.38 0 00-.377.225c-.098.058-.176.104-.25.164a.286.286 0 00-.082.088.945.945 0 00.035.31c.027.07.047.094.056.104a.675.675 0 00.108.082c.158.11.358.26.594.643l.043.07.015.081c.057.313.11.526.157.72.02.076.037.15.055.226.063.274.105.533.105.932 0 .088.02.104.034.115l.002.002a.573.573 0 00.153.08l.11.048c.059.026.155.072.24.147a.606.606 0 01.202.41.83.83 0 01-.096.431 2.28 2.28 0 01-.254.385c-.178.228-.235.42-.3.64a5.86 5.86 0 01-.06.196c-.049.147-.13.347-.31.494-.183.15-.408.198-.65.198a.952.952 0 01-.627-.207.973.973 0 01-.31-.517c-.074-.291-.048-.633-.032-.846l.005-.07a.272.272 0 00-.028-.135c-.162-.34-.426-.828-.651-1.083a.767.767 0 01-.194-.619.99.99 0 01.205-.462l.06-.075a.426.426 0 00-.183-.06c-.238 0-.426-.133-.553-.25a2.69 2.69 0 01-.354-.423c-.07-.098-.142-.208-.21-.31a22.652 22.652 0 00-.093-.14 3.57 3.57 0 00-.264-.357c-.23-.261-.286-.596-.282-.866a2.51 2.51 0 01.13-.737.51.51 0 00.038-.187 2.614 2.614 0 00-.09-.507 1.069 1.069 0 00-.193-.4.226.226 0 00-.113-.08.747.747 0 00-.198-.013h-.012c-.092 0-.236 0-.385-.042-.17-.048-.238-.146-.387-.315a1.036 1.036 0 01-.265-.576 1.097 1.097 0 01.097-.565c.126-.287.266-.553.448-.758l.022-.025.793-.899c.316-.358.738-.42 1.117-.358.373.06.756.243 1.096.45zm.703 7.71a1.802 1.802 0 01-.065.062l-.042.039a5.505 5.505 0 00-.052.046 1.37 1.37 0 00-.17.183c.297.353.587.905.744 1.234.083.175.125.374.111.58l-.005.08c-.007.098-.014.19-.015.283-.002.117.006.206.022.27.015.059.031.073.035.076.003.003.036.03.147.03.126 0 .169-.021.176-.026a.377.377 0 00.047-.108l.035-.119c.065-.228.174-.606.463-.976a2.57 2.57 0 00.083-.11 1.377 1.377 0 01-.32-.19c-.2-.167-.337-.422-.337-.778 0-.32-.032-.51-.083-.73a13.114 13.114 0 00-.088-.364l-.686.518zm.364-1.302l-.592.447a2.072 2.072 0 00-.146-.106c-.164-.108-.397-.225-.654-.23a.332.332 0 01-.06-.047 1.92 1.92 0 01-.24-.293c-.063-.089-.123-.18-.187-.276l-.105-.159c-.1-.149-.212-.309-.33-.443-.036-.04-.07-.122-.069-.278.002-.153.039-.324.086-.467.045-.134.097-.324.08-.538A3.505 3.505 0 003.4 7.9c-.07-.241-.183-.514-.371-.727a.997.997 0 00-.482-.314c-.15-.043-.293-.042-.385-.042H2.15c-.106 0-.007-.031-.007-.031s-.064-.024-.113-.08c-.053-.059-.057-.098-.057-.098s-.056-.142-.028-.207c.029-.065.079-.208.291-.45l.794-.898c.08-.091.204-.142.431-.106.235.038.521.165.826.35.607.37 1.172.905 1.347 1.104.087.099.091.176.091.33v.006c0 .037 0 .094.005.15a.684.684 0 00.067.247c.124.245.353.296.514.297a.179.179 0 01.06.036.81.81 0 01.164.198c.1.161.16.338.177.46-.026.025-.067.059-.13.103a5.452 5.452 0 01-.357.219c-.09.053-.188.11-.298.177l-.08.049a3.21 3.21 0 00-.39.257c-.164.134-.376.363-.39.716a1.79 1.79 0 00.093.672c.06.155.133.276.227.376.08.085.165.144.22.182l.015.01.003.002c.036.025.074.052.116.088zm8.341-6.373c.131-.123.32-.258.56-.258.299 0 .574.157.75.257l.029.016c.222.127.33.176.412.176.031 0 .08-.009.166-.043.06-.024.115-.05.184-.082l.142-.066a2.55 2.55 0 011.094-.258h.012c.189 0 .377 0 .543.016.168.016.353.05.52.145.395.224.408.53.408 1.03 0 .494-.114.938-.361 1.172-.105.098-.22.186-.321.263l-.027.02a3.305 3.305 0 00-.303.253.074.074 0 00-.022.035.17.17 0 00-.002.069c.012.08.058.192.143.302.213.277.337.584.267.912-.062.295-.263.495-.395.616a5.968 5.968 0 01-.167.146c-.078.066-.14.12-.203.19-.082.093-.097.147-.097.194v.022c0 .205 0 .358-.008.465-.006.097-.022.275-.149.42a.576.576 0 01-.143.115l-.035.02a.652.652 0 00-.169.146c-.248.28-.51.433-.78.51-.247.07-.49.07-.677.07h-.023c-.012-.003-.02-.004-.106.093a3.605 3.605 0 01-.01.01c-.102.118-.303.346-.671.346-.23 0-.416-.126-.528-.213a3.11 3.11 0 01-.17-.146l-.033-.03a4.511 4.511 0 00-.107-.095 1.01 1.01 0 00-.091-.07 1.31 1.31 0 01-.288.26c-.019.061-.04.115-.059.156-.116.262-.178.59-.208.963-.026.326-.025.66-.025.987v.138c0 .35-.003.725-.068 1.013a1.054 1.054 0 01-.21.457.654.654 0 01-.508.236c-.167 0-.296.02-.404.04l-.048.01-.116.02a.758.758 0 01-.214.01.492.492 0 01-.31-.162.638.638 0 01-.14-.29 2.76 2.76 0 01-.037-.557c0-.04-.001-.072-.003-.097a1.157 1.157 0 01-.578-.364c-.019-.022-.091-.073-.271-.153a9.507 9.507 0 00-.24-.101l-.027-.011c-.096-.04-.2-.083-.302-.13a2.279 2.279 0 01-.606-.378 1.04 1.04 0 01-.353-.774c0-.527.21-1.09.504-1.493a1.9 1.9 0 01.404-.413l-.016-.022c-.165-.223-.356-.452-.683-.637-.223-.126-.496-.355-.474-.727a.707.707 0 01.155-.396c.072-.092.16-.164.242-.22.165-.112.363-.196.539-.252.144-.045.298-.08.434-.091a.949.949 0 00.042-.167c.042-.236.043-.532.043-.765 0-.307.12-.544.303-.693a.781.781 0 01.485-.176h.6c.17 0 .334.047.441.078l.033.009c.204.058.609.062 1.021-.405.288-.326.516-.645.723-.936l.196-.272a3.4 3.4 0 01.391-.463zm-1.84 6.142h-.073a27 27 0 01-.283.002c-.47-.003-.958-.03-1.371-.178-.005-.002-.03-.013-.088-.079-.045-.052-.087-.11-.145-.188a17.61 17.61 0 00-.078-.107 2.955 2.955 0 00-.85-.81c.07-.036.152-.069.238-.096.137-.044.245-.06.292-.06.266 0 .45-.164.556-.337.098-.16.147-.35.175-.51.057-.32.057-.69.057-.908v-.013c0-.013 0-.023.002-.029l.005-.001h.597c.064 0 .131.019.268.057l.008.003c.453.127 1.16.071 1.789-.64.318-.362.581-.73.792-1.025l.173-.24c.123-.167.215-.28.29-.35a.387.387 0 01.064-.051c.08.006.187.057.395.175l.028.016c.176.1.452.257.75.257.166 0 .316-.047.44-.096.08-.032.17-.074.252-.113l.104-.049c.227-.102.468-.191.79-.191.204 0 .358 0 .486.012.129.012.191.018.22.04.095.071.068.272.068.455 0 .184-.036.26-.17.387-.072.068-.156.132-.265.216l-.02.015a4.057 4.057 0 00-.374.314.971.971 0 00-.272.85c.039.27.166.52.313.71.09.117.105.176.108.195a.173.173 0 01-.023.038.907.907 0 01-.117.124l-.093.08c-.1.087-.237.204-.336.316a1.143 1.143 0 00-.313.772c0 .167 0 .277-.002.352a1.48 1.48 0 00-.288.259.836.836 0 01-.41.276c-.141.04-.29.042-.495.042-.368 0-.569.228-.672.345l-.009.01c-.066.076-.086.092-.097.095-.006-.003-.031-.014-.082-.054a2.368 2.368 0 01-.127-.109l-.027-.024a5.607 5.607 0 00-.13-.116c-.103-.087-.266-.216-.465-.259-.246-.052-.477.038-.658.243l-.05.056a.536.536 0 00-.024-.008c-.166-.056-.374-.067-.558-.07a9.735 9.735 0 00-.184-.001h-.112zm2.414.342a.09.09 0 00-.007 0h.007zm2.856-2.702v-.007.007zm-8.332.886l.006.007a.035.035 0 01-.006-.007zm3.163 2.313h.001c.1 0 .18.006.248.014a4.16 4.16 0 00-.213 1.081c-.028.366-.028.738-.027 1.062v.134c0 .375-.007.643-.046.816a.648.648 0 01-.014.051 2.78 2.78 0 00-.43.043v-.133c0-.193-.017-.388-.097-.551a.615.615 0 00-.373-.325 2.014 2.014 0 00-.117-.035c-.09-.025-.128-.035-.208-.127-.148-.167-.371-.276-.54-.35-.084-.038-.173-.075-.258-.11l-.028-.011a8.091 8.091 0 01-.276-.119 1.55 1.55 0 01-.4-.24c-.077-.07-.083-.111-.083-.14 0-.312.134-.697.338-.977.223-.307.391-.323.448-.303.72.258 1.477.236 1.883.223l.142-.003h.05zm5.07.401h.006c.193 0 .354.09.468.177.116.09.218.205.302.315.161.213.293.46.37.63.183.347.176.701.062 1.02-.109.304-.313.577-.521.813-.104.118-.25.262-.439.305-.252.057-.432-.085-.526-.193a1.983 1.983 0 01-.178-.254l-.023-.038a2.04 2.04 0 00-.196-.27c-.05-.057-.08-.064-.09-.066a.264.264 0 00-.12.015c-.053.015-.095.031-.15.052l-.125.046a1.262 1.262 0 01-.42.085.533.533 0 01-.372-.144.623.623 0 01-.178-.334 1.461 1.461 0 01.016-.525c.019-.103.044-.22.068-.325l.028-.132a1.73 1.73 0 00.046-.308c0-.352.243-.546.409-.635.173-.093.382-.143.569-.173.376-.06.796-.06.993-.06zm-1.193.974c.065-.03.17-.06.316-.083.304-.05.66-.052.865-.052a.223.223 0 01.029.02c.04.031.093.085.151.162.118.155.22.349.277.477l.008.017.01.017c.053.098.058.186.014.31-.047.132-.147.287-.303.472a.931.931 0 00-.786-.697.977.977 0 00-.474.026c-.08.023-.175.059-.247.086.012-.065.027-.13.043-.201.01-.052.023-.107.036-.166.024-.116.05-.254.06-.388zm1.231 1.483h.002z\\\" fill=\\\"#505152\\\"/><path d=\\\"M7.488 4.377v-.002m-1.64 5.311a.286.286 0 01.083-.088c.073-.06.151-.106.25-.164l.136-.082c.072-.045.155-.093.24-.143.157-.092.323-.19.449-.277a1.57 1.57 0 00.304-.263.742.742 0 00.19-.481c0-.333-.138-.707-.315-.99a1.62 1.62 0 00-.344-.4.938.938 0 00-.335-.18 1.214 1.214 0 00-.304-.794 7.707 7.707 0 00-1.528-1.256c-.34-.207-.723-.39-1.096-.45-.38-.062-.8 0-1.117.358l-.793.899-.022.025c-.182.205-.322.471-.448.758-.07.16-.12.352-.097.565.024.218.12.41.265.576.15.17.217.267.387.315.15.042.293.042.385.042h.012c.107 0 .156.002.198.014a.226.226 0 01.113.08c.074.083.141.22.193.399.05.175.078.36.09.507a.51.51 0 01-.037.187 2.51 2.51 0 00-.131.737c-.004.27.051.605.282.866.08.09.166.211.264.357l.092.14c.069.102.141.212.21.31.104.147.224.302.355.424.127.116.315.248.553.248.04 0 .104.018.184.06-.021.025-.042.05-.061.076a.99.99 0 00-.205.462.767.767 0 00.194.62c.225.254.49.742.651 1.082.023.046.03.093.028.135a9.574 9.574 0 01-.005.07c-.016.213-.042.555.032.846a.973.973 0 00.31.517.952.952 0 00.627.207c.242 0 .467-.048.65-.198.18-.147.261-.347.31-.494a5.86 5.86 0 00.06-.197c.065-.22.122-.411.3-.639a2.28 2.28 0 00.254-.385.83.83 0 00.096-.43.606.606 0 00-.203-.41.913.913 0 00-.24-.148 6.41 6.41 0 00-.109-.047.573.573 0 01-.153-.081l-.002-.002c-.014-.011-.034-.027-.034-.115 0-.399-.042-.658-.105-.932l-.055-.226c-.048-.194-.1-.407-.157-.72l-.015-.082-.043-.069c-.236-.383-.436-.534-.594-.643a.675.675 0 01-.108-.082.301.301 0 01-.056-.104.945.945 0 01-.035-.31zm0 0v.003m.89-1.594v.001m10.775.282c-.003-.019-.018-.078-.108-.194a1.548 1.548 0 01-.313-.71.971.971 0 01.272-.851c.129-.125.262-.228.374-.314l.02-.015c.109-.084.193-.148.266-.216.133-.126.169-.203.169-.387 0-.183.027-.384-.068-.456-.029-.021-.091-.027-.22-.039a5.55 5.55 0 00-.486-.012c-.322 0-.563.089-.79.191a9.036 9.036 0 00-.104.049c-.082.039-.173.08-.252.113-.124.05-.274.096-.44.096-.298 0-.574-.157-.75-.257l-.028-.016c-.208-.118-.315-.17-.395-.175a.387.387 0 00-.064.05c-.075.07-.167.184-.29.35l-.173.241c-.21.295-.474.663-.792 1.024-.628.712-1.336.768-1.789.64l-.008-.002a1.067 1.067 0 00-.268-.057h-.597l-.005.001a.18.18 0 00-.002.029v.013c0 .219 0 .588-.057.908-.028.16-.077.35-.175.51-.106.173-.29.337-.556.337-.047 0-.155.016-.292.06-.086.027-.168.06-.238.096.417.255.668.565.85.81l.078.107c.058.078.1.136.145.188.058.066.083.077.088.079.413.147.9.175 1.37.177a27 27 0 00.284 0h.073c.038-.001.075-.002.11-.001h.185c.184.004.392.015.558.07a.536.536 0 01.023.01l.05-.057c.182-.205.413-.295.659-.243.199.043.362.172.464.259.045.038.09.08.13.116l.028.024c.049.044.09.08.127.109.05.04.076.051.082.054.011-.003.031-.02.097-.094l.01-.01c.102-.118.303-.346.671-.346.206 0 .354-.002.495-.042a.836.836 0 00.41-.276 1.48 1.48 0 01.288-.26c.002-.074.002-.184.002-.35 0-.346.157-.598.313-.773.1-.112.235-.229.336-.315l.093-.081a.907.907 0 00.117-.124.173.173 0 00.023-.038zm0 0v0zm-.89 1.79v-.007m-.45 2.824l.003-.001m1.275 1.458h.002M8.315 3.856a.198.198 0 01.09-.018.54.54 0 01.223.053c.024.013.03.024.035.034.01.018.021.053.028.124.008.073.008.155.008.265 0 .141-.076.522-.25.868-.182.36-.379.51-.548.51a.643.643 0 01-.104-.007v-.01c.007-.056.022-.128.048-.221a.984.984 0 00.03-.46c-.056-.267-.215-.443-.29-.525a1.523 1.523 0 01-.023-.026c-.04-.045-.054-.067-.06-.089a.992.992 0 01.195-.17c.183-.127.422-.246.618-.328zm.144-.855a.931.931 0 00-.43.074 4.257 4.257 0 00-.76.407 1.763 1.763 0 00-.346.309.826.826 0 00-.207.523c0 .356.156.565.271.698.096.111.113.131.12.15l-.004.017a2.336 2.336 0 00-.083.402c-.013.125-.014.283.04.44.06.173.176.313.339.401.15.081.324.11.502.11.624 0 1.022-.525 1.236-.951.223-.441.345-.959.345-1.267v-.032c0-.186.001-.493-.129-.754-.168-.334-.484-.496-.894-.527zM5.312 12.34c.018-.017.042-.038.065-.062l.686-.518a26.816 26.816 0 00.088.364c.051.22.083.41.083.73 0 .356.136.61.338.779.102.085.225.147.319.188a2.57 2.57 0 01-.083.111c-.29.37-.398.748-.463.976a3.182 3.182 0 01-.035.119.377.377 0 01-.047.108c-.007.005-.05.026-.176.026-.11 0-.143-.027-.147-.03-.004-.003-.02-.018-.035-.077a1.072 1.072 0 01-.022-.269c.001-.093.008-.185.015-.283l.005-.08a1.162 1.162 0 00-.111-.58c-.157-.329-.447-.88-.743-1.234a1.37 1.37 0 01.17-.183l.05-.046.043-.039zm.429-1.364l-.592.447a2.072 2.072 0 00-.146-.106c-.164-.108-.397-.225-.654-.23a.332.332 0 01-.06-.047 1.92 1.92 0 01-.24-.293c-.063-.089-.123-.18-.187-.276l-.105-.159c-.1-.149-.212-.309-.33-.443-.036-.04-.07-.122-.069-.278.002-.153.039-.324.086-.467.045-.134.097-.324.08-.538A3.505 3.505 0 003.4 7.9c-.07-.241-.183-.514-.371-.727a.997.997 0 00-.482-.314c-.15-.043-.293-.042-.385-.042H2.15c-.106 0-.007-.031-.007-.031s-.064-.024-.113-.08c-.053-.059-.057-.098-.057-.098s-.056-.142-.028-.207c.029-.065.079-.208.291-.45l.794-.898c.08-.091.204-.142.431-.106.235.038.521.165.826.35.607.37 1.172.905 1.347 1.104.087.099.091.176.091.33v.006c0 .037 0 .094.005.15a.684.684 0 00.067.247c.124.245.353.296.514.297a.179.179 0 01.06.036.81.81 0 01.164.198c.1.161.16.338.177.46-.026.025-.067.059-.13.103a5.452 5.452 0 01-.357.219c-.09.053-.188.11-.298.177l-.08.049a3.21 3.21 0 00-.39.257c-.164.134-.376.363-.39.716a1.79 1.79 0 00.093.672c.06.155.133.276.227.376.08.085.165.144.22.182l.015.01.003.002c.036.025.074.052.116.088zm8.902-6.631c-.24 0-.43.135-.56.258a3.4 3.4 0 00-.392.463l-.196.272c-.207.291-.435.61-.723.936-.412.467-.817.463-1.021.405l-.033-.01c-.107-.03-.27-.077-.442-.077h-.599a.781.781 0 00-.485.176c-.183.149-.303.386-.303.693 0 .233-.001.53-.043.765a.949.949 0 01-.042.167c-.136.01-.29.046-.434.091-.176.056-.374.14-.538.252-.083.056-.17.128-.243.22a.707.707 0 00-.155.396c-.022.372.251.6.474.727.327.185.518.414.683.637l.016.022a1.9 1.9 0 00-.404.413c-.294.403-.504.966-.504 1.493 0 .344.164.599.353.774.18.168.407.287.606.378.102.047.206.09.302.13l.027.01.24.102c.18.08.252.131.271.153.22.248.453.33.578.364.002.025.003.057.003.097 0 .212.003.41.037.557.018.08.054.193.14.29.097.107.213.149.31.161.085.01.164 0 .214-.008l.116-.022.048-.009c.108-.02.237-.04.404-.04.198 0 .376-.08.508-.236.119-.138.177-.31.21-.457.065-.288.068-.663.068-1.013v-.138c0-.327 0-.66.025-.987.03-.372.092-.7.208-.963.019-.041.04-.095.059-.157.106-.062.2-.161.288-.259.02.014.05.036.09.07l.108.095.033.03c.05.045.109.098.17.146.112.087.298.213.528.213.368 0 .569-.228.672-.345l.009-.01c.085-.098.094-.097.106-.095h.023c.188 0 .43 0 .678-.07.269-.075.531-.229.779-.51a.652.652 0 01.169-.145l.035-.02a.576.576 0 00.143-.116c.127-.144.143-.322.15-.42.007-.106.007-.259.007-.464v-.022c0-.047.015-.101.097-.194.063-.07.125-.124.203-.19.048-.041.102-.087.167-.146.132-.121.333-.321.395-.616.07-.328-.054-.635-.267-.912a.692.692 0 01-.143-.302.17.17 0 01.002-.07.074.074 0 01.022-.034c.09-.088.19-.166.303-.252l.027-.02c.1-.078.216-.166.32-.264.248-.234.362-.678.362-1.171 0-.5-.013-.807-.408-1.031a1.29 1.29 0 00-.52-.145c-.166-.016-.354-.016-.543-.016h-.012a2.55 2.55 0 00-1.094.258l-.142.066c-.069.032-.124.058-.184.082a.474.474 0 01-.166.043c-.082 0-.19-.05-.412-.176l-.029-.016c-.176-.1-.451-.257-.75-.257zm0 6.741l.013.001h-.007-.006zM9.18 9.271l.006.007a.035.035 0 01-.006-.007zm3.163 2.313h.001c.1 0 .18.006.248.014a4.16 4.16 0 00-.213 1.081c-.028.366-.028.738-.027 1.062v.134c0 .375-.007.643-.046.816a.648.648 0 01-.014.051 2.78 2.78 0 00-.43.043v-.133c0-.193-.017-.388-.097-.551a.615.615 0 00-.373-.325 2.014 2.014 0 00-.117-.035c-.09-.025-.128-.035-.208-.127-.148-.167-.371-.276-.54-.35-.084-.038-.173-.075-.258-.11l-.028-.011a8.091 8.091 0 01-.276-.119 1.55 1.55 0 01-.4-.24c-.077-.07-.083-.111-.083-.14 0-.312.134-.697.338-.977.223-.307.391-.323.448-.303.72.258 1.477.236 1.883.223l.142-.003h.05zm5.076.401h-.007c-.197 0-.617 0-.993.061-.187.03-.396.08-.57.173-.165.089-.408.283-.408.635 0 .06-.015.16-.046.308l-.028.132c-.024.105-.05.222-.068.325-.024.14-.053.342-.016.525.02.101.068.231.178.334.114.108.25.144.372.144.163 0 .311-.046.42-.085l.126-.046c.054-.02.096-.037.148-.052a.264.264 0 01.122-.015c.009.002.038.009.09.067.076.087.136.177.195.27l.023.037c.047.075.111.179.178.254.094.107.274.25.526.193.189-.043.335-.187.439-.305.208-.236.412-.51.52-.812a1.23 1.23 0 00-.062-1.02 3.415 3.415 0 00-.37-.631 1.685 1.685 0 00-.301-.315.775.775 0 00-.468-.177zm-1.2.974c.066-.03.172-.06.316-.083.305-.05.66-.052.866-.052a.223.223 0 01.029.02c.04.031.093.085.151.162.118.155.22.349.277.477l.008.017.01.017c.053.098.058.186.014.31-.047.132-.147.287-.303.472a.931.931 0 00-.786-.697.977.977 0 00-.474.026c-.08.023-.175.059-.247.086.012-.065.027-.13.043-.201.01-.052.023-.107.036-.166.024-.116.05-.254.06-.388z\\\" stroke=\\\"#505152\\\" stroke-width=\\\".2\\\"/>\",\n    \"attrs\": {\n      \"width\": \"20\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 20 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-shipowner\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.394 1.803a6.5 6.5 0 017.211 0l3.232 2.154a4.5 4.5 0 011.825 4.999L16.634 12.5H1.674L.51 9.069A4.5 4.5 0 012.277 3.88l3.117-2.078zm6.657.832a5.5 5.5 0 00-6.102 0L2.832 4.713A3.5 3.5 0 001.46 8.748L2.39 11.5h13.492l.82-2.823a3.5 3.5 0 00-1.42-3.888L12.05 2.635z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.66 11.738a.5.5 0 01.425-.238H16a.5.5 0 01.432.248l1.5 2.572a.5.5 0 01-.056.58l-1.5 1.715a.501.501 0 01-.169.126L16 16.286l.207.455h-.001l-.003.002-.008.003-.028.012-.101.043a9.25 9.25 0 01-.382.145c-.332.119-.816.276-1.437.432C13.005 17.69 11.213 18 9 18s-3.984-.31-5.206-.623a14.613 14.613 0 01-1.41-.432 9.003 9.003 0 01-.473-.189l-.027-.012-.008-.004-.002-.001h-.001l.212-.453-.213.452a.5.5 0 01-.154-.113L.133 14.911a.5.5 0 01-.059-.602l1.585-2.571zm.721 4.132l.017.007c.072.03.183.075.33.13.295.108.737.254 1.313.401C5.193 16.703 6.881 17 9 17c2.12 0 3.829-.297 5.003-.592.587-.148 1.04-.295 1.344-.403.152-.055.266-.1.341-.13l.01-.005 1.189-1.357-1.174-2.013H2.363l-1.238 2.01 1.256 1.36zM6.5 5.5A.5.5 0 017 5h4a.5.5 0 010 1H7a.5.5 0 01-.5-.5zM5.7 7.1a.5.5 0 01.7.1c.46.612 1.266 1.313 2.181 1.511.445.097.92.077 1.414-.133.498-.212 1.045-.63 1.605-1.378a.5.5 0 01.8.6c-.64.853-1.317 1.401-2.014 1.698-.7.298-1.387.327-2.017.19C7.134 9.422 6.141 8.522 5.6 7.8a.5.5 0 01.1-.7z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9 3.5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4a.5.5 0 01.5-.5zM9 15.5c-3.41 0-4.538 0-8.07-.505l.14-.99c3.465.495 4.543.495 7.923.495H9c3.394 0 4.961 0 7.918-.493l.164.986c-3.04.507-4.678.507-8.073.507H9z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-templates\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 1H3v16h12V6.125h-3a1 1 0 01-1-1V1zm4.827 4.125a.81.81 0 01.173.5V17a1 1 0 01-1 1H3a1 1 0 01-1-1V1a1 1 0 011-1h8.5L14 2.813l1.826 2.31.001.002zm-2.594-1.67l1.32 1.67H12V2.068l1.233 1.387z\\\" fill=\\\"#505152\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.5 8a.5.5 0 01.5-.5h3.733a.5.5 0 110 1H5a.5.5 0 01-.5-.5zm0 2.88a.5.5 0 01.5-.5h8a.5.5 0 010 1H5a.5.5 0 01-.5-.5zm0 3.12a.5.5 0 01.5-.5h8a.5.5 0 010 1H5a.5.5 0 01-.5-.5z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-terminals\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6.464 6.352h1.62v6.377c0 .375.458.563.916.563s.916-.188.916-.563V6.352h1.62c.353 0 .553-.388.553-.834 0-.387-.165-.81-.552-.81H6.464c-.388 0-.552.423-.552.81 0 .446.2.834.552.834z\\\" fill=\\\"#505152\\\"/><path d=\\\"M17.297 0H.703A.703.703 0 000 .703v16.594c0 .388.315.703.703.703h16.594a.703.703 0 00.703-.703V.703A.703.703 0 0017.297 0zm-.703 16.594H1.406V1.406h15.188v15.188z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dashboard-vessel\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M7.167 0h3.708v3.221H14.5v5.222l3.203 1.285L13.3 18H4.872L.288 9.731 3.5 8.443V3.22h3.667V0zm1 3.221h1.708V1H8.167v2.221zM4.176 9.25l-2.464.988L5.462 17h2.756l.184-9.23L4.176 9.25zm5.227-1.495L9.218 17H12.7l3.597-6.76-2.47-.99-4.424-1.496zm4.097.33V4.22h-9v3.855l4.414-1.543 4.586 1.55z\\\" fill=\\\"#505152\\\"/><path d=\\\"M12.5 11.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM6.5 11.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0z\\\" fill=\\\"#505152\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"18\",\n      \"viewBox\": \"0 0 18 18\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/database\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\"/><path d=\\\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\\\"/><path d=\\\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-database\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/delete\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.733 4.733h10.534v10.1a1.1 1.1 0 01-1.1 1.1H3.833a1.1 1.1 0 01-1.1-1.1v-10.1zm1.2 1.2v8.8h8.134v-8.8H3.933z\\\" fill=\\\"#1E1E1E\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.667 6.733a.6.6 0 01.6.6v6a.6.6 0 11-1.2 0v-6a.6.6 0 01.6-.6zM8 6.733a.6.6 0 01.6.6v6a.6.6 0 11-1.2 0v-6a.6.6 0 01.6-.6zM10.333 6.733a.6.6 0 01.6.6v6a.6.6 0 11-1.2 0v-6a.6.6 0 01.6-.6zM6.067 1.167a1.1 1.1 0 011.1-1.1h1.666a1.1 1.1 0 011.1 1.1v1a1.1 1.1 0 01-1.1 1.1H7.167a1.1 1.1 0 01-1.1-1.1v-1zm1.2.1v.8h1.466v-.8H7.267z\\\" fill=\\\"#1E1E1E\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.067 3.167a1.1 1.1 0 011.1-1.1h9.666a1.1 1.1 0 011.1 1.1v1.666a1.1 1.1 0 01-1.1 1.1H3.167a1.1 1.1 0 01-1.1-1.1V3.167zm1.2.1v1.466h9.466V3.267H3.267z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/disc\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-disc\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/divide-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8 12h8M12 16h0M12 8h0\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-divide-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/divide-square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M8 12h8M12 16h0M12 8h0\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-divide-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/divide\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"6\\\" r=\\\"2\\\"/><path d=\\\"M5 12h14\\\"/><circle cx=\\\"12\\\" cy=\\\"18\\\" r=\\\"2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-divide\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/document\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 1.5V3c0 1.414 0 2.121.44 2.56C12.878 6 13.585 6 15 6h1.5\\\" stroke=\\\"#4482E1\\\" stroke-width=\\\"1.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"M5 10h8m-8 3h8m-8 3h4.17M1 15V7c0-2.828 0-4.243.879-5.121C2.757 1 4.172 1 7 1h4.172c.408 0 .613 0 .797.076.183.076.328.22.617.51l3.828 3.828c.29.29.434.434.51.618.076.183.076.388.076.796V15c0 2.828 0 4.243-.879 5.121C15.243 21 13.828 21 11 21H7c-2.828 0-4.243 0-5.121-.879C1 19.243 1 17.828 1 15z\\\" stroke=\\\"#4482E1\\\" stroke-width=\\\"1.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"18\",\n      \"height\": \"22\",\n      \"viewBox\": \"0 0 18 22\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dollar-sign\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 1v22M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-dollar-sign\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/down-16px\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.306 5.28a1 1 0 011.414.026l3.162 3.28 3.423-3.305a1 1 0 011.39 1.438l-4.863 4.695-4.552-4.72a1 1 0 01.026-1.414z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 9l5.786 6L18 9\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/download-cloud\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8 17l4 4 4-4M12 12v9\\\"/><path d=\\\"M20.88 18.09A5 5 0 0018 9h-1.26A8 8 0 103 16.29\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-download-cloud\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/download-v2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8 15A7 7 0 118 1a7 7 0 010 14zM2.167 8a5.833 5.833 0 1011.666 0A5.833 5.833 0 002.167 8zm8.337-.412l-1.92 1.92V4.5H7.416v5.008l-1.921-1.92-.825.824 2.917 2.917.412.412.412-.412 2.917-2.917-.825-.824z\\\" fill=\\\"#4482E1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/download\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8.333 2.667v6.666m0 0L6 7.667m2.333 1.666l2.334-1.666M4 9.333V12h8.667V9.333\\\" stroke=\\\"#1E1E1E\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/dribbble\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-dribbble\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/droplet\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 2.69l5.66 5.66a8 8 0 11-11.31 0z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-droplet\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/edit-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-edit-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/edit-3\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 20h9M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-edit-3\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/edit\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.577 2.893a1.5 1.5 0 012.03-.294l.79.55a1.5 1.5 0 01.378 2.079L11.75 6.723 7.16 12.657a1.5 1.5 0 01-.47.4l-1.776.966a1 1 0 01-1.467-1.022l.287-1.963a1.5 1.5 0 01.274-.67l4.426-6.041 1.144-1.434zm1.458.526a.5.5 0 00-.676.099l-.803 1.004a84.022 84.022 0 011.67 1.198l.725-1.058a.5.5 0 00-.127-.693l-.789-.55zm-.398 3.109l-4.27 5.517a.5.5 0 01-.156.133l-1.776.967.287-1.963a.5.5 0 01.091-.223l4.134-5.643a81.26 81.26 0 011.69 1.212z\\\" fill=\\\"currentColor\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/ellipsis\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4.001 9.333c-.366 0-.68-.13-.941-.392A1.282 1.282 0 012.668 8c0-.367.13-.68.392-.942.26-.261.575-.391.941-.391.367 0 .68.13.942.39.261.262.392.576.392.943s-.131.68-.392.941c-.261.261-.575.392-.942.392zm4 0c-.366 0-.68-.13-.941-.392A1.282 1.282 0 016.668 8c0-.367.13-.68.392-.942.26-.261.575-.391.941-.391.367 0 .681.13.942.39.261.262.392.576.392.943s-.13.68-.392.941a1.284 1.284 0 01-.942.392zm4 0c-.366 0-.68-.13-.942-.392A1.283 1.283 0 0110.668 8c0-.367.13-.68.391-.942.262-.261.576-.391.942-.391.367 0 .681.13.942.39.261.262.392.576.392.943s-.13.68-.392.941a1.284 1.284 0 01-.942.392z\\\" fill=\\\"#4482E1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/external-link\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6M15 3h6v6M10 14L21 3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-external-link\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/eye-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24M1 1l22 22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-eye-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/eye\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-eye\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/facebook\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-facebook\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/fast-forward\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M13 19l9-7-9-7v14zM2 19l9-7-9-7v14z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-fast-forward\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/feather\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20.24 12.24a6 6 0 00-8.49-8.49L5 10.5V19h8.5zM16 8L2 22M17.5 15H9\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-feather\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/figma\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 5.5A3.5 3.5 0 018.5 2H12v7H8.5A3.5 3.5 0 015 5.5zM12 2h3.5a3.5 3.5 0 110 7H12V2z\\\"/><path d=\\\"M12 12.5a3.5 3.5 0 117 0 3.5 3.5 0 11-7 0zM5 19.5A3.5 3.5 0 018.5 16H12v3.5a3.5 3.5 0 11-7 0zM5 12.5A3.5 3.5 0 018.5 9H12v7H8.5A3.5 3.5 0 015 12.5z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-figma\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/file-minus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z\\\"/><path d=\\\"M14 2v6h6M9 15h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-file-minus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/file-plus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z\\\"/><path d=\\\"M14 2v6h6M12 18v-6M9 15h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-file-plus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/file-text\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z\\\"/><path d=\\\"M14 2v6h6M16 13H8M16 17H8M10 9H8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-file-text\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/file\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6.667 32h19.502a2.667 2.667 0 002.666-2.667v-20.5c0-.639-.229-1.256-.645-1.74L22.885.927A2.667 2.667 0 0020.863 0H6.667A2.667 2.667 0 004 2.667v26.666A2.667 2.667 0 006.667 32z\\\" fill=\\\"#fff\\\"/><path d=\\\"M22.93 7V2l4.303 5h-4.302z\\\" fill=\\\"#fff\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.169 31.333H6.667a2 2 0 01-2-2V2.667a2 2 0 012-2h14.196A2 2 0 0122 1.02V8h5.987a2 2 0 01.182.832v20.501a2 2 0 01-2 2zM6.667 32h19.502a2.667 2.667 0 002.666-2.667v-20.5c0-.639-.229-1.256-.645-1.74L22.885.927A2.667 2.667 0 0020.863 0H6.667A2.667 2.667 0 004 2.667v26.666A2.667 2.667 0 006.667 32zM22.692 1.926v5.36h4.641l-4.64-5.36z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"32\",\n      \"height\": \"32\",\n      \"viewBox\": \"0 0 32 32\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/film\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"2.18\\\" ry=\\\"2.18\\\"/><path d=\\\"M7 2v20M17 2v20M2 12h20M2 7h5M2 17h5M17 17h5M17 7h5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-film\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/filter\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 3H2l8 9.46V19l4 2v-8.54L22 3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-filter\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/flag\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-flag\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/folder-minus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2zM9 14h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-folder-minus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/folder-plus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2zM12 11v6M9 14h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-folder-plus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/folder\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-folder\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/framer\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-framer\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/frown\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M16 16s-1.5-2-4-2-4 2-4 2M9 9h.01M15 9h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-frown\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/gift\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20 12v10H4V12M2 7h20v5H2zM12 22V7M12 7H7.5a2.5 2.5 0 010-5C11 2 12 7 12 7zM12 7h4.5a2.5 2.5 0 000-5C13 2 12 7 12 7z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-gift\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/git-branch\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 3v12\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"/><path d=\\\"M18 9a9 9 0 01-9 9\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-git-branch\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/git-commit\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"/><path d=\\\"M1.05 12H7M17.01 12h5.95\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-git-commit\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/git-merge\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"/><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"/><path d=\\\"M6 21V9a9 9 0 009 9\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-git-merge\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/git-pull-request\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"/><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"/><path d=\\\"M13 6h3a2 2 0 012 2v7M6 9v12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-git-pull-request\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/github\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0020 4.77 5.07 5.07 0 0019.91 1S18.73.65 16 2.48a13.38 13.38 0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 005 4.77a5.44 5.44 0 00-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 009 18.13V22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-github\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/gitlab\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 01-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 014.82 2a.43.43 0 01.58 0 .42.42 0 01.11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0118.6 2a.43.43 0 01.58 0 .42.42 0 01.11.18l2.44 7.51L23 13.45a.84.84 0 01-.35.94z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-gitlab\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/globe\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-globe\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/grid\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-grid\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/hard-drive\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 12H2M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11zM6 16h.01M10 16h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-hard-drive\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/hash\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 9h16M4 15h16M10 3L8 21M16 3l-2 18\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-hash\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/headphones\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 18v-6a9 9 0 0118 0v6\\\"/><path d=\\\"M21 19a2 2 0 01-2 2h-1a2 2 0 01-2-2v-3a2 2 0 012-2h3zM3 19a2 2 0 002 2h1a2 2 0 002-2v-3a2 2 0 00-2-2H3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-headphones\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/heart\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20.84 4.61a5.5 5.5 0 00-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 00-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 000-7.78z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-heart\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/help-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3M12 17h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-help-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/hexagon\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-hexagon\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/home\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z\\\"/><path d=\\\"M9 22V12h6v10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-home\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/image\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9.5 7a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm0-2a.5.5 0 110 1 .5.5 0 010-1z\\\" fill=\\\"#737475\\\"/><path d=\\\"M13 2H3a1 1 0 00-1 1v10a1 1 0 001 1h10a1 1 0 001-1V3a1 1 0 00-1-1zm0 11H3v-3l2.5-2.5 2.795 2.795a1 1 0 001.41 0L10.5 9.5 13 12v1zm0-2.415L11.205 8.79a1 1 0 00-1.41 0L9 9.585 6.205 6.79a1 1 0 00-1.41 0L3 8.585V3h10v7.585z\\\" fill=\\\"#737475\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/inbox\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 12h-6l-2 3h-4l-2-3H2\\\"/><path d=\\\"M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-inbox\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/info\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M12 16v-4M12 8h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-info\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/information\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6.999.33a6.667 6.667 0 100 13.334 6.667 6.667 0 000-13.333zm0 1.334a5.333 5.333 0 110 10.666 5.333 5.333 0 010-10.666zm0 8.667a.667.667 0 00.666-.667V6.331a.667.667 0 00-1.333 0v3.333a.667.667 0 00.667.667zm0-6.667a.667.667 0 100 1.333.667.667 0 000-1.333z\\\" fill=\\\"currentColor\\\"/>\",\n    \"attrs\": {\n      \"width\": \"14\",\n      \"height\": \"14\",\n      \"viewBox\": \"0 0 14 14\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/instagram\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"5\\\" ry=\\\"5\\\"/><path d=\\\"M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37zM17.5 6.5h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-instagram\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/italic\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 4h-9M14 20H5M15 4L9 20\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-italic\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/key\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.778 7.778 5.5 5.5 0 017.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-key\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/layers\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-layers\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/layout\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M3 9h18M9 21V9\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-layout\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/left-16px\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10.7 3.286a1 1 0 01.014 1.414l-3.3 3.37 3.286 3.215a1 1 0 01-1.4 1.43L4.586 8.099l4.7-4.799a1 1 0 011.414-.014z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15 6l-6 6.126L15 18\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/life-buoy\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"/><path d=\\\"M4.93 4.93l4.24 4.24M14.83 14.83l4.24 4.24M14.83 9.17l4.24-4.24M14.83 9.17l3.53-3.53M4.93 19.07l4.24-4.24\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-life-buoy\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/link-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15 7h3a5 5 0 015 5 5 5 0 01-5 5h-3m-6 0H6a5 5 0 01-5-5 5 5 0 015-5h3M8 12h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-link-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/link\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\\\"/><path d=\\\"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-link\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/linkedin\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z\\\"/><circle cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-linkedin\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-list\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/loader\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-loader\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/lock\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M7 11V7a5 5 0 0110 0v4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-lock\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/log-in\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15 3h4a2 2 0 012 2v14a2 2 0 01-2 2h-4M10 17l5-5-5-5M15 12H3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-log-in\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/log-out\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4M16 17l5-5-5-5M21 12H9\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-log-out\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/logi-none-letter-inverse\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M44.6 11.236c-3.2 0-5.1 1.3-6.4 2.7v-1.3c0-1.1-.3-1.6-1.3-1.6-1.2 0-3.3 2.1-8 3.1v1.8c1.8-.3 3 .1 3 1.9v22c0 4.2-1.3 3.8-1.3 5 0 .6.4 1 1.1 1 1.7 0 4.9-2.2 10-3.1v-2c-2.3.3-3.4 0-3.4-1.8v-5c1.2 1.3 3 2.4 5.4 2.4 5 0 11.2-4.5 11.2-12.1 0-8.6-5.7-13-10.3-13zm-.9 23.2c-2.5 0-5-2.6-5.5-5.7v-12.8c1.1-1.4 2.7-2.7 4.6-2.7 3.1 0 5.1 5 5.1 12.8.1 4.6-1 8.4-4.2 8.4zM172.1 8.636c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.9 0-3.4 1.5-3.4 3.3 0 1.8 1.5 3.4 3.4 3.4zM67.2 20.436c-2.5-1.1-4.2-2.2-4.2-4.3 0-1.8 1.4-3.1 3.3-3.1 2.2 0 4.4 1.5 5.6 4.3.3.7.8.9 1.5.9h1l-.4-6.5h-1.9c-.1.6-.5 1-1.1 1-1.2 0-2.2-1.3-5.5-1.3-4.2 0-7.6 2.8-7.6 6.8 0 4.6 4.5 6.8 7.7 8.3 2.9 1.4 5 2.4 5 4.8 0 1.8-1.3 3.1-3.3 3.1-2.6 0-5.9-2.1-6.7-4.7-.2-.7-.7-.9-1.4-.9h-1l.6 6.6h1.5c0-.7.4-1 1-1 1.2 0 3.2 1.7 6.5 1.7 3.8 0 8-3 8-7.2 0-5-5.7-7.2-8.6-8.5zM124 8.636c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.8 0-3.4 1.5-3.4 3.3 0 1.8 1.6 3.4 3.4 3.4zM175.7 31.936v-12.8c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0v-1.8c-1.9-.1-3.1-.5-3.1-1.7zM160 29.436c-1.8 0-3.2 1.5-3.2 3.2 0 1.8 1.5 3.3 3.2 3.3 1.7 0 3.2-1.5 3.2-3.3 0-1.7-1.5-3.2-3.2-3.2zM105.9 13.536l1.5.1c1.5.1 2.9 1 2.2 3.1l-4 13.2-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1v-1.9H91v1.9l1.5.1c1.2.1 1.8 1.2 2.5 3.1l.1.3-4 12.9-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1v-1.9H76.6v1.8l1 .1c1.6.2 2.2 1.2 2.9 3.1l6.6 18.8h4.2l5-15.1 5.3 15.1h4.2l6.1-18.8c.7-2.1 1.9-2.9 3.7-3.1l.9-.1v-1.8h-10.6v1.9zM127.6 31.936v-12.8c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0v-1.8c-1.8-.1-3.1-.5-3.1-1.7zM141.9 11.636c-2.4 0-3.3 0-4.9-.3h-2l-1.7 6.4h2.4c1.6-3.2 1.9-4.3 3.6-4.3h6.4l-12.9 20.2c-.6 1-.3 1.9.9 1.9h17.9l1.6-7h-2.5c-1.8 3.9-2.4 5-4.9 5.1l-6.1.1 13.9-22.1h-11.7zM14.115 9.332c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888C2.307 29.096 1.083 26 1.083 22.436c0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764zM193.387 9.332c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764zM201.704 5.543V2.096h-1.177v-.425h2.866v.425h-1.183v3.447h-.506zm5.476 0l-.092-1.7a35.051 35.051 0 01-.063-1.672h-.012c-.138.448-.293.936-.488 1.47l-.684 1.88h-.379l-.632-1.845a17.77 17.77 0 01-.442-1.505h-.012c-.011.482-.04 1.126-.074 1.712l-.104 1.66h-.477l.27-3.872h.638l.661 1.873c.161.477.287.902.39 1.304h.012c.103-.39.241-.816.414-1.304l.689-1.873h.638l.241 3.872h-.494z\\\" fill=\\\"#fff\\\"/>\",\n    \"attrs\": {\n      \"width\": \"209\",\n      \"height\": \"46\",\n      \"viewBox\": \"0 0 209 46\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/logo-full-inverse\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M45.3 11.6c-3.2 0-5.1 1.3-6.4 2.7V13c0-1.1-.3-1.6-1.3-1.6-1.2 0-3.3 2.1-8 3.1v1.8c1.8-.3 3 .1 3 1.9v22c0 4.2-1.3 3.8-1.3 5 0 .6.4 1 1.1 1 1.7 0 4.9-2.2 10-3.1v-2c-2.3.3-3.4 0-3.4-1.8v-5c1.2 1.3 3 2.4 5.4 2.4 5 0 11.2-4.5 11.2-12.1 0-8.6-5.7-13-10.3-13zm-.9 23.2c-2.5 0-5-2.6-5.5-5.7V16.3c1.1-1.4 2.7-2.7 4.6-2.7 3.1 0 5.1 5 5.1 12.8.1 4.6-1 8.4-4.2 8.4zM172.8 9c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.9 0-3.4 1.5-3.4 3.3 0 1.8 1.5 3.4 3.4 3.4zM67.9 20.8c-2.5-1.1-4.2-2.2-4.2-4.3 0-1.8 1.4-3.1 3.3-3.1 2.2 0 4.4 1.5 5.6 4.3.3.7.8.9 1.5.9h1l-.4-6.5h-1.9c-.1.6-.5 1-1.1 1-1.2 0-2.2-1.3-5.5-1.3-4.2 0-7.6 2.8-7.6 6.8 0 4.6 4.5 6.8 7.7 8.3 2.9 1.4 5 2.4 5 4.8 0 1.8-1.3 3.1-3.3 3.1-2.6 0-5.9-2.1-6.7-4.7-.2-.7-.7-.9-1.4-.9h-1l.6 6.6H61c0-.7.4-1 1-1 1.2 0 3.2 1.7 6.5 1.7 3.8 0 8-3 8-7.2 0-5-5.7-7.2-8.6-8.5zM124.7 9c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.8 0-3.4 1.5-3.4 3.3 0 1.8 1.6 3.4 3.4 3.4zM176.4 32.3V19.5c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0V34c-1.9-.1-3.1-.5-3.1-1.7zM160.7 29.8c-1.8 0-3.2 1.5-3.2 3.2 0 1.8 1.5 3.3 3.2 3.3 1.7 0 3.2-1.5 3.2-3.3 0-1.7-1.5-3.2-3.2-3.2zM106.6 13.9l1.5.1c1.5.1 2.9 1 2.2 3.1l-4 13.2-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1V12H91.7v1.9l1.5.1c1.2.1 1.8 1.2 2.5 3.1l.1.3-4 12.9-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1V12H77.3v1.8l1 .1c1.6.2 2.2 1.2 2.9 3.1l6.6 18.8H92l5-15.1 5.3 15.1h4.2l6.1-18.8c.7-2.1 1.9-2.9 3.7-3.1l.9-.1V12h-10.6v1.9zM128.3 32.3V19.5c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0V34c-1.8-.1-3.1-.5-3.1-1.7zM142.6 12c-2.4 0-3.3 0-4.9-.3h-2l-1.7 6.4h2.4c1.6-3.2 1.9-4.3 3.6-4.3h6.4L133.5 34c-.6 1-.3 1.9.9 1.9h17.9l1.6-7h-2.5c-1.8 3.9-2.4 5-4.9 5.1l-6.1.1L154.3 12h-11.7zM46.8 52c.3 0 .5.1.8.2.3.1.4.2.6.4l-.4.3c-.2-.3-.5-.4-.9-.4s-.8.1-1 .4c-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.2 1-.5l.4.3c-.2.2-.4.4-.6.5-.3.1-.5.2-.8.2-.4 0-.7-.1-1-.3-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1.1.6-1.5.3-.4.7-.5 1.3-.5zm3.6.1v1.6h2v-1.6h.5v3.8h-.5v-1.7h-2v1.7h-.5v-3.8h.5zm6.1 0l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm5.4-2.4c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.5-.3.7-.2.2-.4.3-.7.3l1.1 1.7h-.6l-1-1.7H60v1.7h-.5v-3.8h1.4zm-.1 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm5.5-1.6v.5h-1.2v3.3h-.5v-3.3h-1.2v-.5h2.9zm4 0v.5h-1.9v1.1h1.8v.5h-1.8v1.2h2v.5h-2.6v-3.8h2.5zm3.1 0c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.5-.3.7-.2.2-.4.3-.7.3l1.1 1.7h-.6l-1-1.7h-.6v1.7H72v-3.8h1.4zm-.1 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm3.6-1.6v3.8h-.5v-3.8h.5zm2.6 0l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm6.3-.1c.6 0 1.1.2 1.4.5l-.4.4c-.3-.3-.6-.4-1.1-.4-.4 0-.8.1-1 .4-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1.1.4.4 0 .7-.1.9-.2v-1.1H86v-.5h1.4v1.9c-.2.1-.4.2-.7.3-.3.1-.5.1-.8.1-.6 0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.4 0-.6.2-1 .6-1.4.4-.4.9-.6 1.4-.6zm3.7 3.2c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1s-.1-.2-.1-.3c0-.1 0-.2.1-.3.1-.1 0 0 .1 0zm6.4-3.2c.6 0 1 .2 1.4.6.4.4.6.9.6 1.4 0 .4-.1.7-.3 1-.2.3-.4.5-.7.7-.3.2-.6.3-1 .3s-.7-.1-1-.3c-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1 .6-1.4.4-.5.9-.6 1.4-.6zm-1.4 2c0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.1 1-.4c.3-.3.4-.6.4-1.1 0-.4-.1-.8-.4-1.1-.3-.3-.6-.4-1-.4s-.8.1-1 .4c-.3.3-.4.6-.4 1.1zm6.5-1.9c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.6-.3.8-.2.2-.5.3-.9.3h-.9V56h-.5v-3.8h1.4v-.1zm-.1 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm5.4-1.6v.5h-1.9v1.1h1.8v.5h-1.8v1.2h2v.5h-2.6v-3.8h2.5zm3.2 0c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.5-.3.7-.2.2-.4.3-.7.3l1.1 1.7h-.6l-1-1.7h-.6v1.7h-.5v-3.8h1.4zm-.2 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm4.7-1.6l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm6.2-2.4v.5H118v3.3h-.5v-3.3h-1.2v-.5h2.9zm2 0v3.8h-.5v-3.8h.5zm3.7-.1c.6 0 1 .2 1.4.6.4.4.6.9.6 1.4 0 .4-.1.7-.3 1-.2.3-.4.5-.7.7-.3.2-.6.3-1 .3s-.7-.1-1-.3c-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1 .6-1.4.4-.5.8-.6 1.4-.6zm-1.4 2c0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.1 1-.4c.3-.3.4-.6.4-1.1 0-.4-.1-.8-.4-1.1-.3-.3-.6-.4-1-.4s-.8.1-1 .4c-.3.3-.4.6-.4 1.1zm5.8-1.9l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm5.7-.1c.5 0 .9.1 1.1.4l-.4.4c-.1-.1-.2-.2-.3-.2-.1 0-.3-.1-.4-.1-.2 0-.4.1-.5.2-.1.1-.2.3-.2.4 0 .3.2.5.6.6l.5.2c.3.1.5.2.6.4.1.2.2.4.2.6 0 .4-.1.6-.4.9-.3.3-.6.3-1 .3-.5 0-1-.2-1.2-.5l.4-.4.3.3c.1.1.3.1.5.1s.4-.1.5-.2c.1-.1.2-.3.2-.5 0-.1 0-.2-.1-.3-.1-.1-.3-.2-.5-.2l-.3-.1c-.3-.1-.6-.3-.7-.4-.1-.2-.2-.4-.2-.7 0-.3.1-.6.4-.8.2-.3.5-.4.9-.4zm3.1 3.2c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1s-.1-.2-.1-.3c0-.1 0-.2.1-.3.1-.1 0 0 .1 0zm6.5-3.2c.3 0 .5.1.8.2.3.1.4.2.6.4l-.4.3c-.2-.3-.5-.4-.9-.4s-.8.1-1 .4c-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.2 1-.5l.4.3c-.2.2-.4.4-.6.5-.3.1-.5.2-.8.2-.4 0-.7-.1-1-.3-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1.1.6-1.5.2-.4.7-.5 1.3-.5zm3.5.1v3.3h1.8v.5h-2.3v-3.8h.5zm4.9 0l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm4.6-2.4v3.8h-.5v-3.8h.5zm2.7 0l1.2 2.9 1.2-2.9h.8v3.8h-.5v-3.1l-1.3 3.1h-.3l-1.3-3.1v3.1h-.5v-3.8h.7zm6.2-.1c.5 0 .9.1 1.1.4l-.4.4c-.1-.1-.2-.2-.3-.2-.1-.1-.3-.1-.4-.1-.2 0-.4.1-.5.2-.1.1-.2.3-.2.4 0 .3.2.5.6.6l.5.2c.3.1.5.2.6.4.1.2.2.4.2.6 0 .4-.1.6-.4.9-.2.2-.6.3-1 .3-.5 0-1-.2-1.2-.5l.4-.4.3.3c.1.1.3.1.5.1s.4-.1.5-.2c.1-.1.2-.3.2-.5 0-.1 0-.2-.1-.3-.1-.1-.3-.2-.5-.2l-.3-.1c-.3-.1-.6-.3-.7-.4-.1-.2-.2-.4-.2-.7 0-.3.1-.6.4-.8.2-.3.5-.4.9-.4zm3.2 3.2c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1-.1-.1-.1-.2-.1-.3 0-.1 0-.2.1-.3h.1zm7-3.1v.5h-1.9v1.2h1.8v.5h-1.8v1.6h-.5v-3.8h2.4zm2.2 0v3.8h-.5v-3.8h.5zm2.7 0l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm6.2 0l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm4.8-2.4l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm6.3-.1c.3 0 .5.1.8.2.2.1.4.2.6.4l-.4.3c-.2-.3-.5-.4-.9-.4s-.8.1-1 .4c-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.2 1-.5l.4.3c-.2.2-.4.4-.6.5-.3.1-.5.2-.8.2-.4 0-.7-.1-1-.3-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1.1.6-1.5.4-.4.8-.5 1.3-.5zm5.5.1v.5h-1.9v1.1h1.8v.5h-1.8v1.2h2v.5H200v-3.8h2.4zm2.1 3.1c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1-.1-.1-.1-.2-.1-.3 0-.1 0-.2.1-.3h.1zM14.815 9.696c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.787 12.787 0 016.552-1.764zM194.087 9.696c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764zM202.404 5.907V2.46h-1.177v-.425h2.866v.425h-1.183v3.447h-.506zm5.476 0l-.092-1.7a35.051 35.051 0 01-.063-1.672h-.012c-.138.448-.293.936-.488 1.47l-.684 1.879h-.379l-.632-1.844a17.77 17.77 0 01-.442-1.505h-.012c-.011.482-.04 1.126-.074 1.712l-.104 1.66h-.477l.27-3.872h.638l.661 1.873c.161.476.287.902.39 1.304h.012c.103-.39.241-.816.414-1.304l.689-1.873h.638l.241 3.872h-.494z\\\" fill=\\\"#fff\\\"/>\",\n    \"attrs\": {\n      \"width\": \"210\",\n      \"height\": \"57\",\n      \"viewBox\": \"0 0 210 57\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/logo-full\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M45.3 11.6c-3.2 0-5.1 1.3-6.4 2.7V13c0-1.1-.3-1.6-1.3-1.6-1.2 0-3.3 2.1-8 3.1v1.8c1.8-.3 3 .1 3 1.9v22c0 4.2-1.3 3.8-1.3 5 0 .6.4 1 1.1 1 1.7 0 4.9-2.2 10-3.1v-2c-2.3.3-3.4 0-3.4-1.8v-5c1.2 1.3 3 2.4 5.4 2.4 5 0 11.2-4.5 11.2-12.1 0-8.6-5.7-13-10.3-13zm-.9 23.2c-2.5 0-5-2.6-5.5-5.7V16.3c1.1-1.4 2.7-2.7 4.6-2.7 3.1 0 5.1 5 5.1 12.8.1 4.6-1 8.4-4.2 8.4zM172.8 9c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.9 0-3.4 1.5-3.4 3.3 0 1.8 1.5 3.4 3.4 3.4zM67.9 20.8c-2.5-1.1-4.2-2.2-4.2-4.3 0-1.8 1.4-3.1 3.3-3.1 2.2 0 4.4 1.5 5.6 4.3.3.7.8.9 1.5.9h1l-.4-6.5h-1.9c-.1.6-.5 1-1.1 1-1.2 0-2.2-1.3-5.5-1.3-4.2 0-7.6 2.8-7.6 6.8 0 4.6 4.5 6.8 7.7 8.3 2.9 1.4 5 2.4 5 4.8 0 1.8-1.3 3.1-3.3 3.1-2.6 0-5.9-2.1-6.7-4.7-.2-.7-.7-.9-1.4-.9h-1l.6 6.6H61c0-.7.4-1 1-1 1.2 0 3.2 1.7 6.5 1.7 3.8 0 8-3 8-7.2 0-5-5.7-7.2-8.6-8.5zM124.7 9c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.8 0-3.4 1.5-3.4 3.3 0 1.8 1.6 3.4 3.4 3.4zM176.4 32.3V19.5c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0V34c-1.9-.1-3.1-.5-3.1-1.7zM160.7 29.8c-1.8 0-3.2 1.5-3.2 3.2 0 1.8 1.5 3.3 3.2 3.3 1.7 0 3.2-1.5 3.2-3.3 0-1.7-1.5-3.2-3.2-3.2zM106.6 13.9l1.5.1c1.5.1 2.9 1 2.2 3.1l-4 13.2-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1V12H91.7v1.9l1.5.1c1.2.1 1.8 1.2 2.5 3.1l.1.3-4 12.9-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1V12H77.3v1.8l1 .1c1.6.2 2.2 1.2 2.9 3.1l6.6 18.8H92l5-15.1 5.3 15.1h4.2l6.1-18.8c.7-2.1 1.9-2.9 3.7-3.1l.9-.1V12h-10.6v1.9zM128.3 32.3V19.5c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0V34c-1.8-.1-3.1-.5-3.1-1.7zM142.6 12c-2.4 0-3.3 0-4.9-.3h-2l-1.7 6.4h2.4c1.6-3.2 1.9-4.3 3.6-4.3h6.4L133.5 34c-.6 1-.3 1.9.9 1.9h17.9l1.6-7h-2.5c-1.8 3.9-2.4 5-4.9 5.1l-6.1.1L154.3 12h-11.7zM46.8 52c.3 0 .5.1.8.2.3.1.4.2.6.4l-.4.3c-.2-.3-.5-.4-.9-.4s-.8.1-1 .4c-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.2 1-.5l.4.3c-.2.2-.4.4-.6.5-.3.1-.5.2-.8.2-.4 0-.7-.1-1-.3-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1.1.6-1.5.3-.4.7-.5 1.3-.5zm3.6.1v1.6h2v-1.6h.5v3.8h-.5v-1.7h-2v1.7h-.5v-3.8h.5zm6.1 0l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm5.4-2.4c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.5-.3.7-.2.2-.4.3-.7.3l1.1 1.7h-.6l-1-1.7H60v1.7h-.5v-3.8h1.4zm-.1 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm5.5-1.6v.5h-1.2v3.3h-.5v-3.3h-1.2v-.5h2.9zm4 0v.5h-1.9v1.1h1.8v.5h-1.8v1.2h2v.5h-2.6v-3.8h2.5zm3.1 0c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.5-.3.7-.2.2-.4.3-.7.3l1.1 1.7h-.6l-1-1.7h-.6v1.7H72v-3.8h1.4zm-.1 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm3.6-1.6v3.8h-.5v-3.8h.5zm2.6 0l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm6.3-.1c.6 0 1.1.2 1.4.5l-.4.4c-.3-.3-.6-.4-1.1-.4-.4 0-.8.1-1 .4-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1.1.4.4 0 .7-.1.9-.2v-1.1H86v-.5h1.4v1.9c-.2.1-.4.2-.7.3-.3.1-.5.1-.8.1-.6 0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.4 0-.6.2-1 .6-1.4.4-.4.9-.6 1.4-.6zm3.7 3.2c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1s-.1-.2-.1-.3c0-.1 0-.2.1-.3.1-.1 0 0 .1 0zm6.4-3.2c.6 0 1 .2 1.4.6.4.4.6.9.6 1.4 0 .4-.1.7-.3 1-.2.3-.4.5-.7.7-.3.2-.6.3-1 .3s-.7-.1-1-.3c-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1 .6-1.4.4-.5.9-.6 1.4-.6zm-1.4 2c0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.1 1-.4c.3-.3.4-.6.4-1.1 0-.4-.1-.8-.4-1.1-.3-.3-.6-.4-1-.4s-.8.1-1 .4c-.3.3-.4.6-.4 1.1zm6.5-1.9c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.6-.3.8-.2.2-.5.3-.9.3h-.9V56h-.5v-3.8h1.4v-.1zm-.1 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm5.4-1.6v.5h-1.9v1.1h1.8v.5h-1.8v1.2h2v.5h-2.6v-3.8h2.5zm3.2 0c.4 0 .7.1.9.3.2.2.3.4.3.8 0 .3-.1.5-.3.7-.2.2-.4.3-.7.3l1.1 1.7h-.6l-1-1.7h-.6v1.7h-.5v-3.8h1.4zm-.2 1.6c.3 0 .5 0 .6-.1.1-.1.2-.3.2-.5 0-.4-.3-.6-.8-.6h-.7v1.2h.7zm4.7-1.6l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm6.2-2.4v.5H118v3.3h-.5v-3.3h-1.2v-.5h2.9zm2 0v3.8h-.5v-3.8h.5zm3.7-.1c.6 0 1 .2 1.4.6.4.4.6.9.6 1.4 0 .4-.1.7-.3 1-.2.3-.4.5-.7.7-.3.2-.6.3-1 .3s-.7-.1-1-.3c-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1 .6-1.4.4-.5.8-.6 1.4-.6zm-1.4 2c0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.1 1-.4c.3-.3.4-.6.4-1.1 0-.4-.1-.8-.4-1.1-.3-.3-.6-.4-1-.4s-.8.1-1 .4c-.3.3-.4.6-.4 1.1zm5.8-1.9l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm5.7-.1c.5 0 .9.1 1.1.4l-.4.4c-.1-.1-.2-.2-.3-.2-.1 0-.3-.1-.4-.1-.2 0-.4.1-.5.2-.1.1-.2.3-.2.4 0 .3.2.5.6.6l.5.2c.3.1.5.2.6.4.1.2.2.4.2.6 0 .4-.1.6-.4.9-.3.3-.6.3-1 .3-.5 0-1-.2-1.2-.5l.4-.4.3.3c.1.1.3.1.5.1s.4-.1.5-.2c.1-.1.2-.3.2-.5 0-.1 0-.2-.1-.3-.1-.1-.3-.2-.5-.2l-.3-.1c-.3-.1-.6-.3-.7-.4-.1-.2-.2-.4-.2-.7 0-.3.1-.6.4-.8.2-.3.5-.4.9-.4zm3.1 3.2c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1s-.1-.2-.1-.3c0-.1 0-.2.1-.3.1-.1 0 0 .1 0zm6.5-3.2c.3 0 .5.1.8.2.3.1.4.2.6.4l-.4.3c-.2-.3-.5-.4-.9-.4s-.8.1-1 .4c-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.2 1-.5l.4.3c-.2.2-.4.4-.6.5-.3.1-.5.2-.8.2-.4 0-.7-.1-1-.3-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1.1.6-1.5.2-.4.7-.5 1.3-.5zm3.5.1v3.3h1.8v.5h-2.3v-3.8h.5zm4.9 0l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm4.6-2.4v3.8h-.5v-3.8h.5zm2.7 0l1.2 2.9 1.2-2.9h.8v3.8h-.5v-3.1l-1.3 3.1h-.3l-1.3-3.1v3.1h-.5v-3.8h.7zm6.2-.1c.5 0 .9.1 1.1.4l-.4.4c-.1-.1-.2-.2-.3-.2-.1-.1-.3-.1-.4-.1-.2 0-.4.1-.5.2-.1.1-.2.3-.2.4 0 .3.2.5.6.6l.5.2c.3.1.5.2.6.4.1.2.2.4.2.6 0 .4-.1.6-.4.9-.2.2-.6.3-1 .3-.5 0-1-.2-1.2-.5l.4-.4.3.3c.1.1.3.1.5.1s.4-.1.5-.2c.1-.1.2-.3.2-.5 0-.1 0-.2-.1-.3-.1-.1-.3-.2-.5-.2l-.3-.1c-.3-.1-.6-.3-.7-.4-.1-.2-.2-.4-.2-.7 0-.3.1-.6.4-.8.2-.3.5-.4.9-.4zm3.2 3.2c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1-.1-.1-.1-.2-.1-.3 0-.1 0-.2.1-.3h.1zm7-3.1v.5h-1.9v1.2h1.8v.5h-1.8v1.6h-.5v-3.8h2.4zm2.2 0v3.8h-.5v-3.8h.5zm2.7 0l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm6.2 0l1.6 3.8h-.6l-.4-.9h-1.8l-.4.9h-.6l1.7-3.8h.5zm-1 2.4h1.4l-.7-1.8-.7 1.8zm4.8-2.4l2.1 3.1v-3.1h.5v3.8h-.7l-2.1-3.1v3.1h-.5v-3.8h.7zm6.3-.1c.3 0 .5.1.8.2.2.1.4.2.6.4l-.4.3c-.2-.3-.5-.4-.9-.4s-.8.1-1 .4c-.3.3-.4.7-.4 1.1 0 .4.1.8.4 1.1.3.3.6.4 1 .4s.8-.2 1-.5l.4.3c-.2.2-.4.4-.6.5-.3.1-.5.2-.8.2-.4 0-.7-.1-1-.3-.3-.2-.5-.4-.7-.7-.2-.3-.3-.6-.3-1 0-.6.2-1.1.6-1.5.4-.4.8-.5 1.3-.5zm5.5.1v.5h-1.9v1.1h1.8v.5h-1.8v1.2h2v.5H200v-3.8h2.4zm2.1 3.1c.1 0 .2 0 .3.1.1.1.1.2.1.2 0 .1 0 .2-.1.3-.1.1-.2.1-.2.1-.1 0-.2 0-.2-.1-.1-.1-.1-.2-.1-.3 0-.1 0-.2.1-.3h.1zM14.815 9.696c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764zM194.087 9.696c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764zM202.404 5.907V2.46h-1.177v-.425h2.866v.425h-1.183v3.447h-.506zm5.476 0l-.092-1.7a35.051 35.051 0 01-.063-1.672h-.012c-.138.448-.293.936-.488 1.47l-.684 1.879h-.379l-.632-1.844a17.77 17.77 0 01-.442-1.505h-.012c-.011.482-.04 1.126-.074 1.712l-.104 1.66h-.477l.27-3.872h.638l.661 1.873c.161.476.287.902.39 1.304h.012c.103-.39.241-.816.414-1.304l.689-1.873h.638l.241 3.872h-.494z\\\" fill=\\\"#000\\\"/>\",\n    \"attrs\": {\n      \"width\": \"210\",\n      \"height\": \"57\",\n      \"viewBox\": \"0 0 210 57\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/logo-none-letter\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M45.3 11.6c-3.2 0-5.1 1.3-6.4 2.7V13c0-1.1-.3-1.6-1.3-1.6-1.2 0-3.3 2.1-8 3.1v1.8c1.8-.3 3 .1 3 1.9v22c0 4.2-1.3 3.8-1.3 5 0 .6.4 1 1.1 1 1.7 0 4.9-2.2 10-3.1v-2c-2.3.3-3.4 0-3.4-1.8v-5c1.2 1.3 3 2.4 5.4 2.4 5 0 11.2-4.5 11.2-12.1 0-8.6-5.7-13-10.3-13zm-.9 23.2c-2.5 0-5-2.6-5.5-5.7V16.3c1.1-1.4 2.7-2.7 4.6-2.7 3.1 0 5.1 5 5.1 12.8.1 4.6-1 8.4-4.2 8.4zM172.8 9c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.9 0-3.4 1.5-3.4 3.3 0 1.8 1.5 3.4 3.4 3.4zM67.9 20.8c-2.5-1.1-4.2-2.2-4.2-4.3 0-1.8 1.4-3.1 3.3-3.1 2.2 0 4.4 1.5 5.6 4.3.3.7.8.9 1.5.9h1l-.4-6.5h-1.9c-.1.6-.5 1-1.1 1-1.2 0-2.2-1.3-5.5-1.3-4.2 0-7.6 2.8-7.6 6.8 0 4.6 4.5 6.8 7.7 8.3 2.9 1.4 5 2.4 5 4.8 0 1.8-1.3 3.1-3.3 3.1-2.6 0-5.9-2.1-6.7-4.7-.2-.7-.7-.9-1.4-.9h-1l.6 6.6H61c0-.7.4-1 1-1 1.2 0 3.2 1.7 6.5 1.7 3.8 0 8-3 8-7.2 0-5-5.7-7.2-8.6-8.5zM124.7 9c1.9 0 3.3-1.5 3.3-3.4s-1.5-3.3-3.3-3.3c-1.8 0-3.4 1.5-3.4 3.3 0 1.8 1.6 3.4 3.4 3.4zM176.4 32.3V19.5c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0V34c-1.9-.1-3.1-.5-3.1-1.7zM160.7 29.8c-1.8 0-3.2 1.5-3.2 3.2 0 1.8 1.5 3.3 3.2 3.3 1.7 0 3.2-1.5 3.2-3.3 0-1.7-1.5-3.2-3.2-3.2zM106.6 13.9l1.5.1c1.5.1 2.9 1 2.2 3.1l-4 13.2-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1V12H91.7v1.9l1.5.1c1.2.1 1.8 1.2 2.5 3.1l.1.3-4 12.9-4.4-13.2c-.7-2-.3-3 1-3.1l1-.1V12H77.3v1.8l1 .1c1.6.2 2.2 1.2 2.9 3.1l6.6 18.8H92l5-15.1 5.3 15.1h4.2l6.1-18.8c.7-2.1 1.9-2.9 3.7-3.1l.9-.1V12h-10.6v1.9zM128.3 32.3V19.5c0-3 .3-4.8.3-6.8 0-.9-.5-1.3-1.3-1.3-1.3 0-3.3 1.9-8.3 2.7v1.8c1.8-.1 3 .2 3 2v14.3c0 1.2-1.3 1.6-2.9 1.8v1.8c4.1-.1 8.2-.1 12.3 0V34c-1.8-.1-3.1-.5-3.1-1.7zM142.6 12c-2.4 0-3.3 0-4.9-.3h-2l-1.7 6.4h2.4c1.6-3.2 1.9-4.3 3.6-4.3h6.4L133.5 34c-.6 1-.3 1.9.9 1.9h17.9l1.6-7h-2.5c-1.8 3.9-2.4 5-4.9 5.1l-6.1.1L154.3 12h-11.7zM14.815 9.696c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764zM194.087 9.696c3.528 0 6.588 1.296 9.108 3.852 2.556 2.556 3.816 5.688 3.816 9.36 0 3.636-1.224 6.732-3.744 9.252-2.52 2.52-5.544 3.78-9.144 3.78-3.744 0-6.876-1.296-9.36-3.888-2.484-2.592-3.708-5.688-3.708-9.252 0-1.404.252-3.564.972-4.968 2.34-4.68 10.98-3.744 9.468 2.088-1.836-2.196-5.796-1.188-5.616 3.528.108 2.52 1.08 4.5 2.952 6.012 1.512 1.26 3.276 1.908 5.292 1.908 2.232 0 4.14-.828 5.724-2.448 1.584-1.656 2.376-3.636 2.376-6.048 0-2.376-.792-4.392-2.376-6.048-1.62-1.62-3.528-2.448-5.832-2.448-1.044 0-1.98.144-2.88.468-1.728-1.584-4.932-1.692-7.236-.252a13.215 13.215 0 013.636-3.132 12.788 12.788 0 016.552-1.764z\\\" fill=\\\"#000\\\"/>\",\n    \"attrs\": {\n      \"width\": \"210\",\n      \"height\": \"47\",\n      \"viewBox\": \"0 0 210 47\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/mail\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\\\"/><path d=\\\"M22 6l-10 7L2 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-mail\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/map-pin\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z\\\"/><circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-map-pin\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/map\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 6v16l7-4 8 4 7-4V2l-7 4-8-4-7 4zM8 2v16M16 6v16\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-map\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/maximize-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-maximize-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/maximize\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-maximize\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/meh\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M8 15h8M9 9h.01M15 9h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-meh\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/menu\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 12h18M3 6h18M3 18h18\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-menu\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/message-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-message-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/message-square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-message-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/mic-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 1l22 22M9 9v3a3 3 0 005.12 2.12M15 9.34V4a3 3 0 00-5.94-.6\\\"/><path d=\\\"M17 16.95A7 7 0 015 12v-2m14 0v2a7 7 0 01-.11 1.23M12 19v4M8 23h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-mic-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/mic\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 1a3 3 0 00-3 3v8a3 3 0 006 0V4a3 3 0 00-3-3z\\\"/><path d=\\\"M19 10v2a7 7 0 01-14 0v-2M12 19v4M8 23h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-mic\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/minimize-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-minimize-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/minimize\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M8 3v3a2 2 0 01-2 2H3m18 0h-3a2 2 0 01-2-2V3m0 18v-3a2 2 0 012-2h3M3 16h3a2 2 0 012 2v3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-minimize\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/minus-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M8 12h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-minus-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/minus-square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M8 12h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-minus-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/minus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 12h14\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-minus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/monitor\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"2\\\" y=\\\"3\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M8 21h8M12 17v4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-monitor\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/moon\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-moon\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/more-horizontal\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"/><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"/><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-more-horizontal\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/more-vertical\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"/><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"/><circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-more-vertical\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/mouse-pointer\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3zM13 13l6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-mouse-pointer\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/move\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 9l-3 3 3 3M9 5l3-3 3 3M15 19l-3 3-3-3M19 9l3 3-3 3M2 12h20M12 2v20\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-move\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/music\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 18V5l12-2v13\\\"/><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"/><circle cx=\\\"18\\\" cy=\\\"16\\\" r=\\\"3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-music\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/navigation-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 2l7 19-7-4-7 4 7-19z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-navigation-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/navigation\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 11l19-9-9 19-2-8-8-2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-navigation\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/notification-bell-custom\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20 18.5H5l2.094-3.25V9.5a4 4 0 014-4h2.77a4 4 0 014 4v5.75L20 18.5z\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"1.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"M11.5 4.5a1 1 0 011-1v0a1 1 0 011 1v1h-2v-1zM15.5 18.5h-6a3 3 0 106 0z\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"1.5\\\"/>\",\n    \"attrs\": {\n      \"width\": \"25\",\n      \"height\": \"25\",\n      \"viewBox\": \"0 0 25 25\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/notification-read\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1.672 4v0c0-.073.008-.145.023-.214l.794.496 5.333 3.334.177.11.176-.11 5.334-3.333.8-.5a.99.99 0 01.023.217v4.333h-.667V4.732l-.51.319L8 8.273 2.842 5.051l-.51-.32v7.602h5.333V13h-5c-.549 0-1-.45-1-1 0 0 0 0 0 0l.007-8zm.993-.333H1.73A.996.996 0 012.665 3h10.667c.433 0 .804.28.942.667H2.665zm9.123 9.349l2.592-2.593.479.472-3.3 3.3-1.889-1.889.469-.468 1.177 1.178.236.235.236-.236z\\\" fill=\\\"#4482E1\\\" stroke=\\\"#4482E1\\\" stroke-width=\\\".667\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/notification\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.844 9a4.75 4.75 0 014.75-4.75h2.77A4.75 4.75 0 0118.113 9v5.525l2.013 3.063a.75.75 0 01-.627 1.162h-15a.75.75 0 01-.63-1.156l1.974-3.065V9zm4.75-3.25A3.25 3.25 0 007.344 9v5.75a.75.75 0 01-.12.406L5.875 17.25H18.11l-1.372-2.088a.75.75 0 01-.124-.412V9a3.25 3.25 0 00-3.25-3.25h-2.769z\\\" fill=\\\"#1E1E1E\\\"/><path d=\\\"M11 4a1 1 0 112 0v1h-2V4z\\\" fill=\\\"#1E1E1E\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10.25 4a1.75 1.75 0 113.5 0v1.75h-3.5V4zM12 3.75a.25.25 0 00-.25.25v.25h.5V4a.25.25 0 00-.25-.25zM15.75 18a3.75 3.75 0 11-7.5 0H9v-.75h6V18h.75zm-1.628.75H9.878a2.25 2.25 0 004.244 0z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/octagon\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7.86 2h8.28L22 7.86v8.28L16.14 22H7.86L2 16.14V7.86L7.86 2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-octagon\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/order\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14.333 7.13L11.773 4m0 0l-2.44 3.13M11.773 4v7.666\\\" stroke=\\\"#A0A0A0\\\" stroke-linecap=\\\"round\\\"/><path d=\\\"M2 8.8L4.56 12m0 0L7 8.8M4.56 12V4\\\" stroke=\\\"#1E1E1E\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/package\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16.5 9.4l-9-5.19M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z\\\"/><path d=\\\"M3.27 6.96L12 12.01l8.73-5.05M12 22.08V12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-package\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/paperclip\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-paperclip\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/pause-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M10 15V9M14 15V9\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-pause-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/pause\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 4h4v16H6zM14 4h4v16h-4z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-pause\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/pen-tool\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 19l7-7 3 3-7 7-3-3z\\\"/><path d=\\\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5zM2 2l7.586 7.586\\\"/><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-pen-tool\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/pencil\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill=\\\"currentColor\\\" d=\\\"M100.4 417.2c4.1-14.6 11.8-27.9 22.6-38.7l181.2-181.2 33.9-33.9 104 104 33.9 33.9-33.9 33.9-181.2 181.2c-10.7 10.7-24.1 18.5-38.7 22.6L94.4 574.6c-8.3 2.3-17.3 0-23.4-6.2-6.1-6.2-8.4-15.1-6.1-23.4l35.5-127.8zm55.6-3.7c-4.4 4.7-7.6 10.4-9.3 16.6L122.6 517l86.9-24.1c6.4-1.8 12.2-5.1 17-9.7l-70.6-69.7zm354-146.1l-104-104-34-33.9 44.9-44.9C430.4 71 448.8 63.4 468 63.4c19.2 0 37.6 7.6 51.1 21.2l35.7 35.7c13.6 13.6 21.2 32 21.2 51.1s-7.6 37.6-21.2 51.1l-44.9 44.9z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"14\",\n      \"height\": \"14\",\n      \"viewBox\": \"0 0 640 640\",\n      \"color\": \"#747577\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/percent\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 5L5 19\\\"/><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"/><circle cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"2.5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-percent\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone-call\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M15.05 5A5 5 0 0119 8.95M15.05 1A9 9 0 0123 8.94m-1 7.98v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone-call\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone-forwarded\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 1l4 4-4 4M15 5h8M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone-forwarded\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone-incoming\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 2v6h6M23 1l-7 7M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone-incoming\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone-missed\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 1l-6 6M17 1l6 6M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone-missed\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10.68 13.31a16 16 0 003.41 2.6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7 2 2 0 011.72 2v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.42 19.42 0 01-3.33-2.67m-2.67-3.34a19.79 19.79 0 01-3.07-8.63A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91M23 1L1 23\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone-outgoing\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 7V1h-6M16 8l7-7M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone-outgoing\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/phone\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-phone\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/pie-chart\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21.21 15.89A10 10 0 118 2.83M22 12A10 10 0 0012 2v10z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-pie-chart\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/play-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M10 8l6 4-6 4V8z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-play-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/play\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 3l14 9-14 9V3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-play\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/plus-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M12 8v8M8 12h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-plus-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/plus-square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M12 8v8M8 12h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-plus-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/plus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 5v14M5 12h14\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-plus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/pocket\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 3h16a2 2 0 012 2v6a10 10 0 01-10 10A10 10 0 012 11V5a2 2 0 012-2z\\\"/><path d=\\\"M8 10l4 4 4-4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-pocket\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/power\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18.36 6.64a9 9 0 11-12.73 0M12 2v10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-power\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/printer\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 9V2h12v7M6 18H4a2 2 0 01-2-2v-5a2 2 0 012-2h16a2 2 0 012 2v5a2 2 0 01-2 2h-2\\\"/><path d=\\\"M6 14h12v8H6z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-printer\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/radio\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"/><path d=\\\"M16.24 7.76a6 6 0 010 8.49m-8.48-.01a6 6 0 010-8.49m11.31-2.82a10 10 0 010 14.14m-14.14 0a10 10 0 010-14.14\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-radio\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/refresh-ccw\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 4v6h6M23 20v-6h-6\\\"/><path d=\\\"M20.49 9A9 9 0 005.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 013.51 15\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-refresh-ccw\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/refresh-cw\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 4v6h-6M1 20v-6h6\\\"/><path d=\\\"M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-refresh-cw\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/repeat\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 1l4 4-4 4\\\"/><path d=\\\"M3 11V9a4 4 0 014-4h14M7 23l-4-4 4-4\\\"/><path d=\\\"M21 13v2a4 4 0 01-4 4H3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-repeat\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/rewind\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M11 19l-9-7 9-7v14zM22 19l-9-7 9-7v14z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-rewind\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/right-16px\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.3 3.286A1 1 0 005.286 4.7l3.3 3.37L5.3 11.284a1 1 0 001.4 1.43l4.714-4.616-4.7-4.799A1 1 0 005.3 3.286z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 6l6 6.126L9 18\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/rotate-ccw\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 4v6h6\\\"/><path d=\\\"M3.51 15a9 9 0 102.13-9.36L1 10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-rotate-ccw\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/rotate-cw\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 4v6h-6\\\"/><path d=\\\"M20.49 15a9 9 0 11-2.12-9.36L23 10\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-rotate-cw\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/rss\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 11a9 9 0 019 9M4 4a16 16 0 0116 16\\\"/><circle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-rss\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/save\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z\\\"/><path d=\\\"M17 21v-8H7v8M7 3v5h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-save\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/scissors\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"/><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"/><path d=\\\"M20 4L8.12 15.88M14.47 14.48L20 20M8.12 8.12L12 12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-scissors\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/search\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 17a6 6 0 100-12 6 6 0 000 12zm0 2a8 8 0 100-16 8 8 0 000 16z\\\" fill=\\\"#1E1E1E\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M15.293 15.293a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414l-6-6a1 1 0 010-1.414z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/send\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-send\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/server\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><rect x=\\\"2\\\" y=\\\"14\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M6 6h.01M6 18h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-server\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/settings\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.25 2.5h1.576a2 2 0 012 2v1.117a7.417 7.417 0 011.739.998l.974-.563a2 2 0 012.732.732l.788 1.365a2 2 0 01-.732 2.732l-.942.544a7.476 7.476 0 01.009 2.088l.933.54a2 2 0 01.732 2.731l-.787 1.365a2 2 0 01-2.732.732l-.926-.534a7.42 7.42 0 01-1.788 1.036V20.5a2 2 0 01-2 2h-1.575a2 2 0 01-2-2v-1.117a7.418 7.418 0 01-1.817-1.058l-.963.556a2 2 0 01-2.732-.732l-.788-1.365a2 2 0 01.732-2.732l.995-.574a7.48 7.48 0 01.009-2.018l-1.004-.58a2 2 0 01-.732-2.731l.788-1.365a2 2 0 012.732-.732l1.013.585a7.417 7.417 0 011.767-1.02V4.5a2 2 0 012-2zm0 1.5a.5.5 0 00-.5.5v1.815a.53.53 0 01-.388.501A5.918 5.918 0 007.964 8.2a.53.53 0 01-.627.085L5.72 7.351a.5.5 0 00-.683.183L4.25 8.9a.5.5 0 00.183.683l1.608.928a.53.53 0 01.24.588 5.938 5.938 0 00-.013 2.75.53.53 0 01-.24.583l-1.595.92a.5.5 0 00-.183.683l.788 1.365a.5.5 0 00.683.183l1.572-.908a.53.53 0 01.631.088 5.917 5.917 0 002.438 1.422.53.53 0 01.389.501V20.5a.5.5 0 00.5.5h1.575a.5.5 0 00.5-.5v-1.815a.53.53 0 01.389-.501 5.918 5.918 0 002.415-1.4.53.53 0 01.629-.086l1.53.884a.5.5 0 00.683-.183l.788-1.365a.5.5 0 00-.183-.683l-1.535-.886a.53.53 0 01-.24-.586 5.937 5.937 0 00-.014-2.812.53.53 0 01.24-.59l1.549-.895a.5.5 0 00.183-.683l-.788-1.365a.5.5 0 00-.683-.183l-1.574.91a.53.53 0 01-.625-.083 5.916 5.916 0 00-2.375-1.362.53.53 0 01-.389-.501V4.5a.5.5 0 00-.5-.5h-1.575z\\\" fill=\\\"#1E1E1E\\\"/><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.058 14.5a2 2 0 100-4 2 2 0 000 4zm0 1.5a3.5 3.5 0 100-7 3.5 3.5 0 000 7z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/share-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\"/><circle cx=\\\"6\\\" cy=\\\"12\\\" r=\\\"3\\\"/><circle cx=\\\"18\\\" cy=\\\"19\\\" r=\\\"3\\\"/><path d=\\\"M8.59 13.51l6.83 3.98M15.41 6.51l-6.82 3.98\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-share-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/share\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 12v8a2 2 0 002 2h12a2 2 0 002-2v-8M16 6l-4-4-4 4M12 2v13\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-share\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/shield-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19.69 14a6.9 6.9 0 00.31-2V5l-8-3-3.16 1.18M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 005.62-4.38M1 1l22 22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-shield-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/shield\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-shield\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/shopping-bag\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 2L3 6v14a2 2 0 002 2h14a2 2 0 002-2V6l-3-4zM3 6h18M16 10a4 4 0 01-8 0\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-shopping-bag\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/shopping-cart\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"9\\\" cy=\\\"21\\\" r=\\\"1\\\"/><circle cx=\\\"20\\\" cy=\\\"21\\\" r=\\\"1\\\"/><path d=\\\"M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-shopping-cart\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/shuffle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-shuffle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/sidebar\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M9 3v18\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-sidebar\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/skip-back\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M19 20L9 12l10-8v16zM5 19V5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-skip-back\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/skip-forward\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 4l10 8-10 8V4zM19 5v14\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-skip-forward\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/slack\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5zM20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5zM3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14zM14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5zM15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zM10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5zM8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-slack\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/slash\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M4.93 4.93l14.14 14.14\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-slash\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/sliders\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-sliders\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/smartphone\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"5\\\" y=\\\"2\\\" width=\\\"14\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M12 18h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-smartphone\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/smile\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-smile\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/speaker\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"4\\\"/><path d=\\\"M12 6h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-speaker\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/star\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-star\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/stop-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M9 9h6v6H9z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-stop-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/sun\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"/><path d=\\\"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-sun\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/sunrise\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 18a5 5 0 00-10 0M12 2v7M4.22 10.22l1.42 1.42M1 18h2M21 18h2M18.36 11.64l1.42-1.42M23 22H1M8 6l4-4 4 4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-sunrise\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/sunset\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 18a5 5 0 00-10 0M12 9V2M4.22 10.22l1.42 1.42M1 18h2M21 18h2M18.36 11.64l1.42-1.42M23 22H1M16 5l-4 4-4-4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-sunset\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/table\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9 3H5a2 2 0 00-2 2v4m6-6h10a2 2 0 012 2v4M9 3v18m0 0h10a2 2 0 002-2V9M9 21H5a2 2 0 01-2-2V9m0 0h18\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-table\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/tablet\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M12 18h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-tablet\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/tag\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20.59 13.41l-7.17 7.17a2 2 0 01-2.83 0L2 12V2h10l8.59 8.59a2 2 0 010 2.82zM7 7h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-tag\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/target\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"6\\\"/><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-target\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/terminal\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 17l6-6-6-6M12 19h8\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-terminal\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/thermometer\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 14.76V3.5a2.5 2.5 0 00-5 0v11.26a4.5 4.5 0 105 0z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-thermometer\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/thumbs-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10 15v4a3 3 0 003 3l4-9V2H5.72a2 2 0 00-2 1.7l-1.38 9a2 2 0 002 2.3zm7-13h2.67A2.31 2.31 0 0122 4v7a2.31 2.31 0 01-2.33 2H17\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-thumbs-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/thumbs-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14 9V5a3 3 0 00-3-3l-4 9v11h11.28a2 2 0 002-1.7l1.38-9a2 2 0 00-2-2.3zM7 22H4a2 2 0 01-2-2v-7a2 2 0 012-2h3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-thumbs-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/toggle-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"/><circle cx=\\\"8\\\" cy=\\\"12\\\" r=\\\"3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-toggle-left\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/toggle-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"/><circle cx=\\\"16\\\" cy=\\\"12\\\" r=\\\"3\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-toggle-right\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/tool\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-tool\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/trash-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2M10 11v6M14 11v6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-trash-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/trash\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-trash\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/trello\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M7 7h3v9H7zM14 7h3v5h-3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-trello\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/trending-down\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 18l-9.5-9.5-5 5L1 6\\\"/><path d=\\\"M17 18h6v-6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-trending-down\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/trending-up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 6l-9.5 9.5-5-5L1 18\\\"/><path d=\\\"M17 6h6v6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-trending-up\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/triangle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-triangle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/truck\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 3h15v13H1zM16 8h4l3 3v5h-7V8z\\\"/><circle cx=\\\"5.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"/><circle cx=\\\"18.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-truck\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/tv\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"15\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M17 2l-5 5-5-5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-tv\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/twitch\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-twitch\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/twitter\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66 10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0 00-.08-.83A7.72 7.72 0 0023 3z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-twitter\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/type\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M4 7V4h16v3M9 20h6M12 4v16\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-type\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/umbrella\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 12a11.05 11.05 0 00-22 0zm-5 7a3 3 0 01-6 0v-7\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-umbrella\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/underline\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M6 3v7a6 6 0 006 6 6 6 0 006-6V3M4 21h16\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-underline\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/unlock\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M7 11V7a5 5 0 019.9-1\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-unlock\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/unread\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill=\\\"currentColor\\\" d=\\\"M17.5 6a2.5 2.5 0 100-5 2.5 2.5 0 000 5m-13-3h9.535Q14 3.245 14 3.5a3.5 3.5 0 001.755 3.035L10 9.92 2.015 5.223A2.5 2.5 0 014.5 3m5.754 7.931l6.742-3.967a3.5 3.5 0 001.004 0V13.5a2.5 2.5 0 01-2.5 2.5h-11A2.5 2.5 0 012 13.5V6.373l7.747 4.558a.5.5 0 00.507 0\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"14\",\n      \"height\": \"14\",\n      \"viewBox\": \"0 0 20 20\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/up-16px\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.694 10.72a1 1 0 01-1.414-.026l-3.162-3.28-3.423 3.305a1 1 0 01-1.39-1.438l4.863-4.695 4.552 4.72a1 1 0 01-.026 1.414z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"16\",\n      \"height\": \"16\",\n      \"viewBox\": \"0 0 16 16\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/up\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 15l-5.786-6L6 15\\\" stroke=\\\"#1E1E1E\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"/>\",\n    \"attrs\": {\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/upload-cloud\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 16l-4-4-4 4M12 12v9\\\"/><path d=\\\"M20.39 18.39A5 5 0 0018 9h-1.26A8 8 0 103 16.3\\\"/><path d=\\\"M16 16l-4-4-4 4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-upload-cloud\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/upload\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-upload\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/user-check\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\\\"/><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"/><path d=\\\"M17 11l2 2 4-4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-user-check\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/user-minus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\\\"/><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"/><path d=\\\"M23 11h-6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-user-minus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/user-plus\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\\\"/><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"/><path d=\\\"M20 8v6M23 11h-6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-user-plus\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/user-x\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\\\"/><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"/><path d=\\\"M18 8l5 5M23 8l-5 5\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-user-x\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/user\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2\\\"/><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-user\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/users\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\\\"/><circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\"/><path d=\\\"M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-users\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/video-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M16 16v1a2 2 0 01-2 2H3a2 2 0 01-2-2V7a2 2 0 012-2h2m5.66 0H14a2 2 0 012 2v3.34l1 1L23 7v10M1 1l22 22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-video-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/video\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M23 7l-7 5 7 5V7z\\\"/><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"15\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-video\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/voicemail\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"/><circle cx=\\\"18.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"/><path d=\\\"M5.5 16h13\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-voicemail\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/volume-1\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M11 5L6 9H2v6h4l5 4V5zM15.54 8.46a5 5 0 010 7.07\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-volume-1\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/volume-2\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M11 5L6 9H2v6h4l5 4V5zM19.07 4.93a10 10 0 010 14.14M15.54 8.46a5 5 0 010 7.07\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-volume-2\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/volume-x\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M11 5L6 9H2v6h4l5 4V5zM23 9l-6 6M17 9l6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-volume-x\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/volume\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M11 5L6 9H2v6h4l5 4V5z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-volume\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/warning\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.77 5.087c.746-1.371 2.706-1.397 3.488-.046l-1.73 1.002L5.681 31.5h28.584L19.527 6.043l1.731-1.002 14.738 25.457c.772 1.333-.19 3.002-1.73 3.002H5.682c-1.517 0-2.482-1.623-1.757-2.956L17.77 5.087z\\\" fill=\\\"#1E1E1E\\\"/><path d=\\\"M20.94 24.23h-1.837l-.202-9.027h2.25l-.21 9.027zm-2.1 2.76c0-.335.108-.61.325-.827.217-.223.513-.334.888-.334s.67.111.887.334c.217.217.326.492.326.826 0 .322-.106.592-.317.809-.21.217-.51.325-.896.325-.387 0-.686-.108-.897-.325a1.114 1.114 0 01-.316-.809z\\\" fill=\\\"#1E1E1E\\\"/>\",\n    \"attrs\": {\n      \"width\": \"40\",\n      \"height\": \"40\",\n      \"viewBox\": \"0 0 40 40\",\n      \"fill\": \"none\",\n      \"xmlns\": \"http://www.w3.org/2000/svg\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/watch\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"7\\\"/><path d=\\\"M12 9v3l1.5 1.5M16.51 17.35l-.35 3.83a2 2 0 01-2 1.82H9.83a2 2 0 01-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 019.83 1h4.35a2 2 0 012 1.82l.35 3.83\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-watch\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/wifi-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M1 1l22 22M16.72 11.06A10.94 10.94 0 0119 12.55M5 12.55a10.94 10.94 0 015.17-2.39M10.71 5.05A16 16 0 0122.58 9M1.42 9a15.91 15.91 0 014.7-2.88M8.53 16.11a6 6 0 016.95 0M12 20h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-wifi-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/wifi\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M5 12.55a11 11 0 0114.08 0M1.42 9a16 16 0 0121.16 0M8.53 16.11a6 6 0 016.95 0M12 20h.01\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-wifi\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/wind\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M9.59 4.59A2 2 0 1111 8H2m10.59 11.41A2 2 0 1014 16H2m15.73-8.27A2.5 2.5 0 1119.5 12H2\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-wind\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/x-circle\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"/><path d=\\\"M15 9l-6 6M9 9l6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-x-circle\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/x-octagon\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M7.86 2h8.28L22 7.86v8.28L16.14 22H7.86L2 16.14V7.86L7.86 2zM15 9l-6 6M9 9l6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-x-octagon\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/x-square\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"/><path d=\\\"M9 9l6 6M15 9l-6 6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-x-square\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/x\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M18 6L6 18M6 6l12 12\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-x\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/youtube\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M22.54 6.42a2.78 2.78 0 00-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 00-1.94 2A29 29 0 001 11.75a29 29 0 00.46 5.33A2.78 2.78 0 003.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 001.94-2 29 29 0 00.46-5.25 29 29 0 00-.46-5.33z\\\"/><path d=\\\"M9.75 15.02l5.75-3.27-5.75-3.27v6.54z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-youtube\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/zap-off\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M12.41 6.75L13 2l-2.43 2.92M18.57 12.91L21 10h-5.34M8 8l-5 6h9l-1 8 5-6M1 1l22 22\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-zap-off\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/zap\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<path d=\\\"M13 2L3 14h9l-1 8 10-12h-9l1-8z\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-zap\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/zoom-in\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"/><path d=\\\"M21 21l-4.35-4.35M11 8v6M8 11h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-zoom-in\"\n    }\n  };\n});","define(\"ember-svg-jar/inlined/zoom-out\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    \"content\": \"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"/><path d=\\\"M21 21l-4.35-4.35M8 11h6\\\"/>\",\n    \"attrs\": {\n      \"xmlns\": \"http://www.w3.org/2000/svg\",\n      \"width\": \"24\",\n      \"height\": \"24\",\n      \"viewBox\": \"0 0 24 24\",\n      \"fill\": \"none\",\n      \"stroke\": \"currentColor\",\n      \"stroke-width\": \"2\",\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"class\": \"feather feather-zoom-out\"\n    }\n  };\n});","define(\"ember-svg-jar/utils/make-svg\", [\"exports\", \"@ember/utils\", \"@ember/template\"], function (_exports, _utils, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.createAccessibilityElements = createAccessibilityElements;\n  _exports.createAriaLabel = createAriaLabel;\n  _exports.default = makeSvg;\n  _exports.formatAttrs = formatAttrs;\n  _exports.generateAccessibilityIds = generateAccessibilityIds;\n  _exports.inlineSvgFor = inlineSvgFor;\n  _exports.sanitizeAttrs = sanitizeAttrs;\n  _exports.symbolUseFor = symbolUseFor;\n  /**\n   * This taken from https://github.com/emberjs/ember.js/blob/089a021b1b5c5f8ea1cb574fcd841a73af7b2031/packages/%40ember/-internals/glimmer/lib/helpers/unique-id.ts#L44\n   * In the future it should be possible to import this function like\n   * `import { uniqueId } from '@ember/helper`\n   * see https://github.com/emberjs/ember.js/pull/20165\n   */\n  function uniqueId() {\n    return ([3e7] + -1e3 + -4e3 + -2e3 + -1e11).replace(/[0-3]/g, function (a) {\n      return (a * 4 ^ Math.random() * 16 >> (a & 2)).toString(16);\n    });\n  }\n  var accessibilityElements = ['title', 'desc'];\n  var ESC = {\n    '\"': '&quot;',\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;'\n  };\n  function matcher(char) {\n    return ESC[char];\n  }\n  function escapeText(text) {\n    if (typeof text === 'number') return text;\n    if (text === null) return null;\n    if (typeof text !== 'string') return '';\n    if (text.indexOf('>') > -1 || text.indexOf('<') > -1 || text.indexOf('&') > -1 || text.indexOf('\"') > -1) {\n      return text.replace(/[&\"<>]/g, matcher);\n    }\n    return text;\n  }\n  function sanitizeAttrs(attrs) {\n    var attrsCopy = Object.assign({}, attrs);\n    Object.keys(attrsCopy).forEach(function (key) {\n      attrsCopy[key] = escapeText(attrsCopy[key]);\n    });\n    return attrsCopy;\n  }\n  function generateAccessibilityIds(attrs) {\n    if (attrs.title) {\n      attrs.title = {\n        id: uniqueId(),\n        text: attrs.title\n      };\n    }\n    if (attrs.desc) {\n      attrs.desc = {\n        id: uniqueId(),\n        text: attrs.desc\n      };\n    }\n    return attrs;\n  }\n  function createAccessibilityElements(attrs) {\n    var title = attrs.title,\n      desc = attrs.desc;\n    if (!title && !desc) {\n      return '';\n    }\n    return accessibilityElements.reduce(function (elements, tag) {\n      if (attrs[tag]) {\n        return elements.concat(\"<\".concat(tag, \" id=\\\"\").concat(attrs[tag].id, \"\\\">\").concat(attrs[tag].text, \"</\").concat(tag, \">\"));\n      }\n      return elements;\n    }, '');\n  }\n  function createAriaLabel(attrs) {\n    var title = attrs.title,\n      desc = attrs.desc;\n    if (!title && !desc) {\n      return '';\n    }\n    return \"aria-labelledby=\\\"\".concat(accessibilityElements.filter(function (tag) {\n      return attrs[tag];\n    }).map(function (tag) {\n      return attrs[tag].id;\n    }).join(' '), \"\\\"\");\n  }\n  function formatAttrs(attrs) {\n    return Object.keys(attrs).filter(function (attr) {\n      return !accessibilityElements.includes(attr);\n    }).map(function (key) {\n      return !(0, _utils.isNone)(attrs[key]) && \"\".concat(key, \"=\\\"\").concat(attrs[key], \"\\\"\");\n    }).filter(function (attr) {\n      return attr;\n    }).join(' ');\n  }\n  function symbolUseFor(assetId) {\n    var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    return \"<svg \".concat(formatAttrs(attrs)).concat(createAriaLabel(attrs), \"><use xlink:href=\\\"\").concat(assetId, \"\\\" />\").concat(createAccessibilityElements(attrs), \"</svg>\");\n  }\n  function inlineSvgFor(assetId, getInlineAsset) {\n    var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var asset = getInlineAsset(assetId);\n    if (!asset) {\n      // eslint-disable-next-line no-console\n      console.warn(\"ember-svg-jar: Missing inline SVG for \".concat(assetId));\n      return;\n    }\n    var svgAttrs = asset.attrs ? Object.assign({}, asset.attrs, attrs) : attrs;\n    var size = attrs.size;\n    if (size) {\n      svgAttrs.width = parseFloat(svgAttrs.width) * size || svgAttrs.width;\n      svgAttrs.height = parseFloat(svgAttrs.height) * size || svgAttrs.height;\n      delete svgAttrs.size;\n    }\n    return \"<svg \".concat(formatAttrs(svgAttrs)).concat(createAriaLabel(attrs), \">\").concat(createAccessibilityElements(attrs)).concat(asset.content, \"</svg>\");\n  }\n  function makeSvg(assetId) {\n    var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var getInlineAsset = arguments.length > 2 ? arguments[2] : undefined;\n    if (!assetId) {\n      // eslint-disable-next-line no-console\n      console.warn('ember-svg-jar: asset name should not be undefined or null');\n      return;\n    }\n    attrs = sanitizeAttrs(attrs);\n    attrs = generateAccessibilityIds(attrs);\n    var isSymbol = assetId.lastIndexOf('#', 0) === 0;\n    var svg = isSymbol ? symbolUseFor(assetId, attrs) : inlineSvgFor(assetId, getInlineAsset, attrs);\n    return (0, _template.htmlSafe)(svg);\n  }\n});","define(\"ember-table/-private/collapse-tree\", [\"exports\", \"@ember/object\", \"@ember/array\", \"@ember/debug\", \"ember-table/-private/utils/observer\", \"ember-table/-private/utils/array\", \"ember-table/-private/utils/ember\", \"ember-table/-private/meta-cache\", \"ember-table/-private/utils/sort\"], function (_exports, _object, _array, _debug, _observer, _array2, _ember, _metaCache, _sort) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.TableRowMeta = _exports.SELECT_MODE = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var SELECT_MODE = _exports.SELECT_MODE = {\n    NONE: 'none',\n    SINGLE: 'single',\n    MULTIPLE: 'multiple'\n  };\n  var TableRowMeta = _exports.TableRowMeta = _object.default.extend({\n    _rowValue: null,\n    _isCollapsed: false,\n    isCollapsed: (0, _object.computed)('_rowValue.isCollapsed', {\n      get: function get() {\n        var rowValue = (0, _object.get)(this, '_rowValue');\n        if (rowValue.hasOwnProperty('isCollapsed')) {\n          return (0, _object.get)(rowValue, 'isCollapsed');\n        } else {\n          return this._isCollapsed;\n        }\n      },\n      set: function set(key, isCollapsed) {\n        var rowValue = (0, _object.get)(this, '_rowValue');\n        if (rowValue.hasOwnProperty('isCollapsed')) {\n          (0, _object.set)(rowValue, 'isCollapsed', isCollapsed);\n        } else {\n          this._isCollapsed = isCollapsed;\n        }\n        return isCollapsed;\n      }\n    }),\n    // eslint-disable-next-line ember/use-brace-expansion\n    isSelected: (0, _object.computed)('_tree.{selection.[],selectionMatchFunction}', '_parentMeta.isSelected', function () {\n      var rowValue = (0, _object.get)(this, '_rowValue');\n      var selection = (0, _object.get)(this, '_tree.selection');\n      var selectionMatchFunction = (0, _object.get)(this, '_tree.selectionMatchFunction');\n      if ((0, _array.isArray)(selection)) {\n        return this.get('isGroupSelected');\n      }\n      var isRowSelection = selectionMatchFunction ? selectionMatchFunction(selection, rowValue) : selection === rowValue;\n      return isRowSelection || (0, _object.get)(this, '_parentMeta.isSelected');\n    }),\n    isGroupSelected: (0, _object.computed)('_tree.{selection.[],selectionMatchFunction}', '_parentMeta.isSelected', function () {\n      var rowValue = (0, _object.get)(this, '_rowValue');\n      var selection = (0, _object.get)(this, '_tree.selection');\n      var selectionMatchFunction = (0, _object.get)(this, '_tree.selectionMatchFunction');\n      if (!selection || !(0, _array.isArray)(selection)) {\n        return false;\n      }\n      var isSelectionMatch = selectionMatchFunction ? selection.filter(function (item) {\n        return selectionMatchFunction(item, rowValue);\n      }).length > 0 : selection.includes(rowValue);\n      return isSelectionMatch || (0, _object.get)(this, '_parentMeta.isGroupSelected');\n    }),\n    canCollapse: (0, _object.computed)('_tree.{enableTree,enableCollapse}', '_rowValue.{children.[],disableCollapse}', function () {\n      if (!(0, _object.get)(this, '_tree.enableTree') || !(0, _object.get)(this, '_tree.enableCollapse')) {\n        return false;\n      }\n      var children = (0, _object.get)(this, '_rowValue.children');\n      return !(0, _object.get)(this, '_rowValue.disableCollapse') && (0, _array.isArray)(children) && (0, _object.get)(children, 'length') > 0;\n    }),\n    depth: (0, _object.computed)('_parentMeta.depth', function () {\n      var parentMeta = (0, _object.get)(this, '_parentMeta');\n      return parentMeta ? (0, _object.get)(parentMeta, 'depth') + 1 : 0;\n    }),\n    first: (0, _object.computed)('_tree.length', function () {\n      if ((0, _object.get)(this, '_tree.length') === 0) {\n        return null;\n      }\n      return (0, _object.get)(this, '_tree').objectAt(0);\n    }),\n    last: (0, _object.computed)('_tree.length', function () {\n      var tree = (0, _object.get)(this, '_tree');\n      return tree.objectAt((0, _object.get)(tree, 'length') - 1);\n    }),\n    next: (0, _object.computed)('_tree.length', function () {\n      var tree = (0, _object.get)(this, '_tree');\n      if ((0, _object.get)(this, 'index') + 1 >= (0, _object.get)(tree, 'length')) {\n        return null;\n      }\n      return tree.objectAt((0, _object.get)(this, 'index') + 1);\n    }),\n    prev: (0, _object.computed)('_tree.length', function () {\n      if ((0, _object.get)(this, 'index') === 0) {\n        return null;\n      }\n      return (0, _object.get)(this, '_tree').objectAt((0, _object.get)(this, 'index') - 1);\n    }),\n    init: function init() {\n      this._super.apply(this, arguments);\n\n      /**\n       The map that contains cell meta information for this row. Is meant to be\n       unique to this row, which is why it is created here. In order to prevent\n       memory leaks, we need to be able to clean the cache manually when the row\n       is destroyed or updated, which is why we use a Map instead of WeakMap\n       */\n      this._cellMetaCache = new Map();\n    },\n    toggleCollapse: function toggleCollapse() {\n      var canCollapse = (0, _object.get)(this, 'canCollapse');\n      if (canCollapse) {\n        (0, _object.set)(this, 'isCollapsed', !(0, _object.get)(this, 'isCollapsed'));\n      }\n    },\n    select: function select() {\n      var _tree$onSelect2;\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        single = _ref.single,\n        toggle = _ref.toggle,\n        range = _ref.range;\n      if ((0, _object.get)(this, 'isDestroying') || (0, _object.get)(this, 'isDestroyed')) {\n        return;\n      }\n      var tree = (0, _object.get)(this, '_tree');\n      var rowValue = (0, _object.get)(this, '_rowValue');\n      var rowIndex = (0, _object.get)(this, 'index');\n      var isGroupSelected = (0, _object.get)(this, 'isGroupSelected');\n      var selectingChildrenSelectsParent = (0, _object.get)(tree, 'selectingChildrenSelectsParent');\n      var rowMetaCache = (0, _object.get)(tree, 'rowMetaCache');\n\n      // create an abort function that the action handler can call to roll back\n      // internal state (e.g. last selected index)\n      var didAbort = false;\n      var abort = function abort() {\n        didAbort = true;\n      };\n      if (single) {\n        var _tree$onSelect;\n        tree._lastSelectedIndex = null;\n        (_tree$onSelect = tree.onSelect) === null || _tree$onSelect === void 0 ? void 0 : _tree$onSelect.call(tree, rowValue, {\n          abort: abort\n        });\n        return;\n      }\n      var oldSelection = (0, _object.get)(tree, 'selection');\n\n      // If the old selection is an array, then we add to it. If not, we restart\n      // the selection as a group.\n      var selection = (0, _array.isArray)(oldSelection) ? new Set(oldSelection) : new Set();\n      if (range) {\n        // Use a set to avoid item duplication\n        var _lastSelectedIndex = tree._lastSelectedIndex;\n        var isFirstIndexDefined = typeof _lastSelectedIndex === 'number';\n        var minIndex = isFirstIndexDefined ? Math.min(_lastSelectedIndex, rowIndex) : rowIndex;\n        var maxIndex = isFirstIndexDefined ? Math.max(_lastSelectedIndex, rowIndex) : rowIndex;\n        for (var i = minIndex; i <= maxIndex; i++) {\n          selection.add(tree.objectAt(i));\n        }\n      } else if (toggle) {\n        if (isGroupSelected) {\n          var meta = this;\n          var currentValue = rowValue;\n\n          // If the parent is selected all of its children are selected. Since\n          // the current row is going to be removed from the selection, add all\n          // the sibling rows at each level of its grouping to be explicitly\n          // selected so their state remains stable.\n          while ((0, _object.get)(meta, '_parentMeta.isSelected')) {\n            meta = (0, _object.get)(meta, '_parentMeta');\n\n            // Iterate from the parent meta to the \"next\" tree node. Since this\n            // is a group it will have at least one child, so there should be at\n            // least one next row to iterate over.\n            var expectedChildDepth = (0, _object.get)(meta, 'depth') + 1;\n            var childIndex = (0, _object.get)(meta, 'index'); // will be incremented by 1 before use\n            var child = void 0;\n            while (child = tree.objectAt(++childIndex)) {\n              // The currentValue is being toggled, don't add it to the selection\n              if (child === currentValue) {\n                continue;\n              }\n\n              // If the depth of the row is lower than the expectedChildDepth a\n              // non-child meta has been found (a sibling or something higher.\n              // That means iterating children is complete, so break.\n              //\n              // If the depth is higher than expected then children of a child\n              // group are being iterated. Skip over them, but don't break since\n              // there may be a leaf child after a group child.\n              var childMeta = rowMetaCache.get(child);\n              var childDepth = (0, _object.get)(childMeta, 'depth');\n              if (childDepth < expectedChildDepth) {\n                break;\n              }\n              if (childDepth > expectedChildDepth) {\n                continue;\n              }\n\n              // Else, this is a child node which must be explictly selected.\n              // Add it to the list.\n              selection.add(child);\n            }\n            selection.delete(currentValue);\n            currentValue = (0, _object.get)(meta, '_rowValue');\n          }\n          selection.delete(currentValue);\n        } else {\n          selection.add(rowValue);\n        }\n      } else {\n        selection.clear();\n        selection.add(rowValue);\n      }\n      var rowMetas = mapSelectionToMeta(this.get('_tree'), selection, rowMetaCache);\n      if (selectingChildrenSelectsParent) {\n        var groupingCounts = new Map();\n        var _iterator = _createForOfIteratorHelper(rowMetas),\n          _step;\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var rowMeta = _step.value;\n            var parentRow = (0, _object.get)(rowMeta, '_parentMeta._rowValue');\n            if (parentRow) {\n              var count = groupingCounts.has(parentRow) ? groupingCounts.get(parentRow) : 0;\n              groupingCounts.set(parentRow, count + 1);\n            }\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n        reduceSelectedRows(selection, groupingCounts, rowMetaCache);\n      }\n      var _iterator2 = _createForOfIteratorHelper(rowMetas),\n        _step2;\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var _rowMeta = _step2.value;\n          var _rowValue = (0, _object.get)(_rowMeta, '_rowValue');\n          var parentMeta = (0, _object.get)(_rowMeta, '_parentMeta');\n          while (parentMeta) {\n            if (selection.has((0, _object.get)(parentMeta, '_rowValue'))) {\n              selection.delete(_rowValue);\n              break;\n            }\n            parentMeta = (0, _object.get)(parentMeta, '_parentMeta');\n          }\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n      selection = (0, _array.A)(Array.from(selection));\n      (_tree$onSelect2 = tree.onSelect) === null || _tree$onSelect2 === void 0 ? void 0 : _tree$onSelect2.call(tree, selection, {\n        abort: abort\n      });\n\n      // if the action handler calls `abort`, do not update the starting point\n      // for a subsequent multi-select\n      if (!didAbort) {\n        tree._lastSelectedIndex = rowIndex;\n      }\n    },\n    destroy: function destroy() {\n      this._super();\n      this._cellMetaCache.clear();\n    }\n  });\n  function reduceSelectedRows(selection, groupingCounts, rowMetaCache) {\n    var reducedGroupingCounts = new Map();\n    var _iterator3 = _createForOfIteratorHelper(groupingCounts.entries()),\n      _step3;\n    try {\n      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n        var _step3$value = _slicedToArray(_step3.value, 2),\n          group = _step3$value[0],\n          count = _step3$value[1];\n        if ((0, _object.get)(group, 'children.length') === count) {\n          selection.add(group);\n          var parentRow = rowMetaCache.get(group).get('_parentMeta._rowValue');\n          if (parentRow) {\n            var currentCount = reducedGroupingCounts.get(parentRow) || groupingCounts.get(parentRow) || 0;\n            reducedGroupingCounts.set(parentRow, currentCount + 1);\n          }\n        }\n      }\n    } catch (err) {\n      _iterator3.e(err);\n    } finally {\n      _iterator3.f();\n    }\n    if (reducedGroupingCounts.size > 0) {\n      reduceSelectedRows(selection, reducedGroupingCounts, rowMetaCache);\n    }\n  }\n  function setupRowMeta(tree, row, parentRow, node) {\n    var rowMetaCache = (0, _object.get)(tree, 'rowMetaCache');\n    var rowMeta = (0, _metaCache.getOrCreate)(row, rowMetaCache, TableRowMeta);\n    var parentRowMeta = parentRow ? rowMetaCache.get(parentRow) : null;\n    (0, _object.set)(rowMeta, '_tree', tree);\n    (0, _object.set)(rowMeta, '_rowValue', row);\n    (0, _object.set)(rowMeta, '_parentMeta', parentRowMeta);\n    if (node) {\n      (0, _object.set)(node, 'rowMeta', rowMeta);\n    }\n  }\n\n  /**\n   * Traverses the tree to set up row meta for every row in the tree.\n   * Usually row metas are lazily created as needed, but it's possible to end up in a state\n   * where a table's `selection` contains rows that do not have a rowMeta (for instance, if they\n   * have not yet been rendered due to occlusion rendering). In this state, there may not be a\n   * rowMeta for every row in the `selection`, so we need to explicitly set them all up at that\n   * time.\n   * This has adverse performance impact, so we lazily call this function only when we find that\n   * the `selection` has some rows with no corresponding rowMeta.\n   *\n   * @param {CollapseTree} tree The collapse tree for this section (body|footer) of the table\n   * @param {object} parentRow The parent row. Only present when called recursively\n   */\n  function setupAllRowMeta(tree, rows) {\n    var parentRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n    var _iterator4 = _createForOfIteratorHelper(rows),\n      _step4;\n    try {\n      for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n        var row = _step4.value;\n        setupRowMeta(tree, row, parentRow);\n        if (row.children && row.children.length) {\n          setupAllRowMeta(tree, row.children, row);\n        }\n      }\n    } catch (err) {\n      _iterator4.e(err);\n    } finally {\n      _iterator4.f();\n    }\n  }\n\n  /**\n   * Maps the selection to an array of rowMetas.\n   *\n   * If any row in the selection does not have a rowMeta, calls `setupAllRowMeta`\n   * to materialize all rowMetas, then tries again to get the rowMeta for that\n   * row. This happens in rare cases where, due to occlusion rendering, a row may\n   * be part of the selection but not in view (and thus have no rowMeta; the\n   * rowMeta is lazily created when the row is rendered).\n   *\n   * If after calling `setupAllRowMeta` the row still does not have a\n   * corresponding rowMeta, it is likely an invalid selection, which can happen when a user\n   * sets the table's selection programmatically and includes a row that is not\n   * actually part of the table. If this happens we `warn` because of the adverse\n   * performance impact (the forced call to `setupAllRowMeta`) that is caused by\n   * spurious rows in the selection.\n   * @param {CollapseTree} tree The collapse tree for this section (body|footer) of the table\n   * @param {Set|Array} selection The selected rows\n   * @return {rowMeta[]} rowMeta for each of the rows in the selection\n   */\n  function mapSelectionToMeta(tree, selection) {\n    var rowMetaCache = tree.get('rowMetaCache');\n    var rowMetas = [];\n    var didSetupAllRowMeta = false;\n    for (var _i = 0, _Array$from = Array.from(selection); _i < _Array$from.length; _i++) {\n      var item = _Array$from[_i];\n      var rowMeta = rowMetaCache.get(item);\n      if (!rowMeta && !didSetupAllRowMeta) {\n        setupAllRowMeta(tree, tree.get('rows'));\n        didSetupAllRowMeta = true;\n        rowMeta = rowMetaCache.get(item);\n      }\n      if (!rowMeta && didSetupAllRowMeta) {\n        (true && (0, _debug.warn)(\"[ember-table] The selection included a row that was not found in the table's rows. This should be avoided as it causes performance issues.\", false, {\n          id: 'ember-table.selection-invalid'\n        }));\n      } else {\n        rowMetas.push(rowMeta);\n      }\n    }\n    return rowMetas;\n  }\n\n  /**\n   Given a list of ordered values and a target value, finds the index of\n   the closest value which does not exceed the target value\n  \n   @param {Array<number>} values - the list of values\n   @param {number} target - the index to find the closest value to\n   @return {number} - the index of the value closest to the target\n   */\n  function closestLessThan(values, target) {\n    var low = 0;\n    var high = values.length - 1;\n    while (low <= high) {\n      var mid = Math.floor((high + low) / 2);\n      if (target < values[mid]) {\n        high = mid - 1;\n      } else if (target > values[mid]) {\n        low = mid + 1;\n      } else {\n        return mid;\n      }\n    }\n\n    // low === high + 1, we always want the lower value\n    return high;\n  }\n\n  /**\n   Single node of a CollapseTree\n   */\n  var CollapseTreeNode = _object.default.extend({\n    _childNodes: null,\n    init: function init() {\n      this._super.apply(this, arguments);\n      var value = (0, _object.get)(this, 'value');\n      var parentValue = (0, _object.get)(this, 'parent.value');\n      var parent = (0, _object.get)(this, 'parent');\n      var tree = (0, _object.get)(this, 'tree');\n      if (!parent) {\n        (0, _object.set)(this, 'isRoot', true);\n      } else {\n        setupRowMeta(tree, value, parentValue, this);\n      }\n      (true && !((0, _array.isArray)((0, _object.get)(value, 'children'))) && (0, _debug.assert)('value must have an array of children', (0, _array.isArray)((0, _object.get)(value, 'children'))));\n      if (parent) {\n        // Changes to the value directly should properly update all computeds on this\n        // node, but we need to manually propagate changes upwards to notify any other\n        // watchers\n        (0, _observer.addObserver)(this, 'length', function () {\n          (0, _ember.notifyPropertyChange)(parent, 'length');\n        });\n      }\n    },\n    destroy: function destroy() {\n      this.cleanChildNodes();\n      this._super.apply(this, arguments);\n    },\n    /**\n     Fully destroys the child nodes in the event that they change or that this\n     node is destroyed. If children are not destroyed, they will leak memory due\n     to dangling references in Ember Meta.\n     */\n    cleanChildNodes: function cleanChildNodes() {\n      if (this._childNodes) {\n        var _iterator5 = _createForOfIteratorHelper(this._childNodes),\n          _step5;\n        try {\n          for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n            var child = _step5.value;\n            if (child instanceof CollapseTreeNode) {\n              child.destroy();\n            }\n          }\n        } catch (err) {\n          _iterator5.e(err);\n        } finally {\n          _iterator5.f();\n        }\n        this._childNodes = null;\n      }\n    },\n    /**\n     Whether or not the node is leaf of the CollapseTree. A node is a leaf if\n     the wrapped value's children have no children. If so, there is no need to\n     create another level of nodes in the tree - true leaves of the passed in\n     value tree don't require any custom logic, so we can index directly into\n     the array of children in `objectAt`.\n      @type boolean\n     */\n    isLeaf: (0, _object.computed)('value.children.@each.children', 'isRoot', 'tree.enableTree', function () {\n      if ((0, _object.get)(this, 'isRoot') && !(0, _object.get)(this, 'tree.enableTree')) {\n        return true;\n      }\n      return !(0, _object.get)(this, 'value.children').some(function (child) {\n        return (0, _array.isArray)((0, _object.get)(child, 'children'));\n      });\n    }),\n    sortedChildren: (0, _object.computed)('value.children.[]', 'tree.{sorts.[],sortFunction,compareFunction,sortEmptyLast}', function () {\n      var valueChildren = (0, _object.get)(this, 'value.children');\n      var sorts = (0, _object.get)(this, 'tree.sorts');\n      var sortFunction = (0, _object.get)(this, 'tree.sortFunction');\n      var compareFunction = (0, _object.get)(this, 'tree.compareFunction');\n      var sortEmptyLast = (0, _object.get)(this, 'tree.sortEmptyLast');\n      if (sortFunction && compareFunction && sorts && (0, _object.get)(sorts, 'length') > 0) {\n        valueChildren = (0, _sort.mergeSort)(valueChildren, function (itemA, itemB) {\n          return sortFunction(itemA, itemB, sorts, compareFunction, sortEmptyLast);\n        });\n      }\n      return valueChildren;\n    }),\n    /**\n     The children of this node, if they exist. Children can be other nodes, or\n     spans (arrays) of leaf value-nodes. For instance:\n      ```\n     A\n     └── B\n     ├── C\n     └── D\n     └── E\n     ```\n      In this example, A would have the following children:\n      ```\n     children = [\n     [B, C],\n     Node(D)\n     ];\n     ```\n      This allows us to do a binary search on the list of children without\n     creating a node for each span, arrays simply represent x-children in\n     a segment before a given node.\n      @type Array<Node|Array<object>>\n     */\n    childNodes: (0, _object.computed)('sortedChildren.[]', 'isLeaf', function () {\n      var _this = this;\n      this.cleanChildNodes();\n      if ((0, _object.get)(this, 'isLeaf')) {\n        return null;\n      }\n      var sortedChildren = (0, _object.get)(this, 'sortedChildren');\n      var tree = (0, _object.get)(this, 'tree');\n      var children = [];\n      var sliceStart = false;\n      sortedChildren.forEach(function (child, index) {\n        var grandchildren = (0, _object.get)(child, 'children');\n        if ((0, _array.isArray)(grandchildren)) {\n          if (sliceStart !== false) {\n            children.push(sortedChildren.slice(sliceStart, index));\n            sliceStart = false;\n          }\n          children.push(CollapseTreeNode.create({\n            value: child,\n            parent: _this,\n            tree: tree\n          }));\n        } else if (sliceStart === false) {\n          sliceStart = index;\n        }\n      });\n      if (sliceStart !== false) {\n        children.push(sortedChildren.slice(sliceStart));\n      }\n      this._childNodes = children;\n      return children;\n    }),\n    /**\n     The length of the node. Branches in three directions:\n      1. If the node is collapsed, then the length of the node is 1, the\n     node itself. This means that the parent node will only index into\n     this child if it is trying to get exactly the child node,\n     effectively hiding its children.\n     2. If the node is a leaf, then the length is the node itself plus the\n     length of its value-children.\n     3. Otherwise, the length is the sum of the lengths of its children.\n     */\n    length: (0, _object.computed)('childNodes.[]', 'sortedChildren.[]', 'isLeaf', 'rowMeta.isCollapsed', 'tree.enableTree', function () {\n      if ((0, _object.get)(this, 'rowMeta.isCollapsed') === true) {\n        return 1;\n      } else if ((0, _object.get)(this, 'isLeaf')) {\n        return 1 + (0, _object.get)(this, 'sortedChildren.length');\n      } else {\n        return 1 + (0, _object.get)(this, 'childNodes').reduce(function (sum, child) {\n          return sum + (0, _object.get)(child, 'length');\n        }, 0);\n      }\n    }),\n    /**\n     Calculates a list of the summation of offsets of children to run a binary\n     search against. Given:\n      ```\n     A\n     ├── B\n     │   ├── C\n     │   └── D\n     ├── E(c)\n     │   ├── F\n     │   └── G\n     └── H\n     │   ├── I\n     │   └── J\n     │       └── K\n     └── L\n     └── M\n     ```\n      The offsetList for A would be: `[0, 3, 6, 10, 11]`. Each item in this\n     list is the offset of the corresponding child, or the summation of the\n     lengths of all children preceding it. It is effectively the starting\n     index of that child.\n      So, if I'm trying to find index 9 in A, which is item K (not counting A\n     itself), then I'm going to want to traverse down H, which is the 3rd child.\n     I run a binary search against these offsets, which are ordered, and find\n     the closest starting index which is strictly less than 9, which is the 3rd\n     index. I know I can then recurse down that node and I should eventually\n     find the item I'm after.\n     */\n    offsetList: (0, _object.computed)('length', 'isLeaf', function () {\n      if ((0, _object.get)(this, 'isLeaf')) {\n        return null;\n      }\n      var offset = 0;\n      var offsetList = [];\n      var _iterator6 = _createForOfIteratorHelper((0, _object.get)(this, 'childNodes')),\n        _step6;\n      try {\n        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n          var child = _step6.value;\n          offsetList.push(offset);\n          offset += (0, _object.get)(child, 'length');\n        }\n      } catch (err) {\n        _iterator6.e(err);\n      } finally {\n        _iterator6.f();\n      }\n      return offsetList;\n    }),\n    /**\n     Finds the object at the given index, where an index n is defined as the n-th\n     item visited during a depth first traversal of the tree. To do this, we either\n      1. Return the current node at index 0\n     2. If the node is a leaf, return the value child at the corresponding index\n     3. Otherwise, find the correct child to walk down to and call `objectAt` on it\n     with a normalized index\n      `objectAt` also tracks the depth to pass back as meta information, something\n     that is useful for displaying the tree as a list. `index` and `depth` are\n     normalized as we traverse the tree, every time you \"pass\" a node you subtract\n     it from the index for the next `objectAt` call, and you add 1 to depth for\n     every `objectAt` call.\n      @param {number} index - the index to find\n     @param {Array<object>} parents - the parents of the current node in the traversal\n     @return {{ value: object, parents: Array<object> }}\n     */\n    objectAt: function objectAt(index) {\n      (true && !(index >= 0 && index < (0, _object.get)(this, 'length')) && (0, _debug.assert)('index must be gte than 0 and less than the length of the node', index >= 0 && index < (0, _object.get)(this, 'length'))); // The first index in a node is the node itself, since nodes are addressable\n      if (index === 0) {\n        return (0, _object.get)(this, 'value');\n      }\n\n      // Passed this node, remove it from the index and go one level deeper\n      var normalizedIndex = index - 1;\n      var tree = (0, _object.get)(this, 'tree');\n      if ((0, _object.get)(this, 'isLeaf')) {\n        var value = (0, _array2.objectAt)((0, _object.get)(this, 'sortedChildren'), normalizedIndex);\n        setupRowMeta(tree, value, (0, _object.get)(this, 'value'));\n        return value;\n      }\n      var childNodes = (0, _object.get)(this, 'childNodes');\n      var offsetList = (0, _object.get)(this, 'offsetList');\n      var offsetIndex = closestLessThan(offsetList, normalizedIndex);\n      normalizedIndex = normalizedIndex - offsetList[offsetIndex];\n      var child = childNodes[offsetIndex];\n      if (Array.isArray(child)) {\n        var _value = child[normalizedIndex];\n        setupRowMeta(tree, _value, (0, _object.get)(this, 'value'));\n        return _value;\n      }\n      return child.objectAt(normalizedIndex);\n    }\n  });\n\n  /**\n   The goal of the collapse tree is provide a data structure that:\n  \n   1. Given an index n, can find the n-th node visited in a depth-first-walk\n   of the tree\n   2. Can \"hide\" or \"collapse\" nodes, so that their children are not walked\n  \n   So given a tree like this, where the (c) annotation means \"isCollapsed\":\n  \n   ```\n   A\n   ├── B\n   │   ├── C\n   │   └── D\n   ├── E(c)\n   │   ├── F\n   │   └── G\n   └── H\n   │   ├── I\n   │   └── J\n   │       └── K\n   └── L\n   ```\n  \n   `objectAt(0) === A`, `objectAt(2) === C`, `objectAt(4) === E`, and\n   `objectAt(5) === H`\n  \n   We also want to wrap this structure around a pre-existing tree that is a much\n   simpler POJO with the shape:\n  \n   ```json\n   {\n      isCollapsed: false,\n      children: [{\n        isCollapsed: true,\n        children: []\n      }]\n    }\n   ```\n  \n   This allows us to provide a simple API to users while being able to index into\n   their tree quickly and turn it into a list/table representation, without exposing\n   any internal implementation details.\n  \n   To do this, each node in the tree has a `length` equal to the lengths of its\n   children, and we do a binary search of each layer of the tree to find the closest\n   node to the index. We traverse downward until we have the correct node, getting\n   there in O(log(n)) time at worst (where n is the average number of nodes in a layer).\n  \n   Whenever a level of the tree changes (e.g. a node is added or removed) we must\n   rebuild the subtree for that level. In order to keep tree construction and\n   allocation costs low, we also do not create nodes for leaf children, since there is\n   no need - they are length 1 and have no children, so no custom. Our tree saves an\n   order of magnitude of space and allocation costs this way.\n   */\n  var _default = _exports.default = _object.default.extend(_array.default, {\n    init: function init() {\n      var _this2 = this;\n      this._super.apply(this, arguments);\n\n      // Whenever the root node's length changes we need to propagate the change to\n      // users of the tree, and since the tree is meant to work like an array we should\n      // trigger a change on the `[]` key as well.\n      (0, _observer.addObserver)(this, 'root.length', function () {\n        return (0, _ember.notifyPropertyChange)(_this2, '[]');\n      });\n    },\n    destroy: function destroy() {\n      if (this._root) {\n        this._root.destroy();\n      }\n      this._super.apply(this, arguments);\n    },\n    /*\n      The root node of the tree. Either wraps a true root, or a fake one created\n      if the root is an array.\n    */\n    root: (0, _object.computed)('rows', function () {\n      if (this._root) {\n        this._root.destroy();\n      }\n      var rows = (0, _object.get)(this, 'rows');\n      this._root = CollapseTreeNode.create({\n        value: {\n          children: rows\n        },\n        tree: this\n      });\n      return this._root;\n    }),\n    /**\n      @param {number} index - the index to find\n     @return {{ value: object, parents: Array<object> }}\n     */\n    objectAt: function objectAt(index) {\n      if (index >= (0, _object.get)(this, 'length') || index < 0) {\n        return undefined;\n      }\n\n      // We add a \"fake\" top level node to account for the root node\n      var normalizedIndex = index + 1;\n      var result = (0, _object.get)(this, 'root').objectAt(normalizedIndex);\n      var meta = this.get('rowMetaCache').get(result);\n\n      // Set the perceived index on the meta. It should be safe to do this here, since\n      // the row will always be retrieved via `objectAt` before being used.\n      (0, _object.set)(meta, 'index', index);\n      return result;\n    },\n    forEach: function forEach(fn) {\n      var length = (0, _object.get)(this, 'length');\n      for (var i = 0; i < length; i++) {\n        fn(this.objectAt(i), i);\n      }\n    },\n    /**\n     Normalized length of the tree\n      @type {number}\n     */\n    length: (0, _object.computed)('root.length', function () {\n      // Remove the root level node from the length count\n      return (0, _object.get)(this, 'root.length') - 1;\n    })\n  });\n});","define(\"ember-table/-private/column-tree\", [\"exports\", \"@ember/object\", \"ember-table/-private/utils/observer\", \"@ember/array\", \"@ember/object/computed\", \"ember-raf-scheduler\", \"ember-table/-private/utils/array\", \"ember-table/-private/utils/sort\", \"@ember/utils\", \"ember-table/-private/utils/element\", \"ember-table/-private/utils/reorder-indicators\", \"ember-table/-private/utils/ember\", \"@ember/debug\"], function (_exports, _object, _observer, _array, _computed, _emberRafScheduler, _array2, _sort, _utils, _element, _reorderIndicators, _ember, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.WIDTH_CONSTRAINT = _exports.RESIZE_MODE = _exports.FILL_MODE = void 0;\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /* eslint-disable getter-return */\n  var SCROLL_THRESHOLD = 50;\n  var DEFAULT_COLUMN_WIDTH = 100;\n  var DEFAULT_MIN_WIDTH = 50;\n  var DEFAULT_MAX_WIDTH = Infinity;\n  var LOOP_COUNT_GUARD = 500;\n  var RESIZE_MODE = _exports.RESIZE_MODE = {\n    STANDARD: 'standard',\n    FLUID: 'fluid'\n  };\n  var FILL_MODE = _exports.FILL_MODE = {\n    EQUAL_COLUMN: 'equal-column',\n    FIRST_COLUMN: 'first-column',\n    LAST_COLUMN: 'last-column',\n    NTH_COLUMN: 'nth-column'\n  };\n  var WIDTH_CONSTRAINT = _exports.WIDTH_CONSTRAINT = {\n    NONE: 'none',\n    EQ_CONTAINER: 'eq-container',\n    EQ_CONTAINER_SLACK: 'eq-container-slack',\n    GTE_CONTAINER: 'gte-container',\n    GTE_CONTAINER_SLACK: 'gte-container-slack',\n    LTE_CONTAINER: 'lte-container'\n  };\n\n  /**\n   * Divides x into y pieces where all y pieces are rounded\n   * and sum to x. Assumes x is already rounded.\n   * Returns a list of the pieces.\n   *\n   * For example:\n   * 10 / 3 => [4, 3, 3]\n   * -11 / 2 => [-6, -5]\n   */\n  function divideRounded(x, n) {\n    var neg = x < 0 === n < 0 ? 1 : -1;\n    n = Math.abs(n);\n    x = Math.abs(x);\n    var z = Math.floor(x / n);\n    var err = x - n * z;\n    var result = Array(n);\n    result.fill(neg * (z + 1), 0, err);\n    result.fill(neg * z, err);\n    return result;\n  }\n  var TableColumnMeta = _object.default.extend({\n    // If no width is set on the column itself, we cache a temporary width on the\n    // meta object. This is set to the default width.\n    _width: DEFAULT_COLUMN_WIDTH,\n    isLeaf: (0, _computed.readOnly)('_node.isLeaf'),\n    isFixed: (0, _computed.readOnly)('_node.isFixed'),\n    isSortable: (0, _computed.readOnly)('_node.isSortable'),\n    isResizable: (0, _computed.readOnly)('_node.isResizable'),\n    isReorderable: (0, _computed.readOnly)('_node.isReorderable'),\n    isSlack: (0, _computed.readOnly)('_node.isSlack'),\n    width: (0, _computed.readOnly)('_node.width'),\n    offsetLeft: (0, _computed.readOnly)('_node.offsetLeft'),\n    offsetRight: (0, _computed.readOnly)('_node.offsetRight'),\n    rowSpan: (0, _object.computed)('isLeaf', '_node.{depth,tree.root.maxChildDepth}', function () {\n      if (!this.get('isLeaf')) {\n        return 1;\n      }\n      var maxDepth = this.get('_node.tree.root.maxChildDepth');\n      var depth = this.get('_node.depth');\n      return maxDepth - (depth - 1);\n    }),\n    columnSpan: (0, _object.computed)('isLeaf', '_node.leaves.length', function () {\n      if (this.get('isLeaf')) {\n        return 1;\n      }\n      return this.get('_node.leaves.length');\n    }),\n    index: (0, _object.computed)('isLeaf', '_node.offsetIndex', function () {\n      if (this.get('isLeaf')) {\n        return this.get('_node.offsetIndex');\n      }\n    }),\n    isLastRendered: (0, _computed.readOnly)('_node.isLastRendered'),\n    sortIndex: (0, _object.computed)('_node.{tree.sorts.[],column.valuePath}', function () {\n      var valuePath = this.get('_node.column.valuePath');\n      var sorts = this.get('_node.tree.sorts');\n      var sortIndex = 0;\n      for (var i = 0; i < (0, _object.get)(sorts, 'length'); i++) {\n        var sorting = (0, _array2.objectAt)(sorts, i);\n        if ((0, _object.get)(sorting, 'valuePath') === valuePath) {\n          sortIndex = i + 1;\n          break;\n        }\n      }\n      return sortIndex;\n    }),\n    isSorted: (0, _computed.gt)('sortIndex', 0),\n    isMultiSorted: (0, _computed.gt)('_node.tree.sorts.length', 1),\n    isSortedAsc: (0, _object.computed)('_node.tree.sorts.[]', 'sortIndex', function () {\n      var sortIndex = this.get('sortIndex');\n      var sorts = this.get('_node.tree.sorts');\n      return (0, _object.get)((0, _array2.objectAt)(sorts, sortIndex - 1), 'isAscending');\n    })\n  });\n\n  /**\n    Single node of a ColumnTree\n  */\n  var ColumnTreeNode = _object.default.extend({\n    _subcolumnNodes: null,\n    isSlack: false,\n    init: function init() {\n      var _this = this;\n      this._super.apply(this, arguments);\n      var tree = (0, _object.get)(this, 'tree');\n      var parent = (0, _object.get)(this, 'parent');\n      var column = (0, _object.get)(this, 'column');\n      if (!parent) {\n        this.isRoot = true;\n      } else {\n        var columnMetaCache = (0, _object.get)(tree, 'columnMetaCache');\n        var meta = columnMetaCache.getOrCreate(column, TableColumnMeta);\n        (0, _object.set)(meta, '_node', this);\n        meta.registerElement = function () {\n          return _this.registerElement.apply(_this, arguments);\n        };\n        meta.startResize = function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          return tree.startResize.apply(tree, [_this].concat(args));\n        };\n        meta.updateResize = function () {\n          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            args[_key2] = arguments[_key2];\n          }\n          return tree.updateResize.apply(tree, [_this].concat(args));\n        };\n        meta.endResize = function () {\n          for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n            args[_key3] = arguments[_key3];\n          }\n          return tree.endResize.apply(tree, [_this].concat(args));\n        };\n        meta.startReorder = function () {\n          for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n            args[_key4] = arguments[_key4];\n          }\n          return tree.startReorder.apply(tree, [_this].concat(args));\n        };\n        meta.updateReorder = function () {\n          for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n            args[_key5] = arguments[_key5];\n          }\n          return tree.updateReorder.apply(tree, [_this].concat(args));\n        };\n        meta.endReorder = function () {\n          for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n            args[_key6] = arguments[_key6];\n          }\n          return tree.endReorder.apply(tree, [_this].concat(args));\n        };\n\n        // Changes to the value directly should properly update all computeds on this\n        // node, but we need to manually propagate changes upwards to notify any other\n        // watchers\n        this._notifyMaxChildDepth = function () {\n          return (0, _ember.notifyPropertyChange)(parent, 'maxChildDepth');\n        };\n        this._notifyLeaves = function () {\n          return (0, _ember.notifyPropertyChange)(parent, 'leaves');\n        };\n        (0, _observer.addObserver)(this, 'maxChildDepth', this._notifyMaxChildDepth);\n        (0, _observer.addObserver)(this, 'leaves.[]', this._notifyLeaves);\n      }\n    },\n    destroy: function destroy() {\n      this.cleanSubcolumnNodes();\n      this._super.apply(this, arguments);\n    },\n    /**\n      Fully destroys the child nodes in the event that they change or that this\n      node is destroyed. If children are not destroyed, they will leak memory due\n      to dangling references in Ember Meta.\n    */\n    cleanSubcolumnNodes: function cleanSubcolumnNodes() {\n      if (this._subcolumnNodes !== null) {\n        this._subcolumnNodes.forEach(function (n) {\n          return n.destroy();\n        });\n        this._subcolumnNodes = null;\n      }\n    },\n    subcolumnNodes: (0, _object.computed)('column.subcolumns.[]', 'tree.widthConstraint', function () {\n      this.cleanSubcolumnNodes();\n      if ((0, _object.get)(this, 'isLeaf')) {\n        return;\n      }\n      var tree = (0, _object.get)(this, 'tree');\n      var parent = this;\n      this._subcolumnNodes = (0, _array.A)((0, _object.get)(this, 'column.subcolumns').map(function (column) {\n        return ColumnTreeNode.create({\n          column: column,\n          tree: tree,\n          parent: parent\n        });\n      }));\n      var isRoot = (0, _object.get)(this, 'isRoot');\n      var isSlackModeEnabled = (0, _object.get)(tree, 'isSlackModeEnabled');\n      if (isRoot && isSlackModeEnabled) {\n        var slackColumnNode = ColumnTreeNode.create({\n          column: {\n            isResizable: false,\n            isReorderable: false,\n            minWidth: 0,\n            width: 0\n          },\n          tree: tree,\n          parent: parent,\n          isSlack: true\n        });\n        this._subcolumnNodes.push(slackColumnNode);\n      }\n      return this._subcolumnNodes;\n    }),\n    isLeaf: (0, _object.computed)('column.subcolumns.[]', 'isRoot', function () {\n      var subcolumns = (0, _object.get)(this, 'column.subcolumns');\n      if ((0, _object.get)(this, 'isRoot')) {\n        return false;\n      }\n      return !subcolumns || (0, _object.get)(subcolumns, 'length') === 0;\n    }),\n    isSortable: (0, _object.computed)('column.isSortable', 'tree.enableSort', function () {\n      var enableSort = (0, _object.get)(this, 'tree.enableSort');\n      var valuePath = (0, _object.get)(this, 'column.valuePath');\n      var isSortable = (0, _object.get)(this, 'column.isSortable');\n      var isLeaf = (0, _object.get)(this, 'isLeaf');\n      return isLeaf === true && enableSort !== false && isSortable !== false && typeof valuePath === 'string';\n    }),\n    isReorderable: (0, _object.computed)('column.isReorderable', 'tree.enableReorder', function () {\n      var enableReorder = (0, _object.get)(this, 'tree.enableReorder');\n      var isReorderable = (0, _object.get)(this, 'column.isReorderable');\n      return enableReorder !== false && isReorderable !== false;\n    }),\n    isResizable: (0, _object.computed)('column.isResizable', 'tree.enableResize', function () {\n      var isLeaf = (0, _object.get)(this, 'isLeaf');\n      if (isLeaf) {\n        var enableResize = (0, _object.get)(this, 'tree.enableResize');\n        var isResizable = (0, _object.get)(this, 'column.isResizable');\n        return enableResize !== false && isResizable !== false;\n      } else {\n        var subcolumns = (0, _object.get)(this, 'subcolumnNodes');\n        return subcolumns.some(function (s) {\n          return (0, _object.get)(s, 'isResizable');\n        });\n      }\n    }),\n    isFixed: (0, _object.computed)('parent.{isFixed,isRoot}', 'column.isFixed', function () {\n      if ((0, _object.get)(this, 'parent.isRoot')) {\n        return (0, _object.get)(this, 'column.isFixed');\n      }\n      return (0, _object.get)(this, 'parent.isFixed');\n    }),\n    depth: (0, _object.computed)('parent.depth', function () {\n      if ((0, _object.get)(this, 'parent')) {\n        return (0, _object.get)(this, 'parent.depth') + 1;\n      }\n      return 0;\n    }),\n    maxChildDepth: (0, _object.computed)('isLeaf', 'subcolumns.@each.depth', function () {\n      if ((0, _object.get)(this, 'isLeaf')) {\n        return (0, _object.get)(this, 'depth');\n      }\n      return Math.max.apply(Math, _toConsumableArray((0, _object.get)(this, 'subcolumnNodes').map(function (s) {\n        return (0, _object.get)(s, 'maxChildDepth');\n      })));\n    }),\n    leaves: (0, _object.computed)('isLeaf', 'subcolumnNodes.{[],@each.leaves}', function () {\n      if ((0, _object.get)(this, 'isLeaf')) {\n        return [this];\n      }\n      return (0, _object.get)(this, 'subcolumnNodes').reduce(function (leaves, subcolumn) {\n        leaves.push.apply(leaves, _toConsumableArray((0, _object.get)(subcolumn, 'leaves')));\n        return leaves;\n      }, (0, _array.A)());\n    }),\n    minWidth: (0, _object.computed)('column.minWidth', function () {\n      if ((0, _object.get)(this, 'isLeaf')) {\n        var columnMinWidth = (0, _object.get)(this, 'column.minWidth');\n        return typeof columnMinWidth === 'number' ? columnMinWidth : DEFAULT_MIN_WIDTH;\n      }\n      return (0, _object.get)(this, 'subcolumnNodes').reduce(function (sum, subcolumn) {\n        var subcolumnMinWidth = (0, _object.get)(subcolumn, 'minWidth');\n        return sum + subcolumnMinWidth;\n      }, 0);\n    }),\n    maxWidth: (0, _object.computed)('column.maxWidth', function () {\n      if ((0, _object.get)(this, 'isLeaf')) {\n        var columnMaxWidth = (0, _object.get)(this, 'column.maxWidth');\n        return typeof columnMaxWidth === 'number' ? columnMaxWidth : DEFAULT_MAX_WIDTH;\n      }\n      return (0, _object.get)(this, 'subcolumnNodes').reduce(function (sum, subcolumn) {\n        var subcolumnMaxWidth = (0, _object.get)(subcolumn, 'maxWidth');\n        return sum + subcolumnMaxWidth;\n      }, 0);\n    }),\n    width: (0, _object.computed)('isLeaf', 'subcolumnNodes.@each.width', 'column.width', {\n      get: function get() {\n        if ((0, _object.get)(this, 'isLeaf')) {\n          var column = (0, _object.get)(this, 'column');\n          var columnWidth = (0, _object.get)(column, 'width');\n          if (typeof columnWidth === 'number') {\n            return columnWidth;\n          } else {\n            var meta = (0, _object.get)(this, 'tree.columnMetaCache').get(column);\n            return (0, _object.get)(meta, '_width');\n          }\n        }\n        return (0, _object.get)(this, 'subcolumnNodes').reduce(function (sum, subcolumn) {\n          var subcolumnWidth = (0, _object.get)(subcolumn, 'width');\n          return sum + subcolumnWidth;\n        }, 0);\n      },\n      set: function set(key, newWidth) {\n        var oldWidth = (0, _object.get)(this, 'width');\n        var isResizable = (0, _object.get)(this, 'isResizable');\n        var isSlack = (0, _object.get)(this, 'isSlack');\n        if (!isResizable && !isSlack) {\n          return oldWidth;\n        }\n        var delta = newWidth - oldWidth;\n        var minWidth = (0, _object.get)(this, 'minWidth');\n        var maxWidth = (0, _object.get)(this, 'maxWidth');\n        delta = Math.max(Math.min(oldWidth + delta, maxWidth), minWidth) - oldWidth;\n        if (delta === 0) {\n          return oldWidth;\n        }\n        if ((0, _object.get)(this, 'isLeaf')) {\n          var column = (0, _object.get)(this, 'column');\n          var columnWidth = (0, _object.get)(column, 'width');\n          var width = oldWidth + delta;\n          if (typeof columnWidth === 'number') {\n            (0, _object.set)(column, 'width', width);\n          } else {\n            var meta = (0, _object.get)(this, 'tree.columnMetaCache').get(column);\n            (0, _object.set)(meta, '_width', width);\n          }\n          return width;\n        } else {\n          var subcolumns = (0, _object.get)(this, 'subcolumnNodes');\n\n          // Delta can only be rendered at a pixel level of precision in tables in\n          // some browsers, so we round and distribute the remainder as well. We also\n          // don't know when we may hit a constraint (e.g. minWidth) so we have to do\n          // this repeatedly. We take the largest chunk we can and try to fit it into\n          // each piece in a loop.\n\n          // We distribute chunks to the columns starting from the column with the\n          // smallest width to the column with the largest width.\n          var sortedSubcolumns = subcolumns.sortBy('width').filter(function (n) {\n            return (0, _object.get)(n, 'isResizable');\n          }).reverse();\n          var loopCount = 0;\n          var prevDelta = 0;\n          delta = delta > 0 ? Math.floor(delta) : Math.ceil(delta);\n          while (delta !== 0) {\n            var deltaChunks = divideRounded(delta, sortedSubcolumns.length);\n            for (var i = 0; i < deltaChunks.length; i++) {\n              var subcolumn = sortedSubcolumns[i];\n              var deltaChunk = deltaChunks[i];\n              var _oldWidth = (0, _object.get)(subcolumn, 'width');\n              var targetWidth = _oldWidth + deltaChunk;\n              (0, _object.set)(subcolumn, 'width', targetWidth);\n              var _newWidth = (0, _object.get)(subcolumn, 'width');\n\n              // subtract the amount that changed, if any\n              delta -= _newWidth - _oldWidth;\n              if (delta === 0) {\n                break;\n              }\n            }\n            delta = delta > 0 ? Math.floor(delta) : Math.ceil(delta);\n\n            // If we weren't able to change the delta at all, then we hit a hard\n            // barrier. This can happen when a table has too many columns to size\n            // down, for instance.\n            if (prevDelta === delta) {\n              break;\n            }\n            prevDelta = delta;\n            loopCount++;\n            if (loopCount > LOOP_COUNT_GUARD) {\n              throw new Error('loop count exceeded guard while distributing width');\n            }\n          }\n          return (0, _object.get)(this, 'width');\n        }\n      }\n    }),\n    contentWidth: (0, _object.computed)('subcolumnNodes.@each.{isSlack,width}', function () {\n      return this.get('subcolumnNodes').reduce(function (sum, column) {\n        return column.get('isSlack') ? sum : sum + column.get('width');\n      }, 0);\n    }),\n    offsetIndex: (0, _object.computed)('parent.{offsetIndex,subcolumnNodes.[]}', function () {\n      var parent = (0, _object.get)(this, 'parent');\n      if (!parent) {\n        return 0;\n      }\n      var subcolumns = (0, _object.get)(parent, 'subcolumnNodes');\n      var offsetIndex = (0, _object.get)(parent, 'offsetIndex');\n      var _iterator = _createForOfIteratorHelper(subcolumns),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var column = _step.value;\n          if (column === this) {\n            break;\n          }\n          offsetIndex += 1;\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n      return offsetIndex;\n    }),\n    offsetLeft: (0, _object.computed)('parent.{offsetLeft,width}', function () {\n      var parent = (0, _object.get)(this, 'parent');\n      if (!parent) {\n        return 0;\n      }\n      var subcolumns = (0, _object.get)(parent, 'subcolumnNodes');\n      var offsetLeft = (0, _object.get)(parent, 'offsetLeft');\n      var _iterator2 = _createForOfIteratorHelper(subcolumns),\n        _step2;\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var column = _step2.value;\n          if (column === this) {\n            break;\n          }\n          offsetLeft += (0, _object.get)(column, 'width');\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n      return offsetLeft;\n    }),\n    offsetRight: (0, _object.computed)('parent.{offsetRight,width}', function () {\n      var parent = (0, _object.get)(this, 'parent');\n      if (!parent) {\n        return 0;\n      }\n      var subcolumns = (0, _object.get)(parent, 'subcolumnNodes').slice().reverse();\n      var offsetRight = (0, _object.get)(parent, 'offsetRight');\n      var _iterator3 = _createForOfIteratorHelper(subcolumns),\n        _step3;\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var column = _step3.value;\n          if (column === this) {\n            break;\n          }\n          offsetRight += (0, _object.get)(column, 'width');\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n      return offsetRight;\n    }),\n    /**\n     * Value is `true` if any of the following are true:\n     *\n     * 1) this is the slack leaf and has non-zero width\n     * 2) this is the rightmost leaf and there is no slack leaf\n     * 3) this is the rightmost leaf and the slack leaf has zero width\n     *\n     * Use this to style the rightmost column.\n     */\n    isLastRendered: (0, _object.computed)('tree.root.leaves.length', 'tree.root.leaves.lastObject.{isSlack,width}', 'offsetIndex', 'isLeaf', 'isSlack', 'width', function () {\n      var isLeaf = (0, _object.get)(this, 'isLeaf');\n      if (!isLeaf) {\n        return false;\n      }\n      var tree = (0, _object.get)(this, 'tree');\n      var leaves = (0, _object.get)(tree, 'root.leaves');\n      var lastLeaf = (0, _object.get)(leaves, 'lastObject');\n\n      // calculate index from the right\n      var offsetIndex = (0, _object.get)(this, 'offsetIndex');\n      var rightOffsetIndex = leaves.length - offsetIndex - 1;\n      if (rightOffsetIndex === 0) {\n        var isSlack = (0, _object.get)(this, 'isSlack');\n        var width = (0, _object.get)(this, 'width');\n        return !isSlack || width > 0;\n      } else if (rightOffsetIndex === 1 && (0, _object.get)(lastLeaf, 'isSlack')) {\n        return (0, _object.get)(lastLeaf, 'width') === 0;\n      }\n      return false;\n    }),\n    registerElement: function registerElement(element) {\n      this.element = element;\n    }\n  });\n  var _default = _exports.default = _object.default.extend({\n    init: function init() {\n      this._super.apply(this, arguments);\n      this.token = new _emberRafScheduler.Token();\n      this._root = null;\n      this._sortColumnsByFixed = this.sortColumnsByFixed.bind(this);\n      this._ensureWidthConstraint = this.ensureWidthConstraint.bind(this);\n      (0, _observer.addObserver)(this, 'columns.@each.isFixed', this._sortColumnsByFixed);\n      (0, _observer.addObserver)(this, 'widthConstraint', this._ensureWidthConstraint);\n    },\n    destroy: function destroy() {\n      this.token.cancel();\n      if (this._root) {\n        this._root.destroy();\n      }\n      (0, _observer.removeObserver)(this, 'columns.@each.isFixed', this._sortColumnsByFixed);\n      (0, _observer.removeObserver)(this, 'widthConstraint', this._ensureWidthConstraint);\n      this._super.apply(this, arguments);\n    },\n    root: (0, _object.computed)('columns', function () {\n      if (this._root) {\n        this._root.destroy();\n      }\n      var columns = (0, _object.get)(this, 'columns');\n      this._root = ColumnTreeNode.create({\n        column: {\n          subcolumns: columns\n        },\n        tree: this\n      });\n      return this._root;\n    }),\n    rows: (0, _object.computed)('root.{maxChildDepth,leaves.[]}', function () {\n      var rows = (0, _array.A)();\n      var root = (0, _object.get)(this, 'root');\n      var maxDepth = (0, _object.get)(root, 'maxChildDepth');\n      var previousLevel = [root];\n      for (var i = 0; i < maxDepth; i++) {\n        var currentLevel = previousLevel.reduce(function (children, node) {\n          if (!(0, _object.get)(node, 'isLeaf')) {\n            children.push.apply(children, _toConsumableArray((0, _object.get)(node, 'subcolumnNodes')));\n          }\n          return children;\n        }, []);\n        var columns = currentLevel.map(function (node) {\n          return (0, _object.get)(node, 'column');\n        });\n        rows.pushObject((0, _array.A)(columns));\n        previousLevel = currentLevel;\n      }\n      return rows;\n    }),\n    leaves: (0, _object.computed)('root.leaves.[]', function () {\n      return (0, _array.A)((0, _object.get)(this, 'root.leaves').map(function (n) {\n        return n.column;\n      }));\n    }),\n    leftFixedNodes: (0, _object.computed)('root.subcolumnNodes.@each.isFixed', function () {\n      return (0, _object.get)(this, 'root.subcolumnNodes').filterBy('isFixed', 'left');\n    }),\n    rightFixedNodes: (0, _object.computed)('root.subcolumnNodes.@each.isFixed', function () {\n      return (0, _object.get)(this, 'root.subcolumnNodes').filterBy('isFixed', 'right');\n    }),\n    unfixedNodes: (0, _object.computed)('root.subcolumnNodes.@each.isFixed', function () {\n      return (0, _object.get)(this, 'root.subcolumnNodes').filter(function (s) {\n        return !(0, _object.get)(s, 'isFixed');\n      });\n    }),\n    scrollBounds: (0, _object.computed)('leftFixedNodes.@each.width', 'rightFixedNodes.@each.width', function () {\n      var _getInnerClientRect = (0, _element.getInnerClientRect)(this.container),\n        containerLeft = _getInnerClientRect.left,\n        containerRight = _getInnerClientRect.right;\n      containerLeft += (0, _object.get)(this, 'leftFixedNodes').reduce(function (sum, n) {\n        return sum + (0, _object.get)(n, 'width');\n      }, 0);\n      containerRight -= (0, _object.get)(this, 'rightFixedNodes').reduce(function (sum, n) {\n        return sum + (0, _object.get)(n, 'width');\n      }, 0);\n      return {\n        containerLeft: containerLeft,\n        containerRight: containerRight\n      };\n    }),\n    isSlackModeEnabled: (0, _object.computed)('widthConstraint', function () {\n      var widthConstraint = (0, _object.get)(this, 'widthConstraint');\n      return widthConstraint === WIDTH_CONSTRAINT.EQ_CONTAINER_SLACK || widthConstraint === WIDTH_CONSTRAINT.GTE_CONTAINER_SLACK;\n    }),\n    sortColumnsByFixed: function sortColumnsByFixed() {\n      // disable observer\n      if (this._isSorting) {\n        return;\n      }\n      this._isSorting = true;\n      var columns = (0, _object.get)(this, 'columns');\n      var sorted = (0, _sort.mergeSort)(columns, function (a, b) {\n        var aIsFixed = (0, _object.get)(a, 'isFixed');\n        var bIsFixed = (0, _object.get)(b, 'isFixed');\n        var aValue = aIsFixed === 'left' ? -1 : aIsFixed === 'right' ? 1 : 0;\n        var bValue = bIsFixed === 'left' ? -1 : bIsFixed === 'right' ? 1 : 0;\n        return aValue - bValue;\n      });\n      var alreadySorted = true;\n      for (var i = 0; i < columns.length; i++) {\n        if (sorted[i] !== columns[i]) {\n          alreadySorted = false;\n          break;\n        }\n      }\n      if (!alreadySorted) {\n        _array2.splice.apply(void 0, [columns, 0, sorted.length].concat(_toConsumableArray(sorted)));\n      }\n      this._isSorting = false;\n    },\n    /**\n      Performs initial sizing of the table columns according to tree's\n      `initialFillMode` property, then attempts to satisfy width constraint.\n       In `eq-container-slack` and `gte-container-slack` width contraint modes,\n      this allows a default layout to be applied before slack is allocated.\n    */\n    performInitialLayout: function performInitialLayout() {\n      if (!this.container) {\n        return;\n      }\n      var leaves = (0, _object.get)(this, 'root.leaves');\n\n      // ensures that min and max widths are respected _before_ `applyFillMode()`\n      // decides if the width constraint has been violated\n      leaves.forEach(function (leaf) {\n        var width = (0, _object.get)(leaf, 'width');\n        var minWidth = (0, _object.get)(leaf, 'minWidth');\n        var maxWidth = (0, _object.get)(leaf, 'maxWidth');\n        var newWidth = Math.min(Math.max(width, minWidth), maxWidth);\n        (0, _object.set)(leaf, 'width', newWidth);\n      });\n      var isSlackModeEnabled = (0, _object.get)(this, 'isSlackModeEnabled');\n      var initialFillMode = (0, _object.get)(this, 'initialFillMode');\n      if (isSlackModeEnabled && initialFillMode) {\n        this.applyFillMode(initialFillMode);\n      }\n      this.ensureWidthConstraint();\n    },\n    /**\n      Allocates excess whitespace to slack column (if present), then applies\n      tree's `fillMode` in attempt to satisfy its `widthConstraint`.\n     */\n    ensureWidthConstraint: function ensureWidthConstraint() {\n      if (!this.container) {\n        return;\n      }\n      var isSlackModeEnabled = (0, _object.get)(this, 'isSlackModeEnabled');\n      if (isSlackModeEnabled) {\n        this.updateSlackColumn();\n      }\n      this.applyFillMode();\n    },\n    /**\n      Resizes the slack column to fill excess whitespace in the container. If\n      table columns exceed the width of the container, the slack column is set to\n      a width of zero.\n       The slack column is only present when the `widthConstraint` property is set\n      to `eq-container-slack` or `gte-container-slack`.\n    */\n    updateSlackColumn: function updateSlackColumn() {\n      var slackColumn = (0, _object.get)(this, 'root.subcolumnNodes').findBy('isSlack');\n      if (slackColumn) {\n        var containerWidth = this.getContainerWidth();\n        var contentWidth = (0, _object.get)(this, 'root.contentWidth');\n        var width = Math.max(containerWidth - contentWidth, 0);\n        slackColumn.set('width', width);\n      }\n    },\n    /**\n      Attempts to satisfy tree's width constraint by resizing columns according\n      to the specifid `fillMode`. If no `fillMode` is specified, the tree's\n      own `fillMode` property will be used.\n       @param {String} fillMode\n     */\n    applyFillMode: function applyFillMode(fillMode) {\n      fillMode = fillMode || (0, _object.get)(this, 'fillMode');\n      var widthConstraint = (0, _object.get)(this, 'widthConstraint');\n      var containerWidth = this.getContainerWidth();\n      var contentWidth = (0, _object.get)(this, 'root.contentWidth');\n      var delta = containerWidth - contentWidth;\n      if (widthConstraint === WIDTH_CONSTRAINT.EQ_CONTAINER && delta !== 0 || widthConstraint === WIDTH_CONSTRAINT.EQ_CONTAINER_SLACK && delta !== 0 || widthConstraint === WIDTH_CONSTRAINT.LTE_CONTAINER && delta < 0 || widthConstraint === WIDTH_CONSTRAINT.GTE_CONTAINER && delta > 0 || widthConstraint === WIDTH_CONSTRAINT.GTE_CONTAINER_SLACK && delta > 0) {\n        if (fillMode === FILL_MODE.EQUAL_COLUMN) {\n          (0, _object.set)(this, 'root.width', containerWidth);\n        } else if (fillMode === FILL_MODE.FIRST_COLUMN) {\n          this.resizeColumn(0, delta);\n        } else if (fillMode === FILL_MODE.LAST_COLUMN) {\n          var isSlackModeEnabled = (0, _object.get)(this, 'isSlackModeEnabled');\n          var columns = (0, _object.get)(this, 'root.subcolumnNodes');\n          var lastColumnIndex = isSlackModeEnabled ? columns.length - 2 : columns.length - 1;\n          this.resizeColumn(lastColumnIndex, delta);\n        } else if (fillMode === FILL_MODE.NTH_COLUMN) {\n          var fillColumnIndex = (0, _object.get)(this, 'fillColumnIndex');\n          (true && !(!(0, _utils.isEmpty)(fillColumnIndex)) && (0, _debug.assert)(\"fillMode 'nth-column' must have a fillColumnIndex defined\", !(0, _utils.isEmpty)(fillColumnIndex)));\n          this.resizeColumn(fillColumnIndex, delta);\n        }\n      }\n    },\n    resizeColumn: function resizeColumn(index, delta) {\n      var columns = (0, _object.get)(this, 'root.subcolumnNodes');\n      var fillColumn = columns[index];\n      (true && !(fillColumn) && (0, _debug.assert)(\"Invalid column index, \".concat(index, \", for a table with \").concat(columns.length, \" columns\"), fillColumn));\n      var oldWidth = (0, _object.get)(fillColumn, 'width');\n      (0, _object.set)(fillColumn, 'width', oldWidth + delta);\n    },\n    getContainerWidth: function getContainerWidth() {\n      var containerWidthAdjustment = (0, _object.get)(this, 'containerWidthAdjustment') || 0;\n      return (0, _element.getInnerClientRect)(this.container).width * this.scale + containerWidthAdjustment;\n    },\n    getReorderBounds: function getReorderBounds(node) {\n      var parent = (0, _object.get)(node, 'parent');\n      var scale = this.scale;\n      var scrollLeft = this.container.scrollLeft;\n      var _getInnerClientRect2 = (0, _element.getInnerClientRect)(this.container),\n        containerLeft = _getInnerClientRect2.left;\n      var leftBound, rightBound, nodes;\n      if ((0, _object.get)(parent, 'isRoot')) {\n        var isFixed = (0, _object.get)(node, 'isFixed');\n        if (isFixed === 'left') {\n          nodes = (0, _object.get)(this, 'leftFixedNodes');\n        } else if (isFixed === 'right') {\n          nodes = (0, _object.get)(this, 'rightFixedNodes');\n        } else {\n          nodes = (0, _object.get)(this, 'unfixedNodes');\n        }\n      } else {\n        nodes = (0, _object.get)(node, 'parent.subcolumnNodes');\n      }\n      if (true /* DEBUG */) {\n        var firstReorderableFound = false;\n        var lastReorderableFound = false;\n        var _iterator4 = _createForOfIteratorHelper(nodes),\n          _step4;\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var _node = _step4.value;\n            if (lastReorderableFound && (0, _object.get)(_node, 'isReorderable')) {\n              (true && !(false) && (0, _debug.assert)('Non-reorderable columns may only be contiguous segments at the beginning or end of their section (i.e. node middle columns in a list).', false));\n            } else if (!firstReorderableFound && (0, _object.get)(_node, 'isReorderable')) {\n              firstReorderableFound = true;\n            } else if (firstReorderableFound && !lastReorderableFound && !(0, _object.get)(_node, 'isReorderable')) {\n              lastReorderableFound = true;\n            }\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      }\n      var reorderableNodes = nodes.filter(function (n) {\n        return (0, _object.get)(n, 'isReorderable');\n      });\n      var left = (0, _element.getOuterClientRect)(reorderableNodes[0].element).left;\n      var right = (0, _element.getOuterClientRect)(reorderableNodes[reorderableNodes.length - 1].element).right;\n      leftBound = (left - containerLeft) * scale + scrollLeft;\n      rightBound = (right - containerLeft) * scale + scrollLeft;\n      return {\n        leftBound: leftBound,\n        rightBound: rightBound\n      };\n    },\n    registerContainer: function registerContainer(container) {\n      this.container = container;\n      this.scale = (0, _element.getScale)(container);\n      (0, _object.get)(this, 'root').registerElement(container);\n      _emberRafScheduler.scheduler.schedule('sync', this.ensureWidthConstraint.bind(this), this.token);\n    },\n    getClosestColumn: function getClosestColumn(column, left, isFixed) {\n      // If the column is fixed, adjust finder method and offset by the scroll\n      // position since the column will appear stationary\n      if (isFixed === 'left') {\n        left -= this.container.scrollLeft;\n      } else if (isFixed === 'right') {\n        left += this.container.scrollWidth;\n        left -= this.container.scrollLeft;\n        left -= (0, _element.getInnerClientRect)(this.container).width * this.scale;\n      }\n      var subcolumns = (0, _object.get)(column.parent, 'subcolumnNodes');\n      var _iterator5 = _createForOfIteratorHelper(subcolumns),\n        _step5;\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var _column = _step5.value;\n          var offset = (0, _object.get)(_column, 'offsetLeft');\n          if (left < offset + (0, _object.get)(_column, 'width')) {\n            return _column;\n          }\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n      return subcolumns[subcolumns.length - 1];\n    },\n    getClosestColumnOffset: function getClosestColumnOffset(column, left, isFixed) {\n      var closestColumn = this.getClosestColumn(column, left, isFixed);\n      var offsetLeft = (0, _object.get)(closestColumn, 'offsetLeft');\n\n      // If the column is fixed, readjust the offset so that it's correct within\n      // the container\n      if (isFixed === 'left') {\n        offsetLeft += this.container.scrollLeft;\n      } else if (isFixed === 'right') {\n        offsetLeft -= this.container.scrollWidth;\n        offsetLeft += this.container.scrollLeft;\n        offsetLeft += (0, _element.getInnerClientRect)(this.container).width * this.scale;\n      }\n      return offsetLeft;\n    },\n    insertAfterColumn: function insertAfterColumn(parent, after, insert) {\n      if (insert === after) {\n        return;\n      }\n      var subcolumns = (0, _object.get)(parent, 'column.subcolumns');\n      var afterColumn = (0, _object.get)(after, 'column');\n      var insertColumn = (0, _object.get)(insert, 'column');\n      var afterIndex = subcolumns.indexOf(afterColumn);\n      var insertIndex = subcolumns.indexOf(insertColumn);\n      (0, _array2.move)(subcolumns, insertIndex, afterIndex);\n      (0, _ember.notifyPropertyChange)(subcolumns, '[]');\n    },\n    startReorder: function startReorder(node, clientX) {\n      this.clientX = clientX;\n      var bounds = this.getReorderBounds(node);\n      this._reorderMainIndicator = new _reorderIndicators.MainIndicator(this.container, node.element, bounds);\n      this._reorderDropIndicator = new _reorderIndicators.DropIndicator(this.container, node.element, bounds);\n      this.container.classList.add('is-reordering');\n    },\n    updateReorder: function updateReorder(node, clientX) {\n      this.clientX = clientX;\n      this._updateReorder(node);\n      if (!(0, _object.get)(node, 'isFixed')) {\n        this.updateScroll(node, true, true, this._updateReorder.bind(this));\n      }\n    },\n    _updateReorder: function _updateReorder(node) {\n      var scrollLeft = this.container.scrollLeft;\n      var realContainerLeft = (0, _element.getInnerClientRect)(this.container).left * this.scale;\n      var offset = this.clientX * this.scale - realContainerLeft + scrollLeft;\n      var width = (0, _object.get)(node, 'width');\n      var newLeft = offset - width / 2;\n      this._reorderMainIndicator.left = newLeft;\n      this._reorderDropIndicator.left = this.getClosestColumnOffset(node, offset, (0, _object.get)(node, 'isFixed'));\n      this._reorderDropIndicator.width = (0, _object.get)(this.getClosestColumn(node, this._reorderDropIndicator.left, (0, _object.get)(node, 'isFixed')), 'width');\n    },\n    endReorder: function endReorder(node) {\n      var _this$onReorder;\n      var scrollLeft = this.container.scrollLeft;\n      var realContainerLeft = (0, _element.getInnerClientRect)(this.container).left * this.scale;\n      var offset = this.clientX * this.scale - realContainerLeft + scrollLeft;\n      var _this$getReorderBound = this.getReorderBounds(node),\n        leftBound = _this$getReorderBound.leftBound,\n        rightBound = _this$getReorderBound.rightBound;\n      offset = Math.max(leftBound, offset);\n      offset = Math.min(rightBound - 1, offset);\n      var closestColumn = this.getClosestColumn(node, offset, (0, _object.get)(node, 'isFixed'));\n      this.insertAfterColumn(node.parent, closestColumn, node);\n      this._reorderMainIndicator.destroy();\n      this._reorderDropIndicator.destroy();\n      this._reorderMainIndicator = null;\n      this._reorderDropIndicator = null;\n      if (this._nextUpdateScroll) {\n        this._nextUpdateScroll.cancel();\n        this._nextUpdateScroll = null;\n      }\n      this.container.classList.remove('is-reordering');\n      (_this$onReorder = this.onReorder) === null || _this$onReorder === void 0 ? void 0 : _this$onReorder.call(this, (0, _object.get)(node, 'column'), (0, _object.get)(closestColumn, 'column'));\n    },\n    startResize: function startResize(node, clientX) {\n      this.clientX = clientX;\n    },\n    updateResize: function updateResize(node, clientX) {\n      var delta = Math.floor((0, _object.get)(node, 'isFixed') === 'right' ? (this.clientX - clientX) * this.scale : (clientX - this.clientX) * this.scale);\n      this.clientX = clientX;\n      if (Math.abs(delta) < 1) {\n        return;\n      }\n\n      // Add the class after at least one update has occured\n      this.container.classList.add('is-resizing');\n      this._updateResize(node, delta);\n    },\n    _updateResize: function _updateResize(node, delta) {\n      var resizeMode = (0, _object.get)(this, 'resizeMode');\n      var oldWidth = (0, _object.get)(node, 'width');\n      var minWidth = (0, _object.get)(node, 'minWidth');\n      delta = Math.max(oldWidth + delta, minWidth) - oldWidth;\n      if (resizeMode === RESIZE_MODE.FLUID) {\n        var parent = (0, _object.get)(node, 'parent');\n        var child = node;\n        var sibling;\n        while (parent && !sibling) {\n          var siblings = (0, _object.get)(parent, 'subcolumnNodes');\n          sibling = siblings[siblings.indexOf(child) + 1];\n          child = parent;\n          parent = (0, _object.get)(child, 'parent');\n        }\n        if (sibling) {\n          var siblingOldWidth = (0, _object.get)(sibling, 'width');\n          var siblingMinWidth = (0, _object.get)(sibling, 'minWidth');\n          delta = -(Math.max(siblingOldWidth - delta, siblingMinWidth) - siblingOldWidth);\n          (0, _object.set)(sibling, 'width', siblingOldWidth - delta);\n        } else {\n          delta = 0;\n        }\n      }\n      var newWidth = oldWidth + delta;\n      (0, _object.set)(node, 'width', newWidth);\n      this.ensureWidthConstraint.call(this);\n    },\n    endResize: function endResize(node) {\n      var _this$onResize;\n      if (this._nextUpdateScroll) {\n        this._nextUpdateScroll.cancel();\n        this._nextUpdateScroll = null;\n      }\n      this.container.classList.remove('is-resizing');\n      (_this$onResize = this.onResize) === null || _this$onResize === void 0 ? void 0 : _this$onResize.call(this, (0, _object.get)(node, 'column'));\n    },\n    updateScroll: function updateScroll(node, stopAtLeft, stopAtRight, callback) {\n      var _this2 = this;\n      if (this._nextUpdateScroll) {\n        return;\n      }\n      this._nextUpdateScroll = _emberRafScheduler.scheduler.schedule('sync', function () {\n        _this2._nextUpdateScroll = null;\n        var container = _this2.container;\n        var clientX = _this2.clientX;\n        var _this2$container = _this2.container,\n          scrollLeft = _this2$container.scrollLeft,\n          scrollWidth = _this2$container.scrollWidth;\n        var _get2 = (0, _object.get)(_this2, 'scrollBounds'),\n          containerLeft = _get2.containerLeft,\n          containerRight = _get2.containerRight;\n        var containerWidth = (0, _element.getOuterClientRect)(_this2.container).width * _this2.scale;\n        var distanceToLeft = Math.max(clientX - containerLeft, 2);\n        var distanceToRight = Math.max(containerRight - clientX, 2);\n        var canScrollLeft = !stopAtLeft || scrollLeft !== 0;\n        var canScrollRight = !stopAtRight || scrollLeft < scrollWidth - containerWidth;\n        if (distanceToLeft <= SCROLL_THRESHOLD && canScrollLeft || distanceToRight <= SCROLL_THRESHOLD && canScrollRight) {\n          var delta;\n          if (distanceToLeft <= SCROLL_THRESHOLD) {\n            delta = -SCROLL_THRESHOLD / distanceToLeft;\n          } else {\n            delta = SCROLL_THRESHOLD / distanceToRight;\n          }\n          delta = Math.round(delta);\n          container.scrollLeft += delta;\n          _this2.updateScroll(node, stopAtLeft, stopAtRight, callback);\n          callback(node, delta);\n        }\n      }, this.token);\n    }\n  });\n});","define(\"ember-table/-private/meta-cache\", [\"exports\", \"@ember/object\"], function (_exports, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.getOrCreate = _getOrCreate;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _getOrCreate(obj, cache, Class) {\n    if (cache.has(obj) === false) {\n      cache.set(obj, Class.create ? Class.create() : new Class());\n    }\n    return cache.get(obj);\n  }\n\n  /**\n   * Substitute for `Map` that allows non-identical object keys to share\n   * identical values by specifying a key path for the associating keys.\n   *\n   * If no key path is specified, it behaves like a `Map`.\n   *\n   * @class MetaCache\n   * @constructor\n   * @param {Object} options\n   */\n  var MetaCache = _exports.default = /*#__PURE__*/function () {\n    function MetaCache() {\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        keyPath = _ref.keyPath;\n      _classCallCheck(this, MetaCache);\n      this.keyPath = keyPath;\n\n      // in order to prevent memory leaks, we need to be able to clean the cache\n      // manually when the table is destroyed or updated; this is why we use a\n      // Map instead of WeakMap\n      this._map = new Map();\n    }\n    return _createClass(MetaCache, [{\n      key: \"get\",\n      value: function get(obj) {\n        var key = this._keyFor(obj);\n        var entry = this._map.get(key);\n        return entry ? entry[1] : entry;\n      }\n    }, {\n      key: \"getOrCreate\",\n      value: function getOrCreate(obj, Class) {\n        return _getOrCreate(obj, this, Class);\n      }\n    }, {\n      key: \"set\",\n      value: function set(obj, meta) {\n        var key = this._keyFor(obj);\n        this._map.set(key, [obj, meta]);\n      }\n    }, {\n      key: \"has\",\n      value: function has(obj) {\n        var key = this._keyFor(obj);\n        return this._map.has(key);\n      }\n    }, {\n      key: \"delete\",\n      value: function _delete(obj) {\n        var key = this._keyFor(obj);\n        this._map.delete(key);\n      }\n    }, {\n      key: \"entries\",\n      value: function entries() {\n        return this._map.values();\n      }\n    }, {\n      key: \"_keyFor\",\n      value: function _keyFor(obj) {\n        // falls back to `obj` as key if a legitimate key cannot be produced\n        if (!obj || !this.keyPath) {\n          return obj;\n        }\n        var key = (0, _object.get)(obj, this.keyPath);\n        return key ? key : obj;\n      }\n    }]);\n  }();\n});","define(\"ember-table/-private/sticky/table-sticky-polyfill\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setupTableStickyPolyfill = setupTableStickyPolyfill;\n  _exports.teardownTableStickyPolyfill = teardownTableStickyPolyfill;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  /* global ResizeSensor */\n  /* eslint-disable ember/no-observers */\n\n  var TABLE_POLYFILL_MAP = new WeakMap();\n  var TableStickyPolyfill = /*#__PURE__*/function () {\n    function TableStickyPolyfill(element) {\n      var _this = this;\n      _classCallCheck(this, TableStickyPolyfill);\n      _defineProperty(this, \"setupRowMutationObservers\", function () {\n        var rows = Array.from(_this.element.children);\n        _this.rowMutationObservers = rows.map(function (row) {\n          var observer = new MutationObserver(_this.repositionStickyElements);\n          observer.observe(row, {\n            childList: true\n          });\n          return observer;\n        });\n      });\n      _defineProperty(this, \"teardownRowMutationObservers\", function () {\n        _this.rowMutationObservers.forEach(function (observer) {\n          return observer.disconnect();\n        });\n      });\n      _defineProperty(this, \"setupResizeSensors\", function () {\n        var rows = Array.from(_this.element.children);\n        var firstCells = rows.map(function (r) {\n          return r.firstElementChild;\n        });\n        _this.resizeSensors = firstCells.map(function (cell) {\n          var sensor = new ResizeSensor(cell, _this.repositionStickyElements);\n          return [cell, sensor];\n        });\n      });\n      _defineProperty(this, \"teardownResizeSensors\", function () {\n        _this.resizeSensors.forEach(function (_ref) {\n          var _ref2 = _slicedToArray(_ref, 2),\n            cell = _ref2[0],\n            sensor = _ref2[1];\n          return sensor.detach(cell);\n        });\n      });\n      /**\n         Repositions all the `td`|`th` inside each `tr` of the `tfoot`|`thead`.\n         The `td` and `th` cells must be sticky due to existing Chrome and Edge bugs\n         that don't apply the sticky to the footer/header:\n           * Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=702927\n           * Edge bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/16765952/\n           * More details at: https://caniuse.com/#search=fixed\n          Calculates the table's scale and scrollable height and, working top-down for header or bottom-up for footer,\n         sets the cells for each row to be `position:sticky` with a calculated `top` or `bottom` offset so that they\n         appear correctly fixed in the table.\n         The calculation takes into account the height of each row as it goes, adjusting the next row's top|bottom offset\n         accordingly.\n          For example, assuming the following table with 2 thead and 2 tfoot rows:\n           * There will be 2 TableStickyPolyfills created, one for the thead, one for the tfoot\n           * For the thead TableStickyPolifyill, its `repositionStickyElements` will\n             start at row 0, setting each of its `th` cells' `top` value to `0px`, then\n             add row 0's height (25px) to its current offset and move on to row 1,\n             where it will set each of that row's `th` cells' `top` to the current\n             offset of `25px`.\n           * For the tfoot TableStickyPolyfill, its `repositionStickyElements` will\n             start at the bottom-most row, row 1, and set each of its `td` cells'\n             `bottom` value to `0px`, then add row 1's height (20px) to its current\n             offset and move on to the next row, row 0, where it will set each of that\n             row's `td` cells' `bottom` to the current offset of `20px`.\n        +--------------------------------------------+\n       |+------------------------------------------+|\n       ||thead                                     ||\n       ||+----------------------------------------+||\n       |||row 0 (height: 25px)  top: 0px          |||\n       ||+----------------------------------------+||\n       ||+----------------------------------------+||\n       |||row 1                 top: 25px         |||\n       ||+----------------------------------------+||\n       |+------------------------------------------+|\n       |                                            |\n       |           ....   tbody  ....               |\n       |                                            |\n       |+------------------------------------------+|\n       ||tfoot                                     ||\n       ||+----------------------------------------+||\n       |||row 0                     bottom: 20px  |||\n       ||+----------------------------------------+||\n       ||+----------------------------------------+||\n       |||row 1  (height: 20px)     bottom: 0px   |||\n       ||+----------------------------------------+||\n       |+------------------------------------------+|\n       +--------------------------------------------+\n        If a table has enough header|footer rows, they cumulatively add up to greater than the\n       table's height. In this case, the standard calculation of `stick`ing each\n       row to its calculated offset from the top|bottom will cause the\n       header|footer rows to stick over *all* of the scrollable body rows,\n       preventing them (as well as possibly some header|footer rows) from being\n       seen.\n        To account for this potential situation, the repositioning sets a maximum percentage height\n       for the header|footer of 50%. If the rows take up greater than that percentage of the table's\n       height, all of the overflowing rows are positioned using a negative offset so that they\n       will be visible when scrolling to the top|bottom of the table for thead|tfoot overflow rows, respectively.\n        For example, the following table has footer rows totaling 75px, but the table's height\n       is only 120px. The footer rows take up more than 50% of the table, so the bottom-most\n       footer row (2) is positioned at (tableHeight - footerHeight = 75 - 120) -45px, the next\n       footer row (1) is positioned at (-45 + 30) -15px, and the top-most footer row (0)\n       is at (-15 + 20) 5px.\n        The effect is that the top row (0) will be fully visible, row 1 will be partially visible,\n       and row 2 will be hidden until the table is scrolled all the way to the bottom.\n       +-----------------------------------+          ------------^---\n      |table                              |                      |Table height: 120px\n      |                                   |                      |\n      |                                   |                      |\n      |                                   |                      |\n      |                                   |                      |\n      |                                   |                      |\n      |+--------------------------------+ | ^---                 |\n      ||tfoot                           | | |                    |\n      ||+------------------------------+| | |tfoot height        |\n      |||row 0 (20px)     bottom:   5px|| | |20+25+30 = 75px     |\n      |||                              || | |                    |\n      |||                              || | |                    |\n      ||+------------------------------+| | |                    |\n      ||+------------------------------+| | |                    |\n      |||row 1 (25px)     bottom: -15px|| | |                    |\n      |||                              || | |                    |\n      +-----------------------------------+ |        ------------v---\n       |+                              +|   |\n       |+------------------------------+|   |\n       ||row 2 (30px)     bottom: -45px||   |\n       ||                              ||   |\n       |+------------------------------+|   |\n       |                                |   |\n       +--------------------------------+   v---\n       */\n      _defineProperty(this, \"repositionStickyElements\", function () {\n        var table = _this.element.parentNode;\n        var scale = table.offsetHeight / table.getBoundingClientRect().height;\n        var containerHeight = table.parentNode.offsetHeight;\n\n        // exclude ResizeSensor divs\n        var rows = Array.from(_this.element.querySelectorAll('tr'));\n        var offset = 0;\n        var heights = rows.map(function (r) {\n          return r.getBoundingClientRect().height * scale;\n        });\n        var totalHeight = heights.reduce(function (sum, h) {\n          return sum += h;\n        }, 0);\n        var maxHeight = containerHeight * _this.maxStickyProportion;\n        if (totalHeight > maxHeight) {\n          offset = maxHeight - totalHeight;\n        }\n        for (var i = 0; i < rows.length; i++) {\n          // Work top-down (index order) for 'top', bottom-up (reverse index\n          // order) for 'bottom' rows\n          var index = _this.side === 'top' ? i : rows.length - 1 - i;\n          var row = rows[index];\n          var height = heights[index];\n          var _iterator = _createForOfIteratorHelper(row.children),\n            _step;\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              var child = _step.value;\n              child.style.position = '-webkit-sticky';\n              child.style.position = 'sticky';\n              child.style[_this.side] = \"\".concat(offset, \"px\");\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          offset += height;\n        }\n      });\n      this.element = element;\n      this.maxStickyProportion = 0.5;\n      this.element.style.position = 'static';\n      this.side = element.tagName === 'THEAD' ? 'top' : 'bottom';\n      this.setupRaf = requestAnimationFrame(this.repositionStickyElements);\n      this.setupResizeSensors();\n      this.setupRowMutationObservers();\n      this.mutationObserver = new MutationObserver(function () {\n        _this.teardownResizeSensors();\n        _this.teardownRowMutationObservers();\n        _this.setupResizeSensors();\n        _this.setupRowMutationObservers();\n        _this.repositionStickyElements();\n      });\n      this.mutationObserver.observe(this.element, {\n        childList: true\n      });\n    }\n    return _createClass(TableStickyPolyfill, [{\n      key: \"destroy\",\n      value: function destroy() {\n        this.element.style.position = 'sticky';\n        cancelAnimationFrame(this.setupRaf);\n        this.teardownResizeSensors();\n        this.teardownRowMutationObservers();\n        this.mutationObserver.disconnect();\n      }\n    }]);\n  }();\n  function setupTableStickyPolyfill(element) {\n    TABLE_POLYFILL_MAP.set(element, new TableStickyPolyfill(element));\n  }\n  function teardownTableStickyPolyfill(element) {\n    TABLE_POLYFILL_MAP.get(element).destroy();\n    TABLE_POLYFILL_MAP.delete(element);\n  }\n});","define(\"ember-table/-private/utils/array\", [\"exports\", \"@ember/array\", \"@ember/debug\"], function (_exports, _array, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.move = move;\n  _exports.objectAt = objectAt;\n  _exports.splice = splice;\n  /**\n    Genericizes `objectAt` so it can be run against a normal array or an Ember array\n  \n    @param {object|Array} arr\n    @param {number} index\n    @return {any}\n  */\n  function objectAt(arr, index) {\n    (true && !((0, _array.isArray)(arr) || typeof arr.objectAt === 'function') && (0, _debug.assert)('arr must be an instance of a Javascript Array or implement `objectAt`', (0, _array.isArray)(arr) || typeof arr.objectAt === 'function'));\n    if (typeof arr.objectAt === 'function') {\n      return arr.objectAt(index);\n    }\n    return arr[index];\n  }\n  function splice(items, start, count) {\n    for (var _len = arguments.length, add = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n      add[_key - 3] = arguments[_key];\n    }\n    if (typeof items.replace === 'function' && typeof items.objectAt === 'function') {\n      return items.replace(start, count, add);\n    }\n    return items.splice.apply(items, [start, count].concat(add));\n  }\n\n  /**\n   * Cycle shift an internal [start..end] to [start + 1...end, start].\n   */\n  function move(items, start, end) {\n    var sourceItem = objectAt(items, start);\n    splice(items, start, 1);\n    splice(items, end, 0, sourceItem);\n  }\n});","define(\"ember-table/-private/utils/default-to\", [\"exports\", \"@ember/object\"], function (_exports, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = defaultTo;\n  var VALUES = new WeakMap();\n  function valuesFor(obj) {\n    if (!VALUES.has(obj)) {\n      VALUES.set(obj, Object.create(null));\n    }\n    return VALUES.get(obj);\n  }\n  function defaultTo(defaultValue) {\n    return (0, _object.computed)({\n      get: function get(key) {\n        var values = valuesFor(this);\n        if (!(key in values)) {\n          values[key] = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n        }\n        return values[key];\n      },\n      set: function set(key, value) {\n        var values = valuesFor(this);\n        if (value === undefined) {\n          values[key] = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n        } else {\n          values[key] = value;\n        }\n        return values[key];\n      }\n    });\n  }\n});","define(\"ember-table/-private/utils/element\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.closest = closest;\n  _exports.getInnerClientRect = getInnerClientRect;\n  _exports.getOuterClientRect = getOuterClientRect;\n  _exports.getScale = getScale;\n  var VENDOR_MATCH_FNS = ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'];\n  var ELEMENT_MATCH_FN;\n  function setElementMatchFn(el) {\n    VENDOR_MATCH_FNS.forEach(function (fn) {\n      if (ELEMENT_MATCH_FN === undefined && typeof el[fn] === 'function') {\n        ELEMENT_MATCH_FN = fn;\n      }\n    });\n  }\n  function closest(el, selector) {\n    if (ELEMENT_MATCH_FN === undefined) {\n      setElementMatchFn(el);\n    }\n    while (el) {\n      // TODO add explicit test\n      if (el[ELEMENT_MATCH_FN](selector)) {\n        return el;\n      }\n      el = el.parentElement;\n    }\n    return null;\n  }\n  function getScale(element) {\n    var rect = element.getBoundingClientRect();\n    if (element.offsetHeight === rect.height || rect.height === 0) {\n      return 1;\n    } else {\n      return element.offsetHeight / rect.height;\n    }\n  }\n  function getInnerClientRect(element) {\n    var scale = getScale(element);\n    var outerClientRect = element.getBoundingClientRect();\n    var computedStyle = window.getComputedStyle(element);\n    var borderTopWidth = parseFloat(computedStyle.getPropertyValue('border-top-width')) / scale;\n    var borderBottomWidth = parseFloat(computedStyle.getPropertyValue('border-bottom-width')) / scale;\n    var borderLeftWidth = parseFloat(computedStyle.getPropertyValue('border-left-width')) / scale;\n    var borderRightWidth = parseFloat(computedStyle.getPropertyValue('border-right-width')) / scale;\n    return {\n      top: outerClientRect.top + borderTopWidth,\n      bottom: outerClientRect.bottom - borderBottomWidth,\n      left: outerClientRect.left + borderLeftWidth,\n      right: outerClientRect.right - borderRightWidth,\n      height: outerClientRect.height - borderTopWidth - borderBottomWidth,\n      width: outerClientRect.width - borderLeftWidth - borderRightWidth\n    };\n  }\n  function getOuterClientRect(element) {\n    return element.getBoundingClientRect();\n  }\n});","define(\"ember-table/-private/utils/ember\", [\"exports\", \"@ember/object\"], function (_exports, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.notifyPropertyChange = void 0;\n  var notifyPropertyChange = _exports.notifyPropertyChange = _object.notifyPropertyChange;\n});","define(\"ember-table/-private/utils/observer\", [\"exports\", \"@ember/debug\", \"@ember/object\", \"@ember/object/observers\"], function (_exports, _debug, _object, _observers) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.removeObserver = _exports.observer = _exports.addObserver = void 0;\n  // eslint-disable-next-line no-restricted-imports\n\n  // eslint-disable-next-line no-restricted-imports\n\n  var USE_ASYNC_OBSERVERS = true;\n  function asyncObserver() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var fn = args.pop();\n    var dependentKeys = args;\n    var sync = false;\n    return (0, _object.observer)({\n      dependentKeys: dependentKeys,\n      fn: fn,\n      sync: sync\n    });\n  }\n  function asyncAddObserver() {\n    var obj, path, target, method;\n    var sync = false;\n    obj = arguments.length <= 0 ? undefined : arguments[0];\n    path = arguments.length <= 1 ? undefined : arguments[1];\n    (true && !(arguments.length === 3 || arguments.length === 4) && (0, _debug.assert)(\"Expected 3 or 4 args for addObserver, got \".concat(arguments.length), arguments.length === 3 || arguments.length === 4));\n    if (arguments.length === 3) {\n      target = null;\n      method = arguments.length <= 2 ? undefined : arguments[2];\n    } else if (arguments.length === 4) {\n      target = arguments.length <= 2 ? undefined : arguments[2];\n      method = arguments.length <= 3 ? undefined : arguments[3];\n    }\n    return (0, _observers.addObserver)(obj, path, target, method, sync);\n  }\n  function asyncRemoveObserver() {\n    var obj, path, target, method;\n    var sync = false;\n    obj = arguments.length <= 0 ? undefined : arguments[0];\n    path = arguments.length <= 1 ? undefined : arguments[1];\n    (true && !(arguments.length === 3 || arguments.length === 4) && (0, _debug.assert)(\"Expected 3 or 4 args for addObserver, got \".concat(arguments.length), arguments.length === 3 || arguments.length === 4));\n    if (arguments.length === 3) {\n      target = null;\n      method = arguments.length <= 2 ? undefined : arguments[2];\n    } else {\n      target = arguments.length <= 2 ? undefined : arguments[2];\n      method = arguments.length <= 3 ? undefined : arguments[3];\n    }\n    return (0, _observers.removeObserver)(obj, path, target, method, sync);\n  }\n  var observer = _exports.observer = USE_ASYNC_OBSERVERS ? asyncObserver : _object.observer;\n  var addObserver = _exports.addObserver = USE_ASYNC_OBSERVERS ? asyncAddObserver : _observers.addObserver;\n  var removeObserver = _exports.removeObserver = _observers.removeObserver ? asyncRemoveObserver : _observers.removeObserver;\n});","define(\"ember-table/-private/utils/reorder-indicators\", [\"exports\", \"ember-table/-private/utils/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.MainIndicator = _exports.DropIndicator = void 0;\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function createElement(mainClass, dimensions) {\n    var element = document.createElement('div');\n    element.classList.add(mainClass);\n    for (var key in dimensions) {\n      element.style[key] = \"\".concat(dimensions[key], \"px\");\n    }\n    return element;\n  }\n  var ReorderIndicator = /*#__PURE__*/function () {\n    function ReorderIndicator(container, element, bounds, mainClass, child) {\n      _classCallCheck(this, ReorderIndicator);\n      this.container = container;\n      this.element = element;\n      this.bounds = bounds;\n      this.child = child;\n      this.scale = (0, _element.getScale)(container);\n      var scrollTop = this.container.scrollTop;\n      var scrollLeft = this.container.scrollLeft;\n      var _getInnerClientRect = (0, _element.getInnerClientRect)(this.container),\n        containerTop = _getInnerClientRect.top,\n        containerLeft = _getInnerClientRect.left;\n      var _getOuterClientRect = (0, _element.getOuterClientRect)(this.element),\n        elementTop = _getOuterClientRect.top,\n        elementLeft = _getOuterClientRect.left,\n        elementWidth = _getOuterClientRect.width;\n      var top = (elementTop - containerTop) * this.scale + scrollTop;\n      var left = (elementLeft - containerLeft) * this.scale + scrollLeft;\n      var width = elementWidth * this.scale;\n      this.originLeft = left;\n      this.indicatorElement = createElement(mainClass, {\n        top: top,\n        left: left,\n        width: width\n      });\n      if (child) {\n        this.indicatorElement.appendChild(child);\n      }\n      this.container.appendChild(this.indicatorElement);\n      this._left = left;\n    }\n    return _createClass(ReorderIndicator, [{\n      key: \"destroy\",\n      value: function destroy() {\n        this.container.removeChild(this.indicatorElement);\n      }\n    }, {\n      key: \"width\",\n      set: function set(newWidth) {\n        this.indicatorElement.style.width = \"\".concat(newWidth, \"px\");\n      }\n    }, {\n      key: \"left\",\n      get: function get() {\n        return this._left;\n      },\n      set: function set(newLeft) {\n        var _this$bounds = this.bounds,\n          leftBound = _this$bounds.leftBound,\n          rightBound = _this$bounds.rightBound;\n        var width = this.indicatorElement.offsetWidth;\n        if (newLeft < leftBound) {\n          newLeft = leftBound;\n        } else if (newLeft + width > rightBound) {\n          newLeft = rightBound - width;\n        }\n        if (newLeft < this.originLeft) {\n          this.indicatorElement.classList.remove('et-reorder-direction-right');\n          this.indicatorElement.classList.add('et-reorder-direction-left');\n        } else {\n          this.indicatorElement.classList.remove('et-reorder-direction-left');\n          this.indicatorElement.classList.add('et-reorder-direction-right');\n        }\n        this.indicatorElement.style.left = \"\".concat(newLeft, \"px\");\n        this._left = newLeft;\n      }\n    }]);\n  }();\n  var MainIndicator = _exports.MainIndicator = /*#__PURE__*/function (_ReorderIndicator) {\n    function MainIndicator(container, element, bounds) {\n      _classCallCheck(this, MainIndicator);\n      // let width = getOuterClientRect(element).width * getScale(element);\n      var child = element.cloneNode(true);\n      return _callSuper(this, MainIndicator, [container, element, bounds, 'et-reorder-main-indicator', child]);\n    }\n    _inherits(MainIndicator, _ReorderIndicator);\n    return _createClass(MainIndicator);\n  }(ReorderIndicator);\n  var DropIndicator = _exports.DropIndicator = /*#__PURE__*/function (_ReorderIndicator2) {\n    function DropIndicator(container, element, bounds) {\n      _classCallCheck(this, DropIndicator);\n      return _callSuper(this, DropIndicator, [container, element, bounds, 'et-reorder-drop-indicator']);\n    }\n    _inherits(DropIndicator, _ReorderIndicator2);\n    return _createClass(DropIndicator);\n  }(ReorderIndicator);\n});","define(\"ember-table/-private/utils/sort\", [\"exports\", \"@ember/utils\", \"@ember/object\"], function (_exports, _utils, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.compareValues = compareValues;\n  _exports.mergeSort = mergeSort;\n  _exports.sortMultiple = sortMultiple;\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function merge(left, right, comparator) {\n    var mergedArray = [];\n    var leftIndex = 0;\n    var rightIndex = 0;\n    while (leftIndex < left.length && rightIndex < right.length) {\n      var comparison = comparator(left[leftIndex], right[rightIndex]);\n      if (comparison <= 0) {\n        mergedArray.push(left[leftIndex]);\n        leftIndex++;\n      } else {\n        mergedArray.push(right[rightIndex]);\n        rightIndex++;\n      }\n    }\n    if (leftIndex < left.length) {\n      mergedArray.splice.apply(mergedArray, [mergedArray.length, 0].concat(_toConsumableArray(left.slice(leftIndex))));\n    }\n    if (rightIndex < right.length) {\n      mergedArray.splice.apply(mergedArray, [mergedArray.length, 0].concat(_toConsumableArray(right.slice(rightIndex))));\n    }\n    return mergedArray;\n  }\n\n  /**\n   * An implementation of the standard merge sort algorithm.\n   *\n   * This is necessary because we need a stable sorting algorithm that accepts\n   * a general comparator. The built in sort function and Ember's sort functions\n   * are not stable, and `_.sortBy` doesn't take a general comparator. Ideally\n   * lodash would add a `_.sort` function whose API would mimic this function's.\n   *\n   * @param {Array} array The array to be sorted\n   * @param {Comparator} comparator The comparator function to compare elements with.\n   * @returns {Array} A sorted array\n   */\n  function mergeSort(array) {\n    var comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.compare;\n    if (array.length <= 1) {\n      return array;\n    }\n    var middleIndex = Math.floor(array.length / 2);\n    var leftArray = mergeSort(array.slice(0, middleIndex), comparator);\n    var rightArray = mergeSort(array.slice(middleIndex), comparator);\n    return merge(leftArray, rightArray, comparator);\n  }\n  function sortMultiple(itemA, itemB, sorts, compare, sortEmptyLast) {\n    var compareValue;\n    var _iterator = _createForOfIteratorHelper(sorts),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var _step$value = _step.value,\n          valuePath = _step$value.valuePath,\n          isAscending = _step$value.isAscending;\n        var valueA = (0, _object.get)(itemA, valuePath);\n        var valueB = (0, _object.get)(itemB, valuePath);\n\n        // The option only influences the outcome of an ascending sort.\n        if (sortEmptyLast) {\n          sortEmptyLast = isAscending;\n        }\n        compareValue = isAscending ? compare(valueA, valueB, sortEmptyLast) : -compare(valueA, valueB, sortEmptyLast);\n        if (compareValue !== 0) {\n          break;\n        }\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n    return compareValue;\n  }\n  function isExactlyNaN(value) {\n    return typeof value === 'number' && isNaN(value);\n  }\n  function isEmptyString(value) {\n    return typeof value === 'string' && value === '';\n  }\n  function isEmpty(value) {\n    return (0, _utils.isNone)(value) || isExactlyNaN(value) || isEmptyString(value);\n  }\n  function orderEmptyValues(itemA, itemB, sortEmptyLast) {\n    var aIsEmpty = isEmpty(itemA);\n    var bIsEmpty = isEmpty(itemB);\n    var less = -1;\n    var more = 1;\n    if (sortEmptyLast) {\n      less = 1;\n      more = -1;\n    }\n    if (aIsEmpty && !bIsEmpty) {\n      return less;\n    } else if (bIsEmpty && !aIsEmpty) {\n      return more;\n    } else if ((0, _utils.isNone)(itemA) && isExactlyNaN(itemB)) {\n      return less;\n    } else if (isExactlyNaN(itemA) && (0, _utils.isNone)(itemB)) {\n      return more;\n    } else {\n      return 0;\n    }\n  }\n  function compareValues(itemA, itemB, sortEmptyLast) {\n    if (isEmpty(itemA) || isEmpty(itemB)) {\n      return orderEmptyValues(itemA, itemB, sortEmptyLast);\n    }\n    return (0, _utils.compare)(itemA, itemB);\n  }\n});","define(\"ember-table/components/-private/base-table-cell\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"ember-table/-private/utils/observer\", \"@ember/runloop\", \"@ember/object\"], function (_exports, _component, _computed, _observer, _runloop, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _component.default.extend({\n    // Provided by subclasses\n    columnMeta: null,\n    columnValue: null,\n    attributeBindings: ['slackAttribute:data-test-ember-table-slack'],\n    classNameBindings: ['isFirstColumn', 'isLastColumn', 'isFixedLeft', 'isFixedRight', 'textAlign', 'isSlack'],\n    isFirstColumn: (0, _computed.equal)('columnMeta.index', 0),\n    isLastColumn: (0, _computed.readOnly)('columnMeta.isLastRendered'),\n    isFixedLeft: (0, _computed.equal)('columnMeta.isFixed', 'left'),\n    isFixedRight: (0, _computed.equal)('columnMeta.isFixed', 'right'),\n    isSlack: (0, _computed.readOnly)('columnMeta.isSlack'),\n    // prevents `data-test-ember-table-slack=\"false\"` on non-slack cells in Ember 2.4\n    slackAttribute: (0, _object.computed)('isSlack', function () {\n      return this.get('isSlack') ? true : null;\n    }),\n    /**\n     Indicates the text alignment of this cell\n    */\n    textAlign: (0, _object.computed)('columnValue.textAlign', function () {\n      var textAlign = this.get('columnValue.textAlign');\n      if (['left', 'center', 'right'].includes(textAlign)) {\n        return \"ember-table__text-align-\".concat(textAlign);\n      }\n      return null;\n    }),\n    // eslint-disable-next-line\n    scheduleUpdateStyles: (0, _observer.observer)('columnMeta.{width,offsetLeft,offsetRight}', 'isFixedLeft', 'isFixedRight', function () {\n      (0, _runloop.scheduleOnce)('actions', this, 'updateStyles');\n    }),\n    updateStyles: function updateStyles() {\n      if (typeof FastBoot === 'undefined' && this.element) {\n        var width = \"\".concat(this.get('columnMeta.width'), \"px\");\n        this.element.style.width = width;\n        this.element.style.minWidth = width;\n        this.element.style.maxWidth = width;\n        this.element.style.left = this.get('isFixedLeft') ? \"\".concat(Math.round(this.get('columnMeta.offsetLeft')), \"px\") : null;\n        this.element.style.right = this.get('isFixedRight') ? \"\".concat(Math.round(this.get('columnMeta.offsetRight')), \"px\") : null;\n        if (this.get('isSlack')) {\n          this.element.style.paddingLeft = 0;\n          this.element.style.paddingRight = 0;\n          this.element.style.display = width === '0px' ? 'none' : 'table-cell';\n        }\n      }\n    },\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      this.updateStyles();\n    }\n  });\n});","define(\"ember-table/components/-private/row-wrapper\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/object/computed\", \"@ember/array\", \"ember-table/-private/utils/ember\", \"ember-table/-private/utils/array\", \"ember-table/-private/utils/observer\", \"@ember/template-factory\"], function (_exports, _component, _object, _computed, _array, _ember, _array2, _observer, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var CellWrapper = _object.default.extend({\n    /* eslint-disable-next-line ember/no-observers, ember-best-practices/no-observers */\n    columnValueValuePathDidChange: (0, _observer.observer)('columnValue.valuePath', function () {\n      var columnValuePath = (0, _object.get)(this, 'columnValue.valuePath');\n      var cellValue = columnValuePath ? (0, _computed.alias)(\"rowValue.\".concat(columnValuePath)) : null;\n      (0, _object.defineProperty)(this, 'cellValue', cellValue);\n      (0, _ember.notifyPropertyChange)(this, 'cellValue');\n    }),\n    cellMeta: (0, _object.computed)('rowMeta', 'columnValue', function () {\n      var rowMeta = (0, _object.get)(this, 'rowMeta');\n      var columnValue = (0, _object.get)(this, 'columnValue');\n      if (!rowMeta._cellMetaCache.has(columnValue)) {\n        rowMeta._cellMetaCache.set(columnValue, _object.default.create());\n      }\n      return rowMeta._cellMetaCache.get(columnValue);\n    })\n  });\n  var layout = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield this.api}}\n  */\n  {\n    \"id\": \"pY/iJbm2\",\n    \"block\": \"[[[18,1,[[30,0,[\\\"api\\\"]]]]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"/opt/atlassian/pipelines/agent/build/ember-table/components/-private/row-wrapper.js\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = _component.default.extend({\n    layout: layout,\n    tagName: '',\n    canSelect: undefined,\n    checkboxSelectionMode: undefined,\n    columnMetaCache: undefined,\n    columns: undefined,\n    rowMetaCache: undefined,\n    rowSelectionMode: undefined,\n    rowToggleMode: undefined,\n    rowValue: undefined,\n    rowsCount: undefined,\n    init: function init() {\n      this._super.apply(this, arguments);\n      this._cells = (0, _array.A)([]);\n    },\n    destroy: function destroy() {\n      this._cells.forEach(function (cell) {\n        return cell.destroy();\n      });\n      this._super.apply(this, arguments);\n    },\n    api: (0, _object.computed)('rowValue', 'rowMeta', 'cells', 'canSelect', 'rowSelectionMode', 'rowToggleMode', 'rowsCount', function () {\n      var rowValue = this.get('rowValue');\n      var rowMeta = this.get('rowMeta');\n      var cells = this.get('cells');\n      var canSelect = this.get('canSelect');\n      var rowSelectionMode = canSelect ? this.get('rowSelectionMode') : 'none';\n      var rowToggleMode = this.get('rowToggleMode');\n      var rowsCount = this.get('rowsCount');\n      return {\n        rowValue: rowValue,\n        rowMeta: rowMeta,\n        cells: cells,\n        rowSelectionMode: rowSelectionMode,\n        rowToggleMode: rowToggleMode,\n        rowsCount: rowsCount\n      };\n    }),\n    rowMeta: (0, _object.computed)('rowValue', function () {\n      var rowValue = this.get('rowValue');\n      var rowMetaCache = this.get('rowMetaCache');\n      return rowMetaCache.get(rowValue);\n    }),\n    cells: (0, _object.computed)('rowValue', 'rowMeta', 'columns.[]', 'canSelect', 'checkboxSelectionMode', 'rowSelectionMode', function () {\n      var _this = this;\n      var columns = this.get('columns');\n      var numColumns = (0, _object.get)(columns, 'length');\n      var rowValue = this.get('rowValue');\n      var rowMeta = this.get('rowMeta');\n      var rowsCount = this.get('rowsCount');\n      var canSelect = this.get('canSelect');\n      var checkboxSelectionMode = canSelect ? this.get('checkboxSelectionMode') : 'none';\n      var rowSelectionMode = canSelect ? this.get('rowSelectionMode') : 'none';\n      var _cells = this._cells;\n      if (numColumns !== _cells.length) {\n        while (_cells.length < numColumns) {\n          _cells.pushObject(CellWrapper.create());\n        }\n        while (_cells.length > numColumns) {\n          _cells.popObject().destroy();\n        }\n      }\n      _cells.forEach(function (cell, i) {\n        var columnValue = (0, _array2.objectAt)(columns, i);\n        var columnMeta = _this.get('columnMetaCache').get(columnValue);\n\n        // eslint-disable-next-line ember/no-side-effects, ember-best-practices/no-side-effect-cp\n        (0, _object.setProperties)(cell, {\n          checkboxSelectionMode: checkboxSelectionMode,\n          columnMeta: columnMeta,\n          columnValue: columnValue,\n          rowMeta: rowMeta,\n          rowSelectionMode: rowSelectionMode,\n          rowValue: rowValue,\n          rowsCount: rowsCount\n        });\n      });\n      return _cells;\n    })\n  });\n});","define(\"ember-table/components/-private/scroll-indicators/component\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/object/computed\", \"@ember/runloop\", \"@ember/string\", \"@ember/template\", \"@ember/utils\", \"ember-table/-private/utils/observer\", \"ember-table/components/-private/scroll-indicators/template\"], function (_exports, _component, _object, _computed, _runloop, _string, _template, _utils, _observer, _template2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* global ResizeSensor */\n\n  /**\n     Computed property macro that builds the CSS styles (position, height)\n     for each horizontal scroll indicator element.\n  \n     @param {string} side - which side we are computing styles for: `left` or `right`\n   */\n  var horizontalIndicatorStyle = function horizontalIndicatorStyle(side) {\n    return (0, _object.computed)(\"columnTree.\".concat(side, \"FixedNodes.@each.width\"), 'overflowHeight', 'scrollbarWidth', 'tableHeight', function () {\n      var style = [];\n\n      // left/right position\n      var offset = 0;\n      var fixedNodes = this.get(\"columnTree.\".concat(side, \"FixedNodes\"));\n      if (!(0, _utils.isEmpty)(fixedNodes)) {\n        var fixedWidth = fixedNodes.reduce(function (acc, node) {\n          return acc + node.get('width');\n        }, 0);\n        offset += fixedWidth;\n      }\n      if (side === 'right') {\n        var scrollbarWidth = this.get('scrollbarWidth') || 0;\n        offset += scrollbarWidth;\n      }\n      style.push(\"\".concat(side, \":\").concat(offset, \"px;\"));\n\n      // height\n      var overflowHeight = this.get('overflowHeight');\n      if (!(0, _utils.isNone)(overflowHeight)) {\n        var tableHeight = this.get('tableHeight');\n        var height = (0, _utils.isNone)(tableHeight) ? overflowHeight : Math.min(overflowHeight, tableHeight);\n        style.push(\"height:\".concat(height, \"px;\"));\n      }\n      return (0, _template.htmlSafe)(style.join(''));\n    });\n  };\n\n  /**\n     Computed property macro that builds the CSS styles (position, width)\n     for each vertical scroll indicator element.\n  \n     @param {string} location - which location we are computing styles for: `top` or `bottom`\n   */\n  var verticalIndicatorStyle = function verticalIndicatorStyle(location) {\n    return (0, _object.computed)(\"columnTree.\".concat(location, \"FixedNodes.@each.width\"), 'overflowHeight', 'overflowWidth', 'tableWidth', 'headerHeight', 'scrollbarHeight', 'visibleFooterHeight', 'footerRatio', function () {\n      var style = [];\n      var offset = 0;\n\n      // top/bottom offset\n      if (location === 'top') {\n        var headerHeight = this.get('headerHeight') || 0;\n        offset += headerHeight;\n      }\n      if (location === 'bottom') {\n        var visibleFooterHeight = this.get('visibleFooterHeight') || 0;\n        var scrollbarHeight = this.get('scrollbarHeight') || 0;\n        var footerRatio = this.get('footerRatio');\n\n        // when footer occupies > 50% of the overflow height, we are now\n        // scrolling the footer rows, so indicator should jump to table bottom\n        if (footerRatio <= 0.5) {\n          offset += visibleFooterHeight;\n        }\n        offset += scrollbarHeight;\n      }\n      style.push(\"\".concat(location, \":\").concat(offset, \"px;\"));\n\n      // width\n      var tableWidth = this.get('tableWidth');\n      if (!(0, _utils.isNone)(tableWidth)) {\n        var overflowWidth = this.get('overflowWidth');\n        var width = Math.min(tableWidth, overflowWidth);\n        style.push(\"width:\".concat(width, \"px;\"));\n      }\n      return (0, _template.htmlSafe)(style.join(''));\n    });\n  };\n\n  /**\n     Computed property macro that builds a boolean to determine whether or not\n     to show a scroll indicator in the given position.\n  \n     @param {string} location - `left`, `right`, `top`, or `bottom`\n   */\n  var showIndicator = function showIndicator(location) {\n    var scrollProp = \"scroll\".concat((0, _string.capitalize)(location));\n    return (0, _object.computed)('enabledIndicators', scrollProp, function () {\n      return this.get('enabledIndicators').includes(location) && this.get(scrollProp) > 0;\n    });\n  };\n  var _default = _exports.default = _component.default.extend({\n    layout: _template2.default,\n    tagName: '',\n    /**\n      The API object passed in by the table\n       @argument api\n      @required\n      @type object\n    */\n    api: null,\n    scrollLeft: null,\n    scrollRight: null,\n    scrollTop: null,\n    scrollBottom: null,\n    scrollbarWidth: null,\n    scrollbarHeight: null,\n    overflowHeight: null,\n    overflowWidth: null,\n    tableHeight: null,\n    tableWidth: null,\n    headerHeight: null,\n    visibleFooterHeight: null,\n    footerRatio: null,\n    columnTree: (0, _computed.readOnly)('api.columnTree'),\n    containerWidthAdjustment: (0, _computed.readOnly)('api.columnTree.containerWidthAdjustment'),\n    scrollIndicators: (0, _computed.readOnly)('api.scrollIndicators'),\n    tableScrollId: (0, _computed.readOnly)('api.tableId'),\n    showLeft: showIndicator('left'),\n    showRight: showIndicator('right'),\n    showTop: showIndicator('top'),\n    showBottom: showIndicator('bottom'),\n    leftStyle: horizontalIndicatorStyle('left'),\n    rightStyle: horizontalIndicatorStyle('right'),\n    topStyle: verticalIndicatorStyle('top'),\n    bottomStyle: verticalIndicatorStyle('bottom'),\n    enabledIndicators: (0, _object.computed)('scrollIndicators', function () {\n      switch (this.get('scrollIndicators')) {\n        case true:\n        case 'all':\n          return ['left', 'right', 'top', 'bottom'];\n        case 'horizontal':\n          return ['left', 'right'];\n        case 'vertical':\n          return ['top', 'bottom'];\n        case false:\n        case 'none':\n        default:\n          return [];\n      }\n    }),\n    init: function init() {\n      var _this = this;\n      this._super.apply(this, arguments);\n\n      // common callback for event listeners; the `bind` appears redundant, but is\n      // required by the test suite\n      this._updateIndicators = (0, _runloop.bind)(this, function () {\n        (0, _runloop.scheduleOnce)('actions', _this, _this.updateIndicators);\n      });\n    },\n    _addListeners: function _addListeners() {\n      this._isListening = true;\n\n      // cache static elements for performance\n      this._scrollElement = document.getElementById(this.get('tableScrollId'));\n      this._tableElement = this._scrollElement.querySelector('table');\n      this._headerElement = this._tableElement.querySelector('thead');\n      this._scrollElement.addEventListener('scroll', this._updateIndicators);\n      this._tableResizeSensor = new ResizeSensor(this._tableElement, this._updateIndicators);\n      this._addFooterListeners();\n    },\n    _removeListeners: function _removeListeners() {\n      this._isListening = false;\n      this._scrollElement.removeEventListener('scroll', this._updateIndicators);\n      this._tableResizeSensor.detach();\n      this._removeFooterListeners();\n    },\n    // footer can appear/disappear dynamically, so this listener needs to be\n    // added/removed occasionally\n    _addFooterListeners: function _addFooterListeners() {\n      var footerElement = this._tableElement.querySelector('tfoot');\n      if (!footerElement) {\n        return;\n      }\n      if (!this._footerResizeSensor) {\n        // triggers when entire footer changes size\n        this._footerResizeSensor = new ResizeSensor(footerElement, this._updateIndicators);\n      }\n      if (!this._footerMutationObserver) {\n        // triggers when individual footer cells are updated by sticky polyfill\n        this._footerMutationObserver = new MutationObserver(this._updateIndicators);\n        this._footerMutationObserver.observe(footerElement, {\n          subtree: true,\n          attributes: true,\n          attributesFilter: ['style'],\n          childList: true\n        });\n      }\n    },\n    _removeFooterListeners: function _removeFooterListeners() {\n      if (this._footerResizeSensor) {\n        this._footerResizeSensor.detach();\n        this._footerResizeSensor = null;\n      }\n      if (this._footerMutationObserver) {\n        this._footerMutationObserver.disconnect();\n        this._footerMutationObserver = null;\n      }\n    },\n    /**\n      Recomputes table geometry and triggers update of scroll indicator positions\n      and dimensions.\n    */\n    updateIndicators: function updateIndicators() {\n      var el = this._scrollElement;\n      var table = this._tableElement;\n      var header = this._headerElement;\n      var scrollLeft = el.scrollLeft;\n      var scrollRight = el.scrollWidth - el.clientWidth - scrollLeft;\n      var scrollTop = el.scrollTop;\n      var scrollBottom = el.scrollHeight - el.clientHeight - scrollTop;\n      var scrollbarWidth = el.offsetWidth - el.clientWidth;\n      var scrollbarHeight = el.offsetHeight - el.clientHeight;\n      var overflowHeight = el.clientHeight;\n      var overflowWidth = el.clientWidth;\n      var tableWidth = table ? table.offsetWidth : null;\n      var tableHeight = table ? table.offsetHeight : null;\n      var headerHeight = header ? header.offsetHeight : null;\n\n      // part of the footer can be obscured until the table is scrolled to the\n      // bottom; see `addon/-private/sticky/table-sticky-polyfill.js`\n      var visibleFooterHeight = 0;\n      var footerCell = table.querySelector('tfoot td');\n      if (footerCell) {\n        this._addFooterListeners();\n        var footerCellY = footerCell.getBoundingClientRect().y;\n        var overflowRect = el.getBoundingClientRect();\n        var scale = el.offsetHeight / overflowRect.height;\n        visibleFooterHeight = Math.min(el.clientHeight - scale * (footerCellY - overflowRect.y), el.clientHeight);\n\n        // can be negative if sticky footers don't work in browser (e.g. Safari)\n        visibleFooterHeight = Math.max(visibleFooterHeight, 0);\n      } else {\n        this._removeFooterListeners();\n      }\n      var footerRatio;\n      if (overflowHeight > 0) {\n        footerRatio = visibleFooterHeight / el.offsetHeight;\n      }\n      this.setProperties({\n        scrollLeft: scrollLeft,\n        scrollRight: scrollRight,\n        scrollTop: scrollTop,\n        scrollBottom: scrollBottom,\n        scrollbarHeight: scrollbarHeight,\n        scrollbarWidth: scrollbarWidth,\n        overflowHeight: overflowHeight,\n        overflowWidth: overflowWidth,\n        tableHeight: tableHeight,\n        tableWidth: tableWidth,\n        headerHeight: headerHeight,\n        visibleFooterHeight: visibleFooterHeight,\n        footerRatio: footerRatio\n      });\n    },\n    _updateListeners: function _updateListeners() {\n      var hasIndicators = !(0, _utils.isEmpty)(this.get('enabledIndicators'));\n      if (hasIndicators && !this._isListening) {\n        this._addListeners();\n        this._updateIndicators();\n      } else if (!hasIndicators && this._isListening) {\n        this._removeListeners();\n      }\n    },\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      this._updateListeners();\n      (0, _observer.addObserver)(this, 'enabledIndicators', this._updateListeners);\n    },\n    willDestroy: function willDestroy() {\n      if (this._isListening) {\n        this._removeListeners();\n      }\n    }\n  });\n});","define(\"ember-table/components/-private/scroll-indicators/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.showLeft}}\n    <div\n      data-test-ember-table-scroll-indicator=\"left\"\n      class=\"scroll-indicator scroll-indicator__left\"\n      style={{this.leftStyle}}\n    ></div>\n  {{/if}}\n  {{#if this.showRight}}\n    <div\n      data-test-ember-table-scroll-indicator=\"right\"\n      class=\"scroll-indicator scroll-indicator__right\"\n      style={{this.rightStyle}}\n    ></div>\n  {{/if}}\n  {{#if this.showTop}}\n    <div\n      data-test-ember-table-scroll-indicator=\"top\"\n      class=\"scroll-indicator scroll-indicator__top\"\n      style={{this.topStyle}}\n    ></div>\n  {{/if}}\n  {{#if this.showBottom}}\n    <div\n      data-test-ember-table-scroll-indicator=\"bottom\"\n      class=\"scroll-indicator scroll-indicator__bottom\"\n      style={{this.bottomStyle}}\n    ></div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"zjY3hHL4\",\n    \"block\": \"[[[41,[30,0,[\\\"showLeft\\\"]],[[[1,\\\"  \\\"],[10,0],[14,\\\"data-test-ember-table-scroll-indicator\\\",\\\"left\\\"],[14,0,\\\"scroll-indicator scroll-indicator__left\\\"],[15,5,[30,0,[\\\"leftStyle\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"showRight\\\"]],[[[1,\\\"  \\\"],[10,0],[14,\\\"data-test-ember-table-scroll-indicator\\\",\\\"right\\\"],[14,0,\\\"scroll-indicator scroll-indicator__right\\\"],[15,5,[30,0,[\\\"rightStyle\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"showTop\\\"]],[[[1,\\\"  \\\"],[10,0],[14,\\\"data-test-ember-table-scroll-indicator\\\",\\\"top\\\"],[14,0,\\\"scroll-indicator scroll-indicator__top\\\"],[15,5,[30,0,[\\\"topStyle\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"showBottom\\\"]],[[[1,\\\"  \\\"],[10,0],[14,\\\"data-test-ember-table-scroll-indicator\\\",\\\"bottom\\\"],[14,0,\\\"scroll-indicator scroll-indicator__bottom\\\"],[15,5,[30,0,[\\\"bottomStyle\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"ember-table/components/-private/scroll-indicators/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-table-loading-more/component\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/runloop\"], function (_exports, _component, _computed, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* global ResizeSensor */\n  /**\n    Renders a custom loading indicator beneath the table body. Can be used to\n    implement an infinite scroll pattern. Provides optional centering to keep the\n    user-provided block centered horizontally in the scroll viewport.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} />\n      <t.body @rows={{this.rows}} />\n  \n      <t.loadingMore\n        @isLoading={{this.isLoadingMore}}\n        @canLoadMore={{this.canLoadMore}}\n        @center={{true}}>\n  \n        {{!-- custom spinner --}}\n        <img class=\"spinner\" src=\"spinner.gif\"/>\n      </t.loadingMore>\n    </EmberTable>\n    ```\n  \n    @class <EmberTableLoadingMore />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    classNames: ['ember-table-loading-more'],\n    attributeBindings: ['dataTestEmberTableLoadingMore:data-test-ember-table-loading-more'],\n    dataTestEmberTableLoadingMore: true,\n    unwrappedApi: (0, _computed.or)('api.api', 'api'),\n    scrollElement: (0, _computed.readOnly)('unwrappedApi.columnTree.container'),\n    /**\n     * Boolean flag specifying if additional rows are being loaded. If true,\n     * indicator block will be visible below the table body.\n     *\n     * @argument isLoading\n     * @type boolean\n     */\n    isLoading: false,\n    /**\n     * Boolean flag specifying if there are more rows yet to load. If false, the\n     * indicator block will be removed from the DOM.\n     *\n     * @argument canLoadMore\n     * @type boolean\n     */\n    canLoadMore: true,\n    /**\n     * Boolean flag specifying if the indicator block should be centered\n     * horizontally in the scroll viewport.\n     *\n     * @argument center\n     * @type boolean\n     */\n    center: true,\n    init: function init() {\n      var _this = this;\n      this._super.apply(this, arguments);\n      this._updateTransform = function () {\n        return (0, _runloop.scheduleOnce)('afterRender', _this, 'updateTransform');\n      };\n    },\n    didReceiveAttrs: function didReceiveAttrs() {\n      this._super.apply(this, arguments);\n\n      // ignore the first run of `didReceiveAttrs` before element exists\n      if (!this.element) {\n        return;\n      }\n\n      // no observers here, no sir.\n      var canLoadMore = this.get('canLoadMore');\n      if (canLoadMore !== this._canLoadMore) {\n        (0, _runloop.scheduleOnce)('afterRender', this, 'canLoadMoreChanged');\n        this._canLoadMore = canLoadMore;\n      }\n      var isLoading = this.get('isLoading');\n      if (isLoading !== this._isLoading) {\n        (0, _runloop.scheduleOnce)('afterRender', this, 'isLoadingChanged');\n        this._isLoading = isLoading;\n      }\n      var center = this.get('center');\n      if (center !== this._center) {\n        (0, _runloop.scheduleOnce)('afterRender', this, 'centerChanged');\n        this._center = center;\n      }\n    },\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      this.canLoadMoreChanged();\n      this.isLoadingChanged();\n      this.centerChanged();\n    },\n    willDestroyElement: function willDestroyElement() {\n      if (this.get('center')) {\n        this.removeListeners();\n      }\n      this._super.apply(this, arguments);\n    },\n    canLoadMoreChanged: function canLoadMoreChanged() {\n      var _this2 = this;\n      if (this.get('canLoadMore')) {\n        this.setIncludedInLayout(true);\n      } else {\n        // Delay removal to minimize impact on scroll position. Usually any new\n        // rows have been rendered by now, but sometimes they are not, and\n        // removing this element from the DOM will cause a small scrollback.\n        (0, _runloop.next)(function () {\n          return (0, _runloop.schedule)('afterRender', _this2, 'setIncludedInLayout', false);\n        });\n      }\n    },\n    isLoadingChanged: function isLoadingChanged() {\n      this.setVisible(this.get('isLoading'));\n    },\n    centerChanged: function centerChanged() {\n      this.updateTransform();\n      if (this.get('center')) {\n        this.addListeners();\n      } else {\n        this.removeListeners();\n      }\n    },\n    addListeners: function addListeners() {\n      var scrollElement = this.get('scrollElement');\n      scrollElement.addEventListener('scroll', this._updateTransform);\n      this._scrollElementResizeSensor = new ResizeSensor(scrollElement, this._updateTransform);\n    },\n    removeListeners: function removeListeners() {\n      this.get('scrollElement').removeEventListener('scroll', this._updateTransform);\n      if (this._scrollElementResizeSensor) {\n        this._scrollElementResizeSensor.detach();\n      }\n    },\n    updateTransform: function updateTransform() {\n      var scrollElement = this.get('scrollElement');\n\n      // this method can be triggered by the resize sensor before the element\n      // (and `scrollElement`) exists\n      if (!scrollElement) {\n        return;\n      }\n      var translateX = 0;\n      if (this.get('center')) {\n        // keep indicator centered in viewport, even if user scrolls left or right\n        translateX = Math.round(scrollElement.scrollLeft + (scrollElement.clientWidth - this.element.clientWidth) / 2);\n      }\n      this.setTranslateX(translateX);\n    },\n    setIncludedInLayout: function setIncludedInLayout(value) {\n      this.element.style.display = value ? '' : 'none';\n    },\n    setVisible: function setVisible(value) {\n      this.element.style.visibility = value ? '' : 'hidden';\n    },\n    setTranslateX: function setTranslateX(value) {\n      this.element.style.transform = value === 0 ? '' : \"translateX(\".concat(value, \"px)\");\n    }\n  });\n});","define(\"ember-table/components/ember-table-simple-checkbox\", [\"exports\", \"@ember/component\", \"ember-table/-private/utils/default-to\"], function (_exports, _component, _defaultTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _component.default.extend({\n    tagName: 'input',\n    attributeBindings: ['ariaLabel:aria-label', 'checked', 'disabled', 'indeterminate', 'type', 'value', 'dataTestSelectRow:data-test-select-row', 'dataTestCollapseRow:data-test-collapse-row'],\n    ariaLabel: undefined,\n    checked: (0, _defaultTo.default)(false),\n    disabled: (0, _defaultTo.default)(false),\n    indeterminate: (0, _defaultTo.default)(false),\n    onChange: null,\n    onClick: null,\n    type: 'checkbox',\n    value: null,\n    click: function click(event) {\n      var _this$onClick;\n      (_this$onClick = this.onClick) === null || _this$onClick === void 0 ? void 0 : _this$onClick.call(this, event);\n    },\n    change: function change(event) {\n      var _this$onChange;\n      var checked = this.element.checked;\n      var indeterminate = this.element.indeterminate;\n      var value = this.get('value');\n\n      // Checked and indeterminate state have been changed, but that's not DDAU!\n      // Reset the change, send the action and wait for it to be changed manually\n      this.element.checked = this.get('checked');\n      this.element.indeterminate = this.get('indeterminate');\n      (_this$onChange = this.onChange) === null || _this$onChange === void 0 ? void 0 : _this$onChange.call(this, checked, {\n        value: value,\n        indeterminate: indeterminate\n      }, event);\n    }\n  });\n});","define(\"ember-table/components/ember-table/component\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template\", \"ember-table/-private/sticky/table-sticky-polyfill\", \"ember-table/components/ember-table/template\"], function (_exports, _component, _object, _template, _tableStickyPolyfill, _template2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n    The primary Ember Table component. This component represents the root of the\n    table, and manages high level state of all of its subcomponents. It does not\n    have any arguments or actions itself - instead, all of those concerns are\n    delegated to its children, who communicate to each other via the API.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} />\n      <t.body @rows={{this.rows}} />\n      <t.foot @rows={{this.footerRows}} />\n    </EmberTable>\n    ```\n  \n    @yield {object} table - the API object yielded by the table\n    @yield {Component} table.head - The table header component\n    @yield {Component} table.body - The table body component\n    @yield {Component} table.foot - The table footer component\n    @class <EmberTable />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template2.default,\n    classNames: ['ember-table'],\n    attributeBindings: ['dataTestEmberTable:data-test-ember-table'],\n    dataTestEmberTable: true,\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      var thead = this.element.querySelector('thead');\n      var tfoot = this.element.querySelector('tfoot');\n      if (thead) {\n        (0, _tableStickyPolyfill.setupTableStickyPolyfill)(thead);\n      }\n      if (tfoot) {\n        (0, _tableStickyPolyfill.setupTableStickyPolyfill)(tfoot);\n      }\n    },\n    willDestroyElement: function willDestroyElement() {\n      var thead = this.element.querySelector('thead');\n      var tfoot = this.element.querySelector('tfoot');\n      if (thead) {\n        (0, _tableStickyPolyfill.teardownTableStickyPolyfill)(this.element.querySelector('thead'));\n      }\n      if (tfoot) {\n        (0, _tableStickyPolyfill.teardownTableStickyPolyfill)(this.element.querySelector('tfoot'));\n      }\n      this._super.apply(this, arguments);\n    },\n    tableStyle: (0, _object.computed)('tableWidth', function () {\n      return (0, _template.htmlSafe)(\"width: \".concat(this.get('tableWidth'), \"px;\"));\n    }),\n    api: (0, _object.computed)(function () {\n      return {\n        columns: null,\n        registerColumnTree: this.registerColumnTree.bind(this),\n        tableId: \"\".concat(this.elementId, \"-overflow\")\n      };\n    }),\n    registerColumnTree: function registerColumnTree(columnTree) {\n      this.set('api.columnTree', columnTree);\n    }\n  });\n});","define(\"ember-table/components/ember-table/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    data-test-ember-table-overflow\n    class=\"ember-table-overflow\"\n    id=\"{{this.elementId}}-overflow\"\n  >\n    <table>\n      {{yield (hash\n        api=this.api\n        head=(component \"ember-thead\" api=this.api)\n        body=(component \"ember-tbody\" api=this.api)\n        foot=(component \"ember-tfoot\" api=this.api)\n        loadingMore=(component \"ember-table-loading-more\" api=this.api)\n      )}}\n    </table>\n  </div>\n  <EmberTablePrivate::ScrollIndicators @api={{this.api}} />\n  \n  */\n  {\n    \"id\": \"yrYp9NGO\",\n    \"block\": \"[[[10,0],[14,\\\"data-test-ember-table-overflow\\\",\\\"\\\"],[14,0,\\\"ember-table-overflow\\\"],[15,1,[29,[[30,0,[\\\"elementId\\\"]],\\\"-overflow\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n    \\\"],[18,1,[[28,[37,3],null,[[\\\"api\\\",\\\"head\\\",\\\"body\\\",\\\"foot\\\",\\\"loadingMore\\\"],[[30,0,[\\\"api\\\"]],[50,\\\"ember-thead\\\",0,null,[[\\\"api\\\"],[[30,0,[\\\"api\\\"]]]]],[50,\\\"ember-tbody\\\",0,null,[[\\\"api\\\"],[[30,0,[\\\"api\\\"]]]]],[50,\\\"ember-tfoot\\\",0,null,[[\\\"api\\\"],[[30,0,[\\\"api\\\"]]]]],[50,\\\"ember-table-loading-more\\\",0,null,[[\\\"api\\\"],[[30,0,[\\\"api\\\"]]]]]]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[8,[39,5],null,[[\\\"@api\\\"],[[30,0,[\\\"api\\\"]]]],null],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"table\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ember-table-private/scroll-indicators\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-table/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-tbody/component\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/object\", \"ember-table/-private/utils/observer\", \"@ember/object/computed\", \"ember-table/-private/collapse-tree\", \"ember-table/-private/utils/default-to\", \"ember-table/components/ember-tbody/template\", \"@ember/debug\"], function (_exports, _component, _runloop, _object, _observer, _computed, _collapseTree, _defaultTo, _template, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.setSetupRowCountForTest = setSetupRowCountForTest;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  var setupRowCountForTest = false;\n  function setSetupRowCountForTest(bool) {\n    setupRowCountForTest = bool;\n  }\n\n  /**\n    The table body component. This component manages the main bulk of the rows of\n    the table, provided occlusion for them and managing their behavior. It yields\n    a template for each row, and an API that contains a row component, the row\n    value, and the meta object for the row.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} />\n  \n      <t.body @rows={{this.rows}} as |b|>\n        <b.row>\n      </t.body>\n    </EmberTable>\n    ```\n  \n    @yield {object} body - the API object yielded by the table body\n    @yield {Component} body.row - The table row component\n  \n    @yield {object} body.rowValue - The value for the currently yielded row\n    @yield {object} body.rowMeta - The meta for the currently yielded row\n    @class <EmberTbody />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    tagName: 'tbody',\n    /**\n      The API object passed in by the table\n       @argument api\n      @required\n      @type object\n    */\n    api: null,\n    unwrappedApi: (0, _computed.or)('api.api', 'api'),\n    columns: (0, _computed.readOnly)('unwrappedApi.columnTree.leaves'),\n    columnMetaCache: (0, _computed.readOnly)('unwrappedApi.columnTree.columnMetaCache'),\n    /**\n      Sets which row selection behavior to follow. Possible values are 'none'\n      (clicking on a row does nothing), 'single' (clicking on a row selects it and\n      deselects other rows), and 'multiple' (multiple rows can be selected through\n      ctrl/cmd-click or shift-click).\n       @argument checkboxSelectionMode\n      @type string? ('multiple')\n    */\n    checkboxSelectionMode: (0, _defaultTo.default)(_collapseTree.SELECT_MODE.MULTIPLE),\n    /**\n      Sets which checkbox selection behavior to follow. Possible values are 'none'\n      (clicking on a row does nothing), 'single' (clicking on a row selects it and\n      deselects other rows), and 'multiple' (multiple rows can be selected through\n      ctrl/cmd-click or shift-click).\n       @argument rowSelectionMode\n      @type string? ('multiple')\n    */\n    rowSelectionMode: (0, _defaultTo.default)(_collapseTree.SELECT_MODE.MULTIPLE),\n    /**\n      When true, this option enables the toggling of rows without using the ctrlKey or metaKey.\n       @argument rowToggleMode\n      @type boolean\n    */\n    rowToggleMode: (0, _defaultTo.default)(false),\n    /**\n      When true, this option causes selecting all of a node's children to also\n      select the node itself.\n       @argument selectingChildrenSelectsParent\n      @type boolean\n    */\n    selectingChildrenSelectsParent: (0, _defaultTo.default)(true),\n    /**\n      The currently selected rows. Can either be an array or an individual row.\n       @argument selection\n      @type array|object|null\n    */\n    selection: null,\n    /**\n      A function that will override how selection is compared to row value.\n       @argument selectionMatchFunction\n      @type function?\n    */\n    selectionMatchFunction: null,\n    /**\n      An action that is called when the row selection of the table changes.\n      Will be called with either an array or individual row, depending on the\n      checkboxSelectionMode.\n       @argument onSelect\n      @type Action?\n      @param {object} selection - The new selection\n    */\n    onSelect: null,\n    /**\n      Estimated height for each row. This number is used to decide how many rows\n      will be rendered at initial rendering.\n       @argument estimateRowHeight\n      @type number? (30)\n    */\n    estimateRowHeight: (0, _defaultTo.default)(30),\n    /**\n      A flag that controls if all rows have same static height or not. By default\n      it is set to false and row height is dependent on its internal content. If\n      it is set to true, all rows have the same height equivalent to\n      estimateRowHeight.\n       @argument staticHeight\n      @type boolean? (false)\n    */\n    staticHeight: (0, _defaultTo.default)(false),\n    /**\n      The number of extra rows to render on either side of the table's viewport\n       @argument bufferSize\n      @type number? (1)\n    */\n    bufferSize: (0, _defaultTo.default)(1),\n    /**\n      A flag that tells the table to render all of its rows at once.\n       @argument renderAll\n      @type boolean? (false)\n    */\n    renderAll: (0, _defaultTo.default)(false),\n    /**\n      An action that is triggered when the table reaches the first row.\n       @argument firstReached\n      @type Action?\n    */\n    firstReached: null,\n    /**\n      An action that is triggered when the table reaches the last row.\n       @argument lastReached\n      @type Action?\n    */\n    lastReached: null,\n    /**\n      An action that is triggered when the first visible row of the table changes.\n       @argument firstVisibleChanged\n      @type Action?\n    */\n    firstVisibleChanged: null,\n    /**\n      An action that is triggered when the last visible row of the table changes.\n       @argument lastVisibleChanged\n      @type Action?\n    */\n    lastVisibleChanged: null,\n    /**\n      Boolean flag that enables tree behavior if items have a `children` property\n       @argument enableTree\n      @type boolean? (true)\n    */\n    enableTree: (0, _defaultTo.default)(true),\n    /**\n      Boolean flag that enables collapsing tree nodes\n       @argument enableCollapse\n      @type boolean? (true)\n    */\n    enableCollapse: (0, _defaultTo.default)(true),\n    /**\n      The row items that the table should display\n       @argument rows\n      @type array? ([])\n    */\n    rows: (0, _defaultTo.default)(function () {\n      return [];\n    }),\n    /**\n      This key is the property used by the collection to determine whether an\n      array mutation is an append, prepend, or complete replacement. It is also\n      the key that is passed to the actions, and can be used to restore scroll\n      position with `idForFirstItem`. This is passed through to the\n      vertical-collection.\n       @argument key\n      @type string? ('@identity')\n    */\n    key: (0, _defaultTo.default)('@identity'),\n    /**\n      The property is passed through to the vertical-collection. If set, upon initialization\n      the scroll position will be set such that the item\n      with the provided id is at the top left on screen.\n      If the item with id cannot be found, scrollTop is set to 0.\n       @argument idForFirstItem\n      @type string?\n    */\n    idForFirstItem: null,\n    /**\n      A selector string that will select the element from\n      which to calculate the viewable height.\n       @argument containerSelector\n      @type string? (<tableId>)\n    */\n    containerSelector: (0, _defaultTo.default)(''),\n    /**\n      Whether or not the table can select, is true if an `onSelect` action was\n      passed to the table.\n    */\n    canSelect: (0, _computed.bool)('onSelect'),\n    dataTestRowCount: null,\n    attributeBindings: ['dataTestRowCount:data-test-row-count'],\n    init: function init() {\n      var _this$onSelect,\n        _this = this;\n      this._super.apply(this, arguments);\n\n      /**\n        The map that contains row meta information for this table.\n      */\n      this.rowMetaCache = new Map();\n\n      /**\n        A data structure that the table uses wrapping the `rows` object. It flattens\n        the tree structure of the nodes and allows us to treat it as a flat list of\n        items. This is much more convenient for most table operations in general.\n      */\n      this.collapseTree = _collapseTree.default.create({\n        onSelect: (_this$onSelect = this.onSelect) === null || _this$onSelect === void 0 ? void 0 : _this$onSelect.bind(this)\n      });\n      this._updateCollapseTree();\n\n      /*\n       * Ember test selectors will remove data-test-row-count from the bindings,\n       * so if it is missing there is no need to all the count.\n       *\n       * Even when ember-table is testing a production build, the you may want to\n       * run tests which make assertions about row count. To implement that capability\n       * reference a boolean variable controlled by the test helpers.\n       */\n      if (setupRowCountForTest) {\n        this._isObservingDebugRowCount = true;\n        var scheduleUpdate = this._scheduleUpdate = function () {\n          (0, _runloop.scheduleOnce)('actions', _this, _this._updateDataTestRowCount);\n        };\n        this.collapseTree.addObserver('rows', scheduleUpdate);\n        this.collapseTree.addObserver('[]', scheduleUpdate);\n      }\n      (true && !(!!this.get('unwrappedApi.columnTree')) && (0, _debug.assert)('You must create an <EmberThead /> with columns before creating an <EmberTbody />', !!this.get('unwrappedApi.columnTree')));\n    },\n    _updateDataTestRowCount: function _updateDataTestRowCount() {\n      this.set('dataTestRowCount', this.get('collapseTree.length'));\n    },\n    // eslint-disable-next-line\n    _updateCollapseTree: (0, _observer.observer)('unwrappedApi.{sorts,sortFunction,compareFunction,sortEmptyLast}', 'enableCollapse', 'enableTree', 'selection', 'selectionMatchFunction', 'selectingChildrenSelectsParent', 'onSelect', function () {\n      this.collapseTree.set('sorts', this.get('unwrappedApi.sorts'));\n      this.collapseTree.set('sortFunction', this.get('unwrappedApi.sortFunction'));\n      this.collapseTree.set('compareFunction', this.get('unwrappedApi.compareFunction'));\n      this.collapseTree.set('sortEmptyLast', this.get('unwrappedApi.sortEmptyLast'));\n      this.collapseTree.set('enableCollapse', this.get('enableCollapse'));\n      this.collapseTree.set('enableTree', this.get('enableTree'));\n      this.collapseTree.set('selection', this.get('selection'));\n      this.collapseTree.set('selectionMatchFunction', this.get('selectionMatchFunction'));\n      this.collapseTree.set('selectingChildrenSelectsParent', this.get('selectingChildrenSelectsParent'));\n    }),\n    willDestroy: function willDestroy() {\n      var _iterator = _createForOfIteratorHelper(this.rowMetaCache.entries()),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var _step$value = _slicedToArray(_step.value, 2),\n            row = _step$value[0],\n            meta = _step$value[1];\n          meta.destroy();\n          this.rowMetaCache.delete(row);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n      if (this._isObservingDebugRowCount) {\n        this.collapseTree.removeObserver('rows', this._scheduleUpdate);\n        this.collapseTree.removeObserver('[]', this._scheduleUpdate);\n      }\n      this.collapseTree.destroy();\n    },\n    /**\n      Computed property which updates the CollapseTree and erases caches. This is\n      a computed for 1.12 compatibility, otherwise it would make sense to use\n      lifecycle hooks instead.\n    */\n    wrappedRows: (0, _object.computed)('rows', function () {\n      var rows = this.get('rows');\n      this.collapseTree.set('rowMetaCache', this.rowMetaCache);\n      this.collapseTree.set('rows', rows);\n      return this.collapseTree;\n    }),\n    /**\n      Computed property which calculates container selector for vertical collection.\n      It can be a custom selector provided directly to <EmberTbody />.\n      If not, it will be equal to parent <EmberTable /> `id`.\n    */\n    _containerSelector: (0, _object.computed)('containerSelector', 'unwrappedApi.tableId', function () {\n      return this.get('containerSelector') || \"#\".concat(this.get('unwrappedApi.tableId'));\n    })\n  });\n});","define(\"ember-table/components/ember-tbody/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#vertical-collection\n    items=this.wrappedRows\n    containerSelector=this._containerSelector\n  \n    estimateHeight=this.estimateRowHeight\n    key=this.key\n    staticHeight=this.staticHeight\n    bufferSize=this.bufferSize\n    renderAll=this.renderAll\n  \n    firstReached=this.firstReached\n    lastReached=this.lastReached\n    firstVisibleChanged=this.firstVisibleChanged\n    lastVisibleChanged=this.lastVisibleChanged\n    idForFirstItem=this.idForFirstItem\n  \n    as |rowValue|\n  }}\n    <EmberTablePrivate::RowWrapper\n      @rowValue={{rowValue}}\n      @columns={{this.columns}}\n      @columnMetaCache={{this.columnMetaCache}}\n      @rowMetaCache={{this.rowMetaCache}}\n      @canSelect={{this.canSelect}}\n      @checkboxSelectionMode={{this.checkboxSelectionMode}}\n      @rowSelectionMode={{this.rowSelectionMode}}\n      @rowToggleMode={{this.rowToggleMode}}\n      @rowsCount={{this.wrappedRows.length}} as |api|\n    >\n      {{#if (has-block)}}\n        {{yield (hash\n          rowValue=api.rowValue\n          rowMeta=api.rowMeta\n          cells=api.cells\n          rowSelectionMode=api.rowSelectionMode\n          rowToggleMode=api.rowToggleMode\n          rowsCount=api.rowsCount\n  \n          row=(component \"ember-tr\" api=api)\n        )}}\n      {{else}}\n        <EmberTr @api={{api}} />\n      {{/if}}\n    </EmberTablePrivate::RowWrapper>\n  \n  {{else}}\n    {{yield to='inverse'}}\n  {{/vertical-collection}}\n  \n  */\n  {\n    \"id\": \"xaecTcZC\",\n    \"block\": \"[[[6,[39,0],null,[[\\\"items\\\",\\\"containerSelector\\\",\\\"estimateHeight\\\",\\\"key\\\",\\\"staticHeight\\\",\\\"bufferSize\\\",\\\"renderAll\\\",\\\"firstReached\\\",\\\"lastReached\\\",\\\"firstVisibleChanged\\\",\\\"lastVisibleChanged\\\",\\\"idForFirstItem\\\"],[[30,0,[\\\"wrappedRows\\\"]],[30,0,[\\\"_containerSelector\\\"]],[30,0,[\\\"estimateRowHeight\\\"]],[30,0,[\\\"key\\\"]],[30,0,[\\\"staticHeight\\\"]],[30,0,[\\\"bufferSize\\\"]],[30,0,[\\\"renderAll\\\"]],[30,0,[\\\"firstReached\\\"]],[30,0,[\\\"lastReached\\\"]],[30,0,[\\\"firstVisibleChanged\\\"]],[30,0,[\\\"lastVisibleChanged\\\"]],[30,0,[\\\"idForFirstItem\\\"]]]],[[\\\"default\\\",\\\"else\\\"],[[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@rowValue\\\",\\\"@columns\\\",\\\"@columnMetaCache\\\",\\\"@rowMetaCache\\\",\\\"@canSelect\\\",\\\"@checkboxSelectionMode\\\",\\\"@rowSelectionMode\\\",\\\"@rowToggleMode\\\",\\\"@rowsCount\\\"],[[30,1],[30,0,[\\\"columns\\\"]],[30,0,[\\\"columnMetaCache\\\"]],[30,0,[\\\"rowMetaCache\\\"]],[30,0,[\\\"canSelect\\\"]],[30,0,[\\\"checkboxSelectionMode\\\"]],[30,0,[\\\"rowSelectionMode\\\"]],[30,0,[\\\"rowToggleMode\\\"]],[30,0,[\\\"wrappedRows\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[48,[30,3]],[[[1,\\\"      \\\"],[18,3,[[28,[37,5],null,[[\\\"rowValue\\\",\\\"rowMeta\\\",\\\"cells\\\",\\\"rowSelectionMode\\\",\\\"rowToggleMode\\\",\\\"rowsCount\\\",\\\"row\\\"],[[30,2,[\\\"rowValue\\\"]],[30,2,[\\\"rowMeta\\\"]],[30,2,[\\\"cells\\\"]],[30,2,[\\\"rowSelectionMode\\\"]],[30,2,[\\\"rowToggleMode\\\"]],[30,2,[\\\"rowsCount\\\"]],[50,\\\"ember-tr\\\",0,null,[[\\\"api\\\"],[[30,2]]]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,7],null,[[\\\"@api\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[2]]]]],[1,\\\"\\\\n\\\\n\\\"]],[1]],[[[1,\\\"  \\\"],[18,4,null],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"rowValue\\\",\\\"api\\\",\\\"&default\\\",\\\"&else\\\"],false,[\\\"vertical-collection\\\",\\\"ember-table-private/row-wrapper\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ember-tr\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-tbody/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-td/component\", [\"exports\", \"ember-table/components/-private/base-table-cell\", \"@ember/object\", \"@ember/object/computed\", \"ember-table/components/ember-td/template\", \"ember-table/-private/collapse-tree\"], function (_exports, _baseTableCell, _object, _computed, _template, _collapseTree) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.setSimpleCheckboxForTest = setSimpleCheckboxForTest;\n  var setupSimpleCheckboxForTest = false;\n  function setSimpleCheckboxForTest(bool) {\n    setupSimpleCheckboxForTest = bool;\n  }\n\n  /**\n   The table cell component. This component manages cell level concerns, yields\n   the cell value, column value, row value, and all of their associated meta\n   objects.\n  \n   ```hbs\n   <EmberTable as |t|>\n   <t.head @columns={{this.columns}} />\n  \n   <t.body @rows={{this.rows}} as |b|>\n   <b.row as |r|>\n   <r.cell as |cellValue columnValue rowValue cellMeta columnMeta rowMeta|>\n  \n   </r.cell>\n   </b.row>\n   </t.body>\n   </EmberTable>\n   ```\n  \n   @yield {any} cellValue - The value of the cell\n   @yield {object} columnValue - The column definition\n   @yield {object} rowValue - The row definition\n  \n   @yield {object} cellMeta - The meta object associated with the cell\n   @yield {object} columnMeta - The meta object associated with the column\n   @yield {object} rowMeta - The meta object associated with the row\n   @class <EmberTd />\n   @public\n   */\n  var _default = _exports.default = _baseTableCell.default.extend({\n    layout: _template.default,\n    tagName: 'td',\n    init: function init() {\n      this._super.apply(this, arguments);\n      if (setupSimpleCheckboxForTest) {\n        this.set('isTesting', true);\n      }\n    },\n    /**\n     The API object passed in by the table row\n     @argument api\n     @required\n     @type object\n    */\n    api: null,\n    /**\n     Action sent when the user clicks this element\n     @argument onClick\n     @type Action?\n    */\n    onClick: null,\n    /**\n     Action sent when the user double clicks this element\n     @argument onDoubleClick\n     @type Action?\n    */\n    onDoubleClick: null,\n    // only watch `api` due to a bug in Ember\n    unwrappedApi: (0, _object.computed)('api', function () {\n      return this.get('api.api') || this.get('api');\n    }),\n    cellValue: (0, _computed.alias)('unwrappedApi.cellValue'),\n    cellMeta: (0, _computed.readOnly)('unwrappedApi.cellMeta'),\n    columnValue: (0, _computed.readOnly)('unwrappedApi.columnValue'),\n    columnMeta: (0, _computed.readOnly)('unwrappedApi.columnMeta'),\n    rowValue: (0, _computed.readOnly)('unwrappedApi.rowValue'),\n    rowMeta: (0, _computed.readOnly)('unwrappedApi.rowMeta'),\n    rowsCount: (0, _computed.readOnly)('unwrappedApi.rowsCount'),\n    rowSelectionMode: (0, _computed.readOnly)('unwrappedApi.rowSelectionMode'),\n    checkboxSelectionMode: (0, _computed.readOnly)('unwrappedApi.checkboxSelectionMode'),\n    canCollapse: (0, _computed.readOnly)('rowMeta.canCollapse'),\n    depthClass: (0, _object.computed)('rowMeta.depth', function () {\n      return \"depth-\".concat(this.get('rowMeta.depth'));\n    }),\n    canSelect: (0, _object.computed)('shouldShowCheckbox', 'rowSelectionMode', function () {\n      var rowSelectionMode = this.get('rowSelectionMode');\n      var shouldShowCheckbox = this.get('shouldShowCheckbox');\n      return shouldShowCheckbox || rowSelectionMode === _collapseTree.SELECT_MODE.MULTIPLE || rowSelectionMode === _collapseTree.SELECT_MODE.SINGLE;\n    }),\n    shouldShowCheckbox: (0, _object.computed)('checkboxSelectionMode', function () {\n      var checkboxSelectionMode = this.get('checkboxSelectionMode');\n      return checkboxSelectionMode === _collapseTree.SELECT_MODE.MULTIPLE || checkboxSelectionMode === _collapseTree.SELECT_MODE.SINGLE;\n    }),\n    actions: {\n      onSelectionToggled: function onSelectionToggled(event) {\n        var rowMeta = this.get('rowMeta');\n        var checkboxSelectionMode = this.get('checkboxSelectionMode') || this.get('rowSelectionMode');\n        if (rowMeta && checkboxSelectionMode === _collapseTree.SELECT_MODE.MULTIPLE) {\n          var toggle = true;\n          var range = event.shiftKey;\n          rowMeta.select({\n            toggle: toggle,\n            range: range\n          });\n        } else if (rowMeta && checkboxSelectionMode === _collapseTree.SELECT_MODE.SINGLE) {\n          rowMeta.select();\n        }\n        this.sendFullAction('onSelect');\n      },\n      onCollapseToggled: function onCollapseToggled() {\n        var rowMeta = this.get('rowMeta');\n        rowMeta.toggleCollapse();\n        this.sendFullAction('onCollapse');\n      }\n    },\n    click: function click(event) {\n      this.sendFullAction('onClick', {\n        event: event\n      });\n    },\n    doubleClick: function doubleClick(event) {\n      this.sendFullAction('onDoubleClick', {\n        event: event\n      });\n    },\n    sendFullAction: function sendFullAction(action) {\n      var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      // If the action doesn't exist, it's not being used. Do nothing\n      if (!this.get(action)) {\n        return;\n      }\n      var cellValue = this.get('cellValue');\n      var cellMeta = this.get('cellMeta');\n      var columnValue = this.get('columnValue');\n      var columnMeta = this.get('columnMeta');\n      var rowValue = this.get('rowValue');\n      var rowMeta = this.get('rowMeta');\n      Object.assign(values, {\n        cellValue: cellValue,\n        cellMeta: cellMeta,\n        columnValue: columnValue,\n        columnMeta: columnMeta,\n        rowValue: rowValue,\n        rowMeta: rowMeta\n      });\n      var closureAction = this[action];\n      closureAction === null || closureAction === void 0 ? void 0 : closureAction(values);\n    }\n  });\n});","define(\"ember-table/components/ember-td/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.isFirstColumn}}\n    <div class=\"et-cell-container\">\n      {{#if this.canSelect}}\n        <span\n          class=\"et-toggle-select {{unless this.shouldShowCheckbox 'et-speech-only'}}\"\n          data-test-select-row-container\n        >\n          <EmberTableSimpleCheckbox\n            @checked={{this.rowMeta.isGroupSelected}}\n            @onClick={{action \"onSelectionToggled\"}}\n            @ariaLabel=\"Select row\"\n            @dataTestSelectRow={{this.isTesting}}\n          />\n          <span></span>\n        </span>\n      {{/if}}\n  \n      {{#if this.canCollapse}}\n        <span class=\"et-toggle-collapse et-depth-indent {{this.depthClass}}\">\n          <EmberTableSimpleCheckbox\n            @checked={{this.rowMeta.isCollapsed}}\n            @onChange={{action \"onCollapseToggled\"}}\n            @ariaLabel=\"Collapse row\"\n            @dataTestCollapseRow={{this.isTesting}}\n          />\n          <span></span>\n        </span>\n      {{else}}\n        <div class=\"et-depth-indent et-depth-placeholder {{this.depthClass}}\"></div>\n      {{/if}}\n  \n      <div class=\"et-cell-content\">\n        {{#if (has-block)}}\n          {{yield this.cellValue this.columnValue this.rowValue this.cellMeta this.columnMeta this.rowMeta this.rowsCount}}\n        {{else}}\n          {{this.cellValue}}\n        {{/if}}\n      </div>\n    </div>\n  {{else}}\n    {{#if (has-block)}}\n      {{yield this.cellValue this.columnValue this.rowValue this.cellMeta this.columnMeta this.rowMeta this.rowsCount}}\n    {{else}}\n      {{this.cellValue}}\n    {{/if}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"0LYULcvk\",\n    \"block\": \"[[[41,[30,0,[\\\"isFirstColumn\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"et-cell-container\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canSelect\\\"]],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"et-toggle-select \\\",[52,[51,[30,0,[\\\"shouldShowCheckbox\\\"]]],\\\"et-speech-only\\\"]]]],[14,\\\"data-test-select-row-container\\\",\\\"\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@checked\\\",\\\"@onClick\\\",\\\"@ariaLabel\\\",\\\"@dataTestSelectRow\\\"],[[30,0,[\\\"rowMeta\\\",\\\"isGroupSelected\\\"]],[28,[37,5],[[30,0],\\\"onSelectionToggled\\\"],null],\\\"Select row\\\",[30,0,[\\\"isTesting\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,1],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canCollapse\\\"]],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"et-toggle-collapse et-depth-indent \\\",[30,0,[\\\"depthClass\\\"]]]]],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@checked\\\",\\\"@onChange\\\",\\\"@ariaLabel\\\",\\\"@dataTestCollapseRow\\\"],[[30,0,[\\\"rowMeta\\\",\\\"isCollapsed\\\"]],[28,[37,5],[[30,0],\\\"onCollapseToggled\\\"],null],\\\"Collapse row\\\",[30,0,[\\\"isTesting\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,1],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,0],[15,0,[29,[\\\"et-depth-indent et-depth-placeholder \\\",[30,0,[\\\"depthClass\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"et-cell-content\\\"],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,1]],[[[1,\\\"        \\\"],[18,1,[[30,0,[\\\"cellValue\\\"]],[30,0,[\\\"columnValue\\\"]],[30,0,[\\\"rowValue\\\"]],[30,0,[\\\"cellMeta\\\"]],[30,0,[\\\"columnMeta\\\"]],[30,0,[\\\"rowMeta\\\"]],[30,0,[\\\"rowsCount\\\"]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[30,0,[\\\"cellValue\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,1]],[[[1,\\\"    \\\"],[18,1,[[30,0,[\\\"cellValue\\\"]],[30,0,[\\\"columnValue\\\"]],[30,0,[\\\"rowValue\\\"]],[30,0,[\\\"cellMeta\\\"]],[30,0,[\\\"columnMeta\\\"]],[30,0,[\\\"rowMeta\\\"]],[30,0,[\\\"rowsCount\\\"]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[1,[30,0,[\\\"cellValue\\\"]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"span\\\",\\\"unless\\\",\\\"ember-table-simple-checkbox\\\",\\\"action\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-td/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-tfoot/component\", [\"exports\", \"ember-table/components/ember-tbody/component\", \"@ember/array\", \"@ember/object\", \"ember-table/components/ember-tfoot/template\"], function (_exports, _component, _array, _object, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n    The table footer component. This component manages any footer rows which may\n    be attached to the table, and has the same API as EmberTBody. It does not\n    provide occlusion, because the number of footer rows is expected to be\n    relatively small.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} />\n      <t.body @rows={{this.rows}} />\n  \n      <t.foot @rows={{this.footerRows}} as |f|>\n        <f.row />\n      </t.foot>\n    </EmberTable>\n    ```\n  \n    @yield {object} foot - the API object yielded by the table footer\n    @yield {Component} foot.row - The table row component\n    @yield {object} foot.rowValue - The value for the currently yielded row\n    @yield {object} foot.rowMeta - The meta for the currently yielded row\n    @class <EmberTfoot />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    tagName: 'tfoot',\n    wrappedRowArray: (0, _object.computed)('wrappedRows.[]', function () {\n      var wrappedRows = this.get('wrappedRows');\n      var wrappedRowsLength = wrappedRows.get('length');\n      var arr = [];\n      for (var i = 0; i < wrappedRowsLength; i++) {\n        arr.push(wrappedRows.objectAt(i));\n      }\n      return (0, _array.A)(arr);\n    })\n  });\n});","define(\"ember-table/components/ember-tfoot/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.wrappedRowArray as |rowValue|}}\n    <EmberTablePrivate::RowWrapper\n      @rowValue={{rowValue}}\n      @columns={{this.columns}}\n      @columnMetaCache={{this.columnMetaCache}}\n      @rowMetaCache={{this.rowMetaCache}}\n      @canSelect={{this.canSelect}}\n      @rowSelectionMode={{this.rowSelectionMode}}\n      @checkboxSelectionMode={{this.checkboxSelectionMode}}\n      @rowsCount={{this.wrappedRowArray.length}} as |api|\n    >\n      {{#if (has-block)}}\n        {{yield (hash\n          rowValue=api.rowValue\n          rowMeta=api.rowMeta\n          cells=api.cells\n          rowSelectionMode=api.rowSelectionMode\n          rowsCount=api.rowsCount\n  \n          row=(component \"ember-tr\" api=api)\n        )}}\n      {{else}}\n        <EmberTr @api={{api}} />\n      {{/if}}\n    </EmberTablePrivate::RowWrapper>\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"/IEu90BH\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"wrappedRowArray\\\"]]],null]],null],null,[[[1,\\\"  \\\"],[8,[39,2],null,[[\\\"@rowValue\\\",\\\"@columns\\\",\\\"@columnMetaCache\\\",\\\"@rowMetaCache\\\",\\\"@canSelect\\\",\\\"@rowSelectionMode\\\",\\\"@checkboxSelectionMode\\\",\\\"@rowsCount\\\"],[[30,1],[30,0,[\\\"columns\\\"]],[30,0,[\\\"columnMetaCache\\\"]],[30,0,[\\\"rowMetaCache\\\"]],[30,0,[\\\"canSelect\\\"]],[30,0,[\\\"rowSelectionMode\\\"]],[30,0,[\\\"checkboxSelectionMode\\\"]],[30,0,[\\\"wrappedRowArray\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[48,[30,3]],[[[1,\\\"      \\\"],[18,3,[[28,[37,6],null,[[\\\"rowValue\\\",\\\"rowMeta\\\",\\\"cells\\\",\\\"rowSelectionMode\\\",\\\"rowsCount\\\",\\\"row\\\"],[[30,2,[\\\"rowValue\\\"]],[30,2,[\\\"rowMeta\\\"]],[30,2,[\\\"cells\\\"]],[30,2,[\\\"rowSelectionMode\\\"]],[30,2,[\\\"rowsCount\\\"]],[50,\\\"ember-tr\\\",0,null,[[\\\"api\\\"],[[30,2]]]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,8],null,[[\\\"@api\\\"],[[30,2]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[2]]]]],[1,\\\"\\\\n\\\"]],[1]],null]],[\\\"rowValue\\\",\\\"api\\\",\\\"&default\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"ember-table-private/row-wrapper\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ember-tr\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-tfoot/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-th/component\", [\"exports\", \"ember-table/components/-private/base-table-cell\", \"@ember/runloop\", \"@ember/object/computed\", \"ember-table/-private/utils/element\", \"ember-table/components/ember-th/template\", \"@ember/object\"], function (_exports, _baseTableCell, _runloop, _computed, _element, _template, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /* global Hammer */\n  var COLUMN_INACTIVE = 0;\n  var COLUMN_RESIZING = 1;\n  var COLUMN_REORDERING = 2;\n\n  /**\n    The table header cell component. This component manages header cell level\n    concerns, and yields the column value and column meta data objects.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} as |h|>\n        <h.row as |r|>\n          <r.cell as |columnValue columnMeta|>\n  \n          </r.cell>\n        </h.row>\n      </t.head>\n  \n      <t.body @rows={{this.rows}} />\n    </EmberTable>\n    ```\n    @yield {object} columnValue - The column definition\n    @yield {object} columnMeta - The meta object associated with this column\n    @class <EmberTh />\n    @public\n  */\n  var _default = _exports.default = _baseTableCell.default.extend({\n    layout: _template.default,\n    tagName: 'th',\n    attributeBindings: ['columnSpan:colspan', 'rowSpan:rowspan'],\n    classNameBindings: ['isSortable', 'isResizable', 'isReorderable'],\n    /**\n      The API object passed in by the table row\n      @argument api\n      @required\n      @type object\n    */\n    api: null,\n    /**\n      Action sent when the user clicks right this element\n      @argument onContextMenu\n      @type Action?\n    */\n    onContextMenu: null,\n    columnValue: (0, _computed.readOnly)('api.columnValue'),\n    columnMeta: (0, _computed.readOnly)('api.columnMeta'),\n    rowMeta: (0, _computed.readOnly)('api.rowMeta'),\n    /**\n      Any sorts applied to the table.\n    */\n    sorts: (0, _computed.readOnly)('api.sorts'),\n    /**\n      Whether or not the column is sortable. Is true IFF the column is a leaf node\n      onUpdateSorts is set on the thead.\n    */\n    isSortable: (0, _computed.readOnly)('columnMeta.isSortable'),\n    /**\n      Indicates if this column can be resized.\n    */\n    isResizable: (0, _computed.readOnly)('columnMeta.isResizable'),\n    /**\n     Indicates if this column can be reordered.\n    */\n    isReorderable: (0, _computed.readOnly)('columnMeta.isReorderable'),\n    columnSpan: (0, _computed.readOnly)('columnMeta.columnSpan'),\n    rowSpan: (0, _computed.readOnly)('columnMeta.rowSpan'),\n    /**\n      A variable used for column resizing & ordering. When user press mouse at a point that's close\n      to column boundary (using some threshold), this variable set whether it's the left or right\n      column.\n    */\n    _columnState: COLUMN_INACTIVE,\n    /**\n      An object that listens to touch/ press/ drag events.\n    */\n    _hammer: null,\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      this.get('columnMeta').registerElement(this.element);\n      var hammer = new Hammer(this.element);\n      hammer.add(new Hammer.Press({\n        time: 0\n      }));\n      hammer.on('press', this.pressHandler.bind(this));\n      hammer.on('panstart', this.panStartHandler.bind(this));\n      hammer.on('panmove', this.panMoveHandler.bind(this));\n      hammer.on('panend', this.panEndHandler.bind(this));\n      this._hammer = hammer;\n    },\n    willDestroyElement: function willDestroyElement() {\n      var hammer = this._hammer;\n      hammer.off('press');\n      hammer.off('panstart');\n      hammer.off('panmove');\n      hammer.off('panend');\n      hammer.destroy();\n      this._super.apply(this, arguments);\n    },\n    actions: {\n      sendDropdownAction: function sendDropdownAction() {\n        var _this$onDropdownActio;\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        (_this$onDropdownActio = this.onDropdownAction) === null || _this$onDropdownActio === void 0 ? void 0 : _this$onDropdownActio.call.apply(_this$onDropdownActio, [this].concat(args));\n      }\n    },\n    click: function click(event) {\n      var isSortable = this.get('isSortable');\n      var inputParent = (0, _element.closest)(event.target, 'button:not(.et-sort-toggle), input, label, a, select');\n      if (this._columnState === COLUMN_INACTIVE && !inputParent && isSortable) {\n        var toggle = event.ctrlKey || event.metaKey;\n        this.updateSort({\n          toggle: toggle\n        });\n      }\n    },\n    contextMenu: function contextMenu(event) {\n      var _this$onContextMenu;\n      (_this$onContextMenu = this.onContextMenu) === null || _this$onContextMenu === void 0 ? void 0 : _this$onContextMenu.call(this, event);\n      return false;\n    },\n    keyUp: function keyUp(event) {\n      var isSortable = this.get('isSortable');\n      var inputParent = (0, _element.closest)(event.target, 'button:not(.et-sort-toggle), input, label, a, select');\n      if (this._columnState === COLUMN_INACTIVE && !inputParent && event.key === 'Enter' && isSortable) {\n        this.updateSort({\n          toggle: false\n        });\n      }\n    },\n    updateSort: function updateSort(_ref) {\n      var toggle = _ref.toggle;\n      var valuePath = this.get('columnValue.valuePath');\n      var sorts = this.get('sorts');\n      var existingSorting = sorts.find(function (s) {\n        return (0, _object.get)(s, 'valuePath') === valuePath;\n      });\n      var newSortings = toggle ? sorts.filter(function (s) {\n        return (0, _object.get)(s, 'valuePath') !== valuePath;\n      }) : [];\n      if (!existingSorting) {\n        newSortings.push({\n          valuePath: valuePath,\n          isAscending: false\n        });\n      } else if (existingSorting.isAscending === false) {\n        newSortings.push({\n          valuePath: valuePath,\n          isAscending: true\n        });\n      }\n      this.get('api').sendUpdateSort(newSortings);\n    },\n    pressHandler: function pressHandler(event) {\n      var _event$pointers = _slicedToArray(event.pointers, 1),\n        _event$pointers$ = _event$pointers[0],\n        clientX = _event$pointers$.clientX,\n        target = _event$pointers$.target;\n      this._originalClientX = clientX;\n      this._originalTargetWasResize = target.classList.contains('et-header-resize-area');\n    },\n    panStartHandler: function panStartHandler(event) {\n      var isResizable = this.get('isResizable');\n      var isReorderable = this.get('isReorderable');\n      var _event$pointers2 = _slicedToArray(event.pointers, 1),\n        clientX = _event$pointers2[0].clientX;\n      if (isResizable && this._originalTargetWasResize) {\n        this._columnState = COLUMN_RESIZING;\n        this.get('columnMeta').startResize(this._originalClientX);\n      } else if (isReorderable) {\n        this._columnState = COLUMN_REORDERING;\n        this.get('columnMeta').startReorder(clientX);\n      }\n    },\n    panMoveHandler: function panMoveHandler(event) {\n      var _event$pointers3 = _slicedToArray(event.pointers, 1),\n        clientX = _event$pointers3[0].clientX;\n      if (this._columnState === COLUMN_RESIZING) {\n        this.get('columnMeta').updateResize(clientX);\n        this._prevClientX = clientX;\n      } else if (this._columnState === COLUMN_REORDERING) {\n        this.get('columnMeta').updateReorder(clientX);\n        this._columnState = COLUMN_REORDERING;\n      }\n    },\n    panEndHandler: function panEndHandler() {\n      var _this = this;\n      if (this._columnState === COLUMN_RESIZING) {\n        this.get('columnMeta').endResize();\n      } else if (this._columnState === COLUMN_REORDERING) {\n        this.get('columnMeta').endReorder();\n      }\n      (0, _runloop.next)(function () {\n        return _this._columnState = COLUMN_INACTIVE;\n      });\n    }\n  });\n});","define(\"ember-table/components/ember-th/resize-handle/component\", [\"exports\", \"@ember/component\", \"ember-table/components/ember-th/resize-handle/template\", \"@ember/object/computed\"], function (_exports, _component, _template, _computed) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n    The table header cell resize handle component. This component renders an area to grab to resize a column.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} as |h|>\n        <h.row as |r|>\n          <r.cell as |columnValue columnMeta|>\n            {{columnValue.name}}\n  \n            <EmberTh::ResizeHandle @columnMeta={{columnMeta}} />\n          </r.cell>\n        </h.row>\n      </t.head>\n  \n      <t.body @rows={{this.rows}} />\n    </EmberTable>\n    ```\n    @class <EmberTh::ResizeHandle />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    tagName: '',\n    /**\n      The API object passed in by the table header cell\n      @argument columnMeta\n      @required\n      @type object\n    */\n    columnMeta: null,\n    isResizable: (0, _computed.readOnly)('columnMeta.isResizable')\n  });\n});","define(\"ember-table/components/ember-th/resize-handle/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n      {{#if this.isResizable}}\n      <div data-test-resize-handle class=\"et-header-resize-area\">\n      </div>\n    {{/if}}\n  */\n  {\n    \"id\": \"jxguGm4N\",\n    \"block\": \"[[[41,[30,0,[\\\"isResizable\\\"]],[[[1,\\\"    \\\"],[10,0],[14,\\\"data-test-resize-handle\\\",\\\"\\\"],[14,0,\\\"et-header-resize-area\\\"],[12],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-th/resize-handle/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-th/sort-indicator/component\", [\"exports\", \"@ember/component\", \"ember-table/components/ember-th/sort-indicator/template\", \"@ember/object/computed\"], function (_exports, _component, _template, _computed) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n    The table header cell sort indicator component. This component renders the state of the sort on the column (ascending/descending/none).\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} as |h|>\n        <h.row as |r|>\n          <r.cell as |columnValue columnMeta|>\n            {{columnValue.name}}\n  \n            <EmberTh::SortIndicator @columnMeta={{columnMeta}} />\n          </r.cell>\n        </h.row>\n      </t.head>\n  \n      <t.body @rows={{this.rows}} />\n    </EmberTable>\n    ```\n    @yield {object} columnMeta - The meta object associated with this column\n    @class <EmberTh::SortIndicator />\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    tagName: '',\n    /**\n      The API object passed in by the table header cell\n      @argument columnMeta\n      @required\n      @type object\n    */\n    columnMeta: null,\n    isSortable: (0, _computed.readOnly)('columnMeta.isSortable'),\n    isSorted: (0, _computed.readOnly)('columnMeta.isSorted'),\n    isSortedAsc: (0, _computed.readOnly)('columnMeta.isSortedAsc'),\n    isMultiSorted: (0, _computed.readOnly)('columnMeta.isMultiSorted'),\n    sortIndex: (0, _computed.readOnly)('columnMeta.sortIndex')\n  });\n});","define(\"ember-table/components/ember-th/sort-indicator/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.isSorted}}\n    <span data-test-sort-indicator class=\"et-sort-indicator {{if this.isSortedAsc 'is-ascending' 'is-descending'}}\">\n      {{#if (has-block)}}\n        {{yield this.columnMeta}}\n      {{else}}\n        {{#if this.isMultiSorted}}\n          {{this.sortIndex}}\n        {{/if}}\n      {{/if}}\n    </span>\n  {{/if}}\n  \n  {{#if this.isSortable}}\n    <button data-test-sort-toggle class=\"et-sort-toggle et-speech-only\">Toggle Sort</button>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"D6GzqtfM\",\n    \"block\": \"[[[41,[30,0,[\\\"isSorted\\\"]],[[[1,\\\"  \\\"],[10,1],[14,\\\"data-test-sort-indicator\\\",\\\"\\\"],[15,0,[29,[\\\"et-sort-indicator \\\",[52,[30,0,[\\\"isSortedAsc\\\"]],\\\"is-ascending\\\",\\\"is-descending\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,1]],[[[1,\\\"      \\\"],[18,1,[[30,0,[\\\"columnMeta\\\"]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"isMultiSorted\\\"]],[[[1,\\\"        \\\"],[1,[30,0,[\\\"sortIndex\\\"]]],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isSortable\\\"]],[[[1,\\\"  \\\"],[10,\\\"button\\\"],[14,\\\"data-test-sort-toggle\\\",\\\"\\\"],[14,0,\\\"et-sort-toggle et-speech-only\\\"],[12],[1,\\\"Toggle Sort\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"span\\\",\\\"has-block\\\",\\\"yield\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-th/sort-indicator/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-th/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (has-block)}}\n    {{yield this.columnValue this.columnMeta this.rowMeta}}\n  {{else}}\n    {{this.columnValue.name}}\n  \n    <EmberTh::SortIndicator @columnMeta={{this.columnMeta}} />\n  \n    <EmberTh::ResizeHandle @columnMeta={{this.columnMeta}} />\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"1BVFpXqk\",\n    \"block\": \"[[[41,[48,[30,1]],[[[1,\\\"  \\\"],[18,1,[[30,0,[\\\"columnValue\\\"]],[30,0,[\\\"columnMeta\\\"]],[30,0,[\\\"rowMeta\\\"]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[1,[30,0,[\\\"columnValue\\\",\\\"name\\\"]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,3],null,[[\\\"@columnMeta\\\"],[[30,0,[\\\"columnMeta\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,4],null,[[\\\"@columnMeta\\\"],[[30,0,[\\\"columnMeta\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"ember-th/sort-indicator\\\",\\\"ember-th/resize-handle\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-th/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-thead/component\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/array\", \"@ember/debug\", \"ember-table/-private/utils/default-to\", \"ember-table/-private/utils/observer\", \"@ember/object\", \"@ember/object/computed\", \"@ember/utils\", \"ember-table/-private/utils/element\", \"ember-table/-private/meta-cache\", \"ember-table/-private/utils/sort\", \"ember-table/-private/column-tree\", \"ember-table/components/ember-thead/template\"], function (_exports, _component, _runloop, _array, _debug, _defaultTo, _observer, _object, _computed, _utils, _element, _metaCache, _sort, _columnTree, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.setupTHeadForTest = setupTHeadForTest;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\n  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\n  function _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\n  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /* global ResizeSensor */\n  var isTestingThead = false;\n  function setupTHeadForTest(bool) {\n    isTestingThead = bool;\n  }\n\n  /**\n    The table header component. This component manages and receives the column\n    definitions for the table, and yields for each row of headers that exists\n    (in the case of subcolumns).\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} as |h|>\n  \n      </t.head>\n  \n      <t.body @rows={{this.rows}} />\n    </EmberTable>\n    ```\n  \n    @yield {object} head - the API object yielded by the table header\n    @yield {Component} head.row - The table row component\n    @class <EmberThead />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    tagName: 'thead',\n    /**\n      The API object passed in by the table\n       @argument api\n      @required\n      @type object\n    */\n    api: null,\n    unwrappedApi: (0, _computed.or)('api.api', 'api'),\n    /**\n      The column definitions for the table\n       @argument columns\n      @required\n      @type array? ([])\n    */\n    columns: (0, _defaultTo.default)(function () {\n      return [];\n    }),\n    /**\n      Specifies the name of the property on the column objects that should be\n      used as the key for caching column metadata. For example, if columns have\n      a unique `id` property, the value could be set to `id`. If unspecified,\n      the column object itself is used as a key.\n       @argument columnKeyPath\n      @type string?\n    */\n    columnKeyPath: null,\n    /**\n      An ordered array of the sorts applied to the table\n      @argument sorts\n      @type array? ([])\n    */\n    sorts: (0, _defaultTo.default)(function () {\n      return [];\n    }),\n    /**\n      An optional sort. If not specified, defaults to `<sortMultiple>`, which\n      sorts by each `sort` in `sorts`, in order.\n      @argument sortFunction\n      @type function? (<sortMultiple>)\n    */\n    sortFunction: (0, _defaultTo.default)(function () {\n      return _sort.sortMultiple;\n    }),\n    /**\n      An ordered array of the sorts applied to the table\n      @argument compareFunction\n      @type function? (<compareValues>)\n    */\n    compareFunction: (0, _defaultTo.default)(function () {\n      return _sort.compareValues;\n    }),\n    /**\n      Flag that allows to sort empty values after non empty ones\n      @argument sortEmptyLast\n      @type boolean? (false)\n    */\n    sortEmptyLast: (0, _defaultTo.default)(false),\n    /**\n      Flag that toggles reordering in the table\n      @argument enableReorder\n      @type boolean? (true)\n    */\n    enableReorder: (0, _defaultTo.default)(true),\n    /**\n      Flag that toggles resizing in the table\n      @argument enableResize\n      @type boolean? (true)\n    */\n    enableResize: (0, _defaultTo.default)(true),\n    /**\n      Enables shadows at the edges of the table to show that the user can scroll\n      to view more content. Possible string values are `all`, `horizontal`,\n      `vertical`, and `none`. The boolean values `true` and `false` are aliased to `all` and `none`, respectively.\n      @argument scrollIndicators\n      @type boolean|string? (false)\n    */\n    scrollIndicators: (0, _defaultTo.default)(false),\n    /**\n      Sets which column resizing behavior to use. Possible values are `standard`\n      (resizing a column pushes or pulls all other columns) and `fluid` (resizing a\n      column subtracts width from neighboring columns).\n      @argument resizeMode\n      @type string? ('standard')\n    */\n    resizeMode: (0, _defaultTo.default)(_columnTree.RESIZE_MODE.STANDARD),\n    /**\n      A configuration that controls how columns shrink (or extend) when total column width does not\n      match table width. Behavior of column modification is as follows:\n       * \"equal-column\": extra space is distributed equally among all columns\n      * \"first-column\": extra space is added into the first column.\n      * \"last-column\": extra space is added into the last column.\n      * \"nth-column\": extra space is added into the column defined by `fillColumnIndex`.\n       @argument fillMode\n      @type string? ('equal-column')\n    */\n    fillMode: (0, _defaultTo.default)(_columnTree.FILL_MODE.EQUAL_COLUMN),\n    /**\n      Specifies how columns should be sized when the table is initialized. This only affects\n      `eq-container-slack` and `gte-container-slack` width constraint modes. Permitted values are\n      the same as `fillMode`.\n       @argument initialFillMode\n      @type string? ('none')\n    */\n    initialFillMode: (0, _defaultTo.default)(_columnTree.FILL_MODE.NONE),\n    /**\n      A configuration that controls which column shrinks (or extends) when `fillMode` is\n      'nth-column'. This is zero indexed.\n       @argument fillColumnIndex\n      @type number?\n    */\n    fillColumnIndex: null,\n    /**\n      Sets a constraint on the table's size, such that it must be greater than, less\n      than, or equal to the size of the containing element.\n      Valid values:\n        * 'none'\n        * 'eq-container'\n        * 'gte-container'\n        * 'lte-container'\n       @argument widthConstraint\n      @type string? ('none')\n    */\n    widthConstraint: (0, _defaultTo.default)(_columnTree.WIDTH_CONSTRAINT.NONE),\n    /**\n      A numeric adjustment to be applied to the constraint on the table's size.\n       @argument containerWidthAdjustment\n      @type number?\n    */\n    containerWidthAdjustment: null,\n    /**\n      An action that is sent when sorts is updated\n      @argument onUpdateSorts\n      @type Action?\n    */\n    onUpdateSorts: null,\n    /**\n      An action that is sent when columns are reordered\n      @argument onReorder\n      @type Action?\n    */\n    onReorder: null,\n    /**\n      An action that is sent when columns are resized\n      @argument onResize\n      @type Action?\n    */\n    onResize: null,\n    attributeBindings: ['wrappedRowsCount:data-test-row-count'],\n    wrappedRowsCount: (0, _computed.and)('isTesting', 'wrappedRows.length'),\n    init: function init() {\n      var _this$onReorder, _this$onResize;\n      this._super.apply(this, arguments);\n      if (isTestingThead) {\n        this.set('isTesting', true);\n      }\n\n      /**\n       * A sensor object that sends events to this table component when table size changes. When table\n       * is resized, table width & height are updated and other computed properties depending on them\n       * also get updated.\n       */\n      this._tableResizeSensor = null;\n\n      /**\n        The map that contains column meta information for this table. Is meant to be\n        unique to this table, which is why it is created here.\n      */\n      var columnKeyPath = this.get('columnKeyPath');\n      this.columnMetaCache = new _metaCache.default({\n        keyPath: columnKeyPath\n      });\n      this.columnTree = _columnTree.default.create({\n        onReorder: (_this$onReorder = this.onReorder) === null || _this$onReorder === void 0 ? void 0 : _this$onReorder.bind(this),\n        onResize: (_this$onResize = this.onResize) === null || _this$onResize === void 0 ? void 0 : _this$onResize.bind(this),\n        columnMetaCache: this.columnMetaCache,\n        containerWidthAdjustment: this.containerWidthAdjustment\n      });\n\n      /**\n        The map that contains row meta information for this table header.\n      */\n      this.rowMetaCache = new Map();\n      this._updateApi();\n      this._validateUniqueColumnKeys();\n      this._updateColumnTree();\n      (0, _runloop.scheduleOnce)('actions', this.columnTree, 'performInitialLayout');\n      (0, _observer.addObserver)(this, 'scrollIndicators', this._updateApi);\n      (0, _observer.addObserver)(this, 'reorderFunction', this._updateApi);\n      (0, _observer.addObserver)(this, 'sorts', this._updateApi);\n      (0, _observer.addObserver)(this, 'sortFunction', this._updateApi);\n      (0, _observer.addObserver)(this, 'sorts', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'columns.[]', this._onColumnsChange);\n      (0, _observer.addObserver)(this, 'columnKeyPath', this._updateColumnMetaCache);\n      (0, _observer.addObserver)(this, 'fillMode', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'initialFillMode', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'fillColumnIndex', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'resizeMode', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'widthConstraint', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'enableSort', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'enableResize', this._updateColumnTree);\n      (0, _observer.addObserver)(this, 'enableReorder', this._updateColumnTree);\n    },\n    _updateApi: function _updateApi() {\n      this.set('unwrappedApi.columnTree', this.columnTree);\n      this.set('unwrappedApi.compareFunction', this.get('compareFunction'));\n      this.set('unwrappedApi.scrollIndicators', this.get('scrollIndicators'));\n      this.set('unwrappedApi.sorts', this.get('sorts'));\n      this.set('unwrappedApi.sortEmptyLast', this.get('sortEmptyLast'));\n      this.set('unwrappedApi.sortFunction', this.get('sortFunction'));\n    },\n    _updateColumnTree: function _updateColumnTree() {\n      this.columnTree.set('sorts', this.get('sorts'));\n      this.columnTree.set('columns', this.get('columns'));\n      this.columnTree.set('fillMode', this.get('fillMode'));\n      this.columnTree.set('initialFillMode', this.get('initialFillMode'));\n      this.columnTree.set('fillColumnIndex', this.get('fillColumnIndex'));\n      this.columnTree.set('resizeMode', this.get('resizeMode'));\n      this.columnTree.set('widthConstraint', this.get('widthConstraint'));\n      this.columnTree.set('enableSort', this.get('enableSort'));\n      this.columnTree.set('enableResize', this.get('enableResize'));\n      this.columnTree.set('enableReorder', this.get('enableReorder'));\n    },\n    _updateColumnMetaCache: function _updateColumnMetaCache() {\n      this._validateUniqueColumnKeys();\n      this.columnMetaCache.keyPath = this.get('columnKeyPath');\n    },\n    _onColumnsChange: function _onColumnsChange() {\n      if (this.get('columns.length') === 0) {\n        return;\n      }\n      this._validateUniqueColumnKeys();\n      this._updateColumnTree();\n      (0, _runloop.scheduleOnce)('actions', this, this.fillupHandler);\n    },\n    _validateUniqueColumnKeys: function _validateUniqueColumnKeys() {\n      var columns = this.get('columns');\n      var columnKeyPath = this.get('columnKeyPath');\n      if (columns && columnKeyPath) {\n        // traverse tree to collect column keys\n        var keys = [];\n        var queue = _toConsumableArray(columns);\n        while (queue.length > 0) {\n          var column = queue.shift();\n          keys.push((0, _object.get)(column, columnKeyPath));\n          if (column.subcolumns) {\n            queue.push.apply(queue, _toConsumableArray(column.subcolumns));\n          }\n        }\n        var presentKeys = (0, _array.A)(keys.filter(_utils.isPresent));\n\n        // If a column has a falsey key, its meta data cannot be mapped to a\n        // replacement column in the future. This is not necessarily a problem,\n        // but it's reasonable to assume the consumer will want to avoid this\n        // scenario if they have bothered to set `columnKeyPath` at all.\n        (true && !(presentKeys.length === keys.length) && (0, _debug.assert)('if columnKeyPath is specified, every column must have a key', presentKeys.length === keys.length)); // Duplicate non-blank keys are the real problem; the meta cache will map\n        // two columns to the same meta object and havoc will ensue.\n        (true && !(presentKeys.uniq().length === presentKeys.length) && (0, _debug.assert)('if columnKeyPath is specified, no two columns can share the same key', presentKeys.uniq().length === presentKeys.length));\n      }\n    },\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n      this._container = (0, _element.closest)(this.element, '.ember-table-overflow');\n      this.columnTree.registerContainer(this._container);\n      this._tableResizeSensor = new ResizeSensor(this._container, (0, _runloop.bind)(this, this.fillupHandler));\n    },\n    willDestroyElement: function willDestroyElement() {\n      this._tableResizeSensor.detach(this._container);\n      this.columnTree.destroy();\n\n      // Clean the column meta cache\n      var _iterator = _createForOfIteratorHelper(this.columnMetaCache.entries()),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var _step$value = _slicedToArray(_step.value, 2),\n            column = _step$value[0],\n            meta = _step$value[1];\n          meta.destroy();\n          this.columnMetaCache.delete(column);\n        }\n\n        // Clean the row meta cache\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n      var _iterator2 = _createForOfIteratorHelper(this.rowMetaCache.entries()),\n        _step2;\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var _step2$value = _slicedToArray(_step2.value, 2),\n            row = _step2$value[0],\n            _meta = _step2$value[1];\n          _meta.destroy();\n          this.rowMetaCache.delete(row);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n      this._super.apply(this, arguments);\n    },\n    enableSort: (0, _computed.notEmpty)('onUpdateSorts'),\n    wrappedRows: (0, _object.computed)('columnTree.rows.[]', 'sorts.[]', 'headerActions.[]', 'fillMode', 'fillColumnIndex', function () {\n      var _this = this;\n      var rows = this.get('columnTree.rows');\n      var sorts = this.get('sorts');\n      var columnMetaCache = this.get('columnMetaCache');\n      var rowMetaCache = this.get('rowMetaCache');\n      return (0, _array.A)(rows.map(function (row, i) {\n        var rowMeta = rowMetaCache.get(row);\n        if (!rowMeta) {\n          rowMeta = _object.default.create();\n          rowMetaCache.set(row, rowMeta);\n        }\n        rowMeta.set('index', i);\n        var cells = (0, _array.A)(row.map(function (columnValue) {\n          var columnMeta = columnMetaCache.get(columnValue);\n          return {\n            columnValue: columnValue,\n            columnMeta: columnMeta,\n            rowMeta: rowMeta,\n            sorts: sorts,\n            sendUpdateSort: _this.sendUpdateSort.bind(_this)\n          };\n        }));\n        return {\n          cells: cells,\n          rowMeta: rowMeta,\n          rowsCount: rows.length,\n          isHeader: true\n        };\n      }));\n    }),\n    sendUpdateSort: function sendUpdateSort(newSorts) {\n      var _this$onUpdateSorts;\n      (_this$onUpdateSorts = this.onUpdateSorts) === null || _this$onUpdateSorts === void 0 ? void 0 : _this$onUpdateSorts.call(this, newSorts);\n    },\n    fillupHandler: function fillupHandler() {\n      if (this.isDestroying) {\n        return;\n      }\n      this.get('columnTree').ensureWidthConstraint();\n    }\n  });\n});","define(\"ember-table/components/ember-thead/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.wrappedRows as |api|}}\n    {{#if (has-block)}}\n      {{yield (hash\n        cells=api.cells\n        isHeader=api.isHeader\n        rowsCount=api.rowsCount\n  \n        row=(component \"ember-tr\" api=api)\n      )}}\n    {{else}}\n      <EmberTr @api={{api}} />\n    {{/if}}\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"Vxj6Y/Zb\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"wrappedRows\\\"]]],null]],null],null,[[[41,[48,[30,2]],[[[1,\\\"    \\\"],[18,2,[[28,[37,5],null,[[\\\"cells\\\",\\\"isHeader\\\",\\\"rowsCount\\\",\\\"row\\\"],[[30,1,[\\\"cells\\\"]],[30,1,[\\\"isHeader\\\"]],[30,1,[\\\"rowsCount\\\"]],[50,\\\"ember-tr\\\",0,null,[[\\\"api\\\"],[[30,1]]]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,7],null,[[\\\"@api\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]]]],[1]],null]],[\\\"api\\\",\\\"&default\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ember-tr\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-thead/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-table/components/ember-tr/component\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/object/computed\", \"ember-table/-private/utils/element\", \"ember-table/components/ember-tr/template\", \"ember-table/-private/collapse-tree\"], function (_exports, _component, _object, _computed, _element, _template, _collapseTree) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n    The table row component. This component manages row level concerns, and yields\n    an API object that contains the cell component, the cell/column/row values,\n    and the cell/column/row meta objects. It is used in both the header and the\n    body, mirroring the structure of native HTML tables.\n  \n    ```hbs\n    <EmberTable as |t|>\n      <t.head @columns={{this.columns}} as |h|>\n        <h.row as |r|>\n          <r.cell>\n        </h.row>\n      </t.head>\n  \n      <t.body @rows={{this.rows}} as |b|>\n        <b.row as |r|>\n          <r.cell>\n        </b.row>\n      </t.body>\n    </EmberTable>\n    ```\n  \n    @yield {object} row - the API object yielded by the table row\n    @yield {Component} row.cell - The table cell contextual component\n  \n    @yield {any} row.cellValue - The value for the currently yielded cell\n    @yield {object} row.cellMeta - The meta for the currently yielded cell\n  \n    @yield {object} row.columnValue - The value for the currently yielded column\n    @yield {object} row.columnMeta - The meta for the currently yielded column\n  \n    @yield {object} row.rowValue - The value for the currently yielded row\n    @yield {object} row.rowMeta - The meta for the currently yielded row\n  \n    @class <EmberTr />\n    @public\n  */\n  var _default = _exports.default = _component.default.extend({\n    layout: _template.default,\n    tagName: 'tr',\n    classNames: ['et-tr'],\n    classNameBindings: ['isSelected', 'isGroupSelected', 'isSelectable'],\n    /**\n      The API object passed in by the table body, header, or footer\n      @argument api\n      @required\n      @type object\n    */\n    api: null,\n    /**\n      Action sent when the user clicks this element\n      @argument onClick\n      @type Action?\n    */\n    onClick: null,\n    /**\n      Action sent when the user double clicks this element\n      @argument onDoubleClick\n      @type Action?\n    */\n    onDoubleClick: null,\n    rowValue: (0, _computed.readOnly)('api.rowValue'),\n    rowMeta: (0, _computed.readOnly)('api.rowMeta'),\n    cells: (0, _computed.readOnly)('api.cells'),\n    rowSelectionMode: (0, _computed.readOnly)('api.rowSelectionMode'),\n    rowToggleMode: (0, _computed.readOnly)('api.rowToggleMode'),\n    isHeader: (0, _computed.readOnly)('api.isHeader'),\n    isSelected: (0, _computed.readOnly)('rowMeta.isSelected'),\n    isGroupSelected: (0, _computed.readOnly)('rowMeta.isGroupSelected'),\n    isSelectable: (0, _object.computed)('rowSelectionMode', function () {\n      var rowSelectionMode = this.get('rowSelectionMode');\n      return rowSelectionMode === _collapseTree.SELECT_MODE.MULTIPLE || rowSelectionMode === _collapseTree.SELECT_MODE.SINGLE;\n    }),\n    click: function click(event) {\n      var rowSelectionMode = this.get('rowSelectionMode');\n      var inputParent = (0, _element.closest)(event.target, 'input, button, label, a, select');\n      if (!inputParent) {\n        var rowMeta = this.get('rowMeta');\n        if (rowMeta && rowSelectionMode === _collapseTree.SELECT_MODE.MULTIPLE) {\n          var toggle = event.ctrlKey || event.metaKey || this.get('rowToggleMode');\n          var range = event.shiftKey;\n          rowMeta.select({\n            toggle: toggle,\n            range: range\n          });\n        } else if (rowMeta && rowSelectionMode === _collapseTree.SELECT_MODE.SINGLE) {\n          rowMeta.select({\n            single: true\n          });\n        }\n      }\n      this.sendEventAction('onClick', event);\n    },\n    doubleClick: function doubleClick(event) {\n      this.sendEventAction('onDoubleClick', event);\n    },\n    sendEventAction: function sendEventAction(action, event) {\n      var rowValue = this.get('rowValue');\n      var rowMeta = this.get('rowMeta');\n      var closureAction = this[action];\n      closureAction === null || closureAction === void 0 ? void 0 : closureAction({\n        event: event,\n        rowValue: rowValue,\n        rowMeta: rowMeta\n      });\n    }\n  });\n});","define(\"ember-table/components/ember-tr/template\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.cells as |api|}}\n    {{#if (has-block)}}\n      {{#if this.isHeader}}\n        {{yield (hash\n          columnValue=api.columnValue\n          columnMeta=api.columnMeta\n  \n          sorts=api.sorts\n          sendUpdateSort=api.sendUpdateSort\n  \n          rowMeta=api.rowMeta\n          rowsCount=api.rowsCount\n  \n          cell=(component \"ember-th\" api=api)\n        )}}\n      {{else}}\n        {{yield (hash\n          api=api\n  \n          cellValue=api.cellValue\n          cellMeta=api.cellMeta\n  \n          columnValue=api.columnValue\n          columnMeta=api.columnMeta\n  \n          rowValue=api.rowValue\n          rowMeta=api.rowMeta\n  \n          rowsCount=api.rowsCount\n  \n          cell=(component \"ember-td\" api=api)\n        )}}\n      {{/if}}\n    {{else if this.isHeader}}\n      <EmberTh @api={{api}} />\n    {{else}}\n      <EmberTd @api={{api}} />\n    {{/if}}\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"C7IvXL/k\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"cells\\\"]]],null]],null],null,[[[41,[48,[30,2]],[[[41,[30,0,[\\\"isHeader\\\"]],[[[1,\\\"      \\\"],[18,2,[[28,[37,5],null,[[\\\"columnValue\\\",\\\"columnMeta\\\",\\\"sorts\\\",\\\"sendUpdateSort\\\",\\\"rowMeta\\\",\\\"rowsCount\\\",\\\"cell\\\"],[[30,1,[\\\"columnValue\\\"]],[30,1,[\\\"columnMeta\\\"]],[30,1,[\\\"sorts\\\"]],[30,1,[\\\"sendUpdateSort\\\"]],[30,1,[\\\"rowMeta\\\"]],[30,1,[\\\"rowsCount\\\"]],[50,\\\"ember-th\\\",0,null,[[\\\"api\\\"],[[30,1]]]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[18,2,[[28,[37,5],null,[[\\\"api\\\",\\\"cellValue\\\",\\\"cellMeta\\\",\\\"columnValue\\\",\\\"columnMeta\\\",\\\"rowValue\\\",\\\"rowMeta\\\",\\\"rowsCount\\\",\\\"cell\\\"],[[30,1],[30,1,[\\\"cellValue\\\"]],[30,1,[\\\"cellMeta\\\"]],[30,1,[\\\"columnValue\\\"]],[30,1,[\\\"columnMeta\\\"]],[30,1,[\\\"rowValue\\\"]],[30,1,[\\\"rowMeta\\\"]],[30,1,[\\\"rowsCount\\\"]],[50,\\\"ember-td\\\",0,null,[[\\\"api\\\"],[[30,1]]]]]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[30,0,[\\\"isHeader\\\"]],[[[1,\\\"    \\\"],[8,[39,7],null,[[\\\"@api\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,8],null,[[\\\"@api\\\"],[[30,1]]],null],[1,\\\"\\\\n  \\\"]],[]]]],[]]]],[1]],null]],[\\\"api\\\",\\\"&default\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"ember-th\\\",\\\"ember-td\\\"]]\",\n    \"moduleName\": \"ember-table/components/ember-tr/template.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-test-waiters/index\", [\"exports\", \"@ember/debug\", \"@ember/test-waiters\"], function (_exports, _debug, _testWaiters) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.keys(_testWaiters).forEach(function (key) {\n    if (key === \"default\" || key === \"__esModule\") return;\n    if (key in _exports && _exports[key] === _testWaiters[key]) return;\n    Object.defineProperty(_exports, key, {\n      enumerable: true,\n      get: function get() {\n        return _testWaiters[key];\n      }\n    });\n  });\n  (true && !(false) && (0, _debug.deprecate)('Importing from ember-test-waiters is deprecated. Please import from @ember/test-waiters', false, {\n    id: 'ember-test-waiters-legacy-module-name',\n    until: '3.0.0',\n    for: 'ember-test-waiters',\n    since: {\n      enabled: '2.2.0'\n    }\n  }));\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-toggle/components/x-toggle-label\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @show}}\n    <label\n      for={{@switchId}}\n      class=\"toggle-text toggle-prefix {{this.type}}-label\"\n      ...attributes\n      {{on 'click' this.clickLabel}}\n    >\n      {{#if (has-block)}}\n        {{yield @label}}\n      {{else}}\n        {{@label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  */\n  {\n    \"id\": \"vm2lPEHB\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,\\\"label\\\"],[16,\\\"for\\\",[30,2]],[16,0,[29,[\\\"toggle-text toggle-prefix \\\",[30,0,[\\\"type\\\"]],\\\"-label\\\"]]],[17,3],[4,[38,2],[\\\"click\\\",[30,0,[\\\"clickLabel\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,5]],[[[1,\\\"      \\\"],[18,5,[[30,4]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,4]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@show\\\",\\\"@switchId\\\",\\\"&attrs\\\",\\\"@label\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"label\\\",\\\"on\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-toggle/components/x-toggle-label.hbs\",\n    \"isStrictMode\": false\n  });\n  var XToggleLabel = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function XToggleLabel() {\n      _classCallCheck(this, XToggleLabel);\n      return _callSuper(this, XToggleLabel, arguments);\n    }\n    _inherits(XToggleLabel, _Component);\n    return _createClass(XToggleLabel, [{\n      key: \"type\",\n      get: function get() {\n        return this.args.value ? 'on' : 'off';\n      }\n    }, {\n      key: \"clickLabel\",\n      value: function clickLabel(e) {\n        e.stopPropagation();\n        e.preventDefault();\n        this.args.sendToggle(this.args.value);\n      }\n    }]);\n  }(_component2.default), _applyDecoratedDescriptor(_class.prototype, \"clickLabel\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"clickLabel\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, XToggleLabel);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-toggle/components/x-toggle-switch\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/runloop\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _runloop, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <span\n    class=\"x-toggle-container\n      {{@size}}\n      {{if @disabled 'x-toggle-container-disabled'}}\n      {{if @value 'x-toggle-container-checked'}}\n    \"\n    ...attributes\n    {{did-pan\n      onPanStart=this.handlePan\n      onPan=this.handlePan\n      pointerTypes=(array 'touch' 'mouse')\n    }}\n    {{will-destroy this.removeListener}}\n  >\n    <input\n      class='x-toggle'\n      type='checkbox'\n      checked={{@toggled}}\n      disabled={{@disabled}}\n      id={{@forId}}\n      name={{@name}}\n      {{on 'change' this.onChange}}\n    />\n  \n    <label for={{this.effectiveForId}}>\n      <div\n        id=\"x-toggle-visual-{{@forId}}\"\n        role='checkbox'\n        class=\"x-toggle-btn\n          {{this.themeClass}}\n          {{@variant}}\n          {{@size}}\n          {{if @disabled ' x-toggle-disabled'}}\n        \"\n        aria-owns={{@forId}}\n        aria-checked={{@toggled}}\n        data-tg-on={{@onLabel}}\n        data-tg-off={{@offLabel}}\n      >\n      </div>\n    </label>\n  </span>\n  */\n  {\n    \"id\": \"Y3u/wgh2\",\n    \"block\": \"[[[11,1],[16,0,[29,[\\\"x-toggle-container\\\\n    \\\",[30,1],\\\"\\\\n    \\\",[52,[30,2],\\\"x-toggle-container-disabled\\\"],\\\"\\\\n    \\\",[52,[30,3],\\\"x-toggle-container-checked\\\"],\\\"\\\\n  \\\"]]],[17,4],[4,[38,2],null,[[\\\"onPanStart\\\",\\\"onPan\\\",\\\"pointerTypes\\\"],[[30,0,[\\\"handlePan\\\"]],[30,0,[\\\"handlePan\\\"]],[28,[37,3],[\\\"touch\\\",\\\"mouse\\\"],null]]]],[4,[38,4],[[30,0,[\\\"removeListener\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[11,\\\"input\\\"],[24,0,\\\"x-toggle\\\"],[16,\\\"checked\\\",[30,5]],[16,\\\"disabled\\\",[30,2]],[16,1,[30,6]],[16,3,[30,7]],[24,4,\\\"checkbox\\\"],[4,[38,6],[\\\"change\\\",[30,0,[\\\"onChange\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[30,0,[\\\"effectiveForId\\\"]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,1,[29,[\\\"x-toggle-visual-\\\",[30,6]]]],[14,\\\"role\\\",\\\"checkbox\\\"],[15,0,[29,[\\\"x-toggle-btn\\\\n        \\\",[30,0,[\\\"themeClass\\\"]],\\\"\\\\n        \\\",[30,8],\\\"\\\\n        \\\",[30,1],\\\"\\\\n        \\\",[52,[30,2],\\\" x-toggle-disabled\\\"],\\\"\\\\n      \\\"]]],[15,\\\"aria-owns\\\",[30,6]],[15,\\\"aria-checked\\\",[30,5]],[15,\\\"data-tg-on\\\",[30,9]],[15,\\\"data-tg-off\\\",[30,10]],[12],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@size\\\",\\\"@disabled\\\",\\\"@value\\\",\\\"&attrs\\\",\\\"@toggled\\\",\\\"@forId\\\",\\\"@name\\\",\\\"@variant\\\",\\\"@onLabel\\\",\\\"@offLabel\\\"],false,[\\\"span\\\",\\\"if\\\",\\\"did-pan\\\",\\\"array\\\",\\\"will-destroy\\\",\\\"input\\\",\\\"on\\\",\\\"label\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"ember-toggle/components/x-toggle-switch.hbs\",\n    \"isStrictMode\": false\n  });\n  var XToggleSwitch = _exports.default = (_class = /*#__PURE__*/function (_Component) {\n    function XToggleSwitch() {\n      var _this;\n      _classCallCheck(this, XToggleSwitch);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, XToggleSwitch, [].concat(args));\n      _initializerDefineProperty(_this, \"labelDisabled\", _descriptor, _this);\n      return _this;\n    }\n    _inherits(XToggleSwitch, _Component);\n    return _createClass(XToggleSwitch, [{\n      key: \"effectiveForId\",\n      get: function get() {\n        return this.labelDisabled ? null : this.args.forId;\n      }\n    }, {\n      key: \"themeClass\",\n      get: function get() {\n        var theme = this.args.theme || 'default';\n        return \"x-toggle-\".concat(theme);\n      }\n    }, {\n      key: \"handlePan\",\n      value: function handlePan(touchData) {\n        if (this.args.disabled) {\n          return;\n        }\n        var isToggled = touchData.current.distanceX > 0;\n        this.args.sendToggle(isToggled);\n        this._disableLabelUntilMouseUp();\n      }\n    }, {\n      key: \"onChange\",\n      value: function onChange(e) {\n        if (this.args.disabled) {\n          return;\n        }\n        this.args.sendToggle(e.target.checked);\n      }\n    }, {\n      key: \"removeListener\",\n      value: function removeListener() {\n        this._removeListener();\n      }\n\n      /*\n        When you pan with a mouse and release the mouse button over the <label>\n        element, a click event happens and returns the toggle to its initial\n        state. :(\n         To prevent this, we need to make the label non-functional until after the\n        mouse button is released.\n       */\n    }, {\n      key: \"_disableLabelUntilMouseUp\",\n      value: function _disableLabelUntilMouseUp() {\n        var _this2 = this;\n        if (this.labelDisabled) {\n          return;\n        }\n        var _listener = function _listener() {\n          (0, _runloop.next)(function () {\n            if (_this2.isDestroying || _this2.isDestroyed) {\n              return;\n            }\n            _this2._removeListener();\n            _this2.labelDisabled = false;\n          });\n        };\n        this.labelDisabled = true;\n        this._listener = _listener;\n        document.addEventListener('mouseup', _listener);\n      }\n    }, {\n      key: \"_removeListener\",\n      value: function _removeListener() {\n        var _listener = this._listener;\n        if (_listener) {\n          document.removeEventListener('mouseup', _listener);\n          this._listener = null;\n        }\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"labelDisabled\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handlePan\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handlePan\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeListener\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeListener\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, XToggleSwitch);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-toggle/components/x-toggle\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/application\", \"@ember/object/internals\", \"ember-cached-decorator-polyfill\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _tracking, _application, _internals, _emberCachedDecoratorPolyfill, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10;\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  var __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class='x-toggle-component {{if this.focused 'x-toggle-focused'}}'\n    tabindex='0'\n    ...attributes\n    {{did-insert this.setContainer}}\n    {{on 'focusin' this.handleFocusIn}}\n    {{on 'focusout' this.handleFocusOut}}\n    {{on 'keypress' this.spacebarToggle}}\n  >\n    {{#if (has-block)}}\n      {{yield\n        (hash\n          switch=(component\n            'x-toggle-switch'\n            disabled=this.disabled\n            forId=this.forId\n            name=this.name\n            offLabel=this.offLabel\n            onLabel=this.onLabel\n            size=this.size\n            theme=this.theme\n            variant=this.variant\n            toggled=this.toggled\n            value=this.value\n            sendToggle=this.toggleSwitch\n          )\n          offLabel=(component\n            'x-toggle-label'\n            label=this.offLabel\n            show=this.showLabels\n            switchId=this.forId\n            value=false\n            sendToggle=this.toggleSwitch\n          )\n          onLabel=(component\n            'x-toggle-label'\n            label=this.onLabel\n            show=this.showLabels\n            switchId=this.forId\n            value=true\n            sendToggle=this.toggleSwitch\n          )\n          label=(component\n            'x-toggle-label'\n            show=this.showLabels\n            switchId=this.forId\n            sendToggle=this.toggleSwitch\n          )\n        )\n      }}\n    {{else}}\n      <XToggleLabel\n        @label={{this.offLabel}}\n        @show={{this.showLabels}}\n        @switchId={{this.forId}}\n        @value={{false}}\n        @sendToggle={{this.toggleSwitch}}\n      />\n  \n      <XToggleSwitch\n        @disabled={{this.disabled}}\n        @forId={{this.forId}}\n        @name={{this.name}}\n        @offLabel={{this.offLabel}}\n        @onLabel={{this.onLabel}}\n        @size={{this.size}}\n        @theme={{this.theme}}\n        @variant={{this.variant}}\n        @toggled={{this.toggled}}\n        @value={{this.value}}\n        @sendToggle={{this.toggleSwitch}}\n      />\n  \n      <XToggleLabel\n        @label={{this.onLabel}}\n        @show={{this.showLabels}}\n        @switchId={{this.forId}}\n        @value={{true}}\n        @sendToggle={{this.toggleSwitch}}\n      />\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"XA3WrVzH\",\n    \"block\": \"[[[11,0],[16,0,[29,[\\\"x-toggle-component \\\",[52,[30,0,[\\\"focused\\\"]],\\\"x-toggle-focused\\\"]]]],[24,\\\"tabindex\\\",\\\"0\\\"],[17,1],[4,[38,2],[[30,0,[\\\"setContainer\\\"]]],null],[4,[38,3],[\\\"focusin\\\",[30,0,[\\\"handleFocusIn\\\"]]],null],[4,[38,3],[\\\"focusout\\\",[30,0,[\\\"handleFocusOut\\\"]]],null],[4,[38,3],[\\\"keypress\\\",[30,0,[\\\"spacebarToggle\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,2]],[[[1,\\\"    \\\"],[18,2,[[28,[37,6],null,[[\\\"switch\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"label\\\"],[[50,\\\"x-toggle-switch\\\",0,null,[[\\\"disabled\\\",\\\"forId\\\",\\\"name\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"size\\\",\\\"theme\\\",\\\"variant\\\",\\\"toggled\\\",\\\"value\\\",\\\"sendToggle\\\"],[[30,0,[\\\"disabled\\\"]],[30,0,[\\\"forId\\\"]],[30,0,[\\\"name\\\"]],[30,0,[\\\"offLabel\\\"]],[30,0,[\\\"onLabel\\\"]],[30,0,[\\\"size\\\"]],[30,0,[\\\"theme\\\"]],[30,0,[\\\"variant\\\"]],[30,0,[\\\"toggled\\\"]],[30,0,[\\\"value\\\"]],[30,0,[\\\"toggleSwitch\\\"]]]]],[50,\\\"x-toggle-label\\\",0,null,[[\\\"label\\\",\\\"show\\\",\\\"switchId\\\",\\\"value\\\",\\\"sendToggle\\\"],[[30,0,[\\\"offLabel\\\"]],[30,0,[\\\"showLabels\\\"]],[30,0,[\\\"forId\\\"]],false,[30,0,[\\\"toggleSwitch\\\"]]]]],[50,\\\"x-toggle-label\\\",0,null,[[\\\"label\\\",\\\"show\\\",\\\"switchId\\\",\\\"value\\\",\\\"sendToggle\\\"],[[30,0,[\\\"onLabel\\\"]],[30,0,[\\\"showLabels\\\"]],[30,0,[\\\"forId\\\"]],true,[30,0,[\\\"toggleSwitch\\\"]]]]],[50,\\\"x-toggle-label\\\",0,null,[[\\\"show\\\",\\\"switchId\\\",\\\"sendToggle\\\"],[[30,0,[\\\"showLabels\\\"]],[30,0,[\\\"forId\\\"]],[30,0,[\\\"toggleSwitch\\\"]]]]]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,8],null,[[\\\"@label\\\",\\\"@show\\\",\\\"@switchId\\\",\\\"@value\\\",\\\"@sendToggle\\\"],[[30,0,[\\\"offLabel\\\"]],[30,0,[\\\"showLabels\\\"]],[30,0,[\\\"forId\\\"]],false,[30,0,[\\\"toggleSwitch\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,9],null,[[\\\"@disabled\\\",\\\"@forId\\\",\\\"@name\\\",\\\"@offLabel\\\",\\\"@onLabel\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@variant\\\",\\\"@toggled\\\",\\\"@value\\\",\\\"@sendToggle\\\"],[[30,0,[\\\"disabled\\\"]],[30,0,[\\\"forId\\\"]],[30,0,[\\\"name\\\"]],[30,0,[\\\"offLabel\\\"]],[30,0,[\\\"onLabel\\\"]],[30,0,[\\\"size\\\"]],[30,0,[\\\"theme\\\"]],[30,0,[\\\"variant\\\"]],[30,0,[\\\"toggled\\\"]],[30,0,[\\\"value\\\"]],[30,0,[\\\"toggleSwitch\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,8],null,[[\\\"@label\\\",\\\"@show\\\",\\\"@switchId\\\",\\\"@value\\\",\\\"@sendToggle\\\"],[[30,0,[\\\"onLabel\\\"]],[30,0,[\\\"showLabels\\\"]],[30,0,[\\\"forId\\\"]],true,[30,0,[\\\"toggleSwitch\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"did-insert\\\",\\\"on\\\",\\\"has-block\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\",\\\"x-toggle-label\\\",\\\"x-toggle-switch\\\"]]\",\n    \"moduleName\": \"ember-toggle/components/x-toggle.hbs\",\n    \"isStrictMode\": false\n  });\n  function configValue(configName, defaultValue) {\n    return function (target, name) {\n      return {\n        get: function get() {\n          var _ref, _this$args$name, _this$config;\n          return (_ref = (_this$args$name = this.args[name]) !== null && _this$args$name !== void 0 ? _this$args$name : configName && ((_this$config = this.config) === null || _this$config === void 0 ? void 0 : _this$config[configName])) !== null && _ref !== void 0 ? _ref : defaultValue;\n        }\n      };\n    };\n  }\n  var XToggle = _exports.default = (_dec = configValue(null, false), _dec2 = configValue(null, false), _dec3 = configValue(null, 'default'), _dec4 = configValue('defaultOnLabel', 'On'), _dec5 = configValue('defaultOffLabel', 'Off'), _dec6 = configValue('defaultTheme', 'default'), _dec7 = configValue('defaultVariant', ''), _dec8 = configValue('defaultShowLabels', false), _dec9 = configValue('defaultSize', 'medium'), _class = /*#__PURE__*/function (_Component) {\n    function XToggle() {\n      var _this;\n      _classCallCheck(this, XToggle);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _callSuper(this, XToggle, [].concat(args));\n      _initializerDefineProperty(_this, \"focused\", _descriptor, _this);\n      _defineProperty(_this, \"container\", void 0);\n      _initializerDefineProperty(_this, \"disabled\", _descriptor2, _this);\n      _initializerDefineProperty(_this, \"value\", _descriptor3, _this);\n      _initializerDefineProperty(_this, \"name\", _descriptor4, _this);\n      _initializerDefineProperty(_this, \"onLabel\", _descriptor5, _this);\n      _initializerDefineProperty(_this, \"offLabel\", _descriptor6, _this);\n      _initializerDefineProperty(_this, \"theme\", _descriptor7, _this);\n      _initializerDefineProperty(_this, \"variant\", _descriptor8, _this);\n      _initializerDefineProperty(_this, \"showLabels\", _descriptor9, _this);\n      _initializerDefineProperty(_this, \"size\", _descriptor10, _this);\n      return _this;\n    }\n    _inherits(XToggle, _Component);\n    return _createClass(XToggle, [{\n      key: \"config\",\n      get: function get() {\n        return (0, _application.getOwner)(this).resolveRegistration('config:environment')['ember-toggle'] || {};\n      }\n    }, {\n      key: \"toggled\",\n      get: function get() {\n        return this.value;\n      }\n    }, {\n      key: \"forId\",\n      get: function get() {\n        return (0, _internals.guidFor)(this) + '-x-toggle';\n      }\n    }, {\n      key: \"toggleSwitch\",\n      value: function toggleSwitch(value) {\n        var onToggle = this.args.onToggle;\n        var disabled = this.disabled;\n        if (!disabled && value !== this.value && typeof onToggle === 'function') {\n          var name = this.name;\n          onToggle(value, name);\n\n          // The click on input/label will toggle the input unconditionally.\n          // Input state has to be updated manually to prevent it going out of\n          // sync in case the action didn't update value.\n          var checkbox = this.container.querySelector('.x-toggle');\n          var newValue = this.value;\n          if (checkbox.checked !== newValue) {\n            checkbox.checked = newValue;\n          }\n        }\n      }\n    }, {\n      key: \"setContainer\",\n      value: function setContainer(element) {\n        this.container = element;\n      }\n    }, {\n      key: \"spacebarToggle\",\n      value: function spacebarToggle(event) {\n        // spacebar: 32\n        if (event.which === 32) {\n          event.preventDefault();\n          this.toggleSwitch(!this.value);\n        }\n      }\n    }, {\n      key: \"handleFocusIn\",\n      value: function handleFocusIn() {\n        this.focused = true;\n      }\n    }, {\n      key: \"handleFocusOut\",\n      value: function handleFocusOut() {\n        this.focused = false;\n      }\n    }]);\n  }(_component2.default), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"focused\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function initializer() {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"disabled\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"value\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"name\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"onLabel\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"offLabel\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"theme\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"variant\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"showLabels\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"size\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"config\", [_emberCachedDecoratorPolyfill.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"config\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"forId\", [_emberCachedDecoratorPolyfill.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"forId\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleSwitch\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleSwitch\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setContainer\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setContainer\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"spacebarToggle\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"spacebarToggle\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleFocusIn\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleFocusIn\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleFocusOut\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleFocusOut\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, XToggle);\n});","define(\"ember-tracked-storage-polyfill/index\", [\"exports\", \"@glimmer/tracking\", \"@ember/debug\"], function (_exports, _tracking, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.createStorage = createStorage;\n  _exports.getValue = getValue;\n  _exports.setValue = setValue;\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {\n    var c = arguments.length,\n      r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n      d;\n    if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n  };\n  var TrackedStorageImpl = /*#__PURE__*/_createClass(function TrackedStorageImpl(initialValue, isEqual) {\n    _classCallCheck(this, TrackedStorageImpl);\n    this._value = this._lastValue = initialValue;\n    this._isEqual = isEqual;\n  });\n  __decorate([_tracking.tracked], TrackedStorageImpl.prototype, \"_value\", void 0);\n  function tripleEq(a, b) {\n    return a === b;\n  }\n  function createStorage(initialValue) {\n    var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : tripleEq;\n    (true && !(typeof isEqual === 'function') && (0, _debug.assert)('the second parameter to `createStorage` must be an equality function or undefined', typeof isEqual === 'function'));\n    return new TrackedStorageImpl(initialValue, isEqual);\n  }\n  function getValue(storage) {\n    (true && !(storage instanceof TrackedStorageImpl) && (0, _debug.assert)('getValue must be passed a tracked store created with `createStorage`.', storage instanceof TrackedStorageImpl));\n    return storage._value;\n  }\n  function setValue(storage, value) {\n    (true && !(storage instanceof TrackedStorageImpl) && (0, _debug.assert)('setValue must be passed a tracked store created with `createStorage`.', storage instanceof TrackedStorageImpl));\n    var isEqual = storage._isEqual,\n      lastValue = storage._lastValue;\n    if (!isEqual(value, lastValue)) {\n      storage._value = storage._lastValue = value;\n    }\n  }\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\ndefine(\"ember-url-hash-polyfill/index\", [\"exports\", \"@ember/application\", \"@ember/debug\", \"@ember/destroyable\", \"@ember/runloop\", \"@ember/test-waiters\"], function (_exports, _application, _debug, _destroyable, _runloop, _testWaiters) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.scrollToHash = scrollToHash;\n  _exports.uiSettled = uiSettled;\n  _exports.withHashSupport = withHashSupport;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\n  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function withHashSupport(AppRouter) {\n    return /*#__PURE__*/function (_AppRouter) {\n      function RouterWithHashSupport() {\n        var _this;\n        _classCallCheck(this, RouterWithHashSupport);\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        _this = _callSuper(this, RouterWithHashSupport, [].concat(args));\n        setupHashSupport(_this);\n        return _this;\n      }\n      _inherits(RouterWithHashSupport, _AppRouter);\n      return _createClass(RouterWithHashSupport);\n    }(AppRouter);\n  }\n  function scrollToHash(hash) {\n    var selector = \"[name=\\\"\".concat(hash, \"\\\"]\");\n    var element = document.getElementById(hash) || document.querySelector(selector);\n    if (!element) {\n      (true && (0, _debug.warn)(\"Tried to scroll to element with id or name \\\"\".concat(hash, \"\\\", but it was not found\"), {\n        id: 'no-hash-target'\n      }));\n      return;\n    }\n\n    /**\n     * NOTE: the ember router does not support hashes in the URL\n     *       https://github.com/emberjs/rfcs/issues/709\n     *\n     *       this means that when testing hash changes in the URL,\n     *       we have to assert against the window.location, rather than\n     *       the self-container currentURL helper\n     *\n     * NOTE: other ways of changing the URL, but without the smoothness:\n     *   - window[.top].location.replace\n     */\n\n    element.scrollIntoView({\n      behavior: 'smooth'\n    });\n    if (hash !== window.location.hash) {\n      var withoutHash = location.href.split('#')[0];\n      var nextUrl = \"\".concat(withoutHash, \"#\").concat(hash);\n      // most browsers ignore the title param of pushState\n      var titleWithoutHash = document.title.split(' | #')[0];\n      var nextTitle = \"\".concat(titleWithoutHash, \" | #\").concat(hash);\n      history.pushState({}, nextTitle, nextUrl);\n      document.title = nextTitle;\n    }\n  }\n  function isLoadingRoute(routeName) {\n    return routeName.endsWith('_loading') || routeName.endsWith('.loading');\n  }\n  function setupHashSupport(_x) {\n    return _setupHashSupport.apply(this, arguments);\n  }\n  function _setupHashSupport() {\n    _setupHashSupport = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(router) {\n      var initialURL, owner, routerService, handleHashIntent;\n      return _regeneratorRuntime().wrap(function _callee$(_context) {\n        while (1) switch (_context.prev = _context.next) {\n          case 0:\n            handleHashIntent = function _handleHashIntent(transition) {\n              var _ref2 = transition.intent || {},\n                url = _ref2.url;\n              if (!url) {\n                return;\n              }\n              eventuallyTryScrollingTo(owner, url);\n            };\n            owner = (0, _application.getOwner)(router);\n            _context.next = 4;\n            return new Promise(function (resolve) {\n              var interval = setInterval(function () {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                var _ref = router,\n                  currentURL = _ref.currentURL,\n                  currentRouteName = _ref.currentRouteName; /* Private API */\n\n                if (currentURL && !isLoadingRoute(currentRouteName)) {\n                  clearInterval(interval);\n                  initialURL = currentURL;\n                  resolve(null);\n                }\n              }, 100);\n            });\n          case 4:\n            if (!((0, _destroyable.isDestroyed)(owner) || (0, _destroyable.isDestroying)(owner))) {\n              _context.next = 6;\n              break;\n            }\n            return _context.abrupt(\"return\");\n          case 6:\n            /**\n             * This handles the initial Page Load, which is not imperceptible through\n             * route{Did,Will}Change\n             *\n             */\n            requestAnimationFrame(function () {\n              eventuallyTryScrollingTo(owner, initialURL);\n            });\n            routerService = owner.lookup('service:router');\n            routerService.on('routeDidChange', handleHashIntent);\n            (0, _destroyable.registerDestructor)(router, function () {\n              // eslint-disable-next-line @typescript-eslint/no-explicit-any\n              routerService /* type def missing \"off\" */.off('routeDidChange', handleHashIntent);\n            });\n          case 10:\n          case \"end\":\n            return _context.stop();\n        }\n      }, _callee);\n    }));\n    return _setupHashSupport.apply(this, arguments);\n  }\n  var CACHE = new WeakMap();\n  function eventuallyTryScrollingTo(_x2, _x3) {\n    return _eventuallyTryScrollingTo.apply(this, arguments);\n  }\n  function _eventuallyTryScrollingTo() {\n    _eventuallyTryScrollingTo = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(owner, url) {\n      var _CACHE$get;\n      var _url$split, _url$split2, hash;\n      return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n        while (1) switch (_context2.prev = _context2.next) {\n          case 0:\n            // Prevent quick / rapid transitions from continuing to observer beyond their URL-scope\n            (_CACHE$get = CACHE.get(owner)) === null || _CACHE$get === void 0 || _CACHE$get.disconnect();\n            if (url) {\n              _context2.next = 3;\n              break;\n            }\n            return _context2.abrupt(\"return\");\n          case 3:\n            _url$split = url.split('#'), _url$split2 = _slicedToArray(_url$split, 2), hash = _url$split2[1];\n            if (hash) {\n              _context2.next = 6;\n              break;\n            }\n            return _context2.abrupt(\"return\");\n          case 6:\n            _context2.next = 8;\n            return (0, _testWaiters.waitForPromise)(uiSettled(owner));\n          case 8:\n            if (!((0, _destroyable.isDestroyed)(owner) || (0, _destroyable.isDestroying)(owner))) {\n              _context2.next = 10;\n              break;\n            }\n            return _context2.abrupt(\"return\");\n          case 10:\n            scrollToHash(hash);\n          case 11:\n          case \"end\":\n            return _context2.stop();\n        }\n      }, _callee2);\n    }));\n    return _eventuallyTryScrollingTo.apply(this, arguments);\n  }\n  var TIME_SINCE_LAST_MUTATION = 500; // ms\n  var MAX_TIMEOUT = 2000; // ms\n\n  // exported for testing\n  function uiSettled(_x4) {\n    return _uiSettled.apply(this, arguments);\n  }\n  function _uiSettled() {\n    _uiSettled = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(owner) {\n      var timeStarted, lastMutationAt, totalTimeWaited, observer;\n      return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n        while (1) switch (_context3.prev = _context3.next) {\n          case 0:\n            timeStarted = new Date().getTime();\n            lastMutationAt = Infinity;\n            totalTimeWaited = 0;\n            observer = new MutationObserver(function () {\n              lastMutationAt = new Date().getTime();\n            });\n            CACHE.set(owner, observer);\n            observer.observe(document.body, {\n              childList: true,\n              subtree: true\n            });\n\n            /**\n             * Wait for DOM mutations to stop until MAX_TIMEOUT\n             */\n            _context3.next = 8;\n            return new Promise(function (resolve) {\n              var frame;\n              function requestTimeCheck() {\n                if (frame) cancelAnimationFrame(frame);\n                if ((0, _destroyable.isDestroyed)(owner) || (0, _destroyable.isDestroying)(owner)) {\n                  return;\n                }\n                frame = requestAnimationFrame(function () {\n                  totalTimeWaited = new Date().getTime() - timeStarted;\n                  var timeSinceLastMutation = new Date().getTime() - lastMutationAt;\n                  if (totalTimeWaited >= MAX_TIMEOUT) {\n                    return resolve(totalTimeWaited);\n                  }\n                  if (timeSinceLastMutation >= TIME_SINCE_LAST_MUTATION) {\n                    return resolve(totalTimeWaited);\n                  }\n                  (0, _runloop.schedule)('afterRender', requestTimeCheck);\n                });\n              }\n              (0, _runloop.schedule)('afterRender', requestTimeCheck);\n            });\n          case 8:\n          case \"end\":\n            return _context3.stop();\n        }\n      }, _callee3);\n    }));\n    return _uiSettled.apply(this, arguments);\n  }\n});","define(\"ember-uuid/index\", [\"exports\", \"ember-uuid/utils/uuid-generator\"], function (_exports, _uuidGenerator) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"parse\", {\n    enumerable: true,\n    get: function get() {\n      return _uuidGenerator.parse;\n    }\n  });\n  Object.defineProperty(_exports, \"unparse\", {\n    enumerable: true,\n    get: function get() {\n      return _uuidGenerator.unparse;\n    }\n  });\n  Object.defineProperty(_exports, \"v1\", {\n    enumerable: true,\n    get: function get() {\n      return _uuidGenerator.v1;\n    }\n  });\n  Object.defineProperty(_exports, \"v4\", {\n    enumerable: true,\n    get: function get() {\n      return _uuidGenerator.v4;\n    }\n  });\n});","define(\"ember-uuid/utils/browser-rng\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   * Based on code from node-uuid.\n   */\n\n  var rng;\n  if (window && window.crypto && window.crypto.getRandomValues) {\n    // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n    // Moderately fast, high quality\n    var _rnds8 = new Uint8Array(16);\n    rng = function whatwgRNG() {\n      window.crypto.getRandomValues(_rnds8);\n      return _rnds8;\n    };\n  }\n  if (!rng) {\n    // Math.random()-based (RNG)\n    //\n    // If all else fails, use Math.random().  It's fast, but is of unspecified\n    // quality.\n    var _rnds = new Array(16);\n    rng = function rng() {\n      for (var i = 0, r; i < 16; i++) {\n        if ((i & 0x03) === 0) {\n          r = Math.random() * 0x100000000;\n        }\n        _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n      }\n      return _rnds;\n    };\n  }\n  var _default = _exports.default = rng;\n});","define(\"ember-uuid/utils/uuid-generator\", [\"exports\", \"ember-uuid/utils/browser-rng\"], function (_exports, _browserRng) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.parse = parse;\n  _exports.unparse = unparse;\n  _exports.v1 = v1;\n  _exports.v4 = v4;\n  //     uuid.js\n  //\n  //     Copyright (c) 2010-2012 Robert Kieffer\n  //     MIT License - http://opensource.org/licenses/mit-license.php\n\n  // Unique ID creation requires a high quality random # generator.  We feature\n  // detect to determine the best RNG source, normalizing to a function that\n  // returns 128-bits of randomness, since that's what's usually required\n  // var _rng = require('./rng');\n\n  // Maps for number <-> hex string conversion\n  var _byteToHex = [];\n  var _hexToByte = {};\n  for (var i = 0; i < 256; i++) {\n    _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n    _hexToByte[_byteToHex[i]] = i;\n  }\n\n  // **`parse()` - Parse a UUID into it's component bytes**\n  function parse(s, buf, offset) {\n    var i = buf && offset || 0,\n      ii = 0;\n    buf = buf || [];\n    s.toLowerCase().replace(/[0-9a-f]{2}/g, function (oct) {\n      if (ii < 16) {\n        // Don't overflow!\n        buf[i + ii++] = _hexToByte[oct];\n      }\n    });\n\n    // Zero out remaining bytes if string was short\n    while (ii < 16) {\n      buf[i + ii++] = 0;\n    }\n    return buf;\n  }\n\n  // **`unparse()` - Convert UUID byte array (ala parse()) into a string**\n  function unparse(buf, offset) {\n    var i = offset || 0,\n      bth = _byteToHex;\n    return bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]];\n  }\n\n  // **`v1()` - Generate time-based UUID**\n  //\n  // Inspired by https://github.com/LiosK/UUID.js\n  // and http://docs.python.org/library/uuid.html\n\n  // random #'s we need to init node and clockseq\n  var _seedBytes = (0, _browserRng.default)();\n\n  // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n  var _nodeId = [_seedBytes[0] | 0x01, _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]];\n\n  // Per 4.2.2, randomize (14 bit) clockseq\n  var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\n  // Previous uuid creation time\n  var _lastMSecs = 0,\n    _lastNSecs = 0;\n\n  // See https://github.com/broofa/node-uuid for API details\n  function v1(options, buf, offset) {\n    var i = buf && offset || 0;\n    var b = buf || [];\n    options = options || {};\n    var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n    // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n    // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n    // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n    // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n    var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n    // Per 4.2.1.2, use count of uuid's generated during the current clock\n    // cycle to simulate higher resolution clock\n    var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n    // Time since last uuid creation (in msecs)\n    var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000;\n\n    // Per 4.2.1.2, Bump clockseq on clock regression\n    if (dt < 0 && options.clockseq === undefined) {\n      clockseq = clockseq + 1 & 0x3fff;\n    }\n\n    // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n    // time interval\n    if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n      nsecs = 0;\n    }\n\n    // Per 4.2.1.2 Throw error if too many uuids are requested\n    if (nsecs >= 10000) {\n      throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n    }\n    _lastMSecs = msecs;\n    _lastNSecs = nsecs;\n    _clockseq = clockseq;\n\n    // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n    msecs += 12219292800000;\n\n    // `time_low`\n    var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n    b[i++] = tl >>> 24 & 0xff;\n    b[i++] = tl >>> 16 & 0xff;\n    b[i++] = tl >>> 8 & 0xff;\n    b[i++] = tl & 0xff;\n\n    // `time_mid`\n    var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n    b[i++] = tmh >>> 8 & 0xff;\n    b[i++] = tmh & 0xff;\n\n    // `time_high_and_version`\n    b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n    b[i++] = tmh >>> 16 & 0xff;\n\n    // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n    b[i++] = clockseq >>> 8 | 0x80;\n\n    // `clock_seq_low`\n    b[i++] = clockseq & 0xff;\n\n    // `node`\n    var node = options.node || _nodeId;\n    for (var n = 0; n < 6; n++) {\n      b[i + n] = node[n];\n    }\n    return buf ? buf : unparse(b);\n  }\n\n  // **`v4()` - Generate random UUID**\n\n  // See https://github.com/broofa/node-uuid for API details\n  function v4(options, buf, offset) {\n    // Deprecated - 'format' argument, as supported in v1.2\n    var i = buf && offset || 0;\n    if (typeof options === 'string') {\n      buf = options === 'binary' ? new Array(16) : null;\n      options = null;\n    }\n    options = options || {};\n    var rnds = options.random || (options.rng || _browserRng.default)();\n\n    // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n    rnds[6] = rnds[6] & 0x0f | 0x40;\n    rnds[8] = rnds[8] & 0x3f | 0x80;\n\n    // Copy bytes to buffer, if provided\n    if (buf) {\n      for (var ii = 0; ii < 16; ii++) {\n        buf[i + ii] = rnds[ii];\n      }\n    }\n    return buf || unparse(rnds);\n  }\n  var _default = _exports.default = {\n    v1: v1,\n    v4: v4,\n    parse: parse,\n    unparse: unparse\n  };\n});","define(\"ember-validators/collection\", [\"exports\", \"@ember/debug\", \"@ember/array\", \"@ember/utils\", \"ember-validators/utils/validation-error\"], function (_exports, _debug, _array, _utils, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateCollection;\n  /**\n   *  @class Collection\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.collection\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateCollection(value, options, model, attribute) {\n    var collection = options.collection;\n    (true && !((0, _utils.isPresent)(collection)) && (0, _debug.assert)(\"[validator:collection] [\".concat(attribute, \"] option 'collection' is required\"), (0, _utils.isPresent)(collection)));\n    if (collection === true && !(0, _array.isArray)(value)) {\n      return (0, _validationError.default)('collection', value, options);\n    }\n    if (collection === false && (0, _array.isArray)(value)) {\n      return (0, _validationError.default)('singular', value, options);\n    }\n    return true;\n  }\n});","define(\"ember-validators/confirmation\", [\"exports\", \"@ember/object\", \"@ember/debug\", \"@ember/utils\", \"ember-validators/utils/validation-error\"], function (_exports, _object, _debug, _utils, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateConfirmation;\n  /**\n   *  @class Confirmation\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {String} options.on The attribute to confirm against\n   * @param {String} options.allowBlank If true, skips validation if the value is empty\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateConfirmation(value, options, model, attribute) {\n    var on = options.on;\n    var allowBlank = options.allowBlank;\n    (true && !((0, _utils.isPresent)(on)) && (0, _debug.assert)(\"[validator:confirmation] [\".concat(attribute, \"] option 'on' is required\"), (0, _utils.isPresent)(on)));\n    if (allowBlank && (0, _utils.isEmpty)(value)) {\n      return true;\n    }\n    if (!(0, _utils.isEqual)(value, (0, _object.get)(model, on))) {\n      return (0, _validationError.default)('confirmation', value, options);\n    }\n    return true;\n  }\n});","define(\"ember-validators/date\", [\"exports\", \"ember-validators/utils/validation-error\"], function (_exports, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateDate;\n  _exports.parseDate = parseDate;\n  /**\n   * @class Date\n   * @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {String|Date} value\n   * @param {Object} options\n   * @param {Boolean} options.allowBlank If true, skips validation if the value is empty\n   * @param {String|Date} options.before The specified date must be before this date\n   * @param {String|Date} options.onOrBefore The specified date must be on or before this date\n   * @param {String|Date} options.after The specified date must be after this date\n   * @param {String|Date} options.onOrAfter The specified date must be on or after this date\n   * @param {String} options.format Input value date format - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n   *  - { dateStyle: 'long' } or { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }\n   *  If you need to obtain precision (just compare years), use { year: 'numeric' }\n   * @param {String} options.errorFormat Error output date format. Defaults to options.format or { dateStyle: 'long' }\n   */\n  function validateDate(value, options) {\n    var _options$locale = options.locale,\n      locale = _options$locale === void 0 ? 'en-us' : _options$locale,\n      format = options.format,\n      allowBlank = options.allowBlank;\n    var before = options.before,\n      onOrBefore = options.onOrBefore,\n      after = options.after,\n      onOrAfter = options.onOrAfter;\n    var errorFormat = options.errorFormat || format || {\n      dateStyle: 'long'\n    };\n    if (allowBlank && value === null || value === undefined || value === '') {\n      return true;\n    }\n    var date;\n    if (!value) {\n      if (format) {\n        date = new Intl.DateTimeFormat(locale, format).format(new Date());\n      }\n      date = new Date();\n    } else if (!isValidDate(new Date(value))) {\n      return (0, _validationError.default)('date', value, options);\n    } else {\n      date = parseAsDate(value, format, locale);\n    }\n    if (before) {\n      var beforeCompare = parseAsDate(before, format, locale);\n      if (!isBefore(date, beforeCompare)) {\n        return (0, _validationError.default)('before', value, Object.assign({}, options, {\n          before: parseDateError(beforeCompare, errorFormat, locale)\n        }));\n      }\n    }\n    if (onOrBefore) {\n      var onOrBeforeCompare = parseAsDate(onOrBefore, format, locale);\n      if (!isSameOrBefore(date, onOrBeforeCompare)) {\n        return (0, _validationError.default)('onOrBefore', value, Object.assign({}, options, {\n          onOrBefore: parseDateError(onOrBeforeCompare, errorFormat, locale)\n        }));\n      }\n    }\n    if (after) {\n      var afterCompare = parseAsDate(after, format, locale);\n      if (!isAfter(date, afterCompare)) {\n        return (0, _validationError.default)('after', value, Object.assign({}, options, {\n          after: parseDateError(afterCompare, errorFormat, locale)\n        }));\n      }\n    }\n    if (onOrAfter) {\n      var onOrAfterCompare = parseAsDate(onOrAfter, format, locale);\n      if (!isSameOrAfter(date, onOrAfterCompare)) {\n        return (0, _validationError.default)('onOrAfter', value, Object.assign({}, options, {\n          onOrAfter: parseDateError(onOrAfterCompare, errorFormat, locale)\n        }));\n      }\n    }\n    return true;\n  }\n\n  /**\n   * This is a forcing function.  If `format` provided, date and comparison date will be in String format.  Otherwise, instances of Date.\n   * I don't think there is a need to force iso8601 strings.\n   * @function parseDate\n   * @param {Date|String} date\n   * @param {Object} format - { dateStyle: 'long' } or { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }\n   * If you need to obtain precision (just compare years), use { year: 'numeric' }.\n   * @param {String} locale\n   * @returns {Date|String}\n   */\n  function parseDate(date, format, locale) {\n    if (format) {\n      // new Date(\"2015\") will give the last day in 2014.  This is problematic\n      var yearOnly = isYearFormat(format);\n      if (!(date instanceof Date)) {\n        // format date into string\n        // we have already checked this a valid date\n        var _d = yearOnly ? new Date(date, 0) : new Date(date);\n        return new Intl.DateTimeFormat(locale, format).format(_d);\n      }\n\n      // format date into string\n      var d = yearOnly ? new Date(date.getFullYear(), 0) : date;\n      return new Intl.DateTimeFormat(locale, format).format(d);\n    } else {\n      // Date constructor accepts a variety of formats including properly represented strings and Date instances.\n      // However, a variety of formats return an \"Invalid Date\" literal including DD/MM/YYYY\n      return new Date(date);\n    }\n  }\n  function parseDateError(date, format, locale) {\n    return parseDate(date, format, locale);\n  }\n  function parseAsDate(date, format, locale) {\n    if (format && isYearFormat(format)) {\n      return new Date(parseDate(date, format, locale), 0);\n    }\n    return new Date(parseDate(date, format, locale));\n  }\n  function isValidDate(d) {\n    return d instanceof Date && !isNaN(d);\n  }\n  function isSame(date, comp) {\n    return date.getTime() === comp.getTime();\n  }\n  function isBefore(date, comp) {\n    return date < comp;\n  }\n  function isAfter(date, comp) {\n    return date > comp;\n  }\n  function isSameOrAfter(date, comp) {\n    return isSame(date, comp) || isAfter(date, comp);\n  }\n  function isSameOrBefore(date, comp) {\n    return isSame(date, comp) || isBefore(date, comp);\n  }\n  function isYearFormat(format) {\n    return Object.keys(format).length === 1 && format.year;\n  }\n});","define(\"ember-validators/ds-error\", [\"exports\", \"ember-validators/utils/validation-error\", \"@ember/object\"], function (_exports, _validationError, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateDsError;\n  _exports.getPathAndKey = getPathAndKey;\n  /**\n   *  @class DS Error\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateDsError(value, options, model, attribute) {\n    var _getPathAndKey = getPathAndKey(attribute),\n      path = _getPathAndKey.path,\n      key = _getPathAndKey.key;\n    var errors = (0, _object.get)(model, path);\n    if (errors && errors.has && errors.has(key)) {\n      var errorsFor = errors.errorsFor(key);\n      return (0, _validationError.default)('ds', null, options, errorsFor.length ? errorsFor[errorsFor.length - 1].message : []);\n    }\n    return true;\n  }\n  function getPathAndKey(attribute) {\n    var path = attribute.split('.');\n    var key = path.pop();\n    path.push('errors');\n    return {\n      path: path.join('.'),\n      key: key\n    };\n  }\n});","define(\"ember-validators/exclusion\", [\"exports\", \"@ember/utils\", \"@ember/debug\", \"ember-validators/utils/validation-error\"], function (_exports, _utils, _debug, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateExclusion;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n   *  @class Exclusion\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.allowBlank If true, skips validation if the value is empty\n   * @param {Array} options.in The list of values this attribute should not be\n   * @param {Array} options.range The range in which the attribute's value should not reside in\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateExclusion(value, options, model, attribute) {\n    var array = options.in;\n    var range = options.range,\n      allowBlank = options.allowBlank;\n    (true && !(!(0, _utils.isEmpty)(Object.keys(options))) && (0, _debug.assert)(\"[validator:exclusion] [\".concat(attribute, \"] no options were passed in\"), !(0, _utils.isEmpty)(Object.keys(options))));\n    if (allowBlank && (0, _utils.isEmpty)(value)) {\n      return true;\n    }\n    if (array && array.indexOf(value) !== -1) {\n      return (0, _validationError.default)('exclusion', value, options);\n    }\n    if (range && range.length === 2) {\n      var _range = _slicedToArray(range, 2),\n        min = _range[0],\n        max = _range[1];\n      var equalType = (0, _utils.typeOf)(value) === (0, _utils.typeOf)(min) && (0, _utils.typeOf)(value) === (0, _utils.typeOf)(max);\n      if (equalType && min <= value && value <= max) {\n        return (0, _validationError.default)('exclusion', value, options);\n      }\n    }\n    return true;\n  }\n});","define(\"ember-validators/format\", [\"exports\", \"@ember/utils\", \"@ember/debug\", \"ember\", \"ember-validators/utils/validation-error\"], function (_exports, _utils, _debug, _ember, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateFormat;\n  _exports.regularExpressions = void 0;\n  var canInvoke = _ember.default.canInvoke;\n\n  /**\n   *  @class Format\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.allowBlank If true, skips validation if the value is empty\n   * @param {String} options.type Can be the one of the following options [`email`, `phone`, `url`]\n   * @param {String} options.inverse If true, pass if the value doesn't match the given regex / type\n   * @param {Regex} options.regex The regular expression to test against\n   * @param {Boolean} options.allowNonTld If true, the predefined regular expression `email` allows non top-level domains\n   * @param {Number} options.minTldLength The min length of the top-level domain on the predefined `email` regular expression\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  var regularExpressions = _exports.regularExpressions = {\n    // eslint-disable-next-line no-useless-escape\n    email: /^[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n    // eslint-disable-next-line no-useless-escape\n    phone: /^([\\+]?1\\s*[-\\/\\.]?\\s*)?(\\((\\d{3})\\)|(\\d{3}))\\s*[-\\/\\.]?\\s*(\\d{3})\\s*[-\\/\\.]?\\s*(\\d{4})\\s*(([xX]|[eE][xX][tT]?[\\.]?|extension)\\s*([#*\\d]+))*$/,\n    // eslint-disable-next-line no-useless-escape\n    url: /(?:([A-Za-z]+):)?(\\/{0,3})[a-zA-Z0-9][a-zA-Z-0-9]*(\\.[\\w-]+)+([\\w.,@?^=%&amp;:\\/~+#-{}]*[\\w@?^=%&amp;\\/~+#-{}])??/\n  };\n  function validateFormat(value, options, model, attribute) {\n    var regex = options.regex,\n      type = options.type,\n      _options$inverse = options.inverse,\n      inverse = _options$inverse === void 0 ? false : _options$inverse,\n      allowBlank = options.allowBlank;\n    (true && !(!(0, _utils.isEmpty)(Object.keys(options))) && (0, _debug.assert)(\"[validator:format] [\".concat(attribute, \"] no options were passed in\"), !(0, _utils.isEmpty)(Object.keys(options))));\n    var regexTest = regex;\n    if (allowBlank && (0, _utils.isEmpty)(value)) {\n      return true;\n    }\n    if (type && !regex && regularExpressions[type]) {\n      regexTest = regularExpressions[type];\n    }\n    if (type === 'email') {\n      if (regexTest === regularExpressions.email) {\n        regexTest = formatEmailRegex(options);\n      }\n      Object.assign({}, options, {\n        regex: regexTest\n      });\n    }\n    if (!canInvoke(value, 'match') || regexTest && (0, _utils.isEmpty)(value.match(regexTest)) !== inverse) {\n      return (0, _validationError.default)(type || 'invalid', value, Object.assign({}, options, {\n        regex: regexTest\n      }));\n    }\n    return true;\n  }\n  function formatEmailRegex(options) {\n    var source = regularExpressions.email.source;\n    var allowNonTld = options.allowNonTld,\n      minTldLength = options.minTldLength;\n    if (!(0, _utils.isNone)(minTldLength) && typeof minTldLength === 'number') {\n      source = source.replace('[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$', \"[a-z0-9]{\".concat(minTldLength, \",}(?:[a-z0-9-]*[a-z0-9])?$\"));\n    }\n    if (allowNonTld) {\n      source = source.replace('@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)', '@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.?)');\n    }\n    return new RegExp(source, 'i');\n  }\n});","define(\"ember-validators/inclusion\", [\"exports\", \"@ember/debug\", \"@ember/utils\", \"ember-validators/utils/validation-error\"], function (_exports, _debug, _utils, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateInclusion;\n  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n  function _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\n  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n  function _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\n  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n  /**\n   *  @class Inclusion\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.allowBlank If true, skips validation if the value is empty\n   * @param {Array} options.in The list of values this attribute could be\n   * @param {Array} options.range The range in which the attribute's value should reside in\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateInclusion(value, options, model, attribute) {\n    var array = options.in;\n    var range = options.range,\n      allowBlank = options.allowBlank;\n    (true && !(!(0, _utils.isEmpty)(Object.keys(options))) && (0, _debug.assert)(\"[validator:inclusion] [\".concat(attribute, \"] no options were passed in\"), !(0, _utils.isEmpty)(Object.keys(options))));\n    if (allowBlank && (0, _utils.isEmpty)(value)) {\n      return true;\n    }\n    if (array && array.indexOf(value) === -1) {\n      return (0, _validationError.default)('inclusion', value, options);\n    }\n    if (range && range.length === 2) {\n      var _range = _slicedToArray(range, 2),\n        min = _range[0],\n        max = _range[1];\n      var equalType = (0, _utils.typeOf)(value) === (0, _utils.typeOf)(min) && (0, _utils.typeOf)(value) === (0, _utils.typeOf)(max);\n      var isInvalidNumber = (0, _utils.typeOf)(value) === 'number' && isNaN(value);\n      if (!equalType || isInvalidNumber || min > value || value > max) {\n        return (0, _validationError.default)('inclusion', value, options);\n      }\n    }\n    return true;\n  }\n});","define(\"ember-validators/index\", [\"exports\", \"@ember/debug\", \"@ember/utils\", \"@embroider/macros/es-compat2\"], function (_exports, _debug, _utils, _esCompat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.validate = validate;\n  function validate(type) {\n    var _validator;\n    var validator;\n    if (type === 'collection') {\n      validator = import_collection();\n    } else if (type === 'confirmation') {\n      validator = import_confirmation();\n    } else if (type === 'date') {\n      validator = import_date();\n    } else if (type === 'ds-error') {\n      validator = import_ds_error();\n    } else if (type === 'exclusion') {\n      validator = import_exclusion();\n    } else if (type === 'format') {\n      validator = import_format();\n    } else if (type === 'inclusion') {\n      validator = import_inclusion();\n    } else if (type === 'length') {\n      validator = import_length();\n    } else if (type === 'messages') {\n      validator = import_messages();\n    } else if (type === 'number') {\n      validator = import_number();\n    } else if (type === 'presence') {\n      validator = import_presence();\n    }\n    (true && !((0, _utils.isPresent)(validator)) && (0, _debug.assert)(\"Validator not found of type: \".concat(type, \".\"), (0, _utils.isPresent)(validator)));\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return (_validator = validator).default.apply(_validator, args);\n  }\n  function import_collection() {\n    return (0, _esCompat.default)(require(\"ember-validators/collection\"));\n  }\n  function import_confirmation() {\n    return (0, _esCompat.default)(require(\"ember-validators/confirmation\"));\n  }\n  function import_date() {\n    return (0, _esCompat.default)(require(\"ember-validators/date\"));\n  }\n  function import_ds_error() {\n    return (0, _esCompat.default)(require(\"ember-validators/ds-error\"));\n  }\n  function import_exclusion() {\n    return (0, _esCompat.default)(require(\"ember-validators/exclusion\"));\n  }\n  function import_format() {\n    return (0, _esCompat.default)(require(\"ember-validators/format\"));\n  }\n  function import_inclusion() {\n    return (0, _esCompat.default)(require(\"ember-validators/inclusion\"));\n  }\n  function import_length() {\n    return (0, _esCompat.default)(require(\"ember-validators/length\"));\n  }\n  function import_messages() {\n    return (0, _esCompat.default)(require(\"ember-validators/messages\"));\n  }\n  function import_number() {\n    return (0, _esCompat.default)(require(\"ember-validators/number\"));\n  }\n  function import_presence() {\n    return (0, _esCompat.default)(require(\"ember-validators/presence\"));\n  }\n});","define(\"ember-validators/length\", [\"exports\", \"@ember/utils\", \"ember-validators/utils/validation-error\"], function (_exports, _utils, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateLength;\n  /**\n   *  @class Length\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.allowNone If true, skips validation if the value is null or undefined. __Default: true__\n   * @param {Boolean} options.allowBlank If true, skips validation if the value is empty\n   * @param {Boolean} options.useBetweenMessage If true, uses the between error message when `max` and `min` are both set\n   * @param {Number} options.is The exact length the value can be\n   * @param {Number} options.min The minimum length the value can be\n   * @param {Number} options.max The maximum length the value can be\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateLength(value, options) {\n    var _options$allowNone = options.allowNone,\n      allowNone = _options$allowNone === void 0 ? true : _options$allowNone,\n      allowBlank = options.allowBlank,\n      useBetweenMessage = options.useBetweenMessage,\n      is = options.is,\n      min = options.min,\n      max = options.max;\n    if ((0, _utils.isNone)(value)) {\n      return allowNone ? true : (0, _validationError.default)('invalid', value, options);\n    }\n    if (allowBlank && (0, _utils.isEmpty)(value)) {\n      return true;\n    }\n    var length = value.length;\n    if (!(0, _utils.isNone)(is) && is !== length) {\n      return (0, _validationError.default)('wrongLength', value, options);\n    }\n    if (useBetweenMessage && !(0, _utils.isNone)(min) && !(0, _utils.isNone)(max) && (length < min || length > max)) {\n      return (0, _validationError.default)('between', value, options);\n    }\n    if (!(0, _utils.isNone)(min) && min > length) {\n      return (0, _validationError.default)('tooShort', value, options);\n    }\n    if (!(0, _utils.isNone)(max) && max < length) {\n      return (0, _validationError.default)('tooLong', value, options);\n    }\n    return true;\n  }\n});","define(\"ember-validators/messages\", [\"exports\", \"@ember/object\", \"@ember/utils\"], function (_exports, _object, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /**\n   *  @class Messages\n   *  @module Validators\n   */\n  var _default = _exports.default = {\n    /**\n     * Regex for matching error message placeholders\n     * @private\n     * @property _regex\n     * @type {RegExp}\n     */\n    _regex: /\\{(\\w+)\\}/g,\n    /**\n     * Default attribute description if one isnt passed into a validator's options\n     * @property defaultDescription\n     * @type {String}\n     */\n    defaultDescription: 'This field',\n    /**\n     * Get a description for a specific attribute. This is a hook\n     * for i18n solutions to retrieve attribute descriptions from a translation\n     * @method getDescriptionFor\n     * @param  {String} attribute\n     * @param  {Object} options\n     * @return {String}\n     */\n    getDescriptionFor: function getDescriptionFor(attribute) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return context.description || this.defaultDescription;\n    },\n    /**\n     * Get a message with a given type\n     * @method getMessageFor\n     * @param  {String} type\n     * @param  {Object} context\n     * @return {String}\n     */\n    getMessageFor: function getMessageFor(type) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return this.formatMessage((0, _object.get)(this, type), context);\n    },\n    /**\n     * Regex replace all placeholders with their given context\n     * @method formatMessage\n     * @param  {String} message\n     * @param  {Object} context\n     * @return {String}\n     */\n    formatMessage: function formatMessage(message) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var m = message;\n      if ((0, _utils.isNone)(m) || typeof m !== 'string') {\n        m = this.invalid;\n      }\n      return m.replace(this._regex, function (s, attr) {\n        return (0, _object.get)(context, attr);\n      });\n    },\n    /**\n     * Default validation error message strings\n     */\n    accepted: '{description} must be accepted',\n    after: '{description} must be after {after}',\n    before: '{description} must be before {before}',\n    blank: \"{description} can't be blank\",\n    collection: '{description} must be a collection',\n    confirmation: \"{description} doesn't match {on}\",\n    date: '{description} must be a valid date',\n    email: '{description} must be a valid email address',\n    empty: \"{description} can't be empty\",\n    equalTo: '{description} must be equal to {is}',\n    even: '{description} must be even',\n    exclusion: '{description} is reserved',\n    greaterThan: '{description} must be greater than {gt}',\n    greaterThanOrEqualTo: '{description} must be greater than or equal to {gte}',\n    inclusion: '{description} is not included in the list',\n    invalid: '{description} is invalid',\n    lessThan: '{description} must be less than {lt}',\n    lessThanOrEqualTo: '{description} must be less than or equal to {lte}',\n    notAnInteger: '{description} must be an integer',\n    notANumber: '{description} must be a number',\n    odd: '{description} must be odd',\n    onOrAfter: '{description} must be on or after {onOrAfter}',\n    onOrBefore: '{description} must be on or before {onOrBefore}',\n    otherThan: '{description} must be other than {value}',\n    phone: '{description} must be a valid phone number',\n    positive: '{description} must be positive',\n    multipleOf: '{description} must be a multiple of {multipleOf}',\n    present: '{description} must be blank',\n    singular: \"{description} can't be a collection\",\n    tooLong: '{description} is too long (maximum is {max} characters)',\n    tooShort: '{description} is too short (minimum is {min} characters)',\n    between: '{description} must be between {min} and {max} characters',\n    url: '{description} must be a valid url',\n    wrongLength: '{description} is the wrong length (should be {is} characters)'\n  };\n});","define(\"ember-validators/number\", [\"exports\", \"@ember/utils\", \"ember-validators/utils/validation-error\"], function (_exports, _utils, _validationError) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateNumber;\n  /**\n   *  @class Number\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.allowBlank If true, skips validation if the value is empty\n   * @param {Boolean} options.allowNone If true, skips validation if the value is null or undefined. __Default: true__\n   * @param {Boolean} options.allowString If true, validator will accept string representation of a number\n   * @param {Boolean} options.integer Number must be an integer\n   * @param {Boolean} options.positive Number must be greater than or equal to 0\n   * @param {Boolean} options.odd Number must be odd\n   * @param {Boolean} options.even Number must be even\n   * @param {Number} options.is Number must be equal to this value\n   * @param {Number} options.lt Number must be less than this value\n   * @param {Number} options.lte Number must be less than or equal to this value\n   * @param {Number} options.gt Number must be greater than this value\n   * @param {Number} options.gte Number must be greater than or equal to this value\n   * @param {Number} options.multipleOf Number must be a multiple of this value\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validateNumber(value, options) {\n    var numValue = Number(value);\n    var optionKeys = Object.keys(options);\n    var allowBlank = options.allowBlank,\n      _options$allowNone = options.allowNone,\n      allowNone = _options$allowNone === void 0 ? true : _options$allowNone,\n      allowString = options.allowString,\n      integer = options.integer;\n    if (allowNone && (0, _utils.isNone)(value)) {\n      return true;\n    }\n    if (allowBlank && (0, _utils.isEmpty)(value)) {\n      return true;\n    }\n    if ((0, _utils.isEmpty)(value)) {\n      return (0, _validationError.default)('notANumber', value, options);\n    }\n    if (typeof value === 'string' && !allowString) {\n      return (0, _validationError.default)('notANumber', value, options);\n    }\n    if (!isNumber(numValue)) {\n      return (0, _validationError.default)('notANumber', value, options);\n    }\n    if (integer && !isInteger(numValue)) {\n      return (0, _validationError.default)('notAnInteger', value, options);\n    }\n    for (var i = 0; i < optionKeys.length; i++) {\n      var type = optionKeys[i];\n      var returnValue = _validateType(type, options, numValue);\n      if (typeof returnValue !== 'boolean') {\n        return returnValue;\n      }\n    }\n    return true;\n  }\n  function _validateType(type, options, value) {\n    var expected = options[type];\n    var actual = value;\n    if (type === 'is' && actual !== expected) {\n      return (0, _validationError.default)('equalTo', value, options);\n    } else if (type === 'lt' && actual >= expected) {\n      return (0, _validationError.default)('lessThan', value, options);\n    } else if (type === 'lte' && actual > expected) {\n      return (0, _validationError.default)('lessThanOrEqualTo', value, options);\n    } else if (type === 'gt' && actual <= expected) {\n      return (0, _validationError.default)('greaterThan', value, options);\n    } else if (type === 'gte' && actual < expected) {\n      return (0, _validationError.default)('greaterThanOrEqualTo', value, options);\n    } else if (type === 'positive' && actual < 0) {\n      return (0, _validationError.default)('positive', value, options);\n    } else if (type === 'odd' && (!isInteger(actual) || actual % 2 === 0)) {\n      return (0, _validationError.default)('odd', value, options);\n    } else if (type === 'even' && (!isInteger(actual) || actual % 2 !== 0)) {\n      return (0, _validationError.default)('even', value, options);\n    } else if (type === 'multipleOf' && !isInteger(actual / expected)) {\n      return (0, _validationError.default)('multipleOf', value, options);\n    }\n    return true;\n  }\n\n  /*\n    Use polyfills instead of Number.isNaN or Number.isInteger to support IE & Safari\n   */\n\n  function isNumber(value) {\n    return typeof value === 'number' && !isNaN(value);\n  }\n  function isInteger(value) {\n    return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n  }\n});","define(\"ember-validators/presence\", [\"exports\", \"@ember/debug\", \"@ember/utils\", \"ember-validators/utils/validation-error\", \"ember-validators/utils/unwrap-proxy\"], function (_exports, _debug, _utils, _validationError, _unwrapProxy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validatePresence;\n  /**\n   *  @class Presence\n   *  @module Validators\n   */\n\n  /**\n   * @method validate\n   * @param {Any} value\n   * @param {Object} options\n   * @param {Boolean} options.presence If true validates that the given value is not empty,\n   *                                   if false, validates that the given value is empty.\n   * @param {Boolean} options.ignoreBlank If true, treats an empty or whitespace string as not present\n   * @param {Object} model\n   * @param {String} attribute\n   */\n  function validatePresence(value, options, model, attribute) {\n    var presence = options.presence,\n      ignoreBlank = options.ignoreBlank;\n    var v = (0, _unwrapProxy.default)(value);\n    var _isPresent = ignoreBlank ? (0, _utils.isPresent)(v) : !(0, _utils.isEmpty)(v);\n    (true && !((0, _utils.isPresent)(presence)) && (0, _debug.assert)(\"[validator:presence] [\".concat(attribute, \"] option 'presence' is required\"), (0, _utils.isPresent)(presence)));\n    if (presence === true && !_isPresent) {\n      return (0, _validationError.default)('blank', value, options);\n    }\n    if (presence === false && _isPresent) {\n      return (0, _validationError.default)('present', value, options);\n    }\n    return true;\n  }\n});","define(\"ember-validators/utils/is-promise\", [\"exports\", \"ember\"], function (_exports, _ember) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isPromise;\n  var canInvoke = _ember.default.canInvoke;\n  function isPromise(p) {\n    return !!(p && canInvoke(p, 'then'));\n  }\n});","define(\"ember-validators/utils/unwrap-proxy\", [\"exports\", \"@ember/array/proxy\", \"@ember/object/proxy\"], function (_exports, _proxy, _proxy2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = unwrapProxy;\n  _exports.isProxy = isProxy;\n  function unwrapProxy(o) {\n    return isProxy(o) ? unwrapProxy(o.content) : o;\n  }\n  function isProxy(o) {\n    return !!(o && (o instanceof _proxy2.default || o instanceof _proxy.default));\n  }\n});","define(\"ember-validators/utils/validation-error\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validationError;\n  function validationError(type, value, context, message) {\n    return {\n      type: type,\n      value: value,\n      context: context,\n      message: message\n    };\n  }\n});","define(\"ember-wormhole/components/ember-wormhole\", [\"exports\", \"@ember/object/computed\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"ember-wormhole/templates/components/ember-wormhole\", \"ember-wormhole/utils/dom\"], function (_exports, _computed, _component, _object, _runloop, _emberWormhole, _dom) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = _component.default.extend({\n    layout: _emberWormhole.default,\n    /*\n     * Attrs\n     */\n    to: (0, _computed.alias)('destinationElementId'),\n    destinationElementId: null,\n    destinationElement: null,\n    _destination: (0, _object.computed)('destinationElement', 'destinationElementId', 'renderInPlace', function () {\n      var renderInPlace = this.get('renderInPlace');\n      if (renderInPlace) {\n        return this._element;\n      }\n      var destinationElement = this.get('destinationElement');\n      if (destinationElement) {\n        return destinationElement;\n      }\n      var destinationElementId = this.get('destinationElementId');\n      if (destinationElementId) {\n        return (0, _dom.findElementById)(this._dom, destinationElementId);\n      }\n      // no element found\n      return null;\n    }),\n    renderInPlace: false,\n    /*\n     * Lifecycle\n     */\n    init: function init() {\n      var _this = this;\n      this._super.apply(this, arguments);\n      this._dom = (0, _dom.getDOM)(this);\n\n      // Create text nodes used for the head, tail\n      this._wormholeHeadNode = this._dom.createTextNode('');\n      this._wormholeTailNode = this._dom.createTextNode('');\n\n      /*\n       * didInsertElement does not fire in Fastboot, so we schedule this in\n       * init to be run after render. Importantly, we want to run\n       * appendToDestination after the child nodes have rendered.\n       */\n      (0, _runloop.schedule)('afterRender', function () {\n        if (_this.isDestroyed) {\n          return;\n        }\n        _this._element = _this._wormholeHeadNode.parentNode;\n        if (!_this._element) {\n          throw new Error('The head node of a wormhole must be attached to the DOM');\n        }\n        _this._appendToDestination();\n      });\n    },\n    willDestroyElement: function willDestroyElement() {\n      var _this2 = this;\n      // not called in fastboot\n      this._super.apply(this, arguments);\n      var _wormholeHeadNode = this._wormholeHeadNode,\n        _wormholeTailNode = this._wormholeTailNode;\n      (0, _runloop.schedule)('render', function () {\n        _this2._removeRange(_wormholeHeadNode, _wormholeTailNode);\n      });\n    },\n    _destinationDidChange: (0, _object.observer)('_destination', function () {\n      var destinationElement = this.get('_destination');\n      if (destinationElement !== this._wormholeHeadNode.parentNode) {\n        (0, _runloop.schedule)('render', this, '_appendToDestination');\n      }\n    }),\n    _appendToDestination: function _appendToDestination() {\n      var destinationElement = this.get('_destination');\n      if (!destinationElement) {\n        var destinationElementId = this.get('destinationElementId');\n        if (destinationElementId) {\n          throw new Error(\"ember-wormhole failed to render into '#\".concat(destinationElementId, \"' because the element is not in the DOM\"));\n        }\n        throw new Error('ember-wormhole failed to render content because the destinationElementId was set to an undefined or falsy value.');\n      }\n      var startingActiveElement = (0, _dom.getActiveElement)();\n      this._appendRange(destinationElement, this._wormholeHeadNode, this._wormholeTailNode);\n      var resultingActiveElement = (0, _dom.getActiveElement)();\n      if (startingActiveElement && resultingActiveElement !== startingActiveElement) {\n        startingActiveElement.focus();\n      }\n    },\n    _appendRange: function _appendRange(destinationElement, firstNode, lastNode) {\n      while (firstNode) {\n        destinationElement.insertBefore(firstNode, null);\n        firstNode = firstNode !== lastNode ? lastNode.parentNode.firstChild : null;\n      }\n    },\n    _removeRange: function _removeRange(firstNode, lastNode) {\n      var node = lastNode;\n      do {\n        var next = node.previousSibling;\n        if (node.parentNode) {\n          node.parentNode.removeChild(node);\n          if (node === firstNode) {\n            break;\n          }\n        }\n        node = next;\n      } while (node);\n    }\n  });\n});","define(\"ember-wormhole/templates/components/ember-wormhole\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)({\n    \"id\": \"AZTawDXE\",\n    \"block\": \"[[[1,[28,[35,0],[[30,0,[\\\"_wormholeHeadNode\\\"]]],null]],[18,1,null],[1,[28,[35,0],[[30,0,[\\\"_wormholeTailNode\\\"]]],null]]],[\\\"&default\\\"],false,[\\\"unbound\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"ember-wormhole/templates/components/ember-wormhole.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"ember-wormhole/utils/dom\", [\"exports\", \"@ember/application\"], function (_exports, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.findElementById = findElementById;\n  _exports.getActiveElement = getActiveElement;\n  _exports.getDOM = getDOM;\n  /*\n   * Implement some helpers methods for interacting with the DOM,\n   * be it Fastboot's SimpleDOM or the browser's version.\n   */\n\n  function getActiveElement() {\n    if (typeof document === 'undefined') {\n      return null;\n    } else {\n      return document.activeElement;\n    }\n  }\n  function childNodesOfElement(element) {\n    var children = [];\n    var child = element.firstChild;\n    while (child) {\n      children.push(child);\n      child = child.nextSibling;\n    }\n    return children;\n  }\n  function findElementById(doc, id) {\n    if (doc.getElementById) {\n      return doc.getElementById(id);\n    }\n    var nodes = childNodesOfElement(doc);\n    var node;\n    while (nodes.length) {\n      node = nodes.shift();\n      if (node.getAttribute && node.getAttribute('id') === id) {\n        return node;\n      }\n      nodes = childNodesOfElement(node).concat(nodes);\n    }\n  }\n\n  // Private Ember API usage. Get the dom implementation used by the current\n  // renderer, be it native browser DOM or Fastboot SimpleDOM\n  function getDOM(context) {\n    var renderer = context.renderer;\n    if (!renderer._dom) {\n      // pre glimmer2\n      var container = _application.getOwner ? (0, _application.getOwner)(context) : context.container;\n      var documentService = container.lookup('service:-document');\n      if (documentService) {\n        return documentService;\n      }\n      renderer = container.lookup('renderer:-dom');\n    }\n    if (renderer._dom && renderer._dom.document) {\n      // pre Ember 2.6\n      return renderer._dom.document;\n    } else {\n      throw new Error('ember-wormhole could not get DOM');\n    }\n  }\n});","define(\"tracked-maps-and-sets/-private/map\", [\"exports\", \"tracked-maps-and-sets/-private/util\"], function (_exports, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TrackedWeakMap = _exports.TrackedMap = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\n  function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  var TrackedMap = _exports.TrackedMap = /*#__PURE__*/function (_Map) {\n    function TrackedMap() {\n      _classCallCheck(this, TrackedMap);\n      return _callSuper(this, TrackedMap, arguments);\n    }\n    _inherits(TrackedMap, _Map);\n    return _createClass(TrackedMap, [{\n      key: \"get\",\n      value:\n      // **** KEY GETTERS ****\n      function get(key) {\n        (0, _util.consumeKey)(this, key);\n        return _superPropGet(TrackedMap, \"get\", this, 3)([key]);\n      }\n    }, {\n      key: \"has\",\n      value: function has(key) {\n        (0, _util.consumeKey)(this, key);\n        return _superPropGet(TrackedMap, \"has\", this, 3)([key]);\n      }\n      // **** ALL GETTERS ****\n    }, {\n      key: \"entries\",\n      value: function entries() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedMap, \"entries\", this, 3)([]);\n      }\n    }, {\n      key: \"keys\",\n      value: function keys() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedMap, \"keys\", this, 3)([]);\n      }\n    }, {\n      key: \"values\",\n      value: function values() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedMap, \"values\", this, 3)([]);\n      }\n    }, {\n      key: \"forEach\",\n      value: function forEach(fn) {\n        (0, _util.consumeCollection)(this);\n        _superPropGet(TrackedMap, \"forEach\", this, 3)([fn]);\n      }\n    }, {\n      key: \"size\",\n      get: function get() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedMap, \"size\", this, 1);\n      }\n      // **** KEY SETTERS ****\n    }, {\n      key: \"set\",\n      value: function set(key, value) {\n        (0, _util.dirtyKey)(this, key);\n        (0, _util.dirtyCollection)(this);\n        return _superPropGet(TrackedMap, \"set\", this, 3)([key, value]);\n      }\n    }, {\n      key: \"delete\",\n      value: function _delete(key) {\n        (0, _util.dirtyKey)(this, key);\n        (0, _util.dirtyCollection)(this);\n        return _superPropGet(TrackedMap, \"delete\", this, 3)([key]);\n      }\n      // **** ALL SETTERS ****\n    }, {\n      key: \"clear\",\n      value: function clear() {\n        var _this = this;\n        _superPropGet(TrackedMap, \"forEach\", this, 3)([function (_v, k) {\n          return (0, _util.dirtyKey)(_this, k);\n        }]);\n        (0, _util.dirtyCollection)(this);\n        return _superPropGet(TrackedMap, \"clear\", this, 3)([]);\n      }\n    }]);\n  }(/*#__PURE__*/_wrapNativeSuper(Map));\n  if ((typeof Symbol === \"undefined\" ? \"undefined\" : _typeof(Symbol)) !== undefined) {\n    var originalIterator = TrackedMap.prototype[Symbol.iterator];\n    Object.defineProperty(TrackedMap.prototype, Symbol.iterator, {\n      get: function get() {\n        (0, _util.consumeCollection)(this);\n        return originalIterator;\n      }\n    });\n  }\n  var TrackedWeakMap = _exports.TrackedWeakMap = /*#__PURE__*/function (_WeakMap) {\n    function TrackedWeakMap() {\n      _classCallCheck(this, TrackedWeakMap);\n      return _callSuper(this, TrackedWeakMap, arguments);\n    }\n    _inherits(TrackedWeakMap, _WeakMap);\n    return _createClass(TrackedWeakMap, [{\n      key: \"get\",\n      value: function get(key) {\n        (0, _util.consumeKey)(this, key);\n        return _superPropGet(TrackedWeakMap, \"get\", this, 3)([key]);\n      }\n    }, {\n      key: \"has\",\n      value: function has(key) {\n        (0, _util.consumeKey)(this, key);\n        return _superPropGet(TrackedWeakMap, \"has\", this, 3)([key]);\n      }\n    }, {\n      key: \"set\",\n      value: function set(key, value) {\n        (0, _util.dirtyKey)(this, key);\n        return _superPropGet(TrackedWeakMap, \"set\", this, 3)([key, value]);\n      }\n    }, {\n      key: \"delete\",\n      value: function _delete(key) {\n        (0, _util.dirtyKey)(this, key);\n        return _superPropGet(TrackedWeakMap, \"delete\", this, 3)([key]);\n      }\n    }]);\n  }(/*#__PURE__*/_wrapNativeSuper(WeakMap));\n});","define(\"tracked-maps-and-sets/-private/set\", [\"exports\", \"tracked-maps-and-sets/-private/util\"], function (_exports, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.TrackedWeakSet = _exports.TrackedSet = void 0;\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\n  function _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\n  function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\n  function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n  function _get() { return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); }\n  function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; }\n  function _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\n  function _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\n  function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\n  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n  function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\n  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n  var TrackedSet = _exports.TrackedSet = /*#__PURE__*/function (_Set) {\n    function TrackedSet() {\n      _classCallCheck(this, TrackedSet);\n      return _callSuper(this, TrackedSet, arguments);\n    }\n    _inherits(TrackedSet, _Set);\n    return _createClass(TrackedSet, [{\n      key: \"has\",\n      value:\n      // **** KEY GETTERS ****\n      function has(value) {\n        (0, _util.consumeKey)(this, value);\n        return _superPropGet(TrackedSet, \"has\", this, 3)([value]);\n      }\n      // **** ALL GETTERS ****\n    }, {\n      key: \"entries\",\n      value: function entries() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedSet, \"entries\", this, 3)([]);\n      }\n    }, {\n      key: \"keys\",\n      value: function keys() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedSet, \"keys\", this, 3)([]);\n      }\n    }, {\n      key: \"values\",\n      value: function values() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedSet, \"values\", this, 3)([]);\n      }\n    }, {\n      key: \"forEach\",\n      value: function forEach(fn) {\n        (0, _util.consumeCollection)(this);\n        _superPropGet(TrackedSet, \"forEach\", this, 3)([fn]);\n      }\n    }, {\n      key: \"size\",\n      get: function get() {\n        (0, _util.consumeCollection)(this);\n        return _superPropGet(TrackedSet, \"size\", this, 1);\n      }\n      // **** KEY SETTERS ****\n    }, {\n      key: \"add\",\n      value: function add(value) {\n        (0, _util.dirtyKey)(this, value);\n        (0, _util.dirtyCollection)(this);\n        return _superPropGet(TrackedSet, \"add\", this, 3)([value]);\n      }\n    }, {\n      key: \"delete\",\n      value: function _delete(value) {\n        (0, _util.dirtyKey)(this, value);\n        (0, _util.dirtyCollection)(this);\n        return _superPropGet(TrackedSet, \"delete\", this, 3)([value]);\n      }\n      // **** ALL SETTERS ****\n    }, {\n      key: \"clear\",\n      value: function clear() {\n        var _this = this;\n        _superPropGet(TrackedSet, \"forEach\", this, 3)([function (_v, k) {\n          return (0, _util.dirtyKey)(_this, k);\n        }]);\n        (0, _util.dirtyCollection)(this);\n        return _superPropGet(TrackedSet, \"clear\", this, 3)([]);\n      }\n    }]);\n  }(/*#__PURE__*/_wrapNativeSuper(Set));\n  if ((typeof Symbol === \"undefined\" ? \"undefined\" : _typeof(Symbol)) !== undefined) {\n    var originalIterator = TrackedSet.prototype[Symbol.iterator];\n    Object.defineProperty(TrackedSet.prototype, Symbol.iterator, {\n      get: function get() {\n        (0, _util.consumeCollection)(this);\n        return originalIterator;\n      }\n    });\n  }\n  var TrackedWeakSet = _exports.TrackedWeakSet = /*#__PURE__*/function (_WeakSet) {\n    function TrackedWeakSet() {\n      _classCallCheck(this, TrackedWeakSet);\n      return _callSuper(this, TrackedWeakSet, arguments);\n    }\n    _inherits(TrackedWeakSet, _WeakSet);\n    return _createClass(TrackedWeakSet, [{\n      key: \"has\",\n      value: function has(value) {\n        (0, _util.consumeKey)(this, value);\n        return _superPropGet(TrackedWeakSet, \"has\", this, 3)([value]);\n      }\n    }, {\n      key: \"add\",\n      value: function add(value) {\n        (0, _util.dirtyKey)(this, value);\n        return _superPropGet(TrackedWeakSet, \"add\", this, 3)([value]);\n      }\n    }, {\n      key: \"delete\",\n      value: function _delete(value) {\n        (0, _util.dirtyKey)(this, value);\n        return _superPropGet(TrackedWeakSet, \"delete\", this, 3)([value]);\n      }\n    }]);\n  }(/*#__PURE__*/_wrapNativeSuper(WeakSet));\n});","define(\"tracked-maps-and-sets/-private/util\", [\"exports\", \"@glimmer/tracking\"], function (_exports, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.consumeCollection = void 0;\n  _exports.consumeKey = consumeKey;\n  _exports.consumeTag = void 0;\n  _exports.createTag = createTag;\n  _exports.dirtyCollection = void 0;\n  _exports.dirtyKey = dirtyKey;\n  _exports.dirtyTag = void 0;\n  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\n  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\n  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {\n    var c = arguments.length,\n      r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n      d;\n    if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n  };\n  var Tag = /*#__PURE__*/function () {\n    function Tag() {\n      _classCallCheck(this, Tag);\n    }\n    return _createClass(Tag, null, [{\n      key: \"consumeTag\",\n      value: function consumeTag(tag) {\n        // read the tag value\n        tag.__tag_value__;\n      }\n    }, {\n      key: \"dirtyTag\",\n      value: function dirtyTag(tag) {\n        // write the tag value\n        tag.__tag_value__ = undefined;\n      }\n    }]);\n  }();\n  __decorate([_tracking.tracked], Tag.prototype, \"__tag_value__\", void 0);\n  function createTag() {\n    return new Tag();\n  }\n  var consumeTag = _exports.consumeTag = Tag.consumeTag;\n  var dirtyTag = _exports.dirtyTag = Tag.dirtyTag;\n  ////////////\n  var COLLECTION_SYMBOL = {};\n  var consumeCollection = _exports.consumeCollection = function consumeCollection(obj) {\n    consumeKey(obj, COLLECTION_SYMBOL);\n  };\n  var dirtyCollection = _exports.dirtyCollection = function dirtyCollection(obj) {\n    dirtyKey(obj, COLLECTION_SYMBOL);\n  };\n  if (Ember !== undefined) {\n    // eslint-disable-next-line ember/new-module-imports\n    _exports.consumeCollection = consumeCollection = function consumeCollection(obj) {\n      return Ember.get(obj, '[]');\n    };\n    // eslint-disable-next-line ember/new-module-imports\n    _exports.dirtyCollection = dirtyCollection = function dirtyCollection(obj) {\n      return Ember.notifyPropertyChange(obj, '[]');\n    };\n  }\n  ////////////\n  var OBJECT_TAGS = new WeakMap();\n  function getOrCreateTag(obj, key) {\n    var tags = OBJECT_TAGS.get(obj);\n    if (tags === undefined) {\n      tags = new Map();\n      OBJECT_TAGS.set(obj, tags);\n    }\n    var tag = tags.get(key);\n    if (tag === undefined) {\n      tag = new Tag();\n      tags.set(key, tag);\n    }\n    return tag;\n  }\n  function consumeKey(obj, key) {\n    consumeTag(getOrCreateTag(obj, key));\n  }\n  function dirtyKey(obj, key) {\n    dirtyTag(getOrCreateTag(obj, key));\n  }\n});","define(\"tracked-maps-and-sets/index\", [\"exports\", \"tracked-maps-and-sets/-private/map\", \"tracked-maps-and-sets/-private/set\"], function (_exports, _map, _set) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"TrackedMap\", {\n    enumerable: true,\n    get: function get() {\n      return _map.TrackedMap;\n    }\n  });\n  Object.defineProperty(_exports, \"TrackedSet\", {\n    enumerable: true,\n    get: function get() {\n      return _set.TrackedSet;\n    }\n  });\n  Object.defineProperty(_exports, \"TrackedWeakMap\", {\n    enumerable: true,\n    get: function get() {\n      return _map.TrackedWeakMap;\n    }\n  });\n  Object.defineProperty(_exports, \"TrackedWeakSet\", {\n    enumerable: true,\n    get: function get() {\n      return _set.TrackedWeakSet;\n    }\n  });\n});","\n"],"names":["extend","dest","i","src","j","len","arguments","length","create","Object","proto","F","prototype","bind","fn","obj","args","slice","Array","apply","call","concat","lastId","stamp","_leaflet_id","throttle","time","context","lock","later","wrapperFn","setTimeout","wrapNum","x","range","includeMax","max","min","d","falseFn","formatNum","num","precision","pow","Math","undefined","round","trim","str","replace","splitWords","split","setOptions","options","hasOwnProperty","getParamString","existingUrl","uppercase","params","push","encodeURIComponent","toUpperCase","indexOf","join","templateRe","template","data","key","value","Error","isArray","toString","array","el","emptyImageUrl","getPrefixed","name","window","lastTime","timeoutDefer","Date","timeToCall","requestFn","requestAnimationFrame","cancelFn","cancelAnimationFrame","id","clearTimeout","requestAnimFrame","immediate","cancelAnimFrame","Class","props","NewClass","Util.setOptions","this","initialize","callInitHooks","parentProto","__super__","Util.create","constructor","statics","Util.extend","includes","checkDeprecatedMixinEvents","L","Mixin","Util.isArray","Events","console","warn","stack","_initHooks","_initHooksCalled","include","parentOptions","mergeOptions","addInitHook","init","on","types","type","_on","Util.splitWords","off","_off","removeAll","_events","_once","_listens","newListener","ctx","once","listeners","_firingCount","Util.falseFn","index","listener","splice","fire","propagate","listens","event","target","sourceTarget","l","_propagateEvent","_fn","_eventParents","addEventParent","Util.stamp","removeEventParent","e","layer","propagatedFrom","Evented","addEventListener","removeEventListener","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Point","y","trunc","v","floor","ceil","toPoint","Bounds","a","b","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","isNaN","toLatLng","c","lon","clone","add","point","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","sqrt","equals","contains","abs","min2","max2","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","bounds","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","isValid","pad","bufferRatio","heightBuffer","widthBuffer","sw2","ne2","sw","_southWest","ne","_northEast","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","CRS","latLngToPoint","latlng","zoom","projectedPoint","projection","project","scale","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","log","LN2","getProjectedBounds","infinite","s","transform","Util.formatNum","other","Earth","distance","wrap","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","cos","PI","wrapLng","Util.wrapNum","wrapLat","wrapLatLngBounds","center","newCenter","latShift","lngShift","R","latlng1","latlng2","rad","lat1","lat2","sinDLat","sin","sinDLon","atan2","earthRadius","SphericalMercator","MAX_LATITUDE","atan","exp","Transformation","_a","_b","_c","_d","toTransformation","EPSG3857","code","EPSG900913","svgCreate","document","createElementNS","pointsToPath","rings","closed","len2","p","Browser","svg","style","documentElement","ie","ielt9","edge","navigator","webkit","userAgentContains","android","android23","webkitVer","parseInt","exec","userAgent","androidStock","opera","chrome","gecko","safari","phantom","opera12","win","platform","ie3d","webkit3d","WebKitCSSMatrix","gecko3d","any3d","L_DISABLE_3D","mobile","orientation","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","pointer","touchNative","TouchEvent","touch","L_NO_TOUCH","mobileOpera","mobileGecko","retina","devicePixelRatio","screen","deviceXDPI","logicalXDPI","passiveEvents","supportsPassiveOption","opts","defineProperty","get","canvas","createElement","getContext","createSVGRect","inlineSvg","div","innerHTML","firstChild","namespaceURI","toLowerCase","vml","shape","behavior","adj","mac","linux","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","pEvent","touchstart","touchmove","touchend","touchcancel","handle","handler","MSPOINTER_TYPE_TOUCH","pointerType","DomEvent.preventDefault","_handlePointer","_pointers","_pointerDocListener","addPointerListener","_globalPointerDown","_globalPointerMove","_globalPointerUp","pointerId","MSPOINTER_TYPE_MOUSE","touches","changedTouches","delay","addDoubleTapListener","detail","last","simDblclick","now","sourceCapabilities","firesTouchEvents","path","DomEvent.getPropagationPath","some","HTMLLabelElement","attributes","for","HTMLInputElement","HTMLSelectElement","prop","newEvent","isTrusted","_simulated","dblclick","_userSelect","userSelectProperty","disableTextSelection","enableTextSelection","_outlineElement","_outlineStyle","TRANSFORM","testProp","TRANSITION","TRANSITION_END","getElementById","getStyle","currentStyle","defaultView","css","getComputedStyle","tagName","className","container","appendChild","remove","parent","parentNode","removeChild","empty","toFront","lastChild","toBack","insertBefore","hasClass","classList","getClass","RegExp","test","addClass","classes","setClass","removeClass","Util.trim","baseVal","correspondingElement","setOpacity","opacity","_setOpacityIE","filter","filterName","filters","item","Enabled","Opacity","setTransform","offset","pos","setPosition","_leaflet_pos","left","top","getPosition","disableImageDrag","DomEvent.on","enableImageDrag","DomEvent.off","preventOutline","element","tabIndex","restoreOutline","outlineStyle","getSizedParentNode","offsetWidth","offsetHeight","body","getScale","rect","getBoundingClientRect","width","height","boundingClientRect","addOne","eventsKey","batchRemove","removeOne","Util.indexOf","filterFn","mouseSubst","mouseenter","mouseleave","wheel","originalHandler","passive","isExternalTarget","attachEvent","handlers","detachEvent","stopPropagation","originalEvent","_stopped","cancelBubble","disableScrollPropagation","disableClickPropagation","preventDefault","returnValue","stop","getPropagationPath","ev","composedPath","getMousePosition","clientX","clientLeft","clientY","clientTop","wheelPxFactor","getWheelDelta","wheelDeltaY","deltaY","deltaMode","deltaX","deltaZ","wheelDelta","related","relatedTarget","err","PosAnimation","run","newPos","duration","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","DomUtil.getPosition","_offset","_startTime","_animate","_step","_complete","_animId","Util.requestAnimFrame","elapsed","_runFrame","_easeOut","progress","DomUtil.setPosition","Util.cancelAnimFrame","t","Map","crs","minZoom","maxZoom","layers","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","Util.bind","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","reset","_zoomAnimated","DomUtil.TRANSITION","_createAnimProxy","_proxy","DomUtil.TRANSITION_END","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","animate","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","noMoveStart","setZoom","zoomIn","delta","zoomOut","setZoomAround","getZoomScale","viewHalf","centerOffset","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","padding","paddingBR","paddingBottomRight","getBoundsZoom","Infinity","paddingOffset","swPoint","nePoint","fitBounds","fitWorld","panTo","panBy","_panAnim","step","_onPanTransitionStep","end","_onPanTransitionEnd","DomUtil.addClass","_mapPane","_getMapPanePos","_rawPanBy","getZoom","flyTo","targetCenter","targetZoom","from","to","size","startZoom","w0","w1","u1","rho","rho2","r","sq","sinh","n","cosh","r0","u","start","S","_moveStart","frame","_flyToFrame","_move","getScaleZoom","_moveEnd","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","paddedBounds","paddedSize","invalidateSize","oldSize","newSize","_lastCenter","oldCenter","debounceMoveend","locate","onResponse","onError","_locateOptions","timeout","watch","_handleGeolocationResponse","_handleGeolocationError","_locationWatchId","geolocation","watchPosition","getCurrentPosition","message","stopLocate","clearWatch","error","_container","coords","latitude","longitude","accuracy","timestamp","addHandler","HandlerClass","enable","_containerId","DomUtil.remove","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","DomUtil.create","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","inside","nw","se","boundsSize","snap","scalex","scaley","_size","clientWidth","clientHeight","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","DomEvent.getMousePosition","mouseEventToLayerPoint","mouseEventToLatLng","DomUtil.get","_onScroll","position","_fadeAnimated","DomUtil.getStyle","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","supressEvent","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","onOff","_handleDOMEvent","_onMoveEnd","scrollTop","scrollLeft","_findEventTargets","targets","isHover","srcElement","dragging","_draggableMoved","DomEvent.isExternalTarget","_isClickDisabled","DomUtil.preventOutline","_fireDOMEvent","_mouseEvents","canvasTargets","synth","filtered","isMarker","getLatLng","_radius","containerPoint","bubblingMouseEvents","enabled","moved","boxZoom","disable","whenReady","callback","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","right","DomUtil.removeClass","proxy","mapPane","DomUtil.TRANSFORM","DomUtil.setTransform","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","z","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","_tempFireZoomEvent","control","Control","map","_map","removeControl","addControl","addTo","onAdd","corner","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","Layers","corners","_controlContainer","createCorner","vSide","hSide","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_preventClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_section","acceptableHeight","offsetTop","collapse","section","setAttribute","DomEvent.disableClickPropagation","DomEvent.disableScrollPropagation","link","_expandSafely","_layersLink","href","title","keydown","keyCode","click","_baseLayersList","_separator","_overlaysList","overlay","sort","setZIndex","DomUtil.empty","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","display","_createRadioElement","checked","radioHtml","radioFragment","input","label","hasLayer","defaultChecked","layerId","_onInputClick","holder","inputs","addedLayers","removedLayers","addLayer","disabled","that","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","shiftKey","html","DomEvent.stop","Scale","zoomControl","maxWidth","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","_updateScale","maxMiles","feet","maxFeet","miles","text","ratio","pow10","Attribution","prefix","ukrainianFlag","_attributions","attributionControl","getAttribution","addAttribution","_addAttribution","removeAttribution","setPrefix","attribs","prefixAndAttribs","Handler","attribution","_enabled","addHooks","removeHooks","START","Draggable","clickTolerance","dragStartTarget","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","sizedParent","mouseevent","DomUtil.hasClass","which","button","DomUtil.disableImageDrag","DomUtil.disableTextSelection","_moving","first","DomUtil.getSizedParentNode","_startPoint","_parentScale","DomUtil.getScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_lastEvent","_updatePosition","noInertia","DomUtil.enableImageDrag","DomUtil.enableTextSelection","fireDragend","clipPolygon","clippedPoints","k","edges","_code","LineUtil._getBitCode","LineUtil._getEdgeIntersection","polygonCenter","p1","p2","f","area","LineUtil.isFlat","centroidLatLng","centroid","latlngCenter","latSum","lngSum","_lastCode","simplify","tolerance","_simplifyDP","sqTolerance","reducedPoints","prev","dx","dy","markers","Uint8Array","_simplifyDPStep","sqDist","maxSqDist","_sqClosestPointOnSegment","newPoints","pointToSegmentDistance","clipSegment","useLastCode","codeOut","newCode","codeA","_getBitCode","codeB","_getEdgeIntersection","dot","isFlat","_flat","polylineCenter","halfDist","dist","segDist","LonLat","Mercator","R_MINOR","tmp","con","ts","tan","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","events","getEvents","LayerGroup","beforeAdd","eachLayer","method","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","getLayerId","clearLayers","invoke","methodName","getLayer","getLayers","zIndex","FeatureGroup","setStyle","bringToFront","bringToBack","Icon","popupAnchor","tooltipAnchor","crossOrigin","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","img","_createImg","_setIconStyles","sizeOption","anchor","shadowAnchor","iconAnchor","marginLeft","marginTop","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","_stripUrl","strip","re","idx","match","querySelector","substring","MarkerDrag","marker","_marker","icon","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","origin","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","shadow","_shadow","_latlng","oldLatLng","Marker","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","autoPanOnFocus","draggable","latLng","_initIcon","update","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","getIcon","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","newShadow","mouseover","_bringToFront","mouseout","_resetZIndex","_panOnFocus","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","opt","DomUtil.setOpacity","iconOpts","_getPopupAnchor","_getTooltipAnchor","Path","stroke","color","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_updateBounds","_bringToBack","_path","_project","_clickTolerance","CircleMarker","radius","setRadius","getRadius","_point","r2","_radiusY","w","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","Circle","legacyOptions","_mRadius","half","lngR","latR","bottom","acos","Polyline","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","minDistance","minPoint","closest","LineUtil._sqClosestPointOnSegment","jLen","_parts","LineUtil.polylineCenter","_defaultShape","addLatLng","_convertLatLngs","result","flat","_rings","_projectLatlngs","_rawPxBounds","projectedBounds","ring","_clipPoints","segment","parts","LineUtil.clipSegment","_simplifyPoints","LineUtil.simplify","_updatePoly","part","LineUtil.pointToSegmentDistance","LineUtil._flat","Polygon","PolyUtil.polygonCenter","pop","clipped","PolyUtil.clipPolygon","GeoJSON","geojson","addData","feature","features","geometries","geometry","coordinates","geometryToLayer","asFeature","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","geoLayer","properties","featureLayer","pointToLayerFn","markersInheritOptions","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","toGeoJSON","geoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","json","geoJson","ImageOverlay","errorOverlayUrl","url","_url","_image","_initImage","styleOpts","DomUtil.toFront","DomUtil.toBack","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","onload","onerror","_overlayOnError","image","errorUrl","VideoOverlay","autoplay","loop","keepAspectRatio","muted","playsInline","vid","onloadeddata","sourceElements","getElementsByTagName","sources","source","SVGOverlay","DivOverlay","content","_source","_content","openOn","close","toggle","_prepareOpen","_removeTimeout","getContent","setContent","visibility","_updateContent","_updateLayout","isOpen","node","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","Popup","_initOverlay","OverlayClass","old","minWidth","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","popup","DomEvent.stopPropagation","closeOnClick","closePopupOnClick","preclick","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","whiteSpace","scrolledClass","containerHeight","containerPos","_autopanning","marginBottom","containerWidth","layerPos","Tooltip","openPopup","_popupHandlersAdded","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","direction","permanent","sticky","tooltip","_setPosition","subX","tooltipPoint","tooltipWidth","tooltipHeight","subY","DivIcon","openTooltip","closeTooltip","bindTooltip","_tooltip","isTooltipOpen","unbindTooltip","_initTooltipInteractions","_tooltipHandlersAdded","_moveTooltip","_openTooltip","_addFocusListeners","mousemove","_setAriaDescribedByOnLayer","toggleTooltip","setTooltipContent","getTooltip","_addFocusListenersOnLayer","moving","_openOnceFlag","bgPos","Element","backgroundPosition","Default","GridLayer","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","tileZoom","_clampZoom","_updateLevels","viewprereset","_invalidateAll","Util.throttle","createTile","getTileSize","compare","children","edgeZIndex","isFinite","nextFrame","willPrune","fade","tile","current","loaded","active","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","Number","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","x2","y2","z2","coords2","_tileCoordsToKey","animating","_setView","noPrune","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","translate","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","halfSize","tileRange","tileCenter","queue","margin","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","TileLayer","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","referrerPolicy","_onTileRemove","noRedraw","done","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","Util.template","getAttribute","tilePoint","complete","Util.emptyImageUrl","tileLayer","TileLayerWMS","defaultWmsParams","service","request","styles","format","transparent","version","wmsParams","realRetina","_crs","_wmsVersion","parseFloat","projectionKey","bbox","setParams","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","currentCenterPoint","_center","topLeftOffset","Canvas","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","m","_updateDashArray","order","_order","_drawLast","next","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","_dashArray","_clear","clearRect","save","restore","beginPath","clip","_drawing","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","clickedLayer","_fireEvent","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","candidateHoveredLayer","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","SVG","_rootGroup","_svgSize","removeAttribute","_getPaneRenderer","_createRenderer","preferCanvas","Rectangle","_boundsToLatLngs","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","_onKeyDown","_box","_finish","boxZoomBounds","DoubleClickZoom","doubleClickZoom","_onDoubleClick","Drag","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","shift","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","threshold","limit","worldWidth","halfWidth","newX1","newX2","newX","ease","limitedSpeed","decelerationDuration","speedVector","limitedSpeedVector","Keyboard","keyboardPanDelta","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","mousedown","_addHooks","_removeHooks","docEl","_focused","scrollTo","panDelta","keys","_panKeys","codes","_zoomKeys","altKey","ctrlKey","metaKey","newLatLng","ScrollWheelZoom","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","_onWheelScroll","_delta","DomEvent.getWheelDelta","debounce","_lastMousePos","_timer","_performZoom","d2","d3","d4","TapHold","tapHold","tapTolerance","_holdTimeout","_cancel","_isTapValid","_cancelClickPrevent","_simulateEvent","cancelClickPrevent","simulatedEvent","MouseEvent","bubbles","cancelable","view","dispatchEvent","TouchZoom","touchZoom","bounceAtZoomLimits","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","_animRequest","moveFn","video","factory","module","exports","hookCallback","some","hooks","apply","arguments","setHookCallback","callback","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","arrLen","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","t","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","argLen","slice","join","Error","stack","keys","deprecations","deprecateSimple","name","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","n","x","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","c","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","moment","processRelativeTime","monthsParseExact","weekdaysParseExact","require$$0","global","monthsShortDot","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","fr","ja","eraYearOrdinalRegex","ll","lll","llll","monthsShortWithDots","monthsShortWithoutDots","nl","monthsNominative","monthsSubjective","plural","translate","momentToFormat","relativeTimeWithPlural","num","forms","ru","standalone","processHoursFunction","str","uk","nominative","accusative","genitive","fails","error","functionBindNative","bind","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","trunc","toIntegerOrInfinity","argument","check","it","globalThis","window","self","defineProperty","defineGlobalProperty","configurable","writable","SHARED","sharedStore","store","require$$1","sharedModule","mode","copyright","license","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","$Object","hasOwnProperty_1","hasOwn","uncurryThis","id","postfix","random","uid","engineUserAgent","navigator","userAgent","process","Deno","versions","v8","engineV8Version","V8_VERSION","$String","require$$2","symbolConstructorDetection","getOwnPropertySymbols","symbol","sham","useSymbolAsUid","iterator","shared","require$$3","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","toStringTagSupport","documentAll","document","all","documentAll_1","IS_HTMLDDA","isCallable","stringSlice","classofRaw","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","classof","O","tag","tryGet","callee","charCodeAt","createMethod","CONVERT_TO_STRING","$this","first","S","position","size","stringMultibyte","codeAt","WeakMap","weakMapBasicDetection","descriptors","EXISTS","createElement","documentCreateElement","ie8DomDefine","v8PrototypeDefineBug","anObject","functionCall","path","aFunction","variable","getBuiltIn","namespace","method","objectIsPrototypeOf","isPrototypeOf","isSymbol","$Symbol","tryToString","aCallable","getMethod","V","P","ordinaryToPrimitive","pref","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","f","Attributes","current","enumerable","has","createPropertyDescriptor","bitmap","definePropertyModule","createNonEnumerableProperty","object","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","require$$6","require$$7","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","type","functionApply","Reflect","functionUncurryThisClause","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","objectPropertyIsEnumerable","descriptor","indexedObject","IndexedObject","toIndexedObject","propertyIsEnumerableModule","objectGetOwnPropertyDescriptor","replacement","isForced","feature","detection","normalize","POLYFILL","NATIVE","isForced_1","functionBindContext","require$$8","require$$9","wrapConstructor","NativeConstructor","Wrapper","_export","options","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","target","GLOBAL","STATIC","stat","PROTO","nativeSource","targetPrototype","forced","dontCallGetSet","wrap","real","getDescriptor","functionName","PROPER","toAbsoluteIndex","integer","toLength","lengthOfArrayLike","IS_INCLUDES","el","fromIndex","arrayIncludes","includes","objectKeysInternal","enumBugKeys","internalObjectKeys","objectKeys","objectDefineProperties","defineProperties","Properties","props","activeXDocument","html","definePropertiesModule","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","style","display","appendChild","src","contentWindow","open","F","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","objectCreate","create","correctPrototypeGetter","constructor","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","defineBuiltIn","ITERATOR","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","objectToString","setToStringTag","TAG","SET_METHOD","iterators","Iterators","returnThis","uncurryThisAccessor","aPossiblePrototype","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","__proto__","$","FunctionName","createIteratorConstructor","IteratorConstructor","NAME","ENUMERABLE_NEXT","require$$10","require$$12","IteratorsCore","require$$13","PROPER_FUNCTION_NAME","require$$11","KEYS","VALUES","ENTRIES","iteratorDefine","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","createIterResultObject","done","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","getInternalState","iterated","point","iteratorClose","kind","innerResult","innerError","ArrayPrototype","isArrayIteratorMethod","functionToString","inspectSource","noop","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","called","createProperty","propertyKey","getIteratorMethod","getIterator","usingIterator","iteratorMethod","callWithSafeIterationClosing","$Array","SAFE_CLOSING","iteratorWithReturn","return","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","step","iterable","ARRAY_ITERATOR","defineIterator$1","Arguments","getIteratorMethod_1","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","COLLECTION_NAME","Collection","CollectionPrototype","_classCallCheck","instance","Constructor","$$_","desc","doesNotExceedSafeInteger","SPECIES","arraySpeciesConstructor","originalArray","C","arraySpeciesCreate","arrayMethodHasSpeciesSupport","METHOD_NAME","foo","Boolean","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","arity","A","objectGetOwnPropertyNames","arraySliceSimple","start","end","fin","$getOwnPropertyNames","arraySlice","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","objectGetOwnPropertySymbols","defineBuiltInAccessor","wellKnownSymbolWrapped","wrappedWellKnownSymbolModule","wellKnownSymbolDefine","symbolDefineToPrimitive","SymbolPrototype","hint","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","arrayIteration","every","find","findIndex","filterReject","$toString","require$$14","nativeObjectCreate","require$$15","require$$16","getOwnPropertyNamesModule","require$$17","getOwnPropertyNamesExternal","require$$18","getOwnPropertySymbolsModule","require$$19","getOwnPropertyDescriptorModule","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$28","require$$29","require$$30","require$$31","defineWellKnownSymbol","require$$32","defineSymbolToPrimitive","require$$33","require$$34","require$$35","$forEach","require$$36","HIDDEN","require$$27","SYMBOL","RangeError","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","fallbackDefineProperty","ObjectPrototypeDescriptor","setSymbolDescriptor","description","$defineProperties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","$$Y","$forEach$1","useSetter","useSimple","symbolRegistryDetection","keyFor","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","getReplacerFunction","replacer","rawLength","element","keysLength","root","$stringify","numberToString","tester","low","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","prev","stringify","space","JSON","METADATA","thisSymbolValue","symbolIsRegistered","isRegisteredSymbol","$isWellKnownSymbol","isWellKnownSymbol","symbolKeys","symbolKeysLength","symbolKey","symbolIsWellKnown","isRegistered","isWellKnown","_typeof","_Symbol","_Symbol$iterator","_toPropertyKey","prim","_Symbol$toPrimitive","Number","_defineProperties","_Object$defineProperty","_createClass","protoProps","staticProps","arraySetLength","setArrayLength","properErrorOnNonWritableLength","argCount","entryVirtual","CONSTRUCTOR","parent","own","nativeSlice","HAS_SPECIES_SUPPORT","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_context","arrayLikeToArray","_sliceInstanceProperty","_Array$from","_slicedToArray","_Array$isArray","arrayWithHoles","r","_getIteratorMethod","_pushInstanceProperty","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_toConsumableArray","arrayWithoutHoles","iter","iterableToArray","nonIterableSpread","ownKeys","$map","nativeKeys","$Date","thisTimeValue","$$J","$Function","factories","functionBind","Prototype","partArgs","argsLength","list","arrayMethodIsStrict","arrayForEach","nativeReverse","reverse","$$G","deletePropertyOrThrow","splice","deleteCount","insertCount","actualDeleteCount","actualStart","$assign","objectAssign","B","alphabet","chr","T","$includes","MATCH","isRegExp","notARegExp","correctIsRegExpLogic","regexp","error1","error2","stringIndexOf","searchString","arrayMethod","stringMethod","StringPrototype","nativeGetPrototypeOf","$filter","IE_BUG","TO_ENTRIES","IE_WORKAROUND","objectToArray","$values","whitespaces","ltrim","rtrim","stringTrim","trim","$parseInt","hex","numberParseInt","radix","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","$entries","D","engineIsBun","Bun","validateArgumentsLength","passed","required","ENGINE_IS_BUN","USER_AGENT","WRAP","schedulersFix","scheduler","hasTimeArg","firstParamIndex","handler","timeout","boundArgs","params","setInterval","setTimeout","fill","endPos","Emitter","mixin","on","addEventListener","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","listeners","hasListeners","_extends","_inheritsLoose","subClass","superClass","_assertThisInitialized","ReferenceError","nextKey","win","assign$1","VENDOR_PREFIXES","TEST_ELEMENT","prefixed","camelProp","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","each","context","boolOrFn","inStr","TouchAction","manager","_proto","compute","actions","update","touchAction","recognizers","recognizer","enable","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","srcEvent","offsetDirection","session","prevented","preventDefault","hasNone","isTapPointer","pointers","isTapMovement","distance","isTapTouchTime","deltaTime","preventSrc","hasParent","node","parentNode","getCenter","pointersLength","clientX","clientY","simpleCloneInputData","timeStamp","center","deltaX","deltaY","getDistance","sqrt","getAngle","atan2","PI","getDirection","getVelocity","computeInputData","firstInput","firstMultiple","offsetCenter","angle","offsetDelta","prevDelta","prevInput","eventType","computeDeltaXY","overallVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","last","lastInterval","v","computeIntervalInputData","srcEventTarget","composedPath","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","recognize","splitStr","addEventListeners","types","removeEventListeners","getWindowForElement","doc","ownerDocument","defaultView","Input","inputTarget","domHandler","ev","init","evEl","evTarget","evWin","destroy","inArray","findByKey","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","PointerEventInput","_Input","_this","pointerEvents","removePointer","eventTypeNormalized","pointerType","isTouch","storeIndex","pointerId","button","uniqueArray","results","TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TouchInput","targetIds","touches","getTouches","targetTouches","allTouches","identifier","changedTouches","changedTargetTouches","touch","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MouseInput","pressed","which","DEDUP_TIMEOUT","setLastTouch","eventData","primaryTouch","lastTouch","lts","lastTouches","recordTouches","isSyntheticEvent","dx","dy","TouchMouseInput","_manager","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","mouse","invokeArrayArg","STATE_FAILED","_uniqueId","getRecognizerByNameIfManager","otherRecognizer","stateStr","Recognizer","simultaneous","requireFail","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","TapRecognizer","_Recognizer","taps","interval","posThreshold","pTime","pCenter","_timer","_input","count","_this2","validPointers","validMovement","validTouchTime","failTimeout","validInterval","validMultiTap","_this3","clearTimeout","tapCount","AttrRecognizer","attrTest","optionPointers","isRecognized","directionStr","PanRecognizer","_AttrRecognizer","pX","pY","directionTest","hasMoved","SwipeRecognizer","PinchRecognizer","inOut","RotateRecognizer","PressRecognizer","validTime","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","preset","toggleCssProps","oldCssProps","Manager","handlers","stop","force","stopped","curRecognizer","existing","remove","targetRecognizer","events","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","SINGLE_TOUCH_INPUT_MAP","SingleTouchInput","started","normalizeSingleTouches","changed","message","deprecationMessage","log","dest","merge","inherit","child","childP","baseP","_super","bindFn","Hammer","VERSION","INPUT_MOVE","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","Tap","Pan","Swipe","Pinch","Rotate","Press","Hammer$4","DELETE","pureDeepObjectAssign","_len","updates","_key","deepObjectAssign","_concatInstanceProperty","merged","deepObjectAssignNonentry","stripDelete","_len2","_key2","_context2","_step","_iterator","_createForOfIteratorHelper","_Reflect$ownKeys","err","_mapInstanceProperty","_Object$keys","_Object$keys2","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","resetElements","getSVGElement","svgContainer","createElementNS","getDOMElement","DOMContainer","insertBefore","drawPoint","groupTemplate","labelObj","setAttributeNS","styles","className","label","xOffset","yOffset","textContent","drawBar","width","height","rect","getNavigatorLanguage","languages","userLanguage","language","browserLanguage","_setPrototypeOf","p","_Object$setPrototypeOf","_bindInstanceProperty","_inherits","_Object$create","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","_Object$getPrototypeOf","_defineProperty","__esModule","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","errorStackInstallable","clearErrorStack","dropEntries","prepareStackTrace","ERROR_STACK_INSTALLABLE","captureStackTrace","Result","ResultPrototype","iterate","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","condition","callFn","copyConstructorProperties","exceptions","installErrorCause","cause","installErrorStack","normalizeStringArgument","$default","$AggregateError","errors","isInstance","AggregateErrorPrototype","errorsArray","AggregateError","$location","defer","channel","port","engineIsNode","setSpecies","CONSTRUCTOR_NAME","anInstance","aConstructor","speciesConstructor","defaultConstructor","engineIsIos","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","counter","queue","ONREADYSTATECHANGE","location","run","runner","eventListener","globalPostMessageDefer","postMessage","protocol","host","nextTick","port2","port1","onmessage","importScripts","task","Queue","head","tail","Queue$3","entry","notify","toggle","promise","then","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","Promise","queueMicrotaskDescriptor","microtask","flush","exit","enter","resolve","createTextNode","observe","characterData","microtask_1","perform","promiseNativeConstructor","engineIsDeno","engineIsBrowser","NativePromiseConstructor","IS_BROWSER","IS_DENO","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","promiseConstructorDetection","REJECTION_EVENT","PromiseCapability","reject","$$resolve","$$reject","newPromiseCapability","Internal","OwnPromiseCapability","hostReportErrors","PromiseConstructorDetection","newPromiseCapabilityModule","PROMISE","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","reason","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","PromiseWrapper","setToStringTag$1","setSpecies$1","promiseStaticsIncorrectIteration","capability","$promiseResolve","remaining","alreadyCalled","catch","race","promiseResolve","promiseCapability","PromiseConstructorWrapper","CHECK_WRAPPER","allSettled","status","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","finally","onFinally","withResolvers","try","_forEachInstanceProperty","_Promise","_reverseInstanceProperty","_regeneratorRuntime","asyncIterator","toStringTag","define","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","awrap","async","pop","_context3","rval","handle","complete","finish","delegateYield","runtime","regenerator","regeneratorRuntime","accidentalStrictMode","IS_RIGHT","memo","$reduce","left","right","reduce","flattenIntoArray","original","sourceLen","depth","mapper","thisArg","elementLen","targetIndex","sourceIndex","mapFn","flatMap","arrayBufferNonExtensible","ArrayBuffer","buffer","isExtensible","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","objectIsExtensible","freezing","preventExtensions","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","setMetadata","objectID","weakData","meta","internalMetadataModule","fastKey","getWeakData","onFreeze","InternalMetadataModule","internalStateGetterFor","collection","common","IS_WEAK","ADDER","NativePrototype","exported","IS_ADDER","getConstructor","setStrong","defineBuiltIns","unsafe","collectionStrong","previous","getEntry","removed","delete","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","Map","Set","mergeSort","comparefn","middle","insertionSort","llength","rlength","lindex","rindex","arraySort","firefox","engineFfVersion","engineIsIeOrEdge","webkit","engineWebkitVersion","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","fromCharCode","itemsLength","items","arrayLength","getSortCompare","$some","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","getOwnPropertyDescriptors","$$5","getRandomValues","rnds8","Uint8Array","rng","crypto","byteToHex","native","randomUUID","v4","buf","rnds","unsafeStringify","SimpleDataPipe","_source","_transformers","_target","_add","_remove","_update","_transformItems","_listeners","_context4","_reduceInstanceProperty","transform","_name","payload","oldData","DataPipeUnderConstruction","_filterInstanceProperty","_flatMapInstanceProperty","getDefaultWhiteList","whiteList","REGEXP_URL_JAVASCRIPT","_default","onAttr","onIgnoreAttr","safeAttrValue","_","scope","trimRight","parser","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","parseStyle","isNull","FilterCSS","shallowCopyObject","sourcePosition","isWhite","opts","filterCSS","util","spaceIndex","getDefaultCSSWhiteList","address","area","article","aside","audio","bdi","bdo","big","blockquote","br","caption","cite","col","colgroup","del","details","div","dl","dt","em","figcaption","figure","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","nav","ol","pre","section","small","span","sub","summary","sup","strong","strike","table","tbody","td","tfoot","thead","tr","tt","ul","video","defaultCSSFilter","escapeHtml","REGEXP_LT","REGEXP_GT","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeQuote","unescapeQuote","escapeHtmlEntities","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","friendlyAttrValue","escapeAttrValue","_default$1","onTag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","cssFilter","onIgnoreTagStripAll","StripTagBody","tags","isRemoveAllTag","removeList","posStart","isRemoveTag","isClosing","rethtml","stripCommentTag","retHtml","stripBlankChar","chars","char","getTagName","tagName","REGEXP_ILLEGAL_ATTR_NAME","findNextEqual","findNextQuotationMark","findBeforeEqual","stripQuoteWrap","text","isQuoteWrapString","parser$1","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","parseAttr","lastMarkPos","retAttrs","tmpName","addAttr","FilterXSS","stripIgnoreTag","allowList","keysToLowerCase","allowCommentTag","stripIgnoreTagBody","info","attrs","closing","getAttrs","whiteAttrList","attrsHtml","isWhiteAttr","xss","filterXSS","DedicatedWorkerGlobalScope","isDataViewLike","_obj$idProp","idProp","_idProp","isDataViewLikeUpstream","ASPDateRegex","NumericRegex","convert","parse","getType","typeCoerceDataSet","rawDS","_context5","_context6","_context7","coercedDS","DataSet","fieldId","pipe","createNewDataPipeFrom","acc","_rawDS$getDataSet","getDataSet","_rawDS$getDataSet2","_rawDS$getDataSet3","updateOnly","_rawDS$getDataSet4","_rawDS$getDataSet5","getIds","dispose","setupXSSCleaner","customXSS","xssFilter","setupNoOpCleaner","configuredXSSProtection","availableUtils","_objectSpread","setupXSSProtection","disabled","filterOptions","$parseFloat","numberParseFloat","Infinity","trimmedString","Component","body","resized","_previousWidth","_previousHeight","$RangeError","repeat","convertHiddenOptions","hiddenDates","_repeatInstanceProperty","dateItem","_sortInstanceProperty","updateHiddenDates","domProps","centerContainer","range","pixelTime","startDate","endDate","runUntil","dayOffset","removeDuplicates","startHidden","getIsHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","_end","prevValue","newValue","switchedYear","switchedMonth","switchedDay","toScreen","Core","conversion","getHiddenDurationBetween","hiddenBeforeStart","getHiddenDurationBeforeStart","rangeAfterEnd","correctTimeForHidden","toTime","hiddenDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","correctionEnabled","isHidden","Range","_Component","_createSuper","millisecondsPerPixelCache","rolling","deltaDifference","scaleOffset","defaultOptions","rtl","moveable","zoomable","zoomMin","zoomMax","rollingMode","follow","animationTimer","emitter","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","dom","rollingModeBtn","startRolling","setOptions","selectiveExtend","setRange","me","stopRolling","rollingModeOffset","animation","visibility","currentTimeTimer","_setTimeout","frameCallback","byUser","finalStart","finalEnd","_cancelAnimation","_context8","initStart","initEnd","easingName","easingFunction","easingFunctions","_JSON$stringify","initTime","_Date$now","anyChanged","dragging","ease","DateUtil","timeoutID","clientWidth","newStart","newEnd","_parseFloat","totalHidden","previousDelta","_isInsideRange","allowDragging","cursor","validateDirection","delta","diffRange","safeStart","safeEnd","wheelDelta","detail","zoomKey","pointerDate","zoomFriction","pointer","getPointer","_pointerToDate","zoom","centerDate","hiddenDurationBefore","hiddenDurationAfter","centerContainerRect","getBoundingClientRect","elementRect","top","moveTo","modifiedHammer","_firstTarget","propagating","hammer","_options","PropagatingHammer","propagatedHandler","_handled","stopPropagation","srcStop","firstTarget","elem","elemHammer","_handlers","hammers","idx","onTouch","TimeStep","minimumStep","_start","autoScale","FORMAT","deepExtend","setMinimumStep","roundToMinor","priorCurrent","showMajorLabels","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","showWeekScale","stepMillisecond","minorLabels","majorLabels","_moment","classNames","even","today","currentWeek","currentMonth","currentYear","TimeAxis","foreground","lines","majorTexts","minorTexts","lineTop","orientation","axis","showMinorLabels","maxMinorChars","timeAxis","_create","selectiveDeepExtend","background","bottom","parentChanged","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","offsetWidth","minorLineHeight","minorLineWidth","majorLineHeight","majorLineWidth","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","backgroundVertical","_isResized","timeLabelsize","minorCharWidth","setMoment","setFormat","setScale","xNext","isMajor","showMinorGrid","prevWidth","line","xFirstMajorLabel","MAX","getCurrent","hasNext","getClassName","_repaintMinorText","getLabelMinor","_repaintMajorText","getLabelMajor","_repaintMajorLine","_repaintMinorLine","_parseInt","warnedForOverflow","leftTime","leftText","widthText","majorCharWidth","innerHTML","_setXY","childNodes","directionX","measureCharMinor","clientHeight","measureCharMajor","keycharm","container","_exportFunctions","_bound","keydown","keyup","_keys","down","handleEvent","up","keyCode","bound","shiftKey","bindAll","getKey","unbind","newBindings","Activator","active","overlay","_onTapOverlay","onClick","_hasParent","deactivate","escListener","activate","addClassName","removeClassName","en","deleteSelected","de","es","pl","pt","sv","nb","lt","en_EN","en_US","it_IT","it_CH","nl_NL","nl_BE","de_DE","fr_FR","fr_CA","fr_BE","es_ES","uk_UA","ru_RU","pl_PL","pt_BR","pt_PT","ja_JP","lt_LT","sv_SE","nn","nb_NO","nn_NO","CustomTime","title","defaultLocales","customTime","eventParams","bar","drag","onMouseWheel","attachEvent","hide","warned","substring","redraw","editable","marker","setAttribute","focus","_onMarkerChange","_onMarkerChanged","getScale","getStep","snap","snappedTime","setCustomTime","backgroundHorizontal","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","loadingScreen","border","scrollTop","scrollTopMin","initialDrawDone","_redraw","initialRangeChangeDone","_origRedraw","throttle","itemSet","initialItemSetDrawn","pinchRecognizer","hammerUtil","timelineListeners","isActive","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","preferZoom","verticalScroll","horizontalScroll","adjusted","_setScrollTop","listener","wheelType","onmousewheel","onMouseScrollSide","itemAddedToTimeline","handleDragOver","getEventProperties","_indexOfInstanceProperty","dataTransfer","dropEffect","handleDrop","itemData","getData","_onAddItem","_onDropObjectOnItem","customTimes","redrawCount","timeAxis2","components","_spliceInstanceProperty","drawPoints","onRender","clickToUse","activator","_initAutoResize","component","configurator","_createConfigurator","configure","appliedOptions","setModuleOptions","_context9","setItems","setGroups","_stopAutoResize","_context10","_context11","getCustomTime","_context12","setCustomMarker","_context13","setCustomTitle","_context14","timestamp","exists","_someInstanceProperty","_context15","_context16","_context17","_context18","_context19","getVisibleItems","timeOfEvent","getItemsAtCurrentTime","getVisibleGroups","getDataRange","getRange","percentage","getWindow","setWindow","_context20","maxHeight","option","asSize","minHeight","rootOffsetWidth","offsetHeight","contentHeight","autoHeight","containerHeight","scrollbarWidth","getScrollBarWidth","leftContainerClientWidth","rightContainerClientWidth","_setDOM","_updateScrollTop","visibilityTop","visibilityBottom","contentsOverflow","longSelectPressTime","centerWidth","currentTime","setCurrentTime","getCurrentTime","autoResize","_startAutoResize","_onResize","rootOffsetHeight","lastWidth","lastHeight","watchTimer","_setInterval","clearInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","CurrentTime","showCurrentTime","alignCurrentTime","$find","FIND","SKIPS_HOLES","$findIndex","FIND_INDEX","EPSILON","orderByStart","orderByEnd","margin","shouldBailItemsRedrawFunction","performStacking","substack","subgroup","subgroupHeight","baseTop","vertical","nostack","subgroups","isStackSubgroups","newTop","visible","stackSubgroups","_Object$values","stackSubgroupsWithInnerStack","subgroupItems","doSubStack","subgroupOrder","otherSubgroup","margins","compareTimes","shouldStack","shouldOthersStack","getInitialHeight","shouldBail","getItemStart","getItemEnd","horizontal","itemsToPosition","itemsAlreadyPositioned","previousStart","insertionIndex","_loop2","itemStart","findIndexFrom","previousEnd","_ret","horizontalOverlapStartIndex","horizontalOverlapEndIndex","_loop","itemEnd","predicate","startIndex","endIndex","findLastIndexBetween","horizontallyCollidingItems","i2","otherItem","currentHeight","matchIndex","_findIndexInstanceProperty","ReservedGroupIds","Group","groupId","subgroupStack","subgroupStackAll","subgroupVisibility","doInnerStack","shouldBailStackItems","subgroupIndex","subgroupOrderer","isVisible","stackDirty","_disposeCallbacks","nestedGroups","showNested","heightMode","groupHeightMode","nestedInGroup","visibleItems","itemsInRange","orderedItems","byStart","byEnd","checkRangedItems","handleCheckRangedItems","setData","groupEditable","order","inner","groupTouchParams","isDragging","templateFunction","Element","firstChild","isReactComponent","treeLevel","removeCssText","addCssText","markerHeight","lastMarkerHeight","redrawQueue","redrawQueueLength","dirty","displayed","fns","_this$dom$foreground","offsetTop","offsetLeft","timeoutOptions","onTimeout","bailOptions","relativeBailingTime","itemsSettingTime","bailTimeMs","timeoutMs","userBailFunction","bail","userContinueNotBail","didUserContinue","forceRestack","lastIsVisible","isCluster","orderedClusters","_Set","cluster","_updateItemsInRange","visibleClusters","_updateClustersInRange","getVisibleItemsGroupedBySubgroup","orderFn","visibleSubgroupsItems","_updateSubGroupHeights","customOrderedItems","_shouldBailItemsRedraw","repositionX","updateProperty","labelWidth","labelHeight","repositionY","returnQueue","_context21","_context23","_context27","_didMarkerHeightChange","_calculateGroupSizeAndPosition","_isGroupVisible","_redrawItems","_updateSubgroupsSizes","_context22","_calculateHeight","_context24","_didResize","_context25","_applyGroupHeight","_context26","_updateItemsVerticalPosition","_this4","_resetSubgroups","labelSet","_context28","setParent","_addToSubgroup","orderSubgroups","_includesInstanceProperty","_checkIfVisible","subgroupId","_loop3","_context29","initialEnd","sortArray","sortField","_context30","_context31","_removeFromSubgroup","_context32","_context33","itemIndex","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","binarySearchCustom","_traceVisible","initialPosByEnd","_loop4","initialPos","breakCondition","hasItems","show","oldVisibleClusters","visibleClustersLookup","oldSubgroup","newSubgroup","disposeCallback","BackgroundGroup","_Group","Item","selected","groupShowing","selectable","setSelectability","_updateEditStatus","group","_moveToGroup","changeSubgroup","updateTime","dragCenter","dragCenterItem","hammerDragCenter","_onUpdateItem","box","dragLeft","overrideItems","deleteButton","optionsLocale","hammerDeleteButton","removeFromDataSet","tooltipOnItemUpdateTime","onItemUpdateTimeTooltip","touchParams","itemIsDragging","template","itemsData","itemVisibleFrameContent","visibleFrameTemplateFunction","_getItemData","itemVisibleFrameContentElement","getElementsByClassName","visibleFrameTemplate","_contentToString","dataAttributes","attributes","removeAttribute","outerHTML","updateGroup","tooltip","BoxItem","_Item","dot","align","widthInMs","getMillisecondsPerPixel","_updateContents","_updateDataAttributes","_updateStyle","sizes","_repaintOnItemUpdateTimeTooltip","_repaintDragCenter","_repaintDeleteButton","_createDomElement","_appendDomElement","_updateDirtyDomComponents","_getDomComponentsSizes","_updateDomComponentsSizes","_repaintDomAdditionals","repositionXY","boxX","boxY","dotX","dotY","lineX","lineY","lineWidth","dotWidth","lineStyle","lineHeight","PointItem","marginLeft","marginRight","translateX","pointX","pointY","RangeItem","frame","visibleFrame","baseClassName","maxWidth","getComputedStyle","whiteSpace","_repaintDragLeft","_repaintDragRight","limitSize","contentStartPosition","contentWidth","parentWidth","boxWidth","itemsAlwaysDraggable","dragLeftItem","dragRight","dragRightItem","BackgroundItem","itemSubgroup","Popup","overflowMethod","padding","doShow","isLeft","isTop","$every","ClusterItem","modifiedOptions","_Object$assign","fitOnDoubleClick","uiItems","_setupRange","eventEmitter","attached","detach","attach","rangeWidth","showStipes","repositionXWithRanges","repositionXWithoutRanges","_isStipeVisible","repositionStype","lineOffsetWidth","dotOffsetWidth","lineOffset","dotOffset","lineOffsetDirection","dotOffsetDirection","minWidth","itemSetHeight","detachFromParent","_step2","_iterator2","_fit","stats","centers","avg","sum","ondblclick","_onDoubleClick","fitStart","fitEnd","_this$_getFitRange","_getFitRange","fitArgs","ClusterGenerator","groups","cache","dataChanged","applyOnChangedLevel","oldClusters","_ref","maxItems","clusterCriteria","level","timeWindow","levelChanged","cacheLevel","_dropLevelsCache","_filterData","clusters","groupName","iMax","neighbors","clusterItems","getGroupId","_getClusterForItems","_Object$values2","currentGroupName","oldClustersLookup","itemsIds","oldClusterData","_everyInstanceProperty","clusterItem","setUiItems","titleTemplate","clusterContent","clusterOptions","createClusterItem","UNGROUPED","BACKGROUND","ItemSet","groupOrderSwap","fromGroup","toGroup","targetOrder","groupOrder","multiselect","onDropObjectOnItem","objectData","onAdd","onUpdate","onMove","onRemove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup","showTooltips","followMouse","delay","groupsData","sequentialSelection","itemListeners","senderId","_onAdd","clusterGenerator","_onUpdate","_onRemove","groupListeners","_onAddGroups","groupData","updatedGroups","nestedGroupId","updatedNestedGroup","_onUpdateGroups","_onRemoveGroups","groupIds","selection","popup","popupTimer","_updateUngrouped","backgroundGroup","ALL","_onSelectItem","_onMultiSelectItem","groupHammer","_onGroupClick","_onGroupDragStart","_onGroupDrag","_onGroupDragEnd","_onMouseOver","_onMouseOut","_onMouseMove","markDirty","refreshItems","restackGroups","_detachAllClusters","clearPopupTimer","ids","idsToDeselect","selectedId","getItemById","unselect","select","_step3","_iterator3","_step4","_iterator4","_findInstanceProperty","_clusterItems","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","scrolled","lastRangeStart","changedStackOption","lastStack","changedStackSubgroupsOption","lastStackSubgroups","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","redrawResults","groupResized","firstGroupIndex","firstGroupId","itemId","ungrouped","oldItemsData","_order","updateData","_getType","_this5","_updateItem","_removeItem","_addItem","groupOptions","_this6","_orderNestedGroups","equalArray","_this7","getOrderedNestedGroups","nestedGroupIds","nestedGroup","itemFromTarget","itemProps","_this8","selectedItem","initialX","_cloneItemData","ctrlKey","metaKey","_onDragStartAddItem","baseGroupIndex","_getGroupIndex","itemsToDrag","getSelection","groupIndex","groupOffset","frameRect","groupFromTarget","newItem","_this9","containerRect","setPosition","domRootOffsetLeft","updateGroupAllowed","newGroupBase","initialStart","initial","newOffset","oldGroup","_this10","_this11","toggleGroupShowNested","nestingGroup","fullNestedGroups","nextLevel","showNestedGroups","classList","toggleGroupDragClassName","originalOrder","movingUp","targetGroup","draggedGroupHeight","targetGroupHeight","draggedGroup","newOrder","origOrder","draggedId","numGroups","curPos","orgOffset","slippedPosition","switchGroup","shouldBeGroup","switchGroupId","dataset","oldSelection","setSelection","newSelection","itemFromRelatedTarget","getTitle","setText","setPopupTimer","newItemData","_this12","itemGroup","lastSelectedGroup","multiselectPerGroup","_getItemRange","_item","filteredSelection","cur","itemFromElement","relatedTarget","foregroundRect","getClusters","_step5","_iterator5","_updateClusters","_step6","_iterator6","_step7","newClustersIds","clustersToUnselect","selectionChanged","_iterator7","selectedIdx","allOptions","errorFound","printStyle","Validator","referenceOptions","subObject","usedOptions","__any__","referenceOption","is_object","refOptionObj","__type__","checkFields","getSuggestion","printLocation","optionType","refOptionType","print","copyAndExtendArray","nodeType","localSearch","findInOptions","globalSearch","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","copyArray","matrix","bool","enabled","boolean","function","throttleRedraw","onInitialDrawComplete","null","loadingScreenTemplate","configureOptions","groupsDraggable","htmlColors","black","navy","darkblue","mediumblue","blue","darkgreen","green","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","red","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","ColorPicker","pixelRatio","generated","centerCoordinates","color","hueCircle","initialColor","previousColor","applied","updateCallback","closeCallback","_bindHammer","_setSize","setInitial","rgba","htmlColor","_isColorString","isValidRGB","rgbaArray","isValidRGBA","isValidHex","rgbObj","hexToRGB","alpha","_setColor","_generateHueCircle","_hide","_updatePicker","setColor","alert","hsv","RGBToHSV","angleConvert","radius","sin","cos","colorPickerSelector","HSVToRGB","ctx","colorPickerCanvas","getContext","pixelRation","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","clearRect","putImageData","fillStyle","circle","_fillInstanceProperty","brightnessRange","opacityRange","initialColorDiv","backgroundColor","newColorDiv","colorPickerDiv","noCanvas","fontWeight","opacityDiv","brightnessDiv","arrowDiv","onchange","_setOpacity","oninput","_setBrightness","brightnessLabel","opacityLabel","cancelButton","onclick","applyButton","_apply","saveButton","_save","loadButton","_loadLast","pinch","_moveSelector","hue","sat","rgb","sfac","fillRect","strokeStyle","stroke","getImageData","centerY","centerX","newLeft","Configurator","parentModule","defaultContainer","changedOptions","allowCreation","initialized","popupCounter","showButton","moduleOptions","domElements","popupDiv","popupLimit","popupHistory","colorPicker","_removePopup","_clean","_handleObject","_makeItem","_makeHeader","_makeButton","_push","_showPopupIfNeeded","objectLabel","selectedValue","_makeLabel","defaultValue","popupString","popupValue","factor","_setupPopup","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","hideTimeout","deleteTimeout","opacity","checkbox","checked","defaultColor","_showColorPicker","insertTo","setUpdateCallback","colorString","setCloseCallback","checkOnly","visibleInSet","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","draw","physics","solver","enabledPath","enabledValue","_makeColorField","_makeDropdown","_makeRange","_constructOptions","optionsObj","getOptions","Timeline","_Core","itemsDone","SyntaxError","forthArgument","directionFromDom","domNode","parentElement","loadingScreenFragment","eventName","_toScreen","toGlobalScreen","_toGlobalScreen","_toTime","toGlobalTime","_toGlobalTime","oncontextmenu","onpointerdown","onpointermove","onpointerup","onmousemove","onmousedown","onmouseup","initialFitDone","getItemRange","fit","_onFit","validate","newDataSet","DataView","startPos","initialVerticalScroll","setFinalVerticalPosition","finalVerticalScroll","getItemVerticalScroll","shouldScroll","itemTop","scrollOffset","willDraw","minItem","maxItem","startSide","endSide","getStart","getEnd","getWidthRight","getWidthLeft","lhs","rhs","customTimeFromTarget","getTarget","what","pageX","pageY","timeline","itemsetHeight","currentScrollHeight","targetOffset","DataScale","autoScaleStart","autoScaleEnd","zeroAlign","formattingFunction","majorSteps","minorSteps","customLines","minorStepIdx","magnitudefactor","determineScale","rounded","minimumStepValue","orderOfMagnitude","LN10","solutionFound","majorStep","convertValue","returnValue","toPrecision","bottomOffset","major","is_major","formatValue","oldStepIdx","oldStart","oldEnd","increaseMagnitude","decreaseMagnitude","otherZero","otherStep","newRange","myOriginalZero","majorOffset","getFirstMajor","zeroOffset","pixels","DataAxis","svg","linegraphOptions","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","alignZeros","linegraphSVG","DOMelements","labels","conversionFactor","stepPixels","zeroCrossing","amountOfSteps","master","masterAxis","svgElements","iconsRemoved","amountOfGroups","_redrawLabels","framework","lineContainer","graphOptions","DOMutil","iconOffset","groupArray","getLegend","iconHeight","activeGroups","backgroundHorizontalOffsetWidth","_redrawGroupIcons","_cleanupIcons","_redrawTitle","customRange","followScale","maxLabelSize","getLines","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","screenToValue","characterHeight","textAlign","largestWidth","textMinor","textMajor","textTitle","measureCharTitle","titleCharWidth","Points","getGroupTemplate","callbackResult","Bargraph","Line","GraphGroup","groupsUsingDefaultStyles","selectiveBridgeObject","usingDefaultStyle","zeroPosition","Legend","side","iconSize","iconSpacing","getCallback","screen_x","screen_y","drawIcon","fillHeight","outline","barWidth","barChart","bar1Height","bar2Height","processedGroupData","coreDistance","drawData","combinedData","intersections","barPoints","screen_end","_getDataIntersections","heightOffset","_getSafeDrawData","amount","resolved","excludeFromStacking","accumulatedNegative","accumulatedPositive","sideBySide","dataWidth","pointData","getStackedYRange","groupRanges","groupLabel","_getStackedYRange","yAxisOrientation","yMin","yMax","xpos","calcPath","interpolation","_catmullRom","_linear","fillPath","shaded","drawShading","pathArray","subPathArray","dFill","svgHeight","zero","serializePath","inverse","_catmullRomUniform","p0","bp1","bp2","normalization","d1","d2","d3","N","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","insertSort","getItems","setZeroPosition","mergeOptions","parametrization","Lines","Bars","icon","getYRange","addGroup","excludeFromLegend","removeGroup","textArea","scrollableHeight","drawLegendIcons","paddingTop","LineGraph","defaultGroup","sampling","graphHeight","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","forceGraphUpdate","lastStart","yAxisLeft","yAxisRight","legendLeft","legendRight","_removeGroup","_updateAllGroupData","_updateGroup","groupsContent","idMap","groupCounts","existingItemsMap","existing_items","newLength","extended","bridgeObject","orginalY","_updateGraph","_getSortedGroupIds","grouplist","zIndex","az","bz","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","below","_stack","_convertYcoordinates","paths","subGroupId","subData","subPrevPoint","subNextPoint","dateComparator","binarySearchValue","dataContainer","increment","amountOfPoints","pointsPerPixel","sampledData","combinedDataLeft","combinedDataRight","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","tempGroups","axisUsed","datapoints","Graph2d","linegraph","initialLoad","isGroupVisible","getAbsoluteLeft","getAbsoluteTop","defaultLanguage","bundleLegacy"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjyjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACh8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC37FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACv4SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACllFA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC35sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;8OCnBO,SAASA,EAAOC,GAGtB,IAFA,IAAIC,EAAWC,EAEVC,EAAI,EAAGC,EAAMC,UAAUC,OAAQH,EAAIC,EAAKD,CAAC,GAE7C,IAAKF,KADLC,EAAMG,UAAUF,GAEfH,EAAKC,GAAKC,EAAID,GAGhB,OAAOD,CACR,CAIO,IAAIO,EAASC,OAAOD,QAEnB,SAAUE,GAEhB,OADAC,EAAEC,UAAYF,EACP,IAAIC,CACb,EAJC,SAASA,KAUH,SAASE,EAAKC,EAAIC,GACxB,IAMIC,EANA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O,CAC1C,E,yBGgLqB,SAAUA,EAASi0C,GACvC,OAAO,IAAIuD,GAAQx3C,EAASi0C,CAAM,CACnC,E,qDJ5HO,SAAsBib,EAAO7kD,EAAQrK,GAC3C,OAAO,IAAIszC,GAAa4b,EAAO7kD,EAAQrK,CAAO,CAC/C,E;;A2BzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;gtBCjzWoBmvD,2DCC+CC,EAAiBC,QAG3E,WAEL,IAAIC,EA6HAC,EA3HJ,SAASC,IACL,OAAOF,EAAaG,MAAM,KAAMC,UACnC,CAID,SAASC,EAAgBC,GACrBN,EAAeM,CAClB,CAED,SAASC,EAAQC,GACb,OACIA,aAAiBC,OACyB,mBAA1CC,OAAOC,UAAUC,SAASC,KAAKL,EAEtC,CAED,SAASM,EAASN,GAGd,OACa,MAATA,GAC0C,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,EAEtC,CAED,SAASO,EAAWC,EAAGC,GACnB,OAAOP,OAAOC,UAAUO,eAAeL,KAAKG,EAAGC,EAClD,CAED,SAASE,EAAcC,GACnB,GAAIV,OAAOW,oBACP,OAAkD,IAA3CX,OAAOW,oBAAoBD,GAAKE,OAEvC,IAAIC,EACJ,IAAKA,KAAKH,EACN,GAAIL,EAAWK,EAAKG,GAChB,OAAO,EAGf,OAAO,CAEd,CAED,SAASC,EAAYhB,GACjB,YAAiB,IAAVA,CACV,CAED,SAASiB,EAASjB,GACd,MACqB,iBAAVA,GACmC,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,EAEtC,CAED,SAASkB,EAAOlB,GACZ,OACIA,aAAiBmB,MACyB,kB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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/sDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC74BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7yBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACz9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC38BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;","file":"vendor.js"}